summaryrefslogtreecommitdiff
path: root/macros/latex/contrib
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib')
-rw-r--r--macros/latex/contrib/abraces/README.md4
-rw-r--r--macros/latex/contrib/abraces/abraces-doc.pdfbin245502 -> 245461 bytes
-rw-r--r--macros/latex/contrib/abraces/abraces-doc.tex13
-rw-r--r--macros/latex/contrib/abraces/abraces.sty7
-rw-r--r--macros/latex/contrib/acmart/README3
-rw-r--r--macros/latex/contrib/acmart/acmart.dtx29
-rw-r--r--macros/latex/contrib/acmart/acmart.pdfbin918998 -> 949483 bytes
-rw-r--r--macros/latex/contrib/acmart/acmguide.pdfbin439778 -> 439879 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-acmcp.pdfbin214495 -> 214844 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-acmengage.pdfbin400681 -> 399476 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-acmlarge.pdfbin611542 -> 613884 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-acmsmall-biblatex.pdfbin634239 -> 636571 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-acmsmall-conf.pdfbin1056847 -> 1059143 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-acmsmall-submission.pdfbin624039 -> 626360 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-acmsmall.pdfbin621531 -> 623848 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-acmtog-conf.pdfbin569299 -> 571812 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-acmtog.pdfbin569061 -> 571575 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-manuscript.pdfbin623030 -> 625334 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-sigconf-authordraft.pdfbin1048751 -> 1051244 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-sigconf-biblatex.pdfbin622065 -> 624415 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-sigconf-i13n.pdfbin1060242 -> 1062362 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-sigconf.pdfbin1044964 -> 1047421 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-sigplan.pdfbin1053423 -> 1053423 bytes
-rw-r--r--macros/latex/contrib/aomart/README9
-rw-r--r--macros/latex/contrib/aomart/aom_orcid_logo.eps518
-rw-r--r--macros/latex/contrib/aomart/aom_orcid_logo.pdfbin0 -> 1704 bytes
-rw-r--r--macros/latex/contrib/aomart/aomart.bib16
-rw-r--r--macros/latex/contrib/aomart/aomart.dtx71
-rw-r--r--macros/latex/contrib/aomart/aomart.pdfbin443455 -> 510462 bytes
-rw-r--r--macros/latex/contrib/aomart/aomfrench.pdfbin219930 -> 220195 bytes
-rw-r--r--macros/latex/contrib/aomart/aomsample.bib1
-rw-r--r--macros/latex/contrib/aomart/aomsample.pdfbin507784 -> 518091 bytes
-rw-r--r--macros/latex/contrib/aomart/aomsample.tex5
-rw-r--r--macros/latex/contrib/aomart/aomsample1.pdfbin507775 -> 518086 bytes
-rw-r--r--macros/latex/contrib/aomart/aomsample1.tex5
-rw-r--r--macros/latex/contrib/asmeconf/README.md30
-rw-r--r--macros/latex/contrib/asmeconf/asmeconf-sample.bib14
-rw-r--r--macros/latex/contrib/asmeconf/asmeconf-template.pdfbin706754 -> 705662 bytes
-rw-r--r--macros/latex/contrib/asmeconf/asmeconf-template.tex142
-rw-r--r--macros/latex/contrib/asmeconf/asmeconf.cls462
-rw-r--r--macros/latex/contrib/asmeconf/examples/asmeconf-fontspec.pdfbin369381 -> 39914315 bytes
-rw-r--r--macros/latex/contrib/asmeconf/examples/asmeconf-fontspec.tex75
-rw-r--r--macros/latex/contrib/asmejour/README.md10
-rw-r--r--macros/latex/contrib/asmejour/asmejour-sample.bib17
-rw-r--r--macros/latex/contrib/asmejour/asmejour-template.pdfbin729589 -> 728579 bytes
-rw-r--r--macros/latex/contrib/asmejour/asmejour-template.tex89
-rw-r--r--macros/latex/contrib/asmejour/asmejour.cls458
-rw-r--r--macros/latex/contrib/asmejour/asmewide_example/asmejour-wide-equation-examples.pdfbin2983602 -> 2982565 bytes
-rw-r--r--macros/latex/contrib/asmejour/asmewide_example/asmejour-wide-equation-examples.tex8
-rw-r--r--macros/latex/contrib/babel-contrib/french/README.md7
-rw-r--r--macros/latex/contrib/babel-contrib/french/frenchb-doc.pdfbin190506 -> 208887 bytes
-rw-r--r--macros/latex/contrib/babel-contrib/french/frenchb-doc.tex159
-rw-r--r--macros/latex/contrib/babel-contrib/french/frenchb.dtx1345
-rw-r--r--macros/latex/contrib/babel-contrib/french/frenchb.pdfbin366313 -> 346426 bytes
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/README.md8
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/beamercolorthemeArguelles.sty6
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/beamerfontthemeArguelles.sty6
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/beamerinnerthemeArguelles.sty8
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/beamerouterthemeArguelles.sty6
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/beamerthemeArguelles.sty11
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/demo/demo-arguelles.pdfbin1762744 -> 1762744 bytes
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/demo/demo-arguelles.tex4
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/moloch/CHANGELOG.md15
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/moloch/README.md8
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/moloch/beamercolorthememoloch.dtx2
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/moloch/beamerfontthememoloch.dtx187
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/moloch/beamerinnerthememoloch.dtx19
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/moloch/beamerouterthememoloch.dtx42
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/moloch/beamerthememoloch.dtx58
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/moloch/moloch.pdfbin276169 -> 295500 bytes
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/moloch/moloch.tex58
-rw-r--r--macros/latex/contrib/beautybook/Beautybook-EN.cls1166
-rw-r--r--macros/latex/contrib/beautybook/README.md6
-rw-r--r--macros/latex/contrib/beautybook/beautybook-cn.pdf (renamed from macros/latex/contrib/beautybook/Beautybook-cn.pdf)bin6210741 -> 6154021 bytes
-rw-r--r--macros/latex/contrib/beautybook/beautybook-cn.tex (renamed from macros/latex/contrib/beautybook/Beautybook-cn.tex)79
-rw-r--r--macros/latex/contrib/beautybook/beautybook-en.pdfbin3706871 -> 3608208 bytes
-rw-r--r--macros/latex/contrib/beautybook/beautybook-en.tex353
-rw-r--r--macros/latex/contrib/beautybook/beautybook.cls (renamed from macros/latex/contrib/beautybook/Beautybook-CN.cls)572
-rw-r--r--macros/latex/contrib/beautybook/inner_pics/beautybook-logo.pngbin0 -> 34323 bytes
-rw-r--r--macros/latex/contrib/beautybook/inner_pics/hummingbird-8013214.jpgbin0 -> 5569816 bytes
-rw-r--r--macros/latex/contrib/beautybook/inner_pics/logo.pngbin25086 -> 0 bytes
-rw-r--r--macros/latex/contrib/beautybook/inner_pics/mystery-1599527.jpgbin0 -> 1688394 bytes
-rw-r--r--macros/latex/contrib/beautybook/inner_pics/titleimages/c10.pdfbin0 -> 3365 bytes
-rw-r--r--macros/latex/contrib/beautybook/inner_pics/titleimages/c11.pdfbin0 -> 3672 bytes
-rw-r--r--macros/latex/contrib/beautybook/inner_pics/titleimages/c9.pdfbin0 -> 3827 bytes
-rw-r--r--macros/latex/contrib/beautybook/stys/Beautybook-cover-birkar.sty125
-rw-r--r--macros/latex/contrib/beautybook/stys/Beautybook-cover-cn.sty103
-rw-r--r--macros/latex/contrib/beautybook/stys/Beautybook-cover-en.sty87
-rw-r--r--macros/latex/contrib/beautybook/stys/Beautybook-cover-enfig.sty55
-rw-r--r--macros/latex/contrib/beautybook/stys/beautybook-bottompage.sty (renamed from macros/latex/contrib/beautybook/stys/Beautybook-bottompage.sty)8
-rw-r--r--macros/latex/contrib/beautybook/stys/beautybook-cover-birkar.sty190
-rw-r--r--macros/latex/contrib/beautybook/stys/beautybook-cover-cn.sty162
-rw-r--r--macros/latex/contrib/beautybook/stys/beautybook-cover-en.sty149
-rw-r--r--macros/latex/contrib/beautybook/stys/beautybook-cover-enfig.sty88
-rw-r--r--macros/latex/contrib/bib2qr/README.md88
-rw-r--r--macros/latex/contrib/bib2qr/bib2qr.dtx594
-rw-r--r--macros/latex/contrib/bib2qr/bib2qr.ins85
-rw-r--r--macros/latex/contrib/bib2qr/bib2qr.pdfbin0 -> 508752 bytes
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ieee/biblatex-ieee-alphabetic.pdfbin306393 -> 305632 bytes
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ieee/biblatex-ieee-alphabetic.tex14
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ieee/biblatex-ieee.bib12
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ieee/biblatex-ieee.pdfbin402568 -> 404215 bytes
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ieee/biblatex-ieee.tex37
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ieee/ieee-alphabetic.bbx8
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ieee/ieee-alphabetic.cbx8
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ieee/ieee.bbx24
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ieee/ieee.cbx12
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ieee/magyar-ieee.lbx6
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-phys/biblatex-phys.bib6
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-phys/biblatex-phys.pdfbin448675 -> 482865 bytes
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-phys/biblatex-phys.tex34
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-phys/phys.bbx25
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-phys/phys.cbx8
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-phys/phys.dbx8
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-publist/README22
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.pdfbin412844 -> 428272 bytes
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.tex339
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/UKenglish-publist.lbx37
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/USenglish-publist.lbx37
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/american-publist.lbx37
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/australian-publist.lbx37
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/austrian-publist.lbx58
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/british-publist.lbx58
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/canadian-publist.lbx37
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/english-publist.lbx58
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/french-publist.lbx58
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/german-publist.lbx58
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/naustrian-publist.lbx37
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/newzealand-publist.lbx58
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/ngerman-publist.lbx37
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/nswissgerman-publist.lbx37
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/swissgerman-publist.lbx58
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.bbx301
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.cbx62
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.dbx4
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-sbl/README.md2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-sbl/biblatex-sbl.def4
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-sbl/biblatex-sbl.pdfbin165128 -> 166491 bytes
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-sbl/sbl-paper.pdfbin79100 -> 79178 bytes
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-sbl/sbl.cbx3
-rw-r--r--macros/latex/contrib/bmstu-iu8/README.md2
-rw-r--r--macros/latex/contrib/bmstu-iu8/bmstu-example.pdfbin177036 -> 177182 bytes
-rw-r--r--macros/latex/contrib/bmstu-iu8/bmstu-iu8/BMSTU-IU8.cls46
-rw-r--r--macros/latex/contrib/bmstu-iu8/bmstu-iu8/DEPENDS.txt38
-rw-r--r--macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-01-base.sty (renamed from macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/01-IU8-base.sty)2
-rw-r--r--macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-02-construction.sty (renamed from macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/02-IU8-construction.sty)2
-rw-r--r--macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-03-numbering.sty (renamed from macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/03-IU8-numbering.sty)2
-rw-r--r--macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-04-section-numbering.sty (renamed from macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/04-IU8-section-numbering.sty)4
-rw-r--r--macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-05-figures.sty (renamed from macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/05-IU8-figures.sty)2
-rw-r--r--macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-06-tables.sty (renamed from macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/06-IU8-tables.sty)2
-rw-r--r--macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-07-footnotes.sty (renamed from macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/07-IU8-footnotes.sty)2
-rw-r--r--macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-08-formulas.sty (renamed from macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/08-IU8-formulas.sty)2
-rw-r--r--macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-09-cites.sty (renamed from macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/09-IU8-cites.sty)2
-rw-r--r--macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-10-titlepage.sty (renamed from macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/10-IU8-titlepage.sty)2
-rw-r--r--macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-11-performers.sty (renamed from macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/11-IU8-performers.sty)2
-rw-r--r--macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-12-abstract.sty (renamed from macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/12-IU8-abstract.sty)2
-rw-r--r--macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-13-contents.sty (renamed from macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/13-IU8-contents.sty)2
-rw-r--r--macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-14-terms-and-definitions.sty (renamed from macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/14-IU8-terms-and-definitions.sty)2
-rw-r--r--macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-15-list-of-abbreviations.sty (renamed from macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/15-IU8-list-of-abbreviations.sty)2
-rw-r--r--macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-16-references.sty (renamed from macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/16-IU8-references.sty)5
-rw-r--r--macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-17-appendices.sty (renamed from macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/17-IU8-appendices.sty)2
-rw-r--r--macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-18-extra.sty (renamed from macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/18-IU8-extra.sty)2
-rw-r--r--macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-19-counters.sty (renamed from macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/19-IU8-counters.sty)2
-rw-r--r--macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-20-listing.sty (renamed from macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/20-IU8-listing.sty)2
-rw-r--r--macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-21-math.sty (renamed from macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/21-IU8-math.sty)2
-rw-r--r--macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-22-algorithms.sty (renamed from macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/22-IU8-algorithms.sty)2
-rw-r--r--macros/latex/contrib/bxpdfver/LICENSE2
-rw-r--r--macros/latex/contrib/bxpdfver/README-ja.md60
-rw-r--r--macros/latex/contrib/bxpdfver/README.md48
-rw-r--r--macros/latex/contrib/bxpdfver/bxpdfver.sty206
-rw-r--r--macros/latex/contrib/catppuccinpalette/README.md79
-rw-r--r--macros/latex/contrib/catppuccinpalette/catppuccinpalette.dtx434
-rw-r--r--macros/latex/contrib/catppuccinpalette/catppuccinpalette.ins66
-rw-r--r--macros/latex/contrib/catppuccinpalette/catppuccinpalette.pdfbin210724 -> 224058 bytes
-rw-r--r--macros/latex/contrib/changebar/CATALOG2
-rw-r--r--macros/latex/contrib/changebar/README2
-rw-r--r--macros/latex/contrib/changebar/changebar.bug4
-rw-r--r--macros/latex/contrib/changebar/changebar.dtx158
-rw-r--r--macros/latex/contrib/changebar/changebar.pdfbin486497 -> 483890 bytes
-rw-r--r--macros/latex/contrib/chemformula-ru/chemformula-ru.pdfbin167712 -> 167985 bytes
-rw-r--r--macros/latex/contrib/chemformula-ru/chemformula-ru.sty24
-rw-r--r--macros/latex/contrib/chemformula-ru/chemformula-ru.tex41
-rw-r--r--macros/latex/contrib/cjs-rcs-article/README.md12
-rw-r--r--macros/latex/contrib/cjs-rcs-article/cjs-rcs-article-fr.pdfbin112323 -> 120466 bytes
-rw-r--r--macros/latex/contrib/cjs-rcs-article/cjs-rcs-article.dtx1038
-rw-r--r--macros/latex/contrib/cjs-rcs-article/cjs-rcs-article.pdfbin176709 -> 190899 bytes
-rw-r--r--macros/latex/contrib/cjs-rcs-article/cjs-rcs-bst-en.dbj2
-rw-r--r--macros/latex/contrib/cjs-rcs-article/cjs-rcs-bst-fr.dbj2
-rw-r--r--macros/latex/contrib/cjs-rcs-article/cjs-rcs-class.dbj2
-rw-r--r--macros/latex/contrib/cjs-rcs-article/cjs-rcs-english.mbs6
-rw-r--r--macros/latex/contrib/cjs-rcs-article/cjs-rcs-french.mbs6
-rw-r--r--macros/latex/contrib/cjs-rcs-article/cjs-rcs-merlin.mbs6
-rw-r--r--macros/latex/contrib/cjs-rcs-article/cjs-rcs-merlin.pdfbin38737 -> 38794 bytes
-rw-r--r--macros/latex/contrib/colortbl/colortbl-DE.pdfbin346445 -> 346756 bytes
-rw-r--r--macros/latex/contrib/colortbl/colortbl.dtx38
-rw-r--r--macros/latex/contrib/colortbl/colortbl.pdfbin312112 -> 313437 bytes
-rw-r--r--macros/latex/contrib/count1to/README.md28
-rw-r--r--macros/latex/contrib/count1to/count1to.dtx (renamed from macros/latex/contrib/ms/count1to.dtx)195
-rw-r--r--macros/latex/contrib/count1to/count1to.ins47
-rw-r--r--macros/latex/contrib/count1to/count1to.pdfbin0 -> 552995 bytes
-rw-r--r--macros/latex/contrib/cpssp/README19
-rwxr-xr-xmacros/latex/contrib/cpssp/cpssp412
-rw-r--r--macros/latex/contrib/cpssp/cpssp.dtx1773
-rw-r--r--macros/latex/contrib/cpssp/cpssp.ins82
-rw-r--r--macros/latex/contrib/cpssp/cpssp.pdfbin546864 -> 0 bytes
-rw-r--r--macros/latex/contrib/customenvs/doc/customenvs-doc-en.pdfbin183174 -> 199070 bytes
-rw-r--r--macros/latex/contrib/customenvs/doc/customenvs-doc-en.tex139
-rw-r--r--macros/latex/contrib/customenvs/doc/customenvs-doc-fr.pdfbin1446315 -> 1503490 bytes
-rw-r--r--macros/latex/contrib/customenvs/doc/customenvs-doc-fr.tex285
-rw-r--r--macros/latex/contrib/customenvs/tex/customenvs.sty669
-rw-r--r--macros/latex/contrib/dashrulex/README.md12
-rw-r--r--macros/latex/contrib/dashrulex/dashrulex.pdfbin58940 -> 57722 bytes
-rw-r--r--macros/latex/contrib/dashrulex/dashrulex.sty180
-rw-r--r--macros/latex/contrib/dashrulex/dashrulex.tex192
-rw-r--r--macros/latex/contrib/dccpaper/README.md2
-rw-r--r--macros/latex/contrib/dccpaper/dccpaper.dtx24
-rw-r--r--macros/latex/contrib/dccpaper/dccpaper.pdfbin344973 -> 350338 bytes
-rw-r--r--macros/latex/contrib/delimset/README.txt4
-rw-r--r--macros/latex/contrib/delimset/delimset.dtx1202
-rw-r--r--macros/latex/contrib/delimset/delimset.ins4
-rw-r--r--macros/latex/contrib/delimset/delimset.pdfbin327877 -> 376509 bytes
-rw-r--r--macros/latex/contrib/doibanner/README.md91
-rw-r--r--macros/latex/contrib/doibanner/doibanner.dtx412
-rw-r--r--macros/latex/contrib/doibanner/doibanner.ins85
-rw-r--r--macros/latex/contrib/doibanner/doibanner.pdfbin0 -> 297278 bytes
-rw-r--r--macros/latex/contrib/easybook/README.md12
-rw-r--r--macros/latex/contrib/easybook/easybook.dtx777
-rw-r--r--macros/latex/contrib/easybook/easybook.pdfbin632806 -> 638352 bytes
-rw-r--r--macros/latex/contrib/easybook/easybook.tex521
-rw-r--r--macros/latex/contrib/edmaths/LICENSE.txt416
-rw-r--r--macros/latex/contrib/edmaths/README.md5
-rw-r--r--macros/latex/contrib/edmaths/edmaths-docs.pdfbin0 -> 144435 bytes
-rw-r--r--macros/latex/contrib/edmaths/edmaths.sty258
-rw-r--r--macros/latex/contrib/edmaths/example-references.bib10
-rw-r--r--macros/latex/contrib/edmaths/example-report.tex79
-rw-r--r--macros/latex/contrib/elpres/README.md11
-rw-r--r--macros/latex/contrib/elpres/doc/elpres-example.pdfbin216833 -> 250623 bytes
-rw-r--r--macros/latex/contrib/elpres/doc/elpres-example.tex146
-rw-r--r--macros/latex/contrib/elpres/doc/elpres-manual.pdfbin161486 -> 118410 bytes
-rw-r--r--macros/latex/contrib/elpres/doc/elpres-manual.tex517
-rw-r--r--macros/latex/contrib/elpres/tex/elpres.cls13
-rw-r--r--macros/latex/contrib/ensps-colorscheme/LICENSE415
-rw-r--r--macros/latex/contrib/ensps-colorscheme/Makefile54
-rw-r--r--macros/latex/contrib/ensps-colorscheme/README.md32
-rw-r--r--macros/latex/contrib/ensps-colorscheme/ensps-colorscheme-doc.pdfbin0 -> 212493 bytes
-rw-r--r--macros/latex/contrib/ensps-colorscheme/ensps-colorscheme.dtx171
-rw-r--r--macros/latex/contrib/ensps-colorscheme/ensps-colorscheme.ins60
-rw-r--r--macros/latex/contrib/esami/README6
-rw-r--r--macros/latex/contrib/esami/VERSION2
-rw-r--r--macros/latex/contrib/esami/doc/esami-doc-en.pdfbin483307 -> 500412 bytes
-rw-r--r--macros/latex/contrib/esami/doc/esami-doc-en.tex4
-rw-r--r--macros/latex/contrib/esami/doc/esami-doc-it.pdfbin492308 -> 508695 bytes
-rw-r--r--macros/latex/contrib/esami/doc/esami-doc-it.tex4
-rw-r--r--macros/latex/contrib/esami/doc/examples/qftest5-fillinqiie1.parametri.tex4
-rw-r--r--macros/latex/contrib/esami/doc/examples/qftest5-fillinqiie2.parametri.tex4
-rw-r--r--macros/latex/contrib/esami/doc/examples/qftest5-fillinqiie3.parametri.tex4
-rw-r--r--macros/latex/contrib/esami/doc/examples/qftest5-fillinqiie4.parametri.tex4
-rw-r--r--macros/latex/contrib/esami/doc/examples/testA-xetex-sol.sol.tex84
-rw-r--r--macros/latex/contrib/esami/esami.sty1
-rw-r--r--macros/latex/contrib/fancyhdr/README2
-rw-r--r--macros/latex/contrib/fancyhdr/fancyhdr.dtx244
-rw-r--r--macros/latex/contrib/fancyhdr/fancyhdr.pdfbin875225 -> 880898 bytes
-rw-r--r--macros/latex/contrib/fillwith/MANIFEST.md54
-rw-r--r--macros/latex/contrib/fillwith/README.md32
-rw-r--r--macros/latex/contrib/fillwith/fillwith-example.pdfbin0 -> 116008 bytes
-rw-r--r--macros/latex/contrib/fillwith/fillwith.dtx747
-rw-r--r--macros/latex/contrib/fillwith/fillwith.ins68
-rw-r--r--macros/latex/contrib/fillwith/fillwith.pdfbin0 -> 513081 bytes
-rw-r--r--macros/latex/contrib/fontscale/CHANGELOG.md54
-rw-r--r--macros/latex/contrib/fontscale/README.txt2
-rw-r--r--macros/latex/contrib/fontscale/beery.cls153
-rw-r--r--macros/latex/contrib/fontscale/fontscale-manual-table-classic.tex39
-rw-r--r--macros/latex/contrib/fontscale/fontscale-manual-table-font-steps.tex38
-rw-r--r--macros/latex/contrib/fontscale/fontscale-manual-table-modular-musical.tex38
-rw-r--r--macros/latex/contrib/fontscale/fontscale-manual.pdfbin117192 -> 0 bytes
-rw-r--r--macros/latex/contrib/fontscale/fontscale-manual.tex390
-rw-r--r--macros/latex/contrib/fontscale/fontscale-table-classic.tex41
-rw-r--r--macros/latex/contrib/fontscale/fontscale-table-font-steps.tex39
-rw-r--r--macros/latex/contrib/fontscale/fontscale-table-musical.tex39
-rw-r--r--macros/latex/contrib/fontscale/fontscale.pdfbin0 -> 104879 bytes
-rw-r--r--macros/latex/contrib/fontscale/fontscale.sty1125
-rw-r--r--macros/latex/contrib/fontscale/fontscale.tex409
-rw-r--r--macros/latex/contrib/gridset/LICENSE.md2
-rw-r--r--macros/latex/contrib/gridset/README.md51
-rw-r--r--macros/latex/contrib/gridset/gridset.dtx61
-rw-r--r--macros/latex/contrib/gridset/gridset.pdfbin223385 -> 244186 bytes
-rw-r--r--macros/latex/contrib/harmony/README27
-rw-r--r--macros/latex/contrib/harmony/harmony.pdfbin150295 -> 177261 bytes
-rw-r--r--macros/latex/contrib/harmony/harmony.sty186
-rw-r--r--macros/latex/contrib/harmony/harmony.tex111
-rw-r--r--macros/latex/contrib/hebdomon/README.md18
-rw-r--r--macros/latex/contrib/hebdomon/doc/HebdomonGuide.pdfbin0 -> 544450 bytes
-rw-r--r--macros/latex/contrib/hebdomon/doc/HebdomonGuide.tex461
-rw-r--r--macros/latex/contrib/hebdomon/doc/figures/innsbruck.jpgbin0 -> 421584 bytes
-rw-r--r--macros/latex/contrib/hebdomon/tex/hebdomon.cls412
-rw-r--r--macros/latex/contrib/heria/README.md2
-rw-r--r--macros/latex/contrib/heria/heria-proposal.pdfbin313877 -> 311063 bytes
-rw-r--r--macros/latex/contrib/heria/heria.dtx170
-rw-r--r--macros/latex/contrib/heria/heria.ins4
-rw-r--r--macros/latex/contrib/heria/heria.pdfbin303966 -> 305316 bytes
-rw-r--r--macros/latex/contrib/hvqrurl/Changes1
-rw-r--r--macros/latex/contrib/hvqrurl/doc/hvqrurl.pdfbin118777 -> 122767 bytes
-rw-r--r--macros/latex/contrib/hvqrurl/doc/hvqrurl.tex28
-rw-r--r--macros/latex/contrib/hvqrurl/latex/hvqrurl.sty12
-rw-r--r--macros/latex/contrib/hypcap/README.md20
-rw-r--r--macros/latex/contrib/hypcap/hypcap.dtx (renamed from macros/latex/contrib/oberdiek/hypcap.dtx)73
-rw-r--r--macros/latex/contrib/hypcap/hypcap.pdf (renamed from macros/latex/contrib/oberdiek/hypcap.pdf)bin310655 -> 300905 bytes
-rw-r--r--macros/latex/contrib/hypdestopt/README.md4
-rw-r--r--macros/latex/contrib/hypdestopt/hypdestopt.dtx57
-rw-r--r--macros/latex/contrib/hypdestopt/hypdestopt.pdfbin323028 -> 347012 bytes
-rw-r--r--macros/latex/contrib/hyperref/ChangeLog.txt24
-rw-r--r--macros/latex/contrib/hyperref/README.md2
-rw-r--r--macros/latex/contrib/hyperref/doc/backref.pdfbin206469 -> 206469 bytes
-rw-r--r--macros/latex/contrib/hyperref/doc/hyperref-doc.html54
-rw-r--r--macros/latex/contrib/hyperref/doc/hyperref-doc.pdfbin318424 -> 318416 bytes
-rw-r--r--macros/latex/contrib/hyperref/doc/hyperref-doc.tex2
-rw-r--r--macros/latex/contrib/hyperref/doc/hyperref-doc2.html4
-rw-r--r--macros/latex/contrib/hyperref/doc/hyperref-doc3.html4
-rw-r--r--macros/latex/contrib/hyperref/doc/hyperref-doc4.html4
-rw-r--r--macros/latex/contrib/hyperref/doc/hyperref-doc5.html4
-rw-r--r--macros/latex/contrib/hyperref/doc/hyperref-doc6.html4
-rw-r--r--macros/latex/contrib/hyperref/doc/hyperref-doc7.html4
-rw-r--r--macros/latex/contrib/hyperref/doc/hyperref-doc8.html4
-rw-r--r--macros/latex/contrib/hyperref/doc/hyperref-doc9.html4
-rw-r--r--macros/latex/contrib/hyperref/doc/hyperref-linktarget.pdfbin439699 -> 438491 bytes
-rw-r--r--macros/latex/contrib/hyperref/doc/hyperref.pdfbin2343152 -> 2341312 bytes
-rw-r--r--macros/latex/contrib/hyperref/doc/nameref.pdfbin172475 -> 172475 bytes
-rw-r--r--macros/latex/contrib/hyperref/doc/xr-hyper.pdfbin318270 -> 303974 bytes
-rw-r--r--macros/latex/contrib/hyperref/hluatex.dtx5
-rw-r--r--macros/latex/contrib/hyperref/hyperref-linktarget.dtx2
-rw-r--r--macros/latex/contrib/hyperref/hyperref-patches.dtx2
-rw-r--r--macros/latex/contrib/hyperref/hyperref.dtx88
-rw-r--r--macros/latex/contrib/hyperref/xr-hyper.dtx8
-rw-r--r--macros/latex/contrib/isosafety/README.md2
-rw-r--r--macros/latex/contrib/isosafety/doc/isosafety-docs.pdfbin0 -> 112768 bytes
-rw-r--r--macros/latex/contrib/isosafety/doc/isosafety-docs.tex138
-rw-r--r--macros/latex/contrib/isosafety/isosafety.dtx143
-rw-r--r--macros/latex/contrib/isosafety/isosafety.pdfbin142768 -> 0 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_CV003.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV003.pdf)bin1123 -> 1123 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_CV004.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV004.pdf)bin1861 -> 1861 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_CV009.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV009.pdf)bin1530 -> 1530 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_CV010.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV010.pdf)bin1307 -> 1307 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_CV011.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV011.pdf)bin4364 -> 4364 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_CV012.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV012.pdf)bin4636 -> 4636 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_CV013.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV013.pdf)bin1736 -> 1736 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_CV027.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV027.pdf)bin4901 -> 4901 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_CV028.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV028.pdf)bin6703 -> 6703 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_CV029.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV029.pdf)bin9946 -> 9946 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_CV064.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV064.pdf)bin1729 -> 1729 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_CV067.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV067.pdf)bin2733 -> 2733 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E001.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E001.pdf)bin1828 -> 1828 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E002.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E002.pdf)bin1824 -> 1824 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E003.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E003.pdf)bin971 -> 971 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E004.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E004.pdf)bin1762 -> 1762 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E007.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E007.pdf)bin2068 -> 2068 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E008.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E008.pdf)bin1657 -> 1657 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E009.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E009.pdf)0
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E010.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E010.pdf)bin1203 -> 1203 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E011.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E011.pdf)bin4272 -> 4272 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E012.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E012.pdf)bin4612 -> 4612 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E013.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E013.pdf)0
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E014.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E014.pdf)bin4467 -> 4467 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E015.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E015.pdf)bin2117 -> 2117 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E016.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E016.pdf)bin1897 -> 1897 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E017.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E017.pdf)bin2562 -> 2562 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E018.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E018.pdf)bin1288 -> 1288 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E019.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E019.pdf)bin1281 -> 1281 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E020.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E020.pdf)bin1943 -> 1943 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E021.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E021.pdf)bin2852 -> 2852 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E022.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E022.pdf)bin1177 -> 1177 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E023.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E023.pdf)bin1172 -> 1172 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E024.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E024.pdf)bin1674 -> 1674 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E025.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E025.pdf)bin4345 -> 4345 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E026.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E026.pdf)bin1489 -> 1489 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E027.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E027.pdf)bin4814 -> 4814 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E028.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E028.pdf)bin6617 -> 6617 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E029.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E029.pdf)bin9864 -> 9864 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E030.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E030.pdf)bin1495 -> 1495 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E031.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E031.pdf)bin1721 -> 1721 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E032.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E032.pdf)bin3770 -> 3770 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E033.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E033.pdf)0
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E034.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E034.pdf)0
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E035.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E035.pdf)bin3820 -> 3820 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E036.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E036.pdf)bin4287 -> 4287 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E037.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E037.pdf)bin1959 -> 1959 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E038.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E038.pdf)bin4687 -> 4687 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E039.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E039.pdf)bin3955 -> 3955 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E040.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E040.pdf)bin1572 -> 1572 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E041.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E041.pdf)bin3792 -> 3792 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E042.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E042.pdf)bin3390 -> 3390 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E043.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E043.pdf)bin5583 -> 5583 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E044.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E044.pdf)bin3280 -> 3280 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E045.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E045.pdf)bin4814 -> 4814 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E046.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E046.pdf)bin4015 -> 4015 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E047.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E047.pdf)bin2346 -> 2346 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E048.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E048.pdf)bin2534 -> 2534 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E049.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E049.pdf)bin2423 -> 2423 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E050.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E050.pdf)bin4458 -> 4458 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E051.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E051.pdf)bin3907 -> 3907 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E052.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E052.pdf)bin2204 -> 2204 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E053.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E053.pdf)bin1886 -> 1886 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E054.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E054.pdf)bin3880 -> 3880 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E055.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E055.pdf)bin3269 -> 3269 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E056.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E056.pdf)bin2379 -> 2379 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E057.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E057.pdf)bin1169 -> 1169 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E058.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E058.pdf)0
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E059.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E059.pdf)bin1136 -> 1136 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E060.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E060.pdf)bin2474 -> 2474 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E061.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E061.pdf)bin4273 -> 4273 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E062.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E062.pdf)bin1760 -> 1760 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E063.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E063.pdf)bin1878 -> 1878 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E064.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E064.pdf)bin1605 -> 1605 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E065.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E065.pdf)bin1808 -> 1808 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E067.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E067.pdf)bin2617 -> 2617 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E068.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E068.pdf)bin6730 -> 6730 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E069.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E069.pdf)bin3345 -> 3345 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E070.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E070.pdf)bin1621 -> 1621 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F001.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F001.pdf)bin1567 -> 1567 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F002.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F002.pdf)bin2714 -> 2714 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F003.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F003.pdf)bin1780 -> 1780 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F004.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F004.pdf)bin2131 -> 2131 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F005.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F005.pdf)bin2289 -> 2289 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F006.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F006.pdf)bin2183 -> 2183 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F007.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F007.pdf)bin3380 -> 3380 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F008.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F008.pdf)bin3755 -> 3755 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F009.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F009.pdf)bin2238 -> 2238 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F010.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F010.pdf)bin1862 -> 1862 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F011.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F011.pdf)bin4254 -> 4254 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F012.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F012.pdf)bin1792 -> 1792 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F013.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F013.pdf)bin1813 -> 1813 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F014.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F014.pdf)bin1735 -> 1735 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F015.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F015.pdf)bin1925 -> 1925 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F016.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F016.pdf)bin2653 -> 2653 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F017.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F017.pdf)bin2724 -> 2724 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F018.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F018.pdf)bin1943 -> 1943 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F019.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F019.pdf)bin2100 -> 2100 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M001.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M001.pdf)0
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M002.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M002.pdf)bin1499 -> 1499 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M003.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M003.pdf)bin1608 -> 1608 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M004.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M004.pdf)bin2358 -> 2358 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M005.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M005.pdf)bin1109 -> 1109 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M006.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M006.pdf)bin2002 -> 2002 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M007.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M007.pdf)bin2092 -> 2092 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M008.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M008.pdf)bin1673 -> 1673 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M009.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M009.pdf)bin2297 -> 2297 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M010.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M010.pdf)bin1301 -> 1301 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M011.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M011.pdf)bin3054 -> 3054 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M012.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M012.pdf)0
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M013.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M013.pdf)bin1849 -> 1849 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M014.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M014.pdf)0
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M015.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M015.pdf)bin1271 -> 1271 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M016.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M016.pdf)bin1790 -> 1790 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M017.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M017.pdf)bin3757 -> 3757 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M018.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M018.pdf)bin2225 -> 2225 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M019.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M019.pdf)bin1772 -> 1772 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M020.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M020.pdf)bin1519 -> 1519 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M021.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M021.pdf)bin1351 -> 1351 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M022.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M022.pdf)bin1760 -> 1760 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M023.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M023.pdf)bin1596 -> 1596 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M024.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M024.pdf)bin1498 -> 1498 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M025.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M025.pdf)bin3246 -> 3246 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M026.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M026.pdf)bin1851 -> 1851 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M027.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M027.pdf)bin6227 -> 6227 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M028.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M028.pdf)bin2649 -> 2649 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M029.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M029.pdf)bin1879 -> 1879 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M030.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M030.pdf)bin6119 -> 6119 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M031.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M031.pdf)bin8180 -> 8180 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M032.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M032.pdf)bin5413 -> 5413 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M033.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M033.pdf)bin5446 -> 5446 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M034.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M034.pdf)bin5112 -> 5112 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M035.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M035.pdf)bin4825 -> 4825 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M036.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M036.pdf)bin3857 -> 3857 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M037.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M037.pdf)bin5183 -> 5183 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M038.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M038.pdf)bin11904 -> 11904 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M039.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M039.pdf)bin15091 -> 15091 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M040.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M040.pdf)bin16077 -> 16077 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M041.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M041.pdf)bin7136 -> 7136 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M042.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M042.pdf)bin5538 -> 5538 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M043.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M043.pdf)bin13741 -> 13741 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M044.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M044.pdf)bin3064 -> 3064 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M045.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M045.pdf)bin8883 -> 8883 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M046.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M046.pdf)bin6530 -> 6530 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M047.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M047.pdf)bin7106 -> 7106 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M048.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M048.pdf)bin15525 -> 15525 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M049.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M049.pdf)bin6205 -> 6205 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M050.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M050.pdf)bin3548 -> 3548 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M051.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M051.pdf)bin3544 -> 3544 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M052.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M052.pdf)bin4020 -> 4020 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M053.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M053.pdf)bin2284 -> 2284 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M054.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M054.pdf)bin4966 -> 4966 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M055.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M055.pdf)bin2010 -> 2010 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M056.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M056.pdf)bin1607 -> 1607 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M057.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M057.pdf)bin1246 -> 1246 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M058.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M058.pdf)bin2414 -> 2414 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M059.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M059.pdf)bin1469 -> 1469 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M060.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M060.pdf)bin2420 -> 2420 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P001.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P001.pdf)bin1197 -> 1197 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P002.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P002.pdf)bin1698 -> 1698 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P003.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P003.pdf)bin1972 -> 1972 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P004.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P004.pdf)bin1811 -> 1811 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P005.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P005.pdf)bin1768 -> 1768 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P006.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P006.pdf)bin2253 -> 2253 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P007.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P007.pdf)bin1676 -> 1676 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P008.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P008.pdf)0
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P009.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P009.pdf)bin1869 -> 1869 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P010.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P010.pdf)bin1775 -> 1775 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P011.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P011.pdf)bin4499 -> 4499 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P012.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P012.pdf)bin1497 -> 1497 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P013.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P013.pdf)bin3162 -> 3162 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P014.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P014.pdf)bin2354 -> 2354 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P015.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P015.pdf)bin1812 -> 1812 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P016.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P016.pdf)bin8652 -> 8652 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P017.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P017.pdf)0
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P018.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P018.pdf)bin1542 -> 1542 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P019.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P019.pdf)bin1772 -> 1772 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P020.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P020.pdf)bin2595 -> 2595 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P021.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P021.pdf)bin1562 -> 1562 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P022.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P022.pdf)0
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P023.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P023.pdf)bin1576 -> 1576 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P024.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P024.pdf)bin1684 -> 1684 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P025.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P025.pdf)bin2175 -> 2175 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P026.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P026.pdf)bin3995 -> 3995 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P027.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P027.pdf)0
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P028.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P028.pdf)bin2847 -> 2847 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P029.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P029.pdf)0
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P030.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P030.pdf)bin2978 -> 2978 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P031.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P031.pdf)bin1582 -> 1582 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P032.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P032.pdf)bin1812 -> 1812 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P033.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P033.pdf)bin15245 -> 15245 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P034.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P034.pdf)bin13872 -> 13872 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P035.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P035.pdf)bin8281 -> 8281 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P036.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P036.pdf)bin2524 -> 2524 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P037.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P037.pdf)bin2542 -> 2542 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P038.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P038.pdf)bin2576 -> 2576 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P039.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P039.pdf)bin6372 -> 6372 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P040.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P040.pdf)bin3697 -> 3697 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P041.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P041.pdf)bin1640 -> 1640 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P042.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P042.pdf)bin1674 -> 1674 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P043.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P043.pdf)bin5266 -> 5266 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P044.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P044.pdf)bin3478 -> 3478 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P045.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P045.pdf)bin1783 -> 1783 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P046.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P046.pdf)bin2063 -> 2063 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P047.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P047.pdf)bin2517 -> 2517 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P048.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P048.pdf)bin1789 -> 1789 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P049.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P049.pdf)bin2190 -> 2190 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P050.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P050.pdf)bin1936 -> 1936 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P051.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P051.pdf)bin2248 -> 2248 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P052.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P052.pdf)bin2184 -> 2184 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P053.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P053.pdf)bin2191 -> 2191 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P054.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P054.pdf)bin2405 -> 2405 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P055.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P055.pdf)bin2247 -> 2247 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P056.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P056.pdf)bin1914 -> 1914 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P057.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P057.pdf)bin2349 -> 2349 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P058.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P058.pdf)bin2302 -> 2302 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P059.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P059.pdf)bin2945 -> 2945 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P060.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P060.pdf)bin1340 -> 1340 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P061.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P061.pdf)bin2408 -> 2408 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P062.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P062.pdf)bin3032 -> 3032 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P063.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P063.pdf)bin2419 -> 2419 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P064.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P064.pdf)bin2879 -> 2879 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P065.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P065.pdf)bin3193 -> 3193 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P066.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P066.pdf)bin2490 -> 2490 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P067.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P067.pdf)bin1517 -> 1517 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P068.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P068.pdf)bin2240 -> 2240 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P069.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P069.pdf)bin1825 -> 1825 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P070.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P070.pdf)bin5310 -> 5310 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P071.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P071.pdf)bin1913 -> 1913 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P072.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P072.pdf)bin1844 -> 1844 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P073.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P073.pdf)bin2703 -> 2703 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P074.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P074.pdf)bin2906 -> 2906 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P075.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P075.pdf)bin1702 -> 1702 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W001.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W001.pdf)0
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W002.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W002.pdf)bin10194 -> 10194 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W003.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W003.pdf)0
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W004.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W004.pdf)bin1684 -> 1684 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W005.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W005.pdf)bin2585 -> 2585 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W006.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W006.pdf)bin1768 -> 1768 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W007.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W007.pdf)bin2221 -> 2221 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W008.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W008.pdf)bin2179 -> 2179 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W009.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W009.pdf)bin2430 -> 2430 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W010.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W010.pdf)bin1731 -> 1731 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W011.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W011.pdf)bin1851 -> 1851 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W012.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W012.pdf)bin1064 -> 1064 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W013.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W013.pdf)bin3018 -> 3018 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W014.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W014.pdf)bin2159 -> 2159 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W015.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W015.pdf)bin1933 -> 1933 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W016.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W016.pdf)bin2628 -> 2628 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W017.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W017.pdf)bin1280 -> 1280 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W018.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W018.pdf)bin2619 -> 2619 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W019.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W019.pdf)bin1803 -> 1803 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W020.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W020.pdf)bin1611 -> 1611 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W021.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W021.pdf)bin2127 -> 2127 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W022.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W022.pdf)bin1671 -> 1671 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W023.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W023.pdf)bin2778 -> 2778 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W024.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W024.pdf)bin1398 -> 1398 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W025.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W025.pdf)bin3060 -> 3060 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W026.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W026.pdf)bin1754 -> 1754 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W027.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W027.pdf)bin1525 -> 1525 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W028.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W028.pdf)bin2278 -> 2278 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W029.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W029.pdf)bin4426 -> 4426 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W030.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W030.pdf)bin2473 -> 2473 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W031.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W031.pdf)bin2764 -> 2764 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W032.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W032.pdf)bin2952 -> 2952 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W033.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W033.pdf)bin3108 -> 3108 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W034.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W034.pdf)bin3383 -> 3383 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W035.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W035.pdf)bin2962 -> 2962 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W036.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W036.pdf)bin23961 -> 23961 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W037.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W037.pdf)bin8525 -> 8525 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W038.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W038.pdf)bin7126 -> 7126 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W039.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W039.pdf)bin1690 -> 1690 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W040.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W040.pdf)bin12232 -> 12232 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W041.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W041.pdf)bin42519 -> 42519 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W042.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W042.pdf)bin1485 -> 1485 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W043.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W043.pdf)bin3520 -> 3520 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W044.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W044.pdf)bin2163 -> 2163 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W045.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W045.pdf)bin4400 -> 4400 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W046.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W046.pdf)bin5475 -> 5475 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W047.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W047.pdf)bin3771 -> 3771 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W048.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W048.pdf)bin3758 -> 3758 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W049.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W049.pdf)bin5523 -> 5523 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W050.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W050.pdf)bin3742 -> 3742 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W051.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W051.pdf)bin2539 -> 2539 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W052.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W052.pdf)bin4373 -> 4373 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W053.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W053.pdf)bin4771 -> 4771 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W054.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W054.pdf)bin2853 -> 2853 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W055.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W055.pdf)bin2162 -> 2162 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W056.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W056.pdf)bin2291 -> 2291 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W057.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W057.pdf)bin3440 -> 3440 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W058.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W058.pdf)bin5427 -> 5427 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W059.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W059.pdf)bin1685 -> 1685 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W060.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W060.pdf)bin4166 -> 4166 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W061.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W061.pdf)bin2533 -> 2533 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W062.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W062.pdf)bin7282 -> 7282 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W063.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W063.pdf)bin5035 -> 5035 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W064.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W064.pdf)bin1691 -> 1691 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W065.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W065.pdf)bin7289 -> 7289 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W066.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W066.pdf)bin6096 -> 6096 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W067.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W067.pdf)bin3205 -> 3205 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W068.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W068.pdf)bin2524 -> 2524 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W069.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W069.pdf)bin2964 -> 2964 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W070.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W070.pdf)bin1961 -> 1961 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W071.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W071.pdf)bin6626 -> 6626 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W072.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W072.pdf)bin1612 -> 1612 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W073.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W073.pdf)bin2727 -> 2727 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W074.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W074.pdf)bin2440 -> 2440 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W075.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W075.pdf)bin3039 -> 3039 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W076.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W076.pdf)bin2006 -> 2006 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W077.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W077.pdf)bin2607 -> 2607 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W078.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W078.pdf)bin1523 -> 1523 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W079.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W079.pdf)bin1778 -> 1778 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W080.pdf (renamed from macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W080.pdf)bin1798 -> 1798 bytes
-rw-r--r--macros/latex/contrib/isosafety/tex/isosafety.sty49
-rw-r--r--macros/latex/contrib/iwonamath/Makefile6
-rw-r--r--macros/latex/contrib/iwonamath/README7
-rw-r--r--macros/latex/contrib/iwonamath/iwonamath.dtx6
-rw-r--r--macros/latex/contrib/iwonamath/iwonamath.pdfbin502258 -> 503042 bytes
-rw-r--r--macros/latex/contrib/iwonamath/omliwonamath.fd2
-rw-r--r--macros/latex/contrib/iwonamath/omliwonamathc.fd2
-rw-r--r--macros/latex/contrib/iwonamath/omliwonamathl.fd2
-rw-r--r--macros/latex/contrib/iwonamath/omliwonamathlc.fd2
-rw-r--r--macros/latex/contrib/iwonamath/omsiwonamath.fd2
-rw-r--r--macros/latex/contrib/iwonamath/omsiwonamathc.fd2
-rw-r--r--macros/latex/contrib/iwonamath/omsiwonamathl.fd2
-rw-r--r--macros/latex/contrib/iwonamath/omsiwonamathlc.fd2
-rw-r--r--macros/latex/contrib/iwonamath/omxiwonamath.fd2
-rw-r--r--macros/latex/contrib/iwonamath/omxiwonamathc.fd2
-rw-r--r--macros/latex/contrib/iwonamath/omxiwonamathl.fd2
-rw-r--r--macros/latex/contrib/iwonamath/omxiwonamathlc.fd2
-rw-r--r--macros/latex/contrib/iwonamath/ot1iwonamath.fd2
-rw-r--r--macros/latex/contrib/iwonamath/ot1iwonamathc.fd2
-rw-r--r--macros/latex/contrib/iwonamath/ot1iwonamathcm.fd2
-rw-r--r--macros/latex/contrib/iwonamath/ot1iwonamathl.fd2
-rw-r--r--macros/latex/contrib/iwonamath/ot1iwonamathlc.fd2
-rw-r--r--macros/latex/contrib/iwonamath/ot1iwonamathlcm.fd2
-rw-r--r--macros/latex/contrib/iwonamath/ot1iwonamathlm.fd2
-rw-r--r--macros/latex/contrib/iwonamath/ot1iwonamathm.fd2
-rw-r--r--macros/latex/contrib/iwonamath/sample.pdfbin382573 -> 379195 bytes
-rw-r--r--macros/latex/contrib/jnuexam/examfc-a-answer.pdfbin112749 -> 113078 bytes
-rw-r--r--macros/latex/contrib/jnuexam/examfc-a-blank.pdfbin98857 -> 99214 bytes
-rw-r--r--macros/latex/contrib/jnuexam/examfc-b-answer.pdfbin112707 -> 112978 bytes
-rw-r--r--macros/latex/contrib/jnuexam/examfc-b-blank.pdfbin98922 -> 99233 bytes
-rw-r--r--macros/latex/contrib/jnuexam/examfe-a-answer.pdfbin69901 -> 69509 bytes
-rw-r--r--macros/latex/contrib/jnuexam/examfe-a-blank.pdfbin66139 -> 65749 bytes
-rw-r--r--macros/latex/contrib/jnuexam/examfe-b-answer.pdfbin69943 -> 69556 bytes
-rw-r--r--macros/latex/contrib/jnuexam/examfe-b-blank.pdfbin66167 -> 65775 bytes
-rw-r--r--macros/latex/contrib/jnuexam/jnuexam.cls8
-rw-r--r--macros/latex/contrib/jnuexam/jnuexam.pdfbin85122 -> 85441 bytes
-rw-r--r--macros/latex/contrib/jsonparse/README.md6
-rw-r--r--macros/latex/contrib/jsonparse/jason/jason.pdfbin214713 -> 3965 bytes
-rw-r--r--macros/latex/contrib/jsonparse/jason/jason.svg88
-rw-r--r--macros/latex/contrib/jsonparse/jason/jason.tex289
-rw-r--r--macros/latex/contrib/jsonparse/jsonparse-doc.pdfbin578489 -> 430804 bytes
-rw-r--r--macros/latex/contrib/jsonparse/jsonparse-doc.tex150
-rw-r--r--macros/latex/contrib/jsonparse/jsonparse.sty324
-rw-r--r--macros/latex/contrib/l3build/CHANGELOG.md12
-rw-r--r--macros/latex/contrib/l3build/README.md2
-rw-r--r--macros/latex/contrib/l3build/l3build-aux.lua16
-rw-r--r--macros/latex/contrib/l3build/l3build-check.lua9
-rw-r--r--macros/latex/contrib/l3build/l3build-help.lua2
-rw-r--r--macros/latex/contrib/l3build/l3build-typesetting.lua5
-rw-r--r--macros/latex/contrib/l3build/l3build.1154
-rw-r--r--macros/latex/contrib/l3build/l3build.dtx8
-rwxr-xr-xmacros/latex/contrib/l3build/l3build.lua2
-rw-r--r--macros/latex/contrib/l3build/l3build.pdfbin750889 -> 750224 bytes
-rw-r--r--macros/latex/contrib/l3packages/CHANGELOG.md11
-rw-r--r--macros/latex/contrib/l3packages/README.md2
-rw-r--r--macros/latex/contrib/l3packages/l3keys2e-demo.tex2
-rw-r--r--macros/latex/contrib/l3packages/l3keys2e.dtx4
-rw-r--r--macros/latex/contrib/l3packages/l3keys2e.pdfbin412717 -> 412900 bytes
-rw-r--r--macros/latex/contrib/l3packages/xfp.dtx4
-rw-r--r--macros/latex/contrib/l3packages/xfp.pdfbin332422 -> 332573 bytes
-rw-r--r--macros/latex/contrib/l3packages/xparse.dtx4
-rw-r--r--macros/latex/contrib/l3packages/xparse.pdfbin551698 -> 551837 bytes
-rw-r--r--macros/latex/contrib/l3packages/xtemplate.dtx7
-rw-r--r--macros/latex/contrib/l3packages/xtemplate.pdfbin448862 -> 449003 bytes
-rw-r--r--macros/latex/contrib/lastpage/README2
-rw-r--r--macros/latex/contrib/lastpage/lastpage-example.pdfbin130201 -> 130263 bytes
-rw-r--r--macros/latex/contrib/lastpage/lastpage.dtx179
-rw-r--r--macros/latex/contrib/lastpage/lastpage.pdfbin440278 -> 465434 bytes
-rw-r--r--macros/latex/contrib/lettrine/doc/lettrine-demo-arabic.pdfbin13371 -> 13371 bytes
-rw-r--r--macros/latex/contrib/lettrine/doc/lettrine-demo-de.pdfbin128252 -> 128252 bytes
-rw-r--r--macros/latex/contrib/lettrine/doc/lettrine-demo-fr.pdfbin168279 -> 168395 bytes
-rw-r--r--macros/latex/contrib/lettrine/doc/lettrine-demo-fr.tex8
-rw-r--r--macros/latex/contrib/lettrine/doc/lettrine-demo-lua.pdfbin73166 -> 73164 bytes
-rw-r--r--macros/latex/contrib/lettrine/doc/lettrine.pdfbin131712 -> 138232 bytes
-rw-r--r--macros/latex/contrib/lettrine/lettrine.dtx32
-rw-r--r--macros/latex/contrib/linearregression/README.txt41
-rw-r--r--macros/latex/contrib/linearregression/linearregression.dtx1235
-rw-r--r--macros/latex/contrib/linearregression/linearregression.pdfbin0 -> 391146 bytes
-rw-r--r--macros/latex/contrib/linearregression/linearregressionpkg.ins20
-rw-r--r--macros/latex/contrib/listings/listings-devel.pdfbin1451842 -> 1454841 bytes
-rw-r--r--macros/latex/contrib/listings/listings.dtx210
-rw-r--r--macros/latex/contrib/listings/listings.pdfbin1026586 -> 1028632 bytes
-rw-r--r--macros/latex/contrib/listings/lstdrvrs.dtx190
-rw-r--r--macros/latex/contrib/listings/lstdrvrs.pdfbin761854 -> 790575 bytes
-rw-r--r--macros/latex/contrib/litesolution/README.md2
-rw-r--r--macros/latex/contrib/litesolution/doc/figure/universe.pdfbin97170 -> 97170 bytes
-rw-r--r--macros/latex/contrib/litesolution/doc/figure/universe.tex2
-rw-r--r--macros/latex/contrib/litesolution/doc/litesolution.pdfbin276452 -> 637178 bytes
-rw-r--r--macros/latex/contrib/litesolution/doc/litesolution.tex124
-rw-r--r--macros/latex/contrib/litesolution/tex/litesolution.cls167
-rw-r--r--macros/latex/contrib/lni/CHANGELOG.md16
-rw-r--r--macros/latex/contrib/lni/README.md2
-rw-r--r--macros/latex/contrib/lni/lni-author-template.tex13
-rw-r--r--macros/latex/contrib/lni/lni.dtx108
-rw-r--r--macros/latex/contrib/lni/lni.pdfbin377695 -> 377655 bytes
-rw-r--r--macros/latex/contrib/lstaddons/README.txt (renamed from macros/latex/contrib/lstaddons/README)4
-rw-r--r--macros/latex/contrib/lstaddons/lstautogobble.dtx6
-rw-r--r--macros/latex/contrib/lstaddons/lstautogobble.pdfbin183234 -> 193066 bytes
-rw-r--r--macros/latex/contrib/lstaddons/lstlinebgrd.dtx17
-rw-r--r--macros/latex/contrib/lstaddons/lstlinebgrd.pdfbin213449 -> 224624 bytes
-rw-r--r--macros/latex/contrib/magicwatermark/README.md4
-rw-r--r--macros/latex/contrib/magicwatermark/doc/magicwatermark-cn.pdfbin0 -> 134688 bytes
-rw-r--r--macros/latex/contrib/magicwatermark/doc/magicwatermark-cn.tex373
-rw-r--r--macros/latex/contrib/magicwatermark/doc/magicwatermark-en.pdfbin0 -> 93645 bytes
-rw-r--r--macros/latex/contrib/magicwatermark/doc/magicwatermark-en.tex400
-rw-r--r--macros/latex/contrib/magicwatermark/magicwatermark-en.pdfbin83023 -> 0 bytes
-rw-r--r--macros/latex/contrib/magicwatermark/magicwatermark-en.tex212
-rw-r--r--macros/latex/contrib/magicwatermark/magicwatermark.dtx598
-rw-r--r--macros/latex/contrib/magicwatermark/magicwatermark.pdfbin137623 -> 0 bytes
-rw-r--r--macros/latex/contrib/magicwatermark/magicwatermark.sty453
-rw-r--r--macros/latex/contrib/mailing/CATALOG15
-rw-r--r--macros/latex/contrib/mailing/MANIFEST (renamed from macros/latex/contrib/mailing/manifest.txt)4
-rw-r--r--macros/latex/contrib/mailing/README14
-rw-r--r--macros/latex/contrib/mailing/mailing.dtx38
-rw-r--r--macros/latex/contrib/mailing/mailing.ins42
-rw-r--r--macros/latex/contrib/mailing/mailing.pdfbin66516 -> 148418 bytes
-rw-r--r--macros/latex/contrib/mathastext/README.md158
-rw-r--r--macros/latex/contrib/mathastext/mathastext.dtx5913
-rw-r--r--macros/latex/contrib/mathastext/mathastext.pdfbin661328 -> 745164 bytes
-rw-r--r--macros/latex/contrib/mercatormap/CHANGES.md176
-rw-r--r--macros/latex/contrib/mercatormap/README43
-rw-r--r--macros/latex/contrib/mercatormap/README.md50
-rw-r--r--macros/latex/contrib/mercatormap/mercatormap-example.tex4
-rw-r--r--macros/latex/contrib/mercatormap/mercatormap.bib41
-rw-r--r--macros/latex/contrib/mercatormap/mercatormap.doc.animations.tex538
-rw-r--r--macros/latex/contrib/mercatormap/mercatormap.doc.definition.tex38
-rw-r--r--macros/latex/contrib/mercatormap/mercatormap.doc.drawing.tex62
-rw-r--r--macros/latex/contrib/mercatormap/mercatormap.doc.examples.tex28
-rw-r--r--macros/latex/contrib/mercatormap/mercatormap.doc.intro.tex6
-rw-r--r--macros/latex/contrib/mercatormap/mercatormap.doc.limitations.tex10
-rw-r--r--macros/latex/contrib/mercatormap/mercatormap.doc.maptiles.tex309
-rw-r--r--macros/latex/contrib/mercatormap/mercatormap.doc.marker.tex58
-rw-r--r--macros/latex/contrib/mercatormap/mercatormap.doc.orthodromes.tex118
-rw-r--r--macros/latex/contrib/mercatormap/mercatormap.doc.scales.tex20
-rw-r--r--macros/latex/contrib/mercatormap/mercatormap.doc.sty13
-rw-r--r--macros/latex/contrib/mercatormap/mercatormap.doc.versionhistory.tex50
-rw-r--r--macros/latex/contrib/mercatormap/mercatormap.pdfbin24872307 -> 23145514 bytes
-rw-r--r--macros/latex/contrib/mercatormap/mercatormap.sty922
-rw-r--r--macros/latex/contrib/mercatormap/mercatormap.tex21
-rw-r--r--macros/latex/contrib/mercatormap/mercatorpy.def16
-rw-r--r--macros/latex/contrib/mercatormap/mercatorsupplier.def221
-rw-r--r--macros/latex/contrib/mismath/mismath.dtx707
-rw-r--r--macros/latex/contrib/mismath/mismath.pdfbin438746 -> 454706 bytes
-rw-r--r--macros/latex/contrib/mitthesis/MIT-Thesis.pdfbin486984 -> 484200 bytes
-rw-r--r--macros/latex/contrib/mitthesis/MIT-thesis-template/MIT-Thesis.tex119
-rw-r--r--macros/latex/contrib/mitthesis/MIT-thesis-template/acknowledgments.tex6
-rw-r--r--macros/latex/contrib/mitthesis/MIT-thesis-template/biography.tex5
-rw-r--r--macros/latex/contrib/mitthesis/MIT-thesis-template/chapter1.tex23
-rw-r--r--macros/latex/contrib/mitthesis/MIT-thesis-template/fontsets/mitthesis-newtx-sans-text.tex7
-rw-r--r--macros/latex/contrib/mitthesis/MIT-thesis-template/mydesign.tex6
-rw-r--r--macros/latex/contrib/mitthesis/README.md27
-rw-r--r--macros/latex/contrib/mitthesis/examples/cover_page_samples/No_cc_license.pdfbin116903 -> 116979 bytes
-rw-r--r--macros/latex/contrib/mitthesis/examples/cover_page_samples/One_author_one_degree.pdfbin118312 -> 118460 bytes
-rw-r--r--macros/latex/contrib/mitthesis/examples/cover_page_samples/One_author_one_degree_two_departments.pdfbin0 -> 118656 bytes
-rw-r--r--macros/latex/contrib/mitthesis/examples/cover_page_samples/One_author_two_degrees.pdfbin118803 -> 118959 bytes
-rw-r--r--macros/latex/contrib/mitthesis/examples/cover_page_samples/One_author_two_degrees_from_one_department.pdfbin118681 -> 118821 bytes
-rw-r--r--macros/latex/contrib/mitthesis/examples/cover_page_samples/Two_authors_one_degree.pdfbin121664 -> 121794 bytes
-rw-r--r--macros/latex/contrib/mitthesis/examples/cover_page_samples/Two_authors_two_degrees.pdfbin132021 -> 132181 bytes
-rw-r--r--macros/latex/contrib/mitthesis/examples/cover_page_samples/latex_sources/One_author_one_degree_two_departments.tex123
-rw-r--r--macros/latex/contrib/mitthesis/examples/cover_page_samples/latex_sources/One_author_two_degrees.tex3
-rw-r--r--macros/latex/contrib/mitthesis/examples/cover_page_samples/latex_sources/Two_authors_one_degree.tex13
-rw-r--r--macros/latex/contrib/mitthesis/examples/cover_page_samples/latex_sources/Two_authors_two_degrees.tex9
-rwxr-xr-xmacros/latex/contrib/mitthesis/examples/cover_page_samples/latex_sources/cover_compile.sh31
-rw-r--r--macros/latex/contrib/mitthesis/examples/font_samples/Defaultfonts.pdfbin486372 -> 480892 bytes
-rw-r--r--macros/latex/contrib/mitthesis/examples/font_samples/Fira_Newtxsf.pdfbin319692 -> 349865 bytes
-rw-r--r--macros/latex/contrib/mitthesis/examples/font_samples/Heros-Stix2.pdfbin151566 -> 152948 bytes
-rw-r--r--macros/latex/contrib/mitthesis/examples/font_samples/Libertine.pdfbin455381 -> 461124 bytes
-rw-r--r--macros/latex/contrib/mitthesis/examples/font_samples/Lucida.pdfbin171619 -> 173088 bytes
-rw-r--r--macros/latex/contrib/mitthesis/examples/font_samples/Newtx-sans-text.pdfbin269937 -> 278894 bytes
-rw-r--r--macros/latex/contrib/mitthesis/examples/font_samples/Newtx.pdfbin316317 -> 320084 bytes
-rw-r--r--macros/latex/contrib/mitthesis/examples/font_samples/Stix2.pdfbin159877 -> 162721 bytes
-rw-r--r--macros/latex/contrib/mitthesis/examples/font_samples/Termes-stix2.pdfbin161667 -> 164333 bytes
-rw-r--r--macros/latex/contrib/mitthesis/examples/font_samples/Termes.pdfbin158014 -> 160667 bytes
-rw-r--r--macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Defaultfonts.tex14
-rw-r--r--macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Fira_Newtxsf.tex15
-rw-r--r--macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Heros-Stix2.tex10
-rw-r--r--macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Libertine.tex14
-rw-r--r--macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Lucida.tex14
-rw-r--r--macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Newtx-sans-text.tex15
-rw-r--r--macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Newtx.tex14
-rw-r--r--macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/README_font_sample_sources.txt2
-rw-r--r--macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Stix2.tex14
-rw-r--r--macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Termes-stix2.tex14
-rw-r--r--macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Termes.tex14
-rwxr-xr-xmacros/latex/contrib/mitthesis/examples/font_samples/latex_sources/compile-font-samples.sh72
-rw-r--r--macros/latex/contrib/mitthesis/mitthesis-doc/mitthesis-doc.pdfbin94846 -> 108977 bytes
-rw-r--r--macros/latex/contrib/mitthesis/mitthesis-doc/mitthesis-doc.tex369
-rw-r--r--macros/latex/contrib/mitthesis/mitthesis.cls257
-rw-r--r--macros/latex/contrib/moderncv/CHANGELOG622
-rw-r--r--macros/latex/contrib/moderncv/KNOWN_BUGS27
-rw-r--r--macros/latex/contrib/moderncv/README.md43
-rw-r--r--macros/latex/contrib/moderncv/manual/moderncv_userguide.pdfbin320611 -> 123425 bytes
-rw-r--r--macros/latex/contrib/moderncv/manual/moderncv_userguide.tex1449
-rw-r--r--macros/latex/contrib/moderncv/moderncv.cls142
-rw-r--r--macros/latex/contrib/moderncv/moderncvbodyi.sty45
-rw-r--r--macros/latex/contrib/moderncv/moderncvbodyiii.sty50
-rw-r--r--macros/latex/contrib/moderncv/moderncvbodyiv.sty39
-rw-r--r--macros/latex/contrib/moderncv/moderncvbodyv.sty48
-rw-r--r--macros/latex/contrib/moderncv/moderncvbodyvi.sty203
-rw-r--r--macros/latex/contrib/moderncv/moderncvcollection.sty4
-rw-r--r--macros/latex/contrib/moderncv/moderncvcolorblack.sty12
-rw-r--r--macros/latex/contrib/moderncv/moderncvcolorblue.sty12
-rw-r--r--macros/latex/contrib/moderncv/moderncvcolorburgundy.sty12
-rw-r--r--macros/latex/contrib/moderncv/moderncvcolorcerulean.sty32
-rw-r--r--macros/latex/contrib/moderncv/moderncvcolorgreen.sty12
-rw-r--r--macros/latex/contrib/moderncv/moderncvcolorgrey.sty12
-rw-r--r--macros/latex/contrib/moderncv/moderncvcolororange.sty12
-rw-r--r--macros/latex/contrib/moderncv/moderncvcolorpurple.sty12
-rw-r--r--macros/latex/contrib/moderncv/moderncvcolorred.sty12
-rw-r--r--macros/latex/contrib/moderncv/moderncvcolors.tex35
-rw-r--r--macros/latex/contrib/moderncv/moderncvcompatibility.sty4
-rw-r--r--macros/latex/contrib/moderncv/moderncvdebugtools.sty8
-rw-r--r--macros/latex/contrib/moderncv/moderncvfooti.sty14
-rw-r--r--macros/latex/contrib/moderncv/moderncvheadi.sty54
-rw-r--r--macros/latex/contrib/moderncv/moderncvheadii.sty40
-rw-r--r--macros/latex/contrib/moderncv/moderncvheadiii.sty60
-rw-r--r--macros/latex/contrib/moderncv/moderncvheadiv.sty30
-rw-r--r--macros/latex/contrib/moderncv/moderncvheadv.sty57
-rw-r--r--macros/latex/contrib/moderncv/moderncvheadvi.sty29
-rw-r--r--macros/latex/contrib/moderncv/moderncvheadvii.sty226
-rw-r--r--macros/latex/contrib/moderncv/moderncviconsacademic.sty26
-rw-r--r--macros/latex/contrib/moderncv/moderncviconsawesome.sty91
-rw-r--r--macros/latex/contrib/moderncv/moderncviconsletters.sty17
-rw-r--r--macros/latex/contrib/moderncv/moderncviconsmarvosym.sty4
-rw-r--r--macros/latex/contrib/moderncv/moderncviconssymbols.sty4
-rw-r--r--macros/latex/contrib/moderncv/moderncviconstikz.sty29
-rw-r--r--macros/latex/contrib/moderncv/moderncvskillmatrix.sty408
-rw-r--r--macros/latex/contrib/moderncv/moderncvstylebanking.sty42
-rw-r--r--macros/latex/contrib/moderncv/moderncvstylecasual.sty44
-rw-r--r--macros/latex/contrib/moderncv/moderncvstyleclassic.sty42
-rw-r--r--macros/latex/contrib/moderncv/moderncvstylecontemporary.sty63
-rw-r--r--macros/latex/contrib/moderncv/moderncvstyleempty.sty29
-rw-r--r--macros/latex/contrib/moderncv/moderncvstylefancy.sty47
-rw-r--r--macros/latex/contrib/moderncv/moderncvstyleoldstyle.sty47
-rw-r--r--macros/latex/contrib/moderncv/moderncvverticaltimeline.sty79
-rw-r--r--macros/latex/contrib/moderncv/signature.pngbin0 -> 13746 bytes
-rw-r--r--macros/latex/contrib/moderncv/template.tex71
-rw-r--r--macros/latex/contrib/moderncv/tweaklist.sty2
-rw-r--r--macros/latex/contrib/moremath/MANIFEST.md26
-rw-r--r--macros/latex/contrib/moremath/README.md48
-rw-r--r--macros/latex/contrib/moremath/moremath-doc.pdfbin0 -> 994870 bytes
-rw-r--r--macros/latex/contrib/moremath/moremath.dtx5761
-rw-r--r--macros/latex/contrib/moremath/moremath.ins66
-rw-r--r--macros/latex/contrib/ms/README.md11
-rw-r--r--macros/latex/contrib/ms/count1to.ins112
-rw-r--r--macros/latex/contrib/ms/count1to.pdfbin545999 -> 0 bytes
-rw-r--r--macros/latex/contrib/ms/multitoc.asc12
-rw-r--r--macros/latex/contrib/ms/multitoc.bug11
-rw-r--r--macros/latex/contrib/ms/multitoc.ins116
-rw-r--r--macros/latex/contrib/ms/multitoc.pdfbin110362 -> 0 bytes
-rw-r--r--macros/latex/contrib/msu-thesis/README.md3
-rw-r--r--macros/latex/contrib/msu-thesis/docs/msu-thesis.tex20
-rw-r--r--macros/latex/contrib/msu-thesis/msu-thesis.cls26
-rw-r--r--macros/latex/contrib/msu-thesis/msu-thesis.pdfbin117097 -> 117738 bytes
-rw-r--r--macros/latex/contrib/msu-thesis/samples/MSU-thesis-chapterbib-testfile.pdfbin139419 -> 140074 bytes
-rw-r--r--macros/latex/contrib/msu-thesis/samples/MSU-thesis-chapterbib-testfile.tex2
-rw-r--r--macros/latex/contrib/msu-thesis/samples/MSU-thesis-template.tex23
-rw-r--r--macros/latex/contrib/msu-thesis/samples/MSU-thesis-testfile.pdfbin214979 -> 210105 bytes
-rw-r--r--macros/latex/contrib/msu-thesis/samples/MSU-thesis-testfile.tex8
-rw-r--r--macros/latex/contrib/multitoc/README.md44
-rw-r--r--macros/latex/contrib/multitoc/multitoc.dtx (renamed from macros/latex/contrib/ms/multitoc.dtx)165
-rw-r--r--macros/latex/contrib/multitoc/multitoc.ins47
-rw-r--r--macros/latex/contrib/multitoc/multitoc.pdfbin0 -> 285181 bytes
-rw-r--r--macros/latex/contrib/nicematrix/README.md2
-rw-r--r--macros/latex/contrib/nicematrix/nicematrix-code.dtx1429
-rw-r--r--macros/latex/contrib/nicematrix/nicematrix-code.pdf53124
-rw-r--r--macros/latex/contrib/nicematrix/nicematrix-french.pdf11258
-rw-r--r--macros/latex/contrib/nicematrix/nicematrix-french.tex434
-rw-r--r--macros/latex/contrib/nicematrix/nicematrix.pdf11700
-rw-r--r--macros/latex/contrib/nicematrix/nicematrix.tex709
-rw-r--r--macros/latex/contrib/oberdiek/README.md6
-rw-r--r--macros/latex/contrib/oberdiek/aliascnt.dtx4
-rw-r--r--macros/latex/contrib/oberdiek/aliascnt.pdfbin321667 -> 321663 bytes
-rw-r--r--macros/latex/contrib/oberdiek/bmpsize.dtx4
-rw-r--r--macros/latex/contrib/oberdiek/bmpsize.pdfbin525958 -> 525977 bytes
-rw-r--r--macros/latex/contrib/oberdiek/centernot.dtx2
-rw-r--r--macros/latex/contrib/oberdiek/centernot.pdfbin304565 -> 304565 bytes
-rw-r--r--macros/latex/contrib/oberdiek/chemarr.dtx2
-rw-r--r--macros/latex/contrib/oberdiek/chemarr.pdfbin318494 -> 318494 bytes
-rw-r--r--macros/latex/contrib/oberdiek/classlist.dtx4
-rw-r--r--macros/latex/contrib/oberdiek/classlist.pdfbin298087 -> 298081 bytes
-rw-r--r--macros/latex/contrib/oberdiek/colonequals.dtx2
-rw-r--r--macros/latex/contrib/oberdiek/colonequals.pdfbin311530 -> 311533 bytes
-rw-r--r--macros/latex/contrib/oberdiek/dvipscol.dtx2
-rw-r--r--macros/latex/contrib/oberdiek/dvipscol.pdfbin297233 -> 297233 bytes
-rw-r--r--macros/latex/contrib/oberdiek/engord.dtx2
-rw-r--r--macros/latex/contrib/oberdiek/engord.pdfbin347368 -> 347368 bytes
-rw-r--r--macros/latex/contrib/oberdiek/enparen.dtx10
-rw-r--r--macros/latex/contrib/oberdiek/enparen.pdfbin332193 -> 332199 bytes
-rw-r--r--macros/latex/contrib/oberdiek/eolgrab.dtx2
-rw-r--r--macros/latex/contrib/oberdiek/eolgrab.pdfbin346528 -> 346528 bytes
-rw-r--r--macros/latex/contrib/oberdiek/fibnum.dtx2
-rw-r--r--macros/latex/contrib/oberdiek/fibnum.pdfbin387246 -> 387246 bytes
-rw-r--r--macros/latex/contrib/oberdiek/flags.dtx2
-rw-r--r--macros/latex/contrib/oberdiek/flags.pdfbin311381 -> 311381 bytes
-rw-r--r--macros/latex/contrib/oberdiek/holtxdoc.dtx2
-rw-r--r--macros/latex/contrib/oberdiek/holtxdoc.pdfbin333733 -> 333733 bytes
-rw-r--r--macros/latex/contrib/oberdiek/hypbmsec.dtx8
-rw-r--r--macros/latex/contrib/oberdiek/hypbmsec.pdfbin317462 -> 317462 bytes
-rw-r--r--macros/latex/contrib/oberdiek/hypgotoe.dtx4
-rw-r--r--macros/latex/contrib/oberdiek/hypgotoe.pdfbin313697 -> 313697 bytes
-rw-r--r--macros/latex/contrib/oberdiek/hyphsubst.dtx2
-rw-r--r--macros/latex/contrib/oberdiek/hyphsubst.pdfbin328780 -> 328780 bytes
-rw-r--r--macros/latex/contrib/oberdiek/ifdraft.dtx2
-rw-r--r--macros/latex/contrib/oberdiek/ifdraft.pdfbin292642 -> 292642 bytes
-rw-r--r--macros/latex/contrib/oberdiek/iflang.dtx8
-rw-r--r--macros/latex/contrib/oberdiek/iflang.pdfbin344768 -> 344771 bytes
-rw-r--r--macros/latex/contrib/oberdiek/oberdiek-bundle.bib14
-rw-r--r--macros/latex/contrib/oberdiek/oberdiek.ins4
-rw-r--r--macros/latex/contrib/oberdiek/oberdiek.pdfbin277944 -> 272940 bytes
-rw-r--r--macros/latex/contrib/oberdiek/oberdiek.tex33
-rw-r--r--macros/latex/contrib/oberdiek/pdfcolparallel.dtx2
-rw-r--r--macros/latex/contrib/oberdiek/pdfcolparallel.pdfbin348838 -> 348838 bytes
-rw-r--r--macros/latex/contrib/oberdiek/pdfcolparcolumns.dtx2
-rw-r--r--macros/latex/contrib/oberdiek/pdfcolparcolumns.pdfbin336523 -> 336523 bytes
-rw-r--r--macros/latex/contrib/oberdiek/pdfcrypt.dtx2
-rw-r--r--macros/latex/contrib/oberdiek/pdfcrypt.pdfbin337837 -> 337837 bytes
-rw-r--r--macros/latex/contrib/oberdiek/protecteddef.dtx4
-rw-r--r--macros/latex/contrib/oberdiek/protecteddef.pdfbin336483 -> 336480 bytes
-rw-r--r--macros/latex/contrib/oberdiek/resizegather.dtx2
-rw-r--r--macros/latex/contrib/oberdiek/resizegather.pdfbin543911 -> 543911 bytes
-rw-r--r--macros/latex/contrib/oberdiek/rotchiffre.dtx4
-rw-r--r--macros/latex/contrib/oberdiek/rotchiffre.pdfbin345328 -> 345313 bytes
-rw-r--r--macros/latex/contrib/oberdiek/scrindex.dtx4
-rw-r--r--macros/latex/contrib/oberdiek/scrindex.pdfbin309276 -> 309292 bytes
-rw-r--r--macros/latex/contrib/oberdiek/setouterhbox.dtx6
-rw-r--r--macros/latex/contrib/oberdiek/setouterhbox.pdfbin358522 -> 358447 bytes
-rw-r--r--macros/latex/contrib/oberdiek/settobox.dtx4
-rw-r--r--macros/latex/contrib/oberdiek/settobox.pdfbin321376 -> 321375 bytes
-rw-r--r--macros/latex/contrib/oberdiek/stackrel.dtx2
-rw-r--r--macros/latex/contrib/oberdiek/stackrel.pdfbin310389 -> 310389 bytes
-rw-r--r--macros/latex/contrib/oberdiek/stampinclude.dtx6
-rw-r--r--macros/latex/contrib/oberdiek/stampinclude.pdfbin304745 -> 304749 bytes
-rw-r--r--macros/latex/contrib/oberdiek/tabularht.dtx6
-rw-r--r--macros/latex/contrib/oberdiek/tabularht.pdfbin359268 -> 359270 bytes
-rw-r--r--macros/latex/contrib/oberdiek/tabularkv.dtx2
-rw-r--r--macros/latex/contrib/oberdiek/tabularkv.pdfbin280523 -> 280523 bytes
-rw-r--r--macros/latex/contrib/oberdiek/thepdfnumber.dtx12
-rw-r--r--macros/latex/contrib/oberdiek/thepdfnumber.pdfbin377485 -> 377482 bytes
-rw-r--r--macros/latex/contrib/oberdiek/twoopt.dtx2
-rw-r--r--macros/latex/contrib/oberdiek/twoopt.pdfbin301484 -> 301484 bytes
-rw-r--r--macros/latex/contrib/orcidlink/README.md19
-rw-r--r--macros/latex/contrib/orcidlink/orcidlink.dtx91
-rw-r--r--macros/latex/contrib/orcidlink/orcidlink.ins4
-rw-r--r--macros/latex/contrib/orcidlink/orcidlink.pdfbin180848 -> 188242 bytes
-rw-r--r--macros/latex/contrib/overarrows/README.md4
-rw-r--r--macros/latex/contrib/overarrows/overarrows.dtx1142
-rw-r--r--macros/latex/contrib/overarrows/overarrows.pdfbin554421 -> 597885 bytes
-rw-r--r--macros/latex/contrib/pagelayout/README.md14
-rw-r--r--macros/latex/contrib/pagelayout/doc/pagelayout-manual.pdfbin75292 -> 75391 bytes
-rw-r--r--macros/latex/contrib/pagelayout/doc/pagelayout-manual.tex2
-rwxr-xr-xmacros/latex/contrib/pagelayout/scripts/pagelayoutapi2
-rwxr-xr-xmacros/latex/contrib/pagelayout/scripts/textestvis10
-rw-r--r--macros/latex/contrib/pagelayout/tex/pagelayout.cls10
-rw-r--r--macros/latex/contrib/parnotes/CHANGELOG-from-2016.md17
-rw-r--r--macros/latex/contrib/parnotes/README.md21
-rw-r--r--macros/latex/contrib/parnotes/changes.txt14
-rw-r--r--macros/latex/contrib/parnotes/parnotes.pdfbin57719 -> 57764 bytes
-rw-r--r--macros/latex/contrib/parnotes/parnotes.sty27
-rw-r--r--macros/latex/contrib/parnotes/parnotes.tex8
-rw-r--r--macros/latex/contrib/passopt/README.md18
-rw-r--r--macros/latex/contrib/passopt/passopt.pdfbin0 -> 52494 bytes
-rw-r--r--macros/latex/contrib/passopt/passopt.sty56
-rw-r--r--macros/latex/contrib/passopt/passopt.tex103
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/CHANGELOG.md29
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/README.md2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/color-ltx.sty2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/colorspace-patches-tmp-ltx.sty5
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.dtx62
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.pdfbin988498 -> 988844 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.dtx37
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.pdfbin710596 -> 711589 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.dtx6
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.pdfbin602231 -> 603025 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.dtx4
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.pdfbin515190 -> 516309 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.dtx6
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.pdfbin558195 -> 558991 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.dtx2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.pdfbin541346 -> 542144 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.dtx21
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.pdfbin542807 -> 544112 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.dtx2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.pdfbin537794 -> 538574 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.dtx2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.pdfbin593846 -> 594625 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.dtx2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.pdfbin516025 -> 516817 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield.dtx10
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield.pdfbin753165 -> 753951 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffile.dtx6
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffile.pdfbin567628 -> 568542 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.dtx26
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.pdfbin685171 -> 686108 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.dtx53
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.pdfbin847957 -> 850174 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdftools.dtx16
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdftools.pdfbin529823 -> 530920 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.dtx4
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.pdfbin427235 -> 428630 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/ltdocinit.dtx4
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/ltdocinit.pdfbin586990 -> 588321 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.dtx4
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.pdfbin434032 -> 435158 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.dtx6
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.pdfbin463888 -> 465204 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty2
-rw-r--r--macros/latex/contrib/pdfpages/pdfpages.dtx29
-rw-r--r--macros/latex/contrib/pdfpages/pdfpages.pdfbin302167 -> 302686 bytes
-rw-r--r--macros/latex/contrib/pdfx/pdfx.pdfbin2442175 -> 2674056 bytes
-rw-r--r--macros/latex/contrib/pdfx/src/pdfx.dtx1536
-rw-r--r--macros/latex/contrib/pdfx/src/pdfx.ins4
-rw-r--r--macros/latex/contrib/pdfx/src/pdfx.xmpdata33
-rw-r--r--macros/latex/contrib/photobook/Makefile22
-rw-r--r--macros/latex/contrib/photobook/README.md7
-rw-r--r--macros/latex/contrib/photobook/photobook.cls92
-rw-r--r--macros/latex/contrib/photobook/photobook.pdfbin145475 -> 146661 bytes
-rw-r--r--macros/latex/contrib/preview/preview.dtx14
-rw-r--r--macros/latex/contrib/preview/preview.pdfbin343466 -> 343806 bytes
-rw-r--r--macros/latex/contrib/profcollege/doc/profcollege-doc.pdf (renamed from macros/latex/contrib/profcollege/doc/ProfCollege-doc.pdf)bin10330568 -> 10823654 bytes
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCArbreCalcul.tex543
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCCalculsFractions.tex20
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCCartographie.tex60
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCEcrireunQCM.tex244
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCEngrenagesBase.tex26
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCFonctionAffine.tex18
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCInfixRPN.sty538
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCMulJap.tex1
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCMulPiecesPuzzle.tex10
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCNotionFonction.tex22
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCPatronPaves.tex501
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCPixelArt.tex8
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCProbaFrequence.tex185
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCQuestionsRelier.tex62
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCSolides.tex114
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCTortueBase.tex6
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCUrneProba.tex928
-rw-r--r--macros/latex/contrib/profcollege/latex/ProfCollege.sty50
-rw-r--r--macros/latex/contrib/profcollege/metapost/PfCMonde.mp75
-rw-r--r--macros/latex/contrib/profcollege/metapost/PfCObjets.mp53
-rw-r--r--macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdfbin1783164 -> 1793092 bytes
-rw-r--r--macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pyluatex.pdfbin74004 -> 80800 bytes
-rw-r--r--macros/latex/contrib/proflycee/tex/ProfLycee.sty5
-rw-r--r--macros/latex/contrib/proflycee/tex/proflycee-tools-analyse.tex11
-rw-r--r--macros/latex/contrib/proflycee/tex/proflycee-tools-piton.tex144
-rw-r--r--macros/latex/contrib/proflycee/tex/proflycee-tools-stats.tex63
-rw-r--r--macros/latex/contrib/prtec/PRTEC19-template.pdfbin355572 -> 0 bytes
-rw-r--r--macros/latex/contrib/prtec/PRTEC24-template.pdfbin0 -> 391935 bytes
-rw-r--r--macros/latex/contrib/prtec/PRTEC24-template.tex (renamed from macros/latex/contrib/prtec/PRTEC19-template.tex)63
-rw-r--r--macros/latex/contrib/prtec/README.md10
-rw-r--r--macros/latex/contrib/prtec/prtec.cls204
-rw-r--r--macros/latex/contrib/prtec/sample-figure.pdfbin171646 -> 149248 bytes
-rw-r--r--macros/latex/contrib/randexam/randexam-a-answer.pdfbin49886 -> 49579 bytes
-rw-r--r--macros/latex/contrib/randexam/randexam-a-blank.pdfbin41751 -> 41376 bytes
-rw-r--r--macros/latex/contrib/randexam/randexam-b-answer.pdfbin49948 -> 49565 bytes
-rw-r--r--macros/latex/contrib/randexam/randexam-b-blank.pdfbin41687 -> 41319 bytes
-rw-r--r--macros/latex/contrib/randexam/randexam.cls13
-rw-r--r--macros/latex/contrib/randexam/randexam.pdfbin63636 -> 63481 bytes
-rw-r--r--macros/latex/contrib/randexam/randexam.tex2
-rw-r--r--macros/latex/contrib/reledmac/doc-more/page-typesetting-columns.pdfbin40800 -> 40803 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/1-criticalendnotes.pdfbin201562 -> 201562 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/1-criticalnotes.pdfbin197818 -> 197818 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/1-sidenotes.pdfbin295212 -> 295212 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/1-tabular.pdfbin285559 -> 285559 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/1-verses-doublenumbering.pdfbin198959 -> 198959 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/1-verses.pdfbin198796 -> 198796 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/2-antilabe.pdfbin210970 -> 210970 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/2-cross_referencing.pdfbin198303 -> 198303 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/2-footnote_spacing.pdfbin201445 -> 201445 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/2-glossaries.pdfbin285501 -> 285501 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/2-indexing.pdfbin278069 -> 278069 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/2-lemma_disambigution.pdfbin276219 -> 276219 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/2-line_numbers_in_header.pdfbin292435 -> 292435 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/2-linespacing.pdfbin286624 -> 286624 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/2-manuscript-apparatus.pdfbin288122 -> 288122 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/2-notes-width.pdfbin204669 -> 204669 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/2-one_series_per_pstart.pdfbin212239 -> 212239 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/2-performances.pdfbin284580 -> 284580 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/2-reledmac-right-to-left.pdfbin36941 -> 36941 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/2-subdivision-number-in-header.pdfbin310601 -> 310601 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/2-titles_in_line_numbering_with_notes.pdfbin288795 -> 288795 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/2-titles_not_in_line_numbering.pdfbin199919 -> 199919 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/3-reledpar_columns_different_languages.pdfbin23444 -> 23442 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/3-reledpar_mwe.pdfbin175645 -> 175645 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/3-reledpar_pages_different_languages_lualatex.pdfbin32049 -> 32049 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/3-reledpar_same_page_number_in_both_side.pdfbin289211 -> 289211 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_advancedshifted-nomax.pdfbin200045 -> 200045 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_advancedshifted.pdfbin199281 -> 199281 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_default.pdfbin177110 -> 177110 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_nomax-shifted.pdfbin199684 -> 199684 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_nomax.pdfbin198615 -> 198615 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_nosync.pdfbin198673 -> 198673 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_shifted.pdfbin198798 -> 198798 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/4-reledpar_column_mix_with_not_column-continuous-numbering.pdfbin214375 -> 214375 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/4-reledpar_column_mix_with_not_column.pdfbin210491 -> 210491 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/4-reledpar_columns_alignment.pdfbin204973 -> 204973 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/4-reledpar_columns_titles_in_line_numbering_with_notes.pdfbin298425 -> 298425 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/4-reledpar_inside-outside-columns.pdfbin204015 -> 204015 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/4-reledpar_one_series_per_pstart.pdfbin225554 -> 225554 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/4-reledpar_pages_long_notes.pdfbin251039 -> 251039 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/4-reledpar_pages_notes_leftpage.pdfbin202382 -> 202382 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/4-reledpar_pages_paragraph_separator_between.pdfbin198565 -> 198565 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/4-reledpar_pages_titles_in_line_numbering_with_notes.pdfbin302779 -> 302779 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/4-reledpar_titles_not_in_line_numbering.pdfbin206948 -> 206948 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/4-reledpar_verse_text_between.pdfbin194201 -> 194201 bytes
-rw-r--r--macros/latex/contrib/reledmac/migration.pdfbin368433 -> 368426 bytes
-rw-r--r--macros/latex/contrib/reledmac/reledmac.dtx4
-rw-r--r--macros/latex/contrib/reledmac/reledmac.pdfbin2162033 -> 2161963 bytes
-rw-r--r--macros/latex/contrib/reledmac/reledpar.dtx49
-rw-r--r--macros/latex/contrib/reledmac/reledpar.pdfbin1041243 -> 1040784 bytes
-rw-r--r--macros/latex/contrib/reptheorem/reptheorem.dtx84
-rw-r--r--macros/latex/contrib/reptheorem/reptheorem.ins2
-rw-r--r--macros/latex/contrib/reptheorem/reptheorem.pdfbin271120 -> 274602 bytes
-rw-r--r--macros/latex/contrib/resolsysteme/doc/ResolSysteme-doc.pdfbin196228 -> 200069 bytes
-rw-r--r--macros/latex/contrib/resolsysteme/doc/ResolSysteme-doc.tex110
-rw-r--r--macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples-pyluatex.pdfbin126738 -> 126842 bytes
-rw-r--r--macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples-pyluatex.tex16
-rw-r--r--macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples.pdfbin158189 -> 160890 bytes
-rw-r--r--macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples.tex16
-rw-r--r--macros/latex/contrib/resolsysteme/tex/ResolSysteme.sty192
-rw-r--r--macros/latex/contrib/responsive/README4
-rw-r--r--macros/latex/contrib/responsive/responsive-doc.pdfbin77546 -> 75970 bytes
-rw-r--r--macros/latex/contrib/responsive/responsive-doc.tex5
-rw-r--r--macros/latex/contrib/responsive/responsive.sty12
-rw-r--r--macros/latex/contrib/rpgicons/README.md2
-rw-r--r--macros/latex/contrib/rpgicons/rpgicons-doc.pdfbin500755 -> 500161 bytes
-rw-r--r--macros/latex/contrib/rpgicons/rpgicons-doc.tex5
-rw-r--r--macros/latex/contrib/rpgicons/rpgicons-l3.sty40
-rw-r--r--macros/latex/contrib/rpgicons/rpgicons-pgf.sty2
-rw-r--r--macros/latex/contrib/rpgicons/rpgicons.sty4
-rw-r--r--macros/latex/contrib/rub-kunstgeschichte/README.md11
-rw-r--r--macros/latex/contrib/rub-kunstgeschichte/rub-kunstgeschichte-example.pdfbin0 -> 36684 bytes
-rw-r--r--macros/latex/contrib/rub-kunstgeschichte/rub-kunstgeschichte.dtx192
-rw-r--r--macros/latex/contrib/rub-kunstgeschichte/rub-kunstgeschichte.ins70
-rw-r--r--macros/latex/contrib/rub-kunstgeschichte/rub-kunstgeschichte.pdfbin0 -> 232043 bytes
-rw-r--r--macros/latex/contrib/scontents/README.md6
-rw-r--r--macros/latex/contrib/scontents/scontents.dtx638
-rw-r--r--macros/latex/contrib/scontents/scontents.ins8
-rw-r--r--macros/latex/contrib/scontents/scontents.pdfbin385642 -> 429100 bytes
-rw-r--r--macros/latex/contrib/se2thesis/CHANGELOG.md73
-rw-r--r--macros/latex/contrib/se2thesis/se2colors.dtx2
-rw-r--r--macros/latex/contrib/se2thesis/se2fonts.dtx2
-rw-r--r--macros/latex/contrib/se2thesis/se2packages.dtx36
-rw-r--r--macros/latex/contrib/se2thesis/se2thesis-master-thesis-example.pdfbin232642 -> 232002 bytes
-rw-r--r--macros/latex/contrib/se2thesis/se2thesis-master-thesis-example.tex4
-rw-r--r--macros/latex/contrib/se2thesis/se2thesis.dtx130
-rw-r--r--macros/latex/contrib/se2thesis/se2thesis.pdfbin357376 -> 366813 bytes
-rw-r--r--macros/latex/contrib/sepfootnotes/README7
-rw-r--r--macros/latex/contrib/sepfootnotes/sepfootnotes.pdfbin218406 -> 223965 bytes
-rw-r--r--macros/latex/contrib/sepfootnotes/sepfootnotes.sty132
-rw-r--r--macros/latex/contrib/sepfootnotes/sepfootnotes.tex16
-rw-r--r--macros/latex/contrib/sillypage/sillypage-example.pdfbin104340 -> 104340 bytes
-rw-r--r--macros/latex/contrib/sillypage/sillypage.dtx34
-rw-r--r--macros/latex/contrib/sillypage/sillypage.pdfbin220111 -> 222678 bytes
-rw-r--r--macros/latex/contrib/siunitx/CHANGELOG.md36
-rw-r--r--macros/latex/contrib/siunitx/siunitx-angle.dtx130
-rw-r--r--macros/latex/contrib/siunitx/siunitx-code.pdfbin646201 -> 645515 bytes
-rw-r--r--macros/latex/contrib/siunitx/siunitx-complex.dtx45
-rw-r--r--macros/latex/contrib/siunitx/siunitx-number.dtx8
-rw-r--r--macros/latex/contrib/siunitx/siunitx-table.dtx53
-rw-r--r--macros/latex/contrib/siunitx/siunitx.dtx5
-rw-r--r--macros/latex/contrib/siunitx/siunitx.pdfbin703731 -> 703916 bytes
-rw-r--r--macros/latex/contrib/siunitx/siunitx.tex13
-rw-r--r--macros/latex/contrib/sjtutex/sjtutex.dtx31
-rw-r--r--macros/latex/contrib/sjtutex/sjtutex.pdfbin723329 -> 724629 bytes
-rw-r--r--macros/latex/contrib/spbmark/README.md10
-rw-r--r--macros/latex/contrib/spbmark/spbmark.pdfbin91750 -> 92984 bytes
-rw-r--r--macros/latex/contrib/spbmark/spbmark.sty55
-rw-r--r--macros/latex/contrib/spbmark/spbmark.tex127
-rw-r--r--macros/latex/contrib/spelatex/Example/example-spel/1.0.0.0.0-1.oggbin0 -> 39213 bytes
-rw-r--r--macros/latex/contrib/spelatex/Example/example-spel/1.0.0.0.0-2.oggbin0 -> 9865 bytes
-rw-r--r--macros/latex/contrib/spelatex/Example/example-spel/1.0.0.0.0-3.oggbin0 -> 12011 bytes
-rw-r--r--macros/latex/contrib/spelatex/Example/example-spel/1.0.0.0.0.m3u6
-rw-r--r--macros/latex/contrib/spelatex/Example/example-spel/1.0.0.0.0.oggbin0 -> 14175 bytes
-rw-r--r--macros/latex/contrib/spelatex/Example/example-spel/2.0.0.0.0-1.oggbin0 -> 33072 bytes
-rw-r--r--macros/latex/contrib/spelatex/Example/example-spel/2.0.0.0.0-2.oggbin0 -> 58385 bytes
-rw-r--r--macros/latex/contrib/spelatex/Example/example-spel/2.0.0.0.0-3.oggbin0 -> 36458 bytes
-rw-r--r--macros/latex/contrib/spelatex/Example/example-spel/2.0.0.0.0.m3u6
-rw-r--r--macros/latex/contrib/spelatex/Example/example-spel/2.0.0.0.0.oggbin0 -> 15489 bytes
-rw-r--r--macros/latex/contrib/spelatex/Example/example-spel/3.0.0.0.0-1.oggbin0 -> 92122 bytes
-rw-r--r--macros/latex/contrib/spelatex/Example/example-spel/3.0.0.0.0-2.oggbin0 -> 45754 bytes
-rw-r--r--macros/latex/contrib/spelatex/Example/example-spel/3.0.0.0.0.m3u5
-rw-r--r--macros/latex/contrib/spelatex/Example/example-spel/3.0.0.0.0.oggbin0 -> 16077 bytes
-rw-r--r--macros/latex/contrib/spelatex/Example/example-spel/4.0.0.0.0-1.oggbin0 -> 38925 bytes
-rw-r--r--macros/latex/contrib/spelatex/Example/example-spel/4.0.0.0.0-2.oggbin0 -> 53387 bytes
-rw-r--r--macros/latex/contrib/spelatex/Example/example-spel/4.0.0.0.0.m3u5
-rw-r--r--macros/latex/contrib/spelatex/Example/example-spel/4.0.0.0.0.oggbin0 -> 13645 bytes
-rw-r--r--macros/latex/contrib/spelatex/Example/example-spel/5.0.0.0.0.m3u8
-rw-r--r--macros/latex/contrib/spelatex/Example/example-spel/5.0.0.0.0.oggbin0 -> 15843 bytes
-rw-r--r--macros/latex/contrib/spelatex/Example/example-spel/5.1.0.0.0-1.oggbin0 -> 33768 bytes
-rw-r--r--macros/latex/contrib/spelatex/Example/example-spel/5.1.0.0.0.m3u4
-rw-r--r--macros/latex/contrib/spelatex/Example/example-spel/5.1.0.0.0.oggbin0 -> 18610 bytes
-rw-r--r--macros/latex/contrib/spelatex/Example/example-spel/5.2.0.0.0-1.oggbin0 -> 41577 bytes
-rw-r--r--macros/latex/contrib/spelatex/Example/example-spel/5.2.0.0.0-star-1.oggbin0 -> 8290 bytes
-rw-r--r--macros/latex/contrib/spelatex/Example/example-spel/5.2.0.0.0.m3u5
-rw-r--r--macros/latex/contrib/spelatex/Example/example-spel/5.2.0.0.0.oggbin0 -> 19424 bytes
-rw-r--r--macros/latex/contrib/spelatex/Example/example-spel/author.oggbin0 -> 16874 bytes
-rw-r--r--macros/latex/contrib/spelatex/Example/example-spel/date.oggbin0 -> 13533 bytes
-rw-r--r--macros/latex/contrib/spelatex/Example/example-spel/title.oggbin0 -> 14301 bytes
-rw-r--r--macros/latex/contrib/spelatex/Example/example.pdfbin0 -> 84377 bytes
-rw-r--r--macros/latex/contrib/spelatex/Example/example.tex112
-rw-r--r--macros/latex/contrib/spelatex/LICENSE9
-rw-r--r--macros/latex/contrib/spelatex/README61
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/1.0.0.0.0.m3u31
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/1.0.0.0.0.oggbin0 -> 11987 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/1.1.0.0.0-1.oggbin0 -> 110781 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/1.1.0.0.0-2.oggbin0 -> 119565 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/1.1.0.0.0-3.oggbin0 -> 133965 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/1.1.0.0.0.m3u6
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/1.1.0.0.0.oggbin0 -> 16461 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/1.2.0.0.0.m3u13
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/1.2.0.0.0.oggbin0 -> 17181 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/1.2.1.0.0-1.oggbin0 -> 269613 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/1.2.1.0.0-2.oggbin0 -> 94077 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/1.2.1.0.0-3.oggbin0 -> 121293 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/1.2.1.0.0.m3u6
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/1.2.1.0.0.oggbin0 -> 20349 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/1.2.2.0.0-1.oggbin0 -> 107613 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/1.2.2.0.0-2.oggbin0 -> 55773 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/1.2.2.0.0-3.oggbin0 -> 24237 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/1.2.2.0.0-4.oggbin0 -> 25965 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/1.2.2.0.0-5.oggbin0 -> 19341 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/1.2.2.0.0.m3u8
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/1.2.2.0.0.oggbin0 -> 21069 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0-1.oggbin0 -> 54333 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0-10.oggbin0 -> 156141 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0-11.oggbin0 -> 123021 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0-12.oggbin0 -> 103869 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0-2.oggbin0 -> 201069 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0-3.oggbin0 -> 83277 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0-4.oggbin0 -> 69597 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0-5.oggbin0 -> 44829 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0-6.oggbin0 -> 75645 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0-7.oggbin0 -> 181773 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0-8.oggbin0 -> 127485 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0-9.oggbin0 -> 88173 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0.m3u15
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0.oggbin0 -> 19341 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.0.0.0.0.m3u59
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.0.0.0.0.oggbin0 -> 14010 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.1.0.0.0-1.oggbin0 -> 34173 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.1.0.0.0-2.oggbin0 -> 13034 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.1.0.0.0-3.oggbin0 -> 12487 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.1.0.0.0-4.oggbin0 -> 40506 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.1.0.0.0-5.oggbin0 -> 49604 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.1.0.0.0-6.oggbin0 -> 86733 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.1.0.0.0.m3u10
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.1.0.0.0.oggbin0 -> 17542 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.2.0.0.0.m3u39
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.2.0.0.0.oggbin0 -> 19955 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.2.1.0.0-1.oggbin0 -> 39501 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.2.1.0.0-2.oggbin0 -> 20925 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.2.1.0.0-3.oggbin0 -> 21933 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.2.1.0.0-4.oggbin0 -> 28269 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.2.1.0.0.m3u7
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.2.1.0.0.oggbin0 -> 22720 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0-1.oggbin0 -> 62109 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0-10.oggbin0 -> 61965 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0-11.oggbin0 -> 52461 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0-12.oggbin0 -> 166509 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0-2.oggbin0 -> 61764 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0-3.oggbin0 -> 130653 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0-4.oggbin0 -> 112797 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0-5.oggbin0 -> 104013 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0-6.oggbin0 -> 118845 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0-7.oggbin0 -> 440685 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0-8.oggbin0 -> 97101 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0-9.oggbin0 -> 30717 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0.m3u16
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0.oggbin0 -> 19907 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.2.3.0.0-1.oggbin0 -> 153261 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.2.3.0.0-2.oggbin0 -> 186237 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.2.3.0.0.m3u5
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.2.3.0.0.oggbin0 -> 22940 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.2.4.0.0-1.oggbin0 -> 251757 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.2.4.0.0-2.oggbin0 -> 29567 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.2.4.0.0-3.oggbin0 -> 26498 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.2.4.0.0-4.oggbin0 -> 18524 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.2.4.0.0-5.oggbin0 -> 140974 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.2.4.0.0-6.oggbin0 -> 47150 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.2.4.0.0.m3u9
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.2.4.0.0.oggbin0 -> 22754 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.2.5.0.0-1.oggbin0 -> 177309 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.2.5.0.0-2.oggbin0 -> 80829 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.2.5.0.0.m3u5
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.2.5.0.0.oggbin0 -> 19849 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.2.6.0.0-1.oggbin0 -> 81405 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.2.6.0.0-2.oggbin0 -> 183645 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.2.6.0.0-3.oggbin0 -> 141597 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.2.6.0.0.m3u6
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.2.6.0.0.oggbin0 -> 23853 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.3.0.0.0-1.oggbin0 -> 91773 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.3.0.0.0-2.oggbin0 -> 97677 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.3.0.0.0-3.oggbin0 -> 36303 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.3.0.0.0-4.oggbin0 -> 30646 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.3.0.0.0.m3u7
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.3.0.0.0.oggbin0 -> 19292 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.4.0.0.0-1.oggbin0 -> 41229 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.4.0.0.0-2.oggbin0 -> 55341 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.4.0.0.0-3.oggbin0 -> 300141 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.4.0.0.0-4.oggbin0 -> 64604 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.4.0.0.0-5.oggbin0 -> 37835 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.4.0.0.0.m3u8
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/2.4.0.0.0.oggbin0 -> 17518 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/3.0.0.0.0.m3u26
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/3.0.0.0.0.oggbin0 -> 14092 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/3.1.0.0.0-1.oggbin0 -> 29997 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/3.1.0.0.0-2.oggbin0 -> 183501 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/3.1.0.0.0-3.oggbin0 -> 106029 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/3.1.0.0.0.m3u6
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/3.1.0.0.0.oggbin0 -> 21933 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/3.2.0.0.0.m3u16
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/3.2.0.0.0.oggbin0 -> 25383 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/3.2.1.0.0-1.oggbin0 -> 85124 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/3.2.1.0.0-2.oggbin0 -> 46989 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/3.2.1.0.0-3.oggbin0 -> 31449 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/3.2.1.0.0-4.oggbin0 -> 64989 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/3.2.1.0.0-5.oggbin0 -> 33266 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/3.2.1.0.0.m3u8
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/3.2.1.0.0.oggbin0 -> 19502 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/3.2.2.0.0-1.oggbin0 -> 142605 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/3.2.2.0.0-2.oggbin0 -> 74205 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/3.2.2.0.0-3.oggbin0 -> 94797 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/3.2.2.0.0-4.oggbin0 -> 81837 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/3.2.2.0.0-5.oggbin0 -> 74925 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/3.2.2.0.0-6.oggbin0 -> 145485 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/3.2.2.0.0.m3u9
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/3.2.2.0.0.oggbin0 -> 21918 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/3.3.0.0.0-1.oggbin0 -> 139725 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/3.3.0.0.0.m3u4
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/3.3.0.0.0.oggbin0 -> 18675 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/3.4.0.0.0-1.oggbin0 -> 81405 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/3.4.0.0.0-2.oggbin0 -> 130365 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/3.4.0.0.0.m3u5
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/3.4.0.0.0.oggbin0 -> 18399 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.0.0.0.0.m3u53
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.0.0.0.0.oggbin0 -> 13016 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.0.0.0-1.oggbin0 -> 52029 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.0.0.0-2.oggbin0 -> 20882 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.0.0.0-3.oggbin0 -> 15532 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.0.0.0-4.oggbin0 -> 13888 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.0.0.0-5.oggbin0 -> 15770 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.0.0.0-6.oggbin0 -> 28759 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.0.0.0-7.oggbin0 -> 29062 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.0.0.0-8.oggbin0 -> 84905 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.0.0.0.m3u46
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.0.0.0.oggbin0 -> 22299 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.1.0.0-1.oggbin0 -> 91917 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.1.0.0-2.oggbin0 -> 59984 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.1.0.0-3.oggbin0 -> 63693 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.1.0.0-4.oggbin0 -> 97379 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.1.0.0.m3u7
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.1.0.0.oggbin0 -> 24669 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.2.0.0-1.oggbin0 -> 104589 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.2.0.0-2.oggbin0 -> 39789 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.2.0.0.m3u5
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.2.0.0.oggbin0 -> 25389 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.3.0.0-1.oggbin0 -> 81166 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.3.0.0-2.oggbin0 -> 60545 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.3.0.0-3.oggbin0 -> 39789 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.3.0.0-4.oggbin0 -> 92093 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.3.0.0-5.oggbin0 -> 39789 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.3.0.0.m3u8
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.3.0.0.oggbin0 -> 27981 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.4.0.0-1.oggbin0 -> 99435 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.4.0.0-2.oggbin0 -> 53793 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.4.0.0-3.oggbin0 -> 56626 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.4.0.0-4.oggbin0 -> 94077 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.4.0.0.m3u7
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.4.0.0.oggbin0 -> 27772 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.5.0.0-1.oggbin0 -> 100656 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.5.0.0-2.oggbin0 -> 47203 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.5.0.0-3.oggbin0 -> 71665 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.5.0.0-4.oggbin0 -> 41316 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.5.0.0.m3u7
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.5.0.0.oggbin0 -> 30051 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.6.0.0-1.oggbin0 -> 71887 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.6.0.0-2.oggbin0 -> 31328 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.6.0.0-3.oggbin0 -> 44852 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.6.0.0-4.oggbin0 -> 50015 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.6.0.0-5.oggbin0 -> 9840 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.6.0.0.m3u8
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.6.0.0.oggbin0 -> 45999 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.7.0.0-1.oggbin0 -> 31747 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.7.0.0-2.oggbin0 -> 60813 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.7.0.0-3.oggbin0 -> 33885 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.7.0.0-4.oggbin0 -> 52605 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.7.0.0.m3u7
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.1.7.0.0.oggbin0 -> 22597 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.2.0.0.0-1.oggbin0 -> 46989 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.2.0.0.0-2.oggbin0 -> 58653 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.2.0.0.0-3.oggbin0 -> 46125 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.2.0.0.0-4.oggbin0 -> 74882 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.2.0.0.0-5.oggbin0 -> 84137 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.2.0.0.0.m3u8
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/4.2.0.0.0.oggbin0 -> 18821 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/5.0.0.0.0-1.oggbin0 -> 43898 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/5.0.0.0.0.m3u4
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/5.0.0.0.0.oggbin0 -> 13841 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.0.0.0.0-1.oggbin0 -> 102717 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.0.0.0.0.m3u48
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.0.0.0.0.oggbin0 -> 12260 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.1.0.0.0-1.oggbin0 -> 75917 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.1.0.0.0.m3u4
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.1.0.0.0.oggbin0 -> 16938 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.2.0.0.0.m3u7
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.2.0.0.0.oggbin0 -> 17935 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.2.1.0.0-1.oggbin0 -> 37825 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.2.1.0.0.m3u4
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.2.1.0.0.oggbin0 -> 25563 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.2.2.0.0-1.oggbin0 -> 63840 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.2.2.0.0.m3u4
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.2.2.0.0.oggbin0 -> 28873 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.3.0.0.0.m3u14
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.3.0.0.0.oggbin0 -> 20614 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.3.1.0.0-1.oggbin0 -> 58385 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.3.1.0.0.m3u4
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.3.1.0.0.oggbin0 -> 22293 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.3.2.0.0-1.oggbin0 -> 12478 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.3.2.0.0-2.oggbin0 -> 47027 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.3.2.0.0-3.oggbin0 -> 10589 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.3.2.0.0-4.oggbin0 -> 31558 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.3.2.0.0-5.oggbin0 -> 10566 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.3.2.0.0-6.oggbin0 -> 23508 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.3.2.0.0.m3u9
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.3.2.0.0.oggbin0 -> 24466 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.3.3.0.0-1.oggbin0 -> 45532 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.3.3.0.0.m3u4
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.3.3.0.0.oggbin0 -> 25778 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.4.0.0.0-1.oggbin0 -> 32724 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.4.0.0.0-2.oggbin0 -> 64241 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.4.0.0.0.m3u5
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.4.0.0.0.oggbin0 -> 16275 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.5.0.0.0-1.oggbin0 -> 11565 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.5.0.0.0-2.oggbin0 -> 115389 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.5.0.0.0.m3u5
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.5.0.0.0.oggbin0 -> 18681 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.6.0.0.0.m3u9
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.6.0.0.0.oggbin0 -> 21352 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.6.1.0.0-1.oggbin0 -> 24864 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.6.1.0.0-2.oggbin0 -> 84898 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.6.1.0.0-3.oggbin0 -> 15991 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.6.1.0.0.m3u6
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.6.1.0.0.oggbin0 -> 20878 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.6.2.0.0-1.oggbin0 -> 63161 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.6.2.0.0.m3u4
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.6.2.0.0.oggbin0 -> 18744 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0-1.oggbin0 -> 92122 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0-10.oggbin0 -> 106855 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0-11.oggbin0 -> 61395 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0-2.oggbin0 -> 45754 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0-3.oggbin0 -> 37065 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0-4.oggbin0 -> 44904 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0-5.oggbin0 -> 55034 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0-6.oggbin0 -> 94428 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0-7.oggbin0 -> 27027 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0-8.oggbin0 -> 24810 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0-9.oggbin0 -> 22771 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0.m3u14
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0.oggbin0 -> 20436 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/7.0.0.0.0-1.oggbin0 -> 62253 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/7.0.0.0.0.m3u27
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/7.0.0.0.0.oggbin0 -> 15114 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/7.1.0.0.0.m3u3
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/7.1.0.0.0.oggbin0 -> 20646 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/7.10.0.0.0.m3u7
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/7.10.0.0.0.oggbin0 -> 26219 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/7.10.1.0.0.m3u3
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/7.10.1.0.0.oggbin0 -> 27910 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/7.10.2.0.0.m3u3
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/7.10.2.0.0.oggbin0 -> 26519 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/7.10.3.0.0.m3u3
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/7.10.3.0.0.oggbin0 -> 28484 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/7.10.4.0.0.m3u3
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/7.10.4.0.0.oggbin0 -> 28780 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/7.11.0.0.0.m3u3
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/7.11.0.0.0.oggbin0 -> 22365 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/7.2.0.0.0.m3u3
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/7.2.0.0.0.oggbin0 -> 19694 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/7.3.0.0.0.m3u3
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/7.3.0.0.0.oggbin0 -> 16575 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/7.4.0.0.0.m3u3
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/7.4.0.0.0.oggbin0 -> 17551 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/7.5.0.0.0.m3u3
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/7.5.0.0.0.oggbin0 -> 19804 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/7.6.0.0.0.m3u3
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/7.6.0.0.0.oggbin0 -> 22080 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/7.7.0.0.0.m3u3
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/7.7.0.0.0.oggbin0 -> 21182 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/7.8.0.0.0.m3u9
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/7.8.0.0.0.oggbin0 -> 25282 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/7.8.1.0.0.m3u3
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/7.8.1.0.0.oggbin0 -> 21077 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/7.8.2.0.0.m3u3
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/7.8.2.0.0.oggbin0 -> 20091 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/7.8.3.0.0.m3u3
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/7.8.3.0.0.oggbin0 -> 22221 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/7.8.4.0.0.m3u3
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/7.8.4.0.0.oggbin0 -> 21213 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/7.8.5.0.0.m3u3
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/7.8.5.0.0.oggbin0 -> 18621 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/7.8.6.0.0.m3u3
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/7.8.6.0.0.oggbin0 -> 27261 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/7.9.0.0.0.m3u5
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/7.9.0.0.0.oggbin0 -> 26916 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/7.9.1.0.0.m3u3
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/7.9.1.0.0.oggbin0 -> 30677 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/7.9.2.0.0.m3u3
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/7.9.2.0.0.oggbin0 -> 23949 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/8.0.0.0.0-1.oggbin0 -> 22653 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/8.0.0.0.0-2.oggbin0 -> 46413 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/8.0.0.0.0-3.oggbin0 -> 16749 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/8.0.0.0.0-star-1.oggbin0 -> 6381 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/8.0.0.0.0-star-2.oggbin0 -> 7101 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/8.0.0.0.0-star-3.oggbin0 -> 5517 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/8.0.0.0.0.m3u9
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/8.0.0.0.0.oggbin0 -> 10701 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/author.oggbin0 -> 29582 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/date.oggbin0 -> 26829 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/footnote-1.oggbin0 -> 53151 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/footnote-2.oggbin0 -> 27434 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex-spel/title.oggbin0 -> 22509 bytes
-rw-r--r--macros/latex/contrib/spelatex/spelatex.dtx2456
-rw-r--r--macros/latex/contrib/spelatex/spelatex.ins (renamed from macros/latex/contrib/isosafety/isosafety.ins)46
-rw-r--r--macros/latex/contrib/spelatex/spelatex.pdfbin0 -> 332348 bytes
-rw-r--r--macros/latex/contrib/standardsectioning/LICENSE.md19
-rw-r--r--macros/latex/contrib/standardsectioning/README.md174
-rw-r--r--macros/latex/contrib/standardsectioning/standardsectioning.dtx929
-rw-r--r--macros/latex/contrib/standardsectioning/standardsectioning.pdfbin0 -> 231166 bytes
-rw-r--r--macros/latex/contrib/subeqn/CATALOG17
-rw-r--r--macros/latex/contrib/subeqn/MANIFEST19
-rw-r--r--macros/latex/contrib/subeqn/README14
-rw-r--r--macros/latex/contrib/subeqn/manifest.txt16
-rw-r--r--macros/latex/contrib/subeqn/subeqn-sample.pdfbin0 -> 80142 bytes
-rw-r--r--macros/latex/contrib/subeqn/subeqn.dtx57
-rw-r--r--macros/latex/contrib/subeqn/subeqn.ins49
-rw-r--r--macros/latex/contrib/subeqn/subeqn.pdfbin91698 -> 216768 bytes
-rw-r--r--macros/latex/contrib/subeqnarray/CATALOG17
-rw-r--r--macros/latex/contrib/subeqnarray/MANIFEST (renamed from macros/latex/contrib/subeqnarray/manifest.txt)8
-rw-r--r--macros/latex/contrib/subeqnarray/README16
-rw-r--r--macros/latex/contrib/subeqnarray/subeqnarray-sample.pdfbin0 -> 68356 bytes
-rw-r--r--macros/latex/contrib/subeqnarray/subeqnarray.dtx85
-rw-r--r--macros/latex/contrib/subeqnarray/subeqnarray.ins56
-rw-r--r--macros/latex/contrib/subeqnarray/subeqnarray.pdfbin126532 -> 212013 bytes
-rw-r--r--macros/latex/contrib/supertabular/CATALOG6
-rw-r--r--macros/latex/contrib/supertabular/MANIFEST6
-rw-r--r--macros/latex/contrib/supertabular/README4
-rw-r--r--macros/latex/contrib/supertabular/supertabular.bug (renamed from macros/latex/contrib/supertabular/ChangeLog)69
-rw-r--r--macros/latex/contrib/supertabular/supertabular.dtx323
-rw-r--r--macros/latex/contrib/supertabular/supertabular.pdfbin254349 -> 291267 bytes
-rw-r--r--macros/latex/contrib/synthslant/LICENSE6
-rw-r--r--macros/latex/contrib/synthslant/Makefile133
-rw-r--r--macros/latex/contrib/synthslant/README.md3
-rw-r--r--macros/latex/contrib/synthslant/RELEASE-HOWTO.md51
-rw-r--r--macros/latex/contrib/synthslant/docs/index.md4
-rw-r--r--macros/latex/contrib/synthslant/docs/synthslant-gauge.pdfbin181403 -> 181403 bytes
-rw-r--r--macros/latex/contrib/synthslant/docs/synthslant.pdfbin796407 -> 840480 bytes
-rw-r--r--macros/latex/contrib/synthslant/synthslant.dtx752
-rw-r--r--macros/latex/contrib/synthslant/synthslant.ins21
-rw-r--r--macros/latex/contrib/tablvar/README.md6
-rw-r--r--macros/latex/contrib/tablvar/tablvar.dtx583
-rw-r--r--macros/latex/contrib/tablvar/tablvar.ins6
-rw-r--r--macros/latex/contrib/tablvar/tablvar.pdfbin271901 -> 351117 bytes
-rw-r--r--macros/latex/contrib/tabulary/README.txt (renamed from macros/latex/contrib/tabulary/README)0
-rw-r--r--macros/latex/contrib/tabulary/tabulary-v010.sty455
-rw-r--r--macros/latex/contrib/tabulary/tabulary.dtx127
-rw-r--r--macros/latex/contrib/tabulary/tabulary.pdfbin256360 -> 327251 bytes
-rw-r--r--macros/latex/contrib/tagpdf/README.md4
-rw-r--r--macros/latex/contrib/tagpdf/ex-AF-file.pdf56
-rw-r--r--macros/latex/contrib/tagpdf/ex-alt-actualtext.pdfbin34295 -> 34295 bytes
-rw-r--r--macros/latex/contrib/tagpdf/ex-attribute.pdf14
-rw-r--r--macros/latex/contrib/tagpdf/ex-formula-problem.pdf14
-rw-r--r--macros/latex/contrib/tagpdf/ex-list.pdf156
-rw-r--r--macros/latex/contrib/tagpdf/ex-mc-manual-para-split-obsolete.pdf50
-rw-r--r--macros/latex/contrib/tagpdf/ex-softhyphen.pdf72
-rw-r--r--macros/latex/contrib/tagpdf/ex-spaceglyph-listings.pdf64
-rw-r--r--macros/latex/contrib/tagpdf/ex-structure-obsolete.pdf98
-rw-r--r--macros/latex/contrib/tagpdf/ex-tagpdf-template.pdf92
-rw-r--r--macros/latex/contrib/tagpdf/link-figure-input.tex6
-rw-r--r--macros/latex/contrib/tagpdf/pac2024-report.pngbin0 -> 60301 bytes
-rw-r--r--macros/latex/contrib/tagpdf/pac2024-version.pngbin0 -> 29032 bytes
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-backend.dtx99
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-checks.dtx8
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-code.pdfbin1713045 -> 1737121 bytes
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-data.dtx20
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx10
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx8
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx6
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-roles.dtx36
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-space.dtx8
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-struct.dtx23
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-tree.dtx10
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-user.dtx6
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf.dtx33
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf.pdfbin1171785 -> 1124473 bytes
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf.tex87
-rw-r--r--macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty185
-rw-r--r--macros/latex/contrib/tagpdf/tagpdfsetup-keys.tex5
-rw-r--r--macros/latex/contrib/tblr-extras/README.md2
-rw-r--r--macros/latex/contrib/tblr-extras/tblr-extras-doc-EN.pdfbin29492 -> 32727 bytes
-rw-r--r--macros/latex/contrib/tblr-extras/tblr-extras-doc-EN.tex52
-rw-r--r--macros/latex/contrib/tblr-extras/tblr-extras.sty246
-rw-r--r--macros/latex/contrib/tblr-extras/test-tblr-extras.pdfbin0 -> 16343 bytes
-rw-r--r--macros/latex/contrib/tblr-extras/test-tblr-extras.tex24
-rw-r--r--macros/latex/contrib/tcolorbox/CHANGES.md40
-rw-r--r--macros/latex/contrib/tcolorbox/README.md2
-rw-r--r--macros/latex/contrib/tcolorbox/tcbbreakable.code.tex23
-rw-r--r--macros/latex/contrib/tcolorbox/tcbdocumentation.code.tex48
-rw-r--r--macros/latex/contrib/tcolorbox/tcbexternal.code.tex8
-rw-r--r--macros/latex/contrib/tcolorbox/tcbfitting.code.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcbhooks.code.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcblistings.code.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcblistingscore.code.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcblistingsutf8.code.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcbmagazine.code.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcbminted.code.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcbposter.code.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcbprocessing.code.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcbraster.code.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcbskins.code.tex21
-rw-r--r--macros/latex/contrib/tcolorbox/tcbskinsjigsaw.code.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcbtheorems.code.tex36
-rw-r--r--macros/latex/contrib/tcolorbox/tcbvignette.code.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcbxparse.code.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox-example-poster.pdfbin274323 -> 137729 bytes
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox-example-poster.tex2
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox-example.pdfbin447103 -> 287734 bytes
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox-example.tex2
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.pdfbin438130 -> 247127 bytes
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.tex2
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.bib6
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.breakable.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.coremacros.tex12
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.coreoptions.tex18
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.documentation.tex43
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.external.tex6
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.filling.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.fitting.tex8
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.intro.tex2
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.listings.tex7
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.s_main.sty4
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.skincatalog.tex37
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.skins.tex23
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.technical.tex21
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.theorems.tex137
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.vignette.tex6
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.pdfbin4859487 -> 4856594 bytes
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.sty140
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.tex20
-rw-r--r--macros/latex/contrib/telprint/README.md13
-rw-r--r--macros/latex/contrib/telprint/telprint.dtx (renamed from macros/latex/contrib/oberdiek/telprint.dtx)79
-rw-r--r--macros/latex/contrib/telprint/telprint.pdf (renamed from macros/latex/contrib/oberdiek/telprint.pdf)bin331190 -> 329028 bytes
-rw-r--r--macros/latex/contrib/texvc/Makefile17
-rw-r--r--macros/latex/contrib/texvc/texvc.dtx48
-rw-r--r--macros/latex/contrib/texvc/texvc.ins84
-rw-r--r--macros/latex/contrib/texvc/texvc.pdfbin246091 -> 307351 bytes
-rw-r--r--macros/latex/contrib/thermodynamics/thermodynamics.dtx1686
-rw-r--r--macros/latex/contrib/thermodynamics/thermodynamics.ins4
-rw-r--r--macros/latex/contrib/thermodynamics/thermodynamics.pdfbin270368 -> 333889 bytes
-rw-r--r--macros/latex/contrib/thuthesis/CHANGELOG.md14
-rw-r--r--macros/latex/contrib/thuthesis/thuthesis-example.pdfbin407055 -> 407059 bytes
-rw-r--r--macros/latex/contrib/thuthesis/thuthesis.dtx46
-rw-r--r--macros/latex/contrib/thuthesis/thuthesis.pdfbin1190791 -> 1193751 bytes
-rw-r--r--macros/latex/contrib/tiet-question-paper/LICENSE26
-rw-r--r--macros/latex/contrib/tiet-question-paper/README.md151
-rw-r--r--macros/latex/contrib/tiet-question-paper/images/sample.pngbin0 -> 10575 bytes
-rw-r--r--macros/latex/contrib/tiet-question-paper/tiet-question-paper-sample-org.org182
-rw-r--r--macros/latex/contrib/tiet-question-paper/tiet-question-paper-sample-org.pdfbin0 -> 27901 bytes
-rw-r--r--macros/latex/contrib/tiet-question-paper/tiet-question-paper-sample-org.tex204
-rw-r--r--macros/latex/contrib/tiet-question-paper/tiet-question-paper-sample.pdfbin0 -> 38647 bytes
-rw-r--r--macros/latex/contrib/tiet-question-paper/tiet-question-paper-sample.tex180
-rw-r--r--macros/latex/contrib/tiet-question-paper/tiet-question-paper.cls337
-rw-r--r--macros/latex/contrib/tkz/pgfornament/README.md5
-rw-r--r--macros/latex/contrib/tkz/pgfornament/doc/ornaments.pdfbin1377881 -> 1352275 bytes
-rw-r--r--macros/latex/contrib/tkz/pgfornament/doc/ornaments.tex4
-rw-r--r--macros/latex/contrib/tkz/pgfornament/doc/usefulcommands.tex6
-rw-r--r--macros/latex/contrib/tkz/pgfornament/latex/pgfornament.sty13
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/README.md13
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-circle.tex1648
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-ellipse.tex45
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-line.tex789
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-matrices.tex8
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-misc.tex8
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-point.tex355
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-regular.tex2
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-triangle.tex2050
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-vectors.tex8
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-examples.tex2360
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-indepthstudy.tex2
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-intersection.tex6
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-main.tex10
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/doc/tkz-elements.pdfbin704147 -> 817269 bytes
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz-elements.sty29
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_circle.lua4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_class.lua4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_ellipse.lua4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_circles.lua4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_intersections.lua4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_lines.lua4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_maths.lua4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_matrices.lua4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_points.lua4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_regular.lua4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_triangles.lua13
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_line.lua20
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_main.lua4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_matrices.lua4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_misc.lua4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_parallelogram.lua4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_point.lua4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_quadrilateral.lua4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_rectangle.lua4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_regular.lua4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_square.lua4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_triangle.lua49
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_vector.lua4
-rw-r--r--macros/latex/contrib/tqft/README.txt8
-rw-r--r--macros/latex/contrib/tqft/tqft.pdfbin460464 -> 476908 bytes
-rw-r--r--macros/latex/contrib/tqft/tqft.tex (renamed from macros/latex/contrib/tqft/tqft_doc.tex)57
-rw-r--r--macros/latex/contrib/tqft/tqft_code.dtx (renamed from macros/latex/contrib/tqft/tqft.dtx)120
-rw-r--r--macros/latex/contrib/tqft/tqft_code.pdfbin281351 -> 292287 bytes
-rw-r--r--macros/latex/contrib/tramlines/README5
-rw-r--r--macros/latex/contrib/tramlines/tramlines-documentation.pdfbin58619 -> 60656 bytes
-rw-r--r--macros/latex/contrib/tramlines/tramlines-documentation.tex17
-rw-r--r--macros/latex/contrib/tramlines/tramlines.sty6
-rw-r--r--macros/latex/contrib/tuda-ci/README.md10
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaAnnouncement.pdfbin551934 -> 551956 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer.pdfbin601729 -> 601729 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer2023.pdfbin561720 -> 561720 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaExercise.pdfbin570473 -> 570469 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLeaflet.pdfbin559914 -> 559903 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLetter.pdfbin567042 -> 571306 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPhD.pdfbin616232 -> 622755 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPoster.pdfbin536048 -> 536366 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPub.pdfbin662470 -> 655625 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaReport.pdfbin527496 -> 527804 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaSciPoster.pdfbin563701 -> 563701 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaThesis.pdfbin615311 -> 621493 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaAnnouncement.tex6
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer.tex14
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer2023.tex2
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaBibliography.bib2
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaExercise.tex6
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaFromaddress.lco2
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaLeaflet.tex4
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaLetter.tex12
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaPhD.tex15
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaPoster.tex6
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaPub.tex14
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaReport.tex6
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaSciPoster.tex4
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaThesis.tex15
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa.sty2
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa2008.sty2
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa.sty2
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa2008.sty2
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa.sty2
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa2008.sty2
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa2023.sty2
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa.sty2
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa2008.sty2
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa-mecheng.sty6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa.sty2
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa2008.sty6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa2023.sty2
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tuda-a0paper.clo20
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tuda-a1paper.clo20
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tuda-a2paper.clo18
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tuda-a3paper.clo20
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tuda-a4paper.clo20
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tuda-a5paper.clo20
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tuda-pgfplots.sty6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudabeamer.cls23
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudacolors.def6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudacolors.sty6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudaexercise.cls6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudafonts.sty6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudaleaflet.cls8
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudaletter.cls289
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudalettersize10pt.clo84
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudamecheng.cfg6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudaposter.cls6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudapub.cls118
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudarules.sty6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudasciposter.cls42
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudasize9pt.clo2
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudathesis.cfg21
-rw-r--r--macros/latex/contrib/tutodoc/code/tutodoc-locale-main-french.cfg.sty4
-rw-r--r--macros/latex/contrib/tutodoc/code/tutodoc.sty57
-rw-r--r--macros/latex/contrib/tutodoc/doc/tutodoc-en.pdfbin709681 -> 713562 bytes
-rw-r--r--macros/latex/contrib/tutodoc/doc/tutodoc-en.tex41
-rw-r--r--macros/latex/contrib/tutodoc/doc/tutodoc-fr.pdfbin746351 -> 748226 bytes
-rw-r--r--macros/latex/contrib/tutodoc/doc/tutodoc-fr.tex45
-rw-r--r--macros/latex/contrib/typog/LICENSE415
-rw-r--r--macros/latex/contrib/typog/Makefile183
-rw-r--r--macros/latex/contrib/typog/README.md4
-rw-r--r--macros/latex/contrib/typog/RELEASE-HOWTO.md51
-rw-r--r--macros/latex/contrib/typog/docs/index.md5
-rw-r--r--macros/latex/contrib/typog/docs/typog-example.pdfbin392419 -> 402037 bytes
-rw-r--r--macros/latex/contrib/typog/docs/typog-grep.1428
-rw-r--r--macros/latex/contrib/typog/docs/typog-grep.1.pdfbin511632 -> 514141 bytes
-rw-r--r--macros/latex/contrib/typog/docs/typog.pdfbin902362 -> 996908 bytes
-rw-r--r--macros/latex/contrib/typog/typog.dtx3217
-rw-r--r--macros/latex/contrib/typog/typog.ins30
-rw-r--r--macros/latex/contrib/uantwerpendocs/beamerthemeuantwerpenuserguide.pdfbin3225054 -> 3225047 bytes
-rw-r--r--macros/latex/contrib/uantwerpendocs/uantwerpenbamathesis-example.pdfbin127166 -> 127160 bytes
-rw-r--r--macros/latex/contrib/uantwerpendocs/uantwerpencoursetext-example.pdfbin81413 -> 81407 bytes
-rw-r--r--macros/latex/contrib/uantwerpendocs/uantwerpendocs.dtx20
-rw-r--r--macros/latex/contrib/uantwerpendocs/uantwerpendocs.pdfbin505252 -> 505385 bytes
-rw-r--r--macros/latex/contrib/uantwerpendocs/uantwerpenexam-example1.pdfbin57741 -> 62547 bytes
-rw-r--r--macros/latex/contrib/uantwerpendocs/uantwerpenexam-example2.pdfbin59684 -> 65647 bytes
-rw-r--r--macros/latex/contrib/uantwerpendocs/uantwerpenletter-example.pdfbin27558 -> 27549 bytes
-rw-r--r--macros/latex/contrib/uantwerpendocs/uantwerpenphdthesis-example1.pdfbin188533 -> 179332 bytes
-rw-r--r--macros/latex/contrib/uantwerpendocs/uantwerpenphdthesis-example2.pdfbin137149 -> 132771 bytes
-rw-r--r--macros/latex/contrib/uantwerpendocs/uantwerpenreport-example.pdfbin175940 -> 175932 bytes
-rw-r--r--macros/latex/contrib/ulthese/README.md63
-rw-r--r--macros/latex/contrib/ulthese/ulthese.dtx2046
-rw-r--r--macros/latex/contrib/ulthese/ulthese.ins43
-rw-r--r--macros/latex/contrib/ulthese/ulthese.pdfbin256822 -> 132685 bytes
-rw-r--r--macros/latex/contrib/unbtex/README.md8
-rw-r--r--macros/latex/contrib/unbtex/unbtex-example.pdfbin581659 -> 592915 bytes
-rw-r--r--macros/latex/contrib/unbtex/unbtex-example.tex27
-rw-r--r--macros/latex/contrib/unbtex/unbtex-example/anexo-b.tex3
-rw-r--r--macros/latex/contrib/unbtex/unbtex-example/capitulo2.tex10
-rw-r--r--macros/latex/contrib/unbtex/unbtex-example/capitulo3.tex10
-rw-r--r--macros/latex/contrib/unbtex/unbtex-example/capitulo4.tex4
-rw-r--r--macros/latex/contrib/unbtex/unbtex-example/referencias.bib4
-rw-r--r--macros/latex/contrib/unbtex/unbtex.cls85
-rw-r--r--macros/latex/contrib/unicodefonttable/changes.txt8
-rw-r--r--macros/latex/contrib/unicodefonttable/l3doc-TUB2024.cls (renamed from macros/latex/contrib/unicodefonttable/l3doc-TUB.cls)1027
-rw-r--r--macros/latex/contrib/unicodefonttable/unicodefonttable-code.pdfbin930902 -> 939865 bytes
-rw-r--r--macros/latex/contrib/unicodefonttable/unicodefonttable-doc.pdfbin763241 -> 765261 bytes
-rw-r--r--macros/latex/contrib/unicodefonttable/unicodefonttable-samples.pdfbin674199 -> 674199 bytes
-rw-r--r--macros/latex/contrib/unicodefonttable/unicodefonttable.dtx47
-rw-r--r--macros/latex/contrib/univie-ling/README23
-rw-r--r--macros/latex/contrib/univie-ling/biblatex-univie-ling/univie-ling.bbx2
-rw-r--r--macros/latex/contrib/univie-ling/biblatex-univie-ling/univie-ling.cbx2
-rw-r--r--macros/latex/contrib/univie-ling/doc/templates/template-expose-deutsch.pdfbin132626 -> 132716 bytes
-rw-r--r--macros/latex/contrib/univie-ling/doc/templates/template-expose-english.pdfbin127848 -> 127947 bytes
-rw-r--r--macros/latex/contrib/univie-ling/doc/templates/template-handout-deutsch.pdfbin201366 -> 201366 bytes
-rw-r--r--macros/latex/contrib/univie-ling/doc/templates/template-handout-english.pdfbin200967 -> 200967 bytes
-rw-r--r--macros/latex/contrib/univie-ling/doc/templates/template-paper-deutsch.pdfbin172478 -> 172712 bytes
-rw-r--r--macros/latex/contrib/univie-ling/doc/templates/template-paper-english.pdfbin167579 -> 167812 bytes
-rw-r--r--macros/latex/contrib/univie-ling/doc/templates/template-poster-deutsch.pdfbin227174 -> 227180 bytes
-rw-r--r--macros/latex/contrib/univie-ling/doc/templates/template-poster-english.pdfbin224980 -> 224983 bytes
-rw-r--r--macros/latex/contrib/univie-ling/doc/templates/template-thesis-deutsch.pdfbin190196 -> 190497 bytes
-rw-r--r--macros/latex/contrib/univie-ling/doc/templates/template-thesis-english.pdfbin186339 -> 186645 bytes
-rw-r--r--macros/latex/contrib/univie-ling/doc/templates/template-wlg-article.pdfbin250470 -> 250474 bytes
-rw-r--r--macros/latex/contrib/univie-ling/doc/templates/template-wlg-review.pdfbin250366 -> 250365 bytes
-rw-r--r--macros/latex/contrib/univie-ling/doc/univie-ling-expose.pdfbin458151 -> 461588 bytes
-rw-r--r--macros/latex/contrib/univie-ling/doc/univie-ling-expose.tex40
-rw-r--r--macros/latex/contrib/univie-ling/doc/univie-ling-handout.pdfbin448221 -> 450553 bytes
-rw-r--r--macros/latex/contrib/univie-ling/doc/univie-ling-handout.tex40
-rw-r--r--macros/latex/contrib/univie-ling/doc/univie-ling-paper.pdfbin455332 -> 459207 bytes
-rw-r--r--macros/latex/contrib/univie-ling/doc/univie-ling-paper.tex40
-rw-r--r--macros/latex/contrib/univie-ling/doc/univie-ling-poster.pdfbin454323 -> 457851 bytes
-rw-r--r--macros/latex/contrib/univie-ling/doc/univie-ling-poster.tex44
-rw-r--r--macros/latex/contrib/univie-ling/doc/univie-ling-thesis.pdfbin459107 -> 462143 bytes
-rw-r--r--macros/latex/contrib/univie-ling/doc/univie-ling-thesis.tex41
-rw-r--r--macros/latex/contrib/univie-ling/doc/univie-ling-wlg.pdfbin345852 -> 350542 bytes
-rw-r--r--macros/latex/contrib/univie-ling/doc/univie-ling-wlg.tex47
-rw-r--r--macros/latex/contrib/univie-ling/doc/univie-ling.pdfbin365602 -> 365821 bytes
-rw-r--r--macros/latex/contrib/univie-ling/doc/univie-ling.tex2
-rw-r--r--macros/latex/contrib/univie-ling/tex/univie-ling-expose.cls22
-rw-r--r--macros/latex/contrib/univie-ling/tex/univie-ling-handout.cls22
-rw-r--r--macros/latex/contrib/univie-ling/tex/univie-ling-paper.cls22
-rw-r--r--macros/latex/contrib/univie-ling/tex/univie-ling-poster.cls61
-rw-r--r--macros/latex/contrib/univie-ling/tex/univie-ling-thesis.cls24
-rw-r--r--macros/latex/contrib/univie-ling/tex/univie-ling-wlg.cls24
-rw-r--r--macros/latex/contrib/ut-thesis/README21
-rw-r--r--macros/latex/contrib/ut-thesis/ut-thesis.dtx16
-rw-r--r--macros/latex/contrib/ut-thesis/ut-thesis.ins21
-rw-r--r--macros/latex/contrib/ut-thesis/ut-thesis.pdfbin135197 -> 135618 bytes
-rw-r--r--macros/latex/contrib/xfrac/CHANGELOG.md10
-rw-r--r--macros/latex/contrib/xfrac/README.md2
-rw-r--r--macros/latex/contrib/xfrac/xfrac.dtx12
-rw-r--r--macros/latex/contrib/xfrac/xfrac.pdfbin658541 -> 658638 bytes
-rw-r--r--macros/latex/contrib/xint-regression/README.md7
-rw-r--r--macros/latex/contrib/xint-regression/doc/xint-regression-doc.pdfbin0 -> 360019 bytes
-rw-r--r--macros/latex/contrib/xint-regression/doc/xint-regression-doc.tex447
-rw-r--r--macros/latex/contrib/xint-regression/tex/xint-regression.sty662
-rw-r--r--macros/latex/contrib/zref-clever/CHANGELOG.md12
-rw-r--r--macros/latex/contrib/zref-clever/zref-clever-code.pdfbin880835 -> 890025 bytes
-rw-r--r--macros/latex/contrib/zref-clever/zref-clever-doc.pdfbin227507 -> 228899 bytes
-rw-r--r--macros/latex/contrib/zref-clever/zref-clever-doc.tex100
-rw-r--r--macros/latex/contrib/zref-clever/zref-clever.dtx256
1937 files changed, 134483 insertions, 40138 deletions
diff --git a/macros/latex/contrib/abraces/README.md b/macros/latex/contrib/abraces/README.md
index b26a225d8c..5234134d05 100644
--- a/macros/latex/contrib/abraces/README.md
+++ b/macros/latex/contrib/abraces/README.md
@@ -1,11 +1,11 @@
-`abraces` 2022/11/06 v2.1
+`abraces` 2024/08/02 v2.2
----------------------------------------
A package that provides a character key-driven interface to
supplement new constructions of the traditional `\overbrace`
and `\underbrace` pairs in an asymmetric or arbitrary way.
-Copyright (c) 2021 Werner Grundlingh
+Copyright (c) 2024 Werner Grundlingh
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either version 1.3
diff --git a/macros/latex/contrib/abraces/abraces-doc.pdf b/macros/latex/contrib/abraces/abraces-doc.pdf
index c0becaadde..a2161dafb5 100644
--- a/macros/latex/contrib/abraces/abraces-doc.pdf
+++ b/macros/latex/contrib/abraces/abraces-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/abraces/abraces-doc.tex b/macros/latex/contrib/abraces/abraces-doc.tex
index 970cf74eab..04178c2de7 100644
--- a/macros/latex/contrib/abraces/abraces-doc.tex
+++ b/macros/latex/contrib/abraces/abraces-doc.tex
@@ -1,4 +1,4 @@
-% $Id: abraces-doc.tex,v 2.1 2022/11/06 00:00:00 wgrundlingh stable $
+% $Id: abraces-doc.tex,v 2.2 2024/08/02 00:00:00 wgrundlingh stable $
\RequirePackage{xcolor}% http://ctan.org/pkg/xcolor (required to "overload" color package)
\documentclass[10pt]{ltxdockit}[2011/03/25]
@@ -7,7 +7,7 @@
\usepackage{booktabs,shortvrb,amsmath,xfp}
\MakeShortVerb{\|}
-\rcsid{$Id: abraces.tex,v 2.1 2022/11/06 00:00:00 wgrundlingh stable $}
+\rcsid{$Id: abraces.tex,v 2.2 2024/08/02 00:00:00 wgrundlingh stable $}
%\setcounter{secnumdepth}{2}
%\setcounter{tocdepth}{4}
@@ -305,11 +305,18 @@ This material is released under and subject to the \href{https://latex-project.o
\section{Acknowledgements}
-Thanks to Frank Mittlebach who stepped in and suggested an improvement in the original way \sty{abraces} functioned. Expansions included the use of \LaTeX3 command interface (via the \href{http://ctan.org/pkg/xparse}{\sty{xparse} package}).
+Thanks to Frank Mittlebach who stepped in and suggested an improvement in the original way \sty{abraces} functioned. Expansions included the use of \LaTeX3 command interface.
\section{Change log}
\begin{itemize}
+ \item v2.2 (2024-08-02) Minor update
+
+ \begin{itemize}
+ \item
+ Added \href{http://ctan.org/pkg/xcolor}{\sty{xcolor}} dependency to always have \lstinline|\bracecolor| available.
+ \end{itemize}
+
\item v2.1 (2022-11-06) Minor update
\begin{itemize}
diff --git a/macros/latex/contrib/abraces/abraces.sty b/macros/latex/contrib/abraces/abraces.sty
index af146826ce..3b096e7ab7 100644
--- a/macros/latex/contrib/abraces/abraces.sty
+++ b/macros/latex/contrib/abraces/abraces.sty
@@ -1,5 +1,5 @@
%% abraces.sty
-%% Copyright 2021 Werner Grundlingh
+%% Copyright 2024 Werner Grundlingh
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
@@ -16,9 +16,12 @@
% This work consists of the file abraces.sty.
\ProvidesPackage{abraces}% http://ctan.org/pkg/abraces
- [2022/11/06 v2.1 Arbitrary and asymmetric braces]
+ [2024/08/02 v2.2 Arbitrary and asymmetric braces]
+% xparse definitions now form part of the LaTeX core. However, keeping this in for those using older versions.
\RequirePackage{xparse}
+% Since abraces defines \bracecolor, add xcolor as dependency
+\RequirePackage{xcolor}
\newif\if@overload
\DeclareOption{overload}{\@overloadtrue}
diff --git a/macros/latex/contrib/acmart/README b/macros/latex/contrib/acmart/README
index 22919f31f8..7d79e34935 100644
--- a/macros/latex/contrib/acmart/README
+++ b/macros/latex/contrib/acmart/README
@@ -12,6 +12,9 @@ The production version is the one on CTAN and ACM sites.
Changes
+Version 2.08. Section titles are in lowercase now.
+ Documentation updates.
+
Version 2.07. Corrected typo in TELO eISSN.
Version 2.06. Added eISSN for a number of journals.
diff --git a/macros/latex/contrib/acmart/acmart.dtx b/macros/latex/contrib/acmart/acmart.dtx
index baebaccaab..0ff7a902b7 100644
--- a/macros/latex/contrib/acmart/acmart.dtx
+++ b/macros/latex/contrib/acmart/acmart.dtx
@@ -386,11 +386,13 @@
%
% The option |balance| determines whether the last page in the two
% column mode has balanced columns. By default it is |true|; however,
-% it may lead to problems for some documents. Set it to |false| if
-% you encounter compilation errors. Note that for one page documents
-% \cs{balance} command might cause problems. An alternative is the
+% it may lead to problems for some documents. When there are many
+% figures near the end of the document, the attempts to balance
+% columns may lead to the loss of the figures. Set this option to |false| if
+% you encounter problems. An alternative is the
% (experimental) option |pbalance|, which uses the new package
-% |pbalance| for this end.
+% |pbalance|. You may want to try |pbalance=true| to see if you get
+% better results.
%
% The option |urlbreakonhyphens| determines whether URLs can be split
% between lines after hyphens. By default it is true. Set it to
@@ -2262,7 +2264,7 @@
\ProvidesFile{acmart.dtx}
%</gobble>
%<class>\ProvidesClass{acmart}
-[2024/04/17 v2.07 Typesetting articles for the Association for Computing Machinery]
+[2024/05/27 v2.08 Typesetting articles for the Association for Computing Machinery]
% \end{macrocode}
%
% \changes{v1.00}{2016/04/14}{First released version}
@@ -8178,9 +8180,10 @@
% \cs{sffamily}\cs{bfseries}}
% \changes{v1.67}{2020/01/11}{Deleted redefinitions of sections}
% \changes{1.85}{2022/05/08}{Added: acmengage}
+% \changes{2.08}{2024/05/27}{Deleted uppercasing}
% Fonts for sections etc. are different for different formats.
% \begin{macrocode}
-\def\@secfont{\sffamily\bfseries\section@raggedright\MakeTextUppercase}
+\def\@secfont{\sffamily\bfseries\section@raggedright}
\def\@subsecfont{\sffamily\bfseries\section@raggedright}
\def\@subsubsecfont{\sffamily\itshape}
\def\@parfont{\itshape}
@@ -8189,16 +8192,16 @@
\relax % manuscript
\or % acmsmall
\or % acmlarge
- \def\@secfont{\sffamily\large\section@raggedright\MakeTextUppercase}
+ \def\@secfont{\sffamily\large\section@raggedright}
\def\@subsecfont{\sffamily\large\section@raggedright}
\or % acmtog
- \def\@secfont{\sffamily\large\section@raggedright\MakeTextUppercase}
+ \def\@secfont{\sffamily\large\section@raggedright}
\def\@subsecfont{\sffamily\large\section@raggedright}
\or % sigconf
- \def\@secfont{\bfseries\Large\section@raggedright\MakeTextUppercase}
+ \def\@secfont{\bfseries\Large\section@raggedright}
\def\@subsecfont{\bfseries\Large\section@raggedright}
\or % siggraph
- \def\@secfont{\sffamily\bfseries\Large\section@raggedright\MakeTextUppercase}
+ \def\@secfont{\sffamily\bfseries\Large\section@raggedright}
\def\@subsecfont{\sffamily\bfseries\Large\section@raggedright}
\or % sigplan
\def\@secfont{\bfseries\Large\section@raggedright}
@@ -8208,14 +8211,14 @@
\def\@subparfont{\itshape}
\or % sigchi
\setcounter{secnumdepth}{1}
- \def\@secfont{\sffamily\bfseries\section@raggedright\MakeTextUppercase}
+ \def\@secfont{\sffamily\bfseries\section@raggedright}
\def\@subsecfont{\sffamily\bfseries\section@raggedright}
\or % sigchi-a
\setcounter{secnumdepth}{0}
- \def\@secfont{\sffamily\bfseries\section@raggedright\MakeTextUppercase}
+ \def\@secfont{\sffamily\bfseries\section@raggedright}
\def\@subsecfont{\sffamily\bfseries\section@raggedright}
\or % acmengage
- \def\@secfont{\bfseries\Large\section@raggedright\MakeTextUppercase}
+ \def\@secfont{\bfseries\Large\section@raggedright}
\def\@subsecfont{\bfseries\Large\section@raggedright}
\or %acmcp
\fi
diff --git a/macros/latex/contrib/acmart/acmart.pdf b/macros/latex/contrib/acmart/acmart.pdf
index c19fdf3a8b..9a91d07bf7 100644
--- a/macros/latex/contrib/acmart/acmart.pdf
+++ b/macros/latex/contrib/acmart/acmart.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/acmguide.pdf b/macros/latex/contrib/acmart/acmguide.pdf
index bd2ce2d7ba..927dd7c750 100644
--- a/macros/latex/contrib/acmart/acmguide.pdf
+++ b/macros/latex/contrib/acmart/acmguide.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-acmcp.pdf b/macros/latex/contrib/acmart/samples/sample-acmcp.pdf
index 3f02d1ac9c..c57d1898d1 100644
--- a/macros/latex/contrib/acmart/samples/sample-acmcp.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-acmcp.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-acmengage.pdf b/macros/latex/contrib/acmart/samples/sample-acmengage.pdf
index aa7fea6b41..366843b28e 100644
--- a/macros/latex/contrib/acmart/samples/sample-acmengage.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-acmengage.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-acmlarge.pdf b/macros/latex/contrib/acmart/samples/sample-acmlarge.pdf
index 2637448012..25a90ec394 100644
--- a/macros/latex/contrib/acmart/samples/sample-acmlarge.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-acmlarge.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-acmsmall-biblatex.pdf b/macros/latex/contrib/acmart/samples/sample-acmsmall-biblatex.pdf
index dce1688580..d644e32874 100644
--- a/macros/latex/contrib/acmart/samples/sample-acmsmall-biblatex.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-acmsmall-biblatex.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-acmsmall-conf.pdf b/macros/latex/contrib/acmart/samples/sample-acmsmall-conf.pdf
index f4fd622fcf..6e1488235e 100644
--- a/macros/latex/contrib/acmart/samples/sample-acmsmall-conf.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-acmsmall-conf.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-acmsmall-submission.pdf b/macros/latex/contrib/acmart/samples/sample-acmsmall-submission.pdf
index 4086b70e26..e0471c8a27 100644
--- a/macros/latex/contrib/acmart/samples/sample-acmsmall-submission.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-acmsmall-submission.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-acmsmall.pdf b/macros/latex/contrib/acmart/samples/sample-acmsmall.pdf
index 6c3fbbb20a..17c719abda 100644
--- a/macros/latex/contrib/acmart/samples/sample-acmsmall.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-acmsmall.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-acmtog-conf.pdf b/macros/latex/contrib/acmart/samples/sample-acmtog-conf.pdf
index 5493a7abf7..71e87b73b1 100644
--- a/macros/latex/contrib/acmart/samples/sample-acmtog-conf.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-acmtog-conf.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-acmtog.pdf b/macros/latex/contrib/acmart/samples/sample-acmtog.pdf
index be5a4b8e1c..1e39a159d3 100644
--- a/macros/latex/contrib/acmart/samples/sample-acmtog.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-acmtog.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-manuscript.pdf b/macros/latex/contrib/acmart/samples/sample-manuscript.pdf
index a594aaec45..301caf80cb 100644
--- a/macros/latex/contrib/acmart/samples/sample-manuscript.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-manuscript.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-sigconf-authordraft.pdf b/macros/latex/contrib/acmart/samples/sample-sigconf-authordraft.pdf
index 87c7559042..a465c8463e 100644
--- a/macros/latex/contrib/acmart/samples/sample-sigconf-authordraft.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-sigconf-authordraft.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-sigconf-biblatex.pdf b/macros/latex/contrib/acmart/samples/sample-sigconf-biblatex.pdf
index 26d05c90b6..b4052f9363 100644
--- a/macros/latex/contrib/acmart/samples/sample-sigconf-biblatex.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-sigconf-biblatex.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-sigconf-i13n.pdf b/macros/latex/contrib/acmart/samples/sample-sigconf-i13n.pdf
index 4404065b41..dc0e0fe12e 100644
--- a/macros/latex/contrib/acmart/samples/sample-sigconf-i13n.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-sigconf-i13n.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-sigconf.pdf b/macros/latex/contrib/acmart/samples/sample-sigconf.pdf
index a29449278f..ab5954e602 100644
--- a/macros/latex/contrib/acmart/samples/sample-sigconf.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-sigconf.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-sigplan.pdf b/macros/latex/contrib/acmart/samples/sample-sigplan.pdf
index 7edc0c62bd..534e00da12 100644
--- a/macros/latex/contrib/acmart/samples/sample-sigplan.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-sigplan.pdf
Binary files differ
diff --git a/macros/latex/contrib/aomart/README b/macros/latex/contrib/aomart/README
index 4bdab51407..7032de24a7 100644
--- a/macros/latex/contrib/aomart/README
+++ b/macros/latex/contrib/aomart/README
@@ -1,12 +1,19 @@
LaTeX Class for The Annals of Mathematics
Boris Veytsman
- Version 1.27
+ Version 1.28
This package provides the class for typesetting articles for The Annals
of Mathematics, http://annals.princeton.edu/.
Changes:
+ Version 1.28
+ Now we typeset orcid logo. This package includes
+ orcid icon aom_orcid_logo[.eps|pdf]. The name uses
+ aom_ preffix to avoid clash with other orcid packages,
+ but the icon can be used outside of aomart. The
+ original icon was released in SVG format under CC0 license.
+
Version 1.27
New command: \funding
diff --git a/macros/latex/contrib/aomart/aom_orcid_logo.eps b/macros/latex/contrib/aomart/aom_orcid_logo.eps
new file mode 100644
index 0000000000..067a8f185a
--- /dev/null
+++ b/macros/latex/contrib/aomart/aom_orcid_logo.eps
@@ -0,0 +1,518 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%Produced by poppler pdftops version: 24.04.0 (http://poppler.freedesktop.org)
+%%Creator: TeX
+%%LanguageLevel: 2
+%%DocumentSuppliedResources: (atend)
+%%BoundingBox: 0 0 194 193
+%%HiResBoundingBox: 0 0 194 193
+%%DocumentSuppliedResources: (atend)
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset xpdf 3.00 0
+%%Copyright: Copyright 1996-2011, 2022 Glyph & Cog, LLC
+/xpdf 75 dict def xpdf begin
+% PDF special state
+/pdfDictSize 15 def
+/pdfSetup {
+ /setpagedevice where {
+ pop 2 dict begin
+ /Policies 1 dict dup begin /PageSize 6 def end def
+ { /Duplex true def } if
+ currentdict end setpagedevice
+ } {
+ pop
+ } ifelse
+} def
+/pdfSetupPaper {
+ % Change paper size, but only if different from previous paper size otherwise
+ % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size
+ % so we use the same when checking if the size changes.
+ /setpagedevice where {
+ pop currentpagedevice
+ /PageSize known {
+ 2 copy
+ currentpagedevice /PageSize get aload pop
+ exch 4 1 roll
+ sub abs 5 gt
+ 3 1 roll
+ sub abs 5 gt
+ or
+ } {
+ true
+ } ifelse
+ {
+ 2 array astore
+ 2 dict begin
+ /PageSize exch def
+ /ImagingBBox null def
+ currentdict end
+ setpagedevice
+ } {
+ pop pop
+ } ifelse
+ } {
+ pop
+ } ifelse
+} def
+/pdfStartPage {
+ pdfDictSize dict begin
+ /pdfFillCS [] def
+ /pdfFillXform {} def
+ /pdfStrokeCS [] def
+ /pdfStrokeXform {} def
+ /pdfFill [0] def
+ /pdfStroke [0] def
+ /pdfFillOP false def
+ /pdfStrokeOP false def
+ /pdfLastFill false def
+ /pdfLastStroke false def
+ /pdfTextMat [1 0 0 1 0 0] def
+ /pdfFontSize 0 def
+ /pdfCharSpacing 0 def
+ /pdfTextRender 0 def
+ /pdfPatternCS false def
+ /pdfTextRise 0 def
+ /pdfWordSpacing 0 def
+ /pdfHorizScaling 1 def
+ /pdfTextClipPath [] def
+} def
+/pdfEndPage { end } def
+% PDF color state
+/cs { /pdfFillXform exch def dup /pdfFillCS exch def
+ setcolorspace } def
+/CS { /pdfStrokeXform exch def dup /pdfStrokeCS exch def
+ setcolorspace } def
+/sc { pdfLastFill not { pdfFillCS setcolorspace } if
+ dup /pdfFill exch def aload pop pdfFillXform setcolor
+ /pdfLastFill true def /pdfLastStroke false def } def
+/SC { pdfLastStroke not { pdfStrokeCS setcolorspace } if
+ dup /pdfStroke exch def aload pop pdfStrokeXform setcolor
+ /pdfLastStroke true def /pdfLastFill false def } def
+/op { /pdfFillOP exch def
+ pdfLastFill { pdfFillOP setoverprint } if } def
+/OP { /pdfStrokeOP exch def
+ pdfLastStroke { pdfStrokeOP setoverprint } if } def
+/fCol {
+ pdfLastFill not {
+ pdfFillCS setcolorspace
+ pdfFill aload pop pdfFillXform setcolor
+ pdfFillOP setoverprint
+ /pdfLastFill true def /pdfLastStroke false def
+ } if
+} def
+/sCol {
+ pdfLastStroke not {
+ pdfStrokeCS setcolorspace
+ pdfStroke aload pop pdfStrokeXform setcolor
+ pdfStrokeOP setoverprint
+ /pdfLastStroke true def /pdfLastFill false def
+ } if
+} def
+% build a font
+/pdfMakeFont {
+ 4 3 roll findfont
+ 4 2 roll matrix scale makefont
+ dup length dict begin
+ { 1 index /FID ne { def } { pop pop } ifelse } forall
+ /Encoding exch def
+ currentdict
+ end
+ definefont pop
+} def
+/pdfMakeFont16 {
+ exch findfont
+ dup length dict begin
+ { 1 index /FID ne { def } { pop pop } ifelse } forall
+ /WMode exch def
+ currentdict
+ end
+ definefont pop
+} def
+% graphics state operators
+/q { gsave pdfDictSize dict begin } def
+/Q {
+ end grestore
+ /pdfLastFill where {
+ pop
+ pdfLastFill {
+ pdfFillOP setoverprint
+ } {
+ pdfStrokeOP setoverprint
+ } ifelse
+ } if
+} def
+/cm { concat } def
+/d { setdash } def
+/i { setflat } def
+/j { setlinejoin } def
+/J { setlinecap } def
+/M { setmiterlimit } def
+/w { setlinewidth } def
+% path segment operators
+/m { moveto } def
+/l { lineto } def
+/c { curveto } def
+/re { 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
+ neg 0 rlineto closepath } def
+/h { closepath } def
+% path painting operators
+/S { sCol stroke } def
+/Sf { fCol stroke } def
+/f { fCol fill } def
+/f* { fCol eofill } def
+% clipping operators
+/W { clip newpath } def
+/W* { eoclip newpath } def
+/Ws { strokepath clip newpath } def
+% text state operators
+/Tc { /pdfCharSpacing exch def } def
+/Tf { dup /pdfFontSize exch def
+ dup pdfHorizScaling mul exch matrix scale
+ pdfTextMat matrix concatmatrix dup 4 0 put dup 5 0 put
+ exch findfont exch makefont setfont } def
+/Tr { /pdfTextRender exch def } def
+/Tp { /pdfPatternCS exch def } def
+/Ts { /pdfTextRise exch def } def
+/Tw { /pdfWordSpacing exch def } def
+/Tz { /pdfHorizScaling exch def } def
+% text positioning operators
+/Td { pdfTextMat transform moveto } def
+/Tm { /pdfTextMat exch def } def
+% text string operators
+/xyshow where {
+ pop
+ /xyshow2 {
+ dup length array
+ 0 2 2 index length 1 sub {
+ 2 index 1 index 2 copy get 3 1 roll 1 add get
+ pdfTextMat dtransform
+ 4 2 roll 2 copy 6 5 roll put 1 add 3 1 roll dup 4 2 roll put
+ } for
+ exch pop
+ xyshow
+ } def
+}{
+ /xyshow2 {
+ currentfont /FontType get 0 eq {
+ 0 2 3 index length 1 sub {
+ currentpoint 4 index 3 index 2 getinterval show moveto
+ 2 copy get 2 index 3 2 roll 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } {
+ 0 1 3 index length 1 sub {
+ currentpoint 4 index 3 index 1 getinterval show moveto
+ 2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } ifelse
+ pop pop
+ } def
+} ifelse
+/cshow where {
+ pop
+ /xycp {
+ 0 3 2 roll
+ {
+ pop pop currentpoint 3 2 roll
+ 1 string dup 0 4 3 roll put false charpath moveto
+ 2 copy get 2 index 2 index 1 add get
+ pdfTextMat dtransform rmoveto
+ 2 add
+ } exch cshow
+ pop pop
+ } def
+}{
+ /xycp {
+ currentfont /FontType get 0 eq {
+ 0 2 3 index length 1 sub {
+ currentpoint 4 index 3 index 2 getinterval false charpath moveto
+ 2 copy get 2 index 3 2 roll 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } {
+ 0 1 3 index length 1 sub {
+ currentpoint 4 index 3 index 1 getinterval false charpath moveto
+ 2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } ifelse
+ pop pop
+ } def
+} ifelse
+/Tj {
+ fCol
+ 0 pdfTextRise pdfTextMat dtransform rmoveto
+ currentpoint 4 2 roll
+ pdfTextRender 1 and 0 eq {
+ 2 copy xyshow2
+ } if
+ pdfTextRender 3 and dup 1 eq exch 2 eq or {
+ 3 index 3 index moveto
+ 2 copy
+ currentfont /FontType get 3 eq { fCol } { sCol } ifelse
+ xycp currentpoint stroke moveto
+ } if
+ pdfTextRender 4 and 0 ne {
+ 4 2 roll moveto xycp
+ /pdfTextClipPath [ pdfTextClipPath aload pop
+ {/moveto cvx}
+ {/lineto cvx}
+ {/curveto cvx}
+ {/closepath cvx}
+ pathforall ] def
+ currentpoint newpath moveto
+ } {
+ pop pop pop pop
+ } ifelse
+ 0 pdfTextRise neg pdfTextMat dtransform rmoveto
+} def
+/TJm { 0.001 mul pdfFontSize mul pdfHorizScaling mul neg 0
+ pdfTextMat dtransform rmoveto } def
+/TJmV { 0.001 mul pdfFontSize mul neg 0 exch
+ pdfTextMat dtransform rmoveto } def
+/Tclip { pdfTextClipPath cvx exec clip newpath
+ /pdfTextClipPath [] def } def
+/Tclip* { pdfTextClipPath cvx exec eoclip newpath
+ /pdfTextClipPath [] def } def
+% Level 2/3 image operators
+/pdfImBuf 100 string def
+/pdfImStr {
+ 2 copy exch length lt {
+ 2 copy get exch 1 add exch
+ } {
+ ()
+ } ifelse
+} def
+/skipEOD {
+ { currentfile pdfImBuf readline
+ not { pop exit } if
+ (%-EOD-) eq { exit } if } loop
+} def
+/pdfIm { image skipEOD } def
+/pdfImM { fCol imagemask skipEOD } def
+/pr { 2 index 2 index 3 2 roll putinterval 4 add } def
+/pdfImClip {
+ gsave
+ 0 2 4 index length 1 sub {
+ dup 4 index exch 2 copy
+ get 5 index div put
+ 1 add 3 index exch 2 copy
+ get 3 index div put
+ } for
+ pop pop rectclip
+} def
+/pdfImClipEnd { grestore } def
+% shading operators
+/colordelta {
+ false 0 1 3 index length 1 sub {
+ dup 4 index exch get 3 index 3 2 roll get sub abs 0.004 gt {
+ pop true
+ } if
+ } for
+ exch pop exch pop
+} def
+/funcCol { func n array astore } def
+/funcSH {
+ dup 0 eq {
+ true
+ } {
+ dup 6 eq {
+ false
+ } {
+ 4 index 4 index funcCol dup
+ 6 index 4 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ 5 index 5 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ 6 index 8 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ colordelta or or or
+ } ifelse
+ } ifelse
+ {
+ 1 add
+ 4 index 3 index add 0.5 mul exch 4 index 3 index add 0.5 mul exch
+ 6 index 6 index 4 index 4 index 4 index funcSH
+ 2 index 6 index 6 index 4 index 4 index funcSH
+ 6 index 2 index 4 index 6 index 4 index funcSH
+ 5 3 roll 3 2 roll funcSH pop pop
+ } {
+ pop 3 index 2 index add 0.5 mul 3 index 2 index add 0.5 mul
+ funcCol sc
+ dup 4 index exch mat transform m
+ 3 index 3 index mat transform l
+ 1 index 3 index mat transform l
+ mat transform l pop pop h f*
+ } ifelse
+} def
+/axialCol {
+ dup 0 lt {
+ pop t0
+ } {
+ dup 1 gt {
+ pop t1
+ } {
+ dt mul t0 add
+ } ifelse
+ } ifelse
+ func n array astore
+} def
+/axialSH {
+ dup 0 eq {
+ true
+ } {
+ dup 8 eq {
+ false
+ } {
+ 2 index axialCol 2 index axialCol colordelta
+ } ifelse
+ } ifelse
+ {
+ 1 add 3 1 roll 2 copy add 0.5 mul
+ dup 4 3 roll exch 4 index axialSH
+ exch 3 2 roll axialSH
+ } {
+ pop 2 copy add 0.5 mul
+ axialCol sc
+ exch dup dx mul x0 add exch dy mul y0 add
+ 3 2 roll dup dx mul x0 add exch dy mul y0 add
+ dx abs dy abs ge {
+ 2 copy yMin sub dy mul dx div add yMin m
+ yMax sub dy mul dx div add yMax l
+ 2 copy yMax sub dy mul dx div add yMax l
+ yMin sub dy mul dx div add yMin l
+ h f*
+ } {
+ exch 2 copy xMin sub dx mul dy div add xMin exch m
+ xMax sub dx mul dy div add xMax exch l
+ exch 2 copy xMax sub dx mul dy div add xMax exch l
+ xMin sub dx mul dy div add xMin exch l
+ h f*
+ } ifelse
+ } ifelse
+} def
+/radialCol {
+ dup t0 lt {
+ pop t0
+ } {
+ dup t1 gt {
+ pop t1
+ } if
+ } ifelse
+ func n array astore
+} def
+/radialSH {
+ dup 0 eq {
+ true
+ } {
+ dup 8 eq {
+ false
+ } {
+ 2 index dt mul t0 add radialCol
+ 2 index dt mul t0 add radialCol colordelta
+ } ifelse
+ } ifelse
+ {
+ 1 add 3 1 roll 2 copy add 0.5 mul
+ dup 4 3 roll exch 4 index radialSH
+ exch 3 2 roll radialSH
+ } {
+ pop 2 copy add 0.5 mul dt mul t0 add
+ radialCol sc
+ encl {
+ exch dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ 0 360 arc h
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ 360 0 arcn h f
+ } {
+ 2 copy
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a1 a2 arcn
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a2 a1 arcn h
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a1 a2 arc
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a2 a1 arc h f
+ } ifelse
+ } ifelse
+} def
+end
+%%EndResource
+%%EndProlog
+%%BeginSetup
+xpdf begin
+%%EndSetup
+pdfStartPage
+%%EndPageSetup
+[] 0 d
+1 i
+0 j
+0 J
+10 M
+1 w
+/DeviceGray {} cs
+[0] sc
+/DeviceGray {} CS
+[0] SC
+false op
+false OP
+{} settransfer
+0 0 194 193 re
+W
+q
+q
+[1 0 0 1 1 0] cm
+q
+[1 0 0 1 0 0] cm
+0 0 191.99999 192.000012 re
+W
+[1 0 0 -1 0 192.000012] cm
+q
+/DeviceRGB {} cs
+[0.651 0.8078 0.2235] sc
+192 96 m
+192 149.023 149.023 192 96 192 c
+42.977 192 0 149.023 0 96 c
+0 42.977 42.977 0 96 0 c
+149.023 0 192 42.977 192 96 c
+h
+f
+/DeviceRGB {} cs
+[1 1 1] sc
+53.176 59.324 11.551 80.324 re
+f
+81.676 59.324 m
+112.875 59.324 l
+142.574 59.324 155.625 80.551 155.625 99.523 c
+155.625 120.148 139.5 139.727 113.023 139.727 c
+81.676 139.727 l
+81.676 59.324 l
+h
+93.227 129.301 m
+111.602 129.301 l
+137.773 129.301 143.773 109.426 143.773 99.523 c
+143.773 83.398 133.5 69.75 111 69.75 c
+93.227 69.75 l
+93.227 129.301 l
+h
+f
+66.523 42.602 m
+66.523 46.727 63.148 50.176 58.949 50.176 c
+54.75 50.176 51.375 46.727 51.375 42.602 c
+51.375 38.398 54.75 35.023 58.949 35.023 c
+63.148 35.023 66.523 38.477 66.523 42.602 c
+h
+f
+Q
+Q
+Q
+Q
+showpage
+%%PageTrailer
+pdfEndPage
+%%Trailer
+end
+%%DocumentSuppliedResources:
+%%EOF
diff --git a/macros/latex/contrib/aomart/aom_orcid_logo.pdf b/macros/latex/contrib/aomart/aom_orcid_logo.pdf
new file mode 100644
index 0000000000..97fb31c038
--- /dev/null
+++ b/macros/latex/contrib/aomart/aom_orcid_logo.pdf
Binary files differ
diff --git a/macros/latex/contrib/aomart/aomart.bib b/macros/latex/contrib/aomart/aomart.bib
index 75db470db4..35faadf074 100644
--- a/macros/latex/contrib/aomart/aomart.bib
+++ b/macros/latex/contrib/aomart/aomart.bib
@@ -1,9 +1,3 @@
-Generated on Sun Jan 2 17:18:36 2011 (1294006716).
-
-
-,-------------------.
-| BIBTEX ENTRIES |
-`-------------------'
@book{Graetzer00:MathIntoLaTeX,
address = {Boston},
@@ -129,3 +123,13 @@ c.pdf}},
year = 2005,
note = {\url{http://mirrors.ctan.org/macros/latex/required/babel}}
}
+
+@manual{orcidlink,
+ title = {The orcidlink package},
+ subtitle = {Insert hyperlinked ORCiD logo},
+ author = {Stein, Leo},
+ url = {https://ctan.org/pkg/orcidlink},
+ urldate = {2024-06-08},
+ yar = 2020,
+ version = {1.0.5},
+}
diff --git a/macros/latex/contrib/aomart/aomart.dtx b/macros/latex/contrib/aomart/aomart.dtx
index 0af4820992..7d66ce495e 100644
--- a/macros/latex/contrib/aomart/aomart.dtx
+++ b/macros/latex/contrib/aomart/aomart.dtx
@@ -1,7 +1,7 @@
% \iffalse
-% $Id: aomart.dtx,v 1.80 2022/05/01 03:07:24 boris Exp $
+% $Id: aomart.dtx,v 1.81 2024/06/09 00:29:48 boris Exp $
%
-% Copyright 2010-2022, Princeton University (Mathematics Department)
+% Copyright 2010-2024, Princeton University (Mathematics Department)
% 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
@@ -66,7 +66,7 @@
% \GetFileInfo{aomart.dtx}
% \newcommand{\progname}[1]{\textsf{#1}}
% \title{\LaTeX{} Class for The \emph{Annals of
-% Mathematics}\thanks{\copyright 2010--2022, Princeton University
+% Mathematics}\thanks{\copyright 2010--2024, Princeton University
% (Mathematics Department)}}
% \author{Boris Veytsman\thanks{%
% \href{mailto:borisv@lk.net}{\texttt{borisv@lk.net}},
@@ -306,7 +306,7 @@
% \DescribeMacro{\email}%
% \DescribeMacro{\address} \DescribeMacro{\curraddr}%
% \DescribeMacro{\urladdr}%
-% \DescribeMacro{\orccid}%
+% \DescribeMacro{\orcid}%
% The interface for specifying the authors and their affiliations is
% close the the one of \progname{amsart}~\cite{instr-l} (and different
% from the standard \LaTeX). For each author a separate command
@@ -843,7 +843,7 @@
\ProvidesFile{aomart.dtx}
%</gobble>
%<class>\ProvidesClass{aomart}
-[2022/04/30 v1.27 Typesetting articles for the Annals of Mathematics]
+[2024/06/08 v1.28 Typesetting articles for the Annals of Mathematics]
% \end{macrocode}
%
%
@@ -986,9 +986,9 @@
% settings}
% \changes{v1.1}{2010/12/31}{In manuscript mode the links are always
% blue}
-% \changes{v1.22}{2018/05/21}{In screen mode we no longer crop pages}
+% \changes{v1.22}{2018/05/21}{In screen mode we no longer crop pages}
% \begin{macrocode}
-\RequirePackage{fancyhdr, lastpage, ifpdf}
+\RequirePackage{fancyhdr, lastpage, ifpdf, graphicx}
\RequirePackage[breaklinks,colorlinks]{hyperref}
\if@aom@screen@mode
\hypersetup{linkcolor=blue,citecolor=blue,
@@ -1221,7 +1221,13 @@
% \begin{macrocode}
\setlength{\headsep}{14pt}
% \end{macrocode}
-%
+% \begin{macro}{\headheight}
+% \changes{v2.28}{2024/06/08}{Increased}
+% Slightly increasing head height
+% \begin{macrocode}
+\setlength{\headheight}{18.0pt}
+% \end{macrocode}
+% \end{macro}
% \end{macro}
% \begin{macro}{\headrulewidth}
% \begin{macro}{\footrulewidth}
@@ -1405,6 +1411,7 @@
\g@addto@macro\@names{\and author=#2;}%
\g@addto@macro\addresses{\author{}}%
\fi
+ \gdef\aom@current@orcid@target{\authors}%
\@ifnotempty{#1}{%
\ifx\@empty\shortauthors
\gdef\shortauthors{#1}%
@@ -1477,12 +1484,14 @@
%
% \begin{macro}{\contrib}
% \changes{v1.26}{2022/01/19}{Redefined amsart macro}
+% \changes{v1.28}{2024/06/08}{Added typesetting orcids}
% The processing of contributors. Contributors are separated into
% groups with the same contribution. Within the group one can omit
% the contribution.
% \begin{macrocode}
\renewcommand{\contrib}[2][]{%
\def\@tempa{#1}%
+ \gdef\aom@current@orcid@target{\@currentcontributors}%
\@startcontribgrouptrue
\ifx\@tempa\@empty\relax
\ifx\@currentcontribution\@empty\relax
@@ -1508,6 +1517,7 @@
\expandafter\g@addto@macro\expandafter%
\@names\expandafter{\@currentcontribution}%
\g@addto@macro\@names{;}%
+ \g@addto@macro\addresses{\author{}}%
}
% \end{macrocode}
%
@@ -1536,18 +1546,41 @@
%
% \end{macro}
%
+%
+% \begin{macro}{\aom@current@orcid@target}
+% \changes{v1.28}{2024/06/08}{Added macro}
+% Each new orcid can be added either to the authors or to the
+% contributors. This macro defines where it goes
+% \begin{macrocode}
+\def\aom@current@orcid@target{\authors}
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\orcid}
-% \changes{v1.18}{2017/02/15}{Added macro}
+% \changes{v1.18}{2017/02/15}{Added macro}
+% \changes{v1.28}{2024/06/08}{Added typesetting orcid}
% Orcid also outputs metadata
% \begin{macrocode}
-\newcommand{\orcid}[2][]{%
- \g@addto@macro\addresses{\orcid{#1}{#2}}%
- \g@addto@macro\@names{orcid=#2;}%
+\newcommand{\orcid}[1]{%
+ \g@addto@macro\addresses{\orcid{#1}}%
+ \g@addto@macro\@names{orcid=#1;}%
+ \expandafter\g@addto@macro\aom@current@orcid@target{\aom@orcidlink{#1}}%
}
% \end{macrocode}
%
% \end{macro}
%
+% \begin{macro}{\aom@orcidlink}
+% \changes{v1.28}{2024/06/08}{Added macro}
+% The package orcidlink~\cite{orcidlink} requires TikZ, so here we
+% reproduce its functionality using our own version of orcid logo.
+% Note that the original logo is licenses under CC0, see
+% \url{https://orcid.figshare.com/articles/figure/ORCID_iD_icon_graphics/5008697}
+% \begin{macrocode}
+\newcommand\aom@orcidlink[1]{\kern0.2ex\href{https://orcid.org/#1}{\includegraphics[height=2ex]{aom_orcid_logo}}}
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\keyword}
% Actually \progname{amsart} has |\kewords| macro. It redefines
% |\@keywords|. Our macro adds to the stack instead.
@@ -1949,6 +1982,7 @@
% \begin{macro}{\@setauthors}
% \changes{v0.6}{2010/11/04}{'By' and 'and' are in Roman font now}
% \changes{v1.10}{2011/06/21}{Internationalization}
+% \changes{v1.28}{2024/06/08}{Added treatment of orcids}
% Now we typeset authors according to our specs. Again, we use this
% occasion to set some PDF information:
% \begin{macrocode}
@@ -1963,7 +1997,11 @@
\def\@@and{{\upshape \@aom@and}}%
\author@andify\authors
\ifpdf
- \hypersetup{pdfauthor=\authors}%
+ \bgroup
+ \def\aom@orcidlink##1{}%
+ \xdef\@tempa{\authors}%
+ \egroup
+ \hypersetup{pdfauthor=\@tempa}%
\fi
\def\\{\protect\linebreak}%
\small \@aom@by{} \scshape\authors%
@@ -2147,10 +2185,9 @@
\@ifnotempty{##2}{\nobreak\indent
\@ifnotempty{##1}{, \ignorespaces##1\unskip}%
\url{##2}\par}\endgroup}%
- \def\orcid##1##2{\begingroup
- \@ifnotempty{##2}{\nobreak\indent
- \@ifnotempty{##1}{, \ignorespaces##1\unskip}%
- ORCID: ##2\par}\endgroup}%
+ \def\orcid##1{\begingroup
+ \@ifnotempty{##1}{\nobreak\indent
+ ORCID: ##1\par}\endgroup}%
\addresses
\endgroup
}
diff --git a/macros/latex/contrib/aomart/aomart.pdf b/macros/latex/contrib/aomart/aomart.pdf
index ec0a495c5d..0c7d7e9373 100644
--- a/macros/latex/contrib/aomart/aomart.pdf
+++ b/macros/latex/contrib/aomart/aomart.pdf
Binary files differ
diff --git a/macros/latex/contrib/aomart/aomfrench.pdf b/macros/latex/contrib/aomart/aomfrench.pdf
index 91b285a449..2c517705c2 100644
--- a/macros/latex/contrib/aomart/aomfrench.pdf
+++ b/macros/latex/contrib/aomart/aomfrench.pdf
Binary files differ
diff --git a/macros/latex/contrib/aomart/aomsample.bib b/macros/latex/contrib/aomart/aomsample.bib
index 178a434963..d0f8f4c0d4 100644
--- a/macros/latex/contrib/aomart/aomsample.bib
+++ b/macros/latex/contrib/aomart/aomsample.bib
@@ -176,6 +176,7 @@ Constrained Convex Programming},
}
@article{Lenstra74,
+key = {LHO},
author= {Lenstra, Jr., Hendrik W. and Oort, Frans},
title= {Simple abelian varieties having a prescribed formal isogeny type.},
journal="J. Pure Appl. Algebra ",
diff --git a/macros/latex/contrib/aomart/aomsample.pdf b/macros/latex/contrib/aomart/aomsample.pdf
index 9b17f576a9..d336f62f2b 100644
--- a/macros/latex/contrib/aomart/aomsample.pdf
+++ b/macros/latex/contrib/aomart/aomsample.pdf
Binary files differ
diff --git a/macros/latex/contrib/aomart/aomsample.tex b/macros/latex/contrib/aomart/aomsample.tex
index f827924670..d968f37125 100644
--- a/macros/latex/contrib/aomart/aomsample.tex
+++ b/macros/latex/contrib/aomart/aomsample.tex
@@ -116,6 +116,7 @@ Fairfax, Virginia}
\fulladdress{School of Systems Biology\\
George Mason University\\
Fairfax, VA 22030}
+\orcid{0000-0003-4674-8113}
\email{borisv@lk.net}
\urladdr{http://borisv.lk.net}
\givenname{Boris}
@@ -126,11 +127,13 @@ Fairfax, VA 22030}
\givenname{Frodo}
\surname{Baggins}
\contrib{Bilbo Baggins}
+\orcid{000-0000-0000-00000}
\givenname{Bilbo}
\surname{Baggins}
\contrib[with afterword by]{Bilbo Baggins}
\givenname{Bilbo}
\surname{Baggins}
+\orcid{000-0000-0000-00000}
\address{The Unseen Univeresity}
\thanks{The class was commissioned by Annals of Mathematics}
@@ -1752,7 +1755,7 @@ agencies]{Department of Defense}{Special project Secret Defense}.
\bibliography{aomsample}
-\bibliographystyle{aomplain}
+\bibliographystyle{aomalpha}
\end{document}
\endinput
diff --git a/macros/latex/contrib/aomart/aomsample1.pdf b/macros/latex/contrib/aomart/aomsample1.pdf
index c8a115f533..23ba1d6efe 100644
--- a/macros/latex/contrib/aomart/aomsample1.pdf
+++ b/macros/latex/contrib/aomart/aomsample1.pdf
Binary files differ
diff --git a/macros/latex/contrib/aomart/aomsample1.tex b/macros/latex/contrib/aomart/aomsample1.tex
index 920c6971ef..64f966cbdd 100644
--- a/macros/latex/contrib/aomart/aomsample1.tex
+++ b/macros/latex/contrib/aomart/aomsample1.tex
@@ -116,6 +116,7 @@ Fairfax, Virginia}
\fulladdress{School of Systems Biology\\
George Mason University\\
Fairfax, VA 22030}
+\orcid{0000-0003-4674-8113}
\email{borisv@lk.net}
\urladdr{http://borisv.lk.net}
\givenname{Boris}
@@ -126,11 +127,13 @@ Fairfax, VA 22030}
\givenname{Frodo}
\surname{Baggins}
\contrib{Bilbo Baggins}
+\orcid{000-0000-0000-00000}
\givenname{Bilbo}
\surname{Baggins}
\contrib[with afterword by]{Bilbo Baggins}
\givenname{Bilbo}
\surname{Baggins}
+\orcid{000-0000-0000-00000}
\address{The Unseen Univeresity}
\thanks{The class was commissioned by Annals of Mathematics}
@@ -1751,7 +1754,7 @@ agencies]{Department of Defense}{Special project Secret Defense}.
\bibliography{aomsample}
-\bibliographystyle{aomplain}
+\bibliographystyle{aomalpha}
\end{document}
\endinput
diff --git a/macros/latex/contrib/asmeconf/README.md b/macros/latex/contrib/asmeconf/README.md
index 2c07a04b9b..d01de1897f 100644
--- a/macros/latex/contrib/asmeconf/README.md
+++ b/macros/latex/contrib/asmeconf/README.md
@@ -1,7 +1,7 @@
#asmeconf: A latex template for ASME conference papers#
- Version 1.37 dated 2024/02/06.
+ Version 1.38 dated 2024/08/01.
####Overview####
This class provides a LaTeX template for ASME Conference papers formatted according to
@@ -80,23 +80,37 @@
####Change log####
+ v1.38 (2024/08/01)
+ - Add dcolumn type ",{x.y}" to center numbers on a comma separator
+ - Change appendix section titles block format, rather than hanging indentation
+ - Replace sample French appendix by a German appendix
+ - Fix bug in \[main=\] option (for babel)
+ - Define commands \\@title and \\@author
+ - Code clean-up (compatibility code, bookmark package loading, twocolumn loading,...)
+ - Various code changes to better support future tagged pdf
+ - Update documentation for using fontspec with asmeconf
+ - Rescale Termes, Helvetica, and Inconsolata fontdimens under LuaLaTeX to match pdfTeX
+ - Add logic to asme-template.tex to test for presence of non-latin fonts under LuaLaTeX
+ - Change code for Japanese fonts to by-pass bug in luatexja-fontspec
+ - Correct typo in babel font loading for traditional Chinese
+ - Remove calls for Harfbuzz renderer since fontspec handles this internally
+
v1.37 (2024/02/06)
- - Under luaLaTeX, fontspec is now loaded by default. The option [nofontspec] will prevent this.
- - Eliminate the following long-deprecated options: [oldauthor, lang, lang-second, lang-third]
- - newtxtext has removed the superiors font options (Jan 2024). As a result, the option [nodefaultsups] has been removed from asmeconf, along with supporting code
+ - Under LuaLaTeX, fontspec is now loaded by default. The option \[nofontspec\] will prevent this.
+ - Eliminate the following long-deprecated options: \[oldauthor, lang, lang-second, lang-third\]
+ - newtxtext has removed the superiors font options (Jan 2024). As a result, the option \[nodefaultsups\] has been removed from asmeconf, along with supporting code
- Streamline code for option handling and compatibility testing; other code clean-up
- Switch code handling successive footnotes to expl3, adjust intersecting code
- Small code changes to accommodate future tagged pdf
- Refresh sample figures, edit sample bib file
- Edits to asmeconf.bst: fix punctuation and spacing in journal title macros
-
-
+
v1.36 (2023/12/28)
- Change option-passing to xcolor package to address recent changes that package's code which lead to an error message.
v1.35 (2023/10/19)
- Adjust pdf-a code to accommodate recent changes to hyperxmp package. NOTE: \\DocumentMetadata{ ..} is now preferred to using class option [pdf-a].
- - Add option to not use boldface text in captions: [unboldcaption]
+ - Add option to not use boldface text in captions: \[unboldcaption\]
- Add mathversion sans for sans-serif math and set as default in unbolded captions
v1.34 (2022/12/30)
@@ -131,7 +145,7 @@
v1.27 (2021/12/26):
- fix bug in captions that appeared in Jan. 2021 (code not uppercasing caption text)
- revise code to switch to grid-style author block through a single package option, \[grid\]; previous macros for grid-style remain active.
- - various code modifications to enable older LaTeX distributions to run this class. With pdfLaTeX, TeX Live 2016 or later should be used; with luaLaTeX, TeX Live 2021 or later should be used.
+ - various code modifications to enable older LaTeX distributions to run this class. With pdfLaTeX, TeX Live 2016 or later should be used; with LuaLaTeX, TeX Live 2021 or later should be used.
- eliminate use of \\entry{} with a single argument to produce subheadings in nomenclature; use \\EntryHeading{} instead. (**not backward compatible**)
- incorporate recent changes to LaTeX pdf management in relation to pdf-a color profile loading and recently deprecated \\pdfcatalog command
- minor edits in relation to url links
diff --git a/macros/latex/contrib/asmeconf/asmeconf-sample.bib b/macros/latex/contrib/asmeconf/asmeconf-sample.bib
index 158b0f0081..66b2a356cf 100644
--- a/macros/latex/contrib/asmeconf/asmeconf-sample.bib
+++ b/macros/latex/contrib/asmeconf/asmeconf-sample.bib
@@ -1,6 +1,6 @@
%% Sample bibliography file for asmeconf.bst and asmeconf.cls
%%
-%% Revised 25 January 2024
+%% Revised 26 July 2024
%% Copyright John H. Lienhard, MIT
%% Offered under the MIT license: https://ctan.org/license/mit
@@ -212,6 +212,18 @@
urldate = {January 18, 2021},
}
+@article{pohlhausen1921,
+ author = {Pohlhausen, E.},
+ title = {Der {W}\"{a}rmeaustausch zwischen festen K\"{o}rpern und {F}l\"{u}ssigkeiten mit kleiner reibung und kleiner {W}\"{a}rmeleitung},
+ journal = {Zeitschrift f\"{u}r {A}ngewandte {M}athematik und {Me}chanik},
+ volume = {1},
+ number = {2},
+ pages = {115--121},
+ doi = {10.1002/zamm.19210010205},
+ year = {1921},
+}
+%url = {https://onlinelibrary.wiley.com/doi/abs/10.1002/zamm.19210010205},
+
@book{fourier1822,
author = {Jean Baptiste Joseph Fourier},
year = {1822},
diff --git a/macros/latex/contrib/asmeconf/asmeconf-template.pdf b/macros/latex/contrib/asmeconf/asmeconf-template.pdf
index 0e628963d3..8e3eefb516 100644
--- a/macros/latex/contrib/asmeconf/asmeconf-template.pdf
+++ b/macros/latex/contrib/asmeconf/asmeconf-template.pdf
Binary files differ
diff --git a/macros/latex/contrib/asmeconf/asmeconf-template.tex b/macros/latex/contrib/asmeconf/asmeconf-template.tex
index 84eecfb071..a325b89357 100644
--- a/macros/latex/contrib/asmeconf/asmeconf-template.tex
+++ b/macros/latex/contrib/asmeconf/asmeconf-template.tex
@@ -4,7 +4,7 @@
%% This file is asmeconf-template.tex, a LaTeX template to format ASME Conference papers according to
%% the requirements on ASME's conference web pages, and including hypertext support for the pdf.
%%
-%% This file is version 1.37 dated 2024/02/06
+%% This file is version 1.38 dated 2024/08/01
%%
%% As of version 1.11, this template defaults to ASME's newer conference guidelines first posted July 2019.
%% Those guidelines changed the requested author block formatting to be inline.
@@ -71,8 +71,8 @@
%% * See Appendix B for details.
%% * Language support is most extensive when running LuaLaTeX, which automatically loads fontspec, but
%% * be aware that you may to install additional fonts on your system to use fontspec.
-%% *
-%% * To use LuaLaTeX without bothering about extra fonts, use the [nofontspec] option to asmeconf.
+%%
+%% * Option to use LuaLaTeX **without** bothering about extra fonts, [nofontspec]
%%
%% The use of commands defined or modified by the asmeconf class is illustrated throughout this file. In particular,
%% ASME requires capitalized, sans-serif section headings, and as a result some care is needed when using macros
@@ -93,13 +93,13 @@
%% STRONGLY RECOMMENDED new pdf management code follows.
%% This addition the LaTeX kernel was made in June 2022 by the LaTeX Project team.
%% https://www.latex-project.org/news/latex2e-news/ltnews35.pdf
-%% Uncomment the next lines and omit the option [pdf-a] from \documentclass[...]{asemconf}
+%% If this doesn't work for you, comment out the next lines and add option [pdf-a] to \documentclass[...]{asmeconf}
-%\DocumentMetadata{%
-% pdfstandard=A-3b,% A-2b, A-2u, A-3b, or A-3u (don't use u options with LuaLaTeX)
-% pdfversion=1.7,
-% lang=en-US,
-%}
+\DocumentMetadata{%
+ pdfstandard=A-3b,% A-2b, A-2u, A-3b, or A-3u (don't use u options with LuaLaTeX)
+ pdfversion=1.7,
+ lang=en-US,
+}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -108,7 +108,7 @@
%% Remove the [colorlinks] option before *final* submission to ASME, to get black text for printing,
%% but keep that option for other uses.
-\documentclass[pdf-a,balance,colorlinks,upint,subscriptcorrection,varvw,mathalfa=cal=boondoxo, spanish,french,vietnamese,russian,greek]{asmeconf}
+\documentclass[balance,colorlinks,upint,subscriptcorrection,varvw,mathalfa=cal=boondoxo, german,spanish,vietnamese,russian,greek]{asmeconf}
%%%%% pdf metadata %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -121,6 +121,7 @@
pdflicenseurl={https://ctan.org/pkg/asmeconf},% may delete
}
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
@@ -154,7 +155,7 @@
% \JointFirstAuthor, if applicable, follows the affiliation of the relevant authors, no spaces.
\SetAuthors{%
- John H.\ Lienhard\affil{1}\JointFirstAuthor\CorrespondingAuthor{},
+ John H. Lienhard\affil{1}\JointFirstAuthor\CorrespondingAuthor{},
Luis Hern\'andez\affil{2}\JointFirstAuthor,
Maria Silva\affil{3},
Henry Tudor\affil{4},
@@ -183,7 +184,6 @@
%%%%% End of fields to be completed. Now write your paper. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%% ABSTRACT %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%% Abstract should be 200 words or less
@@ -314,16 +314,18 @@ Run 12 & 24 & 68.3 \\
%%%%%%%%%%%%%%% begin more complicated table %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% note column set as a 3 cm wide paragraph with 1em hanging indentation. See array package documentation.
+% note numbers centered on "." (with d{3.3}) and on "," (with ,{3.3}). See dcolumn package documentation.
\begin{table}[t]
\caption{Table with more complicated columns}\label{tab:2}%
\centering{%
-\begin{tabular}{!{\hspace*{0.5cm}} >{\raggedright\hangindent=1em} p{3cm} d{3.3} @{\hspace*{1cm}} d{3.3} !{\hspace*{0.5cm}}}
+\begin{tabular}{!{\hspace*{0.5cm}} >{\raggedright\hangindent=1em} p{3cm} d{3.3} @{\hspace*{1cm}} ,{3.3} !{\hspace*{0.5cm}}}
\toprule
Experiment & \multicolumn{1}{c@{\hspace*{1cm}}}{$u$ [m/s]} & \multicolumn{1}{c!{\hspace*{0.5cm}}}{$T$ [\textdegree C]} \\
\midrule
-The first test we ran this morning & 124.3 & 68.3 \\
-The second test we ran this morning & 82.50 & 103.46 \\
-Our competitor's test & 72.321 & 141.384 \\
+The first test we ran this morning & 124.3 & 68,3 \\
+The second test we ran this morning & 82.50 & 103,46 \\
+Our competitor's test & 72.321 & 141,384 \\
\bottomrule
\end{tabular}
}
@@ -444,7 +446,7 @@ Math italics are used for Roman and Greek letters by default. If you want an up
\begin{equation}\label{eqn:dw}
\vec{F} = m \vec{a} \quad\textrm{or}\quad \vec{\mathrm{F}} = m \vec{\mathrm{a}} \quad\textrm{or}\quad \mathbf{F} = m \mathbf{a} \quad\textrm{or}\quad \vec{\mathsf{F}} = m \vec{\mathsf{a}}
\end{equation}
-To get additional symbols in bold math, use the \verb|\bm{..}| macro from the \texttt{bm} package (which is loaded by the class) or, for longer passages, use \verb|{\mathversion{bold}|\ldots\texttt{\}}.
+To get additional symbols in bold math, use the \verb|\bm{..}| macro from the \texttt{bm} package (which is loaded by the class) or, for longer passages, use \verb|{\mathversion{bold}..|\texttt{\}}.
The class file also provides upright sans-serif Greek letters with \verb|\sfalpha| and similar expressions (e.g., $\sfalpha, \sfbeta, \sfgamma, \sfdelta$ \ldots $\bm{\sfalpha, \sfbeta, \sfgamma, \sfdelta \ldots}$), in case they are needed (but note that the \verb|newtxmath| options \verb|frenchmath| and \verb|slantedGreek| also affect how Greek letters are presented).
@@ -555,7 +557,9 @@ The \hologo{LuaLaTeX} engine is useful with \texttt{asmeconf} in two situations:
\item \textbf{Executing lua code directly in your \LaTeX\ file.} With lua code, complicated functions can be plotted or numerical integration can be executed. An example file in the distribution demonstrates this capability~\cite{lienhard2024}. In this situation, \textit{be sure to use the class option} \texttt{[nofontspec]}, so that you won't need to install additional fonts on your computer.
-\item \textbf{Using complex alphabets.} With \hologo{pdfLaTeX}, the \texttt{asmeconf} package supports Latin alphabets, as well as Cyrillic, Greek, and Vietnamese. If you need scripts such as Arabic, Chinese, or Japanese, \hologo{LuaLaTeX} with the \texttt{fontspec} package can use fonts installed in your computer operating system. See the example file in this distribution for more details~\cite{lienhard2021}.
+\item \textbf{Using complex alphabets.} With \hologo{pdfLaTeX}, the \texttt{asmeconf} package supports Latin alphabets, as well as Cyrillic, Greek, and Vietnamese. If you need scripts such as Arabic, Chinese, or Japanese, \hologo{LuaLaTeX} with the \texttt{fontspec} package can use fonts installed in your computer operating system.\footnote{For English, you \textit{must} have these fonts installed:\par \parbox{\columnwidth}{\setlength{\parindent}{12pt}TeX Gyre Termes (\hrefurl{https://ctan.org/tex-archive/fonts/newtx/opentype}{ctan.org/tex-archive/fonts/newtx/opentype}),\par TeX~Gyre~Heros (\hrefurl{https://ctan.org/tex-archive/fonts/tex-gyre/opentype}{ctan.org/tex-archive/fonts/tex-gyre/opentype}),\par
+Inconsolatazi4 (\hrefurl{https://ctan.org/tex-archive/fonts/inconsolata/opentype}{ctan.org/tex-archive/fonts/inconsolata/opentype}).}} See the example file in this distribution for more details~\cite{lienhard2021}.
+
\end{description}
@@ -572,9 +576,10 @@ abstract in another language.
When more than one language option is included in \verb|\documentclass[..]{asmeconf}|, English will be
set as the document's main language. (To choose a different main language, set \texttt{[main=..]}).
-If no language options are given, the package defaults to English. As examples, a passage in French is
-shown in \selectlanguage{french}\appendixname~\ref{app:fourier}\selectlanguage{english}, followed by
-\ifpdftex abstracts in Spanish, Greek, Russian, and Vietnamese.\else abstracts in other languages.\fi
+If no language options are given, the package defaults to English. As examples, a passage in German is
+shown in \selectlanguage{german}\appendixname~\ref{app:pohlhausen}\selectlanguage{german},
+%\selectlanguage{french}\appendixname~\ref{app:fourier}\selectlanguage{english},
+followed by \ifpdftex abstracts in Spanish, Greek, Russian, and Vietnamese.\else abstracts in other languages.\fi
The input encoding can be utf-8, as for these glyphs:
%% If you have trouble with the next line, your file may not be saved in utf-8 format. You can delete that line to resolve the issue.
@@ -588,12 +593,18 @@ The bibliography style, \texttt{asmeconf.bst}, is designed in English and aimed
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\begin{selectlanguage}{french}%
-\section{Discours Préliminaire de Fourier}\label{app:fourier}
-Les causes primordiales ne nous sont point con­nues; mais elles sont assujetties à des lois simples et constantes, que l'on peut découvrir par l'obser­vation, et dont l'étude est l'objet de la philosophie naturelle.
-
-La chale ur pénètre, comme la gravité, toutes les substances de l'univers, ses rayons occupent toutes les parties de l'espace. Le but de notre ouvrage est d'exposer les lois mathématiques que suit cet élé­ment. Cette théorie formera désormais une des branches les plus importantes de la physique gé­nérale~\cite{fourier1822}.
+\begin{selectlanguage}{german}%
+\section{Wärmeaustausch und Reibungswiderstand (\NoCaseChange{von} E. Pohlhausen)}\label{app:pohlhausen}
+In einer strömenden Flussigkeit sind Wärmeleitung und Wärmekonvektion Vorgänge, die mit der inneren Reibung (oder Impulsleitung) und mit der Impulskonvektion große Aehnlichkeit besitzen. Mathematisch findet dies seinen Ausdruck in dem gleichartigen Bau der Differentialgleichungen, die einerseits für die Temperatur und anderseits für den Geschwindigkeitsvektor in der Flüssigkeit bestehen. Man kann daraus auf eine Beziehung
+zwischen dem Wärmeaustanch und dem Reibungswiderstand schließen, die eine strömende Flüssigkeit an einem festen Körper hervorrufen. Dies ist zuerst von Prandtl ausgesprochen und durchgeführt worden, und zwar für turbulente Vorgänge, unter der vereinfachenden Annahme von Wärmequellen und -senken im Innern der Flüssigkeit~\cite{pohlhausen1921}.
\end{selectlanguage}%
+
+%\begin{selectlanguage}{french}%
+%\section{Discours Préliminaire de Fourier}\label{app:fourier}
+%Les causes primordiales ne nous sont point con­nues; mais elles sont assujetties à des lois simples et constantes, que l'on peut découvrir par l'obser­vation, et dont l'étude est l'objet de la philosophie naturelle.
+%
+%La chale ur pénètre, comme la gravité, toutes les substances de l'univers, ses rayons occupent toutes les parties de l'espace. Le but de notre ouvrage est d'exposer les lois mathématiques que suit cet élé­ment. Cette théorie formera désormais une des branches les plus importantes de la physique gé­nérale~\cite{fourier1822}.
+%\end{selectlanguage}%
\begin{selectlanguage}{spanish}%
\begin{abstract*}
@@ -625,19 +636,25 @@ Este es el resumen del artículo. Escribimos en español. Se describen el proble
\end{selectlanguage}% Checked and edited by Nguyen Le and Thao Nguyen
\fi
-\iffontspecloaded %%% requires lualatex
+\iffontspecloaded %%% These passages require using lualatex AND installing the mentioned fonts as system fonts on your computer.
%
- \begin{selectlanguage}{greek}%
- \begin{abstract*}
- Αυτή είναι η περίληψη του άρθρου. Χρησιμοποιούμε την ελληνική γλώσσα. Περιγράφεται το πρόβλημα, οι μέθοδοι και τα αποτελέσματα. Περιλαμβάνονται επίσης αναφορές.
- \end{abstract*}
- \end{selectlanguage}% Edited by George Barbastathis
-%
- \begin{selectlanguage}{russian}
- \begin{abstract*}
- Это резюме статьи. Пишем по русски. Описаны проблема, методы и результаты. Библиография также включена.%
- \end{abstract*}
- \end{selectlanguage}% edited by Steven Gerasimoff
+ \IfFontExistsTF{NotoSans}{
+ \IfFontExistsTF{NotoSerif}{
+ %
+ \begin{selectlanguage}{greek}%
+ \begin{abstract*}
+ Αυτή είναι η περίληψη του άρθρου. Χρησιμοποιούμε την ελληνική γλώσσα. Περιγράφεται το πρόβλημα, οι μέθοδοι και τα αποτελέσματα. Περιλαμβάνονται επίσης αναφορές.
+ \end{abstract*}
+ \end{selectlanguage}% Edited by George Barbastathis
+ %
+ \begin{selectlanguage}{russian}
+ \begin{abstract*}
+ Это резюме статьи. Пишем по русски. Описаны проблема, методы и результаты. Библиография также включена.%
+ \end{abstract*}
+ \end{selectlanguage}% edited by Steven Gerasimoff
+ %
+ }{\ClassWarning{\ClassName}{I can't find NotoSerif.ttf, which is needed for Greek and Russian language text. Please install that font.}}
+ }{\ClassWarning{\ClassName}{I can't find NotoSans.ttf, which is needed for Greek and Russian language text. Please install that font.}}
%
\begin{selectlanguage}{vietnamese}
\begin{abstract*}
@@ -645,24 +662,41 @@ Este es el resumen del artículo. Escribimos en español. Se describen el proble
\end{abstract*}
\end{selectlanguage}% Checked and edited by Nguyen Le and Thao Nguyen
%
-% \begin{selectlanguage}{japanese}% Use class option [japanese] if you uncomment this passage.
-% \begin{abstract*}
-% % 論文の要約です。日本語で記述します。問題、方法、および結果について説明します。また、参考文献も含めます。
-% この論文の日本語での要約は以下のとおりです。問題、方法、および結果が説明されています。参考資料も添付してあります。
-% \end{abstract*}
-% \end{selectlanguage}% Edited by Keiji Yano and Yoshiki Okamoto
%
- \begin{selectlanguage}{korean}
- \begin{abstract*}
- 이것은 한국어로 쓰인 논문의 초록입니다. 문제, 방법 및 결과가 설명되어 있습니다. 참조도 포함됩니다.
- \end{abstract*}
- \end{selectlanguage}% Edited by Hyung Won Chung.
+%% Use class option [japanese] if you uncomment this passage.
+% \IfFontExistsTF{NotoSerifCJKjp}{%
+% \IfFontExistsTF{NotoSansCJKjp}{%
+% %
+% \begin{selectlanguage}{japanese}
+% \begin{abstract*}
+% % 論文の要約です。日本語で記述します。問題、方法、および結果について説明します。また、参考文献も含めます。
+% この論文の日本語での要約は以下のとおりです。問題、方法、および結果が説明されています。参考資料も添付してあります。
+% \end{abstract*}
+% \end{selectlanguage}% Edited by Keiji Yano and Yoshiki Okamoto
+% %
+% }{\ClassWarning{\ClassName}{I can't find NotoSerifCJKjp, which is needed for Japanese language text. Please install that font.}}
+% }{\ClassWarning{\ClassName}{I can't find NotoSansCJKjp, which is needed for Japanese language text. Please install that font.}}
%
- \begin{selectlanguage}{chinese-simplified}
- \begin{abstract*}
- 这是文章的摘要。我们用中文书写,描述了问题,方法和结果,还包括了参考文献。
- \end{abstract*}
- \end{selectlanguage}% edited by Zi Hao Foo
+ \IfFontExistsTF{NotoSansCJKkr}{%
+ \IfFontExistsTF{NotoSerifCJKkr}{%
+ %
+ \begin{selectlanguage}{korean}
+ \begin{abstract*}
+ 이것은 한국어로 쓰인 논문의 초록입니다. 문제, 방법 및 결과가 설명되어 있습니다. 참조도 포함됩니다.
+ \end{abstract*}
+ \end{selectlanguage}% Edited by Hyung Won Chung.
+ %
+ }{\ClassWarning{\ClassName}{I can't find NotoSerifCJKkr.otf, which is needed for Korean language text. Please install that font.}}
+ %
+ \IfFontExistsTF{NotoSerifCJKsc}{%
+ \begin{selectlanguage}{chinese-simplified}
+ \begin{abstract*}
+ 这是文章的摘要。我们用中文书写,描述了问题,方法和结果,还包括了参考文献。
+ \end{abstract*}
+ \end{selectlanguage}% edited by Zi Hao Foo
+ %
+ }{\ClassWarning{\ClassName}{I can't find NotoSerifCJKsc.otf, which is needed for Korean language text. Please install that font.}}
+ }{\ClassWarning{\ClassName}{I can't find NotoSansCJK.ttf, which is needed for Korean and simplified Chinese text. Please install that font.}}
%
\fi
diff --git a/macros/latex/contrib/asmeconf/asmeconf.cls b/macros/latex/contrib/asmeconf/asmeconf.cls
index 186e5d4941..82ccbc2614 100644
--- a/macros/latex/contrib/asmeconf/asmeconf.cls
+++ b/macros/latex/contrib/asmeconf/asmeconf.cls
@@ -5,8 +5,8 @@
%% ASME conference requirements as represented on ASME's conference web pages in 2024.
%%
%% This file's version and date:
- \def\versionno{1.37}
- \def\versiondate{2024/02/06\space}
+ \def\versionno{1.38}
+ \def\versiondate{2024/08/01\space}
%%
%% Author: John H. Lienhard, V
%% Department of Mechanical Engineering
@@ -23,7 +23,7 @@
%% 6. Provide line numbers for editing and review
%% 7. Support balancing length of columns on last page
%% 8. Provide copyright footer for federal employees and contractors
-%% 9. Support the archival PDF/A standards 1b, 2b, 2u, 3b, and 3u
+%% 9. Support archival PDF/A standards
%% 10. Enable various math and text features from the newtxmath and newtxtext packages
%% 11. Support inclusion of passages in languages other than English
%%
@@ -66,74 +66,76 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{asmeconf}[\versiondate ASME Conference Paper LaTeX Template (JHL)]
-\LoadClass[twoside,twocolumn,10pt]{article}
+\LoadClass[twoside,10pt]{article}% twocolumn is initiated in \MakeTitle
% Even/odd page layout is not used in ASME's specs, although the papers are printed in two-sided format.
\RequirePackage{iftex}% provides \ifpdftex (many) & \ifluatex (once)
\RequirePackage{ifthen}% ifthenelse (many) & \whiledo (once)
-\RequirePackage{etoolbox}% using patchcmd in 4 places
+\RequirePackage{etoolbox}% using patchcmd in 4 or 5 places
+\ExplSyntaxOn
+ \str_const:Nn \ClassName {asmeconf}
+\ExplSyntaxOff
+
+%%%%%%%%%%%%% Compatibility codes for older distributions %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%% Test compatibility of older distributions %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion}% compare version to date; \If... added to latex 2020/10/01
+\providecommand\IfPackageAtLeastTF{\@ifpackagelater}% compare version to date; \If... added to latex 2020/10/01
+\providecommand\IfPDFManagementActiveTF{\@secondoftwo}% \If... added to latex 2021/07/23
+\providecommand\IfPackageLoadedTF{\@ifpackageloaded}% \If...added to latex 2021/11/15
+\providecommand\ClassNoteNoLine[2]{\typeout{^^JClass Note #1: #2.^^J}}% log & terminal note... added to latex 2021/11/15
-\providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion}% compare version to date; \If... added to latex 2020/10/01
-\providecommand\IfPackageAtLeastTF{\@ifpackagelater}% compare version to date; \If... added to latex 2020/10/01
-\providecommand\IfPackageLoadedTF{\@ifpackageloaded}% \If...added to latex 2021/11/15
+\IfFormatAtLeastTF{2020/10/01}{\relax}{%
+ \ClassError{\ClassName}{Your LaTeX format is dated \fmtversion. Formats dated 2020/10/01 or later are recommended for the asmejour class. Older formats and packages may generate errors or fail entirely!}{Please UPDATE your LaTeX distribution to obtain best results. TeX Live is available for download at no charge: \string https://www.tug.org/texlive/. You can try to click past the errors for now.}%
+}
+
+% check whether pdfmanagement (\DocumentMetadata) has been loaded (else fall back to hyperxmp and bookmark packages after loading hyperref)
+\newif\ifasme@pdfmanagement
+\IfPDFManagementActiveTF{
+ \asme@pdfmanagementtrue
+}{
+ \asme@pdfmanagementfalse
+ \ClassWarningNoLine{\ClassName}{pdfmanagement is not active. Will load hyperxmp and bookmark packages instead}
+}
-\IfFormatAtLeastTF{2020/10/01}{%
- \ClassInfo{asmeconf}{Your LaTeX format is dated \fmtversion. LaTeX distributions 2020/10/01 or later are strongly recommended for best results}
- }{%
- \ClassError{asmeconf}{Your LaTeX format is dated \fmtversion. Formats dated 2020/10/01 or later are recommended for the asmejour class. Older formats and packages may generate errors or fail entirely!}{Please UPDATE your LaTeX distribution to obtain best results. TeX Live is available for download at no charge: \string https://www.tug.org/texlive/. You can try to click past the errors for now.}%
+% Allow pre 2021/11/15 formats to see the graphicx alt key without causing an error
+\IfFormatAtLeastTF{2021/11/15}{
+ \relax
+}{
+ \AtBeginDocument{
+ \IfPackageLoadedTF{graphicx}{\define@key{Gin}{alt}{}}{\relax}
+ }
}
+% Enable pre-2020/10 formats to access essential macros later moved into LaTeX kernel
\ifdefined\NewDocumentCommand\else
\RequirePackage{xparse}% enable older installations to access features in LaTeX kernel since 2020/10/01; but need at least 2018/04...
\fi
-\DeclareDocumentCommand\LogNote{m}{%
- \IfFormatAtLeastTF{2021/11/15}{%
- \ClassNoteNoLine{asmeconf}{#1}% Added to LaTeX in Nov. 2021
- }{%
- \ClassWarningNoLine{asmeconf}{#1}%
- }
+% Provide pre-2020/10 installations with basic unicode character mappings
+\IfFormatAtLeastTF{2020/10/01}{\relax}{%
+\ifpdftex
+ \pdfgentounicode=1 %% enable CMaps; was moved into the latex kernel Oct 2020
+ \input glyphtounicode.tex %% lists of mappings; was moved into the latex kernel Oct 2020
+\fi
}
\IfPackageAtLeastTF{iftex}{2019/11/07}{\relax}{%
- \ClassError{asemconf}{Package iftex is too old. Go to \string https://ctan.org and download an up-to-date version.}%
+ \ClassError{\ClassName}{Package iftex is too old. Go to \string https://ctan.org and download an up-to-date version.}{%
+ Your latex installation does not have an up-to-date version of the package iftex. You can get it at CTAN: \string https://ctan.org.}
}
-%% Test whether \DocumentMetadata has been loaded (Thank you Ulrike Fischer)
-\newif\if@asme@pdfmanagement
-% \IfPDFManagementActiveTF{\@asme@pdfmanagementtrue}{\@asme@pdfmanagementfalse}% New 2021/07/23, don't implement yet
-\ExplSyntaxOn
- \IfFormatAtLeastTF{2020/02/02}{%
- \bool_if:nTF
- {
- \bool_lazy_and_p:nn
- {\cs_if_exist_p:N \pdfmanagement_if_active_p:}
- { \pdfmanagement_if_active_p: }
- }
- {
- \@asme@pdfmanagementtrue
- }
- {
- \@asme@pdfmanagementfalse
- }
- }{\@asme@pdfmanagementfalse}
-\ExplSyntaxOff
-
-
%%%%%%%%%%%%%% Options for the class %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\RequirePackage{kvoptions}
\SetupKeyvalOptions{
- family=asmeconf,
+ family=\ClassName,
prefix=asmeconf@,
setkeys=\kvsetkeys,
}
%%% set key [colorlinks] to have colored hyperlinks, rather than black links (use a key with new pdfmanagement, 2021/12/01)
-\define@key{asmeconf}{colorlinks}[colorlinks]{%
+\define@key{\ClassName}{colorlinks}[colorlinks]{%
\PassOptionsToPackage{#1}{hyperref}%
}
@@ -182,12 +184,11 @@
\ifthenelse{\equal{#1}{\ac@main}}{\ac@cyrillictrue\def\ac@TtwoA{T2A}}{\relax}% comparing strings
}
-\define@key{asmeconf}{main}[english]{%
+\define@key{\ClassName}{main}{% remove default 2024/07/26, to avoid conflict with subsequent logic
\PassOptionsToPackage{main=#1,#1}{babel}% added #1 resolves conflict of russianb.ldf & ukrainianb.ldf under "main=".
\ac@mainsettrue
\ifthenelse{\equal{#1}{english}}{%
- \PassOptionsToPackage{pdflang=en}{hyperref}}{%
- \LogNote{Selecting #1 as the primary language}%
+ \ClassNoteNoLine{\ClassName}{Selecting #1 as the primary language}%
\ifthenelse{\equal{#1}{greek}}{%
\ac@greektrue
\def\ac@LGR{LGR}%
@@ -201,7 +202,7 @@
\@FindCyr{russian;belarusian;bulgarian;macedonian;serbianc;ukrainian}
}%
}
-\define@key{asmeconf}{vietnamese}[]{%
+\define@key{\ClassName}{vietnamese}[]{%
\RequirePackage[vietnamese=nohyphenation]{hyphsubst}% using key, not option, to allow loading package w/o babel warning.
\PassOptionsToPackage{vietnamese.noencoding}{babel}% modified.noencoding suppresses unnecessary warning about inputenc
\ac@vietnamesetrue
@@ -209,21 +210,20 @@
}
\DeclareDefaultOption{}% suppress warnings about unused options
-\ProcessKeyvalOptions{asmeconf}
+\ProcessKeyvalOptions{\ClassName}
-%% if main language was not chosen explicitly, default to English
+%% if main language was not chosen explicitly, ensure default to English
\ifac@mainset\relax\else
\PassOptionsToPackage{main=english}{babel}%
- \PassOptionsToPackage{pdflang=en}{hyperref}
- \ClassInfo{asmeconf}{Selecting English as the primary language, since main= not set}%
+ \ClassInfo{\ClassName}{Selecting English as the primary language, since main= not set}%
\fi
%% Turn off these keys now that we're done with them
-\def\@KeyFamily{asmeconf}
+\def\@KeyFamily{\ClassName}
\NewDocumentCommand\ac@DisableOption{m}{%
\DisableKeyvalOption[%
action=ignore,%
- class=asmeconf%
+ class=\ClassName%
]{#1}{\@KeyFamily}%
}
\NewDocumentCommand\@DisableKeys{>{\SplitList{;}}m}{\ProcessList{#1}{\ac@DisableOption}}
@@ -249,7 +249,7 @@
\ifpdftex
\PassOptionsToPackage{largesc=true}{newtxtext}% largesc is a boolean key in newtxtext
\else
- \ClassWarningNoLine{asmeconf}{largesc option is not available under luaLateX. It will be ignored}%
+ \ClassWarningNoLine{\ClassName}{largesc option is not available under luaLateX. It will be ignored}%
\fi
}
@@ -261,21 +261,23 @@
%% option to hyphenate the inconsolata typewriter font [hyphenate] and to issue a warning when that's done.
\DeclareOption{hyphenate}{%
\ifac@fontspec
- \ClassWarningNoLine{asmeconf}{hyphenate option is not supported by fontspec, will be ignored}%
+ \ClassWarningNoLine{\ClassName}{hyphenate option is not supported by fontspec. It will be ignored}%
\else
\PassOptionsToPackage{hyphenate}{inconsolata}% hyphenate is a key via xkeyval in inconsolata
- \LogNote{Allowing hyphenation of typewriter font}%
+ \ClassNoteNoLine{\ClassName}{Allowing hyphenation of typewriter font}%
\fi
}
%% option for monospacing in inconsolata typewriter font [mono].
+\def\MonoNotMono{WordSpace={1,1,1}}% rescaled tt font to match pdf, 2024/07/28
\DeclareOption{mono}{%
\ifac@fontspec
- \def\MonoNotMono{}%
+ \def\MonoNotMono{WordSpace={1,0,0},PunctuationSpace={3}}% NB: these are the default WordSpace values. 20204/07/30
\else
\PassOptionsToPackage{mono}{inconsolata}% mono is a key via xkeyval in inconsolata
\fi
}
%% option for unslashed zero in inconsolata typewriter font [var0].
+\def\ssztwo{}% for Inconsolatazi4; default uses slashed zero, +ss02 uses regular zero
\DeclareOption{var0}{%
\ifac@fontspec
\def\ssztwo{+ss02}% stylistic alternate for regular zero
@@ -296,7 +298,7 @@
\newif\ifac@setpdfa\ac@setpdfafalse
\newif\ifac@pdfaone\ac@pdfaonefalse
-\if@asme@pdfmanagement\else
+\ifasme@pdfmanagement\else
\SetupKeyvalOptions{
family=pdfaopt,
@@ -308,7 +310,7 @@
%%% set key [pdfa] to activate pdf/a compliance (default is pdf/A-3u)
\define@key{pdfaopt}{pdf-a}[true]{%
\IfFormatAtLeastTF{2018/12/01}{\relax}{%
- \ClassError{asmeconf}{Your LaTeX format is dated \fmtversion. Formats dated 2018/12/01 or later are necessary for the [pdf-a] option. Older formats may generate errors}{Please UPDATE your LaTeX distribution to obtain best results. TeX Live is available for download at no charge: \string https://www.tug.org/texlive/. Meanwhile, you can remove the [pdf-a] option and try again}%
+ \ClassError{\ClassName}{Your LaTeX format is dated \fmtversion. Formats dated 2018/12/01 or later are necessary for the [pdf-a] option. Older formats may generate errors}{Please UPDATE your LaTeX distribution to obtain best results. TeX Live is available for download at no charge: \string https://www.tug.org/texlive/. Meanwhile, you can remove the [pdf-a] option and try again}%
}
\ac@setpdfatrue
\PassOptionsToPackage{pdfa}{hyperref}
@@ -344,7 +346,7 @@
%%%%%%%%%%%% PDF/A compliance related %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\if@asme@pdfmanagement\else
+\ifasme@pdfmanagement\else
\ifpdftex
\ifac@pdfaone
\pdfminorversion=4 % for pdf/a-1 need version 4, not 7
@@ -353,7 +355,7 @@
\fi
\else
\ifluatex
- \ifac@setpdfa\ClassWarningNoLine{asmeconf}{pdf-a option requires pdfLaTeX engine. Under LuaLaTeX, use %
+ \ifac@setpdfa\ClassWarningNoLine{\ClassName}{pdf-a option requires pdfLaTeX engine. Under LuaLaTeX, use %
\protect\DocumentMetadata{pdfstandard=A-3b} before \protect\documentclass[..]{asmeconf}}%
\fi
\directlua{
@@ -367,7 +369,7 @@
end
}
\else
- \ClassError{asmeconf}{Please use either pdfLaTeX or LuaLaTeX}{This class has NOT been configured to support other engines, and the results will be unpredictable. Exit and rerun using either pdfLaTeX or LuaLaTeX.}%
+ \ClassError{\ClassName}{Please use either pdfLaTeX or LuaLaTeX}{This class has NOT been configured to support other engines, and the results will be unpredictable. Exit and rerun using either pdfLaTeX or LuaLaTeX.}%
\fi
\fi
\fi
@@ -381,19 +383,17 @@
\ifpdftex
\ifasmeconf@nofontspec
- \ClassWarningNoLine{asmeconf}{The [nofontspec] option requires LuaLaTeX. It will be ignored under pdfLaTeX}%
+ \ClassWarningNoLine{\ClassName}{The [nofontspec] option requires LuaLaTeX. It will be ignored under pdfLaTeX}%
\fi
\else
\ifasmeconf@nofontspec
- \ClassWarningNoLine{asmeconf}{The [nofontspec] option has been issued. LuaLaTeX will run without font support}%
+ \ClassWarningNoLine{\ClassName}{The [nofontspec] option has been issued. LuaLaTeX will run without font support}%
\else
\IfFormatAtLeastTF{2020/10/01}{%
\ac@fontspectrue
\fontspecloadedtrue
- \def\ssztwo{}% for Inconsolatazi4; default uses slashed zero, +ss02 uses regular zero
- \def\MonoNotMono{WordSpace={1,1.33,1.67}}% for Inconsolatazi4; default allows word spacing (is not mono)
}{%
- \ClassError{asmeconf}{Your LaTeX format is dated \fmtversion. LaTeX installations dated 2020/10/01 or later are needed to run LuaLaTeX with the fontspec package. Fontspec will NOT be loaded. Language support will be minimal}{Please UPDATE your LaTeX distribution to obtain best results. TeX Live is available for download at no charge: \string https://www.tug.org/texlive/. You may alternatively choose the [nofontspec] option.}%
+ \ClassError{\ClassName}{Your LaTeX format is dated \fmtversion. LaTeX installations dated 2020/10/01 or later are needed to run LuaLaTeX with the fontspec package. Fontspec will NOT be loaded. Language support will be minimal}{Please UPDATE your LaTeX distribution to obtain best results. TeX Live is available for download at no charge: \string https://www.tug.org/texlive/. You may alternatively choose the [nofontspec] option.}%
}
\fi
\fi
@@ -403,7 +403,7 @@
\PassOptionsToPackage{japanese}{babel}%
\ac@japanesetrue
\else
- \ClassWarningNoLine{asmeconf}{[japanese] option is supported only under LuaLaTeX with fontspec. It will be ignored}%
+ \ClassWarningNoLine{\ClassName}{[japanese] option is supported only under LuaLaTeX with fontspec. It will be ignored}%
\fi
}
@@ -426,23 +426,23 @@
% Several languages do not have .ldf files to load. Babel will call these on demand.
%
-\DeclareOption{arabic}{\ClassError{asmeconf}{Do not specify "arabic" as a class option}{Instead, give the option [bidi=basic] and specify "arabic" when you call the language within your document.}}
+\DeclareOption{arabic}{\ClassError{\ClassName}{Do not specify "arabic" as a class option}{Instead, give the option [bidi=basic] and specify "arabic" when you call the language within your document.}}
%
-\DeclareOption{bengali}{\ClassError{asmeconf}{Do not specify "bengali" as a class option}{Babel does not have an ldf file for Bengali. Instead, specify "bengali" when you call the language within your document. No class option is needed.}}
+\DeclareOption{bengali}{\ClassError{\ClassName}{Do not specify "bengali" as a class option}{Babel does not have an ldf file for Bengali. Instead, specify "bengali" when you call the language within your document. No class option is needed.}}
%
-\DeclareOption{chinese-simplified}{\ClassError{asmeconf}{Do not specify "chinese-simplified" as class option}{Babel does not have an ldf file for simplified Chinese. Instead, specify "chinese-simplified" when you call the language within your document. No class option is needed.}}
+\DeclareOption{chinese-simplified}{\ClassError{\ClassName}{Do not specify "chinese-simplified" as class option}{Babel does not have an ldf file for simplified Chinese. Instead, specify "chinese-simplified" when you call the language within your document. No class option is needed.}}
%
-\DeclareOption{chinese-traditional}{\ClassError{asmeconf}{Do not specify "chinese-traditional" as class option}{Babel does not have an ldf file for traditional Chinese. Instead, specify "chinese-traditional" when you call the language within your document. No class option is needed.}}
+\DeclareOption{chinese-traditional}{\ClassError{\ClassName}{Do not specify "chinese-traditional" as class option}{Babel does not have an ldf file for traditional Chinese. Instead, specify "chinese-traditional" when you call the language within your document. No class option is needed.}}
%
-\DeclareOption{chinese}{\ClassError{asmeconf}{Do not specify "chinese" as a class option}{Instead, specify either "chinese-simplified" or "chinese-traditional" when you call the language within your document. No class option is needed.}}
+\DeclareOption{chinese}{\ClassError{\ClassName}{Do not specify "chinese" as a class option}{Instead, specify either "chinese-simplified" or "chinese-traditional" when you call the language within your document. No class option is needed.}}
%
-\DeclareOption{hindi}{\ClassError{asmeconf}{Do not specify "hindi" as a class option}{Babel does not have an ldf file for Hindi. Instead, specify "hindi" when you call the language within your document. No class option is needed.}}
+\DeclareOption{hindi}{\ClassError{\ClassName}{Do not specify "hindi" as a class option}{Babel does not have an ldf file for Hindi. Instead, specify "hindi" when you call the language within your document. No class option is needed.}}
%
-\DeclareOption{marathi}{\ClassError{asmeconf}{Do not specify "marathi" as a class option}{Babel does not have an ldf file for Marathi. Instead, specify "marathi" when you call the language within your document. No class option is needed.}}
+\DeclareOption{marathi}{\ClassError{\ClassName}{Do not specify "marathi" as a class option}{Babel does not have an ldf file for Marathi. Instead, specify "marathi" when you call the language within your document. No class option is needed.}}
%
-\DeclareOption{korean}{\ClassError{asmeconf}{Do not specify "korean" as class option}{Babel does not have an ldf file for Korean. Instead, specify "korean"when you call the language within your document. No class option is needed.}}
+\DeclareOption{korean}{\ClassError{\ClassName}{Do not specify "korean" as class option}{Babel does not have an ldf file for Korean. Instead, specify "korean"when you call the language within your document. No class option is needed.}}
%
-\DeclareOption{tamil}{\ClassError{asmeconf}{Do not specify "tamil" as a class option}{Babel does not have an ldf file for Tamil. Instead, specify "tamil" when you call the language within your document. No class option is needed.}}
+\DeclareOption{tamil}{\ClassError{\ClassName}{Do not specify "tamil" as a class option}{Babel does not have an ldf file for Tamil. Instead, specify "tamil" when you call the language within your document. No class option is needed.}}
%% Suppress warnings about unused global options
\DeclareOption*{}
@@ -462,23 +462,18 @@
\RequirePackage{graphicx} % removed obsolete options, 2023/11/19
\RequirePackage[dvipsnames,svgnames,x11names]{xcolor}
-% Allow pre 2021/11/15 formats to see the graphicx alt key without causing an error, in preparation for tagged pdf
-\IfFormatAtLeastTF{2021/11/15}{
- \relax
-}{
- \AtBeginDocument{
- \IfPackageLoadedTF{graphicx}{\define@key{Gin}{alt}{}}{\relax}
- }
-}
%%%%%%%%%%%% Table related %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\RequirePackage{booktabs}
\RequirePackage{array}
-\RequirePackage{dcolumn}% alignment on decimal places
-\newcolumntype{d}[1]{D{.}{.}{#1}}% NB: This conflicts with babel's Spanish language option which makes "." an active character.
- % To use "," separator, put this command in your preamble: \newcolumntype{d}[1]{D{,}{,}{#1}}
+\RequirePackage{dcolumn}% alignment on decimal places
+% use d{x.y} to center on "." as in "12.234"
+\newcolumntype{d}[1]{D{.}{.}{#1}}
+% NB: The above conflicts with babel's Spanish language option which makes "." an active character.
+% Instead, to use "," as the decimal separator, choose columntype "," (as in "12,234")
+\newcolumntype{,}[1]{D{,}{,}{#1}}
%%%%%%%%% Caption related %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -507,7 +502,7 @@
\captionsetup[table]{labelformat=uppercase,labelfont={sf,bf,small},textfont={sf,bf,small},textformat=boldmath,labelsep=colon,skip=0.5\baselineskip} %name=TABLE,
\fi
-%% This construction avoids a failure of hyperref in relation to uppercase caption
+%% This construction avoids a failure of hyperref in relation to uppercase captions
%% Discussion: https://tex.stackexchange.com/questions/375695/maketextuppercase-inside-table-captions
\AtBeginDocument{
\let\scaption\caption
@@ -542,8 +537,17 @@
\RequirePackage[no-math]{fontspec}
\defaultfontfeatures{Ligatures=TeX,}
%
- \setmainfont{TeXGyreTermesX}[% Presumes these are system fonts! Available at: http://www.gust.org.pl/projects/e-foundry/tex-gyre
- WordSpace = {1,1.4,1},%% This stretch matches newtxtext a little better. 1.4
+ \def\FontWarning{For luaLaTeX, you MUST have these OpenType fonts installed as system fonts on your computer: TeX Gyre Termes and TeX Gyre Heros (from \string http://www.gust.org.pl/projects/e-foundry/tex-gyre) and Inconsolatazi4 (\string https://ctan.org/tex-archive/fonts/inconsolata/opentype). If you DON'T have these fonts, you will see ERROR messages!}
+%
+ \IfFontExistsTF{TeX Gyre Termes}{}{\ClassWarningNoLine{\ClassName}{\FontWarning} }
+ \IfFontExistsTF{texgyreheros}{}{ \ClassWarningNoLine{\ClassName}{\FontWarning} }
+ \IfFontExistsTF{Inconsolatazi4}{}{ \ClassWarningNoLine{\ClassName}{\FontWarning} }
+%
+ % The newtx package includes a modified version of TeXGyreTermes called TexGyreTermesX, which is loaded here.
+ % Can fall back to TeXGyreTermes if desired, available at: http://www.gust.org.pl/projects/e-foundry/tex-gyre
+ \setmainfont{TeXGyreTermesX}[
+ WordSpace = {1,1.6,1.2},%% This stretch matches newtxtext a little better; rescaled 2024/07/28
+ PunctuationSpace = 1.332,%% match fontdimen7 to newtxtext, 2024/07/28
Extension = .otf,
UprightFont = *-Regular,
ItalicFont = *-Italic,
@@ -552,7 +556,7 @@
Numbers = Lining,
]
\setsansfont{texgyreheros}[% Presumes these are system fonts! Available at: http://www.gust.org.pl/projects/e-foundry/tex-gyre
- WordSpace = {1,1.4,1},
+ WordSpace = {1,1,1},% These spacings match newtxtext; rescaled to unity 2024/07/28
Extension = .otf,
UprightFont = *-regular,
ItalicFont = *-italic,
@@ -562,7 +566,6 @@
Scale=0.91,% same as for newtx; former value 0.9 too small 2022/01/15
]
\setmonofont{Inconsolatazi4}[% This otf font ships with the LaTeX Inconsolata package (it's in TeX Live)
- \MonoNotMono,% match newtxtext if we enable wordspacing
Scale=1.05,% rescaled from 1, 22/03/10
Extension = .otf,
UprightFont = *-Regular,
@@ -570,20 +573,22 @@
BoldFont = *-Bold,
BoldItalicFont = *-Bold,% has no italic face
RawFeature = {+ss01,\ssztwo,+ss03},
- ]
+ \MonoNotMono,% match newtxtext if we enable wordspacing; note wordspace def'd in option above.
+ ]
%
% For many languages, using babel commands helps font loading.
+ % Switched Harbbuzz to OpenType throughout, 2024/07/28
% Noto fonts are available at https://github.com/googlefonts
\def\Noto@scale{0.92}
\def\Ara@scale{0.91}% For the serif font only
\def\NotoBan@scale{0.92}% 1.} should probably stay consistent within the Noto family.
\def\NotoDev@scale{0.92}% 1.} should probably stay consistent within the Noto family.
\def\NotoTam@scale{0.92}
- \def\Noto@color{black}
+ \def\Noto@color{Color=black}% 2024/07/28. Changed this diagnostic command to by-pass a bug in luatexja-fontspec.
%
\babelprovide[import, language=Default]{arabic}
\babelfont [arabic]{rm}[Scale=\Ara@scale,
- Renderer=HarfBuzz,
+ %Renderer=OpenType,
Extension = .ttf,
UprightFont = *-Regular,
ItalicFont = *-Regular,% don't use italic face, I am told
@@ -591,7 +596,7 @@
BoldItalicFont = *-Bold,% don't use italic face, I am told
]{Amiri}% NotoNaskhArabic}% Some readers prefer Amiri font
\babelfont [arabic]{sf}[Scale=\Noto@scale,
- Renderer=HarfBuzz,
+ %Renderer=OpenType,
Extension =.ttf,
UprightFont = *-Regular,
ItalicFont = *-Regular,% font has no italic face
@@ -599,7 +604,7 @@
BoldItalicFont = *-SemiBold,% font has no italic face
]{NotoSansArabic}%DejaVuSans}%NotoKufiArabic}% .otf,%
\babelfont [arabic]{tt}[%
- Renderer=HarfBuzz,
+ %Renderer=OpenType,
Extension =.ttf,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
@@ -610,9 +615,9 @@
%
\babelprovide[import,language=Default,script=Bangla]{bengali}
\babelfont [bengali]{rm}[%
- Renderer=HarfBuzz,
+ %Renderer=OpenType,
Scale=\NotoBan@scale,% same as Devanagari
- Color=\Noto@color,
+ \Noto@color,
Extension = .ttf,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
@@ -620,9 +625,9 @@
BoldItalicFont = *-Bold,% has no italic face
]{NotoSerifBengali}
\babelfont [bengali]{sf}[%
- Renderer=HarfBuzz,
+ %Renderer=OpenType,
Scale=\NotoBan@scale,
- Color=\Noto@color,
+ \Noto@color,
Extension = .ttf,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
@@ -630,9 +635,9 @@
BoldItalicFont = *-Bold,% has no italic face
]{NotoSansBengali}
\babelfont [bengali]{tt}[
- Renderer=HarfBuzz,
+ %Renderer=OpenType,
Scale=\NotoBan@scale,
- Color=\Noto@color,
+ \Noto@color,
Extension = .ttf,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
@@ -646,7 +651,7 @@
\babelprovide[import,language=Default,script=Cyrillic]{#1}
\babelfont [#1]{rm}[%
Scale=\Noto@scale,
- Color=\Noto@color,
+ \Noto@color,
Extension = .ttf,
UprightFont = *-Regular,
ItalicFont = *-Italic,
@@ -655,7 +660,7 @@
]{NotoSerif}
\babelfont [#1]{sf}[%
Scale=\Noto@scale,
- Color=\Noto@color,
+ \Noto@color,
Extension = .ttf,
UprightFont = *-Regular,
ItalicFont = *-Italic,
@@ -664,7 +669,7 @@
]{NotoSans}
\babelfont [#1]{tt}[%
Scale=\Noto@scale,
- Color=\Noto@color,
+ \Noto@color,
Extension = .ttf,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
@@ -676,14 +681,14 @@
\setlocalecaption{serbian-cyrillic}{abstract}{Сажетак}% NB: utf-8
%
% Devanagari languages
- \newfontscript{Devanagari}{deva}% HarfBuzz has some problems in Hindi, see babel manual Sect. 1.13 (main issue is ra)
+ \newfontscript{Devanagari}{deva}% OpenType has some problems in Hindi, see babel manual Sect. 1.13 (main issue is ra)
\NewDocumentCommand\@LoadBabelDev{>{\SplitList{;}}m}{\ProcessList{#1}{\@DevBabel}}
\NewDocumentCommand\@DevBabel{m}{%
\babelprovide[import,language=Default]{#1}
\babelfont [#1]{rm}[%
-% Renderer=HarfBuzz,% works for Marathi, throws errors in Hindi...
+% %Renderer=OpenType,% Marathi and Hindi may respond differently...
Scale=\NotoDev@scale,
- Color=\Noto@color,
+ \Noto@color,
Extension = .ttf,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
@@ -691,9 +696,9 @@
BoldItalicFont = *-Bold,% has no italic face
]{NotoSerifDevanagari}
\babelfont [#1]{sf}[%
-% Renderer=HarfBuzz,% works for Marathi, throws errors in Hindi...
+% %Renderer=OpenType,% % Marathi and Hindi may respond differently...
Scale=\NotoDev@scale,
- Color=\Noto@color,
+ \Noto@color,
Extension = .ttf,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
@@ -701,9 +706,9 @@
BoldItalicFont = *-Bold,% has no italic face
]{NotoSansDevanagari}
\babelfont [#1]{tt}[
-% Renderer=HarfBuzz,% works for Marathi, throws errors in Hindi...
+% %Renderer=OpenType,% % Marathi and Hindi may respond differently...
Scale=\NotoDev@scale,
- Color=\Noto@color,
+ \Noto@color,
Extension = .ttf,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
@@ -719,7 +724,7 @@
\babelfont [greek]{rm}[%
Scale=\Noto@scale,
WordSpace={1.1},% increase word spacing slightly
- Color=\Noto@color,
+ \Noto@color,
Extension = .ttf,
UprightFont = *-Regular,
ItalicFont = *-Italic,
@@ -729,7 +734,7 @@
\babelfont [greek]{sf}[%
Scale=\Noto@scale,
WordSpace={1.1},% increase word spacing slightly
- Color=\Noto@color,
+ \Noto@color,
Extension = .ttf,
UprightFont = *-Regular,
ItalicFont = *-Italic,
@@ -738,7 +743,7 @@
]{NotoSans}
\babelfont [greek]{tt}[%
Scale=\Noto@scale,
- Color=\Noto@color,
+ \Noto@color,
Extension = .ttf,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
@@ -747,11 +752,14 @@
]{NotoSansMono}
%
% Japanese
+ % luatexja-fontspec seems to want lc "color" now, rather than normal "Color", as before. Commenting out.
+ % NB: luatexja-fontspec color breakage appears to be global.
\ifac@japanese
- \RequirePackage[match]{luatexja-fontspec}% japanese typesets *much* better with this loaded
+ \def\Noto@color{}% by-pass bug in luatexja-fontspec, 2024/07/28.
+ \RequirePackage[no-math]{luatexja-fontspec}% japanese typesets *much* better with this loaded
\setmainjfont{NotoSerifCJKjp}[%
Scale=\Noto@scale,
- Color=\Noto@color,
+ \Noto@color,
% Extension = .otf,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
@@ -760,7 +768,7 @@
]
\setsansjfont{NotoSansCJKjp}[%
Scale=\Noto@scale,
- Color=\Noto@color,
+ \Noto@color,
% Extension = .ttc,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
@@ -769,7 +777,7 @@
]
\setmonojfont{NotoSansMonoCJKjp}[%
Scale=\Noto@scale,
- Color=\Noto@color,
+ \Noto@color,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
BoldFont = *-Bold,
@@ -780,7 +788,7 @@
% Need at least one of the following to load the Japanese dictionary.
\babelfont [japanese]{rm}[%
Scale=\Noto@scale,
- Color=\Noto@color,
+ \Noto@color,
Extension = .otf,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
@@ -789,7 +797,7 @@
]{NotoSerifCJKjp}% Scale estimated
\babelfont [japanese]{sf}[%
Scale=\Noto@scale,
- Color=\Noto@color,
+ \Noto@color,
% Extension = .ttc,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
@@ -798,7 +806,7 @@
]{NotoSansCJKjp}
\babelfont [japanese]{tt}[%
Scale=\Noto@scale,
- Color=\Noto@color,
+ \Noto@color,
% Extension = .ttc,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
@@ -812,7 +820,7 @@
\babelprovide[import,language=Default]{korean}
\babelfont [korean]{rm}[%
Scale=\Noto@scale,
- Color=\Noto@color,
+ \Noto@color,
Extension = .otf,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
@@ -821,7 +829,7 @@
]{NotoSerifCJKkr}
\babelfont [korean]{sf}[%
Scale=\Noto@scale,
- Color=\Noto@color,
+ \Noto@color,
Extension = .ttc,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
@@ -830,7 +838,7 @@
]{NotoSansCJK}
\babelfont [korean]{tt}[%
Scale=\Noto@scale,
- Color=\Noto@color,
+ \Noto@color,
% Extension = .ttc,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
@@ -843,7 +851,7 @@
\babelprovide[import,language=Default]{chinese-simplified}
\babelfont [chinese-simplified]{rm}[%
Scale=\Noto@scale,
- Color=\Noto@color,
+ \Noto@color,
Extension = .otf,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
@@ -852,7 +860,7 @@
]{NotoSerifCJKsc}
\babelfont [chinese-simplified]{sf}[%
Scale=\Noto@scale,
- Color=\Noto@color,
+ \Noto@color,
Extension = .ttc,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
@@ -861,7 +869,7 @@
]{NotoSansCJK}
\babelfont [chinese-simplified]{tt}[%
Scale=\Noto@scale,
- Color=\Noto@color,
+ \Noto@color,
% Extension = .ttc,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
@@ -871,9 +879,9 @@
%
% Traditional Chinese (includes characters for Cantonese also)
\babelprovide[import,language=Default]{chinese-traditional}
- \babelfont [chinese-tradiational]{rm}[%
+ \babelfont [chinese-traditional]{rm}[% fixed 2024/07/28
Scale=\Noto@scale,
- Color=\Noto@color,
+ \Noto@color,
Extension = .otf,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
@@ -882,20 +890,20 @@
]{NotoSerifCJKtc}
\babelfont [chinese-traditional]{sf}[%
Scale=\Noto@scale,
- Color=\Noto@color,
+ \Noto@color,
Extension = .ttc,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
BoldFont = *-Bold,
BoldItalicFont = *-Bold,% has no italic face
]{NotoSansCJK}
- \babelfont [chinese-traditional]{tt}[Scale=\Noto@scale,Color=\Noto@color]{NotoSansMonoCJKtc}
+ \babelfont [chinese-traditional]{tt}[Scale=\Noto@scale,\Noto@color]{NotoSansMonoCJKtc}
%
\babelprovide[import,language=Default]{tamil}
\babelfont [tamil]{rm}[%
- Renderer=HarfBuzz,
+ %Renderer=OpenType,
Scale=\NotoTam@scale,
- Color=\Noto@color,
+ \Noto@color,
Extension = .ttf,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
@@ -903,9 +911,9 @@
BoldItalicFont = *-Bold,% has no italic face
]{NotoSerifTamil}
\babelfont [tamil]{sf}[%
- Renderer=HarfBuzz,
+ %Renderer=OpenType,
Scale=\NotoTam@scale,
- Color=\Noto@color,
+ \Noto@color,
Extension = .ttf,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
@@ -913,9 +921,9 @@
BoldItalicFont = *-Bold,% has no italic face
]{NotoSansTamil}
\babelfont [tamil]{tt}[
- Renderer=HarfBuzz,
+ %Renderer=OpenType,
Scale=\NotoTam@scale,
- Color=\Noto@color,
+ \Noto@color,
Extension = .ttf,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
@@ -949,8 +957,13 @@
\RequirePackage{bm}% load after all math to give further access to bold math
-%% Ensure that the current font is used for equation tags, not \normalfont as set by amsmath
-\def\maketag@@@#1{\hbox{\m@th#1}}
+% To free \eqref from the normal font (e.g., for use in section headings or captions). Revised 2024/07/28
+\renewcommand{\eqref}[1]{\textup{\hbox{\m@th{(\ignorespaces\ref{#1}\unskip\@@italiccorr)}}}}
+%
+% amsmath def: \newcommand{\eqref}[1]{\textup{\tagform@{\ref{#1}}}}
+% \def\tagform@#1{\maketag@@@{(\ignorespaces#1\unskip\@@italiccorr)}}
+% \def\maketag@@@#1{\hbox{\m@th\normalfont#1}}
+
% The article class calls \sloppy in two-column mode (\tolerance 9999, \emergencystretch 3em)
% The following adjustments affect line breaking; the values below are intended to produce
@@ -1000,11 +1013,11 @@
\SetMathAlphabet{\mathsf}{sans}{\encodingdefault}{\sfdefault}{m}{n}% \mathsf is upright.
-% Nice solution from DPC to prevent aux file errors (due to active characters from babel) when switching from pdflatex to lualatex.
-\ifx\directlua\undefined
- \AtBeginDocument{\immediate\write\@auxout{\detokenize{%
- \ifx\directlua\undefined\else\endinput\fi}}}
-\fi
+%% Nice solution from DPC to prevent aux file errors (due to active characters from babel) when switching from pdflatex to lualatex. Disabled, 2024/07/28
+%\ifx\directlua\undefined
+% \AtBeginDocument{\immediate\write\@auxout{\detokenize{%
+% \ifx\directlua\undefined\else\endinput\fi}}}
+%\fi
%%%%%%%% Footers and Footnotes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1034,7 +1047,6 @@
\fancyfoot[CE,CO]{\@SetFont\thepage\\[1ex]\footnotesize The United States Government retains, and by accepting the article for publication, the publisher acknowledges that the United States Government retains, a non-exclusive, paid-up, irrevocable, worldwide license to publish or reproduce the published form of this work, or allow others to do so, for United States Government purposes.}
\fi
-% was missing from earlier versions...?
\ifasmeconf@govtsome
\newgeometry{left=0.5in, right=0.5in, top=0.5in, bottom = 1.in, footskip = 0.3in, columnsep = 0.38in}
\fancyfoot[RO,RE]{}
@@ -1088,39 +1100,36 @@
\titlespacing\subsubsection{\parindent}{6pt plus 3pt minus 2pt}{0pt plus 2pt minus 1pt} % from 12 4 3, 2019/7/7
%% Special handling of the appendices
-%% Assumes that appendices are the last content in paper
-\RenewDocumentCommand{\appendix}{}{%
- \setcounter{section}{0}
- \pdfbookmark[0]{\appendicesname}{appendices}
- \renewcommand\thesection{\Alph{section}}
- \titleformat{\section}{\mathversion{sansbold}\bfseries\sffamily\raggedright}{\MakeTextUppercase{\appendixname}\ \thesection.}{0.5em}{\MakeTextUppercase}
-}
-
-%% This patches titlesec's unprotected re-definition of \footnote.
-%% See discussion here: https://github.com/jbezos/titlesec/issues/48
+%% Assumes that appendices are the last content in paper
+%% Code revised to better support tagged pdf, 2024/07/26.
+\patchcmd{\appendix}{%
+ \setcounter{subsection}{0}%
+}{%
+ \setcounter{subsection}{0}\pdfbookmark[1]{\appendicesname}{appendices}%
+}{}{}
+\apptocmd{\appendix}{\titleformat{\section}[block]{\mathversion{sansbold}\bfseries\sffamily\raggedright}{\MakeTextUppercase{\appendixname}\ \thesection.}{0.5em}{\MakeTextUppercase}}{}{}
+% Changed to block layout (rather than default hanging) whilst retaining \raggedright, since "Appendix X." is a very wide hanging indent. 2024/07/26
+
+%% This patches titlesec's unprotected re-definition of \footnote. See discussion here: https://github.com/jbezos/titlesec/issues/48
%% Without this patch, recent versions of LaTeX will require \protect\footnote in section headings.
-%% This issue may be corrected in titlesec, but keeping the patch anyway.
+%% This issue may be corrected in titlesec, but keeping the patch for backward compatibility.
\patchcmd{\ttl@select}{\def\footnote}{\protected\def\footnote}{\typeout{Asmeconf.sty patched titlesec to have protected def of footnote}}{}
%%%%%%%%%% Hyperref, bookmarks, and PDF/A %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% new pdf management in LaTeX, with \DocumentMetaData{..}, is preferred to this *legacy* approach.
\ifpdftex
- %%% to assist with unicode glyph mapping, following M. Sharpe's recommendation in the newtx documentation.
- \IfFormatAtLeastTF{2020/10/01}{\relax}{%
- \pdfgentounicode=1 %% enable CMaps; has moved into the latex kernel Oct 2020
- \input glyphtounicode.tex %% lists of mappings; has moved into the latex kernel Oct 2020
- }
+ %%% to assist with unicode glyph mapping, following M. Sharpe's recommendation in the newtx documentation.
+ %%% as of 2024/07/28, these are still necessary with \DocumentMetadata{pdfstandard=A-3u}. Note: glyphtounicode-cmex.tex is now in latex-lab.
\InputIfFileExists{glyphtounicode-cmr.tex}{}{} %% additional mappings
\InputIfFileExists{glyphtounicode-ntx.tex}{}{} %% additional mappings
\ifac@setpdfa
- %%%% pdfmanagement options, from Ulrike Fischer 2021/06/12
- \if@asme@pdfmanagement
- \ClassInfo{asmeconf}{pdfmanagement is defined. Class file will not load a color profile}
+ %% new pdf management in LaTeX, with \DocumentMetaData{..}, is preferred to this *legacy* approach.
+ \ifasme@pdfmanagement
+ \ClassInfo{\ClassName}{pdfmanagement is defined. Class file will not load a color profile}
\else
- \ClassInfo{asmeconf}{NOTE: pdfmanagement not defined. Class file will load a color profile}%
+ \ClassInfo{\ClassName}{NOTE: pdfmanagement not defined. Class file will load a color profile}%
%%% a fairly generic RGB color profile, aimed at on-screen rendering (not print production)
\immediate\pdfobj stream attr{/N 3} file{sRGB.icc}
\pdfcatalog{%
@@ -1158,20 +1167,20 @@
\urlstyle{same} % don't switch to typewriter font for urls
\RequirePackage{doi} % supports the nasty characters in some doi's
\renewcommand{\doitext}{DOI } % change to this from default value, {doi:}, per ASME specification
-\RequirePackage{bookmark} % improves handling of pdf bookmarks
\providecommand*{\toclevel@subfigure}{1}% <== to address unknown bookmark level of subfigure. 2021/12/24
\providecommand\hrefurl[2]{\href{#1}{#2}}% to address certain issues around URL recognition with new pdf management code, 2021/12/02
-\if@asme@pdfmanagement
- \ClassInfo{asmejour}{pdfmanagement is defined. Class file will not load hyperxmp}
+\ifasme@pdfmanagement
+ \ClassInfo{asmejour}{pdfmanagement is defined. Class file will not load hyperxmp and bookmark packages}
\else
+ \RequirePackage{bookmark}% improves handling of pdf bookmarks
\RequirePackage{hyperxmp}% improve transfer of metadata to pdf
% Patch bug in hyperxmp, unless a more recent version is used.
\ifdefined\hyxmp@no@bad@parts% \hyxmp@no@bad@parts is not def'd in TeX Live 2019 or older
- \@ifpackagelater{hyperxmp}{2022/10/15}{% v5.11 or later
+ \IfPackageAtLeastTF{hyperxmp}{2022/10/15}{% v5.11 or later
\relax
}{%
\newcount\hypxmp@tempcnt
@@ -1180,13 +1189,11 @@
\hyxmp@pdfstringdef\@pdfapart{\the\hypxmp@tempcnt}%
}
}
- \else
- \relax
\fi
\fi
-%%% ==> recent and evolving development of \pdfstring removes all robust commands from bookmarks, so
-%%% by early 2024, errors are not present; however, these commands serve to still suppress warnings.
+%%% ==> recent development of \pdfstring removes all robust commands from bookmarks, so that
+%%% by early 2024, errors are not present; these commands serve to still suppress warnings, however.
%% Since \bm may be useful in headings, this fix will reduce frequency with which
%% alternate pdfstrings must be given in revised section command as \section[pdfstring]{texstring}
@@ -1212,7 +1219,7 @@
%% Ensure that tag color does not follow \eqref into bookmarks, 2020/02/28
\pdfstringdefDisableCommands{%
- \def\eqref#1{(\ref{#1})}%
+ \def\eqref#1{(\ref*{#1})}% \ref* is from hyperref
}
% Let's make sure footnotes in section headings don't break pdf bookmarks.
@@ -1222,7 +1229,6 @@
}
-
%% Let's also add \footnote to the \TextUppercase exception list, so that footnote text won't be capitalized
%% if given in section headings. Ditto for \eqref
%
@@ -1244,13 +1250,12 @@
\renewcommand{\linenumberfont}{\normalfont\footnotesize\color{red}}
\AtBeginDocument{\linenumbers}
\ifasmeconf@balance
- \ClassWarningNoLine{asmeconf}{Package lineno loaded, so final column balancing will be disabled}%
+ \ClassWarningNoLine{\ClassName}{Package lineno loaded, so final column balancing will be disabled}%
\fi
%%% Patch to allow line numbering in AMS math environments.
%%% This patch is for lineno versions earlier than v5.2 [2023/05/19]. As of mid-2023, the lineno package
- %%% has been corrected to account for the AMS math environments. Retaining temporarily for backward compatibility.
+ %%% has been corrected to account for the AMS math environments. Retaining for backward compatibility.
%%% postdisplaypenalty adjusted to avoid extra line number at end, see: https://tex.stackexchange.com/a/461192/
- %%% multline has some additional problem that puts an extra line number above it.
\IfPackageAtLeastTF{lineno}{2023/05/19}{\relax}{
\NewDocumentCommand{\ac@losepostpenalty}{}{\patchcmd{\linenomathWithnumbers}{\advance\postdisplaypenalty\linenopenalty}{}{}{}}
%
@@ -1270,7 +1275,7 @@
\ifasmeconf@balance
\RequirePackage{flushend}% flushend package is NOT compatible with lineno
\AtEndDocument{\flushcolsend}%
- \LogNote{Calling flushend package to balance column height on last page}%
+ \ClassNoteNoLine{\ClassName}{Calling flushend package to balance column height on last page}%
\fi%
\fi
\providecommand{\@LN@col}[1]{\relax}% Enable dropping lineno option without trashing .aux file
@@ -1364,7 +1369,10 @@
\NewDocumentCommand\PaperNo{m}{\gdef\@PaperNo{#1}}
\providecommand\@PaperNo{\protect\phantom{NO.}}
-\NewDocumentCommand\PaperTitle{m}{\gdef\@PaperTitle{#1}}
+\NewDocumentCommand\PaperTitle{m}{%
+ \gdef\@PaperTitle{#1}%
+ \gdef\@title{#1}% added 2024/07/28
+}
\providecommand\@PaperTitle{\hbox{ }}
\NewDocumentCommand\@HeaderTitle{}{%
@@ -1419,7 +1427,7 @@
%%%% option to use the traditional grid layout of authors or the inline style
\ifasmeconf@grid
- \LogNote{Selected option for a grid of author blocks}%
+ \ClassNoteNoLine{\ClassName}{Selected option for a grid of author blocks}%
%%%%%%%%%%%%%%%%%%%% Gridded author layout %%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1463,7 +1471,7 @@
\ifblank{#1}{%
\expandafter\xdef\csname aut@\theauthorcnt\endcsname{}%
\expandafter\xdef\csname autaffil@\theauthorcnt\endcsname{-1}
- \ClassWarning{asmeconf}{Missing author name, check for extra comma}%
+ \ClassWarning{\ClassName}{Missing author name, check for extra comma}%
}{\expandafter\xdef\csname aut@\theauthorcnt\endcsname{#1}%
}%
}% defines \aut@authorcnt as Name #1
@@ -1547,12 +1555,18 @@
\fi
\fi
\ifnum\value{authorno}>15
- \ClassWarningNoLine{asmeconf}{The class is programmed for up to 15 author blocks. If some of your authors are at the same institution, %
+ \ClassWarningNoLine{\ClassName}{The class is programmed for up to 15 author blocks. If some of your authors are at the same institution, %
you may put more than one name above a single address. If you need more than 15 author blocks, try using the in-line author style %
instead of the [grid] option}
\fi
}% end whiledo
}
+ \ExplSyntaxOn
+ % next three are for backward compatibility
+ \cs_if_exist:NF \cs_gset:Npe { \cs_generate_variant:Nn \cs_gset:Npn {Npe} }
+ \cs_if_exist:NF \tl_set:Ne { \cs_generate_variant:Nn \tl_set:Nn {Ne} }
+ \cs_if_exist:NF \tl_put_right:Ne { \cs_generate_variant:Nn \tl_put_right:Nn {Ne} }
+
\NewDocumentCommand\@ConstructAuthorBlock{}{%
\ifnum\value{authorno}>3
\JoinCoffins\firstrowauthorblock[hc,b]\secondrowauthorblock[hc,t](0pt, -1.5\baselineskip)
@@ -1566,8 +1580,34 @@
\ifnum\value{authorno}>12
\JoinCoffins\firstrowauthorblock[hc,b]\fifthrowauthorblock[hc,t](0pt, -1.5\baselineskip)
\fi
- \centerline{\TypesetCoffin\firstrowauthorblock}%% in this instance, \centerline is better than \centering
+ \centerline{\TypesetCoffin\firstrowauthorblock}% in this instance, \centerline is better than \centering
+ \__asmeconf_concataut:
+ \cs_gset:Npe \@author { \tl_use:N \g_asmeconf_authors_tl }
+ %\iow_term:e { \tl_use:N \g_asmeconf_authors_tl }% diagnostic only
}
+ % build comma-separated list of author names
+ \cs_new_protected:Nn \__asmeconf_concataut: {
+ \tl_new:N \g_asmeconf_authors_tl
+ \int_set:Nn \l_tmpa_int {1}
+ \int_new:N \l__asmeconf_noauts
+ \int_set:Nn \l__asmeconf_noauts { \value{authorcnt} }
+ \int_do_until:nNnn { \l_tmpa_int } > { \l__asmeconf_noauts }
+ {
+ \tl_set:Ne \l_tmpa_tl {\use:c { aut@ \int_use:N \l_tmpa_int } }
+ \tl_replace_all:Nnn \l_tmpa_tl {\unhbox \voidb@x \protect \penalty \@M \ } {~}
+ % If tex unbreakable space character "~" has expanded, replace by a simple space, which is "~" in Expl3 syntax
+ \tl_remove_all:Nn \l_tmpa_tl { \JointFirstAuthor }
+ \tl_replace_all:Nnn \l_tmpa_tl { \CorrespondingAuthor } { \use_none:n }
+ \tl_replace_all:Nnn \l_tmpa_tl { \affil } { \use_none:n }
+ \tl_replace_all:Nnn \l_tmpa_tl { \xdef } { \use_none:nn }
+ \tl_put_right:Ne \g_asmeconf_authors_tl \l_tmpa_tl
+ \int_compare:nNnT { \l_tmpa_int } < { \l__asmeconf_noauts} {
+ \tl_put_right:Ne \g_asmeconf_authors_tl { ,~ }
+ }
+ \int_incr:N \l_tmpa_int
+ }
+ }
+ \ExplSyntaxOff
%%% otherwise use the new compact layout of authors
\else
@@ -1576,13 +1616,35 @@
\NewCoffin{\AffiliationBlock}
\NewCoffin{\AffiliationsBlock}
\AtBeginDocument{\SetHorizontalCoffin\AffiliationsBlock{}}% corrected 2021/12/01
-
+
+ \ExplSyntaxOn
+ \cs_if_exist:NF \cs_gset:Npe { \cs_generate_variant:Nn \cs_gset:Npn {Npe} }
+ \cs_if_exist:NF \tl_gset:Ne { \cs_generate_variant:Nn \tl_gset:Nn {Ne} }
+
%% NB: \parbox width to \textwidth (full page) not \linewidth (single column)
\NewDocumentCommand\SetAuthors{m}{%
- \SetHorizontalCoffin\AuthorBlock{%
+ \SetHorizontalCoffin\AuthorBlock{% ignoring the bug in testphase tagging
\parbox{\textwidth}{\centering\sffamily\bfseries\ignorespaces#1\ignorespaces}%
+ % NB: in vertical mode \parbox needs \noindent ahead of it, _inside_ vertical coffin
+ % \SetVerticalCoffin\AuthorBlock{\textwidth}{% 2024/07/30, test a vertical coffin alternative
+ % \centering\sffamily\bfseries\ignorespaces#1\ignorespaces%
+ \__asmeconf_striptokens:n {#1}
+ \cs_gset:Npe \@author { \tl_use:N \g_asmeconf_authors_tl }% set \@author = list of authors, 2024/07/31
}
}
+ % strip \affil{..}, \JointFirstAuthor, \CorrespondingAuthor{...} from argument
+ \cs_new_protected:Nn \__asmeconf_striptokens:n {
+ \tl_set:Nn \l_tmpa_tl {#1}
+ \regex_replace_all:nnN { \cA\~ } {\ } \l_tmpa_tl % replace ~ by space in author list
+ %\tl_replace_all:Nnn \l__asmeconf_authors_tl {\ } {~}% change "\ " to space (but why? for text we would want this)
+ \tl_remove_all:Nn \l_tmpa_tl { \JointFirstAuthor }
+ \tl_replace_all:Nnn \l_tmpa_tl { \affil } { \use_none:n }
+ \tl_replace_all:Nnn \l_tmpa_tl { \CorrespondingAuthor } { \use_none:n }
+ \tl_new:N \g_asmeconf_authors_tl
+ \tl_gset:Ne \g_asmeconf_authors_tl \l_tmpa_tl
+ \iow_term:e { \tl_use:N \g_asmeconf_authors_tl }% diagnostic only
+ }
+ \ExplSyntaxOff
\def\@makefnmark{\hbox{\@textsuperscript{\sffamily\@thefnmark}}}%
@@ -1598,14 +1660,14 @@
%%% Affiliation mark
\NewDocumentCommand{\affil}{m}{%
\ifblank{#1}{%
- \ClassWarning{asmeconf}{Empty affiliation tag}%
+ \ClassWarning{\ClassName}{Empty affiliation tag}%
\@gobble% 9 Dec 2021, addresses modification for commas
}{\bfseries\footnotemark[#1]}%
}
%%% to deal with sequential notes as, e.g., "1,*", or "1,2,*" %%%%%%%%%%
\ExplSyntaxOn
- \cs_new:Npn \__asmecome_OtherNoteComma:n {
+ \cs_new:Npn \__asmeconf_OtherNoteComma:n {
\peek_meaning:NTF \affil
{ \textsuperscript{\mdseries,} }
{ \peek_meaning:NTF \CorrespondingAuthor
@@ -1614,11 +1676,11 @@
}
}
\cs_new_eq:NN \__saveAF \affil
- \cs_gset_protected:Npn \affil #1 { \__saveAF{#1} \__asmecome_OtherNoteComma:n }
+ \cs_gset_protected:Npn \affil #1 { \__saveAF{#1} \__asmeconf_OtherNoteComma:n }
\cs_new_eq:NN \__saveCA \CorrespondingAuthor
- \cs_gset_protected:Npn \CorrespondingAuthor #1 { \__saveCA{#1} \__asmecome_OtherNoteComma:n }
+ \cs_gset_protected:Npn \CorrespondingAuthor #1 { \__saveCA{#1} \__asmeconf_OtherNoteComma:n }
\cs_new_eq:NN \__saveJA \JointFirstAuthor
- \cs_gset_protected:Npn \JointFirstAuthor { \__saveJA \__asmecome_OtherNoteComma:n }
+ \cs_gset_protected:Npn \JointFirstAuthor { \__saveJA \__asmeconf_OtherNoteComma:n }
\ExplSyntaxOff
%%%
@@ -1633,7 +1695,6 @@
%%%% Make the title and author section
\NewDocumentCommand\MakeTitlePage{}{%
\twocolumn[
- \begin{@twocolumnfalse}
\@HeaderTitle
\vspace*{2\baselineskip}
\ifasmeconf@grid
@@ -1642,7 +1703,6 @@
\@SetAuthorBlock
\fi
\vspace*{3\baselineskip}
- \end{@twocolumnfalse}
]
\let\@makefnmark\savemakefnmark% restore footnote mark font
\renewcommand*{\thefootnote}{\fnsymbol{footnote}}
@@ -1767,12 +1827,12 @@
%%%%%%%%%%%%%%%%%% Times-like fonts for specific languages %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifpdftex % Under lualatex, babel has problems with the following approach, which assumes that fontspec has not been loaded.
- % Recommend not to choose the [nofontspec] option.
+ % Recommend not to choose the [nofontspec] option.
% Several modifications made in response to newtx v1.71, 2022/03/14
\ifac@vietnamese
%
\IfFormatAtLeastTF{2020/02/02}{\relax}{%
- \ClassError{asmeconf}{Your LaTeX format is dated \fmtversion. LaTeX distributions 2020 are necessary to use the fonts of the [vietnamese] option with pdflatex}{Please UPDATE your LaTeX distribution: TeX Live is available for download at no charge: \string https://www.tug.org/texlive/. Alternatively, delete the class option [vietnamese].}%
+ \ClassError{\ClassName}{Your LaTeX format is dated \fmtversion. LaTeX distributions 2020 are necessary to use the fonts of the [vietnamese] option with pdflatex}{Please UPDATE your LaTeX distribution: TeX Live is available for download at no charge: \string https://www.tug.org/texlive/. Alternatively, delete the class option [vietnamese].}%
}
%
\AtBeginDocument{%
@@ -1831,7 +1891,7 @@
\ifac@greek
%
\IfFormatAtLeastTF{2020/02/02}{\relax}{%
- \ClassError{asmeconf}{Your LaTeX format is dated \fmtversion. LaTeX distributions 2020 are necessary to use the fonts of the [greek] option with pdflatex}{Please UPDATE your LaTeX distribution: TeX Live is available for download at no charge: \string https://www.tug.org/texlive/. Alternatively, delete the class option [greek].}%
+ \ClassError{\ClassName}{Your LaTeX format is dated \fmtversion. LaTeX distributions 2020 are necessary to use the fonts of the [greek] option with pdflatex}{Please UPDATE your LaTeX distribution: TeX Live is available for download at no charge: \string https://www.tug.org/texlive/. Alternatively, delete the class option [greek].}%
}
%
\AtBeginDocument{%
@@ -1906,7 +1966,7 @@
\ifac@cyrillic
%
\IfFormatAtLeastTF{2020/02/02}{\relax}{%
- \ClassError{asmeconf}{Your LaTeX format is dated \fmtversion. LaTeX distributions 2020 are necessary to use the fonts of the cyrillic language option with pdflatex, e.g., [russian]}{Please UPDATE your LaTeX distribution: TeX Live is available for download at no charge: \string https://www.tug.org/texlive/. Alternatively, delete the class option calling a cyrillic-alphabet language.}%
+ \ClassError{\ClassName}{Your LaTeX format is dated \fmtversion. LaTeX distributions 2020 are necessary to use the fonts of the cyrillic language option with pdflatex, e.g., [russian]}{Please UPDATE your LaTeX distribution: TeX Live is available for download at no charge: \string https://www.tug.org/texlive/. Alternatively, delete the class option calling a cyrillic-alphabet language.}%
}
%
\AtBeginDocument{%
diff --git a/macros/latex/contrib/asmeconf/examples/asmeconf-fontspec.pdf b/macros/latex/contrib/asmeconf/examples/asmeconf-fontspec.pdf
index 05e276803f..d5ef0f0158 100644
--- a/macros/latex/contrib/asmeconf/examples/asmeconf-fontspec.pdf
+++ b/macros/latex/contrib/asmeconf/examples/asmeconf-fontspec.pdf
Binary files differ
diff --git a/macros/latex/contrib/asmeconf/examples/asmeconf-fontspec.tex b/macros/latex/contrib/asmeconf/examples/asmeconf-fontspec.tex
index b041b0f0ff..406a4dd660 100644
--- a/macros/latex/contrib/asmeconf/examples/asmeconf-fontspec.tex
+++ b/macros/latex/contrib/asmeconf/examples/asmeconf-fontspec.tex
@@ -18,13 +18,36 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\DocumentMetadata{%
+ pdfstandard=A-3b,% A-2b, A-2u, A-3b, or A-3u (don't use u options with LuaLaTeX)
+ pdfversion=1.7,
+ lang=en-US,
+ debug = {xmp-export},
+}
\documentclass[colorlinks,nofoot,spanish,japanese,russian,greek,ukrainian,vietnamese,french,portuguese,turkish,polish,indonesian,italian,german,latin,serbianc,bidi=basic]{asmeconf}
% note that not all languages given as examples in this file can be called as options.
+% directly add this xmp property. See l3pdfmeta.pdf. This is not automatic with \DocumentMetadata. "True" must be capitalized.
+\ExplSyntaxOn
+ \pdfmeta_xmp_add:n{<xmpRights:Marked>True</xmpRights:Marked>}
+\ExplSyntaxOff
+
\hypersetup{%
- pdftitle={Language Support in ASMECONF: Non-Latin Alphabets, Lualatex, and fontspec},
+ pdftitle={{Language Support in ASMECONF: Non-Latin Alphabets, Lualatex, and fontspec}},
pdfkeywords={asmeconf, non-Latin alphabets, fontspec, LuaLaTeX, PDFLaTeX},
- pdfauthor={John H. Lienhard, V},
+ pdfauthor={John H. Lienhard},
+ pdfsubject = {Describes font support in asmeconf LaTeX template},
+ pdfurl={https://ctan.org/pkg/asmeconf},% may delete
+ pdflicenseurl={https://ctan.org/pkg/asmeconf},
+ pdfcopyright={Copyright (c) \the\year\ by John H. Lienhard},
+ pdfcontactemail={lienhard@mit.edu},
+ pdfcaptionwriter={{John H. Lienhard, V}},
+ pdfcontactaddress={77 Massachusetts Avenue, Room 3-166},
+ pdfcontactcity={Cambridge, MA},
+ pdfcontactpostcode={02139},
+ pdfcontactcountry={USA},
+ pdfcontacturl={https://lienhard.mit.edu},
+ pdfauthortitle={Professor of Mechanical Engineering},
}
% To avoid typing these over and over, define:
@@ -33,13 +56,30 @@
\newcommand*\AC{{\upshape\texttt{asmeconf}}}
\newcommand*\PLT{{\upshape\texttt{\hologo{pdfLaTeX}}}}
+% define a unicode character by its codepoint
+\ExplSyntaxOn
+ \cs_new:Npn \MySym #1 { \codepoint_generate:nn {#1} { 12 } }
+\ExplSyntaxOff
+
+\renewcommand*{\checkmark}{\MySym{"2713}} % because default checkmark has poor glyph information
+
+%% It's necessary to force full embedding of the fonts to get valid PDF/A-3b
+\usepackage{luacode}
+\begin{luacode}
+local function embedfull(tfmdata)
+ tfmdata.embedding = "full"
+end
+luatexbase.add_to_callback("luaotfload.patch_font", embedfull, "embedfull")
+\end{luacode}
+
+
\makeatletter
\def\NotoBan@scale{0.98}% vary this if the Bengali is too small/large; the default value 0.92 matches scaling of the other Noto fonts used.
\def\NotoDev@scale{0.98}% vary this if the Devanagari is too small/large; the default value 0.92 matches scaling of the other Noto fonts used.
%\def\NotoTam@scale{0.92}% vary this if the Tamil is too small/large; the default value 0.92 matches scaling of the other Noto fonts used.
\def\NotoAra@scale{0.93}% The serif font only; the default value is 0.91
-% Noto family is not as close to Tex Gyre Termes as I'd like, so for abstract examples in Latin script [only], use Noto Serif Italic for visual consistency
+% Noto family is not as close to Tex Gyre Termes as I'd like, so for abstract examples in Latin script [only], I'm using Noto Serif Italic for visual consistency
\newfontfamily{\NotoSerif}{NotoSerif}[UprightFont=*-Regular,ItalicFont=*-Italic, BoldItalicFont=*-BoldItalic, BoldFont=*-Bold, Extension=.ttf,Scale=\Noto@scale,WordSpace={1,1.4,1}]
\newfontfamily{\NotoSerifItalns}{NotoSerif-Italic.ttf}[ItalicFont=*,Scale=\Noto@scale]% Turkish has trouble with WordSpace
\makeatother
@@ -107,10 +147,10 @@
\begin{document}
\ConfName{Proceedings of the \texttt{asmeconf} \linebreak International Examples Congress and Exposition}
-\ConfAcronym{AIECE21}
-\ConfDate{January 20, 2021}
+\ConfAcronym{AIECE24}
+\ConfDate{August 1, 2024}
\ConfCity{Cambridge, MA}
-\PaperNo{AIECE2021-0002}
+\PaperNo{AIECE2024-0002}
\title{Language Support in ASMECONF: Non-Latin Alphabets, Lualatex, and fontspec}
@@ -119,7 +159,7 @@
\maketitle
-\versionfootnote{Version~1.01, \today}
+\versionfootnote{Version~1.02, \today}
\keywords{asmeconf, language support, non-Latin alphabets, fontspec, \LLT}
@@ -183,12 +223,12 @@ The \FS\ package~\cite{robertson2020} allows \LLT\ to access fonts that are inst
When processed in \PLT, \AC\ uses the \texttt{newtxtext} and \texttt{inconsolata} fonts, a collection of eight-bit fonts, for Latin script. To use \FS, we must replace those fonts with corresponding unicode fonts (the math fonts, from \texttt{newtxmath}, are unchanged). Specialized fonts are needed for some additional scripts. Thus, the user will need to install several unicode fonts onto their own system in order to use \AC\ with \FS.
Fortunately, all these fonts are all free and easily downloaded.
-The needed fonts are listed in Table~\ref{tab:2}.
+The needed fonts are listed in Table~\ref{tab:2}. \textit{The Latin fonts are required for English when using \FS.}
%%%%%%%%%%%%%%% two column table %%%%%%%%%%%%%%%%%%
\NewDocumentCommand\R{O{11pt}}{\rule{0pt}{#1}}
\begin{table*}[t!]
-\caption{System fonts used by \NoCaseChange{\AC} with \NoCaseChange{\FS}. For all fonts, load regular and bold face. For Latin, Cyrillic, and Greek, also load italic and bold italic. For Noto Sans Arabic, install semibold instead of bold.\label{tab:2}}%
+\caption{System fonts used by \NoCaseChange{\AC} with \NoCaseChange{\FS}. For all fonts, load regular and bold face. For Latin, Cyrillic, and Greek serif and sans serif fonts, also load italic and bold italic. For Noto Sans Arabic, install semibold instead of bold.\label{tab:2}}%
\centering{%
\begin{tabular*}{\textwidth}{@{\hspace*{0.5em}}@{\extracolsep{\fill}}>{\raggedright}p{6em}>{\raggedright}p{12em}>{\raggedright}p{10em}p{23em}@{\hspace*{0.5em}}}
\toprule
@@ -196,7 +236,10 @@ The needed fonts are listed in Table~\ref{tab:2}.
\multicolumn{1}{c}{\textbf{Language}} &
\multicolumn{1}{c}{\textbf{Fonts}} &
\multicolumn{1}{c}{\textbf{Where to get the font}}\\ \midrule
-Latin$^*$ & most European languages & Tex Gyre Termes, Tex~Gyre~Heros & \url{http://www.gust.org.pl/projects/e-foundry/tex-gyre}\rule{0pt}{11pt}\\
+Latin$^*$ & most European languages & TeX Gyre Termes, & \url{https://ctan.org/tex-archive/fonts/newtx/opentype}, \rule{0pt}{11pt}\\
+& & TeX~Gyre~Heros, & \url{https://ctan.org/tex-archive/fonts/tex-gyre/opentype}\\
+%\url{http://www.gust.org.pl/projects/e-foundry/tex-gyre} \\
+& & Inconsolatazi4 & \url{https://ctan.org/tex-archive/fonts/inconsolata/opentype} \\
Arabic\R & Arabic, Punjabi, Urdu, others & Amiri,\\ Noto~Sans~Arabic & \url{https://github.com/alif-type/amiri}\hfill\hbox{} \url{https://github.com/googlefonts/noto-fonts} \\
Bengali\R & Assamese, Bengali, others & Noto Serif Bengali,\\ Noto~Sans Bengali& \url{https://github.com/googlefonts/noto-fonts} \\
Cyrillic\R & Belarusian, Bulgarian, Macedonian, Russian, Serbian, Ukrainian, others & Noto Serif,\\ Noto~Sans, Noto~Sans~Mono & \url{https://github.com/googlefonts/noto-fonts} \\
@@ -215,7 +258,9 @@ Traditional\R\ Chinese & Traditional Mandarin, Cantonese & Noto~Serif~CJK~TC, No
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Using fontspec with asmeconf}
-When running \LLT, the \texttt{[fontspec]} option should be called, to load the appropriate fonts. With \FS, \texttt{babel} will use \texttt{.ldf} files (if available) and separate initialization files (\texttt{.ini}). If a language option is called for which there is no \texttt{.ldf} file, an error will result. However, such languages may still have an \texttt{.ini} that provides necessary information. For example, Chinese and Korean do not have \texttt{.ldf} files, but they do have \texttt{.ini} files. These languages can be accessed as described in Section~\ref{sec:6}.
+%When running \LLT, the \texttt{[fontspec]} option should be called, to load the appropriate fonts.
+When running \LLT, \texttt{fontspec} is loaded by default (as of Feb.\ 2024).
+With \FS, \texttt{babel} will use \texttt{.ldf} files (if available) and separate initialization files (\texttt{.ini}). If a language option is called for which there is no \texttt{.ldf} file, an error will result. However, such languages may still have an \texttt{.ini} that provides necessary information. For example, Chinese and Korean do not have \texttt{.ldf} files, but they do have \texttt{.ini} files. These languages can be accessed as described in Section~\ref{sec:6}.
Japanese typesetting is a little more complicated. When \texttt{[japanese]} is given as an option to the class, \AC\ calls the \texttt{luatexja-fontspec} package~\cite{lua-jp}, which is a specialized module for typesetting Japanese.
@@ -225,7 +270,7 @@ What about support for scripts not shown in Table~\ref{tab:2}? Macros from \tex
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{How to call a language\label{sec:6}}
-A language is called by \verb|\begin{selectlanguage}{<lang>}|, where \texttt{<lang>} is the lower-case name of the language.
+Call a language with \verb|\begin{selectlanguage}{<lang>}|, where \texttt{<lang>} is the lower-case name of the language.
For example, suppose that a Spanish language abstract is desired. The user puts \texttt{[spanish]} as a global option (this language has an \texttt{.ldf} file), and then writes:
\begin{quotation}
\noindent\hbox{}\verb|\begin{selectlanguage}{spanish}|\\
@@ -419,10 +464,12 @@ The main language of the document is English by default. This means that secti
To chose a different main language, give the option \texttt{[main=..]}, e.g., \texttt{[main=french]}. The standard caption and section names will follow \texttt{babel}'s dictionary for the language chosen. Users may additionally change ``Keywords'', ``Nomenclature'', ``Corresponding author'', and ``Joint first authors'' by renewing the commands \verb|\keywordname|, \verb|\nomname|, \verb|\CAwords|, and \verb|\JAwords|. Changes to the page footer are described in the \AC\ documentation~\cite{lienhard2021}. The pdf bookmark for ``Appendices'' may be changed by renewing \verb|\appendicesname|. (See the \texttt{babel} documentation \cite[\S 1.15]{bezos2020} if the dictionary for the main language lacks the correct word for, say, \verb|abstractname|).
-Note that some languages make characters active, which can have unexpected effects. For example, Spanish makes ``.'' an active character, which clashes with the default \texttt{dcolumn} decimal separator, \texttt{d\{n.m\}}~\cite{dpc}. \texttt{\textbackslash spanishdeactivate\{.\}} stops this behavior. Alternatively, the decimal separator can be changed to a comma by putting \texttt{\textbackslash newcolumntype\{d\}[1]\{D\{,\}\{,\}\{\#1}\}\} in the preamble.
-
I have not explored this usage in detail, and I would welcome comments from authors who attempt such conversions.
+Note that some languages make characters active, which can have unexpected effects. For example, Spanish makes ``.'' an active character, which clashes with the default decimal separator when using \texttt{dcolumn}'s \texttt{d\{n.m\}}~\cite{dpc}. The command \texttt{\textbackslash spanishdeactivate\{.\}} stops this behavior. As of August 2024, \texttt{asmeconf} defines a \texttt{dcolumn} type \texttt{,\{n.m\}} that uses a comma (not a period) as the decimal separator.
+%Alternatively, the decimal separator can be changed to a comma by putting \texttt{\textbackslash newcolumntype\{d\}[1]\{D\{,\}\{,\}\{\#1}\}\} in the preamble.
+
+
%%% CONCLUSIONS %%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Conclusion}
diff --git a/macros/latex/contrib/asmejour/README.md b/macros/latex/contrib/asmejour/README.md
index 69fe1e00fc..612e0b027a 100644
--- a/macros/latex/contrib/asmejour/README.md
+++ b/macros/latex/contrib/asmejour/README.md
@@ -1,7 +1,7 @@
#asmejour: A template for ASME journal papers#
- Version 1.22 dated 2024/02/06.
+ Version 1.23 dated 2024/07/24.
####Overview####
This class provides a template to format preprints in the style of journal papers published by the American Society of Mechanical Engineers.
@@ -67,6 +67,14 @@
####Change log####
+v1.23 (2024/07/24)
+ - Add class option for single-column formatting, \[singlecolumn\], as sometimes requested for review (thanks Lennart Hultgren)
+ - Change language sample from French to German, to avoid active characters (from Fourier to Pohlhausen)
+ - Reduce size of line number font
+ - Adjust code for \\appendix to better accommodate tagged pdf
+ - Correct bug in babel main language selection
+ - Miscellaneous code clean up and simplification
+
v1.22 (2024/02/06)
- The newtx package has dropped superiors option, so asmejour has dropped the \[superiors\] option and related code.
- Dropped legacy options \[lang, lang-second, lang-third\]
diff --git a/macros/latex/contrib/asmejour/asmejour-sample.bib b/macros/latex/contrib/asmejour/asmejour-sample.bib
index 3b715d3d05..08438fd94d 100644
--- a/macros/latex/contrib/asmejour/asmejour-sample.bib
+++ b/macros/latex/contrib/asmejour/asmejour-sample.bib
@@ -1,6 +1,6 @@
%% Sample bibliography file for asmejour.bst and asmejour.cls
%%
-%% Revised: 06 February 2024
+%% Revised: 21 July 2024
%% Copyright John H. Lienhard, MIT
%% Offered under the MIT license: https://ctan.org/license/mit
@@ -350,9 +350,22 @@
title = {Th\'{e}orie Analytique de la Chaleur},
publisher = {Firmin Didot, P\`{e}re et Fils},
address = {Paris},
- url = {https://archive.org/details/analyticaltheory00fourrich},
+ url = {https://archive.org/details/analyticaltheory00fourrich},
}
+@article{pohlhausen1921,
+ author = {Pohlhausen, E.},
+ title = {Der {W}\"{a}rmeaustausch zwischen festen K\"{o}rpern und {F}l\"{u}ssigkeiten mit kleiner reibung und kleiner {W}\"{a}rmeleitung},
+ journal = {Zeitschrift f\"{u}r {A}ngewandte {M}athematik und {M}echanik},
+ volume = {1},
+ number = {2},
+ pages = {115--121},
+ doi = {10.1002/zamm.19210010205},
+ year = {1921},
+}
+%url = {https://onlinelibrary.wiley.com/doi/abs/10.1002/zamm.19210010205},
+
+
@techreport{reynolds1958,
author = {W. C. Reynolds and W. M. Kays and S. J. Kline},
title = {Heat transfer in the Incompressible Turbulent Boundary Layer. {I}---Constant Wall Temperature},
diff --git a/macros/latex/contrib/asmejour/asmejour-template.pdf b/macros/latex/contrib/asmejour/asmejour-template.pdf
index 6fc9631010..c15cc9f797 100644
--- a/macros/latex/contrib/asmejour/asmejour-template.pdf
+++ b/macros/latex/contrib/asmejour/asmejour-template.pdf
Binary files differ
diff --git a/macros/latex/contrib/asmejour/asmejour-template.tex b/macros/latex/contrib/asmejour/asmejour-template.tex
index 18ae24c057..7e3f8a2930 100644
--- a/macros/latex/contrib/asmejour/asmejour-template.tex
+++ b/macros/latex/contrib/asmejour/asmejour-template.tex
@@ -3,7 +3,7 @@
%%
%% This file is asmejour-template.tex, a template to format papers in the style of ASME journal papers.
%%
-%% This file is version 1.22 dated 2024/02/06
+%% This file is version 1.23 dated 2024/07/24
%%
%% Author: John H. Lienhard V
%% Department of Mechanical Engineering
@@ -33,8 +33,10 @@
%%
%% * Option to omit all ASME text fields from the footer [nofoot].
%%
+%% * Option for single column formatting [singlecolumn].
+%%
%% * Options for PDF/A compliance. With pdfTeX, [pdf-a] will produce PDF/A-3u compliance with sRGB OutputIntent.
-%% * [pdfapart= 1 or 2 or 3] and [pdfaconformance= b or u] can enable levels 1b, 2b, 2u, and 3b.
+%% * [pdfapart= 1 or 2 or 3] and [pdfaconformance= b or u] will select other levels: 1b, 2b, 2u, and 3b.
%% *
%% * Recently, LaTeX (2021 and later) has integrated support for pdf-a, through the \DocumentMetadata{..}
%% * command. This approach works with both pdfTeX and luaLaTeX. The asmeconf class supports this new feature,
@@ -59,8 +61,8 @@
%% * [hyphenate] allow hyphenation, with pdfTeX only (normally, the typewriter font is not hyphenated)
%%
%% * Options for the babel package to support passages in other languages (such as a translated
-%% * abstract in an appendix), e.g. [french]. The main language will default to English
-%% * unless a different main language is selected, e.g. [main=spanish]. See Appendix C for details.
+%% * abstract in an appendix), e.g. [german]. The main language will default to English
+%% * unless a different main language is selected, e.g. [main=spanish]. See Appendix B for details.
%%
%% For details of the newtx and mathalfa packages, refer to their documentation (available at CTAN: http://ctan.org).
%%
@@ -82,16 +84,16 @@
%% see https://www.latex-project.org/news/latex2e-news/ltnews35.pdf
%% Uncomment the next lines and omit the option [pdf-a], if you are using an up-to-date LaTeX platform
-%\DocumentMetadata{%
-% pdfstandard=A-3b,% A-2b, A-2u, A-3b, or A-3u (don't use u options with LuaLaTeX)
-% pdfversion=1.7,
-% lang=en-US,
-%}
+\DocumentMetadata{%
+ pdfstandard=A-3u,% A-2b, A-2u, A-3b, or A-3u (don't use u options with LuaLaTeX)
+ pdfversion=1.7,
+ lang=en-US,
+}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Class options are described above.
-\documentclass[upint,varvw,barcolor=Goldenrod3,mathalfa=cal=euler,balance,hyphenate,french,pdf-a]{asmejour}% subscriptcorrection,
+\documentclass[nocopyright,upint,varvw,barcolor=Goldenrod3,mathalfa=cal=euler,balance,hyphenate,german]{asmejour}% subscriptcorrection,french
%%%% pdf metadata %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -121,11 +123,14 @@
% Use title case (upper and lower case letters)
% Note usage below for corresponding author.
-\SetAuthorBlock{Author Name[s]}{Department of Mechanical Engineering,\\
- Institution or Company Name,\\
- Street address,\\
- City, State, Country\\
- email: xxx@yyy.zzz}
+\SetAuthorBlock{John H.\ Lienhard\CorrespondingAuthor}{%
+ Fellow ASME\\
+ Rohsenow Kendall Heat Transfer Laboratory,\\
+ Department of Mechanical Engineering,\\
+ Massachusetts Institute of Technology,\\
+ Cambridge, MA 02139 USA\\
+ email: lienhard@mit.edu
+}
% To label one or more corresponding authors put "Name\CorrespondingAuthor". No space after "Name".
% An optional argument can be added if email is not in address block as
@@ -133,14 +138,12 @@
% Can also include multiple emails and use the command more than once for multiple corresponding authors,
% "Name\CorrespondingAuthor{write@to.him, write@to.her}"
-\SetAuthorBlock{John H.\ Lienhard V\CorrespondingAuthor}{%
-Fellow ASME\\
-Rohsenow Kendall Heat Transfer Laboratory,\\
-Department of Mechanical Engineering,\\
-Massachusetts Institute of Technology,\\
-Cambridge, MA 02139 USA\\
-email: lienhard@mit.edu
-}
+\SetAuthorBlock{Author Name[s]}{Department of Mechanical Engineering,\\
+ Institution or Company Name,\\
+ Street address,\\
+ City, State, Country\\
+ email: xxx@yyy.zzz
+}
%%% Change to your paper title. Can insert line breaks if you wish (otherwise breaks are selected automatically).
\title{Preprint Template for ASME\\ Journal Papers: asmejour.cls}
@@ -164,6 +167,7 @@ This paper is an example and {\upshape\LaTeX} template for the {\upshape\texttt{
\maketitle %% This command creates the author/title/abstract block. Essential!
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%% End of fields to be completed. Now write! %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -227,7 +231,7 @@ Section, subsection, and subsubsection headings should be in title case (first l
%% captions go below figures
\begin{figure}
-\centering\includegraphics[width=\linewidth]{sample-figure-1.pdf}
+\centering\includegraphics[width=\linewidth,alt={Linearization errors}]{sample-figure-1.pdf}
\caption{Caption with math, eqn.~\eqref{eqn:1}: $\Delta T/T_m$ vs.\ $\Delta T/T_1$~\cite{lienhard2019}\label{fig:1}}
\end{figure}
@@ -466,8 +470,12 @@ As of June 2022, the \LaTeX 3 team has added native support for PDF/A in the \La
\subsection{Typewriter Font Options} This font is the sans-serif, monospaced font \texttt{inconsolata}. By default, the word spacing is variable, but option \texttt{[mono]} ends this behavior. A slashed zero is the default; option \texttt{[var0]} removes the slash. Option \texttt{[hyphenate]} enables hyphenation of the typewriter font when running \hologo{pdfTeX}.
+\subsection{Single column layout} The option \texttt{[singlecolumn]} switches from two-column to single-column layout.
%%%%%%%%%%%%%%% begin two column table %%%%%%%%%%%%%%%%%%
+%
+% note: the fourth column could be a dcolumn instead of using \makebox, with d{1.4} replacing c column.
+%
\begin{table*}[t]
\caption{A table spanning two columns}\label{tab:4}%
\centering{%
@@ -478,7 +486,8 @@ As of June 2022, the \LaTeX 3 team has added native support for PDF/A in the \La
\multicolumn{1}{c!{\hspace*{3.em}}}{$\textrm{erfc}(x)$} &
\multicolumn{1}{c}{$x$} &
\multicolumn{1}{c}{$\textrm{erf}(x)$} &
-\multicolumn{1}{c@{\hspace*{1.5em}}}{$\textrm{erfc}(x)$} \\ \midrule
+\multicolumn{1}{c@{\hspace*{1.5em}}}{$\textrm{erfc}(x)$} \\
+\midrule
0.00 & 0.00000 & 1.00000 & 1.10 & 0.88021 & 0.11980 \\
0.05 & 0.05637 & 0.94363 & 1.20 & 0.91031 & 0.08969 \\
0.10 & 0.11246 & 0.88754 & 1.30 & 0.93401 & 0.06599 \\
@@ -554,7 +563,7 @@ Acknowledge individuals, institutions, or companies that supported the authors i
\entry{b}{bulk value}
\entry{$\infty$}{free stream value}
-\end{nomenclature}
+\end{nomenclature}
%%%%%%%%%%%%%%% APPENDICES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -571,31 +580,30 @@ Acknowledge individuals, institutions, or companies that supported the authors i
This text is just for illustration. The radiation fractional function may be written in terms of the incomplete zeta function for convenience:
\begin{align}
-f(\lambda T) = {}& \frac{1}{\sigma T^4} \int_0^\lambda\frac{2\pi h c_o^2}{\lambda^5 \left[ \exp (h c_o/k_B T \lambda) - 1\right] } \, d\lambda \\
- = {}& \frac{1}{\sigma T^4}\frac{2\pi k_B^4 T^4}{h^3c_o^2}\int^\infty_{c_2/\lambda T}\frac{t^3}{e^t -1}\, dt\label{eqn:zeta}
+f(\lambda T) &= \frac{1}{\sigma T^4} \int_0^\lambda\frac{2\pi h c_o^2}{\lambda^5 \left[ \exp (h c_o/k_B T \lambda) - 1\right] } \, d\lambda \\
+ &= \frac{1}{\sigma T^4}\frac{2\pi k_B^4 T^4}{h^3c_o^2}\int^\infty_{c_2/\lambda T}\frac{t^3}{e^t -1}\, dt\label{eqn:zeta}
\end{align}
When $\lambda T \rightarrow \infty$, $f = 1$ and the last equation yields the well-known result
\begin{equation}
- {\sigma T^4} =\frac{2\pi k_B^4 T^4}{h^3c_o^2} \underbrace{\int_0^\infty \frac{t^3}{e^t - 1} \, dt}_{\equiv\mspace{2mu} \zetaup(4)\Gamma(4)}
+\sigma T^4 =\frac{2\pi k_B^4 T^4}{h^3c_o^2} \underbrace{\int_0^\infty \frac{t^3}{e^t - 1} \, dt}_{\equiv\mspace{2mu} \zetaup(4)\Gamma(4)}
\end{equation}
where the Gamma function $\Gamma(4) = 3!$ and the Riemann zeta function, $\zetaup(4)$, has the indicated integral representation \cite[\S13.12]{ww1927}. A classical result due to Euler \cite{euler1740} gives $\zetaup(4) = \pi^4/90$ (see also \cite[\S167]{euler1748}), from which we recover the usual definition of the Stefan-Boltzmann constant, $\sigma$.
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\section{Language Support}
+\section{Language Support\label{app:language}}
ASME publishes in English, but the \texttt{babel} package is loaded for users who may wish to include other languages.
For example, an author might wish to include an appendix that provides the abstract in another language.
When more than one language option is included in \verb|\documentclass[..]{asmejour}|, English will be
assumed to be the main language of the document. (To choose a different main language, set \texttt{[main=..]}).
-If no language options are given, the package defaults to English. As an example, a passage in French is
-shown in \selectlanguage{french}\appendixname~\ref{app:fourier}\selectlanguage{english}.
+If no language options are given, the package defaults to English. As an example, a passage in German is
+shown in \selectlanguage{german}\appendixname~\ref{app:pohlhausen}\selectlanguage{english}.
The standard caption and section names will follow \texttt{babel}'s dictionary for primary languages other than English. Users may additionally change ``Keywords'', ``Nomenclature'', and ``Corresponding author'' by renewing the commands \verb|\keywordname|, \verb|\nomname|, and \verb|\CAwords|. Changes to the page footer were described in Sec.~\ref{sec:footer}. The pdf bookmark for ``Appendices'' by be changed by renewing \verb|\appendicesname|.
The font encoding is set to T1 and utf-8 input is supported:
-%% If you have trouble with the next line (or the French text that follows), your file may not be saved in utf-8 format. You can delete these lines to resolve the issue.
+%% If you have trouble with the next line, your file may not be saved in utf-8 format. You can delete these lines to resolve the issue.
\typeout{If you have trouble with the next line, your file may not be saved in utf-8 format. You can delete that line to resolve the issue.}
\ifluatex\typeout{Under LuaLaTeX, some of these accents must be obtained as escaped characters, with \=a, \c{e}, \l, \.o, \oe, \v{z}, \'z, etc.}\fi
àáâäæãåā èéęëêēė îïíīįì ôöòóœøōõ ûüùúū çćč ł ñń ßśš ÿ žźż
@@ -604,18 +612,13 @@ No effort has been made to support customization of language-specific fonts (som
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\selectlanguage{french}
-\section{Discours Préliminaire de Fourier}\label{app:fourier}
-
-Les causes primordiales ne nous sont point con­nues; mais elles sont assujetties à des lois simples et constantes, que l'on peut découvrir par l'obser­vation, et dont l'étude est l'objet de la philosophie naturelle.
-
-La chale ur pénètre, comme la gravité, toutes les substances de l'univers, ses rayons occupent toutes les parties de l'espace. Le but de notre ouvrage est d'exposer les lois mathématiques que suit cet élé­ment. Cette théorie formera désormais une des branches les plus importantes de la physique gé­nérale~\cite{fourier1822}.
+\selectlanguage{german}
+\section{Der Wärmeaustausch zwischen festen Körpern und Flüssigkeiten mit kleiner reibung und kleiner Wärmeleitung (von E. Pohlhausen)\label{app:pohlhausen}}
+In einer strömenden Flussigkeit sind Wärmeleitung und Wärmekonvektion Vorgänge, die mit der inneren Reibung (oder Impulsleitung) und mit der Impulskonvektion große Aehnlichkeit besitzen. Mathematisch findet dies seinen Ausdruck in dem gleichartigen Bau der Differentialgleichungen, die einerseits für die Temperatur und anderseits für den Geschwindigkeitsvektor in der Flüssigkeit bestehen. Man kann daraus auf eine Beziehung
+zwischen dem Wärmeaustanch und dem Reibungswiderstand schließen, die eine strömende Flüssigkeit an einem festen Körper hervorrufen. Dies ist zuerst von Prandtl ausgesprochen und durchgeführt worden, und zwar für turbulente Vorgänge, unter der vereinfachenden Annahme von Wärmequellen und -senken im Innern der Flüssigkeit~\cite{pohlhausen1921}.
\selectlanguage{english}
-% When you drop the [french] option, delete your .aux file as well, since [french] sets ":" as an active character.
-
-
%%%%%%%%%%%%% BIBLIOGRAPHY %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\nocite{*} %% <=== Delete this line - unless you wish to typeset the entire contents of your .bib file.
diff --git a/macros/latex/contrib/asmejour/asmejour.cls b/macros/latex/contrib/asmejour/asmejour.cls
index 095964ffc7..a8cd43eae2 100644
--- a/macros/latex/contrib/asmejour/asmejour.cls
+++ b/macros/latex/contrib/asmejour/asmejour.cls
@@ -4,10 +4,9 @@
%%
%% The asmejour.cls file should be used with the files asmejour.bst (for citations) and asmejour-template.tex.
%%
-%%
%% This file's version and date are:
- \def\versionno{1.22}
- \def\versiondate{2024/01/30\space}
+ \def\versionno{1.23}
+ \def\versiondate{2024/07/24\space}
%%
%% Author: John H. Lienhard V
%% Department of Mechanical Engineering
@@ -22,14 +21,14 @@
%% 4. Support citations, footnotes, and bold face math in section headings
%% 5. Provide optional line numbers for editing and review
%% 6. Support balancing height of columns on the last page
-%% 7. Support the archival PDF/A standards 1b, 2b, 2u, 3b, and 3u
+%% 7. Support archival PDF/A standards
%% 8. Provide copyright notices for government employees and government contractors
%% 9. Enable various math and text features from the newtxmath, mathalfa, and newtxtext packages
%% 10. Support inclusion of passages in languages other than English
%%
%% This class is compatible with both pdfLaTeX and LuaLaTeX. All packages required by the class
-%% are in standard distributions, such as TeXLive, and are also available at CTAN (https://ctan.org/).
-%% The use of an up-to-date (Feb. 2020 or later) and complete LaTeX distribution is strongly recommended.
+%% are in standard distributions, such as TeX Live, and are also available at CTAN (https://ctan.org/).
+%% The use of an up-to-date (Nov. 2022 or later) and complete LaTeX distribution is strongly recommended.
%%
%% The title block is set by specific commands that are described in the asmejour-template.tex file.
%%
@@ -57,72 +56,79 @@
%% whether in an action of contract, tort or otherwise, arising from, out of or in connection with the
%% software or the use or other dealings in the software.
%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{asmejour}[\versiondate asmejour paper format]
-\LoadClass[twoside,9pt,twocolumn]{extarticle}
-
-\ifdefined\NewDocumentCommand\else
- \RequirePackage{xparse}[2020/02/25]
-\fi
+\LoadClass[twoside,9pt]{extarticle}% twocolumn format initiated in \MakeTitle command 2024/07/20
\RequirePackage{iftex}% provides \ifpdftex, etc.
\RequirePackage{ifthen}
-%%%%%%%%%%%%% Test compatibility of older distributions %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ExplSyntaxOn
+ \str_const:Nn \ClassName {asmejour}
+\ExplSyntaxOff
-\providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion}% compare version to date; \If... added to latex 2020/10/01
-\providecommand\IfPackageAtLeastTF{\@ifpackagelater}% compare version to date; \If... added to latex 2020/10/01
-\providecommand\IfPackageLoadedTF{\@ifpackageloaded}% \If...added to latex 2021/11/15
+%%%%%%%%%%%%% Some compatibility for older distributions %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\IfFormatAtLeastTF{2020/02/25}{%
- \ClassInfo{asmeconf}{Your LaTeX format is dated \fmtversion. LaTeX distributions 2020/10/01 or later are strongly recommended, for best results}
- }{%
- \ClassError{asmeconf}{Your LaTeX format is dated \fmtversion. Formats dated 2020/10/01 or later are recommended for the asmejour class. Older formats may generate errors or fail entirely!}{Please UPDATE your LaTeX distribution to obtain best results. TeX Live is available for download at no charge: \string https://www.tug.org/texlive/. You can try to click past the errors for now, but your abstract will probably not compile properly if you lack the xparse package [2020/02/25], and the code will crash entirely if you lack the iftex package [2019/11/07].}%
+\providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion}% compare version to date; \If... added to latex 2020/10/01
+\providecommand\IfPackageAtLeastTF{\@ifpackagelater}% compare version to date; \If... added to latex 2020/10/01
+\providecommand\IfPDFManagementActiveTF{\@secondoftwo}% \If... added to latex 2021/07/23
+\providecommand\IfPackageLoadedTF{\@ifpackageloaded}% \If...added to latex 2021/11/15
+\providecommand\ClassNoteNoLine[2]{\typeout{^^JClass Note #1: #2.^^J}}% log & terminal note... added to latex 2021/11/15
+
+\IfFormatAtLeastTF{2020/10/01}{\relax}{%
+ \ClassError{\ClassName}{Your LaTeX format is dated \fmtversion. Formats dated 2020/10/01 or later are recommended for the asmejour class. Older formats may generate errors or fail entirely!}{Please UPDATE your LaTeX distribution to obtain best results. TeX Live is available for download at no charge: \string https://www.tug.org/texlive/. You can try to click past any errors for now, but your abstract will not compile properly if you lack the xparse package [2020/02/25], and the code will crash entirely if you lack the iftex package [2019/11/07].}%
}
-
-\DeclareDocumentCommand\LogNote{m}{%
- \IfFormatAtLeastTF{2021/11/15}{%
- \ClassNoteNoLine{asmejour}{#1}% Added to LaTeX in Nov. 2021
- }{%
- \ClassWarningNoLine{asmejour}{#1}%
+
+% check whether pdfmanagement (\DocumentMetadata) has been loaded (else fall back to hyperxmp and bookmark packages after loading hyperref)
+\newif\ifasme@pdfmanagement
+\IfPDFManagementActiveTF{
+ \asme@pdfmanagementtrue
+}{
+ \asme@pdfmanagementfalse
+ \ClassWarningNoLine{\ClassName}{pdfmanagement is not active. Will load hyperxmp and bookmark packages instead}
+}
+
+% Allow pre 2021/11/15 formats to see the graphicx alt key without causing an error
+\IfFormatAtLeastTF{2021/11/15}{
+ \relax
+}{
+ \AtBeginDocument{
+ \IfPackageLoadedTF{graphicx}{\define@key{Gin}{alt}{}}{\relax}
}
}
-%% Test whether \DocumentMetadata has been loaded (Thank you Ulrike Fischer)
-\newif\if@asme@pdfmanagement
-\ExplSyntaxOn
-\bool_if:nTF
- {
- \bool_lazy_and_p:nn
- {\cs_if_exist_p:N \pdfmanagement_if_active_p:}
- { \pdfmanagement_if_active_p: }
- }
- {
- \@asme@pdfmanagementtrue
- }
- {
- \@asme@pdfmanagementfalse
- }
-\ExplSyntaxOff
+% Enable pre-2020/10 formats to access essential macros later moved into LaTeX kernel
+\ifdefined\NewDocumentCommand\else
+ \RequirePackage{xparse}[2020/02/25]
+\fi
+
+% Provide pre-2020/10 installations with basic unicode character mappings
+\IfFormatAtLeastTF{2020/10/01}{\relax}{%
+ \pdfgentounicode=1 %% enable CMaps; was moved into the latex kernel Oct 2020
+ \input glyphtounicode.tex %% lists of mappings; was moved into the latex kernel Oct 2020
+}
-%%%%%%%%%%%%%% Options for the class %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%% Options for the class %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\RequirePackage{kvoptions}% this package calls kvsetkeys
\SetupKeyvalOptions{
- family=asmejour,
+ family=\ClassName,
prefix=asmejour@,
setkeys=\kvsetkeys,
}
%% for mathalfa, so we may pass options in this format: mathalfa=cal=euler, mathalfa=frak=boondox
-\define@key{asmejour}{mathalfa}{%
+\define@key{\ClassName}{mathalfa}{%
\PassOptionsToPackage{#1}{mathalfa}%
}
+%% Option to obtain line numbers [singlecolumn], 2024/07/20
+\DeclareBoolOption{singlecolumn}
+
%% Option to obtain line numbers [lineno]
\DeclareBoolOption{lineno}
@@ -132,6 +138,12 @@
%% Option to omit lists of figures and tables
\DeclareBoolOption{nolists}
+%% Option to omit ASME copyright notice [nocopyright]
+\DeclareBoolOption{nocopyright}
+
+%% Option to omit ASME footers [nofoot]
+\DeclareBoolOption{nofoot}
+
%% Option for copyright notice if all authors are government employees [govt]
\DeclareBoolOption{govt}
@@ -141,57 +153,54 @@
%% Option for government contractor copyright notice [contractor]
\DeclareBoolOption{contractor}
-%% set [barcolor=] to a color name defined by xcolor package
+%% set key [barcolor=] to pass a color name defined by xcolor package
\DeclareStringOption[black]{barcolor}
-%% the key main= passes the choice of main language to babel
+%% the key [main= ] to pass the choice of main language to babel
\newif\ifaj@mainset\aj@mainsetfalse
-\define@key{asmejour}{main}[english]{%
+\define@key{\ClassName}{main}{%
\PassOptionsToPackage{main=#1,#1}{babel}% added #1 resolves conflicts between certain .ldf files under "main=".
\aj@mainsettrue
- \ifthenelse{\equal{#1}{english}}{%
- \PassOptionsToPackage{pdflang=en}{hyperref}}{%
- \LogNote{Selecting #1 as the primary language}
- }%
+ \ClassNoteNoLine{\ClassName}{Selecting #1 as the primary language}
}
-%% if main language was not chosen explicitly, default to English
-\ifaj@mainset\relax\else
- \PassOptionsToPackage{main=english}{babel}%
- \PassOptionsToPackage{pdflang=en}{hyperref}
- \ClassInfo{Selecting English as the primary language, since main= not set}%
-\fi
-
%% Suppress warnings about unused global options, 2021/12/01
-\DeclareDefaultOption{}% suppress warning about unused mathalfa option
+\DeclareDefaultOption{}
-\ProcessKeyvalOptions{asmejour}
+\ProcessKeyvalOptions{\ClassName}
%% Turn off these keys now that we're done with them
\NewDocumentCommand\aj@DisableOption{m}{%
\DisableKeyvalOption[%
action=ignore,%
- class=asmejour%
+ class=\ClassName%
]{#1}{\@KeyFamily}%
}
\NewDocumentCommand\@DisableKeys{>{\SplitList{;}}m}{\ProcessList{#1}{\aj@DisableOption}}
-\def\@KeyFamily{asmejour}
-\@DisableKeys{mathalfa;barcolor;lineno;balance;nolists;govt;govtsome;contractor;main}
+\def\@KeyFamily{\ClassName}
+\@DisableKeys{mathalfa;singlecolumn;lineno;balance;nolists;nocopyright;nofoot;govt;govtsome;contractor;barcolor;main}
+
+
+%% if main language was not was chosen explicitly, default to English
+\ifaj@mainset\relax\else
+ \PassOptionsToPackage{main=english}{babel}%
+ \ClassNoteNoLine{\ClassName}{Selecting English as the primary language, since main= not set}%
+\fi
-%%%%%%% PDF/A Compliance Keys %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%% PDF/A Compliance Keys %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% new pdf management in LaTeX, with \DocumentMetaData{..}, is preferred to this approach.
\newif\ifaj@setpdfa\aj@setpdfafalse
\newif\ifaj@pdfaone\aj@pdfaonefalse
-\if@asme@pdfmanagement\else
+\ifasme@pdfmanagement\else
\SetupKeyvalOptions{
family=pdfaopt,
- prefix=pdafopt@,
+ prefix=pdfaopt@,
setkeys=\kvsetkeys,
}
@@ -201,7 +210,7 @@
\define@key{pdfaopt}{pdf-a}[true]{%
\aj@setpdfatrue
\PassOptionsToPackage{pdfa}{hyperref}
- \AtBeginDocument{\hypersetup{pdfapart=3,pdfaconformance=u}}% note: hyperref takes these options if hyperxmp is loaded
+ \AtBeginDocument{\hypersetup{pdfapart=3,pdfaconformance=u}}% hyperref takes these options if hyperxmp is loaded
}
%%% to select part 1, 2 or 3
\define@key{pdfaopt}{pdfapart}[3]{%
@@ -209,7 +218,7 @@
\AtBeginDocument{\hypersetup{pdfapart=\asmejour@tempa}}
\ifthenelse{\equal{#1}{1}}{\aj@pdfaonetrue}{\relax}%
}
- %% to select conformance b or u. NB: a is not possible with pdfLaTeX, and u is not possible with 1.
+ %% to select conformance b or u. NB: a is not currently possible with pdfLaTeX; u not possible with 1.
\ExplSyntaxOn
\define@key{pdfaopt}{pdfaconformance}[u]{%
\str_set:Ne \l_tmp_str { \str_uppercase:n {#1} }
@@ -236,9 +245,10 @@
\pdfminorversion=7 % this selection is not required
\fi
\else
- \ifaj@setpdfa\ClassWarningNoLine{asmejour}{pdf-a option requires pdfLaTeX engine. Under LuaLaTeX, use %
- \protect\DocumentMetadata{pdfstandard=A-3b} before \protect\documentclass[..]{asmeconf}}\fi%
- \ifx\directlua\undefined\else
+ \ifaj@setpdfa\ClassWarningNoLine{\ClassName}{pdf-a option requires pdfLaTeX. Under LuaLaTeX, use %
+ \protect\DocumentMetadata{pdfstandard=A-3b} before \protect\documentclass[..]{\ClassName}}%
+ \fi
+ \ifx\directlua\undefined\else % default under lualatex is 1.4
\directlua{
if pdf.getminorversion() \string~= 7 then
if (status.pdf_gone and status.pdf_gone > 0)
@@ -248,58 +258,28 @@
pdf.setminorversion(7)
end
end
+ }
\fi
- }% will lose some accented characters this way... better to use fontspec, if the system fonts exist.
\fi
\fi
-%%%%%%%%%% Further class options %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%% Option to omit ASME footer
-\DeclareOption{nofoot}{%
- \AtBeginDocument{\pagestyle{plain}%
- \fancypagestyle{title}{%
- \fancyhf{}
- \fancyfoot[CE,CO]{\thepage}
- }
- }
-}
-
-%% Option to omit ASME copyright
-\DeclareOption{nocopyright}{%
- \AtBeginDocument{\fancypagestyle{title}{%
- \fancyhf{}
- \fancyfoot[RO]{\large\sffamily \@PreprintStringR\space\space\bfseries/\space\space\@PaperNumber\thepage}
- \fancyfoot[LO]{\large\bfseries\sffamily Journal of \@JourName}
- \fancyfoot[CO]{}
- }
- }
-}
+%%%%%%%%% Various font-related options %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Option for slightly larger small capitals font [largesc], corrected 2021/01/29
\DeclareOption{largesc}{\PassOptionsToPackage{largesc=true}{newtxtext}}% largesc is a boolean key in newtxtext
-%% ASME word separation is greater than newtxtext defaults so change these parameters.
-\PassOptionsToPackage{spacing=0.3em, stretch=0.18em, shrink=0.10em}{newtxtext}% increased shrink from 0.08, 2021/01/30
-
%% Disable newtxtext osf option, which is not appropriate for documents in this class
\DeclareOption{osf}{%
\PassOptionsToPackage{lining}{newtxtext}%
}
-%% Option to hyphenate the typewriter font [hyphenate]
-\DeclareOption{hyphenate}{%
- \PassOptionsToPackage{hyphenate}{inconsolata}%
- \LogNote{Allowing hyphenation of typewriter font}%
-}
-
\DeclareOption{hyphenate}{%
\ifpdftex
\PassOptionsToPackage{hyphenate}{inconsolata}% hyphenate is a key via xkeyval in inconsolata
- \LogNote{Allowing hyphenation of typewriter font}%
+ \ClassNoteNoLine{\ClassName}{Allowing hyphenation of typewriter font}%
\else
- \ClassWarningNoLine{asmejour}{The [hyphenate] option is only supported with pdftex. It will be ignored}%
+ \ClassWarningNoLine{\ClassName}{The [hyphenate] option is only supported with pdftex. It will be ignored}%
\fi
}
@@ -329,7 +309,7 @@
\ProcessOptions \relax
-%%%%%%%%%%%% Page size, bibliography, graphics, color, etc. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%% Page size, bibliography, graphics, color %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\RequirePackage[paperheight=285.7mm, paperwidth=215.900mm, left=21.100mm, right=21.100mm, top=15.9mm, bottom = 24mm, footskip=8mm]{geometry}
\setlength\columnsep{4.5mm}
@@ -342,22 +322,8 @@
\renewcommand*{\bibfont}{\footnotesize}
\RequirePackage{graphicx}
-\RequirePackage[dvipsnames,svgnames,x11names]{xcolor}% remove obsolete options, 2023/10/23
+\RequirePackage[dvipsnames,svgnames,x11names]{xcolor}% removed obsolete options, 2023/10/23
-% Allow pre 2021/11/15 formats to see the graphicx alt key without causing an error, in preparation for tagged pdf
-\IfFormatAtLeastTF{2021/11/15}{
- \relax
-}{
- \AtBeginDocument{
- \IfPackageLoadedTF{graphicx}{\define@key{Gin}{alt}{}}{\relax}
- }
-}
-
-% Nice solution from DPC to prevent aux file errors when switching from pdflatex to lualatex
-\ifx\directlua\undefined
- \AtBeginDocument{\immediate\write\@auxout{\detokenize{%
- \ifx\directlua\undefined\else\endinput\fi}}}
-\fi
%%%%%%%%%%%%% Table related %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -383,7 +349,9 @@
\ifpdftex
\RequirePackage[T1]{fontenc}
\RequirePackage[utf8]{inputenc}% for backward compatibility with pre-2018 LaTeX distributions
- \RequirePackage[helvratio=0.91]{newtxtext}% add this scaling 2022/06/26
+ %% ASME word separation is greater than newtxtext defaults so change these parameters.
+ %% increased shrink from 0.08, 2021/01/30; add this helvetica scaling 2022/06/26
+ \RequirePackage[helvratio=0.91, spacing=0.3em, stretch=0.18em, shrink=0.10em]{newtxtext}% default {0.25em,0.2em,0.1em}
\RequirePackage[varl,varqu]{inconsolata}% sans typewriter font; restored varl, varqu 2020/08/10
\RequirePackage[]{newtxmath}
\else % use lualatex with newtxmath and fontspec for text primary fonts. Revised 2023/10/21.
@@ -396,20 +364,20 @@
%
\RequirePackage[varqu,varl]{inconsolata} % typewriter font for math
\renewcommand\rmdefault{ntxtlf} % roman font for math
- \DeclareFontFamily{T1}{\sfdefault}{} % sf for math
+ \DeclareFontFamily{T1}{\sfdefault}{} % sf for math
\DeclareFontShape{T1}{\sfdefault}{m}{n}{<-> s*[0.94] ec-qhvr}{} %% see t1qhv.fd; 0.9-->0.94 2022/01/15
\RequirePackage[]{newtxmath} % newtxmath still handles mathematics
\RequirePackage[no-math]{fontspec}
\defaultfontfeatures{Ligatures=TeX,}
%
- \def\FontWarning{For luaLaTeX, you MUST have these OpenType fonts installed as system fonts on your computer: TeX Gyre Termes and TeX Gyre Heros (from \string http://www.gust.org.pl/projects/e-foundry/tex-gyre) and Inconsolatazi4 (\string https://ctan.org/tex-archive/fonts/inconsolata/opentype). If DON'T have these fonts, you will see ERROR messages!}
+ \def\FontWarning{For luaLaTeX, you MUST have these OpenType fonts installed as system fonts on your computer: TeX Gyre Termes and TeX Gyre Heros (from \string http://www.gust.org.pl/projects/e-foundry/tex-gyre) and Inconsolatazi4 (\string https://ctan.org/tex-archive/fonts/inconsolata/opentype). If you DON'T have these fonts, you will see ERROR messages!}
%
- \IfFontExistsTF{TeXGyreTermesX}{}{\ClassWarning{asmeconf}{\FontWarning} }
- \IfFontExistsTF{texgyreheros}{}{ \ClassWarning{asmeconf}{\FontWarning} }
- \IfFontExistsTF{Inconsolatazi4}{}{\ClassWarning{asmeconf}{\FontWarning} }
+ \IfFontExistsTF{TeX Gyre Termes}{}{\ClassWarningNoLine{\ClassName}{\FontWarning} }
+ \IfFontExistsTF{texgyreheros}{}{ \ClassWarningNoLine{\ClassName}{\FontWarning} }
+ \IfFontExistsTF{Inconsolatazi4}{}{\ClassWarningNoLine{\ClassName}{\FontWarning} }
%
- \setmainfont{TeXGyreTermesX}[% Presumes these are system fonts! Available at: http://www.gust.org.pl/projects/e-foundry/tex-gyre
- WordSpace = {1,1.4,1},%% This stretch matches newtxtext a little better. 1.4
+ \setmainfont{TeXGyreTermes}[% Presumes these are system fonts! Available at: http://www.gust.org.pl/projects/e-foundry/tex-gyre
+ WordSpace = {1.20,1.43,1.2},%% This stretch matches newtxtext a little better (reset 2024/07/23)
Extension = .otf,
UprightFont = *-Regular,
ItalicFont = *-Italic,
@@ -418,7 +386,8 @@
Numbers = Lining,
]
\setsansfont{texgyreheros}[% Presumes these are system fonts! Available at: http://www.gust.org.pl/projects/e-foundry/tex-gyre
- WordSpace = {1,1.4,1},
+ WordSpace = {1.20,1.43,1.2},%% This stretch matches newtxtext a little better (reset 2024/07/23)
+% WordSpace = {1,1.4,1},
Extension = .otf,
UprightFont = *-regular,
ItalicFont = *-italic,
@@ -443,7 +412,7 @@
\RequirePackage{bm}% load after all math for expanded access to bold math
-%% In addition to the word spacing options declared in line 235...
+%% In addition to the word spacing options declared in line 371...
%% Relative to size9.clo: leading reduced to 10 pt; displayskips made greater
\renewcommand\normalsize{%
\@setfontsize\normalsize\@ixpt{10\p@}% % <== was \@xipt
@@ -464,13 +433,12 @@
\newcommand*{\CondSans}{\fontencoding{T1}\fontfamily{qhvc}\selectfont}% remove extra \selectfont, 2023/10/21
\renewcommand\huge{\@setfontsize\huge{14}{14}} %... for author names only
\newcommand*{\CondSansBold}{\renewcommand\bfdefault{b}\fontencoding{T1}\fontfamily{qhvc}\selectfont\bfseries}
-\renewcommand\Huge{\@setfontsize\Huge{26.5}{26.5}} %... for title font only
+\renewcommand\Huge{\@setfontsize\Huge{26.5}{26.5}} %... for title only
\RequirePackage{metalogo,hologo}% Access to various LaTeX logos (for use in the documentation)
-%% This provides sans serif italic and sans serif bold italic math.
-%% It's intended for use in the figure and table captions.
-%% Fonts are from newtxsf package.
+%% This provides sans serif italic and sans serif bold italic math, against with fonts from newtxsf.
+%% For use in the figure and table captions.
\DeclareMathVersion{sansbold}
\SetSymbolFont{letters}{sansbold}{OML}{ntxsfmi}{b}{it}
\SetSymbolFont{lettersA}{sansbold}{U}{ntxsfmia}{b}{it}
@@ -480,8 +448,8 @@
\SetSymbolFont{operators}{sansbold}{\encodingdefault}{\sfdefault}{\bfdefault}{n}
\SetMathAlphabet{\mathsf}{sansbold}{\encodingdefault}{\sfdefault}{b}{n}% \mathsf is upright
-%% These lines are to provide math accents for the sans and sansbold math versions.
-%% The accents from ntxsfmi work normally with regular times fonts. Added 2021/01/27
+%% Provide math accents for the sans and sansbold math versions. Accents from ntxsfmi work normally
+%% with regular times fonts. 2021/01/27
\DeclareSymbolFont{lettersAB}{U}{ntxsfmia}{m}{it}
\SetSymbolFont{lettersAB}{normal}{U}{ntxsfmia}{m}{it}
\SetSymbolFont{lettersAB}{bold}{U}{ntxsfmia}{b}{it}
@@ -556,8 +524,7 @@
\DeclareMathSymbol{\sfhslash}{\mathalpha}{lettersAB}{52}% this is not upright
\DeclareMathSymbol{\sfhbar}{\mathalpha}{lettersAB}{53}% this is not upright
-%%% sans math version, potential value with PGFPlots, and provisionally called in subfigure captions.
-%%% this is experimental, still needs stress testing. 2021/01/30
+%%% sans math version, potential value with PGFPlots, called in subfigure captions. 2021/01/30
\DeclareMathVersion{sans}
\SetSymbolFont{letters}{sans}{OML}{ntxsfmi}{m}{it}
\SetSymbolFont{lettersA}{sans}{U}{ntxsfmia}{m}{it}
@@ -569,7 +536,7 @@
\SetMathAlphabet{\mathsf}{sans}{\encodingdefault}{\sfdefault}{m}{n}
-%%%%%%%%%%%%%%%%% Some adjustments to math layout %%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%% Some adjustments to math layout %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\setlength{\jot}{10pt}% <== default is 3pt
@@ -580,7 +547,7 @@
\allowdisplaybreaks % ASME allows these breaks
-%%%%%%%%%%%%%%%%% Equation and Line Numbering %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%% Equation and Line Numbering %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\RequirePackage{etoolbox}% patching amsmath
@@ -598,37 +565,36 @@
\ifasmejour@lineno
\RequirePackage[switch,mathlines]{lineno}%
- \renewcommand{\linenumberfont}{\normalfont\footnotesize\color{red}}%
+ \renewcommand{\linenumberfont}{\normalfont\scriptsize\color{red}}%
\AtBeginDocument{\linenumbers}%
\ifasmejour@balance
- \ClassWarningNoLine{asmejour}{Package lineno loaded, so final column balancing will be disabled}%
+ \ClassWarningNoLine{\ClassName}{Package lineno loaded, so final column balancing will be disabled}%
\fi
%%% Patch to allow line numbering in AMS math environments.
%%% This patch is for lineno versions earlier than v5.2 [2023/05/19]. As of mid-2023, the lineno package
%%% has been corrected to account for the AMS math environments. Retaining temporarily for backward compatibility.
%%% postdisplaypenalty adjusted to avoid extra line number at end, see: https://tex.stackexchange.com/a/461192/
- %%% multline has some additional problem that puts an extra line number above it.
\IfPackageAtLeastTF{lineno}{2023/05/19}{\relax}{
- \NewDocumentCommand{\ac@losepostpenalty}{}{\patchcmd{\linenomathWithnumbers}{\advance\postdisplaypenalty\linenopenalty}{}{}{}}
+ \NewDocumentCommand{\aj@losepostpenalty}{}{\patchcmd{\linenomathWithnumbers}{\advance\postdisplaypenalty\linenopenalty}{}{}{}}
%
- \NewDocumentCommand{\ac@FixAMSMath}{m}{%
- \AtBeginEnvironment{#1}{\ac@losepostpenalty\linenomath}%
+ \NewDocumentCommand{\aj@FixAMSMath}{m}{%
+ \AtBeginEnvironment{#1}{\aj@losepostpenalty\linenomath}%
\AtEndEnvironment{#1}{\endlinenomath}%
- \AtBeginEnvironment{#1*}{\ac@losepostpenalty\linenomath}%
+ \AtBeginEnvironment{#1*}{\aj@losepostpenalty\linenomath}%
\AtEndEnvironment{#1*}{\endlinenomath}%
}
%
- \NewDocumentCommand{\ac@FixAll}{>{\SplitList{;}}m}{\ProcessList{#1}{\ac@FixAMSMath}}
+ \NewDocumentCommand{\aj@FixAll}{>{\SplitList{;}}m}{\ProcessList{#1}{\aj@FixAMSMath}}
%
- \ac@FixAll{align;alignat;gather;flalign;multline}
+ \aj@FixAll{align;alignat;gather;flalign;multline}
}
%
\else
\ProvideDocumentEnvironment{linenomath}{}{}{}%
- \ifasmejour@balance % balancing through flushend can produce weird errors
- \RequirePackage{flushend}% flushend package is NOT compatible with lineno
+ \ifasmejour@balance % balancing through flushend can produce weird errors.
+ \RequirePackage{flushend}% flushend package is NOT compatible with lineno.
\AtEndDocument{\flushcolsend}%
- \LogNote{Calling flushend package to balance column height on last page}%
+ \ClassNoteNoLine{\ClassName}{Calling flushend package to balance column height on last page}%
\fi%
\fi
@@ -638,9 +604,9 @@
%% ASME page proofs seem to align the number at top of the line, rather than bottom as done here.
-%%%%%%%%%%%%%%%%% Footer Set Up %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%% Footer Set Up %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%% footer text names %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%% footer text names %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\JourName}[1]{\gdef\@JourName{#1}}
\providecommand\@JourName{\hbox{ }}
@@ -650,8 +616,8 @@
}
\providecommand\@PaperYear{\the\year}
-\def\@PreprintStringL{PREPRINT FOR REVIEW}
-\def\@PreprintStringR{PREPRINT FOR REVIEW}
+\def\@PreprintStringL{PREPRINT}% updated 2024/07/24
+\def\@PreprintStringR{PREPRINT}
\NewDocumentCommand{\PreprintString}{m o}{%
\IfNoValueTF{#2}{%
@@ -668,32 +634,53 @@
%%%%%% Fancyhdr %%%%%%%%%%%%%%%%%%%%%%%%%
-\RequirePackage{fancyhdr}
+\RequirePackage{fancyhdr}% options revised 2024/07/23
\pagestyle{fancy}
\fancyhf{}% clear all header and footer fields
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}
-\fancyfoot[RE]{\large\bfseries\sffamily Transactions of the ASME}
-\fancyfoot[LO]{\large\bfseries\sffamily Journal of \@JourName}
-\fancyfoot[RO]{\large\sffamily \@PreprintStringR\space\space\bfseries/\space\space\@PaperNumber\thepage}
-\fancyfoot[LE]{\large\sffamily {\bfseries \@PaperNumber\thepage\space\space/}\space\space\@PreprintStringL\ }
+\ifasmejour@nofoot
+ \fancyfoot[CE,CO]{\thepage}
+\else
+ \fancyfoot[RE]{\large\bfseries\sffamily Transactions of the ASME}
+ \fancyfoot[LO]{\large\bfseries\sffamily Journal of \@JourName}
+ \fancyfoot[RO]{\large\sffamily \@PreprintStringR\space\space\bfseries/\space\space\@PaperNumber\thepage}
+ \fancyfoot[LE]{\large\sffamily {\bfseries \@PaperNumber\thepage\space\space/}\space\space\@PreprintStringL\ }
+\fi
-\fancypagestyle{title}{%
+\fancypagestyle{title}{% is an odd page
\fancyhf{}% clear all header and footer fields
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}
- \fancyfoot[RO]{\large\sffamily \@PreprintStringR\space\space\bfseries/\space\space\@PaperNumber\thepage}
- \fancyfoot[LO]{\large\bfseries\sffamily Journal of \@JourName}
- \fancyfoot[CO]{\large\bfseries\sffamily Copyright \textcopyright\ \@PaperYear\ by ASME}
+ \ifasmejour@nofoot
+ \fancyfoot[CO]{\thepage}
+ \else
+ \fancyfoot[RO]{\large\sffamily \@PreprintStringR\space\space\bfseries/\space\space\@PaperNumber\thepage}
+ \fancyfoot[LO]{\large\bfseries\sffamily Journal of \@JourName}
+ \ifasmejour@nocopyright
+ \fancyfoot[CO]{}
+ \else
+ \fancyfoot[CO]{\large\bfseries\sffamily Copyright \textcopyright\ \@PaperYear\ by ASME}
+ \fi
+ \fi
}
+
%%%%%% Footnotes %%%%%%%%%%%%%%%%%%%%%%%%%%%
\RequirePackage{fnpos}
\makeFNbottom
\makeFNbelow
+\RequirePackage{footmisc}%
+\IfPackageAtLeastTF{footmisc}{2022/02/05}{
+ \PassOptionsToPackage{belowfloats}{footmisc}%
+ }{ \RequirePackage{fnpos}
+ \makeFNbottom
+ \makeFNbelow
+ }%
+\setlength\footnotemargin{4mm}% reduce indentation of footnotes, from footmisc
\setlength{\skip\footins}{12pt plus 2pt minus 1pt}
\renewcommand{\footnoterule}{%
@@ -702,10 +689,6 @@
\kern 2pt
}
-%% reduce indentation of footnotes
-\renewcommand\@makefntext[1]{%
- \noindent\makebox[4mm][r]{\@makefnmark}\hyphenpenalty=300\exhyphenpenalty=300 #1}% <== suppress hyphenation
-
%% Produces an unmarked footnote about the revision date.
%% This command is invoked by \date as part of \MakeTitlePage below.
%% Text can be anything given as the argument to \date{..}.
@@ -717,13 +700,13 @@
%% include a comma for sequential footnotes
\ExplSyntaxOn
- \cs_new:Npn \__asmejour_NoteComma:n { \peek_meaning:NT \footnote { \textsu{\mdseries,} } }
+ \cs_new:Npn \__asmejour_NoteComma:n { \peek_meaning:NT \footnote { \textsuperscript{\mdseries,} } }
\cs_new_eq:NN \__savefootnote \footnote
\cs_gset_protected:Npn \footnote #1 { \__savefootnote{#1}\__asmejour_NoteComma:n }
\ExplSyntaxOff
-%%%%%%%%% Caption Related %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%% Caption Related %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\addto{\captionsenglish}{%
\renewcommand{\figurename}{Fig.}
@@ -739,7 +722,7 @@
\captionsetup[figure]{labelfont={sf,bf},textfont={sf,bf},textformat=boldmath,labelsep=quad}
\captionsetup[table]{labelfont={sf,bf},textfont={sf,bf},textformat=boldmath,labelsep=quad,skip=0.5\baselineskip}
-%% 30 January 2021. ASME only labels subfigures with a sans serif, italic (a), (b),... no caption text, no bold face.
+%% 2021/01/30: ASME only labels subfigures with a sans serif, italic (a), (b),... no caption text, no bold face.
\captionsetup[subfigure]{labelfont={sf},textfont={sf},textformat=sansmath,labelformat=simple}% default: =parens
\renewcommand\thesubfigure{(\textit{\alph{subfigure}})}
@@ -747,7 +730,7 @@
\renewcommand\thesubtable{(\textit{\alph{subtable}})}
-%%%%%%%%%%%% Section Headings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%% Section Headings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\RequirePackage[raggedright,indentafter]{titlesec}
@@ -760,28 +743,28 @@
\titlespacing{\subsubsection}{\parindent}{12pt plus 3pt minus 2pt}{0.5em}
%% ASME style does not seem to go lower than third level heading, so ...
-%% ....putting \paragraph into \subsubsection settings.
+%% ...put \paragraph into \subsubsection settings.
\titleformat{\paragraph}[runin]{\itshape}{\thesubsubsection}{0.5em}{}[.]
\titlespacing{\paragraph}{\parindent}{14pt plus 3pt minus 2pt}{0.5em}
%% Special handling of the appendices
%% Assumes that appendices are the last technical content in paper
-\providecommand{\appendicesname}{Appendices}
-
-\RenewDocumentCommand{\appendix}{}{%
- \pdfbookmark[1]{\appendicesname}{appendices}
- \setcounter{section}{0}
- \renewcommand\thesection{\Alph{section}}
- \setcounter{equation}{0}
- \renewcommand\theequation{\Alph{section}\arabic{equation}}
- \titleformat{\section}[block]{\mathversion{bold}\bfseries\large\raggedright}{\appendixname\ \thesection:}{0.5em}{}[\setcounter{equation}{0}]
-}
+\providecommand*{\appendicesname}{Appendices}
+\newcounter{appeqn}%% Code revised to better support tagged pdf, 2024/07/24
+\patchcmd{\appendix}{%
+ \setcounter{subsection}{0}}{%
+ \setcounter{subsection}{0}%
+ \pdfbookmark[1]{\appendicesname}{appendices}%
+ \@addtoreset{equation}{appeqn}\stepcounter{appeqn}%
+ \gdef\theequation{\@Alph\c@section\@arabic\c@equation}%
+}{}{}
+\apptocmd{\appendix}{\titleformat{\section}[block]{\mathversion{bold}\bfseries\large\raggedright}{\appendixname\ \thesection:}{0.5em}{}}
%% natbib's \bibsection controls section heading for References.
-%%%%%%%%%%%%%%%%% List environments %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%% List environments %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\RequirePackage{enumitem}
@@ -789,24 +772,20 @@
%% I have no examples of sublists...
-%%%%%%%%%%%%%%%%% Hyperref %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%% Hyperref %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% new pdf management in LaTeX, with \DocumentMetaData{..}, is preferred to this approach.
\ifpdftex
- %%% to assist with unicode glyph mapping, following M. Sharpe's recommendation in the newtx documentation.
- \IfFormatAtLeastTF{2020/10/01}{\relax}{%
- \pdfgentounicode=1 %% enable CMaps; has moved into the latex kernel Oct 2020
- \input glyphtounicode.tex %% lists of mappings; has moved into the latex kernel Oct 2020
- }
+ %%% to assist with unicode glyph mapping in pdf/a, per M. Sharpe's recommendation in newtx documentation
\InputIfFileExists{glyphtounicode-cmr.tex}{}{} %% additional mappings
\InputIfFileExists{glyphtounicode-ntx.tex}{}{} %% additional mappings
+ %% new pdf management in LaTeX, with \DocumentMetaData{..}, is preferred to this approach.
\ifaj@setpdfa
- %%%% the pdfmanagement options are experimental, from Ulrike Fischer 2021/06/12
- \if@asme@pdfmanagement
- \ClassInfo{asmejour}{pdfmanagement is defined. Class file will not load a color profile}
+ %%%% the pdfmanagement options from Ulrike Fischer 2021/06/12
+ \ifasme@pdfmanagement
+ \ClassInfo{\ClassName}{pdfmanagement is defined. Class file will not load a color profile}
\else
- \ClassInfo{asmejour}{pdfmanagement not defined. Class file will load a color profile}%
+ \ClassInfo{\ClassName}{pdfmanagement not defined. Class file will load a color profile}%
%%% a fairly generic RGB color profile, aimed at on-screen rendering (not print production)
\immediate\pdfobj stream attr{/N 3} file{sRGB.icc}
\pdfcatalog{%
@@ -826,41 +805,41 @@
%%%
-\RequirePackage[psdextra]{hyperref} % recent kernel transition suggests providing most hyperref options via \hypersetup,
- % but setting psdextra here (for additional math support in bookmarks) 2021/12/23
+\RequirePackage[psdextra]{hyperref} % provide most hyperref options via \hypersetup, but per documentation
+ % set [psdextra] here (for additional math support in bookmarks) 2021/12/23
\hypersetup{%
- pdfborder={0 0 0},%
- bookmarksnumbered=true,%
- bookmarksopen=true,%
- bookmarksopenlevel=1,%
- colorlinks=true,%
- linkcolor=blue, %
- citecolor=blue, %
- urlcolor=blue, %
- filecolor=red, % added 2021/12/23, to make certain broken links more apparent
- pdfnewwindow=true,%
- pdfpagelayout=SinglePage, %TwoPageRight,% changed 2020/08/12
- pdfdisplaydoctitle=true%
+ pdfborder={0 0 0},
+ bookmarksnumbered=true,
+ bookmarksopen=true,
+ bookmarksopenlevel=1,
+ colorlinks=true,
+ linkcolor=blue,
+ citecolor=blue,
+ urlcolor=blue,
+ filecolor=red, % added 2021/12/23, to make certain broken links more apparent
+ pdfnewwindow=true,
+ pdfpagelayout=SinglePage, % was TwoPageRight, changed 2020/08/12
+ pdfdisplaydoctitle=true,
}
\urlstyle{same} % don't switch to typewriter font
\RequirePackage{doi} % supports nasty characters in some doi's
\renewcommand{\doitext}{doi:~} % change the default, {doi:}, to this for ASME specification
-\RequirePackage{bookmark} % improves handling of pdf bookmarks
\providecommand*{\toclevel@subfigure}{1}% <== to address unknown bookmark level of subfigure. 2021/12/24
\providecommand\hrefurl[2]{\href{#1}{#2}}% to address certain issues around URL recognition with new pdf management code, 2021/12/22
%% This alias is also incorporated into asmejour.bst
-\if@asme@pdfmanagement
- \ClassInfo{asmejour}{pdfmanagement is defined. Class file will not load hyperxmp}
+\ifasme@pdfmanagement
+ \ClassInfo{\ClassName}{pdfmanagement is defined. Class file will not load hyperxmp}
\else
+ \RequirePackage{bookmark} %% improves handling of pdf bookmarks
\RequirePackage{hyperxmp} %% to fix transfer of metadata to Acrobat pdf
% Patch bug in hyperxmp, unless a more recent version is used.
\@ifpackagelater{hyperxmp}{2022/10/15}{% v5.11 or later
\relax
- % \ClassInfo{asmeconf}{hyperxmp v5.11 or later is in use}
+ % \ClassInfo{\ClassName}{hyperxmp v5.11 or later is in use}
}{%
\ifx\undefined\hyxmp@no@bad@parts\relax\else
\newcount\hypxmp@tempcnt
@@ -872,10 +851,11 @@
}
\fi
-%%%%%% Adjustments to accommodate hyperref bookmarks %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%% Adjustments to accommodate hyperref bookmarks %%%%%%%%%%%%%%%%%%%%%%
-%%% ==> recent and evolving development of \pdfstring removes all robust commands from bookmarks, so
-%%% the following interventions may become unnecessary over time (2021/12/23).
+%%% Recent development of \pdfstring has removed all robust commands from bookmarks (2021/12/23).
+%%% By mid-2024, no errors are thrown except for \bm; however, these commands serve to still suppress warnings.
+%%% Math shift by $..$ still creates a warning, but I am leaving that in place. To avoid, use \( .. \) instead.
%% Since \bm is useful in headings, this fix will reduce frequency with which
%% alternate pdfstrings must be given in section command as \section[pdfstring]{texstring}
@@ -896,7 +876,7 @@
%% Ensure that tag color does not follow \eqref into bookmarks, 2020/02/28
\pdfstringdefDisableCommands{%
- \def\eqref#1{(\ref{#1})}%
+ \def\eqref#1{(\ref*{#1})}%
}
%% Let's make sure footnotes in section headings don't break pdf bookmarks.
@@ -906,13 +886,13 @@
}
-%%%%%%%%%%%%% Define some section and other names for special environments %%%%%%%
+%%%%%%%%%%%%% Define some section and other names for special environments %%%%%%%%%%%%%%%%%%%%%%%%
\providecommand{\nomname}{Nomenclature}
\providecommand{\keywordname}{Keywords}
\providecommand{\CAwords}{Corresponding Author.}
-%%%%%%%%%%%%% Nomenclature Environment %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%% Nomenclature Environment %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Nomenclature environment in ASME Journal Style.
%% Run twice to get proper label width.
@@ -926,7 +906,7 @@
\NewDocumentCommand{\entry}{m m}{%
\ifblank{#2}{%
- \ClassError{asmejour}{The command \protect\entry should have two arguments. For subheadings, use \protect\EntryHeading}{It appears that you gave only one argument for \protect\entry. You need to include a second argument.}
+ \ClassError{\ClassName}{The command \protect\entry should have two arguments. For subheadings, use \protect\EntryHeading}{It appears that you gave only one argument for \protect\entry. You need to include a second argument.}
}{%
\item[\hfill#1${} = {}$]#2%
\@itempenalty=-\@lowpenalty%
@@ -938,7 +918,7 @@
%% A separate command command for nomenclature subheadings
\NewDocumentCommand\EntryHeading{m}{%
- \itemsep12\p@ plus 4\p@ minus 4\p@% \bigskip
+ \itemsep12\p@ plus 4\p@ minus 4\p@
\goodbreak\item[\bfseries#1\hfill]\mbox{}\itemsep3\p@ plus 1\p@ minus 1\p@\@itempenalty=1000% add \mbox for tagged pdf, 2023/10/20
}
@@ -966,28 +946,25 @@
}%
}{%
\setcounter{savedlength}{\widest}%
- \end{list}%
+ \end{list}\ignorespacesafterend
}
-%%%%%%%%%%%%%%%% List of figures and list of tables %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%% List of figures and list of tables %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% ASME requires these lists for production.
\ifasmejour@nolists
- \LogNote{Omitting lists of figures and tables}%
+ \ClassNoteNoLine{\ClassName}{Omitting lists of figures and tables}%
\else
\AtEndDocument{%
- \clearpage
\twocolumn[%
- \begin{@twocolumnfalse}
\listoffigures
\listoftables
- \end{@twocolumnfalse}
]%
}%
\fi
-%%%%%%%%%%%%%%%% Author/Title/Abstract block %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%% Author/Title/Abstract block %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\RequirePackage{xcoffins}
@@ -1028,12 +1005,12 @@
\fi
}
-
\NewDocumentCommand\SetTitle{m}{%
\SetVerticalCoffin{\Title}{114mm}{%
\vspace*{0.5mm}% <== ASME doesn't align bar and text
\noindent\Huge\CondSansBold\raggedright%
#1%
+ %\gdef\@title{#1}% for tagging, etc. 2024/07/24. pdf metadata will probably override.
\par
}
}
@@ -1086,7 +1063,7 @@
\addtocounter{footnote}{-1}% in case of more than one CA
}
-%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newlength{\@AbstractSep}%% <== separation of author/abstract coffin from main two-column text.
\setlength{\@AbstractSep}{12.5mm}
@@ -1094,12 +1071,15 @@
\NewDocumentCommand{\MakeTitlePage}{}{%
\thispagestyle{title}%
- \twocolumn[
- \begin{@twocolumnfalse}
+ \ifasmejour@singlecolumn % 2024/07/20
\@ConstructAuthorBlock
\vspace*{\@AbstractSep}
- \end{@twocolumnfalse}
- ]
+ \else
+ \twocolumn[
+ \@ConstructAuthorBlock
+ \vspace*{\@AbstractSep}
+ ]
+ \fi
\ifaj@CA
\addtocounter{footnote}{1}
\footnotetext{\CAwords}
@@ -1113,7 +1093,7 @@
\fi
}
-%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Provide compatibility with titling commands from standard LaTeX article class
@@ -1143,7 +1123,7 @@
\RenewDocumentCommand{\thanks}{m}{\relax}%% disabling this standard command, as it is inconsistent with this format
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\endinput
%%
diff --git a/macros/latex/contrib/asmejour/asmewide_example/asmejour-wide-equation-examples.pdf b/macros/latex/contrib/asmejour/asmewide_example/asmejour-wide-equation-examples.pdf
index 5b93ad2cf9..c3b0bc535e 100644
--- a/macros/latex/contrib/asmejour/asmewide_example/asmejour-wide-equation-examples.pdf
+++ b/macros/latex/contrib/asmejour/asmewide_example/asmejour-wide-equation-examples.pdf
Binary files differ
diff --git a/macros/latex/contrib/asmejour/asmewide_example/asmejour-wide-equation-examples.tex b/macros/latex/contrib/asmejour/asmewide_example/asmejour-wide-equation-examples.tex
index 69b98af0b2..5a506330aa 100644
--- a/macros/latex/contrib/asmejour/asmewide_example/asmejour-wide-equation-examples.tex
+++ b/macros/latex/contrib/asmejour/asmewide_example/asmejour-wide-equation-examples.tex
@@ -1,6 +1,6 @@
%% Examples of a widetext macro for setting wide equations in the asmejour class.
%%
-%% Copyright (c) 2022 John H. Lienhard. Use under the MIT license: https://ctan.org/license/mit
+%% Copyright (c) 2024 John H. Lienhard. Use under the MIT license: https://ctan.org/license/mit
%%
%%
%% USAGE: * \begin{widetext} ...wide material here... \end{widetext}
@@ -15,8 +15,8 @@
\documentclass[nocopyright,nolists,pdf-a]{asmejour}
%% This file's version and date are:
- \def\AJwidetextversion{1.01}
- \def\AJverdate{October 22, 2023}
+ \def\AJwidetextversion{1.02}
+ \def\AJverdate{July 24, 2024}
%
\usepackage{asmewide}
\usepackage{lipsum}% Latin filler text (lipsum generates a message about 'unused global options' - this can be ignored)
@@ -81,6 +81,8 @@ address = {New York},
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
+\PreprintString{PREPRINT}
+
\SetAuthorBlock{John H.\ Lienhard V}{%
Fellow of ASME \\
Rohsenow Kendall Heat Transfer Laboratory, \\
diff --git a/macros/latex/contrib/babel-contrib/french/README.md b/macros/latex/contrib/babel-contrib/french/README.md
index 5f6d25139a..0ab51bc7ac 100644
--- a/macros/latex/contrib/babel-contrib/french/README.md
+++ b/macros/latex/contrib/babel-contrib/french/README.md
@@ -23,7 +23,7 @@ The bundle consists of the following files:
License
-------
-Released under the LaTeX Project Public License v1.3 or later
+Released under the LaTeX Project Public License v1.3c or later
See http://www.latex-project.org/lppl.txt
## Installation
@@ -31,7 +31,8 @@ See http://www.latex-project.org/lppl.txt
If the latest version of this package is not included in your LaTeX
distribution, do the following:
-* issue "luatex frenchb.dtx" to unpack the language definition files;
+* execute the command "luatex frenchb.dtx" in a terminal to unpack
+ the language definition files;
* copy the files frenchb.lua, french.ldf, frenchb.ldf, francais.ldf,
acadian.ldf and canadien.ldf to a location where TeX can find them
(default location: $TEXMF/tex/generic/babel-french/);
@@ -49,5 +50,5 @@ Changes
See the included manual frenchb.pdf, section "Change History".
---
-Copyright 1996--2023 Daniel Flipo
+Copyright 1996--2024 Daniel Flipo
E-mail: daniel (dot) flipo (at) free (dot) fr
diff --git a/macros/latex/contrib/babel-contrib/french/frenchb-doc.pdf b/macros/latex/contrib/babel-contrib/french/frenchb-doc.pdf
index 4b901cdf3e..da0dc2cbdb 100644
--- a/macros/latex/contrib/babel-contrib/french/frenchb-doc.pdf
+++ b/macros/latex/contrib/babel-contrib/french/frenchb-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/babel-contrib/french/frenchb-doc.tex b/macros/latex/contrib/babel-contrib/french/frenchb-doc.tex
index 9434072bd6..f3d21083b3 100644
--- a/macros/latex/contrib/babel-contrib/french/frenchb-doc.tex
+++ b/macros/latex/contrib/babel-contrib/french/frenchb-doc.tex
@@ -120,7 +120,7 @@
\title{Mode d’emploi du module \ext{babel-french}}
\author{\href{mailto:daniel.flipo@free.fr}{Daniel \textsc{Flipo}}}
-\newcommand*{\latestversion}{3.5s}
+\newcommand*{\latestversion}{3.6c}
\date{Version {\latestversion} -- \today}
\begin{document}
@@ -135,7 +135,7 @@
trouve à la section~\ref{sec:changes-3.0} p.~\pageref{sec:changes-3.0}.
La version actuelle de frenchb (\latestversion), dont le nom officiel est
- \ext{babel-french}, est prévue pour fonctionner aussi bien avec les anciens
+ \ext{babel-french}, est conçue pour fonctionner aussi bien avec les anciens
formats TeX comme pdf(La)TeX qu’avec les nouveaux Lua(La)TeX et Xe(La)TeX.
Les mises à jour de \ext{babel-french} sont désormais affichées très
@@ -157,11 +157,6 @@
\vspace{-\baselineskip}\noindent
\descindentFB=0pt
\begin{description}
- \item[30 avril 2017] Utiliser |\frenchsetup{}| de préférence à
- |\frenchbsetup{}|, voir p.~\pageref{sec:Perso}.
- Personnalisation de la commande |\part{}|, voir p.~\pageref{ssec:captions}.
- \item[31 août 2017] Ajout de l’option \fbo{UnicodeNoBreakSpaces},
- voir p.~\pageref{ucs-nbsp}.
\item[30 janvier 2018] Adaptation à la version 3.4a, voir
section~\ref{ssec:changes-3.4}.
\item[24 février 2018] Regroupement par thèmes des options de \fbsetup{}.
@@ -183,6 +178,8 @@
voir p.~\pageref{par-in-lists}.
\item[19 déc. 2023] \ext{babel-french} est maintenant compatible
avec \pkg{ucharclasses} (XeLaTeX). \file{frenchb.ins} supprimée.
+ \item[22 mai 2024] Adaptation à la version 3.6a, voir
+ section~\ref{ssec:changes-3.6}.
\end{description}
\end{abstract}
\egroup
@@ -880,8 +877,9 @@ La liste étant longue, les options sont regroupées par thèmes.
\item [AutoSpaceFootnotes=false (true*)] supprime l’espace fine
insécable ajoutée par défaut avant l’appel de chaque note dans le texte
- courant. Cette option affecte la totalité du document.
-
+ courant. Cette option affecte la totalité du document.
+ L’espace éventuellement ajoutée peut être ajustée, la commande par défaut
+ est : |\newcommand*{\FBfnmarkspace}{\kern .5\fontdimen2\font}|
\end{description}
\subsubsection*{Ponctuation haute}
@@ -1123,10 +1121,10 @@ La liste étant longue, les options sont regroupées par thèmes.
section~\ref{sec:description}, p.~\pageref{sec:description}.
\item [LowercaseSuperscripts=false (true)] rend possible d’avoir des lettres
- supérieures en capitales (est-ce bien utile ?). Par défaut, la nouvelle
- commande |\up| (sauf si elle est redéfinie en |\textsuperscript| par l’option
- précédente) empêche le passage en capitales des lettres supérieures dans les
- hauts de pages par exemple.
+ supérieures en capitales (est-ce bien utile ?). Par défaut, la commande
+ |\up| (sauf si elle est redéfinie en |\textsuperscript| par l’option
+ précédente) empêche le passage en capitales des lettres supérieures dans
+ les hauts de pages par exemple.
\item [SuppressWarning=true (false)] peut être utilisée pour supprimer les
avertissements non essentiels émis par \ext{babel-french}.
@@ -1521,10 +1519,31 @@ aurait :
}
%\newpage
-\section{Changements entre les versions 3.5 et 2.6}
+\section{Changements entre les versions \latestversion{} et 3.4 (2018)}
\label{sec:changes-3.0}
-\subsection{Changements entre les versions \latestversion{} et 3.4d}
+\subsection{Changements entre les versions \latestversion{} et 3.5s}
+\label{ssec:changes-3.6}
+
+Un bug affectant l’utilisation de la commande |\NoAutoSpacing| dans les
+signets \pkg{hyperref} a été corrigé en version 3.6b.
+
+La version 3.6a n’a plus recours à l’extension \pkg{keyval} pour gérer les
+options, les commandes internes du noyau LaTeX (\pkg{l3keys})
+|\DeclareKeys{}| et |\SetKeys{}| sont utilisées.\\
+L’espace fine ajoutée avant l’appel des notes de bas de pages est maintenant
+personnalisable (suggestion de Thomas Savary) ; le nom de la commande est
+|\FBfnmarkspace{}|, c’est une \emph{vraie} espace fine (demie espace-mot de la
+police courante) contrairement à la commande LaTeX |\,| alias |\thinspace|%
+\footnote{Elles sont définies pour fonctionner aussi en mode mathématique.}
+précédemment utilisée qui chasse toujours 1/6em. Les deux définitions
+coïncident pour les polices dont l’espace-mot vaut 1/3em, (cas le plus
+courant), l’écart est infime pour celles qui chassent moins : il est par
+exemple de $(1/6-1/8)12=0,5$pt en 12pt pour une police dont l’espace-mot
+chasse 1/4em. Il est toujours possible de revenir à l’ancien comportement en
+codant |\renewcommand\FBfnmarkspace{\,}|.
+
+\subsection{Changements entre les versions 3.5a et 3.4d}
\label{ssec:changes-3.5}
La version 3.5a propose une nouvelle option \fbo{ListItemsAsPar} qui permet
@@ -1671,116 +1690,6 @@ judicieux de renommer la commande de personnalisation |\frenchbsetup{}| en
De nouvelles possibilités de personnalisation de la commande |\part{}| ont été
introduites, voir page~\pageref{ssec:captions}.
-\subsection{Changements entre les versions 3.2h et 3.1m}
-\label{ssec:changes-3.2}
-
-La version 3.2g modifie le comportement par défaut de la commande |\frquote{}|
-sous LuaTeX qui est maintenant le même que sous XeTeX ou pdfTeX.
-Il suffit d’ajouter l’option \fbo{EveryLineGuill=open} pour retrouver le
-comportement des versions précédentes.
-
-Depuis la version 3.2f, \ext{babel-french} est compatible avec l’extension
-\ext{icomma} qui offre une solution alternative à la commande
-|\DecimalMathComma|.
-
-La construction des notes de bas de page a été revue pour les classes
-\cls{beamer}, \cls{memoir} et koma-script (\cls{scrartcl}, \cls{scrreprt}
-et \cls{scrbook}). Le rendu final est conservé mais les possibilités de
-personnalisation offertes par ces classes pour la présentation des notes de
-bas de page (changement de police, de couleur, etc.) sont désormais
-disponibles même lorsque l’option \fbo{FrenchFootnotes} est activée.
-
-Un vieux bug affectant le comportement de |\frquote{}| lorsque l’extension
-\ext{xspace} est chargée, a été corrigé.
-
-Les commandes |\NoAutoSpacing|, |\ttfamilyFB|, |\rmfamilyFB| et |\sffamilyFB|
-ont été complètement réécrites dans la version~3.2c afin de leur assurer un
-comportement identique quel que soit le moteur utilisé, pdfTeX, XeTeX ou
-LuaTeX.
-
-\textbf{{babel-french} v.3.2b et suivantes, mise en garde pour les
- utilisateurs de Lua(La)TeX :}
-\nopagebreak
-La version~3.2b est la première compatible avec la version~0.95 de LuaTeX
-incluse dans TeXLive~2016. Les changements intervenus dans la structure des
-nœuds de type \textit{glue} rendent cette nouvelle version de LuaTeX
-incompatible avec les précédentes. Le code lua contenu dans les versions 3.2b
-et suivantes de \file{frenchb.lua} ne fonctionne pas avec les versions de
-LuaTeX antérieures à 0.95, aussi à partir de la version~3.2b \ext{babel-french}
-revient aux caractères actifs pour la gestion de la ponctuation haute avec les
-moteurs LuaTeX antérieurs à 0.95 !
-La bonne solution consiste à installer rapidement TeXLive~2016 ou une autre
-distribution contenant LuaTeX~0.95.
-En revanche il n’y a aucun problème de compatibilité ascendante avec les
-moteurs XeTeX et pdfTeX.
-
-\subsection{Changements entre les versions 3.1m et 3.0c}
-\label{ssec:changes-3.1}
-
-{\sloppy
- Ajout de la commande |\frquote{}| et de sa variante |\frquote*{}|
- recommandées pour saisir les citations, notamment les citations imbriquées
- ou celles s’étendant sur plusieurs paragraphes, voir p.~\pageref{frquote}
- et les nouvelles options \fbo{EveryParGuill}, \fbo{EveryLineGuill} et
- \fbo{InnerGuillSingle}.
-\par}
-
-Nouvelle option \fbo{SmallCapsFigTabCaptions}, voir p.~\pageref{scfigtab}.
-
-\subsection{Changements entre les versions 3.0c et 2.6h}
-\label{ssec:changes-3.0}
-
-Plusieurs modifications de fond ont motivé le passage à la version~3.0.
-
-\begin{itemize}
-
-\item \ext{babel-french} ne fonctionne désormais qu’avec la version~3.9
- de Babel ce qui donne accès à une syntaxe plus agréable pour modifier les
- \textit{captions}, voir p.~\pageref{captionsfrench}.
- Le séparateur utilisé dans les légendes de figures et de tableaux est
- choisi de manière globale pour toutes les langues, voir
- p.~\pageref{captionseparator}.
-
-\item La gestion des options par \fbsetup{} a été complètement remaniée ; deux
- nouvelles options ont été ajoutées.
-
-\item La variante « canadien » du français fonctionne désormais comme un vrai
- \textit{dialect} au sens de Babel ; parallèlement le français ne devrait
- plus être désigné que sous le nom \opt{french}, à la fois en option de
- |\usepackage[...]{babel}|%
- \footnote{Le mieux est encore de mettre toutes les déclarations de langues
- en option de \cs{documentclass}.}
- et en argument de |\selectlanguage{}| et consorts.
- Les variantes \opt{frenchb} et \opt{francais} sont encore tolérées mais
- sans aucune garantie de pérennité.
-
-\item \ext{babel-french} ne charge plus le fichier \file{frenchb.cfg} ; la
- personnalisation passe par l’utilisation exclusive de \fbsetup{}.
-
-\item Les étiquettes des listes \env{description} sont positionnées comme
- celles des listes \env{itemize} et \env{enumerate} avec un retrait
- paramétrable |\listindentFB| par rapport à la marge gauche.
-
-\item Enfin et c’est probablement le plus important, le recours aux
- caractères actifs est supprimé pour la gestion de la ponctuation haute
- lorsqu’un format basé sur LuaTeX%
- \footnote{C’est déjà le cas pour XeTeX depuis la version~2.5 de
- \ext{babel-french}.}
- est utilisé (LuaLaTeX par exemple).
- Le mécanisme des caractères actifs est remplacé par un appel aux
- \textit{callbacks} |pre_linebreak_filter| et |hpack_filter|%
- \footnote{Depuis la version 3.1g c’est le\textit{callbacks} \texttt{kerning}
- qui est mis en œuvre à la place.}.
-
- La base du code |lua| se trouve dans l’exposé de Paul Isambert
- à la journée GUT’2010. Un grand merci à Paul pour cette source d’inspiration
- et pour ses suggestions lors de la relecture finale de \file{frenchb.lua}.
-
-\end{itemize}
-
-À partir de la version 3.0c, \ext{babel-french} laisse le contrôle total des
-listes à la classe \cls{beamer} (option \fbo{StandardLists} automatiquement
-activée) ; nouvelle option \fbo{INGuillSpace} (voir p.~\pageref{INGuillspace}).
\subsection{Comment recompiler un document écrit pour
{babel-french}~2.x ?}
diff --git a/macros/latex/contrib/babel-contrib/french/frenchb.dtx b/macros/latex/contrib/babel-contrib/french/frenchb.dtx
index 71171ba2bf..b52e5c67e7 100644
--- a/macros/latex/contrib/babel-contrib/french/frenchb.dtx
+++ b/macros/latex/contrib/babel-contrib/french/frenchb.dtx
@@ -27,11 +27,11 @@ to be used with the Babel system.
-------------------------------------------------------------
It may be distributed and/or modified under the
-conditions of the LaTeX Project Public License, either version 1.3
+conditions of the LaTeX Project Public License, either version 1.3c
of this license or (at your option) any later version.
The latest version of this license is in
http://www.latex-project.org/lppl.txt
-and version 1.3 or later is part of all distributions of LaTeX
+and version 1.3c or later is part of all distributions of LaTeX
version 2003/12/01 or later.
This work has the LPPL maintenance status "maintained".
@@ -75,7 +75,7 @@ Please report errors to: <daniel (dot) flipo (at) free (dot) fr>
%<frenchb>\ProvidesLanguage{frenchb}
%<lua>--[[
%<lua> File `frenchb.lua’ generated from frenchb.dtx
- [2024-02-29 v3.5s French support from the babel system]
+ [2024-07-25 v3.6c French support from the babel system]
%<lua> Copyright © 2014-2024 Daniel Flipo
%<lua> <daniel (dot) flipo (at) free (dot) fr>
%<lua> License LPPL: see french.ldf.
@@ -101,17 +101,24 @@ Please report errors to: <daniel (dot) flipo (at) free (dot) fr>
\usepackage[dvipsnames]{xcolor}
\usepackage[no-math]{fontspec}
\usepackage{realscripts}
-\setmainfont{Vera.ttf}[
- ItalicFont = VeraIt.ttf,
- BoldFont = VeraBd.ttf,
- BoldItalicFont = VeraBI.ttf,
- Scale = 0.92
- ]
-\setmonofont{VeraMono.ttf}[
- ItalicFont = VeraMoIt.ttf,
- BoldFont = VeraMoBd.ttf,
- BoldItalicFont = VeraMoBI.ttf,
- Scale = MatchLowercase,
+\usepackage{setspace}
+\setstretch{1.15}
+\setmainfont{SourceSansPro}[
+ Scale = 1.13 ,
+ Extension = .otf ,
+ UprightFont = *-Regular ,
+ ItalicFont = *-RegularIt ,
+ BoldFont = *-Bold ,
+ BoldItalicFont = *-BoldIt ]
+\setmonofont{iosevka}[%
+ Scale = MatchLowercase ,
+ FakeStretch = 1.05 ,
+ Extension = .ttf,
+ UprightFont = *-medium,
+ BoldFont = *-bold,
+ ItalicFont = *-italic,
+ BoldItalicFont = *-bolditalic,
+% RawFeatures = -dlig;-clig % ligature >= (l.1314)
]
%
\def\PrintMacroName#1{%
@@ -149,8 +156,8 @@ Please report errors to: <daniel (dot) flipo (at) free (dot) fr>
\clearpage
\section{Change History}%
\GlossaryPrologue{}%
- Changes are listed in reverse order (latest first) and limited to
- \frenchb{}~v3.
+ Changes listed in reverse order (latest first) and not older
+ than~v3.3 (2018).
\PrintChanges
}
\begin{document}
@@ -298,8 +305,8 @@ Please report errors to: <daniel (dot) flipo (at) free (dot) fr>
% the quotation either an opening French guillemet («), or
% a closing one (») or nothing depending on option
% \fbo{EveryParGuill=open} or \fbo{=close} or \fbo{=none},
-% see p.~\pageref{everyparguill}.
-% Command |\NoEveryParQuote| is provided to locally suppress
+% see p.~\pageref{everyparguill}.\\
+% The command |\NoEveryParQuote| is provided to locally suppress
% unwanted guillemets (typically when lists are embedded in
% |\frquote{}|), it is meant to be used inside an environment
% or a group.
@@ -355,7 +362,7 @@ Please report errors to: <daniel (dot) flipo (at) free (dot) fr>
% Usage: |Albert~\bsc{Camus}|.
%
% \item Commands |\primo|, |\secundo|, |\tertio| and |\quarto|
-% print 1\up{o}, 2\up{o}, 3\up{o}, 4\up{o}.
+% print 1\up{o}, 2\up{o}, 3\up{o}, 4\up{o}.\linebreak
% |\FrenchEnumerate{6}| prints 6\up{o}.
% \item Abbreviations for ``Numéro(s)’’ and ``numéro(s)’’
% (N\up{o} N\up{os} n\up{o} and n\up{os}~) are obtained
@@ -403,7 +410,7 @@ Please report errors to: <daniel (dot) flipo (at) free (dot) fr>
% Customisation of \frenchb{} relies on command \fbsetup{}
% (formerly called |\frenchbsetup{}|, the latter name will be kept
% for ever to ensure backwards compatibility), options are entered
-% using the \file{keyval} syntax.
+% using the \file{l3keys} syntax.
% The command \fbsetup{} is to appear in the preamble only
% (after loading \babel).
%
@@ -418,7 +425,7 @@ Please report errors to: <daniel (dot) flipo (at) free (dot) fr>
%
% \fbsetup{ShowOptions} prints all available options to
% the \file{.log} file, it is just meant as a remainder of the
-% list of offered options. As usual with \file{keyval} syntax,
+% list of offered options. As usual with \file{l3keys} syntax,
% boolean options (as \fbo{ShowOptions}) can be entered as
% \fbo{ShowOptions=true} or just \fbo{ShowOptions}, the
% \fbo{=true} part can be omitted.
@@ -453,9 +460,10 @@ Please report errors to: <daniel (dot) flipo (at) free (dot) fr>
% first paragraph of sections. When French is the main language,
% this option applies to all languages.
%
-% \item [PartNameFull=false (true)]; when true, \frenchb{} numbers
-% the title of |\part{}| commands as ``Première partie’’,
-% ``Deuxième partie’’ and so on. With some classes which
+% \item [PartNameFull=false (true)]; when true (the default),
+% \frenchb{} numbers the title of |\part{}| commands as
+% ``Première partie’’, ``Deuxième partie’’ and so on.
+% With some classes which
% change the |\part{}| command (AMS classes do so), you could
% get ``Première partie~1’’, ``Deuxième partie~2’’ in the toc;
% when this occurs, this option should be set to
@@ -506,9 +514,9 @@ Please report errors to: <daniel (dot) flipo (at) free (dot) fr>
% you had to set \fbo{ReduceListSpacing=false} to revert to the
% class settings which actually reduce list’s spacings even more
% than \frenchb! \fbo{StandardListSpacing=true} replaces
-% \fbo{ReduceListSpacing=false}.}; \frenchb{} customises
+% \fbo{ReduceListSpacing=false}.}; \frenchb{} usually customises
% the vertical spaces in the \env{list} environment, this affects
-% all lists, including \env{itemize} \env{enumerate},
+% all lists, including \env{itemize}, \env{enumerate},
% \env{description}, but also \env{abstract}, \env{quote},
% \env{quotation}, \env{verse}, etc. which are based on \env{list}.
% Setting this option to \fbo{true} reverts to the standard
@@ -552,12 +560,14 @@ Please report errors to: <daniel (dot) flipo (at) free (dot) fr>
% \cs{ding\{43\}} (\cs{textemdash}*)]\hfill
%
% \item [StandardLists=true (false*)] forbids \frenchb{} to
-% customise any kind of list. Try the option \fbo{StandardLists}
-% in case of conflicts with classes or packages that customise
+% customise any kind of list. The option \fbo{StandardLists=true}
+% should be used in case of conflicts with classes or packages that
+% customise
% lists too. This option is just a shorthand setting all four
% options \fbo{StandardListSpacing=true},
-% \fbo{StandardItemizeEnv=true}, \fbo{StandardEnumerateEnv=true}
-% and \fbo{StandardItemLabels=true}.
+% \fbo{StandardItemizeEnv=true},\linebreak
+% \fbo{StandardEnumerateEnv=true} and
+% \fbo{StandardItemLabels=true}.
%
% \item [ListOldLayout=true (false)]; starting with version~2.6a,
% the layout of lists has changed regarding leftmargins’ sizes
@@ -576,9 +586,11 @@ Please report errors to: <daniel (dot) flipo (at) free (dot) fr>
% instance).
%
% \item [AutoSpaceFootnotes=false (true*)]; by default \frenchb{}
-% adds a thin space in the running text before the number or
-% symbol calling the footnote. Making this option \fbo{false}
-% reverts to the standard setting (no space added).
+% adds a (customisable) thin space in the running text before the
+% number or symbol calling the footnote. Making this option
+% \fbo{false} reverts to the standard setting (no space added).
+% The default definition of this thin space is:\\
+% |\newcommand*{\FBfnmarkspace}{\kern .5\fontdimen2\font}|
%
% \item [AutoSpacePunctuation=false (true)]; in French, the user
% \hlabel{autospacepunctuation}
@@ -677,7 +689,7 @@ Please report errors to: <daniel (dot) flipo (at) free (dot) fr>
% always surrounded by « and », the next option is ineffective.
%
% \item [InnerGuillSingle=true (false)];
-% if \fbo{InnerGuillSingle=false} (default), inner quotations
+% if \fbo{InnerGuillSingle=false} (the default), inner quotations
% entered with |\frquote{}| start with~\texttt{``} and end
% with~\texttt{’’}.
% If \fbo{InnerGuillSingle=true}, \texttt{\guilsinglleft} and
@@ -693,7 +705,7 @@ Please report errors to: <daniel (dot) flipo (at) free (dot) fr>
% |\npthousandsep| is defined as a non-breaking space (|~|)%
% \footnote{Actually without stretch nor shrink.} in French;
% when set to true, this option redefines |\npthousandsep|
-% as a thin space (|\,|).
+% as a thin space (|\FBthinspace|).
%
% \item [SmallCapsFigTabCaptions=false (true*)]; when set to
% \fbo{false}, |\figurename| and |\tablename| will be printed in
@@ -702,8 +714,8 @@ Please report errors to: <daniel (dot) flipo (at) free (dot) fr>
% achieved by defining |\FBfigtabshape| as |\relax| before
% loading \frenchb{} (in a document class f.i.).
%
-% \item [CustomiseFigTabCaptions=false (true*)]; when \fbo{false}
-% the default separator (colon) is used instead of
+% \item [CustomiseFigTabCaptions=false (true*)]; when set to
+% \fbo{false} the default separator (colon) is used instead of
% |\CaptionSeparator|. Anyway, \frenchb{} tries hard to insert
% a proper space before it in French and warns if it fails to do
% so.
@@ -735,23 +747,23 @@ Please report errors to: <daniel (dot) flipo (at) free (dot) fr>
% in the order they appear in the \fbsetup{} command.
% Someone wishing that \frenchb{} leaves the layout of lists
% and footnotes untouched but caring for indentation of first
-% paragraph of sections should choose\\
-% \fbsetup{StandardLayout,IndentFirst} to get the expected
-% layout. The reverse order
-% \fbsetup{IndentFirst,StandardLayout} would lead to option
-% \fbo{IndentFirst} being overwritten by \fbo{StandardLayout}.
+% paragraph of sections should choose
+% \fbsetup{StandardLayout,IndentFirst}\par
+% The reverse order \fbsetup{IndentFirst,StandardLayout}
+% would lead to option \fbo{IndentFirst} being overwritten by
+% \fbo{StandardLayout}.
%
% \subsubsection{Caption names}
% \label{sssec-captions-name}
%
-% All caption names can easily be customised in French using the
-% simplified syntax introduced by \babel~3.9, for instance
-% |\def\frenchproofname{Preuve}| or
+% {\sloppy All caption names can easily be customised in French
+% using the simplified syntax introduced by \babel~3.9,
+% for instance |\def\frenchproofname{Preuve}| or
% |\def\acadianproofname{Preuve}| for the \opt{acadian} dialect.
% The older syntax |\addto\captionsfrench{\def\proofname{Preuve}}|
% still works. Keep in mind that \emph{only} |french| can be used
% to redefine captions, even if \babel{}’s option was entered as
-% |frenchb| or |francais|.
+% |frenchb| or |francais|.\par}
%
% \subsubsection{Figure and table captions}
% \label{sssec-captions-fig}
@@ -839,6 +851,13 @@ Please report errors to: <daniel (dot) flipo (at) free (dot) fr>
% \subsection{Changes}
% \label{ssec-changes}
%
+% \subsubsection*{What’s new in version 3.6?}
+%
+% Version 3.6a no longer loads the \pkg{keyval} package, replaced by
+% core LaTeX commands (\pkg{l3keys}). The thin space added before
+% footnote’s calls is now customisable (suggested by Thomas Savary),
+% the command’s name is |\FBfnmarkspace|.
+%
% \subsubsection*{What’s new in version 3.5?}
%
% Version 3.5a offers a new option \fbo{ListItemsAsPar}. The default
@@ -864,7 +883,7 @@ Please report errors to: <daniel (dot) flipo (at) free (dot) fr>
% kerning was disabled for Type1 fonts since v3.1g (2015).
%
% Version 3.5j also fixes a long standing bug affecting koma-script,
-% \cls{memoir} et \cls{beamer} classes: redefintions of the caption
+% \cls{memoir} and \cls{beamer} classes: redefintions of the caption
% separator (commands |\captionformat|, |\captiondelim|, etc.) are
% now taken into account properly.
%
@@ -958,92 +977,6 @@ Please report errors to: <daniel (dot) flipo (at) free (dot) fr>
% three new commands |\frenchpartfirst|, |\frenchpartsecond| and
% |\frenchpartnameord|.
%
-% \subsubsection*{What’s new in version 3.2?}
-%
-% Version 3.2g changes the default behaviour of |\frquote{}|
-% with LuaTeX based engines, the output is now the same with
-% all engines; to recover the former behaviour, add option
-% \fbo{EveryLineGuill=open}.
-%
-% The handling of footnotes has been redesigned for the
-% \cls{beamer}, \cls{memoir} and koma-script classes.
-% The layout of footnotes ``à la française’’ should be unchanged
-% but footnotes’ customisations offered by these classes
-% (i.e.\ font or color changes) are now available even when option
-% \fbo{FrenchFootnotes} is \fbo{true}.
-%
-% A long standing bug regarding the \pkg{xspace} package has been
-% fixed: |\xspace| has been moved up from the internal command
-% |\FB@fg| to |\fg|; |\frquote{}| now works properly when the
-% \pkg{xspace} package is loaded.
-%
-% Version 3.2b is the first one designed to work with LuaTeX
-% v.~0.95 as included in TeXLive 2016 (LuaTeX’s new glue node
-% structure is not compatible with previous versions).
-%
-% \textbf{Warning to Lua(La)TeX users:} starting with version~3.2b
-% the lua code included in \file{frenchb.lua} will \emph{not work}
-% on older installations (TL2015 f.i.), so \frenchb{} reverts to
-% active characters while handling high punctuation with LuaTeX
-% engines older than 0.95!
-% The best way to go is to upgrade to TL2016 or equivalent asap.
-% Xe(La)TeX and pdf(La)TeX users can safely use \frenchb{} v.~3.2b
-% and later on older installations too.
-%
-% The internals of commands |\NoAutoSpacing|, |\ttfamilyFB|,
-% |\rmfamilyFB| and |\sffamilyFB| have been completely redesigned
-% in version~3.2c, they behave now consistently with all engines.
-%
-% \subsubsection*{What’s new in version 3.1?}
-%
-% New command |\frquote{}| meant to enter French quotations,
-% especially long ones (spreading over several paragraphs) and/or
-% embedded ones. see p.~\pageref{frquote} for details.
-%
-% \subsubsection*{What’s new in version 3.0?}
-%
-% Many deep changes lead me to step \frenchb’s version number
-% to~3.0a:
-% \begin{itemize}
-% \item \babel{}~3.9 is required now to process
-% \file{frenchb.ldf}, this change allows for cleaner definitions
-% of dates and captions for the Unicode engines LuaTeX and
-% XeTeX and also provides a simpler syntax for end-users, see
-% section~\ref{sssec-captions-name}
-% p.\pageref{sssec-captions-name}.
-% \item \fbsetup{} options management has been completely
-% reworked; two new options added.
-% \item Canadian French didn’t work as a normal \babel’s dialect,
-% it should now; btw. the French language should now be loaded
-% as \opt{french}, \emph{not as} \opt{frenchb} or
-% \opt{francais} and preferably as a \emph{global} option of
-% |\documentclass|. Some tolerance still exists in v3.0, but
-% do not rely on it.
-% \item \frenchb{} no longer loads \file{frenchb.cfg}:
-% customisation should definitely be done using \fbsetup{}
-% options.
-% \item Description lists labels are now indented; try setting
-% |\descindentFB=0pt| (or |\listindentFB=0pt| for all lists)
-% in the preamble if you don’t like it.
-% \item The last but not least change affects the (recent)
-% LuaTeX-based engines, (this means version 0.76 as included in
-% TL2013 and up): active characters are no longer used in French
-% for `high punctuation’%
-% \footnote{The current \frenchb{} version requires LuaTeX
-% v.~1.0.4 as included in TL2017, see above.}.
-% Functionalities and user interface are unchanged.
-%
-% Many thanks to Paul Isambert who provided the basis for the
-% lua code (see his presentation at GUT’2010) and kindly
-% reviewed my first drafts suggesting significant improvements.
-%
-% \end{itemize}
-%
-% Starting with version~3.0c, \frenchb{} no longer customises
-% lists with the \cls{beamer} class and offers a new option
-% (\fbo{INGuillSpace}) to follow French `Imprimerie Nationale’
-% recommendations regarding quotes’ spacing.
-%
% \StopEventually{}
%
% \changes{v2.6c}{2013/05/20}{Dummy file frenchb.cfg is no longer
@@ -1217,7 +1150,7 @@ Please report errors to: <daniel (dot) flipo (at) free (dot) fr>
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\ifFBunicode}
+%\begin{macro}{\ifFBunicode}
% \begin{macro}{\ifFBLuaTeX}
% \begin{macro}{\ifFBXeTeX}
% French hyphenation patterns are now coded in Unicode, see file
@@ -1460,8 +1393,8 @@ Please report errors to: <daniel (dot) flipo (at) free (dot) fr>
%
% \begin{macro}{\FBsetspaces}
% This command makes it easy to fine tune |\FBguillspace|,
-% |\FBcolonspace| and |\FBthinspace| in French (defaut) or
-% independently in a French dialect using the optional argument.
+% |\FBcolonspace| and\linebreak |\FBthinspace| in French (defaut)
+% or independently in a French dialect using the optional argument.
% They are meant for LaTeX2e \emph{only} and can only be used
% in the preamble.
% Four mandatory arguments are expected besides the optional one:
@@ -1469,8 +1402,8 @@ Please report errors to: <daniel (dot) flipo (at) free (dot) fr>
% "thin", the last four are decimal numbers specifying
% \textit{width}, \textit{stretch} and \textit{shrink} relative to
% \textit{fontdimens}.\hlabel{FBsetspaces}
-% For instance |\FBsetspaces[acadian]{colon}{0.5}{0}{0}| defines
-% |\acadianFBcolonspace| as a thinspace which will be used for
+% For \kern0pt instance |\FBsetspaces[acadian]{colon}{0.5}{0}{0}|
+% defines |\acadianFBcolonspace| as a thinspace which will be used for
% the Acadian dialect only. When used without optional argument or
% with argument `french’, the same command would tune the basic
% |\FBcolonspace| command.
@@ -1687,13 +1620,16 @@ Please report errors to: <daniel (dot) flipo (at) free (dot) fr>
with this version of LuaTeX!}
\fi
% \end{macrocode}
-% The next command will be used in the first call of |\extrasfrench|
-% to convert |\FBcolonspace|, |\FBthinspace| and |\FBguillspace|
-% into a table usable by LuaTeX. This way, any customisation done
-% in the preamble (by \fbsetup{}, redefinitions or |\FBsetspaces|
-% commands) are taken into account. Values not explicitly set for
-% Acadian by |\FBsetspaces[|\textit{acadian}|]| commands are copied
-% from the French ones.
+%
+% {\sloppy The next command will be used in the first call of
+% |\extrasfrench| to convert |\FBcolonspace|, |\FBthinspace| and
+% |\FBguillspace| into a table usable by LuaTeX.
+% This way, any customisation done in the preamble (by \fbsetup{},
+% redefinitions or |\FBsetspaces| commands) are taken into account.
+% Values not explicitly set for Acadian by
+% |\FBsetspaces[|\textit{acadian}|]| commands are copied from the
+% French ones.\par}
+
% In case parsing by the Lua function |FBget_glue| (defined in file
% \file{frenchb.lua}) fails due to unexpected syntax in |\FB...space|
% the table remains unchanged and a warning is issued.
@@ -2744,13 +2680,13 @@ return french_punctuation
% tex4ht, pointed out by MPG.}
%
% {\sloppypar |\autospace@beforeFDP| and |\noautospace@beforeFDP| are
-% internal commands. |\autospace@beforeFDP| defines |\FDP@thinspace|
-% and |\FDP@colonspace| as non-breaking spaces and sets LuaTeX
-% attribute |\FB@addDPspace| to 1 (true), while
-% |\noautospace@beforeFDP| lets these spaces empty and sets flag
+% internal commands. |\autospace@beforeFDP| defines commands
+% |\FDP@thinspace| and |\FDP@colonspace| as non-breaking spaces and
+% sets LuaTeX attribute |\FB@addDPspace| to 1 (true), while
+% |\noautospace@beforeFDP| makes them no-op and sets flag
% |\FB@addDPspace| to 0 (false). User commands |\AutoSpaceBeforeFDP|
% and |\NoAutoSpaceBeforeFDP| do the same and take care of the flag
-% |\ifFBAutoSpacePunctuation| in \LaTeX{}.\par}
+% |\ifFBAutoSpacePunctuation| in LaTeX{}.\par}
%
% Set the default now for Plain (done later for LaTeX).
% \begin{macrocode}
@@ -2838,16 +2774,22 @@ return french_punctuation
% active punctuation characters (if any).
% It is engine independent (works for TeX, LuaTeX and
% XeTeX based engines) and is meant to be used inside a group.
+% The faked definition of |\texorpdfstring| will be overwritten
+% by \file{hyperref.sty}.
%
% \changes{v3.2b}{2016/04/18}{\cs{NoAutoSpacing} made robust.}
%
% \changes{v3.2c}{2016/05/14}{New definition based on
% \cs{FB@spacing@off} common to all engines.}
%
+% \changes{v3.6b}{2024/06/26}{\cs{NoAutoSpacing} must be inhibited
+% in bookmarks.}
+%
% \begin{macrocode}
+\providecommand\texorpdfstring[2]{#1}
\DeclareRobustCommand*{\NoAutoSpacing}{%
- \FB@spacing@off
- \ifFB@active@punct\shorthandoff{;:!?}\fi
+ \texorpdfstring{\FB@spacing@off
+ \ifFB@active@punct\shorthandoff{;:!?}\fi}{}%
}
% \end{macrocode}
% \end{macro}
@@ -2919,7 +2861,6 @@ return french_punctuation
%
% |\FB@og| and |\FB@fg| are now designed to work in bookmarks.
% \begin{macrocode}
-\providecommand\texorpdfstring[2]{#1}
\newcommand*{\FB@og}{\texorpdfstring{\@FB@og}{\guillemotleft\space}}
\newcommand*{\FB@fg}{\texorpdfstring{\@FB@fg}{\space\guillemotright}}
% \end{macrocode}
@@ -3600,64 +3541,41 @@ return french_punctuation
\providecommand*{\textbackslash}{{\char"005C}}
\providecommand*{\textasciicircum}{{\char"005E}}
\providecommand*{\textasciitilde}{{\char"007E}}
- \newcommand*{\FB@degre}{°}
+ \DeclareRobustCommand*{\degre}{°}
\else
- \ifLaTeXe
- \newcommand*{\FB@degre}{\r{}}
- \fi
+ \DeclareRobustCommand*{\degre}{\textdegree}
\fi
\DeclareRobustCommand*{\boi}{\textbackslash}
\DeclareRobustCommand*{\circonflexe}{\textasciicircum}
\DeclareRobustCommand*{\tild}{\textasciitilde}
-\DeclareRobustCommand*{\degre}{%
- \texorpdfstring{\FB@degre}{\textdegree}}
\newcommand*{\at}{@}
% \end{macrocode}
%
% \begin{macro}{\degres}
% We now define a macro |\degres| for typesetting the abbreviation
-% for `degrees’ (as in `degrees Celsius’). As the bounding box of
-% the character `degree’ has \emph{very} different widths in CM/EC
-% and PostScript fonts, we fix the width of the bounding box of
-% |\degres| to 0.3\,em, this lets the symbol `degree’ stick to the
-% preceding (e.g., |45\degres|) or following character
-% (e.g., |20~\degres C|). |\degres| works in math-mode (angles).
+% for `degrees’ (as in `°C’ or `°K’) in text fonts which also works
+% in math mode for angles.
%
% \changes{v2.6e}{2013/07/06}{Refrain from redefining \cs{textdegree}
% from latin1.def, applemac.def, etc. as \cs{degres} because it
% loops in hyperref’s bookmarks. Pointed out by Eddy Flas on fctt.}
%
-% If \TeX{} Companion fonts are available (\file{textcomp.sty}),
-% we pick up |\textdegree| from them instead of emulating `degrees’
-% from the |\r{}| accent. Otherwise we advise the user (once only)
-% to use TS1-encoding.
-%
% \changes{v2.1c}{2008/04/29}{Provide a temporary definition (hyperref
% safe) of \cs{degres} in case it has to be expanded in the preamble
% (by beamer’s \cs{title} command for instance).}
%
+% \changes{v3.6a}{2024/05/20}{Simplify \cs{degres} definition for text
+% and math mode: \cs{textdegree} always defined (TS1) since 2019.}
+%
% \begin{macrocode}
\DeclareRobustCommand*{\degres}{\degre}
\ifLaTeXe
\AtBeginDocument{%
- \@ifpackageloaded{fontspec}{}{%
- \ifdefined\DeclareEncodingSubset
- \DeclareRobustCommand*{\degres}{%
+ \@ifpackageloaded{fontspec}{}%
+ {\DeclareRobustCommand*{\degres}{%
\texorpdfstring{\hbox{\UseTextSymbol{TS1}{\textdegree}}}%
{\textdegree}}%
- \else
- \def\Warning@degree@TSone{\FBWarning
- {Degrees would look better in TS1-encoding:%
- \MessageBreak add \protect
- \usepackage{textcomp} to the preamble.%
- \MessageBreak Degrees used}}
- \DeclareRobustCommand*{\degres}{%
- \texorpdfstring{\hbox to 0.3em{\hss\degre\hss}%
- \Warning@degree@TSone
- \global\let\Warning@degree@TSone\relax}%
- {\textdegree}}%
- \fi
- }%
+ }%
}
\fi
% \end{macrocode}
@@ -4056,9 +3974,10 @@ return french_punctuation
% ua-thesis.cls… change it).
% If they are identical, \frenchb{} just adds a hook called
% |\FBCaption@Separator| to |\@makecaption|; |\FBCaption@Separator|
-% defaults to `:~’ as in the standard |\@makecaption| and will be
-% changed to `~:~’ in French `AtBeginDocument’; it can be also set to
-% |\CaptionSeparator| (` -- ’) using \fbo{CustomiseFigTabCaptions}.
+% defaults to `:~’ as in the standard definition of |\@makecaption|
+% and will be changed to `~:~’ in French `AtBeginDocument’;
+% it can be also set to |\CaptionSeparator| (` -- ’) using
+% \fbo{CustomiseFigTabCaptions}.
%
% \changes{v2.6c}{2013/05/18}{Former \cs{CaptionSeparator}
% has been renamed as \cs{FBCaption@Separator};
@@ -4076,7 +3995,7 @@ return french_punctuation
% active).
% \begin{macrocode}
\bgroup
- \catcode`:=12 \catcode`>=12 \relax
+ \catcode`: =12 \catcode`> =12 \relax
\long\gdef\STD@makecaption#1#2{%
\vskip\abovecaptionskip
\sbox\@tempboxa{#1: #2}%
@@ -4256,7 +4175,7 @@ return french_punctuation
% with XeTeX and LuaTeX.
%
% \changes{v2.0}{2006/11/06}{Added special case for LY1 encoding,
-% see bug report from Bruno Voisin (2004/05/18).}
+% see bug report from Bruno Voisin (2004/05/18).}
%
% \changes{v2.5f}{2011/06/18}{Unicode fonts also provide a ready made
% character for \cs{textellipsis}, let’s just use it!
@@ -4345,7 +4264,7 @@ return french_punctuation
}
% \end{macrocode}
%
-% \subsection{Setup options: keyval stuff}
+% \subsection{Setup options: key/value stuff (l3keys)}
% \label{ssec-keyval}
%
% \changes{v2.0}{2006/11/06}{New command \cs{frenchbsetup} added
@@ -4355,125 +4274,38 @@ return french_punctuation
% reorganised, now \cs{babel@save} and\cs{babel@savevariable} are
% usable for French.}
%
-% All setup options are handled by command \fbsetup{} using the
-% keyval syntax. A list of flags is defined and set to a default
-% value which will possibly be changed `AtEndOfPackage’ if French is
-% the main language. After this, \fbsetup{} eventually modifies the
-% preset values of these flags.
+% \changes{v3.6a}{2024/05/16}{Internal `l3keys’ replaces package
+% `keyval’ for options’ management.}
+%
+% Check LaTeX2e version (support for \pkg{l3keys} required).
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}[2022-06-01]
+% \end{macrocode}
+% All setup options are handled by command \fbsetup{} based on
+% the \file{l3keys}’ |\SetKeys{}| command. A list of flags is
+% defined beforehand and set to default values which will possibly
+% be changed `AtEndOfPackage’ in case French is the main language.
+% After this, \fbsetup{} eventually modifies the preset values of
+% these flags.
%
-% {\sloppypar Option processing can occur either in \fbsetup{}, but
-% \emph{only for options explicitly set} by \fbsetup{}, or
+% {\sloppypar Some options processing occurs in \fbsetup{},
+% \emph{only for options explicitly set} by \fbsetup{}, the rest
% `AtBeginDocument’; any option affecting |\extrasfrench{}|
-% \emph{must} be processed by \fbsetup{}: when French is the main
-% language, |\extrasfrench{}| is executed by \babel{} when it
-% switches the main language and this occurs \emph{before} reading
+% \emph{must} be immediatelt processed by \fbsetup{}: when French is
+% the main language, |\extrasfrench{}| is executed by \babel{} when
+% it switches the main language and this occurs \emph{before} reading
% the stuff postponed by \frenchb{} `AtBeginDocument’. Reexecuting
-% |\extrasfrench{}| is an option which was used up to v2.6h, it has
-% been dropped in v3.0a because of its side-effects (f.i.\
-% |\babel@save| and |\babel@savevariable| did not work for
+% |\extrasfrench{}| is not an option because of its side-effects
+% (f.i.\ |\babel@save| and |\babel@savevariable| did not work for
% French).\par}
%
-% \begin{macro}{\frenchsetup}
-% Let’s now define this command which reads and sets the options
-% to be processed either immediately (i.e.\ just after setting the
-% key) or later (at |\begin{document}|) by |\FBprocess@options|.
-% \fbsetup{} can only be called in the preamble.
-%
-% \changes{v2.0c}{2007/06/25}{Option ThinSpaceInFrenchNumbers added.}
-%
-% \changes{v2.0d}{2007/07/15}{Options og and fg changed: limit
-% the definition to French so that quote characters can be used
-% in German.}
-%
-% \changes{v2.0e}{2007/10/05}{New option: StandardLists.}
-%
-% \changes{v2.0f}{2008/03/23}{Two typos corrected in
-% option StandardLists.}
-%
-% \changes{v2.0f}{2008/03/23}{StandardLayout option had no
-% effect on lists. Test moved to \cs{FBprocess@options}.}
-%
-% \changes{v2.0g}{2008/03/23}{Revert previous change to
-% StandardLayout. This option must set the three flags
-% \cs{FBReduceListSpacingfalse}, \cs{FBCompactItemizefalse},
-% and \cs{FBStandardItemLabeltrue} instead of
-% \cs{FBStandardListstrue}, so that later options can still
-% change their value before executing \cs{FBprocess@options}.
-% Same thing for option StandardLists.}
-%
-% \changes{v2.1a}{2008/03/24}{New option: FrenchSuperscripts
-% to define \cs{up} as \cs{fup} or as \cs{textsuperscript}.}
-%
-% \changes{v2.1a}{2008/03/30}{New option: LowercaseSuperscripts.}
-%
-% \changes{v2.2a}{2008/05/08}{The global layout of the document is
-% no longer changed when frenchb is not the last option of babel
-% (\cs{bbl@main@language}). Suggested by Ulrike Fischer.}
-%
-% \changes{v2.2a}{2008/05/08}{Default values of flags changed:
-% default now means `StandardLayout’, they will be changed to
-% `FrenchLayout’ AtEndOfPackage only if french is
-% \cs{bbl@main@language}.}
-%
-% \changes{v2.2a}{2008/05/08}{When frenchb is babel’s last option,
-% French becomes the document’s main language, so
-% GlobalLayoutFrench applies.}
-%
-% \changes{v2.4a}{2009/11/23}{New option SuppressWarning.}
-%
-% \changes{v2.6a}{2013/01/30}{New options ListOldLayout,
-% StandardItemizeEnv and StandardEnumerateEnv (CompactItemize is
-% deprecated).}
-%
-% \changes{v3.0a}{2014/02/28}{New options OldFigTabCaptions and
-% CustomiseFigTabCaptions.}
-%
-% \changes{v3.0c}{2014/04/18}{New option INGuillSpace.}
-%
-% \changes{v3.1a}{2014/05/20}{New options InnerGuillSingle,
-% EveryParGuill and EveryLineGuill to control \cs{frquote}.}
-%
-% \changes{v3.1b}{2014/09/15}{New option SmallCapsFigTabCaptions.}
-%
-% \changes{v3.1e}{2015/04/10}{Corrected typo: SmallCapsFigTabcaptions
-% instead of SmallCapsFigTabCaptions. Pointed out by Céline
-% Chevalier.}
-%
-% \changes{v3.1g}{2015/05/10}{PartNameFull now just sets the flag,
-% nothing to add to \cs{captionsfrench} when false.}
-%
-% \changes{v3.3a}{2017/04/30}{\cs{frenchbsetup} is now an alias for
-% \cs{frenchsetup}.}
-%
-% \changes{v3.3a}{2017/04/30}{Options INGuillSpace, ThinColonSpace no
-% longer delayed AtBeginDocument.}
-%
-% \changes{v3.5a}{2018/07/04}{New option ListItemsAsPar for displaying
-% lists’ items ``as paragraphs’’.}
-%
-% \changes{v3.5d}{2019/01/24}{ReduceListSpacing option depreciated: see
-% StandardListSpacing.}
-%
-% \begin{macrocode}
-\newcommand*{\frenchsetup}[1]{%
- \setkeys{FB}{#1}%
-}%
-\@onlypreamble\frenchsetup
-% \end{macrocode}
-% Keep the former name |\frenchbsetup| working for compatibility.
-% \begin{macrocode}
-\let\frenchbsetup\frenchsetup
-\@onlypreamble\frenchbsetup
-% \end{macrocode}
-%
-% We define a collection of conditionals with their defaults
-% (true or false).
+% We first define a collection of conditionals and set their
+% defaults (true or false).
%
% \begin{macrocode}
\newif\ifFBShowOptions
\newif\ifFBStandardLayout \FBStandardLayouttrue
\newif\ifFBGlobalLayoutFrench \FBGlobalLayoutFrenchtrue
-\newif\ifFBReduceListSpacing
\newif\ifFBStandardListSpacing \FBStandardListSpacingtrue
\newif\ifFBListOldLayout
\newif\ifFBListItemsAsPar
@@ -4498,25 +4330,6 @@ return french_punctuation
\newif\ifFBINGuillSpace
% \end{macrocode}
%
-% The defaults values of these flags have been choosen so that
-% \frenchb{} does not change anything regarding the global layout.
-% |\bbl@main@language|, set by the last option of \babel, controls
-% the global layout of the document. `AtEndOfPackage’ we check the
-% main language in |\bbl@main@language|; if it is French (or a
-% French dialect) the values of some flags have to be changed to
-% ensure a French looking layout for the whole document (even in
-% parts written in languages other than French); the end-user will
-% then be able to customise the values of all these flags with
-% \fbsetup{}.
-%
-% \changes{v2.5b}{2010/10/30}{Do not use the
-% test \cs{iflanguage}\{french\} to check whether French is the
-% main language or not, as it might be be erroneously positive
-% when English is the main language and no hyphenation patterns
-% are available for French.
-% In this case \cs{l@french} and \cs{l@english} are 0.
-% Pointed out by Günter Milde.}
-%
% \changes{v3.1g}{2015/05/10}{Bug fix for koma-scripts classes:
% a spurious dot was added by the \cs{partformat} command.}
%
@@ -4540,6 +4353,14 @@ return french_punctuation
\fi
% \end{macrocode}
%
+% \changes{v2.5b}{2010/10/30}{Do not use the
+% test \cs{iflanguage}\{french\} to check whether French is the
+% main language or not, as it might be be erroneously positive
+% when English is the main language and no hyphenation patterns
+% are available for French.
+% In this case \cs{l@french} and \cs{l@english} are 0.
+% Pointed out by Günter Milde.}
+%
% \changes{v3.0c}{2014/03/30}{No list customisation when beamer
% class is loaded.}
%
@@ -4553,6 +4374,13 @@ return french_punctuation
% options can no longer be toggled when French is not the main
% language.}
%
+% The defaults values of these flags are choosen so that
+% \frenchb{} does not change anything regarding the global layout.
+% Some of them must be toogled when French (or a French dialect) is
+% the main language. The latter (last option of \babel, stored in
+% |\bbl@main@language|) will be known `AtEndOfPackage’.
+% So we postpone the |\bbl@main@language| checking until then.
+%
% Our list customisation conflicts with the \cls{beamer} class and
% with the \pkg{beamerarticle} package. The patch provided in
% \pkg{beamerbasecompatibility} solves the conflict except in case
@@ -4600,206 +4428,308 @@ return french_punctuation
\FBAutoSpaceFootnotestrue
\FBCustomiseFigTabCaptionstrue
\fi
+}
% \end{macrocode}
-% \frenchb{} being an option of \babel, it cannot load a package
-% (\pkg{keyval}) while \file{french.ldf} is read, so we defer the
-% loading of \file{keyval} and the options setup at the end of
-% \babel’s loading.
-% \begin{macrocode}
- \RequirePackage{keyval}%
- \define@key{FB}{ShowOptions}[true]%
- {\csname FBShowOptions#1\endcsname}%
+%
+% \begin{macro}{\frenchsetup}
+% Let’s define the keys to be used in \fbsetup{}.
+% \begin{macrocode}
+\DeclareKeys[FBsetup]
+ {
+ ShowOptions.if = FBShowOptions ,
+ StandardLayout.default:n = {true} ,
+ StandardLayout.code = \FBStandardLayout@setup{#1} ,
+ GlobalLayoutFrench.default:n = {true} ,
+ GlobalLayoutFrench.code = \FBGlobalLayout@setup{#1} ,
+ StandardListSpacing.if = FBStandardListSpacing ,
+ ReduceListSpacing.ifnot = FBStandardListSpacing ,
+ ListOldLayout.default:n = {true} ,
+ ListOldLayout.code = \FBListOldLayout@setup{#1} ,
+ CompactItemize.default:n = {true} ,
+ CompactItemize.code = \FBCompactItemize@setup{#1} ,
+ StandardItemizeEnv.if = FBStandardItemizeEnv ,
+ StandardEnumerateEnv.if = FBStandardEnumerateEnv ,
+ StandardItemLabels.if = FBStandardItemLabels ,
+ ItemLabels.store = \FrenchLabelItem ,
+ ItemLabeli.store = \Frlabelitemi ,
+ ItemLabelii.store = \Frlabelitemii ,
+ ItemLabeliii.store = \Frlabelitemiii ,
+ ItemLabeliv.store = \Frlabelitemiv ,
+ StandardLists.default:n = {true} ,
+ StandardLists.code = \FBStandardLists@setup{#1} ,
+ ListItemsAsPar.if = FBListItemsAsPar ,
+ IndentFirst.if = FBIndentFirst ,
+ FrenchFootnotes.if = FBFrenchFootnotes ,
+ AutoSpaceFootnotes.if = FBAutoSpaceFootnotes ,
+ AutoSpacePunctuation.if = FBAutoSpacePunctuation ,
+ OriginalTypewriter.if = FBOriginalTypewriter ,
+ ThinColonSpace.default:n = {true} ,
+ ThinColonSpace.code = \FBThinColonSpace@setup{#1} ,
+ ThinSpaceInFrenchNumbers.if = FBThinSpaceInFrenchNumbers ,
+ FrenchSuperscripts.if = FBFrenchSuperscripts ,
+ LowercaseSuperscripts.if = FBLowercaseSuperscripts ,
+ PartNameFull.if = FBPartNameFull ,
+ CustomiseFigTabCaptions.if = FBCustomiseFigTabCaptions ,
+ OldFigTabCaptions.default:n = {true} ,
+ OldFigTabCaptions.code = \FBOldFigTabCaptions@setup{#1} ,
+ SmallCapsFigTabCaptions.default:n = {true} ,
+ SmallCapsFigTabCaptions.code = \FBSmallCapsFigTabCaptions@setup{#1} ,
+ SuppressWarning.default:n = {true} ,
+ SuppressWarning.code = \FBSuppressWarning@setup{#1} ,
+ INGuillSpace.default:n = {true} ,
+ INGuillSpace.code = \FBINGuillSpace@setup{#1} ,
+ InnerGuillSingle.if = FBInnerGuillSingle ,
+ EveryParGuill.default:n = {open} ,
+ EveryParGuill.code = \FBEveryParGuill@setup{#1} ,
+ EveryLineGuill.default:n = {open} ,
+ EveryLineGuill.code = \FBEveryLineGuill@setup{#1} ,
+ UnicodeNoBreakSpaces.default:n = {true} ,
+ UnicodeNoBreakSpaces.code = \FBUnicodeNoBreakSpaces@setup{#1} ,
+ og.code = \FBog@setup{#1} ,
+ fg.code = \FBfg@setup{#1} ,
+}
% \end{macrocode}
-% The next two keys can only be toggled when French is the main
-% language.
+%
+% Let’s now define this command which reads and sets the options
+% to be processed either immediately (i.e.\ just after setting the
+% key) or later (at |\begin{document}|) by |\FBprocess@options|.
+% \fbsetup{} can only be called in the preamble.
+%
+% \changes{v2.0c}{2007/06/25}{Option ThinSpaceInFrenchNumbers added.}
+%
+% \changes{v2.0d}{2007/07/15}{Options og and fg changed: limit
+% the definition to French so that quote characters can be used
+% in German.}
+%
+% \changes{v2.0e}{2007/10/05}{New option: StandardLists.}
+%
+% \changes{v2.0f}{2008/03/23}{Two typos corrected in
+% option StandardLists.}
+%
+% \changes{v2.0f}{2008/03/23}{StandardLayout option had no
+% effect on lists. Test moved to \cs{FBprocess@options}.}
+%
+% \changes{v2.0g}{2008/03/23}{Revert previous change to
+% StandardLayout. This option must set the three flags
+% \cs{FBReduceListSpacingfalse}, \cs{FBCompactItemizefalse},
+% and \cs{FBStandardItemLabeltrue} instead of
+% \cs{FBStandardListstrue}, so that later options can still
+% change their value before executing \cs{FBprocess@options}.
+% Same thing for option StandardLists.}
+%
+% \changes{v2.1a}{2008/03/24}{New option: FrenchSuperscripts
+% to define \cs{up} as \cs{fup} or as \cs{textsuperscript}.}
+%
+% \changes{v2.1a}{2008/03/30}{New option: LowercaseSuperscripts.}
+%
+% \changes{v2.2a}{2008/05/08}{The global layout of the document is
+% no longer changed when frenchb is not the last option of babel
+% (\cs{bbl@main@language}). Suggested by Ulrike Fischer.}
+%
+% \changes{v2.2a}{2008/05/08}{Default values of flags changed:
+% default now means `StandardLayout’, they will be changed to
+% `FrenchLayout’ AtEndOfPackage only if french is
+% \cs{bbl@main@language}.}
+%
+% \changes{v2.2a}{2008/05/08}{When frenchb is babel’s last option,
+% French becomes the document’s main language, so
+% GlobalLayoutFrench applies.}
+%
+% \changes{v2.4a}{2009/11/23}{New option SuppressWarning.}
+%
+% \changes{v2.6a}{2013/01/30}{New options ListOldLayout,
+% StandardItemizeEnv and StandardEnumerateEnv (CompactItemize is
+% deprecated).}
+%
+% \changes{v3.0a}{2014/02/28}{New options OldFigTabCaptions and
+% CustomiseFigTabCaptions.}
+%
+% \changes{v3.0c}{2014/04/18}{New option INGuillSpace.}
+%
+% \changes{v3.1a}{2014/05/20}{New options InnerGuillSingle,
+% EveryParGuill and EveryLineGuill to control \cs{frquote}.}
+%
+% \changes{v3.1b}{2014/09/15}{New option SmallCapsFigTabCaptions.}
+%
+% \changes{v3.1e}{2015/04/10}{Corrected typo: SmallCapsFigTabcaptions
+% instead of SmallCapsFigTabCaptions. Pointed out by Céline
+% Chevalier.}
+%
+% \changes{v3.1g}{2015/05/10}{PartNameFull now just sets the flag,
+% nothing to add to \cs{captionsfrench} when false.}
+%
+% \changes{v3.3a}{2017/04/30}{\cs{frenchbsetup} is now an alias for
+% \cs{frenchsetup}.}
+%
+% \changes{v3.3a}{2017/04/30}{Options INGuillSpace, ThinColonSpace no
+% longer delayed AtBeginDocument.}
+%
+% \changes{v3.5a}{2018/07/04}{New option ListItemsAsPar for displaying
+% lists’ items ``as paragraphs’’.}
+%
+% \changes{v3.5d}{2019/01/24}{ReduceListSpacing option depreciated: see
+% StandardListSpacing.}
+%
% \begin{macrocode}
- \define@key{FB}{StandardLayout}[true]%
- {\ifFB@mainlanguage@FR
- \csname FBStandardLayout#1\endcsname
- \else
- \PackageWarning{french.ldf}%
- {Option `StandardLayout' skipped:\MessageBreak
- French is *not* babel's last option.\MessageBreak
- Reported}%
- \fi
- \ifFBStandardLayout
- \FBStandardListSpacingtrue
- \FBStandardItemizeEnvtrue
- \FBStandardItemLabelstrue
- \FBStandardEnumerateEnvtrue
- \FBIndentFirstfalse
- \FBFrenchFootnotesfalse
- \FBAutoSpaceFootnotesfalse
- \else
- \FBStandardListSpacingfalse
- \FBStandardItemizeEnvfalse
- \FBStandardItemLabelsfalse
- \FBStandardEnumerateEnvfalse
- \FBIndentFirsttrue
- \FBFrenchFootnotestrue
- \FBAutoSpaceFootnotestrue
- \fi}%
- \define@key{FB}{GlobalLayoutFrench}[true]%
- {\ifFB@mainlanguage@FR
- \csname FBGlobalLayoutFrench#1\endcsname
- \else
- \PackageWarning{french.ldf}%
- {Option `GlobalLayoutFrench' skipped:\MessageBreak
- French is *not* babel's last option.\MessageBreak
- Reported}%
- \fi}%
+\newcommand*{\frenchsetup}[1]{%
+ \SetKeys[FBsetup]{#1}%
+}%
+\@onlypreamble\frenchsetup
% \end{macrocode}
-% If this key is set to \fbo{true} when French is the main language,
-% nothing to do: all flags keep their default value.
-% If this key is set to \fbo{false}, nothing to do either:
-% |\babel@save| will do the job at every language’s switch.
-% \begin{macrocode}
- \define@key{FB}{ReduceListSpacing}[true]%
- {\csname FBReduceListSpacing#1\endcsname
- \ifFBReduceListSpacing \FBStandardListSpacingfalse
- \else \FBStandardListSpacingtrue\fi
- }%
- \define@key{FB}{StandardListSpacing}[true]%
- {\csname FBStandardListSpacing#1\endcsname}%
- \define@key{FB}{ListOldLayout}[true]%
- {\csname FBListOldLayout#1\endcsname
- \ifFBListOldLayout
- \FBStandardEnumerateEnvtrue
- \renewcommand*{\FrenchLabelItem}{\textendash}%
- \fi}%
- \define@key{FB}{CompactItemize}[true]%
- {\csname FBCompactItemize#1\endcsname
- \ifFBCompactItemize
- \FBStandardItemizeEnvfalse
- \FBStandardEnumerateEnvfalse
- \else
- \FBStandardItemizeEnvtrue
- \FBStandardEnumerateEnvtrue
- \fi}%
- \define@key{FB}{StandardItemizeEnv}[true]%
- {\csname FBStandardItemizeEnv#1\endcsname}%
- \define@key{FB}{StandardEnumerateEnv}[true]%
- {\csname FBStandardEnumerateEnv#1\endcsname}%
- \define@key{FB}{StandardItemLabels}[true]%
- {\csname FBStandardItemLabels#1\endcsname}%
- \define@key{FB}{ItemLabels}%
- {\renewcommand*{\FrenchLabelItem}{#1}}%
- \define@key{FB}{ItemLabeli}%
- {\renewcommand*{\Frlabelitemi}{#1}}%
- \define@key{FB}{ItemLabelii}%
- {\renewcommand*{\Frlabelitemii}{#1}}%
- \define@key{FB}{ItemLabeliii}%
- {\renewcommand*{\Frlabelitemiii}{#1}}%
- \define@key{FB}{ItemLabeliv}%
- {\renewcommand*{\Frlabelitemiv}{#1}}%
- \define@key{FB}{StandardLists}[true]%
- {\csname FBStandardLists#1\endcsname
- \ifFBStandardLists
- \FBStandardListSpacingtrue
- \FBStandardItemizeEnvtrue
- \FBStandardEnumerateEnvtrue
- \FBStandardItemLabelstrue
- \else
- \FBStandardListSpacingfalse
- \FBStandardItemizeEnvfalse
- \FBStandardEnumerateEnvfalse
- \FBStandardItemLabelsfalse
- \fi}%
- \define@key{FB}{ListItemsAsPar}[true]%
- {\csname FBListItemsAsPar#1\endcsname}
- \define@key{FB}{IndentFirst}[true]%
- {\csname FBIndentFirst#1\endcsname}%
- \define@key{FB}{FrenchFootnotes}[true]%
- {\csname FBFrenchFootnotes#1\endcsname}%
- \define@key{FB}{AutoSpaceFootnotes}[true]%
- {\csname FBAutoSpaceFootnotes#1\endcsname}%
- \define@key{FB}{AutoSpacePunctuation}[true]%
- {\csname FBAutoSpacePunctuation#1\endcsname}%
- \define@key{FB}{OriginalTypewriter}[true]%
- {\csname FBOriginalTypewriter#1\endcsname}%
- \define@key{FB}{ThinColonSpace}[true]%
- {\csname FBThinColonSpace#1\endcsname
- \ifFBThinColonSpace
- \renewcommand*{\FBcolonspace}{\FBthinspace}%
- \fi}%
- \define@key{FB}{ThinSpaceInFrenchNumbers}[true]%
- {\csname FBThinSpaceInFrenchNumbers#1\endcsname}%
- \define@key{FB}{FrenchSuperscripts}[true]%
- {\csname FBFrenchSuperscripts#1\endcsname}
- \define@key{FB}{LowercaseSuperscripts}[true]%
- {\csname FBLowercaseSuperscripts#1\endcsname}
- \define@key{FB}{PartNameFull}[true]%
- {\csname FBPartNameFull#1\endcsname}%
- \define@key{FB}{CustomiseFigTabCaptions}[true]%
- {\csname FBCustomiseFigTabCaptions#1\endcsname}%
- \define@key{FB}{OldFigTabCaptions}[true]%
- {\csname FBOldFigTabCaptions#1\endcsname
- \ifFBOldFigTabCaptions
- \def\FB@capsep@fix{\babel@save\FBCaption@Separator
- \def\FBCaption@Separator{\CaptionSeparator}}%
- \addto\extrasfrench{\FB@capsep@fix}%
- \ifdefined\extrasacadian
- \addto\extrasacadian{\FB@capsep@fix}%
- \fi
- \fi}%
- \define@key{FB}{SmallCapsFigTabCaptions}[true]%
- {\csname FBSmallCapsFigTabCaptions#1\endcsname
- \ifFBSmallCapsFigTabCaptions
- \else \let\FBfigtabshape\relax \fi}%
- \define@key{FB}{SuppressWarning}[true]%
- {\csname FBSuppressWarning#1\endcsname
- \ifFBSuppressWarning
- \renewcommand{\FBWarning}[1]{}%
- \fi}%
+% Keep the former name |\frenchbsetup| working for compatibility.
+% \begin{macrocode}
+\let\frenchbsetup\frenchsetup
+\@onlypreamble\frenchbsetup
% \end{macrocode}
-% Here are the options controlling French guillemets spacing
-% and the output of |\frquote{}|.
%
-% \changes{v3.2g}{2017/01/30}{Warn when wrong values are provided to
-% options EveryParGuill or EveryLineGuill.}
+% \changes{v3.6c}{2024/07/25}{Removed spurious @ in
+% \cs{FBCompactItemize@setup} and \cs{FBListOldLayout@setup}
+% commands’ names.}
%
+% The following commands, defined with property |.code| in
+% |DeclareKeys{}|, execute some post-treatment required to
+% immediately take the flags value into account.
% \begin{macrocode}
- \define@key{FB}{INGuillSpace}[true]%
- {\csname FBINGuillSpace#1\endcsname
- \ifFBINGuillSpace
- \renewcommand*{\FBguillspace}{\space}%
- \fi}%
- \define@key{FB}{InnerGuillSingle}[true]%
- {\csname FBInnerGuillSingle#1\endcsname}%
- \define@key{FB}{EveryParGuill}[open]%
- {\expandafter\let\expandafter
- \FBeveryparguill\csname FBguill#1\endcsname
- \ifx\FBeveryparguill\FBguillopen
- \else\ifx\FBeveryparguill\FBguillclose
- \else\ifx\FBeveryparguill\FBguillnone
- \else
- \let\FBeveryparguill\FBguillopen
- \FBWarning{Wrong value for `EveryParGuill':
- try `open',\MessageBreak
- `close' or `none'. Reported}%
- \fi
- \fi
- \fi}%
- \define@key{FB}{EveryLineGuill}[open]%
- {\ifFB@luatex@punct
- \expandafter\let\expandafter
- \FBeverylineguill\csname FBguill#1\endcsname
- \ifx\FBeverylineguill\FBguillopen
- \else\ifx\FBeverylineguill\FBguillclose
- \else\ifx\FBeverylineguill\FBguillnone
- \else
- \let\FBeverylineguill\FBguillnone
- \FBWarning{Wrong value for `EveryLineGuill':
- try `open',\MessageBreak
- `close' or `none'. Reported}%
- \fi
- \fi
+\newcommand*{\FBStandardLayout@setup}[1]%
+ {\ifFB@mainlanguage@FR
+ \csname FBStandardLayout#1\endcsname
+ \else
+ \PackageWarning{french.ldf}%
+ {Option `StandardLayout' skipped:\MessageBreak
+ French is *not* babel's last option.\MessageBreak
+ Reported}%
+ \fi
+ \ifFBStandardLayout
+ \FBStandardListSpacingtrue
+ \FBStandardItemizeEnvtrue
+ \FBStandardItemLabelstrue
+ \FBStandardEnumerateEnvtrue
+ \FBIndentFirstfalse
+ \FBFrenchFootnotesfalse
+ \FBAutoSpaceFootnotesfalse
+ \else
+ \FBStandardListSpacingfalse
+ \FBStandardItemizeEnvfalse
+ \FBStandardItemLabelsfalse
+ \FBStandardEnumerateEnvfalse
+ \FBIndentFirsttrue
+ \FBFrenchFootnotestrue
+ \FBAutoSpaceFootnotestrue
+ \fi
+ }
+\newcommand*{\FBGlobalLayout@setup}[1]%
+ {\ifFB@mainlanguage@FR
+ \csname FBGlobalLayoutFrench#1\endcsname
+ \else
+ \PackageWarning{french.ldf}%
+ {Option `GlobalLayoutFrench' skipped:\MessageBreak
+ French is *not* babel's last option.\MessageBreak
+ Reported}%
+ \fi
+ }
+\newcommand*{\FBListOldLayout@setup}[1]%
+ {\csname FBListOldLayout#1\endcsname
+ \ifFBListOldLayout
+ \FBStandardEnumerateEnvtrue
+ \renewcommand*{\FrenchLabelItem}{\textendash}%
+ \fi
+ }
+\newcommand*{\FBCompactItemize@setup}[1]%
+ {\csname FBCompactItemize#1\endcsname
+ \ifFBCompactItemize
+ \FBStandardItemizeEnvfalse
+ \FBStandardEnumerateEnvfalse
+ \else
+ \FBStandardItemizeEnvtrue
+ \FBStandardEnumerateEnvtrue
+ \fi
+ }
+\newcommand*{\FBStandardLists@setup}[1]%
+ {\csname FBStandardLists#1\endcsname
+ \ifFBStandardLists
+ \FBStandardListSpacingtrue
+ \FBStandardItemizeEnvtrue
+ \FBStandardEnumerateEnvtrue
+ \FBStandardItemLabelstrue
+ \else
+ \FBStandardListSpacingfalse
+ \FBStandardItemizeEnvfalse
+ \FBStandardEnumerateEnvfalse
+ \FBStandardItemLabelsfalse
+ \fi
+ }
+\newcommand*{\FBThinColonSpace@setup}[1]%
+ {\csname FBThinColonSpace#1\endcsname
+ \ifFBThinColonSpace
+ \renewcommand*{\FBcolonspace}{\FBthinspace}%
+ \fi
+ }
+\newcommand*{\FBOldFigTabCaptions@setup}[1]%
+ {\csname FBOldFigTabCaptions#1\endcsname
+ \ifFBOldFigTabCaptions
+ \def\FB@capsep@fix{\babel@save\FBCaption@Separator
+ \def\FBCaption@Separator{\CaptionSeparator}}%
+ \addto\extrasfrench{\FB@capsep@fix}%
+ \ifdefined\extrasacadian
+ \addto\extrasacadian{\FB@capsep@fix}%
\fi
- \else
- \FBWarning{Option `EveryLineGuill' skipped:%
- \MessageBreak this option is for
- LuaTeX *only*.\MessageBreak Reported}%
- \fi}%
+ \fi
+ }
+\newcommand*{\FBSmallCapsFigTabCaptions@setup}[1]%
+ {\csname FBSmallCapsFigTabCaptions#1\endcsname
+ \ifFBSmallCapsFigTabCaptions
+ \else
+ \let\FBfigtabshape\relax
+ \fi
+ }
+\newcommand*{\FBSuppressWarning@setup}[1]%
+ {\csname FBSuppressWarning#1\endcsname
+ \ifFBSuppressWarning
+ \renewcommand{\FBWarning}[1]{}%
+ \fi
+ }
+\newcommand*{\FBINGuillSpace@setup}[1]%
+ {\csname FBINGuillSpace#1\endcsname
+ \ifFBINGuillSpace
+ \renewcommand*{\FBguillspace}{\space}%
+ \fi
+ }
+\newcommand*{\FBEveryParGuill@setup}[1]%
+ {\expandafter\let\expandafter
+ \FBeveryparguill\csname FBguill#1\endcsname
+ \ifx\FBeveryparguill\FBguillopen
+ \else\ifx\FBeveryparguill\FBguillclose
+ \else\ifx\FBeveryparguill\FBguillnone
+ \else
+ \let\FBeveryparguill\FBguillopen
+ \FBWarning{Wrong value for `EveryParGuill':
+ try `open',\MessageBreak
+ `close' or `none'. Reported}%
+ \fi
+ \fi
+ \fi
+ }
+\newcommand*{\FBEveryLineGuill@setup}[1]%
+ {\ifFB@luatex@punct
+ \expandafter\let\expandafter
+ \FBeverylineguill\csname FBguill#1\endcsname
+ \ifx\FBeverylineguill\FBguillopen
+ \else\ifx\FBeverylineguill\FBguillclose
+ \else\ifx\FBeverylineguill\FBguillnone
+ \else
+ \let\FBeverylineguill\FBguillnone
+ \FBWarning{Wrong value for `EveryLineGuill':
+ try `open',\MessageBreak
+ `close' or `none'. Reported}%
+ \fi
+ \fi
+ \fi
+ \else
+ \FBWarning{Option `EveryLineGuill' skipped:%
+ \MessageBreak this option is for
+ LuaTeX *only*.\MessageBreak Reported}%
+ \fi
+ }
% \end{macrocode}
%
% \changes{v3.3c}{2017/07/23}{New option `UnicodeNoBreakSpaces’ for
@@ -4807,20 +4737,21 @@ return french_punctuation
%
% Option \fbo{UnicodeNoBreakSpaces} (LuaLaTeX only) is meant for
% HTML translators: when true, all non-breaking spaces added by
-% \frenchb{} are coded in the PDF file as Unicode characters, namely
-% U+A0 or U+202F, instead of penalties and glues.
+% \frenchb{} are coded in the PDF file as Unicode characters,
+% namely U+A0 or U+202F, instead of penalties and glues.
% \begin{macrocode}
- \define@key{FB}{UnicodeNoBreakSpaces}[true]%
- {\ifFB@luatex@punct
- \csname FBucsNBSP#1\endcsname
- \ifFBucsNBSP \FB@ucsNBSP=\@ne \fi
- \else
- \FBWarning{Option `UnicodeNoBreakSpaces' skipped:%
- \MessageBreak this option is for
- LuaTeX *only*.\MessageBreak Reported}%
- \fi
- }%
+\newcommand*{\FBUnicodeNoBreakSpaces@setup}[1]%
+ {\ifFB@luatex@punct
+ \csname FBucsNBSP#1\endcsname
+ \ifFBucsNBSP \FB@ucsNBSP=\@ne \fi
+ \else
+ \FBWarning{Option `UnicodeNoBreakSpaces' skipped:%
+ \MessageBreak this option is for
+ LuaTeX *only*.\MessageBreak Reported}%
+ \fi
+ }%
% \end{macrocode}
+%
% Inputing French quotes as \emph{single characters} when they are
% available on the keyboard (through a compose key for instance)
% is more comfortable than typing |\og| and |\fg|.
@@ -4861,145 +4792,145 @@ return french_punctuation
% it can be single-byte (latin1, latin9, applemac,…) or
% multi-bytes (utf-8, utf8x); the next command is meant for checking
% whether a character is single-byte (|\FB@second| is empty) or not.
-% \begin{macrocode}
- \def\FB@parse#1#2\endparse{\def\FB@second{#2}}%
-% \end{macrocode}
%
% \begin{macrocode}
- \define@key{FB}{og}%
- {\ifFBunicode
+\def\FB@parse#1#2\endparse{\def\FB@second{#2}}%
+\newcommand*{\FB@@og}%
+ {\ifFBfrench
+ \ifFB@spacing \FB@og\ignorespaces
+ \else \guillemotleft
+ \fi
+ \else \guillemotleft
+ \fi
+ }
+\newcommand*{\FB@@fg}%
+ {\ifFBfrench
+ \ifFB@spacing \FB@fg
+ \else \guillemotright
+ \fi
+ \else \guillemotright
+ \fi
+ }
+\newcommand*{\FBog@setup}[1]%
+ {\ifFBunicode
% \end{macrocode}
% LuaTeX or XeTeX in use, first try modern LuaTeX: we just need
% to set LuaTeX’s attribute |\FB@addGUILspace| to 1,
% \begin{macrocode}
- \ifFB@luatex@punct
- \FB@addGUILspace=1 \relax
- \fi
+ \ifFB@luatex@punct
+ \FB@addGUILspace=1 \relax
+ \fi
% \end{macrocode}
% then with XeTeX it is a bit more tricky:
% \begin{macrocode}
- \ifFB@xetex@punct
+ \ifFB@xetex@punct
% \end{macrocode}
% |\XeTeXinterchartokenstate| is defined, we just need to set
% |\XeTeXcharclass| to |\FB@guilo| for the French opening quote
% in T1 and Unicode encoding (see subsection~\ref{ssec-punct}).
% \begin{macrocode}
- \XeTeXcharclass"13 = \FB@guilo
- \XeTeXcharclass"AB = \FB@guilo
- \XeTeXcharclass"A0 = \FB@guilnul
- \XeTeXcharclass"202F = \FB@guilnul
- \fi
+ \XeTeXcharclass"13 = \FB@guilo
+ \XeTeXcharclass"AB = \FB@guilo
+ \XeTeXcharclass"A0 = \FB@guilnul
+ \XeTeXcharclass"202F = \FB@guilnul
+ \fi
% \end{macrocode}
% Issue a warning with older Unicode engines requiring active
% characters.
% \begin{macrocode}
- \ifFB@active@punct
- \FBWarning{Option og=« not supported with this version
- of\MessageBreak LuaTeX/XeTeX; reported}%
- \fi
- \else
+ \ifFB@active@punct
+ \FBWarning{Option og=« not supported with this version of
+ \MessageBreak LuaTeX/XeTeX; reported}% »
+ \fi
+ \else
% \end{macrocode}
% This is for conventional TeX engines:
% \begin{macrocode}
- \newcommand*{\FB@@og}{%
- \ifFBfrench
- \ifFB@spacing\FB@og\ignorespaces
- \else\guillemotleft
- \fi
- \else\guillemotleft\fi}%
- \AtBeginDocument{%
- \ifdefined\uc@dclc
+ \AtBeginDocument{%
+ \ifdefined\uc@dclc
% \end{macrocode}
% Package \pkg{inputenc} with utf8x (ucs) encoding loaded,
% use |\uc@dclc|:
% \begin{macrocode}
- \uc@dclc{171}{default}{\FB@@og}%
- \else
+ \uc@dclc{171}{default}{\FB@@og}%
+ \else
% \end{macrocode}
% if encoding is not utf8x, check if the argument of |og|
% is a single-byte character:
% \begin{macrocode}
- \FB@parse#1\endparse
- \ifx\FB@second\@empty
+ \FB@parse#1\endparse
+ \ifx\FB@second\@empty
% \end{macrocode}
% This means 8-bit character encoding.
% Package \pkg{MULEenc} (from CJK) defines |\mule@def|
% to map characters to control sequences.
% \begin{macrocode}
- \ifdefined\mule@def
- \mule@def{11}{\FB@@og}%
- \else
- \ifdefined\DeclareInputText
- \@tempcnta`#1\relax
- \DeclareInputText{\the\@tempcnta}{\FB@@og}%
- \else
+ \ifdefined\mule@def
+ \mule@def{11}{\FB@@og}%
+ \else
+ \ifdefined\DeclareInputText
+ \@tempcnta`#1\relax
+ \DeclareInputText{\the\@tempcnta}{\FB@@og}%
+ \else
% \end{macrocode}
% Package \pkg{inputenc} not loaded, no way…
% \begin{macrocode}
- \FBWarning{Option `og' requires package
- inputenc;\MessageBreak reported}%
- \fi
- \fi
- \else
+ \FBWarning{Option `og' requires package
+ inputenc;\MessageBreak reported}%
+ \fi
+ \fi
+ \else
% \end{macrocode}
% This means multi-byte character encoding, we assume UTF-8
% \begin{macrocode}
- \DeclareUnicodeCharacter{00AB}{\FB@@og}%
- \fi
- \fi}%
- \fi
- }%
+ \DeclareUnicodeCharacter{00AB}{\FB@@og}%
+ \fi
+ \fi}%
+ \fi
+ }
% \end{macrocode}
%
% Same code for the closing quote.
% \begin{macrocode}
- \define@key{FB}{fg}%
- {\ifFBunicode
- \ifFB@luatex@punct
- \FB@addGUILspace=1 \relax
- \fi
- \ifFB@xetex@punct
- \XeTeXcharclass"14 = \FB@guilf
- \XeTeXcharclass"BB = \FB@guilf
- \XeTeXcharclass"A0 = \FB@guilnul
- \XeTeXcharclass"202F = \FB@guilnul
- \fi
- \ifFB@active@punct
- \FBWarning{Option fg=» not supported with this version
- of\MessageBreak LuaTeX/XeTeX; reported}%
- \fi
- \else
- \newcommand*{\FB@@fg}{%
- \ifFBfrench
- \ifFB@spacing\FB@fg
- \else\guillemotright
- \fi
- \else\guillemotright\fi}%
- \AtBeginDocument{%
- \ifdefined\uc@dclc
- \uc@dclc{187}{default}{\FB@@fg}%
- \else
- \FB@parse#1\endparse
- \ifx\FB@second\@empty
- \ifdefined\mule@def
- \mule@def{27}{{\FB@@fg}}%
- \else
- \ifdefined\DeclareInputText
- \@tempcnta`#1\relax
- \DeclareInputText{\the\@tempcnta}{\FB@@fg}%
- \else
- \FBWarning{Option `fg' requires package
- inputenc;\MessageBreak reported}%
- \fi
- \fi
- \else
- \DeclareUnicodeCharacter{00BB}{\FB@@fg}%
- \fi
- \fi}%
- \fi
- }%
-}
-% \end{macrocode}
+\newcommand*{\FBfg@setup}[1]%
+ {\ifFBunicode
+ \ifFB@luatex@punct
+ \FB@addGUILspace=1 \relax
+ \fi
+ \ifFB@xetex@punct
+ \XeTeXcharclass"14 = \FB@guilf
+ \XeTeXcharclass"BB = \FB@guilf
+ \XeTeXcharclass"A0 = \FB@guilnul
+ \XeTeXcharclass"202F = \FB@guilnul
+ \fi
+ \ifFB@active@punct
+ \FBWarning{Option fg=» not supported with this version of
+ \MessageBreak LuaTeX/XeTeX; reported}%
+ \fi
+ \else
+ \AtBeginDocument{%
+ \ifdefined\uc@dclc
+ \uc@dclc{187}{default}{\FB@@fg}%
+ \else
+ \FB@parse#1\endparse
+ \ifx\FB@second\@empty
+ \ifdefined\mule@def
+ \mule@def{27}{{\FB@@fg}}%
+ \else
+ \ifdefined\DeclareInputText
+ \@tempcnta`#1\relax
+ \DeclareInputText{\the\@tempcnta}{\FB@@fg}%
+ \else
+ \FBWarning{Option `fg' requires package
+ inputenc;\MessageBreak reported}%
+ \fi
+ \fi
+ \else
+ \DeclareUnicodeCharacter{00BB}{\FB@@fg}%
+ \fi
+ \fi}%
+ \fi
+ }
% \end{macro}
%
% \begin{macro}{\FBprocess@options}
@@ -5113,8 +5044,8 @@ return french_punctuation
%
% When package \pkg{numprint} is loaded with option
% \opt{autolanguage}, \pkg{numprint}’s command |\npstylefrench| has
-% to be redefined differently according to the value of flag
-% \fbo{ThinSpaceInFrenchNumbers}.
+% to be redefined differently according to the value of
+% flag\linebreak \fbo{ThinSpaceInFrenchNumbers}.
% As |\npstylefrench| was undefined in old versions of
% \pkg{numprint}, we provide this command.
% \begin{macrocode}
@@ -5122,17 +5053,16 @@ return french_punctuation
{\ifnprt@autolanguage
\providecommand*{\npstylefrench}{}%
\ifFBThinSpaceInFrenchNumbers
- \renewcommand*{\FBthousandsep}{\,}%
+ \renewcommand*{\FBthousandsep}{\FBthinspace}%
\fi
\g@addto@macro\npstylefrench{\npthousandsep{\FBthousandsep}}%
\fi
}{}%
% \end{macrocode}
% \fbo{FrenchSuperscripts}: if \fbo{true} |\up=\fup|, else
-% |\up=\textsuperscript|. Anyway |\up*=\FB@up@fake|. The star-form
-% |\up*{}| is provided for fonts that lack some superior letters:
-% Adobe Jenson Pro and Utopia Expert have no ``g superior’’ for
-% instance.
+% |\up=\textsuperscript|. The star-form |\up*=\FB@up@fake| is
+% provided for fonts that lack some superior letters: Adobe Jenson
+% Pro and Utopia Expert have no ``g superior’’ for instance.
% \begin{macrocode}
\ifFBFrenchSuperscripts
\DeclareRobustCommand*{\up}{%
@@ -5275,9 +5205,8 @@ return french_punctuation
% Reported by Sébastien Gouezel.}
%
% At |\begin{document}|, we have to provide an |\xspace| command
-% in case the \pkg{xspace} package is not loaded, do some setup for
-% \file{hyperref}’s bookmarks, execute |\FBprocess@options|, switch
-% LuaTeX punctuation on and issue some warnings if necessary.
+% in case the \pkg{xspace} package is not loaded and execute
+% |\FBprocess@options|.
% \begin{macrocode}
\AtBeginDocument{%
\providecommand*{\xspace}{\relax}%
@@ -5426,13 +5355,14 @@ return french_punctuation
% \begin{macro}{\Frlabelitemii}
% \begin{macro}{\Frlabelitemiii}
% \begin{macro}{\Frlabelitemiv}
-% Default labels for French itemize-lists (same label for all levels):
+% Default labels for French itemize-lists ---same label for all
+% levels---, (already defined as empty by |\DeclareKey{}|):
% \begin{macrocode}
-\newcommand*{\FrenchLabelItem}{\textemdash}
-\newcommand*{\Frlabelitemi}{\FrenchLabelItem}
-\newcommand*{\Frlabelitemii}{\FrenchLabelItem}
-\newcommand*{\Frlabelitemiii}{\FrenchLabelItem}
-\newcommand*{\Frlabelitemiv}{\FrenchLabelItem}
+\renewcommand*{\FrenchLabelItem}{\textemdash}
+\renewcommand*{\Frlabelitemi}{\FrenchLabelItem}
+\renewcommand*{\Frlabelitemii}{\FrenchLabelItem}
+\renewcommand*{\Frlabelitemiii}{\FrenchLabelItem}
+\renewcommand*{\Frlabelitemiv}{\FrenchLabelItem}
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -5444,14 +5374,14 @@ return french_punctuation
% \begin{macro}{\descindentFB}
% \begin{macro}{\labelindentFB}
% \begin{macro}{\labelwidthFB}
-% Let’s define four dimens |\listindentFB|, |\descindentFB|,
+% {\sloppy Let’s define four dimens |\listindentFB|, |\descindentFB|,
% |\labelindentFB| and |\labelwidthFB| to customise lists’ horizontal
% indentations.
% They are given silly negative values here in order to eventually
% enable their customisation in the preamble. They will get
% reasonnable defaults later when entering French (see
% |\setlabelitemsFB| and |\setlistindentFB|) unless they have been
-% customised.
+% customised.\par}
% \begin{macrocode}
\newdimen\listindentFB
\setlength{\listindentFB}{-1pt}
@@ -5784,20 +5714,6 @@ return french_punctuation
% \changes{v2.0}{2006/11/06}{Footnotes are now printed
% by default `à la française’ for the whole document.}
%
-% \changes{v2.0b}{2007/04/18}{Footnotes: Just do nothing
-% (except warning) when the bigfoot package is loaded.}
-%
-% \changes{v3.5s}{2024/01/05}{Footnotes: no customising of
-% \cs{@footnotetext} when the footnotebackref package is loaded.
-% Just warn the user.}
-%
-% The \pkg{bigfoot} package deeply changes the way footnotes are
-% handled. When \file{bigfoot} is loaded, we just warn the user
-% that \frenchb{} will not customise footnotes at all.
-% When the \pkg{footnotebackref} package is loaded, \frenchb{}
-% will not customise |\@footnotetext| in order to keep back
-% referencing working.
-%
% The layout of footnotes is controlled by two flags
% |\ifFBAutoSpaceFootnotes| and |\ifFBFrenchFootnotes| which are
% set by options of \fbsetup{} (see section~\ref{ssec-keyval}).
@@ -5806,40 +5722,9 @@ return french_punctuation
% different because one was called in a French part, the other one
% in English!).
%
-% We save the original definition of |\@footnotemark| at the
-% |\begin{document}| in order to include any customisation that
-% packages might have done; we define a variant |\@footnotemarkFB|
-% which just adds a thin space before the number or symbol calling
-% a footnote (any space typed in is removed first). The choice
-% between the two definitions (valid for the whole document) is
-% controlled by flag |\ifFBAutoSpaceFootnotes|.
-%
% \changes{v2.4a}{2009/11/23}{\cs{PackageWarning} changed to
% \cs{PackageInfo} (when bigfoot package in use).}
%
-% \begin{macrocode}
-\AtBeginDocument{%
- \@ifpackageloaded{bigfoot}%
- {\PackageWarning{french.ldf}%
- {bigfoot package in use.\MessageBreak
- babel-french will NOT customise footnotes;%
- \MessageBreak reported}}%
- {\let\@footnotemarkORI\@footnotemark
- \def\@footnotemarkFB{\leavevmode\unskip\unkern
- \,\@footnotemarkORI}%
- \ifFBAutoSpaceFootnotes
- \let\@footnotemark\@footnotemarkFB
- \fi}%
- \@ifpackageloaded{footnotebackref}%
- {\FBFrenchFootnotesfalse
- \PackageWarning{french.ldf}%
- {footnotebackref package loaded.\MessageBreak
- babel-french will NOT customise footnotes;%
- \MessageBreak reported}}%
- {}%
- }
-% \end{macrocode}
-%
% \begin{macro}{\@makefntextFB}
% We then define |\@makefntextFB|, a variant of |\@makefntext|
% which is responsible for the layout of footnotes, to match the
@@ -5880,10 +5765,9 @@ return french_punctuation
\newcommand*{\kernFFN}{\kern .5em}
\newdimen\FBfnindent
% \end{macrocode}
-% |\@makefntextFB|’s definition is now tuned according to the
-% document’s class for better compatibility.
+% |\@makefntextFB|’s definition depends on the document’s class.
%
-% Koma-script classes provide |\deffootnote|, a handy command
+% Koma-script classes: they provide |\deffootnote|, a handy command
% to customise the footnotes’ layout (see English manual
% \file{scrguien.pdf}); it redefines |\@makefntext| and
% |\@@makefnmark|. First, save the original definitions.
@@ -5929,19 +5813,17 @@ return french_punctuation
\makefootmark #1}%
}{}
% \end{macrocode}
-% Definitions for the \cls{beamer} class:
-% \begin{macrocode}
-\@ifclassloaded{beamer}
-% \end{macrocode}
-% (see original definition in \file{beamerbaseframecomponents.sty}),
-% note that for the \cls{beamer} class footnotes are LR-boxes, not
-% paragraphs, so |\parindentFFN| is irrelevant.
-% class.
+% Definitions for the \cls{beamer} class:\par
+% the original definition is in
+% \file{beamerbaseframecomponents.sty}, note that for the
+% \cls{beamer} class footnotes are LR-boxes, not paragraphs,
+% so |\parindentFFN| is irrelevant.
%
% \changes{v3.2h}{2016/04/09}{With beamer.cls, add \cs{llap} to
% \cs{@thefnmark} for notes numbered over 99.}
%
% \begin{macrocode}
+\@ifclassloaded{beamer}
{\def\@makefntextFB#1{%
\def\insertfootnotetext{#1}%
\def\insertfootnotemark{\insertfootnotemarkFB}%
@@ -5952,9 +5834,9 @@ return french_punctuation
\llap{\@thefnmark}\dotFFN\kernFFN}%
}{}
% \end{macrocode}
+%
% Now the default definition of |\@makefntextFB| for standard LaTeX
% and AMS classes.
-%
% The next command prints the footnote mark according to the
% specifications of the French `Imprimerie Nationale’.
% Keep in mind that |\@thefnmark| might be empty (i.e.\ in
@@ -5971,11 +5853,36 @@ return french_punctuation
% \end{macrocode}
% \end{macro}
%
-% The rest of |\@makefntext|’s customisation is done at the
-% |\begin{document}|. We save the original definition of
-% |\@makefntext|, and then redefine |\@makefntext| according
+% The rest of |\@makefntext|’s customisation will be done at
+% the |\begin{document}|: saving the original definition of
+% |\@makefntext|, then redefining |\@makefntext| according
% to the value of flag |\ifFBFrenchFootnotes| (true or false).
-% Koma-script classes require a special treatment.
+%
+% \begin{macro}{\@footnotemark}
+%
+% \changes{v3.6a}{2024/05/13}{Allow customisation of the space added
+% in \cs{\@footnotemarkFB}.}
+%
+% We will save the original definition of |\@footnotemark| at the
+% |\begin{document}| in order to include any customisation that
+% packages might have done; we define a variant |\@footnotemarkFB|
+% which just adds a (customisable) thin space before the number or
+% symbol calling a footnote (any space typed in is removed first).
+% The choice between the two definitions (valid for the whole
+% document) is controlled by flag |\ifFBAutoSpaceFootnotes|.
+%
+% |\@footnotemark|’s customisation: let’s define a customisable
+% thin space which will be added before footnote’s call by
+% |\@footnotemarkFB|.
+% \begin{macrocode}
+\newcommand*{\FBfnmarkspace}{\kern .5\fontdimen2\font}
+\def\@footnotemarkFB{\leavevmode\unskip\unkern
+ \protect\FBfnmarkspace\@footnotemarkORI}%
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v2.0b}{2007/04/18}{Footnotes: Just do nothing
+% (except warning) when the bigfoot package is loaded.}
%
% \changes{v3.3c}{2017/07/28}{Reset \cs{localleftbox} locally
% inside \cs{@makefntext}. Needed by \cs{frquote} with LuaTeX.}
@@ -5987,14 +5894,49 @@ return french_punctuation
% \cs{localleftbox} and \cs{FBeverypar@quote} saved and restored
% instead.}
%
+% \changes{v3.5s}{2024/01/05}{Footnotes: no customising of
+% \cs{@footnotetext} when the footnotebackref package is loaded.
+% Just warn the user.}
+%
+% Switching between French or Standard layout for footnotes is done
+% `AtBeginDocument’.
% The LuaTeX command |\localleftbox| and |\FBeverypar@quote| used
% by |\frquote{}| have to be reset inside footnotes; done for LaTeX
% based formats only.
% \begin{macrocode}
\providecommand\localleftbox[1]{}
\AtBeginDocument{%
- \@ifpackageloaded{bigfoot}{}%
- {\ifdim\parindentFFN<10in
+% \end{macrocode}
+% When the \pkg{footnotebackref} package is loaded, \frenchb{}
+% will not customise |\@footnotetext| in order to keep back
+% referencing working.
+% \begin{macrocode}
+ \@ifpackageloaded{footnotebackref}%
+ {\FBFrenchFootnotesfalse
+ \PackageWarning{french.ldf}%
+ {footnotebackref package loaded.\MessageBreak
+ babel-french will NOT customise footnotes;%
+ \MessageBreak reported}}%
+ {}%
+% \end{macrocode}
+% The \pkg{bigfoot} package deeply changes the way footnotes are
+% handled. When \file{bigfoot} is loaded, we just warn the user
+% that \frenchb{} will not customise footnotes at all.
+% \begin{macrocode}
+ \@ifpackageloaded{bigfoot}%
+ {\PackageWarning{french.ldf}%
+ {bigfoot package in use.\MessageBreak
+ babel-french will NOT customise footnotes;%
+ \MessageBreak reported}}%
+% \end{macrocode}
+% Otherwise, footnotes may be customised according to the
+% \fbsetup{} options.
+% \begin{macrocode}
+ {\let\@footnotemarkORI\@footnotemark
+ \ifFBAutoSpaceFootnotes
+ \let\@footnotemark\@footnotemarkFB
+ \fi
+ \ifdim\parindentFFN<10in
\else
\parindentFFN=\parindent
\ifdim\parindentFFN<1.5em \parindentFFN=1.5em \fi
@@ -6002,14 +5944,15 @@ return french_punctuation
\settowidth{\FBfnindent}{\dotFFN\kernFFN}%
\addtolength{\FBfnindent}{\parindentFFN}%
\let\@makefntextORI\@makefntext
- \ifFB@koma
% \end{macrocode}
+% Koma-script classes require a special treatment.\par
% Definition of |\@makefntext| for koma-script classes: running
% \@makefntextORI inside a group to reset |\localleftbox{}| and
% |\FBeverypar@quote| would mess up the layout of footnotes whenever
% the first manadatory argument of |\deffootnote{}| (used as
% |\leftskip|) is non-nil (default is 1em, 0pt in French).
% \begin{macrocode}
+ \ifFB@koma
\let\@@makefnmarkORI\@@makefnmark
\long\def\@makefntext#1{%
\localleftbox{}%
@@ -6071,7 +6014,7 @@ return french_punctuation
\localleftbox{\FBeveryline@quote}}%
\fi
}%
-}
+ }
% \end{macrocode}
%
% For compatibility reasons, we provide definitions for the commands
diff --git a/macros/latex/contrib/babel-contrib/french/frenchb.pdf b/macros/latex/contrib/babel-contrib/french/frenchb.pdf
index b0ab9ae43b..7e4ce7735b 100644
--- a/macros/latex/contrib/babel-contrib/french/frenchb.pdf
+++ b/macros/latex/contrib/babel-contrib/french/frenchb.pdf
Binary files differ
diff --git a/macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/README.md b/macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/README.md
index 27e0b3069f..8e75d792d0 100644
--- a/macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/README.md
+++ b/macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/README.md
@@ -1,7 +1,7 @@
<!--
-arguelles v2.4.0
+arguelles v2.4.2
author: Michele Piazzai
-contact: michele.piazzai@uc3m.es
+https://github.com/piazzai
license: MIT
-->
@@ -48,7 +48,7 @@ It is possible to change parts of the theme by altering the style files. There a
### Colors
-The theme ships with the opencolor package, which provides color definitions for the [Open Color](https://yeun.github.io/open-color/) library. By default, the background is set to `oc-gray-0`. The foreground and body text are set to `oc-gray-9`. The color of accented text is `oc-red-9`.
+The theme ships with the [opencolor package](https://www.ctan.org/pkg/opencolor), which provides color definitions for the [Open Color library](https://yeun.github.io/open-color/). By default, the background is set to `oc-gray-0`. The foreground and body text are set to `oc-gray-9`. The color of accented text is `oc-red-9`.
These settings are provided in `beamercolortheme*.sty` and can be customized using any default or opencolor name. For example:
@@ -56,7 +56,7 @@ These settings are provided in `beamercolortheme*.sty` and can be customized usi
\setbeamercolor*{structure}{bg=oc-blue-0,fg=black!80}
```
-See the opencolor package documentation for additional details.
+See the [opencolor documentation](https://github.com/piazzai/opencolor/blob/master/README.md) for additional details.
### Font weights
diff --git a/macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/beamercolorthemeArguelles.sty b/macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/beamercolorthemeArguelles.sty
index 608006da24..dfa7cb3b08 100644
--- a/macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/beamercolorthemeArguelles.sty
+++ b/macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/beamercolorthemeArguelles.sty
@@ -1,10 +1,10 @@
-% arguelles v2.4.0
+% arguelles v2.4.2
% author: Michele Piazzai
-% contact: michele.piazzai@uc3m.es
+% https://github.com/piazzai
% license: MIT
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{beamercolorthemeArguelles}[2024/02/27 Argüelles]
+\ProvidesPackage{beamercolorthemeArguelles}[2024/06/11 Argüelles]
\mode<presentation>
diff --git a/macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/beamerfontthemeArguelles.sty b/macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/beamerfontthemeArguelles.sty
index af52cb0283..8f53b26198 100644
--- a/macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/beamerfontthemeArguelles.sty
+++ b/macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/beamerfontthemeArguelles.sty
@@ -1,10 +1,10 @@
-% arguelles v2.4.0
+% arguelles v2.4.2
% author: Michele Piazzai
-% contact: michele.piazzai@uc3m.es
+% https://github.com/piazzai
% license: MIT
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{beamerfontthemeArguelles}[2024/02/27 Argüelles]
+\ProvidesPackage{beamerfontthemeArguelles}[2024/06/11 Argüelles]
\mode<presentation>
diff --git a/macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/beamerinnerthemeArguelles.sty b/macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/beamerinnerthemeArguelles.sty
index 899cb052d4..aaf0f6d08c 100644
--- a/macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/beamerinnerthemeArguelles.sty
+++ b/macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/beamerinnerthemeArguelles.sty
@@ -1,10 +1,10 @@
-% arguelles v2.4.0
+% arguelles v2.4.2
% author: Michele Piazzai
-% contact: michele.piazzai@uc3m.es
+% https://github.com/piazzai
% license: MIT
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{beamerinnerthemeArguelles}[2024/02/27 Argüelles]
+\ProvidesPackage{beamerinnerthemeArguelles}[2024/06/11 Argüelles]
\mode<presentation>
@@ -62,7 +62,7 @@
\setbeamertemplate{background}{
\begin{tikzpicture}
\useasboundingbox (0,0) rectangle (\paperwidth,\paperheight);
- \ifnum\thepage>1\relax
+ \ifnum\theframenumber>0\relax
\fill[structure.bg] (0,.01\paperheight) rectangle (\paperwidth,.99\paperheight);
\fi
\end{tikzpicture}
diff --git a/macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/beamerouterthemeArguelles.sty b/macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/beamerouterthemeArguelles.sty
index bd4cfad4b7..5ec88744ed 100644
--- a/macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/beamerouterthemeArguelles.sty
+++ b/macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/beamerouterthemeArguelles.sty
@@ -1,10 +1,10 @@
-% arguelles v2.4.0
+% arguelles v2.4.2
% author: Michele Piazzai
-% contact: michele.piazzai@uc3m.es
+% https://github.com/piazzai
% license: MIT
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{beamerouterthemeArguelles}[2024/02/27 Argüelles]
+\ProvidesPackage{beamerouterthemeArguelles}[2024/06/11 Argüelles]
\mode<presentation>
diff --git a/macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/beamerthemeArguelles.sty b/macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/beamerthemeArguelles.sty
index c66f0bf591..417be618ac 100644
--- a/macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/beamerthemeArguelles.sty
+++ b/macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/beamerthemeArguelles.sty
@@ -1,10 +1,10 @@
-% arguelles v2.4.0
+% arguelles v2.4.2
% author: Michele Piazzai
-% contact: michele.piazzai@uc3m.es
+% https://github.com/piazzai
% license: MIT
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{beamerthemeArguelles}[2024/02/27 Argüelles]
+\ProvidesPackage{beamerthemeArguelles}[2024/06/11 Argüelles]
\mode<presentation>
@@ -33,7 +33,7 @@
\patchcmd{\slideentry}{\usebeamertemplate{mini frame in other subsection of current section}}{\usebeamertemplate{mini frame in other subsection}}{}{}
\fi
-% dependencies
+% package dependencies
\RequirePackage[utf8]{inputenc}
\RequirePackage[T1]{fontenc}
\RequirePackage[osf]{Alegreya}
@@ -48,6 +48,9 @@
\RequirePackage{tikz}
\RequirePackage[skins]{tcolorbox}
+% tikz libraries
+\usetikzlibrary{calc}
+
% components
\useinnertheme{Arguelles}
\useoutertheme{Arguelles}
diff --git a/macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/demo/demo-arguelles.pdf b/macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/demo/demo-arguelles.pdf
index 73eb2cd4e9..70a4b7fe16 100644
--- a/macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/demo/demo-arguelles.pdf
+++ b/macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/demo/demo-arguelles.pdf
Binary files differ
diff --git a/macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/demo/demo-arguelles.tex b/macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/demo/demo-arguelles.tex
index 037fc1d449..71ea791608 100644
--- a/macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/demo/demo-arguelles.tex
+++ b/macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/demo/demo-arguelles.tex
@@ -1,6 +1,6 @@
-% arguelles v2.4.0
+% arguelles v2.4.2
% author: Michele Piazzai
-% contact: michele.piazzai@uc3m.es
+% https://github.com/piazzai
% license: MIT
\documentclass[compress,12pt]{beamer}
diff --git a/macros/latex/contrib/beamer-contrib/themes/moloch/CHANGELOG.md b/macros/latex/contrib/beamer-contrib/themes/moloch/CHANGELOG.md
index 1d90d7617c..d1e8bc4d60 100644
--- a/macros/latex/contrib/beamer-contrib/themes/moloch/CHANGELOG.md
+++ b/macros/latex/contrib/beamer-contrib/themes/moloch/CHANGELOG.md
@@ -1,5 +1,20 @@
# Changelog
+## [0.4.0](https://github.com/jolars/moloch/compare/v0.3.0...v0.4.0) (2024-07-09)
+
+
+### Features
+
+* add a small amount of vertical space before subtitle ([b224a9b](https://github.com/jolars/moloch/commit/b224a9b5067187e64a7669b61aee029447535729))
+* support memoize package (closes [#16](https://github.com/jolars/moloch/issues/16)) ([1ca26e8](https://github.com/jolars/moloch/commit/1ca26e857a331fcb29296c4987b69aea0db90fae))
+* support title format modifications ([#18](https://github.com/jolars/moloch/issues/18)) ([46a4f49](https://github.com/jolars/moloch/commit/46a4f49e8bb95798c2d6f3b69a1b96128d95cb8b))
+
+
+### Bug Fixes
+
+* add % at the end of some commands ([33b9833](https://github.com/jolars/moloch/commit/33b9833f21d3e0654fe2452d0b8ac8e8eb3a47bb))
+* convert raw command in manual to text ([ac305e9](https://github.com/jolars/moloch/commit/ac305e9b547ce44e0573f333adc4e6684eb88b68))
+
## [0.3.0](https://github.com/jolars/moloch/compare/v0.2.0...v0.3.0) (2024-03-06)
diff --git a/macros/latex/contrib/beamer-contrib/themes/moloch/README.md b/macros/latex/contrib/beamer-contrib/themes/moloch/README.md
index f3b7971303..c8d9b78f15 100644
--- a/macros/latex/contrib/beamer-contrib/themes/moloch/README.md
+++ b/macros/latex/contrib/beamer-contrib/themes/moloch/README.md
@@ -12,19 +12,23 @@ The fork was created for the following reasons:
- To remove some of the more opinionated design choices, such as special handling of the Fira family of fonts.
- To strip away some features that added complexity to the code base without achieving valuable functionality for the majority of users, such as special code block designs and the pgfplots theme.
+[Here's a blog post](https://jolars.co/blog/2024-05-30-moloch/) in which I introduce the theme and write in more detail about the changes with respect to Metropolis.
+
Do not expect this theme to be backwards compatible with the Metropolis theme.
+![Screenshot](https://raw.githubusercontent.com/jolars/moloch/main/assets/screenshot.svg)
+
## Installation
Moloch is on [CTAN](https://ctan.org/pkg/moloch), so you can install it using your favorite LaTeX package manager. For example, with `tlmgr`:
-```sh
+```bash
tlmgr install moloch
```
You can also install the theme from source, in which case you need a working LaTeX installation with `l3build` installed. Then just follow these steps:
-```sh
+```bash
git clone https://github.com/jolars/moloch.git
cd moloch
l3build install
diff --git a/macros/latex/contrib/beamer-contrib/themes/moloch/beamercolorthememoloch.dtx b/macros/latex/contrib/beamer-contrib/themes/moloch/beamercolorthememoloch.dtx
index d6a14105ca..f0f644acbd 100644
--- a/macros/latex/contrib/beamer-contrib/themes/moloch/beamercolorthememoloch.dtx
+++ b/macros/latex/contrib/beamer-contrib/themes/moloch/beamercolorthememoloch.dtx
@@ -14,7 +14,7 @@
% \iffalse
%<*package>
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{beamercolorthememoloch}[2024-03-06 v0.3.0 Moloch color theme] % x-release-please-version
+\ProvidesPackage{beamercolorthememoloch}[2024-07-09 v0.4.0 Moloch color theme] % x-release-please-version
%</package>
% \fi
% \CheckSum{0}
diff --git a/macros/latex/contrib/beamer-contrib/themes/moloch/beamerfontthememoloch.dtx b/macros/latex/contrib/beamer-contrib/themes/moloch/beamerfontthememoloch.dtx
index 4748387c3c..cc3396fe47 100644
--- a/macros/latex/contrib/beamer-contrib/themes/moloch/beamerfontthememoloch.dtx
+++ b/macros/latex/contrib/beamer-contrib/themes/moloch/beamerfontthememoloch.dtx
@@ -14,7 +14,7 @@
% \iffalse
%<*package>
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{beamerfontthememoloch}[2024-03-06 v0.3.0 Moloch font theme] % x-release-please-version
+\ProvidesPackage{beamerfontthememoloch}[2024-07-09 v0.4.0 Moloch font theme] % x-release-please-version
%</package>
% \fi
% \CheckSum{0}
@@ -27,9 +27,12 @@
%
% A |beamer| font theme sets the style of the font used in the document.
%
+%
+%
% \subsubsection{Package dependencies}
%
% \begin{macrocode}
+\RequirePackage{etoolbox}
\RequirePackage{pgfopts}
% \end{macrocode}
%
@@ -51,6 +54,188 @@
\setbeamerfont{standout}{size=\Large, series=\bfseries}
% \end{macrocode}
%
+%
+%
+% \subsubsection{Title format options}
+%
+% \begin{macro}{titleformat title}
+% Controls the format of the title.
+% \begin{macrocode}
+\pgfkeys{
+ /moloch/font/titleformat title/.cd,
+ .is choice,
+ regular/.code={%
+ \let\moloch@titleformat\@empty%
+ \setbeamerfont{title}{shape=\normalfont}%
+ },
+ smallcaps/.code={%
+ \let\moloch@titleformat\@empty%
+ \setbeamerfont{title}{shape=\scshape}%
+ },
+ allsmallcaps/.code={%
+ \let\moloch@titleformat\lowercase%
+ \setbeamerfont{title}{shape=\scshape}%
+ \PackageNote{beamerthememoloch}{%
+ Be aware that titleformat title=allsmallcaps can lead to problems%
+ }
+ },
+ allcaps/.code={%
+ \let\moloch@titleformat\uppercase%
+ \setbeamerfont{title}{shape=\normalfont}
+ \PackageNote{beamerthememoloch}{%
+ Be aware that titleformat title=allcaps can lead to problems%
+ }
+ },
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{titleformat subtitle}
+% Control the format of the subtitle.
+% \begin{macrocode}
+\pgfkeys{
+ /moloch/font/titleformat subtitle/.cd,
+ .is choice,
+ regular/.code={%
+ \let\moloch@subtitleformat\@empty%
+ \setbeamerfont{subtitle}{shape=\normalfont}%
+ },
+ smallcaps/.code={%
+ \let\moloch@subtitleformat\@empty%
+ \setbeamerfont{subtitle}{shape=\scshape}%
+ },
+ allsmallcaps/.code={%
+ \let\moloch@subtitleformat\MakeLowercase%
+ \setbeamerfont{subtitle}{shape=\scshape}%
+ \PackageNote{beamerthememoloch}{%
+ Be aware that titleformat subtitle=allsmallcaps can lead to problems%
+ }
+ },
+ allcaps/.code={%
+ \let\moloch@subtitleformat\MakeUppercase%
+ \setbeamerfont{subtitle}{shape=\normalfont}%
+ \PackageNote{beamerthememoloch}{%
+ Be aware that titleformat subtitle=allcaps can lead to problems%
+ }
+ },
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{titleformat section}
+% Controls the format of the section title.
+% \begin{macrocode}
+\pgfkeys{
+ /moloch/font/titleformat section/.cd,
+ .is choice,
+ regular/.code={%
+ \let\moloch@sectiontitleformat\@empty%
+ \setbeamerfont{section title}{shape=\normalfont}%
+ },
+ smallcaps/.code={%
+ \let\moloch@sectiontitleformat\@empty%
+ \setbeamerfont{section title}{shape=\scshape}%
+ },
+ allsmallcaps/.code={%
+ \let\moloch@sectiontitleformat\MakeLowercase%
+ \setbeamerfont{section title}{shape=\scshape}%
+ \PackageNote{beamerthememoloch}{%
+ Be aware that titleformat section=allsmallcaps can lead to problems%
+ }
+ },
+ allcaps/.code={%
+ \let\moloch@sectiontitleformat\MakeUppercase%
+ \setbeamerfont{section title}{shape=\normalfont}%
+ \PackageNote{beamerthememoloch}{%
+ Be aware that titleformat section=allcaps can lead to problems%
+ }
+ },
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{frametitleformat}
+% Control the format of the frame title.
+% \begin{macrocode}
+\pgfkeys{
+ /moloch/font/titleformat frame/.cd,
+ .is choice,
+ regular/.code={%
+ \let\moloch@frametitleformat\@empty%
+ \setbeamerfont{frametitle}{shape=\normalfont}%
+ },
+ smallcaps/.code={%
+ \let\moloch@frametitleformat\@empty%
+ \setbeamerfont{frametitle}{shape=\scshape}%
+ },
+ allsmallcaps/.code={%
+ \let\moloch@frametitleformat\MakeLowercase%
+ \setbeamerfont{frametitle}{shape=\scshape}%
+ \PackageNote{beamerthememoloch}{%
+ Be aware that titleformat frame=allsmallcaps can lead to problems%
+ }
+ },
+ allcaps/.code={%
+ \let\moloch@frametitleformat\MakeUppercase%
+ \setbeamerfont{frametitle}{shape=\normalfont}
+ \PackageNote{beamerthememoloch}{%
+ Be aware that titleformat frame=allcaps can lead to problems%
+ }
+ },
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{titleformat aliases}
+% Allows |titleformat title| et al. to be used in the |\usetheme|
+% declaration, where \LaTeX{} automatically removes all spaces.
+% \begin{macrocode}
+\pgfkeys{
+ /moloch/font/.cd,
+ titleformattitle/.code=\pgfkeysalso{titleformat title=#1},
+ titleformatsubtitle/.code=\pgfkeysalso{titleformat subtitle=#1},
+ titleformatsection/.code=\pgfkeysalso{titleformat section=#1},
+ titleformatframe/.code=\pgfkeysalso{titleformat frame=#1},
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\moloch@font@setdefaults}
+% Sets default values for font theme options.
+% \begin{macrocode}
+\newcommand{\moloch@font@setdefaults}{
+ \pgfkeys{/moloch/font/.cd,
+ titleformat title=regular,
+ titleformat subtitle=regular,
+ titleformat section=regular,
+ titleformat frame=regular,
+ }
+}
+% \end{macrocode}
+% \end{macro}
+%
+% We first define hooks to change the case format of the titles.
+%
+% \begin{macrocode}
+\def\moloch@titleformat#1{#1}
+\def\moloch@subtitleformat#1{#1}
+\def\moloch@sectiontitleformat#1{#1}
+\def\moloch@frametitleformat#1{#1}
+% \end{macrocode}
+%
+% To make the uppercase and lowercase macros work in the title, subtitle, etc.,
+% we have to patch the appropriate |beamer| commands that set their values.
+% This solution was suggested by Enrico Gregorio in an answer to
+% \href{http://tex.stackexchange.com/questions/112526/}{this StackExchange
+% question}.
+%
+%
+% \subsubsection{Process package options}
+%
+% \begin{macrocode}
+\moloch@font@setdefaults
+\ProcessPgfPackageOptions{/moloch/font}
+% \end{macrocode}
% \iffalse
%</package>
% \fi
diff --git a/macros/latex/contrib/beamer-contrib/themes/moloch/beamerinnerthememoloch.dtx b/macros/latex/contrib/beamer-contrib/themes/moloch/beamerinnerthememoloch.dtx
index 2b626d526d..9815a0995f 100644
--- a/macros/latex/contrib/beamer-contrib/themes/moloch/beamerinnerthememoloch.dtx
+++ b/macros/latex/contrib/beamer-contrib/themes/moloch/beamerinnerthememoloch.dtx
@@ -14,7 +14,7 @@
% \iffalse
%<*package>
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{beamerinnerthememoloch}[2024-03-06 v0.3.0 Moloch inner theme] % x-release-please-version
+\ProvidesPackage{beamerinnerthememoloch}[2024-07-09 v0.4.0 Moloch inner theme] % x-release-please-version
%</package>
% \fi
% \CheckSum{0}
@@ -173,7 +173,7 @@
% \begin{macrocode}
\setbeamertemplate{title}{
\raggedright%
- \inserttitle%
+ \moloch@titleformat{\inserttitle}%
\par%
\vspace*{0.2em}
}
@@ -184,8 +184,9 @@
% Set the subtitle on the title page.
% \begin{macrocode}
\setbeamertemplate{subtitle}{
+ \vspace*{0.1em}
\raggedright%
- \insertsubtitle%
+ \moloch@subtitleformat{\insertsubtitle}%
\par%
\vspace*{0.2em}
}
@@ -201,6 +202,7 @@
\setbeamertemplate{title separator}{
\tikzexternaldisable%
\begin{tikzpicture}
+ \mmzUnmemoizable%
\fill[fg] (0,0) rectangle (\textwidth, \moloch@titleseparator@linewidth);
\end{tikzpicture}%
\tikzexternalenable%
@@ -256,7 +258,7 @@
\begin{center}
\usebeamercolor[fg]{section title}
\usebeamerfont{section title}
- \insertsectionhead\par
+ \moloch@sectiontitleformat{\insertsectionhead}\par
\ifx\insertsubsectionhead\@empty\else
\usebeamercolor[fg]{subsection title}
\usebeamerfont{subsection title}
@@ -270,7 +272,7 @@
\raggedright
\usebeamercolor[fg]{section title}
\usebeamerfont{section title}
- \insertsectionhead\\[-1ex]
+ \moloch@sectiontitleformat{\insertsectionhead}\\[-1ex]
\usebeamertemplate*{progress bar in section page}
\par
\ifx\insertsubsectionhead\@empty\else%
@@ -338,9 +340,10 @@
\setbeamertemplate{progress bar in section page}{
\pgfmathsetlength{\moloch@progressonsectionpage}{
\textwidth * min(1,\insertframenumber/\inserttotalframenumber)
- }
- \tikzexternaldisable
+ }%
+ \tikzexternaldisable%
\begin{tikzpicture}
+ \mmzUnmemoizable%
\fill[bg]
(0,0)
rectangle
@@ -350,7 +353,7 @@
rectangle
(\moloch@progressonsectionpage, \moloch@progressonsectionpage@linewidth);
\end{tikzpicture}
- \tikzexternalenable
+ \tikzexternalenable%
}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/beamer-contrib/themes/moloch/beamerouterthememoloch.dtx b/macros/latex/contrib/beamer-contrib/themes/moloch/beamerouterthememoloch.dtx
index a5d5910831..a0ce0af580 100644
--- a/macros/latex/contrib/beamer-contrib/themes/moloch/beamerouterthememoloch.dtx
+++ b/macros/latex/contrib/beamer-contrib/themes/moloch/beamerouterthememoloch.dtx
@@ -14,7 +14,7 @@
% \iffalse
%<*package>
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{beamerouterthememoloch}[2024-03-06 v0.3.0 Moloch outer theme] % x-release-please-version
+\ProvidesPackage{beamerouterthememoloch}[2024-07-09 v0.4.0 Moloch outer theme] % x-release-please-version
%</package>
% \fi
% \CheckSum{0}
@@ -160,23 +160,42 @@
% Templates for the frame title, which is optionally underlined with a
% progress bar.
% \begin{macrocode}
+\newlength{\moloch@frametitle@padding}
+\setlength{\moloch@frametitle@padding}{2.2ex}
+\newcommand{\moloch@frametitlestrut@start}{%
+ \rule{0pt}{\moloch@frametitle@padding +%
+ \totalheightof{%
+ \ifcsdef{moloch@frametitleformat}{\moloch@frametitleformat X}{X}%
+ }%
+}%
+}
+
+\newcommand{\moloch@frametitlestrut@end}{%
+ \vphantom{\rule[-\moloch@frametitle@padding]{0pt}{\moloch@frametitle@padding}}
+}
\defbeamertemplate{frametitle}{plain}{%
\nointerlineskip%
\begin{beamercolorbox}[%
wd=\paperwidth,%
- sep=1.1ex,%
- leftskip=0.5ex,%
- rightskip=\the\glueexpr 0.5ex plus 1fill\relax,%
+ leftskip=1.6ex,%
+ rightskip=\the\glueexpr 1.6ex plus 1fill\relax,%
]{frametitle}%
\usebeamerfont{frametitle}%
- \vbox{}\vskip-0.4ex%
- \strut\insertframetitle\nolinebreak\strut\par%
+ \moloch@frametitlestrut@start%
+ \moloch@frametitleformat{\insertframetitle}%
{%
\ifx\insertframesubtitle\@empty%
\else%
- {\usebeamerfont{framesubtitle}\vspace{-0.8ex}\usebeamercolor[fg]{framesubtitle}\strut\insertframesubtitle\strut\par}%
+ {%
+ \par%
+ \usebeamerfont{framesubtitle}%
+ \vspace{-0.8ex}%
+ \usebeamercolor[fg]{framesubtitle}%
+ \insertframesubtitle%
+ }%
\fi
}%
+ \moloch@frametitlestrut@end%
\end{beamercolorbox}%
}
\setbeamertemplate{frametitle continuation}{\romannumeral\insertcontinuationcount}
@@ -192,13 +211,14 @@
\newlength{\moloch@progressinheadfoot@linewidth}
\setlength{\moloch@progressinheadfoot@linewidth}{0.4pt}
\setbeamertemplate{progress bar in head/foot}{
- \nointerlineskip
+ \nointerlineskip%
\pgfmathsetlength{\moloch@progressinheadfoot}{%
\paperwidth * min(1,\insertframenumber/\inserttotalframenumber)%
- }
+ }%
\begin{beamercolorbox}[wd=\paperwidth]{progress bar in head/foot}
- \tikzexternaldisable
+ \tikzexternaldisable%
\begin{tikzpicture}
+ \mmzUnmemoizable%
\fill[bg]
(0,0)
rectangle
@@ -208,7 +228,7 @@
rectangle
(\moloch@progressinheadfoot, \moloch@progressinheadfoot@linewidth);
\end{tikzpicture}
- \tikzexternalenable
+ \tikzexternalenable%
\end{beamercolorbox}
}
% \end{macrocode}
diff --git a/macros/latex/contrib/beamer-contrib/themes/moloch/beamerthememoloch.dtx b/macros/latex/contrib/beamer-contrib/themes/moloch/beamerthememoloch.dtx
index fcebef5a81..e6447ec791 100644
--- a/macros/latex/contrib/beamer-contrib/themes/moloch/beamerthememoloch.dtx
+++ b/macros/latex/contrib/beamer-contrib/themes/moloch/beamerthememoloch.dtx
@@ -12,7 +12,7 @@
% \iffalse
%<*package>
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{beamerthememoloch}[2024-03-06 v0.3.0 Moloch Beamer theme] % x-release-please-version
+\ProvidesPackage{beamerthememoloch}[2024-07-09 v0.4.0 Moloch Beamer theme] % x-release-please-version
%</package>
% \fi
% \CheckSum{0}
@@ -52,14 +52,69 @@
}
% \end{macrocode}
%
+% \begin{macro}{titleformat plain}
+% Controls the formatting of the text on standout ``plain'' frames.
+% \begin{macrocode}
+\pgfkeys{
+ /moloch/titleformat plain/.cd,
+ .is choice,
+ regular/.code={%
+ \let\moloch@plaintitleformat\@empty%
+ \setbeamerfont{standout}{shape=\normalfont}%
+ },
+ smallcaps/.code={%
+ \let\moloch@plaintitleformat\@empty%
+ \setbeamerfont{standout}{shape=\scshape}%
+ },
+ allsmallcaps/.code={%
+ \let\moloch@plaintitleformat\MakeLowercase%
+ \setbeamerfont{standout}{shape=\scshape}%
+ },
+ allcaps/.code={%
+ \let\moloch@plaintitleformat\MakeUppercase%
+ \setbeamerfont{standout}{shape=\normalfont}%
+ },
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{titleformat}
+% Sets a standard format for titles, subtitles, section titles, frame
+% titles, and the text on standout ``plain'' frames.
+% \begin{macrocode}
+\pgfkeys{
+ /moloch/titleformat/.code=\pgfkeysalso{
+ font/titleformat title=#1,
+ font/titleformat subtitle=#1,
+ font/titleformat section=#1,
+ font/titleformat frame=#1,
+ titleformat plain=#1,
+ }
+}
+% \end{macrocode}
+% \end{macro}
+%
+% Set default values for options.
+%
+% \begin{macrocode}
+\newcommand{\moloch@setdefaults}{
+ \pgfkeys{/moloch/.cd,
+ titleformat plain=regular,
+ }
+}
+% \end{macrocode}
+%
% To avoid generating externalized figures of the progressbar we have to disable
% them with ``tikzexternalenable'' and ``tikzexternaldisable''. However, if the
% ``external'' libray is not loaded we would get undefined control sequence
% problems, hence we define them as no-ops if they are not defined yet.
+% We do the same for the ``mmzUnmemoizable'' command from the memoize package, in
+% order to avoid memoization of the progress bars.
%
% \begin{macrocode}
\providecommand{\tikzexternalenable}{}
\providecommand{\tikzexternaldisable}{}
+\providecommand{\mmzUnmemoizable}{}
% \end{macrocode}
%
% \subsubsection{Component sub-packages}
@@ -98,6 +153,7 @@
% \subsubsection{Process package options}
%
% \begin{macrocode}
+\moloch@setdefaults
\ProcessPgfOptions{/moloch}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/beamer-contrib/themes/moloch/moloch.pdf b/macros/latex/contrib/beamer-contrib/themes/moloch/moloch.pdf
index 3607149cef..15f0652a6a 100644
--- a/macros/latex/contrib/beamer-contrib/themes/moloch/moloch.pdf
+++ b/macros/latex/contrib/beamer-contrib/themes/moloch/moloch.pdf
Binary files differ
diff --git a/macros/latex/contrib/beamer-contrib/themes/moloch/moloch.tex b/macros/latex/contrib/beamer-contrib/themes/moloch/moloch.tex
index a9eb326933..c8300607be 100644
--- a/macros/latex/contrib/beamer-contrib/themes/moloch/moloch.tex
+++ b/macros/latex/contrib/beamer-contrib/themes/moloch/moloch.tex
@@ -58,7 +58,7 @@
xrightmargin=0em,
aboveskip=1em,
belowskip=1em,
- morekeywords={usetheme,institute,maketitle,%
+ morekeywords={usetheme,institute,maketitle,@moloch@titleformat,%
plain,setbeamercolor,molochset,setsansfont,setmonofont},
}
\lstMakeShortInline|
@@ -82,7 +82,7 @@
\newcommand{\themename}{\textsf{moloch}\xspace}
-\def\molochversion{0.3.0} % x-release-please-version
+\def\molochversion{0.4.0} % x-release-please-version
\usepackage{readprov}
% \ReadPackageInfos{beamerthememoloch}
@@ -166,10 +166,10 @@ The following code shows a minimal example of a Beamer presentation using
\begin{lstlisting}
\documentclass{beamer}
\usetheme{moloch}
-\title{A minimal example}
+\title{A Minimal Example}
\date{\today}
\author{Johan Larsson}
-\institute{Centre for Modern Beamer Themes}
+\institute{Some University}
\begin{document}
\maketitle
\section{First Section}
@@ -187,6 +187,7 @@ The following code shows a minimal example of a Beamer presentation using
\begin{itemize}
\item |tikz|
\item |pgfopts|
+ \item |etoolbox|
\item |calc|
\end{itemize}
\end{multicols}
@@ -224,6 +225,27 @@ The list of options is structured as shown in the following example.
A short description of the option.
}
+
+\subsubsection{Main theme}
+
+\DescribeOption{titleformat}%
+{regular, smallcaps, allsmallcaps, allcaps}
+{regular}{
+ Changes the format of titles, subtitles, section titles, frame titles, and
+ the text on ``standout'' frames. The available options produce
+ Regular, \textsc{SmallCaps}, \textsc{\MakeLowercase{AllSmallCaps}}, or
+ \MakeUppercase{AllCaps} titles. Note that these commands do not
+ affect math and numbers, so may not work as you expect if your titles
+ contain these.
+}
+
+\DescribeOption{titleformat plain}%
+{regular, smallcaps, allsmallcaps, allcaps}%
+{regular}{
+ Changes the format of ``standout'' frames (see |titleformat|, above).
+}
+
+
\subsubsection{Inner theme}
\DescribeOption{sectionpage}{none, simple, progressbar}{progressbar}{
@@ -270,6 +292,20 @@ The list of options is structured as shown in the following example.
of the reverse.
}
+
+\subsubsection{Font theme}
+
+\DescribeMacro{titleformat title}
+\DescribeMacro{titleformat subtitle}
+\DescribeMacro{titleformat section}
+\DescribeOption{titleformat frame}%
+{regular, smallcaps, allsmallcaps, allcaps}%
+{regular}{
+ Individually controls the format of titles, subtitles, section titles, and
+ frame titles (see |titleformat|, above).
+}
+
+
\subsection{Color Customization}
The included \themename color theme is used by default, but its colors can be
@@ -321,6 +357,18 @@ single sentence or image. To use it, add the key |standout| to the frame:
\section{Known Issues}
+\subsection{Title Formats}
+
+Be aware that not every font supports small caps, so the |smallcaps| or
+|allsmallcaps| options may not work for all fonts.
+In particular, the Computer Modern sans-serif typeface, which is used
+by default when \themename is compiled with pdf\LaTeX, does not have a
+small-caps variant.
+
+Note that title format options |allsmallcaps| and |allcaps| do not
+affect the sizes of numerals, punctuation, and math symbol, and are
+probably best avoided if your titles contain these characters.
+
\subsection{Interactions with other color themes}
\themename can be used along with any other Beamer color theme, such as
@@ -412,7 +460,7 @@ solution for Org mode users, using |org-set-property|.
\subsection{Standout frames with Pandoc}
-With Pandoc versions prior 1.17.2 it was not possible to create standout frames
+With Pandoc versions prior to 1.17.2 it was not possible to create standout frames
because Pandoc only supported a specific list of frame attributes thus ignoring
additional attributes such as |{.standout}|.
diff --git a/macros/latex/contrib/beautybook/Beautybook-EN.cls b/macros/latex/contrib/beautybook/Beautybook-EN.cls
deleted file mode 100644
index 63e3e038df..0000000000
--- a/macros/latex/contrib/beautybook/Beautybook-EN.cls
+++ /dev/null
@@ -1,1166 +0,0 @@
-%This Class is based on the default book class and options will be passed
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{Beautybook-EN}[02-10-2023 V8.0 Beautybook Class]
-\DeclareOption*{\PassOptionsToClass{\CurrentOption}{book}}
-\ProcessOptions\relax
-\LoadClass[twoside]{book}
-\RequirePackage[dvipsnames,svgnames,x11names,table]{xcolor}
-\RequirePackage{cncolours}
-\RequirePackage[utf8]{inputenc} % UTF-8编码
-\RequirePackage{times} % Times New Roman Font
-\RequirePackage[T1]{fontenc}
-\RequirePackage{microtype} % 字体间距调整
-\colorlet{outermarginfgcolor}{DarkCyan} % foregroundcolor 较深
-\colorlet{outermarginbgcolor}{DarkCyan!30} % backgroundcolor 较浅
-\RequirePackage{bropd} % math 自适应数学括号命令 \br{} !!!
-\RequirePackage{tikz-imagelabels} % tikz图像标注
-\RequirePackage{epigraph-keys} % 名言引用
-\RequirePackage{fitbox} % 图像自适应
-\RequirePackage{pgfornament-han}
-\RequirePackage{tikz}
-\usetikzlibrary{calc,shadows,hobby,intersections, decorations.markings, decorations.pathreplacing,spy,arrows,shapes,fadings,trees,mindmap,patterns,shapes.arrows,shapes.symbols,tikzmark,shapes.geometric,graphs, quotes, angles,decorations.pathmorphing,through,shadings,backgrounds,positioning,fit,arrows.meta,shapes.misc,decorations.shapes}
-\RequirePackage{pgfplots} %画图 %%页面样式设计核心包 %提供\pgfonlayer命令以及下列图层指令
-\pgfplotsset{compat=1.18}
-%
-\ExplSyntaxOn
-% 封面切换程序 (LaTeX3)!
-\keys_define:nn {Beautybook/coverstyle}
- {
- cover-choose.choice:,
- cover-choose.value_required:n = true,
- cover-choose/cn.code:n = {\RequirePackage{stys/Beautybook-cover-cn}},
- cover-choose/en.code:n = {\RequirePackage{stys/Beautybook-cover-en}},
- cover-choose/enfig.code:n = {\RequirePackage{stys/Beautybook-cover-enfig}},
- cover-choose/birkar.code:n = {\RequirePackage{stys/Beautybook-cover-birkar}},
- %cover-choose .initial:n = en , % 设置 en 为初始值
- }
-\newtoks \l__Beautybook_tmpa_toks
-\cs_new_protected:Npn \coverstyle
- {
- \tex_afterassignment:D \__Beautybook_set_coverstyle:
- \l__Beautybook_tmpa_toks
- }
-\cs_new:Npn \__Beautybook_set_coverstyle:
- { \keys_set:nV { Beautybook / coverstyle } \l__Beautybook_tmpa_toks }
-% Math fonts
-\keys_define:nn {Beautybook/mathstyle}
- {
- math-font.choice:,
- math-font.value_required:n = true,
- math-font/plain.code:n={},
- math-font/stix.code:n={
- \RequirePackage{stix}
- },
- math-font/mtpro2.code:n = {
- \RequirePackage{mtpro2}
- \RequirePackage{bm}
- \DeclareFontFamily{U}{nxlmi}{}
- \DeclareFontSubstitution{U}{nxlmi}{m}{it}
- \DeclareFontShape{U}{nxlmi}{m}{it}{
- <-6.3> nxlmi05
- <6.3-8.6> nxlmi07
- <8.6-> nxlmi0
- }{}
-
- \DeclareFontShape{U}{nxlmi}{b}{it}{
- <-6.3> nxlbmi05
- <6.3-8.6> nxlbmi07
- <8.6-> nxlbmi0
- }{}
- \renewcommand{\partial}{{\text{\usefont{U}{nxlmi}{m}{it}\symbol{64}}\mspace{1mu}}}
- },
- %cover-choose .initial:n = plain , % 设置 en 为初始值
- }
-\cs_new_protected:Npn \mathstyle
- {
- \tex_afterassignment:D \__Beautybook_set_mathstyle:
- \l__Beautybook_tmpa_toks
- }
-\cs_new:Npn \__Beautybook_set_mathstyle:
- { \keys_set:nV { Beautybook / mathstyle } \l__Beautybook_tmpa_toks }
-\ExplSyntaxOff
-\RequirePackage{stys/Beautybook-bottompage} %封底
-\RequirePackage{rotating}
-\tikzset{>=Stealth}
-\setlist{font=\upshape} % 取消所有列表默认距离 nosep,
-% 浮动环境设置
-% 默认情况下, \LaTeX{} 要求每页的文字至少占据 20%,否则该页就只单独放置一个浮动环境,
-% 而这通常不是我们想要的, 我们将这个要求降低到 5%.
-\renewcommand*{\textfraction}{0.05}
-% 有时如果多个浮动环境连续放在一起,
-% 会将它们分在几个不同页,即使它们可在同一页放
-% 得下. 我们可以通过修改 |\topfraction| 和 |\bottomfraction| 分别设置顶端和底端的浮
-% 动环境的最大比例.
-\renewcommand*{\topfraction}{0.9}
-\renewcommand*{\bottomfraction}{0.8}
-% 有时\LaTeX{}会把一个浮动环境单独放在一页,
-% 我们要求这个环境至少要占据 85% 才能单独放在一页.
-% 注意: |\floatpagefraction| 的数值必须小于 |\topfraction|.
-\renewcommand*{\floatpagefraction}{0.85}
-% 关于图片 graphicx
-% 如果图片没有指定后缀, 依次按下列顺序搜索
-\DeclareGraphicsExtensions{.pdf,.eps,.jpg,.png}
-% 设置图表搜索路径, 可以给图表文件夹取如下名字
-\graphicspath{{inner_pics/}{inner_pics/titleimages/}{figures/}{figure/}{pictures/}{picture/}{pic/}{pics/}{image/}{images/}}
-% \RequirePackage[physics]{stys/physicx}
-% \RequirePackage{stys/Symbols}
-\RequirePackage{extarrows}
-\usetikzlibrary{tikzmark}
-% \arrowname{super-script}
-% \arrowname[sub-script]{super-script}
-\RequirePackage{appendix} % 附录
-% \RequirePackage{stys/symbols}
-%
-\RequirePackage{amssymb,amsfonts,upgreek}
-\RequirePackage{makeidx}
-\RequirePackage{etoolbox} % 判断函数
-\RequirePackage{paracol}
-\RequirePackage{tikz-cd}
-\RequirePackage{imakeidx}
-\RequirePackage{anyfontsize}
-\RequirePackage{calc}
-\RequirePackage{xkeyval,ifthen}
-\RequirePackage[backgroundcolor=yellow!40!cyan!20,bordercolor=yellow!40!cyan!20,linecolor=DarkCyan]{todonotes}
-\RequirePackage{varwidth}
-\RequirePackage[colorlinks,linkcolor = purple, %%修改此处为你想要的颜色
-anchorcolor = purple, %%修改此处为你想要的颜色
-urlcolor = purple, %%修改此处为你想要的颜色
-citecolor = purple, %%修改此处为你想要的颜色
-]{hyperref}
-\setcounter{tocdepth}{3}
-\setcounter{secnumdepth}{3}%增加编号深度
-\RequirePackage{dashrule}
-\newlength\outermarginwidth
-\setlength\outermarginwidth{1.5cm}
-\newlength\covershift
-\setlength\covershift{5cm}
-\RequirePackage{caption}
-% 图注与表注格式
-\colorlet{captioncolor}{outermarginfgcolor} % 图片和表格题注文字颜色
-\makeatletter
-%%----------------------------------封面信息定义--------------------------------------------------------%%
-\newcommand\bookseries[1]{\def\@bookseries{#1}}
-\newcommand\subtitle[1]{\def\@subtitle{#1}}
-\newcommand\edition[1]{\def\@edition{#1}}
-\newcommand\presslogo[1]{\def\@presslogo{#1}}
-\newcommand\pressname[1]{\def\@pressname{#1}}
-\newcommand\coverimage[1]{\def\@coverimage{#1}}
-\newcommand\chapimage[1]{\def\@chapimage{#1}}
-%%----------------------------------封面信息定义--------------------------------------------------------%%
-\makeatother
-\RequirePackage{indentfirst}
-\RequirePackage{amsmath}
-\RequirePackage[left=2cm,right=2cm,top=.6cm,bottom=2.2cm]{geometry}
-\RequirePackage{xpatch}%修正章节编号
-\RequirePackage[automark]{scrlayer-scrpage}%页面设置宏包,隶属于koma-script文档类
-\RequirePackage{fontawesome5}
-\RequirePackage{mathrsfs}
-\RequirePackage[most]{tcolorbox}
-\tcbuselibrary{breakable, skins,theorems}%TcolorBox Library
-\RequirePackage{tabularx}
-\RequirePackage{lastpage}
-%\RequirePackage{twemojis}
-\RequirePackage{ninecolors}
-\RequirePackage{colortbl} %彩色表格
-\RequirePackage{tabularray}
-\UseTblrLibrary{amsmath}
-% 定义 +array, +matrix, +bmatrix, +Bmatrix, +pmatrix, +vmatrix, +Vmatrix 和 +cases 环境。其
-% 中,每一个环境都类似于不带 + 前缀的环境,但是就像 tblr 环境一样,使用 rowsep=2pt 默认值。
-% 除了+array 环境外,其余的每个环境都可以带一个可选项,通过该可选项,可能为环境设置内部
-% 参数。
-\UseTblrLibrary{booktabs} % 定义 \toprule、 \midrule、\bottomrule 和 \cmidrule 命令,这些命令可以直接用于 tblr环境中
-\UseTblrLibrary{diagbox} % 在tblr 环境中使用 \diagbox 和\diagboxthree 命令排版斜线表头
-\UseTblrLibrary{varwidth} % 为表格添加 measure 内部参数。当设置了 measure=vbox 后,则会使用 \vbox 测量单元格宽度。%可以使用stretch=-1 移除列表环境上下的间距, 注意,stretch=-1 选项也会移除单元格中的支架
-\RequirePackage{pgfornament}
-\RequirePackage{zhnumber}
-\RequirePackage{dashrule}
-\RequirePackage{adjustbox}
-\RequirePackage{enumitem}
-\RequirePackage{multicol}
-\RequirePackage{amsthm}
-\RequirePackage{thmtools,thm-restate}%定理环境 %定理的重写
-\RequirePackage{bclogo}
-\RequirePackage[normalem]{ulem}
-\RequirePackage{pgfplots} %画图 %%页面样式设计核心包 %提供\pgfonlayer命令以及下列图层指令
-\pgfplotsset{compat=1.18}
-\RequirePackage{graphicx}%修正minipage顶部对齐问题
-\pgfdeclarelayer{background} %背景%底层
-\pgfdeclarelayer{foreground} %上层
-\pgfdeclarelayer{top} %顶部
-\pgfdeclarelayer{bottom} %底部
-\pgfsetlayers{bottom,background,main,foreground,top}
-\newcommand{\tikzoverlay}[1]{\begin{tikzpicture}[remember picture,overlay] #1 \end{tikzpicture}}
-\RequirePackage[explicit]{titlesec}
-\RequirePackage{titletoc}
-
-\newcommand\boxednum[1]
-{
-\tcbsidebyside[sidebyside adapt=left,
-nobeforeafter,fontupper=\sffamily\large\bfseries,fontlower=\large,colframe=white,colupper=white,colback=outermarginfgcolor!90,colbacklower=gray!10,frame hidden,width =\textwidth,
-top=0mm,bottom=0mm,right=0mm,left=2mm,before skip balanced=0em,after skip balanced=0em,arc=0pt,outer arc=0pt,bicolor,sidebyside gap=6mm,boxrule=0pt,sidebyside align=center,halign=center,halign lower=left,fuzzy shadow={-0.4mm}{0.4mm}{0mm}{0.2mm}{white!50!gray},% 上
-fuzzy shadow={0.4mm}{-0.4mm}{0mm}{0.2mm}{fill=white!40!gray},%下
-]{% left hand side % adjust from this side
-\thecontentslabel
-}{% right hand side
-\textbf{#1} \hfill \thecontentspage
-}% end
-}
-
-\newcommand\boxednonum[1]
-{
-\begin{tcolorbox}[nobeforeafter,fontupper=\large,fontlower=\large,colframe=white,fontupper=\sffamily\bfseries,colupper=white,colback=outermarginfgcolor!90,colbacklower=gray!10,frame hidden,width = \textwidth,sidebyside gap=6mm,
-top=0mm,bottom=0mm,right=0cm,left=2mm,before skip balanced=0em,after skip balanced=0em,arc=0pt,outer arc=0pt,bicolor,sidebyside,boxrule=0pt,sidebyside align=center,halign=center,halign lower=left,lefthand width=3mm,fuzzy shadow={-0.4mm}{0.4mm}{0mm}{0.2mm}{white!50!gray},% 上
-fuzzy shadow={0.4mm}{-0.4mm}{0mm}{0.2mm}{fill=white!40!gray},%下
-]
-\tcblower \textbf{#1}\hfill \thecontentspage
-\end{tcolorbox}
-}
-%
-\titlecontents{chapter}[0mm]
- {\addvspace{-.5em}}
- {\contentsmargin{0pt}\boxednum}
- {\contentsmargin{0pt}\boxednonum}
- {}
- [\addvspace{-.5em}]
-%
- \titlecontents{section}
- [4.5em] % ie, 1.5em (chapter) + 2.3em
- {}
- {\hyperlink{section.\thecontentslabel}{\contentslabel{2.2em}}}
- {\hspace*{-2.2em}}
- {\titlerule*[1pc]{.}\contentspage\hspace*{1.5mm}}
-%
- \titlecontents{subsection}
- [7.3em] % ie, 1.5em (chapter) + 2.3em
- {}
- {\hyperlink{subsection.\thecontentslabel}{\contentslabel{2.7em}}}
- {\hspace*{-2.7em}}
- {\titlerule*[1pc]{.}\contentspage\hspace*{1.5mm}}
-%
- \titlecontents{subsubsection}
- [10.7em] % ie, 1.5em (chapter) + 2.3em
- {}
- {\hyperlink{subsubsection.\thecontentslabel}{\contentslabel{3.3em}}}
- {\hspace*{-3.3em}}
- {\titlerule*[1pc]{.}\contentspage\hspace*{1.5mm}}
-
-% tcolorbox中插入图片或者tikz绘图方法
-\newcommand\Figure[4]{%
- \begin{center}
- \captionsetup{type=figure} %消除 Package caption Warning: The option `hypcap=true' will be ignored for this
-%(caption) particular \caption on input line XX.警告信息
- \includegraphics[#1]{#2}
- \captionof{figure}{#3}\label{#4}
- \end{center}
-}%用法 : 用于tcolorbox中插入图片
-\newcommand\Tikz[3]{%
- \begin{center}
- \captionsetup{type=figure} %消除 Package caption Warning: The option `hypcap=true' will be ignored for this(caption) particular \caption on input line XX.警告信息
- #3 %最后一个参数为Tikz画图代码窗口
- \captionof{figure}{#1}\label{#2} %第一与第二个参数是Tikz画图的名称与标签
- \end{center}
-} %用法 : 用于tcolorbox中插入Tikz绘图
-%特殊注释矩阵
-\newcommand\coolover[2]{\mathrlap{\smash{\overbrace{\phantom{%
- \begin{matrix} #2 \end{matrix}}}^{\mbox{$#1$}}}}#2}
-
-\newcommand\coolunder[2]{\mathrlap{\smash{\underbrace{\phantom{%
- \begin{matrix} #2 \end{matrix}}}_{\mbox{$#1$}}}}#2}
-
-\newcommand\coolleftbrace[2]{%
- #1\left\{\vphantom{\begin{matrix} #2 \end{matrix}}\right.}
-
-\newcommand\coolrightbrace[2]{%
- \left.\vphantom{\begin{matrix} #1 \end{matrix}}\right\}#2}
-\definecolor{lightergray}{gray}{0.99}
-
-\newcommand*{\circled}[1]{\lower.7ex\hbox{\tikz\draw (0pt, 0pt)%
- circle (.5em) node {\makebox[1em][c]{\small #1}};}}
-\newcommand{\twicecircle}{\raisebox{.7ex}{
- \begin{tikzpicture}[remember picture,overlay]
- \draw[line width=0.6pt,black!60] (0,0) circle (3pt);
- \fill[black] (0,0) circle (1.6pt) ;
- \end{tikzpicture}}
-}
-\newcommand{\exercise}[2][\bcicosaedre]{\bigskip
-\begin{tikzpicture}[remember picture,overlay]
-\draw[line width=2pt,loosely dotted,teal] (0,0)--node[pos=0.4,rectangle,minimum height=1.5em,font=\sffamily\Large,text=black,fill=black!2,drop shadow={opacity=.3, shadow xshift=0.1cm},anchor=center,
- inner sep=1.5mm,
- anchor=west,] {$#1$ ~ #2} (\linewidth,0);
-\end{tikzpicture}\bigskip\smallskip
-}
-\RequirePackage{extarrows}
-\newcommand{\R}{\mathbb{R}}
-\newcommand{\F}{\mathcal{F}}
-\newcommand{\lan}[1]{\langle #1 \rangle}
-\newenvironment{eq}[1]{\begin{equation}\begin{aligned}#1}{\end{aligned}\end{equation}} %有编号
-\newenvironment{eq*}[1]{\begin{equation*}\begin{aligned}#1}{\end{aligned}\end{equation*}} %无编号
-% \everymath{\displaystyle}
-
-%% -------- 章节样式
-\makeatletter
-% titleimage
-\ExplSyntaxOn
-\seq_new:N \g__Beautybook_chapter_oimage_seq % odd
-\seq_new:N \g__Beautybook_chapter_eimage_seq % even
-\seq_new:N \g__Beautybook_part_oimage_seq % odd
-\seq_new:N \g__Beautybook_part_eimage_seq % even
-%
-\keys_define:nn { Beautybook/titleimage }
- {
- chapteroddimage .code:n =
- \seq_gset_from_clist:Nn \g__Beautybook_chapter_oimage_seq {#1} ,
- chapterevenimage .code:n =
- \seq_gset_from_clist:Nn \g__Beautybook_chapter_eimage_seq {#1} ,
- partoddimage .code:n =
- \seq_gset_from_clist:Nn \g__Beautybook_part_oimage_seq {#1} ,
- partevenimage .code:n =
- \seq_gset_from_clist:Nn \g__Beautybook_part_eimage_seq {#1} ,
- }
-\cs_new:Npn \__Beautybook_title_image:Nn #1#2 % image seq, number
- { \seq_item:Nn #1 { \int_mod:nn {#2} { \seq_count:N #1 } + 1 } } %对照表-对录入的字符串进行编号
-\cs_new:Npn \Beautybook@chapterimagename %生成索契表 : 判断奇偶数页并按(章节编号)!!读取相应的列表组中的字符串
- {
- \int_if_odd:nTF { \value{page} }
- { \__Beautybook_title_image:Nn \g__Beautybook_chapter_oimage_seq { \value{chapter} } }
- { \__Beautybook_title_image:Nn \g__Beautybook_chapter_eimage_seq { \value{chapter} } }
- }
-\cs_new:Npn \Beautybook@partimagename
- {
- \int_if_odd:nTF { \value{page} }
- { \__Beautybook_title_image:Nn \g__Beautybook_part_oimage_seq { \value{part} } }
- { \__Beautybook_title_image:Nn \g__Beautybook_part_eimage_seq { \value{part} } }
- }
-\cs_new_protected:Npn \titleimage #1
- { \keys_set:nn { Beautybook/titleimage } {#1} }
-\ExplSyntaxOff
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\titleformat{\chapter}{\huge\bfseries\filcenter}{}{1em}{
- \makebox[0pt][l]{\def\rad{7pt}%
- \begin{tikzpicture}[remember picture, overlay]%
- \begin{pgfonlayer}{bottom}
- \ifodd\value{page}
- \shade[right color=outermarginbgcolor!30,middle color=outermarginbgcolor!50,left color=outermarginfgcolor!30] (current page.north west) rectangle ++(\paperwidth,-.2\paperheight); % background odd
- \else
- \shade[left color=outermarginbgcolor!30,middle color=outermarginbgcolor!50,right color=outermarginfgcolor!30] (current page.north west) rectangle ++(\paperwidth,-.2\paperheight); % background even
- \fi
- \fill[outermarginfgcolor,opacity=.5]([shift={(0,-4.45cm)}]current page.north west) rectangle ++(\paperwidth,-2mm); % line
- \end{pgfonlayer}
- \path[fill=outermarginfgcolor]node[append after command={
- ([xshift=-3*\rad]chapinfoofpart.north west) to[out=0,in=-180,looseness=1] ([xshift=\rad]chapinfoofpart.south west) --([xshift=-\rad]chapinfoofpart.south east) to[out=0,in=180,looseness=1] ([xshift=3*\rad]chapinfoofpart.north east) --cycle},
- text=white,font=\sffamily\large\bfseries,align=center,minimum height=1cm] (chapinfoofpart) at ([shift={(.6\linewidth,-4.95cm)}]current page.north west) {Part\ \thepart};
- \begin{pgfonlayer}{bottom}
- \fill[outermarginfgcolor!90,opacity=0.5] ([shift={(-3*\rad,0)}]chapinfoofpart.north west) to[out=180,in=0,looseness=1] +(-4*\rad,-1.2cm)--([shift={(7*\rad,-1.2cm)}]chapinfoofpart.north east) to[out=-180,in=0,looseness=1] +(-4*\rad,1.2cm); % partnumber shade
- \end{pgfonlayer}
- \ifodd\value{page}
- \begin{pgfonlayer}{top}
- \fill[outermarginfgcolor,opacity=0.7,rounded corners=5pt]node[append after command={([yshift=2cm]chapnum.north west) rectangle (chapnum.south east)},right,text=white,minimum width=2cm,align=center,font=\sffamily\bfseries] (chapnum) at ([shift={(1.5cm,-2.5cm)}]current page.north west) {\scalebox{3}{\thechapter}};
- \begin{pgfonlayer}{foreground}
- \pattern[pattern=sixpointed stars,pattern color=white,opacity=1.0,rounded corners=5pt]
- ([yshift=2cm]chapnum.north west) rectangle (chapnum.south east);
- \end{pgfonlayer}
- \fill [outermarginfgcolor,path fading=fade up,rounded corners=5pt]%
- ([yshift=2cm]chapnum.north west) rectangle (chapnum.south east);
- \node[above left,font=\sc\fontsize{22pt}{22pt}\selectfont,align=center] (contents name) at ([shift={(0cm,-4.45cm)}]current page.north east) {\begin{varwidth}{.7\linewidth}\baselineskip=2ex #1\end{varwidth}};
- \end{pgfonlayer}
- \begin{pgfonlayer}{bottom}
- \node[right] (image) at ([shift={(-0.5cm,-2.8cm)}]current page.north west) {\includegraphics[width=7cm]{\@chapimage}};
- \end{pgfonlayer}
- \else
- \begin{pgfonlayer}{top}
- \fill[outermarginfgcolor,opacity=0.7,rounded corners=5pt]node[append after command={([yshift=2cm]chapnum.north west) rectangle (chapnum.south east)},left,text=white,minimum width=2cm,align=center,font=\sffamily\bfseries] (chapnum) at ([shift={(-1.5cm,-2.5cm)}]current page.north east) {\scalebox{3}{\thechapter}};
- \begin{pgfonlayer}{foreground}
- \pattern[pattern=sixpointed stars,pattern color=white,opacity=1.0,rounded corners=5pt]
- ([yshift=2cm]chapnum.north west) rectangle (chapnum.south east);
- \end{pgfonlayer}
- \fill [outermarginfgcolor,path fading=fade up,rounded corners=5pt]%
- ([yshift=2cm]chapnum.north west) rectangle (chapnum.south east);
- \node[above right,font=\sc\fontsize{22pt}{22pt}\selectfont,align=center] (contents name) at ([shift={(0cm,-4.45cm)}]current page.north west) {\begin{varwidth}{.7\linewidth}\baselineskip=2ex #1\end{varwidth}};
- \end{pgfonlayer}
- \begin{pgfonlayer}{background}
- \node[left] (image) at ([shift={(0.5cm,-2.8cm)}]current page.north east) {\includegraphics[width=7cm]{\@chapimage}};
- \end{pgfonlayer}
- \fi
- \path[fill=outermarginbgcolor]node[append after command={
- ([xshift=-2*\rad]pagenumber.south west) to[out=0,in=180,looseness=1] ([xshift=\rad]pagenumber.north west) --([xshift=-\rad]pagenumber.north east) to[out=0,in=-180,looseness=1] ([xshift=2*\rad]pagenumber.south east) --cycle},
- text=outermarginfgcolor,font=\sffamily\fontsize{15}{15}\selectfont\bfseries,align=center,minimum height=0.4cm,minimum width=1.3cm,inner sep=1.5mm] (pagenumber) at ([shift={(0,0.3cm)}]current page.south) {\thepage};
- \end{tikzpicture}}
- }
-\titleformat{name=\chapter,numberless}{\bfseries\huge\filcenter}{}{1em}{
- \makebox[0pt][l]{\def\rad{7pt}%
- \begin{tikzpicture}[remember picture, overlay]%
- \begin{pgfonlayer}{bottom}
- \ifodd\value{page}
- \shade[right color=outermarginbgcolor!30,middle color=outermarginbgcolor!50,left color=outermarginfgcolor!30] (current page.north west) rectangle ++(\paperwidth,-.2\paperheight); % background odd
- \else
- \shade[left color=outermarginbgcolor!30,middle color=outermarginbgcolor!50,right color=outermarginfgcolor!30] (current page.north west) rectangle ++(\paperwidth,-.2\paperheight); % background even
- \fi
- \fill[outermarginfgcolor,opacity=.5]([shift={(0,-4.45cm)}]current page.north west) rectangle ++(\paperwidth,-2mm); % line
- \end{pgfonlayer}
- \ifodd\value{page}
- \begin{pgfonlayer}{top}
- \node[above left,font=\sc\fontsize{25pt}{25pt}\selectfont,align=center] (contents name) at ([shift={(0cm,-4.45cm)}]current page.north east) {\begin{varwidth}{.7\linewidth}\baselineskip=2ex #1\end{varwidth}};
- \end{pgfonlayer}
- \begin{pgfonlayer}{bottom}
- \node[right] (image) at ([shift={(-0.5cm,-2.8cm)}]current page.north west) {\includegraphics[width=7cm]{\@chapimage}};
- \end{pgfonlayer}
- \else
- \begin{pgfonlayer}{top}
- \node[above right,font=\sc\fontsize{25pt}{25pt}\selectfont,align=center] (contents name) at ([shift={(0cm,-4.45cm)}]current page.north west) {\begin{varwidth}{.7\linewidth}\baselineskip=2ex #1\end{varwidth}};
- \end{pgfonlayer}
- \begin{pgfonlayer}{background}
- \node[left] (image) at ([shift={(0.5cm,-2.8cm)}]current page.north east) {\includegraphics[width=7cm]{\@chapimage}};
- \end{pgfonlayer}
- \fi
- \path[fill=outermarginbgcolor]node[append after command={
- ([xshift=-2*\rad]pagenumber.south west) to[out=0,in=180,looseness=1] ([xshift=\rad]pagenumber.north west) --([xshift=-\rad]pagenumber.north east) to[out=0,in=-180,looseness=1] ([xshift=2*\rad]pagenumber.south east) --cycle},
- text=outermarginfgcolor,font=\sffamily\fontsize{15}{15}\selectfont\bfseries,align=center,minimum height=0.4cm,minimum width=1.3cm,inner sep=1.5mm] (pagenumber) at ([shift={(0,0.3cm)}]current page.south) {\thepage};
- \end{tikzpicture}}
-}
-\titlespacing{\chapter}{0pt}{0pt}{80pt}
-\makeatother
-% -------- Part定制
-\tikzfading[name=middle, top color=transparent!90, bottom
-color=transparent!90, middle color=transparent!20]
-\makeatletter
-\newcommand\partabstract[1]{\def\@partabstract{#1}}
-\newcommand\partimage[1]{\def\@partimage{#1}}
-\titleformat{\part}
-{\normalfont\huge\filcenter}
-{}
-{20pt}
-{\begin{tikzpicture}[remember picture,overlay]
- \def\barwidth{2cm}
- \fill[outermarginbgcolor,opacity=0.6]
- (current page.north west) rectangle (current page.south east);
- \ifodd\value{page}
- \fill [outermarginfgcolor!20]%
- (current page.north east) rectangle ++(-\outermarginwidth,-\paperheight);
- \pattern [pattern=north east lines,pattern color=outermarginfgcolor!50]%
- (current page.north east) rectangle ++(-\outermarginwidth,-\paperheight);
- \fill [outermarginbgcolor!90,path fading=fade south]%
- ([yshift=1mm]current page.north east) rectangle ++(-\outermarginwidth,-.8\paperheight);
- \fill [outermarginbgcolor,path fading=fade north]%
- (current page.south east) rectangle ++(-\outermarginwidth,.8\paperheight);%
- % lines
- \fill[outermarginfgcolor,rounded corners=2pt] (current page.north east) --++(-5pt,-0.15cm)--++(-\outermarginwidth+10pt,0) --++(-5pt,0.15cm)--cycle;
- \coordinate (anchor of headmark) at ([shift={(-1.2\outermarginwidth,-0.2cm)}]current page.north east);
- \node[below ,text=outermarginfgcolor,font=\sffamily\bfseries\fontsize{15}{20}\selectfont] (partpagenum) at ([shift={(-.5\outermarginwidth,0)}]current page.north east) {\thepage};
- \fill[outermarginfgcolor,rounded corners=2pt] (current page.south east) --++(-5pt,0.15cm)--++(-\outermarginwidth+10pt,0) --++(-5pt,-0.15cm)--cycle; % 页码横线
- \node[] (hbar) at ($(current page.north)!0.33!(current page.south)$) {
- \begin{tikzpicture}
- \fill[white]
- (0,0) rectangle ++(\paperwidth,-1cm);
- \fill[outermarginbgcolor]
- (0,-.25cm) rectangle ++(\paperwidth,-.5cm);
- \fill[outermarginfgcolor]
- (.67\paperwidth,-.25cm) rectangle ++(4.5cm,-.5cm);
- \fill[outermarginfgcolor!20!white]
- (.67\paperwidth-1mm,-.25cm) rectangle ++(1mm,-.5cm);
- \fill[outermarginfgcolor!20!white]
- (.67\paperwidth+4.4cm,-.25cm) rectangle ++(1mm,-.5cm);
- \end{tikzpicture}
- };
- \node[above,font=\sc\huge,shift={(.33\linewidth,.5\barwidth)}] (partname) at (hbar) {Part\ \thepart};
- \node[below,left,font=\sc\huge,shift={(.146\linewidth,-1.5*\barwidth)}] (partcontents) at (partname) {\begin{varwidth}{.8\linewidth}\raggedright\baselineskip=2ex #1 \end{varwidth}}; % 标题名称
- \begin{pgfonlayer}{background}
- \node[above,shift={(-.4\linewidth,-4*\barwidth)}] at (partname) {\ifdefvoid{\@partimage}{}{\includegraphics[width=1.2\linewidth]{\@partimage}}}; % 图片位置调整
- \end{pgfonlayer}
- \else
- \fill [outermarginfgcolor!20]%
- (current page.north west) rectangle ++(\outermarginwidth,-\paperheight);
- \pattern [pattern=north west lines,pattern color=outermarginfgcolor!50]%
- (current page.north west) rectangle ++(\outermarginwidth,-\paperheight);
- \fill [outermarginbgcolor!90,path fading=fade south]%
- ([yshift=1mm]current page.north west) rectangle ++(\outermarginwidth,-.8\paperheight);
- \fill [outermarginbgcolor,path fading=fade north]%
- (current page.south west) rectangle ++(\outermarginwidth,.8\paperheight);%
- % lines
- \fill[outermarginfgcolor,rounded corners=2pt] (current page.north west) --++(5pt,-0.15cm)--++(\outermarginwidth-10pt,0) --++(5pt,0.15cm)--cycle;
- \coordinate (anchor of headmark) at ([shift={(1.2\outermarginwidth,-0.2cm)}]current page.north west);
- \node[below ,text=outermarginfgcolor,font=\sffamily\bfseries\fontsize{15}{20}\selectfont] (partpagenum) at ([shift={(.5\outermarginwidth,0)}]current page.north west) {\thepage};
- \fill[outermarginfgcolor,rounded corners=2pt] (current page.south west) --++(5pt,0.15cm)--++(\outermarginwidth-10pt,0) --++(5pt,-0.15cm)--cycle; % 页码横线
- \node[] (hbar) at ($(current page.north)!0.33!(current page.south)$) {
- \begin{tikzpicture}
- \fill[white]
- (0,0) rectangle ++(\paperwidth,-1cm);
- \fill[outermarginbgcolor]
- (0,-.25cm) rectangle ++(\paperwidth,-.5cm);
- \fill[outermarginfgcolor]
- (.15\paperwidth,-.25cm) rectangle ++(4.5cm,-.5cm);
- \fill[outermarginfgcolor!20!white]
- (.15\paperwidth-1mm,-.25cm) rectangle ++(1mm,-.5cm);
- \fill[outermarginfgcolor!20!white]
- (.15\paperwidth+4.5cm,-.25cm) rectangle ++(1mm,-.5cm);
- \end{tikzpicture}
- };
- \node[above,font=\sc\huge,shift={(-.31\linewidth,.5\barwidth)}] (partname) at (hbar) {Part\ \thepart};
- \node[below right,font=\sc\huge,shift={(-.125\linewidth,-1.2*\barwidth)}] (partcontents) at (partname) {\begin{varwidth}{.8\linewidth}\raggedright\baselineskip=2ex #1 \end{varwidth}}; % 标题名称
- \begin{pgfonlayer}{background}
- \node[above,shift={(.35\linewidth,-4*\barwidth)}] at (partname) {\ifdefvoid{\@partimage}{}{\includegraphics[width=1.2\linewidth]{\@partimage}}}; % 图片位置调整
- \end{pgfonlayer}
- \fi
- \node[below,,font=\itshape\fontsize{13}{13}\selectfont,shift={(0\linewidth,-1.65*\barwidth)}] at (hbar) {\ifdefvoid{\@partabstract}{}{\begin{varwidth}{.85\linewidth}\baselineskip=3ex \@partabstract\end{varwidth}}}; % 简介文字调整
- \end{tikzpicture}}
-\makeatother
-\assignpagestyle{\part}{empty}
-\assignpagestyle{\chapter}{empty}
-
-
-%% -- Section
-\titleformat{\section}
-{}
-{}
-{-.5em} %左右移动\thesection标签位置
-{\mysectionformat{#1}}
-
-\titleformat{name=\section,numberless}{}{}{-.5em}{\mysectionnonumformat{#1}}
-
-\newcommand{\mysectionformat}[1]{%
-\makebox[0pt][l]{\def\rad{7pt}%
-\begin{tikzpicture}[remember picture]
- \path[fill=outermarginfgcolor,drop shadow={opacity=0.3,shadow xshift=.05cm,shadow yshift=-.05cm}]node[append after command={
- ([xshift=\rad]sec.north west) to[out=180,in=0,looseness=1] ([xshift=-3*\rad]sec.south west) --([xshift=-\rad]sec.south east) to[out=0,in=180,looseness=1] ([xshift=3*\rad]sec.north east) --cycle},
- text=white,font=\sffamily\large\bfseries,align=center,inner ysep=2mm] (sec) at (0,0) {Sec\ \thesection};
- \node[text=black,font=\large,below right] (secnum) at ([shift={(0,-1mm)}]sec.north east) {\begin{varwidth}{.85\linewidth}\setlength\baselineskip{18pt}\hspace{.5cm}#1\end{varwidth}};
-\end{tikzpicture}}}%最后一个选项为 [<after code>]
-
-\newcommand{\mysectionnonumformat}[1]{%
-\makebox[0pt][l]{\def\rad{7pt}%
-\begin{tikzpicture}[remember picture]
- \path[fill=outermarginfgcolor,drop shadow={opacity=0.3,shadow xshift=.05cm,shadow yshift=-.05cm}]node[append after command={
- ([xshift=\rad]sec.north west) to[out=180,in=0,looseness=1] ([xshift=-3*\rad]sec.south west) --([xshift=-\rad]sec.south east) to[out=0,in=180,looseness=1] ([xshift=3*\rad]sec.north east) --cycle},
- text=white,font=\sffamily\large\bfseries,align=center,inner ysep=2mm] (sec) at (0,0) {Sec};
- \node[text=black,font=\large,below right] (secnum) at ([shift={(0,-1mm)}]sec.north east) {\begin{varwidth}{.85\linewidth}\setlength\baselineskip{18pt}\hspace{.5cm}#1\end{varwidth}};
-\end{tikzpicture}}}%最后一个选项为 [<after code>]
-
-\titlespacing*{\section}{0pt}{3.5ex plus 1ex minus .2ex}{2.3ex plus .2ex}
-
-%%-------------------------------- SCRLAYER-SCRPAGE -------------------------------------%%
-%% SIDE-BAR
-\newlength\chapternumbersize
-\setlength\chapternumbersize{36pt}
-\setlength{\headheight}{40pt} % 页眉高度
-\renewcommand\chaptermarkformat{}
-% define a new mark for the chapter number
-\newmarks\chapternum
-\xapptocmd\chaptermark{\marks\chapternum{\thechapter}}{}{\PatchFailed}
-\newmarks\secnum
-\xapptocmd\sectionmark{\marks\secnum{\thesection}}{}{\PatchFailed}
-
-\newcommand*\outermarginpagemark{%
-\tikzoverlay{
- \begin{pgfonlayer}{top}
- \ifodd\value{page}
- \fill[outermarginfgcolor,rounded corners=2pt] (current page.north east) --++(-5pt,-0.15cm)--++(-\outermarginwidth+10pt,0) --++(-5pt,0.15cm)--cycle;
- \coordinate (anchor of headmark) at ([shift={(-1.2\outermarginwidth,-0.2cm)}]current page.north east);
- \node[below ,text=outermarginfgcolor,font=\sffamily\bfseries\fontsize{15}{15}\selectfont] at ([shift={(-.5\outermarginwidth,-0.15cm)}]current page.north east) {\thepage};
- \fill[outermarginfgcolor!50,rounded corners=1pt] ([shift={(0.2\outermarginwidth,0.2cm)}]anchor of headmark) --++(-5pt,-0.15cm)--++(-.45\linewidth,0) --++(-5pt,0.15cm)--cycle; % 页眉横线
- \node[below left,font=\upshape,text=outermarginfgcolor] at ([yshift=0.05cm]anchor of headmark) {\begin{varwidth}{\linewidth}\rightmark\end{varwidth}};
- \fill[outermarginfgcolor,rounded corners=2pt] (current page.south east) --++(-5pt,0.15cm)--++(-\outermarginwidth+10pt,0) --++(-5pt,-0.15cm)--cycle; % 页码横线
- \else
- \fill[outermarginfgcolor,rounded corners=2pt] (current page.north west) --++(5pt,-0.15cm)--++(\outermarginwidth-10pt,0) --++(5pt,0.15cm)--cycle;
- \coordinate (anchor of headmark) at ([shift={(1.2\outermarginwidth,-0.2cm)}]current page.north west);
- \node[below ,text=outermarginfgcolor,font=\sffamily\bfseries\fontsize{15}{15}\selectfont] at ([shift={(.5\outermarginwidth,-0.15cm)}]current page.north west) {\thepage};
- \fill[outermarginfgcolor!50,rounded corners=1pt] ([shift={(-0.2\outermarginwidth,0.2cm)}]anchor of headmark) --++(5pt,-0.15cm)--++(.45\linewidth,0) --++(5pt,0.15cm)--cycle; % 页眉横线
- \node[below right,font=\upshape,text=outermarginfgcolor] at ([yshift=0.05cm]anchor of headmark) {\begin{varwidth}{\linewidth}\rightmark\end{varwidth}};
- \fill[outermarginfgcolor,rounded corners=2pt] (current page.south west) --++(5pt,0.15cm)--++(\outermarginwidth-10pt,0) --++(5pt,-0.15cm)--cycle; % 页码横线
- \fi
- \end{pgfonlayer}}
-}
-\newlength\baryshift
-\setlength\baryshift{-2.5\outermarginwidth}
-\makeatletter
-% Add A Side-Bar Box For The Chapter Number
-\newcommand*\outermarginchapternumberbox{%
- \if@mainmatter
- \tikzoverlay{
- \shade[top color=outermarginfgcolor!90,bottom color=outermarginbgcolor]
- (\outermarginwidth,-.5\outermarginwidth+2mm) rectangle (0,-1.5\outermarginwidth+2mm);
- \node[anchor=center,text=white,font=\sffamily\bfseries] at (1/2*\outermarginwidth,-\outermarginwidth+2mm) {\usekomafont{chapternumber}{\botmarks\chapternum}};%
- }
- \fi
- \vfill
-}
-\makeatother
-
-\newkomafont{chapternumber}{%页边章节编号字体
- \fontsize{\chapternumbersize}{\chapternumbersize}\selectfont
-}%
-\makeatletter
-\newcommand\outermarginmark{
- \ifodd\value{page}\hfill\else\hspace*{\dimexpr\outermarginwidth*3/8\relax}\fi
- \rotatebox{90}{\parbox{\layerheight}{
- \raggedleft
- \usekomafont{outermargin}{%
- \MakeMarkcase{\ifodd\value{page}\odd@outermargin\else\even@outermargin\fi}}%
- }}%
- \ifodd\value{page}\hspace*{\dimexpr\outermarginwidth*3/8\relax}\fi%
-}
-\newcommand*\even@outermargin{}
-\newcommand*\odd@outermargin{}
-\newcommand*\evenoutermargin[1]{\renewcommand\even@outermargin{#1}}% 偶数页内容
-\newcommand*\oddoutermargin[1]{\renewcommand\odd@outermargin{#1}}% 奇数页内容
-\makeatother
-%
-\newkomafont{outermargin}{%页边章节名称字体
- \bfseries\fontsize{15}{15}\selectfont\color{outermarginfgcolor}
-}
-% declare new page style using layers
-\DeclareNewPageStyleByLayers{scth}{%
- scth.outermargin.bg.even,%
- scth.outermargin.bg.odd,%
- scth.outermargin.fg.even,%
- scth.outermargin.fg.odd,%
- scth.outermargin.pn.even,%
- scth.outermargin.pn.odd,%
- scth.outermargin.cn.even,%
- scth.outermargin.cn.odd,%
- scth.outermargin.text.even,%
- scth.outermargin.text.odd%
-}
-% define the layers for even pages
-\DeclareNewLayer[
- background, % 下层(背景)
- evenpage,
- outermargin,
- width=\outermarginwidth,
- contents={\color{outermarginbgcolor}\rule{\layerwidth}{\layerheight}} %色彩装饰条
-]{scth.outermargin.bg.even}%
-%%=============% 页边条颜色 %=======================%%
-\tikzfading[name=fade south,
- top color =transparent!0,
- bottom color=transparent!80]
-\tikzfading[name=fade north,
- top color =transparent!100,
- bottom color=transparent!0]
-%偶数页边纹理效果设置
-\newcommand{\evensidbardeepcolor}{%
-\tikzoverlay{
-\ifodd\value{page}
-\fill [outermarginfgcolor!20]%
- (current page.north east) rectangle ([xshift=-\outermarginwidth,yshift=0]current page.south east);
- \pattern [pattern=checkerboard,pattern color=outermarginfgcolor!50]%
- (current page.north east) rectangle ([xshift=-\outermarginwidth,yshift=0]current page.south east);
- \fill [outermarginbgcolor!90,path fading=fade south]%
- ([yshift=1mm]current page.north east) rectangle ([xshift=-\outermarginwidth,yshift=-.5\layerheight]current page.north east);
- \fill [outermarginbgcolor,path fading=fade north]%
- (current page.south east) rectangle ([xshift=-\outermarginwidth,yshift=.2\layerheight]current page.south east);
-\else
- \fill [outermarginfgcolor!20]%
- (current page.north west) rectangle ([xshift=\outermarginwidth,yshift=0]current page.south west);
- \pattern [pattern=checkerboard,pattern color=outermarginfgcolor!50]%
- (current page.north west) rectangle ([xshift=\outermarginwidth,yshift=0]current page.south west);
- \fill [outermarginbgcolor!90,path fading=fade south]%
- ([yshift=1mm]current page.north west) rectangle ([xshift=\outermarginwidth,yshift=-.5\layerheight]current page.north west);
- \fill [outermarginbgcolor,path fading=fade north]%
- (current page.south west) rectangle ([xshift=\outermarginwidth,yshift=.2\layerheight]current page.south west);
- \fi
-}
-}
-%%==============偶数页页边条颜色========================%%
-\DeclareNewLayer[
- foreground, %
- evenpage,
- outermargin,
- width=\outermarginwidth,
- contents=\evensidbardeepcolor %色彩装饰条
-]{scth.outermargin.fg.even}%
-%%==============偶数页页脚页码========================%%
-\DeclareNewLayer[
- foreground, %上层 (背景之上)
- evenpage,
- foot, % 页脚
- contents=\outermarginpagemark
-]{scth.outermargin.pn.even}%
-%%==============偶数页章节编号========================%%
-\DeclareNewLayer[
- foreground, %上层 (背景之上)
- evenpage,
- head, %页眉
- hoffset=0pt,
- width=\outermarginwidth,
- align=t,
- addvoffset=\dimexpr-\chapternumbersize-12pt+\headheight\relax,
- height=\chapternumbersize+\headheight,
- contents=\outermarginchapternumberbox%章节编号
-]{scth.outermargin.cn.even}%
-%%======================章节名称===================================%%
-\DeclareNewLayer[
- clone=scth.outermargin.cn.even,
- addheight=\dimexpr\headheight+\headsep+\textheight\relax,
- addvoffset=\dimexpr+2\outermarginwidth\relax,
- hoffset=-2.5pt,
- contents=\outermarginmark %
-]{scth.outermargin.text.even}%
-
-% define the layers for odd page from the settings for even pages
-\newcommand*\DeclareOddFromEven[1]{%复制自偶数页样式命令
-\DeclareNewLayer[
- clone=#1.even,
- oddpage,
- align=r,
- hoffset=\paperwidth
-]{#1.odd}%
-}
-\DeclareOddFromEven{scth.outermargin.bg}
-\DeclareOddFromEven{scth.outermargin.pn}
-\DeclareOddFromEven{scth.outermargin.cn}
-\DeclareOddFromEven{scth.outermargin.text}
-\DeclareOddFromEven{scth.outermargin.fg}
-
-% add the layers to page style scrheadings and page style plain
-\ForEachLayerOfPageStyle*{scth}{%
- \AddLayersToPageStyle{scrheadings}{#1}%
- \AddLayersToPageStyle{plain.scrheadings}{#1}%
-}
-%----------------------------------------------
-\KOMAoptions{markcase=upper} %页眉
-% for page styles scrheadings and plain
-\clearpairofpagestyles
-\ohead{}
-\cfoot{}
-\ofoot{}
-
-%%-------------------------------- SCRLAYER-SCRPAGE -------------------------------------%%
-
-%% Begin The Most Beautiful Box (STYLE : ys style) % 中国风盒子
-\makeatletter
-\definecolor{framegolden}{HTML}{455a64} % 控制外框颜色
-\definecolor{framegray}{HTML}{e0e0e0} % 控制填充颜色
-\newdimen\ys@frame@linewidth
-\newdimen\ys@frame@radius
-\newdimen\ys@frame@sep
-\def\ys@frame@fill@opacity{0.2}
-
-\pgfdeclarehorizontalshading{ys@fade@circle}{500bp}
-{color(0bp)=(pgftransparent!100); color(25bp)=(pgftransparent!100);
-color(45bp)=(pgftransparent!0); color(55bp)=(pgftransparent!0);
-color(75bp)=(pgftransparent!100); color(100bp)=(pgftransparent!100)}
-\pgfdeclarefading{ys circle}{\pgfuseshading{ys@fade@circle}}
-
-\def\ys@frame@star@list@t{%
- -0.7071\ys@frame@radius+0.2133\ys@frame@sep/%
- -0.7071\ys@frame@radius+0.2133\ys@frame@sep/%
- frame.north east,%
- 0.7071\ys@frame@radius-0.2133\ys@frame@sep/%
- -0.7071\ys@frame@radius+0.2133\ys@frame@sep/%
- frame.north west}
-\def\ys@frame@star@list@b{%
- 0.7071\ys@frame@radius-0.2133\ys@frame@sep/%
- 0.7071\ys@frame@radius-0.2133\ys@frame@sep/%
- frame.south west,%
- -0.7071\ys@frame@radius+0.2133\ys@frame@sep/%
- 0.7071\ys@frame@radius-0.2133\ys@frame@sep/%
- frame.south east}
-\edef\ys@frame@star@list{\ys@frame@star@list@t,\ys@frame@star@list@b}
-
-%region outer
-\def\ys@frame@remove@middleline#1#2{}
-\def\ys@frame@draw@middleline#1#2{%
- \clip ([xshift=-\ys@frame@linewidth,#1]frame.north west)--
- ([xshift=\ys@frame@linewidth,#1]frame.north east)--
- ([xshift=\ys@frame@linewidth,#2]frame.south east)--
- ([xshift=-\ys@frame@linewidth,#2]frame.south west)--cycle;}
-\def\ys@frame@unbrokenouter{%
- \path[draw=framegolden,fill=framegray,fill opacity=\ys@frame@fill@opacity,line width=\ys@frame@linewidth]
- ([xshift=\ys@frame@radius]frame.north west)--([xshift=-\ys@frame@radius]frame.north east)
- arc(-180:-90:\ys@frame@radius)--
- ([yshift=-\ys@frame@radius]frame.north east)--([yshift=\ys@frame@radius]frame.south east)
- arc(90:180:\ys@frame@radius)--
- ([xshift=-\ys@frame@radius]frame.south east)--([xshift=\ys@frame@radius]frame.south west)
- arc(0:90:\ys@frame@radius)--
- ([yshift=\ys@frame@radius]frame.south west)--([yshift=-\ys@frame@radius]frame.north west)
- arc(-90:0:\ys@frame@radius)--cycle;}
-\def\ys@frame@firstouter{%
- \ys@frame@remove@middleline{yshift=.5\ys@frame@linewidth}{yshift=.7\ys@frame@linewidth}%
- \path[draw=framegolden,fill=framegray,fill opacity=\ys@frame@fill@opacity,line width=\ys@frame@linewidth]
- ([xshift=\ys@frame@radius]frame.north west)--([xshift=-\ys@frame@radius]frame.north east)
- arc(-180:-90:\ys@frame@radius)--
- ([yshift=-\ys@frame@radius]frame.north east)--
- (frame.south east)--
- (frame.south west)--
- ([yshift=-\ys@frame@radius]frame.north west)
- arc(-90:0:\ys@frame@radius)--cycle;}
-\def\ys@frame@middleouter{%
- \ys@frame@remove@middleline{yshift=-.7\ys@frame@linewidth}{yshift=.7\ys@frame@linewidth}%
- \path[draw=framegolden,fill=framegray,fill opacity=\ys@frame@fill@opacity,line width=\ys@frame@linewidth]
- (frame.north west)--(frame.north east)--(frame.south east)--
- (frame.south west)--cycle;}
-\def\ys@frame@lastouter{%
- \ys@frame@remove@middleline{yshift=-.7\ys@frame@linewidth}{yshift=-.5\ys@frame@linewidth}%
- \path[draw=framegolden,fill=framegray,fill opacity=\ys@frame@fill@opacity,line width=\ys@frame@linewidth]
- (frame.north west)--(frame.north east)--
- ([yshift=\ys@frame@radius]frame.south east)
- arc(90:180:\ys@frame@radius)--
- ([xshift=-\ys@frame@radius]frame.south east)--([xshift=\ys@frame@radius]frame.south west)
- arc(0:90:\ys@frame@radius)--
- ([yshift=\ys@frame@radius]frame.south west)--
- (frame.north west)--cycle;}
-%endregion
-%region inner
-\def\ys@frame@unbrokeninner{%
-\path[draw=framegolden,line width=.5\ys@frame@linewidth,line cap=round]
-([xshift=\ys@frame@radius+2\ys@frame@linewidth,yshift=-\ys@frame@sep]frame.north west)
- --([xshift=\ys@frame@radius+5\ys@frame@linewidth,yshift=-\ys@frame@sep]frame.north west) --++(45:2\ys@frame@linewidth)--++(-45:2\ys@frame@linewidth)
- ([xshift=\ys@frame@radius+6\ys@frame@linewidth,yshift=-\ys@frame@sep]frame.north west)--++(-45:2\ys@frame@linewidth)--++(45:2\ys@frame@linewidth) %第一节
- --([xshift=-\ys@frame@radius-8.828\ys@frame@linewidth,yshift=-\ys@frame@sep]frame.north east)--++(-45:2\ys@frame@linewidth)--++(45:2\ys@frame@linewidth)
- ([xshift=-\ys@frame@radius-7.828\ys@frame@linewidth,yshift=-\ys@frame@sep]frame.north east)--++(45:2\ys@frame@linewidth)--++(-45:2\ys@frame@linewidth) %第二节
- --([xshift=-\ys@frame@radius-2\ys@frame@linewidth,yshift=-\ys@frame@sep]frame.north east)
- %%
-([yshift=-\ys@frame@radius-2\ys@frame@linewidth,xshift=-\ys@frame@sep]frame.north east)
---([yshift=-\ys@frame@radius-5\ys@frame@linewidth,xshift=-\ys@frame@sep]frame.north east) --++(-135:2\ys@frame@linewidth)--++(-45:2\ys@frame@linewidth)
-([yshift=-\ys@frame@radius-6\ys@frame@linewidth,xshift=-\ys@frame@sep]frame.north east)--++(-45:2\ys@frame@linewidth)--++(-135:2\ys@frame@linewidth) %第一节
---([yshift=\ys@frame@radius+8.828\ys@frame@linewidth,xshift=-\ys@frame@sep]frame.south east)--++(-45:2\ys@frame@linewidth)--++(-135:2\ys@frame@linewidth)
-([yshift=\ys@frame@radius+7.828\ys@frame@linewidth,xshift=-\ys@frame@sep]frame.south east)--++(-135:2\ys@frame@linewidth)--++(-45:2\ys@frame@linewidth) %第二节
-%
- --([yshift=\ys@frame@radius+2\ys@frame@linewidth,xshift=-\ys@frame@sep]frame.south east)
-%
-([xshift=\ys@frame@radius+2\ys@frame@linewidth,yshift=\ys@frame@sep]frame.south west)
---([xshift=\ys@frame@radius+5\ys@frame@linewidth,yshift=\ys@frame@sep]frame.south west) --++(-45:2\ys@frame@linewidth)--++(45:2\ys@frame@linewidth)
-([xshift=\ys@frame@radius+6\ys@frame@linewidth,yshift=\ys@frame@sep]frame.south west)--++(45:2\ys@frame@linewidth)--++(-45:2\ys@frame@linewidth) %第一节
---([xshift=-\ys@frame@radius-8.828\ys@frame@linewidth,yshift=\ys@frame@sep]frame.south east)--++(45:2\ys@frame@linewidth)--++(-45:2\ys@frame@linewidth)
-([xshift=-\ys@frame@radius-7.828\ys@frame@linewidth,yshift=\ys@frame@sep]frame.south east)--++(-45:2\ys@frame@linewidth)--++(45:2\ys@frame@linewidth) %第二节
- --([xshift=-\ys@frame@radius-2\ys@frame@linewidth,yshift=\ys@frame@sep]frame.south east)
-%
-([yshift=-\ys@frame@radius-2\ys@frame@linewidth,xshift=\ys@frame@sep]frame.north west)
---([yshift=-\ys@frame@radius-5\ys@frame@linewidth,xshift=\ys@frame@sep]frame.north west) --++(-45:2\ys@frame@linewidth)--++(-135:2\ys@frame@linewidth)
-([yshift=-\ys@frame@radius-6\ys@frame@linewidth,xshift=\ys@frame@sep]frame.north west)--++(-135:2\ys@frame@linewidth)--++(-45:2\ys@frame@linewidth) %第一节
---([yshift=\ys@frame@radius+8.828\ys@frame@linewidth,xshift=\ys@frame@sep]frame.south west)--++(-135:2\ys@frame@linewidth)--++(-45:2\ys@frame@linewidth)
-([yshift=\ys@frame@radius+7.828\ys@frame@linewidth,xshift=\ys@frame@sep]frame.south west)--++(-45:2\ys@frame@linewidth)--++(-135:2\ys@frame@linewidth) %第二节
- --([yshift=\ys@frame@radius+2\ys@frame@linewidth,xshift=\ys@frame@sep]frame.south west);}
-\def\ys@frame@firstinner{%
- \path[draw=framegolden,line width=.5\ys@frame@linewidth,line cap=round]
- ([xshift=\ys@frame@radius+2\ys@frame@linewidth,yshift=-\ys@frame@sep]frame.north west)
- --([xshift=\ys@frame@radius+5\ys@frame@linewidth,yshift=-\ys@frame@sep]frame.north west) --++(45:2\ys@frame@linewidth)--++(-45:2\ys@frame@linewidth)
- ([xshift=\ys@frame@radius+6\ys@frame@linewidth,yshift=-\ys@frame@sep]frame.north west)--++(-45:2\ys@frame@linewidth)--++(45:2\ys@frame@linewidth) %第一节
- --([xshift=-\ys@frame@radius-8.828\ys@frame@linewidth,yshift=-\ys@frame@sep]frame.north east)--++(-45:2\ys@frame@linewidth)--++(45:2\ys@frame@linewidth)
- ([xshift=-\ys@frame@radius-7.828\ys@frame@linewidth,yshift=-\ys@frame@sep]frame.north east)--++(45:2\ys@frame@linewidth)--++(-45:2\ys@frame@linewidth) %第二节
- --([xshift=-\ys@frame@radius-2\ys@frame@linewidth,yshift=-\ys@frame@sep]frame.north east)
- %%
-([yshift=-\ys@frame@radius-2\ys@frame@linewidth,xshift=-\ys@frame@sep]frame.north east)
---([yshift=-\ys@frame@radius-5\ys@frame@linewidth,xshift=-\ys@frame@sep]frame.north east) --++(-135:2\ys@frame@linewidth)--++(-45:2\ys@frame@linewidth)
-([yshift=-\ys@frame@radius-6\ys@frame@linewidth,xshift=-\ys@frame@sep]frame.north east)--++(-45:2\ys@frame@linewidth)--++(-135:2\ys@frame@linewidth) %第一节
---([xshift=-\ys@frame@sep]frame.south east)
-
- ([yshift=-\ys@frame@radius-2\ys@frame@linewidth,xshift=\ys@frame@sep]frame.north west)
- --([yshift=-\ys@frame@radius-5\ys@frame@linewidth,xshift=\ys@frame@sep]frame.north west) --++(-45:2\ys@frame@linewidth)--++(-135:2\ys@frame@linewidth)
- ([yshift=-\ys@frame@radius-6\ys@frame@linewidth,xshift=\ys@frame@sep]frame.north west)--++(-135:2\ys@frame@linewidth)--++(-45:2\ys@frame@linewidth) %第一节
- --([xshift=\ys@frame@sep]frame.south west);}
-\def\ys@frame@middleinner{%
- \path[draw=framegolden,line width=.5\ys@frame@linewidth,line cap=round]
- ([xshift=-\ys@frame@sep]frame.north east)--([xshift=-\ys@frame@sep]frame.south east)
- ([xshift=\ys@frame@sep]frame.north west)--([xshift=\ys@frame@sep]frame.south west);}
-\def\ys@frame@lastinner{%
- \path[draw=framegolden,line width=.5\ys@frame@linewidth,line cap=round]
- ([xshift=-\ys@frame@sep]frame.north east)
- --([yshift=\ys@frame@radius+8.828\ys@frame@linewidth,xshift=-\ys@frame@sep]frame.south east)--++(-45:2\ys@frame@linewidth)--++(-135:2\ys@frame@linewidth)
- ([yshift=\ys@frame@radius+7.828\ys@frame@linewidth,xshift=-\ys@frame@sep]frame.south east)--++(-135:2\ys@frame@linewidth)--++(-45:2\ys@frame@linewidth) %第二节
- %
- --([yshift=\ys@frame@radius+2\ys@frame@linewidth,xshift=-\ys@frame@sep]frame.south east)
-%
- ([xshift=\ys@frame@radius+2\ys@frame@linewidth,yshift=\ys@frame@sep]frame.south west)
- --([xshift=\ys@frame@radius+5\ys@frame@linewidth,yshift=\ys@frame@sep]frame.south west) --++(-45:2\ys@frame@linewidth)--++(45:2\ys@frame@linewidth)
- ([xshift=\ys@frame@radius+6\ys@frame@linewidth,yshift=\ys@frame@sep]frame.south west)--++(45:2\ys@frame@linewidth)--++(-45:2\ys@frame@linewidth) %第一节
- --([xshift=-\ys@frame@radius-8.828\ys@frame@linewidth,yshift=\ys@frame@sep]frame.south east)--++(45:2\ys@frame@linewidth)--++(-45:2\ys@frame@linewidth)
- ([xshift=-\ys@frame@radius-7.828\ys@frame@linewidth,yshift=\ys@frame@sep]frame.south east)--++(-45:2\ys@frame@linewidth)--++(45:2\ys@frame@linewidth) %第二节
- --([xshift=-\ys@frame@radius-2\ys@frame@linewidth,yshift=\ys@frame@sep]frame.south east)
-%
- ([xshift=\ys@frame@sep]frame.north west)
- --([yshift=\ys@frame@radius+8.828\ys@frame@linewidth,xshift=\ys@frame@sep]frame.south west)--++(-135:2\ys@frame@linewidth)--++(-45:2\ys@frame@linewidth)
- ([yshift=\ys@frame@radius+7.828\ys@frame@linewidth,xshift=\ys@frame@sep]frame.south west)--++(-45:2\ys@frame@linewidth)--++(-135:2\ys@frame@linewidth) %第二节
- --([yshift=\ys@frame@radius+2\ys@frame@linewidth,xshift=\ys@frame@sep]frame.south west);}
-%endregion
-%region corner
-\def\ys@frame@unbrokencorner{%
- \path[draw=framegolden,line width=1.5\ys@frame@linewidth,line cap=round]
- ([xshift=\ys@frame@radius-2.7\ys@frame@linewidth,yshift=-\ys@frame@sep]frame.north west)
- --([xshift=\ys@frame@sep,yshift=-\ys@frame@sep]frame.north west)
- --([xshift=\ys@frame@sep,yshift=-\ys@frame@radius+2.7\ys@frame@linewidth]frame.north west)
- ([xshift=-\ys@frame@radius+2.7\ys@frame@linewidth,yshift=-\ys@frame@sep]frame.north east)
- --([xshift=-\ys@frame@sep,yshift=-\ys@frame@sep]frame.north east)
- --([xshift=-\ys@frame@sep,yshift=-\ys@frame@radius+2.7\ys@frame@linewidth]frame.north east)
- ([xshift=-\ys@frame@radius+2.7\ys@frame@linewidth,yshift=\ys@frame@sep]frame.south east)
- --([xshift=-\ys@frame@sep,yshift=\ys@frame@sep]frame.south east)
- --([xshift=-\ys@frame@sep,yshift=\ys@frame@radius-2.7\ys@frame@linewidth]frame.south east)
- ([xshift=\ys@frame@radius-2.7\ys@frame@linewidth,yshift=\ys@frame@sep]frame.south west)
- --([xshift=\ys@frame@sep,yshift=\ys@frame@sep]frame.south west)
- --([xshift=\ys@frame@sep,yshift=\ys@frame@radius-2.7\ys@frame@linewidth]frame.south west);}
-\def\ys@frame@firstcorner{%
- \path[draw=framegolden,line width=1.5\ys@frame@linewidth,line cap=round]
- ([xshift=\ys@frame@radius-2.7\ys@frame@linewidth,yshift=-\ys@frame@sep]frame.north west)
- --([xshift=\ys@frame@sep,yshift=-\ys@frame@sep]frame.north west)
- --([xshift=\ys@frame@sep,yshift=-\ys@frame@radius+2.7\ys@frame@linewidth]frame.north west)
- ([xshift=-\ys@frame@radius+2.7\ys@frame@linewidth,yshift=-\ys@frame@sep]frame.north east)
- --([xshift=-\ys@frame@sep,yshift=-\ys@frame@sep]frame.north east)
- --([xshift=-\ys@frame@sep,yshift=-\ys@frame@radius+2.7\ys@frame@linewidth]frame.north east);}
-\def\ys@frame@middlecorner{}
-\def\ys@frame@lastcorner{%
- \path[draw=framegolden,line width=1.5\ys@frame@linewidth,line cap=round]
- ([xshift=-\ys@frame@radius+2.7\ys@frame@linewidth,yshift=\ys@frame@sep]frame.south east)
- --([xshift=-\ys@frame@sep,yshift=\ys@frame@sep]frame.south east)
- --([xshift=-\ys@frame@sep,yshift=\ys@frame@radius-2.7\ys@frame@linewidth]frame.south east)
- ([xshift=\ys@frame@radius-2.7\ys@frame@linewidth,yshift=\ys@frame@sep]frame.south west)
- --([xshift=\ys@frame@sep,yshift=\ys@frame@sep]frame.south west)
- --([xshift=\ys@frame@sep,yshift=\ys@frame@radius-2.7\ys@frame@linewidth]frame.south west);}
-%endregion
-\def\ys@frame@star#1#2#3{%
- \begin{scope}[shift={([xshift=#1,yshift=#2]#3)},scale=\ys@frame@ratio*0.1]
- \path[draw=framegolden,fill=white,
- line width=.7\ys@frame@linewidth,line join=round]
- (1,1)..controls(0.3,0.5) and (-0.3,0.5)..
- (-1,1)..controls(-0.5,0.3) and (-0.5,-0.3)..
- (-1,-1)..controls(-0.3,-0.5) and (0.3,-0.5)..
- (1,-1)..controls(0.5,-0.3) and (0.5,0.3)..(1,1)--cycle;
- \path[scale=0.45,fill=framegolden,line join=round]
- (1,1)..controls(0.3,0.7) and (-0.3,0.7)..
- (-1,1)..controls(-0.7,0.3) and (-0.7,-0.3)..
- (-1,-1)..controls(-0.3,-0.7) and (0.3,-0.7)..
- (1,-1)..controls(0.7,-0.3) and (0.7,0.3)..(1,1)--cycle;
- \end{scope}}
-\def\ys@frame@segmentation{%
- \draw[color=framegolden,path fading=ys circle]
- ([xshift=5\ys@frame@radius]segmentation.west) to[ornament=88]
- ([xshift=-5\ys@frame@radius]segmentation.east);}
-
-\tcbset{
- % 控制是否在断点处的线不画出来
- ys/frame/not at break/.code=\let\ys@frame@remove@middleline\ys@frame@draw@middleline,
- ys/frame/fill opacity/.store in=\ys@frame@fill@opacity,
- ys/frame/draw at break/.code=\let\ys@frame@remove@middleline\@gobbletwo,
- % 控制线宽
- ys/frame/line width/.code={\pgfmathsetlength\ys@frame@linewidth{#1}},
- ys/frame/line width=1.4pt,
- % 控制圆弧大小,应为数字,而非长度
- ys/frame/radius/.code={\pgfmathparse{#1}\let\ys@frame@ratio\pgfmathresult
- \pgfmathsetlength\ys@frame@radius{(#1)*1em}%
- \pgfmathsetlength\ys@frame@sep{(#1)*0.5ex}},
- ys/frame/radius=2,
- ys/frame/unbroken/.style={
- interior code={%
- \ys@frame@unbrokenouter % 外框
- \foreach \ii/\jj/\kk in \ys@frame@star@list {\ys@frame@star{\ii}{\jj}{\kk}} % 星
- \ys@frame@unbrokeninner % 内线
- \ys@frame@unbrokencorner % 四角
- },
- interior titled code={%
- \ys@frame@unbrokenouter % 外框
- \foreach \ii/\jj/\kk in \ys@frame@star@list {\ys@frame@star{\ii}{\jj}{\kk}} % 星
- \ys@frame@unbrokeninner % 内线
- \ys@frame@unbrokencorner % 四角
- }
- },
- ys/frame/first/.style={
- interior code={%
- \ys@frame@firstouter
- \foreach \ii/\jj/\kk in \ys@frame@star@list@t {\ys@frame@star{\ii}{\jj}{\kk}}
- \ys@frame@firstinner
- \ys@frame@firstcorner},
- interior titled code={%
- \ys@frame@firstouter
- \foreach \ii/\jj/\kk in \ys@frame@star@list@t {\ys@frame@star{\ii}{\jj}{\kk}}
- \ys@frame@firstinner
- \ys@frame@firstcorner},
- },
- ys/frame/middle/.style={
- interior code={%
- \ys@frame@middleouter
- \ys@frame@middleinner
- \ys@frame@middlecorner}
- },
- ys/frame/last/.style={
- interior code={%
- \ys@frame@lastouter
- \foreach \ii/\jj/\kk in \ys@frame@star@list@b {\ys@frame@star{\ii}{\jj}{\kk}}
- \ys@frame@lastinner
- \ys@frame@lastcorner}
- },
- ys/frame style/unbroken/.style={
- boxsep=2\ys@frame@sep,
- left={.8\ys@frame@radius},right={.8\ys@frame@radius},
- ys/frame/unbroken,title hidden,
- segmentation code=\ys@frame@segmentation
- },
- ys/frame style/first/.style={ys/frame/first,title hidden,segmentation code=\ys@frame@segmentation},
- ys/frame style/middle/.style={ys/frame/middle,segmentation code=\ys@frame@segmentation},
- ys/frame style/last/.style={ys/frame/last,segmentation code=\ys@frame@segmentation},
- ys style/.style={frame hidden,
- ys/frame style/unbroken,
- extras first={ys/frame style/first},
- extras middle={ys/frame style/middle},
- extras last={ys/frame style/last},
- },
-}
-\makeatother
-\newtcolorbox{fancybox}[1][]{enhanced,ys style,breakable,pad at break=2mm,
- ys/frame/not at break,ys/frame/fill opacity=0,#1,fontupper=\itshape}
-%% End The Most Beautiful Box
-\makeatletter
-\definecolor{CyaN}{HTML}{dbe1e5}
-\colorlet{OrangE}{yellow!20!orange}
-\colorlet{BluE}{cyan!70!blue}
-\colorlet{ReD}{red!20!orange}
-\colorlet{GreeN}{yellow!40!green}
-
-% 第一种定理
-\tcbset{my@basic@thm/.style={enhanced jigsaw, breakable,
- enlarge left by=-3.5mm, width=\textwidth+3.5mm, boxrule=0pt,
- top=2pt, bottom=2pt, left=2.5mm, frame hidden}}
-\newcommand{\@my@newtheorem@n}[1]{\ERROR}
-\newcommand{\@my@newtheorem@nn}[2]{%
- \@ifundefined{#1}{\@my@newtheorem{#1}#2}{\@my@renewtheorem{#1}#2}}
-\NewDocumentCommand{\@my@newtheorem}{ m m o +m }
- {\IfNoValueTF{#3}{\newtheorem{#1}{#2}}{\newtheorem{#1}{#2}[#3]}%
- \tcbset{my@#1@thmstyle/.style={#4}}%
- \tcolorboxenvironment{#1}{my@basic@thm, my@#1@thmstyle}}
-\NewDocumentCommand{\@my@renewtheorem}{ m m o +m }
- {\IfNoValueTF{#3}{\renewtheorem{#1}{#2}}{\renewtheorem{#1}{#2}[#3]}%
- \tcbset{my@#1@thmstyle/.style={#4}}}
-%
-% ---------------------------------------------------------------------------------- %
-% 第二种定理
-\tcbset{my@basic@tcbthm/.style={detach title,}}
-\newcommand{\@my@newtcbtheorem@n}[1]{\ERROR}
-\newcommand{\@my@newtcbtheorem@nn}[2]{%
- \@ifundefined{#1}{\@my@newtcbtheorem{#1}{#2}}{\@my@renewtcbtheorem{#1}{#2}}}
-\newcommand{\@my@newtcbtheorem}[2]{%
- \edef\my@curr@thmenvname{#1}% 它保存当前定理环境的名称
- \mytcbtheoremset{#2}%
- \NewTColorBox{#1}{ O{} O{} o }
- {my@basic@tcbthm, my@#1@tcbthmstyle, title={##2}, IfNoValueF={##3}{label={##3}}, ##1}}
-\newcommand{\@my@renewtcbtheorem}[2]{\edef\my@curr@thmenvname{#1}\mytcbtheoremset{#2}}
-
-% 键值设置
-\pgfkeys{/mytcbtheorem/.is family}
-\newcommand{\mytcbtheoremset}{\pgfqkeys{/mytcbtheorem}}
-\mytcbtheoremset{
- name/.code=\@namedef{\my@curr@thmenvname @name}{#1}, %无效
- counter/.code=\@namedef{my@\my@curr@thmenvname @counter}{#1}\newcounter{#1}[chapter], % 计数器遇到subsection就会自动归零 % https://zhuanlan.zhihu.com/p/57454848#circle=on
- the counter/.code=\@namedef{the\@nameuse{my@\my@curr@thmenvname @counter}}{#1},
- autoref name/.code=\@namedef{\@nameuse{my@\my@curr@thmenvname @counter}autorefname}{#1},
- style/.code=\tcbset{my@\my@curr@thmenvname @tcbthmstyle/.style={#1}},
- thmcolor/.code=\@namedef{\my@curr@thmenvname @thmcolor}{#1}, %无效
- lemcolor/.code=\@namedef{\my@curr@thmenvname @lemcolor}{#1}, %无效
-}
-% 存储键值 (LaTeX3)
-\ExplSyntaxOn
-\cs_new_protected:Npn \mynewtheorem
- { \keyval_parse:NNn \@my@newtheorem@n \@my@newtheorem@nn }
-\cs_new_protected:Npn \mynewtcbtheorem
- { \keyval_parse:NNn \@my@newtcbtheorem@n \@my@newtcbtheorem@nn }
-\ExplSyntaxOff
-\makeatother
-
-% 第二种定理
-\makeatletter
-%% Overlay Settings
-\newcommand{\my@theorem@overlay@unbroken}[2]{
- %%============== First ==============%%
- \fill[black!60] ([xshift=1cm,yshift=5pt]frame.north west)-- ([xshift=0.8cm,yshift=0cm]frame.north west)--([xshift=1.2cm,yshift=0cm]frame.north west)--cycle;
- \node[rectangle, text=white, drop shadow={opacity=.3, shadow xshift=0.1cm}, inner sep=1.5mm,fill=#2,
-anchor=west,rounded corners=3pt,font=\bfseries\normalsize] at ([xshift=0cm,yshift=-3.mm]frame.north west) {\hspace*{1.5em}#1.\ \ifdefvoid{\tcbtitletext}{}{(\itshape\tcbtitletext)}};
- \fill[color=#2,drop shadow={opacity=0.3,shadow xshift=.3pt}]
- ([xshift=1cm,yshift=5pt]frame.north west) {[rounded corners=3pt]--++(-1cm-5pt,0)}--++(0,-1cm-5pt)--cycle;
- \fill[color=black!60] ([xshift=-5pt,yshift=-1cm]frame.north west)--([xshift=0cm,yshift=-0.8cm]frame.north west)-- ([xshift=0cm,yshift=-1.2cm]frame.north west)--cycle;
- %%============== End ==============%%
- \fill[#2,drop shadow={opacity=0.3,shadow xshift=-0.008\linewidth,shadow yshift=0.0016\linewidth}]
- ([xshift=-0.05\linewidth,yshift=-5pt]frame.south east) {[rounded corners=3pt]--++(0.05\linewidth+5pt,0)}--++(0,0.05\linewidth+5pt)--cycle;
- \fill[black!60] ([xshift=-0.05\linewidth,yshift=-5pt]frame.south east) -- ([xshift=-0.04\linewidth,yshift=0pt]frame.south east)-- ([xshift=-0.06\linewidth,yshift=0pt]frame.south east)--cycle;
- \fill[black!60] ([xshift=5pt,yshift=0.05\linewidth]frame.south east)-- ([yshift=0.04\linewidth]frame.south east) -- ([yshift=0.06\linewidth]frame.south east)--cycle;
-}
-\newcommand{\my@theorem@overlay@first}[2]{
- \fill[black!60] ([xshift=1cm,yshift=5pt]frame.north west)-- ([xshift=0.8cm,yshift=0cm]frame.north west)--([xshift=1.2cm,yshift=0cm]frame.north west)--cycle;
- \node[rectangle, text=white, drop shadow={opacity=.3, shadow xshift=0.1cm}, inner sep=1.5mm,fill=#2, anchor=west,rounded corners=3pt,font=\bfseries\normalsize] at ([xshift=0cm,yshift=-3.mm]frame.north west) {\hspace*{1.5em}#1.\ \ifdefvoid{\tcbtitletext}{}{(\itshape\tcbtitletext)}};
- \fill[color=#2,drop shadow={opacity=0.3,shadow xshift=.3pt}]
- ([xshift=1cm,yshift=5pt]frame.north west) {[rounded corners=3pt]--++(-1cm-5pt,0)}--++(0,-1cm-5pt)--cycle;
- \fill[color=black!60] ([xshift=-5pt,yshift=-1cm]frame.north west)--([xshift=0cm,yshift=-0.8cm]frame.north west)-- ([xshift=0cm,yshift=-1.2cm]frame.north west)--cycle;
-}
-\newcommand{\my@theorem@overlay@last}[1]{
- \fill[#1,drop shadow={opacity=0.3,shadow xshift=-0.008\linewidth,shadow yshift=0.0016\linewidth}]
- ([xshift=-0.05\linewidth,yshift=-5pt]frame.south east) {[rounded corners=3pt]--++(0.05\linewidth+5pt,0)}--++(0,0.05\linewidth+5pt)--cycle;
- \fill[black!60] ([xshift=-0.05\linewidth,yshift=-5pt]frame.south east) -- ([xshift=-0.04\linewidth,yshift=0pt]frame.south east)-- ([xshift=-0.06\linewidth,yshift=0pt]frame.south east)--cycle;
- \fill[black!60] ([xshift=5pt,yshift=0.05\linewidth]frame.south east)-- ([yshift=0.04\linewidth]frame.south east) -- ([yshift=0.06\linewidth]frame.south east)--cycle;
-}
-% Second theorem style overlay settings
-\newcommand{\my@lemma@overlay@unbroken}[2]{
- %%============== First ==============%%
- \def\Rad{3.5pt}
- \def\theight{0.57cm}
- \def\rad{7pt}%
- \path[fill=#2,drop shadow={opacity=0.3,shadow xshift=.05cm,shadow yshift=-.05cm}]node[append after command={
- ([xshift=-1.5*\rad]thmname.north west) to[out=0,in=180,looseness=1] ([xshift=2.5*\rad]thmname.south west) --([xshift=-\rad]thmname.south east) to[out=0,in=180,looseness=1] ([xshift=3*\rad]thmname.north east) --cycle},
- text=white,font=\bfseries,align=center,inner ysep=1.5mm,minimum height=0.6cm,right] (thmname) at ([xshift=\rad,yshift=-.7*\rad]frame.north west) {\hspace*{10pt}#1.\ \ifdefvoid{\tcbtitletext}{}{(\itshape\tcbtitletext)}};
- \begin{pgfonlayer}{bottom}
- \fill[#2,opacity=0.5]
- ([xshift=-1.5*\rad]thmname.north west) to[out=180,in=305,looseness=1.5] +(3pt,-6pt) -| ++(12pt,0)--cycle;
- \fill[#2,opacity=0.5]
- ([xshift=3*\rad]thmname.north east) to[out=0,in=-90] +(5pt,-5pt) -| ++(-10pt,0) --cycle;
- \end{pgfonlayer}
- %%============== End ==============%%
- \def\tlen{1.5cm}
- \path[fill=#2,drop shadow={opacity=0.3,shadow xshift=.3pt}]
- ([xshift=-2*\rad,yshift=-5pt]frame.south east) coordinate (SE) to[out=0,in=180] +(4*\rad,5pt+\theight) --([shift={(-\tlen+4*\rad,5pt+\theight)}]SE) to[out=180,in=0] +(-4*\rad,-5pt-\theight) --cycle;
- \begin{pgfonlayer}{bottom}
- \fill[color=#2,opacity=0.5] ([xshift=-1.35*\tlen+\Rad,yshift=-5pt]frame.south east) to[out=180,in=90,looseness=0.7] ([xshift=-1.35*\tlen-0.5*\Rad]frame.south east) coordinate (NWl)--([xshift=2*\rad]NWl) to[out=-90,in=-180,looseness=0.7] ([xshift=-1.35*\tlen+\Rad,yshift=-5pt]frame.south east)--cycle;
- \end{pgfonlayer}
- }
-\newcommand{\my@lemma@overlay@first}[2]{
- %%============== First ==============%%
- \def\Rad{3.5pt}
- \def\theight{0.57cm}
- \def\rad{7pt}%
- \path[fill=#2,drop shadow={opacity=0.3,shadow xshift=.05cm,shadow yshift=-.05cm}]node[append after command={
- ([xshift=-1.5*\rad]thmname.north west) to[out=0,in=180,looseness=1] ([xshift=2.5*\rad]thmname.south west) --([xshift=-\rad]thmname.south east) to[out=0,in=180,looseness=1] ([xshift=3*\rad]thmname.north east) --cycle},
- text=white,font=\bfseries,align=center,inner ysep=1.5mm,minimum height=0.6cm,right] (thmname) at ([xshift=\rad,yshift=-.7*\rad]frame.north west) {\hspace*{10pt}#1.\ \ifdefvoid{\tcbtitletext}{}{(\itshape\tcbtitletext)}};
- \begin{pgfonlayer}{bottom}
- \fill[#2,opacity=0.5]
- ([xshift=-1.5*\rad]thmname.north west) to[out=180,in=305,looseness=1.5] +(3pt,-6pt) -| ++(12pt,0)--cycle;
- \fill[#2,opacity=0.5]
- ([xshift=3*\rad]thmname.north east) to[out=0,in=-90] +(5pt,-5pt) -| ++(-10pt,0) --cycle;
- \end{pgfonlayer}
- }
-\newcommand{\my@lemma@overlay@last}[1]{
- %%============== End ==============%%
- \def\Rad{3.5pt}
- \def\rad{7pt}%
- \def\theight{0.57cm}
- \def\tlen{1.5cm}
- \path[fill=#1,drop shadow={opacity=0.3,shadow xshift=.3pt}]
- ([xshift=-2*\rad,yshift=-5pt]frame.south east) coordinate (SE) to[out=0,in=180] +(4*\rad,5pt+\theight) --([shift={(-\tlen+4*\rad,5pt+\theight)}]SE) to[out=180,in=0] +(-4*\rad,-5pt-\theight) --cycle;
- \begin{pgfonlayer}{bottom}
- \fill[color=#1,opacity=0.5] ([xshift=-1.35*\tlen+\Rad,yshift=-5pt]frame.south east) to[out=180,in=90,looseness=0.7] ([xshift=-1.35*\tlen-0.5*\Rad]frame.south east) coordinate (NWl)--([xshift=2*\rad]NWl) to[out=-90,in=-180,looseness=0.7] ([xshift=-1.35*\tlen+\Rad,yshift=-5pt]frame.south east)--cycle;
- \end{pgfonlayer}
- }
-\makeatother
-%%
-
-% proof
-\newcommand{\itbf}[1]{\textit{\textbf{#1}}}
-\declaretheoremstyle[
- spaceabove=3pt,spacebelow=3pt,
- headfont=\normalfont\bfseries,
- notefont=\normalfont\bfseries,notebraces={(}{)},
- bodyfont=\normalfont,
- postheadspace=.5em,
- headpunct={.},
- qed=$\blacksquare$,%\qedsymbol
-]{Proofstyle}
-\declaretheorem[style=Proofstyle,numbered=no,name={\itbf{Proof}}]{Proof}
-\renewenvironment{proof}{\begin{Proof} }{\end{Proof}}
-\declaretheorem[style=Proofstyle,numbered=no,name={\itbf{Solution}}]{solution}
-
-%%%%%%%%%%%%%%% 计数器知识 %%%%%%%%%%%%%%%%%%%%%%
-% 每次用 \newcounter{foo} 定义新计数器,内部都会定义这几个命令
-
-% \c@foo,储存计数器的值,初始值为 0
-% \thefoo,储存计数器输出时的格式,初始定义为 \arabic{foo}
-% \p@foo,储存计数器被引用时的前缀,初始定义为空
-% \cl@foo,储存「子计数器」列表(此处有简化),foo 自增时它的每个「子计数器」都会归零(详见「自动归零」一节),初始定义为空
-%% 关于计数器的自动归零
-% 如果还定义了计数器 \newcounter{bar}[foo],那么 \cl@foo 里就有了 bar
-% \@addtoreset{child}{parent} 和 \@removefromreset{child}{parent} 可以把计数器 child 移入/移出 \cl@parent
-% \counterwithin* 和 \counterwithout* 和上一条里两个命令的功能类似,但它们在执行前会检查接受的两个参数是否为已定义的计数器。不加星号的版本会修改 \thechild,详见「输出格式」一节
-% 在使用 \stepcounter{parent} 和 \refstepcounter{parent} 时,parent 自增,同时归零\cl@parent 里的「子计数器」
-% \addtocount{parent}{1} 只自增 parent,没有归零其「子计数器」的效果
-% 归零实现为「对每个子计数器,先设为 -1,然后使用 \stepcounter 自增」,这样实现的「归零」功能是递归的
-% 递归的意思是,如果还有 \newcounter{grandchild}[child],那么 \stepcounter{parent} 会将 child 和 grandchild 都归零
diff --git a/macros/latex/contrib/beautybook/README.md b/macros/latex/contrib/beautybook/README.md
index c738ffd950..0057185325 100644
--- a/macros/latex/contrib/beautybook/README.md
+++ b/macros/latex/contrib/beautybook/README.md
@@ -10,14 +10,14 @@
-Beautybook is designed for writing books, created by [Ethan Lu](https://github.com/BeautyLaTeX/latex-template) , and maintained by [Ethan Lu](https://github.com/BeautyLaTeX/latex-template). Just enjoy it! If you have any questions, suggestions or bug reports, you can create issues or contact me at h1479840692@outlook.com.
+beautybook is designed for writing books, created by [Ethan Lu](https://github.com/BeautyLaTeX/latex-template) , and maintained by [Ethan Lu](https://github.com/BeautyLaTeX/latex-template). Just enjoy it! If you have any questions, suggestions or bug reports, you can create issues or contact me at h1479840692@outlook.com.
-If you are an English user, then please use a cls file with the "-EN" suffix and compile the english tex file with pdfLaTeX, and conversely, if you are a Chinese user, then remember, use a cls file with the "-CN" suffix and compile the chinese tex file with the XeLaTeX engine!
+If you are an English user, then please write '\documentclass[lang=en]{beautybook}' in the premble and compile the english tex file with pdfLaTeX, and conversely, if you are a Chinese user, then remember, write '\documentclass[lang=cn]{beautybook}' in the premble and compile the chinese tex file with the XeLaTeX engine!
---
## Version
-Release 2024-03-17.
+Release 2024-07-03.
---
## License
diff --git a/macros/latex/contrib/beautybook/Beautybook-cn.pdf b/macros/latex/contrib/beautybook/beautybook-cn.pdf
index 924e220ab7..23690e698d 100644
--- a/macros/latex/contrib/beautybook/Beautybook-cn.pdf
+++ b/macros/latex/contrib/beautybook/beautybook-cn.pdf
Binary files differ
diff --git a/macros/latex/contrib/beautybook/Beautybook-cn.tex b/macros/latex/contrib/beautybook/beautybook-cn.tex
index 4e0e850bf4..7e30e04814 100644
--- a/macros/latex/contrib/beautybook/Beautybook-cn.tex
+++ b/macros/latex/contrib/beautybook/beautybook-cn.tex
@@ -1,16 +1,17 @@
%% This work is released under the LaTeX Project Public License, v1.3c or later.
% This template is made by Ethan Lu.
% Please use XeLaTeX engine!
-\documentclass[zihao=-4,fontset=windows]{Beautybook-CN}
+\documentclass[lang=cn,zihao=-4,a4paper,fontset=windows]{beautybook}
% ---------------------------------------------------------------------------- %
% The Cover Theme Chosen %
% ---------------------------------------------------------------------------- %
\definecolor{coverbgcolor}{HTML}{e0e0e0}
-\definecolor{coverfgcolor}{HTML}{826e68} % The color of the background
+\definecolor{coverfgcolor}{HTML}{1f3134} % The color of the background
\definecolor{coverbar}{HTML}{7c9092} % The color of the left bar
-\definecolor{bottomcolor}{HTML}{826e68}
+\definecolor{bottomcolor}{HTML}{2c4f54}
+\definecolor{nuanbai}{HTML}{f5f5f5}
\coverstyle={ % 封面键值列表
- cover-choose=cn, % cn (需新增项\entitle{#}); en ; enfig ; birkar
+ cover-choose=cn, % cn ; en ; enfig ; birkar
}
% ---------------------------------------------------------------------------- %
% The Cover Theme Chosen %
@@ -18,7 +19,10 @@
\mathstyle={ % 数学字体键值列表
math-font=plain, %plain (默认数学字体); stix; mtpro2
}
-\setmainfont{Times New Roman}
+\RequirePackage{fontspec}
+\setmainfont{XITS}
+\setsansfont{DejaVu Sans}
+\setmonofont{Latin Modern Mono}
\renewcommand{\partial}{∂}
%% First one
\mynewtheorem{
@@ -235,16 +239,19 @@ sorting=nty
texcl=true,
fontadjust
}%
-
+% 设置1.25倍行距
+\linespread{1.25}
+\setlist[itemize]{itemsep=1pt, parsep=1pt} % 对所有itemize环境生效
+\setlist[enumerate]{itemsep=1pt, parsep=1pt} % 对所有enumerate环境生效
\begin{document}
\thispagestyle{empty}
\title{Beautybook模板简介}
-\subtitle{}
+\subtitle{这是一个副标题!}
\edition{First Edition}
-\bookseries{Illustrated by Ethan Lu}
+\bookseries{Ilustrated by Ethan Lu}
\author{Ethan Lu}
\pressname{Beautybook}
-\presslogo{inner_pics/logo.png}
+\presslogo{inner_pics/beautybook-logo.png}
\coverimage{inner_pics/coverimage.jpg}%ivy-ge998908f8_1280.jpg
\makecover
@@ -275,8 +282,8 @@ sorting=nty
%
partevenimage={songeven,even1,even2,even3,even4,mid1,mid2,mid3,mid4,mid5,mid6,mid7,mid8,mid9,mid10,mid11},
}
-\chapimage{\Beautybook@chapterimagename} % 会自动改变
-\partimage{\Beautybook@partimagename} % 会自动改变
+\chapimage{\beautybook@chapterimagename} % 会自动改变
+\partimage{\beautybook@partimagename} % 会自动改变
\makeatother
% ---------------------------------------------------------------------------- %
% The images used in the title %
@@ -331,6 +338,7 @@ Beauty\LaTeX{} 系列模板是由我所做的书籍模板系列, 名叫\textbf{B
本文将介绍本模板的一些设置内容以及基本使用方法。如果您有其他问题,建议或者意见,欢迎在 GitHub 上给我提交 \href{https://github.com/BeautyLaTeX/latex-template/issues}{issues} 或者邮件\href{h1479840692@163.com}{163邮箱}或者\href{1479840692@qq.com}{qq邮箱}联系我。我的联系方式如下,建议加入用户 QQ 群提问,这样能更快获得准确的反馈,加群时请备注 \LaTeX{} 或者 Beauty\LaTeX{} 相关内容。
\begin{itemize}
\item GitHub 地址:\href{https://github.com/BeautyLaTeX/latex-template}{https://github.com/BeautyLaTeX/latex-template}
+ \item Texpage 地址: \href{https://www.texpage.com/template/8dc933fc-6579-44c9-b660-ea58409d193b}{https://www.texpage.com/template/8dc933fc-6579-44c9-b660-ea58409d193b}
\item 下载地址:\href{https://github.com/BeautyLaTeX/latex-template/releases}{正式发行版}
\item 用户 QQ 群:809237593
\item 我的outlook邮箱:\href{https://h1479840692@outlook.com}{Outlook Email}
@@ -350,9 +358,31 @@ Beauty\LaTeX{} 系列模板是由我所做的书籍模板系列, 名叫\textbf{B
以下是最小工作示例:
\begin{lstlisting}
-\documentclass[zihao=-4,fontset=windows]{Beautybook-CN}
+\documentclass[lang=cn,zihao=-4,a4paper,fontset=windows]{beautybook}
+% ---------------------------------------------------------------------------- %
+% The Cover Theme Chosen %
+% ---------------------------------------------------------------------------- %
+\definecolor{coverbgcolor}{HTML}{e0e0e0}
+\definecolor{coverfgcolor}{HTML}{1f3134} % The color of the background
+\definecolor{coverbar}{HTML}{7c9092} % The color of the left bar
+\definecolor{bottomcolor}{HTML}{2c4f54}
+\definecolor{nuanbai}{HTML}{f5f5f5}
\coverstyle={ % 封面键值列表
- cover-choose=cn, % cn (需新增项\entitle{#}); en ; enfig ; birkar
+ cover-choose=cn, % cn ; en ; enfig ; birkar
+}
+% ---------------------------------------------------------------------------- %
+% The Cover Theme Chosen %
+% ---------------------------------------------------------------------------- %
+\mathstyle={ % 数学字体键值列表
+ math-font=plain, %plain (默认数学字体); stix; mtpro2
+}
+\RequirePackage{fontspec}
+\setmainfont{XITS}
+\setsansfont{DejaVu Sans}
+\setmonofont{Latin Modern Mono}
+\renewcommand{\partial}{∂}
+\coverstyle={ % 封面键值列表
+ cover-choose=cn, % cn ; en ; enfig ; birkar
}
\mathstyle={ % 数学字体键值列表
math-font=plain, %plain (默认数学字体); stix; mtpro2
@@ -606,8 +636,8 @@ sorting=nty
%
partevenimage={songeven,even1,even2,even3,even4,mid1,mid2,mid3,mid4,mid5,mid6,mid7,mid8,mid9,mid10,mid11},
}
-\chapimage{\Beautybook@chapterimagename} % 会自动改变
-\partimage{\Beautybook@partimagename} % 会自动改变
+\chapimage{\beautybook@chapterimagename} % 会自动改变
+\partimage{\beautybook@partimagename} % 会自动改变
\makeatother
%
\frontmatter
@@ -622,8 +652,8 @@ Introduction to Beatybook template.
\hfill
\begin{tabular}{lr}
- &---- Ethan Lu\\
- &2024-03-17
+ &-- Ethan Lu\\
+ &2024-06-30
\end{tabular}
\clearpage}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -678,15 +708,15 @@ tlmgr update --self --all --reinstall-forcibly-removed
-\chapter{Beautybook 设置说明}
+\chapter{beautybook 设置说明}
-本模板英文版基于基础的 book 文类, 中文版则基于ctexbook文类,所以 book或者ctexbook 的选项对于本模板也是有效的。默认编码为 UTF-8,推荐使用 \TeX{} Live 编译。
+本模板英文版基于基础的 book 文类, 中文版则基于ctexbook文类,所以 book或者 ctexbook 的选项对于本模板也是有效的。默认编码为 UTF-8,推荐使用 \TeX{} Live 编译。
\section{语言模式}
-本模板内含两套基础语言环境, 分别为 中文的\lstinline{Beautybook-CN.cls}、英文的\lstinline{Beautybook-EN.cls}。改变语言环境会改变图表标题的引导词(图,表),文章结构词(比如目录,参考文献等),以及定理环境中的引导词(比如定理,引理等)。不同语言模式的启用如下:
+本模板内含两套基础语言环境, 分别为中文和英文。改变语言环境会改变图表标题的引导词(图,表),文章结构词(比如目录,参考文献等),以及定理环境中的引导词(比如定理,引理等)。不同语言模式的启用如下:
\begin{lstlisting}
-\documentclass{Beautybook-CN} % 中文
-\documentclass{Beautybook-EN} % 英文
+ \documentclass[lang=cn,zihao=-4,a4paper,fontset=windows]{beautybook} % 中文
+ \documentclass[lang=en]{beautybook} % 英文
\end{lstlisting}
除模板自带的两套语言设定之外,如果您需要使用其他语言, 可以通过更改cls文件中这几处解决, 分别为
@@ -695,7 +725,6 @@ tlmgr update --self --all --reinstall-forcibly-removed
\item 更改 part环境的名称 \lstinline{Part \thepart}为 \lstinline{(你的语言中part的翻译) \thepart}
\item 主文件,即当前文件导言区中的定理引导词
\item 更改chapter环境中的part名称如第一条所示
- \item 记住, 仅有亚洲语言环境可以使用ctexbook文类, 即基于\lstinline{Beautybook-CN.cls}更改, 其他西语环境需要基于\lstinline{Beautybook-EN.cls}更改.
\end{enumerate}
@@ -751,7 +780,7 @@ tlmgr update --self --all --reinstall-forcibly-removed
\subsection{徽标}
-本文用到的 Logo 为wiki随意找的springer经典马标, 可以自己查询下载出版社logo, 为免侵权,在更换图片的时候请选择合适合法的图片进行替换。
+本文用到的 Logo 为作者自行制作的beautybook专用Logo, 另外还可以使用自己的logo, 为免侵权,在更换图片的时候请选择合适合法的图片进行替换。
\subsection{自定义封面}
@@ -808,7 +837,7 @@ tlmgr update --self --all --reinstall-forcibly-removed
\subsubsection{个人版权的盒子共两种}
\begin{definition}[][名称][def label]
- 这是个人定制的盒子定制的定理环境,这是其中定义环境示例。注意:使用方法如下
+ 这是采用个人定制的盒子制作的定理环境,这是其中定义环境示例。注意:使用方法如下
\begin{itemize}
\item 如果你没有名称和标签,使用方法为
\begin{lstlisting}
diff --git a/macros/latex/contrib/beautybook/beautybook-en.pdf b/macros/latex/contrib/beautybook/beautybook-en.pdf
index e8f4618ed8..e91e8bbe01 100644
--- a/macros/latex/contrib/beautybook/beautybook-en.pdf
+++ b/macros/latex/contrib/beautybook/beautybook-en.pdf
Binary files differ
diff --git a/macros/latex/contrib/beautybook/beautybook-en.tex b/macros/latex/contrib/beautybook/beautybook-en.tex
index 1e5dd8438e..c9c6b9405d 100644
--- a/macros/latex/contrib/beautybook/beautybook-en.tex
+++ b/macros/latex/contrib/beautybook/beautybook-en.tex
@@ -1,13 +1,21 @@
-\documentclass[12pt]{Beautybook-EN}
+\documentclass[lang=en,12pt]{beautybook}
+\RequirePackage[utf8]{inputenc}
+\RequirePackage{times} % Times New Roman Font
+\RequirePackage[T1]{fontenc}
+\RequirePackage{microtype}
+\RequirePackage{pgfplots}
+\tikzset{>=Stealth}
+\pgfplotsset{compat=1.18}
% ---------------------------------------------------------------------------- %
% The Cover Theme Chosen %
% ---------------------------------------------------------------------------- %
\definecolor{coverbgcolor}{HTML}{e0e0e0}
-\definecolor{coverfgcolor}{HTML}{826e68} % The color of the background
+\definecolor{coverfgcolor}{HTML}{1f3134} % The color of the background
\definecolor{coverbar}{HTML}{7c9092} % The color of the left bar
-\definecolor{bottomcolor}{HTML}{826e68}
-\coverstyle={ % 封面键值列表
- cover-choose=cn, % cn (需新增项\entitle{#}); en ; enfig ; birkar
+\definecolor{bottomcolor}{HTML}{2c4f54}
+\definecolor{nuanbai}{HTML}{f5f5f5}
+\coverstyle={ % cover-keys
+ cover-choose=en, % cn ; en ; enfig ; birkar
}
% ---------------------------------------------------------------------------- %
% The Cover Theme Chosen %
@@ -16,6 +24,11 @@
math-font=plain, % plain; stix; mtpro2
}
\usepackage{bm}
+\renewcommand*{\textfraction}{0.05}
+\renewcommand*{\topfraction}{0.9}
+\renewcommand*{\bottomfraction}{0.8}
+\renewcommand*{\floatpagefraction}{0.85}
+
% \overfullrule=1pt
% \RequirePackage[fontsize=13.5pt]{fontsize}
%% First one
@@ -31,17 +44,17 @@
%% Second one
\makeatletter
\mynewtcbtheorem{
- % 这个 theorem 是环境名
+ % theorem-environment
problem={
counter=tcbprob,
the counter=\thesection.\arabic{tcbprob},
- name=Problem, % 它保存到 \theorem@name 里
+ name=Problem, % it will be saved in \theorem@name
thmcolor=绛紫,
autoref name=\bfseries Problem,
style={
arc=3pt,breakable,enhanced,interior style={top color=绛紫!9 ,middle color=绛紫!6, bottom color=绛紫!3},boxrule=0pt,top=8mm,
- fuzzy shadow={-0.6mm}{0.6mm}{0mm}{0.3mm}{white!50!gray},% 上
- fuzzy shadow={0.6mm}{-0.6mm}{0mm}{0.3mm}{fill=white!40!gray},%下
+ fuzzy shadow={-0.6mm}{0.6mm}{0mm}{0.3mm}{white!50!gray},% up
+ fuzzy shadow={0.6mm}{-0.6mm}{0mm}{0.3mm}{fill=white!40!gray},%down
opacityframe=0, opacityback=0.98,
fontupper=\itshape, step={tcbprob},
before pre=\smallskip, after app=\smallskip,
@@ -58,8 +71,8 @@
autoref name=\bfseries Lemma,
style={
arc=0mm,breakable,enhanced,interior style={top color=靛蓝!9 ,middle color=靛蓝!6, bottom color=靛蓝!3},arc=3pt,boxrule=0pt,top=6mm,bottom=5mm,
- fuzzy shadow={-0.6mm}{0.6mm}{0mm}{0.3mm}{white!50!gray},% 上
- fuzzy shadow={0.6mm}{-0.6mm}{0mm}{0.3mm}{fill=white!40!gray},%下
+ fuzzy shadow={-0.6mm}{0.6mm}{0mm}{0.3mm}{white!50!gray},%
+ fuzzy shadow={0.6mm}{-0.6mm}{0mm}{0.3mm}{fill=white!40!gray},%
opacityframe=0, opacityback=0.98,
fontupper=\itshape,step={tcblem},
before pre=\smallskip, after app=\smallskip,
@@ -74,8 +87,8 @@
autoref name=\bfseries Corollary,
style={
arc=0mm,breakable,enhanced,interior style={top color=茶色!9 ,middle color=茶色!6, bottom color=茶色!3},arc=3pt,boxrule=0pt,top=6mm,bottom=5mm,
- fuzzy shadow={-0.6mm}{0.6mm}{0mm}{0.3mm}{white!50!gray},% 上
- fuzzy shadow={0.6mm}{-0.6mm}{0mm}{0.3mm}{fill=white!40!gray},%下
+ fuzzy shadow={-0.6mm}{0.6mm}{0mm}{0.3mm}{white!50!gray},%
+ fuzzy shadow={0.6mm}{-0.6mm}{0mm}{0.3mm}{fill=white!40!gray},%
opacityframe=0, opacityback=0.98,
fontupper=\itshape,step={tcbcor},
before pre=\smallskip, after app=\smallskip,
@@ -90,8 +103,8 @@
autoref name=\bfseries Proposition,
style={
arc=0mm,breakable,enhanced,interior style={top color=黛绿!9 ,middle color=黛绿!6, bottom color=黛绿!3},arc=3pt,boxrule=0pt,top=6mm,bottom=5mm,
- fuzzy shadow={-0.6mm}{0.6mm}{0mm}{0.3mm}{white!50!gray},% 上
- fuzzy shadow={0.6mm}{-0.6mm}{0mm}{0.3mm}{fill=white!40!gray},%下
+ fuzzy shadow={-0.6mm}{0.6mm}{0mm}{0.3mm}{white!50!gray},%
+ fuzzy shadow={0.6mm}{-0.6mm}{0mm}{0.3mm}{fill=white!40!gray},%
opacityframe=0, opacityback=0.98,
fontupper=\itshape,step={tcbprop},
before pre=\smallskip, after app=\smallskip,
@@ -106,8 +119,8 @@
autoref name=\bfseries Definition,
style={
arc=0mm,breakable,enhanced,interior style={top color=茜色!9 ,middle color=茜色!6, bottom color=茜色!3},arc=3pt,boxrule=0pt,top=6mm,bottom=5mm,
- fuzzy shadow={-0.6mm}{0.6mm}{0mm}{0.3mm}{white!50!gray},% 上
- fuzzy shadow={0.6mm}{-0.6mm}{0mm}{0.3mm}{fill=white!40!gray},%下
+ fuzzy shadow={-0.6mm}{0.6mm}{0mm}{0.3mm}{white!50!gray},%
+ fuzzy shadow={0.6mm}{-0.6mm}{0mm}{0.3mm}{fill=white!40!gray},%
opacityframe=0, opacityback=0.98,
fontupper=\normalsize,step={tcbdefi},
before pre=\smallskip, after app=\smallskip,
@@ -122,8 +135,8 @@
autoref name=\bfseries Example,
style={
arc=0mm,breakable,enhanced,interior style={top color=黛绿!9 ,middle color=黛绿!6, bottom color=黛绿!3},arc=3pt,boxrule=0pt,top=6mm,bottom=5mm,
- fuzzy shadow={-0.6mm}{0.6mm}{0mm}{0.3mm}{white!50!gray},% 上
- fuzzy shadow={0.6mm}{-0.6mm}{0mm}{0.3mm}{fill=white!40!gray},%下
+ fuzzy shadow={-0.6mm}{0.6mm}{0mm}{0.3mm}{white!50!gray},%
+ fuzzy shadow={0.6mm}{-0.6mm}{0mm}{0.3mm}{fill=white!40!gray},%
opacityframe=0, opacityback=0.98,
fontupper=\normalsize,step={tcbexam},
before pre=\smallskip, after app=\smallskip,
@@ -138,8 +151,8 @@
autoref name=\bfseries Exercise,
style={
arc=0mm,breakable,enhanced,interior style={top color=绛紫!9 ,middle color=绛紫!6, bottom color=绛紫!3},arc=3pt,boxrule=0pt,top=6mm,bottom=5mm,
- fuzzy shadow={-0.6mm}{0.6mm}{0mm}{0.3mm}{white!50!gray},% 上
- fuzzy shadow={0.6mm}{-0.6mm}{0mm}{0.3mm}{fill=white!40!gray},%下
+ fuzzy shadow={-0.6mm}{0.6mm}{0mm}{0.3mm}{white!50!gray},%
+ fuzzy shadow={0.6mm}{-0.6mm}{0mm}{0.3mm}{fill=white!40!gray},%
opacityframe=0, opacityback=0.9,
fontupper=\normalsize,step={tcbexer},
before pre=\smallskip, after app=\smallskip,
@@ -154,8 +167,8 @@
autoref name=\bfseries Theorem,
style={
arc=0mm,breakable,enhanced,interior style={top color=黛绿!9 ,middle color=黛绿!6, bottom color=黛绿!3},arc=3pt,boxrule=0pt,top=6mm,bottom=5mm,
- fuzzy shadow={-0.6mm}{0.6mm}{0mm}{0.3mm}{white!50!gray},% 上
- fuzzy shadow={0.6mm}{-0.6mm}{0mm}{0.3mm}{fill=white!40!gray},%下
+ fuzzy shadow={-0.6mm}{0.6mm}{0mm}{0.3mm}{white!50!gray},%
+ fuzzy shadow={0.6mm}{-0.6mm}{0mm}{0.3mm}{fill=white!40!gray},%
opacityframe=0, opacityback=0.98,
fontupper=\itshape,step={tcbthm},
before pre=\smallskip, after app=\smallskip,
@@ -172,8 +185,8 @@
autoref name=\bfseries Conjecture,
style={
arc=0mm,breakable,enhanced,interior style={top color=靛蓝!9 ,middle color=靛蓝!6, bottom color=靛蓝!3},arc=3pt,boxrule=0pt,top=6mm,bottom=5mm,
- fuzzy shadow={-0.6mm}{0.6mm}{0mm}{0.3mm}{white!50!gray},% 上
- fuzzy shadow={0.6mm}{-0.6mm}{0mm}{0.3mm}{fill=white!40!gray},%下
+ fuzzy shadow={-0.6mm}{0.6mm}{0mm}{0.3mm}{white!50!gray},%
+ fuzzy shadow={0.6mm}{-0.6mm}{0mm}{0.3mm}{fill=white!40!gray},%
opacityframe=0, opacityback=0.98,
fontupper=\itshape,step={tcbconj},
before pre=\smallskip, after app=\smallskip,
@@ -187,7 +200,7 @@
%
-%% --------参考文献
+%% --------reference
\RequirePackage[
backend=biber,
style=numeric,
@@ -238,13 +251,13 @@ sorting=nty
\begin{document}
\thispagestyle{empty}
-\title{An Introduction to Beautybook template}
-\subtitle{}
+\title{An Introduction to beautybook template}
+\subtitle{A subtitle here}
\edition{First Edition}
-\bookseries{Illustrated by Ethan Lu}
+\bookseries{Ilustrated by Ethan Lu}
\author{Ethan Lu}
-\pressname{Beautybook}
-\presslogo{inner_pics/logo.png}
+\pressname{beautybook}
+\presslogo{inner_pics/beautybook-logo.png}
\coverimage{inner_pics/coverimage.jpg}%ivy-ge998908f8_1280.jpg
\makecover
@@ -275,8 +288,8 @@ sorting=nty
%
partevenimage={songeven,even1,even2,even3,even4,mid1,mid2,mid3,mid4,mid5,mid6,mid7,mid8,mid9,mid10,mid11},
}
-\chapimage{\Beautybook@chapterimagename}
-\partimage{\Beautybook@partimagename}
+\chapimage{\beautybook@chapterimagename}
+\partimage{\beautybook@partimagename}
\makeatother
% ---------------------------------------------------------------------------- %
% The images used in the title %
@@ -303,8 +316,8 @@ An introduction to the beautybook template.
\hfill
\begin{tabular}{lr}
- &--- Ethan Lu\\
- &2024-03-17
+ &-- Ethan Lu\\
+ & 2024-06-30
\end{tabular}
\clearpage}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -317,13 +330,13 @@ An introduction to the beautybook template.
\pagenumbering{arabic}
\partabstract{\hspace*{2em} Here is the introduction area of each part, where you can write a concise overview of the part, of course, if there is nothing to say, you can leave it blank.}
-\part{The template usage introduction of \textbf{Beautybook}}
+\part{The template usage introduction of \textbf{beautybook}}
-\chapter{A short introduction of \textbf{Beautybook}}
+\chapter{A short introduction of \textbf{beautybook}}
\section{Introduction}
-The Beauty\LaTeX{} collection is a series of templates authored by a humble, unknown individual. In fact, there are only two series, one is the custom book template \textbf{fancybook } , which is dedicated to the fresh and elegant style, the other is my flagship product-\textbf{ Beautybook } ! Why did I choose such an unusual name? My answer is, originally I wanted to name it elegantboook, but there is already the famous elegantbook template. Inspired by the old poem "There is a jade-like beauty waiting for you in the book", the template is named ``Beautybook", which means a beautiful woman in your arms and the fragrance of a book overflowing! Therefore, this is the origin of the name \textbf{Beautybook } !
+The Beauty\LaTeX{} collection is a series of templates authored by a humble, unknown individual. In fact, there are only two series, one is the custom book template \textbf{fancybook } , which is dedicated to the fresh and elegant style, the other is my flagship product-\textbf{ beautybook } ! Why did I choose such an unusual name? My answer is, originally I wanted to name it elegantboook, but there is already the famous elegantbook template. Inspired by the old poem "There is a jade-like beauty waiting for you in the book", the template is named ``beautybook", which means a beautiful woman in your arms and the fragrance of a book overflowing! Therefore, this is the origin of the name \textbf{beautybook } !
I am committed to creating a series of beautiful, elegant, simple template to facilitate the use of users and myself. Version changes frequently, please pay attention to version information. Before starting to use templates, it is recommended to choose the latest official version! The latest test version will usually be released in the QQ Group, you can download it and try it yourself!
@@ -336,6 +349,7 @@ This article covers some of the setup and basic usage of this template. If you h
The Project Addresses are the following.
\begin{itemize}
\item GitHub repository: \href{https://github.com/BeautyLaTeX/latex-template}{https://github.com/BeautyLaTeX/latex-template},
+ \item Texpage : \href{https://www.texpage.com/template/8dc933fc-6579-44c9-b660-ea58409d193b}{https://www.texpage.com/template/8dc933fc-6579-44c9-b660-ea58409d193b}
\item Download Release: \href{https://github.com/BeautyLaTeX/latex-template/releases}{Official release},
\item User QQ Group: 809237593. (!If you are not in China, please e-mail me at \href{h1479840692@outlook.com}{outlook-email}.)
\end{itemize}
@@ -344,7 +358,7 @@ The Project Addresses are the following.
\section{Installation and Maintenance of Template}
-There are two ways you can use this template. The first method is trivial that just download the zip of template from above channel, and then unzip and compile the main file in the archive (i.e. a file with a name like ``Beautybook-xx. tex"). The second way is uploading the zip of template to \texttt{overleaf} to comply.
+There are two ways you can use this template. The first method is trivial that just download the zip of template from above channel, and then unzip and compile the main file in the archive (i.e. a file with a name like ``beautybook-xx. tex"). The second way is uploading the zip of template to \texttt{overleaf} to comply.
Note that if you choose the second way, you must write \lstinline{math-font=plain} in the premble of the main file!
@@ -357,16 +371,31 @@ To install locally, follow above steps to download the latest version from GitHu
The following is an example of a minimal work:
\begin{lstlisting}
-\documentclass[12pt]{Beautybook-EN}
-\coverstyle={
- cover-choose=enfig, % cn (en ; enfig ; birkar)
+\documentclass[lang=en,12pt]{beautybook}
+\RequirePackage[utf8]{inputenc}
+\RequirePackage{times} % Times New Roman Font
+\RequirePackage[T1]{fontenc}
+\RequirePackage{microtype}
+\RequirePackage{pgfplots}
+\tikzset{>=Stealth}
+\pgfplotsset{compat=1.18}
+% ------------------------------------------------- %
+% The Cover Theme Chosen %
+% ------------------------------------------------- %
+\definecolor{coverbgcolor}{HTML}{e0e0e0}
+\definecolor{coverfgcolor}{HTML}{1f3134} % The color of the background
+\definecolor{coverbar}{HTML}{7c9092} % The color of the left bar
+\definecolor{bottomcolor}{HTML}{2c4f54}
+\definecolor{nuanbai}{HTML}{f5f5f5}
+\coverstyle={ % cover-keys
+ cover-choose=cn, % cn ; en ; enfig ; birkar
}
+% ---------------------------------------------------------------------------- %
+% The Cover Theme Chosen %
+% ---------------------------------------------------------------------------- %
\mathstyle={
math-font=plain, % plain; stix; mtpro2
}
-\usepackage{bm}
-% \overfullrule=1pt
-% \RequirePackage[fontsize=13.5pt]{fontsize}
%% First one
\mynewtheorem{
defi={\textbf{Definition}}[section]{interior style={left color=ReD!8,right color=ReD!5!CyaN!50}, borderline west={1.5mm}{0mm}{ReD}},
@@ -377,6 +406,162 @@ The following is an example of a minimal work:
cor={\textbf{Corollary}}[chapter]{interior style={left color=violet!8,right color=violet!5!CyaN!50}, borderline west={1.5mm}{0mm}{violet}},
}
\newtheorem*{remark}{\textbf{Remark}}
+%% Second one
+\makeatletter
+\mynewtcbtheorem{
+ % theorem environment
+ problem={
+ counter=tcbprob,
+ the counter=\thesection.\arabic{tcbprob},
+ name=Problem,
+ thmcolor=purple,
+ autoref name=\bfseries Problem,
+ style={
+ arc=3pt,breakable,enhanced,interior style={top color=purplepurplepurplegreen!9 ,middle color=purplepurplepurplegreen!6, bottom color=purplepurplepurplegreen!3},boxrule=0pt,top=8mm,
+ fuzzy shadow={-0.6mm}{0.6mm}{0mm}{0.3mm}{white!50!gray},% up
+ fuzzy shadow={0.6mm}{-0.6mm}{0mm}{0.3mm}{fill=white!40!gray},%down
+ opacityframe=0, opacityback=0.98,
+ fontupper=\itshape, step={tcbprob},
+ before pre=\smallskip, after app=\smallskip,
+ overlay unbroken=\my@theorem@overlay@unbroken{Problem\ \thetcbprob}{purplepurplepurplegreen},
+ overlay first=\my@theorem@overlay@first{Problem\ \thetcbprob}{purplepurplepurplegreen},
+ overlay last=\my@theorem@overlay@last{purplepurplepurplegreen},
+ }
+ },
+ lemma={
+ counter=tcblem,
+ the counter=\thesection.\arabic{tcblem},
+ name=Lemma,
+ lemcolor=purplepurplegreen,
+ autoref name=\bfseries Lemma,
+ style={
+ arc=0mm,breakable,enhanced,interior style={top color=purplepurplegreen!9 ,middle color=purplepurplegreen!6, bottom color=purplepurplegreen!3},arc=3pt,boxrule=0pt,top=6mm,bottom=5mm,
+ fuzzy shadow={-0.6mm}{0.6mm}{0mm}{0.3mm}{white!50!gray},%
+ fuzzy shadow={0.6mm}{-0.6mm}{0mm}{0.3mm}{fill=white!40!gray},%
+ opacityframe=0, opacityback=0.98,
+ fontupper=\itshape,step={tcblem},
+ before pre=\smallskip, after app=\smallskip,
+ overlay unbroken=\my@lemma@overlay@unbroken{\lemma@name\ \thetcblem}{\lemma@lemcolor},
+ overlay first=\my@lemma@overlay@first{\lemma@name\ \thetcblem}{\lemma@lemcolor},
+ overlay last=\my@lemma@overlay@last{\lemma@lemcolor},
+ }
+ },
+ corollary={
+ counter=tcbcor,
+ the counter=\thesection.\arabic{tcbcor},
+ autoref name=\bfseries Corollary,
+ style={
+ arc=0mm,breakable,enhanced,interior style={top color=purplegreen!9 ,middle color=purplegreen!6, bottom color=purplegreen!3},arc=3pt,boxrule=0pt,top=6mm,bottom=5mm,
+ fuzzy shadow={-0.6mm}{0.6mm}{0mm}{0.3mm}{white!50!gray},%
+ fuzzy shadow={0.6mm}{-0.6mm}{0mm}{0.3mm}{fill=white!40!gray},%
+ opacityframe=0, opacityback=0.98,
+ fontupper=\itshape,step={tcbcor},
+ before pre=\smallskip, after app=\smallskip,
+ overlay unbroken=\my@lemma@overlay@unbroken{Corollary\ \thetcbcor}{purplegreen},
+ overlay first=\my@lemma@overlay@first{Corollary\ \thetcbcor}{purplegreen},
+ overlay last=\my@lemma@overlay@last{purplegreen},
+ }
+ },
+ proposition={
+ counter=tcbprop,
+ the counter=\thesection.\arabic{tcbprop},
+ autoref name=\bfseries Proposition,
+ style={
+ arc=0mm,breakable,enhanced,interior style={top color=green!9 ,middle color=green!6, bottom color=green!3},arc=3pt,boxrule=0pt,top=6mm,bottom=5mm,
+ fuzzy shadow={-0.6mm}{0.6mm}{0mm}{0.3mm}{white!50!gray},%
+ fuzzy shadow={0.6mm}{-0.6mm}{0mm}{0.3mm}{fill=white!40!gray},%
+ opacityframe=0, opacityback=0.98,
+ fontupper=\itshape,step={tcbprop},purplered
+ before pre=\smallskip, after app=\smallskip,
+ overlay unbroken=\my@lemma@overlay@unbroken{Proposition\ \thetcbprop}{green},
+ overlay first=\my@lemma@overlay@first{Proposition\ \thetcbprop}{green},
+ overlay last=\my@lemma@overlay@last{green},
+ }
+ },
+ definition={
+ counter=tcbdefi,
+ the counter=\thesection.\arabic{tcbdefi},
+ autoref name=\bfseries Definition,
+ style={
+ arc=0mm,breakable,enhanced,interior style={top color=purplered!9 ,middle color=purplered!6, bottom color=purplered!3},arc=3pt,boxrule=0pt,top=6mm,bottom=5mm,
+ fuzzy shadow={-0.6mm}{0.6mm}{0mm}{0.3mm}{white!50!gray},%
+ fuzzy shadow={0.6mm}{-0.6mm}{0mm}{0.3mm}{fill=white!40!gray},%
+ opacityframe=0, opacityback=0.98,
+ fontupper=\normalsize,step={tcbdefi},
+ before pre=\smallskip, after app=\smallskip,
+ overlay unbroken=\my@lemma@overlay@unbroken{Definition\ \thetcbdefi}{purplered},
+ overlay first=\my@lemma@overlay@first{Definition\ \thetcbdefi}{purplered},
+ overlay last=\my@lemma@overlay@last{purplered},
+ }
+ },
+ example={
+ counter=tcbexam,
+ the counter=\thesection.\arabic{tcbexam},
+ autoref name=\bfseries Example,
+ style={
+ arc=0mm,breakable,enhanced,interior style={top color=red!9 ,middle color=red!6, bottom color=red!3},arc=3pt,boxrule=0pt,top=6mm,bottom=5mm,
+ fuzzy shadow={-0.6mm}{0.6mm}{0mm}{0.3mm}{white!50!gray},%
+ fuzzy shadow={0.6mm}{-0.6mm}{0mm}{0.3mm}{fill=white!40!gray},%
+ opacityframe=0, opacityback=0.98,
+ fontupper=\normalsize,step={tcbexam},redpurple
+ before pre=\smallskip, after app=\smallskip,
+ overlay unbroken=\my@lemma@overlay@unbroken{Example\ \thetcbexam}{red},
+ overlay first=\my@lemma@overlay@first{Example\ \thetcbexam}{red},
+ overlay last=\my@lemma@overlay@last{red},
+ }
+ },
+ Exercise={
+ counter=tcbexer,
+ the counter=\thechapter.\arabic{tcbexer},
+ autoref name=\bfseries Exercise,
+ style={
+ arc=0mm,breakable,enhanced,interior style={top color=redpurple!9 ,middle color=redpurple!6, bottom color=redpurple!3},arc=3pt,boxrule=0pt,top=6mm,bottom=5mm,
+ fuzzy shadow={-0.6mm}{0.6mm}{0mm}{0.3mm}{white!50!gray},%
+ fuzzy shadow={0.6mm}{-0.6mm}{0mm}{0.3mm}{fill=white!40!gray},%
+ opacityframe=0, opacityback=0.9,
+ fontupper=\normalsize,step={tcbexer},
+ before pre=\smallskip, after app=\smallskip,
+ overlay unbroken=\my@lemma@overlay@unbroken{Exercise\ \thetcbexer}{redpurple},
+ overlay first=\my@lemma@overlay@first{Exercise\ \thetcbexer}{redpurple},
+ overlay last=\my@lemma@overlay@last{redpurple},
+ }
+ },
+ theorem={
+ counter=tcbthm,
+ the counter=\thesection.\arabic{tcbthm},
+ autoref name=\bfseries Theorem,
+ style={
+ arc=0mm,breakable,enhanced,interior style={top color=purple!9 ,middle color=purple!6, bottom color=purple!3},arc=3pt,boxrule=0pt,top=6mm,bottom=5mm,
+ fuzzy shadow={-0.6mm}{0.6mm}{0mm}{0.3mm}{white!50!gray},%
+ fuzzy shadow={0.6mm}{-0.6mm}{0mm}{0.3mm}{fill=white!40!gray},%
+ opacityframe=0, opacityback=0.98,
+ fontupper=\itshape,step={tcbthm},
+ before pre=\smallskip, after app=\smallskip,
+ overlay unbroken=\my@lemma@overlay@unbroken{Theorem\ \thetcbthm}{purple},
+ overlay first=\my@lemma@overlay@first{Theorem\ \thetcbthm}{purple},
+ overlay last=\my@lemma@overlay@last{purple},
+ }
+ },
+ conjecture={
+ counter=tcbconj,
+ the counter=\thesection.\arabic{tcbconj},
+ name=Conjecture,
+ lemcolor=purple,
+ autoref name=\bfseries Conjecture,
+ style={
+ arc=0mm,breakable,enhanced,interior style={top color=purple!9 ,middle color=purple!6, bottom color=purple!3},arc=3pt,boxrule=0pt,top=6mm,bottom=5mm,
+ fuzzy shadow={-0.6mm}{0.6mm}{0mm}{0.3mm}{white!50!gray},%
+ fuzzy shadow={0.6mm}{-0.6mm}{0mm}{0.3mm}{fill=white!40!gray},%
+ opacityframe=0, opacityback=0.98,
+ fontupper=\itshape,step={tcbconj},
+ before pre=\smallskip, after app=\smallskip,
+ overlay unbroken=\my@lemma@overlay@unbroken{Conjecture\ \thetcblem}{purple},
+ overlay first=\my@lemma@overlay@first{Conjecture\ \thetcblem}{purple},
+ overlay last=\my@lemma@overlay@last{purple},
+ }
+ },
+}
+\makeatother
%
@@ -430,29 +615,34 @@ sorting=nty
\begin{document}
\thispagestyle{empty}
-\title{An Introduction to Beautybook template}
+\title{Your title}
\subtitle{}
-\edition{First Edition}
-\bookseries{Illustrated by Ethan Lu}
-\author{Ethan Lu}
-\pressname{Beautybook}
-\presslogo{inner_pics/logo.png}
+\edition{The Edition}
+\bookseries{Illustrated by author}
+\author{author}
+\pressname{beautybook}
+\presslogo{inner_pics/beautybook-logo.png}
\coverimage{inner_pics/coverimage.jpg}%ivy-ge998908f8_1280.jpg
\makecover
-
+\makeatletter
+% ---------------------------------------------------------------------------- %
+% The Sidebar Theme Chosen %
+% ---------------------------------------------------------------------------- %
\definecolor{bg}{HTML}{e0e0e0}
\definecolor{fg}{HTML}{2c4f54}
\colorlet{outermarginbgcolor}{bg}
\colorlet{outermarginfgcolor}{fg}
-\colorlet{framegolden}{fg}
-\colorlet{framegray}{bg!50}
-
-\makeatletter
% set the contents of the outer margin on even and odd pages for scrheadings, plain and scth
-\oddoutermargin{\sffamily \leftmark} % Odd page
-\evenoutermargin{\sffamily\@title} % Even page
-%
+\oddoutermargin{\sffamily \leftmark} % Odd sidebar text
+\evenoutermargin{\sffamily\@title} % Even sidebar text
+% ---------------------------------------------------------------------------- %
+% The Sidebar Theme Chosen %
+% ---------------------------------------------------------------------------- %
+
+% ---------------------------------------------------------------------------- %
+% The images used in the title %
+% ---------------------------------------------------------------------------- %
\titleimage{
chapteroddimage={odd1,odd2,odd3,odd4,odd5,odd6,odd7,odd8,odd9,odd10,odd11,odd12,odd13,odd14,odd15,mid1,mid2,mid3,mid4,mid5,mid6,mid7,mid8,mid9,mid10,mid11},
%
@@ -462,10 +652,22 @@ sorting=nty
%
partevenimage={songeven,even1,even2,even3,even4,mid1,mid2,mid3,mid4,mid5,mid6,mid7,mid8,mid9,mid10,mid11},
}
-\chapimage{\Beautybook@chapterimagename}
-\partimage{\Beautybook@partimagename}
+\chapimage{\beautybook@chapterimagename}
+\partimage{\beautybook@partimagename}
\makeatother
-%
+% ---------------------------------------------------------------------------- %
+% The images used in the title %
+% ---------------------------------------------------------------------------- %
+
+% ---------------------------------------------------------------------------- %
+% The Color Chosen for The Magic Box %
+% ---------------------------------------------------------------------------- %
+\colorlet{framegolden}{fg} % The line color of the magic box
+\colorlet{framegray}{bg!50} % The background color of the magic box
+% ---------------------------------------------------------------------------- %
+% The Color Chosen for The Magic Box %
+% ---------------------------------------------------------------------------- %
+
\frontmatter
\pagenumbering{Roman}
@@ -478,8 +680,8 @@ An introduction to the beautybook template.
\hfill
\begin{tabular}{lr}
- &--- Ethan Lu\\
- &2024-03-17
+ &-- author\\
+ & 2024-06-30
\end{tabular}
\clearpage}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -492,11 +694,11 @@ An introduction to the beautybook template.
\pagenumbering{arabic}
\partabstract{\hspace*{2em} Here is the introduction area of each part, where you can write a concise overview of the part, of course, if there is nothing to say, you can leave it blank.}
-\part{The template usage introduction of \textbf{Beautybook}}
+\part{Part}
-\chapter{A short introduction of \textbf{Beautybook}}
+\chapter{Chapter}
-\section{Introduction}
+\section{Section}
% your main contents here!
@@ -528,17 +730,17 @@ tlmgr update --self --all --reinstall-forcibly-removed
Please refer to \href{https://tex.stackexchange.com/questions/55437/how-do-i-update-my-tex-distribution}{How do I update my \TeX{} distribution?} for more information.
-\chapter{The setting of Beautybook Template}
+\chapter{The setting of beautybook Template}
The English version of this template is based on the basic ``book" class, and the Chinese version is based on the ``ctexbook" class, so the option of book or ctexbook is also valid for this template. The default encoding is \texttt{UTF-8}, and it is recommended to compile with \TeX{} Live.
\section{Language Mode}
-This template includes two basic locales: \lstinline{Beautybook-CN.cls} in Chinese and \lstinline{Beautybook-EN.cls} in English. Changing the locales alters the headings (including figures and tables) of the chart title, the article formatting (such as table of contents and references), and the language used for theorem contexts (such as Theorem, Lemma, etc.). You can switch between these language modes using the following instructions in the top of the premble:
+This template includes two basic locales: Chinese and English. Changing the locales alters the headings (including figures and tables) of the chart title, the article formatting (such as table of contents and references), and the language used for theorem contexts (such as Theorem, Lemma, etc.). You can switch between these language modes using the following instructions in the top of the premble:
\begin{lstlisting}
-\documentclass{Beautybook-CN} % chinese
-\documentclass{Beautybook-EN} % english
+ \documentclass[lang=cn,zihao=-4,a4paper,fontset=windows]{beautybook} % chinese
+ \documentclass[lang=en,12pt]{beautybook} % english
\end{lstlisting}
In addition to the two language settings that come with the template, if you need to use another language, you can do so by modifying the \texttt{.cls} file as follows
@@ -546,7 +748,6 @@ In addition to the two language settings that come with the template, if you nee
\begin{enumerate}
\item Change the name of the part environment \lstinline{Part\ \thepart} to \lstinline{(translation of part in your language)\ \thepart}
\item Theorem environment guide words in premble, such as Theorem.
- \item Please remember that only Asian languages can be modified based on \lstinline{Beautybook-CN.cls}, other foreign languages need to be modified based on \lstinline{Beautybook-EN.cls}.
\end{enumerate}
\section{Theme Color}
@@ -697,19 +898,19 @@ Here is the effect of the theorem environment provided by amsthm.
\end{definition}
\begin{theorem}
- The usage is the same as above, refer to the tag \ref{def label} below or you can \autoref{def label}.
+ The usage is the same as above, refer to the tag \ref{def label} below or you can use \autoref{def label}.
\end{theorem}
\begin{lemma}
- The usage is the same as above, refer to the tag \ref{def label} below or you can \autoref{def label}.
+ The usage is the same as above, refer to the tag \ref{def label} below or you can use \autoref{def label}.
\end{lemma}
\begin{corollary}
- The usage is the same as above, refer to the tag \ref{def label} below or you can \autoref{def label}.
+ The usage is the same as above, refer to the tag \ref{def label} below or you can use \autoref{def label}.
\end{corollary}
\newpage
\begin{example}
- The usage is the same as above, refer to the tag \ref{def label} below or you can \autoref{def label}.
+ The usage is the same as above, refer to the tag \ref{def label} below or you can use \autoref{def label}.
\end{example}
\subsection*{Ancient style box}
\begin{fancybox}
diff --git a/macros/latex/contrib/beautybook/Beautybook-CN.cls b/macros/latex/contrib/beautybook/beautybook.cls
index d3ab12a333..73959a7594 100644
--- a/macros/latex/contrib/beautybook/Beautybook-CN.cls
+++ b/macros/latex/contrib/beautybook/beautybook.cls
@@ -1,143 +1,161 @@
-%This Class is based on the default book class and options will be passed
\NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{Beautybook-CN}[02-10-2023 V8.0 Beautybook Class]
-\DeclareOption*{\PassOptionsToClass{\CurrentOption}{ctexbook}}
-\ProcessOptions\relax
-\LoadClass[twoside,a4paper]{ctexbook}
+\ProvidesClass{beautybook}[02-07-2024 V10.0 beautybook Class]
+% /* -------------------------------------------------------------------------- */
+% /* 切换文类 */
+% /* -------------------------------------------------------------------------- */
+\DeclareKeys{% = \DeclareKeys[autoclass]
+ lang .choice: ,
+ lang/en .code:n = \def\beautybook@class{book} ,
+ lang/cn .code:n = \def\beautybook@class{ctexbook} ,
+ lang .initial:n = en ,
+ unknown .code:n = \beautybook@unknown ,
+}
+
+\ExplSyntaxOn
+\clist_new:N \beautybook@unknownoptions
+\cs_new_protected:Npn \beautybook@unknown
+ {
+ \bool_if:NTF \l__keys_no_value_bool
+ { % eg. 12pt, twoside
+ \clist_put_right:Nx \beautybook@unknownoptions
+ { \l_keys_key_str }
+ }
+ { % eg. zihao=4, fontset=windows
+ \clist_put_right:Nx \beautybook@unknownoptions
+ { \l_keys_key_str = { \exp_not:o \l_keys_value_tl } }
+ }
+ }
+\ExplSyntaxOff
+
+\ProcessKeyOptions % = \ProcessKeyOptions[beautybook]
+\PassOptionsToClass\beautybook@unknownoptions\beautybook@class
+%% 如果不需要过滤上面定义的 lang 等键,可以直接使用
+%% \PassOptionsToClass\@raw@classoptionslist\beautybook@class
+
+\LoadClass{\beautybook@class}
+% /* ---------------------------------- 切换文类 ---------------------------------- */
+
+
+% /* -------------------------------------------------------------------------- */
+% /* 判断 A4 paper程序 */
+% /* -------------------------------------------------------------------------- */
+\makeatletter
+\ExplSyntaxOn
+\cs_new:Npn \ifaivpaper@TF
+ {
+ \bool_lazy_and:nnTF
+ { \dim_compare_p:nNn { 297mm } = { \paperheight } } % 不能是 29.7cm
+ { \dim_compare_p:nNn { 210mm } = { \paperwidth } }
+ }
+\ExplSyntaxOff
+% \ifaivpaper@TF{a4paper内容}{not a4paper内容} % 这个用在想要判断a4paper的地方
+\makeatother
+% /* -------------------------------------------------------------------------- */
+% /* 判断 A4 paper程序 */
+% /* -------------------------------------------------------------------------- */
+
+
\RequirePackage[dvipsnames,svgnames,x11names,table]{xcolor}
-\RequirePackage{cncolours}
-\setmainfont{Times New Roman}
-\setsansfont{HONOR Sans}
-\setmonofont{Latin Modern Mono}
-\colorlet{outermarginfgcolor}{DarkCyan} % foregroundcolor 较深
-\colorlet{outermarginbgcolor}{DarkCyan!30} % backgroundcolor 较浅
-\RequirePackage{bropd} % math 自适应数学括号命令 \br{} !!!
-\RequirePackage{tikz-imagelabels} % tikz图像标注
-\RequirePackage{epigraph-keys} % 名言引用
-\RequirePackage{fitbox} % 图像自适应
-\RequirePackage{pgfornament-han}
-\RequirePackage{tikz}
-\usetikzlibrary{calc,shadows,hobby,intersections, decorations.markings, decorations.pathreplacing,spy,arrows,shapes,fadings,trees,mindmap,patterns,shapes.arrows,shapes.symbols,tikzmark,shapes.geometric,graphs, quotes, angles,decorations.pathmorphing,through,shadings,backgrounds,positioning,fit,arrows.meta,shapes.misc,decorations.shapes}
-\RequirePackage{pgfplots} %画图 %%页面样式设计核心包 %提供\pgfonlayer命令以及下列图层指令
-\pgfplotsset{compat=1.18}
-%
+\RequirePackage{tikz} %%页面样式设计核心包 %提供\pgfonlayer命令
+\usetikzlibrary{cd,calc,shadows,hobby,intersections, decorations.markings, decorations.pathreplacing,spy,arrows,shapes,fadings,trees,mindmap,patterns,shapes.arrows,shapes.symbols,tikzmark,shapes.geometric,graphs, quotes, angles,decorations.pathmorphing,through,shadings,backgrounds,positioning,fit,arrows.meta,shapes.misc,decorations.shapes}
+
+% /* --------------------------------- 模板默认颜色 --------------------------------- */
+\colorlet{outermarginfgcolor}{DarkCyan} % foregroundcolor 较深的前景色
+\colorlet{outermarginbgcolor}{DarkCyan!30} % backgroundcolor 较浅的背景色
+% /* -------------------------------------------------------------------------- */
+
+% /* -------------------------------------------------------------------------- */
+% /* 封面切换程序 */
+% /* -------------------------------------------------------------------------- */
+
\ExplSyntaxOn
-% 封面切换程序 (LaTeX3)!
-\keys_define:nn {Beautybook/coverstyle}
+\keys_define:nn {beautybook/coverstyle}
{
cover-choose.choice:,
cover-choose.value_required:n = true,
- cover-choose/cn.code:n = {\RequirePackage{stys/Beautybook-cover-cn}},
- cover-choose/en.code:n = {\RequirePackage{stys/Beautybook-cover-en}},
- cover-choose/enfig.code:n = {\RequirePackage{stys/Beautybook-cover-enfig}},
- cover-choose/birkar.code:n = {\RequirePackage{stys/Beautybook-cover-birkar}},
+ cover-choose/cn.code:n = {\RequirePackage{stys/beautybook-cover-cn}},
+ cover-choose/en.code:n = {\RequirePackage{stys/beautybook-cover-en}},
+ cover-choose/enfig.code:n = {\RequirePackage{stys/beautybook-cover-enfig}},
+ cover-choose/birkar.code:n = {\RequirePackage{stys/beautybook-cover-birkar}},
%cover-choose .initial:n = en , % 设置 en 为初始值
}
-\newtoks \l__Beautybook_tmpa_toks
+\newtoks \l__beautybook_tmpa_toks
\cs_new_protected:Npn \coverstyle
{
- \tex_afterassignment:D \__Beautybook_set_coverstyle:
- \l__Beautybook_tmpa_toks
+ \tex_afterassignment:D \__beautybook_set_coverstyle:
+ \l__beautybook_tmpa_toks
}
-\cs_new:Npn \__Beautybook_set_coverstyle:
- { \keys_set:nV { Beautybook / coverstyle } \l__Beautybook_tmpa_toks }
+\cs_new:Npn \__beautybook_set_coverstyle:
+ { \keys_set:nV { beautybook / coverstyle } \l__beautybook_tmpa_toks }
% Math fonts
-\keys_define:nn {Beautybook/mathstyle}
+\keys_define:nn {beautybook/mathstyle}
{
math-font.choice:,
math-font.value_required:n = true,
- math-font/plain.code:n={},
- math-font/stix.code:n={
- \RequirePackage{stix}
- },
+ math-font/plain.code:n={
+ \RequirePackage{amssymb,amsfonts,upgreek}
+ },
math-font/mtpro2.code:n = {
+ \RequirePackage{amssymb,amsfonts,upgreek}
+ \let\Bbbk\relex
\RequirePackage{mtpro2}
\RequirePackage{bm}
- \DeclareFontFamily{U}{nxlmi}{}
- \DeclareFontSubstitution{U}{nxlmi}{m}{it}
- \DeclareFontShape{U}{nxlmi}{m}{it}{
- <-6.3> nxlmi05
- <6.3-8.6> nxlmi07
- <8.6-> nxlmi0
- }{}
-
- \DeclareFontShape{U}{nxlmi}{b}{it}{
- <-6.3> nxlbmi05
- <6.3-8.6> nxlbmi07
- <8.6-> nxlbmi0
- }{}
- \renewcommand{\partial}{{\text{\usefont{U}{nxlmi}{m}{it}\symbol{64}}\mspace{1mu}}}
},
%cover-choose .initial:n = plain , % 设置 en 为初始值
}
\cs_new_protected:Npn \mathstyle
{
- \tex_afterassignment:D \__Beautybook_set_mathstyle:
- \l__Beautybook_tmpa_toks
+ \tex_afterassignment:D \__beautybook_set_mathstyle:
+ \l__beautybook_tmpa_toks
}
-\cs_new:Npn \__Beautybook_set_mathstyle:
- { \keys_set:nV { Beautybook / mathstyle } \l__Beautybook_tmpa_toks }
+\cs_new:Npn \__beautybook_set_mathstyle:
+ { \keys_set:nV { beautybook / mathstyle } \l__beautybook_tmpa_toks }
\ExplSyntaxOff
-\RequirePackage{stys/Beautybook-bottompage} %封底
-\RequirePackage{rotating}
-\tikzset{>=Stealth}
-\setlist{font=\upshape} % 取消所有列表默认距离 nosep,
-% 浮动环境设置
-% 默认情况下, \LaTeX{} 要求每页的文字至少占据 20%,否则该页就只单独放置一个浮动环境,
-% 而这通常不是我们想要的, 我们将这个要求降低到 5%.
-\renewcommand*{\textfraction}{0.05}
-% 有时如果多个浮动环境连续放在一起,
-% 会将它们分在几个不同页,即使它们可在同一页放
-% 得下. 我们可以通过修改 |\topfraction| 和 |\bottomfraction| 分别设置顶端和底端的浮
-% 动环境的最大比例.
-\renewcommand*{\topfraction}{0.9}
-\renewcommand*{\bottomfraction}{0.8}
-% 有时\LaTeX{}会把一个浮动环境单独放在一页,
-% 我们要求这个环境至少要占据 85% 才能单独放在一页.
-% 注意: |\floatpagefraction| 的数值必须小于 |\topfraction|.
-\renewcommand*{\floatpagefraction}{0.85}
+\RequirePackage{stys/beautybook-bottompage} %封底
+% /* -------------------------------------------------------------------------- */
+
+% /* -------------------------------------------------------------------------- */
+% /* 宏包导入 */
+% /* -------------------------------------------------------------------------- */
+\RequirePackage{cncolours,ninecolors}
+\RequirePackage{appendix} % 附录
+\RequirePackage{etoolbox} % 判断函数
+\RequirePackage{imakeidx}
+\RequirePackage{varwidth}
+\RequirePackage{caption}\colorlet{captioncolor}{outermarginfgcolor} % 图片和表格题注文字颜色
+\RequirePackage{indentfirst}
+\RequirePackage{amsmath,amsthm,mathrsfs,extarrows,bropd}
+\RequirePackage{thmtools,thm-restate}%定理环境 %定理的重写
+\RequirePackage[left=2cm,right=2cm,top=.6cm,bottom=2.2cm]{geometry}
+\RequirePackage{tabularray}
+\RequirePackage{enumitem}\setlist{font=\upshape} % 取消所有列表默认距离 nosep,
+\RequirePackage[normalem]{ulem} % 用于参考文献
% 关于图片 graphicx
+\RequirePackage{graphicx}
% 如果图片没有指定后缀, 依次按下列顺序搜索
\DeclareGraphicsExtensions{.pdf,.eps,.jpg,.png}
% 设置图表搜索路径, 可以给图表文件夹取如下名字
\graphicspath{{inner_pics/}{inner_pics/titleimages/}{figures/}{figure/}{pictures/}{picture/}{pic/}{pics/}{image/}{images/}}
-% \RequirePackage[physics]{stys/physicx}
-% \RequirePackage{stys/Symbols}
-\RequirePackage{extarrows}
-\usetikzlibrary{tikzmark}
-% \arrowname{super-script}
-% \arrowname[sub-script]{super-script}
-\RequirePackage{appendix} % 附录
-% \RequirePackage{stys/symbols}
-%
-\RequirePackage{amssymb,amsfonts,upgreek}
-\RequirePackage{makeidx}
-\RequirePackage{etoolbox} % 判断函数
-\RequirePackage{paracol}
-\RequirePackage{tikz-cd}
-\RequirePackage{imakeidx}
-\RequirePackage{anyfontsize}
-\RequirePackage{calc}
-\RequirePackage{xkeyval,ifthen}
-\RequirePackage[backgroundcolor=yellow!40!cyan!20,bordercolor=yellow!40!cyan!20,linecolor=DarkCyan]{todonotes}
-\RequirePackage{varwidth}
-\RequirePackage[colorlinks,linkcolor = purple, %%修改此处为你想要的颜色
-anchorcolor = purple, %%修改此处为你想要的颜色
-urlcolor = purple, %%修改此处为你想要的颜色
-citecolor = purple, %%修改此处为你想要的颜色
-]{hyperref}
-\setcounter{tocdepth}{3}
-\setcounter{secnumdepth}{3}%增加编号深度
-\RequirePackage{dashrule}
-\newlength\outermarginwidth
-\setlength\outermarginwidth{1.5cm}
-\newlength\covershift
-\setlength\covershift{5cm}
-\RequirePackage{caption}
-% 图注与表注格式
-\colorlet{captioncolor}{outermarginfgcolor} % 图片和表格题注文字颜色
+
+\RequirePackage{anyfontsize} % 消除字体大小警告
+\RequirePackage[colorlinks,linkcolor = purple,anchorcolor = purple,urlcolor = purple,citecolor= purple]{hyperref}
+% /* -------------------------------------------------------------------------- */
+
+% /* -------------------------------------------------------------------------- */
+% /* 设置pgflayers */
+% /* -------------------------------------------------------------------------- */
+\pgfdeclarelayer{background} %背景%底层
+\pgfdeclarelayer{foreground} %上层
+\pgfdeclarelayer{top} %顶部
+\pgfdeclarelayer{bottom} %底部
+\pgfsetlayers{bottom,background,main,foreground,top}
+% /* -------------------------------------------------------------------------- */
+
+% /* -------------------------------------------------------------------------- */
+% /* 设置封面元素 */
+% /* -------------------------------------------------------------------------- */
\makeatletter
-%%----------------------------------封面信息定义--------------------------------------------------------%%
+
\newcommand\bookseries[1]{\def\@bookseries{#1}}
\newcommand\subtitle[1]{\def\@subtitle{#1}}
\newcommand\edition[1]{\def\@edition{#1}}
@@ -145,52 +163,34 @@ citecolor = purple, %%修改此处为你想要的颜色
\newcommand\pressname[1]{\def\@pressname{#1}}
\newcommand\coverimage[1]{\def\@coverimage{#1}}
\newcommand\chapimage[1]{\def\@chapimage{#1}}
-%%----------------------------------封面信息定义--------------------------------------------------------%%
+
\makeatother
-\RequirePackage{indentfirst}
-\RequirePackage{amsmath}
-\RequirePackage[left=2cm,right=2cm,top=.6cm,bottom=2.2cm]{geometry}
+% /* -------------------------------------------------------------------------- */
+
+% /* -------------------------------------------------------------------------- */
+% /* 模板用到的距离标尺 */
+% /* -------------------------------------------------------------------------- */
+\newlength\outermarginwidth % 页边栏宽度
+\setlength\outermarginwidth{1.5cm}
+
+\newlength\covershift % 自定义的距离标尺
+\setlength\covershift{5cm}
+% /* -------------------------------------------------------------------------- */
+\newcommand{\tikzoverlay}[1]{\begin{tikzpicture}[remember picture,overlay] #1 \end{tikzpicture}}
+
+
+
+% /* -------------------------------------------------------------------------- */
+% /* 目录样式设置 */
+% /* -------------------------------------------------------------------------- */
\RequirePackage{xpatch}%修正章节编号
\RequirePackage[automark]{scrlayer-scrpage}%页面设置宏包,隶属于koma-script文档类
-\RequirePackage{fontawesome5}
-\RequirePackage{mathrsfs}
-\RequirePackage[most]{tcolorbox}
-\tcbuselibrary{breakable, skins,theorems}%TcolorBox Library
-\RequirePackage{tabularx}
-\RequirePackage{lastpage}
-%\RequirePackage{twemojis}
-\RequirePackage{ninecolors}
-\RequirePackage{colortbl} %彩色表格
-\RequirePackage{tabularray}
-\UseTblrLibrary{amsmath}
-% 定义 +array, +matrix, +bmatrix, +Bmatrix, +pmatrix, +vmatrix, +Vmatrix 和 +cases 环境。其
-% 中,每一个环境都类似于不带 + 前缀的环境,但是就像 tblr 环境一样,使用 rowsep=2pt 默认值。
-% 除了+array 环境外,其余的每个环境都可以带一个可选项,通过该可选项,可能为环境设置内部
-% 参数。
-\UseTblrLibrary{booktabs} % 定义 \toprule、 \midrule、\bottomrule 和 \cmidrule 命令,这些命令可以直接用于 tblr环境中
-\UseTblrLibrary{diagbox} % 在tblr 环境中使用 \diagbox 和\diagboxthree 命令排版斜线表头
-\UseTblrLibrary{varwidth} % 为表格添加 measure 内部参数。当设置了 measure=vbox 后,则会使用 \vbox 测量单元格宽度。%可以使用stretch=-1 移除列表环境上下的间距, 注意,stretch=-1 选项也会移除单元格中的支架
-\RequirePackage{pgfornament}
-\RequirePackage{zhnumber}
-\RequirePackage{dashrule}
-\RequirePackage{adjustbox}
-\RequirePackage{enumitem}
-\RequirePackage{multicol}
-\RequirePackage{amsthm}
-\RequirePackage{thmtools,thm-restate}%定理环境 %定理的重写
-\RequirePackage{bclogo}
-\RequirePackage[normalem]{ulem}
-\RequirePackage{pgfplots} %画图 %%页面样式设计核心包 %提供\pgfonlayer命令以及下列图层指令
-\pgfplotsset{compat=1.18}
-\RequirePackage{graphicx}%修正minipage顶部对齐问题
-\pgfdeclarelayer{background} %背景%底层
-\pgfdeclarelayer{foreground} %上层
-\pgfdeclarelayer{top} %顶部
-\pgfdeclarelayer{bottom} %底部
-\pgfsetlayers{bottom,background,main,foreground,top}
-\newcommand{\tikzoverlay}[1]{\begin{tikzpicture}[remember picture,overlay] #1 \end{tikzpicture}}
\RequirePackage[explicit]{titlesec}
\RequirePackage{titletoc}
+\RequirePackage[most]{tcolorbox}
+\tcbuselibrary{breakable, skins,theorems}
+\setcounter{tocdepth}{3}
+\setcounter{secnumdepth}{3}%增加编号深度
\newcommand\boxednum[1]
{
@@ -242,98 +242,52 @@ fuzzy shadow={0.4mm}{-0.4mm}{0mm}{0.2mm}{fill=white!40!gray},%下
{\hyperlink{subsubsection.\thecontentslabel}{\contentslabel{3.3em}}}
{\hspace*{-3.3em}}
{\titlerule*[1pc]{.}\contentspage\hspace*{1.5mm}}
+% /* -------------------------------------------------------------------------- */
-% tcolorbox中插入图片或者tikz绘图方法
-\newcommand\Figure[4]{%
- \begin{center}
- \captionsetup{type=figure} %消除 Package caption Warning: The option `hypcap=true' will be ignored for this
-%(caption) particular \caption on input line XX.警告信息
- \includegraphics[#1]{#2}
- \captionof{figure}{#3}\label{#4}
- \end{center}
-}%用法 : 用于tcolorbox中插入图片
-\newcommand\Tikz[3]{%
- \begin{center}
- \captionsetup{type=figure} %消除 Package caption Warning: The option `hypcap=true' will be ignored for this(caption) particular \caption on input line XX.警告信息
- #3 %最后一个参数为Tikz画图代码窗口
- \captionof{figure}{#1}\label{#2} %第一与第二个参数是Tikz画图的名称与标签
- \end{center}
-} %用法 : 用于tcolorbox中插入Tikz绘图
-%特殊注释矩阵
-\newcommand\coolover[2]{\mathrlap{\smash{\overbrace{\phantom{%
- \begin{matrix} #2 \end{matrix}}}^{\mbox{$#1$}}}}#2}
-
-\newcommand\coolunder[2]{\mathrlap{\smash{\underbrace{\phantom{%
- \begin{matrix} #2 \end{matrix}}}_{\mbox{$#1$}}}}#2}
-
-\newcommand\coolleftbrace[2]{%
- #1\left\{\vphantom{\begin{matrix} #2 \end{matrix}}\right.}
-
-\newcommand\coolrightbrace[2]{%
- \left.\vphantom{\begin{matrix} #1 \end{matrix}}\right\}#2}
-\definecolor{lightergray}{gray}{0.99}
-
-\newcommand*{\circled}[1]{\lower.7ex\hbox{\tikz\draw (0pt, 0pt)%
- circle (.5em) node {\makebox[1em][c]{\small #1}};}}
-\newcommand{\twicecircle}{\raisebox{.7ex}{
- \begin{tikzpicture}[remember picture,overlay]
- \draw[line width=0.6pt,black!60] (0,0) circle (3pt);
- \fill[black] (0,0) circle (1.6pt) ;
- \end{tikzpicture}}
-}
-\newcommand{\exercise}[2][\bcicosaedre]{\bigskip
-\begin{tikzpicture}[remember picture,overlay]
-\draw[line width=2pt,loosely dotted,teal] (0,0)--node[pos=0.4,rectangle,minimum height=1.5em,font=\sffamily\Large,text=black,fill=black!2,drop shadow={opacity=.3, shadow xshift=0.1cm},anchor=center,
- inner sep=1.5mm,
- anchor=west,] {$#1$ ~ #2} (\linewidth,0);
-\end{tikzpicture}\bigskip\smallskip
-}
-\RequirePackage{extarrows}
-\newcommand{\R}{\mathbb{R}}
-\newcommand{\F}{\mathcal{F}}
-\newcommand{\lan}[1]{\langle #1 \rangle}
-\newenvironment{eq}[1]{\begin{equation}\begin{aligned}#1}{\end{aligned}\end{equation}} %有编号
-\newenvironment{eq*}[1]{\begin{equation*}\begin{aligned}#1}{\end{aligned}\end{equation*}} %无编号
-% \everymath{\displaystyle}
-
-%% -------- 章节样式
+
+% /* -------------------------------------------------------------------------- */
+% /* 章节样式 */
+% /* -------------------------------------------------------------------------- */
+
+% /* ---------------------------- titleimage自动导入程序 ---------------------------- */
\makeatletter
-% titleimage
+
\ExplSyntaxOn
-\seq_new:N \g__Beautybook_chapter_oimage_seq % odd
-\seq_new:N \g__Beautybook_chapter_eimage_seq % even
-\seq_new:N \g__Beautybook_part_oimage_seq % odd
-\seq_new:N \g__Beautybook_part_eimage_seq % even
+\seq_new:N \g__beautybook_chapter_oimage_seq % odd
+\seq_new:N \g__beautybook_chapter_eimage_seq % even
+\seq_new:N \g__beautybook_part_oimage_seq % odd
+\seq_new:N \g__beautybook_part_eimage_seq % even
%
-\keys_define:nn { Beautybook/titleimage }
+\keys_define:nn { beautybook/titleimage }
{
chapteroddimage .code:n =
- \seq_gset_from_clist:Nn \g__Beautybook_chapter_oimage_seq {#1} ,
+ \seq_gset_from_clist:Nn \g__beautybook_chapter_oimage_seq {#1} ,
chapterevenimage .code:n =
- \seq_gset_from_clist:Nn \g__Beautybook_chapter_eimage_seq {#1} ,
+ \seq_gset_from_clist:Nn \g__beautybook_chapter_eimage_seq {#1} ,
partoddimage .code:n =
- \seq_gset_from_clist:Nn \g__Beautybook_part_oimage_seq {#1} ,
+ \seq_gset_from_clist:Nn \g__beautybook_part_oimage_seq {#1} ,
partevenimage .code:n =
- \seq_gset_from_clist:Nn \g__Beautybook_part_eimage_seq {#1} ,
+ \seq_gset_from_clist:Nn \g__beautybook_part_eimage_seq {#1} ,
}
-\cs_new:Npn \__Beautybook_title_image:Nn #1#2 % image seq, number
+\cs_new:Npn \__beautybook_title_image:Nn #1#2 % image seq, number
{ \seq_item:Nn #1 { \int_mod:nn {#2} { \seq_count:N #1 } + 1 } } %对照表-对录入的字符串进行编号
-\cs_new:Npn \Beautybook@chapterimagename %生成索契表 : 判断奇偶数页并按(章节编号)!!读取相应的列表组中的字符串
+\cs_new:Npn \beautybook@chapterimagename %生成索契表 : 判断奇偶数页并按(章节编号)!!读取相应的列表组中的字符串
{
\int_if_odd:nTF { \value{page} }
- { \__Beautybook_title_image:Nn \g__Beautybook_chapter_oimage_seq { \value{chapter} } }
- { \__Beautybook_title_image:Nn \g__Beautybook_chapter_eimage_seq { \value{chapter} } }
+ { \__beautybook_title_image:Nn \g__beautybook_chapter_oimage_seq { \value{chapter} } }
+ { \__beautybook_title_image:Nn \g__beautybook_chapter_eimage_seq { \value{chapter} } }
}
-\cs_new:Npn \Beautybook@partimagename
+\cs_new:Npn \beautybook@partimagename
{
\int_if_odd:nTF { \value{page} }
- { \__Beautybook_title_image:Nn \g__Beautybook_part_oimage_seq { \value{part} } }
- { \__Beautybook_title_image:Nn \g__Beautybook_part_eimage_seq { \value{part} } }
+ { \__beautybook_title_image:Nn \g__beautybook_part_oimage_seq { \value{part} } }
+ { \__beautybook_title_image:Nn \g__beautybook_part_eimage_seq { \value{part} } }
}
\cs_new_protected:Npn \titleimage #1
- { \keys_set:nn { Beautybook/titleimage } {#1} }
+ { \keys_set:nn { beautybook/titleimage } {#1} }
\ExplSyntaxOff
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% /* -------------------------------- Chatper样式 ------------------------------- */
\titleformat{\chapter}{\huge\bfseries\filcenter}{}{1em}{
\makebox[0pt][l]{\def\rad{7pt}%
\begin{tikzpicture}[remember picture, overlay]%
@@ -398,14 +352,14 @@ fuzzy shadow={0.4mm}{-0.4mm}{0mm}{0.2mm}{fill=white!40!gray},%下
\end{pgfonlayer}
\ifodd\value{page}
\begin{pgfonlayer}{top}
- \node[above left,font=\sc\fontsize{25pt}{25pt}\selectfont,align=center] (contents name) at ([shift={(0cm,-4.45cm)}]current page.north east) {\begin{varwidth}{.7\linewidth}\baselineskip=2ex #1\end{varwidth}};
+ \node[above left,font=\sc\fontsize{25pt}{25pt}\selectfont,align=center] (contents name) at ([shift={(0cm,-4.45cm)}]current page.north east) {\begin{varwidth}{.7\linewidth}\baselineskip=25pt #1\end{varwidth}};
\end{pgfonlayer}
\begin{pgfonlayer}{bottom}
\node[right] (image) at ([shift={(-0.5cm,-2.8cm)}]current page.north west) {\includegraphics[width=7cm]{\@chapimage}};
\end{pgfonlayer}
\else
\begin{pgfonlayer}{top}
- \node[above right,font=\sc\fontsize{25pt}{25pt}\selectfont,align=center] (contents name) at ([shift={(0cm,-4.45cm)}]current page.north west) {\begin{varwidth}{.7\linewidth}\baselineskip=2ex #1\end{varwidth}};
+ \node[above right,font=\sc\fontsize{25pt}{25pt}\selectfont,align=center] (contents name) at ([shift={(0cm,-4.45cm)}]current page.north west) {\begin{varwidth}{.7\linewidth}\baselineskip=25pt #1\end{varwidth}};
\end{pgfonlayer}
\begin{pgfonlayer}{background}
\node[left] (image) at ([shift={(0.5cm,-2.8cm)}]current page.north east) {\includegraphics[width=7cm]{\@chapimage}};
@@ -417,8 +371,20 @@ fuzzy shadow={0.4mm}{-0.4mm}{0mm}{0.2mm}{fill=white!40!gray},%下
\end{tikzpicture}}
}
\titlespacing{\chapter}{0pt}{0pt}{70pt}
+
+
+% /* --------------------------------- Part定制 --------------------------------- */
\makeatother
-% -------- Part定制
+
+%%定义标题文字长度%%
+\newlength{\partstarlen}
+%%设置临界长度%%
+\newlength{\criticstarlen}
+\setlength{\criticstarlen}{\textwidth}
+% 定义垂直方向的渐变
+\tikzfading[name=fade bottom to top,
+ bottom color=transparent!0, % 底部完全透明
+ top color=transparent!100] % 顶部不透明
\tikzfading[name=middle, top color=transparent!90, bottom
color=transparent!90, middle color=transparent!20]
\makeatletter
@@ -428,7 +394,8 @@ color=transparent!90, middle color=transparent!20]
{\normalfont\huge\filcenter}
{}
{20pt}
-{\begin{tikzpicture}[remember picture,overlay]
+{\settowidth{\partstarlen}{\sc\huge #1} % 计算\partabstract的长度并写入到\partstarlen中
+ \begin{tikzpicture}[remember picture,overlay]
\def\barwidth{2cm}
\fill[outermarginbgcolor,opacity=0.6]
(current page.north west) rectangle (current page.south east);
@@ -448,8 +415,10 @@ color=transparent!90, middle color=transparent!20]
\fill[outermarginfgcolor,rounded corners=2pt] (current page.south east) --++(-5pt,0.15cm)--++(-\outermarginwidth+10pt,0) --++(-5pt,-0.15cm)--cycle; % 页码横线
\node[] (hbar) at ($(current page.north)!0.33!(current page.south)$) {
\begin{tikzpicture}
- \fill[white]
- (0,0) rectangle ++(\paperwidth,-1cm);
+ %%--------------- Horizontal Line --------------------%%
+ \fill[outermarginbgcolor!70]
+ (0,0) rectangle ++(\paperwidth,-1cm);
+ %%--------------- Horizontal Line -------------------%%
\fill[outermarginbgcolor]
(0,-.25cm) rectangle ++(\paperwidth,-.5cm);
\fill[outermarginfgcolor]
@@ -461,10 +430,19 @@ color=transparent!90, middle color=transparent!20]
\end{tikzpicture}
};
\node[above,font=\sc\huge,shift={(.33\linewidth,.5\barwidth)}] (partname) at (hbar) {Part\ \thepart};
- \node[below,left,font=\sc\huge,shift={(.146\linewidth,-1.5*\barwidth)}] (partcontents) at (partname) {\begin{varwidth}{.8\linewidth}\raggedright\baselineskip=2ex #1 \end{varwidth}}; % 标题名称
+ \node[below left,font=\sc\huge,shift={(.146\linewidth,-\barwidth)}] (partcontents) at (partname) {\begin{varwidth}{.9\linewidth}\raggedright\baselineskip=25pt #1 \end{varwidth}}; % 标题名称
\begin{pgfonlayer}{background}
\node[above,shift={(-.4\linewidth,-4*\barwidth)}] at (partname) {\ifdefvoid{\@partimage}{}{\includegraphics[width=1.2\linewidth]{\@partimage}}}; % 图片位置调整
+ % % 应用渐变效果
+\fill[path fading=fade bottom to top, fill=nuanbai] (current page.north west) rectangle ([xshift=-\outermarginwidth]current page.south east);
\end{pgfonlayer}
+%判断标题文字长度与临界长度的关系
+\ifdim\partstarlen<\criticstarlen
+%如果标题长度小于临界长度则使用(hbar)定位
+\node[below,font=\itshape\fontsize{13}{13}\selectfont,shift={(0,-1.2*\barwidth)}] at (hbar) {\ifdefvoid{\@partabstract}{}{\begin{varwidth}{.9\linewidth}\baselineskip=3ex \@partabstract\end{varwidth}}}; % 简介文字调整
+\else
+\node[below,font=\itshape\fontsize{13}{13}\selectfont,shift={(0,-1.2*\barwidth)}] at (partcontents) {\ifdefvoid{\@partabstract}{}{\begin{varwidth}{.9\linewidth}\baselineskip=3ex \@partabstract\end{varwidth}}}; % 简介文字调整
+\fi
\else
\fill [outermarginfgcolor!20]%
(current page.north west) rectangle ++(\outermarginwidth,-\paperheight);
@@ -481,8 +459,10 @@ color=transparent!90, middle color=transparent!20]
\fill[outermarginfgcolor,rounded corners=2pt] (current page.south west) --++(5pt,0.15cm)--++(\outermarginwidth-10pt,0) --++(5pt,-0.15cm)--cycle; % 页码横线
\node[] (hbar) at ($(current page.north)!0.33!(current page.south)$) {
\begin{tikzpicture}
- \fill[white]
- (0,0) rectangle ++(\paperwidth,-1cm);
+ %%--------------- Horizontal Line --------------------%%
+ \fill[outermarginbgcolor!70]
+ (0,0) rectangle ++(\paperwidth,-1cm);
+ %%--------------- Horizontal Line -------------------%%
\fill[outermarginbgcolor]
(0,-.25cm) rectangle ++(\paperwidth,-.5cm);
\fill[outermarginfgcolor]
@@ -494,19 +474,27 @@ color=transparent!90, middle color=transparent!20]
\end{tikzpicture}
};
\node[above,font=\sc\huge,shift={(-.31\linewidth,.5\barwidth)}] (partname) at (hbar) {Part\ \thepart};
- \node[below right,font=\sc\huge,shift={(-.125\linewidth,-1.2*\barwidth)}] (partcontents) at (partname) {\begin{varwidth}{.8\linewidth}\raggedright\baselineskip=2ex #1 \end{varwidth}}; % 标题名称
+ \node[below right,font=\sc\huge,shift={(-.125\linewidth,-\barwidth)}] (partcontents) at (partname) {\begin{varwidth}{.9\linewidth}\raggedright\baselineskip=25pt #1 \end{varwidth}}; % 标题名称
\begin{pgfonlayer}{background}
\node[above,shift={(.35\linewidth,-4*\barwidth)}] at (partname) {\ifdefvoid{\@partimage}{}{\includegraphics[width=1.2\linewidth]{\@partimage}}}; % 图片位置调整
+ % % 应用渐变效果
+ \fill[path fading=fade bottom to top, fill=nuanbai] (current page.north east) rectangle ([xshift=\outermarginwidth]current page.south west);
\end{pgfonlayer}
+%判断标题文字长度与临界长度的关系
+\ifdim\partstarlen<\criticstarlen
+%如果标题长度小于临界长度则使用(hbar)定位
+\node[below,font=\itshape\fontsize{13}{13}\selectfont,shift={(0,-1.2*\barwidth)}] at (hbar) {\ifdefvoid{\@partabstract}{}{\begin{varwidth}{.9\linewidth}\baselineskip=3ex \@partabstract\end{varwidth}}}; % 简介文字调整
+\else
+\node[below,font=\itshape\fontsize{13}{13}\selectfont,shift={(0,-1.2*\barwidth)}] at (partcontents) {\ifdefvoid{\@partabstract}{}{\begin{varwidth}{.9\linewidth}\baselineskip=3ex \@partabstract\end{varwidth}}}; % 简介文字调整
+\fi
\fi
- \node[below,,font=\itshape\fontsize{13}{13}\selectfont,shift={(0\linewidth,-1.65*\barwidth)}] at (hbar) {\ifdefvoid{\@partabstract}{}{\begin{varwidth}{.85\linewidth}\baselineskip=3ex \@partabstract\end{varwidth}}}; % 简介文字调整
\end{tikzpicture}}
\makeatother
\assignpagestyle{\part}{empty}
\assignpagestyle{\chapter}{empty}
-%% -- Section
+% /* -------------------------------- Section样式 ------------------------------- */
\titleformat{\section}
{}
{}
@@ -535,8 +523,65 @@ color=transparent!90, middle color=transparent!20]
\titlespacing*{\section}{0pt}{3.5ex plus 1ex minus .2ex}{2.3ex plus .2ex}
+
+% /* ------------------------------ Subsection样式 ------------------------------ */
+\usepackage{pifont}
+\newcommand{\subsectionnumstyle}[2]{
+\makebox[0pt][l]{\def\rad{5pt}%
+\def\inrad{3pt}
+ \begin{tikzpicture}[remember picture]
+ \path[fill=#2,drop shadow={opacity=0.3,shadow xshift=0.5mm,shadow yshift=-0.5mm}]node[append after command={
+ % 主体
+ ([shift={(\rad,\rad)}]sec.north west) arc[start angle=90, end angle=180, radius=\rad] {[rounded corners=\inrad]--(sec.south west)}--([yshift=-3mm]$(sec.south west)!0.5!(sec.south east)$) {[rounded corners=\inrad]--(sec.south east)} -- (sec.north east) arc[start angle=180, end angle=90, radius=\rad]--cycle
+ },
+ text=white,font=\sffamily\large\bfseries,align=center,inner ysep=1.5mm,inner xsep=1mm] (sec) at (0,0) {\thesubsection};
+ % 阴影
+ \begin{pgfonlayer}{bottom}
+ \fill[#2!30!black!70,opacity=0.8] ([xshift=\rad,yshift=\rad]sec.north east) to[out=0,in=-81,looseness=1.5] ([xshift=1.8*\rad]sec.north east)--(sec.north east) |-cycle;
+ \end{pgfonlayer}
+ \node[text=black,font=\large,below right] (sectitle) at ([shift={(2mm,6.5mm)}]sec.south east) {\begin{varwidth}{.9\linewidth}\setlength\baselineskip{18pt}#1\end{varwidth}};
+ \begin{pgfonlayer}{bottom}
+ \draw[gray,dashed,opacity=0.5] ([xshift=0]sec.north west) --([xshift=4*\rad]sec.north east);
+ \end{pgfonlayer}
+ \end{tikzpicture}}
+}
+
+\newcommand{\subsectionnonumstyle}[2]{
+\makebox[0pt][l]{\def\rad{5pt}%
+\def\inrad{3pt}
+ \begin{tikzpicture}[remember picture]
+ \path[fill=#2,drop shadow={opacity=0.3,shadow xshift=0.5mm,shadow yshift=-0.5mm}]node[append after command={
+ % 主体
+ ([shift={(\rad,\rad)}]sec.north west) arc[start angle=90, end angle=180, radius=\rad] {[rounded corners=\inrad]--(sec.south west)}--([yshift=-3mm]$(sec.south west)!0.5!(sec.south east)$) {[rounded corners=\inrad]--(sec.south east)} -- (sec.north east) arc[start angle=180, end angle=90, radius=\rad] --cycle
+ },
+ text=white,font=\sffamily\large\bfseries,align=center,inner ysep=0.5mm,inner xsep=1.5mm] (sec) at (0,0) {\Huge\ding{99}};
+ % 阴影
+ \begin{pgfonlayer}{bottom}
+ \fill[#2!30!black!70,opacity=0.8] ([xshift=\rad,yshift=\rad]sec.north east) to[out=0,in=-81,looseness=1.5] ([xshift=1.8*\rad]sec.north east)--(sec.north east) |-cycle;
+ \end{pgfonlayer}
+ \node[text=black,font=\large,below right] (sectitle) at ([shift={(2mm,6.5mm)}]sec.south east) {\begin{varwidth}{.9\linewidth}\setlength\baselineskip{18pt}#1\end{varwidth}};
+ \begin{pgfonlayer}{bottom}
+ \draw[gray,dashed,opacity=0.5] (sec.north west) --([xshift=4*\rad]sec.north east);
+ \end{pgfonlayer}
+ \end{tikzpicture}}
+}
+
+\titleformat{\subsection}
+{}
+{}
+{-.5em} %左右移动\thesection标签位置
+{\subsectionnumstyle{#1}{outermarginfgcolor}}
+
+\titleformat{name=\subsection,numberless}{}{}{-.5em}{\subsectionnonumstyle{#1}{outermarginfgcolor}}
+
+% \titlespacing*{\subsection}{0pt}{3.5ex plus 1ex minus .2ex}{2.3ex plus .2ex}
+
+
+
%%-------------------------------- SCRLAYER-SCRPAGE -------------------------------------%%
-%% SIDE-BAR
+% /* -------------------------------------------------------------------------- */
+% /* SIDE-BAR配置 */
+% /* -------------------------------------------------------------------------- */
\newlength\chapternumbersize
\setlength\chapternumbersize{36pt}
\setlength{\headheight}{40pt} % 页眉高度
@@ -574,7 +619,7 @@ color=transparent!90, middle color=transparent!20]
\newcommand*\outermarginchapternumberbox{%
\if@mainmatter
\tikzoverlay{
- \shade[top color=outermarginfgcolor!90,bottom color=outermarginbgcolor]
+ \shade[top color=outermarginfgcolor!90,bottom color=outermarginbgcolor]
(\outermarginwidth,-.5\outermarginwidth+2mm) rectangle (0,-1.5\outermarginwidth+2mm);
\node[anchor=center,text=white,font=\sffamily\bfseries] at (1/2*\outermarginwidth,-\outermarginwidth+2mm) {\usekomafont{chapternumber}{\botmarks\chapternum}};%
}
@@ -627,12 +672,24 @@ color=transparent!90, middle color=transparent!20]
contents={\color{outermarginbgcolor}\rule{\layerwidth}{\layerheight}} %色彩装饰条
]{scth.outermargin.bg.even}%
%%=============% 页边条颜色 %=======================%%
+% /* -------------------------------------------------------------------------- */
+% /* 透明度渐变填充设定 */
+% /* -------------------------------------------------------------------------- */
\tikzfading[name=fade south,
top color =transparent!0,
bottom color=transparent!80]
\tikzfading[name=fade north,
top color =transparent!100,
bottom color=transparent!0]
+\tikzfading[name=fade right,
+ right color =transparent!100,
+ left color=transparent!0]
+\tikzfading[name=fade left,
+ left color =transparent!100,
+ right color=transparent!0]
+% /* -------------------------------------------------------------------------- */
+% /* 透明度渐变填充设定 */
+% /* -------------------------------------------------------------------------- */
%偶数页边纹理效果设置
\newcommand{\evensidbardeepcolor}{%
\tikzoverlay{
@@ -723,7 +780,12 @@ color=transparent!90, middle color=transparent!20]
%%-------------------------------- SCRLAYER-SCRPAGE -------------------------------------%%
-%% Begin The Most Beautiful Box (STYLE : ys style) % 中国风盒子
+% /* -------------------------------------------------------------------------- */
+% /* 中国风盒子 */
+% /* -------------------------------------------------------------------------- */
+
+%% Begin The Most Beautiful Box (STYLE : ys style)
+
\makeatletter
\definecolor{framegolden}{HTML}{455a64} % 控制外框颜色
\definecolor{framegray}{HTML}{e0e0e0} % 控制填充颜色
@@ -993,15 +1055,19 @@ color(75bp)=(pgftransparent!100); color(100bp)=(pgftransparent!100)}
\makeatother
\newtcolorbox{fancybox}[1][]{enhanced,ys style,breakable,pad at break=2mm,
ys/frame/not at break,ys/frame/fill opacity=0,#1,fontupper=\itshape}
-%% End The Most Beautiful Box
+% /* -------------------------------------------------------------------------- */
+
+
+% /* -------------------------------------------------------------------------- */
+% /* 定理环境设置 */
+% /* -------------------------------------------------------------------------- */
\makeatletter
+% /* ---------------------------------- 第一种定理 --------------------------------- */
\definecolor{CyaN}{HTML}{dbe1e5}
\colorlet{OrangE}{yellow!20!orange}
\colorlet{BluE}{cyan!70!blue}
\colorlet{ReD}{red!20!orange}
\colorlet{GreeN}{yellow!40!green}
-
-% 第一种定理
\tcbset{my@basic@thm/.style={enhanced jigsaw, breakable,
enlarge left by=-3.5mm, width=\textwidth+3.5mm, boxrule=0pt,
top=2pt, bottom=2pt, left=2.5mm, frame hidden}}
@@ -1015,9 +1081,9 @@ color(75bp)=(pgftransparent!100); color(100bp)=(pgftransparent!100)}
\NewDocumentCommand{\@my@renewtheorem}{ m m o +m }
{\IfNoValueTF{#3}{\renewtheorem{#1}{#2}}{\renewtheorem{#1}{#2}[#3]}%
\tcbset{my@#1@thmstyle/.style={#4}}}
-%
+
% ---------------------------------------------------------------------------------- %
-% 第二种定理
+% /* ---------------------------------- 第二种定理 --------------------------------- */
\tcbset{my@basic@tcbthm/.style={detach title,}}
\newcommand{\@my@newtcbtheorem@n}[1]{\ERROR}
\newcommand{\@my@newtcbtheorem@nn}[2]{%
@@ -1048,10 +1114,7 @@ color(75bp)=(pgftransparent!100); color(100bp)=(pgftransparent!100)}
\cs_new_protected:Npn \mynewtcbtheorem
{ \keyval_parse:NNn \@my@newtcbtheorem@n \@my@newtcbtheorem@nn }
\ExplSyntaxOff
-\makeatother
-% 第二种定理
-\makeatletter
%% Overlay Settings
\newcommand{\my@theorem@overlay@unbroken}[2]{
%%============== First ==============%%
@@ -1147,19 +1210,6 @@ anchor=west,rounded corners=3pt,font=\bfseries\normalsize] at ([xshift=0cm,yshif
\declaretheorem[style=Proofstyle,numbered=no,name={\itbf{Proof}}]{Proof}
\renewenvironment{proof}{\begin{Proof} }{\end{Proof}}
\declaretheorem[style=Proofstyle,numbered=no,name={\itbf{Solution}}]{solution}
+% /* -------------------------------------------------------------------------- */
-%%%%%%%%%%%%%%% 计数器知识 %%%%%%%%%%%%%%%%%%%%%%
-% 每次用 \newcounter{foo} 定义新计数器,内部都会定义这几个命令
-
-% \c@foo,储存计数器的值,初始值为 0
-% \thefoo,储存计数器输出时的格式,初始定义为 \arabic{foo}
-% \p@foo,储存计数器被引用时的前缀,初始定义为空
-% \cl@foo,储存「子计数器」列表(此处有简化),foo 自增时它的每个「子计数器」都会归零(详见「自动归零」一节),初始定义为空
-%% 关于计数器的自动归零
-% 如果还定义了计数器 \newcounter{bar}[foo],那么 \cl@foo 里就有了 bar
-% \@addtoreset{child}{parent} 和 \@removefromreset{child}{parent} 可以把计数器 child 移入/移出 \cl@parent
-% \counterwithin* 和 \counterwithout* 和上一条里两个命令的功能类似,但它们在执行前会检查接受的两个参数是否为已定义的计数器。不加星号的版本会修改 \thechild,详见「输出格式」一节
-% 在使用 \stepcounter{parent} 和 \refstepcounter{parent} 时,parent 自增,同时归零\cl@parent 里的「子计数器」
-% \addtocount{parent}{1} 只自增 parent,没有归零其「子计数器」的效果
-% 归零实现为「对每个子计数器,先设为 -1,然后使用 \stepcounter 自增」,这样实现的「归零」功能是递归的
-% 递归的意思是,如果还有 \newcounter{grandchild}[child],那么 \stepcounter{parent} 会将 child 和 grandchild 都归零
+\endinput \ No newline at end of file
diff --git a/macros/latex/contrib/beautybook/inner_pics/beautybook-logo.png b/macros/latex/contrib/beautybook/inner_pics/beautybook-logo.png
new file mode 100644
index 0000000000..9a1c819103
--- /dev/null
+++ b/macros/latex/contrib/beautybook/inner_pics/beautybook-logo.png
Binary files differ
diff --git a/macros/latex/contrib/beautybook/inner_pics/hummingbird-8013214.jpg b/macros/latex/contrib/beautybook/inner_pics/hummingbird-8013214.jpg
new file mode 100644
index 0000000000..424cd0909f
--- /dev/null
+++ b/macros/latex/contrib/beautybook/inner_pics/hummingbird-8013214.jpg
Binary files differ
diff --git a/macros/latex/contrib/beautybook/inner_pics/logo.png b/macros/latex/contrib/beautybook/inner_pics/logo.png
deleted file mode 100644
index 470edd8a51..0000000000
--- a/macros/latex/contrib/beautybook/inner_pics/logo.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/beautybook/inner_pics/mystery-1599527.jpg b/macros/latex/contrib/beautybook/inner_pics/mystery-1599527.jpg
new file mode 100644
index 0000000000..19c0518b00
--- /dev/null
+++ b/macros/latex/contrib/beautybook/inner_pics/mystery-1599527.jpg
Binary files differ
diff --git a/macros/latex/contrib/beautybook/inner_pics/titleimages/c10.pdf b/macros/latex/contrib/beautybook/inner_pics/titleimages/c10.pdf
new file mode 100644
index 0000000000..76256c2f82
--- /dev/null
+++ b/macros/latex/contrib/beautybook/inner_pics/titleimages/c10.pdf
Binary files differ
diff --git a/macros/latex/contrib/beautybook/inner_pics/titleimages/c11.pdf b/macros/latex/contrib/beautybook/inner_pics/titleimages/c11.pdf
new file mode 100644
index 0000000000..b100782f85
--- /dev/null
+++ b/macros/latex/contrib/beautybook/inner_pics/titleimages/c11.pdf
Binary files differ
diff --git a/macros/latex/contrib/beautybook/inner_pics/titleimages/c9.pdf b/macros/latex/contrib/beautybook/inner_pics/titleimages/c9.pdf
new file mode 100644
index 0000000000..98d9e6a864
--- /dev/null
+++ b/macros/latex/contrib/beautybook/inner_pics/titleimages/c9.pdf
Binary files differ
diff --git a/macros/latex/contrib/beautybook/stys/Beautybook-cover-birkar.sty b/macros/latex/contrib/beautybook/stys/Beautybook-cover-birkar.sty
deleted file mode 100644
index 8a2c51aa08..0000000000
--- a/macros/latex/contrib/beautybook/stys/Beautybook-cover-birkar.sty
+++ /dev/null
@@ -1,125 +0,0 @@
-\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-\ProvidesPackage{stys/Beautybook-cover-birkar}[2022/05/21,v1.0]
-\usepackage{anyfontsize} % 提供\fontsize{}{}\selectfont命令
-\usepackage{etoolbox} %提供自定义封面选项接口
-\usepackage[dvipsnames,svgnames,x11names,table]{xcolor}%颜色宏包 % Driver-independent color extensions
-\usepackage{tikz}
-\usetikzlibrary{intersections, positioning, fit, backgrounds, shapes, fadings,
-decorations.pathmorphing, graphs, quotes, angles, calc, through, backgrounds} % %Tikz指令库
-\usepackage{graphicx} %插图
-\usetikzlibrary{calc,fadings,patterns}
-\usepackage{adjustbox} %修正minipage顶部对齐问题
-
-% Define the layers to be used in document.
-% *****************************************************
-\pgfdeclarelayer{background} %背景%底层
-\pgfdeclarelayer{foreground} %上层
-\pgfdeclarelayer{top} %顶部
-\pgfdeclarelayer{bottom} %底部
-\pgfsetlayers{bottom,background,main,foreground,top}
-\definecolor{RED}{RGB}{220, 41, 26}
-\definecolor{arc color}{HTML}{546E7A}
-
-\tikzfading[name=fade right,
- right color =transparent!100,
- left color=transparent!0]
-\tikzfading[name=fade left,
- left color =transparent!100,
- right color=transparent!50]
-\tikzfading[name=fade up,
- top color =transparent!100,
- bottom color=transparent!50]
-\tikzfading[name=fade down,
- bottom color =transparent!100,
- top color=transparent!50]
-\makeatletter
-\newcommand*\makecover{
- %% Use the Tikz library positioning and clear the page header and footer
- \usetikzlibrary{positioning}
- \thispagestyle{empty}
- \begin{tikzpicture}[remember picture,overlay]
- \begin{pgfonlayer}{bottom}
- \fill[coverfgcolor]
- (current page.north west) rectangle (current page.south east);% 填充封面背景颜色 (coverbgcolor)
- \fill[RED]
- ([shift={(2.05cm,0)}]current page.north west) rectangle ([shift={(2.35cm,-6cm)}]current page.north west);
- \fill[coverfgcolor!80,opacity=0.5]
- ([shift={(0,-2cm)}]current page.north west) arc (90:-90:.3\paperheight) --cycle;
- \fill[coverfgcolor!80,opacity=0.5]
- ([shift={(0,-4cm)}]current page.north east) arc (90:270:.2\paperheight) --cycle;
- \fill[coverfgcolor!80]
- (current page.north west) rectangle ([shift={(2cm,0)}]current page.south west);
- \begin{scope}[opacity=0.8]
- \coordinate (triangleA) at ([shift={(1cm,-1cm)}]current page.north);
- \coordinate (triangleB) at ([shift={(-.85\linewidth,-.46\paperheight)}]triangleA);
- \coordinate (triangleC) at ([shift={(.52\linewidth,-.46\paperheight)}]triangleA);
- \draw[name path=triangle,very thick,coverfgcolor!70!white]
- (triangleA)--(triangleB)--(triangleC)--cycle;
- \draw[name path=circle,very thick,coverfgcolor!70!white]
- ([shift={(-1.6cm,-7.3cm)}]triangleA) coordinate (O) circle(6cm);
- %标注每个交点坐标
- \fill [name intersections={of=triangle and circle, name=i, total=\t}]
- [coverbar,opacity=0.5, every node/.style={above left, white, opacity=1}]
- \foreach \s in {1,...,\t}{(i-\s) circle (1em) node {}};
- \draw[name path=l,very thick,coverfgcolor!70!white] (i-1) -- (triangleC);
- \draw[very thick,coverfgcolor!70!white] (i-6) -- (triangleB);
- \draw[name path=l2,very thick,coverfgcolor!70!white] (i-4) -- (triangleA);
- \fill[name intersections={of=l and circle,name=j,total=\l}]
- [coverbar,opacity=0.5, every node/.style={above left, white, opacity=1}]
- \foreach \c in {1,...,\l}{(j-\c) circle (1em) node {}};
-
- \fill[name intersections={of=l2 and l,name=jj,total=\ll}]
- [coverbar,opacity=0.5, every node/.style={above left, white, opacity=1}]
- \foreach \cc in {1,...,\ll}{(jj-\cc) circle (1em) node {}};
- \end{scope}
- \end{pgfonlayer}
- \begin{pgfonlayer}{foreground}
- \fill[coverbar,opacity=.5]
- ([yshift=2\outermarginwidth]current page.west) rectangle ([xshift=\outermarginwidth,yshift=-.2\outermarginwidth]current page.west); % 最左侧装饰矩形
- \end{pgfonlayer}
- \shade[left color=coverfgcolor,right color=coverfgcolor!60,opacity=.3]
- ([xshift=\outermarginwidth,yshift=2\outermarginwidth]current page.west) rectangle (current page.south east); % 标题背景大矩形
- \node[anchor=south] at ([xshift=.3\outermarginwidth,yshift=-.4\covershift]current page.north) {%
- \parbox{.8\paperwidth}{
- \filright
- \color{white}\sffamily\fontsize{20}{23}\selectfont\@bookseries}
- }; %系列丛书名称
- \node[ anchor=south] at ([xshift=.3\outermarginwidth,yshift=-.57\paperheight]current page.north)
- {\parbox{.8\paperwidth}{%
- \raggedright%
- {\renewcommand\baselinestretch{1.1}\selectfont \color{white}\sffamily\bfseries\fontsize{40}{40}\selectfont\@title\\[0.5ex]
- \color{white}\sffamily\fontsize{30}{30}\selectfont
- \ifdefvoid{\@subtitle}{}{\@subtitle}\par}
- }};% 封面标题与副标题
- \node[anchor=west,font=\sffamily\fontsize{23}{23}\selectfont,text=white] at ([xshift=1.8\outermarginwidth,yshift=-.6\covershift]current page.west) {\@edition};
- \node[anchor=west,font=\sffamily\Huge,text=white] at ([xshift=1.8\outermarginwidth,yshift=\covershift]current page.west) {\@author};
- \node[left,text=white,font=\rmfamily\Large,] at
- ([shift={(-1cm,2cm)}]current page.south east) %
- {\raisebox{-1.1cm}{\includegraphics[width=0.2\linewidth]{\@presslogo}}\hspace*{-3.5ex}\begin{varwidth}{.4\textwidth}\tikz\draw[white,line width=1.25pt] (0,0)--++(0,1cm);\,\raisebox{.25cm}{\@pressname} \end{varwidth}};%
- \end{tikzpicture}%
- {\newpage\thispagestyle{empty}}
-}
-\makeatother
-
-\endinput
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/macros/latex/contrib/beautybook/stys/Beautybook-cover-cn.sty b/macros/latex/contrib/beautybook/stys/Beautybook-cover-cn.sty
deleted file mode 100644
index b151d4e5fc..0000000000
--- a/macros/latex/contrib/beautybook/stys/Beautybook-cover-cn.sty
+++ /dev/null
@@ -1,103 +0,0 @@
-\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-\ProvidesPackage{stys/Beautybook-cover-cn}[2023/05/10,v1.0]
-\usetikzlibrary{calc,fadings,patterns}
-\usepackage{adjustbox} %修正minipage顶部对齐问题
-%%%%===============================================================%%%%%
-% \definecolor{coverbgcolor}{HTML}{9CCCDA}
-% \definecolor{coverfgcolor}{HTML}{508E99}
-% \definecolor{coverbar}{HTML}{305756}
-\tikzfading[name=fade right,
- right color =transparent!100,
- left color=transparent!50]
-\tikzfading[name=fade left,
- left color =transparent!100,
- right color=transparent!50]
-\tikzfading[name=fade up,
-top color =transparent!100,
-bottom color=transparent!50]
-\tikzfading[name=fade down,
- bottom color =transparent!100,
- top color=transparent!50]
-\makeatletter
-\newcommand*\makecover{
- %% Use the Tikz library positioning and clear the page header and footer
- \usetikzlibrary{positioning}
- \thispagestyle{empty}
- \begin{tikzpicture}[remember picture,overlay]
- \fill[coverfgcolor!75]
- (current page.north west) rectangle (current page.south east);% 填充封面背景颜色 (coverbgcolor)
- \fill[coverfgcolor!50]
- ([xshift=-3\covershift,yshift=-.4\covershift]current page.east) rectangle ([yshift=-1.35\covershift]current page.east); % 被标题背景遮挡露出一部分的装饰矩形
- \fill[coverfgcolor]
- ([xshift=\outermarginwidth]current page.north west) rectangle ([xshift=-\outermarginwidth,yshift=1.5\covershift]current page.south east); % 标题背景大矩形
- \fill[coverbar]
- ([yshift=.44\covershift]current page.west) rectangle ([xshift=\outermarginwidth,yshift=-.4\covershift]current page.west); % 最左侧装饰矩形
- \node[left] at ([xshift=-1.8cm,yshift=-1.5cm]current page.north east) {%
- \parbox{3\covershift}{
- \raggedleft
- \color{white}\sffamily\bfseries\fontsize{18}{22}\selectfont\@bookseries}
- }; %系列丛书名称
- \node[right] at ([xshift=\outermarginwidth,yshift=1.5*\covershift]current page.west)
- {\parbox{.8\paperwidth}{%
- \filright%
- \color{white}\sffamily\bfseries\fontsize{30}{30}\selectfont\@title\\[-1.6ex]
- \begin{tikzpicture}
- \draw[white,line width=1pt] (0,0) --++ (\paperwidth-3\outermarginwidth,0);
- \end{tikzpicture}\\[-.5ex]
- \color{white}\sffamily\bfseries\fontsize{30}{30}\selectfont
- \ifdefvoid{\@subtitle}{}{\@subtitle}
- }};% 封面英文书名与中文书名
- \node[left,inner sep=0pt,outer sep=0pt] at ([xshift=1.2\outermarginwidth,yshift=1.8cm]current page.east)
- {%
- \adjustbox{valign=t}{
- \begin{minipage}{.25\textwidth}
- \begin{tikzpicture}
- \foreach \x/\r in {1.2/6,.8/4} {
- \draw[white,line width=\x pt] (0,0) circle [radius=\r pt];}
- \fill[white] (0,0) circle [radius=2.5pt];
- \end{tikzpicture}
- \hspace{2pt}\color{white}\sffamily\fontsize{20}{25}\selectfont Editors
- \end{minipage}}
- \hfill
- \adjustbox{valign=t}{\begin{minipage}{.45\textwidth}
- \raggedright\color{white}\sffamily\fontsize{20}{25}\selectfont\@author
- \end{minipage}}
- };% 封面作者信息栏
- \fill [path picture={ \node at (path picture bounding box.center)
- {\includegraphics[height=1.1\linewidth]{\@coverimage}};}]
- ([xshift=\outermarginwidth]current page.south west) rectangle ++(1.8*\covershift,.575\paperheight);
- \fill[pattern color=coverfgcolor!70,pattern=horizontal lines,opacity=0.8]
- ([xshift=\outermarginwidth,yshift=.2\covershift]current page.south west) rectangle ([xshift=-\outermarginwidth,yshift=1.43\covershift]current page.south east);
- \fill [coverfgcolor!80,path fading=fade right]%
- ([xshift=\outermarginwidth+.5\linewidth+.5cm,yshift=.2\covershift]current page.south west) rectangle ([xshift=-\outermarginwidth,yshift=1.43\covershift]current page.south east);
- \fill [coverfgcolor!80,path fading=fade left]%
- ([xshift=\outermarginwidth+.5\linewidth+.5cm,yshift=.2\covershift]current page.south west) rectangle ([xshift=-\outermarginwidth,yshift=1.43\covershift]current page.south east);
- \node[left,text=white,font=\rmfamily\Large,] at
- ([shift={(-2cm,2cm)}]current page.south east) %
- {\raisebox{-1.1cm}{\includegraphics[width=0.2\linewidth]{\@presslogo}}\hspace*{-3.5ex}\begin{varwidth}{.4\textwidth}\tikz\draw[white,line width=1.25pt] (0,0)--++(0,1cm);\,\raisebox{.25cm}{\@pressname} \end{varwidth}};%
- \end{tikzpicture}%
- {\newpage\thispagestyle{empty}}}
-\makeatother
-\endinput
-% %%%%===============================================================%%%%%
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/macros/latex/contrib/beautybook/stys/Beautybook-cover-en.sty b/macros/latex/contrib/beautybook/stys/Beautybook-cover-en.sty
deleted file mode 100644
index 2279661d94..0000000000
--- a/macros/latex/contrib/beautybook/stys/Beautybook-cover-en.sty
+++ /dev/null
@@ -1,87 +0,0 @@
-\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-\ProvidesPackage{stys/Beautybook-cover-en}[2022/05/21,v1.0]
-\usepackage{anyfontsize} % 提供\fontsize{}{}\selectfont命令
-\usepackage{etoolbox} %提供自定义封面选项接口
-\usepackage[dvipsnames,svgnames,x11names,table]{xcolor}%颜色宏包 % Driver-independent color extensions
-\usepackage{tikz}
-\usepackage{graphicx} %插图
-\usetikzlibrary{calc,fadings,patterns}
-\usepackage{adjustbox} %修正minipage顶部对齐问题
-\tikzfading[name=fade right,
- right color =transparent!100,
- left color=transparent!50]
-\tikzfading[name=fade left,
- left color =transparent!100,
- right color=transparent!50]
-\tikzfading[name=fade up,
- top color =transparent!100,
- bottom color=transparent!50]
-\tikzfading[name=fade down,
- bottom color =transparent!100,
- top color=transparent!50]
-\makeatletter
-\newcommand*\makecover{
- %% Use the Tikz library positioning and clear the page header and footer
- \usetikzlibrary{positioning}
- \thispagestyle{empty}
- \begin{tikzpicture}[remember picture,overlay]
- \fill[coverfgcolor]
- (current page.north west) rectangle (current page.south east);% 填充封面背景颜色 (coverbgcolor)
- \coordinate (start) at ($(current page.east)!0.5!(current page.north east)+(1,-1)$);
- \coordinate (end) at (current page.north west);
- \foreach \i in {0,0.01,...,1}
- {
- \coordinate (point) at ($(start)!\i!(end)$);
- \draw[coverfgcolor!50]
- ($(point)+(310*\i:6)$)--
- ($(point)+(310*\i+120:6)$)--
- ($(point)+(310*\i+240:6)$)--
- ($(point)+(310*\i:6)$);
- }
- \coordinate (start) at (current page.south west);
- \coordinate (end) at (current page.east);
- \foreach \i in {0,0.02,...,1}
- {
- \coordinate (point) at ($(start)!\i!(end)$);
- \draw[coverfgcolor!50]
- ($(point)+(310*\i:10)$)--
- ($(point)+(310*\i+120:10)$)--
- ($(point)+(310*\i+240:10)$)--
- ($(point)+(310*\i:10)$);
- }
- \shade[bottom color=coverfgcolor,top color=coverfgcolor!70,opacity=0.7]
- ([xshift=.5\outermarginwidth]current page.north west) rectangle (current page.south east); % 背景大矩形
- \shade[left color=coverfgcolor,right color=coverfgcolor!60,opacity=0.5]
- ([xshift=\outermarginwidth,yshift=2\outermarginwidth]current page.west) rectangle (current page.south east); % 标题背景大矩形
- \fill[coverbar!90,opacity=0.8]
- ([yshift=2\outermarginwidth]current page.west) rectangle ([xshift=\outermarginwidth,yshift=-.2\outermarginwidth]current page.west); % 最左侧装饰矩形
- \foreach \lx/\rx/\ry/\bc/\tc in {
- 1/1.5/1.75/70/80,1.5/2/1.6/65/75,2/2.5/1.3/60/70,2.5/3/1/55/65,3/3.5/.7/50/60,3.5/4/1.2/60/70,4/4.5/1.9/75/85,4.5/5/1.1/55/65,5/5.5/1.2/60/70,6/6.5/1.6/65/75,6.5/7/1.3/60/70,7/7.5/1.87/70/80,7.5/8/1/55/65,8/8.5/.9/50/60,8.5/9/1.8/70/80,9/9.5/1.6/65/75,9.5/10/1.4/60/70,10/10.5/1/55/65,10.5/11/.7/50/60,11/11.5/1.3/55/65,11.5/12/1/70/80,12/12.5/1.3/65/75,12.5/13/1.6/60/70,13/13.5/1.75/55/65,13.5/14/1.6/65/75,14/14.5/1.3/60/70
- }{
- \shade[bottom color=coverfgcolor!\bc,top color=coverfgcolor!\tc,opacity=.5]
- ([xshift=\lx\outermarginwidth]current page.north west) rectangle ([xshift=\rx\outermarginwidth,yshift=-\ry\covershift]current page.north west);%顶部琴键矩形
- }
- \node[anchor=south] at ([xshift=.3\outermarginwidth,yshift=-.4\covershift]current page.north) {%
- \parbox{.8\paperwidth}{
- \filright
- \color{white}\sffamily\fontsize{20}{23}\selectfont\@bookseries}
- }; %系列丛书名称
- \node[ anchor=south] at ([xshift=.3\outermarginwidth,yshift=-.57\paperheight]current page.north)
- {\parbox{.8\paperwidth}{%
- \raggedright%
- {\renewcommand\baselinestretch{1.1}\selectfont \color{white}\sffamily\bfseries\fontsize{40}{40}\selectfont\@title\\[0.5ex]
- \color{white}\sffamily\fontsize{30}{30}\selectfont
- \ifdefvoid{\@subtitle}{}{\@subtitle}\par}
- }};% 封面标题与副标题
- \node[anchor=west,font=\sffamily\fontsize{23}{23}\selectfont,text=white] at ([xshift=1.8\outermarginwidth,yshift=-.6\covershift]current page.west) {\@edition};
- \node[anchor=west,font=\sffamily\Huge,text=white] at ([xshift=1.8\outermarginwidth,yshift=\covershift]current page.west) {\@author};
- \node[left,text=white,font=\rmfamily\Large,] at
- ([shift={(-1cm,2cm)}]current page.south east) %
- {\raisebox{-1.1cm}{\includegraphics[width=0.2\linewidth]{\@presslogo}}\hspace*{-3.5ex}\begin{varwidth}{.4\textwidth}\tikz\draw[white,line width=1.25pt] (0,0)--++(0,1cm);\,\raisebox{.25cm}{\@pressname} \end{varwidth}};%
- \end{tikzpicture}%
- {\newpage\thispagestyle{empty}}
-}
-\makeatother
-%%%%===============================================================%%%%%
-%%------------------------------------------------------封面设计--------------------------------------------------------%%
-\endinput \ No newline at end of file
diff --git a/macros/latex/contrib/beautybook/stys/Beautybook-cover-enfig.sty b/macros/latex/contrib/beautybook/stys/Beautybook-cover-enfig.sty
deleted file mode 100644
index 005518a6d9..0000000000
--- a/macros/latex/contrib/beautybook/stys/Beautybook-cover-enfig.sty
+++ /dev/null
@@ -1,55 +0,0 @@
-\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-\ProvidesPackage{stys/Beautybook-cover-enfig}[2023/02/03,v1.0]
-\definecolor{coverbgcolor}{HTML}{004183}
-\definecolor{coverfgcolor}{HTML}{826e68}
-\definecolor{coverbar}{HTML}{7c9092}
-\tikzfading[name=fade right,
- right color =transparent!100,
- left color=transparent!0]
-\tikzfading[name=fade left,
- left color =transparent!100,
- right color=transparent!50]
-\tikzfading[name=fade up,
- top color =transparent!100,
- bottom color=transparent!50]
-\tikzfading[name=fade down,
- bottom color =transparent!100,
- top color=transparent!50]
-\makeatletter
-\newcommand*\makecover{
- %% Use the Tikz library positioning and clear the page header and footer
- \usetikzlibrary{positioning}
- \thispagestyle{empty}
- \begin{tikzpicture}[remember picture,overlay]
- \begin{pgfonlayer}{bottom}
- \node[opacity=0.8,inner sep=0pt] at (current
- page.center){\includegraphics[width=\paperwidth,height=\paperheight]{\@coverimage}};
- \end{pgfonlayer}
- \shade[left color=coverbgcolor!70,right color=coverbgcolor!50,path fading=fade right,opacity=.5]
- ([xshift=.5\outermarginwidth]current page.north west) rectangle ([xshift=4\outermarginwidth]current page.south west); % 背景大矩形虚化
- \shade[left color=coverfgcolor,right color=coverfgcolor!60,opacity=.8]
- ([xshift=\outermarginwidth,yshift=2\outermarginwidth]current page.west) rectangle (current page.south east); % 标题背景大矩形
- \fill[coverbar,opacity=0.8]
- ([yshift=2\outermarginwidth]current page.west) rectangle ([xshift=\outermarginwidth,yshift=-.2\outermarginwidth]current page.west); % 最左侧装饰矩形
- \node[anchor=south] at ([xshift=.3\outermarginwidth,yshift=-.4\covershift]current page.north) {%
- \parbox{.8\paperwidth}{
- \filright
- \color{white}\sc\fontsize{20}{23}\selectfont\@bookseries}
- }; %系列丛书名称
- \node[ anchor=south] at ([xshift=.3\outermarginwidth,yshift=-.55\paperheight]current page.north)
- {\parbox{.8\paperwidth}{%
- \raggedright%
- {\renewcommand\baselinestretch{1.1}\selectfont \color{white}\sffamily\bfseries\fontsize{40}{40}\selectfont\@title\\[0.5ex]
- \color{white}\sc\fontsize{30}{30}\selectfont
- \ifdefvoid{\@subtitle}{}{\@subtitle}\par}
- }};% 封面标题与副标题
- \node[anchor=west,font=\sc\fontsize{23}{23}\selectfont,text=white] at ([xshift=1.8\outermarginwidth,yshift=-.6\covershift]current page.west) {\@edition};
- \node[anchor=west,font=\sffamily\Huge,text=white] at ([xshift=1.8\outermarginwidth,yshift=\covershift]current page.west) {\@author};
- \node[left,text=white,font=\rmfamily\Large,] at
- ([shift={(-1cm,2cm)}]current page.south east) %
- {\raisebox{-1.1cm}{\includegraphics[width=0.2\linewidth]{\@presslogo}}\hspace*{-3.5ex}\begin{varwidth}{.4\textwidth}\tikz\draw[white,line width=1.25pt] (0,0)--++(0,1cm);\,\raisebox{.25cm}{\@pressname} \end{varwidth}};%
- \end{tikzpicture}%
- {\newpage\thispagestyle{empty}}
-}
-\makeatother
-\endinput
diff --git a/macros/latex/contrib/beautybook/stys/Beautybook-bottompage.sty b/macros/latex/contrib/beautybook/stys/beautybook-bottompage.sty
index 892cf4fbac..814b929bb6 100644
--- a/macros/latex/contrib/beautybook/stys/Beautybook-bottompage.sty
+++ b/macros/latex/contrib/beautybook/stys/beautybook-bottompage.sty
@@ -1,5 +1,5 @@
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-\ProvidesPackage{stys/Beautybook-bottompage}[2023/01/18,v2.0]
+\ProvidesPackage{stys/beautybook-bottompage}[2024/07/01,v2.0]
\usepackage[ISBN=978-80-85955-35-4,SC0]{ean13isbn}
\makeatletter
%%----------------------------------封面信息定义--------------------------------------------------------%%
@@ -45,9 +45,9 @@
\raggedright
\sc\fontsize{20}{23}\selectfont\@bookseries}
}; %系列丛书名称
- \node[right,text=white,font=\rmfamily\Large,] at
- ([shift={(-.5cm,1.5cm)}]current page.south west) %
- {\raisebox{-1.1cm}{\includegraphics[width=0.2\linewidth]{\@presslogo}}\hspace*{-3.5ex}\begin{varwidth}{.4\textwidth}\tikz\draw[white,line width=1.25pt] (0,0)--++(0,1cm);\,\raisebox{.25cm}{\@pressname} \end{varwidth}};%
+ \node[left,text=white,font=\rmfamily\Large,] at
+ ([shift={(5.6cm,2cm)}]current page.south west) %
+ {\raisebox{-0.5cm}{\includegraphics[width=0.1\linewidth]{\@presslogo}}\hspace*{0ex}\begin{varwidth}{.4\textwidth}\tikz\draw[white,line width=1.25pt] (0,0)--++(0,1cm);\,\raisebox{.25cm}{\@pressname} \end{varwidth}};%
\ifdefvoid{\@ISBNcode}{}{
\node[scale=1.5] (isbn) at ([shift={(-1.85\outermarginwidth,.5\covershift)}]current page.south east) {\@ISBNcode};%
\begin{pgfonlayer}{bottom}
diff --git a/macros/latex/contrib/beautybook/stys/beautybook-cover-birkar.sty b/macros/latex/contrib/beautybook/stys/beautybook-cover-birkar.sty
new file mode 100644
index 0000000000..6668db854b
--- /dev/null
+++ b/macros/latex/contrib/beautybook/stys/beautybook-cover-birkar.sty
@@ -0,0 +1,190 @@
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+\ProvidesPackage{stys/beautybook-cover-birkar}[2024/07/01,v2.0]
+\usepackage{anyfontsize} % 提供\fontsize{}{}\selectfont命令
+\usepackage{etoolbox} %提供自定义封面选项接口
+\usepackage[dvipsnames,svgnames,x11names,table]{xcolor}%颜色宏包 % Driver-independent color extensions
+\usepackage{tikz}
+\usetikzlibrary{intersections, positioning, fit, backgrounds, shapes, fadings,
+decorations.pathmorphing, graphs, quotes, angles, calc, through, backgrounds} % %Tikz指令库
+\usepackage{graphicx} %插图
+\usetikzlibrary{calc,fadings,patterns}
+\usepackage{adjustbox} %修正minipage顶部对齐问题
+
+% Define the layers to be used in document.
+% *****************************************************
+\pgfdeclarelayer{background} %背景%底层
+\pgfdeclarelayer{foreground} %上层
+\pgfdeclarelayer{top} %顶部
+\pgfdeclarelayer{bottom} %底部
+\pgfsetlayers{bottom,background,main,foreground,top}
+\definecolor{RED}{RGB}{220, 41, 26}
+\definecolor{arc color}{HTML}{546E7A}
+
+\tikzfading[name=fade right,
+ right color =transparent!100,
+ left color=transparent!0]
+\tikzfading[name=fade left,
+ left color =transparent!100,
+ right color=transparent!50]
+\tikzfading[name=fade up,
+ top color =transparent!100,
+ bottom color=transparent!50]
+\tikzfading[name=fade down,
+ bottom color =transparent!100,
+ top color=transparent!50]
+\makeatletter
+\newcommand{\aivcover}{
+ \begin{tikzpicture}[remember picture,overlay]
+ \begin{pgfonlayer}{bottom}
+ \fill[coverfgcolor]
+ (current page.north west) rectangle (current page.south east);% 填充封面背景颜色 (coverbgcolor)
+ \fill[RED]
+ ([shift={(2.05cm,0)}]current page.north west) rectangle ([shift={(2.35cm,-6cm)}]current page.north west);
+ \fill[coverfgcolor!80,opacity=0.5]
+ ([shift={(0,-2cm)}]current page.north west) arc (90:-90:.3\paperheight) --cycle;
+ \fill[coverfgcolor!80,opacity=0.5]
+ ([shift={(0,-4cm)}]current page.north east) arc (90:270:.2\paperheight) --cycle;
+ \fill[coverfgcolor!80]
+ (current page.north west) rectangle ([shift={(2cm,0)}]current page.south west);
+ \begin{scope}[opacity=0.8]
+ \coordinate (triangleA) at ([shift={(1cm,-1.5cm)}]current page.north);
+ \coordinate (triangleB) at ([shift={(-.75\linewidth,-.44\paperheight)}]triangleA);
+ \coordinate (triangleC) at ([shift={(.5\linewidth,-.44\paperheight)}]triangleA);
+ \draw[name path=triangle,very thick,coverfgcolor!70!white]
+ (triangleA)--(triangleB)--(triangleC)--cycle;
+ \draw[name path=circle,very thick,coverfgcolor!70!white]
+ ([shift={(-1.65cm,-7.8cm)}]triangleA) coordinate (O) circle(6cm);
+ %标注每个交点坐标
+ \fill [name intersections={of=triangle and circle, name=i, total=\t}]
+ [coverbar,opacity=0.5, every node/.style={above left, white, opacity=1}]
+ \foreach \s in {1,...,\t}{(i-\s) circle (1em) node {}};
+ \draw[name path=l,very thick,coverfgcolor!70!white] (i-1) -- (triangleC);
+ \draw[very thick,coverfgcolor!70!white] (i-6) -- (triangleB);
+ \draw[name path=l2,very thick,coverfgcolor!70!white] (i-4) -- (triangleA);
+ \fill[name intersections={of=l and circle,name=j,total=\l}]
+ [coverbar,opacity=0.5, every node/.style={above left, white, opacity=1}]
+ \foreach \c in {1,...,\l}{(j-\c) circle (1em) node {}};
+
+ \fill[name intersections={of=l2 and l,name=jj,total=\ll}]
+ [coverbar,opacity=0.5, every node/.style={above left, white, opacity=1}]
+ \foreach \cc in {1,...,\ll}{(jj-\cc) circle (1em) node {}};
+ \end{scope}
+ \end{pgfonlayer}
+ \begin{pgfonlayer}{foreground}
+ \fill[coverbar,opacity=.5]
+ ([yshift=2\outermarginwidth]current page.west) rectangle ([xshift=\outermarginwidth,yshift=-.2\outermarginwidth]current page.west); % 最左侧装饰矩形
+ \end{pgfonlayer}
+ \shade[left color=coverfgcolor,right color=coverfgcolor!60,opacity=.3]
+ ([xshift=\outermarginwidth,yshift=2\outermarginwidth]current page.west) rectangle (current page.south east); % 标题背景大矩形
+ \node[anchor=south] at ([xshift=.3\outermarginwidth,yshift=-.4\covershift]current page.north) {%
+ \parbox{.8\paperwidth}{
+ \filright
+ \color{white}\sffamily\fontsize{20}{23}\selectfont\@bookseries}
+ }; %系列丛书名称
+ \node[ anchor=south,below right] (covertitles) at ([xshift=1.8\outermarginwidth-0.2cm,yshift=2.7cm]current page.west)
+ {\parbox{.8\paperwidth}{%
+ \raggedright%
+ {\renewcommand\baselinestretch{1.1}\selectfont \color{white}\sffamily\bfseries\fontsize{40}{40}\selectfont\@title\\[0.5ex]
+ \color{white}\sc\fontsize{30}{30}\selectfont
+ \ifdefvoid{\@subtitle}{}{\@subtitle}\par}
+ }};% 封面标题与副标题
+ \node[anchor=west,font=\sc\fontsize{23}{23}\selectfont,text=white] at ([shift={(-.4\paperwidth,-6cm)}]covertitles) {\@edition};
+ \node[anchor=west,font=\sffamily\Huge,text=white] at ([xshift=1.8\outermarginwidth-0.3cm,yshift=\covershift]current page.west) {\@author};
+ \node[left,text=white,font=\rmfamily\Large,] at
+ ([shift={(-2cm,2cm)}]current page.south east)
+ {\raisebox{-0.5cm}{\includegraphics[width=0.1\linewidth]{\@presslogo}}\hspace*{0ex}\begin{varwidth}{.4\textwidth}\tikz\draw[white,line width=1.25pt] (0,0)--++(0,1cm);\,\raisebox{.25cm}{\@pressname} \end{varwidth}};%
+\end{tikzpicture}%
+}
+
+\newcommand{\lettercover}{
+ \begin{tikzpicture}[remember picture,overlay]
+ \begin{pgfonlayer}{bottom}
+ \fill[coverfgcolor]
+ (current page.north west) rectangle (current page.south east);% 填充封面背景颜色 (coverbgcolor)
+ \fill[RED]
+ ([shift={(2.05cm,0)}]current page.north west) rectangle ([shift={(2.35cm,-6cm)}]current page.north west);
+ \fill[coverfgcolor!80,opacity=0.5]
+ ([shift={(0,-2cm)}]current page.north west) arc (90:-90:.3\paperheight) --cycle;
+ \fill[coverfgcolor!80,opacity=0.5]
+ ([shift={(0,-4cm)}]current page.north east) arc (90:270:.2\paperheight) --cycle;
+ \fill[coverfgcolor!80]
+ (current page.north west) rectangle ([shift={(2cm,0)}]current page.south west);
+ \begin{scope}[opacity=0.8]
+ \coordinate (triangleA) at ([shift={(1cm,-1cm)}]current page.north);
+ \coordinate (triangleB) at ([shift={(-.85\linewidth,-.46\paperheight)}]triangleA);
+ \coordinate (triangleC) at ([shift={(.52\linewidth,-.46\paperheight)}]triangleA);
+ \draw[name path=triangle,very thick,coverfgcolor!70!white]
+ (triangleA)--(triangleB)--(triangleC)--cycle;
+ \draw[name path=circle,very thick,coverfgcolor!70!white]
+ ([shift={(-1.6cm,-7.3cm)}]triangleA) coordinate (O) circle(6cm);
+ %标注每个交点坐标
+ \fill [name intersections={of=triangle and circle, name=i, total=\t}]
+ [coverbar,opacity=0.5, every node/.style={above left, white, opacity=1}]
+ \foreach \s in {1,...,\t}{(i-\s) circle (1em) node {}};
+ \draw[name path=l,very thick,coverfgcolor!70!white] (i-1) -- (triangleC);
+ \draw[very thick,coverfgcolor!70!white] (i-6) -- (triangleB);
+ \draw[name path=l2,very thick,coverfgcolor!70!white] (i-4) -- (triangleA);
+ \fill[name intersections={of=l and circle,name=j,total=\l}]
+ [coverbar,opacity=0.5, every node/.style={above left, white, opacity=1}]
+ \foreach \c in {1,...,\l}{(j-\c) circle (1em) node {}};
+
+ \fill[name intersections={of=l2 and l,name=jj,total=\ll}]
+ [coverbar,opacity=0.5, every node/.style={above left, white, opacity=1}]
+ \foreach \cc in {1,...,\ll}{(jj-\cc) circle (1em) node {}};
+ \end{scope}
+ \end{pgfonlayer}
+ \begin{pgfonlayer}{foreground}
+ \fill[coverbar,opacity=.5]
+ ([yshift=2\outermarginwidth]current page.west) rectangle ([xshift=\outermarginwidth,yshift=-.2\outermarginwidth]current page.west); % 最左侧装饰矩形
+ \end{pgfonlayer}
+ \shade[left color=coverfgcolor,right color=coverfgcolor!60,opacity=.3]
+ ([xshift=\outermarginwidth,yshift=2\outermarginwidth]current page.west) rectangle (current page.south east); % 标题背景大矩形
+ \node[anchor=south] at ([xshift=.3\outermarginwidth,yshift=-.4\covershift]current page.north) {%
+ \parbox{.8\paperwidth}{
+ \filright
+ \color{white}\sffamily\fontsize{20}{23}\selectfont\@bookseries}
+ }; %系列丛书名称
+ \node[ anchor=south,below right] (covertitles) at ([xshift=1.8\outermarginwidth-0.2cm,yshift=2.7cm]current page.west)
+ {\parbox{.8\paperwidth}{%
+ \raggedright%
+ {\renewcommand\baselinestretch{1.1}\selectfont \color{white}\sffamily\bfseries\fontsize{40}{40}\selectfont\@title\\[0.5ex]
+ \color{white}\sc\fontsize{30}{30}\selectfont
+ \ifdefvoid{\@subtitle}{}{\@subtitle}\par}
+ }};% 封面标题与副标题
+ \node[anchor=west,font=\sc\fontsize{23}{23}\selectfont,text=white] at ([shift={(-.4\paperwidth,-6cm)}]covertitles) {\@edition};
+ \node[anchor=west,font=\sffamily\Huge,text=white] at ([xshift=1.8\outermarginwidth-0.3cm,yshift=\covershift]current page.west) {\@author};
+ \node[left,text=white,font=\rmfamily\Large,] at
+ ([shift={(-2cm,2cm)}]current page.south east)
+ {\raisebox{-0.5cm}{\includegraphics[width=0.1\linewidth]{\@presslogo}}\hspace*{0ex}\begin{varwidth}{.4\textwidth}\tikz\draw[white,line width=1.25pt] (0,0)--++(0,1cm);\,\raisebox{.25cm}{\@pressname} \end{varwidth}};%
+\end{tikzpicture}%
+}
+
+\newcommand\makecover{
+ \thispagestyle{empty}
+ \ifaivpaper@TF{\aivcover}{\lettercover}
+ {\newpage\thispagestyle{empty}}
+}
+\makeatother
+
+\endinput
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/macros/latex/contrib/beautybook/stys/beautybook-cover-cn.sty b/macros/latex/contrib/beautybook/stys/beautybook-cover-cn.sty
new file mode 100644
index 0000000000..399246d97a
--- /dev/null
+++ b/macros/latex/contrib/beautybook/stys/beautybook-cover-cn.sty
@@ -0,0 +1,162 @@
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+\ProvidesPackage{stys/beautybook-cover-cn}[2024/07/01,v2.0]
+\usetikzlibrary{calc,fadings,patterns}
+\usepackage{adjustbox} %修正minipage顶部对齐问题
+%%%%===============================================================%%%%%
+% \definecolor{coverbgcolor}{HTML}{9CCCDA}
+% \definecolor{coverfgcolor}{HTML}{508E99}
+% \definecolor{coverbar}{HTML}{305756}
+\tikzfading[name=fade right,
+ right color =transparent!100,
+ left color=transparent!50]
+\tikzfading[name=fade left,
+ left color =transparent!100,
+ right color=transparent!50]
+\tikzfading[name=fade up,
+ top color =transparent!100,
+ bottom color=transparent!50]
+\tikzfading[name=fade down,
+ bottom color =transparent!100,
+ top color=transparent!50]
+\makeatletter
+\newcommand{\aivcover}{
+ \begin{tikzpicture}[remember picture,overlay]
+ \fill[coverfgcolor!75]
+ (current page.north west) rectangle (current page.south east);% 填充封面背景颜色 (coverbgcolor)
+ \fill[coverfgcolor!50]
+ ([xshift=-3\covershift,yshift=-.4\covershift]current page.east) rectangle ([yshift=-1.35\covershift]current page.east); % 被标题背景遮挡露出一部分的装饰矩形
+ \fill[coverfgcolor]
+ ([xshift=\outermarginwidth]current page.north west) rectangle ([xshift=-\outermarginwidth,yshift=1.5\covershift]current page.south east); % 标题背景大矩形
+ \fill[coverbar]
+ ([yshift=.44\covershift+0.05cm]current page.west) rectangle ([xshift=\outermarginwidth,yshift=-.4\covershift]current page.west); % 最左侧装饰矩形
+ \node[left] at ([xshift=-1.8cm,yshift=-1.5cm]current page.north east) {%
+ \parbox{3\covershift}{
+ \raggedleft
+ \color{white}\sffamily\bfseries\fontsize{18}{22}\selectfont\@bookseries}
+ }; %系列丛书名称
+ \node[right] at ([xshift=\outermarginwidth,yshift=1.5*\covershift]current page.west)
+ {\parbox{.8\paperwidth}{%
+ \filright%
+ \color{white}\sffamily\bfseries\fontsize{30}{30}\selectfont\@title\\[-1ex]
+ \begin{tikzpicture}
+ \draw[white,line width=1pt] (0,0) --++ (\paperwidth-3\outermarginwidth,0);
+ \end{tikzpicture}\\[0ex]
+ \color{white}\sc\fontsize{30}{30}\selectfont
+ \ifdefvoid{\@subtitle}{}{\@subtitle}
+ }};% 封面英文书名与中文书名
+ \node[left,inner sep=0pt,outer sep=0pt] at ([xshift=1.2\outermarginwidth,yshift=1.8cm]current page.east)
+ {%
+ \adjustbox{valign=t}{
+ \begin{minipage}{.25\textwidth}
+ \begin{tikzpicture}
+ \foreach \x/\r in {1.2/6,.8/4} {
+ \draw[white,line width=\x pt] (0,0) circle [radius=\r pt];}
+ \fill[white] (0,0) circle [radius=2.5pt];
+ \end{tikzpicture}
+ \hspace{2pt}\color{white}\sffamily\fontsize{20}{25}\selectfont Editors
+ \end{minipage}}
+ \hfill
+ \adjustbox{valign=t}{\begin{minipage}{.45\textwidth}
+ \raggedright\color{white}\sffamily\fontsize{20}{25}\selectfont\@author
+ \end{minipage}}
+ };% 封面作者信息栏
+ \fill [path picture={ \node at (path picture bounding box.center)
+ {\includegraphics[height=1.1\linewidth,keepaspectratio]{\@coverimage}};}]
+ ([xshift=\outermarginwidth]current page.south west) rectangle ++(1.8*\covershift,.575\paperheight);
+ \fill[pattern color=coverfgcolor!70,pattern=horizontal lines,opacity=0.8]
+ ([xshift=\outermarginwidth,yshift=.2\covershift]current page.south west) rectangle ([xshift=-\outermarginwidth,yshift=1.43\covershift]current page.south east);
+ \fill [coverfgcolor!80,path fading=fade right]%
+ ([xshift=\outermarginwidth+.5\linewidth+.5cm,yshift=.2\covershift]current page.south west) rectangle ([xshift=-\outermarginwidth,yshift=1.43\covershift]current page.south east);
+ \fill [coverfgcolor!80,path fading=fade left]%
+ ([xshift=\outermarginwidth+.5\linewidth+.5cm,yshift=.2\covershift]current page.south west) rectangle ([xshift=-\outermarginwidth,yshift=1.43\covershift]current page.south east);
+ \node[left,text=white,font=\rmfamily\Large,] at
+ ([shift={(-2cm,2cm)}]current page.south east) %
+ {\raisebox{-0.5cm}{\includegraphics[width=0.1\linewidth]{\@presslogo}}\hspace*{0ex}\begin{varwidth}{.4\textwidth}\tikz\draw[white,line width=1.25pt] (0,0)--++(0,1cm);\,\raisebox{.25cm}{\@pressname} \end{varwidth}};%
+ \end{tikzpicture}%
+ }
+
+\newcommand{\lettercover}{
+ \begin{tikzpicture}[remember picture,overlay]
+ \fill[coverfgcolor!75]
+ (current page.north west) rectangle (current page.south east);% 填充封面背景颜色 (coverbgcolor)
+ \fill[coverfgcolor!50]
+ ([xshift=-3\covershift,yshift=-.4\covershift]current page.east) rectangle ([yshift=-1.2\covershift]current page.east); % 被标题背景遮挡露出一部分的装饰矩形
+ \fill[coverfgcolor]
+ ([xshift=\outermarginwidth]current page.north west) rectangle ([xshift=-\outermarginwidth,yshift=1.5\covershift]current page.south east); % 标题背景大矩形
+ \fill[coverbar]
+ ([yshift=.44\covershift-0.1cm]current page.west) rectangle ([xshift=\outermarginwidth,yshift=-.4\covershift]current page.west); % 最左侧装饰矩形
+ \node[left] at ([xshift=-1.8cm,yshift=-1.5cm]current page.north east) {%
+ \parbox{3\covershift}{
+ \raggedleft
+ \color{white}\sffamily\bfseries\fontsize{18}{22}\selectfont\@bookseries}
+ }; %系列丛书名称
+ \node[right] at ([xshift=\outermarginwidth,yshift=1.5*\covershift]current page.west)
+ {\parbox{.8\paperwidth}{%
+ \filright%
+ \color{white}\sffamily\bfseries\fontsize{30}{30}\selectfont\@title\\[-1ex]
+ \begin{tikzpicture}
+ \draw[white,line width=1pt] (0,0) --++ (\paperwidth-3\outermarginwidth,0);
+ \end{tikzpicture}\\[0ex]
+ \color{white}\sc\fontsize{30}{30}\selectfont
+ \ifdefvoid{\@subtitle}{}{\@subtitle}
+ }};% 封面英文书名与中文书名
+ \node[left,inner sep=0pt,outer sep=0pt] at ([xshift=1.2\outermarginwidth,yshift=1.8cm]current page.east)
+ {%
+ \adjustbox{valign=t}{
+ \begin{minipage}{.25\textwidth}
+ \begin{tikzpicture}
+ \foreach \x/\r in {1.2/6,.8/4} {
+ \draw[white,line width=\x pt] (0,0) circle [radius=\r pt];}
+ \fill[white] (0,0) circle [radius=2.5pt];
+ \end{tikzpicture}
+ \hspace{2pt}\color{white}\sffamily\fontsize{20}{25}\selectfont Editors
+ \end{minipage}}
+ \hfill
+ \adjustbox{valign=t}{\begin{minipage}{.45\textwidth}
+ \raggedright\color{white}\sffamily\fontsize{20}{25}\selectfont\@author
+ \end{minipage}}
+ };% 封面作者信息栏
+ \fill [path picture={ \node at (path picture bounding box.center)
+ {\includegraphics[height=1.1\linewidth,keepaspectratio]{\@coverimage}};}]
+ ([xshift=\outermarginwidth]current page.south west) rectangle ++(1.8*\covershift,.575\paperheight);
+ \fill[pattern color=coverfgcolor!70,pattern=horizontal lines,opacity=0.8]
+ ([xshift=\outermarginwidth,yshift=.2\covershift]current page.south west) rectangle ([xshift=-\outermarginwidth,yshift=1.43\covershift]current page.south east);
+ \fill [coverfgcolor!80,path fading=fade right]%
+ ([xshift=\outermarginwidth+.5\linewidth+.2cm,yshift=.2\covershift]current page.south west) rectangle ([xshift=-\outermarginwidth,yshift=1.43\covershift]current page.south east);
+ \fill [coverfgcolor!80,path fading=fade left]%
+ ([xshift=\outermarginwidth+.5\linewidth+.2cm,yshift=.2\covershift]current page.south west) rectangle ([xshift=-\outermarginwidth,yshift=1.43\covershift]current page.south east);
+ \node[left,text=white,font=\rmfamily\Large,] at
+ ([shift={(-2cm,2cm)}]current page.south east) %
+ {\raisebox{-0.5cm}{\includegraphics[width=0.1\linewidth]{\@presslogo}}\hspace*{0ex}\begin{varwidth}{.4\textwidth}\tikz\draw[white,line width=1.25pt] (0,0)--++(0,1cm);\,\raisebox{.25cm}{\@pressname} \end{varwidth}};%
+ \end{tikzpicture}%
+ }
+
+\newcommand\makecover{
+ \thispagestyle{empty}
+ \ifaivpaper@TF{\aivcover}{\lettercover}
+ {\newpage\thispagestyle{empty}}
+}
+\makeatother
+\endinput
+% %%%%===============================================================%%%%%
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/macros/latex/contrib/beautybook/stys/beautybook-cover-en.sty b/macros/latex/contrib/beautybook/stys/beautybook-cover-en.sty
new file mode 100644
index 0000000000..76d358c627
--- /dev/null
+++ b/macros/latex/contrib/beautybook/stys/beautybook-cover-en.sty
@@ -0,0 +1,149 @@
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+\ProvidesPackage{stys/beautybook-cover-en}[2024/07/01,v2.0]
+\usepackage{anyfontsize} % 提供\fontsize{}{}\selectfont命令
+\usepackage{etoolbox} %提供自定义封面选项接口
+\usepackage[dvipsnames,svgnames,x11names,table]{xcolor}%颜色宏包 % Driver-independent color extensions
+\usepackage{tikz}
+\usepackage{graphicx} %插图
+\usetikzlibrary{calc,fadings,patterns}
+\usepackage{adjustbox} %修正minipage顶部对齐问题
+\tikzfading[name=fade right,
+ right color =transparent!100,
+ left color=transparent!50]
+\tikzfading[name=fade left,
+ left color =transparent!100,
+ right color=transparent!50]
+\tikzfading[name=fade up,
+ top color =transparent!100, % 完全透明
+ bottom color=transparent!50] % 半透明
+\tikzfading[name=fade down,
+ bottom color =transparent!100,
+ top color=transparent!50]
+\makeatletter
+\newcommand{\aivcover}{
+ \begin{tikzpicture}[remember picture,overlay]
+ \fill[coverfgcolor]
+ (current page.north west) rectangle (current page.south east);% 填充封面背景颜色 (coverbgcolor)
+ \coordinate (start) at ($(current page.east)!0.5!(current page.north east)+(1,-1)$);
+ \coordinate (end) at (current page.north west);
+ \foreach \i in {0,0.01,...,1}
+ {
+ \coordinate (point) at ($(start)!\i!(end)$);
+ \draw[coverfgcolor!50]
+ ($(point)+(310*\i:6)$)--
+ ($(point)+(310*\i+120:6)$)--
+ ($(point)+(310*\i+240:6)$)--
+ ($(point)+(310*\i:6)$);
+ }
+ \coordinate (start) at (current page.south west);
+ \coordinate (end) at (current page.east);
+ \foreach \i in {0,0.02,...,1}
+ {
+ \coordinate (point) at ($(start)!\i!(end)$);
+ \draw[coverfgcolor!50]
+ ($(point)+(310*\i:10)$)--
+ ($(point)+(310*\i+120:10)$)--
+ ($(point)+(310*\i+240:10)$)--
+ ($(point)+(310*\i:10)$);
+ }
+ \shade[bottom color=coverfgcolor,top color=coverfgcolor!70,opacity=0.7]
+ ([xshift=.5\outermarginwidth]current page.north west) rectangle (current page.south east); % 背景大矩形
+ \shade[left color=coverfgcolor,right color=coverfgcolor!60,opacity=0.5]
+ ([xshift=\outermarginwidth,yshift=2\outermarginwidth]current page.west) rectangle (current page.south east); % 标题背景大矩形
+ \fill[coverbar!90,opacity=0.8]
+ ([yshift=2\outermarginwidth]current page.west) rectangle ([xshift=\outermarginwidth,yshift=-.2\outermarginwidth]current page.west); % 最左侧装饰矩形
+ \foreach \lx/\rx/\ry/\bc/\tc in {
+ 1/1.5/1.75/70/80,1.5/2/1.6/65/75,2/2.5/1.3/60/70,2.5/3/1/55/65,3/3.5/.7/50/60,3.5/4/1.2/60/70,4/4.5/1.9/75/85,4.5/5/1.1/55/65,5/5.5/1.2/60/70,6/6.5/1.6/65/75,6.5/7/1.3/60/70,7/7.5/1.87/70/80,7.5/8/1/55/65,8/8.5/.9/50/60,8.5/9/1.8/70/80,9/9.5/1.6/65/75,9.5/10/1.4/60/70,10/10.5/1/55/65,10.5/11/.7/50/60,11/11.5/1.3/55/65,11.5/12/1/70/80,12/12.5/1.3/65/75,12.5/13/1.6/60/70,13/13.5/1.75/55/65,13.5/14/1.6/65/75,14/14.5/1.3/60/70
+ }{
+ \shade[bottom color=coverfgcolor!\bc,top color=coverfgcolor!\tc,opacity=.5]
+ ([xshift=\lx\outermarginwidth]current page.north west) rectangle ([xshift=\rx\outermarginwidth,yshift=-\ry\covershift]current page.north west);%顶部琴键矩形
+ }
+ \node[anchor=south] at ([xshift=.3\outermarginwidth,yshift=-.4\covershift]current page.north) {%
+ \parbox{.8\paperwidth}{
+ \filright
+ \color{white}\sffamily\fontsize{20}{23}\selectfont\@bookseries}
+ }; %系列丛书名称
+ \node[ anchor=south,below right] (covertitles) at ([xshift=1.8\outermarginwidth-0.2cm,yshift=2.7cm]current page.west)
+ {\parbox{.8\paperwidth}{%
+ \raggedright%
+ {\renewcommand\baselinestretch{1.1}\selectfont \color{white}\sffamily\bfseries\fontsize{40}{40}\selectfont\@title\\[0.5ex]
+ \color{white}\sffamily\fontsize{30}{30}\selectfont
+ \ifdefvoid{\@subtitle}{}{\@subtitle}\par}
+ }};% 封面标题与副标题
+ \node[anchor=west,font=\sc\fontsize{23}{23}\selectfont,text=white] at ([shift={(-.4\paperwidth,-6cm)}]covertitles) {\@edition};
+ \node[anchor=west,font=\sffamily\Huge,text=white] at ([xshift=1.8\outermarginwidth-0.3cm,yshift=\covershift]current page.west) {\@author};
+ \node[left,text=white,font=\rmfamily\Large,] at
+ ([shift={(-2cm,2cm)}]current page.south east) %
+ {\raisebox{-0.5cm}{\includegraphics[width=0.1\linewidth]{\@presslogo}}\hspace*{0ex}\begin{varwidth}{.4\textwidth}\tikz\draw[white,line width=1.25pt] (0,0)--++(0,1cm);\,\raisebox{.25cm}{\@pressname} \end{varwidth}};%
+ \end{tikzpicture}%
+ {\newpage\thispagestyle{empty}}
+}
+
+\newcommand{\lettercover}{
+ \begin{tikzpicture}[remember picture,overlay]
+ \fill[coverfgcolor]
+ (current page.north west) rectangle (current page.south east);% 填充封面背景颜色 (coverbgcolor)
+ \coordinate (start) at ($(current page.east)!0.5!(current page.north east)+(1,-1)$);
+ \coordinate (end) at (current page.north west);
+ \foreach \i in {0,0.01,...,1}
+ {
+ \coordinate (point) at ($(start)!\i!(end)$);
+ \draw[coverfgcolor!50]
+ ($(point)+(310*\i:6)$)--
+ ($(point)+(310*\i+120:6)$)--
+ ($(point)+(310*\i+240:6)$)--
+ ($(point)+(310*\i:6)$);
+ }
+ \coordinate (start) at (current page.south west);
+ \coordinate (end) at (current page.east);
+ \foreach \i in {0,0.02,...,1}
+ {
+ \coordinate (point) at ($(start)!\i!(end)$);
+ \draw[coverfgcolor!50]
+ ($(point)+(310*\i:10)$)--
+ ($(point)+(310*\i+120:10)$)--
+ ($(point)+(310*\i+240:10)$)--
+ ($(point)+(310*\i:10)$);
+ }
+ \shade[bottom color=coverfgcolor,top color=coverfgcolor!70,opacity=0.7]
+ ([xshift=.5\outermarginwidth]current page.north west) rectangle (current page.south east); % 背景大矩形
+ \shade[left color=coverfgcolor,right color=coverfgcolor!60,opacity=0.5]
+ ([xshift=\outermarginwidth,yshift=2\outermarginwidth]current page.west) rectangle (current page.south east); % 标题背景大矩形
+ \fill[coverbar!90,opacity=0.8]
+ ([yshift=2\outermarginwidth]current page.west) rectangle ([xshift=\outermarginwidth,yshift=-.2\outermarginwidth]current page.west); % 最左侧装饰矩形
+ \foreach \lx/\rx/\ry/\bc/\tc in {
+ 1/1.5/1.75/70/80,1.5/2/1.6/65/75,2/2.5/1.3/60/70,2.5/3/1/55/65,3/3.5/.7/50/60,3.5/4/1.2/60/70,4/4.5/1.9/75/85,4.5/5/1.1/55/65,5/5.5/1.2/60/70,6/6.5/1.6/65/75,6.5/7/1.3/60/70,7/7.5/1.87/70/80,7.5/8/1/55/65,8/8.5/.9/50/60,8.5/9/1.8/70/80,9/9.5/1.6/65/75,9.5/10/1.4/60/70,10/10.5/1/55/65,10.5/11/.7/50/60,11/11.5/1.3/55/65,11.5/12/1/70/80,12/12.5/1.3/65/75,12.5/13/1.6/60/70,13/13.5/1.75/55/65,13.5/14/1.6/65/75,14/14.5/1.3/60/70
+ }{
+ \shade[bottom color=coverfgcolor!\bc,top color=coverfgcolor!\tc,opacity=.5]
+ ([xshift=\lx\outermarginwidth]current page.north west) rectangle ([xshift=\rx\outermarginwidth,yshift=-\ry\covershift]current page.north west);%顶部琴键矩形
+ }
+ \node[anchor=south] at ([xshift=.3\outermarginwidth,yshift=-.4\covershift]current page.north) {%
+ \parbox{.8\paperwidth}{
+ \filright
+ \color{white}\sffamily\fontsize{20}{23}\selectfont\@bookseries}
+ }; %系列丛书名称
+ \node[ anchor=south,below right] (covertitles) at ([xshift=1.8\outermarginwidth-0.2cm,yshift=2.7cm]current page.west)
+ {\parbox{.8\paperwidth}{%
+ \raggedright%
+ {\renewcommand\baselinestretch{1.1}\selectfont \color{white}\sffamily\bfseries\fontsize{40}{40}\selectfont\@title\\[0.5ex]
+ \color{white}\sffamily\fontsize{30}{30}\selectfont
+ \ifdefvoid{\@subtitle}{}{\@subtitle}\par}
+ }};% 封面标题与副标题
+ \node[anchor=west,font=\sc\fontsize{23}{23}\selectfont,text=white] at ([shift={(-.4\paperwidth,-6cm)}]covertitles) {\@edition};
+ \node[anchor=west,font=\sffamily\Huge,text=white] at ([xshift=1.8\outermarginwidth-0.3cm,yshift=\covershift]current page.west) {\@author};
+ \node[left,text=white,font=\rmfamily\Large,] at
+ ([shift={(-2cm,2cm)}]current page.south east) %
+ {\raisebox{-0.5cm}{\includegraphics[width=0.1\linewidth]{\@presslogo}}\hspace*{0ex}\begin{varwidth}{.4\textwidth}\tikz\draw[white,line width=1.25pt] (0,0)--++(0,1cm);\,\raisebox{.25cm}{\@pressname} \end{varwidth}};%
+ \end{tikzpicture}%
+ {\newpage\thispagestyle{empty}}
+}
+
+\newcommand\makecover{
+ \thispagestyle{empty}
+ \ifaivpaper@TF{\aivcover}{\lettercover}
+ {\newpage\thispagestyle{empty}}
+}
+\makeatother
+%%%%===============================================================%%%%%
+%%------------------------------------------------------封面设计--------------------------------------------------------%%
+\endinput \ No newline at end of file
diff --git a/macros/latex/contrib/beautybook/stys/beautybook-cover-enfig.sty b/macros/latex/contrib/beautybook/stys/beautybook-cover-enfig.sty
new file mode 100644
index 0000000000..9c24de8b3e
--- /dev/null
+++ b/macros/latex/contrib/beautybook/stys/beautybook-cover-enfig.sty
@@ -0,0 +1,88 @@
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+\ProvidesPackage{stys/beautybook-cover-enfig}[2024/07/01,v2.0]
+\tikzfading[name=fade right,
+ right color =transparent!100,
+ left color=transparent!0]
+\tikzfading[name=fade left,
+ left color =transparent!100,
+ right color=transparent!50]
+\tikzfading[name=fade up,
+ top color =transparent!100,
+ bottom color=transparent!50]
+\tikzfading[name=fade down,
+ bottom color =transparent!100,
+ top color=transparent!50]
+\makeatletter
+\newcommand{\aivcover}{
+ \begin{tikzpicture}[remember picture,overlay]
+ \begin{pgfonlayer}{bottom}
+ \node[opacity=0.8,inner sep=0pt] at (current
+ page.center){\includegraphics[width=\paperwidth,height=\paperheight]{\@coverimage}};
+ \end{pgfonlayer}
+ \shade[left color=coverbgcolor!70,right color=coverbgcolor!50,path fading=fade right,opacity=.5]
+ ([xshift=.5\outermarginwidth]current page.north west) rectangle ([xshift=4\outermarginwidth]current page.south west); % 背景大矩形虚化
+ \shade[left color=coverfgcolor,right color=coverfgcolor!60,opacity=.8]
+ ([xshift=\outermarginwidth,yshift=2\outermarginwidth]current page.west) rectangle (current page.south east); % 标题背景大矩形
+ \fill[coverbar,opacity=0.8]
+ ([yshift=2\outermarginwidth]current page.west) rectangle ([xshift=\outermarginwidth,yshift=-.2\outermarginwidth]current page.west); % 最左侧装饰矩形
+ \node[anchor=south] at ([xshift=.3\outermarginwidth,yshift=-.4\covershift]current page.north) {%
+ \parbox{.8\paperwidth}{
+ \filright
+ \color{white}\sc\fontsize{20}{23}\selectfont\@bookseries}
+ }; %系列丛书名称
+ \node[ anchor=south,below right] (covertitles) at ([xshift=1.8\outermarginwidth-0.2cm,yshift=2.7cm]current page.west)
+ {\parbox{.8\paperwidth}{%
+ \raggedright%
+ {\renewcommand\baselinestretch{1.1}\selectfont \color{white}\sffamily\bfseries\fontsize{40}{40}\selectfont\@title\\[0.5ex]
+ \color{white}\sc\fontsize{30}{30}\selectfont
+ \ifdefvoid{\@subtitle}{}{\@subtitle}\par}
+ }};% 封面标题与副标题
+ \node[anchor=west,font=\sc\fontsize{23}{23}\selectfont,text=white] at ([shift={(-.4\paperwidth,-6cm)}]covertitles) {\@edition};
+ \node[anchor=west,font=\sffamily\Huge,text=white] at ([xshift=1.8\outermarginwidth-0.3cm,yshift=\covershift]current page.west) {\@author};
+ \node[left,text=white,font=\rmfamily\Large,] at
+ ([shift={(-2cm,2cm)}]current page.south east) %
+ {\raisebox{-0.5cm}{\includegraphics[width=0.1\linewidth]{\@presslogo}}\hspace*{0ex}\begin{varwidth}{.4\textwidth}\tikz\draw[white,line width=1.25pt] (0,0)--++(0,1cm);\,\raisebox{.25cm}{\@pressname} \end{varwidth}};%
+ \end{tikzpicture}%
+ {\newpage\thispagestyle{empty}}
+}
+
+\newcommand{\lettercover}{
+ \begin{tikzpicture}[remember picture,overlay]
+ \begin{pgfonlayer}{bottom}
+ \node[opacity=0.8,inner sep=0pt] at (current
+ page.center){\includegraphics[width=\paperwidth,height=\paperheight]{\@coverimage}};
+ \end{pgfonlayer}
+ \shade[left color=coverbgcolor!70,right color=coverbgcolor!50,path fading=fade right,opacity=.5]
+ ([xshift=.5\outermarginwidth]current page.north west) rectangle ([xshift=4\outermarginwidth]current page.south west); % 背景大矩形虚化
+ \shade[left color=coverfgcolor,right color=coverfgcolor!60,opacity=.8]
+ ([xshift=\outermarginwidth,yshift=2\outermarginwidth]current page.west) rectangle (current page.south east); % 标题背景大矩形
+ \fill[coverbar,opacity=0.8]
+ ([yshift=2\outermarginwidth]current page.west) rectangle ([xshift=\outermarginwidth,yshift=-.2\outermarginwidth]current page.west); % 最左侧装饰矩形
+ \node[anchor=south] at ([xshift=.3\outermarginwidth,yshift=-.4\covershift]current page.north) {%
+ \parbox{.8\paperwidth}{
+ \filright
+ \color{white}\sc\fontsize{20}{23}\selectfont\@bookseries}
+ }; %系列丛书名称
+ \node[ anchor=south,below right] (covertitles) at ([xshift=1.8\outermarginwidth-0.2cm,yshift=2.7cm]current page.west)
+ {\parbox{.8\paperwidth}{%
+ \raggedright%
+ {\renewcommand\baselinestretch{1.1}\selectfont \color{white}\sffamily\bfseries\fontsize{40}{40}\selectfont\@title\\[0.5ex]
+ \color{white}\sc\fontsize{30}{30}\selectfont
+ \ifdefvoid{\@subtitle}{}{\@subtitle}\par}
+ }};% 封面标题与副标题
+ \node[anchor=west,font=\sc\fontsize{23}{23}\selectfont,text=white] at ([shift={(-.4\paperwidth,-6cm)}]covertitles) {\@edition};
+ \node[anchor=west,font=\sffamily\Huge,text=white] at ([xshift=1.8\outermarginwidth-0.3cm,yshift=\covershift]current page.west) {\@author};
+ \node[left,text=white,font=\rmfamily\Large,] at
+ ([shift={(-2cm,2cm)}]current page.south east) %
+ {\raisebox{-0.5cm}{\includegraphics[width=0.1\linewidth]{\@presslogo}}\hspace*{0ex}\begin{varwidth}{.4\textwidth}\tikz\draw[white,line width=1.25pt] (0,0)--++(0,1cm);\,\raisebox{.25cm}{\@pressname} \end{varwidth}};%
+ \end{tikzpicture}%
+ {\newpage\thispagestyle{empty}}
+}
+
+\newcommand\makecover{
+ \thispagestyle{empty}
+ \ifaivpaper@TF{\aivcover}{\lettercover}
+ {\newpage\thispagestyle{empty}}
+}
+\makeatother
+\endinput
diff --git a/macros/latex/contrib/bib2qr/README.md b/macros/latex/contrib/bib2qr/README.md
new file mode 100644
index 0000000000..9f7bb900a1
--- /dev/null
+++ b/macros/latex/contrib/bib2qr/README.md
@@ -0,0 +1,88 @@
+# bib2qr
+
+[![License](https://img.shields.io/ctan/l/bib2qr?color=blue)](https://www.latex-project.org/lppl/lppl-1-3c.txt)
+[![Latest release](https://img.shields.io/gitea/v/release/Cs137/bib2qr?gitea_url=https%3A%2F%2Fcodeberg.org%2F)](https://codeberg.org/Cs137/bib2qr/releases/latest)
+[![CTAN](https://img.shields.io/ctan/v/bib2qr.svg)](https://ctan.org/pkg/bib2qr)
+
+A LaTeX package for citing BibTeX entries with QR codes.
+
+The `bib2qr` package provides functionality to cite BibTeX entries with QR codes
+for easy sharing and referencing. The target of the QR code is the entry's DOI,
+or URL if no DOI exists. A citation generated via `\qrfullcite`, which is part
+of `bib2qr`, might look as follows:
+
+[![Example output generated with `\qrfullcite`](https://codeberg.org/Cs137/bib2qr/media/branch/main/example/qrfullcite_example.png "Example output generated with qrfullcite")](https://codeberg.org/Cs137/bib2qr/media/branch/main/example/qrfullcite_example.png)
+
+
+## Installation
+
+Skip this section, if `bib2qr` is already provided in your TeX distribution.
+You should be able to install it [from the CTAN](https://www.ctan.org/pkg/bib2qr)
+via your distribution's utility (e.g. the TeX Live Utility).
+
+### Manual installation
+
+You can get the package's source code from the
+[project repository on Codeberg](https://codeberg.org/Cs137/bib2qr).
+The repository contains a build script, which allows you to build the required
+files for the `bib2qr` package and copy them into your _TeX Directory Structure_
+(TDS) using `l3build`. Ensure that `l3build` is installed on your system and run
+it from the repository's root directory as follows:
+
+```bash
+l3build install --full
+```
+
+The `--full` option ensures that all necessary files are built and installed.
+
+If you do not want to install the package into your TDS, but use it in a
+particular LaTeX project, follow the steps listed below.
+
+1. unpack `bib2qr.sty` from the `bib2qr.dtx` file
+ - using `l3build` and the `build.lua` script: `l3build unpack`, __or__
+ - directly via the installer file: `pdflatex bib2qr.ins`
+2. copy the extracted `bib2qr.sty` file into the same directory as your LaTeX sources.
+
+
+## Usage
+
+Please consult the [package documentation](http://mirrors.ctan.org/macros/latex/contrib/bib2qr/bib2qr.pdf)
+for detailed usage information.
+
+If you have any questions or need assistance, feel free to
+[open an issue on the repository](https://codeberg.org/Cs137/bib2qr/issues).
+
+
+## Changes
+
+All notable changes to this project are documented in the file
+[`CHANGELOG.md`](https://codeberg.org/Cs137/bib2qr/src/branch/main/CHANGELOG.md).
+
+
+## Contributing
+
+Contributions to the `bib2qr` package are very welcomed. Feel free to submit a
+pull request, if you would like to contribute to the project. In case you are
+unfamiliar with the process, consult the
+[forgejo documentation](https://forgejo.org/docs/latest/user/pull-requests-and-git-flow/)
+and follow the steps using this repository instead of the `example` repository.
+
+Create your [pull request (PR)](https://codeberg.org/Cs137/bib2qr/pulls) to
+inform that you start working on a contribution. Provide a clear description
+of your envisaged changes and the motivation behind them, prefix the PR's title
+with ``WIP: `` until your changes are finalised.
+
+All kind of contributions are appreciated, whether they are
+bug fixes, new features, or improvements to the documentation.
+
+
+### Contributors
+
+- [Christian Schreinemachers](https://codeberg.org/Cs137)
+- [Markus Kohm](https://codeberg.org/komascript)
+
+
+---
+
+This package was created and is maintained by Christian Schreinemachers, (C) 2024.
+
diff --git a/macros/latex/contrib/bib2qr/bib2qr.dtx b/macros/latex/contrib/bib2qr/bib2qr.dtx
new file mode 100644
index 0000000000..980c2002c2
--- /dev/null
+++ b/macros/latex/contrib/bib2qr/bib2qr.dtx
@@ -0,0 +1,594 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2024 Christian Schreinemachers
+%
+% This work may be distributed and/or modified under the conditions
+% of the LaTeX Project Public License, either version 1.3c of this
+% license or (at your option) any later version. The latest version
+% of this license is in
+%
+% http://www.latex-project.org/lppl.txt
+%
+% and version 1.3c or later is part of all distributions of LaTeX
+% version 2008-05-04 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+% The current maintainer of this work is Christian Schreinemachers.
+%
+% This work consists of the files
+% README.md
+% bib2qr.dtx
+% bib2qr.ins
+% and the derived files
+% bib2qr.sty
+% bib2qr.pdf
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \fi
+% \iffalse
+%<package>\NeedsTeXFormat{LaTeX2e}
+%<package>\ProvidesPackage{bib2qr}
+%<package> [2024-07-31 v0.2 Cite BibTeX entries with QR codes]
+%
+%<*driver>
+\documentclass[a4paper]{ltxdoc}
+\usepackage[T1]{fontenc}
+\usepackage[toc]{multitoc}
+\usepackage{geometry}
+\usepackage{fancyvrb}
+% Declare example reference entries
+\begin{filecontents}[overwrite]{example-references.bib}
+ @software{bib2qr,
+ author = {Schreinemachers, Christian},
+ title = {bib2qr - A LaTeX package for citing BibTeX entries with QR codes},
+ url = {https://codeberg.org/Cs137/bib2qr/releases/tag/v0.2},
+ version = {v0.2},
+ date = {2024-07-31}
+ }
+ @article{Doe2024,
+ author = {Doe, Jane},
+ title = {A comprehensive study on example generation},
+ journal = {Journal of Examples},
+ year = {2024},
+ volume = {42},
+ pages = {1982--2024},
+ doi = {10.1234/example.2024.001}
+ }
+ @article{Mustermann2023,
+ author = {Mustermann, Erika},
+ title = {Limitations in including electronic references in articles},
+ journal = {Journal of Examples},
+ year = {2023},
+ volume = {23},
+ pages = {624--666}
+ }
+\end{filecontents}
+\usepackage[style=authoryear,sorting=none]{biblatex}
+\addbibresource{example-references.bib}
+\usepackage[%
+ pdfusetitle,%
+ hyperindex=false,%
+ pdfsubject={LaTeX package documentation},%
+ pdfkeywords={bib2qr, biblatex, latex, qrcode, documentation}%
+]{hyperref}
+\usepackage{scrextend}
+\usepackage{cleveref}
+\usepackage[qrwidth=1.25cm]{bib2qr}
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\DoNotIndex{\begin,\DeclareBibliographyDriver,\DeclareCiteCommand,\DeclareFieldFormat,
+ \DeclareKeys,\dimexpr,\edef,\end,\equal,\fullcite,\hspace,\IfBeginWith,
+ \ifboolexpr,\iffieldundef,\ifthenelse,\linewidth,\multicitedelim,
+ \NewDocumentCommand,\newcommand,\noindent,\par,\parindent,\printfield,
+ \ProcessKeyOptions,\qrcode,\RequirePackage,\relax,\SetKeys,\space,
+ \thefield,\usebibmacro,\usedriver}
+\setcounter{IndexColumns}{2}
+\setlength{\IndexMin}{40ex}
+\setlength{\columnseprule}{.4pt}
+\addtolength{\oddsidemargin}{2cm}
+\addtolength{\textwidth}{-2cm}
+\begin{document}
+ \DocInput{bib2qr.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \pagestyle{headings}
+%
+% \newcommand*{\package}[1]{\textsf{#1}}
+% \newcommand*{\ctanpkg}[1]{\href{https://ctan.org/pkg/#1}{\package{#1}}}
+% \newcommand*{\opt}[1]{\texttt{#1}}
+% \newcommand*{\default}[1]{(default: \opt{#1})}
+%
+%
+% ^^A -----------------------------
+%
+% \changes{v0.2}{2024-07-31}{%
+% Initial release,
+% convert into dtx,
+% add documentation,
+% rename internal macros,
+% add \opt{qrdelimiter} option
+% }
+% \changes{v0.1}{2024/06/16}{Initial version}
+%
+% \GetFileInfo{bib2qr.sty}
+%
+%
+% ^^A -----------------------------
+%
+% \title{The \package{bib2qr} package}
+% \author{Christian Schreinemachers}
+% \date{%
+% Released \filedate\thanks{%
+% \package{bib2qr}~\fileversion
+% ~(\href{https://codeberg.org/Cs137/bib2qr/releases/tag/\fileversion}{source code})}%
+% }
+% \maketitle
+%
+%
+% ^^A -----------------------------
+%
+% \begingroup
+% \hypersetup{
+% linkcolor=.,
+% citecolor=.,
+% urlcolor=.,
+% }
+% \begin{abstract}
+% The \package{bib2qr} package provides functionality to cite BibTeX entries
+% with QR codes for easy sharing and referencing. The target of the QR code
+% is the entry's digital object identifier (DOI), or URL if no DOI exists.
+% It is realised in the \cs{qrcite} macro, via the \LaTeX{} packages
+% \package{biblatex} and \package{qrcode}. In addition to the \cs{qrcite}
+% command, the package contains the \cs{qrfullcite} macro, which requires
+% only a BibTeX key as argument and allows to generate output that might
+% look as follows:\\
+% \textcolor{red}{\qrfullcite[noindent]{bib2qr}}
+% \end{abstract}
+% \endgroup
+%
+%
+% ^^A -----------------------------
+%
+% \tableofcontents
+%
+%
+% ^^A -----------------------------
+%
+% \section{Introduction}
+% ^^A
+% I like to include \href{https://en.wikipedia.org/wiki/QR_code}{quick-response (QR) codes}
+% of references on slides created with \LaTeX{} \ctanpkg{beamer}. Previously,
+% I did this by using the \ctanpkg{qrcode} package and manually declaring the
+% URL of the reference's digital object identifier (DOI). Occasionally, I also
+% add human-readable information generated via \cs{fullcite} from the
+% \ctanpkg{biblatex} package.
+%
+% To avoid manually declaring the URL and calling two separate commands for QR
+% codes and human-readable citations, I developed this \LaTeX{} package. It
+% automates the inclusion of QR codes by a \package{biblatex} bibliography
+% driver\footnote{%
+% \href{http://mirrors.ctan.org/macros/latex/contrib/biblatex/doc/biblatex.pdf\#page=166}
+% {\package{biblatex} documentation p.\,166 (v3.20)}%
+% },
+% which uses field formats to display QR codes for the entry's \opt{doi}
+% and \opt{url} fields with the \package{qrcode} package. You can cite any
+% reference from your bibliography with this driver by declaring its \meta{key}
+% to the \cs{qrcite} command. The latter is a cite command\footnote{%
+% \href{http://mirrors.ctan.org/macros/latex/contrib/biblatex/doc/biblatex.pdf\#page=186}%
+% {\package{biblatex} documentation p.\,186 (v3.20)}%
+% \label{biblatexCiteCommand}%
+% },
+% which ensures that any referenced QR code is also listed in the reference list.
+%
+% For the inclusion of both, QR codes and human-readable citation information
+% in a single step, I introduced the \cs{qrfullcite} command. It applies the
+% \cs{qrcite} command and the \cs{fullcite} command from the \package{biblatex}
+% package, ensuring clarity and ease of reference not only on \package{beamer}
+% slides, but in any \LaTeX{} document.
+%
+%
+% ^^A -----------------------------
+%
+% \section{Usage}
+% ^^A
+% Load the package in your document's preamble and specify any of the
+% options described in the next subsection as follows:
+%
+% \begin{quote}
+% \cs{usepackage}\oarg{option(s)}\{bib2qr\}
+% \end{quote}
+%
+%
+% ^^A -----------------------------
+%
+% \subsection{Options}
+% ^^A
+% In order to change the default behaviour of this package, declare one
+% or more of the options described in this subsection with your desired
+% value.
+%
+% \begin{description}
+%
+% \item[\opt{doiurlbase=\meta{string}}] \default{https://doi.org/}
+% specifies the prefix to convert a DOI string into its URL. If the DOI
+% string starts with \meta{doiurlbase}, it is used as is to generate a
+% QR code. Otherwise, the DOI string is appended to \meta{doiurlbase} to
+% form the DOI's URL, which is then used to generate the QR code.
+% In normal use cases this option does not require any adjustment.
+%
+% \item[\opt{qrdelimiter=\meta{sepcode}}] \default{\cs{space}}
+% specifies the delimiter of QR codes generated by \cs{qrcite} in multicite
+% mode. It is shown between the individual QR codes of multiple references
+% created by \cs{qrcite}\marg{key1,key2,\dots keyN} and \emph{``\dots is
+% arbitrary code to be executed after each iteration...''}\,\footref{biblatexCiteCommand}.
+% The examples shown in this document were generated considering the
+% default \opt{qrdelimiter}.
+%
+% \item[\opt{qrversion=\meta{version specification}}] \default{0}
+% sets the version of the QR code. Consult the \package{qrcode} documentation
+% for details about the \meta{version specification}\footnote{%
+% \href{http://mirrors.ctan.org/macros/latex/contrib/qrcode/qrcode.pdf\#page=3}
+% {\package{qrcode} documentation p.\,3 (v1.51)}%
+% }.
+% The examples shown in this document were generated considering the
+% default \opt{qrversion}.
+%
+% \item[\opt{qrwidth=\meta{dimen}}] \default{2cm}
+% sets the width of the QR code. The value is used to determine the
+% width for the output of the \cs{fullcite} macro and is passed to
+% \package{qrcode} as \opt{height} option. The default value is quite
+% suitable for usage in \LaTeX{} \package{beamer} slides, but in such
+% documents as this one, a smaller width might be desired. The examples
+% shown in this document were generated using \opt{qrwidth=1.25cm}.
+%
+% \end{description}
+%
+%
+% ^^A -----------------------------
+%
+% \subsection{Macros}
+% ^^A
+% \subsubsection*{\cs{qrcite}\marg{key(s)}}
+%
+% \DescribeMacro{\qrcite}
+% QR code(s) with a link to the reference's DOI or URL can be generated
+% using the \cs{qrcite} command. The target of the QR code is the entry's
+% DOI converted into a URL, or the URL iteself. In case the BibTeX entry has
+% no DOI and no URL, it does nothing besides raising a warning.
+% ^^A
+% The output for some example entries is shown underneath. If you
+% would like to replicate the examples, you can find the entries
+% sources as \cref{ssec:example_bib}. The colours are defined in the
+% examples, as this functionality is out of scope of the package
+% \package{bib2qr}. Moreover, \package{hyperlink} is configured in such
+% a way that the links in the following examples consider the font colour,
+% usually links would be presented in the colour defined as \opt{linkcolor}.
+%
+% The example displayed in blue was created via \textcolor{blue}{%
+% \cs{qrcite\{bib2qr\}}}. The QR code in red next to it was generated
+% via \textcolor{red}{\cs{qrcite\{Doe2024\}}}. The entry of the latter has a
+% DOI, while the entry of the blue example represents a BibTeX entry without
+% a DOI, but there is a value assigned to its URL field.
+% ^^A
+% The macro \cs{qrcite} is a cite command, thus it can be used to cite multiple
+% references, as shown in black (\cs{qrcite\{bib2qr,Doe2024\}}), and entries
+% cited via \cs{qrcite} are included in the document's bibliography
+% (cf. \cref{ssec:example_ref}).
+%
+% \begingroup
+% \hypersetup{
+% linkcolor=.,
+% citecolor=.,
+% urlcolor=.,
+% }
+%
+% \par\smallskip%
+% \noindent%
+% \textcolor{blue}{\qrcite{bib2qr}}
+% \textcolor{red}{\qrcite{Doe2024}}
+% \qrcite{bib2qr,Doe2024}
+% \par\medskip%
+%
+% \subsubsection*{\cs{qrfullcite}\marg{key}}
+%
+% \DescribeMacro{\qrfullcite}
+% This command displays the QR code of a BibTeX entry's DOI link or URL and
+% a full citation. The QR code is generated by \cs{qrcite} and the full
+% citation by \cs{fullcite}, provided by the package \package{biblatex}.
+% Each output is presented in individual minipages which are placed next to
+% each other, as shown in the examples underneath
+% (\textcolor{blue}{\cs{qrfullcite\{bib2qr\}}},
+% \textcolor{red}{\cs{qrfullcite[noindent]\{Doe2024\}}}).
+%
+% Please note that \cs{qrfullcite} does \textbf{not} support group
+% citations and accepts only a single \meta{key} as argument.
+%
+% \textcolor{blue}{\qrfullcite{bib2qr}}%
+% \medskip%
+% \textcolor{red}{\qrfullcite[noindent]{Doe2024}}%
+% \medskip%
+% \endgroup
+%
+% The output of \cs{qrfullcite} is considered as its own paragraph, thus it
+% may be indented, like in this document (see blue example). You can prevent
+% the latter by providing the \opt{noindent} option when calling the macro,
+% as done in the red example.
+%
+% The first minipage has the width of the package option \opt{qrwidth}
+% and displays the output of \cs{qrcite}\marg{key}. The second minipage
+% occupies the remaining width of \cs{linewidth} considering a gap of
+% \opt{0.5em} and \cs{parindent}, if the latter is not deactivated via the
+% \opt{noindent} option. It shows the output of \cs{fullcite}\marg{key}.
+%
+%
+% ^^A -----------------------------
+%
+% \subsection{Hints}
+% ^^A
+% If the \package{hyperref} package is loaded, not only the DOI/URL strings,
+% but also the QR codes are presented as links. It was modified in this
+% document to allow you to distinguish the output of the individual macro calls
+% in a better way. The previous example without any modifications of the
+% document settings and without deactivating the indentation looks as follows:\\
+%
+% \qrfullcite{Doe2024}%
+%
+%
+% ^^A -----------------------------
+%
+% \subsection{Known limitations}
+% ^^A
+% In case no QR code can be generated by \cs{qrcite} called via \cs{qrfullcite},
+% the output of \cs{fullcite} is nevertheless indented by the width assigned to
+% the \opt{qrwidth} package option and the length of the gap of \opt{0.5em}),
+% as shown in orange below (\textcolor{orange}{\cs{qrcite\{Mustermann2023\}}}).
+%
+% \textcolor{orange}{\qrfullcite{Mustermann2023}}%
+%
+%
+% ^^A -----------------------------
+%
+% \MaybeStop{
+%
+% \IndexPrologue{%
+% \section{Index}
+% Numbers written in italic refer to the page where the corresponding entry
+% is described; numbers underlined refer to the code line of the definition;
+% numbers in roman refer to the code lines where the entry is used.
+% }
+% \PrintIndex
+%
+% \GlossaryPrologue{%
+% \section{Change History}
+% The changes listed in this section aim to provide a brief overview of the
+% changes introduced into the package \package{bib2qr}. The
+% \href{https://codeberg.org/Cs137/bib2qr/}{package repository on Codeberg}
+% contains a
+% \href{https://codeberg.org/Cs137/bib2qr/src/branch/main/CHANGELOG.md}{changelog file},
+% consult it to read a detailed description of the changes introduced into
+% this package.
+% }
+% \PrintChanges
+%
+% ^^A -----------------------------
+%
+% \newpage
+% \appendix
+%
+% \section{Appendix}
+%
+% The examples presented in this document are based on the
+% BibTeX entries listed in \ref{ssec:example_bib} and result
+% in the bibliography shown as \ref{ssec:example_ref} (\package{biblatex}
+% options: \opt{style=authoryear}, \opt{sorting=none}).
+%
+% \subsection{Example BibTeX entries}
+% \label{ssec:example_bib}
+% \small{%
+% \VerbatimInput[firstline=5]{example-references.bib}
+% }
+%
+% \subsection{Example bibliography}
+% \label{ssec:example_ref}
+% \printbibliography[heading=none]
+%
+% }
+%
+%
+% ^^A -----------------------------
+%
+% \section{Implementation}
+% ^^A
+%
+% \subsection{Dependencies}
+% ^^A
+% In order to use \package{bib2qr}, the \LaTeX{} packages
+% \ctanpkg{biblatex},
+% \ctanpkg{ifthen},
+% \ctanpkg{qrcode}, and
+% \ctanpkg{xstring}
+% are required as package dependencies.
+% \iffalse
+%<*package>
+% \fi
+% \begin{macrocode}
+\RequirePackage{biblatex}
+\RequirePackage{ifthen}
+\RequirePackage{qrcode}
+\RequirePackage{xstring}
+% \end{macrocode}
+%
+%
+% \subsection{Options}
+% ^^A
+% The package options are internally available as \cs{@bibiiqr@}\meta{option}.
+% \begin{macrocode}
+\DeclareKeys[@bibiiqr]{
+ doiurlbase.store = \@bibiiqr@doiurlbase,
+ doiurlbase.usage = load,
+ qrdelimiter.store = \@bibiiqr@qrdelimiter,
+ qrdelimiter.usage = load,
+ qrversion.store = \@bibiiqr@qrversion,
+ qrversion.usage = load,
+ qrwidth.store = \@bibiiqr@qrwidth,
+ qrwidth.usage = load,
+}%
+% \end{macrocode}
+%
+% \subsubsection*{Assignement of default values}
+% \begin{macrocode}
+\SetKeys[@bibiiqr]{
+ doiurlbase=https://doi.org/,
+ qrdelimiter=\space,
+ qrversion=0,
+ qrwidth=2cm,
+}%
+% \end{macrocode}
+%
+% \subsubsection*{Processing of package options}
+% \begin{macrocode}
+\ProcessKeyOptions[@bibiiqr]\relax
+% \end{macrocode}
+%
+% \subsection{Macros}
+%
+% \begin{macro}{\@bibiiqr@showqr}
+% \marg{string}\\
+% Display a string as QR code considering the package options \opt{qrversion}
+% and \opt{qrwidth}.
+% \begin{macrocode}
+\newcommand\@bibiiqr@showqr[1]{%
+ \qrcode[height=\@bibiiqr@qrwidth,version=\@bibiiqr@qrversion]{#1}%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsubsection{Field formats}
+%
+% Custom field formats are defined to display a QR code of an entry's
+% \texttt{doi} and \texttt{url}.
+%
+% \begin{macro}{@bibiiqr@fldFmtDoi}
+% Field format to display a DOI field's value (converted into an URL
+% considering the option \opt{@bibiiqr@doiurlbase}) as QR code using
+% macro \cs{@bibiiqr@showqr}.
+% \begin{macrocode}
+\DeclareFieldFormat{@bibiiqr@fldFmtDoi}{%
+ \IfBeginWith{#1}{\@bibiiqr@doiurlbase}%
+ {\@bibiiqr@showqr{#1}}%
+ {\@bibiiqr@showqr{\@bibiiqr@doiurlbase#1}}%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{@bibiiqr@fldFmtUrl}
+% Field format to display an URL field's value as QR code using \cs{@bibiiqr@showqr}.
+% \begin{macrocode}
+\DeclareFieldFormat{@bibiiqr@fldFmtUrl}{\@bibiiqr@showqr{#1}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsubsection{Bibliography driver}
+%
+% \begin{macro}{@bibiiqr@bibDrvQR}
+% This bibliography driver
+% allows to display the QR code of an entry's DOI-, or URL field.
+% It applies the \cs{printfield}\oarg{format}\marg{field} macro, which is
+% provided by the \package{biblatex} package to displpay a QR code using the
+% \texttt{@bibiiqr@fldFmtDoi} or \texttt{@bibiiqr@fldFmtUrl} field format and
+% the corresponding field, respectively.
+%
+% The DOI is preferred and the URL is only used if no value is assigned to
+% the DOI field. If neither the DOI, nor the URL field contains a value, a
+% package warning is raised.
+%
+% \begin{macrocode}
+\DeclareBibliographyDriver{@bibiiqr@bibDrvQR}{%
+ \usebibmacro{begentry}%
+ \ifboolexpr{test{\iffieldundef{doi}}}
+ {%
+ \ifboolexpr{test{\iffieldundef{url}}}%
+% \end{macrocode}
+% The entry has no DOI and no URL: Raise a warning.
+% \begin{macrocode}
+ {%
+ \PackageWarning{bib2qr}%
+ {BibTeX entry without DOI or URL: \thefield{entrykey}}{}%
+ }%
+% \end{macrocode}
+% The entry has no DOI but an URL: Display the \texttt{url} field's
+% value using the \texttt{@bibiiqr@fldFmtUrl} field format.
+% \begin{macrocode}
+ {\printfield[@bibiiqr@fldFmtUrl]{url}}%
+ }%
+% \end{macrocode}
+% The entry has a DOI: Display the \texttt{doi} field's value using
+% the \texttt{@bibiiqr@fldFmtDoi} field format.
+% \begin{macrocode}
+ {\printfield[@bibiiqr@fldFmtDoi]{doi}}%
+ \usebibmacro{finentry}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Author commands}
+%
+% \begin{macro}{\qrcite}
+% \marg{key(s)}\\
+% Display the QR code of a BibTeX entry's DOI link or URL by introducing the
+% cite command \cs{qrcite}\marg{key}, which makes use of the previously
+% defined bibliography driver \texttt{@bibiiqr@bibDrvQR}. It requires at least
+% one BibTeX \marg{key} as argument.
+% \begin{macrocode}
+\DeclareCiteCommand{\qrcite}
+ {\usebibmacro{prenote}}%
+ {\usedriver{}{@bibiiqr@bibDrvQR}}%
+ {\@bibiiqr@qrdelimiter}%
+ {\usebibmacro{postnote}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\qrfullcite}
+% \changes{v0.2}{2024-07-31}{Add \opt{noindent} option}
+% \oarg{option(s)}\marg{key}\\
+% Display the QR code of a singe BibTeX entry's DOI link or URL and a full
+% citation of it. Specify \opt{noindent} as option, if the output should not
+% be indented.
+% \begin{macrocode}
+\NewDocumentCommand{\qrfullcite}{O{}m}{%
+ \par%
+ \ifthenelse{\equal{#1}{noindent}}{%
+ \noindent%
+ \edef\@bibiiqr@mpiiwidth{\dimexpr\linewidth-\@bibiiqr@qrwidth-0.5em}%
+ }{%
+ \edef\@bibiiqr@mpiiwidth{%
+ \dimexpr\linewidth-\parindent-\@bibiiqr@qrwidth-0.5em}%
+ }%
+ \begin{minipage}[t]{\@bibiiqr@qrwidth}
+ \qrcite{#2}%
+ \end{minipage}
+ \hspace{0.5em}%
+ \begin{minipage}{\@bibiiqr@mpiiwidth}
+ \fullcite{#2}%
+ \end{minipage}
+ \par%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% \iffalse
+%</package>
+% \fi
+%
+%
+% ^^A -----------------------------
+%
+% \Finale
+
diff --git a/macros/latex/contrib/bib2qr/bib2qr.ins b/macros/latex/contrib/bib2qr/bib2qr.ins
new file mode 100644
index 0000000000..7894fdb8e3
--- /dev/null
+++ b/macros/latex/contrib/bib2qr/bib2qr.ins
@@ -0,0 +1,85 @@
+%%
+%% Copyright (C) 2024 Christian Schreinemachers
+%%
+%% This work may be distributed and/or modified under the conditions
+%% of the LaTeX Project Public License, either version 1.3c of this
+%% license or (at your option) any later version. The latest version
+%% of this license is in
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3c or later is part of all distributions of
+%% LaTeX version 2008-05-04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The current maintainer of this work is Christian Schreinemachers.
+%%
+%% This work consists of the files
+%% README.md
+%% bib2qr.dtx
+%% bib2qr.ins
+%% and the derived files
+%% bib2qr.sty
+%% bib2qr.pdf
+%%
+This work has the LPPL maintenance status `maintained'.
+
+The current maintainer of this work is Christian Schreinemachers.
+
+This work consists of the files
+ README.md
+ bib2qr.dtx
+ bib2qr.ins
+and the derived files
+ bib2qr.sty
+ bib2qr.pdf
+\input docstrip.tex
+\keepsilent
+
+\preamble
+
+Copyright (C) 2024 Christian Schreinemachers
+
+This work may be distributed and/or modified under the conditions
+of the LaTeX Project Public License, either version 1.3c of this
+license or (at your option) any later version. The latest version
+of this license is in
+
+ http://www.latex-project.org/lppl.txt
+
+and version 1.3c or later is part of all distributions of LaTeX
+version 2008-05-04 or later.
+
+This work has the LPPL maintenance status `maintained'.
+
+The current maintainer of this work is
+ Christian Schreinemachers.
+
+This work consists of the files
+ bib2qr.dtx
+ bib2qr.ins
+and the derived files
+ bib2qr.sty
+ bib2qr.pdf
+
+\endpreamble
+\askforoverwritefalse
+\generate{\file{bib2qr.sty}{\from{bib2qr.dtx}{package}}}
+
+\obeyspaces
+\Msg{****************************************************}
+\Msg{* To finish the installation you have to move the *}
+\Msg{* following file into a directory searched by TeX: *}
+\Msg{* *}
+\Msg{* bib2qr.sty *}
+\Msg{* *}
+\Msg{* To produce the documentation run the file *}
+\Msg{* bib2qr.dtx through LaTeX. *}
+\Msg{* *}
+\Msg{* Happy TeXing! *}
+\Msg{****************************************************}
+\endbatchfile
+%%
+%% End of file `bib2qr.ins'.
+
diff --git a/macros/latex/contrib/bib2qr/bib2qr.pdf b/macros/latex/contrib/bib2qr/bib2qr.pdf
new file mode 100644
index 0000000000..fb3800eadf
--- /dev/null
+++ b/macros/latex/contrib/bib2qr/bib2qr.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ieee/biblatex-ieee-alphabetic.pdf b/macros/latex/contrib/biblatex-contrib/biblatex-ieee/biblatex-ieee-alphabetic.pdf
index a833b32d26..43c1b53163 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ieee/biblatex-ieee-alphabetic.pdf
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ieee/biblatex-ieee-alphabetic.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ieee/biblatex-ieee-alphabetic.tex b/macros/latex/contrib/biblatex-contrib/biblatex-ieee/biblatex-ieee-alphabetic.tex
index 142cfe3d76..a089f090f7 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ieee/biblatex-ieee-alphabetic.tex
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ieee/biblatex-ieee-alphabetic.tex
@@ -2,7 +2,7 @@
%% biblatex-ieee --- A biblatex implementation of the IEEE
%% bibliography style
%% Maintained by Joseph Wright
-%% E-mail: joseph.wright@morningstar2.co.uk
+%% E-mail: joseph@texdev.net
%% Released under the LaTeX Project Public License v1.3c or later
%% See http://www.latex-project.org/lppl.txt
%% ---------------------------------------------------------------
@@ -21,11 +21,11 @@
\addbibresource{biblatex-ieee.bib}
\author{Joseph Wright\thanks{E-mail:
- \href{mailto:joseph.wright@morningstar2.co.uk}
- {\texttt{joseph.wright@morningstar2.co.uk}}}}
+ \href{mailto:joseph@texdev.net}
+ {\texttt{joseph@texdev.net}}}}
\title{The \pkg{ieee-alphabetic} bibliography style for \pkg{biblatex}%
- \footnote{This file describes v1.3f, last revised 2021/12/06.}}
-\date{Released 2021/12/06}
+ \footnote{This file describes v1.3g, last revised 2024/08/14.}}
+\date{Released 2024/08/14}
\providecommand*{\pkg}[1]{\textsf{#1}}
@@ -55,8 +55,8 @@ of example citations.
\end{document}
%%
-%% Copyright (C) 2011-2013,2015-2021 by
-%% Joseph Wright <joseph.wright@morningstar2.co.uk>
+%% Copyright (C) 2011-2013,2015-2021,2024 by
+%% Joseph Wright <joseph@texdev.net>
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ieee/biblatex-ieee.bib b/macros/latex/contrib/biblatex-contrib/biblatex-ieee/biblatex-ieee.bib
index 733dac91e1..c002a48e2c 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ieee/biblatex-ieee.bib
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ieee/biblatex-ieee.bib
@@ -2,7 +2,7 @@
%% biblatex-ieee --- A biblatex implementation of the IEEE
%% bibliography style
%% Maintained by Joseph Wright
-%% E-mail: joseph.wright at morningstar2.co.uk
+%% E-mail: joseph@texdev.net
%% Released under the LaTeX Project Public License v1.3c or later
%% See http://www.latex-project.org/lppl.txt
%% ---------------------------------------------------------------
@@ -168,7 +168,7 @@
title = "Modified {TCP} Congestion Avoidance Algorithm",
howpublished = "end2end-interest mailing list",
url = "ftp://ftp.isi.edu/end2end/end2end-interest-1990.mail",
- year = "1990-04"
+ urldate = "1990-04"
}
@@ -249,7 +249,7 @@
institution = "Dept. Elect. Eng., Technion",
location = "Haifa, Israel",
url = "ftp://ftp.technion.ac.il/pub/supported/ee/Network/lor.mopq98.ps",
- year = "1998-07"
+ urldate = "1998-07"
}
@book{IEEEexample:book,
@@ -350,7 +350,7 @@
title = "Cache Array Routing Protocol v1.1",
howpublished = "Internet draft",
url = "http://ds1.internic.net/internet-drafts/draft-vinod-carp-v1-03.txt",
- year = "1998"
+ urldate = "1998"
}
@inproceedings{IEEEexample:confwithpaper,
@@ -386,8 +386,8 @@
}
%%
-%% Copyright (C) 2011-2013,2015-2020 by
-%% Joseph Wright <joseph.wright at morningstar2.co.uk>
+%% Copyright (C) 2011-2013,2015-2020,2024 by
+%% Joseph Wright <joseph@texev.net>
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ieee/biblatex-ieee.pdf b/macros/latex/contrib/biblatex-contrib/biblatex-ieee/biblatex-ieee.pdf
index c5f85504c6..a16e292683 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ieee/biblatex-ieee.pdf
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ieee/biblatex-ieee.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ieee/biblatex-ieee.tex b/macros/latex/contrib/biblatex-contrib/biblatex-ieee/biblatex-ieee.tex
index 734250debf..0a6ec934e4 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ieee/biblatex-ieee.tex
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ieee/biblatex-ieee.tex
@@ -2,7 +2,7 @@
%% biblatex-ieee --- A biblatex implementation of the IEEE
%% bibliography style
%% Maintained by Joseph Wright
-%% E-mail: joseph.wright@morningstar2.co.uk
+%% E-mail: joseph@texdev.net
%% Released under the LaTeX Project Public License v1.3c or later
%% See http://www.latex-project.org/lppl.txt
%% ---------------------------------------------------------------
@@ -21,11 +21,11 @@
\addbibresource{biblatex-ieee.bib}
\author{Joseph Wright\thanks{E-mail:
- \href{mailto:joseph.wright@morningstar2.co.uk}
- {\texttt{joseph.wright@morningstar2.co.uk}}}}
+ \href{mailto:joseph@texdev.net}
+ {\texttt{joseph@texdev.net}}}}
\title{The \pkg{ieee} bibliography style for \pkg{biblatex}%
- \footnote{This file describes v1.3f, last revised 2021/12/06.}}
-\date{Released 2021/12/06}
+ \footnote{This file describes v1.3g, last revised 2024/08/14.}}
+\date{Released 2024/08/14}
\providecommand*{\opt}[1]{\texttt{#1}}
\providecommand*{\pkg}[1]{\textsf{#1}}
@@ -61,6 +61,19 @@ The style adds the \opt{dashed} option to those recognised: as-standard,
this is activated. The option works in the same way as that from the
core \pkg{biblatex} style \pkg{author-year}.
+As-standard, citations are compressed. If you do no wish to have compressed
+citations, add
+\begin{verbatim}
+\DeclareCiteCommand{\cite}
+ {\bibopenbracket\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{postnote}\bibclosebracket}
+\renewcommand*\multicitedelim{\bibclosebracket\addcomma \space\bibopenbracket}
+\end{verbatim}
+after loading \pkg{biblatex}.
+
The appearance of URLs in the bibliography is set by the mechanism of the
\textsf{url} package. Thus to print URLs in the current roman font,
place the instruction
@@ -73,7 +86,9 @@ immediately before
\end{verbatim}
Control of the exact information in dates is best achieved by using the
-\cs{AtEveryCite} command with appropriate data manipulation.
+\cs{AtEveryCite} command with appropriate data manipulation. In particular,
+if your database includes full dates, you will likely want to drop these
+for most periodicals using \cs{clearfield}
Also include in the bundle is a style using alphabetic labels, but otherwise
following the guidelines of the \textsc{ieee}. This style should be loaded
@@ -88,8 +103,8 @@ Suggestions for improvement and bug reports can be logged in the package
issue database, found at
\url{https://github.com/josephwright/biblatex-ieee/issues/}, or can
be sent by e-mail to
-\href{mailto:joseph.wright@morningstar2.co.uk}
- {\texttt{joseph.wright@morningstar2.co.uk}}.
+\href{mailto:joseph@texdev.net}
+ {\texttt{joseph@texdev.net}}.
\nocite{*}
\printbibliography
@@ -149,14 +164,16 @@ be sent by e-mail to
\changes{v1.3f}{2021/03/30}{Use \texttt{false} as the default for \texttt{dashed} setting}
\changes{v1.3f}{2021/04/12}{Fix brackets in \cs{supercite}}
\changes{v1.3f}{2021/12/01}{Adjust printing of series for books}
+\changes{v1.3g}{2024/08/14}{Print separator between journal title and subtitle}
+\changes{v1.3g}{2024/08/14}{Correct formatting of URL for online entries}
\PrintChanges
\end{document}
%%
-%% Copyright (C) 2011-2013,2015-2021 by
-%% Joseph Wright <joseph.wright@morningstar2.co.uk>
+%% Copyright (C) 2011-2013,2015-2021,2024 by
+%% Joseph Wright <joseph@texdev.net>
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ieee/ieee-alphabetic.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ieee/ieee-alphabetic.bbx
index ff82f97f55..8f4e1bea05 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ieee/ieee-alphabetic.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ieee/ieee-alphabetic.bbx
@@ -2,13 +2,13 @@
%% biblatex-ieee --- A biblatex implementation of the IEEE
%% bibliography style
%% Maintained by Joseph Wright
-%% E-mail: joseph.wright@morningstar2.co.uk
+%% E-mail: joseph@texdev.net
%% Released under the LaTeX Project Public License v1.3c or later
%% See http://www.latex-project.org/lppl.txt
%% ---------------------------------------------------------------
%%
-\ProvidesFile{ieee-alphabetic.bbx}[2021/12/06 v1.3f biblatex bibliography style]
+\ProvidesFile{ieee-alphabetic.bbx}[2024/08/14 v1.3g biblatex bibliography style]
\RequireBibliographyStyle{ieee}
@@ -53,8 +53,8 @@
{\item}
%%
-%% Copyright (C) 2011-2013,2015-2021 by
-%% Joseph Wright <joseph.wright@morningstar2.co.uk>
+%% Copyright (C) 2011-2013,2015-2021,2024 by
+%% Joseph Wright <joseph@texdev.net>
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ieee/ieee-alphabetic.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ieee/ieee-alphabetic.cbx
index 302517b02e..d28449741b 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ieee/ieee-alphabetic.cbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ieee/ieee-alphabetic.cbx
@@ -2,13 +2,13 @@
%% biblatex-ieee --- A biblatex implementation of the IEEE
%% bibliography style
%% Maintained by Joseph Wright
-%% E-mail: joseph.wright@morningstar2.co.uk
+%% E-mail: joseph@texdev.net
%% Released under the LaTeX Project Public License v1.3c or later
%% See http://www.latex-project.org/lppl.txt
%% ---------------------------------------------------------------
%%
-\ProvidesFile{ieee-alphabetic.cbx}[2021/12/06 v1.3f biblatex citation style]
+\ProvidesFile{ieee-alphabetic.cbx}[2024/08/14 v1.3g biblatex citation style]
\RequireCitationStyle{alphabetic}
@@ -45,8 +45,8 @@
}
%%
-%% Copyright (C) 2011-2013,2015-2021 by
-%% Joseph Wright <joseph.wright@morningstar2.co.uk>
+%% Copyright (C) 2011-2013,2015-2021,2024 by
+%% Joseph Wright <joseph@texdev.net>
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ieee/ieee.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ieee/ieee.bbx
index 77a8b6794d..088064d1f3 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ieee/ieee.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ieee/ieee.bbx
@@ -2,13 +2,13 @@
%% biblatex-ieee --- A biblatex implementation of the IEEE
%% bibliography style
%% Maintained by Joseph Wright
-%% E-mail: joseph.wright@morningstar2.co.uk
+%% E-mail: joseph@texdev.net
%% Released under the LaTeX Project Public License v1.3c or later
%% See http://www.latex-project.org/lppl.txt
%% ---------------------------------------------------------------
%%
-\ProvidesFile{ieee.bbx}[2021/12/06 v1.3f biblatex bibliography style]
+\ProvidesFile{ieee.bbx}[2024/08/14 v1.3g biblatex bibliography style]
% Load the standard style to avoid copy-pasting unnecessary material
\RequireBibliographyStyle{numeric-comp}
@@ -30,6 +30,7 @@
maxbibnames = 6,
sorting = none,
dashed = false,
+ urldate = long,
}
\uspunctuation
@@ -50,6 +51,7 @@
{\bibstring{jourser}\addnbspace#1}
\DeclareFieldFormat[online,report]{title}{\mkbibquote{#1\isdot}}
\DeclareFieldFormat{url}{\bibstring{url}\addcolon\space\url{#1}}
+\DeclareFieldFormat{urldate}{\bibstring{urlseen}\space#1}
\DeclareFieldFormat*{volume}
{\bibstring{volume}\addnbspace#1}
\DeclareFieldFormat[article,periodical]{volume}
@@ -76,6 +78,7 @@
presentedat = presented at the\addspace ,
techreport = Tech\adddot\addspace Rep\adddot ,
url = [Online]\adddot\addspace Available ,
+ urlseen = Accessed\addcolon
}
\DefineBibliographyStrings{english}{
@@ -210,6 +213,7 @@
{%
\printtext[journaltitle]{%
\printfield[titlecase]{journaltitle}%
+ \setunit{\subtitlepunct}%
\printfield[titlecase]{journalsubtitle}%
}%
}%
@@ -331,6 +335,17 @@
\printfield{titleaddon}%
}
+\renewbibmacro*{url+urldate}{%
+ \usebibmacro{urldate}%
+ \setunit{\adddot\space}%
+ \usebibmacro{url}%
+}
+
+\renewbibmacro*{urldate}{%
+ \printurldate
+ \newunit
+ }
+
\renewbibmacro*{volume+number+eid}{%
\printfield{volume}%
\newunit
@@ -713,7 +728,6 @@
{\usebibmacro{eprint}}
{}%
\setunit{\adddot\addspace}%
- \printtext[parens]{\usebibmacro{date}}%
\newunit\newblock
\usebibmacro{url+urldate}%
\setunit{\adddot\addspace}%
@@ -802,8 +816,8 @@
\usebibmacro{finentry}}
%%
-%% Copyright (C) 2011-2013,2015-2021 by
-%% Joseph Wright <joseph.wright@morningstar2.co.uk>
+%% Copyright (C) 2011-2013,2015-2021,2024 by
+%% Joseph Wright <joseph@texdev.net>
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ieee/ieee.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ieee/ieee.cbx
index 877d645053..4b1886683f 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ieee/ieee.cbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ieee/ieee.cbx
@@ -2,19 +2,19 @@
%% biblatex-ieee --- A biblatex implementation of the IEEE
%% bibliography style
%% Maintained by Joseph Wright
-%% E-mail: joseph.wright@morningstar2.co.uk
+%% E-mail: joseph@texdev.net
%% Released under the LaTeX Project Public License v1.3c or later
%% See http://www.latex-project.org/lppl.txt
%% ---------------------------------------------------------------
%%
-\ProvidesFile{ieee.cbx}[2021/12/06 v1.3f biblatex citation style]
+\ProvidesFile{ieee.cbx}[2024/08/14 v1.3g biblatex citation style]
\RequireCitationStyle{numeric-comp}
\ExecuteBibliographyOptions{
- maxcitenames = 3,
- minnames = 3,
+ maxcitenames = 2,
+ minnames = 1,
sorting = none
}
@@ -122,8 +122,8 @@
{}}}
%%
-%% Copyright (C) 2011-2013,2015-2021 by
-%% Joseph Wright <joseph.wright@morningstar2.co.uk>
+%% Copyright (C) 2011-2013,2015-2021,2024 by
+%% Joseph Wright <joseph@texdev.net>
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ieee/magyar-ieee.lbx b/macros/latex/contrib/biblatex-contrib/biblatex-ieee/magyar-ieee.lbx
index 79ffd21ce9..33e88122fd 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-ieee/magyar-ieee.lbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ieee/magyar-ieee.lbx
@@ -2,7 +2,7 @@
%% biblatex-ieee --- A biblatex implementation of the IEEE
%% bibliography style
%% Maintained by Joseph Wright
-%% E-mail: joseph.wright at morningstar2.co.uk
+%% E-mail: jsoeph@texdev.net
%% Released under the LaTeX Project Public License v1.3c or later
%% See http://www.latex-project.org/lppl.txt
%% ---------------------------------------------------------------
@@ -34,8 +34,8 @@
}
%%
-%% Copyright (C) 2011-2013,2015-2020 by
-%% Joseph Wright <joseph.wright at morningstar2.co.uk>
+%% Copyright (C) 2011-2013,2015-2020,2024 by
+%% Joseph Wright <joseph@texdev.net>
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-phys/biblatex-phys.bib b/macros/latex/contrib/biblatex-contrib/biblatex-phys/biblatex-phys.bib
index 3f6af13bdd..6f0f9b5281 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-phys/biblatex-phys.bib
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-phys/biblatex-phys.bib
@@ -71,20 +71,20 @@
issue = {25},
pages = {254504},
year = {2008},
- month = {Jun},
+ month = jun,
publisher = {American Physical Society},
doi = {10.1103/PhysRevLett.100.254504},
}
@Book{Augustine1995,
hyphenation = {american},
- author = {Augustine, Robert L.},
+ author = {Augustine, Robert L.},
title = {Heterogeneous Catalysis for the Synthetic
Chemist},
shorttitle = {Heterogeneous catalysis},
publisher = {Marcel Dekker},
location = {New York},
- date = {1995},
+ date = {1995},
}
@Article{Booth1962,
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-phys/biblatex-phys.pdf b/macros/latex/contrib/biblatex-contrib/biblatex-phys/biblatex-phys.pdf
index 16758e75a7..e7e9e05d58 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-phys/biblatex-phys.pdf
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-phys/biblatex-phys.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-phys/biblatex-phys.tex b/macros/latex/contrib/biblatex-contrib/biblatex-phys/biblatex-phys.tex
index 89550aed25..7224b722af 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-phys/biblatex-phys.tex
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-phys/biblatex-phys.tex
@@ -2,7 +2,7 @@
%% biblatex-phys --- A biblatex implementation of the AIP and APS
%% bibliography style
%% Maintained by Joseph Wright
-%% E-mail: joseph.wright@morningstar2.co.uk
+%% E-mail: joseph@texdev.net
%% Released under the LaTeX Project Public License v1.3c or later
%% See http://www.latex-project.org/lppl.txt
%% ---------------------------------------------------------------
@@ -21,12 +21,12 @@
\addbibresource{biblatex-phys.bib}
\author{Joseph Wright\thanks{E-mail:
- \href{mailto:joseph.wright@morningstar2.co.uk}
- {\texttt{joseph.wright@morningstar2.co.uk}}}}
+ \href{mailto:joseph@texdev.net}
+ {\texttt{joseph@texdev.net}}}}
\title{\pkg{biblatex-phys} -- A \pkg{biblatex} implementation of the
\textsc{aip} and \textsc{aps} bibliography style%
- \footnote{This file describes v1.1b, last revised 2019/12/03.}}
-\date{Released 2019/12/03}
+ \footnote{This file describes v1.1c, last revised 2024/07/26.}}
+\date{Released 2024/07/26}
\providecommand*{\opt}[1]{\texttt{#1}}
\providecommand*{\pkg}[1]{\textsf{#1}}
@@ -49,12 +49,12 @@ in the usual way
\end{verbatim}
Load-time options are provided to deal with the small number of variations
between the \textsc{aip} and \textsc{aps} styles.
-The References section of this document demonstrates the format
+The References section of this document demonstrates the format
generated by the package using the \texttt{biblatex-phys.bib} database
of example citations.
The styles use the standard \pkg{biblatex} database requirements. This means
-that a database designed for traditional \pkg{biblatex} use may need some
+that a database designed for traditional \BibTeX{} use may need some
editing for optimal output. The accompanying example database
\texttt{biblatex-phys.bib} shows examples of all of the supported entry types
with common fields filled in.
@@ -69,13 +69,13 @@ seen between the \textsc{aip} and \textsc{aps} styles.
\DescribeOption{eprint}
\DescribeOption{isbn}
\DescribeOption{url}
-The standard style options \opt{doi}, \opt{eprint} \opt{isbn} and
-\opt{eprint}, as described in the \pkg{biblatex} manual. However, these
+The standard style options \opt{doi}, \opt{eprint}, \opt{isbn} and
+\opt{url}, as described in the \pkg{biblatex} manual. However, these
options are turned off as standard by the \pkg{phys} style. This reflects the
fact that these entries may be present in reference databases but are not
generally included in published bibliographies. Note that \textsc{doi} values
-are printed for journal articles with no pages given, even if the \opt{doi}
-option is \opt{false}.
+are printed for journal articles with no pages or eid given, even if the
+\opt{doi} option is \opt{false}.
\DescribeOption{subentry}
In common with the standard \pkg{biblatex} numeric styles, all of the styles
@@ -93,7 +93,7 @@ patents, which are treated in the same way.)
\DescribeOption{biblabel}
The format of the numbers used in the bibliography (the \enquote{bibliography
-label}) varies. he \opt{biblabel} option allows the user to easily set the
+label}) varies. The \opt{biblabel} option allows the user to easily set the
format used. This option takes a values \opt{superscript} (the standard
setting) and \opt{brackets}.
@@ -146,7 +146,7 @@ command may be used to alter this, either for the whole document or only
for the bibliography, for example by using
\begin{verbatim}
\AtBeginBibliography{%
- \urlstyle{rm}%
+ \urlstyle{same}%
}
\end{verbatim}
@@ -164,8 +164,8 @@ Suggestions for improvement and bug reports can be logged in the package issue
database, found at
\url{https://github.com/josephwright/biblatex-phys/issues}, or can
be sent by e-mail to
-\href{mailto:joseph.wright@morningstar2.co.uk}
- {\texttt{joseph.wright@morningstar2.co.uk}}.
+\href{mailto:joseph@texdev.net}
+ {\texttt{joseph@texdev.net}}.
\nocite{*}
@@ -208,8 +208,8 @@ be sent by e-mail to
\end{document}
%%
-%% Copyright (C) 2012-2014,2016,2018,2019 by
-%% Joseph Wright <joseph.wright@morningstar2.co.uk>
+%% Copyright (C) 2012-2014,2016,2018-2020,2022,2024 by
+%% Joseph Wright <joseph@texdev.net>
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-phys/phys.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-phys/phys.bbx
index 442f4feae5..336f90e547 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-phys/phys.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-phys/phys.bbx
@@ -2,13 +2,13 @@
%% biblatex-phys --- A biblatex implementation of the AIP and APS
%% bibliography style
%% Maintained by Joseph Wright
-%% E-mail: joseph.wright@morningstar2.co.uk
+%% E-mail: joseph@texdev.net
%% Released under the LaTeX Project Public License v1.3c or later
%% See http://www.latex-project.org/lppl.txt
%% ---------------------------------------------------------------
%%
-\ProvidesFile{phys.bbx}[2019/12/03 v1.1b biblatex bibliography style]
+\ProvidesFile{phys.bbx}[2024/07/26 v1.1c biblatex bibliography style]
% Load the standard style to avoid copy-pasting unnecessary material
\RequireBibliographyStyle{numeric-comp}
@@ -464,14 +464,15 @@
\printfield{pages}%
\iffieldundef{pages}
{%
- \printfield{doi}%
- \clearfield{doi}%
- }%
- {%
- \iftoggle{bbx:doi}
- {}
- {\clearfield{doi}}%
- }%
+ \iffieldundef{eid}
+ {%
+ \iftoggle{bbx:doi}
+ {}
+ {\printfield{doi}}%
+ }
+ {}%
+ }
+ {}%
}
\newbibmacro*{related:translatedas}[1]{%
@@ -495,8 +496,8 @@
%%
-%% Copyright (C) 2012-2014,2016,2018,2019 by
-%% Joseph Wright <joseph.wright@morningstar2.co.uk>
+%% Copyright (C) 2012-2014,2016,2018-2020,2023,2024 by
+%% Joseph Wright <joseph@texdev.net>
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-phys/phys.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-phys/phys.cbx
index 7758bc0a2b..4452bd7113 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-phys/phys.cbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-phys/phys.cbx
@@ -2,13 +2,13 @@
%% biblatex-phys --- A biblatex implementation of the AIP and APS
%% bibliography style
%% Maintained by Joseph Wright
-%% E-mail: joseph.wright@morningstar2.co.uk
+%% E-mail: joseph@texdev.net
%% Released under the LaTeX Project Public License v1.3c or later
%% See http://www.latex-project.org/lppl.txt
%% ---------------------------------------------------------------
%%
-\ProvidesFile{phys.cbx}[2019/12/03 v1.1b biblatex citation style]
+\ProvidesFile{phys.cbx}[2024/07/26 v1.1c biblatex citation style]
\RequireCitationStyle{numeric-comp}
@@ -20,8 +20,8 @@
}
%%
-%% Copyright (C) 2012-2014,2016,2018,2019 by
-%% Joseph Wright <joseph.wright@morningstar2.co.uk>
+%% Copyright (C) 2012-2014,2016,2018,2019,2024 by
+%% Joseph Wright <joseph@texdev.net>
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-phys/phys.dbx b/macros/latex/contrib/biblatex-contrib/biblatex-phys/phys.dbx
index c47ca1e2d9..388e7ee435 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-phys/phys.dbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-phys/phys.dbx
@@ -2,19 +2,19 @@
%% biblatex-phys --- A biblatex implementation of the AIP and APS
%% bibliography style
%% Maintained by Joseph Wright
-%% E-mail: joseph.wright@morningstar2.co.uk
+%% E-mail: joseph@texdev.net
%% Released under the LaTeX Project Public License v1.3c or later
%% See http://www.latex-project.org/lppl.txt
%% ---------------------------------------------------------------
%%
-\ProvidesFile{phys.dbx}[2019/12/03 v1.1b biblatex database model extension]
+\ProvidesFile{phys.dbx}[2024/07/26 v1.1c biblatex database model extension]
\DeclareDatamodelFields[type=field, datatype=literal]{collaboration}
%%
-%% Copyright (C) 2012-2014,2016,2018,2019 by
-%% Joseph Wright <joseph.wright@morningstar2.co.uk>
+%% Copyright (C) 2012-2014,2016,2018,2019,2024 by
+%% Joseph Wright <joseph@texdev.net>
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-publist/README b/macros/latex/contrib/biblatex-contrib/biblatex-publist/README
index 3cebed7b7b..11885c9993 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-publist/README
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-publist/README
@@ -46,7 +46,27 @@ instructions.
== CHANGES ==
-* V. 2.9 (2025-05-09):
+* V. 2.13 (2024-08-21):
+ - Add basic support for author annotations.
+ - Add support for information about number of citations.
+ - Add support for \citesecitem and \citesecitem* in
+ descending order.
+ - Fix \citeitem in first refsection.
+
+* V. 2.12 (2024-07-16):
+ - Externalize localization to *.lbx files.
+ - Add \citeitemrange and \citesecitemrange commands.
+ - Fix error with section count on first run.
+
+* V. 2.11 (2024-07-02):
+ - Add \citesecitem and \citesecitem* commands.
+ - Support multiple sections in \GetSectionCount.
+
+* V. 2.10 (2024-06-17):
+ - Add bibchecks to show only/no peer-reviewed items.
+ - Fix bibchecks to work with braced and non-braced values.
+
+* V. 2.9 (2024-05-09):
- Add bibchecks to exclude (specific kinds of) unpublished work.
* V. 2.8 (2024-03-08):
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.pdf b/macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.pdf
index fb8333ecf7..fd041e59a8 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.pdf
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.tex b/macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.tex
index aa64fc9861..241bba978e 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.tex
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.tex
@@ -115,7 +115,7 @@
\thanks{Please report issues via \protect\url{https://github.com/jspitz/biblatex-publist}.}%
}
-\date{Version 2.9, 2025/05/09}
+\date{Version 2.13, 2024/08/21}
\maketitle
\begin{abstract}
@@ -162,6 +162,7 @@ The list of features includes:
\begin{itemize}
\setlength\itemsep{0pt}
\item Omit or hide selected author names, with a specific indication of co-authors in the former case
+ \item Indicate author roles
\item Filter publications of specific authors from heterogeneous bibliography databases
\item Date-centric sorting (as typical for publication lists)
\item Number items in ascending or descending order, globally or sectional
@@ -200,7 +201,7 @@ forms of citing may break or not produce the expected result. The reason is that
The standard way of using the package is to load the style file via
\begin{lstlisting}[moretexcs={[1]{plauthorname}}]
-\usepackage[bibstyle=publist]{biblatex}
+\usepackage[style=publist]{biblatex}
\plauthorname[first name][von-part]{surname}
\end{lstlisting}
The \jcsmacro*{plauthorname} macro\footnote{The macro was named \jfcsmacro{omitname} until v.\,1.4
@@ -213,31 +214,27 @@ it defines the name(s) of the person(s) whose publications are listed.
By default, the author\slash editor name(s) will be omitted completely
for all publications which are authored or edited only by the specified person(s), as in:
-\begin{quote}
-\textbf{2012.} Some recent trends in gardening. In: \emph{Gardening
-Practice} 56, pp.~34--86.
-\end{quote}
+\begin{itemize}
+\item[{[1]}] \textbf{2012.} Some recent trends in gardening. In: \emph{Gardening
+ Practice} 56, pp.~34--86.
+\end{itemize}
If there are co-authors\slash co-editors, your name(s) will be filtered
out and the collaborators added in parentheses, as in:
-\begin{quote}
-\textbf{1987} (with John Doe and Mary Hall). Are there new trends
-in gardening? In: \emph{Gardening Practice} 24, pp.~10--15.
-\end{quote}
+\begin{itemize}
+\item[{[2]}] \textbf{1987} (with John Doe and Mary Hall). Are there new trends
+ in gardening? In: \emph{Gardening Practice} 24, pp.~10--15.
+\end{itemize}
If \joption{plauthorhandling=highlight} is used (see next section), the plauthor(s)
will be printed in bold face instead, as in:
-\begin{quote}
- Doe, John, \textbf{Myself, Me} and Hall, Mary, \textbf{1987}. Are there new trends
- in gardening? In: \emph{Gardening Practice} 24, pp.~10--15.
-\end{quote}
+\begin{itemize}
+\item[{[2]}] Doe, John, \textbf{Myself, Me}, and Hall, Mary. \textbf{1987}. Are there new trends
+ in gardening? In: \emph{Gardening Practice} 24, pp.~10--15.
+\end{itemize}
%
Note that \jcsmacro{plauthorname} expects the name constituents as they are recorded in the
database (special characters are handled). The option \joption{plauthorfirstinit} (see next section),
however, allows you to pass only an initial character instead of a first name.
-If you want to refer to an item number, use \jcsmacro*{citeitem}\jmacro{\{<key>\}} within your publication list.
-This will print the item number in square brackets (like the \jfcsmacro{cite} command in numeric citation styles),
-but as opposed to normal \jfcsmacro{cite} it also considers all numbering tweaks you make via the \bpl\ options.
-
\subsection{Additional Options}\label{sec:addopts}
@@ -262,6 +259,10 @@ By default, the publist author (as defined with \jcsmacro{plauthorname}) is omit
the author or editor list. If you use the option \joption{plauthorhandling=highlight},
it is highlighted instead (set in bold face by default; see sec.~\ref{sec:auxmacros} how to change that).
+\item [{\joption{annotations=\{comma-separated list\}}}]
+
+A list of data annotations that should be handled in output. See sec.~\ref{sec:annotations} for details.
+
\item [{\joption{nameorder{[}=family-given|given-family{]}}}] default: \emph{family-given}.
By default, the author and editor names with \joption{plauthorhandling=highlight} are output in the order \enquote{Lastname, Given Names}.
@@ -333,6 +334,11 @@ with abbreviated and full first name (\textsc{J. Doe} and well as \textsc{John D
works of colleagues with the same surname (maybe your family members), which you will not want to mark as your own's.
Of course, the solution does not help if there is an entry with same surname and same first name initial (such as \textsc{Jane Doe}).
+\item [{\joption{citinfo{[}=true|false{]}}}] default: \emph{false}.
+
+If this option is \joption{true}, the number of citations, as specified via the \texttt{citations} field
+(see section~\ref{sec:citinfo}), will be appended to the entries.
+
\item [{\joption{jifinfo{[}=true|false{]}}}] default: \emph{false}.
If this option is \joption{true}, the journal impact factor, as specified via the \texttt{impactfactor} field
@@ -374,8 +380,8 @@ See section~\ref{sec:clicktitles} for details.
All options listed here should be passed directly to \bibltx\ via \jfcsmacro{usepackage} when loading \bibltx, and they apply to the whole
document.
-For most options, it is possible to change them (repeatedly) within the document. To this end, the macro
-\jcsmacro*[-3]{ExecutePublistOptions} is provided. It takes a comma-separated list of options as its mandatory argument
+For most options, it is possible to change them within the document via the macro
+\jcsmacro*[-3]{ExecutePublistOptions}. It takes a comma-separated list of options as mandatory argument
and can be used (repeatedly) in preamble or anywhere in the document body.
The executed options apply as of the next bibliography (\jfcsmacro{printbibliography}) that follows.
Options that \emph{cannot} be changed within a document that way are \joption{plnumbering} and \joption{pubstateextra},
@@ -385,6 +391,57 @@ Also note that with the \joption{plauthor*} options, as opposed to repeated \jcs
repeated setting of these name options respectively \emph{overwrite}, and not extend, the previous name settings.
+\subsection{Referring to Entries}\label{sec:citeitems}
+
+Even though publication lists usually do not include citations, there might be cases where you need to refer
+to specific entries within it. Especially with sectioned lists, it is arguably most advisable to refer to the items
+by their number, as otherwise your readers will have a hard time to find the item you are referring to.
+Of course, if you do not use global numbering, you should also specify the section the item is in, as in:
+``see [13] (sec.~4)''.
+
+Since \bpl\ plays all sorts of tricks with the numbering (see sec.~\ref{sec:numbers}), the reference needs to take these
+into account. The normal citation commands will often produce inadequate or even wrong output particularly in numeric
+style.
+To account for these peculiarities, the package ships its own cite style which is used if you load \bpl\ via
+\joption{style=publist} (but not with \joption{bibstyle=publist}!). The features described in what follows require
+this particular cite style.
+
+If you want to refer to an item number, use \jcsmacro*{citeitem}\jmacro{\{<key(s)>\}} within your publication list.%
+\footnote{As with the normal citation commands, the argument might also be a comma-separated list of keys.}
+This will print the item number in square brackets (like the \jfcsmacro{cite} command in numeric citation styles),
+but as opposed to normal \jfcsmacro{cite} it also considers all numbering tweaks you make via the \bpl\ options.
+Note, however, that with refsections (see sec.~\ref{sec:example}) \jcsmacro{citeitem} only works within a given
+refsection because the references in a refsection are unknown outside of its scope.
+
+If you want to refer to an item number from outside a refsection, you can use \jcsmacro*{citesecitem}\jmacro{\{<key(s)>\}}.
+This will try to access the number of the given entry from a stored list that is generated by \bpl.
+References of this kind only make sense, of course, with global numbering and if an entry only occurs once in the bibliography,
+since otherwise they would be too ambiguous. However, for locally numbered lists, there is the starred variant
+\jcsmacro*{citesecitem*}\jmacro{\{<key(s)>\}} which will append a reference to the section the item is in.
+By default, the form of this addition is ``(sec.~<no.>)'', with ``sec.'' being localized (see sec.~\ref{sec:auxmacros}
+on how to customize this).
+
+All these commands have counterparts which can be used to refer to a range of entries:
+\begin{itemize}
+ \setlength\itemsep{0pt}
+ \item \jcsmacro*{citeitemrange}\jmacro{\{<first key>\}}\jmacro{\{<last key>\}}
+ \item \jcsmacro*{citesecitemrange}\jmacro{\{<first key>\}}\jmacro{\{<last key>\}}
+ \item \jcsmacro*{citesecitemrange*}\jmacro{\{<first key>\}}\jmacro{\{<last key>\}}
+\end{itemize}
+%
+The range will by default be indicated by an en-dash ([12]--[17]), you can change this by redefining the
+macro \jcsmacro*{itemrangesep}.
+
+Note that due to the design of refsections, no hyperlinks can be generated for the item number with \jcsmacro{citesecitem}
+(or its starred and range counterparts) and the \textsf{hyperref} package being loaded; the section reference of the starred
+commands, however, is hyperlinked in this case.
+If you need hyperlinked item references, consider refsegments rather than refsections and the \jcsmacro{citeitem} command
+(although this will have other drawbacks).
+
+Of course, both \jcsmacro{citeitem} and \jcsmacro{citesecitem} presuppose that you do not disable numbering, and
+\jcsmacro{citesecitem*} requires numbered section headers.
+
+
\subsection{Numbers Games}\label{sec:numbers}
Among the peculiarities of publication lists is the greater variety of numbering conventions, as compared
@@ -474,12 +531,14 @@ The macro \jcsmacro*{GetTotalCount} outputs the total number of entries in your
If you want to output the number of publications per section (when employing \jfcsmacro{refsection}),
you can use the macro \jcsmacro*{GetSectionCount} which takes one optional argument, the section
-number. For instance,
+number or a comma-separated list of section numbers. For instance,
\begin{lstlisting}[moretexcs={[4]{GetSectionCount}}]
\GetSectionCount[1]
\end{lstlisting}
-outputs the number of items in the first section. If the optional argument is not given, the
-statistics for the current section is output (this requires the macro to be within a \jfcsmacro{refsection}).
+outputs the number of items in the first section, whereas \lstinline!\GetSectionCount[1,2]! outputs
+the sum of the numbers of items in the first and second section.
+If the optional argument is not given, the statistic for the current section is output
+(this requires the macro to be within a \jfcsmacro{refsection}).
Note that both values might require additional \LaTeX\ runs to get properly set. You will
get a package warning if additional runs are needed.
@@ -526,22 +585,101 @@ taken care of specifically.
With \joption{plauthorhandling=omit}, the \jfoption{maxnames} value specifies how many co-authors are added in parenthesis (the omitted
author name is not counted here). If the treshold is reached, \emph{et al.}\ (or the corresponding localized string) is appended (and the list truncated
to the \jfoption{minnames} value, \jfoption{1} by default). So you get something like:
-\begin{quote}
- \textbf{2020} (with John Doe et al.). What's up in gardening? In: \emph{Gardening Practice} 44, pp.~1--7.
-\end{quote}
+\begin{itemize}
+ \item[{[3]}] \textbf{2020} (with John Doe et al.). What's up in gardening? In: \emph{Gardening Practice} 44, pp.~1--7.
+\end{itemize}
%
With \joption{plauthorhandling=highlight}, \bpl\ outputs all publist authors, even if the \jfoption{maxnames} treshold has been reached.
However, other authors (beyond \jfoption{minnames}) are omitted. If they come before a publist author, this is indicated by [\ldots\unkern],
if authors follow after all publication list authors, \emph{et al.} is appended, as in:
-\begin{quote}
- Doe, John, [\ldots\unkern], \textbf{Myself, Me}, et al., \textbf{2020}. What's up in gardening? In: \emph{Gardening Practice} 44, pp.~1--7.
-\end{quote}
+\begin{itemize}
+ \item[{[3]}] Doe, John, [\ldots\unkern], \textbf{Myself, Me}, et al., \textbf{2020}. What's up in gardening? In: \emph{Gardening Practice} 44, pp.~1--7.
+\end{itemize}
%
The omission indicator, \jcsmacro*{plnameomission}, can be redefined. The default definition is:
\begin{lstlisting}[moretexcs={[4]{plnameomission,bibellipsis,addcomma,addspace}}]
\newcommand*\plnameomission{\bibellipsis\addcomma\addspace}
\end{lstlisting}
+
+\subsection{Indicating Author Roles}\label{sec:annotations}
+
+If you want to indicate author roles (e.\,g., signify who is corresponding or main author
+of a paper), you need to add this information to the respective entries,
+but you do not want to clutter the author data.
+With \bibltx, separating such extra information from the actual data is well supported
+via the data annotation feature, as in:
+\begin{lstlisting}[morekeywords={[1]{author}}, otherkeywords={author+an}]
+author = {John Doe and Mary Hall and Me Myself},
+author+an = {1=corresponding; 3=main},
+\end{lstlisting}
+%
+where the number (key) refers to the respective name in the list, and the value to the annotation category
+which you can name as you wish.
+Multiple annotations to a single person are possible if you pass multiple comma-separated categories to
+one key, as in \texttt{1=corresponding,main} (please refer to the \bibltx\ manual \cite{bibltx} for details).
+
+To handle such annotations, however, the style file needs to know what to do with what kind of
+annotation. Otherwise annotations are just ignored.
+
+For basic usage, \bpl\ provides some support for such annotations.
+If you pass the annotation categories you have used in the \texttt{*.bib} file as a comma-separated list
+to the \joption{annotations} option,
+\bpl\ will go through these annotations and for each, it
+will print a superscripted symbol in front of the author family name.
+By default this uses a list similar\footnote{If have moved the single dagger (\textdagger) to a later place,
+ since some people associate this with the \enquote*{deceased} indicator.}
+to the one you know from symbolic (\jfcsmacro{thanks}) footnotes
+(in order of the passed category: \textasteriskcentered, \textdaggerdbl, \textsection, \textparagraph,
+\textbardbl, \textdagger, {\textasteriskcentered\textasteriskcentered}, {\textdaggerdbl\textdaggerdbl},
+or {\textdagger\textdagger}). Nine different annotations are supported this way.
+
+With the example given above and \joption{annotations=\{main,correponding\}}, for instance,
+you would get
+\begin{itemize}
+ \item[{[4]}] \textsuperscript{\textdaggerdbl}Doe, John, Hall, Mary, and
+ \textbf{\textsuperscript{\textasteriskcentered}Myself, Me} \ldots
+\end{itemize}
+%
+Of course, each category always gets the same symbol within a publication list, so you can add a caption
+to explain those. For easy access to the symbols, you can use \jcsmacro*{GetAnnotSymbol}\jmacro{\{category\}}.
+This prints the respective symbol in formatted way (superscripted with default settings).
+A starred version of the command prints it without such formatting.
+
+If you want a different list of symbols, or need more, you can change it by means of the macro
+\jcsmacro*{SetAnnotSymbols}\jmacro{\{comma-separated list of symbols/macros\}}.
+This will overwrite the default list.
+
+You can also change the position of the symbol. The default definition is
+\begin{lstlisting}[morekeywords={[1]{mkbibnamefamily,bplannot}}]
+\renewcommand*{\mkbibnamefamily}[1]{\bplannot #1}
+\end{lstlisting}
+%
+with \jcsmacro{bplannot} being the annotation. You can move it after the name, or to another name
+part (e.g., \jfcsmacro{mkbibnamegiven}).
+
+To change the formatting, you can redefine
+\begin{lstlisting}[morekeywords={[1]{mkbplannot,textsuperscript}}]
+\newcommand*\mkbplannot[1]{\textsuperscript{#1}}
+\end{lstlisting}
+%
+If you need a different markup (such as coloring or underlining) you need to set up
+your own annotation handling as documented in the \bibltx\ manual.
+
+With \joption{plauthorhandling=omit}, the annotations of the omitted publist author(s)
+are appended to the entry (as an annotation and with the specific entry-related information
+discussed in the next section). If a \jfcsmacro{bibstring}
+\texttt{annot:<category>} exists (predefined keys are \texttt{annot:main} and
+\texttt{annot:corresponding}), the respective localized string is output, otherwise
+the verbatim category.
+
+So, again with the example given above, you would get:
+\begin{itemize}
+ \item[{[4]}] \ldots\ (with John \textsuperscript{\textdaggerdbl}Doe and Mary Hall)
+ \ldots\ [Main auth.].
+\end{itemize}
+
+
\subsection{Adding Specific Entry-Related Information}
Publication lists usually contain some information which is not commonly given in normal
@@ -563,6 +701,17 @@ in a specific \texttt{@xdata} subset (please refer to the \bibltx\ documentation
If the option \joption{jifinfo} is true, then \bpl\ will append the respective information to the entries.
A specific localizable bibkey is used for this purpose (see section~\ref{sec:localization}).
+
+\subsubsection{Number of Citations}\label{sec:citinfo}
+
+Another common quantification of \enquote*{impact} is the number of citations of a publication
+(by other publications).
+To track this, \bpl\ provides a specific database field, \texttt{citations}.
+
+If the option \joption{citinfo} is true, then \bpl\ will append the respective information to the entries.
+A specific localizable bibkey is used for this purpose (see section~\ref{sec:localization}).
+
+
\subsubsection{Peer Review}\label{sec:peerreview}
It is common, and sometimes mandatory, to add information to publication list entries indicating if
@@ -663,6 +812,16 @@ The default definition is:
\newcommand*\plextrainfosep{\addsemicolon\addspace}
\end{lstlisting}
%
+The\jmcsmacro{secitemsecref} section reference with \jcsmacro{citesecitem*} is determined by
+\jcsmacro{secitemsecref}, which has the following default definition:
+\begin{lstlisting}[moretexcs={[2]{mkbibparens,secitemsecref,bibstring,addnbspace}}]
+\newcommand*\secitemsecref[1]{%
+ \mkbibparens{\bibstring{section}\addnbspace\ref{refsection:#1}}%
+}
+\end{lstlisting}
+%
+Redefine this macro if you need a different output.
+
The indendation of the bibliographic entries (lines > 1) can be adjusted by setting the length
\jmacro*{extralabel\-numberwidth} via \jfcsmacro{setlength} (default is \texttt{0pt}).
This might be needed for long bibliographies (> 99 entries) in order to adjust to the extra
@@ -715,31 +874,55 @@ are printed, so you might get redundant output. To control (e.\,g., omit) them,
\section{Localization}\label{sec:localization}
Since the package draws on \bibltx, it supports localization.
-The following additional localization keys (\jfcsmacro{bibstrings})
-are added by the package:
-\begin{itemize}
+The following additional localization keys (\texttt{bibstrings})
+are added by the package, in verbose and abbreviated form (depending
+on your setting of the \bibltx\ option \joption{abbreviate}):
+
+\begin{description}
\setlength{\itemsep}{0pt}
-\item \emph{impactfactor}: the expression \enquote{impact factor}.
-\item \emph{openaccess:true}: the expression \enquote{OpenAccess}.
-\item \emph{openaccess:gold}: the phrase \enquote{OpenAccess (gold)}.
-\item \emph{openaccess:green}: the phrase \enquote{OpenAccess (green)}.
-\item \emph{parttranslationof}: the expression \enquote{partial translation of}
+\item[annot:corresponding] the expression \enquote{corresponding author} (short form: \enquote{corr. auth.}).
+\item[annot:main] the expression \enquote{main author} (short form: \enquote{main auth.}).
+\item[citations] the expression \enquote{citations} (short form: \enquote{cit.}).
+\item[impactfactor] the expression \enquote{impact factor} (short form: \enquote{JIF}).
+\item[openaccess:true] the expression \enquote{OpenAccess} (short form: \enquote{OA}).
+\item[openaccess:gold] the phrase \enquote{OpenAccess (gold)} (short form: \enquote{OA (gold)}).
+\item[{openaccess:green}] the phrase \enquote{OpenAccess (green)} (short form: \enquote{OA (green)}).
+\item[{parttranslationof}] the phrase \enquote{partial translation of} (short form: \enquote{part.\ trans.\ of})
for entries referring to partially translated work via \bibltx's
\enquote*{related entries} feature (see sec.~\ref{sec:partial-translations}).
-\item \emph{peerreview:sb}: the phrase \enquote{single blind peer review}.
-\item \emph{peerreview:db}: the phrase \enquote{double blind peer review}.
-\item \emph{peerreview:op}: the phrase \enquote{open peer review}.
-\item \emph{peerreview:co}: the phrase \enquote{collaborative peer review}.
-\item \emph{peerreview:cc}: the phrase \enquote{cascading peer review}.
-\item \emph{peerreview:tp}: the phrase \enquote{third-party peer review}.
-\item \emph{peerreview:pp}: the phrase \enquote{post-publication peer review}.
-\item \emph{peerreview:no}: the phrase \enquote{no peer review}.
-\item \emph{with}: the preposition \enquote{with} that precedes the list of
- co-authors by default (i.\,e., with \joption{plauthorhandling=omit}).
+\item[{peerreview:sb}] the phrase \enquote{single blind peer review} (short form: \enquote{single blind peer rev.}).
+\item[{peerreview:db}] the phrase \enquote{double blind peer review} (short form: \enquote{double blind peer rev.}).
+\item[{peerreview:op}] the phrase \enquote{open peer review} (short form: \enquote{open peer rev}).
+\item[{peerreview:co}] the phrase \enquote{collaborative peer review} (short form: \enquote{collab.\ peer rev.}).
+\item[{peerreview:cc}] the phrase \enquote{cascading peer review} (short form: \enquote{casc.\ peer rev.}).
+\item[{peerreview:tp}] the phrase \enquote{third-party peer review} (short form: \enquote{3rd-party peer rev.}).
+\item[{peerreview:pp}] the phrase \enquote{post-publication peer review} (short form: \enquote{post-pub.\ peer rev.}).
+\item[{peerreview:no}] the phrase \enquote{no peer review} (short form: \enquote{no peer rev.}).
+\item[{with}] the preposition \enquote{with} that precedes the list of
+ co-authors by default (i.\,e., with \joption{plauthorhandling=omit}) (short and verbose forms identical).
+\end{description}
+%
+Localization is provided in dedicated language definition files which follow
+the naming scheme, \texttt{<language>-publist.lbx}.
+The package currently ships such files for the following languages and their varieties:
+
+\begin{flushleft}
+\begin{itemize}
+\setlength{\itemsep}{0pt}
+ \item English (\texttt{american}, \texttt{australian}, \texttt{british},
+ \texttt{canadian}, \texttt{english}, \texttt{newzealand},
+ \texttt{UKenglish}, \texttt{USenglish})
+ \item French (\texttt{french})
+ \item German (\texttt{austrian}, \texttt{german}, \texttt{naustrian}, \texttt{ngerman},
+ \texttt{nswissgerman}, \texttt{swissgerman})
\end{itemize}
-Currently, these additional localization keys are available in the following
-languages: English, French and German.%
-\footnote{Please send suggestions for other languages to the package author.}
+\end{flushleft}
+%
+If you want to add support for other languages, you can simply copy one of the existing
+lbx files, name it \texttt{<yourlanguage>-publist.lbx} and adapt the localization keys.
+
+If you are confident enough, please send me your file so I can consider adding it to
+the package.
\section{Further Extensions}
@@ -840,6 +1023,8 @@ Note that the \jfcsmacro{printbibliography} option
\section{Filtering\label{sec:filtering}}
+\subsection{Filter out own work}
+
If you have a bibliographic database consisting not only of your own
publications, you can extract yours with the bibliography filter \joption{mine},
which has to be passed to \jfcsmacro{printbibliography}, as in:
@@ -862,13 +1047,16 @@ entries of diverse type and authors, specify:
Note that this method sometimes requires several reruns of \texttt{latex}
to fix the numbering.
+\subsection{Filter on publication or peer-review status}\label{sec:filterbc}
+
Sometimes you might also want to omit some publications from the list which are not yet
published or not yet accepted (e.g., because they are under blind review and you do not
want to reveal your identity yet). To this end, \bpl\ features some \joption{bibchecks}
(for the concept, please refer to \cite[sec.~3.8.2]{bibltx}). Bibchecks can be activated
-by passing \joption{check=<bibcheck>} to the optional argument of \jfcsmacro{printbibliography}.
+by passing \joption{check=<bibcheck>} to the optional argument of \jfcsmacro{printbibliography}
+(see example~\ref{bibcheckex}).
-The following bibchecks are available:
+The following bibchecks are available to this end:
\begin{itemize}
\item \joption{nosubmitted}: omits all entries with pubstate \joption{submitted}.
\item \joption{noprepared}: omits all entries with pubstate \joption{inpreparation}.
@@ -879,8 +1067,18 @@ The following bibchecks are available:
(and thus accepted) entries.
\end{itemize}
%
+The bibchecks below let you filter out publications depending on their peer-review
+setting. This is helpful if you want to differentiate peer-reviewed from non-peer-reviewed
+work in your publication list:
+\begin{itemize}
+ \item \joption{onlypr}: include only peer-reviewed entries (displays only titles which have
+ the \texttt{peerreview} field set and do not have it set to \texttt{no}).
+ \item \joption{nopr}: exclude peer-reviewed entries (omits all entries which have the
+ \texttt{peerreview} field set, except for those which have it set to \texttt{no}).
+\end{itemize}
+%
Several of these bibchecks might be used in a row, e.g.:
-\begin{lstlisting}[moretexcs={[1]{printbibliography}}]
+\begin{lstlisting}[moretexcs={[1]{printbibliography}},caption={Using bibchecks},label={bibcheckex}]
\printbibliography[heading=none,filter=mine,check=nosubmitted,check=noprepared]
\end{lstlisting}
@@ -964,10 +1162,41 @@ until further change).
\section{Revision Log}
\begin{description}
- \item [{V. 2.9 (2025/05/09):}]~
+ \item [{V. 2.13 (2024/08/21):}]~
+ \begin{itemize}
+ \item Add basic support for author annotations (see sec.~\ref{sec:annotations}).
+ \item Add support for information about number of citations (see sec.~\ref{sec:citinfo}).
+ \item Add support for \jcsmacro{citesecitem} and \jcsmacro{citesecitem*} in descending
+ order.
+ \item Fix \jcsmacro{citeitem} in first refsection.
+ \end{itemize}
+
+ \item [{V. 2.12 (2024/07/16):}]~
+ \begin{itemize}
+ \item Externalize localization to \texttt{*.lbx} files.
+ \item Add \jcsmacro{citeitemrange} and \jcsmacro{citesecitemrange} commands
+ (see sec.~\ref{sec:citeitems}).
+ \item Fix error with section count on first run.
+ \end{itemize}
+
+ \item [{V. 2.11 (2024/07/02):}]~
+ \begin{itemize}
+ \item Add \jcsmacro{citesecitem} and \jcsmacro{citesecitem*} commands
+ (see sec.~\ref{sec:citeitems}).
+ \item Support multiple sections in \jcsmacro{GetSectionCount}.
+ \end{itemize}
+
+ \item [{V. 2.10 (2024/06/17):}]~
+ \begin{itemize}
+ \item Add bibchecks to show only/no peer-reviewed items
+ (see sec.~\ref{sec:filterbc}).
+ \item Fix bibchecks to work with braced and non-braced values.
+ \end{itemize}
+
+ \item [{V. 2.9 (2024/05/09):}]~
\begin{itemize}
\item Add bibchecks to exclude (specific kinds of) unpublished work
- (see sec.~\ref{sec:filtering}).
+ (see sec.~\ref{sec:filterbc}).
\end{itemize}
\item [{V. 2.8 (2024/03/08):}]~
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/UKenglish-publist.lbx b/macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/UKenglish-publist.lbx
new file mode 100644
index 0000000000..0b5cce13f5
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/UKenglish-publist.lbx
@@ -0,0 +1,37 @@
+% UKenglish-publist.lbx, extra localizations for biblatex-publist
+%
+% 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 2003/12/01 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% This Current Maintainer of this work is Jürgen Spitzmüller.
+%
+% This work consists of the file publist.bbx
+%
+%
+% This file adds some additional localizations that are used by
+% the biblatex-publist bibliography style
+%
+% Please send suggestions and bug reports to
+% https://github.com/jspitz/biblatex-publist
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\bpl@version{2.13}
+\def\bpl@rdate{2024/08/21}
+
+\ProvidesFile{UKenglish-publist.lbx}[\bpl@rdate\space v.\bpl@version\space
+ biblatex-publist UK English localisation (JSP)]
+
+% Inherit english
+\InheritBibliographyStrings{british}
+\InheritBibliographyExtras{british}
+
+\endinput
+
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/USenglish-publist.lbx b/macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/USenglish-publist.lbx
new file mode 100644
index 0000000000..cc6526761d
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/USenglish-publist.lbx
@@ -0,0 +1,37 @@
+% USenglish-publist.lbx, extra localizations for biblatex-publist
+%
+% 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 2003/12/01 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% This Current Maintainer of this work is Jürgen Spitzmüller.
+%
+% This work consists of the file publist.bbx
+%
+%
+% This file adds some additional localizations that are used by
+% the biblatex-publist bibliography style
+%
+% Please send suggestions and bug reports to
+% https://github.com/jspitz/biblatex-publist
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\bpl@version{2.13}
+\def\bpl@rdate{2024/08/21}
+
+\ProvidesFile{USenglish-publist.lbx}[\bpl@rdate\space v.\bpl@version\space
+ biblatex-publist US English localisation (JSP)]
+
+% Inherit english
+\InheritBibliographyStrings{english}
+\InheritBibliographyExtras{english}
+
+\endinput
+
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/american-publist.lbx b/macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/american-publist.lbx
new file mode 100644
index 0000000000..5476f022ab
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/american-publist.lbx
@@ -0,0 +1,37 @@
+% american-publist.lbx, extra localizations for biblatex-publist
+%
+% 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 2003/12/01 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% This Current Maintainer of this work is Jürgen Spitzmüller.
+%
+% This work consists of the file publist.bbx
+%
+%
+% This file adds some additional localizations that are used by
+% the biblatex-publist bibliography style
+%
+% Please send suggestions and bug reports to
+% https://github.com/jspitz/biblatex-publist
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\bpl@version{2.13}
+\def\bpl@rdate{2024/08/21}
+
+\ProvidesFile{american-publist.lbx}[\bpl@rdate\space v.\bpl@version\space
+ biblatex-publist US English localisation (JSP)]
+
+% Inherit english
+\InheritBibliographyStrings{english}
+\InheritBibliographyExtras{english}
+
+\endinput
+
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/australian-publist.lbx b/macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/australian-publist.lbx
new file mode 100644
index 0000000000..0df359aa82
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/australian-publist.lbx
@@ -0,0 +1,37 @@
+% australian-publist.lbx, extra localizations for biblatex-publist
+%
+% 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 2003/12/01 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% This Current Maintainer of this work is Jürgen Spitzmüller.
+%
+% This work consists of the file publist.bbx
+%
+%
+% This file adds some additional localizations that are used by
+% the biblatex-publist bibliography style
+%
+% Please send suggestions and bug reports to
+% https://github.com/jspitz/biblatex-publist
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\bpl@version{2.13}
+\def\bpl@rdate{2024/08/21}
+
+\ProvidesFile{australian-publist.lbx}[\bpl@rdate\space v.\bpl@version\space
+ biblatex-publist AU English localisation (JSP)]
+
+% Inherit english
+\InheritBibliographyStrings{british}
+\InheritBibliographyExtras{british}
+
+\endinput
+
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/austrian-publist.lbx b/macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/austrian-publist.lbx
new file mode 100644
index 0000000000..0a82a48b77
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/austrian-publist.lbx
@@ -0,0 +1,58 @@
+% austrian-publist.lbx, extra localizations for biblatex-publist
+%
+% 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 2003/12/01 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% This Current Maintainer of this work is Jürgen Spitzmüller.
+%
+% This work consists of the file publist.bbx
+%
+%
+% This file adds some additional localizations that are used by
+% the biblatex-publist bibliography style
+%
+% Please send suggestions and bug reports to
+% https://github.com/jspitz/biblatex-publist
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\bpl@version{2.13}
+\def\bpl@rdate{2024/08/21}
+
+\ProvidesFile{austrian-publist.lbx}[\bpl@rdate\space v.\bpl@version\space
+ biblatex-publist Austrian localisation (JSP)]
+
+% Inherit general localization
+\InheritBibliographyExtras{austrian}
+
+% Localizations
+\DeclareBibliographyStrings{%
+ inherit = {austrian},
+ peerreview:pp = {{Post-Publication-Begutachtung}{Post-Pub\adddot-Beg\adddot}},
+ with = {{mit}{mit}},
+ citations = {{Zitationen}{Zit\adddot}},
+ impactfactor = {{Impactfaktor}{JIF}},
+ openaccess:true = {{OpenAccess}{OA}},
+ openaccess:gold = {{OpenAccess (gold)}{OA (gold)}},
+ openaccess:green = {{OpenAccess (gr\"un)}{OA (gr\"un)}},
+ peerreview:sb = {{Blindbegutachtung}{Blindbeg\adddot}},
+ peerreview:db = {{Doppelblindbegutachtung}{Doppelblindbeg\adddot}},
+ peerreview:op = {{Offene Begutachtung}{Offene Beg\adddot}},
+ peerreview:co = {{Kollaborative Begutachtung}{Kollab\adddotespace Beg\adddot}},
+ peerreview:cc = {{Cascading-Begutachtung}{Cascading-Beg\adddot}},
+ peerreview:tp = {{Begutachtung durch Dritte}{Beg\adddotspace durch Dritte}},
+ peerreview:pp = {{Post-Publication-Begutachtung}{Post-Pub\adddot-Beg\adddot}},
+ peerreview:no = {{keine Begutachtung}{keine Beg\adddot}},
+ annot:main = {{Hauptautor}{Hauptaut\adddot}},
+ annot:corresponding = {{Korrespondenzautor}{Korr.-aut\adddot}}
+}
+
+\endinput
+
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/british-publist.lbx b/macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/british-publist.lbx
new file mode 100644
index 0000000000..b1dbaea5be
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/british-publist.lbx
@@ -0,0 +1,58 @@
+% british-publist.lbx, extra localizations for biblatex-publist
+%
+% 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 2003/12/01 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% This Current Maintainer of this work is Jürgen Spitzmüller.
+%
+% This work consists of the file publist.bbx
+%
+%
+% This file adds some additional localizations that are used by
+% the biblatex-publist bibliography style
+%
+% Please send suggestions and bug reports to
+% https://github.com/jspitz/biblatex-publist
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\bpl@version{2.13}
+\def\bpl@rdate{2024/08/21}
+
+\ProvidesFile{british-publist.lbx}[\bpl@rdate\space v.\bpl@version\space
+ biblatex-publist UK English localisation (JSP)]
+
+% Inherit general localization
+\InheritBibliographyExtras{british}
+
+% Localizations
+\DeclareBibliographyStrings{%
+ inherit = {british},
+ parttranslationof = {{partial translation of}{part\adddotspace trans\adddotspace of}},
+ with = {{with}{with}},
+ citations = {{citations}{cit\adddot}},
+ impactfactor = {{impact factor}{JIF}},
+ openaccess:true = {{OpenAccess}{OA}},
+ openaccess:gold = {{OpenAccess (gold)}{OA (gold)}},
+ openaccess:green = {{OpenAccess (green)}{OA (green)}},
+ peerreview:sb = {{single blind peer review}{single blind peer rev\adddot}},
+ peerreview:db = {{double blind peer review}{double blind peer rev\adddot}},
+ peerreview:op = {{open peer review}{open peer rev\adddot}},
+ peerreview:co = {{collaborative peer review}{collab\adddotspace peer rev\adddot}},
+ peerreview:cc = {{cascading peer review}{casc\adddotspace peer rev\adddot}},
+ peerreview:tp = {{third-party peer review}{3rd-party peer rev\adddot}},
+ peerreview:pp = {{post-publication peer review}{post-pub\adddotspace peer rev\adddot}},
+ peerreview:no = {{no peer review}{no peer rev\adddot}},
+ annot:main = {{main author}{main auth\adddot}},
+ annot:corresponding = {{corresponding author}{corr\adddotspace auth\adddot}}
+}
+
+\endinput
+
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/canadian-publist.lbx b/macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/canadian-publist.lbx
new file mode 100644
index 0000000000..288c694155
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/canadian-publist.lbx
@@ -0,0 +1,37 @@
+% canadian-publist.lbx, extra localizations for biblatex-publist
+%
+% 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 2003/12/01 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% This Current Maintainer of this work is Jürgen Spitzmüller.
+%
+% This work consists of the file publist.bbx
+%
+%
+% This file adds some additional localizations that are used by
+% the biblatex-publist bibliography style
+%
+% Please send suggestions and bug reports to
+% https://github.com/jspitz/biblatex-publist
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\bpl@version{2.13}
+\def\bpl@rdate{2024/08/21}
+
+\ProvidesFile{canadian-publist.lbx}[\bpl@rdate\space v.\bpl@version\space
+ biblatex-publist CDN English localisation (JSP)]
+
+% Inherit english
+\InheritBibliographyStrings{english}
+\InheritBibliographyExtras{english}
+
+\endinput
+
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/english-publist.lbx b/macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/english-publist.lbx
new file mode 100644
index 0000000000..a9dc25db89
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/english-publist.lbx
@@ -0,0 +1,58 @@
+% english-publist.lbx, extra localizations for biblatex-publist
+%
+% 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 2003/12/01 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% This Current Maintainer of this work is Jürgen Spitzmüller.
+%
+% This work consists of the file publist.bbx
+%
+%
+% This file adds some additional localizations that are used by
+% the biblatex-publist bibliography style
+%
+% Please send suggestions and bug reports to
+% https://github.com/jspitz/biblatex-publist
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\bpl@version{2.13}
+\def\bpl@rdate{2024/08/21}
+
+\ProvidesFile{english-publist.lbx}[\bpl@rdate\space v.\bpl@version\space
+ biblatex-publist English localisation (JSP)]
+
+% Inherit general localization
+\InheritBibliographyExtras{english}
+
+% Localizations
+\DeclareBibliographyStrings{%
+ inherit = {english},
+ parttranslationof = {{partial translation of}{part\adddotspace trans\adddotspace of}},
+ with = {{with}{with}},
+ citations = {{citations}{cit\adddot}},
+ impactfactor = {{impact factor}{JIF}},
+ openaccess:true = {{OpenAccess}{OA}},
+ openaccess:gold = {{OpenAccess (gold)}{OA (gold)}},
+ openaccess:green = {{OpenAccess (green)}{OA (green)}},
+ peerreview:sb = {{single blind peer review}{single blind peer rev\adddot}},
+ peerreview:db = {{double blind peer review}{double blind peer rev\adddot}},
+ peerreview:op = {{open peer review}{open peer rev\adddot}},
+ peerreview:co = {{collaborative peer review}{collab\adddotspace peer rev\adddot}},
+ peerreview:cc = {{cascading peer review}{casc\adddotspace peer rev\adddot}},
+ peerreview:tp = {{third-party peer review}{3rd-party peer rev\adddot}},
+ peerreview:pp = {{post-publication peer review}{post-pub\adddotspace peer rev\adddot}},
+ peerreview:no = {{no peer review}{no peer rev\adddot}},
+ annot:main = {{main author}{main auth\adddot}},
+ annot:corresponding = {{corresponding author}{corr\adddotspace auth\adddot}}
+}
+
+\endinput
+
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/french-publist.lbx b/macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/french-publist.lbx
new file mode 100644
index 0000000000..e2f982b03c
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/french-publist.lbx
@@ -0,0 +1,58 @@
+% french-publist.lbx, extra localizations for biblatex-publist
+%
+% 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 2003/12/01 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% This Current Maintainer of this work is Jürgen Spitzmüller.
+%
+% This work consists of the file publist.bbx
+%
+%
+% This file adds some additional localizations that are used by
+% the biblatex-publist bibliography style
+%
+% Please send suggestions and bug reports to
+% https://github.com/jspitz/biblatex-publist
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\bpl@version{2.13}
+\def\bpl@rdate{2024/08/21}
+
+\ProvidesFile{french-publist.lbx}[\bpl@rdate\space v.\bpl@version\space
+ biblatex-publist French localisation (JSP)]
+
+% Inherit general localization
+\InheritBibliographyExtras{french}
+
+% Localizations
+\DeclareBibliographyStrings{%
+ inherit = {french},
+ parttranslationof = {{traduction partielle de}{trad\adddotspace part\adddotspace de}},
+ with = {{avec}{avec}},
+ citations = {{citations}{cit\adddot}},
+ impactfactor = {{facteur d'impact}{FI}},
+ openaccess:true = {{libre acc\`es}{libre acc\`es}},
+ openaccess:gold = {{libre acc\`es (dorée)}{libre acc\`es (dorée)}},
+ openaccess:green = {{libre acc\`es (verte)}{libre acc\`es (verte)}},
+ peerreview:sb = {{\'{e}valuation par des pairs anonymis\'{e}s}{\'{e}val\adddotspace par des pairs anon\adddot}},
+ peerreview:db = {{\'{e}valuation par les pairs en double aveugle}{\'{e}val\adddotspace par les pairs en double aveugle}},
+ peerreview:op = {{\'{e}valuation par les pairs ouverte}{\'{e}val\adddotspace par les pairs ouverte}},
+ peerreview:co = {{\'{e}valuation par les pairs collaborative}{\'{e}val\adddotspace par les pairs collab\adddot}},
+ peerreview:cc = {{\'{e}valuation par les pairs en cascade}{\'{e}val\adddotspace par les pairs en cascade}},
+ peerreview:tp = {{\'{e}valuation par des pairs ext\'{e}rieurs}{\'{e}val\adddotspace par des pairs ext\adddot}},
+ peerreview:pp = {{\'{e}valuation par les pairs apr\`{e}s publication}{\'{e}val\adddotspace par les pairs apr\`{e}s pub\adddot}},
+ peerreview:no = {{pas d'\'{e}valuation par les pairs}{pas d'\'{e}val\adddotspace par les pairs}},
+ annot:main = {{auteur principale}{aut\adddotspace princ\adddot}},
+ annot:corresponding = {{auteur correspondant}{aut\adddotspace corr\adddot}}
+}
+
+\endinput
+
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/german-publist.lbx b/macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/german-publist.lbx
new file mode 100644
index 0000000000..e67d8d44b1
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/german-publist.lbx
@@ -0,0 +1,58 @@
+% german-publist.lbx, extra localizations for biblatex-publist
+%
+% 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 2003/12/01 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% This Current Maintainer of this work is Jürgen Spitzmüller.
+%
+% This work consists of the file publist.bbx
+%
+%
+% This file adds some additional localizations that are used by
+% the biblatex-publist bibliography style
+%
+% Please send suggestions and bug reports to
+% https://github.com/jspitz/biblatex-publist
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\bpl@version{2.13}
+\def\bpl@rdate{2024/08/21}
+
+\ProvidesFile{german-publist.lbx}[\bpl@rdate\space v.\bpl@version\space
+ biblatex-publist German localisation (JSP)]
+
+% Inherit general localization
+\InheritBibliographyExtras{german}
+
+% Localizations
+\DeclareBibliographyStrings{%
+ inherit = {german},
+ parttranslationof = {{Teil\"ubersetzung von}{Teil\"ubers\adddotspace von}},
+ with = {{mit}{mit}},
+ citations = {{Zitationen}{Zit\adddot}},
+ impactfactor = {{Impactfaktor}{JIF}},
+ openaccess:true = {{OpenAccess}{OA}},
+ openaccess:gold = {{OpenAccess (gold)}{OA (gold)}},
+ openaccess:green = {{OpenAccess (gr\"un)}{OA (gr\"un)}},
+ peerreview:sb = {{Blindbegutachtung}{Blindbeg\adddot}},
+ peerreview:db = {{Doppelblindbegutachtung}{Doppelblindbeg\adddot}},
+ peerreview:op = {{Offene Begutachtung}{Offene Beg\adddot}},
+ peerreview:co = {{Kollaborative Begutachtung}{Kollab\adddotespace Beg\adddot}},
+ peerreview:cc = {{Cascading-Begutachtung}{Cascading-Beg\adddot}},
+ peerreview:tp = {{Begutachtung durch Dritte}{Beg\adddotspace durch Dritte}},
+ peerreview:pp = {{Post-Publication-Begutachtung}{Post-Pub\adddot-Beg\adddot}},
+ peerreview:no = {{keine Begutachtung}{keine Beg\adddot}},
+ annot:main = {{Hauptautor}{Hauptaut\adddot}},
+ annot:corresponding = {{Korrespondenzautor}{Korr.-aut\adddot}}
+}
+
+\endinput
+
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/naustrian-publist.lbx b/macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/naustrian-publist.lbx
new file mode 100644
index 0000000000..3b202fe459
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/naustrian-publist.lbx
@@ -0,0 +1,37 @@
+% naustrian-publist.lbx, extra localizations for biblatex-publist
+%
+% 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 2003/12/01 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% This Current Maintainer of this work is Jürgen Spitzmüller.
+%
+% This work consists of the file publist.bbx
+%
+%
+% This file adds some additional localizations that are used by
+% the biblatex-publist bibliography style
+%
+% Please send suggestions and bug reports to
+% https://github.com/jspitz/biblatex-publist
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\bpl@version{2.13}
+\def\bpl@rdate{2024/08/21}
+
+\ProvidesFile{naustrian-publist.lbx}[\bpl@rdate\space v.\bpl@version\space
+ biblatex-publist Austrian localisation (JSP)]
+
+% Inherit austrian
+\InheritBibliographyStrings{austrian}
+\InheritBibliographyExtras{austrian}
+
+\endinput
+
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/newzealand-publist.lbx b/macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/newzealand-publist.lbx
new file mode 100644
index 0000000000..504410f851
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/newzealand-publist.lbx
@@ -0,0 +1,58 @@
+% newzealand-publist.lbx, extra localizations for biblatex-publist
+%
+% 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 2003/12/01 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% This Current Maintainer of this work is Jürgen Spitzmüller.
+%
+% This work consists of the file publist.bbx
+%
+%
+% This file adds some additional localizations that are used by
+% the biblatex-publist bibliography style
+%
+% Please send suggestions and bug reports to
+% https://github.com/jspitz/biblatex-publist
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\bpl@version{2.13}
+\def\bpl@rdate{2024/08/21}
+
+\ProvidesFile{newzealand-publist.lbx}[\bpl@rdate\space v.\bpl@version\space
+ biblatex-publist NZ English localisation (JSP)]
+
+% Inherit general localization
+\InheritBibliographyExtras{newzealand}
+
+% Localizations
+\DeclareBibliographyStrings{%
+ inherit = {newzealand},
+ parttranslationof = {{partial translation of}{part\adddotspace trans\adddotspace of}},
+ with = {{with}{with}},
+ citations = {{citations}{cit\adddot}},
+ impactfactor = {{impact factor}{JIF}},
+ openaccess:true = {{OpenAccess}{OA}},
+ openaccess:gold = {{OpenAccess (gold)}{OA (gold)}},
+ openaccess:green = {{OpenAccess (green)}{OA (green)}},
+ peerreview:sb = {{single blind peer review}{single blind peer rev\adddot}},
+ peerreview:db = {{double blind peer review}{double blind peer rev\adddot}},
+ peerreview:op = {{open peer review}{open peer rev\adddot}},
+ peerreview:co = {{collaborative peer review}{collab\adddotspace peer rev\adddot}},
+ peerreview:cc = {{cascading peer review}{casc\adddotspace peer rev\adddot}},
+ peerreview:tp = {{third-party peer review}{3rd-party peer rev\adddot}},
+ peerreview:pp = {{post-publication peer review}{post-pub\adddotspace peer rev\adddot}},
+ peerreview:no = {{no peer review}{no peer rev\adddot}},
+ annot:main = {{main author}{main auth\adddot}},
+ annot:corresponding = {{corresponding author}{corr\adddotspace auth\adddot}}
+}
+
+\endinput
+
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/ngerman-publist.lbx b/macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/ngerman-publist.lbx
new file mode 100644
index 0000000000..185cbe903a
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/ngerman-publist.lbx
@@ -0,0 +1,37 @@
+% ngerman-publist.lbx, extra localizations for biblatex-publist
+%
+% 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 2003/12/01 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% This Current Maintainer of this work is Jürgen Spitzmüller.
+%
+% This work consists of the file publist.bbx
+%
+%
+% This file adds some additional localizations that are used by
+% the biblatex-publist bibliography style
+%
+% Please send suggestions and bug reports to
+% https://github.com/jspitz/biblatex-publist
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\bpl@version{2.13}
+\def\bpl@rdate{2024/08/21}
+
+\ProvidesFile{ngerman-publist.lbx}[\bpl@rdate\space v.\bpl@version\space
+ biblatex-publist German localisation (JSP)]
+
+% Inherit german
+\InheritBibliographyStrings{german}
+\InheritBibliographyExtras{german}
+
+\endinput
+
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/nswissgerman-publist.lbx b/macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/nswissgerman-publist.lbx
new file mode 100644
index 0000000000..a2f1813b38
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/nswissgerman-publist.lbx
@@ -0,0 +1,37 @@
+% nswissgerman-publist.lbx, extra localizations for biblatex-publist
+%
+% 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 2003/12/01 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% This Current Maintainer of this work is Jürgen Spitzmüller.
+%
+% This work consists of the file publist.bbx
+%
+%
+% This file adds some additional localizations that are used by
+% the biblatex-publist bibliography style
+%
+% Please send suggestions and bug reports to
+% https://github.com/jspitz/biblatex-publist
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\bpl@version{2.13}
+\def\bpl@rdate{2024/08/21}
+
+\ProvidesFile{nswissgerman-publist.lbx}[\bpl@rdate\space v.\bpl@version\space
+ biblatex-publist Swiss German localisation (JSP)]
+
+% Inherit swissgerman
+\InheritBibliographyStrings{swissgerman}
+\InheritBibliographyExtras{swissgerman}
+
+\endinput
+
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/swissgerman-publist.lbx b/macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/swissgerman-publist.lbx
new file mode 100644
index 0000000000..9bc6f05118
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-publist/lbx/swissgerman-publist.lbx
@@ -0,0 +1,58 @@
+% swissgerman-publist.lbx, extra localizations for biblatex-publist
+%
+% 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 2003/12/01 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% This Current Maintainer of this work is Jürgen Spitzmüller.
+%
+% This work consists of the file publist.bbx
+%
+%
+% This file adds some additional localizations that are used by
+% the biblatex-publist bibliography style
+%
+% Please send suggestions and bug reports to
+% https://github.com/jspitz/biblatex-publist
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\bpl@version{2.13}
+\def\bpl@rdate{2024/08/21}
+
+\ProvidesFile{swissgerman-publist.lbx}[\bpl@rdate\space v.\bpl@version\space
+ biblatex-publist Swiss German localisation (JSP)]
+
+% Inherit general localization
+\InheritBibliographyExtras{swissgerman}
+
+% Localizations
+\DeclareBibliographyStrings{%
+ inherit = {swissgerman},
+ parttranslationof = {{Teil\"ubersetzung von}{Teil\"ubers\adddotspace von}},
+ with = {{mit}{mit}},
+ citations = {{Zitationen}{Zit\adddot}},
+ impactfactor = {{Impactfaktor}{JIF}},
+ openaccess:true = {{OpenAccess}{OA}},
+ openaccess:gold = {{OpenAccess (gold)}{OA (gold)}},
+ openaccess:green = {{OpenAccess (gr\"un)}{OA (gr\"un)}},
+ peerreview:sb = {{Blindbegutachtung}{Blindbeg\adddot}},
+ peerreview:db = {{Doppelblindbegutachtung}{Doppelblindbeg\adddot}},
+ peerreview:op = {{Offene Begutachtung}{Offene Beg\adddot}},
+ peerreview:co = {{Kollaborative Begutachtung}{Kollab\adddotespace Beg\adddot}},
+ peerreview:cc = {{Cascading-Begutachtung}{Cascading-Beg\adddot}},
+ peerreview:tp = {{Begutachtung durch Dritte}{Beg\adddotspace durch Dritte}},
+ peerreview:pp = {{Post-Publication-Begutachtung}{Post-Pub\adddot-Beg\adddot}},
+ peerreview:no = {{keine Begutachtung}{keine Beg\adddot}},
+ annot:main = {{Hauptautor}{Hauptaut\adddot}},
+ annot:corresponding = {{Korrespondenzautor}{Korr.-aut\adddot}}
+}
+
+\endinput
+
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.bbx
index c7d385b452..d3f31a7a03 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.bbx
@@ -25,8 +25,8 @@
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\def\bpl@version{2.9}
-\def\bpl@rdate{2025/05/09}
+\def\bpl@version{2.13}
+\def\bpl@rdate{2024/08/21}
\ProvidesFile{publist.bbx}[\bpl@rdate\space v.\bpl@version\space
biblatex bibliography style (JSP)]
@@ -61,13 +61,14 @@
\newtoggle{bpl@linktitleissn}
\newtoggle{bpl@linktitleurl}
\newtoggle{bpl@linktitledoi}
+\newtoggle{bpl@citinfo}
\newtoggle{bpl@jifinfo}
\newtoggle{bpl@prinfo}
\toggletrue{bpl@prinfo}
\newtoggle{bpl@oainfo}
\newtoggle{bpl@oainfosimple}
\newif\if@bpl@reversenum\@bpl@reversenumfalse
-
+\def\bpl@annots{}
% Valid options
%
@@ -188,6 +189,9 @@
},
plnumbering.default:n = { global },
plnumbering.usage:n = preamble,
+ % annotations=<csv>
+ % Store author name prefix
+ annotations.tl_set:N = \bpl@annots,
% linktitles=<all|url|doi|isbn|issn|none>
linktitles .multichoice:,
% Link all titles
@@ -233,6 +237,18 @@
\toggletrue{bpl@linktitle}
},
linktitles.default:n = { all },
+ % citinfo=<true|false>
+ % Information about citation numbers
+ citinfo.code:n =
+ {
+ \str_if_eq:nnTF { #1 } { true }
+ {
+ \toggletrue{bpl@citinfo}
+ }{
+ \togglefalse{bpl@citinfo}
+ }
+ },
+ citinfo.default:n = { true },
% jifinfo=<true|false>
% Impact factor information
jifinfo.code:n =
@@ -428,6 +444,7 @@
\DeclareBibliographyOption{plauthorhandling}[omit]{\ExecutePublistOptions{plauthorhandling=#1}}
\DeclareBibliographyOption{nameorder}[family-given]{\ExecutePublistOptions{nameorder=#1}}
\DeclareBibliographyOption{plsorting}[ydt]{\ExecutePublistOptions{plsorting=#1}}
+\DeclareBibliographyOption{annotations}{\ExecutePublistOptions{annotations={#1}}}
\DeclareBibliographyOption{plnumbering}[global]{\ExecutePublistOptions{plnumbering=#1}}
\DeclareBibliographyOption{marginyear}[true]{\ExecutePublistOptions{marginyear=#1}}
@@ -437,6 +454,7 @@
\DeclareBibliographyOption{jifinfo}[true]{\ExecutePublistOptions{jifinfo=#1}}
\DeclareBibliographyOption{oainfo}[simple]{\ExecutePublistOptions{oainfo=#1}}
\DeclareBibliographyOption{prinfo}[true]{\ExecutePublistOptions{prinfo=#1}}
+\DeclareBibliographyOption{citinfo}[true]{\ExecutePublistOptions{citinfo=#1}}
\DeclareBibliographyOption{linktitles}[all]{\ExecutePublistOptions{linktitles={#1}}}% Extra braces needed (multichoice)
@@ -552,16 +570,31 @@
{}{\PackageWarning{biblatex-publist}{Patching refsection failed!}}
}{}
-\newcommand*\GetSectionCount[1][\empty]{%
- \edef\bpl@secno{#1}%
- \ifx\bpl@secno\empty%
- \csnumdef{bpltmprefsection}{\c@refsection}%
- \csuse{bpl@secitems:\bpltmprefsection}%
- \else%
- \csuse{bpl@secitems:#1}%
- \fi%
+% Section count. We use l3 here to split the argument and do calculations
+\ExplSyntaxOn
+
+\int_new:N \l_bpl_sec_cnt_int
+
+\NewDocumentCommand \GetSectionCount { >{\SplitList{,}} o }
+{
+ \IfNoValueTF{#1}{%
+ \csnumdef{bpltmprefsection}{\c@refsection}
+ \ifcsdef{bpl@secitems:\bpltmprefsection}{\csuse{bpl@secitems:\bpltmprefsection}}{}%
+ }{
+ \int_zero:N \l_bpl_sec_cnt_int
+ \ProcessList{#1}{\__bpl_add_section_count}
+ \int_use:N \l_bpl_sec_cnt_int
+ }
+}
+
+\cs_new:Npn \__bpl_add_section_count #1
+{
+ \cs_if_exist:cT {bpl@secitems:#1}
+ { \int_add:Nn \l_bpl_sec_cnt_int { \use:c{bpl@secitems:#1} } }
}
+\ExplSyntaxOff
+
\newcommand*\GetTotalCount{%
\csuse{bpl@items}%
}
@@ -897,7 +930,15 @@
\newrobustcmd{\mkbibdesc}[1]{%
% Print labelnumber as actual number, plus item total
- \number\numexpr\csuse{bpl@itemtotal}+#1+\csuse{bpl@shift@itemtotal}\relax%
+ \edef\bpl@current@item@no{\number\numexpr\csuse{bpl@itemtotal}+#1+\csuse{bpl@shift@itemtotal}\relax}%
+ \bpl@current@item@no%
+ % Store number in pbx file
+ \if@filesw%
+ \protected@write\bpl@bpxfile{}{%
+ \csedef{bpl@itemnumber:\thefield{entrykey}}{\bpl@current@item@no}%
+ \csedef{bpl@itemsec:\thefield{entrykey}}{\therefsection}%
+ }%
+ \fi%
}%
% Way to manually shift the numbering
@@ -963,23 +1004,37 @@
% Print the labelnumber as the total number of entries in the
% current refsection, minus the actual labelnumber, plus one
\ifbool{plnumgroup}{%
- \number\numexpr\csuse{bpl@itemtotal}-#1+1\relax%
+ \xdef\bpl@current@item@no{\number\numexpr\csuse{bpl@itemtotal}-#1+1\relax}%
+ \bpl@current@item@no%
}{%
\ifcsdef{bpl@secitems:\therefsection}{%
- \number\numexpr\csuse{bpl@secitems:\therefsection}-#1+1%
- +\csuse{bpl@shift@itemtotal}\relax%
+ \xdef\bpl@current@item@no{\number\numexpr\csuse{bpl@secitems:\therefsection}-#1+1%
+ +\csuse{bpl@shift@itemtotal}\relax}%
+ \bpl@current@item@no%
}{%
- \number\numexpr\csuse{bpl@itemtotal}-#1+1\relax%
+ \xdef\bpl@current@item@no{\number\numexpr\csuse{bpl@itemtotal}-#1+1\relax}%
+ \bpl@current@item@no%
}%
}%
}{%
% Use decreasing counter
\ifcsdef{bpl@items:\theprevrefsection}{%
- \number\numexpr\csuse{bpl@itemtotal}-#1+1-\csuse{bpl@items:\theprevrefsection}\relax%
+ \xdef\bpl@current@item@no{\number\numexpr\csuse{bpl@itemtotal}-#1+1%
+ -\csuse{bpl@items:\theprevrefsection}\relax}%
+ \bpl@current@item@no%
}{%
- \number\numexpr\csuse{bpl@itemtotal}-#1+1\relax%
+ \xdef\bpl@current@item@no{\number\numexpr\csuse{bpl@itemtotal}-#1+1\relax}%
+ \bpl@current@item@no%
}%
}%
+ % Store number in pbx file
+ \if@filesw%
+ \protected@write\bpl@bpxfile{}{%
+ \csedef{bpl@itemnumber:\thefield{entrykey}}{\bpl@current@item@no}%
+ \csedef{bpl@itemsec:\thefield{entrykey}}{\therefsection}%
+ \csedef{bpl@itemtotal}{\csuse{bpl@itemtotal}}%
+ }%
+ \fi%
}%
\renewrobustcmd{\mkbibsecstart}[1]{%
\setcounter{prevrefsection}{\therefsection}%
@@ -1014,6 +1069,64 @@
\fi
}%
+%
+% Data annotation
+%
+
+\newcommand*\mkbplannot[1]{\textsuperscript{#1}}
+
+% Symbol helpers
+\ExplSyntaxOn
+ \clist_new:N \l_bpl_annot_symbols
+ \cs_new_nopar:Npn \SetAnnotSymbols #1
+ {
+ \clist_gset:Nn \l_bpl_annot_symbols { #1 }
+ }
+ \SetAnnotSymbols
+ { \textasteriskcentered, \textdaggerdbl, \textsection, \textparagraph,
+ \textbardbl, \textdagger, {\textasteriskcentered\textasteriskcentered},
+ {\textdaggerdbl\textdaggerdbl}, {\textdagger\textdagger}
+ }
+ % get symbol by position (int)
+ \cs_new_nopar:Npn \bpl@get@annot@symbol #1
+ {
+ \clist_item:Nn \l_bpl_annot_symbols { #1 }
+ }
+\ExplSyntaxOff
+
+% get symbol by category name
+\NewDocumentCommand\GetAnnotSymbol { s m }{
+ \edef\tmpa{}%
+ \setcounter{annotsymb}{1}%
+ \renewcommand*{\do}[1]{%
+ \ifstrequal{#2}{##1}
+ {\edef\tmpa{\bpl@get@annot@symbol{\theannotsymb}}}%
+ {}%
+ \stepcounter{annotsymb}%
+ }%
+ \expandafter\docsvlist\expandafter{\bpl@annots}%
+ \IfBooleanTF{#1}{\tmpa}{\mkbplannot{\tmpa}}%
+}
+
+% handle the annotations as passed by annotations option
+\AtEndOfPackage{%
+\ifx\bpl@annots\empty\else
+ % helper function for annotations
+ \newcounter{annotsymb}
+ \newcommand*\bplannot{%
+ \setcounter{annotsymb}{1}%
+ \renewcommand*{\do}[1]{%
+ \ifitemannotation{##1}
+ {\mkbplannot{\bpl@get@annot@symbol{\theannotsymb}}}%
+ {}%
+ \stepcounter{annotsymb}%
+ }%
+ \expandafter\docsvlist\expandafter{\bpl@annots}%
+ }
+ % do annotation in family names
+ \renewcommand*{\mkbibnamefamily}[1]{\bplannot #1}
+\fi
+}
%
% New environment for (foreign) reviews
@@ -1055,6 +1168,13 @@
}
%
+% Citation info
+%
+\DeclareFieldFormat{citations}{%
+ \bibstring{citations}\addcolon\addspace#1%
+}
+
+%
% Impact factor
%
\DeclareFieldFormat{impactfactor}{%
@@ -1112,21 +1232,25 @@
% from publist
\defbibcheck{nosubmitted}{%
\edef\tmpps{\bibstring{submitted}}%
- \iffieldequals{pubstate}{\tmpps}{\skipentry}{}%
+ \iffieldequals{pubstate}{\tmpps}{\skipentry}{%
+ \iffieldequalstr{pubstate}{submitted}{\skipentry}{}}%
}
% check to exclude work in preparation
% from publist
\defbibcheck{noprepared}{%
\edef\tmpps{\bibstring{inpreparation}}%
- \iffieldequals{pubstate}{\tmpps}{\skipentry}{}%
+ \iffieldequals{pubstate}{\tmpps}{\skipentry}{%
+ \iffieldequalstr{pubstate}{inpreparation}{\skipentry}{}}%
}
% check to exclude all work which is not (pre-)published
\defbibcheck{onlypublished}{%
\iffieldundef{pubstate}{}{%
\edef\tmpps{\bibstring{prepublished}}%
- \iffieldequals{pubstate}{\tmpps}{}{\skipentry}%
+ \iffieldequals{pubstate}{\tmpps}{%
+ \iffieldequalstr{pubstate}{prepublished}{}{\skipentry}%
+ }{\skipentry}%
}%
}
@@ -1137,11 +1261,36 @@
\edef\tmppss{\bibstring{forthcoming}}%
\iffieldequals{pubstate}{\tmpps}{}{%
\iffieldequals{pubstate}{\tmppss}{}{%
- \skipentry}%
- }%
+ \iffieldequalstr{pubstate}{prepublished}{}{%
+ \iffieldequalstr{pubstate}{forthcoming}{}{%
+ \skipentry}%
+ }%
+ }%
+ }%
}%
}
+% check to exclude all work which is not peer-reviewed
+\defbibcheck{onlypr}{%
+ \iffieldundef{peerreview}{\skipentry}{%
+ \edef\tmppr{\bibstring{no}}%
+ \iffieldequals{peerreview}{\tmpps}{\skipentry}{%
+ \iffieldequalstr{peerreview}{no}{\skipentry}{}%
+ }%
+ }%
+}
+
+% check to exclude all work which *is* peer-reviewed
+\defbibcheck{nopr}{%
+ \iffieldundef{peerreview}{}{%
+ \edef\tmppr{\bibstring{no}}%
+ \iffieldequals{peerreview}{\tmpps}{}{%
+ \iffieldequalstr{peerreview}{no}{}{\skipentry}
+ }%
+ }%
+}
+
+
%
% Count non-plauthors
@@ -1327,6 +1476,26 @@
\iftoggle{isplauthor}%
{% <- TRUE condition
\global\toggletrue{hadplauthor}%
+ \ifx\bpl@annots\empty\else
+ \gdef\bpl@extra@annots{}%
+ \renewcommand*{\do}[1]{%
+ \ifitemannotation{##1}
+ {%
+ \iftoggle{bpl@have@extrainfo}%
+ {\gappto\bpl@extra@annots{\plextrainfosep\ifbibstring{annot:##1}%
+ {\bibstring{annot:##1}}%
+ {##1}}%
+ }%
+ {\gappto\bpl@extra@annots{\ifbibstring{annot:##1}%
+ {\bibstring{annot:##1}}%
+ {##1}}%
+ }%
+ \toggletrue{bpl@have@extrainfo}%
+ }%
+ {}%
+ }%
+ \expandafter\docsvlist\expandafter{\bpl@annots}%
+ \fi%
}% <- end TRUE condition
{% <- FALSE condition
\stepcounter{nonpl#1}%
@@ -1350,7 +1519,7 @@
{\ifdefvoid{\namepartgiven}{}{\mkbibnamegiven{\namepartgiven}\addspace}}%
\ifdefvoid{\namepartprefix}{}{\mkbibnameprefix{\namepartprefix}\addspace}%
\global\togglefalse{plauthorprecedes}%
- \namepartfamily%
+ \mkbibnamefamily{\namepartfamily}%
}%
}% <- end FALSE condition
%
@@ -1689,6 +1858,12 @@
}%
}
+%
+% Extra information
+%
+
+\def\bpl@extra@annots{}
+
\newtoggle{bpl@have@extrainfo}
\renewbibmacro*{addendum+pubstate}{%
@@ -1710,14 +1885,35 @@
not test {\iffieldundef{impactfactor}}
and test {\iftoggle{bpl@jifinfo}}
)
+ or
+ (
+ not test {\iffieldundef{citations}}
+ and test {\iftoggle{bpl@citinfo}}
+ )
+ or
+ (
+ not test {\ifcsvoid{bpl@extra@annots}}
+ )
}{%
\newunit\newblock%
\printtext[plextrainfo]{%
+ \ifx\bpl@extra@annots\empty\else
+ \bpl@extra@annots%
+ \toggletrue{bpl@have@extrainfo}%
+ \fi
\ifboolexpr{ not test {\iffieldundef{peerreview}}
and test {\iftoggle{bpl@prinfo}}
}{%
- \toggletrue{bpl@have@extrainfo}%
+ \iftoggle{bpl@have@extrainfo}{\plextrainfosep}{}%
\printfield{peerreview}%
+ \toggletrue{bpl@have@extrainfo}%
+ }{}%
+ \ifboolexpr{ not test {\iffieldundef{citations}}
+ and test {\iftoggle{bpl@citinfo}}
+ }{%
+ \iftoggle{bpl@have@extrainfo}{\plextrainfosep}{}%
+ \printfield{citations}%
+ \toggletrue{bpl@have@extrainfo}%
}{}%
\ifboolexpr{ not test {\iffieldundef{openaccess}}
and test {\iftoggle{bpl@oainfo}}
@@ -1739,6 +1935,11 @@
%
% l7n
%
+
+\DeclareLanguageMappingSuffix{-publist}
+
+% publist-specific bibstrings
+\NewBibliographyString{citations}
\NewBibliographyString{with}
\NewBibliographyString{parttranslationof}
\NewBibliographyString{impactfactor}
@@ -1753,54 +1954,8 @@
\NewBibliographyString{peerreview:tp}
\NewBibliographyString{peerreview:pp}
\NewBibliographyString{peerreview:no}
-\DefineBibliographyStrings{english}{%
- parttranslationof = {partial translation of},
- with = {with},
- impactfactor = {impact factor},
- openaccess:true = {OpenAccess},
- openaccess:gold = {OpenAccess (gold)},
- openaccess:green = {OpenAccess (green)},
- peerreview:sb = {single blind peer review},
- peerreview:db = {double blind peer review},
- peerreview:op = {open peer review},
- peerreview:co = {collaborative peer review},
- peerreview:cc = {cascading peer review},
- peerreview:tp = {third-party peer review},
- peerreview:pp = {post-publication peer review},
- peerreview:no = {no peer review}
-}
-\DefineBibliographyStrings{french}{%
- parttranslationof = {traduction partielle de},
- with = {avec},
- impactfactor = {facteur d'impact},
- openaccess:true = {libre acc\`es},
- openaccess:gold = {libre acc\`es (dorée)},
- openaccess:green = {libre acc\`es (verte)},
- peerreview:sb = {\'{e}valuation par des pairs anonymis\'{e}s},
- peerreview:db = {\'{e}valuation par les pairs en double aveugle},
- peerreview:op = {\'{e}valuation par les pairs ouverte},
- peerreview:co = {\'{e}valuation par les pairs collaborative},
- peerreview:cc = {\'{e}valuation par les pairs en cascade},
- peerreview:tp = {\'{e}valuation par des pairs ext\'{e}rieurs},
- peerreview:pp = {\'{e}valuation par les pairs apr\`{e}s publication},
- peerreview:no = {pas d'\'{e}valuation par les pairs}
-}
-\DefineBibliographyStrings{german}{%
- parttranslationof = {Teil\"ubersetzung von},
- with = {mit},
- impactfactor = {Impactfaktor},
- openaccess:true = {OpenAccess},
- openaccess:gold = {OpenAccess (gold)},
- openaccess:green = {OpenAccess (gr\"un)},
- peerreview:sb = {Blindbegutachtung},
- peerreview:db = {Doppelblindbegutachtung},
- peerreview:op = {Offene Begutachtung},
- peerreview:co = {Kollaborative Begutachtung},
- peerreview:cc = {Cascading-Begutachtung},
- peerreview:tp = {Begutachtung durch Dritte},
- peerreview:pp = {Post-Publication-Begutachtung},
- peerreview:no = {keine Begutachtung}
-}
+\NewBibliographyString{annot:main}
+\NewBibliographyString{annot:corresponding}
%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.cbx
index bfc159a131..d384445d63 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.cbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.cbx
@@ -26,14 +26,50 @@
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\def\bpl@version{2.9}
-\def\bpl@rdate{2025/05/09}
+\def\bpl@version{2.13}
+\def\bpl@rdate{2024/08/21}
\ProvidesFile{publist.cbx}[\bpl@rdate\space v.\bpl@version\space
biblatex citation style (JSP)]
\RequireCitationStyle{numeric}
+\DeclareCiteCommand{\citesecitem}
+ {\defcounter{maxnames}{999}%
+ \boolfalse{citetracker}%
+ \boolfalse{pagetracker}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{bpl:cite:secitem}}
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
+
+\DeclareCiteCommand*{\citesecitem}
+ {\defcounter{maxnames}{999}%
+ \boolfalse{citetracker}%
+ \boolfalse{pagetracker}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{bpl:cite:secitem}%
+ \usebibmacro{bpl:cite:secitemsec}%
+ }
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
+
+\newbibmacro*{bpl:cite:secitem}{%
+ \ifcsdef{bpl@itemnumber:\thefield{entrykey}}%
+ {\mkbibbrackets{\csuse{bpl@itemnumber:\thefield{entrykey}}}}%
+ {\textbf{\mkbibbrackets{???}}}%
+}
+
+\newcommand*\secitemsecref[1]{%
+ \mkbibparens{\bibstring{section}\addnbspace\ref{refsection:#1}}%
+}
+
+\newbibmacro*{bpl:cite:secitemsec}{%
+ \ifcsdef{bpl@itemsec:\thefield{entrykey}}%
+ {\addspace\secitemsecref{\csuse{bpl@itemsec:\thefield{entrykey}}}}%
+ {}%
+}
+
\DeclareCiteCommand{\citeitem}
{\defcounter{maxnames}{999}%
\boolfalse{citetracker}%
@@ -55,6 +91,28 @@
\printtext[labelnumberwidth]{\mkrefdesc{\thefield{labelnumber}}}%
}
+\newcommand*\itemrangesep{\bibrangedash}
+
+\newcommand*\citeitemrange[2]{%
+ \citeitem{#1}\itemrangesep\citeitem{#2}%
+}
+
+\NewDocumentCommand\citesecitemrange{s m m}
+{%
+ \IfBooleanTF{#1}%
+ {\ifcsdef{bpl@itemsec:#2}%
+ {\ifcsdef{bpl@itemsec:#3}%
+ {\ifcsequal{bpl@itemsec:#2}{bpl@itemsec:#3}%
+ {\citesecitem{#2}\itemrangesep}%
+ {\citesecitem*{#2}\,\itemrangesep\,}%
+ \citesecitem*{#3}}%
+ {\citesecitem*{#2}\itemrangesep\citesecitem*{#3}}%
+ }%
+ {\citesecitem{#2}\itemrangesep\citesecitem*{#3}}%
+ }%
+ {\citesecitem{#2}\itemrangesep\citesecitem{#3}}%
+}
+
% Manual way to adjust numbering
\csdef{bpl@secstartshift}{0}
\newcommand*\shiftciteitem[1]{\csdef{bpl@secstartshift}{#1}}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.dbx b/macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.dbx
index d43f60a465..27cb4068f5 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.dbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.dbx
@@ -1,5 +1,5 @@
% publist.dbx, biblatex data model specification for the biblatex-publist
-% package, version 2.9 (2025/05/09).
+% package, version 2.13 (2024/08/21).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
@@ -22,11 +22,13 @@
% Add peerreview and openaccess (literal) field
\DeclareDatamodelFields[type=field, datatype=literal]{
+ citations,
impactfactor,
openaccess,
peerreview}
\DeclareDatamodelEntryfields{
+ citations,
impactfactor,
openaccess,
peerreview}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-sbl/README.md b/macros/latex/contrib/biblatex-contrib/biblatex-sbl/README.md
index 9e24dd6d71..4127cbf6dd 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-sbl/README.md
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-sbl/README.md
@@ -50,7 +50,7 @@ The following packages are required:
## Licence
```
-Copyright 2015-2022 David Purton
+Copyright 2015-2024 David Purton
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either version 1.3
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-sbl/biblatex-sbl.def b/macros/latex/contrib/biblatex-contrib/biblatex-sbl/biblatex-sbl.def
index cd3217de21..cb422456bf 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-sbl/biblatex-sbl.def
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-sbl/biblatex-sbl.def
@@ -15,8 +15,8 @@
% VERSION STRINGS
% ------------------------------------------------------------------
-\def\sbl@abx@date{2022/06/18}
-\def\sbl@abx@version{0.14}
+\def\sbl@abx@date{2024/06/09}
+\def\sbl@abx@version{0.15}
\def\sbl@abx@bbxid{\sbl@abx@date\space v\sbl@abx@version\space biblatex-sbl bibliography style (DCP)}
\def\sbl@abx@cbxid{\sbl@abx@date\space v\sbl@abx@version\space biblatex-sbl citation style (DCP)}
\def\sbl@abx@lbxid{\sbl@abx@date\space v\sbl@abx@version\space biblatex-sbl localization (DCP)}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-sbl/biblatex-sbl.pdf b/macros/latex/contrib/biblatex-contrib/biblatex-sbl/biblatex-sbl.pdf
index adeb515305..f25b34c868 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-sbl/biblatex-sbl.pdf
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-sbl/biblatex-sbl.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-sbl/sbl-paper.pdf b/macros/latex/contrib/biblatex-contrib/biblatex-sbl/sbl-paper.pdf
index c6ef3cc58a..dd5cf607a6 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-sbl/sbl-paper.pdf
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-sbl/sbl-paper.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-sbl/sbl.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-sbl/sbl.cbx
index 73007e67e6..afaa5b1767 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-sbl/sbl.cbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-sbl/sbl.cbx
@@ -395,7 +395,8 @@
{\usebibmacro{textcite:init}%
\gdef\cbx@savedkeys{}%
\DeferNextCitekeyHook}
- {\ifthenelse{\iffirstcitekey\AND\value{multicitetotal}>0}
+ {\ifboolexpr{test {\iffirstcitekey}
+ and test {\ifnumgreater{\value{multicitetotal}}{0}}}
{\protected@xappto\cbx@footcite@args{%
(\thefield{multiprenote})(\thefield{multipostnote})}}
{}%
diff --git a/macros/latex/contrib/bmstu-iu8/README.md b/macros/latex/contrib/bmstu-iu8/README.md
index 3deb2658c2..485014041c 100644
--- a/macros/latex/contrib/bmstu-iu8/README.md
+++ b/macros/latex/contrib/bmstu-iu8/README.md
@@ -1,6 +1,6 @@
# IU8 package
-Version: v1.2 (released 13.06.2021).
+Version: v1.3 (released 17.08.2024).
This package consist of class file and style files for writing
reports at the IU8 department of IU faculty of BMSTU
diff --git a/macros/latex/contrib/bmstu-iu8/bmstu-example.pdf b/macros/latex/contrib/bmstu-iu8/bmstu-example.pdf
index 26654efeff..b0d4cc2ea7 100644
--- a/macros/latex/contrib/bmstu-iu8/bmstu-example.pdf
+++ b/macros/latex/contrib/bmstu-iu8/bmstu-example.pdf
Binary files differ
diff --git a/macros/latex/contrib/bmstu-iu8/bmstu-iu8/BMSTU-IU8.cls b/macros/latex/contrib/bmstu-iu8/bmstu-iu8/BMSTU-IU8.cls
index e50cde4c75..17c168f9f2 100644
--- a/macros/latex/contrib/bmstu-iu8/bmstu-iu8/BMSTU-IU8.cls
+++ b/macros/latex/contrib/bmstu-iu8/bmstu-iu8/BMSTU-IU8.cls
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{BMSTU-IU8}[2020/06/01 IU8 class]
+\ProvidesClass{BMSTU-IU8}[2024/08/17 IU8 class]
\LoadClass{article}
@@ -26,28 +26,28 @@
\RequirePackage[russian]{babel}
\RequirePackage{hyphsubst}
-\RequirePackage{01-IU8-base}
-\RequirePackage{02-IU8-construction}
-\RequirePackage{03-IU8-numbering}
-\RequirePackage{04-IU8-section-numbering}
-\RequirePackage{05-IU8-figures}
-\RequirePackage{06-IU8-tables}
-\RequirePackage{07-IU8-footnotes}
-\RequirePackage{08-IU8-formulas}
-\RequirePackage{09-IU8-cites}
-\RequirePackage{10-IU8-titlepage}
-\RequirePackage{11-IU8-performers}
-\RequirePackage{12-IU8-abstract}
-\RequirePackage{13-IU8-contents}
-\RequirePackage{14-IU8-terms-and-definitions}
-\RequirePackage{15-IU8-list-of-abbreviations}
-\RequirePackage{16-IU8-references}
-\RequirePackage{17-IU8-appendices}
-\RequirePackage{18-IU8-extra}
-\RequirePackage{19-IU8-counters}
-\RequirePackage{20-IU8-listing}
-\RequirePackage{21-IU8-math}
-\RequirePackage{22-IU8-algorithms}
+\RequirePackage{IU8-01-base}
+\RequirePackage{IU8-02-construction}
+\RequirePackage{IU8-03-numbering}
+\RequirePackage{IU8-04-section-numbering}
+\RequirePackage{IU8-05-figures}
+\RequirePackage{IU8-06-tables}
+\RequirePackage{IU8-07-footnotes}
+\RequirePackage{IU8-08-formulas}
+\RequirePackage{IU8-09-cites}
+\RequirePackage{IU8-10-titlepage}
+\RequirePackage{IU8-11-performers}
+\RequirePackage{IU8-12-abstract}
+\RequirePackage{IU8-13-contents}
+\RequirePackage{IU8-14-terms-and-definitions}
+\RequirePackage{IU8-15-list-of-abbreviations}
+\RequirePackage{IU8-16-references}
+\RequirePackage{IU8-17-appendices}
+\RequirePackage{IU8-18-extra}
+\RequirePackage{IU8-19-counters}
+\RequirePackage{IU8-20-listing}
+\RequirePackage{IU8-21-math}
+\RequirePackage{IU8-22-algorithms}
\RequirePackage{csquotes}
diff --git a/macros/latex/contrib/bmstu-iu8/bmstu-iu8/DEPENDS.txt b/macros/latex/contrib/bmstu-iu8/bmstu-iu8/DEPENDS.txt
new file mode 100644
index 0000000000..8176df3e7e
--- /dev/null
+++ b/macros/latex/contrib/bmstu-iu8/bmstu-iu8/DEPENDS.txt
@@ -0,0 +1,38 @@
+algorithm2e
+amscls
+anyfontsize
+babel
+bookmark
+tools
+caption
+chngcntr
+csquotes
+enumitem
+fancyhdr
+float
+geometry
+glossaries
+glossaries-extra
+graphics
+oberdiek
+lastpage
+lineno
+listings
+multirow
+nowidow
+koma-script
+setspace
+fontspec
+stackengine
+tabto-ltx
+titlesec
+totcount
+ulem
+xassoccnt
+xcolor
+xltabular
+xstring
+ltablex # Here (and below) go some dependencies of dependencies
+biblatex
+ifoddpage
+relsize
diff --git a/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/01-IU8-base.sty b/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-01-base.sty
index f3df2d3f5e..c51f336b7c 100644
--- a/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/01-IU8-base.sty
+++ b/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-01-base.sty
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{01-IU8-base}[2021/03/21 v1.2 Общие требования]
+\ProvidesPackage{IU8-01-base}[2024/08/17 v1.3 Общие требования]
% 6.1.1 Изложение текста и оформление отчета выполняют в соответствии с
% требованиями настоящего стандарта. Страницы текста отчета о НИР и включенные в
diff --git a/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/02-IU8-construction.sty b/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-02-construction.sty
index b94615c003..0c684a5700 100644
--- a/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/02-IU8-construction.sty
+++ b/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-02-construction.sty
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{02-IU8-construction}[2021/03/21 v1.2 Построение отчета]
+\ProvidesPackage{IU8-02-construction}[2024/08/17 v1.3 Построение отчета]
% 6.2.1 Наименования структурных элементов отчета:
% "СПИСОК ИСПОЛНИТЕЛЕЙ", % у нас не используется
diff --git a/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/03-IU8-numbering.sty b/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-03-numbering.sty
index b8696c01f3..3d0bb94e9f 100644
--- a/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/03-IU8-numbering.sty
+++ b/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-03-numbering.sty
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{03-IU8-numbering}[2021/03/21 v1.2 Нумерация страниц отчета]
+\ProvidesPackage{IU8-03-numbering}[2024/08/17 v1.3 Нумерация страниц отчета]
% 6.3.1 Страницы отчета следует нумеровать арабскими цифрами, соблюдая сквозную
% нумерацию по всему тексту отчета, включая приложения. Номер страницы
diff --git a/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/04-IU8-section-numbering.sty b/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-04-section-numbering.sty
index 839c34816e..af812f5855 100644
--- a/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/04-IU8-section-numbering.sty
+++ b/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-04-section-numbering.sty
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{04-IU8-section-numbering}[2021/03/21 v1.2 Нумерация разделов, подразделов, пунктов, подпунктов и книг отчета]
+\ProvidesPackage{IU8-04-section-numbering}[2024/08/17 v1.3 Нумерация разделов, подразделов, пунктов, подпунктов и книг отчета]
% 6.4.1 Разделы должны иметь порядковые номера в пределах всего отчета,
% обозначенные арабскими цифрами без точки и расположенные с абзацного отступа.
@@ -10,7 +10,7 @@
% подразделы, могут состоять из одного или нескольких пунктов.
% Это настройка по умолчанию, так что её не меняю
-% Про абзацный отступ учетно в 02-IU8-construction
+% Про абзацный отступ учетно в IU8-02-construction
% 6.4.2 Если отчет не имеет подразделов, то нумерация пунктов в нем должна
% быть в пределах каждого раздела и номер пункта должен состоять из номеров
diff --git a/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/05-IU8-figures.sty b/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-05-figures.sty
index 7210da5245..4ccda32cda 100644
--- a/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/05-IU8-figures.sty
+++ b/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-05-figures.sty
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{05-IU8-figures}[2021/03/21 v1.2 Иллюстрации]
+\ProvidesPackage{IU8-05-figures}[2024/08/17 v1.3 Иллюстрации]
% 6.5.1 Иллюстрации (чертежи, графики, схемы, компьютерные распечатки, диаграммы,
% фотоснимки) следует располагать в отчете непосредственно после текста отчета,
diff --git a/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/06-IU8-tables.sty b/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-06-tables.sty
index eedb9d94df..705924bd99 100644
--- a/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/06-IU8-tables.sty
+++ b/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-06-tables.sty
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{06-IU8-tables}[2021/03/21 v1.2 Таблицы]
+\ProvidesPackage{IU8-06-tables}[2024/08/17 v1.3 Таблицы]
% Пакеты, которые скорее всего пригодятся
\RequirePackage{tabularx}
diff --git a/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/07-IU8-footnotes.sty b/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-07-footnotes.sty
index 689cdd0337..9efd173fb0 100644
--- a/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/07-IU8-footnotes.sty
+++ b/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-07-footnotes.sty
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{07-IU8-footnotes}[2021/03/21 v1.2 Примечания и сноски]
+\ProvidesPackage{IU8-07-footnotes}[2024/08/17 v1.3 Примечания и сноски]
% 6.7.1 Примечания приводят в отчете, если необходимы пояснения или справочные
% данные к содержанию текста, таблиц или графического материала.
diff --git a/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/08-IU8-formulas.sty b/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-08-formulas.sty
index aa65770e77..cfe0b98dbd 100644
--- a/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/08-IU8-formulas.sty
+++ b/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-08-formulas.sty
@@ -1,5 +1,5 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{08-IU8-formulas}[2021/03/21 v1.2 Формулы]
+\ProvidesPackage{IU8-08-formulas}[2024/08/17 v1.3 Формулы]
% Настройки по умолчанию в целом соответствуют ГОСТ \ No newline at end of file
diff --git a/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/09-IU8-cites.sty b/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-09-cites.sty
index 651f2a3e4e..6d070074b3 100644
--- a/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/09-IU8-cites.sty
+++ b/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-09-cites.sty
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{09-IU8-cites}[2021/03/21 v1.2 Ссылки]
+\ProvidesPackage{IU8-09-cites}[2024/08/17 v1.3 Ссылки]
% 6.9.1 В отчете о НИР рекомендуется приводить ссылки на использованные
% источники. При нумерации ссылок на документы, использованные при составлении
diff --git a/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/10-IU8-titlepage.sty b/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-10-titlepage.sty
index e9834bc07b..97fc11ecc5 100644
--- a/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/10-IU8-titlepage.sty
+++ b/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-10-titlepage.sty
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{10-IU8-titlepage}[2021/03/21 v1.2 Титульный лист]
+\ProvidesPackage{IU8-10-titlepage}[2024/08/17 v1.3 Титульный лист]
% Поля для заполнения для ВКР
\def\student#1{\gdef\@student{#1}}
diff --git a/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/11-IU8-performers.sty b/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-11-performers.sty
index 14b659de63..e628023df4 100644
--- a/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/11-IU8-performers.sty
+++ b/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-11-performers.sty
@@ -1,5 +1,5 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{11-IU8-performers}[2021/03/21 v1.2 Список исполниетелей]
+\ProvidesPackage{IU8-11-performers}[2024/08/17 v1.3 Список исполниетелей]
% Т.к. у нас это не используется, я оставляю это пустымы \ No newline at end of file
diff --git a/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/12-IU8-abstract.sty b/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-12-abstract.sty
index 946d3360bc..c1e1a6dc86 100644
--- a/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/12-IU8-abstract.sty
+++ b/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-12-abstract.sty
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{12-IU8-abstract}[2021/03/21 v1.2 Реферат]
+\ProvidesPackage{IU8-12-abstract}[2024/08/17 v1.3 Реферат]
% 6.12.1 Сведения об общем объеме отчета, количестве книг отчета, иллюстраций,
% таблиц, использованных источников, приложений являются первой компонентой
diff --git a/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/13-IU8-contents.sty b/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-13-contents.sty
index bf51955ac0..3bd4e67716 100644
--- a/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/13-IU8-contents.sty
+++ b/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-13-contents.sty
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{13-IU8-contents}[2021/03/21 v1.2 Содержание]
+\ProvidesPackage{IU8-13-contents}[2024/08/17 v1.3 Содержание]
% Каждую запись содержания оформляют как отдельный абзац, выровненный влево.
% Номера страниц указывают выровненными по правому краю поля и соединяют
diff --git a/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/14-IU8-terms-and-definitions.sty b/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-14-terms-and-definitions.sty
index e3e15e2d2e..8378ff2826 100644
--- a/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/14-IU8-terms-and-definitions.sty
+++ b/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-14-terms-and-definitions.sty
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{14-IU8-terms-and-definitions}[2021/03/21 v1.2 Содержание]
+\ProvidesPackage{IU8-14-terms-and-definitions}[2024/08/17 v1.3 Содержание]
\RequirePackage[
acronym,
diff --git a/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/15-IU8-list-of-abbreviations.sty b/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-15-list-of-abbreviations.sty
index d8345fdd1f..49a5aeb8aa 100644
--- a/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/15-IU8-list-of-abbreviations.sty
+++ b/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-15-list-of-abbreviations.sty
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{15-IU8-list-of-abbreviations}[2021/03/21 v1.2 Содержание]
+\ProvidesPackage{IU8-15-list-of-abbreviations}[2024/08/17 v1.3 Содержание]
\RequirePackage[abbreviations]{glossaries-extra}
diff --git a/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/16-IU8-references.sty b/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-16-references.sty
index 7a51a9235a..7e7fd9d347 100644
--- a/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/16-IU8-references.sty
+++ b/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-16-references.sty
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{16-IU8-references}[2021/03/21 v1.2 Список использованных источников]
+\ProvidesPackage{IU8-16-references}[2024/08/17 v1.3 Список использованных источников]
% Сведения об источниках следует располагать в порядке появления ссылок на
% источники в тексте отчета и нумеровать арабскими цифрами с точкой и печатать
@@ -16,3 +16,6 @@
\addto{\captionsrussian}{%
\renewcommand{\contentsname}{СОДЕРЖАНИЕ}
}
+
+% Специально изменим шрифт для URL, чтобы он соответсвовал ГОСТ и остальному тексту документа
+\renewcommand{\UrlFont}{\normalfont}
diff --git a/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/17-IU8-appendices.sty b/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-17-appendices.sty
index 025e70b5c8..e89c637ec6 100644
--- a/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/17-IU8-appendices.sty
+++ b/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-17-appendices.sty
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{17-IU8-appendices}[2021/03/21 v1.2 Приложения]
+\ProvidesPackage{IU8-17-appendices}[2024/08/17 v1.3 Приложения]
\newcommand{\appendixsection}[1]{
\stepcounter{apps}
diff --git a/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/18-IU8-extra.sty b/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-18-extra.sty
index 6fb1570340..44e932a3e9 100644
--- a/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/18-IU8-extra.sty
+++ b/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-18-extra.sty
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{18-IU8-extra}[2021/03/21 v1.2 Разные улучшения]
+\ProvidesPackage{IU8-18-extra}[2024/08/17 v1.3 Разные улучшения]
\RequirePackage{graphicx}
diff --git a/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/19-IU8-counters.sty b/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-19-counters.sty
index 991f9f4d43..c5e7d80136 100644
--- a/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/19-IU8-counters.sty
+++ b/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-19-counters.sty
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-\ProvidesPackage{19-IU8-counters}[2021/03/21 v1.2 Счётчики]
+\ProvidesPackage{IU8-19-counters}[2024/08/17 v1.3 Счётчики]
\RequirePackage{calc}
\RequirePackage{xassoccnt}
diff --git a/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/20-IU8-listing.sty b/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-20-listing.sty
index c90194a1d2..22dd68b97b 100644
--- a/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/20-IU8-listing.sty
+++ b/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-20-listing.sty
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-\ProvidesPackage{20-IU8-listing}[2021/03/21 v1.2 Листинги]
+\ProvidesPackage{IU8-20-listing}[2024/08/17 v1.3 Листинги]
\RequirePackage{listings}
\RequirePackage{xcolor}
diff --git a/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/21-IU8-math.sty b/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-21-math.sty
index b60a4fd6d2..b72be1370c 100644
--- a/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/21-IU8-math.sty
+++ b/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-21-math.sty
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-\ProvidesPackage{21-IU8-math}[2021/03/21 v1.2 Математика]
+\ProvidesPackage{IU8-21-math}[2024/08/17 v1.3 Математика]
\RequirePackage{amsthm}
\theoremstyle{definition}
diff --git a/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/22-IU8-algorithms.sty b/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-22-algorithms.sty
index f3fdcee25e..5cf8831462 100644
--- a/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/22-IU8-algorithms.sty
+++ b/macros/latex/contrib/bmstu-iu8/bmstu-iu8/styles/IU8-22-algorithms.sty
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-\ProvidesPackage{22-IU8-algorithms}[2021/03/21 v1.2 Алгоритмы]
+\ProvidesPackage{IU8-22-algorithms}[2024/08/17 v1.3 Алгоритмы]
\RequirePackage[linesnumbered,boxruled]{algorithm2e}
\SetAlCapSty{}
diff --git a/macros/latex/contrib/bxpdfver/LICENSE b/macros/latex/contrib/bxpdfver/LICENSE
index b6b8b92330..f6ebffefca 100644
--- a/macros/latex/contrib/bxpdfver/LICENSE
+++ b/macros/latex/contrib/bxpdfver/LICENSE
@@ -1,6 +1,6 @@
The MIT License
-Copyright (c) 2014-2022 Takayuki YATO (aka. "ZR")
+Copyright (c) 2014-2024 Takayuki YATO (aka. "ZR")
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/macros/latex/contrib/bxpdfver/README-ja.md b/macros/latex/contrib/bxpdfver/README-ja.md
index 0f0955d378..ea1a7e4ee1 100644
--- a/macros/latex/contrib/bxpdfver/README-ja.md
+++ b/macros/latex/contrib/bxpdfver/README-ja.md
@@ -43,16 +43,20 @@ bxpdfver パッケージ
* `objcompress`(既定): オブジェクトストリームの使用を抑止しない。
* ドライバオプション: 以下の通り。なお、後述の「ドライバ指定」の
節も参照されたい。
- + PDF 出力のエンジンの場合は、既定で適切なドライバが選択される
+ + LaTeX の新 PDF マネジメントが有効化されている場合は、自動的に
+ “latex-pdf”モードに切り替わる。ドライバオプションは不要である。
+ + PDF 出力のエンジンの場合は、自動的に適切なドライバが選択される
のでドライバオプションは不要である。
+ `dvipdfmx`: dvipdfmx 用のドライバを指定する。
+ `nodvidriver`/`disabled`: 全ての機能を無効化する。
※この場合 `lenient+` が既定になる。
+ + `ignorepdfmanagement`: “latex-pdf”モードへの切替を抑止する。
* `lenient`: サポートしない機能に対するエラーを警告に格下げする。
* `lenient+`: サポートしない機能に対するエラーを完全に抑止する。
* `nolenient`(既定): `lenient(+)` の否定。
* `new-dvipdfmx`: dvipdfmx に対するバージョン検査を省略し、常に最新の
- バージョンであると仮定する。
+ バージョンであると仮定する。
+ ※ドライバオプションが `dvipdfmx` に変更される。
`compress`、`objcompress` はこのパッケージによる抑止を行わないという意味
であり、既に抑止されている場合にそれを再び有効化するものではない。
@@ -72,41 +76,61 @@ bxpdfver パッケージ
* `\preservepdfdestinations`: PDF 目的地(PDF destination)の名前の
短縮を抑止し、TeX 文書で指定された名前を用いる。異なる PDF 文書間で
のリンクを正常に機能させるために必要である。
+ * `\setpdfpkresolution{<解像度>}`: PDF に埋め込まれる PK フォントの
+ 解像度(dpi 値)を指定する。
### ドライバ指定に関する補足
\ Drivers (engines) pdfTeX dvipdfmx
- Features / LuaTeX / XeTeX others
- --------------------------- --------- --------- ------
- \setpdfversion Yes Yes No
- \suppresspdfcompression Yes Maybe(*2) No
- \suppresspdfobjcompression Yes Maybe(*2) No
+ Features / LuaTeX / XeTeX latex-pdf
+ --------------------------- --------- --------- ---------
+ \setpdfversion Yes Yes Yes
+ \suppresspdfcompression Yes Maybe(*2) Yes(*4)
+ \suppresspdfobjcompression Yes Maybe(*2) Yes(*4)
\setpdfdecimaldigits Yes Maybe(*2) No
\preservepdfdestinations No-op(*1) Maybe(*2) No
+ \setpdfpkresolution Yes Maybe(*3) No
1. pdfTeX/LuaTeX では PDF 目的地の名前が短縮されるることはない。つまり
`\preservepdfdestinations` は常に有効になっていると見なせる。
- 2. これらの機能を使用するためには、(x)dvipdfmx のバージョンが 20160307
- 以上である必要がある。
- - バージョン判定のために kpsewhich と extractbb の起動を利用する
- ため、少なくともこれらのプログラムについて、シェルエスケープが
- 許可されている必要がある。
- - dvipdfmx のバージョン情報は補助ファイル(.aux)中にキャッシュ
- される。このため、何か状況が変わった場合は、一旦補助ファイルを
- 削除する必要が生じる。
+ 2. (x)dvipdfmx のバージョンが 20160307 以上である必要がある。
+ 3. (x)dvipdfmx のバージョンが 20211016 以上である必要がある。
+ 4. `\suppresspdfcompression` と `\suppresspdfobjcompression` については
+ 一方を実行すると他方も自動的に有効になる。l3pdf モジュールで片方のみ
+ を有効化することはサポートされないからである。
+
+dvipdfmx のバージョン判定について:
+
+ - 必要が生じた場合にのみバージョン判定が実行される。
+ - `new-dvipdfmx` オプションを指定した場合は、バージョン判定を全て
+ 省略した上で、最新の dvipdfmx を使用していると見なす。
+ - バージョン判定のために kpsewhich と extractbb の起動を利用するため、
+ 少なくともこれらのプログラムについて、シェル実行が許可されている
+ 必要がある。
+ - バージョン判定は少し時間がかかるため、dvipdfmx のバージョン情報は
+ 補助ファイル(.aux)中にキャッシュされる。このため、何か状況が変化
+ した場合は、一旦補助ファイルを削除する必要が生じる。
以下のことにも注意されたい。
- * 使用不可能な機能を使おうと試みるとエラーが発生する。
+ * 使用不可能な機能を使おうと試みるとエラーが発生する。
+ ※`lenient` オプションが指定された場合はエラーが警告に変更され、
+ また `lenient+` が指定された場合はエラーも警告も抑止される。
* `dvips` 等の“全く対応していない”若干のドライバオプションを認識
する。この場合、全ての機能の呼出でエラーが発生する。
- * `nodvidriver` は特殊で、これを指定した場合は、どの機能の呼出でも
- エラーは発生しないが、全く何の動作も行わない。
+ * `nodvidriver` オプションは既定で `lenient+` を指定する。つまり、
+ どの機能の呼出でもエラーは発生しないが、全く何の動作も行わない。
更新履歴
--------
+ * Version 0.8 ‹2024/08/03›
+ - カーネルの新 PDF マネジメントが有効な場合にも一部の機能が使える
+ ようにする(“latex-pdf”モード)。
+ * Version 0.7 ‹2024/07/24›
+ - `\setpdfpkresolution` を(正式に)サポート。(dvipdfmx/XeTeX
+ でも使用可能になった。)
* Version 0.6 ‹2022/04/28›
- `lenient+`/`nolenient` オプションを追加。
- 非サポートのドライバでも読込自体はエラーにしない。
diff --git a/macros/latex/contrib/bxpdfver/README.md b/macros/latex/contrib/bxpdfver/README.md
index 332b6215f1..1b78b5da1c 100644
--- a/macros/latex/contrib/bxpdfver/README.md
+++ b/macros/latex/contrib/bxpdfver/README.md
@@ -44,11 +44,16 @@ The available options are:
* `noobjcompress`: Suppresses use of object streams.
* `objcompress` (default): Does not suppress use of object streams.
* Driver options: As below:
+ + When the new PDF management of LaTeX is activated, the package
+ will automatically switch to “latex-pdf” mode. You need not
+ give driver options.
+ When using a PDF-output engine, you need not give driver options
since the appropriate one is auto-detected.
+ `dvipdfmx`: Uses dvipdfmx driver.
+ `nodvidriver`/`disabled`: Disables all functions of the package.
NB. This option sets `lenient+` by default.
+ * `ignorepdfmanagement`: Avoids switching to “latex-pdf” mode, even
+ when the new PDF management of LaTeX is activated.
* `lenient`: Turns the errors for unsupported features into warnings.
* `lenient+`: Suppreseses the errors for unsupported features.
* `nolenient`: Negation of `lenient(+)`.
@@ -72,40 +77,61 @@ when it is already suppressed by other means.
* `\preservepdfdestinations`: Stops shortening the PDF destination
names and uses the original names given in the LaTeX documents. This
is necessary for cross-document links to work correctly.
+ * `\setpdfpkresolution{<resolution>}`: Sets the resolution (in dpi)
+ of the PK fonts embedded in the PDF file.
### NOTE ON DRIVERS
\ Drivers (engines) pdfTeX dvipdfmx
- Features / LuaTeX / XeTeX others
- --------------------------- --------- --------- ------
- \setpdfversion Yes Yes No
- \suppresspdfcompression Yes Maybe(*2) No
- \suppresspdfobjcompression Yes Maybe(*2) No
+ Features / LuaTeX / XeTeX latex-pdf
+ --------------------------- --------- --------- ---------
+ \setpdfversion Yes Yes Yes
+ \suppresspdfcompression Yes Maybe(*2) Yes(*4)
+ \suppresspdfobjcompression Yes Maybe(*2) Yes(*4)
\setpdfdecimaldigits Yes Maybe(*2) No
\preservepdfdestinations No-op(*1) Maybe(*2) No
+ \setpdfpkresolution Yes Maybe(*3) No
1. In pdfTeX and LuaTeX, PDF destination names are never shortened;
that is, it can be thought as if `\preservepdfdestinations` were
always in effect.
2. These features are available only when the version of (x)dvipdfmx
- is 20160307 or later. Also shell escape must be accepted (with or
- without restriction) so that `kpsewhich` and `extractbb` will be
- allowed to run, because those programs are used in order to detect
- the dvipdfmx version.
+ is 20160307 or later.
+ 3. These features are available only when the version of (x)dvipdfmx
+ is 20211016 or later.
+ 4. As for '\suppresspdfcompression' and '\suppresspdfobjcompression',
+ when one of them is executed, the other will be activated. It is
+ because l3pdf module does not support activating only one of them.
+
+On the detection of dvipdfmx version:
+
+ * Shell escape must be accepted (with or without restriction) so that
+ `kpsewhich` and `extractbb` will be allowed to run, because those
+ programs are used in order to detect the dvipdfmx version.
+ * The detection process is slow, so the result is cached in the
+ auxiliary file (`.aux`). When the environment is changed, you need
+ to delete the auxiliary file.
More notices:
- * If you try to use unavailable features, an error will occur.
+ * If you try to use unavailable features, an error will occur.
+ NB. Option `lenient` turns the errors into warnings, and `lenient+`
+ completely suppresses the errors.
* The package recognizes some “unsupported” driver options such as
`dvips`; when such drivers are used, use of any feature will cause
an error.
- * The use of `nodvidriver` sets `lenient*` by default; use of any
+ * The use of `nodvidriver` sets `lenient+` by default; use of any
feature will do nothing (nor issue an error).
REVISION HISTORY
----------------
+ * Version 0.8 ‹2024/08/03›
+ - Support some features even when the new PDF management of the
+ LaTeX kernel is activated (“latex-pdf” mode).
+ * Version 0.7 ‹2024/07/24›
+ - Support (officialy) `\setpdfpkresolution`.
* Version 0.6 ‹2022/04/28›
- Added the `lenient+` and `nolenient` options.
* Version 0.5a ‹2021/02/14›
diff --git a/macros/latex/contrib/bxpdfver/bxpdfver.sty b/macros/latex/contrib/bxpdfver/bxpdfver.sty
index ccc9825f6f..296774068c 100644
--- a/macros/latex/contrib/bxpdfver/bxpdfver.sty
+++ b/macros/latex/contrib/bxpdfver/bxpdfver.sty
@@ -1,7 +1,7 @@
%%
%% This is file 'bxpdfver.sty'.
%%
-%% Copyright (c) 2014-2022 Takayuki YATO (aka. "ZR")
+%% Copyright (c) 2014-2024 Takayuki YATO (aka. "ZR")
%% GitHub: https://github.com/zr-tex8r
%% Twitter: @zr_tex8r
%%
@@ -10,12 +10,8 @@
%% package declaration
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{bxpdfver}[2022/04/28 v0.6]
+\ProvidesPackage{bxpdfver}[2024/08/03 v0.8]
\def\bxpv@pkgname{bxpdfver}
-
-%% preparations
-\RequirePackage{ifthen}[]% for \newboolean
-\newif\ifbxpv@ok
\providecommand\bxDebug[1]{}
%--------------------------------------- package options
@@ -124,13 +120,23 @@
\fi
\fi
-%--------------------------------------- helpers
+%--------------------------------------- general
+
+%% packages
+\RequirePackage{ifthen}[]% for \newboolean
+
+%% variables
+\newif\ifbxpv@ok
%% unique tokens
\def\bxpv@end{\bxpv@end@}
\def\bxpv@mt{\bxpv@mt@}
\let\bxpv@mk\noindent
+%% \ifbxpv@read@file@ok
+% Whether or not the last \bxpv@read@file succeeded.
+\newif\ifbxpv@read@file@ok
+
%% \bxpv@csletcs
\def\bxpv@csletcs#1#2{%
\expandafter\let\csname#1\expandafter\endcsname\csname#2\endcsname
@@ -144,6 +150,13 @@
\def#3{#2}%
}
+%% \bxpv@info{<message>}
+% Issues an info message.
+\@onlypreamble\bxpv@info
+\def\bxpv@info#1{%
+ \PackageInfo\bxpv@pkgname{#1\@gobble}%
+}
+
%% \bxpv@warn{<message>}
% Issues a warning.
\@onlypreamble\bxpv@warn
@@ -175,17 +188,61 @@
}
%% \ifbxpv@defined
-\let\ifbxpv@defined\ifdefined
-\ifx\ifbxpv@defined\@undefined \expandafter\@firstofone
-\else \expandafter\@gobble
-\fi{\let\ifbxpv@defined\iffalse}
+% Identical to \ifdefined, and is used only in e-TeX-aware code.
+% On non-e-TeX engines it is made \iffalse to keep \if-balancedness.
+\bxpv@csletcs{ifbxpv@defined}{%
+ if\ifx\ifdefined\@undefined false\else defined\fi}
+
+%% \bxpv@begin@document@hook
+% The begin-document hook.
+\@onlypreamble\bxpv@begin@document@hook
+\let\bxpv@begin@document@hook\@empty
+\AtBeginDocument{\bxpv@begin@document@hook}
+
+%--------------------------------------- environment check
%% \ifbxpv@old@hook@system
\newif\ifbxpv@old@hook@system
\@ifl@t@r\fmtversion{2020/10/01}{}{\bxpv@old@hook@systemtrue}
+%% \ifbxpv@pdfmanagement@ok
+% Whether this package is supporting the LaTeX PDF management
+% of the current kernel.
+% (If the PDF management is active but this switch is off,
+% then this package will switch to no-op mode.)
+\newif\ifbxpv@pdfmanagement@ok
+
+%% check for new PDF management
+\if t\bxpv@ignore@pdfmanagement\else
+ \ifx\IfPDFManagementActiveTF\@undefined\else
+ \IfPDFManagementActiveTF{%
+ \let\bxpv@drv@type=m%
+ \def\bxpv@drv@name{latex-pdf}%
+ \@ifl@t@r\fmtversion{2022/06/01}{%
+ \bxpv@pdfmanagement@oktrue
+ }{}
+ }{}
+ \fi
+\fi
+\ifx m\bxpv@drv@type
+ \ifbxpv@pdfmanagement@ok
+ \bxpv@warn
+ {New PDF management is active.\MessageBreak
+ The driver is set to '\bxpv@drv@name'}%
+ % Here \ExplSyntaxOn should be available.
+ \else
+ \bxpv@warn
+ {New PDF management is active, but\MessageBreak
+ the kernel is too old (before 2022/06/01).\MessageBreak
+ Thus this package will not work}%
+ \fi
+\fi
+
%--------------------------------------- internal dispatchers
+% Initially all dispatchers are "unavailable".
+% They are later redefined according to the driver type.
+
%% \bxpv@suppress@compress
\@onlypreamble\bxpv@suppress@compress
\def\bxpv@suppress@compress{%
@@ -224,25 +281,11 @@
\@onlypreamble\bxpv@cancel@obj@compress
\let\bxpv@cancel@obj@compress\relax
-%% \bxpv@begin@document@hook
-% The begin-document hook.
-\@onlypreamble\bxpv@begin@document@hook
-\let\bxpv@begin@document@hook\@empty
-\AtBeginDocument{\bxpv@begin@document@hook}
\g@addto@macro\bxpv@begin@document@hook{%
\bxpv@check@hyperref % must come first
}
-%% check for new PDF management
-\if t\bxpv@ignore@pdfmanagement\else
- \ifx\IfPDFManagementActiveTF\@undefined\else
- \IfPDFManagementActiveTF{%
- \global\let\bxpv@drv@type=m%
- }{}
- \fi
-\fi
-
-%% adjust internal dispatchers
+%% Redefine internal dispatchers.
\ifx 0\bxpv@drv@type\else %--------
\begingroup
@@ -264,9 +307,31 @@
%% switch
\if m\bxpv@drv@type
- %% when in new PDF management
- \bxpv@warn
- {New PDF management is active}%
+ \ifbxpv@pdfmanagement@ok
+ % Here all l3pdf function is assumed to be available.
+ \gdef\bxpv@check@version{\bxpv@oktrue}
+ \ExplSyntaxOn %!!!!!!
+ \tl_new:N \g__bxpv_org_version
+ \exp_args:NNe \tl_gset:Nn \g__bxpv_org_version { \pdf_version: }
+ \cs_gset:Npn \bxpv@set@version
+ {
+ \token_if_eq_meaning:NNTF \bxpdfverMinorVersion \relax
+ { \pdf_version_gset:n { \g__bxpv_org_version } }
+ {
+ \pdf_version_gset:n
+ {
+ \int_use:N \bxpdfverMajorVersion
+ . \int_use:N \bxpdfverMinorVersion
+ }
+ }
+ }
+ % \pdf_uncompress: does both.
+ \cs_gset:Npn \bxpv@suppress@compress
+ { \pdf_uncompress: }
+ \cs_gset:Npn \bxpv@suppress@obj@compress
+ { \pdf_uncompress: }
+ \ExplSyntaxOff %!!!!!!
+ \fi
\else\ifnum\bxpv@pdfoutput>\z@
%% when in PDF mode
\global\let\bxpv@drv@type=p
@@ -386,12 +451,14 @@
\bxpv@warn
{Unsupported engine}%
\else\if d\bxpv@drv@type % 'dvipdfmx'
+ % All the real settings are done in the begin-document hook,
+ % so the dispatchers themselves will do nothing (if available).
\global\let\bxpv@suppress@compress\relax
\global\let\bxpv@suppress@obj@compress\relax
\global\let\bxpv@check@version\relax
\global\let\bxpv@set@version\relax
\global\let\bxpv@set@decimaldigits\relax
- %\global\let\bxpv@set@pkresolution\relax
+ \global\let\bxpv@set@pkresolution\relax
\global\let\bxpv@preserve@destinations\relax
\g@addto@macro\bxpv@begin@document@hook{%
\bxpv@begin@document@dvipdfmx
@@ -671,6 +738,7 @@
\fi
%% variables
+\let\bxpv@dvipdfmx@known@min\relax % minimum known dviodfmx version
\let\bxpv@C@value\relax
%% \bxpv@C@bits
@@ -689,6 +757,7 @@
%% \bxpv@begin@document@dvipdfmx
\@onlypreamble\bxpv@begin@document@dvipdfmx
\def\bxpv@begin@document@dvipdfmx{%
+ \bxpv@get@dvipdfmx@known@min
% PDF version
\ifx\bxpdfverMajorVersion\tw@
\bxpv@check@dvipdfmx@version{20180217}%
@@ -701,8 +770,8 @@
\bxpv@put@special{pdf:minorversion \the\bxpdfverMinorVersion}%
\fi
\ifx\bxpdfverMinorVersion\relax\else
- \bxpv@cache@fetch{dvipdfmxver}%
- \ifnum\bxpv@cache@@dvipdfmxver<20180217 \else
+ \bxpv@at@least@dvipdfmx@version{20180217}%
+ \ifbxpv@ok
\bxpv@put@special{pdf:majorversion \the\bxpdfverMajorVersion}%
\fi
\fi
@@ -734,7 +803,9 @@
\fi
% PK resolution
\ifx\bxpdfverPkResolution\relax\else
- \iffalse % This will never work....
+ \bxpv@check@dvipdfmx@version{20211016}%
+ {Cannot set PK resolution}%
+ \ifbxpv@ok
\bxpv@put@special{dvipdfmx:config r \the\bxpdfverPkResolution}%
\fi
\fi
@@ -748,10 +819,9 @@
\fi
% C option value
\ifx\bxpv@C@bits\@empty\else
- \bxpv@cache@fetch{dvipdfmxcfg}%
- \def\bxpv@next##1##2\bxpv@mk{\def\bxpv@C@value{##1}}%
- \expandafter\bxpv@next\bxpv@cache@@dvipdfmxcfg{0}\bxpv@mk
- \bxpv@rc@bitset{\bxpv@C@value}{64}%
+ % When C option is used, its value is automatically OR'ed with
+ % the current value, so we need not read the config for that.
+ \def\bxpv@C@value{0}%
\def\do##1{%
\bxpv@rc@bitset{\bxpv@C@value}{##1}%
\let\bxpv@C@value\bxpv@rc@num}%
@@ -776,25 +846,67 @@
\fi
}
+%% \bxpv@get@dvipdfmx@known@min
+% Gathers the information and sets \bxpv@dvipdfmx@known@min,
+% without actually spawning extractbb.
+% (Called in the begin-document hook.)
+\@onlypreamble\bxpv@get@dvipdfmx@known@min
+\def\bxpv@get@dvipdfmx@known@min{%
+ % initially no information
+ \def\bxpv@dvipdfmx@known@min{0}%
+ % l3backend-dvipdfmx of revision 2022-04-10 or later requires
+ % dvipdfmx of version 20201111 or later.
+ \def\bxpv@tmpa{def}%
+ \let\bxpv@tmpb\@gobbletwo
+ \@ifl@aded\bxpv@tmpa{l3backend-dvipdfmx}{%
+ \def\bxpv@tmpb{\@ifl@ter\bxpv@tmpa{l3backend-dvipdfmx}}%
+ }{}%
+ % Just in case....
+ \@ifl@aded\bxpv@tmpa{l3backend-dvips}{%
+ \def\bxpv@tmpb{\@ifl@ter\bxpv@tmpa{l3backend-dvips}}%
+ }{}%
+ \bxpv@tmpb{2022/04/10}{%
+ % Now the version is known to be 20201111 or later.
+ % This information can save much need for spawning extractbb.
+ \def\bxpv@dvipdfmx@known@min{20201111}%
+ }{}%
+ \bxDebug{dvipdfmx-known-min:\bxpv@dvipdfmx@known@min}%
+}
+
+%% \bxpv@at@least@dvipdfmx@version{<version>}
+% Checks if dvipdfmx >= <version> and sets bxpv@ok.
+\@onlypreamble\bxpv@at@least@dvipdfmx@version
+\def\bxpv@at@least@dvipdfmx@version#1{%
+ % first check using known-min
+ \ifnum\bxpv@dvipdfmx@known@min<#1
+ % get real version
+ \bxpv@cache@fetch{dvipdfmxver}%
+ \bxpv@info
+ {dvipdfmx version is \bxpv@cache@@dvipdfmxver}%
+ \bxpv@oktrue
+ \ifnum\bxpv@cache@@dvipdfmxver<#1
+ \bxpv@okfalse
+ \fi
+ \else % new enough
+ \bxpv@oktrue
+ \fi
+}
+
%% \bxpv@check@dvipdfmx@version
\@onlypreamble\bxpv@check@dvipdfmx@version
\def\bxpv@check@dvipdfmx@version#1#2{%
- \bxpv@cache@fetch{dvipdfmxver}%
- \bxpv@okfalse
- \ifnum\bxpv@cache@@dvipdfmxver=\z@
+ \bxpv@at@least@dvipdfmx@version{#1}%
+ \ifbxpv@ok % no-op
+ \else\ifnum\bxpv@cache@@dvipdfmxver=\z@
\bxpv@fail
{#2, because the\MessageBreak
version of dvipdfmx in use is unknown
\MessageBreak (v.#1 or later is required)}%
- \else\ifnum\bxpv@cache@@dvipdfmxver<#1
+ \else
\bxpv@fail
{#2, because the\MessageBreak
version of dvipdfmx in use (v.\bxpv@cache@@dvipdfmxver) is too old
\MessageBreak (v.#1 or later is required)}%
- \else
- \PackageInfo\bxpv@pkgname
- {dvipdfmx version is \bxpv@cache@@dvipdfmxver\@gobble}%
- \bxpv@oktrue
\fi\fi
}
@@ -950,10 +1062,6 @@
\let\bxpv@rf@line\relax % line content
\let\bxpv@rf@cont\relax % continue to read?
-%% \ifbxpv@read@file@ok
-% Whether or not the last \bxpv@read@file succeeded.
-\newboolean{bxpv@read@file@ok}
-
%% \bxpv@read@file{<file-name>}{<line-parser-code>}
% Reads from a text file. The line parser takes as #1 the
% content of each line.
diff --git a/macros/latex/contrib/catppuccinpalette/README.md b/macros/latex/contrib/catppuccinpalette/README.md
index 1cb1507f22..4efad071ce 100644
--- a/macros/latex/contrib/catppuccinpalette/README.md
+++ b/macros/latex/contrib/catppuccinpalette/README.md
@@ -1,28 +1,75 @@
-# Readme for the package catppuccinPalette
+<h3 align="center">
+ <img src="https://raw.githubusercontent.com/catppuccin/catppuccin/main/assets/logos/exports/1544x1544_circle.png" width="100" alt="Logo"/><br/>
+ <img src="https://raw.githubusercontent.com/catppuccin/catppuccin/main/assets/misc/transparent.png" height="30" width="0px"/>
+ Catppuccin for <a href="https://www.latex-project.org/">LaTeX</a>
+ <img src="https://raw.githubusercontent.com/catppuccin/catppuccin/main/assets/misc/transparent.png" height="30" width="0px"/>
+</h3>
-Author: Lukas Heindl (`oss.heindl+latex@protonmail.com`).
+<p align="center">
+ <a href="https://github.com/catppuccin/latex/stargazers"><img src="https://img.shields.io/github/stars/catppuccin/latex?colorA=363a4f&colorB=b7bdf8&style=for-the-badge"></a>
+ <a href="https://github.com/catppuccin/latex/issues"><img src="https://img.shields.io/github/issues/catppuccin/latex?colorA=363a4f&colorB=f5a97f&style=for-the-badge"></a>
+ <a href="https://github.com/catppuccin/latex/contributors"><img src="https://img.shields.io/github/contributors/catppuccin/latex?colorA=363a4f&colorB=a6da95&style=for-the-badge"></a>
+</p>
-CTAN page: not yet
+<p align="center">
+ <img src="assets/preview.webp"/>
+</p>
-## License
-The LaTeX package `catppuccinPalette` is distributed under the LPPL 1.3 license.
+## Previews
-## Description
+<details>
+<summary>🌻 Latte</summary>
+<img src="assets/latte.webp"/>
+</details>
+<details>
+<summary>🪴 Frappé</summary>
+<img src="assets/frappe.webp"/>
+</details>
+<details>
+<summary>🌺 Macchiato</summary>
+<img src="assets/macchiato.webp"/>
+</details>
+<details>
+<summary>🌿 Mocha</summary>
+<img src="assets/mocha.webp"/>
+</details>
-The LaTeX package `catppuccinPalette` provides new colors for xcolor.
+## Usage
-## Installation
+### Importing the theme file
+1. The [catppuccinPalette](https://www.ctan.org/pkg/catppuccinpalette) package is present on CTAN, but probably not included in your TeX Live installation. Follow the steps below to install it manually:
+ - Shortcut: If you set up your local `texmf` you should be able to simply install by executing `make install` (this installs the package locally for the current user)
+ - If you don't like installing the package locally for the current user you might also execue `l3build unpack` and move the generated `.sty` file `build/unpacked/catppuccinpalette.sty` to the root directory of your project.
+ - If you don't have `l3build` available, you can also download the `catppuccinpalette.sty` file from the [latest GitHub release](https://github.com/catppuccin/latex/releases/latest) and move the file to your project root.
+2. Import the package by adding `\usepackage[FLAVOR]{catppuccinpalette}`, replacing `FLAVOR` with the flavor of your choice. i.e. `\usepackage[macchiato]{catppuccinpalette}`. Valid options are: mocha (default), latte, frappe, and macchiato.
+ - If you want the package not only to add color definitions, you can also pass `textcolor=true` and/or `pagecolor=true` to the `catppuccinpalette` package.
+ - Also note that in the pdf containing the documentation, the available options are described in more detail and also the defined colors are listed and shown.
-For a manual installation:
+### Color Naming Conventions
-* put the files `catppuccinpalette.ins` and `catppuccinpalette.dtx` in the same directory;
-* run `latex catppuccinpalette.ins` in that directory.
+All [Catppuccin palette colors](https://github.com/catppuccin/catppuccin#-palette), across all flavors, follow the same naming convention. This theme set prefixes all Catppuccin colors with `Ctp`, i.e. `CtpPeach`, or `CtpBlue`.
-The file `catppuccinpalette.sty` will be generated.
-The file `catppuccinpalette.sty` is the only file necessary to use the latex package `catppuccinPalette`.
-You have to put it in the same directory as your document or (best) in a `texmf` tree.
+### Examples
-Simplified version:
+Please refer to the [examples](https://github.com/catppuccin/latex/tree/main/examples) for full demonstrations, with LaTeX sources and their outputs, on theme usage and code highlighting.
+
+## 💝 Thanks to
+
+- [Lukas](https://github.com/atticus-sullivan)
+- [Brandon](https://github.com/walshyb)
+
+&nbsp;
+
+<p align="center">
+ <img src="https://raw.githubusercontent.com/catppuccin/catppuccin/main/assets/footers/gray0_ctp_on_line.svg?sanitize=true" />
+</p>
+
+<p align="center">
+ Copyright &copy; 2021-present <a href="https://github.com/catppuccin" target="_blank">Catppuccin Org</a>
+</p>
+
+<p align="center">
+ <a href="https://github.com/catppuccin/catppuccin/blob/main/LICENSE"><img src="https://img.shields.io/static/v1.svg?style=for-the-badge&label=License&message=MIT&logoColor=d9e0ee&colorA=363a4f&colorB=b7bdf8"/></a>
+</p>
-* run `l3build unpack` to generate the `.sty` in `build/unpacked/`
diff --git a/macros/latex/contrib/catppuccinpalette/catppuccinpalette.dtx b/macros/latex/contrib/catppuccinpalette/catppuccinpalette.dtx
index d9cabfcd02..16d8a60e47 100644
--- a/macros/latex/contrib/catppuccinpalette/catppuccinpalette.dtx
+++ b/macros/latex/contrib/catppuccinpalette/catppuccinpalette.dtx
@@ -1,21 +1,26 @@
% \iffalse meta-comment
%
-% Copyright (C) 2024 by Lukas Heindl <oss.heindl+latex@protonmail.com>
-% ---------------------------------------------------------------------------
-% 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 `maintained'.
-%
-% The Current Maintainer of this work is Lukas Heindl.
-%
-% This work consists of the files catppuccinpalette.dtx and catppuccinpalette.ins
-% and the derived filebase catppuccinpalette.sty.
+% MIT License
+%
+% Copyright (c) 2024 Catppuccin
+%
+% Permission is hereby granted, free of charge, to any person obtaining a copy
+% of this software and associated documentation files (the "Software"), to deal
+% in the Software without restriction, including without limitation the rights
+% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+% copies of the Software, and to permit persons to whom the Software is
+% furnished to do so, subject to the following conditions:
+%
+% The above copyright notice and this permission notice shall be included in all
+% copies or substantial portions of the Software.
+%
+% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+% SOFTWARE.
%
% \fi
%
@@ -26,12 +31,12 @@
%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<package>\ProvidesPackage{catppuccinpalette}
%<*package>
- [2024/02/27 v1.0.1 catppuccin xcolor palette]
+ [2024/08/13 v1.1.0 catppuccin xcolor palette]
%</package>
%
%<*driver>
\documentclass{ltxdoc}
-\usepackage{catppuccinpalette}[2024/02/27]
+\usepackage{catppuccinpalette}
\usepackage{multicol}
\usepackage{pgffor}
\usepackage{tabularx, booktabs}
@@ -68,13 +73,16 @@
% \changes{v0.0.1}{2024/02/09}{Converted to DTX file}
% \changes{v1.0.0}{2024/02/27}{First full release}
% \changes{v1.0.1}{2024/05/19}{Make fit for CTAN}
+% \changes{v1.0.2}{2024/05/19}{Fix colors in documentation}
+% \changes{v1.1.0}{2024/08/13}{Move to / Merge with official catppuccin. Thereby deprecate colors with |Cat| prefix. Subject to removal in the future}
%
% \DoNotIndex{\newcommand,\newenvironment,\color,\colorlet,\def,\fi,\RequirePackage,\ProvidesPackage,\ProcessPgfOptions,\preparecolorset,\pgfkeys,\pagecolor,\newif,\NeedsTeXFormat}
%
+% \providecommand*\pkg{\textsf}
% \providecommand*{\url}{\texttt}
% \GetFileInfo{catppuccinpalette.dtx}
% \title{The \textsf{catppuccinPalette} package}
-% \author{Lukas Heindl \\ \url{oss.heindl+latex@protonmail.com} \\ \url{https://github.com/atticus-sullivan/catpuccinPalette}}
+% \author{Lukas Heindl \\ \url{oss.heindl+latex@protonmail.com} \\ \url{https://github.com/catppuccin/latex}}
% \date{\fileversion~from \filedate}
%
% \maketitle
@@ -94,14 +102,14 @@
%
% Load via |\usepackage{catppuccinpalette}|
%
-% Just use the new colors (prefixed with \verb|Cat<Style>|) like normal xcolors.
+% Just use the new colors (prefixed with \verb|Ctp<Style>|) like normal xcolors.
% In addition to the usual colors of the palette, this package defines some
% colors according to the
% style guide\footnote{\url{https://github.com/catppuccin/catppuccin/blob/main/docs/style-guide.md}}
% for ease of use.
%
% This package also allows you to set a specific style which sets the shortened
-% color names (prefixed only with \verb|Cat|) to the selected style (allows for
+% color names (prefixed only with \verb|Ctp|) to the selected style (allows for
% easy switching style) via the package option \verb|style|.
%
% This package loads xcolor (without options) so if you want to set some xcolor
@@ -112,16 +120,21 @@
% \emph{Option} & \emph{Description}
% \\\toprule
% \verb|style| &
-% set the style used by the shortened prefix (\verb|Cat|). Possible values:
+% set the style used by the shortened prefix (\verb|Ctp|). Possible values:
% \verb|Latte| (default+initial), \verb|latte|, \verb|Frappe|, \verb|frappe|,
-% \verb|Mocha|, \verb|mocha|
+% \verb|Mocha|, \verb|mocha|, \verb|Macchiato|, \verb|macchiato|
+% \\
+% &
+% As a shortcut, you can also just use e.\,g.\,
+% |\usepackage[latte]{catppuccinPalette}| as a shorthand for
+% |\usepackage[style=latte]{catppuccinPalette}|
% \\
% \verb|textcolor| &
-% set the default textcolor of the document to \verb|CatText|. Possible values:
+% set the default textcolor of the document to \verb|CtpText|. Possible values:
% \verb|false| (default+initial), \verb|true|
% \\
% \verb|pagecolor| &
-% set the pagecolor of the document to \verb|CatBackground|. Possible values:
+% set the pagecolor of the document to \verb|CtpBackground|. Possible values:
% \verb|false| (default+initial), \verb|true|
% \\\midrule
% \verb|styleAll| &
@@ -129,51 +142,64 @@
% \\\bottomrule
% \end{tabularx}
%
+% \subsubsection{Change settings mid-document}
+% \DescribeMacro{\CtpReinit} |\CtpReinit[opts]|
+%
+% This command allows to reinitialize this package. All previous configuration
+% options will be kept. In particular this allows to change the active
+% style/flavor mid-document. Note that if you decided this package should
+% change the background color when loading the package and only do
+% |\CptReinit[style=<another style>]|, then the background color will also be
+% adjusted on reinitialization.
+%
+% The command processes the same options like the ones you can pass when
+% loading the package (see documentation above).
+%
% \subsection{Colors}
+% \textbf{Note:} The colors with the prefix |Cat| are deprecated and will be removed in a future version!
% \newcommand{\showCol}[1]{\raisebox{0.5ex}{\fcolorbox{black}{#1}{\hspace{1em}}} #1}
% \foreach \Style in {Latte,Frappe,Macchiato,Mocha}{
% \subsubsection{Style \texttt{\Style}}
% \begin{multicols}{2}
-% \def\Style{Latte}
-% \showCol{Cat\Style Blue}\par
-% \showCol{Cat\Style Rosewater}\par
-% \showCol{Cat\Style Flamingo}\par
-% \showCol{Cat\Style Pink}\par
-% \showCol{Cat\Style Mauve}\par
-% \showCol{Cat\Style Red}\par
-% \showCol{Cat\Style Maroon}\par
-% \showCol{Cat\Style Peach}\par
-% \showCol{Cat\Style Yellow}\par
-% \showCol{Cat\Style Green}\par
-% \showCol{Cat\Style Teal}\par
-% \showCol{Cat\Style Sky}\par
-% \showCol{Cat\Style Sapphire}\par
-% \showCol{Cat\Style Blue}\par
-% \showCol{Cat\Style Lavender}\par
-% \showCol{Cat\Style Text}\par
-% \showCol{Cat\Style Subtext1}\par
-% \showCol{Cat\Style Subtext0}\par
-% \showCol{Cat\Style Overlay2}\par
-% \showCol{Cat\Style Overlay1}\par
-% \showCol{Cat\Style Overlay0}\par
-% \showCol{Cat\Style Surface2}\par
-% \showCol{Cat\Style Surface1}\par
-% \showCol{Cat\Style Surface0}\par
-% \showCol{Cat\Style Base}\par
-% \showCol{Cat\Style Mantle}\par
-% \showCol{Cat\Style Crust}\par
+% \showCol{Ctp\Style Blue}\par
+% \showCol{Ctp\Style Rosewater}\par
+% \showCol{Ctp\Style Flamingo}\par
+% \showCol{Ctp\Style Pink}\par
+% \showCol{Ctp\Style Mauve}\par
+% \showCol{Ctp\Style Red}\par
+% \showCol{Ctp\Style Maroon}\par
+% \showCol{Ctp\Style Peach}\par
+% \showCol{Ctp\Style Yellow}\par
+% \showCol{Ctp\Style Green}\par
+% \showCol{Ctp\Style Teal}\par
+% \showCol{Ctp\Style Sky}\par
+% \showCol{Ctp\Style Sapphire}\par
+% \showCol{Ctp\Style Blue}\par
+% \showCol{Ctp\Style Lavender}\par
+% \showCol{Ctp\Style Text}\par
+% \showCol{Ctp\Style Subtext1}\par
+% \showCol{Ctp\Style Subtext0}\par
+% \showCol{Ctp\Style Overlay2}\par
+% \showCol{Ctp\Style Overlay1}\par
+% \showCol{Ctp\Style Overlay0}\par
+% \showCol{Ctp\Style Surface2}\par
+% \showCol{Ctp\Style Surface1}\par
+% \showCol{Ctp\Style Surface0}\par
+% \showCol{Ctp\Style Base}\par
+% \showCol{Ctp\Style Mantle}\par
+% \showCol{Ctp\Style Crust}\par
% \end{multicols}
%
% Some basic colors according to the style guide:
%
% \begin{multicols}{2}
-% \showCol{Cat\Style Background}\par
-% \showCol{Cat\Style Link}\par
+% \showCol{Ctp\Style Background}\par
+% \showCol{Ctp\Style Link}\par
% \phantom{}\par
% \columnbreak
-% \showCol{Cat\Style Success}\par
-% \showCol{Cat\Style Warning}\par
-% \showCol{Cat\Style Error}\par
+% \showCol{Ctp\Style Success}\par
+% \showCol{Ctp\Style Warning}\par
+% \showCol{Ctp\Style Error}\par
% \end{multicols}
%
% }
@@ -201,16 +227,24 @@
% \end{macrocode}
% Define the package option keys
% \begin{macrocode}
+ Latte/.style={style=Latte},
+ latte/.style={style=Latte},
+ Frappe/.style={style=Frappe},
+ frappe/.style={style=Frappe},
+ Macchiato/.style={style=Macchiato},
+ macchiato/.style={style=Macchiato},
+ Mocha/.style={style=Mocha},
+ mocha/.style={style=Mocha},
style/.is choice,
style/.value required,
style/Latte/.code = {\def\catppuccinpalette@style{Latte}},
- style/latte/.forward to = /catppuccinPalette/style/Latte,
+ style/latte/.style = {style=Latte},
style/Frappe/.code = {\def\catppuccinpalette@style{Frappe}},
- style/frappe/.forward to = /catppuccinPalette/style/frappe,
+ style/frappe/.style = {style=Frappe},
style/Macchiato/.code = {\def\catppuccinpalette@style{Macchiato}},
- style/macchiato/.forward to = /catppuccinPalette/style/Macchiato,
+ style/macchiato/.style = {style=Macchiato},
style/Mocha/.code = {\def\catppuccinpalette@style{Mocha}},
- style/mocha/.forward to = /catppuccinPalette/style/Mocha,
+ style/mocha/.style = {style=Mocha},
textcolor/.is if = catppuccinpalette@textcolor,
textcolor/.default = true,
pagecolor/.is if = catppuccinpalette@pagecolor,
@@ -223,7 +257,7 @@
pagecolor = false,
style = Latte,
}
-\ProcessPgfOptions*
+\ProcessPgfOptions{catppuccinPalette}
% \end{macrocode}
% Define the \emph{Latte} colorset
% \begin{macrocode}
@@ -255,14 +289,48 @@
Mantle,230,233,239/E6E9EF;%
Crust,220,224,232/DCE0E8%
}
-% \end{macrocode}
-% Define colors according to the catppuccin style guide
-% \begin{macrocode}
\colorlet{CatLatteBackground}{CatLatteBase}
\colorlet{CatLatteLink}{CatLatteBlue}
\colorlet{CatLatteSuccess}{CatLatteGreen}
\colorlet{CatLatteWarning}{CatLatteYellow}
\colorlet{CatLatteError}{CatLatteRed}
+
+\preparecolorset{RGB/HTML}{CtpLatte}{}{%
+ Rosewater,220,138,120/DC8A78;%
+ Flamingo,221,120,120/DD7878;%
+ Pink,234,118,203/EA76CB;%
+ Mauve,136,57,239/8839EF;%
+ Red,210,15,57/D20F39;%
+ Maroon,230,69,83/E64553;%
+ Peach,254,100,11/FE640B;%
+ Yellow,223,142,29/DF8E1D;%
+ Green,64,160,43/40A02B;%
+ Teal,23,146,153/179299;%
+ Sky,4,165,229/04A5E5;%
+ Sapphire,32,159,181/209FB5;%
+ Blue,30,102,245/1E66F5;%
+ Lavender,114,135,253/7287FD;%
+ Text,76,79,105/4C4F69;%
+ Subtext1,92,95,119/5C5F77;%
+ Subtext0,108,111,133/6C6F85;%
+ Overlay2,124,127,147/7C7F93;%
+ Overlay1,140,143,161/8C8FA1;%
+ Overlay0,156,160,176/9CA0B0;%
+ Surface2,172,176,190/ACB0BE;%
+ Surface1,188,192,204/BCC0CC;%
+ Surface0,204,208,218/CCD0DA;%
+ Base,239,241,245/EFF1F5;%
+ Mantle,230,233,239/E6E9EF;%
+ Crust,220,224,232/DCE0E8%
+}
+% \end{macrocode}
+% Define colors according to the catppuccin style guide
+% \begin{macrocode}
+\colorlet{CtpLatteBackground}{CtpLatteBase}
+\colorlet{CtpLatteLink}{CtpLatteBlue}
+\colorlet{CtpLatteSuccess}{CtpLatteGreen}
+\colorlet{CtpLatteWarning}{CtpLatteYellow}
+\colorlet{CtpLatteError}{CtpLatteRed}
% \end{macrocode}
% Define the styles \emph{Frappe}, \emph{Macchiato} and \emph{Mocha} accordingly
% \begin{macrocode}
@@ -299,6 +367,41 @@
\colorlet{CatFrappeSuccess}{CatFrappeGreen}
\colorlet{CatFrappeWarning}{CatFrappeYellow}
\colorlet{CatFrappeError}{CatFrappeRed}
+
+\preparecolorset{RGB/HTML}{CtpFrappe}{}{%
+ Rosewater,242,213,207/F2D5CF;%
+ Flamingo,238,190,190/EEBEBE;%
+ Pink,244,184,228/F4B8E4;%
+ Mauve,202,158,230/CA9EE6;%
+ Red,231,130,132/E78284;%
+ Maroon,234,153,156/EA999C;%
+ Peach,239,159,118/EF9F76;%
+ Yellow,229,200,144/E5C890;%
+ Green,166,209,137/A6D189;%
+ Teal,129,200,190/81C8BE;%
+ Sky,153,209,219/99D1DB;%
+ Sapphire,133,193,220/85C1DC;%
+ Blue,140,170,238/8CAAEE;%
+ Lavender,186,187,241/BABBF1;%
+ Text,198,208,245/C6D0F5;%
+ Subtext1,181,191,226/B5BFE2;%
+ Subtext0,165,173,206/A5ADCE;%
+ Overlay2,148,156,187/949CBB;%
+ Overlay1,131,139,167/838BA7;%
+ Overlay0,115,121,148/737994;%
+ Surface2,98,104,128/626880;%
+ Surface1,81,87,109/51576D;%
+ Surface0,65,69,89/414559;%
+ Base,48,52,70/303446;%
+ Mantle,41,44,60/292C3C;%
+ Crust,35,38,52/232634%
+}
+\colorlet{CtpFrappeBackground}{CtpFrappeBase}
+\colorlet{CtpFrappeLink}{CtpFrappeBlue}
+\colorlet{CtpFrappeSuccess}{CtpFrappeGreen}
+\colorlet{CtpFrappeWarning}{CtpFrappeYellow}
+\colorlet{CtpFrappeError}{CtpFrappeRed}
+
\preparecolorset{RGB/HTML}{CatMacchiato}{}{%
Rosewater,244,219,214/F4DBD6;%
Flamingo,240,198,198/F0C6C6;%
@@ -332,6 +435,41 @@
\colorlet{CatMacchiatoSuccess}{CatMacchiatoGreen}
\colorlet{CatMacchiatoWarning}{CatMacchiatoYellow}
\colorlet{CatMacchiatoError}{CatMacchiatoRed}
+
+\preparecolorset{RGB/HTML}{CtpMacchiato}{}{%
+ Rosewater,244,219,214/F4DBD6;%
+ Flamingo,240,198,198/F0C6C6;%
+ Pink,245,189,230/F5BDE6;%
+ Mauve,198,160,246/C6A0F6;%
+ Red,237,135,150/ED8796;%
+ Maroon,238,153,160/EE99A0;%
+ Peach,245,169,127/F5A97F;%
+ Yellow,238,212,159/EED49F;%
+ Green,166,218,149/A6DA95;%
+ Teal,139,213,202/8BD5CA;%
+ Sky,145,215,227/91D7E3;%
+ Sapphire,125,196,228/7DC4E4;%
+ Blue,138,173,244/8AADF4;%
+ Lavender,183,189,248/B7BDF8;%
+ Text,202,211,245/CAD3F5;%
+ Subtext1,184,192,224/B8C0E0;%
+ Subtext0,165,173,203/A5ADCB;%
+ Overlay2,147,154,183/939AB7;%
+ Overlay1,128,135,162/8087A2;%
+ Overlay0,110,115,141/6E738D;%
+ Surface2,91,96,120/5B6078;%
+ Surface1,73,77,100/494D64;%
+ Surface0,54,58,79/363A4F;%
+ Base,36,39,58/24273A;%
+ Mantle,30,32,48/1E2030;%
+ Crust,24,25,38/181926%
+}
+\colorlet{CtpMacchiatoBackground}{CtpMacchiatoBase}
+\colorlet{CtpMacchiatoLink}{CtpMacchiatoBlue}
+\colorlet{CtpMacchiatoSuccess}{CtpMacchiatoGreen}
+\colorlet{CtpMacchiatoWarning}{CtpMacchiatoYellow}
+\colorlet{CtpMacchiatoError}{CtpMacchiatoRed}
+
\preparecolorset{RGB/HTML}{CatMocha}{}{%
Rosewater,245,224,220/F5E0DC;%
Flamingo,242,205,205/F2CDCD;%
@@ -360,57 +498,139 @@
Mantle,24,24,37/181825;%
Crust,17,17,27/11111B%
}
-% \end{macrocode}
-% Define shortcuts for active style
-% \begin{macrocode}
\colorlet{CatMochaBackground}{CatMochaBase}
\colorlet{CatMochaLink}{CatMochaBlue}
\colorlet{CatMochaSuccess}{CatMochaGreen}
\colorlet{CatMochaWarning}{CatMochaYellow}
\colorlet{CatMochaError}{CatMochaRed}
-\colorlet{CatRosewater}{Cat\catppuccinpalette@style Rosewater}
-\colorlet{CatFlamingo}{Cat\catppuccinpalette@style Flamingo}
-\colorlet{CatPink}{Cat\catppuccinpalette@style Pink}
-\colorlet{CatMauve}{Cat\catppuccinpalette@style Mauve}
-\colorlet{CatRed}{Cat\catppuccinpalette@style Red}
-\colorlet{CatMaroon}{Cat\catppuccinpalette@style Maroon}
-\colorlet{CatPeach}{Cat\catppuccinpalette@style Peach}
-\colorlet{CatYellow}{Cat\catppuccinpalette@style Yellow}
-\colorlet{CatGreen}{Cat\catppuccinpalette@style Green}
-\colorlet{CatTeal}{Cat\catppuccinpalette@style Teal}
-\colorlet{CatSky}{Cat\catppuccinpalette@style Sky}
-\colorlet{CatSapphire}{Cat\catppuccinpalette@style Sapphire}
-\colorlet{CatBlue}{Cat\catppuccinpalette@style Blue}
-\colorlet{CatLavender}{Cat\catppuccinpalette@style Lavender}
-\colorlet{CatText}{Cat\catppuccinpalette@style Text}
-\colorlet{CatSubtext1}{Cat\catppuccinpalette@style Subtext1}
-\colorlet{CatSubtext0}{Cat\catppuccinpalette@style Subtext0}
-\colorlet{CatOverlay2}{Cat\catppuccinpalette@style Overlay2}
-\colorlet{CatOverlay1}{Cat\catppuccinpalette@style Overlay1}
-\colorlet{CatOverlay0}{Cat\catppuccinpalette@style Overlay0}
-\colorlet{CatSurface2}{Cat\catppuccinpalette@style Surface2}
-\colorlet{CatSurface1}{Cat\catppuccinpalette@style Surface1}
-\colorlet{CatSurface0}{Cat\catppuccinpalette@style Surface0}
-\colorlet{CatBase}{Cat\catppuccinpalette@style Base}
-\colorlet{CatMantle}{Cat\catppuccinpalette@style Mantle}
-\colorlet{CatCrust}{Cat\catppuccinpalette@style Crust}
-\colorlet{CatBackground}{Cat\catppuccinpalette@style Base}
-\colorlet{CatLink}{Cat\catppuccinpalette@style Blue}
-\colorlet{CatSuccess}{Cat\catppuccinpalette@style Green}
-\colorlet{CatWarning}{Cat\catppuccinpalette@style Yellow}
-\colorlet{CatError}{Cat\catppuccinpalette@style Red}
+
+\preparecolorset{RGB/HTML}{CtpMocha}{}{%
+ Rosewater,245,224,220/F5E0DC;%
+ Flamingo,242,205,205/F2CDCD;%
+ Pink,245,194,231/F5C2E7;%
+ Mauve,203,166,247/CBA6F7;%
+ Red,243,139,168/F38BA8;%
+ Maroon,235,160,172/EBA0AC;%
+ Peach,250,179,135/FAB387;%
+ Yellow,249,226,175/F9E2AF;%
+ Green,166,227,161/A6E3A1;%
+ Teal,148,226,213/94E2D5;%
+ Sky,137,220,235/89DCEB;%
+ Sapphire,116,199,236/74C7EC;%
+ Blue,137,180,250/89B4FA;%
+ Lavender,180,190,254/B4BEFE;%
+ Text,205,214,244/CDD6F4;%
+ Subtext1,186,194,222/BAC2DE;%
+ Subtext0,166,173,200/A6ADC8;%
+ Overlay2,147,153,178/9399B2;%
+ Overlay1,127,132,156/7F849C;%
+ Overlay0,108,112,134/6C7086;%
+ Surface2,88,91,112/585B70;%
+ Surface1,69,71,90/45475A;%
+ Surface0,49,50,68/313244;%
+ Base,30,30,46/1E1E2E;%
+ Mantle,24,24,37/181825;%
+ Crust,17,17,27/11111B%
+}
+\colorlet{CtpMochaBackground}{CtpMochaBase}
+\colorlet{CtpMochaLink}{CtpMochaBlue}
+\colorlet{CtpMochaSuccess}{CtpMochaGreen}
+\colorlet{CtpMochaWarning}{CtpMochaYellow}
+\colorlet{CtpMochaError}{CtpMochaRed}
+
+% \end{macrocode}
+% Define shortcuts for active style (legacy part)
+% \begin{macrocode}
+\colorlet{CatRosewater}{Ctp\catppuccinpalette@style Rosewater}
+\colorlet{CatFlamingo}{Ctp\catppuccinpalette@style Flamingo}
+\colorlet{CatPink}{Ctp\catppuccinpalette@style Pink}
+\colorlet{CatMauve}{Ctp\catppuccinpalette@style Mauve}
+\colorlet{CatRed}{Ctp\catppuccinpalette@style Red}
+\colorlet{CatMaroon}{Ctp\catppuccinpalette@style Maroon}
+\colorlet{CatPeach}{Ctp\catppuccinpalette@style Peach}
+\colorlet{CatYellow}{Ctp\catppuccinpalette@style Yellow}
+\colorlet{CatGreen}{Ctp\catppuccinpalette@style Green}
+\colorlet{CatTeal}{Ctp\catppuccinpalette@style Teal}
+\colorlet{CatSky}{Ctp\catppuccinpalette@style Sky}
+\colorlet{CatSapphire}{Ctp\catppuccinpalette@style Sapphire}
+\colorlet{CatBlue}{Ctp\catppuccinpalette@style Blue}
+\colorlet{CatLavender}{Ctp\catppuccinpalette@style Lavender}
+\colorlet{CatText}{Ctp\catppuccinpalette@style Text}
+\colorlet{CatSubtext1}{Ctp\catppuccinpalette@style Subtext1}
+\colorlet{CatSubtext0}{Ctp\catppuccinpalette@style Subtext0}
+\colorlet{CatOverlay2}{Ctp\catppuccinpalette@style Overlay2}
+\colorlet{CatOverlay1}{Ctp\catppuccinpalette@style Overlay1}
+\colorlet{CatOverlay0}{Ctp\catppuccinpalette@style Overlay0}
+\colorlet{CatSurface2}{Ctp\catppuccinpalette@style Surface2}
+\colorlet{CatSurface1}{Ctp\catppuccinpalette@style Surface1}
+\colorlet{CatSurface0}{Ctp\catppuccinpalette@style Surface0}
+\colorlet{CatBase}{Ctp\catppuccinpalette@style Base}
+\colorlet{CatMantle}{Ctp\catppuccinpalette@style Mantle}
+\colorlet{CatCrust}{Ctp\catppuccinpalette@style Crust}
+\colorlet{CatBackground}{Ctp\catppuccinpalette@style Base}
+\colorlet{CatLink}{Ctp\catppuccinpalette@style Blue}
+\colorlet{CatSuccess}{Ctp\catppuccinpalette@style Green}
+\colorlet{CatWarning}{Ctp\catppuccinpalette@style Yellow}
+\colorlet{CatError}{Ctp\catppuccinpalette@style Red}
+
% \end{macrocode}
-% Set (only initial) pagecolor according to the style guide if the user wants this
+% New command which parses the same options like the package. Can be used to e.\,g.\, reset/reinit the selected style.
% \begin{macrocode}
-\ifcatppuccinpalette@pagecolor
- \pagecolor{CatBackground}
-\fi
+\NewDocumentCommand\CtpReinit{O{}}{%
+ \pgfkeys{%
+ /catppuccinPalette/.cd,%
+ #1%
+ }%
+% \end{macrocode}
+% Define shortcuts for active style
+% \begin{macrocode}
+ \colorlet{CtpRosewater}{Ctp\catppuccinpalette@style Rosewater}%
+ \colorlet{CtpFlamingo}{Ctp\catppuccinpalette@style Flamingo}%
+ \colorlet{CtpPink}{Ctp\catppuccinpalette@style Pink}%
+ \colorlet{CtpMauve}{Ctp\catppuccinpalette@style Mauve}%
+ \colorlet{CtpRed}{Ctp\catppuccinpalette@style Red}%
+ \colorlet{CtpMaroon}{Ctp\catppuccinpalette@style Maroon}%
+ \colorlet{CtpPeach}{Ctp\catppuccinpalette@style Peach}%
+ \colorlet{CtpYellow}{Ctp\catppuccinpalette@style Yellow}%
+ \colorlet{CtpGreen}{Ctp\catppuccinpalette@style Green}%
+ \colorlet{CtpTeal}{Ctp\catppuccinpalette@style Teal}%
+ \colorlet{CtpSky}{Ctp\catppuccinpalette@style Sky}%
+ \colorlet{CtpSapphire}{Ctp\catppuccinpalette@style Sapphire}%
+ \colorlet{CtpBlue}{Ctp\catppuccinpalette@style Blue}%
+ \colorlet{CtpLavender}{Ctp\catppuccinpalette@style Lavender}%
+ \colorlet{CtpText}{Ctp\catppuccinpalette@style Text}%
+ \colorlet{CtpSubtext1}{Ctp\catppuccinpalette@style Subtext1}%
+ \colorlet{CtpSubtext0}{Ctp\catppuccinpalette@style Subtext0}%
+ \colorlet{CtpOverlay2}{Ctp\catppuccinpalette@style Overlay2}%
+ \colorlet{CtpOverlay1}{Ctp\catppuccinpalette@style Overlay1}%
+ \colorlet{CtpOverlay0}{Ctp\catppuccinpalette@style Overlay0}%
+ \colorlet{CtpSurface2}{Ctp\catppuccinpalette@style Surface2}%
+ \colorlet{CtpSurface1}{Ctp\catppuccinpalette@style Surface1}%
+ \colorlet{CtpSurface0}{Ctp\catppuccinpalette@style Surface0}%
+ \colorlet{CtpBase}{Ctp\catppuccinpalette@style Base}%
+ \colorlet{CtpMantle}{Ctp\catppuccinpalette@style Mantle}%
+ \colorlet{CtpCrust}{Ctp\catppuccinpalette@style Crust}%
+ \colorlet{CtpBackground}{Ctp\catppuccinpalette@style Base}%
+ \colorlet{CtpLink}{Ctp\catppuccinpalette@style Blue}%
+ \colorlet{CtpSuccess}{Ctp\catppuccinpalette@style Green}%
+ \colorlet{CtpWarning}{Ctp\catppuccinpalette@style Yellow}%
+ \colorlet{CtpError}{Ctp\catppuccinpalette@style Red}%
+% \end{macrocode}
+% Set pagecolor according to the style guide if the user wants this
+% \begin{macrocode}
+\ifcatppuccinpalette@pagecolor%
+ \pagecolor{CtpBackground}%
+\fi%
% \end{macrocode}
% Set textcolor according to the style guide if the user wants this
% \begin{macrocode}
-\ifcatppuccinpalette@textcolor
- \color{CatText}
-\fi
+\ifcatppuccinpalette@textcolor%
+ \color{CtpText}%
+\fi%
+% \end{macrocode}
+% \begin{macrocode}
+}
+\CtpReinit[]
% \end{macrocode}
\endinput
%
diff --git a/macros/latex/contrib/catppuccinpalette/catppuccinpalette.ins b/macros/latex/contrib/catppuccinpalette/catppuccinpalette.ins
index c93b929dcd..2e44fa2b5f 100644
--- a/macros/latex/contrib/catppuccinpalette/catppuccinpalette.ins
+++ b/macros/latex/contrib/catppuccinpalette/catppuccinpalette.ins
@@ -1,20 +1,24 @@
-%% Copyright (C) 2024 by Lukas Heindl <oss.heindl+latex@protonmail.com>
-%% --------------------------------------------------------------------------
-%% 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 `maintained'.
-%%
-%% The Current Maintainer of this work is Lukas Heindl.
-%%
-%% This work consists of the files catppuccinpalette.dtx and catppuccinpalette.ins
-%% and the derived filebase catppuccinpalette.sty.
-%%
+%% MIT License
+%%
+%% Copyright (c) 2021 Catppuccin
+%%
+%% Permission is hereby granted, free of charge, to any person obtaining a copy
+%% of this software and associated documentation files (the "Software"), to deal
+%% in the Software without restriction, including without limitation the rights
+%% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+%% copies of the Software, and to permit persons to whom the Software is
+%% furnished to do so, subject to the following conditions:
+%%
+%% The above copyright notice and this permission notice shall be included in all
+%% copies or substantial portions of the Software.
+%%
+%% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+%% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+%% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+%% SOFTWARE.
\input docstrip.tex
\keepsilent
@@ -25,15 +29,25 @@
This is a generated file.
-Copyright (C) 2024 by Lukas Heindl <oss.heindl+latex@protonmail.com>
---------------------------------------------------------------------------
-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.
+Copyright (c) 2021 Catppuccin
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
\endpreamble
diff --git a/macros/latex/contrib/catppuccinpalette/catppuccinpalette.pdf b/macros/latex/contrib/catppuccinpalette/catppuccinpalette.pdf
index aedd35c9bf..b66eca9b01 100644
--- a/macros/latex/contrib/catppuccinpalette/catppuccinpalette.pdf
+++ b/macros/latex/contrib/catppuccinpalette/catppuccinpalette.pdf
Binary files differ
diff --git a/macros/latex/contrib/changebar/CATALOG b/macros/latex/contrib/changebar/CATALOG
index 50cd35da78..5483fa9c13 100644
--- a/macros/latex/contrib/changebar/CATALOG
+++ b/macros/latex/contrib/changebar/CATALOG
@@ -1,7 +1,7 @@
Name: ChangeBar
Problems-To: johannes.braams(at)texniek.nl
Author: J.L. Braams
-Version: 3.7d
+Version: 3.7e
Description:
diff --git a/macros/latex/contrib/changebar/README b/macros/latex/contrib/changebar/README
index 2a9c69bad7..bcd9ab0bbb 100644
--- a/macros/latex/contrib/changebar/README
+++ b/macros/latex/contrib/changebar/README
@@ -1,6 +1,6 @@
changebar bundle
- January 9, 2024
+ July 19, 2024
This bundle contains a package that I maintain to add changebars to a
LaTeX document.
diff --git a/macros/latex/contrib/changebar/changebar.bug b/macros/latex/contrib/changebar/changebar.bug
index d661332150..aa476a2224 100644
--- a/macros/latex/contrib/changebar/changebar.bug
+++ b/macros/latex/contrib/changebar/changebar.bug
@@ -219,6 +219,10 @@
% v3.7d JLB: Arash Esbati reported a simlar phenomenon when \nochangebars
% is used. Similar solution was needed.
%
+% v3.7e JLB: Daniel Flipo and Bruno Winckler reported that changebar no longer
+% works when \usepackage[french]{babel} is used. This was caused by the
+% solution implemented in v3.7b. This time use "/" is chosen as separator.
+%
% Known problems
% - changebars for marginal paragraphs collide with changebars
% for the main body of text
diff --git a/macros/latex/contrib/changebar/changebar.dtx b/macros/latex/contrib/changebar/changebar.dtx
index 406ccf5290..58df74102c 100644
--- a/macros/latex/contrib/changebar/changebar.dtx
+++ b/macros/latex/contrib/changebar/changebar.dtx
@@ -24,7 +24,7 @@
% and covered by LPPL is defined by the unpacking scripts (with
% extension .ins) which are part of the distribution.
% \fi
-% \CheckSum{2954}
+% \CheckSum{2948}
%
%\iffalse
% This file is built for \LaTeXe, so we make sure an error is
@@ -39,7 +39,7 @@
\ProvidesFile{changebar.dtx}
%</dtx>
%<+package>\ProvidesPackage{changebar}
- [2024/01/09 v3.7d Indicate changes with marginal bars]
+ [2024/07/17 v3.7e Indicate changes with marginal bars]
% \end{macrocode}
%
% \section{A driver for this document}
@@ -137,7 +137,10 @@
% \changes{v3.6e}{2023/08/13}{Added supprt for luaTeX}
% \changes{v3.7b}{2023/12/28}{Added a few lines that were inadvertantly removed}
% \changes{v3.7b}{2023/12/30}{the cb2-file use delimiting chars may
-% change meaning when they end up in the wrong situation}
+% change meaning when they end up in the wrong situation}
+% \changes{v3.7e}{2024/07/17}{The us of the character `;´ as a string
+% separator clashes with it's active variant when babel/french has
+% been loaded}
%
% \title{The Changebar package
% \thanks{This file has version number \fileversion,
@@ -229,9 +232,7 @@
% \changes{v3.6a}{2011/04/30}{XeTeX added}
% \item Xe\TeX
% \changes{3.6e}{2023/08/13}{luaTeX added}
-% \begin{changebar}
% \item lua\TeX
-% \end{changebar}
% \end{itemize}
% The drivers are represented in the normal typewriter method of
% typing these names, or by the same entirely in lower case.
@@ -752,7 +753,7 @@
% \item V\TeX
% \item PDF\TeX
% \item Xe\TeX
-% \cbstart\item luaTeX\cbend
+% \item luaTeX
% \end{itemize}
%
% The intent is that the driver names should be case-insensitive,
@@ -799,10 +800,17 @@
% \end{macrocode}
% Redefine the |\cb@pdfxy| macro to write point coordinates to the
% \file{.cb2} file.
-% \changes{v3.7b}{2023/12/30}{use ¨;¨ instead of ¨,¨ as delimiter}
+% \changes{v3.7b}{2023/12/30}{use ";" instead of "," as delimiter}
+% \changes{v3.7e}{2024/07/17}{Use "/" instead of ";" as delimiter}
% \begin{macrocode}
\gdef\cb@pdfxy##1##2##3##4##5{%
- \immediate\write\cb@writexy{##1.##2p##3;##4;##5}%
+% \end{macrocode}
+% \begin{changebar}
+% \begin{macrocode}
+ \immediate\write\cb@writexy{##1.##2p##3/##4/##5}%
+% \end{macrocode}
+% \end{changebar}
+% \begin{macrocode}
\expandafter\gdef\csname cb@##1.##2\endcsname{##3,##4,##5}}
\else\cb@pdftexerror\fi\fi\fi}
% \end{macrocode}
@@ -837,10 +845,17 @@
% \end{macrocode}
% Redefine the |\cb@pdfxy| macro to write point coordinates to the
% \file{.cb2} file.
-% \changes{v3.7b}{2023/12/30}{use ¨;¨ instead of ¨,¨ as delimiter}
+% \changes{v3.7b}{2023/12/30}{use ";" instead of "," as delimiter}
+% \changes{v3.7e}{2024/07/17}{Use "/" instead of ";" as delimiter}
% \begin{macrocode}
\gdef\cb@pdfxy##1##2##3##4##5{%
- \immediate\write\cb@writexy{##1.##2p##3;##4;##5}%
+% \end{macrocode}
+% \begin{changebar}
+% \begin{macrocode}
+ \immediate\write\cb@writexy{##1.##2p##3/##4/##5}%
+% \end{macrocode}
+% \end{changebar}
+% \begin{macrocode}
\expandafter\gdef\csname cb@##1.##2\endcsname{##3,##4,##5}}
\gdef\sec@nd@ftw@##1 ##2{##2}
\fi}
@@ -854,7 +869,6 @@
{You are not using XeLaTeX}}
% \end{macrocode}
%
-% \begin{changebar}
% \begin{macrocode}
\DeclareOption{luaTeX}{\cb@luatexcheck}
\DeclareOption{luatex}{\cb@luatexcheck}
@@ -877,10 +891,17 @@
% \end{macrocode}
% Redefine the |\cb@pdfxy| macro to write point coordinates to the
% \file{.cb2} file.
-% \changes{v3.7b}{2023/12/30}{use ¨;¨ instead of ¨,¨ as delimiter}
+% \changes{v3.7b}{2023/12/30}{use ";" instead of ",¨ as delimiter}
+% \changes{v3.7e}{2024/07/17}{Use "/" instead of ";" as delimiter}
% \begin{macrocode}
\gdef\cb@pdfxy##1##2##3##4##5{%
- \immediate\write\cb@writexy{##1.##2p##3;##4;##5}%
+% \end{macrocode}
+% \begin{changebar}
+% \begin{macrocode}
+ \immediate\write\cb@writexy{##1.##2p##3/##4/##5}%
+% \end{macrocode}
+% \end{changebar}
+% \begin{macrocode}
\expandafter\gdef\csname cb@##1.##2\endcsname{##3,##4,##5}}
\fi}
% \end{macrocode}
@@ -892,7 +913,6 @@
{luaTeX option cannot be used}%
{You are not using luaLaTeX}}
% \end{macrocode}
-% \end{changebar}
%
% The new features of \LaTeXe\ make it possible to implement the
% \Lopt{outerbars} option.
@@ -1120,6 +1140,8 @@
% compatibility mode}
% \changes{v3.3e}{1998/02/24}{Added \cs{Textures}}
% \changes{v3.5a}{2005/05/23}{Added 'PDFtex' option}
+% \changes{v3.6a}{2011/04/30}{Added 'XeTeX' option}
+% \changes{v3.6e}{2023/08/13}{Added 'luaTeX' option}
% \begin{macrocode}
\if@compatibility
\def\driver#1{%
@@ -1132,17 +1154,9 @@
\def\Textures{TEXTURES}%
\def\VTeX{VTEX}%
\def\pdfTeX{PDFTEX}%
-% \end{macrocode}
-% \changes{v3.6a}{2011/04/30}{Added 'XeTeX' option}
-% \begin{macrocode}
\def\xeTeX{XETEX}
-% \end{macrocode}
-% \changes{v3.6e}{2023/08/13}{Added 'luaTeX' option}
-% \begin{changebar}
-% \begin{macrocode}
\def\luaTeX{LUATEX}
% \end{macrocode}
-% \end{changebar}
%
% The choice has to be communicated to the macro
% \verb=\cb@setup@specials= that will be called from within
@@ -1150,6 +1164,7 @@
% \verb=\cb@driver@setup= is used. It receives a numeric value
% using \verb=\chardef=.
% \changes{v3.6a}{2011/04/30}{Added 'XeTeX' option}
+% \changes{v3.6e}{2023/08/13}{Added 'luaTeX' option}
% \begin{macrocode}
\global\chardef\cb@driver@setup=0\relax
\ifx\tempa\LN \global\chardef\cb@driver@setup=0\fi
@@ -1160,14 +1175,7 @@
\ifx\tempa\VTeX \global\chardef\cb@driver@setup=5\fi
\ifx\tempa\pdfTeX \cb@pdftexcheck\fi
\ifx\tempa\xeTeX \cb@xetexcheck\fi
-% \end{macrocode}
-% \changes{v3.6e}{2023/08/13}{Added 'luaTeX' option}
-% \begin{changebar}
-% \begin{macrocode}
\ifx\tempa\luaTeX \cb@luatexcheck\fi
-% \end{macrocode}
-% \end{changebar}
-% \begin{macrocode}
\egroup}
% \end{macrocode}
% We add \verb+\driver+ to \verb+\@preamblecmds+, which is a
@@ -1464,11 +1472,22 @@
% When the point is found it is removed from |\cb@pdfpoints|. \#9
% contains the cumulative head of the list to construct the new list
% with the entry removed. \#3--\#8 are for pattern matching.
-% \changes{v3.7b}{2023/12/30}{use ¨;¨ instead of ¨,¨ as delimiter}
+% \changes{v3.7b}{2023/12/30}{use ";" instead of "," as delimiter}
+% \changes{v3.7e}{2024/07/17}{Use "/" instead of ";" as delimiter}
+% \begin{changebar}
+% \begin{macrocode}
+ \def\cb@pdffind##1##2##3.##4p##5/##6/##7pt##8\relax##9{%
+% \end{macrocode}
+% \end{changebar}
% \begin{macrocode}
- \def\cb@pdffind##1##2##3.##4p##5;##6;##7pt##8\relax##9{%
\def\cb@next{%
- \cb@pdffind{##1}{##2}##8\relax{##9##3.##4p##5;##6;##7pt}}%
+% \end{macrocode}
+% \begin{changebar}
+% \begin{macrocode}
+ \cb@pdffind{##1}{##2}##8\relax{##9##3.##4p##5/##6/##7pt}}%
+% \end{macrocode}
+% \end{changebar}
+% \begin{macrocode}
\ifnum ##1=##3
\ifnum ##2=##4
\def\cb@pdfx{##5sp}%
@@ -1519,8 +1538,13 @@
% \begin{macro}{\cb@pdfparsexy}
% The |\cb@pdfparsexy| macro extracts the pagecount from an entry read in
% from the \file{.cb2} file.
+% \changes{v3.7e}{2024/07/17}{Use "/" instead of ";" as delimiter}
+% \begin{changebar}
+% \begin{macrocode}
+ \def\cb@pdfparsexy##1.##2p##3/##4/##5pt{%
+% \end{macrocode}
+% \end{changebar}
% \begin{macrocode}
- \def\cb@pdfparsexy##1.##2p##3;##4;##5pt{%
\def\cb@pdfpg{##2}}%
% \end{macrocode}
% \end{macro}
@@ -1565,7 +1589,7 @@
% In order to get things in the right spot we need a little scaling
% factor. We define it here.
% \begin{macrocode}
-\def\cb@pdf@scale{0.996264009963}
+ \def\cb@pdf@scale{0.996264009963}
% \end{macrocode}
% \end{macro}
%
@@ -1636,14 +1660,12 @@
% \begin{macrocode}
\gdef\cb@checkPdfxy##1##2##3##4##5{%
\cb@@findpdfpoint{##1}{##2}%
-% \end{macrocdode}
-% \begin{changebar}
-% \begin{macrocode
+% \end{macrocode}
+% \begin{macrocode}
\ifdim##3sp=\cb@pdfx\relax
\ifdim##4sp=\cb@pdfy\relax
-% \end{macrocdode}
-% \end{changebar}
-% \begin{macrocode
+% \end{macrocode}
+% \begin{macrocode}
\ifdim##5=\cb@pdfz\relax
\else
\cb@error
@@ -1741,11 +1763,22 @@
% When the point is found it is removed from |\cb@pdfpoints|. \#9
% contains the cumulative head of the list to construct the new list
% with the entry removed. \#3--\#8 are for pattern matching.
-% \changes{v3.7b}{2023/12/30}{use ¨;¨ instead of ¨,¨ as delimiter}
+% \changes{v3.7b}{2023/12/30}{use ";" instead of "," as delimiter}
+% \changes{v3.7e}{2024/07/17}{Use "/" instead of ";" as delimiter}
+% \begin{changebar}
+% \begin{macrocode}
+ \def\cb@pdffind##1##2##3.##4p##5/##6/##7pt##8\relax##9{%
+% \end{macrocode}
+% \end{changebar}
% \begin{macrocode}
- \def\cb@pdffind##1##2##3.##4p##5;##6;##7pt##8\relax##9{%
\def\cb@next{%
- \cb@pdffind{##1}{##2}##8\relax{##9##3.##4p##5;##6;##7pt}}%
+% \end{macrocode}
+% \begin{changebar}
+% \begin{macrocode}
+ \cb@pdffind{##1}{##2}##8\relax{##9##3.##4p##5/##6/##7pt}}%
+% \end{macrocode}
+% \end{changebar}
+% \begin{macrocode}
\ifnum ##1=##3
\ifnum ##2=##4
\def\cb@pdfx{##5sp}%
@@ -1796,8 +1829,13 @@
% \begin{macro}{\cb@pdfparsexy}
% The |\cb@pdfparsexy| macro extracts the pagecount from an entry read in
% from the \file{.cb2} file.
+% \changes{v3.7e}{2024/07/17}{Use "/" instead of ";" as delimiter}
+% \begin{changebar}
+% \begin{macrocode}
+ \def\cb@pdfparsexy##1.##2p##3/##4/##5pt{%
+% \end{macrocode}
+% \end{changebar}
% \begin{macrocode}
- \def\cb@pdfparsexy##1.##2p##3;##4;##5pt{%
\def\cb@pdfpg{##2}}%
% \end{macrocode}
% \end{macro}
@@ -1842,7 +1880,7 @@
% In order to get things in the right spot we need a little scaling
% factor. We define it here.
% \begin{macrocode}
-\def\cb@pdf@scale{0.996264009963}
+ \def\cb@pdf@scale{0.996264009963}
% \end{macrocode}
% \end{macro}
%
@@ -1934,7 +1972,6 @@
\let\cb@resetpoints\relax
% \end{macrocode}
%
-% \begin{changebar}
% \changes{v3.6e}{2023/08/13}{lua\TeX{} support added}
% The code for lua\TeX{}, like for pdf\TeX\ and Xe\TeX,
% is more elaborate as the calculations have to
@@ -2012,11 +2049,22 @@
% When the point is found it is removed from |\cb@pdfpoints|. \#9
% contains the cumulative head of the list to construct the new list
% with the entry removed. \#3--\#8 are for pattern matching.
-% \changes{v3.7b}{2023/12/30}{use ¨;¨ instead of ¨,¨ as delimiter}
+% \changes{v3.7b}{2023/12/30}{use ";" instead of "," as delimiter}
+% \changes{v3.7e}{2024/07/17}{Use "/" instead of ";" as delimiter}
+% \begin{changebar}
+% \begin{macrocode}
+ \def\cb@pdffind##1##2##3.##4p##5/##6/##7pt##8\relax##9{%
+% \end{macrocode}
+% \end{changebar}
% \begin{macrocode}
- \def\cb@pdffind##1##2##3.##4p##5;##6;##7pt##8\relax##9{%
\def\cb@next{%
- \cb@pdffind{##1}{##2}##8\relax{##9##3.##4p##5;##6;##7pt}}%
+% \end{macrocode}
+% \begin{changebar}
+% \begin{macrocode}
+ \cb@pdffind{##1}{##2}##8\relax{##9##3.##4p##5/##6/##7pt}}%
+% \end{macrocode}
+% \end{changebar}
+% \begin{macrocode}
\ifnum ##1=##3
\ifnum ##2=##4
\def\cb@pdfx{##5sp}%
@@ -2067,8 +2115,13 @@
% \begin{macro}{\cb@pdfparsexy}
% The |\cb@pdfparsexy| macro extracts the pagecount from an entry read in
% from the \file{.cb2} file.
+% \changes{v3.7e}{2024/07/17}{Use "/" instead of ";" as delimiter}
+% \begin{changebar}
+% \begin{macrocode}
+ \def\cb@pdfparsexy##1.##2p##3/##4/##5pt{%
+% \end{macrocode}
+% \end{changebar}
% \begin{macrocode}
- \def\cb@pdfparsexy##1.##2p##3;##4;##5pt{%
\def\cb@pdfpg{##2}}%
% \end{macrocode}
% \end{macro}
@@ -2113,7 +2166,7 @@
% In order to get things in the right spot we need a little scaling
% factor. We define it here.
% \begin{macrocode}
-\def\cb@pdf@scale{0.996264009963}
+ \def\cb@pdf@scale{0.996264009963}
% \end{macrocode}
% \end{macro}
%
@@ -2203,7 +2256,6 @@
\def\cb@maxpoint{9999999}
\let\cb@resetpoints\relax
% \end{macrocode}
-%\end{changebar}
%
% When code for other drivers should be added it can be inserted
% here. When someone makes a mistake and somehow selects an
@@ -2296,7 +2348,7 @@
\newcommand*{\nochangebars}{%
\def\cb@start[##1]{\ignorespaces}%
\def\cb@delete[##1]{}%
- \def\cb@end{\ignorespacesafterend}
+ \def\cb@end{\ignorespacesafterend}%
}
% \end{macrocode}
% \end{macro}
diff --git a/macros/latex/contrib/changebar/changebar.pdf b/macros/latex/contrib/changebar/changebar.pdf
index b313fe1c53..9025ebb624 100644
--- a/macros/latex/contrib/changebar/changebar.pdf
+++ b/macros/latex/contrib/changebar/changebar.pdf
Binary files differ
diff --git a/macros/latex/contrib/chemformula-ru/chemformula-ru.pdf b/macros/latex/contrib/chemformula-ru/chemformula-ru.pdf
index 09126f6cc1..bed9614116 100644
--- a/macros/latex/contrib/chemformula-ru/chemformula-ru.pdf
+++ b/macros/latex/contrib/chemformula-ru/chemformula-ru.pdf
Binary files differ
diff --git a/macros/latex/contrib/chemformula-ru/chemformula-ru.sty b/macros/latex/contrib/chemformula-ru/chemformula-ru.sty
index f1df3002c1..32b6e23fa1 100644
--- a/macros/latex/contrib/chemformula-ru/chemformula-ru.sty
+++ b/macros/latex/contrib/chemformula-ru/chemformula-ru.sty
@@ -1,5 +1,5 @@
%% The chemformula-ru package eliminates an incompatibility
-%% between the chemformula package and Russian settings (russian.ldf) of the babel package.
+%% between the chemformula package and Russian settings (russian.ldf) for the babel package.
%%
%% Copyright (c) 2024 by Alexey Kuznetsov (mailtokuznetsov at gmail.com)
%%
@@ -12,21 +12,21 @@
%% version 2008/05/04 or later.
%%
-\ProvidesPackage{chemformula-ru}[2024-03-01 Using chemformula package with babel-russian]
+\ProvidesPackage{chemformula-ru}[2024-07-10 Using chemformula package with babel-russian]
\DeclareOption{cosh2ch}{\def\cosh@ch{\DeclareRobustCommand\cosh{\mathop{\operator@font ch}\nolimits}}}
\DeclareOption{ch2Ch}{\def\ch@Ch{\DeclareRobustCommand\Ch{\mathop{\operator@font ch}\nolimits}}}
+\DeclareOption*{\PassOptionsToPackage\CurrentOption{chemformula}}
\ProcessOptions\relax
+\RequirePackage{chemformula}
+
\BeforeBeginEnvironment{document}{
- \IfPackageLoadedTF{chemformula}{
- \IfPackageLoadedWithOptionsTF{babel}{russian}{
- \let\@Chem@Formula\ch \let\ch\undefined
- \AtBeginDocument{ \let\ch\@Chem@Formula
- \@ifundefined{cosh@ch}{\relax}{\cosh@ch}
- \@ifundefined{ch@Ch}{\relax}{\ch@Ch}
- }
- } { \relax }
- } { \relax }
-}
+ \let\@Chem@Formula\ch \let\ch\undefined
+ \AtBeginDocument{
+ \let\ch\@Chem@Formula
+ \@ifundefined{cosh@ch}{\relax}{\cosh@ch}
+ \@ifundefined{ch@Ch}{\relax}{\ch@Ch}
+ } }
+
\endinput
diff --git a/macros/latex/contrib/chemformula-ru/chemformula-ru.tex b/macros/latex/contrib/chemformula-ru/chemformula-ru.tex
index 02edcbca41..192da90cb4 100644
--- a/macros/latex/contrib/chemformula-ru/chemformula-ru.tex
+++ b/macros/latex/contrib/chemformula-ru/chemformula-ru.tex
@@ -3,7 +3,6 @@
\geometry{total={180mm, 267mm}, centering}
\usepackage[russian]{babel}
-\usepackage{chemformula}
\usepackage[ch2Ch,cosh2ch]{chemformula-ru}
\usepackage{array,multicol}
@@ -11,7 +10,7 @@
\title{The \textsf{chemformula-ru} package}
\author{Alexey Kuznetsov}
-\date{01.03.2024}
+\date{10.07.2024}
\maketitle
\begin{multicols}{2}
@@ -23,9 +22,8 @@ Russian settings of the \textsf{babel} package \textsf{(russianb.ldf)} define th
\mbox{}\hfil\verb|$\ch x$|\ $\to\ \Ch x$.\\[.5ex]
Loading packages together leads to the error\\[1ex]
\mbox{}\hfil\verb|! LaTeX Error: Command \ch already defined.|\\[1ex]
-The \textsf{chemformula-ru} package ``neutralizes'' it by making the babel's command undefined.
-
-The package has two parameters to configure the printing of the hyperbolic cosine in Russian notation:\\[1ex]
+The \textsf{chemformula-ru} package loads the \textsf{chemformula} and ``neutralizes'' the error by making the babel's command undefined.
+Two it's parameters configure printing of the hyperbolic cosine in Russian notation:\\[1ex]
\begin{tabular}{>\sf l @{ ---\quad } p{.75\linewidth}}
cosh2ch & overrides the \verb|\cosh| command for printing:\linebreak
\verb|$\cosh x$| $\to \cosh x$. \\[1ex]
@@ -37,13 +35,12 @@ ch2Ch & defines a new \verb|\Ch| command for printing:\linebreak
\mbox{}\hfil\verb|\сh{|\textit{химическая фоормула}\verb|}|\\[.5ex]
для верстки химических формул:\\[.5ex]
\mbox{}\hfil\verb|\ch{H3PO4}| $\to$ \ch{H3PO4}.\\[.5ex]
-Русские настройки пакета \textsf{babel (russianb.ldf)} определяют одноименную команду для печати гиперболического косинуса:\\[-.5ex]
+Русские настройки пакета \textsf{babel (russianb.ldf)} определяют одноименную команду для печати гиперболического косинуса:\\[-.85\baselineskip]
\mbox{}\hfil\verb|$\ch x$|\ $\to\ \Ch x$.\\[.5ex]
Cовместная загрузка пакетов ведет к ошибке\\[1ex]
\mbox{}\hfil\verb|! LaTeX Error: Command \ch already defined.|\\[1ex]
-Пакет \textsf{chemformula-ru} <<нейтрализует>> ее, делая команду пакета \textsf{babel} неопределенной.
-
-Пакет имеет два параметра, настраивающих печать гиперболического косинуса в русских нотациях:\\[1ex]
+Пакет \textsf{chemformula-ru} загружает \textsf{chemformula} и <<нейтрализует>> ошибку, делая команду пакета \textsf{babel} неопределенной.
+Два его параметра настраивают печать гиперболического косинуса в русских нотациях:\\[1ex]
\begin{tabular}{>\sf l @{ --- } p{.8\linewidth}}
cosh2ch & переопределяет для печати команду \verb|\cosh|:\linebreak
\verb|$\cosh x$| $\to \cosh x$. \\[1ex]
@@ -52,10 +49,11 @@ ch2Ch & определяет для печати новую команду \verb
\end{tabular}
\end{multicols}
+\thispagestyle{empty}
+
\noindent\hrulefill
\begin{verbatim}
-
%% Redefine \cosh to print ch.
\DeclareOption{cosh2ch}{\def\cosh@ch{%
\DeclareRobustCommand\cosh{\mathop{\operator@font ch}\nolimits}}}
@@ -64,19 +62,22 @@ ch2Ch & определяет для печати новую команду \verb
\DeclareOption{ch2Ch}{\def\ch@Ch{%
\DeclareRobustCommand\Ch{\mathop{\operator@font ch}\nolimits}}}
+%% Pass all other options to the chemformula package.
+\DeclareOption*{\PassOptionsToPackage\CurrentOption{chemformula}}
+
\ProcessOptions\relax
+\RequirePackage{chemformula}
+
\BeforeBeginEnvironment{document}{
- \IfPackageLoadedTF{chemformula}{
- \IfPackageLoadedWithOptionsTF{babel}{russian}{
- \let\@Chem@Formula\ch \let\ch\undefined
- \AtBeginDocument{ \let\ch\@Chem@Formula
- \@ifundefined{cosh@ch}{\relax}{\cosh@ch}
- \@ifundefined{ch@Ch}{\relax}{\ch@Ch}
- }
- } { \relax }
- } { \relax }
-}
+ \let\@Chem@Formula\ch \let\ch\undefined
+ \AtBeginDocument{
+ \let\ch\@Chem@Formula
+ \@ifundefined{cosh@ch}{\relax}{\cosh@ch}
+ @ifundefined{ch@Ch}{\relax}{\ch@Ch}
+ } }
+
+\endinput
\end{verbatim}
\end{document}
diff --git a/macros/latex/contrib/cjs-rcs-article/README.md b/macros/latex/contrib/cjs-rcs-article/README.md
index 69c983dbb7..aa152dd5fd 100644
--- a/macros/latex/contrib/cjs-rcs-article/README.md
+++ b/macros/latex/contrib/cjs-rcs-article/README.md
@@ -16,11 +16,12 @@ compatible with the traditional engine pdfLaTeX.
## Licence
LaTeX Project Public License, version 1.3c or (at your option) any
-later version.
+later version. The documentation is also licensed under CC BY-SA 4.0
+International.
## Version
-1.0 (2023-11-29)
+1.1a (2024-07-30)
## Author
@@ -103,7 +104,7 @@ version history of the bibliographic styles appears in
## Comments or suggestions
-The Gitlab [project repository](https://gitlab.com/cjs-rcs/cjs-rcs-article)
+The GitLab [project repository](https://gitlab.com/cjs-rcs/cjs-rcs-article)
is the best place to report bugs or to propose improvements to the
project.
@@ -127,11 +128,12 @@ grande partie compatible avec le moteur pdfLaTeX.
## Licence
LaTeX Project Public License, version 1.3c ou (à votre choix) toute
-version ultérieure.
+version ultérieure. La documentation est également publiée sous
+licence CC BY-SA 4.0 International.
## Version
-1.0 (2023-11-29)
+1.1a (2024-07-30)
## Auteur
diff --git a/macros/latex/contrib/cjs-rcs-article/cjs-rcs-article-fr.pdf b/macros/latex/contrib/cjs-rcs-article/cjs-rcs-article-fr.pdf
index 5ec31c2669..fd93cf709b 100644
--- a/macros/latex/contrib/cjs-rcs-article/cjs-rcs-article-fr.pdf
+++ b/macros/latex/contrib/cjs-rcs-article/cjs-rcs-article-fr.pdf
Binary files differ
diff --git a/macros/latex/contrib/cjs-rcs-article/cjs-rcs-article.dtx b/macros/latex/contrib/cjs-rcs-article/cjs-rcs-article.dtx
index 9376ddbbf3..a750c136f5 100644
--- a/macros/latex/contrib/cjs-rcs-article/cjs-rcs-article.dtx
+++ b/macros/latex/contrib/cjs-rcs-article/cjs-rcs-article.dtx
@@ -3,7 +3,7 @@
% Article class for The Canadian Journal of Statistics | La revue
% canadienne de statistique
%
-% Copyright (C) Statistical Society of Canada | Société
+% Copyright (C) 2023-2024 Statistical Society of Canada | Société
% canadienne de statistique
%
% The class file and templates derived from this file are licenced
@@ -25,10 +25,10 @@
%<*driver>
\ProvidesFile{cjs-rcs-article.dtx}
%</driver>
-%<class>\NeedsTeXFormat{LaTeX2e}[2009/09/24]
+%<class>\NeedsTeXFormat{LaTeX2e}[2021/06/01]
%<class>\ProvidesClass{cjs-rcs-article}%
%<*class>
- [2023/11/29 v1.0 Article class for The Canadian Journal of
+[2024/07/30 v1.1a Article class for The Canadian Journal of
Statistics | La revue canadienne de statistique]
%</class>
%<*driver>
@@ -122,6 +122,10 @@
\OnlyDescription
\fi
+ %% Additional colors
+ \colorlet{codebg}{LightYellow1} % code background
+ \colorlet{prompt}{Orchid4} % command prompt
+
%% New \DescribeMacro type environments for class options and lengths
\NewDocElement[envlike,notoplevel,printtype=\emph{option}]{Option}{option}
\NewDocElement[macrolike,notoplevel,printtype=$\ell$]{Length}{length}
@@ -139,9 +143,12 @@
\newcommand*\CJSbstfr{\code{cjs-rcs-fr}}
\makeatother
+ %% URL of the project repository
+ \newcommand*\reposurl{https://gitlab.com/cjs-rcs/cjs-rcs-article}
+
%% Redefine \year using information from \filedate instead of using
%% compilation time
- \def\parsedate#1/#2/#3\relax{\def\year{#1}}
+ \def\parsedate#1/#2/#3\relax{\def\year{#1}\def\isodate{#1-#2-#3}}
%% Definition of a shorthand to either hyphenate a word or insert a
%% regular dash. Use in the long names of Creative Commons licences.
@@ -149,6 +156,26 @@
\useshorthands*{"}
\defineshorthand{"-}{\discretionary{-}{}{-}}
+ %% Source code
+ \usepackage{listings}
+ \lstset{%
+ basicstyle=\ttfamily\NoAutoSpacing,
+ moredelim=[is][\color{prompt}]{---}{-},
+ escapeinside=`',
+ showstringspaces=false,
+ backgroundcolor=\color{codebg},
+ frame=leftline,
+ framerule=2pt,
+ framesep=5pt,
+ xleftmargin=7.4pt
+ }
+
+ %% The \meta command from memoir needs an additionnel \normalfont to
+ %% use the document font in listings.
+ \makeatletter
+ \def\meta@font@select{\normalfont\itshape}
+ \makeatother
+
\begin{document}
\DocInput{cjs-rcs-article.dtx}
\end{document}
@@ -257,6 +284,22 @@
% CTAN.}
% \changes{1.0}{2023-11-29}{Fix various typos and cosmetic issues in
% the documentation.}
+% \changes{1.1}{2024-06-26}{Provide support to acknowledge usage of
+% data from the Alzheimer’s Disease Neuroimaging Initiative (ADNI) and
+% the Alzheimer’s Disease Neuroimaging Metabolomics Consortium
+% (ADMC).}
+% \changes{1.1}{2024-06-26}{Introduce new commands \cs{specialack} and
+% \cs{specialackmark} for the editors.}
+% \changes{1.1}{2024-06-23}{Improve the documentation, in particular
+% the installation instructions and access to the templates.}
+% \changes{1.1}{2024-07-02}{Add the References section to the table of
+% contents of the PDF.}
+% \changes{1.1}{2024-07-13}{Add the command \cs{matit} to typeset bold
+% italic in math in a portable way.}
+% \changes{1.1a}{2024-07-25}{Fix the command \cs{proglang} that would
+% disable hyphenation for the rest of the document. With thanks to
+% Enrico Gregorio (egreg) for the heads up in person at TUG 2024.}
+% \changes{1.1a}{2024-07-25}{Make the command \cs{proglang} robust.}
%
% \ifenglish%
% \title[Guide to the class {\CJSclass}]{%
@@ -353,11 +396,9 @@
% {\CJSclass} requiert une distribution {\TeX} récente et
% à jour. Nous recommandons les distributions %
% \fi
-% \href{https://tug.org/texlive}{{\TeX}~Live} %
-% --- %
+% \href{https://tug.org/texlive}{{\TeX}~Live}\ifenglish---\else~--- \fi%
% \ifenglish or its variant for macOS \else ou sa variante pour macOS \fi%
-% \href{https://tug.org/mactex}{Mac{\TeX}} %
-% --- %
+% \href{https://tug.org/mactex}{Mac{\TeX}}\ifenglish---\else~--- \fi%
% \ifenglish and \else et \fi%
% \href{https://miktex.org}{MiK{\TeX}}. %
% \ifenglish%
@@ -425,17 +466,28 @@
% \section{Démarrage rapide}
% \fi
% \label{sec:quick-start}
+% \changes{1.1}{2024-06-05}{Documentation: add a link to obtain the
+% templates in the \emph{Quick start} section.}
%
% \ifenglish%
% The class ships with templates for articles in English and in
% French. In {\TeX}~Live, these are located with the
-% documentation of the class. To quickly start writing your article,
-% copy the appropriate template to your working directory and follow
-% the brief instructions therein. %
+% documentation of the class. You may also obtain the templates from
+% the %
% \else%
% La classe est livrée avec des gabarits pour des articles en français
% et en anglais. Dans la distribution {\TeX}~Live, ceux-ci sont
-% classés avec la documentation. Pour débuter rapidement la rédaction
+% classés avec la documentation. Vous pouvez aussi les récupérer
+% depuis le %
+% \fi%
+% \href{\reposurl/-/releases/\fileversion}{%
+% \ifenglish project repository\else dépôt du projet\fi}. %
+% \ifenglish%
+% To quickly start writing your article, copy the appropriate template
+% to your working directory and follow the brief instructions
+% therein. %
+% \else%
+% Pour débuter rapidement la rédaction
% de votre article, copiez le gabarit approprié dans votre dossier de
% travail et suivez les directives succinctes qui s'y trouvent. %
% \fi
@@ -490,6 +542,9 @@
% \changes{0.91}{2023-10-16}{Change the name of the archive containing
% a ``local'' installation of the class from
% \texttt{-no-local-tex.zip} to \texttt{-project-install.zip}.}
+% \changes{1.1}{2024-06-05}{Documentation: provide a direct link to
+% the release corresponding to the version of the documentation in the
+% \emph{Installation} section.}
%
% \ifenglish%
% The class {\CJSclass} is distributed as the package %
@@ -507,21 +562,33 @@
% the command line: %
% \else%
% via le réseau de sites \emph{Comprehensive {\TeX} Archive Network}
-% (CTAN). Elle fait partie des distributions {\TeX} standards telles
-% que {TeX}~Live, Mac{\TeX} et MiK{\TeX}. Nous recommandons fortement
-% d'installer ou de mettre à jour le paquetage à l'aide du
+% (CTAN). Celui-ci fait partie des distributions {\TeX} standards
+% telles que {TeX}~Live, Mac{\TeX} et MiK{\TeX}. Nous recommandons
+% fortement d'installer ou de mettre à jour le paquetage à l'aide du
% gestionnaire de paquetages de votre distribution {\TeX}. Par
-% exemple, avec {\TeX}~Live, vous pouvez effectuer ces opérations dans
-% l'assistant graphique, ou encore avec l'une ou l'autre des commandes
-% ci-dessous: %
+% exemple, avec {\TeX}~Live, vous pouvez effectuer ces opérations
+% dans l'assistant graphique, ou encore avec l'une ou l'autre des
+% commandes ci-dessous: %
+% \fi
+% \iffalse
+%<*example>
+% \fi
+\begin{lstlisting}
+---$- tlmgr install cjs-rcs-article
+\end{lstlisting}
+% \iffalse
+%</example>
% \fi
-% \begin{quote}
-% \code{tlmgr install cjs-rcs-article}
-% \end{quote}
% \ifenglish or\else ou\fi
-% \begin{quote}
-% \code{tlmgr update cjs-rcs-article}
-% \end{quote}
+% \iffalse
+%<*example>
+% \fi
+\begin{lstlisting}
+---$- tlmgr update cjs-rcs-article
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
%
% \ifenglish%
% If you are not in position to install packages or update the {\TeX}
@@ -530,23 +597,23 @@
% limited in scope to your project. Download the archive %
% \else%
% S'il vous est impossible d'installer des paquetages ou de mettre à
-% jour la distribution {\TeX} --- notamment si vous utilisez une
-% plateforme de rédaction en ligne --- vous pouvez procéder à une
+% jour la distribution {\TeX}~--- notamment si vous utilisez une
+% plateforme de rédaction en ligne~--- vous pouvez procéder à une
% installation simplifiée de la classe, mais dont la portée sera
% limitée à votre projet. Pour ce faire, téléchargez l'archive %
% \fi%
% \code{cjs-rcs-article-project-install.zip} %
% \ifenglish from the \else depuis le \fi%
-% \href{https://gitlab.com/cjs-rcs/cjs-rcs-article/-/releases}{%
-% \ifenglish project repository\else dépôt du projet\fi} %
+% \href{\reposurl/-/releases/\fileversion}{%
+% \ifenglish project repository\else dépôt du projet\fi}, %
% \ifenglish%
-% and uncompress it in the directory of your project. You will then
-% have access to all the essential files of the class within this
-% project. %
+% uncompress it and place its contents in the directory of your
+% project. You will then have access to all the essential files of the
+% class within this project. %
% \else%
-% et décompressez celle-ci dans le répertoire de votre projet. Vous
-% disposerez alors de tous les fichiers essentiels de la classe à
-% l'intérieur de ce projet. %
+% décompressez celle-ci et placez son contenu dans le répertoire de
+% votre projet. Vous disposerez alorsà l'intérieur de ce projet de
+% tous les fichiers essentiels de la classe. %
% \fi
%
% \ifenglish%
@@ -631,7 +698,7 @@
% {pdf\LaTeX} utilise les versions Type~1 des polices STIX~Two et
% Fira. Or, la technologie Type~1 PostScript étant aujourd'hui
% obsolète, ces polices ne sont plus mises à jour. Le moteur
-% {\XeLaTeX} utilise les plus modernes --- et complètes --- versions
+% {\XeLaTeX} utilise les plus modernes~--- et complètes~--- versions
% OpenType des polices.}, %
% nous recommandons de compiler votre manuscript avec le plus moderne
% moteur {\XeLaTeX}. %
@@ -643,24 +710,34 @@
% \subsection{Gabarits}
% \fi
% \label{sec:usage:templates}
+% \changes{1.1}{2024-06-05}{Documentation: add a link to the templates
+% in the \emph{Templates} sub-section.}
%
% \ifenglish%
% The class is distributed with templates for articles in English
% and in French. If you are using the version of the class included
% with your {\TeX} distribution, the templates may be located with the
-% documentation (this is the case in {\TeX}~Live). If you installed
-% the class manually by following the instructions in
-% \autoref{sec:installation}, the templates reside in your working
-% directory. %
+% documentation (this is the case in {\TeX}~Live). You may also obtain
+% them from the %
% \else
% La classe est distribuée avec des gabarits pour des articles en français
% et en anglais. Si vous utilisez la version de la classe fournie avec
% votre distribution {\TeX}, les gabarits peuvent être classés avec
-% la documentation (c'est le cas dans {\TeX}~Live). Si vous avez
+% la documentation (c'est le cas dans {\TeX}~Live). Vous pouvez aussi
+% les récupérer depuis le %
+% \fi
+% \href{\reposurl/-/releases/\fileversion}{%
+% \ifenglish project repository\else dépôt du projet\fi}. %%
+% \ifenglish
+% If you installed the class manually by following the instructions in
+% \autoref{sec:installation}, the templates reside in your working
+% directory. %
+% \else%
+% Si vous avez
% plutôt installé la classe manuellement en suivant les instructions
% de la \autoref{sec:installation}, les gabarits se trouvent dans
% votre dossier de travail. %
-% \fi
+% \fi%
%
% \ifenglish%
% We strongly encourage to start from a template to write your
@@ -705,13 +782,19 @@
% \label{sec:usage:options}
%
% \ifenglish%
-% The class is loaded with the command %
+% The class is loaded with the command: %
% \else%
-% On charge la classe avec la commande %
+% On charge la classe avec la commande: %
+% \fi
+% \iffalse
+%<*example>
+% \fi
+\begin{lstlisting}
+\documentclass`\oarg{options}\marg{cjs-rcs-article}'
+\end{lstlisting}
+% \iffalse
+%</example>
% \fi
-% \begin{quote}
-% \cmdprint{\documentclass}\oarg{options}\code{\{cjs-rcs-article\}}
-% \end{quote}
% \ifenglish%
% Some \meta{options} of the class are intended for the authors,
% whereas others are instead intended for the editors of {\TheCJS*}.
@@ -931,22 +1014,28 @@
% du titre qui sera utilisée dans les entêtes. La syntaxe de la
% commande est donc: %
% \fi
-% \begin{quote}
-% \def\OPT{\ifenglish Short title\else Titre court\fi}
-% \def\ARG{\ifenglish Full title\else Titre complet\fi}
-% \cmdprint{\title}\oarg{\OPT}\marg{\ARG}
-% \end{quote}
-% \ifenglish%
-% Write the title in sentence style, that is, with only an initial
-% capital. In English, also capitalize the first word after a colon.
-% Break a long title needing more than one line using \code{\bs\bs}
-% or \cmdprint{\newline}. %
-% \else%
-% Entrez le titre en minuscules (sauf pour la majuscule initiale).
-% En anglais, utilisez toutefois une majuscule initiale après un
-% deux-points. Vous devez couper manuellement avec \code{\bs\bs} ou
-% \cmdprint{\newline} un titre qui nécessite plus d'une ligne.
-% \fi
+% \iffalse
+%<*example>
+% \fi
+\def\OPT{\ifenglish Short title\else Titre court\fi}
+\def\ARG{\ifenglish Full title\else Titre complet\fi}
+\begin{lstlisting}
+\title`\oarg{\OPT}\marg{\ARG}'
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% \ifenglish%
+% Write the title in sentence style, that is, with only an initial
+% capital. In English, also capitalize the first word after a colon.
+% Break a long title needing more than one line using \code{\bs\bs}
+% or \cmdprint{\newline}. %
+% \else%
+% Entrez le titre en minuscules (sauf pour la majuscule initiale).
+% En anglais, utilisez toutefois une majuscule initiale après un
+% deux-points. Vous devez couper manuellement avec \code{\bs\bs} ou
+% \cmdprint{\newline} un titre qui nécessite plus d'une ligne.
+% \fi
% \end{DescribeMacro}
%
% \ifenglish%
@@ -994,11 +1083,17 @@
% informations relatives à un auteur de l'article. Sa syntaxe
% générale est la suivante: %
% \fi
-% \begin{quote}
-% \def\FORENAME{\ifenglish Forename\else Prénom\fi}
-% \def\SURNAME{\ifenglish Surname\else Nom\fi}
-% \cmdprint{\author}\oarg{options}\code{\{}\meta{\FORENAME}\code{ }\cmdprint{\surname}\marg{\SURNAME}\code{\}}
-% \end{quote}
+% \iffalse
+%<*example>
+% \fi
+\def\FORENAME{\ifenglish Forename\else Prénom\fi}
+\def\SURNAME{\ifenglish Surname\else Nom\fi}
+\begin{lstlisting}
+\author`\oarg{options}'{`\meta{\FORENAME}' \surname`\marg{\SURNAME}'}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
% \ifenglish%
% The \meta{Surname} must be entered using the command
% \cmd{\surname}. Write the \meta{Forename} and \meta{Surname} in
@@ -1113,15 +1208,27 @@
% \def\FORENAME{\ifenglish Forename\else Prénom\fi}
% \def\SURNAME{\ifenglish Surname\else Nom\fi}
% \item \ifenglish For the corresponding author\else Pour l'auteur correspondant\fi:
-% \begin{quote}
-% \cmdprint{\author}\code{[orcid=}\meta{id}\code{, email=}\meta{\EMAIL}\code{, corresponding]} \\
-% \verb+ +\code{\{}\meta{\FORENAME}\code{ }\cmdprint{\surname}\marg{\SURNAME}\code{\}}
-% \end{quote}
+% \iffalse
+%<*example>
+% \fi
+\begin{lstlisting}
+\author[orcid=`\meta{id}', email=`\meta{\EMAIL}', corresponding]
+ {`\meta{\FORENAME}' \surname`\marg{\SURNAME}'}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
% \item \ifenglish For all other authors\else Pour tous les autres auteurs\fi:
-% \begin{quote}
-% \cmdprint{\author}\code{[orcid=}\meta{id}\code{, email=}\meta{\EMAIL}\code{]} \\
-% \verb+ +\code{\{}\meta{\FORENAME}\code{ }\cmdprint{\surname}\marg{\SURNAME}\code{\}}
-% \end{quote}
+% \iffalse
+%<*example>
+% \fi
+\begin{lstlisting}
+\author[orcid=`\meta{id}', email=`\meta{\EMAIL}']
+ {`\meta{\FORENAME}' \surname`\marg{\SURNAME}'}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
% \end{itemize}
% \end{DescribeMacro}
% \end{DescribeMacro}
@@ -1136,11 +1243,17 @@
% mentionné dans la commande \cmd{\author} qui la précède. La forme
% générale de l'affiliation est: %
% \fi
-% \begin{quote}
-% \def\AFFIL{\ifenglish Department, University, City, Country\else%
-% Département, Université, Ville, Pays\fi}
-% \cmd{\affil}\marg{\AFFIL}
-% \end{quote}
+% \iffalse
+%<*example>
+% \fi
+\def\AFFIL{\ifenglish Department, University, City, Country\else%
+ Département, Université, Ville, Pays\fi}
+\begin{lstlisting}
+\affil`\marg{\AFFIL}'
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
% \ifenglish%
% Give the country name in the main language of the article. %
% \else%
@@ -1164,13 +1277,19 @@
% premier auteur suivi de la locution «et collab.» (en français) ou
% «et al.» (en anglais): %
% \fi
-% \begin{quote}
-% \def\SURNAME{\ifenglish Surname\else Nom\fi}
-% \def\ETAL{\ifenglish et al.\else et collab.\fi}
-% \def\ETCOLLAB{\ifenglish et collab.\else et al.\fi}
-% \cmdprint{\runningauthor}\code{\{}\meta{\SURNAME}\code{ \ETAL\}} \\
-% \cmdprint{\runningauthor}\code{\{}\meta{\SURNAME}\code{ \ETCOLLAB\}}
-% \end{quote}
+% \iffalse
+%<*example>
+% \fi
+\def\SURNAME{\ifenglish Surname\else Nom\fi}
+\def\ETAL{\ifenglish et al.\else et collab.\fi}
+\def\ETCOLLAB{\ifenglish et collab.\else et al.\fi}
+\begin{lstlisting}
+\runningauthor{`\meta{\SURNAME} \ETAL'}
+\runningauthor{`\meta{\SURNAME} \ETCOLLAB'}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
% \end{DescribeMacro}
%
% \ifenglish%
@@ -1224,16 +1343,22 @@
% mots-clés de l'article. Il s'utilise comme une liste
% \code{itemize} ou \code{enumerate}: %
% \fi
-% \begin{quote}
-% \def\KEYWORDC{\ifenglish Key word\else Mot-clé\fi}
-% \def\KEYWORD{\ifenglish key word\else mot-clé\fi}
-% \cmdprint{\begin}\code{\{keywords\}} \\
-% \cmdprint{\item} \emph{{\KEYWORDC} 1} \\
-% \cmdprint{\item} \emph{{\KEYWORD} 2} \\
-% \cmdprint{\item} \emph{{\KEYWORD} 3} \\
-% \code{...} \\
-% \cmdprint{\end}\code{\{keywords\}}
-% \end{quote}
+% \iffalse
+%<*example>
+% \fi
+\def\KEYWORDC{\ifenglish Key word\else Mot-clé\fi}
+\def\KEYWORD{\ifenglish key word\else mot-clé\fi}
+\begin{lstlisting}
+\begin{keywords}
+\item `\normalfont\itshape{\KEYWORDC} 1'
+\item `\normalfont\itshape{\KEYWORD} 2'
+\item `\normalfont\itshape{\KEYWORD} 3'
+...
+\end{keywords}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
% \ifenglish%
% As shown above, use an initial capital for the first key word
% only. Punctuation will be added automatically. %
@@ -1261,15 +1386,21 @@
% classification mathématique par matières de l'article. Son
% interface est la suivante: %
% \fi
-% \begin{quote}
-% \def\LEVEL{\ifenglish level\else niveau\fi}
-% \def\CODE{\ifenglish code\else rubrique\fi}
-% \cmdprint{\begin}\code{\{classification\}}\oarg{type} \\
-% \cmdprint{\item}\oarg{\LEVEL} \emph{{\CODE} 1}, \emph{{\CODE} 2}, \dots \\
-% \cmdprint{\item}\oarg{\LEVEL} \emph{{\CODE} 1}, \emph{{\CODE} 2}, \dots \\
-% \code{...} \\
-% \cmdprint{\end}\code{\{classification\}}
-% \end{quote}
+% \iffalse
+%<*example>
+% \fi
+\def\LEVEL{\ifenglish level\else niveau\fi}
+\def\CODE{\ifenglish code\else rubrique\fi}
+\begin{lstlisting}
+\begin{classification}`\oarg{type}'
+\item`\oarg{\LEVEL} \normalfont\itshape{\CODE} 1, {\CODE} 2, \dots'
+\item`\oarg{\LEVEL} \normalfont\itshape{\CODE} 1, {\CODE} 2, \dots'
+...
+\end{classification}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
% \ifenglish%
% The classification system used is %
% \else%
@@ -1331,7 +1462,53 @@
% les options \code{review}, \code{supplement} et \code{nocjs},
% l'espace est remplacé par un pied de page contenant le numéro de
% page. %
-% \fi%
+% \fi
+%
+% \ifenglish%
+% \subsubsection{ADNI data use agreement}
+% \else%
+% \subsubsection{Contrat d'utilisation des données de l'ADNI}
+% \fi
+% \label{sec:usage:titling:adni}
+%
+% \ifenglish%
+% The Alzheimer’s Disease Neuroimaging Initiative (ADNI) %
+% \else%
+% Le %
+% \fi
+% \href{https://adni.loni.usc.edu/wp-content/uploads/how_to_apply/ADNI_DSP_Policy.pdf}{\ifenglish Data Sharing and Publication Policy\else contrat d'utilisation des données\fi} %
+% \ifenglish%
+% requires authors using their data to acknowledge ADNI in the list of
+% authors and give a specific statement on the title page. %
+% \else%
+% de l'Alzheimer’s Disease Neuroimaging Initiative (ADNI) stipule que
+% les auteurs qui ont recours à leurs données doivent reconnaitre la
+% contribution de l'ADNI parmi les auteurs et inclure une déclaration
+% spécifique sur la page de titre de l'article. %
+% \fi
+%
+% \begin{DescribeMacro}{\ADNIacknowledgement}
+% \ifenglish%
+% The command \cmd{\ADNIacknowledgement} adds these two
+% requirements. The command has no arguments; simply insert it after
+% the declarations of the authors. %
+% \else%
+% La commande \cmd{\ADNIacknowledgement} ajoute ces deux exigences.
+% La commande n'a aucun argument; insérez simplement celle-ci après
+% toutes les autres définitions des auteurs. %
+% \fi
+% \end{DescribeMacro}
+%
+% \begin{DescribeMacro}{\ADMCacknowledgement}
+% \ifenglish%
+% Similarly, the command \cmd{\ADMCacknowledgement} acknowledges the
+% Alzheimer’s Disease Meta\-bo\-lomics Consortium (ADMC). %
+% \else%
+% De manière analogue, la commande \cmd{\ADMCacknowledgement}
+% reconnait la contribution du
+% Alzheimer’s Disease Metabolomics Consortium (ADMC). %
+% \fi
+% \end{DescribeMacro}
%
% \ifenglish%
% \subsection{Back matter information}
@@ -1342,17 +1519,19 @@
%
% \ifenglish%
% Articles in {\TheCJS} end with elements forming the so-called back
-% matter: supplementary material available online, acknowledgements,
-% etc. The class {\CJSclass} provides specialized environments to
-% enter this information. See \autoref{tab:titling} for a summary; the
-% detailed descriptions follow. %
+% matter: supplementary material available online, data sharing
+% statement, acknowledgements, etc. The class {\CJSclass} provides
+% specialized environments to enter this information. See
+% \autoref{tab:titling} for a summary; the detailed descriptions
+% follow. %
% \else%
% Un article de {\LaRevue} se termine par la présentation d'un
% ensemble d'informations dans des parties annexes: matériel
-% additionnel disponible en ligne, remerciements, etc. La classe
-% {\CJSclass} définit des environnements pour entrer ce type
-% d'information de manière uniforme. Le \autoref{tab:backmatter} en
-% présente un sommaire; les descriptions détaillées suivent. \fi
+% additionnel disponible en ligne, conditions de partage des données,
+% remerciements, etc. La classe {\CJSclass} définit des environnements
+% pour entrer ce type d'information de manière uniforme. Le
+% \autoref{tab:backmatter} en présente un sommaire; les descriptions
+% détaillées suivent. \fi
%
% \begin{table}[t]
% \centering
@@ -1428,18 +1607,34 @@
% \fi
% \end{DescribeEnv}
%
+% \changes{1.1}{2024-01-23}{Documentation: revise the description of
+% the \texttt{sharing} environment now that the CJS adhered to the
+% Expects Data Sharing editorial policy of Wiley.}
% \begin{DescribeEnv}{sharing}
+% \def\POLICYNAME{\ifenglish Expects Data Sharing\else \emph{Expects Data Sharing}\fi}
+% \ifenglish%
+% {\TheCJS} adheres to the %
+% \else%
+% {\LaRevue} respecte la politique éditoriale %
+% \fi%
+% \href{https://authorservices.wiley.com/author-resources/Journal-Authors/open-access/data-sharing-citation/data-sharing-policy.html}{\POLICYNAME} %
% \ifenglish%
-% If you wish to share data or the code, use the environment
-% \code{sharing} to describe how to access this material, providing
-% a persistent identifier, such as a digital object identifier (DOI)
-% or a URL. %
+% editorial policy of Wiley. Therefore, you must use the environment
+% \code{sharing} to make a statement about the availability or
+% absence of shared data. In case of ethical or legal concerns, we
+% encourage you to provide synthetic data instead if possible.
+% Provide a persistent identifier to access the data, such as a
+% digital object identifier (DOI) or a URL. You may also use the
+% environment to describe how to access shared computer code. %
% \else%
-% Si vous mettez les données ou le code de votre article à
-% disposition, utilisez l'environnement \code{sharing} pour
-% expliquer comment accéder à ce matériel et pour indiquer un lien
-% permanent, comme un identificateur d'objets numériques (DOI) ou
-% une adresse URL. %
+% de Wiley. Par conséquent, vous devez utiliser l'environnement
+% \code{sharing} pour préciser les conditions de partage des données
+% de recherche, ou encore leur absence, le cas échéant. En cas
+% d'enjeux éthiques ou légaux, veuillez utiliser si possible des
+% données de synthèse. Indiquez un lien permanent pour accéder aux
+% données, comme un identificateur d'objets numériques (DOI) ou une
+% adresse URL. Vous pouvez aussi utiliser l'environnement pour
+% indiquer comment accéder à du code informatique partagé. %
% \fi
% \end{DescribeEnv}
%
@@ -1644,10 +1839,16 @@
% la page de titre du présent document a été composée avec la commande
% suivante: %
% \fi
-% \begin{quote}
-% \cmd{\licence}\code{\{\{}\cmdprint{\ccbysa*}\code{\} {\year}, Statistical Society of Canada \{}\cmdprint{\textbar}\code{\}} \\
-% \verb+ +\code{Société canadienne de statistique\}}
-% \end{quote}
+% \iffalse
+%<*example>
+% \fi
+\begin{lstlisting}
+\licence{{\ccbysa*} `\year', Statistical Society of Canada {\textbar}
+ Société canadienne de statistique}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
%
% \ifenglish%
% \subsection{Mathematics}
@@ -1655,6 +1856,8 @@
% \subsection{Mathématiques}
% \fi
% \label{sec:usage:mathematics}
+% \changes{1.1}{2024-01-23}{Documentation: specify that the class is
+% not compatible with the package \textbf{amssymb}.}
%
% \ifenglish%
% The class automatically loads the packages %
@@ -1666,16 +1869,18 @@
% \ifenglish%
% and, when the document is compiled with {\XeLaTeX}, %
% \else%
-% et, lorsque le document est compilé avec {\XeLaTeX},
+% et, lorsque le document est compilé avec {\XeLaTeX}, %
% \fi%
% \href{https://ctan.org/pkg/unicode-math}{\pkg{unicode-math}}. %
% \ifenglish%
-% The class also defines a number of commands and environments to
-% standardize the typesetting of mathematical content in {\TheCJS}.
+% Note that it is not compatible with the package \pkg{amssymb}. The
+% class also defines a number of commands and environments to
+% standardize the typesetting of mathematical content in {\TheCJS}. %
% \else%
-% Elle définit également des commandes et des environnements pour
-% assurer une mise en forme standardisée des mathématiques dans
-% {\LaRevue}.
+% En revanche, elle n'est pas compatible avec le paquetage
+% \pkg{amssymb}. La classe définit également des commandes et des
+% environnements pour assurer une mise en forme standardisée des
+% mathématiques dans {\LaRevue}. %
% \fi
%
% \ifenglish%
@@ -1724,6 +1929,9 @@
% \cmd{\mat} &
% \ifenglish matrix or vector \else matrice ou vecteur \fi &
% \cmdprint{\mat}\code{\{A\}} & $\mat{A}$ \\
+% \cmd{\matit} &
+% \ifenglish matrix or vector (italic) \else matrice ou vecteur (italique) \fi &
+% \cmdprint{\matit}\code{\{x\}} & $\matit{x}$ \\
% \cmd{\trsp} &
% \ifenglish transposition \else transposée \fi &
% \cmdprint{\mat}\code{\{A\}}\cmdprint{\trsp} & $\mat{A}\trsp$ \\
@@ -1800,7 +2008,7 @@
% \begin{tabbing}
% \hspace*{2.5em}\=\cmd{\prdist}\code{\{E\}(\cmd{\lambda})}%
% \quad\=$\rightarrow$ \quad\=$\prdist{N}(0, 1)$ \quad\=\kill
-% \>\cmd{\prdist}\code{\{N\}(0, 1)}%
+% \>\cmd{\prdist}\code{\{N\}(0, 1)} %
% \>$\rightarrow$ %
% \>$\prdist{N}(0, 1)$ %
% \>(\ifenglish Normal\else normale\fi) \\
@@ -1816,26 +2024,36 @@
% \end{DescribeMacro}
%
% \begin{DescribeMacro}{\mat}
-% \begin{DescribeMacro}{\trsp}
-% \begin{DescribeMacro}{\tr}
-% \begin{DescribeMacro}{\diag}
+% \begin{DescribeMacro}{\matit}
% \ifenglish%
% The command \cmd{\mat} typesets a variable in roman bold, a style
% often used for matrices and vectors (hence the name of the
-% command). To indicate matrix transposition, use only the command
-% \cmd{\trsp}. The commands \cmd{\tr} and \cmd{\diag} define two
-% other common linear algebra operators, the trace and the
-% diagonal. %
+% command). The command \cmd{\matit} is similar, but for a variable
+% in bold italic.
% \else%
% La commande \cmd{\mat} compose une variable en romain gras, ce qui
% est souvent utilisé pour les matrices et les vecteurs (d'où le nom
-% de la commande). Pour indiquer la transposée d'une matrice,
-% utilisez uniquement la commande \cmd{\trsp}. Les commandes
-% \cmd{\tr} et \cmd{\diag} définissent deux autres opérateurs
-% courants en algèbre linéaire, la trace et la diagonale. %
+% de la commande). La commande \cmd{\matit} produit plutôt une
+% variable en gras italique.
% \fi
% \end{DescribeMacro}
% \end{DescribeMacro}
+%
+% \begin{DescribeMacro}{\trsp}
+% \begin{DescribeMacro}{\tr}
+% \begin{DescribeMacro}{\diag}
+% \ifenglish%
+% To indicate matrix transposition, use only the command
+% \cmd{\trsp}. The commands \cmd{\tr} and \cmd{\diag} define
+% two other common linear algebra operators, the trace and the
+% diagonal. %
+% \else%
+% Pour indiquer la transposée d'une matrice, utilisez uniquement la
+% commande \cmd{\trsp}. Les commandes \cmd{\tr} et \cmd{\diag}
+% définissent deux autres opérateurs courants en algèbre linéaire,
+% la trace et la diagonale. %
+% \fi
+% \end{DescribeMacro}
% \end{DescribeMacro}
% \end{DescribeMacro}
%
@@ -1999,6 +2217,23 @@
% Évitez si possible les indices doubles et n'utilisez jamais
% d'indices triples. %
% \fi
+% \changes{1.1}{2024-03-06}{Documentation: add an advice on the
+% typesetting of bold symbols in mathematics.}
+% \item %
+% \ifenglish%
+% Bold in mathematics is a tricky issue. Use the aforementioned
+% class commands \cmdprint{\mat} and \cmdprint{\matit} to generate
+% bold symbols reliably across {\TeX} engines. With {\XeLaTeX},
+% \cmdprint{\mat} also works with Greek letters (that will be
+% typeset in italic). %
+% \else%
+% La composition en gras en mathématiques est une opération
+% délicate. Utilisez les commandes de la classe \cmdprint{\mat} et
+% \cmdprint{\matit} mentionnées précédemment pour composer
+% automatiquement des symboles en gras quelque soit le moteur
+% {\TeX}. Avec {\XeLaTeX}, \cmdprint{\mat} fonctionne aussi avec les
+% lettres grecques (qui sont alors composées en italique). %
+% \fi
% \item %
% \ifenglish%
% Always use the command \cmdprint{\ell} to obtain the symbol
@@ -2094,13 +2329,19 @@
% («équation», «inégalité», «relation», etc.), ainsi que par une
% espace insécable: %
% \fi
-% \begin{quote}
-% \def\LABEL{\ifenglish label\else étiquette\fi}
-% \def\EQN{\ifenglish equation\else équation\fi}
-% \def\INEQ{\ifenglish inequalities\else inégalités\fi}
-% \code{\EQN~}\cmdprint{\eqref}\marg{\LABEL} \\
-% \code{\INEQ~}\cmdprint{\eqref}\marg{\LABEL}\code{{-}{-}}\cmdprint{\eqref}\marg{\LABEL}
-% \end{quote}
+% \iffalse
+%<*example>
+% \fi
+ \def\LABEL{\ifenglish label\else étiquette\fi}
+ \def\EQN{\ifenglish equation\else équation\fi}
+ \def\INEQ{\ifenglish inequalities\else inégalités\fi}
+\begin{lstlisting}
+`\EQN'~\eqref`\marg{\LABEL}'
+`\INEQ'~\eqref`\marg{\LABEL}'--\eqref`\marg{\LABEL}'
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
% \end{itemize}
%
% \ifenglish%
@@ -2533,72 +2774,137 @@
% description pour un nouvel environnement \meta{env}, insérez la
% commande suivante dans le préambule de votre document: %
% \fi
-% \begin{quote}
-% \cmdprint{\addto}\cmdprint{\extras}\code{\languagename}\code{\{}\cmdprint{\def}\code{\bs}\meta{env}\code{autorefname}\marg{description}\code{\}}
-% \end{quote}
+% \iffalse
+%<*example>
+% \fi
+\begin{lstlisting}
+\addto\extras`\languagename'{\def\`\meta{env}'autorefname`\marg{description}'}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
% \ifenglish%
% (If the main language of the article is French, replace
% \cmdprint{\extras}\code{\languagename} by
-% \cmdprint{\extrasfrench}.)\footnote{%
+% \cmdprint{\extrasfrench}.\footnote{%
% For further details, see Section~6 of the documentation of
-% \pkg{hyperref}.} %
+% \pkg{hyperref}.}) %
% \else%
% (Si la langue principale de l'article est l'anglais, remplacez
% \cmdprint{\extras}\code{\languagename} par
-% \cmdprint{\extrasenglish}.)\footnote{%
+% \cmdprint{\extrasenglish}.\footnote{%
% Consultez au besoin la section~6 de la documentation de
-% \pkg{hyperref}.} %
+% \pkg{hyperref}.}) %
% \fi
%
% \begin{DescribeMacro}{\texorpdfstring}
% \changes{0.93}{2023-11-07}{Fix the name of a command from
% \cs{textorpdfstring} to the correct \cs{texorpdfstring} in the
-% documentation.}
+% documentation.}%
+% \changes{1.1}{2024-03-12}{Documentation: mention to also use
+% \cs{texorpdfstring} to fix \texttt{Token not allowed in a PDF
+% string} warnings.}
% \ifenglish%
-% The compilation of your manuscript may halt with the error message
+% The package \pkg{hyperref} builds the table of contents of the
+% PDF. If you use mathematical notation or symbols in a section
+% title, compilation of your manuscript may either result in
+% warnings of the form %
+% \else%
+% Le paquetage \pkg{hyperref} se charge de produire la table des
+% matières du fichier PDF. Si vous utilisez de la notation ou des
+% symboles mathématiques dans un titre de section, la compilation de
+% votre article pourrait soit résulter en des avertissements de la
+% forme %
+% \fi%
% \begin{quote}
-% \code{Improper alphabetic constant}
+% Token not allowed in a PDF string
% \end{quote}
-% The reason is most likely that you use a mathematical symbol in a
-% section title that \pkg{hyperref} is not able to properly
-% translate for the table of contents of the PDF. If you need
-% the symbol, try wrapping it in \cmd{\texorpdfstring}. This
-% command takes two arguments: the symbol that should appear in the
-% document, and the replacement text for the table of contents. For
-% example, you would replace %
+% \ifenglish%
+% or halt with the error message %
% \else%
-% Il se pourrait que la compilation de votre article échoue avec le
-% message d'erreur
+% ou échouer avec le message d'erreur %
+% \fi%
% \begin{quote}
% \code{Improper alphabetic constant}
% \end{quote}
-% La cause en est probablement un symbole mathématique placé dans un
-% titre de section que \pkg{hyperref} n'arrive pas à traduire pour
-% la table des matières du fichier PDF. Si vous ne pouvez vous
-% passer du symbole dans le titre, essayez d'utiliser la commande
-% \cmd{\texorpdfstring} dans celui-ci. Cette commande requiert deux
-% arguments: le texte qui doit apparaitre dans le document et celui
-% qui peut figurer dans la table des matières. Par exemple, vous
-% devriez remplacer %
+% \ifenglish%
+% If you need the notation or symbol in the title, wrap it in
+% \cmd{\texorpdfstring}. This command takes two arguments: the
+% notation or symbol that should appear in the document, and the
+% replacement text for the table of contents. For example, you would
+% replace %
+% \else%
+% Si vous ne pouvez vous passer de la notation ou du symbole dans le
+% titre, utilisez la commande \cmd{\texorpdfstring} dans celui-ci.
+% Cette commande requiert deux arguments: le texte qui doit
+% apparaitre dans le document et celui qui peut figurer dans la
+% table des matières. Par exemple, vous devriez remplacer %
% \fi%
-% \def\TEXT{Contribution \ifenglish of \else de \fi}
-% \begin{quote}
-% \cmdprint{\subsection}\code{\{\TEXT $}\cmdprint{\beta}\code{$\}}
-% \end{quote}
+% \iffalse
+%<*example>
+% \fi
+\def\TEXT{\ifenglish Algorithm for\else Algorithme pour\fi}
+\begin{lstlisting}
+\section{`\TEXT' $U_n$}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% \ifenglish%
+% by something along the lines of %
+% \else%
+% par quelque chose comme %
+% \fi%
+% \iffalse
+%<*example>
+% \fi
+\begin{lstlisting}
+\section{`\TEXT' \texorpdfstring{$U_n$}{U[n]}}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% \ifenglish%
+% You would also replace %
+% \else
+% De même, vous devriez remplacer %
+% \fi%
+% \iffalse
+%<*example>
+% \fi
+\def\TEXT{Contribution \ifenglish of\else de\fi}
+\begin{lstlisting}
+\subsection{`\TEXT' $\beta$}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
% \ifenglish by\else par\fi
-% \begin{quote}
-% \cmdprint{\subsection}\code{\{\TEXT}\cmdprint{\texorpdfstring}\code{\{$}\cmdprint{\beta}\code{$\}\{beta\}\}}
-% \end{quote}
+% \iffalse
+%<*example>
+% \fi
+\begin{lstlisting}
+\subsection{`\TEXT' \texorpdfstring{$\beta$}{beta}}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% \ifenglish or even\else ou encore\fi
+% \iffalse
+%<*example>
+% \fi
+\begin{lstlisting}
+\subsection{`\TEXT' \texorpdfstring{$\beta$}{`β'}}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
% \ifenglish%
-% or, even better if you can enter Unicode characters on the
-% keyboard, by %
+% if you can enter Unicode characters on the keyboard. %
% \else%
-% ou même, si vous pouvez entrer des caractères Unicode au clavier,
-% par %
+% si vous êtes en mesure d'entrer des caractères Unicode au
+% clavier. %
% \fi
-% \begin{quote}
-% \cmdprint{\subsection}\code{\{\TEXT}\cmdprint{\texorpdfstring}\code{\{$}\cmdprint{\beta}\code{$\}\{β\}\}}
-% \end{quote}
% \end{DescribeMacro}
%
% \warningbox{%
@@ -2782,12 +3088,12 @@
% \fi
% \item %
% \ifenglish%
-% (Optional) Appendices --- sections numbered A, B, \dots\ after the
-% command \cmd{\appendix} --- for proofs and longer mathematical
+% (Optional) Appendices---sections numbered A, B, \dots\ after the
+% command \cmd{\appendix}---for proofs and longer mathematical
% arguments. Each appendix must be cited in the main article. %
% \else%
-% (Optionnel) Les annexes --- des sections numérotées A, B, \dots\
-% suite à la commande \cmd{\appendix} ---- pour les démontrations de
+% (Optionnel) Les annexes~--- des sections numérotées A, B, \dots\
+% suite à la commande \cmd{\appendix}~--- pour les démontrations de
% théorèmes ou autres longs développements mathématiques. Chaque
% annexe doit être citée dans l'article. %
% \fi
@@ -2871,10 +3177,11 @@
% \end{itemize}
% Les informations de la page de titre et des parties annexes peuvent
% toujours figurer dans le code source. Autrement dit, vous pouvez
-% créer le matérial additionnel directement à partir du même préambule
-% --- ou gabarit --- que votre article principal; il suffit d'ajouter
+% créer le matérial additionnel directement à partir du même
+% préambule que votre article principal; il suffit d'ajouter
% \code{supplement} aux options de la classe. %
-% \fi \endgroup
+% \fi
+% \endgroup
%
% \ifenglish%
% The option \code{supplement} is compatible with the option
@@ -2955,7 +3262,7 @@
% at the bottom of the first page. The option has no other effect on
% the rendering of the article. %
% \else%
-% L'option \code{final} --- qui a préséance sur \code{review} ---
+% L'option \code{final}~--- qui a préséance sur \code{review}~---
% active la vérification que les informations de publication et que
% l'historique de révision sont fournis. De plus, si les
% informations d'octroi de licence sont fournies à l'aide des
@@ -3006,10 +3313,79 @@
% \else%
% AAAA-MM-JJ. Par exemple: %
% \fi
+% \iffalse
+%<*example>
+% \fi
+\begin{lstlisting}
+\received{`\isodate'}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% \end{DescribeMacro}
+% \end{DescribeMacro}
+%
+% \begin{DescribeMacro}{\specialack}
+% \ifenglish%
+% The command \cmd{\specialack} provides a generic interface to
+% give special acknowledgement on the title page, such as the one
+% required by ADNI (\autoref{sec:usage:titling:adni}). The
+% command takes two arguments: %
+% \else%
+% La commande \cmd{\specialack} permet de reconnaitre une
+% contribution spéciale sur la page de titre, telle que celle exigée
+% par l'ADNI (\autoref{sec:usage:titling:adni}). La commande requiert
+% deux arguments: %
+% \fi%
% \begin{quote}
-% \cmdprint{\received}\code{\{2023-06-20\}}
+% \cmdprint{\specialack}\marg{\ifenglish by-line\else signature\fi}\marg{\ifenglish statement\else déclaration\fi}
% \end{quote}
+% \ifenglish%
+% The \meta{by-line} is inserted in the list of authors, whereas the
+% \meta{statement} is typeset at the bottom of the title page, with
+% the licensing information. Each argument may be empty, in which
+% case the corresponding information is not printed. For example,
+% the command \cmd{\ADNIacknowledgement} is effectively defined
+% as: %
+% \else%
+% La \meta{signature} est ajoutée à la liste des auteurs, alors que
+% la \meta{déclaration} est affichée au bas de la page de titre,
+% avec la déclaration de licence. Chaque argument peut être vide,
+% auquel cas l'information correspondante n'est pas affichée. À
+% titre d'exemple, la commande \cmd{\ADNIacknowledgement} est
+% définie ainsi: %
+% \fi%
+% \begin{quote}
+% \cmdprint{\specialack}\code{\{}\cmdprint{\CJS@adnibyline}\code{\}\{}\cmdprint{\CJS@adnistatement}\code{\}}
+% \end{quote}
+% \ifenglish%
+% (The internal commands \cmd{\CJS@adnibyline} and
+% \cmd{\CJS@adnistatement} typeset the official ADNI by-line and
+% statement. The analogous commands \cmd{\CJS@admcbyline} and
+% \cmd{\CJS@admcstatement} serve the same purpose for the
+% Alzheimer’s Disease Metabolomics Consortium.) %
+% \else%
+% (Les commandes internes \cmd{\CJS@adnibyline} et
+% \cmd{\CJS@adnistatement} contiennent le texte officiel de la
+% signature et de la déclaration de l'ADNI. Les commandes analogues
+% \cmd{\CJS@admcbyline} et \cmd{\CJS@admcstatement} pour
+% l'Alzheimer’s Disease Metabolomics Consortium sont également
+% définies dans la classe.) %
+% \fi%
% \end{DescribeMacro}
+%
+% \begin{DescribeMacro}{\specialackmark}
+% \ifenglish%
+% The command \cmd{\specialackmark} sets the footnote marker used by
+% \cmd{\specialack}. The default definition of the marker is: %
+% \else%
+% La commande \cmd{\specialackmark} permet de modifier l'appel de
+% note de bas de page utilisé par \cmd{\specialack}. La définition
+% par défaut de l'appel de note est: %
+% \fi%
+% \begin{quote}
+% \cmdprint{\textsuperscript}\code{\{}\cmdprint{\ensuremath}\code{\{*\}\}}
+% \end{quote}
% \end{DescribeMacro}
%
% \ifenglish%
@@ -3118,6 +3494,7 @@
\newif\ifCJS@final \CJS@finalfalse % final version?
\newif\ifCJS@titlingfooter \CJS@titlingfooterfalse % footer on title page?
\newif\ifCJS@journalinfo \CJS@journalinfotrue % display journal info?
+\newif\ifCJS@specialack \CJS@specialackfalse % special acknowledgement?
\newif\ifCJS@fancybreak \CJS@fancybreaktrue % display fancy break?
\newif\ifCJS@history \CJS@historyfalse % history present?
\newif\ifCJS@corrauth \CJS@corrauthfalse % corresponding author?
@@ -3198,13 +3575,6 @@
% Useful packages like \pkg{iftex} and \pkg{etoolbox} are already
% loaded by \class{memoir}.
%
-% The package \pkg{iflang} provides expandable checks for the current
-% language based on the macro \cmdprint{\languagename} or hyphenation
-% patterns.
-% \begin{macrocode}
-\RequirePackage{iflang}
-% \end{macrocode}
-%
% We rely on \pkg{natbib} for author-year citations. This package must
% be loaded before \pkg{babel}. The option \code{sectionbib} ensures
% that the bibliography (or list of references) is typeset as a
@@ -3369,6 +3739,9 @@
% {\LuaTeX}, commands from \pkg{fontspec} and \pkg{unicode-math} load
% the OpenType variants of the fonts. The encoding is UTF-8 by default
% for these engines.
+% \changes{1.1}{2024-03-06}{Implementation: explicitly set the option
+% \texttt{bold-style!=TeX} when loading the math font with the modern
+% engines.}
% \begin{macrocode}
\iftutex
\RequirePackage[babel=true]{microtype}
@@ -3388,7 +3761,7 @@
[
Extension = .otf,
Scale = 1,
- Ligatures = TeX
+ bold-style = TeX
]
\setmathfont{FiraMath-Regular}
[
@@ -3436,7 +3809,8 @@
% \label{sec:implementation:layout:colours}
%
% We define some colours used by the class. First, the three main
-% colours of {\TheCJS} logo: %
+% colours of {\TheCJS} logo, hand-picked from the SVG code of the
+% latter: %
% \textcolor{CJSpink}{\rule{1.5em}{1.2ex}} %
% \textcolor{CJSred}{\rule{1.5em}{1.2ex}} %
% \textcolor{CJSyellow}{\rule{1.5em}{1.2ex}}\,.
@@ -3455,8 +3829,8 @@
\definecolor{CJSurl}{rgb}{0.6,0,0} % external links
\definecolor{CJScitation}{rgb}{0,0.5,0} % citations
% \end{macrocode}
-% Finally, the colour of the ORCID icon\footnote{%
-% See \url{https://info.orcid.org/brand-guidelines}.}: %
+% Finally, the colour of the %
+% \href{https://info.orcid.org/brand-guidelines}{ORCID icon}: %
% \textcolor{CJSorcid}{\rule{1.5em}{1.2ex}}\,.
% \begin{macrocode}
\definecolor{CJSorcid}{HTML}{A6CE39}
@@ -3497,12 +3871,12 @@
% The decorative element is created using plain {\TeX} rules. Its
% height and depth are identical to the journal information.
% \begin{macrocode}
-\setbox\z@=\vbox{\sffamily\hbox{\CJS@journalname}\hbox{\bfseries V,}}
\newsavebox\CJS@journalornament
\setbox\CJS@journalornament=\vbox{%
+ \setbox\z@=\vbox{\sffamily\hbox{\CJS@journalname}\hbox{\bfseries V,}}
\setbox\tw@\hbox{\vrule \@width4pt\@height\ht\z@\@depth\dp\z@}
- \hbox{\textcolor{CJSpink}{\copy\tw@}\kern2pt%
- \textcolor{CJSred}{\copy\tw@}\kern2pt%
+ \hbox{\textcolor{CJSpink}{\copy\tw@}\kern2pt
+ \textcolor{CJSred}{\copy\tw@}\kern2pt
\textcolor{CJSyellow}{\copy\tw@}\kern6pt}}
% \end{macrocode}
%
@@ -3535,7 +3909,7 @@
%
% First, a command to set the font.
% \begin{macrocode}
-\newcommand*\CJS@setheadfootfont{%
+\def\CJS@setheadfootfont{%
\firalining\fontsize{9}{13}\selectfont}
% \end{macrocode}
%
@@ -3545,7 +3919,7 @@
\newlength\CJS@headdivheight
\settoheight\CJS@headdivheight{\CJS@setheadfootfont 1}
\setlength\CJS@headdivheight{0.9\CJS@headdivheight}
-\newcommand*\CJS@headdivrule{%
+\def\CJS@headdivrule{%
\rule[0.05\CJS@headdivheight]{0.75\normalrulethickness}{\CJS@headdivheight}}
% \end{macrocode}
%
@@ -3614,7 +3988,7 @@
% \label{sec:implementation:layout:titles}
%
% The \class{memoir} class assumes that sectioning starts at the
-% chapter level --- even with the \code{article} option. To get around
+% chapter level---even with the \code{article} option. To get around
% this requirement, we disable the effect of \cmdprint{\chapter}. A
% desirable side effect is to make \cmd{\autoref} work correctly for
% appendices.
@@ -4160,6 +4534,11 @@
\fancybreak{\pfbreakdisplay}
\fi
% \end{macrocode}
+% \changes{1.1}{2024-06-19}{Implementation: fix the positioning of the
+% licensing information at the bottom of the title page.}
+% \changes{1.1}{2024-06-26}{Implementation: include the special
+% acknowledgement statement in the licensing information, if
+% required.}
% Finally, unless overridden by a class option, allocate space
% for the licence statement at the bottom of the title page. By
% default, a notice indicates that the licence will appear
@@ -4173,11 +4552,12 @@
\iflanguage{french}{Futur emplacement de la déclaration de licence.}%
{Licence statement to appear here.}}
\begin{figure}[!b]
- \raisebox{0pt}[0pt][\footskip]{%
+ \raisebox{0pt}[0pt][\dimexpr\CJS@licenceht-\footskip\relax]{%
\vbox{%
\CJS@setlicencefont
\rule{\textwidth}{\normalrulethickness}
\parbox[t][\CJS@licenceht][t]{\textwidth}{%
+ \ifCJS@specialack\CJS@specialackstatement\fi
\ifCJS@final\CJS@licence \else\textit\CJS@notice \fi}}}
\end{figure}
\fi
@@ -4185,6 +4565,45 @@
% \end{macrocode}
% \end{macro}
%
+% \subsubsection{ADNI data use agreement}
+% \label{sec:implementation:titling:adni}
+%
+% \changes{1.1}{2024-06-26}{Implementation: define the new commands
+% \cs{ADNIacknowledgement} and \cs{ADMCacknowledgement}.}
+% \begin{macro}{\ADNIacknowledgement}
+% \begin{macro}{\ADMCacknowledgement}
+% The commands \cmd{\ADNIacknowledgement} and
+% \cmd{\ADMCacknowledgement} automatically create special
+% acknowledgements for the Alzheimer’s Disease Neuroimaging
+% Initiative (ADNI) and the Alzheimer’s Disease Metabolomics
+% Consortium (ADMC), respectively.
+% \begin{macrocode}
+\newcommand*\CJS@adnibyline{for the Alzheimer’s Disease Neuroimaging Initiative}
+\newcommand*\CJS@adnistatement{%
+ Data used in preparation of this article were obtained
+ from the \href{https://adni.loni.usc.edu}{Alzheimer’s Disease Neuroimaging Initiative}
+ (ADNI) database. As such, the investigators within the ADNI
+ contributed to the design and implementation of ADNI and/or provided
+ data but did not participate in the analysis or writing of this
+ report. A complete listing of ADNI investigators can be found at:
+ \url{https://adni.loni.usc.edu/wp-content/uploads/how_to_apply/ADNI_Acknowledgement_List.pdf}.}
+\newcommand*\CJS@admcbyline{for the Alzheimer’s Disease Metabolomics Consortium}
+\newcommand*\CJS@admcstatement{%
+ Data used in preparation of this article were generated by the
+ Alzheimer’s Disease Metabolomics Consortium (ADMC). As such, the
+ investigators within the ADMC provided data but did not participate
+ in analysis or writing of this report. A complete listing of ADMC
+ investigators can be found at:
+ \url{https://sites.duke.edu/adnimetab/team/}.}
+\newcommand*\ADNIacknowledgement{%
+ \specialack{\CJS@adnibyline}{\CJS@adnistatement}}
+\newcommand*\ADMCacknowledgement{%
+ \renewcommand*\CJS@specialackmark{\textsuperscript{\ensuremath{**}}}
+ \specialack{\CJS@admcbyline}{\CJS@admcstatement}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
% \subsection{Back matter}
% \label{sec:implementation:backmatter}
%
@@ -4292,20 +4711,20 @@
%
% First, set the font for the licence statement.
% \begin{macrocode}
-\newcommand*\CJS@setlicencefont{%
+\def\CJS@setlicencefont{%
\firalining\fontsize{8pt}{9pt}\selectfont}
% \end{macrocode}
%
% \begin{macro}{\CJS@measurelicence}
-% We need to compute the required space for a licence statement. The
-% internal command \cmd{\CJS@measurelicence} measures the total
-% height of either the licence statement provided with
-% \cmd{\licence}, or the seemingly longest version of the license
-% statement used by the publisher. The command is used inside
-% \cmd{\maketitle}.
+% We need to compute the required space for a licence statement and,
+% possibly, the ADNI statement. The internal command
+% \cmd{\CJS@measurelicence} measures the total height required using
+% either the licence statement provided with \cmd{\licence}, or the
+% seemingly longest version of the license statement used by the
+% publisher. The command is used inside \cmd{\maketitle}.
% \begin{macrocode}
\newlength\CJS@licenceht
-\newcommand\CJS@licencesample{%
+\def\CJS@licencesample{%
{\ccbyncnd*} 2023 The Authors. The Canadian Journal of
Statistics~{\textbar}~La revue canadienne de statistique published
by Wiley Periodicals LLC on behalf of Statistical Society of
@@ -4319,7 +4738,8 @@
\newcommand\CJS@measurelicence{%
\setbox\CJS@licencebox=\vbox{%
\CJS@setlicencefont
- \ifdefempty{\CJS@licence}{\CJS@licencesample}{\CJS@licence}}
+ \ifCJS@specialack\CJS@specialackstatement\fi
+ \ifdefempty{\CJS@licence}{\CJS@licencesample}{\CJS@licence}}%
\setlength\CJS@licenceht{\dimexpr\ht\CJS@licencebox+\dp\CJS@licencebox}}
% \end{macrocode}
% \end{macro}
@@ -4343,14 +4763,17 @@
% Inspired by the package \pkg{ccicons} (not used by the class since
% \pkg{fontawesome5} contains all the Creative Commons icons).
%
+% \changes{1.1a}{2024-07-25}{Implementation: fix the generation of
+% spacing in the \cs{ccby*} commands.}
% \begin{macro}{\ccby,\ccby*}
% The command \cmd{\ccby} typesets the icons for the Attribution
% licence: {\ccby}.
% \begin{macrocode}
\newcommand*\ccby{\ccby@\@ifstar{~\faCopyright[regular]}\relax}
-\newcommand*\ccby@{\mbox{%
- \faCreativeCommons\kern0.1em%
- \faCreativeCommonsBy\kern0.1em}}
+\def\CJS@fakern{\kern0.1em}
+\def\ccby@{\mbox{%
+ \faCreativeCommons\CJS@fakern
+ \faCreativeCommonsBy\CJS@fakern}}
% \end{macrocode}
% \end{macro}
%
@@ -4359,9 +4782,9 @@
% Attribution"-ShareAlike licence: {\ccbysa}.
% \begin{macrocode}
\newcommand*\ccbysa{\ccbysa@\@ifstar{~\faCopyright[regular]}\relax}
-\newcommand*\ccbysa@{\mbox{%
- \faCreativeCommons\kern0.1em%
- \faCreativeCommonsBy\kern0.1em%
+\def\ccbysa@{\mbox{%
+ \faCreativeCommons\CJS@fakern
+ \faCreativeCommonsBy\CJS@fakern
\faCreativeCommonsSa}}
% \end{macrocode}
% \end{macro}
@@ -4371,9 +4794,9 @@
% Attribution"-NonCommercial licence: {\ccbync}.
% \begin{macrocode}
\newcommand*\ccbync{\ccbync@\@ifstar{~\faCopyright[regular]}\relax}
-\newcommand*\ccbync@{\mbox{%
- \faCreativeCommons\kern0.1em%
- \faCreativeCommonsBy\kern0.1em%
+\def\ccbync@{\mbox{%
+ \faCreativeCommons\CJS@fakern
+ \faCreativeCommonsBy\CJS@fakern
\faCreativeCommonsNc}}
% \end{macrocode}
% \end{macro}
@@ -4384,10 +4807,10 @@
% {\ccbyncsa}.
% \begin{macrocode}
\newcommand*\ccbyncsa{\ccbyncsa@\@ifstar{~\faCopyright[regular]}\relax}
-\newcommand*\ccbyncsa@{\mbox{%
- \faCreativeCommons\kern0.1em%
- \faCreativeCommonsBy\kern0.1em%
- \faCreativeCommonsNc\kern0.1em%
+\def\ccbyncsa@{\mbox{%
+ \faCreativeCommons\CJS@fakern
+ \faCreativeCommonsBy\CJS@fakern
+ \faCreativeCommonsNc\CJS@fakern
\faCreativeCommonsSa}}
% \end{macrocode}
% \end{macro}
@@ -4397,9 +4820,9 @@
% Attribution"-NoDerivatives licence: {\ccbynd}.
% \begin{macrocode}
\newcommand*\ccbynd{\ccbynd@\@ifstar{~\faCopyright[regular]}\relax}
-\newcommand*\ccbynd@{\mbox{%
- \faCreativeCommons\kern0.1em%
- \faCreativeCommonsBy\kern0.1em%
+\def\ccbynd@{\mbox{%
+ \faCreativeCommons\CJS@fakern
+ \faCreativeCommonsBy\CJS@fakern
\faCreativeCommonsNd}}
% \end{macrocode}
% \end{macro}
@@ -4409,10 +4832,10 @@
% Attribution"-NonCommercial"-NoDerivatives licence: {\ccbyncnd}.
% \begin{macrocode}
\newcommand*\ccbyncnd{\ccbyncnd@\@ifstar{~\faCopyright[regular]}\relax}
-\newcommand*\ccbyncnd@{\mbox{%
- \faCreativeCommons\kern0.1em%
- \faCreativeCommonsBy\kern0.1em%
- \faCreativeCommonsNc\kern0.1em%
+\def\ccbyncnd@{\mbox{%
+ \faCreativeCommons\CJS@fakern
+ \faCreativeCommonsBy\CJS@fakern
+ \faCreativeCommonsNc\CJS@fakern
\faCreativeCommonsNd}}
% \end{macrocode}
% \end{macro}
@@ -4447,16 +4870,20 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\mat,\trsp,\tr,\diag}
+% \changes{1.1}{2024-07-13}{Implementation: simpler definition of
+% \cs{mat} and \cs{matit} using \cs{let} instead of \cs{newcommand*}.}
+% \begin{macro}{\mat,\matit,\trsp,\tr,\diag}
% The class provides special commands to typeset matrix and vector
% names, a carefully designed transpose symbol, and the most common
% linear algebra operators.
% \begin{macrocode}
\iftutex
- \newcommand*\mat[1]{\symbf{#1}}
+ \let\mat\symbf
+ \let\matit\symbfit
\newcommand*\trsp{^{\mkern-1.5mu\symsfup{T}}}
\else
- \newcommand*\mat[1]{\mathbf{#1}}
+ \let\mat\mathbf
+ \let\matit\mathbfit
\newcommand*\trsp{^{\mkern-1.5mu\mathsf{T}}}
\fi
\DeclareMathOperator{\tr}{tr}
@@ -4530,6 +4957,8 @@
% \subsection{Computer code and software}
% \label{sec:implementation:software}
%
+% \changes{1.1a}{2024-07-25}{Implementation: prevent hyphenation in
+% \cs{proglang} using a simple \cs{mbox}.}
% \begin{macro}{\proglang}
% The command \cmd{\proglang} provides a means to uniformly typeset
% the name of a software or programming language. The command also
@@ -4537,7 +4966,7 @@
% shortcuts to the most common languages. Notice that the
% \cmd{\Cpplang} case is specially crafted.
% \begin{macrocode}
-\newcommand*\proglang[1]{{\hyphenchar\font=-1 #1}}
+\newrobustcmd*\proglang[1]{\mbox{#1}}
\newcommand*\Rlang{\proglang{R}}
\newcommand*\SASlang{\proglang{SAS}}
\newcommand*\SPSSlang{\proglang{SPSS}}
@@ -4545,13 +4974,13 @@
\newcommand*\Pylang{\proglang{Python}}
\newcommand*\Julialang{\proglang{Julia}}
\newcommand*\Clang{\proglang{C}}
-\newcommand*\CJS@plus{%
+\newcommand*\Cpplang{\proglang{C\CJS@plus\CJS@plus}}
+\def\CJS@plus{%
\ifx\f@family\sfdefault%
\protect\hspace{-.04em}\protect\raisebox{-.125ex}{\larger+}%
\else%
\protect\hspace{-.03em}\protect\raisebox{.25ex}{\smaller+}%
\fi}
-\newcommand*\Cpplang{\proglang{C\CJS@plus\CJS@plus}}
% \end{macrocode}
% \end{macro}
%
@@ -4595,10 +5024,18 @@
% is handled by \pkg{natbib}. We loaded the package with the option
% \code{sectionbib} to obtain the list of references as a section, but
% \class{memoir} will use \cmd{\section} in such instances. We want an
-% unnumbered section. To achieve this efficiently, we redefine
-% the internal command of \class{memoir}.
+% unnumbered section (yet showing in the virtual table of contents of
+% the PDF). To achieve this efficiently, we redefine the internal
+% command of \class{memoir}.
+% \changes{1.1}{2024-07-02}{Implementation: add a
+% \cs{addtocontentsline} command to the redefinition of
+% \cs{@memb@bsec} to include the References section in the virtual
+% table of contents of the PDF.}
% \begin{macrocode}
-\renewcommand{\@memb@bsec}{\section*{\bibname}\prebibhook}
+\renewcommand{\@memb@bsec}{%
+ \section*{\bibname}%
+ \addcontentsline{toc}{section}{\bibname}%
+ \prebibhook}
% \end{macrocode}
%
% Furthermore, we need to redefine the title of the section, because
@@ -4706,14 +5143,14 @@
% \end{macro}
%
% \begin{macro}{\received,\accepted}
-% The article history --- dates when the article was received and
-% accepted --- is printed at the very end of the article when present.
+% The article history---dates when the article was received and
+% accepted---is printed at the very end of the article when present.
% Its treatment involves a number of steps.
%
% First, the dates themselves are input in ISO format YYYY-MM-DD and
% converted in language dependent strings using the package
% \pkg{datetime2}. In English, we want to use the British format
-% without the ordinal for the day: ``1 January 1970''. In French, we
+% without the ordinal for the day: 1 January 1970. In French, we
% can simply rely on the default format.
% \begin{macrocode}
\DTMlangsetup[en-GB]{ord=omit}
@@ -4750,36 +5187,73 @@
% \end{macrocode}
% \end{macro}
%
+% \changes{1.1a}{2024-07-25}{Implementation: replace box registers
+% \cs{@ne} and \cs{thr@@} by \cs{z@} and \cs{tw@}.}
% We also define a decorative element similar to the one used on the
% title page, only adapted for a single line content. To create a
% balanced element, we use the height of a letter with an ascender and
% the depth of the old-style number 4.
% \begin{macrocode}
-\setbox\@ne=\vbox{\hbox{\firaoldstyle\small l4}}
\newsavebox\CJS@historyornament
\setbox\CJS@historyornament=\vbox{%
- \setbox\thr@@\hbox{\vrule \@width1.5pt\@height\ht\@ne\@depth\dp\@ne}
- \hbox{\textcolor{CJSpink}{\copy\thr@@}\kern.75pt%
- \textcolor{CJSred}{\copy\thr@@}\kern.75pt%
- \textcolor{CJSyellow}{\copy\thr@@}\kern3pt}}
+ \setbox\z@=\vbox{\hbox{\firaoldstyle\small l4}}
+ \setbox\tw@\hbox{\vrule \@width1.5pt\@height\ht\z@\@depth\dp\z@}
+ \hbox{\textcolor{CJSpink}{\copy\tw@}\kern.75pt
+ \textcolor{CJSred}{\copy\tw@}\kern.75pt
+ \textcolor{CJSyellow}{\copy\tw@}\kern3pt}}
% \end{macrocode}
%
% Finally, the history information, when present, is printed at the
% end of the article.
% \begin{macrocode}
-\newcommand*\CJS@historybox{
+\def\CJS@historybox{
\par\addvspace{2\baselineskip}\noindent%
\smash{\box\CJS@historyornament \CJS@history}\par%
\vspace*{40pt}}
\AtEndDocument{\ifCJS@journalinfo\ifCJS@history\CJS@historybox\fi\fi}
% \end{macrocode}
% \end{macro}
+%
+% \changes{1.1}{2024-06-26}{Implementation: define the new command
+% \cs{specialack}.}
+% \begin{macro}{\specialack}
+% The command \cmd{\specialack} is the generic interface to give
+% special acknowledgement on the title page. The command inserts its
+% first argument in the list of authors, and its second argument at
+% the bottom of the title page, with the licensing information. Each
+% argument may be empty, in which case the corresponding information
+% is not displayed.
+% \begin{macrocode}
+\def\CJS@specialackstatement{}
+\newcommand*\specialack[2]{%
+ \ifstrempty{#1}{}{%
+ \author{#1\CJS@specialackmark}}
+ \ifstrempty{#2}{}{%
+ \CJS@specialacktrue
+ \renewcommand*\CJS@specialackstatement{\CJS@specialackmark\,#2\medskip\newline}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{1.1}{2024-06-26}{Implementation: define the new command
+% \cs{specialackmark}.}
+% \begin{macro}{\specialackmark}
+% The command \cmd{\specialackmark} changes the footnote marker used
+% by \cmd{\specialack} from its default definition.
+% \begin{macrocode}
+\def\CJS@specialackmark{\textsuperscript{\ensuremath{*}}}
+\newcommand*\specialackmark[1]{%
+ \renewcommand*\CJS@specialackmark{#1}}
+% \end{macrocode}
+% \end{macro}
+%
%</class>
% ^^A <<<<< End of the code of the class
%
% ^^A Change notes for the templates must appear before \Finale
% \changes{0.93}{2023-11-07}{Templates: fix a missing closing brace in
% \cs{author} commands.}
+% \changes{1.1}{2024-01-23}{Templates: revise the description of the
+% \texttt{sharing} environment.}
% \Finale
%
% \iffalse
@@ -4893,18 +5367,18 @@
%<fr> %% la page de titre automatiquement.
\begin{englishabstract}
<Insert your English abstract here. The abstract should be concise
- --- up to 10 lines long --- and descriptive. Avoid symbols as much
- as possible. Formulas are strongly discouraged, and citations
- should be avoided.>
+ (up to 10 lines long) and descriptive. Avoid symbols as much as
+ possible. Formulas are strongly discouraged, and citations should
+ be avoided.>
%<fr> [Un résumé en anglais sera fourni pour les auteurs qui ne peuvent
%<fr> le préparer eux-mêmes.]
\end{englishabstract}
\begin{frenchabstract}
<Insérer le texte du résumé en français ici. Le résumé doit être
- concis --- une dizaine de lignes --- et descriptif. Éviter autant
- que possible les symboles. Les équations mathématiques sont
- fortement découragées et les citations sont à éviter.>
+ concis (une dizaine de lignes) et descriptif. Éviter autant que
+ possible les symboles. Les équations mathématiques sont fortement
+ déconseillées et les citations sont à éviter.>
%<en> [We will supply a French abstract for those authors who
%<en> can't prepare it themselves.]
\end{frenchabstract}
@@ -4958,13 +5432,15 @@
%<fr> <Texte libre>
\end{supplement}
-%<en> %% DATA SHARING (optional - comment out if unused). Describe how to
-%<en> %% access data that you wish to share. Provide a permanent link such
-%<en> %% as a Document Object Identifier (DOI) or an URL.
-%<fr> %% PARTAGE DES DONNÉES (optionnel - commenter si inutilisé).
-%<fr> %% Expliquer comment accéder à des données de l'article mises à
-%<fr> %% disposition. Fournir un lien permanent, comme un identificateur
-%<fr> %% d'objets numériques (DOI) ou une adresse URL.
+%<en> %% DATA SHARING (mandatory). In accordance with the Expect Data
+%<en> %% Sharing editorial policy of Wiley, make a statement about the
+%<en> %% availability or absence of shared data. Provide a permanent link
+%<en> %% such as a Document Object Identifier (DOI) or an URL.
+%<fr> %% PARTAGE DES DONNÉES (obligatoire). Conformément à la politique
+%<fr> %% éditoriale «Expect Data Sharing» de Wiley, vous devez indiquer
+%<fr> %% les conditions de partage des données de recherche, ou l'absence
+%<fr> %% de celles-ci, le cas échéant. Fournir un lien permanent, comme un
+%<fr> %% identificateur d'objets numériques (DOI) ou une adresse URL.
\begin{sharing}
%<en> <Free form text>
%<fr> <Texte libre>
diff --git a/macros/latex/contrib/cjs-rcs-article/cjs-rcs-article.pdf b/macros/latex/contrib/cjs-rcs-article/cjs-rcs-article.pdf
index dc76f9053e..bf7f73c7c4 100644
--- a/macros/latex/contrib/cjs-rcs-article/cjs-rcs-article.pdf
+++ b/macros/latex/contrib/cjs-rcs-article/cjs-rcs-article.pdf
Binary files differ
diff --git a/macros/latex/contrib/cjs-rcs-article/cjs-rcs-bst-en.dbj b/macros/latex/contrib/cjs-rcs-article/cjs-rcs-bst-en.dbj
index 38907626da..98372dceb7 100644
--- a/macros/latex/contrib/cjs-rcs-article/cjs-rcs-bst-en.dbj
+++ b/macros/latex/contrib/cjs-rcs-article/cjs-rcs-bst-en.dbj
@@ -6,7 +6,7 @@
\preamble
-Copyright (C) 2023 Statistical Society of Canada | Société
+Copyright (C) 2023-2024 Statistical Society of Canada | Société
canadienne de statistique
This file may be distributed and/or modified under the conditions
diff --git a/macros/latex/contrib/cjs-rcs-article/cjs-rcs-bst-fr.dbj b/macros/latex/contrib/cjs-rcs-article/cjs-rcs-bst-fr.dbj
index 3ae793cf2b..13be31421c 100644
--- a/macros/latex/contrib/cjs-rcs-article/cjs-rcs-bst-fr.dbj
+++ b/macros/latex/contrib/cjs-rcs-article/cjs-rcs-bst-fr.dbj
@@ -6,7 +6,7 @@
\preamble
-Copyright (C) 2023 Statistical Society of Canada | Société
+Copyright (C) 2023-2024 Statistical Society of Canada | Société
canadienne de statistique
This file may be distributed and/or modified under the conditions
diff --git a/macros/latex/contrib/cjs-rcs-article/cjs-rcs-class.dbj b/macros/latex/contrib/cjs-rcs-article/cjs-rcs-class.dbj
index c987b1e6a7..3ef16366bd 100644
--- a/macros/latex/contrib/cjs-rcs-article/cjs-rcs-class.dbj
+++ b/macros/latex/contrib/cjs-rcs-article/cjs-rcs-class.dbj
@@ -6,7 +6,7 @@
This is a generated file.
-Copyright (C) 2023 Statistical Society of Canada | Société
+Copyright (C) 2023-2024 Statistical Society of Canada | Société
canadienne de statistique
This file may be distributed and/or modified under the conditions
diff --git a/macros/latex/contrib/cjs-rcs-article/cjs-rcs-english.mbs b/macros/latex/contrib/cjs-rcs-article/cjs-rcs-english.mbs
index e786d500bd..18f0ccbd78 100644
--- a/macros/latex/contrib/cjs-rcs-article/cjs-rcs-english.mbs
+++ b/macros/latex/contrib/cjs-rcs-article/cjs-rcs-english.mbs
@@ -4,7 +4,7 @@
% for The Canadian Journal of Statistics | La revue canadienne de
% statistique
%
-% Copyright (C) 2023 Statistical Society of Canada | Société
+% Copyright (C) 2023-2024 Statistical Society of Canada | Société
% canadienne de statistique
%
% This file may be distributed and/or modified under the conditions
@@ -31,7 +31,7 @@
%-------------------------------------------------------------------
% Begin module:
%\fi
- % \ProvidesFile{cjs-rcs-english.mbs}[2023/11/29 v1.0 (VG, PWD)]
+ % \ProvidesFile{cjs-rcs-english.mbs}[2024/07/30 v1.1a (VG, PWD)]
%\iffalse
%<*a&!a>
% The following ensures that the driver part is not seen by makebst
@@ -87,7 +87,7 @@
%% Configuration of the glossary
\addto\extrasenglish{%
- \def\glossaryname{Version history}}
+ \def\glossaryname{History of changes}}
\GlossaryPrologue{\section*{\glossaryname}%
\addcontentsline{toc}{section}{\glossaryname}}
\setlength{\GlossaryMin}{5cm}
diff --git a/macros/latex/contrib/cjs-rcs-article/cjs-rcs-french.mbs b/macros/latex/contrib/cjs-rcs-article/cjs-rcs-french.mbs
index eb60ab8a20..4d3a76021c 100644
--- a/macros/latex/contrib/cjs-rcs-article/cjs-rcs-french.mbs
+++ b/macros/latex/contrib/cjs-rcs-article/cjs-rcs-french.mbs
@@ -4,7 +4,7 @@
% The Canadian Journal of Statistics | La revue canadienne de
% statistique
%
-% Copyright (C) 2023 Statistical Society of Canada | Société
+% Copyright (C) 2023-2024 Statistical Society of Canada | Société
% canadienne de statistique
%
% This file may be distributed and/or modified under the conditions
@@ -31,7 +31,7 @@
%-------------------------------------------------------------------
% Begin module:
%\fi
- % \ProvidesFile{cjs-rcs-french.mbs}[2023/11/29 v1.0 (VG, PWD)]
+ % \ProvidesFile{cjs-rcs-french.mbs}[2024/07/30 v1.1a (VG, PWD)]
%\iffalse
%<*a&!a>
% The following ensures that the driver part is not seen by makebst
@@ -87,7 +87,7 @@
%% Configuration of the glossary
\addto\extrasenglish{%
- \def\glossaryname{Version history}}
+ \def\glossaryname{History of changes}}
\GlossaryPrologue{\section*{\glossaryname}%
\addcontentsline{toc}{section}{\glossaryname}}
\setlength{\GlossaryMin}{5cm}
diff --git a/macros/latex/contrib/cjs-rcs-article/cjs-rcs-merlin.mbs b/macros/latex/contrib/cjs-rcs-article/cjs-rcs-merlin.mbs
index 10c84b1ff6..cf79365ffd 100644
--- a/macros/latex/contrib/cjs-rcs-article/cjs-rcs-merlin.mbs
+++ b/macros/latex/contrib/cjs-rcs-article/cjs-rcs-merlin.mbs
@@ -3,7 +3,7 @@
% Master bibliography style for The Canadian Journal of Statistics |
% La revue canadienne de statistique
%
-% Copyright (C) 2023 Statistical Society of Canada | Société
+% Copyright (C) 2023-2024 Statistical Society of Canada | Société
% canadienne de statistique
%
% This file may be distributed and/or modified under the conditions
@@ -32,7 +32,7 @@
% -------------------------------------------------------------------
% Name and version information of the main mbs file:
%\fi
- % \ProvidesFile{cjs-rcs-merlin.mbs}[2023/11/29 v1.0 (VG, PWD, AO, DPC)]
+ % \ProvidesFile{cjs-rcs-merlin.mbs}[2024/07/30 v1.1a (VG, PWD, AO, DPC)]
%\iffalse
%</!tail>
%<*a&!a>
@@ -92,7 +92,7 @@
%% Configuration of the glossary
\addto\extrasenglish{%
- \def\glossaryname{Version history}}
+ \def\glossaryname{History of changes}}
\GlossaryPrologue{\section*{\glossaryname}%
\addcontentsline{toc}{section}{\glossaryname}}
\setlength{\GlossaryMin}{5cm}
diff --git a/macros/latex/contrib/cjs-rcs-article/cjs-rcs-merlin.pdf b/macros/latex/contrib/cjs-rcs-article/cjs-rcs-merlin.pdf
index af76f1c69e..79fddb7248 100644
--- a/macros/latex/contrib/cjs-rcs-article/cjs-rcs-merlin.pdf
+++ b/macros/latex/contrib/cjs-rcs-article/cjs-rcs-merlin.pdf
Binary files differ
diff --git a/macros/latex/contrib/colortbl/colortbl-DE.pdf b/macros/latex/contrib/colortbl/colortbl-DE.pdf
index 1a4ea3ccea..879d4b3f5b 100644
--- a/macros/latex/contrib/colortbl/colortbl-DE.pdf
+++ b/macros/latex/contrib/colortbl/colortbl-DE.pdf
Binary files differ
diff --git a/macros/latex/contrib/colortbl/colortbl.dtx b/macros/latex/contrib/colortbl/colortbl.dtx
index 68c4bdbaf5..8e5f1e8be1 100644
--- a/macros/latex/contrib/colortbl/colortbl.dtx
+++ b/macros/latex/contrib/colortbl/colortbl.dtx
@@ -15,7 +15,7 @@
%<driver>\ProvidesFile{colortbl.drv}
% \fi
% \ProvidesFile{colortbl.dtx}
- [2024/02/20 v1.0g Color table columns (DPC)]
+ [2024/07/06 v1.0i Color table columns (DPC)]
%
% \iffalse
%<*driver>
@@ -1018,9 +1018,9 @@
%
% \begin{macro}{\endarray}
% \changes{v1.0b}{2012/21/06}{re-insert \cs{@arrayright} to match \textsf{array} definition, for \textsf{delarray}}
+% \changes{v1.0h}{2024/05/26}{Don't assume existing \cs{endarray} definition, to work with tagging code}
% \begin{macrocode}
-\def\endarray{%
- \crcr \egroup \egroup \@arrayright\gdef\@preamble{}\CT@end}
+\expandafter\def\expandafter\endarray\expandafter{\endarray\CT@end}
% \end{macrocode}
% \end{macro}
%
@@ -1505,9 +1505,21 @@
%
%
% longtable support.
+% \changes{v1.0i}{2024/07/06}{tagging code adjusments for longtable hline}
+% \begin{macrocode}
+\ExplSyntaxOn
+% \end{macrocode}
+%
+% Stub tag support if tagging has not been enabled.
+% \begin{macrocode}
+\cs_if_exist:NF\tag_mc_begin:n{
+ \cs_new:Npn\tag_mc_begin:n#1{}
+ \cs_new:Npn\tag_mc_end:{}
+}
+% \end{macrocode}
+%
% \begin{macrocode}
\AtBeginDocument{
- \ifx\longtable\@undefined\else
\def\LT@@hline{%
\ifx\LT@next\hline
\global\let\LT@next\@gobble
@@ -1517,7 +1529,10 @@
\else
\gdef\CT@LT@sep{%
\multispan\LT@cols{%
- \CT@drsc@\leaders\hrule\@height\doublerulesep\hfill}\cr}%
+ \tag_mc_begin:n{artifact}
+ \CT@drsc@\leaders\hrule\@height\doublerulesep\hfill
+ \tag_mc_end: \int_gdecr:N \g__tbl_row_int
+ }\cr}%
\fi
\else
\global\let\LT@next\empty
@@ -1526,13 +1541,20 @@
\fi
\ifnum0=`{\fi}%
\multispan\LT@cols
- {\CT@arc@\leaders\hrule\@height\arrayrulewidth\hfill}\cr
+ {\tag_mc_begin:n{artifact}
+ \CT@arc@\leaders\hrule\@height\arrayrulewidth\hfill
+ \tag_mc_end: \int_gdecr:N \g__tbl_row_int
+ }\cr
\CT@LT@sep
\multispan\LT@cols
- {\CT@arc@\leaders\hrule\@height\arrayrulewidth\hfill}\cr
+ {\tag_mc_begin:n{artifact}
+ \CT@arc@\leaders\hrule\@height\arrayrulewidth\hfill
+ \tag_mc_end: \int_gdecr:N \g__tbl_row_int
+ }\cr
\noalign{\penalty\@M}%
\LT@next}
- \fi}
+ }
+\ExplSyntaxOff
% \end{macrocode}
%
%
diff --git a/macros/latex/contrib/colortbl/colortbl.pdf b/macros/latex/contrib/colortbl/colortbl.pdf
index b2ec8709a6..6ebe2525c3 100644
--- a/macros/latex/contrib/colortbl/colortbl.pdf
+++ b/macros/latex/contrib/colortbl/colortbl.pdf
Binary files differ
diff --git a/macros/latex/contrib/count1to/README.md b/macros/latex/contrib/count1to/README.md
new file mode 100644
index 0000000000..ac3bfc11de
--- /dev/null
+++ b/macros/latex/contrib/count1to/README.md
@@ -0,0 +1,28 @@
+# The LaTeX package `count1to`
+
+Copyright (C) 1995–2009 Martin Schröder
+
+count1to 2024-06-13 v2.11 Count1to LaTeX Package
+
+This is the original release of Count1to. The new upload has only been done to split the ms-bundle.
+
+The current maintainer of this package is Marei Peischl <marei@peitex.de>
+
+***************************************************************************
+
+ This material is subject to the LaTeX Project Public License version 1.3c
+ or later. See http://www.latex-project.org/lppl.txt for details.
+
+***************************************************************************
+
+## Provided files
+
+* README.md
+* count1to.dtx
+* count1to.ins
+
+The files
+* count1to.sty
+* count1to.drv
+can be generated from the count1to.dtx by processing the count1to.ins-file.
+
diff --git a/macros/latex/contrib/ms/count1to.dtx b/macros/latex/contrib/count1to/count1to.dtx
index 35918bce60..8dba871174 100644
--- a/macros/latex/contrib/ms/count1to.dtx
+++ b/macros/latex/contrib/count1to/count1to.dtx
@@ -1,11 +1,41 @@
+%% \iffalse meta-comment
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Copyright (C) Martin Schröder, 1994–2009
+% Marei Peischl (peiTeX) <marei@peitex.de>, 2024
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3c
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+% This package is maintained but will not receive any additional features.
+%
+% The Current Maintainer of this work is
+% Marei Peischl <marei@peitex.de>.
+%
+% This work consists of the files
+% README.md
+% count1to.dtx
+% count1to.ins
+% and the derived file
+% count1to.sty.
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \fi
% \iffalse
\NeedsTeXFormat{LaTeX2e}
%<package>\ProvidesPackage{count1to}
-%<package> [2009/05/24 v2.1 Count1to9 Package (MS)]
+%<package> [2024-06-13 v2.11 Count1to9 Package (MS)]
%
%<*driver>
\ProvidesFile{count1to.drv}
- [2009/05/24 v2.1 Driver for Count1to9 Package (MS)]
+ [2024-06-13 v2.111 Driver for Count1to9 Package]
\documentclass[a4paper]{ltxdoc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
@@ -14,7 +44,12 @@
\usepackage{url}
\usepackage{count1to}
\usepackage[toc]{multitoc}
-\usepackage{svn}
+\makeatletter
+\IfFileExists{gitHeadInfo.gin}{
+ \newcommand*{\GI@githeadinfo@file}{gitHeadInfo.gin}
+}{}
+\makeatother
+\usepackage{gitinfo2}
\usepackage{hypdoc}
\usepackage{geometry}
\GetFileInfo{count1to.sty}
@@ -41,74 +76,8 @@
\DocInput{count1to.dtx}
\end{document}
%</driver>
-%^^A $Id: count1to.dtx 1368 2009-05-24 16:02:57Z oneiros $
-%
-% Copyright (c) 1994..2009 by Martin Schr\"oder. All rights reserved.
-%
-% 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 `maintained'.
-%
-% The Current Maintainer of this work is Martin Schr\"oder.
-%
-% This work consists of the files count1to.dtx and count1to.ins
-% and the derived file count1to.sty.
-%
% \fi
%
-% \CheckSum{112}
-%
-%% \CharacterTable
-%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
-%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
-%% Digits \0\1\2\3\4\5\6\7\8\9
-%% Exclamation \! Double quote \" Hash (number) \#
-%% Dollar \$ Percent \% Ampersand \&
-%% Acute accent \' Left paren \( Right paren \)
-%% Asterisk \* Plus \+ Comma \,
-%% Minus \- Point \. Solidus \/
-%% Colon \: Semicolon \; Less than \<
-%% Equals \= Greater than \> Question mark \?
-%% Commercial at \@ Left bracket \[ Backslash \\
-%% Right bracket \] Circumflex \^ Underscore \_
-%% Grave accent \` Left brace \{ Vertical bar \|
-%% Right brace \} Tilde \~}
-%%
-%% \iffalse meta-comment
-%% ===================================================================
-%% @LaTeX-style-file{
-%% author = {Martin Schr\"oder},
-%% version = "2.1",
-%% date = "24 May 2009",
-%% filename = "count1to.sty",
-%% address = {Martin Schr\"oder
-%% Barmer Stra\"se 14
-%% 44137 Dortmund
-%% Germany}
-%% telephone = "+49-231-1206574",
-%% email = "martin@oneiros.de",
-% codetable = "ISO/ASCII",
-% keywords = "LaTeX, pages",
-% supported = "yes",
-%% docstring = "LaTeX package which sets count1 to count9,
-%% which can be used to select certain pages
-%% with a driver.
-%% Also provides access to the number of pages
-%% of the document.
-%% Uses the everyshi package."
-%% }
-%% ===================================================================
-%% \fi
-%
-% \SVN $Rev: 1368 $
-% \SVN $Date: 2009-05-24 18:02:57 +0200 (So, 24. Mai 2009) $
-%
% \changes{v1.00}{1994/12/07}{New}
% \changes{v1.01}{1994/12/09}{Documentation improved}
% \changes{v1.02}{1996/12/29}{Documentation improved}
@@ -116,6 +85,7 @@
% \changes{v1.22}{1999/06/08}{Moved to LPPL}
% \changes{v2.00}{2002/08/31}{Removed \texttt{TotalPages}}
% \changes{v2.1}{2009/05/24}{New address}
+% \changes{v2.11}{2024-06-13}{Maintainer changed + removed from ms bundle + move to git}
%
% \newcommand*{\Count}[1]{\texttt{\symbol{92}count#1}}
% \newcommand*{\package}[1]{\textnormal{\sffamily#1}}
@@ -129,19 +99,15 @@
% \title{\unskip
% The \package{count1to} package^^A
% \thanks{^^A
-% The version number of this file is \fileversion, subversion
-% revision~\#\SVNRev, last revised
-% \protect\SVNDate.\protect\newline
+% The version number of this file is \fileversion,
+% revision~\#\gitAbbrevHash, last revised \protect\gitAuthorIsoDate.\protect\newline
% The name \textsf{count1to} is a tribute to the $8+3$ file-naming
% convention of certain ancient ``operating systems''; strictly
% speaking it should be \textsf{count1to9}.}
% }
% \changes{v2.00}{2002/08/31}{Changed e-mail}
-% \author{Martin Schr\"oder\\[0.5ex]
-% \normalsize Barmer Stra\ss{}e 14\\
-% \normalsize 44137 Dortmund\\
-% \normalsize Germany\\
-% \normalsize martin@oneiros.de}
+% \author{Martin Schröder\\
+% \url{https://gitlab.com/TeXhackse/count1to}\thanks{maintained by Marei Peischl}}
% \date{\filedate}
% \maketitle
%
@@ -169,7 +135,7 @@
% \section{Introduction to version 2}
% ^^A
% The main change of this new version is the removal of the code for
-% the \texttt{TotalPages} label.
+% the \texttt{TotalPages} label.
% This code didn't work with the \package{hyperref}
% package\cite{package:hyperref} and better code to achieve the
% effect of it is contained in the \package{totpages}
@@ -184,15 +150,15 @@
%
% \section{Introduction}
% ^^A
-% Most of the time users want to print only certain parts of a
+% Most of the time users want to print only certain parts of a
% document; but these can only be selected by using the page numbers
% of these parts with most device drivers.
-% This can be dif\/ficult or impossible if pages in dif\/ferent
-% parts of the document have the same number---e.\,g. in the
+% This can be dif\/ficult or impossible if pages in dif\/ferent
+% parts of the document have the same number---e.\,g. in the
% frontmatter and the first text pages (iii vs. 3).
%
% \TeX{} provides an easy solution to this problem: whenever a page
-% is completed by the output routine and shipped out via
+% is completed by the output routine and shipped out via
% \cs{shipout}, it displayes the values of \Count{0} to \Count{9}
% on the display (e.\,g. \texttt{[1]}) \emph{and writes them to the
% \textsf{.dvi} file}.
@@ -201,10 +167,10 @@
% \begin{quote}
% ``The first ten \Count{} registers, \Count{0} to \Count{9},
% are reserved for a special purpose: \TeX{} displays these ten
-% counts on your terminal whenever ouputting a page, and it
+% counts on your terminal whenever ouputting a page, and it
% transmits them to the output file as an identification of that
% page.
-% The counts are separated by decimal points on your terminal,
+% The counts are separated by decimal points on your terminal,
% with trailing `\texttt{.0}' patterns suppressed.
% Thus, for example, if \Count{0=5} and \Count{2=7} when a
% page is shipped out to the \texttt{dvi} file, and if the other
@@ -218,14 +184,14 @@
% \end{quote}
%
% \noindent
-% Surprinsingly, until recently there existed no package for
-% \LaTeX{} that used these \Count{}ers although some drivers allow
-% the selection of pages based on other \Count{}s then \Count{0}
+% Surprinsingly, until recently there existed no package for
+% \LaTeX{} that used these \Count{}ers although some drivers allow
+% the selection of pages based on other \Count{}s then \Count{0}
% (e.\,g. em\TeX).
%
-% This package is the solution: It uses the \package{everyshi}
-% package\cite{package:everyshi} to set \Count{1} to \Count{9} before
-% each \cs{shipout} with these values:
+% This package is the solution: It used the \package{everyshi}
+% package\cite{package:everyshi} to set \Count{1} to \Count{9} before
+% each \cs{shipout} with these values. Today it is using the kernel's shipout hooks \cite{texdoc:ltshipout}.
%
% \begin{center}
% \begin{tabular}{cl}\toprule
@@ -239,7 +205,7 @@
% 6 & number of current \cs{subsubsection} \\
% 7 & number of current \cs{paragraph} \\
% 8 & number of current \cs{subparagraph} \\
-% 9 & 1 on odd pages, 0 on even pages\footnotemark\\
+% 9 & 1 on odd pages, 0 on even pages\footnotemark\\
% \bottomrule
% \end{tabular}
% \end{center}
@@ -248,25 +214,25 @@
%
% \noindent
% \textsf{count1to} also works with classes that do not define some
-% or all of the sectioning commands and their counters, like
+% or all of the sectioning commands and their counters, like
% \textsf{letter}.
% Although it is of somewhat little use then \texttt{:-)}.
%
% A note for users of this package: When you select the pages of
-% some part of your document with a lower structure than
+% some part of your document with a lower structure than
% \cs{chapter}, remember that only \cs{part}s and \cs{chapter}s
% start on a new page; if you want to print a complete
% \cs{section}, you should also select the first page of the next
% \cs{section}.
% Also note that \TeX{} ships out the values of the counters instead
-% of their visual representation (produced with
+% of their visual representation (produced with
% \cs{the}\emph{counter}), so appendix A sets \Count{4} to 1 in the
% article class.
%
% A note for developers of device drivers: Please add support for
% \Count{1} to~\texttt{9} to your programs.
-% It would also be nice if users could easily select the next
-% page(s) after a certain count (something like
+% It would also be nice if users could easily select the next
+% page(s) after a certain count (something like
% ``\texttt{*.*.*.*.2+1.*}'' should be possible for selecting all
% pages with $\Count{4}\mapsto\mathrm{section}=2$ plus the first
% page of section~3).
@@ -282,8 +248,7 @@
%
% \section{Required packages}
% ^^A
-% The package requires the \package{everyshi}
-% package\cite{package:everyshi}.
+% With \LaTeX2e{} releases newer than 2020/10/01 this package does not require any other package.
%
%
% ^^A -----------------------------
@@ -322,10 +287,14 @@
% \newblock Hypertext marks in \LaTeX.
% \newblock \url{CTAN: tex-archive/macros/latex/contrib/supported/hyperref/}.
% \bibitem{package:everyshi}
-% Martin Schr\"oder.
+% Martin Schröder.
% \newblock The \package{everyshi} package.
% \newblock \url{CTAN: tex-archive/macros/latex/contrib/supported/ms/everyshi.dtx}.
% \newblock \LaTeXe{} package.
+% \bibitem{texdoc:ltshipout}
+% \newblock Frank Mittelbach, \LaTeX{} Project Team.
+% \newblock The ltshipout documentation.
+% \newblock \url{https://mirrors.ctan.org/macros/latex/base/ltshipout-doc.pdf}
% \end{thebibliography}
%
% }
@@ -340,12 +309,9 @@
%<*package>
% \end{macrocode}
%
-% We need the \package{everyshi} package.
% \changes{v1.20}{1998/04/10}{don't require \textsf{ifthen}}
% \changes{v1.10}{1997/11/01}{require \textsf{ifthen}}
-% \begin{macrocode}
-\RequirePackage{everyshi}[1994/12/09]
-% \end{macrocode}
+% \changes{v2.11}{2024-06-13}{\package{everyshi} is obsolete}
%
% We need various \cs{if}s to check if the used counters
% are defined.
@@ -391,9 +357,9 @@
% not reset.
% This is normally no problem, but with this package, it is: If this
% bug is not fixed or worked-around, then whenever you use
-% \cs{subparagraph} or some other lower sectioning command, and
-% after that a sectioning command that is at least two levels higher
-% (e.\,g. \cs{subsubsection}), the value of \texttt{subparagraph}
+% \cs{subparagraph} or some other lower sectioning command, and
+% after that a sectioning command that is at least two levels higher
+% (e.\,g. \cs{subsubsection}), the value of \texttt{subparagraph}
% would not be reset and would still be displayed and shipped out.
% So we have to associate \emph{all} lower-level sectioning commands
% with the higher levels.
@@ -446,13 +412,13 @@
\@countItoIX@ifs\let\@countItoIX@ifs\undefined
\@countItoIX@bugfix\let\@countItoIX@bugfix\undefined
}
-\AtBeginDocument{\@countItoIX@init}
+\AddToHook{begindocument}[count1to-init]{\@countItoIX@init}
% \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\@countItoIX@shipout}
-% \cs{@countItoIX@shipout} is used for setting \Count{1} to
+% \cs{@countItoIX@shipout} is used for setting \Count{1} to
% \Count{9} at each \cs{shipout}.
% \begin{macrocode}
\newcommand*{\@countItoIX@shipout}{
@@ -464,7 +430,7 @@
% \end{macrocode}
% \Count{2} to \Count{8} are set with the values of
% \cs{part} to \cs{subparagraph}, if these commands are defined.^^A
-% \footnote{We should probably also check the value of
+% \footnote{We should probably also check the value of
% \texttt{secnumdepth}, but I don't think this is necessary.}
% \changes{v1.20}{1998/04/10}{don't use \textsf{ifthen}}
% \changes{v1.10}{1997/11/01}{\cs{ifthenelse}}
@@ -481,7 +447,16 @@
% \begin{macrocode}
\ifodd\count1\count9=1 \else\count9=0 \fi
}
-\EveryShipout{\@countItoIX@shipout}
+% \end{macrocode}
+% \changes{v2.11}{2024-06-13}{Remove everyshi but add compatibility mode}
+% \begin{macrocode}
+\providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion}
+\IfFormatAtLeastTF{2020/10/01}{
+ \AddToHook{shipout/before}[count1to-shipout]{\@countItoIX@shipout}
+}{
+ \RequirePackage{everyshi}
+ \EveryShipount{\@countItoIX@shipout}
+}
% \end{macrocode}
% \end{macro}
%
diff --git a/macros/latex/contrib/count1to/count1to.ins b/macros/latex/contrib/count1to/count1to.ins
new file mode 100644
index 0000000000..8dccfd0487
--- /dev/null
+++ b/macros/latex/contrib/count1to/count1to.ins
@@ -0,0 +1,47 @@
+\input docstrip.tex
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesFile{count1to.ins}
+ [2024-06-13 v2.11 Installation script for Count1to9 Package]
+
+\preamble
+
+Copyright (c) 1994–2009 Martin Schröder, 2024 Marei Peischl (peiTeX) <marei@peitex.de>
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either version 1.3c
+of this license or (at your option) any later version.
+The latest version of this license is in
+http://www.latex-project.org/lppl.txt
+and version 1.3c or later is part of all distributions of LaTeX
+version 2005/12/01 or later.
+
+This work has the LPPL maintenance status `maintained'.
+
+The Current Maintainer of this work is
+ Marei Peischl <marei@peitex.de>.
+
+This work consists of the files count1to.dtx and count1to.ins
+and the derived file count1to.sty.
+
+\endpreamble
+\keepsilent
+\askforoverwritefalse
+\generate{%
+ \file{count1to.sty}{\from{count1to.dtx}{package}}
+}
+
+\Msg{***********************************************************}
+\Msg{*}
+\Msg{* To finish the installation you have to move the following}
+\Msg{* style files into a directory searched by TeX:}
+\Msg{*}
+\Msg{* \space\space count1to.sty}
+\Msg{*}
+\Msg{* To produce the documentation run the file count1to.dtx}
+\Msg{* through LaTeX.}
+\Msg{*}
+\Msg{* Happy TeXing}
+\Msg{***********************************************************}
+\endbatchfile
+%%
+%% End of file `count1to.ins'.
diff --git a/macros/latex/contrib/count1to/count1to.pdf b/macros/latex/contrib/count1to/count1to.pdf
new file mode 100644
index 0000000000..73f4923e9b
--- /dev/null
+++ b/macros/latex/contrib/count1to/count1to.pdf
Binary files differ
diff --git a/macros/latex/contrib/cpssp/README b/macros/latex/contrib/cpssp/README
deleted file mode 100644
index 4c51733db9..0000000000
--- a/macros/latex/contrib/cpssp/README
+++ /dev/null
@@ -1,19 +0,0 @@
-The cpssp package
-------------------------------------------------------------------------------
-This package is released under the LaTeX Project Public License v1.3c or later
-(see http://www.latex-project.org/lppl.txt).
-
-
-The cpssp package allows you to draw a two-dimensional representation of
-a protein’s secondary structure in LaTeX. Besides, it is possible to
-graphically compare protein secondary structure predictions. One can both
-compare predictions from a single program for several protein sequences
-(which have been aligned using any appropriate algorithm) and predictions
-from several programs for a single protein sequence.
-
-
-Installation: Run cpssp.ins through LaTeX and follow the instructions.
-
---
-Wolfgang Skala
-June 6th, 2009
diff --git a/macros/latex/contrib/cpssp/cpssp b/macros/latex/contrib/cpssp/cpssp
deleted file mode 100755
index 40d825f05a..0000000000
--- a/macros/latex/contrib/cpssp/cpssp
+++ /dev/null
@@ -1,412 +0,0 @@
-#!/usr/bin/python
-# CPSSP -- Compare Protein Secondary Structure Predictions
-# v1.0 20090606
-# Copyright (C) 2009 by Wolfgang Skala
-#
-# 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.
-
-import getopt, sys
-
-
-
-### 1. FUNCTIONS
-
-def readFasta(filename, alphabet):
- # reads a FASTA file containing one or several sequences/alignments/predictions
- # input: * (filename) the name of the FASTA file
- # * (alphabet) the allowed characters in the file, e.g. amino acids
- # output: * (names) a list of strings corresponding to the sequence names
- # * (allseqs) a list containing the sequences;
- # each sequence is a list of characters, where each character represents a
- # residue, gap or secondary structure element
- allseqs = []
- names = []
- seq = []
- f = file(filename, "r")
- for line in f.readlines():
- if line[0] == ">":
- if seq != []:
- allseqs.append(seq)
- seq = []
- names.append(line[1:-1])
- else:
- for c in line:
- c = c.upper()
- if c in alphabet:
- seq.append(c)
- if seq != []:
- allseqs.append(seq)
- f.close()
- return names, allseqs
-
-
-def removeGaps(allSeqs):
- # removes gaps from a list of sequences
- # if a position in each sequence is occupied exclusively by gaps
- # input: (allSeqs) a list of sequences as returned by readFasta()
- # output: same format as input with gaps removes
- gapPositions = []
- for i in range(len(allSeqs[0])-1, -1, -1):
- onlyGaps = True
- for j in range(len(allSeqs)):
- if allSeqs[j][i] not in GAP_SYMBOLS:
- onlyGaps = False
- if onlyGaps:
- for j in range(len(allSeqs)):
- allSeqs[j].pop(i)
- return allSeqs
-
-
-def commonSyntax(allStrucs):
- # make all structures a common syntax, i.e. a coil is represented by "C" and not by "-" or a space
- # input: (allStrucs) list of structures as returned by readFasta
- # output: same format as input
- for i in range(len(allStrucs)):
- for j in range(len(allStrucs[i])):
- if allStrucs[i][j] == "-" or allStrucs[i][j] == " ":
- allStrucs[i][j] = "C"
- return allStrucs
-
-
-def addGaps(allSeqs, allStrucs):
- # add gaps to the secondary structures so that they correspond to the gapped sequences
- # input: * (allSeqs) list of (degapped) sequences as returned by removeGaps() OR None,
- # indicating that no gaps should be added
- # * (allStrucs) list of structures as returned by readFasta/commonSyntax
- # output: list of gapped structures (same format as allStrucs)
- resultStrucs = []
- if allSeqs == None:
- for struc in allStrucs:
- curStruc = ""
- for res in struc:
- curStruc += res
- resultStrucs.append(curStruc)
- else:
- i = 0
- for seq in allSeqs:
- k = 0
- curStruc = ""
- for j in range(len(seq)):
- if seq[j] not in GAP_SYMBOLS:
- curStruc += allStrucs[i][k]
- k += 1
- else:
- curStruc += "-"
- resultStrucs.append(curStruc)
- i += 1
- return resultStrucs
-
-
-def breakLines(allStrucs, n):
- # break the structures into lines according to the number of residues per line specified by
- # the user if a line ends with a sheet (E) and the next line starts with a sheet, change the end
- # letter to "e" which indicates that no arrowhead should be drawn in the graphical representation
- # input: (allStrucs) list of gapped structures as returned by addGaps()
- # (n) residues per line
- # output: list of structures; each structure is list of 3-tuplets containing (1) a string which
- # specifies the residues on the line, (2) the number of the first and (3) the number of
- # the last residue on the line
- resultStrucs = []
- for struc in allStrucs:
- curStruc = []
- for i in range(len(struc) / n + 1):
- if i*n != len(struc):
- s = struc[i*n:(i+1)*n]
- if s[-1] == "E" and (i+1)*n < len(struc):
- if struc[(i+1)*n] == "E":
- curStruc.append(s[:-1] + "e")
- else:
- curStruc.append(s)
- else:
- curStruc.append(s)
- resultStrucs.append(curStruc)
- for struc in resultStrucs:
- startRes = 0
- endRes = 0
- for i in range(len(struc)):
- for j in range(len(struc[i])):
- if struc[i][j] != "-":
- endRes += 1
- struc[i] = (struc[i], startRes, endRes)
- startRes = endRes
- return resultStrucs
-
-
-def makeTikzDraw(ssType, block, line, start, end):
- # compose a TikZ command which draws a secondary structure element
- # input: * (ssType) secondary structure type (C, coil; H, helix; E, sheet; e, sheet at end of
- # the line; -, gap)
- # * (block) the current sequence block
- # * (line) the current line
- # * (start) the start position
- # * (end) the end position
- # output: a string containing the TikZ command
- result = "\t\t"
- if ssType == "B":
- result += "\\cpsspBridge{-"
- elif ssType == "C":
- result += "\\cpsspCoil{-"
- elif ssType == "E":
- result += "\\cpsspSheet{-"
- elif ssType == "e":
- result += "\\cpsspSheetT{-"
- elif ssType == "G":
- result += "\\cpsspThreeTenHelix{-"
- elif ssType == "H":
- result += "\\cpsspAlphaHelix{-"
- elif ssType == "I":
- result += "\\cpsspPiHelix{-"
- elif ssType == "S":
- result += "\\cpsspBend{-"
- elif ssType == "T":
- result += "\\cpsspTurn{-"
- else:
- result += "\\cpsspGap{-"
-
- result += str(block * (blockDistance + nStruc * lineDistance) + line * lineDistance) + "}{"
- result += str(lineIndent + resWidth * start) + "}{"
- result += str(lineIndent + resWidth * end) + "}\n"
- return result
-
-
-def makeTikzLabel(text, block, line):
- # compose a TikZ command which draws a label
- # input: * (text) the label text
- # * (block) the current sequence block
- # * (line) the current line
- # output: a string containing the TikZ command
- result = "\t\\cpsspLabel{-"
- result += str(block * (blockDistance + nStruc * lineDistance) + line * lineDistance) + "}{"
- result += text + "}\n"
- return result
-
-
-def makeTikzRes(number, block, line, isStart, pos=None):
- # compose a TikZ command which draws the number of the first residue in the line
- # input: * (number) the residue number
- # * (block) the current sequence block
- # * (line) the current line
- # * (isStart) True if the start residue number is to be drawn, False otherwise
- # * (pos) unused for the start residue; for the end residue, it indicates the x position
- result = "\t\t"
- if isStart:
- result +="\\cpsspStartRes{-"
- result += str(block * (blockDistance + nStruc * lineDistance) + line * lineDistance) + "}{"
- result += str(lineIndent) + "}{"
- else:
- result +="\\cpsspEndRes{-"
- result += str(block * (blockDistance + nStruc * lineDistance) + line * lineDistance) + "}{"
- result += str(lineIndent + resWidth * pos) + "}{"
- result += str(number) + "}\n"
- return result
-
-
-def usage():
- # print usage of the program
- print """CPSSP -- Compare Protein Secondary Structure Prediction v1.0
-Usage: cpssp
--h or --help prints this message
--s or --sequence-file (FASTA file containing the sequences)
--u or --structure-file (FASTA file containing the structures; mandatory)
--o or --output-file (outout filename without extension and numbering)
--w or --image-width (width of the image in cm)
--t or --image-height (maximal height of an image in cm)
--i or --line-indent (indentation at the beginning of the line in cm)
--r or --residues-per-line (number of residues per line)
--l or --line-distance (distance between lines in cm)
--b or --block-distance (distance between blocks in cm)"""
-
-
-def version():
- # print the program version
- print """CPSSP 1.0
-Copyright (C) 2009 Wolfgang Skala
-License LPPL v1.3c: The LaTeX project public license version 1.3c <http://www.latex-project.org/lppl.txt>
-This is free software: you are free to change and redistribute it.
-There is NO WARRANTY, to the extent permitted by law."""
-
-
-### 2. CONSTANTS AND VARIABLES
-
-AMINO_ACIDS = 'ARNDCQEGHILKMFPSTWYV-.' # the characters allowed in the FASTA file (AAs, gaps, structures)
-SS_ELEMENTS = "BCEGHIST- "
-GAP_SYMBOLS = "-." # possible gap symbols
-
-sequenceFile = None
-structureFile = None
-imageWidth = 15 # total line width (in cm)
-imageHeight = 20 # maximal height of the image (in cm); it will be split into separate files
- # if its natural height exceeds this value; 0 indicates an arbitrary height
-lineIndent = 2.5 # indentation at the left pof each line (in cm)
-resPerLine = 50 # number of residues per line
-lineDistance = .5 # distance between sequences within one line (in cm)
-blockDistance = 1 # distance between sequence blocks (in cm)
-outputFile = "cpsspresult"
-
-
-
-
-### 3. MAIN PART
-
-# process command line options
-try:
- opts, args = getopt.getopt(sys.argv[1:],
- "vhs:u:w:t:r:i:l:b:o:",
- ["version", "help", "sequence-file=", "structure-file=", "image-width=", "image-height=",
- "residues-per-line=", "line-indent=", "line-distance=", "block-distance=", "output-file="])
-except getopt.GetoptError:
- usage()
- sys.exit(2)
-
-for opt, arg in opts:
- if opt in ("-h", "--help"):
- usage()
- sys.exit()
- elif opt in ("-v", "--version"):
- version()
- sys.exit()
- elif opt in ("-s", "--sequence-file"):
- sequenceFile = arg
- elif opt in ("-u", "--structure-file"):
- structureFile = arg
- elif opt in ("-o", "--output-file"):
- outputFile = arg
- elif opt in ("-w", "--image-width"):
- try:
- imageWidth = float(arg)
- except ValueError:
- print "Invalid image width."
- sys.exit(1)
- elif opt in ("-t", "--image-height"):
- try:
- imageHeight = float(arg)
- except ValueError:
- print "Invalid image height."
- sys.exit(1)
- elif opt in ("r", "--residues-per-line"):
- try:
- resPerLine = int(arg)
- except ValueError:
- print "Invalid number of residues per line."
- sys.exit(1)
- elif opt in ("-i", "--line-indent"):
- try:
- lineIndent = float(arg)
- except ValueError:
- print "Invalid line indentation."
- sys.exit(1)
- elif opt in ("-l", "--line-distance"):
- try:
- lineDistance = float(arg)
- except ValueError:
- print "Invalid line distance."
- sys.exit(1)
- elif opt in ("-b", "--block-distance"):
- try:
- blockDistance = float(arg)
- except ValueError:
- print "Invalid block distance."
- sys.exit(1)
-
-if structureFile == None:
- usage()
- sys.exit(2)
-elif sequenceFile == None:
- # compare the predictions from multiple programs for a single protein
- # open FASTA file
- try:
- seqNames, structures = readFasta(structureFile, SS_ELEMENTS)
- except IOError as error:
- print "Could not open '" + error.filename + "'."
- sys.exit(1)
-
- # process structures
- try:
- structures = commonSyntax(structures)
- structures = addGaps(None, structures)
- brokenStructures = breakLines(structures, resPerLine)
- except IndexError:
- print "The structures seem to differ in length."
- sys.exit(1)
-else:
- # compare the predictions from a single program for multiple proteins
- # open FASTA files
- try:
- seqNames, sequences = readFasta(sequenceFile, AMINO_ACIDS)
- strucNames, structures = readFasta(structureFile, SS_ELEMENTS)
- except IOError as error:
- print "Could not open '" + error.filename + "'."
- sys.exit(1)
-
- # process sequences and structures read from the files
- try:
- sequences = removeGaps(sequences)
- structures = commonSyntax(structures)
- structures = addGaps(sequences, structures)
- brokenStructures = breakLines(structures, resPerLine)
- except IndexError:
- print "The sequences and structures seem to differ in length."
- sys.exit(1)
-
-
-# now for the common part
-# calculate or initiate some variables
-resWidth = float(imageWidth - lineIndent) / resPerLine # width of a single residue (in cm)
-nStruc = len(structures) # number of structures
-nBlocks = len(brokenStructures[0]) # number of blocks
-if imageHeight == 0:
- blocksPerImage = nBlocks # blocks per image (output file)
-else:
- blocksPerImage = int((imageHeight + blockDistance) / (nStruc * lineDistance + blockDistance))
-
-tikzCommands = [] # list of strings where each string contains all TikZ commands for an image
-for i in range(nBlocks / blocksPerImage + (1 if nBlocks % blocksPerImage != 0 else 0)):
- tikzCommands.append("")
-
-# determine the appropriate commands
-curLine = 0
-for struc in brokenStructures:
- curBlock = 0
- curImage = 0
- for line, startRes, endRes in struc:
- tikzCommands[curImage] += makeTikzLabel(seqNames[curLine], curBlock, curLine)
- curType = ""
- for i in range(len(line)):
- if i == 0:
- curType = line[i]
- startPos = i
- if line[i] != "-":
- tikzCommands[curImage] += makeTikzRes(startRes + 1, curBlock, curLine, True)
- else:
- tikzCommands[curImage] += makeTikzRes(startRes, curBlock, curLine, True)
- if i < len(line) - 1:
- if line[i+1].upper() != line[i]:
- tikzCommands[curImage] += makeTikzDraw(curType, curBlock, curLine, startPos, i + 1)
- curType = line[i+1]
- startPos = i + 1
- else:
- if line[i] == "e":
- tikzCommands[curImage] += makeTikzDraw("e", curBlock, curLine, startPos, i + 1)
- else:
- tikzCommands[curImage] += makeTikzDraw(curType, curBlock, curLine, startPos, i + 1)
- tikzCommands[curImage] += makeTikzRes(endRes, curBlock, curLine, False, i + 1)
- curBlock += 1
- if curBlock % blocksPerImage == 0:
- curImage += 1
- curBlock = 0
- curLine += 1
-
-# write the output files
-try:
- for i in range(len(tikzCommands)):
- f = file(outputFile + str(i) + ".tex", "w")
- f.write(tikzCommands[i])
- f.close()
-except IOError as error:
- print "Error while writing '" + error.filename + "'."
diff --git a/macros/latex/contrib/cpssp/cpssp.dtx b/macros/latex/contrib/cpssp/cpssp.dtx
deleted file mode 100644
index 3fbd1f304b..0000000000
--- a/macros/latex/contrib/cpssp/cpssp.dtx
+++ /dev/null
@@ -1,1773 +0,0 @@
-% \iffalse meta-comment
-%
-% Copyright (C) 2009 by Wolfgang Skala
-%
-% 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.
-%
-% \fi
-%
-% \iffalse
-%<package>\ProvidesPackage{cpssp}[2009/06/06 v1.0 compare protein secondary structure predictions]
-%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
-%
-%<*driver>
-\documentclass[a4paper,draft]{ltxdoc}
-\usepackage[english]{babel}
-\usepackage[utf8]{inputenc}
-\usepackage[T1]{fontenc}
-\usepackage{cpssp}
-\usepackage{xcolor}
-\EnableCrossrefs
-\CodelineIndex
-\RecordChanges
-\begin{document}
- \DocInput{cpssp.dtx}
-\end{document}
-%</driver>
-% \fi
-%
-% \CheckSum{403}
-%
-% \CharacterTable
-% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
-% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
-% Digits \0\1\2\3\4\5\6\7\8\9
-% Exclamation \! Double quote \" Hash (number) \#
-% Dollar \$ Percent \% Ampersand \&
-% Acute accent \' Left paren \( Right paren \)
-% Asterisk \* Plus \+ Comma \,
-% Minus \- Point \. Solidus \/
-% Colon \: Semicolon \; Less than \<
-% Equals \= Greater than \> Question mark \?
-% Commercial at \@ Left bracket \[ Backslash \\
-% Right bracket \] Circumflex \^ Underscore \_
-% Grave accent \` Left brace \{ Vertical bar \|
-% Right brace \} Tilde \~}
-%
-%
-% \changes{v1.0}{2009/06/06}{Initial version}
-%
-% \GetFileInfo{cpssp.sty}
-%
-% \DoNotIndex{\@ifundefined,\begin,\boolean,\clip,\colorlet,\csname,\DeclareBoolOption,\DeclareStringOption,\define@key,\draw,\endcsname,\end,\equal,\fill,\filldraw,\ifthenelse,\input,\MessageBreak,\newcommand,\newenvironment,\node,\PackageWarning,\pi,\ProcessKeyvalOptions,\providecolor,\real,\renewcommand,\RequirePackage,\scriptsize,\setboolean,\setkeys,\SetupKeyvalOptions,\sffamily,\shade,\tiny,\usetikzlibrary,}
-%
-% \title{The \textsf{cpssp} package\thanks{This document corresponds to \textsf{cpssp}~\fileversion, dated~\filedate.}}
-% \author{Wolfgang Skala \\ \texttt{Wolfgang.Skala@sbg.ac.at}}
-% \date{\filedate}
-% \maketitle
-%
-%
-% \section{Introduction}
-%
-% The \textsf{cpssp} package allows you to draw a two-dimensional representation of a protein's secondary structure in \LaTeX. Besides, it is possible to graphically \textbf{c}ompare \textbf{p}rotein \textbf{s}econdary \textbf{s}tructure \textbf{p}redictions (hence the name of the package). One can both compare predictions from a single program for several protein sequences (which have been aligned using any appropriate algorithm) and predictions from several programs for a single protein sequence.
-%
-% The following steps are necessary to obtain such a representation: First, input files for the |cpssp| program have to be prepared (§~\ref{sec:inputfiles}). Second, these input files are run through the |cpssp| program, which generates files that can be read by \LaTeX\ (§~\ref{sec:program}). Third, these files are included in a \LaTeX\ document which uses the |cpssp| package, thus providing the necessary commands (§~\ref{sec:latex}).
-%
-% A detailed description of these steps follows, and examples use sequences and predicted secondary structures for collagenases G (ColG) and H (ColH) from \textit{Clostridium histolyticum} and for collagenase T (ColT) from \textit{C. tetani}.
-%
-%
-% \section{Preparation of the Input Files}
-% \label{sec:inputfiles}
-%
-% |cpssp| is a Python 2.6 script and should run on any platform where Python is available. Start the program by either typing |python cpssp| \meta{options} or by making sure that the script is executable (e.g., |chmod u+x cpssp|) and then directly starting the file (|cpssp| \meta{options}).
-%
-% |cpssp| needs one or two input files, one containing the sequences and the other containing the secondary structure predictions. If you want to compare the secondary structure predictions from several programs of the same sequence, you only need the latter, whereas both are needed if you plan to compare the secondary structures predicted by a single program, but for two or more different sequences.
-%
-% The input files must be in FASTA format. Thus, each sequence or structure starts with a header line whose first character is |>| followed by a description of the sequence. Note that this description is used as a label in the graphical output (the description lines from the sequence file if several sequences are compared, and the description lines from the structure file if several prediction programs are compared), so it is advisable to keep it short (in our example below, the sequences have been named after the organism they are from, and the structures have been named after the program which predicted them).
-%
-% The FASTA file containing the sequences may be exported from any multiple sequence alignment program you like. Gaps in the sequences may be indicated by dashes (-) or periods (.); besides, the standard one letter abbreviations for amino acids (ARNDCQEGHILKMFPSTWYV) are allowed. In the structure FASTA file, the following letters are allowed: B ($\beta$-bridge), C (coil), E ($\beta$-strand), G ($3_{10}$-helix), H ($\alpha$-helix), I ($\pi$-helix), S (bend), and T ($\beta$-turn); in addition, a coil is indicated by a space ( ) or a dash (-) in the output of some prediction programs. All these secondary structure elements are supported; although most algorithms predict only coil, $\alpha$-helices and $\beta$-strands, the remaining elements occur in the output of secondary structure assignment programs such as STRIDE. |cpssp| has been tested with the output from STRIDE \cite{Frishman1995} and the following prediction algorithms: PSIPRED \cite{McGuffin2000}, Jpred \cite{Cole2008}, CDM \cite{Cheng2007}, SSpro \cite{Pollastri2002}, and SABLE \cite{Adamczak2005}.
-%
-% The order of the sequences or structures in the FASTA files determines their order in the graphical output. Note that if using both sequence and structure file, the order must be the same in these files. Furthermore, each sequence must be as long as the corresponding structure and all sequences or structures must have the same length (gaps included), or the input files can't be processed properly.
-%
-% In our first example, ClustalX \cite{Larkin2007} was used to align the catalytic domains of three clostridial collagenases (ColG, ColH and ColT) \cite{Ducka2009}. The aligned sequences were exported from the resulting multiple sequence alignment by using JalView \cite{Waterhouse2009}. The corresponding FASTA file is |colsequences.fasta|. The FASTA file containing the structures is |colstructures.fasta|; it was made by obtaining the predictions of the three sequences from PSIPRED followed by copying and pasting the prediction lines and adding headers.
-%
-% Our second example will compare the secondary structure of ColG predicted by five different programs (the ones mentioned above). Therefore, the same approach as for the structure file from the first example was made, yielding the file |colpredictions.fasta|.
-%
-% The third example makes use of another possibility provided by |cpssp|, namely to print a single secondary structure prediction for a single protein. The PSIPRED prediction for ColT was therefore copied into the file |coltprediction.fasta| as described above.
-%
-%
-% \section{Running the \texttt{cpssp} Program}
-% \label{sec:program}
-%
-% The |cpssp| program is a Python script and should run on every system where a Python implementation is available. Basically, it reads the input file(s) and decides whether to compare structures predicted by the same algorithm for different proteins or structures predicted by different algorithms for the same protein. Then, gaps appearing in each sequence at the same position are removed from the sequences. The structures read from the file get a common syntax (i.e., all spaces and dashes indicating a coil are converted to a C) and are gapped so that they possess the same gaps as their respective sequences. In a final step, structures are broke into lines and are translated to \LaTeX\ commands which are written to one or several output files.
-%
-% The |cpssp| command supports the following options:
-% \begin{itemize}
-% \item |-h| or |--help|: Prints a short description of the available parameters.
-% \item |-v| or |--version|: Prints the program version.
-% \item |-s| or |--sequence-file|: The name of the input file containing the sequence data. This option must be omitted
-% if structures predicted by different programs for a single sequence are to be compared.
-% \item |-u| or |--structure-file|: This is the only mandatory option, as the name of the input file containing the structure data
-% must be given in each case.
-% \item |-o| or |--output-file|: Depending on the size of the graphical output (see below), |cpssp| splits the output into several separate files.
-% This is a useful feature if you want to include your comparison in a paper and have to deal with a limited page size
-% (but can be turned off nevertheless as described below). The default output filename is |cpsspresultX.tex|, where |X| is the part that is
-% consecutively numbered. However, by specifying the |-o| option and its argument, you may change the filename before the number. For example,
-% |-o tpp2results| would give |tpp2results0.tex|, |tpp2results1.tex| and so on.
-% \item |-w| or |--image-width|: A number that sets the approximate width $w$ of the image in cm (the default value is 15). Note that the total width
-% is somewhat larger if you decide to include the number of the residues at the end of each line in the final image.
-% \item |-t| or |--image-height|: A number that sets the maximal height of each image in cm (the default value is 20). |cpssp| uses an algorithm
-% where a new output file is started if the total height exceeds the value given by this option, thereby breaking a comparison into several
-% images. While this feature is useful within the constraints of printing paper, is can be turned off by specifying a maximal height of zero
-% (|-t 0|). Note that the height specified is not reached in any case; this is due to the distances of lines and blocks (see below).
-% \item |-i| or |--line-indent|: A number that specifies the space that is left blank at the beginning of each line in cm (default is 2.5).
-% This space is reserved for the labels that tell the reader which protein is represented by the secondary structure shown and for the numbers
-% that indicate the residue at the start of each line.
-% \item |-r| or |--residues-per-line|: The number of amino acid residues that should fit on a single line (default is 50). The width $r$ of a single
-% residue is calculated from this number ($n$), from the indention $i$ at the beginning of each line and from the line width $w$ by $r = \frac{w - i}{n}$.
-% Therefore, $r$ is 0.25~cm for the default values.
-% \item |-l| or |--line-distance|: A number that gives the distance between lines (default is .5). In an image comparing secondary structure predictions,
-% each prediction resides on its own line; if the length of the comparison exceeds line width minus the indention, is it broken into several blocks
-% which have a distance given by
-% \item |-b| or |--block-distance| (default is 1).
-% \end{itemize}
-%
-% \newpage
-% In our first example, the program was invoked by
-% \begin{verbatim}
-% cpssp -s ColSequences.fasta -u ColStructures.fasta
-% -w 14 -i 1.5 -t 20 -o Collagenases
-% \end{verbatim}
-% to produce a total of 2 images comparing the collagenases. For the second example, the command was
-% \begin{verbatim}
-% cpssp -u ColGPredictions.fasta -w 14 -i 1.5 -t 10
-% -l .25 -b .5 -o ColGPredictions
-% \end{verbatim}
-% to produce a total of 3 images comparing the predicted structures for ColG from \textit{C. histolyticum}, and for the third example,
-% \begin{verbatim}
-% cpssp -u ColTPrediction.fasta -w 14 -i 0 -r 56 -t 20
-% -b .25 -o ColTPrediction
-% \end{verbatim}
-% produced a single output file.
-%
-%
-%
-% \section{Usage of the \textsf{cpssp} Package}
-% \label{sec:latex}
-%
-%
-% \subsection{Package Options}
-%
-% The image itself is plotted in \LaTeX\ using the Ti\textit{k}Z and \textsc{pgf} packages \cite{Tantau2008}. In order to use the output from |cpssp| in your \LaTeX\ document, you have to load the corresponding package by |\usepackage{cpssp}| in the preamble. The following options are known to the package; their values are set by using the \meta{key}=\meta{value} syntax.
-%
-% |style| governs the general appearance of the representation. Currently four styles are defined:
-% \begin{itemize}
-% \item |small| is the default value and gives an image as in fig.~\ref{fig:3StyleSmall}. Note that the default lengths in the |cpssp| program
-% have been optimized for this style, so you may need to specify different values when using one of the styles below (as was done in the examples).\\
-% \hspace*{-21pt}\begin{cpsspimage}[style=small, labels=false, numbers=false]{cpsspelements}
-% \node at (.25, 0) [anchor=north] {\sffamily C};
-% \node at (.875, 0) [anchor=north] {\sffamily G};
-% \node at (1.875, 0) [anchor=north] {\sffamily B};
-% \node at (3.25, 0) [anchor=north] {\sffamily E};
-% \node at (5, 0) [anchor=north] {\sffamily G};
-% \node at (6.75, 0) [anchor=north] {\sffamily H};
-% \node at (8.5, 0) [anchor=north] {\sffamily I};
-% \node at (9.875, 0) [anchor=north] {\sffamily S};
-% \node at (11.25, 0) [anchor=north] {\sffamily T};
-% \end{cpsspimage}
-% \item |large| is similar to the |small| style, but the secondary structure elements are about twice as large (see fig.~\ref{fig:3StyleLarge}).
-% This style is useful for short sequences.\\
-% \hspace*{-21pt}\begin{cpsspimage}[style=large, labels=false, numbers=false]{cpsspelements}
-% \node at (.25, 0) [anchor=north] {\sffamily C};
-% \node at (.875, 0) [anchor=north] {\sffamily G};
-% \node at (1.875, 0) [anchor=north] {\sffamily B};
-% \node at (3.25, 0) [anchor=north] {\sffamily E};
-% \node at (5, 0) [anchor=north] {\sffamily G};
-% \node at (6.75, 0) [anchor=north] {\sffamily H};
-% \node at (8.5, 0) [anchor=north] {\sffamily I};
-% \node at (9.875, 0) [anchor=north] {\sffamily S};
-% \node at (11.25, 0) [anchor=north] {\sffamily T};
-% \end{cpsspimage}
-% \item |graylines| is the style to use for black and white images when space runs out (see fig.~\ref{fig:3StyleGraylines}).\\
-% \hspace*{-22pt}\begin{cpsspimage}[style=graylines, labels=false, numbers=false]{cpsspelements}
-% \node at (.25, 0) [anchor=north] {\sffamily C};
-% \node at (.875, 0) [anchor=north] {\sffamily G};
-% \node at (1.875, 0) [anchor=north] {\sffamily B};
-% \node at (3.25, 0) [anchor=north] {\sffamily E};
-% \node at (5, 0) [anchor=north] {\sffamily G};
-% \node at (6.75, 0) [anchor=north] {\sffamily H};
-% \node at (8.5, 0) [anchor=north] {\sffamily I};
-% \node at (9.875, 0) [anchor=north] {\sffamily S};
-% \node at (11.25, 0) [anchor=north] {\sffamily T};
-% \end{cpsspimage}
-% \item |pdb| is similar to the output of the RCSB Protein Data Bank (under ``Sequence / Structure Details''; see fig.~\ref{fig:3StylePdb}).\\[.5cm]
-% \hspace*{-22pt}\begin{cpsspimage}[style=pdb, labels=false, numbers=false]{cpsspelements}
-% \node at (.25, 0) [anchor=north] {\sffamily C};
-% \node at (.875, 0) [anchor=north] {\sffamily G};
-% \node at (1.875, 0) [anchor=north] {\sffamily B};
-% \node at (3.25, 0) [anchor=north] {\sffamily E};
-% \node at (5, 0) [anchor=north] {\sffamily G};
-% \node at (6.75, 0) [anchor=north] {\sffamily H};
-% \node at (8.5, 0) [anchor=north] {\sffamily I};
-% \node at (9.875, 0) [anchor=north] {\sffamily S};
-% \node at (11.25, 0) [anchor=north] {\sffamily T};
-% \end{cpsspimage}
-% \end{itemize}
-%
-% |labels| can either be |true| or |false| and determines if the secondary structure names should be shown at the beginning of each line. It may be appropriate to turn off the labels if a single secondary structure of a single protein is shown.
-%
-% |numbers| is also a bool option and displays or hides the numbers at to left and right of each line which indicate the first an last residue in this line, respectively.
-%
-% |labelformat| controls the formatting of the structure labels; its default definition is |\sffamily\scriptsize|. The last control sequence may take a single mandatory argument, so |labelformat=\textit| is valid.
-%
-% |numberformat| formats the numbers that indicate the first and last residue on each line, default is |\sffamily\tiny|. The last control sequence may again take a single mandatory argument.
-%
-% |threehelixname| and |pihelixname| hold macros that print the name of the $3_{10}$-helix and the $\pi$-helix, respectively, above the corresponding secondary structure segments when using the |graylines| style. These macros are |\tiny$3_{10}$| and |\tiny$\pi$| by default, respectively.
-%
-% \bigskip
-% \DescribeMacro{\cpsspformat}
-% These options can be changed at any place within the document by changing their values within the argument of |\cpsspformat|\marg{options}.
-%
-%
-% \subsection{Including \texttt{cpssp} Files}
-%
-% The output \LaTeX\ files from |cpssp| may be included either directly in the text or inside a float environment such as |figure| by using one of the following:
-% \begin{itemize}
-% \item \DescribeMacro{\cpsspinput}
-% |\cpsspinput|\oarg{options}\marg{filename}\\
-% This command takes a single mandatory argument, the name of the |cpssp| output file without the |.tex| extension.
-% The optional argument takes the same options as the package and allows to change the format of the representation locally.
-% \item \DescribeEnv{cpsspimage}
-% |\begin{cpsspimage}|\oarg{options}\marg{filename}\\
-% $\ldots$\\
-% |\end{cpsspimage}|\\
-% This is the environment version of |\cpsspinput| with the same optional and mandatory argument.
-% The environment allows you to use additional graphical elements (e.g., comments and arrows) in the secondary structure image
-% by using standard Ti\textit{k}Z syntax (this was done in the small images beneath the style descriptions where additional letters indicate
-% the secondary structure element which is represented by each segment).
-% \end{itemize}
-%
-% \begin{figure}[p]
-% \centering
-% \hspace*{-32pt}\cpsspinput{Collagenases0}\hspace*{-32pt}
-% \caption{A secondary structure comparison from \texttt{Collagenases0.tex} using the \texttt{small} style and the default format for both residue
-% numbers and labels.}
-% \label{fig:3StyleSmall}
-% \end{figure}
-%
-% \begin{figure}[p]
-% \centering
-% \hspace*{-22pt}\cpsspinput[style=graylines, numbers=false, labelformat=\sffamily\tiny\textit]{ColGPredictions1}\hspace*{-22pt}
-% \caption{A secondary structure comparison from \texttt{ColGPredictions1.tex} using the \texttt{graylines} style. Residue numbers are turned off by
-% the option \texttt{numbers=false}. The label format is changed to \texttt{\textbackslash sffamily\textbackslash tiny\textbackslash textit}.}
-% \label{fig:3StyleGraylines}
-% \end{figure}
-%
-% \begin{figure}[p]
-% \centering
-% \hspace*{-43pt}\cpsspinput[style=large, labels=false, numbers=true, numberformat=\footnotesize\color{blue}]{ColTPrediction0}\hspace*{-43pt}
-% \caption{A secondary structure prediction from \texttt{ColTPrediction0.tex} using the \texttt{large} style. Labels are hidden by \texttt{labels=off}.
-% The number format is \texttt{\textbackslash footnotesize\textbackslash color\{blue\}}.}
-% \label{fig:3StyleLarge}
-% \end{figure}
-%
-% \begin{figure}[p]
-% \centering
-% \hspace*{-43pt}\cpsspinput[style=pdb, labels=false]{ColTPrediction0}\hspace*{-43pt}
-% \caption{A secondary structure prediction from \texttt{ColTPrediction0.tex} using the \texttt{pdb} style. Labels are hidden by \texttt{labels=off}.}
-% \label{fig:3StylePdb}
-% \end{figure}
-%
-% \clearpage
-% \begin{thebibliography}{10}
-% \providecommand{\url}[1]{\texttt{#1}}
-%
-% \bibitem{Frishman1995}
-% \textsc{Frishman, D.} \textit{\&} \textsc{Argos, P.}
-% \newblock Knowledge-based protein secondary structure assignment.
-% \newblock \emph{Proteins} \textbf{23}, 566--579 (1995).
-%
-% \bibitem{McGuffin2000}
-% \textsc{McGuffin, L.~J.}, \textsc{Bryson, K.} \textit{\&} \textsc{Jones, D.~T.}
-% \newblock The PSIPRED protein structure prediction server.
-% \newblock \emph{Bioinformatics} \textbf{16}, 404--405 (2000).
-%
-% \bibitem{Cole2008}
-% \textsc{Cole, C.}, \textsc{Barber, J.~D.} \textit{\&} \textsc{Barton, G.~J.}
-% \newblock The Jpred 3 secondary structure prediction server.
-% \newblock \emph{Nucleic Acids Res.} \textbf{36}, W197--W201 (2008).
-%
-% \bibitem{Cheng2007}
-% \textsc{Cheng, H.}, \textsc{Sen, T.~Z.} \emph{et~al.}
-% \newblock Consensus Data Mining (CDM) Protein Secondary Structure Prediction
-% Server: combining GOR V and Fragment Database Mining (FDM).
-% \newblock \emph{Bioinformatics} \textbf{23}, 2628--2630 (2007).
-%
-% \bibitem{Pollastri2002}
-% \textsc{Pollastri, G.}, \textsc{Przybylski, D.} \emph{et~al.}
-% \newblock Improving the prediction of protein secondary structure in three and
-% eight classes using recurrent neural networks and profiles.
-% \newblock \emph{Proteins} \textbf{47}, 228--235 (2002).
-%
-% \bibitem{Adamczak2005}
-% \textsc{Adamczak, R.}, \textsc{Porollo, A.} \textit{\&} \textsc{Meller, J.}
-% \newblock Combining prediction of secondary structure and solvent accessibility
-% in proteins.
-% \newblock \emph{Proteins} \textbf{59}, 467--475 (2005).
-%
-% \bibitem{Larkin2007}
-% \textsc{Larkin, M.~A.}, \textsc{Blackshields, G.} \emph{et~al.}
-% \newblock Clustal W and Clustal X version 2.0.
-% \newblock \emph{Bioinformatics} \textbf{23}, 2947--2948 (2007).
-%
-% \bibitem{Ducka2009}
-% \textsc{Ducka, P.}, \textsc{Eckhard, U.} \emph{et~al.}
-% \newblock A universal strategy for high-yield production of soluble and
-% functional clostridial collagenases in \textit{E. coli}.
-% \newblock \emph{Appl. Microbiol. Biotechnol.} in print (2009).
-%
-% \bibitem{Waterhouse2009}
-% \textsc{Waterhouse, A.~M.}, \textsc{Procter, J.~B.} \emph{et~al.}
-% \newblock Jalview Version 2--a multiple sequence alignment editor and analysis
-% workbench.
-% \newblock \emph{Bioinformatics} \textbf{25}, 1189--1191 (2009).
-%
-% \bibitem{Tantau2008}
-% \textsc{Tantau, T.}
-% \newblock The Ti\textit{k}Z and \textsc{pgf} Packages (2008).
-% \newline{\footnotesize\url{http://tug.ctan.org/tex-archive/graphics/pgf/base/}}
-%
-% \end{thebibliography}
-% \StopEventually{\PrintChanges\PrintIndex}
-%
-% \clearpage
-% \section{Implementation}
-%
-% \iffalse
-%<*package>
-% \fi
-%
-% \subsection{Package Options}
-%
-% The packages \textsf{ifthen} and \textsf{calc} are used for conditionals and calculation of some coordinates, respectively, while \textsf{kvoptions} handles the options specified when the package is loaded. These options and their default values are described in §~\ref{sec:latex}.
-% \begin{macrocode}
-\RequirePackage{ifthen,calc}
-\RequirePackage{kvoptions}
- \SetupKeyvalOptions{family=Cps, prefix=Cps@}
- \DeclareStringOption[small]{style}
- \DeclareBoolOption[true]{labels}
- \DeclareBoolOption[true]{numbers}
- \DeclareStringOption[\sffamily\scriptsize]{labelformat}
- \DeclareStringOption[\sffamily\tiny]{numberformat}
- \DeclareStringOption[\tiny$3_{10}$]{threehelixname}
- \DeclareStringOption[\tiny$\pi$]{pihelixname}
-\ProcessKeyvalOptions*
-% \end{macrocode}
-%
-% \subsection{Command Options}
-%
-% The options which can be set in the optional arguments of |\cpsspinput| and the |cpsspimage| environment and in the mandatory argument of |\cpsspformat| are the same as when loading the package and are set up with commands provided by the \textsf{keyval} package (which is not loaded explicitly because \textsf{kvoptions} takes care of that).
-% \begin{macrocode}
-\define@key{cpssp}{style}{\cpssp@style{#1}}
-\define@key{cpssp}{numbers}{%
- \ifthenelse{\equal{#1}{true}}%
- {\setboolean{Cps@numbers}{true}}%
- {\setboolean{Cps@numbers}{false}}%
-}
-\define@key{cpssp}{labels}{%
- \ifthenelse{\equal{#1}{true}}%
- {\setboolean{Cps@labels}{true}}%
- {\setboolean{Cps@labels}{false}}%
-}
-\define@key{cpssp}{labelformat}%
- {\renewcommand\cpssp@labelformat{#1}}
-\define@key{cpssp}{numberformat}%
- {\renewcommand\cpssp@numberformat{#1}}
-\define@key{cpssp}{threehelixname}%
- {\renewcommand\cpssp@threehelix{#1}}
-\define@key{cpssp}{pihelixname}%
- {\renewcommand\cpssp@pihelix{#1}}
-% \end{macrocode}
-%
-% \subsection{Ti\textit{k}Z Configuration}
-%
-% The Ti\textit{k}Z libraries |positioning| and |decorations.pathmorphing| are needed for additional positioning options for the |\node| command and for drawing of the helices in |pdb| style, respectively.
-% \begin{macrocode}
-\RequirePackage{tikz}
- \usetikzlibrary{positioning}
- \usetikzlibrary{decorations.pathmorphing}
-% \end{macrocode}
-% The package defines some additional colors which govern the appearance of the secondary structure elements in the |small|/|large| (the first nine) and |pdb| style (the last nine). In each color, the last letter indicates the structure element in which the color is used. You may change these colors by the commands provided by the \textsf{xcolor} package anywhere within the document. Note that the shades of gray used in the |graylines| style can not be changed.
-% \begin{macrocode}
- \colorlet {CpsspColorX} {black}
- \providecolor{CpsspColorB} {rgb}{0,.125,1}
- \colorlet {CpsspColorC} {black!80}
- \providecolor{CpsspColorE} {rgb}{0,.5,1}
- \providecolor{CpsspColorG} {rgb}{1,0,1}
- \providecolor{CpsspColorH} {rgb}{1,0,0}
- \providecolor{CpsspColorI} {rgb}{1,.75,0}
- \providecolor{CpsspColorS} {rgb}{0,.75,0}
- \providecolor{CpsspColorT} {rgb}{0,.5,0}
- \colorlet {CpsspColorPdbX} {black!33}
- \providecolor{CpsspColorPdbB}{rgb}{.49,.39,0}
- \colorlet {CpsspColorPdbC} {black}
- \providecolor{CpsspColorPdbE}{rgb}{1,.8,0}
- \providecolor{CpsspColorPdbG}{rgb}{1,.45,.45}
- \providecolor{CpsspColorPdbH}{rgb}{.71,.22,.22}
- \providecolor{CpsspColorPdbI}{rgb}{.5,0,0}
- \providecolor{CpsspColorPdbS}{rgb}{.4,0,.39}
- \providecolor{CpsspColorPdbT}{rgb}{.6,0,.59}
-% \end{macrocode}
-%
-% \subsection{User Interface, Part 1}
-%
-% The following commands are found in the output of the |cpssp| program, but may also be used anywhere within a |tikzpicture| environment.
-% \begin{macro}{\cpsspGap}
-% \begin{macro}{\cpsspBridge}
-% \begin{macro}{\cpsspCoil}
-% \begin{macro}{\cpsspSheet}
-% \begin{macro}{\cpsspSheetT}
-% \begin{macro}{\cpsspThreeTenHelix}
-% \begin{macro}{\cpsspAlphaHelix}
-% \begin{macro}{\cpsspPiHelix}
-% \begin{macro}{\cpsspBend}
-% \begin{macro}{\cpsspTurn}
-% These nine macros each take three mandatory arguments, the first specifying the $y$ coordinate and the second and third specifying the start and end $x$ coordinates, respectively (all coordinates should be given in centimeters). Each macro basically expands to another control sequence which contains the Ti\textit{k}Z drawing commands (see below). The names clearly indicate which secondary structure element is produced. |\cpsspSheetT| draws the \textit{N}-terminus of a $\beta$-sheet whithout the \textit{C}-terminal arrowhead; this is useful for $\beta$-sheets that continue past the end of a line.
-% \begin{macrocode}
-\newcommand\cpsspGap{\cpssp@makeX}
-\newcommand\cpsspBridge{\cpssp@makeB}
-\newcommand\cpsspCoil{\cpssp@makeC}
-\newcommand\cpsspSheet{\cpssp@makeE}
-\newcommand\cpsspSheetT{\cpssp@makeET}
-\newcommand\cpsspThreeTenHelix{\cpssp@makeG}
-\newcommand\cpsspAlphaHelix{\cpssp@makeH}
-\newcommand\cpsspPiHelix{\cpssp@makeI}
-\newcommand\cpsspBend{\cpssp@makeS}
-\newcommand\cpsspTurn{\cpssp@makeT}
-% \end{macrocode}
-% \end{macro}\end{macro}\end{macro}\end{macro}\end{macro}\end{macro}\end{macro}\end{macro}\end{macro}\end{macro}
-% \begin{macro}{\cpsspLabel}
-% The |\cpsspLabel| macro first checks if the names of the structures should be printed at the beginning of each line and then either calls the appropriate internal macro or does nothing. The first mandatory argument takes the $y$ coordinate, the second the label text.
-% \begin{macrocode}
-\newcommand\cpsspLabel[2]{%
- \ifthenelse{\boolean{Cps@labels}}{\cpssp@makeLabel{#1}{#2}}{}%
-}
-% \end{macrocode}
-% \end{macro}
-% \begin{macro}{\cpsspStartRes}
-% \begin{macro}{\cpsspStartRes}
-% These macros, which print the number of the first and the last residue in the line, first check if the numbers should appear at all and then either call the internal command or do nothing. The three arguments specify $y$ coordinate, $x$ coordinate and label text, respectively.
-% \begin{macrocode}
-\newcommand\cpsspStartRes[3]{%
- \ifthenelse{\boolean{Cps@numbers}}{\cpssp@makeStartRes{#1}{#2}{#3}}{}%
-}
-\newcommand\cpsspEndRes[3]{%
- \ifthenelse{\boolean{Cps@numbers}}{\cpssp@makeEndRes{#1}{#2}{#3}}{}%
-}
-% \end{macrocode}
-% \end{macro}\end{macro}
-%
-% \subsection{Styles}
-%
-% \begin{macro}{\cpssp@makeX}
-% \begin{macro}{\cpssp@makeB}
-% \begin{macro}{\cpssp@makeC}
-% \begin{macro}{\cpssp@makeE}
-% \begin{macro}{\cpssp@makeET}
-% \begin{macro}{\cpssp@makeG}
-% \begin{macro}{\cpssp@makeH}
-% \begin{macro}{\cpssp@makeI}
-% \begin{macro}{\cpssp@makeS}
-% \begin{macro}{\cpssp@makeT}
-% \begin{macro}{\cpssp@makeLabel}
-% \begin{macro}{\cpssp@makeStartRes}
-% \begin{macro}{\cpssp@makeEndRes}
-% First we define some empty internal macros which will be redefined when a particular style is chosen. These are the macros that are called by the user-level control sequences described above.
-% \begin{macrocode}
-\newcommand\cpssp@makeX{}
-\newcommand\cpssp@makeB{}
-\newcommand\cpssp@makeC{}
-\newcommand\cpssp@makeE{}
-\newcommand\cpssp@makeET{}
-\newcommand\cpssp@makeG{}
-\newcommand\cpssp@makeH{}
-\newcommand\cpssp@makeI{}
-\newcommand\cpssp@makeS{}
-\newcommand\cpssp@makeT{}
-\newcommand\cpssp@makeLabel{}
-\newcommand\cpssp@makeStartRes{}
-\newcommand\cpssp@makeEndRes{}
-% \end{macrocode}
-% \end{macro}\end{macro}\end{macro}\end{macro}\end{macro}\end{macro}\end{macro}\end{macro}\end{macro}\end{macro}\end{macro}\end{macro}\end{macro}
-% \begin{macro}{\cpssp@labelformat}
-% \begin{macro}{\cpssp@numberformat}
-% The two macros below are used for formatting the structure labels and first/last residue numbers. As can be seen from the code, whenever they are used, the argument that follows is surrounded by braces. This allows one to use control sequences with a single mandatory argument at the end of the definition of both |\cpssp@labelformat| and |\cpssp@numberformat|.
-% \begin{macrocode}
-\newcommand\cpssp@labelformat{}
-\newcommand\cpssp@numberformat{}
-% \end{macrocode}
-% \end{macro}\end{macro}
-% \begin{macro}{\cpssp@threehelix}
-% \begin{macro}{\cpssp@pihelix}
-% These two commands contain the labels that are printed above $3_{10}$- and $\pi$-helices in the |graylines| style. They are set by the corresponding options.
-% \begin{macrocode}
-\newcommand\cpssp@threehelix{}
-\newcommand\cpssp@pihelix{}
-% \end{macrocode}
-% \end{macro}\end{macro}
-% \begin{macro}{\cpsstyle@small}
-% The |small| style is shown in fig.~\ref{fig:3StyleSmall}. The internal drawing commands described above are redefined so that they expand to Ti\textit{k}Z drawing commands. Note that coordinates are calculated by using the syntax from the \textsf{calc} package.
-% \begin{macrocode}
-\newcommand\cpsstyle@small{%
- \renewcommand\cpssp@makeX[3]{%
- \draw[dashed, thick, color=CpsspColorX]%
- (##2, ##1+.2) -- (##3, ##1+.2);%
- }%
- \renewcommand\cpssp@makeB[3]{%
- \cpssp@makeC{##1}{##2}{##3}%
- \fill[color=CpsspColorB]%
- (##2, ##1+.1) -- (##3-.23, ##1+.1) -- (##3-.23, ##1) --%
- (##3, ##1+.2) -- (##2, ##1+.2);%
- }%
- \renewcommand\cpssp@makeC[3]{%
- \shade[top color=CpsspColorC, bottom color=white]%
- (##2, ##1+.2375) rectangle (##3, ##1+.21875);%
- \shade[top color=white, bottom color=CpsspColorC]%
- (##2, ##1+.21875) rectangle (##3, ##1+.1625);%
- }%
- \renewcommand\cpssp@makeE[3]{%
- \cpssp@makeC{##1}{##3-.1}{##3}%
- \fill[color=CpsspColorE]%
- (##2, ##1+.1) -- (##3-.23, ##1+.1) -- (##3-.23, ##1) --%
- (##3, ##1+.2) -- (##3-.23, ##1+.4) -- (##3-.23, ##1+.3)--%
- (##2, ##1+.3);%
- }%
- \renewcommand\cpssp@makeET[3]{%
- \fill[color=CpsspColorE]%
- (##2, ##1+.1) rectangle (##3, ##1+.3);%
- }%
- \renewcommand\cpssp@makeG[3]{%
- \shade[top color=CpsspColorG, bottom color=white]%
- (##2, ##1+.3) rectangle (##3, ##1+.25);%
- \shade[top color=white, bottom color=CpsspColorG]%
- (##2, ##1+.25) rectangle (##3, ##1+.15);%
- \shade[top color=CpsspColorG, bottom color=black]%
- (##2, ##1+.15) rectangle (##3, ##1+.1);%
- }%
- \renewcommand\cpssp@makeH[3]{%
- \shade[top color=CpsspColorH, bottom color=white]%
- (##2, ##1+.3) rectangle (##3, ##1+.25);%
- \shade[top color=white, bottom color=CpsspColorH]%
- (##2, ##1+.25) rectangle (##3, ##1+.15);%
- \shade[top color=CpsspColorH, bottom color=black]%
- (##2, ##1+.15) rectangle (##3, ##1+.1);%
- }%
- \renewcommand\cpssp@makeI[3]{%
- \shade[top color=CpsspColorI, bottom color=white]%
- (##2, ##1+.3) rectangle (##3, ##1+.25);%
- \shade[top color=white, bottom color=CpsspColorI]%
- (##2, ##1+.25) rectangle (##3, ##1+.15);%
- \shade[top color=CpsspColorI, bottom color=black]%
- (##2, ##1+.15) rectangle (##3, ##1+.1);%
- }%
- \renewcommand\cpssp@makeS[3]{%
- \begin{scope}%
- \clip (##2, ##1) rectangle (##3, ##1+1);%
- \draw[ultra thick, color=CpsspColorS, line cap=round]%
- (##2, ##1+.19) -- ({(##2+##3)*\real{.5}}, ##1+.39) --%
- (##3, ##1+.19);%
- \end{scope}%
- }%
- \renewcommand\cpssp@makeT[3]{%
- \begin{scope}%
- \clip (##2, ##1) rectangle (##3, ##1+1);%
- \draw[line width=.05cm, color=CpsspColorT]%
- (##2, ##1+.1625) arc (180:0:{(##3-##2)*\real{.5}} and .25);%
- \end{scope}%
- }%
- \renewcommand\cpssp@makeLabel[2]{%
- \node at (0, ##1) [inner sep=0pt, above right=.075 and 0]%
- {\cpssp@labelformat{##2}};%
- }%
- \renewcommand\cpssp@makeStartRes[3]{%
- \node at (##2, ##1+.2) [left]%
- {\cpssp@numberformat{##3}};%
- }%
- \renewcommand\cpssp@makeEndRes[3]{%
- \node at (##2, ##1+.2) [right]%
- {\cpssp@numberformat{##3}};%
- }%
-}
-% \end{macrocode}
-% \end{macro}
-% \begin{macro}{\cpsstyle@large}
-% The |large| style is shown in fig.~\ref{fig:3StyleLarge}.
-% \begin{macrocode}
-\newcommand\cpsstyle@large{%
- \renewcommand\cpssp@makeX[3]{%
- \draw[dashed, thick, color=CpsspColorX]%
- (##2, ##1+.3) -- (##3, ##1+.3);%
- }%
- \renewcommand\cpssp@makeB[3]{%
- \cpssp@makeC{##1}{##2}{##3}%
- \fill[color=CpsspColorB]%
- (##2, ##1+.15) -- (##3-.23, ##1+.15) -- (##3-.23, ##1) --%
- (##3, ##1+.3) -- (##2, ##1+.3);%
- }%
- \renewcommand\cpssp@makeC[3]{%
- \shade[top color=CpsspColorC, bottom color=white]%
- (##2, ##1+.35) rectangle (##3, ##1+.325);%
- \shade[top color=white, bottom color=CpsspColorC]%
- (##2, ##1+.325) rectangle (##3, ##1+.25);%
- }%
- \renewcommand\cpssp@makeE[3]{%
- \cpssp@makeC{##1}{##3-.1}{##3}%
- \fill[color=CpsspColorE]%
- (##2, ##1+.15) -- (##3-.23, ##1+.15) -- (##3-.23, ##1) --%
- (##3, ##1+.3) -- (##3-.23, ##1+.6) -- (##3-.23, ##1+.45) --%
- (##2, ##1+.45);%
- }%
- \renewcommand\cpssp@makeET[3]{%
- \fill[color=CpsspColorE]%
- (##2, ##1+.15) rectangle (##3, ##1+.45);%
- }%
- \renewcommand\cpssp@makeG[3]{%
- \shade[top color=CpsspColorG, bottom color=white]%
- (##2, ##1+.5) rectangle (##3, ##1+.4);%
- \shade[top color=white, bottom color=CpsspColorG]%
- (##2, ##1+.4) rectangle (##3, ##1+.2);%
- \shade[top color=CpsspColorG, bottom color=black] %
- (##2, ##1+.2) rectangle (##3, ##1+.1);%
- }%
- \renewcommand\cpssp@makeH[3]{%
- \shade[top color=CpsspColorH, bottom color=white]%
- (##2, ##1+.5) rectangle (##3, ##1+.4);%
- \shade[top color=white, bottom color=CpsspColorH]%
- (##2, ##1+.4) rectangle (##3, ##1+.2);%
- \shade[top color=CpsspColorH, bottom color=black] %
- (##2, ##1+.2) rectangle (##3, ##1+.1);%
- }%
- \renewcommand\cpssp@makeI[3]{%
- \shade[top color=CpsspColorI, bottom color=white]%
- (##2, ##1+.5) rectangle (##3, ##1+.4);%
- \shade[top color=white, bottom color=CpsspColorI]%
- (##2, ##1+.4) rectangle (##3, ##1+.2);%
- \shade[top color=CpsspColorI, bottom color=black] %
- (##2, ##1+.2) rectangle (##3, ##1+.1);%
- }%
- \renewcommand\cpssp@makeS[3]{%
- \begin{scope}%
- \clip (##2, ##1) rectangle (##3, ##1+1);%
- \draw[line width=.075cm, color=CpsspColorS, line cap=round]%
- (##2, ##1+.275) -- ({(##2+##3)*\real{.5}}, ##1+.6) --%
- (##3, ##1+.275);%
- \end{scope}%
- }%
- \renewcommand\cpssp@makeT[3]{%
- \begin{scope}%
- \clip (##2, ##1) rectangle (##3, ##1+1);%
- \draw[line width=.075cm, color=CpsspColorT]%
- (##2, ##1+.25) arc (180:0:{(##3-##2)*\real{.5}} and .25);%
- \end{scope}%
- }%
- \renewcommand\cpssp@makeLabel[2]{%
- \node at (0, ##1+.3) [inner sep=0pt, right]%
- {\cpssp@labelformat{##2}};%
- }%
- \renewcommand\cpssp@makeStartRes[3]{%
- \node at (##2, ##1+.3) [left]%
- {\cpssp@numberformat{##3}};%
- }%
- \renewcommand\cpssp@makeEndRes[3]{%
- \node at (##2, ##1+.3) [right]%
- {\cpssp@numberformat{##3}};%
- }%
-}
-% \end{macrocode}
-% \end{macro}
-% \begin{macro}{\cpsstyle@graylines}
-% The |graylines| style is shown in fig.~\ref{fig:3StyleGraylines}.
-% \begin{macrocode}
-\newcommand\cpsstyle@graylines{
- \renewcommand\cpssp@makeX[3]{%
- \draw[dashed, thick, color=black!33]%
- (##2, ##1+.05) -- (##3, ##1+.05);%
- }%
- \renewcommand\cpssp@makeB[3]{%
- \filldraw[very thin, color=black!25, draw=black]%
- (##2, ##1+.0125) -- (##3-.075, ##1+.0125) --%
- (##3-.075, ##1-.0375) -- (##3, ##1+.05) --%
- (##2, ##1+.05) -- (##2, ##1+.0125);%
- }%
- \renewcommand\cpssp@makeC[3]{%
- \draw[thick, color=black]%
- (##2, ##1+.05) -- (##3, ##1+.05);%
- }%
- \renewcommand\cpssp@makeE[3]{%
- \filldraw[very thin, color=black!25, draw=black]%
- (##2, ##1+.0125) -- (##3-.075, ##1+.0125) --%
- (##3-.075, ##1-.0375) -- (##3, ##1+.05) --%
- (##3-.075, ##1+.1375) -- (##3-.075, ##1+.0875) --%
- (##2, ##1+.0875) -- (##2, ##1+.0125);%
- }%
- \renewcommand\cpssp@makeET[3]{%
- \filldraw[very thin, color=black!25, draw=black]%
- (##2, ##1+.0125) rectangle (##3, ##1+.0875);%
- }%
- \renewcommand\cpssp@makeG[3]{%
- \filldraw[thin, color=black!75, draw=black] %
- (##2, ##1) rectangle (##3, ##1+.1);%
- \node at ({(##2+##3)*\real{.5}}, ##1) [anchor=south]%
- {\cpssp@threehelix};%
- }%
- \renewcommand\cpssp@makeH[3]{%
- \filldraw[thin, color=black!75, draw=black] %
- (##2, ##1) rectangle (##3, ##1+.1);%
- }%
- \renewcommand\cpssp@makeI[3]{%
- \filldraw[thin, color=black!75, draw=black] %
- (##2, ##1) rectangle (##3, ##1+.1);%
- \node at ({(##2+##3)*\real{.5}}, ##1) [anchor=south]%
- {\cpssp@pihelix};%
- }%
- \renewcommand\cpssp@makeS[3]{%
- \begin{scope}%
- \clip (##2, ##1) rectangle (##3, ##1+1);%
- \draw[thick, color=black!75, line cap=round]%
- (##2, ##1+.05) -- ({(##2+##3)*\real{.5}}, ##1+.2) --%
- (##3, ##1+.05);%
- \end{scope}%
- }%
- \renewcommand\cpssp@makeT[3]{%
- \begin{scope}%
- \clip (##2, ##1) rectangle (##3, ##1+1);%
- \draw[thick, color=black!75]%
- (##2, ##1+.035) arc (180:0:{(##3-##2)*\real{.5}} and .2);%
- \end{scope}%
- }%
- \renewcommand\cpssp@makeLabel[2]{%
- \node at (0, ##1+.05) [inner sep=0pt,right]%
- {\cpssp@labelformat{##2}};%
- }%
- \renewcommand\cpssp@makeStartRes[3]{%
- \node at (##2, ##1+.05) [left]%
- {\cpssp@numberformat{##3}};%
- }%
- \renewcommand\cpssp@makeEndRes[3]{%
- \node at (##2, ##1+.05) [right]%
- {\cpssp@numberformat{##3}};%
- }%
-}
-% \end{macrocode}
-% \end{macro}
-% \begin{macro}{\cpsstyle@pdb}
-% The |pdb| style is shown in fig.~\ref{fig:3StylePdb}.
-% \begin{macrocode}
-\newcommand\cpsstyle@pdb{
- \renewcommand\cpssp@makeX[3]{%
- \draw[dashed, thick, color=CpsspColorPdbX]%
- (##2, ##1+.2) -- (##3, ##1+.2);%
- }%
- \renewcommand\cpssp@makeB[3]{%
- \cpssp@makeC{##1}{##3-.1}{##3}%
- \fill[color=CpsspColorPdbB]%
- (##2, ##1) -- (##3, ##1+.2) -- (##2, ##1+.4);
- }%
- \renewcommand\cpssp@makeC[3]{%
- \draw[thick, color=CpsspColorPdbC]%
- (##2, ##1+.2) -- (##3,##1+.2);%
- }%
- \renewcommand\cpssp@makeE[3]{%
- \cpssp@makeC{##1}{##3-.1}{##3}%
- \fill[color=CpsspColorPdbE]%
- (##2, ##1+.1) -- (##3-.23, ##1+.1) -- (##3-.23, ##1) --%
- (##3, ##1+.2) -- (##3-.23, ##1+.4) -- (##3-.23, ##1+.3)--%
- (##2, ##1+.3);%
- }%
- \renewcommand\cpssp@makeET[3]{%
- \fill[color=CpsspColorPdbE]%
- (##2, ##1+.1) rectangle (##3, ##1+.3);%
- }%
- \renewcommand\cpssp@makeG[3]{%
- \draw[ultra thick, color=CpsspColorPdbG, decorate,%
- decoration={snake, amplitude=.2cm}]%
- (##2, ##1+.2) -- (##3, ##1+.2);%
- }%
- \renewcommand\cpssp@makeH[3]{%
- \draw[ultra thick, color=CpsspColorPdbH, decorate,%
- decoration={snake, amplitude=.2cm}]%
- (##2, ##1+.2) -- (##3, ##1+.2);%
- }%
- \renewcommand\cpssp@makeI[3]{%
- \draw[ultra thick, color=CpsspColorPdbI, decorate,%
- decoration={snake, amplitude=.2cm}]%
- (##2, ##1+.2) -- (##3, ##1+.2);%
- }%
- \renewcommand\cpssp@makeS[3]{%
- \begin{scope}%
- \draw[thick, color=CpsspColorPdbS]
- (##2, ##1+.2) -- (##2+.05, ##1+.2) --%
- ({(##2+##3)*\real{.5}}, ##1+.4) -- (##3-.05, ##1+.2) --%
- (##3, ##1+.2);%
- \end{scope}%
- }%
- \renewcommand\cpssp@makeT[3]{%
- \begin{scope}[color=CpsspColorPdbT]%
- \draw[thick]%
- (##2, ##1+.2) -- (##2+.1, ##1+.2);%
- \draw[line width=.05cm]%
- (##2+.1,##1+.185) arc (180:0:{(##3-##2-.2)*\real{.5}} and .25);%
- \draw[thick]%
- (##3-.1, ##1+.2) -- (##3, ##1+.2);%
- \end{scope}%
- }%
- \renewcommand\cpssp@makeLabel[2]{%
- \node at (0, ##1) [inner sep=0pt, above right=.075 and 0]%
- {\cpssp@labelformat{##2}};%
- }%
- \renewcommand\cpssp@makeStartRes[3]{%
- \node at (##2, ##1+.2) [left]%
- {\cpssp@numberformat{##3}};%
- }%
- \renewcommand\cpssp@makeEndRes[3]{%
- \node at (##2, ##1+.2) [right]%
- {\cpssp@numberformat{##3}};%
- }%
-}
-% \end{macrocode}
-% \end{macro}
-% \begin{macro}{\cpssp@style}
-% The |cpssp@style| macro is used to change the style internally. It is called with the style name as the single mandatory argument and first checks if this style is known (i.e., the macro |\cpsstyle@|\meta{style name} is defined) and executes this macro if possible; otherwise, a package warning is issued and the |small| style is used.
-% \begin{macrocode}
-\newcommand\cpssp@style[1]{
- \@ifundefined{cpsstyle@#1}{%
- \PackageWarning{myclassicthesis}{Style ``\Cps@style'' undefined%
- \MessageBreak using ``small'' instead}%
- \cpsstyle@small%
- }{%
- \csname cpsstyle@#1\endcsname%
- }%
-}
-% \end{macrocode}
-% \end{macro}
-%
-% \subsection{User Interface, Part 2}
-%
-% \begin{macro}{\cpsspformat}
-% Now the three main user commands are defined. |\cpsspformat| takes one mandatory argument which is a list of comma-separated options in \textsf{keyval} format; these options change the appearance of the \textsf{cpssp} output.
-% \begin{macrocode}
-\newcommand\cpsspformat[1]{\setkeys{cpssp}{#1}}
-% \end{macrocode}
-% \end{macro}
-% When the package is loaded by |\usepackage|\oarg{options}|{cpssp}|, |\cpsspformat| is called and the options are set to the values specified in the optional argument of |\usepackage|.
-% \begin{macrocode}
-\cpsspformat{%
- style=\Cps@style,%
- numberformat=\Cps@numberformat,%
- labelformat=\Cps@labelformat,%
- threehelixname=\Cps@threehelixname,%
- pihelixname=\Cps@pihelixname%
-}
-% \end{macrocode}
-% \begin{macro}{\cpsspinput}
-% |\cpsspinput| is basically a shorthand for the more powerful |cpsspimage| environment (see below). The optional argument takes the same option list as |\cpsspformat|, the mandatory argument takes the name of the input file without the |.tex| extension.
-% \begin{macrocode}
-\newcommand\cpsspinput[2][]{\begin{cpsspimage}[#1]{#2}\end{cpsspimage}}
-% \end{macrocode}
-% \end{macro}
-% \begin{environment}{cpsspimage}
-% The |cpsspimage| environment takes the same arguments as the |\cpsspinput| commands. |\begin{cpsspimage}| first begins a |tikzpicture| environment and then locally changes the appearance of the secondary structure image which is finally loaded by |\input|. As |tikzpicture| remains open until |\end{cpsspimage}|, it is possible to add further graphical elements to the image by using standard Ti\textit{k}Z commands.
-% \begin{macrocode}
-\newenvironment{cpsspimage}[2][]%
- {\begin{tikzpicture}\cpsspformat{#1}\input{#2.tex}}%
- {\end{tikzpicture}}
-% \end{macrocode}
-% \end{environment}
-% \iffalse
-%</package>
-%<*ColSequences>
->ColG
--------YDFEYLNGLSYTELTNLIKNIKWNQINGLFNYSTGSQKFFGDKNRVQAIINALQESGRTYTANDM
-KGIETFTEVLRAGFYLGYYNDGLSYLNDRNFQDKCIPAMIAIQKNPNFKLGTAVQDEVITSLGKLIGNASAN
-AEVVNNCVPVLKQFRENLNQYAPDYVKGTAVNELIKGIEFDFSGAAYEK---DVKTMPWYGKIDPFINELKA
-LGLYGNITSATEWASDVGIYYLSKFGLYSTNRNDIVQSLEKAVDMY-KYGKIAFVAMERITWDYDGIGSNGK
-KVDHDKFLDDAEKHYLPKTYTFDNGTFIIRAGDKVSEEKIKRLYWASREVKSQFHRVVGNDKALEVGNADDV
-LTMKIFNSPEEYKFNTNINGVSTDNGGLYIEPRGTFYTYERTPQQSIFSLEELFRHEYTHYLQARYLVDGLW
-GQGPFYEKN--RLTWFDEGTAEFFAGSTRTSGVLPRKSILGYLAKDKVDHRYSLKKTLNSGYDDSDWMFYNY
-GFAVAHYLYEKDMPTFIKMNKAILNTDVKSYDEIIKKLSDDANKNTEYQNHIQELADKYQGAGIPLVSDDYL
-KDHGYKKASEVYSEISKAASLTNTSVTAEKSQYFNTFTLRGTYTGETSKGEFKDWDEMSKKLDGTLESLAKN
-SWSGYKTLTAYFTNYRVTSDNKVQYDVVFHGVLTDNA
->ColH
-VQNESKRYTVSYLKTLNYYDLVDLLVKTEIENLPDLFQYSSDAKEFYGNKTRMSFIMDEIGRRAPQYTEIDH
-KGIPTLVEVVRAGFYLGFHNKELNEINKRSFKERVIPSILAIQKNPNFKLGTEVQDKIVSATGLLAGNETAP
-PEVVNNFTPILQDCIKNIDRYALDDLKSKALFNVLAAPTYDITEYLRATK-EKPENTPWYGKIDGFINELKK
-LALYGKINDNNSWIIDNGIYHIAPLGKLHSNNKIGIETLTEVMKVYPYLSMQHLQSADQIKRHYDSKDAEGN
-KIPLDKFKKEGKEKYCPKTYTFDDGKVIIKAGARVEEEKVKRLYWASKEVNSQFFRVYGIDKPLEEGNPDDI
-LTMVIYNSPEEYKLNSVLYGYDTNNGGMYIEPEGTFFTYEREAQESTYTLEELFRHEYTHYLQGRYAVPGQW
-GRTKLYDND--RLTWYEEGGAELFAGSTRTSGILPRKSIVSNIHNTTRNNRYKLSDTVHSKYGAS-FEFYNY
-ACMFMDYMYNKDMGILNKLNDLAKNNDVDGYDNYIRDLSSNYALNDKYQDHMQERIDNYENLTVPFVADDYL
-VRHAYKNPNEIYSEISEVAKLKDAKSEVKKSQYFSTFTLRGSYTGGASKGKLEDQKAMNKFIDDSLKKLDTY
-SWSGYKTLTAYFTNYKVDSSNRVTYDVVFHGYL----
->ColT
----YKTKYSFNDLNKLSNKEILDLTSKIKWSDISDLFQYNKDSYTFYSNKERVQALIDGLYEKGCNYTSTDD
-KGIDTLVEILRSGFYLGYYNDSLKYLNDKSFKDKCIPAMIAIENNKNFKLGENGQDTVVHALGKLIGNTSCN
-DEVVNKTIPILEQYYNEIDKYSKDRLKSNAVYNFMKEINYDISQYEYAHNIRDYKNTPWSGKIDSFIDTISK
-FASISNVTKDNGWIINNSIYYTAKLSKYHSNPSIPHSVIDNCIEIFPDYSEQYFTAIEAIKEDFNSRDSKGN
-VIDINKLIEEGKKHYLPKTYTFDNGKIIIKAGDKVEESKIQKLYWASKEVKSQFHRIIGNDKPLEVGNADDI
-LTIVIYNNPEEYKLNKTLYGYSVDNGGIYIEGIGTFFTYERTPQESIYSLEELFRHEFTHYLQGRYLIPGLF
-NKGDFYKGNNGRITWFEEGSAEFFAGSTRTS-VLPRKSMVGGLSKNPKE-RFNADKLLHSKYSDG-WDFYKY
-GYAFSDYMYNNNKKLFSDLVSTMKNNDVKGYEALIEESSKDSKINKDYEYHMENLVNNYDNYTIPLVSDDYM
-KQYDNKSLHEIKSDIEKAMDVKNSQITKESSQYFDTYNLKATYTLSSNKGEISNWNYMNNKINEALNKLDNL
-SWGGYKTVTAYFSNPRLNSNNEVVYDIVFHGLL----
-%</ColSequences>
-%<*ColStructures>
->ColG
-CCHHHHHCCCHHHHHHHHHHCCHHHHHHHHCCCHHHHHHHHCHHHHHHHHHHHHHHHHCC
-CCCCHHHHHHHHHHHHHHHHHHHCCCCCCCCCCHHHHHHHHHHHHHHHHCCCCCCCCCHH
-HHHHHHHHHHHHHHHCCHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHCCC
-HHHCCCHHHHHHHHHHHHHHHHHHHHHHHHCCCCCCCHHHHHHHHHHHHHHHCCCCCCCH
-HHHHHHHHHHHCCCCHHHHHHHHHHHHCCCCCCCCCCCCCCHHHHHHHHHHHCCCCEEEC
-CCCEEEECCCCCCHHHHHHHHHHHHHHHHHHHHHHHCCCCCCCCCCCCEEEEEEECCHHH
-HHHHCCCCCCCCCCCCEEECCCCEEEEEECCCCCCHHHHHHHHHCHHHHHHCCCCCCCCC
-CCCCCCCCCCCCCEEEHHHHHHHCCCCCCCCCCCHHHHHHHHHHCCCCCCCCHHHHHHCC
-CCCCCCEEHHHHHHHHHHHHHCCHHHHHHHHHHHHCCCHHHHHHHHHHHCCCHHHHHHHH
-HHHHHHHCCCCCCCCCCCCCCCCCCCCCCCHHHHHHHHHHHCCCCCEEECCCCCCCCCEE
-EEEEEEECCCCCCCHHHHHHHHHHHHHHHHHHHHCCCCCCEEEEEEEECCEECCCCCEEE
-EEEEEEECCCCC
-
->ColH
-CCCCCCCCCHHHHHCCCHHHHHHHHHHCCHHHCCHHHCCCHHHHHHHHHHHHHHHHHHHH
-HHHHCCCCCCCCCCHHHHHHHHHHHHHHHHCCCCCCCCCCHHHHHHHHHHHHHHHHCCCC
-CCCCCHHHHHHHHHHHHCCCCCCCHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
-CCCCHHHHHHHHHHCCHHHHHHHHCCHHHHHHHHHHHHHCCCCCCHHHHHHHHHHHHHHH
-HCCCCCHHHHHHHHHHHHHHCCCCCHHHHHHHHHHHHHCCHHHCCCCCCCHHHHHHHHHH
-HCCCEEEEECCCCEEEECCCCCCHHHHHHHHHHHHHHHHHHHHHHCCCCCCCCCCCCCEE
-EEEEECCHHHHHHCCCCCCCCCCCCEEEECCCCCEEEEEEECCCCHHHHHHHHCCHHEEE
-CCCCCCCCCCCCCCCCCCCCCEEEEEHHHHHHHHCCCCCCCCCHHHHHHHHHHCCCCCCC
-CCHHHHHHCCCCCCCHHHHHHHHHHHHHHHCCHHHHHHHHHHHHCCCHHHHHHHHHHHHH
-HHHHHHHHHHHHHHHHCCCCCCCCCCCCHHHHHHCCCCCHHHHHHHHHHHCCCCCCCEEE
-CCCCCCCEEEEEEEEECCCCCCCHHHHHHHHHHHHHHHHHHHCCCCCCCEEEEEEEECCE
-ECCCCCEEEEEEEEECC
-
->ColT
-CCCCCCHHHHHCCCHHHHHHHHHHCCHHHHHHHCCCCHHHHHHHHCHHHHHHHHHHHHHH
-HHCCCCCCHHHHHHHHHHHHHHHHHHHCCCCCCCCCCHHHHHHHHHHHHHHHHCCCCCCC
-CHHHHHHHHHHHHHHHCCCCCHHHHHHHHHHHHHHHHHHHHCHHHHHHHHHHHHHHHHHC
-CCCHHHHHHCCCHHHHHCHHHCCCHHHHHHHHHHHHCCCCCCCHHHHHHHHHHHHHHHCC
-CCCCCHHHHHHHHHHHHHCCCCCHHHHHHHHHHHHHCCCCCCCCCEECCCCHHHHHHHHH
-CCEEEEECCCCEEEECCCCCCHHHHHHHHHHHHHHHHHHHHHHCCCCCCCCCCCCCEEEE
-EEECCHHHHHHCCCCCCCCCCCCCEEECCCCEEEEEECCCCCHHHCHHHHHCCHHHHHHC
-CCCCCCCCCCCCCCCCCCCCCCCEEEHHHHHHHHCCCCCCCCCCCCHHHHHHCCCCCCCC
-HHHHHHHCCCCCCCHHHHHHHHHHHHHHCCHHHHHHHHHHHHCCCHHHHHHHHHHHHHHH
-HHHHHHHHHHHHHCCCCCCCCCCCCCHHHHHHCCCCCHHHCCHHHEECCCCCCCCEEECC
-CCCCCEEEEEEEEECCCCCCCHHHHHHHHHHHHHHHHHHHCCCCCCCCEEEEEEECCEEC
-CCCCEEEEEEEEECC
-%</ColStructures>
-%<*ColGPredictions>
->PSIPRED
-CCHHHHHCCCHHHHHHHHHHCCHHHHHHHHCCCHHHHHHHHCHHHHHHHHHHHHHHHHCC
-CCCCHHHHHHHHHHHHHHHHHHHCCCCCCCCCCHHHHHHHHHHHHHHHHCCCCCCCCCHH
-HHHHHHHHHHHHHHHCCHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHCCC
-HHHCCCHHHHHHHHHHHHHHHHHHHHHHHHCCCCCCCHHHHHHHHHHHHHHHCCCCCCCH
-HHHHHHHHHHHCCCCHHHHHHHHHHHHCCCCCCCCCCCCCCHHHHHHHHHHHCCCCEEEC
-CCCEEEECCCCCCHHHHHHHHHHHHHHHHHHHHHHHCCCCCCCCCCCCEEEEEEECCHHH
-HHHHCCCCCCCCCCCCEEECCCCEEEEEECCCCCCHHHHHHHHHCHHHHHHCCCCCCCCC
-CCCCCCCCCCCCCEEEHHHHHHHCCCCCCCCCCCHHHHHHHHHHCCCCCCCCHHHHHHCC
-CCCCCCEEHHHHHHHHHHHHHCCHHHHHHHHHHHHCCCHHHHHHHHHHHCCCHHHHHHHH
-HHHHHHHCCCCCCCCCCCCCCCCCCCCCCCHHHHHHHHHHHCCCCCEEECCCCCCCCCEE
-EEEEEEECCCCCCCHHHHHHHHHHHHHHHHHHHHCCCCCCEEEEEEEECCEECCCCCEEE
-EEEEEEECCCCC
-
->SSpro
-CCHHHHHCCCHHHHHHHHHCCCCCCCCHHECCCCCHHHHHCCHHHHHHHHHHHHHCCCCC
-CCCCCCCHHHHHHHHHHHHHHCCCCCCCCCCCCHHHHHHHHHHHHHHHCCCCCCCCCCCH
-CHHHHHHHHHECCCCCCHHHHHHHHHHHHHHHHCHHHHHHHHHHHHHHHHHHHCCCCCCC
-CHHHCHCHCCCCCCCCCHHHHHHHHHHHHCCCCCCCHHHHHHHHHHHHCCHCCCCCCCCH
-HHHHHHHHHHHCCCCHHHHHHHHHHHHHCCCCCCCCCCCCHHHHHHHHHHHCCCCCEECC
-CCCEEEECCCCCCHHHHHHHHHHHHHHHHHHHHEECCCCCCCCCCCCCEEEEEEECCCCC
-EEECCCECCCCCCCCCEEEECCCEEEEEECCCHHHHHHHHHHHHHHHHHHHCCCEECCCC
-CCCCCCCCCCEEEEEECCCEEEEECCCCCCCCCCCHHHHCCCCCCCCCCEEEEEEEEECC
-CCCCCCHHHHHHHHHHHHHHCCCCCHHHHHHHHHHCCCHHHHHHHHHHHHHHHCCCHHHH
-HHHHHHHHHHCCCCCCCCCHHHHHHCCCCCHHHHHHHHHHHCCCCCCEEEHHHCCCCCEE
-EEEEEEECCCCCCCCCCHHHHHHHHCCHHHHHHHCCCCCCEEEEEEEECCEECCCCCEEE
-EEEEEEECCCCC
-
->CDM
-CCCCCCCCCCCHHHHHHHHCCCCCCCCCCEEEECCCCEEECCEEHHHHHHHHHHHHCCCC
-CCCCCCCHHHHHHHHHHHHEEEECCCCCCCCCHHHHHHHEEEEEECCCCCCCCCCCCCCH
-HHHHHHHEEEECCCCCCHHHHHHHHHHHHHCCCCCCCCCCCCCCHHHHHHHHHCCCCCHH
-HHHHCCCCCCCHHHHHHCCHHHHHHHHHHHCCCCCCCHHHHHCCHHHHHHHHHCCCCCCH
-HHHHHHHHHCCCCCCEEEEEEEEEEEEECCCCCCCCCCHHHHHHHHHHHHHHCCCCCCCC
-CCCEEEECCCCHHHHHHHHHHHHHHHHHHHHEEEECCCCCCCCCCCCCEEEEECCCCCCH
-HHHHEEEECCCCCCCCEECCCCCEECCHHCCCCCHHHHHHHHHHHHHHHHHCCCCCCCCC
-CCCCCCCCCCCEEEEEECHHHHHCCCCCCCCCCCCCEEEECCCCCCCCCCCHHHHHHHCC
-CCCCCCCCCCCCHHHHHHHHCCCCHHHHHHHHHHHCCCCCCHHHHHHHHCCCCHHHHHHH
-HHHHHHCCCCCCEEEEEEEHHHHHHCCCCCCEEEHHHHHHHHHCCCCCCCCCCCCCEEEE
-CCCEEEECCCCCCCCCCHHHHHHHHHHHHHHHHCCCCCCCCEEEEEEEEEEECCCCCCEE
-EEEEEECCCCCC
-
->Jpred
---HHHHH---HHHHHHHHHH----------------HHHH--HHHHHHHHHHHHHHH---
--------HHHHHHHHHHHHHE------------HHHHHHHHHHHHHHHH----------H
-HHHHHHHHHHH--------HHHHHHHHHHHHHHHHHH----HHHHHHHHHHHHHHHH---
----------HHHHHH---HHHHHHHHHHH--------HHHHHHHHHHHHH---------H
-HHHHHHHHHHH-----HHHHHHHHHH--------------HHHHHHHHHHHH--EEEEE-
---EEEEEE-----HHHHHHHHHHHHHHHHHHHHHH-------------EEEEEEE-----
----------------EEEE----EEEEEE-------EEEEH-----EEEE----E-----
--------------EEEEHHHHHHH----------HHHHHHHHH---------HHHHHH--
-------EEHHHHHHHHHHHHH--HHHHHHHHHHHH---HHHHHHHHHHHHH-H-HHHHHH
-HHHHHHH-------------HHH----------HHHHHHHH----EEEE---------EE
-EEEEEE--------HHHHHHHHHHHHHHHHHH---------EEEEEEEEEEE-----EEE
-EEEEEEE-----
-
->SABLE
-CCHHHHHCCCHHHHHHHHHHCCCCHHHHHHHCCCCHHHHHCCHHHHHHHHHHHHHHHCCC
-CCCCHHHHHHHHHHHHHHHHHHCCCCCCCCCCCCHHHHHHHHHHHHHHCCCCCCCCCCCH
-HHHHHHHHHHHHCCCCCHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHC
-CCCCHHHHHHHHHHHHHHHHHHHHHHHHHHCCCCCHHHHHHHHHHHHHHHHCCCCCCCHH
-HHHHHHHHHHHCCCCHHHHHHHHHHHHHCCCCCCCCCCCCHHHHHHHHHHHCCCCEEEEC
-CCCEEEEECCCCCHHHHHHHHHHHHHHHHHHHHHHHCCCCCCCCCCCCEEEEEEECCCCC
-CCCCCCCCCCCCCCCCEEECCCCEEEEEECCCCCCCCCHHHHHCCCEEEEECCCCCCCCC
-CCCCCCCCCCCCEEEHHHHHHHHHCCCCCCCCCCCCHHHHHHHHCCCCCCCCHHHHHHCC
-CCCCCCHHHHHHHHHHHHHHHCCCHHHHHHHHHHHCCCCHHHHHHHHHHCCCCCCHHHHH
-HHHHHHHHHCCCCCCCCCCCCCCCCCCCCCCHHHHHHHHHHCCCCCCCCCCCCCCCCCEE
-EEEEEEECCCCCCCCCHHHHHHHHHHHHHHHHHCCCCCCCCEEEEEEECEEECCCCCEEE
-EEEEEEECCCCC
-%</ColGPredictions>
-%<*ColTPrediction>
->ColT
-CCCCCCHHHHHCCCHHHHHHHHHHCCHHHHHHHCCCCHHHHHHHHCHHHHHHHHHHHHHH
-HHCCCCCCHHHHHHHHHHHHHHHHHHHCCCCCCCCCCHHHHHHHHHHHHHHHHCCCCCCC
-CHHHHHHHHHHHHHHHCCCCCHHHHHHHHHHHHHHHHHHHHCHHHHHHHHHHHHHHHHHC
-CCCHHHHHHCCCHHHHHCHHHCCCHHHHHHHHHHHHCCCCCCCHHHHHHHHHHHHHHHCC
-CCCCCHHHHHHHHHHHHHCCCCCHHHHHHHHHHHHHCCCCCCCCCEECCCCHHHHHHHHH
-CCEEEEECCCCEEEECCCCCCHHHHHHHHHHHHHHHHHHHHHHCCCCCCCCCCCCCEEEE
-EEECCHHHHHHCCCCCCCCCCCCCEEECCCCEEEEEECCCCCHHHCHHHHHCCHHHHHHC
-CCCCCCCCCCCCCCCCCCCCCCCEEEHHHHHHHHCCCCCCCCCCCCHHHHHHCCCCCCCC
-HHHHHHHCCCCCCCHHHHHHHHHHHHHHCCHHHHHHHHHHHHCCCHHHHHHHHHHHHHHH
-HHHHHHHHHHHHHCCCCCCCCCCCCCHHHHHHCCCCCHHHCCHHHEECCCCCCCCEEECC
-CCCCCEEEEEEEEECCCCCCCHHHHHHHHHHHHHHHHHHHCCCCCCCCEEEEEEECCEEC
-CCCCEEEEEEEEECC
-%</ColTPrediction>
-%<*Collagenases0>
- \cpsspLabel{-0.0}{ColG}
- \cpsspStartRes{-0.0}{1.5}{0}
- \cpsspGap{-0.0}{1.5}{3.25}
- \cpsspCoil{-0.0}{3.25}{3.75}
- \cpsspAlphaHelix{-0.0}{3.75}{5.0}
- \cpsspCoil{-0.0}{5.0}{5.75}
- \cpsspAlphaHelix{-0.0}{5.75}{8.25}
- \cpsspCoil{-0.0}{8.25}{8.75}
- \cpsspAlphaHelix{-0.0}{8.75}{10.75}
- \cpsspCoil{-0.0}{10.75}{11.5}
- \cpsspAlphaHelix{-0.0}{11.5}{13.5}
- \cpsspCoil{-0.0}{13.5}{13.75}
- \cpsspAlphaHelix{-0.0}{13.75}{14.0}
- \cpsspEndRes{-0.0}{14.0}{43}
- \cpsspLabel{-2.5}{ColG}
- \cpsspStartRes{-2.5}{1.5}{44}
- \cpsspAlphaHelix{-2.5}{1.5}{5.25}
- \cpsspCoil{-2.5}{5.25}{6.75}
- \cpsspAlphaHelix{-2.5}{6.75}{11.5}
- \cpsspCoil{-2.5}{11.5}{14.0}
- \cpsspEndRes{-2.5}{14.0}{93}
- \cpsspLabel{-5.0}{ColG}
- \cpsspStartRes{-5.0}{1.5}{94}
- \cpsspAlphaHelix{-5.0}{1.5}{5.5}
- \cpsspCoil{-5.0}{5.5}{7.75}
- \cpsspAlphaHelix{-5.0}{7.75}{12.0}
- \cpsspCoil{-5.0}{12.0}{12.5}
- \cpsspAlphaHelix{-5.0}{12.5}{14.0}
- \cpsspEndRes{-5.0}{14.0}{143}
- \cpsspLabel{-7.5}{ColG}
- \cpsspStartRes{-7.5}{1.5}{144}
- \cpsspAlphaHelix{-7.5}{1.5}{10.0}
- \cpsspCoil{-7.5}{10.0}{10.75}
- \cpsspAlphaHelix{-7.5}{10.75}{11.5}
- \cpsspCoil{-7.5}{11.5}{12.25}
- \cpsspGap{-7.5}{12.25}{13.0}
- \cpsspAlphaHelix{-7.5}{13.0}{14.0}
- \cpsspEndRes{-7.5}{14.0}{190}
- \cpsspLabel{-10.0}{ColG}
- \cpsspStartRes{-10.0}{1.5}{191}
- \cpsspAlphaHelix{-10.0}{1.5}{6.5}
- \cpsspCoil{-10.0}{6.5}{8.25}
- \cpsspAlphaHelix{-10.0}{8.25}{12.0}
- \cpsspCoil{-10.0}{12.0}{13.75}
- \cpsspAlphaHelix{-10.0}{13.75}{14.0}
- \cpsspEndRes{-10.0}{14.0}{240}
- \cpsspLabel{-12.5}{ColG}
- \cpsspStartRes{-12.5}{1.5}{241}
- \cpsspAlphaHelix{-12.5}{1.5}{4.25}
- \cpsspCoil{-12.5}{4.25}{4.5}
- \cpsspGap{-12.5}{4.5}{4.75}
- \cpsspCoil{-12.5}{4.75}{5.5}
- \cpsspAlphaHelix{-12.5}{5.5}{8.5}
- \cpsspCoil{-12.5}{8.5}{12.0}
- \cpsspAlphaHelix{-12.5}{12.0}{14.0}
- \cpsspEndRes{-12.5}{14.0}{289}
- \cpsspLabel{-15.0}{ColG}
- \cpsspStartRes{-15.0}{1.5}{290}
- \cpsspAlphaHelix{-15.0}{1.5}{2.25}
- \cpsspCoil{-15.0}{2.25}{3.25}
- \cpsspSheet{-15.0}{3.25}{4.0}
- \cpsspCoil{-15.0}{4.0}{5.0}
- \cpsspSheet{-15.0}{5.0}{6.0}
- \cpsspCoil{-15.0}{6.0}{7.5}
- \cpsspAlphaHelix{-15.0}{7.5}{13.25}
- \cpsspCoil{-15.0}{13.25}{14.0}
- \cpsspEndRes{-15.0}{14.0}{339}
- \cpsspLabel{-17.5}{ColG}
- \cpsspStartRes{-17.5}{1.5}{340}
- \cpsspCoil{-17.5}{1.5}{3.75}
- \cpsspSheet{-17.5}{3.75}{5.5}
- \cpsspCoil{-17.5}{5.5}{6.0}
- \cpsspAlphaHelix{-17.5}{6.0}{7.75}
- \cpsspCoil{-17.5}{7.75}{10.75}
- \cpsspSheet{-17.5}{10.75}{11.5}
- \cpsspCoil{-17.5}{11.5}{12.5}
- \cpsspSheet{-17.5}{12.5}{14.0}
- \cpsspEndRes{-17.5}{14.0}{389}
- \cpsspLabel{-0.5}{ColH}
- \cpsspStartRes{-0.5}{1.5}{1}
- \cpsspCoil{-0.5}{1.5}{3.75}
- \cpsspAlphaHelix{-0.5}{3.75}{5.0}
- \cpsspCoil{-0.5}{5.0}{5.75}
- \cpsspAlphaHelix{-0.5}{5.75}{8.25}
- \cpsspCoil{-0.5}{8.25}{8.75}
- \cpsspAlphaHelix{-0.5}{8.75}{9.5}
- \cpsspCoil{-0.5}{9.5}{10.0}
- \cpsspAlphaHelix{-0.5}{10.0}{10.75}
- \cpsspCoil{-0.5}{10.75}{11.5}
- \cpsspAlphaHelix{-0.5}{11.5}{14.0}
- \cpsspEndRes{-0.5}{14.0}{50}
- \cpsspLabel{-3.0}{ColH}
- \cpsspStartRes{-3.0}{1.5}{51}
- \cpsspAlphaHelix{-3.0}{1.5}{5.0}
- \cpsspCoil{-3.0}{5.0}{7.5}
- \cpsspAlphaHelix{-3.0}{7.5}{11.5}
- \cpsspCoil{-3.0}{11.5}{14.0}
- \cpsspEndRes{-3.0}{14.0}{100}
- \cpsspLabel{-5.5}{ColH}
- \cpsspStartRes{-5.5}{1.5}{101}
- \cpsspAlphaHelix{-5.5}{1.5}{5.5}
- \cpsspCoil{-5.5}{5.5}{7.75}
- \cpsspAlphaHelix{-5.5}{7.75}{10.75}
- \cpsspCoil{-5.5}{10.75}{12.5}
- \cpsspAlphaHelix{-5.5}{12.5}{14.0}
- \cpsspEndRes{-5.5}{14.0}{150}
- \cpsspLabel{-8.0}{ColH}
- \cpsspStartRes{-8.0}{1.5}{151}
- \cpsspAlphaHelix{-8.0}{1.5}{9.0}
- \cpsspCoil{-8.0}{9.0}{10.0}
- \cpsspAlphaHelix{-8.0}{10.0}{12.5}
- \cpsspGap{-8.0}{12.5}{12.75}
- \cpsspCoil{-8.0}{12.75}{13.25}
- \cpsspAlphaHelix{-8.0}{13.25}{14.0}
- \cpsspEndRes{-8.0}{14.0}{199}
- \cpsspLabel{-10.5}{ColH}
- \cpsspStartRes{-10.5}{1.5}{200}
- \cpsspAlphaHelix{-10.5}{1.5}{2.75}
- \cpsspCoil{-10.5}{2.75}{3.25}
- \cpsspAlphaHelix{-10.5}{3.25}{6.5}
- \cpsspCoil{-10.5}{6.5}{8.0}
- \cpsspAlphaHelix{-10.5}{8.0}{12.0}
- \cpsspCoil{-10.5}{12.0}{13.25}
- \cpsspAlphaHelix{-10.5}{13.25}{14.0}
- \cpsspEndRes{-10.5}{14.0}{249}
- \cpsspLabel{-13.0}{ColH}
- \cpsspStartRes{-13.0}{1.5}{250}
- \cpsspAlphaHelix{-13.0}{1.5}{4.25}
- \cpsspCoil{-13.0}{4.25}{5.5}
- \cpsspAlphaHelix{-13.0}{5.5}{8.75}
- \cpsspCoil{-13.0}{8.75}{9.25}
- \cpsspAlphaHelix{-13.0}{9.25}{10.0}
- \cpsspCoil{-13.0}{10.0}{11.75}
- \cpsspAlphaHelix{-13.0}{11.75}{14.0}
- \cpsspEndRes{-13.0}{14.0}{299}
- \cpsspLabel{-15.5}{ColH}
- \cpsspStartRes{-15.5}{1.5}{300}
- \cpsspAlphaHelix{-15.5}{1.5}{2.0}
- \cpsspCoil{-15.5}{2.0}{2.75}
- \cpsspSheet{-15.5}{2.75}{4.0}
- \cpsspCoil{-15.5}{4.0}{5.0}
- \cpsspSheet{-15.5}{5.0}{6.0}
- \cpsspCoil{-15.5}{6.0}{7.5}
- \cpsspAlphaHelix{-15.5}{7.5}{13.0}
- \cpsspCoil{-15.5}{13.0}{14.0}
- \cpsspEndRes{-15.5}{14.0}{349}
- \cpsspLabel{-18.0}{ColH}
- \cpsspStartRes{-18.0}{1.5}{350}
- \cpsspCoil{-18.0}{1.5}{3.75}
- \cpsspSheet{-18.0}{3.75}{5.5}
- \cpsspCoil{-18.0}{5.5}{6.0}
- \cpsspAlphaHelix{-18.0}{6.0}{7.5}
- \cpsspCoil{-18.0}{7.5}{10.5}
- \cpsspSheet{-18.0}{10.5}{11.5}
- \cpsspCoil{-18.0}{11.5}{12.75}
- \cpsspSheetT{-18.0}{12.75}{14.0}
- \cpsspEndRes{-18.0}{14.0}{399}
- \cpsspLabel{-1.0}{ColT}
- \cpsspStartRes{-1.0}{1.5}{0}
- \cpsspGap{-1.0}{1.5}{2.25}
- \cpsspCoil{-1.0}{2.25}{3.75}
- \cpsspAlphaHelix{-1.0}{3.75}{5.0}
- \cpsspCoil{-1.0}{5.0}{5.75}
- \cpsspAlphaHelix{-1.0}{5.75}{8.25}
- \cpsspCoil{-1.0}{8.25}{8.75}
- \cpsspAlphaHelix{-1.0}{8.75}{10.5}
- \cpsspCoil{-1.0}{10.5}{11.5}
- \cpsspAlphaHelix{-1.0}{11.5}{13.5}
- \cpsspCoil{-1.0}{13.5}{13.75}
- \cpsspAlphaHelix{-1.0}{13.75}{14.0}
- \cpsspEndRes{-1.0}{14.0}{47}
- \cpsspLabel{-3.5}{ColT}
- \cpsspStartRes{-3.5}{1.5}{48}
- \cpsspAlphaHelix{-3.5}{1.5}{5.25}
- \cpsspCoil{-3.5}{5.25}{6.75}
- \cpsspAlphaHelix{-3.5}{6.75}{11.5}
- \cpsspCoil{-3.5}{11.5}{14.0}
- \cpsspEndRes{-3.5}{14.0}{97}
- \cpsspLabel{-6.0}{ColT}
- \cpsspStartRes{-6.0}{1.5}{98}
- \cpsspAlphaHelix{-6.0}{1.5}{5.5}
- \cpsspCoil{-6.0}{5.5}{7.5}
- \cpsspAlphaHelix{-6.0}{7.5}{11.25}
- \cpsspCoil{-6.0}{11.25}{12.5}
- \cpsspAlphaHelix{-6.0}{12.5}{14.0}
- \cpsspEndRes{-6.0}{14.0}{147}
- \cpsspLabel{-8.5}{ColT}
- \cpsspStartRes{-8.5}{1.5}{148}
- \cpsspAlphaHelix{-8.5}{1.5}{5.0}
- \cpsspCoil{-8.5}{5.0}{5.25}
- \cpsspAlphaHelix{-8.5}{5.25}{9.5}
- \cpsspCoil{-8.5}{9.5}{10.5}
- \cpsspAlphaHelix{-8.5}{10.5}{12.0}
- \cpsspCoil{-8.5}{12.0}{12.75}
- \cpsspAlphaHelix{-8.5}{12.75}{14.0}
- \cpsspEndRes{-8.5}{14.0}{197}
- \cpsspLabel{-11.0}{ColT}
- \cpsspStartRes{-11.0}{1.5}{198}
- \cpsspCoil{-11.0}{1.5}{1.75}
- \cpsspAlphaHelix{-11.0}{1.75}{2.5}
- \cpsspCoil{-11.0}{2.5}{3.25}
- \cpsspAlphaHelix{-11.0}{3.25}{6.25}
- \cpsspCoil{-11.0}{6.25}{8.0}
- \cpsspAlphaHelix{-11.0}{8.0}{11.75}
- \cpsspCoil{-11.0}{11.75}{13.5}
- \cpsspAlphaHelix{-11.0}{13.5}{14.0}
- \cpsspEndRes{-11.0}{14.0}{247}
- \cpsspLabel{-13.5}{ColT}
- \cpsspStartRes{-13.5}{1.5}{248}
- \cpsspAlphaHelix{-13.5}{1.5}{4.25}
- \cpsspCoil{-13.5}{4.25}{5.5}
- \cpsspAlphaHelix{-13.5}{5.5}{8.75}
- \cpsspCoil{-13.5}{8.75}{11.0}
- \cpsspSheet{-13.5}{11.0}{11.5}
- \cpsspCoil{-13.5}{11.5}{12.5}
- \cpsspAlphaHelix{-13.5}{12.5}{14.0}
- \cpsspEndRes{-13.5}{14.0}{297}
- \cpsspLabel{-16.0}{ColT}
- \cpsspStartRes{-16.0}{1.5}{298}
- \cpsspAlphaHelix{-16.0}{1.5}{2.25}
- \cpsspCoil{-16.0}{2.25}{2.75}
- \cpsspSheet{-16.0}{2.75}{4.0}
- \cpsspCoil{-16.0}{4.0}{5.0}
- \cpsspSheet{-16.0}{5.0}{6.0}
- \cpsspCoil{-16.0}{6.0}{7.5}
- \cpsspAlphaHelix{-16.0}{7.5}{13.0}
- \cpsspCoil{-16.0}{13.0}{14.0}
- \cpsspEndRes{-16.0}{14.0}{347}
- \cpsspLabel{-18.5}{ColT}
- \cpsspStartRes{-18.5}{1.5}{348}
- \cpsspCoil{-18.5}{1.5}{3.75}
- \cpsspSheet{-18.5}{3.75}{5.5}
- \cpsspCoil{-18.5}{5.5}{6.0}
- \cpsspAlphaHelix{-18.5}{6.0}{7.5}
- \cpsspCoil{-18.5}{7.5}{10.75}
- \cpsspSheet{-18.5}{10.75}{11.5}
- \cpsspCoil{-18.5}{11.5}{12.5}
- \cpsspSheet{-18.5}{12.5}{14.0}
- \cpsspEndRes{-18.5}{14.0}{397}
-%</Collagenases0>
-%<*ColGPredictions1>
- \cpsspLabel{-0.0}{PSIPRED}
- \cpsspStartRes{-0.0}{1.5}{301}
- \cpsspCoil{-0.0}{1.5}{2.25}
- \cpsspSheet{-0.0}{2.25}{3.25}
- \cpsspCoil{-0.0}{3.25}{4.75}
- \cpsspAlphaHelix{-0.0}{4.75}{10.5}
- \cpsspCoil{-0.0}{10.5}{13.5}
- \cpsspSheetT{-0.0}{13.5}{14.0}
- \cpsspEndRes{-0.0}{14.0}{350}
- \cpsspLabel{-1.75}{PSIPRED}
- \cpsspStartRes{-1.75}{1.5}{351}
- \cpsspSheet{-1.75}{1.5}{2.75}
- \cpsspCoil{-1.75}{2.75}{3.25}
- \cpsspAlphaHelix{-1.75}{3.25}{5.0}
- \cpsspCoil{-1.75}{5.0}{8.0}
- \cpsspSheet{-1.75}{8.0}{8.75}
- \cpsspCoil{-1.75}{8.75}{9.75}
- \cpsspSheet{-1.75}{9.75}{11.25}
- \cpsspCoil{-1.75}{11.25}{12.75}
- \cpsspAlphaHelix{-1.75}{12.75}{14.0}
- \cpsspEndRes{-1.75}{14.0}{400}
- \cpsspLabel{-3.5}{PSIPRED}
- \cpsspStartRes{-3.5}{1.5}{401}
- \cpsspAlphaHelix{-3.5}{1.5}{2.5}
- \cpsspCoil{-3.5}{2.5}{2.75}
- \cpsspAlphaHelix{-3.5}{2.75}{4.25}
- \cpsspCoil{-3.5}{4.25}{9.75}
- \cpsspSheet{-3.5}{9.75}{10.5}
- \cpsspAlphaHelix{-3.5}{10.5}{12.25}
- \cpsspCoil{-3.5}{12.25}{14.0}
- \cpsspEndRes{-3.5}{14.0}{450}
- \cpsspLabel{-5.25}{PSIPRED}
- \cpsspStartRes{-5.25}{1.5}{451}
- \cpsspCoil{-5.25}{1.5}{2.5}
- \cpsspAlphaHelix{-5.25}{2.5}{5.0}
- \cpsspCoil{-5.25}{5.0}{7.0}
- \cpsspAlphaHelix{-5.25}{7.0}{8.5}
- \cpsspCoil{-5.25}{8.5}{10.5}
- \cpsspSheet{-5.25}{10.5}{11.0}
- \cpsspAlphaHelix{-5.25}{11.0}{14.0}
- \cpsspEndRes{-5.25}{14.0}{500}
- \cpsspLabel{-7.0}{PSIPRED}
- \cpsspStartRes{-7.0}{1.5}{501}
- \cpsspAlphaHelix{-7.0}{1.5}{1.75}
- \cpsspCoil{-7.0}{1.75}{2.25}
- \cpsspAlphaHelix{-7.0}{2.25}{5.25}
- \cpsspCoil{-7.0}{5.25}{6.0}
- \cpsspAlphaHelix{-7.0}{6.0}{8.75}
- \cpsspCoil{-7.0}{8.75}{9.5}
- \cpsspAlphaHelix{-7.0}{9.5}{13.25}
- \cpsspCoil{-7.0}{13.25}{14.0}
- \cpsspEndRes{-7.0}{14.0}{550}
- \cpsspLabel{-8.75}{PSIPRED}
- \cpsspStartRes{-8.75}{1.5}{551}
- \cpsspCoil{-8.75}{1.5}{6.5}
- \cpsspAlphaHelix{-8.75}{6.5}{9.25}
- \cpsspCoil{-8.75}{9.25}{10.5}
- \cpsspSheet{-8.75}{10.5}{11.25}
- \cpsspCoil{-8.75}{11.25}{13.5}
- \cpsspSheetT{-8.75}{13.5}{14.0}
- \cpsspEndRes{-8.75}{14.0}{600}
- \cpsspLabel{-0.25}{SSpro}
- \cpsspStartRes{-0.25}{1.5}{301}
- \cpsspCoil{-0.25}{1.5}{2.25}
- \cpsspSheet{-0.25}{2.25}{3.25}
- \cpsspCoil{-0.25}{3.25}{4.75}
- \cpsspAlphaHelix{-0.25}{4.75}{9.75}
- \cpsspSheet{-0.25}{9.75}{10.25}
- \cpsspCoil{-0.25}{10.25}{13.5}
- \cpsspSheetT{-0.25}{13.5}{14.0}
- \cpsspEndRes{-0.25}{14.0}{350}
- \cpsspLabel{-2.0}{SSpro}
- \cpsspStartRes{-2.0}{1.5}{351}
- \cpsspSheet{-2.0}{1.5}{2.75}
- \cpsspCoil{-2.0}{2.75}{4.0}
- \cpsspSheet{-2.0}{4.0}{4.75}
- \cpsspCoil{-2.0}{4.75}{5.5}
- \cpsspSheet{-2.0}{5.5}{5.75}
- \cpsspCoil{-2.0}{5.75}{8.0}
- \cpsspSheet{-2.0}{8.0}{9.0}
- \cpsspCoil{-2.0}{9.0}{9.75}
- \cpsspSheet{-2.0}{9.75}{11.25}
- \cpsspCoil{-2.0}{11.25}{12.0}
- \cpsspAlphaHelix{-2.0}{12.0}{14.0}
- \cpsspEndRes{-2.0}{14.0}{400}
- \cpsspLabel{-3.75}{SSpro}
- \cpsspStartRes{-3.75}{1.5}{401}
- \cpsspAlphaHelix{-3.75}{1.5}{4.25}
- \cpsspCoil{-3.75}{4.25}{5.0}
- \cpsspSheet{-3.75}{5.0}{5.5}
- \cpsspCoil{-3.75}{5.5}{9.0}
- \cpsspSheet{-3.75}{9.0}{10.5}
- \cpsspCoil{-3.75}{10.5}{11.25}
- \cpsspSheet{-3.75}{11.25}{12.5}
- \cpsspCoil{-3.75}{12.5}{14.0}
- \cpsspEndRes{-3.75}{14.0}{450}
- \cpsspLabel{-5.5}{SSpro}
- \cpsspStartRes{-5.5}{1.5}{451}
- \cpsspCoil{-5.5}{1.5}{2.75}
- \cpsspAlphaHelix{-5.5}{2.75}{3.75}
- \cpsspCoil{-5.5}{3.75}{6.25}
- \cpsspSheet{-5.5}{6.25}{8.5}
- \cpsspCoil{-5.5}{8.5}{10.5}
- \cpsspAlphaHelix{-5.5}{10.5}{14.0}
- \cpsspEndRes{-5.5}{14.0}{500}
- \cpsspLabel{-7.25}{SSpro}
- \cpsspStartRes{-7.25}{1.5}{501}
- \cpsspCoil{-7.25}{1.5}{2.75}
- \cpsspAlphaHelix{-7.25}{2.75}{5.25}
- \cpsspCoil{-7.25}{5.25}{6.0}
- \cpsspAlphaHelix{-7.25}{6.0}{9.75}
- \cpsspCoil{-7.25}{9.75}{10.5}
- \cpsspAlphaHelix{-7.25}{10.5}{14.0}
- \cpsspEndRes{-7.25}{14.0}{550}
- \cpsspLabel{-9.0}{SSpro}
- \cpsspStartRes{-9.0}{1.5}{551}
- \cpsspCoil{-9.0}{1.5}{3.75}
- \cpsspAlphaHelix{-9.0}{3.75}{5.25}
- \cpsspCoil{-9.0}{5.25}{6.5}
- \cpsspAlphaHelix{-9.0}{6.5}{9.25}
- \cpsspCoil{-9.0}{9.25}{10.75}
- \cpsspSheet{-9.0}{10.75}{11.5}
- \cpsspAlphaHelix{-9.0}{11.5}{12.25}
- \cpsspCoil{-9.0}{12.25}{13.5}
- \cpsspSheetT{-9.0}{13.5}{14.0}
- \cpsspEndRes{-9.0}{14.0}{600}
- \cpsspLabel{-0.5}{CDM}
- \cpsspStartRes{-0.5}{1.5}{301}
- \cpsspCoil{-0.5}{1.5}{2.25}
- \cpsspSheet{-0.5}{2.25}{3.25}
- \cpsspCoil{-0.5}{3.25}{4.25}
- \cpsspAlphaHelix{-0.5}{4.25}{9.25}
- \cpsspSheet{-0.5}{9.25}{10.25}
- \cpsspCoil{-0.5}{10.25}{13.5}
- \cpsspSheetT{-0.5}{13.5}{14.0}
- \cpsspEndRes{-0.5}{14.0}{350}
- \cpsspLabel{-2.25}{CDM}
- \cpsspStartRes{-2.25}{1.5}{351}
- \cpsspSheet{-2.25}{1.5}{2.25}
- \cpsspCoil{-2.25}{2.25}{3.75}
- \cpsspAlphaHelix{-2.25}{3.75}{5.0}
- \cpsspSheet{-2.25}{5.0}{6.0}
- \cpsspCoil{-2.25}{6.0}{8.0}
- \cpsspSheet{-2.25}{8.0}{8.5}
- \cpsspCoil{-2.25}{8.5}{9.75}
- \cpsspSheet{-2.25}{9.75}{10.25}
- \cpsspCoil{-2.25}{10.25}{10.75}
- \cpsspAlphaHelix{-2.25}{10.75}{11.25}
- \cpsspCoil{-2.25}{11.25}{12.5}
- \cpsspAlphaHelix{-2.25}{12.5}{14.0}
- \cpsspEndRes{-2.25}{14.0}{400}
- \cpsspLabel{-4.0}{CDM}
- \cpsspStartRes{-4.0}{1.5}{401}
- \cpsspAlphaHelix{-4.0}{1.5}{4.25}
- \cpsspCoil{-4.0}{4.25}{9.25}
- \cpsspSheet{-4.0}{9.25}{10.75}
- \cpsspCoil{-4.0}{10.75}{11.0}
- \cpsspAlphaHelix{-4.0}{11.0}{12.25}
- \cpsspCoil{-4.0}{12.25}{14.0}
- \cpsspEndRes{-4.0}{14.0}{450}
- \cpsspLabel{-5.75}{CDM}
- \cpsspStartRes{-5.75}{1.5}{451}
- \cpsspCoil{-5.75}{1.5}{3.0}
- \cpsspSheet{-5.75}{3.0}{4.0}
- \cpsspCoil{-5.75}{4.0}{6.75}
- \cpsspAlphaHelix{-5.75}{6.75}{8.5}
- \cpsspCoil{-5.75}{8.5}{12.0}
- \cpsspAlphaHelix{-5.75}{12.0}{14.0}
- \cpsspEndRes{-5.75}{14.0}{500}
- \cpsspLabel{-7.5}{CDM}
- \cpsspStartRes{-7.5}{1.5}{501}
- \cpsspCoil{-7.5}{1.5}{2.5}
- \cpsspAlphaHelix{-7.5}{2.5}{5.25}
- \cpsspCoil{-7.5}{5.25}{6.75}
- \cpsspAlphaHelix{-7.5}{6.75}{8.75}
- \cpsspCoil{-7.5}{8.75}{9.75}
- \cpsspAlphaHelix{-7.5}{9.75}{13.0}
- \cpsspCoil{-7.5}{13.0}{14.0}
- \cpsspEndRes{-7.5}{14.0}{550}
- \cpsspLabel{-9.25}{CDM}
- \cpsspStartRes{-9.25}{1.5}{551}
- \cpsspCoil{-9.25}{1.5}{2.0}
- \cpsspSheet{-9.25}{2.0}{3.75}
- \cpsspAlphaHelix{-9.25}{3.75}{5.25}
- \cpsspCoil{-9.25}{5.25}{6.75}
- \cpsspSheet{-9.25}{6.75}{7.5}
- \cpsspAlphaHelix{-9.25}{7.5}{9.75}
- \cpsspCoil{-9.25}{9.75}{13.0}
- \cpsspSheet{-9.25}{13.0}{14.0}
- \cpsspEndRes{-9.25}{14.0}{600}
- \cpsspLabel{-0.75}{Jpred}
- \cpsspStartRes{-0.75}{1.5}{301}
- \cpsspCoil{-0.75}{1.5}{2.0}
- \cpsspSheet{-0.75}{2.0}{3.5}
- \cpsspCoil{-0.75}{3.5}{4.75}
- \cpsspAlphaHelix{-0.75}{4.75}{10.25}
- \cpsspCoil{-0.75}{10.25}{13.5}
- \cpsspSheetT{-0.75}{13.5}{14.0}
- \cpsspEndRes{-0.75}{14.0}{350}
- \cpsspLabel{-2.5}{Jpred}
- \cpsspStartRes{-2.5}{1.5}{351}
- \cpsspSheet{-2.5}{1.5}{2.75}
- \cpsspCoil{-2.5}{2.75}{7.75}
- \cpsspSheet{-2.5}{7.75}{8.75}
- \cpsspCoil{-2.5}{8.75}{9.75}
- \cpsspSheet{-2.5}{9.75}{11.25}
- \cpsspCoil{-2.5}{11.25}{13.0}
- \cpsspSheet{-2.5}{13.0}{14.0}
- \cpsspEndRes{-2.5}{14.0}{400}
- \cpsspLabel{-4.25}{Jpred}
- \cpsspStartRes{-4.25}{1.5}{401}
- \cpsspAlphaHelix{-4.25}{1.5}{1.75}
- \cpsspCoil{-4.25}{1.75}{3.0}
- \cpsspSheet{-4.25}{3.0}{4.0}
- \cpsspCoil{-4.25}{4.0}{5.0}
- \cpsspSheet{-4.25}{5.0}{5.25}
- \cpsspCoil{-4.25}{5.25}{9.75}
- \cpsspSheet{-4.25}{9.75}{10.75}
- \cpsspAlphaHelix{-4.25}{10.75}{12.5}
- \cpsspCoil{-4.25}{12.5}{14.0}
- \cpsspEndRes{-4.25}{14.0}{450}
- \cpsspLabel{-6.0}{Jpred}
- \cpsspStartRes{-6.0}{1.5}{451}
- \cpsspCoil{-6.0}{1.5}{2.5}
- \cpsspAlphaHelix{-6.0}{2.5}{4.75}
- \cpsspCoil{-6.0}{4.75}{7.0}
- \cpsspAlphaHelix{-6.0}{7.0}{8.5}
- \cpsspCoil{-6.0}{8.5}{10.5}
- \cpsspSheet{-6.0}{10.5}{11.0}
- \cpsspAlphaHelix{-6.0}{11.0}{14.0}
- \cpsspEndRes{-6.0}{14.0}{500}
- \cpsspLabel{-7.75}{Jpred}
- \cpsspStartRes{-7.75}{1.5}{501}
- \cpsspAlphaHelix{-7.75}{1.5}{1.75}
- \cpsspCoil{-7.75}{1.75}{2.25}
- \cpsspAlphaHelix{-7.75}{2.25}{5.25}
- \cpsspCoil{-7.75}{5.25}{6.0}
- \cpsspAlphaHelix{-7.75}{6.0}{9.25}
- \cpsspCoil{-7.75}{9.25}{9.5}
- \cpsspAlphaHelix{-7.75}{9.5}{9.75}
- \cpsspCoil{-7.75}{9.75}{10.0}
- \cpsspAlphaHelix{-7.75}{10.0}{13.25}
- \cpsspCoil{-7.75}{13.25}{14.0}
- \cpsspEndRes{-7.75}{14.0}{550}
- \cpsspLabel{-9.5}{Jpred}
- \cpsspStartRes{-9.5}{1.5}{551}
- \cpsspCoil{-9.5}{1.5}{4.0}
- \cpsspAlphaHelix{-9.5}{4.0}{4.75}
- \cpsspCoil{-9.5}{4.75}{7.25}
- \cpsspAlphaHelix{-9.5}{7.25}{9.25}
- \cpsspCoil{-9.5}{9.25}{10.25}
- \cpsspSheet{-9.5}{10.25}{11.25}
- \cpsspCoil{-9.5}{11.25}{13.5}
- \cpsspSheetT{-9.5}{13.5}{14.0}
- \cpsspEndRes{-9.5}{14.0}{600}
- \cpsspLabel{-1.0}{SABLE}
- \cpsspStartRes{-1.0}{1.5}{301}
- \cpsspCoil{-1.0}{1.5}{2.25}
- \cpsspSheet{-1.0}{2.25}{3.5}
- \cpsspCoil{-1.0}{3.5}{4.75}
- \cpsspAlphaHelix{-1.0}{4.75}{10.5}
- \cpsspCoil{-1.0}{10.5}{13.5}
- \cpsspSheetT{-1.0}{13.5}{14.0}
- \cpsspEndRes{-1.0}{14.0}{350}
- \cpsspLabel{-2.75}{SABLE}
- \cpsspStartRes{-2.75}{1.5}{351}
- \cpsspSheet{-2.75}{1.5}{2.75}
- \cpsspCoil{-2.75}{2.75}{8.0}
- \cpsspSheet{-2.75}{8.0}{8.75}
- \cpsspCoil{-2.75}{8.75}{9.75}
- \cpsspSheet{-2.75}{9.75}{11.25}
- \cpsspCoil{-2.75}{11.25}{13.5}
- \cpsspAlphaHelix{-2.75}{13.5}{14.0}
- \cpsspEndRes{-2.75}{14.0}{400}
- \cpsspLabel{-4.5}{SABLE}
- \cpsspStartRes{-4.5}{1.5}{401}
- \cpsspAlphaHelix{-4.5}{1.5}{2.25}
- \cpsspCoil{-4.5}{2.25}{3.0}
- \cpsspSheet{-4.5}{3.0}{4.25}
- \cpsspCoil{-4.5}{4.25}{9.5}
- \cpsspSheet{-4.5}{9.5}{10.25}
- \cpsspAlphaHelix{-4.5}{10.25}{12.5}
- \cpsspCoil{-4.5}{12.5}{14.0}
- \cpsspEndRes{-4.5}{14.0}{450}
- \cpsspLabel{-6.25}{SABLE}
- \cpsspStartRes{-6.25}{1.5}{451}
- \cpsspCoil{-6.25}{1.5}{3.0}
- \cpsspAlphaHelix{-6.25}{3.0}{5.0}
- \cpsspCoil{-6.25}{5.0}{7.0}
- \cpsspAlphaHelix{-6.25}{7.0}{8.5}
- \cpsspCoil{-6.25}{8.5}{10.5}
- \cpsspAlphaHelix{-6.25}{10.5}{14.0}
- \cpsspEndRes{-6.25}{14.0}{500}
- \cpsspLabel{-8.0}{SABLE}
- \cpsspStartRes{-8.0}{1.5}{501}
- \cpsspAlphaHelix{-8.0}{1.5}{1.75}
- \cpsspCoil{-8.0}{1.75}{2.5}
- \cpsspAlphaHelix{-8.0}{2.5}{5.25}
- \cpsspCoil{-8.0}{5.25}{6.25}
- \cpsspAlphaHelix{-8.0}{6.25}{8.75}
- \cpsspCoil{-8.0}{8.75}{10.25}
- \cpsspAlphaHelix{-8.0}{10.25}{13.75}
- \cpsspCoil{-8.0}{13.75}{14.0}
- \cpsspEndRes{-8.0}{14.0}{550}
- \cpsspLabel{-9.75}{SABLE}
- \cpsspStartRes{-9.75}{1.5}{551}
- \cpsspCoil{-9.75}{1.5}{6.75}
- \cpsspAlphaHelix{-9.75}{6.75}{9.25}
- \cpsspCoil{-9.75}{9.25}{13.5}
- \cpsspSheetT{-9.75}{13.5}{14.0}
- \cpsspEndRes{-9.75}{14.0}{600}
-%</ColGPredictions1>
-%<*ColTPrediction0>
- \cpsspLabel{-0.0}{ColT}
- \cpsspStartRes{-0.0}{0.0}{1}
- \cpsspCoil{-0.0}{0.0}{1.68}
- \cpsspAlphaHelix{-0.0}{1.68}{3.08}
- \cpsspCoil{-0.0}{3.08}{3.92}
- \cpsspAlphaHelix{-0.0}{3.92}{6.72}
- \cpsspCoil{-0.0}{6.72}{7.28}
- \cpsspAlphaHelix{-0.0}{7.28}{9.24}
- \cpsspCoil{-0.0}{9.24}{10.36}
- \cpsspAlphaHelix{-0.0}{10.36}{12.6}
- \cpsspCoil{-0.0}{12.6}{12.88}
- \cpsspAlphaHelix{-0.0}{12.88}{14.0}
- \cpsspEndRes{-0.0}{14.0}{50}
- \cpsspLabel{-0.75}{ColT}
- \cpsspStartRes{-0.75}{0.0}{51}
- \cpsspAlphaHelix{-0.75}{0.0}{3.36}
- \cpsspCoil{-0.75}{3.36}{5.04}
- \cpsspAlphaHelix{-0.75}{5.04}{10.36}
- \cpsspCoil{-0.75}{10.36}{13.16}
- \cpsspAlphaHelix{-0.75}{13.16}{14.0}
- \cpsspEndRes{-0.75}{14.0}{100}
- \cpsspLabel{-1.5}{ColT}
- \cpsspStartRes{-1.5}{0.0}{101}
- \cpsspAlphaHelix{-1.5}{0.0}{3.64}
- \cpsspCoil{-1.5}{3.64}{5.88}
- \cpsspAlphaHelix{-1.5}{5.88}{10.08}
- \cpsspCoil{-1.5}{10.08}{11.48}
- \cpsspAlphaHelix{-1.5}{11.48}{14.0}
- \cpsspEndRes{-1.5}{14.0}{150}
- \cpsspLabel{-2.25}{ColT}
- \cpsspStartRes{-2.25}{0.0}{151}
- \cpsspAlphaHelix{-2.25}{0.0}{3.08}
- \cpsspCoil{-2.25}{3.08}{3.36}
- \cpsspAlphaHelix{-2.25}{3.36}{8.12}
- \cpsspCoil{-2.25}{8.12}{9.24}
- \cpsspAlphaHelix{-2.25}{9.24}{10.92}
- \cpsspCoil{-2.25}{10.92}{11.76}
- \cpsspAlphaHelix{-2.25}{11.76}{13.16}
- \cpsspCoil{-2.25}{13.16}{13.44}
- \cpsspAlphaHelix{-2.25}{13.44}{14.0}
- \cpsspEndRes{-2.25}{14.0}{200}
- \cpsspLabel{-3.0}{ColT}
- \cpsspStartRes{-3.0}{0.0}{201}
- \cpsspAlphaHelix{-3.0}{0.0}{0.28}
- \cpsspCoil{-3.0}{0.28}{1.12}
- \cpsspAlphaHelix{-3.0}{1.12}{4.48}
- \cpsspCoil{-3.0}{4.48}{6.44}
- \cpsspAlphaHelix{-3.0}{6.44}{10.64}
- \cpsspCoil{-3.0}{10.64}{12.6}
- \cpsspAlphaHelix{-3.0}{12.6}{14.0}
- \cpsspEndRes{-3.0}{14.0}{250}
- \cpsspLabel{-3.75}{ColT}
- \cpsspStartRes{-3.75}{0.0}{251}
- \cpsspAlphaHelix{-3.75}{0.0}{2.24}
- \cpsspCoil{-3.75}{2.24}{3.64}
- \cpsspAlphaHelix{-3.75}{3.64}{7.28}
- \cpsspCoil{-3.75}{7.28}{9.8}
- \cpsspSheet{-3.75}{9.8}{10.36}
- \cpsspCoil{-3.75}{10.36}{11.48}
- \cpsspAlphaHelix{-3.75}{11.48}{14.0}
- \cpsspEndRes{-3.75}{14.0}{300}
- \cpsspLabel{-4.5}{ColT}
- \cpsspStartRes{-4.5}{0.0}{301}
- \cpsspCoil{-4.5}{0.0}{0.56}
- \cpsspSheet{-4.5}{0.56}{1.96}
- \cpsspCoil{-4.5}{1.96}{3.08}
- \cpsspSheet{-4.5}{3.08}{4.2}
- \cpsspCoil{-4.5}{4.2}{5.88}
- \cpsspAlphaHelix{-4.5}{5.88}{12.04}
- \cpsspCoil{-4.5}{12.04}{14.0}
- \cpsspEndRes{-4.5}{14.0}{350}
- \cpsspLabel{-5.25}{ColT}
- \cpsspStartRes{-5.25}{0.0}{351}
- \cpsspCoil{-5.25}{0.0}{1.68}
- \cpsspSheet{-5.25}{1.68}{3.64}
- \cpsspCoil{-5.25}{3.64}{4.2}
- \cpsspAlphaHelix{-5.25}{4.2}{5.88}
- \cpsspCoil{-5.25}{5.88}{9.52}
- \cpsspSheet{-5.25}{9.52}{10.36}
- \cpsspCoil{-5.25}{10.36}{11.48}
- \cpsspSheet{-5.25}{11.48}{13.16}
- \cpsspCoil{-5.25}{13.16}{14.0}
- \cpsspEndRes{-5.25}{14.0}{400}
- \cpsspLabel{-6.0}{ColT}
- \cpsspStartRes{-6.0}{0.0}{401}
- \cpsspCoil{-6.0}{0.0}{0.56}
- \cpsspAlphaHelix{-6.0}{0.56}{1.4}
- \cpsspCoil{-6.0}{1.4}{1.68}
- \cpsspAlphaHelix{-6.0}{1.68}{3.08}
- \cpsspCoil{-6.0}{3.08}{3.64}
- \cpsspAlphaHelix{-6.0}{3.64}{5.32}
- \cpsspCoil{-6.0}{5.32}{12.04}
- \cpsspSheet{-6.0}{12.04}{12.88}
- \cpsspAlphaHelix{-6.0}{12.88}{14.0}
- \cpsspEndRes{-6.0}{14.0}{450}
- \cpsspLabel{-6.75}{ColT}
- \cpsspStartRes{-6.75}{0.0}{451}
- \cpsspAlphaHelix{-6.75}{0.0}{1.12}
- \cpsspCoil{-6.75}{1.12}{4.48}
- \cpsspAlphaHelix{-6.75}{4.48}{6.16}
- \cpsspCoil{-6.75}{6.16}{8.4}
- \cpsspAlphaHelix{-6.75}{8.4}{10.36}
- \cpsspCoil{-6.75}{10.36}{12.32}
- \cpsspAlphaHelix{-6.75}{12.32}{14.0}
- \cpsspEndRes{-6.75}{14.0}{500}
- \cpsspLabel{-7.5}{ColT}
- \cpsspStartRes{-7.5}{0.0}{501}
- \cpsspAlphaHelix{-7.5}{0.0}{2.24}
- \cpsspCoil{-7.5}{2.24}{2.8}
- \cpsspAlphaHelix{-7.5}{2.8}{6.16}
- \cpsspCoil{-7.5}{6.16}{7.0}
- \cpsspAlphaHelix{-7.5}{7.0}{14.0}
- \cpsspEndRes{-7.5}{14.0}{550}
- \cpsspLabel{-8.25}{ColT}
- \cpsspStartRes{-8.25}{0.0}{551}
- \cpsspAlphaHelix{-8.25}{0.0}{0.84}
- \cpsspCoil{-8.25}{0.84}{4.48}
- \cpsspAlphaHelix{-8.25}{4.48}{6.16}
- \cpsspCoil{-8.25}{6.16}{7.56}
- \cpsspAlphaHelix{-8.25}{7.56}{8.4}
- \cpsspCoil{-8.25}{8.4}{8.96}
- \cpsspAlphaHelix{-8.25}{8.96}{9.8}
- \cpsspSheet{-8.25}{9.8}{10.36}
- \cpsspCoil{-8.25}{10.36}{12.6}
- \cpsspSheet{-8.25}{12.6}{13.44}
- \cpsspCoil{-8.25}{13.44}{14.0}
- \cpsspEndRes{-8.25}{14.0}{600}
- \cpsspLabel{-9.0}{ColT}
- \cpsspStartRes{-9.0}{0.0}{601}
- \cpsspCoil{-9.0}{0.0}{1.4}
- \cpsspSheet{-9.0}{1.4}{3.92}
- \cpsspCoil{-9.0}{3.92}{5.88}
- \cpsspAlphaHelix{-9.0}{5.88}{11.2}
- \cpsspCoil{-9.0}{11.2}{13.44}
- \cpsspSheetT{-9.0}{13.44}{14.0}
- \cpsspEndRes{-9.0}{14.0}{650}
- \cpsspLabel{-9.75}{ColT}
- \cpsspStartRes{-9.75}{0.0}{651}
- \cpsspSheet{-9.75}{0.0}{1.4}
- \cpsspCoil{-9.75}{1.4}{1.96}
- \cpsspSheet{-9.75}{1.96}{2.52}
- \cpsspCoil{-9.75}{2.52}{3.92}
- \cpsspSheet{-9.75}{3.92}{6.44}
- \cpsspCoil{-9.75}{6.44}{7.0}
- \cpsspEndRes{-9.75}{7.0}{675}
-%</ColTPrediction0>
-%<*cpsspelements>
- \cpsspLabel{-0.0}{CPSSP}
- \cpsspStartRes{-0.0}{0.0}{1}
- \cpsspCoil{-0.0}{0.0}{0.5}
- \cpsspGap{-0.0}{0.5}{1.25}
- \cpsspCoil{-0.0}{1.25}{1.75}
- \cpsspBridge{-0.0}{1.75}{2.0}
- \cpsspCoil{-0.0}{2.0}{2.75}
- \cpsspSheet{-0.0}{2.75}{3.75}
- \cpsspCoil{-0.0}{3.75}{4.5}
- \cpsspThreeTenHelix{-0.0}{4.5}{5.5}
- \cpsspCoil{-0.0}{5.5}{6.25}
- \cpsspAlphaHelix{-0.0}{6.25}{7.25}
- \cpsspCoil{-0.0}{7.25}{8.0}
- \cpsspPiHelix{-0.0}{8.0}{9.0}
- \cpsspCoil{-0.0}{9.0}{9.75}
- \cpsspBend{-0.0}{9.75}{10.0}
- \cpsspCoil{-0.0}{10.0}{10.75}
- \cpsspTurn{-0.0}{10.75}{11.75}
- \cpsspCoil{-0.0}{11.75}{12.25}
- \cpsspEndRes{-0.0}{12.25}{49}
-%</cpsspelements>
-% \fi
-% \Finale
-\endinput \ No newline at end of file
diff --git a/macros/latex/contrib/cpssp/cpssp.ins b/macros/latex/contrib/cpssp/cpssp.ins
deleted file mode 100644
index f17e939eee..0000000000
--- a/macros/latex/contrib/cpssp/cpssp.ins
+++ /dev/null
@@ -1,82 +0,0 @@
-%% cpssp.ins
-%%
-%% Copyright (C) 2009 by Wolfgang Skala
-%%
-%% 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 `maintained'.
-%%
-%% The Current Maintainer of this work is Wolfgang Skala.
-%%
-%% This work consists of the files cpssp.dtx and cpssp.ins
-%% and the derived file cpssp.sty.
-
-\input docstrip.tex
-\keepsilent
-
-\usedir{tex/latex/cpssp}
-
-\declarepreamble\cpssppreamble
-
-Copyright (C) 2009 by Wolfgang Skala
-
-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.
-
-\endpreamble
-
-\generate{\usepreamble\cpssppreamble%
- \file{cpssp.sty}{\from{cpssp.dtx}{package}}%
-}
-
-\generate{\nopreamble\nopostamble
- \file{ColSequences.fasta}{\from{cpssp.dtx}{ColSequences}}%
- \file{ColStructures.fasta}{\from{cpssp.dtx}{ColStructures}}%
- \file{ColGPredictions.fasta}{\from{cpssp.dtx}{ColGPredictions}}%
- \file{ColTPrediction.fasta}{\from{cpssp.dtx}{ColTPrediction}}%
- \file{Collagenases0.tex}{\from{cpssp.dtx}{Collagenases0}}%
- \file{ColGPredictions1.tex}{\from{cpssp.dtx}{ColGPredictions1}}%
- \file{ColTPrediction0.tex}{\from{cpssp.dtx}{ColTPrediction0}}%
- \file{cpsspelements.tex}{\from{cpssp.dtx}{cpsspelements}}%
-}
-
-\obeyspaces
-\Msg{****************************************************}
-\Msg{*}
-\Msg{* To finish the installation you have to move the}
-\Msg{* following file into a directory searched by TeX}
-\Msg{*}
-\Msg{* cpssp.sty}
-\Msg{*}
-\Msg{* To produce the documentation execute the}
-\Msg{* following commands:}
-\Msg{*}
-\Msg{* pdflatex cpssp.dtx}
-\Msg{* makeindex -s gind.ist -o cpssp.ind cpssp.idx}
-\Msg{* makeindex -s gglo.ist -o cpssp.gls cpssp.glo}
-\Msg{* pdflatex cpssp.dtx}
-\Msg{*}
-\Msg{* Make sure that the following files are present}
-\Msg{* in the same directory as cpssp.dtx:}
-\Msg{*}
-\Msg{* Collagenases0.tex}
-\Msg{* ColGPredictions1.tex}
-\Msg{* ColTPrediction0.tex}
-\Msg{* cpsspelements.tex}
-\Msg{*}
-\Msg{* Happy TeXing!}
-\Msg{*}
-\Msg{****************************************************}
-
-\endbatchfile \ No newline at end of file
diff --git a/macros/latex/contrib/cpssp/cpssp.pdf b/macros/latex/contrib/cpssp/cpssp.pdf
deleted file mode 100644
index 8f70caeca0..0000000000
--- a/macros/latex/contrib/cpssp/cpssp.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/customenvs/doc/customenvs-doc-en.pdf b/macros/latex/contrib/customenvs/doc/customenvs-doc-en.pdf
index 34320ab758..adbd84e2f6 100644
--- a/macros/latex/contrib/customenvs/doc/customenvs-doc-en.pdf
+++ b/macros/latex/contrib/customenvs/doc/customenvs-doc-en.pdf
Binary files differ
diff --git a/macros/latex/contrib/customenvs/doc/customenvs-doc-en.tex b/macros/latex/contrib/customenvs/doc/customenvs-doc-en.tex
index 7335cdbb96..9d38bb03ee 100644
--- a/macros/latex/contrib/customenvs/doc/customenvs-doc-en.tex
+++ b/macros/latex/contrib/customenvs/doc/customenvs-doc-en.tex
@@ -34,8 +34,8 @@
\usepackage[margin=1.5cm]{geometry}
\setlength{\parindent}{0pt}
-\def\TPversion{0.1.5}
-\def\TPdate{17/05/2024}
+\def\TPversion{0.1.9}
+\def\TPdate{20/08/2024}
\usepackage{tcolorbox}
\sethlcolor{lightgray!25}
\NewDocumentCommand\MontreCode{ m }{%
@@ -111,6 +111,14 @@
\section{History}
+\verb|v0.1.9|~:~~~~Title banner
+
+\verb|v0.1.8|~:~~~~Score banner
+
+\verb|v0.1.7|~:~~~~Small patch for \textsf{Vignette} macro (see \texttt{[fr]} documentation)
+
+\verb|v0.1.6|~:~~~~Small patchs for \textsf{displayskip} + \textsf{pas-tableur} (see \texttt{[fr]} documentation)
+
\verb|v0.1.5|~:~~~~New macros for boxes with \textsf{tcolorbox} (see \texttt{[fr]} documentation)
\verb|v0.1.4|~:~~~~Create a SMS conversation
@@ -426,6 +434,60 @@ The last argument, mandatory and between \MontreCode{(...)} give the list of cat
\pagebreak
+\pagebreak
+
+\section{Score banner}
+
+\subsection{Global use}
+
+The idea is to insert a score banner, with customizations.
+
+\begin{codehigh}[language=latex/latex3,style/main=teal!25,style/code=teal!25]
+ScoreBanner[keys]{number}
+\end{codehigh}
+
+\begin{demohigh}[language=latex/latex3,style/main=teal!25,style/code=teal!25]
+%default output
+\ScoreBanner{}
+\end{demohigh}
+
+\subsection{The macro}
+
+Available \MontreCode{keys} are :
+
+\begin{itemize}
+ \item \MontreCode{Height} : height of the banner (without the legend) ; \MontreCode{1} by default
+ \item \MontreCode{Ratio} : ratio of boxes ; \MontreCode{0.6} by default
+ \item \MontreCode{Symbols} : labels ; \MontreCode{A,B,C,D,E} by default
+ \item \MontreCode{Legend} : legend (uppercase) ; \MontreCode{score} by default ;
+ \item \MontreCode{Font} : global font ; \MontreCode{\textbackslash bfseries\textbackslash sffamily} by default
+ \item \MontreCode{ShowLegend} : boolean for the legend ; \MontreCode{false} by default ;
+ \item \MontreCode{Colors} : colors for boxes ;
+
+ \hfill\MontreCode{colorNS1,colorNS2,colorNS3,colorNS4,colorNS5} by default ;
+ \item \MontreCode{ScaleSymbols} : scale H/V of labels ; \MontreCode{1.25,1.65} by default ;
+ \item \MontreCode{Colbg} : background color for select box ; \MontreCode{white} by default.
+\end{itemize}
+
+\smallskip
+
+If the list of colors doesn't fill all the boxes, \MontreCode{lightgray} color is used.
+
+\begin{demohigh}[language=latex/latex3,style/main=teal!25,style/code=teal!25]
+\ScoreBanner[Legend=Geometry,Height=2]{4}
+\end{demohigh}
+
+\begin{demohigh}[language=latex/latex3,style/main=teal!25,style/code=teal!25,style/demo=yellow!25]
+%bg of lower part is yellow!25
+\def\lstcouleurs{colorNS1,colorNS2,colorNS3,colorNS4,colorNS5,purple}
+\ScoreBanner%
+ [ScaleSymbols={1.33,2},Height=3.25,ShowLegend=false,Ratio=0.75,
+ Symbols={1,2,3,4,5,6},Colors=\lstcouleurs,
+ Colbg=yellow!25]{1}
+\end{demohigh}
+
+\pagebreak
+
\section{SMS conversation}
\subsection{Global use}
@@ -499,4 +561,77 @@ Regarding the bubble creation commands, \MontreCode{\textbackslash InSMS} and \M
\end{ChatSMS}
\end{demohigh}
+\pagebreak
+
+\section{Title banner}
+
+\subsection{Global usage}
+
+The idea is to propose a banner, made with \TikZ, to present for example a title.
+
+The global style is fixed, but few customizations are possible.
+
+\begin{codehigh}[language=latex/latex3,style/main=teal!25,style/code=teal!25]
+\tkzBannerTri[keys]{number}{title}
+\end{codehigh}
+
+\begin{demohigh}[language=latex/latex3,style/main=teal!25,style/code=teal!25]
+\tkzBannerTri{01}{Titre du document}
+\end{demohigh}
+
+Available \MontreCode{keys} are :
+
+\begin{itemize}
+ \item \MontreCode{height} (\MontreCode{2.5em} by default)
+ \item \MontreCode{width} (\MontreCode{\textbackslash linewidth} by default)
+ \item \MontreCode{blockwidth} (\MontreCode{2.75em} by default, but can be set to \MontreCode{auto})
+ \item \MontreCode{coltxt} (\MontreCode{white} by default)
+ \item \MontreCode{fonttxt}
+ \item \MontreCode{swap} (\MontreCode{false} by default, for an other style )
+ \item \MontreCode{maincolor} (\MontreCode{darkgray} by default)
+ \item \MontreCode{collight} (\MontreCode{darkgray!25} by default)
+ \item \MontreCode{colmedium} (\MontreCode{darkgray!50} by default)
+ \item \MontreCode{coldark} (\MontreCode{darkgray} by default)
+ \item \MontreCode{logo}
+ \item \MontreCode{type}
+ \item \MontreCode{dispblock} (\MontreCode{true} by default)
+ \item \MontreCode{num} (\MontreCode{true} by default)
+ \item \MontreCode{customtype}
+\end{itemize}
+
+\subsection{Examples}
+
+\begin{demohigh}[language=latex/latex3,style/main=teal!25,style/code=teal!25]
+\tkzBannerTri
+ [maincolor=red,type=EXERCISES,blockwidth=auto,logo=\faAddressBook]
+ {7}{My doc}
+\end{demohigh}
+
+\begin{demohigh}[language=latex/latex3,style/main=teal!25,style/code=teal!25]
+\tkzBannerTri
+ [maincolor=red,type=EXERCISES,blockwidth=5em,logo=\faAddressBook]
+ {7}{My doc}
+\end{demohigh}
+
+\begin{demohigh}[language=latex/latex3,style/main=teal!25,style/code=teal!25]
+\tkzBannerTri
+ [maincolor=red,type=EXERCISES,blockwidth=auto,logo=\faAddressBook,swap]
+ {07}{My doc}
+\end{demohigh}
+
+\begin{demohigh}[language=latex/latex3,style/main=teal!25,style/code=teal!25]
+\tkzBannerTri
+ [dispblock=false,maincolor=teal,logo=\faSchool]
+ {}{My doc}
+\end{demohigh}
+
+\begin{demohigh}[language=latex/latex3,style/main=teal!25,style/code=teal!25]
+\tkzBannerTri
+ [maincolor=olive,customtype=TP,blockwidth=4em,logo=\faAddressBook,height=4em]
+ {7}{My doc}
+\end{demohigh}
+
+It's possible to redefine \MontreCode{\textbackslash part} (for example).
+
+
\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/customenvs/doc/customenvs-doc-fr.pdf b/macros/latex/contrib/customenvs/doc/customenvs-doc-fr.pdf
index 9007eb82b0..5f86baf5c9 100644
--- a/macros/latex/contrib/customenvs/doc/customenvs-doc-fr.pdf
+++ b/macros/latex/contrib/customenvs/doc/customenvs-doc-fr.pdf
Binary files differ
diff --git a/macros/latex/contrib/customenvs/doc/customenvs-doc-fr.tex b/macros/latex/contrib/customenvs/doc/customenvs-doc-fr.tex
index f76efcea01..1d9576f944 100644
--- a/macros/latex/contrib/customenvs/doc/customenvs-doc-fr.tex
+++ b/macros/latex/contrib/customenvs/doc/customenvs-doc-fr.tex
@@ -13,7 +13,7 @@
\RequirePackage[scaled=0.925]{cabin} % sf
%\usepackage{DejaVuSerif}
%\usepackage[scale=1.1]{inconsolata}
-\usepackage{customenvs}
+\usepackage[pastableur]{customenvs}
\usepackage{tabularx}
\usepackage{soul}
%\usepackage{codehigh}
@@ -39,8 +39,8 @@
\usepackage[margin=1.5cm]{geometry}
\setlength{\parindent}{0pt}
-\def\TPversion{0.1.5}
-\def\TPdate{17 mai 2024}
+\def\TPversion{0.1.9}
+\def\TPdate{20 août 2024}
\usepackage{tcolorbox}
\tcbuselibrary{listingsutf8}
\newtcblisting{DemoCode}[1]{%
@@ -62,14 +62,14 @@
keywordstyle={\color{blue}},%
classoffset=1,%
alsoletter={-},%
- morekeywords={center,justify,\LstDeuxNiv,\LstTroisNiv,\LstQuatreNiv,\NoticeDeuxNiv,\NoticeTroisNiv,\NoticeQuatreNiv,\DeuxNivBatterie,\TroisNivBatterie,\QuatreNivBatterie,\DeuxNivSmiley,\TroisNivSmiley,\QuatreNivSmiley,\vcenterfa,\faIcon},%
+ morekeywords={center,justify,\LstDeuxNiv,\LstTroisNiv,\LstQuatreNiv,\NoticeDeuxNiv,\NoticeTroisNiv,\NoticeQuatreNiv,\DeuxNivBatterie,\TroisNivBatterie,\QuatreNivBatterie,\DeuxNivSmiley,\TroisNivSmiley,\QuatreNivSmiley,\vcenterfa,\faIcon,part,RenewDocumentCommand,IfBooleanTF},%
keywordstyle={\color{violet}},%
classoffset=2,%
alsoletter={-},%
- morekeywords={\ReponsesQCM,MultiCols,\CreerListeItems,\ListeChoixItems,\TableauCompetences,\CrayonDeCompetences,\StyleEnvtExo,\StyleEnvtExoDefaut,\TitreExo,\ipsum,EnvSMS,\SMSrec,\SMSenv,BoiteSimple,\SujetTitreExo,\CircledNumber,\AffVignette,\BoiteArrondie},%
+ morekeywords={\ReponsesQCM,MultiCols,\CreerListeItems,\ListeChoixItems,\TableauCompetences,\CrayonDeCompetences,\StyleEnvtExo,\StyleEnvtExoDefaut,\TitreExo,\ipsum,EnvSMS,\SMSrec,\SMSenv,BoiteSimple,\SujetTitreExo,\CircledNumber,\AffVignette,\BoiteArrondie,\ChangerDisplaySkip,\celcouleur,\celfusion,\lignetxt,\colonnetxt,\celnumbreak,\celtxt,\BandeauScore,\InsererImage,\tkzBannerTri},%
keywordstyle={\color{green!50!black}},%
classoffset=3,%
- morekeywords={Largeur,Filets,EspacesCL,NbCols,Labels,PoliceLabels,EspaceLabels,Swap,Type,CoeffEspVert,EpTrait,Alea,LargeurNivs,Niveaux,NoticeNiveaux,Titre,PolTitre,PolNotice,PolComp,LigneSep,CouleurNotice,CouleurNiveaux,CouleurFond,Note,Notice,PoliceCateg,PoliceBloc,Couleurs,LargeurBloc,Echelle,NoirBlanc,Libelle,EpTrait,Police,Type,ComplementTitre,Titre,CodeDebut,Couleur,EchelleImage,Decoration,Trait,Avatar,AffAvatar,NoirBlanc,CouleurE,CouleurR,CouleurFond,Hauteur,Largeur,PoliceTxt,CouleurTitre,AlignH,bg,txt,bthick,bcol,raise,Type,EspH,Fond,Texte,Style},%
+ morekeywords={Largeur,Filets,EspacesCL,NbCols,Labels,PoliceLabels,EspaceLabels,Swap,Type,CoeffEspVert,EpTrait,Alea,LargeurNivs,Niveaux,NoticeNiveaux,Titre,PolTitre,PolNotice,PolComp,LigneSep,CouleurNotice,CouleurNiveaux,CouleurFond,Note,Notice,PoliceCateg,PoliceBloc,Couleurs,LargeurBloc,Echelle,NoirBlanc,Libelle,EpTrait,Police,Type,ComplementTitre,Titre,CodeDebut,Couleur,EchelleImage,Decoration,Trait,Avatar,AffAvatar,NoirBlanc,CouleurE,CouleurR,CouleurFond,Hauteur,Largeur,PoliceTxt,CouleurTitre,AlignH,bg,txt,bthick,bcol,raise,Type,EspH,Fond,Texte,Style,Dense,Avant,AvantS,Apres,ApresS,Global,align,width,Legende,CouleurFond,Hauteur,Ratio,AffLegende,Couleurs,EchelleSymboles,Symboles,vRemplir,vOffset,vCentrer,height,width,blockwidth,collight,colmedium,coldar,coltxt,fonttxt,swap,maincolor,logo,type,num,dispblock,customtype},%
keywordstyle={\color{orange}}
},%
#1
@@ -149,6 +149,16 @@
\section{Historique}
+\verb|v0.1.9|~:~~~Bannière de titre + Insertion d'images en remplissage vertical
+
+\verb|v0.1.8|~:~~~Nutriscore
+
+\verb|v0.1.7|~:~~~~Possibilité de créer des vignettes \textsf{perso}
+
+\verb|v0.1.6|~:~~~~Patch \textsf{displayskip} + Patches \textsf{pas-tableur}
+
+\verb|v0.1.5|~:~~~~La librairie \texttt{babel} de \TikZ\ n'est plus chargée
+
\verb|v0.1.5|~:~~~~Vignettes + Numéros encerclés + Création de boîtes 'simples'
\verb|v0.1.4|~:~~~~Commande pour du texte dans une boîte arrondie, de hauteur 'figée' + 'Chat' SMS
@@ -203,7 +213,8 @@ Les packages chargés sont :
\item \MontreCode{multicol} ;
\item \MontreCode{tabularray} ;
\item \MontreCode{xcolor} ;
- \item \MontreCode{fontawesome5}.
+ \item \MontreCode{fontawesome5} ;
+ \item \MontreCode{tikz} avec les librairies \MontreCode{decorations.pathmorphing,positioning,shapes.misc,calc}.
\end{itemize}
À noter que, pour des raisons de compatibilité (ou d'incompatibilité), les packages \MontreCode{enumitem}/\MontreCode{multicol}/\MontreCode{tabularray}/\MontreCode{xcolor}/\MontreCode{fontawesome5} peuvent ne pas être chargés par \MontreCode{customenvs} (auxquels cas l'utilisateur devra les avoir chargés pour faire fonctionner certains environnements) via les options :
@@ -792,6 +803,64 @@ L'argument, obligatoire et entre \MontreCode{\{...\}} est la liste des catégori
\pagebreak
+\section{Bandeau de score}
+
+\subsection{Principe et fonctionnement}
+
+L'idée est de proposer une commande pour insérer un bandeau de score, type \textit{nutriscore}.
+
+\smallskip
+
+La majorité des éléments sont personnalisables.
+
+\begin{DemoCode}{listing only}
+\BandeauScore[clés]{numéro}
+\end{DemoCode}
+
+\begin{DemoCode}{}
+%sortie par défaut
+\BandeauScore{}
+\end{DemoCode}
+
+\subsection{La commande}
+
+Les \MontreCode{clés} disponibles, à donner entre \MontreCode{[...]}, sont :
+
+\begin{itemize}
+ \item \MontreCode{Hauteur} : hauteur du bandeau (sans la légende) ; \MontreCode{1} par défaut
+ \item \MontreCode{Ratio} : rapport V/H des cases ; \MontreCode{0.6} par défaut
+ \item \MontreCode{Symboles} : contenu des cases ; \MontreCode{A,B,C,D,E} par défaut
+ \item \MontreCode{Legende} : texte de la légende (qui sera en majuscule) ; \MontreCode{score} par défaut ;
+ \item \MontreCode{Police} : Police globale ; \MontreCode{\textbackslash bfseries\textbackslash sffamily} par défaut
+ \item \MontreCode{AffLegende} : booléen pour afficher la légende ; \MontreCode{false} par défaut ;
+ \item \MontreCode{Couleurs} : couleurs des cases ;
+
+ \hfill\MontreCode{couleurNS1,couleurNS2,couleurNS3,couleurNS4,couleurNS5} par défaut ;
+ \item \MontreCode{EchelleSymboles} : échelle(s) H/V des symboles ; \MontreCode{1.25,1.65} par défaut ;
+ \item \MontreCode{CouleurFond} : couleur du fond (pour la case choisie) ; \MontreCode{white} par défaut.
+\end{itemize}
+
+L'argument obligatoire correspond quant à lui au numéro de la case à mettre en valeur (\MontreCode{vide} par défaut).
+
+\smallskip
+
+Si la liste des couleurs ne permet pas de remplir toutes les cases, la couleur \MontreCode{lightgray} est utilisée.
+
+\begin{DemoCode}{}
+\BandeauScore[Legende=Géométrie,Hauteur=2]{4}
+\end{DemoCode}
+
+\begin{DemoCode}{colbacklower=yellow!25}
+%le fond de la boîte a été défini sur yellow!25
+\def\lstcouleurs{couleurNS1,couleurNS2,couleurNS3,couleurNS4,couleurNS5,purple}
+\BandeauScore%
+ [EchelleSymboles={1.33,2},Hauteur=2,AffLegende=false,
+ Symboles={1,2,3,4,5,6},Couleurs=\lstcouleurs,
+ CouleurFond=yellow!25]{1}
+\end{DemoCode}
+
+\pagebreak
+
\section{Fenêtre type conversation instantanée}
\subsection{Principe et fonctionnement}
@@ -1216,6 +1285,12 @@ En ligne \CircledNumber{1} avec texte après.
\end{DemoCode}
\begin{DemoCode}{}
+%vignette type tableur
+\AffVignette[Type=perso/CRYPT,Couleur=blue!50!teal,Echelle=0.5]
+ {vignette personnalisée}
+\end{DemoCode}
+
+\begin{DemoCode}{}
%création d'une macro personnelle
\NewDocumentCommand\VignetteTableur{ m }{%
\AffVignette*[Type=sheet,Couleur=green!50!black,Police=\footnotesize\sffamily]
@@ -1235,4 +1310,200 @@ On se place dans la plage \VignetteTableur{A3:B5} pour...
On lance le logiciel \BoiteArrondie[Fond=cyan!33,Texte=violet,EspH=2mm,Style=rect]{situé sur le bureau} en cliquant \BoiteArrondie[Fond=lightgray!25,Texte=darkgray]{droit}.
\end{DemoCode}
+\subsection{Bannière de titre}
+
+L'idée est de proposer une bannière, réalisée en \TikZ, pour présenter par exemple un titre.
+
+Il sera ensuite possible de redéfinir un sectionnement du document (\MontreCode{part/section/subsection/...}).
+
+Le style global est fixé, mais des éléments de personnalisations sont possibles (des calculs en interne sont effectués pour adapter la taille des textes).
+
+\begin{DemoCode}{listing only}
+\tkzBannerTri[clés]{numéro}{titre}
+\end{DemoCode}
+
+\begin{DemoCode}{}
+\tkzBannerTri{01}{Titre du document}
+\end{DemoCode}
+
+Les principales \MontreCode{clés} (anglicisées) sont :
+
+\begin{itemize}
+ \item \MontreCode{height} : hauteur de la bannière (\MontreCode{2.5em} par défaut)
+ \item \MontreCode{width} : largeur de la bannière (\MontreCode{\textbackslash linewidth} par défaut)
+ \item \MontreCode{blockwidth} : largeur du bloc gauche (\MontreCode{2.75em} par défaut, mais si \MontreCode{auto}, la largeur s'adaptera à son contenu)
+ \item \MontreCode{coltxt} : couleur des textes (\MontreCode{white} par défaut)
+ \item \MontreCode{fonttxt} : police globale des textes (\MontreCode{white} par défaut)
+ \item \MontreCode{swap} : booléen pour changer le style de la partie droite (\MontreCode{false} par défaut)
+ \item \MontreCode{maincolor} : couleur principale, les dégradés étant calculés automatiquement (\MontreCode{darkgray} par défaut)
+ \item \MontreCode{collight} : couleur la plus claire (\MontreCode{darkgray!25} par défaut)
+ \item \MontreCode{colmedium} : couleur du milieu (\MontreCode{darkgray!50} par défaut)
+ \item \MontreCode{coldark} : couleur la plus foncée (\MontreCode{darkgray} par défaut)
+ \item \MontreCode{logo} : logo éventuel, placé tout à droite
+ \item \MontreCode{type} : type éventuel du document, qui est dans le bloc gauche
+ \item \MontreCode{dispblock} : booléen pour afficher le bloc de gauche (actif par défaut)
+ \item \MontreCode{num} : booléen pour afficher le numéro (actif par défaut)
+ \item \MontreCode{customtype} : texte personnalisé éventuel du bloc gauche
+\end{itemize}
+
+\begin{DemoCode}{}
+\tkzBannerTri
+ [maincolor=red,type=EXERCICES,blockwidth=auto,logo=\faAddressBook]
+ {7}{Mon document}
+\end{DemoCode}
+
+\begin{DemoCode}{}
+\tkzBannerTri
+ [maincolor=red,type=EXERCICES,blockwidth=5em,logo=\faAddressBook]
+ {7}{Mon document}
+\end{DemoCode}
+
+\begin{DemoCode}{}
+\tkzBannerTri[%
+ maincolor=red,type=EXERCICES,blockwidth=auto,logo=\faAddressBook,swap]
+ {07}{Mon document}
+\end{DemoCode}
+
+\begin{DemoCode}{}
+\tkzBannerTri
+ [dispblock=false,maincolor=teal,logo=\faSchool]
+ {}{Mon document}
+\end{DemoCode}
+
+\begin{DemoCode}{}
+\tkzBannerTri
+ [maincolor=olive,customtype=TP,blockwidth=4em,logo=\faAddressBook,height=4em]
+ {7}{Mon document}
+\end{DemoCode}
+
+Il est de ce fait \textit{normalement} possible (à vérifier quand même\ldots) de modifier le comportement de la commande \MontreCode{\textbackslash part}, dans l'optique de l'utilisation avec une table des matières notamment.
+
+\begin{DemoCode}{}
+%redéfinition de \part avec gestion de la version étoilée
+\RenewDocumentCommand\part{ s m D<>{} }{%
+ \addtocounter{part}{1}%
+ \IfBooleanTF{#1}%
+ {%
+ \tkzBannerTri[#3,num=false]{\thepart}{#2}%
+ }%
+ {%
+ \tkzBannerTri[#3]{\thepart}{#2}%
+ %\addcontentsline{toc}{part}{#2}%éventuellement
+ }%
+}
+%modification de la numérotation, avec forçage du 0
+\renewcommand\thepart{\ifnum\value{part}<10\relax0\fi\arabic{part}}
+
+\part{Éléments de logique}<type=TP,logo=\faAirbnb>
+\end{DemoCode}
+
+\pagebreak
+
+\section{Patchs divers}
+
+\subsection{Gérer l'espacement vertical du mode hors-ligne}
+
+L'idée est de proposer une commande, à insérer dans le préambule, pour \textit{patcher} l'espacement vertical proposé par les environnements mathématiques hors-ligne.
+
+\begin{DemoCode}{listing only}
+...
+\ChangerDisplaySkip[clés]
+...
+\begin{document}
+\end{DemoCode}
+
+Les \MontreCode{clés} disponibles, à donner entre \MontreCode{[...]}, sont :
+
+\begin{itemize}
+ \item \MontreCode{Avant=...} : modification de l'espacement avant ;
+ \item \MontreCode{AvantS=...} : modification de l'espacement avant (version \textit{short}) ;
+ \item \MontreCode{Apres=...} : modification de l'espacement après ;
+ \item \MontreCode{ApresS=...} : modification de l'espacement après (version \textit{short}) ;
+ \item \MontreCode{Global=...} : modification globale de \textbf{tous} les espacements ;
+ \item \MontreCode{Dense} : booléen pour modification globale en \MontreCode{0.33\textbackslash baselineskip}.
+\end{itemize}
+
+\subsection{Quelques ajouts au package pas-tableur}
+
+L'idée est de proposer quelques commandes complémentaires pour le package \textsf{pas-tableur}, de Stéphane Pasquet (\url{https://ctan.org/pkg/pas-tableur}), en respectant autant que faire se peut la syntaxe du package (voir la documentation pour de plus amples informations).
+
+\smallskip
+
+Le package \textsf{pas-tableur} n'est pas chargé par défaut, mais il peut l'être grâce à l'option \MontreCode{[pastableur]}.
+
+\smallskip
+
+Les \textit{ajouts} disponibles sont :
+
+\begin{itemize}
+ \item colorer/griser une case, via \MontreCode{\textbackslash celcouleur} ;
+ \item fusionner des celules, via \MontreCode{\textbackslash celfusion} ;
+ \item \textit{casser la numérotation} avec des pointillés, via \MontreCode{\textbackslash celnumbreak} ;
+ \item remplir (partiellement ou non) une ligne, via \MontreCode{\textbackslash lignetxt} ;
+ \item remplir (partiellement ou non) une colonne, via \MontreCode{\textbackslash colonnetxt}.
+\end{itemize}
+
+\begin{DemoCode}{listing only}
+%chargement du package
+\usepackage[pastableur]{customenvs}
+
+%griser une cellule
+\celcouleur[couleur]{col-lig}
+
+%fusionner des cellules
+\celfusion[options pas-tableur]{col-lig}{col-lig}{label}
+
+%pointillés dans la numérotation
+\celnumbreak{num ligne pointillés}{début numéro suite}{fin numéro suite}
+
+%remplir ligne
+\lignetxt(*)[options pas-tableur]{num ligne}<col début>{liste des cellules}
+
+%remplir colonne
+\colonnetxt(*)[options pas-tableur]{num colonne}<lgn début>{liste des cellules}
+\end{DemoCode}
+
+\pagebreak
+
+L'exemple suivant illustre les différentes commandes proposées dans ce package.
+
+\begin{DemoCode}{}
+\begin{tikzpicture}{}
+ \tableur*[10]{A/2.5cm,B/2.5cm,C/2.5cm,D/2.5cm,E/2.5cm,F/2.5cm}
+ %ligne n°1
+ \celtxt*[align=center]{A}{1}{$n$}
+ \celfusion[align=center]{B-1}{C-1}{$M_n$}
+ \celfusion[align=center]{D-1}{E-1}{$S_n$}
+ \celtxt*[align=center]{F}{1}{$d_n$}
+ % %Ligne2/3/4
+ \celcouleur{A-2}
+ \lignetxt*[align=center]{2}<2>{$x_n$,$y_n$,5,$n$,$n$} %à partir de la colonne n°2
+ \lignetxt*[align=center]{3}{0,0,0,5,0,5}
+ \lignetxt*[align=center]{4}{1,1,0,5,1,4.12310563}%
+ \celnumbreak{8}{27}{28}
+ %colonneA
+ \colonnetxt*[align=center]{A}<5>{2,3,4,\dots,24,25} %à partir de la ligne n°5
+\end{tikzpicture}
+\end{DemoCode}
+
+\subsection{Insertion d'images avec remplissage de l'espace vertical}
+
+L'idée est de proposer une commande pour adapter la hauteur d'une image à la hauteur restante en base de page.
+
+Cela repose en fait simplement sur l'utilisation de \MontreCode{[height=\textbackslash dimexpr\textbackslash pagegoal-\textbackslash pagetotal\textbackslash relax]}.
+
+\begin{DemoCode}{listing only}
+\InsererImage<vRemplir=true/false,vOffset=...,vCentrer=...>[clés includegraphics]<image>
+\end{DemoCode}
+
+La clé \MontreCode{vOffset} permet de spécifier une longueur à retirer au calcul automatique (par défaut elle est fixée à \MontreCode{0pt})..
+
+La clé \MontreCode{vCentrer} (parmi \MontreCode{m/h/b/n} permet de spécifier un type de centrage vertical, si besoin, parmi \MontreCode{milieu/haut/bas/non} (\MontreCode{n} par défaut).
+
+\begin{DemoCode}{listing only}
+\InsererImage<vRemplir,vOffset=5mm,vCentrer=m>{example-image}
+\end{DemoCode}
+
+\InsererImage<vRemplir,vOffset=5mm,vCentrer=m>{example-image}
+
\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/customenvs/tex/customenvs.sty b/macros/latex/contrib/customenvs/tex/customenvs.sty
index 797a4e65bc..535baa0f18 100644
--- a/macros/latex/contrib/customenvs/tex/customenvs.sty
+++ b/macros/latex/contrib/customenvs/tex/customenvs.sty
@@ -3,10 +3,14 @@
% source pencil...: CC-BY-SA 4.0 https://tex.stackexchange.com/questions/504092/replicating-a-fancy-bordered-text-style-in-latex/504145#504145
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{customenvs}[2024/05/17 0.1.5 Custom classic environments]
+\ProvidesPackage{customenvs}[2024/08/20 0.1.9 Custom classic environments]
%====HISTORIQUE
-% v 0.1.6 Boxes for exam title + circled numbers + Vignettes + Small simple boxes creation
+% v 0.1.9 tkzBanner + tkzBannerTri + includegraphicsfill
+% v 0.1.8 Nutriscore
+% v 0.1.7 Style perso pour les vignettes
+% v 0.1.6 DisplaySkip patch + Patchs pas-tableur
+% v 0.1.5 Boxes for exam title + circled numbers + Vignettes + Small simple boxes creation
% v 0.1.4 Commande (en/fr) pour du texte dans une boîte arrondie, de hauteur 'figée' + 'Chat' SMS
% v 0.1.3 Environnement/Commande pour présentation d'un exercice
% v 0.1.2 Crayon de compétences
@@ -29,6 +33,8 @@
\newif\if@fa\@fatrue%
\DeclareOption{nonfa}{\@fafalse}%
\DeclareOption{nofa}{\@fafalse}%
+\newif\if@pastableur\@pastableurfalse%
+\DeclareOption{pastableur}{\@pastableurtrue}%
\DeclareOption*{}
\ProcessOptions\relax
@@ -55,7 +61,8 @@
\RequirePackage{listofitems}
\RequirePackage{calc}
\RequirePackage{tikz}
-\usetikzlibrary{decorations.pathmorphing,positioning,shapes.misc,calc,babel}
+\usetikzlibrary{decorations.pathmorphing,positioning,shapes.misc,calc}
+\usetikzlibrary{babel}
\RequirePackage{tcolorbox}
\RequirePackage{varwidth}
\tcbuselibrary{skins}
@@ -1090,6 +1097,93 @@
title={\@ifpackageloaded{babel}{\NoAutoSpacing#2}{#2}\IfBooleanTF{#1}{}{$\cdot$\scalebox{0.6}[0.6]{\faCheckCircle[regular]\!\faCheckCircle[regular]}~}},left=1mm,right=1mm,boxsep=0mm]{#3}%
}
+%====Nutriscore
+\definecolor{couleurNS1}{RGB}{45,126,67}
+\definecolor{couleurNS2}{RGB}{151,186,56}
+\definecolor{couleurNS3}{RGB}{240,202,13}
+\definecolor{couleurNS4}{RGB}{213,123,26}
+\definecolor{couleurNS5}{RGB}{197,52,25}
+\tikzset{noeudNS/.style={pos=0.5,xscale=\echellexNS*\hauteurNS,yscale=\echelleyNS*\hauteurNS}}
+
+\defKV[NUTRISCORE]{%
+ Hauteur=\pgfmathsetmacro{\hauteurNS}{#1},%
+ Ratio=\pgfmathsetmacro{\ratiolargeurbandeNS}{#1},%
+ Symboles=\def\lettresNS{#1},%
+ Legende=\def\legendeNS{#1},%
+ Police=\def\fonteNS{#1},%
+ Couleurs=\def\couleursNS{#1},%
+ EchelleSymboles=\def\echellesymbNS{#1},%
+ CouleurFond=\def\coulbgNS{#1}
+}
+\setKVdefault[NUTRISCORE]{%
+ Hauteur=1,%
+ Ratio={0.6},%
+ Symboles={A,B,C,D,E},%
+ Legende={score},%
+ Police=\sffamily\bfseries,%
+ AffLegende=true,%
+ Couleurs={couleurNS1,couleurNS2,couleurNS3,couleurNS4,couleurNS5},%
+ EchelleSymboles={1.25,1.65},%
+ CouleurFond=white
+}
+
+\NewDocumentCommand\BandeauScore{ O{} D<>{} m }{%
+ \restoreKV[NUTRISCORE]%
+ \setKV[NUTRISCORE]{#1}%
+ \IfEq{#3}{}%
+ {%
+ \xdef\numcasNS{0}%
+ }%
+ {%
+ \xdef\numcasNS{#3}%
+ }%
+ \readlist\letterListNS{\lettresNS}%
+ \xdef\nbcasesNS{\letterListNSlen}%
+ \readlist\colorListNS{\couleursNS}%
+ \xdef\nbcouleursNS{\colorListNSlen}%
+ \pgfmathsetmacro{\largeurcaseNS}{\hauteurNS*\ratiolargeurbandeNS}%
+ \pgfmathsetmacro{\largeurbandeNS}{\largeurcaseNS*\nbcasesNS}%
+ \pgfmathsetmacro{\margeNS}{0.225*\largeurcaseNS/2.4}%
+ \IfSubStr{\echellesymbNS}{,}%
+ {%
+ \StrCut{\echellesymbNS}{,}{\echellexNS}{\echelleyNS}%
+ }%
+ {%
+ \xdef\echellexNS{\echellesymbNS}\xdef\echelleyNS{\echellesymbNS}%
+ }%
+ \begin{tikzpicture}[font=\fonteNS,#2]
+ %---test
+ \filldraw[white,rounded corners=\fpeval{5*\largeurcaseNS*\ratiolargeurbandeNS}mm,line width=\fpeval{1.5*\largeurcaseNS*\ratiolargeurbandeNS}mm,opacity=0] ({-\margeNS},{-\margeNS}) rectangle++ (\nbcasesNS*\largeurcaseNS+2*\margeNS,\hauteurNS+2*\margeNS) ;
+ %---testfin
+ \begin{scope}
+ \clip[rounded corners=\fpeval{5*\largeurcaseNS*\ratiolargeurbandeNS}mm] (0,0) rectangle (\largeurbandeNS,\hauteurNS);
+ \foreach \tmpiii in {1,...,\letterListNSlen}{%
+ \ifnum\tmpiii=\numcasNS
+ \else
+ \ifnum\tmpiii>\nbcouleursNS
+ \fill[draw=none,lightgray] ({(\tmpiii-1)*\largeurcaseNS},0) rectangle ++(\largeurcaseNS,\hauteurNS) node[noeudNS,white,opacity=0.66]{\letterListNS[\tmpiii]};
+ \else
+ \fill[draw=none,{\colorListNS[\tmpiii]}] ({(\tmpiii-1)*\largeurcaseNS},0) rectangle ++(\largeurcaseNS,\hauteurNS) node[noeudNS,white,opacity=0.66]{\letterListNS[\tmpiii]};
+ \fi
+ \fi
+ }%
+ \end{scope}
+ \xintifboolexpr{\numcasNS >=1 'and' \numcasNS <= \nbcasesNS }%
+ {%
+ \begin{scope}
+ %\clip (-\margeNS,-\margeNS) rectangle++ (\largeurbandeNS+2*\margeNS,\hauteurNS+2*\margeNS);
+ \draw[draw=\coulbgNS,rounded corners=\fpeval{7.25*\largeurcaseNS*\ratiolargeurbandeNS}mm,line width=\fpeval{1.5*\largeurcaseNS*\ratiolargeurbandeNS}mm,fill={\colorListNS[#3]}] ({(\numcasNS-1)*\largeurcaseNS-\margeNS},{-\margeNS}) rectangle++ (\largeurcaseNS+2*\margeNS,\hauteurNS+2*\margeNS) node[noeudNS,white]{\letterListNS[\numcasNS]};
+ \end{scope}
+ }%
+ {%
+ }%
+ %légende
+ \ifboolKV[NUTRISCORE]{AffLegende}%
+ {%
+ \node[above right=1pt,gray,scale=\fpeval{0.5*\hauteurNS},inner sep=1pt] at ({0.125*\margeNS},1.02*\hauteurNS) {\vphantom{QÉ}\MakeUppercase{\legendeNS}};
+ }{}%
+ \end{tikzpicture}%
+}
%%----COMMANDES EN
@@ -1690,8 +1784,8 @@
}
}
-\defKV[cevignette]{Type=\def\cevignettetype{#1},Couleur=\def\cevignettecolor{#1},Police=\def\cevignettefont{#1}}
-\setKVdefault[cevignette]{Type={},Couleur={darkgray},Police=\footnotesize}
+\defKV[cevignette]{Type=\def\cevignettetype{#1},Couleur=\def\cevignettecolor{#1},Police=\def\cevignettefont{#1},Echelle=\def\cevignettescaleperso{#1}}
+\setKVdefault[cevignette]{Type={},Couleur={darkgray},Police=\footnotesize,Echelle=0.55}
\NewDocumentCommand\AffVignette{ s O{} m }{%
\restoreKV[cevignette]%
@@ -1708,7 +1802,570 @@
{shell}{\tcbox[colframe=\cevignettecolor,fontupper={\cevignettefont\ttfamily},cevignetteshell]{\IfBooleanTF{#1}{\NoAutoSpacing}{}#3}}%
{tex}{\tcbox[colframe=\cevignettecolor,fontupper={\cevignettefont\ttfamily},cevignettelatex]{\IfBooleanTF{#1}{\NoAutoSpacing}{}#3}}%
{sheet}{\tcbox[colframe=\cevignettecolor,fontupper={\cevignettefont},cevignettetableur]{\IfBooleanTF{#1}{\NoAutoSpacing}{}#3}}%
- }\relax%
+ }%
+ \IfSubStr{\cevignettetype}{perso}%
+ {%
+ \StrBehind{\cevignettetype}{/}[\cevignettelabelperso]%
+ \tcbox[colframe=\cevignettecolor,fontupper={\cevignettefont},cevignettes,left=6pt,coltitle=white,colback=white,underlay={\begin{tcbclipinterior}\fill[fill=tcbcolframe!33]($(interior.south west)$) rectangle node[rotate=90,font=\tiny\sffamily,tcbcolframe!75!black]{\scalebox{\cevignettescaleperso}[0.75]{\textbf{\cevignettelabelperso}}} ($(interior.north west)+(5pt,0pt)$);\end{tcbclipinterior}}]{\IfBooleanTF{#1}{\NoAutoSpacing}{}#3}%
+ }%
+ {}%
+ \relax%
+}
+
+%====DisplaySkip [en]
+\defKV[DisplaySkip]{%
+ aboveds=\def\ceabovedisplayskip{#1},%
+ abovedsshort=\def\ceabovedisplayskipshort{#1},%
+ belowdds=\def\cebelowdisplayskip{#1},%
+ belowdsshort=\def\cebelowdisplayskipshort{#1},%
+ global=\def\globaldisplayskip{#1}
+}
+
+\setKVdefault[DisplaySkip]{%
+ aboveds={12pt plus 3pt minus 9pt},%
+ abovedsshort={0pt plus 3pt},%
+ belowdds={12pt plus 3pt minus 9pt},%
+ belowdsshort={7pt plus 3pt minus 4pt},%
+ global={},%
+ shrink=false
+}
+\NewDocumentCommand\ChangeSpacingDisplaySkip{ O{} }{%
+ \restoreKV[DisplaySkip]%
+ \setKV[DisplaySkip]{#1}%
+ \ifboolKV[DisplaySkip]{shrink}%
+ {%
+ \AtBeginDocument{%
+ \abovedisplayskip=0.33\baselineskip
+ \abovedisplayshortskip=0.33\baselineskip
+ \belowdisplayskip=0.33\baselineskip
+ \belowdisplayshortskip=0.33\baselineskip
+ }
+ }%
+ {%
+ \IfStrEq{\globaldisplayskip}{}%
+ {%
+ \AtBeginDocument{%
+ \abovedisplayskip=\ceabovedisplayskip
+ \abovedisplayshortskip=\ceabovedisplayskipshort
+ \belowdisplayskip=\cebelowdisplayskip
+ \belowdisplayshortskip=\cebelowdisplayskipshort
+ }
+ }%
+ {%
+ \AtBeginDocument{%
+ \abovedisplayskip=\globaldisplayskip
+ \abovedisplayshortskip=\globaldisplayskip
+ \belowdisplayskip=\globaldisplayskip
+ \belowdisplayshortskip=\globaldisplayskip
+ }
+ }%
+ }%
+}
+
+%====DisplaySkip [fr]
+\defKV[DisplaySkipFr]{%
+ Avant=\def\ceabovedisplayskip{#1},%
+ AvantS=\def\ceabovedisplayskipshort{#1},%
+ Apres=\def\cebelowdisplayskip{#1},%
+ ApresS=\def\cebelowdisplayskipshort{#1},%
+ Global=\def\globaldisplayskip{#1}
+}
+
+\setKVdefault[DisplaySkipFr]{%
+ Avant={12pt plus 3pt minus 9pt},%
+ AvantS={0pt plus 3pt},%
+ Apres={12pt plus 3pt minus 9pt},%
+ ApresS={7pt plus 3pt minus 4pt},%
+ Global={},%
+ Dense=false
+}
+\NewDocumentCommand\ChangerDisplaySkip{ O{} }{%
+ \restoreKV[DisplaySkipFr]%
+ \setKV[DisplaySkipFr]{#1}%
+ \ifboolKV[DisplaySkipFr]{Dense}%
+ {%
+ \AtBeginDocument{%
+ \abovedisplayskip=0.33\baselineskip
+ \abovedisplayshortskip=0.33\baselineskip
+ \belowdisplayskip=0.33\baselineskip
+ \belowdisplayshortskip=0.33\baselineskip
+ }
+ }%
+ {%
+ \IfStrEq{\globaldisplayskip}{}%
+ {%
+ \AtBeginDocument{%
+ \abovedisplayskip=\ceabovedisplayskip
+ \abovedisplayshortskip=\ceabovedisplayskipshort
+ \belowdisplayskip=\cebelowdisplayskip
+ \belowdisplayshortskip=\cebelowdisplayskipshort
+ }
+ }%
+ {%
+ \AtBeginDocument{%
+ \abovedisplayskip=\globaldisplayskip
+ \abovedisplayshortskip=\globaldisplayskip
+ \belowdisplayskip=\globaldisplayskip
+ \belowdisplayshortskip=\globaldisplayskip
+ }
+ }%
+ }%
+}
+
+%====Patchs pas-tableur
+\if@pastableur
+
+\RequirePackage{pas-tableur}
+
+\renewcommand{\pastableur@grid}[4] % #1 : width, #2 : name, #3 : numline, #4 : coord.
+{%
+ \node[celempty,below,minimum height=\line@height,minimum width=#1] (cell#2-#3) at (#4) {};%
+ \draw[graySepCell] ($(cell#2-#3.south west)+(0.2pt,0)$) -- (cell#2-#3.south east) -- ($(cell#2-#3.north east)+(0,-0.2pt)$);%
+}
+
+\renewcommand{\pastab@draw@cell}[5]
+% #1 : \first@width, #2 : \first@name, #3 : 0=colonne1 / 1=autres colonnes /
+% 2 = ligne 1, #4 : coord., #5 : contenu
+{%
+ \ifnum#3=0%
+ \tikzstyle{cellstyle} = [celhead,minimum width={#1},minimum height=\line@height]%
+ \def\pastableur@coord{(0,0)}%
+ \else%
+ \ifnum#3=1%
+ \tikzstyle{cellstyle} = [celhead,right,minimum width={#1},minimum height=\line@height]%
+ \else
+ \ifnum#3=2%
+ \tikzstyle{cellstyle} = [below left,celhead,minimum width={#1},minimum height=\line@height]
+ \else%
+ \tikzstyle{cellstryle} = [below,celhead,minimum width={#1},minimum height=\line@height]
+ \fi%
+ \fi%
+ \def\pastableur@coord{(#4)}%
+ \fi%
+ \node[cellstyle] (#2) at \pastableur@coord {\helvbx#5};%
+ \fill[grayBottomCell] (#2.south west) rectangle (#2.north east) ;%
+ \fill[grayTopCell] (#2.north west) rectangle ($0.5*(#2.south east)+0.5*(#2.north east)$) ;%
+ \node[minimum width={#1},minimum height=\line@height,cellstyle] at \pastableur@coord {\helvbx#5};%
+}
+
+\NewDocumentCommand\celcouleur{ O{graySepCell!50} m }{%OK
+ \draw[draw=none,fill=#1] ($(cell#2.south west)+(0.2pt,0.2pt)$) rectangle ($(cell#2.north east) + (-0.2pt,-0.2pt)$) ;%
+}
+
+\defKV[celparam]{align=\def\pastableurfusalign{#1},width=\def\pastableurfuswidth{#1}}
+\setKVdefault[celparam]{align=left,width={\col@width}}
+
+\NewDocumentCommand\celfusion{ O{} m m m }{%OK
+ \restoreKV[celparam]%
+ \setKV[celparam]{#1}%
+ \IfStrEq{#4}{}%
+ {%
+ \draw[draw=none,fill=white] ($(cell#2.south west)+(0.2pt,0.2pt)$) rectangle ($(cell#3.north east) + (-0.2pt,-0.2pt)$);
+ }%
+ {%
+ \draw[draw=none,fill=white] ($(cell#2.south west)+(0.2pt,0.2pt)$) rectangle ($(cell#3.north east) + (-0.2pt,-0.2pt)$) node[midway,text width=\dimexpr\pastableurfuswidth-4pt,align=\pastableurfusalign] {#4};
+ }%
+}
+
+\NewDocumentCommand\celnumbreak{ m m m }{%
+ \def\numpointilles{#1}
+ \xdef\numavant{\inteval{\numpointilles-1}}%
+ \def\numdebut{#2}\def\numfin{#3}
+ \foreach \num@line [remember=\num@line as \lastnum (initially \numavant)] in {\numpointilles}
+ {%
+ \pastab@draw@cell{\numline@width}{numline\num@line}{3}{numline\lastnum.south east}{\dots}%
+ }%
+ \foreach \num@line [remember=\num@line as \lastnum (initially \numpointilles)] in {\numdebut,\numfin}
+ {%
+ \pastab@draw@cell{\numline@width}{numline\num@line}{3}{numline\lastnum.south east}{\num@line}%
+ }%
+}
+
+\NewDocumentCommand\lignetxt{ s O{} m D<>{1} m }{%3=num ligne,%5=liste
+ \IfBooleanTF{#1}%
+ {
+ \foreach \x [count=\i] in {#5}
+ {%
+ \xdef\j{\inteval{\i+(#4-1)}}%
+ \StrChar{ABCDEFGHIJKLMNOPQRSTUVWXYZ}{\j}[\iltr]%
+ \IfEq{\x}{}{}{\celtxt*[#2]{\iltr}{#3}{\x}}%
+ }%
+ }%
+ {%
+ \foreach \x [count=\i] in {#5}
+ {%
+ \xdef\j{\inteval{\i+(#4-1)}}%
+ \StrChar{ABCDEFGHIJKLMNOPQRSTUVWXYZ}{\j}[\iltr]%
+ \IfEq{\x}{}{}{\celtxt[#2]{\iltr}{#3}{\x}}%
+ }%
+ }%
+}
+
+\NewDocumentCommand\colonnetxt{ s O{} m D<>{1} m }{%3=lettre colonne,%5=liste
+ \IfBooleanTF{#1}%
+ {%
+ \foreach \x [count=\i] in {#5}
+ {%
+ \xdef\j{\inteval{\i+(#4-1)}}
+ \IfStrEq{\x}{}{}{\celtxt*[#2]{#3}{\j}{\x}}%
+ }%
+ }%
+ {%
+ \foreach \x [count=\i] in {#5}
+ {%
+ \xdef\j{\inteval{\i+(#4-1)}}
+ \IfStrEq{\x}{}{}{\celtxt[#2]{#3}{\j}{\x}}%
+ }%
+ }%
+}
+
+\fi
+
+%====BannerScore
+\definecolor{colorNS1}{RGB}{45,126,67}
+\definecolor{colorNS2}{RGB}{151,186,56}
+\definecolor{colorNS3}{RGB}{240,202,13}
+\definecolor{colorNS4}{RGB}{213,123,26}
+\definecolor{colorNS5}{RGB}{197,52,25}
+\tikzset{nodeNS/.style={pos=0.5,xscale=\echellexNS*\hauteurNS,yscale=\echelleyNS*\hauteurNS}}
+
+\defKV[NUTRISCOREEN]{%
+ Height=\pgfmathsetmacro{\hauteurNS}{#1},%
+ Ratio=\pgfmathsetmacro{\ratiolargeurbandeNS}{#1},%
+ Symbols=\def\lettresNS{#1},%
+ Legend=\def\legendeNS{#1},%
+ Font=\def\fonteNS{#1},%
+ Colors=\def\couleursNS{#1},%
+ ScaleSymbols=\def\echellesymbNS{#1},%
+ Colbg=\def\coulbgNS{#1}
+}
+\setKVdefault[NUTRISCOREEN]{%
+ Height=1,%
+ Ratio={0.6},%
+ Symbols={A,B,C,D,E},%
+ Legend={score},%
+ Font=\sffamily\bfseries,%
+ ShowLegend=true,%
+ Colors={colorNS1,colorNS2,colorNS3,colorNS4,colorNS5},%
+ ScaleSymbols={1.25,1.65},%
+ Colbg=white
+}
+
+\NewDocumentCommand\ScoreBanner{ O{} D<>{} m }{%
+ \restoreKV[NUTRISCOREEN]%
+ \setKV[NUTRISCOREEN]{#1}%
+ \IfEq{#3}{}%
+ {%
+ \xdef\numcasNS{0}%
+ }%
+ {%
+ \xdef\numcasNS{#3}%
+ }%
+ \readlist\letterListNS{\lettresNS}%
+ \xdef\nbcasesNS{\letterListNSlen}%
+ \readlist\colorListNS{\couleursNS}%
+ \xdef\nbcouleursNS{\colorListNSlen}%
+ \pgfmathsetmacro{\largeurcaseNS}{\hauteurNS*\ratiolargeurbandeNS}%
+ \pgfmathsetmacro{\largeurbandeNS}{\largeurcaseNS*\nbcasesNS}%
+ \pgfmathsetmacro{\margeNS}{0.225*\largeurcaseNS/2.4}%
+ \IfSubStr{\echellesymbNS}{,}%
+ {%
+ \StrCut{\echellesymbNS}{,}{\echellexNS}{\echelleyNS}%
+ }%
+ {%
+ \xdef\echellexNS{\echellesymbNS}\xdef\echelleyNS{\echellesymbNS}%
+ }%
+ \begin{tikzpicture}[font=\fonteNS,#2]
+ %---test
+ \filldraw[white,rounded corners=\fpeval{5*\largeurcaseNS*\ratiolargeurbandeNS}mm,line width=\fpeval{1.5*\largeurcaseNS*\ratiolargeurbandeNS}mm,opacity=0] ({-\margeNS},{-\margeNS}) rectangle++ (\nbcasesNS*\largeurcaseNS+2*\margeNS,\hauteurNS+2*\margeNS) ;
+ %---testfin
+ \begin{scope}
+ \clip[rounded corners=\fpeval{5*\largeurcaseNS*\ratiolargeurbandeNS}mm] (0,0) rectangle (\largeurbandeNS,\hauteurNS);
+ \foreach \iii in {1,...,\letterListNSlen}{%
+ \ifnum\iii=\numcasNS
+ \else
+ \ifnum\iii>\nbcouleursNS
+ \fill[draw=none,lightgray] ({(\iii-1)*\largeurcaseNS},0) rectangle ++(\largeurcaseNS,\hauteurNS) node[noeudNS,white,opacity=0.66]{\letterListNS[\iii]};
+ \else
+ \fill[draw=none,{\colorListNS[\iii]}] ({(\iii-1)*\largeurcaseNS},0) rectangle ++(\largeurcaseNS,\hauteurNS) node[noeudNS,white,opacity=0.66]{\letterListNS[\iii]};
+ \fi
+ \fi
+ }%
+ \end{scope}
+ \xintifboolexpr{\numcasNS >=1 'and' \numcasNS <= \nbcasesNS }%
+ {%
+ \begin{scope}
+ %\clip (-\margeNS,-\margeNS) rectangle++ (\largeurbandeNS+2*\margeNS,\hauteurNS+2*\margeNS);
+ \draw[draw=\coulbgNS,rounded corners=\fpeval{7.25*\largeurcaseNS*\ratiolargeurbandeNS}mm,line width=\fpeval{1.5*\largeurcaseNS*\ratiolargeurbandeNS}mm,fill={\colorListNS[#3]}] ({(\numcasNS-1)*\largeurcaseNS-\margeNS},{-\margeNS}) rectangle++ (\largeurcaseNS+2*\margeNS,\hauteurNS+2*\margeNS) node[noeudNS,white]{\letterListNS[#3]};
+ \end{scope}
+ }%
+ {}%
+ %légende
+ \ifboolKV[NUTRISCOREEN]{ShowLegend}%
+ {%
+ \node[above right=1pt,gray,scale=\fpeval{0.5*\hauteurNS},inner sep=1pt] at ({0.125*\margeNS},1.02*\hauteurNS) {\MakeUppercase{\legendeNS}};
+ }{}%
+ \end{tikzpicture}%
+}
+
+%====vincludegraphics [fr]
+\newlength{\tmp@includegraphics@vfill@offset}
+
+\defKV[vfillincludegphcs]{vOffset=\setlength\tmp@includegraphics@vfill@offset{#1},vCentrer=\def\tmpincludegpvcenter{#1}}
+\setKVdefault[vfillincludegphcs]{vRemplir=false,vOffset=0pt,vCentrer=n}
+
+\NewDocumentCommand\InsererImage{ D<>{} O{} m }{%
+ \restoreKV[vfillincludegphcs]%
+ \setKV[vfillincludegphcs]{#1}%
+ \ifboolKV[vfillincludegphcs]{vRemplir}%
+ {%
+ \IfStrEqCase{\tmpincludegpvcenter}{%
+ {m}{\vfill\includegraphics[height=\dimexpr\pagegoal-\pagetotal-\tmp@includegraphics@vfill@offset\relax,#2]{#3}\vfill}%
+ {h}{\includegraphics[height=\dimexpr\pagegoal-\pagetotal-\tmp@includegraphics@vfill@offset\relax,#2]{#3}\vfill}%
+ {b}{\vfill\includegraphics[height=\dimexpr\pagegoal-\pagetotal-\tmp@includegraphics@vfill@offset\relax,#2]{#3}}%
+ {n}{\includegraphics[height=\dimexpr\pagegoal-\pagetotal-\tmp@includegraphics@vfill@offset\relax,#2]{#3}}%
+ }[{\includegraphics[height=\dimexpr\pagegoal-\pagetotal-\tmp@includegraphics@vfill@offset\relax,#2]{#3}}]%
+ }%
+ {%
+ \includegraphics[#2]{#3}%
+ }%
+}
+
+%===tkzBanner mixte
+\defKV[tkzBannerKeys]{%
+ maincolor=\def\tkzBannermaincol{#1}
+}
+
+\setKVdefault[tkzBannerKeys]{%
+ height=2.1cm,%
+ width=\linewidth,%
+ collight=teal!25,%
+ colmedium=teal!75,%
+ coldark=teal,%
+ coltxt=white,%
+ fonttxt=\sffamily\bfseries,%
+ swap=false,%
+ maincolor={},%
+ num=true
+}
+
+\NewDocumentCommand\tkzBanner{ O{} m m }{%
+ \noindent%
+ \restoreKV[tkzBannerKeys]%
+ \setKV[tkzBannerKeys]{#1}%
+ \pgfmathsetmacro{\tkzBannerscale}{\useKV[tkzBannerKeys]{width}/\linewidth}%
+ \begin{tikzpicture}
+ \IfEq{\tkzBannermaincol}{}%
+ {%
+ \tikzset{tkzbannerdark/.style={\useKV[tkzBannerKeys]{coldark}}}
+ \tikzset{tkzbannermedium/.style={\useKV[tkzBannerKeys]{colmedium}}}
+ \tikzset{tkzbannerlight/.style={\useKV[tkzBannerKeys]{collight}}}
+ }%
+ {%
+ \tikzset{tkzbannerdark/.style={\tkzBannermaincol}}
+ \tikzset{tkzbannermedium/.style={\tkzBannermaincol!75}}
+ \tikzset{tkzbannerlight/.style={\tkzBannermaincol!25}}
+ }%
+ %coordinates
+ \coordinate (tkzBanner-NW) at (0,{\useKV[tkzBannerKeys]{height}}) ;
+ \coordinate (tkzBanner-SW) at (0,0) ;
+ \coordinate (tkzBanner-NE) at ({\useKV[tkzBannerKeys]{width}},{\useKV[tkzBannerKeys]{height}}) ;
+ \coordinate (tkzBanner-SE) at ({\useKV[tkzBannerKeys]{width}},0) ;%
+ %swap or note
+ \ifboolKV[tkzBannerKeys]{swap}%
+ {%
+ \coordinate (tkzBanner-A) at ($(tkzBanner-SE)!0.57!(tkzBanner-SW)$) ;
+ \coordinate (tkzBanner-B) at ($(tkzBanner-NE)!0.91!(tkzBanner-NW)$) ;
+ \coordinate (tkzBanner-C) at ($(tkzBanner-NE)!0.92!(tkzBanner-NW)$) ;
+ \coordinate (tkzBanner-D) at ($(tkzBanner-SE)!0.63!(tkzBanner-SW)$) ;
+ }%
+ {%
+ \coordinate (tkzBanner-A) at ($(tkzBanner-SW)!0.57!(tkzBanner-SE)$) ;
+ \coordinate (tkzBanner-B) at ($(tkzBanner-NW)!0.91!(tkzBanner-NE)$) ;
+ \coordinate (tkzBanner-C) at ($(tkzBanner-NW)!0.92!(tkzBanner-NE)$) ;
+ \coordinate (tkzBanner-D) at ($(tkzBanner-SW)!0.63!(tkzBanner-SE)$) ;
+ }%
+ %drawing
+ \fill[tkzbannerdark] (0,0) rectangle ({\useKV[tkzBannerKeys]{width}},{\useKV[tkzBannerKeys]{height}});
+ \ifboolKV[tkzBannerKeys]{swap}%
+ {%
+ \fill[tkzbannerlight] (tkzBanner-A) to[bend left=8] (tkzBanner-B) -- (tkzBanner-C) to[bend right=7] (tkzBanner-D) -- cycle ;
+ \fill[tkzbannermedium] (tkzBanner-C) to[bend right=7] (tkzBanner-D) -- (tkzBanner-SW) |- cycle ;
+ }%
+ {%
+ \fill[tkzbannerlight] (tkzBanner-A) to[bend right=8] (tkzBanner-B) -- (tkzBanner-C) to[bend left=7] (tkzBanner-D) -- cycle ;
+ \fill[tkzbannermedium] (tkzBanner-C) to[bend left=7] (tkzBanner-D) -- (tkzBanner-SE) |- cycle ;
+ }%
+ %nodes
+ \ifboolKV[tkzBannerKeys]{swap}%
+ {%
+ \node[inner sep=2pt,text={\useKV[tkzBannerKeys]{coltxt}},below left,font={\useKV[tkzBannerKeys]{fonttxt}},scale={2*\tkzBannerscale}] at (tkzBanner-NE) {\vphantom{qÉ}#2};
+ \ifboolKV[tkzBannerKeys]{num}%
+ {%
+ \node[inner sep=2pt,text={\useKV[tkzBannerKeys]{coltxt}},above right,font={\useKV[tkzBannerKeys]{fonttxt}},scale={1.25*\tkzBannerscale}] at (tkzBanner-SW) {\vphantom{qÉ}#3};
+ }%
+ {}%
+ }%
+ {%
+ \ifboolKV[tkzBannerKeys]{num}%
+ {%
+ \node[inner sep=2pt,text={\useKV[tkzBannerKeys]{coltxt}},above left,font={\useKV[tkzBannerKeys]{fonttxt}},scale={1.25*\tkzBannerscale}] at (tkzBanner-SE) {\vphantom{qÉ}#3};
+ }%
+ {}%
+ \node[inner sep=2pt,text={\useKV[tkzBannerKeys]{coltxt}},below right,font={\useKV[tkzBannerKeys]{fonttxt}},scale={2*\tkzBannerscale}] at (tkzBanner-NW) {\vphantom{qÉ}#2};
+ }%
+ \end{tikzpicture}%
}
+%====titre stylisé [fr], à voir avec part ??
+\newlength{\tmp@tkzbanner@autowidthtype}
+\setlength\tmp@tkzbanner@autowidthtype{2.5em}
+\newlength{\tmp@tkzbanner@autowidthnum}
+\setlength\tmp@tkzbanner@autowidthnum{2em}
+\newlength{\tmp@tkzbanner@marginoffsetbanner}
+\setlength\tmp@tkzbanner@marginoffsetbanner{2pt}
+\newlength{\tmp@tkzbanner@autowidth}
+\setlength\tmp@tkzbanner@autowidth{2.5em}
+
+\defKV[tkzBannerpartKeys]{%
+ maincolor=\def\tkzBannermaintricol{#1},%
+ logo=\def\tkzBannermaintrilogo{#1},%
+ type=\def\tkzBannermaintritype{#1},%
+ blockwidth=\def\tkzBannermaintriblockwidth{#1},%
+ customtype=\def\tkzBannermaintritypelibre{#1}
+}
+
+\setKVdefault[tkzBannerpartKeys]{%
+ height=2.5em,%
+ width=\linewidth,%
+ blockwidth=2.75em,%
+ collight=darkgray!25,%
+ colmedium=darkgray!50,%
+ coldark=darkgray,%
+ coltxt=white,%
+ fonttxt=\sffamily\bfseries,%
+ swap=false,%
+ maincolor={},%
+ logo={},%
+ type={},%
+ num=true,
+ dispblock=true,%
+ customtype={}
+}
+
+\NewDocumentCommand\tkzBannerTri{ O{} m m }{%
+ %#1 := clés
+ %#2 := numéro
+ %#3 := titre
+ \noindent%
+ \restoreKV[tkzBannerpartKeys]%
+ \setKV[tkzBannerpartKeys]{#1}%
+ \pgfmathsetmacro{\tkzBannertriscale}{0.75*\useKV[tkzBannerpartKeys]{height}/1.25cm}%
+ \pgfmathsetmacro{\scaletypedoctribanner}{1.05*0.75*\useKV[tkzBannerpartKeys]{height}/1.25cm}%
+ \pgfmathsetmacro{\scaletypedoctribannernum}{2.5*0.75*\useKV[tkzBannerpartKeys]{height}/1.25cm}%
+ \pgfmathsetmacro{\tkzBannertriangle}{0.10*\useKV[tkzBannerpartKeys]{height}/\useKV[tkzBannerpartKeys]{width}}%
+ \IfEq{\tkzBannermaintriblockwidth}{auto}%
+ {%
+ \settowidth{\tmp@tkzbanner@autowidthtype}{\scalebox{\scaletypedoctribanner}[\scaletypedoctribanner]{\sffamily\bfseries\vphantom{qÉ}\tkzBannermaintritype}}%
+ \addtolength{\tmp@tkzbanner@autowidthtype}{4pt}%
+ \settowidth{\tmp@tkzbanner@autowidthnum}{\scalebox{\scaletypedoctribannernum}[\scaletypedoctribannernum]{\sffamily\bfseries\vphantom{qÉ}00}}%
+ \addtolength{\tmp@tkzbanner@autowidthnum}{4pt}%
+ \pgfmathsetlength{\tmp@tkzbanner@autowidth}{max(\tmp@tkzbanner@autowidthtype,\tmp@tkzbanner@autowidthnum)}%
+ }%
+ {%
+ \setlength\tmp@tkzbanner@autowidth{\tkzBannermaintriblockwidth}%
+ }%
+ \begin{tikzpicture}
+ \IfEq{\tkzBannermaintricol}{}%
+ {%
+ \tikzset{tkzbannertridark/.style={\useKV[tkzBannerpartKeys]{coldark}}}
+ \tikzset{tkzbannertrimedium/.style={\useKV[tkzBannerpartKeys]{colmedium}}}
+ \tikzset{tkzbannertrilight/.style={\useKV[tkzBannerpartKeys]{collight}}}
+ }%
+ {%
+ \tikzset{tkzbannertridark/.style={\tkzBannermaintricol}}
+ \tikzset{tkzbannertrimedium/.style={\tkzBannermaintricol!50}}
+ \tikzset{tkzbannertrilight/.style={\tkzBannermaintricol!25}}
+ }%
+ %coordinates
+ \coordinate (tkzBannerTri-NW) at (0,{\useKV[tkzBannerpartKeys]{height}}) ;
+ \coordinate (tkzBannerTri-SW) at (0,0) ;
+ \coordinate (tkzBannerTri-NE) at ({\useKV[tkzBannerpartKeys]{width}},{\useKV[tkzBannerpartKeys]{height}}) ;
+ \coordinate (tkzBannerTri-SE) at ({\useKV[tkzBannerpartKeys]{width}},0) ;%
+ \coordinate (tkzBannerTri-SWd) at ($(tkzBannerTri-SW)!0.05!(tkzBannerTri-NW)$) ;%
+ \coordinate (tkzBannerTri-SEd) at ($(tkzBannerTri-SE)!0.15!(tkzBannerTri-NE)$) ;%
+ %drawing & shadow
+ \fill[lightgray!75] ([yshift=-1pt]tkzBannerTri-SWd) -- ([yshift=-1pt]tkzBannerTri-SEd) -- (tkzBannerTri-NE) -| cycle ;
+ \ifboolKV[tkzBannerpartKeys]{swap}%
+ {%
+ \fill[white] (tkzBannerTri-SWd) -- (tkzBannerTri-SEd) -- (tkzBannerTri-NE) -| cycle ;
+ \draw[line width=1pt,tkzbannertridark] ([shift={(0.5pt,-0.5pt)}]tkzBannerTri-NW) -| ([shift={(-0.5pt,0)}]tkzBannerTri-SEd) -- (tkzBannerTri-SWd) ;
+ }%
+ {%
+ \fill[tkzbannertrimedium] (tkzBannerTri-SWd) -- (tkzBannerTri-SEd) -- (tkzBannerTri-NE) -| cycle ;
+ }%
+ \ifboolKV[tkzBannerpartKeys]{dispblock}%
+ {%
+ \begin{scope}
+ \clip ($(tkzBannerTri-SW)!0.0375!(tkzBannerTri-NW)$) -- ($(tkzBannerTri-SE)!0.1375!(tkzBannerTri-NE)$) -- (tkzBannerTri-NE) -| cycle ;
+ %light
+ \fill[tkzbannertrilight] (tkzBannerTri-NW) --++ ({\tmp@tkzbanner@autowidth+2*\tmp@tkzbanner@marginoffsetbanner},0) -- ({\tmp@tkzbanner@autowidth+2*\tmp@tkzbanner@marginoffsetbanner+1em},{0.5*\useKV[tkzBannerpartKeys]{height}}) -- ({\tmp@tkzbanner@autowidth+2*\tmp@tkzbanner@marginoffsetbanner},0) -- (tkzBannerTri-SW) -- cycle ;
+ \end{scope}
+ \begin{scope}
+ \clip ($(tkzBannerTri-SW)!0.025!(tkzBannerTri-NW)$) -- ($(tkzBannerTri-SE)!0.125!(tkzBannerTri-NE)$) -- (tkzBannerTri-NE) -| cycle ;
+ %medium
+ \fill[tkzbannertrimedium] (tkzBannerTri-NW) --++ ({\tmp@tkzbanner@autowidth+\tmp@tkzbanner@marginoffsetbanner},0) -- ({\tmp@tkzbanner@autowidth+\tmp@tkzbanner@marginoffsetbanner+1em},{0.5*\useKV[tkzBannerpartKeys]{height}}) -- ({\tmp@tkzbanner@autowidth+\tmp@tkzbanner@marginoffsetbanner},0) -- (tkzBannerTri-SW) -- cycle ;
+ \end{scope}
+ \begin{scope}
+ \clip ($(tkzBannerTri-SW)!0.0125!(tkzBannerTri-NW)$) -- ($(tkzBannerTri-SE)!0.1125!(tkzBannerTri-NE)$) -- (tkzBannerTri-NE) -| cycle ;
+ %dark
+ \fill[tkzbannertridark] (tkzBannerTri-NW) --++ ({\tmp@tkzbanner@autowidth},0) -- ({\tmp@tkzbanner@autowidth+1em},{0.5*\useKV[tkzBannerpartKeys]{height}}) -- ({\tmp@tkzbanner@autowidth},0) -- (tkzBannerTri-SW) -- cycle ;
+ \IfEq{\tkzBannermaintritypelibre}{}%
+ {%
+ \ifboolKV[tkzBannerpartKeys]{num}%
+ {%
+ \IfEq{\tkzBannermaintritype}{}%
+ {%
+ \node[inner sep=2pt,text={\useKV[tkzBannerpartKeys]{coltxt}},font={\useKV[tkzBannerpartKeys]{fonttxt}},scale={2.5*\tkzBannertriscale},rotate={atan(\tkzBannertriangle)}] at ({0.5*\tmp@tkzbanner@autowidth},{0.5*\useKV[tkzBannerpartKeys]{height}}) {\vphantom{qÉ}#2};
+ }%
+ {%
+ \node[inner sep=2pt,below=1pt,text={\useKV[tkzBannerpartKeys]{coltxt}},font={\useKV[tkzBannerpartKeys]{fonttxt}},scale={1.05*\tkzBannertriscale},rotate={atan(\tkzBannertriangle)}] at ({0.5*\tmp@tkzbanner@autowidth},{\useKV[tkzBannerpartKeys]{height}}) {\vphantom{qÉ}\tkzBannermaintritype};
+ \node[inner sep=2pt,text={\useKV[tkzBannerpartKeys]{coltxt}},font={\useKV[tkzBannerpartKeys]{fonttxt}},scale={2.5*\tkzBannertriscale},rotate={atan(\tkzBannertriangle)}] at ({0.5*\tmp@tkzbanner@autowidth},{0.425*\useKV[tkzBannerpartKeys]{height}}) {\vphantom{qÉ}#2};
+ }%
+ }%
+ {}%
+ }%
+ {%
+ \node[inner sep=2pt,text={\useKV[tkzBannerpartKeys]{coltxt}},font={\useKV[tkzBannerpartKeys]{fonttxt}},scale={2.5*\tkzBannertriscale},rotate={atan(\tkzBannertriangle)}] at ({0.5*\tmp@tkzbanner@autowidth},{0.5*\useKV[tkzBannerpartKeys]{height}}) {\vphantom{qÉ}\tkzBannermaintritypelibre};
+ }%
+ \end{scope}
+ }%
+ {}%
+ %nodes
+ \begin{scope}
+ \clip (tkzBannerTri-SWd) -- (tkzBannerTri-SEd) -- (tkzBannerTri-NE) -| cycle ;
+ \ifboolKV[tkzBannerpartKeys]{swap}%
+ {%
+ \node[inner sep=2pt,right,text=\tkzBannermaintricol,font={\useKV[tkzBannerpartKeys]{fonttxt}},scale={2.75*\tkzBannertriscale},rotate={atan(\tkzBannertriangle)}] at ({\tmp@tkzbanner@autowidth+2*\tmp@tkzbanner@marginoffsetbanner+1.25em},{0.5*\useKV[tkzBannerpartKeys]{height}}) {\vphantom{qÉ}#3};
+ %logo
+ \IfEq{\tkzBannermaintrilogo}{}%
+ {}%
+ {%
+ \node[inner sep=2pt,left,text=\tkzBannermaintricol,font={\useKV[tkzBannerpartKeys]{fonttxt}},scale={2.5*\tkzBannertriscale},rotate={atan(\tkzBannertriangle)}] at ({\useKV[tkzBannerpartKeys]{width}},{0.55*\useKV[tkzBannerpartKeys]{height}}) {\vphantom{qÉ}\tkzBannermaintrilogo};
+ }%
+ }%
+ {%
+ \node[inner sep=2pt,right,text={\useKV[tkzBannerpartKeys]{coltxt}},font={\useKV[tkzBannerpartKeys]{fonttxt}},scale={2.75*\tkzBannertriscale},rotate={atan(\tkzBannertriangle)}] at ({\tmp@tkzbanner@autowidth+2*\tmp@tkzbanner@marginoffsetbanner+1.25em},{0.5*\useKV[tkzBannerpartKeys]{height}}) {\vphantom{qÉ}#3};
+ %logo
+ \IfEq{\tkzBannermaintrilogo}{}%
+ {}%
+ {%
+ \node[inner sep=2pt,left,text={\useKV[tkzBannerpartKeys]{coltxt}},font={\useKV[tkzBannerpartKeys]{fonttxt}},scale={2.5*\tkzBannertriscale},rotate={atan(\tkzBannertriangle)}] at ({\useKV[tkzBannerpartKeys]{width}},{0.55*\useKV[tkzBannerpartKeys]{height}}) {\vphantom{qÉ}\tkzBannermaintrilogo};
+ }%
+ }%
+ \end{scope}
+ \end{tikzpicture}%
+}
+
+
\endinput \ No newline at end of file
diff --git a/macros/latex/contrib/dashrulex/README.md b/macros/latex/contrib/dashrulex/README.md
index c0e441ac99..3e81605ffc 100644
--- a/macros/latex/contrib/dashrulex/README.md
+++ b/macros/latex/contrib/dashrulex/README.md
@@ -1,7 +1,15 @@
-# The dashrulex package
+# The `dashrulex` package
+Draw dashed rules (v1.01a)
+## Abstract
The `dashrulex` package provides a flexible solution for drawing dashed rules in the body, and currently provides two commands `\hdashrule` and `\hanyrule`. It's written in LaTeX3 and can be used as an alternative to the `dashrule` package.
## License
+This work may be distributed and/or modified under the conditions of the CC-BY 4.0 License. The latest version of this license is in https://creativecommons.org/licenses/by/4.0/legalcode
-This work may be distributed and/or modified under the conditions of the CC-BY 4.0 License. The latest version of this license is in https://creativecommons.org/licenses/by/4.0/legalcode \ No newline at end of file
+## Website
+| [Gitee](https://gitee.com/texno3/dashrulex) | [Github](https://github.com/texno3/dashrulex) | [CTAN](https://ctan.org/pkg/dashrulex) |
+
+## Maintainer
+Qu Yi<br/>
+Email: toquyi@163.com \ No newline at end of file
diff --git a/macros/latex/contrib/dashrulex/dashrulex.pdf b/macros/latex/contrib/dashrulex/dashrulex.pdf
index 376eb91c90..f97a5ef302 100644
--- a/macros/latex/contrib/dashrulex/dashrulex.pdf
+++ b/macros/latex/contrib/dashrulex/dashrulex.pdf
Binary files differ
diff --git a/macros/latex/contrib/dashrulex/dashrulex.sty b/macros/latex/contrib/dashrulex/dashrulex.sty
index 86d43d1478..090cfe2931 100644
--- a/macros/latex/contrib/dashrulex/dashrulex.sty
+++ b/macros/latex/contrib/dashrulex/dashrulex.sty
@@ -1,91 +1,91 @@
-%
-% ***************** THE DASHRULEX PACKAGE *****************
-%
-% Copyright (C) 2024 by Qu Yi <toquyi@163.com>
-%
-% This work may be distributed and/or modified under the
-% conditions of the CC-BY 4.0 License.
-% The latest version of this license is in
-% https://creativecommons.org/licenses/by/4.0/legalcode
-\NeedsTeXFormat{LaTeX2e}[2012/02/12]
-\RequirePackage{xparse}
-\ProvidesExplPackage{dashrulex}{2024/03/25}{1.00c}
- {Draw dashed rules}
-\DeclareDocumentCommand{\hdashrule}{O{0pt}O{x}mmm}
- {
- \tl_if_blank:nTF {#5}
- { \rule[#1]{#3}{#4} }
- {
- \mbox{}
- \use:c { #2leaders }
- \hbox:n
- {
- \clist_map_inline:nn {#5}
- { \drx@parse@dash{#1}{#4}{##1} }
- }
- \skip_horizontal:n {#3}
- \mbox{}
- }
- }
-\NewDocumentCommand{\drx@parse@dash}
- {mm>{\SplitArgument{1}{|}}m}
- {\drx@parse@dash@inner{#1}{#2}#3}
-\cs_set_protected:Npn \drx@parse@dash@inner #1#2#3#4
- {
- \IfNoValueTF{#4}
- {\vrulemod[#1]{#3}{#2}\skip_horizontal:n {#3}}
- {\vrulemod[#1]{#3}{#2}\skip_horizontal:n {#4}}
- }
-\NewDocumentCommand{\hanyrule}{O{x}mm}
- {
- \mbox{}
- \use:c { #1leaders }
- \hbox:n { \clist_map_inline:nn {#3} {##1} }
- \skip_horizontal:n {#2}
- \mbox{}
- }
-
-\int_new:N \l__drx_vrule_counter_int
-\int_set:Nn \l__drx_vrule_counter_int { 1 }
-\dim_new:N \l__drx_vrule_height_dim
-\tl_new:N \l__drx_tmpa_tl
-\cs_new_protected:Npn \drx@step@counter@height #1
- {
- \int_incr:N \l__drx_vrule_counter_int
- \dim_add:Nn \l__drx_vrule_height_dim {#1}
- }
-\NewDocumentCommand{\vrulemod}{O{0pt}oomm}
- {
- \group_begin:
- \IfValueT{#2}
- {
- \tl_set:Nn \l__drx_tmpa_tl { [#2] }
- \IfValueT{#3}{\tl_put_right:Nn \l__drx_tmpa_tl { [#3] }}
- }
- \exp_last_unbraced:Nnf
- \raisebox{#1}{\l__drx_tmpa_tl}
- {
- \clist_map_inline:nn {#5}
- {
- \int_compare:nNnTF { \l__drx_vrule_counter_int } > { 1 }
- {
- \int_if_even:nTF { \l__drx_vrule_counter_int }
- { \drx@step@counter@height{##1} }
- {
- \kern -#4
- \exp_args:NV
- \raisebox\l__drx_vrule_height_dim{\rule{#4}{##1}}
- \drx@step@counter@height{##1}
- }
- }
- {
- \rule{#4}{##1}
- \drx@step@counter@height{##1}
- }
- }
- }
- \group_end:
- }
-\endinput
-%
+%
+% ***************** THE DASHRULEX PACKAGE *****************
+%
+% Copyright (C) 2024 by Qu Yi <toquyi@163.com>
+%
+% This work may be distributed and/or modified under the
+% conditions of the CC-BY 4.0 License.
+% The latest version of this license is in
+% https://creativecommons.org/licenses/by/4.0/legalcode
+\NeedsTeXFormat{LaTeX2e}[2012/02/12]
+\RequirePackage{xparse}
+\ProvidesExplPackage{dashrulex}{2024/07/18}{1.01a}
+ {Draw dashed rules}
+\DeclareDocumentCommand{\hdashrule}{O{0pt}O{x}mmm}
+ {
+ \tl_if_blank:nTF {#5}
+ { \rule[#1]{#3}{#4} }
+ {
+ \mbox{}
+ \use:c { #2leaders }
+ \hbox:n
+ {
+ \clist_map_inline:nn {#5}
+ { \drx@parse@dash{#1}{#4}{##1} }
+ }
+ \skip_horizontal:n {#3}
+ \mbox{}
+ }
+ }
+\NewDocumentCommand{\drx@parse@dash}
+ {mm>{\SplitArgument{1}{|}}m}
+ {\drx@parse@dash@inner{#1}{#2}#3}
+\cs_set_protected:Npn \drx@parse@dash@inner #1#2#3#4
+ {
+ \IfNoValueTF{#4}
+ {\vrulemod[#1]{#3}{#2}\skip_horizontal:n {#3}}
+ {\vrulemod[#1]{#3}{#2}\skip_horizontal:n {#4}}
+ }
+\NewDocumentCommand{\hanyrule}{O{x}mm}
+ {
+ \mbox{}
+ \use:c { #1leaders }
+ \hbox:n { \clist_map_inline:nn {#3} {##1} }
+ \skip_horizontal:n {#2}
+ \mbox{}
+ }
+
+\int_new:N \l__drx_vrule_counter_int
+\int_set:Nn \l__drx_vrule_counter_int { 1 }
+\dim_new:N \l__drx_vrule_height_dim
+\tl_new:N \l__drx_tmpa_tl
+\cs_new_protected:Npn \drx@step@counter@height #1
+ {
+ \int_incr:N \l__drx_vrule_counter_int
+ \dim_add:Nn \l__drx_vrule_height_dim {#1}
+ }
+\NewDocumentCommand{\vrulemod}{O{0pt}oomm}
+ {
+ \group_begin:
+ \IfValueT{#2}
+ {
+ \tl_set:Nn \l__drx_tmpa_tl { [#2] }
+ \IfValueT{#3}{\tl_put_right:Nn \l__drx_tmpa_tl { [#3] }}
+ }
+ \exp_last_unbraced:Nnf
+ \raisebox{#1}{\l__drx_tmpa_tl}
+ {
+ \clist_map_inline:nn {#5}
+ {
+ \int_compare:nNnTF { \l__drx_vrule_counter_int } > { 1 }
+ {
+ \int_if_even:nTF { \l__drx_vrule_counter_int }
+ { \drx@step@counter@height{##1} }
+ {
+ \tex_kern:D -#4
+ \exp_args:NV
+ \raisebox\l__drx_vrule_height_dim{\rule{#4}{##1}}
+ \drx@step@counter@height{##1}
+ }
+ }
+ {
+ \rule{#4}{##1}
+ \drx@step@counter@height{##1}
+ }
+ }
+ }
+ \group_end:
+ }
+\endinput
+%
% End of file `dashrulex.sty'. \ No newline at end of file
diff --git a/macros/latex/contrib/dashrulex/dashrulex.tex b/macros/latex/contrib/dashrulex/dashrulex.tex
index c7db9dd89c..5469fc0c37 100644
--- a/macros/latex/contrib/dashrulex/dashrulex.tex
+++ b/macros/latex/contrib/dashrulex/dashrulex.tex
@@ -1,95 +1,99 @@
-\documentclass[load-preamble+]{cnltx-doc}
-
-\usepackage{setspace,hologo,dashrulex,tikz}
-\usepackage[noto]{newtxmath}
-\setcnltx
- {
- package = dashrulex,
- title = the dashrulex package,
- version = v1.00c,
- date = 2024/03/25,
- authors = Qu Yi,
- info = Draw dashed rules,
- email = toquyi@163.com,
- abstract =
- {
- The \pkg*{dashrulex} package provides a flexible solution for drawing dashed rules in the body, and currently provides two commands \cs{hdashrule} and \cs{hanyrule}. It's written in \hologo{LaTeX3} and can be used as an alternative to the \pkg*{dashrule} package.
- },
- color-scheme = blue,
- title-format = \huge\bfseries\scshape,
- listings-options = {numbers = none,gobble = 2,lineskip = 1pt},
- pre-output = {\parindent = 0em\setstretch{1.3}},
- before-skip = \smallskipamount,
- after-skip = \smallskipamount
- }
-\makeatletter
-\newcommand{\splitmeta}[3][\code{,}]{\meta{#2}#1\meta{#3}}
-\newcommand{\newsplitarg}[4][\splitmeta]
- {
- \newcommand{#2}[2]
- {\code{\textcolor{argument}{#3\textnormal{#1{##1}{##2}}#4}}}
- }
-\newcommand{\kvsplit}[3]
- {
- \item\code{\option{#1}\cnltx@isvalue\splitmarg{#2}{#3}}
- \cnltx@checkdefault{\hfill\newline}
- }
-\newsplitarg{\splitoarg}{[}{]}
-\newsplitarg{\splitmarg}{\{}{\}}
-\newsplitarg{\splitdarg}{(}{)}
-\newnote{\newtag}[1][New]{\textcolor{red}{\ding{73}\ #1}}
-\renewcommand{\emph}[1]{\textcolor{red}{#1}}
-\renewcommand{\cnltx@write@lastname}{}
-\makeatother
-
-\begin{document}
-\section{Preface}
-Sometimes it is necessary to draw dashed rules when writing documents, such as guides in the table of contents and indexes, horizontal lines in headers and footers, and even adding horizontal lines after headings. Macro packages such as \pkg*{dashrule} and \pkg*{nccrules} are available to accomplish this. Considering that \pkg*{dashrule} has not been updated for a long time, \pkg*{dashrulex} rewrites it using \hologo{LaTeX3} syntax and enhances it a bit.
-
-\section{User commands}
-\begin{commands}
- \command{hdashrule}[\oarg{raise}\oarg{leader}\marg{width}\marg{thickness list}\marg{dash rules}]
- The command to draw horizontal dashed rules, based on the \cs{rule} command, and the same as the \cs{rule} command when the \meta{dash rules} are empty. \meta{raise} is the vertical offset of the rule. \meta{leader} is the alignment of the dashed line fill, which can be empty, \code{c}, or \code{x} (the default), corresponding to the \cs{leaders}, \cs{cleaders}, and \cs{xleaders} commands, respectively. \meta{width} is the length of the dotted line, which can be set to \cs{fill} when used to fill the remaining center of the current text line. \meta{thickness list} is a rule for the height of vertically oriented lines, separated by \textcolor{red}{commas} and written as \splitmeta{height 1}{height a}\code{,...}, where \meta{height 1} denotes the height of a solid line and \meta{height a} denotes the height of a blank space.\meta{dash rules} is expressed as \splitmeta[\code{|}]{length 1}{length a}\code{,}\splitmeta[\code{|}]{length 2}{length b}\code{,...}, where \meta{length 1} represents the length of the solid line and \meta{length a} represents the length of the blank space, such as \code{5pt|2pt,3pt}, if the blank space is empty, then it is equal to the solid line length.
- \begin{example}
- 1X\rule{2cm}{1pt}x \\
- 2X\hdashrule{2cm}{1pt}{}x \\
- 3X\hdashrule{2cm}{1pt}{1pt}x \\
- 4X\hdashrule{4cm}{1pt}{1pt}x \\
- 5X\hdashrule[0.5ex]{4cm}{1pt}{1pt}x \\
- 6X\hdashrule[0.5ex]{4cm}{1pt}{3mm}x \\
- 7X\hdashrule[0.5ex]{4cm}{1mm}{3mm}x \\
- 8X\hdashrule[0.5ex]{4cm}{1mm}{3mm|3pt}x \\
- 9X\hdashrule[0.5ex]{4cm}{1mm}{3mm|3pt,1mm|2pt}x \\
- 10X\hdashrule[0.5ex]{4cm}{2pt,1pt,1pt}{3mm|3pt,1mm|2pt}x
- \end{example}
- \command{vrulemod}[\oarg{raise}\oarg{height}\oarg{depth}\marg{width}\marg{thickness list}]
- The vertical component used to fill the dashed line. \meta{thickness list} is consistent with the \cs{hdashrule} command, \meta{width} represents the length of the component, and the three optional parameters are consistent with those of the \cs{raisebox} command.
- \command{hanyrule}[\oarg{leader}\marg{width}\marg{symbol list}]
- This command sets the length of the dotted rule and fills it with arbitrary symbols. \meta{symbol list} can be more than one symbol and they are separated by \textcolor{red}{commas}. Symbols are best packed in boxes of a certain length, as spacing between symbols is not provided.
- \begin{example}
- \newcommand{\dblvmod}
- {%
- \tikz[color=blue]
- {
- \draw[line width=0.8mm](0mm,1.1mm)--(3mm,1.1mm);
- \draw[line width=0.3mm](0mm,0mm)--(3mm,0mm);
- }%
- }
- 1X\hanyrule[]{5cm}{\makebox[8pt][l]{$\cdot$}}x \\
- 2X\hanyrule[c]{5cm}{\makebox[8pt][l]{$\cdot$}}x \\
- 3X\hanyrule[x]{5cm}{\makebox[8pt][l]{$\cdot$}}x \\
- 4X\hanyrule[c]{5cm}{\makebox[8pt]{$\cdot$}}x \\
- 5X\hanyrule[x]{5cm}{\makebox[8pt]{$\cdot$}}x \\
- 6X\hanyrule[x]{5cm}{\makebox[8pt]{$\cdot$},\makebox[8pt]{$\circ$}}x \\
- 7X\hanyrule[x]{5cm}{\makebox[5mm]{\vrulemod{3mm}{2pt,1pt,1pt}}}x \\
- 8X\hanyrule[x]{5cm}{\makebox[5mm]{\dblvmod}}x
- \end{example}
-\end{commands}
-
-\section{Known issues}
-Currently only horizontal dashed line drawing is supported, with future plans to support vertical dashed lines, and even box dashed borders and so on.
-
-\appendix
-\nocite{*}
-
+\documentclass[load-preamble+]{cnltx-doc}
+
+\usepackage{setspace,hologo,enumitem,dashrulex,tikz}
+\usepackage[noto]{newtxmath}
+\setcnltx
+ {
+ package = dashrulex,
+ title = dashrulex,
+ version = v1.01a,
+ date = 2024/07/18,
+ authors = Qu Yi,
+ info = Draw dashed rules,
+ email = toquyi@163.com,
+ url = https://github.com/texno3/dashrulex,
+ abstract =
+ {
+ The \pkg*{dashrulex} package provides a flexible solution for drawing dashed rules in the body, and currently provides two commands \cs{hdashrule} and \cs{hanyrule}. It's written in \hologo{LaTeX3} and can be used as an alternative to the \pkg*{dashrule} package.
+ },
+ color-scheme = blue,
+ listings-options = {numbers = none,gobble = 2,lineskip = 1pt},
+ pre-output = {\parindent = 0em\setstretch{1.3}},
+ before-skip = \smallskipamount,
+ after-skip = \smallskipamount
+ }
+\makeatletter
+\newcommand{\splitmeta}[3][\code{,}]{\meta{#2}#1\meta{#3}}
+\newcommand{\newsplitarg}[4][\splitmeta]
+ {
+ \newcommand{#2}[2]
+ {\code{\textcolor{argument}{#3\textnormal{#1{##1}{##2}}#4}}}
+ }
+\newcommand{\kvsplit}[3]
+ {
+ \item\code{\option{#1}\cnltx@isvalue\splitmarg{#2}{#3}}
+ \cnltx@checkdefault{\hfill\newline}
+ }
+\newsplitarg{\splitoarg}{[}{]}
+\newsplitarg{\splitmarg}{\{}{\}}
+\newsplitarg{\splitdarg}{(}{)}
+\newnote{\newtag}[1]{\textcolor{red}{#1}}
+\renewcommand{\emph}[1]{\textcolor{red}{#1}}
+\renewcommand{\cnltx@write@lastname}{}
+\setlist{nosep,topsep = \smallskipamount}
+\setlist[description,1]{leftmargin = \parindent}
+\setlist[itemize,1]{leftmargin = *}
+\makeatother
+
+\begin{document}
+\section{Preface}
+Sometimes it is necessary to draw dashed rules when writing documents, such as guides in the table of contents and indexes, horizontal lines in headers and footers, and even adding horizontal lines after headings. Macro packages such as \pkg*{dashrule} and \pkg*{nccrules} are available to accomplish this. Considering that \pkg*{dashrule} has not been updated for a long time, \pkg*{dashrulex} rewrites it using \hologo{LaTeX3} syntax and enhances it a bit.
+
+\section{User commands}
+\begin{commands}
+ \command{hdashrule}[\oarg{raise}\oarg{leader}\marg{width}\marg{thickness list}\marg{dash rules}]
+ The command to draw horizontal dashed rules, based on the \cs{rule} command, and the same as the \cs{rule} command when the \meta{dash rules} are empty. \meta{raise} is the vertical offset of the rule. \meta{leader} is the alignment of the dashed line fill, which can be empty, \code{c}, or \code{x} (the \textcolor{red}{default}), corresponding to the \cs{leaders}, \cs{cleaders}, and \cs{xleaders} commands, respectively. \meta{width} is the length of the dashed line, which can be set to \cs{fill} when used to fill the remaining part of the current text line. \meta{thickness list} is a rule for the height of \textcolor{red}{vertical} lines, separated by \textcolor{red}{commas} and written as \splitmeta{height 1}{height a}\code{,...}, where \meta{height 1} denotes the height of a solid line and \meta{height a} denotes the height of a blank space. \meta{dash rules} stands for \textcolor{red}{horizontal} dashed line rules, which expressed as \splitmeta[\code{|}]{length 1}{length a}\code{,}\splitmeta[\code{|}]{length 2}{length b}\code{,...}, where \meta{length 1} represents the length of the solid line and \meta{length a} represents the length of the blank space, such as \code{5pt|2pt,3pt}, if the blank space is empty, then it is equal to the solid line length.
+ \begin{example}
+ 1X\rule{2cm}{1pt}x \\
+ 2X\hdashrule{2cm}{1pt}{}x \\
+ 3X\hdashrule{2cm}{1pt}{1pt}x \\
+ 4X\hdashrule{4cm}{1pt}{1pt}x \\
+ 5X\hdashrule[0.5ex]{4cm}{1pt}{1pt}x \\
+ 6X\hdashrule[0.5ex]{4cm}{1pt}{3mm}x \\
+ 7X\hdashrule[0.5ex]{4cm}{1mm}{3mm}x \\
+ 8X\hdashrule[0.5ex]{4cm-3mm}{1mm}{3mm}\vrulemod[0.5ex]{3mm}{1mm}x \\
+ 9X\hdashrule[0.5ex]{4cm}{1mm}{3mm|3pt}x \\
+ 10X\hdashrule[0.5ex]{4cm}{1mm}{3mm|3pt,1mm|2pt}x \\
+ 11X\hdashrule[0.5ex]{4cm}{2pt,1pt,1pt}{3mm|3pt,1mm|2pt}x
+ \end{example}
+ \command{vrulemod}[\oarg{raise}\oarg{height}\oarg{depth}\marg{width}\marg{thickness list}]
+ The vertical model used to fill the dashed line. \meta{thickness list} is consistent with the \cs{hdashrule} command, \meta{width} represents the length of the component, and the three optional parameters are consistent with those of the \cs{raisebox} command.
+ \command{hanyrule}[\oarg{leader}\marg{width}\marg{symbol list}]
+ This command sets the length of the dotted rule and fills it with arbitrary symbols. \meta{symbol list} can be more than one symbol and they are separated by \textcolor{red}{commas}. Symbols are best packed in boxes of a certain length, as spacing between symbols is not provided.
+ \begin{example}
+ \newcommand{\dblblock}
+ {%
+ \tikz[color=teal]
+ {
+ \draw[line width=0.8mm](0mm,1.1mm)--(3mm,1.1mm);
+ \draw[line width=0.3mm](0mm,0mm)--(3mm,0mm);
+ }%
+ }
+ 1X\hanyrule[]{5cm}{\makebox[8pt]{$\cdot$}}x \\
+ 2X\hanyrule[c]{5cm}{\makebox[8pt]{$\cdot$}}x \\
+ 3X\hanyrule[x]{5cm}{\makebox[8pt]{$\cdot$}}x \\
+ 4X\hanyrule[x]{5cm}{\makebox[8pt][l]{$\cdot$}}x \\
+ 5X\hanyrule[x]{5cm}{\makebox[8pt][r]{$\cdot$}}x \\
+ 6X\hanyrule[x]{5cm}{\makebox[8pt]{$\cdot$},\makebox[8pt]{$\circ$}}x \\
+ 7X\hanyrule[x]{5cm}{\makebox[5mm]{\vrulemod{3mm}{2pt,1pt,1pt}}}x \\
+ 8X\hanyrule[x]{5cm}{\makebox[5mm]{\dblblock}}x
+ \end{example}
+\end{commands}
+
+\section{Known issues}
+Currently only horizontal dashed line drawing is supported, with future plans to support vertical dashed lines, and even box dashed borders and so on.
+
+\appendix
+\nocite{*}
+
\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/dccpaper/README.md b/macros/latex/contrib/dccpaper/README.md
index 0d52a8434a..b1181bc202 100644
--- a/macros/latex/contrib/dccpaper/README.md
+++ b/macros/latex/contrib/dccpaper/README.md
@@ -73,7 +73,7 @@ A makefile is provided which you can use with the Make utility:
## Licence
-Copyright 2023 Digital Curation Centre, University of Edinburgh.
+Copyright 2024 Digital Curation Centre, University of Edinburgh.
This work consists of the image files dccpaper-by.eps and
dccpaper-by.pdf, the documented LaTeX file dccpaper.dtx and a Makefile.
diff --git a/macros/latex/contrib/dccpaper/dccpaper.dtx b/macros/latex/contrib/dccpaper/dccpaper.dtx
index de8e3b88cc..7218660813 100644
--- a/macros/latex/contrib/dccpaper/dccpaper.dtx
+++ b/macros/latex/contrib/dccpaper/dccpaper.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%<*internal|ijdc9|ijdc14|idcc|base>
-\def\Version{2023/08/11 v2.4}
+\def\Version{2024/08/23 v2.5}
%</internal|ijdc9|ijdc14|idcc|base>
%<*internal>
\iffalse
@@ -246,7 +246,7 @@ See: http://www.latex-project.org/lppl.txt
\endpreamble
\postamble
-Copyright (C) 2023 Digital Curation Centre, University of Edinburgh
+Copyright (C) 2024 Digital Curation Centre, University of Edinburgh
<info@dcc.ac.uk>
\endpostamble
@@ -546,16 +546,16 @@ Use this for a conference preprint.
\subsection{International Digital Curation Conference}
\begin{framed}\noindent
-To emulate a 2024 conference paper/extended abstract, use the \textsf{ijdc-v14}
-class with the \key{conference} option.
+To emulate a conference paper/extended abstract from 2024 onwards, use the
+\textsf{ijdc-v14} class with the \key{conference} option.
\end{framed}
The class is loaded in the usual way with
\lstinline|\documentclass[$\meta{options}$]{idcc}|.
Two types of option are available. The first relates to the conference to which the submission will be made:
\begin{description}[font=\normalfont]
- \item[\key{15}, \key{16}, .~.~.~, \key{22}, \key{24}]
- Use this to select the year of the conference, e.g.\@ \key{24} for 2024.
+ \item[\key{15}, \key{16}, .~.~.~, \key{24}, \key{25}]
+ Use this to select the year of the conference, e.g.\@ \key{25} for 2025.
\end{description}
The second relates to the type of submission:
@@ -871,6 +871,8 @@ Any acknowledgements should be placed in a section immediately before the refere
\section{Appendix A: Change History}
\begin{description}
+\item[v2.5] 2024-08-23\\
+Added details of IDCC 2025.
\item[v2.4] 2023-08-11\\
Added details of and update documentation for IDCC 2024.
\item[v2.3] 2022-01-27\\
@@ -1097,7 +1099,7 @@ Fully funded, part funded (subsidised) or delegate fee.
%<readme>## Licence
%<readme>
%<*driver|readme>
-Copyright 2023 Digital Curation Centre, University of Edinburgh.
+Copyright 2024 Digital Curation Centre, University of Edinburgh.
This work consists of the image files dccpaper-by.eps and
dccpaper-by.pdf, the documented LaTeX file dccpaper.dtx and a Makefile.
@@ -1520,9 +1522,15 @@ the University of Edinburgh on behalf of the Digital Curation Centre. ISSN:
\DeclareOption{24}{%
\def\dccp@publ@short{IDCC}
\def\dccp@publ@msg{The 18th \dccp@publ@long\ takes place on 19--21 February
- 2024 in Edinburgh, Scotland.\par\bigskip URL: \url{https://www.dcc.ac.uk/events/18th-international-digital-curation-conference}}
+ 2024 in Edinburgh, Scotland.\par\bigskip URL: \url{https://www.dcc.ac.uk/events/idcc24}}
\def\dccp@subject{18th \dccp@publ@long, 2024}
}
+\DeclareOption{25}{%
+ \def\dccp@publ@short{IDCC25}
+ \def\dccp@publ@msg{The 19th \dccp@publ@long\ takes place on 17--19 February
+ 2025 in The Hague, Netherlands.\par\bigskip URL: \url{https://www.dcc.ac.uk/events/idcc25}}
+ \def\dccp@subject{19th \dccp@publ@long, 2025}
+}
\ProcessOptions\relax
% \end{macrocode}
diff --git a/macros/latex/contrib/dccpaper/dccpaper.pdf b/macros/latex/contrib/dccpaper/dccpaper.pdf
index 3cd33ff6fa..310af05b12 100644
--- a/macros/latex/contrib/dccpaper/dccpaper.pdf
+++ b/macros/latex/contrib/dccpaper/dccpaper.pdf
Binary files differ
diff --git a/macros/latex/contrib/delimset/README.txt b/macros/latex/contrib/delimset/README.txt
index 729b73fbbf..9094d59624 100644
--- a/macros/latex/contrib/delimset/README.txt
+++ b/macros/latex/contrib/delimset/README.txt
@@ -1,5 +1,5 @@
-delimset v1.1
-Copyright 2016-2018 Niklas Beisert
+delimset v2.0
+Copyright 2016-2024 Niklas Beisert
delimset is a LaTeX2e package to typeset and declare sets of delimiters
in math mode whose size can be adjusted conveniently.
diff --git a/macros/latex/contrib/delimset/delimset.dtx b/macros/latex/contrib/delimset/delimset.dtx
index 9bd070b5ea..337f1a4271 100644
--- a/macros/latex/contrib/delimset/delimset.dtx
+++ b/macros/latex/contrib/delimset/delimset.dtx
@@ -1,6 +1,6 @@
% \iffalse
%
-% delimset.dtx Copyright (C) 2016-2018 Niklas Beisert
+% delimset.dtx Copyright (C) 2016-2024 Niklas Beisert
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
@@ -18,15 +18,15 @@
% and the derived files delimset.sty and dlmssamp.tex
%
%<package|sample>\NeedsTeXFormat{LaTeX2e}[1996/12/01]
-%<package>\ProvidesPackage{delimset}[2018/12/30 v1.1 convenient size control for delimiter sets]
-%<sample>\ProvidesFile{dlmssamp.tex}[2018/12/30 v1.1 sample for delimset]
+%<package>\ProvidesPackage{delimset}[2024/07/17 v2.0 convenient size control for delimiter sets]
+%<sample>\ProvidesFile{dlmssamp.tex}[2024/07/17 v2.0 sample for delimset]
%<*driver>
-%\ProvidesFile{delimset.drv}[2018/12/30 v1.1 delimset Reference Manual file]
+%\ProvidesFile{delimset.drv}[2024/07/17 v2.0 delimset Reference Manual file]
\PassOptionsToClass{10pt,a4paper}{article}
\documentclass{ltxdoc}
\usepackage[margin=35mm]{geometry}
-\usepackage{hyperref}
+\usepackage[hyperindex=false]{hyperref}
\usepackage{hyperxmp}
\usepackage[usenames]{color}
\usepackage{amsmath,amsfonts}
@@ -36,7 +36,7 @@
\hypersetup{pdfpagemode=UseNone}
\hypersetup{pdfsource={}}
\hypersetup{pdflang={en-UK}}
-\hypersetup{pdfcopyright={Copyright 2016-2018 Niklas Beisert.
+\hypersetup{pdfcopyright={Copyright 2016-2024 Niklas Beisert.
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.}}
@@ -50,6 +50,8 @@
\newcommand{\secref}[1]{\hyperref[#1]{section \ref*{#1}}}
+\def\textvert{\texttt{\char"7C}}
+
\parskip1ex
\parindent0pt
\let\olditemize\itemize
@@ -67,7 +69,7 @@
{\texttt{nbeisert@itp.phys.ethz.ch}}}
\hypersetup{pdfauthor={Niklas Beisert}}
\hypersetup{pdfsubject={Manual for the LaTeX2e Package delimset}}
-\date{30 December 2018, \textsf{v1.1}}
+\date{17 July 2024, \textsf{v2.0}}
\maketitle
\begin{abstract}\noindent
@@ -99,9 +101,10 @@ For example:
\\
|(v,w)| &\to (v,w)
\\
-|\langle\psi\vert M\vert\psi\rangle| &\to \langle\psi\vert M\vert\psi\rangle
+|\langle\psi|\textvert|M|\textvert|\psi\rangle|
+&\to \langle\psi\vert M\vert\psi\rangle
\\
-|(x^2+px+q)\vert_{-p/2}| &\to (x^2+px+q)\vert_{-p/2}
+|(x^2+px+q)|\textvert|_{-p/2}| &\to (x^2+px+q)\vert_{-p/2}
\\&\ldots
\end{aligned}
\]
@@ -109,8 +112,9 @@ For example:
In order to adjust the size of delimiters, the modifiers
|\big|, |\Big|, |\bigg|, |\Bigg| are used.
More importantly the construct
-{|\left*| \ldots [|\middle*|] \ldots |\right*|}
+{|\left*| \ldots [|\middle*|] \ldots |\right*|}
adjusts the size of delimiters to the contents:
+%
\[
\Bigg[\bigg[\Big[\big[[*]\big]\Big]\bigg]\Bigg],
\qquad
@@ -150,16 +154,17 @@ the size |\big(...\big)|:
\]
The package \textsf{delimset} provides mechanisms to declare sets of delimiters
-whose size can be adjusted conveniently by simple optional parameters.
+whose size can be adjusted conveniently by adding simple flag parameters.
For example, it provides a general purpose bracket |\brk|
which can be used as follows:
+%
\[
\begin{aligned}
|\brk{A\hat{X}+B}|&\to(A\hat{X}+B)
\\
|\brk*{A\hat{X}+B}|&\to\mathopen{}\mathclose{\left(A\hat{X}+B\right)}
\\
-|\brk2{A\hat{X}+B}|&\to\Bigl(A\hat{X}+B\Bigr)
+|\brk^2{A\hat{X}+B}|&\to\Bigl(A\hat{X}+B\Bigr)
\\
|\brk!{A\hat{X}+B}|&\to\bigl(A\hat{X}+B\bigr)
\end{aligned}
@@ -198,16 +203,18 @@ the more difficult it will be to adjust them
to obtain a visually acceptable result.
The main functionality of the package is based on a
-versatile mechanism to specify sets of delimiters, e.g.:
+versatile mechanism to specify sets of delimiters,
+e.g.:
+%
\[
\begin{aligned}
|\delim<>{ax+b}|
&\to\langle ax+b\rangle
\\
-|\delimpair{[}{[.],}{[}!{a}{b}|
+|\delimpair[{*,}[!{a}{b}|
&\to \bigl[a, b\bigr[
\\
-|\delimtriple<\vert\vert>*{\psi}{A^\dagger}{\psi}|
+|\delimtriple<|\textvert\textvert|>*{\psi}{A^\dagger}{\psi}|
&\to\left\langle\psi\middle\vert A^\dagger\middle\vert \psi\right\rangle
\end{aligned}
\]
@@ -216,14 +223,14 @@ The command |\delim| can be used on the fly, but also
in definitions of custom delimiter sets such as:
%
\[
-|\newcommand{\comm}{\delimpair{[}{[.],}{]}}|
+|\newcommand{\comm}{\delimpair{[}{*,}{]}}|
\]
%
Note that the definition of |\comm| does not specify any arguments.
They are nevertheless read by the incomplete definition of |\delimpair|
-from the what follows |\comm|.
+from what follows |\comm|.
In particular, this incomplete definition
-enables the correct parsing of the optional size specifier,
+enables the correct parsing of the optional size specifier flag,
e.g.:
%
\[
@@ -238,7 +245,7 @@ The above definition could be written as follows:
\begin{aligned}
&|\DeclareMathDelimiterSet{\comm}[2]|
\\
-&\qquad |{\selectdelim[l]{[}{#1},{#2}\selectdelim[r]{]}}|
+&\qquad |{\selectdeliml{[}{#1},{#2}\selectdelimr{]}}|
\end{aligned}
\]
@@ -260,9 +267,9 @@ of the currently selected math font
Unfortunately, it does not account for
the currently selected math style.
Therefore, the size of delimiters in sub/superscripts
-cannot be adjusted appropriately,
-\unskip\footnote{Arguably, it is bad typesetting practice
-to have too complicated expressions in sub/superscripts.}
+cannot be adjusted appropriately
+(an arguably better typesetting practice is
+to avoid complicated expressions in sub/superscripts in the first place),
they come out way too big:
%
\[
@@ -272,7 +279,7 @@ they come out way too big:
This package modifies the definitions of
the size modifiers (of \textsf{amsmath})
to automatically adjust to sub/superscripts
-(subject to availability):
+(subject to availability in the font):
%
\[
\makeatletter
@@ -282,6 +289,7 @@ to automatically adjust to sub/superscripts
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Spacing and Math Classes}
+\label{sec:spacing}
Another shortcoming of the variable-size delimiters is that
the spacing is noticeably different from their fixed-size counterparts:
@@ -291,12 +299,12 @@ the spacing is noticeably different from their fixed-size counterparts:
|\square(ax+b)\square|
&\to \square(ax+b)\square
\\
-|\square\left(ax+b\right)\square|
-&\to \square\left(ax+b\right)\square
-\\
|\square\bigl(ax+b\bigr)\square|
&\to \square\bigl(ax+b\bigr)\square
\\
+|\square\left(ax+b\right)\square|
+&\to \square\left(ax+b\right)\square
+\\
|\square\left(ax+\big.b\right)\square|
&\to \square\left(ax+\big.b\right)\square
\end{aligned}
@@ -328,8 +336,9 @@ For practical purposes, consistent spacing can only be achieved
by a more convenient mechanism.
On a related note, it is important to correctly specify
-the math class (|\mathopen|\hspace{0pt}/\hspace{0pt}|\mathclose|)
+the math class (such as |\mathopen| or |\mathclose|)
for the delimiters, for example:
+%
\[
\begin{aligned}
|\big(-1\big)| &\to \big(-1\big)
@@ -340,19 +349,23 @@ for the delimiters, for example:
%
The math class can also make a major difference for intermediate delimiters,
e.g.:
+%
\[
\begin{aligned}
-|\bigl\langle\psi\big\vert\psi\bigr\rangle|
-&\to \bigl\langle\psi\big\vert\psi\bigr\rangle
+|\bigl<\psi\big|\textvert|\psi\bigr>|
+&\to \bigl<\psi\big\vert\psi\bigr>
\\
-|\bigl\langle\psi\bigm\vert\psi\bigr\rangle|
-&\to \bigl\langle\psi\bigm\vert\psi\bigr\rangle
+|\bigl<\psi\mathpunct\big|\textvert|\psi\bigr>|
+&\to \bigl\langle\psi\mathpunct\big\vert\psi\bigr>
\\
-|\bigl\langle\psi\mathbin\big\vert\psi\bigr\rangle|
-&\to \bigl\langle\psi\mathbin\big\vert\psi\bigr\rangle
+|\bigl<\psi\mathinner\big|\textvert|\psi\bigr>|
+&\to \bigl\langle\psi\mathinner\big\vert\psi\bigr>
\\
-|\bigl\langle\psi\mathpunct\big\vert\psi\bigr\rangle|
-&\to \bigl\langle\psi\mathpunct\big\vert\psi\bigr\rangle
+|\bigl<\psi\mathbin\big|\textvert|\psi\bigr>|
+&\to \bigl\langle\psi\mathbin\big\vert\psi\bigr>
+\\
+|\bigl<\psi\bigm|\textvert|\psi\bigr>|
+&\to \bigl\langle\psi\bigm\vert\psi\bigr>
\end{aligned}
\]
%
@@ -364,6 +377,67 @@ of the left and right delimiters. It also offers several choices for
intermediate delimiters to take the context into account.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Compounds and Broken Lines}
+
+The mechanism provided by the package requires the delimited expression
+to appear as an uninterrupted compound. In particular, the expression cannot
+span several lines in a multi-line equation or several columns in a matrix.
+The same restriction applies to the elementary |\left| and |\right| construct.
+In cases where delimited expressions are torn apart across several blocks,
+the delimiters have to be typeset individually.
+The package offers a mechanism to display individual delimiters
+of a given delimiter set. It also assists in maintaining
+the same type and size across blocks.
+Being able to display individual delimiters of defined delimiter sets
+offers a broad range of (ab)use.
+
+Individual delimiters of a set can be selected and displayed
+by specifying appropriate flags,
+for example:
+%
+\[
+|\brk(|\to{(},\qquad
+|\brk)|\to{)}
+\]
+%
+These flags can be combined with the size specifier
+or other bracket modifiers,
+e.g.:
+%
+\[
+|\brk^3(|\to{\biggl(},\qquad
+|\brk[s]^2)|\to{\Bigr]}
+\]
+%
+This enables to conveniently split delimited expressions over blocks of code,
+e.g.:
+%
+\[
+|\brk[s]^3(\frac{A}{B}|\ldots\Big/\mkern-9mu\Big/\ldots|\frac{C}{D}\brk[s]^3)|
+\to
+\biggl[\frac{A}{B}\cdots\bigg/\mkern-12mu\bigg/\cdots\frac{C}{D}\biggr]
+\]
+%
+Here, the type and modifiers specifying the delimiter set
+are repeated for all individual delimiters.
+To simplify such expressions and their maintenance,
+the package provides global registers which store
+the type and size of delimiters.
+With those, the above expression can be abbreviated as:
+%
+\[
+|\brk[s]^3[|\ldots\big/\mkern-6mu\big/\ldots|\usedelim]|
+\quad\text{or}\quad
+|\brk[s]^3[|\ldots\big/\mkern-6mu\big/\ldots|\brk]|
+\]
+%
+Here, |\usedelim]|, alternatively |\brk]|,
+closes the delimiter set with
+the type and options previously specified by |\brk...[|.
+For nesting purposes, there also exists a more elaborate
+solution using registers, see below.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Philosophy}
Semantic typesetting is one of the philosophies behind \LaTeX{}:
@@ -435,17 +509,17 @@ Modifier letters can be prepended and appended to adjust their size.
%
A functionality of the present package
not offered by any of the above packages is
-to typeset delimiters on the fly, e.g.:
+to typeset delimiters on the fly,
+e.g.:
%
\[
-|\delim<\vert>!{\psi}{\psi}|
-\to\bigl\langle\psi\big\vert\psi\bigr\rangle
+|\delim<|\textvert|>!{\psi}{\psi}|
+\to\bigl<\psi\big\vert\psi\bigr>
\]
%
The mechanism to specify the size is leaner in the sense that it uses
only a single character and a single command.
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Usage}
@@ -457,139 +531,377 @@ If not yet present,
the package \textsf{amsmath} will be loaded automatically.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\subsection{Inline Usage}
-\label{sec:delimcommands}
+\subsection{Delimiter Sets and Presentation Flags}
+\label{sec:flags}
+
+The package provides commands to represent various delimiter sets,
+see \secref{sec:inline} and \secref{sec:declare} below.
+Their display can be modified systematically by specifying flags.
+A delimiter set |\|\emph{name}, e.g.\ |\brk|, is typically invoked by
+a sequence like:
+%
+\[
+|\|\emph{name}\ \emph{flags}\ |{|\emph{expr1}|}||{|\emph{expr2}|}|\ldots
+\]
+%
+where \emph{expr(n)} are the terms to be enclosed by the delimiters
+and the optional \emph{flags} adjust the presentation of delimiters.
+The \emph{flags} are described as follows:
+
+First, a size modifier flag controls the size of the delimiters
+to be displayed. It can take one of the following values:
+%
+\[
+\begin{aligned}
+|0|&\qquad \text{default size}
+\text{ (0.96 times default line height)}
+\\
+|!|, |+|, |^1|&\qquad \text{size }|\big|
+\text{ (1.2 times default line height)}
+\\
+|^2|&\qquad \text{size }|\Big|
+\text{ (1.8 times default line height)}
+\\
+|^3|&\qquad \text{size }|\bigg|
+\text{ (2.4 times default line height)}
+\\
+|^4|&\qquad \text{size }|\Bigg|
+\text{ (3.0 times default line height)}
+\\
+|^|\emph{n}, |^{|\emph{x}|}|&\qquad \text{flexible size adjustment
+(\emph{n}=|0|\ldots|9|; \emph{x}: decimal number)}
+\\
+|_{|\emph{h}|}|&\qquad \text{adjustment to absolute height \emph{h} (centred)}
+\\
+|*|&\qquad \text{variable size }|\left...\right|
+\end{aligned}
+\]
+%
+The intended delimiter size is stored as the dimension register:
+%
+\[
+|\delimsize|
+\]
+%
+It may be used to adjust spacing within the delimiter set
+proportional to the size of the delimiters.
+Note that the actual size of delimiters may deviate
+depending on availability within the given font.
+Note further that the size cannot be determined for variable-size delimiters
+(`|*|') and thus size |\Big| is assumed for this case.
+Note finally that the sub/superscript styles are not taken into
+account and |\delimsize| applies to the default case |\textstyle|.
+The package also supplies a macro to add horizontal glue
+proportional to the intended delimiter size:
+%
+\[
+|\kerndelim{|\emph{width}|}|
+\]
+%
+Here, \emph{width} is the amount of horizontal glue
+in units of mu scaled by the ratio of |\delimsize|
+and the current math font height.
+The macro does adjust for the selected script style.
+
+Second, a delimiter selection flag is used to pick out
+and display just one individual delimiter within the set.
+It can take one of the following values:
+%
+\[
+\begin{aligned}
+|(|&\qquad \text{left delimiter}
+\\
+\textvert, |,|&\qquad \text{first intermediate delimiter}
+\\
+|)|&\qquad \text{right delimiter}
+\\
+|?|\emph{n}&\qquad \text{\emph{n}-th delimiter (starting with |0|: left)}
+\end{aligned}
+\]
+
+Third, register flags store are retrieve delimiter
+for splitting the across blocks or lines:
+%
+\[
+\begin{aligned}
+|[|&\qquad \text{store delimiter type to register `|.|',
+display left delimiter (same as `|>.(|')}
+\\
+|]|&\qquad \text{display right delimiter stored in default register `|.|'
+(same as `|<.)|')}
+\\
+|>|\emph{r}, |>{|\emph{reg}|}|&\qquad \text{store delimiter type
+in register \emph{r} or \emph{reg}}
+\\
+|<|\emph{r}, |<{|\emph{reg}|}|&\qquad \text{retrieve delimiter type
+from register \emph{r} or \emph{reg}}
+\end{aligned}
+\]
+%
+A register stores the type of delimiter set (|\|\emph{name}),
+the desired size (except for variable size `|*|')
+as well as the math class of the compound (`|'|' vs. `|"|', see below).
+A stored register can be retrieved and displayed by the macro:
+%
+\[
+|\usedelim|\,\emph{r}\ \emph{sel}
+\quad\text{or}\quad
+|\usedelim|\{\emph{reg}\}\emph{sel}
+\]
+%
+Here, \emph{sel} is a flag to select an individual delimiter, see above.
+
+In addition, there are some general purpose flags:
+%
+\[
+\begin{aligned}
+|.|&\qquad \text{terminates flag processing}
+\\
+|:|&\qquad \text{enclose delimiter set in block
+(for using total box dimensions)}
+\\
+|'|&\qquad \text{render delimiter set as }|\mathopen|\text{ and }|\mathclose|
+\\
+|"|&\qquad \text{render delimiter set as }|\mathinner|
+\\
+|-|&\qquad \text{display phantom delimiters (for individual delimiters)}
+\end{aligned}
+\]
+
+Please note the following:
+%
+\begin{itemize}
+\item
+A delimiter selector (including the combined flags `|[|' and `|]|')
+terminates flag processing,
+therefore all relevant flags must be specified before it.
+\item
+Parsing also stops with the opening of the first term argument
+by means of the opening brace `|{|'.
+\item
+Parsing can also be terminated manually by specifying the flag `|.|'
+(in case the opening brace `|{|' for arguments is missing for whatever reason).
+\item
+Any other letter or token at the location of \emph{flags}
+is interpreted as an unrecognised flag and triggers a compiler error.
+For instance, |\brk{x}| must not be abbreviated as |\brk x|
+because `|x|' would be interpreted as a flag
+(it might be abbreviated as |\brk.x|).
+\item
+The legacy size modifier flags `|1|' \ldots `|4|'
+provided for backward compatibility have the same effect as `|^1|'\ldots`|^4|'.
+\item
+The phantom delimiter flag `|-|' does not work for variable size.
+It is intended for reserving space for individual delimiters
+when they are composed manually into sets (e.g.\ across lines).
+\item
+Technically, individual delimiters can be produced in the variable size version
+(even though it may defeat the purpose of the delimiter selection mechanism).
+One has to pay attention when using
+only the opening or only the closing delimiters from the package
+and counterbalancing it by direct code for the opposite side.
+This is because `|*(|' and `|*)|' do not directly translate to
+|\left|\emph{delim} and |\right|\emph{delim}
+due to proper spacing, see \secref{sec:spacing}.
+Instead, they translate to:
+%
+\[
+\begin{aligned}
+|*(|&\to|\mathopen{}\mathclose\bgroup\left|\emph{delim}
+\\
+|*)|&\to|\right|\emph{delim}|\egroup|
+\end{aligned}
+\]
+%
+One should use analogous code to complete the manual variable size block.
+
+Note that similar restrictions apply to using the flag `|:|'
+for block enclosure which uses |\bgroup| and |\egroup| as well.
+
+As it does not make much sense to use variable-size (`|*|')
+and block (`|:|') compounds for individual delimiter selection,
+the state of these flags is not stored in the global registers.
+\end{itemize}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Inline Declarations}
+\label{sec:inline}
The package provides three general purpose commands
to compose delimiter sets with one, two or three encapsulated expressions:
%
\[
\begin{aligned}
-&|\delim{|\emph{l}|}{|\emph{r}|}|\emph{size}|{|\emph{expr}|}|
+&|\delim{|\emph{l}|}{|\emph{r}|}|\emph{flags}|{|\emph{expr}|}|
\\
&|\delimpair{|\emph{l}|}{|\emph{m}|}{|\emph{r}|}|
-\emph{size}|{|\emph{expr1}|}{|\emph{expr2}|}|
+\emph{flags}|{|\emph{expr1}|}{|\emph{expr2}|}|
\\
-&|\delimtriple{|\emph{l}|}{|\emph{m1}|}{|\emph{m2}|}{|\emph{r}|}|
-\emph{size}|{|\emph{expr1}|}{|\emph{expr2}|}{|\emph{expr3}|}|
+&|\delimtriple{|\emph{l}|}{|\emph{m}|}{|\emph{n}|}{|\emph{r}|}|
+\emph{flags}|{|\emph{expr1}|}{|\emph{expr2}|}{|\emph{expr3}|}|
\end{aligned}
\]
%
The expression(s) \emph{expr(n)} will be surrounded by the
delimiters \emph{l} and \emph{r}
and, in the case of more than one expression,
-they will be separated by the delimiters \emph{m(n)}:
+they will be separated by the delimiters \emph{m}, \emph{n}:
+%
\[
\emph{l}\ \emph{expr}\ \emph{r},
\qquad
\emph{l}\ \emph{expr1}\ \emph{m}\ \emph{expr2}\ \emph{r},
\qquad
-\emph{l}\ \emph{expr1}\ \emph{m1}\ \emph{expr2}\
-\emph{m2}\ \emph{expr3}\ \emph{r}
+\emph{l}\ \emph{expr1}\ \emph{m}\ \emph{expr2}\
+\emph{n}\ \emph{expr3}\ \emph{r}
\]
-Here, \emph{l} and \emph{r} have to be
-math delimiters (symbols which can be used for |\left| and |\right|) or
-the dot `.' for the null delimiter.
-The separators \emph{m(n)} can be plain math delimiters as well, but they can
-also be compound expression of the form |[|\emph{class}|]|\emph{delim}
-where \emph{class} specifies
-the intended math class of the delimiter \emph{delim}:
+Here, \emph{l}, \emph{r}, \emph{m}, \emph{n}
+should be math delimiters \emph{delim}
+(elementary symbols which can be used for |\left| and |\right|)
+or the dot `|.|' for the null delimiter.
+The delimiter set expression can be adjusted in two ways:
+
+First, size adjustment
+for the delimiters \emph{l}, \emph{r}, \emph{m}, \emph{n}
+can be suppressed by a starred variant:
+%
+\[
+|{*|\emph{token}|}|
+\qquad\text{or}\qquad
+|{*{|\emph{expr}|}}|
+\]
+%
+This allows to use an arbitrary \emph{token}
+or a compound expression \emph{expr} in place of a delimiter \emph{delim}.
+This is useful when a delimiter character should not adjust in size
+(e.g.\ commas), or if a flexible-size version of the character
+is not available. One might also use a compound expression
+to create a null delimiter with non-zero width
+(the width may be specified by |\kerndelim|
+to make it proportional to the delimiter size).
+
+Second, the intended math class
+of the intermediate delimiters \emph{m}, \emph{n}
+may be adjusted in order to achieve a more appropriate automatic spacing
+by using |{[|\emph{class}|]|\emph{delim}|}|.
+Here, \emph{class} specifies
+the intended math class of the delimiter \emph{delim}
+according to:
%
\[
-\begin{aligned}{}
+\begin{aligned}
\left.\begin{array}{r}
-\emph{delim}\\|{|\emph{delim}|}|\\|{[]|\emph{delim}|}|
+\emph{delim}\\|{|\emph{delim}|}|
\end{array}\right\}
-&\qquad\text{class }|\mathord|\text{ (similar to }|\big|)
-\\
-|{[l]|\emph{delim}|}|&\qquad
-\text{class }|\mathopen|\text{ (similar to }|\bigl|
-\text{, not for use in }|\delim...|)
-\\
-|{[r]|\emph{delim}|}|&\qquad
-\text{class }|\mathclose|\text{ (similar to }|\bigr|
-\text{, not for use in }|\delim...|)
+&\qquad
+\left\{\begin{array}{l}
+\text{no glue for size-adjusted delimiters (same as }|[o]|\text{)}
\\
-|{[o]|\emph{delim}|}|&\qquad
-\text{class }|\mathopen|\text{ (similar to }|\bigl|)
+\text{determined by expression for unadjusted size (}|*|\text{ variant)}
+\end{array}\right.
\\
-|{[c]|\emph{delim}|}|&\qquad
-\text{class }|\mathclose|\text{ (similar to }|\bigr|)
-\\
-|{[m]|\emph{delim}|}|&\qquad
-\text{class }|\mathrel|\text{ (similar to }|\bigm|)
+|{[o]|\emph{delim}|}|
+&\qquad
+\text{no glue, similar to }|\big|, |\mathord|, |\mathopen|, |\mathclose|
\\
|{[p]|\emph{delim}|}|&\qquad
-\text{class }|\mathpunct|\text{ (similar to }|\bigp|)
+\text{followed by }|\thinmuskip|\text{, similar to }|\bigp|, |\mathpunct|
+\\
+|{[i]|\emph{delim}|}|&\qquad
+\text{surrounded by }|\thinmuskip|\text{, similar to }|\bigi|, |\mathinner|
\\
|{[b]|\emph{delim}|}|&\qquad
-\text{class }|\mathbin|\text{ (similar to }|\bigb|)
+\text{surrounded by }|\medmuskip|\text{, similar to }|\bigb|, |\mathbin|
\\
-|{[.]|\emph{expr}|}|&\qquad
-\text{no size adjustment, \emph{expr} can be any expression}
+|{[m]|\emph{delim}|}|&\qquad
+\text{surrounded by }|\thickmuskip|\text{, similar to }|\bigm|, |\mathrel|
\end{aligned}
\]
-%
-Note that the left and right delimiters \emph{l} and \emph{r} effectively
-have |[l]| and |[r]| prepended, respectively,
-and therefore they must be a plain math delimiter.
-Conversely, the immediate delimiters \emph{m(n)} must not
-have the |[l]| and |[r]| classes
-because the latter must appear precisely once
-and they are already taken by \emph{l} and \emph{r};
-use classes |[o]| and |[c]| instead.
-The optional size modifier \emph{size} should take one of the following values:
+Please note the following:
+%
+\begin{itemize}
+\item
+The left and right delimiters \emph{l} and \emph{r}
+are assigned to special classes:
+They leave no initial and final glue on the enclosed expressions
+(same as |\mathopen| and |\mathclose|).
+From the outside, the delimiter set appears
+either as a combination of |\mathopen|+|\mathclose| (flag `|'|')
+or as |\mathinner| (flag `|"|').
+\item
+The legacy class |[.]| provided for backward compatibility
+specifies delimiters with unadjusted size:
+the compound |{[.]|\emph{expr}|}| has the same effect as |{*{|\emph{expr}|}}|.
+\item
+The legacy class |[c]| provided for backward compatibility
+has the same effect as |[o]|.
+\item
+Unadjusted-size delimiters can be combined with math classes as:
+%
\[
-\begin{aligned}{}
-\emph{empty}, \emph{anything else}, |0|&\qquad \text{default size}
-\\
-|!|, |+|, |1|&\qquad \text{size }|\big|\text{ (|!| is preferred)}
-\\
-|2|&\qquad \text{size }|\Big|
-\\
-|3|&\qquad \text{size }|\bigg|
-\\
-|4|&\qquad \text{size }|\Bigg|
-\\
-|*|&\qquad \text{variable size }|\left...\right|
-\end{aligned}
+|{[|\emph{class}|]*|\emph{token}|}|
+\qquad\text{or}\qquad
+|{[|\emph{class}|]*{|\emph{expr}|}}|
\]
+%
+\item
+The opening square bracket `|[|'
+takes the dual role of indicating the optional |[|\emph{class}|]| argument.
+To avoid conflicts on intermediate delimiters,
+opening square bracket delimiters should be encoded as
+`|{{[}}|' (for |\delim...|) or `|{[}|' (for |\selectdelim|)
+rather than `|[|'.
+\end{itemize}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Declarations}
+\label{sec:declare}
The above constructs can be used to define new delimiter commands via:
%
\[
-|\newcommand{\|\emph{name}|}{\delim...{|\emph{l}|}...{|\emph{r}|}}|
+\begin{aligned}
+&|\newcommand{\|\emph{name}|}{\delim{|\emph{l}|}{|\emph{r}|}|
+\emph{flags}|}|
+\\
+&|\newcommand{\|\emph{name}|}{\delimpair{|\emph{l}|}{|\emph{m}|}{|\emph{r}|}|
+\emph{flags}|}|
+\\
+&|\newcommand{\|\emph{name}|}{\delimtriple{|\emph{l}|}{|\emph{m}|}|
+|{|\emph{n}|}{|\emph{r}|}|\emph{flags}|}|
+\end{aligned}
\]
%
-Here it makes sense to drop all arguments starting
-with the size modifier \emph{size} from the definition.
+Here it makes sense to drop all arguments
+starting at the optional \emph{flags} argument from the definition.
The \TeX{} parsing mechanism will then automatically
use the tokens following |\|\emph{name} including the optional size modifier.
-If the encapsulated expression(s) are to be passed as explicit arguments
-to |\|\emph{name}, one will have to find an alternative way to pass the
-optional size argument.
+If any of the encapsulated expression(s) are to be passed as
+explicit arguments to |\|\emph{name},
+one will have to find an alternative way to pass \emph{flags}.
+However, it is possible to predefine \emph{flags}
+which can be overridden by further \emph{flags} specified by the user.
The above declarations via |\delim...|
-should be sufficient for almost all situations.
+should be sufficient for most situations.
However, there is an even more flexible way to declare delimiter sets:
+%
\[
-|\DeclareMathDelimiterSet{\|\emph{name}|}[|\emph{narg}|]{|\emph{expr}|}|
+|\DeclareMathDelimiterSet{\|\emph{name}|}[|\emph{narg}|]{|\emph{compositor}|}|
\]
%
The syntax of this command is equivalent to the one of |\newcommand|.
The difference is that the command |\|\emph{name} first looks
-for the optional size modifier \emph{size} as
-described above in \secref{sec:delimcommands}.
-It remembers the desired size for evaluating the macro \emph{expr}.
+for the \emph{flags} argument as
+described above in \secref{sec:inline}.
+It remembers the desired size for evaluating
+the macro expression \emph{compositor}.
Then it parses the arguments as if the command
was declared by |\newcommand|.
-As usual, the macro \emph{expr} contains the command arguments
+As usual, the macro expression \emph{compositor} contains the command arguments
specified by |#1|, |#2|, \ldots. Note that these should
be encapsulated in groups |{#1}|, |{#2}|, \ldots,
in order to prevent them from overwriting definitions
@@ -598,16 +910,108 @@ It should also contain the desired math delimiters
specified by:
%
\[
-|\selectdelim[|\emph{class}|]{|\emph{delim}|}|
+\begin{aligned}
+&|\selectdeliml|[|*|]|{|\emph{delim}|}|
+\\
+&|\selectdelim[|\emph{class}|]|[|*|]|{|\emph{delim}|}|
+\\
+&|\selectdelimr|[|*|]|{|\emph{delim}|}|
+\end{aligned}
\]
%
+The three commands must be in proper sequence
+starting with |\selectdeliml| followed by arbitrarily many
+|\selectdelim| and terminated by |\selectdelimr|.
+The math classes \emph{class} and starred variants
+are defined analogously to \secref{sec:inline}.
Here, the sizes are adjusted automatically
-according to the previously specified modifier \emph{size}.
-The math classes must be in proper sequence,
-i.e.\ the first and last ones must be |l| and |r|, respectively,
-while the intermediate ones can be anything by |l| and |r|,
-see \secref{sec:delimcommands}.
+according to the previously specified modifier.
+
+Picking out individual delimiters from a set
+declared by |\DeclareMathDelimiterSet|
+cannot be achieved automatically.
+Instead, a selector method may be specified manually (where needed) by:
+%
+\[
+\begin{aligned}
+&|\DeclareMathDelimiterSel{\|\emph{name}|}|
+\\
+&| {\selectdeliml{|\emph{l}|}|[|\||or\selectdelim{|\emph{m}|}|\ldots]|}|
+\\
+&| {\selectdelimr{|\emph{r}|}}|
+\end{aligned}
+\]
+%
+As many intermediate delimiters as needed can be specified
+at the end of the first argument; each one must start with `|\||or|'.
+
+\makeatletter
+For example, one might declare a set of double square brackets
+$[\kern-0.06\big@size[*]\kern-0.06\big@size]$ using:
+\makeatother
+%
+\[
+\begin{aligned}
+&|\DeclareMathDelimiterSet{\dsb}[1]|
+\\
+&| {\selectdeliml{[}\kerndelim{-1.75}\selectdelim[o]{[}{#1}|
+\\
+&| \selectdelim[o]{]}\kerndelim{-1.75}\selectdelimr{]}}|
+\end{aligned}
+\]
+%
+Here, the command |\kerndelim{-1.75}| reduces the spacing
+between the two square brackets by approximately 1.75\,mu in default size.
+This could be used for:
+%
+\[
+\makeatletter
+|\dsb^4{\dsb^3{\dsb^2{\dsb^1{\dsb{*}}}}}|
+\to
+\Biggl[\kern-0.20\big@size\Biggl[
+\biggl[\kern-0.16\big@size\biggl[
+\Bigl[\kern-0.12\big@size\Bigl[
+\bigl[\kern-0.08\big@size\bigl[
+[\kern-0.06\big@size[*
+]\kern-0.06\big@size]
+\bigr]\kern-0.08\big@size\bigr]
+\Bigr]\kern-0.12\big@size\Bigr]
+\biggr]\kern-0.16\big@size\biggr]
+\Biggr]\kern-0.20\big@size\Biggr],
+\quad
+|\dsb*|\ldots\to
+\left[\kern-0.12\big@size\middle[\frac{x}{y}
+\middle]\kern-0.12\big@size\right]
+\makeatother
+\]
+%
+An appropriate selector method for displaying individual
+delimiters reads:
+%
+\[
+\begin{aligned}
+&|\DeclareMathDelimiterSel{\dsb}|
+\\
+&| {\selectdeliml{[}\kerndelim{-1.75}\selectdelim[o]{[}}|
+\\
+&| {\selectdelim[o]]\kerndelim{-1.75}\selectdelimr{]}}|
+\end{aligned}
+\]
+Finally, towards a very flexible manual composition
+of delimiter sets, there is the macro:
+%
+\[
+|\parsedelimflags{|\emph{compositor}|}{|\emph{selector}|}|\emph{flags}
+\]
+%
+It parses the modifier flags as described in \secref{sec:flags}.
+The argument \emph{compositor} is code that displays the
+composited delimiter set whereas \emph{selector} is a macro
+that displays the delimiter number |\selecteddelim| of the set.
+The \emph{flags} follow immediately and should be terminated by
+an opening brace `|{|', the terminating flag `|.|'
+or a delimiter selection flag.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Default Declarations}
@@ -617,30 +1021,34 @@ The package predefines four commonly used sets of delimiters:
%
\begin{itemize}
\item
-|\brk[|\emph{type}|]|\emph{size}|{|\emph{expr}|}| represents
+|\brk[|\emph{type}|]|\emph{flags}|{|\emph{expr}|}| represents
a standard bracket around a single expression \emph{expr}.
The type of bracket can be specified by the optional
argument \emph{type}:
+%
\[
\text{\emph{empty} or |[r]|: round }(x),\quad
\text{|[s]|: square }[x],\quad
\text{|[c]|: curly }\{x\},\quad
\text{|[a]|: angle }\langle x\rangle
\]
+%
\item
-|\eval[|\emph{type}|]|\emph{size}|{|\emph{expr}|}| represents
+|\eval[|\emph{type}|]|\emph{flags}|{|\emph{expr}|}| represents
evaluation of a functional expression \emph{expr}.
The type of bracket can be specified by the optional
argument \emph{type}:
+%
\[
\text{\emph{empty} or |[v]|: }f(x)\vert_{a},\qquad
\text{|[s]|: }[f(x)]_{a}^{b}
\]
+%
\item
-|\abs|\emph{size}|{|\emph{expr}|}| represents
+|\abs|\emph{flags}|{|\emph{expr}|}| represents
the absolute value $\lvert\emph{expr}\rvert$.
\item
-|\norm|\emph{size}|{|\emph{expr}|}| represents
+|\norm|\emph{flags}|{|\emph{expr}|}| represents
the norm $\lVert\emph{expr}\rVert$.
\end{itemize}
%
@@ -651,19 +1059,20 @@ The package also defines some extended sets of delimiters as follows:
%
\begin{itemize}
\item
-|\pair|\emph{size}|{|\emph{expr1}|}{|\emph{expr2}|}| represents
+|\pair|\emph{flags}|{|\emph{expr1}|}{|\emph{expr2}|}| represents
a pair(ing) $(\emph{expr1},\emph{expr2})$.
\item
-|\set|\emph{size}|{|\emph{expr}|}| represents
+|\set|\emph{flags}|{|\emph{expr}|}| represents
the set $\{\emph{expr}\}$.
\item
-|\setcond|\emph{size}|{|\emph{expr}|}{|\emph{cond}|}| represents
+|\setcond|\emph{flags}|{|\emph{expr}|}{|\emph{cond}|}| represents
a set with condition $\{\emph{expr}\vert\emph{cond}\}$.
\item
-|\intv[|\emph{type}|]|\emph{size}|{|\emph{expr1}|}{|\emph{expr2}|}| represents
+|\intv[|\emph{type}|]|\emph{flags}|{|\emph{expr1}|}{|\emph{expr2}|}| represents
an interval from \emph{expr1} to \emph{expr2}.
The in/\hspace{0pt}exclusion of the bounds can be specified by the optional
argument \emph{type}:
+%
\[
\text{\emph{empty} or |[c]|: closed }[a,b],\qquad
\text{|[o]|: open }]a,b[,\qquad
@@ -673,28 +1082,35 @@ argument \emph{type}:
\text{|[r]|: right-open }[a,b[
\end{array}
\]
+%
\item
-|\avg|\emph{size}|{|\emph{expr}|}| represents
+|\avg|\emph{flags}|{|\emph{expr}|}| represents
some average $\langle\emph{expr}\rangle$.
\item
-|\corr|\emph{size}|{|\emph{expr}|}| represents
+|\corr|\emph{flags}|{|\emph{expr}|}| represents
some correlator $\langle\emph{expr}\rangle$.
\item
-|\comm|\emph{size}|{|\emph{expr1}|}{|\emph{expr2}|}| represents
+|\comm|\emph{flags}|{|\emph{expr1}|}{|\emph{expr2}|}| represents
the commutator $[\emph{expr1},\emph{expr2}]$.
\item
-|\acomm|\emph{size}|{|\emph{expr1}|}{|\emph{expr2}|}| represents
+|\acomm|\emph{flags}|{|\emph{expr1}|}{|\emph{expr2}|}| represents
the anti-commutator $\{\emph{expr1},\emph{expr2}\}$.
\item
-|\bra|\emph{size}|{|\emph{expr}|}| represents
+|\bra|\emph{flags}|{|\emph{expr}|}| represents
a bra-vector $\langle\emph{expr}\rvert$ in quantum mechanics.
\item
-|\ket|\emph{size}|{|\emph{expr}|}| represents
+|\ket|\emph{flags}|{|\emph{expr}|}| represents
a ket-vector $\lvert\emph{expr}\rangle$ in quantum mechanics.
\item
-|\setcond|\emph{size}|{|\emph{expr1}|}{|\emph{expr2}|}| represents
+|\braket|\emph{flags}|{|\emph{expr1}|}{|\emph{expr2}|}| represents
a bra-ket contraction $\langle\emph{expr1}\vert\emph{expr2}\rangle$.
+\item
+|\lfrac[|\emph{type}|]|\emph{flags}|{|\emph{expr1}|}{|\emph{expr2}|}| describes
+the linear representation $\emph{expr1}/\emph{expr2}$ of a fraction.
+An optional argument \emph{type} taking values |[r]|, |[s]|, |[c]|, |[a]| encloses the
+fraction in round, square, curly or angle brackets as for |\brk|.
\end{itemize}
+%
The extended definitions need to be activated by
the package option |extdef|, see \secref{sec:packageoptions}.
@@ -707,10 +1123,10 @@ or taste of the user, they can be redefined with |\renewcommand|.
In addition to the |\bigl|, |\bigr| and |\bigm| commands
(as well as their |\Big.|, |\bigg.| and |\Bigg.| counterparts),
-the package defines two additional sets |\bigp| and |\bigb|
+the package defines three additional sets |\bigp|, |\bigb| and |\bigi|
(and counterparts).
-Here |\bigp| implies the math class |\mathpunct|
-and |\bigb| the class |\mathbin|.
+Here |\bigp| implies the math class |\mathpunct|,
+|\bigb| the class |\mathbin| and |\bigi| the class |\mathinner|.
Furthermore, the package overloads the size calculation in the |\big...|
commands to properly account for the math styles in sub/superscripts
@@ -722,7 +1138,8 @@ the package option |scriptstyle|, see \secref{sec:packageoptions}.
\subsection{Package Options}
\label{sec:packageoptions}
-Options can be passed to the package by
+Options can be passed to the package by:
+%
\[
|\usepackage[|\emph{opts}|]{delimset}|
\qquad
@@ -735,17 +1152,17 @@ Here \emph{opts} is a comma-separated list of the available options:
%
\begin{itemize}
\item
-|stddef|[|=true|$\vert$|false|]
+|stddef|[|=true|\textbar|false|]
controls the activation of standard delimiter definitions specified in
\secref{sec:defaultcommands}.
If no value is given |true| is assumed; initially set to |true|.
\item
-|extdef|[|=true|$\vert$|false|]
+|extdef|[|=true|\textbar|false|]
controls the activation of extended delimiter definitions specified in
\secref{sec:defaultcommands}.
If no value is given |true| is assumed; initially set to |false|.
\item
-|scriptstyle|[|=true|$\vert$|false|]
+|scriptstyle|[|=true|\textbar|false|]
controls the overwriting of size modifiers explained
in \secref{sec:auxcommands}.
If no value is given |true| is assumed; initially set to |true|.
@@ -758,7 +1175,7 @@ If no value is given |true| is assumed; initially set to |true|.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Copyright}
-Copyright \copyright{} 2016--2018 Niklas Beisert
+Copyright \copyright{} 2016--2024 Niklas Beisert
This work may be distributed and/or modified under the
conditions of the \LaTeX{} Project Public License, either version 1.3
@@ -808,7 +1225,7 @@ distribution, e.g.\ \textit{texmf-root}|/tex/latex/delimset|.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Interaction with CTAN Packages}
-The package relies on other packages:
+The package is related to other packages available at CTAN:
\begin{itemize}
\item
This package relies on some functionality of the package \textsf{amsmath}
@@ -820,24 +1237,63 @@ This package uses the package \textsf{keyval} from the \textsf{graphics} bundle
to process optional arguments to the package options.
Compatibility with the \textsf{keyval} package
has been tested with v1.15 (2014/10/28).
+\item
+The package \textsf{icomma} modifies the spacing behaviour
+of the comma character in math mode
+which leads to inadequate spacing when it is used as a middle delimiter.
+To achieve proper spacing in sample code,
+use |{[p]*,}| rather than |{*,}|.
+The extended commands |\intv|, |\comm|, |\acomm| and |\pair|
+are compatible with the \textsf{icomma} package
+has been tested with v2.0 (2002/03/10).
\end{itemize}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%\subsection{Feature Suggestions}
-% specify width of null delimiter?
-% automatic nesting of bracket types?
% make optional arguments work for DeclareMathDelimiterSet?
-% add pfrac for fraction a/b in text mode
+% (must go before parsing, but how to process and react?)
+% make unadjusted size have right height
+% automatic nesting of bracket types? -> depth stack?
% handle cramped style properly (perhaps impossible)
-% outer decorations for delimiters e.g. _y<a,b>_x
-% freestyle delimiter with size adjustment replacement \size{\rangle}_x
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Revision History}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\paragraph{v2.0:} 2024/07/17
+
+\begin{itemize}
+\item
+option to display individual delimiters
+and to store them in global registers across blocks
+(columns, lines, etc.)
+\item
+more general handling of unadjusted-size delimiters
+\item
+more general size adjustments
+\item
+added inner math class for intermediate delimiters
+\item
+added flag to enclose by open/close and inner math class
+\item
+added flag to display phantom delimiters
+\item
+selected size accessible by |\delimsize|
+and add proportional kerning by |\kerndelim|.
+\item
+added extended definition |\lfrac| for plain inline fractions
+\item
+null delimiter now properly has zero width for variable size
+\item
+internal mechanisms revised
+\item
+compatibility with \textsf{icomma} package
+(thanks to Olivier Godin for pointing out the issue)
+\end{itemize}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\paragraph{v1.1:} 2018/12/30
\begin{itemize}
@@ -914,11 +1370,11 @@ standard definitions
sizes for default brackets:
% \begin{macrocode}
\[
-\brk0{x},\quad
-\brk1{x},\quad
-\brk2{x},\quad
-\brk3{x},\quad
-\brk4{x}
+\brk^0{x},\quad
+\brk^1{x},\quad
+\brk^2{x},\quad
+\brk^3{x},\quad
+\brk^4{x}
\]
% \end{macrocode}
@@ -935,7 +1391,7 @@ styles for default brackets:
nested brackets:
% \begin{macrocode}
\[
-\brk[c]2{\brk[s]!{\brk{ax+b}x+c}x+d}
+\brk[c]^2{\brk[s]!{\brk{ax+b}x+c}x+d}
\]
% \end{macrocode}
@@ -952,7 +1408,7 @@ default absolute value, norm and default evaluations:
outer delimiter spacing:
% \begin{macrocode}
\begin{align*}
-&\square\brk0{x}\square,&&\square\brk1{A^k}\square,
+&\square\brk^0{x}\square,&&\square\brk^1{A^k}\square,
\\
&\square\brk*{x}\square,&&\square\brk*{A^k}\square
\end{align*}
@@ -969,7 +1425,7 @@ e^{\brk!{ax+b}}
delimiter declaration:
% \begin{macrocode}
\DeclareMathDelimiterSet{\braket}[2]
- {\selectdelim[l]<#1\selectdelim|#2\selectdelim[r]>}
+ {\selectdeliml<#1\selectdelim|#2\selectdelimr>}
\[
\braket!{\psi}{\psi},
\quad
@@ -988,32 +1444,36 @@ conditional set, alternative layouts:
% \begin{macrocode}
\[
\delimpair\{{[m]|}\}!{2n}{n\in\mathbb{Z}},
-\qquad
+\quad
\delimpair\{{[b]|}\}!{2n}{n\in\mathbb{Z}},
-\qquad
+\quad
+\delimpair\{{[i]|}\}!{2n}{n\in\mathbb{Z}},
+\quad
\delimpair\{{[p]|}\}!{2n}{n\in\mathbb{Z}},
-\qquad
+\quad
\delimpair\{|\}!{2n}{n\in\mathbb{Z}},
-\qquad
-\delimpair\{{[.];}\}!{2n}{n\in\mathbb{Z}}
+\quad
+\delimpair\{{*;}\}!{2n}{n\in\mathbb{Z}}
\]
conditional set, alternative layouts with variable size:
\[
\delimpair\{{[m]|}\}*{2n}{n\in\mathbb{Z}\big.},
-\qquad
+\quad
\delimpair\{{[b]|}\}*{2n}{n\in\mathbb{Z}\big.},
-\qquad
+\quad
+\delimpair\{{[i]|}\}*{2n}{n\in\mathbb{Z}\big.},
+\quad
\delimpair\{{[p]|}\}*{2n}{n\in\mathbb{Z}\big.},
-\qquad
+\quad
\delimpair\{|\}*{2n}{n\in\mathbb{Z}\big.},
-\qquad
-\delimpair\{{[.];}\}*{2n}{n\in\mathbb{Z}\big.}
+\quad
+\delimpair\{{*;}\}*{2n}{n\in\mathbb{Z}\big.}
\]
% \end{macrocode}
delimiter definition:
% \begin{macrocode}
-\newcommand{\comm}{\delimpair[{[.],}]}
+\newcommand{\comm}{\delimpair[{*,}]}
\[
\comm!{\comm{A}{B}}{C}
+\comm!{\comm{B}{C}}{A}
@@ -1024,7 +1484,7 @@ delimiter definition:
alternative representation:
% \begin{macrocode}
-\renewcommand{\comm}{\delimpair[{[.];}]}
+\renewcommand{\comm}{\delimpair[{*;}]}
\[
\comm!{\comm{A}{B}}{C}
+\comm!{\comm{B}{C}}{A}
@@ -1033,6 +1493,31 @@ alternative representation:
\]
% \end{macrocode}
+display individual delimiters of a set:
+% \begin{macrocode}
+\renewcommand{\braket}{\delimpair<|>}
+\[
+\braket{A}{B}
+\to \braket( A \braket| B \braket),
+\quad
+\braket*( A\big. \braket*| B_{} \braket*),
+\quad
+\braket^1( A \braket^3| B \braket^2)
+\]
+% \end{macrocode}
+
+placing indices before a bracket
+(does not work in variable-size mode because
+the final size is not available for the enclosed expressions):
+% \begin{macrocode}
+\DeclareMathDelimiterSet{\quadindex}[5]
+ {\selectdeliml.^{#2}_{#3}\mathord{}\selectdelim[o][
+ {#1}\selectdelim[o]]^{#4}_{#5}\selectdelimr.}
+\[
+\quadindex^2{\frac{x}{y}}{1}{2}{3}{4}
+\]
+% \end{macrocode}
+
% end of document body:
% \begin{macrocode}
\end{document}
@@ -1057,6 +1542,7 @@ alternative representation:
% if not yet present.
% \textsf{amsmath} is used for basic delimiter size functionality.
% \textsf{keyval} is used for extended options processing.
+%
% \begin{macrocode}
\RequirePackage{amsmath}
\RequirePackage{keyval}
@@ -1067,6 +1553,7 @@ alternative representation:
%
% The package has some boolean \textsf{keyval} options
% which can be set to |true| or |false|.
+%
% \begin{macrocode}
\newif\ifdlm@std\dlm@stdtrue
\newif\ifdlm@ext\dlm@extfalse
@@ -1083,7 +1570,7 @@ alternative representation:
% \end{macrocode}
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% \paragraph{Internal Definitions.}
+% \paragraph{Improved Size Adjustments.}
%
% Overwrite the \textsf{amsmath} command |\bBigg@|
% to select the size according to the present math style
@@ -1105,102 +1592,269 @@ alternative representation:
\fi
% \end{macrocode}
-% Define punctuation marks (|\bigp|, etc.)
-% and binary operators (|\bigb|, etc.).
+% Define punctuation marks (|\bigp|, etc.),
+% binary operators (|\bigb|, etc.)
+% and inner class (|\bigi|, etc.).
%
% \begin{macrocode}
-\newcommand{\bigp}{\mathpunct\big}
-\newcommand{\Bigp}{\mathpunct\Big}
-\newcommand{\biggp}{\mathpunct\bigg}
-\newcommand{\Biggp}{\mathpunct\Bigg}
-\newcommand{\bigb}{\mathbin\big}
-\newcommand{\Bigb}{\mathbin\Big}
-\newcommand{\biggb}{\mathbin\bigg}
-\newcommand{\Biggb}{\mathbin\Bigg}
+\providecommand{\bigp}{\mathpunct\big}
+\providecommand{\Bigp}{\mathpunct\Big}
+\providecommand{\biggp}{\mathpunct\bigg}
+\providecommand{\Biggp}{\mathpunct\Bigg}
+\providecommand{\bigb}{\mathbin\big}
+\providecommand{\Bigb}{\mathbin\Big}
+\providecommand{\biggb}{\mathbin\bigg}
+\providecommand{\Biggb}{\mathbin\Bigg}
+\providecommand{\bigi}{\mathinner\big}
+\providecommand{\Bigi}{\mathinner\Big}
+\providecommand{\biggi}{\mathinner\bigg}
+\providecommand{\Biggi}{\mathinner\Bigg}
% \end{macrocode}
-% Define size selectors for standard size (|dlm@norm|),
-% variable size (|dlm@var|).
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Size Adjustment Definitions.}
+%
+% The macro |\dlm@setvar| enables variable size,
+% the macro |\dlm@setsize| sets a fixed size.
+% Delimiter sizes are implented by |\dlm@big@|.
+% The macro |\kerndelim| adds some kerning proportional
+% to the chosen fixed size of the delimiters
+% (the spacing is merely an approximation,
+% and it does not actually scale for flexible size).
+%
+% \begin{macrocode}
+\newlength\delimsize
+\newcommand{\dlm@setvar}{\let\dlm@ifvar\@firstoftwo\delimsize1.5\big@size}
+\newcommand{\dlm@setsize}[1]{\let\dlm@ifvar\@secondoftwo%
+ \delimsize#1\big@size\advance\delimsize by\big@size\delimsize0.5\delimsize}
+\newcommand{\dlm@setabssize}[1]{\let\dlm@ifvar\@secondoftwo\delimsize#1\relax}
+\newcommand{\dlm@big@}[1]{{\mathchoice%
+ {\dlm@big@choice{\displaystyle}{1}{#1}}%
+ {\dlm@big@choice{\textstyle}{1}{#1}}%
+ {\dlm@big@choice{\scriptstyle}{0.7}{#1}}%
+ {\dlm@big@choice{\scriptscriptstyle}{0.5}{#1}}}}
+\newcommand{\dlm@big@choice}[3]{\@mathmeasure\z@{\nulldelimiterspace\z@}%
+ {#1\left#3\vcenter to#2\delimsize{}\right.}\box\z@}
+\newcommand{\kerndelim}[1]{{\delimsize#1\delimsize%
+ \mkern\muexpr1.2mu*\delimsize/\big@size\relax}}
+% \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Math Classes Processing.}
+%
+% Define class selectors for fixed and unadjusted sizes.
%
% \begin{macrocode}
+\newcommand{\dlm@big}[2]{\dlm@plain{#1}{\dlm@big@#2}}
+\newcommand{\dlm@plain}[2]{\dlm@class{#1}{\dlm@phantom{#2}}}
\newcommand{\dlm@class}[1]{\csname dlm@class@#1\endcsname}
-\newcommand{\dlm@class@}{}
-\newcommand{\dlm@class@l}{\mathopen}
-\newcommand{\dlm@class@r}{\mathclose}
-\newcommand{\dlm@class@o}{\mathopen}
-\newcommand{\dlm@class@c}{\mathclose}
-\newcommand{\dlm@class@m}{\mathrel}
-\newcommand{\dlm@class@p}{\mathpunct}
-\newcommand{\dlm@class@b}{\mathbin}
-\newcommand{\dlm@norm}[1]{\dlm@class{#1}\bBigg@{0.0}}
-\newcommand{\dlm@big}[1]{\dlm@class{#1}\big}
-\newcommand{\dlm@Big}[1]{\dlm@class{#1}\Big}
-\newcommand{\dlm@bigg}[1]{\dlm@class{#1}\bigg}
-\newcommand{\dlm@Bigg}[1]{\dlm@class{#1}\Bigg}
+\let\dlm@class@\@firstofone
+\let\dlm@class@o\mathord
+\let\dlm@class@c\mathord
+\let\dlm@class@p\mathpunct
+\let\dlm@class@i\mathinner
+\let\dlm@class@b\mathbin
+\let\dlm@class@m\mathrel
+% \end{macrocode}
+
+% Define class selector for variable size.
+% The macro |\dlm@var@null| removes the extra space from
+% variable-size null delimiters
+% (|\left.|, |\middle.| and |\right.| apply the value
+% of |\nulldelimiterspace| only at the end of math processing,
+% even across blocks).
+% The macro |\dlm@var@kern| applies kerning unless in the script styles.
+%
+% \begin{macrocode}
+\newcommand{\dlm@var@null}[1]{\if.#1\kern-\nulldelimiterspace\fi}
+\newcommand{\dlm@var@kern}[1]{\nonscript\mkern#1}
\newcommand{\dlm@var}[1]{\csname dlm@var@#1\endcsname}
-\newcommand{\dlm@var@}[1]{\middle#1}
-\newcommand{\dlm@var@l}[1]{\mathopen{}\mathclose\bgroup\left#1}
-\newcommand{\dlm@var@r}[1]{\right#1\egroup}
-\newcommand{\dlm@var@o}[1]{\mathopen{}\middle#1\mathopen{}}
-\newcommand{\dlm@var@c}[1]{\mathclose{}\middle#1\mathclose{}}
-\newcommand{\dlm@var@m}[1]{\mathrel{}\middle#1\mathrel{}}
-\newcommand{\dlm@var@p}[1]{\middle#1\mathpunct{}}
-\newcommand{\dlm@var@b}[1]{\mathbin{}{}\mkern-\medmuskip%
- \middle#1\mkern-\medmuskip{}\mathbin{}}
+\newcommand{\dlm@var@}[1]{\dlm@var@null#1\middle#1}
+\let\dlm@var@o\dlm@var@
+\let\dlm@var@c\dlm@var@
+\newcommand{\dlm@var@p}[1]{\dlm@var@#1\dlm@var@kern\thinmuskip}
+\newcommand{\dlm@var@i}[1]{\dlm@var@kern\thinmuskip%
+ \dlm@var@#1\dlm@var@kern\thinmuskip}
+\newcommand{\dlm@var@b}[1]{\dlm@var@kern\medmuskip%
+ \dlm@var@#1\dlm@var@kern\medmuskip}
+\newcommand{\dlm@var@m}[1]{\dlm@var@kern\thickmuskip%
+ \dlm@var@#1\dlm@var@kern\thickmuskip}
+% \end{macrocode}
+
+% Definitions for selecting outer math class
+% |\mathopen|+|\mathclose| vs. |\mathinner|.
+%
+% \begin{macrocode}
+\newcommand{\dlm@open@i}{\mathinner{}\mathclose{}\mathopen}
+\newcommand{\dlm@close@i}{\mathclose{}\mathopen{}\mathinner}
+\newcommand{\dlm@inner@oc}{\mathopen{}\mathclose}
+\newcommand{\dlm@enclose@openclose}{%
+ \let\dlm@open\mathopen\let\dlm@close\mathclose\let\dlm@inner\dlm@inner@oc}
+\newcommand{\dlm@enclose@inner}{%
+ \let\dlm@open\dlm@open@i\let\dlm@close\dlm@close@i\let\dlm@inner\mathinner}
+% \end{macrocode}
+
+% Definitions for selecting inline vs. block insertion.
+%
+% \begin{macrocode}
+\newcommand{\dlm@inline@l}[1]{\dlm@open{#1}}
+\newcommand{\dlm@inline@r}[1]{\dlm@close{#1}}
+\newcommand{\dlm@block@l}[1]{\dlm@inner\bgroup\mathopen{#1}}
+\newcommand{\dlm@block@r}[1]{\mathclose{#1}\egroup}
+\newcommand{\dlm@enclose@inline}{%
+ \let\dlm@class@l\dlm@inline@l\let\dlm@class@r\dlm@inline@r}
+\newcommand{\dlm@enclose@block}{%
+ \let\dlm@class@l\dlm@block@l\let\dlm@class@r\dlm@block@r}
+% \end{macrocode}
+
+% Opening and closing definitions.
+%
+% \begin{macrocode}
+\newcommand{\dlm@plain@l}[1]{\dlm@class@l{\dlm@phantom{#1}}}
+\newcommand{\dlm@plain@r}[1]{\dlm@class@r{\dlm@phantom{#1}}}
+\newcommand{\dlm@big@l}[1]{\dlm@plain@l{\dlm@big@#1}}
+\newcommand{\dlm@big@r}[1]{\dlm@plain@r{\dlm@big@#1}}
+\newcommand{\dlm@var@l}[1]{\dlm@inner\bgroup\dlm@var@null#1\left#1}
+\newcommand{\dlm@var@r}[1]{\right#1\dlm@var@null#1\egroup}
+\newcommand{\dlm@var@pl}[1]{\dlm@var@l.\mathopen{#1}}
+\newcommand{\dlm@var@pr}[1]{\mathclose{#1}\dlm@var@r.}
+% \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Delimiter Storage.}
+%
+% Macros for storing and retrieving delimiter types using global registers.
+%
+% \begin{macrocode}
+\newcommand{\dlm@reg@save@init}[1]{%
+ \xdef#1{\delimsize\the\delimsize}\ifx\dlm@inner\mathinner%
+ \expandafter\gdef\expandafter#1\expandafter{#1\dlm@enclose@inner}\fi}
+\newcommand{\dlm@reg@save}[2]{%
+ \expandafter\dlm@reg@save@init\csname dlm@reg@init@#1\endcsname%
+ \expandafter\gdef\csname dlm@reg@sel@#1\endcsname{#2}}
+\newcommand{\dlm@reg@init}[1]{\csname dlm@reg@init@#1\endcsname}
+\newcommand{\dlm@reg@sel}[1]{\csname dlm@reg@sel@#1\endcsname}
% \end{macrocode}
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% \paragraph{Optional Size Argument Processing.}
+% \paragraph{Flags Processing.}
%
-% Parse the optional argument following |\delim|\ldots\
-% commands to specify the size of delimiters.
-% If the next character in line begins a group (`|{|') it is assumed that
-% there is no optional argument.
-% Otherwise the selected size is written to |\dlm@arg|.
-% Unspecified or unknown sizes default to normal size.
-% Finally, execute the code passed as an explicit argument to |\dlm@parsesize|.
+% The macro |\parsedelimflags| parses the optional argument(s)
+% following |\delim|\ldots\ commands to adjust the presentation.
+% Parsing is terminated if the next character in line begins a group (`|{|')
+% and the delimiter set is composed by executing argument |#1|.
+% A size flag is stored and parsing continues.
+% A delimiter selector flag immediately displays the desired delimiter
+% by executing argument |#2|.
+% Unknown flags produce an error message.
%
% \begin{macrocode}
-\newcommand{\dlm@parsesize}[1]{\@ifnextchar\bgroup%
- {\dlm@parsesize@{#1}{0}}{\dlm@parsesize@{#1}}}
-\newcommand{\dlm@parsesize@}[2]{\let\dlm@arg\dlm@norm%
- \if0#2\let\dlm@arg\dlm@norm\fi%
- \if1#2\let\dlm@arg\dlm@big\fi%
- \if+#2\let\dlm@arg\dlm@big\fi%
- \if!#2\let\dlm@arg\dlm@big\fi%
- \if2#2\let\dlm@arg\dlm@Big\fi%
- \if3#2\let\dlm@arg\dlm@bigg\fi%
- \if4#2\let\dlm@arg\dlm@Bigg\fi%
- \if*#2\let\dlm@arg\dlm@var\fi%
- #1}
+\newcommand{\parsedelimflags}{\dlm@setsize{0.6}\let\dlm@phantom\@firstofone%
+ \dlm@enclose@openclose\dlm@enclose@inline\dlm@parseflags}
+\newcommand{\dlm@parseflags}[2]{%
+ \@ifnextchar\bgroup{#1}{\dlm@parseflag{#1}{#2}}}
+\newcommand{\dlm@parseflag}[3]{\begingroup%
+ \ifcsname dlm@parseflag@\string#3\endcsname%
+ \def\dlm@do{\csname dlm@parseflag@\string#3\endcsname{#1}{#2}}\else%
+ \def\dlm@do{\PackageError{delimset}%
+ {unknown delimiter set flag `\string#3'}{}#1}%
+ \fi\expandafter\endgroup\dlm@do}
+\newcommand{\dlm@parsedef}[3]{%
+ \expandafter\def\csname dlm@parseflag@\string#1\endcsname ##1##2#2{#3}}
% \end{macrocode}
+%
% Note that the delimited expression should be contained within a group
% such that nested delimiters will not overwrite the outer size definition.
+% Flags to adjust size.
+% Note that sizes 0 and 1 amount to 0.96 and 1.2 times
+% the current empty math box height.
+%
+% \begin{macrocode}
+\dlm@parsedef{!}{}{\dlm@setsize{1}\dlm@parseflags{#1}{#2}}
+\dlm@parsedef{+}{}{\dlm@setsize{1}\dlm@parseflags{#1}{#2}}
+\dlm@parsedef{0}{}{\dlm@setsize{0.6}\dlm@parseflags{#1}{#2}}
+\dlm@parsedef{1}{}{\dlm@setsize{1}\dlm@parseflags{#1}{#2}}
+\dlm@parsedef{2}{}{\dlm@setsize{2}\dlm@parseflags{#1}{#2}}
+\dlm@parsedef{3}{}{\dlm@setsize{3}\dlm@parseflags{#1}{#2}}
+\dlm@parsedef{4}{}{\dlm@setsize{4}\dlm@parseflags{#1}{#2}}
+\dlm@parsedef{^}{#3}{\dlm@setsize{#3}\dlm@parseflags{#1}{#2}}
+\dlm@parsedef{_}{#3}{\dlm@setabssize{#3}\dlm@parseflags{#1}{#2}}
+\dlm@parsedef{*}{}{\dlm@setvar\dlm@parseflags{#1}{#2}}
+% \end{macrocode}
+
+% Flags to select individual delimiters.
+%
+% \begin{macrocode}
+\dlm@parsedef{(}{}{\def\selecteddelim{0}#2}
+\dlm@parsedef{|}{}{\def\selecteddelim{1}#2}
+\dlm@parsedef{,}{}{\def\selecteddelim{1}#2}
+\dlm@parsedef{)}{}{\def\selecteddelim{9}#2}
+\dlm@parsedef{?}{#3}{\def\selecteddelim{#3}#2}
+% \end{macrocode}
+
+% Flags to access registers.
+%
+% \begin{macrocode}
+\dlm@parsedef{[}{}{\dlm@reg@save{.}{#2}\def\selecteddelim{0}#2}
+\dlm@parsedef{]}{}{\dlm@reg@init{.}\def\selecteddelim{9}\dlm@reg@sel{.}}
+\dlm@parsedef{>}{#3}{\dlm@reg@save{#3}{#2}}
+\dlm@parsedef{<}{#3}{\dlm@reg@init{#3}\dlm@parseflags%
+ {\PackageError{delimset}{must select delimiter}{}}{\dlm@reg@sel{#3}}}
+% \end{macrocode}
+
+% Further flags.
+%
+% \begin{macrocode}
+\dlm@parsedef{.}{}{#1}
+\dlm@parsedef{:}{}{\dlm@enclose@block\dlm@parseflags{#1}{#2}}
+\dlm@parsedef{'}{}{\dlm@enclose@openclose\dlm@parseflags{#1}{#2}}
+\dlm@parsedef{"}{}{\dlm@enclose@inner\dlm@parseflags{#1}{#2}}
+\dlm@parsedef{-}{}{\let\dlm@phantom\phantom\dlm@parseflags{#1}{#2}}
+% \end{macrocode}
+
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% \paragraph{Size Selection.}
+% \paragraph{Delimiter Display.}
%
-% The command |\selectdelim| reproduces the delimiter in the second argument
-% using the math class given in the first argument
-% using the previously selected size stored in |\dlm@arg|.
-% It appends the class identifier to the command stored in |\dlm@arg|
-% and calls the latter with the delimiter as the argument.
+% The command |\selectdelim| reproduces the delimiter in argument |#2|
+% using the math class given in argument |#1| and the previously stored size.
% If the class identifier is `|.|', just return the delimiter argument as is.
+% The commands |\selectdeliml| and |\selectdelimr|
+% implement the left and right delimiter classes, respectively.
+%
% \begin{macrocode}
-\newcommand{\selectdelim}[2][]{\if.#1#2\else\dlm@arg{#1}#2\fi}
+\newcommand{\selectdelim}[1][]{\begingroup\def\dlm@do{\@ifstar{\dlm@plain{#1}}%
+ {\dlm@ifvar{\dlm@var{#1}}{\dlm@big{#1}}}}%
+ \if.#1\let\dlm@do\@empty\fi\expandafter\endgroup\dlm@do}
+\newcommand{\selectdeliml}{\@ifstar%
+ {\dlm@ifvar\dlm@var@pl\dlm@plain@l}{\dlm@ifvar\dlm@var@l\dlm@big@l}}
+\newcommand{\selectdelimr}{\@ifstar%
+ {\dlm@ifvar\dlm@var@pr\dlm@plain@r}{\dlm@ifvar\dlm@var@r\dlm@big@r}}
% \end{macrocode}
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \paragraph{Declaration of New Delimiter Commands.}
%
-% Declares a new set of delimiters as the macro `|\|\emph{name}'.
-% This macro checks for an optional size argument and stores it in |\dlm@arg|.
+% The macro |\DeclareMathDelimiterSet| declares a new set of delimiters
+% as the macro `|\|\emph{name}'.
+% This macro checks for optional flags and stores the desired size.
% It then passes on to a second macro `|\dlm@dcl@|\emph{name}',
% which takes the actual code.
+% If the flags select an individual delimiter,
+% the macro `|\dlm@sel@|\emph{name}' is called instead.
+% The latter macro should be defined via |\DeclareMathDelimiterSel|
+% such that it produces the desired delimiter number |\selecteddelim|.
+%
% \begin{macrocode}
\newcommand{\DeclareMathDelimiterSet}[1]{\expandafter\dlm@declare%
\csname dlm@dcl@\expandafter\@gobble\string#1\endcsname{#1}}
-\def\dlm@declare#1#2{\newcommand{#2}{\dlm@parsesize{#1}}\newcommand{#1}}
+\def\dlm@declare#1#2{\expandafter\dlm@declare@%
+ \csname dlm@sel@\expandafter\@gobble\string#2\endcsname{#1}{#2}}
+\def\dlm@declare@#1#2#3{\newcommand{#3}{\parsedelimflags{#2}{#1}}%
+ \providecommand{#1}{}\newcommand{#2}}
+\newcommand{\DeclareMathDelimiterSel}[3]{\expandafter\def%
+ \csname dlm@sel@\expandafter\@gobble\string#1\endcsname%
+ {\ifcase\selecteddelim#2\else#3\fi}}
% \end{macrocode}
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1212,29 +1866,51 @@ alternative representation:
% are processed \emph{before} the optional size modifier.
%
% |\delim| is used for a single delimited expression.
+%
% \begin{macrocode}
-\newcommand{\delim}[2]
- {\dlm@parsesize{\dlm@dcl@delim{#1}{#2}}}
-\newcommand{\dlm@dcl@delim}[3]
- {\selectdelim[l]#1{#3}\selectdelim[r]#2}
+\newcommand{\delim}[2]{%
+ \parsedelimflags{\dlm@dcl@delim{#1}{#2}}{\dlm@sel@delim{#1}{#2}}}
+\newcommand{\dlm@dcl@delim}[3]{%
+ \selectdeliml#1{#3}\selectdelimr#2}
+\newcommand{\dlm@sel@delim}[2]{\ifcase\selecteddelim\selectdeliml#1%
+ \else\selectdelimr#2\fi}
% \end{macrocode}
% |\delimpair| is used for two delimited expressions separated
% by an intermediate delimiter.
+%
% \begin{macrocode}
-\newcommand{\delimpair}[3]
- {\dlm@parsesize{\dlm@dcl@delimpair{#1}{#2}{#3}}}
-\newcommand{\dlm@dcl@delimpair}[5]
- {\selectdelim[l]#1{#4}\selectdelim#2{#5}\selectdelim[r]#3}
+\newcommand{\delimpair}[3]{%
+ \parsedelimflags{\dlm@dcl@delimpair{#1}{#2}{#3}}%
+ {\dlm@sel@delimpair{#1}{#2}{#3}}}
+\newcommand{\dlm@dcl@delimpair}[5]{%
+ \selectdeliml#1{#4}\selectdelim#2{#5}\selectdelimr#3}
+\newcommand{\dlm@sel@delimpair}[3]{\ifcase\selecteddelim\selectdeliml#1%
+ \or\selectdelim#2\else\selectdelimr#3\fi}
% \end{macrocode}
% |\delimtriple| is used for three delimited expressions separated
% by two intermediate delimiters.
+%
% \begin{macrocode}
-\newcommand{\delimtriple}[4]
- {\dlm@parsesize{\dlm@dcl@delimtriple{#1}{#2}{#3}{#4}}}
-\newcommand{\dlm@dcl@delimtriple}[7]
- {\selectdelim[l]#1{#5}\selectdelim#2{#6}\selectdelim#3{#7}\selectdelim[r]#4}
+\newcommand{\delimtriple}[4]{%
+ \parsedelimflags{\dlm@dcl@delimtriple{#1}{#2}{#3}{#4}}%
+ {\dlm@sel@delimtriple{#1}{#2}{#3}{#4}}}
+\newcommand{\dlm@dcl@delimtriple}[7]{%
+ \selectdeliml#1{#5}\selectdelim#2{#6}\selectdelim#3{#7}\selectdelimr#4}
+\newcommand{\dlm@sel@delimtriple}[4]{\ifcase\selecteddelim\selectdeliml#1%
+ \or\selectdelim#2\or\selectdelim#3\else\selectdelimr#4\fi}
+% \end{macrocode}
+
+% |\usedelim| retrieves a stored delimiter type.
+% The argument `|]|' immediately closes the delimiter set
+% using the default register.
+% Otherwise the desired register must be followed
+% by the delimiter selection flag.
+%
+% \begin{macrocode}
+\newcommand{\usedelim}{\@ifnextchar]{\parsedelimflags{}{}}{\parsedelimflags%
+ {\PackageError{delimset}{must select delimiter}{}}{}<}}
% \end{macrocode}
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1243,17 +1919,18 @@ alternative representation:
% Define some common delimiters (by |providecommand| so as not to
% overwrite previously existing commands).
% This code is activated only if the package option |stddef| is set to |true|.
+%
% \begin{macrocode}
\ifdlm@std
\providecommand{\brk}[1][r]{\begingroup\def\dlm@use{\delim()}%
- \if r#1 \def\dlm@use{\delim()}\fi%
- \if s#1 \def\dlm@use{\delim[]}\fi%
- \if c#1 \def\dlm@use{\delim\{\}}\fi%
- \if a#1 \def\dlm@use{\delim<>}\fi%
+ \if r#1\def\dlm@use{\delim()}\fi%
+ \if s#1\def\dlm@use{\delim[]}\fi%
+ \if c#1\def\dlm@use{\delim\{\}}\fi%
+ \if a#1\def\dlm@use{\delim<>}\fi%
\expandafter\endgroup\dlm@use}
\providecommand{\eval}[1][v]{\begingroup\def\dlm@use{\delim.\rvert}%
- \if v#1 \def\dlm@use{\delim.\rvert}\fi%
- \if s#1 \def\dlm@use{\delim[]}\fi%
+ \if v#1\def\dlm@use{\delim.\rvert}\fi%
+ \if s#1\def\dlm@use{\delim[]}\fi%
\expandafter\endgroup\dlm@use}
\providecommand{\abs}{\delim\lvert\rvert}
\providecommand{\norm}{\delim\lVert\rVert}
@@ -1265,24 +1942,33 @@ alternative representation:
%
% Define some extended delimiters.
% This code is activated only if the package option |extdef| is set to |true|.
+%
% \begin{macrocode}
\ifdlm@ext
-\providecommand{\pair}{\delimpair({[.],})}
+\providecommand{\pair}{\delimpair({[p]*,})}
\providecommand{\set}{\delim\{\}}
\providecommand{\setcond}{\delimpair\{|\}}
-\providecommand{\intv}[1][c]{\begingroup\def\dlm@use{\delimpair[{[.],}]}%
- \if c#1 \def\dlm@use{\delimpair[{[.],}]}\fi%
- \if l#1 \def\dlm@use{\delimpair]{[.],}]}\fi%
- \if r#1 \def\dlm@use{\delimpair[{[.],}[}\fi%
- \if o#1 \def\dlm@use{\delimpair]{[.],}[}\fi%
+\providecommand{\intv}[1][c]{\begingroup%
+ \def\dlm@use{\delimpair[{[p]*,}]}%
+ \if c#1\def\dlm@use{\delimpair[{[p]*,}]}\fi%
+ \if l#1\def\dlm@use{\delimpair]{[p]*,}]}\fi%
+ \if r#1\def\dlm@use{\delimpair[{[p]*,}[}\fi%
+ \if o#1\def\dlm@use{\delimpair]{[p]*,}[}\fi%
\expandafter\endgroup\dlm@use}
\providecommand{\avg}{\delim<>}
\providecommand{\corr}{\delim<>}
-\providecommand{\comm}{\delimpair[{[.],}]}
-\providecommand{\acomm}{\delimpair\{{[.],}\}}
+\providecommand{\comm}{\delimpair[{[p]*,}]}
+\providecommand{\acomm}{\delimpair\{{[p]*,}\}}
\providecommand{\bra}{\delim<|}
\providecommand{\ket}{\delim|>}
\providecommand{\braket}{\delimpair<|>}
+\providecommand{\lfrac}[1][]{\begingroup%
+ \def\dlm@use{\delimpair./.}%
+ \if r#1\def\dlm@use{\delimpair(/)}\fi%
+ \if s#1\def\dlm@use{\delimpair[/]}\fi%
+ \if c#1\def\dlm@use{\delimpair\{/\}}\fi%
+ \if a#1\def\dlm@use{\delimpair</>}\fi%
+ \expandafter\endgroup\dlm@use}
\fi
% \end{macrocode}
diff --git a/macros/latex/contrib/delimset/delimset.ins b/macros/latex/contrib/delimset/delimset.ins
index daf870b5ff..68e41a7242 100644
--- a/macros/latex/contrib/delimset/delimset.ins
+++ b/macros/latex/contrib/delimset/delimset.ins
@@ -2,7 +2,7 @@
\input docstrip.tex
\keepsilent
-% delimset.ins Copyright (C) 2016-2018 Niklas Beisert
+% delimset.ins Copyright (C) 2016-2024 Niklas Beisert
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
@@ -14,7 +14,7 @@
\preamble
-Copyright (C) 2016-2018 Niklas Beisert
+Copyright (C) 2016-2024 Niklas Beisert
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either version 1.3
diff --git a/macros/latex/contrib/delimset/delimset.pdf b/macros/latex/contrib/delimset/delimset.pdf
index b964bea59d..734ebf01db 100644
--- a/macros/latex/contrib/delimset/delimset.pdf
+++ b/macros/latex/contrib/delimset/delimset.pdf
Binary files differ
diff --git a/macros/latex/contrib/doibanner/README.md b/macros/latex/contrib/doibanner/README.md
new file mode 100644
index 0000000000..a28fd46abd
--- /dev/null
+++ b/macros/latex/contrib/doibanner/README.md
@@ -0,0 +1,91 @@
+# doibanner
+
+A LaTeX package to generate DOI banners and links.
+
+The `doibanner` package allows to generate a banner for a declared [digital
+object identifier](https://www.doi.org/the-identifier/what-is-a-doi/) (DOI).
+It provides the `\doibanner` macro, which draws the banner using
+[`TikZ`](https://www.ctan.org/pkg/tikz) and adds a link via
+[`hyperref`](https://www.ctan.org/pkg/hyperref), if desired. Its output can
+be scaled by [`adjustbox`](https://www.ctan.org/pkg/adjustbox) and it might
+look as follows:
+
+![_DOI banner generated with `\doibanner`_](./example/doibanner_example.png "Example generated with doibanner")
+
+Latest release: 2024-07-28 v0.3
+
+
+## Installation
+
+Skip this section, if `doibanner` is already provided in your TeX distribution.
+You should be able to install it [from the CTAN](https://www.ctan.org/pkg/doibanner)
+via your distribution's utility (e.g. the TeX Live Utility).
+
+### Manual installation
+
+You can get the package's source code from the
+[project repository on Codeberg](https://codeberg.org/Cs137/doibanner).
+The repository contains a build script, which allows you to build the required
+files for the `doibanner` package and copy them into your _TeX Directory Structure_
+(TDS) using `l3build`. Ensure that `l3build` is installed on your system and run
+it from the repository's root directory as follows:
+
+```bash
+l3build install --full
+```
+
+The `--full` option ensures that all necessary files are built and installed.
+
+If you do not want to install the package into your TDS, but use it in a
+particular LaTeX project, follow the steps listed below.
+
+1. unpack `doibanner.sty` from the `doibanner.dtx` file
+ - using `l3build` and the `build.lua` script: `l3build unpack`, __or__
+ - directly via the installer file: `pdflatex doibanner.ins`
+2. copy the extracted `doibanner.sty` file into the same directory as your LaTeX sources.
+
+
+## Usage
+
+Please consult the [package documentation](http://mirrors.ctan.org/macros/latex/contrib/doibanner/doibanner.pdf)
+for detailed usage information.
+
+If you have any questions or need assistance, feel free to
+[open an issue on the repository](https://codeberg.org/Cs137/doibanner/issues).
+
+
+## Contributing
+
+Contributions to the `doibanner` package are very welcomed. Feel free to submit
+a [pull request (PR)](https://codeberg.org/Cs137/doibanner/pulls), if you would
+like to contribute to the project. In case you are unfamiliar with the process,
+consult the [forgejo documentation](https://forgejo.org/docs/latest/user/pull-requests-and-git-flow/)
+and follow the steps using this repository instead of the `example` repository.
+
+Create your [pull request (PR)](https://codeberg.org/Cs137/doibanner/pulls) to
+inform that you started working on a contribution. Provide a clear description
+of your envisaged changes and the motivation behind them, prefix the PR's title
+with ``WIP: `` until your changes are finalised.
+
+All kind of contributions are appreciated, whether they are
+bug fixes, new features, or improvements to the documentation.
+
+
+### Contributors
+
+- [Christian Schreinemachers](https://codeberg.org/Cs137)
+- [Marei Peischl](https://chaos.social/@TeXhackse)
+
+
+## Changes
+
+All notable changes to this project are documented in the file
+[`CHANGELOG.md`](https://codeberg.org/Cs137/doibanner/src/branch/main/CHANGELOG.md).
+
+
+## Credits
+
+This package was created and is maintained by Christian Schreinemachers, (C) 2024.
+The source code is hosted on [Codeberg](https://codeberg.org/Cs137/doibanner).
+It is subject to the [LaTeX Project Public License 1.3c](https://www.ctan.org/license/lppl1.3).
+
diff --git a/macros/latex/contrib/doibanner/doibanner.dtx b/macros/latex/contrib/doibanner/doibanner.dtx
new file mode 100644
index 0000000000..e004b53e31
--- /dev/null
+++ b/macros/latex/contrib/doibanner/doibanner.dtx
@@ -0,0 +1,412 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2024 Christian Schreinemachers
+%
+% This work may be distributed and/or modified under the conditions
+% of the LaTeX Project Public License, either version 1.3c of this
+% license or (at your option) any later version. The latest version
+% of this license is in
+%
+% http://www.latex-project.org/lppl.txt
+%
+% and version 1.3c or later is part of all distributions of LaTeX
+% version 2008-05-04 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+% The current maintainer of this work is Christian Schreinemachers.
+%
+% This work consists of the files
+% doibanner.dtx
+% doibanner.ins
+% README.md
+% and the derived files
+% doibanner.sty
+% doibanner.pdf
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \fi
+% \iffalse
+%<package>\NeedsTeXFormat{LaTeX2e}
+%<package>\ProvidesPackage{doibanner}
+%<package> [2024-07-28 v0.3 Generate DOI banners and links]
+%
+%<*driver>
+\documentclass[a4paper]{ltxdoc}
+\usepackage[%
+ pdfusetitle,%
+ hyperindex=false,%
+ pdfsubject={LaTeX package documentation},%
+ pdfkeywords={doibanner, latex, documentation}%
+]{hyperref}
+\usepackage{doibanner}
+\usepackage[toc]{multitoc}
+\usepackage{geometry}
+\usepackage{fancyvrb}
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\DoNotIndex{\adjustbox,\begin,\bfseries,\DeclareKeys,\definecolor,\end,\fill,
+ \fontfamily,\href,\IfBooleanTF,\Large,\NewDocumentCommand,\node,
+ \ProcessKeyOptions,\RequirePackage,\relax,\selectfont,\SetKeys,
+ \sfdefault,\tikzstyle}
+\setcounter{IndexColumns}{2}
+\setlength{\IndexMin}{40ex}
+\setlength{\columnseprule}{.4pt}
+\addtolength{\oddsidemargin}{2cm}
+\addtolength{\textwidth}{-2cm}
+\begin{document}
+ \DocInput{doibanner.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \pagestyle{headings}
+%
+% \newcommand*{\package}[1]{\textsf{#1}}
+% \newcommand*{\opt}[1]{\texttt{#1}}
+% \newcommand*{\default}[1]{(default: \opt{#1})}
+%
+%
+% ^^A -----------------------------
+%
+% \changes{v0.3}{2024-07-28}{%
+% Add package options \opt{width} and \opt{label},
+% fix mistakes,
+% improve documentation,
+% remove unnecessary dependencies}
+% \changes{v0.2}{2024-07-23}{%
+% Initial release,
+% convert into dtx,
+% add documentation,
+% add \opt{urlbase} package option}
+% \changes{v0.1}{2021/05/09}{Initial version}
+%
+% \GetFileInfo{doibanner.sty}
+%
+%
+% ^^A -----------------------------
+%
+% \title{The \package{doibanner} package}
+% \author{Christian Schreinemachers}
+% \date{%
+% Released \filedate\thanks{%
+% \package{doibanner}~\fileversion
+% ~(\href{https://codeberg.org/Cs137/doibanner/releases/tag/\fileversion}{source code})}%
+% }
+% \maketitle
+%
+%
+% ^^A -----------------------------
+%
+% \begin{abstract}
+% The \package{doibanner} package allows to generate a banner for a declared
+% \href{https://www.doi.org/the-identifier/what-is-a-doi/}{digital object identifier}
+% (DOI). It provides the \cs{doibanner} macro, which draws the banner using
+% \package{TikZ} and adds a link via \package{hyperref}, if desired. Its
+% output can be scaled by \package{adjustbox} and it might look as follows:
+% \par\medskip\centering{\doibanner*[width=5cm]{xx.xxxx/yyyyyy.zzzzzzzz}}
+% \end{abstract}
+%
+%
+% ^^A -----------------------------
+%
+% \tableofcontents
+%
+%
+% ^^A -----------------------------
+%
+% \section{Introduction}
+% ^^A
+% I published several documents on \href{https://zenodo.org/}{\emph{Zenodo}},
+% a general-purpose open repository. They offer to register a
+% \href{https://www.doi.org/the-identifier/what-is-a-doi/}{digital object identifier}
+% (DOI) for an entry and download a banner of it. The latter can be added to
+% contents foreseen for the entry, or e.g. when referring to the entry in a
+% slide deck.
+%
+% Since I frequently use such banners in \LaTeX{} documents, I decided to
+% create a package that generates a similar banner and includes a link to the
+% corresponding URL. Additionally, this package eliminates the need to
+% manually download the banner and manage a file that might be used across
+% multiple documents.
+%
+% Due to the motivation, the resulting banner is heavily inspired by the
+% design applied in the banner offered by \emph{Zenodo}. It is drawn using
+% the \package{tikz} package, a link to its URL can be included with
+% \package{hyperref}, and it can be scaled using \package{adjustbox}.
+%
+% The application of this package is not limited to \emph{Zenodo}
+% depositions, it can be used to create a banner for a DOI that can
+% be included in any \LaTeX{} document.
+%
+%
+% ^^A -----------------------------
+%
+% \section{Usage}
+% ^^A
+% Load the package in your document's preamble and specify any of the
+% options described in the next subsection as follows:
+%
+% \begin{quote}
+% \cs{usepackage}\oarg{option(s)}\{doibanner\}
+% \end{quote}
+%
+%
+% ^^A -----------------------------
+%
+% \subsection{Options}
+% ^^A
+% In order to change the default behaviour of this package, declare one
+% or more of the options described in this subsection with your desired
+% value.
+%
+% \DescribeMacro{label=\meta{string}}
+% \default{DOI} specifies the label (left part) of the DOI banner generated
+% by \cs{doibanner}. The widths of the left and right part of the banner
+% are fixed and do currently not take the length of the text displayed on
+% top into account. Consequently, only a short expression should be declared
+% as value for the option \opt{label}.
+%
+% \DescribeMacro{urlbase=\meta{string}}
+% \default{https://doi.org/} specifies the base URL to convert a DOI string
+% into its URL, for normal use cases this does not require any adjustment.
+%
+% \DescribeMacro{width=\meta{dimen}}
+% \default{3.6cm} specifies the total width of the DOI banner generated by
+% \cs{doibanner}. The widths of the individual parts of the banner are
+% fixed and can currently not be changed.
+%
+%
+% ^^A -----------------------------
+%
+% \subsection{Macros}
+% ^^A
+% \subsubsection*{\cs{doibanner}\oarg{dimen}\marg{string}}
+%
+% A DOI banner can be created using the command \cs{doibanner}, which requires
+% a DOI string as argument. Moreover, a \oarg{dimen} option can be defined.
+% The latter specifies the banner's width. If it is not declared, the value
+% of the \opt{width} package option is taken into account \default{3.6cm}.
+%
+% \DescribeMacro{\doibanner}
+% An execution of \cs{doibanner\{xx.xxxx/yyyyyy.zzzzzzzz\}} results in this
+% banner: \doibanner{xx.xxxx/yyyyyy.zzzzzzzz} If a banner with a width of
+% let's say 3\,cm is desired, it can be achieved by specifying the macro option
+% \opt{width} accordingly (\cs{doibanner}\opt{[width=3cm]\{xx.xxxx/yyyyyy.zzzzzzzz\}}):
+% \doibanner[width=3cm]{xx.xxxx/yyyyyy.zzzzzzzz}
+%
+% \DescribeMacro{\doibanner*}
+% The starred version of the command leads to the same banner, but it does
+% not contain a link to the DOI's URL:
+% \doibanner*{xx.xxxx/yyyyyy.zzzzzzzz}
+%
+% \subsubsection*{\cs{doiurl}\marg{string}}
+% ^^A
+% \DescribeMacro{\doiurl}
+% An URL is generated by appending the provided \emph{string} to the string
+% defined as the package option \opt{urlbase}. The resulting link is labelled
+% with the DOI string.
+% A call of \cs{doiurl\{xx.xxxx/yyyyyy.zzzzzzzz\}} results in
+% \doiurl{xx.xxxx/yyyyyy.zzzzzzzz}.
+%
+% \DescribeMacro{\doiurl*}
+% The command is also available as starred version, which prints the full
+% URL instead of the DOI string and does not include a link. Its output for
+% the aforementioned example is as follows:
+% \doiurl*{xx.xxxx/yyyyyy.zzzzzzzz}.
+%
+%
+% ^^A -----------------------------
+%
+% ^^A \section{Known limitations}
+% ^^A ^^A
+% ^^A \begin{itemize}
+% ^^A \item
+% ^^A \end{itemize}
+%
+%
+% ^^A -----------------------------
+%
+% \MaybeStop{
+%
+% \IndexPrologue{%
+% \section{Index}
+% Numbers written in italic refer to the page where the corresponding entry
+% is described; numbers underlined refer to the code line of the definition;
+% numbers in roman refer to the code lines where the entry is used.
+% }
+% \PrintIndex
+%
+% \GlossaryPrologue{%
+% \section{Change History}
+% The changes listed in this section aim to provide a brief overview of the
+% changes introduced into the package \package{doibanner}. The
+% \href{https://codeberg.org/Cs137/doibanner/}{package repository on Codeberg}
+% contains a
+% \href{https://codeberg.org/Cs137/doibanner/src/branch/main/CHANGELOG.md}{changelog file},
+% consult it to read a detailed description of the changes introduced into
+% this package.
+% }
+% \PrintChanges
+%
+% }
+%
+%
+% ^^A -----------------------------
+%
+% \section{Implementation}
+%
+% \subsection{Dependencies}
+% ^^A
+% In order to use \package{doibanner}, the packages
+% \href{https://www.ctan.org/pkg/adjustbox}{\package{adjustbox}},
+% \href{https://www.ctan.org/pkg/hyperref}{\package{hyperref}}, and
+% \href{https://www.ctan.org/pkg/tikz}{\package{tkiz}}
+% are required as package dependencies.
+%
+% \iffalse
+%<*package>
+% \fi
+% \begin{macrocode}
+\RequirePackage{adjustbox}
+\RequirePackage{hyperref}
+\RequirePackage{tikz}
+% \end{macrocode}
+%
+%
+% ^^A -----------------------------
+%
+% \subsection{Constants}
+% ^^A
+% Definition of colours for the banner areas and labels, custom colour
+% definitions are currently not supported.
+% \begin{macrocode}
+\definecolor{leftcolor}{RGB}{82,82,82}
+\definecolor{rightcolor}{RGB}{6,119,183}
+%
+\definecolor{toptextcolor}{RGB}{235,235,235}
+\definecolor{bottomtextcolor}{RGB}{59,59,59}
+% \end{macrocode}
+% ^^A
+% Definition of font and colour for the banner's top and bottom text layers.
+% \begin{macrocode}
+\tikzstyle{toptextstyle} = [
+ font=\fontfamily{\sfdefault}\selectfont\bfseries\Large,toptextcolor]
+\tikzstyle{bottomtextstyle} = [
+ font=\fontfamily{\sfdefault}\selectfont\bfseries\Large,bottomtextcolor]
+% \end{macrocode}
+%
+%
+% ^^A -----------------------------
+%
+% \subsection{Options}
+% ^^A
+% The package options are internally available as \cs{@doibanner@}\meta{option}.
+% \begin{macrocode}
+\DeclareKeys[@doibanner]{
+ label.store = \@doibanner@label,
+ label.usage = load,
+ urlbase.store = \@doibanner@urlbase,
+ urlbase.usage = load,
+ width.store = \@doibanner@width,
+ width.usage = load,
+}
+% \end{macrocode}
+%
+% \subsubsection*{Assignement of default values}
+% \begin{macrocode}
+\SetKeys[@doibanner]{
+ label=DOI,
+ urlbase=https://doi.org/,
+ width=3.6cm,
+}
+% \end{macrocode}
+%
+% \subsubsection*{Processing of package options}
+% \begin{macrocode}
+\ProcessKeyOptions[@doibanner]\relax
+% \end{macrocode}
+%
+%
+% ^^A -----------------------------
+%
+% \subsection{Macros}
+%
+% \changes{v0.2}{2024-07-23}{Remove \cs{doi} macro}
+%
+% \begin{macro}{\doiurl}
+% \changes{v0.2}{2024-07-23}{Remove trailing space}
+% \oarg{dimen}\\
+% The \meta{string} is appended to the package option \opt{urlbase} to
+% generate the URL.
+% \begin{macrocode}
+\NewDocumentCommand\doiurl{s m}{%
+ \IfBooleanTF#1
+ {\@doibanner@urlbase#2}%
+ {\href{\@doibanner@urlbase#2}{#2}}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@doibanner@draw}
+% \changes{v0.3}{2024-07-28}{Rename macro, remove top part}
+% \oarg{dimen}\marg{string}\\
+% Draw the DOI banner including its \opt{label} and \meta{string}, provide
+% \opt{width=\meta{dimen}} to define the banners width as well.
+% \begin{macrocode}
+\NewDocumentCommand\@doibanner@draw{o m}{%
+ \adjustbox{#1}{%
+ \begin{tikzpicture}
+% left part
+ \fill [leftcolor,draw]
+ (1.5,0) --
+ ++(0,.8) {[rounded corners=5] --
+ ++(-1.5,0) --
+ ++(0,-.8)} --
+ cycle
+ {};
+ \node[bottomtextstyle] at (.75,.35) {\@doibanner@label};
+ \node[toptextstyle] at (.75,.4) {\@doibanner@label};
+% right part
+ \fill [rightcolor,draw]
+ (1.5,0) {[rounded corners=5] --
+ ++(6.5,0) --
+ ++(0,.8)} --
+ ++(-6.5,0) --
+ cycle
+ {};
+ \node[bottomtextstyle] at (4.75,.35) {#2};
+ \node[toptextstyle] at (4.75,.4) {#2};
+ \end{tikzpicture}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\doibanner}
+% \changes{v0.3}{2024-07-28}{Add \opt{width} option}
+% \changes{v0.2}{2024-07-23}{Remove trailing space}
+% \oarg{dimen}\marg{string}\\
+% Display the DOI banner with or without (*) a link to its URL. Specify a
+% \oarg{dimen}, if you want a banner width deviating from the one defined
+% as \opt{width} package option.
+% \begin{macrocode}
+\NewDocumentCommand\doibanner{s O{width=\@doibanner@width} m}{%
+ \IfBooleanTF#1
+ {\@doibanner@draw[#2]{#3}}%
+ {\href{\@doibanner@urlbase#3}{\@doibanner@draw[#2]{#3}}}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \iffalse
+%</package>
+% \fi
+%
+% \Finale
+\endinput
+%%
+%% End of file `doibanner.dtx'.
+
diff --git a/macros/latex/contrib/doibanner/doibanner.ins b/macros/latex/contrib/doibanner/doibanner.ins
new file mode 100644
index 0000000000..97cfbb3fbb
--- /dev/null
+++ b/macros/latex/contrib/doibanner/doibanner.ins
@@ -0,0 +1,85 @@
+%%
+%% Copyright (C) 2024 Christian Schreinemachers
+%%
+%% This work may be distributed and/or modified under the conditions
+%% of the LaTeX Project Public License, either version 1.3c of this
+%% license or (at your option) any later version. The latest version
+%% of this license is in
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3c or later is part of all distributions of
+%% LaTeX version 2008-05-04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The current maintainer of this work is Christian Schreinemachers.
+%%
+%% This work consists of the files
+%% doibanner.dtx
+%% doibanner.ins
+%% README.md
+%% and the derived files
+%% doibanner.sty
+%% doibanner.pdf
+%%
+This work has the LPPL maintenance status `maintained'.
+
+The current maintainer of this work is Christian Schreinemachers.
+
+This work consists of the files
+ doibanner.dtx
+ doibanner.ins
+ README.md
+and the derived files
+ doibanner.sty
+ doibanner.pdf
+\input docstrip.tex
+\keepsilent
+
+\preamble
+
+Copyright (C) 2024 Christian Schreinemachers
+
+This work may be distributed and/or modified under the conditions
+of the LaTeX Project Public License, either version 1.3c of this
+license or (at your option) any later version. The latest version
+of this license is in
+
+ http://www.latex-project.org/lppl.txt
+
+and version 1.3c or later is part of all distributions of LaTeX
+version 2008-05-04 or later.
+
+This work has the LPPL maintenance status `maintained'.
+
+The current maintainer of this work is
+ Christian Schreinemachers.
+
+This work consists of the files
+ doibanner.dtx
+ doibanner.ins
+and the derived files
+ doibanner.sty
+ doibanner.pdf
+
+\endpreamble
+\askforoverwritefalse
+\generate{\file{doibanner.sty}{\from{doibanner.dtx}{package}}}
+
+\obeyspaces
+\Msg{****************************************************}
+\Msg{* To finish the installation you have to move the *}
+\Msg{* following file into a directory searched by TeX: *}
+\Msg{* *}
+\Msg{* doibanner.sty *}
+\Msg{* *}
+\Msg{* To produce the documentation run the file *}
+\Msg{* bib2qr.dtx through LaTeX. *}
+\Msg{* *}
+\Msg{* Happy TeXing! *}
+\Msg{****************************************************}
+\endbatchfile
+%%
+%% End of file `doibanner.ins'.
+
diff --git a/macros/latex/contrib/doibanner/doibanner.pdf b/macros/latex/contrib/doibanner/doibanner.pdf
new file mode 100644
index 0000000000..546b0c9de1
--- /dev/null
+++ b/macros/latex/contrib/doibanner/doibanner.pdf
Binary files differ
diff --git a/macros/latex/contrib/easybook/README.md b/macros/latex/contrib/easybook/README.md
index a25e5c1761..a04be06f54 100644
--- a/macros/latex/contrib/easybook/README.md
+++ b/macros/latex/contrib/easybook/README.md
@@ -1,11 +1,15 @@
-# easybook document class
+# The `easybook` document class
+Easily typesetting Chinese theses or books (v2024dj)
-`easybook` is a pure academic template created based on the `ctexbook` book document class. It also has the functions of `book` and `article` document class. Combined with the general framework design of the dissertation of many universities in China, providing multiple commands and interfaces allows users to easily customize the thesis template. Its basic macro package `easybase` can also be used with `ctex` and standard document classes.
+## Abstract
+`easybook` is a pure academic template created based on the `ctexbook` book document class. It also has the functions of `book` and `article` document class. Combined with the general framework design of the theses of many universities in China, providing multiple commands and interfaces allows users to easily customize the theses templates. Its basic macro package `easybase` can also be used with `ctex` and standard document classes.
## License
-
This work may be distributed and/or modified under the conditions of the LPPL-1.3c License. The latest version of this license is in http://www.latex-project.org/lppl.txt
## Website
+| [Gitee](https://gitee.com/texno3/easybook) | [Github](https://github.com/texno3/easybook) | [CTAN](https://ctan.org/pkg/easybook) |
-| [Gitee](https://gitee.com/texno3/easybook) | [Github](https://github.com/texno3/easybook) | [CTAN](https://ctan.org/pkg/easybook) | \ No newline at end of file
+## Maintainer
+Qu Yi<br/>
+Email: toquyi@163.com \ No newline at end of file
diff --git a/macros/latex/contrib/easybook/easybook.dtx b/macros/latex/contrib/easybook/easybook.dtx
index c6473783f9..30f7860795 100644
--- a/macros/latex/contrib/easybook/easybook.dtx
+++ b/macros/latex/contrib/easybook/easybook.dtx
@@ -12,15 +12,15 @@
% LaTeX version 2005/12/01 or later.
%
% This work has the LPPL maintenance status `maintained'.
+%<class|package>\NeedsTeXFormat{LaTeX2e}[2021/11/15]
%<*class>
-\NeedsTeXFormat{LaTeX2e}[2021/11/15]
-\ProvidesExplClass{easybook}{2024/05/16}{2024br}
+\ProvidesExplClass{easybook}{2024/08/14}{2024dj}
{Easily typesetting Chinese theses or books}
\bool_new:N \l__eb_compile_draft_bool
\bool_new:N \l__eb_title_newline_bool
-\bool_set_true:N \l__eb_class_mode_book_bool
-\clist_new:N \g__eb_doc_options_clist
+\bool_set_true:N \l__eb_class_mode_book_bool
+\clist_new:N \g__eb_doc_options_clist
\cs_new_protected:Npn \eb_put_ctexbook:n #1
{ \PassOptionsToClass{#1}{ctexbook} }
\cs_generate_variant:Nn \eb_put_ctexbook:n { V }
@@ -66,10 +66,11 @@
\sys_if_engine_xetex:TF
{
- \cs_new_eq:NN \eb_set_family:nnn \xeCJK_set_family:nnn
+ \cs_new_eq:NN \eb_set_family:nnn \xeCJK_set_family:nnn
\cs_new_eq:NN \eb_switch_family:n \xeCJK_switch_family:n
- }{
- \cs_new_eq:NN \eb_set_family:nnn \ctex_ltj_set_family:nnn
+ }
+ {
+ \cs_new_eq:NN \eb_set_family:nnn \ctex_ltj_set_family:nnn
\cs_new_eq:NN \eb_switch_family:n \ctex_ltj_switch_family:n
}
\cs_generate_variant:Nn \eb_set_family:nnn { x }
@@ -89,13 +90,13 @@
{ main,sans,mono,CJKmain,CJKsans,CJKmono }
{
\exp_args:Nc \RenewDocumentCommand { set#1font }{O{}mO{}}
- {\use:c { eb_set#1font:nn } {##2} {##1,##3}}
+ {\use:c { eb_set#1font:nn } {##2} { ##1,##3 }}
}
\RenewDocumentCommand{\newCJKfontfamily}{omO{}mO{}}
{
\tl_set:Nx \l_tmpa_tl { \tl_if_novalue:nTF {#1} { \cs_to_str:N #2 } {#1} }
\cs_new_protected:Npx #2 { \eb_switch_family:n { \l_tmpa_tl } }
- \eb_set_family:xnn { \l_tmpa_tl } {#3,#5} {#4}
+ \eb_set_family:xnn { \l_tmpa_tl } { #3,#5 } {#4}
}
\cs_new_protected:Npn \eb@font@load@noto
@@ -261,8 +262,8 @@
{ \par\nobreak\vskip 1.5pc }
{ \hspace{1em} }
},
- beforeskip = -1.5ex,
- afterskip = 4ex
+ beforeskip = 0pt,
+ afterskip = 25pt
},
section =
{
@@ -299,9 +300,8 @@
}
%</class>
%<*package>
-\NeedsTeXFormat{LaTeX2e}[2021/11/15]
\RequirePackage{etoolbox}
-\ProvidesExplPackage{easybase}{2024/05/16}{2024br}
+\ProvidesExplPackage{easybase}{2024/08/14}{2024dj}
{Easily typesetting Chinese theses or books}
\cs_generate_variant:Nn \dim_set:Nn { NV }
@@ -313,7 +313,7 @@
\cs_generate_variant:Nn \seq_set_from_clist:Nn { No }
\cs_generate_variant:Nn \ctex_define:nn { nx }
\cs_generate_variant:Nn \eb_set_hyperref:n { x }
-\cs_generate_variant:Nn \eb_at_begin_environment:nn { on }
+\cs_generate_variant:Nn \eb_at_begin_environment:nn { o }
\cs_generate_variant:Nn \tl_if_novalue:nF { V }
\cs_set_protected:Npn \ctex_define:nn #1
@@ -332,7 +332,7 @@
\clist_map_inline:nn {#1}
{ \AtBeginEnvironment{##1}{#2} }
}
-\cs_new_protected:Npn \eb_at_end_preamble:n
+\cs_set_protected:Npn \ctex_before_end_preamble:n
{ \BeforeBeginEnvironment{document} }
\cs_new_protected:Npn \eb_if_package_loaded:nnF #1#2#3
{
@@ -372,20 +372,28 @@
\IfNoValueTF{#1}
{\IfFileExists{#2.sty}{\RequirePackage{#2}[#3]}{}}
{\IfFileExists{#2.sty}{\RequirePackage[#1]{#2}[#3]}{}}
+ \IfFileExists{#2.sty}{}
+ {\msg_warning:nnn { easybase } { package-not-found } {#2}}
}
+\msg_new:nnn { easybase } { package-not-found }
+ { The~macro~package~'#1'~can't~be~found. }
\cs_new_protected:Npn \ebloadpackage #1
{
\int_compare:nTF { \clist_count:n {#1} <= 1 }
- { \RequirePackage }
+ { \RequirePackage{#1} }
{
\clist_map_inline:nn {#1}
{ \eb_match_load_package:n {##1} }
}
}
+\providecommand{\NewHookWithArguments}[2]{}
+\ProvideDocumentCommand{\AddToHookWithArguments}{mo+m}{}
\bool_set_true:N \l__eb_class_mode_book_bool
\bool_set_false:N \l__eb_compile_draft_bool
\clist_new:N \g__eb_ctex_options_clist
+\cs_new_protected:Npn \eb_put_geometry:n #1
+ { \PassOptionsToPackage{#1}{geometry} }
\keys_define:nn { easybase }
{
@@ -400,16 +408,19 @@
theorem .bool_set:N = \l__eb_theorem_support_bool,
theorem .default:n = true,
theorem .initial:n = true,
- paper .code:n = \PassOptionsToPackage{#1}{geometry},
+ paper .code:n = \eb_put_geometry:n {#1},
paper .initial:n = a4paper,
class .choice:,
class .value_required:n = true,
- class/book .code:n = { },
+ class/book .code:n =
+ {
+ \bool_set_true:N \l__eb_class_mode_book_bool
+ \eb_put_geometry:n { twoside }
+ },
class/article .code:n =
{
\bool_set_false:N \l__eb_class_mode_book_bool
- \boolfalse{@twoside}
- \boolfalse{@mparswitch}
+ \eb_put_geometry:n { twoside = false }
},
class .initial:n = book,
book .meta:n = { class = book },
@@ -441,16 +452,16 @@
\seq_set_from_clist:Nn \l__eb_module_paths_seq
{
- tools,font,spread,
- bib,thmt,toc,
- hdr,float,ref,geo
+ tools,font,space,bib,
+ thmt,toc,hdr,float,
+ ref,geo,cap
}
\seq_map_inline:Nn \l__eb_module_paths_seq
{
\ctex_define:n { #1 .meta:nn = { ctex/#1 } {##1} }
\cs_new_protected:cpn { eb#1set } ##1 { \ctex_set:nn {#1} {##1} }
}
-\RenewDocumentCommand{\ctexset}{om}
+\RenewDocumentCommand{\ctexset}{o+m}
{
\IfValueTF{#1}
{\ctex_set:nn {#1} {#2}}
@@ -498,7 +509,6 @@
\ebloadpackage
{
[text]{spbmark},
- [normalem]{ulem},
[{shortlabels,inline}]{enumitem},
chemformula,siunitx,pifont,
geometry,marginnote,
@@ -552,7 +562,15 @@
tagform .code:n = \eb_assign_tagform:n {#1},
tagform .initial:n = { (,) },
brackets .meta:n = { tagform = {#1} },
- figurepath .tl_set:N = \l_eb_graphics_path_tl
+ figurepath .code:n =
+ {
+ \tl_if_blank:nF {#1}
+ {
+ \regex_match:nnTF { \cB. } {#1}
+ { \graphicspath{#1} }
+ { \graphicspath{{#1}} }
+ }
+ }
}
\includepdfset{fitpaper = true}
@@ -587,8 +605,7 @@
\cs_new_protected:Npn \blankpagestyle #1
{ \tl_set:Nn \l__eb_blank_pagestyle_tl {#1} }
\blankpagestyle{empty}
-\RenewDocumentCommand{\cleardoublepage}
- {O{\l__eb_blank_pagestyle_tl}}
+\RenewDocumentCommand{\cleardoublepage}{O{\l__eb_blank_pagestyle_tl}}
{
\clearpage
\ifbool{@twoside}
@@ -609,19 +626,6 @@
\booltrue{@mainmatter}
\pagenumbering{arabic}
}
-\clist_map_inline:nn
- { chapter,section,subsection }
- {
- \exp_args:Nc \NewDocumentCommand { eb@mark@#1@label@layout }
- {O{\use:c { CTEXthe#1 }}m}
- {\tl_set:cn { eb@mark@#1@label } {##1##2}}
- \cs_new_protected:cpn { eb_mark_#1_name_parse:n } ##1
- {
- \regex_match:nnTF { \[.*\] } {##1}
- { \use:c { eb@mark@#1@label@layout }##1 }
- { \use:c { eb@mark@#1@label@layout }{##1} }
- }
- }
\NewDocumentCommand{\markrule}
{O{\textwidth}D(){ctex@frame}m>{\SplitArgument{1}{|}}O{}}
{\eb_draw_markrule:nnnnn {#1} {#2} {#3} #4}
@@ -642,32 +646,49 @@
{ none* } { \text_lowercase:n }
}
}
-\ctex_define:nn { hdr }
+\cs_new_protected:Npn \eb@register@hdr@mark #1
{
- chap-mark .cs_set:Np = \eb@mark@chapter@whole #1,
- chap-mark .initial:n =
- {
- \CTEXifname{\eb@mark@chapter@label}{}
- \eb_mark_uppercase_case_init:n {#1}
- },
- sec-mark .cs_set:Np = \eb@mark@section@whole #1,
- sec-mark .initial:n =
+ \exp_args:Nc \NewDocumentCommand { eb@mark@#1@label@layout }
+ {O{\use:c { CTEXthe#1 }}m}
+ {\tl_set:cn { eb@mark@#1@label } {##1##2}}
+ \cs_new_protected:cpn { eb_mark_#1_name_parse:n } ##1
{
- \CTEXifname{\eb@mark@section@label}{}
- \eb_mark_uppercase_case_init:n {#1}
- },
- subsec-mark .cs_set:Np = \eb@mark@subsection@whole #1,
- subsec-mark .initial:n =
+ \regex_match:nnTF { ^\[.*\] } {##1}
+ { \use:c { eb@mark@#1@label@layout }##1 }
+ { \use:c { eb@mark@#1@label@layout }{##1} }
+ }
+ \ctex_define:nn { hdr }
{
- \CTEXifname{\eb@mark@subsection@label}{}
- \eb_mark_uppercase_case_init:n {#1}
- },
- chap-label .code:n = \eb_mark_chapter_name_parse:n {#1},
- chap-label .initial:n = \hspace{1em},
- sec-label .code:n = \eb_mark_section_name_parse:n {#1},
- sec-label .initial:n = \hspace{0.5em},
- subsec-label .code:n = \eb_mark_subsection_name_parse:n {#1},
- subsec-label .initial:n = \hspace{0.5em},
+ #1-mark .cs_set:cp = { eb@mark@#1@whole } ##1,
+ #1-mark .initial:n =
+ {
+ \CTEXifname{\use:c { eb@mark@#1@label }}{}
+ \eb_mark_uppercase_case_init:n {##1}
+ },
+ #1-label .code:n = \use:c { eb_mark_#1_name_parse:n } {##1},
+ }
+ }
+\cs_new_protected:Npn \RegisterHdrMark #1
+ {
+ \clist_map_function:nN {#1}
+ \eb@register@hdr@mark
+ }
+\RegisterHdrMark{chapter,section,subsection}
+
+\ctex_set:nn { hdr }
+ {
+ chapter-label = \hspace{1em},
+ section-label = \hspace{0.5em},
+ subsection-label = \hspace{0.5em}
+ }
+\ctex_define:nn { hdr }
+ {
+ chap-mark .meta:n = { chapter-mark = {#1} },
+ sec-mark .meta:n = { section-mark = {#1} },
+ subsec-mark .meta:n = { subsection-mark = {#1} },
+ chap-label .meta:n = { chapter-label = {#1} },
+ sec-label .meta:n = { section-label = {#1} },
+ subsec-label .meta:n = { subsection-label = {#1} },
headrulewd .dim_set:N = \eb@head@rule@wd,
headrulewd .initial:n = 0.5pt,
footnoterulewd .dim_set:N = \eb@footnote@rule@wd,
@@ -719,8 +740,6 @@
\ctex_at_end_preamble:n
{
\bool_if:NF \l__eb_ps_used_bool { \pagestyle{fancy} }
- \tl_if_blank:VF \l_eb_graphics_path_tl
- { \exp_args:NV \graphicspath \l_eb_graphics_path_tl }
\providecommand{\kaishu}{\itshape}
}
@@ -786,7 +805,7 @@
\UseFntSymbsList{empty}
\cs_set_eq:NN \DefineFntSymbols \SetFntSymbsList
\cs_set_eq:NN \setfntsymbol \UseFntSymbsList
-\cs_new:Npn \eb_int_format_trans:NN #1
+\cs_new:Npn \eb_int_type_trans:NN #1
{
\str_case:nn {#1}
{
@@ -821,29 +840,44 @@
}
\cs_set_eq:NN \thedownfootnote \thefootnote
}
+\cs_generate_variant:Nn \msg_warning:nnnn { nnnV }
\cs_new_protected:Npn \eb_fnmarktext_short_label_set:Nn #1#2
{
\tl_set:Nn \l__eb_fnmarktext_short_tokens_tl {#2}
\clist_map_inline:nn
{ A,a,1,I,i,c,s }
{
- \regex_match:nnT {##1} {#2}
+ \regex_match:nnTF {##1} {#2}
{
\regex_replace_once:nnN {##1}
- { \c{eb_int_format_trans:NN} ##1 \c{c@footnote} }
+ { \c{eb_int_type_trans:NN} ##1 \c{c@footnote} }
\l__eb_fnmarktext_short_tokens_tl
- \seq_map_break:
+ \cs_set_eq:NN #1 \l__eb_fnmarktext_short_tokens_tl
+ \clist_map_break:
+ }
+ {
+ \str_if_eq:nnT {##1} { s }
+ {
+ \str_if_eq:nnTF {#1} { \thefootnote }
+ { \str_set:Nn \l_tmpa_str { \thedownfootnote } }
+ { \str_set:Nn \l_tmpa_str { \theupfootnote } }
+ \msg_warning:nnnV { easybase } { unknown-fnt-type } {#2} \l_tmpa_str
+ }
}
}
- \cs_set_eq:NN #1 \l__eb_fnmarktext_short_tokens_tl
\cs_set_eq:NN \thedownfootnote \thefootnote
}
+\msg_new:nnn { easybase } { unknown-fnt-type }
+ {
+ The~'#1'~includes~unknown~footnote~numbering~type \\
+ in~#2.
+ }
\cs_new_protected:Npn \eb_footnote_value_handle:n #1
{
\str_case:nnF {#1}
{
{ bottom }
- { \bool_set_true:N \l__eb_fnpara_bottom_bool }
+ { \PushFntBottom }
{ flush }
{
\tl_set:Nn \l__eb_footnote_value_tl { plain }
@@ -876,7 +910,6 @@
}
}
-\bool_new:N \l__eb_fnpara_bottom_bool
\tl_new:N \l__eb_fnmarktext_format_tl
\tl_new:N \l__eb_fncustom_format_tl
\clist_new:N \l__eb_footnote_value_clist
@@ -924,7 +957,7 @@
unknown .code:n = \eb_msg_deprecated_option:n { hdr }
}
-\eb_at_end_preamble:n
+\ctex_before_end_preamble:n
{
\bool_if:NT \l__eb_chap_counter_withpart_bool
{ \counterwithin*{chapter}{part} }
@@ -934,58 +967,91 @@
{ page } { \counterwithin*{footnote}{page} }
}
{ \counterwithout*{footnote}{chapter} }
- \eb_fnpara_if_pos_bottom:
}
-\cs_new_protected:Npn \setspread #1 { \linespread{#1}\selectfont }
-\cs_new:Npn \eb@ifvoid #1#2#3 { \ifvoid #1#2\else #3\fi }
-\cs_new_protected:Npn \eb_fnpara_if_pos_bottom:
+
+\def\@if@footnotes@TF #1#2 {\ifvoid\footins #2\else #1\fi}
+\def\@outputbox@removebskip
+ {
+ \ifx\@textbottom\relax\else
+ \@outputbox@append
+ {
+ \@tempskipa\lastskip
+ \ifnum\gluestretchorder\@tempskipa>\z@
+ \vskip -\@tempskipa
+ \xdef\@outputbox@reinsertbskip
+ {\noexpand\@outputbox@append{\vskip\the\@tempskipa}}
+ \else
+ \global\let\@outputbox@reinsertbskip\relax
+ \fi
+ }
+ \fi
+ }
+\let\@outputbox@reinsertbskip\relax
+\def\@outputbox@append #1
{
- \bool_if:NT \l__eb_fnpara_bottom_bool
+ \setbox\@outputbox\vbox
{
- \IfPackageLoadedTF{footmisc}
- {\msg_warning:nn { easybase } { bottom-not-compatible }}
+ \boxmaxdepth\@maxdepth
+ \dimen@\dp\@outputbox
+ \unvbox\@outputbox
+ #1
+ }
+ }
+\def\@outputbox@attachfloats{\@combinefloats}
+\NewHook{makecol/footins/before}
+\NewHook{makecol/footins/begin}
+\def\@outputbox@appendfootnotes
+ {
+ \@if@footnotes@TF
+ {
+ \UseHook{makecol/footins/before}
+ \@outputbox@append
{
- \cs_set:Npn \@makecol
- {
- \setbox\@outputbox\box\@cclv
- \let\@elt\relax
- \xdef\@freelist{\@freelist\@midlist}
- \global\let\@midlist\@empty
- \@combinefloats
- \eb@ifvoid\footins{}
- {
- \setbox\@outputbox\vbox
- {
- \boxmaxdepth\@maxdepth
- \unvbox\@outputbox
- \vfill\relax
- \vskip\skip\footins
- \color@begingroup
- \normalcolor\footnoterule
- \unvbox\footins
- \color@endgroup
- }
- }
- \eb@ifvoid\@kludgeins
- {\@makespecialcolbox}
- {
- \setbox\@outputbox\vbox to\@colht
- {
- \@texttop\dimen@\dp\@outputbox
- \unvbox\@outputbox
- \vskip -\dimen@\@textbottom
- }
- }
- \global\maxdepth\@maxdepth
- }
+ \vskip\skip\footins
+ \UseHook{makecol/footins/begin}
+ \color@begingroup
+ \normalcolor
+ \footnoterule
+ \@nameuse{pdfcolfoot@current}
+ \unvbox\footins
+ \color@endgroup
}
+ }{}
+ }
+\def\@makenormalcolbox
+ {
+ \setbox\@outputbox\vbox to\@colht
+ {
+ \@texttop
+ \dimen@\dp\@outputbox
+ \unvbox\@outputbox
+ \vskip -\dimen@
+ \@textbottom
}
}
-\msg_new:nnn { easybase } { bottom-not-compatible }
+\cs_new_protected:Npn \PushFntBottom
{
- Not~compatible~with~the~'footmisc'~package. \\
- Please~use~the~'bottom'~option~of~'footmisc'~package.
+ \cs_set:Npn \@makecol
+ {
+ \setbox\@outputbox\box\@cclv
+ \@outputbox@removebskip
+ \let\@elt\relax
+ \xdef\@freelist{\@freelist\@midlist}
+ \global\let\@midlist\@empty
+ \@outputbox@attachfloats
+ \@if@footnotes@TF
+ {\@outputbox@append{\vfill}}
+ {\@outputbox@reinsertbskip}
+ \@outputbox@appendfootnotes
+ \ifvbox\@kludgeins
+ \@makespecialcolbox
+ \else
+ \@makenormalcolbox
+ \fi
+ \global\maxdepth\@maxdepth
+ }
}
+\@onlypreamble\PushFntBottom
\cs_new_protected:Npn \eb_footnote_direct_hang:
{
@@ -1008,7 +1074,7 @@
{
\noindent
\clist_if_in:NnT \l__eb_footnote_value_clist { flush }
- { \dim_zero:N \fnfirstindent }
+ { \tl_set:Nn \fnfirstindent { 0pt } }
\int_case:nn { \dim_sign:V \fnfirstindent }
{
{ 1 } { \use_i:nnn }
@@ -1041,6 +1107,7 @@
\l__eb_fnpara_format_tl{#1}
\tl_if_eq:NnT \l__eb_footnote_value_tl { hang } { \par }
}
+\cs_new_protected:Npn \setspread #1 { \linespread{#1}\selectfont }
\clist_map_inline:nn { \@footnotetext,\@mpfootnotetext }
{
\eb_patch_cmd:Nnn #1
@@ -1056,12 +1123,12 @@
\ctex_at_end_package:nn { footmisc }
{
\eb_package_date_check:nn { footmisc } { 2022/02/10 }
- \boolfalse{FN@setspace}
- \ifbool{FN@para}{}
+ \ifboolexpr{not (bool {FN@para} or bool {FN@sidefn})}
{
+ \boolfalse{FN@setspace}
\cs_set_eq:NN \@makefntext \eb@@makefntext
\cs_set_eq:NN \@footnotetext \eb@@footnotetext
- }
+ }{}
\ifboolexpr
{
bool {FN@hangfoot} or
@@ -1300,7 +1367,7 @@
{
\IfBooleanTF{##1}
{
- \use:c {#1}*{\phantomsection ##3}
+ \use:c {#1}*{##3}
\CTEX@addtocline{#1}{##2}
\tl_if_empty:oF {##4} { \CTEX@addbitocline{#1}{##4} }
\use:c { #1mark }{##2}
@@ -1322,22 +1389,22 @@
\skip_if_eq:nnF { \eb@toc@lol@skip } { \c_zero_skip }
{ \addtocontents{lol}{\protect\addvspace{\skip_use:N \eb@toc@lol@skip}} }
}
-\cs_new_protected:Npn \eb_title_base_set_eq:nn #1#2
- {
- \tl_set_eq:cc { CTEX@#2@beforeskip } { CTEX@#1@beforeskip }
- \tl_set_eq:cc { CTEX@#2@afterskip } { CTEX@#1@afterskip }
- \bool_set_eq:cc { CTEX@#2@numbering } { CTEX@#1@numbering }
- \bool_set_eq:cc { CTEX@#2@fixskip } { CTEX@#1@fixskip }
- \bool_set_eq:cc { CTEX@#2@hang } { CTEX@#1@hang }
- \bool_set_eq:cc { CTEX@#2@runin } { CTEX@#1@runin }
- \cs_set_eq:cc { CTEX@#2@tocline } { CTEX@#1@tocline }
- \tl_set_eq:cc { CTEX@#2@break } { CTEX@#1@break }
- \tl_set_eq:cc { CTEX@#2@format } { CTEX@#1@format }
- \tl_set_eq:cc { CTEX@#2@nameformat } { CTEX@#1@nameformat }
- \tl_set_eq:cc { CTEX@#2@numberformat } { CTEX@#1@numberformat }
- \tl_set_eq:cc { CTEX@#2@titleformat } { CTEX@#1@titleformat }
- \tl_set_eq:cc { CTEX@#2@aftername } { CTEX@#1@aftername }
- \tl_set_eq:cc { CTEX@#2@aftertitle } { CTEX@#1@aftertitle }
+\cs_new_protected:Npn \CopyTitleFormat #1#2
+ {
+ \tl_set_eq:cc { CTEX@#1@beforeskip } { CTEX@#2@beforeskip }
+ \tl_set_eq:cc { CTEX@#1@afterskip } { CTEX@#2@afterskip }
+ \bool_set_eq:cc { CTEX@#1@numbering } { CTEX@#2@numbering }
+ \bool_set_eq:cc { CTEX@#1@fixskip } { CTEX@#2@fixskip }
+ \bool_set_eq:cc { CTEX@#1@hang } { CTEX@#2@hang }
+ \bool_set_eq:cc { CTEX@#1@runin } { CTEX@#2@runin }
+ \cs_set_eq:cc { CTEX@#1@tocline } { CTEX@#2@tocline }
+ \tl_set_eq:cc { CTEX@#1@break } { CTEX@#2@break }
+ \tl_set_eq:cc { CTEX@#1@format } { CTEX@#2@format }
+ \tl_set_eq:cc { CTEX@#1@nameformat } { CTEX@#2@nameformat }
+ \tl_set_eq:cc { CTEX@#1@numberformat } { CTEX@#2@numberformat }
+ \tl_set_eq:cc { CTEX@#1@titleformat } { CTEX@#2@titleformat }
+ \tl_set_eq:cc { CTEX@#1@aftername } { CTEX@#2@aftername }
+ \tl_set_eq:cc { CTEX@#1@aftertitle } { CTEX@#2@aftertitle }
}
\NewDocumentCommand{\NewTitleCommand}{omm}
{
@@ -1357,8 +1424,9 @@
}
\cs_new:cpn { CTEX@#2@tocline } ##1##2
{ \CTEXnumberline{##1}##2 }
+ \exp_args:Nc \providecommand { ttll@#2 }{#3}
\exp_args:Nc \providecommand { toclevel@#2 }{#3}
- \IfValueT{#1}{\eb_title_base_set_eq:nn {#1} {#2}}
+ \IfValueT{#1}{\CopyTitleFormat{#2}{#1}}
}
\NewDocumentCommand{\NewTitleEntryCommand}{O{toc}m}
{
@@ -1367,35 +1435,39 @@
\bool_if:cTF { CTEX@#2@numbering }
{ \CTEX@ifnametrue }
{ \CTEX@ifnamefalse }
+ \CTEX@makeanchor{#2*}
\addcontentsline{#1}{#2}{\use:c { CTEX@#2@tocline }{#2}{##1}}
}
}
\ctex_define:nn { tools }
{
- hyphen-figure .tl_set:N = \l__eb_hyphen_figure_tl,
- hyphen-table .tl_set:N = \l__eb_hyphen_table_tl,
- hyphen-listing .tl_set:N = \l__eb_hyphen_listing_tl,
- hyphen-equation .tl_set:N = \l__eb_hyphen_equation_tl,
- hyphen-every .meta:n =
+ hyphen-figure .tl_set:N = \l__eb_hyphen_figure_tl,
+ hyphen-table .tl_set:N = \l__eb_hyphen_table_tl,
+ hyphen-lstlisting .tl_set:N = \l__eb_hyphen_lstlisting_tl,
+ hyphen-equation .tl_set:N = \l__eb_hyphen_equation_tl,
+ hyphen-every .meta:n =
{
- hyphen-figure = {#1},hyphen-table = {#1},
- hyphen-listing = {#1},hyphen-equation = {#1}
+ hyphen-figure = {#1},hyphen-table = {#1},
+ hyphen-lstlisting = {#1},hyphen-equation = {#1}
},
- hyphen-every .initial:n = .,
- unknown .code:n = \eb_msg_deprecated_option:n { tools }
+ hyphen-every .initial:n = .,
+ unknown .code:n = \eb_msg_deprecated_option:n { tools }
}
-\clist_map_inline:nn
- { figure,table,listing,equation }
+\AtBeginDocument
{
- \cs_set:cpn { the#1 }
+ \clist_map_inline:nn
+ { figure,table,lstlisting,equation }
{
- \int_compare:nNnT { \c@chapter } > { 0 }
+ \cs_set:cpn { the#1 }
{
- \thechapter
- \tl_use:c { l__eb_hyphen_#1_tl }
+ \int_compare:nNnT { \c@chapter } > { 0 }
+ {
+ \thechapter
+ \tl_use:c { l__eb_hyphen_#1_tl }
+ }
+ \int_to_arabic:v { c@#1 }
}
- \int_to_arabic:v { c@#1 }
}
}
@@ -1405,47 +1477,73 @@
\bool_new:N \l__eb_toc_notitle_bool
\newbool{bitoc}
\cs_new:Npn \ebifbitoc { \ifbool{bitoc} }
+\seq_new:N \l__eb_level_tmpa_seq
+\tl_new:N \l__eb_level_tmpa_tl
+\cs_generate_variant:Nn \regex_extract_all:nnN { no }
+\cs_generate_variant:Nn \keys_define:nn { nx }
+\cs_generate_variant:Nn \ctex_set:nn { ox }
+\cs_new_protected:Npn \eb_toc_extract_level:
+ {
+ \regex_extract_all:noN { \cC. } { \eb@toc@title@level }
+ \l__eb_level_tmpa_seq
+ \seq_get_right:NN \l__eb_level_tmpa_seq \l__eb_level_tmpa_tl
+ \tl_set:Nx \l__eb_level_tmpa_tl
+ {
+ \exp_last_unbraced:No
+ \cs_to_str:N { \l__eb_level_tmpa_tl }
+ }
+ \regex_replace_case_once:nN
+ {
+ { ^bi(.*) } { \1 }
+ { .* } { \0 }
+ }
+ \l__eb_level_tmpa_tl
+ }
\keys_define:nn { eb/tocouter }
{
- level .tl_set:N = \eb@toc@title@level,
- level .initial:n =
+ level .code:n =
+ {
+ \tl_set:Nn \eb@toc@title@level {#1}
+ \eb_toc_extract_level:
+ },
+ level .initial:x =
{
\bool_if:NTF \l__eb_class_mode_book_bool
- { \bichapter* }
- { \bisection* }
+ { \exp_not:N \bichapter* }
+ { \exp_not:N \bisection* }
},
- section .meta:n = { level = \bisection* },
- chapter .meta:n = { level = \bichapter* },
- none .code:n =
+ section .meta:n = { level = \bisection* },
+ chapter .meta:n = { level = \bichapter* },
+ none .code:n =
{
\tl_set:Nn \eb@toc@title@level
{ \par\use_none:nn }
\bool_set_true:N \l__eb_toc_notitle_bool
},
- multoc .int_set:N = \l__eb_toc_columns_int,
- multoc .default:n = 2,
- multoc .initial:n = 1,
+ multoc .int_set:N = \l__eb_toc_columns_int,
+ multoc .default:n = 2,
+ multoc .initial:n = 1,
plan .choice:,
plan .value_required:n = true,
- plan/cn .code:n =
+ plan/cn .code:n =
{
\bool_set_true:N \l__eb_toc_plan_cn_bool
\bool_set_false:N \l__eb_toc_plan_bi_bool
},
- plan/bi .code:n =
+ plan/bi .code:n =
{
\bool_set_false:N \l__eb_toc_plan_cn_bool
\bool_set_true:N \l__eb_toc_plan_bi_bool
},
- plan/both .code:n =
+ plan/both .code:n =
{
\bool_set_true:N \l__eb_toc_plan_cn_bool
\bool_set_true:N \l__eb_toc_plan_bi_bool
},
- plan .initial:n = cn,
- columns .meta:n = { multoc = {#1} },
- title .code:n = \eb_assign_toc_title:n {#1},
- bilist .code:n =
+ plan .initial:n = cn,
+ columns .meta:n = { multoc = {#1} },
+ title .code:n = \eb_assign_toc_title:n {#1},
+ bilist .code:n =
{
\tl_gset:Nn \g__eb_bilist_permute_value_tl {#1}
\str_if_eq:nnTF {#1} { mix }
@@ -1463,16 +1561,20 @@
}
}
},
- name .tl_set:N = \l__eb_print_index_name_tl,
- name .initial:n = \imki@jobname
+ name .tl_set:N = \l__eb_print_index_name_tl,
+ name .initial:n = \imki@jobname,
+ unknown .code:n =
+ {
+ \ctex_set:ox { \l__eb_level_tmpa_tl }
+ { \eb_unknown_kv_handle: }
+ },
+ unknown .default:V = \c_novalue_tl
}
-\bool_if:NTF \l__eb_class_mode_book_bool
- { \keys_define:nn { } { eb/tocouter .inherit:n = ctex/chapter } }
- { \keys_define:nn { } { eb/tocouter .inherit:n = ctex/section } }
+
\NewDocumentCommand{\eb_assign_toc_title:n}
{>{\SplitArgument{1}{,}}m}
- {\eb_assign_toc_title_judge:nn #1}
-\cs_new_protected:Npn \eb_assign_toc_title_judge:nn #1#2
+ {\eb_toc_assign_title_judge:nn #1}
+\cs_new_protected:Npn \eb_toc_assign_title_judge:nn #1#2
{
\tl_set:Nn \eb@toc@title {#1}
\tl_if_novalue:nTF {#2}
@@ -1524,7 +1626,7 @@
}
\cs_new_protected:Npn \DeclareFloatList #1#2
{
- \exp_args:Nc \DeclareDocumentCommand { listof#1s }{st+o}
+ \exp_args:Nc \DeclareDocumentCommand { listof#1s }{st++o}
{\eb_toc_list_struct_parse:nnnnn {##1} {##2} {##3} {#1} {#2}}
\ctex_define:n
{
@@ -1547,14 +1649,15 @@
{ \protect\numberline{#3}{#4} }
}
}
-\cs_new_protected:Npn \AllotCaptionExt #1#2
+\cs_new_protected:Npn \AssignCaptionExt #1#2
{ \tl_set:cn { ext@#1 } {#2} }
+\cs_set_eq:NN \AllotCaptionExt \AssignCaptionExt
\ctex_define:n
{
bicontentsname .tl_set:N = \bicontentsname,
bicontentsname .initial:n = Contents
}
-\RenewDocumentCommand{\tableofcontents}{st+oD(){}}
+\RenewDocumentCommand{\tableofcontents}{st++o+D(){}}
{
\group_begin:
\tl_set_eq:NN \eb@toc@title \contentsname
@@ -1587,6 +1690,12 @@
\group_end:
}
+\cs_set_eq:NN \eb@contentsuse@save \contentsuse
+\RenewDocumentCommand{\contentsuse}{O{-1000}mm}
+ {
+ \eb@contentsuse@save{#2}{#3}
+ \tl_set:cn { ttll@#2 } {#1}
+ }
\contentsuse{lstlisting}{lol}
\seq_put_left:Nn \c__ctex_headings_seq { chapter }
\seq_put_right:Nn \c__ctex_headings_seq { table }
@@ -1635,7 +1744,7 @@
{
tocformat = \IfBooleanT{#1}{\contentsmargin{0pt}},
tocindent = 0pt,
- tocrule = \IfBooleanTF{#1}{,~\thecontentspage}{\tocrule{$\cdot$}},
+ tocrule = \IfBooleanTF{#1}{,~\thecontentspage}{\cdottocrule},
toclabel =
{
\bool_if:NTF \l__eb_toc_entry_hang_bool
@@ -1706,7 +1815,7 @@
\eb@register@every@toc@option
}
\RegisterEveryTocOption{tocafter,tocindent,tocrule}
-\NewDocumentCommand{\tocrule}{st-O{0.7pc}d()mO{}}
+\NewDocumentCommand{\tocrule}{st-O{0.6pc}d()mO{}}
{
\normalsize\normalfont
\ttl@row@i[#3]{\IfValueTF{#4}{\scalebox{#4}{#5}}{#5}}#6
@@ -1723,6 +1832,7 @@
}
}
}
+\cs_set:Npn \cdottocrule { \tocrule{\textperiodcentered} }
\ctex_define:nn { toc }
{
lolskip .skip_set:N = \eb@toc@lol@skip,
@@ -1739,6 +1849,8 @@
hang .initial:n = true,
pagenumwd .code:n = \contentsmargin{#1},
pagenumwd .initial:n = 1.55em,
+ fileopen .tl_set:N = \l__eb_fileopen_type_tl,
+ fileopen .initial:n = once,
unknown .code:n = \eb_msg_deprecated_option:n { toc }
}
@@ -1749,35 +1861,53 @@
{
\tl_if_exist:cF { tf@#1 }
{ \iow_new:c { tf@#1 }\iow_open:cn { tf@#1 } { \jobname.#1 } }
- }
- {}
+ }{}
}
+\cs_set_eq:NN \eb@starttoc \@starttoc
\cs_set:Npn \@starttoc #1
{
- \group_begin:
- \makeatletter
- \file_if_exist_input:n { \jobname.#1 }
- \UseHookWithArguments{starttoc/after}{1}{#1}
- \boolfalse{@nobreak}
- \group_end:
+ \cs_if_exist:NTF \UseHookWithArguments
+ {
+ \group_begin:
+ \makeatletter
+ \file_if_exist_input:n { \jobname.#1 }
+ \UseHookWithArguments{starttoc/after}{1}{#1}
+ \boolfalse{@nobreak}
+ \group_end:
+ }
+ { \eb@starttoc{#1} }
}
\AddToHook{enddocument/afterlastpage}
{
- \IfHookEmptyTF{starttoc/after}{}
- {\iow_now:Nn \@mainaux { \RemoveFromHook{starttoc/after}[aux] }}
+ \tl_if_eq:NnTF \l__eb_fileopen_type_tl { once }
+ { \iow_now:Nn \@mainaux { \RemoveFromHook{starttoc/after}[*] } }
+ {
+ \IfHookEmptyTF{starttoc/after}{}
+ {\iow_now:Nn \@mainaux { \RemoveFromHook{starttoc/after}[aux] }}
+ }
+ }
+\cs_set_protected:Npn \AssignPartialExt #1#2
+ {
+ \tl_if_exist:cTF { ttl@partial#1 }
+ { \msg_warning:nnnn { easybase } { repeated-ptoc } {#1} {#2} }
+ {
+ \tl_set:cn { ttl@partial#1 } {#2}
+ \AddToHookWithArguments{cmd/ttl@writepartial/before}[ttl/#1]
+ {\ttl@topartial{#1}{##1}{##2}}
+ }
}
-\cs_set_protected:Npn \AllotPartialExt #1#2
+\cs_set_eq:NN \AllotPartialExt \AssignPartialExt
+\msg_new:nnn { easybase } { repeated-ptoc }
{
- \tl_set:cn { ttl@partial#1 } {#2}
- \AddToHookWithArguments{cmd/ttl@writepartial/before}
- {\ttl@topartial{#1}{##1}{##2}}
+ Local~directory~file~'#2'~of~directory~type~'#1'~is \\
+ repeatedly~allocated.
}
-\AllotPartialExt{lol}{pll}
+\AssignPartialExt{lol}{pll}
\cs_new_protected:Npn \RegisterTitleIfname #1
{
\clist_map_function:nN {#1}
- \eb@register@title@ifname
+ \eb@register@title@ifname
}
\cs_new_protected:Npn \eb@register@title@ifname #1
{
@@ -1796,16 +1926,15 @@
}
\RegisterTitleIfname{toc}
-\cs_set_eq:NN \eb@ctexsetii \ctex_set:nn
\cs_new_protected:Npn \SetTocStyle #1#2#3
{
\cs_set_protected:cpn { eb@toc@style@set@#1@#2 }
- { \eb@ctexsetii{#1}{#3} }
+ { \ctex_set:nn {#1} {#3} }
}
\cs_new_protected:Npn \UseTocStyle #1#2#3
{
\cs_if_exist:cTF { eb@toc@style@set@#1@#2 }
- { \addtocontents{#3}{\@nameuse{eb@toc@style@set@#1@#2}} }
+ { \addtocontents{#3}{\string\csuse{eb@toc@style@set@#1@#2}} }
{ \msg_warning:nnnn { easybase } { undefined-toc-style } {#2} {#1} }
}
\msg_new:nnn { easybase } { undefined-toc-style }
@@ -1824,7 +1953,7 @@
{
tocformat = \addvspace{1pc}\sffamily,
tocindent = 0pt,
- tocrule = \tocrule{$\cdot$}[\bfseries],
+ tocrule = \cdottocrule[\bfseries],
tocline = \CTEXnumberline{#1}#2
},
section =
@@ -1834,17 +1963,17 @@
tocrule =
{
\bool_if:NTF \l__eb_class_mode_book_bool
- { \tocrule{$\cdot$} }
- { \tocrule{$\cdot$}[\bfseries] }
+ { \cdottocrule }
+ { \cdottocrule[\bfseries] }
}
},
subsection =
- { tocindent = \bool_if:NTF \l__eb_class_mode_book_bool { 3.8em } { 1.4em } }
+ { tocindent = \bool_if:NTF \l__eb_class_mode_book_bool { 3.8em } { 1.5em } }
}
\ctex_at_end_package:nn { imakeidx }
{
- \RenewDocumentCommand{\printindex}{st+od()}
+ \RenewDocumentCommand{\printindex}{st++o}
{
\group_begin:
\tl_set_eq:NN \eb@toc@title \indexname
@@ -1902,19 +2031,19 @@
\ctex_define:nn { font }
{
- caption-table .tl_set:N = \l__eb_font_caption_table_tl,
- caption-figure .tl_set:N = \l__eb_font_caption_figure_tl,
- caption-listing .tl_set:N = \l__eb_font_caption_listing_tl,
- caption-every .meta:n =
+ caption-table .tl_set:N = \l__eb_font_caption_table_tl,
+ caption-figure .tl_set:N = \l__eb_font_caption_figure_tl,
+ caption-lstlisting .tl_set:N = \l__eb_font_caption_lstlisting_tl,
+ caption-every .meta:n =
{
- caption-table = {#1},caption-figure = {#1},
- caption-listing = {#1}
+ caption-table = {#1},caption-figure = {#1},
+ caption-lstlisting = {#1}
},
- caption-every .initial:n = \sffamily\small,
- footnote .tl_set:N = \eb@font@footnote,
- marginpar .tl_set:N = \marginfont,
- marginpar .initial:n = \footnotesize,
- unknown .code:n = \eb_msg_deprecated_option:n { font }
+ caption-every .initial:n = \sffamily\small,
+ footnote .tl_set:N = \eb@font@footnote,
+ marginpar .tl_set:N = \marginfont,
+ marginpar .initial:n = \footnotesize,
+ unknown .code:n = \eb_msg_deprecated_option:n { font }
}
\cs_new_protected:Npn \ebaddtofont #1#2
{
@@ -1924,13 +2053,13 @@
{ \tl_put_right:Nn \l__eb_font_caption_table_tl {#2} }
{ figure }
{ \tl_put_right:Nn \l__eb_font_caption_figure_tl {#2} }
- { listing }
- { \tl_put_right:Nn \l__eb_font_caption_listing_tl {#2} }
+ { lstlisting }
+ { \tl_put_right:Nn \l__eb_font_caption_lstlisting_tl {#2} }
{ every }
{
\tl_put_right:Nn \l__eb_font_caption_table_tl {#2}
\tl_put_right:Nn \l__eb_font_caption_figure_tl {#2}
- \tl_put_right:Nn \l__eb_font_caption_listing_tl {#2}
+ \tl_put_right:Nn \l__eb_font_caption_lstlisting_tl {#2}
}
{ footnote }
{ \tl_put_right:Nn \eb@font@footnote {#2} }
@@ -1940,14 +2069,14 @@
}
\cs_set_eq:NN \addtosubfont \ebaddtofont
-\ctex_define:nn { spread }
+\ctex_define:nn { space }
{
- line .code:n = \setspread{#1},
- table .fp_set:N = \l__eb_spread_table_fp,
- table .initial:n = 1.2,
- math .tl_set:N = \eb@spread@math,
- math .initial:n = 1.2,
- footnote .code:n =
+ linespread .code:n = \setspread{#1},
+ tabspread .fp_set:N = \l__eb_spread_table_fp,
+ tabspread .initial:n = 1.2,
+ mathspread .tl_set:N = \eb@spread@math,
+ mathspread .initial:n = 1.2,
+ fntspread .code:n =
{
\tl_set:Nn \eb@spread@footnote {#1}
\group_begin:
@@ -1956,20 +2085,20 @@
\exp_args:NNNo \group_end:
\dim_set:Nn \footnotesep { \dim_use:N \box_ht:N \strutbox }
},
- footnote .initial:n = 1.2,
- caption-table .fp_set:N = \l__eb_spread_caption_table_fp,
- caption-figure .fp_set:N = \l__eb_spread_caption_figure_fp,
- caption-listing .fp_set:N = \l__eb_spread_caption_listing_fp,
- caption-every .meta:n =
- {
- caption-table = {#1},caption-figure = {#1},
- caption-listing = {#1}
+ fntspread .initial:n = 1.2,
+ captab-spread .fp_set:N = \l__eb_spread_caption_table_fp,
+ capfig-spread .fp_set:N = \l__eb_spread_caption_figure_fp,
+ caplst-spread .fp_set:N = \l__eb_spread_caption_lstlisting_fp,
+ caption-spread .meta:n =
+ {
+ captab-spread = {#1},capfig-spread = {#1},
+ caplst-spread = {#1}
},
- caption-every .initial:n = 1.2,
- every .meta:n =
+ caption-spread .initial:n = 1.2,
+ everyspread .meta:n =
{
- line = {#1},table = {#1},math = {#1},
- caption-every = {#1},footnote = {#1}
+ linespread = {#1},tabspread = {#1},mathspread = {#1},
+ caption-spread = {#1},fntspread = {#1}
},
abovedisplayskip .code:n =
{ \AfterPreamble{\skip_set:Nn \abovedisplayskip {#1}} },
@@ -1983,18 +2112,46 @@
}
},
belowdisplayskip .initial:n = 0.5ex plus .1ex minus .1ex,
- unknown .code:n = \eb_msg_deprecated_option:n { spread }
+ unknown .code:n = \eb_msg_deprecated_option:n { space }
}
\tl_if_eq:NnT \l__ctex_scheme_tl { chinese }
{
\fp_compare:nNnTF { \l__ctex_line_spread_fp } = { 1.3 }
- { \ctex_set:nn { spread } { line = 1.354,table = 1.354 } }
- { \ctex_set:nn { spread } { line = \fp_use:N \l__ctex_line_spread_fp } }
+ {
+ \ctex_set:nn { space }
+ { linespread = 1.354,tabspread = 1.354 }
+ }
+ {
+ \ctex_set:nn { space }
+ { linespread = \fp_use:N \l__ctex_line_spread_fp }
+ }
}
\AfterPreamble{\skip_set:Nn \abovedisplayshortskip { 0ex plus .1ex }}
+\cs_new_protected:Npn \eb@register@cap@options #1
+ {
+ \ctex_define:nn { cap }
+ {
+ #1/unknown .code:n =
+ {
+ \use:x
+ {
+ \exp_not:N \captionsetup[#1]
+ { \eb_unknown_kv_handle: }
+ }
+ },
+ #1/unknown .default:V = \c_novalue_tl,
+ #1 .meta:nn = { ctex/cap/#1 } {##1}
+ }
+ }
+\cs_new_protected:Npn \RegisterCapOptions #1
+ {
+ \clist_map_function:nN {#1}
+ \eb@register@cap@options
+ }
+\RegisterCapOptions{table,figure,lstlisting}
\clist_map_inline:nn
- { table,figure,listing }
+ { table,figure,lstlisting }
{
\DeclareCaptionFont{eb@#1@font}
{
@@ -2012,7 +2169,7 @@
}
\captionsetup[table]{font = eb@table@font}
\captionsetup[figure]{font = eb@figure@font}
-\captionsetup[lstlisting]{font = eb@listing@font}
+\captionsetup[lstlisting]{font = eb@lstlisting@font}
\ctex_at_end_package:nn { bicaption }
{
\captionsetup[figure][bi-second]{name = Figure}
@@ -2176,10 +2333,20 @@
\RequirePackage{amsthm,thmtools}
\cs_set_eq:NN \eb@declaretheoremstyle@save \declaretheoremstyle
\cs_set_eq:NN \eb@declaretheorem@save \declaretheorem
- \RenewDocumentCommand{\declaretheoremstyle}{O{}mO{}}
+ \RenewDocumentCommand{\declaretheoremstyle}{+O{}m+O{}}
{\eb@declaretheoremstyle@save[#1,#3]{#2}}
- \RenewDocumentCommand{\declaretheorem}{O{}mO{}}
- {\eb@declaretheorem@save[style = default,#1,#3]{#2}}
+ \RenewDocumentCommand{\declaretheorem}{+O{}m+O{}}
+ {
+ \eb@declaretheorem@save[style = default,#1,#3]{#2}
+ \settheoremtocline{#2}
+ {
+ \listnumberline{#2}
+ \thmtname\thmtifnote{~(\thmtnote)}{}
+ }
+ \cs_gset:cpn { thmt@contentsline@#2 }
+ { \thmt@contentslineIfNamed }
+ \exp_args:Nc \providecommand { p@#2 }[1]{##1}
+ }
\ctex_define:nn { thmt }
{
loeskip .skip_set:N = \eb@thmt@loe@skip,
@@ -2199,7 +2366,7 @@
\theoremstyle{default}
\cs_undefine:N \proof
\DeclareFloatList{theorem}{loe}
- \AllotPartialExt{loe}{ple}
+ \AssignPartialExt{loe}{ple}
\eb_preto_cmd:nn { listoftheorems }
{
\group_begin:
@@ -2226,7 +2393,7 @@
\NewDocumentCommand{\settheoremtocline}{smm}
{
\IfBooleanT{#1}{\def\thmt@contentslineIgnore{\thmt@contentsline}}
- \cs_set:cpn { ll@#2 } {#3}
+ \cs_set:cpn { ll@#2 } { \@bsphack #3\@esphack }
}
}
@@ -2310,7 +2477,7 @@
{ \exp_args:NV \bibliographystyle \l__eb_bib_both_style_tl }
\tl_if_blank:VF \l__eb_bib_cite_style_tl
{ \exp_args:NV \setcitestyle \l__eb_bib_cite_style_tl }
- \NewDocumentCommand{\printbibliography}{st+o}
+ \NewDocumentCommand{\printbibliography}{st++o}
{
\group_begin:
\tl_set_eq:NN \eb@toc@title \bibname
@@ -2354,8 +2521,11 @@
\tl_gset:Nn \blx@default@theheading { bibintoc }
\defbibheading{bibintoc}[\bibname]{\eb_biber_toc_title:n {##1}}
\skip_zero:N \bibitemsep
+ \setcounter{biburlucpenalty}{1}
+ \setcounter{biburllcpenalty}{1}
+ \setcounter{biburlnumpenalty}{1}
}
-\eb_at_end_preamble:n
+\ctex_before_end_preamble:n
{
\providecommand{\bibname}{\refname}
\clist_if_empty:NF \l__eb_bib_datafile_clist
@@ -2366,7 +2536,7 @@
}
}
-\cs_new:Npn \eb@lst@if@display #1#2
+\cs_new:Npn \lstifdisplay #1#2
{ \lst@ifdisplaystyle #1\else #2\fi }
\lstdefinestyle{lst-base}
{
@@ -2394,9 +2564,9 @@
{
style = lst-base,
language = [LaTeX]TeX,
- texcsstyle = *\color{ctex@verb}\eb@lst@if@display{\bfseries}{},
- basicstyle = \ttfamily\eb@lst@if@display{\small}{\color{ctex@verb}},
- keywordstyle = \color{ctex@verb}\eb@lst@if@display{\bfseries}{}
+ texcsstyle = *\color{ctex@verb}\lstifdisplay{\bfseries}{},
+ basicstyle = \ttfamily\lstifdisplay{\small}{\color{ctex@verb}},
+ keywordstyle = \color{ctex@verb}\lstifdisplay{\bfseries}{}
}
\lstset{style = lst-latex}
\lstloadlanguages{C,C++,Java,Python,Matlab}
@@ -2580,9 +2750,100 @@
lstlistingname = Code
}
}
+
+\cs_if_exist:NF \DeclareObjectType
+ { \RequirePackage{xtemplate} }
+\DeclareObjectType{easybook}{0}
+\DeclareTemplateInterface{easybook}{cover}{0}
+ {
+ content : tokenlist = \c_empty_tl,
+ beforecode : tokenlist = \c_empty_tl,
+ aftercode : tokenlist = \c_empty_tl,
+ align : choice {l,r,c,n} = c
+ }
+\DeclareTemplateCode{easybook}{cover}{0}
+ {
+ content = \l__eb_cover_content_tl,
+ beforecode = \l__eb_cover_before_code_tl,
+ aftercode = \l__eb_cover_after_code_tl,
+ align =
+ {
+ l = \cs_set_eq:NN \eb_cover_align: \raggedright,
+ r = \cs_set_eq:NN \eb_cover_align: \raggedleft,
+ c = \cs_set_eq:NN \eb_cover_align: \centering,
+ n = \cs_set:Npn \eb_cover_align: { }
+ }
+ }
+ {
+ \AssignTemplateKeys
+ \tl_use:N \l__eb_cover_before_code_tl
+ \group_begin:
+ \eb_cover_align:
+ \tl_use:N \l__eb_cover_content_tl
+ \tex_par:D
+ \group_end:
+ \tl_use:N \l__eb_cover_after_code_tl
+ }
+\DeclareInstance{easybook}{top}{cover}{}
+\DeclareInstance{easybook}{bottom}{cover}{}
+\DeclareInstance{easybook}{middle}{cover}
+ {
+ content =
+ {
+ \notbool{@titlepage}
+ {
+ \renewcommand{\theupfootnote}{\@fnsymbol\c@footnote}
+ \renewcommand{\thefootnote}{\@fnsymbol\c@footnote}
+ }
+ {}
+ \LARGE\@title\par\vskip 3em
+ \large
+ \begin{tabular}[t]{c}
+ \@author
+ \end{tabular}\par\vskip 1.5em
+ \@date
+ \notbool{@titlepage}{\par\vskip 1.5em}{}
+ \@thanks
+ },
+ beforecode =
+ {
+ \ifbool{@titlepage}
+ {
+ \begin{titlepage}
+ \let\footnotesize\small
+ \let\footnoterule\relax
+ \let\footnote\thanks
+ \null\vfil\vskip 60\p@
+ }
+ {\null\vskip 20\p@}
+ },
+ aftercode =
+ {
+ \ifbool{@titlepage}
+ {
+ \vfil\null
+ \end{titlepage}
+ }
+ {\thispagestyle{plain}}
+ \setcounter{footnote}{0}
+ }
+ }
+\keys_define:nn { eb/cover }
+ {
+ title .tl_set:N = \@title,
+ author .tl_set:N = \@author,
+ date .tl_set:N = \@date
+ }
+\RenewDocumentCommand{\maketitle}{+O{}}
+ {
+ \keys_set:nn { eb/cover } {#1}
+ \UseInstance{easybook}{top}
+ \UseInstance{easybook}{middle}
+ \UseInstance{easybook}{bottom}
+ }
%</package>
%<*tcolorbox>
-\ProvidesExplFile{eb-tcolorbox.cfg}{2024/05/16}{2024br}
+\ProvidesExplFile{eb-tcolorbox.cfg}{2024/08/14}{2024dj}
{Customization of tcolorbox for easybook}
\cs_set_protected:Npn \addtotcbstyle #1#2
diff --git a/macros/latex/contrib/easybook/easybook.pdf b/macros/latex/contrib/easybook/easybook.pdf
index 989da36329..54a5f7024c 100644
--- a/macros/latex/contrib/easybook/easybook.pdf
+++ b/macros/latex/contrib/easybook/easybook.pdf
Binary files differ
diff --git a/macros/latex/contrib/easybook/easybook.tex b/macros/latex/contrib/easybook/easybook.tex
index 1c3687bbde..02adc43f5f 100644
--- a/macros/latex/contrib/easybook/easybook.tex
+++ b/macros/latex/contrib/easybook/easybook.tex
@@ -4,8 +4,8 @@
\usepackage[fontset = fandol]{ctex}
\usepackage
{
- enumitem,indentfirst,tabularray,fancyvrb,
- geometry,hologo,pifont,changelog,calc
+ enumitem,indentfirst,tabularray,
+ fancyvrb,geometry,hologo,changelog,calc
}
\definecolorscheme{blue}
{
@@ -23,8 +23,8 @@
name = easybook,
color-scheme = blue,
title = EASYBOOK使用手册,
- version = v2024br,
- date = 2024/05/16,
+ version = v2024dj,
+ date = 2024/08/14,
authors = 瞿毅,
info = 简便地排版中文学位论文或书籍,
email = toquyi@163.com,
@@ -33,9 +33,9 @@
{
\easybook{} 是基于 \cls*{ctexbook} 书籍文档类创建的纯净学术模板,同时兼具 \cls*{book} 与 \cls*{article} 文档类的功能。结合中国许多高校学位论文的通用框架设计,提供多个命令和接口可以使用户简便地定制论文模板。它的基础宏包 \pkg*{easybase} 还可以搭配 \CTeX 和标准文档类使用。
},
- arg-format = \normalfont\small\itshape\xeCJKVerbAddon,
+ arg-format = \normalfont\small\kaishu\xeCJKVerbAddon,
abstract-format = \small,
- module-sep = \,\raisebox{-1pt}{\ding{224}}\,,
+ module-sep = \,$\Rightarrow$\,,
title-format = \huge\sffamily
}
\KOMAoptions{numbers = noenddot}
@@ -45,21 +45,20 @@
\addtokomafont{section}{\normalfont\sffamily}
\addtokomafont{subsection}{\normalfont\sffamily}
\addtokomafont{subsubsection}{\normalfont\sffamily}
+\setkomafont{pagehead}{\normalfont\kaishu}
\DeclareTOCStyleEntry[entryformat = \sffamily]{default}{section}
\DeclareFieldFormat[book]{title}{\textsf{#1}}
\geometry{margin = 1in,marginparwidth = 0.6in,footskip = 0.5in}
\renewlist{cnltxlist}{description}{2}
-\SetEnumitemValue{label}{smallbullet}{\small\color{DarkBlue}\textbullet}
+\SetEnumitemValue{label}{textbullet}{\color{DarkBlue}\textbullet}
\setlist{nosep,topsep = \smallskipamount,labelsep = 0.5em}
-\setlist[1]{labelindent = \parindent}
-\setlist[itemize,1]{label = smallbullet,leftmargin = *}
+\setlist[1]{labelindent = \parindent,leftmargin = *}
+\setlist[itemize,1]{label = textbullet}
\setlist[cnltxlist]
{
leftmargin = 0pt,
- labelwidth = 2em,
itemindent = -1em,
- labelsep = 0pt,
- listparindent = 2em,
+ listparindent = \parindent,
topsep = \smallskipamount,
itemsep = \smallskipamount,
partopsep = 0ex,
@@ -121,7 +120,9 @@
\@firstofone
}
% A tag that distinguishes the options for different paths
-\NewDocumentCommand{\dtag}{sO{\ding{73}}}
+\newcommand{\hface}{$\symbol{"263A}$}
+\newcommand{\sface}{$\symbol{"263B}$}
+\NewDocumentCommand{\dtag}{sO{\hface}}
{
\begingroup
\reversemarginpar
@@ -143,7 +144,7 @@
\code{\choices{#2}}
}
% Use a separate module margin marker to prevent overlap
-\newcommand{\smodule}[1]{\cnltx@module@text*{\normalsize #1}}
+\newcommand{\smodule}[1]{{\normalsize\cnltx@module@text*{#1}}}
\renewcommand{\cnltx@package@abstract@width}{0.85\linewidth}
\renewcommand{\cnltx@write@lastname}{}
\newcounter{ctexexam}
@@ -185,6 +186,12 @@
\def\keylit{\@cnltx@option@item\keyis}
\def\keychoice{\@cnltx@option@item\choicekey}
\def\keybool{\@cnltx@option@item\boolkey}
+\renewenvironment{changelogdescription}
+ {\begin{description}[leftmargin = \parindent]}
+ {\end{description}}
+\renewenvironment{changelogitemize}
+ {\begin{itemize}[leftmargin = *]}
+ {\end{itemize}}
\makeatother\ExplSyntaxOff
\labelformat{section}{节#1}
\labelformat{subsection}{小节#1}
@@ -202,51 +209,37 @@
\end{itemize}
\subsection{前言}
-对于排版外文文档已有诸如 \cls*{KOMA-Script} 和 \cls*{memoir} 等应用广泛的文档类,但这些文档类并不是为中文用户设计的,难免有些水土不符,且用户手册繁杂,对于普通用户来说学习成本高,难以快速上手。中文文档的解决方案 \pkg*{ctex} 宏集解决了中文输出和章节标题格式的设置问题,但在编写文档过程中往往需要更多基本的定制功能,例如目录、图表标题、页眉页脚、脚注和页面边距等,这往往需要额外加载不同功能的宏包。\easybook{} 文档类在 \cls*{ctexbook} 基础上载入了一些使用频率较高且基本稳定的宏包,对它们的功能进行整合并优化联动使用,模块化的改装提供统一的接口兼容 \pkg*{ctex} 文档类,可以满足学术类文档例如中国学位论文模板的基本需求。\easybook{} 提供了与 \CTeX 相同现代化风格的键值设置,支持不同类型的选项与层次化的选项设置。
+对于排版外文文档已有诸如 \cls*{KOMA-Script} 和 \cls*{memoir} 等应用广泛的文档类,但这些文档类并不是为中文用户设计的,难免有些水土不符,且用户手册繁杂,对于普通用户来说学习成本高,难以快速上手。中文文档的解决方案 \CTeX 宏集解决了中文输出和章节标题格式的设置问题,但在编写文档过程中往往需要更多基本的定制功能,例如目录、图表标题、页眉页脚、脚注和页面边距等,这往往需要额外加载不同功能的宏包。\easybook{} 文档类在 \cls*{ctexbook} 基础上载入了一些使用频率较高且基本稳定的宏包,对它们的功能进行整合并优化联动使用,模块化的改装提供统一的接口兼容 \CTeX 文档类,可以满足学术类文档例如中国学位论文模板的基本需求。\easybook{} 提供了与 \CTeX 相同现代化风格的键值设置,支持不同类型的选项与层次化的选项设置。
\subsection{基本用法}
\label{subsec:basic usage}
-以下一份简单的 \TeX 文档演示了 \easybook{} 的最基本用法,在导言区进行宏包载入与文档设置,一些详细的使用样例会不定期上传在 \href{https://www.latexstudio.net/}{\hologo{LaTeX} 工作室} 的网站。
+以下一份简单的 \TeX 文档演示了 \easybook{} 的最基本用法,在导言区进行宏包载入与文档设置,一些详细的使用样例会不定期上传在 \href{https://www.latexstudio.net/}{\hologo{LaTeX} 工作室} 的网站。或者直接使用 \pkg*{easybase} 宏包,目前适用于 \cls*{ctexbook}、\cls*{ctexrep}、\cls*{ctexart} 以及标准文档类,包含了\ref{sec:interface options} 所示各个模块接口命令的功能。当在\textbf{标准文档类}后载入时还可以使用 \pkg*{ctex} 宏包的选项,将会传递给 \pkg*{ctex} 宏包。文档类和宏包支持的全局选项见\ref{sec:document class options}。
\begin{frameverb}
- \documentclass[文档类选项]{easybook}
+ \documentclass[全局选项]{easybook}
+ % \documentclass[全局选项]{ctexbook}
+ % \usepackage[全局选项]{easybase}
\ctexset{键值列表}
\usepackage{宏包列表}
\begin{document}
- \chapter{欢迎}
- \section{Welcome to easybook}
- Hello, \LaTeX
- \end{document}
-\end{frameverb}
-
-或者直接使用 \pkg*{easybase} 宏包,目前适用于 \cls*{ctexbook}、\cls*{ctexrep}、\cls*{ctexart} 以及标准文档类,包含了\ref{sec:interface options} 所示各个模块接口命令的功能。它的宏包选项共享文档类选项的一部分,支持的选项见\ref{sec:document class options}。当在\textbf{标准文档类}后载入时还可以使用 \pkg*{ctex} 宏包的选项,将会传递给 \pkg*{ctex} 宏包。
-\begin{frameverb}
- \documentclass[文档类选项]{ctexbook}
-
- \usepackage[宏包选项]{easybase}
- \ctexset{键值列表}
-
- \usepackage{宏包列表}
-
- \begin{document}
- \chapter{欢迎}
+ \chapter{hello :)}
\section{Welcome to easybook}
Hello, \LaTeX
\end{document}
\end{frameverb}
\subsection{编译方式}
-假设您的 \TeX 源文件名为 \code{easybook.tex},需要使用参考文献和索引功能,并使用 \hologo{XeLaTeX} 和 \hologo{BibTeX} 引擎编译文档,那么需要在命令行中执行:
+假设您的 \TeX 源文件名为 \code{easybook-demo.tex},需要使用参考文献和索引功能,并使用 \hologo{XeLaTeX} 和 \hologo{BibTeX} 引擎编译文档,那么需要在命令行中执行:
\begin{frameverb}
- xelatex -shell-escape easybook
- bibtex easybook
- makeindex easybook
- xelatex -shell-escape easybook
- xelatex -shell-escape easybook
+ xelatex -shell-escape easybook-demo
+ bibtex easybook-demo
+ makeindex easybook-demo
+ xelatex -shell-escape easybook-demo
+ xelatex -shell-escape easybook-demo
\end{frameverb}
当然也可以使用 \code{latexmk} 及一些软件自带的编译工具,这里就不做介绍。 \\
-\ding{72} 需要注意正确\textbf{编译索引}要增加 \code{-shell-escape} 命令行选项。
+$\blacktriangleright$需要注意正确\textbf{编译索引}要增加 \code{-shell-escape} 命令行选项。
\subsection{依赖宏包}
\ref{table:package list} 为 \pkg*{easybase} 直接调用的关键宏包清单,通常情况下它们是常用且稳定的。\colorbox{PaleTurquoise}{蓝色}背景的宏包表示修改了或依赖它们的内部命令。\colorbox{GreenYellow}{绿色}背景的宏包表示并未调用它们,但做了一些预配置,可在导言区手动载入以实现相关的功能。
@@ -256,7 +249,8 @@
cells = {cmd = \pkg*},
cell{1}{3,4} = PaleTurquoise,
cell{2}{5} = PaleTurquoise,
- cell{3}{2,4} = PaleTurquoise,
+ cell{4}{5} = PaleTurquoise,
+ cell{5}{2} = PaleTurquoise,
cell{5}{1} = GreenYellow,
cell{1}{2} = GreenYellow,
cell{3}{1,4} = GreenYellow
@@ -265,12 +259,12 @@
enumitem & etoolbox & fancyhdr & geometry & hyperref \\
imakeidx & listings & marginnote & mathtools & multicol \\
pifont & pdfpages & siunitx & spbmark & thmtools \\
- tcolorbox & titletoc & tabularray & ulem &
+ tcolorbox & titletoc & tabularray & &
\end{longtblr}
-\section{文档类选项}
+\section{全局选项}
\label{sec:document class options}
-文档类选项应当在使用 \easybook{} 文档类或 \pkg*{easybase} 宏包(部分支持)时指定,可见\ref{subsec:basic usage} 的例子。选项前带有 \ding{73} 符号表示只可用于文档类,否则文档类与宏包都适用。除了下面列举的选项以外,还支持标准和 \CTeX 文档类的选项。
+全局选项应当在使用 \easybook{} 文档类或 \pkg*{easybase} 宏包(部分支持)时指定,可见\ref{subsec:basic usage} 的例子。选项前带有\hface 符号表示只可用于文档类,否则文档类与宏包都适用。文档类选项除了下面额外增加的以外,还支持标准和 \CTeX 文档类的选项。
\subsection{基本选项}
\begin{cnltxlist}
@@ -284,7 +278,7 @@
同时开启 \option{newline} 和 \keyis{scheme}{plain} 选项以符合英文原生风格。
\keychoice{paper}{\fbox{a4paper},b5paper,c5paper,letterpaper,\optpath*{other paper}}
文档页面尺寸选项将参数交给 \pkg*{geometry} 宏包处理,可使用它支持的所有标准纸张规格。
- \keyval{configs}{配置文件列表}\dtag\newtag[Chg]%
+ \keyval{configs}{配置文件列表}\dtag
载入用户配置的文件名列表,文件列表以花括号包裹并以英文逗号分隔。文件名应包含如 \code{tex}、\code{def} 或 \code{cfg} 等扩展名。若配置文件不在当前文件夹则文件名需要包含路径,即 \code{path/file.cfg}。
\keychoice{floatpage}{true,\fbox{false}}
开启这个选项后浮动环境 \env{table} 和 \env{figure} 的比例参数会使用默认值。关闭它则尽可能避免出现浮动页,使图表环境与正文段落更加紧凑,减少多余的空白版面。
@@ -304,13 +298,19 @@
\setCJKmonofont{FangSong}
\newCJKfontfamily[song]\songti{SimSun}
\end{ctexexam}
+
+ 如果用 \textsf{Overleaf} 或 \textsf{TeXPage} 等在线平台编译文档,则只有 \code{fandol} 字体可用。使用其它字体可将字体文件上传至项目文件夹,例如上传至 \code{font} 文件夹设置正文和无衬线字体:
+ \begin{ctexexam}
+ \setCJKmainfont{simsun.ttc}[Path = ./font/]
+ \setCJKsansfont{simhei.ttf}[Path = ./font/]
+ \end{ctexexam}
\keychoice{font}{noto,times,times*,ebgaramond,libertine,palatino,\fbox{auto}}\dtag
- 预置的英文字体相关配置方案如\ref{table:english font} 所示。这些字体已经包含在了 \hologo{TeXLive} 发行版中,所以通常不需要再专门安装。如果您想使用其它英文字体,可以使用 \pkg*{fontspec} 宏包的相关命令进行设置。
+ 预置的英文字体相关配置方案如\ref{table:english font} 所示。这些字体已经包含在了 \hologo{TeXLive} 发行版中,所以通常不需要再专门安装。如果您想使用默认的Latin Modern或其它英文字体,可以使用 \code{auto} 选项配合 \pkg*{fontspec} 宏包的相关命令进行设置。
\begin{longtblr}
[
caption = 英文字体预设方案,
label = table:english font,
- remark{\ding{72}} = \code{times*} 方案为 \textsf{windows} 系统的预置字体。,
+ remark{$\blacktriangleright$} = \code{times*} 方案为 \textsf{windows} 系统的预置字体。,
postsep = \bigskipamount-\itemsep
]{
hline{2} = {0.5pt,DarkBlue},
@@ -340,11 +340,11 @@
开启 \cls*{article} 文章模式,与 \keyis*{class}{article} 等效。
\end{cnltxlist}
-\section{接口选项}
+\section{模块选项}
\label{sec:interface options}
\begin{cnltxlist}
- \command*{ctexset}[\oarg{模块名}\marg{键值列表}]
- \easybook{} 扩展了 \CTeX 宏集 \hologo{LaTeX3} 风格键值的通用控制命令 \cs*{ctexset},接口选项同样可用它设置,原有的 \meta{键值列表} 仍然可用。本文档类目前有9个模块用于实现常规的排版功能,如\ref{table:module List} 所示。
+ \command{ctexset}[\oarg{模块名}\marg{键值列表}]
+ \easybook{} 扩展了 \CTeX 宏集 \hologo{LaTeX3} 风格键值的通用控制命令 \cs{ctexset},模块选项同样可用它设置,原有的 \meta{键值列表} 仍然可用。本文档类目前有10个模块用于实现常规的排版功能,如\ref{table:module List} 所示。
\begin{longtblr}
[caption = 模块功能和名称清单,label = table:module List]
{
@@ -352,13 +352,13 @@
row{1,3} = {font = \sffamily},
row{2,4} = {cmd = \module*}
}
- \hyperref[subsec:tools]{工具} & \hyperref[subsec:font]{部件字体} & \hyperref[subsec:spread]{行距} & \hyperref[subsec:hyperlinks]{超链接} & \hyperref[subsec:reference]{参考文献} \\
- tools & font & spread & ref & bib \\
- \hyperref[subsec:theorem]{定理} & \hyperref[subsec:page margins]{页面尺寸} & \hyperref[subsec:header and footer]{页眉页脚} & \hyperref[subsec:catalog]{目录} & \\
- thmt & geo & hdr & toc &
+ \hyperref[subsec:tools]{工具} & \hyperref[subsec:font]{部件字体} & \hyperref[subsec:space]{间距} & \hyperref[subsec:hyperlinks]{超链接} & \hyperref[subsec:reference]{参考文献} \\
+ tools & font & space & ref & bib \\
+ \hyperref[subsec:theorem]{定理} & \hyperref[subsec:page margins]{页面尺寸} & \hyperref[subsec:header and footer]{页眉页脚} & \hyperref[subsec:contents]{目录} & \hyperref[subsec:caption]{图表题注} \\
+ thmt & geo & hdr & toc & cap
\end{longtblr}
- \ref{exam:kv setting} 使用\ref{subsec:tools} 介绍的工具模块 \module*{tools} 举例三种键值列表设置方式:1. 各 \meta{模块名} 是统一接口 \cs*{ctexset} 的键路径。2. 不同模块还具有单独的接口命令 \cs*{eb}\meta{模块名}\code{\textcolor{cs}{set}}。3. \meta{模块名} 也可以使用 \cs*{ctexset} 命令的可选参数设置。路径名与所属下级选项之间可以 \code{/} 或 \code{=} 号分开,斜线 \code{/} 后不能有空格或者换行。
+ \ref{exam:kv setting} 使用\ref{subsec:tools} 介绍的工具模块 \module*{tools} 举例三种键值列表设置方式:1. 各 \meta{模块名} 是统一接口 \cs{ctexset} 的键路径。2. 不同模块还具有单独的接口命令 \cs*{eb}\meta{模块名}\code{\textcolor{cs}{set}}。3. \meta{模块名} 也可以使用 \cs{ctexset} 命令的可选参数设置。路径名与所属下级选项之间可以 \code{/} 或 \code{=} 号分开,斜线 \code{/} 后不能有空格或者换行。
\begin{ctexexam}[labelref = exam:kv setting]
\ctexset
{
@@ -373,11 +373,12 @@
\ebtoolsset{hyphen-figure = {-}}
\end{ctexexam}
- \easybook{} 文档类有三种选项:布尔型 \choicekey*{key}{true,false},选项的值为真 \code{true} 或假 \code{false},如果不指定默认为真。键值型 \key*{key}{value} 需要为选项指定值,后面 \code{=} 号不能省略。选择型 \choicekey*{key}{one,\fbox{two},three} 根据提供的可选值进行设定。
+ \easybook{} 文档类有四种选项:1. 布尔型 \choicekey*{key}{true,false} 选项的值为真 \code{true} 或假 \code{false},如果不指定默认为真。2. 键值型 \key*{key}{value} 需要为选项指定值,后面 \code{=} 号不能省略。3. 键型 \option*{key} 不需要为选项指定值。4. 选择型 \choicekey*{key}{one,\fbox{two},three} 根据提供的可选值进行设定。
\end{cnltxlist}
\subsection[工具]{工具\smodule{tools}}
\label{subsec:tools}
+工具模块 \module*{tools} 主要用于综合设置各类杂项的排版元素。
\begin{cnltxlist}
\keychoice{color}{\fbox{none},seaside,energy,cyberpunk}
\easybook{} 预置了四种颜色主题,默认主题 \code{none} 为黑白页面,颜色主题不包括超链接。
@@ -397,59 +398,32 @@
设置脚注跟随编号的计数器,仅在导言区有效。默认跟随章计数器,即开启新的章标题时脚注编号从1开始。
\keychoice{uppercase}{\fbox{all},first,none,none*}
使用 \cs{rightmark} 和 \cs{leftmark} 等标题标记命令获取标题内容用于页眉页脚时其中英文的大小写类型。\code{all} 为标题标记中的英文字母全部大写。\code{first} 为标记以英文起始时仅第一个字母大写。\code{none} 不改变标记中英文字母的大小写形式,变体 \code{none*} 则强制标记的字母均为小写形式。
- \kvsplit{tagform}{左括号,右括号}\Default{\Marg{(,)}}\newtag[Chg]%
+ \kvsplit{tagform}{左括号,右括号}\Default{\Marg{(,)}}
设置行间公式标签的括号及格式,以英文逗号分隔,分别代表左右括号。\meta{左括号} 的末尾可以是带有一个参数的命令,用于接受公式编号。将标签括号设置为方括号,并给编号使用无衬线字体:
\begin{ctexexam}
\newcommand{\bracketsf}[1]{[\textsf{#1}}
\ebtoolsset{tagform = {\bracketsf,]}}
\end{ctexexam}
- \kvsplit-{figurepath}{\marg{路径名1}\marg{路径名2}$\cdots$\marg{路径名n}}
- 设置插入图片的文件夹路径名。可以有多个路径名,每个路径包含在花括号内分隔,只有一个路径时需要包含在两层括号内。
-\end{cnltxlist}
+ \kvsplit-{figurepath}{\marg{路径名1}\marg{路径名2}$\cdots$\marg{路径名n}}\newtagv[Changed]{2024cd}%
+ 设置插入图片的文件夹路径名。每个路径需包含在花括号内,只有一个路径时括号可以省略。
+ \begin{ctexexam}
+ \ctexset{tools/figurepath = path1}
+ \ctexset{tools/figurepath = {path2}{path3}}
+ \end{ctexexam}
-\subsubsection{连字符}
-\begin{cnltxlist}
+ 以下几个选项用于设置题注编号的连字符,\code{chapter} 计数器的值大于0时连字符才有意义。若需更改题注编号的输出格式可在正文中重新定义 \cs*{the}\meta{计数器} 命令。
\keyval{hyphen-figure}{图片连字符}\Default{\Marg{.}}
设置图片题注编号的连字符。
\keyval{hyphen-table}{表格连字符}\Default{\Marg{.}}
设置表格题注编号的连字符。
- \keyval{hyphen-listing}{代码连字符}\Default{\Marg{.}}
- 设置代码题注编号的连字符。
+ \keyval{hyphen-lstlisting}{代码连字符}\Default{\Marg{.}}
+ 设置代码题注编号的连字符。\pkg*{listings} 宏包的 \option{numberbychapter} 选项失效。
\keyval{hyphen-equation}{公式连字符}\Default{\Marg{.}}
设置公式题注编号的连字符。
\keyval{hyphen-every}{连字符}\Default{\Marg{.}}
统一设置上述所有编号的连字符。
\end{cnltxlist}
-\subsubsection{上下标全局设置}
-\label{subsubsec:super-sub-script}
-\begin{cnltxlist}
- \keyval{spvmove}{刚性长度}\Default{0pt}
- 上标命令 \cs{super} 对应的上标垂直偏移量。
- \keyval{sphmove}{刚性长度}\Default{0pt}
- 上标命令 \cs{super} 对应的上标水平偏移量。
- \keyval{sbvmove}{刚性长度}\Default{0pt}
- 下标命令 \cs{sub} 对应的下标垂直偏移量。
- \keyval{sbhmove}{刚性长度}\Default{0pt}
- 下标命令 \cs{sub} 对应的下标水平偏移量。
- \opt{nohmove}
- 同时取消上标和下标的 \meta{水平偏移},与 \keyis{sphmove}{0pt} 和 \keyis{sbhmove}{0pt} 等效。
- \opt{novmove}
- 同时取消上标和下标的 \meta{垂直偏移},与 \keyis{spvmove}{0pt} 和 \keyis{sbvmove}{0pt} 等效。
- \keyval{spcmd}{格式命令}
- 上标命令 \cs{super} 对应的上标的格式命令。
- \keyval{sbcmd}{格式命令}
- 下标命令 \cs{sub} 对应的下标的格式命令。
- \keyval{spbhmove}{刚性长度}\Default{0pt}
- 上下标命令 \cs{supersub} 对应的上下标共同水平偏移量。
- \kvsplit{spbcmd}{上标格式,下标格式}
- 上下标命令 \cs{supersub} 对应的上下标格式命令。以英文逗号分隔为前后两个部分分别设置上下标格式,也可以只有前部分,表示上标的格式。
- \kvsplit{vsep}{上标偏移,下标偏移}\Default{0.6ex}
- 上下标命令 \cs{supersub} 对应的上下标额外垂直距离。前部分为上标的偏移量,后部分为下标的偏移量。如果只有前部分则上下标各自垂直移动当前值的一半。
- \keychoice{halign}{\fbox{l},c,r}
- 上下标命令 \cs{supersub} 对应的上下标水平对齐方式,有左 \code{l}、居中 \code{c} 和右 \code{r} 三种对齐方式。
-\end{cnltxlist}
-
\subsection[超链接]{超链接\smodule{ref}}
\label{subsec:hyperlinks}
模块 \module*{ref} 将超链接选项交给 \pkg*{hyperref} 宏包处理。除了一些超链接颜色的选项失效,其它由宏包全局和接口命令 \cs*{hypersetup} 支持的多数选项可用。
@@ -466,46 +440,47 @@
将目录中的超链接取消、置于标题上、置于页码上或置于标题和页码上。
\end{cnltxlist}
-\subsection[行距]{行距\smodule{spread}}
-\label{subsec:spread}
-行距因子用于设置各种行距倍数,\meta{数值} 是不带有长度单位的浮点数。各类行距既可以在导言区全局设置,也可以在正文中设置对后面生效。
+\subsection[间距]{间距\smodule{space}}
+\label{subsec:space}
+间距模块 \module*{space} 用于调整段落中的间距。带有 \option*{spread} 的选项可以设置行距倍数,\meta{数值} 是不带有长度单位的浮点数。各类行距既可以在导言区全局设置,也可以在正文中设置对后面生效。
\begin{cnltxlist}
- \keyval{line}{数值}\Default{1.354}
- 正文行距因子。中文主题下行距因子初始值为 \code{1.354}(相当于 \textsf{Word} 的1.25倍行距),如果设置了文类或 \pkg*{ctex} 宏包的全局行距选项 \option*{linespread} 则初始值设为它的值。
- \keyval{table}{数值}\Default{1.354}
+ \keyval{linespread}{数值}\Default{1.354}
+ 正文行距因子。中文主题下行距因子初始值为 \code{1.354}(相当于 \textsf{Word} 的1.25倍行距),如果设置了文类或 \pkg*{ctex} 宏包的全局行距选项 \option{linespread} 则初始值设为它的值。
+ \keyval{tabspread}{数值}\Default{1.354}
表格内容行距因子,对传统表格 \env{tabular} 和 \env{tabularx} 等环境生效。\pkg*{tabularray} 宏包的 \env{tblr} 环境自带 \option*{stretch} 和 \option*{rowsep} 等行间距选项,这里不做调整。
- \keyval{math}{数值}\Default{1.2}
+ \keyval{mathspread}{数值}\Default{1.2}
数学环境的行距因子,包含了 \pkg*{amsmath} 和 \pkg*{mathtools} 宏包提供的公式环境。
- \keyval{caption-figure}{数值}\Default{1.2}
+ \keyval{capfig-spread}{数值}\Default{1.2}
图片题注的行距因子。
- \keyval{caption-table}{数值}\Default{1.2}
+ \keyval{captab-spread}{数值}\Default{1.2}
表格题注的行距因子。
- \keyval{caption-listing}{数值}\Default{1.2}
+ \keyval{caplst-spread}{数值}\Default{1.2}
代码题注的行距因子。
- \keyval{caption-every}{数值}\Default{1.2}
+ \keyval{caption-spread}{数值}\Default{1.2}
同时设置图片、表格和代码题注的行距因子。
- \keyval{footnote}{数值}\Default{1.2}
+ \keyval{fntspread}{数值}\Default{1.2}
脚注内容整体的行距因子。可以使用 \module*{hdr} 模块 \option{fnpara-format} 选项的代码单独覆盖每个脚注的行距,从而使脚注间和内容文本自身的行距不同。
\begin{ctexexam}
- \ebspreadset{footnote = 1.3}
+ \ebspaceset{fntspread = 1.3}
\ebhdrset{fnpara-format = \linespread{1.2}\selectfont}
\end{ctexexam}
- \keyval{every}{数值}
+ \keyval{everyspread}{数值}
统一设置上述所有的行距因子。
- \keyval{abovedisplayskip}{弹性长度}\Default{0.5ex plus .1ex minus .1ex}\newtag%
+ \keyval{abovedisplayskip}{弹性长度}\Default{0.5ex plus .1ex minus .1ex}
行间公式与上面正文间的额外距离。
- \keyval{belowdisplayskip}{弹性长度}\Default{0.5ex plus .1ex minus .1ex}\newtag%
+ \keyval{belowdisplayskip}{弹性长度}\Default{0.5ex plus .1ex minus .1ex}
行间公式与下面正文间的额外距离。
\end{cnltxlist}
\subsection[部件字体]{部件字体\smodule{font}}
\label{subsec:font}
+部件字体模块 \module*{font} 用于设置除了正文外其它排版元素的字体。
\begin{cnltxlist}
\keyval{caption-table}{字体命令}\Default{\cs*{sffamily}\cs*{small}}
设置表格题注的字体,包括字体族、字体系列、字体尺寸和字体形状命令。
\keyval{caption-figure}{字体命令}\Default{\cs*{sffamily}\cs*{small}}
设置图片题注的字体,包括字体族、字体系列、字体尺寸和字体形状命令。
- \keyval{caption-listing}{字体命令}\Default{\cs*{sffamily}\cs*{small}}
+ \keyval{caption-lstlisting}{字体命令}\Default{\cs*{sffamily}\cs*{small}}
设置代码题注的字体,包括字体族、字体系列、字体尺寸和字体形状命令。
\keyval{caption-every}{字体命令}\Default{\cs*{sffamily}\cs*{small}}
同时设置图片、表格和代码题注的字体命令。
@@ -514,7 +489,7 @@
\keyval{marginpar}{字体命令}\Default{\cs*{footnotesize}}
设置边注的字体,包括字体族、字体系列、字体尺寸和字体形状命令。
\command{ebaddtofont}[\marg{字体类型}\marg{字体命令}]
- 用于在上述各种字体原有的格式上附加代码。其中 \meta{字体命令} 也可以包括行距命令且相对于 \module*{spread} 模块具有优先性,不同题注的 \meta{字体类型} 则为相应选项的后缀名。
+ 用于在上述各种字体原有的格式上附加代码。其中 \meta{字体命令} 也可以包括行距命令且相对于 \module*{space} 模块具有优先性,不同题注的 \meta{字体类型} 则为相应选项的后缀名。
\begin{ctexexam}
\ebaddtofont{every}{\linespread{1.5}\selectfont}
\ebaddtofont{footnote}{\sffamily}
@@ -525,7 +500,7 @@
\label{subsec:reference}
\begin{cnltxlist}
\keychoice{backend}{\fbox{bibtex},biblatex}
- 参考文献处理后端。默认用传统的 \hologo{BibTeX} 处理参考文献\footnote{使用 \hologo{BibTeX} 引擎时加载 \pkg*{natbib} 宏包,使用 \hologo{biber} 时将加载 \pkg*{biblatex} 宏包。}。
+ 参考文献处理后端。选择 \code{bibtex} 时使用传统的 \hologo{BibTeX} 引擎处理参考文献,加载 \pkg*{natbib} 宏包。选择 \code{biblatex} 时使用 \hologo{biber} 引擎,加载 \pkg*{biblatex} 宏包。若自动载入参考文献宏包则位于导言区末尾,但在 \pkg*{hyperref} 宏包之前。
\keychoice{bibstyle}{\fbox{numerical},authoryear,\optpath*{other sty}}
参考文献格式使用中国参考文献推荐标准GB/T 7714-2015,对应顺序编码制和著者—出版年制两种风格。若使用其它格式,使用 \hologo{BibTeX} 处理时需确保正确的 \code{bst} 文件,使用 \hologo{biber} 处理可使用 \pkg*{biblatex} 宏包支持的参考文献风格名称。
\keyval{citestyle}{标注风格}
@@ -541,9 +516,9 @@
\keyval{prenote}{参考文献前注}
该选项选择由 \cs{defbibnote} 所定义的前注,缺省状态下不打印任何前注。
\keyval{section}{整数}\Default{0}
- 只打印在指定文节中引用的条目。该参考文献节从1开始编号,所有在 \env*{refsection} 环境外给出的引用标记为第零节。
+ 只打印第 \meta{整数} 文节中引用的条目。该参考文献节从1开始编号,所有在 \env*{refsection} 环境外给出的引用标记为第零节。
\keyval{type}{条目类型}
- 指定条目的打印类型。
+ 只打印名为 \meta{条目类型} 的文献条目。
\keyval{filter}{过滤器名}
使用由 \cs{defbibfilter} 定义的 \option*{filter} 来过滤条目。
@@ -577,11 +552,11 @@
\keyval{style}{定理样式}\Default{default}
选项的值为使用 \cs{declaretheoremstyle} 命令新定义的定理样式。
- 使用 \cs{declaretheorem} 命令以\ref{exam:new theorem sty} 中的定理样式 \code{fancy} 新建一个定理环境猜想,然后用一个基于 \pkg*{tcolorbox} 宏包的预置彩色盒子 \env{easyboxi} 增加背景:
+ 使用 \cs{declaretheorem} 命令以\ref{exam:new theorem sty} 中的定理样式 \code{fancy} 新建一个定理环境 \env*{lemma},然后用一个基于 \pkg*{tcolorbox} 宏包的预置彩色盒子 \env{easyboxi} 增加背景:
\begin{ctexexam}[labelref = exam:new theorem env]
- \declaretheorem[style = fancy,name = 猜想]{caixiang}
+ \declaretheorem[style = fancy,name = 引理]{lemma}
\addtotcbstyle{tc-easyboxi}{colback = GreenYellow}
- \tcolorboxenvironment{caixiang}{tc-easyboxi}
+ \tcolorboxenvironment{lemma}{tc-easyboxi}
\end{ctexexam}
\command{declaretheoremstyle}[\oarg{键值列表1}\marg{定理样式}\oarg{键值列表2}]
定理样式声明命令,键值列表支持自身以及定理声明命令 \cs{declaretheorem} 的所有选项。可选参数的 \meta{键值列表1} 与 \meta{键值列表2} 等效,其中支持的选项如下:
@@ -624,21 +599,21 @@
\command{listoftheorems}[\sarg\oarg{键值列表}]\default{}
\item\key{listoftheorems}{定理目录标题名}
\command{settheoremtocline}[\sarg\marg{环境名}\marg{标题定义}]\newtagv{2024bb}%
- 对 \pkg*{thmtools} 宏包的定理环境目录命令 \cs{listoftheorems} 进行了适配调整,\ref{subsec:directory command} 和\ref{subsec:catalog} 中的选项机制均可用,但标题定义选项 \option{tocline} 较为特殊,需用 \cs{settheoremtocline} 命令单独设置。在 \meta{标题定义} 中有三个命令 \cs{thmtname}、\cs{thmtenvname} 和 \cs{thmtnote} 分别代表定理名、定理环境名和题注用于排版目录条目。
+ 对 \pkg*{thmtools} 宏包的定理环境目录命令 \cs{listoftheorems} 进行了适配调整,\ref{subsec:directory command} 和\ref{subsec:contents} 中的选项机制均可用,但标题定义选项 \option{tocline} 较为特殊,需用 \cs{settheoremtocline} 命令单独设置。在 \meta{标题定义} 中有三个命令 \cs{thmtname}、\cs{thmtenvname} 和 \cs{thmtnote} 分别代表定理名、定理环境名和题注用于排版目录条目。
\end{cnltxlist}
\optpath{thmt/}\key{loeskip}{弹性长度}\Default{10pt}
定理目录中每章第一个条目上方增加的垂直距离。与 \CTeX 的表格和图片目录中每章间的条目距离选项 \option*{lotskip} 和 \option*{lofskip} 类似,在 \cls*{article} 模式中此选项失效。
\command{thmtifnote}[\marg{存在题注代码}\marg{不存在题注代码}]
- 如果标题没题注即定理环境不用可选参数,则标题不加入定理目录,这是默认且合理的行为。若需要将无题注的标题加入目录可将 \meta{环境名} 加入目录风格的 \option{show} 选项或使用 \cs*{settheoremtocline}\code{*} 命令。是否存在题注需要在 \meta{标题定义} 中使用 \cs{thmtifnote} 命令判定,从而输出不同的内容。
+ 如果标题没题注即定理环境不用可选参数,则标题不加入定理目录,这是默认且合理的行为。若需要将无题注的标题加入目录可将 \meta{环境名} 传给目录风格的 \option{show} 选项或使用 \cs*{settheoremtocline}\code{*} 命令。是否存在题注需要在 \meta{标题定义} 中使用 \cs{thmtifnote} 命令判定,从而输出不同的内容。
\command{thmtifname}[\marg{存在编号代码}\marg{不存在编号代码}]
在 \meta{标题定义} 中测试当前定理是否有编号从而输出不同的内容,定理风格选项 \keyis{numbered}{no} 设置当前定理环境没有编号。
\begin{ctexexam}
- \contentsuse{caixiang}{loe}
- \RegisterTocName{caixiang}
- \setlisttheoremstyle{ignoreall,show = caixiang}
- \settheoremtocline{caixiang}
- {%
- \listnumberline{caixiang}
+ \contentsuse{lemma}{loe}
+ \RegisterTocName{lemma}
+ \setlisttheoremstyle{ignoreall,show = lemma}
+ \settheoremtocline{lemma}
+ {
+ \listnumberline{lemma}
\thmtname\thmtifnote{[\thmtnote]}{}
}
\end{ctexexam}
@@ -646,16 +621,16 @@
\subsection[页面尺寸]{页面尺寸\smodule{geo}}
\label{subsec:page margins}
-模块 \module*{geo} 会将选项(除了前两个为附加)交给页面尺寸宏包 \pkg*{geometry} 处理,并且支持它的键值列表,预置的页面尺寸与 \textsf{Word} 的默认值接近。下面列举几种代表性选项,其它选项可查阅宏包帮助文档。当在此设置纸张规格时,会覆盖文类选项 \option{paper} 的设置。
+页面尺寸模块 \module*{geo} 用于设置纸张大小和各种页面边距,它将选项交给页面尺寸宏包 \pkg*{geometry} 处理,并且支持它的键值列表,预置的页面尺寸与 \textsf{Word} 的默认值接近。下面列举几种 \pkg*{geometry} 的代表性选项,前面有\hface 符号的选项为额外附加,其它选项可查阅宏包帮助文档。当用此模块设置纸张规格时,会覆盖全局选项 \option{paper} 的设置。
\begin{cnltxlist}[itemsep = 0ex]
- \keyval{headruleskip}{页眉线间距}\Default*{0pt}
- \keyval{footruleskip}{页脚线间距}\Default*{3.5pt}
- \kvsplit{hdivide}{左边距,版心文本宽度,右边距}\default{}
+ \keyval{headruleskip}{页眉线间距}\dtag\Default*{0pt}
+ \keyval{footruleskip}{页脚线间距}\dtag\Default*{3.5pt}
+ \kvsplit{hdivide}{左边距,版心宽度,右边距}\default{}
\kvsplit{hmargin}{左边距,右边距}\default{}
- \keyval{textheight}{版心文本高度}\default{}
+ \keyval{textheight}{版心高度}\default{}
\keychoice{nofoot}{true,\fbox{false}}\default{}
\begin{ctexexam}
- \ebgeoset
+ \ctexset[geo]
{
headruleskip = 3pt,
vscale = 0.9,
@@ -665,29 +640,55 @@
\end{ctexexam}
\end{cnltxlist}
+\subsection[图表题注]{图表题注\smodule{cap}}
+\label{subsec:caption}
+模块 \module*{cap} 用于设置图表等浮动体的题注格式。题注主要由三部分组成:标题标签即图表名与题注编号的组合,标题文本本身通常是内容的简短描述,以及将文本与标签分开的题注分隔符。可以在导言区设置整体格式,也可以在正文使用局部更改格式。模块 \module*{cap} 由 \pkg*{caption} 宏包提供支持,接口选项与 \pkg*{caption} 宏包完全一致,但写法为 \meta{条目名}\code{/}\meta{选项}。\pkg*{caption} 宏包提供了多种方法来定制浮动环境(例如 \env{figure} 和 \env{table})中的题注,并可与许多其它宏包配合使用。功能包括旋转题注、侧向题注和连续题注等。下面列举几个题注选项的用法,\ref{exam:caption set} 中两种设置题注的方法是等效的,更多选项和创建方法可查看宏包文档:
+\begin{cnltxlist}[itemsep = 0ex]
+ \keyval{table/labelsep}{标签分隔符}\default{}
+ \keyval{figure/format}{题注格式}\default{}
+ \keyval{lstlisting/font}{题注字体}\default{}
+ \begin{ctexexam}[labelref = exam:caption set]
+ \ctexset[cap]
+ {
+ table/labelsep = space,
+ figure/format = plain
+ }
+ \captionsetup[table]{labelsep = space}
+ \captionsetup[figure]{format = plain}
+ \end{ctexexam}
+ \begin{cnltxlist}
+ \command{RegisterCapOptions}[\marg{条目名列表}]
+ 给模块 \module*{cap} 注册题注类型为 \meta{条目名} 的 \pkg*{caption} 接口选项。已预注册 \module*{figure}、\module*{table} 和 \module*{lstlisting} 三种类型的题注选项。可以搭配 \pkg*{newfloat} 宏包创建更多类型的浮动环境并设置相应题注。
+ \end{cnltxlist}
+ \command{caption}[\sarg\oarg{目录标题}\marg{标题}]\default{}
+ \command{captionof}[\sarg\marg{条目名}\oarg{目录标题}\marg{标题}]\default{}
+ \command{bicaption}[\sarg\oarg{目录中文标题}\marg{中文标题}\oarg{目录英文标题}\marg{英文标题}]
+ 题注命令 \cs{caption} 用于在图表上下方插入题注,需要在浮动环境 \env*{figure} 和 \env*{table} 中使用。在浮动环境外可以使用 \cs{captionof} 命令,第一个参数指定条目名。\cs{bicaption} 命令可以实现中英文双语题注,需要在导言区载入 \pkg*{bicaption} 宏包,具体用法见宏包文档。
+\end{cnltxlist}
+
\subsection[页眉页脚]{页眉页脚\smodule{hdr}}
\label{subsec:header and footer}
-模块 \module*{hdr} 设置的命令由 \pkg*{fancyhdr} 宏包提供支持。标题标记由标签和标题组成,选项中参数 \code{\#1} 代表当前章、节或小节的标题。在 \cls*{book} 模式时使用标题标记选项 \option{chap-mark} 和 \option{sec-mark},在 \cls*{article} 模式时使用 \option{sec-mark} 和 \option{subsec-mark} 选项,这与标准文档类的行为一致。重新设置标题标记选项时标记大小写选项 \option{uppercase} 会失效。
+模块 \module*{hdr} 设置的命令由 \pkg*{fancyhdr} 宏包提供支持。标题标记由标签和标题组成,选项中参数 \code{\#1} 代表当前章、节或小节的标题。在 \cls*{book} 模式时使用标题标记选项 \option{chapter-mark} 和 \option{section-mark},在 \cls*{article} 模式时使用 \option{section-mark} 和 \option{subsection-mark} 选项,这与标准文档类的行为一致。重新设置标题标记选项时标记大小写选项 \option{uppercase} 会失效。
\begin{cnltxlist}
- \keyval{chap-mark}{标题标记}
- \code{chapter} 级别标题标记的内容,包含了标签选项 \option{chap-label} 和章标题 \code{\#1}。
- \keyval{sec-mark}{标题标记}
- \code{section} 级别标题标记的内容,包含了标签选项 \option{sec-label} 和节标题 \code{\#1}。
- \keyval{subsec-mark}{标题标记}
- \code{subsection} 级别标题标记的内容,包含了标签选项 \option{subsec-label} 和小节标题 \code{\#1}。
- \kvsplit-{chap-label}{\oarg{编号输出命令}\marg{距离命令}}\Default{\cs*{hspace}\Marg{1em}}
- \code{chapter} 级别标题标记的标签(标题有编号时)。比标题标记选项更常用,可选参数是对应章编号计数器值的输出命令,必选参数是编号与标题之间的距离命令:
+ \keyval{chapter-mark}{标题标记}
+ \code{chapter} 级别标题标记的内容,包含了标签选项 \option{chapter-label} 和章标题 \code{\#1}。
+ \keyval{section-mark}{标题标记}
+ \code{section} 级别标题标记的内容,包含了标签选项 \option{section-label} 和节标题 \code{\#1}。
+ \keyval{subsection-mark}{标题标记}
+ \code{subsection} 级别标题标记的内容,包含了标签选项 \option{subsection-label} 和小节标题 \code{\#1}。
+ \kvsplit-{chapter-label}{\oarg{编号输出命令}\marg{距离命令}}\Default{\cs*{hspace}\Marg{1em}}
+ \code{chapter} 级别标题标记的标签(标题有编号时)。比标题标记选项更常用,可选参数是对应章编号计数器值的输出命令,必选参数是标题标签与内容之间的距离命令:
\begin{ctexexam}
\ebhdrset
{
- chap-label = [\thechapter]{\hspace{1em}},
- sec-mark = \CTEXifname{\CTEXthesection——}{}#1
+ chapter-label = [\thechapter]{\hspace{1em}},
+ section-mark = \CTEXifname{\CTEXthesection——}{}#1
}
\end{ctexexam}
- \kvsplit-{sec-label}{\oarg{编号输出命令}\marg{距离命令}}\Default{\cs*{hspace}\Marg{0.5em}}
- \code{section} 级别标题标记的标签,用法与 \option{chap-label} 类似。
- \kvsplit-{subsec-label}{\oarg{编号输出命令}\marg{距离命令}}\Default{\cs*{hspace}\Marg{0.5em}}
- \code{subsection} 级别标题标记的标签,用法与 \option{chap-label} 类似。
+ \kvsplit-{section-label}{\oarg{编号输出命令}\marg{距离命令}}\Default{\cs*{hspace}\Marg{0.5em}}
+ \code{section} 级别标题标记的标签,用法与 \option{chapter-label} 类似。
+ \kvsplit-{subsection-label}{\oarg{编号输出命令}\marg{距离命令}}\Default{\cs*{hspace}\Marg{0.5em}}
+ \code{subsection} 级别标题标记的标签,用法与 \option{chapter-label} 类似。
\keyval{headrule}{横线命令}
绘制页眉横线的选项,可以使用 \cs*{hrule} 或\ref{exam:markrule} 所述 \cs{markrule} 等画线命令来绘制横线。
\keyval{footrule}{横线命令}
@@ -715,7 +716,12 @@
\command{markboth}[\marg{左页标题标记}\marg{右页标题标记}]\default{}
\command{markright}[\marg{右页标题标记}]\default{}
\command{markdouble}[\marg{双页标题标记}]
- 这三个命令用于手动设置当前页标题标记,特殊情况下可以使用它们定义与标题不同的页眉页脚标记。上述标记命令内容的选项便是基于这三个命令。其中 \cs{markdouble} 根据是否是双面打印设置相应标记。如果是单面打印,则 \meta{左页标题标记} 无效。
+ 这三个命令用于手动设置当前页标题标记,特殊情况下可以使用它们定义与标题不同的页眉页脚标记。其中 \cs{markdouble} 根据是否是双面打印设置相应标记。如果是单面打印,则 \meta{左页标题标记} 无效。标题标记选项 \meta{级别}\option*{-mark} 定义的是它们的参数,左右页标记规则已经进行了优化调整,若需更改可以重定义 \code{\textbackslash}\meta{级别}\code{\textcolor{cs}{mark}} 命令。
+ \begin{ctexexam}
+ \makeatletter
+ \renewcommand{\sectionmark}[1]{\markright{\eb@mark@section@whole{#1}}}
+ \makeatother
+ \end{ctexexam}
\end{cnltxlist}
\command{markrule}[\oarg{长度}\darg{颜色名}\marg{线宽}\baroarg{上间距,下间距}]
实线命令 \cs{markrule} 既可在 \meta{横线命令} 中用于绘制页眉页脚横线,也可以在正文中使用。\meta{长度} 默认为版心的宽度,上下间距为横线与上下方部件的间距,带有长度单位,上下间距之间用符号 \code{|} 分开,若只有一部分则表示 \meta{上间距}。下面举一个设置页眉内容的例子:
@@ -736,14 +742,16 @@
\ebhdrset{footnotetype = plain,footnotetype = bottom}
\ebhdrset{footnotetype = {hang,bottom}}
\end{ctexexam}
+ \command{PushFntBottom}\newtagv{2024cx}%
+ 默认情况下当具有 \code{b} 参数的底部浮动体与脚注同时存在时,脚注将位于浮动体上部。此命令可使脚注始终位于页面底部,与 \keyis{footnotetype}{bottom} 作用相同,只能在导言区全局使用。
\keyval{fnfirstindent}{刚性长度}\Default{1em}
每个脚注首段的首行缩进(悬挂缩进 \code{hang} 为整段缩进),等于长度 \cs{fnfirstindent} 的值。
\keyval{fnafterindent}{刚性长度}\Default{2em}
每个脚注第二段及之后段落的首行缩进,等于长度 \cs{fnafterindent} 的值。
\keyval{fnparskip}{弹性长度}\Default{0ex plus .1ex}
不同脚注自身的段落间距,脚注内容文本分段时生效,等于长度 \cs{fnparskip} 的值。
- \keyval{footnotesep}{刚性长度}\newtag%
- 不同脚注之间的距离,默认情况下它自适应 \module*{spread} 模块脚注行距选项 \option{footnote} 的值。
+ \keyval{footnotesep}{刚性长度}
+ 不同脚注之间的距离,默认情况下它自适应 \module*{space} 模块脚注行距选项 \option{fntspread} 的值。
\keychoice{fntext-pos}{normal,\fbox{super}}
设置脚注内容标记的位置,正常文本或是上标形式。
\keychoice{fnmark-num}{\fbox{plain},pifont,pifont*,pisans,pisans*,\optpath*{short num}}
@@ -758,7 +766,7 @@
\end{ctexexam}
\begin{cnltxlist}[itemsep = 0ex]
\command{SetFntSymbsList}[\marg{符号表名}\marg{符号数量}\marg{符号列表}]\default{}
- \command{UseFntSymbsList}[\marg{符号表名}]\newtag[Chg]%
+ \command{UseFntSymbsList}[\marg{符号表名}]
这两个命令用于在脚注短编号标记为 \code{s} 自定义符号型时设置符号列表。\cs{SetFntSymbsList} 命令用于定义名为 \meta{符号表名} 的符号列表,\cs{UseFntSymbsList} 命令用于启用已定义的符号列表。默认的脚注符号列表是空的,注意使用符号型标记的脚注时计数器 \code{footnote} 的值仍然递增,以及定义新列表时 \meta{符号列表} 的写法和命令顺序:
\begin{ctexexam}
\SetFntSymbsList{fancy}{2}{{1}{*}{2}{\P}}
@@ -787,11 +795,11 @@
fnmarktext-format = \circledtext
}
\end{ctexexam}
- \command{defupfntmark}[\marg{脚注正文标记格式}]
+ \command{defupfntmark}[\marg{正文标记格式}]
定义脚注正文标记的格式,与正文标记编号命令 \cs{theupfootnote} 配合使用。
- \command{defdownfntmark}[\marg{脚注内容标记格式}]
+ \command{defdownfntmark}[\marg{内容标记格式}]
定义脚注内容标记的格式,与内容标记编号命令 \cs{thedownfootnote} 配合使用。
- \command{deffntpara}[\marg{脚注段落文本格式}]\newtag%
+ \command{deffntpara}[\marg{段落文本格式}]
定义脚注段落文本的格式的命令。脚注段落文本由脚注内容标记和文本两部分组成,段落格式定义中参数 \code{\#1} 代表内容文本。
\command{notminipage}[\marg{普通页内容}\marg{迷你页内容}]
用于在定义脚注标记的命令中判断当前脚注是否处于迷你页而输出不同的内容。
@@ -831,8 +839,8 @@
\end{cnltxlist}
\subsection[目录]{目录\smodule{toc}}
-\label{subsec:catalog}
-模块 \module*{toc} 将使用 \pkg*{titletoc} 宏包处理目录样式。默认包括 \module*{part}$\longrightarrow$\module*{subparagraph}、\module*{figure}、\module*{table} 和 \module*{lstlisting} 条目名的键路径。选项前带有 \ding{73} 符号表示支持所有相应\textbf{条目名}的路径,其它选项则处于 \module*{toc} 键路径下。目录选项均支持标题编号判定命令 \cs{CTEXifname}。目前支持多数学术论文目录样式,更复杂的样式可以查看 \pkg*{titletoc} 的相关用法。
+\label{subsec:contents}
+模块 \module*{toc} 将使用 \pkg*{titletoc} 宏包处理目录样式。默认包括 \module*{part}$\longrightarrow$\module*{subparagraph}、\module*{figure}、\module*{table} 和 \module*{lstlisting} 条目名的键路径。选项前带有\hface 符号表示支持所有相应\textbf{条目名}的路径,其它选项则处于 \module*{toc} 键路径下。目录选项均支持标题编号判定命令 \cs{CTEXifname}\footnote{此功能需要\textbf{2023/06/01}以后的 \hologo{LaTeX} 内核支持。}。目前支持多数学术论文目录样式,更复杂的样式可以查看 \pkg*{titletoc} 的相关用法。
\begin{cnltxlist}
\keyval{tocformat}{条目格式}\dtag
目录中各类型条目的格式。可以设置条目字体和加入垂直间距等,垂直间距最好使用防止垂直间距重合的 \cs*{addvspace} 命令。如果是段落型目录,格式代码仅在段落中当前级别条目前执行一次。也可以用 \cs{CTEXifname} 命令或 \option{tocformat*} 选项给有无编号的标题分别设置格式。
@@ -856,7 +864,7 @@
目录条目标签与标题间的代码,默认为插入 \code{1em} 横向距离。
\keyval{tocbelow}{距离命令}\dtag
在目录条目下方执行的代码,可以插入垂直距离等命令。
- \keyval{tocline}{标题定义}\dtag[\textcolor{red}{\ding{73}}]
+ \keyval{tocline}{标题定义}\dtag[\textcolor{red}{\sface}]
这个选项在章节标题基础上扩展了浮动环境的题注标题在目录文件中的定义。章节和题注标题选项中参数 \code{\#1} 代表标题编号 \cs*{the}\meta{计数器} 对应的计数器名称,参数 \code{\#2} 则代表相应标题内容。
\begin{ctexexam}
\ctexset
@@ -874,17 +882,17 @@
}
\end{ctexexam}
\command{RegisterTocName}[\sarg\marg{条目名列表}]\newtagv[Changed]{2024bo}%
- 给 \meta{条目名列表} 中的每个 \meta{条目名} 标题注册用于设置目录样式的选项,即选项前有符号 \ding{73} 表示需要注册后使用。前面提到的条目类型均已注册,新类型的条目注册后默认格式与图表条目相同。这个命令可以重复使用,会重置目录条目为默认格式。带有星号参数的命令使注册目录的条目形成一个段落,此时多出下面三个选项可用:
+ 给 \meta{条目名列表} 中的每个 \meta{条目名} 标题注册用于设置目录样式的选项,即选项前有符号\hface 表示需要注册后使用。前面提到的条目类型均已注册,新类型的条目注册后默认格式与图表条目相同。这个命令可以重复使用,会重置目录条目为默认格式。带有星号参数的命令使注册目录的条目形成一个段落,此时多出下面三个选项可用:
\keyval{tocbegin}{开始代码}\dtag\newtagv{2024as}%
当前级别目录条目第一个标题前的代码,仅在存在更高级别的条目时有效。
\keyval{tocsep}{中间代码}\dtag\Default{\Marg{.—}}\newtagv{2024as}%
当前级别目录条目每个标题之间的代码。
\keyval{tocend}{结束代码}\dtag\Default{\Marg{.}}\newtagv{2024as}%
当前级别目录条目最后一个标题后的代码。
- \command{contentsuse}[\marg{条目名}\marg{扩展名}]
- 激活条目类型名称为 \meta{条目名} 的目录定制功能,它使用的目录文件后缀为 \meta{扩展名}。需要在激活条目后再使用命令 \cs{RegisterTocName} 注册选项。
+ \command{contentsuse}[\oarg{目录层次}\marg{条目名}\marg{扩展名}]\newtagv[Changed]{2024ce}%
+ 激活条目类型为 \meta{条目名} 的目录定制功能,目录文件后缀为 \meta{扩展名},若 \meta{扩展名} 为 \code{toc} 则条目会自动激活。可选参数 \meta{目录层次} 为条目在目录中的层次深度,默认值为 \code{-1000},当它大于目录深度计数器 \code{tocdepth} 时不显示。图表等标题的目录条目无深度因此为默认值,章节标题 \module*{part}$\longrightarrow$\module*{subparagraph} 的深度则从 \code{-1} 到 \code{5} 依次递增。需要在激活条目后再使用命令 \cs{RegisterTocName} 注册选项。
\command{DeclareFloatList}[\marg{条目名}\marg{扩展名}]
- 声明一种条目类型的目录命令 \cs*{listof}\meta{条目名}\code{\textcolor{cs}{s}},并且支持\ref{subsec:directory command} 中图表目录命令的机制。使用这个命令要确保将条目加入目录的机制已经存在,例如搭配 \pkg*{newfloat} 宏包创建新的浮动环境。选项前有红色符号 \textcolor{red}{\ding{73}}(仍包含黑色符号选项的性质)表示在声明后可用。下面举一个声明算法环境和对应题注目录的例子:
+ 声明一种条目类型的目录命令 \cs*{listof}\meta{条目名}\code{\textcolor{cs}{s}},并且支持\ref{subsec:directory command} 中图表目录命令的机制。使用这个命令要确保将条目加入目录的机制已经存在,例如搭配 \pkg*{newfloat} 宏包创建新的浮动环境。选项前有实心符号 \textcolor{red}{\sface}(仍包含空心符号\hface 选项的性质)表示在声明后可用。下面举一个声明算法环境和对应题注目录的例子:
\begin{ctexexam}
\usepackage{newfloat}
\DeclareFloatingEnvironment[
@@ -895,23 +903,23 @@
\DeclareFloatList{algorithm}{loa}
\listofalgorithms[multoc] % 在正文中输出双栏算法目录
\end{ctexexam}
- \command{AllotCaptionExt}[\marg{条目名}\marg{扩展名}]
+ \command{AssignCaptionExt}[\marg{条目名}\marg{扩展名}]
给条目类型名称为 \meta{条目名} 的标题分配目录文件 \meta{扩展名},注意 \meta{扩展名} 需要被定义在 \cs*{ext@}\meta{条目名} 命令中才有效(\pkg*{caption} 宏包的默认定义形式)。可以使不同的 \meta{条目名} 共享一个目录:
\begin{ctexexam}
- \AllotCaptionExt{table}{lof}
+ \AssignCaptionExt{table}{lof}
\newcommand{\listoffiguretables}{\listoffigures} % 同时输出图表目录的命令
\end{ctexexam}
- \command{AllotPartialExt}[\marg{扩展名1}\marg{扩展名2}]\newtagv{2024bk}
- 给目录文件扩展名为 \meta{扩展名1} 的目录分配扩展名为 \meta{扩展名2} 的局部目录,预注册的条目均无需再分配。用于搭配题注标题 \cs{caption} 命令和 \pkg*{titletoc} 宏包的局部题注目录命令。
+ \command{AssignPartialExt}[\marg{扩展名1}\marg{扩展名2}]\newtagv{2024bk}
+ 给目录文件扩展名为 \meta{扩展名1} 的目录分配扩展名为 \meta{扩展名2} 的局部目录\footnote{此功能需要\textbf{2023/06/01}以后的 \hologo{LaTeX} 内核支持。},预注册的条目均无需再分配。用于搭配题注标题 \cs{caption} 命令和 \pkg*{titletoc} 宏包的局部题注目录命令。
\begin{ctexexam}
- \AllotPartialExt{loa}{pla}
+ \AssignPartialExt{loa}{pla}
\startlist[fancy]{loa}
\captionof{algorithm}{算法标题}
\stoplist[fancy]{loa}
\printlist[fancy]{loa}{}{}
\end{ctexexam}
\command{SetTocStyle}[\marg{条目名}\marg{风格名}\marg{键值列表}]
- 定义条目类型名称为 \meta{风格名} 的目录风格。使用 \cs*{ctexset} 命令设置目录样式时,除了条目标题定义选项 \option{tocline},其它选项只有在目录输出命令前设置才有效,定义完目录风格后用 \cs{UseTocStyle} 命令可以在正文中任意位置生效。如果是没有 \ding{73} 符号的选项,\meta{条目名} 设置为 \module*{toc}。
+ 定义条目类型名称为 \meta{风格名} 的目录风格。使用 \cs{ctexset} 命令设置目录样式时,除了条目标题定义选项 \option{tocline},其它选项只有在目录输出命令前设置才有效,定义完目录风格后用 \cs{UseTocStyle} 命令可以在正文中任意位置生效。如果是没有\hface 符号的选项,\meta{条目名} 设置为 \module*{toc}。
\command{UseTocStyle}[\marg{条目名}\marg{风格名}\marg{扩展名}]
使用对应条目类型名称为 \meta{风格名} 的目录风格,随后标题在目录中的格式会改变。本命令导言区和正文区均可使用,第三个必选参数还需要指定条目标题加入目录文件的 \meta{扩展名}。
\begin{ctexexam}
@@ -933,14 +941,16 @@
悬挂缩进选项 \option{hang} 使目录条目为悬挂缩进形式。缩进距离为条目标签及其与标题内容间距的长度和。通常情况下会统一设置条目标题是否悬挂缩进,因此这个选项被设计为对所有类型条目生效。
\keyval{lolskip}{弹性长度}\Default{10pt}
代码目录中每章第一个条目上方增加的垂直距离。与 \CTeX 的表格和图片目录中每章间的条目距离选项 \option*{lotskip} 和 \option*{lofskip} 类似,在 \cls*{article} 模式中此选项失效。
- \keyval{between}{代码钩子}\dtag[\textcolor{red}{\ding{73}}]
- 目录标题与条目内容间的钩子(作用于标题下方间距之后),如果是 \cls*{book} 模式则默认插入 \code{-10pt} 垂直距离抵消首行目录的额外垂直间距,这是由于图表和 由 \pkg*{newfloat} 宏包所创建环境的目录默认每使用一次章标题在题注目录中插入 \code{10pt} 距离。除了条目名的键路径外,此选项也可用于 \module*{toc} 路径中,表示章节标题目录标题代码钩子,如果是 \cls*{book} 模式则默认插入 \code{-1pc} 垂直距离。
- \keyval{bibetween}{代码钩子}
+ \keyval{between}{格式代码}\dtag[\textcolor{red}{\sface}]
+ 目录标题与条目内容间的局部钩子(作用于标题下方间距之后),如果是 \cls*{book} 模式则默认插入 \code{-10pt} 垂直距离抵消首行目录的额外垂直间距,这是由于图表和 由 \pkg*{newfloat} 宏包所创建环境的目录默认每使用一次章标题在题注目录中插入 \code{10pt} 距离。除了条目名的键路径外,此选项也可用于 \module*{toc} 路径中,表示章节标题目录标题代码钩子,如果是 \cls*{book} 模式则默认插入 \code{-1pc} 垂直距离。
+ \keyval{bibetween}{格式代码}
与选项 \option{between} 类似,是英文章节标题目录(如果启用)标题代码钩子。
\keychoice{dotalign}{\fbox{true},false}
将目录页码装进一个右对齐的水平盒子里。这样可以使目录引导线右端对齐并与页码保持一定间距,否则会与页码相连。
\keyval{pagenumwd}{刚性长度}\Default{1.55em}
设置开启 \option{dotalign} 选项时页码水平盒子的宽度。
+ \keychoice{fileopen}{\fbox{once},odd}
+ 编译文档时打开目录文件进行写入操作的方式,这个选项影响重复使用目录命令时的输出行为。默认只在第一次编译时打开文件,选择 \code{odd} 将仅在奇数次编译时打开文件。
\keyval{tocafter-every}{距离命令}\Default{\cs*{hspace}\Marg{1em}}
统一设置所有类型条目编号与标题间的代码。
\keyval{tocindent-every}{刚性长度}
@@ -953,8 +963,47 @@
\section{环境和命令}
-\subsection{文区命令}
+\subsection{封面和文区}
\begin{cnltxlist}
+ \command{maketitle}[\oarg{键值列表}]\newtagv{2024dh}%
+ 重新改写了默认的封面标题命令,在保证原生风格的前提下使用 \pkg*{xtemplate} 宏包将封面抽象为由实例组成的模板。并为命令增加了可选参数,选项的含义与标准文档类一致:
+ \keyval{title}{文档标题}
+ 设置文档的标题,可以包含格式命令。如果没有设置标题而输出封面会报错。
+ \keyval{author}{文档作者}
+ 设置文档的作者,可以包含格式命令。多位作者之间可以用 \cs*{and} 命令分隔,每个作者后可用 \cs*{thanks} 命令添加致谢脚注。
+ \keyval{date}{文档日期}\Default{\cs*{today}}
+ 设置文档的日期,可以包含格式命令。默认的文档日期为当前日期 \cs*{today}。
+ \command{DeclareInstance}[\Marg{easybook}\marg{位置}\Marg{cover}\marg{键值列表}]
+ 封面模板可用 \pkg*{xtemplate} 提供的实例声明命令进行自由定制,\ref{exam:cover instance} 举例说明了定制页面中部的内容。模板由页面上、中和下三个位置的实例组成,它们的 \meta{位置} 名字分别为 \code{top}、\code{middle} 和 \code{bottom}。每个实例的属性可用 \meta{键值列表} 修改,包含的选项如下:
+ \keyval{content}{实例内容}
+ 设置实例内容,可以包含任何记号列表。通常为格式和排版内容的命令,在局部生效。
+ \keyval{beforecode}{实例前代码}
+ 设置实例内容前的代码,可以包含任何记号列表。通常为换页和垂直距离的命令。
+ \keyval{aftercode}{实例后代码}
+ 与 \option{before} 选项类似,设置实例内容后的代码。
+ \keychoice{align}{l,\fbox{c},r,n}
+ 设置实例内容的对齐方式,分别为左、中、右和自然对齐,自然对齐即正常的段落文本。
+ \begin{ctexexam}[labelref = exam:cover instance]
+ \DeclareInstance{easybook}{middle}{cover}
+ {
+ content =
+ {
+ \thispagestyle{empty}
+ \begin{tblr}
+ {
+ columns = c,
+ hline{2-4} = {2}{0.5pt,solid},
+ column{1} = {rightsep = 0pt}
+ }
+ 标题:& 一个文档标题 \\
+ 作者:& 张三 \\
+ 日期:& \today
+ \end{tblr}
+ },
+ beforecode = \null\vspace{3cm},
+ aftercode = \clearpage
+ }
+ \end{ctexexam}
\command{frontmatter}[\sarg\oarg{编号格式}]\Default{Roman}
前言区命令。使部分和章标题不编号,带有星号的变体命令不使用 \cs{cleardoublepage} 命令。页码 \meta{编号格式} 可设置为 \code{arabic}、\code{Alph}、\code{alph}、\code{Roman}、\code{roman} 和 \code{chinese} 形式。
\command{mainmatter}[\sarg]
@@ -969,14 +1018,14 @@
\subsection{目录命令}
\label{subsec:directory command}
-\easybook{} 改进了标准文档类中定制性较低的章节标题和图表标题目录命令。现在目录命令带有可选参数用于设置标题格式和栏数等,并且与标准文档类不同的是目录命令可在正文中\textbf{重复}使用。更多目录命令的创建和样式设置可参考\ref{subsec:catalog}。
+\easybook{} 改进了标准文档类中定制性较低的章节标题和图表标题目录命令。现在目录命令带有可选参数用于设置标题格式和栏数等,并且与标准文档类不同的是目录命令可在正文中\textbf{重复}使用\footnote{此功能需要\textbf{2023/06/01}以后的 \hologo{LaTeX} 内核支持。}。更多目录命令的创建和样式设置可参考\ref{subsec:contents}。
\begin{cnltxlist}
\command{tableofcontents}[\sarg\oarg{键值列表}\darg{代码钩子}]
章节标题目录命令,支持中英文双语标题目录输出。带有星号参数不输出目录条目上方的标题。\meta{代码钩子} 是当输出方案 \keyis{plan}{both} 时中文与英文目录之间执行的代码,可以插入设置目录样式和换页等命令。
- \keychoice{plan}{\fbox{cn},bi,both}\newtag[Exp]%
+ \keychoice{plan}{\fbox{cn},bi,both}
章节标题目录的输出方案。\code{cn} 只输出中文目录,\code{bi} 只输出英文目录。\code{both} 同时连续输出中文和英文目录,需要与双语目录标题命令 \cs{bichapter} 等或双语标题选项 \option{title} 配合使用。
\keyval{bicontentsname}{英文目录标题}\Default{Contents}
- 英文目录的标题,为通用接口命令 \cs*{ctexset} 的选项。
+ 英文目录的标题,为通用接口命令 \cs{ctexset} 的选项。
\command{listoffigures}[\sarg\oarg{键值列表}]
输出图片目录命令。带有星号参数的命令不输出目录标题。
\command{listoftables}[\sarg\oarg{键值列表}]
@@ -985,7 +1034,7 @@
输出代码目录命令。带有星号参数的命令不输出目录标题。
如果需要部分而不是全文的目录或其它类型的目录,可以查看 \pkg*{titletoc} 宏包的相关示例。如果需要双语图表目录,可以查看 \pkg*{bicaption} 宏包的相关示例。上面目录命令的可选参数改进了原本单一的功能,也提供了配置命令 \cs{SetTocOuter} 在目录命令外设置选项默认值。
- \command{SetTocOuter}[\marg{键值列表}]\newtag%
+ \command{SetTocOuter}[\marg{键值列表}]
统一设置上述所有目录可选参数的默认值\footnote{由于目录命令通常只在文中使用一次,因此不设计为可以分别指定不同目录的参数。},其中 \meta{键值列表} 的选项如下:
\keyval{level}{标题命令}
设定输出目录标题的命令。如果使用 \option{title} 选项设置了双语标题则需要配合双语标题命令。
@@ -1004,8 +1053,8 @@
\kvsplit{title}{中文目录标题,英文目录标题}
用于更改目录的双语标题。标题之间用一个英文逗号分开,对主目录来说前部分为中文目录标题,后部分为英文目录标题,对图表和代码目录来说后部分则是加入英文目录的条目。也可以只有一部分,表示中文目录的标题。
\keychoice{bilist}{mix,\fbox{new}}
- 确定章节标题目录中双语标题条目的输出排列方式。选项 \code{mix} 使每个英文标题条目在中文目录中跟随对应的中文标题输出,\code{new} 则在新建的英文目录中输出英文标题。这是个全局选项,在所有目录的可选参数中使用均可生效,但推荐在章节标题目录中使用。
- \command{ebifbitoc}[\marg{英文目录代码}\marg{中文目录代码}]\newtag%
+ 确定章节标题目录中双语标题条目的输出排列方式。选项 \code{mix} 使每个英文标题条目在中文目录中跟随对应的中文标题输出,\code{new} 则在新建的英文目录中输出英文标题,此新目录的扩展名为 \code{tec}。这是个全局选项,在所有目录的可选参数中使用均可生效,但推荐在章节标题目录中使用。
+ \command{ebifbitoc}[\marg{英文目录代码}\marg{中文目录代码}]
启用混合双语目录条目即 \keyis{bilist}{mix} 时,在设置目录样式时可以配合 \cs{ebifbitoc} 命令判断当前条目是否为英文,从而输出不同的代码。
\begin{ctexexam}
\SetTocStyle{section}{fancy}
@@ -1016,16 +1065,24 @@
\UseTocStyle{section}{fancy}{toc}
\tableofcontents[bilist = mix]
\end{ctexexam}
+
+ 除了上述选项还支持 \CTeX 键值列表所有路径的章节标题样式选项,下面仅列举几个选项例子。需要注意的是标题样式选项根据 \option{level} 选项中的\textbf{最后}一个标题命令判断键路径,所以这个标题命令名必须存在于 \CTeX 键值列表路径中,或带有 \code{\textcolor{cs}{bi}} 前缀表示双语标题。
\keyval{format}{目录标题格式}
- 设置目录标题的格式,在标题级别为 \code{chapter} 或者 \cls*{article} 模式且标题级别为 \code{section} 时有效。
+ 设置目录标题的格式。
+ \begin{ctexexam}
+ \tableofcontents[
+ level = \clearpage\bisection*,
+ format = \centering\sffamily\Large
+ ]
+ \end{ctexexam}
\keyval{aftername}{标签后代码}
- 目录标题的标签与内容之间插入的代码,生效情形同上。
+ 目录标题的标签与内容之间插入的代码。
\keyval{aftertitle}{标题后代码}
- 目录标题内容之后插入的代码,生效情形同上。
+ 目录标题内容之后插入的代码。
\keyval{break}{格式命令}
- 控制章节标题与之前正文的分隔关系。一般用于设置是否在标题之前分页或者设置行间罚点,生效情形同上。
+ 控制章节标题与之前正文的分隔关系。一般用于设置是否在标题之前分页或者设置行间罚点。
\keyval{pagestyle}{页面风格}\Default{empty}
- 目录标题所在页的页面格式,仅当目录以 \code{chapter} 级别输出时有效。除了上述选项还支持 \CTeX 键值列表路径 \module*{chapter} 或 \module*{section} 所有的章节标题样式选项。
+ 目录标题所在页的页面格式,仅当目录以 \code{chapter} 级别输出时有效。
\end{cnltxlist}
\subsection{双语章节标题和新建标题}
@@ -1048,9 +1105,9 @@
\BeforeAddtoBitoc{\ctexset{chapter/nmuber = \arabic{chapter}}}
\end{ctexexam}
\command{appendix}[\splitoarg{前名字,后名字}\darg{编号输出命令}]
- 附录起始命令,其后的章节标题变为附录形式。\meta{前名字} 为英文目录中附录标题的前名字,同理 \meta{后名字} 为英文目录中附录标题的后名字。前后名字之间用一个半角逗号分开,也可以只有一部分,表示英文目录中附录标题前名字。\meta{编号输出命令} 为附录标题计数器在英文目录中的编号命令。注意这两个参数仅对 \code{bichapter} 级别的标题生效。
- \command{BeforeAddtoBitoc}[\sarg\marg{英文标题加入目录前的代码}]
- 作用于局部范围的英文目录标题条目钩子,代码在标题加入目录前执行,可以插入条目标题定义命令临时改变英文目录中条目的格式,带有星号参数的命令会重置之前的代码。这个命令设置英文目录条目的标题格式具有最高优先级,放置在导言区或 \cs{bichapter} 等双语标题命令前生效。举一个在英文目录节标题条目编号前添加 \code{Section} 字符串的例子:
+ 附录起始命令,其后的章节标题变为附录形式。\meta{前名字} 为英文目录中附录标题的前名字,同理 \meta{后名字} 为英文目录中附录标题的后名字。前后名字之间用一个半角逗号分开,也可以只有一部分,表示英文目录中附录标题前名字。\meta{编号输出命令} 为附录标题计数器在英文目录中的编号命令。注意这两个参数仅对 \code{chapter} 级别的标题生效。
+ \command{BeforeAddtoBitoc}[\sarg\marg{格式代码}]
+ 英文目录中标题条目的格式钩子,\meta{格式代码} 在英文标题加入目录前执行,作用范围为局部。可以插入条目标题定义等命令临时改变英文目录中条目的格式,带有星号参数的命令会重置之前的代码。这个命令设置英文目录条目的标题格式具有最高优先级,放置在导言区或 \cs{bichapter} 等双语标题命令前生效。举一个在英文目录节标题条目编号前添加 \code{Section} 字符串的例子:
\begin{ctexexam}
\BeforeAddtoBitoc{\ctexset{section/name = Section\space}}
\bisection{中文标题}{English title}
@@ -1062,7 +1119,7 @@
\begin{ctexexam}
\NewTitleCommand[chapter]{lchapter}{0}
\NewTitleEntryCommand{lchapter}
- \contentsuse{lchapter}{toc}
+ \contentsuse[0]{lchapter}{toc}
\RegisterTocName{lchapter}
\ctexset
{
@@ -1072,17 +1129,23 @@
\lchapter{正常标题}
\lchapterentry{加入目录的标题}
\end{ctexexam}
+ \command{CopyTitleFormat}[\marg{条目名1}\marg{条目名2}]\newtagv{2024cq}%
+ 将名为 \meta{条目名2} 的章节标题命令除了编号/名字外的格式复制给名为 \meta{条目名1} 的标题命令。
+ \begin{ctexexam}
+ \ctexset{section/format = \sffamily\color{blue}}
+ \CopyTitleFormat{subsection}{section}
+ \end{ctexexam}
\end{cnltxlist}
-\subsection[上标和下标]{上标和下标\smodule{tools}}
-上标和下标的功能来自 \pkg*{spbmark} 宏包,下面有三个命令可以用于输出上标和下标。可以使用键值列表的形式对上下标格式进行局部或全局设置,下面命令中两个可选参数的键值列表是等效的。全局设置的详情见\ref{subsubsec:super-sub-script},更多命令和详细用法见 \pkg*{spbmark} 宏包说明文档。
+\subsection[上标和下标]{上标和下标}
+上标和下标的功能来自 \pkg*{spbmark} 宏包,可以使用键值列表的形式对上下标格式进行局部设置或用 \cs{spbset} 命令全局设置。所有选项也支持用 \module{tools} 模块设置,更多选项可见宏包文档。
\begin{cnltxlist}
\command{super}[\sarg\oarg{键值列表1}\marg{内容}\oarg{键值列表2}]
- 输出上标的命令,可用于文本和数学模式,在数学模式中可代替 \code{\^{}} 符号和 \cs*{sp} 命令。
+ 输出上标的命令,可用于文本和数学模式,在数学模式中可代替 \code{\^{}} 符号和 \cs*{sp} 命令。命令中两个可选参数的键值列表等效。
\command{sub}[\sarg\oarg{键值列表1}\marg{内容}\oarg{键值列表2}]
- 输出下标的命令,可用于文本和数学模式,在数学模式中可代替 \code{\_{}} 符号和 \cs*{sb} 命令。
+ 输出下标的命令,可用于文本和数学模式,在数学模式中可代替 \code{\_{}} 符号和 \cs*{sb} 命令。命令中两个可选参数的键值列表等效。
\command{supersub}[\sarg\oarg{键值列表1}\marg{上标内容}\marg{下标内容}\oarg{键值列表2}]
- 同时输出上标和下标的命令,与简短命令 \cs{spb} 等效。
+ 同时输出上标和下标的命令,与简短命令 \cs{spb} 等效。命令中两个可选参数的键值列表等效。
\command{spbifmath}[\marg{数学模式代码}\marg{文本模式代码}]
根据上下标处于数学还是文本模式分别设置不同的值,应当在格式命令或偏移距离选项中使用。
@@ -1092,7 +1155,11 @@
\keyval{hmove}{刚性长度}\Default{0pt}
上标或下标的水平偏移。如果是上下标命令使用则代表上标和上标的共同偏移。
\keyval{cmd}{格式命令}
- 上标或下标的格式命令选项。最后一个命令可以带有一个参数,这个参数用于接受上标或下标。
+ 上标或下标的格式命令选项。最后一个命令可以带有一个参数,这个参数用于接受上标或下标。下面两种设置方式是等效的:
+ \begin{ctexexam}
+ \spbset{spcmd = \color{red}}
+ \ctexset[tools]{spcmd = \color{red}}
+ \end{ctexexam}
\keyval{height}{刚性长度}
段落中当前行上标或下标的基线与前一行的间距。
\keyval{depth}{刚性长度}
@@ -1169,7 +1236,7 @@
\begin{cnltxlist}
\command{hangpara}[\marg{缩进长度}\marg{缩进开始行数}]
悬挂缩进命令 \cs{hangpara} 使其后的一个段落保持悬挂缩进。参数与 \env{hangparas} 环境相同,不过只有一个段落。\meta{缩进长度} 可以是带单位的数值或由文本长度测定命令 \cs{widthof} 提供。
- \command{hangfrom}[\sarg\oarg{缩进长度}\marg{悬挂内容}\oarg{缩进开始行数}]\newtag%
+ \command{hangfrom}[\sarg\oarg{缩进长度}\marg{悬挂内容}\oarg{缩进开始行数}]
指定首行的 \meta{悬挂内容},其后一个段落保持悬挂缩进。\meta{缩进长度} 默认为 \meta{悬挂内容} 文本长度 \cs{hangwd} 的值,支持数学表达式。\meta{缩进开始行数} 默认为 \code{1}。如果是带有星号参数的命令,则首行不输出 \meta{悬挂内容},以等于 \meta{缩进长度} 长度的空白代替。
\begin{ctexexam}
\hangfrom[\hangwd + 1em]{悬挂标签\hspace{0.5em}}[1]
@@ -1182,7 +1249,7 @@
\subsection{代码}
\begin{cnltxlist}
\command{lstdefinestyle}[\marg{代码风格}\marg{键值列表}]
- 代码抄录宏包 \pkg*{listings} 的代码风格定义命令,提供大量选项对代码样式进行高度定制。可以根据需要的代码语言和样式定义多种风格,默认使用的 \meta{代码风格} 为 \code{lst-latex}。
+ 代码抄录宏包 \pkg*{listings} 提供了完善的排版功能,不需要前端处理器。这是它的代码风格定义命令,提供大量选项对代码样式进行高度定制。可以根据需要的代码语言定义多种风格,默认使用的 \meta{代码风格} 为适用于\TeX 语言的 \code{lst-latex}。
\command{lstinline}[\oarg{键值列表}\marg{行内代码}]
行内代码抄录命令。较原生的 \cs*{verb} 命令有较大改进,具有代码语言和样式支持。
\environment{lstlisting}[\oarg{键值列表}]
@@ -1209,7 +1276,7 @@
\subsection{盒子}
\label{subsec:box}
-文档类预置了两个行间盒子环境和两个行内盒子命令,需要在导言区\textbf{手动载入} \pkg*{tcolorbox} 宏包提供支持。它们 \meta{配置选项} 的键值列表可见宏包文档的Option Keys一节,可以进行边距、字体及背景颜色等各种个性化设置。如果 \meta{配置选项} 较长且希望在原有基础上改为全局固定的样式,可以使用 \cs{addtotcbstyle} 命令设置,第一个参数为 \code{tc-}\meta{环境或命令名}。
+文档类预置了两个行间盒子环境和两个行内盒子命令,需要在导言区\textbf{手动载入} \pkg*{tcolorbox} 宏包提供支持。它们 \meta{配置选项} 的键值列表可见宏包文档的Option Keys一节,可以进行边距、字体及背景颜色等各种个性化设置。如果 \meta{配置选项} 较长且希望在原有基础上改为全局固定的样式,可以使用 \cs{addtotcbstyle} 命令设置,第一个参数为 \code{tc-}\meta{环境/命令名}。
\begin{cnltxlist}
\command{deftcbstyle}[\marg{盒子风格}\marg{键值列表}]
新建或重置一个名称为 \meta{盒子风格} 的 \pkg*{tcolorbox} 宏包盒子风格,可以与 \cs{addtotcbstyle} 命令联用。
@@ -1287,7 +1354,7 @@
\command{setcounter}[\marg{计数器}\marg{整数}]\default{}
\command{stepcounter}[\marg{计数器}]
常用的计数器设置命令。命令 \cs{newcounter} 创建一个初始值为0的新计数器。命令 \cs{setcounter} 将计数器的值设定为指定值。命令 \cs{stepcounter} 使计数器的值递增1。
- \command{counterwithin}[\sarg\oarg{格式}\marg{计数器}\oarg{连字符}\marg{父计数器}]\newtag[Chg]%
+ \command{counterwithin}[\sarg\oarg{格式}\marg{计数器}\oarg{连字符}\marg{父计数器}]
对计数器进行绑定的命令。将 \meta{计数器} 绑定于 \meta{父计数器},即 \meta{父计数器} 的值递增时 \meta{计数器} 的值会归零。输出格式 \cs*{the}\meta{计数器} 被定义为 \cs*{the}\meta{父计数器}\meta{连字符}\meta{格式}\marg{计数器}。\meta{格式} 一般为更改计数器编号形式的命令,默认为 \cs*{arabic}。带有星号参数的命令仅进行绑定不更改输出格式。
\command{counterwithout}[\sarg\oarg{格式}\marg{计数器}\marg{父计数器}]
对计数器关系进行解绑的命令。将 \meta{计数器} 解绑于 \meta{父计数器},同时输出格式被改为 \meta{格式}\marg{计数器}。带有星号参数的命令仅进行解绑不更改输出格式。
@@ -1301,8 +1368,8 @@
\begin{cnltxlist}
\command{labelformat}[\marg{计数器}\marg{标签引用格式}]
标签格式命令 \cs{labelformat} 可以设置标签引用格式。\meta{标签引用格式} 中 \code{\#1} 代表 \cs*{the}\meta{计数器},可以设置引用序号的前缀和后缀。也可以使用 \pkg*{cleveref} 宏包提供更强大的标签功能。
- \command{AtEndPreamble}[\marg{钩子代码}]
- 导言区末尾的钩子命令。为了保证兼容性 \pkg*{hyperref} 宏包被设计在导言区末尾载入,一些情况下需要钩子命令在 \pkg*{hyperref} 宏包后方执行 \meta{钩子代码},例如载入 \pkg*{cleveref} 宏包。
+ \command{AtEndPreamble}[\marg{格式代码}]
+ 导言区末尾的钩子命令。为了保证兼容性 \pkg*{hyperref} 宏包被设计在导言区末尾载入,一些情况下需要钩子命令在 \pkg*{hyperref} 宏包后方执行 \meta{格式代码},例如载入 \pkg*{cleveref} 宏包。
\begin{ctexexam}
\labelformat{chapter}{第#1章}
\labelformat{chapter}{第\thechapter 章}
@@ -1310,30 +1377,16 @@
\end{ctexexam}
\end{cnltxlist}
-\subsection{图表题注}
-\pkg*{caption} 宏包提供了多种方法来定制浮动环境(例如 \env{figure} 和 \env{table})中的标题,并可与许多其它宏包配合使用。功能包括旋转题注、侧向题注和连续题注等。
-\begin{cnltxlist}
- \command{captionsetup}[\oarg{条目名}\marg{键值列表}]
- 这是 \pkg*{caption} 宏包的接口命令,\meta{键值列表} 提供多个选项更改图表题注的格式。题注主要由三部分组成:标题标签即图表名与题注编号的组合,标题文本本身通常是内容的简短描述,以及将文本与标签分开的题注分隔符。可以在导言区设置整体格式,也可以在正文使用局部更改格式。
-\end{cnltxlist}
-
-\begin{cnltxlist}[itemsep = 0ex]
- \command{caption}[\sarg\oarg{目录标题}\marg{标题}]\default{}
- \command{captionof}[\sarg\marg{条目名}\oarg{目录标题}\marg{标题}]\default{}
- \command{bicaption}[\sarg\oarg{目录中文标题}\marg{中文标题}\oarg{目录英文标题}\marg{英文标题}]
- 题注命令 \cs{caption} 用于在图表上下方插入题注,需要在浮动环境 \env*{figure} 和 \env*{table} 中使用。在浮动环境外可以使用 \cs{captionof} 命令,第一个参数指定条目名。可以搭配 \pkg*{newfloat} 宏包创建更多类型的浮动环境并设置相应题注。\cs{bicaption} 命令可以实现中英文双语题注,需要在导言区载入 \pkg*{bicaption} 宏包,具体用法见说明文档。
-\end{cnltxlist}
-
\subsection{索引}
\begin{cnltxlist}
\command{indexsetup}[\marg{键值列表}]
- \pkg*{imakeidx} 宏包增强了索引的功能,可使用户在制作和排版文档的同时制作一个或多个索引。这是 \pkg*{imakeidx} 宏包的接口命令,用于设置索引表的整体格式。
+ \pkg*{imakeidx} 宏包增强了索引的功能,可使用户在制作和排版文档的同时制作一个或多个索引。这是 \pkg*{imakeidx} 宏包的接口命令,用于设置索引表的整体格式,它的 \option{level} 和 \option{headers} 选项失效。
\command{index}[\oarg{索引名}\marg{标签}]
索引标签命令的可选参数可以用不同的 \meta{索引名} 给多个索引表设置标签。
\command{makeindex}[\oarg{键值列表}]
用于导言区开启索引收集的命令。这个命令可以重复使用收集多个索引表,以不同的 \meta{索引名} 作为区分,如果仅打印一个索引表没必要重复使用。
\command{printindex}[\sarg\oarg{键值列表}]
- 打印不同索引表的命令。这个命令被重新定义,\meta{键值列表} 中的选项与\ref{subsec:directory command} 其它目录命令相同,但是接口命令 \cs{indexsetup} 的部分选项失效。
+ 打印不同索引表的命令。这个命令被重新定义,\meta{键值列表} 中的选项与\ref{subsec:directory command} 其它目录命令相同,并多出 \option{name} 选项用于指定打印索引的名字。
\keyval{name}{索引名}
指定输出名为 \meta{索引名} 的索引表,如果只使用一个索引表则默认为项目文件名不需要指定。
\end{cnltxlist}
@@ -1389,14 +1442,6 @@
该命令由文档宏包 \pkg*{pdfpages} 提供。可以将其它 \code{pdf} 文档插入当前文档,比如插入其它软件制作的封面。可选参数可以指定插入页数、逻辑页和横向页面等,详情查看宏包文档。
\end{cnltxlist}
-\subsection{下划线}
-\begin{cnltxlist}[itemsep = 0ex]
- \command{uline}[\marg{下划直线}]\default{}
- \command{uuline}[\marg{下划双直线}]\default{}
- \command{uwave}[\marg{下划波浪线}]
- \pkg*{ulem} 宏包提供了多种下划线命令,可以重新定义 \cs{ULthickness} 命令控制下划线的粗细。下划线的深度由 \cs{ULdepth} 控制,默认值 \cs*{maxdimen} 是一个允许深度根据当前字体变化的特殊标志,当然也可以使用 \cs*{setlength} 设定为指定深度。
-\end{cnltxlist}
-
\appendix
\setlist[1]{}
\begin{changelog}[title = 更新日志]
@@ -1439,9 +1484,9 @@
\item 新增脚注段落文本格式定义命令 \cs{deffntpara} 和脚注间距离选项 \option{footnotesep}。
\item 新增悬挂缩进命令 \cs{hangfrom}。
\item 新增行间公式与正文上下间距选项 \option{abovedisplayskip} 和 \option{belowdisplayskip}。
- \item 新增目录文件扩展名分配命令 \cs{AllotCaptionExt}。
+ \item 新增目录文件扩展名分配命令 \cs{AssignCaptionExt}。
\end{version}
- \shortversion{v = 2024aq,date = 2022/03/31,changes = 修复命令 \cs{ebifbitoc} 用于条目缩进选项 \option{tocindent} 失效的问题。}
+ \shortversion{v = 2024aq,date = 2024/03/31,changes = 修复命令 \cs{ebifbitoc} 用于条目缩进选项 \option{tocindent} 失效的问题。}
\begin{version}[v = 2024as,date = 2024/04/19]
\changed
\item 目录条目样式注册命令 \cs{RegisterTocName} 增加星号参数,支持设置段落型目录。
@@ -1449,16 +1494,36 @@
\item 新增目录条目标题标签定义的选项 \option{toclabel}。
\item 新增段落型目录条目附加代码的选项 \option{tocbegin}、\option{tocsep} 和 \option{tocend}。
\end{version}
- \shortversion{v = 2024aw,date = 2022/04/22,changes = 新增新建章节标题命令 \cs{NewTitleCommand} 和 \cs{NewTitleEntryCommand}。}
- \shortversion{v = 2024bb,date = 2022/04/26,changes = 增加对 \pkg*{thmtools} 宏包定理环境目录 \cs{listoftheorems} 的支持。}
- \shortversion{v = 2024bk,date = 2022/05/07,changes = 新增局部题注目录分配命令 \cs{AllotPartialExt}。}
- \begin{version}[v = 2024bn,date = 2022/05/10]
+ \shortversion{v = 2024aw,date = 2024/04/22,changes = 新增新建章节标题命令 \cs{NewTitleCommand} 和 \cs{NewTitleEntryCommand}。}
+ \shortversion{v = 2024bb,date = 2024/04/26,changes = 增加对 \pkg*{thmtools} 宏包定理环境目录 \cs{listoftheorems} 的支持。}
+ \shortversion{v = 2024bk,date = 2024/05/07,changes = 新增局部题注目录分配命令 \cs{AssignPartialExt}。}
+ \begin{version}[v = 2024bn,date = 2024/05/10]
\fixed
\item 修复 \module*{toc} 模块中带有 \option*{every} 后缀的选项不对所有已注册条目有效的问题。
\added
\item 新增统一设置所有目录格式时的条目类型排除命令 \cs{ExcludeEveryTocName}。
\end{version}
+ \shortversion{v = 2024cd,date = 2024/06/14,changes = 修复全局选项 \option{class} 无法正确切换单双面排版的问题。}
+ \begin{version}[v = 2024cf,date = 2024/06/16]
+ \fixed
+ \item 修复和改进新建章节/图表标题时目录层次深度的问题。
+ \changed
+ \item \module*{tools} 模块的图片路径选项 \option{figurepath} 可在正文中使用。
+ \end{version}
+ \shortversion{v = 2024ci,date = 2024/06/22,changes = 修复使用 \code{flush} 类型脚注报错。}
+ \shortversion{v = 2024co,date = 2024/07/06,changes = 目录命令的可选参数支持 \CTeX 键值列表所有路径的章节标题样式选项。}
+ \shortversion{v = 2024cq,date = 2024/07/12,changes = 新增章节标题格式复制命令 \cs{CopyTitleFormat}。}
+ \shortversion{v = 2024cu,date = 2024/07/20,changes = 修复无编号的定理环境标签命令 \cs*{p@}\meta{定理名} 缺失导致报错的问题。}
+ \shortversion{v = 2024cx,date = 2024/07/28,changes = 新增将脚注置于页面底部的命令 \cs{PushFntBottom}。}
+ \begin{version}[v = 2024dh,date = 2024/08/06]
+ \changed
+ \item 取消默认载入 \pkg*{ulem} 下划线宏包。
+ \added
+ \item 使用 \pkg*{xtemplate} 宏包将封面标题命令 \cs{maketitle} 抽象为由实例组成的模板。
+ \item 新增图表题注模块 \module*{cap}。
+ \end{version}
\end{changelog}
\nocite{*}
+% \AddToHook{cmd/printindex/before}{\clearpage}
\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/edmaths/LICENSE.txt b/macros/latex/contrib/edmaths/LICENSE.txt
new file mode 100644
index 0000000000..2244313901
--- /dev/null
+++ b/macros/latex/contrib/edmaths/LICENSE.txt
@@ -0,0 +1,416 @@
+The LaTeX Project Public License
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+LPPL Version 1.3c 2008-05-04
+
+Copyright 1999 2002-2008 LaTeX3 Project
+ Everyone is allowed to distribute verbatim copies of this
+ license document, but modification of it is not allowed.
+
+
+PREAMBLE
+========
+
+The LaTeX Project Public License (LPPL) is the primary license under
+which the LaTeX kernel and the base LaTeX packages are distributed.
+
+You may use this license for any work of which you hold the copyright
+and which you wish to distribute. This license may be particularly
+suitable if your work is TeX-related (such as a LaTeX package), but
+it is written in such a way that you can use it even if your work is
+unrelated to TeX.
+
+The section `WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE',
+below, gives instructions, examples, and recommendations for authors
+who are considering distributing their works under this license.
+
+This license gives conditions under which a work may be distributed
+and modified, as well as conditions under which modified versions of
+that work may be distributed.
+
+We, the LaTeX3 Project, believe that the conditions below give you
+the freedom to make and distribute modified versions of your work
+that conform with whatever technical specifications you wish while
+maintaining the availability, integrity, and reliability of
+that work. If you do not see how to achieve your goal while
+meeting these conditions, then read the document `cfgguide.tex'
+and `modguide.tex' in the base LaTeX distribution for suggestions.
+
+
+DEFINITIONS
+===========
+
+In this license document the following terms are used:
+
+ `Work'
+ Any work being distributed under this License.
+
+ `Derived Work'
+ Any work that under any applicable law is derived from the Work.
+
+ `Modification'
+ Any procedure that produces a Derived Work under any applicable
+ law -- for example, the production of a file containing an
+ original file associated with the Work or a significant portion of
+ such a file, either verbatim or with modifications and/or
+ translated into another language.
+
+ `Modify'
+ To apply any procedure that produces a Derived Work under any
+ applicable law.
+
+ `Distribution'
+ Making copies of the Work available from one person to another, in
+ whole or in part. Distribution includes (but is not limited to)
+ making any electronic components of the Work accessible by
+ file transfer protocols such as FTP or HTTP or by shared file
+ systems such as Sun's Network File System (NFS).
+
+ `Compiled Work'
+ A version of the Work that has been processed into a form where it
+ is directly usable on a computer system. This processing may
+ include using installation facilities provided by the Work,
+ transformations of the Work, copying of components of the Work, or
+ other activities. Note that modification of any installation
+ facilities provided by the Work constitutes modification of the Work.
+
+ `Current Maintainer'
+ A person or persons nominated as such within the Work. If there is
+ no such explicit nomination then it is the `Copyright Holder' under
+ any applicable law.
+
+ `Base Interpreter'
+ A program or process that is normally needed for running or
+ interpreting a part or the whole of the Work.
+
+ A Base Interpreter may depend on external components but these
+ are not considered part of the Base Interpreter provided that each
+ external component clearly identifies itself whenever it is used
+ interactively. Unless explicitly specified when applying the
+ license to the Work, the only applicable Base Interpreter is a
+ `LaTeX-Format' or in the case of files belonging to the
+ `LaTeX-format' a program implementing the `TeX language'.
+
+
+
+CONDITIONS ON DISTRIBUTION AND MODIFICATION
+===========================================
+
+1. Activities other than distribution and/or modification of the Work
+are not covered by this license; they are outside its scope. In
+particular, the act of running the Work is not restricted and no
+requirements are made concerning any offers of support for the Work.
+
+2. You may distribute a complete, unmodified copy of the Work as you
+received it. Distribution of only part of the Work is considered
+modification of the Work, and no right to distribute such a Derived
+Work may be assumed under the terms of this clause.
+
+3. You may distribute a Compiled Work that has been generated from a
+complete, unmodified copy of the Work as distributed under Clause 2
+above, as long as that Compiled Work is distributed in such a way that
+the recipients may install the Compiled Work on their system exactly
+as it would have been installed if they generated a Compiled Work
+directly from the Work.
+
+4. If you are the Current Maintainer of the Work, you may, without
+restriction, modify the Work, thus creating a Derived Work. You may
+also distribute the Derived Work without restriction, including
+Compiled Works generated from the Derived Work. Derived Works
+distributed in this manner by the Current Maintainer are considered to
+be updated versions of the Work.
+
+5. If you are not the Current Maintainer of the Work, you may modify
+your copy of the Work, thus creating a Derived Work based on the Work,
+and compile this Derived Work, thus creating a Compiled Work based on
+the Derived Work.
+
+6. If you are not the Current Maintainer of the Work, you may
+distribute a Derived Work provided the following conditions are met
+for every component of the Work unless that component clearly states
+in the copyright notice that it is exempt from that condition. Only
+the Current Maintainer is allowed to add such statements of exemption
+to a component of the Work.
+
+ a. If a component of this Derived Work can be a direct replacement
+ for a component of the Work when that component is used with the
+ Base Interpreter, then, wherever this component of the Work
+ identifies itself to the user when used interactively with that
+ Base Interpreter, the replacement component of this Derived Work
+ clearly and unambiguously identifies itself as a modified version
+ of this component to the user when used interactively with that
+ Base Interpreter.
+
+ b. Every component of the Derived Work contains prominent notices
+ detailing the nature of the changes to that component, or a
+ prominent reference to another file that is distributed as part
+ of the Derived Work and that contains a complete and accurate log
+ of the changes.
+
+ c. No information in the Derived Work implies that any persons,
+ including (but not limited to) the authors of the original version
+ of the Work, provide any support, including (but not limited to)
+ the reporting and handling of errors, to recipients of the
+ Derived Work unless those persons have stated explicitly that
+ they do provide such support for the Derived Work.
+
+ d. You distribute at least one of the following with the Derived Work:
+
+ 1. A complete, unmodified copy of the Work;
+ if your distribution of a modified component is made by
+ offering access to copy the modified component from a
+ designated place, then offering equivalent access to copy
+ the Work from the same or some similar place meets this
+ condition, even though third parties are not compelled to
+ copy the Work along with the modified component;
+
+ 2. Information that is sufficient to obtain a complete,
+ unmodified copy of the Work.
+
+7. If you are not the Current Maintainer of the Work, you may
+distribute a Compiled Work generated from a Derived Work, as long as
+the Derived Work is distributed to all recipients of the Compiled
+Work, and as long as the conditions of Clause 6, above, are met with
+regard to the Derived Work.
+
+8. The conditions above are not intended to prohibit, and hence do not
+apply to, the modification, by any method, of any component so that it
+becomes identical to an updated version of that component of the Work as
+it is distributed by the Current Maintainer under Clause 4, above.
+
+9. Distribution of the Work or any Derived Work in an alternative
+format, where the Work or that Derived Work (in whole or in part) is
+then produced by applying some process to that format, does not relax or
+nullify any sections of this license as they pertain to the results of
+applying that process.
+
+10. a. A Derived Work may be distributed under a different license
+ provided that license itself honors the conditions listed in
+ Clause 6 above, in regard to the Work, though it does not have
+ to honor the rest of the conditions in this license.
+
+ b. If a Derived Work is distributed under a different license, that
+ Derived Work must provide sufficient documentation as part of
+ itself to allow each recipient of that Derived Work to honor the
+ restrictions in Clause 6 above, concerning changes from the Work.
+
+11. This license places no restrictions on works that are unrelated to
+the Work, nor does this license place any restrictions on aggregating
+such works with the Work by any means.
+
+12. Nothing in this license is intended to, or may be used to, prevent
+complete compliance by all parties with all applicable laws.
+
+
+NO WARRANTY
+===========
+
+There is no warranty for the Work. Except when otherwise stated in
+writing, the Copyright Holder provides the Work `as is', without
+warranty of any kind, either expressed or implied, including, but not
+limited to, the implied warranties of merchantability and fitness for a
+particular purpose. The entire risk as to the quality and performance
+of the Work is with you. Should the Work prove defective, you assume
+the cost of all necessary servicing, repair, or correction.
+
+In no event unless required by applicable law or agreed to in writing
+will The Copyright Holder, or any author named in the components of the
+Work, or any other party who may distribute and/or modify the Work as
+permitted above, be liable to you for damages, including any general,
+special, incidental or consequential damages arising out of any use of
+the Work or out of inability to use the Work (including, but not limited
+to, loss of data, data being rendered inaccurate, or losses sustained by
+anyone as a result of any failure of the Work to operate with any other
+programs), even if the Copyright Holder or said author or said other
+party has been advised of the possibility of such damages.
+
+
+MAINTENANCE OF THE WORK
+=======================
+
+The Work has the status `author-maintained' if the Copyright Holder
+explicitly and prominently states near the primary copyright notice in
+the Work that the Work can only be maintained by the Copyright Holder
+or simply that it is `author-maintained'.
+
+The Work has the status `maintained' if there is a Current Maintainer
+who has indicated in the Work that they are willing to receive error
+reports for the Work (for example, by supplying a valid e-mail
+address). It is not required for the Current Maintainer to acknowledge
+or act upon these error reports.
+
+The Work changes from status `maintained' to `unmaintained' if there
+is no Current Maintainer, or the person stated to be Current
+Maintainer of the work cannot be reached through the indicated means
+of communication for a period of six months, and there are no other
+significant signs of active maintenance.
+
+You can become the Current Maintainer of the Work by agreement with
+any existing Current Maintainer to take over this role.
+
+If the Work is unmaintained, you can become the Current Maintainer of
+the Work through the following steps:
+
+ 1. Make a reasonable attempt to trace the Current Maintainer (and
+ the Copyright Holder, if the two differ) through the means of
+ an Internet or similar search.
+
+ 2. If this search is successful, then enquire whether the Work
+ is still maintained.
+
+ a. If it is being maintained, then ask the Current Maintainer
+ to update their communication data within one month.
+
+ b. If the search is unsuccessful or no action to resume active
+ maintenance is taken by the Current Maintainer, then announce
+ within the pertinent community your intention to take over
+ maintenance. (If the Work is a LaTeX work, this could be
+ done, for example, by posting to comp.text.tex.)
+
+ 3a. If the Current Maintainer is reachable and agrees to pass
+ maintenance of the Work to you, then this takes effect
+ immediately upon announcement.
+
+ b. If the Current Maintainer is not reachable and the Copyright
+ Holder agrees that maintenance of the Work be passed to you,
+ then this takes effect immediately upon announcement.
+
+ 4. If you make an `intention announcement' as described in 2b. above
+ and after three months your intention is challenged neither by
+ the Current Maintainer nor by the Copyright Holder nor by other
+ people, then you may arrange for the Work to be changed so as
+ to name you as the (new) Current Maintainer.
+
+ 5. If the previously unreachable Current Maintainer becomes
+ reachable once more within three months of a change completed
+ under the terms of 3b) or 4), then that Current Maintainer must
+ become or remain the Current Maintainer upon request provided
+ they then update their communication data within one month.
+
+A change in the Current Maintainer does not, of itself, alter the fact
+that the Work is distributed under the LPPL license.
+
+If you become the Current Maintainer of the Work, you should
+immediately provide, within the Work, a prominent and unambiguous
+statement of your status as Current Maintainer. You should also
+announce your new status to the same pertinent community as
+in 2b) above.
+
+
+WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE
+======================================================
+
+This section contains important instructions, examples, and
+recommendations for authors who are considering distributing their
+works under this license. These authors are addressed as `you' in
+this section.
+
+Choosing This License or Another License
+----------------------------------------
+
+If for any part of your work you want or need to use *distribution*
+conditions that differ significantly from those in this license, then
+do not refer to this license anywhere in your work but, instead,
+distribute your work under a different license. You may use the text
+of this license as a model for your own license, but your license
+should not refer to the LPPL or otherwise give the impression that
+your work is distributed under the LPPL.
+
+The document `modguide.tex' in the base LaTeX distribution explains
+the motivation behind the conditions of this license. It explains,
+for example, why distributing LaTeX under the GNU General Public
+License (GPL) was considered inappropriate. Even if your work is
+unrelated to LaTeX, the discussion in `modguide.tex' may still be
+relevant, and authors intending to distribute their works under any
+license are encouraged to read it.
+
+A Recommendation on Modification Without Distribution
+-----------------------------------------------------
+
+It is wise never to modify a component of the Work, even for your own
+personal use, without also meeting the above conditions for
+distributing the modified component. While you might intend that such
+modifications will never be distributed, often this will happen by
+accident -- you may forget that you have modified that component; or
+it may not occur to you when allowing others to access the modified
+version that you are thus distributing it and violating the conditions
+of this license in ways that could have legal implications and, worse,
+cause problems for the community. It is therefore usually in your
+best interest to keep your copy of the Work identical with the public
+one. Many works provide ways to control the behavior of that work
+without altering any of its licensed components.
+
+How to Use This License
+-----------------------
+
+To use this license, place in each of the components of your work both
+an explicit copyright notice including your name and the year the work
+was authored and/or last substantially modified. Include also a
+statement that the distribution and/or modification of that
+component is constrained by the conditions in this license.
+
+Here is an example of such a notice and statement:
+
+ %% pig.dtx
+ %% Copyright 2005 M. Y. Name
+ %
+ % 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 `maintained'.
+ %
+ % The Current Maintainer of this work is M. Y. Name.
+ %
+ % This work consists of the files pig.dtx and pig.ins
+ % and the derived file pig.sty.
+
+Given such a notice and statement in a file, the conditions
+given in this license document would apply, with the `Work' referring
+to the three files `pig.dtx', `pig.ins', and `pig.sty' (the last being
+generated from `pig.dtx' using `pig.ins'), the `Base Interpreter'
+referring to any `LaTeX-Format', and both `Copyright Holder' and
+`Current Maintainer' referring to the person `M. Y. Name'.
+
+If you do not want the Maintenance section of LPPL to apply to your
+Work, change `maintained' above into `author-maintained'.
+However, we recommend that you use `maintained', as the Maintenance
+section was added in order to ensure that your Work remains useful to
+the community even when you can no longer maintain and support it
+yourself.
+
+Derived Works That Are Not Replacements
+---------------------------------------
+
+Several clauses of the LPPL specify means to provide reliability and
+stability for the user community. They therefore concern themselves
+with the case that a Derived Work is intended to be used as a
+(compatible or incompatible) replacement of the original Work. If
+this is not the case (e.g., if a few lines of code are reused for a
+completely different task), then clauses 6b and 6d shall not apply.
+
+
+Important Recommendations
+-------------------------
+
+ Defining What Constitutes the Work
+
+ The LPPL requires that distributions of the Work contain all the
+ files of the Work. It is therefore important that you provide a
+ way for the licensee to determine which files constitute the Work.
+ This could, for example, be achieved by explicitly listing all the
+ files of the Work near the copyright notice of each file or by
+ using a line such as:
+
+ % This work consists of all files listed in manifest.txt.
+
+ in that place. In the absence of an unequivocal list it might be
+ impossible for the licensee to determine what is considered by you
+ to comprise the Work and, in such a case, the licensee would be
+ entitled to make reasonable conjectures as to which files comprise
+ the Work.
+
diff --git a/macros/latex/contrib/edmaths/README.md b/macros/latex/contrib/edmaths/README.md
new file mode 100644
index 0000000000..a850f29c6b
--- /dev/null
+++ b/macros/latex/contrib/edmaths/README.md
@@ -0,0 +1,5 @@
+# `edmaths` Report & Thesis Class
+
+A report and thesis stylesheet for easier compliance with the [university’s typesetting rules](https://www.ed.ac.uk/academic-services/students/thesis-submission). See also the [_documentation_](https://foggalong.github.io/edinburgh-math-latex/edmaths-docs.pdf) and a [_compiled example_](https://foggalong.github.io/edinburgh-math-latex/example-report.pdf). To use, place the files and store them either with your .tex file(s) or in any directory that's findable by LaTeX (e.g. `$TEXINPUTS`).
+
+For more information on the wider project, including the beamer theme, [see GitHub](https://github.com/Foggalong/edinburgh-math-latex). The stylesheet [edmaths.sty](edmaths.sty) is provided under the [LaTeX Project Public License v1.3c](https://choosealicense.com/licenses/lppl-1.3c/) (LPPL) while the example [example-report.tex](example-report.tex) is provided under the [BSD Zero Clause License](https://choosealicense.com/licenses/0bsd/) (0BSD).
diff --git a/macros/latex/contrib/edmaths/edmaths-docs.pdf b/macros/latex/contrib/edmaths/edmaths-docs.pdf
new file mode 100644
index 0000000000..cd62935fcd
--- /dev/null
+++ b/macros/latex/contrib/edmaths/edmaths-docs.pdf
Binary files differ
diff --git a/macros/latex/contrib/edmaths/edmaths.sty b/macros/latex/contrib/edmaths/edmaths.sty
new file mode 100644
index 0000000000..e11c515344
--- /dev/null
+++ b/macros/latex/contrib/edmaths/edmaths.sty
@@ -0,0 +1,258 @@
+%% Package `edmaths' v0.98
+%% File edmaths.sty
+%% Copyright 2024 Josh Fogg
+%%
+%% edmaths.sty is a LaTeX style file for typesetting reports and theses in the
+%% School of Mathematics at the University of Edinburgh. Suitable for use for
+%% theses, yearly reports, and undergraduate projects. Part of the more general
+%% `edmaths' package. See README.md for usage instructions.
+%%
+%% 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://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 `maintained' and the current
+%% maintainer of this work is Josh Fogg. Originally written by Thomas Koeppe in
+%% 2007/07, it has since been updated by Josh Fogg from 2020 onwards.
+%%
+%% This work consists of the file edmaths.sty.
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{edmaths}[2024-08-09 Edinburgh maths thesis/report style v0.98]
+\RequirePackage{calc,ifthen,setspace,amsmath,amsthm,amscd,amssymb}
+
+
+
+% PAGE SIZE AND MARGINS
+% These settings control the size of the page and its margins. All measurements are
+% compliant wih the school's typesetting requirements.
+
+\setlength{\paperheight}{297mm} % A4 Paper
+\setlength{\paperwidth}{210mm} %
+\setlength{\oddsidemargin}{14.6mm} % Left/Inside: 4.0cm (rel. -1in)
+\setlength{\evensidemargin}{-.4mm} % Right/Outside: 2.5cm (rel. -1in)
+\setlength{\topmargin}{-17.4mm} % \
+\setlength{\headheight}{6mm} % | Top: 2.0cm (rel. -1in), out of which 6mm for the header
+\setlength{\headsep}{6mm} % /
+\setlength{\textwidth}{145mm} % Margins: 2.5cm + 4cm
+% Textheight delayed until we know the line spacing.
+
+% The following is removed in favour of the `report' class options "oneside/twoside".
+% \@twosidefalse \@mparswitchfalse % Single-sided by default
+
+
+
+% PACKAGE OPTIONS
+% These options can be selected wihin \usepackage[...]{edmaths} to modify the
+% appearance of different parts of the document.
+
+% Options relating to external packages
+\newboolean{with-fourier} % Use the `fourier' package for Adobe Utopia font
+\newboolean{with-cmbright} % Use the `cmbright' package for Computer Modern Bright (sans serif) font
+\newboolean{with-comicsans} % :)
+\newboolean{with-hyperref} % Use the `hyperref' package for hyperlinks and bookmarks, all black
+\newboolean{with-colour} % Add sane colours to the hyperref links
+\newboolean{with-fancyhdr} % Use the `fancyhdr' package to provide header and footer
+\DeclareOption{fourier}{\setboolean{with-fourier}{true}}
+\DeclareOption{cmbright}{\setboolean{with-cmbright}{true}}
+\DeclareOption{comicsans}{\setboolean{with-comicsans}{true}}
+\DeclareOption{hyperref}{\setboolean{with-hyperref}{true}}
+\DeclareOption{colour}{\setboolean{with-colour}{true}}
+\DeclareOption{fancyhdr}{\setboolean{with-fancyhdr}{true}}
+
+% Options relating to document type (thesis, report, etc)
+\ifthenelse{\isundefined{\degreetext}}{\newcommand{\degreetext}{Specify a degree option!}}{}
+\DeclareOption{phd}{\renewcommand{\degreetext}{Doctor of Philosophy}}
+\DeclareOption{firstyear}{\renewcommand{\degreetext}{First-Year Report\\Maxwell Institute Graduate School}}
+\DeclareOption{secondyear}{\renewcommand{\degreetext}{Second-Year Report\\Maxwell Institute Graduate School}}
+\DeclareOption{thirdyear}{\renewcommand{\degreetext}{Third-Year Report\\Maxwell Institute Graduate School}}
+\DeclareOption{y4project}{\renewcommand{\degreetext}{Year 4 Project\\School of Mathematics}}
+\DeclareOption{mmath}{\renewcommand{\degreetext}{Master of Mathematics with Honours \\ School of Mathematics}}
+\DeclareOption{masterph}{\renewcommand{\degreetext}{Master of Philosophy}}
+\DeclareOption{mastersc}{\renewcommand{\degreetext}{Master of Science by Research}}
+
+% Options relating to stretchfactor (used for margin spacing)
+\ifthenelse{\isundefined{\stretchfactor}}{\newcommand{\stretchfactor}{1}}{}
+\DeclareOption{single}{\renewcommand{\stretchfactor}{1}}
+\DeclareOption{onehalf}{\renewcommand{\stretchfactor}{1.5}}
+\DeclareOption{double}{\renewcommand{\stretchfactor}{2}}
+
+% Options relating to having single or double sided documents
+% \DeclareOption{oneside}{\@twosidefalse \@mparswitchfalse} % Single-sided by default
+% \DeclareOption{twosides}{\@twosidetrue \@mparswitchtrue}
+
+
+\ProcessOptions
+
+% If with-fourier selected, use the Adobe Utopia font.
+\ifthenelse{\boolean{with-fourier}}{
+ \RequirePackage{cmap}
+ \RequirePackage{fourier}
+ \RequirePackage[T1]{fontenc}
+ \RequirePackage{microtype}
+} {}
+
+% If with-cmbright selected, use the (sans-serif) Computer Modern Bright font.
+\ifthenelse{\boolean{with-cmbright}}{
+ % NOTE must be compiled with xelatex or luatex
+ \RequirePackage{cmap}
+ \RequirePackage{cmbright}
+ \RequirePackage[T1]{fontenc}
+ \RequirePackage{microtype}
+} {}
+
+% :)
+\ifthenelse{\boolean{with-comicsans}}{
+ % NOTE must be compiled with xelatex or luatex
+ \usepackage{fontspec}
+ \setmainfont{Comic Sans MS}
+} {}
+
+% If with-hyperref selected, configure its default settings
+\ifthenelse{\boolean{with-hyperref}}{
+ \RequirePackage[dvipsnames]{xcolor}
+ \RequirePackage[pdftitle={\@title}, pdfauthor={\@author}, pdfcreator={PDFLaTeX with edmaths}, pdfpagelayout=OneColumn, colorlinks=true, linkcolor=black, urlcolor=black, citecolor=black]{hyperref}
+ % If with-colour selected, use it to make hyperlinks blue not black
+ \ifthenelse{\boolean{with-colour}}{
+ \hypersetup{linkcolor=Sepia, urlcolor=NavyBlue, citecolor=Sepia}
+ } {}
+} {}
+
+% If with-fancyhdr selected, use it to provide fancier headers and footers
+\ifthenelse{\boolean{with-fancyhdr}}{
+ \RequirePackage{fancyhdr}
+ % Define a short title for use in headers if title is too long. Default is the same as title. Usage: use command \shortitle{<your short title here>} *after* calling edmaths.
+ \newcommand\@shorttitle{\@title}
+ \newcommand\shorttitle[1]{\renewcommand\@shorttitle{#1}}
+ \pagestyle{fancy}
+ \fancyhf{}
+ % if \fancyhead or \fancyfoot are used without `twoside` in \documentclass{...} then
+ % fancyhdr will complain that the 'E' used here is useless, so need to condition.
+ \if@twoside%
+ %%% put the stuff for true here (twoside=true)
+ \fancyhead[RO,LE]{\thepage}
+ \fancyfoot[RO,LE]{\thepage}
+ \fancyhead[LO]{\it\@shorttitle}
+ \fancyhead[RE]{\@author}
+ \fancyfoot[RE,LO]{}
+ \else%
+ %%% put the stuff for false here (twoside=false)
+ \fancyhead[LO]{\it\@shorttitle~~$\cdot$~~\@author}
+ \fancyhead[R]{\thepage}
+ \fancyfoot[R,LO]{}
+ \fi%
+} {}
+
+
+
+% BODY HEIGHT
+% Set up the text body height. For the text height, we calculate the largest number of
+% lines that gives us no more than 4cm bottom margin. This depends on the line spacing,
+% which we need first.
+
+\setstretch{\stretchfactor}
+
+% Debug only: In the next line, \XXXfactor contains the number of lines on a text-only page.
+% \newlength{\XXXunit}\setlength{\XXXunit}{1pt}\newlength{\XXXfactor}\setlength{\XXXfactor}{1pt + ((672pt - \topskip) / \baselineskip) * \XXXunit}
+\newlength{\scratchlength}\setlength{\scratchlength}{\topskip + ((672pt - \topskip) / \baselineskip) * \baselineskip + \baselineskip}
+\setlength{\textheight}{\scratchlength}
+
+
+
+% DOCUMENT COMPONENTS
+% Provides the formatting for the required document components. Specifically, these are
+% the titlepage, declaration, dedication, abstract, and undergraduate project fulfilment.
+
+\renewcommand{\maketitle}{%
+ \begin{titlepage}
+ \singlespacing
+ \addtolength{\oddsidemargin}{-0.75cm}
+ \begin{center}
+ \null\vskip 4.1cm
+ \begin{minipage}[t][7.6cm]{10.5cm}
+ \begin{center}
+ {\LARGE\textbf{\@title}\par}
+ {\Large\textit{\@author}\par}
+ \end{center}
+ \end{minipage}
+ \vfill
+ {\Large\degreetext \par The University of Edinburgh \par\@date \par}
+ \end{center}
+ \end{titlepage}
+ % For two-sided documents it's required that a blank page follow the title page. For
+ % one-sided documents it's required that the title page contribute to the page count.
+ \if@twoside
+ \thispagestyle{empty}
+ \cleardoublepage
+ \else
+ \addtocounter{page}{1}
+ \fi
+}
+
+
+% Declaration style for everything except year 4 projects
+\newcommand{\declaration}[1]{
+ % Doesn't need a chapter number or adding to the contents page
+ \chapter*{Declaration}
+ % Must always be single spaced
+ \begin{singlespace}
+ \def\param{#1}
+ \ifx\param\empty
+ I declare that this thesis was composed by myself
+ and that the work contained therein is my own,
+ except where explicitly stated otherwise in the text.
+ \else
+ {#1}
+ \fi
+ \end{singlespace}
+ {\raggedleft\vspace{2cm}(\textit{\@author})}
+}
+
+
+% Declaration style for year 4 project, argument is degree programme (e.g. MMath)
+\newcommand{\yfourdeclaration}[1]{
+ \vfill
+ \noindent
+ This project report is submitted in partial fulfilment
+ of the requirements for the degree of \textit{#1}.
+}
+
+
+\renewenvironment{abstract}{
+ % Abstracts don't need a chapter number...
+ \chapter*{\abstractname}
+}{
+ % ...but do need adding to the contents page.
+ \addcontentsline{toc}{chapter}{\abstractname}
+}
+
+
+\newenvironment{laysummary}{
+ % A lay summary is required for PhD theses and is not included in the page count. We treat it in a similar way to the abstract here.
+ \chapter*{Lay Summary}
+}{
+ \addcontentsline{toc}{chapter}{Lay Summary}
+}
+
+
+\newenvironment{acknowledgements}{
+ % Acknowledgements environment similar to abtract and lay summary.
+ \chapter*{Acknowledgements}
+}{
+ \addcontentsline{toc}{chapter}{Acknowledgements}
+}
+
+
+\newcommand{\dedication}[1]{%
+ % Handled dedications (e.g. 'For Alex', not acknowledgements)
+ \clearpage
+ \thispagestyle{plain}
+ \vspace*{7cm}
+ \begin{center}
+ \Large\it #1
+ \end{center}
+}
diff --git a/macros/latex/contrib/edmaths/example-references.bib b/macros/latex/contrib/edmaths/example-references.bib
new file mode 100644
index 0000000000..cd65755781
--- /dev/null
+++ b/macros/latex/contrib/edmaths/example-references.bib
@@ -0,0 +1,10 @@
+ This is an example biblography used in example-presentation.tex and
+ example-report.tex, examples of the edmaths Beamer and report styles
+ respectively. When creating a biblography you might find these bibtex
+ templates useful: https://verbosus.com/bibtex-style-examples.html
+
+@misc{koeppe2007,
+ title = {Package `edmaths'},
+ author = {Thomas Koeppe},
+ year = {2007}
+}
diff --git a/macros/latex/contrib/edmaths/example-report.tex b/macros/latex/contrib/edmaths/example-report.tex
new file mode 100644
index 0000000000..2dae5e22a7
--- /dev/null
+++ b/macros/latex/contrib/edmaths/example-report.tex
@@ -0,0 +1,79 @@
+%% This file is an example of using edmaths.sty to style a PhD thesis that
+%% complies with University of Edinburgh typesetting rules. While the
+%% style is LPPL 1.3 licensed, this example is given under a 0BSD license
+%% (https://choosealicense.com/licenses/0bsd), meaning it can be freely
+%% used, copied, modified, and/or redistributed with or without attribution.
+%% See README.md or https://github.com/Foggalong/edinburgh-math-latex for
+%% instructions on using the style.
+
+\documentclass[12pt,twoside]{report}
+
+\title{Thesis Title}
+\author{Author Name}
+\date{YYYY}
+
+\usepackage[phd,fourier,hyperref,colour,fancyhdr]{edmaths}
+
+%\shorttitle{Short title} % You can optionally define a shorter version of your title for the headers if you use the fancyhdr option.
+
+
+\begin{document}
+
+\flushbottom
+\pagenumbering{roman}
+
+\maketitle
+
+\begin{declaration}
+ {I declare that this thesis has been composed solely by myself and that it has not been
+ submitted, in whole or in part, in any previous application for a degree. Except where
+ stated otherwise by reference or acknowledgement, the work presented is entirely my
+ own.}
+ % Required for PhD theses. This declaration should be tailored to your thesis. If your thesis includes previously-published work, it should be declared on this page. See https://www.ed.ac.uk/sites/default/files/atoms/files/thesis_signed_declaration.pdf.
+\end{declaration}
+
+\begin{abstract}
+ The abstract goes here.
+\end{abstract}
+
+\begin{laysummary}
+ A lay summary is required for PhD theses. See \href{https://www.ed.ac.uk/sites/default/files/atoms/files/lay_summary_in_theses.pdf}{this page on the University website}.
+\end{laysummary}
+
+\dedication{In memory of my sanity.}
+
+\begin{acknowledgements}
+ I'd like to thank my supervisor for putting up with me for four years.
+\end{acknowledgements}
+
+
+\tableofcontents
+% Uncomment to add 'Contents' entry to contents page
+% \addcontentsline{toc}{chapter}{Contents}
+
+\newpage
+\pagenumbering{arabic}
+
+\chapter{First Chapter}
+
+This is an example of a report made using the \texttt{edmaths} stylesheet~\cite{koeppe2007}, which is designed to ensure compliance with the University of Edinburgh's typesetting requirements for reports and theses.
+
+\section{First section}
+
+\section{Second section}
+
+
+\chapter{Second Chapter}
+
+\appendix
+
+\chapter{First Appendix}
+
+
+\bibliography{example-references}
+\addcontentsline{toc}{chapter}{Bibliography}
+% Choose a reference style from https://verbosus.com/bibtex-style-examples.html
+\bibliographystyle{ieeetr}
+% Or use the `amsrefs' package, https://ams.org/tex/amsrefs.html
+
+\end{document}
diff --git a/macros/latex/contrib/elpres/README.md b/macros/latex/contrib/elpres/README.md
index bc1fe64089..8b303e2263 100644
--- a/macros/latex/contrib/elpres/README.md
+++ b/macros/latex/contrib/elpres/README.md
@@ -1,4 +1,4 @@
-Elpres v1.0.1 2021-08-10
+Elpres v1.1 2024-05-29
# Short description
@@ -18,13 +18,10 @@ For enhanced features the packages `ragged2e`, `overlays`, `wallpaper`,
A homepage for the elpres project: http://vkiefel.de/elpres.html with
additional material.
-# Changes in v1.0.1
-
-* A new class option `ballsymb` was added,
-* The manual was updated,
-* Detailed installation instructions for manual installation were
- updated in this file (`README.md`).
+# Changes in v1.1
+* Minor corrections and fixes in `elpres.cls`,
+* The manual was updated.
# Installation
diff --git a/macros/latex/contrib/elpres/doc/elpres-example.pdf b/macros/latex/contrib/elpres/doc/elpres-example.pdf
index c3c4b30787..435b0a5e6b 100644
--- a/macros/latex/contrib/elpres/doc/elpres-example.pdf
+++ b/macros/latex/contrib/elpres/doc/elpres-example.pdf
Binary files differ
diff --git a/macros/latex/contrib/elpres/doc/elpres-example.tex b/macros/latex/contrib/elpres/doc/elpres-example.tex
index 9bd56104a4..f2f0c3474c 100644
--- a/macros/latex/contrib/elpres/doc/elpres-example.tex
+++ b/macros/latex/contrib/elpres/doc/elpres-example.tex
@@ -1,30 +1,37 @@
-\documentclass[12pt,pdftex,sansfont,4x3]{elpres}
-\usepackage[latin1]{inputenc}
-\usepackage[perpage,para,symbol,norule]{footmisc}
-\usepackage[document]{ragged2e}
-
-\RaggedRight
-
+\documentclass[11pt,pdftex,4x3]{elpres}
+\usepackage[utf8]{inputenc}
+\usepackage[perpage,hang]{footmisc}
+\setlength{\footnotemargin}{0.55em}
+\usepackage[document,originalparameters]{ragged2e}
+\usepackage{eso-pic}
+
+\newcommand{\altfnarea}[1]{%
+\AddToShipoutPictureFG*{
+\setlength{\unitlength}{1mm}
+ \put(1.2,1.2){\parbox[b]{0.9\paperwidth}%
+ {\scriptsize \textcolor{darkgray}{#1}}}}}
+
+% % Please uncomment the desired presentation scheme
\usepackage{elpreswhitebluescheme}
% \usepackage{elpresgrayscheme}
% \usepackage{elpreswhiteredscheme}
% \usepackage{elpresbluelightgrayscheme}
% \usepackage{elpreswhitetealscheme}
-
\begin{document}
\begin{titlepage}
\centering
- \distance{1}
+ \distance{1.35}
{
\Huge \bfseries \textcolor{eptitlecolor}{Title of presentation} \par
}
- \vspace{1.3ex} \large
- Author\\[2ex]Date and place of presentation
+ \vspace{1.3ex} \Large
+ Author\\[2ex]
+ {\normalsize \textcolor{ephighlightcolor}{Date and place of presentation}}
\distance{2}
\end{titlepage}
-\begin{psli}[Title of first page]
+\begin{psli}[Title of first slide]
This is an example of a \LaTeX\ \texttt{itemize} list
\begin{itemize}
@@ -32,14 +39,14 @@ This is an example of a \LaTeX\ \texttt{itemize} list
\item second line in an itemized list
\item third line in an itemized list
\end{itemize}
-
\end{psli}
-\begin{psli}[Title of second page\footnote{footnotes are often
- not a good idea for a presentation}]
-% \raggedright
-The second page with nested, ``vertically compressed'' lists using the
-\texttt{citemize} and \texttt{cenumerate} environments.
+\begin{psli}[Title of second slide\footnote{footnotes often are
+ not a good idea for a presentation, better avoid them!}]
+
+This page shows nested, ``vertically compressed'' lists using the
+\texttt{citemize} and \texttt{cenumerate} environments of
+ \texttt{elpres}:
\begin{citemize}
\item first line in an itemized list
@@ -48,38 +55,109 @@ The second page with nested, ``vertically compressed'' lists using the
\item first line of numbered list
\item second line of numbered list
\end{cenumerate}
- \item final line in itemized list\footnote{\dots\ it is therefore
- useful to write comments into a single footnote paragraph in order
- to save space}
+ \item final line in itemized list
\end{citemize}
-{\small For footnotes, the \texttt{footmisc} package, providing the
- options \texttt{perpage} and \texttt{symbol}, is recommended. \par}
+{\small For footnotes using \LaTeX's \verb+\footnote{}+ command,
+ the \texttt{footmisc} package, providing the
+ option \texttt{perpage}\footnote{this forces \LaTeX\ to start
+ footnote numbers with ``1'' on each slide}
+ is recommended.%
+ \footnote{another option is \texttt{symbol*} which allows
+ to mark footnotes with symbols instead of numbers} \par }
\end{psli}
-\begin{psli}[Title of third page]
+\begin{psli}[Title of third slide\textsuperscript{*}]
+ \begin{itemize} \item This page shows the use of footnotes
+ with the \verb+\altfnarea{}+ command
+ \item Definition and use of \verb+\altfnarea{}+\textsuperscript{\dag}
+ are described in the \texttt{elpres} manual
+
+ \altfnarea{\textsuperscript{*}This footnote comments the title;
+ \textsuperscript{\dag}\texttt{altfnarea}: \textbf{alt}ernative
+ \textbf{f}oot\textbf{n}otes \textbf{area}}
+ \end{itemize}
+\end{psli}
- \begin{cdescription}
-\item[environment name:] \texttt{cdescription}, comparable to
- \LaTeX s \texttt{des\-cription} environment
- \item[used for:] vertically compressed lists with small ``titles''
+\begin{psli}[Title of fourth slide]
+\begin{cdescription}
+ \item[environment name:] \texttt{cdescription}, comparable to
+ \LaTeX's \texttt{des\-cription} environment
+ \item[used for:] vertically compressed lists with small ``titles''
+ of items
\end{cdescription}
+\end{psli}
+
+\begin{psli}[Title of fifth slide]
+
+If justified text and hyphenation is to be suppressed, the
+\texttt{ragged2e} package may be used with the \texttt{document}
+and \texttt{originalparameters} options.
+
+\vspace{1ex}
+
+\fbox{\parbox{0.95\textwidth}{
+\footnotesize In order to avoid an option clash, \texttt{ragged2e}
+ should follow \texttt{footmisc} in the preamble, if both packages are
+ used. \par }}
\end{psli}
-\begin{psli}[A page with two columns]
-
- \begin{minipage}[b]{0.58\textwidth}
+\begin{psli}[A slide with two columns\textsuperscript{*}]
+ \begin{minipage}[b][0.6\textheight][t]{0.5\textwidth}
\includegraphics[width=1.0\textwidth]{ctan-lion}
\end{minipage}
- \hspace{0.4em}
- \begin{minipage}[b]{0.39\paperwidth} \small
+ \hspace{0.1em}
+ \begin{minipage}[b][0.6\textheight][t]{0.38\textwidth}
+ \footnotesize
The ``CTAN \TeX-lion'' drawn by Duane Bibby,
thanks to \texttt{ctan.org}
-
\end{minipage}
+ \altfnarea{\textsuperscript{*}using \texttt{minipage}}
\end{psli}
+\begin{psli}[Code of ``A slide with two columns'']
+\footnotesize
+\begin{verbatim}
+
+\begin{psli}[A slide with two columns\textsuperscript{*}]
+ \begin{minipage}[b][0.6\textheight][t]{0.5\textwidth}
+ \includegraphics[width=1.0\textwidth]{ctan-lion}
+ \end{minipage}
+ \hspace{0.1em}
+ \begin{minipage}[b][0.6\textheight][t]{0.38\textwidth}
+ \footnotesize
+ The ``CTAN \TeX-lion'' drawn by Duane Bibby,
+ thanks to \texttt{ctan.org}
+ \end{minipage}
+ \altfnarea{\textsuperscript{*}using \texttt{minipage}}
+\end{psli}
+\end{verbatim}
+\end{psli}
+
+\begin{psli}[A slide with a logo using the \texttt{eso-pic} package]
+\AddToShipoutPictureBG{
+\setlength{\unitlength}{1mm}
+ \put(108,79){\includegraphics[height=16mm]{ctan-lion}}
+}
+
+The code for placing the logo {\scriptsize (details are explained
+in the \texttt{elpres} manual)}:
+
+{ \footnotesize
+\begin{verbatim}
+ \AddToShipoutPictureBG{
+ \setlength{\unitlength}{1mm}
+ \put(108,79){\includegraphics[height=16mm]{ctan-lion}}
+ }
+\end{verbatim}}
+
+This makes the logo visible on the current and on all following pages.
+The starred version: {\footnotesize \verb+\AddToShipoutPictureBG*{}+
+} shows the picture on the current slide only.
+\end{psli}
+
+
\begin{rsli}
A final page written with the \textcolor{ephighlightcolor}{\texttt{rsli}}
environment
diff --git a/macros/latex/contrib/elpres/doc/elpres-manual.pdf b/macros/latex/contrib/elpres/doc/elpres-manual.pdf
index 9bc920796c..08d4756c2f 100644
--- a/macros/latex/contrib/elpres/doc/elpres-manual.pdf
+++ b/macros/latex/contrib/elpres/doc/elpres-manual.pdf
Binary files differ
diff --git a/macros/latex/contrib/elpres/doc/elpres-manual.tex b/macros/latex/contrib/elpres/doc/elpres-manual.tex
index ab5fe4d396..932bb625eb 100644
--- a/macros/latex/contrib/elpres/doc/elpres-manual.tex
+++ b/macros/latex/contrib/elpres/doc/elpres-manual.tex
@@ -1,25 +1,37 @@
-% -*- coding:utf-8 -*-
\documentclass[11pt,a4paper]{article}
% to be compiled with lualatex
+%% begin comment out for tth
+\usepackage{polyglossia}
+\setdefaultlanguage{english}
+%% end comment out for tth
+
\usepackage{parskip}
\usepackage[a4paper,hmargin=2.4cm,bottom=3.2cm]{geometry}
\usepackage{makeidx}
\usepackage{url}
-\usepackage{framed}
\usepackage{graphicx}
\usepackage[x11names,svgnames]{xcolor}
\usepackage{enumitem}
+%% \usepackage[para,ragged]{footmisc}
\usepackage{microtype}
+% it may be necessary to comment out `microtype' with polyglossia loaded
-\usepackage{luaotfload}
-\usepackage{fontspec}
+% \usepackage{luaotfload}
+% \usepackage{fontspec}
+% \usepackage[default]{fontsetup}
+\usepackage[olddefault]{fontsetup}
+% \usepackage[times]{fontsetup}
\makeindex
-%% for tth (generate .html): comment out "noitemsep" temporarily !!
+%% * for a run of tth (generate .html):
+%% - comment out "noitemsep" temporarily !!
+%% - comment out \usepackage{polyglossia} and \setdefaultlanguage{english}
+%%
+
% Commands for indication changes in updated versions:
% changed, inserted
@@ -39,8 +51,8 @@
\title{\textsf{elpres} --- electronic presentations \\ with (pdf/Lua)\LaTeX}
\author{Volker Kiefel\thanks{volker dot kiefel at freenet dot de,
\url{http://vkiefel.de/elpres.html}}}
-\date{v1.0.1\\[1.8ex]
- August 10, 2021%
+\date{v1.1 \\[1.8ex]
+ May 29, 2024%
% --- \textcolor{DarkGreen}{update of this manual:
% September 27, 2020}
}
@@ -77,14 +89,14 @@ The \texttt{elpres} class is intended to be used for
presentations on a computer screen, a
beamer or a projector. It is derived from \LaTeX's \texttt{article} class and
may be used with \LaTeX{}, pdf\LaTeX{} (and Lua\LaTeX ).
-The default ``virtual paper size'' of document pages produced by this class:
-width=128mm, height=96mm corresponds to a 4:3 (width:height) aspect
+The default ``virtual paper size'' of slides produced by this class:
+width=128mm, height=96mm which corresponds to a 4:3 (width:height) aspect
ratio.
\index{aspect ratio|see{screen aspect ratio}}%
\index{screen aspect ratio}%
Other aspect ratios for widescreen monitors may be selected by class
options.
-The \textsf{elpres} class requires that the \texttt{ifthen},
+The \texttt{elpres} class requires that the \texttt{ifthen},
\texttt{fancyhdr},
\texttt{hyperref},
\texttt{graphicx},
@@ -105,9 +117,7 @@ This manual is intended to support the user with ``recipes''. Use of
including overlay functions, use of colors, graphics files, ``handout
documents'' are described in section \ref{secEnhancements}. Many code snippets
have been included in this manual.
-They can be used in users' presentation files.\footnote{To make copying easier,
-this manual is also available as \texttt{.html} document on the
-\texttt{elpres} website (\url{http://www.vkiefel.de/elpres.html})}
+They can be used in users' presentation files.
Some extensions described in this manual work only with \texttt{pdf}-files
which should preferrably be compiled with pdf\LaTeX\ or Lua\LaTeX.
@@ -150,7 +160,7 @@ installation) the command:
or you may enter \verb+texhash ~/texmf-local+\footnote{The location
for the ``local'', manually updated class and package files may be different,
depending on the \TeX\ system and the OS.}.
-Other \TeX-systems e.\,g.\ MiK\TeX\ have
+Other \TeX-distributions e.\,g.\ MiK\TeX\ have
their own package updating mechanisms. The elpres manual file should be
accessible with the command ``\mbox{\texttt{texdoc elpres}}''. If this
still calls the old version of the manual, the command ``\texttt{texdoc -l elpres}''
@@ -158,60 +168,89 @@ will prompt you to select either the old or the new version of the manual.
\index{installation|)}
\section{Usage}
-
\label{secUsage}
+\subsection{Class options, commands and environments}
+\label{sec:EpOptCmdEnv}
+
The class is used with
\begin{verbatim}
\documentclass[options]{elpres}
\end{verbatim}
+Slides are written with the \texttt{psli} and \texttt{rsli} environments.
+This section lists all \texttt{elpres}-specific options, commands and
+environments.
+
+\subsubsection*{\texttt{Elpres}-specific options}
+
\index{elpres@\texttt{elpres}!options}
-\textbf{\texttt{Elpres}-specific options}: font selection:
- \texttt{tmrfont} (Times Roman), \texttt{helvetfont}
-(Helvetica), \texttt{cmfont} (Computer Modern) and \texttt{sansfont} (Sans
-Serif: default). The option \texttt{nofonts} (no font selection)
+For font selection (\LaTeX, pdf\LaTeX):
+ ``\texttt{tmrfont}'' (Times Roman), ``\texttt{helvetfont}''
+(Helvetica), ``\texttt{cmfont}'' (Computer Modern) and ``\texttt{sansfont}''
+(Sans Serif: default) may be used. The option ``\texttt{nofonts}''
+(no font selection)
is intended for use of \texttt{elpres} with Lua\LaTeX\
\index{Lualatex@Lua\LaTeX}
-with its own font selection mechanisms.
-Options for different screen aspect ratios: \texttt{4x3}
-(default), \texttt{16x9}, \texttt{16x10}.
+with its own font selection mechanisms, an example is described in
+section \ref{sec:MiniExample}.
+
+\index{slide dimensions}
+Options for different screen aspect ratios are
+``\texttt{4x3}'' (default),\footnote{slide size \texttt{128\,x\,92\,mm}}
+``\texttt{16x9}'',\footnote{slide size \texttt{176\,x\,99\,mm}}
+``\texttt{16x10}''.\footnote{slide size \texttt{160\,x\,100\,mm}}
\index{bulletsymb class option@\texttt{bulletsymb} class option}
-The option \texttt{bulletsymb} selects \verb+$\bullet$+ symbols
-instead of the default \texttt{itemize}-environment
+The option ``\texttt{bulletsymb}'' selects \verb+$\bullet$+ symbols (closed
+circles)
+instead of the default \texttt{itemize}-environ\-ment
symbols in all four levels,
-\texttt{ballsymb} is effective together with the presentation
+``\texttt{ballsymb}'' is effective together with the presentation
schemes (section \ref{sec:pres-scheme})
-and provides alternative symbols for the \texttt{itemize} environment.
+and inserts small images of colored \emph{balls} as alternative
+symbols for the \texttt{itemize} environment.
%
-The option \texttt{navisymb}
+The option ``\texttt{navisymb}''
adds a small field with symbols for navigation to the right
-bottom area of the presentation.
+bottom area of slides (section \ref{sec:NavigationSymbols}).
Options of the \texttt{article} class are also available for
\texttt{elpres} presentations,
e.\,g. \texttt{10pt}, \texttt{11pt}, \texttt{12pt} for
selection of font size.
+\subsubsection*{\texttt{Elpres}-specific commands}
+{ \sloppy
\index{elpres@\texttt{elpres}!commands}
-\textbf{\texttt{Elpres}-specific commands}:
-\verb+\distance+ vertically adjusts text on a slide.
-The \verb+\auvimm+\footnote{for \textbf{au}dio \textbf{vi}deo \textbf{m}edia}
-command inserts a link to an external audio or video file.
-Two commands: \verb+\fromlinktext+ and \verb+\totargettext+
+The command
+``\verb+\distance+''
+supports the user to vertically adjust lines and/or pragaraphs on a
+slide. (details are described in section
+section~\ref{sec:EssentialElements}).
+The ``\verb+\auvimm+''\footnote{for \textbf{au}dio \textbf{vi}deo
+ \textbf{m}edia}
+command inserts a link to an external audio or video file
+(section~\ref{sec:MultimediaContent}).
+Two commands: ``\verb+\fromlinktext+'' and ``\verb+\totargettext+''%
\index{fromlinktext@\verb+\fromlinktext+}
\index{totargettext@\verb+\totargettext+}
-can be used for internal links within a presentation.
-With \verb+\slidetitlecolor+, the text color of slides (\texttt{psli})
-can be changed.
-With the command \verb+\pagenrconst+, the page number of
-the current slide can be set to the page number of the previous slide.
+can be used for internal links within a presentation
+(section~\ref{secHypertext}).
+With ``\verb+\slidetitlecolor+'', the text color of the title of slides
+(\texttt{psli}) can be changed (section \ref{sec:footerlayout}).
+With the command ``\verb+\pagenrconst+'', the page number of
+the current slide can be set back to the page number of the previous slide
+(section \ref{secOverlay}, last paragraph).
+\par}
+
+\subsubsection*{\texttt{Elpres}-specific environments}
\index{elpres@\texttt{elpres}!environments}
-\textbf{\texttt{Elpres}-specific environments}:
-the environments \texttt{psli} and \texttt{rsli} define ``slides'' in
-\texttt{elpres}; \texttt{citemize}, \texttt{cenumerate} and
-\texttt{cdescription} provide vertically compressed lists.
+The environments ``\texttt{psli}'' and ``\texttt{rsli}'' define
+\emph{slides} in \texttt{elpres} (section \ref{sec:EssentialElements});
+``\texttt{citemize}'',``\texttt{cenumerate}''
+ and ``\texttt{cdescription}'' provide vertically compressed lists
+(section \ref{sec:CompressedLists}).
\index{slides in elpres@slides in \texttt{elpres}}
\subsection{A minimalistic example presentation}
@@ -219,7 +258,7 @@ the environments \texttt{psli} and \texttt{rsli} define ``slides'' in
\label{sec:MiniExample}
The following code (\texttt{minimal.tex})
-may be used for your first ``experiments'' by adding
+may be used for first ``experiments'' by adding
features described in later sections.
\index{minimalistic example, presentation}
@@ -227,7 +266,7 @@ features described in later sections.
\begin{verbatim}
\documentclass[12pt,pdftex,4x3]{elpres}
- \usepackage[latin1]{inputenc}
+ \usepackage[utf8]{inputenc}
\usepackage[document]{ragged2e}
% \usepackage{elpreswhitebluescheme}
@@ -300,11 +339,11 @@ The preamble of the same presentation for Lua\LaTeX\ would read:
\index{Lualatex@Lua\LaTeX}
The use of Lua\LaTeX\ with \texttt{elpres} is heavily recommended
due to the superior font selection mechanisms.
-You may copy the code examples from this manual more easily from the
-\texttt{.html} version of this manual available at
-\url{http://vkiefel.de/elpres/elpres-manual.html}.
+%% You may copy the code examples from this manual more easily from the
+%% \texttt{.html} version of this manual available at
+%% \url{http://vkiefel.de/elpres/elpres-manual.html}.
-\subsubsection*{Testing of the \texttt{elpres} installation}
+\subsection{Testing of the \texttt{elpres} installation}
\label{sec:CheckInstallation}
@@ -319,7 +358,6 @@ a file, add the class option \texttt{ballsymb}:
\end{verbatim}
-%% hier weiter 2021-08-08
and process it with \texttt{pdflatex}. The line
\verb+\usepackage{elpreswhitetealscheme}+ should not be commented out,
@@ -356,6 +394,7 @@ The problem sometimes arises as soon as \TeX-distributions do not install
\texttt{elpres.zip}, which may be obtained from \texttt{ctan.org}.
\subsection{Essential elements of an \texttt{elpres} presentation}
+\label{sec:EssentialElements}
\index{title page}
The \textbf{title page} slide can be created with
@@ -363,36 +402,53 @@ the \texttt{titlepage} environment (or \texttt{rsli}, see below), \LaTeX's
\verb+\maketitle+ command is not available.
\index{psli environment@\texttt{psli} environment}
\textbf{Slides} may be created with the
-\texttt{psli}-environment\footnote{\texttt{psli}: \textbf{pl}ain
- \textbf{sl}ide}, you may add
+\texttt{psli}-environment\footnote{\texttt{psli}: \textbf{p}lain
+ \textbf{sli}de}, you may add
the title of the slide with the optional parameter.
-The contents of the slide are centered vertically.
+The contents of the slide are centered vertically:
+\begin{verbatim}
+ \begin{psli}[Slide title]
+ Contents of slide
+ \end{psli}
+\end{verbatim}
\index{rsli environment@\texttt{rsli} environment}
Another environment generating a \textbf{slide} is
-\texttt{rsli}\footnote{\texttt{rsli}: \textbf{ra}w \textbf{sl}ide}:
+\texttt{rsli}\footnote{\texttt{rsli}: \textbf{r}aw \textbf{sli}de}:
slides are written
-without title,
-contents are not vertically centered.
+without title, contents are not centered vertically:
+
+\begin{verbatim}
+ \begin{rsli}
+ Contents of slide
+ \end{rsli}
+\end{verbatim}
\index{distance@\verb+\distance+}
The \verb+\distance{number}+ command allows to introduce vertical space into
slides constructed with the \texttt{rsli} and \texttt{titlepage} environments.
-You should use pairs of \verb+\distance{}+ commands with numbers indicating
-the relative height of empty space, see the titlepage in the example above.
+You may use of \verb+\distance{number}+ commands with numbers indicating
+the relative height of empty spaces between lines
+and/or paragraphs, see the title page in the example above (section
+\ref{sec:MiniExample}).
The use of footnotes on slides is often problematic, if they cannot be
avoided, the \texttt{footmisc} package is recommended: the \texttt{perpage}
option resets numbering for each new slide. For a presentation, the
-\texttt{symbol} option allows to use symbols instead of numbers.
+\texttt{symbol} option allows to use symbols instead of numbers\footnote{
+ The use of the \texttt{footmisc} package may produce the \LaTeX\ error
+ message ``\texttt{Counter too large}''.
+ Therefore it is preferred to use the \texttt{symbol*} and \texttt{perpage}
+ options, details are described in the manual of the \texttt{footmisc}
+ package.}.
After inserting a new footnote, numbers or symbols are correctly
inserted only after a second run of \LaTeX.
\subsection{Alternatives to \TeX's justified paragraphs}
By default, \LaTeX\ produces justified paragraphs with lines of equal length,
-this may often not be appropriate for the usually very short lines of text
+this will often not be appropriate for the usually very short lines of text
in presentations. The \LaTeX\ \verb+\raggedright+ command
\index{raggedright@\verb+\raggedright+}
has its own
@@ -401,8 +457,20 @@ the right margin will often look too
ragged. A solution is to use the \verb+\RaggedRight+ command of the
\texttt{ragged2e} package.
+If authors of presentations wish to suppress both justification and
+hyphenation within the complete presentation document, the following
+package parameters:
+
+\begin{verbatim}
+ \usepackage[document,originalparameters]{ragged2e}
+\end{verbatim}
+
+can be selected. As hypenated words are not favorable for quick reading of
+slides by the audience this is the preferred use of \texttt{ragged2e} for
+the author of this package.
\subsection{Vertically compressed lists}
+\label{sec:CompressedLists}
As the spaces between lines may be too great with the \texttt{itemize}
environment,
@@ -422,8 +490,6 @@ be used.
\index{cenumerate environment@\texttt{cenumerate} environment}
\index{cdescription environment@\texttt{cdescription} environment}
-
-% neu Dezember 2017
Another solution for the customization of \texttt{itemize}
environments is given by the \texttt{enumitem} package. Therefore
@@ -482,11 +548,11 @@ by the author of a presentaton.
\begin{sloppypar}
However, access to the header fields defined by \texttt{fancyhdr}
-is blocked\footnote{If you enter
- \texttt{\textbackslash rhead}, \texttt{\textbackslash chead}
- or \texttt{\textbackslash lhead}, \texttt{elpres} will issue
+is blocked: if you enter
+ \verb+\rhead{}+, \verb+\chead{}+
+ or \verb+\lhead{}+, \texttt{elpres} will issue
an error message. Use of the header fields will generate unwanted effects
- on page layout due to \texttt{fancyhdr}.}.
+ on page layout due to \texttt{fancyhdr}.
If you wish to change the position of the page number in the footer,
you can overwrite the default page number with an ``empty'' \verb+\rfoot{}+
command and put it to the center or the left margin of the footer
@@ -510,38 +576,42 @@ are described in section \ref{sec:pres-scheme}.
\label{secEnhancements}
-\subsection{Use of named colors of \texttt{xcolor}}
+Enhancements described here make use of other \LaTeX\ packages which should
+be available in \TeX\ distributions like \TeX~Live or MiK\TeX.
+
+\subsection{Use named colors of the \texttt{xcolor} package}
\label{sec:use-colors}
The \texttt{elpres} class automatically loads the \texttt{xcolor} package.
-Color related commands may therefore be used with names defined by
-\texttt{colorx}. They are however only accessible in groups
-(\texttt{dvipsnames}, \texttt{svgnames}, \texttt{x11names}). As an example,
-the color \texttt{Indigo} is available in \texttt{svgnames}. If you wish
-to use it you will have to enter \texttt{svgnames} as \texttt{elpres}
-class option:
+Therefore, color names defined by the \texttt{xcolor} may be used. They are
+however only accessible in groups (\texttt{dvipsnames}, \texttt{svgnames},
+\texttt{x11names}, details can be found in the \texttt{xcolor} manual). As
+an example, the color \texttt{Indigo} is available in the \texttt{svgnames}
+goup. If you wish to use it you will have to enter \texttt{svgnames}
+as \texttt{elpres} class option:
\begin{verbatim}
\documentclass[11pt,16x9,svgnames]{elpres}
\end{verbatim}
-This option is then automatically ``handed over'' to the
-\texttt{xcolor} package.
-The complete lists of named colors are found in the \texttt{xcolor} manual.
+This option is then automatically ``handed over'' to the \texttt{xcolor}
+package loaded by \texttt{elpres}. The complete lists of named colors
+are found in the \texttt{xcolor} manual.
\subsection{Include graphics files}
+\label{secUsageGraph}
\index{graphics files}
\index{includegraphics@\texttt{\textbackslash includegraphics}}
Graphics files/pictures can be included with the
\texttt{includegraphics}-command of the \texttt{graphicx}-package. Please be
aware that the dimensions of the pages are \mbox{128mm x 96mm} and
-therefore included graphics are scaled appropriately. A safe way to generate a
-page with a picture could be (with \texttt{pict.png} as the name of the
+therefore included graphics are scaled appropriately. A typical example
+of a
+page with a picture could be (\texttt{pict.png} is the name of the
graphics file):
-\label{secUsageGraph}
\begin{verbatim}
\usepackage[pdftex]{graphicx} % (in preamble)
@@ -562,7 +632,7 @@ driver related option (e.\,g. \texttt{pdftex} or \texttt{dvips})
(documentclass).
-\label{secInclGraphicsFiles}
+% \label{secInclGraphicsFiles}
\subsection{Arrange text and pictures in two (or more) columns}
@@ -590,17 +660,17 @@ Text and graphics may be arranged in two or more columns with
\end{verbatim}
Details on the minipage environment may be found in the \LaTeX{}
-documentation.
+documentation\footnote{A good reference is \url{https://latexref.xyz/}}.
-\subsection{Incremental slides (overlays)}
+\subsection{Add incremental slides (overlays) to a presentation}
\label{secOverlay}
\index{incremental slides|see{overlays}}
\index{overlays|(}
If the contents of slides are to be made visible step
-by step this can be achieved by a series of output PDF or (PS) files (carrying
+by step this can be achieved by a series of output PDF or (PS) pages (carrying
the same page number) usually called \emph{overlays}. It may also be of
interest to change a highlighting color in a series of overlays. This is most
easily done by using the excellent \texttt{overlays} package written by
@@ -692,6 +762,8 @@ for the background color will be made automatically.
For more details on \texttt{overlays}, see the documentation of the package.
\index{overlays|)}
+%% hypertarget
+
Sometimes it is desirable to prepare \textbf{two or more consecutive
slides with the same page
number} independent
@@ -703,19 +775,19 @@ with the command \verb+\pagenrconst+.
% \pagenrconst
-\subsection{Navigation symbols}
+\subsection{Add navigation symbols to slides}
\label{sec:NavigationSymbols}
\index{navigation symbols panel|(}
With the \texttt{navisymb} option of \texttt{elpres} a panel with navigation
symbols appears
-in the right lower corner of the presentation:\\
+in the right lower corner of pages:
{ \setlength{\parindent}{2em}
\indent
- \textbf{\texttt{$\ll$ $<$ $>$ $\gg$ $\leftarrow$ $\rightarrow$ [n]}}
-}\\
+ \texttt{$\ll$ $<$ $>$ $\gg$ $\leftarrow$ $\rightarrow$ [n]}
+}
These commands ($\ll$: jump to the first page,
$<$: go to the previous page, $>$: go to the next page,
@@ -723,9 +795,8 @@ $\gg$: jump to the last page, $\leftarrow$:
go back in history, $\rightarrow$: go forward in history,
\texttt{[n]}: prompt for a
page number)
-work with Adobe Acrobat Reader (Windows), and (with the exception of
-\texttt{$\leftarrow$}, \texttt{$\rightarrow$} and \verb+[n]+)
-with \texttt{evince} (Linux).
+work with Adobe Acrobat Reader (Windows), and
+with \texttt{Okular} (Linux).
Some of these functions also work in presentation-mode
of the ``internal'' PDF-viewer in recent versions of the
\texttt{Firefox}-browser (Linux, Windows).
@@ -733,7 +804,7 @@ of the ``internal'' PDF-viewer in recent versions of the
-\subsection{Run multimedia content from a presentation}
+\subsection{Add multimedia content to a presentation}
\label{sec:MultimediaContent}
@@ -742,28 +813,28 @@ of the ``internal'' PDF-viewer in recent versions of the
\index{multimedia files|(}
\index{audio files|see{multimedia files}}
\index{video files|see{multimedia files}}
-In this section inclusion of video and audio files
-into a presentation will be described. With the
+This section describes inclusion of (links to) video and audio files in a
+presentation. With the
\verb+\auvimm{}{}+
\index{auvimm@\verb+\auvimm+}
-command described below you will
-be able to lauch an external application for playing the video or audio
+command described below it is possible
+to lauch an external application for playing the video or audio
file. This will work in many situations for video and audio files
on Windows (Adobe Acrobat) and Linux (e.\,g. using
-\index{Acrobat pdf viewer}
-\texttt{evince} and
+\index{Acrobat pdf viewer}%
+\texttt{evince}%
\index{evince pdf file viewer@\texttt{evince} pdf file viewer})
systems in fullscreen mode.
Under certain conditions it is possible to define a ``poster area'' on a
slide and the pdf viewer starts (after clicking with the mouse pointer into
this area) the
presentation of the video within this frame.
-The advantage of this technique is that it avoids that
-window with the external application is started.
+The advantage of this technique is that it avoids starting
+a window with the external application.
On Linux systems the \texttt{pdfpc}
\index{pdfpc viewer@\texttt{pdfpc} viewer}
viewer allows this, a detailed description
-is shown below. In both sitauations, however, the multimedia file is not
+is shown below. In both situations, however, the multimedia file is not
incorprated into the pdf-file and must be available on the computer
at the time of the presentation, ideally in the same directory as the
\texttt{.pdf}-file.
@@ -789,11 +860,11 @@ You may also insert an image file as a poster with a graphics file using
\auvimm{\includegraphics{/path/to/poster.png}}{./audiofile.mp3}
\end{verbatim}
-If you hit the poster area with the mouse pointer, it will launch the default
-application for audio files in a seperate window. This should be possible
-even if the pdf-viewer works if fullscreen-mode at the time of presentation.
-If this does not work, it may be necessary to
-insert as ``launch'' command:
+If you hit the poster area with the mouse pointer, it will launch the
+default application for audio files in a separate window. This should
+be possible even if the pdf-viewer works if fullscreen-mode at the time
+of presentation. If this does not work, it may be necessary to insert as
+``launch'' command:
\begin{verbatim}
\auvimm{[video-file]}{run:./videofile.mp4}
@@ -807,15 +878,22 @@ your presentation) you should test this aspect of your presentation. Sometimes
a call to an external program might be blocked due security reasons in Acrobat
Reader.
-\begin{leftbar}
-This \verb+\auvimm{}+-command should be considered experimental.
-Its behavior depends on the \texttt{pdf}-viewer and the configuration of the OS.
-\end{leftbar}
+%% begin comment out for tth
+ \fbox{\parbox{0.985\textwidth}{
+%% end comment out for tth
+The \texttt{\textbackslash auvimm{}}-command in the current version
+of \texttt{elpres} should be considered
+experimental.
+Its behavior largely depends on the \texttt{pdf}-viewer and the software
+used for playing audio/video files.
+%% begin comment out for tth
+ }}
+%% end comment out for tth
On Linux systems, the \texttt{pdfpc}
-\texttt{pdf}-viewer\footnote{\url{https://pdfpc.github.io/}: \texttt{pdfpc} --- A
- presenter console with multi-monitor support for PDF files} allows
+\texttt{pdf}-viewer\footnote{\url{https://pdfpc.github.io/}:
+\texttt{pdfpc} --- A presenter console with multi-monitor support for PDF files} allows
presentation of a video embedded into a ``poster area''\footnote{e.\,g. defined
by a bitmap image with the same aspect ratio as the video}
on a slide
@@ -839,8 +917,8 @@ a ``video format'', e.\,g. with the \texttt{ffmpeg} program.
\label{secHandout}
-In advance of a lecture it is often expected that you prepare a ``handout''
-from your presentation with more than one pages on a printed page. Therefore
+In advance of a lecture it is often expected that you provide a ``handout''
+of your presentation with more than one pages on a printed page. Therefore
you have several options, three of
them are described here.
If a presentation contains overlay-slides generated with the \texttt{overlays}
@@ -850,7 +928,7 @@ added to the preamble
in order to inactivate the overlays-specific commands.
-\subsubsection{\LaTeX\ article document with a series of single-page pdf-files included}
+\subsubsection{\LaTeX\ article document handout with a series of single-page pdf-files included}
One solution to this problem is (1) to generate a series of single-page
pdf-files and (2) to create a pdf\LaTeX\ document with the single
@@ -865,11 +943,12 @@ pages included.
with \texttt{in.pdf} as the initial presentation. The syntax of \texttt{gs}
is described in detail on the ghostscript
-website\footnote{\url{https://www.ghostscript.com/doc/current/Use.htm}}.
+website\footnote{\url{https://ghostscript.readthedocs.io/en/latest/Use.html}}.
On Windows systems the name of the ghostscript command may be
\texttt{gswin32c.exe} or \texttt{gswin64c.exe}.
-An alternative to \texttt{gs} is the \texttt{pdftk} tool:
-\index{pdftk@\texttt{pdftk}}
+An alternative to \texttt{gs} is the \texttt{pdftk} command line tool:%
+\index{pdftk@\texttt{pdftk}}%
+\footnote{\url{https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/}}
\begin{verbatim}
pdftk in.pdf burst output page_%03d.pdf
@@ -971,11 +1050,12 @@ website\footnote{\url{https://github.com/DavidFirth/pdfjam/blob/master/README.md
\label{secHypertext}
\index{hypertext elements|(}
-You may use two commands \verb+\fromlinktext{}{}+ and \verb+\totargettext{}{}+
-for ``hypertext features''. As an example: as you normally will not insert
-\verb+\section{}+-like commands and therefore do not generate a ``table of
-contents''-like page or a menu in \texttt{elpres}-presentations, you are able
-define links with:
+You may use two commands \verb+\fromlinktext{}{}+ and
+\verb+\totargettext{}{}+ for ``hypertext features''.
+As an example: as you normally will not
+insert \verb+\section{}+-like commands and therefore do not generate a ``
+table of contents''-like page or a menu in \texttt{elpres}-presentations,
+you are able define links with:
\begin{verbatim}
\totargettext{text}{link-label}
@@ -1073,55 +1153,50 @@ Another package which allows you to paint the background with a picture is
...
- \AddToShipoutPicture{
- \includegraphics[height=\paperheight]{background.png}
+ \AddToShipoutPictureBG*{
+ \includegraphics[height=\paperheight]{background.png}
}
\end{verbatim}
-\verb+\AddToShipoutPicture{}+ puts the picture on every page,
-\verb+\AddToShipoutPicture*{}+ puts it on to the current page,
-\verb+\ClearShipoutPicture+ clears the background beginning with the current
+\verb+\AddToShipoutPictureBG{}+ puts the picture on every page,
+\verb+\AddToShipoutPictureBG*{}+ puts it on to the current page,
+\verb+\ClearShipoutPictureBG+ clears the background beginning with the current
page.
Details of \texttt{eso-pic}'s commands can be found in the documentation.
\index{wallpaper background|)}
-\subsection{Presentation schemes}
-
+\subsection{Put color to your presentation: presentation schemes}
\label{sec:pres-scheme}
\index{presentation schemes|(}
\index{color schemes|see{presentation schemes}}
\index{schemes, color|see{presentation schemes}}
-\texttt{Elpres} provides predefined \textbf{presentation schemes}:
-color and layout schemes which are applied to a presentation with
-\verb+usepackage{}+. Their naming follows the convention
-\mbox{\texttt{elpres...scheme}}, an
-example is \texttt{elpreswhiteredscheme}.\footnote{the name of the
- corresponding style or package file is \texttt{elpreswhiteredscheme.sty}}
-These \texttt{elpres}-schemes also support incremental slides with the
-\texttt{overlays} package.
-Moreover, these schemes define color names
-which may be used by the author of a presentation:\footnote{Color names for use
-by the presentation author start with \texttt{ep...}}
-
-
-
+\texttt{Elpres} provides predefined \textbf{presentation schemes}: color and
+layout schemes which are applied to a presentation with
+\verb+\usepackage{}+. Their naming follows the convention
+\mbox{\texttt{elpres...scheme}}, an example is
+\texttt{elpreswhiteredscheme}.\footnote{the name of the corresponding style
+or package file is \texttt{elpreswhiteredscheme.sty}} These
+\texttt{elpres}-schemes also support incremental slides with the
+\texttt{overlays} package. With an activated presentation scheme, the elpres
+class option \texttt{ballsymb} changes default itemize symbols to
+appropriately colored ``ball'' symbols. Moreover, these schemes define color
+names which may be used by the author of a presentation:\footnote{Color
+names for use by the presentation author start with \texttt{ep...}}
\begin{description}%[noitemsep]
\item[\texttt{eptextcolor}] ``normal text color'' (default values for
documents without
presentation scheme included in \texttt{elpres.cls}: black)
\item[\texttt{ephighlightcolor}] color, which may be used for highlighting
- text (default:
- dark red)
+ text (default: dark red)
\item[\texttt{eptitlecolor}] color of the title of slides, may be used to
- highlight the
- title in the title slide (default: dark red)
+ highlight the title in the title slide (default: dark red)
\end{description}
-Presentation schemes available in the current version of \texttt{elpres}:
+These presentation schemes available in the current version of \texttt{elpres}:
\begin{sloppypar}
@@ -1192,7 +1267,7 @@ links have been adjusted.
Colored text boxes often help the presentation author to highlight small text
fragments and to make slides more ``readable'' and more attractive.
-\subsubsection{Text boxes with \texttt{\textbackslash colorbox}, \texttt{\textbackslash fcolorbox}}
+\subsubsection{Text boxes with \texttt{colorbox}, \texttt{fcolorbox}}
\label{sec:simple-text-boxes}
@@ -1248,11 +1323,64 @@ An example with a titled colored textbox:
\end{verbatim}
-The manual of the \texttt{tcolorbox} provides perfect instruction for the use
-of this package.
-These text boxes may yield problems
-with incremental slides using the \texttt{overlays} package.
+The manual of the \texttt{tcolorbox} provides detailed instructions for the
+use of this package.
+However, incremental slides using the \texttt{overlays} package may not
+work with color boxes generated by the \texttt{tcolorbox} package. These
+problems are avoided with the colored text boxes described in section
+\ref{sec:simple-text-boxes}.
+
+\subsection{Alternative format for footnotes on slides}
+\label{sec:AltFootnoteFormat}
+
+
+Footnotes on slides may be inserted with \LaTeX's \verb+\footnote{}+
+command.
+However, the layout of footnotes generated by \verb+\footnote{}+
+is not adequate
+for small comments or additions to the main text on slides.
+The following definition of an alternative footnote command
+(\verb+\altfnarea{}+)%
+\index{alternative footnote command}
+\index{footnote command, alternative}
+\index{altnfarea@\verb+\altfnarea+}
+requires that the
+\texttt{eso-pic} package is loaded:
+
+\begin{verbatim}
+ \usepackage{eso-pic}
+
+ \newcommand{\altfnarea}[1]{%
+ \AddToShipoutPictureFG*{
+ \setlength{\unitlength}{1mm}
+ \put(1.2,1.2){\parbox[b]{0.9\paperwidth}%
+ {\scriptsize \textcolor{darkgray}{#1}}}}}
+
+\end{verbatim}
+The definition of \verb+\altfnarea+ is currently not included in
+\texttt{elpres.cls}, so you should copy this definition of the command
+into the preample of your presentation document. Please take care to
+include the \texttt{eso-pic} package before the \texttt{altfnarea}
+definition. You may experiment with different values in this
+\verb+\newcommand{}{}+ definition. The command can be used within
+the code of a slide the following way:
+
+ \begin{verbatim}
+ \begin{psli}[Title of a slide demonstrating alternative
+ footnotes\textsuperscript{1}]
+ \begin{itemize}
+ \item first itemized line\textsuperscript{2}
+ \item second itemized line
+ \end{itemize}
+ \altfnarea{\textsuperscript{1}Addition to the title,
+ \textsuperscript{2}Explanation of the first line}
+ \end{psli}
+ \end{verbatim}
+
+Very often it will be advisable \emph{not} to use footnotes in slides.
+However, speakers participating in scientific conferences usually are
+expected to include sources of figures, tables etc. on their slides.
\subsection{Inactivate \texttt{overlays} commands}
@@ -1298,17 +1426,18 @@ update the \texttt{overlays} package.
\subsection{Convert an \texttt{elpres}-presentation (PDF) into an Impress (LibreOffice) or Powerpoint presentation}
\label{sec:convert-into-libreoff}
+\subsubsection{PDF \ldots\ PNG \ldots\ Impress/Powerpoint}
+
\index{Powerpoint presentation} \index{Impress (LibreOffice) presentation}
Sometimes it is unclear, if organizers of a (scientific) meeting allow
-presentations with \texttt{.pdf}-files or insist on files in Powerpoint
+presentations with \texttt{.pdf}-files or if they insist on files in Powerpoint
format. This is an unpleasant situation for a lecturer, but in such a situation
-it is better, to be
-prepared.
+it is better, to be prepared.
-There is no elegant way for a reliable solution.
-First, you may use one of the free or commercial online conversion
-tools (intended to convert \texttt{.pdf} into
-\texttt{.ppt} or \texttt{.pptx}-files). Results are often not satisfactory.
+There is no elegant way for a reliable solution. First, you may use one
+of the free or commercial online conversion tools (intended to convert
+\texttt{.pdf} into \texttt{.ppt} or \texttt{.pptx}-files). Results are
+often not satisfactory.
An alternative, more reliable way preferred
by the author of this manual:
@@ -1329,10 +1458,12 @@ Please copy the following two
commands (please ignore the line-breaks in the lines
beginning with ``\texttt{gs}'')\footnote{\i.\,e. ``\texttt{gs ... input.pdf}'' should
be entered as one line and ``\texttt{gs ... temp.pdf}'' should be entered as a
- second line}
+ second line of a shell script.}
into a short shell
-script (Windows: a \texttt{.bat} or \texttt{.cmd} script) and ``run'' or execute the shell
-script:
+script (Windows: a \texttt{.bat} or \texttt{.cmd} script) and ``run'' or
+execute the shell script:
+
+
\begin{verbatim}
gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dDEVICEWIDTHPOINTS=793.7
@@ -1346,9 +1477,19 @@ script:
Please do not forget to adjust the name of the input file
(\texttt{input.pdf} in the script above).
The first command adjusts the page size of the \texttt{.pdf}-file to
- \texttt{28~x~21~cm} (which is written into the temporary file
+ \texttt{28~x~21~cm} which is written into the temporary file
\texttt{temp.pdf}:
- this format avoids resizing of the images in LibreOffice (see below)).
+ this format avoids the necessity to resize of the images in LibreOffice
+ (for other slide formats see the footnote below\footnote{%
+ The values assigned to \texttt{-dDEVICEWIDTHPOINTS} and
+ \texttt{-dDEVICEHEIGHTPOINTS}
+ are valid for a width:height aspect ratio of 4:3 assuming a
+ presentation page size (LibreOffice) of \texttt{28cm~x~21cm}:
+ \texttt{(28/2.54)*72=793.7pt},
+ \texttt{(21/2.54)*72=595.3pt}. Values for width:height aspect ratios of
+ 16:9 \texttt{(28cm~x~15.75cm)} are \texttt{793.7/446.46} and for a ratio
+ of 16:10 \texttt{(28cm~x~17.5cm)}: \texttt{793.7/496.1}.
+ }).
The second command generates a series of \texttt{.png}-files:
\texttt{page\_001.png}, \texttt{page\_002.png} ... \texttt{page\_0nn.png}.
Instead of the \texttt{png256} driver, \texttt{png16m} can be used.
@@ -1363,9 +1504,9 @@ change \texttt{-r300} to
% gs -dNOPAUSE -dBATCH -sDEVICE=png256 -r600
% -dTextAlphaBits=4 -sOutputFile=page_%03d.png input.pdf
% \end{verbatim}
-The option \texttt{-dTextAlphaBits=4} improves font
-antialiasing.\footnote{Details can be found in the documentation of gs
- \url{https://www.ghostscript.com/doc/current/Use.htm}}
+The option \mbox{\texttt{-dTextAlphaBits=4}} improves font
+antialiasing.\footnote{Details can be found in the documentation of
+\texttt{gs} \url{https://ghostscript.readthedocs.io/en/latest/Use.html}}
\textbf{Details on step 2 --- Import \texttt{.png} images:}
@@ -1378,11 +1519,42 @@ slide format (e.\,g. 4:3), import the \texttt{.png} files with
% \texttt{0.0cm}, \emph{Postion~Y}: \texttt{0.0cm}, \emph{Width}:
% \texttt{28.0cm}, activate the checkbox \emph{Keep~ratio}
into consecutive empty slides.\footnote{Menu
- structure of LibreOffice v6.4}. The presentation can now be saved
+ structure of LibreOffice v6.4, v7.3}. The presentation can now be saved
in the format of Impresss (\texttt{.odp}) or
one of the Microsoft Powerpoint formats (\texttt{.ppt} or \texttt{.pptx}).
+\subsubsection{PDF \ldots\ SVG \ldots\ Impress/Powerpoint}
+
+\label{sec:PdfSvgImpress}
+
+An alternative way to make a Powerpoint/Impress presentation from the
+.pdf-file is to convert it into a series of \textbf{.pdf}-pages, convert
+these into \texttt{.svg} format and to import the \texttt{.svg}-files into
+the Impress/Powerpoint presentation. The first step:%
+\footnote{The command in a Windows terminal should be:
+ \texttt{pdftk input.pdf burst output p\_\%\%02d.pdf}}
+
+\begin{verbatim}
+ pdftk input.pdf burst output p_%02d.pdf
+\end{verbatim}
+
+converts the file \texttt{input.pdf} into a series of files
+\texttt{p\_01.pdf}, \texttt{p\_02.pdf}, \texttt{p\_03.pdf}, \ldots, which
+can then be converted with the command \texttt{pdftocairo}:%
+\footnote{Available in the \texttt{poppler-utils} package, a Windows version
+may be obtained at: \url{https://github.com/oschwartz10612/poppler-windows}}
+
+\begin{verbatim}
+ pdftocairo -svg p_01.pdf p_01.svg
+ pdftocairo -svg p_02.pdf p_02.svg
+ pdftocairo -svg p_03.pdf p_03.svg
+ ...
+\end{verbatim}
+
+This series of commands is best executed from a shell script. The resulting
+\texttt{.svg} files are then imported into an Impress/Powerpoint presentation.
+
\subsection{The \texttt{pdfpc}-viewer: add notes}
\index{pdfpc viewer@\texttt{pdfpc} viewer}
@@ -1425,7 +1597,7 @@ added). \textbf{v0.2e} (15.04.2005): Documentation completed (sections
(12.08.2005): new (class) options for font selection: \texttt{tmrfont} (Times
Roman), \texttt{helvetfont} (Helvetica), \texttt{cmfont} (Computer Modern),
\texttt{sansfont} (Sans Serif: default). Documentation updated, sections
-\ref{secInclGraphicsFiles} and \ref{secTwoColumns} added. \textbf{v0.4}
+\ref{secUsageGraph} and \ref{secTwoColumns} added. \textbf{v0.4}
(20.01.2018): New class options for different screen aspect ratios
\texttt{4x3}, \texttt{16x9}, \texttt{16x10}; ``compressed'' list environments
modified; documentation completed: packages for use with \texttt{elpres}:
@@ -1455,6 +1627,13 @@ bug in the \texttt{elpres...scheme.sty} files was fixed (incorrect value for
archive \texttt{elpres.tds.zip} is added for \texttt{ctan.org} upload.
\textbf{v1.0}: Class option \texttt{ballsymb} added, manual updated.
\textbf{v1.0.1}: Corrected upload to \texttt{ctan.org}
+\textbf{v1.1} (28.05.2024): Fixes and corrections in \texttt{elpres.cls};
+manual: parts of section \ref{secUsage} have been rewritten,
+section \ref{sec:convert-into-libreoff} has been completed: new section
+\ref{sec:PdfSvgImpress}.
+Definition of a an alternative command for footnotes (\verb+\altfnarea+)
+has been added to the manual (section \ref{sec:AltFootnoteFormat}).
+
\printindex
diff --git a/macros/latex/contrib/elpres/tex/elpres.cls b/macros/latex/contrib/elpres/tex/elpres.cls
index adc5312845..5697bb8748 100644
--- a/macros/latex/contrib/elpres/tex/elpres.cls
+++ b/macros/latex/contrib/elpres/tex/elpres.cls
@@ -1,5 +1,5 @@
\NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{elpres}[2021/08/10 class for plain electronic presentations]
+\ProvidesClass{elpres}[2024/05/29 class for plain electronic presentations]
%
% 2004/06/19 v0.1 - initial version
%
@@ -41,7 +41,11 @@
%
% 2021/08/10 v1.0.1 - corrected upload
%
-
+% 2024/05/29 v1.1 - correction: \RequirePackageWithOptions{xcolor}
+% changed to \RequirePackage{xcolor} (elpres.cls)
+% - \setlength{\footskip}{11.8pt} added (elpres.cls)
+% - manual updated
+%
% Options: select fonts
\newcommand{\fontna}{initialisiert}
@@ -103,7 +107,7 @@
\LoadClass{article}
\RequirePackage{ifthen}
-\RequirePackageWithOptions{xcolor}
+\RequirePackage{xcolor}
\RequirePackage{graphicx}
\ifthenelse{\equal{\screenformat}{scr4x3}}{%
@@ -126,7 +130,10 @@
\RequirePackage[hyperfootnotes=false]{hyperref}
+\hypersetup{pdfcreator={LaTeX with the elpres class}}
+
\RequirePackage{fancyhdr}
+\setlength{\footskip}{11.8pt}
\renewcommand{\headrulewidth}{0mm}
diff --git a/macros/latex/contrib/ensps-colorscheme/LICENSE b/macros/latex/contrib/ensps-colorscheme/LICENSE
new file mode 100644
index 0000000000..842cf85e3c
--- /dev/null
+++ b/macros/latex/contrib/ensps-colorscheme/LICENSE
@@ -0,0 +1,415 @@
+The LaTeX Project Public License
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+LPPL Version 1.3c 2008-05-04
+
+Copyright 1999 2002-2008 LaTeX3 Project
+ Everyone is allowed to distribute verbatim copies of this
+ license document, but modification of it is not allowed.
+
+
+PREAMBLE
+========
+
+The LaTeX Project Public License (LPPL) is the primary license under
+which the LaTeX kernel and the base LaTeX packages are distributed.
+
+You may use this license for any work of which you hold the copyright
+and which you wish to distribute. This license may be particularly
+suitable if your work is TeX-related (such as a LaTeX package), but
+it is written in such a way that you can use it even if your work is
+unrelated to TeX.
+
+The section `WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE',
+below, gives instructions, examples, and recommendations for authors
+who are considering distributing their works under this license.
+
+This license gives conditions under which a work may be distributed
+and modified, as well as conditions under which modified versions of
+that work may be distributed.
+
+We, the LaTeX3 Project, believe that the conditions below give you
+the freedom to make and distribute modified versions of your work
+that conform with whatever technical specifications you wish while
+maintaining the availability, integrity, and reliability of
+that work. If you do not see how to achieve your goal while
+meeting these conditions, then read the document `cfgguide.tex'
+and `modguide.tex' in the base LaTeX distribution for suggestions.
+
+
+DEFINITIONS
+===========
+
+In this license document the following terms are used:
+
+ `Work'
+ Any work being distributed under this License.
+
+ `Derived Work'
+ Any work that under any applicable law is derived from the Work.
+
+ `Modification'
+ Any procedure that produces a Derived Work under any applicable
+ law -- for example, the production of a file containing an
+ original file associated with the Work or a significant portion of
+ such a file, either verbatim or with modifications and/or
+ translated into another language.
+
+ `Modify'
+ To apply any procedure that produces a Derived Work under any
+ applicable law.
+
+ `Distribution'
+ Making copies of the Work available from one person to another, in
+ whole or in part. Distribution includes (but is not limited to)
+ making any electronic components of the Work accessible by
+ file transfer protocols such as FTP or HTTP or by shared file
+ systems such as Sun's Network File System (NFS).
+
+ `Compiled Work'
+ A version of the Work that has been processed into a form where it
+ is directly usable on a computer system. This processing may
+ include using installation facilities provided by the Work,
+ transformations of the Work, copying of components of the Work, or
+ other activities. Note that modification of any installation
+ facilities provided by the Work constitutes modification of the Work.
+
+ `Current Maintainer'
+ A person or persons nominated as such within the Work. If there is
+ no such explicit nomination then it is the `Copyright Holder' under
+ any applicable law.
+
+ `Base Interpreter'
+ A program or process that is normally needed for running or
+ interpreting a part or the whole of the Work.
+
+ A Base Interpreter may depend on external components but these
+ are not considered part of the Base Interpreter provided that each
+ external component clearly identifies itself whenever it is used
+ interactively. Unless explicitly specified when applying the
+ license to the Work, the only applicable Base Interpreter is a
+ `LaTeX-Format' or in the case of files belonging to the
+ `LaTeX-format' a program implementing the `TeX language'.
+
+
+
+CONDITIONS ON DISTRIBUTION AND MODIFICATION
+===========================================
+
+1. Activities other than distribution and/or modification of the Work
+are not covered by this license; they are outside its scope. In
+particular, the act of running the Work is not restricted and no
+requirements are made concerning any offers of support for the Work.
+
+2. You may distribute a complete, unmodified copy of the Work as you
+received it. Distribution of only part of the Work is considered
+modification of the Work, and no right to distribute such a Derived
+Work may be assumed under the terms of this clause.
+
+3. You may distribute a Compiled Work that has been generated from a
+complete, unmodified copy of the Work as distributed under Clause 2
+above, as long as that Compiled Work is distributed in such a way that
+the recipients may install the Compiled Work on their system exactly
+as it would have been installed if they generated a Compiled Work
+directly from the Work.
+
+4. If you are the Current Maintainer of the Work, you may, without
+restriction, modify the Work, thus creating a Derived Work. You may
+also distribute the Derived Work without restriction, including
+Compiled Works generated from the Derived Work. Derived Works
+distributed in this manner by the Current Maintainer are considered to
+be updated versions of the Work.
+
+5. If you are not the Current Maintainer of the Work, you may modify
+your copy of the Work, thus creating a Derived Work based on the Work,
+and compile this Derived Work, thus creating a Compiled Work based on
+the Derived Work.
+
+6. If you are not the Current Maintainer of the Work, you may
+distribute a Derived Work provided the following conditions are met
+for every component of the Work unless that component clearly states
+in the copyright notice that it is exempt from that condition. Only
+the Current Maintainer is allowed to add such statements of exemption
+to a component of the Work.
+
+ a. If a component of this Derived Work can be a direct replacement
+ for a component of the Work when that component is used with the
+ Base Interpreter, then, wherever this component of the Work
+ identifies itself to the user when used interactively with that
+ Base Interpreter, the replacement component of this Derived Work
+ clearly and unambiguously identifies itself as a modified version
+ of this component to the user when used interactively with that
+ Base Interpreter.
+
+ b. Every component of the Derived Work contains prominent notices
+ detailing the nature of the changes to that component, or a
+ prominent reference to another file that is distributed as part
+ of the Derived Work and that contains a complete and accurate log
+ of the changes.
+
+ c. No information in the Derived Work implies that any persons,
+ including (but not limited to) the authors of the original version
+ of the Work, provide any support, including (but not limited to)
+ the reporting and handling of errors, to recipients of the
+ Derived Work unless those persons have stated explicitly that
+ they do provide such support for the Derived Work.
+
+ d. You distribute at least one of the following with the Derived Work:
+
+ 1. A complete, unmodified copy of the Work;
+ if your distribution of a modified component is made by
+ offering access to copy the modified component from a
+ designated place, then offering equivalent access to copy
+ the Work from the same or some similar place meets this
+ condition, even though third parties are not compelled to
+ copy the Work along with the modified component;
+
+ 2. Information that is sufficient to obtain a complete,
+ unmodified copy of the Work.
+
+7. If you are not the Current Maintainer of the Work, you may
+distribute a Compiled Work generated from a Derived Work, as long as
+the Derived Work is distributed to all recipients of the Compiled
+Work, and as long as the conditions of Clause 6, above, are met with
+regard to the Derived Work.
+
+8. The conditions above are not intended to prohibit, and hence do not
+apply to, the modification, by any method, of any component so that it
+becomes identical to an updated version of that component of the Work as
+it is distributed by the Current Maintainer under Clause 4, above.
+
+9. Distribution of the Work or any Derived Work in an alternative
+format, where the Work or that Derived Work (in whole or in part) is
+then produced by applying some process to that format, does not relax or
+nullify any sections of this license as they pertain to the results of
+applying that process.
+
+10. a. A Derived Work may be distributed under a different license
+ provided that license itself honors the conditions listed in
+ Clause 6 above, in regard to the Work, though it does not have
+ to honor the rest of the conditions in this license.
+
+ b. If a Derived Work is distributed under a different license, that
+ Derived Work must provide sufficient documentation as part of
+ itself to allow each recipient of that Derived Work to honor the
+ restrictions in Clause 6 above, concerning changes from the Work.
+
+11. This license places no restrictions on works that are unrelated to
+the Work, nor does this license place any restrictions on aggregating
+such works with the Work by any means.
+
+12. Nothing in this license is intended to, or may be used to, prevent
+complete compliance by all parties with all applicable laws.
+
+
+NO WARRANTY
+===========
+
+There is no warranty for the Work. Except when otherwise stated in
+writing, the Copyright Holder provides the Work `as is', without
+warranty of any kind, either expressed or implied, including, but not
+limited to, the implied warranties of merchantability and fitness for a
+particular purpose. The entire risk as to the quality and performance
+of the Work is with you. Should the Work prove defective, you assume
+the cost of all necessary servicing, repair, or correction.
+
+In no event unless required by applicable law or agreed to in writing
+will The Copyright Holder, or any author named in the components of the
+Work, or any other party who may distribute and/or modify the Work as
+permitted above, be liable to you for damages, including any general,
+special, incidental or consequential damages arising out of any use of
+the Work or out of inability to use the Work (including, but not limited
+to, loss of data, data being rendered inaccurate, or losses sustained by
+anyone as a result of any failure of the Work to operate with any other
+programs), even if the Copyright Holder or said author or said other
+party has been advised of the possibility of such damages.
+
+
+MAINTENANCE OF THE WORK
+=======================
+
+The Work has the status `author-maintained' if the Copyright Holder
+explicitly and prominently states near the primary copyright notice in
+the Work that the Work can only be maintained by the Copyright Holder
+or simply that it is `author-maintained'.
+
+The Work has the status `maintained' if there is a Current Maintainer
+who has indicated in the Work that they are willing to receive error
+reports for the Work (for example, by supplying a valid e-mail
+address). It is not required for the Current Maintainer to acknowledge
+or act upon these error reports.
+
+The Work changes from status `maintained' to `unmaintained' if there
+is no Current Maintainer, or the person stated to be Current
+Maintainer of the work cannot be reached through the indicated means
+of communication for a period of six months, and there are no other
+significant signs of active maintenance.
+
+You can become the Current Maintainer of the Work by agreement with
+any existing Current Maintainer to take over this role.
+
+If the Work is unmaintained, you can become the Current Maintainer of
+the Work through the following steps:
+
+ 1. Make a reasonable attempt to trace the Current Maintainer (and
+ the Copyright Holder, if the two differ) through the means of
+ an Internet or similar search.
+
+ 2. If this search is successful, then enquire whether the Work
+ is still maintained.
+
+ a. If it is being maintained, then ask the Current Maintainer
+ to update their communication data within one month.
+
+ b. If the search is unsuccessful or no action to resume active
+ maintenance is taken by the Current Maintainer, then announce
+ within the pertinent community your intention to take over
+ maintenance. (If the Work is a LaTeX work, this could be
+ done, for example, by posting to comp.text.tex.)
+
+ 3a. If the Current Maintainer is reachable and agrees to pass
+ maintenance of the Work to you, then this takes effect
+ immediately upon announcement.
+
+ b. If the Current Maintainer is not reachable and the Copyright
+ Holder agrees that maintenance of the Work be passed to you,
+ then this takes effect immediately upon announcement.
+
+ 4. If you make an `intention announcement' as described in 2b. above
+ and after three months your intention is challenged neither by
+ the Current Maintainer nor by the Copyright Holder nor by other
+ people, then you may arrange for the Work to be changed so as
+ to name you as the (new) Current Maintainer.
+
+ 5. If the previously unreachable Current Maintainer becomes
+ reachable once more within three months of a change completed
+ under the terms of 3b) or 4), then that Current Maintainer must
+ become or remain the Current Maintainer upon request provided
+ they then update their communication data within one month.
+
+A change in the Current Maintainer does not, of itself, alter the fact
+that the Work is distributed under the LPPL license.
+
+If you become the Current Maintainer of the Work, you should
+immediately provide, within the Work, a prominent and unambiguous
+statement of your status as Current Maintainer. You should also
+announce your new status to the same pertinent community as
+in 2b) above.
+
+
+WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE
+======================================================
+
+This section contains important instructions, examples, and
+recommendations for authors who are considering distributing their
+works under this license. These authors are addressed as `you' in
+this section.
+
+Choosing This License or Another License
+----------------------------------------
+
+If for any part of your work you want or need to use *distribution*
+conditions that differ significantly from those in this license, then
+do not refer to this license anywhere in your work but, instead,
+distribute your work under a different license. You may use the text
+of this license as a model for your own license, but your license
+should not refer to the LPPL or otherwise give the impression that
+your work is distributed under the LPPL.
+
+The document `modguide.tex' in the base LaTeX distribution explains
+the motivation behind the conditions of this license. It explains,
+for example, why distributing LaTeX under the GNU General Public
+License (GPL) was considered inappropriate. Even if your work is
+unrelated to LaTeX, the discussion in `modguide.tex' may still be
+relevant, and authors intending to distribute their works under any
+license are encouraged to read it.
+
+A Recommendation on Modification Without Distribution
+-----------------------------------------------------
+
+It is wise never to modify a component of the Work, even for your own
+personal use, without also meeting the above conditions for
+distributing the modified component. While you might intend that such
+modifications will never be distributed, often this will happen by
+accident -- you may forget that you have modified that component; or
+it may not occur to you when allowing others to access the modified
+version that you are thus distributing it and violating the conditions
+of this license in ways that could have legal implications and, worse,
+cause problems for the community. It is therefore usually in your
+best interest to keep your copy of the Work identical with the public
+one. Many works provide ways to control the behavior of that work
+without altering any of its licensed components.
+
+How to Use This License
+-----------------------
+
+To use this license, place in each of the components of your work both
+an explicit copyright notice including your name and the year the work
+was authored and/or last substantially modified. Include also a
+statement that the distribution and/or modification of that
+component is constrained by the conditions in this license.
+
+Here is an example of such a notice and statement:
+
+ %% pig.dtx
+ %% Copyright 2008 M. Y. Name
+ %
+ % 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
+ % https://www.latex-project.org/lppl.txt
+ % and version 1.3c or later is part of all distributions of LaTeX
+ % version 2008 or later.
+ %
+ % This work has the LPPL maintenance status `maintained'.
+ %
+ % The Current Maintainer of this work is M. Y. Name.
+ %
+ % This work consists of the files pig.dtx and pig.ins
+ % and the derived file pig.sty.
+
+Given such a notice and statement in a file, the conditions
+given in this license document would apply, with the `Work' referring
+to the three files `pig.dtx', `pig.ins', and `pig.sty' (the last being
+generated from `pig.dtx' using `pig.ins'), the `Base Interpreter'
+referring to any `LaTeX-Format', and both `Copyright Holder' and
+`Current Maintainer' referring to the person `M. Y. Name'.
+
+If you do not want the Maintenance section of LPPL to apply to your
+Work, change `maintained' above into `author-maintained'.
+However, we recommend that you use `maintained', as the Maintenance
+section was added in order to ensure that your Work remains useful to
+the community even when you can no longer maintain and support it
+yourself.
+
+Derived Works That Are Not Replacements
+---------------------------------------
+
+Several clauses of the LPPL specify means to provide reliability and
+stability for the user community. They therefore concern themselves
+with the case that a Derived Work is intended to be used as a
+(compatible or incompatible) replacement of the original Work. If
+this is not the case (e.g., if a few lines of code are reused for a
+completely different task), then clauses 6b and 6d shall not apply.
+
+
+Important Recommendations
+-------------------------
+
+ Defining What Constitutes the Work
+
+ The LPPL requires that distributions of the Work contain all the
+ files of the Work. It is therefore important that you provide a
+ way for the licensee to determine which files constitute the Work.
+ This could, for example, be achieved by explicitly listing all the
+ files of the Work near the copyright notice of each file or by
+ using a line such as:
+
+ % This work consists of all files listed in manifest.txt.
+
+ in that place. In the absence of an unequivocal list it might be
+ impossible for the licensee to determine what is considered by you
+ to comprise the Work and, in such a case, the licensee would be
+ entitled to make reasonable conjectures as to which files comprise
+ the Work.
diff --git a/macros/latex/contrib/ensps-colorscheme/Makefile b/macros/latex/contrib/ensps-colorscheme/Makefile
new file mode 100644
index 0000000000..f564781a6e
--- /dev/null
+++ b/macros/latex/contrib/ensps-colorscheme/Makefile
@@ -0,0 +1,54 @@
+.PHONY: lint clean
+
+PKG=ensps-colorscheme
+DOC=$(PKG)-doc.pdf
+# The version of the package is obtained using git decribe,
+# and if it fails we use the value v0.0.0 as a default.
+VER=$(shell git describe --tags --always --dirty|| echo "v0.0.0")
+
+$(PKG).sty: $(PKG).ins
+ latex $(PKG).ins
+
+# We need to use the classical several
+# pass compilation to get everything right
+# gind.ist is a specific style for the index
+# that is compatible with dtx files.
+# https://tex.stackexchange.com/questions/84870/index-completely-messed-up-in-dtx-file
+$(PKG)-doc.pdf: $(PKG).dtx $(PKG).sty
+ pdflatex $(PKG).dtx
+ makeindex -s gglo.ist -o $(PKG).gls $(PKG).glo
+ makeindex -s gind.ist $(PKG).idx
+ pdflatex $(PKG).dtx
+ mv $(PKG).pdf $(PKG)-doc.pdf
+
+install:
+ cp $(PKG).sty ~/texmf/tex/latex/$(PKG).
+ cp $(PKG)-doc.pdf ~/texmf/doc/latex/$(PKG).
+
+$(PKG).zip: $(PKG).sty $(PKG)-doc.pdf
+ mkdir -p $(PKG)
+ cp Makefile $(PKG)/Makefile
+ cp LICENSE $(PKG)/LICENSE
+ cp README.md $(PKG)/README.md
+ cp $(PKG)-doc.pdf $(PKG)/$(PKG)-doc.pdf
+ cp $(PKG).dtx $(PKG)/$(PKG).dtx
+ cp $(PKG).ins $(PKG)/$(PKG).ins
+ zip -r $(PKG).zip $(PKG)
+
+
+lint: $(PKG).sty
+ chktex $(PKG).dtx
+ chktex $(PKG).sty
+
+clean:
+ rm -rf $(PKG).pdf \
+ $(PKG).aux \
+ $(PKG).dvi \
+ $(PKG).glo \
+ $(PKG).hd \
+ $(PKG).idx \
+ $(PKG).log \
+ $(PKG).out \
+ $(PKG).pdf \
+ $(PKG).sty \
+ $(PKG).zip
diff --git a/macros/latex/contrib/ensps-colorscheme/README.md b/macros/latex/contrib/ensps-colorscheme/README.md
new file mode 100644
index 0000000000..8d5453ebcb
--- /dev/null
+++ b/macros/latex/contrib/ensps-colorscheme/README.md
@@ -0,0 +1,32 @@
+This directory contains the package
+
+ name: ensps-colorscheme
+ license: LaTeX Project Public License version 1.3c or above
+ author: Aliaume LOPEZ
+ mail: ad.lopez@uw.edu.pl
+ web: https://ctan.org/pkg/ensps-colorscheme
+
+### Purpose:
+
+The `ensps-colorscheme` package for LaTeX offers
+access to the design system of the Université Paris Saclay,
+and can be used to write documents consistent with the
+guidelines. For now, only the color palette is available.
+
+### Install:
+
+It is sufficent to have `ensps-colorscheme.sty` accessible
+by LaTeX. To produce this file, run `make ensps-colorscheme.sty`
+in this directory. The documentation can be produced by
+running `make ensps-coloscheme-doc.pdf`.
+
+
+### Content of the directory:
+
+- `README.md`: this file.
+- `ensps-colorscheme.sty`: the package file (generated using ensps-colorscheme.ins)
+- `ensps-colorscheme-doc.pdf`: the user documentation (generated by compiling
+ ensps-colorscheme.dtx)
+- `Makefile`: the makefile. Use `make all` to generate ensps-colorscheme.sty
+ and ensps-colorscheme-doc.pdf. It can also: clean the directory, make zip
+ version of the sources, or ready for CTAN.
diff --git a/macros/latex/contrib/ensps-colorscheme/ensps-colorscheme-doc.pdf b/macros/latex/contrib/ensps-colorscheme/ensps-colorscheme-doc.pdf
new file mode 100644
index 0000000000..7818da7080
--- /dev/null
+++ b/macros/latex/contrib/ensps-colorscheme/ensps-colorscheme-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/ensps-colorscheme/ensps-colorscheme.dtx b/macros/latex/contrib/ensps-colorscheme/ensps-colorscheme.dtx
new file mode 100644
index 0000000000..81f2167b0c
--- /dev/null
+++ b/macros/latex/contrib/ensps-colorscheme/ensps-colorscheme.dtx
@@ -0,0 +1,171 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2024 Aliaume LOPEZ
+% --------------------------------
+%
+% This file may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3c
+% of this license or (at your option) any later version.
+% The latest version of this license is in:
+%
+% http://www.latex-project.org/lppl.txt
+%
+% and version 1.3c or later is part of all distributions of LaTeX
+% version 2008-05-04 or later.
+%
+% \fi
+%
+% \iffalse
+%<ensps>\NeedsTeXFormat{LaTeX2e}[2023-11-01]
+%<ensps>\ProvidesPackage{ensps-colorscheme}
+%<ensps> [2024-05-03 v0.0.1 ENS Paris-Saclay Colors and Theme]
+%<ensps>\RequirePackage{xcolor}
+%<ensps>\RequirePackage{tikz}
+%
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage{xcolor}
+\usepackage{tikz}
+\usepackage{ensps-colorscheme}
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\begin{document}
+\DocInput{ensps-colorscheme.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+%
+% \changes{v0.0.1}{2024-05-28}{Initial version}
+% \GetFileInfo{ensps-colorscheme.sty}
+% \DoNotIndex{\#,\$,\%,\&,\@,\\,\{,\},\^,\_,\~,\ }
+% \DoNotIndex{\@ne}
+% \DoNotIndex{\advance,\begingroup,\catcode,\closein}
+% \DoNotIndex{\closeout,\day,\def,\edef,\else,\empty,\endgroup}
+% \DoNotIndex{\foreach,\subitem,\hue,\letter,\hdclindex}
+% \DoNotIndex{\begin,\colorlet,\definecolor,\intensity,\end,\shade}
+% \DoNotIndex{\y,\x,\xglobal,\newcommand,\name,\node,\variant}
+% \title{The \textsf{ensps-colorscheme} package
+% \thanks{This document corresponds to \textsf{ensps-colorscheme}~\fileversion,
+% dated \filedate.}
+%}
+%\author{Aliaume Lopez \\ \texttt{ad.lopez@uw.edu.pl}}
+%
+% \maketitle
+% \begin{abstract}
+% A simple package to provide the ENS Paris-Saclay colors and theme.
+% It has been reversed engineered from the official Université Paris-Saclay
+% ``Charte Graphique".
+% \end{abstract}
+%
+% \section{Introduction}
+%
+% This package provides the ENS Paris-Saclay colors and theme.
+% It can be used in PhD theses, presentations and other documents
+% to ensure a consistent look and feel.
+% The package is loosely based on the following document
+% \texttt{Charte Graphique}\footnote{\url{https://www.universite-paris-saclay.fr/sites/default/files/2020-06/Charte-graphique-UniversiteParisSaclay.pdf}.}.
+%
+% For now, the package only provides colors and a way to visualize them.
+%
+% \section{Usage}
+% \DescribeMacro{\enspscolordefs}
+% The package defines the following colors:
+% \begin{itemize}
+% \foreach \name in {A,B,C,D} {
+% \foreach \hue in {1,2,3,4,5} {
+% \item \texttt{\name\hue}:
+% \textcolor{\name\hue}{\rule{0.5em}{0.5em}}
+% (\texttt{\textbackslash\name\hue bg}
+% \textcolor{\name\hue bg}{\rule{0.5em}{0.5em}} and
+% \texttt{\textbackslash\name\hue hint}
+% \textcolor{\name\hue hint}{\rule{0.5em}{0.5em}})
+% }
+% }
+% \item \texttt{Prune}:
+% \textcolor{Prune}{Prune}
+% \end{itemize}
+%
+% \DescribeMacro{\enspscolors}
+% The \cs{enspscolors} command creates a small tikzpicture with the ENS Paris-Saclay colors.
+% Producing the following output:
+% \begin{center}
+% \enspscolors
+% \end{center}
+%
+% \PrintIndex
+% \PrintChanges
+%
+% \section{Implementation}
+%
+% \begin{macro}{\enspscolordefs}
+% Here we define the colors for the ENS Paris-Saclay theme.
+% The main colors are hard coded, and the \texttt{bg} and \texttt{hint} colors
+% are then computed from the main colors.
+% \begin{macrocode}
+\definecolor{Prune}{RGB}{99,0,60}
+\definecolor{A1}{HTML}{000000}
+\definecolor{B1}{RGB}{49,62,72}
+\definecolor{C1}{RGB}{124,135,143}
+\definecolor{D1}{RGB}{213,218,223}
+\definecolor{A2}{RGB}{198,11,70}
+\definecolor{B2}{RGB}{237,20,91}
+\definecolor{C2}{RGB}{238,52,35}
+\definecolor{D2}{RGB}{243,115,32}
+\definecolor{A3}{RGB}{124,42,144}
+\definecolor{B3}{RGB}{125,106,175}
+\definecolor{C3}{RGB}{198,103,29}
+\definecolor{D3}{RGB}{254,188,24}
+\definecolor{A4}{RGB}{0,78,125}
+\definecolor{B4}{RGB}{14,135,201}
+\definecolor{C4}{RGB}{0,148,181}
+\definecolor{D4}{RGB}{70,195,210}
+\definecolor{A5}{RGB}{0,128,122}
+\definecolor{B5}{RGB}{64,183,105}
+\definecolor{C5}{RGB}{140,198,62}
+\definecolor{D5}{RGB}{213,223,61}
+\foreach \name in {A,B,C,D} {
+ \foreach \hue in {1,2,3,4,5} {
+ \foreach \shade/\intensity in {hint/20,bg/50} {
+ \xglobal\colorlet{\name\hue\shade}{\name\hue!\intensity!white}
+ }
+ }
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\enspscolors}
+% Create a small tikzpicture with the ENS Paris-Saclay colors.
+% \begin{macrocode}
+\newcommand{\enspscolors}{
+ \begin{tikzpicture}
+ \foreach \letter/\x in {A/0,B/1,C/2,D/3} {
+ \foreach \y/\variant in {0/1,1/2,2/3,3/4,4/5} {
+ \node[color=\letter\variant]
+ (\letter\variant) at (\x,\y)
+ {\letter\variant};
+ \node[color=\letter\variant bg]
+ (BG\letter\variant) at ({\x - 0.2}, {\y - 0.2})
+ {\letter\variant};
+ \node[color=\letter\variant hint]
+ (HT\letter\variant) at ({\x - 0.4}, {\y - 0.4})
+ {\letter\variant};
+ }
+ }
+ \begin{scope}[xshift=2cm]
+ \foreach \name/\x/\y in {
+ Prune/3/4
+ } {
+ \node[color=\name] (\name) at (\x,\y)
+ {\name};
+ }
+
+ \end{scope}
+ \end{tikzpicture}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \Finale
+\endinput
diff --git a/macros/latex/contrib/ensps-colorscheme/ensps-colorscheme.ins b/macros/latex/contrib/ensps-colorscheme/ensps-colorscheme.ins
new file mode 100644
index 0000000000..dc88f73bd3
--- /dev/null
+++ b/macros/latex/contrib/ensps-colorscheme/ensps-colorscheme.ins
@@ -0,0 +1,60 @@
+%%
+%% Copyright (C) 2024 Aliaume LOPEZ
+%%
+%% This file may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3c of this license or (at your option) any later
+%% version. The latest version of this license is in:
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3c or later is part of all distributions of
+%% LaTeX version 2008-05-04 or later.
+%%
+
+% Load the docstrip commands
+\input docstrip.tex
+
+% Do not be verbose
+\keepsilent
+
+% Where should files be installed?
+\usedir{tex/latex/ensps-colorscheme}
+
+% Add this as a comment on top of every generated files
+\preamble
+
+This is a generated file.
+
+Copyright (C) 2024 Aliaume LOPEZ
+
+This file may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either
+version 1.3c of this license or (at your option) any later
+version. The latest version of this license is in:
+
+ http://www.latex-project.org/lppl.txt
+
+and version 1.3c or later is part of all distributions of
+LaTeX version 2008-05-04 or later.
+
+\endpreamble
+
+% Generate the ensps.sty file
+\generate{\file{ensps-colorscheme.sty}{\from{ensps-colorscheme.dtx}{ensps}}}
+
+% Explain to the user what should be done to use the package.
+\obeyspaces
+\Msg{*********************************************************}
+\Msg{*}
+\Msg{* To finish the installation you have to move the}
+\Msg{* following file into a directory searched by TeX:}
+\Msg{*}
+\Msg{* \space\space ensps-colorscheme.sty}
+\Msg{*}
+\Msg{* To produce the documentation run the file ensps.dtx}
+\Msg{* through LaTeX.}
+\Msg{*}
+\Msg{* Happy TeXing!}
+\Msg{*********************************************************}
+\endbatchfile
diff --git a/macros/latex/contrib/esami/README b/macros/latex/contrib/esami/README
index 22f183f8d8..b1ef039c0e 100644
--- a/macros/latex/contrib/esami/README
+++ b/macros/latex/contrib/esami/README
@@ -1,6 +1,6 @@
-The esami package v. 2.8
+The esami package v. 2.9
For generation of texts and solutions of exams in LaTeX
-2023/07/21
+2024/07/01
File: README
Author: Grazia Messineo and Salvatore Vassallo
@@ -14,7 +14,7 @@ varying in random order, with closed or open answer, matching, problems, and so
of each group are randomly scrambled across the exam and variants of each exercise are chosen
randomly from a file which contains them all and.
-Copyright: (C) 2008--2023 Grazia Messineo & Salvatore Vassallo
+Copyright: (C) 2008--2024 Grazia Messineo & Salvatore Vassallo
Licence: LPPL
FILES IN DISTRIBUTION
diff --git a/macros/latex/contrib/esami/VERSION b/macros/latex/contrib/esami/VERSION
index 64fbb8d2f3..98dd005629 100644
--- a/macros/latex/contrib/esami/VERSION
+++ b/macros/latex/contrib/esami/VERSION
@@ -1 +1 @@
-VERSION 2.8 DATE=July 17, 2023
+VERSION 2.9 DATE=July 1, 2024
diff --git a/macros/latex/contrib/esami/doc/esami-doc-en.pdf b/macros/latex/contrib/esami/doc/esami-doc-en.pdf
index d2d96db33a..8f06ffc33b 100644
--- a/macros/latex/contrib/esami/doc/esami-doc-en.pdf
+++ b/macros/latex/contrib/esami/doc/esami-doc-en.pdf
Binary files differ
diff --git a/macros/latex/contrib/esami/doc/esami-doc-en.tex b/macros/latex/contrib/esami/doc/esami-doc-en.tex
index 44da55a481..8adc1c17a1 100644
--- a/macros/latex/contrib/esami/doc/esami-doc-en.tex
+++ b/macros/latex/contrib/esami/doc/esami-doc-en.tex
@@ -81,6 +81,7 @@
\changes{Version 2.6}{2021/10/11}{Improved the spacing in \cmd{\FPsignpol}. Corrected the code to avoid some spourios spaces. }
\changes{Version 2.7}{2022/01/11}{Improved the spacing in \cmd{\sempli} and \cmd{\FPsignpol}. Corrected a misprint in the code.}
\changes{Versione 2.8}{2023/07/21}{Documentation modified to solve a problem with the Spanish Language.}
+\changes{Versione 2.9}{2024/07/03}{Loaded the package tagpdf-base to avoid an error on the measures of the boxes.}
%\IndexPrologue{\section*{Index} Numbers written in italic refer to the page where the item is described; underlined numebers refer to the line of code in which the item is described; other references are to the line of code where the item is used.}
\GlossaryPrologue{\section*{Changelog}}
\def\MacroFont{\fontencoding\encodingdefault
@@ -798,7 +799,8 @@ Inside this file you should use only one command, \cmd{\def \textbackslash eserc
\item[Version 2.5 (2018/05/06)] Corrected a misprint in the code. Improved the selection of random exercises.
\item[Version 2.6 (2021/10/11)] Improved the spacing in \cmd{\FPsignpol}. Corrected the code to avoid some spourios spaces.
\item[Version 2.7 (2021/10/11)] Improved the spacing in \cmd{\sempli} and \cmd{\FPsignpol}. Corrected a misprint in the code
-\item[Versione 2.8 (2023/07/21)] Documentation modified to solve a problem with the spanish language.
+\item[Version 2.8 (2023/07/21)] Documentation modified to solve a problem with the spanish language.
+\item[Version 2.89 ( 2024/07/03)] Loaded the package tagpdf-base to avoid an error on the measures of the boxes.
\end{description}
\bibliographystyle{plain}
diff --git a/macros/latex/contrib/esami/doc/esami-doc-it.pdf b/macros/latex/contrib/esami/doc/esami-doc-it.pdf
index c4c9c5f20e..8b83d7bdf1 100644
--- a/macros/latex/contrib/esami/doc/esami-doc-it.pdf
+++ b/macros/latex/contrib/esami/doc/esami-doc-it.pdf
Binary files differ
diff --git a/macros/latex/contrib/esami/doc/esami-doc-it.tex b/macros/latex/contrib/esami/doc/esami-doc-it.tex
index 0a2b92414f..dae29f96fe 100644
--- a/macros/latex/contrib/esami/doc/esami-doc-it.tex
+++ b/macros/latex/contrib/esami/doc/esami-doc-it.tex
@@ -79,6 +79,8 @@
\changes{Versione 2.6}{2021/10/11}{Migliorata la spaziatura in \cmd{\FPsignpol}. Corretto il codice per eliminare alcuni spazi spuri.}
\changes{Versione 2.7}{2022/01/11}{Migliorata la spaziatura in \cmd{\sempli} e \cmd{\FPsignpol}. Corretto un errore nel codice}
\changes{Versione 2.8}{2023/07/21}{Modificata la documentazione per risolvere un problema con la lingua spagnola.}
+\changes{Versione 2.9}{2024/07/03}{Caricato il pacchetto tagpdf-base per evitare un errore sulle misure delle box.}
+
%\IndexPrologue{\section*{Indice} I numeri scritti in italico rimandano alla pagina dove è descritto l'item; i numeri sottolineati rimandano alla riga di codice in cui l'item è descritto; le altre referenze sono alla riga di codice dove l'item è usato.}
\GlossaryPrologue{\section*{Changelog}}
\def\MacroFont{\fontencoding\encodingdefault
@@ -800,7 +802,7 @@ Al suo interno si deve usare un solo comando, \cmd{\def \textbackslash esercizio
\item[Versione 2.6 (2021/10/11)] Migliorata la spaziatura in \cmd{\FPsignpol}. Corretto il codice per eliminare alcuni spazi spuri.
\item[Versione 2.7 (2022/01/11)] Migliorata la spaziatura in \cmd{\sempli} e \cmd{\FPsignpol}. Corretto un errore nel codice
\item[Versione 2.8 (2023/07/21)] Modificata la documentazione per risolvere un problema con la lingua spagnola.
-
+ \item[Versione 2.8 (2024/07/03)]Caricato il pacchetto tagpdf-base per evitare un errore sulle misure delle box.
\end{description}
diff --git a/macros/latex/contrib/esami/doc/examples/qftest5-fillinqiie1.parametri.tex b/macros/latex/contrib/esami/doc/examples/qftest5-fillinqiie1.parametri.tex
deleted file mode 100644
index 107265dbc4..0000000000
--- a/macros/latex/contrib/esami/doc/examples/qftest5-fillinqiie1.parametri.tex
+++ /dev/null
@@ -1,4 +0,0 @@
-\FPeval{a}{round(12:0)}
-\FPeval{b}{round(13:0)}
-\FPeval{c}{round(3:0)}
-\FPeval{k}{round(4:0)}
diff --git a/macros/latex/contrib/esami/doc/examples/qftest5-fillinqiie2.parametri.tex b/macros/latex/contrib/esami/doc/examples/qftest5-fillinqiie2.parametri.tex
deleted file mode 100644
index e736caa6a0..0000000000
--- a/macros/latex/contrib/esami/doc/examples/qftest5-fillinqiie2.parametri.tex
+++ /dev/null
@@ -1,4 +0,0 @@
-\FPeval{a}{round(14:0)}
-\FPeval{b}{round(15:0)}
-\FPeval{c}{round(2:0)}
-\FPeval{k}{round(5:0)}
diff --git a/macros/latex/contrib/esami/doc/examples/qftest5-fillinqiie3.parametri.tex b/macros/latex/contrib/esami/doc/examples/qftest5-fillinqiie3.parametri.tex
deleted file mode 100644
index 98ef510098..0000000000
--- a/macros/latex/contrib/esami/doc/examples/qftest5-fillinqiie3.parametri.tex
+++ /dev/null
@@ -1,4 +0,0 @@
-\FPeval{a}{round(12:0)}
-\FPeval{b}{round(15:0)}
-\FPeval{c}{round(2:0)}
-\FPeval{k}{round(4:0)}
diff --git a/macros/latex/contrib/esami/doc/examples/qftest5-fillinqiie4.parametri.tex b/macros/latex/contrib/esami/doc/examples/qftest5-fillinqiie4.parametri.tex
deleted file mode 100644
index ab468d8a75..0000000000
--- a/macros/latex/contrib/esami/doc/examples/qftest5-fillinqiie4.parametri.tex
+++ /dev/null
@@ -1,4 +0,0 @@
-\FPeval{a}{round(13:0)}
-\FPeval{b}{round(14:0)}
-\FPeval{c}{round(2:0)}
-\FPeval{k}{round(4:0)}
diff --git a/macros/latex/contrib/esami/doc/examples/testA-xetex-sol.sol.tex b/macros/latex/contrib/esami/doc/examples/testA-xetex-sol.sol.tex
new file mode 100644
index 0000000000..00cc5e002c
--- /dev/null
+++ b/macros/latex/contrib/esami/doc/examples/testA-xetex-sol.sol.tex
@@ -0,0 +1,84 @@
+\begin{minipage}{.33\textwidth}{\large\textbf{Soluzione\ Versione\ n. 1}}
+\begin{enumerate}
+\item\ref{e:1-file:test2-q:i}
+\item\ref{e:1-file:test3-q:ii}
+\item\ref{e:1-file:test2-q:ii}
+\item\ref{e:1-file:test2-q:iii}
+\item\ref{e:1-file:test3-q:i}
+\item\ref{e:1-file:test1-q:i}
+\item\ref{e:1-file:test9-q:ii}
+\item\ref{e:1-file:test14-q:i}
+\item\ref{e:1-file:test4-q:v}
+\item \makeatletter \input{qftest5-fillinqiie1.parametri}\makeatother
+ \FPsv [2]{b/k}
+\item\ref{e:1-file:test11-q:i}
+\item\ref{e:1-file:test11-q:ii}
+\par\end{enumerate}\vspace{3ex}
+\begin{enumerate}
+\item\ref{e:1-file:test12-q:i}
+\item\ref{e:1-file:test13-q:ii}
+\par\end{enumerate}\vspace{3ex}
+\end{minipage}
+\begin{minipage}{.33\textwidth}{\large\textbf{Soluzione\ Versione\ n. 2}}
+\begin{enumerate}
+\item\ref{e:2-file:test2-q:iii}
+\item\ref{e:2-file:test3-q:i}
+\item\ref{e:2-file:test2-q:ii}
+\item\ref{e:2-file:test3-q:iv}
+\item\ref{e:2-file:test2-q:i}
+\item\ref{e:2-file:test1-q:ii}
+\item \makeatletter \input{qftest5-fillinqiie2.parametri}\makeatother
+ \FPsv [2]{a/c}
+\item\ref{e:2-file:test9-q:iii}
+\item\ref{e:2-file:test14-q:i}
+\item\ref{e:2-file:test4-q:ii}
+\item\ref{e:2-file:test11-q:i}
+\item\ref{e:2-file:test11-q:ii}
+\par\end{enumerate}\vspace{3ex}
+\begin{enumerate}
+\item\ref{e:2-file:test13-q:iii}
+\item\ref{e:2-file:test12-q:iii}
+\par\end{enumerate}\vspace{3ex}
+\end{minipage}
+\begin{minipage}{.33\textwidth}{\large\textbf{Soluzione\ Versione\ n. 3}}
+\begin{enumerate}
+\item\ref{e:3-file:test2-q:iii}
+\item\ref{e:3-file:test3-q:i}
+\item\ref{e:3-file:test2-q:i}
+\item\ref{e:3-file:test3-q:ii}
+\item\ref{e:3-file:test2-q:ii}
+\item\ref{e:3-file:test14-q:i}
+\item \makeatletter \input{qftest5-fillinqiie3.parametri}\makeatother
+ \FPsv [2]{b/k}
+\item\ref{e:3-file:test4-q:iii}
+\item\ref{e:3-file:test1-q:i}
+\item\ref{e:3-file:test9-q:iv}
+\item\ref{e:3-file:test11-q:i}
+\item\ref{e:3-file:test11-q:ii}
+\par\end{enumerate}\vspace{3ex}
+\begin{enumerate}
+\item\ref{e:3-file:test12-q:i}
+\item\ref{e:3-file:test13-q:iv}
+\par\end{enumerate}\vspace{3ex}
+\end{minipage}
+\begin{minipage}{.33\textwidth}{\large\textbf{Soluzione\ Versione\ n. 4}}
+\begin{enumerate}
+\item\ref{e:4-file:test2-q:ii}
+\item\ref{e:4-file:test2-q:i}
+\item\ref{e:4-file:test3-q:i}
+\item\ref{e:4-file:test3-q:ii}
+\item\ref{e:4-file:test2-q:iii}
+\item\ref{e:4-file:test4-q:v}
+\item\ref{e:4-file:test9-q:iii}
+\item\ref{e:4-file:test1-q:ii}
+\item\ref{e:4-file:test14-q:i}
+\item \makeatletter \input{qftest5-fillinqiie4.parametri}\makeatother
+ \FPsv [2]{a/c}
+\item\ref{e:4-file:test11-q:i}
+\item\ref{e:4-file:test11-q:ii}
+\par\end{enumerate}\vspace{3ex}
+\begin{enumerate}
+\item\ref{e:4-file:test13-q:iii}
+\item\ref{e:4-file:test12-q:iii}
+\par\end{enumerate}\vspace{3ex}
+\end{minipage}
diff --git a/macros/latex/contrib/esami/esami.sty b/macros/latex/contrib/esami/esami.sty
index 12bf761379..d1f8757d56 100644
--- a/macros/latex/contrib/esami/esami.sty
+++ b/macros/latex/contrib/esami/esami.sty
@@ -145,6 +145,7 @@
% | PACKAGES |
% +=============================+
+\usepackage{tagpdf-base}
\usepackage{graphicx}
\usepackage{enumerate}
\usepackage[nomessages]{fp}
diff --git a/macros/latex/contrib/fancyhdr/README b/macros/latex/contrib/fancyhdr/README
index 4a7d219fdc..3131149015 100644
--- a/macros/latex/contrib/fancyhdr/README
+++ b/macros/latex/contrib/fancyhdr/README
@@ -27,7 +27,7 @@ In order to latex the documentation you need to have a copy of
boxedminipage.sty (CTAN:/macros/latex/contrib/boxedminipage) and
refcount.sty (CTAN:/macros/latex/contrib/oberdiek/) installed.
-This is version 4.2 of fancyhdr.sty and extramarks.sty. They are
+This is version 4.3.1 of fancyhdr.sty and extramarks.sty. They are
described in the third edition of The LaTeX Companion.
Extramarks.sty has not been changed, except for the version and
copyright information.
diff --git a/macros/latex/contrib/fancyhdr/fancyhdr.dtx b/macros/latex/contrib/fancyhdr/fancyhdr.dtx
index 43c6631bba..c20c966b8b 100644
--- a/macros/latex/contrib/fancyhdr/fancyhdr.dtx
+++ b/macros/latex/contrib/fancyhdr/fancyhdr.dtx
@@ -26,7 +26,7 @@
%<fancyhdr>\ProvidesPackage{fancyhdr}%
%<fancyheadings>\ProvidesPackage{fancyheadings}
%<extramarks>\ProvidesPackage{extramarks}
-%<fancyhdr|extramarks> [2024/04/23 v4.2
+%<fancyhdr|extramarks> [2024/07/23 v4.3.1
%<fancyhdr> Extensive control of page headers and footers]%
%<fancyheadings> [2022/11/09 v4.1
%<fancyheadings> Legacy package to call fancyhdr]
@@ -59,8 +59,6 @@
\def\pAmS{{\the\textfont2
A\kern-.1667em\lower.5ex\hbox{M}\kern-.125emS}}
\def\amslatex/{\ams/-\latex/}
-\newcommand{\PSNFSS}{{\sf
- PSNFSS}}
\newcommand{\bs}{\symbol{'134}}
\newcommand{\env}[1]{\texttt{#1}}
\newcommand{\Package}[1]{\textsf{#1}}
@@ -206,7 +204,7 @@
% \DoNotIndex{\#,\$,\%,\&,\@,\\,\{,\},\^,\_,\~,\ }
% \DoNotIndex{\@ne}
% \DoNotIndex{\advance,\begingroup,\catcode,\closein}
-% \DoNotIndex{\closeout,\day,\def,\edef,\else,\empty,\endgroup}
+% \DoNotIndex{\closeout,\day,\def,\edef,\else,\empty,\@empty,\endgroup}
%
% \title{The \Package{fancyhdr} and \Package{extramarks}
% packages\\{\normalsize version \fileversion.}}
@@ -228,7 +226,7 @@
%
% This documentation describes version 4.0 or later of the
% \Package{fancyhdr} and \Package{extramarks} packages. The user
-% documentation is valid for the versions 3.8 or later of the
+% documentation is valid for the versions 4.0 or later of the
% \Package{fancyhdr} package (except for the changes mentioned in
% section~\ref{sec:version-4}), and version 2.1 or later of the
% \Package{extramarks} package.
@@ -253,11 +251,11 @@
%
% Part IV contains the annotated implementation.
%
-% This document describes version 4 of \Package{fancyhdr}. This version
-% is also described in the forthcoming edition 3 of \textit{The \latex/ Companion},
-% whereas the previous editions describe version 3 of \Package{fancyhdr}.
-% There are some significant differences between these versions. These
-% are summarized in section~\ref{sec:version-4} on page~\pageref{sec:version-4}.
+% This document describes version 4 of \Package{fancyhdr}, which is described in
+% the \emph{The \LaTeX{} Companion, Third Edition}.
+% The differences between this version and previous versions
+% are summarized in section~\ref{sec:version-4} on
+% page~\pageref{sec:version-4}.
% Throughout this documentation it is mentioned when a specific feature
% is only available in version 4, or when there are differences between
% version 3 and 4.
@@ -304,16 +302,14 @@
% \OPTindex{twoside}
% \OPTindex{headings}
% \OPTindex{myheadings}
-% \DescribeMacro{\fancyhead}
-% \DescribeMacro{\fancyfoot}
-% \DescribeMacro{\fancyhf}
-% \begin{verbatim}
-% \fancyhead[places]{field}
-% \fancyfoot[places]{field}
-% \fancyhf[places]{field}
-% \end{verbatim}
-% Here \texttt{places} is a comma-separated list of places where
-% \texttt{field} will be placed. There are 12 places defined: Left,
+%
+% \begin{flushleft}
+% \DescribeMacro{\fancyhead}\cmd{\fancyhead}\oarg{places}\marg{field} \\
+% \DescribeMacro{\fancyfoot}\cmd{\fancyfoot}\oarg{places}\marg{field} \\
+% \DescribeMacro{\fancyhf}\cmd{\fancyhf}\oarg{places}\marg{field}
+% \end{flushleft}
+% Here \meta{places} is a comma-separated list of places where
+% \meta{field} will be placed. There are 12 places defined: Left,
% Center and Right Headers and Footers, and both can be on Even or Odd
% pages. Each place therefore has 3 coordinates which are the inital
% letters of the above description: (1) \texttt{E} or \texttt{O}, (2) \texttt{L}, \texttt{C} or
@@ -321,14 +317,12 @@
% letters, like \texttt{EOH}. A missing coordinate means: all
% possibilities, except for \cs{fancyhead} where \texttt{H} is implied
% and \cs{fancyfoot} where \texttt{F} is implied.
-% \DescribeMacro{\fancyheadoffset}
-% \DescribeMacro{\fancyfootoffset}
-% \DescribeMacro{\fancyhfoffset}
-% \begin{verbatim}
-% \fancyheadoffset[places]{field}
-% \fancyfootoffset[places]{field}
-% \fancyhfoffset[places]{field}
-% \end{verbatim}
+%
+% \begin{flushleft}
+% \DescribeMacro{\fancyheadoffset}\cmd{\fancyheadoffset}\oarg{places}\marg{length} \\
+% \DescribeMacro{\fancyfootoffset}\cmd{\fancyfootoffset}\oarg{places}\marg{length} \\
+% \DescribeMacro{\fancyhfoffset}\cmd{\fancyhfoffset}\oarg{places}\marg{length}
+% \end{flushleft}
% These define offsets to let the headers stick into the margin (or to
% the inside if negative). Places cannot contain the \texttt{C}
% specifier. See section~\ref{sec:book-examples} for more details.
@@ -340,7 +334,6 @@
% \DescribeMacro{\headrule}
% \DescribeMacro{\footrule}
% \DescribeMacro{\headwidth}
-%
% \cs{headrulewidth} and \cs{footrulewidth} are macros to define the
% thickness of a line under the header and above the footer.
% \cs{headruleskip} and \cs{footruleskip} are macros that define the
@@ -353,7 +346,6 @@
% \DescribeMacro{\fancyheadinit}
% \DescribeMacro{\fancyfootinit}
% \DescribeMacro{\fancyhfinit}
-%
% \cs{fancyheadinit} and \cs{fancyfootinit} can be used to define
% initialisation code for the header and footer, respectively, and
% \cs{fancyhfinit} defines both of these. These commands are only
@@ -367,7 +359,6 @@
% \DescribeMacro{\ifbotfloat}
% \DescribeMacro{\iffloatpage}
% \DescribeMacro{\iffootnote}
-%
% The macros \cs{iftopfloat}, \cs{ifbotfloat}, \cs{iffloatpage} and
% \cs{iffootnote} are used to detect if there is a float on the top or
% the bottom of the page, or the page is a float page, or if there is
@@ -375,10 +366,10 @@
% different headers and/or footers if these conditions are met. See
% section~\ref{sec:float} for more details.
%
-% \begin{quote}
-% \DescribeMacro{\fancypagestyle}
-% \verb|\fancypagestyle|\marg{style-name}\oarg{base-style}\marg{definitions}
-% \end{quote}
+% \begin{flushleft}
+% \DescribeMacro{\fancypagestyle}
+% \cmd{\fancypagestyle}\marg{style-name}\oarg{base-style}\marg{definitions}
+% \end{flushleft}
% This command lets you (re)define page styles for use in special
% situations. See section~\ref{sec:fancypagestyle} for more details.
%
@@ -393,13 +384,6 @@
% \DescribeMacro{\lastrightmark}
% \DescribeMacro{\firstrightmark}
% \DescribeMacro{\lastleftmark}
-% \begin{verbatim}
-% \firstleftmark
-% \lastrightmark
-% \firstrightmark
-% \lastleftmark
-% \end{verbatim}
-%
% Standard \latex/ has two marks: a left and a right one. The standard
% command \cs{leftmark} gives you the last left mark on a page, and
% \cs{rightmark} gives you the first right one. These macros give you
@@ -486,7 +470,7 @@
%
% The page headers and footers in \LaTeX{} are defined by the
% \cs{pagestyle} and \cs{pagenumbering} commands. \cs{pagestyle}
-% defines the general contents of the headers and footers (e.g. where the
+% defines the general contents of the headers and footers (e.g.\ where the
% page number will be printed), while
% \cs{pagenumbering} defines the format of the page number.
% \LaTeX{} has four standard page styles:
@@ -527,7 +511,7 @@
%
% These are not user commands, but rather ``variables'' that are used by
% \latex/'s output routine.
-% As the command names contain the character '\texttt{@}', they should
+% As the command names contain the character `\texttt{@}', they should
% be defined in a package file, or otherwise be sandwiched between the commands
% \cs{makeatletter} and \cs{makeatother}.
%
@@ -605,6 +589,12 @@
% We define each of the six ``fields'' and the two decorative lines
% separately.
%
+% \begin{fblock}
+% \textbf{NOTE:} In \Package{fancyhdr} version 4.3 and later, paragraph
+% hooks will not work inside \Package{fancyhdr} headers and footers to
+% avoid unwanted interactions with the main text.
+% \end{fblock}
+%
% \section{A simple example}
% \label{sec:simple}
%
@@ -784,7 +774,7 @@
% for which pages and/or parts of the header/footer they apply. The first
% \cs{fancyhead} command above omits this parameter, and thus applies to all
% header fields. In general this is only useful to get rid of the defaults or
-% a previous definition, as is done here. Similar the \cs{fancyfoot} command
+% a previous definition, as is done here. Similarly the \cs{fancyfoot} command
% without square brackets clears all footer fields. In this particular
% example it could be omitted as all footer fields have a value specified.
% The selectors that can be used
@@ -846,7 +836,7 @@
% \cs{ps@plain} command, but \Package{fancyhdr} gives you an easier way
% with the \cs{fancypagestyle} command. This command can be used to
% redefine existing page styles (like \texttt{plain}) or to define new ones,
-% e.g. if part of your document needs a different page style. This command
+% e.g.\ if part of your document needs a different page style. This command
% has two mandatory parameters: the first one is the name of the page style to be defined, the
% second consists of commands that change the headers and/or footers, i.e.,
% \verb|\fancyhead| etc. Also allowed are changes to \cs{headrulewidth} and
@@ -1105,8 +1095,8 @@
% section and subsection information (section only for one-sided
% printing). \latex/ uses a marker mechanism to remember the chapter and
% section (section and subsection) information for a page; this is
-% discussed in detail in \textit{The \latex/ Companion}, Section 4.3.1, or
-% \textit{The \latex/ Companion, Second Edition}, Section 4.3.4.
+% discussed in detail in \emph{The \LaTeX{} Companion, Third Edition},
+% section 5.3.4 (Part I).
%
% There are two ways you can use and change the higher- and lower-level
% sectioning information available to you. The macros:
@@ -1263,7 +1253,7 @@
%
% As an example let's take a page layout where the leftmarks are generated by
% the sections and the rightmarks by the subsections (as is default in the
-% \texttt{article} class). Take a page with some short sections, e.g.
+% \texttt{article} class). Take a page with some short sections, e.g.,
%
% \begin{samepage}
% \noindent Section 1.\\
@@ -1294,7 +1284,7 @@
% \end{verbatim}
%
% Another problem with the marks in the standard \latex/ classes is that the
-% higher level sectioning commands (e.g. \cs{chapter}) call
+% higher level sectioning commands (e.g.\ \cs{chapter}) call
% \cs{markboth} with an empty right argument. This means that on the first
% page of a chapter (or a section in article style) the \cs{rightmark}
% will be empty. The underlying problem is that the \tex/ machinery has
@@ -1310,7 +1300,7 @@
% \cs{chapter} etc.\ commands do \emph{not} call the mark commands. So if
% you want your preface to set the header info but not be numbered nor be put in
% the table of contents, you must issue the \cs{markboth} command
-% yourself, e.g.
+% yourself, e.g.,
%
% \begin{verbatim}
% \chapter*{Preface}
@@ -1378,7 +1368,8 @@
% \footnote{If you use \texttt{11pt} or \texttt{12pt} you will probably also
% have to do this, because \LaTeX's defaults are quite small}. See the
% warning below.
-% See also Section 4.1 of the \latex/ \emph{Companion} for detail.
+% See also section 5.1 and 5.2 of the \LaTeX{} \emph{Companion, Third Edition}, (Part I)
+% for detail.
%
% For instance, the following code will place the section title and the
% subsection title of an article in two lines in the upper right hand
@@ -1626,7 +1617,7 @@
% in the neighborhood of your header/footer definitions, unless you
% already use such an \texttt{\ldots offset} command, of course.
% \vspace{\baselineskip}
-%
+%
% For the second example, we take the \amslatex/ book\footnote{George Gratzer,
% \textit{Math into LaTeX, An Introduction to \LaTeX{} and \amslatex/}, Birkhauser, Boston.}.
%
@@ -1661,18 +1652,19 @@
% \renewcommand{\footrulewidth}{0pt}
% \end{verbatim}
%
-% The font used in the headers is 9 pt bold Helvetica. The \PSNFSS\ system
-% by Sebastian Rahtz uses the short (Karl Berry) name \verb|phv| for
-% Helvetica, so this font is selected with the commands:
+% The font used in the headers is 9 pt bold Helvetica. The \textsf{PSNFSS} system
+% (originally by the late Sebastian Rahtz) uses the short (Karl Berry) name \texttt{phv} for
+% Helvetica. The more modern \LaTeX{} solution is to use the \TeX{} Gyre font
+% Heros, which uses the short name \texttt{qhv} so this font is selected with the commands^^A
+% \footnote{See \emph{The \LaTeX{} Companion, Third Edition}, Part I, section
+% 9.5.2, and Part II, section 10.8.16.}:
% \begin{verbatim}
-% \fontfamily{phv}\fontseries{b}\fontsize{9}{11}\selectfont
+% \fontfamily{qhv}\fontseries{b}\fontsize{9}{11}\selectfont
% \end{verbatim}
-% (See Sections 7.6.1 and 11.9.1 of the \latex/ \emph{Companion} or
-% Sections 7.6 and 7.9.1 of \emph{The \latex/ Companion, Second Edition}.)
% Let us define a shorthand for this:
% \begin{verbatim}
% \newcommand{\helv}{%
-% \fontfamily{phv}\fontseries{b}\fontsize{9}{11}\selectfont}
+% \fontfamily{qhv}\fontseries{b}\fontsize{9}{11}\selectfont}
% \end{verbatim}
%
% Now we are ready for the page layout:
@@ -1688,7 +1680,7 @@
% \renewcommand{\headrulewidth}{0.5pt}
% \renewcommand{\footrulewidth}{0pt}
% \newcommand{\helv}{%
-% \fontfamily{phv}\fontseries{b}\fontsize{9}{11}\selectfont}
+% \fontfamily{qhv}\fontseries{b}\fontsize{9}{11}\selectfont}
% \fancyhf{}
% \fancyhead[LE,RO]{\helv \thepage}
% \fancyhead[LO]{\helv \rightmark}
@@ -1719,6 +1711,21 @@
% \renewcommand{\headrulewidth}{\iffloatpage{0pt}{0.4pt}}
% \end{verbatim}
%
+% \textbf{NOTE:} There is also a package \TTindex{floatpag}%
+% \Package{floatpag}\footnote{\url{https://www.ctan.org/pkg/floatpag}} by Vytas
+% Statulevičius and Sigitas Tolušis that has a command
+% \cs{floatpagestyle}\marg{pagestyle}, that applies \meta{pagestyle} to
+% all float pages, where \meta{pagestyle} can be defined with
+% \cs{fancypagestyle} (or by any other means).
+%
+% \textbf{NOTE:} There is also a package \TTindex{floatpag}%
+% \Package{floatpag}\footnote{\url{https://www.ctan.org/pkg/floatpag}} by Vytas
+% Statulevičius and Sigitas Tolušis that has a command
+% \cs{floatpagestyle}\marg{pagestyle}, that applies \meta{pagestyle} to
+% all float pages, where \meta{pagestyle} can be defined with
+% \cs{fancypagestyle} (or by any other means). In some cases this might
+% be simpler than putting \cs{iffloatpage} in various headers or footers.
+%
% Sometimes you may want to change the layout also for pages that contain a
% float on the top of the page, a float on the bottom of the page or a footnote on the bottom of the page.
%
@@ -1848,12 +1855,16 @@
% \CmdIndex{pagenumbering}
%
% \begin{verbatim}
+% \clearpage
% \pagenumbering[\thesection]{bychapter}
% \end{verbatim}
%
% What the package also does is reset the page number to 1 at the beginning
% of each chapter.
%
+% In general it is advisable to give a \cs{clearpage} or
+% \cs{cleardoublepage} before changing the page numbering.
+%
% In the frontmatter of your document (for example the Table of
% Contents) there will be no chapter numbers. Therefore a simple page
% number will be used there. This may be confusing, so you might prefer to use roman pagenumbers
@@ -2601,7 +2612,7 @@
% \end{enumerate}
%
% In the first two cases you must first check if you have given the correct
-% ``placement'' parameter to you float, e.g. \Cmd{begin\{figure\}[htp]}
+% ``placement'' parameter to you float, e.g.\ \Cmd{begin\{figure\}[htp]}
% specifies that your figure may be placed either: Here (i.e., in the text
% position where the command is given), on the Top of a page (which may be
% the page where you put the command), or on a separate Page of floats. You
@@ -2660,7 +2671,7 @@
% than 50\% of the page height it will have to wait until some more floats
% are given before a float page can be filled to satisfy the
% \cs{floatpagefraction} parameter. If you have this kind of behaviour you
-% can easily adapt the parameters, e.g. with:
+% can easily adapt the parameters, e.g.\ with:
% \begin{verbatim}
% \renewcommand{\textfraction}{0.05}
% \renewcommand{\topfraction}{0.95}
@@ -2673,7 +2684,7 @@
%
% You can force \latex/ to ignore most of the parameters for one specific float
% occurrence by
-% including an exclamation mark (!) in the placement parameters, e.g.
+% including an exclamation mark (!) in the placement parameters, e.g.,
% \begin{verbatim}
% \begin{figure}[!htb]
% \end{verbatim}
@@ -2811,7 +2822,7 @@
% normal text rather than a \cs{caption}, so that it will not be entered in
% the list of figures. It may also be desirable to issue a \cs{clearpage}
% first, just like we did for the \texttt{longtable}, and to encapsulate this
-% in the \cs{afterpage} command. E.g.
+% in the \cs{afterpage} command. E.g.,
% \begin{verbatim}
% \afterpage{\clearpage\input{myfigure}}
% \end{verbatim}
@@ -2832,7 +2843,7 @@
%
% You have to make sure that the last part is big enough, otherwise \LaTeX{}
% could decide to postpone it until it has collected some more floats. This
-% can be done either by making the figure big enough (e.g. by adding some
+% can be done either by making the figure big enough (e.g.\ by adding some
% \cs{vspace}), or by tweaking the \cs{floatpagefraction}
% \CmdIndex{floatpagefraction} parameter.
%
@@ -3054,9 +3065,27 @@
% \cs{input} in headers/footers when \texttt{verbatim} is active.
% (Issue \# 8 \url{https://github.com/pietvo/fancyhdr/issues/8}.)
% \end{itemize}
+% \item Version 4.3, July 17, 2024
+% \begin{itemize}
+% \item Changed \cs{f@nch@everypar}. If the LaTeX kernel has
+% \texttt{expl3}, use \cs{tex\_everypar:D}, and reset \cs{par},
+% \cs{@@par} and \cs{endgraf} to their original \TeX{} definitions, so that
+% no paragraph hooks will intrude in \Package{fancyhdr} code\footnote
+% {See \url{https://tex.stackexchange.com/q/691262/113546}}.
+% Therefore paragraph hooks will not work inside \Package{fancyhdr} headers and
+% footers to avoid unwanted interactions with the main text.
+% \end{itemize}
+% \item % Version 4.3.1, July 23, 2024
+% \begin{itemize}
+% \item Also reset \cs{everypar} to its original \TeX{} value
+% \cs{tex\_everypar:D} in \cs{f@nch@resetpar}, otherwise environments
+% based on \cs{trivlist} will not work properly in \Package{fancyhdr}
+% headers and footers.
+% \end{itemize}
% \end{itemize}
%
%
+%
% \StopEventually{%
% \PrintChanges
% \PrintIndex}
@@ -3648,26 +3677,8 @@
\ProcessOptions*
% \end{macrocode}
%
-% \begin{macro}{\f@nch@errmsg}
-% This macro generates an error message.
-% \changes{fancyhdr v3.10}{2019/01/25}{Use \cs{f@nch@ifundefined} instead of \cs{ifx}.}
-% \changes{fancyhdr v3.10}{2019/01/25}{Use \cs{newcommand} instead of \cs{def}.}
-% \begin{macrocode}
-\newcommand\f@nch@errmsg[1]{%
- \f@nch@ifundefined{PackageError}{\errmessage{#1}}{\PackageError{fancyhdr}{#1}{}}}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\f@nch@warning}
-% This macro generates a warning.
-% \changes{fancyhdr v3.10}{2019/01/25}{Use \cs{f@nch@ifundefined} instead of \cs{ifx}.}
-% \changes{fancyhdr v3.10}{2019/01/25}{Use \cs{newcommand} instead of \cs{def}.}
-% \begin{macrocode}
-\newcommand\f@nch@warning[1]{%
- \f@nch@ifundefined{PackageWarning}{\errmessage{#1}}{\PackageWarning{fancyhdr}{#1}{}}}
-% \end{macrocode}
-% \end{macro}
-%
+% \changes{fancyhdr v4.3}{2024/05/08}{Removed \cs{f@nch@errmsg} and
+% \cs{f@nch@warning} and used \cs{PackageError} and \cs{PackageWarning} directly.}
% \begin{macro}{\f@nch@forc}
% Usage: \cs{f@nch@forc} \cs{var} \texttt{\{charstring\}\{body\}}.\\
% Execute the body for each character in \texttt{charstring} bound
@@ -3766,7 +3777,7 @@
\if@twoside\else
\iff@nch@twoside\else
\if\f@nch@@eo e%
- \f@nch@warning {\string#1's `E' option without twoside option is useless.\MessageBreak
+ \PackageWarning{fancyhdr} {\string#1's `E' option without twoside option is useless.\MessageBreak
Please consider using the `twoside' option}%
\fi\fi\fi
}
@@ -3791,8 +3802,8 @@
\f@nch@forc\tmpf@ra{#3}%
{\expandafter\f@nch@ifin\tmpf@ra{eolcrhf,EOLCRHF}%
{}{\edef\temp@c{\temp@c\tmpf@ra}}}%
- \ifx\@empty\temp@c\else \f@nch@errmsg{Illegal char `\temp@c' in
- \string#1 argument: [#3]}%
+ \ifx\@empty\temp@c\else \PackageError{fancyhdr}{Illegal char `\temp@c' in
+ \string#1 argument: [#3]}{}%
\fi \f@nch@for\temp@c{#3}%
{\f@nch@default\f@nch@@eo{eo}\temp@c
\f@nch@fancyhf@Echeck{#1}%
@@ -3827,8 +3838,8 @@
\f@nch@forc\tmpf@ra{#3}%
{\expandafter\f@nch@ifin\tmpf@ra{eolrhf,EOLRHF}%
{}{\edef\temp@c{\temp@c\tmpf@ra}}}%
- \ifx\@empty\temp@c\else \f@nch@errmsg{Illegal char `\temp@c' in
- \string#1 argument: [#3]}%
+ \ifx\@empty\temp@c\else \PackageError{fancyhdr}{Illegal char `\temp@c' in
+ \string#1 argument: [#3]}{}%
\fi \f@nch@for\temp@c{#3}%
{\f@nch@default\f@nch@@eo{eo}\temp@c
\f@nch@fancyhf@Echeck{#1}%
@@ -4000,6 +4011,14 @@
% \begin{macro}{\f@nch@raggedright}
% \begin{macro}{\f@nch@centering}
% \begin{macro}{\f@nch@everypar}
+% \changes{fancyhdr v4.3}{2024/07/17}{Changed \cs{f@nch@everypar}. If the
+% LaTeX kernel has expl3, use \cs{tex\_everypar:D}, and reset \cs{par},
+% \cs{@@par} and \cs{endgraf} to their original \TeX{} definitions, so that
+% no paragraph hooks will intrude in \Package{fancyhdr} code.}
+% \changes{fancyhdr v4.3.1}{2024/07/23}{Also reset \cs{everypar} to its
+% original \TeX{} value \cs{tex\_everypar:D} in \cs{f@nch@resetpar},
+% otherwise environments based on \cs{trivlist}
+% will not work properly in \Package{fancyhdr} headers and footers.}
% Save the standard definitions of \cs{raggedleft}, \cs{raggedright},
% \cs{centering} and \cs{everypar} so that we can reset them when we are
% typesetting the headers and footers. Some packages change these to
@@ -4008,7 +4027,23 @@
\let\f@nch@raggedleft\raggedleft
\let\f@nch@raggedright\raggedright
\let\f@nch@centering\centering
-\let\f@nch@everypar\everypar
+\ifdefined\ExplSyntaxOn
+ \ExplSyntaxOn
+ \let\f@nch@everypar\tex_everypar:D
+ \newcommand\f@nch@resetpar{%
+ \f@nch@everypar{}%
+ \cs_set_eq:NN \everypar\tex_everypar:D
+ \cs_set_eq:NN \par \tex_par:D
+ \cs_set_eq:NN \@@par \tex_par:D
+ \cs_set_eq:NN \endgraf \tex_par:D
+ }
+ \ExplSyntaxOff
+\else
+ \let\f@nch@everypar\everypar
+ \newcommand\f@nch@resetpar{%
+ \f@nch@everypar{}%
+ }
+\fi
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -4044,8 +4079,10 @@
% \changes{fancyhdr v4.2}{2024/04/19}{Reset catcodes to their default
% values in order to facilitate \cs{input} in headers/footers when \texttt{verbatim}
% is active. (Issue \# 8 \url{https://github.com/pietvo/fancyhdr/issues/8}.)}
+% \changes{fancyhdr v4.3}{2024/05/08}{Remove pre-NFSS stuff}
+% \changes{fancyhdr v4.3}{2024/07/17}{Replace \cs{f@nch@everypar} by \cs{f@nch@resetpar}.}
% \begin{macrocode}
-\def\f@nch@reset{\f@nch@everypar{}\restorecr\endlinechar=13
+\def\f@nch@reset{\f@nch@resetpar\restorecr\endlinechar=13
\catcode`\\=0\catcode`\{=1\catcode`\}=2\catcode`\$=3\catcode`\&=4
\catcode`\#=6\catcode`\^=7\catcode`\_=8\catcode`\ =10\catcode`\@=11
\catcode`\:=11\catcode`\~=13\catcode`\%=14
@@ -4061,10 +4098,8 @@
\expandafter\def\csname MakeUppercase\space\space\space\endcsname
[####1]####2{####2}%
##1}}%
- \f@nch@ifundefined{@newbaseline} % NFSS not present; 2.09 or 2e
- {\f@nch@ifundefined{@normalsize} {\normalsize} % for ucthesis.cls
- {\@normalsize}}%
- {\@newbaseline}% NFSS (2.09) present
+ \f@nch@ifundefined{@normalsize} {\normalsize} % for ucthesis.cls
+ {\@normalsize}%
}
% \end{macrocode}
% \end{macro}
@@ -4213,7 +4248,7 @@
% \begin{macrocode}
\iff@nch@check
\dimen0=#1\advance\dimen0-\ht0
- \f@nch@warning{%
+ \PackageWarning{fancyhdr}{%
\string#1 is too small (\the#1): \MessageBreak
Make it at least \the\ht0, for example:\MessageBreak
\string\setlength{\string#1}{\the\ht0}%
@@ -4309,7 +4344,7 @@
% \cs{color} command. The \cs{ignorespaces} skips initial spaces in
% the parameter, as is usual in a \cs{parbox}, for backwards compatibility.}
% We put the \cs{footrule} in a \cs{vbox} to accommodate for flexible
-% footrules (e.g. using \cs{hrulefill}), so that the \cs{headwidth} will
+% footrules (e.g.\ using \cs{hrulefill}), so that the \cs{headwidth} will
% be used as the line width. But to preserve the vertical spacing we
% then \cs{unvbox} this box.
%
@@ -4348,7 +4383,7 @@
% \end{macro}
%
% \begin{macro}{\@chapapp}
-% Define \cs{@chapapp} for classes that don't have it, e.g. amsbook
+% Define \cs{@chapapp} for classes that don't have it, e.g.\ amsbook
% \begin{macrocode}
\f@nch@ifundefined{@chapapp}{\let\@chapapp\chaptername}{}%
% \end{macrocode}
@@ -4660,9 +4695,10 @@
% \begin{macro}{\iffootnote}
% These can be used in a header/footer field to make them conditional on
% the presence of floats and/or footnotes.
+% \changes{fancyhdr v4.3}{2024/05/08}{Replace \cs{empty} with \cs{@empty}}
% \begin{macrocode}
-\newcommand\iftopfloat[2]{\ifx\topfloat\empty #2\else #1\fi}%
-\newcommand\ifbotfloat[2]{\ifx\botfloat\empty #2\else #1\fi}%
+\newcommand\iftopfloat[2]{\ifx\topfloat\@empty #2\else #1\fi}%
+\newcommand\ifbotfloat[2]{\ifx\botfloat\@empty #2\else #1\fi}%
\newcommand\iffloatpage[2]{\if@fcolmade #1\else #2\fi}%
\newcommand\iffootnote[2]{\iff@nch@footnote #1\else #2\fi}%
% \end{macrocode}
@@ -4688,10 +4724,10 @@
% \begin{macrocode}
\long\def\f@nch@pagestyle#1[#2]#3{%
\f@nch@ifundefined{ps@#2}{%
- \f@nch@errmsg{\string\fancypagestyle: Unknown base page style `#2'}%
+ \PackageError{fancyhdr}{\string\fancypagestyle: Unknown base page style `#2'}{}%
}{%
\f@nch@ifundefined{f@nch@ps@#2-is-fancyhdr}{%
- \f@nch@errmsg{\string\fancypagestyle: Base page style `#2' is not fancyhdr-based}%
+ \PackageError{fancyhdr}{\string\fancypagestyle: Base page style `#2' is not fancyhdr-based}{}%
}%
{%
\@namedef{ps@#1}{\let\f@nch@gbl\relax\@nameuse{ps@#2}#3\relax}%
diff --git a/macros/latex/contrib/fancyhdr/fancyhdr.pdf b/macros/latex/contrib/fancyhdr/fancyhdr.pdf
index 9f781dad3b..35cc4524ff 100644
--- a/macros/latex/contrib/fancyhdr/fancyhdr.pdf
+++ b/macros/latex/contrib/fancyhdr/fancyhdr.pdf
Binary files differ
diff --git a/macros/latex/contrib/fillwith/MANIFEST.md b/macros/latex/contrib/fillwith/MANIFEST.md
new file mode 100644
index 0000000000..4cfe517238
--- /dev/null
+++ b/macros/latex/contrib/fillwith/MANIFEST.md
@@ -0,0 +1,54 @@
+# Manifest for fillwith
+
+Copyright (C) Fri Aug 9 12:12:59 2024 Clea F. Rees
+
+This work may be distributed and/or modified under the conditions of the LaTeX
+Project Public License, either version 1.3c of this license or (at your option)
+any later version. The latest version of this license is in
+ https://www.latex-project.org/lppl.txt
+and version 1.3 or later is part of all distributions of LaTeX version
+2008-05-04 or later.
+
+This work has the LPPL maintenance status `maintained'.
+
+The Current Maintainer of this work is Clea F. Rees.
+
+This work consists of all files listed in manifest.txt.
+
+This file was automatically generated by `l3build manifest`.
+
+## Source files
+
+
+### Package files
+
+
+* README.md
+* MANIFEST.md
+* fillwith.dtx
+* fillwith.ins
+
+### Development files
+
+
+* build.lua
+* manifest.lua
+* tag.lua
+* fillwith-test.lvt
+* fillwith-test.luatex.tlg
+* fillwith-test.tlg
+* fillwith-test.xetex.tlg
+
+
+## Derived files
+
+
+### Package files
+
+* fillwith.sty
+* fillwith-example.tex
+
+### Typeset documentation
+
+* fillwith.pdf
+* fillwith-example.pdf
diff --git a/macros/latex/contrib/fillwith/README.md b/macros/latex/contrib/fillwith/README.md
new file mode 100644
index 0000000000..f7f1922b89
--- /dev/null
+++ b/macros/latex/contrib/fillwith/README.md
@@ -0,0 +1,32 @@
+$Id: README.md 10215 2024-08-09 11:12:21Z cfrees $
+
+# fillwith
+
+A LaTeX package for filling vertical space with something rather than nothing.
+
+Currently supported somethings are solid rules and dotted lines, with or
+without numbers. The package uses a mixture of plain-ish macros, LaTeX 2e and
+expl3 methods, but a key-value approach to configuration should make the
+document-level interface relatively sane, even if nothing else is.
+
+For details, please see fillwith.pdf. The implementation is minimally
+documented because I have no idea of how to document code.
+
+## Code Repositories
+
+Code is hosted at
+ https://codeberg.org/cfr/fillwith
+For convenience, the repository is mirrored at
+ https://github.com/cfr42/fillwith
+
+## Contact Details
+
+Bug reports, feature requests etc. should be filed at
+ https://codeberg.org/cfr/fillwith/issues
+
+
+Clea F. Rees
+Version 0.3
+2024-08-09
+
+vim: et:tw=80:
diff --git a/macros/latex/contrib/fillwith/fillwith-example.pdf b/macros/latex/contrib/fillwith/fillwith-example.pdf
new file mode 100644
index 0000000000..5af411b5e0
--- /dev/null
+++ b/macros/latex/contrib/fillwith/fillwith-example.pdf
Binary files differ
diff --git a/macros/latex/contrib/fillwith/fillwith.dtx b/macros/latex/contrib/fillwith/fillwith.dtx
new file mode 100644
index 0000000000..c066ac9dad
--- /dev/null
+++ b/macros/latex/contrib/fillwith/fillwith.dtx
@@ -0,0 +1,747 @@
+% \iffalse meta-comment
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% fillwith.dtx
+% Additions and changes Copyright (C) 2024 Clea F. Rees.
+% Code from skeleton.dtx Copyright (C) 2015-2024 Scott Pakin (see below).
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3c
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% https://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions of LaTeX
+% version 2008-05-04 or later.
+%
+% This work has the LPPL maintenance status \muaintained'.
+%
+% The Current Maintainer of this work is Clea F. Rees.
+%
+% This work consists of all files listed in manifest.txt.
+%
+% The file fillwith.dtx is a derived work under the terms of the
+% LPPL. It is based on version 2.4 of skeleton.dtx which is part of
+% dtxtut by Scott Pakin. A copy of dtxtut, including the
+% unmodified version of skeleton.dtx is available from
+% https://www.ctan.org/pkg/dtxtut and released under the LPPL.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \fi
+%
+% \iffalse
+%<*driver>
+\RequirePackage{svn-prov}
+\ProvidesFileSVN{$Id: fillwith.dtx 10202 2024-08-08 15:33:47Z cfrees $}[v0.3 \revinfo][\filename: \filebase]
+\DefineFileInfoSVN[fillwith]
+\GetFileInfoSVN*
+% ref. ateb Max Chernoff: https://tex.stackexchange.com/a/723294/
+\def\MakePrivateLetters{\makeatletter\ExplSyntaxOn\endlinechar13}
+\documentclass[british,a4paper]{ltxdoc}
+\usepackage{babel}
+\usepackage[tt={monowidth,lining,tabular},sf={lining,proportional},rm={lining,proportional}]{cfr-lm}
+\usepackage{fillwith}
+\usepackage{parskip}
+\usepackage{verbatim}
+\usepackage{graphicx}
+\usepackage{xurl}
+% sicrhau hyperindex=false: llwytho CYN bookmark
+\usepackage{hypdoc}% ateb Ulrike Fischer: https://tex.stackexchange.com/a/695555/
+\usepackage{bookmark}
+\usepackage{cleveref}
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+%^^A \OnlyDescription
+%^^A \ExplSyntaxOn
+%^^A \makeatletter
+\DoNotIndex{\verb,\ProvidesPackageSVN,\NeedsTeXFormat,\ProcessKeyOptions,\ExplSyntaxOn,\ExplSyntaxOff,\RequirePackage,\NeedsTeXFormat,\DefineFileInfoSVN,\GetInfoSVN,\@ifundefined,\@ifl@t@r\ExplLoaderFileDate,\endinput,\PackageError,\PackageWarning,\PackageInfo,\keys_define:nn,\keys_set:nn,\ProcessKeysOptionns,\author,\title,\maketitle,\date,\revinfo,\ProcessKeysOptions,\MessageBreak,\fmtversion,\documentclass,\ExplLoaderFileDate,\filebase,\fileversion,\fileinfo,\filebase:,\filedate,\documentclass,\@ifl@t@r,\begin,\end,\item,\IfFormatAtLeastTF}
+%^^A \makeatother
+%^^A \ExplSyntaxOff
+\definecolor{strawberry}{rgb}{1.000,0.000,0.502}
+\definecolor{blueberry}{rgb}{0.000,0.000,1.000}
+\definecolor{moss}{rgb}{0.000,0.502,0.251}
+\hypersetup{%
+ colorlinks=true,
+ citecolor={moss},
+ extension=pdf,
+ linkcolor={strawberry},
+ linktocpage=true,
+ pdfcreator={TeX},
+ pdfproducer={pdfeTeX},
+ urlcolor={blueberry}%
+}
+\NewDocElement[%
+ idxtype=opt.,
+ idxgroup=options,
+ printtype=\textit{opt.},
+]{Opt}{option}
+\NewDocumentCommand \val { m }
+{%
+ {\ttfamily =\,\meta{#1}}%
+}
+\ExplSyntaxOn
+\NewDocumentCommand \vals { m }
+{
+ {
+ \ttfamily = \,
+ \clist_use:nn { #1 } { \textbar }
+ }
+}
+\ExplSyntaxOff
+\setcounter{IndexColumns}{2}
+\makeatletter
+\def\@xobeysp{\leavevmode\penalty100\ }
+\makeatother
+\begin{document}
+ \DocInput{\filename}
+\end{document}
+%</driver>
+% \fi
+% \title{\filebase{} \filerev}
+% \author{Clea F. Rees}
+% \date{\filedate}
+% \maketitle
+% \begin{abstract}
+% A small package originally based on \href{https://tex.stackexchange.com/a/241139/}{Harish Kumar's answer} to a question I asked on \TeX{} SE\footnote{%
+% See \href{https://tex.stackexchange.com/a/241139/}{tex.stackexchange.com/a/241139/}.%
+% }.
+% The intended purpose was the creation of worksheets for students where I would like \LaTeX{} to use the available vertical space to provide lined areas for answers.
+% Since then, the code has been (partially) rewritten in \pkg{expl3} and extended in response to both my own needs and others' questions on \TeX{} SE.
+% The package aims to do one thing: to fill a vertical space in the same way as, say, \verb|\vfill|, but with some kind of ‘filler’ rather than empty space.
+% Currently, the package supports solid rules or dotted lines.
+% The remainder of the current line may optionally be filled in the same way and the ‘filler’ may be coloured if desired.
+%
+% Lines may optionally be numbered, though the numbered versions should not be used to fill long stretches as they are extremely inefficient.
+% \textbf{Numbered fills are highly experimental and not recommended for use in ‘real’ documents.}
+% That is, it seems to work, but I recommend using an alternative package or solution if you need a reliable numbering mechanism.
+% \end{abstract}
+%
+% \section{Load}\label{sec:pkg}
+% To use the package simply load it in your preamble in the usual way.
+%
+% \iffalse
+%<*verb>
+% \fi
+\begin{verbatim}
+ \usepackage[<options>]{fillwith}
+\end{verbatim}
+% \iffalse
+%</verb>
+% \fi
+%
+% A small number of options may be specified when loading the package.
+% See \cref{sec:config}.
+%
+% We start with an example in \cref{sec:ee}.
+% \Cref{sec:use} describes the basic commands illustrated in this example.
+% \Cref{sec:config} explains the options used by these commands, together with other customisation features of \pkg{fillwith}.
+%
+% \section{Example}\label{sec:ee}
+%
+% The code below illustrates most package features.
+%
+% \Cref{fig:ee1} demonstrates filling with rules.
+% Note the effect of altering \texttt{fillwith ht} on line-spacing.
+% \begin{figure}
+% \centering
+% \fbox{\includegraphics{fillwith-example.pdf}}
+% \caption{Filling with rules.}\label{fig:ee1}
+% \end{figure}
+%
+% \Cref{fig:ee2} shows dotted fillings.
+% Note the use of \cmd{\fillwithset} to alter the colour.
+% \begin{figure}
+% \centering
+% \fbox{\includegraphics[page=2]{fillwith-example.pdf}}
+% \caption{Filling with dotted lines.}\label{fig:ee2}
+% \end{figure}
+%
+% \Cref{fig:ee3} shows numbered fillings.
+% Note the use of \texttt{goal ht} to divide the available vertical space more-or-less equally.
+% \begin{figure}
+% \centering
+% \fbox{\includegraphics[page=3]{fillwith-example.pdf}}
+% \caption{Filling with numbered lines.}\label{fig:ee3}
+% \end{figure}
+%
+% \verbatiminput{fillwith-example.tex}
+%
+% \section{Usage}\label{sec:use}
+%
+% \DescribeMacro{\fillwith}\oarg{options}
+% \DescribeMacro{\fillwith*}
+%
+% Fill vertically with current settings, optionally modified by \meta{options}.
+% See \cref{sec:config} for \meta{options}.
+% If used in the middle of a line, the starred form fills to the end of the line first, whereas the unstarred form does not.
+%
+% \DescribeMacro{\fillwithrules}\oarg{line-spacing}
+% \DescribeMacro{\fillwithrules*}
+%
+% Convenience wrappers which just set \texttt{style = rules} and set the line-spacing to \meta{line-spacing}.
+% These macros do nothing which cannot be done using \cmd{\fillwith} and \cmd{\fillwith*}.
+%
+% \DescribeMacro{\fillwithdottedlines}\oarg{line-spacing}
+% \DescribeMacro{\fillwithdottedlines*}
+%
+% Convenience wrappers which just set \texttt{style = dots} and set the line-spacing to \meta{line-spacing}.
+% These macros do nothing which cannot be done using \cmd{\fillwith} and \cmd{\fillwith*}.
+%
+% \DescribeMacro{\fillwithnolines}\oarg{options}
+% \DescribeMacro{\fillwithnolines*}
+%
+% Fill vertically with current settings, numbering each complete line, after optionally setting \meta{options}.
+% Numbering \textbf{requires} use of these commands, as opposed to the generic \cmd{\fillwith}/\cmd{\fillwith*}.
+%
+% \section{Customisation}\label{sec:config}
+%
+% Options can be set per use, locally or globally.
+% A small number of options are implemented as package options (\cref{sec:pkg}).
+%
+% \DescribeMacro{\fillwithset}\marg{options}
+% Set local or global defaults.
+%
+% \DescribeOpt{colour}\val{colour name}
+% \DescribeOpt{color}
+% \DescribeOpt{lliw}
+%
+% Colour to be used for (solid) rules.
+%
+% Initially \texttt{gray}.
+% Available as a package option.
+%
+% \DescribeOpt{dotted color}\val{colour name}
+% \DescribeOpt{dotted colour}
+%
+% Colour to be used for dotted lines.
+%
+% Initially \texttt{black}.
+% Available as a package option.
+%
+% \DescribeOpt{cont}\vals{true,false}
+%
+% Whether to fill the remainder of any current line.
+% Generally, users will probably prefer to use the starred command forms for local usage, but this option permits modification of the package default on a local or global basis.
+%
+% Initially \texttt{false}.
+% Default is \texttt{true}.
+%
+% \DescribeOpt{fillwith~ht}\val{real positive number expressed as decimal}
+%
+% Multiplication factor for line-spacing.
+% Typically, hand-written content requires greater spacing than typewritten content.
+% This option scales the standard line-spacing.
+%
+% Initially \texttt{2}, which is also the default value.
+% Decimal values such as \texttt{1.5} are permitted.
+%
+% \DescribeOpt{goal ~ ht}\val{dimension}
+%
+% Used only by \cmd{\fillwithnolines} and \cmd{\fillwithnolines*}.
+% Sets the target dimension to fill with numbered lines.
+% If unspecified, the code tries to fill the remaining vertical space on the current page.
+% If more than one use of a \pkg{fillwith} macro is used on a single page, this option \textbf{must} be used for numbered fills to prevent a single instance taking (almost) all available space.
+% In contrast, multiple unnumbered fills can coexist on the same page without issue --- the available space will simply be divided equally between them.
+%
+% Initially unset.
+% No default.
+%
+% \DescribeOpt{no ~ font}\val{font switches}
+%
+% Font switches to apply when typesetting numbers for numbered fills.
+%
+% Initially \cmd{\normalfont}\cmd{\normalsize}, which is also the default value.
+% Note the commands used here should be switches rather than text commands -- for example, use \cmd{\bfseries} rather than \cmd{\textbf} --- since the commands should not expect an argument.
+%
+% \DescribeOpt{style}\vals{rule,dots,line,lines,rules}
+%
+% Style of fill.
+% \texttt{rule}, \texttt{line}, \texttt{rules} and \texttt{lines} are synonyms which all denote solid rules or lines.
+% \texttt{dots} uses dotted lines rather than solid rules.
+% The dots are slightly more densely packed than the standard used for dotted fills by the standard classes, as these seem a bit too widely spaced to provide ideal guidelines.
+%
+% Initially \texttt{dots}, which is also the default value.
+%
+% If an unknown value is used, the code will attempt to use two macros derived from that value.
+% The first is constructed simply by preceding \meta{value} with a backslash and the second by also appending \texttt{part}.
+% For example, if \texttt{style}\val{mystyle} is used, the code will try to use \cs{mystyle} and \cs{mystylepart} for complete and partial lines.
+% In theory, this supports filling with somewhat arbitrary content, but the implementation is untested and \textbf{should not be used in real documents}.
+%
+%
+% \changes{v0.0}{???}{First public release.}
+% \changes{\fileversion}{\filedate}{}
+%
+%
+% \MaybeStop{%
+% \PrintChanges
+% \PrintIndex
+% }
+%
+% \section{Implementation}
+%
+% You do not need to read the remainder of this document in order to install or use the package.
+%
+% \iffalse
+%<@@=fillwith>
+%<*sty>
+% \fi
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}[2021-11-15]
+\RequirePackage{svn-prov}
+\ProvidesPackageSVN[\filebase.sty]{$Id: fillwith.dtx 10202 2024-08-08 15:33:47Z cfrees $}[v0.0 \revinfo][\filebase: fill vertically with non-space]
+% this is needed only because l3doc overwrites \fileversion and \filedate
+% neither ltxdoc nor doc does this
+\DefineFileInfoSVN
+% \end{macrocode}
+% \iffalse
+% ^^A Paid â defnyddio \GetFileInfoSVN*/\GetFileInfoSVN{} yn y fan hon!!
+% \fi
+% \begin{macrocode}
+\RequirePackage{xcolor}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% copied verbatim, excepting format from Joseph Wright's' siunitx.sty under LPPL
+\@ifundefined{ExplLoaderFileDate}{%
+ \RequirePackage{expl3}%
+}{}
+% almost verbatim from siunitx.sty
+\@ifl@t@r\ExplLoaderFileDate{2022-02-24}{%
+}{%
+ \PackageError{fillwith}{Support package expl3 too old}
+ {%
+ You need to update your installation of the bundles 'l3kernel' and
+ 'l3packages'.\MessageBreak
+ Loading~fillwith~will~abort!%
+ }%
+ \endinput
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ExplSyntaxOn
+\prop_gput:Nnn \g_msg_module_name_prop { fillwith } { fillwith }
+
+% BEGIN Expl pkg option setup
+
+\keys_define:nn { fillwith }
+{
+ color .meta:n = {
+ colour = #1,
+ },
+ colour .code:n = {
+ \colorlet{fillwithcolour}{#1}
+ },
+ dotted ~ color .meta:n = {
+ dotted colour = #1,
+ },
+ dotted color .meta:n = {
+ dotted colour = #1,
+ },
+ dotted ~ colour .meta:n = {
+ dotted colour = #1,
+ },
+ dotted colour .code:n = {
+ \colorlet{fillwithdottedcolour}{#1}
+ },
+ lliw .meta:n = {
+ colour = #1,
+ },
+ colour .initial:n = gray,
+ dotted colour .initial:n = black,
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Joseph Wright: from siunitx.sty ; https://chat.stackexchange.com/transcript/message/64327823#64327823
+\providecommand \IfFormatAtLeastTF { \@ifl@t@r \fmtversion }
+\IfFormatAtLeastTF { 2022-06-01 }
+{
+ \ProcessKeyOptions [ fillwith ]
+}{
+ \RequirePackage { l3keys2e }
+ \ProcessKeysOptions { fillwith }
+}
+\IfFormatAtLeastTF { 2020-10-01 }{
+}{
+ \RequirePackage { xparse }
+ \providecommand \ExpandArgs [1]
+ { \cs_if_exist_use:c { exp_args:N #1 } }
+}
+% END Expl pkg option setup
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% BEGIN vars
+\box_new:N \l__fillwith_adj_rule_box
+\box_new:N \l__fillwith_part_rule_box
+\box_new:N \l__fillwith_tmpa_box
+\box_new:N \l__fillwith_tmpb_box
+% BEGIN coffins
+\coffin_new:N \l__fillwith_line_coffin
+\coffin_new:N \l__fillwith_lines_coffin
+\coffin_new:N \l__fillwith_part_coffin
+\coffin_new:N \l__fillwith_tmpa_coffin
+% END coffins
+% BEGIN dims
+\dim_new:N \l__fillwith_ht_dim
+\dim_new:N \l__fillwith_dp_dim
+\dim_new:N \l__fillwith_rem_dim
+\dim_new:N \l__fillwith_line_ht_dim
+\dim_new:N \l__fillwith_line_adj_hsize_dim
+\dim_set:Nn \l__fillwith_line_ht_dim { 0.4pt }
+\dim_new:N \l__fillwith_line_madj_dim
+\dim_new:N \l__fillwith_line_vadj_dim
+\dim_set_eq:NN \l__fillwith_line_vadj_dim \c_zero_dim
+\dim_new:N \l__fillwith_goal_dim
+\dim_new:N \l__fillwith_tmpa_dim
+% END dims
+\int_new:N \g__fillwith_cnt_int
+% END vars
+% BEGIN fns
+\cs_new_protected_nopar:Nn \__fillwith_style: {}
+\cs_new_protected_nopar:Nn \__fillwith_coffin_tht:N
+{
+ \dim_eval:n { \coffin_ht:N #1 + \coffin_dp:N #1 }
+}
+% BEGIN \__fillwith_hrulefill:
+\cs_new_protected_nopar:Npn \__fillwith_hrulefill_part:
+{
+ \vrule height \c_zero_dim depth \l__fillwith_line_ht_dim width 0.1pt
+}
+\cs_new_protected_nopar:Npn \__fillwith_hrulefill:
+{
+ \vrule height \c_zero_dim depth \l__fillwith_line_ht_dim width \l__fillwith_line_adj_hsize_dim
+}
+% END \__fillwith_hrulefill:
+% BEGIN \__fillwith_dottedfill:
+\cs_new_protected_nopar:Npn \__fillwith_dottedfill_part:
+{
+ \hbox to 0.33em {\hss .\hss}
+}
+\cs_new_protected_nopar:Npn \__fillwith_dottedfill:
+{
+ \leaders \hbox to 0.33em {\hss .\hss} \hfill \kern \c_zero_dim
+}
+% END \__fillwith_dottedfill:
+% END fns
+% \end{macrocode}
+% \begin{macro}{\fillwithset}
+% Wrapper command for configuration.
+% Most global or local customisation will use this as most keys are not valid package options.
+% \begin{macrocode}
+\NewDocumentCommand\fillwithset { +m }{
+ \keys_set:nn { fillwith } { #1 }
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+% BEGIN keys (+)
+\keys_define:nn { fillwith }
+{
+ cont .bool_set:N = \l__fillwith_cont_bool,
+ cont .default:n = true,
+ cont .initial:n = false,
+ fillwith~ht .tl_set:N = \l__fillwith_ht_tl,
+ fillwith~ht .initial:n = 2,
+ fillwith~ht .default:n = 2,
+ goal ~ ht .dim_set:N = \l__fillwith_goal_dim,
+ line nos .bool_set:N = \l__fillwith_nos_bool,
+ line ~ nos .bool_set:N = \l__fillwith_nos_bool,
+ line ~ nos .default:n = true,
+ line ~ nos .initial:n = false,
+ no ~ font .tl_set:N = \l__fillwith_no_font_tl,
+ no ~ font .initial:n = { \normalfont\normalsize },
+ no ~ font .default:n = { \normalfont\normalsize },
+ style .choices:nn =
+ {
+ rule, dots , line , lines , rules , unknown
+ }{
+ \if_case:w \l_keys_choice_int
+ \or: \cs_set_eq:NN \__fillwith_style: \__fillwith_hrulefill:
+ \or: \cs_set_eq:NN \__fillwith_style: \__fillwith_dottedfill:
+ \or: \cs_set_eq:NN \__fillwith_style: \__fillwith_hrulefill:
+ \or: \cs_set_eq:NN \__fillwith_style: \__fillwith_hrulefill:
+ \or: \cs_set_eq:NN \__fillwith_style: \__fillwith_hrulefill:
+ \else: \cs_set_protected_nopar:Nn \__fillwith_style: { \use:c { \l_keys_choice_tl } }
+ \fi:
+ \if_case:w \l_keys_choice_int
+ \or: \cs_set_eq:NN \__fillwith_style_part: \__fillwith_hrulefill_part:
+ \or: \cs_set_eq:NN \__fillwith_style_part: \__fillwith_dottedfill_part:
+ \or: \cs_set_eq:NN \__fillwith_style_part: \__fillwith_hrulefill_part:
+ \or: \cs_set_eq:NN \__fillwith_style_part: \__fillwith_hrulefill_part:
+ \or: \cs_set_eq:NN \__fillwith_style_part: \__fillwith_hrulefill_part:
+ \else: \cs_set_protected_nopar:Nn \__fillwith_style_part: { \use:c { \l_keys_choice_tl part } }
+ \fi:
+ },
+ style .default:n = dots,
+ style .initial:n = dots,
+}
+% END keys (+)
+%
+% BEGIN \__fillwith_fill:
+% ref: https://tex.stackexchange.com/a/241139/ Harish Kumar
+\cs_new_protected_nopar:Nn \__fillwith_fill:
+{
+ \__fillwith_measures:
+ \dim_set:Nn \l__fillwith_line_adj_hsize_dim { \hsize - \@totalleftmargin }
+ \vbox_set:Nn \l__fillwith_adj_rule_box
+ {
+ \parindent=0pt
+ \vrule height \l__fillwith_ht_dim depth \l__fillwith_dp_dim width \c_zero_dim
+ \skip_horizontal:n { \@totalleftmargin }
+ \__fillwith_style:
+ }
+ \if_mode_horizontal:
+ \bool_if:NT \l__fillwith_cont_bool
+ {
+ \leaders \box_use:N \l__fillwith_part_rule_box \hfill \kern \c_zero_dim
+ }{
+ \vrule height \l__fillwith_ht_dim depth \l__fillwith_dp_dim width \c_zero_dim
+ }
+ %^^A gweithio ond erbyn y rheolau
+ %^^A byddai'n achosi draferth, siwr o fod
+ % \tex_par:D
+ %^^A yn lle hynny, ceisio hyn - oes perygl hefyd?
+ \para_raw_end:
+ \else:
+ \unskip
+ \skip_vertical:n { \l__fillwith_dp_dim }
+ \fi:
+ \xleaders \box_use:N \l__fillwith_adj_rule_box \vfill
+ \para_end:
+ \normalcolor
+}
+% END \__fillwith_fill:
+% BEGIN \__fillwith_measures:
+\cs_new_protected_nopar:Nn \__fillwith_measures:
+{
+ \color{fillwithcolour}
+ \offinterlineskip
+ \hbox_set:Nn \l__fillwith_part_rule_box
+ {
+ \strut
+ \__fillwith_style_part:
+ \kern \c_zero_dim
+ }
+ \dim_set:Nn \l__fillwith_tmpa_dim { \box_ht:N \l__fillwith_part_rule_box }
+ \dim_set:Nn \l__fillwith_ht_dim { \l__fillwith_ht_tl \l__fillwith_tmpa_dim }
+ \box_set_ht:Nn \l__fillwith_part_rule_box { \l__fillwith_ht_dim }
+ \dim_set:Nn \l__fillwith_tmpa_dim { \box_dp:N \l__fillwith_part_rule_box }
+ % neu \fp_to_dim:n { \l__fillwith_ht_tl * \l__fillwith_tmpa_dim } ??
+ \dim_set:Nn \l__fillwith_dp_dim { \l__fillwith_ht_tl \l__fillwith_tmpa_dim }
+ \box_set_dp:Nn \l__fillwith_part_rule_box { \l__fillwith_dp_dim }
+}
+% END \__fillwith_measures:
+% BEGIN fillwith
+% \end{macrocode}
+% \begin{macro}{\fillwith}
+% The package is basically this macro.
+% \begin{macrocode}
+\NewDocumentCommand \fillwith { s o }
+{
+ \group_begin:
+ \IfValueT { #2 }
+ {
+ \keys_set:nn { fillwith } { #2 }
+ }
+ \IfBooleanTF { #1 }
+ {
+ \bool_set_true:N \l__fillwith_cont_bool
+ }{
+ \bool_set_false:N \l__fillwith_cont_bool
+ }
+ \__fillwith_fill:
+ \group_end:
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+% END fillwith
+% BEGIN fillwithrules
+% \end{macrocode}
+% \begin{macro}{\fillwithrules}
+% Simple convenience wrapper with simplified syntax for (solid) rules.
+% \begin{macrocode}
+\NewDocumentCommand \fillwithrules { s O { 2 } }
+{
+ \group_begin:
+ \IfBooleanTF { #1 }
+ {
+ \bool_set_true:N \l__fillwith_cont_bool
+ }{
+ \bool_set_false:N \l__fillwith_cont_bool
+ }
+ \keys_set:nn { fillwith } { style = rules, fillwith~ht=#2 }
+ \__fillwith_fill:
+ \group_end:
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+% END fillwithrules
+% BEGIN fillwithdottedlines
+% \end{macrocode}
+% \begin{macro}{\fillwithdottedlines}
+% Simple convenience wrapper with simplified syntax for dotted lines.
+% \begin{macrocode}
+\NewDocumentCommand \fillwithdottedlines { s O { 2 } }
+{
+ \group_begin:
+ \IfBooleanTF { #1 }
+ {
+ \bool_set_true:N \l__fillwith_cont_bool
+ }{
+ \bool_set_false:N \l__fillwith_cont_bool
+ }
+ \colorlet{fillwithcolour}{fillwithdottedcolour}
+ \keys_set:nn { fillwith } { style = dots, fillwith~ht=#2 }
+ \__fillwith_fill:
+ \group_end:
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+% END fillwithdottedlines
+% BEGIN fillwithnolines
+\cs_new_protected:Nn \__fillwith_nos: % rhybudd: ARAF ! SLOW!
+{
+ \parindent=0pt
+ \__fillwith_measures:
+ \dim_set_eq:NN \l__fillwith_line_adj_hsize_dim \linewidth
+ \vcoffin_set:Nnn \l__fillwith_line_coffin { \l__fillwith_line_adj_hsize_dim }
+ {
+ \parindent=0pt
+ \vrule height \l__fillwith_ht_dim depth \l__fillwith_dp_dim width \c_zero_dim
+ \skip_horizontal:n \c_zero_skip
+ \__fillwith_style:
+ }
+ \coffin_set_eq:NN \l__fillwith_lines_coffin \l__fillwith_line_coffin
+ \if_mode_horizontal:
+ \bool_if:NTF \l__fillwith_cont_bool
+ {
+ \leaders \box_use:N \l__fillwith_part_rule_box \hfill \kern \c_zero_dim
+ \int_gincr:N \g__fillwith_cnt_int
+ % \vcoffin_set:Nnn \l__fillwith_tmpa_coffin { 1.5em}
+ % {
+ % \l__fillwith_no_font_tl \int_to_arabic:n { \g__fillwith_cnt_int }
+ % }
+ % \coffin_mark_handle:Nnnn \l__fillwith_tmpa_coffin {B} {l} { red }
+ % \coffin_mark_handle:Nnnn \l__fillwith_tmpa_coffin {b} {l} { green }
+ % \coffin_attach:NnnNnnnn \l__fillwith_lines_coffin {B} {r} \l__fillwith_tmpa_coffin {B} {l} {2.5pt} { \l__fillwith_ht_dim + \l__fillwith_dp_dim }
+ % \coffin_mark_handle:Nnnn \l__fillwith_lines_coffin {T} {r} { blue }
+ % \coffin_mark_handle:Nnnn \l__fillwith_lines_coffin {t} {r} { magenta }
+ \dim_set:Nn \l__fillwith_line_vadj_dim { \l__fillwith_dp_dim }
+ }{
+ \vrule height \l__fillwith_ht_dim depth \l__fillwith_dp_dim width \c_zero_dim
+ }
+ \dim_set:Nn \l__fillwith_line_madj_dim { \@totalleftmargin }
+ \para_raw_end:
+ \else:
+ \dim_set_eq:NN \l__fillwith_line_madj_dim \c_zero_dim
+ \unskip
+ \skip_vertical:n { \l__fillwith_dp_dim }
+ \fi:
+ \int_gincr:N \g__fillwith_cnt_int
+ \vcoffin_set:Nnn \l__fillwith_tmpa_coffin { 1.5em}
+ {
+ \l__fillwith_no_font_tl \int_to_arabic:n { \g__fillwith_cnt_int }
+ }
+ \coffin_attach:NnnNnnnn \l__fillwith_lines_coffin {B} {r} \l__fillwith_tmpa_coffin {B} {l} {2.5pt} {\c_zero_dim}
+ \dim_set:Nn \l__fillwith_rem_dim
+ {
+ \l__fillwith_goal_dim -\footskip - \pagetotal
+ }
+ \dim_until_do:nNnn { \__fillwith_coffin_tht:N \l__fillwith_lines_coffin } > { \l__fillwith_rem_dim - \l__fillwith_ht_dim - \l__fillwith_dp_dim }
+ {
+ \coffin_join:NnnNnnnn \l__fillwith_lines_coffin { b } { l } \l__fillwith_line_coffin { t } { l } { \c_zero_dim } { \c_zero_dim }
+ \int_gincr:N \g__fillwith_cnt_int
+ \vcoffin_set:Nnn \l__fillwith_tmpa_coffin {1.5em}
+ {
+ \l__fillwith_no_font_tl \int_to_arabic:n { \g__fillwith_cnt_int }
+ }
+ \coffin_attach:NnnNnnnn \l__fillwith_lines_coffin {B} {r} \l__fillwith_tmpa_coffin {B} {l} {2.5pt} {\c_zero_dim}
+ }
+ \coffin_typeset:Nnnnn \l__fillwith_lines_coffin { B } { l } { \l__fillwith_line_madj_dim } { \l__fillwith_line_vadj_dim }
+ \para_end:
+ \normalcolor
+}
+% \end{macrocode}
+% \begin{macro}{\fillwithnolines}
+% Provisional experimental macro for numbered fill.
+% \begin{macrocode}
+\NewDocumentCommand \fillwithnolines { s O { } }
+{
+ \group_begin:
+ \IfBooleanTF { #1 }
+ {
+ \bool_set_true:N \l__fillwith_cont_bool
+ }{
+ \bool_set_false:N \l__fillwith_cont_bool
+ }
+ \keys_set:nn { fillwith } { goal ~ ht = \pagegoal, #2 }
+ \__fillwith_nos:
+ \group_end:
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+% END fillwithnolines
+\ExplSyntaxOff
+% \end{macrocode}
+% \iffalse
+%</sty>
+% \fi
+%
+% \subsection{Demonstration}
+%
+% Simple example to demonstrate usage.
+%
+% \iffalse
+%<*ee>
+% \fi
+% \begin{macrocode}
+\listfiles
+\documentclass[british,a6paper]{article}
+\usepackage{babel}
+\usepackage[scale=.85,marginparwidth=0pt,marginparsep=0pt]{geometry}
+\usepackage{fillwith}
+\usepackage{cfr-lm}
+\begin{document}
+\author{A. N. Author}
+\title{\texttt{fillwith} Demo}
+\maketitle
+\begin{enumerate}
+ \item What is the answer to the question?
+ \fillwithrules
+ \item How did you answer the previous question?
+ \fillwith*[style=line]
+ \item Why answer?
+
+ \fillwith*[style=rule,fillwith ht=1.25,colour=blue!40!cyan]
+ \clearpage
+ \item Evaluate your responses so far.
+ \fillwithdottedlines
+ \item Evaluate your responses so far.
+
+ {%
+ \fillwithset{dotted colour=magenta}%
+ \fillwithdottedlines[1.5]
+ }
+ \item Criticise your evaluation.
+ \fillwithdottedlines*
+ \clearpage
+ \item Assess your answers.
+ \fillwithnolines[goal ht = .33\textheight]
+ \item Assess your answers.
+
+ \fillwithnolines[style=rules,no font=\bfseries\tiny,colour=green!50!gray,goal ht = .67\textheight]
+ \item Summarise your analysis.
+ \fillwithnolines*
+\end{enumerate}
+
+\end{document}
+% \end{macrocode}
+% \iffalse
+%</ee>
+% \fi
+% \subsection{Other}
+% \iffalse
+%<*other>
+% \fi
+% \begin{macrocode}
+% \end{macrocode}
+% \iffalse
+%</other>
+% \fi
+%\Finale
diff --git a/macros/latex/contrib/fillwith/fillwith.ins b/macros/latex/contrib/fillwith/fillwith.ins
new file mode 100644
index 0000000000..2f7f4c576c
--- /dev/null
+++ b/macros/latex/contrib/fillwith/fillwith.ins
@@ -0,0 +1,68 @@
+%% $Id: fillwith.ins 10202 2024-08-08 15:33:47Z cfrees $
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% fillwith.ins
+%% Additions and changes Copyright (C) 2024 Clea F. Rees.
+%% Code from skeleton.ins Copyright (C) 2015-2024 Scott Pakin (see below).
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008-05-04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Clea F. Rees.
+%%
+%% This work consists of all files listed in manifest.txt.
+%%
+%% The file fillwith.ins is a derived work under the terms of the
+%% LPPL. It is based on version 2.4 of skeleton.ins which is part of
+%% dtxtut by Scott Pakin. A copy of dtxtut, including the
+%% unmodified version of skeleton.ins is available from
+%% https://www.ctan.org/pkg/dtxtut and released under the LPPL.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\input docstrip.tex
+\keepsilent
+
+%% ???
+\usedir{tex/latex/fillwith}
+
+\declarepreamble\safonol
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Copyright (C) 2024 Clea F. Rees.
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either version 1.3c
+of this license or (at your option) any later version.
+The latest version of this license is in
+ https://www.latex-project.org/lppl.txt
+and version 1.3c or later is part of all distributions of LaTeX
+version 2008-05-04 or later.
+
+This work has the LPPL maintenance status `maintained'.
+
+The Current Maintainer of this work is Clea F. Rees.
+
+This file may only be distributed together with a copy of the package
+fillwith. You may however distribute the package fillwith without
+such generated files.
+
+This work consists of all files listed in manifest.txt.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endpreamble
+
+% \askonceonly
+\askforoverwritefalse
+
+\usepreamble\safonol
+
+\generate{\file{fillwith.sty}{\from{fillwith.dtx}{sty}}
+ \file{fillwith-example.tex}{\from{fillwith.dtx}{ee}}
+}
+
+
+\endbatchfile
diff --git a/macros/latex/contrib/fillwith/fillwith.pdf b/macros/latex/contrib/fillwith/fillwith.pdf
new file mode 100644
index 0000000000..77fa2ccc00
--- /dev/null
+++ b/macros/latex/contrib/fillwith/fillwith.pdf
Binary files differ
diff --git a/macros/latex/contrib/fontscale/CHANGELOG.md b/macros/latex/contrib/fontscale/CHANGELOG.md
index 9706fbbe09..46a32e8fc9 100644
--- a/macros/latex/contrib/fontscale/CHANGELOG.md
+++ b/macros/latex/contrib/fontscale/CHANGELOG.md
@@ -7,6 +7,58 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
## [Unreleased]
+## [v2.1.0] - 2024-08-12
+
+### Changed
+- Documentation improvements.
+
+### Added
+- `\CurrentFontSizeCommand`
+
+## [v2.0.0] - 2024-08-02
+
+### Changed
+- This update includes many changes that are backwards incompatible.
+- The documentation has been completely rewritten.
+- Package description changed from "A user interface for setting document font
+ sizes" to "A flexible interface for setting font sizes".
+- The code no longer uses `\@setfontsize`.
+- The font size commands provided by this package now do nothing, except issue
+ a warning, if used in math mode.
+- The base font size of the musical typographic scale is now set by the new key
+ `musical/base`.
+- `\PrintFontParameters` renamed to `\PrintFontSizeParameters`.
+- `\PrintAllFontParameters` renamed to `\PrintAllFontSizeParameters`.
+- `\PrintSampleText` uses a `+m`- instead of an `O`-type argument.
+- `\PrintFontSizeCommand` prints `\undefined` instead of `UNDEFINED`.
+- `\fontscalesetup` is now removed in `\text_purify:n`.
+
+### Removed
+- Keys `typographic-scale=modular` and `modular`.
+- Key `ignore-order` (no support for using `\tiny` to `\Huge` in the wrong
+ order).
+- Key `reset` (very rarely used).
+- Public `prop` variables for each font size command from `\tiny` to `\Huge`.
+ (They are redundant with the other public variables and programmers will very
+ likely prefer using their own `prop` variables.)
+
+### Added
+- `\fontscalesetup` now has an optional starred argument which first resets the
+ keys to their initial values.
+- Key `musical/base` (explained earlier).
+- The package commands now issue a user-friendly error message if the font size
+ is a zero or negative length.
+- The package commands now issue an error if the font baselineskip is less than
+ the font size.
+- The package commands that would produce a low-level error if used in math
+ mode now issue a user-friendly error message instead.
+
+### Fixed
+- Now correctly checks that the package requires `LaTeX2e` version 2023-11-01
+ or newer.
+- The keys `<font size command>` no longer incorrectly treat a `/` within a
+ brace group as the delimiter.
+
## [v1.3.0] - 2024-05-17
### Added
@@ -18,7 +70,7 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
### Changed
- The code now regularly uses `V`- and `v`-type arguments to get the value of a
variable.
-- The code now uses private `expl3` wrappers around the LaTeX2e commands
+- The code now uses private `expl3` wrappers around the `LaTeX2e` commands
`\@setfontsize`, `\fontsize`, and `\selectfont`.
## [v1.2.2] - 2024-04-29
diff --git a/macros/latex/contrib/fontscale/README.txt b/macros/latex/contrib/fontscale/README.txt
index 292cfada9b..d6c9224ee0 100644
--- a/macros/latex/contrib/fontscale/README.txt
+++ b/macros/latex/contrib/fontscale/README.txt
@@ -1,4 +1,4 @@
-Package: fontscale -- A user interface for setting document font sizes
+Package: fontscale -- A flexible interface for setting font sizes
Copyright: 2024 (c) Oliver Beery <beeryoliver@gmail.com>
CTAN: https://ctan.org/pkg/fontscale
Repository: https://github.com/beeryoliver/fontscale
diff --git a/macros/latex/contrib/fontscale/beery.cls b/macros/latex/contrib/fontscale/beery.cls
index 4777c06a8e..f2fd7fd2c5 100644
--- a/macros/latex/contrib/fontscale/beery.cls
+++ b/macros/latex/contrib/fontscale/beery.cls
@@ -1,71 +1,84 @@
-% Note: This documentclass is designed ONLY for the document 'fontscale-manual'. Compiled using LuaLaTeX.
+% Note: This class is designed ONLY for 'fontscale.tex'. Compiled with LuaTeX.
-% The 2023-06-01 LaTeX kernel update added the 'shipout' hook.
-\NeedsTeXFormat{LaTeX2e}[2023-06-01]
+% LaTeX2e version 2023-11-01 added \IfExplAtLeastTF.
+\NeedsTeXFormat{LaTeX2e}[2023-11-01]
\ProvidesExplClass
{beery}
- {2024-04-21}
+ {2024-08-12}
{}
{}
-\RequirePackage { fix-cm }
\LoadClass { article }
+
+\box_new:N \l__beery_tmp_box
+
\RequirePackage { fontscale }
\fontscalesetup { musical }
-\RequirePackage [ list-final-separator = { ,~ and~ } ] { siunitx }
+\RequirePackage { siunitx }
+\sisetup { list-final-separator = { ,~ and~ } , mode = match }
\RequirePackage { mathtools }
\RequirePackage [ shortcuts , allowbreakbefore ] { extdash }
\RequirePackage { csquotes }
+\RequirePackage { lmodern }
% CUSTOM MACROS
+\tl_const:Nn \c_beery_alphabet_tl { abcdefghijklmnopqrstuvwxyz }
+\NewExpandableDocumentCommand \alphabet { } { \c_beery_alphabet_tl }
\NewDocumentCommand \Key { m o o }
{
+ \mode_leave_vertical:
\group_begin:
\ttfamily
- \bool_case:nF
+ \IfNoValueTF {#3}
{
- {
- \bool_lazy_and_p:nn
- { \tl_if_novalue_p:n {#2} }
- { \tl_if_novalue_p:n {#3} }
- }
- {#1}
- {
- \bool_lazy_and_p:nn
- { ! \tl_if_novalue_p:n {#2} }
- { \tl_if_novalue_p:n {#3} }
- }
- { #1~ =~ #2 }
- {
- \bool_lazy_and_p:nn
- { ! \tl_if_novalue_p:n {#2} }
- { ! \tl_if_novalue_p:n {#3} }
- }
- { #1~ =~ #2 \hspace* { \fill } \makebox { initial~ =~ #3 } }
+ \IfNoValueTF {#2}
+ {#1}
+ { #1 $\,=\,$ \allowbreak #2 }
}
- { \errmessage { invalid } }
+ { #1 $\,=\,$ #2 \hspace* { \fill } \hbox:n { initial $\,=\,$ #3 } }
\group_end:
}
+\NewDocumentCommand \Value { m } { \texttt {#1} }
\NewDocumentCommand \cmd { m } { \texttt { \token_to_str:N #1 } \@ }
\NewDocumentCommand \cs { m } { \texttt { \token_to_str:c {#1} } \@ }
\NewDocumentCommand \marg { m }
- { \allowbreak \texttt { \c_left_brace_str #1 \c_right_brace_str } }
-\NewDocumentCommand \oarg { m } { \allowbreak \texttt { [ #1 ] } }
-\NewDocumentCommand \meta { m } { \texttt { \textlangle #1 \textrangle } }
+ {
+ \allowbreak
+ \texttt { \c_left_brace_str }
+ $\langle$
+ { \normalfont \itshape #1 }
+ $\rangle$
+ \texttt { \c_right_brace_str }
+ }
+\NewDocumentCommand \oarg { m }
+ {
+ \allowbreak
+ \texttt { [ }
+ $\langle$
+ { \normalfont \itshape #1 }
+ $\rangle$
+ \texttt { ] }
+ }
+\NewDocumentCommand \sarg { } { $\langle$ \texttt {*} $\rangle$ }
+\NewDocumentCommand \meta { m }
+ {
+ $\langle$
+ { \normalfont \itshape #1 }
+ $\rangle$
+ }
\NewDocumentCommand \cls { m } { \textsf {#1} }
\NewDocumentCommand \env { m } { \texttt {#1} }
\NewDocumentCommand \pkg { m } { \textsf {#1} }
-\NewDocumentCommand \filex { m } { \texttt {#1} \@ }
\NewDocumentCommand \latin { m } { \textit {#1} }
% PAGE STYLE
-\hbox_set:Nn \l_tmpa_box { abcdefghijklmnopqrstuvwxyz }
-\dim_const:Nn \c_beery_alphabet_dim { \box_wd:N \l_tmpa_box }
+\hbox_set:Nn \l__beery_tmp_box { \c_beery_alphabet_tl }
+\dim_const:Nn \c_beery_alphabet_dim { \box_wd:N \l__beery_tmp_box }
+\dim_log:N \c_beery_alphabet_dim
-\dim_const:Nn \c_beery_big_dim
- { \fp_to_dim:n { \l_fontscale_normalsize_size_dim * 10 / 7 } }
+\dim_const:Nn \c_beery_big_dim { \l_fontscale_normalsize_baselineskip_skip }
\dim_const:Nn \c_beery_medium_dim { \c_beery_big_dim / 2 }
\dim_const:Nn \c_beery_small_dim { \c_beery_big_dim / 4 }
\skip_const:Nn \c_beery_big_skip
@@ -85,12 +98,15 @@
\skip_set:Nn \topskip { \l_fontscale_normalsize_size_dim }
\skip_set_eq:NN \splittopskip \topskip
-\RequirePackage
- [
- letterpaper
- , textwidth = \dim_eval:n { \fp_use:N \c_e_fp \c_beery_alphabet_dim }
+\RequirePackage { geometry }
+\geometry
+ {
+ a4paper
+ , textwidth =
+ \dim_eval:n { \fp_to_dim:n { \c_e_fp * \c_beery_alphabet_dim } }
, textheight =
- \dim_eval:n { \fp_eval:n { \c_e_fp * 1.6180 } \c_beery_alphabet_dim }
+ \dim_eval:n
+ { \fp_to_dim:n { 1.6180 * \c_e_fp * \c_beery_alphabet_dim } }
, heightrounded
, centering
, headheight = \l_fontscale_footnotesize_baselineskip_skip
@@ -98,8 +114,7 @@
, footskip =
\dim_eval:n
{ \c_beery_big_dim + \l_fontscale_footnotesize_baselineskip_skip }
- ]
- { geometry }
+ }
\RequirePackage { fancyhdr }
\pagestyle { fancy }
@@ -111,14 +126,22 @@
% PARAGRAPH STYLE
\nonfrenchspacing
-\linespread { \fp_eval:n { 25 / 21 } }
-\RequirePackage [ skip = \c_beery_medium_skip ] { parskip }
+\linespread { 1 }
+\skip_set_eq:NN \parskip \c_beery_medium_skip
+\dim_zero:N \parindent
\RequirePackage [ raggedrightboxes ] { ragged2e }
\skip_set:Nn \RaggedRightRightskip { 0pt plus 0.5 \linewidth }
+\dim_zero:N \RaggedRightParindent
+\dim_set_eq:NN \JustifyingParindent \RaggedRightParindent
\RaggedRight
+\int_set:Nn \pretolerance { -1 }
+\int_set:Nn \tolerance { 200 }
+\dim_zero:N \emergencystretch
\int_set:Nn \widowpenalty { 10000 }
\int_set_eq:NN \clubpenalty \widowpenalty
\int_set_eq:NN \displaywidowpenalty \widowpenalty
+\int_set:Nn \hyphenpenalty { 99 }
+\int_set_eq:NN \exhyphenpenalty \hyphenpenalty
% HEADINGS, TABLE OF CONTENTS
@@ -129,32 +152,34 @@
\titlespacing* \section % section
{ 0pt } % indent
{
- \fp_eval:n { 4 / 3 } \c_beery_medium_dim
- plus \fp_eval:n { 1 / 2 * 4 } \c_beery_medium_dim
- minus \fp_eval:n { 1 / 3 / 4 } \c_beery_medium_dim
+ - \parskip
+ + \c_beery_big_dim
+ plus \fp_eval:n { 1 / 2 * 4 } \c_beery_big_dim
+ minus \fp_eval:n { 1 / 3 / 4 } \c_beery_big_dim
} % before
- { \c_beery_medium_skip } % after
+ { - \parskip + \c_beery_medium_skip } % after
\titlespacing* \subsection
{ 0pt }
{
- \fp_eval:n { 4 / 3 } \c_beery_medium_dim
+ - \parskip
+ + \fp_eval:n { 4 / 3 } \c_beery_medium_dim
plus \fp_eval:n { 1 / 2 * 4 } \c_beery_medium_dim
minus \fp_eval:n { 1 / 3 / 4 } \c_beery_medium_dim
}
- { \c_beery_medium_skip }
+ { - \parskip + \c_beery_medium_skip }
\titleformat \section % section
[ block ] % shape
{ \raggedright \large \bfseries } % format
- { \thesection . } % label
- { 0.5em } % the horizontal separation between label and title body
+ { \thesection } % label
+ { 1em } % the horizontal separation between label and title body
{ } % before code
{ } % after code
\titleformat \subsection
[ block ]
{ \raggedright \normalsize \bfseries }
- { \thesubsection . }
- { 0.5em }
+ { \thesubsection }
+ { 1em }
{ }
{ }
@@ -181,7 +206,10 @@
{
\par
\IfBooleanTF #1
- { \int_compare:nNnT { \prevgraf } = { 1 } { \nobreak \@afterheading } }
+ {
+ \int_compare:nNnT { \prevgraf } = { 1 }
+ { \nobreak \@afterheading }
+ }
{ \nobreak \@afterheading }
}
\NewDocumentCommand \listheading { m }
@@ -189,7 +217,8 @@
\par
#1
\par
- \int_compare:nNnT { \prevgraf } = { 1 } { \nobreak \@afterheading }
+ \int_compare:nNnT { \prevgraf } = { 1 }
+ { \nobreak \@afterheading }
\vspace { \skip_eval:n { \c_beery_small_skip - \parskip } }
}
@@ -215,7 +244,10 @@
\coffin_new:N \l__beery_footnote_coffin
% 1.2 = baselineskip-size-ratio
\dim_const:Nn \c_beery_footnote_baselineheight_dim
- { \fp_eval:n { 1.2 * \f@linespread - 1 } \l_fontscale_footnotesize_size_dim }
+ {
+ \fp_to_dim:n
+ { ( 1.2 * \f@linespread - 1 ) * \l_fontscale_footnotesize_size_dim }
+ }
\RenewDocumentCommand \@makefntext { +m }
{
\vcoffin_set:Nnn \l__beery_footnote_coffin { \textwidth }
@@ -224,8 +256,10 @@
{
\dim_set:Nn \leftmargin
{
- \fp_eval:n { ( 1 - \l_fontscale_footnotesize_scale_fp ) / 2 }
- \textwidth
+ \fp_to_dim:n
+ {
+ ( 1 - \l_fontscale_footnotesize_scale_fp ) / 2 * \textwidth
+ }
}
\dim_set_eq:NN \rightmargin \leftmargin
\dim_set:Nn \labelsep { 0.5em }
@@ -242,4 +276,5 @@
\AddToHook { shipout / lastpage } { \label { LastPage } }
\RequirePackage { xurl }
-\RequirePackage [ bookmarksnumbered , hidelinks , linktoc = page ] { hyperref } \ No newline at end of file
+\RequirePackage { hyperref }
+\hypersetup { bookmarksnumbered , hidelinks , linktoc = page } \ No newline at end of file
diff --git a/macros/latex/contrib/fontscale/fontscale-manual-table-classic.tex b/macros/latex/contrib/fontscale/fontscale-manual-table-classic.tex
deleted file mode 100644
index 029d304d82..0000000000
--- a/macros/latex/contrib/fontscale/fontscale-manual-table-classic.tex
+++ /dev/null
@@ -1,39 +0,0 @@
-\ProvidesFile
- {fontscale-manual-table-classic.tex}
- [2024-04-15]
-
-\begin{table}
- \centering
- \caption
- {%
- The size of each font size command in \unit{pt} when using a classic typographic scale.%
- \label{table:classicscales}%
- }
- \bigskip
- \begin{tblr}
- {
- colspec=
- {
- l
- Q[si={table-format=3.2},c]
- Q[si={table-format=3.2},c]
- Q[si={table-format=3.2},c]
- }
- , cell{1}{2-Z}={guard}
- }
- \toprule
- Command & \Key{classic-10pt} & \Key{classic-11pt} & \Key{classic-12pt} \\
- \midrule
- \cs{tiny} & 6 & 7 & 8 \\
- \cs{scriptsize} & 7 & 8 & 9 \\
- \cs{footnotesize} & 8 & 9 & 10 \\
- \cs{small} & 9 & 10 & 11 \\
- \cs{normalsize} & 10 & 11 & 12 \\
- \cs{large} & 11 & 12 & 14 \\
- \cs{Large} & 12 & 14 & 16 \\
- \cs{LARGE} & 14 & 16 & 18 \\
- \cs{huge} & 16 & 18 & 21 \\
- \cs{Huge} & 18 & 21 & 24 \\
- \bottomrule
- \end{tblr}
-\end{table} \ No newline at end of file
diff --git a/macros/latex/contrib/fontscale/fontscale-manual-table-font-steps.tex b/macros/latex/contrib/fontscale/fontscale-manual-table-font-steps.tex
deleted file mode 100644
index 8c5cc8c141..0000000000
--- a/macros/latex/contrib/fontscale/fontscale-manual-table-font-steps.tex
+++ /dev/null
@@ -1,38 +0,0 @@
-\ProvidesFile
- {fontscale-manual-table-font-steps.tex}
- [2024-04-15]
-
-\begin{table}
- \centering
- \caption
- {%
- The step of each font size command.
- These are constants and cannot be changed.%
- \label{table:fontsteps}%
- }
- \bigskip
- \begin{tblr}
- {
- colspec=
- {
- l
- Q[si={table-format=3.2},c]
- }
- , cell{1}{2}={guard}
- }
- \toprule
- Command & Step \\
- \midrule
- \cs{tiny} & -4 \\
- \cs{scriptsize} & -3 \\
- \cs{footnotesize} & -2 \\
- \cs{small} & -1 \\
- \cs{normalsize} & 0 \\
- \cs{large} & 1 \\
- \cs{Large} & 2 \\
- \cs{LARGE} & 3 \\
- \cs{huge} & 4 \\
- \cs{Huge} & 5 \\
- \bottomrule
- \end{tblr}
-\end{table} \ No newline at end of file
diff --git a/macros/latex/contrib/fontscale/fontscale-manual-table-modular-musical.tex b/macros/latex/contrib/fontscale/fontscale-manual-table-modular-musical.tex
deleted file mode 100644
index 306578ec35..0000000000
--- a/macros/latex/contrib/fontscale/fontscale-manual-table-modular-musical.tex
+++ /dev/null
@@ -1,38 +0,0 @@
-\ProvidesFile
- {fontscale-manual-table-modular-musical.tex}
- [2024-04-15]
-
-\begin{table}
- \centering
- \caption
- {%
- The size of each font size command when using a modular or musical typographic scale with the initial settings.
- The font sizes are in \unit{pt} and rounded to two decimal places.%
- }
- \bigskip
- \begin{tblr}
- {
- colspec=
- {
- l
- Q[si={table-format=3.2},c]
- Q[si={table-format=3.2},c]
- }
- , cell{1}{2-3}={guard}
- }
- \toprule
- Command & \Key{modular} & \Key{musical} \\
- \midrule
- \cs{tiny} & 6.24 & 5.74 \\
- \cs{scriptsize} & 7.02 & 6.60 \\
- \cs{footnotesize} & 7.90 & 7.58 \\
- \cs{small} & 8.89 & 8.71 \\
- \cs{normalsize} & 10 & 10 \\
- \cs{large} & 11.25 & 11.49 \\
- \cs{Large} & 12.66 & 13.20 \\
- \cs{LARGE} & 14.24 & 15.16 \\
- \cs{huge} & 16.02 & 17.41 \\
- \cs{Huge} & 18.02 & 20 \\
- \bottomrule
- \end{tblr}
-\end{table} \ No newline at end of file
diff --git a/macros/latex/contrib/fontscale/fontscale-manual.pdf b/macros/latex/contrib/fontscale/fontscale-manual.pdf
deleted file mode 100644
index 2637ef9c1f..0000000000
--- a/macros/latex/contrib/fontscale/fontscale-manual.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/fontscale/fontscale-manual.tex b/macros/latex/contrib/fontscale/fontscale-manual.tex
deleted file mode 100644
index 9917636a04..0000000000
--- a/macros/latex/contrib/fontscale/fontscale-manual.tex
+++ /dev/null
@@ -1,390 +0,0 @@
-\documentclass{beery}
-
-\begin{document}
-
-
-\section*
- {%
- \SetFontStep*{1}%
- The \pkg{fontscale} package%
- }
-
-A user interface for setting document font sizes
-
-Oliver Beery
-
-Version 1.3.0\quad{}17 May 2024
-
-
-\section{Introduction}
-\label{sec:intro}
-
-\subsection{About}
-\label{subsec:about}
-
-\listheading{The \pkg{fontscale} package provides the following functionalities:}
-\begin{itemize}
- \item
- Set font sizes via a classic, modular, or musical typographic scale.
- \item
- Set arbitrary sizes and baselineskips for the standard font size commands \cs{tiny}, \cs{scriptsize}, \cs{footnotesize}, \cs{small}, \cs{normalsize}, \cs{large}, \cs{Large}, \cs{LARGE}, \cs{huge}, and \cs{Huge}.
- \item
- Set the font size settings mid\-/document or within a local group.
- \item
- Set the font size by setting the font step, scale, or size.
- \item
- Set the font size relative to the current font size.
- \item
- Use the current font step, scale, size, and baselineskip directly, for example, for printing or within calculations.
- \item
- Print sample text to test different font sizes.
- \item
- For advanced users, store the step, scale, size, and baselineskip of each font size command in \pkg{expl3} variables.
-\end{itemize}
-
-\subsection{Loading the package}
-\label{subsec:loading}
-
-This package requires the 10 October 2023 \pkg{l3kernel} update.
-You may need to ensure that your \LaTeX{} installation is up\-/to\-/date before using this package.
-
-This package lets the user set arbitrary font sizes.
-This works with most fonts produced today, but, for historical reasons, the default Computer Modern font is available only in a number of fixed sizes.
-If you get a warning that Computer Modern is not available in the requested size, you may need to add the code \cs{RequirePackage{fix-cm}} before \cs{documentclass} to make Computer Modern available at arbitrary font sizes.
-
-\cs{usepackage}\marg{fontscale}
-\nopagebreak\newline
-\cs{fontscalesetup}\marg{\meta{keyval list}}
-
-Load the \pkg{fontscale} package via the usual command in the document preamble.
-This package has no package options.
-Instead, the package keys are set up via the command \cs{fontscalesetup}\marg{\meta{keyval list}}.
-\meta{keyval list} must receive a comma\-/separated list of keys and their associated values.
-The package keys are documented in \S\ref{sec:choosing} and \S\ref{sec:overwriting}.
-
-Many \LaTeX{} document classes have a font size option (\Key{10pt}, \Key{11pt}, \Key{12pt}, etc.\@) which not only changes the set of document font sizes, but also modifies additional settings such as the page layout and vertical spacing which were specifically designed to work with those font sizes.
-For this reason, you may want to set the document class font size option close to the value of \cs{normalsize} set by this package.
-
-Internally, this package sets up each font size command from \cs{tiny} to \cs{Huge} using the kernel command \cs{@setfontsize}\---they have no additional functionality beyond that of \cs{@setfontsize}.
-Unlike the standard document classes, the font size commands set up by this package do not change the vertical spacing for displayed math and list structures.
-If the user would like to add this functionality or perhaps other features to the font size commands, they can do so via hooks, which are documented in the \LaTeX{} kernel.
-
-\subsection{Terminology}
-\label{subsec:terminology}
-
-When using the \pkg{fontscale} package, each font size, including the standard font size commands from \cs{tiny} to \cs{Huge}, has a step, scale, size, and baselineskip.
-The latter two parameters are the familiar first and second arguments to the low\-/level font command \cs{fontsize}\marg{\meta{dimen}}\marg{\meta{skip}}.
-The font scale is the relative font size; the ratio of the font size to \cs{normalsize}.
-The font step is the number of font size gradations from \cs{normalsize}, which has a step of \num{0}.
-Table~\ref{table:fontsteps} lists the font step of each font size command.
-
-\input{./fontscale-manual-table-font-steps.tex}
-
-This package defines many keys and commands that take as a value or argument a \meta{dim expr}, \meta{skip expr}, \meta{fp expr}, or \meta{int expr}.
-This syntax is short for a dimen, skip, floating point, or integer expression, respectively.
-See \pkg{usrguide} \S5 for more information.%
-\footnote{\url{https://ctan.org/pkg/usrguide}}
-
-
-\section{Choosing the typographic scale}
-\label{sec:choosing}
-
-\Key{typographic-scale}
- [classic-10pt, classic-11pt, classic-12pt, modular, musical]
- [classic-10pt]
-\newline
-\Key{modular/ratio}[\meta{fp expr}][1.125]
-\newline
-\Key{musical/ratio}[\meta{fp expr}][2]%
-\nopagebreak\newline
-\Key{musical/notes}[\meta{int expr}][5]
-
-The key \Key{typographic\-/scale} sets the font sizes using a classic, modular, or musical typographic scale.
-These are common methods of choosing a set of document font sizes.
-The choice of typographic scale initializes to \Key{classic\-/10pt}.
-
-The key \Key{typographic\-/scale} can also be set in a condensed format via the keys \Key{classic\-/10pt}, \Key{classic\-/11pt}, \Key{classic\-/12pt}, \Key{modular}, or \Key{musical}, which set the key \Key{typographic\-/scale} to the corresponding value.
-
-The classic typographic scale consists of the traditional font sizes
-\numlist{6;7;8;9;10;11;12;14;16;18;21;24;36;48;60;72}.%
-\footnote{See \S{}3.1 of \textit{The Elements of Typographic Style} by Robert Bringhurst.}
-They have been used since the sixteenth century and are the default font sizes on most computer software.
-The keys \Key{classic-10pt, classic-11pt, classic-12pt} set the size of each font size command to values based on their position in the classic typographic scale.
-The size of \cs{normalsize} is the named point size.
-The sizes of the other font size commands are the adjacent font sizes in the scale.
-Table~\ref{table:classicscales} lists the size of each font size command when using a classic typographic scale.
-
-\input{./fontscale-manual-table-classic.tex}
-
-The key \Key{modular} sets the font sizes from \cs{tiny} to \cs{Huge} using a modular typographic scale.
-In a modular scale, each font size is a fixed ratio from the adjacent font sizes.%
-\footnote{\url{https://alistapart.com/article/more-meaningful-typography/}}
-Here, the base font size is the size of \cs{normalsize}, which can be set via the key \Key{normalsize/size}[\meta{dim expr}], more documented in \S\ref{sec:overwriting}.
-If not set, \cs{normalsize} initializes to \qty{10}{pt}.
-The modular ratio can be set via the key \Key{modular\slash{}ratio}.
-The initial modular ratio is \num{1.125}.
-
-\input{./fontscale-manual-table-modular-musical.tex}
-
-The key \Key{musical} sets the font sizes according to their position in a musical typographic scale.
-The font size is calculated using the formula:%
-\footnote
- {%
- I have referenced this article by Spencer Mortensen:
- \newline
- \url{https://spencermortensen.com/articles/typographic-scale/}%
- }
-\[ f_i = f_0 \times r ^ { i / n } \]
-$f_0$ is the base font size, the size of \cs{normalsize}.
-$f_i$ is the font size with font step~$i$.
-$n$ is the number of notes in the musical scale\---the number of font size gradations or steps above \cs{normalsize}.
-$r$ is the ratio of the musical scale, the ratio of the highest to the lowest note $ f_n / f_0 $.
-(The modular typographic scale is actually a special case of the musical typographic scale where $n=1$.)
-
-The musical ratio~$r$ and the number of notes~$n$ can be set via the keys \Key{musical\slash{}ratio} and \Key{musical\slash{}notes}.
-The initial musical ratio\---\num{2}\---and the initial number of notes\---\num{5}\---are the same as that of the classic typographic scale.%
-\footnote{Ibid.}
-Conveniently, \cs{Huge} is \num{5} steps above \cs{normalsize}.
-The font size of \cs{normalsize}~$f_0$ can be set using the key \Key{normalsize/size}[\meta{dim expr}], more documented in \S\ref{sec:overwriting}.
-When using a musical typographic scale, \cs{normalsize} initializes to \qty{10}{pt}.%
-\footnote {I have set the initial value to \qty{10}{pt} instead of the \qty{12}{pt} recommended by the Spencer Mortensen article because this matches the default settings of the standard \LaTeXe{} document classes.}
-
-\Key{baselineskip-size-ratio}[\meta{fp expr}][1.2]
-\KeepNextPar*
-
-The key \Key{baselineskip\-/size\-/ratio} sets the ratio of the font baselineskip to the font size.
-By default, the font baselineskip of each font size command equals its font size times \meta{fp expr}.
-Users should not set this key unless they really know what they are doing.
-When using increased line spacing, users should prefer the low\-/level font command \cs{linespread} or the \pkg{setspace} package.
-
-
-\section{Overwriting the typographic scale}
-\label{sec:overwriting}
-
-In some situations, users may need to explicitly set the scale, size, or baselineskip of a font size command, overwriting the value set by the keys in \S\ref{sec:choosing}.
-Note that the font steps and the scale of \cs{normalsize} are constants and cannot be changed.
-
-\Key{\meta{font size command}/scale}[\meta{fp expr}]
-\KeepNextPar*
-
-The keys \Key{\meta{font size command}\slash{}scale} set the scale of \meta{font size command} to \meta{fp expr}, ignoring the value set by the key \Key{typographic\-/scale}.
-The key \Key{normalsize\slash{}scale} is not defined.
-
-\Key{\meta{font size command}/size}[\meta{dim expr}]
-\KeepNextPar*
-
-The keys \Key{\meta{font size command}\slash{}size} set the size of \meta{font size command} to \meta{dim expr}, ignoring the values set by the keys \Key{typographic\-/scale} and \Key{\meta{font size command}\slash{}scale}.
-\meta{dim expr} supplies a default unit of \unit{pt}.
-
-The package will issue a warning if the user sets the keys \Key{\meta{font size command}\slash{}size} and \Key{\meta{font size command}\slash{}scale} for the same \meta{font size command} since the latter key will be ignored.
-
-\Key{\meta{font size command}/baselineskip}[\meta{skip expr}]
-\KeepNextPar*
-
-The keys \Key{\meta{font size command}\slash{}baselineskip} set the font baselineskip of \meta{font size command} to \meta{skip expr} instead of calculating it from the size of \meta{font size command} and \Key{baselineskip\-/size\-/ratio}.
-\meta{skip expr} supplies a default unit of \unit{pt}.
-
-\Key{\meta{font size command}}[\meta{dim expr}]
-\nopagebreak\newline
-\Key{\meta{font size command}}[\meta{dim expr}/\meta{skip expr}]
-
-The keys \Key{\meta{font size command}} set the keys \Key{\meta{font size command}\slash{}size} or \Key{\meta{font size command}\slash{}baselineskip} in a condensed format.
-The latter format resembles traditional typographic notation where the size and leading of a text can be expressed as, for example, $10/12$ or $11/13$.
-The number before/after the slash is the size/leading in \unit{pts}.
-
-\Key{ignore-order}[true, false][false]
-\KeepNextPar*
-
-The user should take care to ensure that the font sizes and font baselineskips remain in the correct order when directly setting the scales, sizes, or baselineskips of the different font size commands.
-The magnitudes of the font sizes and font baselineskips should be ordered from \cs{tiny} to \cs{normalsize} to \cs{Huge}.
-This is important for typographic and syntactic consistency.
-This package will issue a warning if they are not in the correct order.
-The user can disable this warning via the key \Key{ignore\-/order}[true] or just \Key{ignore\-/order}.
-
-
-\section{User commands}
-\label{sec:usercommands}
-
-\subsection{Expandable font parameters}
-\label{subsec:fontparameters}
-
-\cs{CurrentFontStep}
-\nopagebreak\newline
-\cs{CurrentFontScale}
-\newline
-\cs{CurrentFontSize}
-\nopagebreak\newline
-\cs{CurrentFontBaselineskip}
-
-These are fully expandable commands that expand to the current font step, scale, size, or baselineskip.
-They can be used for printing or within calculations.
-Caution: \cs{CurrentFontStep} will expand to nothing if the current font step is undefined.
-
-Internally, \cs{CurrentFontStep}, \cs{CurrentFontScale}, and \cs{CurrentFontSize} use the kernel command \cs{f@size}.
-\cs{CurrentFontSize} expands to \texttt{f@size pt}.
-\cs{CurrentFontBaselineskip} expands to the kernel command \cs{f@baselineskip}.
-Note that the low\-/level font command \cs{fontsize}\marg{\meta{dimen}}\marg{\meta{skip}} sets \cs{f@size} to the new font size before expanding its second argument.
-This means that \cs{CurrentFontStep}, \cs{CurrentFontScale}, and \cs{CurrentFontSize} may need to be first expanded if used in \meta{skip}.
-This package provides the command \cs{SetFontSizeBaselineskip} as an alternative to \cs{fontsize} + \cs{selectfont} that avoids this issue (\S\ref{subsec:fontsize}).
-
-\subsection{More font sizing commands}
-\label{subsec:fontsize}
-
-The \pkg{fontscale} package provides the commands \cs{SetFontStep}, \cs{SetFontScale}, \cs{SetFontSize}, \cs{ScaleFont}, and \cs{SetFontSizeBaselineskip} which set the font size in different ways.
-The first three commands have a starred version which sets the font size relative to the current font size.
-Internally, these commands all use the low\-/level font commands \cs{fontsize} and \cs{selectfont}.
-These commands should be used only in special cases.
-Generally, users should prefer the font size commands from \cs{tiny} to \cs{Huge} for typographic and syntactic consistency, although \cs{SetFontStep*}\marg{\meta{integer}} can use a font size command directly.
-
-\cs{SetFontStep}\marg{\meta{fp expr}}
-\nopagebreak\newline
-\cs{SetFontStep*}\marg{\meta{fp expr}}
-
-\cs{SetFontStep} sets the font size by setting the font step to \meta{fp expr}.
-The starred version \cs{SetFontStep*} adds \meta{fp expr} to the current font step.
-If the choice of typographic scale is not modular or musical, then the only valid values for \meta{fp expr} are the integers from \num{-4} to \num{5}, corresponding to the font size commands from \cs{tiny} to \cs{Huge}.
-\cs{SetFontStep} will issue an error if the calculated font step is invalid.
-The starred version \cs{SetFontStep*} will also issue an error if the current font step is invalid.
-\cs{SetFontStep} sets the font baselineskip to the calculated font size \texttimes{} \Key{baselineskip\-/size\-/ratio}.
-If the calculated font step matches the step of any font size command, then that font size command will be used directly.
-
-\listheading{Examples:}
-\begin{itemize}
- \item
- For example, \cs{SetFontStep}\marg{-2} and \cs{SetFontStep}\marg{2} use \cs{footnotesize} and \cs{Large}.
- Note that it is typically better to use the equivalent font size command in place of \cs{SetFontStep}\marg{\meta{integer}}.
- \item
- If the current font size is \cs{normalsize}, \cs{SetFontStep*}\marg{1} and \cs{SetFontStep*}\marg{-1} use \cs{large} and \cs{small}.
- This is useful for moving up or down a note on the typographic scale.
- \item
- If the choice of typographic scale is modular or musical, \cs{SetFontStep*}\marg{-0.5} sets the font size and font baselineskip to values between that of \cs{normalsize} and \cs{small}.
- Otherwise, it produces an error.
-\end{itemize}
-
-\cs{SetFontScale}\marg{\meta{fp expr}}
-\nopagebreak\newline
-\cs{SetFontScale*}\marg{\meta{fp expr}}
-
-\cs{SetFontScale} sets the font size by setting the font scale to \meta{fp expr}.
-The font baselineskip is set to the calculated font size \texttimes{} \Key{baselineskip\-/size\-/ratio}.
-The starred version \cs{SetFontScale*} adds \meta{fp expr} to the current font scale.
-For example, \cs{SetFontScale}\marg{1.25} makes the font size 25\% larger than \cs{normalsize}.
-If the current font size is \cs{normalsize}, \cs{SetFontScale*}\marg{0.2} is equivalent to \cs{SetFontScale}\marg{1.2}.
-
-\cs{SetFontSize}\marg{\meta{dim expr}}
-\nopagebreak\newline
-\cs{SetFontSize*}\marg{\meta{dim expr}}
-
-\cs{SetFontSize} sets the font size to \meta{dim expr}.
-\meta{dim expr} supplies a default unit of \unit{pt}.
-The font baselineskip is set to the calculated font size \texttimes{} \Key{baselineskip\-/size\-/ratio}.
-The starred version \cs{SetFontSize*} adds \meta{dim expr} to the current font size.
-For example, \cs{SetFontSize*}\marg{1} and \cs{SetFontSize*}\marg{-1pt} increase and decrease the current font size by a \unit{pt}.
-
-\cs{ScaleFont}\marg{\meta{fp expr}}
-\KeepNextPar*
-
-Scales the current font size and the current font baselineskip by a factor of \meta{fp expr}.
-For example, if the current font size and font baselineskip are \qty{10}{pt} and \qty{12}{pt}, using \cs{ScaleFont}\marg{0.8} will reduce them proportionally to \qty{8}{pt} and \qty{9.6}{pt}.
-
-\cs{SetFontSizeBaselineskip}\marg{\meta{dim expr}}\marg{\meta{skip expr}}
-\KeepNextPar*
-
-Sets the font size to \meta{dim expr} and the font baselineskip to \meta{skip expr}.
-Both arguments supply a default unit of \unit{pt}.
-\cs{SetFontSizeBaselineskip} can be used as an alternative to \cs{fontsize} + \cs{selectfont} as it avoids the issue with \cs{f@size} discussed in \S\ref{subsec:fontparameters}.
-
-\subsection{Testing and debugging}
-\label{subsec:debug}
-
-The commands documented here are intended primarily for testing and debugging.
-I have used them often when developing this package so I think users will find them helpful.
-
-\cs{PrintFontParameters}
-\nopagebreak\newline
-\cs{PrintAllFontParameters}
-
-\cs{PrintFontParameters} prints the current font step, scale, size, and baselineskip in this order in a comma\-/separated list of key = value pairs.
-If the current font step is undefined (as explained for \cs{SetFontStep} in \S\ref{subsec:fontsize}), it will be left blank.
-\cs{PrintAllFontParameters} prints the step, scale, size, and baselineskip of each font size command.
-
-\cs{PrintSampleText}\oarg{\meta{text}}
-\nopagebreak\newline
-\cs{PrintSampleText*}\oarg{\meta{text}}
-
-\cs{PrintSampleText} prints \meta{text} in each font size ordered from \cs{tiny} to \cs{Huge} each followed by a paragraph break.
-The starred version \cs{PrintSampleText*} reverses the sizing order.
-The \meta{text} can be changed via the optional argument, but cannot contain \cs{par} tokens.
-The default \meta{text} is \enquote{The \texttt{fontscale} package: A user interface for setting document font sizes}.
-One useful way of printing example text is by using
-\cs{PrintSampleText}\oarg{\cs{PrintFontSizeCommand}:\textvisiblespace{}\cs{PrintFontParameters}}.
-
-\cs{PrintFontSizeCommand}
-\KeepNextPar*
-
-\cs{PrintFontSizeCommand} tests whether the current font size and the current font baselineskip match the font size and font baselineskip of any font size command from \cs{tiny} to \cs{Huge}.
-If so, it prints the name of that font size command, including the backslash character.
-If not, it instead prints \enquote{UNDEFINED\@}.
-\vfill\pagebreak%manual
-
-\subsection
- {%
- \texorpdfstring
- {More on \cs{fontscalesetup}}
- {More on \textbackslash{}fontscalesetup}%
- }
-\label{subsec:fontscalesetup}
-
-\cs{fontscalesetup}\marg{\meta{keyval list}}
-\KeepNextPar*
-
-Sets and processes the \pkg{fontscale} package keys and then uses \cs{normalsize}.
-\cs{fontscalesetup} can be applied mid\-/document or locally within the current \TeX{} group.
-
-\Key{reset}[initial, preamble]
-\KeepNextPar*
-
-The key \Key{reset} is also available.
-Its value must be either \texttt{initial} or \texttt{preamble}.
-The key \Key{reset}[initial] or just \Key{reset} sets all the keys to their initial values.
-The key \Key{reset}[preamble] sets all the keys to their values at the end of the preamble (or does nothing if used before the end of the preamble).
-
-
-\section{Programming}
-\label{sec:programming}
-
-This section is relevant to \LaTeX3 programmers.
-
-The document commands \cs{SetFontStep}, \cs{SetFontScale}, \cs{SetFontSize}, \cs{ScaleFont}, and \cs{SetFontSizeBaselineskip} are set up to work with \cs{text_purify:n}.
-\cs{text_purify:n} will correctly remove these commands and their arguments.
-This includes the starred versions \cs{SetFontStep*}, \cs{SetFontScale*}, and \cs{SetFontSize*}.
-
-This package does not provide any public \pkg{expl3} functions.
-
-This package provides some public \pkg{expl3} variables.
-The package stores in public variables the step, scale, size, and baselineskip of each font size command.
-These variables should not be modified directly.
-Instead, they should be modified only indirectly via the command \cs{fontscalesetup}.
-
-Each takes the form:
-
-\begingroup
- \ttfamily
- \textbackslash{}c\_fontscale\_\meta{font size command}\_step\_fp
- \nopagebreak\newline
- \textbackslash{}l\_fontscale\_\meta{font size command}\_scale\_fp
- \newline
- \textbackslash{}l\_fontscale\_\meta{font size command}\_size\_dim
- \nopagebreak\newline
- \textbackslash{}l\_fontscale\_\meta{font size command}\_baselineskip\_skip
-\endgroup
-
-Exception:
-\cs{l_fontscale_normalsize_scale_fp} is not defined.
-The scale of \cs{normalsize} is instead stored as the constant \cs{c_fontscale_normalsize_scale_fp}, which always equals \num{1}.
-
-The step, scale, size, and baselineskip of each font size command are also stored in property lists, one for each font size command:
-
-\texttt{\textbackslash{}l\_fontscale\_\meta{font size command}\_prop}
-
-\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/fontscale/fontscale-table-classic.tex b/macros/latex/contrib/fontscale/fontscale-table-classic.tex
new file mode 100644
index 0000000000..50ff413e36
--- /dev/null
+++ b/macros/latex/contrib/fontscale/fontscale-table-classic.tex
@@ -0,0 +1,41 @@
+\ProvidesFile
+ {fontscale-table-classic.tex}
+ [2024-08-12]
+
+\begin{table}
+ \centering
+ \caption
+ {%
+ The font size of each font size command from \cs{tiny} to \cs{Huge} in units of \unit{pt} when using a classic typographic scale.%
+ \label{table:classic}%
+ }
+ \bigskip
+ \begin{tblr}
+ {
+ colspec=
+ {
+ l
+ Q[si={table-format=3.2},c]
+ Q[si={table-format=3.2},c]
+ Q[si={table-format=3.2},c]
+ }
+ , cell{1}{2-Z}={guard}
+ , cell{2-Z}{1}={cmd=\cs}
+ , cell{1}{2-Z}={cmd=\Key}
+ }
+ \toprule
+ font size command & classic-10pt & classic-11pt & classic-12pt \\
+ \midrule
+ tiny & 6 & 7 & 8 \\
+ scriptsize & 7 & 8 & 9 \\
+ footnotesize & 8 & 9 & 10 \\
+ small & 9 & 10 & 11 \\
+ normalsize & 10 & 11 & 12 \\
+ large & 11 & 12 & 14 \\
+ Large & 12 & 14 & 16 \\
+ LARGE & 14 & 16 & 18 \\
+ huge & 16 & 18 & 21 \\
+ Huge & 18 & 21 & 24 \\
+ \bottomrule
+ \end{tblr}
+\end{table} \ No newline at end of file
diff --git a/macros/latex/contrib/fontscale/fontscale-table-font-steps.tex b/macros/latex/contrib/fontscale/fontscale-table-font-steps.tex
new file mode 100644
index 0000000000..5b20f18681
--- /dev/null
+++ b/macros/latex/contrib/fontscale/fontscale-table-font-steps.tex
@@ -0,0 +1,39 @@
+\ProvidesFile
+ {fontscale-table-font-steps.tex}
+ [2024-08-12]
+
+\begin{table}
+ \centering
+ \caption
+ {%
+ The font step of each font size command from \cs{tiny} to \cs{Huge}.
+ These are constants and cannot be changed.%
+ \label{table:fontsteps}%
+ }
+ \bigskip
+ \begin{tblr}
+ {
+ colspec=
+ {
+ l
+ Q[si={table-format=3.2},c]
+ }
+ , cell{1}{2}={guard}
+ , cell{2-Z}{1}={cmd=\cs}
+ }
+ \toprule
+ font size command & font step \\
+ \midrule
+ tiny & -4 \\
+ scriptsize & -3 \\
+ footnotesize & -2 \\
+ small & -1 \\
+ normalsize & 0 \\
+ large & 1 \\
+ Large & 2 \\
+ LARGE & 3 \\
+ huge & 4 \\
+ Huge & 5 \\
+ \bottomrule
+ \end{tblr}
+\end{table} \ No newline at end of file
diff --git a/macros/latex/contrib/fontscale/fontscale-table-musical.tex b/macros/latex/contrib/fontscale/fontscale-table-musical.tex
new file mode 100644
index 0000000000..e6a6ca5ce0
--- /dev/null
+++ b/macros/latex/contrib/fontscale/fontscale-table-musical.tex
@@ -0,0 +1,39 @@
+\ProvidesFile
+ {fontscale-table-musical.tex}
+ [2024-08-12]
+
+\begin{table}
+ \centering
+ \caption
+ {%
+ The font size of each font size command from \cs{tiny} to \cs{Huge} when using a musical typographic scale with the initial values.
+ The font sizes are in units of \unit{pt} and rounded to two decimal places.%
+ \label{table:musical}%
+ }
+ \bigskip
+ \begin{tblr}
+ {
+ colspec=
+ {
+ l
+ Q[si={table-format=3.2},c]
+ }
+ , cell{1}{2}={guard}
+ , cell{2-Z}{1}={cmd=\cs}
+ }
+ \toprule
+ font size command & \Key{musical} \\
+ \midrule
+ tiny & 5.74 \\
+ scriptsize & 6.60 \\
+ footnotesize & 7.58 \\
+ small & 8.71 \\
+ normalsize & 10 \\
+ large & 11.49 \\
+ Large & 13.20 \\
+ LARGE & 15.16 \\
+ huge & 17.41 \\
+ Huge & 20 \\
+ \bottomrule
+ \end{tblr}
+\end{table} \ No newline at end of file
diff --git a/macros/latex/contrib/fontscale/fontscale.pdf b/macros/latex/contrib/fontscale/fontscale.pdf
new file mode 100644
index 0000000000..adcd809134
--- /dev/null
+++ b/macros/latex/contrib/fontscale/fontscale.pdf
Binary files differ
diff --git a/macros/latex/contrib/fontscale/fontscale.sty b/macros/latex/contrib/fontscale/fontscale.sty
index d032e49860..70bfae6026 100644
--- a/macros/latex/contrib/fontscale/fontscale.sty
+++ b/macros/latex/contrib/fontscale/fontscale.sty
@@ -1,33 +1,32 @@
-% Package : fontscale -- A user interface for setting document font sizes
+% Package : fontscale -- A flexible interface for setting font sizes
% Copyright : 2024 (c) Oliver Beery <beeryoliver@gmail.com>
% CTAN : https://ctan.org/pkg/fontscale
% Repository: https://github.com/beeryoliver/fontscale
% License : The LaTeX Project Public License 1.3c
-% The 2022-06-01 LaTeX kernel update added \ProcessKeyOptions.
-\NeedsTeXFormat{LaTeX2e}[2022-06-01]
+% LaTeX2e version 2023-11-01 added \IfExplAtLeastTF.
+\NeedsTeXFormat{LaTeX2e}[2023-11-01]
\ProvidesExplPackage
{fontscale}
- {2024-05-17}
- {1.3.0}
- {A user interface for setting document font sizes}
+ {2024-08-12}
+ {2.1.0}
+ {A flexible interface for setting font sizes}
-% The 2023-10-10 l3kernel update added many 'e'-variants.
-\IfExplAtLeastTF { 2023-10-10 }
- { }
+% l3kernel version 2023-10-10 added many 'e'-variants.
+\IfExplAtLeastTF { 2023-10-10 } { }
{
\msg_new:nnn { fontscale } { expl3-out-of-date }
{
- The~ package~ could~ not~ load.~
- The~ fontscale~ package~ requires~
- L3~ programming~ layer~ version~ 2023-10-10~ or~ later.
+ The~ fontscale~ package~ could~ not~ load.~
+ This~ package~ requires~
+ L3~ programming~ layer~ version~ 2023-10-10~ or~ newer.
}
\msg_critical:nn { fontscale } { expl3-out-of-date }
}
% This package does not require any other packages!
-% DECLARE FONT PARAMETER VARIABLES
+% DECLARE FONT SIZE PARAMETER VARIABLES
\fp_const:Nn \c_fontscale_tiny_step_fp { -4 }
\fp_const:Nn \c_fontscale_scriptsize_step_fp { -3 }
@@ -74,31 +73,7 @@
\skip_new:N \l_fontscale_huge_baselineskip_skip
\skip_new:N \l_fontscale_Huge_baselineskip_skip
-\prop_new:N \l_fontscale_tiny_prop
-\prop_new:N \l_fontscale_scriptsize_prop
-\prop_new:N \l_fontscale_footnotesize_prop
-\prop_new:N \l_fontscale_small_prop
-\prop_new:N \l_fontscale_normalsize_prop
-\prop_new:N \l_fontscale_large_prop
-\prop_new:N \l_fontscale_Large_prop
-\prop_new:N \l_fontscale_LARGE_prop
-\prop_new:N \l_fontscale_huge_prop
-\prop_new:N \l_fontscale_Huge_prop
-
-\prop_put:Nnn \l_fontscale_tiny_prop { step } { -4 }
-\prop_put:Nnn \l_fontscale_scriptsize_prop { step } { -3 }
-\prop_put:Nnn \l_fontscale_footnotesize_prop { step } { -2 }
-\prop_put:Nnn \l_fontscale_small_prop { step } { -1 }
-\prop_put:Nnn \l_fontscale_normalsize_prop { step } { 0 }
-\prop_put:Nnn \l_fontscale_large_prop { step } { 1 }
-\prop_put:Nnn \l_fontscale_Large_prop { step } { 2 }
-\prop_put:Nnn \l_fontscale_LARGE_prop { step } { 3 }
-\prop_put:Nnn \l_fontscale_huge_prop { step } { 4 }
-\prop_put:Nnn \l_fontscale_Huge_prop { step } { 5 }
-
-\prop_put:Nnn \l_fontscale_normalsize_prop { scale } { 1 }
-
-% INITIALIZE FONT PARAMETER VARIABLES
+% INITIALIZE FONT SIZE PARAMETER VARIABLES
\fp_set:Nn \l_fontscale_tiny_scale_fp { 0.6 }
\fp_set:Nn \l_fontscale_scriptsize_scale_fp { 0.7 }
@@ -132,177 +107,221 @@
\skip_set:Nn \l_fontscale_huge_baselineskip_skip { 19.2pt }
\skip_set:Nn \l_fontscale_Huge_baselineskip_skip { 21.6pt }
-\prop_put:Nnn \l_fontscale_tiny_prop { scale } { 0.6 }
-\prop_put:Nnn \l_fontscale_scriptsize_prop { scale } { 0.7 }
-\prop_put:Nnn \l_fontscale_footnotesize_prop { scale } { 0.8 }
-\prop_put:Nnn \l_fontscale_small_prop { scale } { 0.9 }
-\prop_put:Nnn \l_fontscale_large_prop { scale } { 1.1 }
-\prop_put:Nnn \l_fontscale_Large_prop { scale } { 1.2 }
-\prop_put:Nnn \l_fontscale_LARGE_prop { scale } { 1.4 }
-\prop_put:Nnn \l_fontscale_huge_prop { scale } { 1.6 }
-\prop_put:Nnn \l_fontscale_Huge_prop { scale } { 1.8 }
-
-\prop_put:Nnn \l_fontscale_tiny_prop { size } { 6pt }
-\prop_put:Nnn \l_fontscale_scriptsize_prop { size } { 7pt }
-\prop_put:Nnn \l_fontscale_footnotesize_prop { size } { 8pt }
-\prop_put:Nnn \l_fontscale_small_prop { size } { 9pt }
-\prop_put:Nnn \l_fontscale_normalsize_prop { size } { 10pt }
-\prop_put:Nnn \l_fontscale_large_prop { size } { 11pt }
-\prop_put:Nnn \l_fontscale_Large_prop { size } { 12pt }
-\prop_put:Nnn \l_fontscale_LARGE_prop { size } { 14pt }
-\prop_put:Nnn \l_fontscale_huge_prop { size } { 16pt }
-\prop_put:Nnn \l_fontscale_Huge_prop { size } { 18pt }
-
-\prop_put:Nnn \l_fontscale_tiny_prop { baselineskip } { 7.2pt }
-\prop_put:Nnn \l_fontscale_scriptsize_prop { baselineskip } { 8.4pt }
-\prop_put:Nnn \l_fontscale_footnotesize_prop { baselineskip } { 9.6pt }
-\prop_put:Nnn \l_fontscale_small_prop { baselineskip } { 10.8pt }
-\prop_put:Nnn \l_fontscale_normalsize_prop { baselineskip } { 12 pt }
-\prop_put:Nnn \l_fontscale_large_prop { baselineskip } { 13.2pt }
-\prop_put:Nnn \l_fontscale_Large_prop { baselineskip } { 14.4pt }
-\prop_put:Nnn \l_fontscale_LARGE_prop { baselineskip } { 16.8pt }
-\prop_put:Nnn \l_fontscale_huge_prop { baselineskip } { 19.2pt }
-\prop_put:Nnn \l_fontscale_Huge_prop { baselineskip } { 21.6pt }
-
% SOME VARIABLES
-% Used for mapping.
-\tl_const:Nn \c__fontscale_names_tl
- {
- {tiny} {scriptsize} {footnotesize} {small} {normalsize}
- {large} {Large} {LARGE} {huge} {Huge}
- }
-\tl_const:Nn \c__fontscale_names_other_tl
- {
- {tiny} {scriptsize} {footnotesize} {small}
- {large} {Large} {LARGE} {huge} {Huge}
- }
-
% Used to speed up floating point calculations.
\fp_new:N \l__fontscale_normalsize_size_fp
\fp_set:Nn \l__fontscale_normalsize_size_fp { 10 }
+\fp_new:N \l__fontscale_musical_base_fp
\fp_new:N \l__fontscale_musical_notes_fp
-% Temporary variables
-\tl_new:N \l__fontscale_step_tl
-\tl_new:N \l__fontscale_scale_tl
-\dim_new:N \l__fontscale_size_dim
+% Scratch variables
+\tl_new:N \l__fontscale_tmp_tl
+\str_new:N \l__fontscale_tmp_str
+\dim_new:N \l__fontscale_tmp_dim
+\fp_new:N \l__fontscale_tmp_fp
% SOME HELPER FUNCTIONS
-% Sets a dimen/skip variable from a dimen/skip expression, supplying a default
+% Sets a dimen/skip variable from a dimen/skip expression, appending a default
% unit of pt.
-\cs_new_protected:Npn \__fontscale_dim_set_with_default_pt:Nn #1#2
+\cs_new_protected:Npn \__fontscale_dim_set_default_pt:Nn #1#2
{ \@defaultunits #1 = \dimexpr #2 pt \relax \relax \@nnil }
-\cs_generate_variant:Nn \__fontscale_dim_set_with_default_pt:Nn { c }
-\cs_new_protected:Npn \__fontscale_skip_set_with_default_pt:Nn #1#2
+\cs_generate_variant:Nn \__fontscale_dim_set_default_pt:Nn { c }
+\cs_new_protected:Npn \__fontscale_skip_set_default_pt:Nn #1#2
{ \@defaultunits #1 = \glueexpr #2 pt \relax \@nnil }
-\cs_generate_variant:Nn \__fontscale_skip_set_with_default_pt:Nn { c }
-% Used to define \tiny to \Huge. Need \dim_use:N for compatibility with the
-% microtype package. Otherwise the following would do:
-% \cs_new_protected:Npn \__fontscale_fontsize:NNN { \@setfontsize }
-\cs_new_protected:Npn \__fontscale_fontsize:NNN #1#2
- { \@setfontsize #1 { \dim_use:N #2 } }
-% Similar to \fontsize + \selectfont, except that it takes dimen and skip
-% expressions as arguments and avoids the issue where \f@size is set to the new
-% font size before the second argument is expanded.
+\cs_generate_variant:Nn \__fontscale_skip_set_default_pt:Nn { c }
+% Similar to \@setfontsize. Used to define \tiny to \Huge. Need \dim_use:N for
+% compatibility with the microtype package.
+\cs_new_protected:Npn \__fontscale_fontsize:NNN #1#2#3
+ {
+ \mode_if_math:TF
+ {
+ \msg_warning:nne { fontscale } { math-mode-warning }
+ { \token_to_str:N #1 }
+ }
+ {
+ \cs_set_eq:NN \@currsize #1
+ \fontsize { \dim_use:N #2 } #3 \selectfont
+ }
+ }
+% Similar to \fontsize + \selectfont, except that it:
+% (1) Takes dimen and skip expressions as arguments.
+% (2) Avoids the issue where \f@size is set to the new font size before the
+% second argument is expanded.
+% (3) Provides error checking for the font size and font baselineskip.
+\dim_new:N \l__fontscale_fontsize_dim
\skip_new:N \l__fontscale_fontsize_skip
\cs_new_protected:Npn \__fontscale_fontsize:nn #1#2
{
- \__fontscale_skip_set_with_default_pt:Nn \l__fontscale_fontsize_skip {#2}
- \fontsize { = \dimexpr #1 pt \relax \relax } \l__fontscale_fontsize_skip
- \selectfont
+ \__fontscale_dim_set_default_pt:Nn \l__fontscale_fontsize_dim {#1}
+ \__fontscale_skip_set_default_pt:Nn \l__fontscale_fontsize_skip {#2}
+ \dim_compare:nNnTF \l__fontscale_fontsize_dim > \c_zero_dim
+ {
+ \dim_compare:nNnTF \l__fontscale_fontsize_skip <
+ \l__fontscale_fontsize_dim
+ { \msg_error:nn { fontscale } { font-baselineskip-out-of-bounds } }
+ {
+ \fontsize \l__fontscale_fontsize_dim \l__fontscale_fontsize_skip
+ \selectfont
+ }
+ }
+ { \msg_error:nn { fontscale } { font-size-out-of-bounds } }
}
% Similar to the above function, except that it sets the font baselineskip
% equal to the new font size times the baselineskip-size-ratio.
\cs_new_protected:Npn \__fontscale_fontsize:n #1
{
- \fontsize { = \dimexpr #1 pt \relax \relax }
- { \fp_to_dim:n { \f@size * \l__fontscale_baselineskip_size_ratio_fp } }
- \selectfont
+ \__fontscale_dim_set_default_pt:Nn \l__fontscale_fontsize_dim {#1}
+ \dim_compare:nNnTF \l__fontscale_fontsize_dim > \c_zero_dim
+ {
+ \fontsize \l__fontscale_fontsize_dim
+ {
+ \fp_to_dim:n
+ {
+ \l__fontscale_fontsize_dim
+ * \l__fontscale_baselineskip_size_ratio_fp
+ }
+ }
+ \selectfont
+ }
+ { \msg_error:nn { fontscale } { font-size-out-of-bounds } }
}
% MESSAGES
-\msg_new:nnn { fontscale } { modular-ratio-out-of-bounds }
+\msg_new:nnn { fontscale } { key-baselineskip-size-ratio-out-of-bounds }
{
- The~ value~ for~ the~ key~ 'modular / ratio'~
+ The~ value~ of~ the~ key~ 'baselineskip-size-ratio'~
\msg_line_context: \c_space_tl
- must~ be~ greater~ than~ 1.
+ must~ be~ at~ least~ 1.
}
-\msg_new:nnn { fontscale } { musical-ratio-out-of-bounds }
+\msg_new:nnn { fontscale } { key-musical-base-out-of-bounds }
{
- The~ value~ for~ the~ key~ 'musical / ratio'~
+ The~ value~ of~ the~ key~ 'musical / base'~
+ \msg_line_context: \c_space_tl
+ must~ be~ a~ positive~ length.
+ }
+\msg_new:nnn { fontscale } { key-musical-ratio-out-of-bounds }
+ {
+ The~ value~ of~ the~ key~ 'musical / ratio'~
\msg_line_context: \c_space_tl
must~ be~ greater~ than~ 1.
}
-\msg_new:nnn { fontscale } { musical-notes-out-of-bounds }
+\msg_new:nnn { fontscale } { key-musical-notes-out-of-bounds }
{
- The~ value~ for~ the~ key~ 'musical / notes'~
+ The~ value~ of~ the~ key~ 'musical / notes'~
\msg_line_context: \c_space_tl
must~ be~ a~ positive~ integer.
}
-\msg_new:nnn { fontscale } { key-font-scale-ignored }
+\msg_new:nnn { fontscale } { key-font-scale-out-of-bounds }
{
- Key~ '#1 / scale'~
+ The~ value~ of~ the~ key~ '#1 / scale'~
\msg_line_context: \c_space_tl
- ignored.~
- Setting~ the~ scale~ and~ size~ keys~ for~ the~ same~
- font~ size~ command~ ignores~ the~ scale~ key.
+ must~ be~ positive.
+ }
+\msg_new:nnn { fontscale } { key-font-size-out-of-bounds }
+ {
+ The~ value~ of~ the~ key~ '#1 / size'~
+ \msg_line_context: \c_space_tl
+ must~ be~ a~ positive~ length.
+ }
+\msg_new:nnn { fontscale } { key-font-scale-overwritten }
+ {
+ The~ font~ size~ set~ by~ the~ key~ '#1 / scale'~
+ has~ been~ overwritten~ by~ the~ key~ '#1 / size'~
+ \msg_line_context:.
+ }
+\msg_new:nnn { fontscale } { key-font-baselineskip-out-of-bounds }
+ {
+ The~ value~ of~ the~ key~ '#1 / baselineskip'~
+ \msg_line_context: \c_space_tl
+ must~ be~ greater~ than~ or~ equal~ to~
+ the~ font~ size~ of~ '\iow_char:N \\#1'.
}
\msg_new:nnn { fontscale } { font-sizes-out-of-order }
{
The~ font~ sizes~
\msg_line_context: \c_space_tl
are~ not~ in~ the~ correct~ order.~
- The~ magnitude~ of~ the~ font~ sizes~ should~ be~ ordered~ from~
- '\iow_char:N \\tiny'~ to~ '\iow_char:N \\normalsize'~ to~
- '\iow_char:N \\Huge'.
+ The~ lengths~ of~ the~ font~ sizes~ should~ be~ ordered~ from~
+ '\iow_char:N \\tiny'~ to~ '\iow_char:N \\Huge'.
}
\msg_new:nnn { fontscale } { font-baselineskips-out-of-order }
{
The~ font~ baselineskips~
\msg_line_context: \c_space_tl
are~ not~ in~ the~ correct~ order.~
- The~ magnitude~ of~ the~ font~ baselineskips~ should~ be~ ordered~ from~
- '\iow_char:N \\tiny'~ to~ '\iow_char:N \\normalsize'~ to~
- '\iow_char:N \\Huge'.
+ The~ lengths~ of~ the~ font~ baselineskips~ should~ be~ ordered~ from~
+ '\iow_char:N \\tiny'~ to~ '\iow_char:N \\Huge'.
+ }
+
+\msg_new:nnn { fontscale } { math-mode-warning }
+ {
+ '#1'~
+ \msg_line_context: \c_space_tl
+ does~ nothing~ if~ used~ in~ math~ mode.
+ }
+\msg_new:nnn { fontscale } { math-mode-error }
+ {
+ '#1'~
+ \msg_line_context: \c_space_tl
+ cannot~ be~ used~ in~ math~ mode.
+ }
+\msg_new:nnn { fontscale } { font-size-out-of-bounds }
+ {
+ The~ font~ size~
+ \msg_line_context: \c_space_tl
+ must~ be~ a~ positive~ length.
+ }
+\msg_new:nnn { fontscale } { font-baselineskip-out-of-bounds }
+ {
+ The~ font~ baselineskip~
+ \msg_line_context: \c_space_tl
+ must~ be~ greater~ than~ or~ equal~ to~ the~ font~ size.
}
\msg_new:nnn { fontscale } { font-step-out-of-bounds }
{
The~ font~ step~
\msg_line_context: \c_space_tl
- must~ be~ an~ integer~ from~ -4~ to~ 5,~
- unless~ the~ value~ for~ the~ choice~ key~ 'typographic-scale'~
- is~ 'modular'~ or~ 'musical'.
+ must~ equal~ an~ integer~ from~ -4~ to~ 5,~
+ unless~ the~ value~ of~ the~ key~ 'typographic-scale'~ is~ 'musical'.~
+ \msg_see_documentation_text:n { fontscale }
}
\msg_new:nnn { fontscale } { current-font-step-out-of-bounds }
{
'\iow_char:N \\SetFontStep*'~
\msg_line_context: \c_space_tl
could~ not~ calculate~ the~ new~ font~ step~ because~
- the~ current~ font~ step~ is~ undefined.
+ the~ current~ font~ step~ is~ undefined.~
+ \msg_see_documentation_text:n { fontscale }
}
% DEFINE KEYS
\str_new:N \l__fontscale_typographic_scale_str
+\dim_new:N \l__fontscale_musical_base_dim
-\keys_define:nn { fontscale }
+\cs_new_protected:Npn \__fontscale_keys_name:n #1
{
- reset .choices:nn = { initial , preamble }
- { \use:c { __fontscale_keys_precompile_#1: } }
- , reset .default:n = initial
-
- , ignore-order .bool_set:N = \l__fontscale_ignore_order_bool
- , ignore-order .default:n = true
+ \tl_if_in:nnTF {#1} { / }
+ { \__fontscale_keys_name_split:ww #1 \q_stop }
+ { \tl_set:cn { l__fontscale_ \l_keys_key_str _size_tl } {#1} }
+ }
+\cs_new_protected:Npn \__fontscale_keys_name_split:ww #1 / #2 \q_stop
+ {
+ \tl_set:cn { l__fontscale_ \l_keys_key_str _size_tl } {#1}
+ \tl_set:cn { l__fontscale_ \l_keys_key_str _baselineskip_tl } {#2}
+ }
- , baselineskip-size-ratio .fp_set:N =
+\keys_define:nn { fontscale }
+ {
+ baselineskip-size-ratio .fp_set:N =
\l__fontscale_baselineskip_size_ratio_fp
, baselineskip-size-ratio .value_required:n = true
, typographic-scale .choices:nn =
- { classic-10pt , classic-11pt , classic-12pt , modular , musical }
+ { classic-10pt , classic-11pt , classic-12pt , musical }
{ \str_set:Nn \l__fontscale_typographic_scale_str {#1} }
, typographic-scale .value_required:n = true
@@ -315,18 +334,16 @@
, classic-12pt .meta:n = { typographic-scale = classic-12pt }
, classic-12pt .value_forbidden:n = true
- , modular .meta:n = { typographic-scale = modular }
- , modular .value_forbidden:n = true
-
, musical .meta:n = { typographic-scale = musical }
, musical .value_forbidden:n = true
-
- , modular / ratio .fp_set:N = \l__fontscale_modular_ratio_fp
- , modular / ratio .value_required:n = true
}
\keys_define:nn { fontscale / musical }
{
- ratio .fp_set:N = \l__fontscale_musical_ratio_fp
+ base .code:n =
+ \__fontscale_dim_set_default_pt:Nn \l__fontscale_musical_base_dim {#1}
+ , base .value_required:n = true
+
+ , ratio .fp_set:N = \l__fontscale_musical_ratio_fp
, ratio .value_required:n = true
, notes .int_set:N = \l__fontscale_musical_notes_int
@@ -441,58 +458,46 @@
}
\keys_define:nn { fontscale }
{
- tiny .code:n = \__fontscale_keys_name_code:n {#1}
+ tiny .code:n = \__fontscale_keys_name:n {#1}
, tiny .value_required:n = true
- , scriptsize .code:n = \__fontscale_keys_name_code:n {#1}
+ , scriptsize .code:n = \__fontscale_keys_name:n {#1}
, scriptsize .value_required:n = true
- , footnotesize .code:n = \__fontscale_keys_name_code:n {#1}
+ , footnotesize .code:n = \__fontscale_keys_name:n {#1}
, footnotesize .value_required:n = true
- , small .code:n = \__fontscale_keys_name_code:n {#1}
+ , small .code:n = \__fontscale_keys_name:n {#1}
, small .value_required:n = true
- , normalsize .code:n = \__fontscale_keys_name_code:n {#1}
+ , normalsize .code:n = \__fontscale_keys_name:n {#1}
, normalsize .value_required:n = true
- , large .code:n = \__fontscale_keys_name_code:n {#1}
+ , large .code:n = \__fontscale_keys_name:n {#1}
, large .value_required:n = true
- , Large .code:n = \__fontscale_keys_name_code:n {#1}
+ , Large .code:n = \__fontscale_keys_name:n {#1}
, Large .value_required:n = true
- , LARGE .code:n = \__fontscale_keys_name_code:n {#1}
+ , LARGE .code:n = \__fontscale_keys_name:n {#1}
, LARGE .value_required:n = true
- , huge .code:n = \__fontscale_keys_name_code:n {#1}
+ , huge .code:n = \__fontscale_keys_name:n {#1}
, huge .value_required:n = true
- , Huge .code:n = \__fontscale_keys_name_code:n {#1}
+ , Huge .code:n = \__fontscale_keys_name:n {#1}
, Huge .value_required:n = true
}
-\cs_new_protected:Npn \__fontscale_keys_name_code:n #1
- {
- \str_if_in:nnTF {#1} { / }
- { \__fontscale_keys_name_code_split:ww #1 \q_stop }
- { \tl_set:cn { l__fontscale_ \l_keys_key_str _size_tl } {#1} }
- }
-\cs_new_protected:Npn \__fontscale_keys_name_code_split:ww #1 / #2 \q_stop
- {
- \tl_set:cn { l__fontscale_ \l_keys_key_str _size_tl } {#1}
- \tl_set:cn { l__fontscale_ \l_keys_key_str _baselineskip_tl } {#2}
- }
-% PRE-COMPILE KEYS
+% INITIALIZE AND PRE-COMPILE KEYS
% Pre-compiles the keys with their initial values and then sets the keys to
% their initial values. This is done by hand for speed.
-\cs_new_protected:Npn \__fontscale_keys_precompile_initial:
+\cs_new_protected:Npn \__fontscale_keys_set_initial:
{
- \bool_set_false:N \l__fontscale_ignore_order_bool
\fp_set:Nn \l__fontscale_baselineskip_size_ratio_fp { 1.2 }
\str_set:Nn \l__fontscale_typographic_scale_str { classic-10pt }
- \fp_set:Nn \l__fontscale_modular_ratio_fp { 1.125 }
+ \dim_set:Nn \l__fontscale_musical_base_dim { 10pt }
\fp_set:Nn \l__fontscale_musical_ratio_fp { 2 }
\int_set:Nn \l__fontscale_musical_notes_int { 5 }
@@ -528,98 +533,23 @@
\tl_set:Nn \l__fontscale_huge_baselineskip_tl { \q_no_value }
\tl_set:Nn \l__fontscale_Huge_baselineskip_tl { \q_no_value }
}
-\__fontscale_keys_precompile_initial:
+\__fontscale_keys_set_initial:
-% Pre-compiles the keys with their values at the end of the preamble. The keys
-% are pre-compiled by hand for speed.
-\cs_new_eq:NN \__fontscale_keys_precompile_preamble: \prg_do_nothing:
-% \AddToHook is passed only a single token for speed.
-\AddToHook { begindocument / before }
- { \__fontscale_keys_precompile_preamble_set: }
-\cs_new_protected:Npn \__fontscale_keys_precompile_preamble_set:
+% SET AND PROCESS KEYS
+
+\NewDocumentCommand \fontscalesetup { s m }
{
- \cs_set_protected:Npe \__fontscale_keys_precompile_preamble:
+ \mode_if_math:TF
{
- \bool_if:NTF \l__fontscale_ignore_order_bool
- { \bool_set_true:N } { \bool_set_false:N }
- \exp_not:N \l__fontscale_ignore_order_bool
- \fp_set:Nn \exp_not:N \l__fontscale_baselineskip_size_ratio_fp
- { \exp_not:V \l__fontscale_baselineskip_size_ratio_fp }
- \str_set:Nn \exp_not:N \l__fontscale_typographic_scale_str
- { \l__fontscale_typographic_scale_str }
- \fp_set:Nn \exp_not:N \l__fontscale_modular_ratio_fp
- { \exp_not:V \l__fontscale_modular_ratio_fp }
- \fp_set:Nn \exp_not:N \l__fontscale_musical_ratio_fp
- { \exp_not:V \l__fontscale_musical_ratio_fp }
- \int_set:Nn \exp_not:N \l__fontscale_musical_notes_int
- { \int_use:N \l__fontscale_musical_notes_int }
-
- \tl_set:Nn \exp_not:N \l__fontscale_tiny_scale_tl
- { \exp_not:V \l__fontscale_tiny_scale_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_scriptsize_scale_tl
- { \exp_not:V \l__fontscale_scriptsize_scale_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_footnotesize_scale_tl
- { \exp_not:V \l__fontscale_footnotesize_scale_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_small_scale_tl
- { \exp_not:V \l__fontscale_small_scale_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_large_scale_tl
- { \exp_not:V \l__fontscale_large_scale_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_Large_scale_tl
- { \exp_not:V \l__fontscale_Large_scale_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_LARGE_scale_tl
- { \exp_not:V \l__fontscale_LARGE_scale_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_huge_scale_tl
- { \exp_not:V \l__fontscale_huge_scale_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_Huge_scale_tl
- { \exp_not:V \l__fontscale_Huge_scale_tl }
-
- \tl_set:Nn \exp_not:N \l__fontscale_tiny_size_tl
- { \exp_not:V \l__fontscale_tiny_size_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_scriptsize_size_tl
- { \exp_not:V \l__fontscale_scriptsize_size_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_footnotesize_size_tl
- { \exp_not:V \l__fontscale_footnotesize_size_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_small_size_tl
- { \exp_not:V \l__fontscale_small_size_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_normalsize_size_tl
- { \exp_not:V \l__fontscale_normalsize_size_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_large_size_tl
- { \exp_not:V \l__fontscale_large_size_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_Large_size_tl
- { \exp_not:V \l__fontscale_Large_size_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_LARGE_size_tl
- { \exp_not:V \l__fontscale_LARGE_size_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_huge_size_tl
- { \exp_not:V \l__fontscale_huge_size_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_Huge_size_tl
- { \exp_not:V \l__fontscale_Huge_size_tl }
-
- \tl_set:Nn \exp_not:N \l__fontscale_tiny_baselineskip_tl
- { \exp_not:V \l__fontscale_tiny_baselineskip_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_scriptsize_baselineskip_tl
- { \exp_not:V \l__fontscale_scriptsize_baselineskip_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_footnotesize_baselineskip_tl
- { \exp_not:V \l__fontscale_footnotesize_baselineskip_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_small_baselineskip_tl
- { \exp_not:V \l__fontscale_small_baselineskip_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_normalsize_baselineskip_tl
- { \exp_not:V \l__fontscale_normalsize_baselineskip_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_large_baselineskip_tl
- { \exp_not:V \l__fontscale_large_baselineskip_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_Large_baselineskip_tl
- { \exp_not:V \l__fontscale_Large_baselineskip_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_LARGE_baselineskip_tl
- { \exp_not:V \l__fontscale_LARGE_baselineskip_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_huge_baselineskip_tl
- { \exp_not:V \l__fontscale_huge_baselineskip_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_Huge_baselineskip_tl
- { \exp_not:V \l__fontscale_Huge_baselineskip_tl }
+ \msg_warning:nne { fontscale } { math-mode-warning }
+ { \token_to_str:N \fontscalesetup }
+ }
+ {
+ \IfBooleanTF #1
+ { \__fontscale_keys_reset:n {#2} }
+ { \__fontscale_keys_set:n {#2} }
}
}
-
-% PROCESS KEYS
-
-\NewDocumentCommand \fontscalesetup { m } { \__fontscale_keys_set:n {#1} }
\cs_new_protected:Npn \__fontscale_keys_set:n #1
{
\keys_set:nn { fontscale } {#1}
@@ -628,55 +558,65 @@
\prg_break:
\prg_break_point:
}
+\cs_new_protected:Npn \__fontscale_keys_reset:n
+ { \__fontscale_keys_set_initial: \__fontscale_keys_set:n }
\cs_new_protected:Npn \__fontscale_keys_process:
{
- \__fontscale_keys_process_check_modular_musical:
+ \__fontscale_keys_process_start:
\__fontscale_keys_process_normalsize:
\__fontscale_keys_process_other:
\__fontscale_keys_process_check_order:
}
-% Issues an error if the key 'modular/ratio', 'musical/ratio', or
-% 'musical/notes' is set to an impossible value.
-\cs_new_protected:Npn \__fontscale_keys_process_check_modular_musical:
+\cs_new_protected:Npn \__fontscale_keys_process_start:
{
- \fp_compare:nNnF \l__fontscale_modular_ratio_fp > \c_one_fp
+ \fp_compare:nNnT \l__fontscale_baselineskip_size_ratio_fp < \c_one_fp
{
- \msg_error:nn { fontscale } { modular-ratio-out-of-bounds }
+ \msg_error:nn { fontscale }
+ { key-baselineskip-size-ratio-out-of-bounds }
+ \prg_break:
+ }
+ \dim_compare:nNnF \l__fontscale_musical_base_dim > \c_zero_dim
+ {
+ \msg_error:nn { fontscale } { key-musical-base-out-of-bounds }
\prg_break:
}
\fp_compare:nNnF \l__fontscale_musical_ratio_fp > \c_one_fp
{
- \msg_error:nn { fontscale } { musical-ratio-out-of-bounds }
+ \msg_error:nn { fontscale } { key-musical-ratio-out-of-bounds }
\prg_break:
}
\int_compare:nNnF \l__fontscale_musical_notes_int > 0
{
- \msg_error:nn { fontscale } { musical-notes-out-of-bounds }
+ \msg_error:nn { fontscale } { key-musical-notes-out-of-bounds }
\prg_break:
}
}
-% Sets the size and baselineskip of \normalsize and updates their property list
-% entries.
+% Sets the font size and font baselineskip of \normalsize.
\cs_new_protected:Npn \__fontscale_keys_process_normalsize:
{
\quark_if_no_value:NTF \l__fontscale_normalsize_size_tl
{
\dim_set:Nn \l_fontscale_normalsize_size_dim
{
- \str_case:VnF \l__fontscale_typographic_scale_str
+ \str_case:Vn \l__fontscale_typographic_scale_str
{
+ { classic-10pt } { 10pt }
{ classic-11pt } { 11pt }
{ classic-12pt } { 12pt }
+ { musical } { \l__fontscale_musical_base_dim }
}
- { 10pt }
}
}
{
- \__fontscale_dim_set_with_default_pt:Nn
- \l_fontscale_normalsize_size_dim { \l__fontscale_normalsize_size_tl }
+ \__fontscale_dim_set_default_pt:Nn \l_fontscale_normalsize_size_dim
+ { \l__fontscale_normalsize_size_tl }
+ \dim_compare:nNnF \l_fontscale_normalsize_size_dim > \c_zero_dim
+ {
+ \msg_error:nnn { fontscale } { key-font-size-out-of-bounds }
+ { normalsize }
+ \prg_break:
+ }
}
- \prop_put:NnV \l_fontscale_normalsize_prop { size }
- \l_fontscale_normalsize_size_dim
\fp_set:Nn \l__fontscale_normalsize_size_fp
{ \l_fontscale_normalsize_size_dim }
\quark_if_no_value:NTF \l__fontscale_normalsize_baselineskip_tl
@@ -691,12 +631,17 @@
}
}
{
- \__fontscale_skip_set_with_default_pt:Nn
+ \__fontscale_skip_set_default_pt:Nn
\l_fontscale_normalsize_baselineskip_skip
{ \l__fontscale_normalsize_baselineskip_tl }
+ \dim_compare:nNnT \l_fontscale_normalsize_baselineskip_skip <
+ \l_fontscale_normalsize_size_dim
+ {
+ \msg_error:nnn { fontscale }
+ { key-font-baselineskip-out-of-bounds } { normalsize }
+ \prg_break:
+ }
}
- \prop_put:NnV \l_fontscale_normalsize_prop { baselineskip }
- \l_fontscale_normalsize_baselineskip_skip
}
% Auxiliary functions that expand to the font size depending on the name of the
% font size command.
@@ -745,57 +690,55 @@
{ Huge } { 24pt }
}
}
-\cs_new:Npn \__fontscale_keys_process_other_modular:n #1
- {
- \fp_to_dim:n
- {
- \l__fontscale_normalsize_size_fp * \l__fontscale_modular_ratio_fp
- ^ \use:c { c_fontscale_#1_step_fp }
- }
- }
\cs_new:Npn \__fontscale_keys_process_other_musical:n #1
{
\fp_to_dim:n
{
- \l__fontscale_normalsize_size_fp * \l__fontscale_musical_ratio_fp
+ \l__fontscale_musical_base_fp * \l__fontscale_musical_ratio_fp
^ ( \use:c { c_fontscale_#1_step_fp }
/ \l__fontscale_musical_notes_fp )
}
}
-% Sets the size, scale, and baselineskip of the other font size commands and
-% updates their property list entries. Issues a warning if the user sets both
-% the scale and size keys for the same font size command.
+% Sets the font size, font scale, and font baselineskip of the other font size
+% commands.
\cs_new_protected:Npn \__fontscale_keys_process_other:
{
- \cs_set_eq:Nc \__fontscale_keys_process_other_typographic_scale:n
+ \str_case:Vn \l__fontscale_typographic_scale_str
{
- \str_case:Vn \l__fontscale_typographic_scale_str
- {
- { classic-10pt } { __fontscale_keys_process_other_classic_xpt:n }
- { classic-11pt } { __fontscale_keys_process_other_classic_xipt:n }
- { classic-12pt } { __fontscale_keys_process_other_classic_xiipt:n }
- { modular } { __fontscale_keys_process_other_modular:n }
- { musical } { __fontscale_keys_process_other_musical:n }
- }
+ { classic-10pt }
+ {
+ \cs_set_eq:NN \__fontscale_keys_process_other_fn_aux:n
+ \__fontscale_keys_process_other_classic_xpt:n
+ }
+ { classic-11pt }
+ {
+ \cs_set_eq:NN \__fontscale_keys_process_other_fn_aux:n
+ \__fontscale_keys_process_other_classic_xipt:n
+ }
+ { classic-12pt }
+ {
+ \cs_set_eq:NN \__fontscale_keys_process_other_fn_aux:n
+ \__fontscale_keys_process_other_classic_xiipt:n
+ }
+ { musical }
+ {
+ \cs_set_eq:NN \__fontscale_keys_process_other_fn_aux:n
+ \__fontscale_keys_process_other_musical:n
+ \fp_set:Nn \l__fontscale_musical_base_fp
+ { \l__fontscale_musical_base_dim }
+ \fp_set:Nn \l__fontscale_musical_notes_fp
+ { \l__fontscale_musical_notes_int }
+ }
}
- \str_if_eq:VnT \l__fontscale_typographic_scale_str { musical }
+ \tl_map_function:nN
{
- \fp_set:Nn \l__fontscale_musical_notes_fp
- { \l__fontscale_musical_notes_int }
+ {tiny} {scriptsize} {footnotesize} {small}
+ {large} {Large} {LARGE} {huge} {Huge}
}
- \tl_map_function:NN \c__fontscale_names_other_tl
- \__fontscale_keys_process_other_aux:n
+ \__fontscale_keys_process_other_fn:n
}
-\cs_new_protected:Npn \__fontscale_keys_process_other_aux:n #1
+\cs_new_protected:Npn \__fontscale_keys_process_other_fn:n #1
{
- \quark_if_no_value:cF { l__fontscale_#1_size_tl }
- {
- \__fontscale_dim_set_with_default_pt:cn { l_fontscale_#1_size_dim }
- { \use:c { l__fontscale_#1_size_tl } }
- \quark_if_no_value:cF { l__fontscale_#1_scale_tl }
- { \msg_warning:nnn { fontscale } { key-font-scale-ignored } {#1} }
- \prg_break:
- }
\quark_if_no_value:cF { l__fontscale_#1_scale_tl }
{
\dim_set:cn { l_fontscale_#1_size_dim }
@@ -806,17 +749,42 @@
* ( \use:c { l__fontscale_#1_scale_tl } )
}
}
+ \dim_compare:nNnF { \use:c { l_fontscale_#1_size_dim } } > \c_zero_dim
+ {
+ \tl_map_break:n
+ {
+ \msg_error:nnn { fontscale } { key-font-scale-out-of-bounds }
+ {#1}
+ \prg_break:
+ }
+ }
+ \quark_if_no_value:cT { l__fontscale_#1_size_tl } { \prg_break: }
+ }
+ \quark_if_no_value:cF { l__fontscale_#1_size_tl }
+ {
+ \__fontscale_dim_set_default_pt:cn { l_fontscale_#1_size_dim }
+ { \use:c { l__fontscale_#1_size_tl } }
+ \dim_compare:nNnF { \use:c { l_fontscale_#1_size_dim } } > \c_zero_dim
+ {
+ \tl_map_break:n
+ {
+ \msg_error:nnn { fontscale } { key-font-size-out-of-bounds }
+ {#1}
+ \prg_break:
+ }
+ }
+ \quark_if_no_value:cF { l__fontscale_#1_scale_tl }
+ {
+ \msg_warning:nnn { fontscale } { key-font-scale-overwritten } {#1}
+ }
\prg_break:
}
\dim_set:cn { l_fontscale_#1_size_dim }
- { \__fontscale_keys_process_other_typographic_scale:n {#1} }
+ { \__fontscale_keys_process_other_fn_aux:n {#1} }
\prg_break:
\prg_break_point:
\fp_set:cn { l_fontscale_#1_scale_fp }
{ \use:c { l_fontscale_#1_size_dim } / \l__fontscale_normalsize_size_fp }
- \prop_put:cne { l_fontscale_#1_prop } { scale }
- { \fp_use:c { l_fontscale_#1_scale_fp } }
- \prop_put:cnv { l_fontscale_#1_prop } { size } { l_fontscale_#1_size_dim }
\quark_if_no_value:cTF { l__fontscale_#1_baselineskip_tl }
{
\skip_set:cn { l_fontscale_#1_baselineskip_skip }
@@ -829,122 +797,113 @@
}
}
{
- \__fontscale_skip_set_with_default_pt:cn
+ \__fontscale_skip_set_default_pt:cn
{ l_fontscale_#1_baselineskip_skip }
{ \use:c { l__fontscale_#1_baselineskip_tl } }
+ \dim_compare:nNnT { \use:c { l_fontscale_#1_baselineskip_skip } } <
+ { \use:c { l_fontscale_#1_size_dim } }
+ {
+ \tl_map_break:n
+ {
+ \msg_error:nnn { fontscale }
+ { key-font-baselineskip-out-of-bounds } {#1}
+ \prg_break:
+ }
+ }
}
- \prop_put:cnv { l_fontscale_#1_prop } { baselineskip }
- { l_fontscale_#1_baselineskip_skip }
}
% Issues a warning if the font sizes or font baselineskips (ignoring the
-% stretch and shrink components) are not in the correct order unless the value
-% for the key 'ignore-order' is 'true'.
+% stretch and shrink components) are not in the correct order.
\cs_new_protected:Npn \__fontscale_keys_process_check_order:
{
- \bool_if:NF \l__fontscale_ignore_order_bool
+ \dim_compare:nF
{
- \dim_compare:nF
- {
- \l_fontscale_tiny_size_dim
- < \l_fontscale_scriptsize_size_dim
- < \l_fontscale_footnotesize_size_dim
- < \l_fontscale_small_size_dim
- < \l_fontscale_normalsize_size_dim
- < \l_fontscale_large_size_dim
- < \l_fontscale_Large_size_dim
- < \l_fontscale_LARGE_size_dim
- < \l_fontscale_huge_size_dim
- < \l_fontscale_Huge_size_dim
- }
- { \msg_warning:nn { fontscale } { font-sizes-out-of-order } }
- \dim_compare:nF
- {
- \l_fontscale_tiny_baselineskip_skip
- < \l_fontscale_scriptsize_baselineskip_skip
- < \l_fontscale_footnotesize_baselineskip_skip
- < \l_fontscale_small_baselineskip_skip
- < \l_fontscale_normalsize_baselineskip_skip
- < \l_fontscale_large_baselineskip_skip
- < \l_fontscale_Large_baselineskip_skip
- < \l_fontscale_LARGE_baselineskip_skip
- < \l_fontscale_huge_baselineskip_skip
- < \l_fontscale_Huge_baselineskip_skip
- }
- { \msg_warning:nn { fontscale } { font-baselineskips-out-of-order } }
+ \l_fontscale_tiny_size_dim
+ < \l_fontscale_scriptsize_size_dim
+ < \l_fontscale_footnotesize_size_dim
+ < \l_fontscale_small_size_dim
+ < \l_fontscale_normalsize_size_dim
+ < \l_fontscale_large_size_dim
+ < \l_fontscale_Large_size_dim
+ < \l_fontscale_LARGE_size_dim
+ < \l_fontscale_huge_size_dim
+ < \l_fontscale_Huge_size_dim
}
+ { \msg_warning:nn { fontscale } { font-sizes-out-of-order } }
+ \dim_compare:nF
+ {
+ \l_fontscale_tiny_baselineskip_skip
+ < \l_fontscale_scriptsize_baselineskip_skip
+ < \l_fontscale_footnotesize_baselineskip_skip
+ < \l_fontscale_small_baselineskip_skip
+ < \l_fontscale_normalsize_baselineskip_skip
+ < \l_fontscale_large_baselineskip_skip
+ < \l_fontscale_Large_baselineskip_skip
+ < \l_fontscale_LARGE_baselineskip_skip
+ < \l_fontscale_huge_baselineskip_skip
+ < \l_fontscale_Huge_baselineskip_skip
+ }
+ { \msg_warning:nn { fontscale } { font-baselineskips-out-of-order } }
}
% DOCUMENT COMMANDS
-% The internal functions of each font size command are not used elsewhere in
-% the code for compatibility with user-defined hooks
-% (e.g. \AddToHook{cmd/normalsize/after}{<user-defined-function>}).
-\DeclareDocumentCommand \tiny { } { \__fontscale_tiny: }
-\cs_new_protected:Npn \__fontscale_tiny:
+% Defines the standard LaTeX font size commands from \tiny to \Huge and
+% initializes to \normalsize.
+\DeclareDocumentCommand \tiny { }
{
\__fontscale_fontsize:NNN \tiny \l_fontscale_tiny_size_dim
\l_fontscale_tiny_baselineskip_skip
}
-\DeclareDocumentCommand \scriptsize { } { \__fontscale_scriptsize: }
-\cs_new_protected:Npn \__fontscale_scriptsize:
+\DeclareDocumentCommand \scriptsize { }
{
\__fontscale_fontsize:NNN \scriptsize \l_fontscale_scriptsize_size_dim
\l_fontscale_scriptsize_baselineskip_skip
}
-\DeclareDocumentCommand \footnotesize { } { \__fontscale_footnotesize: }
-\cs_new_protected:Npn \__fontscale_footnotesize:
+\DeclareDocumentCommand \footnotesize { }
{
\__fontscale_fontsize:NNN \footnotesize \l_fontscale_footnotesize_size_dim
\l_fontscale_footnotesize_baselineskip_skip
}
-\DeclareDocumentCommand \small { } { \__fontscale_small: }
-\cs_new_protected:Npn \__fontscale_small:
+\DeclareDocumentCommand \small { }
{
\__fontscale_fontsize:NNN \small \l_fontscale_small_size_dim
\l_fontscale_small_baselineskip_skip
}
-\DeclareDocumentCommand \normalsize { } { \__fontscale_normalsize: }
-\cs_new_protected:Npn \__fontscale_normalsize:
+\DeclareDocumentCommand \normalsize { }
{
\__fontscale_fontsize:NNN \normalsize \l_fontscale_normalsize_size_dim
\l_fontscale_normalsize_baselineskip_skip
}
-\DeclareDocumentCommand \large { } { \__fontscale_large: }
-\cs_new_protected:Npn \__fontscale_large:
+\DeclareDocumentCommand \large { }
{
\__fontscale_fontsize:NNN \large \l_fontscale_large_size_dim
\l_fontscale_large_baselineskip_skip
}
-\DeclareDocumentCommand \Large { } { \__fontscale_Large: }
-\cs_new_protected:Npn \__fontscale_Large:
+\DeclareDocumentCommand \Large { }
{
\__fontscale_fontsize:NNN \Large \l_fontscale_Large_size_dim
\l_fontscale_Large_baselineskip_skip
}
-\DeclareDocumentCommand \LARGE { } { \__fontscale_LARGE: }
-\cs_new_protected:Npn \__fontscale_LARGE:
+\DeclareDocumentCommand \LARGE { }
{
\__fontscale_fontsize:NNN \LARGE \l_fontscale_LARGE_size_dim
\l_fontscale_LARGE_baselineskip_skip
}
-\DeclareDocumentCommand \huge { } { \__fontscale_huge: }
-\cs_new_protected:Npn \__fontscale_huge:
+\DeclareDocumentCommand \huge { }
{
\__fontscale_fontsize:NNN \huge \l_fontscale_huge_size_dim
\l_fontscale_huge_baselineskip_skip
}
-\DeclareDocumentCommand \Huge { } { \__fontscale_Huge: }
-\cs_new_protected:Npn \__fontscale_Huge:
+\DeclareDocumentCommand \Huge { }
{
\__fontscale_fontsize:NNN \Huge \l_fontscale_Huge_size_dim
\l_fontscale_Huge_baselineskip_skip
}
-% Initializes to \normalsize.
\normalsize
-\NewExpandableDocumentCommand \CurrentFontStep { }
- { \__fontscale_current_font_step: }
-\cs_new:Npn \__fontscale_current_font_step:
+\NewExpandableDocumentCommand \CurrentFontStep { } { \__fontscale_step: }
+\cs_new:Npn \__fontscale_step:
{
\dim_case:nnF { \f@size pt }
{
@@ -960,47 +919,100 @@
{ \l_fontscale_Huge_size_dim } { 5 }
}
{
- \str_case:Vn \l__fontscale_typographic_scale_str
+ \str_if_eq:VnT \l__fontscale_typographic_scale_str { musical }
{
- { modular }
- {
- \fp_eval:n
- {
- ln ( \f@size / \l__fontscale_normalsize_size_fp )
- / ln ( \l__fontscale_modular_ratio_fp )
- }
- }
- { musical }
- {
- \fp_eval:n
- {
- \l__fontscale_musical_notes_fp
- * ln ( \f@size / \l__fontscale_normalsize_size_fp )
- / ln ( \l__fontscale_musical_ratio_fp )
- }
- }
+ \fp_eval:n
+ {
+ \l__fontscale_musical_notes_fp
+ * ln ( \f@size / \l__fontscale_musical_base_fp )
+ / ln ( \l__fontscale_musical_ratio_fp )
+ }
}
}
}
-\NewExpandableDocumentCommand \CurrentFontScale { }
- { \__fontscale_current_font_scale: }
-\cs_new:Npn \__fontscale_current_font_scale:
+\NewExpandableDocumentCommand \CurrentFontScale { } { \__fontscale_scale: }
+\cs_new:Npn \__fontscale_scale:
{ \fp_eval:n { \f@size / \l__fontscale_normalsize_size_fp } }
-\NewExpandableDocumentCommand \CurrentFontSize { }
- { \__fontscale_current_font_size: }
-\cs_new:Npn \__fontscale_current_font_size: { \f@size pt }
+\NewExpandableDocumentCommand \CurrentFontSize { } { \__fontscale_size: }
+\cs_new:Npn \__fontscale_size: { \f@size pt }
\NewExpandableDocumentCommand \CurrentFontBaselineskip { }
- { \__fontscale_current_font_baselineskip: }
-\cs_new:Npn \__fontscale_current_font_baselineskip: { \f@baselineskip }
+ { \__fontscale_baselineskip: }
+\cs_new:Npn \__fontscale_baselineskip: { \f@baselineskip }
+
+\NewExpandableDocumentCommand \CurrentFontSizeCommand { }
+ { \__fontscale_name: }
+\cs_new:Npn \__fontscale_name:
+ {
+ \dim_case:nn { \f@size pt }
+ {
+ { \l_fontscale_tiny_size_dim }
+ {
+ \skip_if_eq:nnT { \l_fontscale_tiny_baselineskip_skip }
+ { \f@baselineskip } { tiny }
+ }
+ { \l_fontscale_scriptsize_size_dim }
+ {
+ \skip_if_eq:nnT { \l_fontscale_scriptsize_baselineskip_skip }
+ { \f@baselineskip } { scriptsize }
+ }
+ { \l_fontscale_footnotesize_size_dim }
+ {
+ \skip_if_eq:nnT { \l_fontscale_footnotesize_baselineskip_skip }
+ { \f@baselineskip } { footnotesize }
+ }
+ { \l_fontscale_small_size_dim }
+ {
+ \skip_if_eq:nnT { \l_fontscale_small_baselineskip_skip }
+ { \f@baselineskip } { small }
+ }
+ { \l_fontscale_normalsize_size_dim }
+ {
+ \skip_if_eq:nnT { \l_fontscale_normalsize_baselineskip_skip }
+ { \f@baselineskip } { normalsize }
+ }
+ { \l_fontscale_large_size_dim }
+ {
+ \skip_if_eq:nnT { \l_fontscale_large_baselineskip_skip }
+ { \f@baselineskip } { large }
+ }
+ { \l_fontscale_Large_size_dim }
+ {
+ \skip_if_eq:nnT { \l_fontscale_Large_baselineskip_skip }
+ { \f@baselineskip } { Large }
+ }
+ { \l_fontscale_LARGE_size_dim }
+ {
+ \skip_if_eq:nnT { \l_fontscale_LARGE_baselineskip_skip }
+ { \f@baselineskip } { LARGE }
+ }
+ { \l_fontscale_huge_size_dim }
+ {
+ \skip_if_eq:nnT { \l_fontscale_huge_baselineskip_skip }
+ { \f@baselineskip } { huge }
+ }
+ { \l_fontscale_Huge_size_dim }
+ {
+ \skip_if_eq:nnT { \l_fontscale_Huge_baselineskip_skip }
+ { \f@baselineskip } { Huge }
+ }
+ }
+ }
\NewDocumentCommand \SetFontStep { s m }
{
- \IfBooleanTF #1
- { \__fontscale_add_font_step:n {#2} }
- { \__fontscale_set_font_step:n {#2} }
+ \mode_if_math:TF
+ {
+ \msg_warning:nne { fontscale } { math-mode-warning }
+ { \token_to_str:N \SetFontStep }
+ }
+ {
+ \IfBooleanTF #1
+ { \__fontscale_add_font_step:n {#2} }
+ { \__fontscale_set_font_step:n {#2} }
+ }
}
% Using \str_case: here is significantly faster (and easier to write) than
% repeatedly testing \fp_compare:.
@@ -1020,49 +1032,42 @@
{ 5 } { \Huge }
}
{
- \str_case:VnF \l__fontscale_typographic_scale_str
+ \str_if_eq:VnTF \l__fontscale_typographic_scale_str { musical }
{
- { modular }
- {
- \__fontscale_fontsize:n
- {
- \fp_to_dim:n
- {
- \l__fontscale_normalsize_size_fp
- * \l__fontscale_modular_ratio_fp ^ (#1)
- }
- }
- }
- { musical }
- {
- \__fontscale_fontsize:n
- {
- \fp_to_dim:n
- {
- \l__fontscale_normalsize_size_fp
- * \l__fontscale_musical_ratio_fp
- ^ ( (#1) / \l__fontscale_musical_notes_fp )
- }
- }
- }
+ \__fontscale_fontsize:n
+ {
+ \fp_to_dim:n
+ {
+ \l__fontscale_musical_base_fp
+ * \l__fontscale_musical_ratio_fp
+ ^ ( (#1) / \l__fontscale_musical_notes_fp )
+ }
+ }
}
{ \msg_error:nn { fontscale } { font-step-out-of-bounds } }
}
}
\cs_new_protected:Npn \__fontscale_add_font_step:n #1
{
- \tl_set:Ne \l__fontscale_step_tl { \__fontscale_current_font_step: }
- \tl_if_empty:NTF \l__fontscale_step_tl
+ \tl_set:Ne \l__fontscale_tmp_tl { \__fontscale_step: }
+ \tl_if_empty:NTF \l__fontscale_tmp_tl
{ \msg_error:nn { fontscale } { current-font-step-out-of-bounds } }
- { \__fontscale_add_font_step_aux:n { (#1) + \l__fontscale_step_tl } }
+ { \__fontscale_add_font_step_aux:n { (#1) + \l__fontscale_tmp_tl } }
}
\cs_new_eq:NN \__fontscale_add_font_step_aux:n \__fontscale_set_font_step:n
\NewDocumentCommand \SetFontScale { s m }
{
- \IfBooleanTF #1
- { \__fontscale_add_font_scale:n {#2} }
- { \__fontscale_set_font_scale:n {#2} }
+ \mode_if_math:TF
+ {
+ \msg_warning:nne { fontscale } { math-mode-warning }
+ { \token_to_str:N \SetFontScale }
+ }
+ {
+ \IfBooleanTF #1
+ { \__fontscale_add_font_scale:n {#2} }
+ { \__fontscale_set_font_scale:n {#2} }
+ }
}
\cs_new_protected:Npn \__fontscale_set_font_scale:n #1
{
@@ -1077,70 +1082,150 @@
\NewDocumentCommand \SetFontSize { s m }
{
- \IfBooleanTF #1
- { \__fontscale_add_font_size:n {#2} }
- { \__fontscale_set_font_size:n {#2} }
+ \mode_if_math:TF
+ {
+ \msg_warning:nne { fontscale } { math-mode-warning }
+ { \token_to_str:N \SetFontSize }
+ }
+ {
+ \IfBooleanTF #1
+ { \__fontscale_add_font_size:n {#2} }
+ { \__fontscale_set_font_size:n {#2} }
+ }
}
\cs_new_eq:NN \__fontscale_set_font_size:n \__fontscale_fontsize:n
\cs_new_protected:Npn \__fontscale_add_font_size:n #1
{
- \__fontscale_dim_set_with_default_pt:Nn \l__fontscale_size_dim {#1}
- \dim_add:Nn \l__fontscale_size_dim { \f@size pt }
- \__fontscale_fontsize:n { \l__fontscale_size_dim }
+ \__fontscale_dim_set_default_pt:Nn \l__fontscale_tmp_dim {#1}
+ \__fontscale_fontsize:n { \l__fontscale_tmp_dim + \f@size pt }
}
\NewDocumentCommand \ScaleFont { m }
- { \__fontscale_scale_font_size_baselineskip:n {#1} }
-\cs_new_protected:Npn \__fontscale_scale_font_size_baselineskip:n #1
{
+ \mode_if_math:TF
+ {
+ \msg_warning:nne { fontscale } { math-mode-warning }
+ { \token_to_str:N \ScaleFont }
+ }
+ { \__fontscale_scale_font:n {#1} }
+ }
+\cs_new_protected:Npn \__fontscale_scale_font:n #1
+ {
+ \fp_set:Nn \l__fontscale_tmp_fp {#1}
\__fontscale_fontsize:nn
- { \fp_to_dim:n { \f@size * (#1) } }
- { \fp_to_dim:n { \dim_to_fp:n { \f@baselineskip } * (#1) } }
+ { \fp_to_dim:n { \f@size * \l__fontscale_tmp_fp } }
+ {
+ \fp_to_dim:n
+ { \dim_to_fp:n { \f@baselineskip } * \l__fontscale_tmp_fp }
+ }
}
\NewDocumentCommand \SetFontSizeBaselineskip { m m }
- { \__fontscale_set_font_size_baselineskip:nn {#1} {#2} }
+ {
+ \mode_if_math:TF
+ {
+ \msg_warning:nne { fontscale } { math-mode-warning }
+ { \token_to_str:N \SetFontSizeBaselineskip }
+ }
+ { \__fontscale_set_font_size_baselineskip:nn {#1} {#2} }
+ }
\cs_new_eq:NN \__fontscale_set_font_size_baselineskip:nn
\__fontscale_fontsize:nn
-\NewDocumentCommand \PrintFontParameters { }
- { \__fontscale_print_font_parameters: }
-\cs_new_protected:Npn \__fontscale_print_font_parameters:
+\NewDocumentCommand \PrintFontSizeParameters { }
+ { \__fontscale_print_font_size_parameters: }
+\cs_new_protected:Npn \__fontscale_print_font_size_parameters:
{
- step ~=~ \__fontscale_current_font_step: ,~
- scale ~=~ \__fontscale_current_font_scale: ,~
- size ~=~ \__fontscale_current_font_size: ,~
- baselineskip ~=~ \__fontscale_current_font_baselineskip:
+ step ~=~ \__fontscale_step: ,~
+ scale ~=~ \__fontscale_scale: ,~
+ size ~=~ \__fontscale_size: ,~
+ baselineskip ~=~ \__fontscale_baselineskip:
}
-\NewDocumentCommand \PrintAllFontParameters { }
- { \__fontscale_print_all_font_parameters: }
-\cs_new_protected:Npn \__fontscale_print_all_font_parameters:
+\NewDocumentCommand \PrintAllFontSizeParameters { }
{
- \tl_map_inline:Nn \c__fontscale_names_tl
+ \mode_if_math:TF
{
- \prop_get:cnN { l_fontscale_##1_prop } { step } \l__fontscale_step_tl
- \prop_get:cnN { l_fontscale_##1_prop } { scale } \l__fontscale_scale_tl
- \token_to_str:c {##1} \@ \c_colon_str \c_space_tl
- step ~=~ \l__fontscale_step_tl ,~
- scale ~=~ \l__fontscale_scale_tl ,~
- size ~=~ \dim_use:c { l_fontscale_##1_size_dim } ,~
- baselineskip ~=~ \skip_use:c { l_fontscale_##1_baselineskip_skip }
- \str_if_eq:nnF {##1} { Huge } { \newline }
+ \msg_error:nne { fontscale } { math-mode-error }
+ { \token_to_str:N \PrintAllFontSizeParameters }
+ }
+ { \__fontscale_print_all_font_size_parameters: }
+ }
+\cs_new_protected:Npn \__fontscale_print_all_font_size_parameters:
+ {
+ \token_to_str:N \tiny \c_colon_str \c_space_tl
+ step ~=~ -4 ,~
+ scale ~=~ \fp_use:N \l_fontscale_tiny_scale_fp ,~
+ size ~=~ \dim_use:N \l_fontscale_tiny_size_dim ,~
+ baselineskip ~=~ \skip_use:N \l_fontscale_tiny_baselineskip_skip
+ \newline
+ \token_to_str:N \scriptsize \c_colon_str \c_space_tl
+ step ~=~ -3 ,~
+ scale ~=~ \fp_use:N \l_fontscale_scriptsize_scale_fp ,~
+ size ~=~ \dim_use:N \l_fontscale_scriptsize_size_dim ,~
+ baselineskip ~=~ \skip_use:N \l_fontscale_scriptsize_baselineskip_skip
+ \newline
+ \token_to_str:N \footnotesize \c_colon_str \c_space_tl
+ step ~=~ -2 ,~
+ scale ~=~ \fp_use:N \l_fontscale_footnotesize_scale_fp ,~
+ size ~=~ \dim_use:N \l_fontscale_footnotesize_size_dim ,~
+ baselineskip ~=~ \skip_use:N \l_fontscale_footnotesize_baselineskip_skip
+ \newline
+ \token_to_str:N \small \c_colon_str \c_space_tl
+ step ~=~ -1 ,~
+ scale ~=~ \fp_use:N \l_fontscale_small_scale_fp ,~
+ size ~=~ \dim_use:N \l_fontscale_small_size_dim ,~
+ baselineskip ~=~ \skip_use:N \l_fontscale_small_baselineskip_skip
+ \newline
+ \token_to_str:N \normalsize \c_colon_str \c_space_tl
+ step ~=~ 0 ,~
+ scale ~=~ 1 ,~
+ size ~=~ \dim_use:N \l_fontscale_normalsize_size_dim ,~
+ baselineskip ~=~ \skip_use:N \l_fontscale_normalsize_baselineskip_skip
+ \newline
+ \token_to_str:N \large \c_colon_str \c_space_tl
+ step ~=~ 1 ,~
+ scale ~=~ \fp_use:N \l_fontscale_large_scale_fp ,~
+ size ~=~ \dim_use:N \l_fontscale_large_size_dim ,~
+ baselineskip ~=~ \skip_use:N \l_fontscale_large_baselineskip_skip
+ \newline
+ \token_to_str:N \Large \c_colon_str \c_space_tl
+ step ~=~ 2 ,~
+ scale ~=~ \fp_use:N \l_fontscale_Large_scale_fp ,~
+ size ~=~ \dim_use:N \l_fontscale_Large_size_dim ,~
+ baselineskip ~=~ \skip_use:N \l_fontscale_Large_baselineskip_skip
+ \newline
+ \token_to_str:N \LARGE \@ \c_colon_str \c_space_tl
+ step ~=~ 3 ,~
+ scale ~=~ \fp_use:N \l_fontscale_LARGE_scale_fp ,~
+ size ~=~ \dim_use:N \l_fontscale_LARGE_size_dim ,~
+ baselineskip ~=~ \skip_use:N \l_fontscale_LARGE_baselineskip_skip
+ \newline
+ \token_to_str:N \huge \c_colon_str \c_space_tl
+ step ~=~ 4 ,~
+ scale ~=~ \fp_use:N \l_fontscale_huge_scale_fp ,~
+ size ~=~ \dim_use:N \l_fontscale_huge_size_dim ,~
+ baselineskip ~=~ \skip_use:N \l_fontscale_huge_baselineskip_skip
+ \newline
+ \token_to_str:N \Huge \c_colon_str \c_space_tl
+ step ~=~ 5 ,~
+ scale ~=~ \fp_use:N \l_fontscale_Huge_scale_fp ,~
+ size ~=~ \dim_use:N \l_fontscale_Huge_size_dim ,~
+ baselineskip ~=~ \skip_use:N \l_fontscale_Huge_baselineskip_skip
+ }
+
+\NewDocumentCommand \PrintSampleText { s +m }
+ {
+ \mode_if_math:TF
+ {
+ \msg_error:nne { fontscale } { math-mode-error }
+ { \token_to_str:N \PrintSampleText }
+ }
+ {
+ \IfBooleanTF #1
+ { \__fontscale_print_sample_text_descending_order:n {#2} }
+ { \__fontscale_print_sample_text_ascending_order:n {#2} }
}
- }
-
-\NewDocumentCommand \PrintSampleText
- { s O
- {
- The~ \texttt { fontscale }~ package \c_colon_str \c_space_tl
- A~ user~ interface~ for~ setting~ document~ font~ sizes
- }
- }
- {
- \IfBooleanTF #1
- { \__fontscale_print_sample_text_descending_order:n {#2} }
- { \__fontscale_print_sample_text_ascending_order:n {#2} }
}
\cs_new_protected:Npn \__fontscale_print_sample_text_ascending_order:n #1
{
@@ -1169,80 +1254,26 @@
{ \tiny #1 \par }
}
-\NewDocumentCommand \PrintFontSizeCommand { } { \__fontscale_print_name: }
-\cs_new_protected:Npn \__fontscale_print_name:
+\NewDocumentCommand \PrintFontSizeCommand { }
{
- \dim_case:nn { \f@size pt }
+ \mode_if_math:TF
{
- { \l_fontscale_tiny_size_dim }
- {
- \skip_if_eq:nnT { \f@baselineskip }
- { \l_fontscale_tiny_baselineskip_skip }
- { \token_to_str:N \tiny \prg_break: }
- }
- { \l_fontscale_scriptsize_size_dim }
- {
- \skip_if_eq:nnT { \f@baselineskip }
- { \l_fontscale_scriptsize_baselineskip_skip }
- { \token_to_str:N \scriptsize \prg_break: }
- }
- { \l_fontscale_footnotesize_size_dim }
- {
- \skip_if_eq:nnT { \f@baselineskip }
- { \l_fontscale_footnotesize_baselineskip_skip }
- { \token_to_str:N \footnotesize \prg_break: }
- }
- { \l_fontscale_small_size_dim }
- {
- \skip_if_eq:nnT { \f@baselineskip }
- { \l_fontscale_small_baselineskip_skip }
- { \token_to_str:N \small \prg_break: }
- }
- { \l_fontscale_normalsize_size_dim }
- {
- \skip_if_eq:nnT { \f@baselineskip }
- { \l_fontscale_normalsize_baselineskip_skip }
- { \token_to_str:N \normalsize \prg_break: }
- }
- { \l_fontscale_large_size_dim }
- {
- \skip_if_eq:nnT { \f@baselineskip }
- { \l_fontscale_large_baselineskip_skip }
- { \token_to_str:N \large \prg_break: }
- }
- { \l_fontscale_Large_size_dim }
- {
- \skip_if_eq:nnT { \f@baselineskip }
- { \l_fontscale_Large_baselineskip_skip }
- { \token_to_str:N \Large \prg_break: }
- }
- { \l_fontscale_LARGE_size_dim }
- {
- \skip_if_eq:nnT { \f@baselineskip }
- { \l_fontscale_LARGE_baselineskip_skip }
- { \token_to_str:N \LARGE \@ \prg_break: }
- }
- { \l_fontscale_huge_size_dim }
- {
- \skip_if_eq:nnT { \f@baselineskip }
- { \l_fontscale_huge_baselineskip_skip }
- { \token_to_str:N \huge \prg_break: }
- }
- { \l_fontscale_Huge_size_dim }
- {
- \skip_if_eq:nnT { \f@baselineskip }
- { \l_fontscale_Huge_baselineskip_skip }
- { \token_to_str:N \Huge \prg_break: }
- }
+ \msg_error:nne { fontscale } { math-mode-error }
+ { \token_to_str:N \PrintFontSizeCommand }
}
- UNDEFINED \@
- \prg_break:
- \prg_break_point:
+ { \__fontscale_print_name: }
+ }
+\cs_new_protected:Npn \__fontscale_print_name:
+ {
+ \str_set:Ne \l__fontscale_tmp_str { \__fontscale_name: }
+ \str_if_empty:NTF \l__fontscale_tmp_str
+ { \token_to_str:N \undefined }
+ { \c_backslash_str \l__fontscale_tmp_str \@ }
}
% TEXT PURIFY
-\cs_new:Npn \__fontscale_text_purify_equivalent:n #1
+\cs_new:Npn \__fontscale_remove_arg_spec_sm:n #1
{
\bool_lazy_all:nT
{
@@ -1252,11 +1283,13 @@
}
{ \use_none:n }
}
+\text_declare_purify_equivalent:Nn \fontscalesetup
+ { \__fontscale_remove_arg_spec_sm:n }
\text_declare_purify_equivalent:Nn \SetFontStep
- { \__fontscale_text_purify_equivalent:n }
+ { \__fontscale_remove_arg_spec_sm:n }
\text_declare_purify_equivalent:Nn \SetFontScale
- { \__fontscale_text_purify_equivalent:n }
+ { \__fontscale_remove_arg_spec_sm:n }
\text_declare_purify_equivalent:Nn \SetFontSize
- { \__fontscale_text_purify_equivalent:n }
+ { \__fontscale_remove_arg_spec_sm:n }
\text_declare_purify_equivalent:Nn \ScaleFont { \use_none:n }
\text_declare_purify_equivalent:Nn \SetFontSizeBaselineskip { \use_none:nn } \ No newline at end of file
diff --git a/macros/latex/contrib/fontscale/fontscale.tex b/macros/latex/contrib/fontscale/fontscale.tex
new file mode 100644
index 0000000000..3737afe5b6
--- /dev/null
+++ b/macros/latex/contrib/fontscale/fontscale.tex
@@ -0,0 +1,409 @@
+\documentclass{beery}
+
+
+\begin{document}
+
+
+\section*
+ {%
+ \SetFontStep*{1}%
+ The \pkg{fontscale} package%
+ }
+
+A flexible interface for setting font sizes
+
+Oliver Beery
+
+Version 2.1.0\quad{}12 August 2024
+
+
+\section{Introduction}
+\label{sec:intro}
+
+\subsection{About}
+\label{subsec:about}
+
+\listheading{The \pkg{fontscale} package provides the following functionalities:}
+\begin{itemize}
+ \item
+ Set font sizes using a classic or musical typographic scale (\S\ref{subsec:typographicscale}).
+ \item
+ Set arbitrary font sizes and font baselineskips for the standard \LaTeX{} font size commands \cs{tiny}, \cs{scriptsize}, \cs{footnotesize}, \cs{small}, \cs{normalsize}, \cs{large}, \cs{Large}, \cs{LARGE}, \cs{huge}, and \cs{Huge} (\S\ref{subsec:overwriting}).
+ \item
+ Set the font sizes and font baselineskips of the standard \LaTeX{} font size commands mid\-/document or within a local group (\S\ref{subsec:fontscalesetup}).
+ \item
+ Provides expandable commands that expand to the current font step, font scale, font size, font baselineskip, or font size command (\S\ref{subsec:expandable}).
+ \item
+ Provides additional font size commands, including setting the font size by setting the font step or font scale and setting the font size relative to the current font size using more powerful tools than the \pkg{scalefnt} and \pkg{relsize} packages (\S\ref{subsec:fontsize}).
+ \item
+ For \LaTeX3 programmers, this package defines public \pkg{expl3} variables that store the font step, font scale, font size, and font baselineskip of each font size command from \cs{tiny} to \cs{Huge} (\S\ref{sec:programming}).
+\end{itemize}
+
+\subsection{Loading the package}
+\label{subsec:loading}
+
+\listheading{Requirements:}
+\begin{itemize}
+ \item \LaTeXe{} version 2023-11-01 or newer
+ \item \pkg{l3kernel} version 2023-10-10 or newer
+\end{itemize}
+
+You may need to ensure that your \LaTeX{} installation is up\-/to\-/date before using this package.
+
+This package lets the user set arbitrary font sizes.
+This works with most fonts produced today, but, for historical reasons, the default Computer Modern font is available only in a number of discrete font sizes.
+If you get a warning that Computer Modern is not available in the requested font size, you may need to add the code \cs{RequirePackage}\allowbreak\verb|{fix-cm}| before \cs{documentclass} to make Computer Modern available at arbitrary font sizes.
+Alternatively, you can use the Latin Modern font by loading the \pkg{lmodern} package.
+
+The \pkg{fontscale} package has no package options.
+Instead, this package provides the command \cs{fontscalesetup}\marg{key\-/value list} (\S\ref{subsec:fontscalesetup}) which sets the package keys (\S\ref{sec:keys}).
+
+When loaded, this package uses \cs{normalsize} after defining and initializing the font size commands from \cs{tiny} to \cs{Huge}.
+
+Many \LaTeX{} document classes have a font size option (e.g.\@ \Key{10pt}, \Key{11pt}, \Key{12pt}) which not only changes the set of document font sizes, but also modifies additional settings such as the page layout and vertical spacing which were specifically designed to work with those font sizes.
+For this reason, you may want to set the document class font size option close to the font size of \cs{normalsize} set by this package.
+
+\listheading{Internally, this package defines each font size command from \cs{tiny} to \cs{Huge} using the low\-/level font commands \cs{fontsize} and \cs{selectfont}\---they have no additional functionality beyond that of \cs{fontsize} and \cs{selectfont}, except that they:}
+\begin{itemize}
+ \item
+ Set the kernel command \cs{@currsize} equal to the font size command.
+ This is needed only for compatibility.
+ \item
+ Do nothing, except issue a warning, if used in math mode.
+\end{itemize}
+
+Unlike the standard \LaTeX{} document classes, the font size commands from \cs{tiny} to \cs{Huge} defined by this package do not change the vertical spacing for displayed math and list structures.
+If the user would like to add this functionality or perhaps other features to the font size commands, they can use hooks, which are documented in the \LaTeXe{} kernel.
+
+\subsection{The font size parameters}
+\label{subsec:fontsizeparameters}
+
+When using the \pkg{fontscale} package, each font size, including the standard \LaTeX{} font size commands from \cs{tiny} to \cs{Huge}, has a font step, font scale, font size, and font baselineskip.
+The latter two parameters are the familiar first and second arguments to the low\-/level font command \cs{fontsize}\marg{dimen}\marg{skip}.
+(The font baselineskip, stored in the kernel command \cs{f@baselineskip}, should not be confused with the paragraph baselineskip \cs{baselineskip}.)
+The font scale and font step are different ways of describing the font size.
+The font scale is the relative font size; the ratio of the font size to \cs{normalsize}, which has a font scale of \num{1}.
+The font step is the number of font size gradations from \cs{normalsize}, which has a font step of \num{0}.
+Table~\ref{table:fontsteps} displays the font step of each font size command.
+
+\input{./fontscale-table-font-steps.tex}
+
+\subsection{Syntax}
+\label{subsec:syntax}
+
+This package defines some keys and commands that take as a value or argument a \meta{floating point expression}, \meta{integer expression}, \meta{dimen expression}, or \meta{skip expression}.
+This syntax has the same representation as the arguments to \cs{fpeval}, \cs{inteval}, \cs{dimeval}, and \cs{skipeval}, documented in \pkg{usrguide}.%
+\footnote{\url{https://ctan.org/pkg/usrguide}}
+
+
+\section{Keys}
+\label{sec:keys}
+
+This section documents the keys provided by the \pkg{fontscale} package.
+This package has no package options.
+Set the package keys using \cs{fontscalesetup}\marg{key-value list} (\S\ref{subsec:fontscalesetup}).
+
+\subsection{The typographic scale}
+\label{subsec:typographicscale}
+
+The font sizes of the font size commands from \cs{tiny} to \cs{Huge} are initially set by the key \Key{typographic\-/scale}.
+
+\Key{typographic-scale}
+ [%
+ classic-10pt$\,\vert\,$\allowbreak
+ classic-11pt$\,\vert\,$\allowbreak
+ classic-12pt$\,\vert\,$\allowbreak\hspace*{1.5em}%
+ musical%
+ ]
+ [classic-10pt]
+\newline
+\Key{classic-10pt}
+\newline
+\Key{classic-11pt}
+\newline
+\Key{classic-12pt}
+\nopagebreak\newline
+\Key{musical}
+
+The value of the key \Key{typographic\-/scale} must be \Value{classic\-/10pt}, \Value{classic\-/11pt}, \Value{classic\-/12pt}, or \Value{musical}.
+The initial value is \Value{classic\-/10pt}.
+Sets the font size of each font size command from \cs{tiny} to \cs{Huge} using a classic or musical typographic scale.
+These are common methods of choosing a set of document font sizes.
+The keys \Key{classic\-/10pt}, \Key{classic\-/11pt}, \Key{classic\-/12pt}, and \Key{musical} set the key \Key{typographic\-/scale} to the corresponding value.
+
+\input{./fontscale-table-classic.tex}
+
+The classic typographic scale consists of the traditional font sizes
+\numlist{6;7;8;9;10;11;12;14;16;18;21;24;36;48;60;72}.%
+\footnote{See \S3.1 of \textit{The Elements of Typographic Style} by Robert Bringhurst.}
+They have been used since the sixteenth century and are the default font sizes on most computer software.
+Setting the value of the key \Key{typographic\-/scale} to \Key{classic\-/10pt}, \Key{classic\-/11pt}, or \Key{classic\-/12pt} sets the font size of each font size command from \cs{tiny} to \cs{Huge} to values based on their position in the classic typographic scale.
+The named point size\---\qtylist[list-final-separator={, or }]{10;11;12}{pt}\---is the font size of \cs{normalsize}.
+The font sizes of the other font size commands are the adjacent font sizes in the classic typographic scale.
+Table~\ref{table:classic} displays the font size of each font size command when using a classic typographic scale.
+
+\Key{musical/base}[\meta{dimen expression}][10pt]%
+\nopagebreak\newline
+\Key{musical/ratio}[\meta{floating point expression}][2]%
+\nopagebreak\newline
+\Key{musical/notes}[\meta{integer expression}][5]
+
+The key \Key{typographic\-/scale}[musical] sets the font size of each font size command from \cs{tiny} to \cs{Huge} using a musical typographic scale.
+The font sizes are calculated using the formula:%
+\footnote
+ {%
+ I have referenced this article by Spencer Mortensen:
+ \newline
+ \url{https://spencermortensen.com/articles/typographic-scale/}%
+ }
+\begin{equation}\label{eq:musical}
+ f_i = f_0 \times r ^ { i / n }
+\end{equation}
+$f_i$ is the font size with font step~$i$.
+$f_0$ is the base font size.
+$n$ is the number of musical notes\---the number of font size gradations or steps above $f_0$.
+$r$ is the musical ratio, the ratio of the highest to the lowest note $ f_n / f_0 $.
+
+The key \Key{musical\slash{}base} sets the base font size to the value of \meta{dimen expression}, appending a default unit of \unit{pt}.
+The base font size is the font size of \cs{normalsize}.
+The key \Key{musical\slash{}ratio} sets the musical ratio to the result of computing the \meta{floating point expression}.
+The key \Key{musical\slash{}notes} sets the number of musical notes to the value of \meta{integer expression}.
+Table~\ref{table:musical} displays the font size of each font size command when using a musical typographic scale with the initial values.
+
+\input{./fontscale-table-musical.tex}
+
+\subsection{The baselineskip-size-ratio}
+\label{subsec:baselineskipsizeratio}
+
+The font baselineskips of the font size commands from \cs{tiny} to \cs{Huge} are initially set by the key \Key{baselineskip\-/size\-/ratio}.
+
+\Key{baselineskip-size-ratio}[\meta{floating point expression}][1.2]
+\KeepNextPar*
+
+Sets the font baselineskip of each font size command from \cs{tiny} to \cs{Huge} equal to its font size \texttimes{} the result of computing the \meta{floating point expression}.
+Sets the font baselineskip set by \cs{SetFontStep}, \cs{SetFontScale}, and \cs{SetFontSize} (\S\ref{subsec:fontsize}) equal to the new font size \texttimes{} the result of computing the \meta{floating point expression}.
+The font baselineskip must be greater than or equal to the font size.
+
+
+\subsection{Overwriting the previous keys}
+\label{subsec:overwriting}
+
+This subsection documents keys for directly setting the font scales, font sizes, and font baselineskips of the font size commands from \cs{tiny} to \cs{Huge}.
+When doing so, the user should take care to ensure that the lengths of the font sizes and font baselineskips remain correctly ordered from \cs{tiny} to \cs{Huge}.
+This is important for typographic and syntactic consistency.
+If the font size commands are in the wrong order, this package will issue a warning and some package features may not work correctly.
+
+\Key{\meta{font size command}/scale}[\meta{floating point expression}][\meta{not set}]
+\KeepNextPar*
+
+Sets the font size of \meta{font size command} by setting its font scale to the result of computing the \meta{floating point expression}.
+Overwrites the font size set by the key \Key{typographic\-/scale}.
+The key \Key{normalsize\slash{}scale} is not defined.
+
+\Key{\meta{font size command}/size}[\meta{dimen expression}][\meta{not set}]
+\KeepNextPar*
+
+Sets the font size of \meta{font size command} to the value of \meta{dimen expression}, appending a default unit of \unit{pt}.
+Overwrites the font size set by the keys \Key{typographic\-/scale} and \Key{\meta{font size command}\slash{}scale}.
+
+\Key{\meta{font size command}/baselineskip}[\meta{skip expression}][\meta{not set}]
+\KeepNextPar*
+
+Sets the font baselineskip of \meta{font size command} to the value of \meta{skip expression}, appending a default unit of \unit{pt}.
+The font baselineskip must be greater than or equal to the font size.
+Overwrites the font baselineskip set by the key \Key{baselineskip\-/size\-/ratio}.
+
+\Key{\meta{font size command}}[\meta{dimen expression}]
+\nopagebreak\newline
+\Key{\meta{font size command}}[\meta{dimen expression}/\meta{skip expression}]
+
+Sets the keys \Key{\meta{font size command}\slash{}size}[\meta{dimen expression}] or \Key{\meta{font size command}\slash{}baselineskip}[\meta{skip expression}] in a condensed format.
+The latter format resembles traditional typographic notation where the size and leading of a text can be expressed as, for example, \num{10}/\num{12} or \num{11}/\num{13}.
+The number before\slash{}after the slash is the size\slash{}leading in units of \unit{pt}.
+
+
+\section{Commands}
+\label{sec:commands}
+
+This section documents the commands provided by the \pkg{fontscale} package.
+
+\subsection{Setting the keys}
+\label{subsec:fontscalesetup}
+
+\cs{fontscalesetup} \sarg{} \marg{key-value list}
+\KeepNextPar*
+
+Sets and processes the \pkg{fontscale} package keys (\S\ref{sec:keys}) in \meta{key\-/value list} and then uses \cs{normalsize}.
+Adding the optional star first resets all the \pkg{fontscale} package keys to their initial values.
+The order of the keys in \meta{key\-/value list} does not matter.
+Can be used mid\-/document.
+The effect is local to the current group.
+Does nothing, except issue a warning, if used in math mode.
+\cs{fontscalesetup} should typically be used only once in the preamble or omitted if the user is satisfied with the initial font sizes and font baselineskips.
+
+\subsection{Expandable commands}
+\label{subsec:expandable}
+
+\cs{CurrentFontStep}
+\nopagebreak\newline
+\cs{CurrentFontScale}
+\newline
+\cs{CurrentFontSize}
+\nopagebreak\newline
+\cs{CurrentFontBaselineskip}
+
+This package provides expandable commands that expand to the current font step, font scale, font size, or font baselineskip.
+They can be used for printing or within calculations.
+
+For clarity, \cs{CurrentFontStep} will be explained in detail.
+\cs{CurrentFontStep} initially tests if the current font size equals the font size of any font size command from \cs{tiny} to \cs{Huge}.
+If so, it expands to the font step of that font size command (Table~\ref{table:fontsteps}).
+If not and if the value of the key \Key{typographic\-/scale} is \Value{musical}, \cs{CurrentFontStep} expands to the current font step calculated from the musical typographic scale (Equation~\ref{eq:musical}).
+Otherwise, the current font step is undefined and \cs{CurrentFontStep} expands to nothing.
+
+Internally, \cs{CurrentFontStep}, \cs{CurrentFontScale}, and \cs{CurrentFontSize} rely on the kernel command \cs{f@size}.
+(\cs{f@size} stores the current font size in units of \unit{pt}, omitting the unit.)
+The low\-/level font command \cs{fontsize}\marg{dimen}\marg{skip} sets \cs{f@size} to the new font size before expanding its second argument.
+This means that, if used in \meta{skip}, \cs{CurrentFontStep}, \cs{CurrentFontScale}, and \cs{CurrentFontSize} will expand to the new value\---unless they are first expanded.
+This package provides \cs{SetFontSizeBaselineskip} as an alternative to \cs{fontsize} + \cs{selectfont} that avoids this issue (\S\ref{subsec:fontsize}).
+
+\cs{CurrentFontSizeCommand}
+\KeepNextPar*
+
+Tests if the current font size and current font baselineskip equal the font size and font baselineskip, respectively, of any font size command from \cs{tiny} to \cs{Huge}.
+If so, expands to the name of that font size command.
+This omits the backslash character and leaves only letters with catcode \num{11}.
+If not, expands to nothing.
+This package also provides a similar command \cs{PrintFontSizeCommand} (\S\ref{subsec:debug}), which is not expandable and includes the backslash character.
+
+\subsection{More font size commands}
+\label{subsec:fontsize}
+
+This package provides additional font size commands for use only in special cases.
+Users should prefer the standard \LaTeX{} font size commands from \cs{tiny} to \cs{Huge} for typographic and syntactic consistency.
+
+\cs{SetFontStep} \sarg{} \marg{floating point expression}
+\KeepNextPar*
+
+Sets the font size by setting the font step to the result of computing the \meta{floating point expression}.
+Adding the optional star instead increases the current font step by the result of computing the \meta{floating point expression} or issues an error if the current font step is undefined (as explained for \cs{CurrentFontStep} in \S\ref{subsec:expandable}).
+Sets the font baselineskip equal to the new font size \texttimes{} the value of the key \Key{baselineskip\-/size\-/ratio}.
+
+\listheading{Three exceptions:}
+\begin{itemize}
+ \item
+ The font step must equal the font step of any font size command from \cs{tiny} to \cs{Huge} (Table~\ref{table:fontsteps}) unless the value of the key \Key{typographic\-/scale} is \Value{musical}.
+ \cs{SetFontStep} will issue an error if the font step is undefined (as explained for \cs{CurrentFontStep} in \S\ref{subsec:expandable}).
+ \item
+ If the font step equals the font step of any font size command from \cs{tiny} to \cs{Huge}, then that font size command will be used directly.
+ \item
+ Does nothing, except issue a warning, if used in math mode.
+\end{itemize}
+
+\cs{SetFontScale} \sarg{} \marg{floating point expression}
+\KeepNextPar*
+
+Sets the font size by setting the font scale to the result of computing the \meta{floating point expression}.
+Adding the optional star instead increases the current font scale by the result of computing the \meta{floating point expression}.
+Sets the font baselineskip equal to the new font size \texttimes{} the value of the key \Key{baselineskip\-/size\-/ratio}.
+Does nothing, except issue a warning, if used in math mode.
+
+\cs{SetFontSize} \sarg{} \marg{dimen expression}
+\KeepNextPar*
+
+Sets the font size to the value of \meta{dimen expression}, appending a default unit of \unit{pt}.
+Adding the optional star instead increases the current font size by the result of \meta{dimen expression}, appending a default unit of \unit{pt}.
+Sets the font baselineskip equal to the new font size \texttimes{} the value of the key \Key{baselineskip\-/size\-/ratio}.
+Does nothing, except issue a warning, if used in math mode.
+
+\cs{ScaleFont} \marg{floating point expression}
+\KeepNextPar*
+
+Sets the font size equal to the current font size \texttimes{} the result of computing the \meta{floating point expression}.
+Sets the font baselineskip equal to the current font baselineskip \texttimes{} the result of computing the \meta{floating point expression}.
+Does nothing, except issue a warning, if used in math mode.
+
+\cs{SetFontSizeBaselineskip} \marg{dimen expression} \marg{skip expression}
+\KeepNextPar*
+
+Sets the font size to the value of \meta{dimen expression}, appending a default unit of \unit{pt}.
+Sets the font baselineskip to the value of \meta{skip expression}, appending a default unit of \unit{pt}.
+The font baselineskip must be greater than or equal to the font size.
+Does nothing, except issue a warning, if used in math mode.
+Can be used as an alternative to \cs{fontsize} + \cs{selectfont} as discussed in \S\ref{subsec:expandable}.
+
+\subsection{Testing and debugging}
+\label{subsec:debug}
+
+The commands documented here are intended primarily for testing and debugging.
+I have used them often when developing this package so I think users will find them helpful.
+
+\cs{PrintFontSizeParameters}
+\KeepNextPar*
+
+Prints the current font size parameters\---the font step, font scale, font size, and font baselineskip.
+The current font step will be left blank if it is undefined (as explained for \cs{CurrentFontStep} in \S\ref{subsec:expandable}).
+
+\cs{PrintAllFontSizeParameters}
+\KeepNextPar*
+
+Prints the font step, font scale, font size, and font baselineskip of each font size command from \cs{tiny} to \cs{Huge}.
+
+\cs{PrintSampleText} \sarg{} \marg{text}
+\KeepNextPar*
+
+Prints \meta{text} in each font size ordered from \cs{tiny} to \cs{Huge} each followed by a paragraph break.
+\meta{text} can contain \cs{par} tokens.
+Adding the optional star reverses the order of the font sizes.
+One useful way of printing example text is \cs{PrintSampleText}\allowbreak\texttt{\{\cs{PrintFontSizeCommand}:\allowbreak\textvisiblespace\allowbreak\cs{PrintFontSizeParameters}\}}.
+
+\cs{PrintFontSizeCommand}
+\KeepNextPar*
+
+Tests if the current font size and current font baselineskip equal the font size and font baselineskip, respectively, of any font size command from \cs{tiny} to \cs{Huge}.
+If so, prints the name of that font size command, including the backslash character.
+If not, prints \enquote{\string\undefined}.
+This package also provides a similar command \cs{CurrentFontSizeCommand} (\S\ref{subsec:expandable}), which is expandable and omits the backslash character.
+
+
+\section{Programming}
+\label{sec:programming}
+
+This section documents the \pkg{expl3} programming support provided by the \pkg{fontscale} package.
+
+\subsection
+ {%
+ Compatibility with
+ \texorpdfstring
+ {\cs{text_purify:n}}
+ {\textbackslash{}text\_purify:n}%
+ }
+\label{subsec:textpurify}
+
+\cs{text_purify:n} will correctly remove the formatting commands defined by this package, including \cs{fontscalesetup} and the commands documented in \S\ref{subsec:fontsize}.
+
+\subsection{Public functions and variables}
+\label{subsec:publicexpl3}
+
+This package does not define any public \pkg{expl3} functions.
+
+This package defines public \pkg{expl3} variables that store the font step, font scale, font size, and font baselineskip of each font size command from \cs{tiny} to \cs{Huge}.
+These variables should never be modified directly.
+Their values should be changed only by \cs{fontscalesetup}.
+
+Each takes the form:
+
+\verb|\c_fontscale_|\meta{font size command}\verb|_step_fp|
+\nopagebreak\newline
+\verb|\l_fontscale_|\meta{font size command}\verb|_scale_fp|
+\newline
+\verb|\l_fontscale_|\meta{font size command}\verb|_size_dim|
+\nopagebreak\newline
+\verb|\l_fontscale_|\meta{font size command}\verb|_baselineskip_skip|
+
+Exception:
+\cs{l_fontscale_normalsize_scale_fp} is not defined.
+The font scale of \cs{normalsize} is stored in \cs{c_fontscale_normalsize_scale_fp}.
+
+
+\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/gridset/LICENSE.md b/macros/latex/contrib/gridset/LICENSE.md
index 99a6973749..1863f2f61a 100644
--- a/macros/latex/contrib/gridset/LICENSE.md
+++ b/macros/latex/contrib/gridset/LICENSE.md
@@ -13,7 +13,7 @@ Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz
in der Version 1.3c, verteilt und/oder verändert werden. Die aktuelle
Version dieser Lizenz ist http://www.latex-project.org/lppl.txt und
Version 1.3c oder später ist Teil aller Verteilungen von LaTeX 2005/12/01
-oder später. Dieses Werk hat den LPPL-Verwaltungs-Status „maintained”
+oder später. Dieses Werk hat den LPPL-Verwaltungs-Status „maintained”.
Der aktuelle Verwalter und Autor dieses Werks ist Markus Kohm.
----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/gridset/README.md b/macros/latex/contrib/gridset/README.md
index 0a1963d1eb..a27c928e92 100644
--- a/macros/latex/contrib/gridset/README.md
+++ b/macros/latex/contrib/gridset/README.md
@@ -4,10 +4,14 @@ An experimental LaTeX package for semi-manual grid (a.k.a. in-register) setting
------------------------------------------------------------------------------
-LaTeX package `gridset`
-Copyright (c) 2008—2020 Markus Kohm
-Release: 2020-02-12 v0.3
-License: LPPL 1.3c (see LICENSE.md)
+LaTeX package `gridset`
+
+Copyright (c) 2008—2024 Markus Kohm
+
+Release: 2024-08-17 v0.4
+
+License: LPPL 1.3c (see LICENSE.md)
+
CTAN Location: https://ctan.org/pkg/gridset
------------------------------------------------------------------------------
@@ -32,9 +36,31 @@ The package is part of [TeX Live](https://tug.org/texlive) (and therefore
also [MacTeX](https://tug.org/mactex)) and [MiKTeX](http://miktex.org). Users
should use the packages provided by their TeX distribution.
-However, manual extraction can be used to try out the developer version.
+------------------------------------------------------------------------------
+
+For a semi-manual installation you can first create a local clone
+if the repository:
+
+```bash
+git clone https://github.com/komascript/gridset.git
+```
+
+Then enter the directory created while cloning the repository:
+
+```bash
+cd gridset
+```
+
+Last, but not least use `l3build` to install it locally:
+
+```bash
+l3build install --full
+```
+
+------------------------------------------------------------------------------
-To extract the package use:
+To do a completely manual installation, download `gridset.dtx`. Then extract
+it using:
```bash
tex gridset.dtx
@@ -48,3 +74,16 @@ mkindex gridset
pdflatex gridset.dtx
pdflatex gridset.dtx
```
+
+Now, you can either install it in the proper directory or copy `gridset.sty`
+to your document directory.
+
+------------------------------------------------------------------------------
+
+# How to Say Thank You for my Work
+
+Hey, I'm doing this as a hobby. So no need to say thank you. But I'm a vain
+fop, so I'm certainly up for a quick thank you by email. On komascript.de you
+can find an [explanation of my wishes](https://komascript.de/wunschliste) if
+you want to give more. If you don't understand German, just click to links at
+that page.
diff --git a/macros/latex/contrib/gridset/gridset.dtx b/macros/latex/contrib/gridset/gridset.dtx
index 68b251db55..29818473fb 100644
--- a/macros/latex/contrib/gridset/gridset.dtx
+++ b/macros/latex/contrib/gridset/gridset.dtx
@@ -2,7 +2,7 @@
%
% gridset.dtx
%
-%% Copyright (C) 2008-2020 Markus Kohm
+%% Copyright (C) 2008-2024 Markus Kohm
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -25,37 +25,17 @@
%%
%
%<*dtx>
-\def\FmtName{LaTeX2e}
-\ifx\FmtName\fmtname
- % Give me the package or the documentation
- \ifnum \catcode`\@=12\relax
- % Give me the documentation
- \ProvidesFile{gridset.dtx}
+\ifx\ProvidesFile\undfined\def\ProvidesFile#1[#2]{}\fi
+\ProvidesFile{gridset.dtx}
%</dtx>
%<*dtx|package|example>
%<package>\ProvidesPackage{gridset}
%<example>\ProvidesFile{gridsetexample.tex}
- [2020-02-12 v0.3 grid - a.k.a. in-register - setting]
+ [2024-08-17 v0.4 grid - a.k.a. in-register - setting]
%</dtx|package|example>
%<*dtx>
- \documentclass{ltxdoc}
- \begin{document}
- \RecordChanges
- \GetFileInfo{gridset.dtx}
- \DocInput{gridset.dtx}
-%</dtx>
-%<*dtx>
- \expandafter\expandafter\expandafter\enddocument
- \fi
-\else
- % Make the package
- \def\batchfile{gridset.dtx}
- \let\batchendinput\endinput
-%</dtx>
-%<*ins>
-%<ins>\def\batchfile{gridset.ins}
+\ifx\documentclass\undefined
\input docstrip.tex
-
\keepsilent
\askforoverwritefalse
\usedir{tex/latex/gridset}
@@ -98,12 +78,16 @@ about the files the work consists of.
\Msg{*}
\Msg{*********************************************************************}
}
-
-%</ins>
-%<*dtx>
+\else
+ \let\endbatchfile\relax
\fi
-\csname fi\endcsname
-\csname batchendinput\endcsname
+\endbatchfile
+\documentclass{ltxdoc}
+\begin{document}
+\RecordChanges
+\GetFileInfo{gridset.dtx}
+\DocInput{gridset.dtx}
+\end{document}
%</dtx>
% \fi ^^A meta-comment
%
@@ -313,6 +297,12 @@ about the files the work consists of.
% \item the x-coordinate of the absolute position,
% \item the y-coordinate of the absolute position.
% \end{itemize}
+% \begin{description}
+% \item[Todo:] Currently we use our own command \cs{newpos} to store the
+% position information in the \texttt{aux}-file. But with the extended
+% reference mechanism of \LaTeX{} since 2023-11-01 this should be replaced
+% by the new properties.
+% \end{description}
% \begin{macrocode}
\newcommand*{\SavePos}[1]{%
\begingroup
@@ -411,8 +401,17 @@ about the files the work consists of.
that won't be reported!}%
\fi
}
+% \end{macrocode}
+% \changes{0.4}{2024/08/17}{fix deactivation of
+% \cs{grid@unique@test}
+% (\href{https://github.com/komascript/gridset/issues/1}{Issue \#1})}
+% The test should be done only, when reading the \texttt{aux} file at
+% |\begin{document}|, but not later (e.g. at |\end{document}|). So we
+% deactivate the test after reading the \texttt{aux} file in
+% |\begin{document}|.
+% \begin{macrocode}
\AtBeginDocument{%
- \global\let\grid@unique@test\@gobble
+ \global\let\grid@unique@test\@gobbletwo
}
% \end{macrocode}
% \end{macro}
diff --git a/macros/latex/contrib/gridset/gridset.pdf b/macros/latex/contrib/gridset/gridset.pdf
index 3f6a39a8e9..a2af21f205 100644
--- a/macros/latex/contrib/gridset/gridset.pdf
+++ b/macros/latex/contrib/gridset/gridset.pdf
Binary files differ
diff --git a/macros/latex/contrib/harmony/README b/macros/latex/contrib/harmony/README
index da777f5964..39f72b35f7 100644
--- a/macros/latex/contrib/harmony/README
+++ b/macros/latex/contrib/harmony/README
@@ -1,43 +1,26 @@
-harmony.sty 2007/05/04
+harmony 2024/08/01
-Copyright 2005 - 2007
+Copyright 2005 - 2024
Dagny Wegner <dagny.wegner@t-online.de>
-Arnim Wegner <arnim.wegner@t-online.de>
+Arnim Wegner <arnim.e.wegner@t-online.de>
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 `maintained'.
-
-The Current Maintainers of this work are
-Dagny Wegner and Arnim Wegner.
This work consists of the files harmony.sty,
harmony.tex, harmony.pdf, and Readme.
--------------------------------------------------------
-
-harmony.sty uses the packages ifthen and amssymb
-and the fonts lcirclew10, musix11, and musix13.
-
--------------------------------------------------------
+harmony.sty uses the packages ifthen, mathtools and amssymb
+and the fonts lcircle10, musix11 and musix13.
harmony.sty is a LaTeX2e package for typesetting
harmony symbols etc. in musicological texts;
usage: cf. harmony.pdf.
-Many commands in this package are only suitable
-for size 12pt !
harmony.sty ist ein LaTeX2e-Package zum Setzen von
Harmoniesymbolen etc. in musikwissenschaftlichen Texten;
Benutzung: vgl. harmony.pdf.
-Viele Befehle in diesem Package sind
-nur fr die Schriftgre 12pt geeignet!
diff --git a/macros/latex/contrib/harmony/harmony.pdf b/macros/latex/contrib/harmony/harmony.pdf
index 4b523de911..b792390663 100644
--- a/macros/latex/contrib/harmony/harmony.pdf
+++ b/macros/latex/contrib/harmony/harmony.pdf
Binary files differ
diff --git a/macros/latex/contrib/harmony/harmony.sty b/macros/latex/contrib/harmony/harmony.sty
index ce528cf085..1145113c4d 100644
--- a/macros/latex/contrib/harmony/harmony.sty
+++ b/macros/latex/contrib/harmony/harmony.sty
@@ -1,29 +1,30 @@
-%% harmony.sty 2007/05/04
-%% Copyright 2005 - 2007
+%% harmony.sty 2024/08/01
+%% Copyright 2005 - 2024
%% Dagny Wegner <dagny.wegner@t-online.de>
-%% Arnim Wegner <arnim.wegner@t-online.de>
+%% Arnim Wegner <arnim.e.wegner@t-online.de>
%
% 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 `maintained'.
-%
-% The Current Maintainers of this work are
-% Dagny Wegner and Arnim Wegner.
%
% This work consists of the files harmony.sty,
% harmony.tex, harmony.pdf, and Readme.
% ==================================================================================
+\ProvidesPackage{harmony}[2024/08/01]
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{harmony}[2007/05/04]
\RequirePackage{ifthen}
\RequirePackage{amssymb}
+\RequirePackage{mathtools} % contains \overbracket
+%
+\newcounter{notekorr}
+\DeclareOption{8pt}{\setcounter{notekorr}{800}}
+\DeclareOption{9pt}{\setcounter{notekorr}{900}}
+\DeclareOption{10pt}{\setcounter{notekorr}{1000}}
+\DeclareOption{11pt}{\setcounter{notekorr}{1100}}
+\DeclareOption{12pt}{\setcounter{notekorr}{1200}}
+\DeclareOption{13pt}{\setcounter{notekorr}{1300}}
+\DeclareOption{14pt}{\setcounter{notekorr}{1400}}
\DeclareOption{sf}{\def\FAM{\sffamily}}
\DeclareOption{rm}{\def\FAM{\rmfamily}}
\ExecuteOptions{sf}
@@ -43,14 +44,31 @@
\newbox\nbxg
\newbox\nbxh
\newbox\nbxi
-\newfont{\KREIS}{lcirclew10}
-\newfont{\NOTEN}{musix13}
-\newfont{\noten}{musix11}% 2007/05/03
+\newcounter{notescl}
+\newcounter{fontscl}
%
-\newcommand{\Ohne}[2][0em]{%
+\ifthenelse{\value{notekorr}=0}%
+{\ifthenelse{\@ptsize<-2}{\setcounter{notescl}{800}}{}
+\ifthenelse{\equal{\@ptsize}{-2}}{\setcounter{notescl}{800}}{}
+\ifthenelse{\equal{\@ptsize}{-1}}{\setcounter{notescl}{900}}{}
+\ifthenelse{\equal{\@ptsize}{0}}{\setcounter{notescl}{1000}}{}
+\ifthenelse{\equal{\@ptsize}{1}}{\setcounter{notescl}{1100}}{}
+\ifthenelse{\equal{\@ptsize}{2}}{\setcounter{notescl}{1200}}{}
+\ifthenelse{\equal{\@ptsize}{3}}{\setcounter{notescl}{1300}}{}
+\ifthenelse{\equal{\@ptsize}{4}}{\setcounter{notescl}{1400}}{}
+\ifthenelse{\@ptsize>4}{\setcounter{notescl}{1400}}{}}
+{\setcounter{notescl}{\value{notekorr}}}
+%
+\newfont{\NOTEN}{musix13 scaled \value{notescl}}
+\newfont{\noten}{musix11 scaled \value{notescl}}
+\setcounter{fontscl}{\value{notescl}}
+\addtocounter{fontscl}{1000}
+\newfont{\KREIS}{lcircle10 scaled \value{fontscl}}
+%
+\newcommand{\Ohne}[2][0.17em]{%
\setbox\nbxi=\hbox{%
\FAM%
-\setbox\nbxa=\hbox{\sl\large /}%
+\setbox\nbxa=\hbox{\textsl\large\raisebox{0.2ex}{/}}%
#2%
\kern-0.8em%
\kern#1%
@@ -60,8 +78,14 @@
}%
\unhbox\nbxi%
}
+\let\Sans\Ohne
%
\newcommand{\Dohne}{\Ohne{D}}
+\let\Dsans\Dohne
+\newcommand{\DohneR}{\framebox{\Dohne}}
+\let\DsansR\DohneR
+\newcommand{\Dohner}{\frame{\Dohne}}
+\let\Dsansr\Dohner
%
\newcommand{\DD}{%
\setbox\nbxi=\hbox{%
@@ -73,6 +97,9 @@
\unhbox\nbxi%
}
%
+\newcommand{\DDR}{\framebox{\DD}}
+\newcommand{\DDr}{\frame{\DD}}
+%
\newcommand{\DS}{%
\setbox\nbxi=\hbox{%
\FAM%
@@ -96,7 +123,7 @@
\newcommand{\DDohne}{%
\setbox\nbxi=\hbox{%
\FAM%
-\setbox\nbxa=\hbox{\sl\large /}%
+\setbox\nbxa=\hbox{\textsl\large\raisebox{0.25ex}{/}}%
\raise0.2ex\hbox{D}%
\kern-0.5em%
\lower0.2ex\hbox{D}%
@@ -107,17 +134,23 @@
}%
\box\nbxi%
}
+\let\DDsans\DDohne
+%
+\newcommand{\DDohneR}{\framebox{\DDohne}}
+\let\DDsansR\DDohneR
+\newcommand{\DDohner}{\frame{\DDohne}}
+\let\DDsansr\DDohner
%
\newcommand{\VM}{%
\setbox\nbxg=\hbox{>}%
\setbox\nbxh=\hbox to \wd\nbxg{%
-\raise0.24ex\hbox{{\boldmath$\scriptscriptstyle{>}$\unboldmath}\hss}}% 2005/05/10
+\raise0.24ex\hbox{{\boldmath$\scriptscriptstyle{>}$\unboldmath}\hss}}%
\box\nbxh}
%
\newcommand{\UB}{%
\setbox\nbxg=\hbox{<}%
\setbox\nbxh=\hbox to \wd\nbxg{%
-\raise0.24ex\hbox{\boldmath$\scriptscriptstyle{<}$\unboldmath\hss}}% 2005/05/10
+\raise0.24ex\hbox{\boldmath$\scriptscriptstyle{<}$\unboldmath\hss}}%
\box\nbxh}
%
\newcommand{\HAa}[3]{%
@@ -243,6 +276,9 @@
{\HAc{#1}{#2}{#3}{#4}{#5}}%
}
%
+\def\HHR.#1.#2.#3.#4.#5.{\framebox{\HH.#1.#2.#3.#4.#5.}}%
+\def\HHr.#1.#2.#3.#4.#5.{\frame{\HH.#1.#2.#3.#4.#5.\hspace{0.17em}}}%
+%
\newcommand{\FERM}[2][0.1pt]{%
\setbox\nbxi=\hbox{%
\FAM%
@@ -287,15 +323,13 @@
\kern-\tmpdima\box\nbxb%
}}
%
-\newcommand{\Kr}[1]{%
-\ifthenelse{\equal{\@ptsize}{2}}{\@tempcnta=110}%
-{\ifthenelse{\equal{\@ptsize}{1}}{\@tempcnta=109}%
-{\@tempcnta=108}}%
+\newcommand{\Kr}[2][102]{%
+\ifthenelse{#1>110}{\@tempcnta=110}%
+{\ifthenelse{#1<100}{\@tempcnta=100}{\@tempcnta=#1}}
\setbox\nbxi=\hbox{%
-\FAM\small%
\setbox\nbxa=\hbox{#1}%
\setbox\nbxb=\hbox{\KREIS\char\@tempcnta}%
-\setbox\nbxc=\hbox to \wd\nbxb{\hss #1\hss}%
+\setbox\nbxc=\hbox to \wd\nbxb{\hss #2\hss}%
\tmpdima=0.5\ht\nbxa%
\advance\tmpdima by -0.4\dp\nbxa\relax%
\copy\nbxc%
@@ -332,8 +366,8 @@
{\raisebox{0.58ex}[8pt][2pt]{\kern-1pt\NOTEN\symbol{82}\kern0.3em}}}%
{\kern0.05em\ueber{#1}{#2}\kern0.05em%
}}}
-%
-\newcommand{\Ganz}{{\NOTEN\kern0.05em\raisebox{0.5ex}{\symbol{9}}\kern1.35em}}
+% Noten
+\newcommand{\Ganz}{{\NOTEN\kern0.05em\raisebox{0.5ex}{\symbol{9}}\kern1.5em}}
\newcommand{\Halb}{{\NOTEN\kern0.05em\raisebox{0.5ex}{\symbol{8}\kern0.936em%
\raisebox{0.55ex}{\symbol{16}}}\kern0.2em}}
\newcommand{\Vier}{{\NOTEN\kern0.05em\raisebox{0.5ex}{\symbol{7}\kern0.955em%
@@ -343,7 +377,7 @@
\newcommand{\Sech}{{\NOTEN\kern0.05em\raisebox{0.5ex}{\symbol{7}\kern0.955em%
\raisebox{0.55ex}{\symbol{16}}}\symbol{41}\kern0.9em}}
\newcommand{\Zwdr}{{\NOTEN\kern0.05em\raisebox{0.5ex}{\symbol{7}\kern0.955em%
-\raisebox{0.55ex}{\symbol{16}}}\symbol{42}\kern0.9em}}
+\raisebox{0.55ex}{\symbol{16}}\raisebox{1.3ex}{\symbol{16}}}\symbol{42}\kern0.9em}}
\newcommand{\GaPa}{{\NOTEN\kern0.055em\raisebox{0.25ex}{\symbol{60}}\kern0.05em}}
\newcommand{\HaPa}{{\NOTEN\kern0.055em\raisebox{0.25ex}{\symbol{60}}\kern0.05em}}
\newcommand{\ViPa}{{\NOTEN\kern0.05em\raisebox{-0.8ex}{\symbol{62}}\kern0.955em}}
@@ -351,28 +385,76 @@
\newcommand{\SePa}{{\NOTEN\kern0.15em\raisebox{-0.4ex}{\symbol{64}}\kern1.3em}}
\newcommand{\ZwPa}{{\NOTEN\kern0.25em\raisebox{-0.8ex}{\symbol{65}}\kern1.4em}}
\newcommand{\Pu}{{\NOTEN\kern-0.2em\raisebox{-0.5ex}{\symbol{24}}\kern1em}}
-\newcommand{\AAcht}{\Vier\kern0.1em\Vier{\NOTEN\kern-1.72em\raisebox{3.1ex}%
+\newcommand{\AAcht}{{\NOTEN\Vier\kern0.3em\Vier\kern-1.72em\raisebox{3.1ex}%
{\symbol{61}\kern-0.87em\symbol{61}}}}
-\newcommand{\AchtBL}% 2007/05/03
-{\kern0.135em\Vier%
-{\NOTEN\kern-1.82em\raisebox{3.05ex}{\symbol{61}\kern-0.87em\symbol{61}}\kern0.09em}}
-\newcommand{\SechBL}% 2007/05/03
-{\kern0.135em\Vier%
-{\NOTEN\kern-1.82em\raisebox{3.05ex}{\symbol{61}\kern-0.87em\symbol{61}}%
+\newcommand{\AchtBL}{{\NOTEN\Vier\kern-1.82em\raisebox{3.05ex}{\symbol{61}\kern-0.87em\symbol{61}}}}
+\newcommand{\AchtBR}{{\NOTEN\Vier\kern-0.1em\raisebox{3.05ex}{\symbol{61}\kern-0.87em\symbol{61}}}}
+\newcommand{\SechBL}{{\NOTEN\Vier\kern-1.82em\raisebox{3.05ex}{\symbol{61}\kern-0.87em\symbol{61}}%
\kern-1.63em\raisebox{2.3ex}{\symbol{61}\kern-0.87em\symbol{61}}\kern0.09em}}
-\newcommand{\SechBl}% 2007/05/03
-{\kern0.135em\Vier%
-{\NOTEN\kern-1.82em\raisebox{3.05ex}{\symbol{61}\kern-0.87em\symbol{61}}%
+\newcommand{\SechBl}{{\NOTEN\Vier\kern-1.82em\raisebox{3.05ex}{\symbol{61}\kern-0.87em\symbol{61}}%
\kern-1.63em\raisebox{2.3ex}{{\noten\kern0.9em\symbol{61}}}\kern0.09em}}
-\newcommand{\AchtBR}% 2007/05/03
-{\kern0.135em\Vier%
-{\NOTEN\kern-0.1em\raisebox{3.05ex}{\symbol{61}\kern-0.87em\symbol{61}}\kern-1em}}
-\newcommand{\SechBR}% 2007/05/03
-{\kern0.135em\Vier%
-{\NOTEN\kern-0.1em\raisebox{3.05ex}{\symbol{61}\kern-0.87em\symbol{61}}%
-\kern-1.63em\raisebox{2.3ex}{\symbol{61}\kern-0.87em\symbol{61}}\kern-1.01em}}
-\newcommand{\SechBr}% 2007/05/03
-{\kern0.135em\Vier%
-{\NOTEN\kern-0.1em\raisebox{3.05ex}{\symbol{61}\kern-0.87em\symbol{61}}%
-\kern-1.63em\raisebox{2.3ex}{{\noten\kern-0.12em\symbol{61}}}\kern-0.3em}}
-% etc. ... ! Define your own commands! \ No newline at end of file
+\newcommand{\SechBR}{{\NOTEN\Vier\kern-0.1em\raisebox{3.05ex}{\symbol{61}\kern-0.87em\symbol{61}}%
+\kern-1.63em\raisebox{2.3ex}{\symbol{61}\kern-0.87em\symbol{61}}}}
+\newcommand{\SechBr}{{\NOTEN\Vier\kern-0.1em\raisebox{3.05ex}{\symbol{61}\kern-0.87em\symbol{61}}%
+\kern-1.63em\raisebox{2.3ex}{{\noten\kern-0.12em\symbol{61}}}\kern0.87em}}
+%
+\newcommand{\Blkn}[2]{\raisebox{#2}{{\NOTEN\kern#1\symbol{61}}}}%
+%
+\newcommand{\Overset}[3][0pt]{\ensuremath{\overset{\raisebox{#1}{\scriptsize\ensuremath{#2}}}{#3}}}
+%
+\newcommand\achteltriole{%
+ \ensuremath{\NOTEN%
+ \Overset[-1ex]%
+ {\text{\itshape\tiny\kern0.7em 3}}%
+ {\AchtBR\kern-1.1em\Vier\kern0.4em\AchtBL}%
+ }%
+}
+%
+\newcommand\vierteltrioleA{%
+ \ensuremath{\NOTEN%
+ \Overset[-1ex]%
+ {\text{\itshape\tiny 3}}%
+ {\overbracket[0.45pt]{%
+ \rule{0pt}{2.4ex}\Vier\kern0.5em\Vier\kern0.5em\Vier\kern0.25em}%
+ }%
+ }%
+}
+%
+\newcommand\vierteltrioleB{%
+ \ensuremath{\NOTEN%
+ \Overset%
+ {\raisebox{1ex}{%
+ \rule{0.45pt}{1ex}%
+ \kern0.25em\raisebox{0.88ex}{\kern-0.3em\rule{1.15em}{0.45pt}}%
+ \raisebox{0.53ex}{\text{\itshape\tiny 3}}%
+ \raisebox{0.88ex}{\rule{1.15em}{0.45pt}}%
+ \kern-0.05em\rule{0.45pt}{1ex}%
+ }}%
+ {\Vier\kern0.5em\Vier\kern0.5em\Vier\kern0.3em}%
+ }%
+}
+%
+\newcommand\halbetrioleA{%
+ \ensuremath{\NOTEN%
+ \Overset[-1ex]%
+ {\text{\itshape\tiny 3}}%
+ {\overbracket[0.45pt]{%
+ \rule{0pt}{2.4ex}\Halb\kern0.5em\Halb\kern0.5em\Halb\kern0.25em}%
+ }%
+ }%
+}
+%
+\newcommand\halbetrioleB{%
+ \ensuremath{\NOTEN%
+ \Overset%
+ {\raisebox{1ex}{%
+ \rule{0.45pt}{1ex}%
+ \kern0.25em\raisebox{0.88ex}{\kern-0.3em\rule{1.15em}{0.45pt}}%
+ \raisebox{0.53ex}{\text{\itshape\tiny 3}}%
+ \raisebox{0.88ex}{\rule{1.15em}{0.45pt}}%
+ \kern-0.05em\rule{0.45pt}{1ex}%
+ }}%
+ {\Halb\kern0.5em\Halb\kern0.5em\Halb\kern0.3em}%
+ }%
+}
+% ================================================================================== \ No newline at end of file
diff --git a/macros/latex/contrib/harmony/harmony.tex b/macros/latex/contrib/harmony/harmony.tex
index 326aff42c3..7b163dc7ab 100644
--- a/macros/latex/contrib/harmony/harmony.tex
+++ b/macros/latex/contrib/harmony/harmony.tex
@@ -1,38 +1,29 @@
-%% harmony.sty 2007/05/04
-%% Copyright 2005 - 2007
+%% harmony.sty 2024/08/01
+%% Copyright 2005 - 2024
%% Dagny Wegner <dagny.wegner@t-online.de>
-%% Arnim Wegner <arnim.wegner@t-online.de>
+%% Arnim Wegner <arnim.e.wegner@t-online.de>
%
% 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 `maintained'.
-%
-% The Current Maintainers of this work are
-% Dagny Wegner and Arnim Wegner.
%
% This work consists of the files harmony.sty,
% harmony.tex, harmony.pdf, and Readme.
-%====================================================================================
-\documentclass[12pt,origlongtable,pdftex]{scrartcl}
+% ==================================================================================
+\documentclass[paper=a4,fontsize=12pt,origlongtable]{scrartcl}
%
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{mathpazo}
-\usepackage[ansinew]{inputenc}
\usepackage{array}
\usepackage{longtable}
-\usepackage[pdftex,a4paper]{hyperref}
+\usepackage[pdftex]{hyperref}
%
-\usepackage{harmony}
+\usepackage[12pt]{harmony} % options: 8pt 9pt 10pt 11pt 12pt 13pt 14pt
%
-\setlength{\textheight}{240mm}
+\setlength{\voffset}{-10mm}
+\setlength{\textheight}{255mm}
\setlength{\overfullrule}{0pt}
\setlength{\extrarowheight}{2ex}
\setlength{\parindent}{0pt}
@@ -49,45 +40,37 @@ pdfstartview = {Fit},
%-------------------------------------------------------------------------------------
\begin{document}
%
-\title{harmony.sty}
-\author{Dagny Wegner \and Arnim Wegner}
-\date{2007/05/04}
+\title{harmony}
+\author{Dagny Wegner \and Arnim Wegner}
+\date{2024/08/01}
\maketitle
%
\vfill
%
\begin{center}
-Copyright 2005 - 2007\\
+Copyright 2005 - 2024\\
Dagny Wegner <dagny.wegner@t-online.de>\\
-Arnim Wegner <arnim.wegner@t-online.de>
+Arnim Wegner <arnim.e.wegner@t-online.de>
\end{center}
This work may be distributed and/or modified under the
-conditions of the LaTeX Project Public License, either
+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 `maintained'.
-The Current Maintainers of this work are
-Dagny Wegner and Arnim Wegner.
This work consists of the files harmony.sty,
harmony.tex, harmony.pdf, and Readme.
%
\newpage
%
\begin{center}
-This work was developed for the doctoral dissertation in musicology of\\
+The package harmony was first developed for the doctoral dissertation in\\ musicology of
Dagny Wegner; cf. this dissertation for further examples.\\
-(Look at http://www.sub.uni-hamburg.de/opus/volltexte/2006/3047/ or
-http://www.chmtl.indiana.edu/ddm/DNclassical.html)\\[2ex]
-\textbf{Many commands in this package therefore are only suitable for size 12pt !}
+(Look at https://ediss.sub.uni-hamburg.de/handle/ediss/1483)\\[1ex]
+This package accepts the optional parameters 8pt, \dots ,14pt for the size\\ of the notes
+ independent of the fontsize of the document.
\end{center}
%
-\vspace{2ex}
-%
-\begin{longtable}{|l|l|}
+\vspace*{-5mm}
+\begin{longtable}{|l|c|}
%
\caption*{\textbf{Usage and Examples}}
\endfirsthead
@@ -95,9 +78,11 @@ http://www.chmtl.indiana.edu/ddm/DNclassical.html)\\[2ex]
\endhead
%
\hline
-input & output\\
+Input & Output\\
\hline\hline
\verb|\HH.X.u.v.w.z.|&\HH.X.u.v.w.z.\\
+\verb|\HHR.X.u.v.w.z.|&\HHR.X.u.v.w.z.\\
+\verb|\HHr.X.u.v.w.z.|&\HHr.X.u.v.w.z.\\
\verb|\HH.D.....|&\HH.D.....\\
\verb|\HH.D..7...|&\HH.D..7...\\
\verb|\HH.D.3....|&\HH.D.3....\\
@@ -105,19 +90,26 @@ input & output\\
\verb|\HH.D.3.9.7..|&\HH.D.3.9.7..\\
\verb|\HH.D.3.9.7.5.|&\HH.D.3.9.7.5.\\
\hline
-\verb|\Dohne|&\Dohne\\
+\verb|\Dohne, \Dsans|&\Dohne\\
+\verb|\DohneR, \DsansR|&\DohneR\\
+\verb|\Dohner, \Dsansr|&\Dohner\\
\verb|\DD|&\DD\\
-\verb|\DDohne|&\DDohne\\
+\verb|\DDR|&\DDR\\
+\verb|\DDr|&\DDr\\
+\verb|\DDohne, \DDsans|&\DDohne\\
+\verb|\DDohneR, \DDsansR|&\DDohneR\\
+\verb|\DDohner. \DDsansr|&\DDohner\\
\verb|\DS|&\DS\\
\verb|\Ds|&\Ds\\
\verb|\UB|&\UB\\
\verb|\VM|&\VM\\
-\verb|\Ohne{D}|&\Ohne{D}\\
-\verb|\Ohne[3pt]{D}|&\Ohne[3pt]{D}\\
-\verb|\Ohne[-3pt]{D}|&\Ohne[-3pt]{D}\\
\hline
\newpage
\hline
+\verb|\Ohne{D}, \Sans{D}|&\Ohne{D}\\
+\verb|\Ohne[3pt]{D}, \Sans[3pt]{D}|&\Ohne[3pt]{D}\\
+\verb|\Ohne[-3pt]{D}, \Sans[-3pt]{D}|&\Ohne[-3pt]{D}\\
+\hline
\verb|\Fermi{X}|&\Fermi{X}\\
\verb|\Ferli{X}|&\Ferli{X}\\
\verb|\Ferli[5pt]{T}|&\Ferli[5pt]{T}\\
@@ -125,10 +117,9 @@ input & output\\
\hline
\verb|\Umd{D}|&\Umd{D}\\
\verb|\Umd[5pt]{D}|&\Umd[5pt]{D}\\
-\hline
\verb|\Kr{a:}|&\Kr{a:}\\
\verb|\Kr{f:} \Kr{g:}|&\Kr{f:} \Kr{g:}\\
-\verb|\Kr{\small fis:}|&\Kr{\small fis:}\\
+\verb|\Kr[105]{fis:} (#1: 100 - 110)|&\Kr[105]{fis:}\\[1ex]
\hline
\verb|\Takt{u}{v}|&\Takt{u}{v}\\
\verb|\Takt{3}{4}|&\Takt{3}{4}\\
@@ -142,12 +133,12 @@ input & output\\
\verb|\Umd{\HH.D.3.9.7.5.}|&\Umd{\HH.D.3.9.7.5.}\\
\verb|\Umd[5pt]{\HH.D.3.9.7.5.}|&\Umd[5pt]{\HH.D.3.9.7.5.}\\
\verb|\HH.\DDohne.5\VM.9\VM.7..|&\HH.\DDohne.5\VM.9\VM.7..\\
-\verb|\HH.\Ohne[0,1em]{Es}.5-3.7...|&\HH.\Ohne[0,1em]{Es}.5-3.7...\\
+\verb|\HH.\Ohne[0.1em]{Es}.5-3.7...|&\HH.\Ohne[0,1em]{Es}.5-3.7...\\
\verb|\Ferli[-1pt]{\HH.\DDohne.5\VM.9\VM.7..}|&\Ferli[-1pt]{\HH.\DDohne.5\VM.9\VM.7..}\\
\hline
\newpage
\hline
-\verb|\Ganz|&\Ganz\\
+\verb|\Ganz|&\kern-0.1em\Ganz\\
\verb|\Halb|&\Halb\\
\verb|\Vier|&\Vier\\
\verb|\Acht|&\Acht\\
@@ -167,18 +158,28 @@ input & output\\
\verb|\SechBr|&\SechBr\\
\hline
\verb|\Vier\AchtBL|&\Vier\AchtBL\\
+\verb|\Vier\kern0.2em\AchtBL|&\Vier\kern0.2em\AchtBL\\
\verb|\Vier\SechBL|&\Vier\SechBL\\
+\verb|\Vier\kern0.2em\SechBL|&\Vier\kern0.2em\SechBL\\
\verb|\Vier\SechBl|&\Vier\SechBl\\
+\verb|\Vier\kern0.2em\SechBl|&\Vier\kern0.2em\SechBl\\
\verb|\AchtBR\Vier|&\AchtBR\Vier\\
\verb|\SechBR\Vier|&\SechBR\Vier\\
\verb|\SechBr\Vier|&\SechBr\Vier\\
-\verb|\SechBr\Vier\SechBl|&\SechBr\Vier\SechBl\\
+\verb|\SechBr\Vier\kern0.2em\SechBl|&\SechBr\Vier\kern0.2em\SechBl\\
\verb|\AchtBR\AchtBR\AchtBL|&\AchtBR\AchtBR\AchtBL\\
-\verb|\AchtBR\kern-0.15em\AchtBR\kern-0.15em\AchtBL|%
-&\AchtBR\kern-0.15em\AchtBR\kern-0.15em\AchtBL\\
\hline
\newpage
\hline
+\verb|\Blkn{0em}{0ex}|&\Blkn{0ex}{0em}\\
+\verb|\AchtBR\Blkn{0.04em}{2.07ex}|&\AchtBR\Blkn{0.04em}{2.07ex}\\
+\hline
+\verb|\achteltriole|&\kern-0.6em\achteltriole\\
+\verb|\vierteltrioleA|&\vierteltrioleA\\
+\verb|\vierteltrioleB|&\vierteltrioleB\\
+\verb|\halbetrioleA|&\halbetrioleA\\
+\verb|\halbetrioleB|&\halbetrioleB\\
+\hline
\verb|\GaPa|&\GaPa\\
\verb|\HaPa|&\HaPa\\
\verb|\ViPa|&\ViPa\\
@@ -217,13 +218,13 @@ rm&rmfamily\\
\newcommand{\Str}[2][0.5]{\raise#1ex\hbox to #2em{\hrulefill}}
\newcommand{\ST}{\h0.03h\Str[0.65]{0.27}\h0.03h}
%
-\h9h\Kr{g:}%
+\h9h\Kr[103]{g:}%
\h1h\HH.\DDohne.5\VM.9\VM.7..%
\h0,5h\HH.D..6.4..%
\h0,5h\HH.\DDohne.3.9\VM.7..%
\h0,5h\HH.\Dohne.7.9\VM...%
\h0,5h\HH.T.3....\\[1ex]
-\h17h\Kr{d:}%
+\h17h\Kr[102]{d:}%
\h0,5h\Umd[1ex]{\HH.S.3....}%
\h0,5h\HH.\DD.5\VM.7...%
\h0,5h\HH.D..8\Str[0,65]{1,2}7\ST6\ST5.8\ST6\ST4\Str[0,65]{2}3.6\ST5\ST8%
@@ -237,13 +238,13 @@ rm&rmfamily\\
\newcommand{\Str}[2][0.5]{\raise#1ex\hbox to #2em{\hrulefill}}
\newcommand{\ST}{\h0.03h\Str[0.65]{0.27}\h0.03h}
%
-\h9h\Kr{g:}%
+\h9h\Kr[103]{g:}%
\h1h\HH.\DDohne.5\VM.9\VM.7..%
\h0,5h\HH.D..6.4..%
\h0,5h\HH.\DDohne.3.9\VM.7..%
\h0,5h\HH.\Dohne.7.9\VM...%
\h0,5h\HH.T.3....\\[1ex]
-\h17h\Kr{d:}%
+\h17h\Kr[102]{d:}%
\h0,5h\Umd[1ex]{\HH.S.3....}%
\h0,5h\HH.\DD.5\VM.7...%
\h0,5h\HH.D..8\Str[0,65]{1,2}7\ST6\ST5.8\ST6\ST4\Str[0,65]{2}3.6\ST5\ST8%
diff --git a/macros/latex/contrib/hebdomon/README.md b/macros/latex/contrib/hebdomon/README.md
new file mode 100644
index 0000000000..cb581a6ab0
--- /dev/null
+++ b/macros/latex/contrib/hebdomon/README.md
@@ -0,0 +1,18 @@
+# Hebdomon - A Documentclass for Assignment Preparation
+
+## Description
+
+Hebdomon is a latex documentclass for streamlining document creation in latex. This
+package does not ovewrite any TeX or LaTeX commands so the user could use their own
+macros or other commands as they wish.
+
+A manual is written which can be seen in HebdomonGuide which showcases some commands written for the class.
+
+## Author
+
+This package is maintained by D. T. McGuiness: dtm@mci4me.at
+
+## Licence
+
+Released under the LaTeX Project Public License v1.3c or later.
+See https://www.latex-project.org/lppl.txt
diff --git a/macros/latex/contrib/hebdomon/doc/HebdomonGuide.pdf b/macros/latex/contrib/hebdomon/doc/HebdomonGuide.pdf
new file mode 100644
index 0000000000..f458c73d8e
--- /dev/null
+++ b/macros/latex/contrib/hebdomon/doc/HebdomonGuide.pdf
Binary files differ
diff --git a/macros/latex/contrib/hebdomon/doc/HebdomonGuide.tex b/macros/latex/contrib/hebdomon/doc/HebdomonGuide.tex
new file mode 100644
index 0000000000..714857cf40
--- /dev/null
+++ b/macros/latex/contrib/hebdomon/doc/HebdomonGuide.tex
@@ -0,0 +1,461 @@
+% Load the base class
+\documentclass[minted, draw]{../tex/hebdomon}
+
+\begin{document}
+
+\title{Hebdomon \\ Report and Documentation Standard}
+\author{v0.1 - Angry Avocado}
+\StudentName{D. T. McGuiness}
+\date{dtm@mci4me.at}
+
+\publishers{
+ \begin{tabular}[!b]{rl}
+ \textbf{Student Name} & xxxxx \\[3pt]
+ \textbf{Student Number} & xxxxx \\[3pt]
+ \textbf{Module Name} & xxxxx
+ \end{tabular}\\[20pt]
+ }
+
+\maketitle
+\dominitoc
+\tableofcontents
+\newpage
+
+\Chapter{The Hebdomon Template}
+\Section{Introduction}
+
+This document is designed to abstract a significant portion of the
+commands and MACROs to hide away the programming aspect and ease into
+LaTeX programming. While some commands are have been changed \hlight{NO}
+command has been overwritten so feel free to use the original ones
+if you wish.
+
+\begin{warning}
+ As to the best of the authors knowledge, the original commands should work
+ but the aesthetics may be compromised.
+\end{warning}
+
+\Section{Title Formatting}
+
+To begin a new content, always start the content with a chapter heading. To
+insert the chapter with an additional \lstinline[columns=fixed]{minitoc}
+use \lstinline[columns=fixed]{\Chapter}, which produces an heading as
+you see at the beginning of this page, to have a heading without
+a \lstinline[columns=fixed]{minitoc} use the standard
+\lstinline[columns=fixed]{\chapter}.
+
+The document relies on the user to use the \hlight{correct} title commands to
+keep the formatting consistent. The commands that starting with a
+capital letter are the overloaded commands of the standard ones.
+The following are the current ones:
+%
+\begin{code}{python}
+\Chapter{...}
+\Section{...}
+\Subsection{...}
+\Subsubsection{...}
+\end{code}
+%
+\begin{warning}
+ Unless there is a specific reason, it is suggested to use the aforementioned
+ commands. However, original LaTeX command should work as well if you want to use.
+\end{warning}
+
+\Subsection{Page Geometry}
+
+The page geometry is set to the following settings. This is done using the
+standard package \pcode{\usepackage{geometry}} which is defined in the
+\pcode{Hebdomon.cls}.
+%
+\begin{itemize}[leftmargin=!,labelindent=-29.2pt]
+ \item[\textbf{top}] 2.5cm,
+ \item[\textbf{right}] 2.0cm,
+ \item[\textbf{bottom}] 2.5cm,
+ \item[\textbf{left}] 3.0cm.
+\end{itemize}
+%
+\Section{Image Positioning}
+%
+The image positioning could be done with the following code snippet:
+%
+\begin{code}{latex}
+\begin{figure}[ht]
+ \centering
+ \includegraphics[options]{figures/path.pdf}
+ \caption{\label{fig:label} }
+\end{figure}
+\end{code}
+%
+Here there are a few options worth mentioning:
+%
+\begin{hgitemize}
+ \item[\pcode{figures/path}] The place where the image is kept. If the
+ image is in the same folder where the main.tex file resides, it is as
+ simple as writing the files name. If the file is in a folder called
+ image, just write \pcode{image/innsbruck.jpg}. Finally if the image is
+ in a higher directory (i.e., image is in folderA/innsbruck.jpg and the
+ main tex is in folderA/document/main.tex then the path becomes \pcode{../innsbruck.jpg}
+ \item[\pcode{\caption{..}}] Where you write the caption of the image.
+ For consistency make sure every image has a caption as if the image does not
+ need a caption, maybe it not be present to begin with.
+ \item[\pcode{label{}}] This is an identifier for you to use when you need
+ to cite this Figure in a place somewhere. For example if you were to have
+ and image with the following:
+\end{hgitemize}
+%
+\begin{code}{latex}
+\begin{figure}[ht]
+ \centering
+ \includegraphics[width=\textwidth]{figures/path.pdf}
+ \caption{A photo I found on the web.}\label{fig:innsbruck}
+\end{figure}
+\end{code}
+%
+\begin{hgitemize}
+ \item[] Now this image is referenced as \pcode{fig:innsbruck}, which
+ means if we write the following:
+\end{hgitemize}
+%
+\begin{code}{text}
+To see the image, have a look at Figure \ref{fig:innsbruck}
+\end{code}
+%
+This line of command will be presented as
+%
+\begin{excerpt}
+ To see the image, have a look at Figure 1.1.
+\end{excerpt}
+%
+Finally you can see the image here as well.
+%
+\begin{figure}[ht]
+ \centering
+ \includegraphics[width=\linewidth]{figures/innsbruck.jpg}
+ \caption{The famous Innsbruck houses near the river Inn. This image is
+ placed with a width value of \pcode{width=\linewidth}. This is also
+ a good opportunity to showcase the hanging behaviour of the figure
+ caption.}
+\end{figure}
+%
+\Section{Defined Environments}
+%
+\begin{hgitemize}
+ \item[\pcode{excerpt}] The template relies on the excellent \lstinline[columns=fixed]{tcolorbox}
+ package for formatting the boxes within the document and for that end different styles were created.
+ \item[] Sometimes one needs to quote either a proverb or to create drama, for this use
+ the \lstinline[columns=fixed]{excerpt} environment with the following notation and effect.
+\end{hgitemize}
+%
+\begin{code}{latex}
+\begin{excerpt}
+ To be, or not to be...
+\end{excerpt}
+\end{code}
+%
+\begin{hgitemize}
+ \item[] Compiling this code snippet would show as in the document
+\end{hgitemize}
+%
+\begin{excerpt}
+ To be, or not to be...
+\end{excerpt}
+%
+\begin{itemize}[leftmargin=!,labelindent=-29.2pt]
+ \item[\pcode{code}] During the preparation of your document, it is useful to showcase
+ some code either in the shape of all the document or a snippet of it.
+ There are two (\hlight{2}) ways of doing this where the first one will be discussed here.
+ \item[] For example to print out a hello world in python, please use the following environment
+\end{itemize}
+%
+\begin{verbatim}
+\begin{code}{python}
+print("Hello, World!")
+\end{code}
+\end{verbatim}
+%
+Producing the following:
+%
+\begin{code}{python}
+print("Hello, World!")
+\end{code}
+%
+The class also come with some predefined environments to modify the behaviour/aesthetics of the document.
+%
+Highlighting text is \hlight{very easy}, here is an example on how to write one.
+
+\begin{code}{latex}
+Highlighting text is \hlight{very easy}, here is an example:
+\end{code}
+
+\begin{itemize}[leftmargin=!,labelindent=-29.2pt]
+ \item[\pcode{example}] Sometimes you need to showcase an example or
+ need to highlight a certain idea.
+ For these things the environment Example could be useful.
+ \item[] For example to show as simple example or give a slight attention to a topic you can do the following.
+\end{itemize}
+
+\begin{example}
+ This is an example. This could be anything which you would like to have a certain amount of
+ attention but not too much as to distract from the flow of the document.
+\end{example}
+
+\begin{itemize}[leftmargin=!,labelindent=-29.2pt]
+ \item[\pcode{highlight}] Or sometimes you need to give a clear break to the flow of the
+ document and ask the reader to look at your banner. For that use highlight.
+\end{itemize}
+
+\begin{highlight}
+ Hey! Pay attention as this is a highlight box.
+\end{highlight}
+
+\Subsection{Writing Equations}
+%
+One of the strong suits of LaTeX compared to other editors and programs is
+it simplicity and ease of use methods of writing equations. Consider the
+following equation:
+%
+\begin{equation*}
+ f(x) = x^2 + 2x + 1
+\end{equation*}
+%
+In code form this would be written as:
+%
+\begin{code}{latex}
+ \begin{equation*}
+ f(x) = x^2 + 2x + 1
+ \end{equation*}
+\end{code}
+%
+All equations that has their newline and centre staged are mostly written
+in an environment where it has a \pcode{begin} and an \pcode{end}. You may
+have noticed the asterisks sign just after the equation. This implies the
+environment is \hlight{not numbered}, meaning you won't be able to
+reference it. This is used to limit the numbering of equations to just the
+essential parts in the document and not reach 3 digits by the time you are
+in page 8. For a numbered equation like the following
+%
+\begin{equation}
+ f(x) = x^2 + 2x + 1
+\end{equation}
+%
+You only need to do:
+%
+\begin{code}{latex}
+ \begin{equation}\label{eq:quad}
+ f(x) = x^2 + 2x + 1
+ \end{equation}
+\end{code}
+%
+where \pcode{\label{eq:quad}} is the equation reference label.
+%
+You could also make matrices as well as \pcode{amsmath} is preloaded into this template.
+%
+\Subsection{Designing a Table}
+%
+Finally, no template is done without someone telling you how a table should be designed.
+%
+Below is a standard table
+%
+\begin{table}[!ht]
+ \begin{NiceTabular}{rX}[rules/color=[gray]{0.9},rules/width=1pt]
+ \CodeBefore
+ \rowcolors{1}{black!5}{}
+ \rowcolors{3}{blue!5}{}
+ \Body
+ \toprule
+ \textbf{Section} & \textbf{Scientific Method Step} \\
+ \midrule
+ \textbf{Introduction} & states your hypothesis \\
+ \textbf{Methods} & details how you tested your hypothesis \\
+ \textbf{Results} & provides raw (i.e., uninterpreted) data collected \\
+ \textbf{Discussion} & considers whether the data you obtained support the hypothesis \\
+ \bottomrule
+ \end{NiceTabular}
+ \caption{A Detailed look into the scientific method.}
+\end{table}
+%
+And the code used to generate it:
+%
+\begin{code}{latex}
+\begin{table}[!ht]
+ \begin{NiceTabular}{rX}[rules/color=[gray]{0.9},rules/width=1pt]
+ \CodeBefore
+ \rowcolors{1}{black!5}{}
+ \rowcolors{3}{blue!5}{}
+ \Body
+ \toprule
+ \textbf{Section} & \textbf{Scientific Method Step} \\
+ \midrule
+ \textbf{Introduction} & states hypothesis \\
+ \textbf{Methods} & how you tested hypothesis \\
+ \textbf{Results} & provides raw data collected \\
+ \textbf{Discussion} & whether it support the hypothesis \\
+ \bottomrule
+ \end{NiceTabular}
+ \caption{A Detailed look into the scientific method.}
+\end{table}
+\end{code}
+
+\Chapter{Plotting your data using PGF/TikZ}
+
+\Section{Introduction}
+
+PGFplots and Tikz are powerful scripting languages allowing you to draw high-quality diagrams
+using only a programming language. PGFplots are generally used for plotting data from a wide
+variety of representations from simple 2D plots to complex 3D geometries.
+\\
+But wikipedia description put it best:
+
+\begin{excerpt}
+ PGF/TikZ is a pair of languages for producing vector graphics
+ (e.g., technical illustrations and drawings) from a geometric/algebraic description, with
+ standard features including the drawing of points, lines, arrows, paths, circles,
+ ellipses and polygons. PGF is a lower-level language, while TikZ is a set of higher-level
+ macros that use PGF. The top-level PGF and TikZ commands are invoked as TeX macros,
+ but in contrast with PSTricks, the PGF/TikZ graphics themselves are described in a
+ language that resembles MetaPost.
+\end{excerpt}
+
+For more info please look at the documentation \href{https://tikz.dev/pgfplots/}{here}.
+It is of course up to the user to select which graphical software to produce the necessary
+visual components but unless it requires complex functions/processing, it would be be easier
+to have it in PGF/TikZ format for easy editing/maintenance.
+
+For this manual we will be looking at the three (\hlight{3}) plot types you may
+encounter in your studies.
+%
+\Subsection{A Simple 2D Plot}
+%
+2D plots are simple yet powerful to show the relation of a single parameters
+and its related function.
+Below is an example of a simple comparison of two (\hlight{2}) functions.
+%
+\begin{figure}[!ht]
+ \centering
+ \begin{tikzpicture}
+ \begin{axis}[hebdomon, xlabel = \(x\), ylabel = {\(f(x)\)}]
+ %
+ \addplot [domain=-10:10, samples=100,red]{x^3 - 7*x - 1};
+ \addlegendentry{\(x^2 - 2x - 1\)}
+ %
+ \addplot [domain=-10:10, samples=100, blue]{x^2 + 6*x + 8};
+ %
+ \addlegendentry{\(x^2 + 2x + 1\)}
+ %
+ \end{axis}
+ \end{tikzpicture}
+ \caption{This is an example of a 2D PGF plot comparing
+ two functions where these functions are calculated using
+ PGF itself rather than entering/reading from data.}
+\end{figure}
+%
+The image above is generated using the following code:
+
+\begin{code}{latex}
+\begin{figure}[!ht]
+ \centering
+ \begin{tikzpicture}
+ \begin{axis}[hebdomon, xlabel = \(x\), ylabel = {\(f(x)\)}]
+ %
+ \addplot [domain=-10:10, samples=100,red]{x^3 - 7*x - 1};
+ \addlegendentry{\(x^2 - 2x - 1\)}
+ %
+ \addplot [domain=-10:10, samples=100, blue]{x^2 + 6*x + 8};
+ %
+ \addlegendentry{\(x^2 + 2x + 1\)}
+ %
+ \end{axis}
+ \end{tikzpicture}
+ \caption{This is an example of a 2D PGF plot comparing
+ two functions where these functions are calculated using
+ PGF itself rather than entering/reading from data.}
+\end{figure}
+\end{code}
+
+As can be seen it is relatively standard to create plots. Some aspect
+which need mentioning.
+
+\begin{hgitemize}
+ \item[\pcode{\addplot}] You invoke this command when you want to
+ create a plot. In the square brackets (i.e., []) you insert your
+ \hlight{configuration} of your plot. The most important ones are
+ \begin{itemize}
+ \item[\pcode{domain}] the range in which the function will be
+ calculated
+ \item[\pcode{sample}] the number of calculations will be done
+ within the defined domain.
+ \end{itemize}
+\end{hgitemize}
+
+\Subsection{Plotting 3D plots}
+
+Plotting data with PGFplots is also quite possible and will generate
+great plot (as long as it is not massively complicated). For more
+information on the precautions on designing 3D plots, please have a look
+at \href{https://tikz.dev/pgfplots/reference-3dplots}{here}.
+
+Below is the prototypical plot to showcase the 3D capabilities of PGF:
+
+\begin{figure}[!ht]
+ \centering
+ \begin{tikzpicture}
+ \begin{axis}[view={25}{30},mark layer=like plot]
+ \addplot3 [
+ surf,
+ shader=faceted,
+ fill opacity=0.75,
+ samples=25,
+ domain=-4:4,
+ y domain=-4:4,
+ on layer=main,
+ ] {x^2-y^2};
+ \end{axis}
+ \end{tikzpicture}
+ \caption{An example 3D plot done wit PGFplots.}
+\end{figure}
+
+And, of course the code for generating the plot is given as follows:
+
+\begin{code}{latex}
+\begin{figure}[!ht]
+ \centering
+ \begin{tikzpicture}
+ \begin{axis}[view={25}{30},mark layer=like plot]
+ \addplot3 [
+ surf,
+ shader=faceted,
+ fill opacity=0.75,
+ samples=25,
+ domain=-4:4,
+ y domain=-4:4,
+ on layer=main,
+ ] {x^2-y^2};
+ \end{axis}
+ \end{tikzpicture}
+ \caption{An example 3D plot done wit PGFplots.}
+\end{figure}
+\end{code}
+
+Some options worth mentioning are as follows:
+
+\begin{hgitemize}
+ \item[\pcode{surf}] Generates a \hlight{surface} based on the 2D
+ data it was given (in this case these are $x$ and $y$.
+ \item[\pcode{shader}] Describes, basically how each segment should be
+ filled.
+ \item[\pcode{samples}] Similar to 2D plots, tells how many data points will
+ be measured. However, make a note that 3D is significantly more taxing
+ on the TeX memory than 2D and making this sampling high may result in
+ exceeding the memory limit.
+\end{hgitemize}
+
+\end{document}
+
+%%% Local Variables:
+%%% coding: utf-8
+%%% mode: latex
+%%% TeX-command-extra-options: "-shell-escape"
+%%% TeX-master: t
+%%% TeX-engine: luatex
+%%% End:
+
diff --git a/macros/latex/contrib/hebdomon/doc/figures/innsbruck.jpg b/macros/latex/contrib/hebdomon/doc/figures/innsbruck.jpg
new file mode 100644
index 0000000000..c42a2a0580
--- /dev/null
+++ b/macros/latex/contrib/hebdomon/doc/figures/innsbruck.jpg
Binary files differ
diff --git a/macros/latex/contrib/hebdomon/tex/hebdomon.cls b/macros/latex/contrib/hebdomon/tex/hebdomon.cls
new file mode 100644
index 0000000000..33277f76c3
--- /dev/null
+++ b/macros/latex/contrib/hebdomon/tex/hebdomon.cls
@@ -0,0 +1,412 @@
+% Hebdomon document class for use in report and assessment writing
+% Written by D. T. McGuiness: dtm@mci4me.at
+
+% v0.1 - Angry Avocado [WS2024]
+
+\NeedsTeXFormat{LaTeX2e}[1994/06/01]
+\ProvidesClass{hebdomon}[2024/08/08 v0.1 Report and Documentation standard]
+
+% This document is based on the excellent KOMA Script scrreprt class
+% The following options are declared beforehand.
+
+\RequirePackage{ifthen} % require an if-else loop to
+% choose depending on the field
+
+% Allows students to choose which package for code printing.
+
+\newboolean{mnt} % set bool operator for minted
+\newboolean{lst} % set bool operator for lstlisting
+\newboolean{drw} % set bool operator for PGF/TikZ
+
+%-OPTION: set option to choose minted code printing package
+\DeclareOption{minted}{
+ \setboolean{mnt}{true}
+}
+
+%-OPTION: set option to choose lstlisting code printing package
+\DeclareOption{lstlisting}{
+ \setboolean{lst}{true}
+}
+
+%-OPTION: set option to choose PGF/TikZ plotting packages
+\DeclareOption{draw}{
+ \setboolean{drw}{true}
+}
+
+\DeclareOption*{
+ \PassOptionsToClass{\CurrentOption}{scrreprt}
+}
+\ExecuteOptions{}
+\ProcessOptions \relax
+
+% Load the base class to create the custom template
+\LoadClass[
+ bibliography = totoc,
+ headings = big,
+ captions = tableheading,
+ chapterprefix = true,
+]{scrreprt}
+
+% Page Geometry -----------------------------------------------------------
+% Define the default page geometry
+\RequirePackage[
+ left = 3.0cm,
+ right = 2.0cm,
+ top = 2.5cm,
+ bottom = 2.5cm]{geometry}
+
+% Required Packages -------------------------------------------------------
+\RequirePackage{nicematrix} % For modern table design
+\RequirePackage{booktabs} % To access \midrule \toprule \bottomrule
+
+% For use in referencing purposes
+\RequirePackage[
+ backend=bibtex]{biblatex}
+
+\RequirePackage{graphicx} % To enable image insertion
+\RequirePackage{environ} % To allow new environments with Environ
+
+
+\RequirePackage{lmodern}
+\RequirePackage[sfdefault]{FiraSans}
+
+\RequirePackage{minitoc}
+\RequirePackage{setspace}
+
+\RequirePackage{hyperref} % Allow the use of hyperlink within document
+
+\RequirePackage{enumitem}
+
+\RequirePackage{amsmath}
+
+\usepackage[labelfont=bf]{caption} % Set the caption style to bold
+
+\RequirePackage{titlesec}
+
+% %%%%% ----- Colour Definitions ------ %%%%%
+\RequirePackage{xcolor}
+
+% Define the MCI colours.
+\definecolor{mciRed}{HTML}{821131}
+\definecolor{mciBlue}{HTML}{004983}
+\definecolor{mciOrange}{HTML}{fe640b}
+\definecolor{quoteColour}{HTML}{CBA6F7}
+\definecolor{nord7}{HTML}{81a1c1}
+\definecolor{norda}{HTML}{bf616a}
+\definecolor{nord9}{HTML}{5e81ac}
+\definecolor{nord13}{HTML}{ebcb8b}
+\definecolor{nord14}{HTML}{a3be8c}
+
+% %%%%% ----- Code Presentation ----- %%%%%
+% To make this class more compatible and avoid questions about pygments,
+% the author has decided to use listings for code presentation, instead of
+% minted.
+\RequirePackage{listings}
+
+\lstset{
+ aboveskip={1.3\baselineskip},
+ basicstyle=\small\ttfamily\linespread{4},
+ breaklines=false,
+ backgroundcolor = \color[HTML]{eff1f5},
+ columns=flexible,
+ commentstyle=\color[HTML]{6c6f85}\ttfamily,
+ escapechar=@,
+ extendedchars=true,
+ identifierstyle=\color{black},
+ inputencoding=latin1,
+ keywordstyle=\color[HTML]{fe640b},
+ language=Python,
+ ndkeywordstyle=\color[HTML]{228B22},
+ numbers=left,
+ numberstyle=\tiny,
+ prebreak = \raisebox{0ex}[0ex][0ex]{\ensuremath{\hookleftarrow}},
+ showstringspaces=false,
+ stringstyle=\color[HTML]{40a02b}\ttfamily,
+ upquote=true,
+ emph={None},
+ emphstyle={\color[HTML]{FE640B}},
+ % keywordstyle=[1]{\color[HTML]{8839ef}},
+ % morekeywords={(,)},
+ keywordstyle=[2]\color[HTML]{D20F39},
+ keywordstyle={[3]\color[HTML]{8839ef}},
+ keywords=[3]{x},
+}
+
+% \lstset{style=mystyle}
+
+% New Environment Definitions ---------------------------------------------
+% To create environments tcolorbox package is required to make them
+% aesthetically pleasing.
+\RequirePackage{tcolorbox}
+\tcbuselibrary{breakable, minted, skins,theorems, hooks, most}
+
+% %%%%% ----- tcolorbox Templates ----- %%%%%
+
+% Define the excerpt environment style.
+\tcbset{%
+ quoteTemplate/.style={%
+ enhanced,
+ breakable,
+ arc=0pt,
+ outer arc=0pt,
+ toprule=0pt,
+ rightrule=0pt,
+ bottomrule=0pt,
+ leftrule=1mm,
+ colback=white,
+ colframe=mciRed,
+ detach title
+ }%
+}%
+
+\tcbset{%
+ blockTemplate/.style={%
+ enhanced,
+ breakable,
+ arc=0pt,
+ outer arc=0pt,
+ toprule=0pt,
+ rightrule=0pt,
+ bottomrule=0pt,
+ leftrule=1mm,
+ colback=#1!25,
+ colframe=#1,
+ coltitle=black,
+ detach title
+ }%
+}%
+
+% %%%%% --------------------------------%%%%%
+
+% Environment used to insert quotations.
+\NewEnviron{excerpt}[1][]{%
+ \begin{tcolorbox}[blockTemplate=nord7]
+ \BODY
+ \end{tcolorbox}
+}%
+
+\NewEnviron{example}[1][]{%
+ \begin{tcolorbox}[blockTemplate=nord14]
+ \BODY
+ \end{tcolorbox}
+}%
+
+\NewEnviron{highlight}[1][]{%
+ \begin{tcolorbox}[blockTemplate=nord13]
+ \BODY
+ \end{tcolorbox}
+}%
+
+\NewEnviron{theory}[1][]{%
+ \begin{tcolorbox}[blockTemplate=black]
+ \BODY
+ \end{tcolorbox}
+}%
+
+\NewEnviron{warning}[1][]{%
+ \begin{tcolorbox}[blockTemplate=norda]
+ \BODY
+ \end{tcolorbox}
+}%
+
+\NewEnviron{hgitemize}[1][]{%
+ \begin{itemize}[leftmargin=!,labelindent=-29.2pt]
+ \BODY
+ \end{itemize}
+}%
+
+
+
+
+
+% KOMA-Script Configuration -----------------------------------------------
+
+\addtokomafont{chapterprefix}{\raggedleft}
+\addtokomafont{chapter}{\fontsize{30}{38}\selectfont}
+\addtokomafont{section}{\huge}
+\addtokomafont{subsection}{\Large}
+\addtokomafont{subsubsection}{\large}
+
+% Set the fontstyle of minitoc to that of the document
+\renewcommand{\mtifont}{\large\sffamily}
+\renewcommand{\mtcfont}{\small\sffamily}
+\renewcommand{\mtcSfont}{\small\sffamily}
+\renewcommand{\mtcSSfont}{\small\sffamily}
+\renewcommand{\mtcSSSfont}{\small\sffamily}
+
+\newcommand{\StudentName}[1]{\author{#1}}
+
+% Set the depth of TOC
+\setcounter{secnumdepth}{3} % number subsubsections
+\setcounter{tocdepth}{3} % list subsubsections
+
+% Configure the document titles
+\newcommand{\Chapter}[1]{\chapter{\textcolor{mciBlue}{#1}}\minitoc}
+\newcommand{\Section}[1]{\section{\textcolor{mciBlue}{#1}}}
+\newcommand{\Subsection}[1]{\subsection{\textcolor{mciBlue}{#1}}}
+\newcommand{\Subsubsection}[1]{\subsubsection{\textcolor{mciBlue}{#1}}}
+
+\newcommand{\hlight}[1]{\textcolor{mciOrange}{#1}}
+
+
+% Configure the baseline of the document
+\renewcommand{\baselinestretch}{1.2}
+
+\renewcommand*{\chapterformat}{%
+ \mbox{\scalebox{1.5}{\chapappifchapterprefix{\nobreakspace}}%
+ \scalebox{4}{\color{mciRed}\thechapter\autodot}\enskip}}
+
+\newcommand{\heading}[1]{\subsubsection*{$\blacksquare$ #1}}
+\newcommand{\marginsecnumber}[1]{%
+ \makebox[0pt][r]{#1\hspace{6pt}}%
+}
+
+\titleformat{\section} {\normalfont\Large\bfseries}
+{\marginsecnumber\thesection} {0pt} {}
+\titleformat{\subsection} {\normalfont\large\bfseries}
+{\marginsecnumber\thesubsection} {0pt} {}
+\titleformat{\subsubsection}
+{\normalfont\normalsize\bfseries}
+{\marginsecnumber\thesubsubsection}
+{0pt} {}
+\titleformat{\paragraph}[runin]
+{\normalfont\normalsize\bfseries}
+{\marginsecnumber\theparagraph}
+{0pt} {}
+\titleformat{\subparagraph}[runin]
+{\normalfont\normalsize\bfseries}
+{\marginsecnumber\thesubparagraph}
+{0pt}
+{}
+
+\titlespacing*{\subsection}{0pt}{*3.25}{*1.5}%
+
+\setlength\parindent{0pt} % set no indent for the entire file
+
+\ifthenelse{\boolean{mnt}}{%
+ \RequirePackage{minted}
+
+ \newcommand{\pcode}[1]{%
+ {%
+ \colorbox{gray!10}{%
+ \mintinline[fontsize=\small]{text}{#1}%
+ }%
+ }%
+ }%
+
+ %\usemintedstyle{catppuccin-latte}
+
+ \definecolor{catback}{HTML}{585b70}
+ \definecolor{catground}{HTML}{eff1f5}
+
+ % Set box and font rules for inputminted command for paper
+ \newtcbinputlisting{\codeinputpaper}[4][]{%
+ listing file={#3},
+ minted language=#2,
+ minted options={
+ fontsize=\small,
+ tabsize=4,
+ xleftmargin=-2.25mm,
+ numbersep=5mm,
+ breaklines=true,
+ highlightcolor=orange!50,
+ %formatcom=orange!50
+ },% <-- put other minted options inside the brackets
+ overlay unbroken and first={%
+ \begin{tcbclipinterior}
+ \fill[catback] (frame.south west) rectangle
+ ([xshift=1mm]frame.north west);
+ \fill[catback] (frame.north east) rectangle
+ ([xshift=-4mm, yshift=-10mm]frame.north east);
+ \fill[catback]
+ ([xshift=-4mm, yshift=-10mm]frame.north east) --
+ ([xshift=0mm, yshift=-10mm]frame.north east) --
+ ([xshift=0mm, yshift=-12mm]frame.north east);
+ \end{tcbclipinterior}
+ \node[rotate=-90, minimum width=1cm, anchor=north,
+ font=\bfseries] at ([xshift=0mm, yshift=-4mm]frame.north
+ east) {\tiny \textcolor{white}{#2}}; },
+ sharp corners,
+ leftrule=1mm,
+ toprule=0pt,
+ rightrule=0pt,
+ bottomrule=0pt,
+ colback=catground,
+ colframe=black,
+ breakable,
+ enhanced,% <-- put other tcolorbox options here
+ arc=0mm,
+ boxrule=0pt,
+ frame hidden,
+ listing only,
+ minted options app={#1}}
+
+ \RequirePackage{xpatch}
+
+ \newenvironment{code}[1]
+ {%
+ \VerbatimEnvironment
+ \begin{minted}{#1}%
+}
+{%
+ \end{minted}%
+ }
+ %
+ \xpatchcmd{\mintinline}{\begingroup}{\begingroup\let\itshape\relax}{}{}
+ \xpatchcmd{\minted}{\VerbatimEnvironment}{\VerbatimEnvironment\let\itshape\relax}{}{}
+ \xpatchcmd{\inputminted}{\begingroup}{\begingroup\let\itshape\relax}{}{}
+}{}
+
+\ifthenelse{\boolean{lst}}{%
+ \RequirePackage{listings}%
+ \RequirePackage{xparse}
+
+ \NewDocumentCommand{\pcode}{v}{%
+ #1%
+ }
+
+ \newenvironment{code}[1]
+ {%
+ \VerbatimEnvironment
+ \begin{lstlisting}{language=#1}%
+}
+{%
+ \end{lstlisting}%
+ }
+}{}
+
+
+\ifthenelse{\boolean{drw}}{%
+ \RequirePackage{pgfplots} % Enable to draw plots in the documents
+ \usepackage{tikz} % Enable Tikz and its libraries
+ \pgfplotsset{compat=1.18} % Set the pgf compatibility.
+ %
+ \usepgfplotslibrary{polar} % To access polarplot
+ %
+ \pgfplotsset{
+ hebdomon/.style={
+ minor grid style={dotted, gray!50},
+ major grid style={dotted, gray!50},
+ %
+ grid = both,
+ minor tick num=2,
+ ytick align=outside,
+ xtick align=outside,
+ axis line style={draw=none},
+ axis lines = left,
+ %
+ line width=2pt,
+ %
+ legend style = {
+ line width=0.5pt
+ },
+ %
+ every non boxed x axis/.append style={x axis line style=-},
+ every non boxed y axis/.append style={y axis line style=-},
+ %
+ },
+ }
+}{}
+
+
+\endinput
diff --git a/macros/latex/contrib/heria/README.md b/macros/latex/contrib/heria/README.md
index b3d5cf32b1..664e9ae18b 100644
--- a/macros/latex/contrib/heria/README.md
+++ b/macros/latex/contrib/heria/README.md
@@ -34,5 +34,5 @@ feature requests.
The `heria` class is distributed under the conditions of the [LaTeX
Project Public License](https://www.latex-project.org/lppl.txt),
-either version 1.3 of this license or (at your option) any later
+either version 1.3c of this license or (at your option) any later
version.
diff --git a/macros/latex/contrib/heria/heria-proposal.pdf b/macros/latex/contrib/heria/heria-proposal.pdf
index f8d64312a9..79892c24d2 100644
--- a/macros/latex/contrib/heria/heria-proposal.pdf
+++ b/macros/latex/contrib/heria/heria-proposal.pdf
Binary files differ
diff --git a/macros/latex/contrib/heria/heria.dtx b/macros/latex/contrib/heria/heria.dtx
index 5c6b5e9691..7da06a879d 100644
--- a/macros/latex/contrib/heria/heria.dtx
+++ b/macros/latex/contrib/heria/heria.dtx
@@ -1,10 +1,10 @@
% \iffalse meta-comment
%
-% Copyright 2023 Tristan Miller
-% -----------------------------
+% Copyright 2023, 2024 Tristan Miller
+% -----------------------------------
%
% This work may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either version 1.3
+% conditions of the LaTeX Project Public License, either version 1.3c
% of this license or (at your option) any later version.
% The latest version of this license is in
% https://www.latex-project.org/lppl.txt
@@ -18,11 +18,11 @@
\ProvidesFile{heria.dtx}
%</driver>
%<*class>
-%% Copyright 2023 Tristan Miller
+%% Copyright 2023, 2024 Tristan Miller
%% Copyright 2016 John Kormylo
%%
%% This work may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either version 1.3
+%% conditions of the LaTeX Project Public License, either version 1.3c
%% of this license or (at your option) any later version.
%% The latest version of this license is in
%% https://www.latex-project.org/lppl.txt
@@ -33,7 +33,7 @@
%<class>\NeedsTeXFormat{LaTeX2e}
%<class>\ProvidesClass{heria}
%<*class>
-[2023-12-04 v3.2.1.0 Class for Horizon Europe (R)IA proposals]
+[2024-08-14 v3.4.1.1 Class for Horizon Europe (R)IA proposals]
%</class>
%
%<*driver>
@@ -50,7 +50,7 @@
%</driver>
% \fi
%
-% \CheckSum{1506}
+% \CheckSum{1520}
%
% \CharacterTable
% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -80,8 +80,9 @@
% for an explanation of the versioning scheme.}}
%
% \author{Tristan Miller\\
-% Austrian Research Institute for Artificial Intelligence\\
-% \texttt{tristan.miller@ofai.at}}
+% Department of Computer Science\\
+% University of Manitoba\\
+% \texttt{Tristan.Miller@umanitoba.ca}}
%
% \maketitle
% \tableofcontents
@@ -104,14 +105,26 @@
% the user. The advantage of this becomes clear when one considers
% that much of the data is reused across multiple tables.
%
-% At the time of writing (2023-12-04), open calls to the RIA and IA
-% calls require proposals to be submitted according to either
-% Version~3.2 (2022-11-15) or Version~3.3 (2023-09-27) of the Part~B
-% template. The \textsf{heria} package was developed with reference
-% to the Version~3.2 template; however, according to the changelog for
-% the Version~3.3 template, the only difference from the previous
-% version is the addition of some instructions concerning the use of
-% generative AI tools for the preparation of the proposal.
+% The \textsf{heria} package can be used to write proposals using
+% either Version~3.2 (2022-11-15), 3.3 (2023-09-27), or 3.4
+% (2024-04-04) of the official Part~B template.
+%
+% \bigskip
+%
+% \noindent Besides this technical manual, there is a journal article
+% that describes the motivation for and development of \textsf{heria}:
+%
+% \begin{quote}
+% Tristan
+% Miller. \href{https://dx.doi.org/10.47397/tb/45-1/tb139miller-horizon}{Preparing
+% Horizon Europe proposals in \LaTeX\ with
+% \textsf{heria}}. \emph{TUGboat: The Communications of the \TeX\
+% Users Group}, 45(1):\allowbreak 59–64, 2024. ISSN 0896-3207. DOI:
+% \href{https://dx.doi.org/10.47397/tb/45-1/tb139miller-horizon}{10.47397/tb/45-1/tb139miller-horizon}.
+% \end{quote}
+%
+% \noindent Please cite this journal article if you want to refer to
+% \textsf{heria} in a publication.
%
% \section{Usage}
%
@@ -140,8 +153,20 @@
%
% \medskip
%
-% \noindent Following \cs{documentclass} you should provide the
-% proposal metadata using the following macros:
+% \noindent Following \cs{documentclass} you should tell
+% \textsf{heria} which version of the official Part~B template you
+% want to use:
+%
+% \DescribeMacro{\templateversion} This macro sets the version of the
+% official Part~B template the proposal should use. It takes a single
+% argument; valid values are \verb|3.2|, \verb|3.3|, and \verb|3.4|.
+% If you omit this macro, \textsf{heria} will default to using the
+% latest version of the template.
+%
+% \medskip
+%
+% \noindent You should then provide the proposal metadata using the
+% following macros:
%
% \DescribeMacro{\title} This macro takes the title of the proposal as
% its sole argument. This title will be printed by the \cs{maketitle}
@@ -446,18 +471,6 @@
%
% \section{Limitations and caveats}
%
-% \paragraph{No backward compatibility.} This version of the
-% \textsf{heria} class implements a specific version of the official
-% Horizon Europe template as described in §\ref{sec:introduction}. It
-% is intended that \textsf{heria}, over the course of its development,
-% will track changes made to the official template. Since these
-% changes may be incompatible with previous versions, you are advised
-% to retain a copy of the version of \textsf{heria} you used to
-% produce a proposal; this way you will still be able to build the
-% proposal even if you later install a new version of \textsf{heria}.
-% See §\ref{sec:version} for further information on \textsf{heria}'s
-% versioning scheme and when to expect breaking changes.
-%
% \paragraph{Table 3.1h.} The instructions in the official template
% are ambiguous about the construction of the tables for purchase
% costs. In particular, it's not clear whether each individual cost
@@ -497,21 +510,28 @@
%
% Each release of the \textsf{heria} class carries a version number in
% the format \textit{omaj.\allowbreak omin.\allowbreak maj.\allowbreak
-% min}. Here \textit{omaj.omin} is the version number of the official
-% Horizon Europe RIA template that the class implements, and
+% min}. Here \textit{omaj.omin} is the highest version number of the
+% official Horizon Europe RIA template that the class implements, and
% \textit{maj} and \textit{min} represent, respectively, major and
% minor revisions to the class (including any ancillary files, such as
% the skeleton proposal and documentation). A major revision is one
-% that includes breaking changes or significant new features; minor
-% revisions are for all other changes. You should generally assume
-% that any change to \textit{omaj.omin} introduces breaking changes to
-% the class interface and\slash or significant changes to the official
-% proposal preparation instructions.
+% that includes potentially breaking changes or significant new
+% features; minor revisions are for all other changes. While efforts
+% will be made to preserve compatibility with earlier versions of the
+% official template (via the \cs{templateversion} macro), any change
+% to \textit{omaj.omin} could unavoidably introduce breaking changes
+% to the class interface. Any such changes will be noted in the
+% package documentation.
%
% \subsection{Version history}
%
% \begin{description}
-% \item[v3.2.1.0 (2023-12-04)] Initial release.
+% \item[v3.4.1.1 (2024-08-14)] Update documentation with a reference
+% to the \emph{TUGboat} paper on \textsf{heria}.
+% \item[v3.4.1.0 (2024-07-14)] Add support for version 3.4 of the
+% official Part~B template and the \cs{templateversion} macro for
+% backward compatibility with earlier versions.
+% \item[v3.2.1.0 (2023-12-04)] Initial release.
% \end{description}
%
% \section{Disclaimer}
@@ -599,6 +619,22 @@
\definecolor{summaryblue}{HTML}{00B0F0}
% \end{macrocode}
%
+% \subsection*{Set official Horizon Europe template version}
+%
+% \begin{macrocode}
+\gdef\@templateversion{3.4} % Default version
+\def\@supportedtemplateversions{3.2,3.3,3.4} % Supported versions
+\ExplSyntaxOn
+\NewDocumentCommand{\templateversion}{m}{%
+ \clist_if_in:NnTF {\@supportedtemplateversions} {#1}
+ {\gdef\@templateversion{#1}}
+ {\PackageError{heria}%
+ {unsupported~template~version}%
+ {Use~one~of~\@supportedtemplateversions}
+ }%
+}
+\ExplSyntaxOff
+% \end{macrocode}
% \subsection*{Basic proposal variables}
%
% \begin{macrocode}
@@ -1459,7 +1495,6 @@
% communication with Tristan Miller on 2023-12-02.
%
% \begin{macrocode}
-\RequirePackage{everypage}
\RequirePackage{environ}
\newcounter{abspage}% \thepage not reliab
\newcommand{\newSFPage}[1]% #1 = \theabspage
@@ -1474,15 +1509,17 @@
\rotatebox{90}{\parbox[c][\textwidth][c]{\textheight}{\BODY}}%
\fi
\end{figure}}
-\AddEverypageHook{% check if sideways figure on this page
- \ifdim\textwidth=\textheight
- \stepcounter{abspage}% already in landscape
- \else
- \@ifundefined{SFPage@\theabspage}{}{\global\pdfpageattr{/Rotate 0}}%
- \stepcounter{abspage}%
- \@ifundefined{SFPage@\theabspage}{}%
- {\global\pdfpageattr{/Rotate 90}}%
- \fi}
+\AddToHook{shipout/background}{% check if sideways figure on this page
+ \put(1in,-1in){%
+ \ifdim\textwidth=\textheight
+ \stepcounter{abspage}% already in landscape
+ \else
+ \@ifundefined{SFPage@\theabspage}{}{\global\pdfpageattr{/Rotate 0}}%
+ \stepcounter{abspage}%
+ \@ifundefined{SFPage@\theabspage}{}%
+ {\global\pdfpageattr{/Rotate 90}}%
+ \fi}%
+ }
% \end{macrocode}
%
% \subsection*{Font setup}
@@ -1987,7 +2024,7 @@ purchase costs for equipment).
environmental objectives of the EU Taxonomy Regulation.}
\item
\emph{If you plan to use, develop and/or deploy artificial
- intellingence (AI) based systems and/or techniques you must
+ intelligence (AI) based systems and/or techniques you must
demonstrate their technical robustness. AI-based systems or techniques
should be, or be developed to become:~}
@@ -2371,12 +2408,33 @@ Please provide the following:
\item
\emph{Give full details. Base your account on the logical structure of
the project and the stages in which it is to be carried out.}
+\makeatletter
+\ifdim\@templateversion pt<3.4pt
\emph{The number of work packages should be proportionate to the scale
and complexity of the project.}
\item
\emph{You should give enough detail in each work package to justify
the proposed resources to be allocated and also quantified information
so that progress can be monitored, including by the Commission}
+\else
+ \emph{Each work package should be a substantial part of the work
+ plan, and the number of work packages should be proportionate to
+ the scale and complexity of the project.}
+\item \emph{Structure each work package by breaking it down into
+ tasks. If tasks are not appropriate, work packages can be
+ organised according to other criteria (e.g., according to the type
+ of work or thematically). For each task or element of the work
+ package, describe all activities to be carried out and quantify
+ them (e.g., number of protocols, tests, measurements,
+ combinations, study subjects, conferences, publications,
+ etc.). Provide enough detail to clarify who will do this work and
+ why it is needed for the project, (e.g., the level of
+ qualification and number of person-months for personnel, as well
+ as the requested equipment, consumables, meetings, etc.), to
+ justify the proposed resources and so that progress can be
+ monitored, including by the Commission.}
+\fi
+\makeatother
\item
\emph{Resources assigned to work packages should be in line with their
objectives and deliverables. You are advised to include a distinct
@@ -2431,9 +2489,15 @@ Please provide the following:
\end{itemize}
%</hi-workplan>
%<*hi-wp-description>
+\makeatletter
+\ifdim\@templateversion pt<3.4pt
(where appropriate, broken down into tasks), lead partner and role of
participants. Deliverables linked to each WP are listed in table 3.1c
(no need to repeat the information here).
+\else
+(where appropriate, broken down into tasks), lead partner and role of participants. For each task, quantify the amount of work. Provide enough detail to justify the resources requested and clarify why the work is needed and who will do it. Deliverables linked to each WP are listed in table 3.1c (no need to repeat the information here).
+\fi
+\makeatother
%</hi-wp-description>
%<*hi-wp-objectives>
\twarn \emph{Participants involved in each WP and their efforts are
@@ -2441,10 +2505,10 @@ participants. Deliverables linked to each WP are listed in table 3.1c
each WP are shown in table 3.1a.)}
%</hi-wp-objectives>
%<*heria-proposal>
-%% Copyright 2023 Tristan Miller
+%% Copyright 2023, 2024 Tristan Miller
%%
%% This work may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either version 1.3
+%% conditions of the LaTeX Project Public License, either version 1.3c
%% of this license or (at your option) any later version.
%% The latest version of this license is in
%% https://www.latex-project.org/lppl.txt
@@ -2453,6 +2517,8 @@ participants. Deliverables linked to each WP are listed in table 3.1c
%%
\documentclass[showinstructions]{heria}
+\templateversion{3.4}
+
\title{Skeleton Horizon Europe Proposal}
\callname{insert call name}
\callidentifier{HORIZON-XX0-0000-XXXXX-00-XXXXX}
diff --git a/macros/latex/contrib/heria/heria.ins b/macros/latex/contrib/heria/heria.ins
index 89b8b7f72c..406573836d 100644
--- a/macros/latex/contrib/heria/heria.ins
+++ b/macros/latex/contrib/heria/heria.ins
@@ -1,8 +1,8 @@
%%
-%% Copyright 2023 Tristan Miller
+%% Copyright 2023, 2024 Tristan Miller
%%
%% This work may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either version 1.3
+%% conditions of the LaTeX Project Public License, either version 1.3c
%% of this license or (at your option) any later version.
%% The latest version of this license is in
%% https://www.latex-project.org/lppl.txt
diff --git a/macros/latex/contrib/heria/heria.pdf b/macros/latex/contrib/heria/heria.pdf
index af4f0cd627..3295f000a9 100644
--- a/macros/latex/contrib/heria/heria.pdf
+++ b/macros/latex/contrib/heria/heria.pdf
Binary files differ
diff --git a/macros/latex/contrib/hvqrurl/Changes b/macros/latex/contrib/hvqrurl/Changes
index ac9fca90d3..2b4551ba30 100644
--- a/macros/latex/contrib/hvqrurl/Changes
+++ b/macros/latex/contrib/hvqrurl/Changes
@@ -1,4 +1,5 @@
hvqrurl.sty:
+0.09 2024-05-16 - added option "forget" to create all codes new
0.08 2024-05-14 - fix for color setting of the qrcode
0.07 2024-02-06 - allow active chars in linktext
0.06 2024-02-03 - fix for introduced bug with linktext
diff --git a/macros/latex/contrib/hvqrurl/doc/hvqrurl.pdf b/macros/latex/contrib/hvqrurl/doc/hvqrurl.pdf
index 0960eb3f17..eaf57e1246 100644
--- a/macros/latex/contrib/hvqrurl/doc/hvqrurl.pdf
+++ b/macros/latex/contrib/hvqrurl/doc/hvqrurl.pdf
Binary files differ
diff --git a/macros/latex/contrib/hvqrurl/doc/hvqrurl.tex b/macros/latex/contrib/hvqrurl/doc/hvqrurl.tex
index 9886a639c0..175933e943 100644
--- a/macros/latex/contrib/hvqrurl/doc/hvqrurl.tex
+++ b/macros/latex/contrib/hvqrurl/doc/hvqrurl.tex
@@ -1,4 +1,4 @@
-%% $Id: hvqrurl.tex 895 2024-05-14 19:22:17Z herbert $
+%% $Id: hvqrurl.tex 901 2024-05-26 07:18:06Z herbert $
\listfiles
\errorcontextlines=100
\documentclass[twoside=on,usegeometry]{scrartcl}
@@ -38,7 +38,7 @@
linktocpage, colorlinks=true}%
\begin{document}
-\title{Package \texttt{hvqrurl}\\Creating a QR-code of an URL in the margin \\\small ver 0.08}
+\title{Package \texttt{hvqrurl}\\Creating a QR-code of an URL in the margin \\\small ver 0.09}
\author{Herbert Voß\thanks{\protect\url{hvoss@tug.org}}}
\date{\today}
\maketitle
@@ -53,8 +53,30 @@ and
\end{abstract}
-\section{The macros}
+\section{Package option}
+There is only one package option \Lkeyword{forget}. If it is used, then all
+qrcodes are always created new and the already existing codes in the \Lext{aux} file
+are not used. The deafult is not to use this option. For example: 100 qrcodes needs
+about 30 seconds with option \Lkeyword{forget}, but only 4 seconds without it. It is obvious
+that for the first \LaTeX\ run the codes will allways be created new.
+If a qrcode is
+created, e.g. for \hvqrurl{https://pkks.de}, then there is something like
+
+\begin{verbatim}
+\qr@savematrix{https://pkks.de}{2}{3}{11111110001010011011111111000001001110110101000001101110100
+0000011101011101101110101010001000101110110111010001111110010111011000001011010001001000001111111
+1010101010101111111000000001111001110000000001100010000011101011010000000010011010110001101011001
+0011100111001010111101101011001011110011100100011110010100001011010000010010010100101101101100011
+1101111011111111110001101001010000001010011111100011100011000101011111100100000000011101110100010
+0011111111001100110101010001100000100101100110001001110111010001010011111100001011101000110010110
+010100101110101010010000011101110000010101110101001100001111111001001011100001001}
+\end{verbatim}
+
+in the \Lext{aux} file (all in one line!). This is always used in following
+\LaTeX\ runs and created only new if the URL changes or the option \Lkeyword{forget}
+is used.
+\section{The macros}
\begin{BDef}
\Lcs{hvqrset}\Largb{key=value, \ldots}\\
diff --git a/macros/latex/contrib/hvqrurl/latex/hvqrurl.sty b/macros/latex/contrib/hvqrurl/latex/hvqrurl.sty
index da8f84fc10..29ddf89c21 100644
--- a/macros/latex/contrib/hvqrurl/latex/hvqrurl.sty
+++ b/macros/latex/contrib/hvqrurl/latex/hvqrurl.sty
@@ -1,4 +1,4 @@
-%% $Id: hvqrurl.sty 895 2024-05-14 19:22:17Z herbert $
+%% $Id: hvqrurl.sty 901 2024-05-26 07:18:06Z herbert $
%%
%% This file is distributed under the terms of the LaTeX Project Public
%% License from CTAN archives in directory macros/latex/base/lppl.txt.
@@ -7,21 +7,25 @@
% Copyright 2019,21,23,24 Herbert Voss hvoss@tug.org
%%
\ProvidesPackage{hvqrurl}[%
- 2024/05/14 v.0.08 (Herbert Voss) Supports qr images into the margin (hv)]
+ 2024/05/26 v.0.09 (Herbert Voss) Supports qr images into the margin (hv)]
%
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{url}
\RequirePackage{xcolor}
\RequirePackage{marginnote}
-\RequirePackage{qrcode}
+%\RequirePackage{qrcode}
\RequirePackage{xkeyval}
+\newif\if@hv@forget
+\@hv@forgetfalse
+\DeclareOption{forget}{\@hv@forgettrue}
+
\newif\if@no@hyperref
\@no@hyperreffalse
-
\DeclareOption{nohyperref}{\@no@hyperreftrue}
\ProcessOptions
+\if@hv@forget\RequirePackage[forget]{qrcode}\else\RequirePackage{qrcode}\fi
\if@no@hyperref\else\RequirePackage{hyperref}\fi
\newlength\qr@url@qrheight
diff --git a/macros/latex/contrib/hypcap/README.md b/macros/latex/contrib/hypcap/README.md
new file mode 100644
index 0000000000..07580bcb3f
--- /dev/null
+++ b/macros/latex/contrib/hypcap/README.md
@@ -0,0 +1,20 @@
+# hypcap package for LaTeX
+
+* adjusting anchors of captions;
+
+Version: 2024-07-26 v1.13
+
+This package tries a solution of the problem with
+hyperref, that links to floats points below the
+caption and not at the beginning of the float.
+Therefore this package divides the task into two
+part, the link setting with `\capstart` or
+automatically at the beginning of a float and
+the rest in the `\caption` command.
+
+## Copyright (C)
+* 1999-2001, 2006-2008, 2011 Heiko Oberdiek
+* 2016-2024 Oberdiek Package Support Group
+
+## License
+LATEX Project Public License, version 1.3c or later.
diff --git a/macros/latex/contrib/oberdiek/hypcap.dtx b/macros/latex/contrib/hypcap/hypcap.dtx
index a9bb106fe3..ef7538e91e 100644
--- a/macros/latex/contrib/oberdiek/hypcap.dtx
+++ b/macros/latex/contrib/hypcap/hypcap.dtx
@@ -1,13 +1,13 @@
% \iffalse meta-comment
%
% File: hypcap.dtx
-% Version: 2016/05/16 v1.12
+% Version: 2024-07-26 v1.13
% Info: Adjusting the anchors of captions
%
% Copyright (C)
% 1999-2001, 2006-2008, 2011 Heiko Oberdiek
-% 2016-2019 Oberdiek Package Support Group
-% https://github.com/ho-tex/oberdiek/issues
+% 2016-2024 Oberdiek Package Support Group
+% https://github.com/ho-tex/hypcap/issues
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either
@@ -23,15 +23,15 @@
%
% The Current Maintainers of this work are
% Heiko Oberdiek and the Oberdiek Package Support Group
-% https://github.com/ho-tex/oberdiek/issues
+% https://github.com/ho-tex/hypcap/issues
%
% This work consists of the main source file hypcap.dtx
% and the derived files
% hypcap.sty, hypcap.pdf, hypcap.ins, hypcap.drv.
%
% Distribution:
-% CTAN:macros/latex/contrib/oberdiek/hypcap.dtx
-% CTAN:macros/latex/contrib/oberdiek/hypcap.pdf
+% CTAN:macros/latex/contrib/hypcap/hypcap.dtx
+% CTAN:macros/latex/contrib/hypcap/hypcap.pdf
%
% Unpacking:
% (a) If hypcap.ins is present:
@@ -52,7 +52,7 @@
% use A4 as paper format:
% \PassOptionsToClass{a4paper}{article}
%
-% Programm calls to get the documentation (example):
+% Program calls to get the documentation (example):
% pdflatex hypcap.dtx
% makeindex -s gind.ist hypcap.idx
% pdflatex hypcap.dtx
@@ -60,9 +60,9 @@
% pdflatex hypcap.dtx
%
% Installation:
-% TDS:tex/latex/oberdiek/hypcap.sty
-% TDS:doc/latex/oberdiek/hypcap.pdf
-% TDS:source/latex/oberdiek/hypcap.dtx
+% TDS:tex/latex/hypcap/hypcap.sty
+% TDS:doc/latex/hypcap/hypcap.pdf
+% TDS:source/latex/hypcap/hypcap.dtx
%
%<*ignore>
\begingroup
@@ -79,7 +79,7 @@
\input docstrip.tex
\Msg{************************************************************************}
\Msg{* Installation}
-\Msg{* Package: hypcap 2016/05/16 v1.12 Adjusting the anchors of captions (HO)}
+\Msg{* Package: hypcap 2024-07-26 v1.13 Adjusting the anchors of captions (HO)}
\Msg{************************************************************************}
\keepsilent
@@ -91,11 +91,11 @@
This is a generated file.
Project: hypcap
-Version: 2016/05/16 v1.12
+Version: 2024-07-26 v1.13
Copyright (C)
1999-2001, 2006-2008, 2011 Heiko Oberdiek
- 2016-2019 Oberdiek Package Support Group
+ 2016-2024 Oberdiek Package Support Group
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either
@@ -111,7 +111,7 @@ This work has the LPPL maintenance status "maintained".
The Current Maintainers of this work are
Heiko Oberdiek and the Oberdiek Package Support Group
-https://github.com/ho-tex/oberdiek/issues
+https://github.com/ho-tex/hypcap/issues
This work consists of the main source file hypcap.dtx
@@ -124,7 +124,7 @@ and the derived files
\generate{%
\file{hypcap.ins}{\from{hypcap.dtx}{install}}%
\file{hypcap.drv}{\from{hypcap.dtx}{driver}}%
- \usedir{tex/latex/oberdiek}%
+ \usedir{tex/latex/hypcap}%
\file{hypcap.sty}{\from{hypcap.dtx}{package}}%
}
@@ -152,7 +152,7 @@ and the derived files
%<*driver>
\NeedsTeXFormat{LaTeX2e}
\ProvidesFile{hypcap.drv}%
- [2016/05/16 v1.12 Adjusting the anchors of captions (HO)]%
+ [2024-07-26 v1.13 Adjusting the anchors of captions (HO)]%
\documentclass{ltxdoc}
\usepackage{holtxdoc}[2011/11/22]
\begin{document}
@@ -166,9 +166,9 @@ and the derived files
% \GetFileInfo{hypcap.drv}
%
% \title{The \xpackage{hypcap} package}
-% \date{2016/05/16 v1.12}
+% \date{2024-07-26 v1.13}
% \author{Heiko Oberdiek\thanks
-% {Please report any issues at \url{https://github.com/ho-tex/oberdiek/issues}}}
+% {Please report any issues at \url{https://github.com/ho-tex/hypcap/issues}}}
%
% \maketitle
%
@@ -301,7 +301,7 @@ and the derived files
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{hypcap}%
- [2016/05/16 v1.12 Adjusting the anchors of captions (HO)]
+ [2024-07-26 v1.13 Adjusting the anchors of captions (HO)]
% \end{macrocode}
%
% For unique command names this package uses |hc@| as prefix
@@ -461,7 +461,7 @@ and the derived files
\capstart
}{%
\if@capstart
- \PackageError{hypcap}{You have forgotten to use \string\caption}%
+ \PackageWarning{hypcap}{You have forgotten to use \string\caption}%
\global\@capstartfalse
\else
\fi
@@ -497,31 +497,11 @@ and the derived files
% \paragraph{Package.} This package is available on
% CTAN\footnote{\CTANpkg{hypcap}}:
% \begin{description}
-% \item[\CTAN{macros/latex/contrib/oberdiek/hypcap.dtx}] The source file.
-% \item[\CTAN{macros/latex/contrib/oberdiek/hypcap.pdf}] Documentation.
+% \item[\CTAN{macros/latex/contrib/hypcap/hypcap.dtx}] The source file.
+% \item[\CTAN{macros/latex/contrib/hypcap/hypcap.pdf}] Documentation.
% \end{description}
%
%
-% \paragraph{Bundle.} All the packages of the bundle `oberdiek'
-% are also available in a TDS compliant ZIP archive. There
-% the packages are already unpacked and the documentation files
-% are generated. The files and directories obey the TDS standard.
-% \begin{description}
-% \item[\CTANinstall{install/macros/latex/contrib/oberdiek.tds.zip}]
-% \end{description}
-% \emph{TDS} refers to the standard ``A Directory Structure
-% for \TeX\ Files'' (\CTANpkg{tds}). Directories
-% with \xfile{texmf} in their name are usually organized this way.
-%
-% \subsection{Bundle installation}
-%
-% \paragraph{Unpacking.} Unpack the \xfile{oberdiek.tds.zip} in the
-% TDS tree (also known as \xfile{texmf} tree) of your choice.
-% Example (linux):
-% \begin{quote}
-% |unzip oberdiek.tds.zip -d ~/texmf|
-% \end{quote}
-%
% \subsection{Package installation}
%
% \paragraph{Unpacking.} The \xfile{.dtx} file is a self-extracting
@@ -537,9 +517,9 @@ and the derived files
% \begin{quote}
% \def\t{^^A
% \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}}
-% hypcap.sty & tex/latex/oberdiek/hypcap.sty\\
-% hypcap.pdf & doc/latex/oberdiek/hypcap.pdf\\
-% hypcap.dtx & source/latex/oberdiek/hypcap.dtx\\
+% hypcap.sty & tex/latex/hypcap/hypcap.sty\\
+% hypcap.pdf & doc/latex/hypcap/hypcap.pdf\\
+% hypcap.dtx & source/latex/hypcap/hypcap.dtx\\
% \end{tabular}^^A
% }^^A
% \sbox0{\t}^^A
@@ -718,6 +698,9 @@ and the derived files
% \item
% Documentation updates.
% \end{Version}
+% \begin{Version}{2024-07-26 v1.13}
+% \item Change error into warning, issue \#1
+% \end{Version}
% \end{History}
%
% \PrintIndex
diff --git a/macros/latex/contrib/oberdiek/hypcap.pdf b/macros/latex/contrib/hypcap/hypcap.pdf
index 46df7e8951..bea211492f 100644
--- a/macros/latex/contrib/oberdiek/hypcap.pdf
+++ b/macros/latex/contrib/hypcap/hypcap.pdf
Binary files differ
diff --git a/macros/latex/contrib/hypdestopt/README.md b/macros/latex/contrib/hypdestopt/README.md
index 0610b53e58..71e1c7066e 100644
--- a/macros/latex/contrib/hypdestopt/README.md
+++ b/macros/latex/contrib/hypdestopt/README.md
@@ -1,6 +1,6 @@
# hypdestopt package for LaTeX
-Version: 2020-09-02 v2.7
+Version: 2024-08-07 v2.8
Hyperref destination optimizer
@@ -11,7 +11,7 @@ to get smaller PDF files.
## Copyright (C)
* 2007, 2009-2011 Heiko Oberdiek
-* 2016-2020 Oberdiek Package Support Group
+* 2016-2024 Oberdiek Package Support Group
## License
LATEX Project Public License, version 1.3c or later.
diff --git a/macros/latex/contrib/hypdestopt/hypdestopt.dtx b/macros/latex/contrib/hypdestopt/hypdestopt.dtx
index 03006db27b..f9c6af1e6d 100644
--- a/macros/latex/contrib/hypdestopt/hypdestopt.dtx
+++ b/macros/latex/contrib/hypdestopt/hypdestopt.dtx
@@ -1,12 +1,12 @@
% \iffalse meta-comment
%
% File: hypdestopt.dtx
-% Version: 2020-09-02 v2.7
+% Version: 2024-08-07 v2.8
% Info: Hyperref destination optimizer
%
% Copyright (C)
% 2006-2008, 2011 Heiko Oberdiek
-% 2016-2020 Oberdiek Package Support Group
+% 2016-2024 Oberdiek Package Support Group
% https://github.com/ho-tex/hypdestopt/issues
%
% This work may be distributed and/or modified under the
@@ -79,7 +79,7 @@
\input docstrip.tex
\Msg{************************************************************************}
\Msg{* Installation}
-\Msg{* Package: hypdestopt 2020-09-02 v2.7 Hyperref destination optimizer (HO)}
+\Msg{* Package: hypdestopt 2024-08-07 v2.8 Hyperref destination optimizer (HO)}
\Msg{************************************************************************}
\keepsilent
@@ -91,11 +91,11 @@
This is a generated file.
Project: hypdestopt
-Version: 2020-09-02 v2.7
+Version: 2024-08-07 v2.8
Copyright (C)
2006-2008, 2011 Heiko Oberdiek
- 2016-2020 Oberdiek Package Support Group
+ 2016-2024 Oberdiek Package Support Group
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either
@@ -152,7 +152,7 @@ and the derived files
%<*driver>
\NeedsTeXFormat{LaTeX2e}
\ProvidesFile{hypdestopt.drv}%
- [2020-09-02 v2.7 Hyperref destination optimizer (HO)]%
+ [2024-08-07 v2.8 Hyperref destination optimizer (HO)]%
\documentclass{ltxdoc}
\usepackage{holtxdoc}[2011/11/22]
\begin{document}
@@ -166,7 +166,7 @@ and the derived files
% \GetFileInfo{hypdestopt.drv}
%
% \title{The \xpackage{hypdestopt} package}
-% \date{2020-09-02 v2.7}
+% \date{2024-08-07 v2.8}
% \author{Heiko Oberdiek\thanks
% {Please report any issues at \url{https://github.com/ho-tex/hypdestopt/issues}}}
%
@@ -177,6 +177,9 @@ and the derived files
% \xoption{pdftex} and \xoption{luatex} driver. It removes unnecessary destinations
% and shortens the destination names or uses numbered destinations
% to get smaller PDF files.
+%
+% The package is not compatible with the \LaTeX{} PDFmanagement loaded with
+% \cs{DocumentMetadata} and will do nothing if it detects it.
% \end{abstract}
%
% \tableofcontents
@@ -289,9 +292,24 @@ and the derived files
%<*package>
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{hypdestopt}%
- [2020-09-02 v2.7 Hyperref destination optimizer (HO)]%
+ [2024-08-07 v2.8 Hyperref destination optimizer (HO)]%
% \end{macrocode}
%
+% \subsection{Check for PDF management}
+% \begin{macrocode}
+\IfDocumentMetadataTF
+ {
+ \PackageWarning{hypdestopt}
+ {
+ \string\DocumentMetadata detected. \MessageBreak
+ The package will do nothing.
+ }{}
+ }{}
+\IfDocumentMetadataTF
+ {
+ \endinput
+ }{}
+% \end{macrocode}
% \subsection{Options}
%
% \subsubsection{Option \xoption{verbose}}
@@ -752,26 +770,6 @@ and the derived files
% \end{description}
%
%
-% \paragraph{Bundle.} All the packages of the bundle `oberdiek'
-% are also available in a TDS compliant ZIP archive. There
-% the packages are already unpacked and the documentation files
-% are generated. The files and directories obey the TDS standard.
-% \begin{description}
-% \item[\CTANinstall{install/macros/latex/contrib/oberdiek.tds.zip}]
-% \end{description}
-% \emph{TDS} refers to the standard ``A Directory Structure
-% for \TeX\ Files'' (\CTANpkg{tds}). Directories
-% with \xfile{texmf} in their name are usually organized this way.
-%
-% \subsection{Bundle installation}
-%
-% \paragraph{Unpacking.} Unpack the \xfile{oberdiek.tds.zip} in the
-% TDS tree (also known as \xfile{texmf} tree) of your choice.
-% Example (linux):
-% \begin{quote}
-% |unzip oberdiek.tds.zip -d ~/texmf|
-% \end{quote}
-%
% \subsection{Package installation}
%
% \paragraph{Unpacking.} The \xfile{.dtx} file is a self-extracting
@@ -956,6 +954,9 @@ and the derived files
% \begin{Version}{2020-09-02 v2.7}
% \item Adapted to the new hook management of LaTeX (github issue 1)
% \end{Version}
+% \begin{Version}{2024-08-07 v2.8}
+% \item Disable the package if \cs{DocumentMetadata} is detected (github issue 2)
+% \end{Version}
% \end{History}
%
% \PrintIndex
diff --git a/macros/latex/contrib/hypdestopt/hypdestopt.pdf b/macros/latex/contrib/hypdestopt/hypdestopt.pdf
index 1835545dc8..1ca7cc4c29 100644
--- a/macros/latex/contrib/hypdestopt/hypdestopt.pdf
+++ b/macros/latex/contrib/hypdestopt/hypdestopt.pdf
Binary files differ
diff --git a/macros/latex/contrib/hyperref/ChangeLog.txt b/macros/latex/contrib/hyperref/ChangeLog.txt
index 28d6ff9240..0ff7510869 100644
--- a/macros/latex/contrib/hyperref/ChangeLog.txt
+++ b/macros/latex/contrib/hyperref/ChangeLog.txt
@@ -1,3 +1,26 @@
+Version: 2024-07-10 v7.01j
+2024-07-10 Ulrike Fischer
+ * hyperref.dtx: define \HyOrg@addtoreset always for cleveref
+ compability with tagging code, see https://github.com/latex3/tagging-project/issues/2
+
+2024-06-02 Ulrike Fischer
+ * hyperref.dtx: enable use of onmousedown and onmouseup, issue #342
+
+Version: 2024-05-23 v7.01i
+2024-05-25 Ulrike Fischer
+ * hyperref.dtx: load stringenc always to allow the use of pdfencoding in a group.
+
+2024-05-22 Ulrike Fischer
+ * hyperref.dtx: add \@makeother{:} to \hyper@normalise, issue #340
+
+2024-04-22 Ulrike Fischer
+ * hyperref.dtx: remove auxhook package.
+
+2024-02-14 Ulrike Fischer
+ * hyperref.dtx: allow commands in counter names
+issue #330
+
+Version: 2024-01-20 v7.01h
2024-01-20 Ulrike Fischer
* hyperref.dtx: alias for \deferred@thm@head to allow patching if czech is used,
issue #324
@@ -5,7 +28,6 @@ issue #324
2024-01-20 Ulrike Fischer
* create xr-hyper.dtx, align it with the current xr.dtx to prepare the merge
-Version: 2024-01-20 v7.01h
2024-01-19 Ulrike Fischer
* xr-hyper.sty: add support for properties, issue latex3/latex2e#1180
diff --git a/macros/latex/contrib/hyperref/README.md b/macros/latex/contrib/hyperref/README.md
index 0718a1e221..335fb1f62b 100644
--- a/macros/latex/contrib/hyperref/README.md
+++ b/macros/latex/contrib/hyperref/README.md
@@ -1,6 +1,6 @@
# README for hyperref bundle
-Version 2024-01-20 v7.01h
+Version 2024-07-10 v7.01j
## INTRODUCTION
diff --git a/macros/latex/contrib/hyperref/doc/backref.pdf b/macros/latex/contrib/hyperref/doc/backref.pdf
index c145263b55..5ec3d8b07f 100644
--- a/macros/latex/contrib/hyperref/doc/backref.pdf
+++ b/macros/latex/contrib/hyperref/doc/backref.pdf
Binary files differ
diff --git a/macros/latex/contrib/hyperref/doc/hyperref-doc.html b/macros/latex/contrib/hyperref/doc/hyperref-doc.html
index b83a28781f..0b918b602d 100644
--- a/macros/latex/contrib/hyperref/doc/hyperref-doc.html
+++ b/macros/latex/contrib/hyperref/doc/hyperref-doc.html
@@ -25,7 +25,7 @@ href="https://github.com/latex3/hyperref/issues" class="url" ><span
class="ec-lmvtt-10x-x-120">https://github.com/latex3/hyperref/issues</span></a><span
class="ec-lmr-12">)</span></div><br />
<div class="date" ><span
-class="ec-lmr-12">2024-01-20 v7.01h</span></div>
+class="ec-lmr-12">2024-07-10 v7.01j</span></div>
</div>
<h3 class="likesectionHead"><a
id="x1-1000"></a>Contents</h3>
@@ -1079,45 +1079,54 @@ class="td11"> <!--l. 604--><p class="noindent" >this
style="vertical-align:baseline;" id="TBL-2-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-8-1"
class="td11"> <span
class="ec-lmvtt-10">backref </span></td><td style="white-space:normal; text-align:left;" id="TBL-2-8-2"
-class="td11"> <!--l. 606--><p class="noindent" > </td></tr><tr
+class="td11"> <!--l. 606--><p class="noindent" >
+ </td></tr><tr
style="vertical-align:baseline;" id="TBL-2-9-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-9-1"
class="td11"> <span
class="ec-lmvtt-10">pagebackref </span></td> <td style="white-space:normal; text-align:left;" id="TBL-2-9-2"
-class="td11"> <!--l. 607--><p class="noindent" ></td>
+class="td11"> <!--l. 607--><p class="noindent" >
+ </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-2-10-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-10-1"
class="td11"> <span
class="ec-lmvtt-10">destlabel </span></td><td style="white-space:normal; text-align:left;" id="TBL-2-10-2"
-class="td11"> <!--l. 608--><p class="noindent" > </td></tr><tr
+class="td11"> <!--l. 608--><p class="noindent" >
+ </td></tr><tr
style="vertical-align:baseline;" id="TBL-2-11-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-11-1"
class="td11"> <span
class="ec-lmvtt-10">pdfusetitle </span></td> <td style="white-space:normal; text-align:left;" id="TBL-2-11-2"
-class="td11"> <!--l. 609--><p class="noindent" ></td>
+class="td11"> <!--l. 609--><p class="noindent" >
+ </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-2-12-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-12-1"
class="td11"> <span
class="ec-lmvtt-10">pdfpagelabels </span></td><td style="white-space:normal; text-align:left;" id="TBL-2-12-2"
-class="td11"> <!--l. 610--><p class="noindent" > </td>
+class="td11"> <!--l. 610--><p class="noindent" >
+ </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-2-13-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-13-1"
class="td11"> <span
class="ec-lmvtt-10">hyperfootnotes </span></td><td style="white-space:normal; text-align:left;" id="TBL-2-13-2"
-class="td11"> <!--l. 611--><p class="noindent" > </td>
+class="td11"> <!--l. 611--><p class="noindent" >
+ </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-2-14-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-14-1"
class="td11"> <span
class="ec-lmvtt-10">hyperfigures </span></td><td style="white-space:normal; text-align:left;" id="TBL-2-14-2"
-class="td11"> <!--l. 612--><p class="noindent" > </td>
+class="td11"> <!--l. 612--><p class="noindent" >
+ </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-2-15-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-15-1"
class="td11"> <span
class="ec-lmvtt-10">hyperindex </span></td><td style="white-space:normal; text-align:left;" id="TBL-2-15-2"
-class="td11"> <!--l. 613--><p class="noindent" > </td>
+class="td11"> <!--l. 613--><p class="noindent" >
+ </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-2-16-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-16-1"
class="td11"> <span
class="ec-lmvtt-10">encap </span></td><td style="white-space:normal; text-align:left;" id="TBL-2-16-2"
-class="td11"> <!--l. 614--><p class="noindent" > </td>
+class="td11"> <!--l. 614--><p class="noindent" >
+ </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-2-17-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-17-1"
class="td11"> <span
@@ -1950,8 +1959,7 @@ class="td01"><span
class="ec-lmvtt-10">hyperfigures </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-8-2-2"
class="td11"> boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-2-3"
class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-8-2-4"
-class="td10">
- <!--l. 941--><p class="noindent" > </td>
+class="td10"> <!--l. 941--><p class="noindent" > </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-8-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-3-1"
class="td01"><span
@@ -3174,8 +3182,6 @@ class="td10">
<!--l. 1198--><p class="noindent" >The old page slides off the screen in the direction
specified by /Di, uncovering the new page in the
direction specified by /Di. </td>
-
-
</tr><tr
style="vertical-align:baseline;" id="TBL-13-12-"><td style="white-space:nowrap; text-align:left;" id="TBL-13-12-1"
class="td01"><span
@@ -3184,6 +3190,8 @@ class="td11"> </td><td style="white-space:normal; text-align:left;
class="td10">
<!--l. 1201--><p class="noindent" >The new page gradually becomes visible through the old
one. </td>
+
+
</tr><tr
style="vertical-align:baseline;" id="TBL-13-13-"><td style="white-space:nowrap; text-align:left;" id="TBL-13-13-1"
class="td01"> </td>
@@ -3709,8 +3717,7 @@ class="td10">
class="td01"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-14-58-2"
class="td11"> <span
class="ec-lmri-10">hyperref </span></td><td style="white-space:normal; text-align:left;" id="TBL-14-58-3"
-class="td10">
- <!--l. 1293--><p class="noindent" > </td>
+class="td10"> <!--l. 1293--><p class="noindent" > </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-14-59-"><td style="white-space:nowrap; text-align:left;" id="TBL-14-59-1"
class="td01"><span
@@ -3850,8 +3857,6 @@ class="td11"> <span
class="ec-lmri-10">true </span></td><td style="white-space:normal; text-align:left;" id="TBL-14-75-3"
class="td10">
<!--l. 1313--><p class="noindent" >set PDF page labels </td>
-
-
</tr><tr
style="vertical-align:baseline;" id="TBL-14-76-"><td style="white-space:nowrap; text-align:left;" id="TBL-14-76-1"
class="td01"><span
@@ -3860,6 +3865,8 @@ class="td11"> <span
class="ec-lmri-10">empty </span></td><td style="white-space:normal; text-align:left;" id="TBL-14-76-3"
class="td10">
<!--l. 1314--><p class="noindent" >set layout of PDF pages </td>
+
+
</tr><tr
style="vertical-align:baseline;" id="TBL-14-77-"><td style="white-space:nowrap; text-align:left;" id="TBL-14-77-1"
class="td01"><span
@@ -4091,8 +4098,6 @@ class="td11"> <span
class="ec-lmri-10">true </span></td><td style="white-space:normal; text-align:left;" id="TBL-14-104-3"
class="td10">
<!--l. 1345--><p class="noindent" >set page size by special driver commands </td>
-
-
</tr><tr
style="vertical-align:baseline;" id="TBL-14-105-"><td style="white-space:nowrap; text-align:left;" id="TBL-14-105-1"
class="td01"><span
@@ -4101,6 +4106,8 @@ class="td11"> </td><td style="white-space:normal; text-align:l
class="td10">
<!--l. 1346--><p class="noindent" >use <span
class="ec-lmss-10">TeX4ht </span>backend </td>
+
+
</tr><tr
style="vertical-align:baseline;" id="TBL-14-106-"><td style="white-space:nowrap; text-align:left;" id="TBL-14-106-1"
class="td01"><span
@@ -4226,8 +4233,6 @@ class="ec-lmvtk-10">nextactionraw</span><span
class="ec-lmbx-10">:</span> </dt><dd
class="description">
<!--l. 1379--><p class="noindent" >The value of key <span class="obeylines-h"><code class="verb">/Next</code></span> of action dictionaries, see PDF specification.</dd></dl>
-
-
<!--l. 1383--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-16" class="tabular"
><colgroup id="TBL-16-1g"><col
@@ -4241,6 +4246,7 @@ class="ec-lmvtt-10">\href</span><span class="obeylines-h"><code class="verb">{</
class="ec-lmri-10">URL</span><span class="obeylines-h"><code class="verb">}{</code></span><span
class="ec-lmvtt-10">\nolinkurl</span><span class="obeylines-h"><code class="verb">{</code></span><span
class="ec-lmri-10">URL</span><span class="obeylines-h"><code class="verb">}}</code></span>. Depending on the driver <span class="obeylines-h"><code class="verb">\href</code></span> also tries to detect the link
+
type. Thus the result can be a url link, file link, &#x2026;. The implementation makes use of the <span
class="ec-lmss-10">url </span>package and
its commands can be used to format and fine tune the url, but the behaviour of <span
@@ -4360,8 +4366,6 @@ and the <span
class="ec-lmri-10">text </span>which is used as the link on the page.
<!--l. 1457--><p class="indent" > Note that in HTML parlance, the <span class="obeylines-h"><code class="verb">\hyperlink</code></span> command inserts a notional # in front of each link,
making it relative to the current testdocument; <span class="obeylines-h"><code class="verb">\href</code></span> expects a full URL.
-
-
<!--l. 1461--><p class="noindent" ><span class="fbox"><!--tex4ht:inline--><div class="tabular"> <table id="TBL-25" class="tabular"
><colgroup id="TBL-25-1g"><col
@@ -4372,6 +4376,8 @@ class="ec-lmvtt-10">\phantomsection </span></td>
</tr></table> </div></span>
<!--l. 1465--><p class="noindent" >This sets an anchor at this location. It works similar to <span class="obeylines-h"><code class="verb">\hypertarget{}{}</code></span> with an automatically chosen
anchor name. Often it is used in conjunction with <span class="obeylines-h"><code class="verb">\addcontentsline</code></span> for sectionlike things (index,
+
+
bibliography, preface). <span class="obeylines-h"><code class="verb">\addcontentsline</code></span> refers to the latest previous location where an anchor is set.
Example:
<blockquote class="quote">
diff --git a/macros/latex/contrib/hyperref/doc/hyperref-doc.pdf b/macros/latex/contrib/hyperref/doc/hyperref-doc.pdf
index fff97a2b36..1637285c01 100644
--- a/macros/latex/contrib/hyperref/doc/hyperref-doc.pdf
+++ b/macros/latex/contrib/hyperref/doc/hyperref-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/hyperref/doc/hyperref-doc.tex b/macros/latex/contrib/hyperref/doc/hyperref-doc.tex
index ea17fc7817..2f4ff93f80 100644
--- a/macros/latex/contrib/hyperref/doc/hyperref-doc.tex
+++ b/macros/latex/contrib/hyperref/doc/hyperref-doc.tex
@@ -166,7 +166,7 @@
}
\makeatother
\title{Hypertext marks in \hologo{LaTeX}: a manual for \xpackage{hyperref}}
-\date{2024-01-20 v7.01h}
+\date{2024-07-10 v7.01j}
\begin{document}
diff --git a/macros/latex/contrib/hyperref/doc/hyperref-doc2.html b/macros/latex/contrib/hyperref/doc/hyperref-doc2.html
index e24d5ff1cd..a3d6f2bce0 100644
--- a/macros/latex/contrib/hyperref/doc/hyperref-doc2.html
+++ b/macros/latex/contrib/hyperref/doc/hyperref-doc2.html
@@ -12,8 +12,8 @@
>
<div class="footnote-text">
<!--l. 212--><p class="indent" > <span class="footnote-mark"><a
- id="fn1x0"><a
- id="x2-4002x2"></a> <sup class="textsuperscript">1</sup></a></span><span
+ id="x2-4002x2"></a><a
+ id="fn1x0"> <sup class="textsuperscript">1</sup></a></span><span
class="ec-lmr-8">Now: </span><a
href="https://ctan.org/tex-archive/support/hypertex/hypertex" class="url" ><span
class="ec-lmvtt-10x-x-80">https://ctan.org/tex-archive/support/hypertex/hypertex</span></a></div>
diff --git a/macros/latex/contrib/hyperref/doc/hyperref-doc3.html b/macros/latex/contrib/hyperref/doc/hyperref-doc3.html
index 516b3b2573..5307489974 100644
--- a/macros/latex/contrib/hyperref/doc/hyperref-doc3.html
+++ b/macros/latex/contrib/hyperref/doc/hyperref-doc3.html
@@ -12,8 +12,8 @@
>
<div class="footnote-text">
<!--l. 230--><p class="indent" > <span class="footnote-mark"><a
- id="fn2x0"><a
- id="x3-4004x2"></a> <sup class="textsuperscript">2</sup></a></span><span
+ id="x3-4004x2"></a><a
+ id="fn2x0"> <sup class="textsuperscript">2</sup></a></span><span
class="ec-lmr-8">This is borrowed from an article by Arthur Smith.</span></div>
</body></html>
diff --git a/macros/latex/contrib/hyperref/doc/hyperref-doc4.html b/macros/latex/contrib/hyperref/doc/hyperref-doc4.html
index cada83835b..1003f3d1c8 100644
--- a/macros/latex/contrib/hyperref/doc/hyperref-doc4.html
+++ b/macros/latex/contrib/hyperref/doc/hyperref-doc4.html
@@ -12,8 +12,8 @@
>
<div class="footnote-text">
<!--l. 300--><p class="indent" > <span class="footnote-mark"><a
- id="fn3x0"><a
- id="x4-4006x2"></a> <sup class="textsuperscript">3</sup></a></span><span
+ id="x4-4006x2"></a><a
+ id="fn3x0"> <sup class="textsuperscript">3</sup></a></span><span
class="ec-lmr-8">Make sure you turn off the partial font downloading supported by </span><span
class="ec-lmss-8">dvips </span><span
class="ec-lmr-8">and </span><span
diff --git a/macros/latex/contrib/hyperref/doc/hyperref-doc5.html b/macros/latex/contrib/hyperref/doc/hyperref-doc5.html
index e8d78ad09f..040bfb56b8 100644
--- a/macros/latex/contrib/hyperref/doc/hyperref-doc5.html
+++ b/macros/latex/contrib/hyperref/doc/hyperref-doc5.html
@@ -12,8 +12,8 @@
>
<div class="footnote-text">
<!--l. 338--><p class="indent" > <span class="footnote-mark"><a
- id="fn4x0"><a
- id="x5-5002x3"></a> <sup class="textsuperscript">4</sup></a></span><span
+ id="x5-5002x3"></a><a
+ id="fn4x0"> <sup class="textsuperscript">4</sup></a></span><span
class="ec-lmr-8">But work has started to reduce the number of redefinition and so the dependencies on the loading</span>
<span
class="ec-lmr-8">order.</span></div>
diff --git a/macros/latex/contrib/hyperref/doc/hyperref-doc6.html b/macros/latex/contrib/hyperref/doc/hyperref-doc6.html
index 8d8b5298b1..3f287f8bb4 100644
--- a/macros/latex/contrib/hyperref/doc/hyperref-doc6.html
+++ b/macros/latex/contrib/hyperref/doc/hyperref-doc6.html
@@ -12,8 +12,8 @@
>
<div class="footnote-text">
<span class="footnote-mark"><a
- id="fn5x0"><a
- id="x6-29002x7"></a> <sup class="textsuperscript">5</sup></a></span><span
+ id="x6-29002x7"></a><a
+ id="fn5x0"> <sup class="textsuperscript">5</sup></a></span><span
class="ec-lmr-8">This section moved from the README file, needs more integration into the manual</span></div>
</body></html>
diff --git a/macros/latex/contrib/hyperref/doc/hyperref-doc7.html b/macros/latex/contrib/hyperref/doc/hyperref-doc7.html
index 767dd0b5b4..30410c45c9 100644
--- a/macros/latex/contrib/hyperref/doc/hyperref-doc7.html
+++ b/macros/latex/contrib/hyperref/doc/hyperref-doc7.html
@@ -12,8 +12,8 @@
>
<div class="footnote-text">
<!--l. 2886--><p class="indent" > <span class="footnote-mark"><a
- id="fn6x0"><a
- id="x7-64002x11"></a> <sup class="textsuperscript">6</sup></a></span><span
+ id="x7-64002x11"></a><a
+ id="fn6x0"> <sup class="textsuperscript">6</sup></a></span><span
class="ec-lmr-8">It will be merged with the </span><span
class="ec-lmss-8">xr </span><span
class="ec-lmr-8">package soon</span></div>
diff --git a/macros/latex/contrib/hyperref/doc/hyperref-doc8.html b/macros/latex/contrib/hyperref/doc/hyperref-doc8.html
index dc87a971db..4a67e9b1b2 100644
--- a/macros/latex/contrib/hyperref/doc/hyperref-doc8.html
+++ b/macros/latex/contrib/hyperref/doc/hyperref-doc8.html
@@ -12,8 +12,8 @@
>
<div class="footnote-text">
<span class="footnote-mark"><a
- id="fn7x0"><a
- id="x8-104002x12"></a> <sup class="textsuperscript">7</sup></a></span><span
+ id="x8-104002x12"></a><a
+ id="fn7x0"> <sup class="textsuperscript">7</sup></a></span><span
class="ec-lmr-8">This section moved from the README file, needs more integration into the manual</span></div>
</body></html>
diff --git a/macros/latex/contrib/hyperref/doc/hyperref-doc9.html b/macros/latex/contrib/hyperref/doc/hyperref-doc9.html
index da2b18955e..c6f5c87fc8 100644
--- a/macros/latex/contrib/hyperref/doc/hyperref-doc9.html
+++ b/macros/latex/contrib/hyperref/doc/hyperref-doc9.html
@@ -12,8 +12,8 @@
>
<div class="footnote-text">
<span class="footnote-mark"><a
- id="fn8x0"><a
- id="x9-108002x13"></a> <sup class="textsuperscript">8</sup></a></span><span
+ id="x9-108002x13"></a><a
+ id="fn8x0"> <sup class="textsuperscript">8</sup></a></span><span
class="ec-lmr-8">This section moved from the README file, needs more integration into the manual</span></div>
</body></html>
diff --git a/macros/latex/contrib/hyperref/doc/hyperref-linktarget.pdf b/macros/latex/contrib/hyperref/doc/hyperref-linktarget.pdf
index 7392570e8a..3e29950cf1 100644
--- a/macros/latex/contrib/hyperref/doc/hyperref-linktarget.pdf
+++ b/macros/latex/contrib/hyperref/doc/hyperref-linktarget.pdf
Binary files differ
diff --git a/macros/latex/contrib/hyperref/doc/hyperref.pdf b/macros/latex/contrib/hyperref/doc/hyperref.pdf
index cb1dbc9af6..bb0f2a46aa 100644
--- a/macros/latex/contrib/hyperref/doc/hyperref.pdf
+++ b/macros/latex/contrib/hyperref/doc/hyperref.pdf
Binary files differ
diff --git a/macros/latex/contrib/hyperref/doc/nameref.pdf b/macros/latex/contrib/hyperref/doc/nameref.pdf
index acea390806..4c4ea6606b 100644
--- a/macros/latex/contrib/hyperref/doc/nameref.pdf
+++ b/macros/latex/contrib/hyperref/doc/nameref.pdf
Binary files differ
diff --git a/macros/latex/contrib/hyperref/doc/xr-hyper.pdf b/macros/latex/contrib/hyperref/doc/xr-hyper.pdf
index 65cfddbafa..a5d0e690fc 100644
--- a/macros/latex/contrib/hyperref/doc/xr-hyper.pdf
+++ b/macros/latex/contrib/hyperref/doc/xr-hyper.pdf
Binary files differ
diff --git a/macros/latex/contrib/hyperref/hluatex.dtx b/macros/latex/contrib/hyperref/hluatex.dtx
index 092b41aad2..20a2f3a4a3 100644
--- a/macros/latex/contrib/hyperref/hluatex.dtx
+++ b/macros/latex/contrib/hyperref/hluatex.dtx
@@ -1,6 +1,6 @@
% \iffalse
% Source File: hluatex.dtx
-% 2024-01-20 v7.01h
+% 2024-07-10 v7.01j
%
% Copyright
% 2016-2019 Oberdiek Package Support Group
@@ -31,13 +31,12 @@
%
% \begin{macrocode}
%<*luatex>
-%% 2024-01-20 v7.01h
+%% 2024-07-10 v7.01j
%% force unicode encoding, see issue #101
%% code mostly copied from hxetex.def
\HyPsd@LoadUnicode
\Hy@unicodetrue
\let\HyPsd@pdfencoding\HyPsd@pdfencoding@unicode
-\HyPsd@LoadStringEnc
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% remains of luatex85 package
\protected\def\pdfcatalog {\pdfextension catalog }
diff --git a/macros/latex/contrib/hyperref/hyperref-linktarget.dtx b/macros/latex/contrib/hyperref/hyperref-linktarget.dtx
index 2348e91e8f..874a492736 100644
--- a/macros/latex/contrib/hyperref/hyperref-linktarget.dtx
+++ b/macros/latex/contrib/hyperref/hyperref-linktarget.dtx
@@ -53,7 +53,7 @@
% }^^A
% }
%
-% \date{Version 2024-01-20 v7.01h}
+% \date{Version 2024-07-10 v7.01j}
%
% \maketitle
% \begin{documentation}
diff --git a/macros/latex/contrib/hyperref/hyperref-patches.dtx b/macros/latex/contrib/hyperref/hyperref-patches.dtx
index 0f23ee5525..ac4bac4f8c 100644
--- a/macros/latex/contrib/hyperref/hyperref-patches.dtx
+++ b/macros/latex/contrib/hyperref/hyperref-patches.dtx
@@ -55,7 +55,7 @@
% }^^A
% }
%
-% \date{Version 2024-01-20 v7.01h}
+% \date{Version 2024-07-10 v7.01j}
%
% \maketitle
% \begin{documentation}
diff --git a/macros/latex/contrib/hyperref/hyperref.dtx b/macros/latex/contrib/hyperref/hyperref.dtx
index 2c6347a623..80cef9b890 100644
--- a/macros/latex/contrib/hyperref/hyperref.dtx
+++ b/macros/latex/contrib/hyperref/hyperref.dtx
@@ -51,7 +51,7 @@
%<puvnenc>\ProvidesFile{puvnenc.def}
%<puarenc>\ProvidesFile{puarenc.def}
%<psdextra>\ProvidesFile{psdextra.def}
-%<!none&!packageEnd> [2024-01-20 v7.01h %
+%<!none&!packageEnd> [2024-07-10 v7.01j %
%<package> Hypertext links for LaTeX]
%<nohyperref> Dummy hyperref (SR)]
%<driver> Hyperref documentation driver file]
@@ -594,6 +594,7 @@
% change 2021-08-14: require expl3
% change 2023-11-26: no longer require pdftexcmds
% change 2023-11-26: no longer require expl3, we assume kernel is new enough.
+% change 2024-05-23: load stringenc always (for pdfx)
% \begin{macrocode}
\RequirePackage{iftex}[2019/10/24]
\RequirePackage{keyval}[1997/11/10]
@@ -601,9 +602,9 @@
\RequirePackage{kvdefinekeys}[2011/04/07]
\RequirePackage{pdfescape}[2007/11/11]
\RequirePackage{hycolor}
-\RequirePackage{auxhook}[2009/12/14]
\RequirePackage{nameref}[2012/07/28]
\RequirePackage{etoolbox}
+\RequirePackage{stringenc}[2009/12/15]%
\def\Hy@Error{\PackageError{hyperref}}
\def\Hy@Warning{\PackageWarning{hyperref}}
\def\Hy@WarningNoLine{\PackageWarningNoLine{hyperref}}
@@ -1864,30 +1865,27 @@
%
% \begin{macrocode}
\ifx\HyPsd@pdfencoding\HyPsd@pdfencoding@auto
- \@ifundefined{StringEncodingConvertTest}{%
- }{%
- \EdefUnescapeString\HyPsd@temp#1%
- \iftutex
- \let\HyPsd@UnescapedString\HyPsd@temp
- \StringEncodingConvertTest\HyPsd@temp\HyPsd@temp
- {utf16be}{ascii-print}{%
- \EdefEscapeString\HyPsd@temp\HyPsd@temp
- \global\let#1\HyPsd@temp
- \HyPsd@EscapeTeX#1%
- \Hy@unicodefalse
- }{%
- \HyPsd@EscapeTeX#1%
- }%
- \else
- \StringEncodingConvertTest\HyPsd@temp\HyPsd@temp
- {utf16be}{pdfdoc}{%
- \EdefEscapeString\HyPsd@temp\HyPsd@temp
- \global\let#1\HyPsd@temp
- \HyPsd@EscapeTeX#1%
- \Hy@unicodefalse
- }{}%
- \fi
- }%
+ \EdefUnescapeString\HyPsd@temp#1%
+ \iftutex
+ \let\HyPsd@UnescapedString\HyPsd@temp
+ \StringEncodingConvertTest\HyPsd@temp\HyPsd@temp
+ {utf16be}{ascii-print}{%
+ \EdefEscapeString\HyPsd@temp\HyPsd@temp
+ \global\let#1\HyPsd@temp
+ \HyPsd@EscapeTeX#1%
+ \Hy@unicodefalse
+ }{%
+ \HyPsd@EscapeTeX#1%
+ }%
+ \else
+ \StringEncodingConvertTest\HyPsd@temp\HyPsd@temp
+ {utf16be}{pdfdoc}{%
+ \EdefEscapeString\HyPsd@temp\HyPsd@temp
+ \global\let#1\HyPsd@temp
+ \HyPsd@EscapeTeX#1%
+ \Hy@unicodefalse
+ }{}%
+ \fi
\fi
\fi
% \end{macrocode}
@@ -4819,9 +4817,6 @@
\hypersetup{unicode}%
\ifHy@unicode
\def\HyPsd@pdfencoding{#1}%
- \ifx\HyPsd@pdfencoding\HyPsd@pdfencoding@auto
- \HyPsd@LoadStringEnc
- \fi
\else
\Hy@Warning{Cannot switch to unicode bookmarks}%
\let\HyPsd@pdfencoding\HyPsd@pdfencoding@pdfdoc
@@ -4844,22 +4839,6 @@
% \begin{macrocode}
\let\HyPsd@pdfencoding\HyPsd@pdfencoding@unicode
\HyPsd@LoadUnicode
-\def\HyPsd@LoadStringEnc{%
- \RequirePackage{stringenc}[2009/12/15]%
- \let\HyPsd@LoadStringEnc\relax
-}
-\Hy@AtBeginDocument{%
- \@ifpackageloaded{stringenc}{%
- \let\HyPsd@LoadStringEnc\relax
- }{%
- \def\HyPsd@LoadStringEnc{%
- \Hy@WarningNoLine{%
- Missing package `stringenc'. Use `pdfencoding=auto'\MessageBreak
- in the preamble or load the package there%
- }%
- }%
- }%
-}
% \end{macrocode}
%
% \begin{macrocode}
@@ -7414,7 +7393,8 @@
% command, you can use |#| and |%| unescaped, to produce themselves.
% even if, say, |#| is entered as |#| it will be converted to |\#|
% so it does not die if written to an aux file etc. |\#| will write
-% as |#| locally while making |\special|s.
+% as |#| locally while making |\special|s. The catcode |:| is set to other
+% to avoid problems with expl3 syntax.
% \begin{macrocode}
\begingroup
\endlinechar=-1 %
@@ -7427,6 +7407,7 @@
\catcode`\&\active
\gdef\hyper@normalise{^^A
\begingroup
+ \@makeother{:}^^A
\catcode`\^^M\active
\def^^M{ }^^A
\catcode`\%\active
@@ -9196,6 +9177,8 @@
\Hy@temp{calculate}
\Hy@temp{onfocus}
\Hy@temp{onblur}
+\Hy@temp{onmousedown}
+\Hy@temp{onmouseup}
\Hy@temp{onenter}
\Hy@temp{onexit}
% \end{macrocode}
@@ -9220,8 +9203,6 @@
}%
\fi
\Hy@temp{ondblclick}
-\Hy@temp{onmousedown}
-\Hy@temp{onmouseup}
\Hy@temp{onmouseover}
\Hy@temp{onmousemove}
\Hy@temp{onmouseout}
@@ -10119,7 +10100,6 @@
\else
\let\HyPsd@pdfencoding\HyPsd@pdfencoding@auto
\fi
-\HyPsd@LoadStringEnc
\define@key{Hyp}{unicode}[true]{%
\Hy@boolkey{unicode}{#1}%
\ifHy@unicode
@@ -12035,14 +12015,17 @@
% The whole theorem business makes up new counters on the fly;
% we are going to intercept this. Sigh. Do it at the level where
% new counters are defined.
+% change 2024-02-14: use a csname to handle counter names with commands,
+% see issue \#330
% \begin{macrocode}
\@ifundefined{hyper@nopatch@counter}
{
\let\H@definecounter\@definecounter
\def\@definecounter#1{%
\H@definecounter{#1}%
- \expandafter\gdef\csname theH#1\endcsname{\arabic{#1}}%
- }
+ \expandafter
+ \gdef\csname theH#1\expandafter\endcsname\expandafter
+ {\expandafter\@arabic\csname c@#1\endcsname}}%
}{}
% \end{macrocode}
% But what if they have used the optional argument to e.g. |\newtheorem|
@@ -12120,7 +12103,10 @@
% the hyperref version of the counter print command
% \cs{theHcounter} is redefined in order to add the
% parent counter.
+% change 2024-07-10: define |\HyOrg@addtoreset| always for cleveref
+% compability with tagging code, see https://github.com/latex3/tagging-project/issues/2
% \begin{macrocode}
+\def\HyOrg@addtoreset#1#2{\expandafter\@cons\csname cl@#2\endcsname {{#1}}}
\@ifundefined{hyper@nopatch@counter}
{
\let\HyOrg@addtoreset\@addtoreset
diff --git a/macros/latex/contrib/hyperref/xr-hyper.dtx b/macros/latex/contrib/hyperref/xr-hyper.dtx
index 1acb21c688..f7b39072f5 100644
--- a/macros/latex/contrib/hyperref/xr-hyper.dtx
+++ b/macros/latex/contrib/hyperref/xr-hyper.dtx
@@ -26,7 +26,7 @@
%
%<package>\NeedsTeXFormat{LaTeX2e}
%<package>\ProvidesPackage{xr-hyper}
-%<package> [2024-01-20 v7.01h eXternal References (DPC)]
+%<package> [2024-07-10 v7.01j eXternal References (DPC)]
%
%<*driver>
\documentclass{l3doc}
@@ -95,7 +95,7 @@
% In the \LaTeX{} release 2023-06-01 the label syntax of \pkg{hyperref}
% and the \LaTeX{} kernel have been synchronized and there is no longer
% a need for two packages. \pkg{xr-hyper} already works with all documents --
-% it is not required to load\pkg{hyperref} -- and its code will move in the
+% it is not required to load \pkg{hyperref} -- and its code will move in the
% next \LaTeX{} release into the \pkg{xr} package. Then \pkg{xr-hyper} can be
% deprecated.
%
@@ -108,7 +108,7 @@
% If one document needs to refer to sections of another, say |aaa.tex|,
% then this package may be loaded in the main file, and the command
% \begin{verbatim}
-% |\externaldocument{aaa}|
+% \externaldocument{aaa}
% \end{verbatim}
% given in the preamble.
%
@@ -140,7 +140,7 @@
% always work, it can be disabled by specifying \texttt{[nocite]} after the
% \meta{prefix}:
% \begin{verbatim}
-% \externaldocument[][nocite]{aaa}
+% \externaldocument[][nocite]{aaa}
% \end{verbatim}
%
% The `document' referred to by the main argument \meta{document} is the file
diff --git a/macros/latex/contrib/isosafety/README.md b/macros/latex/contrib/isosafety/README.md
index 5cedddab81..d67f9940ca 100644
--- a/macros/latex/contrib/isosafety/README.md
+++ b/macros/latex/contrib/isosafety/README.md
@@ -4,6 +4,8 @@ isosafety is a LaTeX package that contains safety colors (ISO 3864) and safety s
Maintainer: BenSt099 (https://github.com/BenSt099/isosafety)
+Version 1.2
+
License: LPPL 1.3c
Note: This is **not** an **official** package from ISO. \ No newline at end of file
diff --git a/macros/latex/contrib/isosafety/doc/isosafety-docs.pdf b/macros/latex/contrib/isosafety/doc/isosafety-docs.pdf
new file mode 100644
index 0000000000..70e1ecce63
--- /dev/null
+++ b/macros/latex/contrib/isosafety/doc/isosafety-docs.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/doc/isosafety-docs.tex b/macros/latex/contrib/isosafety/doc/isosafety-docs.tex
new file mode 100644
index 0000000000..ff0e6918e6
--- /dev/null
+++ b/macros/latex/contrib/isosafety/doc/isosafety-docs.tex
@@ -0,0 +1,138 @@
+\documentclass{article}
+
+\usepackage{xcolor}
+\definecolor{Caution}{HTML}{F9A800}
+\definecolor{Warning}{HTML}{D05D29}
+\definecolor{Prohibition}{HTML}{9B2423}
+\definecolor{Mandatory}{HTML}{005387}
+\definecolor{Rescue}{HTML}{237F52}
+\definecolor{Backgrounds}{HTML}{ECECE7}
+\definecolor{Symbol}{HTML}{2B2B2C}
+\usepackage{array}
+\usepackage{hyperref}
+\usepackage{verbatim}
+\makeatletter
+\newcommand{\verbatimfontfamily}[1]{\def\verbatim@font{#1}}%
+\makeatother
+\usepackage{colortbl}
+\usepackage{geometry}
+\geometry{
+ left=2cm,
+ right=2cm,
+ top=3cm,
+ bottom=3cm
+}
+
+\begin{document}
+
+\begin{center}
+ {\Huge isosafety} \vspace{5mm}
+
+ {\Large Version 1.2}\vspace{5mm}
+
+ {\Large August 20, 2024}\vspace{5mm}
+
+ \href{https://github.com/BenSt099/isosafety}{github.com/BenSt099/isosafety}
+\end{center}\vspace{5mm}
+
+\section{General information}
+
+This is the official documentation of the package \textbf{isosafety}. It provides ISO colors and signs according to the ISO standards
+3864 and 7010. It can be used to create instructions for chemical or physical experiments.\vspace{5mm}
+
+\noindent{\large \textbf{NOTE}}
+
+\noindent This is not an official package from the ISO. All signs are taken from Wikipedia.
+
+\section{Dependencies}
+
+This package has the following dependencies: \texttt{graphicx}, \texttt{xcolor}, \texttt{ifthen}, \texttt{xkeyval}
+
+\section{ISO Colors}
+
+Seven colors are defined which are also used to create the signs: \vspace{5mm}
+
+\renewcommand{\arraystretch}{1.2}
+ \begin{tabular}{ll}
+ \hline
+ Name & Colors \\
+ \hline
+ Caution & \cellcolor{Caution} \\
+ Warning & \cellcolor{Warning} \\
+ Prohibition & \cellcolor{Prohibition} \\
+ Mandatory & \cellcolor{Mandatory} \\
+ Rescue & \cellcolor{Rescue} \\
+ Backgrounds & \cellcolor{Backgrounds} \\
+ Smybol & \cellcolor{Symbol} \\
+ \hline
+\end{tabular}\vspace{5mm}
+
+\noindent How to use: \vspace{3mm}
+
+\verbatimfontfamily{\slshape\ttfamily}
+
+\begin{verbatim}
+{\color{Mandatory} \textbf{Text with Mandatory color.}}
+\end{verbatim}\vspace{2mm}
+
+\noindent{\color{Mandatory} \textbf{Text with Mandatory color.}}
+
+\newpage
+
+\section{ISO Signs}
+
+\noindent This section deals with the construction of signs. To begin with, each sign is placed in a category, has a letter and a number: \vspace{5mm}
+
+\renewcommand{\arraystretch}{1.2}
+ \begin{tabular}{lll}
+ \hline
+ Category & Letter(s) & Numbers \\
+ \hline
+ Safe condition & E & (001 - 070) \\
+ Crescent variant & CV & (003, 004, 009, 010, 011, 012, 013, 027, 028, 029, 064, 067) \\
+ Fire Protection & F & (001 - 019) \\
+ Mandatory & M & (001 - 060) \\
+ Prohibition & P & (001 - 074) \\
+ Warning & W & (001 - 080) \\
+ \hline
+\end{tabular}\vspace{5mm}
+
+\noindent The command to access a sign is: \begin{verbatim}
+ \Isosign{<Letter><Number>}
+\end{verbatim}\vspace{5mm}
+
+\noindent This command constructs a path to a sign in your \TeX Live / Mik\TeX / \ldots $\;$ installation. That means to actually display the sign, resize it, edit it, etc., follow the given example:
+
+\begin{verbatim}
+ %%% Example file
+ \documentclass{article}
+
+ % example path
+ \usepackage[ fullpath = /texlive/2024/texmf-dist/tex/latex/isosafety ]{isosafety}
+
+ \usepackage{graphicx}
+
+ \begin{document}
+
+ \includegraphics{\Isosign{F001}}
+ \includegraphics[scale=2]{\Isosign{P074}}
+
+ \end{document}
+\end{verbatim}\vspace{5mm}
+
+\noindent As you can notice, when we import the package, we provide it with an option. The option is named \textbf{fullpath} and is \textbf{necessary}!
+Since you may have a different version of \TeX Live or maybe even a different \TeX-installation, you have to provide a path that leads to the installation directory
+of isosafety. The path that is given in the example is the typical path on most systems. The year \textit{2024} refers to the version of \TeX Live installed on your system \vspace{5mm}
+
+\noindent\textbf{NOTE}: On Windows, the path should also be given with foreslashes (just like in the example). \\
+
+\noindent\textbf{NOTE}: The last directory in the path \textit{does not} end with a foreslash (just like in the example). \\
+
+\noindent\textbf{NOTE}: For a complete overview of the available signs, take a look at \href{https://en.wikipedia.org/wiki/ISO_7010}{Wikipedia}.
+
+
+
+
+
+
+\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/isosafety/isosafety.dtx b/macros/latex/contrib/isosafety/isosafety.dtx
deleted file mode 100644
index da754c4932..0000000000
--- a/macros/latex/contrib/isosafety/isosafety.dtx
+++ /dev/null
@@ -1,143 +0,0 @@
-% \iffalse meta-comment
-%
-% Copyright (C) 2023 by BenSt099
-% -------------------------------------------------------
-%
-% This file 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.
-%
-% \fi
-%
-% \iffalse
-%<*driver>
-\ProvidesFile{isosafety.dtx}
-%</driver>
-%<package>\NeedsTeXFormat{LaTeX2e}[2005/12/01]
-%<package>\ProvidesPackage{isosafety}
-%<*package>
- [2023/11/09 v1.1 ISO Safety Colors And Safety Signs]
-
-\RequirePackage{graphicx}
-\RequirePackage{xcolor}
-%</package>
-%
-%<*driver>
-\documentclass{ltxdoc}
-\usepackage{isosafety}[2023/11/09]
-\usepackage{hyperref}
-\EnableCrossrefs
-\CodelineIndex
-\RecordChanges
-\begin{document}
- \DocInput{isosafety.dtx}
- \PrintChanges
- \PrintIndex
-\end{document}
-%</driver>
-% \fi
-%
-%
-% \changes{v1.1}{2023/11/09}{Beta version}
-%
-% \GetFileInfo{isosafety.sty}
-%
-% \DoNotIndex{\newcommand,\newenvironment}
-%
-%
-% \title{The \textsf{isosafety} package\thanks{This document
-% corresponds to \textsf{isosafety}~\fileversion, dated \filedate.}}
-% \author{BenSt099 \\ \texttt{github.com/BenSt099}}
-%
-% \maketitle
-%
-% \section{Introduction}
-%
-% This package provides ISO colors and ISO signs according to the ISO standards 3864 and 7010.
-% It can be useful when creating instructions for chemical or physical experiments.
-%
-% \section{Dependencies}
-%
-% The package has the following dependencies: \texttt{graphicx}, \texttt{xcolor}.
-%
-%
-% \section{Usage}
-%
-% \subsection{ISO colors}
-%
-% There are 6 colors that are also used in the signs: \vspace*{5mm}
-%
-% \begin{tabular}{cc}
-% Warning & {\color{Warning} Warning Color} \\
-% Prohibition & {\color{Prohibition} Prohibition Color} \\
-% Mandatory & {\color{Mandatory} Mandatory Color} \\
-% Rescue & {\color{Rescue} Rescue Color} \\
-% Backgrounds & {\color{Backgrounds} Backgrounds Color} \\
-% Symbol & {\color{Symbol} Symbol Color} \\
-% \end{tabular}
-%
-% \subsection{Colors - Example}
-%
-% \begin{verbatim}
-% {\color{Mandatory} Text with mandatory color}
-% \end{verbatim}
-%
-% \subsection{ISO signs}
-%
-% The signs from ISO are placed in a category, have a letter and a number
-%
-% \begin{itemize}
-% \item Safe condition - Letter E (001 - 070)
-% \item Crescent variant - CV (003, 004, 009, 010, 011, 012, 013, 027, 028, 029, 064, 067)
-% \item Fire Protection - Letter F (001 - 019)
-% \item Mandatory - Letter M (001 - 060)
-% \item Prohibition - Letter P (001 - 074)
-% \item Warning - Letter W (001 - 080)
-% \end{itemize}
-%
-% The command to access these signs has the following syntax:
-%
-% \begin{verbatim}
-% \Isosign{{Letter}{Number}}
-% \end{verbatim}
-%
-% \subsection{Signs - Example}
-%
-% Imagine you want to put the sign of a fire extinguisher in your document.
-% Use the following command:
-%
-% \begin{verbatim}
-% \includegraphics{\Isosign{F001}}
-% \end{verbatim}
-%
-% \includegraphics{\Isosign{F001}}
-% \vspace*{5mm}
-%
-% \noindent For an overview, take a look at \href{https://en.wikipedia.org/wiki/ISO_7010}{Wikipedia}
-%
-% \StopEventually{}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\definecolor{Warning}{HTML}{F9A800}
-\definecolor{Prohibition}{HTML}{9B2423}
-\definecolor{Mandatory}{HTML}{005387}
-\definecolor{Rescue}{HTML}{237F52}
-\definecolor{Backgrounds}{HTML}{ECECE7}
-\definecolor{Symbol}{HTML}{2B2B2C}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\newcommand{\Isosign}[1]{isosafety-pdfs/ISO_7010_#1.pdf}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% \Finale
-\endinput \ No newline at end of file
diff --git a/macros/latex/contrib/isosafety/isosafety.pdf b/macros/latex/contrib/isosafety/isosafety.pdf
deleted file mode 100644
index 09d630c77a..0000000000
--- a/macros/latex/contrib/isosafety/isosafety.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV003.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_CV003.pdf
index c3671853cc..c3671853cc 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV003.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_CV003.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV004.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_CV004.pdf
index 426766af28..426766af28 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV004.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_CV004.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV009.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_CV009.pdf
index 4371233c53..4371233c53 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV009.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_CV009.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV010.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_CV010.pdf
index 4f7c7b0c4e..4f7c7b0c4e 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV010.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_CV010.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV011.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_CV011.pdf
index b53137946c..b53137946c 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV011.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_CV011.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV012.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_CV012.pdf
index ee3d79d2fe..ee3d79d2fe 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV012.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_CV012.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV013.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_CV013.pdf
index 54a7ef44db..54a7ef44db 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV013.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_CV013.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV027.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_CV027.pdf
index c2c5f6e332..c2c5f6e332 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV027.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_CV027.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV028.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_CV028.pdf
index 005109c5c8..005109c5c8 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV028.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_CV028.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV029.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_CV029.pdf
index 070e7a2743..070e7a2743 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV029.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_CV029.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV064.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_CV064.pdf
index 9ef30ac6e6..9ef30ac6e6 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV064.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_CV064.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV067.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_CV067.pdf
index d0e6340114..d0e6340114 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_CV067.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_CV067.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E001.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E001.pdf
index abc60c2691..abc60c2691 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E001.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E001.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E002.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E002.pdf
index fbe80ce3f8..fbe80ce3f8 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E002.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E002.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E003.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E003.pdf
index 21dfafc605..21dfafc605 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E003.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E003.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E004.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E004.pdf
index 3663147e2e..3663147e2e 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E004.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E004.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E007.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E007.pdf
index cd21e70dc4..cd21e70dc4 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E007.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E007.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E008.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E008.pdf
index 9d651b8d9e..9d651b8d9e 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E008.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E008.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E009.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E009.pdf
index 93822c975e..93822c975e 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E009.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E009.pdf
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E010.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E010.pdf
index ef0b21d588..ef0b21d588 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E010.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E010.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E011.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E011.pdf
index 127667563d..127667563d 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E011.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E011.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E012.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E012.pdf
index 98cb2bd8b4..98cb2bd8b4 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E012.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E012.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E013.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E013.pdf
index 0d89ed3065..0d89ed3065 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E013.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E013.pdf
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E014.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E014.pdf
index 0a9e382903..0a9e382903 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E014.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E014.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E015.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E015.pdf
index d8e8f0e401..d8e8f0e401 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E015.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E015.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E016.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E016.pdf
index 06065e969e..06065e969e 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E016.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E016.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E017.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E017.pdf
index fc1ca1bdf0..fc1ca1bdf0 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E017.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E017.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E018.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E018.pdf
index 4b05b96f89..4b05b96f89 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E018.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E018.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E019.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E019.pdf
index 45fe98dcd7..45fe98dcd7 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E019.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E019.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E020.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E020.pdf
index 7b85394d63..7b85394d63 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E020.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E020.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E021.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E021.pdf
index 187694547c..187694547c 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E021.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E021.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E022.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E022.pdf
index 2e772aa41a..2e772aa41a 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E022.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E022.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E023.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E023.pdf
index 9a14e4d901..9a14e4d901 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E023.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E023.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E024.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E024.pdf
index 3fefa8edfd..3fefa8edfd 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E024.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E024.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E025.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E025.pdf
index 026668d438..026668d438 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E025.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E025.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E026.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E026.pdf
index 3c9979f590..3c9979f590 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E026.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E026.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E027.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E027.pdf
index fb532c645c..fb532c645c 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E027.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E027.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E028.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E028.pdf
index affca9c7f5..affca9c7f5 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E028.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E028.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E029.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E029.pdf
index 7faeee6464..7faeee6464 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E029.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E029.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E030.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E030.pdf
index cf1a93fe95..cf1a93fe95 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E030.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E030.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E031.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E031.pdf
index 1b8b8f3b7c..1b8b8f3b7c 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E031.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E031.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E032.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E032.pdf
index b70eefa505..b70eefa505 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E032.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E032.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E033.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E033.pdf
index a49b3fe4bf..a49b3fe4bf 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E033.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E033.pdf
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E034.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E034.pdf
index 44341bd96b..44341bd96b 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E034.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E034.pdf
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E035.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E035.pdf
index c79abaa600..c79abaa600 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E035.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E035.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E036.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E036.pdf
index 0bdad717ba..0bdad717ba 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E036.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E036.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E037.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E037.pdf
index 65d6a6f2f2..65d6a6f2f2 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E037.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E037.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E038.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E038.pdf
index a99e0485f3..a99e0485f3 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E038.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E038.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E039.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E039.pdf
index b8247de081..b8247de081 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E039.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E039.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E040.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E040.pdf
index f49aabdf1e..f49aabdf1e 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E040.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E040.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E041.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E041.pdf
index 9cfa31db6c..9cfa31db6c 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E041.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E041.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E042.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E042.pdf
index 917e764de5..917e764de5 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E042.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E042.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E043.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E043.pdf
index 7b126756d4..7b126756d4 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E043.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E043.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E044.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E044.pdf
index 8049c34a95..8049c34a95 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E044.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E044.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E045.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E045.pdf
index 7f57b529fe..7f57b529fe 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E045.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E045.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E046.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E046.pdf
index 3af4a0a9b9..3af4a0a9b9 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E046.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E046.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E047.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E047.pdf
index 823f7704fe..823f7704fe 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E047.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E047.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E048.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E048.pdf
index 2cd85b1273..2cd85b1273 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E048.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E048.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E049.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E049.pdf
index 67ae74aeb9..67ae74aeb9 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E049.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E049.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E050.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E050.pdf
index 1c0120948d..1c0120948d 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E050.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E050.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E051.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E051.pdf
index 9ac16abe7e..9ac16abe7e 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E051.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E051.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E052.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E052.pdf
index 057a6590ad..057a6590ad 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E052.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E052.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E053.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E053.pdf
index b050874db9..b050874db9 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E053.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E053.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E054.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E054.pdf
index f4de9c9b1f..f4de9c9b1f 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E054.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E054.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E055.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E055.pdf
index a05639bfd2..a05639bfd2 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E055.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E055.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E056.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E056.pdf
index 015f18e06d..015f18e06d 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E056.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E056.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E057.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E057.pdf
index c3da1ac56b..c3da1ac56b 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E057.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E057.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E058.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E058.pdf
index fac59cd693..fac59cd693 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E058.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E058.pdf
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E059.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E059.pdf
index 45a8ae2bd2..45a8ae2bd2 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E059.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E059.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E060.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E060.pdf
index 7a0e488172..7a0e488172 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E060.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E060.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E061.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E061.pdf
index 2e3b5992b3..2e3b5992b3 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E061.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E061.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E062.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E062.pdf
index 69fb85f956..69fb85f956 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E062.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E062.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E063.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E063.pdf
index 5eea8873cc..5eea8873cc 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E063.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E063.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E064.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E064.pdf
index ad4fdc7034..ad4fdc7034 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E064.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E064.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E065.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E065.pdf
index 60400eaa5e..60400eaa5e 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E065.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E065.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E067.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E067.pdf
index 2784052b1b..2784052b1b 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E067.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E067.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E068.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E068.pdf
index 0d74c205c8..0d74c205c8 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E068.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E068.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E069.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E069.pdf
index b5e6b2c220..b5e6b2c220 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E069.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E069.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E070.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E070.pdf
index 7554106d64..7554106d64 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_E070.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_E070.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F001.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F001.pdf
index 349878fd5f..349878fd5f 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F001.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F001.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F002.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F002.pdf
index 2ba7a82fbc..2ba7a82fbc 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F002.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F002.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F003.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F003.pdf
index 54b6f5da2c..54b6f5da2c 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F003.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F003.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F004.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F004.pdf
index ed273764db..ed273764db 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F004.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F004.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F005.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F005.pdf
index 1e8a6103e0..1e8a6103e0 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F005.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F005.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F006.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F006.pdf
index c9f1f7bccb..c9f1f7bccb 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F006.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F006.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F007.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F007.pdf
index b0e5f32cbe..b0e5f32cbe 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F007.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F007.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F008.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F008.pdf
index ba9cfa7c4b..ba9cfa7c4b 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F008.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F008.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F009.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F009.pdf
index cc4b7f52b0..cc4b7f52b0 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F009.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F009.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F010.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F010.pdf
index 785c5f9122..785c5f9122 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F010.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F010.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F011.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F011.pdf
index 12ff257deb..12ff257deb 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F011.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F011.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F012.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F012.pdf
index ddd5706419..ddd5706419 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F012.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F012.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F013.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F013.pdf
index 2772821d84..2772821d84 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F013.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F013.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F014.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F014.pdf
index 2aaf0826af..2aaf0826af 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F014.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F014.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F015.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F015.pdf
index cf3ae1c46f..cf3ae1c46f 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F015.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F015.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F016.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F016.pdf
index 06ff3352a3..06ff3352a3 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F016.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F016.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F017.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F017.pdf
index c9a67b8129..c9a67b8129 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F017.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F017.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F018.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F018.pdf
index 57aa49d669..57aa49d669 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F018.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F018.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F019.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F019.pdf
index a331b56a36..a331b56a36 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_F019.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_F019.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M001.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M001.pdf
index bf8ac9665d..bf8ac9665d 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M001.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M001.pdf
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M002.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M002.pdf
index 6fe904c927..6fe904c927 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M002.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M002.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M003.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M003.pdf
index caaddd06b5..caaddd06b5 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M003.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M003.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M004.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M004.pdf
index 28795830dc..28795830dc 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M004.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M004.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M005.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M005.pdf
index 56aaa82124..56aaa82124 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M005.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M005.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M006.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M006.pdf
index 5da66c41a2..5da66c41a2 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M006.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M006.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M007.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M007.pdf
index 5cc9f1a019..5cc9f1a019 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M007.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M007.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M008.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M008.pdf
index e8de5ffce9..e8de5ffce9 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M008.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M008.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M009.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M009.pdf
index c915a508c2..c915a508c2 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M009.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M009.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M010.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M010.pdf
index 90334f320f..90334f320f 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M010.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M010.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M011.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M011.pdf
index 795558d1b5..795558d1b5 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M011.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M011.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M012.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M012.pdf
index 33f20feb1a..33f20feb1a 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M012.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M012.pdf
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M013.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M013.pdf
index a9133b9fbe..a9133b9fbe 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M013.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M013.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M014.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M014.pdf
index 8731ca26ff..8731ca26ff 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M014.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M014.pdf
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M015.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M015.pdf
index 1e0e1991ba..1e0e1991ba 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M015.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M015.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M016.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M016.pdf
index c301799f8c..c301799f8c 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M016.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M016.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M017.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M017.pdf
index 403e4af957..403e4af957 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M017.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M017.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M018.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M018.pdf
index c1684c5612..c1684c5612 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M018.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M018.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M019.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M019.pdf
index 899dc343f7..899dc343f7 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M019.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M019.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M020.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M020.pdf
index a05f2f9c28..a05f2f9c28 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M020.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M020.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M021.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M021.pdf
index e8e9b4444b..e8e9b4444b 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M021.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M021.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M022.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M022.pdf
index e8c5b7be31..e8c5b7be31 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M022.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M022.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M023.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M023.pdf
index 422ada6ac3..422ada6ac3 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M023.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M023.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M024.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M024.pdf
index 48cf114099..48cf114099 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M024.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M024.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M025.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M025.pdf
index 95cacc24f2..95cacc24f2 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M025.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M025.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M026.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M026.pdf
index 96d5a96820..96d5a96820 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M026.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M026.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M027.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M027.pdf
index 57ff5fc421..57ff5fc421 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M027.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M027.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M028.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M028.pdf
index 24fb157422..24fb157422 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M028.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M028.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M029.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M029.pdf
index 8c0888c998..8c0888c998 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M029.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M029.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M030.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M030.pdf
index b23dff04e0..b23dff04e0 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M030.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M030.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M031.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M031.pdf
index 58ecb0cda8..58ecb0cda8 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M031.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M031.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M032.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M032.pdf
index 7fd3c279dc..7fd3c279dc 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M032.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M032.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M033.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M033.pdf
index 5800fc4b44..5800fc4b44 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M033.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M033.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M034.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M034.pdf
index aed2ce3967..aed2ce3967 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M034.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M034.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M035.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M035.pdf
index d419f6aeeb..d419f6aeeb 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M035.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M035.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M036.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M036.pdf
index b3c84ef022..b3c84ef022 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M036.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M036.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M037.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M037.pdf
index a8088da27f..a8088da27f 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M037.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M037.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M038.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M038.pdf
index 32f5f03eab..32f5f03eab 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M038.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M038.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M039.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M039.pdf
index bbe60d2b2c..bbe60d2b2c 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M039.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M039.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M040.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M040.pdf
index c5be6a8394..c5be6a8394 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M040.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M040.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M041.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M041.pdf
index 7f6c9cac5b..7f6c9cac5b 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M041.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M041.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M042.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M042.pdf
index 240f54561f..240f54561f 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M042.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M042.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M043.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M043.pdf
index 3cec333117..3cec333117 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M043.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M043.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M044.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M044.pdf
index c4e9b90c42..c4e9b90c42 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M044.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M044.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M045.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M045.pdf
index e18044d5f1..e18044d5f1 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M045.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M045.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M046.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M046.pdf
index 1c7dc014f0..1c7dc014f0 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M046.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M046.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M047.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M047.pdf
index 96c4433dcb..96c4433dcb 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M047.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M047.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M048.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M048.pdf
index a738ce3b0c..a738ce3b0c 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M048.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M048.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M049.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M049.pdf
index 913fe8388a..913fe8388a 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M049.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M049.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M050.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M050.pdf
index c2e3ba295e..c2e3ba295e 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M050.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M050.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M051.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M051.pdf
index 841dcfc799..841dcfc799 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M051.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M051.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M052.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M052.pdf
index 5d9fb414b9..5d9fb414b9 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M052.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M052.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M053.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M053.pdf
index 3124ec47c6..3124ec47c6 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M053.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M053.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M054.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M054.pdf
index e146dadce7..e146dadce7 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M054.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M054.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M055.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M055.pdf
index b744fbd6bd..b744fbd6bd 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M055.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M055.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M056.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M056.pdf
index 42b1a3d475..42b1a3d475 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M056.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M056.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M057.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M057.pdf
index 8a0fa9e817..8a0fa9e817 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M057.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M057.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M058.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M058.pdf
index d16a09083f..d16a09083f 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M058.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M058.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M059.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M059.pdf
index f97c260b8a..f97c260b8a 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M059.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M059.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M060.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M060.pdf
index 373633588c..373633588c 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_M060.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_M060.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P001.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P001.pdf
index 4204639a36..4204639a36 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P001.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P001.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P002.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P002.pdf
index cbff0bd974..cbff0bd974 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P002.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P002.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P003.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P003.pdf
index 3d70a21875..3d70a21875 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P003.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P003.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P004.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P004.pdf
index 7557ddb6b3..7557ddb6b3 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P004.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P004.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P005.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P005.pdf
index 47f4f06543..47f4f06543 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P005.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P005.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P006.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P006.pdf
index d81b6c5e1a..d81b6c5e1a 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P006.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P006.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P007.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P007.pdf
index 7ef93afe83..7ef93afe83 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P007.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P007.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P008.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P008.pdf
index 16b5b94fbb..16b5b94fbb 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P008.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P008.pdf
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P009.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P009.pdf
index 8aedd6064b..8aedd6064b 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P009.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P009.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P010.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P010.pdf
index 494c68d1df..494c68d1df 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P010.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P010.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P011.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P011.pdf
index 42d5f63dde..42d5f63dde 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P011.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P011.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P012.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P012.pdf
index b196406cb8..b196406cb8 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P012.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P012.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P013.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P013.pdf
index 6f94e89b1f..6f94e89b1f 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P013.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P013.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P014.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P014.pdf
index 40f30b66a3..40f30b66a3 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P014.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P014.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P015.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P015.pdf
index 7de907b497..7de907b497 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P015.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P015.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P016.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P016.pdf
index 26f222085e..26f222085e 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P016.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P016.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P017.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P017.pdf
index 07dc17d10e..07dc17d10e 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P017.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P017.pdf
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P018.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P018.pdf
index 1649aaaed1..1649aaaed1 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P018.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P018.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P019.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P019.pdf
index 567db7aa6f..567db7aa6f 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P019.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P019.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P020.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P020.pdf
index 1a93bf6a57..1a93bf6a57 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P020.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P020.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P021.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P021.pdf
index 52a3486198..52a3486198 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P021.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P021.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P022.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P022.pdf
index b3221c84d7..b3221c84d7 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P022.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P022.pdf
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P023.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P023.pdf
index bc61ff3957..bc61ff3957 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P023.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P023.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P024.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P024.pdf
index cfdcc65602..cfdcc65602 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P024.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P024.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P025.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P025.pdf
index 0f63052829..0f63052829 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P025.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P025.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P026.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P026.pdf
index 14622fd474..14622fd474 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P026.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P026.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P027.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P027.pdf
index 287fa92485..287fa92485 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P027.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P027.pdf
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P028.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P028.pdf
index fbc0e109ac..fbc0e109ac 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P028.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P028.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P029.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P029.pdf
index cb3e49f544..cb3e49f544 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P029.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P029.pdf
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P030.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P030.pdf
index 021c0b9795..021c0b9795 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P030.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P030.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P031.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P031.pdf
index 421ee50f92..421ee50f92 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P031.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P031.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P032.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P032.pdf
index 584f20d8e7..584f20d8e7 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P032.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P032.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P033.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P033.pdf
index f7d6e8f944..f7d6e8f944 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P033.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P033.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P034.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P034.pdf
index d8ee13c5fd..d8ee13c5fd 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P034.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P034.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P035.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P035.pdf
index d42d57242c..d42d57242c 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P035.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P035.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P036.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P036.pdf
index 555a6afe24..555a6afe24 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P036.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P036.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P037.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P037.pdf
index 6a6563ca97..6a6563ca97 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P037.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P037.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P038.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P038.pdf
index ddaf05f9ed..ddaf05f9ed 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P038.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P038.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P039.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P039.pdf
index 0a41c0d8b6..0a41c0d8b6 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P039.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P039.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P040.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P040.pdf
index bfeec12e1e..bfeec12e1e 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P040.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P040.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P041.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P041.pdf
index 6da07255e5..6da07255e5 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P041.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P041.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P042.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P042.pdf
index 8a77221585..8a77221585 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P042.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P042.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P043.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P043.pdf
index a4e069ba9a..a4e069ba9a 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P043.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P043.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P044.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P044.pdf
index 81cf8f7189..81cf8f7189 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P044.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P044.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P045.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P045.pdf
index 16726e7cf2..16726e7cf2 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P045.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P045.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P046.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P046.pdf
index 320c0f6c5d..320c0f6c5d 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P046.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P046.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P047.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P047.pdf
index de38a973bd..de38a973bd 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P047.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P047.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P048.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P048.pdf
index 30b9137f54..30b9137f54 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P048.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P048.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P049.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P049.pdf
index e7ebbd1202..e7ebbd1202 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P049.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P049.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P050.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P050.pdf
index c0cb30329d..c0cb30329d 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P050.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P050.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P051.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P051.pdf
index c4f9032953..c4f9032953 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P051.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P051.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P052.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P052.pdf
index 1aa30711be..1aa30711be 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P052.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P052.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P053.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P053.pdf
index 5e75ac56a2..5e75ac56a2 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P053.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P053.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P054.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P054.pdf
index 39fbd4b6af..39fbd4b6af 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P054.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P054.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P055.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P055.pdf
index 561d15386b..561d15386b 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P055.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P055.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P056.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P056.pdf
index 2c984d0b7e..2c984d0b7e 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P056.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P056.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P057.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P057.pdf
index 886365621e..886365621e 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P057.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P057.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P058.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P058.pdf
index e82cdecead..e82cdecead 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P058.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P058.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P059.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P059.pdf
index 46a6dc0b1c..46a6dc0b1c 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P059.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P059.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P060.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P060.pdf
index b152234d17..b152234d17 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P060.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P060.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P061.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P061.pdf
index 04327846dd..04327846dd 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P061.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P061.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P062.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P062.pdf
index a3a86b1252..a3a86b1252 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P062.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P062.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P063.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P063.pdf
index bc4e823a18..bc4e823a18 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P063.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P063.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P064.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P064.pdf
index feaf4db700..feaf4db700 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P064.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P064.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P065.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P065.pdf
index f0a3cf25b6..f0a3cf25b6 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P065.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P065.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P066.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P066.pdf
index ca0ad4180a..ca0ad4180a 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P066.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P066.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P067.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P067.pdf
index f8de06dbd8..f8de06dbd8 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P067.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P067.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P068.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P068.pdf
index 9de356ab4d..9de356ab4d 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P068.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P068.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P069.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P069.pdf
index 93c6e07dd2..93c6e07dd2 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P069.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P069.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P070.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P070.pdf
index 34b973fa36..34b973fa36 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P070.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P070.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P071.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P071.pdf
index 882eec6982..882eec6982 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P071.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P071.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P072.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P072.pdf
index 85c8329f27..85c8329f27 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P072.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P072.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P073.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P073.pdf
index a70fc01368..a70fc01368 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P073.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P073.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P074.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P074.pdf
index b0dcdbdd31..b0dcdbdd31 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P074.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P074.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P075.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P075.pdf
index dbd0eece86..dbd0eece86 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_P075.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_P075.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W001.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W001.pdf
index 93e4ff1096..93e4ff1096 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W001.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W001.pdf
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W002.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W002.pdf
index cd4e5efe71..cd4e5efe71 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W002.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W002.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W003.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W003.pdf
index e9718ec0b9..e9718ec0b9 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W003.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W003.pdf
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W004.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W004.pdf
index 52821d3ee2..52821d3ee2 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W004.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W004.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W005.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W005.pdf
index e0af280633..e0af280633 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W005.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W005.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W006.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W006.pdf
index 5a8cd08340..5a8cd08340 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W006.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W006.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W007.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W007.pdf
index 5aee6b6eeb..5aee6b6eeb 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W007.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W007.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W008.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W008.pdf
index 2279b4802e..2279b4802e 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W008.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W008.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W009.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W009.pdf
index 9dda0f4ee9..9dda0f4ee9 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W009.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W009.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W010.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W010.pdf
index 8a70dd40fc..8a70dd40fc 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W010.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W010.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W011.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W011.pdf
index 5feeebec8d..5feeebec8d 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W011.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W011.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W012.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W012.pdf
index fed0023c08..fed0023c08 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W012.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W012.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W013.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W013.pdf
index 22e6c03d15..22e6c03d15 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W013.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W013.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W014.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W014.pdf
index 0ffc581a81..0ffc581a81 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W014.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W014.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W015.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W015.pdf
index 0a8f3c6a98..0a8f3c6a98 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W015.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W015.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W016.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W016.pdf
index 1635032be1..1635032be1 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W016.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W016.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W017.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W017.pdf
index e7f3eaa7e3..e7f3eaa7e3 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W017.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W017.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W018.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W018.pdf
index f56cfa12f4..f56cfa12f4 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W018.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W018.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W019.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W019.pdf
index 37445e7a28..37445e7a28 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W019.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W019.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W020.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W020.pdf
index 1e06b95eab..1e06b95eab 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W020.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W020.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W021.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W021.pdf
index d60016dc80..d60016dc80 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W021.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W021.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W022.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W022.pdf
index bf13211210..bf13211210 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W022.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W022.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W023.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W023.pdf
index d7b080a243..d7b080a243 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W023.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W023.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W024.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W024.pdf
index c1148bf3e6..c1148bf3e6 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W024.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W024.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W025.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W025.pdf
index 1f94d88dde..1f94d88dde 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W025.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W025.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W026.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W026.pdf
index b51f591e19..b51f591e19 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W026.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W026.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W027.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W027.pdf
index 299c473c61..299c473c61 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W027.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W027.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W028.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W028.pdf
index 06a2a1730e..06a2a1730e 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W028.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W028.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W029.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W029.pdf
index b26c8d242e..b26c8d242e 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W029.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W029.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W030.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W030.pdf
index 6991d20397..6991d20397 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W030.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W030.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W031.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W031.pdf
index 3b04fca386..3b04fca386 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W031.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W031.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W032.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W032.pdf
index 874d5d1856..874d5d1856 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W032.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W032.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W033.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W033.pdf
index 954c565b07..954c565b07 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W033.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W033.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W034.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W034.pdf
index e05340bf57..e05340bf57 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W034.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W034.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W035.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W035.pdf
index b519520de2..b519520de2 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W035.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W035.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W036.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W036.pdf
index 8b3c75efa4..8b3c75efa4 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W036.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W036.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W037.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W037.pdf
index 82fdb9e25a..82fdb9e25a 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W037.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W037.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W038.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W038.pdf
index 20d7fecebf..20d7fecebf 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W038.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W038.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W039.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W039.pdf
index 1c99515ed9..1c99515ed9 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W039.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W039.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W040.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W040.pdf
index 3941b25097..3941b25097 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W040.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W040.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W041.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W041.pdf
index c6416f08ea..c6416f08ea 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W041.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W041.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W042.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W042.pdf
index 9321af66db..9321af66db 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W042.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W042.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W043.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W043.pdf
index 55ead51620..55ead51620 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W043.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W043.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W044.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W044.pdf
index e262f16d1d..e262f16d1d 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W044.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W044.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W045.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W045.pdf
index e6d68cba29..e6d68cba29 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W045.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W045.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W046.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W046.pdf
index d1d0f0b781..d1d0f0b781 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W046.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W046.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W047.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W047.pdf
index 10b71d56d7..10b71d56d7 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W047.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W047.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W048.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W048.pdf
index ed0b84886f..ed0b84886f 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W048.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W048.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W049.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W049.pdf
index 814955db23..814955db23 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W049.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W049.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W050.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W050.pdf
index c2f4bcb9b8..c2f4bcb9b8 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W050.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W050.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W051.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W051.pdf
index b0e7c09dc4..b0e7c09dc4 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W051.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W051.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W052.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W052.pdf
index 9ad59817a5..9ad59817a5 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W052.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W052.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W053.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W053.pdf
index 8013e0e966..8013e0e966 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W053.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W053.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W054.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W054.pdf
index 2b3f5323d9..2b3f5323d9 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W054.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W054.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W055.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W055.pdf
index c61a359de6..c61a359de6 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W055.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W055.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W056.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W056.pdf
index 6f3b502881..6f3b502881 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W056.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W056.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W057.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W057.pdf
index a4e2e379cc..a4e2e379cc 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W057.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W057.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W058.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W058.pdf
index a6cc2f357e..a6cc2f357e 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W058.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W058.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W059.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W059.pdf
index 03037b8f9d..03037b8f9d 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W059.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W059.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W060.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W060.pdf
index 4947b7f529..4947b7f529 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W060.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W060.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W061.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W061.pdf
index fa0dbad4ee..fa0dbad4ee 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W061.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W061.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W062.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W062.pdf
index 38168b8b90..38168b8b90 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W062.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W062.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W063.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W063.pdf
index 0bc81af20e..0bc81af20e 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W063.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W063.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W064.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W064.pdf
index 75f8625838..75f8625838 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W064.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W064.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W065.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W065.pdf
index f13b05c99f..f13b05c99f 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W065.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W065.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W066.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W066.pdf
index 92afceab2f..92afceab2f 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W066.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W066.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W067.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W067.pdf
index d891a4bdc7..d891a4bdc7 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W067.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W067.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W068.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W068.pdf
index 0da984a06f..0da984a06f 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W068.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W068.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W069.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W069.pdf
index 494ab14531..494ab14531 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W069.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W069.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W070.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W070.pdf
index 4cd988cba7..4cd988cba7 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W070.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W070.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W071.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W071.pdf
index 0e55001c94..0e55001c94 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W071.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W071.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W072.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W072.pdf
index 7b8a9c0839..7b8a9c0839 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W072.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W072.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W073.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W073.pdf
index 0f6f5fcd9b..0f6f5fcd9b 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W073.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W073.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W074.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W074.pdf
index b6ec9d92f3..b6ec9d92f3 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W074.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W074.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W075.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W075.pdf
index 6e8b28d276..6e8b28d276 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W075.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W075.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W076.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W076.pdf
index 32709b9144..32709b9144 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W076.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W076.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W077.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W077.pdf
index db62ce47be..db62ce47be 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W077.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W077.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W078.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W078.pdf
index 867eb1b6c1..867eb1b6c1 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W078.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W078.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W079.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W079.pdf
index 78e325ce3d..78e325ce3d 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W079.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W079.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W080.pdf b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W080.pdf
index b0b0b76b90..b0b0b76b90 100644
--- a/macros/latex/contrib/isosafety/isosafety-pdfs/ISO_7010_W080.pdf
+++ b/macros/latex/contrib/isosafety/tex/isosafety-pdfs/ISO_7010_W080.pdf
Binary files differ
diff --git a/macros/latex/contrib/isosafety/tex/isosafety.sty b/macros/latex/contrib/isosafety/tex/isosafety.sty
new file mode 100644
index 0000000000..852aed35ea
--- /dev/null
+++ b/macros/latex/contrib/isosafety/tex/isosafety.sty
@@ -0,0 +1,49 @@
+%% Copyright (C) 2024 by BenSt099
+%%
+%% This file 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.
+%%
+\NeedsTeXFormat{LaTeX2e}[2005/12/01]
+\ProvidesPackage{isosafety}
+[2024/08/20 v1.2 ISO Safety Colors And Safety Signs]
+
+\RequirePackage{graphicx}
+\RequirePackage{xcolor}
+\RequirePackage{ifthen}
+\RequirePackage{xkeyval}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\definecolor{Caution}{HTML}{F9A800}
+\definecolor{Warning}{HTML}{D05D29}
+\definecolor{Prohibition}{HTML}{9B2423}
+\definecolor{Mandatory}{HTML}{005387}
+\definecolor{Rescue}{HTML}{237F52}
+\definecolor{Backgrounds}{HTML}{ECECE7}
+\definecolor{Symbol}{HTML}{2B2B2C}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newcommand{\isosafetypath}{false}
+\DeclareOptionX{fullpath}{\renewcommand{\isosafetypath}{#1}}
+\ProcessOptionsX\relax
+
+\ifthenelse{\equal{\isosafetypath}{false}}
+{\PackageError{isosafety}{Missing key-value option 'fullpath' in usepackage-statement, please see documentation.}{Please provide the full path to this package, usually /texlive/2024/texmf-dist/tex/latex/isosafety}}
+{}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newcommand{\Isosign}[1]{\isosafetypath /isosafety-pdfs/ISO_7010_#1.pdf}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
+%%
+%% End of file `isosafety.sty'. \ No newline at end of file
diff --git a/macros/latex/contrib/iwonamath/Makefile b/macros/latex/contrib/iwonamath/Makefile
index 5b8322bf33..fcac414a15 100644
--- a/macros/latex/contrib/iwonamath/Makefile
+++ b/macros/latex/contrib/iwonamath/Makefile
@@ -48,6 +48,7 @@ all: ${PDF} $(PACKAGE).sty $(FD)
pdflatex $<
- bibtex $*
pdflatex $<
+ pdflatex $<
while ( grep -q '^LaTeX Warning: Label(s) may have changed' $*.log) \
do pdflatex $<; done
@@ -64,7 +65,8 @@ clean:
*.ilg *.ind *.out *.lof \
*.lot *.bbl *.blg *.gls \
*.dvi *.ps *.thm *.tgz *.zip *.rpi \
- *.hd sample-blx.bib
+ *.hd sample-blx.bib \
+ omsiwonamathcmsy.fd *.sty
distclean: clean
@@ -75,7 +77,7 @@ distclean: clean
#
archive: all clean
COPYFILE_DISABLE=1 \
- tar -C .. -czvf ../$(PACKAGE).tgz --exclude '*~' \
+ tar -C .. -czvf ../$(PACKAGE).tgz --exclude '*~' --exclude LICENSE \
--exclude '*.tgz' --exclude '*.zip' --exclude .git $(PACKAGE)
mv ../$(PACKAGE).tgz .
diff --git a/macros/latex/contrib/iwonamath/README b/macros/latex/contrib/iwonamath/README
index 72fe9e3508..8bf59e86c3 100644
--- a/macros/latex/contrib/iwonamath/README
+++ b/macros/latex/contrib/iwonamath/README
@@ -2,4 +2,9 @@ This package provides an interface to Iwona math fonts by Janusz
Marian Nowacki. It allows to use Iwona as math complement for sans
serif fonts without native math. The package allows font scaling, the
choice of light and condensed versions and the creation of multiple
-math versions. \ No newline at end of file
+math versions.
+
+Author: Boris Veytsman, borisv@lk.net, boris@varphi.com
+License: LPPL 1.3c, https://www.latex-project.org/lppl/lppl-1-3c/
+
+Version 1.1: Improved delimitershack as suggested by Enrico Gregorio. \ No newline at end of file
diff --git a/macros/latex/contrib/iwonamath/iwonamath.dtx b/macros/latex/contrib/iwonamath/iwonamath.dtx
index 020c8d6ad0..38aebd666a 100644
--- a/macros/latex/contrib/iwonamath/iwonamath.dtx
+++ b/macros/latex/contrib/iwonamath/iwonamath.dtx
@@ -141,7 +141,7 @@
%<oms>{oms_FAMILY_.fd}
%<omx>{omx_FAMILY_.fd}
%<cmsy>{omsiwonamathcmsy.fd}
-%<package|fd>{2023-08-31} {1.0}
+%<package|fd>{2024-07-19} {1.1}
%<package|fd>{Scaled Iwona math fonts}
%<*package>
% \end{macrocode}
@@ -233,7 +233,8 @@
%
% We add delimiters from |cmsy|, as discussed in
% \citep[\S~12.5.5]{TLC3}). We predefine the symbols for the standard
-% versions just in case.
+% versions just in case. The last line is suggested by Enrico
+% Gregorio.
% \begin{macrocode}
\bool_if:NTF \l_@@_delimitershack_bool
{
@@ -241,6 +242,7 @@
\SetSymbolFont{symbols2} {bold}{OMS}{cmsy}{b}{n}
\DeclareMathDelimiter{\lVert}{\mathopen} {symbols2}{"6B}{largesymbols}{"0D}
\DeclareMathDelimiter{\rVert}{\mathclose}{symbols2}{"6B}{largesymbols}{"0D}
+ \DeclareMathDelimiter{\|}{\mathclose}{symbols2}{"6B}{largesymbols}{"0D}
}
{}
% \end{macrocode}
diff --git a/macros/latex/contrib/iwonamath/iwonamath.pdf b/macros/latex/contrib/iwonamath/iwonamath.pdf
index fc0b5e6e2c..e80a3e33d0 100644
--- a/macros/latex/contrib/iwonamath/iwonamath.pdf
+++ b/macros/latex/contrib/iwonamath/iwonamath.pdf
Binary files differ
diff --git a/macros/latex/contrib/iwonamath/omliwonamath.fd b/macros/latex/contrib/iwonamath/omliwonamath.fd
index eca19657e2..869b63021f 100644
--- a/macros/latex/contrib/iwonamath/omliwonamath.fd
+++ b/macros/latex/contrib/iwonamath/omliwonamath.fd
@@ -22,7 +22,7 @@
%% in the same archive or directory.)
\ProvidesExplFile
{omliwonamath.fd}
-{2023-08-31} {1.0}
+{2024-07-19} {1.1}
{Scaled Iwona math fonts}
\tl_if_exist:NTF \l__iwonamath_scale_tl
{}
diff --git a/macros/latex/contrib/iwonamath/omliwonamathc.fd b/macros/latex/contrib/iwonamath/omliwonamathc.fd
index 452341075f..567abb4d8c 100644
--- a/macros/latex/contrib/iwonamath/omliwonamathc.fd
+++ b/macros/latex/contrib/iwonamath/omliwonamathc.fd
@@ -22,7 +22,7 @@
%% in the same archive or directory.)
\ProvidesExplFile
{omliwonamathc.fd}
-{2023-08-31} {1.0}
+{2024-07-19} {1.1}
{Scaled Iwona math fonts}
\tl_if_exist:NTF \l__iwonamath_scale_tl
{}
diff --git a/macros/latex/contrib/iwonamath/omliwonamathl.fd b/macros/latex/contrib/iwonamath/omliwonamathl.fd
index a0dba2a829..c52bb24dcf 100644
--- a/macros/latex/contrib/iwonamath/omliwonamathl.fd
+++ b/macros/latex/contrib/iwonamath/omliwonamathl.fd
@@ -22,7 +22,7 @@
%% in the same archive or directory.)
\ProvidesExplFile
{omliwonamathl.fd}
-{2023-08-31} {1.0}
+{2024-07-19} {1.1}
{Scaled Iwona math fonts}
\tl_if_exist:NTF \l__iwonamath_scale_tl
{}
diff --git a/macros/latex/contrib/iwonamath/omliwonamathlc.fd b/macros/latex/contrib/iwonamath/omliwonamathlc.fd
index 90d147d1ee..ebfaea2b69 100644
--- a/macros/latex/contrib/iwonamath/omliwonamathlc.fd
+++ b/macros/latex/contrib/iwonamath/omliwonamathlc.fd
@@ -22,7 +22,7 @@
%% in the same archive or directory.)
\ProvidesExplFile
{omliwonamathlc.fd}
-{2023-08-31} {1.0}
+{2024-07-19} {1.1}
{Scaled Iwona math fonts}
\tl_if_exist:NTF \l__iwonamath_scale_tl
{}
diff --git a/macros/latex/contrib/iwonamath/omsiwonamath.fd b/macros/latex/contrib/iwonamath/omsiwonamath.fd
index 958053cd49..7a0c889c7d 100644
--- a/macros/latex/contrib/iwonamath/omsiwonamath.fd
+++ b/macros/latex/contrib/iwonamath/omsiwonamath.fd
@@ -22,7 +22,7 @@
%% in the same archive or directory.)
\ProvidesExplFile
{omsiwonamath.fd}
-{2023-08-31} {1.0}
+{2024-07-19} {1.1}
{Scaled Iwona math fonts}
\tl_if_exist:NTF \l__iwonamath_scale_tl
{}
diff --git a/macros/latex/contrib/iwonamath/omsiwonamathc.fd b/macros/latex/contrib/iwonamath/omsiwonamathc.fd
index 02b892ffc5..22c1755011 100644
--- a/macros/latex/contrib/iwonamath/omsiwonamathc.fd
+++ b/macros/latex/contrib/iwonamath/omsiwonamathc.fd
@@ -22,7 +22,7 @@
%% in the same archive or directory.)
\ProvidesExplFile
{omsiwonamathc.fd}
-{2023-08-31} {1.0}
+{2024-07-19} {1.1}
{Scaled Iwona math fonts}
\tl_if_exist:NTF \l__iwonamath_scale_tl
{}
diff --git a/macros/latex/contrib/iwonamath/omsiwonamathl.fd b/macros/latex/contrib/iwonamath/omsiwonamathl.fd
index d291ba7eb0..3e0815ef80 100644
--- a/macros/latex/contrib/iwonamath/omsiwonamathl.fd
+++ b/macros/latex/contrib/iwonamath/omsiwonamathl.fd
@@ -22,7 +22,7 @@
%% in the same archive or directory.)
\ProvidesExplFile
{omsiwonamathl.fd}
-{2023-08-31} {1.0}
+{2024-07-19} {1.1}
{Scaled Iwona math fonts}
\tl_if_exist:NTF \l__iwonamath_scale_tl
{}
diff --git a/macros/latex/contrib/iwonamath/omsiwonamathlc.fd b/macros/latex/contrib/iwonamath/omsiwonamathlc.fd
index 55a040e93e..8cdb0f6503 100644
--- a/macros/latex/contrib/iwonamath/omsiwonamathlc.fd
+++ b/macros/latex/contrib/iwonamath/omsiwonamathlc.fd
@@ -22,7 +22,7 @@
%% in the same archive or directory.)
\ProvidesExplFile
{omsiwonamathlc.fd}
-{2023-08-31} {1.0}
+{2024-07-19} {1.1}
{Scaled Iwona math fonts}
\tl_if_exist:NTF \l__iwonamath_scale_tl
{}
diff --git a/macros/latex/contrib/iwonamath/omxiwonamath.fd b/macros/latex/contrib/iwonamath/omxiwonamath.fd
index 662121a6be..8b33fd85b9 100644
--- a/macros/latex/contrib/iwonamath/omxiwonamath.fd
+++ b/macros/latex/contrib/iwonamath/omxiwonamath.fd
@@ -22,7 +22,7 @@
%% in the same archive or directory.)
\ProvidesExplFile
{omxiwonamath.fd}
-{2023-08-31} {1.0}
+{2024-07-19} {1.1}
{Scaled Iwona math fonts}
\tl_if_exist:NTF \l__iwonamath_scale_tl
{}
diff --git a/macros/latex/contrib/iwonamath/omxiwonamathc.fd b/macros/latex/contrib/iwonamath/omxiwonamathc.fd
index fce676f1e8..9738a6961d 100644
--- a/macros/latex/contrib/iwonamath/omxiwonamathc.fd
+++ b/macros/latex/contrib/iwonamath/omxiwonamathc.fd
@@ -22,7 +22,7 @@
%% in the same archive or directory.)
\ProvidesExplFile
{omxiwonamathc.fd}
-{2023-08-31} {1.0}
+{2024-07-19} {1.1}
{Scaled Iwona math fonts}
\tl_if_exist:NTF \l__iwonamath_scale_tl
{}
diff --git a/macros/latex/contrib/iwonamath/omxiwonamathl.fd b/macros/latex/contrib/iwonamath/omxiwonamathl.fd
index 895f359e35..759ecad381 100644
--- a/macros/latex/contrib/iwonamath/omxiwonamathl.fd
+++ b/macros/latex/contrib/iwonamath/omxiwonamathl.fd
@@ -22,7 +22,7 @@
%% in the same archive or directory.)
\ProvidesExplFile
{omxiwonamathl.fd}
-{2023-08-31} {1.0}
+{2024-07-19} {1.1}
{Scaled Iwona math fonts}
\tl_if_exist:NTF \l__iwonamath_scale_tl
{}
diff --git a/macros/latex/contrib/iwonamath/omxiwonamathlc.fd b/macros/latex/contrib/iwonamath/omxiwonamathlc.fd
index 85f60415e3..fbe5cdc48c 100644
--- a/macros/latex/contrib/iwonamath/omxiwonamathlc.fd
+++ b/macros/latex/contrib/iwonamath/omxiwonamathlc.fd
@@ -22,7 +22,7 @@
%% in the same archive or directory.)
\ProvidesExplFile
{omxiwonamathlc.fd}
-{2023-08-31} {1.0}
+{2024-07-19} {1.1}
{Scaled Iwona math fonts}
\tl_if_exist:NTF \l__iwonamath_scale_tl
{}
diff --git a/macros/latex/contrib/iwonamath/ot1iwonamath.fd b/macros/latex/contrib/iwonamath/ot1iwonamath.fd
index 20be53c3af..789656bfa7 100644
--- a/macros/latex/contrib/iwonamath/ot1iwonamath.fd
+++ b/macros/latex/contrib/iwonamath/ot1iwonamath.fd
@@ -22,7 +22,7 @@
%% in the same archive or directory.)
\ProvidesExplFile
{ot1iwonamath.fd}
-{2023-08-31} {1.0}
+{2024-07-19} {1.1}
{Scaled Iwona math fonts}
\tl_if_exist:NTF \l__iwonamath_scale_tl
{}
diff --git a/macros/latex/contrib/iwonamath/ot1iwonamathc.fd b/macros/latex/contrib/iwonamath/ot1iwonamathc.fd
index a0b92a2b37..182d34be2f 100644
--- a/macros/latex/contrib/iwonamath/ot1iwonamathc.fd
+++ b/macros/latex/contrib/iwonamath/ot1iwonamathc.fd
@@ -22,7 +22,7 @@
%% in the same archive or directory.)
\ProvidesExplFile
{ot1iwonamathc.fd}
-{2023-08-31} {1.0}
+{2024-07-19} {1.1}
{Scaled Iwona math fonts}
\tl_if_exist:NTF \l__iwonamath_scale_tl
{}
diff --git a/macros/latex/contrib/iwonamath/ot1iwonamathcm.fd b/macros/latex/contrib/iwonamath/ot1iwonamathcm.fd
index a5e69e07ad..4f49f9befb 100644
--- a/macros/latex/contrib/iwonamath/ot1iwonamathcm.fd
+++ b/macros/latex/contrib/iwonamath/ot1iwonamathcm.fd
@@ -22,7 +22,7 @@
%% in the same archive or directory.)
\ProvidesExplFile
{ot1iwonamathcm.fd}
-{2023-08-31} {1.0}
+{2024-07-19} {1.1}
{Scaled Iwona math fonts}
\tl_if_exist:NTF \l__iwonamath_scale_tl
{}
diff --git a/macros/latex/contrib/iwonamath/ot1iwonamathl.fd b/macros/latex/contrib/iwonamath/ot1iwonamathl.fd
index 82060b21d1..504e9c87ad 100644
--- a/macros/latex/contrib/iwonamath/ot1iwonamathl.fd
+++ b/macros/latex/contrib/iwonamath/ot1iwonamathl.fd
@@ -22,7 +22,7 @@
%% in the same archive or directory.)
\ProvidesExplFile
{ot1iwonamathl.fd}
-{2023-08-31} {1.0}
+{2024-07-19} {1.1}
{Scaled Iwona math fonts}
\tl_if_exist:NTF \l__iwonamath_scale_tl
{}
diff --git a/macros/latex/contrib/iwonamath/ot1iwonamathlc.fd b/macros/latex/contrib/iwonamath/ot1iwonamathlc.fd
index c5b2f0024b..5ad18477c7 100644
--- a/macros/latex/contrib/iwonamath/ot1iwonamathlc.fd
+++ b/macros/latex/contrib/iwonamath/ot1iwonamathlc.fd
@@ -22,7 +22,7 @@
%% in the same archive or directory.)
\ProvidesExplFile
{ot1iwonamathlc.fd}
-{2023-08-31} {1.0}
+{2024-07-19} {1.1}
{Scaled Iwona math fonts}
\tl_if_exist:NTF \l__iwonamath_scale_tl
{}
diff --git a/macros/latex/contrib/iwonamath/ot1iwonamathlcm.fd b/macros/latex/contrib/iwonamath/ot1iwonamathlcm.fd
index 130c63822e..c1b3f9bb44 100644
--- a/macros/latex/contrib/iwonamath/ot1iwonamathlcm.fd
+++ b/macros/latex/contrib/iwonamath/ot1iwonamathlcm.fd
@@ -22,7 +22,7 @@
%% in the same archive or directory.)
\ProvidesExplFile
{ot1iwonamathlcm.fd}
-{2023-08-31} {1.0}
+{2024-07-19} {1.1}
{Scaled Iwona math fonts}
\tl_if_exist:NTF \l__iwonamath_scale_tl
{}
diff --git a/macros/latex/contrib/iwonamath/ot1iwonamathlm.fd b/macros/latex/contrib/iwonamath/ot1iwonamathlm.fd
index ab72419cd8..f15d880adc 100644
--- a/macros/latex/contrib/iwonamath/ot1iwonamathlm.fd
+++ b/macros/latex/contrib/iwonamath/ot1iwonamathlm.fd
@@ -22,7 +22,7 @@
%% in the same archive or directory.)
\ProvidesExplFile
{ot1iwonamathlm.fd}
-{2023-08-31} {1.0}
+{2024-07-19} {1.1}
{Scaled Iwona math fonts}
\tl_if_exist:NTF \l__iwonamath_scale_tl
{}
diff --git a/macros/latex/contrib/iwonamath/ot1iwonamathm.fd b/macros/latex/contrib/iwonamath/ot1iwonamathm.fd
index 7a103a029b..9f82d65734 100644
--- a/macros/latex/contrib/iwonamath/ot1iwonamathm.fd
+++ b/macros/latex/contrib/iwonamath/ot1iwonamathm.fd
@@ -22,7 +22,7 @@
%% in the same archive or directory.)
\ProvidesExplFile
{ot1iwonamathm.fd}
-{2023-08-31} {1.0}
+{2024-07-19} {1.1}
{Scaled Iwona math fonts}
\tl_if_exist:NTF \l__iwonamath_scale_tl
{}
diff --git a/macros/latex/contrib/iwonamath/sample.pdf b/macros/latex/contrib/iwonamath/sample.pdf
index c64d5e078d..342ba53f87 100644
--- a/macros/latex/contrib/iwonamath/sample.pdf
+++ b/macros/latex/contrib/iwonamath/sample.pdf
Binary files differ
diff --git a/macros/latex/contrib/jnuexam/examfc-a-answer.pdf b/macros/latex/contrib/jnuexam/examfc-a-answer.pdf
index f6f0a50649..e12e04e047 100644
--- a/macros/latex/contrib/jnuexam/examfc-a-answer.pdf
+++ b/macros/latex/contrib/jnuexam/examfc-a-answer.pdf
Binary files differ
diff --git a/macros/latex/contrib/jnuexam/examfc-a-blank.pdf b/macros/latex/contrib/jnuexam/examfc-a-blank.pdf
index 09d8a14b15..d033fe6d75 100644
--- a/macros/latex/contrib/jnuexam/examfc-a-blank.pdf
+++ b/macros/latex/contrib/jnuexam/examfc-a-blank.pdf
Binary files differ
diff --git a/macros/latex/contrib/jnuexam/examfc-b-answer.pdf b/macros/latex/contrib/jnuexam/examfc-b-answer.pdf
index 2356b53690..6497883408 100644
--- a/macros/latex/contrib/jnuexam/examfc-b-answer.pdf
+++ b/macros/latex/contrib/jnuexam/examfc-b-answer.pdf
Binary files differ
diff --git a/macros/latex/contrib/jnuexam/examfc-b-blank.pdf b/macros/latex/contrib/jnuexam/examfc-b-blank.pdf
index d9160a13ed..5682c2d24b 100644
--- a/macros/latex/contrib/jnuexam/examfc-b-blank.pdf
+++ b/macros/latex/contrib/jnuexam/examfc-b-blank.pdf
Binary files differ
diff --git a/macros/latex/contrib/jnuexam/examfe-a-answer.pdf b/macros/latex/contrib/jnuexam/examfe-a-answer.pdf
index 6ac1d17806..c029ef99ea 100644
--- a/macros/latex/contrib/jnuexam/examfe-a-answer.pdf
+++ b/macros/latex/contrib/jnuexam/examfe-a-answer.pdf
Binary files differ
diff --git a/macros/latex/contrib/jnuexam/examfe-a-blank.pdf b/macros/latex/contrib/jnuexam/examfe-a-blank.pdf
index 4192ead99f..e2f4dac7e2 100644
--- a/macros/latex/contrib/jnuexam/examfe-a-blank.pdf
+++ b/macros/latex/contrib/jnuexam/examfe-a-blank.pdf
Binary files differ
diff --git a/macros/latex/contrib/jnuexam/examfe-b-answer.pdf b/macros/latex/contrib/jnuexam/examfe-b-answer.pdf
index bf5e9342ee..8e60df9eac 100644
--- a/macros/latex/contrib/jnuexam/examfe-b-answer.pdf
+++ b/macros/latex/contrib/jnuexam/examfe-b-answer.pdf
Binary files differ
diff --git a/macros/latex/contrib/jnuexam/examfe-b-blank.pdf b/macros/latex/contrib/jnuexam/examfe-b-blank.pdf
index c37242241f..03bcefee49 100644
--- a/macros/latex/contrib/jnuexam/examfe-b-blank.pdf
+++ b/macros/latex/contrib/jnuexam/examfe-b-blank.pdf
Binary files differ
diff --git a/macros/latex/contrib/jnuexam/jnuexam.cls b/macros/latex/contrib/jnuexam/jnuexam.cls
index f5df920469..086c55f2b0 100644
--- a/macros/latex/contrib/jnuexam/jnuexam.cls
+++ b/macros/latex/contrib/jnuexam/jnuexam.cls
@@ -6,7 +6,7 @@
% ----------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{jnuexam}[2024-02-18 v2024E An exam class for Jinan University]
+\ProvidesClass{jnuexam}[2024-07-09 v2024F An exam class for Jinan University]
%% 旧版本的 LaTeX 不能识别 2022-11-01 这种日期格式
%\@ifl@t@r\fmtversion{2022-11-01}{}{
@@ -521,9 +521,10 @@
\let\doscratchpaper=\doscratchpaperone
}
-% 在旧版本 ctex 宏包中不能用 \AtEndDocument 添加含中文的内容,即不能用 \appto 而要用 \preto
+%% 此时 \AtEndDocument{...} 等价于 \AddToHook{enddocument}[jnuexam]{...}
+%% 而且默认会在 \AddToHook{enddocument}[randexam]{...} 所加的代码之后执行
\newcommand{\addscratchpaper}{
- \preto{\@enddocumenthook}{\doscratchpaper}
+ \AtEndDocument{\doscratchpaper}
}
\IfExamBoolF{plain}{\IfExamBoolF{answer}{\addscratchpaper}}
@@ -534,6 +535,7 @@
\DeclareExamTheme{final-chinese}{
\SetExamOption{chinese}
+ \SetExamBoolTrue{evaluator}
\SelectExamTranslation{chinese}
\SetExamValue{exampart}{number=\Chinese}
\SelectExamTemplate{examtitle}{final-chinese}
diff --git a/macros/latex/contrib/jnuexam/jnuexam.pdf b/macros/latex/contrib/jnuexam/jnuexam.pdf
index 0cc01cc3f1..c0a756123c 100644
--- a/macros/latex/contrib/jnuexam/jnuexam.pdf
+++ b/macros/latex/contrib/jnuexam/jnuexam.pdf
Binary files differ
diff --git a/macros/latex/contrib/jsonparse/README.md b/macros/latex/contrib/jsonparse/README.md
index 69258570db..c4df9ad419 100644
--- a/macros/latex/contrib/jsonparse/README.md
+++ b/macros/latex/contrib/jsonparse/README.md
@@ -1,6 +1,6 @@
-![Version 0.8.3](https://img.shields.io/badge/version-0.8.3-blue)
+![Version 0.8.7](https://img.shields.io/badge/version-0.8.7-blue)
-![Jason, the JSON parsing horse](https://github.com/jasperhabicht/jsonparse/assets/6378801/d6abde3a-fa12-4b63-a213-ad8332e32199)
+![Jason, the JSON parsing horse](https://github.com/jasperhabicht/jsonparse/assets/6378801/ddfddc70-bf5f-4121-ba45-4b9128875d85)
# The `jsonparse` package
@@ -46,5 +46,5 @@ We can store it in the token variable `\myJSONdata` using the command `\JSONPars
This package including all files is subject to the LPPL 1.3c license. Copyright 2024 Jasper Habicht (mail(at)jasperhabicht.de).
-Jason, the JSON parseing horse: Copyright 2024 Hannah Klöber.
+Jason, the JSON parsing horse: Copyright 2024 Hannah Klöber.
diff --git a/macros/latex/contrib/jsonparse/jason/jason.pdf b/macros/latex/contrib/jsonparse/jason/jason.pdf
index 324458e684..44ff3db133 100644
--- a/macros/latex/contrib/jsonparse/jason/jason.pdf
+++ b/macros/latex/contrib/jsonparse/jason/jason.pdf
Binary files differ
diff --git a/macros/latex/contrib/jsonparse/jason/jason.svg b/macros/latex/contrib/jsonparse/jason/jason.svg
index fe8793dfa8..aff567e175 100644
--- a/macros/latex/contrib/jsonparse/jason/jason.svg
+++ b/macros/latex/contrib/jsonparse/jason/jason.svg
@@ -1,67 +1,25 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 16.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="250px" height="250px" viewBox="0 0 450 450" enable-background="new 0 0 449.5 435" xml:space="preserve">
-<circle fill="#3FA9F5" cx="239" cy="226" r="206.166"/>
-<g>
- <defs>
- <circle id="SVGID_1_" cx="239" cy="226" r="206.166"/>
- </defs>
- <clipPath id="SVGID_2_">
- <use xlink:href="#SVGID_1_" overflow="visible"/>
- </clipPath>
- <path clip-path="url(#SVGID_2_)" fill="#C69C6D" d="M418.334,389.667c0,0-10.334-12.333-36-86.667S344,189.333,333.667,163
- c-5.552-14.149-12.545-22.326-17.83-26.869c7.769-5.957,15.778-13.185,19.83-20.131c6.902-11.834,11.667-24.5,15.667-38.5
- C353.731,69.108,361,63.333,361,63.333s-55-13-78.666,29.5c-1.534,2.754-3.036,5.383-4.538,7.892l-125.587,25.33
- C141.705,137.165,130.648,151.436,126,166c-4.127,12.93-11.333,16-26.333,28s-47.398,43.774-47.398,43.774l12.106,48.851
- l56.113,69.247c13.436-9.009,28.206-20.065,46.512-27.122c13.874-5.348,33.133-8.479,51.113-12.082
- c2.555,6.323,8.828,23.014,11.387,40.332c3.25,22,4.5,91.5,4.5,91.5L418.334,389.667z"/>
- <path clip-path="url(#SVGID_2_)" fill="#F7931E" stroke="#603813" stroke-width="3" stroke-miterlimit="10" d="M465.5,307.334
- c0,0-9.667-14.833-21.667-21c-11.409-5.863-24.5-7.167-24.5-7.167s2.853-11.646,11.167-22.833C439.667,244,456,233.667,456,233.667
- l-51.499-17.5c0,0,17.166-6.5,25.166-13.833c9.095-8.336,13.333-30,13.333-30s-47.621,2.806-54.333-15.167
- C383.501,143.333,402.001,114,402.001,114s-27.334-6.333-41.167-6.167c-7.572,0.091-15.827,0.876-22.104,2.556
- c-0.978,1.889-1.986,3.764-3.063,5.611c-4.052,6.946-12.062,14.174-19.83,20.131c5.285,4.543,12.278,12.72,17.83,26.869
- c10.333,26.333,23.001,65.666,48.667,140s36,86.667,36,86.667l32.5-36.5c-15.167-3-22.334-20.5-22.334-20.5L465.5,307.334z"/>
- <path clip-path="url(#SVGID_2_)" fill="none" stroke="#603813" stroke-width="3" stroke-miterlimit="10" d="M234,448.5
- c0,0-1.25-69.5-4.5-91.5c-2.559-17.318-8.832-34.009-11.387-40.332c-0.185,0.037-0.369,0.074-0.554,0.111"/>
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- This file was generated by dvisvgm 3.2.2 -->
+<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width="250px" height="250px" viewBox='-70.503905 -70.50391 452.105105 441.67801'>
+<defs>
+<clipPath id='clip'>
+<path d='M361.3402 148.0117C361.3402 261.4457 269.3832 353.4067 155.9452 353.4067C42.5082 353.4067-49.4531 261.4457-49.4531 148.0117C-49.4531 34.5747 42.5082-57.3867 155.9452-57.3867C269.3832-57.3867 361.3402 34.5747 361.3402 148.0117Z'/>
+</clipPath>
+</defs>
+<g id='page1'>
+<path d='M361.3402 148.0117C361.3402 261.4457 269.3832 353.4067 155.9452 353.4067C42.5082 353.4067-49.4531 261.4457-49.4531 148.0117C-49.4531 34.5747 42.5082-57.3867 155.9452-57.3867C269.3832-57.3867 361.3402 34.5747 361.3402 148.0117Z' fill='#5ba3de'/>
+<path d='M334.6092 311.0627C334.6092 311.0627 324.3162 298.7777 298.7422 224.7227C273.1762 150.6637 260.5542 111.4807 250.2582 85.2457C244.7262 71.1487 237.7622 62.9997 232.4962 58.4767C240.2342 52.5387 248.2152 45.3397 252.2502 38.4217C259.1252 26.6289 263.8752 14.0117 267.8592 .0664C270.2462-8.2969 277.4922-14.0508 277.4922-14.0508S222.6952-27 199.1172 15.3398C197.5862 18.0859 196.0942 20.7031 194.5942 23.2031L69.4762 48.4377C59.0122 59.5077 48.0002 73.7227 43.3672 88.2347C39.2542 101.1167 32.0742 104.1757 17.1289 116.1287C2.1875 128.0857-30.0898 159.7387-30.0898 159.7387L-18.0273 208.4097L37.8752 277.3987C51.2622 268.4177 65.9722 257.4067 84.2152 250.3787C98.0352 245.0467 117.2222 241.9297 135.1372 238.3397C137.6832 244.6367 143.9332 261.2657 146.4802 278.5237C149.7192 300.4377 150.9652 369.6797 150.9652 369.6797Z' fill='#ba8d5d' clip-path='url(#clip)'/>
+<path d='M381.6012 229.0387C381.6012 229.0387 371.9692 214.2617 360.0122 208.1167C348.6442 202.2777 335.6052 200.9767 335.6052 200.9767S338.4452 189.3747 346.7302 178.2307C355.8592 165.9457 372.1372 155.6447 372.1372 155.6447L320.8282 138.2107C320.8282 138.2107 337.9292 131.7347 345.8982 124.4297C354.9612 116.1247 359.1832 94.5427 359.1832 94.5427S311.7422 97.3397 305.0512 79.4337C299.9062 65.6527 318.3362 36.4297 318.3362 36.4297S291.1012 30.1167 277.3242 30.2847C269.7812 30.3747 261.5542 31.1567 255.3042 32.8277C254.3282 34.7107 253.3242 36.5817 252.2502 38.4217C248.2152 45.3397 240.2342 52.5387 232.4962 58.4767C237.7622 62.9997 244.7262 71.1487 250.2582 85.2457C260.5542 111.4807 273.1762 150.6637 298.7422 224.7227C324.3162 298.7777 334.6092 311.0627 334.6092 311.0627L366.9882 274.6997C351.8752 271.7107 344.7382 254.2777 344.7382 254.2777Z' fill='#f68623' stroke='#512c15' stroke-width='2.9888' stroke-miterlimit='10' clip-path='url(#clip)'/>
+<path d='M37.8712 277.3987C51.2622 268.4177 65.9722 257.4067 84.2152 250.3787C108.1682 241.1407 148.2502 238.5427 169.8632 228.6327C191.4762 218.7307 194.1792 185.4067 194.1792 185.4067M150.9652 369.6797C150.9652 369.6797 149.7192 300.4377 146.4802 278.5237C143.9332 261.2657 137.6832 244.6367 135.1332 238.3397C134.9492 238.3747 134.7692 238.4097 134.5862 238.4497M212.7342 71.7967C212.7342 71.7967 242.9532 54.3637 252.2502 38.4217C259.1252 26.6289 263.8752 14.0117 267.8592 .0664C270.2462-8.2969 277.4922-14.0508 277.4922-14.0508S222.6952-27 199.1172 15.3398C197.5862 18.0859 196.0942 20.7031 194.5942 23.2031M69.4762 48.4377C59.0122 59.5077 47.9962 73.7227 43.3672 88.2347C39.2542 101.1167 32.0742 104.1757 17.1289 116.1287C2.1875 128.0857-30.0898 159.7387-30.0898 159.7387' stroke='#512c15' fill='none' stroke-width='2.9888' stroke-miterlimit='10' clip-path='url(#clip)'/>
+<path d='M106.4652 1.2266C106.4652 1.2266 105.9652-3.918 96.3322-13.8828C94.6292-15.6484 92.7692-17.0078 90.8672-18.0586C91.1792-11.9961 91.7852-6.9063 92.1642-4.1016C98.3012-4.2969 103.4262-2.5938 106.4652 1.2266Z' fill='#ba8d5d' stroke='#512c15' stroke-width='2.9888' stroke-miterlimit='10'/>
+<path d='M96.1722-32.6484C106.4652-33.4766 119.5822-30.9844 125.7222-21.6875C128.7112-24.8398 128.7112-39.9531 128.7112-39.9531S136.2112-20.1836 148.1132-14.75C143.5472-30.8398 127.1132-45.75 120.3282-51.2422C113.3552-56.8906 103.7652-70.50391 103.7652-70.50391S94.8202-59.2109 91.8322-41.6133C91.2892-38.4297 90.9722-35.0938 90.8042-31.7695C92.5002-32.1836 94.2892-32.4961 96.1722-32.6484Z' fill='#ba8d5d' stroke='#512c15' stroke-width='2.9888' stroke-miterlimit='10'/>
+<path d='M184.1722-2.2617C173.5472-11.8906 162.4222-13.0547 153.6172-13.3828C138.5702-13.9531 128.7112-39.9531 128.7112-39.9531S128.7112-24.8398 125.7222-21.6875C119.5822-30.9844 106.4652-33.4766 96.1722-32.6484C81.6252-31.4727 72.2622-21.0234 72.2622-21.0234S86.7072-23.8438 96.3322-13.8828C105.9652-3.918 106.4652 1.2266 106.4652 1.2266C99.3242-7.7422 80.7262-5.082 64.4532 6.543C48.1832 18.1602 52.9962 49.3787 52.9962 49.3787S56.6522 36.5937 73.5862 28.7887C80.1332 25.7734 97.4962 25.1367 97.4962 25.1367S72.7582 25.9687 67.9412 54.8597C65.0472 72.2457 71.5942 87.0707 71.5942 87.0707S73.0902 71.6287 87.8672 62.4957C98.1402 56.1487 109.6212 53.1997 109.6212 53.1997C104.4722 57.0157 106.4652 67.9767 106.4652 67.9767S115.4292 52.8667 139.1722 54.3637C169.5392 56.2737 182.0352 44.1877 194.5942 23.2031C194.0432 17.1289 191.9692 4.8008 184.1722-2.2617Z' fill='#f68623' stroke='#512c15' stroke-width='2.9888' stroke-miterlimit='10'/>
+<path d='M37.8712 277.3987C46.1912 267.0387 57.7072 251.8637 60.5542 243.9027C68.0272 222.9807 59.3082 213.2657 54.5782 206.0427C49.8442 198.8207 57.8122 194.5857 44.6132 181.8827S-8.9336 190.1017-14.4141 187.6137C-19.8945 185.1207-19.3945 181.8827-20.8906 170.9257C-22.3867 159.9647-28.0469 158.7847-37.3281 159.9647C-49.9297 161.5627-55.7617 184.3747-58.9961 200.0667C-62.23437 215.7577-70.503905 215.5117-68.71094 228.9567C-67.86328 235.3317-64.28125 241.8907-52.8711 244.2927C-53.5937 250.0317-53.8047 257.0317-52.5898 264.6597C-49.4414 284.4727-17.918 294.3787 5.5 292.1247C16.2148 291.0977 26.5742 284.9727 37.8712 277.3987Z' fill='#976d46' stroke='#512c15' stroke-width='2.9888' stroke-miterlimit='10'/>
+<path d='M159.6012 113.0977C159.6012 122.6597 150.8982 130.4097 140.1722 130.4097C129.4412 130.4097 120.7462 122.6597 120.7462 113.0977C120.7462 103.5347 129.4412 95.7887 140.1722 95.7887C150.8982 95.7887 159.6012 103.5347 159.6012 113.0977Z' fill='#fff' stroke='#512c15' stroke-width='2.9888' stroke-miterlimit='10'/>
+<path d='M146.6482 115.1327C146.6482 118.9847 143.1172 122.1097 138.7622 122.1097C134.4062 122.1097 130.8712 118.9847 130.8712 115.1327C130.8712 111.2817 134.4062 108.1597 138.7622 108.1597C143.1172 108.1597 146.6482 111.2817 146.6482 115.1327Z' fill='#341a13'/>
+<path d='M-1.9453 215.2187C-1.9453 215.2187 .4883 211.0157 4.1406 206.1677C8.5508 200.3047 16.4766 195.1837 20.4531 194.8357C27.5508 194.2107 32.6052 195.9337 29.7152 201.4997C26.8281 207.0707 17.3984 212.9567 10.4922 213.8907C3.5781 214.8167-1.9453 215.2187-1.9453 215.2187Z' fill='#341a13'/>
+<path d='M-43.0742 245.1407C-43.793 249.6797-44.1641 256.3747-41.0664 260.0897C-36.082 266.0667-26.6211 275.0347-5.1992 262.0817C12.7813 251.2107 35.8402 229.8127 42.7892 223.2227C38.7772 226.3637 28.1367 232.1247 4.0156 231.9457C-22.5469 231.7417-28.8125 244.2577-43.0742 245.1407Z' fill='#fff' stroke='#512c15' stroke-width='2.9888' stroke-miterlimit='10'/>
+<path d='M-52.8711 244.2927C-50.918 244.7027-48.7383 244.9997-46.2969 245.1487C-45.1719 245.2107-44.1055 245.2067-43.0742 245.1407' stroke='#512c15' fill='none' stroke-width='2.9888' stroke-miterlimit='10'/>
+<path d='M25.7773 230.1017C9.6211 238.6997-18.1562 252.9177-25.7695 253.2777C-33.0273 253.6167-39.2852 248.5467-42.6719 245.1057C-42.8047 245.1167-42.9375 245.1287-43.0742 245.1407' stroke='#512c15' fill='none' stroke-width='2.9888' stroke-miterlimit='10'/>
</g>
-<path fill="#F7931E" stroke="#603813" stroke-width="3" stroke-miterlimit="10" d="M267.334,75.167
- C256.668,65.5,245.5,64.333,236.667,64c-15.107-0.57-25-26.667-25-26.667s0,15.167-3,18.333c-6.167-9.333-19.333-11.833-29.667-11
- c-14.596,1.177-24,11.667-24,11.667s14.5-2.833,24.167,7.167c9.667,10,10.167,15.167,10.167,15.167
- c-7.167-9-25.834-6.334-42.167,5.333s-11.5,43-11.5,43s3.667-12.833,20.667-20.667c6.572-3.028,24-3.667,24-3.667
- S155.5,103.5,150.667,132.5c-2.909,17.455,3.667,32.333,3.667,32.333s1.5-15.5,16.333-24.667c10.31-6.371,21.833-9.333,21.833-9.333
- c-5.167,3.833-3.166,14.833-3.166,14.833s9-15.167,32.833-13.667c30.479,1.918,43.022-10.208,55.629-31.275
- C277.24,94.63,275.157,82.257,267.334,75.167z"/>
-<path fill="#A67C52" stroke="#603813" stroke-width="3" stroke-miterlimit="10" d="M120.487,355.872
- c8.348-10.395,19.908-25.626,22.763-33.622c7.5-21-1.25-30.75-6-38s3.25-11.5-10-24.25S73.5,268.25,68,265.75S63,260,61.5,249
- s-7.183-12.182-16.5-11c-12.646,1.604-18.5,24.5-21.75,40.25s-11.549,15.507-9.75,29c0.854,6.402,4.447,12.983,15.898,15.396
- c-0.721,5.758-0.935,12.787,0.283,20.442c3.164,19.888,34.804,29.832,58.308,27.572C98.749,369.626,109.143,363.479,120.487,355.872
- z"/>
-<path fill="#C69C6D" stroke="#603813" stroke-width="3" stroke-miterlimit="10" d="M189.334,78.667c0,0-0.5-5.167-10.167-15.167
- c-1.713-1.772-3.58-3.135-5.489-4.188c0.317,6.082,0.921,11.189,1.303,14.006C181.138,73.124,186.281,74.833,189.334,78.667z"/>
-<path fill="#C69C6D" stroke="#603813" stroke-width="3" stroke-miterlimit="10" d="M179,44.667c10.334-0.833,23.5,1.667,29.667,11
- c3-3.167,3-18.333,3-18.333s7.525,19.843,19.471,25.298c-4.58-16.15-21.08-31.12-27.888-36.632
- c-7-5.667-16.625-19.333-16.625-19.333s-8.979,11.333-11.979,29c-0.542,3.195-0.864,6.542-1.031,9.882
- C175.318,45.129,177.115,44.819,179,44.667z"/>
-<ellipse fill="#FFFFFF" stroke="#603813" stroke-width="3" stroke-miterlimit="10" cx="223.167" cy="190.959" rx="19.5" ry="17.375"/>
-<ellipse fill="#42210B" cx="221.751" cy="193" rx="7.917" ry="7"/>
-<path fill="#603813" d="M80.519,293.464c0,0,2.443-4.219,6.106-9.089C91.052,278.49,99.007,273.351,103,273
- c7.125-0.625,12.198,1.105,9.299,6.695S99.936,291.193,93,292.125S80.519,293.464,80.519,293.464z"/>
-<path fill="none" stroke="#603813" stroke-width="3" stroke-miterlimit="10" d="M296,149.5c0,0,30.334-17.5,39.667-33.5
- c6.902-11.834,11.667-24.5,15.667-38.5C353.731,69.108,361,63.333,361,63.333s-55-13-78.666,29.5
- c-1.534,2.754-3.036,5.383-4.538,7.892"/>
-<path fill="none" stroke="#603813" stroke-width="3" stroke-miterlimit="10" d="M120.488,355.872
- c13.437-9.009,28.207-20.065,46.512-27.122c24.045-9.269,64.273-11.878,85.969-21.821s24.408-43.392,24.408-43.392"/>
-<path fill="#FFFFFF" stroke="#603813" stroke-width="3" stroke-miterlimit="10" d="M127.5,299.5c0,0-0.749,0.729-2.083,1.995
- C126.919,300.316,127.5,299.5,127.5,299.5z"/>
-<path fill="#FFFFFF" stroke="#603813" stroke-width="3" stroke-miterlimit="10" d="M39.236,323.495
- c-0.724,4.556-1.093,11.276,2.014,15.005c5,6,14.5,15,36,2c18.048-10.912,41.196-32.388,48.167-39.005
- c-4.023,3.157-14.707,8.937-38.917,8.755C59.839,310.05,53.549,322.611,39.236,323.495z"/>
-<path fill="none" stroke="#603813" stroke-width="3" stroke-miterlimit="10" d="M29.398,322.646c1.963,0.413,4.15,0.708,6.602,0.854
- c1.129,0.067,2.202,0.06,3.236-0.005"/>
-<path fill="none" stroke="#603813" stroke-width="3" stroke-miterlimit="10" d="M108.345,308.401
- c-16.22,8.63-44.097,22.899-51.74,23.26c-7.288,0.344-13.568-4.744-16.966-8.201c-0.135,0.01-0.266,0.026-0.403,0.035"/>
-<path fill="none" stroke="#603813" stroke-width="3" stroke-miterlimit="10" d="M152.209,126.056
- C141.705,137.165,130.648,151.436,126,166c-4.126,12.93-11.333,16-26.333,28s-47.398,43.774-47.398,43.774"/>
</svg>
diff --git a/macros/latex/contrib/jsonparse/jason/jason.tex b/macros/latex/contrib/jsonparse/jason/jason.tex
new file mode 100644
index 0000000000..28e9eb1b0c
--- /dev/null
+++ b/macros/latex/contrib/jsonparse/jason/jason.tex
@@ -0,0 +1,289 @@
+% File: jason/jason.tex
+% Copyright 2024 Jasper Habicht (mail(at)jasperhabicht.de).
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License version 1.3c,
+% available at http://www.latex-project.org/lppl/.
+%
+% This file is part of the `jsonparse' package (The Work in LPPL)
+% and all files in that bundle must be distributed together.
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+\documentclass{standalone}
+\usepackage{l3draw}
+
+\begin{document}
+\ExplSyntaxOn
+
+\color_set:nnn { color_i } { rgb } { 0.356863 , 0.639216 , 0.870588 }
+\color_set:nnn { color_ii } { rgb } { 0.729412 , 0.552941 , 0.364706 }
+\color_set:nnn { color_iii } { rgb } { 0.964706 , 0.52549 , 0.137255 }
+\color_set:nnn { color_iv } { rgb } { 0.592157 , 0.427451 , 0.27451 }
+\color_set:nnn { color_v } { rgb } { 0.317647 , 0.172549 , 0.0823529 }
+\color_set:nnn { color_vi } { rgb } { 0.203922 , 0.101961 , 0.0745098 }
+\color_set:nnn { color_vii } { rgb } { 1 , 1 , 1 }
+
+\draw_begin:
+
+\cs_new:Npn \__jsonparse_jason_path_i: {
+ \draw_path_moveto:n { 433.418 , 221.836 }
+ \draw_path_curveto:nnn { 433.418 , 335.695 } { 341.117 , 428 } { 227.254 , 428 }
+ \draw_path_curveto:nnn { 113.391 , 428 } { 21.086 , 335.695 } { 21.086 , 221.836 }
+ \draw_path_curveto:nnn { 21.086 , 107.973 } { 113.391 , 15.668 } { 227.254 , 15.668 }
+ \draw_path_curveto:nnn { 341.117 , 15.668 } { 433.418 , 107.973 } { 433.418 , 221.836 }
+ \draw_path_close:
+}
+
+\cs_new:Npn \__jsonparse_jason_path_ii: {
+ \draw_path_moveto:n { 406.586 , 385.5 }
+ \draw_path_curveto:nnn { 406.586 , 385.5 } { 396.254 , 373.168 } { 370.586 , 298.836 }
+ \draw_path_curveto:nnn { 344.922 , 224.5 } { 332.254 , 185.168 } { 321.918 , 158.836 }
+ \draw_path_curveto:nnn { 316.367 , 144.684 } { 309.375 , 136.508 } { 304.09 , 131.965 }
+ \draw_path_curveto:nnn { 311.859 , 126.008 } { 319.867 , 118.781 } { 323.918 , 111.836 }
+ \draw_path_curveto:nnn { 330.82 , 100 } { 335.586 , 87.336 } { 339.586 , 73.336 }
+ \draw_path_curveto:nnn { 341.984 , 64.941 } { 349.254 , 59.168 } { 349.254 , 59.168 }
+ \draw_path_curveto:nnn { 349.254 , 59.168 } { 294.254 , 46.168 } { 270.586 , 88.668 }
+ \draw_path_curveto:nnn { 269.051 , 91.422 } { 267.551 , 94.051 } { 266.047 , 96.559 }
+ \draw_path_lineto:n { 140.461 , 121.891 }
+ \draw_path_curveto:nnn { 129.957 , 133 } { 118.902 , 147.27 } { 114.254 , 161.836 }
+ \draw_path_curveto:nnn { 110.125 , 174.766 } { 102.918 , 177.836 } { 87.918 , 189.836 }
+ \draw_path_curveto:nnn { 72.918 , 201.836 } { 40.52 , 233.609 } { 40.52 , 233.609 }
+ \draw_path_lineto:n { 52.629 , 282.461 }
+ \draw_path_lineto:n { 108.742 , 351.707 }
+ \draw_path_curveto:nnn { 122.176 , 342.695 } { 136.945 , 331.641 } { 155.254 , 324.586 }
+ \draw_path_curveto:nnn { 169.125 , 319.234 } { 188.387 , 316.105 } { 206.367 , 312.504 }
+ \draw_path_curveto:nnn { 208.922 , 318.824 } { 215.195 , 335.516 } { 217.754 , 352.836 }
+ \draw_path_curveto:nnn { 221.004 , 374.836 } { 222.254 , 444.336 } { 222.254 , 444.336 }
+ \draw_path_close:
+}
+
+\cs_new:Npn \__jsonparse_jason_path_iii: {
+ \draw_path_moveto:n { 453.754 , 303.168 }
+ \draw_path_curveto:nnn { 453.754 , 303.168 } { 444.086 , 288.336 } { 432.086 , 282.168 }
+ \draw_path_curveto:nnn { 420.676 , 276.305 } { 407.586 , 275 } { 407.586 , 275 }
+ \draw_path_curveto:nnn { 407.586 , 275 } { 410.438 , 263.355 } { 418.754 , 252.168 }
+ \draw_path_curveto:nnn { 427.918 , 239.836 } { 444.254 , 229.5 } { 444.254 , 229.5 }
+ \draw_path_lineto:n { 392.754 , 212 }
+ \draw_path_curveto:nnn { 392.754 , 212 } { 409.918 , 205.5 } { 417.918 , 198.168 }
+ \draw_path_curveto:nnn { 427.016 , 189.832 } { 431.254 , 168.168 } { 431.254 , 168.168 }
+ \draw_path_curveto:nnn { 431.254 , 168.168 } { 383.633 , 170.973 } { 376.918 , 153 }
+ \draw_path_curveto:nnn { 371.754 , 139.168 } { 390.254 , 109.836 } { 390.254 , 109.836 }
+ \draw_path_curveto:nnn { 390.254 , 109.836 } { 362.918 , 103.5 } { 349.086 , 103.668 }
+ \draw_path_curveto:nnn { 341.516 , 103.758 } { 333.258 , 104.543 } { 326.984 , 106.223 }
+ \draw_path_curveto:nnn { 326.004 , 108.113 } { 324.996 , 109.988 } { 323.918 , 111.836 }
+ \draw_path_curveto:nnn { 319.867 , 118.781 } { 311.859 , 126.008 } { 304.09 , 131.965 }
+ \draw_path_curveto:nnn { 309.375 , 136.508 } { 316.367 , 144.684 } { 321.918 , 158.836 }
+ \draw_path_curveto:nnn { 332.254 , 185.168 } { 344.922 , 224.5 } { 370.586 , 298.836 }
+ \draw_path_curveto:nnn { 396.254 , 373.168 } { 406.586 , 385.5 } { 406.586 , 385.5 }
+ \draw_path_lineto:n { 439.086 , 349 }
+ \draw_path_curveto:nnn { 423.918 , 346 } { 416.754 , 328.5 } { 416.754 , 328.5 }
+ \draw_path_close:
+}
+
+\cs_new:Npn \__jsonparse_jason_path_iv: {
+ \draw_path_moveto:n { 255.586 , 71 }
+ \draw_path_curveto:nnn { 244.922 , 61.336 } { 233.754 , 60.168 } { 224.918 , 59.836 }
+ \draw_path_curveto:nnn { 209.812 , 59.266 } { 199.918 , 33.168 } { 199.918 , 33.168 }
+ \draw_path_curveto:nnn { 199.918 , 33.168 } { 199.918 , 48.336 } { 196.918 , 51.5 }
+ \draw_path_curveto:nnn { 190.754 , 42.168 } { 177.586 , 39.668 } { 167.254 , 40.5 }
+ \draw_path_curveto:nnn { 152.656 , 41.68 } { 143.254 , 52.168 } { 143.254 , 52.168 }
+ \draw_path_curveto:nnn { 143.254 , 52.168 } { 157.754 , 49.336 } { 167.418 , 59.336 }
+ \draw_path_curveto:nnn { 177.086 , 69.336 } { 177.586 , 74.5 } { 177.586 , 74.5 }
+ \draw_path_curveto:nnn { 170.418 , 65.5 } { 151.754 , 68.168 } { 135.418 , 79.836 }
+ \draw_path_curveto:nnn { 119.086 , 91.5 } { 123.918 , 122.836 } { 123.918 , 122.836 }
+ \draw_path_curveto:nnn { 123.918 , 122.836 } { 127.586 , 110 } { 144.586 , 102.168 }
+ \draw_path_curveto:nnn { 151.156 , 99.141 } { 168.586 , 98.5 } { 168.586 , 98.5 }
+ \draw_path_curveto:nnn { 168.586 , 98.5 } { 143.754 , 99.336 } { 138.918 , 128.336 }
+ \draw_path_curveto:nnn { 136.012 , 145.789 } { 142.586 , 160.668 } { 142.586 , 160.668 }
+ \draw_path_curveto:nnn { 142.586 , 160.668 } { 144.086 , 145.168 } { 158.918 , 136 }
+ \draw_path_curveto:nnn { 169.23 , 129.629 } { 180.754 , 126.668 } { 180.754 , 126.668 }
+ \draw_path_curveto:nnn { 175.586 , 130.5 } { 177.586 , 141.5 } { 177.586 , 141.5 }
+ \draw_path_curveto:nnn { 177.586 , 141.5 } { 186.586 , 126.336 } { 210.418 , 127.836 }
+ \draw_path_curveto:nnn { 240.898 , 129.754 } { 253.441 , 117.625 } { 266.047 , 96.559 }
+ \draw_path_curveto:nnn { 265.492 , 90.465 } { 263.41 , 78.09 } { 255.586 , 71 }
+ \draw_path_close:
+}
+
+\cs_new:Npn \__jsonparse_jason_path_v: {
+ \draw_path_moveto:n { 108.738 , 351.707 }
+ \draw_path_curveto:nnn { 117.086 , 341.312 } { 128.648 , 326.078 } { 131.504 , 318.086 }
+ \draw_path_curveto:nnn { 139.004 , 297.086 } { 130.254 , 287.336 } { 125.504 , 280.086 }
+ \draw_path_curveto:nnn { 120.754 , 272.836 } { 128.754 , 268.586 } { 115.504 , 255.836 }
+ \draw_path_curveto:nnn { 102.254 , 243.086 } { 61.754 , 264.086 } { 56.254 , 261.586 }
+ \draw_path_curveto:nnn { 50.754 , 259.086 } { 51.254 , 255.836 } { 49.754 , 244.836 }
+ \draw_path_curveto:nnn { 48.254 , 233.836 } { 42.57 , 232.652 } { 33.254 , 233.836 }
+ \draw_path_curveto:nnn { 20.605 , 235.438 } { 14.754 , 258.336 } { 11.504 , 274.086 }
+ \draw_path_curveto:nnn { 8.254 , 289.836 } { -0.047 , 289.59 } { 1.754 , 303.086 }
+ \draw_path_curveto:nnn { 2.605 , 309.484 } { 6.199 , 316.066 } { 17.652 , 318.48 }
+ \draw_path_curveto:nnn { 16.93 , 324.238 } { 16.715 , 331.266 } { 17.934 , 338.922 }
+ \draw_path_curveto:nnn { 21.098 , 358.809 } { 52.738 , 368.754 } { 76.242 , 366.492 }
+ \draw_path_curveto:nnn { 87 , 365.461 } { 97.395 , 359.312 } { 108.738 , 351.707 }
+ \draw_path_close:
+}
+
+\cs_new:Npn \__jsonparse_jason_path_vi: {
+ \draw_path_moveto:n { 108.738 , 351.707 }
+ \draw_path_curveto:nnn { 122.176 , 342.695 } { 136.945 , 331.641 } { 155.254 , 324.586 }
+ \draw_path_curveto:nnn { 179.297 , 315.316 } { 219.527 , 312.707 } { 241.223 , 302.762 }
+ \draw_path_curveto:nnn { 262.918 , 292.82 } { 265.629 , 259.371 } { 265.629 , 259.371 }
+
+ \draw_path_moveto:n { 222.254 , 444.336 }
+ \draw_path_curveto:nnn { 222.254 , 444.336 } { 221.004 , 374.836 } { 217.754 , 352.836 }
+ \draw_path_curveto:nnn { 215.195 , 335.516 } { 208.922 , 318.824 } { 206.363 , 312.504 }
+ \draw_path_curveto:nnn { 206.18 , 312.539 } { 205.996 , 312.574 } { 205.812 , 312.613 }
+
+ \draw_path_moveto:n { 284.254 , 145.336 }
+ \draw_path_curveto:nnn { 284.254 , 145.336 } { 314.586 , 127.836 } { 323.918 , 111.836 }
+ \draw_path_curveto:nnn { 330.82 , 100 } { 335.586 , 87.336 } { 339.586 , 73.336 }
+ \draw_path_curveto:nnn { 341.984 , 64.941 } { 349.254 , 59.168 } { 349.254 , 59.168 }
+ \draw_path_curveto:nnn { 349.254 , 59.168 } { 294.254 , 46.168 } { 270.586 , 88.668 }
+ \draw_path_curveto:nnn { 269.051 , 91.422 } { 267.551 , 94.051 } { 266.047 , 96.559 }
+
+ \draw_path_moveto:n { 140.461 , 121.891 }
+ \draw_path_curveto:nnn { 129.957 , 133 } { 118.898 , 147.27 } { 114.254 , 161.836 }
+ \draw_path_curveto:nnn { 110.125 , 174.766 } { 102.918 , 177.836 } { 87.918 , 189.836 }
+ \draw_path_curveto:nnn { 72.918 , 201.836 } { 40.52 , 233.609 } { 40.52 , 233.609 }
+}
+
+\cs_new:Npn \__jsonparse_jason_path_vii: {
+ \draw_path_moveto:n { 177.586 , 74.5 }
+ \draw_path_curveto:nnn { 177.586 , 74.5 } { 177.086 , 69.336 } { 167.418 , 59.336 }
+ \draw_path_curveto:nnn { 165.707 , 57.562 } { 163.84 , 56.199 } { 161.93 , 55.145 }
+ \draw_path_curveto:nnn { 162.246 , 61.227 } { 162.852 , 66.336 } { 163.234 , 69.152 }
+ \draw_path_curveto:nnn { 169.391 , 68.957 } { 174.535 , 70.668 } { 177.586 , 74.5 }
+ \draw_path_close:
+}
+
+\cs_new:Npn \__jsonparse_jason_path_viii: {
+ \draw_path_moveto:n { 167.254 , 40.5 }
+ \draw_path_curveto:nnn { 177.586 , 39.668 } { 190.754 , 42.168 } { 196.918 , 51.5 }
+ \draw_path_curveto:nnn { 199.918 , 48.336 } { 199.918 , 33.168 } { 199.918 , 33.168 }
+ \draw_path_curveto:nnn { 199.918 , 33.168 } { 207.445 , 53.012 } { 219.391 , 58.465 }
+ \draw_path_curveto:nnn { 214.809 , 42.316 } { 198.312 , 27.348 } { 191.504 , 21.836 }
+ \draw_path_curveto:nnn { 184.504 , 16.168 } { 174.879 , 2.5 } { 174.879 , 2.5 }
+ \draw_path_curveto:nnn { 174.879 , 2.5 } { 165.898 , 13.836 } { 162.898 , 31.5 }
+ \draw_path_curveto:nnn { 162.355 , 34.695 } { 162.035 , 38.043 } { 161.867 , 41.383 }
+ \draw_path_curveto:nnn { 163.57 , 40.965 } { 165.367 , 40.652 } { 167.254 , 40.5 }
+ \draw_path_close:
+}
+
+\cs_new:Npn \__jsonparse_jason_path_ix: {
+ \draw_path_moveto:n { 230.922 , 186.793 }
+ \draw_path_curveto:nnn { 230.922 , 196.391 } { 222.188 , 204.168 } { 211.422 , 204.168 }
+ \draw_path_curveto:nnn { 200.648 , 204.168 } { 191.922 , 196.391 } { 191.922 , 186.793 }
+ \draw_path_curveto:nnn { 191.922 , 177.195 } { 200.648 , 169.418 } { 211.422 , 169.418 }
+ \draw_path_curveto:nnn { 222.188 , 169.418 } { 230.922 , 177.195 } { 230.922 , 186.793 }
+ \draw_path_close:
+}
+
+\cs_new:Npn \__jsonparse_jason_path_x: {
+ \draw_path_moveto:n { 217.922 , 188.836 }
+ \draw_path_curveto:nnn { 217.922 , 192.699 } { 214.375 , 195.836 } { 210.004 , 195.836 }
+ \draw_path_curveto:nnn { 205.633 , 195.836 } { 202.086 , 192.699 } { 202.086 , 188.836 }
+ \draw_path_curveto:nnn { 202.086 , 184.969 } { 205.633 , 181.836 } { 210.004 , 181.836 }
+ \draw_path_curveto:nnn { 214.375 , 181.836 } { 217.922 , 184.969 } { 217.922 , 188.836 }
+ \draw_path_close:
+}
+
+% nostril
+\cs_new:Npn \__jsonparse_jason_path_xi: {
+ \draw_path_moveto:n { 68.77 , 289.297 }
+ \draw_path_curveto:nnn { 68.77 , 289.297 } { 71.215 , 285.078 } { 74.879 , 280.211 }
+ \draw_path_curveto:nnn { 79.305 , 274.324 } { 87.262 , 269.184 } { 91.254 , 268.836 }
+ \draw_path_curveto:nnn { 98.379 , 268.211 } { 103.449 , 269.938 } { 100.551 , 275.527 }
+ \draw_path_curveto:nnn { 97.652 , 281.117 } { 88.188 , 287.027 } { 81.254 , 287.961 }
+ \draw_path_curveto:nnn { 74.316 , 288.891 } { 68.77 , 289.297 } { 68.77 , 289.297 }
+ \draw_path_close:
+}
+
+% mouth
+\cs_new:Npn \__jsonparse_jason_path_xii: {
+ \draw_path_moveto:n { 27.488 , 319.328 }
+ \draw_path_curveto:nnn { 26.766 , 323.887 } { 26.395 , 330.605 } { 29.504 , 334.336 }
+ \draw_path_curveto:nnn { 34.504 , 340.336 } { 44.004 , 349.336 } { 65.504 , 336.336 }
+ \draw_path_curveto:nnn { 83.551 , 325.422 } { 106.699 , 303.945 } { 113.672 , 297.328 }
+ \draw_path_curveto:nnn { 109.645 , 300.484 } { 98.965 , 306.266 } { 74.754 , 306.086 }
+ \draw_path_curveto:nnn { 48.09 , 305.883 } { 41.801 , 318.445 } { 27.488 , 319.328 }
+ \draw_path_close:
+}
+
+% mouth edge
+\cs_new:Npn \__jsonparse_jason_path_xiii: {
+ \draw_path_moveto:n { 17.652 , 318.48 }
+ \draw_path_curveto:nnn { 19.613 , 318.891 } { 21.801 , 319.188 } { 24.254 , 319.336 }
+ \draw_path_curveto:nnn { 25.383 , 319.402 } { 26.453 , 319.395 } { 27.488 , 319.328 }
+}
+
+% teeth
+\cs_new:Npn \__jsonparse_jason_path_xiv: {
+ \draw_path_moveto:n { 96.598 , 304.234 }
+ \draw_path_curveto:nnn { 80.379 , 312.863 } { 52.5 , 327.137 } { 44.855 , 327.496 }
+ \draw_path_curveto:nnn { 37.57 , 327.84 } { 31.289 , 322.75 } { 27.891 , 319.293 }
+ \draw_path_curveto:nnn { 27.758 , 319.305 } { 27.625 , 319.32 } { 27.488 , 319.328 }
+}
+
+\draw_transform_yscale:n { -1 }
+\draw_linewidth:n { 3pt }
+\draw_miterlimit:n { 10 }
+\color_stroke:n { color_v }
+
+\draw_scope_begin:
+
+ \color_fill:n { color_i }
+ \__jsonparse_jason_path_i:
+ \draw_path_use_clear:n { fill , clip }
+
+ \color_fill:n { color_ii }
+ \__jsonparse_jason_path_ii:
+ \draw_path_use_clear:n { fill }
+
+ \color_fill:n { color_iii }
+ \__jsonparse_jason_path_iii:
+ \draw_path_use_clear:n { fill , draw }
+
+ \__jsonparse_jason_path_vi:
+ \draw_path_use_clear:n { draw }
+
+\draw_scope_end:
+
+\color_fill:n { color_ii }
+\__jsonparse_jason_path_vii:
+\draw_path_use_clear:n { fill , draw }
+
+\__jsonparse_jason_path_viii:
+\draw_path_use_clear:n { fill , draw }
+
+\color_fill:n { color_iii }
+\__jsonparse_jason_path_iv:
+\draw_path_use_clear:n { fill , draw }
+
+\color_fill:n { color_iv }
+\__jsonparse_jason_path_v:
+\draw_path_use_clear:n { fill , draw }
+
+\color_fill:n { color_vii }
+\__jsonparse_jason_path_ix:
+\draw_path_use_clear:n { fill , draw }
+
+\color_fill:n { color_vi }
+\__jsonparse_jason_path_x:
+\draw_path_use_clear:n { fill }
+
+\__jsonparse_jason_path_xi:
+\draw_path_use_clear:n { fill }
+
+\color_fill:n { color_vii }
+\__jsonparse_jason_path_xii:
+\draw_path_use_clear:n { fill , draw }
+
+\__jsonparse_jason_path_xiii:
+\draw_path_use_clear:n { draw }
+
+\__jsonparse_jason_path_xiv:
+\draw_path_use_clear:n { draw }
+
+\draw_end:
+
+\ExplSyntaxOff
+\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/jsonparse/jsonparse-doc.pdf b/macros/latex/contrib/jsonparse/jsonparse-doc.pdf
index ed7a1dded6..e52f8631a0 100644
--- a/macros/latex/contrib/jsonparse/jsonparse-doc.pdf
+++ b/macros/latex/contrib/jsonparse/jsonparse-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/jsonparse/jsonparse-doc.tex b/macros/latex/contrib/jsonparse/jsonparse-doc.tex
index 1cfcde1e18..7e775f7499 100644
--- a/macros/latex/contrib/jsonparse/jsonparse-doc.tex
+++ b/macros/latex/contrib/jsonparse/jsonparse-doc.tex
@@ -11,8 +11,8 @@
% This work has the LPPL maintenance status `maintained'.
%
\documentclass[a4paper]{article}
-\def\jsonparsefileversion{0.8.3}
-\def\jsonparsefiledate{28 April 2024}
+\def\jsonparsefileversion{0.8.7}
+\def\jsonparsefiledate{8 August 2024}
\usepackage[T1]{fontenc}
\usepackage{Alegreya}
@@ -193,10 +193,13 @@
\changes{v0.5.7}{2024/04/14}{Bug fixes, key-value option setting added.}
\changes{v0.6.0}{2024/04/15}{Bug fixes, renaming of several commands.}
\changes{v0.7.0}{2024/04/18}{Renaming and rearranging of keys, escaping of special JSON escape sequences added.}
-\changes{v0.7.1}{2024/04/20}{Access to first-level keys of object added.}
+\changes{v0.7.1}{2024/04/20}{Access to top-level keys of object added.}
\changes{v0.8.0}{2024/04/24}{Internal rewrite, escaping procedures changed.}
\changes{v0.8.2}{2024/04/26}{Bug fixes, externalizing parsed data.}
\changes{v0.8.3}{2024/04/28}{Escaping of characters with special meaning in TeX.}
+\changes{v0.8.5}{2024/05/05}{Enhanced key management.}
+\changes{v0.8.6}{2024/05/09}{Bug fix in nesting function.}
+\changes{v0.8.7}{2024/08/08}{Corrections in documentation, error messages.}
\begin{document}
\vspace*{-1cm}
@@ -225,20 +228,22 @@ The package does not load any dependencies.
\end{macrodef}
The package can be loaded with the option \macro{debug}. It will then output to the log file every instance of a string, a boolean (true or false) value, a null value, a number as well as the start and end of every object and the start and end of every array that is found while parsing the JSON string or JSON file.
+This key can be set either as package option or using \macro{\JSONParseSet}. It can also be set locally as option to the commands \macro{\JSONParse} and \macro{\JSONParseFromFile}.
+
\section{Escaping and special treatment of the input}\label{sec:escaping}
In general, the package reads the JSON source as string, which means that all characters have category code 12 (other), except for spaces which have category code 10 (space). The \macro{\endlinechar} value is set to $-1$. Furthermore, if PDFLaTeX is used, the upper-half of the 8-bit range is set to ``active''. JSON, however, defines a small set of escape sequences and in order to be able to process these, the category code of the backslash is set to 0 (escpape).
JSON strings cannot contain the two characters \macro{"} and \macro{\}. These two characters need to be escaped with a preceding backslash (\macro{\}). This package therefore redefines locally the TeX control symbols \macro{\"}, \macro{\/}, \macro{\\}, \macro{\b}, \macro{\f}, \macro{\n}, \macro{\r}, \macro{\t} and \macro{\u}. These control symbols are prevented from expanding during parsing. For example, \macro{\"} is first defined as \macro{\exp_not:N \"} and only hen typeset, \macro{\"} is expanded to \macro{"}, which ensures that strings are parsed properly.
-Similarly, the control symbol \macro{\/} expands eventually to \macro{/} and \macro{\\} to \macro{\c_backslash_str} (i.\,e. a backslash with category code 12). The escape sequence \macro{\u} followed by a hex value consisting of four digits eventually eventually expands to \macro{\char"} followed by the relevant four hex digits. The JSON escape sequences \macro{\b}, \macro{\f}, \macro{\n}, \macro{\r}, \macro{\t} or \macro{\u} (followed by a hex value) eventually expand to token variables of which the contents can be set using the relevant \macro{replacement} key. See more on setting keys below in section \ref{sec:settings}.
+Similarly, the control symbol \macro{\/} expands eventually to \macro{/} and \macro{\\} to \macro{\c_backslash_str} (i.\,e. a backslash with category code 12). The escape sequence \macro{\u} followed by a hex value consisting of four digits eventually eventually expands to \macro{\char"} followed by the relevant four hex digits. The JSON escape sequences \macro{\b}, \macro{\f}, \macro{\n}, \macro{\r}, \macro{\t} or \macro{\u} (followed by a hex value) eventually expand to token variables of which the contents can be set using the relevant \macro{replacement} key. See more on setting options below in section \ref{sec:options}.
It is possible to insert TeX macros to the JSON source that will eventually be parsed when typesetting. Backslashes of TeX macros need to be escaped by another backslash. The TeX macros \macro{\"} and \macro{\\} must be escaped twice in the JSON source, so that they become \macro{\\\"} and \macro{\\\\} respectively.
\begin{macrodef}
-|\x|[<token variable name>][<key>]
+|\x|{<token variable name>}{<key>}
\end{macrodef}
-Using the control sequence \macro{\x}, it is possible to nest JSON strings into each other. The control sequence takes two arguments delimited by square brackets. The first argument represents the name of the token variable that holds the parsed JSON data where the inserted JSON string should be taken from. The second argument sets the key that should be selected. The following example shows a simple use case:
+Using the control sequence \macro{\x}, it is possible to nest JSON strings into each other. The control sequence takes two arguments delimited by curly braces. The first argument represents the name of the token variable that holds the parsed JSON data where the inserted JSON string should be taken from. The second argument sets the key that should be selected. The following example shows a simple use case:
\begin{codeexamplecolumns}
\JSONParse{\myJSONdataA}{
@@ -246,49 +251,52 @@ Using the control sequence \macro{\x}, it is possible to nest JSON strings into
}
\JSONParse{\myJSONdataB}{
- { "d" : \x[myJSONdataA][a] }
+ { "d" : \x{myJSONdataA}{a} }
}
\JSONParseValue{\myJSONdataB}{d.b}
\end{codeexamplecolumns}
+Note that the control sequence \macro{\x} is replaced by the value exactly. Therefore, if the value happens to be a string, the control sequence \macro{\x} should be placed between quotation marks (\macro{"}) in order for the resulting string to be valid JSON.
+
\begin{macrodef}
-|escape|={<all>}
-|escape|={<none>}
-|escape|={<number sign>}
-|escape|={<dollar sign>}
-|escape|={<percent sign>}
-|escape|={<ampersand>}
-|escape|={<circumflex accent>}
-|escape|={<low line>}
-|escape|={<tilde>}
+|escape|={all}
+|escape|={none}
+|escape|={number sign}
+|escape|={dollar sign}
+|escape|={percent sign}
+|escape|={ampersand}
+|escape|={circumflex accent}
+|escape|={low line}
+|escape|={tilde}
\end{macrodef}
-The key \macro{escape} can be used to convert characters that don't require escaping in JSON but in TeX into their relevant TeX escape sequences. Apart from the backslash and curly braces that need to be escaped anyways, these are the number sign, the dollar sign, the percent sign, the ampersand, the circumflex accent, the low line and the tilde. The characters can be selected individually separated by a comma (for example \macro{escape={dollar sign, circumflex accent, low line}}. With \macro{escape={all}}, all escaping sequences are selected, with \macro{escape={none}}, none is selected.
+The key \macro{escape} can be used to convert characters that don't require escaping in JSON but in TeX into the relevant TeX escape sequences. Apart from the backslash and curly braces that need to be escaped anyways, these are the number sign, the dollar sign, the percent sign, the ampersand, the circumflex accent, the low line and the tilde. The characters can be selected individually separated by a comma (for example \macro{escape={dollar sign, circumflex accent, low line}}. With \macro{escape={all}}, all escaping sequences are selected, with \macro{escape={none}}, none is selected.
The naming of the relevant characters follows their Unicode names. However, \macro{hash} exists as alias for \macro{number sign}, \macro{dollar} as alias for \macro{dollar sign}, \macro{percent} for \macro{percent sign}, \macro{circumflex} for \macro{circumflex accent} and \macro{underscore} for \macro{low line}.
+This key can be set using \macro{\JSONParseSet}. It can also be set locally as option to the commands \macro{\JSONParseValue}, \macro{\JSONParseArrayValues} and \macro{\JSONParseArrayValuesMap}.
+
\begin{macrodef}
-replacement/|backspace|={<string>}
-replacement/|formfeed|={<string>}
-replacement/|linefeed|={<string>}
-replacement/|carriage return|={<string>}
-replacement/|horizontal tab|={<string>}
+|rescan|
+|rescan|={<boolean>}
\end{macrodef}
-These keys can be used to set the replacement text for the JSON escape sequences \macro{\b} (backspace), \macro{\f} (formfeed), \macro{\n} (linefeed), \macro{\r} (carriage return) and \macro{\t} (horizontal tab). The default replacement string is a space. Only strings can be used as replacement.
+The key \macro{rescan} can be used to activate and deactivate rescanning of the output. This key is active per default. Rescanning converts all tokens to their default category codes and TeX control sequences are expanded before typesetting. Further, during the rescanning process, JSON escape sequences are replaced and characters that don't require escaping in JSON but in TeX are replaced by the relevant TeX escape sequences.
+
+This key can be set using \macro{\JSONParseSet}. It can also be set locally as option to the commands \macro{\JSONParseValue}, \macro{\JSONParseArrayValues} and \macro{\JSONParseArrayValuesMap}.
\section{Main user commands}
\begin{macrodef}
-|\JSONParse|[<file name>]{<token variable>}{<JSON string>}
+|\JSONParse|[<options>]{<token variable>}{<JSON string>}
\end{macrodef}
The command \macro{\JSONParse} is used to parse a JSON string and store the parsed result in a token variable (a property list). The second argument takes the name of the token variable that is created by the command. The third argument takes the JSON string to be parsed.
For example, using \macro{\JSONParse{\myJSONdata}{ { "key" : "value" } }}, the relevant JSON string will be parsed and the result stored in the token variable \macro{\myJSONdata} as property list. In this case, the property list only consists of one entry with the key \macro{key} and the value \macro{value}. The command \macro{\JSONParseValue{\myJSONdata}{key}}, for example, can then be used to extract the relevant value from this property list (see the description below).
-The first optinal argument can be used to externalize the parsed JSON data to a file. See more on externalization in section \ref{sec:externalizing} below.
+The first optional argument can be used to pass options to the command that are then applied locally.
\begin{macrodef}
-|\JSONParseFromFile|[<file name>]{<token variable>}{<JSON file>}
+|\JSONParseFromFile|[<options>]{<token variable>}{<JSON file>}
\end{macrodef}
The command \macro{\JSONParseFromFile} is used to parse a JSON file and store the parsed result in a token variable (a property list). It works the same way as \macro{\JSONParse}, but instead of a JSON string, it takes as third argument the path to the JSON file relative to the working directory.
@@ -298,8 +306,7 @@ The command \macro{\JSONParseFromFile} is used to parse a JSON file and store th
The command \macro{\JSONParseKeys} is used to store all top-level keys of a parsed JSON object as array into a token variable. The command takes as first argument the token variable that holds the parsed JSON data. The second argument takes the token variable that is assigned a JSON array containing the top-level keys of the object represented by the token variable in the first argument. The token variable to store the keys as array is created if it does not exist.
\begin{macrodef}
-|\JSONParseValue|{<token variable>}{<key>}
-|\JSONParseValue*|{<token variable>}{<key>}
+|\JSONParseValue|[<options>]{<token variable>}{<key>}
|\JSONParseExpandableValue|{<token variable>}{<key>}
\end{macrodef}
The command \macro{\JSONParseValue} is used to select values from the token variable (property list) that has been created using the commands \macro{\JSONParse} or \macro{\JSONParseFromFile}. The first argument takes the token variable that holds the parsed JSON data. The second argument takes the key to select the relevant entry from the parsed JSON data using JavaScript syntax.
@@ -308,15 +315,14 @@ If the JSON string \macro{{ "key" : "value" }} is parsed into the token variable
Nested objects and arrays are assigned keys that adhere to JavaScript syntax. For example, if the JSON string \macro{{ "outer_key" : { "inner_key" : "value" } }} is parsed into the token variable \macro{\myJSONdata}, to select the value associated with the key \macro{inner_key}, the command \macro{\JSONParseValue{\myJSONdata}{outer_key.inner_key}} can be used. To give an example for an array, the command \macro{\JSONParseValue{\myJSONdata}{key[0]}} selects the first value of the array associated with the key \macro{key} in the JSON string \macro{{ "key" : [ "one" , "two" ] }}.
-The non-starred variant of this command, \macro{\JSONParseValue}, rescans the token list before it is typeset (which means that all category codes that may have been changed before are set to the default values). The starred variant, \macro{\JSONParseValue*}, does not rescan the ouput. The non-starred variants of this and similar commands should therefore not be placed in a \macro{\JSONParse} command.
+The first optional argument can be used to pass options to the command, such as \macro{escape} or \macro{rescan}, that are then applied locally. When the option \macro{rescan} is used, the token list is rescanned before it is typeset (which means that all category codes that may have been changed before are set to the default values). This is the default behaviour. If rescanning is not desired, pass the option \macro{rescan=false} to the command.
When a key is associated with an object or array, the whole object or array is output as JSON string. The special key \macro{.} (or the string defined using the key \macro{child sep}) returns the whole JSON object as string.
Whole objects or arrays can also be output as JSON string for further use in other macros using the expandable command \macro{\JSONParseExpandableValue}.
\begin{macrodef}
-|\JSONParseArrayValues|{<token variable>}{<key>}[<subkey>]{<string>}
-|\JSONParseArrayValues*|{<token variable>}{<key>}[<subkey>]{<string>}
+|\JSONParseArrayValues|[<options>]{<token variable>}{<key>}[<subkey>]{<string>}
\end{macrodef}
The command \macro{\JSONParseArrayValues} is used to select all values from an array from a parsed JSON string or JSON file. The first argument takes the token variable that holds the parsed JSON data. The second argument takes the key to select the relevant entry from the parsed JSON data using JavaScript syntax. The third argument is optional and can be used to pass a subkey, i.\,e. a key that is used to select a value for every item. The last argument takes a string that is inserted between all values when they are typeset.
@@ -339,11 +345,11 @@ For example, let us assume the following JSON data structure is parsed into the
Then, when using \macro{\JSONParseArrayValues{\myJSONdata}{array}[key_a]{, }}, `one, three' is typeset to the document.
-The starred variant, \macro{\JSONParseArrayValues*}, does not rescan the token lists before they are typeset.
+The first optional argument can be used to pass options to the command, such as \macro{escape} or \macro{rescan}, that are then applied locally.
\begin{macrodef}
-|\JSONParseArrayValuesMap|{<token variable>}{<key>}[<subkey>]{<command name>}
-|\JSONParseArrayValuesMap*|{<token variable>}{<key>}[<subkey>]{<command name>}
+|\JSONParseArrayValuesMap|[<options>]{<token variable>}{<key>}[<subkey>]
+ {<command name>}
\end{macrodef}
The command \macro{\JSONParseArrayValuesMap} takes the same first three arguments as the command \macro{\JSONParseArrayValues} and works in a similar way. However, instead of a string that is added between the array items, it takes a command name as fourth argument. This command can be defined beforehand and will be called for every array item. Inside its definition, the commands \macro{\JSONParseArrayIndex}, \macro{\JSONParseArrayKey} and \macro{\JSONParseArrayValue} can be used which are updated for each item and output the index, the key and the value of the current item respectively.
@@ -362,7 +368,7 @@ For example, let us assume the same JSON data structure as defined above parsed
\end{itemize}
\end{codeexamplecolumns}
-The starred variant, \macro{\JSONParseArrayValuesMap*}, does not rescan the token lists before they are typeset.
+The first optional argument can be used to pass options to the command, such as \macro{escape} or \macro{rescan}, that are then applied locally.
\begin{macrodef}
|\JSONParseArrayCount|{<token variable>}{<key>}
@@ -371,45 +377,89 @@ The command \macro{\JSONParseArrayCount} takes as first argument a token variabl
\subsection{Externalising parsed JSON data}\label{sec:externalizing}
-Parsing large JSON files can take quite a while. In order to speed up follow-up compilation runs, this package provides a way to store parsed JSON data for future use. The first opional argument of the commands \macro{\JSONParse} and \macro{\JSONParseFromFile} can be used to provide the name of a file (without file extension) that will be created in the working directory and which stores the relevant information. The file name will have the extension \macro{.jsonparse}. If a file with the same name and file extension already exists, an error will be issued. Once the file has been created, the package will try to load the data from this file instead of parsing the JSON data again.
+Parsing large JSON files can take quite a while. In order to speed up follow-up compilation runs, this package provides a way to store parsed JSON data for future use. Once a file for externalization has been created, the package will try to load the data from this file instead of parsing the JSON data again.
+
+\begin{macrodef}
+|externalize|
+|externalize|={<boolean>}
+\end{macrodef}
+With the key \macro{externalize} set (or set to true), a file will be created in the working directory that stores the externalization of the parsed JSON data. The file name gets the extension \macro{.jsonparse}. The file name is created automatically and consists of the name of the current file followed by an underscore and the name of the token variable where the JSON data is stored into. If a file with the same name and file extension already exists, an error will be issued.
+
+This key can be set using \macro{\JSONParseSet}. It can also be set locally as option to the commands \macro{\JSONParse} and \macro{\JSONParseFromFile}.
+
+\begin{macrodef}
+|externalize prefix|={<string>}
+\end{macrodef}
+With the key \macro{externalize prefix}, a prefix can be defined that is added to the file name. Per default this is an empty string.
+
+This key can be set using \macro{\JSONParseSet}. It can also be set locally as option to the commands \macro{\JSONParse} and \macro{\JSONParseFromFile}.
+
+\begin{macrodef}
+|externalize file name|={<token list>}
+\end{macrodef}
+The key \macro{externalize file name} sets the schema for the file name. The default schema is as follows:
+
+\begin{codeexample}
+\l_jsonparse_externalize_prefix_str \c_sys_jobname_str
+ \c_underscore_str \l_jsonparse_current_prop_str
+\end{codeexample}
+
+The token variable \macro{\l_jsonparse_externalize_prefix_str} contains the prefix that is set using the key \macro{externalize prefix}. \macro{\c_sys_jobname_str} holds the name of the current file (the current job name), \macro{\c_underscore_str} is an underscore and the token variable \macro{\l_jsonparse_current_prop_str} contains the name of the property list where the relevant JSON data is stored into.
+
+This key can be set using \macro{\JSONParseSet}. It can also be set locally as option to the commands \macro{\JSONParse} and \macro{\JSONParseFromFile}.
\begin{macrodef}
|\JSONParsePut|{<token variable>}{<key>}[<JSON string>]
\end{macrodef}
The command \macro{\JSONParsePut} is used by the externalization procedure to re-read already parsed JSON data to the main file. It just adds a key-value pair to the property list (where the value part is read as string). Hence, it can also be used to append more entries to an already existing property list containing parsed JSON data.
-\subsection{Changing separators, output and other settings}\label{sec:settings}
+\subsection{Changing separators, output and other options}\label{sec:options}
The package provides a set of keys can be set to change the separators used to select the relevant value in the JSON structure, the output that is generated from the JSON data as well as other things.
\begin{macrodef}
-|\JSONParseSet|{<key-value list>}
+|\JSONParseSet|{<options>}
\end{macrodef}
-The commands \macro{\JSONParseSet} can be used to specify settings via key-value pairs (separated by commas). Keys that are presented here as a subkey (i.\,e. preceded by another key and a slash) can also be set using the syntax \macro{key={subkey}} and multiple subkeys belonging to one key can be combined using a comma as separator. The following keys are available:
+The commands \macro{\JSONParseSet} can be used to specify options via key-value pairs (separated by commas). Keys that are presented here as a subkey (i.\,e. preceded by another key and a slash) can also be set using the syntax \macro{key={subkey}} and multiple subkeys belonging to one key can be combined using a comma as separator. Several user commands allow to pass keys directly which are then applied locally. The following keys are available:
\begin{macrodef}
separator/|child|={<string>}
+separator/|array left|={<string>}
+separator/|array right|={<string>}
\end{macrodef}
-With the key \macro{child sep}, the separator for child objects that is used in the syntax to select a specific value in the JSON data structure can be changed. Per default, the child separator is a dot (\macro{.}). Changing the separator can be useful if keys in the JSON structure already use these characters.
+With the key \macro{separator/child}, the separator for child objects that is used in the syntax to select a specific value in the JSON data structure can be changed. Per default, the child separator is a dot (\macro{.}). Changing the separator can be useful if keys in the JSON structure already use these characters.
+
+With the keys \macro{separator/array left} and \macro{separator/array right}, the separators for arrays that are used in the syntax to select a specific value in the JSON data structure can be changed. Per default, the separators are square brackets (\macro{[} and \macro{]}). Changing the separators can be useful if keys in the JSON structure already use these characters. Changing these separators to curly braces (\macro{{}}) is not supported due to their grouping function in TeX.
+
+These keys can be set using \macro{\JSONParseSet}. They can also be set locally as option to the commands \macro{\JSONParse} and \macro{\JSONParseFromFile}.
\begin{macrodef}
-separator/|array left|={<string>}
-separator/|array right|={<string>}
+|zero-based|
+|zero-based|={<boolean>}
\end{macrodef}
-With the keys \macro{array sep left} and \macro{array sep right}, the separators for arrays that are used in the syntax to select a specific value in the JSON data structure can be changed. Per default, the separators are square brackets (\macro{[} and \macro{]}). Changing the separators can be useful if keys in the JSON structure already use these characters.
+If set (or explicitly set to \macro{true}), the key \macro{zero-based} sets the numbering of the index of array items to zero-based. If set to false, the indexing starts with one instead. Per default, the package uses zero-based indexing to resemble JavaScript notation.
+
+This key can be set using \macro{\JSONParseSet}. It can also be set locally as option to the commands \macro{\JSONParse} and \macro{\JSONParseFromFile}.
\begin{macrodef}
-replacement/|true|={<string>}
-replacement/|false|={<string>}
-replacement/|null|={<string>}
+replace/|true|={<string>}
+replace/|false|={<string>}
+replace/|null|={<string>}
\end{macrodef}
-With the keys \macro{true}, \macro{false} and \macro{null}, the string that is typeset for true, false and null values can be changed. The default strings that are typeset are \macro{true}, \macro{false} and \macro{null} respectively. Only strings can be used as replacement.
+With the keys \macro{replace/true}, \macro{replace/false} and \macro{replace/null}, the string that is typeset for true, false and null values can be changed. The default strings that are typeset are \macro{true}, \macro{false} and \macro{null} respectively. Only strings can be used as replacement. These replacements take place already during parsing.
+
+These keys can be set using \macro{\JSONParseSet}. They can also be set locally as option to the commands \macro{\JSONParse} and \macro{\JSONParseFromFile}.
\begin{macrodef}
-|array index zero-based|
-|array index zero-based|={<boolean>}
+replace/|backspace|={<string>}
+replace/|formfeed|={<string>}
+replace/|linefeed|={<string>}
+replace/|carriage return|={<string>}
+replace/|horizontal tab|={<string>}
\end{macrodef}
-If set (or explicitly set to \macro{true}), the key \macro{array index zero-based} sets the numbering of the index of array items to zero-based. If set to false, the indexing starts with one instead. Per default, the package uses zero-based indexing to resemble JavaScript notation.
+These keys can be used to set the replacement text for the JSON escape sequences \macro{\b} (backspace), \macro{\f} (formfeed), \macro{\n} (linefeed), \macro{\r} (carriage return) and \macro{\t} (horizontal tab). The default replacement string is a space. Only strings can be used as replacement. These replacements take place only during typesetting.
+
+These keys can be set using \macro{\JSONParseSet}. They can also be set locally as option to the commands \macro{\JSONParseValue}, \macro{\JSONParseArrayValues} and \macro{\JSONParseArrayValuesMap}.
\subsection{L3 commands}
diff --git a/macros/latex/contrib/jsonparse/jsonparse.sty b/macros/latex/contrib/jsonparse/jsonparse.sty
index 680e89bfca..514064d92a 100644
--- a/macros/latex/contrib/jsonparse/jsonparse.sty
+++ b/macros/latex/contrib/jsonparse/jsonparse.sty
@@ -10,15 +10,16 @@
%
% This work has the LPPL maintenance status `maintained'.
%
-\ProvidesExplPackage {jsonparse} {2024-04-28} {0.8.3}
+\ProvidesExplPackage {jsonparse} {2024-08-08} {0.8.7}
{JSON Parse}
\bool_new:N \l__jsonparse_debug_mode_bool
-\keys_define:nn { jsonparse } {
+\keys_define:nn { jsonparse / global } {
debug .bool_set:N = \l__jsonparse_debug_mode_bool ,
debug .default:n = { true } ,
+ debug .initial:n = { false }
}
-\ProcessKeyOptions [ jsonparse ]
+\ProcessKeyOptions [ jsonparse / global ]
\msg_new:nnn { jsonparse } { debug-info } {
#1
@@ -43,7 +44,7 @@
\msg_new:nnn { jsonparse } { file-exists } {
\msg_error_text:n { jsonparse } \iow_newline:
- File ~ #1 ~ already ~ existing.
+ File ~ #1 ~ already ~ existing.
}
\msg_new:nnn { jsonparse } { escape-in-key } {
@@ -56,6 +57,11 @@
Escape ~ character ~ #1 ~ not ~ found.
}
+\msg_new:nnn { jsonparse } { unknown-key } {
+ \msg_warning_text:n { jsonparse } \iow_newline:
+ Ignoring ~ unknown ~ key: ~ #1.
+}
+
\msg_new:nnn { jsonparse } { saving-external } {
\msg_info_text:n { jsonparse } \iow_newline:
Saving ~ external ~ file: ~ #1.
@@ -67,14 +73,21 @@
}
% ===
-
+
+\str_new:N \l_jsonparse_externalize_prefix_str
+\str_new:N \l_jsonparse_current_prop_str
+
+\tl_new:N \l__jsonparse_externalize_file_name_tl
+
\str_new:N \l__jsonparse_child_sep_str
\str_new:N \l__jsonparse_array_sep_left_str
\str_new:N \l__jsonparse_array_sep_right_str
\str_new:N \l__jsonparse_true_str
\str_new:N \l__jsonparse_false_str
\str_new:N \l__jsonparse_null_str
-\bool_new:N \l__jsonparse_array_index_zero_based_bool
+\bool_new:N \l__jsonparse_zero_based_bool
+\bool_new:N \l__jsonparse_rescan_bool
+\bool_new:N \l__jsonparse_externalize_bool
\str_new:N \l__jsonparse_backspace_str
\str_new:N \l__jsonparse_formfeed_str
@@ -82,6 +95,8 @@
\str_new:N \l__jsonparse_carriage_return_str
\str_new:N \l__jsonparse_horizontal_tab_str
+\clist_new:N \l__jsonparse_unused_keys_clist
+
\clist_new:N \l__jsonparse_escape_tex_chars_clist
\clist_set:Nn \l__jsonparse_escape_tex_chars_clist {
number_sign ,
@@ -98,35 +113,48 @@
\bool_new:c { l__jsonparse_escape_ #1 _bool }
}
-\keys_define:nn { jsonparse } {
- array ~ index ~ zero-based .bool_set:N = \l__jsonparse_array_index_zero_based_bool ,
- array ~ index ~ zero-based .default:n = { true } ,
- array ~ index ~ zero-based .initial:n = { true } ,
- separator .code:n = { \keys_set:nn { jsonparse / separator } {#1} },
- separator / child .str_set:N = \l__jsonparse_child_sep_str ,
- separator / child .initial:n = { . } ,
- separator / array ~ left .str_set:N = \l__jsonparse_array_sep_left_str ,
- separator / array ~ left .initial:n = { [ } ,
- separator / array ~ right .str_set:N = \l__jsonparse_array_sep_right_str ,
- separator / array ~ right .initial:n = { ] } ,
- replacement .code:n = { \keys_set:nn { jsonparse / replacement } {#1} },
- replacement / true .str_set:N = \l__jsonparse_true_str ,
- replacement / true .initial:n = { true } ,
- replacement / false .str_set:N = \l__jsonparse_false_str ,
- replacement / false .initial:n = { false } ,
- replacement / null .str_set:N = \l__jsonparse_null_str ,
- replacement / null .initial:n = { null } ,
- replacement / backspace .str_set:N = \l__jsonparse_backspace_str ,
- replacement / backspace .initial:n = { ~ } ,
- replacement / formfeed .str_set:N = \l__jsonparse_formfeed_str ,
- replacement / formfeed .initial:n = { ~ } ,
- replacement / linefeed .str_set:N = \l__jsonparse_linefeed_str ,
- replacement / linefeed .initial:n = { ~ } ,
- replacement / carriage ~ return .str_set:N = \l__jsonparse_carriage_return_str ,
- replacement / carriage ~ return .initial:n = { ~ } ,
- replacement / horizontal ~ tab .str_set:N = \l__jsonparse_horizontal_tab_str ,
- replacement / horizontal ~ tab .initial:n = { ~ } ,
- escape .code:n = {
+\keys_define:nn { jsonparse / parse } {
+ externalize .bool_set:N = \l__jsonparse_externalize_bool ,
+ externalize .default:n = { true } ,
+ externalize .initial:n = { false } ,
+ externalize ~ prefix .str_set:N = \l_jsonparse_externalize_prefix_str ,
+ externalize ~ prefix .initial:n = { } ,
+ externalize ~ file ~ name .tl_set:N = \l__jsonparse_externalize_file_name_tl ,
+ externalize ~ file ~ name .initial:n = {
+ \l_jsonparse_externalize_prefix_str \c_sys_jobname_str \c_underscore_str \l_jsonparse_current_prop_str
+ } ,
+ separator .code:n = { \keys_set:nn { jsonparse / parse / separator } {#1} } ,
+ separator / child .str_set:N = \l__jsonparse_child_sep_str ,
+ separator / child .initial:n = { . } ,
+ separator / array ~ left .str_set:N = \l__jsonparse_array_sep_left_str ,
+ separator / array ~ left .initial:n = { [ } ,
+ separator / array ~ right .str_set:N = \l__jsonparse_array_sep_right_str ,
+ separator / array ~ right .initial:n = { ] } ,
+ zero-based .bool_set:N = \l__jsonparse_zero_based_bool ,
+ zero-based .default:n = { true } ,
+ zero-based .initial:n = { true } ,
+ replace .code:n = { \keys_set:nn { jsonparse / parse / replace } {#1} } ,
+ replace / true .str_set:N = \l__jsonparse_true_str ,
+ replace / true .initial:n = { true } ,
+ replace / false .str_set:N = \l__jsonparse_false_str ,
+ replace / false .initial:n = { false } ,
+ replace / null .str_set:N = \l__jsonparse_null_str ,
+ replace / null .initial:n = { null }
+}
+
+\keys_define:nn { jsonparse / typeset } {
+ replace .code:n = { \keys_set:nn { jsonparse / typeset / replace } {#1} } ,
+ replace / backspace .str_set:N = \l__jsonparse_backspace_str ,
+ replace / backspace .initial:n = { ~ } ,
+ replace / formfeed .str_set:N = \l__jsonparse_formfeed_str ,
+ replace / formfeed .initial:n = { ~ } ,
+ replace / linefeed .str_set:N = \l__jsonparse_linefeed_str ,
+ replace / linefeed .initial:n = { ~ } ,
+ replace / carriage ~ return .str_set:N = \l__jsonparse_carriage_return_str ,
+ replace / carriage ~ return .initial:n = { ~ } ,
+ replace / horizontal ~ tab .str_set:N = \l__jsonparse_horizontal_tab_str ,
+ replace / horizontal ~ tab .initial:n = { ~ } ,
+ escape .code:n = {
\str_case:nnF {#1} {
{ all } {
\clist_map_inline:Nn \l__jsonparse_escape_tex_chars_clist {
@@ -168,11 +196,27 @@
}
}
}
+ } ,
+ escape .groups:n = { output } ,
+ rescan .bool_set:N = \l__jsonparse_rescan_bool ,
+ rescan .default:n = { true } ,
+ rescan .initial:n = { true } ,
+ rescan .groups:n = { output }
+}
+
+\cs_new:Npn \__jsonparse_warning_unused_keys: {
+ \clist_map_inline:Nn \l__jsonparse_unused_keys_clist {
+ \msg_warning:nne { jsonparse } { unknown-key } {
+ ##1
+ }
}
}
\NewDocumentCommand { \JSONParseSet } { m } {
- \keys_set:nn { jsonparse } {#1}
+ \keys_set_known:nnN { jsonparse / global } {#1} \l__jsonparse_unused_keys_clist
+ \keys_set_known:noN { jsonparse / parse } { \l__jsonparse_unused_keys_clist } \l__jsonparse_unused_keys_clist
+ \keys_set_known:noN { jsonparse / typeset } { \l__jsonparse_unused_keys_clist } \l__jsonparse_unused_keys_clist
+ \__jsonparse_warning_unused_keys:
}
% ===
@@ -181,6 +225,7 @@
\cs_new:Npn \str_casefold:n { \str_foldcase:n }
}
+\cs_generate_variant:Nn \file_input:n { e }
\cs_generate_variant:Nn \tl_gset_rescan:Nnn { Nne }
\cs_generate_variant:Nn \tl_range:nnn { nne , nen }
\cs_generate_variant:Nn \tl_range:Nnn { Nne , Nen }
@@ -193,14 +238,20 @@
\cs_generate_variant:Nn \str_case_e:nn { en }
\cs_generate_variant:Nn \str_casefold:n { o }
\cs_generate_variant:Nn \str_head_ignore_spaces:n { o }
+\cs_generate_variant:Nn \str_set:Nn { Ne }
\cs_generate_variant:Nn \prop_gput:Nnn { Nee }
\cs_generate_variant:Nn \prop_item:Nn { Ne , ce }
\cs_generate_variant:Nn \prop_put:Nnn { Nen , Nee }
+\cs_generate_variant:Nn \keys_set_known:nnN { noN }
\cs_generate_variant:Nn \iow_now:Nn { Ne }
+\cs_generate_variant:Nn \iow_open:Nn { Ne }
\cs_generate_variant:Nn \msg_error:nnn { nno }
\cs_generate_variant:Nn \msg_error:nnnn { nnoo }
+\cs_generate_variant:Nn \msg_info:nnn { nne }
\cs_generate_variant:Nn \msg_log:nnn { nne }
+\cs_generate_variant:Nn \msg_warning:nnn { nne }
+\prg_generate_conditional_variant:Nnn \file_if_exist:n { e } { T , TF }
\prg_generate_conditional_variant:Nnn \tl_if_eq:nn { en } { T }
\prg_generate_conditional_variant:Nnn \tl_if_head_eq_charcode:nN { oN } { T , TF }
\prg_generate_conditional_variant:Nnn \tl_if_in:nn { nV } { F }
@@ -224,7 +275,7 @@
\int_new:N \l__jsonparse_array_count_last_int
\bool_new:N \l__jsonparse_prop_map_first_bool
-\bool_new:N \l__jsonparse_load_external_bool
+\bool_new:N \l__jsonparse_externalize_load_bool
\ior_new:N \l__jsonparse_json_ior
\iow_new:N \g__jsonparse_externalize_iow
@@ -366,10 +417,10 @@
\bool_if:NT \l__jsonparse_debug_mode_bool {
\msg_log:nnn { jsonparse } { debug-info } {
(arr ~ begin)
- }
+ }
}
\int_zero:N \l__jsonparse_array_index_int
- \bool_if:NT \l__jsonparse_array_index_zero_based_bool {
+ \bool_if:NT \l__jsonparse_zero_based_bool {
\int_decr:N \l__jsonparse_array_index_int
}
\tl_set_eq:NN \l__jsonparse_object_array_key_tl \l__jsonparse_key_tl
@@ -412,7 +463,7 @@
\tl_if_head_eq_charcode:oNTF { \l__jsonparse_remainder_tl } : {
\tl_remove_once:NV \l__jsonparse_remainder_tl \c_colon_str
\tl_set:Ne \l__jsonparse_key_tl { \l__jsonparse_prefix_tl #1 }
- } {
+ } {
\tl_set:Nn \l__jsonparse_val_tl {#1}
\prop_gput:Nee \g_jsonparse_entries_prop
{ \l__jsonparse_key_tl } { \l__jsonparse_val_tl }
@@ -515,7 +566,7 @@
\tl_if_empty:NF \l__jsonparse_remainder_tl {
\exp_args:No \jsonparse_parse:n { \l__jsonparse_remainder_tl }
}
-}
+}
\cs_new_protected:Npn \jsonparse_filter:Nn #1#2 {
\prop_clear:N \l__jsonparse_temp_prop
@@ -542,98 +593,117 @@
\prop_if_exist:NF #1 {
\prop_new:N #1
}
- \prop_gput:Nnn #1 { #2 } { #3 }
+ \prop_gput:Nnn #1 {#2} {#3}
}
\cs_new:Npn \__jsonparse_externalize:Nn #1#2 {
- \file_if_exist:nTF {#2} {
- \msg_error:nnn { jsonparse } { file-exists }
+ \file_if_exist:eTF {#2} {
+ \msg_error:nne { jsonparse } { file-exists }
{#2}
} {
- \iow_open:Nn \g__jsonparse_externalize_iow {#2}
+ \iow_open:Ne \g__jsonparse_externalize_iow {#2}
\prop_map_inline:Nn #1 {
\iow_now:Nn \g__jsonparse_externalize_iow {
\JSONParsePut {#1} {##1} {##2}
}
}
\iow_close:N \g__jsonparse_externalize_iow
- \msg_info:nnn { jsonparse } { saving-external }
+ \msg_info:nne { jsonparse } { saving-external }
{#2}
}
}
% ===
-\NewDocumentCommand { \JSONParse } { o m +v } {
- \bool_set_false:N \l__jsonparse_load_external_bool
- \tl_if_novalue:nF {#1} {
- \file_if_exist:nT { #1 .jsonparse } {
- \bool_set_true:N \l__jsonparse_load_external_bool
- }
+\cs_new:Npn \__json_nested_construct_cs:Nnn #1 #2 #3 {
+ \cs_set:Npn #1 #2 ##1 #3 #2 ##2 #3 {
+ \prop_item:ce {##1} {##2}
}
- \bool_if:NTF \l__jsonparse_load_external_bool {
- \msg_info:nnn { jsonparse } { loading-external }
- { #1 .jsonparse }
- \file_input:n { #1 .jsonparse }
- } {
- \prop_new:N #2
- \tl_gclear:N \g__jsonparse_json_tl
- \group_begin:
- \cs_set:Npn \" { \exp_not:N \" }
- \cs_set:Npn \/ { \exp_not:N \/ }
- \cs_set:Npn \\ { \exp_not:N \\ }
- \cs_set:Npn \b { \exp_not:N \b }
- \cs_set:Npn \f { \exp_not:N \f }
- \cs_set:Npn \n { \exp_not:N \n }
- \cs_set:Npn \r { \exp_not:N \r }
- \cs_set:Npn \t { \exp_not:N \t }
- \cs_set:Npn \u { \exp_not:N \u }
- \cs_set:Npn \x [ ##1 ] [ ##2 ] { \prop_item:ce {##1} {##2} }
- \tl_gset_rescan:Nne \g__jsonparse_json_tl { \cctab_select:N \c__jsonparse_json_escape_cctab } {#3}
- \exp_args:NNe \jsonparse_parse_to_prop:Nn #2 { \g__jsonparse_json_tl }
- \group_end:
- \tl_if_novalue:nF {#1} {
- \__jsonparse_externalize:Nn #2 { #1 .jsonparse }
+}
+\cs_generate_variant:Nn \__json_nested_construct_cs:Nnn { Noo }
+
+\NewDocumentCommand { \JSONParse } { O{} m +v } {
+ \group_begin:
+ \str_set:Ne \l_jsonparse_current_prop_str { \cs_to_str:N #2 }
+ \keys_set_known:nnN { jsonparse / global } {#1} \l__jsonparse_unused_keys_clist
+ \keys_set_known:noN { jsonparse / parse } { \l__jsonparse_unused_keys_clist } \l__jsonparse_unused_keys_clist
+ \__jsonparse_warning_unused_keys:
+ \bool_set_false:N \l__jsonparse_externalize_load_bool
+ \bool_if:NT \l__jsonparse_externalize_bool {
+ \file_if_exist:eT { \l__jsonparse_externalize_file_name_tl .jsonparse } {
+ \bool_set_true:N \l__jsonparse_externalize_load_bool
+ }
}
- }
+ \bool_if:NTF \l__jsonparse_externalize_load_bool {
+ \msg_info:nne { jsonparse } { loading-external }
+ { \l__jsonparse_externalize_file_name_tl .jsonparse }
+ \file_input:e { \l__jsonparse_externalize_file_name_tl .jsonparse }
+ } {
+ \prop_new:N #2
+ \tl_gclear:N \g__jsonparse_json_tl
+ \group_begin:
+ \cs_set:Npn \" { \exp_not:N \" }
+ \cs_set:Npn \/ { \exp_not:N \/ }
+ \cs_set:Npn \\ { \exp_not:N \\ }
+ \cs_set:Npn \b { \exp_not:N \b }
+ \cs_set:Npn \f { \exp_not:N \f }
+ \cs_set:Npn \n { \exp_not:N \n }
+ \cs_set:Npn \r { \exp_not:N \r }
+ \cs_set:Npn \t { \exp_not:N \t }
+ \cs_set:Npn \u { \exp_not:N \u }
+ \__json_nested_construct_cs:Noo \x \c_left_brace_str \c_right_brace_str
+ \tl_gset_rescan:Nne \g__jsonparse_json_tl { \cctab_select:N \c__jsonparse_json_escape_cctab } {#3}
+ \exp_args:NNe \jsonparse_parse_to_prop:Nn #2 { \g__jsonparse_json_tl }
+ \group_end:
+ \bool_if:NT \l__jsonparse_externalize_bool {
+ \__jsonparse_externalize:Nn #2 { \l__jsonparse_externalize_file_name_tl .jsonparse }
+ }
+ }
+ \group_end:
}
-\NewDocumentCommand { \JSONParseFromFile } { o m m } {
+\NewDocumentCommand { \JSONParseFromFile } { O{} m m } {
\file_if_exist:nF {#3} {
\msg_error:nnn { jsonparse } { file-not-found }
{#3}
}
- \bool_set_false:N \l__jsonparse_load_external_bool
- \tl_if_novalue:nF {#1} {
- \file_if_exist:nT { #1 .jsonparse } {
- \bool_set_true:N \l__jsonparse_load_external_bool
+ \group_begin:
+ \str_set:Ne \l_jsonparse_current_prop_str { \cs_to_str:N #2 }
+ \keys_set_known:nnN { jsonparse / global } {#1} \l__jsonparse_unused_keys_clist
+ \keys_set_known:noN { jsonparse / parse } { \l__jsonparse_unused_keys_clist } \l__jsonparse_unused_keys_clist
+ \__jsonparse_warning_unused_keys:
+ \bool_set_false:N \l__jsonparse_externalize_load_bool
+ \bool_if:NT \l__jsonparse_externalize_bool {
+ \file_if_exist:eT { \l__jsonparse_externalize_file_name_tl .jsonparse } {
+ \bool_set_true:N \l__jsonparse_externalize_load_bool
+ }
}
- }
- \bool_if:NTF \l__jsonparse_load_external_bool {
- \msg_info:nnn { jsonparse } { loading-external }
- { #1 .jsonparse }
- \file_input:n { #1 .jsonparse }
- } {
- \prop_new:N #2
- \tl_gclear:N \g__jsonparse_json_tl
- \group_begin:
- \cs_set:Npn \" { \exp_not:N \" }
- \cs_set:Npn \/ { \exp_not:N \/ }
- \cs_set:Npn \\ { \exp_not:N \\ }
- \cs_set:Npn \b { \exp_not:N \b }
- \cs_set:Npn \f { \exp_not:N \f }
- \cs_set:Npn \n { \exp_not:N \n }
- \cs_set:Npn \r { \exp_not:N \r }
- \cs_set:Npn \t { \exp_not:N \t }
- \cs_set:Npn \u { \exp_not:N \u }
- \cs_set:Npn \x [ ##1 ] [ ##2 ] { \prop_item:ce {##1} {##2} }
- \file_get:nnN {#3} { \cctab_select:N \c__jsonparse_json_escape_cctab } \g__jsonparse_json_tl
- \exp_args:NNe \jsonparse_parse_to_prop:Nn #2 { \g__jsonparse_json_tl }
- \group_end:
- \tl_if_novalue:nF {#1} {
- \__jsonparse_externalize:Nn #2 { #1 .jsonparse }
+ \bool_if:NTF \l__jsonparse_externalize_load_bool {
+ \msg_info:nne { jsonparse } { loading-external }
+ { \l__jsonparse_externalize_file_name_tl .jsonparse }
+ \file_input:e { \l__jsonparse_externalize_file_name_tl .jsonparse }
+ } {
+ \prop_new:N #2
+ \tl_gclear:N \g__jsonparse_json_tl
+ \group_begin:
+ \cs_set:Npn \" { \exp_not:N \" }
+ \cs_set:Npn \/ { \exp_not:N \/ }
+ \cs_set:Npn \\ { \exp_not:N \\ }
+ \cs_set:Npn \b { \exp_not:N \b }
+ \cs_set:Npn \f { \exp_not:N \f }
+ \cs_set:Npn \n { \exp_not:N \n }
+ \cs_set:Npn \r { \exp_not:N \r }
+ \cs_set:Npn \t { \exp_not:N \t }
+ \cs_set:Npn \u { \exp_not:N \u }
+ \cs_set:Npn \x [ ##1 ] [ ##2 ] { \prop_item:ce {##1} {##2} }
+ \file_get:nnN {#3} { \cctab_select:N \c__jsonparse_json_escape_cctab } \g__jsonparse_json_tl
+ \exp_args:NNe \jsonparse_parse_to_prop:Nn #2 { \g__jsonparse_json_tl }
+ \group_end:
+ \bool_if:NT \l__jsonparse_externalize_bool {
+ \__jsonparse_externalize:Nn #2 { \l__jsonparse_externalize_file_name_tl .jsonparse }
+ }
}
- }
+ \group_end:
}
\NewExpandableDocumentCommand { \JSONParseExpandableValue } { m m } {
@@ -682,12 +752,16 @@
\group_end:
}
-\NewDocumentCommand { \JSONParseValue } { s m m } {
- \bool_if:NTF #1 {
- \prop_item:Ne #2 {#3}
- } {
- \exp_args:Ne \__jsonparse_rescan:n { \prop_item:Ne #2 {#3} }
- }
+\NewDocumentCommand { \JSONParseValue } { O{} m m } {
+ \group_begin:
+ \keys_set_known:nn { jsonparse / typeset } {#1} \l__jsonparse_unused_keys_clist
+ \__jsonparse_warning_unused_keys:
+ \bool_if:NTF \l__jsonparse_rescan_bool {
+ \exp_args:Ne \__jsonparse_rescan:n { \prop_item:Ne #2 {#3} }
+ } {
+ \prop_item:Ne #2 {#3}
+ }
+ \group_end:
}
\NewDocumentCommand { \JSONParseKeys } { m m } {
@@ -700,7 +774,7 @@
\tl_if_in:nVF {##1} \l__jsonparse_child_sep_str {
\bool_if:NTF \l__jsonparse_prop_map_first_bool {
\bool_set_false:N \l__jsonparse_prop_map_first_bool
- } {
+ } {
\tl_put_right:Nn \l__jsonparse_temp_tl { , }
}
\tl_put_right:Nn \l__jsonparse_temp_tl { " ##1 " }
@@ -710,8 +784,10 @@
\tl_set_eq:NN #2 \l__jsonparse_temp_tl
}
-\NewDocumentCommand { \JSONParseArrayValues } { s m m O{} m } {
+\NewDocumentCommand { \JSONParseArrayValues } { O{} m m O{} m } {
\group_begin:
+ \keys_set_known:nn { jsonparse / typeset } {#1} \l__jsonparse_unused_keys_clist
+ \__jsonparse_warning_unused_keys:
\tl_set:Nn \l__jsonparse_temp_tl {#2}
\jsonparse_filter:Nn \l__jsonparse_temp_tl {#3}
\bool_set_true:N \l__jsonparse_prop_map_first_bool
@@ -721,13 +797,13 @@
} {#4} {
\bool_if:NTF \l__jsonparse_prop_map_first_bool {
\bool_set_false:N \l__jsonparse_prop_map_first_bool
- } {
+ } {
#5
}
- \bool_if:NTF #1 {
- ##2
- } {
+ \bool_if:NTF \l__jsonparse_rescan_bool {
\__jsonparse_rescan:n {##2}
+ } {
+ ##2
}
}
}
@@ -759,10 +835,12 @@
\tl_new:N \JSONParseArrayIndex
\tl_new:N \JSONParseArrayKey
-\tl_new:N \JSONParseArrayValue
+\tl_new:N \JSONParseArrayValue
-\NewDocumentCommand { \JSONParseArrayValuesMap } { s m m O{} m } {
+\NewDocumentCommand { \JSONParseArrayValuesMap } { O{} m m O{} m } {
\group_begin:
+ \keys_set_known:nn { jsonparse / typeset } {#1} \l__jsonparse_unused_keys_clist
+ \__jsonparse_warning_unused_keys:
\jsonparse_filter:Nn #2 {#3}
\prop_map_inline:Nn #2 {
\str_if_eq:enT {
@@ -771,10 +849,10 @@
\int_incr:N \l__jsonparse_array_index_int
\tl_set:Ne \JSONParseArrayIndex { \__jsonparse_get_array_index:w ##1 \q_stop }
\tl_set:Nn \JSONParseArrayKey {##1}
- \bool_if:NTF #1 {
- \tl_set:Nn \JSONParseArrayValue { \prop_item:Nn #2 {##1} }
- } {
+ \bool_if:NTF \l__jsonparse_rescan_bool {
\tl_set:Nn \JSONParseArrayValue { \exp_args:Ne \__jsonparse_rescan:n { \prop_item:Nn #2 {##1} } }
+ } {
+ \tl_set:Nn \JSONParseArrayValue { \prop_item:Nn #2 {##1} }
}
\use:c {#5}
}
diff --git a/macros/latex/contrib/l3build/CHANGELOG.md b/macros/latex/contrib/l3build/CHANGELOG.md
index ea466dfccc..f2231144d8 100644
--- a/macros/latex/contrib/l3build/CHANGELOG.md
+++ b/macros/latex/contrib/l3build/CHANGELOG.md
@@ -7,6 +7,15 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2024-05-27]
+
+### Changed
+- Respect `--rerun` in `doc` target (issue \#112)
+
+### Fixed
+- Skip unknown engines correctly in `l3build save`
+- Handling of environment settings in some cases (issue \#353)
+
## [2024-02-08]
### Changed
@@ -776,7 +785,8 @@ this project uses date-based 'snapshot' version identifiers.
- Rationalise short option names: removed `-d`, `-E`, `-r`
- Target `cmdcheck`: specific to LaTeX kernel work
-[Unreleased]: https://github.com/latex3/l3build/compare/2024-02-08...HEAD
+[Unreleased]: https://github.com/latex3/l3build/compare/2024-05-27...HEAD
+[2024-05-27]: https://github.com/latex3/l3build/compare/2024-02-08...2024-05-27
[2024-02-08]: https://github.com/latex3/l3build/compare/2024-01-18...2024-02-08
[2024-01-18]: https://github.com/latex3/l3build/compare/2024-01-09...2024-01-18
[2024-01-09]: https://github.com/latex3/l3build/compare/2024-01-04...2024-01-09
diff --git a/macros/latex/contrib/l3build/README.md b/macros/latex/contrib/l3build/README.md
index b5172bbf21..1b49dc0b0c 100644
--- a/macros/latex/contrib/l3build/README.md
+++ b/macros/latex/contrib/l3build/README.md
@@ -1,7 +1,7 @@
l3build: a testing and building system for LaTeX
=================================================
-Release 2024-02-08
+Release 2024-05-27
Overview
--------
diff --git a/macros/latex/contrib/l3build/l3build-aux.lua b/macros/latex/contrib/l3build/l3build-aux.lua
index dd8c410fc0..bf0b85c698 100644
--- a/macros/latex/contrib/l3build/l3build-aux.lua
+++ b/macros/latex/contrib/l3build/l3build-aux.lua
@@ -189,9 +189,9 @@ function runcmd(cmd,dir,vars)
dir = abspath(dir)
vars = vars or {}
-- Allow for local texmf files
- local env = ""
- if not match(checkformat,"^context$") then
- env = os_setenv .. " TEXMFCNF=." .. os_pathsep .. os_concat
+ local env
+ if checkformat ~= "context" then
+ env = os_setenv .. " TEXMFCNF=." .. os_pathsep
end
local envpaths = "." .. localtexmf() .. os_pathsep
.. abspath(localdir) .. os_pathsep
@@ -201,11 +201,9 @@ function runcmd(cmd,dir,vars)
envpaths = gsub(envpaths,'"','')
end
for _,var in pairs(vars) do
- if env ~= "" then
- env = env .. os_setenv .. " " .. var .. "=" .. envpaths .. os_concat
- else
- env = os_setenv .. " " .. var .. "=" .. envpaths
- end
+ env = (env and (env .. os_concat) or "")
+ .. os_setenv .. " " .. var .. "=" .. envpaths
end
- return run(dir,set_epoch_cmd(epoch, forcedocepoch) .. env .. cmd)
+ return run(dir,set_epoch_cmd(epoch, forcedocepoch)
+ .. (env and (env .. os_concat) or "") .. cmd)
end
diff --git a/macros/latex/contrib/l3build/l3build-check.lua b/macros/latex/contrib/l3build/l3build-check.lua
index 812187123a..d6d30e3e2a 100644
--- a/macros/latex/contrib/l3build/l3build-check.lua
+++ b/macros/latex/contrib/l3build/l3build-check.lua
@@ -778,7 +778,7 @@ function runtest(name, engine, hide, ext, test_type, breakout)
local function setup(file)
return " -jobname=" .. name .. tokens .. ' "\\input ' .. file .. '" '
end
- if match(checkformat,"^context$") then
+ if checkformat == "context" then
function setup(file) return tokens .. ' "' .. file .. '" ' end
end
if match(binary,"make4ht") then
@@ -1119,7 +1119,12 @@ function save(names)
return errorlevel
end
end
- local engines = options["engine"] or {stdengine}
+ local engines
+ if options["engine"] then
+ engines = checkengines -- sanitized by check_engines()
+ else
+ engines = {stdengine}
+ end
if names == nil then
print("Arguments are required for the save command")
return 1
diff --git a/macros/latex/contrib/l3build/l3build-help.lua b/macros/latex/contrib/l3build/l3build-help.lua
index 46b0bc45b3..9cad7135dd 100644
--- a/macros/latex/contrib/l3build/l3build-help.lua
+++ b/macros/latex/contrib/l3build/l3build-help.lua
@@ -59,7 +59,7 @@ function help()
if not (match(arg[0], "l3build%.lua$") or match(arg[0],"l3build$")) then
scriptname = arg[0]
end
- print("usage: " .. scriptname .. " <target> [<options>] [<names>]")
+ print("\nUsage: " .. scriptname .. " <target> [<options>] [<names>]")
print("")
print("Valid targets are:")
local longest,t = setup_list(target_list)
diff --git a/macros/latex/contrib/l3build/l3build-typesetting.lua b/macros/latex/contrib/l3build/l3build-typesetting.lua
index 8de57f3718..eaffbe6ae9 100644
--- a/macros/latex/contrib/l3build/l3build-typesetting.lua
+++ b/macros/latex/contrib/l3build/l3build-typesetting.lua
@@ -181,7 +181,10 @@ function docinit_hook() return 0 end
-- Typeset all required documents
-- Uses a set of dedicated auxiliaries that need to be available to others
function doc(files)
- local errorlevel = docinit()
+ local errorlevel = 0
+ if not options["rerun"] then
+ errorlevel = docinit()
+ end
if errorlevel ~= 0 then return errorlevel end
local done = {}
local files_unknown = {}
diff --git a/macros/latex/contrib/l3build/l3build.1 b/macros/latex/contrib/l3build/l3build.1
index b983494b73..d42e486f3c 100644
--- a/macros/latex/contrib/l3build/l3build.1
+++ b/macros/latex/contrib/l3build/l3build.1
@@ -1,91 +1,71 @@
-.TH l3build 1 "2024-02-08"
+.TH L3BUILD 1 "2024-05-27" "LaTeX"
+
.SH NAME
-l3build \- Checking and building packages
+l3build
+
.SH SYNOPSIS
-l3build <target> [<options>] [<names>]
+ Usage l3build <target> [<options>] [<names>]
+
.SH DESCRIPTION
-The l3build system is a Lua script for building TeX packages, with particular
-emphasis on regression testing. It is written in cross-platform Lua code, so
-can be used by any modern TeX distribution with the texlua interpreter. A
-package for building with l3build can be written in any TeX dialect; its
-defaults are set up for LaTeX packages written in the DocStrip style.
-.PP
-The standard l3build targets are:
-.IP check
-Runs all automated tests
-.IP clean
-Cleans out directory tree
-.IP ctan
-Creates CTAN-ready archive
-.IP doc
-Typesets all documentation files
-.IP install
-Installs files into the local texmf tree
-.IP manifest
-Creates a manifest file
-.IP save
-Saves test validation log
-.IP tag
-Updates release tags in files
-.IP uninstall
-Uninstalls files from the local texmf tree
-.IP unpack
-Unpacks the source files into the build tree
-.IP upload
-Sends archive to CTAN for public release
+------
+
+The l3build module is designed to support the development of
+high-quality LaTeX code by providing:
+* A unit testing system
+* Automated typesetting of code sources
+* A reliable packaging system for CTAN releases
+
+The bundle consists of a Lua script to run the tasks and a
+.tex file which provides the testing environment. These were
+originally developed for supporting LaTeX development but
+are designed such that they can be readily used by others. Full
+documentation is provided.
+
+.SH COMMANDS
+Valid targets are:
+ check Runs all automated tests
+ clean Cleans out directory tree
+ ctan Creates CTAN-ready archive
+ doc Typesets all documentation files
+ install Installs files into the local texmf tree
+ manifest Creates a manifest file
+ save Saves test validation log
+ tag Updates release tags in files
+ uninstall Uninstalls files from the local texmf tree
+ unpack Unpacks the source files into the build tree
+ upload Sends archive to CTAN for public release
+
.SH OPTIONS
-Various options apply
-.IP --config|-c
-Sets the config(s) used for running tests
-.IP --date
-Sets the date to insert into sources
-.IP --debug
-Runs target in debug mode
-.IP --dirty
-Skips cleaning up the test area
-.IP --dry-run
-Dry run for install or upload
-.IP --email
-Email address of CTAN uploader
-.IP --engine|-e
-Sets the engine(s) to use for running test
-.IP --epoch
-Sets the epoch for tests and typesetting
-.IP --file|-F
-Takes the upload announcement from the given file
-.IP --first
-Name of first test to run
-.IP --full
-Installs all files
-.IP --halt-on-error|-H
-Stops running tests after the first failure
-.IP --help|-h
-Prints help message and exits
-.IP --last
-Name of last test to run
-.IP --message|-m
-Text for upload announcement message
-.IP --quiet|-q
-Suppresses TeX output when unpacking
-.IP --rerun
-Skips setup: simply reruns tests
-.IP --show-log-on-error
-Shows the full log of the failure with 'halt-on-error'
-.IP --show-saves|-S
-Shows the invocation to update failing .tlg files
-.IP --shuffle
-Shuffles order of tests
-.IP --stdengine|-s
-Run tests with the std engine (config dependent)
-.IP --texmfhome
-Location of user texmf tree
-.IP --version
-Prints version information and exits
-.SH BUGS
-.SH AUTHOR
-The LaTeX Project (latex-team@latex-project.org)
-.PP
-Please log issues on the GitHub homepage:
-https://github.com/latex3/l3build/issues.
-.SH SEE ALSO
-See l3build.pdf for more details.
+Valid options are:
+ --config|-c Sets the config(s) used for running tests
+ --date Sets the date to insert into sources
+ --debug Runs target in debug mode
+ --dirty Skips cleaning up the test area
+ --dry-run Dry run for install or upload
+ --email Email address of CTAN uploader
+ --engine|-e Sets the engine(s) to use for running test
+ --epoch Sets the epoch for tests and typesetting
+ --file|-F Takes the upload announcement from the given file
+ --first Name of first test to run
+ --full Installs all files
+ --halt-on-error|-H Stops running tests after the first failure
+ --help|-h Prints this message and exits
+ --last Name of last test to run
+ --message|-m Text for upload announcement message
+ --quiet|-q Suppresses TeX output when unpacking
+ --rerun Skips setup: simply reruns tests
+ --show-log-on-error Shows the full log of the failure with 'halt-on-error'
+ --show-saves|-S Shows the invocation to update failing .tlg files
+ --shuffle Shuffles order of tests
+ --stdengine|-s Run tests with the std engine (config dependent)
+ --texmfhome Location of user texmf tree
+ --version Prints version information and exits
+
+.SH "SEE ALSO"
+Full manual available via 'texdoc l3build'.
+
+Repository : https://github.com/latex3/l3build
+
+Bug tracker : https://github.com/latex3/l3build/issues
+.SH AUTHORS
+Copyright (C) 2014-2024 The LaTeX Project
diff --git a/macros/latex/contrib/l3build/l3build.dtx b/macros/latex/contrib/l3build/l3build.dtx
index 96c1f0ead8..2433c7a311 100644
--- a/macros/latex/contrib/l3build/l3build.dtx
+++ b/macros/latex/contrib/l3build/l3build.dtx
@@ -251,7 +251,7 @@
% }^^A
% }
%
-% \date{Released 2024-02-08}
+% \date{Released 2024-05-27}
%
% \maketitle
% \tableofcontents
@@ -1227,9 +1227,9 @@
% \subsection{Settings in \texttt{texmf.cnf}}
%
% To allow application of non-standard \TeX{} trees or similar non-standard
-% settings, \pkg{l3build} enables searching for a \texttt{texmf.cnf} file
-% by setting the envirnmental variable \texttt{TEXMFCNF}. This might
-% for example be used with a file containing
+% settings, \pkg{l3build} sets the environment variable \texttt{TEXMFCNF}
+% to allow reading of any \texttt{texmf.cnf} file present in the support folder.
+% This might for example be used with a file containing
% \begin{verbatim}
% TEXMFAUXTREES = ../../texmf,
% \end{verbatim}
diff --git a/macros/latex/contrib/l3build/l3build.lua b/macros/latex/contrib/l3build/l3build.lua
index 5b40bc5111..bb53a2ce55 100755
--- a/macros/latex/contrib/l3build/l3build.lua
+++ b/macros/latex/contrib/l3build/l3build.lua
@@ -25,7 +25,7 @@ for those people who are interested.
--]]
-- Version information
-release_date = "2024-02-08"
+release_date = "2024-05-27"
-- File operations are aided by the LuaFileSystem module
local lfs = require("lfs")
diff --git a/macros/latex/contrib/l3build/l3build.pdf b/macros/latex/contrib/l3build/l3build.pdf
index af2c8688f0..93f4b8f3ab 100644
--- a/macros/latex/contrib/l3build/l3build.pdf
+++ b/macros/latex/contrib/l3build/l3build.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3packages/CHANGELOG.md b/macros/latex/contrib/l3packages/CHANGELOG.md
index b12b36ec76..cd9143da08 100644
--- a/macros/latex/contrib/l3packages/CHANGELOG.md
+++ b/macros/latex/contrib/l3packages/CHANGELOG.md
@@ -7,6 +7,12 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2024-05-08]
+
+### Changed
+- Prepare for kernel adjustments to templates:
+ `\IfInstanceExist(TF)` as alias for `\IfInstanceExists(TF)`
+
## [2024-03-14]
### Changed
@@ -133,7 +139,7 @@ this project uses date-based 'snapshot' version identifiers.
## [2021-05-07]
### Fixed
-- Implmentation of `\DeclareRestrictedTemplate`
+- Implementation of `\DeclareRestrictedTemplate`
- Incorrect use of restricted template in `xfrac`
## [2021-03-12]
@@ -253,7 +259,8 @@ this project uses date-based 'snapshot' version identifiers.
- Switch to ISO date format
- Improve cross-module use of internal functions
-[Unreleased]: https://github.com/latex3/latex3/compare/2024-03-14...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2024-05-08...HEAD
+[2024-05-08]: https://github.com/latex3/latex3/compare/2024-03-14...2024-05-08
[2024-03-14]: https://github.com/latex3/latex3/compare/2024-02-18...2024-03-14
[2024-02-18]: https://github.com/latex3/latex3/compare/2024-02-13...2024-02-18
[2024-02-13]: https://github.com/latex3/latex3/compare/2023-10-10...2024-02-13
diff --git a/macros/latex/contrib/l3packages/README.md b/macros/latex/contrib/l3packages/README.md
index 601e8d229a..10899672d6 100644
--- a/macros/latex/contrib/l3packages/README.md
+++ b/macros/latex/contrib/l3packages/README.md
@@ -1,6 +1,6 @@
# `l3packages`: Higher-level LaTeX3 Concepts (Deprecated)
-Release 2024-03-14
+Release 2024-05-08
## Overview
diff --git a/macros/latex/contrib/l3packages/l3keys2e-demo.tex b/macros/latex/contrib/l3packages/l3keys2e-demo.tex
index fda8fa40ff..a7565a7944 100644
--- a/macros/latex/contrib/l3packages/l3keys2e-demo.tex
+++ b/macros/latex/contrib/l3packages/l3keys2e-demo.tex
@@ -16,7 +16,7 @@
% Load the class with some options.
% The class itself recognises `option1', leaving `option2' and
-% `option3' as global optons which are not yet used.
+% `option3' as global options which are not yet used.
\documentclass[option1=check,option2=more stuff,option3=unused]
{l3keys2e-class}
diff --git a/macros/latex/contrib/l3packages/l3keys2e.dtx b/macros/latex/contrib/l3packages/l3keys2e.dtx
index 817d37a46c..2e5c419165 100644
--- a/macros/latex/contrib/l3packages/l3keys2e.dtx
+++ b/macros/latex/contrib/l3packages/l3keys2e.dtx
@@ -62,7 +62,7 @@
% }^^A
% }
%
-% \date{Released 2024-03-14}
+% \date{Released 2024-05-08}
%
% \maketitle
%
@@ -154,7 +154,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3keys2e}{2024-03-14}{}
+\ProvidesExplPackage{l3keys2e}{2024-05-08}{}
{LaTeX2e option processing using LaTeX3 keys}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3packages/l3keys2e.pdf b/macros/latex/contrib/l3packages/l3keys2e.pdf
index ecf18342cf..df3821afb8 100644
--- a/macros/latex/contrib/l3packages/l3keys2e.pdf
+++ b/macros/latex/contrib/l3packages/l3keys2e.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3packages/xfp.dtx b/macros/latex/contrib/l3packages/xfp.dtx
index 8baebbfc19..fe8dcd51b1 100644
--- a/macros/latex/contrib/l3packages/xfp.dtx
+++ b/macros/latex/contrib/l3packages/xfp.dtx
@@ -63,7 +63,7 @@
% }^^A
% }
%
-% \date{Released 2024-03-14}
+% \date{Released 2024-05-08}
%
% \maketitle
%
@@ -171,7 +171,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xfp}{2024-03-14}{}
+\ProvidesExplPackage{xfp}{2024-05-08}{}
{L3 Floating point unit}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3packages/xfp.pdf b/macros/latex/contrib/l3packages/xfp.pdf
index 1bfdb01596..2097c2b079 100644
--- a/macros/latex/contrib/l3packages/xfp.pdf
+++ b/macros/latex/contrib/l3packages/xfp.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3packages/xparse.dtx b/macros/latex/contrib/l3packages/xparse.dtx
index 4b731d1e0f..62ac19ff25 100644
--- a/macros/latex/contrib/l3packages/xparse.dtx
+++ b/macros/latex/contrib/l3packages/xparse.dtx
@@ -67,7 +67,7 @@
% }^^A
% }
%
-% \date{Released 2024-03-14}
+% \date{Released 2024-05-08}
%
% \maketitle
%
@@ -1079,7 +1079,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xparse}{2024-03-14}{}
+\ProvidesExplPackage{xparse}{2024-05-08}{}
{L3 Experimental document command parser}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3packages/xparse.pdf b/macros/latex/contrib/l3packages/xparse.pdf
index 91a774d39f..bb31c0a5e6 100644
--- a/macros/latex/contrib/l3packages/xparse.pdf
+++ b/macros/latex/contrib/l3packages/xparse.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3packages/xtemplate.dtx b/macros/latex/contrib/l3packages/xtemplate.dtx
index 4aac33434a..7d20c6142f 100644
--- a/macros/latex/contrib/l3packages/xtemplate.dtx
+++ b/macros/latex/contrib/l3packages/xtemplate.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2024-03-14}
+% \date{Released 2024-05-08}
%
% \maketitle
%
@@ -704,12 +704,15 @@
\endinput
}
{%
- \ProvidesExplPackage{xtemplate}{2024-03-14}{}
+ \ProvidesExplPackage{xtemplate}{2024-05-08}{}
{L3 Experimental prototype document functions}
\long\protected\def\DeclareRestrictedTemplate#1#2#3#4{%
\DeclareTemplateCopy{#1}{#3}{#2}%
\EditTemplateDefaults{#1}{#3}{#4}%
}%
+ \let\IfInstanceExistT\IfInstanceExistsT
+ \let\IfInstanceExistF\IfInstanceExistsF
+ \let\IfInstanceExistTF\IfInstanceExistsTF
}
\ExplSyntaxOn
\cs_new_protected:Npn \DeclareObjectType #1#2
diff --git a/macros/latex/contrib/l3packages/xtemplate.pdf b/macros/latex/contrib/l3packages/xtemplate.pdf
index b52381f6dc..b70bd7c991 100644
--- a/macros/latex/contrib/l3packages/xtemplate.pdf
+++ b/macros/latex/contrib/l3packages/xtemplate.pdf
Binary files differ
diff --git a/macros/latex/contrib/lastpage/README b/macros/latex/contrib/lastpage/README
index 4545b13a60..b7c3c78bb2 100644
--- a/macros/latex/contrib/lastpage/README
+++ b/macros/latex/contrib/lastpage/README
@@ -1,4 +1,4 @@
-README for lastpage package, 2024-04-27, v2.1a
+README for lastpage package, 2024-07-07, v2.1c
TABLE OF CONTENTS
diff --git a/macros/latex/contrib/lastpage/lastpage-example.pdf b/macros/latex/contrib/lastpage/lastpage-example.pdf
index 6d1c748525..db990f6942 100644
--- a/macros/latex/contrib/lastpage/lastpage-example.pdf
+++ b/macros/latex/contrib/lastpage/lastpage-example.pdf
Binary files differ
diff --git a/macros/latex/contrib/lastpage/lastpage.dtx b/macros/latex/contrib/lastpage/lastpage.dtx
index 104d6b8418..c447d39cc6 100644
--- a/macros/latex/contrib/lastpage/lastpage.dtx
+++ b/macros/latex/contrib/lastpage/lastpage.dtx
@@ -1,7 +1,7 @@
% \iffalse meta-comment
%
% File: lastpage.dtx
-% Version: 2024-04-27 v2.1a
+% Version: 2024-07-07 v2.1c
% Info: Refers to last page's name
%
% Copyright © 2010 - 2024 by
@@ -65,7 +65,7 @@
\input docstrip.tex
\Msg{**********************************************************************}
\Msg{* Installation *}
-\Msg{* Package: lastpage 2024-04-27 v2.1a Refers to last page's name (HMM)*}
+\Msg{* Package: lastpage 2024-07-07 v2.1c Refers to last page's name (HMM)*}
\Msg{**********************************************************************}
\keepsilent
@@ -77,7 +77,7 @@
This is a generated file.
Project: lastpage
-Version: 2024-04-27 v2.1a
+Version: 2024-07-07 v2.1c
Info: Refers to last page's name
Copyright (C) 2010 - 2024 by
@@ -100,10 +100,9 @@ The Current Maintainer of this work is H.-Martin Muench.
This package was invented by Jeffrey P. Goldberg.
I thought that a replacement was needed and therefore created the pageslts package,
-https://ctan.org/pkg/pageslts
-. Nevertheless, for compatibility with existing documents/packages as well as for
-the low amount of resources needed by the lastpage package (no new counter!),
-I updated this package.
+https://ctan.org/pkg/pageslts. Nevertheless, for compatibility with existing
+documents/packages as well as for the low amount of resources needed by the
+lastpage package (no new counter!), I updated this package.
Thanks go to Jeffrey P. Goldberg for allowing me to do this.
While this package allows for things like "Page slash thepage{} of slash pageref{LastPage}"
@@ -185,8 +184,8 @@ In memoriam
%<*driver>
\NeedsTeXFormat{LaTeX2e}[2023-11-01]
\ProvidesFile{lastpage.drv}%
- [2024-04-27 v2.1a Refers to last page's name (HMM)]
-\documentclass{ltxdoc}[2023/03/28]% v2.1j Standard LaTeX documentation class
+ [2024-07-07 v2.1c Refers to last page's name (HMM)]
+\documentclass{ltxdoc}[2024/02/08]% v2.1j Standard LaTeX documentation class
\usepackage{holtxdoc}[2019/12/09]% v0.30 Private additional ltxdoc support (HO)
\hypersetup{%
pdfsubject={Refers to last page's name (HMM; JPG)},%
@@ -234,23 +233,23 @@ In memoriam
% \DoNotIndex{\@auxout,\@evenfoot,\@firstofone,\@firstoftwo,\@ifl@t@r,\@ifpackagelater,\@ifpackageloaded}
% \DoNotIndex{\@ifundefined,\@kernel@reserved@label@data,\@mainaux,\@number,\@oddfoot}
% \DoNotIndex{\addtocounter,\AddToHook,\arabic,\begin}
-% \DoNotIndex{\bigskip,\clearpage,\csname,\documentclass,\EdefUnescapeString,\empty,\end,\endcsname}
-% \DoNotIndex{\enddocument,\ExplSyntaxOff,\ExplSyntaxOn,\fmtversion}
+% \DoNotIndex{\bigskip,\clearpage,\csname,\detokenize,\documentclass,\EdefUnescapeString,\empty,\end}
+% \DoNotIndex{\endcsname,\enddocument,\expanded,\ExplSyntaxOff,\ExplSyntaxOn,\fmtversion}
% \DoNotIndex{\g,\gdef,\here,\hfil,\Hy@temp,\Hy@unicodefalse}
-% \DoNotIndex{\hypersetup,\if@filesw,\if@nobreak,\ifHy@hypertexnames,\ifHy@pageanchor,\ifHy@plainpages}
+% \DoNotIndex{\hypersetup,\if,\if@filesw,\if@nobreak,\ifHy@hypertexnames,\ifHy@pageanchor,\ifHy@plainpages}
% \DoNotIndex{\ifdim,\ifnum,\IfPackageAtLeastTF,\IfPackageLoadedTF,\ifvmode,\ifx,\immediate,\input}
% \DoNotIndex{\label,\lastpage,\lastpage-example.tex,\lastpage.dtx,\lastpage.sty,\lastpagee.sty}
% \DoNotIndex{\lastpageclassic.sty,\lastpagemodern.sty,\LaTeX,\LaTeX-kernel,\listfiles}
-% \DoNotIndex{\makeatletter,\makeatother,\markboth,\mbox,\message,\MessageBreak}
+% \DoNotIndex{\makeatletter,\makeatother,\markboth,\meaning,\mbox,\message,\MessageBreak}
% \DoNotIndex{\NeedsTeXFormat,\newcommand,\newcounter,\newline,\newpage,\nobreak}
% \DoNotIndex{\noindent,\normalsize,\numexpr,\origenddocument,\PackageError,\PackageWarning}
% \DoNotIndex{\PackageWarningNoLine,\pagenumbering,\pageref,\pdfstringdef,\protect,\ProvidesPackage}
% \DoNotIndex{\qquad,\RequirePackage,\section,\ShowHook,\slshape,\smallskip,\space,\test,\textbf}
% \DoNotIndex{\textit,\textquotedblleft,\textquotedblright,\textsf,\texttt,\the,\thepage}
-% \DoNotIndex{\today,\upshape,\url,\usepackage,\value,\verb,\wd,\write}
+% \DoNotIndex{\today,\upshape,\url,\usepackage,\value,\verb,\wd,\write,\xlastpage@rmpage,\xxlastpage@rmpage}
%
% \title{The \xpackage{lastpage} package}
-% \date{2024-04-27 v2.1a}
+% \date{2024-07-07 v2.1c}
% \author{H.-Martin Münch\\\xemail{Martin.Muench at Uni-Bonn.de}\\
% invented by Jeffrey P. Goldberg\\\xemail{jeffrey+news at goldmark.org}}
%
@@ -559,6 +558,18 @@ In memoriam
% but |\lastpage@putlabel| was replaced by |\lastpage@putl@bel|.
% Because \linebreak |\lastpage@putlabel| is no longer called, now there should not be any
% double definitions of the \texttt{lastpage} label.
+%
+% \subsection{\texttt{\textbackslash pagenumbering\{fnsymbol\}}}
+% When using the foot-note-symbols as page numbers,
+% it can be necessary to declare in the document's preamble:
+% \begin{verbatim}
+% \DeclareTextCommand{\textasteriskcentered}{PD1}{*}
+% \DeclareTextCommand{\textdagger}{PD1}{†}
+% %\DeclareTextCommand{\textdaggerdbl}{PD1}{‡)% seems to neither work nor be necessary
+% \DeclareTextCommand{\textsection}{PD1}{§}
+% \DeclareTextCommand{\textparagraph}{PD1}{¶}
+% \DeclareTextCommand{\textbardbl}{PD1}{‖}
+% \end{verbatim}
% \newpage
%
% \section{Alternatives\label{sec:Alternatives}}
@@ -574,7 +585,7 @@ In memoriam
% \textbf{Note: The current version 2015/12/21 v1.2f of the \pkg{pageslts} package
% has not yet been updated to the new hook mechanism. In special cases (for example }%
% |\pagenumbering{fnsymbol}|\textbf{) the current version of that package combined
-% with a current \LaTeX-format fails. Together with about 80~other packages
+% with a current \LaTeX-format fails. Together with several other packages
% (small to large, public as well as private, some probably obsolete) it is
% in the update queue.}\newline
% The \xpackage{pageslts} package first started as a revision of this
@@ -723,17 +734,17 @@ In memoriam
%
% \begin{macrocode}
%<*example>
-\documentclass[british]{article}[2023/05/17]% v1.4n Standard LaTeX document class
+\documentclass[british]{article}[2024/02/08]% v1.4n Standard LaTeX document class
\makeatletter
\@ifl@t@r\fmtversion{2022/11/01}{%
\AddToHook{enddocument/afterlastpage}[lastpage]{%
\message{^^JLaTeX Info: Executing hook `enddocument/afterlastpage'.}}%
}{\AtEndDocument{\message{^^JLaTeX Info: Executing hook `AtEndDocument'.}}%
}
-\usepackage[draft]{showkeys}[2023/07/08]% v3.19 Show cite and label keys (DPC, MH)
+\usepackage[draft]{showkeys}[2024/05/23]% v3.21 Show cite and label keys (DPC, MH)
%% Use final instead of draft to hide the keys. %%
\usepackage[pdfpagelabels=true,hyperindex=false]{hyperref}[2024-01-20]% v7.01h
-%% Hypertext links for LaTeX
+\@ifpackageloaded{hyperref}{% Hypertext links for LaTeX
\hypersetup{extension=pdf,%
plainpages=false,%
pdflang={en},%
@@ -744,9 +755,8 @@ In memoriam
pdfview=Fit,%
pdfstartview=Fit,%
pdfpagelayout=SinglePage%
-}
-\@ifpackageloaded{hyperref}{}{\usepackage{url}[2013/09/16]}% v3.4
-\usepackage{lastpage}[2024/04/27]% v2.1a
+}}{\usepackage{url}[2013/09/16]}% v3.4
+\usepackage{lastpage}[2024/07/07]% v2.1c
\renewcommand{\@evenfoot}{%
\normalsize\slshape \today\hfil \upshape %
page \thepage{} of \pageref{LastPage}}
@@ -758,7 +768,7 @@ In memoriam
\section*{Example for lastpage}
\markboth{Example for lastpage}{Example for lastpage}
This example demonstrates the use of package\newline
-\textsf{lastpage}, v2.1a as of 2024-04-27 (HMM; JPG).\newline
+\textsf{lastpage}, v2.1c as of 2024-07-07 (HMM; JPG).\newline
The package takes no options.\newline
For more details please see the documentation!\newline
@@ -783,7 +793,7 @@ trademark owner. There is no intention of infringement; the
usage is to the benefit of the trademark owner.\newline
\textbf{Tip}: Use \textit{logical page numbers}
-for the display of the pdf (in Adobe Acrobat Reader 2024.002.20687:
+for the display of the pdf (in Adobe Acrobat Reader 2024.002.20895:
Edit $>$ Preferences $>$ Page Display $>$
Page Content and Information: Use logical page numbers)!\newline
@@ -837,8 +847,8 @@ The code does not generally work even without hyperref.
\end{verbatim}
\end{quote}
-\noindent does work, because \verb|\lastpage@lastpage| contains the name
-of the page, \mbox{example:}
+\noindent does work (two compilations needed), because \verb|\lastpage@lastpage|
+contains the name of the page, \mbox{example:}
\begin{verbatim}
Page \thepage{} is (not) page \makeatletter\lastpage@lastpage\makeatother.
\end{verbatim}
@@ -894,7 +904,7 @@ To see the content of the \texttt{enddocument/afterlastpage}-hook
% \DescribeMacro{lastpage.sty}
% We first need to determine whether we are on \TeX~2.09 or \LaTeX2e.\newline
% (That line, which is too long for the documentation, reads:\newline
-% |\def\loadlastpage{\ProvidesPackage{lastpage}[2024/04/27 v2.1a lastpage:|\linebreak
+% |\def\loadlastpage{\ProvidesPackage{lastpage}[2024/07/07 v2.1c lastpage:|\linebreak
% | 2.09 or 2e? (HMM)]\relax\RequirePackage{lastpage2e}}|.)
%
% \begin{macrocode}
@@ -902,7 +912,7 @@ To see the content of the \texttt{enddocument/afterlastpage}-hook
%% Part of the "lastpage" package
%% loads either lastpage2.09.sty for TeX 2.09 or lastpage2e.sty for LaTeX 2e
%% with code from https://groups.google.com/g/comp.text.tex/c/-Qmhj1ZI4xM
-\def\loadlastpage{\ProvidesPackage{lastpage}[2024/04/27 v2.1a lastpage: 2.09 or 2e? (HMM)]\relax\RequirePackage{lastpage2e}}
+\def\loadlastpage{\ProvidesPackage{lastpage}[2024/07/07 v2.1c lastpage: 2.09 or 2e? (HMM)]\relax\RequirePackage{lastpage2e}}
\begingroup \expandafter \ifx \csname documentclass\endcsname\relax
\endgroup \expandafter \input{lastpage209.sty}
\else \endgroup \expandafter \loadlastpage
@@ -942,7 +952,7 @@ To see the content of the \texttt{enddocument/afterlastpage}-hook
%<*lastpage2e>
%% Part of the "lastpage" package
\NeedsTeXFormat{LaTeX2e}[1994/12/01]
-\ProvidesPackage{lastpage2e}[2024/04/27 v2.1a %
+\ProvidesPackage{lastpage2e}[2024/07/07 v2.1c %
Decide which 2e lastpage version to use (HMM)]
\@ifl@t@r\fmtversion{2023/06/01}{\RequirePackage{lastpagemodern}}{%
\RequirePackage{lastpageclassic}}
@@ -957,7 +967,7 @@ To see the content of the \texttt{enddocument/afterlastpage}-hook
%<*lastpageclassic>
%% Part of the "lastpage" package
\NeedsTeXFormat{LaTeX2e}[1994/12/01]
-\ProvidesPackage{lastpageclassic}[2024/04/27 v2.1a %
+\ProvidesPackage{lastpageclassic}[2024/07/07 v2.1c %
Refers to last page's name (HMM; JPG)]
%% allows for things like "Page \thepage{} of \pageref{LastPage}"
%% to get "Page 7 of 9"
@@ -1375,7 +1385,7 @@ To see the content of the \texttt{enddocument/afterlastpage}-hook
%<*lastpagemodern>
%% Part of the "lastpage" package
\NeedsTeXFormat{LaTeX2e}[2023-06-01]
-\ProvidesPackage{lastpagemodern}[2024-04-27 v2.1a %
+\ProvidesPackage{lastpagemodern}[2024-07-07 v2.1c %
Refers to last page's name (HMM; JPG)]
%% allows for things like "Page \thepage{} of \pageref{LastPage}"
%% to get "Page 7 of 9" or "Page VII of IX";
@@ -1463,14 +1473,69 @@ To see the content of the \texttt{enddocument/afterlastpage}-hook
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\lastpage@makeHy}
+% Just once we need the page from |\@currentHpage| without any \mbox{\textquotedblleft |page.|\textquotedblright :}
+% \begin{macrocode}
+\newcommand{\lastpage@makeHy}{%
+ \gdef\lastpage@Hy{}%
+ \IfPackageLoadedTF{hyperref}{%
+ \ifHy@pageanchor%
+ \@ifundefined{@currentHpage}{%
+ \PackageError{lastpage}{%
+ Kernel command \string\@currentHpage\space is undefined}{%
+ Please contact the lastpage maintainer.}%
+% \end{macrocode}
+% |\gdef\lastpage@Hy{}|, but that was already done at the beginning of this command.
+% \begin{macrocode}
+ }{\xdef\lastpage@Hptest{Doc-Start}%
+ \ifx\lastpage@Hptest\@currentHpage\relax%
+ \gdef\lastpage@Hy{\@currentHpage}%
+ \else%
+ \edef\lastpage@Hptest{\@currentHpage}%
+ \ifx\lastpage@Hptest\empty\relax%
+% \end{macrocode}
+% |\gdef\lastpage@Hy{}|, but that was already done at the beginning of this command.
+% \begin{macrocode}
+ \else%
+% \end{macrocode}
+% |\@currentHpage| should be |page.<some number>|, |\lastpage@rmpage| removes the
+% \mbox{\textquotedblleft |page.|\textquotedblright .} Next compilation run,
+% |\lastpage@lastpageHy| gets defined via the \xfile{aux} file.
+% If we arrived at this place, but the definition is still empty,
+% then |\@currentHpage| has some unexpected content.
+% \begin{macrocode}
+ \gdef\lastpage@Hy{\lastpage@rmpage{\@currentHpage}}%
+ \ifx\lastpage@lastpageHy\empty\relax%
+ \PackageWarningNoLine{lastpage}{%
+ \string\@currentHpage\space is\MessageBreak%
+ \meaning\@currentHpage\MessageBreak%
+ not beginning with "page.",\MessageBreak%
+ \string\lastpage@lastpageHy\space is now let empty.}%
+ \fi%
+ \fi%
+ \fi%
+ }%
+ \fi%
+ }{}%
+ }%
+
+% \end{macrocode}
+% \end{macro}
% \begin{macro}{\lastpage@rmpage}
-% Just once we need |\@currentHpage| without the \mbox{\textquotedblleft |page.|\textquotedblright :}
+% |\lastpage@rmpage| removes the \mbox{\textquotedblleft |page.|\textquotedblright.}
+%
% \begin{macrocode}
-%% similar to https://tex.stackexchange.com/a/12811/6865
-\def\lastpage@rmpage#1{\expandafter\lastpage@currentH#1\relax}
-\def\lastpage@currentH#1.#2\relax{#2}
+%% Code provided by David Carlisle at https://tex.stackexchange.com/a/721877
+\def\lastpage@rmpage#1{%
+ \expandafter\xlastpage@rmpage\expanded{#1}\xlastpage@rmpage page.%
+ \xlastpage@rmpage\xxlastpage@rmpage{#1}}
+\def\xlastpage@rmpage #1page.#2\xlastpage@rmpage#3\xxlastpage@rmpage#4{%
+ \if$\detokenize{#1}$#2%\else#4
+ \fi}
% \end{macrocode}
+% |\else#4| means, that it did not start with |page.|, and whatever it is,
+% we cannot use this |#4| for |\lastpage@Hy|.
% \end{macro}
% \begin{macro}{\lastpage@putl@bel}
% \indent This command does the writing of the label.
@@ -1529,15 +1594,13 @@ To see the content of the \texttt{enddocument/afterlastpage}-hook
{\@kernel@reserved@label@data}}%
}%
% \end{macrocode}
-% \pagebreak
% \noindent We also save the values, so that we can later (next rerun) check,
% whether they have been saved in the \xfile{aux} file.
%
% \begin{macrocode}
\protected@iwrite\@auxout{}{%
\string\gdef\string\lastpage@lastpage{\thepage}}%
- \gdef\lastpage@Hy{\IfPackageLoadedTF{hyperref}{%
- \ifHy@pageanchor\lastpage@rmpage{\@currentHpage}\fi}{}}%
+ \lastpage@makeHy%
\protected@iwrite\@auxout{}{%
\string\gdef\string\lastpage@lastpageHy{\lastpage@Hy}}%
% \end{macrocode}
@@ -1553,7 +1616,7 @@ To see the content of the \texttt{enddocument/afterlastpage}-hook
% \end{macrocode}
% \end{macro}
-%
+%\pagebreak
% \begin{macro}{\lastpage@fileswtest}
% \indent \hspace*{2em}Later it will be determined whether it is allowed to write
% to the \xfile{aux} file. If it was \emph{not} allowed, it is checked
@@ -1679,7 +1742,7 @@ To see the content of the \texttt{enddocument/afterlastpage}-hook
% \begin{description}
% \item[-] \TeX Format \LaTeXe{}: \url{https://www.CTAN.org}
%
-% \item[-] document class \xclass{ltxdoc}, 2023/03/28, v2.1j,
+% \item[-] document class \xclass{ltxdoc}, 2024/02/08, v2.1j,
% \url{https://ctan.org/pkg/ltxdoc}
%
% \item[-] package \xpackage{holtxdoc}, 2019/12/09, v0.30,
@@ -1692,7 +1755,7 @@ To see the content of the \texttt{enddocument/afterlastpage}-hook
% \begin{description}
% \item[-] \TeX, \url{https://www.CTAN.org}
%
-% \item[-] package \xpackage{lastpage}, 2024-04-27, v2.1a,
+% \item[-] package \xpackage{lastpage}, 2024-07-07, v2.1c,
% \url{https://ctan.org/pkg/lastpage}
% \end{description}
%
@@ -1702,7 +1765,7 @@ To see the content of the \texttt{enddocument/afterlastpage}-hook
% \begin{description}
% \item[-] \TeX-format \LaTeX{}, v2.09
%
-% \item[-] package \xpackage{lastpage209}, 2024-04-27, v2.1a,
+% \item[-] package \xpackage{lastpage209}, 2024-07-07, v2.1c,
% \url{https://ctan.org/pkg/lastpage}
% \end{description}
% and does not work with \xpackage{hyperref}, which needs \LaTeX2e{}.\smallskip
@@ -1714,7 +1777,7 @@ To see the content of the \texttt{enddocument/afterlastpage}-hook
% \item[-] \TeX-format \LaTeXe{} 1994/12/01 or newer,
% \url{https://www.CTAN.org}
%
-% \item[-] package \xpackage{lastpage}, 2024-04-27, v2.1a,
+% \item[-] package \xpackage{lastpage}, 2024-07-07, v2.1c,
% \url{https://ctan.org/pkg/lastpage}
% \end{description}
%
@@ -1725,7 +1788,7 @@ To see the content of the \texttt{enddocument/afterlastpage}-hook
% \item[-] \TeX-format \LaTeXe{} between 1994/12/01 and 2023-05-31,\newline
% \url{https://www.CTAN.org}
%
-% \item[-] package \xpackage{lastpage}, 2024-04-27, v2.1a,
+% \item[-] package \xpackage{lastpage}, 2024-07-07, v2.1c,
% \url{https://ctan.org/pkg/lastpage}
% \end{description}
% and can use
@@ -1742,13 +1805,13 @@ To see the content of the \texttt{enddocument/afterlastpage}-hook
% \item[-] \TeX-format \LaTeXe{} 2023-06-01 or newer,\newline
% \url{https://www.CTAN.org}
%
-% \item[-] package \xpackage{lastpage}, 2024-04-27, v2.1a,
+% \item[-] package \xpackage{lastpage}, 2024-07-07, v2.1c,
% \url{https://ctan.org/pkg/lastpage}
% \end{description}
% and can use
% \begin{description}
% \item[-] package \xpackage{hyperref}, 2023-11-07 and newer
-% (tested with: 2024-01-20, v7.01h),
+% (tested with: 2024-05-23, v7.01i),
% \url{https://ctan.org/pkg/hyperref}
% \end{description}
% \pagebreak
@@ -1757,7 +1820,7 @@ To see the content of the \texttt{enddocument/afterlastpage}-hook
% The |lastpage-example.tex| requires the same file as all
% documents using the \xpackage{lastpage} package, i.\,e.
% \begin{description}
-% \item[-] package \xpackage{lastpage}, 2024-04-27, v2.1a,
+% \item[-] package \xpackage{lastpage}, 2024-07-07, v2.1c,
% \url{https://ctan.org/pkg/lastpage}\newline
% (Well, it is the example file for this package, and because you are reading the
% documentation for the \xpackage{lastpage} package, it can be assumed that you already
@@ -1765,13 +1828,13 @@ To see the content of the \texttt{enddocument/afterlastpage}-hook
% \end{description}
% and additionally:
% \begin{description}
-% \item[-] class \xpackage{article}, 2023-05-17, v1.4n, from \xpackage{classes}:
+% \item[-] class \xpackage{article}, 2024-02-08, v1.4n, from \xpackage{classes}:
% \url{https://ctan.org/pkg/classes}
%
-% \item[-] package \xpackage{showkeys}, 2023-07-08, v3.19,
+% \item[-] package \xpackage{showkeys}, 2024-05-23, v3.21,
% \url{https://ctan.org/pkg/showkeys}
%
-% \item[-] package \xpackage{hyperref}, 2024-01-20, v7.01h,
+% \item[-] package \xpackage{hyperref}, 2024-05-23, v7.01i,
% \url{https://ctan.org/pkg/hyperref}
% \end{description}
%
@@ -2038,7 +2101,8 @@ To see the content of the \texttt{enddocument/afterlastpage}-hook
% to update it. Further I would like to thank \textsc{Heiko Oberdiek}
% for providing a~lot~(!) of useful packages (from which I also learned everything
% I know about creating a file in \xfile{dtx} format, OK, say it: copying).
-% Thanks for bug reports go to \textsc{Ulrike Fischer} (twice),
+% Thanks to \textsc{David Carlisle} for the new code for |\lastpage@rmpage|.
+% Thanks for bug reports go to \textsc{Ulrike Fischer} (several times),
% \textsc{Sebastian Bank}, \textsc{James Hedges}, \textsc{Mikhail Titov},
% \textsc{Micha\l{} Herman}, \textsc{Matteo Gamboz}, and \textsc{James Small}.
% Thanks to \textsc{Sven Siegmund} for pointing out a necessary further
@@ -2219,8 +2283,7 @@ To see the content of the \texttt{enddocument/afterlastpage}-hook
% \item Replaced |\immediate\write| by a form of (pseudo-code!) |\immediate\protected@write|.
% (Thanks to \textsc{Ulrike Fischer} for the error report and solution!)
% \item Update of the |\lastpage@putl@bel| code to \pkg{hyperref} 2023-07-08, v7.01b,
-% which now allows fnsymbol as page numbering scheme (while links to, for example,
-% a page named $\|$ still do not work).
+% which now allows fnsymbol as page numbering scheme.
% \end{Version}
% \begin{Version}{2023-10-06 v2.0d}
% \item For plain arabic page numbers only, \pkg{lastpage} again writes the page number
@@ -2237,6 +2300,16 @@ To see the content of the \texttt{enddocument/afterlastpage}-hook
% \item |\lastpage@IfNumericTF| is no longer needed, but has not been removed
% so as not to break older documents that use it in a different context.
% \end{Version}
+% \begin{Version}{2024-07-03 v2.1b}
+% \item The \xclass{beamer} class loads \xpackage{hyperref} partially,
+% so that \xpackage{hyperref} is incorrectly detected as having been loaded.
+% The defining operation for |\lastpage@Hy| has been changed to catch this
+% and other different cases.
+% \end{Version}
+% \begin{Version}{2024-07-07 v2.1c}
+% \item With help from \textsc{David Carlisle} |\lastpage@rmpage| no longer assumes
+% |\@currentHpage| to begin with |page.|.
+% \end{Version}
% \end{History}
% \bigskip
%
diff --git a/macros/latex/contrib/lastpage/lastpage.pdf b/macros/latex/contrib/lastpage/lastpage.pdf
index 02cb1362b7..9d224e6772 100644
--- a/macros/latex/contrib/lastpage/lastpage.pdf
+++ b/macros/latex/contrib/lastpage/lastpage.pdf
Binary files differ
diff --git a/macros/latex/contrib/lettrine/doc/lettrine-demo-arabic.pdf b/macros/latex/contrib/lettrine/doc/lettrine-demo-arabic.pdf
index b2e843d1b7..d9df92737e 100644
--- a/macros/latex/contrib/lettrine/doc/lettrine-demo-arabic.pdf
+++ b/macros/latex/contrib/lettrine/doc/lettrine-demo-arabic.pdf
Binary files differ
diff --git a/macros/latex/contrib/lettrine/doc/lettrine-demo-de.pdf b/macros/latex/contrib/lettrine/doc/lettrine-demo-de.pdf
index f8c0fc77c2..eb04394020 100644
--- a/macros/latex/contrib/lettrine/doc/lettrine-demo-de.pdf
+++ b/macros/latex/contrib/lettrine/doc/lettrine-demo-de.pdf
Binary files differ
diff --git a/macros/latex/contrib/lettrine/doc/lettrine-demo-fr.pdf b/macros/latex/contrib/lettrine/doc/lettrine-demo-fr.pdf
index f85a80ef42..7e51b43944 100644
--- a/macros/latex/contrib/lettrine/doc/lettrine-demo-fr.pdf
+++ b/macros/latex/contrib/lettrine/doc/lettrine-demo-fr.pdf
Binary files differ
diff --git a/macros/latex/contrib/lettrine/doc/lettrine-demo-fr.tex b/macros/latex/contrib/lettrine/doc/lettrine-demo-fr.tex
index d49d889089..8ffa8dbdeb 100644
--- a/macros/latex/contrib/lettrine/doc/lettrine-demo-fr.tex
+++ b/macros/latex/contrib/lettrine/doc/lettrine-demo-fr.tex
@@ -166,14 +166,16 @@ la reliait au château de Treillan distant de quelques kilomètres à peine.
\vspace{.5\baselineskip}
\textit{Changement de police (ici Typocaps)
- et de couleur pour la lettrine :}\\
+ et de couleur pour la lettrine et sa suite :}\\
\verb+\renewcommand{\LettrineFontHook}{\Typocapsfamily\color{red}}+\\
-\verb+\lettrine[findent=.3em]{E}{n} plein marais...+
+\verb+\renewcommand{\LettrineTextFont}{\color{red}\scshape}+\\
+\verb+\lettrine[findent=.3em]{E}{n plein marais de la Souteyranne}+
{% Groupe (changement local de fonte)
\renewcommand{\LettrineFontHook}{\Typocapsfamily\color{red}}
+\renewcommand{\LettrineTextFont}{\color{red}\scshape}
-\lettrine[findent=.3em]{E}{n} plein marais de la Souteyranne, à quelques
+\lettrine[findent=.3em]{E}{n plein marais de la Souteyranne}, à quelques
kilomètres au nord d'Aigues-Mortes, se trouve la Tour Carbonnière.
Construite au XIII\ieme~siècle, elle contrôlait l'unique voie d'accès
terrestre de la ville fortifiée.
diff --git a/macros/latex/contrib/lettrine/doc/lettrine-demo-lua.pdf b/macros/latex/contrib/lettrine/doc/lettrine-demo-lua.pdf
index a0c3aa3bdc..20ec7e2186 100644
--- a/macros/latex/contrib/lettrine/doc/lettrine-demo-lua.pdf
+++ b/macros/latex/contrib/lettrine/doc/lettrine-demo-lua.pdf
Binary files differ
diff --git a/macros/latex/contrib/lettrine/doc/lettrine.pdf b/macros/latex/contrib/lettrine/doc/lettrine.pdf
index 2866dec763..ddca3c74cd 100644
--- a/macros/latex/contrib/lettrine/doc/lettrine.pdf
+++ b/macros/latex/contrib/lettrine/doc/lettrine.pdf
Binary files differ
diff --git a/macros/latex/contrib/lettrine/lettrine.dtx b/macros/latex/contrib/lettrine/lettrine.dtx
index c4bf9472c5..e6df6e3b70 100644
--- a/macros/latex/contrib/lettrine/lettrine.dtx
+++ b/macros/latex/contrib/lettrine/lettrine.dtx
@@ -107,7 +107,7 @@
\ProvidesFile{lettrine.dtx}
%</dtx>
%<*sty|dtx>
- [2024-01-20 v2.60 (Daniel Flipo)]
+ [2024-06-26 v2.61 (Daniel Flipo)]
%</sty|dtx>
% \fi
%
@@ -314,9 +314,6 @@
% \item |\LettrineImagefalse|,
% \item |\LettrineOnGridfalse|,
% \item |\LettrineRealHeightfalse|,
-% \item |\renewcommand*{\LettrineTextFont}{\scshape}|,
-% \item |\renewcommand*{\LettrineTestString}{EFTZ}|,
-% \item |\renewcommand*{\LettrineSecondString}{x}|,
% \item |\renewcommand{\DefaultOptionsFile}{optfile.cfl}|.
% \end{itemize}
%
@@ -336,6 +333,14 @@
% file will be overridden by the optional arguments eventually given
% to the |\lettrine| command.
%
+% More customisation possibilities are offered by the next four
+% commands:
+% \begin{itemize}
+% \item |\renewcommand*{\LettrineFontHook}{}|,
+% \item |\renewcommand*{\LettrineTextFont}{\scshape}|,
+% \item |\renewcommand*{\LettrineTestString}{EFTZ}|,
+% \item |\renewcommand*{\LettrineSecondString}{x}|,
+% \end{itemize}
% |\LettrineTextFont| sets the font used for the second argument
% of |\lettrine|, its default definition is
% |\newcommand{\LettrineTextFont}{\scshape}| (second argument in
@@ -376,6 +381,8 @@
% all initials in a (part of) document:
% |\renewcommand{\LettrineFontHook}{\color[gray]{0.5}}| \\
% will colour the initials following this command in grey.
+% A |\color| command can be added in |\LettrineTextHook| if the text
+% following the dropped cap requires the same or another colour.
%
% \changes{v1.3}{2002/08/23}{Correct the documentation to
% mention the cm-super fonts and the type1ec package by
@@ -452,6 +459,10 @@
% environments but does not work within `center’ environments
% except with option \texttt{[lines=1]}.
% \item |\lettrine| does not work within lists.
+% \item If |\lettrine| is used inside any environment, it is
+% \emph{mandatory} to end the paragraph starting with the dropped
+% capital \emph{inside} the environment; adding a |\par| command
+% before the end of environment usually fixes placement issues.
% \item The LaTeX |\raggedright| command doesn’t work well with the
% TeX |\parshape| command used internally by |\lettrine|.
% Please use the |\RaggedRight| command from the \pkg{ragged2e}
@@ -668,10 +679,10 @@
{
lines.code = \setcounter{L@lines}{#1} ,
depth.code = \setcounter{L@depth}{#1} ,
- lhang.code = \renewcommand*{\L@hang}{#1} ,
- loversize.code = \renewcommand*{\L@oversize}{#1} ,
- lraise.code = \renewcommand*{\L@raise}{#1} ,
- ante.code = \renewcommand*{\L@ante}{#1} ,
+ lhang.store = \L@hang ,
+ loversize.store = \L@oversize ,
+ lraise.store = \L@raise ,
+ ante.store = \L@ante ,
findent.code = \setlength{\L@Findent}{#1} ,
nindent.code = \setlength{\L@Nindent}{#1} ,
slope.code = \setlength{\L@slope}{#1} ,
@@ -1166,10 +1177,13 @@
% dropped cap, add a \cs{rule} to mimic its height above the baseline
% instead.}
%
+% \changes{v2.61}{2024/06/26}{Include the `ante’ box into the \cs{smash}
+% command in case it is shifted down.}
+%
% Write the dropped capital into the left margin, and wrap
% the rest of paragraph around it.
% \begin{macrocode}
- \llap{\mbox{\L@ante}\smash{\raisebox{\L@lraise}{\usebox{\L@lbox}}}%
+ \llap{\smash{\mbox{\L@ante}\raisebox{\L@lraise}{\usebox{\L@lbox}}}%
\ifL@grid\else\rule{0pt}{\L@ruleht}\fi
\hskip \the\L@Findent}%
\unhcopy\L@tbox\relax
diff --git a/macros/latex/contrib/linearregression/README.txt b/macros/latex/contrib/linearregression/README.txt
new file mode 100644
index 0000000000..5283d9b1b6
--- /dev/null
+++ b/macros/latex/contrib/linearregression/README.txt
@@ -0,0 +1,41 @@
+2024-06-10
+---------------------------------------------------------------------
+This file is ** README.txt ** for the ** linearregression ** package
+---------------------------------------------------------------------
+Author: Battista Benciolini <benciolinibattista at gmail dot com>
+---------------------------------------------------------------------
+
+The package ** linearregression ** provides the definition of some
+document-level commands (and some auxiliary functions) that perform
+the linear regression on a set of data and present the data and
+the results in tabular and in graphic form.
+
+ ***************************************************************
+ *** The author would strongly appreciate to receive ***
+ *** any comment, criticism and just usage reports ***
+ ***************************************************************
+
+The expl3 syntax is used in the definition of most of
+the commands and functions.
+
+The distribution includes:
+ README.txt (this file)
+ linearregression.dtx (a self extracting and self documenting file)
+ linearregressionpkg.ins (used to only extract the package)
+ linearregression.pdf (documentation)
+
+Running pdflatex linearregression.dtx generates:
+ linearregression.pfd (full documentation, three pass needed)
+ mainlinearregression.tex (interactive main-program document)
+ linearregression.sty (package)
+ sampledata.txt (as the name says)
+
+Running pdflatex linearregressionpkg.ins generates: linearregression.sty
+(and linearregressionpkg.log)
+
+This program may be used, distributed and modified under
+the conditions of the LaTeX Project Public License.
+(see:http://www.latex-project.org/lppl.txt)
+
+===================== END of README file ======================
+
diff --git a/macros/latex/contrib/linearregression/linearregression.dtx b/macros/latex/contrib/linearregression/linearregression.dtx
new file mode 100644
index 0000000000..2eeea126f8
--- /dev/null
+++ b/macros/latex/contrib/linearregression/linearregression.dtx
@@ -0,0 +1,1235 @@
+%\iffalse
+% file: linearregression.dtx
+% author: Battista Benciolini
+% contact: benciolinibattista at gmail dot com
+% date: see preamble
+%
+% process this file with pdflatex to obtain:
+%
+% - linearregression.pfd (full documentation, three pass needed)
+% - mainlinearregression.tex (interactive main-program document)
+% - linearregression.sty (package)
+% - sampledata.txt (as the name says)
+%
+% The author would strongly appreciate to receive
+% any comment, criticism and just usage report
+%
+%\fi
+%\iffalse
+%<*ins>
+\begingroup
+\input docstrip.tex
+\keepsilent
+\preamble
+------------------------------------------------------------------------
+[2024-06-10]
+This file is part of the (expanded) distribution of linearregression
+The author of linearregression is Battista Benciolini
+<benciolinibattista at gmail dot com >
+------------------------------------------------------------------------
+The author would strongly appreciate to receive
+any comment, criticism and just usage report
+------------------------------------------------------------------------
+This program may be used, distributed and modified under
+the conditions of the LaTeX Project Public License.
+(see: http://www.latex-project.org/lppl.txt)
+------------------------------------------------------------------------
+\endpreamble
+\askforoverwritefalse
+\generate{\file{linearregression.sty}{\from{linearregression.dtx}{package}}}
+\generate{\file{mainlinearregression.tex}{\from{linearregression.dtx}{main}}}
+\nopreamble\nopostamble
+\generate{\file{sampledata.txt}{\from{linearregression.dtx}{data}}}
+\endgroup
+%</ins>
+%\fi
+%\iffalse
+%<*driver>
+\documentclass[a4paper,10pt]{ltxdoc}
+\usepackage[T1]{fontenc}
+\usepackage{lmodern}
+\usepackage[lite,nobysame,non-compressed-cites]{amsrefs}
+\usepackage{amsmath,amssymb,amsfonts}
+\usepackage{multicol}
+\usepackage{linearregression}
+\usepackage{graphics}
+\DeclareRobustCommand*{\Ars}{\textsf{%
+\lower -.48ex\hbox{\rotatebox{-20}{A}}\kern -.3em{rs}}%
+\discretionary{-}{}{\kern -.05em}\TeX\discretionary{-}{}{%
+\kern -.17em}\lower -.357ex\hbox{nica}}% excerpt from some GUIT sty file
+\NewDocumentCommand\vect{m}{\underline{#1}} % vector
+\NewDocumentCommand\barycenter{m}{\overline{#1}} % barycenter
+\NewDocumentCommand\point{}{\vect{y}} % point
+\NewDocumentCommand\coeff{}{\vect{x}} % direction
+\NewDocumentCommand\dx{}{\vect\delta} % direction variation
+\NewDocumentCommand\vv{}{\vect{v}} % barycentric coordinates
+\NewDocumentCommand\trasp{}{^{\mathsf{T}}} % traspose
+\NewDocumentCommand\Renne{}{\mathbb{R}^n} % vector space
+\NewDocumentCommand\dor{}{f} % distance from origin
+\NewDocumentCommand\ipoint{}{i} % index for points
+\NewDocumentCommand\pointsum{}{\sum_{\ipoint=1}^m} % sum over points
+\NewDocumentCommand\reff{m}{(\ref{#1})} % ref in ( )
+\NewDocumentCommand\matr{m}{{#1}} % matrix
+\NewDocumentCommand\mC{}{\matr{C}} % matrix C
+\NewDocumentCommand\mc{}{k} % elements of matrix C
+\NewDocumentCommand\mL{}{\matr{\Lambda}} % matrix lambda
+\NewDocumentCommand\mX{}{\matr{X}} % matrix X
+\NewDocumentCommand\spm{}{\phantom{-}} % space for the sign
+\NewDocumentCommand\ctext{}{caption} % caption (a variable !)
+\NewDocumentCommand\matrixtwotwo{mmmm}{ % | 2 x 2
+\begin{pmatrix} #1 & #2 \\ #3 & #4 \end{pmatrix}} % | matrix
+\DeclareMathOperator\tr{tr} % trace
+\DeclareMathOperator\sgn{sgn} % signum
+\title{Linear regression with \LaTeX}
+\author{Battista Benciolini}
+\NewDocumentCommand\titleauthorfootnote{}{\begingroup% Not an elegant solution
+\let\thefootnote\relax % but it is ok at the moment
+\footnote{Linear regression with LaTeX - available in CTAN}%
+\footnote{Battista Benciolini - contact: benciolinibattista at gmail dot com}%
+\endgroup\setcounter{footnote}{0}}%
+\parindent=0pt
+\begin{document}
+\hypersetup{hidelinks}
+\maketitle
+\titleauthorfootnote
+\tableofcontents
+\vfill
+\DocInput{linearregression.dtx}
+\end{document}
+%</driver>
+%\fi
+%
+% \section{Introduction: first description of the problem\label{intro}}
+% I start with a quote from \Ars\ (April 2021, number 31, page 73):
+% \begin{quotation}
+% The physicist Mario Rossi is investigating a phenomenon,
+% presumably linear, and he performs measurements in his laboratory
+% to verify his hypothesis; he measures the quantity $x$ which generates
+% the phenomenon and he measures also one of the characteristics
+% $y$ showed by the phenomenon under the effect of the stimulation $x$.
+% \\ ... \par
+% Subsequently Mario graphs the data of the table to judge if the points
+% reasonably follow a linear trend or not; in this regard he computes the
+% parameters of the regression line and he draws this line on the graph
+% in order to judge the quality of the obtained results.
+% \\ ... \par
+% Being a \LaTeX\ user, he thinks to kill two birds with one stone:
+% using \LaTeX\ to draw the graph with the experimental data consisting
+% in the $x$, $y$ points and, at the same time, to compute the
+% parameter $a$ e $b$ of the regression line $y = ax+b$,
+% and finally to draw also this line on the same graph.
+% \end{quotation}
+% A summary description of the the problem is therefore the following.
+% A set of data pairs is available and each pair is represented as a point
+% in the plain. A straight line is searched that optimally approximates
+% the points. The first step is therefore the choice of an optimality criterion.
+% This choice is the topic of the next section. \par
+% From the text we also know that the possible deviation of $y$
+% with respect to the model is quite larger than the uncertainty of $x$.
+% \par
+% After reading the description of the problem
+% of Mario Rossi I tried to produce a solution.
+% In this work I will use $y_1$ and $y_2$
+% instead of $x$ and $y$ for the two measured quantities that
+% will become the first and second coordinate, or abscissa and ordinate,
+% in the Cartesian plane.
+% \par
+% The problem can be treated as a mere problem of approximation or
+% alternatively as an estimation problem in the frame of a
+% probabilistic description of the uncertainty. The two treatments are
+% conceptually different. The probabilistic treatment produces some more
+% results, but the estimation of the parameters is the same.
+% On the other hand the treatment as an approximation problem is in some sense
+% more immediate and requires a less extended theoretical background.
+% For this reason it will be preferred here.
+% I consider the original problem and also a variation
+% of it based on the assumption that the two variables are known with
+% the same uncertainty. The two considered situations will prove
+% to be quite different.
+%
+% \section{Geometric definition of there optimality criteria}
+% \begin{figure}
+% \setlength\unitlength{4cm}
+% \begin{picture}(1, 0.7)(0.,0.)
+% \multiput(0.,0.)(1.1,0){3}{\line(1,0){1}}
+% \multiput(0.,0.)(1.1,0){3}{\line(0,1){1}}
+% \multiput(1,1)(1.1,0){3}{\line(-1,0){1}}
+% \multiput(1,1)(1.1,0){3}{\line(0,-1){1}}
+% \thicklines
+% \multiput(0.08,0.06)(1.1,0){3}{\line(4,3){0.88}}
+% \multiput(0.26,0.09)(1.1,0){3}{\circle{0.03}}
+% \multiput(0.45,0.65)(1.1,0){3}{\circle{0.03}}
+% \multiput(0.92,0.44)(1.1,0){3}{\circle{0.03}}
+% \put(0.26,0.09){\line(0,1){0.1050}}
+% \put(0.45,0.65){\line(0,-1){0.3125}}
+% \put(0.92,0.44){\line(0,1){0.2500}}
+% \put(1.36,0.09){\line(-1,0){0.14}}
+% \put(1.55,0.65){\line( 1,0){0.4167}}
+% \put(2.02,0.44){\line(-1,0){0.3333}}
+% \put(2.46,0.09){\line(-3,4){0.05}}
+% \put(2.65,0.65){\line(3,-4){0.15}}
+% \put(3.12,0.44){\line(-3,4){0.12}}
+% \end{picture}
+% \caption{The three kinds of segments
+% used in the definition of the objective function}
+% \label{fig:criteria}
+% \end{figure}
+% For each point given in the plane we can consider the corresponding point
+% with the same abscissa and belonging to the line.
+% Remember that the line is exactly what has to be determined.
+% The distance between the given point and the just defined point on the line
+% is a reasonable measure of the discrepancy between the empirical data and the
+% corresponding theoretical model.
+% The distances we are speaking about are the length of the segments shown
+% in the leftmost scheme of figure (\ref{fig:criteria}).
+% To obtain a global discrepancy measure that considers all the points
+% at once we perform the sum of the squares of the lengths
+% of the mentioned segments. It is now clear that the two coordinates
+% of the points are treated quite differently and play a different role in
+% the definition of the optimality criterion. This choice is reasonable when
+% the measuring errors only (or mainly) affect the second coordinate.
+% The optimal line is the line that minimize the just defined
+% global discrepancy. The procedure for the determination of the optimal line
+% is named linear regression.
+% In this work it is named \textit{classical linear regression}.
+% We can easily exchange the role of the two quantities, i.e.\ we can
+% imagine that the first quantity is affected by errors.
+% The problem is not conceptually different. The segments plotted in the
+% central picture
+% of figure (\ref{fig:criteria}) represent the discrepancy between
+% the empirical data and the model.
+% This other procedure is named \textit{classical linear regression
+% with inverted role of the coordinates}.\par
+% The situation is really different if the two coordinates have to be treated
+% symmetrically.
+% In this case the discrepancy between
+% the empirical data and the model must be defined in a purely geometrical way.
+% Just the line and the points enter in the definition without any special role
+% for any predefined direction. With these requirements it is quite natural
+% to use the distance of each point from the line.
+% Remember that the distance of a point
+% from a line is intended along the shortest path, i.e.\ measured in the
+% direction orthogonal to the line itself. The rightmost scheme of
+% figure (\ref{fig:criteria}) shows the segments that are considered.
+% The global measure of discrepancy is again obtained as the sum
+% of the squares of the length of the mentioned orthogonal segments.
+% The procedure that obtain the optimal line that
+% minimize the just defined global discrepancy is named
+% \textit{symmetrical linear regression}.\par
+% Some arguments of the present section will be repeated in section
+% \ref{package} from the algebraic and computational point of view.
+%
+% \section{General information on the proposed solution, including limitations}
+% The code that implements the solution is recorded in two files, that are
+% a package (sty) file and a main interactive document.
+% The file |linearregression.sty| provides several commands
+% that can be used in any document. The file |mainlinearregression.tex|
+% provides a simple interactive user interface.
+% The package described in the sections \ref{manual} and
+% \ref{package} (user manual and implementation) provides the
+% functions that execute the various needed operations, i.e.\
+% data input, computations, printing the numerical results and
+% generating a graphic representation of data and results.
+% Some auxiliary functions complete the package.
+% The design of the output (tables and plots) includes some arbitrary choices.
+% The style of the graphic output is quite minimalist
+% (e.g.:\ no colors, no variations of line styles).\par
+%
+% \section{Some comments about the programming aspect of the package
+% and its documentation}
+% Large part of the code is written using the |expl3| language.
+% (Is it also named simply L3 ? Does expl still means experimental ?)
+% I have tried to be compliant with the various recommendations and
+% prescriptions for a correct use of the language,
+% but I probably only partly succeeded.\par
+% Different more elegant and more coherent solutions probably exist
+% both for the general structure of the package and for some specific part
+% of the code, but this is what I have been able to do.
+% Some perhaps problematic aspects are mentioned here after\par
+% Several used variables are global and they are accessed by various functions.
+% This makes the various parts of the package
+% quite connected to each other and creates strong dependencies. \par
+% The layered programming style is only partially applied.
+% The partition between document command and lower level functions is present,
+% but part of the low level code is directly in the document commands.
+% Variants are not used.\par
+% One more remarks concern the documentation.
+% I was uncertain about the opportunity of using the class |l3doc|. I decided to
+% remain using |ltxdoc|. This is the reason why I do not use the environment
+% |macro| and the command |\cs| in the documentation of some auxiliary
+% functions named according with the |expl3| standard.
+% (I have just an interim far from optimal solution
+% for a reasonable formatting.)
+%
+% \section{A ready to use simple user interface\label{main}}
+% The main file asks the user for the name of a
+% file containing the data and generates a one (or two) page output.
+%\iffalse
+%<*main>
+%\fi
+% \begin{macrocode}
+\documentclass[a4paper]{article}
+\usepackage{lmodern}
+\usepackage{linearregression}
+\begin{document}
+\pagestyle{empty}
+\lraskfilename
+\lrcomputation
+\lrplot{12.0}{+}{+}{-}{-}
+\lrprint
+\end{document}
+% \end{macrocode}
+%\iffalse
+%</main>
+%\fi
+%
+% \section{A user manual for the package\label{manual}}
+% The various analysis of a data set and the representation of the data
+% and of the results is obtained with a sequence of several commands.
+% The main operations are:
+% (i) selection of the data file, (ii) data imput and computation,
+% (iii) printing of a table,
+% (iv) printing of a picture (that can be repeated with different parameters).
+% It is generally convenient to put the table and the picture(s)
+% in a proper floating environment.
+% The commands for the four mentioned operations are described here after.
+% The first needed operation is to set the name of the data file.
+% This is done with the command \DescribeMacro{\lrfilename}
+% \cs{lrfilename}\marg{file} that has a mandatory argument.
+% The argument is the name of the data file. As an alternative the
+% command \DescribeMacro{\lraskfilename} \cs{lraskfilename} can be used.
+% It asks the user to type the name of the data file in the terminal.
+% \par
+% The macro \DescribeMacro{\lrcomputation}
+% \cs{lrcomputation} reads the data
+% and performs all the computations.
+% The results of the computations remain available in internal
+% variables and are then used by the macro that print them
+% or generates a plot.
+%\par
+% The macro \DescribeMacro{\lrprint}
+% \cs{lrprint} generates a table with all the estimated
+% parameters and some information about the data.
+% \par
+% The macro \DescribeMacro{\lrplot}
+% \cs{lrplot}\marg{imagewidth}\marg{key1}\marg{key2}\marg{key3}\marg{key4}
+% really generates the plot. The first argument is the
+% width of the plot, while the height is computed according
+% to the distribution of the points. The other four arguments are referred
+% to the data points, to the lines determined with classical regression,
+% with classical regression with inverted role of the coordinates and
+% with symmetric regression.
+% The four items, i.e.\ the set of points and the three lines, are drawn
+% or not according to the corresponding character found in |key|$i$.
+% Each item is not plotted if the character is a |-|, it is plotted in any other
+% case. Furthermore the lines are accompanied by a label made by the
+% corresponding |key|, unless it is just a |+|.
+% \par
+% Few words are necessary about the format of the data file.
+% Each record of the file hold the two values related to a point.
+% The two values must be separated by any number (one is needed as a minimum) of
+% space and comma characters. No character different from space
+% can be accepted before the first value and after the second value.
+%
+% \section{An example\label{example}}
+% The data reported here after will be available in |sampledata.txt|
+% and will be used in the example presented in this section .
+%\iffalse
+%<*data>
+%\fi
+% \begin{multicols}{4}
+% \begin{macrocode}
+-0.546 0.107
+ 1.093 -0.510
+ 1.440 1.995
+ 1.414 0.991
+ 0.735 1.585
+-1.848 -0.235
+-0.203 -0.292
+ 1.517 0.779
+ 0.559 -1.341
+-0.462 -0.437
+-0.785 -0.661
+-0.558 0.397
+ 0.181 -2.616
+ 0.619 1.859
+-0.223 -1.915
+ 0.629 -0.534
+-1.989 -2.300
+-0.241 1.098
+-0.931 -1.613
+-1.070 0.592
+ 2.341 0.413
+ 1.993 -0.111
+-2.357 -0.312
+-1.975 0.140
+% \end{macrocode}
+% \end{multicols}
+%\iffalse
+%</data>
+%\fi
+%
+% The analysis of the sample data and the generation of a numeric table
+% is operated by a code similar to the following
+% (see table \ref{tab:sampledata}). \\
+% |\lrfilename{sampledata.txt}| \\ |\lrcomputation| \\
+% |\begin{table}| \\
+% | \lrprint| \\
+% | \caption{Analysis of ... }| \\ |\label{tab:sampledata}\end{table}|
+% \par
+% The generation of some different graphical representation of the data and of
+% the results is operated by a code similar to the following
+% (see figures \ref{fig:sampledataB} ).\\
+% \RenewDocumentCommand\ctext{}{LEFT The three lines are obtained with the three
+% optimality criteria. (AA) classical linear regression; (BB) classical linear
+% regression with inverted role of the coordinates; (S) symmetric linear
+% regression. RIGHT Data points and line estimated with
+% symmetric linear regression.}
+% |\begin{figure}|\\|\lrplot{10.}{-}{AA}{BB}{S}| \\
+% |\lrplot{10.}{+}{-}{-}{+}|
+% \\ |\caption{|\ctext|}|\\ | \label{fig:sampledataB} \end{figure}|
+%
+% \lrfilename{sampledata.txt} \lrcomputation
+% \begin{table} \lrprint \caption{Analysis of the sample data}
+% \label{tab:sampledata} \end{table}
+% \begin{figure} \lrplot{6.}{-}{AA}{BB}{S} \hfill \lrplot{6.}{+}{-}{-}{+}
+% \caption{\ctext} \label{fig:sampledataB} \end{figure}
+%
+% \section{A package for linear regression
+% and the theory behind it\label{package}}
+%\iffalse
+%<*package>
+%\fi
+%
+% \subsection{Math preliminaries and notation \label{prelim}}
+% The coordinates of a set of $m$ points on the plane are available.
+% A straight line is searched that optimally approximates the points.\par
+% The coordinates of a generic point are $y_1$ and $y_2$
+% and they are collected in the vector $\point$.
+% Any given point is identified with the index $\ipoint$.
+% (Explicit indices $(\dots)_1$ or $(\dots)_2$ always refer to the first
+% or second coordinate of a point or to the first or second component
+% of a vector in the plane.
+% Symbolic index $(\dots)\ipoint$ always refers to the different points. Few
+% formulas require both indices $(\dots)_{1\ipoint}$, $(\dots)_{2\ipoint}$.)\par
+% With more then two points a criterion of best approximation
+% is needed to select the optimal line that describes the data. \par
+% Lower case symbols are used for scalars. Lower case underlined
+% symbols are used for vectors in the plane. Upper case symbols
+% are used for matrices.
+% \par
+% It is possible that certain data generate an ambiguity or a singularity
+% in the computation.
+% The following mathematical treatment of the problem
+% do not mention these situations and the code does not deal with them.
+%
+% \subsection{Package declaration, required package and definition of variables}
+% The various macro will be provided in a package file
+% that is introduced as usual. Most of the macros require
+% the \LaTeX3 syntax.
+% \begin{macrocode}
+\ProvidesPackage{linearregression}[2024-06-10]
+\RequirePackage{pict2e}
+\ExplSyntaxOn
+% \end{macrocode}
+% The variables used in the package are defined hereafter.
+% \begin{macrocode}
+\ior_new:N \g_BBLR_file_ior
+\tl_new:N \g_BBLR_file_name_tl
+\int_new:N \g_BBLR_number_of_points_int
+\fp_new:N \g_BBLR_abscissa_fp
+\fp_new:N \g_BBLR_ordinate_fp
+\fp_new:N \g_BBLR_mean_abscissa_fp
+\fp_new:N \g_BBLR_mean_ordinate_fp
+\fp_new:N \g_BBLR_abscissa_SecOrdMoment_fp
+\fp_new:N \g_BBLR_ordinate_SecOrdMoment_fp
+\fp_new:N \g_BBLR_mixed_SecOrdMoment_fp
+\fp_new:N \g_BBLR_slope_A_fp
+\fp_new:N \g_BBLR_slope_B_fp
+\fp_new:N \g_BBLR_slope_S_fp
+\fp_new:N \g_BBLR_intercept_A_fp
+\fp_new:N \g_BBLR_intercept_B_fp
+\fp_new:N \g_BBLR_intercept_S_fp
+\fp_new:N \g_BBLR_cos_fp
+\fp_new:N \g_BBLR_sin_fp
+\fp_new:N \g_BBLR_sig_sin_fp
+\fp_new:N \g_BBLR_eig_diff_fp
+\fp_new:N \g_BBLR_diag_diff_fp
+\tl_new:N \g_BBLR_file_line_tl
+\fp_new:N \g_BBLR_min_abscissa_fp
+\fp_new:N \g_BBLR_min_ordinate_fp
+\fp_new:N \g_BBLR_max_abscissa_fp
+\fp_new:N \g_BBLR_max_ordinate_fp
+\fp_new:N \g_BBLR_min_draw_abscissa_fp
+\fp_new:N \g_BBLR_max_draw_abscissa_fp
+\bool_new:N \g_BBLR_data_eof_bool
+\int_new:N \g_BBLR_record_length_int
+\int_new:N \g_BBLR_rec_count_int
+\int_new:N \g_BBLR_first_separator_int
+\int_new:N \g_BBLR_last_separator_int
+\str_const:Nn \c_BBLR_space_str {~}
+\str_const:Nn \c_BBLR_comma_str {,}
+\str_const:Nn \c_BBLR_plus_str {+}
+\str_const:Nn \c_BBLR_minus_str {-}
+\bool_new:N \g_BBLR_plot_points_bool
+\bool_new:N \g_BBLR_plot_lineA_bool
+\bool_new:N \g_BBLR_plot_lineB_bool
+\bool_new:N \g_BBLR_plot_lineS_bool
+\fp_new:N \g_BBLR_base_fp
+\fp_new:N \g_BBLR_height_fp
+\fp_new:N \g_BBLR_Xbase_fp
+\fp_new:N \g_BBLR_Xheight_fp
+\fp_new:N \g_BBLR_Dabscissa_fp
+\fp_new:N \g_BBLR_Dordinate_fp
+\fp_new:N \g_BBLR_diameter_fp
+\fp_gset:Nn \g_BBLR_diameter_fp{0.2}
+\fp_new:N \g_BBLR_line_base_length_fp
+\fp_new:N \g_BBLR_scale_factor_fp
+\str_new:N \c_BBLR_point_code_str
+\str_new:N \g_BBLR_labelA_str
+\str_new:N \g_BBLR_labelB_str
+\str_new:N \g_BBLR_labelS_str
+% \end{macrocode}
+%
+% \subsection{Preparing data input}
+% \begin{macro}{\lrfilename}
+% The command \cs{lrfilename} records the file name passed as argument.
+% \begin{macrocode}
+\NewDocumentCommand{\lrfilename}{m}{
+\tl_gset:Nn \g_BBLR_file_name_tl {#1}
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\lraskfilename}
+% The command \cs{lraskfilename} asks for the data file name from the terminal.
+% \begin{macrocode}
+\NewDocumentCommand{\lraskfilename}{}{
+\ior_get_term:nN {filename ? } \g_BBLR_file_name_tl
+\tl_trim_spaces:N \g_BBLR_file_name_tl
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Main command declaration, computation of
+% first and second order moments}
+% \begin{macro}{\lrcomputation}
+% The command \cs{lrcomputation} reads the data file and
+% performs all the relevant computations to solve the
+% proposed problem.
+% \begin{macrocode}
+\NewDocumentCommand{\lrcomputation}{}{%
+% \end{macrocode}
+%
+% In the sequel it will results that the first and second order moments
+% of the data provide everything needed to solve the problem.
+% The barycenter of the data is defined as
+% \begin{equation}
+% \barycenter{\point}=\frac{1}{m}\pointsum \point_\ipoint.
+% \label{barycenter} \end{equation}
+% It is convenient to scan the data to accumulate the sum
+% that appears in \reff{barycenter}.
+% The coordinates of each point are read from the file
+% and they are immediately used.
+% It is therefore not necessary to globally record the data.
+% \begin{macrocode}
+\bool_gset_false:N \g_BBLR_data_eof_bool
+\int_zero:N \g_BBLR_number_of_points_int
+\fp_zero:N \g_BBLR_mean_abscissa_fp
+\fp_zero:N \g_BBLR_mean_ordinate_fp
+\ior_open:Nn \g_BBLR_file_ior \g_BBLR_file_name_tl
+\bool_until_do:Nn \g_BBLR_data_eof_bool {
+ \ior_str_get:NN \g_BBLR_file_ior \g_BBLR_file_line_tl
+ \if_eof:w \g_BBLR_file_ior
+ \bool_gset_true:N \g_BBLR_data_eof_bool
+ \else:
+ \int_incr:N \g_BBLR_number_of_points_int
+ \BBLR_decode_data:
+ \fp_gset:Nn \g_BBLR_mean_abscissa_fp
+ {\g_BBLR_mean_abscissa_fp + \g_BBLR_abscissa_fp}
+ \fp_gset:Nn \g_BBLR_mean_ordinate_fp
+ {\g_BBLR_mean_ordinate_fp + \g_BBLR_ordinate_fp}
+ \fi:
+}
+% \end{macrocode}
+% Loop ended. Now close the file and divide by the number of points.
+% \begin{macrocode}
+\ior_close:N \g_BBLR_file_ior
+\fp_gset:Nn \g_BBLR_mean_abscissa_fp
+{\g_BBLR_mean_abscissa_fp / \g_BBLR_number_of_points_int}
+\fp_gset:Nn \g_BBLR_mean_ordinate_fp
+{\g_BBLR_mean_ordinate_fp / \g_BBLR_number_of_points_int}
+% \end{macrocode}
+%
+% The barycentric coordinates are defined for each point
+% \begin{equation} \vv_\ipoint= \point_\ipoint - \barycenter{\point}
+% \label{residual} \end{equation}
+% and the empirical dispersion matrix is defined as:
+% \begin{equation} \mC=\frac{1}{m}\pointsum \vv_\ipoint\vv_\ipoint\trasp .
+% \label{matrixC} \end{equation}
+% Superscript as in $()\trasp$ means transpose. The elements of $\mC$ are the
+% second order central moments and they are denoted as:
+% \begin{equation} \mC=\matrixtwotwo{\mc_{11}}{\mc_{12}}{\mc_{12}}{\mc_{22}}.
+% \label{matrixCc} \end{equation}
+% A second scan of the data is performed to compute the
+% sums that appears in \reff{matrixC} and to determine the
+% the extremal values of the coordinates. Record scan can be regulated
+% by a record counter, because the the number of points is now known.
+% \begin{macrocode}
+\fp_zero:N \g_BBLR_abscissa_SecOrdMoment_fp
+\fp_zero:N \g_BBLR_ordinate_SecOrdMoment_fp
+\fp_zero:N \g_BBLR_mixed_SecOrdMoment_fp
+\fp_gset_eq:NN \g_BBLR_min_abscissa_fp \g_BBLR_mean_abscissa_fp
+\fp_gset_eq:NN \g_BBLR_min_ordinate_fp \g_BBLR_mean_ordinate_fp
+\fp_gset_eq:NN \g_BBLR_max_abscissa_fp \g_BBLR_mean_abscissa_fp
+\fp_gset_eq:NN \g_BBLR_max_ordinate_fp \g_BBLR_mean_ordinate_fp
+\ior_open:Nn \g_BBLR_file_ior \g_BBLR_file_name_tl
+\int_zero:N \g_BBLR_rec_count_int
+\int_do_until:nn
+{\g_BBLR_rec_count_int = \g_BBLR_number_of_points_int}
+{
+ \ior_str_get:NN \g_BBLR_file_ior \g_BBLR_file_line_tl
+ \int_incr:N \g_BBLR_rec_count_int
+ \BBLR_decode_data:
+ \fp_gset:Nn \g_tmpa_fp
+ {\g_BBLR_abscissa_fp - \g_BBLR_mean_abscissa_fp}
+ \fp_gset:Nn \g_tmpb_fp
+ {\g_BBLR_ordinate_fp - \g_BBLR_mean_ordinate_fp}
+ \fp_gset:Nn \g_BBLR_abscissa_SecOrdMoment_fp
+ {\g_BBLR_abscissa_SecOrdMoment_fp + \g_tmpa_fp * \g_tmpa_fp}
+ \fp_gset:Nn \g_BBLR_mixed_SecOrdMoment_fp
+ {\g_BBLR_mixed_SecOrdMoment_fp + \g_tmpa_fp * \g_tmpb_fp}
+ \fp_gset:Nn \g_BBLR_ordinate_SecOrdMoment_fp
+ {\g_BBLR_ordinate_SecOrdMoment_fp + \g_tmpb_fp * \g_tmpb_fp}
+\fp_gset:Nn \g_BBLR_min_abscissa_fp
+{min(\g_BBLR_min_abscissa_fp, \g_BBLR_abscissa_fp)}
+\fp_gset:Nn \g_BBLR_min_ordinate_fp
+{min(\g_BBLR_min_ordinate_fp, \g_BBLR_ordinate_fp)}
+\fp_gset:Nn \g_BBLR_max_abscissa_fp
+{max(\g_BBLR_max_abscissa_fp, \g_BBLR_abscissa_fp)}
+\fp_gset:Nn \g_BBLR_max_ordinate_fp
+{max(\g_BBLR_max_ordinate_fp, \g_BBLR_ordinate_fp)}
+}
+\ior_close:N \g_BBLR_file_ior
+\fp_gset:Nn \g_BBLR_abscissa_SecOrdMoment_fp
+{\g_BBLR_abscissa_SecOrdMoment_fp / \g_BBLR_number_of_points_int}
+\fp_gset:Nn \g_BBLR_mixed_SecOrdMoment_fp
+{\g_BBLR_mixed_SecOrdMoment_fp / \g_BBLR_number_of_points_int}
+\fp_gset:Nn \g_BBLR_ordinate_SecOrdMoment_fp
+{\g_BBLR_ordinate_SecOrdMoment_fp / \g_BBLR_number_of_points_int}
+\fp_gset:Nn \g_BBLR_Dabscissa_fp
+{\g_BBLR_max_abscissa_fp - \g_BBLR_min_abscissa_fp }
+\fp_gset:Nn \g_BBLR_Dordinate_fp
+{\g_BBLR_max_ordinate_fp - \g_BBLR_min_ordinate_fp }
+% \end{macrocode}
+% A single pass algorithm exists, but it is numerically less stable.
+%
+% \subsection{Classical linear regression \label{classical}}
+% A line in the plane is described by the equation
+% \begin{equation} y_2=ay_1+b \label{eqab} \end{equation}
+% that contains the parameters $a$ and $b$.
+% For each point it is possible to define a distance or a discrepancy
+% of the experimental data with respect to the model.
+% In the given problem the second coordinate is much more affected by
+% errors than the first coordinate. It is therefore reasonable
+% to define the approximation error of each point as
+% \begin{equation} e_\ipoint=y_{2\ipoint}-ay_{1\ipoint}-b
+% \label{e}\end{equation}
+% i.e.\ the difference between the empirical value $y_{2\ipoint}$
+% and its model counterpart $ay_{1\ipoint}+b$.
+% The global discrepancy between the data and the model is measured by the
+% least square objective function defined by:
+% \begin{equation} \psi=\pointsum e_\ipoint^2 \label{psiab} \end{equation}
+% and the parameters $a$ and $b$ will be determined
+% just by the minimization of the function $\psi$ defined in \reff{psiab}.
+% \par
+% In the present treatment of the regression problem as a pure
+% approximation problem the definition of $\psi$ in \reff{psiab}
+% seams quite arbitrary. It is anyway a convenient choice.
+% \par
+% Expression \reff{e} can be rewritten in the different form
+% \begin{equation}
+% e_\ipoint=v_{2\ipoint}-av_{1\ipoint}+\barycenter{y}_2-a\barycenter{y}_1-b
+% \label{e2}\end{equation}
+% so that the function to be minimized can be expressed
+% as the sum of two quadratic functions:
+% \begin{equation}
+% \psi=
+% \pointsum (v_{2\ipoint}-av_{1\ipoint})^2+
+% m(\barycenter{y}_2-a\barycenter{y}_1-b)^2
+% \label{psiab2} \end{equation}
+% and the minimum can be attained considering
+% the two terms one at a time.
+% The second term in the right-hand side of \reff{psiab2}
+% vanishes if the choice of $b$ is:
+% \begin{equation} b=\barycenter{y}_2-a\barycenter{y}_1.
+% \label{estb} \end{equation}
+% The first term in the right-hand side of \reff{psiab2} becomes:
+% \begin{equation} \psi_{(a)}=m\left(\mc_{22}-2a\mc_{12}+a^2\mc_{11}\right).
+% \label{parabola} \end{equation}
+% Searching the minimum of $\psi$ w.r.t.\ $a$ is therefore the search
+% of the abscissa of the vertex of a parabola
+% with axis parallel to the second coordinated axis.
+% The result is:
+% \begin{equation} a=\mc_{12}/\mc_{11}
+% \label{esta} \end{equation}
+% Now the slope $a$ and the intercept $b$ can be actually computed.
+% \begin{macrocode}
+\fp_gset:Nn \g_BBLR_slope_A_fp
+{\g_BBLR_mixed_SecOrdMoment_fp / \g_BBLR_abscissa_SecOrdMoment_fp }
+\fp_gset:Nn \g_BBLR_intercept_A_fp
+{\g_BBLR_mean_ordinate_fp - \g_BBLR_slope_A_fp * \g_BBLR_mean_abscissa_fp}
+% \end{macrocode}
+% \par
+% The empirical data and the estimated values of $a$ and $b$
+% can be used to compute
+% the value actually attained by the residuals $e_\ipoint$ and
+% by the function $\psi$. Then the index
+% \begin{equation} \hat\sigma_0^2=\psi/(m-2)\end{equation}
+% can be used to evaluate the general quality of the data and of the model.
+% This claim is clearly quite generic. A complete understanding
+% of this evaluation would require to treat the linear regression
+% problem in the framework of the probabilistic estimation theory.
+% The used notation is derived from that theory.\par
+% If the role of the two coordinates is exchanged the result
+% for $a$ becomes (still with reference to \reff{eqab})
+% \begin{equation} a=\mc_{22}/\mc_{12}.\end{equation}
+% A complete treatment of this different situation would include
+% the redefinition of $e_\ipoint$ and of $\psi$.
+% The slope and the intercept can be computed according with
+% the different assumption.
+% \begin{macrocode}
+\fp_gset:Nn \g_BBLR_slope_B_fp
+{\g_BBLR_ordinate_SecOrdMoment_fp / \g_BBLR_mixed_SecOrdMoment_fp}
+\fp_gset:Nn \g_BBLR_intercept_B_fp
+{\g_BBLR_mean_ordinate_fp - \g_BBLR_slope_B_fp * \g_BBLR_mean_abscissa_fp}
+% \end{macrocode}
+%
+% \subsection{Symmetric linear regression \label{symmetric}}
+% If both the coordinates of the experimental points are affected
+% by the same uncertainty it is advisable to use a more symmetric
+% optimality criterion and it is convenient to use a different model equation.
+% \par
+% The same line can be described by a different equation, i.e.\
+% \begin{equation} x_1y_1+x_2y_2=\dor \end{equation}
+% or in vector form:
+% \begin{equation} \coeff\trasp\point=\dor. \label{eqvx} \end{equation}
+% The parameters in \reff{eqvx}
+% are the scalar $\dor$ and the elements
+% of the vector $\coeff$, i.e.\ $x_1$ and $x_2$.
+% The line described by \reff{eqvx} is obviously
+% invariant when the three parameters are simultaneously
+% scaled by a constant. The normalization condition
+% \begin{equation} \coeff\trasp\coeff=1, \label{norm} \end{equation}
+% supplemented by $\dor\ge 0$,
+% is quite convenient because the parameters will assume
+% a significant geometrical meaning:
+% $\coeff$ is the unit vector orthogonal to the line and $\dor$
+% is the distance of the line from the origin.
+% The expression
+% \begin{equation} d=\dor-\coeff\trasp\point \label{distance} \end{equation}
+% is the distance of the generic point $\point$ from the line
+% with a sign that is positive for points on the same side of the origin.
+% \par
+% The distance of each given point from the desired optimal line
+% is denoted by $d_\ipoint$.
+% It has a clear intrinsic geometrical meaning and it does not
+% privileges one coordinate w.r.t.\ the other.
+% The function to be minimized by the optimal line is
+% \begin{equation}
+% \phi=\frac{1}{m}\pointsum d_\ipoint^2. \label{phi1} \end{equation}
+% The parameters of \reff{eqvx} are determined by the minimization
+% of the function $\phi$ that can be expressed as:
+% \begin{equation}
+% \phi=\frac{1}{m}\pointsum (\coeff\trasp\point_{\ipoint}-\dor)^{2}
+% \label{phi2} \end{equation}
+% and then, after some algebraic manipulations:
+% \begin{equation}
+% \phi=\coeff\trasp\mC\coeff+(\dor-\coeff\trasp\barycenter{\point})^2
+% \label{phi3}. \end{equation}
+% The function $\phi$ is composed (as it was the function $\psi$) by the sum
+% of two parts. The second term in the right-hand side of \reff{phi3}
+% vanishes if the choice of $\dor$ is:
+% \begin{equation} \dor=\coeff\trasp\barycenter{\point}.
+% \label{estd} \end{equation}
+% Then it is necessary to minimize the function
+% \begin{equation} \phi_{(\coeff)} = \coeff\trasp\mC\coeff
+% \label{quadraticfun} \end{equation}
+% with the constrain $\coeff\trasp\coeff=1$.
+% It can be proved that the function $\phi_{(\coeff)}$
+% is stationary if $\coeff$ is an eigenvector of \mC. \par
+% The function $\phi_{(\coeff)}$ and the constrain must be combined
+% using a Lagrange multiplier:
+% \begin{equation}
+% \Phi= \coeff\trasp\mC\coeff+\lambda(1-\coeff\trasp\coeff).
+% \label{Phi} \end{equation}
+% Then the stationarity points of $\Phi$ must be determined.
+% Equating to zero the derivatives of $\Phi$ gives
+% \begin{equation}
+% \mC\coeff=\lambda\coeff
+% \label{auto} \end{equation}
+% i.e.\ $\coeff$ is an eigenvector of $\mC$. \par
+% The same result is obtained with the following argument.
+% The function $\phi_{(\coeff)}$ is stationary if its first variation
+% is zero. The variation of $\coeff$ is named $\dx$ .
+% It must respect the constrain, that becomes $\dx\trasp\coeff=0$.
+% The first variation of $\phi_{(\coeff)}$ is $2\dx\trasp\mC\coeff$,
+% and it is zero if and only if the following implication is valid:
+% $\dx\trasp\coeff=0 \implies \dx\trasp\mC\coeff=0$,
+% and the implication is valid if and only if the vector
+% $\mC\coeff$ has the same direction of $\coeff$, i.e.\ if
+% $\coeff$ is an eigenvector of $\mC$.
+% \par
+% The result on the optimal line
+% can be described geometrically in the following way:
+% (i) the optimal line includes the barycenter of the data;
+% (ii) the optimal line is orthogonal to the eigenvector of
+% $\mC$ corresponding to the minimum eigenvalue.\par
+% The obtained result is also valid in $\Renne$.
+% A set of points in $\Renne$ must be approximated by an $(n-1)$-dimensional
+% affine subspace. (Other more general situations can be considered.)
+% \par
+% The trace of the matrix $\mC$, denoted as $\tr(\mC)$, is a measure of the
+% global dispersion of the set of points.
+% The minimum eigenvalue $\lambda_{\textrm{min}}$ of $\mC$ is a measure
+% of the dispersion of the set of points with
+% respect to the optimal affine subspace. Therefore the index
+% \begin{equation} \frac{n\lambda_{\textrm{min}}}{\tr(\mC)}
+% \end{equation}
+% can be used as an indicator of the relative residual
+% dispersion of the data around the optimal line.
+% The defined index is dimensionless and it is
+% always between $0$ and $1$.
+% \par
+% For the actual computation of $\coeff$ it is convenient to consider
+% the spectral factorization of the matrix $\mC$, i.e.\
+% $\mC=\mX\mL\mX\trasp$ where $\mL$ is a diagonal matrix
+% whose diagonal elements are the eigenvalues of $\mC$
+% and $\mX$ is an orthonormal matrix whose columns are
+% the eigenvectors of $\mC$. The spectral factorization exists
+% for any symmetric matrix, but it is specially simple for
+% a $2\times 2$ matrix.
+% \begin{equation}
+% \matrixtwotwo{\mc_{11}}{\mc_{12}}{\mc_{12}}{\mc_{22}}=
+% \matrixtwotwo{c}{-s}{s}{\spm c}
+% \matrixtwotwo{\lambda_1}{0}{0}{\lambda_2}
+% \matrixtwotwo{\spm c}{s}{-s}{c}
+% \label{spectral}\end{equation}
+% The eigenvalues can be easily obtained because
+% their sum is the trace of $\mC$
+% \begin{equation}
+% \lambda_1 + \lambda_2 = \mc_{11}+\mc_{22}
+% \label{Sum}\end{equation}
+% and their product
+% is the determinant of the same matrix.
+% Therefore after some manipulations it results:
+% \begin{equation}
+% \lambda_1 - \lambda_2 = \sqrt{(\mc_{11}-\mc_{22})^2+4\mc_{12}^2}
+% \label{Difference}\end{equation}
+% and the two eigenvalues are then immediately obtained. \par
+% It is convenient to compute the difference of the two diagonal elements
+% of the dispersion matrix and the difference of its eigenvalues.
+% \begin{macrocode}
+\fp_gset:Nn \g_BBLR_diag_diff_fp
+{\g_BBLR_abscissa_SecOrdMoment_fp - \g_BBLR_ordinate_SecOrdMoment_fp}
+\fp_gset:Nn \g_BBLR_eig_diff_fp
+{sqrt(\g_BBLR_diag_diff_fp * \g_BBLR_diag_diff_fp +
+ 4 * \g_BBLR_mixed_SecOrdMoment_fp * \g_BBLR_mixed_SecOrdMoment_fp)}
+% \end{macrocode}
+% The computation of $c$ and $s$ is obtained from \reff{spectral}
+% taking into account that $c^2+s^2=1$.
+% From \reff{spectral} it results:
+% \begin{equation} \mc_{11}-\mc_{22}=(\lambda_1-\lambda_2)(c^2-s^2)
+% \label{Cos2A}\end{equation}
+% and also
+% \begin{equation} \mc_{12}=(\lambda_1-\lambda_2)cs
+% \label{Sin2A}\end{equation}
+% that is only used to determine the sign of $cs$.
+% The expression for the parameters $c$ and $s$ are:
+% \begin{equation}
+% c=\sqrt{\frac{1}{2}+\frac{\mc_{11}-\mc_{22}}{2(\lambda_1-\lambda_2)}}
+% \label{cos}\end{equation}
+% \begin{equation}
+% s=\sgn(\mc_{12})
+% \sqrt{\frac{1}{2}-\frac{\mc_{11}-\mc_{22}}{2(\lambda_1-\lambda_2)}}
+% \label{sin}\end{equation}
+% The parameters $s$ and $c$ are the sine and cosine
+% of the angle between the axis of $y_1$ and the eigenvector
+% corresponding to the maximum eigenvalue. \par
+% They are computed using the already defined elements.
+% \begin{macrocode}
+\fp_gset:Nn \g_BBLR_cos_fp%
+{sqrt((1 + \g_BBLR_diag_diff_fp / \g_BBLR_eig_diff_fp) / 2)}
+\fp_gset:Nn \g_BBLR_sig_sin_fp {\fp_sign:n {\g_BBLR_mixed_SecOrdMoment_fp}}
+\fp_gset:Nn \g_BBLR_sin_fp
+{\g_BBLR_sig_sin_fp*sqrt((1-\g_BBLR_diag_diff_fp / \g_BBLR_eig_diff_fp) / 2)}
+% \end{macrocode}
+% The vector $\coeff$ is :
+% \begin{equation}
+% \coeff=\sgn(-s\barycenter{y}_1+c\barycenter{y}_2)
+% \begin{pmatrix} -s \\ c\end{pmatrix}.
+% \label{xhat}\end{equation}
+%
+%\par
+% The parameter $a$ of model \reff{eqab} can be obtained as:
+% \begin{equation}
+% a=s/c
+% \end{equation}
+% Now the slope and the intercept of the optimal line corresponding to the
+% symmetric criterion can be computed.
+%
+% \begin{macrocode}
+\fp_gset:Nn \g_BBLR_slope_S_fp
+{\g_BBLR_sin_fp / \g_BBLR_cos_fp }
+\fp_gset:Nn \g_BBLR_intercept_S_fp
+{\g_BBLR_mean_ordinate_fp - \g_BBLR_slope_S_fp * \g_BBLR_mean_abscissa_fp}
+}
+% \end{macrocode}
+%
+% The theoretical treatment of the proposed problem and the
+% implementation of its numerical solution end here.
+% \end{macro}
+%
+% \subsection{Print of table of results}
+% \begin{macro}{\lrprint}
+% The command \cs{lrprint} prints some info on the data
+% and the results of the computations in tabular form.
+% \begin{macrocode}
+\NewDocumentCommand{\lrprint}{}{
+\begin{center}
+\begin{tabular}{| l | r |} \hline
+ Data~File: & \g_BBLR_file_name_tl \\ \hline
+ Number~of~points: & \int_use:N\g_BBLR_number_of_points_int \\ \hline
+ Mean~values~of~the~coordinates: &%
+ $\fp_use:N \g_BBLR_mean_abscissa_fp$ \\ &
+ $\fp_use:N \g_BBLR_mean_ordinate_fp$ \\ \hline
+ Minimum~values~of~the~coordinates: &%
+ $\fp_use:N \g_BBLR_min_abscissa_fp$ \\ &
+ $\fp_use:N \g_BBLR_min_ordinate_fp$ \\ \hline
+ Maximum~values~of~the~coordinates: &%
+ $\fp_use:N \g_BBLR_max_abscissa_fp$ \\ &
+ $\fp_use:N \g_BBLR_max_ordinate_fp$ \\ \hline
+ {Second~order~moments}\phantom{xxxxxxxxx}{abscissa} &%
+ $\fp_use:N \g_BBLR_abscissa_SecOrdMoment_fp$ \\
+ \multicolumn{1}{|r|}{mixed} & %
+$\fp_use:N \g_BBLR_mixed_SecOrdMoment_fp$ ~ \\
+\multicolumn{1}{|r|}{ordinate} & %
+$\fp_use:N \g_BBLR_ordinate_SecOrdMoment_fp$ \\ \hline
+ Slope~and~intercept~of~optimal~line & $\fp_use:N \g_BBLR_slope_A_fp$ \\
+ (estimated~with~errors~in~ordinate)&$\fp_use:N \g_BBLR_intercept_A_fp$\\ \hline
+ Slope~and~intercept~of~optimal~line & $\fp_use:N \g_BBLR_slope_B_fp$ \\
+ (estimated~with~errors~in~abscissa)&$\fp_use:N \g_BBLR_intercept_B_fp$\\ \hline
+ Components~of~unit~vector~along~the~line & $\fp_use:N \g_BBLR_cos_fp$ \\
+ & $\fp_use:N \g_BBLR_sin_fp$ \\
+ Slope~and~intercept~of~optimal~line &$\fp_use:N \g_BBLR_slope_S_fp$ \\
+(estimated~with~symmetric~regression) &
+ $\fp_use:N \g_BBLR_intercept_S_fp$\\ \hline
+\end{tabular}
+\end{center}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Plot of points and lines}
+% \begin{macro}{\lrplot}
+% The command \cs{lrplot} produce a framed plot of the data
+% and of the regression line(s). The size of the plot and its actual
+% content are determined by the arguments.
+% \begin{macrocode}
+\NewDocumentCommand{\lrplot}{mmmmm}{%
+% \end{macrocode}
+% The plotting area is divided into a main plotting area for
+% the representation of points and line(s) and a small surrounding free space.
+% The height is computed taking into account the distribution of the points.
+% \begin{macrocode}
+\fp_gset:Nn \g_BBLR_base_fp {#1}
+\fp_gset:Nn \g_BBLR_Xbase_fp {\g_BBLR_base_fp - 0.6}
+\fp_gset:Nn \g_BBLR_scale_factor_fp{\g_BBLR_Xbase_fp / \g_BBLR_Dabscissa_fp}
+\fp_gset:Nn \g_BBLR_Xheight_fp {\g_BBLR_Dordinate_fp * \g_BBLR_scale_factor_fp}
+\fp_gset:Nn \g_BBLR_height_fp {\g_BBLR_Xheight_fp + 0.6}
+% \end{macrocode}
+% The information about the items to be plotted is in the remaining arguments.
+% \begin{macrocode}
+\str_gset:Nn \g_BBLR_point_code_str {#2}
+\str_gset:Nn \g_BBLR_labelA_str {#3}
+\str_gset:Nn \g_BBLR_labelB_str {#4}
+\str_gset:Nn \g_BBLR_labelS_str {#5}
+\bool_gset:Nn \g_BBLR_plot_points_bool
+{!(\str_if_eq_p:NN \g_BBLR_point_code_str \c_BBLR_minus_str)}
+\bool_gset:Nn \g_BBLR_plot_lineA_bool
+{!(\str_if_eq_p:NN \g_BBLR_labelA_str \c_BBLR_minus_str)}
+\bool_gset:Nn \g_BBLR_plot_lineB_bool
+{!(\str_if_eq_p:NN \g_BBLR_labelB_str \c_BBLR_minus_str)}
+\bool_gset:Nn \g_BBLR_plot_lineS_bool
+{!(\str_if_eq_p:NN \g_BBLR_labelS_str \c_BBLR_minus_str)}
+% \end{macrocode}
+% The unit of length is $1$ centimeter. The plotting area is framed.
+% \begin{macrocode}
+\setlength{\unitlength}{1.0cm}
+\fp_gset:Nn \g_tmpa_fp {\g_BBLR_Xbase_fp +0.2}
+\fp_gset:Nn \g_tmpb_fp {\g_BBLR_Xheight_fp +0.1}
+\begin{picture}(\fp_use:N\g_BBLR_base_fp,\fp_use:N\g_BBLR_height_fp)(-0.3,-0.3)
+\put(-0.1,-0.1){\line(1,0){\fp_use:N\g_tmpa_fp}}
+\put(-0.1,\fp_use:N\g_tmpb_fp){\line(1,0){\fp_use:N\g_tmpa_fp}}
+\fp_gset:Nn \g_tmpa_fp {\g_tmpa_fp -0.1}
+\fp_gset:Nn \g_tmpb_fp {\g_tmpb_fp +0.1}
+\put(-0.1,-0.1){\line(0,1){\fp_use:N\g_tmpb_fp}}
+\put(\fp_use:N\g_tmpa_fp,-0.1){\line(0,1){\fp_use:N\g_tmpb_fp}}
+% \end{macrocode}
+% The plot of points and line(s) is obtained using auxiliary functions.
+% \begin{macrocode}
+\thicklines
+\bool_if:nT {\g_BBLR_plot_points_bool}{\BBLR_plot_points:}
+\bool_if:nT {\g_BBLR_plot_lineA_bool}{
+\BBLR_draw_line:NNN \g_BBLR_slope_A_fp\g_BBLR_intercept_A_fp\g_BBLR_labelA_str}
+\bool_if:nT {\g_BBLR_plot_lineB_bool}{
+\BBLR_draw_line:NNN \g_BBLR_slope_B_fp\g_BBLR_intercept_B_fp\g_BBLR_labelB_str}
+\bool_if:nT {\g_BBLR_plot_lineS_bool}{
+\BBLR_draw_line:NNN \g_BBLR_slope_S_fp\g_BBLR_intercept_S_fp\g_BBLR_labelS_str}
+\end{picture}
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Functions for internal use}
+% The functions listed here after are for internal
+% use and are just minimally documented. \par
+% The function |\BBLR_decode_data:|
+% \marginpar{\raggedleft\texttt{
+% \textbackslash{}BBLR\textunderscore{}decode\textunderscore{}data:}}
+% extract two numeric values from the string read from the file.
+% Some tricky actions are necessary because
+% a so called csv file sometime do not contains the separating commas.
+% \begin{macrocode}
+\cs_new_protected:Nn \BBLR_decode_data: {
+\tl_trim_spaces:N \g_BBLR_file_line_tl
+\int_gzero:N \g_tmpa_int
+\int_gzero:N \g_BBLR_first_separator_int
+\int_gzero:N \g_BBLR_last_separator_int
+\int_gset:Nn \g_BBLR_record_length_int {
+\str_count:N \g_BBLR_file_line_tl}
+\str_map_variable:NNn \g_BBLR_file_line_tl \g_tmpa_str {
+\int_gincr:N \g_tmpa_int
+\bool_lazy_or:nnTF
+{\str_if_eq_p:NN \g_tmpa_str \c_BBLR_comma_str}
+{\str_if_eq_p:NN \g_tmpa_str \c_BBLR_space_str}
+{\int_gset_eq:NN \g_BBLR_last_separator_int \g_tmpa_int
+\int_if_zero:nTF {\g_BBLR_first_separator_int}
+{\int_gset_eq:NN \g_BBLR_first_separator_int \g_tmpa_int
+}{\prg_do_nothing:}
+}{\prg_do_nothing:}
+}
+\int_gincr:N \g_BBLR_last_separator_int
+\int_gdecr:N \g_BBLR_first_separator_int
+\fp_gset:Nn \g_BBLR_abscissa_fp{
+\str_range:Nnn \g_BBLR_file_line_tl{1}{\g_BBLR_first_separator_int}}
+\fp_gset:Nn \g_BBLR_ordinate_fp{
+\str_range:Nnn \g_BBLR_file_line_tl
+{\g_BBLR_last_separator_int}{\g_BBLR_record_length_int}}
+}
+% \end{macrocode}
+% The function |\BBLR_plot_points:| \marginpar{\raggedleft\texttt{
+% \textbackslash{}BBLR\textunderscore{}plot\textunderscore{}points:}}
+% scans the data file to read the coordinates and
+% it draws a circle for each point.
+%
+% \begin{macrocode}
+\cs_new_protected:Nn \BBLR_plot_points: {
+\ior_open:Nn \g_BBLR_file_ior \g_BBLR_file_name_tl
+\int_zero:N \g_BBLR_rec_count_int
+\int_do_until:nn
+{\g_BBLR_rec_count_int = \g_BBLR_number_of_points_int}
+{
+ \ior_str_get:NN \g_BBLR_file_ior \g_BBLR_file_line_tl
+ \int_incr:N \g_BBLR_rec_count_int
+ \BBLR_decode_data:
+ \fp_gset:Nn \g_tmpa_fp{(\g_BBLR_abscissa_fp-\g_BBLR_min_abscissa_fp)*
+ \g_BBLR_scale_factor_fp}
+ \fp_gset:Nn \g_tmpb_fp{(\g_BBLR_ordinate_fp-\g_BBLR_min_ordinate_fp)*
+ \g_BBLR_scale_factor_fp}
+ \put(\fp_use:N\g_tmpa_fp, \fp_use:N\g_tmpb_fp){
+ {\circle*{\fp_use:N\g_BBLR_diameter_fp}}}
+}
+\ior_close:N \g_BBLR_file_ior
+}
+% \end{macrocode}
+% The function |\BBLR_draw_line:NNN| \marginpar{\raggedleft\texttt{
+% \textbackslash{}BBLR\textunderscore{}draw\textunderscore{}line:NNN}}
+% draws the line. The first two parameters given as arguments
+% are the slope and the intercept. The third parameter is a label.
+% \par The next code finds the intersection of the line with the plotting area.
+% \begin{macrocode}
+\cs_new_protected:Nn \BBLR_draw_line:NNN {
+\fp_gset:Nn \fp_tmpa_fp {#1 * \g_BBLR_min_abscissa_fp + #2 }
+\fp_compare:nTF{\fp_tmpa_fp > \g_BBLR_max_ordinate_fp}{
+\fp_gset:Nn \g_BBLR_min_draw_abscissa_fp {(\g_BBLR_max_ordinate_fp -#2) / #1}
+}{
+\fp_compare:nTF{\fp_tmpa_fp < \g_BBLR_min_ordinate_fp}{
+\fp_gset:Nn \g_BBLR_min_draw_abscissa_fp {(\g_BBLR_min_ordinate_fp - #2) / #1}
+}{
+\fp_gset:Nn \g_BBLR_min_draw_abscissa_fp { \g_BBLR_min_abscissa_fp }
+}}
+\fp_gset:Nn \fp_tmpa_fp {#1 * \g_BBLR_max_abscissa_fp + #2 }
+\fp_compare:nTF{\fp_tmpa_fp > \g_BBLR_max_ordinate_fp}{
+\fp_gset:Nn \g_BBLR_max_draw_abscissa_fp {(\g_BBLR_max_ordinate_fp -#2) / #1}
+}{
+\fp_compare:nTF{\fp_tmpa_fp < \g_BBLR_min_ordinate_fp}{
+\fp_gset:Nn \g_BBLR_max_draw_abscissa_fp { (\g_BBLR_min_ordinate_fp - #2) / #1}
+}{
+\fp_gset:Nn \g_BBLR_max_draw_abscissa_fp { \g_BBLR_max_abscissa_fp }
+}}
+% \end{macrocode}
+% Some parameters (i.e.\ starting point and base-length)
+% are computed and the line is drawn.
+% \begin{macrocode}
+\fp_gset:Nn \fp_tmpa_fp {(\g_BBLR_min_draw_abscissa_fp -
+\g_BBLR_min_abscissa_fp)* \g_BBLR_scale_factor_fp}
+\fp_gset:Nn \fp_tmpb_fp {(#1 * \g_BBLR_min_draw_abscissa_fp + #2 -
+\g_BBLR_min_ordinate_fp)* \g_BBLR_scale_factor_fp}
+\fp_gset:Nn \fp_BBLR_line_base_length_fp{(\g_BBLR_max_draw_abscissa_fp -
+\g_BBLR_min_draw_abscissa_fp) * \g_BBLR_scale_factor_fp}
+\put(\fp_use:N\fp_tmpa_fp, \fp_use:N\fp_tmpb_fp){
+\line(1.,\fp_use:N #1){\fp_use:N\fp_BBLR_line_base_length_fp}}
+% \end{macrocode}
+%The third parameter is used as a label, if it is not a |+|.
+% \begin{macrocode}
+\bool_if:nF {\str_if_eq_p:NN #3 \c_BBLR_plus_str}{
+\fp_gset:Nn \fp_tmpa_fp
+{0.08 * \g_BBLR_min_draw_abscissa_fp + 0.92 * \g_BBLR_max_draw_abscissa_fp}
+\fp_gset:Nn \fp_tmpb_fp {#1 * \fp_tmpa_fp + #2 }
+\fp_gset:Nn \fp_tmpa_fp
+{(\fp_tmpa_fp-\g_BBLR_min_abscissa_fp)*\g_BBLR_scale_factor_fp
++ 0.3 * #1 /sqrt(1.+#1*#1)}
+\fp_gset:Nn \fp_tmpb_fp
+{(\fp_tmpb_fp-\g_BBLR_min_ordinate_fp)* \g_BBLR_scale_factor_fp
+- 0.3 /sqrt(1.+#1*#1)}
+\put(\fp_use:N\fp_tmpa_fp, \fp_use:N\fp_tmpb_fp){#3}
+}
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\ExplSyntaxOff
+% \end{macrocode}
+%
+%
+%\iffalse
+%</package>
+%\fi
+%
+% \section{Acknowledgments}
+% The colleagues Paolo Zatelli, Alfonso Vitti and Giulia Graldi
+% read some preliminary version
+% of this text and suggested several improvements. \par
+%
+% \section{About the references}
+% \subsection*{Mathematics}
+% The books by Lang \cite{Lang} and by Strang \cite{Strang} give
+% all the background on linear algebra.\par
+% The texts by Sansò \cites{Sanso1, Sanso2} (in italian) treat the
+% teory of probability and its application to metrology.
+% See: |http://www.geolab.polimi.it/text-books/|.\par
+% The paper by Karl Pearson \cite{Pearson} is the oldest text that
+% I have found on the symmetric regression, or total regression.
+% \subsection*{Programming}
+% The two documents \cites{L3A, L3B} are the fountamental and official guide
+% for \LaTeX3 programming. The books by Donald Knuth \cites{Knuth}
+% and Leslie Lamport \cites{Lamport} are still essential references.
+% The papers by Enrico Gregorio \cites{egreg1, egreg2, egreg3, egreg4, egreg5}
+% explain some general and some special aspect of \LaTeX3 programming.
+%
+% \section{References}
+% \begin{biblist}[\normalsize]
+% \bib{egreg1}{article}{
+% author={Gregorio, Enrico},
+% journal={ArsTeXnica},
+% number={14},pages={41\ndash 47}, date={2012},
+% title={\LaTeX3: un nuovo gioco per i maghi e per diventarlo},
+% }
+% \bib{egreg2}{article}{
+% author={Gregorio, Enrico},
+% journal={ArsTeXnica},
+% number={22},pages={69\ndash 77}, date={2016},
+% title={Liste, cicli, \LaTeX3},
+% }
+% \bib{egreg3}{article}{
+% author={Gregorio, Enrico},
+% journal={ArsTeXnica},
+% number={24},pages={37\ndash 44}, date={2017},
+% title={Condizionali in \LaTeX},
+% }
+% \bib{egreg4}{article}{
+% author={Gregorio, Enrico},
+% journal={ArsTeXnica},
+% number={30},pages={36\ndash 45}, date={2020},
+% title={Funzioni e |expl3|},
+% }
+% \bib{egreg5}{article}{
+% author={Gregorio, Enrico},
+% journal={TUGboat},
+% volume={41},number={3},pages={299\ndash 307}, date={2020},
+% title={Functions and |expl3|},
+% }
+% \bib{Knuth}{book}{
+% author={Knuth, Donald},
+% title={The TeXbook},
+% date={1986},
+% publisher={American Mathematical Society and Addison-Wesley},
+% }
+% \bib{Lang}{book}{
+% author={Lang, Serge},
+% title={Linear Algebra},
+% date={1987},
+% publisher={Springer-Verlag},
+% place={Berlin Heidelberg},
+% }
+% \bib{Lamport}{book}{
+% author={Lamport, Leslie},
+% title={LaTeX - A document preparation system (2nd ed.\ )},
+% date={1994},
+% publisher={Addison-Wesley},
+% note={something interesting in the fist edition, too},
+% }
+% \bib{L3A}{article}{
+% title={The |expl3| package and LaTeX3 programming},
+% author={The LaTeX project team}, date={2024},
+% note={file: |expl3.pdf| available in CTAN in l3kernel},
+% }
+% \bib{L3B}{article}{
+% title={The \LaTeX3 interface},
+% author={The LaTeX project team}, date={2024},
+% note={file: |interface3.pdf| available in CTAN in l3kernel}
+% }
+% \bib{Pearson}{article}{
+% title={On lines and planes of closest fit to systems of points in space},
+% author={Pearson, Karl}, date={1901},
+% journal={Philosophical Magazine},
+% volume={2},number={11},pages={559\ndash 572},
+% }
+% \bib{Sanso1}{book}{
+% author={Sansò, Fernando},
+% title={Elementi di teoria della probabilità},
+% date={1996},
+% publisher={Città-Studi},
+% place={Milano},
+% }
+% \bib{Sanso2}{book}{
+% author={Sansò, Fernando},
+% title={La teoria della stima},
+% date={1996},
+% publisher={Città-Studi},
+% place={Milano},
+% }
+% \bib{Strang}{book}{
+% author={Strang, Gilbert},
+% title={Introduction to linear algebra},
+% date={2009},
+% publisher={Wellesley-Cambridge press,},
+% }
+% \end{biblist}
+%
+% \par\vfill\centerline{\small ***}\vfill
+% \end{document}
+%
+%\iffalse
+% END OF FILE linearregression.dtx
+%\fi
diff --git a/macros/latex/contrib/linearregression/linearregression.pdf b/macros/latex/contrib/linearregression/linearregression.pdf
new file mode 100644
index 0000000000..5d28931c1a
--- /dev/null
+++ b/macros/latex/contrib/linearregression/linearregression.pdf
Binary files differ
diff --git a/macros/latex/contrib/linearregression/linearregressionpkg.ins b/macros/latex/contrib/linearregression/linearregressionpkg.ins
new file mode 100644
index 0000000000..699f767b62
--- /dev/null
+++ b/macros/latex/contrib/linearregression/linearregressionpkg.ins
@@ -0,0 +1,20 @@
+\input docstrip.tex
+\keepsilent
+\preamble
+------------------------------------------------------------------------
+[2024-06-10]
+This file is part of the (expanded) distribution of linearregression
+The author of linearregression is Battista Benciolini
+<benciolinibattista at gmail dot com >
+------------------------------------------------------------------------
+The author would strongly appreciate to receive
+any comment, criticism and just usage report
+------------------------------------------------------------------------
+This program may be used, distributed and modified under
+the conditions of the LaTeX Project Public License.
+(see: http://www.latex-project.org/lppl.txt)
+------------------------------------------------------------------------
+\endpreamble
+\askforoverwritefalse
+\generate{\file{linearregression.sty}{\from{linearregression.dtx}{package}}}
+\endbatchfile
diff --git a/macros/latex/contrib/listings/listings-devel.pdf b/macros/latex/contrib/listings/listings-devel.pdf
index 5cf9af1ff8..da1506f1df 100644
--- a/macros/latex/contrib/listings/listings-devel.pdf
+++ b/macros/latex/contrib/listings/listings-devel.pdf
Binary files differ
diff --git a/macros/latex/contrib/listings/listings.dtx b/macros/latex/contrib/listings/listings.dtx
index 06f881726b..525ba1a4ae 100644
--- a/macros/latex/contrib/listings/listings.dtx
+++ b/macros/latex/contrib/listings/listings.dtx
@@ -135,7 +135,7 @@
% Hoffmann became the maintainer of the \packagename{listings}
% package in 2013; see the Preface for details.}~ %
% \textless\lstemail\textgreater}
-% \date{2024/03/11\enspace\enspace Version 1.10a\ \box\abstractbox}
+% \date{2024/05/25\enspace\enspace Version 1.10b\ \box\abstractbox}
% \def\lstemail{\href{mailto:j.hoffmann@fh-aachen.de}{\texttt{j.hoffmann(at)fh-aachen.de}}}
% \ifhyper
% \hypersetup{pdftitle=The Listings Package,
@@ -3561,15 +3561,18 @@
% other & \texttt{!\ " \#\ \%\ \&\ ' ( ) * + , - .\ / :\ ; < = > ?}\\
% & {\catcode`\|=12\texttt{[ \char92\ ] \textasciicircum\ \char123\
% | \char125\ \textasciitilde}}\\
-% space & chr(32)\\
-% tabulator & chr(9)\\
-% form feed & chr(12)\\
+% space & \texttt{chr(32)}\footnotemark{}\\
+% tabulator & \texttt{chr(9)}\\
+% form feed & \texttt{chr(12)}\\
% \noalign{\smallskip}
% \end{tabular}
% \par\noindent
% Note: Extended characters of codes 128--255 (if defined) are \emph{currently}
% letters.
% \end{table}
+% \footnotetext{Here and at other places |chr(|\meta{number}|)| means a
+% Pascal function which returns the character which has ASCII value
+% \meta{number}.}
%
%
% \paragraph{Strings}\label{uStrings}
@@ -4197,20 +4200,25 @@
%
% \subsection{Listings inside arguments}\label{uListingsArguments}
%
-% At the moment it isn't possible to use \verb-\lstinline{...}- in a cell
+% A long time it wasn't possible to use \verb-\lstinline{...}- in a cell
% of a table\makeatletter\@ifundefined{r@uProcessingInline}{}{%
% (see section \ref{uProcessingInline} on page \pageref{uProcessingInline}
% for more information)},%
% \makeatother%
-% but it is possible to define a wrapper macro
-% which can be used instead of \verb-\lstinline{...}-:
+% but there was a recommended workaround. This workaround is still
+% functional, but now one can use \verb-\lstinline{...}- and of course
+% \verb-\lstinline|...|- directly:
% \begin{lstsample}[lstlisting]{}{}
% \newcommand\foo{\lstinline{t}}
% \newcommand\foobar[2][]{\lstinline[#1]{#2}}
%
% \begin{tabular}{ll}
-% \foo & a variable\\
-% \foobar[language=java]{int u;} & a declaration
+% \lstinline|r| & a first variable (standard)\\
+% \lstinline[language=java]|int s;| & a standard declaration \\
+% \foo & a second variable (workaround)\\
+% \foobar[language=java]{int u;} & a (workaraond) declaration \\
+% \lstinline{v} & another variable using braces\\
+% \lstinline[language=java]{int w;} & an additional braced declaration
% \end{tabular}
% \end{lstsample}
%
@@ -5744,7 +5752,7 @@
% \item |\lst@Init\relax|
% \item |\lst@Def{`#1}{\lst@DeInit\egroup}| installs the `end inline'
% detection, where |#1| is the next character after |\lstinline|.
-% Moreover chr(13) is redefined to end the fragment in the same way but
+% Moreover |chr(13)| is redefined to end the fragment in the same way but
% also issues an error message.
% \item Now comes the source code and \ldots
% \item \ldots\ |\lst@DeInit| (from |\lst@Def| above) ends the code snippet
@@ -5978,7 +5986,7 @@
% \part{Implementation}
%
%
-% \CheckSum{12409}
+% \CheckSum{12435}
%^^A
%^^A Don't index TeX-primitives.
%^^A
@@ -6122,8 +6130,8 @@
% All files will have same date and version.
% \begin{macrocode}
%<*kernel|misc|doc>
-\def\filedate{2024/03/11}
-\def\fileversion{1.10a}
+\def\filedate{2024/05/25}
+\def\fileversion{1.10b}
%</kernel|misc|doc>
% \end{macrocode}
% What we need and who we are.
@@ -6662,11 +6670,11 @@
\ifx#1\relax
\else \lccode`\^^@=`#1%
% \end{macrocode}
-% Otherwise we say that |^^@|=chr(0) is the lower case version of the first
+% Otherwise we say that |^^@|=|chr(0)| is the lower case version of the first
% character.
% Then we test the second character.
% If there is none, we append the lower case |^^@| to |\lst@temp|.
-% Otherwise we say that |^^A|=chr(1) is the lower case version of the second
+% Otherwise we say that |^^A|=|chr(1)| is the lower case version of the second
% character and we test the next argument, and so on.
% \begin{macrocode}
\ifx#2\relax
@@ -6703,7 +6711,7 @@
\lst@next}
\endgroup
% \end{macrocode}
-% This |\endgroup| restores the catcodes of chr(0)--chr(8), but not the
+% This |\endgroup| restores the catcodes of |chr(0)|--|chr(8)|, but not the
% catcodes of the characters inside |\lst@MakeActive@| since they are already
% read.
%
@@ -14552,7 +14560,7 @@
\fi
\lsthk@InitVars \lsthk@InitVarsBOL
% \end{macrocode}
-% The end of line character chr(13)=|^^M| controls the processing, see the
+% The end of line character |chr(13)|=|^^M| controls the processing, see the
% definition of |\lst@MProcessListing| below.
% The argument |#1| is either |\relax| or |\lstenv@backslash|.
% \begin{macrocode}
@@ -14904,36 +14912,35 @@
% \subsubsection{Processing inline listings}\label{uProcessingInline}
%
% \begin{macro}{\lstinline}
-% In addition to |\lsthk@PreSet|, we use |boxpos=b| and flexiblecolumns.
-% I've inserted |\leavevmode| after bug report from \lsthelper{Michael~Weber}
-% {1999/12/16}{wrong spacing in list environments}. \lsthelper{Olivier~Lecarme}
-% {2001/07/30}{inconsistent `break' when \lstinline is used inside caption}
-% reported a problem which has gone after removing |\let| |\lst@newlines|
-% |\@empty| (now |\lst@newlines| is a counter!). Unfortunately I don't know
-% the reason for inserting this code some time ago! At the end of the macro we
-% check the delimiter.
-% \begin{macrocode}
-\newcommand\lstinline[1][]{%
- \leavevmode\bgroup % \hbox\bgroup --> \bgroup
- \def\lst@boxpos{b}%
- \lsthk@PreSet\lstset{flexiblecolumns,#1}%
- \lsthk@TextStyle
- \@ifnextchar\bgroup{%
-% \end{macrocode}
-% \lsthelper{Luc~Van~Eycken}{2014/01/22}{\rcmdname\lstinline{} in alignments}
-% reported, that the experimental implementation of |\lstinline| with
-% braces instead of characters surrounding the source code resulted in an
-% error if used in a tabular environment. He found that this error comes
-% from the master counter (cf. appendix D (Dirty Tricks), item 5. (Brace
-% hacks), of the TeXbook (p. 385-386)). Adding the following line at this
-% point
+% In addition to |\lsthk@PreSet|, we use |boxpos=b| and
+% flexiblecolumns. I've inserted |\leavevmode| after bug report from
+% \lsthelper{Michael~Weber} {1999/12/16}{wrong spacing in list
+% environments}. \lsthelper{Olivier~Lecarme} {2001/07/30}{inconsistent
+% `break' when \lstinline is used inside caption} reported a problem
+% which has gone after removing |\let| |\lst@newlines| |\@empty| (now
+% |\lst@newlines| is a counter!). Unfortunately I don't know the reason
+% for inserting this code some time ago! At the end of the macro we
+% check the delimiter.\footnote{This is text of the original author
+% Carsten Heinz.}
+%
+% Then came an experimental version which allowed braces, but
+% \lsthelper{Luc~Van~Eycken}{2014/01/22}{\rcmdname\lstinline{} in
+% alignments} reported, that the experimental implementation of
+% |\lstinline| with braces instead of characters surrounding the source
+% code resulted in an error if used in a tabular environment.
+%
+% He found that this error comes from the master counter (cf. appendix
+% D (Dirty Tricks), item 5. (Brace hacks), of the TeXbook
+% (p. 385-386)). Adding the following line after testing the next
+% character (line no. 7 in the following outcommented snippet)
%\begin{verbatim}
-% \ifnum`{=0}\fi%
+%\ifnum`{=0}\fi%
%\end{verbatim}
-% remedies the wrong behaviour. But \lsthelper{Qing~Lee}{2014/06/28}{-}
-% pointed out, that this breaks code like the one showed in
-% \ref{uListingsArguments} on \pageref{uListingsArguments} and proposed
-% another solution which in turn broke the code needed by Luc:
+% remedies the wrong behaviour. But \lsthelper{Qing~Lee}{2014/06/28}{-}
+% pointed out, that this breaks code like the one shown in section
+% \ref{uListingsArguments} on page \pageref{uListingsArguments} and
+% proposed another solution which in turn broke the code provided by
+% Luc:
%\begin{verbatim}
% \renewcommand\lstinline[1][]{%
% \leavevmode\bgroup % \hbox\bgroup --> \bgroup
@@ -14944,20 +14951,45 @@
% \@ifnextchar\bgroup{%
% \ifnum`{=\z@}\fi%
% \afterassignment\lst@InlineG \let\@let@token}{%
-% \ifnum`{=\z@}\fi\lstinline@}}
+% \ifnum`{=\z@}\fi\lstinline@}%
+%}
%\end{verbatim}
-% So finally the old code comes back and the people, who need a
-% |\lstinline| with braces, should use the workaround from section
-% \ref{uListingsArguments} on page \pageref{uListingsArguments}.
+% So finally the old code came back and the people, who needed a
+% |\lstinline| with braces, should use the workaround from section
+% \ref{uListingsArguments} on page \pageref{uListingsArguments}.
+%
+% This long outstanding deficiency is now repaired by
+% \lsthelper{user5028841}{2024/05/05}{Regarding the Listings package}
+% who provided a solution by using special characters as begin and end
+% of a group:
+% \begin{macrocode}
+\edef\lst@temp{\the\catcode`\^^@}
+\catcode`\^^@=1
+\newcommand\lstinline[1][]{%
+ \leavevmode\bgroup % \hbox\bgroup --> \bgroup
+ \def\lst@boxpos{b}%
+ \lsthk@PreSet\lstset{flexiblecolumns,#1}%
+ \lsthk@TextStyle
+ \@ifnextchar\bgroup{%
+ \afterassignment\lst@InlineG \romannumeral`^^@\iffalse}\fi
+ \let\@let@token}%
+ \lstinline@}
+% \end{macrocode}
+% Here we restore the previous catcode of |\^^@|:
+% \begin{macrocode}
+\catcode`\^^@=\lst@temp
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\lst@inline@}
+% This is the standard method after processing the optional arguments
+% of |\lstinline|.
% \begin{macrocode}
- \afterassignment\lst@InlineG \let\@let@token}%
- \lstinline@}
\def\lstinline@#1{%
- \lst@Init\relax
- \lst@IfNextCharActive{\lst@InlineM#1}{\lst@InlineJ#1}}
-\lst@AddToHook{TextStyle}{}% init
+ \lst@Init\relax
+ \lst@IfNextCharActive{\lst@InlineM#1}{\lst@InlineJ#1}}
% \end{macrocode}
% \begin{macrocode}
+\lst@AddToHook{TextStyle}{}% init
\lst@AddToHook{SelectCharTable}{\lst@inlinechars}
\global\let\lst@inlinechars\@empty
% \end{macrocode}
@@ -14965,56 +14997,68 @@
%
% \begin{macro}{\lst@InlineM}
% \begin{macro}{\lst@InlineJ}
-% treat the cases of `normal' inlines and inline listings inside an argument.
-% In the first case the given character ends the inline listing and EOL within
-% such a listing immediately ends it and produces an error message.
+% treat the cases of `normal' inlines and inline listings inside an
+% argument. In the first case the given character ends the inline
+% listing and EOL within such a listing immediately ends it and
+% produces an error message.
% \begin{macrocode}
-\def\lst@InlineM#1{\gdef\lst@inlinechars{%
+\def\lst@InlineM#1{%
+ \gdef\lst@inlinechars{%
\lst@Def{`#1}{\lst@DeInit\egroup\global\let\lst@inlinechars\@empty}%
\lst@Def{13}{\lst@DeInit\egroup \global\let\lst@inlinechars\@empty
- \PackageError{Listings}{lstinline ended by EOL}\@ehc}}%
- \lst@inlinechars}
+ \PackageError{Listings}{lstinline ended by EOL}\@ehc}}%
+ \lst@inlinechars}
% \end{macrocode}
% In the other case we get all characters up to |#1|, make these characters
% active, execute (typeset) them and end the listing (all via temporary macro).
% That's all about it.
% \begin{macrocode}
\def\lst@InlineJ#1{%
- \def\lst@temp##1#1{%
- \let\lst@arg\@empty \lst@InsideConvert{##1}\lst@arg
- \lst@DeInit\egroup}%
- \lst@temp}
+ \def\lst@temp##1#1{%
+ \let\lst@arg\@empty \lst@InsideConvert{##1}\lst@arg
+ \lst@DeInit\egroup}%
+ \lst@temp}
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\lst@InlineG}
-% is experimental.
+% is experimental.
% \begin{macrocode}
\def\lst@InlineG{%
- \lst@Init\relax
- \lst@IfNextCharActive{\lst@InlineM\}}%
- {\let\lst@arg\@empty \lst@InlineGJ}}
+ \lst@Init\relax
+ \lst@IfNextCharActive{\lst@InlineM\}}{%
+ \let\lst@arg\@empty \lst@InlineGJ}}
+% \end{macrocode}
+% This is the point for closing the group:
+% \begin{macrocode}
+\edef\lst@temp{\the\catcode`\^^@}
+\catcode`\^^@=2
\def\lst@InlineGJ{\futurelet\@let@token\lst@InlineGJTest}
\def\lst@InlineGJTest{%
- \ifx\@let@token\egroup
- \afterassignment\lst@InlineGJEnd
- \expandafter\let\expandafter\@let@token
+ \ifx\@let@token\egroup
+ \iffalse{\fi\romannumeral`^^@
+ \afterassignment\lst@InlineGJEnd
+ \expandafter\let\expandafter\@let@token
+ \else
+ \ifx\@let@token\@sptoken
+ \let\lst@next\lst@InlineGJReadSp
\else
- \ifx\@let@token\@sptoken
- \let\lst@next\lst@InlineGJReadSp
- \else
- \let\lst@next\lst@InlineGJRead
- \fi
- \expandafter\lst@next
+ \let\lst@next\lst@InlineGJRead
+ \fi
+ \expandafter\lst@next
\fi}
+% \end{macrocode}
+% As before: restore the previous catcode of |\^^@|:
+% \begin{macrocode}
+\catcode`\^^@=\lst@temp
\def\lst@InlineGJEnd{\lst@arg\lst@DeInit\egroup}
\def\lst@InlineGJRead#1{%
- \lccode`\~=`#1\lowercase{\lst@lAddTo\lst@arg~}%
- \lst@InlineGJ}
+ \lccode`\~=`#1\lowercase{\lst@lAddTo\lst@arg~}%
+ \lst@InlineGJ}
\def\lst@InlineGJReadSp#1{%
- \lccode`\~=`\ \lowercase{\lst@lAddTo\lst@arg~}%
- \lst@InlineGJ#1}
+ \lccode`\~=`\ \lowercase{\lst@lAddTo\lst@arg~}%
+ \lst@InlineGJ#1}
% \end{macrocode}
% \end{macro}
%
@@ -15313,7 +15357,7 @@
%
% \begin{macro}{\lst@MSkipToFirst}
% We just look whether to drop more lines or to leave the mode which restores
-% the definition of chr(13) and chr(10).
+% the definition of |chr(13)| and |chr(10)|.
% \begin{macrocode}
\def\lst@MSkipToFirst{%
\global\advance\lst@lineno\@ne
@@ -15391,7 +15435,7 @@
% \end{macrocode}
% We must append an active backslash and the `end string' to |\lst@arg|. So all
% (in fact most) other processing won't notice that the code has been inside
-% an argument. But the EOL character is chr(10)=|^^J| now and not chr(13).
+% an argument. But the EOL character is |chr(10)|=|^^J| now and not |chr(13)|.
% \begin{macrocode}
\begingroup \lccode`\~=`\\\lowercase{%
\gdef\lstenv@ProcessJ@{%
diff --git a/macros/latex/contrib/listings/listings.pdf b/macros/latex/contrib/listings/listings.pdf
index 41c366106a..b4bfc0d79e 100644
--- a/macros/latex/contrib/listings/listings.pdf
+++ b/macros/latex/contrib/listings/listings.pdf
Binary files differ
diff --git a/macros/latex/contrib/listings/lstdrvrs.dtx b/macros/latex/contrib/listings/lstdrvrs.dtx
index 56c2a92642..8541b7a0b9 100644
--- a/macros/latex/contrib/listings/lstdrvrs.dtx
+++ b/macros/latex/contrib/listings/lstdrvrs.dtx
@@ -1,6 +1,6 @@
% \iffalse
%
-% Time-stamp: <2024-03-12 09:33:03 ax006ho>
+% Time-stamp: <2024-05-25 06:23:16 ax006ho>
%
%<*driver>
\documentclass{ltxdoc}
@@ -33,7 +33,7 @@
% \title{Language, Style and Format drivers\\ for \textsf{Listings}\\
% {\large by Carsten Heinz and individual authors:}}
% \author{\InputIfFileExists{lstdrvrs.tmp}{}{}}
-% \date{2024/03/11\enspace\enspace Version 1.10a\ \box\abstractbox}
+% \date{2024/05/25\enspace\enspace Version 1.10b\ \box\abstractbox}
%
% \ifhyper
% \hypersetup{pdftitle={Language, Style and Format drivers for the
@@ -138,7 +138,7 @@
% \endgroup
% We mainly define default dialects.
% \begin{macrocode}
-\ProvidesFile{listings.cfg}[2024/03/11 1.10a listings configuration]
+\ProvidesFile{listings.cfg}[2024/05/25 1.10b listings configuration]
\def\lstlanguagefiles
{lstlang0.sty,lstlang1.sty,lstlang2.sty,lstlang3.sty}
\lstset{defaultdialect=[R/3 6.10]ABAP,
@@ -154,6 +154,7 @@
defaultdialect=[11.0]Mathematica,
defaultdialect=[OMG]OCL,
defaultdialect=[Standard]Pascal,
+ defaultdialect=[2]Python,
defaultdialect=[67]Simula,
defaultdialect=[plain]TeX,
defaultdialect=[97]VRML}
@@ -186,7 +187,7 @@
%<+lua-prf>\ProvidesFile{listings-lua.prf}
%<+python-prf>\ProvidesFile{listings-python.prf}
%<+rexx-prf>\ProvidesFile{listings-rexx.prf}
-%<-config> [2024/03/11 1.10a listings language file]
+%<-config> [2024/05/25 1.10b listings language file]
% \end{macrocode}
%
%
@@ -7819,7 +7820,8 @@ morecomment=[l]!%
%
% In August 2013
% \lstthanks{Alexis~Dimitriadis}{A.Dimitriadis@uu.nl}{2013/08/15} reworked
-% the definition by supplying the builtins.
+% the definition by supplying the builtins. The current version is based on
+% \url{https://docs.python.org/2/reference/lexical_analysis.html#identifiers}.
% \begingroup
% \begin{macrocode}
%<*lang1>
@@ -7828,17 +7830,22 @@ morecomment=[l]!%
%%
%% Python definition (c) 1998 Michael Weber
%% Additional definitions (2013) Alexis Dimitriadis
+%% small corrections based on
+%% https://docs.python.org/2/reference/lexical_analysis.html#identifiers
%%
-\lst@definelanguage{Python}{%
- morekeywords={access, and, break, class, continue, def, del, elif, else,%
- except, exec, finally, for, from, global, if, import, in, is, lambda,%
- not, or, pass, print, raise, return, try, while},%
+\lst@definelanguage[2]{Python}{%
+ morekeywords={and, as, assert, break, class, continue, def, del, elif,%
+ else, except, exec, finally, for, from, global, if, import, in, is,%
+ lambda, not, or, pass, print, raise, return, try, while, with, yield},%
% \end{macrocode}
-% Python has a long list of builtin-in functions
+% Python has a long list of builtin-in functions (altogether 76 entries
+% plus 5 special ones)
% (\url{http://docs.python.org/2/library/functions.html}) and it is a good
-% idea to make them visible in printed code
+% idea to make them visible in printed code.
% \begin{macrocode}
- % Built-ins
+ % Built-ins according to
+ % http://docs.python.org/2/library/functions.html,
+ % the last five entries are known as advanced or not essential
morekeywords=[2]{abs, all, any, basestring, bin, bool, bytearray,%
callable, chr, classmethod, cmp, compile, complex, delattr, dict, dir,%
divmod, enumerate, eval, execfile, file, filter, float, format,%
@@ -7847,43 +7854,96 @@ morecomment=[l]!%
memoryview, min, next, object, oct, open, ord, pow, property, range,%
raw_input, reduce, reload, repr, reversed, round, set, setattr, slice,%
sorted, staticmethod, str, sum, super, tuple, type, unichr, unicode,%
- vars, xrange, zip, apply, buffer, coerce, intern},%
+ vars, xrange, zip, __import__, apply, buffer, coerce, intern},%
sensitive=true,%
morecomment=[l]\#,%
+ morestring=[s]{'''}{'''},% used for documentation text
+ % (multiline strings)
+ morestring=[s]{"""}{"""},% added by Philipp Matthias Hahn
morestring=[b]',%
- morestring=[b]",%
-% \end{macrocode}
-% According to PEP (Python Enhancement Proposals) comment should be
-% distinguished from documentation strings, so we define
-% \begin{macrocode}
- morecomment=[s]{'''}{'''},% used for documentation text
- % (mulitiline strings)
- morecomment=[s]{"""}{"""},% added by Philipp Matthias Hahn
-% \end{macrocode}
-% \lsthelper{J\"urgen Dietel}{j.dietel@rz.rwth-aachen}{2015/05/05}{} provided
-% an example with a wrong representation of documentation strings, so the
-% two lines above got changed from |morestring| $\rightarrow$ |morecomment|.
-%
-% Python now supports so called \emph{raw strings} and also Unicode
-% strings. Here is the definition of these strings:
-% \begin{macrocode}
- morestring=[s]{r'}{'},% `raw' strings
- morestring=[s]{r"}{"},%
- morestring=[s]{r'''}{'''},%
- morestring=[s]{r"""}{"""},%
- morestring=[s]{u'}{'},% unicode strings
- morestring=[s]{u"}{"},%
- morestring=[s]{u'''}{'''},%
- morestring=[s]{u"""}{"""}%
-}%
+ morestring=[b]"%
+}
% \end{macrocode}
% \lsthelper{Philipp Matthias Hahn}{pmhahn@titan.lahn.de}{2002/04/18}{}
-% added the third comment. \lsthelper{eRreuR}{rogspr@newdeal.ch}{2002/05/28}
-% {probl\`eme avec "listings" et le langage Python} found a bug using Python
-% and \lsthelper{Nicolas Markey}{markey@lsv.ens-cachan.fr}{2002/05/29}
+% added the third comment above.
+% \lsthelper{eRreuR}{rogspr@newdeal.ch}{2002/05/28} {probl\`eme avec
+% "listings" et le langage Python} found a bug using Python and
+% \lsthelper{Nicolas Markey}{markey@lsv.ens-cachan.fr}{2002/05/29}
% {listings and Python} informed me about the corresponding thread on
% \texttt{fr.comp.text.tex} and provided the fix---adding \texttt{[b]} to
% both \texttt{morestring} declarations.
+%
+% \lsthelper{J\"urgen Dietel}{j.dietel@rz.rwth-aachen}{2015/05/05}{}
+% provided an example with a wrong representation of documentation strings,
+% so the two lines added by Philipp Matthias Hahn got changed from
+% |morestring| $\rightarrow$ |morecomment|.\footnote{According to PEP
+% (Python Enhancement Proposals---\url{https://peps.python.org/pep-0257/})
+% comment should be distinguished from documentation strings.}
+%
+% Python 3.0 was released in December 2008 and brought with it a number of
+% new features. \lsthelper{Naoki Sean
+% Pross}{npross@student.ethz.ch}{2024/05/25}{Python 3 syntax support for
+% the listings LaTeX package} provided the lists of new keywords and
+% built-in functions as well as the support for special strings.
+% \begin{macrocode}
+\lst@definelanguage[3]{Python}[2]{Python}{%
+ % keywords
+ deletekeywords={exec, print},
+ morekeywords={False, None, True, async, await, nonlocal,
+% \end{macrocode}
+% Python knows so called soft keywords:
+% \begin{macrocode}
+ match, case},
+% \end{macrocode}
+% The list of built-in functions has changed considerably (only 71 entries,
+% no special ones):
+% \begin{macrocode}
+ % built-in functions
+ deletekeywords=[2]{apply, basestring, buffer, cmp, coerce, execfile, %
+ file, intern, long, raw_input, reduce, reload, unichr, unicode, xrange},
+ morekeywords=[2]{aiter, anext, ascii, breakpoint, bytes, exec},
+% \end{macrocode}
+% Python now supports special strings like \emph{raw strings}, Unicode
+% strings, and some more. Here is the definition of these strings:
+% \begin{macrocode}
+ % `raw' strings
+ morestring=[s]{r'}{'},
+ morestring=[s]{r"}{"},
+ morestring=[s]{r'''}{'''},
+ morestring=[s]{r"""}{"""},
+ morestring=[s]{R'}{'},
+ morestring=[s]{R"}{"},
+ morestring=[s]{R'''}{'''},
+ morestring=[s]{R"""}{"""},
+ % Unicode strings
+ morestring=[s]{u'}{'},
+ morestring=[s]{u"}{"},
+ morestring=[s]{u'''}{'''},
+ morestring=[s]{u"""}{"""},
+ morestring=[s]{U'}{'},
+ morestring=[s]{U"}{"},
+ morestring=[s]{U'''}{'''},
+ morestring=[s]{U"""}{"""},
+ % Format strings
+ morestring=[s]{f'}{'},
+ morestring=[s]{f"}{"},
+ morestring=[s]{f'''}{'''},
+ morestring=[s]{f"""}{"""},
+ morestring=[s]{F'}{'},
+ morestring=[s]{F"}{"},
+ morestring=[s]{F'''}{'''},
+ morestring=[s]{F"""}{"""},
+ % Byte literals
+ morestring=[s]{b'}{'},
+ morestring=[s]{b"}{"},
+ morestring=[s]{b'''}{'''},
+ morestring=[s]{b"""}{"""},
+ morestring=[s]{B'}{'},
+ morestring=[s]{B"}{"},
+ morestring=[s]{B'''}{'''},
+ morestring=[s]{B"""}{"""},
+}%
+% \end{macrocode}
% \begin{macrocode}
%</lang1>
% \end{macrocode}
@@ -7903,6 +7963,8 @@ morecomment=[l]!%
%% Actual colors from idlelib/config-highlight.def
%% --> corrected to ``web-safe''
+%% Unimplemented IDLE syntax: function/class names being
+%% defined should be blue
%% strings = #00aa00 / 0,170,0 (a darker green)
%% builtins = #900090 / 144,0,144 (purple-ish)
%% keywords = #FF7700 / 255,119,0 (quite close to plain `orange')
@@ -7958,6 +8020,7 @@ morecomment=[l]!%
procedure,pull,push,queue,return,say,select,signal,then,%
to,trace,when},%
sensitive=false,%
+ morecomment=[l]{--},%
morecomment=[n]{/*}{*/},%
morestring=[d]{'},%
morestring=[d]{"},%
@@ -7999,7 +8062,6 @@ morecomment=[l]!%
sensitive=false,%
morestring=[d]",%
morestring=[d]',%
- morecomment=[s]{/*}{*/},%
}[keywords,comments,strings]
% \end{macrocode}
% \begin{macrocode}
@@ -8026,7 +8088,7 @@ morecomment=[l]!%
::options, ::requires, ::resource, ::routine,%
forward, guard, local, loop, raise, strict,%
},%
- alsoletter={:},%
+ alsoletter={:}
}[keywords,comments,strings]
% \end{macrocode}
% \begin{macrocode}
@@ -8042,38 +8104,22 @@ morecomment=[l]!%
%<*rexx-prf>
% \end{macrocode}
% \begin{macrocode}
-\usepackage{xcolor}
-\usepackage{textcomp}
-
-%% Actual colors from idlelib/config-highlight.def
-%% --> corrected to ``web-safe''
-%% strings = #00aa00 / 0,170,0 (a darker green)
-%% builtins = #900090 / 144,0,144 (purple-ish)
-%% keywords = #FF7700 / 255,119,0 (quite close to plain `orange')
-%\definecolor{IDLEorange}{RGB}{255,119,0} % pretty close to real orange
-%\definecolor{IDLEpurple}{RGB}{144,0,144}
-%\definecolor{IDLEgreen}{RGB}{0,170,0}
-%\definecolor{IDLEred}{RGB}{221,0,0}
-%% Corrected to ``web-safe''
-%\definecolor{orange2}{RGB}{255,102,0}
-\definecolor{purple2}{RGB}{153,0,153} % there's actually no standard purple
-\definecolor{green2}{RGB}{0,153,0} % a darker green
-%\definecolor{red2}{RGB}{221,0,0}
+\usepackage{xcolor} % needed for colors like yellow!10
+\usepackage{textcomp} % needed for upquote
-% Except for green and purple, the other colors are pretty good in standard
-% hue
-\lstdefinestyle{python-idle-code}{%
- language=Python, % the language
- basicstyle=\normalsize\ttfamily, % size of the fonts for the code
- % Color settings to match IDLE style
- keywordstyle=\color{orange}, % core keywords
- keywordstyle={[2]\color{purple2}}, % built-ins
- stringstyle=\color{green2},%
- commentstyle=\color{red},%
+\lstdefinestyle{rexx-colored}{%
+ language=oorexx, % the language
+ backgroundcolor=\color{yellow!10},
+ basicstyle=\normalsize\ttfamily, % size of the fonts for
+ % the code
+ % Color settings to match JHf's preferred style
+ keywordstyle=\color{blue}, % core keywords
+ keywordstyle={[2]\color{cyan}}, % built-ins
+ keywordstyle={[3]\color{olive}}, % special keywords
+ stringstyle=\color{teal},%
+ commentstyle=\color{orange},%
upquote=true, % requires textcomp
}
-% Unimplemented IDLE syntax: function/class names being defined should be
-% blue
% \end{macrocode}
% This code is provided in the file |listings-rexx.prf|, see section
% 2.4.1 (Preferences) of the \packagename{listings} documentation.
diff --git a/macros/latex/contrib/listings/lstdrvrs.pdf b/macros/latex/contrib/listings/lstdrvrs.pdf
index e5ded0321c..0315d2cad2 100644
--- a/macros/latex/contrib/listings/lstdrvrs.pdf
+++ b/macros/latex/contrib/listings/lstdrvrs.pdf
Binary files differ
diff --git a/macros/latex/contrib/litesolution/README.md b/macros/latex/contrib/litesolution/README.md
index f597d5fb09..452c7e9de9 100644
--- a/macros/latex/contrib/litesolution/README.md
+++ b/macros/latex/contrib/litesolution/README.md
@@ -10,7 +10,7 @@ This work may be distributed and/or modified under the conditions of the [LaTeX
This work has the LPPL maintenance status `maintained`.
-The Current Maintainer of this work is [Mingyu Hsia](https://www.ctan.org/author/xia-my).
+The Current Maintainer of this work is [Mingyu XIA](https://www.ctan.org/author/xia-my).
## Derivative Works
diff --git a/macros/latex/contrib/litesolution/doc/figure/universe.pdf b/macros/latex/contrib/litesolution/doc/figure/universe.pdf
index 6ebe5201dc..244c7770a7 100644
--- a/macros/latex/contrib/litesolution/doc/figure/universe.pdf
+++ b/macros/latex/contrib/litesolution/doc/figure/universe.pdf
Binary files differ
diff --git a/macros/latex/contrib/litesolution/doc/figure/universe.tex b/macros/latex/contrib/litesolution/doc/figure/universe.tex
index f2fa69eaab..7cce50ecd2 100644
--- a/macros/latex/contrib/litesolution/doc/figure/universe.tex
+++ b/macros/latex/contrib/litesolution/doc/figure/universe.tex
@@ -5,7 +5,7 @@
\usephysicsmodule{ab.legacy}
\usetikzlibrary{tikzmark}
\tikzset{every node/.style={align=center,DarkSlateGray!30},
- every path/.style={DarkSlateGray!30,line cap=round}}
+ every path/.style={DarkSlateGray!30,line cap=round}}
\begin{document}\tikz{
\node [above right] at (0,0) {$\color{DarkSlateGray!30}
diff --git a/macros/latex/contrib/litesolution/doc/litesolution.pdf b/macros/latex/contrib/litesolution/doc/litesolution.pdf
index 8d9efb2ba3..eb14917941 100644
--- a/macros/latex/contrib/litesolution/doc/litesolution.pdf
+++ b/macros/latex/contrib/litesolution/doc/litesolution.pdf
Binary files differ
diff --git a/macros/latex/contrib/litesolution/doc/litesolution.tex b/macros/latex/contrib/litesolution/doc/litesolution.tex
index 678e4cd4aa..34d82694a2 100644
--- a/macros/latex/contrib/litesolution/doc/litesolution.tex
+++ b/macros/latex/contrib/litesolution/doc/litesolution.tex
@@ -1,17 +1,34 @@
+%% ******************************************************
+%% * This work may be distributed and/or modified under *
+%% * the conditions of the LaTeX Project Public License *
+%% * http://www.latex-project.org/lppl.txt *
+%% * either version 1.3c of this license or any later *
+%% * version. *
+%% ******************************************************
\documentclass[mtpro2,twoside,openany]{litesolution}
-
\usepackage[listings]{tcolorbox}
+\usepackage{pmboxdraw}
\lstset{language=[LaTeX]TeX,basicstyle=\small\ttfamily,breaklines=true,columns=flexible}
-\title{\sffamily The \pkg{LiteSolution} Class}
-\subtitle{\sffamily\scshape Hangzhou Dianzi University}
-\bioinfo{Mingyu Hsia (\mailto{xiamyphys@hdu.edu.cn})\quad|\quad\today\quad|\quad Version 2.2b}
-\cover[checkerboard]{schrodinger}\coverhead[3]{universe}
+\coverset{
+ title = \sffamily The \pkg{LiteSolution} Class,
+ subtitle = \sffamily\scshape Hangzhou Dianzi University,
+ bioinfo = Mingyu XIA (\mailto{xiamyphys@gmail.com})\quad|\quad Version 2.4a,
+ covercolor = DarkSeaGreen,
+ coverhead = universe,
+ coverhead.rotate = 3,
+ cover = schrodinger,
+ cover.pattern = sixpointed stars
+}
\begin{document}
-\maketitle[DarkSlateGray]
-\frontmatter\tableofcontents\mainmatter
+\maketitle
+
+\frontmatter
+\tableofcontents
+\mainmatter
+
\chapterimage{\UPFadingImage*[trim={0 {.9\paperheight} 0 0},clip]{Beautiful-realities}}
\chapter{Introduction to the \pkg{LiteSolution} Class}
@@ -20,7 +37,7 @@
This is the document for the \pkg{LiteSolution} class, which is designed for typesetting solutions of problems in exams, textbooks, etc.
-Welcome to feedback bugs or ideas via email \href{mailto:xiamyphys@hdu.edu.cn}{\ttfamily xiamyphys@hdu.edu.cn} or \href{https://github.com/xiamyphys/litesolution}{GitHub}.
+Welcome to feedback bugs or ideas via email \href{mailto:xiamyphys@gmail.com}{\ttfamily xiamyphys@gmail.com} or \href{https://github.com/xiamyphys/litesolution}{GitHub}.
\subsection{Installing \pkg{LiteSolution} and loading it}
@@ -39,18 +56,18 @@ The test environments are macOS + Mac\hologo{TeX} 2024 / Overleaf / Ubuntu 22.04
\section{Global Options of this Class}
\begin{verbatim}
- \documentclass[<options>]{litesolution}
+ \documentclass[⟨options⟩]{litesolution}
\end{verbatim}
\subsection{The \mode{answer} option}
-The \mode{hideanswer} mode can hide contents in \cmd{solution} environment and \cmd{ans} command.
+The \mode{hideanswer} mode can hide contents in the \cmd{solution} environment and \cmd{ans} command, and make the effect of \cmd{emph} weaker.
\subsection{The \mode{math} option}
The \mode{mtpro2}, \mode{newtx} and \mode{newtxsf} modes can format the font of formulas in the document. Please check if mtpro2 font has been installed on your computer correctly before using \mode{mtpro2} mode.
-\section{Related Packages}
+\section{Derivative Works}
\begin{description}
\item[Package \pkg{notebeamer}] provides macros for inputting slides on note papers quickly.
\item[Package \pkg{fadingimage}] provides macros for inputting full width picture at the edges of pages quickly.
@@ -63,27 +80,23 @@ The \mode{mtpro2}, \mode{newtx} and \mode{newtxsf} modes can format the font of
\subsection{The cover page configurations}
\begin{verbatim}
- \title{<content>} \subtitle{<content>}
- \bioinfo{<content>} \cover[<pattern>]{<image>}
- \coverhead[<angle>]{<image>} \coverhead*[<angle>]{<content>}
-
- \begin{document} \maketitle[<color>]
-\end{verbatim}
-
-\begin{verbatim}
- \title{\sffamily The \pkg{LiteSolution} Class}
- \subtitle{\sffamily\scshape Hangzhou Dianzi University}
- \bioinfo{Mingyu Hsia (\mailto{xiamyphys@hdu.edu.cn})
- \quad|\quad\today\quad|\quad Version 2.2b}
- \cover[checkerboard]{schrodinger} \coverhead[5]{universe}
-
- \begin{document} \maketitle[Midnightblue]
+ \coverset{
+ title = \sffamily The \pkg{LiteSolution} Class,
+ subtitle = \sffamily\scshape Hangzhou Dianzi University,
+ bioinfo = Mingyu XIA (\mailto{xiamyphys@gmail.com})\quad|\quad
+ Version 2.4a,
+ covercolor = DarkSeaGreen,
+ coverhead = universe,
+ coverhead.rotate = 3,
+ cover = schrodinger,
+ cover.pattern = sixpointed stars
+ }
\end{verbatim}
\subsection{The chapter head configurations}
\begin{verbatim}
- \chapterimage {<insert image macro>}
+ \chapterimage {⟨insert image macro⟩}
\end{verbatim}
This command can assign the format of the image at every chapters begin and you can adjust the format of the image with the \pkg{fadingimage} package.
@@ -94,24 +107,32 @@ This template has preset many packages. The following packages are the common on
\begin{table}[htbp]
\centering\small
- \begin{tabular}{l l l l l l l l}
+ \begin{tabularx}{.96\linewidth}{*{6}{X}}
\toprule
- \pkg{amsthm} & \pkg{amssymb} & \pkg{bm} & \pkg{booktabs} &
- \pkg{cancel} & \pkg{caption} & \pkg{circuitikz} & \pkg{datetime} \\
+ \pkg{amsthm} & \pkg{amssymb} & \pkg{bm} &
+ \pkg{booktabs} & \pkg{cancel} & \pkg{caption}\\
+ \midrule
+ \pkg{circuitikz} & \pkg{datetime} & \pkg{derivative} &
+ \pkg{diagbox} & \pkg{enumitem} & \pkg{esvect}\\
+ \midrule
+ \pkg{extarrows} & \pkg{fadingimage} & \pkg{fancyhdr} &
+ \pkg{fixdif} & \pkg{fontawesome5}& \pkg{geometry}\\
\midrule
- \pkg{derivative} & \pkg{diagbox} & \pkg{esvect} & \pkg{extarrows} &
- \pkg{fadingimage} & \pkg{fancyhdr} & \pkg{fixdif} & \pkg{fontawesome5} \\
+ \pkg{graphicx} & \pkg{hyperref} & \pkg{indentfirst} &
+ \pkg{lipsum} & \scriptsize\pkg{magicwatermark} & \pkg{mathtools}\\
\midrule
- \pkg{geometry} & \pkg{graphics} & \pkg{graphicx} & \pkg{hyperref} &
- \pkg{indentfirst} & \pkg{lipsum} & \pkg{mathtools} & \pkg{multicol} \\
+ \pkg{mhchem} & \pkg{multicol} & \pkg{multirow} &
+ \pkg{nicematrix} & \pkg{notebeamer} & \pkg{paracol}\\
\midrule
- \pkg{multirow} & \pkg{nicematrix} & \pkg{notebeamer} & \pkg{paracol} &
- \pkg{pgfplots} & \pkg{physics2} & \pkg{qrcode} & \pkg{refstyle} \\
+ \pkg{pgfplots} & \pkg{physics2} & \pkg{qrcode} &
+ \pkg{refstyle} & \pkg{setspace} & \pkg{siunitx}\\
\midrule
- \pkg{setspace} & \pkg{siunitx} & \pkg{tabularx} & \pkg{tasks} &
- \pkg{wallpaper} & \pkg{xcolor} & \pkg{xeCJK} & \pkg{xfrac} \\
+ \pkg{subcaption} & \pkg{tabularx} & \pkg{soul} &
+ \pkg{tasks} & \pkg{ulem} & \pkg{xcolor}\\
+ \midrule
+ \pkg{xeCJK} & \pkg{xeCJKfntef} & \pkg{xfrac}\\
\bottomrule
- \end{tabular}
+ \end{tabularx}
\end{table}
\section{Preset Commands}
@@ -119,7 +140,7 @@ This template has preset many packages. The following packages are the common on
\subsection{The \cmd{ans} command}
\begin{verbatim}
- \ans {<contents>}
+ \ans {⟨contents⟩}
\end{verbatim}
This command can underline the answer, and if mode \mode{noans} is enabled the answer will be hidden.
@@ -127,11 +148,21 @@ This command can underline the answer, and if mode \mode{noans} is enabled the a
\subsection{The \cmd{solute} command}
\begin{verbatim}
- \solute {<number>} \solute* {<contents>}
+ \solute {⟨number⟩} \solute* {⟨contents⟩}
\end{verbatim}
This command can create a fixable answer box when the mode \mode{noans} is enabled.
+\subsection{The \cmd{emph} command}
+
+\begin{verbatim}
+ \emph {⟨content⟩} \emph* {⟨content⟩}
+\end{verbatim}
+
+\emph{The Quick Brown Fox Jumps Over the Lazy Dog: non-hideanswer mode}
+
+\emph*{The Quick Brown Fox Jumps Over the Lazy Dog: hideanswer mode}
+
\subsection{Other preset commands}
\begin{verbatim}
@@ -144,7 +175,7 @@ This command can create a fixable answer box when the mode \mode{noans} is enabl
\subsection{The \cmd{problem} environment}
\begin{tcblisting}{sidebyside,colback=DarkGreen!5,colframe=DarkGreen!80}
-\begin{problem}[<Keywords>]\leavevmode
+\begin{problem}[Keywords]\leavevmode
\begin{tasks}(2)
\task Choice A \task[\true] Choice B
\task Choice C \task Choice D
@@ -167,16 +198,9 @@ This command can create a fixable answer box when the mode \mode{noans} is enabl
\begin{note}
We note that.
\end{note}
-\end{tcblisting}
+\end{tcblisting}
\end{minipage}
-\section{Equation test}
-
-\[\begin{cases}
- \i\hbar\partial_t\psi(\mathbf x,t)=\ab(-\frac{\hbar^2}{2m}\bm\nabla^2+V)\\
- \i\hbar\partial_t\psi(\mathbf x,t)=-(\i\hbar c\bm\alpha\cdot\bm\nabla+\beta mc^2)\psi(\mathbf x,t)
-\end{cases}\]
-
\section*{Original Code for the Cover Head}
\setstretch{1.15}
diff --git a/macros/latex/contrib/litesolution/tex/litesolution.cls b/macros/latex/contrib/litesolution/tex/litesolution.cls
index 0f59d89630..2b7a3ecb34 100644
--- a/macros/latex/contrib/litesolution/tex/litesolution.cls
+++ b/macros/latex/contrib/litesolution/tex/litesolution.cls
@@ -1,5 +1,5 @@
%% ***********************************************************
-%% Copyright 2024 by Mingyu Hsia <xiamyphys@hdu.edu.cn> *
+%% Copyright 2024 by Mingyu XIA <xiamyphys@gmail.com> *
%% *
%% This work may be distributed and/or modified under *
%% the conditions of the LaTeX Project Public License *
@@ -11,19 +11,18 @@
%% *
%% This work has the LPPL maintenance status `maintained'. *
%% *
-%% The Current Maintainer of this work is Mingyu Hsia. *
+%% The Current Maintainer of this work is Mingyu XIA. *
%% *
%% This work consists of the files litesolution.cls, *
%% and README.md. *
-%% available at https://github.com/xiamyphys/litsolution *
+%% available at https://github.com/xiamyphys/litesolution *
%% ***********************************************************
% !Mode:: "TeX:UTF-8"
\NeedsTeXFormat{LaTeX2e}
\PassOptionsToPackage{no-math}{fontspec}
\PassOptionsToPackage{svgnames}{xcolor}
-\ProvidesClass{litesolution}[2024/05/07 v2.2b LiteSolution document class]
-\RequirePackage{kvoptions}
-\RequirePackage{etoolbox}
+\ProvidesClass{litesolution}[2024/08/15 v2.4a LiteSolution document class]
+\RequirePackage{kvoptions,etoolbox,keyval}
\SetupKeyvalOptions{family=LITE, prefix=LITE@, setkeys=\kvsetkeys}
\def\ekv#1{\kvsetkeys{LITE}{#1}}
@@ -39,7 +38,7 @@
\ProcessKeyvalOptions*\relax
\LoadClass[letterpaper,11pt]{book}
-\RequirePackage{setspace,datetime,caption,booktabs,multicol,diagbox,paracol}
+\RequirePackage{setspace,datetime,tabularx,caption,subcaption,anyfontsize,booktabs,multicol,diagbox,paracol}
\linespread{1.3}
\ddmmyyyydate
\captionsetup{labelsep=period,labelfont={bf,sf},font=small}
@@ -52,18 +51,18 @@
\setlist[enumerate]{itemsep=.5ex}
\setlist[itemize]{itemsep=.5ex}
\RequirePackage[notelinecolor=MidnightBlue,notemargin=.75in]{notebeamer}
-\geometry{margin=1in}
+\geometry{margin=1in,headheight=14pt}
\RequirePackage[nokeyprefix]{refstyle}
\newref{eq}{refcmd=(\ref{#1}),name={\sffamily eq.~},Name={\sffamily Eq.~}}
\newref{fig}{name={\sffamily fig.~},Name={\sffamily Fig.~}}
\newref{tab}{name={\sffamily tab.~},Name={\sffamily Tab.~}}
-\RequirePackage{graphics,graphicx,wallpaper,pagecolor}
+\RequirePackage{graphicx,magicwatermark,pagecolor}
\graphicspath{{./figure/}{./figures/}{./image/}{./images/}{./graphics/}{./graphic/}{./pictures/}{./picture/}}
\RequirePackage{ifxetex}
\ifXeTeX
- \RequirePackage[quiet]{xeCJK}
+ \RequirePackage[quiet,CJKmath,CheckSingle,PlainEquation]{xeCJK}
\RequirePackage{zhlipsum}
\setlength{\parindent}{2em}
\fi
@@ -82,8 +81,7 @@
\RequirePackage[mono=false]{libertine}
}{\relax}
\let\openbox\relax\def\hmmax{0}\def\bmmax{0}
-\RequirePackage{amsthm,amssymb,mathtools,physics2,bm,fixdif,derivative,cancel,extarrows,siunitx,xfrac,nicematrix}
-\renewcommand\qedsymbol{$\color{gray}\blacksquare$}
+\RequirePackage{amssymb,mathtools,physics2,bm,fixdif,derivative,cancel,extarrows,siunitx,xfrac,nicematrix}
\usephysicsmodule{ab,braket,diagmat,doubleprod,xmat,ab.legacy,op.legacy}
\RequirePackage[e]{esvect}
\let\vec\vv
@@ -109,6 +107,7 @@
\AddToHook{cmd/faIcon/after}{\endgroup}
\RequirePackage{circuitikz,pgfplots,fadingimage}
+\RequirePackage[version=4]{mhchem}
\usetikzlibrary{arrows,tikzmark,patterns,calc,angles,quotes,intersections}
\tikzset{>=stealth',
every picture/.append style={%
@@ -133,56 +132,77 @@
\def\mode#1{\textcolor{Indigo}{\textsf{#1}}}
\def\cmd#1{\textcolor{MidnightBlue}{\texttt{\string#1}}}
-\def\subtitle#1{\gdef\@subtitle{#1}}
-\def\bioinfo#1{\gdef\@bioinfo{#1}}
-\NewDocumentCommand\coverhead{ O{0} m }{
- \gdef\@coverheadrotate{#1}\gdef\@coverhead{#2}
+\define@key{coverset}{title}{\gdef\@title{#1}}
+\define@key{coverset}{subtitle}{\gdef\@subtitle{#1}}
+\define@key{coverset}{bioinfo}{\gdef\@bioinfo{#1}}
+\define@key{coverset}{covercolor}{\gdef\@covercolor{#1}}
+\define@key{coverset}{coverhead}{\gdef\@coverhead{#1}}
+\define@key{coverset}{coverhead.rotate}{\gdef\@coverheadrotate{#1}}
+\define@key{coverset}{cover}{\gdef\@cover{#1}}
+\define@key{coverset}{cover.pattern}{\gdef\@coverpattern{#1}}
+\def\coverset#1{
+ \setkeys{coverset}{#1}
+ \ifcsname @covercolor\endcsname
+ \relax
+ \else
+ \gdef\@covercolor{DarkSlateGray}
+ \fi
}
-\NewDocumentCommand\cover{ o m }{
- \IfValueT{#1}{\gdef\@coverpattern{#1}}
- \gdef\@cover{#2}}
-\RenewDocumentCommand\maketitle{O{MidnightBlue}}{
+
+\renewcommand*\maketitle{
\begin{titlepage}
- \newgeometry{margin=0in}\newpagecolor{#1!15}
+ \newgeometry{margin=0in}
+ \newpagecolor{\@covercolor!15}
+ \gdef\@covercolor{DarkSlateGray}
\tikz[remember picture,overlay]{
- \ifcsname @coverhead\endcsname
- \node [rotate=\@coverheadrotate] at ($(current page.center)+(0,.35*\paperheight)$) {\includegraphics[width=\paperwidth]{\@coverhead}};
- \fi
\fill [white,opacity=.5] ($(current page.south west)+(.2*\paperwidth,.6*\paperheight)$) rectangle (current page.south east);
\fill [white,opacity=.5] ($(current page.south west)+(.3*\paperwidth,.7*\paperheight)$) rectangle (current page.south east);
- \ifcsname @cover\endcsname
- \node [opacity=.5] at ($(current page.south west)+(.65*\paperwidth,.3*\paperheight)$) {\includegraphics[height=.3\paperheight]{\@cover}};
- \ifcsname @coverpattern\endcsname
- \fill [pattern=\@coverpattern,pattern color=#1!15!white!25] ($(current page.south west)+(.3*\paperwidth,0)$) rectangle ++ (.7*\paperwidth,.6\paperheight);
- \fi\fi
\node [darkgray] at ($(current page.south west)+(.65*\paperwidth,.65*\paperheight)$) {\Huge\bfseries\@title};
\ifcsname @subtitle\endcsname
\node [rotate=90,gray,opacity=.6] at ($(current page.south west)+(.25*\paperwidth,.3*\paperheight)$) {\huge\bfseries\@subtitle};
\fi
\ifcsname @bioinfo\endcsname
\node [gray,opacity=.4] at ($(current page.south)+(.15*\paperwidth,.075*\paperheight)$) {\large\@bioinfo};
- \fi}
+ \fi
+ \ifcsname @coverhead\endcsname
+ \ifcsname @coverheadrotate\endcsname
+ \relax
+ \else
+ \gdef\@coverheadrotate{0}
+ \fi
+ \node [rotate=\@coverheadrotate] at ($(current page.center)+(0,.35*\paperheight)$) {\includegraphics[width=\paperwidth]{\@coverhead}};
+ \fi
+ \ifcsname @cover\endcsname
+ \node (@cover) at ($(current page.south west)+(.65*\paperwidth,.3*\paperheight)$) {\includegraphics[height=.3\paperheight]{\@cover}};
+ \ifcsname @coverpattern\endcsname
+ \fill [scope fading=south,pattern=\@coverpattern,pattern color=\@covercolor!15!white!25] (@cover.south west) rectangle (@cover.north east);
+ \fi\fi}
\end{titlepage}
- \restoregeometry\restorepagecolor
+ \restoregeometry
+ \restorepagecolor
\if@twoside
\clearpage%
- \newpagecolor{#1!15!white!50}
+ \newpagecolor{\@covercolor!15!white!25}
\thispagestyle{empty}%
\null\clearpage
- \fi\restorepagecolor
+ \fi
+ \restorepagecolor
}
\RequirePackage{tocloft}
\setlength{\cftbeforetoctitleskip}{6\p@}
\setlength{\cftaftertoctitleskip}{24\p@}
-\setlength{\cftbeforesecskip}{3\p@}
-\def\contentsname{\sffamily\scshape\hfill Contents\hfill}
+\AddToHook{cmd/tableofcontents/before}{
+ \begingroup
+ \setstretch{1.5}
+}
+\AddToHook{cmd/tableofcontents/after}{\endgroup}
+\renewcommand\contentsname{\sffamily\scshape Contents}
\setcounter{tocdepth}{1}
\let\@chapapptmp\@chapapp
-\def\@chapapp{\textsc{\@chapapptmp}}
+\gdef\@chapapp{\textsc{\@chapapptmp}}
\def\chapterimage#1{\gdef\@chapterimage{#1}}
-\def\HUGE{\@setfontsize\HUGE{30}{40}}
\def\@makechapterhead#1{%
\def\thesection{\arabic{chapter}.\arabic{section}}
\def\theproblem{\thechapter.\arabic{problem}}
@@ -194,8 +214,8 @@
\fi
\ifnum \c@secnumdepth >\m@ne
\if@mainmatter
- \parbox{6em}
- {\centering\HUGE\normalfont\bfseries\textcolor{darkgray}\thechapter\vskip4\p@\normalsize\bfseries\textcolor{darkgray}{\bfseries\sffamily\@chapapp}}%
+ \parbox{6em}
+ {\centering\@setfontsize\HUGE{30}{40}\normalfont\bfseries\textcolor{darkgray}\thechapter\vskip4\p@\normalsize\bfseries\textcolor{darkgray}{\bfseries\sffamily\@chapapp}}%
\fi
\fi
\interlinepenalty\@M\hspace*{3ex}
@@ -203,20 +223,20 @@
\vskip 36\p@
}}
\def\@makeschapterhead#1{%
- \def\thesection{\arabic{section}}
- \def\theproblem{\arabic{problem}}
- \setcounter{section}{0}
- \setcounter{problem}{0}
- {\centering
- \ifcsname @chapterimage\endcsname
- \@chapterimage
- \fi\vskip-40\p@
- \parindent \z@ \normalfont
- \interlinepenalty\@M
- \huge \bfseries #1\par\nobreak
- \vskip 28\p@}}
+\def\thesection{\arabic{section}}
+\def\theproblem{\arabic{problem}}
+\setcounter{section}{0}
+\setcounter{problem}{0}
+{\centering
+\ifcsname @chapterimage\endcsname
+ \@chapterimage
+\fi\vskip-40\p@
+ \parindent \z@ \normalfont
+ \interlinepenalty\@M
+ \huge \bfseries #1\par\nobreak
+ \vskip 28\p@}}
\let\cleardoublepage=\clearpage
-\renewcommand*{\cleardoublepage}{\clearpage\if@twoside \ifodd\c@page\else
+\renewcommand*\cleardoublepage{\clearpage\if@twoside \ifodd\c@page\else
\ifnum \thechapter=0
\vspace*{\fill}
{\centering\itshape\Large This page was intentionally left blank.\par}
@@ -231,27 +251,38 @@
\RequirePackage{fancyhdr}
\pagestyle{fancy}
- \let\oldheadrule\headrule
- \renewcommand{\headrule}{{\color{gray}\oldheadrule}}
- \renewcommand{\headrulewidth}{1pt}
- \if@twoside\cfoot{}
- \fancyhead[OL]{\color{darkgray}\nouppercase\leftmark}
- \fancyhead[OR]{\color{darkgray}\sffamily\thepage}
- \fancyhead[ER]{\color{darkgray}\nouppercase\rightmark}
- \fancyhead[EL]{\color{darkgray}\sffamily\thepage}
- \else
- \fancyhead[L]{\color{darkgray}\nouppercase\leftmark}
- \fancyhead[R]{\color{darkgray}\nouppercase\rightmark}
- \cfoot{\color{darkgray}\sffamily\thepage}
- \fi
- \setlength{\headheight}{14pt}
+\let\oldheadrule\headrule
+\renewcommand{\headrule}{{\color{gray}\oldheadrule}}
+\renewcommand{\headrulewidth}{1pt}
+\fancyfoot[L]{\footnotesize\fbox{Unauthorized copying or reuse of any part of this page is illegal}}
+\fancyfoot[OR]{\sffamily\bfseries GO ON TO THE NEXT PAGE}
+\if@twoside\cfoot{}
+ \fancyhead[OL]{\color{darkgray}\nouppercase\leftmark}
+ \fancyhead[OR]{\color{darkgray}\sffamily\thepage}
+ \fancyhead[ER]{\color{darkgray}\nouppercase\rightmark}
+ \fancyhead[EL]{\color{darkgray}\sffamily\thepage}
+\else
+ \fancyhead[L]{\color{darkgray}\nouppercase\leftmark}
+ \fancyhead[R]{\color{darkgray}\nouppercase\rightmark}
+ \cfoot{\color{darkgray}\sffamily\thepage}
+\fi
+\RequirePackage{amsthm}
+\renewcommand\qedsymbol{$\color{gray}\blacksquare$}
\theoremstyle{definition}
\newtheorem{problem}{\color{DarkGreen}\faIcon{pen-square}~\textsc{\textsf{Problem}}}[chapter]
\newtheorem*{solution}{\color{MidnightBlue}\faIcon{check-square}~\textsc{\textsf{Solution}}}
\newtheorem*{scratch}{\color{MidnightBlue}\faIcon{check-square}~\textsc{\textsf{Scratch}}}
\newtheorem*{note}{\color{DarkRed}\faIcon{info-circle}~\textsc{\textsf{Note}}}
-\RequirePackage{comment}
+\RequirePackage{comment,ulem,soul}
+\ifxetex
+ \RequirePackage{xeCJKfntef}
+ \def\@emph#1{\CJKsout*[thickness=2.5ex, format=\color{\@covercolor!15}]{#1}}
+ \def\s@emph#1{\CJKunderwave{#1}}
+\else
+ \def\@emph#1{\sethlcolor{\@covercolor!15}\hl{#1}}
+ \def\s@emph#1{\uwave{#1}}
+\fi
\ifdefstring{\LITE@answer}{hideanswer}{%
\def\ans#1{\underline{\phantom{#1}}}
\def\choiceans#1{\phantom{#1}}
@@ -261,6 +292,7 @@
\excludecomment{solution}\excludecomment{note}
\let\endsolution\relax\let\endnote\relax}
\def\true{\addtocounter{task}{1}\thetask}
+ \DeclareRobustCommand\emph{\@ifstar\s@emph\s@emph}
}{
\def\ans#1{\underline{~#1~}}
\def\s@solute#1{\relax}\def\@solute#1{\relax}
@@ -268,6 +300,7 @@
\excludecomment{scratch}
\let\endscratch\relax}
\def\true{\addtocounter{task}{1}\faIcon{check-circle}}
+ \DeclareRobustCommand\emph{\@ifstar\s@emph\@emph}
}
\DeclareRobustCommand\solute{\@ifstar\s@solute\@solute}
%%
diff --git a/macros/latex/contrib/lni/CHANGELOG.md b/macros/latex/contrib/lni/CHANGELOG.md
index 84bff5fcc6..377ce68c43 100644
--- a/macros/latex/contrib/lni/CHANGELOG.md
+++ b/macros/latex/contrib/lni/CHANGELOG.md
@@ -6,6 +6,18 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/).
## [Unreleased]
+## [1.10] - 2024-07-23
+### Changed
+- Footnotes are set as superscripts in the footer
+- URLs are set using the text font instead of a typewriter font
+
+### Fixed
+- Support for multiple affiliations (#173)
+
+## [1.9] - 2024-07-01
+### Added
+- Support for multiple affiliations (#158)
+
## [1.8.1] - 2024-01-08
### Changed
@@ -167,7 +179,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/).
First release of the revised files
-[Unreleased]: https://github.com/gi-ev/LNI/compare/v1.8.1...HEAD
+[Unreleased]: https://github.com/gi-ev/LNI/compare/v1.10...HEAD
+[1.10]: https://github.com/gi-ev/LNI/compare/v1.9...v1.10
+[1.9]: https://github.com/gi-ev/LNI/compare/v1.8.1...v1.9
[1.8.1]: https://github.com/gi-ev/LNI/compare/v1.8...v1.8.1
[1.8]: https://github.com/gi-ev/LNI/compare/v1.7...v1.8
[1.7]: https://github.com/gi-ev/LNI/compare/v1.6...v1.7
diff --git a/macros/latex/contrib/lni/README.md b/macros/latex/contrib/lni/README.md
index 31fbf3da10..9935391e3b 100644
--- a/macros/latex/contrib/lni/README.md
+++ b/macros/latex/contrib/lni/README.md
@@ -4,7 +4,7 @@
----------------------------------------------------------------------------
lni -- A class for submissions to the ``Lecture Notes in Informatics''
(c) 2016-2024 Gesellschaft für Informatik (GI)
-Version: 1.8.1
+Version: 1.10
Maintainer: Martin Sievers
Email: martin.sievers@schoenerpublizieren.de
License: Released under the LaTeX Project Public License v1.3c or later
diff --git a/macros/latex/contrib/lni/lni-author-template.tex b/macros/latex/contrib/lni/lni-author-template.tex
index 411fea056a..9a39a2d585 100644
--- a/macros/latex/contrib/lni/lni-author-template.tex
+++ b/macros/latex/contrib/lni/lni-author-template.tex
@@ -19,12 +19,13 @@
\title[Ein Kurztitel]{Ein sehr langer Titel über mehrere Zeilen mit sehr vielen
Worten und noch mehr Buchstaben}
%% \subtitle{Untertitel / Subtitle} % if needed
-\author[1]{Firstname1 Lastname1}{firstname1.lastname1@affiliation1.org}{0000-0000-0000-0000}
-\author[2]{Firstname2 Lastname2}{firstname2.lastname2@affiliation2.org}{0000-0000-0000-0000}
-\author[1]{Firstname3 Lastname3}{firstname3.lastname3@affiliation1.org}{0000-0000-0000-0000}
-\author[1]{Firstname4 Lastname4}{firstname4.lastname4@affiliation1.org}{0000-0000-0000-0000}%
-\affil[1]{Universität\\Abteilung\\Straße\\Postleitzahl Ort\\Land}
-\affil[2]{University\\Department\\Address\\Country}
+ \author[1,2]{Firstname1 Lastname1}{firstname1.lastname1@affiliation1.org}{0000-0000-0000-0000}
+ \author[2]{Firstname2 Lastname2}{firstname2.lastname2@affiliation2.org}{0000-0000-0000-0000}
+ \author[3]{Firstname3 Lastname3}{firstname3.lastname3@affiliation1.org}{0000-0000-0000-0000}
+ \author[1]{Firstname4 Lastname4}{firstname4.lastname4@affiliation1.org}{0000-0000-0000-0000}%
+ \affil[1]{Universität 1\\Abteilung\\Straße\\Postleitzahl Ort\\Land}
+ \affil[2]{University 2 \\Department\\Address\\Country}
+ \affil[3]{University 3\\Department\\Address\\Country}
\maketitle
\begin{abstract}
diff --git a/macros/latex/contrib/lni/lni.dtx b/macros/latex/contrib/lni/lni.dtx
index 20261238d4..b5699cbac6 100644
--- a/macros/latex/contrib/lni/lni.dtx
+++ b/macros/latex/contrib/lni/lni.dtx
@@ -134,7 +134,7 @@ This work consists of the file lni.dtx
%<class>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<class>\ProvidesClass{lni}
%<*class>
- [2024/01/08 v1.8.1 Official class for submissions to the ``Lecture Notes
+ [2024/07/23 v1.10 Official class for submissions to the ``Lecture Notes
in Informatics'']
%</class>
%<*driver>
@@ -286,6 +286,9 @@ This work consists of the file lni.dtx
% \changes{v1.8}{2022/06/10}{Fix output error in bst files (#97)}
% \changes{v1.8}{2022/11/25}{Make class compatable with latest publisher requirements (#121)}
% \changes{v1.8}{2022/11/25}{Make usage of `hyperref` mandatory (#131)}
+% \changes{v1.9}{2024/07/01}{Support multiple affiliations (#158)}
+% \changes{v1.10}{2024/07/01}{Change font for URLs to text font and change footnote numbers to superscript}
+% \changes{v1.10}{2024/07/23}{Fix support multiple affiliations (#173)}
%
% \GetFileInfo{\jobname.dtx}
% \DoNotIndex{\newcommand,\newenvironment}
@@ -489,12 +492,13 @@ This work consists of the file lni.dtx
% \cs{affil\oarg{number}\marg{information}} where you can use
% \texttt{\textbackslash\textbackslash} to split the address.
% \begin{examplecode}[label={lst:author}]
-% \author[1]{Firstname1 Lastname1}{firstname1.lastname1@affiliation1.org}{0000-0000-0000-0000}
+% \author[1,2]{Firstname1 Lastname1}{firstname1.lastname1@affiliation1.org}{0000-0000-0000-0000}
% \author[2]{Firstname2 Lastname2}{firstname2.lastname2@affiliation2.org}{0000-0000-0000-0000}
-% \author[1]{Firstname3 Lastname3}{firstname3.lastname3@affiliation1.org}{0000-0000-0000-0000}
+% \author[3]{Firstname3 Lastname3}{firstname3.lastname3@affiliation1.org}{0000-0000-0000-0000}
% \author[1]{Firstname4 Lastname4}{firstname4.lastname4@affiliation1.org}{0000-0000-0000-0000}%
-% \affil[1]{Universität\\Abteilung\\Straße\\Postleitzahl Ort\\Land}
-% \affil[2]{University\\Department\\Address\\Country}
+% \affil[1]{Universität 1\\Abteilung\\Straße\\Postleitzahl Ort\\Land}
+% \affil[2]{University 2 \\Department\\Address\\Country}
+% \affil[3]{University 3\\Department\\Address\\Country}
% \end{examplecode}
%
% Leave the third and/or fourth argument empty if there is no email address and/or ORCID iD.
@@ -1044,7 +1048,7 @@ This work consists of the file lni.dtx
\RequirePackage[hang]{footmisc}
\setlength{\footnotemargin}{1em}
\long\def\@makefntext#1{%
- \def\@makefnmark{\rlap{\normalfont\@thefnmark}}%
+ \def\@makefnmark{\rlap{\normalfont\textsuperscript{\@thefnmark}}}%
\ifFN@hangfoot
\bgroup
\setbox\@tempboxa\hbox{%
@@ -1149,53 +1153,71 @@ This work consists of the file lni.dtx
\renewcommand\Authsep{, }
\renewcommand\Authands{\iflanguage{ngerman}{ und }{, and }}
\renewcommand\Authand{\iflanguage{ngerman}{ und }{ and }}
-\renewcommand{\AB@authnote}[1]{$^{\text{\mbox{\normalfont\footnotesize #1}}}$}
+\NewDocumentCommand{\multiaffil}{ >{\SplitList{,}} m m m}{%
+ \gdef\@currEmail{#2}
+ \gdef\@currOrcid{#3}
+ \ProcessList{#1}{\@multiaffil}
+}
+
+\newcommand{\@multiaffil}[1]{%
+ \ifcsundef{@emailsandorcids#1}{\csgdef{@emailsandorcids#1}{}}{}%
+ \ifcsempty{@emailsandorcids#1}%
+ {\protected@csxappto{@emailsandorcids#1}{%
+ \if\relax\@currEmail\relax\else\email{\@currEmail}\fi\if\relax\@currOrcid\relax\else,\ \orcid{\@currOrcid}\fi}}%
+ {\protected@csxappto{@emailsandorcids#1}{%
+ \if\relax\@currEmail\relax\else;\ \email{\@currEmail}\fi\if\relax\@currOrcid\relax\else,\ \orcid{\@currOrcid}\fi}}%
+}
+
\renewcommand\author[4][]{%
\ifnewaffil\addtocounter{affil}{1}%
\edef\AB@thenote{\arabic{affil}}%
\fi%
\if\relax#1\relax\def\AB@note{\AB@thenote}\else\def\AB@note{#1}%
- \ifcsundef{@emailsandorcids\AB@note}{\csgdef{@emailsandorcids\AB@note}{}}{}%
\setcounter{Maxaffil}{0}\fi
\ifnum\value{authors}=0\def\@firstauthor{#2}\fi
\ifnum\value{authors}>1\relax
- \@namedef{@sep\number\c@authors}{\Authsep}\fi
+ \@namedef{@sep\number\c@authors}{\Authsep}\fi
\addtocounter{authors}{1}%
\begingroup
- \let\protect\@unexpandable@protect \let\and\AB@pand
- \def\thanks{\protect\thanks}\def\footnote{\protect\footnote}%
- \@temptokena=\expandafter{\AB@authors}%
- \@temptokenb=\expandafter{\AB@authors}%
- {\def\\{\protect\\[\@affilsep]\protect\Affilfont
- \protect\AB@resetsep}%
- \xdef\AB@author{\AB@blk@and#2}%
- \ifnewaffil\gdef\AB@las{}\gdef\AB@lasx{\protect\Authand}\gdef\AB@as{}%
- \xdef\AB@authors{\the\@temptokena\AB@blk@and}%
- \else
- \xdef\AB@authors{\the\@temptokena\AB@as\AB@au@str}%
- \global\let\AB@las\AB@lasx\gdef\AB@lasx{\protect\Authands}%
- \gdef\AB@as{\Authsep}%
- \fi
- \gdef\AB@au@str{#2}}%
- \@temptokena=\expandafter{\AB@authlist}%
- \@temptokenb=\expandafter{\@authlisthead}%
- \let\\=\authorcr
- \xdef\AB@authlist{\the\@temptokena
- \protect\@nameuse{@sep\number\c@authors}%
- \protect\Authfont#2\if\relax#4\relax\else\,\orcidlink{#4}\fi\AB@authnote{\AB@note}}%
- \xdef\@authlisthead{\the\@temptokenb
- \protect\@nameuse{@sep\number\c@authors}%
- \protect\Authfont#2}%
+ \let\protect\@unexpandable@protect \let\and\AB@pand
+ \def\thanks{\protect\thanks}\def\footnote{\protect\footnote}%
+ \@temptokena=\expandafter{\AB@authors}%
+ \@temptokenb=\expandafter{\AB@authors}%
+ {\def\\{\protect\\[\@affilsep]\protect\Affilfont
+ \protect\AB@resetsep}%
+ \xdef\AB@author{\AB@blk@and#2}%
+ \ifnewaffil\gdef\AB@las{}\gdef\AB@lasx{\protect\Authand}\gdef\AB@as{}%
+ \xdef\AB@authors{\the\@temptokena\AB@blk@and}%
+ \else
+ \xdef\AB@authors{\the\@temptokena\AB@as\AB@au@str}%
+ \global\let\AB@las\AB@lasx\gdef\AB@lasx{\protect\Authands}%
+ \gdef\AB@as{\Authsep}%
+ \fi
+ \gdef\AB@au@str{#2}}%
+ \@temptokena=\expandafter{\AB@authlist}%
+ \@temptokenb=\expandafter{\@authlisthead}%
+ \let\\=\authorcr
+ \xdef\AB@authlist{\the\@temptokena
+ \protect\@nameuse{@sep\number\c@authors}%
+ \protect\Authfont#2\if\relax#4\relax\else\,\orcidlink{#4}\fi\AB@authnote{\AB@note}}%
+ \xdef\@authlisthead{\the\@temptokenb
+ \protect\@nameuse{@sep\number\c@authors}%
+ \protect\Authfont#2}%
\endgroup
\ifnum\value{authors}>2\relax
\@namedef{@sep\number\c@authors}{\Authands}\fi
+ \ifcsundef{@emailsandorcids\AB@note}{\csgdef{@emailsandorcids\AB@note}{}}{}%
+ \sbox\z@{\@tempcnta=0#1\relax}%
+ \expandafter\ifdim\wd\z@>\z@\relax
+ \multiaffil{#1}{#3}{#4}
+ \else
+ \ifcsundef{@emailsandorcids\AB@note}{\csgdef{@emailsandorcids\AB@note}{}}{}%
\ifcsempty{@emailsandorcids\AB@note}%
{\csgappto{@emailsandorcids\AB@note}{%
- \if\relax#3\relax\else\email{#3}\fi\if\relax#4\relax\else,\ \orcid{#4}\fi}%
- }%
+ \if\relax#3\relax\else\email{#3}\fi\if\relax#4\relax\else,\ \orcid{#4}\fi}}%
{\csgappto{@emailsandorcids\AB@note}{%
\if\relax#3\relax\else;\ \email{#3}\fi\if\relax#4\relax\else,\ \orcid{#4}\fi}}%
-
+ \fi%
\newaffilfalse
}
\renewcommand\@author{%
@@ -1529,6 +1551,7 @@ This work consists of the file lni.dtx
% \end{macrocode}
% \begin{macrocode}
\RequirePackage{url}
+\urlstyle{same}
% \end{macrocode}
% improve wrapping of URLs - hint by http://tex.stackexchange.com/a/10419/9075
% \begin{macrocode}
@@ -3071,12 +3094,13 @@ EXECUTE {end.bib}
\title[Ein Kurztitel]{Ein sehr langer Titel über mehrere Zeilen mit sehr vielen
Worten und noch mehr Buchstaben}
%% \subtitle{Untertitel / Subtitle} % if needed
-\author[1]{Firstname1 Lastname1}{firstname1.lastname1@affiliation1.org}{0000-0000-0000-0000}
-\author[2]{Firstname2 Lastname2}{firstname2.lastname2@affiliation2.org}{0000-0000-0000-0000}
-\author[1]{Firstname3 Lastname3}{firstname3.lastname3@affiliation1.org}{0000-0000-0000-0000}
-\author[1]{Firstname4 Lastname4}{firstname4.lastname4@affiliation1.org}{0000-0000-0000-0000}%
-\affil[1]{Universität\\Abteilung\\Straße\\Postleitzahl Ort\\Land}
-\affil[2]{University\\Department\\Address\\Country}
+ \author[1,2]{Firstname1 Lastname1}{firstname1.lastname1@affiliation1.org}{0000-0000-0000-0000}
+ \author[2]{Firstname2 Lastname2}{firstname2.lastname2@affiliation2.org}{0000-0000-0000-0000}
+ \author[3]{Firstname3 Lastname3}{firstname3.lastname3@affiliation1.org}{0000-0000-0000-0000}
+ \author[1]{Firstname4 Lastname4}{firstname4.lastname4@affiliation1.org}{0000-0000-0000-0000}%
+ \affil[1]{Universität 1\\Abteilung\\Straße\\Postleitzahl Ort\\Land}
+ \affil[2]{University 2 \\Department\\Address\\Country}
+ \affil[3]{University 3\\Department\\Address\\Country}
\maketitle
\begin{abstract}
diff --git a/macros/latex/contrib/lni/lni.pdf b/macros/latex/contrib/lni/lni.pdf
index ae032bd25b..b79a12a091 100644
--- a/macros/latex/contrib/lni/lni.pdf
+++ b/macros/latex/contrib/lni/lni.pdf
Binary files differ
diff --git a/macros/latex/contrib/lstaddons/README b/macros/latex/contrib/lstaddons/README.txt
index 7306f47deb..04cca2d309 100644
--- a/macros/latex/contrib/lstaddons/README
+++ b/macros/latex/contrib/lstaddons/README.txt
@@ -1,8 +1,8 @@
LaTeX bundle 'lstaddons'
~~~~~~~~~~~~~~~~~~~~~~~~
-Copyright (c) 2011-2012 by Martin Scharrer <martin@scharrer-online.de>
+Copyright (c) 2011-2022 by Martin Scharrer <martin.scharrer@web.de>
CTAN: http://www.ctan.org/pkg/lstaddons
-Code repository: https://bitbucket.org/martin_scharrer/lstaddons
+Code repository: https://github.com/MartinScharrer/lstaddons/
This bundle contains a small collections of add-on packages for
the 'listings' package.
diff --git a/macros/latex/contrib/lstaddons/lstautogobble.dtx b/macros/latex/contrib/lstaddons/lstautogobble.dtx
index f9d62cf8d3..106034b6bb 100644
--- a/macros/latex/contrib/lstaddons/lstautogobble.dtx
+++ b/macros/latex/contrib/lstaddons/lstautogobble.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%<=*COPYRIGHT>
-%% Copyright (C) 2011-2012 by Martin Scharrer <martin@scharrer-online.de>
+%% Copyright (c) 2011-2022 by Martin Scharrer <martin.scharrer@web.de>
%% -----------------------------------------------------------------------
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -69,9 +69,9 @@
%
% \GetFileInfo{lstautogobble.dtx}
% \author{Martin Scharrer}
-% \email{martin@scharrer-online.de}
+% \email{martin.scharrer@web.de}
% \ifdefined\repository
-% \repository{https://bitbucket.org/martin_scharrer/lstautogobble}
+% \repository{https://github.com/MartinScharrer/lstaddons/}
% \fi
%
% \maketitle
diff --git a/macros/latex/contrib/lstaddons/lstautogobble.pdf b/macros/latex/contrib/lstaddons/lstautogobble.pdf
index 5321a97319..f054ba6597 100644
--- a/macros/latex/contrib/lstaddons/lstautogobble.pdf
+++ b/macros/latex/contrib/lstaddons/lstautogobble.pdf
Binary files differ
diff --git a/macros/latex/contrib/lstaddons/lstlinebgrd.dtx b/macros/latex/contrib/lstaddons/lstlinebgrd.dtx
index 860e6b6e81..705ffd19a7 100644
--- a/macros/latex/contrib/lstaddons/lstlinebgrd.dtx
+++ b/macros/latex/contrib/lstaddons/lstlinebgrd.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%<=*COPYRIGHT>
-%% Copyright (C) 2011-2012 by Martin Scharrer <martin@scharrer-online.de>
+%% Copyright (c) 2011-2024 by Martin Scharrer <martin.scharrer@web.de>
%% ----------------------------------------------------------------------
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -24,10 +24,10 @@
%<*driver>
\ProvidesFile{lstlinebgrd.dtx}[%
%<=*DATE>
- 2012/05/03
+ 2014/08/18
%<=/DATE>
%<=*VERSION>
- v0.1
+ v0.2
%<=/VERSION>
DTX file for 'lstlinebgrd']
\documentclass{ydoc}
@@ -73,14 +73,15 @@
%
% \changes{v0.1}{2012/05/03}{Initial release.}
+% \changes{v0.2}{2024/08/18}{Updated internal separator.}
%
% \DoNotIndex{\newcommand,\newenvironment}
%
% \GetFileInfo{lstlinebgrd.dtx}
% \author{Martin Scharrer}
-% \email{martin@scharrer-online.de}
+% \email{martin.scharrer@web.de}
% \ifdefined\repository
-% \repository{https://bitbucket.org/martin_scharrer/lstlinebgrd}
+% \repository{https://github.com/MartinScharrer/lstaddons/}
% \fi
%
% \maketitle
@@ -238,10 +239,10 @@
\lst@Key{numbers}{none}{%
\def\lst@PlaceNumber{\lst@linebgrd}%
\lstKV@SwitchCases{#1}%
- {none&\\%
- left&\def\lst@PlaceNumber{\llap{\normalfont
+ {none:\\%
+ left:\def\lst@PlaceNumber{\llap{\normalfont
\lst@numberstyle{\thelstnumber}\kern\lst@numbersep}\lst@linebgrd}\\%
- right&\def\lst@PlaceNumber{\rlap{\normalfont
+ right:\def\lst@PlaceNumber{\rlap{\normalfont
\kern\linewidth \kern\lst@numbersep
\lst@numberstyle{\thelstnumber}}\lst@linebgrd}%
}{\PackageError{Listings}{Numbers #1 unknown}\@ehc}}
diff --git a/macros/latex/contrib/lstaddons/lstlinebgrd.pdf b/macros/latex/contrib/lstaddons/lstlinebgrd.pdf
index 55843f75a6..af15c644f5 100644
--- a/macros/latex/contrib/lstaddons/lstlinebgrd.pdf
+++ b/macros/latex/contrib/lstaddons/lstlinebgrd.pdf
Binary files differ
diff --git a/macros/latex/contrib/magicwatermark/README.md b/macros/latex/contrib/magicwatermark/README.md
index db59f622e8..39615d2bb4 100644
--- a/macros/latex/contrib/magicwatermark/README.md
+++ b/macros/latex/contrib/magicwatermark/README.md
@@ -3,6 +3,4 @@
- Repository: https://github.com/ljguo1020/magicwatermark
- License: The LaTeX Project Public License 1.3c
-> magicwatermark is a package based on everypage and tikz and encapsulated by LATEX3 İt can
-> flexibly set and clear watermarks. All watermark content is placed in inside a node of verbtikz and
-> in the center of the page.
+magicwatermark is based on tikz and expl3, and can flexibly set backgrounds or watermarks.
diff --git a/macros/latex/contrib/magicwatermark/doc/magicwatermark-cn.pdf b/macros/latex/contrib/magicwatermark/doc/magicwatermark-cn.pdf
new file mode 100644
index 0000000000..c43ac7ff92
--- /dev/null
+++ b/macros/latex/contrib/magicwatermark/doc/magicwatermark-cn.pdf
Binary files differ
diff --git a/macros/latex/contrib/magicwatermark/doc/magicwatermark-cn.tex b/macros/latex/contrib/magicwatermark/doc/magicwatermark-cn.tex
new file mode 100644
index 0000000000..883f2b6808
--- /dev/null
+++ b/macros/latex/contrib/magicwatermark/doc/magicwatermark-cn.tex
@@ -0,0 +1,373 @@
+\documentclass{article}
+
+\usepackage{lipsum}
+
+\usepackage{../magicwatermark}
+
+\usepackage[margin = 2.51828cm]{geometry}
+
+
+\def\pkgname{\textcolor{teal}{\texttt{magicwatermark}}}
+\usepackage{indentfirst}
+\pagestyle{empty}
+
+\usepackage[UTF8, scheme=plain, fontset=none, heading=true, zihao=-4]{ctex}
+\setCJKmainfont[BoldFont={LXGWWenKai-Bold},ItalicFont={LXGWWenKai-Light}]{LXGWWenKai-Regular}
+\setCJKsansfont[BoldFont={LXGWWenKai-Bold}]{LXGWWenKai-Regular}
+\setCJKmonofont[BoldFont={LXGWWenKaiMono-Bold},ItalicFont={LXGWWenKaiMono-Light}]{LXGWWenKaiMono-Regular}
+
+\ctexset{
+% chapter={
+% format+=\raggedright,
+% name = {第,部分},
+% afterskip = .5cm
+% },
+ section={
+ format+=\raggedright,
+ afterskip = .5cm
+ },
+ contentsname = {目次}
+}
+
+\usepackage{fontspec}
+\IfFontExistsTF{calibri.ttf}
+{
+ \setmainfont{calibri.ttf}[
+ BoldFont = calibrib.ttf,
+ ItalicFont = calibrii.ttf,
+ BoldItalicFont = calibriz.ttf
+ ]
+}
+{}
+
+\usepackage[listings,breakable]{tcolorbox}
+
+\ExplSyntaxOn
+\clist_new:N \l_function_variant_list %fuction variant list
+\NewDocumentCommand{\function}{svo} % #1:function name #2: variant list
+{
+ \IfBooleanTF{#1}
+ {
+ \IfNoValueTF{#3}
+ {
+ \begin{tcolorbox}[width=\textwidth,left=1mm,right=1mm,top=1mm,bottom=1mm,sharp~corners,colback=white,boxrule=.5pt,colback=lime!30]
+ \texttt{Function}\hskip -2pt \Triangle\hskip -3pt \texttt{#2}\hfill \examplelabel*
+ \end{tcolorbox}
+ }
+ {
+ \clist_gset:Nn \l_function_variant_list {#3}
+ \begin{tcolorbox}[width=\textwidth,left=1mm,right=1mm,top=1mm,bottom=1mm,sharp~corners,colback=white,boxrule=.5pt,colback=lime!30]
+ \texttt{Function}\hskip -2pt \Triangle\hskip -3pt \texttt{#2\textcolor{gray}{(\clist_use:Nn \l_function_variant_list{|})}} \hfill \examplelabel*
+ \end{tcolorbox}
+ }
+ }
+ {
+ \IfNoValueTF{#3}
+ {
+ \def\functionn{
+ \texttt{#2}
+ }
+ }
+ {
+ \clist_gset:Nn \l_function_variant_list {#3}
+ \def\functionn{
+ \texttt{
+ #2
+ \textcolor{gray}{(\clist_use:Nn \l_function_variant_list{|})}
+ }
+ }
+ }
+ }
+
+}
+\NewDocumentCommand{\examplelabel}{s}
+{
+ \IfBooleanTF{#1}{
+ \raisebox{-0.5ex}{
+ \tikz{
+ \node[ball~color=purple,circle,outer~sep=0pt,scale=0.5] {\phantom{2}};
+ }}
+ }{
+ \raisebox{-0.5ex}{
+ \tikz{
+ \node[ball~color=cyan,circle,outer~sep=0pt,scale=0.5,font=\bfseries] {\theexample};
+ }}
+ }
+}
+\ExplSyntaxOff
+\def\Triangle{ % triangle icon
+ \raisebox{-0.3ex}{
+ \tikz{
+ \fill[scale=2,outer sep=0pt] (240:0.5ex) -- (0:0.5ex) -- (120:0.5ex);
+ }
+}}
+\newcounter{example}
+\tcbset{
+ example style/.style={
+ sharp corners,
+ colback=white,
+ boxrule=.5pt,
+ breakable,
+ left=1mm,right=1mm,top=1mm,bottom=1mm,
+ fonttitle=\bfseries,
+ colbacktitle=lime!30,
+ coltitle=black,
+ % title={MagicWatermark},
+ listing only
+ }
+}
+
+\newtcblisting[use counter=example]{example}[1][]{
+ listing options={
+ style=tcblatex,
+ tabsize = 1,
+ language={[LaTeX]TeX},
+ classoffset=0,
+ morekeywords = {MagicWatermark, foreach, includegraphics},
+ keywordstyle={\color[RGB]{178,34,34}\bfseries},
+ commentstyle={\color[RGB]{102,205,170}\itshape},
+ classoffset=1,
+ morekeywords = {setup, pages, content, is, append, style},
+ keywordstyle=\color{cyan!50!green}\bfseries,
+ },
+ example style,
+ #1
+ }
+
+
+\MagicWatermark{
+ setup = {
+ pages = {*},
+ content = {P-\thepage},
+ style = {shift = {(.5\textwidth, .5\textheight + \headheight + \headsep)}, scale = 3, text = cyan, font = \ttfamily}
+ },
+ setup = {
+ pages = {even},
+ style = {scale = 5, text = pink},
+ content = {Watermark},
+ is append
+ },
+ setup = {
+ pages = {1},
+ style = {text width = 1.7\paperwidth, rotate = 45, align = left, font = \Large\linespread{1}\selectfont, opacity = .1},
+ content = {
+ \foreach \x in {0, ..., 500} {Magic Watermark }
+ },
+ is append
+ }
+}
+
+
+\def\opt#1{\textcolor{magenta}{\texttt{#1}}}
+\def\para#1{\textcolor[rgb]{0.13, 0.67, 0.8}{\texttt{#1}}}
+
+\usepackage[hidelinks]{hyperref}
+\begin{document}
+
+
+\vspace*{\fill}
+\begin{center}
+ {\Huge \textcolor{teal}{\texttt{magicwatermark}} 宏包\footnote{\url{https://github.com/ljguo1020/magicwatermark}}} \\[.5cm]
+ {\Large 郭李军<ljguo1020@gmail.com>} \\[.5cm]
+ {\Large V1.2B}\\[1cm]
+\begin{example}[]
+\MagicWatermark{
+ setup = {
+ pages = {*},
+ content = {P-\thepage},
+ style = {shift = {(.5\textwidth, .5\textheight + \headheight + \headsep)}, scale = 3, text = cyan, font = \ttfamily}
+ },
+ setup = {
+ pages = {even},
+ style = {scale = 5, text = pink},
+ content = {Watermark},
+ is append
+ },
+ setup = {
+ pages = {1},
+ style = {text width = 1.7\paperwidth, rotate = 45, align = left, font = \Large, opacity = .1},
+ content = {
+ \foreach \x in {0, ..., 500} {Magic Watermark }
+ },
+ is append
+ }
+}
+\end{example}
+\end{center}
+
+\vspace*{\fill}
+
+\newpage
+
+
+\linespread{1.3}\selectfont
+\tableofcontents
+
+\section{介绍}
+
+\pkgname{} 是一个全新的水印宏包, 在 2022 年 6 月 17 日发布了第一版, 本次更新并不是基于第一版, 而是进行了重构.
+
+\pkgname{} 基于 \texttt{tikz} 和 \texttt{expl3}, 可以灵活的设置背景或水印.
+
+\section{使用}
+\pkgname{} 的使用, 相比于其它同类功能的包来说, 可以说是易用性最高的, 它只提供了一个命令 \verb|\MagicWatermark|, 命令参数由多个 \opt{setup} 规则组成.
+\begin{example}[]
+\MagicWatermark{
+ setup = {},
+ setup = {},
+ ...
+}
+\end{example}
+
+\opt{setup} 内部接受四个键值选项, 用于配置水印的表现形式.
+
+\subsection{pages}
+\opt{pages} 接受一个逗号分割列表, 用于配置水印作用范围, 例如 \verb|pages = {2, 4, 5, 8-10}|, 表示选中页码为第 2, 4, 5, 8, 9, 10 这些页面.
+
+\opt{pages} 共接受 4 种配置规则,
+\begin{itemize}
+ \item \para{*}, 表示所有页面;
+ \item \para{odd} 和 \para{oven}, 表示奇偶页;
+ \item 范围, 形如 \para{3-5}, \para{12-ii};
+ \item 表达式, 形如 \para{2X+1}, \para{2X\^{}2+X+1}, 但是变量必须为 \para{X}.
+\end{itemize}
+
+这里假定页面总页数为 24 页,
+\begin{example}[title = pages 配置规则]
+pages = {*} => 1, 2, 3, ..., 24
+pages = {odd} => 1, 3, 5, ..., 23
+pages = {1, 3, 5-10} => 1, 3, 5, 6, 7, ..., 10
+pages = {1-5, 8, 20-ii} => 1, 2, ..., 5, 8, 20, 21, ..., 23
+pages = {3X + 1} => 1, 4, 7, 10, ..., 22
+\end{example}
+
+\subsection{tikz}
+\opt{tikz} 用于设置是否将水印内容放置在 \texttt{tikz} 的 \texttt{node} 中, 见下文, 可选值为 \para{true} 和 \para{false}, 默认为 \para{true}. 当你需要使用 \opt{tikz} 时, 需要手动加载 \texttt{tikz} 宏包.
+
+\subsection{content}
+\opt{content} 用来设置水印的内容, 当 \opt{tikz} 被启用时, 它被放在了 \texttt{tikz} 的 \texttt{node} 中, 为此, 想要灵活的设置它, 您需要对 \texttt{node} 有一些了解.
+
+\subsection{style}
+\opt{style} 用于设置容纳水印内容的 \texttt{node} 的样式, 默认为 \para{inner~sep = 0pt, outer~sep = 0pt, opacity = .5, align = left}, 当 \opt{tikz} 被禁用时, 它会被忽略.
+
+\subsection{is append}
+\opt{is append} 用于设置是否覆盖当前页已有的水印, 可选值为 \para{true} 和 \para{false}, 默认为 \para{false}.
+
+\section{使用案例}
+\begin{example}[title = 为所有页面右上角添加页码]
+% \usepackage{tikz}
+\MagicWatermark{
+ setup = {
+ pages = {*},
+ content = {P-\thepage},
+ style = {shift = {(.5\textwidth, .5\textheight + \headheight + \headsep)}, scale = 3, text = cyan, font = \ttfamily}
+ }
+}
+\end{example}
+
+\begin{example}[title = 为偶数页页面中心添加文字 Watermark]
+% \usepackage{tikz}
+\MagicWatermark{
+ setup = {
+ pages = {even},
+ style = {scale = 5, text = pink},
+ content = {Watermark},
+ is append
+ }
+}
+\end{example}
+
+\begin{example}[title = 为第二页到最后一页设置铺满整个页面的文字]
+% \usepackage{tikz}
+\MagicWatermark{
+ setup = {
+ pages = {2-i},
+ style = {text width = 1.7\paperwidth, rotate = 45, align = left, font = \Large, opacity = .1},
+ content = {
+ \foreach \x in {0, ..., 500} {Magic Watermark }
+ },
+ is append
+ }
+}
+\end{example}
+
+\begin{example}[title = 为奇偶页设置不同水印]
+% \usepackage{tikz}
+\MagicWatermark{
+ setup = {
+ pages = {even},
+ style = {scale = 8, rotate = 45, text=red, align = center,font = \linespread{2}\selectfont},
+ content = {
+ Even MagicWatermark\\
+ Even MagicWatermark\\
+ Even MagicWatermark\\
+ Even MagicWatermark
+ }
+ },
+ setup = {
+ pages = {odd},
+ style = {scale = 6, rotate = -45, text = cyan, text width = 1.7\paperwidth, font = \linespread{1.5}\selectfont, align = center},
+ content = {
+ \foreach \x in {0,...,5}{
+ Odd MagicWatermark
+ }
+ }
+ }
+}
+\end{example}
+
+\begin{example}[title = 设置图片为水印]
+% \usepackage{tikz}
+\MagicWatermark{
+ setup = {
+ pages = {even},
+ style = {opacity = 0.3},
+ content = {
+ \includegraphics{example-image-a}
+ }
+ },
+ setup = {
+ pages = {odd},
+ style = {opacity = .3, rotate=45, text width = 3\paperwidth},
+ content = {
+ \foreach \x in {0, ..., 20}{
+ \foreach \y in {1, 2, 3} {
+ \includegraphics{example-image-b}
+ } \\
+ }
+ }
+ }
+}
+\end{example}
+
+\begin{example}[title = 禁用 tikz]
+\def\addhead#1#2{%
+ \expandafter\gdef\csname head@content@#1\endcsname{#2}%
+}
+
+\def\printhead#1{%
+ \csname head@content@#1\endcsname%
+}
+
+\addhead{2}{The only way to do great work is to love what you do.}
+\addhead{3}{Success is not final, failure is not fatal: It is the courage to continue that counts.}
+\addhead{4}{In the end, we will remember not the words of our enemies, but the silence of our friends.}
+\addhead{5}{It does not matter how slowly you go as long as you do not stop.}
+
+\NewDocumentCommand{\mywatermark}{}{%
+ \begin{tikzpicture}[remember picture, overlay]
+ \node[yshift = -\headheight - \headsep, text = teal, font = \large] at (current page.north) {\printhead{\thepage}};
+ \end{tikzpicture}
+}
+
+\MagicWatermark{
+ setup = {
+ pages = {2-5},
+ tikz = false,
+ content = \mywatermark
+ }
+}
+\end{example}
+
+
+\end{document}
diff --git a/macros/latex/contrib/magicwatermark/doc/magicwatermark-en.pdf b/macros/latex/contrib/magicwatermark/doc/magicwatermark-en.pdf
new file mode 100644
index 0000000000..30b84bd6cd
--- /dev/null
+++ b/macros/latex/contrib/magicwatermark/doc/magicwatermark-en.pdf
Binary files differ
diff --git a/macros/latex/contrib/magicwatermark/doc/magicwatermark-en.tex b/macros/latex/contrib/magicwatermark/doc/magicwatermark-en.tex
new file mode 100644
index 0000000000..e6520fa330
--- /dev/null
+++ b/macros/latex/contrib/magicwatermark/doc/magicwatermark-en.tex
@@ -0,0 +1,400 @@
+\documentclass{article}
+
+\usepackage{lipsum}
+
+\usepackage{../magicwatermark}
+
+\usepackage[margin = 2.51828cm]{geometry}
+
+
+\def\pkgname{\textcolor{teal}{\texttt{magicwatermark}}}
+\usepackage{indentfirst}
+\pagestyle{empty}
+
+\usepackage[UTF8, scheme=plain, fontset=none, heading=true, zihao=-4]{ctex}
+%\setCJKmainfont[BoldFont={LXGWWenKai-Bold},ItalicFont={LXGWWenKai-Light}]{LXGWWenKai-Regular}
+%\setCJKsansfont[BoldFont={LXGWWenKai-Bold}]{LXGWWenKai-Regular}
+%\setCJKmonofont[BoldFont={LXGWWenKaiMono-Bold},ItalicFont={LXGWWenKaiMono-Light}]{LXGWWenKaiMono-Regular}
+
+\ctexset{
+% chapter={
+% format+=\raggedright,
+% name = {第,部分},
+% afterskip = .5cm
+% },
+ section={
+ format+=\raggedright,
+ afterskip = .5cm
+ },
+ contentsname = {Table of contents}
+}
+
+\usepackage{fontspec}
+\IfFontExistsTF{calibri.ttf}
+{
+ \setmainfont{calibri.ttf}[
+ BoldFont = calibrib.ttf,
+ ItalicFont = calibrii.ttf,
+ BoldItalicFont = calibriz.ttf
+ ]
+}
+{}
+
+\newcommand\blfootnote[1]{
+ \begingroup
+ \renewcommand\thefootnote{}\footnote{#1}
+ \addtocounter{footnote}{-1}
+ \endgroup
+}
+
+\usepackage[listings,breakable]{tcolorbox}
+
+\ExplSyntaxOn
+\clist_new:N \l_function_variant_list %fuction variant list
+\NewDocumentCommand{\function}{svo} % #1:function name #2: variant list
+{
+ \IfBooleanTF{#1}
+ {
+ \IfNoValueTF{#3}
+ {
+ \begin{tcolorbox}[width=\textwidth,left=1mm,right=1mm,top=1mm,bottom=1mm,sharp~corners,colback=white,boxrule=.5pt,colback=lime!30]
+ \texttt{Function}\hskip -2pt \Triangle\hskip -3pt \texttt{#2}\hfill \examplelabel*
+ \end{tcolorbox}
+ }
+ {
+ \clist_gset:Nn \l_function_variant_list {#3}
+ \begin{tcolorbox}[width=\textwidth,left=1mm,right=1mm,top=1mm,bottom=1mm,sharp~corners,colback=white,boxrule=.5pt,colback=lime!30]
+ \texttt{Function}\hskip -2pt \Triangle\hskip -3pt \texttt{#2\textcolor{gray}{(\clist_use:Nn \l_function_variant_list{|})}} \hfill \examplelabel*
+ \end{tcolorbox}
+ }
+ }
+ {
+ \IfNoValueTF{#3}
+ {
+ \def\functionn{
+ \texttt{#2}
+ }
+ }
+ {
+ \clist_gset:Nn \l_function_variant_list {#3}
+ \def\functionn{
+ \texttt{
+ #2
+ \textcolor{gray}{(\clist_use:Nn \l_function_variant_list{|})}
+ }
+ }
+ }
+ }
+
+}
+\NewDocumentCommand{\examplelabel}{s}
+{
+ \IfBooleanTF{#1}{
+ \raisebox{-0.5ex}{
+ \tikz{
+ \node[ball~color=purple,circle,outer~sep=0pt,scale=0.5] {\phantom{2}};
+ }}
+ }{
+ \raisebox{-0.5ex}{
+ \tikz{
+ \node[ball~color=cyan,circle,outer~sep=0pt,scale=0.5,font=\bfseries] {\theexample};
+ }}
+ }
+}
+\ExplSyntaxOff
+\def\Triangle{ % triangle icon
+ \raisebox{-0.3ex}{
+ \tikz{
+ \fill[scale=2,outer sep=0pt] (240:0.5ex) -- (0:0.5ex) -- (120:0.5ex);
+ }
+}}
+\newcounter{example}
+\tcbset{
+ example style/.style={
+ sharp corners,
+ colback=white,
+ boxrule=.5pt,
+ breakable,
+ left=1mm,right=1mm,top=1mm,bottom=1mm,
+ fonttitle=\bfseries,
+ colbacktitle=lime!30,
+ coltitle=black,
+ % title={MagicWatermark},
+ listing only
+ }
+}
+
+\newtcblisting[use counter=example]{example}[1][]{
+ listing options={
+ style=tcblatex,
+ tabsize = 1,
+ language={[LaTeX]TeX},
+ classoffset=0,
+ morekeywords = {MagicWatermark, foreach, includegraphics},
+ keywordstyle={\color[RGB]{178,34,34}\bfseries},
+ commentstyle={\color[RGB]{102,205,170}\itshape},
+ classoffset=1,
+ morekeywords = {setup, pages, content, is, append, style},
+ keywordstyle=\color{cyan!50!green}\bfseries,
+ },
+ example style,
+ #1
+ }
+
+
+\MagicWatermark{
+ setup = {
+ pages = {*},
+ content = {P-\thepage},
+ style = {shift = {(.5\textwidth, .5\textheight + \headheight + \headsep)}, scale = 3, text = cyan, font = \ttfamily}
+ },
+ setup = {
+ pages = {even},
+ style = {scale = 5, text = pink},
+ content = {Watermark},
+ is append
+ },
+ setup = {
+ pages = {1},
+ style = {text width = 1.7\paperwidth, rotate = 45, align = left, font = \Large\linespread{1}\selectfont, opacity = .1},
+ content = {
+ \foreach \x in {0, ..., 500} {Magic Watermark }
+ },
+ is append
+ }
+}
+
+
+\def\opt#1{\textcolor{magenta}{\texttt{#1}}}
+\def\para#1{\textcolor[rgb]{0.13, 0.67, 0.8}{\texttt{#1}}}
+
+\usepackage[hidelinks]{hyperref}
+\begin{document}
+
+
+\vspace*{\fill}
+\begin{center}
+ {\Huge The \textcolor{teal}{\texttt{magicwatermark}}\footnote{\url{https://github.com/ljguo1020/magicwatermark}} package\blfootnote{English version of the documentation by Jérémy Just <\url{jeremy@jejust.fr}>.}} \\[.5cm]
+ {\Large Guo Li Jun <ljguo1020@gmail.com>} \\[.5cm]
+ {\Large V1.2B}\\[1cm]
+\begin{example}[]
+\MagicWatermark{
+ setup = {
+ pages = {*},
+ content = {P-\thepage},
+ style = {shift = {(.5\textwidth, .5\textheight + \headheight + \headsep)}, scale = 3, text = cyan, font = \ttfamily}
+ },
+ setup = {
+ pages = {even},
+ style = {scale = 5, text = pink},
+ content = {Watermark},
+ is append
+ },
+ setup = {
+ pages = {1},
+ style = {text width = 1.7\paperwidth, rotate = 45, align = left, font = \Large, opacity = .1},
+ content = {
+ \foreach \x in {0, ..., 500} {Magic Watermark }
+ },
+ is append
+ }
+}
+\end{example}
+\end{center}
+
+\vspace*{\fill}
+
+\newpage
+
+
+\linespread{1.3}\selectfont
+\tableofcontents
+
+\section{Presentation}
+
+\pkgname{} is a new watermarking package. Tts first version was released on June 17\textsuperscript{th}, 2022,
+but this update is a complete refactoring.
+
+\pkgname{} is based on \texttt{ti\textit{k}z} and \texttt{expl3}, which gives you a lot of flexibility
+to add a background or a watermark to the pages of your document.
+
+\section{Use}
+
+The use of \pkgname{}, compared to other packages of similar functionality, is a lot easier,
+as it provides a single command, \verb|\MagicWatermark|.
+This command takes a parameter consisting in a number of \opt{setup} rules.
+\begin{example}[]
+\MagicWatermark{
+ setup = {},
+ setup = {},
+ ...
+}
+\end{example}
+
+\opt{setup} internally accepts four key options to configure the presentation of the watermark.
+
+\subsection{pages}
+\opt{pages} accepts a comma-separated list which defines the scope of the watermark,\linebreak[4] \textit{e.g.} \verb|pages = {2, 4, 5, 8-10}| indicates that the watermark is to appear on pages 2, 4, 5, 8, 9 and 10.
+
+\opt{pages} accepts a total of four configuration rules:
+\begin{itemize}
+ \item \para{*}, indicating all pages;
+ \item \para{odd} and \para{even}, for odd/even pages;
+ \item a range, like \para{3-5} or \para{12-ii};
+ \item expressions, such as \para{2X+1}, \para{2X\^{}2+X+1} (the variable \textbf{has to be} \para{X}).
+\end{itemize}
+
+Here, we assume that the total number of pages is 24:
+\begin{example}[title = pages machine rules]
+pages = {*} => 1, 2, 3, ..., 24
+pages = {odd} => 1, 3, 5, ..., 23
+pages = {1, 3, 5-10} => 1, 3, 5, 6, 7, ..., 10
+pages = {1-5, 8, 20-ii} => 1, 2, ..., 5, 8, 20, 21, ..., 23
+pages = {3X + 1} => 1, 4, 7, 10, ..., 22
+\end{example}
+
+\subsection{tikz}
+
+\opt{tikz} is used to choose whether the watermark content will be placed
+in a \texttt{tikz} \texttt{node} (see below).
+The two possible values are \para{true} and \para{false}. The default is \para{true}.
+When you choose to use \opt{tikz}, you need to load the \texttt{tikz} package manually.
+
+\subsection{content}
+
+\opt{content} is used to define the content of the watermark, when \opt{tikz} is enabled.
+The given value is placed inside the \texttt{tikz} \texttt{node};
+for this reason, to take full avantage of this syntax, you need to have some knowledge
+of the available \texttt{node} options.
+
+\subsection{style}
+
+\opt{style} is used to set the style of the \texttt{node} that holds the watermark content.
+The default style is \para{inner~sep = 0pt, outer~sep = 0pt, opacity = .5, align = left},
+and is ignored when \opt{tikz} is disabled.
+
+\subsection{is append}
+
+\opt{is append} is used to choose whether or not to override the existing watermark on the
+current page. The available values are \para{true} and \para{false}, the default is \para{false}.
+
+
+\section{Examples}
+
+\begin{example}[title = Add page number to the top right corner of each pages:]
+% \usepackage{tikz}
+\MagicWatermark{
+ setup = {
+ pages = {*},
+ content = {P-\thepage},
+ style = {shift = {(.5\textwidth, .5\textheight + \headheight + \headsep)}, scale = 3, text = cyan, font = \ttfamily}
+ }
+}
+\end{example}
+
+\begin{example}[title = Add text watermark at the center of even numbered pages:]
+% \usepackage{tikz}
+\MagicWatermark{
+ setup = {
+ pages = {even},
+ style = {scale = 5, text = pink},
+ content = {Watermark},
+ is append
+ }
+}
+\end{example}
+
+\begin{example}[title = Add a full page of text as watermark to the second to last page:]
+% \usepackage{tikz}
+\MagicWatermark{
+ setup = {
+ pages = {2-i},
+ style = {text width = 1.7\paperwidth, rotate = 45, align = left, font = \Large, opacity = .1},
+ content = {
+ \foreach \x in {0, ..., 500} {Magic Watermark }
+ },
+ is append
+ }
+}
+\end{example}
+
+\begin{example}[title = Use different watermarks for odd and even pages:]
+% \usepackage{tikz}
+\MagicWatermark{
+ setup = {
+ pages = {even},
+ style = {scale = 8, rotate = 45, text=red, align = center,font = \linespread{2}\selectfont},
+ content = {
+ Even MagicWatermark\\
+ Even MagicWatermark\\
+ Even MagicWatermark\\
+ Even MagicWatermark
+ }
+ },
+ setup = {
+ pages = {odd},
+ style = {scale = 6, rotate = -45, text = cyan, text width = 1.7\paperwidth, font = \linespread{1.5}\selectfont, align = center},
+ content = {
+ \foreach \x in {0,...,5}{
+ Odd MagicWatermark
+ }
+ }
+ }
+}
+\end{example}
+
+\begin{example}[title = Use an image as watermark:]
+% \usepackage{tikz}
+\MagicWatermark{
+ setup = {
+ pages = {even},
+ style = {opacity = 0.3},
+ content = {
+ \includegraphics{example-image-a}
+ }
+ },
+ setup = {
+ pages = {odd},
+ style = {opacity = .3, rotate=45, text width = 3\paperwidth},
+ content = {
+ \foreach \x in {0, ..., 20}{
+ \foreach \y in {1, 2, 3} {
+ \includegraphics{example-image-b}
+ } \\
+ }
+ }
+ }
+}
+\end{example}
+
+\begin{example}[title = Disable tikz]
+\def\addhead#1#2{%
+ \expandafter\gdef\csname head@content@#1\endcsname{#2}%
+}
+
+\def\printhead#1{%
+ \csname head@content@#1\endcsname%
+}
+
+\addhead{2}{The only way to do great work is to love what you do.}
+\addhead{3}{Success is not final, failure is not fatal: It is the courage to continue that counts.}
+\addhead{4}{In the end, we will remember not the words of our enemies, but the silence of our friends.}
+\addhead{5}{It does not matter how slowly you go as long as you do not stop.}
+
+\NewDocumentCommand{\mywatermark}{}{%
+ \begin{tikzpicture}[remember picture, overlay]
+ \node[yshift = -\headheight - \headsep, text = teal, font = \large] at (current page.north) {\printhead{\thepage}};
+ \end{tikzpicture}
+}
+
+\MagicWatermark{
+ setup = {
+ pages = {2-5},
+ tikz = false,
+ content = \mywatermark
+ }
+}
+\end{example}
+
+
+\end{document}
diff --git a/macros/latex/contrib/magicwatermark/magicwatermark-en.pdf b/macros/latex/contrib/magicwatermark/magicwatermark-en.pdf
deleted file mode 100644
index 5ee2d2d9f5..0000000000
--- a/macros/latex/contrib/magicwatermark/magicwatermark-en.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/magicwatermark/magicwatermark-en.tex b/macros/latex/contrib/magicwatermark/magicwatermark-en.tex
deleted file mode 100644
index 03a3e6db11..0000000000
--- a/macros/latex/contrib/magicwatermark/magicwatermark-en.tex
+++ /dev/null
@@ -1,212 +0,0 @@
-\documentclass{l3doc}
-\usepackage{graphicx}
-\usepackage{enumitem}
-\usepackage{listings}
-\lstset{
-frame=tb,framerule=2pt,language={[LaTeX]TeX},basicstyle={\ttfamily},
-language={[LaTeX]TeX},
-keywordstyle=\color{red!70!black}\bfseries,
-keywordstyle={[2]\color{blue!70!black}\bfseries},
-morekeywords={PageSetup,Watermark,NewWatermark,MyPageSetup,MyWatermark,EvenPageSetup,OddPageSetup,EvenWatermark,OddWatermark,ClearWatermark}}
-\usepackage{fontspec}
-\IfFontExistsTF{calibri.ttf}
-{
- \setmainfont{calibri.ttf}[
- BoldFont = calibrib.ttf,
- ItalicFont = calibrii.ttf,
- BoldItalicFont = calibriz.ttf
- ]
-}
-{}
-\usepackage{magicwatermark}
-\renewcommand*\marg[1]{\{\meta{#1}\}}
-\renewcommand*\oarg[1]{[\meta{#1}]}
-\renewcommand*\parg[1]{(\meta{#1})}
-\title{\pkg{magicwatermark}}
-\author{lijun guo \\ liguo1020@gmail.com}
-\def\version{v1.0.1}
-\date{\today\quad\version}
-\pagestyle{empty}
-\PageSetup*
-{
- \begin{tikzpicture}[remember picture,overlay]
- \node[cyan,scale = 2,shift={(-1,-1)}] at (current page.north east){--~\thepage~--};
- \end{tikzpicture}
-}
-\Watermark
-\begin{document}
-\maketitle
-\tableofcontents
-\begin{abstract}
-\pkg{magicwatermark} is a package based on \pkg{everypage} and \pkg{tikz} and encapsulated by \LaTeX3 \. It can flexibly set and clear watermarks. All watermark content is placed in \ inside a \verb|node| of \verb|tikz| and in the center of the page.
-\end{abstract}
-\section{Introduction}
-Currently the \pkg{magicwatermark} package can only implement the following functions
-\begin{itemize}
- \item Set watermark for all pages
- \item Set watermark for odd pages
- \item Set the watermark for even pages
- \item Create a new watermark and set multiple watermarks on the same page
- \item Clear watermark
-\end{itemize}
-\section{Interface}
-\subsection{Some command}
-\begin{function}[added=2021-12-21,updated=2021-12-21]{\PageSetup}
- \begin{syntax}
- \tn{PageSetup} \oarg{option} \marg{content for watermark}
- \end{syntax}
- This command is used to set the watermark content of all pages. It accepts two parameters. The first parameter is used to set some properties and is given in the form of \verb|key=value|. The second parameter is used to set the watermark content. It is text, pictures, etc.
-\end{function}
-\begin{function}[added=2021-12-21,updated=2021-12-21]{\Watermark}
-\begin{syntax}
- \tn{Watermark}
-\end{syntax}
-This command is used to display the watermark set above
-\end{function}
-\begin{function}[added=2021-12-21,updated=2021-12-21]{\EvenPageSetup}
-\begin{syntax}
-\tn{EvenPageSetup}\oarg{option}\marg{content for watermark}
-\end{syntax}
-This command is used to set the watermark content of even pages
-\end{function}
-\begin{function}[added=2021-12-21,updated=2021-12-21]{\EvenWatermark}
-\begin{syntax}
- \tn{EvenWatermark}
-\end{syntax}
-This command is used to display the even page watermark set above
-\end{function}
-\begin{function}[added=2021-12-21,updated=2021-12-21]{\OddPageSetup}
-\begin{syntax}
-\tn{OddPageSetup}\oarg{option}\marg{content for watermark}
-\end{syntax}
-This command is used to set the watermark content of odd pages
-\end{function}
-\begin{function}[added=2021-12-21,updated=2021-12-21]{\OddWatermark}
-\begin{syntax}
- \tn{OddWatermark}
-\end{syntax}
-This command is used to display the odd page watermark set above
-\end{function}
-\subsection{Add command}
-The usage of the following commands with asterisks is similar to the above. It is not so much an extension as it is a cancellation of restrictions. The above commands all write the watermark content in a \verb|node|, for users who are not familiar with TikZ , the former is more square is convenient and fast, while the latter is more flexible
-\begin{function}[added=2022-01-07,updated=2022-01-07]{\PageSetup*}
-\begin{syntax}
-\tn{PageSetup*}\marg{content for watermark}
-\end{syntax}
-\end{function}
-\begin{function}[added=2022-01-07,updated=2022-01-07]{\EvenPageSetup*}
-\begin{syntax}
-\tn{EvenPageSetup*}\marg{content for watermark}
-\end{syntax}
-\end{function}
-\begin{function}[added=2022-01-07,updated=2022-01-07]{\OddPageSetup*}
-\begin{syntax}
-\tn{OddPageSetup*}\marg{content for watermark}
-\end{syntax}
-\end{function}
-\begin{function}[added=2021-12-21,updated=2021-12-21]{\NewWatermark}
-\begin{syntax}
-\tn{NewWatermark}\marg{watermark name}
-\end{syntax}
-This command is used to create a new watermark. Note that the watermark name cannot be \verb|main|, \verb|even|, \verb|odd|.
-\end{function}
-\begin{function}[added=2021-12-21,updated=2021-12-21]{\MyPageSetup}
-\begin{syntax}
-\tn{MyPageSetup}\oarg{option}\marg{watermark name}\marg{content for watermark}
-\end{syntax}
-Used to set the new watermark content
-\end{function}
-\begin{function}[added=2021-12-21,updated=2021-12-21]{\MyWatermark}
-\begin{syntax}
- \tn{MyWatermark}\marg{watermark name}
-\end{syntax}
-This command is used to display the watermark set above
-\end{function}
-\begin{function}[added=2021-12-21,updated=2021-12-21]{\ClearWatermark}
-\begin{syntax}
- \tn{ClearWatermark}\marg{watermark list}
-This command is used to clear the set watermark, accepts a comma list as parameter, for example:
-\begin{itemize}
- \item \verb|\ClearWatermark{main}| clears the watermark set by \verb|\Watermark|
- \item \verb|\ClearWatermark{even,odd}| clears the watermark on odd and even pages
- \item \verb|\ClearWatermark{all}| Clear all watermarks
- \item \verb|\ClearWatermark{name1,name2,name3,...}|
-\end{itemize}
-\end{syntax}
-\end{function}
-\subsection{option list}
-The \textbf{option} in the above setting command is as follows
-\begin{itemize}
- \item \verb|scale = <number>| set the scale
- \item \verb|opacity = <number>| set the opacity
- \item \verb|shift = {(x,y)}| for translation by vector (x,y)
- \item \verb|color = <color expression>| set the color
- \item \verb|rotate = <angle>| Set the rotation angle
- \item \verb+align = <center|left|right>+ Set the alignment of multi-line text, the default is center
- \item \verb+showframe = <true|false>+ Set whether to display the frame, the default is false
-\end{itemize}
-\subsection{notes}
-All show and clear commands take effect only on the text following the command.
-
-\section{Examples}
-\subsection{basic}
-\begin{lstlisting}
-\documentclass{ctexart}
-\usepackage{magicwatermark}
-\PageSetup[
- rotate = 30, % set the rotation angle
- color = red!80, % set color for watermark content
- scale = 6 % set the scale
-]{
- watermark content
-}
-\Watermark
-\begin{document}
-...
-\end{document}
-\end{lstlisting}
-\subsection{Odd and Even Pages}
-\begin{lstlisting}
-\documentclass{ctexart}
-\usepackage{magicwatermark}
-\EvenPageSetup[color=cyan,showframe,scale=4]{Even page} % Even page
-\OddPageSetup[color=purple,showframe,scale=4]{Odd page} % Odd page
-\EvenWatermark % show watermark
-\OddWatermark
-\begin{document}
-...
-\end{document}
-\end{lstlisting}
-\subsection{star}
-\begin{lstlisting}
-\documentclass{ctexart}
-\usepackage{magicwatermark}
-\PageSetup*{
- \begin{tikzpicture}[remember picture,overlay]
- \node[cyan,scale = 2,shift={(-1,-1)}] at
- (current page.north east){--~\thepage~--};
- \end{tikzpicture}
-}
-\begin{document}
-...
-\Watermark % This order did not take effect before
-\end{document}
-\end{lstlisting}
-\subsection{New watermark}
-\begin{lstlisting}
-\documentclass{ctexart}
-\usepackage{magicwatermark}
-\NewWatermark{one} % new
-\NewWatermark{two}
-\MyPageSetup[scale=5,color=blue]{one}{content one} % setting
-\MyPageSetup[scale=5,color=red]{two}{content two}
-\begin{document}
-\MyWatermark{one} % use watermark one
-...
-\newpage
-\ClearWatermark{one} % clear watermark one
-\MyWatermark{two} % use watermark two
-...
-\end{document}
-\end{lstlisting}
-\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/magicwatermark/magicwatermark.dtx b/macros/latex/contrib/magicwatermark/magicwatermark.dtx
deleted file mode 100644
index 35115c1cca..0000000000
--- a/macros/latex/contrib/magicwatermark/magicwatermark.dtx
+++ /dev/null
@@ -1,598 +0,0 @@
-% \iffalse meta-comment
-% !TEX program = XeLaTeX
-%<*internal>
-\iffalse
-%</internal>
-%<*internal>
-\fi
-\begingroup
- \def\temp{LaTeX2e}
-\expandafter\endgroup\ifx\temp\fmtname\else
-\csname fi\endcsname
-%</internal>
-%<*install>
-
-\input ctxdocstrip %
-
-\let\MetaPrefix\relax
-
-\declarepostamble\emptypostamble
-\endpostamble
-
-\def\MetaPrefix{-- }
-
-
-\let\MetaPrefix\DoubleperCent
-
-\generate
- {
-%</install>
-%<*internal>
- \usedir{source/xelatex/magicwatermark}
- \file{magicwatermark.ins} {\from{\jobname.dtx}{install}}
-%</internal>
-%<*install>
- \usedir{xetex/xelatex/magicwatermark}
- \file{magicwatermark.sty} {\from{\jobname.dtx}{package}}
- \nopreamble\nopostamble
- \usedir{doc/xelatex/magicwatermark}
- \file{README.md} {\from{\jobname.dtx}{readme}}
- }
-
-\endbatchfile
-%</install>
-%<*internal>
-\fi
-%</internal>
-%<package>\NeedsTeXFormat{LaTeX2e}[2020/10/01]
-%<package>\ProvidesPackage{magicwatermark}[2021/12/22 v1.0.1 watermark for ljguo ]
-%<*driver>
-\documentclass{ctxdoc}
-\usepackage{graphicx}
-\usepackage{enumitem}
-\usepackage{listings}
-\lstset{
-frame=tb,framerule=2pt,language={[LaTeX]TeX},basicstyle={\ttfamily},
-language={[LaTeX]TeX},
-keywordstyle=\color{red!70!black}\bfseries,
-keywordstyle={[2]\color{blue!70!black}\bfseries},
-morekeywords={PageSetup,Watermark,NewWatermark,MyPageSetup,MyWatermark,EvenPageSetup,OddPageSetup,EvenWatermark,OddWatermark,ClearWatermark}}
-\usepackage{fontspec}
-\IfFontExistsTF{calibri.ttf}
-{
- \setmainfont{calibri.ttf}[
- BoldFont = calibrib.ttf,
- ItalicFont = calibrii.ttf,
- BoldItalicFont = calibriz.ttf
- ]
-}
-{}
-\setCJKmainfont[AutoFakeBold,AutoFakeSlant]{simfang.ttf}
-\usepackage{magicwatermark}
-\renewcommand*\marg[1]{\{\meta{#1}\}}
-\renewcommand*\oarg[1]{[\meta{#1}]}
-\renewcommand*\parg[1]{(\meta{#1})}
-\begin{document}
-%<!--CODEDOC--> \DisableImplementation
- \EnableImplementation
- \DocInput{\jobname.dtx}
- \IndexLayout
- \PrintChanges
- \PrintIndex
-\end{document}
-%</driver>
-% \fi
-%
-
-% \GetFileId{magicwatermark.sty}
-%
-% \CharacterTable
-% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
-% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
-% Digits \0\1\2\3\4\5\6\7\8\9
-% Exclamation \! Double quote \" Hash (number) \#
-% Dollar \$ Percent \% Ampersand \&
-% Acute accent \' Left paren \( Right paren \)
-% Asterisk \* Plus \+ Comma \,
-% Minus \- Point \. Solidus \/
-% Colon \: Semicolon \; Less than \<
-% Equals \= Greater than \> Question mark \?
-% Commercial at \@ Left bracket \[ Backslash \\
-% Right bracket \] Circumflex \^ Underscore \_
-% Grave accent \` Left brace \{ Vertical bar \|
-% Right brace \} Tilde \~}
-%
-%
-%\title{\pkg{magicwatermark}: 魔法水印宏包}
-%\author{郭李军 \\ liguo1020@gmail.com}
-%\def\version{v1.0.1}
-%\date{\today\quad\version}
-%\pagestyle{empty}
-%\PageSetup*
-%{
-% \begin{tikzpicture}[remember picture,overlay]
-% \node[cyan,scale = 2,shift={(-1,-1)}] at (current page.north east){--~\thepage~--};
-% \end{tikzpicture}
-%}
-%\Watermark
-%\maketitle
-%\thispagestyle{empty}
-%\tableofcontents
-%\begin{documentation}
-%\changes{v1.0.1}{2021/12/21}{实现了一些基本功能}
-%\begin{abstract}
-%\pkg{magicwatermark} 是一个基于 \pkg{everypage} 和 \pkg{tikz} 宏包,并经过 \LaTeX3 \ 进行封装的宏包,它可以很灵活的设置和清除水印,所有水印内容都放在 \verb|tikz| 的一个 \verb|node| 里面,并处于页面中心。
-%\end{abstract}
-%\section{介绍}
-%目前 \pkg{magicwatermark} 宏包只能实现如下功能
-%\begin{itemize}
-% \item 设置所有页面的水印
-% \item 设置奇数页的水印
-% \item 设置偶数页的水印
-% \item 新建水印,同页面设置多个水印
-% \item 清除水印
-%\end{itemize}
-%\section{用户接口}
-%\subsection{提供命令}
-% \begin{function}[added=2021-12-21,updated=2021-12-21]{\PageSetup}
-% \begin{syntax}
-% \tn{PageSetup} \oarg{水印参数} \marg{水印内容}
-% \end{syntax}
-% 此命令用于设置所有页面的水印内容,接受两个参数,第一个参数用于设置一些属性,以 \verb|key=value| 的形式给出, 第二个参数用于设置水印内容,可以是文字、图片、等.
-% \end{function}
-%\begin{function}[added=2021-12-21,updated=2021-12-21]{\Watermark}
-%\begin{syntax}
-% \tn{Watermark}
-%\end{syntax}
-% 该命令用于显示上面设置的水印
-%\end{function}
-%\begin{function}[added=2021-12-21,updated=2021-12-21]{\EvenPageSetup}
-%\begin{syntax}
-% \tn{EvenPageSetup}\oarg{水印参数}\marg{水印内容}
-%\end{syntax}
-% 该命令用于设置偶数页的水印内容
-%\end{function}
-%\begin{function}[added=2021-12-21,updated=2021-12-21]{\EvenWatermark}
-%\begin{syntax}
-% \tn{EvenWatermark}
-%\end{syntax}
-% 该命令用于显示上面设置的偶数页水印
-%\end{function}
-%\begin{function}[added=2021-12-21,updated=2021-12-21]{\OddPageSetup}
-%\begin{syntax}
-% \tn{OddPageSetup}\oarg{水印参数}\marg{水印内容}
-%\end{syntax}
-% 该命令用于设置奇数页的水印内容
-%\end{function}
-%\begin{function}[added=2021-12-21,updated=2021-12-21]{\OddWatermark}
-%\begin{syntax}
-% \tn{OddWatermark}
-%\end{syntax}
-% 该命令用于显示上面设置的奇数页水印
-%\end{function}
-%\subsection{扩展命令}
-%以下带星号命令用法和上面的类似,与其说是扩展,不如说是取消了限制,以上的命令都将水印内容写在一个\verb|node|中,对于对 TikZ 不太熟练的用户来说,前者更加方
-%便快捷,而后者则更加灵活
-%\begin{function}[added=2022-01-07,updated=2022-01-07]{\PageSetup*}
-%\begin{syntax}
-% \tn{PageSetup*}\marg{水印内容}
-%\end{syntax}
-%\end{function}
-%\begin{function}[added=2022-01-07,updated=2022-01-07]{\EvenPageSetup*}
-%\begin{syntax}
-% \tn{EvenPageSetup*}\marg{水印内容}
-%\end{syntax}
-%\end{function}
-%\begin{function}[added=2022-01-07,updated=2022-01-07]{\OddPageSetup*}
-%\begin{syntax}
-% \tn{OddPageSetup*}\marg{水印内容}
-%\end{syntax}
-%\end{function}
-%\begin{function}[added=2021-12-21,updated=2021-12-21]{\NewWatermark}
-%\begin{syntax}
-% \tn{NewWatermark}\marg{水印名称}
-%\end{syntax}
-%该命令用于新建一个水印,注意水印名称不能是 \verb|main|, \verb|even|, \verb|odd|.
-%\end{function}
-%\begin{function}[added=2021-12-21,updated=2021-12-21]{\MyPageSetup}
-%\begin{syntax}
-% \tn{MyPageSetup}\oarg{水印参数}\marg{水印名称}\marg{水印内容}
-%\end{syntax}
-%用于设置新建的水印内容
-%\end{function}
-%\begin{function}[added=2021-12-21,updated=2021-12-21]{\MyWatermark}
-%\begin{syntax}
-% \tn{MyWatermark}\marg{水印名称}
-%\end{syntax}
-% 该命令用于显示上面设置的水印
-%\end{function}
-%\begin{function}[added=2021-12-21,updated=2021-12-21]{\ClearWatermark}
-%\begin{syntax}
-% \tn{ClearWatermark}\marg{水印列表}
-%该命令用于清除设置的水印,接受一个逗号列表作为参数,例如:
-%\begin{itemize}
-% \item \verb|\ClearWatermark{main}| 清除由 \verb|\Watermark| 设置的水印
-% \item \verb|\ClearWatermark{even,odd}| 清除奇数和偶数页的水印
-% \item \verb|\ClearWatermark{all}| 清除所有的水印
-% \item \verb|\ClearWatermark{name1,name2,name3,...}|
-%\end{itemize}
-%\end{syntax}
-%\end{function}
-%\subsection{参数列表}
-%以上设置命令中的\textbf{水印参数}如下
-%\begin{itemize}
-% \item \verb|scale = <number>| 用于设置缩放比例
-% \item \verb|opacity = <number>| 用于设置不透明度
-% \item \verb|shift = {(x,y)}| 用于按向量 (x,y) 平移
-% \item \verb|color = <color expression>| 用于设置文本颜色
-% \item \verb|rotate = <angle>| 用于设置旋转角度
-% \item \verb+align = <center|left|right>+ 用于设置多行文本对齐方式,默认为 center
-% \item \verb+showframe = <true|false>+ 用于设置是否显示文本框,默认为 false
-%\end{itemize}
-%\subsection{一些说明}
-%所有的显示命令和清除命令都仅对该命令后面的文本生效。
-
-%\section{Examples}
-%\subsection{不带星号}
-%\begin{lstlisting}
-\documentclass{ctexart}
-\usepackage{magicwatermark}
-\PageSetup[
- rotate = 30, % 设置旋转角度
- color = red!80, % 设置水印内容颜色
- scale = 6 % 设置比例
-]{
- 水印内容
-}
-\Watermark % 全文生效
-\begin{document}
-...
-\end{document}
-\end{lstlisting}
-%\subsection{奇偶页}
-%\begin{lstlisting}
-\documentclass{ctexart}
-\usepackage{magicwatermark}
-\EvenPageSetup[color=cyan,showframe,scale=4]{偶数页} % 设置奇数页
-\OddPageSetup[color=purple,showframe,scale=4]{奇数页} % 设置偶数页
-\EvenWatermark % 显示水印
-\OddWatermark
-\begin{document}
-...
-\end{document}
-\end{lstlisting}
-%\subsection{带星号}
-%\begin{lstlisting}
-\documentclass{ctexart}
-\usepackage{magicwatermark}
-\PageSetup*{
- \begin{tikzpicture}[remember picture,overlay]
- \node[cyan,scale = 2,shift={(-1,-1)}] at
- (current page.north east){--~\thepage~--};
- \end{tikzpicture}
-}
-\begin{document}
-...
-\Watermark % 该命令之前不生效
-\end{document}
-\end{lstlisting}
-%\subsection{新建水印}
-%\begin{lstlisting}
-\documentclass{ctexart}
-\usepackage{magicwatermark}
-\NewWatermark{one} % 新建两个水印
-\NewWatermark{two}
-\MyPageSetup[scale=5,color=blue]{one}{水印内容一} % 设置水印
-\MyPageSetup[scale=5,color=red]{two}{水印内容二}
-\begin{document}
-\MyWatermark{one} % 使用第一个水印
-...
-\newpage
-\ClearWatermark{one} % 清除第一个水印
-\MyWatermark{two} % 使用第二个水印
-...
-\end{document}
-\end{lstlisting}
-%\end{documentation}
-%
-% \StopEventually{}
-% \section{代码实现}
-% \begin{macrocode}
-%<*package>
-% \end{macrocode}
-% 加载必要的宏包
-% \begin{macrocode}
-\RequirePackage{everypage-1x,tikz,xparse,expl3}
-% \end{macrocode}
-% 打开\LaTeX3 编程环境
-% \begin{macrocode}
-\ExplSyntaxOn
-% \end{macrocode}
-% 声明一些变量
-% \begin{macrocode}
-\tl_new:N \l_mainpage_tl
-\tl_new:N \l_evenpage_tl
-\tl_new:N \l_oddpage_tl
-\tl_new:N \g_case_tl
-\tl_new:N \g_clear_all_tl
-% \end{macrocode}
-% 定义警告
-% \begin{macrocode}
-\msg_new:nnn{clear}{not~have}{I~can~not~find~the~"\clear"~watermark~!}
-% \end{macrocode}
-% \begin{macro}{\PageSetup}
-% 对所有页面设置水印
-% \begin{macrocode}
-\NewDocumentCommand{\PageSetup}{sO{}+m}
-{
- \IfBooleanTF{#1}
- {
- \tl_set:Nn \l_mainpage_tl{#3}
- }
- {
- \tl_set:Nn \l_mainpage_tl
- {
- \group_begin:
- \keys_set:nn{watermark}{#2}
- \begin{tikzpicture}[remember~picture,overlay]
- \node
- [
- scale = \fp_use:N\l_scale_fp,
- opacity = \fp_use:N\l_opacity_fp,
- shift = \tl_use:N\l_shift_tl,
- color = \tl_use:N \l_color_tl,
- rotate = \fp_use:N \l_rotate_fp,
- align = \tl_use:N \l_align_tl,
- \bool_if:NTF \l_showframe_bool{draw}{},
- ]
- at(current~page.center){#3};
- \end{tikzpicture}
- \group_end:
- }
- }
-}
-% \end{macrocode}
-% \end{macro}
-% \begin{macro}{\Watermark}
-% 用于显示由 \verb|\PageSetup| 命令设置的水印
-% \begin{macrocode}
-\NewDocumentCommand{\Watermark}{}
-{
- \AddEverypageHook{\tl_use:N \l_mainpage_tl}
-}
-% \end{macrocode}
-% \end{macro}
-% \begin{macro}{\EvenPageSetup}
-% 对偶数页设置水印
-% \begin{macrocode}
-\NewDocumentCommand{\EvenPageSetup}{sO{}+m}
-{
- \IfBooleanTF{#1}
- {
- \tl_set:Nn \l_evenpage_tl{#3}
- }
- {
- \tl_set:Nn \l_evenpage_tl
- {
- \group_begin:
- \keys_set:nn{watermark}{#2}
- \begin{tikzpicture}[remember~picture,overlay]
- \node
- [
- scale = \fp_use:N\l_scale_fp,
- opacity = \fp_use:N\l_opacity_fp,
- shift = \tl_use:N\l_shift_tl,
- color = \tl_use:N \l_color_tl,
- rotate = \fp_use:N \l_rotate_fp,
- align = \tl_use:N \l_align_tl,
- \bool_if:NTF \l_showframe_bool{draw}{},
- ]
- at(current~page.center){#3};
- \end{tikzpicture}
- \group_end:
- }
- }
-}
-% \end{macrocode}
-% \end{macro}
-% \begin{macro}{\EvenWatermark}
-% 用于显示由 \verb|\EvenPageSetup| 命令设置的水印
-% \begin{macrocode}
-\NewDocumentCommand{\EvenWatermark}{}
-{
- \AddEverypageHook
- {
- \int_if_even:nT{\int_use:N \value{page}}
- {
- \tl_use:N \l_evenpage_tl
- }
- }
-}
-% \end{macrocode}
-% \end{macro}
-% \begin{macro}{\OddPageSetup}
-% 对奇数页设置水印
-% \begin{macrocode}
-\NewDocumentCommand{\OddPageSetup}{sO{}+m}
-{
- \IfBooleanTF{#1}
- {
- \tl_set:Nn \l_oddpage_tl{#3}
- }
- {
- \tl_set:Nn \l_oddpage_tl
- {
- \group_begin:
- \keys_set:nn{watermark}{#2}
- \begin{tikzpicture}[remember~picture,overlay]
- \node
- [
- scale = \fp_use:N\l_scale_fp,
- opacity = \fp_use:N\l_opacity_fp,
- shift = \tl_use:N\l_shift_tl,
- color = \tl_use:N \l_color_tl,
- rotate = \fp_use:N \l_rotate_fp,
- align = \tl_use:N \l_align_tl,
- \bool_if:NTF \l_showframe_bool{draw}{},
- ]
- at(current~page.center){#3};
- \end{tikzpicture}
- \group_end:
- }
- }
-}
-% \end{macrocode}
-% \end{macro}
-% \begin{macro}{\OddWatermark}
-% 用于显示由 \verb|\OddPageSetup| 命令设置的水印
-% \begin{macrocode}
-\NewDocumentCommand{\OddWatermark}{}
-{
- \AddEverypageHook
- {
- \int_if_odd:nT{\int_use:N \value{page}}
- {
- \tl_use:N \l_oddpage_tl
- }
- }
-}
-% \end{macrocode}
-% \end{macro}
-
-% \begin{macro}{\NewWatermark}
-% 用于新建一个水印
-% \begin{macrocode}
-\NewDocumentCommand{\NewWatermark}{m}
-{
- \tl_new:c {l_#1_tl}
- \tl_put_right:Nn \g_case_tl {{#1}{\tl_clear:c {l_#1_tl}}}
- \tl_put_right:Nn \g_clear_all_tl {\tl_clear:c {l_#1_tl}}
-}
-% \end{macrocode}
-% \end{macro}
-% \begin{macro}{\MyPageSetup}
-% 用于设置新建的水印
-% \begin{macrocode}
-\NewDocumentCommand{\MyPageSetup}{O{} m +m}
-{
- \tl_set:cn {l_#2_tl}
- {
- \group_begin:
- \keys_set:nn{watermark}{#1}
- \begin{tikzpicture}[remember~picture,overlay]
- \node
- [
- scale = \fp_use:N\l_scale_fp,
- opacity = \fp_use:N\l_opacity_fp,
- shift = \tl_use:N\l_shift_tl,
- color = \tl_use:N \l_color_tl,
- rotate = \fp_use:N \l_rotate_fp,
- align = \tl_use:N \l_align_tl,
- \bool_if:NTF \l_showframe_bool{draw}{},
- ]
- at(current~page.center){#3};
- \end{tikzpicture}
- \group_end:
- }
-}
-% \end{macrocode}
-% \end{macro}
-
-
-
-% \begin{macro}{\MyWatermark}
-% 用于显示由 \verb|\MyPageSetup| 命令设置的水印
-% \begin{macrocode}
-\NewDocumentCommand{\MyWatermark}{m}
-{
- \AddEverypageHook{\tl_use:c {l_#1_tl}}
-}
-% \end{macrocode}
-% \end{macro}
-% 定义一些可选参数, 用于对水印进行设置
-% \begin{macrocode}
-\keys_define:nn{watermark}
-{
- scale.fp_set:N = \l_scale_fp,
- scale.initial:n = 1.0,
- scale.default:n = 1.0,
- opacity.fp_set:N = \l_opacity_fp,
- opacity.initial:n = 0.8,
- opacity.default:n = 0.8,
- shift.tl_set:N = \l_shift_tl,
- shift.initial:n = {(0,0)},
- shift.default:n = {(0,0)},
- color.tl_set:N = \l_color_tl,
- color.initial:n = black,
- color.default:n =black,
- rotate.fp_set:N =\l_rotate_fp,
- rotate.initial:n = 0.0,
- rotate.default:n = 0.0,
- align.tl_set:N = \l_align_tl,
- align.initial:n = center,
- align.default:n = center,
- showframe.bool_set:N = \l_showframe_bool,
- showframe.initial:n = false,
- showframe.default:n = true,
-}
-% \end{macrocode}
-% \begin{macro}{\g_clear_all_tl}
-% 用于保存待清空的所有水印
-% \begin{macrocode}
-\tl_gset:Nn \g_clear_all_tl
-{
- \tl_clear:N \l_mainpage_tl
- \tl_clear:N \l_evenpage_tl
- \tl_clear:N \l_oddpage_tl
-}
-% \end{macrocode}
-% \end{macro}
-% \begin{macro}{\g_case_tl}
-% 用于保存一些开关
-% \begin{macrocode}
-\tl_gset:Nn \g_case_tl{
- {all}
- {
- \tl_use:N\g_clear_all_tl
- }
- {even}
- {
- \tl_clear:N \l_evenpage_tl
- }
- {odd}
- {
- \tl_clear:N \l_oddpage_tl
- }
- {main}
- {
- \tl_clear:N \l_mainpage_tl
- }
-}
-% \end{macrocode}
-% \end{macro}
-% \begin{macro}{\ClearWatermark}
-% 用于清除设置的水印
-% \begin{macrocode}
-\NewDocumentCommand{\ClearWatermark}{m}
-{
-\clist_gset:Nn \g_clear_clist{#1}
-\clist_map_variable:NNn \g_clear_clist \clear
-{
- \exp_args:NV \str_case:nVF \clear
- \g_case_tl
- {\msg_warning:nn{clear}{not~have}}
-}
-}
-% \end{macrocode}
-% \end{macro}
-% 关闭\LaTeX3 编程环境
-% \begin{macrocode}
-\ExplSyntaxOff
-% \end{macrocode}
-% \begin{macrocode}
-%</package>
-% \end{macrocode}
-% \Finale
-%
-\endinput
-\endlinechar \ No newline at end of file
diff --git a/macros/latex/contrib/magicwatermark/magicwatermark.pdf b/macros/latex/contrib/magicwatermark/magicwatermark.pdf
deleted file mode 100644
index 396233aba2..0000000000
--- a/macros/latex/contrib/magicwatermark/magicwatermark.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/magicwatermark/magicwatermark.sty b/macros/latex/contrib/magicwatermark/magicwatermark.sty
new file mode 100644
index 0000000000..e40af7ea0b
--- /dev/null
+++ b/macros/latex/contrib/magicwatermark/magicwatermark.sty
@@ -0,0 +1,453 @@
+\ProvidesExplPackage{magicwatermark}{2024/06/11}{1.2B}{magic watermark, author}
+
+
+\msg_new:nnn {magicwatermark}{ Unable to parse }
+{
+ Unable~to~parse~this~list~parameter.^^J
+ #1
+}
+
+\msg_new:nnn {magicwatermark}{ Enable TikZ }
+{
+ tikz~option~has~been~disabled,^^J
+ style~will~be~ignored.
+}
+
+\msg_new:nnn {magicwatermark}{ Load TikZ }
+{
+ Please~load~tikz~package~before~magicwatermark.
+}
+
+\seq_new:N \l__mw_tmpa_seq
+\seq_new:N \l__mw_tmpb_seq
+\seq_new:N \l__mw_tmpc_seq
+\seq_new:N \l__mw_tmpd_seq
+
+
+\int_new:N \l__mw_tmpa_int
+\int_new:N \l__mw_tmpb_int
+\int_new:N \l__mw_tmpc_int
+\int_new:N \l__mw_tmpd_int
+\int_new:N \l__mw_tmpe_int
+
+\clist_new:N \l__mw_list_arabic_number_clist
+\clist_new:N \l__mw_list_roman_number_clist
+\clist_new:N \l__mw_list_range_clist
+\clist_new:N \l__mw_list_expression_clist
+
+
+
+
+\clist_new:N \l__mw_tmpa_clist
+\clist_new:N \l__mw_tmpb_clist
+\clist_new:N \l__mw_tmpc_clist
+
+
+\tl_new:N \l__mw_tmpa_tl
+\tl_new:N \l__mw_tmpb_tl
+\tl_new:N \l__mw_tmpc_tl
+\tl_new:N \g__mw_list_tl
+
+\tl_new:N \g__mw_style_tl
+\tl_new:N \g__mw_content_tl
+
+\bool_new:N \g__mw_is_append_bool
+\bool_set_false:N \g__mw_is_append_bool
+\bool_new:N \g__mw_tikz_bool
+\bool_set_true:N \g__mw_tikz_bool
+
+\regex_const:Nn \c__mw_arabic_numbers_regex { ^\d+$ }
+\regex_const:Nn \c__mw_roman_numbers_regex { ^[ivxlcdm]+$ }
+
+
+
+\int_new:N \g__mw_last_page_int
+
+\AtBeginDocument{
+ \int_compare:nTF { \@abspage@last = \number\maxdimen }
+ {
+ \int_gset:Nn \g__mw_last_page_int { 10 }
+ }
+ {
+ \int_gset:Nn \g__mw_last_page_int { \@abspage@last }
+ }
+}
+
+\cs_new_protected:Npn \__mw_clist_deduplicate:N #1
+{
+ \group_begin:
+ \clist_clear:N \l_tmpa_clist
+ \clist_map_inline:Nn #1
+ {
+ \clist_if_in:NnF \l_tmpa_clist { ##1 }
+ { \clist_put_right:Nn \l_tmpa_clist { ##1 } }
+ }
+ \clist_gset_eq:NN #1 \l_tmpa_clist
+ \group_end:
+}
+
+
+\cs_new:Npn \__mw_list_parser_aux:n #1 {
+
+ \clist_clear:N \l__mw_list_arabic_number_clist
+ \clist_clear:N \l__mw_list_roman_number_clist
+ \clist_clear:N \l__mw_list_range_clist
+ \clist_clear:N \l__mw_list_expression_clist
+
+ % split by commas
+ \group_begin:
+ \seq_set_split:Nnn \l__mw_tmpa_seq { , } { #1 }
+ \seq_map_inline:Nn \l__mw_tmpa_seq
+ {
+ \tl_if_eq:nnTF { ##1 } { odd } % odd, push 2X + 1
+ {
+ \clist_gput_right:Nn \l__mw_list_expression_clist { 2X + 1 }
+ }
+ {
+ \tl_if_eq:nnTF { ##1 } { even } % even, push 2X
+ {
+ \clist_gput_right:Nn \l__mw_list_expression_clist { 2X }
+ }
+ {
+ \tl_if_in:nnTF { ##1 } { X } % expression, push ##1
+ {
+ \clist_gput_right:Nn \l__mw_list_expression_clist { ##1 }
+ }
+ {
+ \tl_if_in:nnTF { ##1 } { - } % range, push ##1
+ {
+ \clist_gput_right:Nn \l__mw_list_range_clist { ##1 }
+ }
+ {
+ \__mw_if_arabic_number:nTF { ##1 }
+ {
+ \clist_gput_right:Nn \l__mw_list_arabic_number_clist { ##1 }
+ }
+ {
+ \__mw_if_roman_number:nTF { ##1 }
+ {
+ \clist_gput_right:Nn \l__mw_list_roman_number_clist { ##1 }
+ }
+ {
+ % error
+ \msg_error:nnn {magicwatermark}{ Unable to parse }
+ {
+ Error~list~parameter~``##1''.
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ \group_end:
+}
+
+\prg_new_conditional:Npnn \__mw_if_arabic_number:n #1 { p, T, F, TF }
+{
+ \regex_match:NnTF \c__mw_arabic_numbers_regex { #1 }
+ {
+ \prg_return_true:
+ }
+ {
+ \prg_return_false:
+ }
+}
+
+\prg_new_conditional:Npnn \__mw_if_roman_number:n #1 { p, T, F, TF }
+{
+ \regex_match:NnTF \c__mw_roman_numbers_regex { #1 }
+ {
+ \prg_return_true:
+ }
+ {
+ \prg_return_false:
+ }
+}
+
+\prg_generate_conditional_variant:Nnn \__mw_if_arabic_number:n { x } {p, T, F, TF}
+\prg_generate_conditional_variant:Nnn \__mw_if_roman_number:n { x } {p, T, F, TF}
+
+
+\cs_new:Npn \__mw_list_parser_for_arabic_number:n #1 {
+ % arabic number
+ \fp_compare:nTF { #1 <= \g__mw_last_page_int && #1 > 0 }
+ {
+ \clist_put_right:Nn \l__mw_tmpa_clist { #1 }
+ }
+ {
+ % error
+ \msg_error:nnn {magicwatermark}{ Unable to parse }
+ {
+ Error~list~parameter~``#1''.^^J
+ Error~number~``#1''.
+ }
+ }
+}
+
+
+
+\cs_new:Npn \__mw_list_parser_for_roman_number:n #1 {
+ % roman number
+ \int_set:Nn \l__mw_tmpa_int { \g__mw_last_page_int - \int_from_roman:n { #1 } + 1 }
+ \fp_compare:nTF
+ {
+ \l__mw_tmpa_int <= \g__mw_last_page_int && \l__mw_tmpa_int > 0
+ }
+ {
+ \clist_put_right:NV \l__mw_tmpa_clist \l__mw_tmpa_int
+ }
+ {
+ % error
+ \msg_error:nnn {magicwatermark}{ Unable to parse }
+ {
+ Error~list~parameter~``#1''.^^J
+ Error~roman~number~``#1''.
+ }
+ }
+}
+
+
+\cs_new:Npn \__mw_list_parser_for_range:n #1 {
+ % range, 1-5, 3-i
+ \seq_set_split:Nnn \l__mw_tmpb_seq { - } { #1 }
+
+ \__mw_if_arabic_number:xTF { \seq_item:Nn \l__mw_tmpb_seq { 1 } }
+ {
+ \int_set:Nn \l__mw_tmpb_int { \seq_item:Nn \l__mw_tmpb_seq { 1 } }
+ }
+ {
+ \__mw_if_roman_number:xTF { \seq_item:Nn \l__mw_tmpb_seq { 1 } }
+ {
+ \exp_args:NNx \int_set:Nn \l__mw_tmpb_int
+ {
+ \g__mw_last_page_int - \exp_not:N \int_from_roman:n { \seq_item:Nn \l__mw_tmpb_seq { 1 } } + 1
+ }
+ }
+ {
+ \int_set:Nn \l__mw_tmpb_int { -1 }
+ % error
+ \msg_error:nnn {magicwatermark}{ Unable to parse }
+ {
+ Error~list~parameter~``#1''.^^J
+ Error~range~left~``#1''.
+ }
+ }
+ }
+
+ \__mw_if_arabic_number:xTF { \seq_item:Nn \l__mw_tmpb_seq { 2 } }
+ {
+ \int_set:Nn \l__mw_tmpc_int { \seq_item:Nn \l__mw_tmpb_seq { 2 } }
+ }
+ {
+ \__mw_if_roman_number:xTF { \seq_item:Nn \l__mw_tmpb_seq { 2 } }
+ {
+ \exp_args:NNx \int_set:Nn \l__mw_tmpc_int
+ {
+ \g__mw_last_page_int - \exp_not:N \int_from_roman:n { \seq_item:Nn \l__mw_tmpb_seq { 2 } } + 1
+ }
+ }
+ {
+ \int_set:Nn \l__mw_tmpc_int { -1 }
+ % error
+ \msg_error:nnn {magicwatermark}{ Unable to parse }
+ {
+ Error~list~parameter~``#1''.^^J
+ Error~range~right~``#1''.
+ }
+ }
+ }
+
+ \fp_compare:nT { \l__mw_tmpb_int > 0 && \l__mw_tmpc_int > 0}
+ {
+ \int_step_inline:nnn
+ { \int_min:nn { \l__mw_tmpb_int } { \l__mw_tmpc_int } }
+ { \int_max:nn { \l__mw_tmpb_int } { \l__mw_tmpc_int } }
+ {
+ \clist_put_right:Nn \l__mw_tmpa_clist { ##1 }
+ }
+ }
+}
+
+\cs_new:Npn \__mw_list_parser_for_expression:n #1 {
+ \int_zero:N \l__mw_tmpd_int
+ \int_zero:N \l__mw_tmpe_int
+ \group_begin:
+ \tl_set:Nn \l__mw_tmpa_tl { #1 }
+ \regex_replace_all:nnN { (\d+)X } { \1*\c{l__mw_tmpe_int} } \l__mw_tmpa_tl
+ \tl_replace_all:Nnn \l__mw_tmpa_tl { X } { \l__mw_tmpe_int }
+ % \tl_show:N \l__mw_tmpa_tl
+ \int_while_do:nn { \l__mw_tmpd_int < \g__mw_last_page_int }
+ {
+ \int_set:Nn \l__mw_tmpd_int
+ {
+ \fp_eval:n { \l__mw_tmpa_tl }
+ }
+ \clist_gput_right:NV \l__mw_tmpa_clist \l__mw_tmpd_int
+ \int_incr:N \l__mw_tmpe_int
+ }
+ \group_end:
+}
+
+
+\cs_new_nopar:Npn \__mw_list_parser:nN #1#2 {
+
+ % case 1 -> odd, even
+ % case 2 -> number, 1
+ % case 3 -> roman, i
+ % case 4 -> range, 1-5, 3-ii
+ % case 5 -> expression, 3X + 1
+
+ \__mw_list_parser_aux:n { #1 }
+
+ \clist_clear:N \l__mw_tmpa_clist
+ \clist_map_inline:Nn \l__mw_list_arabic_number_clist
+ {
+ \__mw_list_parser_for_arabic_number:n { ##1 }
+ }
+
+ \clist_map_inline:Nn \l__mw_list_roman_number_clist
+ {
+ \__mw_list_parser_for_roman_number:n { ##1 }
+ }
+
+
+ \clist_map_inline:Nn \l__mw_list_range_clist
+ {
+ \__mw_list_parser_for_range:n { ##1 }
+ }
+
+
+ \clist_map_inline:Nn \l__mw_list_expression_clist
+ {
+ \__mw_list_parser_for_expression:n { ##1 }
+ }
+
+
+ \clist_sort:Nn \l__mw_tmpa_clist {
+ \int_compare:nNnTF { ##1 } > { ##2 }
+ { \sort_return_swapped: }
+ { \sort_return_same: }
+ }
+ \__mw_clist_deduplicate:N \l__mw_tmpa_clist
+ \clist_set_eq:NN #2 \l__mw_tmpa_clist
+}
+
+
+\cs_new:Npn \__mw_parser:nN #1#2 {
+ \clist_clear:N #2
+ \tl_if_eq:nnTF { #1 } { * }
+ {
+ \int_step_inline:nnn { 1 } { \g__mw_last_page_int }
+ {
+ \clist_put_right:Nn #2 { ##1 }
+ }
+ }
+ {
+ \__mw_list_parser:nN { #1 } #2
+ }
+}
+
+
+
+
+\keys_define:nn { mw / new }
+{
+ pages .tl_set:N = \g__mw_list_tl,
+ style .tl_set:N = \g__mw_style_tl,
+ % style .code:n = \__mw_parse_style:n { #1 },
+ content .tl_set:N = \g__mw_content_tl,
+ is~append .bool_set:N = \g__mw_is_append_bool,
+ tikz .bool_set:N = \g__mw_tikz_bool
+}
+
+\cs_new:Npn \__mw_parse_style: {
+ \tl_if_empty:NF \g__mw_style_tl
+ {
+ \bool_if:NTF \g__mw_tikz_bool
+ {
+ \IfPackageLoadedTF{tikz}
+ {
+ \tl_set_eq:NN \l__mw_tmpc_tl \g__mw_style_tl
+ }
+ {
+ \msg_error:nn {magicwatermark}{ Load TikZ }
+ }
+ }
+ {
+ \msg_warning:nn {magicwatermark}{ Enable TikZ }
+ }
+ }
+}
+
+\keys_define:nn { mw }
+{
+ setup .code:n = \__mw_new_watermark:n {#1}
+}
+
+
+\cs_new:Npn \__mw_new_watermark:n #1 {
+ \group_begin:
+ \keys_set:nn { mw / new }{#1}
+
+ % parse style
+ \__mw_parse_style:
+
+ % parse pages
+ \exp_args:NV \__mw_parser:nN \g__mw_list_tl \l__mw_tmpc_clist
+
+ \clist_map_inline:Nn \l__mw_tmpc_clist {
+
+ \bool_if:NTF \g__mw_tikz_bool
+ {
+ \IfPackageLoadedTF{tikz}
+ {
+ \tl_set:Ne \l__mw_tmpb_tl
+ {
+ \exp_not:N \tikz[remember~picture, overlay]
+ {
+ \exp_not:N \node[inner~sep = 0pt, outer~sep = 0pt, opacity = .5, align = left, \exp_not:V \g__mw_style_tl] at (current~page.center)
+ {
+ \exp_not:V \g__mw_content_tl
+ };
+ }
+ }
+ }
+ {
+ \msg_error:nn {magicwatermark}{ Load TikZ }
+ }
+ }
+ {
+ \tl_set:NV \l__mw_tmpb_tl \g__mw_content_tl
+ }
+
+ \bool_if:nTF { \g__mw_is_append_bool && \tl_if_exist_p:c { g__mw_content_ \int_to_roman:n { ##1 } _tl } }
+ {
+ \tl_gput_right:cV { g__mw_content_ \int_to_roman:n { ##1 } _tl } \l__mw_tmpb_tl
+ }
+ {
+ \tl_gset:cV { g__mw_content_ \int_to_roman:n { ##1 } _tl } \l__mw_tmpb_tl
+ }
+ }
+ \group_end:
+}
+
+
+\NewDocumentCommand{\MagicWatermark}{m}{
+ \group_begin:
+ \AtBeginDocument{
+ \keys_set:nn { mw } { #1 }
+ \AddToHook{shipout/background}{
+ \put(.5\paperwidth,-.5\paperheight){
+ \tl_if_exist:cT { g__mw_content_ \int_to_roman:n { \value{page} }_tl }
+ {
+ \tl_use:c { g__mw_content_ \int_to_roman:n { \value{page} } _tl }
+ }
+ }
+ }
+ }
+ \group_end:
+}
+
+\@onlypreamble\MagicWatermark \ No newline at end of file
diff --git a/macros/latex/contrib/mailing/CATALOG b/macros/latex/contrib/mailing/CATALOG
new file mode 100644
index 0000000000..bfc37ff238
--- /dev/null
+++ b/macros/latex/contrib/mailing/CATALOG
@@ -0,0 +1,15 @@
+Name: mailing
+Problems-To: texniek at texniek.nl
+Author: J.L. Braams
+Version: 1.0c
+
+Description:
+
+The mailing package implements support for producing letters to
+multiple people.
+
+Keywords: latex mailing
+
+Address:
+TeXniek
+The Netherlands
diff --git a/macros/latex/contrib/mailing/manifest.txt b/macros/latex/contrib/mailing/MANIFEST
index b0653434c7..b93e68a619 100644
--- a/macros/latex/contrib/mailing/manifest.txt
+++ b/macros/latex/contrib/mailing/MANIFEST
@@ -2,11 +2,11 @@
% CONTENTS OF THE MAILING PACKAGE
% ===============================
%
-% manifest.txt -- This file
+% MANIFEST -- This file
%
% mailing.dtx -- A package to produce a `mailing' ie a large number
% of letters with (almost) identical text.
-% mailing.pdf -- The `printed version of mailing.dtx
+% mailing.pdf -- The `printed´ version of mailing.dtx
%
% Installation script for the various parts:
% -------------------------------------------
diff --git a/macros/latex/contrib/mailing/README b/macros/latex/contrib/mailing/README
new file mode 100644
index 0000000000..6dccf798b9
--- /dev/null
+++ b/macros/latex/contrib/mailing/README
@@ -0,0 +1,14 @@
+ mailing bundle
+
+ July 2024, 2024
+
+This bundle contains a package that provides functionality to
+produce multiple letters with the same text to different addressses.
+It provides three commands \addressfile, \mailingtext and \makemailing.
+
+Copyright (C) 2024 Johannes L. Braams texniek(at)texniek.nl
+
+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; either
+version 1.3c of the License, or any later version.
diff --git a/macros/latex/contrib/mailing/mailing.dtx b/macros/latex/contrib/mailing/mailing.dtx
index 01aabfcfd4..2a1747d440 100644
--- a/macros/latex/contrib/mailing/mailing.dtx
+++ b/macros/latex/contrib/mailing/mailing.dtx
@@ -1,33 +1,34 @@
% \iffalse meta-comment
%
-% Copyright 1994-2004 Johannes Braams. All rights reserved.
-%
+% Copyright 1999-2024 Johannes L. Braams. All rights reserved.
+%
% This file is part of the mailing package.
% -----------------------------------------
-%
+%
% It may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either version 1.3
+% conditions of the LaTeX Project Public License, either version 1.3c
% of this license or (at your option) any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
-% and version 1.3 or later is part of all distributions of LaTeX
-% version 2003/12/01 or later.
-%
+% and version 1.3c or later is part of all distributions of LaTeX
+% version 2008 or later.
+%
% This work has the LPPL maintenance status "maintained".
-%
+%
% The Current Maintainer of this work is Johannes Braams.
-%
-% The list of all files belonging to the mailing package is
-% given in the file `manifest.txt'.
-%
+%
+% The list of all files belonging to the supertabular package is
+% given in the file `MANIFEST.
+%
% The list of derived (unpacked) files belonging to the distribution
% and covered by LPPL is defined by the unpacking scripts (with
% extension .ins) which are part of the distribution.
% \fi
+%
% \CheckSum{157}
%
%\iffalse
-%% Copyright (C) 1999-2004 Johannes L. Braams texniek at braams.cistron.nl
+%% Copyright (C) 1999-2024 Johannes L. Braams texniek at texniek.nl
%%
%%
%<*dtx>
@@ -38,7 +39,7 @@
%<driver>\ProvidesFile{mailing.drv}
%\fi
%\ProvidesFile{mailing}
- [2004/02/20 v1.0b Send letters to multiple addresses]
+ [2024/07/20 v1.0c Send letters to multiple addresses]
%\iffalse
%<*driver>
\documentclass{ltxdoc}
@@ -48,11 +49,14 @@
\end{document}
%</driver>
%\fi
+% \changes{v1.0c}{2024/07/20}{Updated contact info}
%
% \GetFileInfo{mailing}
-% \title{Creating a mailing}
+% \title{Creating a mailing\thanks{This file
+% has version number \fileversion, last
+% revised \filedate.}}
% \author{Johannes Braams}
-% \date{september 7, 1994}
+% \date{\filedate}^^AA original date{september 7, 1994}
% \maketitle
%
% \markboth
@@ -304,4 +308,4 @@
% \end{macro}
%
% \Finale
-\endinput \ No newline at end of file
+\endinput
diff --git a/macros/latex/contrib/mailing/mailing.ins b/macros/latex/contrib/mailing/mailing.ins
index b9143a89b6..a9c133d718 100644
--- a/macros/latex/contrib/mailing/mailing.ins
+++ b/macros/latex/contrib/mailing/mailing.ins
@@ -3,54 +3,43 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright 1989-2004 Johannes L. Braams. All rights reserved.
%%
-%% This file is part of the mailing package.
-%% ------------------------------------------
+%% This file is distributed in the hope that it will be useful,
+%% but WITHOUT ANY WARRANTY; without even the implied warranty of
+%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
%%
-%% It 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 2003/12/01 or later.
+%% IMPORTANT NOTICE:
%%
-%% This work has the LPPL maintenance status "maintained".
+%% Copyright (C) 1994-2024 Johannes Braams, All rights reserved.
%%
-%% The Current Maintainer of this work is Johannes Braams.
-%%
-%% The list of all files belonging to the mailing package is
-%% given in the file `manifest.txt.
-%%
-%% The list of derived (unpacked) files belonging to the distribution
-%% and covered by LPPL is defined by the unpacking scripts (with
-%% extension .ins) which are part of the distribution.
+%% 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; either
+%% version 1.3c of the License, or any later version.
%%
%% --------------- start of docstrip commands ------------------
%%
% ignored commands
-\def\filedate{2004/02/20}
+\def\filedate{2024/07/20}
\def\batchfile{mailing.ins}
\input docstrip.tex
-
% package file
\preamble
-Copyright (C) 1999-2004 Johannes Braams. All rights reserved.
+Copyright (C) 1999-2024 Johannes Braams. All rights reserved.
This file was generated from file(s) of the mailing package.
------------------------------------------------------------
It may be distributed and/or modified under the
-conditions of the LaTeX Project Public License, either version 1.3
+conditions of the LaTeX Project Public License, either version 1.3c
of this license or (at your option) any later version.
The latest version of this license is in
http://www.latex-project.org/lppl.txt
-and version 1.3 or later is part of all distributions of LaTeX
-version 2003/12/01 or later.
+and version 1.3c or later is part of all distributions of LaTeX
+version 2008 or later.
This work has the LPPL maintenance status "maintained".
@@ -61,12 +50,13 @@ mailing package. You may however distribute the mailing package
without such generated files.
The list of all files belonging to the mailing package is
-given in the file `manifest.txt.
+given in the file `MANIFEST'.
The list of derived (unpacked) files belonging to the distribution
and covered by LPPL is defined by the unpacking scripts (with
extension .ins) which are part of the distribution.
\endpreamble
+\keepsilent
\generateFile{mailing.sty}{t}{\from{mailing.dtx}{package}}
diff --git a/macros/latex/contrib/mailing/mailing.pdf b/macros/latex/contrib/mailing/mailing.pdf
index 1625f90e04..109c5c3de0 100644
--- a/macros/latex/contrib/mailing/mailing.pdf
+++ b/macros/latex/contrib/mailing/mailing.pdf
Binary files differ
diff --git a/macros/latex/contrib/mathastext/README.md b/macros/latex/contrib/mathastext/README.md
index 44b778b728..f2c55cf149 100644
--- a/macros/latex/contrib/mathastext/README.md
+++ b/macros/latex/contrib/mathastext/README.md
@@ -8,13 +8,13 @@
+-------------------------------------------+
This Work may be distributed and/or modified under the conditions
-of the [LPPL1.3c](http://www.latex-project.org/lppl/lppl-1-3c.txt)
+of the [LPPL 1.3c](https://www.latex-project.org/lppl/lppl-1-3c.txt)
The Author of this Work is Jean-Francois Burnol (`jfbu at free dot fr`)
-Copyright (C) 2011-2019, 2022, 2023 Jean-Francois Burnol
+Copyright (C) 2011-2019, 2022-2024 Jean-Francois Burnol
- Source: mathastext.dtx 1.3zb 2023/12/29
+ Source: mathastext.dtx 1.4b 2024/07/27
DESCRIPTION
@@ -82,6 +82,98 @@ Main options: `italic`, `frenchmath`, `subdued`, `LGRgreek`.
RECENT CHANGES
==============
+1.4b \[2024/07/27\]
+----
+
+* Fix a regression at `1.4` regarding option `nodigits`.
+
+* New option: `noletters`. I am in old age now so I can provide an option
+ completely antithetical to my life work.
+
+* Option `everymath` which is destined to be removed at next major
+ release warns user about it. As major releases tend to happen once
+ per decade I think the constant nagging will become insufferable
+ and you will adapt to the `1.4` changes rather than persisting into
+ using this option.
+
+1.4a \[2024/07/20\]
+----
+
+* There was a documentation glitch in 1.4 and also a problem with the
+ `\MTprimeskip` feature being lost under the emergency fall-back
+ `everymath` option.
+
+1.4 \[2024/07/20\]
+---
+
+* Since 1.2 of 2012/12/20, mathastext has used mathematically active
+ characters to propose certain advanced functionalities. For reasons half
+ lost in the mists of time but whose main one was surely to keep the
+ meaning of the active shape of characters unchanged outside of math mode,
+ this mathematical activation, and (in most cases) the definitions of what
+ active characters do, were done again at *each* entrance into math mode.
+ At this 1.4 release, mathastext does not inject *any* code whatsoever into
+ the `\everymath` and `\everydisplay` toks registers anymore (except for
+ one font-related hack needed under LuaLaTeX, see below). Your documents
+ will compile a tiny bit faster.
+
+* In (unsual) documents where users play with catcodes and mathcodes it is
+ impossible to keep exact backward compatibility, because documented user
+ commands which acted formerly a toggles with delayed action now will enact
+ changes immediately if in the document body. In practice consequences are
+ expected to be few, because catcode active characters are (as was already
+ the case with earlier releases) hacked only when they are Babel shorthands
+ and they are then modified in a way altering only their action in math
+ mode. The precise description of what mathastext does when mathematically
+ activating (or not) a character, depending on circumstances, is to be
+ found among small-print comments in the section "Extended scope of the
+ math alphabets commands". See also the documentation of the
+ `\MTmathactiveletters` command for some specifics regarding ascii letters.
+
+* New option: `everymath`. It instructs mathastext to revert (partially)
+ to its legacy code which uses `\everymath/\everydisplay`. This reversal
+ is partial, the handling of ascii letters not being included into it. The
+ `everymath` option is there only to try as a quick fix in case transition
+ to this release causes a major problem in a user document and time is
+ lacking to investigate. Please report to the author such issues. Option
+ `everymath` is destined to be removed at next major release.
+
+* New option: `activedigits`. Enjoy.
+
+* It is now easier to hook into the mathastext architecture for
+ mathematically activated ascii letters. See the new section "Hacking
+ letters (and even digits) for special tasks".
+
+* Bugfix: do not override special behavior of the math mode dot in
+ babel-spanish.
+
+* Bugfix: A desperate hack related to LuaLaTeX font matters and dating
+ back to 1.3o 2016/05/03 had been for some years in dire need of an update
+ regarding fonts using `Renderer=HarfBuzz`. This is done now. Thanks to
+ tex.sx `user691586` for report. This is currently the sole remaining
+ usage of `\everymath/\everydisplay`.
+
+* Bugfix: an optional feature related to `\{` and `\}` was broken since an
+ upstream LaTeX change at its 2020-02-02 release.
+
+* With option symbolmisc, those math symbol macros formerly defined via
+ `\DeclareRobustCommand` are now declared via `\protected\def`.
+
+* Removal of legacy branches previously kept to support LaTeX earlier than
+ 2020-02-02.
+
+* Removal of support for EU1 and EU2 font encodings.
+
+* Option `noasterisk` deprecated at 1.2d 2013/01/02 has (finally) been removed.
+
+* Four test files previously included and auto-extracted from the
+ distributed dtx have been dropped. One of them is still available
+ on the package homepage.
+
+* Some parts of the documentation have been massively re-ordered and even to some
+ extent improved. But there may be some occasions where obsolete statements will
+ be found having the legacy `\everymath/\everydisplay` situation as background.
+
1.3zb \[2023/12/29\]
-----
@@ -133,63 +225,3 @@ RECENT CHANGES
* Fix long-standing hyperlink problems in the documentation:
blue color words should now all be functioning hyperlinks.
-1.3z \[2023/09/01\]
-----
-
-Fix 1.3y regression which broke `selfGreek` option due to internal
-renamings. Thanks to Stephan Korell for report.
-
-1.3y \[2022/11/04\]
-----
-
-(the 1.3x had an annoying documentation bug, and had already
-been pushed to CTAN, hence the version increase to 1.3y)
-
-* mathastext now requires the `\expanded` primitive (which is
- available with all major engines since TeXLive 2019).
-
-* Revisit parts of the documentation (mainly
- the Examples, and the section on Greek letters) and shuffle
- the other parts to surely improve things. Mention
- the [mathfont](https://ctan.org/pkg/mathfont)
- and [frenchmath](https://ctan.org/pkg/frenchmath) packages.
-
-* Add the `ncccomma` option which loads the
- [ncccomma](https://ctan.org/pkg/ncccomma)
- package to allow the comma as decimal separator.
-
-* Add the `binarysemicolon` option to let the semi-colon
- be of type `\mathbin`, not `\mathpunct`.
-
-* Add the `frenchmath*` option which does all three of
- `frenchmath`, `ncccomma` and `binarysemicolon`.
-
-* Under the `LGRgreek` and `LGRgreeks` options only:
-
- - make available upright and italic Greek letters in math mode
- via `\alphaup`, `\alphait`, ... control sequences, in
- addition to those not using such postfixed-names.
-
- - add `\mathgreekup` and `\mathgreekit` math alphabets.
-
- - add `\MTgreekupdefault` and `\MTgreekitdefault`. The former
- replaces `\updefault` which was used in some places and since
- LaTeX 2020-02-02 caused systematic Font Warnings about the
- substitution of `up` by `n`.
-
- These new features required an extensive internal refactoring
- which is expected to not induce changes to most existing
- documents. But it may induce changes to those using some
- unusual configuration in the preamble, as made possible via the
- package macros; this can apply only to documents authored by
- those few people who actually read the documentation. For full
- details make sure to read the PDF documentation about this
- change.
-
-* Fix "`\Digamma` under `LGRgreek` option uses the shape for
- lowercase not uppercase Greek".
-
-* Fix some incongruities in log messages related to Greek
- letters and emitted during math version creation in the
- preamble.
-
diff --git a/macros/latex/contrib/mathastext/mathastext.dtx b/macros/latex/contrib/mathastext/mathastext.dtx
index d8c464a117..7857f9b70a 100644
--- a/macros/latex/contrib/mathastext/mathastext.dtx
+++ b/macros/latex/contrib/mathastext/mathastext.dtx
@@ -2,8 +2,8 @@
% N.B.: this dtx file does NOT use \DocInput, it only uses docstrip.
% The LaTeX source of the documentation is NOT prefixed with %'s.
%<*dtx>
-\def\dtxtimestamp {Time-stamp: <29-12-2023 at 10:54:52 CET>}
-\def\docdate{2023/12/29}
+\def\dtxtimestamp {Time-stamp: <26-07-2024 at 11:21:35 CEST>}
+\def\docdate{2024/07/27}
% To extract run etex on this file, then to build documentation run
% latexmk on mathastext.tex then dvipdfmx on the dvi.
% For more information see http://jf.burnol.free.fr/v13/INSTALL.txt
@@ -11,8 +11,8 @@
% due to usage of (<A7>) as an active character.
%</dtx>
%<*drv>
-\def\MSTpkgdate {2023/12/29}
-\def\MSTpkgversion {1.3zb}
+\def\MSTpkgdate {2024/07/27}
+\def\MSTpkgversion {1.4b}
%</drv>
%<*dtx>
\iffalse % meta-comment
@@ -28,13 +28,13 @@
+-------------------------------------------+
This Work may be distributed and/or modified under the conditions
-of the [LPPL1.3c](http://www.latex-project.org/lppl/lppl-1-3c.txt)
+of the [LPPL 1.3c](https://www.latex-project.org/lppl/lppl-1-3c.txt)
The Author of this Work is Jean-Francois Burnol (`jfbu at free dot fr`)
-Copyright (C) 2011-2019, 2022, 2023 Jean-Francois Burnol
+Copyright (C) 2011-2019, 2022-2024 Jean-Francois Burnol
- Source: mathastext.dtx 1.3zb 2023/12/29
+ Source: mathastext.dtx 1.4b 2024/07/27
%</readme>
%<*dtx>
@@ -44,10 +44,10 @@ Copyright (C) 2011-2019, 2022, 2023 Jean-Francois Burnol
%%----------------------------------------------------------------
%% Package: mathastext
%% Info: Use the text font in math mode (JFB)
-%% Version: 1.3zb 2023/12/29
+%% Version: 1.4b 2024/07/27
%% License: LPPL 1.3c (http://www.latex-project.org/lppl/lppl-1-3c.txt)
-%% Copyright (C) 2011-2019, 2022, 2023 Jean-Francois Burnol
-%% <jfbu at free dot fr>
+%% Copyright (C) 2011-2019, 2022-2024 Jean-Francois Burnol
+%% <jfbu at free dot fr>
%% Examples of use of mathastext:
%% http://jf.burnol.free.fr/mathastext.html
%% http://jf.burnol.free.fr/showcase.html
@@ -95,19 +95,11 @@ Copyright (C) 2011-2019, 2022, 2023 Jean-Francois Burnol
\begingroup
\input docstrip.tex
\askforoverwritefalse
-\def\testfilepreamble{\string\def\string\testfileincipit{Test file
- to accompany \string\texttt{mathastext}^^J%
- version \string\texttt{\MSTpkgversion} of \string\texttt{\MSTpkgdate}}}
\generate{\nopreamble\nopostamble
\file{README.md}{\from{mathastext.dtx}{readme}}
\file{ChangeLog.md}{\from{mathastext.dtx}{changelog}}
\usepostamble\defaultpostamble
\file{mathastext.tex}{\from{mathastext.dtx}{drv}}
- \usepreamble\testfilepreamble
- \file{mathastexttestmathversions.tex}{\from{mathastext.dtx}{mathversions}}
- \file{mathastexttestunicodemacos.tex}{\from{mathastext.dtx}{macos}}
- \file{mathastexttestunicodelinux.tex}{\from{mathastext.dtx}{linux}}
- \file{mathastexttestalphabets.tex}{\from{mathastext.dtx}{alphabets}}
\usepreamble\defaultpreamble
\file{mathastext.sty}{\from{mathastext.dtx}{package}}%
}
@@ -120,7 +112,8 @@ Copyright (C) 2011-2019, 2022, 2023 Jean-Francois Burnol
% no file extractions if latex compilation was on mathastext.tex
\ifdefined\MessageDeFin\AtEndDocument{\MessageDeFin}\fi
\begingroup\catcode1 0 \catcode`\\ 12
-% this is to fool TeX's recognition of \if/\else/\fi like tokens in test files
+% This is to fool TeX's recognition of \if/\else/\fi like tokens in test files,
+% but on 2024/07/14 I removed from the dtx four previously included such filss.
^^Aiffalse
%</dtx>
%<*readme>
@@ -200,6 +193,98 @@ MATHASTEXT CHANGE LOG
%</changelog>
%<*readme|changelog>
+1.4b \[2024/07/27\]
+----
+
+* Fix a regression at `1.4` regarding option `nodigits`.
+
+* New option: `noletters`. I am in old age now so I can provide an option
+ completely antithetical to my life work.
+
+* Option `everymath` which is destined to be removed at next major
+ release warns user about it. As major releases tend to happen once
+ per decade I think the constant nagging will become insufferable
+ and you will adapt to the `1.4` changes rather than persisting into
+ using this option.
+
+1.4a \[2024/07/20\]
+----
+
+* There was a documentation glitch in 1.4 and also a problem with the
+ `\MTprimeskip` feature being lost under the emergency fall-back
+ `everymath` option.
+
+1.4 \[2024/07/20\]
+---
+
+* Since 1.2 of 2012/12/20, mathastext has used mathematically active
+ characters to propose certain advanced functionalities. For reasons half
+ lost in the mists of time but whose main one was surely to keep the
+ meaning of the active shape of characters unchanged outside of math mode,
+ this mathematical activation, and (in most cases) the definitions of what
+ active characters do, were done again at *each* entrance into math mode.
+ At this 1.4 release, mathastext does not inject *any* code whatsoever into
+ the `\everymath` and `\everydisplay` toks registers anymore (except for
+ one font-related hack needed under LuaLaTeX, see below). Your documents
+ will compile a tiny bit faster.
+
+* In (unsual) documents where users play with catcodes and mathcodes it is
+ impossible to keep exact backward compatibility, because documented user
+ commands which acted formerly a toggles with delayed action now will enact
+ changes immediately if in the document body. In practice consequences are
+ expected to be few, because catcode active characters are (as was already
+ the case with earlier releases) hacked only when they are Babel shorthands
+ and they are then modified in a way altering only their action in math
+ mode. The precise description of what mathastext does when mathematically
+ activating (or not) a character, depending on circumstances, is to be
+ found among small-print comments in the section "Extended scope of the
+ math alphabets commands". See also the documentation of the
+ `\MTmathactiveletters` command for some specifics regarding ascii letters.
+
+* New option: `everymath`. It instructs mathastext to revert (partially)
+ to its legacy code which uses `\everymath/\everydisplay`. This reversal
+ is partial, the handling of ascii letters not being included into it. The
+ `everymath` option is there only to try as a quick fix in case transition
+ to this release causes a major problem in a user document and time is
+ lacking to investigate. Please report to the author such issues. Option
+ `everymath` is destined to be removed at next major release.
+
+* New option: `activedigits`. Enjoy.
+
+* It is now easier to hook into the mathastext architecture for
+ mathematically activated ascii letters. See the new section "Hacking
+ letters (and even digits) for special tasks".
+
+* Bugfix: do not override special behavior of the math mode dot in
+ babel-spanish.
+
+* Bugfix: A desperate hack related to LuaLaTeX font matters and dating
+ back to 1.3o 2016/05/03 had been for some years in dire need of an update
+ regarding fonts using `Renderer=HarfBuzz`. This is done now. Thanks to
+ tex.sx `user691586` for report. This is currently the sole remaining
+ usage of `\everymath/\everydisplay`.
+
+* Bugfix: an optional feature related to `\{` and `\}` was broken since an
+ upstream LaTeX change at its 2020-02-02 release.
+
+* With option symbolmisc, those math symbol macros formerly defined via
+ `\DeclareRobustCommand` are now declared via `\protected\def`.
+
+* Removal of legacy branches previously kept to support LaTeX earlier than
+ 2020-02-02.
+
+* Removal of support for EU1 and EU2 font encodings.
+
+* Option `noasterisk` deprecated at 1.2d 2013/01/02 has (finally) been removed.
+
+* Four test files previously included and auto-extracted from the
+ distributed dtx have been dropped. One of them is still available
+ on the package homepage.
+
+* Some parts of the documentation have been massively re-ordered and even to some
+ extent improved. But there may be some occasions where obsolete statements will
+ be found having the legacy `\everymath/\everydisplay` situation as background.
+
1.3zb \[2023/12/29\]
-----
@@ -251,6 +336,8 @@ MATHASTEXT CHANGE LOG
* Fix long-standing hyperlink problems in the documentation:
blue color words should now all be functioning hyperlinks.
+%</readme|changelog>
+%<*changelog>
1.3z \[2023/09/01\]
----
@@ -311,8 +398,6 @@ been pushed to CTAN, hence the version increase to 1.3y)
letters and emitted during math version creation in the
preamble.
-%</readme|changelog>
-%<*changelog>
1.3w \[2019/11/16\]
----
@@ -358,7 +443,7 @@ been pushed to CTAN, hence the version increase to 1.3y)
to some other (robust) math alphabet macros, but were not
robust in the strict sense. This does cause some issues for
moving arguments in the context of multiple math versions,
- hence it was a bug. The special behaviour of the math
+ hence it was a bug. The special behavior of the math
alphabet commands (they redefine themselves and other macros
on first use) makes is somewhat problematic for mathastext
to keep them updated across math versions and at the same
@@ -620,16 +705,14 @@ been pushed to CTAN, hence the version increase to 1.3y)
redefined as math symbols and could not be used as delimiters.
-1.3d \[2015/02/26\]
+1.3d \[2014/05/23\]
----
-* the documentation mentions the improved compatibility of mathastext
+* A 2015/02/26 edit to the documentation mentions the
+ improved compatibility of mathastext
with the latest (3.34) beamer release: no more need for
`\usefonttheme{professionalfonts}`.
-1.3d \[2014/05/23\]
-----
-
* new commands `\MTstandardgreek` and `\MTcustomgreek`.
* The Greek letters, in case of use of one of the package related
@@ -760,6 +843,8 @@ use of mathematically active characters in versions 1.2 and 1.2b.
mechanism of letting non-letter symbols obey the math alphabet
commands.
+* the `noasterisk` option is deprecated and made a no-op.
+
* documentation extended and improved.
1.2c \[2012/12/31\]
@@ -904,6 +989,11 @@ use of mathematically active characters in versions 1.2 and 1.2b.
complete manner to adapt the math configuration to fonts
provided with no math support.
+1.13d
+----
+
+* new macros `\MTstandardgreek` and `\MTcustomgreek`
+
1.13b
----
@@ -972,502 +1062,6 @@ use of mathematically active characters in versions 1.2 and 1.2b.
%%% mode: latex
%%% End:
%</drv>
-%<*mathversions>
-%% This file `mathastexttestversions.tex' is for testing the enhanced
-%% concept of math versions provided by the package `mathastext'.
-%%
-%% See `mathastext.dtx' for the copyright and conditions of distribution or
-%% modification.
-%%
-\documentclass{article}
-\usepackage[T1]{fontenc}
-\usepackage{newcent}
-\usepackage[subdued]{mathastext}
-\Mathastext[newcent]
-\renewcommand\familydefault\ttdefault
-\Mathastext[courier]
-\renewcommand\familydefault\sfdefault
-\Mathastext[avantgarde]
-\renewcommand\familydefault\rmdefault
-\begin{document}
-\testfileincipit
-
-text in NewCentury and $math\ as\ in\ default$,%
-\MTversion{courier} text in Courier and $math\ in\ Courier$,%
-\MTversion{avantgarde} text in AvantGarde and $math\ in\ AvantGarde$,%
-\MTversion[newcent]{courier} text in NewCentury and $math\ in\
-Courier$,\MTversion{bold} text in bold NewCentury and $math\ as\ in\
-bold\ default$,\MTversion[courier]{avantgarde} text in Courier and
-$math\ in\ AvantGarde$.
-\end{document}
-%</mathversions>
-%<*macos>
-%% This file `mathastexttestunicodemacos.tex' is for testing the use
-%% of the package `mathastext' with the unicode engines XeTeX or LuaLaTeX.
-%%
-%% Mac OS X specific fonts are used (initially tested on 10.8.2).
-%%
-%% See `mathastext.dtx' for the copyright and conditions of distribution or
-%% modification.
-%%
-\documentclass{article}
-\usepackage[hscale=0.85]{geometry}
-\usepackage{multicol}
-\usepackage[no-math]{fontspec}
-\usepackage{lmodern}
-\usepackage{metalogo}
-\usepackage{iftex}
-\ifXeTeX
-\expandafter\def\expandafter\testfileincipit\expandafter
- {\testfileincipit\ (compiled with \XeLaTeX)}
-\else
-\ifLuaTeX
-\expandafter\def\expandafter\testfileincipit\expandafter
- {\testfileincipit\ (compiled with \LuaLaTeX)}
-\fi\fi
-\usepackage[subdued,italic,asterisk]{mathastext}
-\setmainfont[Color=FF0000]{Hoefler Text} \Mathastext[Hoefler]
-\setmainfont[Color=336633]{American Typewriter}\Mathastext[Typewriter]
-\setmainfont[Color=0000FF]{Herculanum} \Mathastext[Herculanum]
-\setmainfont[Color=FF00FF]{Didot} \Mathastext[Didot]
-\setmainfont[Color=999999]{Comic Sans MS} \Mathastext[Comic]
-\MTDeclareVersion{Times}{T1}{ptm}{m}{n}
-\begin{document}
-\MTversion{normal}
-\testfileincipit
-
-This test uses \verb|mathastext| with its \emph{italic}, \emph{asterisk}, and
-\emph{subdued} options. The base document fonts are the Latin Modern ones (in
-OpenType format). The other OpenType fonts were chosen from those available on
-a Mac OS machine. We also used the Times font in traditional \TeX\ font T1
-encoding, to demonstrate the removal since release \texttt{1.3u} of a former
-limitation that all math versions had to share the same font encoding, else
-some characters such as the dotless \texttt{i} ($\imath$), or the minus sign
-could well vanish from the output in the non-normal math versions.
-
-Furthermore we test (last line of each block, on the left) if the non-letter
-characters obey the math alphabet \verb|\mathbf|. In the normal and bold math
-versions, this feature is de-activated, as option \emph{subdued} was used; and
-if activated we should then use in these math versions the package
-\verb|\Mathbf| rather than \verb|\mathbf| which is there still the original
-one, which will use encoding \verb|OT1| in the normal and bold versions, as we
-loaded \verb|fontspec| with its option \emph{no-math}.
-
-Some among the fonts tested have no bold variant or no italic variant.
-
-Note (tested 2013/09/03): for some reason the \verb|Color| specifications in the
-\verb|\setmainfont| commands work only
-with \XeLaTeX{}, not with \LuaLaTeX{}; a few months back I had not noticed
-such a difference between the two engines.
-
-Update (tested 2016/01/15 with reasonably up-to-date TL2015): \verb|Color|
-spec in use of \verb|\setmainfont| command now functional again with
-\LuaLaTeX.
-
-Note (tested 2019/08/11, reasonably up-to-date TL2019): spacing with the Didot
-font differs widely between \XeLaTeX\ and \LuaLaTeX{} (perhaps related to
-italic corrections, see the package documentation), and also it seems
-\LuaLaTeX{} will not find (from our generic usage of the \verb|fontspec|
-interface, at least) bold variants of the Hoefler Text and American Typewriter
-fonts, contrarily to \XeLaTeX. Also, the \emph{italic} option remains
-seemingly without effect with \LuaLaTeX{} in the case of the Hoefler Text font
-(see the package source code comments on some problems with the two ``modes''
-for text fonts under \LuaLaTeX, which may be related with this specific issue
-here).
-
-Update (tested 2022/10/29, with 1.3x and up-to-date TL2022): it appears that
-most, perhaps even all, of the remarks in the preceding note are now obsolete
-as I do not see obvious differences between outputs from \XeLaTeX{} versus
-\LuaLaTeX{} but I did not seriously compare, only quickly done.
-
-\newcommand\TEST[1]{\MTversion{#1}\def\tmpa{#1}%
- \def\tmpb{normal}\def\tmpc{bold}%
- \ifx\tmpa\tmpb\else\ifx\tmpa\tmpc\else \MTnonlettersobeymathxx
- \MTexplicitbracesobeymathxx\fi\fi
-\begin{multicols}{2}
-\hbox to\columnwidth{\hbox to\columnwidth{\hfil
- $abcdefghijklmnopqrstuvwxyz$\hfil}\kern-2.5em{#1}}
- \centerline{ $ABCDEFGHIJKLMNOPQRSTUVWXYZ$ }
- \centerline{ $0123456789$ }
- \centerline{ $!\,?\,*\,,\,.\,:\,;\,+\,-\,=\,(\,)\,[\,]\,/\,\#\,%
- \$\,\%\,\&\,<\,>\,|\,\{\,\}\,\backslash$ }
- \centerline{ $\mathbf{!\,?\,*\,,\,.\,:\,;\,+\,-\,=\,(\,)\,[\,]\,/\,\#\,%
- \$\,\%\,\&\,<\,>\,|\,\{\,\}\,\backslash}$ }
-\columnbreak
- \centerline{ abcdefghijklmnopqrstuvwxyz }
- \centerline{ ABCDEFGHIJKLMNOPQRSTUVWXYZ }
- \centerline{ 0123456789 }
- \centerline{ !\,?\,*\,,\,.\,:\,;\,+\,-\,=\,(\,)\,[\,]\,/\,\#\,%
- \$\,\%\,\&\,<\,>\,|\,\{\,\}\,\char92 }
- \centerline{\bfseries !\,?\,*\,,\,.\,:\,;\,+\,-\,=\,(\,)\,[\,]\,/\,\#\,%
- \$\,\%\,\&\,<\,>\,|\,\{\,\}\,\char92 }
-\end{multicols}}
-\begin{multicols}{2}
- \centerline{\textbf{math mode}}
-\columnbreak
- \centerline{ \textbf{text} }
-\end{multicols}
-\TEST{Didot}\TEST{Comic}\TEST{normal}\TEST{Herculanum}
-\TEST{Hoefler}\TEST{Typewriter}\TEST{bold}\TEST{Times}
-\end{document}
-%</macos>
-%<*linux>
-%% This file `mathastexttestunicodelinux.tex' is for testing the use
-%% of the package `mathastext' with the unicode engines XeTeX or LuaLaTeX.
-%%
-%% Fonts which were available on a Linux machine are used. Beware that
-%% compilation with LuaLaTeX will abort with errors if specified fonts do not
-%% exist on your system.
-%%
-%% See `mathastext.dtx' for the copyright and conditions of distribution or
-%% modification.
-%%
-\documentclass{article}
-\usepackage[hscale=0.8]{geometry}
-\usepackage{multicol}
-\usepackage[no-math]{fontspec}
-\usepackage{lmodern}
-\usepackage{metalogo}
-\usepackage{iftex}
-\ifXeTeX
-\expandafter\def\expandafter\testfileincipit\expandafter
- {\testfileincipit\ (compiled with \XeLaTeX)}
-\else
-\ifLuaTeX
-\expandafter\def\expandafter\testfileincipit\expandafter
- {\testfileincipit\ (compiled with \LuaLaTeX)}
-\fi\fi
-\usepackage[subdued,italic,asterisk]{mathastext}
-\setmainfont[Color=999999]{Verdana} \Mathastext[Verdana]
-\setmainfont[Color=0000FF]{Arial} \Mathastext[Arial]
-\setmainfont[Color=00C000]{DejaVu Serif} \Mathastext[DejaVu]
-\setmainfont[Color=FF0000]{Andale Mono} \Mathastext[Andale]
-%% commented out as these fonts do not exist anymore on the Linux box
-%% I have access to (test last done 2016/01/15)
-%%\setmainfont[Color=C000C0]{URW Chancery L} \Mathastext[Chancery]
-%%\setmainfont[Color=800080]{URW Palladio L} \Mathastext[Palladio]
-\setmainfont[Color=808000]{Liberation Serif} \Mathastext[Liberation]
-\MTDeclareVersion{Times}{T1}{ptm}{m}{n}
-\begin{document}
-\MTversion{normal}
-\testfileincipit
-
-This test uses \verb|mathastext| with its \emph{italic}, \emph{asterisk}, and
-\emph{subdued} options. The base document fonts are the Latin Modern ones (in
-OpenType format). The other OpenType fonts were chosen from those available on
-a Linux machine. We also used the Times font in traditional \TeX\ font T1
-encoding, to demonstrate the removal since release \texttt{1.3u} of a former
-limitation that all math versions had to share the same font encoding, else
-some characters such as the dotless \texttt{i} ($\imath$), or the minus sign
-could well vanish from the output in the non-normal math versions.
-
-Furthermore we test (last line of each block, on the left) if the non-letter
-characters obey the math alphabet \verb|\mathbf|. In the normal and bold math
-versions, this feature is de-activated, as option \emph{subdued} was used; and
-if activated we should then use in these math versions the package
-\verb|\Mathbf| rather than \verb|\mathbf| which is there still the original
-one, which will use encoding \verb|OT1| in the normal and bold versions, as we
-loaded \verb|fontspec| with its option \emph{no-math}.
-
-Some among the fonts tested have no bold variant or no italic variant.
-
-Note: the two unicode engines \XeLaTeX\ and \LuaLaTeX\ give likely not fully
-identical results particularly for the math mode. At least this is what I
-observed regularly over the years with the variant of this file prepared for
-fonts available on Mac OS, which is my main system where I develop
-|\mathastext|. Lastly for example (TL2019, august 2019), \LuaLaTeX\ could not
-find the bold variant of some system font, but \XeLaTeX\ did. And the spacing
-for the letters of the Didot font was vastly different between the two
-engines.
-
-\newcommand\TEST[1]{\MTversion{#1}\def\tmpa{#1}%
- \def\tmpb{normal}\def\tmpc{bold}%
- \ifx\tmpa\tmpb\else\ifx\tmpa\tmpc\else \MTnonlettersobeymathxx
- \MTexplicitbracesobeymathxx\fi\fi
-\begin{multicols}{2}
-\hbox to\columnwidth{\hbox to\columnwidth{\hfil
- $abcdefghijklmnopqrstuvwxyz$\hfil}\kern-2.5em{#1}}
- \centerline{ $ABCDEFGHIJKLMNOPQRSTUVWXYZ$ }
- \centerline{ $0123456789$ }
- \centerline{ $!\,?\,*\,,\,.\,:\,;\,+\,-\,=\,(\,)\,[\,]\,/\,\#\,%
- \$\,\%\,\&\,<\,>\,|\,\{\,\}\,\backslash$ }
- \centerline{ $\mathbf{!\,?\,*\,,\,.\,:\,;\,+\,-\,=\,(\,)\,[\,]\,/\,\#\,%
- \$\,\%\,\&\,<\,>\,|\,\{\,\}\,\backslash}$ }
-\columnbreak
- \centerline{ abcdefghijklmnopqrstuvwxyz }
- \centerline{ ABCDEFGHIJKLMNOPQRSTUVWXYZ }
- \centerline{ 0123456789}
- \centerline{ !\,?\,*\,,\,.\,:\,;\,+\,-\,=\,(\,)\,[\,]\,/\,\#\,%
- \$\,\%\,\&\,<\,>\,|\,\{\,\}\,\char92 }
- \centerline{\bfseries !\,?\,*\,,\,.\,:\,;\,+\,-\,=\,(\,)\,[\,]\,/\,\#\,%
- \$\,\%\,\&\,<\,>\,|\,\{\,\}\,\char92 }
-\end{multicols}}
-\begin{multicols}{2}
- \centerline{\textbf{math mode}}
-\columnbreak
- \centerline{ \textbf{text} }
-\end{multicols}
-\TEST{DejaVu}
-\TEST{Verdana}
-\TEST{Andale}
-%%\TEST{Palladio}
-\TEST{Arial}
-%%\TEST{Chancery}
-\TEST{Liberation}
-\TEST{bold}\TEST{normal}\TEST{Times}
-\end{document}
-%</linux>
-%<*alphabets>
-%% This file `mathastexttestalphabets.tex' is for testing the extended
-%% scope of the math alphabet commands with package `mathastext', via
-%% the package command \MTnonlettersobeymathxx.
-%%
-%% Compile either with latex, pdflatex, lualatex (pdf output) or xelatex.
-%%
-%% See `mathastext.dtx' for the copyright and conditions of distribution or
-%% modification.
-%%
-\documentclass{article}
-\usepackage[hscale=0.66, vscale=0.72]{geometry}
-\usepackage{amsmath}
-\usepackage{mathtools}\mathtoolsset{centercolon}
-%% WARNING THIS IS INCOMPATIBLE WITH BABEL+FRENCHB
-%% BUT WITH MATHASTEXT LOADED THIS IS CORRECTED
-%% *IF* \MTnonlettersobeymathxx IS MADE USE OF.
-\usepackage{iftex}
-\ifXeTeX
-\expandafter\def\expandafter\testfileincipit\expandafter
- {\testfileincipit\ (compiled with \XeLaTeX)}
-\usepackage[no-math]{fontspec}
-\setmainfont[ExternalLocation,
- Mapping=tex-text,
- BoldFont=texgyretermes-bold,
- ItalicFont=texgyretermes-italic,
- BoldItalicFont=texgyretermes-bolditalic]{texgyretermes-regular}
-\setmonofont[ExternalLocation,
- Mapping=tex-text]{texgyrecursor-regular}
-\setsansfont[ExternalLocation,
- Mapping=tex-text]{texgyreheros-regular}
-\else
-\ifLuaTeX % for pdf output
-\expandafter\def\expandafter\testfileincipit\expandafter
- {\testfileincipit\ (compiled with \LuaLaTeX)}
-\usepackage[no-math]{fontspec}
-\setmainfont[Ligatures=TeX]{TeX Gyre Termes}
-\setmonofont[Ligatures=TeX]{TeX Gyre Cursor}
-\setsansfont[Ligatures=TeX]{TeX Gyre Heros}
-\else
-\usepackage[utf8]{inputenc}
-\usepackage[T1]{fontenc}
-\usepackage{tgtermes}
-\usepackage{tgcursor}
-\usepackage{tgheros}
-\fi\fi
-\usepackage{metalogo} % must be loaded /after/ [no-math]fontspec
-\usepackage[french]{babel}
-\usepackage[italic,asterisk]{mathastext}
-\MTlettershape{n}\Mathastext[upright]
-\MTnonlettersobeymathxx
-\MTexplicitbracesobeymathxx
-\delimitershortfall-1pt
-\usepackage{color}
-\begin{document}
-\testfileincipit
-
-\begin{center}
- \bfseries Two features of \texttt{mathastext}:\\
-extended scope of the math alphabets and added italic corrections\par
-\end{center}
-
-The package makes
-${!}\,{?}\,{,}\,{:}\,{;}\,{+}\,{-}\,{=}\,{(}\,{)}\,{[}\,{]}\,{<}\,{>}\,{\{}\,{\}}$,
-the asterisk $*$, and $.\,/\,\vert\,\backslash\,{\#}\,{\$}\,{\%}\,{\&}$ obey the
-math alphabet commands (this is the maximal list, some characters may have been
-excluded by the corresponding package options). For the characters listed first
-the mechanism involves a `mathematical activation'.
-
-As this process may create incompatibilities, it will be put into action
-for
-${!}\,{?}\,{,}\,{:}\,{;}\,{+}\,{-}\,{=}\,{(}\,{)}\,{[}\,{]}\,{<}\,{>}$
-only if the user makes use of the package command
-\verb|\MTnonlettersobeymathxx| (and the braces necessitate
-\verb|\MTexplicitbracesobeymathxx|).
-
-It could be that one such character has been made `active' in the entire
-document by some other package, typically a language definition file for the
-\verb|babel| system. Here for example we have used \verb|babel| with the
-\verb|french| option, which makes the high punctuation characters !?:; active
-throughout the document (extra spacing is put in front of the character when
-used in text; no change in math but perhaps for other languages and characters
-this could happen, it is up to the language definition file to decide).
-
-When \verb|mathastext| detects that a character it wants to `mathematically
-activate' is already `active', it does not go further except if it seems that
-the activation was done by Babel. If the activation was done by Babel, then
-\verb|mathastext| replaces the expansion of the active character in math mode by
-what is necessary to achieve its goal. It does not additionally mathematically
-activate the character; rather it makes sure that the character is \emph{not}
-mathematically active. In the present document the colon was made mathematically
-active by \verb|mathtools| but this was already canceled in the preamble by
-\verb|mathastext| as it was loaded later. And it is better so, because the
-combination \verb|babel| (with option \verb|frenchb|) +\verb|mathtools| (with
-\verb|centercolon|) makes \verb|$:$| create an infinite loop!
-
-But even if someone had mathematically activated the colon after the preamble,
-or after the loading of \verb|mathastext|, this would be canceled again
-automatically for each inline or displayed mathematical formula (if the user
-does \verb|\MTnonlettersobeymathxx|).
-
-The conclusion with \verb|\MTnonlettersobeymathxx| is: if some package has tried
-to make the character mathematically active, this will be overruled by
-\verb|mathastext|; if some package has made the character globally active, then
-the package wins except if it is Babel, as \verb|mathastext| may in the latter
-case safely modify the action in math mode (paying attention to the fact that
-the character should be usable in \verb|\label| and \verb|\ref| in and outside
-of math mode).
-
-The displayed equations next illustrate the extended scope of the math alphabets
-which now apply to $=$, $-$, $($, $)$, $[$, $]$ (but not to the large delimiters
-of course). Furthermore, for testing purposes the equations were labeled using
-such characters, for example the last one has label \verb|eq=7|, to check that
-the mathematical activation of $=$ does not cause problems with
-\verb|\label/\ref|.
-
-\def\testformula{\quad\Biggl\lbrace\biggl(\left(\left[[\sin(a) + \cos(b) - \log(c) =
-\sec(d)]\right]\right)\biggr)\Biggr\rbrace}
-\begin{equation}\testformula\label{eq:1}\end{equation}
-\begin{equation}\mathnormalbold{mathnormalbold:\testformula}\label{eq;2}\end{equation}
-\begin{equation}\mathrm{mathrm:\testformula}\label{eq?3}\end{equation}
-\begin{equation}\mathbf{mathbf:\testformula}\label{eq!4}\end{equation}
-\begin{equation}\mathit{mathit:\testformula}\label{eq(5}\end{equation}
-\begin{equation}\mathtt{mathtt:\testformula}\label{eq)6}\end{equation}
-\begin{equation}\mathsf{mathsf:\testformula}\label{eq=7}\end{equation}
-
-Equations above are numbered \ref{eq:1}, \ref{eq;2}, \ref{eq?3}, \ref{eq!4}, and
-$\ref{eq(5}$, $\ref{eq)6}$, and $\ref{eq=7}$.
-
-\def\testline#1{$#1$&$\mathnormalbold{#1}$&$\mathrm{#1}$&$\mathbf{#1}$&$\mathit{#1}$&$\mathtt{#1}$&$\mathsf{#1}$}
-
-\centerline{\begin{tabular}{ccccccc}
-\testline{a!b}\\
-\testline{a?b}\\
-\testline{a,b}\\
-\testline{a;b}\\
-\testline{a:b}\\
-\testline{a:=b}\\
-\testline{a\vcentcolon= b}\\
-\testline{a\colon b}\\
-\testline{a.b}\\
-\testline{a-b}\\
-\testline{a+b}\\
-\testline{a=b}\\
-\testline{a<b}\\
-\testline{a>b}\\
-\testline{<x,y>}\\
-\testline{\mathopen{<} x,y\mathclose{>}}\\
-\testline{\left< x,y\right>}\\
-\testline{a/b}\\
-\testline{a\backslash b}\\
-\testline{a\setminus b}\\
-\testline{a|b}\\
-\testline{a\mid b}\\
-\testline{(a,b)}\\
-\testline{[a,b]}\\
-\testline{\{a,b\}}
-\end{tabular}}
-
-The question mark has been made active by \verb|babel+frenchb|.
-\verb|mathastext| has imposed in math mode its ways (now \verb|$\mathbf{???}$|
-gives $\mathbf{???}$). As the extra spacing is added by \verb|frenchb| only in
-text, we had to use the math alphabet to check that indeed \verb|mathastext|
-overruled Babel.
-
-To double-check we will now make \string? mathematically active:
-\verb|\mathcode`?="8000|\mathcode`?="8000. This is a sure cause for disaster
-normally with Babel (don't do this at home without \verb|mathastext|!). But here
-with \verb|$?$| no bad surprise (infinite loop!) awaits us: just $?$.
-
-Let's take some other character, for example the opening parenthesis, and make
-it catcode active:
-\verb|\catcode`(=\active \def ({X}|.
-Let's try the input
-\verb|( and $($|.
-\begingroup
-\catcode`(=\active \gdef ({X}
-This gives ( and $($. We see that \verb|mathastext| does not attempt to modify
-the definition of the active character, as this activation was not done via the
-\verb|babel| services. \catcode`\(=12 \mathcode`(="8000 We now revert the
-parenthesis to catcode other (but maintain \verb|\def ({X}| as definition of its
-active version), and then make it mathematically active using the command
-\verb|\mathcode`(="8000|. If we try \verb|$((($| we see that the parenthesis is
-not converted into an $X$: $((($. The mathematically active character was
-overruled by \verb|mathastext|.
-
-Issuing \verb|\MTnonlettersdonotobeymathxx|\MTnonlettersdonotobeymathxx\ we do
-get the $X$'s from the input \verb|$((($|: $((($
-\endgroup
-This shows that \verb|mathastext| now does not modify in math mode the
-non-letter \verb|(|.
-
-\MTversion{upright}\MTnonlettersobeymathxx
-We defined in the preamble of the document a \verb|mathastext|-enhanced
-math version (named \verb|upright|) having the Latin letters upright in
-math mode. Let's switch to
-it: \newline
-\hbox to\linewidth{\hss\verb|\MTversion{upright}|\hss}
-
-With a font which is neither italic nor slanted, \verb|mathastext| automatically
-inserts italic corrections for better positioning of the subscript:
-\verb|$f_i^i$| gives
-$f_i^i$.
-After \verb|\MTnoicinmath| which turns off this feature\MTnoicinmath{}, the same
-input gives $f_i^i$, which is different.
-\footnote{last time I tried, this only worked with PDF\LaTeX{}, not with
- \LuaLaTeX{} or \XeTeX{}.}
-
-Again with italic corrections on (\verb|\MTicinmath|)\MTicinmath{}
-\verb|$f_{abc}^{def}$| gives $f_{abc}^{def}$, and here is another one:
-$f^{f_{abc}^{def}}_u$. Without italic corrections\MTnoicinmath: $f_{abc}^{def}$,
-and respectively $f^{f_{abc}^{def}}_u$.
-
-\MTicinmath
-
-\verb|mathastext| does not add these italic corrections inside arguments of
-math alphabets, as this would prevent the formation of ligatures:
-$\mathnormal{ff}$, $\mathrm{ff}$, $\mathit{ff}$, $\mathbf{ff}$, $\mathtt{ff}$
-(no ligature in teletype) and $\mathsf{ff}$.\footnote{\llap{\textcolor{magenta}{\bfseries Changed!\kern3em}}Prior to 1.3i,
- italic corrections were added to the \string\mathnormal\ arguments.}
-
-\centerline{\begin{tabular}{ccccccc}
-\testline{a!b}\\
-\testline{a?b}\\
-\testline{a,b}\\
-\testline{a;b}\\
-\testline{a:b}\\
-\testline{a:=b}\\
-\testline{a\vcentcolon= b}\\
-\testline{a\colon b}\\
-\testline{a.b}\\
-\testline{a-b}\\
-\testline{a+b}\\
-\testline{a=b}\\
-\testline{a<b}\\
-\testline{a>b}\\
-\testline{<x,y>}\\
-\testline{\mathopen{<} x,y\mathclose{>}}\\
-\testline{\left< x,y\right>}\\
-\testline{a/b}\\
-\testline{a\backslash b}\\
-\testline{a\setminus b}\\
-\testline{a|b}\\
-\testline{a\mid b}\\
-\testline{(a,b)}\\
-\testline{[a,b]}\\
-\testline{\{a,b\}}
-\end{tabular}}
-
-\end{document}
-%</alphabets>
%<*dtx>
^^Afi^^Aendgroup % end of big \iffalse block including generated files
% Removal of the *sfixed found in tex/latex/mlmodern/omxmlmex.fd
@@ -1523,7 +1117,7 @@ $\mathnormal{ff}$, $\mathrm{ff}$, $\mathit{ff}$, $\mathbf{ff}$, $\mathtt{ff}$
\def\cmd#1{\cs{\expandafter\cmd@to@cs\string#1}}
\def\cmd@to@cs#1#2{\char\number`#2\relax}
% Here I am loading doc=v2 but formerly I was using ltxdoc via scrdoc
-% which I dropped at release 1.4l (2022-05-29) and without much
+% which I dropped at (etoc) release 1.4l (2022-05-29) and without much
% thinking I had kept this.
\DeclareRobustCommand\cs[1]{\texttt{\bslash#1}}
% As I may have the * active, or macro names with _ or ^, I should
@@ -1552,12 +1146,19 @@ $\mathnormal{ff}$, $\mathrm{ff}$, $\mathit{ff}$, $\mathbf{ff}$, $\mathtt{ff}$
% is set by geometry package and a4paper option from xint.tex file. So it
% seems I only need the hologo loading:
\usepackage{hologo}
-\DeclareRobustCommand*{\eTeX}{\hologo{eTeX}}%
-\DeclareRobustCommand*{\pdfLaTeX}{\hologo{pdfLaTeX}}%
-\DeclareRobustCommand*{\LuaTeX}{\hologo{LuaTeX}}%
-\DeclareRobustCommand*{\LuaLaTeX}{\hologo{LuaLaTeX}}%
-\DeclareRobustCommand*{\XeTeX}{\hologo{XeTeX}}%
-\DeclareRobustCommand*{\XeLaTeX}{\hologo{XeLaTeX}}%
+% 1.4 fix to some extra line spacing obviously caused by usage of the
+% \hologo macro.
+% I opened https://github.com/ho-tex/hologo/issues/9
+% after testing, actually only XeTeX and XeLaTeX are problematic
+% update: as per @u-fischer the problem goes away if graphicx package
+% is loaded, but we don't use it in this document...
+\def\msthologo#1{\smash{\hologo{#1}}}
+\DeclareRobustCommand*{\eTeX}{\msthologo{eTeX}}%
+\DeclareRobustCommand*{\pdfLaTeX}{\msthologo{pdfLaTeX}}%
+\DeclareRobustCommand*{\LuaTeX}{\msthologo{LuaTeX}}%
+\DeclareRobustCommand*{\LuaLaTeX}{\msthologo{LuaLaTeX}}%
+\DeclareRobustCommand*{\XeTeX}{\msthologo{XeTeX}}%
+\DeclareRobustCommand*{\XeLaTeX}{\msthologo{XeLaTeX}}%
%
\makeatother
%%% end of ltxdoc+srcdoc emulation from June 2022 xint.dtx,
@@ -1669,7 +1270,8 @@ pdfpagemode=UseOutlines,%
asterisk,%
defaultmathsizes,%
symbolmisc,symbolre,%
- LGRgreek+]{mathastext}
+ LGRgreek+,
+ activedigits]{mathastext}
\let\symbolbullet\bullet
\let\bullet\originalbullet
% This version will use the mlmodern font which is current
@@ -1790,15 +1392,15 @@ pdfpagemode=UseOutlines,%
\def\tt {\normalfont\ttfamily}
% mais bon, en fait je ne les utilise pas.
-% 2023/12/27 pas encore
-% \newcommand\mstrelease[1]{\hyperlink{v#1}{\texttt{#1}}}
-
% 2023/12/27
\DeclareRobustCommand\ctanpkg[1]
{\texorpdfstring{\href{https://ctan.org/pkg/#1}{#1}}{#1}}
-% bataille avec le rendu de l'entre 1.3zb du change log
-% \hyphenation{ncc-comma}
+% 2024/07/10
+% Attention que si la cible n'existe pas il n'y a AUCUN warning
+% dans le log...
+\newcommand\mstrelease[1]{\hyperlink{#1}{\texttt{#1}}}
+
\begin{document}
% \makeatletter\show\mv@normal\makeatother
% contient
@@ -1924,10 +1526,6 @@ the preamble:
\end{verbatim}
The package records which font is set up for text, at the time it is
loaded,
-%\footnote{alternatively it is possible to configure the text font after
- % loading \mst, and then the command \cs{Mathastext} will accomplish the
- % necessary changes to the font for letters, digits and a few extra ascii
- % symbols in math mode.}
and
then arranges things in order for this text font to be used in math mode as
well. So, with the preamble as above
@@ -1955,293 +1553,6 @@ The exact list of characters concerned by
As one can see, this is a very limited list! Some possibilities exist
regarding Greek letters and will be described later.
-\subsection{Miscellanea}
-
-Please note that most of this section was written many years ago (except for
-the item about math alphabets which was enriched with important background
-information and moved upfront at |1.3zb|). But it should still be valid!
-%
-\begin{description}
-
-\item[math alphabets:] Let us first recall fundamental facts of life, in the
- world of traditional PDF\TeX\ engine and \TeX\ fonts, as background for
- understanding what \mst does in this context, which will be explained next.
- People familiar with using Unicode engines and \ctanpkg{unicode-math}, please be
- aware that the semantics there of the \LaTeX\ math alphabet commands are
- \textbf{significantly} modified!
-\begin{snugshade}
-\begin{itemize}
-\item In the default \LaTeX\ set-up all five of \mathrm, \mathbf,
- \mathit, \mathsf and \mathtt tell \TeX\ to use for their arguments
- specific \texttt{OT1}-encoded fonts,
-\item if the document body uses, as will be the case probably with any
- language other than English or its variants, some other encoding such as
- \texttt{T1} for its fonts, there is no change whatsoever to the math
- configuration, indeed most font packages ignore it completely,
-\item it is thus a priori wrong to think of these commands as switching to
- some body text font, although letters within their scopes will act as in a
- text font, and in particular obey ligatures (this also applies to operator
- names defined by |amsmath|'s \cs{DeclareMathOperator} which are, with some
- extras not mentioned here, as using \mathrm),
-\item these commands are completely different in spirit from the \LaTeX\
- \cs{textrm}, \cs{textbf}, and others, which change only some font axis;
- indeed the math alphabet commands inherit from legacy Knuth's \cs{rm},
- \cs{bf}, and others which are complete font specifiers,
-\item in particular when nesting, it is the inner-most which wins,
-\item only mathematical characters (such as letters) which are declared to
- \TeX\ as being of ``variable family type'' react to being in the argument of
- a math alphabet command,
-\item lowercase Greek letters are by default in \LaTeX\ immune to math
- alphabets (so \verb|\mathrm{\pi}| induces no change in output), but the
- eleven uppercase Greek letters are of ``variable family type'' because they
- are picked in the \texttt{OT1}-encoded font also used for operator names
- (the one to which \mathrm maps), \emph{and they occupy the exact same
- slots in the \emph{\texttt{OML}}-encoding to which} \mathnormal maps! So
- in default \TeX, \verb|\mathnormal{\Gamma}| gives a slanted one. The slots
- occupied in \texttt{OML}-encoding by the lowercase Greek letters (to which
- encoding they are a priori assigned) give
- completely unrelated glyphs in the \texttt{OT1}-encoding, so it makes sense
- that the default \LaTeX\ declares them to not react to math alphabets.
- Notice though, that if \LaTeX\ had declared a \cs{mathnormalbold}, mapping
- to a bold \texttt{OML}-encoded font, it would have made sense to also have
- \cs{alpha}, \cs{beta}, etc... be of ``variable family type'',
-\item but of course then one should a priori never use |\mathbf{\pi}| for
- example, because the default \mathbf selects an \texttt{OT1}-encoded
- font, where there is no pi glyph whatsoever and in particular not at the slot of
- pi in the \texttt{OML} encoding (slot number 25)!
-\end{itemize}
-\end{snugshade}
-Please keep all the above in mind when trying to understand what \mst does
-with math alphabets. The most significant point described next naturally is that
-\mst will sync \mathnormal, \mathrm, \mathbf, \mathit, \mathsf and
-\mathtt to map to the \mst-ified body text fonts.
- \begin{itemize}
- \item \mathnormal, \mathrm, \mathbf, \mathit,
- \mathsf and \mathtt are modified to use the \mst-ified
- text fonts; this can be disabled via defaultalphabets and
- related individual options, but the package always provides
- \Mathnormal, \Mathrm, etc..., to match the \mst font
- configuration (\RLNote{changed:}{1.3za}prior to |1.3za|
- defaultalphabets and related options also caused the \mst
- alphabet commands not to be defined). Recall that there may
- arise a ``too many math alphabets'' error if too many of these
- commands are \emph{used} in the document:
- \emph{declaring} them is not by itself the cause of the error. See the
- \LaTeX\ news entry of its \texttt{2021-11-15} release for
- the counter \texttt{localmathalphabets} (with default value 2)
- which can be now be used if one hits such a difficulty.
- \item We define a new math alphabet command
- \mathnormalbold which gives direct access to
- the bold version of the \mathnormal alphabet
- (rather than using either the \cs{bm} command from
- the \ctanpkg{bm} package or the \cs{boldsymbol} command
- from the \ctanpkg{amsbsy} package). As it does not
- exist in the default \LaTeX{} math font set-up, this
- alphabet is \emph{not} subjected to the {subdued option} action.
-
-\item version \RightNote{1.2}|1.2| of \mst has extended the scope of the math
- alphabets to apply to non-alphabetical characters and to
- operator names. This respects the automatic white spaces
- added by \TeX{} around math symbols.
-\item The\RightNote{1.3i}
- extra skips around letters (see \autoref{sec:mathskips} and
- \autoref{sec:ic}) are removed in the scope of the math alphabets.
-
- \item Depending on options, further math alphabet commands
- are defined by the package: \MathEulerBold,
- \MathEuler, \MathPSymbol, and since |1.3x| under
- the LGRgreek family of options\RightNote{1.3x} also
- \mathgreekup and \mathgreekit. See
- \autoref{sec:newgreek}.
- \item \RightNote{1.3za}Addition of \mathgreekupbold and
- \mathgreekitbold under the LGRgreek family of options.
- \item With\RightNote{1.3za} the LGRgreek+ option
- which enhances Greek letters with a specific behavior when in the
- arguments of the \mathrm, \mathbf, etc..., math alphabet
- commands, this special behavior is not triggered by the \Mathrm,
- \Mathbf, et al., which are genuine unmodifed math alphabet commands. See
- \autoref{sec:newgreekplus}.
- \end{itemize}
-
-\item[the en-dash as minus sign:] very often the -
- character from the text font does not give a good
- minus sign. So by default, the package uses the
- en-dash sign \textendash{}. Use noendash to
- deactivate it. Starting with version |1.12| of the
- package this `en-dash as minus' should work in all
- encodings, including Unicode (if \ctanpkg{fontspec} has been
- loaded); see also |unicodeminus| for OpenType fonts.
-
-\item[amsmath:] \strut the behaviour of the
- \cs{DeclareMathOperator}\RightNote{1.3n} command
- of |amsmath| is modified by \mst for it to use the correct font.
- Additionally, release |1.3n| of \mst at long last also handles an extra
- operation done by |amsmath| for |'.:/-*| to be used in operator names
- without the extra math spacing.%
-%
-\footnote{To the experts: there is a long story here that \cs{newmcodes@}
- hardcodes the font, that it was not compatible with Unicode engines, that
- during some time (2013-2016) \texttt{lualatex-math} fixed that and very
- recently |amsopn.sty 2016/03/08 v2.02| also, so now \texttt{lualatex-math
- 1.6} does nothing as it is already fixed ``upstream'' in |amsopn.sty|, but
- anyhow in both cases, this still hardcoded the font, so finally \mst does
- the right thing from its point of view. See the code comments for more,
- there is an issue here with \LuaLaTeX\ not applying the curly right quote
- contrarily to \XeLaTeX.}
-%
-This customization is suppressed in subdued mode for the |normal| and |bold|
-math versions.
-
-\item[hbar:] the default \LaTeX\ definition of \hbar would in our context
- make use of the |h| of the current math font (so for us, it is also the text
- font, perhaps in italic shape), but with a bar accross the |h| from the
- original default math font for letters (usually |cmmi|). We redefine
- \cs{hbar} to use the text font macron accent (|\=|) as a mock math accent
- (this takes into account the italic option and is compatible with
- subscripts and superscripts).
-
- Since |1.12| \mst when dealing with a Unicode font sets the \cs{hbar}
- to be the character from the font having hexadecimal codepoint |U+0127|.
-
- Since |1.3u| the general 8bits font encoding is
- supported\RightNote{1.3u} (see discussion of the |mathaccents| option
- at end of this list for the shared limitations). Brief testing with
- various usual \TeX\ fonts shows that the vertical positioning of
- the bar isn't satisfying. It is planned to either add a parameter to
- adjust it or to modify altogether the mode of construction of the |\hbar|.
-
- Use nohbar to tell \mst not do provide its own |\hbar|.
-
-
-\item[dotless i and j:] by default the package redefines \cs{imath} and
- \cs{jmath} to give (in math mode) the dotless i and j (if it exists at
- all) from the text font.%
-%
-\footnote{\RightNote{1.3t}Since \texttt{1.12} it also redefined \cs{i} and
- \cs{j} for usability both in text and math modes, but this has been
- dropped at \texttt{1.3t}. Breaking change!}
-
-\item[asterisk:] versions of \mst earlier than |1.2d [2013/01/02]|
- did not do anything
- with the \cs{ast} control sequence but did pick the asterisk
- $*$ in the document text font, and this often was a rather
- silly thing as the text asterisk is generally in a raised
- position. Furthermore, the $*$ lost its status of a binary
- operator and was treated as an `ordinary' symbol. An option
- |noasterisk| turned this feature off. Starting with |1.2d|,
- the |noasterisk| option is deprecated and the new default is
- to do nothing. But when option asterisk is received by the
- package, then both \cs{ast} and $*$ are simultaneously
- modified to use (as binary operators) the text asterisk,
- slightly lowered. The amount of lowering\footnote{with the
- option \texttt{symbolmisc}, the asterisk is picked from
- the Symbol font, and the amount of lowering is
- non-customizable; however if a math alphabet command is
- used, the asterisk is then again from a text font and the
- lowering will be as specified by \cs{MTlowerast}.} is
- decided by the mandatory argument to the command
- \csb{MTlowerast}\marg{dimen}. The package initially does
- \cs{MTlowerast}|{.3\height}|. Doing \cs{MTlowerast}|{.5ex}| is
- not a good idea as it does not scale properly in the script
- and scriptscript styles. With an argument given as a
- multiple of |\height|, the asterisk will behave as expected
- in subscripts and subscripts of subscripts. But $*$ is now
- `mathematically active'\thinspace\footnote{in a hopefully
- safe way, for example {\ttfamily\$\string\label\{eq*1\}\$}
- is ok.} and |$R^*$| or |$R^\ast$| \emph{must} be input as
- |$R^{*}$| and |$R^{\ast}$|. Furthermore, they will obey the
- math alphabet commands.
-
-\item[\XeTeX{} and \LuaLaTeX{}:] regarding the en-dash and the
- dotless i and j, the package is now under the Unicode engines
- compatible not only with the ``Unicode'' \LaTeX\ font encodings
- EU1 (\XeTeX, old fontspec), EU2 (\LuaLaTeX, old fontspec), TU
- (\XeTeX\ and \LuaLaTeX, modern fontspec), but also with
- traditional 8bits-encodings declared as a |fontenc|
- option.\RightNote{1.3u}
-
-% obsolete
- % Formerly, with a Unicode engine,
- % only OT1, T1 and LY1 were supported by \mst as the 8bit encoding
- % of the document text font, regarding the minus as en-dash and
- % the dotless i and j.
-
- \item[fontspec:] one more note to users of
-\XeTeX{}/\LuaLaTeX{} with \ctanpkg{fontspec}:\newline
-\fbox{it has to be
-loaded {with the option} |no-math|},
-and \emph{before} \mst.
-
-\item[vec accent:] The default \cs{vec} accent is not
- appropriate for upright letters, so \mst
- provides a \cs{fouriervec} which takes its glyph in a
- Fourier font, and an Ersatz \cs{pmvec}
- which is reasonably good looking on upright letters
- and works with the \cs{rightarrow} glyph. Contrarily
- to version |1.0|, the default \cs{vec} is not
- overwritten with \cs{fouriervec}. And contrarily to
- version |1.1|, one now needs to pass the option
- fouriervec to have the math accent \cs{fouriervec}
- defined by the package.%
-%
-\footnote{this costs a math family, as I never came back to this to try to
- do otherwise.}
-
-\item[math accents:] if option mathaccents is used then \mst attempts to let
- the math accents |\acute|, |\grave|, etc... use the suitable glyphs from the
- text font. Prior to |1.3u| only |OT1|, |T1|, and |LY1| were supported (via
- hardcoded slots). It should now work with any 8bits font
- encoding\RightNote{1.3u} having been declared as an option to the
- \ctanpkg{fontenc} package (and of course providing the ten needed text accents which
- will mock math accents).%
- %
- \footnote{The code will raise low-level \TeX\ errors if the user attempts to
- use an 8bits font encoding whose \LaTeX\ definition file is lacking the
- suitable uses of \cs{DeclareTextAccent} or if the low level \LaTeX\ macro
- implementation of text accents changes significantly; in such cases please
- report the problem to the author, so that it can be documented in future
- releases!}
-
- The |\vec| math accent is not handled here, as it is not available in the
- usual 8bits font encodings. See the fouriervec option or the \pmvec
- command.
-
- The math accents obey the subdued option\RightNote{1.3u}
- and will change in sync with the \mst-ified text font used in
- each non subdued math version.
-
- (Very) brief testing during |1.3u| development with \XeTeX\ and \LuaTeX\ let
- the author conclude that usage with the \cs{Umathaccent} primitive of an
- OpenType accent glyph slot (which in the text font is for usage as a
- postpended combining character) gives definitely bad horizontal placements
- for both engines (each in its own way). Thus, the redefinitions of accents
- for a \mst declared math version with an OpenType font is by default
- canceled.%
-%
-\footnote{I.e., the \cs{grave} etc... control sequences will, in math versions
- with an OpenType \mst-ified font, expand to macros holding their initial
- meanings, unmodified by \mst, which was in force at the
- |\string\begin\string{document\string}|.}
-%
- Use unimathaccents to force usage of the OpenType font text
- accents glyph slots with the \cs{Umathaccent} primitive. Expert users are
- invited to check out the code and to contribute suggestions if some extras
- can improve it.
-
-\item[varying font encodings:] the very first release of \mst dealt with only
- one font; very soon thereafter it acquired the capacity to define multiple
- math versions, each one using its own text font. But, as was documented at
- this location formerly, various encoding dependent decisions were done once
- and for all during package loading.
-
- This meant in particular that the minus sign (using the text endash), the
- dotless |i| and |j|, the |\hbar|, the math accents were all set up for only
- one unique font encoding. It was thus recommended that all math versions
- share the same font encoding.
-
- The |1.3u| release has lifted this restriction.\RightNote{1.3u}
-\end{description}
-
\subsection{Examples}
\label{sec:examples}
@@ -2473,7 +1784,7 @@ versions.%
% \href{http://mirrors.ctan.org/help/Catalogue/entries/cbgreek-complete.html}{cbfonts},
% \href{http://mirrors.ctan.org/help/Catalogue/entries/txfontsb.html}{txfontsb}.
-\emph{Since |1.3x| this documentation uses globally the |mlmodern|%
+\emph{Since \mstrelease{1.3y} this documentation uses globally the |mlmodern|%
%
\footnote{Daniel Benjamin \textsc{Miller}, \emph{A blacker Type 1 version of Computer Modern, with multilingual
support}, \url{https://ctan.org/pkg/mlmodern}. I have added to the preamble
@@ -2500,7 +1811,7 @@ reasons of PDF file size.}%
\subsubsection{The \blueit{italic} option}
-In the initial version |1.0|, the Latin letters in
+In the initial version \mstrelease{1.0}, the Latin letters in
mathematical mode assumed the exact same shape as in
text mode, and this meant, generally speaking, that
they would turn up upright. Doing this gives a very
@@ -2510,15 +1821,15 @@ one of the design goals of \mst.
Nevertheless, soon after I posted the initial version
of the package to CTAN, I was overwhelmed by
-numerous\footnote{this means ``more then one.''}
+numerous\footnote{this means ``more than one.''}
questions\footnote{I thank in particular
Tariq~\textsc{Perwez} and Kevin~\textsc{Klement} for
their kind remarks (chronological order).} on how to
have the letters be in italic shape.
-The default is still, as in version |1.0|, for everything to be in
+The default is still, as in version \mstrelease{1.0}, for everything to be in
upright shape, but it suffices to pass to the package the option
-italic\RightNote{1.1} to let the Latin letters in math mode be
+italic\RightNote{\mstrelease{1.1}} to let the Latin letters in math mode be
in italic shape.%
%
\footnote{more precisely stated, the value of \cs{itdefault}
@@ -2547,7 +1858,7 @@ the \ctanpkg{moresize} package. To cancel all of this use option
\subsubsection[The subdued option]{The \blueit{subdued} option}\label{sec:subdued}
-This option was introduced in |v1.15|.\RightNote{1.15} It provides a manner to
+This option was introduced in |v1.15|.\RightNote{\mstrelease{1.15}} It provides a manner to
switch on the \mst-\emph{ification} only for limited portions of
the document, with the help of the mechanism of math versions. Without the
subdued option, the \emph{mathastextification} applies by default
@@ -2560,7 +1871,7 @@ Despite some limitations I will now partially describe, the subdued option
has its utility, as I think is illustrated enough by the examples given at the
start of this document and it works reasonably well.
-\begin{framed}
+\begin{shaded*}
\mst was not written initially in order to allow its action to
be completely canceled. It does not store (all) mathcodes nor
does it set them (all) when changing math versions; only that would
@@ -2569,7 +1880,7 @@ start of this document and it works reasonably well.
official interface to math mode, as it is almost entirely
preamble only).
- Releases |1.3t| and |1.3u| do this kind of things to maintain
+ Releases \mstrelease{1.3t} and \mstrelease{1.3u} do this kind of things to maintain
usability across multiple \mst-ified math versions of characters
which are obviously font encoding dependent such as the minus
sign as en-dash (or unicode minus), the dotless i, the |\hbar|,
@@ -2581,7 +1892,7 @@ start of this document and it works reasonably well.
mode and to multiple math versions amounts to some kind of a
kludge, added to an initial design which handled a single unique
text font.
-\end{framed}
+\end{shaded*}
To get the displayed math
(almost) as if \mst had not been loaded, one must also
@@ -2590,7 +1901,7 @@ as, for example, the colon, the dot, and the minus sign belong
in the default \LaTeX{} math mode set-up to three distinct fonts
whereas \mst will pick (even subdued) the three of them in the same
font,%
-\footnote{\RightNote{1.3t}The minus sign is now perfectly subdued,
+\footnote{\RightNote{\mstrelease{1.3t}}The minus sign is now perfectly subdued,
because its original mathcode is stored and restored; this was only
way to handle the case with Unicode engines
where the math operator font is in a classic
@@ -2604,13 +1915,13 @@ mathcodes, so to
be on the safe side one needs the basic option which limits the
mathastextification to letters and digits.%
%
-\footnote{\RightNote{1.3d}The subdued mode does extinguish
+\footnote{\RightNote{\mstrelease{1.3d}}The subdued mode does extinguish
in the normal and bold math versions the action of options selfGreek,
eulergreek, and symbolgreek (previously only LGRgreek was
subdue-able).}
-\footnote{\RightNote{1.3t}The \texttt{\string\imath} and
+\footnote{\RightNote{\mstrelease{1.3t}}The \texttt{\string\imath} and
\texttt{\string\jmath} now obey the subdued regime.}
-\footnote{\RightNote{1.3u}Also \texttt{\string\hbar}
+\footnote{\RightNote{\mstrelease{1.3u}}Also \texttt{\string\hbar}
and the math accents (see mathaccents option) obey the subdued regime.}
%
Even then, in some circumstances, this may not suffice: for example the
@@ -2644,80 +1955,192 @@ customization of Greek letters. The command \MTcustomgreek reenables the
customization done by \mst, if it was loaded with the LGRgreek or one of the
other Greek related options.
-\begin{framed}
- Release |1.3x| has added important new aspects to the handling of Greek
+\begin{shaded*}
+ Release \mstrelease{1.3y} has added important new aspects to the handling of Greek
letters via the LGRgreek option. Make sure to read the \autoref{sec:newgreek}.
-\end{framed}
+\end{shaded*}
+
+\subsection{Miscellanea}
+
+Please note that most material to be found in this section was written many
+years ago (except the two subsections on frenchmath on one hand and
+intervals on the other hand). But it should still be valid!
-\subsection{More miscellanea}
+Ultimately most information here should be moved into the
+reference sections \autoref{sec:cmd} and \autoref{sec:opt}, and only some
+generalities should be kept here.
-This may repeat information already given.
+\subsubsection{Load \mst always last}
+
+The ``large'' math symbols are not modified in any way by \mst. Only loading
+some math font packages such as \ctanpkg{fourier}, \ctanpkg{kpfonts}, \ctanpkg{mathabx}, \ctanpkg{mathdesign},
+\ctanpkg{txfonts}, \ctanpkg{newtxmath}, \ctanpkg{libertinust1math}, others\dots{} will change them. Think of loading these
+packages before \mst, else they might undo what \mst did.
+
+More generally any package (such as \ctanpkg{amsmath}) dealing with math mode should be
+loaded \emph{before} \mst.
\subsubsection{Avoid \texorpdfstring{\texttt{OT1}}{OT1} encoding}
- We specified in our minimal working example a |T1| encoding (|LY1| would
- have been ok, too) because the default |OT1| does not have the
+ The default |OT1| does not have the
{\color{joli}\DeleteShortVerb{\|}
$\mathord{<}\,\mathord{>}\,\mathord{|}$\,\{\,\}} and
{\color{joli}$\backslash$\MakeShortVerb{\|}} glyphs. If
\mst detects |OT1| as the default encoding it will leave these characters to
- their defaults from the math fonts.\footnote{the subdued option, described next,
+ their defaults from the math fonts.%
+%
+\footnote{The subdued option, described next,
acts a bit otherwise, it forces, contrarily to its usual low-key character,
the replacement of |OT1| by |T1| for the fonts ultimately used with letters
and digits in math mode.}
-\begin{framed}
+%
+\begin{shaded*}
If \mst detects the obsolete |OT1| encoding it does not do anything with
\DeleteShortVerb{\|}<, >, |, \{, and \} which (except for monospace fonts)
are not available in that encoding.\MakeShortVerb{\|}
To fully benefit from \mst it is
recommended to use some other encoding having these glyphs such as |T1| or
|LY1|.
-\end{framed}
+\end{shaded*}
\subsubsection{Derivative, minus, asterisk}
The text characters {}'{} and {}-{} are not used, and the asterisk is
-done optionally:
+done only optionally:
\begin{itemize}
\item the derivative sign ${}'$ is left to its default as the text font
- glyph {}'{} is not, as a rule, a satisfying alternative.\footnote{|v1.2| adds
+ glyph {}'{} is not, as a rule, a satisfying alternative.%
+%
+\footnote{|v1.2| adds
a customizable tiny space before ${}'$ to separate it from the previous
letter, this is really needed when using upright letters in math mode with
the CM derivative glyph.{\MTversion{upright}\sffamily\MTprimeskip{.5mu}%
Compare $f'$ with \MTprimeskip{0mu}$f'$.} }
+
\item for the minus sign \mst uses the endash character
- \textendash, if available, and not the hyphen character -.%
-%
-\footnote{see the unicodeminus option if using an OpenType font.}
-%
-\item the asterisk option is mandatory for \mst to replace the binary math
- operator $*$ (and the equivalent control sequence \cs{ast}) with a version
- which uses the text asterisk * suitably lowered\footnote{the amount of
- lowering can be customized.} (and with the correct spaces around it as
- binary operator). The reason is that after this inputs such as |$R^*$|
- or |$R^\ast$| raise errors and \emph{must} be written |$R^{*}$| or |$R^{\ast}$|.
+ \textendash, if available, and not the hyphen character -. With
+an OpenType font, \mst uses per default the EN DASH U+2013 (see unicodeminus).
+
+\item the asterisk option is required for \mst to use the text font for the
+ binary infix math operator $*$ and
+ the control sequence \cs{ast}. They will use then the text asterisk
+ * suitably lowered, and with the correct spaces around it as binary
+ operator.
+ \begin{snugshade}
+ Attention that with this option, inputs such as |$R^*$| or |$R^\ast$|
+ raise errors and \emph{must} be replaced by |$R^{*}$|, respectively
+ |$R^{\ast}$|.
+ \end{snugshade}
\end{itemize}
+\subsubsection{Large symbols and delimiters}
+
Nothing is changed to the ``large'' math symbols, except for
$\MToriginalprod$ and $\MToriginalsum$ in inline math which, like here:
$\prod\sum$, will be taken from the Symbol Font if option symbolmisc
was used.
The left and right delimiters are taken from
-the text font only for the base size: any |\big|, |\bigl|, |\bigr|,
-etc\dots reverts to the original math symbols.
+the text font only for the base size: any one of |\big|, |\bigl|, |\bigr|,
+etc\dots will trigger the use of the original math symbols.
+\subsubsection{amsmath}
+The behavior of the
+ \cs{DeclareMathOperator}\RightNote{\mstrelease{1.3n}} command
+ of |amsmath| is modified by \mst for it to use the correct font.
+ Additionally, release \mstrelease{1.3n} of \mst at long last also handles an extra
+ operation done by |amsmath| for |'.:/-*| to be used in operator names
+ without the extra math spacing.%
+%
+\footnote{To the experts: there is a long story here that \cs{newmcodes@}
+ hardcodes the font, that it was not compatible with Unicode engines, that
+ during some time (2013-2016) \texttt{lualatex-math} fixed that and very
+ recently |amsopn.sty 2016/03/08 v2.02| also, so now \texttt{lualatex-math
+ 1.6} does nothing as it is already fixed ``upstream'' in |amsopn.sty|, but
+ anyhow in both cases, this still hardcoded the font, so finally \mst does
+ the right thing from its point of view. See the code comments for more,
+ there is an issue here with \LuaLaTeX\ not applying the curly right quote
+ contrarily to \XeLaTeX.}
+%
+This customization is suppressed in subdued mode for the |normal| and |bold|
+math versions.
-\subsubsection{Load \mst always last}
+\subsubsection{hbar}
+The default \LaTeX\ definition of \hbar would in our context
+ make use of the |h| of the current math font (so for us, it is also the text
+ font, perhaps in italic shape), but with a bar accross the |h| from the
+ original default math font for letters (usually |cmmi|). We redefine
+ \cs{hbar} to use the text font macron accent (|\=|) as a mock math accent
+ (this takes into account the italic option and is compatible with
+ subscripts and superscripts).
-The ``large'' math symbols are not modified in any way by \mst. Only loading
-some math font packages such as \ctanpkg{fourier}, \ctanpkg{kpfonts}, \ctanpkg{mathabx}, \ctanpkg{mathdesign},
-\ctanpkg{txfonts}, \ctanpkg{newtxmath}, etc\dots{} will change them. Think of loading these
-packages before \mst, else they might undo what \mst did.
+ Since \mstrelease{1.12} \mst when dealing with a Unicode font sets the \cs{hbar}
+ to be the character from the font having hexadecimal codepoint |U+0127|.
-More generally any package (such as \ctanpkg{amsmath}) dealing with math mode should be
-loaded \emph{before} \mst.
+ Since \mstrelease{1.3u} the general 8bits font encoding is
+ supported\RightNote{\mstrelease{1.3u}} (see discussion of the |mathaccents| option
+ at end of this list for the shared limitations). Brief testing with
+ various usual \TeX\ fonts shows that the vertical positioning of
+ the bar isn't satisfying. It is planned to either add a parameter to
+ adjust it or to modify altogether the mode of construction of the |\hbar|.
+
+ Use nohbar to tell \mst not do provide its own |\hbar|.
+
+
+\subsubsection{Dotless i and j}
+By default the package redefines \cs{imath} and
+ \cs{jmath} to give (in math mode) the dotless i and j (if it exists at
+ all) from the text font.%
+
+ \subsubsection{fontspec}
+
+\fbox{\ctanpkg{fontspec}
+has to be
+loaded {with the option} |no-math|},
+\emph{and before} \mst.
+
+\subsubsection{vec accent}
+
+The default \cs{vec} accent is not appropriate for upright letters, so \mst
+provides under option fouriervec a math accent control sequence
+\cs{fouriervec} which takes its glyph in a Fourier font. A poorman Ersatz
+\cs{pmvec} is always available ; it is reasonably good looking on upright
+letters and works with the \cs{rightarrow} glyph.
+
+\subsubsection{math accents}
+If option mathaccents is used then \mst attempts to let
+ the math accents |\acute|, |\grave|, etc... use the suitable glyphs from the
+ text font.
+
+ The |\vec| math accent is not handled here, as it is not available in the
+ usual 8bits font encodings. See the fouriervec option or the \pmvec
+ command.
+
+ The math accents obey the subdued option\RightNote{\mstrelease{1.3u}}
+ and will change in sync with the \mst-ified text font used in
+ each non subdued math version.
+
+\begin{footnotesize}
+ (Very) brief testing during \mstrelease{1.3u} development with \XeTeX\ and \LuaTeX\ let
+ the author conclude that usage with the \cs{Umathaccent} primitive of an
+ OpenType accent glyph slot (which in the text font is for usage as a
+ postpended combining character) gives definitely bad horizontal placements
+ for both engines (each in its own way). Thus, the redefinitions of accents
+ for a \mst declared math version with an OpenType font is by default
+ canceled.%
+%
+\footnote{I.e., the \cs{grave} etc... control sequences will, in math versions
+ with an OpenType \mst-ified font, expand to macros holding their initial
+ meanings, unmodified by \mst, which was in force at the
+ |\string\begin\string{document\string}|.}
+%
+ Use unimathaccents to force usage of the OpenType font text
+ accents glyph slots with the \cs{Umathaccent} primitive. Expert users are
+ invited to check out the code and to contribute suggestions if some extras
+ can improve it.\par
+\end{footnotesize}
+
\subsubsection{Sans serif in math}
@@ -2733,8 +2156,6 @@ text.
\subsubsection{\mst with \ctanpkg{beamer}}\label{ssec:beamer}
-%\noindent\llap{\textcolor{green}{\bfseries 2015/02/26}\hspace{1em}}
-
Starting
with release |3.34| of \ctanpkg{beamer}%
%
@@ -2791,24 +2212,9 @@ Antoine~\textsc{Missier}:
\item and load \mst afterwards (with possibly some font packages loaded in-between), passing it
the option frenchmath*.
\end{itemize}
-% \begin{footnotesize}
-% The\RightNote{1.3zb} release |2.7| dated |2023/12/23| of
-% \ctanpkg{frenchmath} required \mst to add a compatiblity patch and modify
-% the frenchmath* option. The above instructions cause a build crash with
-% |2.7| \ctanpkg{frenchmath} and \mst |1.3za| and earlier. One must use \mst
-% |1.3zb| or later.\par
-% \end{footnotesize}
-% Also, \ctanpkg{frenchmath} must be at least at
-% version |2.7| of |2023/12/23|.%
Limited testing indicated that the combination of the two packages (using the
options as indicated above) works satisfactorily.
-% as expected but that some adjustments may be needed for some of
-% the macros defined by \ctanpkg{frenchmath}: we
-% observed in particular that the |\paral| command (which produces
-% $\mathrel{/\!\!/}$) may not work well if the $/$ is picked up from the text
-% font due to \mst (alternative could be for most text fonts
-% |\def\paral{\mathrel{//}}|),
There may be some minor adjustments to do, as the \mst-ified math font may
cause issues to some of
the \ctanpkg{frenchmath} macros: for exemple \cs{Oijk} may not work
@@ -2886,9 +2292,9 @@ respectively, which make
the comma (to some extent) `intelligent', i.e. decide on the spacing type
(ordinary or punctuation) depending on next token. Do not load directly the packages
but simply use the corresponding option and \mst will do the loading and take
-appropriate needed measures for compatibility. The\RightNote{1.3zb} decimalcomma option is
+appropriate needed measures for compatibility. The\RightNote{\mstrelease{1.3zb}} decimalcomma option is
included in the frenchmath* option, and the ncccomma
-option is included in the frenchmath+ option.\RightNote{1.3zb}
+option is included in the frenchmath+ option.\RightNote{\mstrelease{1.3zb}}
Let's give another example of usage of \ctanpkg{mathtools} here to define a
macro for integer ranges:
@@ -2924,6 +2330,417 @@ multiple math versions. Read the fine print below for some limitations though.
\mst actions on square brackets (and parentheses).\par
\end{footnotesize}
+\subsubsection{Unicode engines}
+
+\mst is minimally Unicode aware since \mstrelease{1.12} and can be used with \XeTeX{} or
+\LuaTeX{}. Starting with release \mstrelease{1.3}, it needs |luatex| to be at least
+as recent as the one which was provided with the TL2013 distribution.
+
+However \mst applies only to (a subset of) the |32-127| ascii range, and
+optionally to Greek letters, but for the latter only if provided via ``\TeX\
+fonts'' such as Euler, Symbol or LGR-encoded fonts.
+It does not know how to use a given Unicode font simultaneously for Latin and
+Greek letters.
+
+Thus, first consider much better alternatives:
+\begin{itemize}
+\item Since 2018, the package \ctanpkg{mathfont}%
+%
+\footnote{Conrad \textsc{Kosowsky}, \emph{Use TrueType and OpenType fonts in math mode}
+\url{https://ctan.org/pkg/mathfont}.}
+%
+adapts Unicode text fonts to usage in math mode. It works with both \XeTeX\
+and \LuaTeX.
+\item For \XeTeX\ only, \ctanpkg{mathspec}%
+%
+\footnote{Andrew Gilbert \textsc{Moschou}, \emph{Specify arbitrary fonts for mathematics in \XeTeX}
+\url{https://ctan.org/pkg/mathspec}.}
+%
+also allows usage of arbitrary text fonts in mathematics.
+\item and of course
+\ctanpkg{unicode-math}%
+%
+\footnote{Will \textsc{Robertson}, et al., \emph{Unicode mathematics with
+ support for XeTeX and LuaTeX} \url{https://ctan.org/pkg/unicode-math}.}
+%
+is the standard package for using OpenType fonts which are equipped with the needed extra
+support being used in \TeX\ math mode.
+\end{itemize}
+
+If using any one of the above you probably don't need, don't want, and should
+not use \mst.
+
+Let me insist that \mst has not been tested in any systematic
+manner under the Unicode engines; and that it is expected to be most definitely
+incompatible with \ctanpkg{unicode-math}, although your mileage may vary and some
+features may appear to work.
+
+When using \mst with either \XeTeX{} or \LuaTeX{} it is recommended to use the
+\ctanpkg{fontspec} package (see remark below on \cs{encodingdefault}). Furthermore,
+if using \ctanpkg{fontspec} it is \emph{necessary} to load it with its
+|no-math| option, and this \emph{must} happen before loading \mst.
+\begin{shaded*}
+\begin{itemize}[label=$\bullet$, leftmargin=1em]
+\item
+ Use \ctanpkg{fontspec} with its
+ \emph{no-math} option, and load it \emph{prior} to \mst. As some packages
+ load \ctanpkg{fontspec} themselves (for example |polyglossia|), a
+ \centeredline{|\PassOptionsToPackage{no-math}{fontspec}|} early in the
+ preamble might be needed.
+
+\item
+ The \ctanpkg{amsmath} package, if used, \emph{must} be loaded \emph{prior} to \mst.
+
+\item
+ Under |lualatex| engine, it is recommended to also load the package
+ \ctanpkg{lualatex-math}.% Please check its documentation as possibly it has now
+ % been incorporated upstream (I am not following up on the situation).
+\end{itemize}
+\end{shaded*}
+
+I already mentioned in the \autoref{sec:ic} the fact that
+the italic corrections were not available for OpenType fonts
+under the \XeTeX{} engine and only partially available for the
+\LuaTeX{} engine, with the result that the spacings in math
+mode when using for the letters an upright text font will be
+less satisfying than with the standard PDF\TeX{} engine (the
+OpenType fonts not being usable with the latter engine, this is
+not a criterion of choice anyhow).
+
+To define math versions when using unicode fonts, use \ctanpkg{fontspec}'s
+\cs{setmainfont} before the \cs{Mathastext}\oarg{version} command, or simply
+before loading \mst for the default math versions.
+
+It is possible to mix usage of Unicode fonts and classical \TeX{}
+fonts. All used 8bits font encoding must have been passed as
+options to the \ctanpkg{fontenc} package.
+
+\subsubsection{The unicodeminus option}
+
+For legacy reason, \mst uses by default the |EN DASH U+2013| for the minus
+sign in math mode, if the font is determined to be a ``Unicode'' font.
+
+There is now the unicodeminus\RightNote{\mstrelease{1.3q}} to use rather
+% BORDEL DE BORDEL DE FAIT CHIER \verb ET Text for \verb command ended by end
+% of line. je l'ai patch dans etoc et xint mais pas ici encore.
+|MINUS SIGN U+2212|.%
+\footnote{Thanks to Tobias~\textsc{Brink} who asked for this feature.}
+%
+Check \hyperref[nicodeminus]{\ttfamily\hyphenchar\font=189 its documentation}
+on page \pageref{nicodeminus}.
+
+\subsubsection{Two examples with OpenType fonts}
+
+\begingroup\def\MacroFont{\normalfont\footnotesize\ttfamily}
+I include
+here two examples which compiled successfully (a long time ago!) with \XeTeX{} and
+\LuaLaTeX{}, the first one on a Linux machine, the second one on a Mac
+OS X machine.
+\begin{verbatim}
+\documentclass{article}
+\usepackage[hscale=0.8]{geometry}
+\usepackage{multicol}
+\usepackage[no-math]{fontspec}
+\usepackage{lmodern}
+\usepackage[subdued,italic]{mathastext}
+\setmainfont[Color=999999]{Verdana} \Mathastext[Verdana]
+\setmainfont[Color=0000FF]{Arial} \Mathastext[Arial]
+\setmainfont[Color=00FF00]{DejaVu Serif} \Mathastext[DejaVu]
+\MTDeclareVersion{times}{T1}{ptm}{m}{n}
+\setmainfont[Color=FF0000]{Andale Mono} \Mathastext[Andale]
+\begin{document}
+\newcommand\TEST[1]{\MTversion{#1}%
+\begin{multicols}{2}
+\hbox to\columnwidth{\hbox to\columnwidth{\hfil
+ $abcdefghijklmnopqrstuvwxyz$\hfil}\kern-2.5em{#1}}
+ \centerline{ $ABCDEFGHIJKLMNOPQRSTUVWXYZ$ }
+ \centerline{ $0123456789$ }
+ \centerline{ $!\,?\,*\,,\,.\,:\,;\,+\,-\,=\,(\,)\,[\,]\,/\,\#\,%
+ \$\,\%\,\&\,<\,>\,|\,\{\,\}\,\backslash$ }
+\columnbreak
+ \centerline{ abcdefghijklmnopqrstuvwxyz }
+ \centerline{ ABCDEFGHIJKLMNOPQRSTUVWXYZ }
+ \centerline{ 0123456789}
+ \centerline{ !\,?\,*\,,\,.\,:\,;\,+\,-\,=\,(\,)\,[\,]\,/\,\#\,%
+ \$\,\%\,\&\,<\,>\,|\,\{\,\}\,\char92 }
+\end{multicols}}
+\begin{multicols}{2}
+ \centerline{\textbf{math mode}}
+\columnbreak
+ \centerline{ \textbf{text} }
+\end{multicols}
+\TEST{DejaVu}\TEST{Verdana}\TEST{times}\TEST{Andale}
+\TEST{Arial}\TEST{bold}\TEST{normal}
+\end{document}
+\end{verbatim}
+And now the same thing with fonts available on Mac OS X:
+\begin{verbatim}
+\documentclass{article}
+\usepackage[hscale=0.8]{geometry}
+\usepackage{multicol}
+\usepackage[no-math]{fontspec}
+\usepackage{lmodern}
+\usepackage[subdued,italic]{mathastext}
+\setmainfont[Color=FF0000]{Hoefler Text} \Mathastext[Hoefler]
+\setmainfont[Color=336633]{American Typewriter}\Mathastext[Typewriter]
+\setmainfont[Color=0000FF]{Herculanum} \Mathastext[Herculanum]
+\setmainfont[Color=FF00FF]{Didot} \Mathastext[Didot]
+\setmainfont[Color=999999]{Comic Sans MS} \Mathastext[Comic]
+\begin{document}
+ --- copy here the code from the previous example ---
+\TEST{Didot}\TEST{Comic}\TEST{normal}\TEST{Herculanum}
+\TEST{Hoefler}\TEST{Typewriter}\TEST{bold}
+\end{document}
+\end{verbatim}
+\endgroup
+
+
+\subsubsection{Compatibility with other packages}\label{sec:compat}
+
+Regarding the namespace of the package: all internal macros use
+\cs{mst@} (or \cs{ifmst@} for \TeX{} conditionals) as prefix. Almost all user
+commands have \cs{MT} prefix, the oldest ones
+may use \cs{Mathastext} or variants.%
+%
+\footnote{It is only years after initial release that I became aware that
+package \ctanpkg{mathtools} used \cs{MT\string_} prefix (with an underscore as
+shown) for most internal constructs, and sometimes \cs{MT@}, and those can not
+clash with our \cs{MT[a-z\string|A-Z]} for public commands and \cs{mst@} for
+internal macros. They do have however user commands \cs{MTFlushSpaceAbove} and
+\cs{MTFlushSpaceBelow}, but nothing else hence some retroactive relief.}
+
+Compatibility issues are often questions of who decides last. They are
+naturally to be expected with packages dealing with the math setting. The fix
+is simply to load \mst last. In particular one should \emph{always} load \mst
+\emph{after} \ctanpkg{amsmath} (this is especially needed with Unicode engines
+but applies in general as well).
+
+Any definition made in a package loaded before \mst of the font to be
+used for letters or for the common characters in the |ascii| basic range
+will be overruled by the loading of \mst.
+Conversely most of the set-up done by \mst may well be overruled by
+packages loaded later which do math related things.
+
+Starting with version \mstrelease{1.2}, \mst makes some characters
+`mathematically active' to achieve certain effects: automatic insertion of the
+italic corrections when using an upright text font in math (\autoref{sec:ic}),
+extended scope of the math alphabet commands which now apply to non-letter
+symbols (\autoref{sec:mathxx}; and also to math operator names, but this is
+much easier to achieve). And the (already mathematically active) right quote
+is modified to have some extra space added before the derivative glyph ${}'$
+(see \MTprimeskip).
+
+This mathematical activation is compatible with the \cs{label} and \cs{ref}
+commands in and outside of math mode.
+
+But a difficulty arises when some other package has
+made the character `catcode active' everywhere in the document. If it is
+detected for such a character that \mst wishes to make `mathematically active'
+that it is already `catcode active', \mst then checks if it is handling a Babel
+shorthand. If yes, it then hacks into \ctanpkg{babel} support macros for that
+character to let it do what it desires it to do in math mode. And it does not
+make the character mathematically active, to the contrary it makes sure
+that the character is \emph{not} mathematically active.
+
+\begin{footnotesize}
+ This last paragraph applies to the characters
+ {{;}\,{,}\,{:}\,{!}\,{?}\,{+}\,{\textendash}\,{=}\,{<}\,{>}\,{(}\,{)}\,{[}\,{]}*}
+ mentioned in \autoref{sec:mathxx} as `hard non-letters'. The right tick
+ (which is already mathematically active per default) is also handled via a
+ similar process, and in particular is tested for being a Babel shorthand
+ (which happens in particular with the Spanish language |activeacute| option).
+
+ The reason for avoiding in general for a catcode active character to be at
+ same time mathematically active is illustrated in next shaded box.
+
+ In the case of the Spanish active |'|, the advantage of \mst intervention to
+ reset its mathcode is that in case of a faulty input as a curly right tick
+ |U+8217| ', which \LaTeX{} will map to \cs{textquoteright} which itself
+ gives the catcode 12 |'|, it will show as curly quote in output not as prime
+ glyph, as \mst removes its mathematical activation. This complements the
+ \LaTeX{} warnings about \cs{textquoteright} being invalid in math mode.
+
+ The ascii letters can not have been made active by Babel interface (see code
+ comments of \cs{mst@do@activecase}) so if an ascii letter is catcode active
+ when \mst examines it, nothing will change to its meaning.
+
+ \CHANGED{\mstrelease{1.4}}At \mstrelease{1.4} these actions are done for
+ ascii letters at loading of the package or via \csb{MTmathactiveletters},
+ which is itself done by \csb{MTversion} when entering non-subdued math
+ version. Check documentation of \csb{MTmathactiveletters} for some relevant
+ details.\par
+\end{footnotesize}
+
+\begin{shaded*}
+\footnotesize
+On matters of \emph{mathematical} versus \emph{catcode} active character
+tokens, here is some code, not involving \mst, that you should \textbf{not}
+try at home:
+\begin{verbatim}
+ \documentclass{article}
+ \usepackage[french]{babel}
+ \usepackage{mathtools}\mathtoolsset{centercolon}
+ \begin{document}
+ $:$
+ \end{document}
+\end{verbatim}
+\fbox{DO NOT DO THIS AT HOME}\thinspace: it creates (with |pdflatex|) an infinite
+loop.
+% %
+% \footnote{This seems to still be the case with Babel |3.9f| and
+% frenchb.ldf |2.6e|, as tested on Sep. 2, 2013. Again tested with up-to-date
+% TL2015 Jan. 15, 2016 with same result. Again tested July 11, 2024 with
+% up-to-date TL2024 with the
+% same result.}
+% %
+This is due
+to the fact that the colon is simultaneously active (this is made by
+\ctanpkg{babel-french} at begin document) and mathematically active (done by
+\ctanpkg{mathtools} in the preamble). The interaction gives an infinite loop.
+%
+% Such a
+% situation will be cured by \mst, even loaded before \ctanpkg{mathtools},
+% \emph{if} use is made of \MTnonlettersobeymathxx.
+%
+% At each math formula
+% \mst will detect that Babel has activated the colon, and will cancel the
+% mathematical activation (the precise definition done by \ctanpkg{mathtools} was
+% already lost at begin document due to overwriting by \ctanpkg{babel} but the fact that
+% the character was mathematically active remained true).
+\par
+\end{shaded*}
+
+
+ Regarding mathematical activation, an incompatibility of
+ another type arose with \ctanpkg{amsmath}. To fix it, \mst now replaces
+ an inner macro of \ctanpkg{amsmath}
+ (\cs{resetMathstrut@}) with its own version.\\
+ \null\hspace{1cm}\fbox{Always load \ctanpkg{amsmath} before \mst.}
+
+\begin{footnotesize}
+ Actually this last commandment was already made necessary by the use of the
+ text endash to represent the minus sign in math mode, and, especially for
+ Unicode engines, some aspects of the \cs{DeclareMathOperator} macro from
+ \ctanpkg{amsmath}.\par
+\end{footnotesize}
+
+
+
+ \begin{shaded*}
+ \textcolor{magenta}{\bfseries New with 1.3i:} \mst patches |\url| of
+ packages \ctanpkg{url} and \ctanpkg{hyperref}, and also |\nolinkurl|, to force them
+ to do automatically \MTeverymathoff. Indeed they use math mode, and it
+ is better to turn \mst off for their dealings.
+
+ See the \MTeverymathoff documentation.
+ \end{shaded*}
+
+
+
+\subsection{Math alphabets}
+
+Let us first recall fundamental facts of life, in the
+ world of traditional PDF\TeX\ engine and \TeX\ fonts, as background for
+ understanding what \mst does in this context.
+ People familiar with using Unicode engines and \ctanpkg{unicode-math}, please be
+ aware that the semantics there of the \LaTeX\ math alphabet commands are
+ \textbf{significantly} modified!
+\begin{shaded*}
+\begin{itemize}
+\item In the default \LaTeX\ set-up all five of \mathrm, \mathbf,
+ \mathit, \mathsf and \mathtt tell \TeX\ to use for their arguments
+ specific \texttt{OT1}-encoded fonts.
+\item If the document body uses, as will be the case probably with any
+ language other than English or its variants, some other encoding such as
+ \texttt{T1} for its fonts, there is no change whatsoever to the math
+ configuration, indeed most font packages ignore it completely.
+\item It is thus a priori wrong to think of these commands as switching to
+ some body text font, although letters within their scopes will act as in a
+ text font, and in particular obey ligatures (this also applies to operator
+ names defined by |amsmath|'s \cs{DeclareMathOperator} which are, with some
+ extras not mentioned here, as using \mathrm).
+\item These commands are completely different in spirit from the \LaTeX\
+ \cs{textrm}, \cs{textbf}, and others, which change only some font axis;
+ indeed the math alphabet commands inherit from legacy Knuth's \cs{rm},
+ \cs{bf}, and others which are complete font specifiers.
+\item In particular when nesting, it is the inner-most which wins.
+\item Only mathematical characters (such as letters) which are declared to
+ \TeX\ as being of ``variable family type'' react to being in the argument of
+ a math alphabet command.
+\item Lowercase Greek letters are by default in \LaTeX\ immune to math
+ alphabets (so \verb|\mathrm{\pi}| induces no change in output), but the
+ eleven uppercase Greek letters are of ``variable family type'' because they
+ are picked in the \texttt{OT1}-encoded font also used for operator names
+ (the one to which \mathrm maps), \emph{and they occupy the exact same
+ slots in the \emph{\texttt{OML}}-encoding to which} \mathnormal maps! So
+ in default \TeX, \verb|\mathnormal{\Gamma}| gives a slanted glyph. The slots
+ occupied in \texttt{OML}-encoding by the lowercase Greek letters (to which
+ encoding they are a priori assigned) give
+ completely unrelated glyphs in the \texttt{OT1}-encoding, so it makes sense
+ that the default \LaTeX\ declares lowercase Greek to not react to math alphabets.
+ Notice though, that if \LaTeX\ had declared a \cs{mathnormalbold}, mapping
+ to a bold \texttt{OML}-encoded font, it would have made sense to also have
+ \cs{alpha}, \cs{beta}, etc... be of ``variable family type''.
+\item But of course even if |\pi| is of such ``variable family type'' then
+ |\mathbf{\pi}| will give garbage because the default \mathbf selects an
+ \texttt{OT1}-encoded font, where there is no pi glyph whatsoever and in
+ particular not at the slot (which is 25) of $\pi$ in the \texttt{OML} encoding!
+\end{itemize}
+\end{shaded*}
+
+Please keep all the above in mind when trying to understand what \mst does
+with math alphabets. The most significant point described next naturally is that
+\mst will sync \mathnormal, \mathrm, \mathbf, \mathit, \mathsf and
+\mathtt to map to the \mst-ified body text fonts.
+ \begin{itemize}
+ \item \mathnormal, \mathrm, \mathbf, \mathit,
+ \mathsf and \mathtt are modified to use the \mst-ified
+ text fonts; this can be disabled via defaultalphabets and
+ related individual options, but the package always provides
+ \Mathnormal, \Mathrm, etc..., to match the \mst font
+ configuration (\RLNote{changed:}{\mstrelease{1.3za}}prior to \mstrelease{1.3za}
+ defaultalphabets and related options also caused the \mst
+ alphabet commands not to be defined). Recall that there may
+ arise a ``too many math alphabets'' error if too many of these
+ commands are \emph{used} in the document:
+ \emph{declaring} them is not by itself the cause of the error. See the
+ \LaTeX\ news entry of its \texttt{2021-11-15} release for
+ the counter \texttt{localmathalphabets} (with default value 2)
+ which can be now be used if one hits such a difficulty.
+ \item We define a new math alphabet command
+ \mathnormalbold which gives direct access to
+ the bold version of the \mathnormal alphabet
+ (rather than using either the \cs{bm} command from
+ the \ctanpkg{bm} package or the \cs{boldsymbol} command
+ from the \ctanpkg{amsbsy} package). As it does not
+ exist in the default \LaTeX{} math font set-up, this
+ alphabet is \emph{not} subjected to the {subdued option} action.
+
+\item Version \RightNote{\mstrelease{1.2}}\mstrelease{1.2} of \mst has extended the scope of the math
+ alphabets to apply to non-alphabetical characters and to
+ operator names. This respects the automatic white spaces
+ added by \TeX{} around math symbols. See the devoted \autoref{sec:mathxx}.
+\item The optional\RightNote{\mstrelease{1.3i}}
+ extra skips around letters (see \autoref{sec:mathskips} and
+ \autoref{sec:ic}) are removed in the scope of the math alphabets.
+
+ \item Depending on options, further math alphabet commands
+ are defined by the package: \MathEulerBold,
+ \MathEuler, \MathPSymbol, and since \mstrelease{1.3y} under
+ the LGRgreek family of options\RightNote{\mstrelease{1.3y}} also
+ \mathgreekup and \mathgreekit. See
+ \autoref{sec:newgreek}. And also \mathgreekupbold and
+ \mathgreekitbold under the LGRgreek family of
+ options.\RightNote{\mstrelease{1.3za}}
+
+ \item With\RightNote{\mstrelease{1.3za}} the LGRgreek+ option
+ which enhances Greek letters with a specific behavior when in the
+ arguments of the \mathrm, \mathbf, etc..., math alphabet
+ commands, this special behavior is not triggered by the \Mathrm,
+ \Mathbf, et al., which are genuine unmodifed math alphabet commands. See
+ \autoref{sec:newgreekplus}.
+ \end{itemize}
+
\subsection{Math versions}\label{sec:mathversions}
@@ -2972,13 +2789,13 @@ It is still possible to switch on via \MTversion in the document body
\footnote{When not using math versions at all (so not using \texttt{subdued}
mode either) another way to achieve distinct fonts in text and math is
naturally to modify the document text font \emph{after} having loaded \mst (or
-after last usage of \cs{Mathastext} without optional argument).
-Another way is to use \cs{MTfamily}, \cs{MTencoding}, \cs{MTseries},
-\cs{MTshape}, \cs{MTlettershape} in the preamble before a call to
-\cs{Mathastext} which will configure math fonts without having modified the
+after last usage of \csb{Mathastext} without optional argument).
+Another way is to use \csb{MTfamily}, \csb{MTencoding}, \csb{MTseries},
+\csb{MTshape}, \csb{MTlettershape} in the preamble before a call to
+\csb{Mathastext} which will configure math fonts without having modified the
document text fonts. However if one does \texttt{\string\MTversion\{normal\}}
in the document then the text font will be reset to what was recorded as math
-font by the \cs{Mathastext} call in the preamble (as said above, when not
+font by the \csb{Mathastext} call in the preamble (as said above, when not
using \texttt{subdued} option).}
The native \LaTeX{} command \cs{mathversion}\marg{version\_name} would change
@@ -3000,19 +2817,19 @@ For all math versions if not using the subdued option, or only
for the non-\emph{normal} and non-\emph{bold} math versions if
using the subdued option, \cs{MTversion} does further additional tasks:
\begin{itemize}
-\item it resets\RightNote{1.3u} the \hbar, \cs{imath}
+\item it resets\RightNote{\mstrelease{1.3u}} the \hbar, \cs{imath}
(see \inodot), \cs{jmath}, math accents (see option
mathaccents) and minus sign as en dash according to the used
font encoding for the \mst-ified text font,
-\item (see sections \ref{sec:mathskips} and \ref{sec:ic}) it re-issues the
+\item (see \autoref{sec:mathskips} and \autoref{sec:ic}) it re-issues the
command \MTmathactiveletters to let a to z, A to Z, be mathematically
active in order to automatically insert the skips as defined by the user
with \MTsetmathskips, and the italic corrections (if the font is not
italic or slanted),
-\item (see section \ref{sec:extraskips}) it resets the extra spaces after the
+\item (see \autoref{sec:extraskips}) it resets the extra spaces after the
symbols $\exists$, $\forall$ and before the derivative ${}'$ to the values as
decided by the user in the preamble on a \emph{per version} basis,
-\item (see section \ref{sec:mathxx}) it re-issues the commands
+\item (see \autoref{sec:mathxx}) it re-issues the commands
\MTmathoperatorsobeymathxx and \MTeasynonlettersobeymathxx to let
the math operator names and (`easy') non letter characters obey the math
alphabets,
@@ -3058,8 +2875,9 @@ provided by \mst:
package, Greek letters are the default Computer
Modern ones or have been set-up by other packages;
for example by the \ctanpkg{fourier} package with option
- `upright', which gives upright Greek letters.
-\item[LGRgreek:] (this was substantially updated at |1.3x|, make sure to
+ `upright', which gives upright Greek letters
+ or by the author \ctanpkg{lgrmath} package.
+\item[LGRgreek:] (this was substantially updated at \mstrelease{1.3y}, make sure to
read the new documentation at \autoref{sec:newgreek})
this option is for fonts which additionally to Latin
letters also provide Greek letters in |LGR| encoding. Here is
@@ -3088,7 +2906,7 @@ provided by \mst:
If you use the italic option note that the italic Greek
letters from the |cbfonts| are not the same glyphs as
the default Greek letters from the |OML| encoded font |cmmi|.
-\item[LGRgreek+:] \RightNote{1.3za}extends LGRgreek to allow abusive
+\item[LGRgreek+:] \RightNote{\mstrelease{1.3za}}extends LGRgreek to allow abusive
usage of \cs{mathrm} and alike commands with Greek letters.
This is very much not in the spirit (especially with traditional
``8bit'' \TeX\ fonts) of the \LaTeX\ kernel concept of math alphabet
@@ -3146,17 +2964,17 @@ from the lowest to the highest priority:
the digits and operator names (most of the time this means ``upright
shape'', but it can be otherwise),
\item[itgreek]: says that Greek letters (both lowercase and uppercase) will
- be in `|it|' shape. \RLNote{changed:}{1.3x}More precisely the expansion of
+ be in `|it|' shape. \RLNote{changed:}{\mstrelease{1.3y}}More precisely the expansion of
\MTgreekitdefault is used.
- This was changed at |1.3x|, formerly the value of \cs{itdefault} which was in
+ This was changed at \mstrelease{1.3y}, formerly the value of \cs{itdefault} which was in
force at the time of using \Mathastext (or at time of loading the package
if no use is made of \Mathastext) was used.
\item[upgreek]: says that Greek letters (both lowercase and uppercase) will
- be in `|n|' shape. \RLNote{changed:}{1.3x}More precisely the expansion of
+ be in `|n|' shape. \RLNote{changed:}{\mstrelease{1.3y}}More precisely the expansion of
\MTgreekupdefault is used.
- This was changed at |1.3x|, formerly the value of \cs{updefault} which was in
+ This was changed at \mstrelease{1.3y}, formerly the value of \cs{updefault} which was in
force at the time of using \Mathastext (or at time of loading the package
if no use is made of \Mathastext) was used. But since \LaTeX{}
|2020-02-02| this caused many Font Warnings in the log because
@@ -3187,7 +3005,7 @@ font family available in |LGR| encoding: for example |lmr|,
|DejaVuSerif-TLF| (needs \ctanpkg{dejavu} package on your system),
etc\dots
-\begin{framed}
+\begin{shaded*}
\MTitgreek, \MTupgreek, \MTitGreek, \MTupGreek
have some effect only if one of the LGRgreek, LGRgreeks,
selfGreek or selfGreeks options was passed to the package.
@@ -3198,14 +3016,14 @@ etc\dots
\MTgreekfont has an effect only for LGRgreek and selfGreek. It is
without any effect with LGRgreeks and selfGreeks.
-\end{framed}
+\end{shaded*}
\subsubsection{Control sequences to access directly upright or italic
shape for Greek under \texttt{LGRgreek} option}
\label{sec:newgreek}
-Some changes were made at |1.3x| to enhance the LGRgreek (and LGRgreeks)
+Some changes were made at \mstrelease{1.3y} to enhance the LGRgreek (and LGRgreeks)
options with new features. Everything which will be explained here applies
only to these two options.
@@ -3224,7 +3042,7 @@ command in the preamble (possibly with \oarg{version\_name} optional
argument). Their default definitions are to expand to `|n|' and `|it|'
respectively. They can also be defined prior to loading \mst.
-See\RightNote{1.3x} the \autoref{table:greekup} and \autoref{table:greekit}
+See\RightNote{\mstrelease{1.3y}} the \autoref{table:greekup} and \autoref{table:greekit}
for illustrations (using here the Libertinus Serif font).
\begin{table}[htbp]
\MTversion{libertinus}
@@ -3364,7 +3182,7 @@ etc\dots\ options or \MTitgreek et al.\@ commands. This is on a per \mst-enri
math version basis, depending only on how the options or commands were used
in the preamble.
-Furthermore\RightNote{1.3x} two math alphabets are provided
+Furthermore\RightNote{\mstrelease{1.3y}} two math alphabets are provided
\centeredline{\mathgreekup}
\centeredline{\mathgreekit}
which can be used to map a letter to the corresponding Greek fonts:
@@ -3379,14 +3197,14 @@ which can be used to map a letter to the corresponding Greek fonts:
\centeredline{$\mathgreekit{W}=\mathgreekit{\Omega}=\mathgreekit{\Omegaup}=\Omegait$}
}
-Some\RightNote{1.3x} refactoring%
+Some\RightNote{\mstrelease{1.3y}} refactoring%
%
\footnote{Technically, formerly two symbol fonts were declared, one for the
lowercase Greek letters and one for the uppercase Greek letters; now those
are dropped and replaced by two symbol fonts, one for `italic' Greek letters,
the other for `upright' Greek letters.}
%
-was required to achieve this at |1.3x|
+was required to achieve this at \mstrelease{1.3y}
and it is not 100\% backwards compatible: if none of the itgreek etc\dots\
things was used, the Greek letters formerly would follow the shape of Latin
letters (for lowercase Greek) and of operator names (for uppercase Greek).
@@ -3414,10 +3232,10 @@ compatibility.
\subsubsection{\cs{mathgreekupbold} and \cs{mathgreekitbold}}
\label{sec:newgreekbold}
-Again this applies only to LGRgreek and LGRgreeks options (and the |1.3za|
+Again this applies only to LGRgreek and LGRgreeks options (and the \mstrelease{1.3za}
added LGRgreek+ and LGRgreeks+).
-See\RightNote{1.3za} the \autoref{table:greekupbold} and \autoref{table:greekitbold}
+See\RightNote{\mstrelease{1.3za}} the \autoref{table:greekupbold} and \autoref{table:greekitbold}
for illustration of usage (in math mode only) of code such as
\begin{verbatim}
\mathgreekupbold{\alpha}
@@ -3594,7 +3412,7 @@ commands on Latin letters also:
the \texttt{LGRgreek+} option}
\label{sec:newgreekplus}
-With option\RightNote{1.3za} LGRgreek+ or LGRgreeks+, \mst makes Greek
+With option\RightNote{\mstrelease{1.3za}} LGRgreek+ or LGRgreeks+, \mst makes Greek
letters control sequences \cs{alpha}, \cs{beta}, ... (but not \cs{alphaup} or
\cs{betait} and the others) react in a special manner within the scope of
\mathnormal, \mathrm, \mathit, \mathbf, and \mathnormalbold, but not
@@ -3671,15 +3489,24 @@ fonts having only 128 or 256 glyphs, and from the fact that \mathrm and
\mathbf originate in Plain \TeX\ \cs{rm} and \cs{bf} and are still quite
akin to it, they are font switching commands nothing more or less.
+\subsection{Advanced capacities}
+
+Some such capacities are on per default (but if with subdued option will be
+turned off in the \emph{normal} and \emph{bold} math versions), others require
+an action from the user for activation.
-\subsection{Extra spaces around letters}
+\subsubsection{Extra spaces around letters}
\label{sec:mathskips}
-This is a new feature added with release |1.3|: the command \MTsetmathskips
-allows the user to set up some spaces (more precisely, `mu glue'; but stretch
-and shrink are discarded) to be
-automatically inserted around the letters in math mode. Some (very) unrealistic
-uses:
+This is a new feature%
+%
+\footnote{It was new in 2013 indeed. Not so much new now, but it is never too
+late to try it out.}
+%
+added with release \mstrelease{1.3}: the command \MTsetmathskips allows the
+user to set up some spaces (more precisely, `mu glue'; but stretch and shrink
+are discarded) to be automatically inserted around the letters in math
+mode. Some (very) unrealistic uses:
\begin{verbatim}
% this may be anywhere in the document (also within a math group):
\MTsetmathskips{x}{20.33mu}{15.66mu}% 20.33mu before all x's and 15.66mu after.
@@ -3699,28 +3526,25 @@ limits as usual the scope of this command. Furthermore the command
\MTunsetmathskips cancels previous use of \cs{MTsetmathskips} for a given
letter.
-The implementation relies on the `mathematical activation' of letters, which is
-done by default by the package since release |1.2b|. Should this cause
-compatibility problems, the command \MTmathstandardletters cancels it
+The implementation relies on the `mathematical activation' of letters, which
+is done by default by the package since release \mstrelease{1.2b}. Should this
+cause compatibility problems, the command \MTmathstandardletters cancels it
entirely. To reactivate it, there is \MTmathactiveletters. Note that
-\cs{MTmathactiveletters} is done automatically by \mst when loaded, and also
-each time the package enhanced math-version-switch command \MTversion is used,
-except for the normal and bold math versions under the subdued option.
-
-% Earlier this `mathematical activation' of letters had been used by the package
-% only to add automatically italic corrections, as described in the next
-% section.
+\MTmathactiveletters is done automatically (as part of \MTicinmath) by
+\mst when loaded (if not with subdued option), and also each time the
+package enhanced math-version-switch command \MTversion is used, except for
+the normal and bold math versions under the subdued option.
-\begin{framed}
+\begin{shaded*}
The extra skips are set at natural width; they do not contribute to the
overall stretchability or shrinkability of the math formula and do not
create break points.
- \textcolor{magenta}{\bfseries Changed with |1.3i|}: they are \emph{not}
+ \textcolor{magenta}{\bfseries Changed with \mstrelease{1.3i}}: they are \emph{not}
applied within the scope of math alphabet commands.
-\end{framed}
+\end{shaded*}
-\subsection{Italic corrections}
+\subsubsection{Background on italic corrections in math mode}
\label{sec:ic}
{\small Note: this is somewhat technical discussion which may well be skipped in
@@ -3824,9 +3648,14 @@ $\xdef\mstrestorefontdimen{\fontdimen2\textfont\symmtletterfont=
We learn in Appendix G of the \TeX book that the italic correction is used for
the horizontal shift of the superscript with respect to the position of
-the subscript: $\mathit{f_i^j}$, or,
+% CETTE LIGNE PROVOQUE L'AJOUT D'UN LINESKIP
+% the subscript: $\mathit{f_i^j}$, or,
+% En fait dj en Plain TeX, configuration de base la hauteur totale de
+% $f_i^j$ est > 12pt = baselineskip !
+% Work-around ad hoc
+the subscript: \smash{$\mathit{f_i^j}$}, or,
going back now to the standard math italics $f_i^j$. In the next paragraphs
-we use $f_i^i$ for more accurate comparison of the positioning of the sub- and superscript.
+we use \smash{$f_i^i$} for more accurate comparison of the positioning of the sub- and superscript.
If we try something like this: |${f\/}_i^i$| we obtain ${f\/}_i^i$. Our
overlapping game with |\rlap{$f_i^i$}${f\/}_i^i$| gives
@@ -3889,15 +3718,10 @@ to preserve this behavior).
italic corrections are canceled inside the arguments to the math alphabet
commands, to allow the formation of ligatures as
is expected in the standard default \TeX{} font set-up in math.%
-% \footnotemark
-% \global\let\saved@Href@B\Hy@footnote@currentHref
\end{framed}\vskip-.75\baselineskip
\end{framed}
-%\addtocounter{footnote}{-1}%
-%\let\Hy@footnote@currentHref\saved@Href@A
-%
\footnotetext{the situation is rather ironical! by the way, the warnings in
- section \ref{sec:mathxx} with \texttt{\$x\^{}?\$} or similar are less of an
+ \autoref{sec:mathxx} with \texttt{\$x\^{}?\$} or similar are less of an
issue here, because the letter is only \emph{followed} by \texttt{\char92/}
and anyhow the whole is put by \mst within group braces, so no surprises
with \texttt{\$x\^{}y\$} or \texttt{\$\char92mathbin x\$}. Nevertheless it
@@ -3905,16 +3729,10 @@ to preserve this behavior).
composite objects, something which could surprise other packages. The
command \csb{MTmathstandardletters} cancels this mechanism.}
-%\addtocounter{footnote}{1}%
-% \let\Hy@footnote@currentHref\saved@Href@B
-%
-% \footnotetext{\RightNote{1.3i}Formerly, italic corrections were added to the
-% \cs{mathnormal} arguments.}
-
\makeatother
The feature-implementing commands \MTicinmath, \MTnoicinmath,
-\MTicalsoinmathxx are described in section \ref{sec:cmds}.
+\MTicalsoinmathxx are described in \autoref{sec:cmds}.
\endgroup
\textbf{\hbox{Note:}} \emph{from brief testing on 2012/12/28, \XeTeX{} seems not
@@ -3944,11 +3762,7 @@ at least on current TL2016.
\noindent\kern-0.5em\relax2022/10/29: no change with current TL2022.}
-% For more see
-% \url{http://tex.stackexchange.com/a/337076} which explores also the differences
-% between the two Unicode engines regarding italic corrections in pure text mode.
-
-\subsection{Extra glue after \texorpdfstring{\cs{exists}}{\textbackslash
+\subsubsection{Extra glue after \texorpdfstring{\cs{exists}}{\textbackslash
exists}, \texorpdfstring{\cs{forall}}{\textbackslash forall}, and before the prime glyph}
\label{sec:extraskips}
@@ -3998,21 +3812,16 @@ Under the subdued option, the \emph{normal} math version (at the start of
the document body, or after |\MTversion{normal}|) and the \emph{bold} math
version (either at the start of the document body after \cs{boldmath}, or after
|\MTversion{bold}|) do not have any extra skip inserted (even one of zero
-width) after $\oldforall$, $ \oldexists$, or before the ${}'$.%
-%
-%\footnote{\RightNote{1.3j}Formerly, skips of zero widths were inserted.}
+width) after $\oldforall$, $ \oldexists$, or before the ${}'$.
\endgroup
-
-\subsection{Extended scope of the math alphabets commands}
+\subsubsection{Extended scope of the math alphabets commands}
\label{sec:mathxx}
\begingroup
\MTversion{italic}\renewcommand\familydefault\sfdefault
-% il faudra peut-tre que j'annule cette faon qu' mathastext de tripatouiller
-% \familydefault...
-\makeatletter\let\mst@doasterisk\relax\makeatother
+\MTnormalasterisk
Ever since the initial version of the package, some characters usually
unaffected by the math alphabet commands \cs{mathbf}, \cs{mathtt},
@@ -4027,21 +3836,31 @@ $<$, or $]$ could not be declared of `variable family' (in addition to being
picked up in the text font) as this would, for reasons of the inner workings of
\TeX{}, not be compatible with the automatically inserted spaces around them.
-A revolutionary\RightNote{1.2} ;-) novelty is introduced with version |1.2| of the package:
+A revolutionary\RightNote{\mstrelease{1.2}} ;-) novelty is introduced with
+version \mstrelease{1.2} of the package:
\begin{enumerate}
\item the pre-declared or user-declared (using the |amsmath|
\cs{DeclareMathOperator} or equivalent) operator names obey the math
alphabet commands,\footnote{contrarily to the next feature, this one is not
likely to create incompatibilities with other packages, so it is
activated by default.}
-\item and, \emph{optionally}, all non alphabetical
- characters\footnote{of course some of them are input preceded by a
- backslash, and the backslash itself is input as \cs{backslash}.} treated by
- \mst, \emph{i.e.}, if not disabled by options,
- ${!}\,{?}\,{,}\,{:}\,{;}\,{+}\,{-}\,{=}\,{(}\,{)}\,{[}\,{]}\,{<}\,{>}\,{\{}\,{\}}$,
- the asterisk $*$, and
- $.\,/\,\vert\,\backslash\,{\#}\,{\$}\,{\%}\,{\&}$%
-%
+\item as well as all non alphabetical characters treated by \mst.
+\end{enumerate}
+
+The non-letters handled by \mst (if not disabled by options) fall into two
+groups:
+\begin{itemize}[nosep]
+\item Those to which \TeX{} associates some specific spacings:
+ \centeredline{${!}\,{?}\,{,}\,{:}\,{;}\,{+}\,{-}\,{=}\,%
+ {(}\,{)}\,{[}\,{]}\,{<}\,{>}\,{\{}\,{\}}\,*$}
+ We call them the ``hard'' ones.
+\item Those for which \TeX{} uses so-called ordinary spacings:
+ \centeredline{$.\,/\,\vert\,\backslash\,{\#}\,{\$}\,{\%}\,{\&}$}
+ We call them the ``easy'' ones.
+\end{itemize}
+The ``easy'' non-letters are handled \emph{easily} by \mst, simply
+by declaring them to be of ``variable family type''. This will
+be done automatically.%
\footnote{%
${\#}\,{\$}\,{\%}\,{\&}$ obey the math alphabets since the initial version
of \mst; the dot $.$, the slash $/$, the vertical bar $\vert$ and the
@@ -4049,431 +3868,326 @@ A revolutionary\RightNote{1.2} ;-) novelty is introduced with version |1.2| of t
around them, and the procedure is then activated by default since
\texttt{1.2} for these characters as they are `easy non-letters'. But for
\cs{mid} and \cs{setminus} which are $\vert$ and $\backslash$ with special
- spacing (of type \cs{mathrel} and \cs{mathbin} resp.) the procedure has
- some constraints explained in the framed box on next page and the
- activation requires \cs{MTnonlettersobeymathxx}.}
+ spacing (of type \cs{mathrel} and \cs{mathbin} resp.) the
+ activation requires \csb{MTnonlettersobeymathxx}.}
%
-will also obey
- the math alphabet commands (when not used as delimiters). The
- important thing is that the spaces added by \TeX{} before and after
- are not modified.
-\end{enumerate}
+The ``hard'' non-letters require a more complex approach using a concept
+called ``mathematical activation''. For reasons explained next, this is not
+done automatically and requires the user to employ the command
+\MTnonlettersobeymathxx (or, for the specific case of the asterisk the option
+asterisk).
+
+\begin{shaded*}
+ It is a fundamental feature that the spacing added by \TeX{} before and
+ after each such \mst-ified non-letter is in no way modified.
+\end{shaded*}
+
+
Let us compare, for example, the new behavior of \cs{mathtt} and \cs{mathbf}
-\MTmathoperatorsobeymathxx\MTnonlettersobeymathxx\MTeasynonlettersobeymathxx
-\[ \mathtt{(\sin(n!)<\cos(m-p)?)}\qquad \mathbf{[\sin(x+y)=\cos(z-t)]}\]
-with the traditional default behavior:
-\MTmathoperatorsdonotobeymathxx\MTnonlettersdonotobeymathxx
+when \MTnonlettersobeymathxx has been used
+\MTmathoperatorsobeymathxx
+\MTnonlettersobeymathxx
+\MTeasynonlettersobeymathxx
+\[ new:\quad \mathtt{(\sin(n!)<\cos(m-p)?)}\qquad \mathbf{[\sin(x+y)=\cos(z-t)]}\]
+with the traditional default behavior one observes without \mst or in
+subdued normal or bold math version:
+\MTmathoperatorsdonotobeymathxx
+\MTnonlettersdonotobeymathxx
\MTeasynonlettersdonotobeymathxx
-\[ \mathtt{(\sin(n!)<\cos(m-p)?)}\qquad \mathbf{[\sin(x+y)=\cos(z-t)]}\]
-
-The first feature is activated by default, except of course for the normal and
-bold math versions when the package was given the \emph{subdued} option. The
-second feature is \emph{off} by default for the characters listed first. It is
-\emph{on} for the `easy' cases
-${\#}\,{\$}\,{\%}\,{\&}\,.\,/\,\vert\,\backslash$ (activating the feature for
-them puts no constraint on the user input and should not be too upsetting to
-other packages), and also for $*$ but only if this was required explicitly by
-the option asterisk, as the user then is supposed to know that |$R^*$| is no
-valid input anymore and should be replaced by |$R^{*}$|. The remaining `difficult'
-cases create similar
-constraints, which will be commented more upon next. The commands%
-\footnote{these commands are to be used outside of math mode.
- Their scope is limited to the current \LaTeX{} environment or group. They use
- the \cs{everymath} and \cs{everydisplay} mechanism so if the document needs to
- modify these token lists it has to do so in a responsible manner, extending
- not annihilating their previous contents.}
-%
-for deactivation are:\\
+\[ standard:\quad \mathtt{(\sin(n!)<\cos(m-p)?)}\qquad \mathbf{[\sin(x+y)=\cos(z-t)]}\]
+
+The commands for
+\emph{deactivation} are:\\
\mbox{}\hspace{1cm}\csb{MTmathoperatorsdonotobeymathxx},\\
\mbox{}\hspace{1cm}\csb{MTeasynonlettersdonotobeymathxx},\\
\mbox{}\hspace{1cm}\csb{MTnonlettersdonotobeymathxx},\\
-and those for activation:\\
-\mbox{}\hspace{1cm}\csb{MTmathoperatorsobeymathxx} regards operator names and is executed by default,\\
-\mbox{}\hspace{1cm}\csb{MTeasynonlettersobeymathxx} is done by default and applies to \centeredline{${\#}\,{\$}\,{\%}\,{\&}\,.\,/\,\vert\,\backslash$} and also to $*$ under package option asterisk,\\
-\mbox{}\hspace{1cm}\csb{MTnonlettersobeymathxx} is \emph{not} done by default (see explanations why in the framed box next) and regards \centeredline{${!}\,{?}\,{,}\,{:}\,{;}\,{+}\,{-}\,{=}\,{(}\,{)}\,{[}\,{]}\,{<}\,{>}$} and also \cs{mid} and \cs{setminus} but applies to
-the braces ${\{}\,{\}}$ only if \csb{MTexplicitbracesobeymathxx} is also used.\par
-%
-%% suppression de cette note de bas de page 1.3u car elle est obsolte
-%% (pas sr si 100%, mais en tout cas l'exemple avec \mathbf{-} n'a plus
-%% de problme.
-% \footnote{when in subdued mode, the
-% math alphabets are the default ones, not the ones modified by \mst to use the
-% document text fonts. As a result, matters of font encodings may then give
-% unexpected results, for example for $-$. On the present document page we
-% switched to a math version to escape from the |subdued| mode and avoid the
-% problem with \cs{mathbf\{-\}} giving in the normal (subdued) math version
-% {\MTversion{normal}\MTnonlettersobeymathxx$\mathbf-$\sffamily, when
-% `non-letters' are declared to obey math alphabets.}}
+and those for \emph{activation}:\\
+\mbox{}\hspace{1cm}\csb{MTmathoperatorsobeymathxx} (done by default),\\
+\mbox{}\hspace{1cm}\csb{MTeasynonlettersobeymathxx} (done by default),\\
+\mbox{}\hspace{1cm}\csb{MTnonlettersobeymathxx} is \emph{not} done by default
+(see explanations why in the shaded box next) and applies to the ``hard''
+non-letters mentioned above and also to \cs{mid} and \cs{setminus}.
+Furthermore, it applies to
+the braces ${\{}\,{\}}$ only if \csb{MTexplicitbracesobeymathxx} is also used.
+
+
+\begin{shaded*}
+ \textbf{Important:} the package does not execute on its own
+ \csb{MTnonlettersobeymathxx}. The reason is that the
+ mechanism in effet replaces the original ``hard'' characters such as
+ |?|, |[|, |<| by (in math mode only) a more complex structure, which
+ ceases looking to \TeX{} as only one token, and as a consequence |$x^?$|, |$R^+$|
+ or |$\mathopen<A\mathclose>$| raise an error, the workaround being to
+ employ additional braces: |$x^{?}$|, |$R^{+}$| and |$\mathopen{<}A\mathclose{>}$|.
+
+ Similarly |$R^*$| does not work anymore under option asterisk, the user is
+ supposed to know that with this option |$R^{*}$| is the mark-up to use.
+
+ Thus, if one adds
+ \centeredline{|\usepackage{mathastext}|\MTnonlettersobeymathxx} to a
+ pre-existing document, it is needed to check if the mark-up satisfies
+ to the above guidelines. For this reason the mechanism is by default
+ not activated and the user has to execute:
+ \centeredline{\MTnonlettersobeymathxx}
+ This can be done in the preamble and will trigger actual modifications
+ only at time of |\begin{document}|.
+\end{shaded*}
-\begin{framed}
- \textbf{Important:} the package does \csb{MTnonlettersdonotobeymathxx} by
- default. The reason is that activating the mechanism adds some constraints to
- the way things must be input, adding
-\centeredline{|\usepackage{mathastext}|\csb{MTnonlettersobeymathxx}}
- to a pre-existing
- document might well create errors:
- all these characters treated by \mst, such
- as |?|, |[|, |<| now represent (in math mode only!) \emph{two} `tokens' and
- this will utterly confuse \TeX{} if some precautions are not taken: |$x^?$|,
- |$R^+$| or |$\mathopen<A\mathclose>$| \emph{must} now be coded as |$x^{?}$|,
- |$R^{+}$| and |$\mathopen{<}A\mathclose{>}$| (the rule is to do as if |?|,
- |+|, |<| or |>| were each really \emph{two} characters).
-
- Even if this rule is respected in the document source, it is still a
- possibility that incompatibilities with other packages will arise because
- \mst does a \emph{mathematical activation} of the characters which could be
- unexpected and unchecked for by other packages. This is precisely the case
- with the \ctanpkg{amsmath} package, and the problem goes away by just making sure
- that |amsmath| is loaded before \mst{} (generally speaking, \mst should be
- loaded last after all packages dealing with math things).
-\end{framed}
+
+\begin{footnotesize}
+Some \TeX nical notes:%
+%
+\footnote{The complete truth is only to be found in source code. Here are
+ some extra details:
+
+ The
+ dollar sign and the curly braces are not tested for mathematical or catcode
+ activation.
+
+ The $*$\RLNote{changed:}{\mstrelease{1.4}} is tested as
+ are the ``hard'' non-letters, except under option everymath. On the
+ other hand \cs{ast} will be modified independently of what is decided for
+ $*$. Comprenne qui pourra.}
+
+\begin{itemize}[nosep]
+\item
+The asterisk $*$ is associated with its own option asterisk, because
+independently of the matter of its behavior in the scope of math alphabets
+commands, its handling by \mst (via the \MTlowerast associated
+configuration) always requires it to be made mathematically active and to
+expand to a more complex structure. So once this option is received by the
+package, it goes full steam and also adds by default the responsiveness to
+math alphabet commands (in non-subdued math versions).
+
+\item The legacy situation which is a bit late to change is that the
+ responsiveness of the asterisk to math alphabets being on by default under
+ option asterisk, it was decided that this responsiveness would be turned
+ off by \MTeasynonlettersdonotobeymathxx and back on by
+ \MTeasynonlettersobeymathxx, although the $*$ is part of the ``hard''
+ non-letters. One can use \MTnormalasterisk to stop the $*$ to obey math
+ alphabet commands, but it also cancels the \MTlowerast mechanism.
+
+\item At\RLNote{changed:}{\mstrelease{1.4}} \mstrelease{1.4} ``easy''
+ non-letters found out to be (at |\begin{document}| or with \MTversion
+ except for subdued \emph{normal} or \emph{bold}) mathematically active
+ characters will not get overridden by \mst.
+ This applies for example with
+ the dot ``.'' under \ctanpkg{babel} with Spanish language. Its special
+ behavior to transform into a comma ``,'' if before a digit is now
+ kept. As an amusing side note, if \MTnonlettersobeymathxx is used, this
+ comma does obey math alphabet commands.
+
+\item An ``easy'' non-letter which (at |\begin{document}| or with \MTversion
+ except for subdued \emph{normal} or \emph{bold}) is catcode active will
+ still be set by \mst to be of ``variable family type'', if it is not
+ mathematically active. The catcode status is not checked nor modified, only
+ the mathcode as per previous item. Now whether the \mst-ification has any
+ effect depends on how the user has configured the catcode active character
+ to behave if in math mode.
+
+\item When \mst wants to employ mathematical activation for a non-letter
+ character among the ``hard'' cases (inclusive of the asterisk), which is done
+ at |\begin{document}| if not subdued or with every \MTversion except for
+ subdued \emph{normal} or \emph{bold}, it first checks if this character
+ is currently catcode active. If this is the case, it then checks if the
+ character is a \ctanpkg{babel} shorthand. If yes, it then hooks into
+ \ctanpkg{babel} internals to modify the way this shorthand acts in math
+ mode, so that now the character will respond to math alphabet commands.
+ If however the catcode active character does not appear to be a
+ \ctanpkg{babel} shorthand, then \mst does not do anything at all (beyond
+ its general business at package loading time to set-up the
+ font used for the non-active token).
+%
+ In relation to this context \mst should always be loaded \emph{after} \ctanpkg{babel}.
+ And also \emph{after} the \ctanpkg{amsmath} package.
+
+\item
The braces |\{| and |\}| remain unresponsive to the alphabet changing commands
-even after \csb{MTnonlettersobeymathxx}. One must issue also
-\csb{MTexplicitbracesobeymathxx}, but it has the disadvantage that |\{| and
+even after \csb{MTnonlettersobeymathxx}. The user must employ for this
+\centeredline{\csb{MTexplicitbracesobeymathxx}}
+This has the disadvantage that |\{| and
|\}| become then unusable as variable-size delimiters: |\big\{| or |\big\}|
create errors and one must make use of |\big\lbrace| and |\big\rbrace|. But
-\MTmathoperatorsobeymathxx\MTnonlettersobeymathxx\MTexplicitbracesobeymathxx
+%
+\MTmathoperatorsobeymathxx
+\MTnonlettersobeymathxx
+\MTexplicitbracesobeymathxx
+%
one can now enjoy $\mathtt{\{a, a>b\}}$, $\mathbf{\{a, a>b\}}$,
-$\mathsf{\{a, a>b\}}$, or even $\mathnormalbold{\{a, a>b\}}$.\footnote{this
- last example uses the \cs{mathnormalbold} additional alphabet defined by
- \mst.}\footnote{Let me recall that braces will anyhow not be handled at all
+$\mathsf{\{a, a>b\}}$, or even $\mathnormalbold{\{a, a>b\}}$.%
+%
+\footnote{This
+ last example uses the \csb{mathnormalbold} additional alphabet defined by
+ \mst.}%
+%
+\footnote{Let me recall that braces will anyhow not be handled at all
by \mst if the document
font encoding is |OT1|, except under option |alldelims|.}
-Even with \csb{MTnonlettersobeymathxx}, the parenthese-like symbols $($, $)$,
+\item
+Even with \csb{MTnonlettersobeymathxx}, the parentheses-like symbols $($, $)$,
$[$, $]$, $<$ and $>$ and the slashes $/$, $\backslash$, \emph{if used as
- left/right delimiters} (i.e.\@ with |\left/\right|) do not react to math
+ left/right delimiters} (i.e.\@ with |\left/\right|) will not respond to math
alphabet commands. This is mainly explained by the fact that the text font
-will not contain suitable glyphs, hence no attempt was made to make the
+will not contain suitable glyphs, hence no attempt was made by \mst to make the
delimiters pick up their glyphs there.
But \mst does try to pick up most of the `small variants' of the delimiters
-from the text font: |$\left<x\right>$| gives $\left<x\right>$ (but
-|$\left<b\right>$| gives $\left<b\right>$.) Notice that this differs from
+from the text font: |$\left<x\right>$| gives $\left<x\right>$ but
+|$\left<b\right>$| gives $\left<b\right>$. Notice that this differs from
standard \LaTeX{} for which |$\left< x\right>$| gives $\langle x\rangle$. As
-it is perhaps a bit strange to have $\left< x\right>$ next to
-$\left< X\right>$ there is option nosmalldelims: with this option the
-small-sized variants of the delimiters are not modified by \mst (option
-nosmalldelims has the side effect that, for the non-delimiter uses of
-|\{, \}|
-to be \mst-ified it is necessary to issue \csb{MTnonlettersobeymathxx} and
-\csb{MTexplicitbracesobeymathxx}.)
-
-At any rate, as said above, whether `small' or not, delimiters are
-unresponsive to math alphabet commands, due to technical aspects of \TeX, and
-the way \mst handles these things. Examples: |\mathbf{<a,b>}| gives
-$\mathbf{<a,b>}$
-%{\setbox0\hbox{$\mathbf{<a,b>}$}\typeout{ICI}\showboxdepth\maxdimen
-% \showboxbreadth\maxdimen \showbox0}
-(no use of |\left/\right|, hence brackets do obey the math alphabets --- as we
-issued \MTnonlettersobeymathxx a bit earlier), |\mathbf{\left<a,b\right>}|
-gives $\mathbf{\left<a,b\right>}$ (brackets used with |\left/\right| do not
-obey the math alphabets), |\mathbf{\mathopen{<}a,b \mathclose{>}}| gives
-$\mathbf{\mathopen{<} a,b \mathclose{>}}$ (no |\left/\right|, brackets
-do obey the math alphabets).
-
-\endgroup
-For comparison, the \LaTeX{} standard behavior for
-\centeredline{|\mathbf{\mathopen{<}a,b\mathclose{>}}|}
-is $\mathbf{\mathopen{<} a,b
- \mathclose{>}}$ (neither brackets nor the comma do respond).
-
-
-\subsection{Unicode engines}
-
-\mst is minimally Unicode aware since |1.12| and can be used with \XeTeX{} or
-\LuaTeX{}. Starting with release |1.3|, it needs |luatex| to be at least
-as recent as the one which was provided with the TL2013 distribution.
-
-However \mst applies only to (a subset of) the |32-127| ascii range, and
-optionally to Greek letters, but for the latter only if provided via ``\TeX\
-fonts'' such as Euler, Symbol or LGR-encoded fonts.
-It does not know how to use a given Unicode font simultaneously for Latin and
-Greek letters.
-
-Thus, first consider much better alternatives:
-\begin{itemize}
-\item Since 2018, the package \ctanpkg{mathfont}%
-%
-\footnote{Conrad \textsc{Kosowsky}, \emph{Use TrueType and OpenType fonts in math mode}
-\url{https://ctan.org/pkg/mathfont}.}
-%
-adapts Unicode text fonts to usage in math mode. It works with both \XeTeX\
-and \LuaTeX.
-\item For \XeTeX\ only, \ctanpkg{mathspec}%
-%
-\footnote{Andrew Gilbert \textsc{Moschou}, \emph{Specify arbitrary fonts for mathematics in \XeTeX}
-\url{https://ctan.org/pkg/mathspec}.}
-%
-also allows usage of arbitrary text fonts in mathematics.
-\item and of course
-\ctanpkg{unicode-math}%
-%
-\footnote{Will \textsc{Robertson}, et al., \emph{Unicode mathematics with
- support for XeTeX and LuaTeX} \url{https://ctan.org/pkg/unicode-math}.}
-%
-is the standard package for using OpenType fonts which are equipped with the needed extra
-support being used in \TeX\ math mode.
-\end{itemize}
-
-If using any one of the above you probably don't need, don't want, and should
-not use \mst.
-
-Let me insist that \mst has not been tested in any systematic
-manner under the Unicode engines; and that it is expected to be most definitely
-incompatible with \ctanpkg{unicode-math}, although your mileage may vary and some
-features may appear to work.
+it is perhaps a bit strange to have $\left< x\right>$ and $\left< y\right>$
+not use the same bracketing glyphs, there is an option nosmalldelims: with
+this option the small-sized variants of the delimiters are not modified by
+\mst (option nosmalldelims has the side effect that, for the non-delimiter
+uses of |\{, \}| to be \mst-ified it is necessary to issue
+\csb{MTnonlettersobeymathxx} and \csb{MTexplicitbracesobeymathxx}.)\par
-When using \mst with either \XeTeX{} or \LuaTeX{} it is recommended to use the
-\ctanpkg{fontspec} package (see remark below on \cs{encodingdefault}). Furthermore,
-if using \ctanpkg{fontspec} it is \emph{necessary} to load it with its
-|no-math| option, and this \emph{must} happen before loading \mst.
-\begin{framed}
-\begin{itemize}[label=$\bullet$, leftmargin=1em]
\item
- Use \ctanpkg{fontspec} with its
- \emph{no-math} option, and load it \emph{prior} to \mst. As some packages
- load \ctanpkg{fontspec} themselves (for example |polyglossia|), a
- \centeredline{|\PassOptionsToPackage{no-math}{fontspec}|} early in the
- preamble might be needed.
-
-\item
- The \ctanpkg{amsmath} package, if used, \emph{must} be loaded \emph{prior} to \mst.
-
-\item
- Under |lualatex| engine, it is recommended to also load the package
- \ctanpkg{lualatex-math}.% Please check its documentation as possibly it has now
- % been incorporated upstream (I am not following up on the situation).
+At any rate, as said above, whether `small' or not, delimiters will remain
+unresponsive to math alphabet commands, due to technical aspects of \TeX, and
+the way \mst handles these things. Examples:
+\begin{itemize}[nosep]
+\item |\mathbf{<a,b>}| gives $\mathbf{<a,b>}$: no use of |\left/\right|, hence
+ brackets do obey the math alphabets --- as we issued
+ \MTnonlettersobeymathxx a bit earlier,
+\item |\mathbf{\left<a,b\right>}| gives
+ $\mathbf{\left<a,b\right>}$: delimiters used with |\left/\right| will not obey
+ the math alphabets,
+\item |\mathbf{\mathopen{<}a,b \mathclose{>}}| gives
+ $\mathbf{\mathopen{<} a,b \mathclose{>}}$: no |\left/\right|, so the
+ brackets do obey the math alphabets due to \MTnonlettersobeymathxx.
+\item
+\MTnonlettersdonotobeymathxx
+to compare, the \LaTeX{} standard for
+|\mathbf{\mathopen{<}a,b\mathclose{>}}| is to produce
+$\mathbf{\mathopen{<} a,b \mathclose{>}}$: neither brackets nor the comma are
+responding to \cs{mathbf}.
\end{itemize}
-\end{framed}
-
-% obsolete with release 1.3:
-% A little piece of the functionality of \mst is less fully
-% realized under the \LuaLaTeX{} engine than it is with
-% \XeTeX{}. This is a temporary situation as the needed feature
-% of \LuaLaTeX{} has been implemented in its latest development
-% release. I will update \mst when these binaries will have
-% reached the distribution stage.
-
-I already mentioned in the section \ref{sec:ic} the fact that
-the italic corrections were not available for OpenType fonts
-under the \XeTeX{} engine and only partially available for the
-\LuaTeX{} engine, with the result that the spacings in math
-mode when using for the letters an upright text font will be
-less satisfying than with the standard PDF\TeX{} engine (the
-OpenType fonts not being usable with the latter engine, this is
-not a criterion of choice anyhow).
-
-To define math versions when using unicode fonts, use \ctanpkg{fontspec}'s
-\cs{setmainfont} before the \cs{Mathastext}\oarg{version} command, or simply
-before loading \mst for the default math versions.
-
-It is possible to mix usage of Unicode fonts and classical \TeX{}
-fonts. All used 8bits font encoding must have been passed as
-options to the \ctanpkg{fontenc} package.
-
-\subsubsection{The unicodeminus option}
-
-For legacy reason, \mst uses by default the |EN DASH U+2013| for the minus
-sign in math mode, if the font is determined to be a ``Unicode'' font.
-
-There is now the unicodeminus\RightNote{1.3q} to use rather
-% BORDEL DE BORDEL DE FAIT CHIER \verb ET Text for \verb command ended by end
-% of line. je l'ai patch dans etoc et xint mais pas ici encore.
-|MINUS SIGN U+2212|.%
-\footnote{Thanks to Tobias~\textsc{Brink} who asked for this feature.}
-%
-Check \hyperref[nicodeminus]{\ttfamily\hyphenchar\font=189 its documentation}
-on page \pageref{nicodeminus}.
+\end{itemize}
+\end{footnotesize}
-\subsubsection{Two examples}
+\endgroup
-I include
-here two examples which compiled successfully with \XeTeX{} and
-\LuaLaTeX{}, the first one on a Linux machine, the second one on a Mac
-OS X machine.\footnote{A |tex mathastext.dtx| (in a temporary repertory) on a
- copy of |kpsewhich mathastext.dtx| will extract extended versions of
- these examples as test files.}
+\subsubsection{Hacking letters (and even digits) for special tasks}
+\label{ssec:hackingletters}
+
+For some ascii characters, i.e.\@ the ``hard'' non-letters considered in the
+previous section, and even more spectacularly for all ascii letters, \mst
+achieves the capabilities describes in earlier sections via a \TeX nique known
+as ``mathematically active characters''. For letters this is turned on by
+default, but for the non-letter characters it is the command
+\cs{MTnonlettersobeymathxx} which triggers this mathematical activation.
+
+It is possible for daring \LaTeX{} users to hook into this architecture.
+Release \mstrelease{1.4} has made this especially easy regarding ascii letters
+(and even for digits if using the package option activedigits).
+
+Except if told otherwise, \mst will make all Latin ascii letters mathematically
+active, and when \TeX{} encounters e.g.\@ `e' in math mode it replaces it with
+the macro having name \cs{MTcommandlettere} (mind the ending |e|). Its
+default definition inserts \hyperref[sec:mathskips]{optional extra skips}
+and/or an \hyperref[sec:ic]{italic correction}.
+
+You can redefine this \cs{MTcommandlettere}, or any
+\cs{MTcommandletter}\meta{ascii-letter}, to achieve (globally or locally)
+custom goals.%
+%
+\footnote{\CHANGED{\mstrelease{1.4}}%
+Prior to \mstrelease{1.4}, there was no equivalent to
+\cs{MTcommandletter}\meta{letter}. An internal macro \cs{mst@}\meta{letter}
+stood for what is denoted now \cs{MTmathcharletter}\meta{letter}, but required
+a \cs{protected} if redefined as it was submitted to an \cs{edef} during
+processing.}
+%
+Attention, this redefinition should not use `e' itself as a ``naked''
+character to typeset in math mode, else an infinite loop will arise at time of
+use. To access a symbol equivalent to the ``naked'' `e', use
+\cs{MTmathcharlettere} (again mind the ending |e|). For example:
\begin{verbatim}
-\documentclass{article}
-\usepackage[hscale=0.8]{geometry}
-\usepackage{multicol}
-\usepackage[no-math]{fontspec}
-\usepackage{lmodern}
-\usepackage[subdued,italic]{mathastext}
-\setmainfont[Color=999999]{Verdana} \Mathastext[Verdana]
-\setmainfont[Color=0000FF]{Arial} \Mathastext[Arial]
-\setmainfont[Color=00FF00]{DejaVu Serif} \Mathastext[DejaVu]
-\MTDeclareVersion{times}{T1}{ptm}{m}{n}
-\setmainfont[Color=FF0000]{Andale Mono} \Mathastext[Andale]
-\begin{document}
-\newcommand\TEST[1]{\MTversion{#1}%
-\begin{multicols}{2}
-\hbox to\columnwidth{\hbox to\columnwidth{\hfil
- $abcdefghijklmnopqrstuvwxyz$\hfil}\kern-2.5em{#1}}
- \centerline{ $ABCDEFGHIJKLMNOPQRSTUVWXYZ$ }
- \centerline{ $0123456789$ }
- \centerline{ $!\,?\,*\,,\,.\,:\,;\,+\,-\,=\,(\,)\,[\,]\,/\,\#\,%
- \$\,\%\,\&\,<\,>\,|\,\{\,\}\,\backslash$ }
-\columnbreak
- \centerline{ abcdefghijklmnopqrstuvwxyz }
- \centerline{ ABCDEFGHIJKLMNOPQRSTUVWXYZ }
- \centerline{ 0123456789}
- \centerline{ !\,?\,*\,,\,.\,:\,;\,+\,-\,=\,(\,)\,[\,]\,/\,\#\,%
- \$\,\%\,\&\,<\,>\,|\,\{\,\}\,\char92 }
-\end{multicols}}
-\begin{multicols}{2}
- \centerline{\textbf{math mode}}
-\columnbreak
- \centerline{ \textbf{text} }
-\end{multicols}
-\TEST{DejaVu}\TEST{Verdana}\TEST{times}\TEST{Andale}
-\TEST{Arial}\TEST{bold}\TEST{normal}
-\end{document}
+\renewcommand\MTcommandlettere{\mathsf{\MTmathcharlettere}}% not \mathsf{e}!
\end{verbatim}
-And now the same thing with fonts available on Mac OS X:
+In this case we could do the simpler approach with \cs{textsf}, which works
+as it will then typeset the |e| in text mode, not math mode.
\begin{verbatim}
-\documentclass{article}
-\usepackage[hscale=0.8]{geometry}
-\usepackage{multicol}
-\usepackage[no-math]{fontspec}
-\usepackage{lmodern}
-\usepackage[subdued,italic]{mathastext}
-\setmainfont[Color=FF0000]{Hoefler Text} \Mathastext[Hoefler]
-\setmainfont[Color=336633]{American Typewriter}\Mathastext[Typewriter]
-\setmainfont[Color=0000FF]{Herculanum} \Mathastext[Herculanum]
-\setmainfont[Color=FF00FF]{Didot} \Mathastext[Didot]
-\setmainfont[Color=999999]{Comic Sans MS} \Mathastext[Comic]
-\begin{document}
- --- copy here the code from the previous example ---
-\TEST{Didot}\TEST{Comic}\TEST{normal}\TEST{Herculanum}
-\TEST{Hoefler}\TEST{Typewriter}\TEST{bold}
-\end{document}
+\renewcommand\MTcommandlettere{\textsf{e}}% not \mathsf{e}!
\end{verbatim}
-% The test files which will be produced by running |latex| on
-% |mathastext.dtx| are more extent.
+This gives a priori the same result in our \mst context, which
+picks the font for \cs{mathsf} from the one used by \cs{textsf}, assuming here
+default configuration in the preamble following the loading of \mst.%
+%
+\footnote{This example simply reassigns \texttt{e} to another font, and one
+could use also the \LaTeX{} command \cs{DeclareMathSymbol} for this. But few
+\LaTeX{} users are familiar with its interface, and such an approach could
+cost adding an extra math symbol font, depending on what one wants to do.
+Besides \cs{DeclareMathSymbol} is a preamble-only command, which limits
+considerably its usability, forcing basically the change to apply to the whole
+document. Using the \mst interface via mathematically active characters opens
+up the possibility of arbitrary replacements, of local scope in the document
+body.}
-\subsection{Compatibility issues}\label{sec:compat}
-
-Compatibility issues (or just questions of who decides last) are naturally to
-be expected with packages dealing with the math setting; the fix is simply to
-load \mst last. And one should always load |amsmath| before \mst (this is
-especially true when using Unicode engines but applies in general as well).
-
-Any definition made in a package loaded before \mst of the font to be
-used for letters or for the common characters in the |ascii| basic range
-will be overruled by the loading of \mst (this includes the case
-when the earlier package had made the character `mathematically active').
-Conversely most of the set-up done by \mst may well be overruled by
-packages loaded later which do math related things.
-
-Starting with version |1.2|, \mst makes some characters `mathematically
-active' to achieve certain effects: automatic insertion of the italic
-corrections when using an upright text font in math, extended scope of
-the math alphabet commands which now apply to non-letter symbols (and
-also to math operator names, but this is much easier to achieve). And
-the (already mathematically active) right quote is modified to have some
-extra space added before the derivative glyph ${}'$.
-
-This is compatible with using \cs{label} and \cs{ref} in and outside of
-math mode. But a difficulty arises when some other package has made the
-character `globally active' everywhere in the document. The action of
-\mst is made anew at each mathematical inline or displayed formula. If
-it is detected that a character has been activated then nothing further
-will be done (so the \mst feature\footnote{italic correction insertion
- for the latin letters, receptivity to the math alphabet action for the
- other characters.} for that character is lost) \emph{except} if it
-appears that this activation was done by the Babel system. In that case
-\mst does not make the character mathematically active but it modifies
-in the appropriate manner the action of Babel for that character in math
-mode. Furthermore \mst makes the character mathematically
-\emph{inactive}.\footnote{only the characters
- {{;}\,{,}\,{:}\,{!}\,{?}\,{+}\,{\textendash}\,{=}\,{<}\,{>}\,{(}\,{)}\,{[}\,{]}\,*}
- mentioned in section \ref{sec:mathxx} as `difficult non letters' (and
- the right quote {'}) and
- the latin letters are concerned here; it seems highly unprobable that
- a latin letter ${\in}\{a\mbox{--}z,A\mbox{--}Z\}$ will have been made
- globally active (only letters never being used in command names are
- possible candidates), but \mst has been
- designed to cope with it, should it happen ...}
-
-Here is indeed some code that you should \textbf{not} try at
-home:
+
+It is recommended in general to add an extra pair of braces
+to avoid problems when used with |_| and |^|. Let's give an other example and
+demonstrate its output:
\begin{verbatim}
- \documentclass{article}
- \usepackage[french]{babel}
- \usepackage{mathtools}\mathtoolsset{centercolon}
- \begin{document}
- $:$
- \end{document}
+\[
+\renewcommand\MTcommandlettere{{\mathcolor{blue}{\mathsf{\MTmathcharlettere}}}}%
+abcde^efgh
+\]
\end{verbatim}
-\fbox{DO NOT DO THIS AT HOME}\thinspace: it creates an infinite
-loop.\footnote{This seems to still be the case with Babel |3.9f| and
- frenchb.ldf |2.6e|, as tested on Sep. 2, 2013. Again tested with up-to-date
- TL2015 Jan. 15, 2016 with same result.} This is due
-to the fact that the colon is simultaneously active (this is made by
-\ctanpkg{babel-french} at begin document) and mathematically active (done by
-\ctanpkg{mathtools} in the preamble). The interaction gives an infinite loop. Such a
-situation will be cured by \mst, even loaded before \ctanpkg{mathtools},
-\emph{if} use is made of \cs{MTnonlettersobeymathxx}. At each math formula
-\mst will detect that Babel has activated the colon, and will cancel the
-mathematical activation (the precise definition done by \ctanpkg{mathtools} was
-already lost at begin document due to overwriting by \ctanpkg{babel} but the fact that
-the character was mathematically active remained true).
+\MTversion{times}
+\[
+\renewcommand\MTcommandlettere{{\mathcolor{blue}{\mathsf{\MTmathcharlettere}}}}%
+abcde^efgh
+\]%
+\MTversion{normal}%
+As this document is in subdued mode, we had, to show the effect, to
+switch temporarily to some math version activating \mst, and we used here a
+|times| math version with Times and Helvetica clones.
+
+If you redefine \cs{MTcommandlettere} as described in this section the optional extra
+math skips added before or after via \MTsetmathskips will be lost, as well
+as the automatic italic correction |\/| added by \mst for an upright font, and it
+is up to the redefinition of \cs{MTcommandlettere} to do the job.
+
+The explanations above apply to any (ascii) Latin letters \meta{ascii-letter}
+with associed macros \cs{MTcommandletter}\meta{ascii-letter} and ``naked''
+symbol command \cs{MTmathcharletter}\meta{ascii-letter}.
+
+With option activedigits you can even extend the game to digits. The
+``raw'' digit symbol is kept as a math symbol control sequence
+\cs{MTmathchardigit}\meta{y} where \meta{y} stands for the Roman version of
+the digit: empty
+for $0$, then |i|, |ii|, etc... until |ix|. The macro to redefine for special
+effect is \cs{MTcommanddigit}\meta{y}. Example:
+\begin{verbatim}
+\[
+\renewcommand\MTcommanddigit{{\MTmathchardigit^{\mathcolor{blue}{1}}
+ _{\mathcolor{red}{2}}}}%
+\renewcommand\MTcommanddigiti{{\boxed{\mathbf{\MTmathchardigiti}}}}
+0^0_0
+\]
+\end{verbatim}
+\MTversion{times}
+\[
+\renewcommand\MTcommanddigit{{\MTmathchardigit^{\mathcolor{blue}{1}}
+ _{\mathcolor{red}{2}}}}%
+\renewcommand\MTcommanddigiti{{\boxed{\mathbf{\MTmathchardigiti}}}}
+0^0_0
+\]%
+\MTversion{normal}%
+(\cs{boxed} is from \ctanpkg{amsmath}) Let's hope you find better
+usage... recall that you can't use digit $0$ in its redefinition but must use
+\cs{MTcommanddigit}. But you can of course use other digits... except if
+their definitions use the digit $0$ rather than the non-active symbol control
+sequence \cs{MTmathchardigit}.
+See also \MTmathactiveletters and \MTmathactivedigits.
- So far I have briefly described the problem of document active
- characters (see the test file |mathastexttestalphabets.tex| for more
- explanations and illustrations, and the commented source code of the
- package). Pure mathematical activation revealed an incompatibility of
- another type with \ctanpkg{amsmath}. To fix it, \mst now replaces
- an inner macro of \ctanpkg{amsmath}
- (\cs{resetMathstrut@}) with its own version.\\
- \null\hspace{1cm}\fbox{Always load \ctanpkg{amsmath} before \mst.}\\
- Actually this last commandment was already made necessary by the use of the
- text endash to represent the minus sign in math mode, and, especially for
- Unicode engines, some aspects of the \cs{DeclareMathOperator} macro from
- \ctanpkg{amsmath}.
-
- \begin{framed}\kern-.75\baselineskip
- \begin{framed}
- \textbf{Important!} As is mentioned in the section \ref{sec:mathxx},
- after command \MTnonlettersobeymathxx, characters such as
- |?|, or |[|, now represent \emph{two} `tokens' and this will utterly
- confuse \TeX{} if some precautions are not taken. Examples: |$0^+$| or
- |$x\mathrel?y$| or |$R^*$| \emph{must} be input now as |$0^{+}$|
- and, respectively,
- |$x\mathrel{?}y$| or |$R^{*}$|. This is why the package does
- \MTnonlettersdonotobeymathxx by default.
- \end{framed}\vskip-.75\baselineskip
- \end{framed}
- One thing to take note of is that this mechanism uses the \cs{everymath}
- and \cs{everydisplay}, so if it is needed to add to these \TeX{} `token
- lists' some additional things this should be done in a way preserving the
- former contents.
-
- If one issues (after |\begin{document}|) |\everymath={}| and
- |\everydisplay={}| this annihilates not only all the \mst (evil ?) doings
- with math active characters but also everything else some other package
- might have put in these token registers, so it is better, if the need
- arises to cancel the math activation of characters done by \mst to use the
- command \MTeverymathoff, which does all of
- \MTmathoperatorsdonotobeymathxx, \MTnonlettersdonotobeymathxx (already
- default), \MTmathstandardletters, \MTnormalprime, and
- \MTnormalasterisk. This is supposed to be used in a group or
- environment (as there is no |\MTactivemathon|). It must be used prior to
- entering math mode.
-
- \begin{framed}
- \textcolor{magenta}{\bfseries New with 1.3i:} \mst patches |\url| of
- packages \ctanpkg{url} and \ctanpkg{hyperref}, and also |\nolinkurl|, to force them
- to do automatically \MTeverymathoff. Indeed they use math mode, and it
- is better to turn \mst off for their dealings.
- \end{framed}
-
% 2 septembre 2013; finalis 22:58
% Mardi 19 dcembre 2023: l'utilisation de bleu alors que ce n'est
@@ -4503,7 +4217,7 @@ option).
\item \mstcmd{Mathastext} (or \mstcmd{mathastext}) reinitializes \mst: it sets the
fonts used in math mode (in versions |normal| and |bold|) for letters,
digits and a few ascii symbols to the \emph{current} defaults of encoding,
- family, series and shape.\footnote{\texttt{\char92Mathastext} updates also
+ family, series and shape.\footnote{\csb{Mathastext} updates also
the font and shapes for the Greek letters (|LGRgreek| option), and the
skips to be inserted after the symbols $\oldforall$ and $\oldexists$,
see \emph{infra.}} Both the normal and bold math version are modified by
@@ -4517,7 +4231,7 @@ option).
the \LaTeX{} \cs{DeclareMathVersion} macro. \emph{Do not use}
|\string\Mathastext[foo]| \emph{with
|foo| equal to ``normal'' or ``bold'';} this is already taken care of by the
- initial loading of the package or a later command \cs{Mathastext}
+ initial loading of the package or a later command \csb{Mathastext}
without any optional argument. And it will be rejected.}
\item %\textbf{inheritance:}
\csb{Mathastext}\oarg{version\_name}\oarg{parent\_name}
@@ -4553,7 +4267,7 @@ option).
\mstcmd{MTlettershape}\marg{sh}.%
%
\footnote{These commands exist also with
- long names: \texttt{\char92Mathastextencoding},
+ long names: \csb{Mathastextencoding},
etc\dots{} The same applies to the other commands
mentioned in this section.}
%
@@ -4597,7 +4311,7 @@ optional argument) will these commands have any real effect.
of the time of loading the package.} else letters will
have the same shape as used for digits and operator-names.
- Another optional argument may be used as last argument.\RightNote{1.3c}
+ Another optional argument may be used as last argument.\RightNote{\mstrelease{1.3c}}
Similarly as its
use with \Mathastext this makes the declared math version inherit, for
things not modified by \mst like large symbols, the font set up of the math
@@ -4645,7 +4359,7 @@ optional argument) will these commands have any real effect.
redefined). In the absence of the optional argument, the mandatory one is
used. The versions \emph{must} be either |normal|, or |bold|, or previously
declared ones via \Mathastext or \MTDeclareVersion.
- \item the starred variant\RightNote{1.3c} does the math set-up, but changes \emph{nothing} to
+ \item the starred variant\RightNote{\mstrelease{1.3c}} does the math set-up, but changes \emph{nothing} to
the text fonts (see \autoref{sec:mathversions} for a description of the math
set-up, which summarizes
what is done additionally to only using \LaTeX{}'s |\mathversion|).
@@ -4659,7 +4373,7 @@ optional argument) will these commands have any real effect.
option the package checks separately the letter shape for lowercase and
uppercase.
- \RightNote{1.3j}\MTversion also does \MTexistsdoesskip,
+ \RightNote{\mstrelease{1.3j}}\MTversion also does \MTexistsdoesskip,
\MTforalldoesskip, and also \MTprimedoesskip,
\csb{MTmathoperatorsobeymathxx}, except under the |subdued| option for
\emph{normal} and \emph{bold}, in which case it does the opposite actions.
@@ -4668,17 +4382,13 @@ optional argument) will these commands have any real effect.
the |italic| option) combining the |h| letter and the \={ } accent from the
\mst font. Note that \cs{mathrm}|{\hbar}| and \cs{mathbf}|{\hbar}| will
work and that \cs{hbar} does scale in subscripts and exponents. Since
- |1.3u|, this is a priori compatible with all 8bits text font
- encodings\RightNote{1.3u} supporting the |\=| text accent in
+ \mstrelease{1.3u}, this is a priori compatible with all 8bits text font
+ encodings\RightNote{\mstrelease{1.3u}} supporting the |\=| text accent in
the LaTeX way.%
%
-\footnote{\RightNote{1.3u}The horizontal skips for letter |h| from
- \cs{MTsetmathskips} are ignored for \cs{hbar}.% Formerly, a positive
- % ``before'' skip was not properly taken into account for the horizontal
- % positioning of the accent and thus gave a bad result. The user can extend
- % the package \cs{hbar} definition to add skips.
-}
-\footnote{\RightNote{1.3u}The \cs{hbar} redefinition is canceled in normal and
+\footnote{\RightNote{\mstrelease{1.3u}}The horizontal skips for letter |h| from
+ \csb{MTsetmathskips} are ignored for \cs{hbar}.}
+\footnote{\RightNote{\mstrelease{1.3u}}The \cs{hbar} redefinition is canceled in normal and
bold math versions under the |subdued| option.}
\item \mstcmd{fouriervec}: this is a |\vec| accent taken from the Fourier font;
@@ -4687,7 +4397,7 @@ if option fouriervec.
\item \mstcmd{pmvec}: this provides a poor man \cs{vec} accent command, for
upright letters. It uses the right arrow. Does not change
size in subscripts and exponents.
-\item \RLNote{new description:}{1.3za}\mstcmd{Mathnormal}, \mstcmd{Mathrm},
+\item \RLNote{new description:}{\mstrelease{1.3za}}\mstcmd{Mathnormal}, \mstcmd{Mathrm},
\mstcmd{Mathbf}, \mstcmd{Mathit}, \mstcmd{Mathsf}, \mstcmd{Mathtt}: they use the
\mst-ified fonts. By default, \mstcmd{mathnormal}, \mstcmd{mathrm},
\mstcmd{mathbf}, \mstcmd{mathit}, \mstcmd{mathsf}, \mstcmd{mathtt} are redefined
@@ -4707,7 +4417,7 @@ size in subscripts and exponents.
This command is also made available under subdued option in
the ``normal'' and ``bold'' math versions, as \LaTeX\ does not define it a
priori, contrarily to \mathbf and other math alphabet commands.
- \item \RightNote{1.3x}\mstcmd{mathgreekup}: math alphabet, only available
+ \item \RightNote{\mstrelease{1.3y}}\mstcmd{mathgreekup}: math alphabet, only available
under LGRgreek (or LGRgreeks) option, which gives access to `upright'
Greek letters (picked up from a font available in |LGR|-encoding). Note
that the package also defines \cs{alphaup}, \dots, \cs{piup}, \dots\
@@ -4725,7 +4435,7 @@ size in subscripts and exponents.
support as long as suitable usage of \MTgreekfont later on configures a
suitable font).
- \RightNote{1.3za}Also \mstcmd{mathgreekupbold}.
+ \RightNote{\mstrelease{1.3za}}Also \mstcmd{mathgreekupbold}.
\begin{footnotesize}
These math alphabets are also available under subdued option in the
@@ -4764,14 +4474,14 @@ size in subscripts and exponents.
the subdued option anyhow.\par
\end{footnotesize}
-\item \RightNote{1.3x}\mstcmd{mathgreekit}: math alphabet, only available
+\item \RightNote{\mstrelease{1.3y}}\mstcmd{mathgreekit}: math alphabet, only available
under LGRgreek (or LGRgreeks) option, which gives access to `italic'
Greek letters (picked up from a font available in |LGR|-encoding). The
actual shape is configurable via re-defining \MTgreekitdefault and then
redeclaring the math version via \Mathastext (with optional argument if
for a math version other than the ``normal'' one), or \MTDeclareVersion.
- \RightNote{1.3za}Also \mstcmd{mathgreekitbold}.
+ \RightNote{\mstrelease{1.3za}}Also \mstcmd{mathgreekitbold}.
\begin{footnotesize}
See the discussion of \mathgreekup for some \TeX\ hacker level
@@ -4782,13 +4492,6 @@ size in subscripts and exponents.
font for use in math mode. By default, |\imath| and |\jmath| are redefined to use
them. Since \texttt{1.3t}, these macros obey the \texttt{subdued}
regime.
-%
-% \footnote{\RightNote{1.3t}Formerly (i.e.\@ since \texttt{1.12}) \mst
-% redefined the \texttt{\string\i} and \texttt{\string\j} as robust
-% commands usable both in text and math mode and using the above macros
-% in the latter. I have decided it wasn't such a good idea and there is
-% from now on \texttt{1.3t} no such redefinition of \texttt{\string\i}
-% and \texttt{\string\j}!}
\item \mstcmd{MathEuler}, \mstcmd{MathEulerBold}: math alphabets to access
all the glyphs of the Euler font, if option |eulergreek| (or
|eulerdigits| was passed to the package.
@@ -4811,14 +4514,14 @@ all the glyphs of the Euler font, if option |eulergreek| (or
\cs{let}\cs{varepsilon}$=$\cs{epsilon}, etc\dots,
in case only the `variant' form of the letter was used
in the documents.
-\item \hypertarget{symbolmisc}{Miscelleneous mathematical symbols} from the
+\item \hypertarget{symbolmisc}{Miscellaneous mathematical symbols} from the
postscript Symbol font are made available (or replaced) by option
symbolmisc.\footnote{option \blueit{asterisk} is also required to treat the
$*$.
Recall from \autoref{sec:mathxx} that the asterisk in math mode (also
when using the control sequence \cs{ast}) appears then to \TeX{} to be
a composite object.}
- \makeatletter\let\mst@doasterisk\mst@@doasterisk\makeatother They are
+ \MTactiveasterisk They are
\cs{prod}~$\prod$ \cs{sum}~$\sum$ \cs{implies}~$\implies$
\cs{impliedby}~$\impliedby$ \cs{iff}~$\iff$ \cs{shortiff}~$\shortiff$
\cs{to}~$\to$ \cs{longto}~$\longto$ \cs{mapsto}~$\mapsto$
@@ -4864,64 +4567,106 @@ comments).
The timing for actions of \mst falls into three cases:
\begin{enumerate}
-\item things done during the loading of the package, or delayed to
- |\AtBeginDocument|,
+\item things done by \mst itself during its loading (some are delayed to
+ |\begin{document}|),
\item things done as the result of user commands, either in the preamble or in
- the body of the document,
+ the body of the document, (but note that some commands if used in preamble
+ have a real effect only at the time of |\begin{document}|),
\item things done everytime math mode is entered.
\end{enumerate}
-The second category overlaps with the others, as the (preamble) use of some
-commands can have either immediate effect or only trigger some actions in
-|\AtBeginDocument| or perhaps only influence the things done later by \mst
-each time math mode is entered.
-
-The third category deserves some brief additional comments: it mainly (but not
-exclusively) regards the ``math activation'' of characters, and conversely all
-``math activations'' fall into this category. The package re-checks each time
-math mode is entered if some characters have been made in-between catcode
-active, or math active, and takes appropriate decisions: one important aspect
-of this issue is that |babel|'s mechanism for activating character was not, last
-time I checked, very robust against math active characters. I now checked
-again (on January 15, 2016) that
-\begin{verbatim}
- \documentclass{article}
- \usepackage[french]{babel}
- \usepackage{mathtools}\mathtoolsset{centercolon}
- \begin{document}
- $:$
- \end{document}
-\end{verbatim}
-creates an infinite loop (see section \ref{sec:compat} where this was
-mentioned already, some years ago). Thus \mst has (since |1.2e 2013/01/10|) a
-somewhat elaborate mechanism related to these issues (see the code comments),
-installed into the list of things done by \TeX\ systematically each time
-it enters math mode. For some legacy reason the package also puts into
-this list a few other things which could arguably be done elsewhere once and
-for all. The command \csb{MTeverymathoff} cancels all actions done by
-\mst.
+At \mstrelease{1.4}\RLNote{changed:}{\mstrelease{1.4}} a very significant
+change took place: the last category, the one of things done everytime math mode
+is entered, has become \emph{empty}.%
+%
+\footnote{There ia always an exception to a good
+rule, and here it is: only with \LuaLaTeX{} engine, a certain
+command is executed as part of \cs{everymath}. For details see
+\csb{MTfixfonts}.}
+
+The everymath option added at \mstrelease{1.4} re-establishes the legacy
+behavior. Except for ascii letters: they will not even then be made
+mathematically active at each entrance in to math mode, but only once at time
+of package loading (if not subdued) and also when using \MTversion (for
+non-subdued math versions).
+
+\begin{shaded*}
+Under everymath option some commands described here as being usable
+everywhere have in fact an effect only if used externally of math mode.
+The documentation is only accurate for the default \mstrelease{1.4}
+configuration, not for the legacy one as re-enacted by everymath.
+\end{shaded*}
+
+\subsubsection{Expert commands which are preamble-only}
+
+\begin{enumerate}[label=$\bullet$, leftmargin=1em]
+\item \mstcmd{MTgreekupdefault}:\RightNote{\mstrelease{1.3y}} a command with
+ no argument whose expansion specifies, under LGRgreek regime, the
+ shape for the `|up|' Greek control sequences (and for the no-postfix
+ Greek control sequences under upgreek option) in all \mst math
+ versions declared \emph{afterwards} via \cs{Mathastext} or
+ \cs{MTDeclareVersion}. The a priori default for this shape is `|n|'
+ (without the quotes). See
+ \autoref{sec:newgreek}.
+
+ This command can also be defined \emph{prior} to loading the package,
+ as the package itself only does:
+ \centeredline{|\providecommand*\MTgreekupdefault{n}|}
+
+\item \mstcmd{MTgreekitdefault}:\RightNote{\mstrelease{1.3y}} a command with
+ no argument whose expansion specifies, under LGRgreek regime, the
+ shape for the `|it|' Greek control sequences (and for the no-postfix
+ Greek control sequences under itgreek option) in all \mst math
+ versions declared \emph{afterwards} via \cs{Mathastext} or
+ \cs{MTDeclareVersion}. The a priori default for this shape is `|it|'
+ (without the quotes).
+ See \autoref{sec:newgreek}.
+
+ This command can also be defined \emph{prior} to loading the package,
+ as the package itself only does:
+ \centeredline{|\providecommand*\MTgreekitdefault{it}|}
+\end{enumerate}
+
\subsubsection{Expert commands usable everywhere}\label{sec:cmds}
\begin{enumerate}[label=$\bullet$, leftmargin=1em]
+ \item \mstcmd{MTcustomgreek}:\RightNote{\mstrelease{1.3d}} in case \mst has been loaded with one of its
+ Greek related options, this activates the corresponding
+ customization of Greek letters in math mode. It is issued
+ automatically by the package in the preamble (except if loaded with
+ |subdued| option) and at each switch of math version via
+ |\MTversion| or |\MTversion*| (except for the normal and bold math
+ versions in subdued mode). Also available as
+ |\Mathastextcustomgreek|. May be used even inside of math mode.
+
+ \item \mstcmd{MTstandardgreek}:\RightNote{\mstrelease{1.3d}} in case \mst was loaded with one of the Greek
+ related options this command reverts the customization, it resets the Greek
+ letters to their definitions in force at package loading time. Can be used
+ in the preamble, but is mainly for the document body (may even be used
+ inside math mode ...). Done automatically
+ under the |subdued| option when switching to the normal or bold math
+ version. Also available as |\Mathastextstandardgreek|.
+
+
\DeleteShortVerb{\|}%
\item \mstcmd{MTsetmathskips}\marg{a-z|A-Z}\marg{muglue\_before}\marg{muglue\_after}:
%
\MakeShortVerb{\|}%
%
- is\RightNote{1.3a} used to specify extra skips (or rather mu glue) to be
+ is\RightNote{\mstrelease{1.3a}} used to specify extra skips (or rather mu glue) to be
inserted in math mode, before and after a letter. The rationale is that
standard text fonts used in math mode may sometimes cause glyph (near-)
collisions with math symbols, as \TeX{} has some implicit expectations on the
design of fonts for math letters.
- \begin{framed}
+ \begin{snugshade}
These extra skips around letters are set at their natural width and do not
add any stretchability or shrinkability to the math formula as a whole,
nor do they result in extra potential break points.
- \end{framed}
+ \end{snugshade}
Random (silly) examples:
\centeredline{|\MTsetmathskips{x}{\medmuskip}{\thickmuskip}|} \centeredline
@@ -4941,19 +4686,19 @@ for all. The command \csb{MTeverymathoff} cancels all actions done by
\makeatother
\end{verbatim}
- \begin{framed}
+ \begin{snugshade}
\emph{\color{magenta}\bfseries Starting with |v1.3i|:} the extra skips are
\emph{not} applied to the letters within the scope of math alphabet
commands, or the letters from operator names (pre-defined or user
declared).
- \end{framed}
+ \end{snugshade}
{\footnotesize
Note that contrarily to the \csb{MTexistsskip}, \csb{MTforallskip}, and
\csb{MTprimeskip} commands described next, these extra skips (which may be
specified in the preamble) are not recorded in the definition of the math
- version (as defined via \Mathastext with its optional argument or via
- \MTDeclareVersion). The declared skips hold thoughout the document
+ version (as defined via \csb{Mathastext} with its optional argument or via
+ \csb{MTDeclareVersion}). The declared skips hold thoughout the document
until modified or canceled, independently of math versions (of
course, \mst cancels the skips in the normal and bold math versions if
package option \blueit{subdued} was used).\par}
@@ -4967,18 +4712,15 @@ for all. The command \csb{MTeverymathoff} cancels all actions done by
cancels the skips
for that letter (they are not set to |0mu| but completely removed).
-
- % setting the skips to |0mu| which prevents formation of ligatures
- % when the letter is used inside a \cs{mathbf} for example). Example (using a
- % version with upright Latin Modern): \centeredline
- % {|\MTsetmathskips{f}{8mu}{0mu}$gffg\MTunsetmathskips{f}ff\mathbf{ff}$|}
- % gives: \begingroup\MTversion{upright}%
- % \MTsetmathskips{f}{8mu}{0mu}$gffg\MTunsetmathskips{f}ff\mathbf{ff}$\endgroup.
- % The ligature was correctly formed.
-
The argument may be a macro (or any expandable code) expanding to a letter.
+\item \RightNote{\mstrelease{1.3j}}\mstcmd{MTnormalexists}, \mstcmd{MTexistsdoesskip}: the
+ latter (done by default if not |subdued|, and also on each use of
+ |\MTversion| in the body of the document) makes it so that $\oldexists$
+ takes into account the math glue as specified by \MTexistsskip. The
+ former is its opposite.
+
\item \mstcmd{MTexistsskip}\marg{math glue}: specifies the amount of skip or more
generally glue to put after each $\oldexists$ math symbol. Indeed, upright
letters (or digits for that matter) often appear to be positioned a bit too
@@ -4991,17 +4733,13 @@ for all. The command \csb{MTeverymathoff} cancels all actions done by
version (and subsequent ones). One may also use the command at any time in
the document. In the case of the option |subdued|, the skip is canceled in
the \emph{normal} and \emph{bold} math versions.
-%
-% \footnote{\RightNote{1.3j}%
-% Formerly, it was set to |0mu|.}
-%
In the case of the option |italic|, the
default skip is set to zero.
-\item \RightNote{1.3j}\mstcmd{MTnormalexists}, \mstcmd{MTexistsdoesskip}: the
+\item \RightNote{\mstrelease{1.3j}}\mstcmd{MTnormalforall}, \mstcmd{MTforalldoesskip}: the
latter (done by default if not |subdued|, and also on each use of
- |\MTversion| in the body of the document) makes it so that $\oldexists$
- takes into account the math glue as specified by \csb{MTexistsskip}. The
+ |\MTversion| in the body of the document) makes it so that $\oldforall$
+ takes into account the math glue as specified by \MTforallskip. The
former is its opposite.
\item \mstcmd{MTforallskip}\marg{math glue}: the default is to add a |.6667mu| math
@@ -5012,138 +4750,191 @@ for all. The command \csb{MTeverymathoff} cancels all actions done by
be declared} math versions. In the case of the option |subdued|, the skip
is canceled in the \emph{normal} and \emph{bold} math
versions.
-%
-%\footnote{\RightNote{1.3j}Formerly, it was set to |0mu|.}
In the
case of the option |italic|, the default skip is zero for all math versions.
One may use the command at any location in the document.
-\item \RightNote{1.3j}\mstcmd{MTnormalforall}, \mstcmd{MTforalldoesskip}: the
- latter (done by default if not |subdued|, and also on each use of
- |\MTversion| in the body of the document) makes it so that $\oldforall$
- takes into account the math glue as specified by \csb{MTforallskip}. The
- former is its opposite.
+\item \RightNote{\mstrelease{1.3j}}\mstcmd{MTnormalprime},
+ \mstcmd{MTprimedoesskip}: the latter (done by default if not |subdued|,
+ and also on each use of \csb{MTversion} in the body of the document except
+ for the subdued \emph{normal} and \emph{bold} math version) makes it so
+ that $'$ takes into account the math glue as specified by
+ \MTprimeskip. The former is its opposite. In all cases the right quote
+ |'| is a mathematically active character throughout the document producing
+ ${}'$ as is the default in \TeX, it is only its meaning which changes to
+ include or not an extra skip.
+
+ \begin{footnotesize}
+ Even though \MTprimedoesskip is not done in the subdued case, it is
+ \emph{not} a no-op even then in the preamble or in the \emph{normal} and
+ \emph{bold} math versions.\par
+ \end{footnotesize}
-\item \mstcmd{MTprimeskip}\marg{math glue}: the default is to add a |0.5mu| skip
- before the derivative glyph, except for the |italic| option. In the case of
- the option |subdued|, the skip is canceled in the \emph{normal} and
+\item \mstcmd{MTprimeskip}\marg{math glue}: specifies the amount of math
+ skip to add before the derivative glyph. The default iniitial value is
+ |0.5mu|, except with the |italic| option where it is |0mu|. In the case
+ of the option |subdued|, the skip is canceled in the \emph{normal} and
\emph{bold} math versions.
-%
-%\footnote{\RightNote{1.3j}Formerly, it was set to
-% |0mu|.}
-% obsolete et mme faux avec 1.3j
-% \footnote{if \cs{begin\{document\}} is not followed
-% with \cs{MTversion\{normal\}}, the latest values set in the preamble by
-% these commands are used at the beginning of the document,
-% even under option \texttt{subdued}.}
+\item \mstcmd{MTnormalasterisk}, \mstcmd{MTactiveasterisk}: the latter will
+ use for |*| and |\ast| the text font asterisk, suitably lowered; the former
+ if used in the preamble tells \mst to not modify the non-\mst situation, or
+ if used in the body to revert to it. Both are no-op's in absence of option
+ asterisk.
+
+\begin{footnotesize}
+ A legacy feature is that \MTactiveasterisk is \emph{not} a no-op in
+ subdued \emph{normal} or \emph{bold} math versions, and does let the
+ asterisk obey the \MTlowerast configuration, if used explicitly by user
+ (even in the preamble).
+
+ At \mstrelease{1.4}\RLNote{changed:}{\mstrelease{1.4}} \mst checks at
+ |\begin{document}| (or each time \MTaciveasterisk is made use of) if
+ * is a Babel shorthand (which I far as I know is the case of no
+ language) or is already mathematically active. In the latter case the
+ * is not modified in math mode; and it is not modified either if
+ found to be catcode active but not a \ctanpkg{babel} shorthand. In
+ contrast, the \cs{ast} will always be set to obey \MTlowerast
+ configuration after \MTactiveasterisk.
+
+\end{footnotesize}
-\item \mstcmd{MTlowerast}\marg{dimen}: a \cs{raisebox} command is
+\item \mstcmd{MTlowerast}\marg{dimen}: under option asterisk
+ a \cs{raisebox} command is
used to lower the text asterisk to produce a reasonable math
asterisk. The package uses this command initially with
argument |0.3\height|, this will have to be fine-tuned for
each given text font but worked out ok with the fonts we
- tried. Note that the dimension argument will be used also in
+ tried. The dimension argument will be used also in
sub-scripts and sub-sub-scripts, so it is best not to use an
- absolute dimension.
+ absolute dimension. The dimension specification is for text
+ it can not be with |mu| unit.
\item \mstcmd{MTmathoperatorsobeymathxx}, \mstcmd{MTmathoperatorsdonotobeymathxx}: the
former is done by default, it makes operator names obey math alphabets. See
- also section \ref{sec:mathxx}. This functionality \emph{does
+ also \autoref{sec:mathxx}. This functionality \emph{does
{\normalfont\bfseries not} rely}
on ``math active characters''. Automatically issued by each \cs{MTversion},
except under option |subdued| when switching to \emph{normal} or \emph{bold}.
- \item \mstcmd{MTcustomgreek}:\RightNote{1.3d} in case \mst has been loaded with one of its
- Greek related options, this activates the corresponding
- customization of Greek letters in math mode. It is issued
- automatically by the package in the preamble (except if loaded with
- |subdued| option) and at each switch of math version via
- |\MTversion| or |\MTversion*| (except for the normal and bold math
- versions in subdued mode). Also available as
- |\Mathastextcustomgreek|. May be used even inside of math mode.
+\item \mstcmd{MTmathactiveletters}:\RightNote{\mstrelease{1.3}}
+ `math activation' of all ascii Latin
+ letters. This is done by the package automatically except under the
+ subdued option.
- \item \mstcmd{MTstandardgreek}:\RightNote{1.3d} in case \mst was loaded with one of the Greek
- related options this command reverts the customization, it resets the Greek
- letters to their definitions in force at package loading time. Can be used
- in the preamble, but is mainly for the document body (may even be used
- inside math mode ...). Done automatically
- under the |subdued| option when switching to the normal or bold math
- version. Also available as |\Mathastextstandardgreek|.
-\end{enumerate}
-
-\subsubsection{Expert commands which are preamble-only}
-
-\begin{enumerate}[label=$\bullet$, leftmargin=1em]
-\item \mstcmd{MTgreekupdefault}:\RightNote{1.3x} a command with
- no argument whose expansion specifies, under LGRgreek regime, the
- shape for the `|up|' Greek control sequences (and for the no-postfix
- Greek control sequences under upgreek option) in all \mst math
- versions declared \emph{afterwards} via \cs{Mathastext} or
- \cs{MTDeclareVersion}. The a priori default for this shape is `|n|'
- (without the quotes). See
- \autoref{sec:newgreek}.
-
- This command can also be defined \emph{prior} to loading the package,
- as the package itself only does:
- \centeredline{|\providecommand*\MTgreekupdefault{n}|}
-
-\item \mstcmd{MTgreekitdefault}:\RightNote{1.3x} a command with
- no argument whose expansion specifies, under LGRgreek regime, the
- shape for the `|it|' Greek control sequences (and for the no-postfix
- Greek control sequences under itgreek option) in all \mst math
- versions declared \emph{afterwards} via \cs{Mathastext} or
- \cs{MTDeclareVersion}. The a priori default for this shape is `|it|'
- (without the quotes).
- See \autoref{sec:newgreek}.
-
- This command can also be defined \emph{prior} to loading the package,
- as the package itself only does:
- \centeredline{|\providecommand*\MTgreekitdefault{it}|}
-\end{enumerate}
-
-\subsubsection{Expert commands usable only outside of math mode}\label{sec:cmdsoutmath}
+ At \mstrelease{1.4}\RLNote{changed:}{\mstrelease{1.4}} its behavior was
+ modified significantly: instead of setting some toggle obeyed only at
+ entrance of math mode, it acts on the spot immediately.
+\begin{snugshade}
+ Formerly, this command was only a configuration toggle with no immediate
+ impact (and was not usable from inside math mode). Indeed, the \mst work of
+ mathematical activation was done (or not done) \emph{each time} math mode
+ was entered (if not in subdued), and the ascii letters kept standard
+ mathcodes outside of math mode.
+
+ The command now does the mathematical activation on the spot and the meaning
+ of the active shape of the ascii letters --- a priori undefined because
+ typesetting a document with an active ascii letter is near impossible, as no
+ \LaTeX{} command name used in the document can contain it --- is modified
+ here and then; but of course the catcodes are not modified only the
+ mathcodes are. Except if \mst is loaded with the subdued option, this
+ mathematical activation is executed already at package loading time.
+
+ If with the subdued option, the command is inactive in the preamble, as
+ well as in the \emph{normal} and \emph{bold} math versions. In all cases it
+ gets (re-)executed automatically when \MTversion is used for activating a
+ non-subdued math version.
-They are usable only from outside math mode because they act via turning on
-or off the execution, each time math mode is entered, of certain macros added
-by \mst to the \cs{everymath} and \cs{everydisplay} token list variables.
+ \begin{footnotesize}
+ The new situation may be dangerous if the document author makes a letter,
+ say |A|, catcode active at some point, with a definition of the active
+ state using |\string A|. As \mst has (earlier, in the preamble) set |A|
+ to be mathematically active as well, and as the \cs{string} changes
+ nothing to that, an infinite loop will be triggered by such an |A| in math
+ mode.
+
+ But, having an active ascii letter can only be in very localized portions
+ of a document, and only be authored by experts. The experts should
+ carefully make sure the mathcode of the letter is not active if they set
+ the catcode to active and let the active meaning use \cs{string} on the
+ letter itself, thus we can trust that the mathematical activation done
+ earlier by \mst is undone and there will be no problems.\par
+ \end{footnotesize}
-\begin{enumerate}[label=$\bullet$, leftmargin=1em]
+ This \mstrelease{1.4} change may thus need to be followed by some
+ adjustments in some quite special circumstances caused by some expert
+ interventions.
-\item \mstcmd{MTmathactiveletters}: activates the `math activation' of Latin
- letters. This is done by the package during loading, except under the
- |subdued| option.
-%
-% \footnote{\RightNote{1.3j}Formerly, it was also executed
-% from each \cs{Mathastext} in the preamble.}
- It is again executed in the
- body at each \cs{MTversion}, except under the |subdued| option when
- switching to the \emph{normal} or \emph{bold} math versions.
+ See \autoref{sec:mathskips} and \autoref{sec:ic} for the rationale of this
+ mathematical activation, and \autoref{ssec:hackingletters} for ways to
+ use it for other goals.
+\end{snugshade}
+ \begin{footnotesize}
+ If you do want mathematically active letters also in subdued \emph{normal}
+ or \emph{bold} math versions (to apply tricks such as those of
+ \autoref{ssec:hackingletters}) there is \cs{mst@mathactivateletters} which
+ does not check the subdued status.\par
+ \end{footnotesize}
+
+\item \mstcmd{MTmathstandardletters}:\RightNote{\mstrelease{1.3}}
+ turns off the mathematical active
+ ascii letters, i.e.\@ reverts their mathcodes to package font configuration.
+ Here ``standard'' only means
+ that the letters will not be mathematically active, but they are still under the
+ influence of \mst regarding the typeface they use, so they are only
+ ``standard'' from \mst point of view.
+
+ At \mstrelease{1.4}\RLNote{changed:}{\mstrelease{1.4}} its behavior was
+ modified: instead of setting some toggle obeyed only at entrance of math
+ mode, it acts on the spot immediately.
+ \begin{snugshade}
+ \MTmathstandardletters will not try to restore the meaning associated to
+ the catcode active variant of the letter token which may have been in place
+ at the time of \MTmathactiveletters. This meaning is not saved for
+ later reset.
+
+ \emph{Except} if the \emph{letter} was an active Babel-shorthand at the time
+ of \MTmathactiveletters, which is in fact almost impossible to achieve
+ via the \ctanpkg{babel} interface.
+
+ And if the letter was catcode-active due to user action,
+ \MTmathactiveletters will not have made it mathematically active, nor
+ will it have modified its active meaning. So the active meaning may get
+ overwritten only for a letter having a normal catcode at time of
+ \MTmathactiveletters but which for some reason has some meaning
+ associated to its catcode active variant.
+ \end{snugshade}
+
+\item \mstcmd{MTmathactivedigits}:\RLNote{new:}{\mstrelease{1.4}}
+ is a no-op except under option
+ activedigits. It then makes all digits mathematically active and is
+ executed during package loading, except if subdued. It is again executed
+ when entering any non-subdued math version in the document body. See
+ \autoref{ssec:hackingletters} for an example of use.
- The letters are made mathematically active\footnote{the |mathcode|'s are
- only modified at the time of execution of \cs{everymath},
- \cs{everydisplay}.} to insert the extra skips as specified by
- \csb{MTsetmathskips} (see section \ref{sec:mathskips}), and also possibly
- the italic corrections when using upright fonts (see section \ref{sec:ic}).
+ \begin{footnotesize}
+ If you do want mathematically active digits also in subdued \emph{normal}
+ or \emph{bold} math versions (to apply tricks such as those of
+ \autoref{ssec:hackingletters}) there is \cs{mst@mathactivatedigits} which
+ does not check the subdued status.\par
+ \end{footnotesize}
-\item \mstcmd{MTmathstandardletters}: cancels the `math activation' of the letters.
- Must be re-issued after each \csb{MTversion}, but see
- \csb{MTeverymathdefault}.
+\item \mstcmd{MTmathstandarddigits}:\RLNote{new:}{\mstrelease{1.4}}
+ a no-op except under option
+ activedigits. Under this option it resets the digits to their normal
+ mathcodes as configured by the package.
\item \mstcmd{MTicinmath}: this command is executed by default by \mst except in
case of option |subdued| or if the user chosen letter shape is oblique (|it|
or |sl|). It tells \mst to add italic corrections after all letters in math
mode, except within the scope of math alphabets.
-%
-% \footnote{\RightNote{1.3i}%
-% Formerly, italic corrections were added to the (non-oblique) letters of
-% \cs{mathnormal} arguments.}
- This command and the next ones in this item can be used in the preamble as
- well as in the body of the document (in case of |subdued| option, using the
- commands from within the preamble will remain without effect, as the
- document body will start in the subdued normal math version anyhow.) But
- each \cs{MTversion} in the body will re-emit \cs{MTicinmath} (in case of
+ This\RLNote{changed:}{\mstrelease{1.4}}
+ command and the next ones in this item can be used anywhere in the
+ document and even from inside math mode. In case of subdued option, using the
+ command from within the preamble remains without effect, as the
+ document body will start in the subdued normal math version anyhow.
+ Each \cs{MTversion} in the body reemits \cs{MTicinmath} (in case of
non-oblique letter shape), except if the
|subdued| option was used and the chosen math version is \emph{normal} or
\emph{bold}.
@@ -5153,54 +4944,38 @@ by \mst to the \cs{everymath} and \cs{everydisplay} token list variables.
{\footnotesize
- It may theoretically be used from inside math mode, but the included
- \MTmathactiveletters will have an effect only if issued prior to
- entering math mode.
+ The description above about the command not being executed if the letter
+ shape is italic or slanted is not quite right, as it refers only to the
+ act of inserting or not italic correction. The
+ \MTmathactiveletters component is always executed, however it will be a
+ no-op in |subdued| \emph{normal} and \emph{bold}.
\mstcmd{MTnoicinmath}: this command deactivates the package added
italic corrections. It can be used inside as well as outside
- of math mode (or in the preamble of the document).
-
- \mstcmd{MTICinmath}, \mstcmd{MTnoICinmath}: these commands activate the italic
- corrections only for the uppercase letters (but recall that \cs{MTicinmath}
- is done by default, thus this will typically have to follow
- \cs{MTnoicinmath}.)
-
-% obsolte 1.3i
- % Following some decision of the package author whose rationale has been
- % forgotten, afer \cs{MTICinmath} italic corrections for uppercase letters in
- % arguments to all math alphabets (\emph{i.e.} also \cs{mathnormal}) are
- % suppressed (with \cs{MTicinmath} the italic corrections are suppressed
- % inside the scope of math alphabets \emph{except} \cs{mathnormal}.)
- % No italic corrections are explicitly added inside arguments of math
- % alphabets.
+ of math mode (or in the preamble of the document). Note that it does not
+ deactivate the mathematical activation of the ascii letters. Use
+ \MTmathstandardletters for that.
+
+ \mstcmd{MTICinmath}, \mstcmd{MTnoICinmath}: only acts on the uppercase
+ letters. But recall that \cs{MTicinmath} is done by default, thus
+ using italic corrections only for uppercase needs to go via
+ \cs{MTnoicinmath} then \cs{MTICinmath}.
\mstcmd{MTicalsoinmathxx}: this command de-activates the de-activation of
the italic corrections inside the arguments to the math alphabet
- commands.
-% apart from \cs{mathnormal}.
+ commands.
It can be issued inside as well as outside of math mode. Will be effective
only if \MTicinmath or \MTICinmath is in force.
-% obsolte 1.3i
- % \footnote{it is provided
- % for the \mst defined math alphabet \cs{mathnormalbold} which
- % contrarily to \cs{mathnormal} is not treated apart from the other
- % math alphabets.}
To cancel its effect either enclose it in a group or
environment or re-issue \MTicinmath after it.
}
-\item \mstcmd{MTnormalasterisk}, \mstcmd{MTactiveasterisk}: the latter will use for |*|
- and |\ast| the text font asterisk, suitably lowered; the former tells \mst
- to not modify the \LaTeX\ default. Both are no-op without option
- asterisk.
-
\item \mstcmd{MTeasynonlettersobeymathxx}, \mstcmd{MTeasynonlettersdonotobeymathxx}: the
former is done by default, it makes characters \verb+.+, \verb+/+, \verb+|+,
\verb+\+, \verb+#+, \verb+$+, \verb+%+, and \verb+&+
(if not excluded by package options) obey math alphabet commands. See also
- section \ref{sec:mathxx}. This functionality does \emph{not} make the
+ \autoref{sec:mathxx}. This functionality does \emph{not} make the
characters ``math active'' (but it does modify |\mathcode|'s, naturally).
\item \mstcmd{MTnonlettersobeymathxx}, \mstcmd{MTnonlettersdonotobeymathxx}: the former
@@ -5213,105 +4988,110 @@ by \mst to the \cs{everymath} and \cs{everydisplay} token list variables.
it will have to be coded |$a^{!}$|. Hence, by default, the package does
\MTnonlettersdonotobeymathxx.
- \begin{framed}
- Under |subdued| option, \cs{MTnonlettersobeymathxx} effect is of course
- canceled in the \emph{normal} and \emph{bold} math versions; but please
- note that when switching back to a non-subdued math version it will be
- mandatory to issue again \cs{MTnonlettersobeymathxx} explicitly if its
- effect is to be re-activated.
-
- In particular, executing \cs{MTnonlettersobeymathxx} in the preamble or at
- the start of the document body serves nothing, because the document is in
- the subdued \emph{normal} math version regime then. It must thus be
- executed after the first usage of \cs{MTversion} switching to a
- non-subdued math version, and again on each successive exit from the
- \emph{normal} or \emph{bold} math versions.
- \end{framed}
-
\item \mstcmd{MTexplicitbracesobeymathxx}: extends an earlier \MTnonlettersobeymathxx
to also treat \verb|\{| and \verb|\}|. But then |\left\{|, |\right\}| must
be coded |\left\lbrace|, |\right\rbrace| rather. There is also
\mstcmd{MTexplicitbracesdonotobeymathxx}.
-\item \RightNote{1.3j}\mstcmd{MTnormalprime}, \mstcmd{MTprimedoesskip}: the latter (done by default if not
- |subdued|, and also on each use of \csb{MTversion} in the body of the document
- except for the |subdued| \emph{normal} and \emph{bold} math version)
- makes it so that $'$ takes into account the math glue as specified by
- \csb{MTprimeskip}. The former is its opposite. In all cases the right quote
- |'| is a mathematically active character producing ${}'$ as is the default
- in \TeX, it is only its meaning which changes to include or not an extra
- skip. For some (legacy) reason, this change of meaning is done anew
- by \mst each time math mode is entered. The commands of this item are thus
- no-op from inside math mode.
-
-
-\item \RightNote{1.3j}\mstcmd{MTeverymathdefault}: this hook is executed by
- \csb{MTversion}\marg{version\_name}, except under option |subdued|
- when switching to the \emph{normal} or \emph{bold} math versions. Its
+\item \RightNote{\mstrelease{1.3j}}\mstcmd{MTeverymathdefault}: this hook is executed by
+ \csb{MTversion}\marg{version\_name} (but if under option |subdued|
+ and switching to the \emph{normal} or \emph{bold} math version its default
+ effect is overruled by an \MTeverymathoff executed after it). Its
default meaning is:
\begin{verbatim}
\MTactiveasterisk % this has no effect without option asterisk
\MTprimedoesskip % this makes prime glyph obey extra space
\MTeasynonlettersobeymathxx
- \MTicinmath % this does \MTmathactiveletters, hence also skips from
- % \MTsetmathskips are obeyed.
+ \MTicinmath % this does \MTmathactiveletters, hence the extra
+ % skips from \MTsetmathskips are obeyed.
+ \MTmathactivedigits % this is a no-op in absence of option activedigits
\MTfixfonts % only operant under LuaLaTeX.
\end{verbatim}
- {\footnotesize Notice that under |subdued| option, switching to the
+ {\footnotesize Under |subdued| option, switching to the
\emph{normal} or \emph{bold} version does \csb{MTeverymathoff} which
- includes \cs{MTnonlettersdonotobeymathxx}.
+ includes \MTnonlettersdonotobeymathxx.
The default
\MTeverymathdefault which is issued when going back to a
non-\emph{normal} or \emph{bold} math version doesn't do
- \cs{MTnonlettersobeymathxx}: thus it is up to the user to correct this if
- needed (no issue without |subdued| option).
+ \MTnonlettersobeymathxx: thus it is up to the user to correct this if
+ desired.
Notice also that \csb{MTversion}\marg{version\_name}, except for \emph{normal}
or \emph{bold} if |subdued| does \csb{MTforalldoesskip} and
\csb{MTexistsdoesskip}, which are not included in \cs{MTeverymathdefault}
-actions as they are not related to \cs{everymath} and \cs{everydisplay}.\par}
+actions as they are not related to \cs{everymath} and \cs{everydisplay}.\par
-\item \RightNote{1.3j}\mstcmd{MTeverymathoff}: does \MTnormalasterisk,
+At \mstrelease{1.4}, the name of this command diverges somewhat from its
+action as mathematical activation of ascii letters (or, optionally, of digits)
+will happen on the spot and not during \cs{everymath} or \cs{everydisplay}
+execution.\par
+}
+
+\item \RightNote{\mstrelease{1.3j}}\mstcmd{MTeverymathoff}: does \MTnormalasterisk,
\MTnormalprime, \MTnonlettersdonotobeymathxx,
- \MTeasynonlettersdonotobeymathxx, \MTmathstandardletters and
+ \MTeasynonlettersdonotobeymathxx, \MTmathstandardletters,
+ \MTmathstandarddigits\RightNote{\mstrelease{1.4}} and
\MTdonotfixfonts.
- {\footnotesize \RightNote{1.3i}The commands
- |\url/\nolinkurl| of package |hyperref| and |url| from |url.sty| (which
+ Automatically done by \csb{MTversion}|{normal}| (or |{bold}|) under option |subdued|
+ (and
+ also \csb{MTnormalexists} and
+ \csb{MTnormalforall} are executed then).
+
+
+ {\footnotesize \RightNote{\mstrelease{1.3i}}The commands
+ |\url/\nolinkurl| of package |hyperref| and |\url| from |url.sty| (which
use math mode under the hood) are patched by \mst to do \MTeverymathoff
automatically: this is needed because \mst modifies anew some mathcodes
\emph{each time math mode is entered,} hence may overwrite to some extent
- the specific preparation done by |{url,hyperref}.sty|.
- % {\parfillskip0pt\hfill
- % \rlap{\kern10pt\textcolor{magenta}{\bfseries New! (1.3i)}}\par}
+ the specific preparations done by |{url,hyperref}.sty|.
+
+ \RightNote{\mstrelease{1.4}}However, in some cases it may be interesting to
+ be able to apply hacks as described in \autoref{ssec:hackingletters}.
+ You can use now \MTeverymathoff as a hook inside
+ |\url| and |\nolinkurl| commands. Perhaps redefine it (locally) to do
+ all of the above except \MTmathstandardletters and/or
+ \MTmathstandarddigits, and use the \autoref{ssec:hackingletters}
+ instructions to achieve special effects for some letters or digits in
+ the URLs rendered via |\url| and |\nolinkurl|.
+ \par
+ }
+
+\end{enumerate}
- Automatically done by \csb{MTversion} under option |subdued|
- if switching to the \emph{normal} or \emph{bold} math versions; and
- \csb{MTversion} then does also \csb{MTnormalexists} and
- \csb{MTnormalforall}.
-\par}
+\subsubsection{Expert commands usable only outside of math mode}\label{sec:cmdsoutmath}
+
+There is only one pair of commands here: \MTfixfonts and \MTdonotfixfonts.
+They are operant only under \LuaLaTeX{}. As \MTeverymathdefault and
+\MTeverymathoff use them, they arguably could have been listed here, but
+only for engine \LuaLaTeX{}.
\small
-\item \RightNote{1.3o}\mstcmd{MTfixfonts}: this is operant only under
+\begin{enumerate}[label=$\bullet$, leftmargin=1em]
+
+\item \RightNote{\mstrelease{1.3o}}\mstcmd{MTfixfonts}: this is operant only under
\LuaLaTeX{}. It has the effect that each time math mode is entered macro
\csb{MTfixmathfonts} will be executed. The latter forces so-called |base|
mode for the used text font in math mode, in an effort to (only partially,
see code comments) fix the fact that OpenType features such as Lining
Figures were in some cases not being applied in math mode when one uses text
fonts there (text fonts are declared by \LuaTeX+|luaotfload| to use |node|
- mode, which is non-functional in math.) It is invoked automatically by the
+ or |harf| mode, which are non-functional in math.) It is invoked automatically by the
package (except for |normal| and |bold| math versions under |subdued|
option), and in normal situations, there is no reason to use it directly.
+ \RLNote{changed:}{\mstrelease{1.4}}The hack was updated at \mstrelease{1.4}
+ in order to also handle fonts using |Renderer=HarfBuzz|.
+
% pas envie de perdre mon temps l-dessus. D'ailleurs peut-tre dj pour
% commencer bm ne fonctionne pas avec fontes OpenType.
% Notice (not tested) that package |bm| is presumably not compatible.
-\item \RightNote{1.3o}\mstcmd{MTdonotfixfonts}: cancels the job of
+\item \RightNote{\mstrelease{1.3o}}\mstcmd{MTdonotfixfonts}: cancels the job of
|\MTfixfonts|. Done automatically in subdued mode when in the |normal| or
|bold| math version; in normal contexts, there is no reason to use this
command. Only operant under \LuaLaTeX.
@@ -5321,17 +5101,19 @@ actions as they are not related to \cs{everymath} and \cs{everydisplay}.\par}
\subsubsection{Expert commands usable only in math mode}
\begin{enumerate}[label=$\bullet$, leftmargin=1em]
-{\small
-\item\RightNote{1.3p}%
+
+\item\RightNote{\mstrelease{1.3p}}%
\mstcmd{MTfixmathfonts}: this used to be an internal package macro
- but it is given a public name at |1.3p| because I discovered that
+ but it is given a public name at \mstrelease{1.3p} because I discovered that
|$..\hbox{\mathversion{foo}$..$}..$| causes an
issue and one needs to invoke again \cs{MTfixmathfonts} \emph{after} the
\verb|\hbox|, for some reason. To be used \emph{only} under \LuaLaTeX{} and only for
such rare cases where it may be needed.\par
-}
+
\end{enumerate}
+\normalsize
+
\section{Package options}
\subsection{Summary of main options}
@@ -5388,7 +5170,8 @@ actions as they are not related to \cs{everymath} and \cs{everydisplay}.\par}
roughly by themes. So, objectively, the best for the diligent reader is to
read thoroughly all descriptions.
\begin{enumerate}[label=$\bullet$, leftmargin=1em]
- \item \mstopt{basic}: only mathastextify letters and digits.
+ \item \mstopt{basic}: only mathastextify (ascii) letters and digits. Can
+ be combined with either nodigits or noletters.
\item \mstopt{subdued}: acts in a subdued way, which means that the \LaTeX\
``normal'' (default) and ``bold'' (triggered by \cs{boldmath} or
\cs{mathversion}|{bold}|, undone by \cs{unboldmath} or on exit from a
@@ -5410,10 +5193,10 @@ actions as they are not related to \cs{everymath} and \cs{everydisplay}.\par}
handles Greek letters, also lowercase (but not uppercase) Greek
letters will use this a priori italic shape except if some other
option such as \blueit{upgreek} was used.%
- \footnote{Since \texttt{1.3x}, in presence of the \blueit{LGRgreek}
- option in addition to \blueit{italic}, the \cs{MTgreekitdefault}
+ \footnote{Since \texttt{1.3y}, in presence of the \blueit{LGRgreek}
+ option in addition to \blueit{italic}, the \csb{MTgreekitdefault}
shape is then used for lowercase Greek letters and
- \cs{MTgreekupdefault} for uppercase.}
+ \csb{MTgreekupdefault} for uppercase.}
\item \mstopt{frenchmath}: configures the lowercase Latin letters to use
italic shape (\cs{itdefault}), and uppercase Latin letters to be in
same shape as for digits and operator names (i.e.\@ a priori
@@ -5424,8 +5207,8 @@ actions as they are not related to \cs{everymath} and \cs{everydisplay}.\par}
and uppercase Greek letters will use the same shape as
operator names, except if some other option such as \blueit{itgreek}
was used.%
- \footnote{Under \blueit{LGRgreek} and since |1.3x|, the
- \cs{MTgreekupdefault} is used for Greek letters if no other option
+ \footnote{Under \blueit{LGRgreek} and since \mstrelease{1.3y}, the
+ \csb{MTgreekupdefault} is used for Greek letters if no other option
such as \blueit{itgreek} was employed.}
\begin{snugshade}
@@ -5434,9 +5217,7 @@ actions as they are not related to \cs{everymath} and \cs{everydisplay}.\par}
be in the same shape as the one for digits and operator
names) is \textbf{not} undone in the subdued ``normal''
and ``bold'' math versions. It holds throughout the
- document, but math versions declared by \mst may use
- \MTshape and \MTlettershape to, in effect, obtain
- whatever configuration is desired.
+ document.
As a bonus, note that doing
\centeredline{|\usepackage[basic,subdued,frenchmath]{mathastext}|}
@@ -5490,7 +5271,7 @@ actions as they are not related to \cs{everymath} and \cs{everydisplay}.\par}
%\end{footnotesize}
-\item \mstopt{defaultalphabets}: \RLNote{new behavior}{1.3za}\mst
+\item \mstopt{defaultalphabets}: \RLNote{new behavior}{\mstrelease{1.3za}}\mst
always defines \cs{Mathnormal}, \cs{Mathrm}, \cs{Mathbf} etc... to
refer to the \mst-ified text fonts, and redefines the math
alphabets \cs{mathrm}, \cs{mathit}, \cs{mathtt} etc\dots{} (but
@@ -5501,22 +5282,22 @@ actions as they are not related to \cs{everymath} and \cs{everydisplay}.\par}
be available whether or not this option is made use of.
\begin{footnotesize}
- Prior to |1.3za| (and since |1.15f|), this option also prevented the
+ Prior to \mstrelease{1.3za} (and since \mstrelease{1.15f}), this option also prevented the
package to declare the \cs{Mathnormal} et al.\@ and \cs{mathnormalbold}
commands. In this context, recall that the dreaded ``too many math
alphabets'' error can only occur on \emph{use} in the document of too many
of such commands, and not at the time of their declarations. The author's
- notes from time of |1.15f| release (|2012/10/25|) only say that it may not
+ notes from time of \mstrelease{1.15f} release (|2012/10/25|) only say that it may not
be ``useful'' to package user to have both (for example) |\mathrm| and
|\Mathrm|, which sounds weird if they are to acquire distinct meanings.
- So since |1.3za| both will exist. In the default package configuration
+ So since \mstrelease{1.3za} both will exist. In the default package configuration
|\mathrm| is configured to expand to |\Mathrm| (with some extra behavior
under LGRgreek+), and with this option or the defaultrm option
|\mathrm| is kept with its original meaning (and the LGRgreek+ extras do
not work).\par
\end{footnotesize}
-\item \RLNote{changed:}{1.3za}\mstopt{defaultnormal}, \mstopt{defaultrm},
+\item \RLNote{changed:}{\mstrelease{1.3za}}\mstopt{defaultnormal}, \mstopt{defaultrm},
\mstopt{defaultbf}, \mstopt{defaultit}, \mstopt{defaultsf},
\mstopt{defaulttt}: tell \mst to not set up, respectively, the
\cs{mathnormal}, \cs{mathrm}, \cs{mathbf}, \cs{mathit}, \cs{mathsf}, and
@@ -5524,11 +5305,11 @@ actions as they are not related to \cs{everymath} and \cs{everydisplay}.\par}
always via \cs{Mathnormal}, \cs{Mathrm}, \cs{Mathbf}, \cs{Mathit}, etc...
\begin{footnotesize}
- Prior to |1.3za| these options also prevented the creation of the
+ Prior to \mstrelease{1.3za} these options also prevented the creation of the
corresponding \mst command with an uppercased initial.\par
\end{footnotesize}
-\item \mstopt{ncccomma}:\RightNote{1.3x} it triggers the loading of the
+\item \mstopt{ncccomma}:\RightNote{\mstrelease{1.3y}} it triggers the loading of the
\ctanpkg{ncccomma} package%
%
\footnote{Alexander I. \textsc{Rozhenko}, \emph{Use comma as decimal
@@ -5553,8 +5334,8 @@ those parts of the document using another language than French.%
reenact it. For background on this issue see
\url{https://github.com/latex3/babel/issues/190}.
- This does not apply to \ctanpkg{decimalcomma} |1.3| or later.}
-\item \mstopt{decimalcomma}:\RightNote{1.3zb} it triggers the loading of the
+ This does not apply to \ctanpkg{decimalcomma} \mstrelease{1.3} or later.}
+\item \mstopt{decimalcomma}:\RightNote{\mstrelease{1.3zb}} it triggers the loading of the
\ctanpkg{decimalcomma} package%
%
\footnote{Antoine \textsc{Missier}, \emph{Comma for decimal numbers},
@@ -5565,7 +5346,7 @@ The same remarks apply as for the ncccomma option. In particular \emph{note
\emph{\texttt{decimalcomma}}, the correct way is to use the eponymous
option.}
-\item \mstopt{binarysemicolon}:\RightNote{1.3x} sets (except if
+\item \mstopt{binarysemicolon}:\RightNote{\mstrelease{1.3y}} sets (except if
\blueit{nopunctuation} is used) the semi-colon to let \TeX\ use
spacing of binary type, not punctuation type, around the semi-colon
(it is often used in French mathematical typesetting as separator in
@@ -5575,12 +5356,12 @@ The same remarks apply as for the ncccomma option. In particular \emph{note
The effect applies to all math versions, even the \emph{normal} and
\emph{bold} math versions with \mst having been loaded with the
\blueit{subdued} option.
-\item \mstopt{frenchmath*}:\RLNote{CHANGED!}{1.3zb} does all three of \blueit{frenchmath},
+\item \mstopt{frenchmath*}:\RLNote{CHANGED!}{\mstrelease{1.3zb}} does all three of \blueit{frenchmath},
\blueit{decimalcomma} and \blueit{binarysemicolon}.
\begin{footnotesize}
- Prior to |1.3zb|, this option did what is now available via frenchmath+.
- The |1.3zb|
+ Prior to \mstrelease{1.3zb}, this option did what is now available via frenchmath+.
+ The \mstrelease{1.3zb}
change was made as a follow-up consecutive to the |2.7| release \ctanpkg{frenchmath}.
Indeed this option as explained in \autoref{ssec:frenchmath} is provided as
a compatiblity layer with \ctanpkg{frenchmath}, and it was mandatory to
@@ -5588,20 +5369,75 @@ The same remarks apply as for the ncccomma option. In particular \emph{note
consecutive to the internal change of \ctanpkg{frenchmath} at its |2.7|
release to use \ctanpkg{decimalcomma}.\par
\end{footnotesize}
-\item \mstopt{frenchmath+}:\RightNote{1.3zb} does all three of \blueit{frenchmath},
+\item \mstopt{frenchmath+}:\RightNote{\mstrelease{1.3zb}} does all three of \blueit{frenchmath},
\blueit{ncccomma} and \blueit{binarysemicolon}. This is what used to be
- called frenchmath* prior to |1.3zb|.
+ called frenchmath* prior to \mstrelease{1.3zb}.
\item \mstopt{endash}, \mstopt{emdash}: use the text font en-dash (\textendash) or even
the em-dash (\textemdash, but this seems crazy) for the minus sign
rather than {}-{}. endash option is default for the package.
-\item \mstopt{unicodeminus}:\RightNote{1.3q} use the |MINUS SIGN U+2212| (requires
+\item \mstopt{unicodeminus}:\RightNote{\mstrelease{1.3q}} use the |MINUS SIGN U+2212| (requires
\ctanpkg{fontspec}.) Or, in the form |unicodeminus=HHHH| with four \emph{uppercased}
hexadecimal digits: use the |U+HHHH| code point. As noendash really means
``use the hyphen from the text font'', unicodeminus remains without effect
under it, or, naturally, under nominus. Without this option,
\mst uses the |EN DASH U+2013| by default for OpenType fonts.
-\item \mstopt{asterisk}: use the text font (or the Symbol font) asterisk in math mode.
-\item \mstopt{nohbar}: prevents \mst from defining its own
+\item \mstopt{asterisk}: this tells \mst to replace the binary math operator $*$
+ and the control sequence \cs{ast} with versions which uses the text asterisk
+ * suitably lowered, and with the correct spaces around it as binary
+ operator. The amount of lowering%
+%
+\footnote{With the option
+ \texttt{symbolmisc}, the asterisk is picked from the Symbol font, and the
+ amount of lowering is non-customizable; however if a math alphabet command
+ is used, the asterisk is then again from a text font and the lowering will
+ be as specified by \cs{MTlowerast}.}
+%
+ is decided by the mandatory argument to the command
+ \csb{MTlowerast}\marg{dimen}. The package does
+ \cs{MTlowerast}|{.3\height}|. Using the |ex| unit as in
+ \cs{MTlowerast}|{.5ex}| is not a good idea as it does not scale properly in
+ the script and scriptscript styles.
+
+ Attention that if using this option, inputs such as |$R^*$| or |$R^\ast$|
+ raise errors and \emph{must} be replaced by |$R^{*}$|, respectively
+ |$R^{\ast}$|. The $*$ is now `mathematically active'\thinspace%
+%
+\footnote{In
+ a hopefully safe way, for example {\ttfamily\$\string\label\{eq*1\}\$} is
+ ok.}
+%
+ and |*| and |\ast| will obey the math alphabet
+ commands (see \autoref{sec:mathxx}).
+
+\item \mstopt{activedigits}:\RLNote{new:}{\mstrelease{1.4}}
+ it makes all digits mathematically active! This is
+ reserved to expert \LaTeX{} users. See \autoref{ssec:hackingletters} for an
+ example. Do not use this option if you don't intend to make use of such
+ techniques to achieve special effects at some location of your document at
+ least. (I know this goes without saying, but passing this option and not
+ using it is only adding overhead to all your equations with digits).
+
+\item \mstopt{nodigits}: no \mst-ification of digits.
+\item \mstopt{noletters}:\RLNote{new:}{\mstrelease{1.4b}}
+ This is quite antithetical to the package core aim, but here you go.
+
+ \begin{footnotesize}
+ This option implies nohbar and defaultimath.
+
+ Note though that \mst will still declare to \LaTeX{} two extra symbol
+ fonts and define alphabet commands such as \Mathrm, \Mathnormal and
+ \mathnormalbold which map to them. But ascii letters will if not in
+ arguments of these commands not use the \mst-font and all business of
+ active letters (see \autoref{ssec:hackingletters}) is now irrevocably
+ inaccessible.
+
+ If you simply want to avoid the overhead of math active
+ letters, use rather \MTmathstandardletters in the preamble after having
+ loaded the package (although this does not undo the fact that \mst will
+ have redefined what a letter does if it is catcode active but that remark
+ should have been made in an even smaller typeface).\par
+ \end{footnotesize}
+ \item \mstopt{nohbar}: prevents \mst from defining its own
\cs{hbar}.
\item \mstopt{noendash}: the minus sign will be the - from the
text font, not the en-dash \textendash.
@@ -5616,7 +5452,7 @@ The same remarks apply as for the ncccomma option. In particular \emph{note
\ \mstopt{nopunctuation} ,\,.\,:\,;\ \mstopt{noplus},
\mstopt{nominus}, \mstopt{noplusnominus}\ +\,\textendash{} \mstopt{noequal} =\
\mstopt{noparenthesis} (\,)\,[\,]\,/\ \mstopt{nospecials}
-\#\,\$\,\%\,\&\ and \mstopt{nodigits}.
+\#\,\$\,\%\,\&\ (and nodigits and noletters mentioned earlier).
\item \mstopt{alldelims}: true by default, means that the
characters excluded by nolessnomore are
treated. Use this option in case of a mono-width
@@ -5690,7 +5526,7 @@ Euler font.
declared |\alphaup|, |\alphait|, ...., and the
associated \mathgreekup
and \mathgreekit commands to access the underlying fonts, and also since
- |1.3za| \mathgreekupbold and \mathgreekitbold.
+ \mstrelease{1.3za} \mathgreekupbold and \mathgreekitbold.
The font used by these math
alphabet commands in the subdued ``normal'' and ``bold'' is either
@@ -5699,7 +5535,7 @@ Euler font.
\MTgreekfont when the command \Mathastext (without
optional argument) was used in the preamble.
- |1.3za| fixes here a bug which froze the target font to be
+ \mstrelease{1.3za} fixes here a bug which froze the target font to be
the one at time of loading the package: this bug applied
(only) to the subdued ``normal'' and ``bold'' math versions
and was not readily visible as there is a priori no reason to
@@ -5716,7 +5552,7 @@ Euler font.
LGRgreek and then \MTgreekfont manually appropriately.
\item \mstopt{LGRgreek+} and
- \mstopt{LGRgreeks+}:\RightNote{1.3za} they extend
+ \mstopt{LGRgreeks+}:\RightNote{\mstrelease{1.3za}} they extend
respectively LGRgreek or LGRgreeks to let Greek letters
control sequences when in the scope of \mathrm, \mathit,
and \mathbf behave as would be expected by LaTeX users who
@@ -5747,7 +5583,7 @@ Euler font.
accents. As in vanilla \LaTeX{}, they are taken from the font
for the digits and \cs{log}-like names. Obey the alphabet
changing commands.
- \item \mstopt{unimathaccents}:\RightNote{1.3u} extends |mathaccents| to
+ \item \mstopt{unimathaccents}:\RightNote{\mstrelease{1.3u}} extends |mathaccents| to
OpenType fonts. Gave bad results in my brief testing.
\item \mstopt{defaultimath}: do not overwrite \cs{imath} and
\cs{jmath} to use \cs{inodot} and \cs{jnodot}.
@@ -5756,7 +5592,29 @@ OpenType fonts. Gave bad results in my brief testing.
\item \mstopt{fouriervec}: provides a \cs{fouriervec} command. The user can then
add in the preamble \cs{let}\cs{vec}$=$\cs{fouriervec}. There is also
always available a ``poor man'' vec accent \cs{pmvec} for upright letters.
- \end{enumerate}
+\item \mstopt{everymath}:\RLNote{new:}{\mstrelease{1.4}} this option tells
+ \mst to employ as in the \mstrelease{1.3} releases the
+ \cs{everymath}/\cs{everydisplay} registers to store certain actions to be
+ executed at each entrance into math mode. The main change with
+ \mstrelease{1.4} is that mathcode changes done by user (or possibly via
+ language changes in a multilingual \ctanpkg{babel} context) in the document
+ body, and which apply to those characters which \mst used to handle as part of
+ \cs{everymath}/\cs{everydisplay}, will now have an effect, whereas with
+ earlier releases or this one
+ with the everymath option, they may get overruled by \mst. Use
+ everymath for backward compatibility if needed (and \emph{only} if needed).
+ Notice though that regarding ascii letters, there is no return to the
+ pre-\mstrelease{1.4}: they will not acquire their mathcode active status only
+ at each entrance into math mode, even with this option,
+ but once and for all at package loading time, if not subdued, or when using
+ \MTversion to enter a non-subdued math version.
+
+ Please report breakages due to the \mstrelease{1.4} release, which made it
+ necessary for you to use this option everymath as workaround.
+
+ The option is destined to be removed at next major release and it will warn
+ the user about this.
+\end{enumerate}
Thanks to Kevin~\textsc{Klement}, Tariq~\textsc{Perwez}
and Ricard~\textsc{Torres} for sending bug reports and feature requests when
@@ -5780,6 +5638,7 @@ Numerous examples will be found there:\\
\label{sec:changelog}
\begingroup
+\hyphenation{Lua-La-TeX}
\def\MacroFont{\footnotesize\normalfont}
% utilis par verbatim en classe scrdoc (ou plutt shortvrb)
@@ -5817,16 +5676,27 @@ Numerous examples will be found there:\\
\lccode`\~`1
\lowercase{\endgroup\def~}{\ifvmode\medskip\expandafter\@DTXLOGhelper\fi 1}
+% 2024/07/10 hypertargets pour \mstrelease (import de etoc, et j'ai dj ici
+% toute une infrastructure rendant le truc trivial avec un fol 1 actif). Par
+% contre j'ai fait une modification s/#1\[/#1 \[/ car le #1 avant se terminait
+% par un espace.\]\]
+% Et attention au detokenize...
+% Il y a juste un problme avec le cas "1.15f and 1.15g".
\begingroup
\catcode`\| 0
\catcode`\\ 12
-|long|gdef|@DTXLOGhelper #1 ----#2|par{|@@DTXLOGhelper #1\[\]|par}
-|long|gdef|@@DTXLOGhelper #1\[#2\]#3|par%
- {|textbf{#1}% le #1 ici contient un espace
+% Je rduis --- ici.
+|long|gdef|@DTXLOGhelper #1 ---#2|par{|@@DTXLOGhelper #1 \[\]|par}
+|long|gdef|@@DTXLOGhelper #1 \[#2\]#3|par%
+ {|hypertarget{|detokenize|expandafter{|fixonexv#1 and|relax}}{|textbf{#1}} %
|ifx|relax #2|relax|else [#2]|fi
|par|nopagebreak}
|endgroup
+% uniquement pour s'occuper de "1.15f and 1.15g" et en profitant du fait qu'il
+% n'y a de rfrence 1.15g nulle part.
+\def\fixonexv#1 and#2\relax{#1}
+
\catcode`-=\active
\def-{%
\catcode`M\active
@@ -5869,7 +5739,7 @@ Numerous examples will be found there:\\
\StopEventually{\end{document}\endinput}
\cleardoublepage
-\newgeometry{hmarginratio=3:2}
+\newgeometry{hmarginratio=2:1}
\small
\section{Implementation}
@@ -5884,27 +5754,44 @@ Numerous examples will be found there:\\
%
%</dtx>
%<*package>
-% The usual catcode regime for letters and digits is assumed and some characters
-% such as |*|, |`|, |"|, |=| are supposed to be of catcode other at the time of loading
-% of \mst. The source of \mst takes precautions for some other characters such
-% as the right quote |'|, which may thus be active with no harm at the time of
-% loading. By the way, I think \LaTeX2e should have provided to authors a
+% The comments are a kind of palimpsest. Indeed they are not destined to the
+% reader but to the author: when coming back to the source code perhaps years
+% after having last looked at it, all bits of past information even if
+% obsolete are useful. Not only comments but perhaps also some ancient parts
+% of the code itself are a bit strange (the author hardly new any \LaTeX{} at
+% that time).
+%
+% For about the same reason, there may be some long macro names which do not
+% fit in the margins and that one sees only partially. The author sometimes
+% has used a workaround to hyphenate, but not systematically. Life is
+% time-limited. At \mstrelease{1.4} large chunks of code have been re-ordered
+% but the global architecture is still somewhat of a mess and doing some such
+% large diffs makes it sometimes difficult to follow small bits of code across
+% commit history, so this is done reluctantly.
+%
+% The usual catcode regime for letters and digits is assumed and some
+% characters such as |*|, |`|, |"|, |=| are supposed to be of catcode other at
+% the time of loading of \mst. The source of \mst takes precautions for some
+% other characters such as the right quote |'|, which may thus be active with
+% no harm at the time of loading (note added |2024/07/16|: very hard to
+% understand why I was so paranoid, but I have kept this annoying constraint).
+%
+% By the way, I think \LaTeX2e should have provided to authors a
% standard macro to be used at the beginning of a style file to make sure the
% catcodes are standard. Shorthands created by Babel should be mostly no problem
% as Babel does the activation only at the |\begin{document}|.
%
-% The comments have been accumulating through successive versions with only
-% partial efforts to achieve some sort of coherence; as a result some are a
-% bit strange or obsolete to various degrees. And the similar remark
-% applies to some ancient parts of the code itself!
-%
-% Should I require |2005/12/01| \LaTeX? (not sure about the month).
+% \mstrelease{1.4} removes a few code branches still there for support to
+% old \LaTeX{} and requires \LaTeX{} |2020-02-02| (which made |\{| and |\}|
+% \cs{protected}; earlier release |2019-10-01| had math macros such as the
+% math accents and \cs{hbar} robust and so far we kept supporting both new and
+% old contexts).
% \begin{macrocode}
-\NeedsTeXFormat{LaTeX2e}
+\NeedsTeXFormat{LaTeX2e}[2020/02/02]
\ProvidesPackage {mathastext}
- [2023/12/29 v1.3zb Use the text font in math mode (JFB)]
+ [2024/07/27 v1.4b Use the text font in math mode (JFB)]
% \end{macrocode}
-% |1.3zb| avoids writing \mst info messages also to console output, only log file.
+% \mstrelease{1.3zb} avoids writing \mst info messages also to console output, only log file.
% Make prefix occupy 20 not 25 characters for alignment with \texttt{LaTeX Font Info},
% as the latter often issues info messages. For similar reason the usages of
% \cs{PackageInfo} will be done with empty lines above and below for better visual
@@ -5915,16 +5802,9 @@ Numerous examples will be found there:\\
\immediate\write\m@ne{}
\PackageInfo{mathastext}{Starting the math mode configuration\@gobble}
% \end{macrocode}
-% \LaTeX{} |2019-10-01| release has made robust math macros such as the math
-% accents and \cs{hbar}.
-% \begin{macrocode}
-\newif\ifmst@robust@obsessed@LaTeX@era
-\@ifl@t@r\fmtversion{2019/10/01}{\mst@robust@obsessed@LaTeX@eratrue}{}
-\edef\mst@robustifyingspace{\ifmst@robust@obsessed@LaTeX@era\space\fi}
-% \end{macrocode}
% Testing for \XeTeX\ and \LuaLaTeX.
%
-% |1.3g 2015/10/15|: update for the naming of primitives, the situation has
+% \mstrelease{1.3g} |2015/10/15|: update for the naming of primitives, the situation has
% evolved both on \XeTeX\ side and on the \LuaLaTeX\ side (LaTeX base
% |2015/10/01|): I was told "U" named math primitives were always available
% for \LuaLaTeX. For \XeTeX, the XeTeX prefix got replaced by U prefix with
@@ -5967,10 +5847,37 @@ Numerous examples will be found there:\\
\ifmst@LuaTeX\mst@XeOrLuatrue\fi
\ifmst@XeTeX \mst@XeOrLuatrue\fi
% \end{macrocode}
-% |1.2|: all inner macros of \mst now starts with |\mst@| for a cleaner
+% \mstrelease{1.4}. I only checked this is correct with TL2024.
+% The macro will be used with |#1| a catcode 11 or 12 token or a one character
+% control sequence such as |\#|.
+% \begin{macrocode}
+\ifmst@XeTeX
+ \def\mst@OnlyIfNotMathActive#1{%
+ \ifnum\mst@Umathcodenum`#1="1FFFFF
+ \expandafter\@gobble
+ \else\expandafter\@firstofone
+ \fi
+ }
+\else\ifmst@LuaTeX
+ \def\mst@OnlyIfNotMathActive#1{%
+ \ifnum\mst@Umathcodenum`#1="1000000
+ \expandafter\@gobble
+ \else\expandafter\@firstofone
+ \fi
+ }
+\else
+ \def\mst@OnlyIfNotMathActive#1{%
+ \ifnum\mathcode`#1="8000
+ \expandafter\@gobble
+ \else\expandafter\@firstofone
+ \fi
+ }
+\fi\fi
+% \end{macrocode}
+% \mstrelease{1.2}: all inner macros of \mst now starts with |\mst@| for a cleaner
% name-space.
%
-% |1.3l 2016/01/29|: hmmm... at this late stage where nobody would expect me
+% \mstrelease{1.3l} |2016/01/29|: hmmm... at this late stage where nobody would expect me
% to still look at the code, I have found at least two macros which still
% didn't: \cs{do@the@endashstuff} and \cs{do@the@emdashstuff}.
%
@@ -5980,16 +5887,16 @@ Numerous examples will be found there:\\
% engines for a while, hence it is not hard to adapt to the replacement of
% |EU1/EU2| by |TU|, maintaining compatibility with legacy installations.
%
+% At \mstrelease{1.4} the support for obsolete |EU1| and |EU2| font encodings
+% has been removed.
+%
% \begin{macro}{\mst@OneifUniEnc}
% The \cs{mst@OneifUniEnc} is expandable but must be used after
% having set \cs{mst@tmp@enc}...
% \begin{macrocode}
\def\mst@oti{OT1}
-\def\mst@eui{EU1}\def\mst@euii{EU2}\def\mst@tu{TU}
-\def\mst@OneifUniEnc {%
- \ifx \mst@tmp@enc\mst@tu 1\else
- \ifx \mst@tmp@enc\mst@eui 1\else
- \ifx \mst@tmp@enc\mst@euii 1\else 0\fi\fi\fi }
+\def\mst@tu{TU}
+\def\mst@OneifUniEnc{\ifx\mst@tmp@enc\mst@tu1\else0\fi}
\newif\ifmst@goahead
\newif\ifmst@abort
% \end{macrocode}
@@ -6006,9 +5913,13 @@ Numerous examples will be found there:\\
\def\mst@enc{\encodingdefault}
\def\mst@fam{\familydefault}
\def\mst@ser{\seriesdefault}
- \def\mst@opsh{\shapedefault} %% will be default shape for operator names
+% \end{macrocode}
+% \noindent\cs{mst@opsh} will hold default shape for operator names.\newline
+% \cs{mst@ltsh} will hold default shape for letters.
+% \begin{macrocode}
+ \def\mst@opsh{\shapedefault}
\def\mst@bold{\bfdefault}
- \def\mst@ltsh{\shapedefault} %% will be default shape for letters
+ \def\mst@ltsh{\shapedefault}
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -6017,7 +5928,7 @@ Numerous examples will be found there:\\
% \end{macro}
% \end{macro}
% \begin{macro}{\mst@greekfont}
-% |1.15c|: for use by the LGRgreek and selfGreek options. Defined as
+% \mstrelease{1.15c}: for use by the LGRgreek and selfGreek options. Defined as
% an \cs{edef} in order to be able to set-up once and for all the
% Greek at the time of \cs{usepackage}. Modifiable in the preamble
% via \cs{MTgreekfont}\marg{font\_name}\cs{Mathastext}.
@@ -6026,20 +5937,24 @@ Numerous examples will be found there:\\
% \end{macrocode}
% \end{macro}
% \begin{macro}{Package options}
-% |2011/03/09|: |1.13| introduces the option LGRgreek and systematic use
+% |2011/03/09|: \mstrelease{1.13} introduces the option LGRgreek and systematic use
% of \cs{if...} conditionals, for better readability (by myself) of
% the code.
%
-% |1.3x| of |2022/11/03| adds |ncccomma|, |binarysemicolon| and
+% \mstrelease{1.3y} of |2022/11/03| adds |ncccomma|, |binarysemicolon| and
% |frenchmath*| options.
%
-% |1.3za| adds |LGRgreek+| and |LGRgreeks+|.
+% \mstrelease{1.3za} adds |LGRgreek+| and |LGRgreeks+|.
%
-% |1.3zb| adds |decimalcomma| and modifies |frenchmath*| to use it. And
-% provides |frenchmath+| as an alias to former |frenchmath*|. Consecutive
-% to the change at |2.7| of \ctanpkg{frenchmath} which replaced
+% \mstrelease{1.3zb} adds |decimalcomma| and modifies |frenchmath*| to use
+% it. And provides |frenchmath+| as an alias to former |frenchmath*|.
+% Consecutive to the change at |v2.7| of \ctanpkg{frenchmath} which replaced
% \ctanpkg{ncccomma} by \ctanpkg{decimalcomma} and broke the compatibility
% recipe explained in \autoref{ssec:frenchmath}.
+%
+% \mstrelease{1.4} adds options |everymath| and |activedigits|.
+%
+% \mstrelease{1.4b} adds |noletters|.
% \begin{macrocode}
\newif\ifmst@italic
\newif\ifmst@frenchmath
@@ -6082,25 +5997,32 @@ Numerous examples will be found there:\\
\newif\ifmst@noexclam
\DeclareOption{noexclam}{\mst@noexclamtrue}
\newif\ifmst@asterisk
- \DeclareOption{noasterisk}{\PackageWarningNoLine{mathastext}
- {option `noasterisk\string' is deprecated.^^J\space\space\space
- Check the documentation}}
\DeclareOption{asterisk}{\mst@asterisktrue}
\newif\ifmst@nospecials
\DeclareOption{nospecials}{\mst@nospecialstrue}
-\newif\ifmst@basic % 1.3 to avoid unnecessary patch of amsmath \newmcodes@
+\newif\ifmst@basic
\DeclareOption{basic}{\mst@basictrue
\ExecuteOptions{noparenthesis,nopunctuation,%
noplusnominus,noequal,noexclam,nospecials,nolessnomore}}
\newif\ifmst@nohbar
\DeclareOption{nohbar}{\mst@nohbartrue}
+% \end{macrocode}
+% \mstrelease{1.4} adds option |activedigits|.
+% \begin{macrocode}
+\newif\ifmst@activedigits
+ \DeclareOption{activedigits}{\mst@activedigitstrue}
\newif\ifmst@nodigits
\DeclareOption{nodigits}{\mst@nodigitstrue}
\newif\ifmst@defaultimath
\DeclareOption{defaultimath}{\mst@defaultimathtrue}
+% \end{macrocode}
+% \mstrelease{1.4b} adds option |noletters|.
+% \begin{macrocode}
+\newif\ifmst@noletters
+ \DeclareOption{noletters}{\mst@noletterstrue\ExecuteOptions{nohbar,defaultimath}}
\newif\ifmst@mathaccents
\DeclareOption{mathaccents}{\mst@mathaccentstrue}
-\newif\ifmst@unimathaccents % 1.3u
+\newif\ifmst@unimathaccents
\DeclareOption{unimathaccents}{\mst@mathaccentstrue\mst@unimathaccentstrue}
\newif\ifmst@needsymbol
\newif\ifmst@symboldelimiters
@@ -6108,7 +6030,7 @@ Numerous examples will be found there:\\
\newif\ifmst@symboldigits
\DeclareOption{symboldigits}{\mst@needsymboltrue\mst@symboldigitstrue}
\newif\ifmst@symbolgreek
-\newif\ifmst@customgreek %% new with 1.3d
+\newif\ifmst@customgreek
\DeclareOption{symbolgreek}{\mst@needsymboltrue\mst@symbolgreektrue
\mst@customgreektrue }
\newif\ifmst@symbolre
@@ -6144,13 +6066,13 @@ Numerous examples will be found there:\\
\DeclareOption{itGreek}{\def\mst@greek@select{1}}
\DeclareOption{upGreek}{\def\mst@greek@select{2}}
% \end{macrocode}
-% Starting with |1.15f| the meaning of the `defaultxx' options has changed. They
+% Starting with \mstrelease{1.15f} the meaning of the `defaultxx' options has changed. They
% now prevent |mathastext| from defining additional alphabets rather than
% prevent it from identifying the `mathxx' with the new `Mathxx'. The
% `Mathnormal' and `Mathrm' alphabet commands are always created as they are
% SymbolFontAlphabets.
%
-% This was again changed at |1.3za|. The additional alphabets are
+% This was again changed at \mstrelease{1.3za}. The additional alphabets are
% always declared, the options only prevent mapping the existing
% `mathxx' to the new `Mathxx'. This may be breaking change if
% people used these options because they had a need for the
@@ -6169,7 +6091,7 @@ Numerous examples will be found there:\\
\newif\ifmst@defaulttt
\DeclareOption{defaulttt}{\mst@defaulttttrue}
% \end{macrocode}
-% Here and elsewhere |1.3za| has removed an
+% Here and elsewhere \mstrelease{1.3za} has removed an
% \cs{ifmst@nonormalbold} conditional.
% \begin{macrocode}
\DeclareOption{defaultalphabets}{\ExecuteOptions{defaultnormal,defaultrm,%
@@ -6185,14 +6107,25 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\newif\ifmst@fouriervec
\DeclareOption{fouriervec}{\mst@fouriervectrue}
% \end{macrocode}
-% |1.15|: the subdued option.
+% \mstrelease{1.15}: the |subdued| option.
% \begin{macrocode}
\newif\ifmst@subdued
\DeclareOption{subdued}{\mst@subduedtrue}
% \end{macrocode}
-% |1.3q|: the unicode option. Thanks to Tobias~\textsc{Brink} for suggesting its
-% incorporation. The parsing of |\CurrentOption| does not seek any robustness,
-% it just does its job if the option is used correctly.
+% \mstrelease{1.4}: the |everymath| option.
+% \begin{macrocode}
+\newif\ifmst@everymath
+ \DeclareOption{everymath}{\mst@everymathtrue
+\PackageWarningNoLine{mathastext}{%
+ `everymath\string' will be removed at next major release.\MessageBreak
+ Please report to the author the circumstances\MessageBreak
+ which mandated its use in the present document}%
+}
+% \end{macrocode}
+% \mstrelease{1.3q}: the |unicode| option. Thanks to Tobias~\textsc{Brink}
+% for suggesting its incorporation. The parsing of \cs{CurrentOption} does
+% not seek any robustness, it just does its job if the option is used
+% correctly.
% \begin{macrocode}
\def\mst@unicodeminus {2013}
\def\mst@checkoption #1unicodeminus#2\mst@#3\mst@@
@@ -6216,7 +6149,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
%
% This broke usage of \cs{Mathastext} macro in preamble.
%
-% |1.3w| works around this via \cs{mst@DeclareMathAccent}. And other
+% \mstrelease{1.3w} works around this via \cs{mst@DeclareMathAccent}. And other
% changes were made in \mst code to cope with these complications around
% robustness.
% \begin{macrocode}
@@ -6226,13 +6159,36 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\DeclareMathAccent{#1}}
% \end{macrocode}
% \end{macro}
+% \begin{macro}{\mst@normalversionname}
+% \begin{macro}{\mst@boldversionname}
% Helper macros to test math version names. User is not allowed to redefine
% via \cs{Mathastext} with optional argument or via \cs{MTDeclareVersion} the
-% |normal| and |bold| math versions! Added at |1.3w|, about 7 years late.
+% |normal| and |bold| math versions. Added at \mstrelease{1.3w}, about 7 years late.
% \begin{macrocode}
\def\mst@normalversionname{normal}%
\def\mst@boldversionname{bold}%
% \end{macrocode}
+% \end{macro}\end{macro}
+% \begin{macro}{\mst@OnlyIfNotSubdued}
+% \mstrelease{1.3u} adds this check that we are not in a subdued normal or
+% bold math version. We do not push the |#1| out of the TeX conditionals,
+% and anyhow there was no real need for expandable coding.
+% \begin{macrocode}
+\def\mst@OnlyIfNotSubdued#1{%
+ \ifmst@subdued
+ \ifx\math@version\mst@normalversionname
+ \else
+ \ifx\math@version\mst@boldversionname
+ \else
+ #1%
+ \fi
+ \fi
+ \else
+ #1%
+ \fi
+}%
+% \end{macrocode}
+% \end{macro}
% \begin{macro}{\exists} \begin{macro}{\mst@exists@skip}
% \begin{macro}{\forall} \begin{macro}{\mst@forall@skip}
% \begin{macro}{\MTnormalexists}
@@ -6240,7 +6196,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% \begin{macro}{\MTnormalforall}
% \begin{macro}{\MTforalldoesskip }
%
-% |1.15e| |2012/10/21|: math skip/glue \emph{after} \cs{exists} and
+% \mstrelease{1.15e} |2012/10/21|: math skip/glue \emph{after} \cs{exists} and
% \cs{forall}, this is useful with upright letters in math mode.
% Each math version has its own user defined values for the skips,
% stored as macros. The redefinitions of $\exists$ and $\forall$ are
@@ -6249,32 +6205,32 @@ defaultbf,defaultit,defaultsf,defaulttt}}
%
% The subdued option (later and only for the normal and bold math
% version) and the italic option (here) set to zero the package
-% default skips. With |1.2| the skips can be modified on the fly in
+% default skips. With \mstrelease{1.2} the skips can be modified on the fly in
% the document, they are not necessarily set in the preamble once
% and for all for each math version.
%
-% |1.3j| adds \cs{MTnormalexists}, \cs{MTexistsdoesskip},
+% \mstrelease{1.3j} adds \cs{MTnormalexists}, \cs{MTexistsdoesskip},
% \cs{MTnormalforall}, \cs{MTforalldoesskip}.
%
-% Earlier to |1.3j|, |\let\mst@exists@original\exists| was done at End of
+% Earlier to \mstrelease{1.3j}, |\let\mst@exists@original\exists| was done at End of
% Package, now it is done at Begin Document, and same for |\forall|. We
% pay attention that use of \cs{MTnormalexists} etc... inside the
% preamble does not create self-let's.
%
% Also |subdued| mode will do \cs{MTnormalexists}, \cs{MTnormalforall}
-% (earlier than |1.3j|, it only set the muskips to |0mu|.) Same when
+% (earlier than \mstrelease{1.3j}, it only set the muskips to |0mu|.) Same when
% using |\MTversion{normal}|, if |subdued|.
%
% For some (random, legacy) reason, the handling of $\exists$ and
% $\forall$ is part of the things
% not included inside |\everymath/\everydisplay|.
%
-% |1.3v| The \mst-defined \cs{exists} and \cs{forall} are created
+% \mstrelease{1.3v} The \mst-defined \cs{exists} and \cs{forall} are created
% \cs{protected}. We feel this matches better with their default
% definition as \cs{mathchardef} tokens than dealing with \LaTeX2e robust
% macros. Besides, the coding is simpler.
% \begin{macrocode}
-\newmuskip\mst@exists@muskip %% v 1.15e
+\newmuskip\mst@exists@muskip
\newmuskip\mst@forall@muskip
\def\mst@exists@skip{1mu}
\def\mst@forall@skip{.6667mu}
@@ -6318,13 +6274,13 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% \begin{macro}{\MTnormalprime}
% \begin{macro}{\MTprimedoesskip}
%
-% |1.2| |2012/12/17|: math skip/glue \emph{before} the \cs{prime}
+% \mstrelease{1.2} |2012/12/17|: math skip/glue \emph{before} the \cs{prime}
% glyph. This is useful with the default CM glyph and upright letters
% (in contrast the prime from |txfonts| works fine with upright
% letters). For this we replace the \LaTeX{} kernel \cs{active@math@prime}
% with our own skip-enhanced version \cs{mst@active@math@prime}.
%
-% |1.2b| |2012/12/31|: doing\\
+% \mstrelease{1.2b} |2012/12/31|: doing\\
% \null\hspace{1cm}|{\catcode`\'=\active \global\let'\mst@active@math@prime}|\\
% is awfully wrong when the right quote is made active at begin document by
% some other package (as happens with |babel| for some languages). So \mst
@@ -6340,47 +6296,102 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% does its job only as part of the \cs{everymath} and
% \cs{everydisplay} token lists.
%
-% |1.2e| being paranoid, we take precautions against a possibly
+% \mstrelease{1.2e} being paranoid, we take precautions against a possibly
% catcode active right quote at
% the time of loading mathastext.
%
-% |1.3i| adds \cs{MTactiveprime}.
+% \mstrelease{1.3i} adds \cs{MTactiveprime}.
%
-% |1.3j| renames it to \cs{MTprimedoesskip}. Besides, it makes use in the
-% preamble of \cs{MTnormalprime} or \cs{MTprimedoesskip}.
+% \mstrelease{1.3j} renames it to \cs{MTprimedoesskip}. Besides, it makes use in the
+% preamble of \cs{MTnormalprime} or \cs{MTprimedoesskip}.
+%
+% \mstrelease{1.4} adds the support for the new ``non-everymath''
+% implementation, which has to satisfy to very different constraints.
+%
+% The \cs{MTprimedoesskip} is not a |no-op| in |subdued| math version.
+% This is legacy situation, not changed at \mstrelease{1.4}.
+%
% \begin{macrocode}
-\newmuskip\mst@prime@muskip %% v 1.2
+\newmuskip\mst@prime@muskip
\def\mst@prime@skip{.5mu}
\ifmst@italic\ifmst@frenchmath\else\def\mst@prime@skip{0mu}\fi\fi
+% \end{macrocode}
+% Shouldn't I have rather hacked \cs{prim@s}? (answer: perhaps related to
+% Babel see a comment above).\par
+% \noindent
+% TODO: clarify why I used \cs{sp} not |^| in
+% \cs{mst@active@math@prime} in 2012/2013.\newline
+% TODO: clarify why I am paranoid regarding the |'| catcode here.
+%
+% The |everymath| branch was initially superficially refactored at
+% \mstrelease{1.4}, but unfortunately as \cs{mst@mathactivate} had been
+% modified to not handle mathematically active characters, this meant that the
+% \mst feature of extra math skip was lost under the |everymath| option, due to
+% an oversight by the author. For this among other reasons having mainly to
+% do with code comments we did \mstrelease{1.4a}.
+%
+% At \mstrelease{1.4} we can not go via \cs{mst@mathactivate} (defined further
+% down in the code) which filters out the already mathematically active
+% characters.
+%
+% Why am I paranoid here about |'| catcode at package loading time? (this
+% looks ridiculous...).
+% \begin{macrocode}
+\def\mst@tmp#1{%
+\def\mst@mathactivateprime{%
+ \ifnum\catcode`#1=\active
+ \@ifundefined{active@char#1}
+ {}
+ {\mst@do@activecase #1{}{\mst@active@math@prime}}%
+ \else
+ \mst@@mathactivate #1{}{\mst@active@math@prime}%
+ \fi
+}%
+% \end{macrocode}
+% The ``undo'' is needed at \mstrelease{1.4} (but not if |everymath|).
+% \begin{macrocode}
+\def\mst@undo@mathactivateprime{\mst@mathdeactivate#1{"8000}}%
+}\expandafter\mst@tmp\string'
\def\mst@active@math@prime{\sp\bgroup\mskip\mst@prime@muskip\prim@s}
-{\catcode`\'=12
-\gdef\mst@@modifyprime{\mst@mathactivate'{}\mst@active@math@prime}}
-\newcommand*\MTnormalprime {\let\mst@modifyprime\@empty }
-\newcommand*\MTprimedoesskip {\let\mst@modifyprime\mst@@modifyprime}
-\ifmst@subdued
- \MTnormalprime
+\ifmst@everymath
+ \newcommand*\MTnormalprime {\let\mst@modifyprime\@empty}
+ \newcommand*\MTprimedoesskip{\let\mst@modifyprime\mst@mathactivateprime}%
+ \AtBeginDocument{%
+ \everymath\expandafter
+ {\the\everymath \mst@modifyprime \MTnormalprime}%
+ \everydisplay\expandafter
+ {\the\everydisplay \mst@modifyprime \MTnormalprime}%
+% \end{macrocode}
+% MEMO: |subdued| case will do its own \cs{MTnormalprime} at
+% |\begin{document}| later as part of \cs{MTeverymathoff}.
+% \begin{macrocode}
+ \MTprimedoesskip
+ }
\else
- \MTprimedoesskip
+% \end{macrocode}
+% \mstrelease{1.4} must do things a bit differently.
+% \begin{macrocode}
+ \newcommand*\MTnormalprime {\mst@undo@mathactivateprime}
+ \newcommand*\MTprimedoesskip{\mst@mathactivateprime}
+% \end{macrocode}
+% MEMO: |subdued| case will do its own \cs{MTnormalprime} at
+% |\begin{document}| later as part of \cs{MTeverymathoff}.
+% \begin{macrocode}
+ \AtBeginDocument{\MTprimedoesskip}
\fi
-\AtBeginDocument{%
- \everymath\expandafter
- {\the\everymath \mst@modifyprime \MTnormalprime}%
- \everydisplay\expandafter
- {\the\everydisplay \mst@modifyprime \MTnormalprime}%
-}
% \end{macrocode}
% \end{macro}\end{macro}\end{macro}\end{macro}\end{macro}
% \begin{macro}{\MTexistsskip}
% \begin{macro}{\MTforallskip}
% \begin{macro}{\MTprimeskip}
-% |1.15e|: These user macros set up the amount of muglue after
+% \mstrelease{1.15e}: These user macros set up the amount of muglue after
% \cs{exists} or \cs{forall}. The normal and
% bold math versions inherit the same skips; these skips are set to
% zero in case of the subdued, or the italic option. Each command
% \cs{Mathastext}\oarg{version\_name} stores the current values in
% the definition of the math version.
%
-% |1.2|: \cs{MTprimeskip} added, the silly \cs{@onlypreamble} are removed
+% \mstrelease{1.2}: \cs{MTprimeskip} added, the silly \cs{@onlypreamble} are removed
% and the macros are modified to have immediate effect in the document,
% independently of their possible use in the preamble for the math
% versions to store values.
@@ -6433,35 +6444,49 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% mathastext font (both in the current math version). If option
% |noparenthesis| was used, we leave everything untouched.
%
-% In |1.3a|, |2013/09/04|, the modification is done only at the time of
+% In \mstrelease{1.3a}, |2013/09/04|, the modification is done only at the time of
% \cs{MTnonlettersobeymathxx}. It is canceled by
% \cs{MTnonlettersdonotobeymathxx}. So the code has been moved to these
% macros and here we just store at the begin document the then meaning of
% \cs{resetMathstrut@}, and check also if \cs{MTnonlettersobeymathxx} has
% been invoked in the preamble.
%
-% |1.3f| |2015/09/12| issues only an Info message not a Warning, as I am
+% \mstrelease{1.3f} |2015/09/12| issues only an Info message not a Warning, as I am
% becoming aware from another context (etoc) that Warnings are stressful to
% users, in some integrated environments for editing and compiling \LaTeX{}
% source files.
+%
+% \mstrelease{1.4} adds here an \cs{AtEndOfPackage}. As this must be
+% executed (if not in the legacy |everymath| context) after the
+% redefinition of \cs{MTnonlettersobeymathxx} which happens at begin
+% document.
% \begin{macrocode}
\ifmst@noparen\else
-\AtBeginDocument{%
- \@ifundefined{resetMathstrut@}{% nothing to do, no amsmath
- }{% amsmath loaded, and possibly patched by things such as lualatex-math
- \let\mst@savedresetMathstrut@\resetMathstrut@
-% \PackageInfo{mathastext}{current `at begin document\string' meaning of
-% amsmath\MessageBreak
-% \string\resetMathstrut@\space preserved for
-% future use\@gobble}%
- \ifx\mst@the\the % means that \MTnonlettersobeymathxx was used in preamble
- \let\mst@the\@gobble\MTnonlettersobeymathxx
- \fi}}
+\AtEndOfPackage{%
+ \AtBeginDocument{%
+ \@ifundefined{resetMathstrut@}
+ {}%
+ {%
+ \let\mst@savedresetMathstrut@\resetMathstrut@
+% \end{macrocode}
+% The |\ifx\mst@the\the| is true iff \cs{MTnonlettersobeymathxx} was used in preamble
+% (last compared to \cs{MTnonlettersdonotobeymathxx}).
+% Setting \cs{mst@the} to \cs{@gobble} here wiil cause \cs{MTnonlettersobeymathxx}
+% to indeed modify \cs{resetMathstrut@} (and it resets \cs{mst@the} to \cs{the} for
+% its behavior in \cs{everymath}).
+% \begin{macrocode}
+ \ifx\mst@the\the
+ \let\mst@the\@gobble
+ \MTnonlettersobeymathxx
+ \fi
+ }%
+ }%
+}%
\fi
% \end{macrocode}
% \end{macro}
%
-% |1.2| |2012/12/20| does some rather daring \emph{math} activation of
+% \mstrelease{1.2} |2012/12/20| does some rather daring \emph{math} activation of
% \verb$; , : ! ? + - = < > ( ) [ ]$ in
% math mode to achieve something I wanted to do since a long time: overcome
% the mutually excluding relation between the variable-family concept and
@@ -6476,7 +6501,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% the entrance of the math mode are discussed later),\\
% \null\hspace{1cm}\fbox{but the concerned characters will now expand in math
% mode to \emph{two} tokens.}\\
-% |1.2c| |2012/12/31|: hence, this current
+% \mstrelease{1.2c} |2012/12/31|: hence, this current
% implementation puts constraints on the input: |$x^?$| or |$x\mathrel?y$|
% now create errors. They must be input
% |$x^{?}$|, respectively |$x\mathrel{?}y$|.\\
@@ -6488,8 +6513,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% should be used instead) but it can be activated for them too.
%
%
-% \begin{macro}{\mst@mathactivate}
-% |1.2b| |2012/12/30|: there were bad oversights in the |1.2| code
+% \mstrelease{1.2b} |2012/12/30|: there were bad oversights in the \mstrelease{1.2} code
% for \cs{mst@mathactivate} related to the possibility for some
% characters to have been made active (in the sense of the catcode)
% elsewhere (something which often is done by language definition
@@ -6503,7 +6527,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% |:| (assuming for the latter that things would have worked ok before
% the twiddling by \mst).
%
-% |1.2e| |2013/01/09|: alas |$\ref{eq:1}$| still was a problem.
+% \mstrelease{1.2e} |2013/01/09|: alas |$\ref{eq:1}$| still was a problem.
% Indeed in that case the \mst prefix had no means to know it was
% inside a \cs{ref} so it made the character expand to its \mst
% redefinition, which is not acceptable inside a
@@ -6566,13 +6590,13 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% the mathcode to 32768!!}, rather it makes \emph{sure} the character
% is not mathematically active.
%
-% As |1.2e| is a bit paranoid it takes precautions against
+% As \mstrelease{1.2e} is a bit paranoid it takes precautions against
% the possibility of characters it treats being active at
% the time of its loading. Excepted from the scope of the
% paranoia are the latin letters (that would be crazy!) and
% also |*|, |"| and the left quote |`|.
%
-% |1.2f| |2013/01/21| with earlier versions (*) it was important not
+% \mstrelease{1.2f} |2013/01/21| with earlier versions (*) it was important not
% to do twice the business of \cs{mst@mathactivate} (think
% |$\hbox{$?$}$|), so I used (this was a bit wasteful) some sort of
% boolean macro for each character. But now that there are the
@@ -6590,57 +6614,274 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% |\label| or |\ref|. So testing for active characters should be done
% always... many things should be done always... I leave as is.
%
-% |1.3i| |2016/01/06| removes a spurious end of line space in
+% \mstrelease{1.3i} |2016/01/06| removes a spurious end of line space in
% \cs{mst@mathactivate} (did not show as anyhow done in math mode).
%
-% \begin{macro}{\mst@do@az}
-% \begin{macro}{\mst@do@AZ}
-% \begin{macro}{\mst@addtodo@az}
-% \begin{macro}{\mst@addtodo@AZ}
-% \begin{macro}{\mst@the}
-% |1.2b| |2012/12/28| now that we understand the great advantages of |"8000|
-% we do it also for all letters a-z and A-Z to insert automatically the
-% italic corrections. See the \hyperref[sec:ic]{discussion} in the user
-% manual. Ironically I wrote the code initially for the |italic| option only
-% to realize later it was more suitable to using an \emph{upright} text font
-% in math mode! So this mathematical activation of the letters is not done if
-% the font shape is detected to be |it| or |sl|; to bypass this the command
-% \cs{MTicinmath} is provided.
-%
-% |1.2e| |2013/01/10| corrects a bad oversight of |1.2b| in
-% \cs{mst@mathactivate} which made the reproduction of the user manual
-% illustrations with |$f_i^i$| impossible. As \cs{mst@mathactivate} was
-% originally used also to get the non-letters obey math alphabet while
-% maintaining the \TeX{} spacings, it added no extra braces. The braces
-% should however be added for expansion of math active letters, in order of
-% things like |x^y| to work as expected. (the group braces do not prevent
-% ligatures when the letters are arguments to the math alphabet commands,
-% the added macros \cs{mst@itcorr} and \cs{mst@before<letter>} expanding to
-% nothing).
+% \mstrelease{1.4} has significantly refactored the coding, there were
+% simplication from a changed way to use \cs{mst@mathactivate} for letters
+% and added branches to accomodate the renouncement to \cs{everymath}.
+% \begin{macro}{\mst@do@activecase}
+% Called by \cs{mst@mathactivate} if |#1| is catcode active.
+%
+% Check if token activation originates apparently into \ctanpkg{babel}:
+% \begin{itemize}[nosep]
+% \item if NO, nothing is done. The active meaning of |#1| is not modified.
+% \item if YES, we hook into \ctanpkg{babel} associated macros so
+% that in math mode the catcode active token does what \mst expects it to
+% do. Its \cs{mathcode} is set to the
+% one of the associated \cs{mathalpha} symbol as declared by \mst, except
+% for asterisk and right tick which simply use their ascii number as mathcode.
+% \end{itemize}
+%
+% In the case of \ctanpkg{babel}-spanish which has a catcode active right
+% tick, resetting its mathcode has the advantage to reveal in output the case
+% of a faulty input using the curly right tick U+8217 which one can get easily
+% from copy paste, for example from the |babel-spanish.pdf| file.
+%
+% And in general it is dangerous to have a character both catcode active and
+% mathcode active.
+%
+% Some auxiliaries.
+% \begin{macrocode}
+\def\mst@magic@v #1#2#3#4#5{#1#3#4}
+\def\mst@magic@vi #1#2#3#4#5#6{#1#2#4#5}
+\def\mst@fork{\ifmmode\mst@magic@v\fi\@thirdofthree}
+\def\mst@safefork{\ifmmode\if@safe@actives\else\mst@magic@vi\fi\fi\@thirdofthree}
+% \end{macrocode}
+% Some refactoring (and streamlining) at \mstrelease{1.4} here.
+% \begin{footnotesize}
+% There was at some point in the case of a Babel-active token a special
+% hanlding for |#1| to use \cs{MTmathcharletter}|#1| (and event for
+% digits!). But this is almost impossible to arise in practice:
+% \begin{itemize}[nosep]
+% \item Babel commands to set up a shorthand are preamble only (they use
+% \cs{AtBeginDocument}),
+% \item A shorthand is made active at begin document, and we don't want that
+% for a letter!
+% \item Activation is recorded as an instruction in the |.aux| file which
+% breaks it almost surely (except perhaps for letter |Z| or such not
+% likely to appear in macro names in the |.aux| file).
+% \item Even if we somehow hack against that (which I did to test) a more
+% subtle problem arises that Babel updates \cs{nfss@catcodes}, so that the
+% latter will want to make (e.g.) |a| of catcode 12! This causes breakage
+% very easily at the time of \cs{process@table} almost as easily as with
+% the |a| set to be an active character...
+% \end{itemize}
+%
+%^^A In revisiting and
+%^^A improving the coding here (following up on a simplification of
+%^^A \cs{mst@mathactivate} itself, I discovered a bug of earlier releases: in
+%^^A this fictitious "letter made active by Babel" branch the insertion of mu
+%^^A glue around the letter was lost, only the italic correction was kept in the
+%^^A modified meaning of Babel active letter in math mode. This bug was
+%^^A dissolved by the new way \cs{mst@mathactivate} is used by
+%^^A \cs{mst@DeclareMathLetter} and the ensuing simplifcation here. But in fact
+%^^A as summarized above this is purely fictitious code, which will never get
+%^^A executed in real life!
+%^^A As I am not of the repenting type, I also add at \mstrelease{1.4} a similar
+%^^A fictituous layer for catcode active digits...\par
+% \end{footnotesize}
+% |#1| here is a character token of catcode 11 or 12.
+% We do something only if the catcode activation appears to have been triggered
+% by \ctanpkg{babel}. The test has been moved earlier at \mstrelease{1.4}.
+% \begin{macrocode}
+\def\mst@do@activecase#1#2#3{%
+% \end{macrocode}
+% As letters and digits are impossible here, |#2| is either empty (which
+% happens only now for asterisk and right tick) or a single token (\cs{mathclose},
+% \cs{mathopen},... ). When |#2| is not empty, |#3| is always a mathchar
+% token. For safety we make sure then the mathcode is not active.
+%
+% The rationale is
+% to avoid context where people have both catcode and math active and use
+% |\string|. In the case of \ctanpkg{babel}-spanish with
+% |activeacute| option it allows to reveal more easily input errors using
+% curly right tick U+8217.
+%
+% Arguably I probably mainly wanted to do this if the character was found
+% catcode active but not a Babel shorthand. But it ended into the Babel
+% branch and the non-Babel branch for active catcode is to do nothing.
+%
+% |#2| is empty exactly for the case of the right tick and the asterisk.
+% In all other cases, then |#3| is a mathchar token.
+% \begin{macrocode}
+ \ifx\relax #2\relax\mathcode`#1=`#1\relax\else\mathcode`#1=#3\relax\fi
+% \end{macrocode}
+% Less \cs{expandafter}'s at \mstrelease{1.4}. Also, it is now required
+% to make sure:
+% \begin{itemize}[nosep]
+% \item not do it twice in succession (else infinite loop),
+% \item and undo it when deactivating.
+% \end{itemize}
+% This was easily done under legacy code (now only used under |everymath|
+% option, and only for non-letters) as it activated only when entering into
+% math mode.
+%
+% This is more annoying when activation happens in an uncontrolled
+% scope, and we handle this via a \cs{mst@hackedshorthand@<char>} flag.
+%
+% MEMO: the undoing is done in \cs{mst@mathdeactivate} which is invoked
+% only for those non-letters submitted to \cs{mst@mathactivate}.
+% \begin{macrocode}
+ \ifmst@everymath\else\@ifundefined{mst@hackedshorthand@#1}{\fi
+ \expandafter\let\csname mst@orig@user@active#1\expandafter\endcsname
+ \csname user@active#1\endcsname
+ \expandafter\let\csname mst@orig@normal@char#1\expandafter\endcsname
+ \csname normal@char#1\endcsname
+ \ifmst@everymath\else}{}\fi
+% \end{macrocode}
+% No more \cs{edef}'s at \mstrelease{1.4}. At this release, in letter case
+% |#3| is empty and |#2| is a single token which needs no extra brace
+% pair as this brace pair will come from its expansion.
+% We can use |{#2}{#3}| in all cases rather than either |{{#2#3}}{}| versus
+% |{#2}#3| depending on whether |#1| is letter or not as was done in the past.
+% Attention that |#2| and |#3| may each be empty.
+% \begin{macrocode}
+ \def\mst@tmp##1##2{\def##1{\mst@fork{#2}{#3}##2}}%
+ \expandafter\mst@tmp\csname user@active#1\expandafter\endcsname
+ \csname mst@orig@user@active#1\endcsname
+ \def\mst@tmp##1##2{\def##1{\mst@safefork{#2}{#3}##2}}%
+ \expandafter\mst@tmp\csname normal@char#1\expandafter\endcsname
+ \csname mst@orig@normal@char#1\endcsname
+ \ifmst@everymath
+ \else
+ \expandafter\let\csname mst@hackedshorthand@#1\endcsname\@empty
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\mst@@mathactivate}
+% \begin{macrocode}
+\begingroup
+ \catcode`\~=\active
+ \def\x{%
+\endgroup
+% \end{macrocode}
+% |##1| is always a token of catcode 11 or 12.
+% \begin{macrocode}
+\ifmst@everymath
+ \def\mst@@mathactivate##1##2##3{%
+ \begingroup
+ \lccode`~=`##1
+ \lccode`##1=`##1
+% \end{macrocode}
+% Careful here as |##2| is empty in the asterisk and prime case. And |##3|
+% also is at \mstrelease{1.4} empty for letters.
+% \begin{macrocode}
+ \lowercase{\endgroup
+% \end{macrocode}
+% Refactoring at \mstrelease{1.4} merged the catcode 11 and catcode 12
+% branches here and in particular avoided in former case an \cs{edef}. This
+% helped into providing the \cs{MTcommandletter}\meta{letter} as a
+% customizable macro. There was no equivalent to this macro, which here is
+% |##2|, prior to \mstrelease{1.4}.
+% \begin{macrocode}
+ \mathcode`##1="8000
+ \def~{##2##3}%
+ }%
+ }%
+\else
+ \def\mst@@mathactivate##1##2##3{%
+ \begingroup
+ \lccode`~=`##1
+ \lccode`##1=`##1
+ \lowercase{\endgroup
+ \mathcode`##1="8000
+% \end{macrocode}
+% Also, \mstrelease{1.4} possibly execute \cs{mst@mathactivate} everywhere
+% in document body (at version changes for example) or at begin document.
+% Hence this modifies globally the active meaning. So we add some safeguard
+% here using an \cs{ifmmode}. And we store the original meaning of the
+% active variant of the token to reset it when ``undoing''.
+%
+% Careful not to do it twice in a row... (but this means \cs{mst@deactivate}
+% might not revert to a user custom redefinition done in-between but to a
+% prior one; although if the character is made active the second
+% \cs{mst@mathactivate} would not have been done).
+% \begin{macrocode}
+ \@ifundefined{mst@prioractivemeaning@##1}
+ {\expandafter\let
+ \csname mst@prioractivemeaning@##1\endcsname ~}
+ {}%
+ \def~{\ifmmode##2##3\else##1\fi}%
+ }%
+ }%
+\fi
+}\x
+% \end{macrocode}
+% At \mstrelease{1.4} the macro was split into two, to test first whether the
+% character which is encountered is currently with active catcode.
%
-% Added note |2016/01/06|: it should be explicitly said that the extra
-% |{..}| in |\mst@mathactivate| for letters end up creating |\hbox|'es
-% around each letter with its extra skips and explicit italic correction,
-% when present. These skips are thus set at natural width and do not add
-% any break point.
+% At \mstrelease{1.4} the non-catcode active branch is entered only if the
+% character isn't mathematically active at time of use..
%
-% \begin{macro}{\MTmath-}\begin{macro}{activeletters}
-% \begin{macro}{\MTmath-}\begin{macro}{standardletters}
-% |1.3| |2013/09/02| extends the use of mathematically active letters to
-% allow the user to specify muglue before and after the letter itself (see
-% \cs{MTsetmathskips}, below).
-% Mathematically active letters were previously used only to add the italic
-% correction; the math activation has now been separated and put in
-% \cs{MTmathactiveletters}. There is also \cs{MTmathactiveLetters} to allow
-% math activation only for the uppercase letters. To cancel the (now default,
-% even with option |italic|) math
-% activation of letters, there is \cs{MTmathstandardletters}. Version |1.3a|
-% removes some silly |\string|'s from the code, which prevented to pass
-% macros as first argument to the command.
-% \begin{macro}{\MTnonletters-}\begin{macro}{obeymathxx}
-% \begin{macro}{\MTnonletters-}\begin{macro}{donotobeymathxx}
-% \begin{macro}{\resetMathstrut@}
-% These macros are modified in version |1.3a| |2013/09/04| in order to
+% Careful that |#2| and |#3| may each be empty. The test for being a Babel
+% shorthand is done here and not as prior to \mst@release{1.4} inside
+% \cs{mst@do@activecase}.
+% \begin{macrocode}
+\def\mst@mathactivate#1#2#3{%
+ \ifnum\catcode`#1=\active
+ \@ifundefined{active@char#1}{}{\mst@do@activecase #1{#2}{#3}}%
+ \else
+ \mst@OnlyIfNotMathActive{#1}{\mst@@mathactivate #1{#2}{#3}}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\mst@mathdeactivate}
+% This is needed at \mstrelease{1.4} for non-letters which are mathematically
+% activated. See comments above in \cs{mst@do@activecase}. Works in
+% sync with \cs{mst@addtodo@nonletters}.
+%
+% The \cs{mst@mathdeactivate} is active (sic) only in the non |everymath|
+% situation. It will restore a previously existing active meaning if it has
+% been changed.
+% \begin{macrocode}
+\ifmst@everymath
+\else
+\def\mst@mathdeactivate#1#2{%
+ \mathcode`#1=#2\relax
+ \@ifundefined{active@char#1}
+ {\@ifundefined{mst@prioractivemeaning@#1}
+ {}%
+ {\mst@restoreactivemeaning#1%
+ \expandafter\let\csname mst@prioractivemeaning@#1\endcsname\relax}%
+ }
+ {\@ifundefined{mst@hackedshorthand@#1}
+ {}
+ {\expandafter\let\csname user@active#1\expandafter\endcsname
+ \csname mst@orig@user@active#1\endcsname
+ \expandafter\let\csname normal@char#1\expandafter\endcsname
+ \csname mst@orig@normal@char#1\endcsname
+ \expandafter\let\csname mst@hackedshorthand@#1\endcsname\relax
+ }%
+ }%
+}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\mst@restoreactivemeaning}
+% At \mstrelease{1.4} when we undo the mathematical activation we now also
+% restore the prior existing active meaning, if any. Only in the ``no
+% |everymath|'' branch (because in the |everymath| \TeX{} itself takes care
+% of that on exiting the scope of the math mode).
+% \begin{macrocode}
+\def\mst@restoreactivemeaning#1{%
+ \begingroup
+ \lccode`~=`#1
+ \lccode`#1=`#1
+ \lowercase{\endgroup
+ \expandafter\let\expandafter~\csname mst@prioractivemeaning@#1\endcsname
+ }%
+}
+\fi
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\mst@do@nonletters}
+% \begin{macro}{\mst@addtodo@nonletters}
+% \begin{macro}{\mst@the}
+% \begin{macro}{\MTnonlettersobeymathxx}
+% \begin{macro}{\MTnonlettersdonotobeymathxx}
+% These macros are modified in version \mstrelease{1.3a} |2013/09/04| in order to
% cleverly adjust, or not, the |amsmath| \cs{resetMathstrut@}. When used in
% the preamble, they just modify \cs{mst@the}. And there is code at begin
% document to check the status there of \cs{mst@the} and if its meaning is
@@ -6658,7 +6899,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% |2016/03/03 v2.15a| of |amsmath.sty| is still not compatible with a math
% active opening parenthesis. Hence my patch here is still needed.
%
-% At |1.3u| \cs{MTnonlettersobeymathxx} and \cs{MTeasynonlettersobeymathxx}
+% At \mstrelease{1.3u} \cs{MTnonlettersobeymathxx} and \cs{MTeasynonlettersobeymathxx}
% are made no-ops under subdued mode. This fixes some bug if for example
% the former was used in preamble or immediately after |\begin{document}|
% making the minus sign math active although the \mst action was
@@ -6667,42 +6908,42 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% versions.
% \begin{macrocode}
\newtoks\mst@do@nonletters
-\newtoks\mst@do@easynonletters
-\newtoks\mst@do@az
-\newtoks\mst@do@AZ
+\ifmst@everymath
+\else
+ \newtoks\mst@undo@nonletters
+\fi
+% \end{macrocode}
+% |#1| is a category 12 character, |#2| is a \cs{mathopen}, or \cs{mathclose},
+% etc..., |#3| is a \cs{mathchar} (of variable family type).
+%
+% At \mstrelease{1.4}, \cs{mst@mathactivate} will not do anything if |#1|
+% is mathcode active (but not catcode active) at time of use.
+% \begin{macrocode}
+\ifmst@everymath
+ \def\mst@addtodo@nonletters#1#2#3{\mst@do@nonletters\expandafter
+ {\the\mst@do@nonletters\mst@mathactivate#1#2#3}%
+ }%
+\else
+% \end{macrocode}
+% We need to automatize some safeguards related to \cs{mst@do@activecase} when
+% deactivating.
+% \begin{macrocode}
+ \def\mst@addtodo@nonletters#1#2#3{\mst@do@nonletters\expandafter
+ {\the\mst@do@nonletters\mst@mathactivate#1#2#3}%
+ \edef\mst@tmp{\noexpand\mst@mathdeactivate#1{\the\mathcode`#1}}%
+ \mst@undo@nonletters\expandafter\expandafter\expandafter
+ {\expandafter\mst@tmp\the\mst@undo@nonletters}%
+ }%
+\fi
\let\mst@the\@gobble
-\newcommand*\MTnonlettersdonotobeymathxx{%
- \ifx\mst@the\@gobble
- \else
- \@ifundefined{mst@savedresetMathstrut@}{}{%
- \PackageInfo{mathastext}{restoring for this group or environment
- the original\MessageBreak
- amsmath \protect\resetMathstrut@}%
- \let\resetMathstrut@\mst@savedresetMathstrut@}%
- \fi
- \let\mst@the\@gobble
-}%
% \end{macrocode}
-% |1.3u| adds this check that we are not in a subdued normal or bold math
-% version. No need for expandable coding.
+% As \cs{mst@savedresetMathstrut@} will only be defined at begin document,
+% the next two macros are no-op in the preamble.
% \begin{macrocode}
-\def\mst@OnlyIfNotSubdued#1{%
- \ifmst@subdued
- \ifx\math@version\mst@normalversionname
- \else
- \ifx\math@version\mst@boldversionname
- \else
- #1%
- \fi
- \fi
- \else
- #1%
- \fi
-}%
-\def\mst@nonlettersobeymathxx{%
- \ifx\mst@the\the
- \else
- \@ifundefined{mst@savedresetMathstrut@}{}{%
+\def\mst@redefine@resetMathstrut@{%
+ \@ifundefined{mst@savedresetMathstrut@}
+ {}
+ {%
\ifmst@symboldelimiters
\def\resetMathstrut@{%
\setbox\z@\hbox{\the\textfont\symmtpsymbol\char40
@@ -6715,234 +6956,186 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\the\textfont\symoperators\char40}%
\ht\Mathstrutbox@\ht\z@ \dp\Mathstrutbox@\dp\z@}%
\fi
- \PackageInfo{mathastext}{\string\resetMathstrut@\space
- from amsmath replaced for this\MessageBreak group or environment}}%
- \fi
- \let\mst@the\the
+ \PackageInfo{mathastext}{\string\resetMathstrut@\space
+ from amsmath replaced for this\MessageBreak group or environment}%
+ }%
}%
-\newcommand*\MTnonlettersobeymathxx
- {\mst@OnlyIfNotSubdued\mst@nonlettersobeymathxx}%
-\newcommand*\MTeasynonlettersdonotobeymathxx{\let\mst@theeasy\@gobble}%
-\def\mst@easynonlettersobeymathxx{\let\mst@theeasy\the}%
-\newcommand*\MTeasynonlettersobeymathxx
- {\mst@OnlyIfNotSubdued\mst@easynonlettersobeymathxx}%
-\MTeasynonlettersobeymathxx % no-op here if subdued mode
-\def\mst@mathactiveletters{\let\mst@thef\the \let\mst@theF\the}%
-\newcommand*\MTmathactiveletters
- {\mst@OnlyIfNotSubdued\mst@mathactiveletters}%
-\MTmathactiveletters % no-op here if subdued mode
-\def\mst@mathactiveLetters{\let\mst@theF\the}%
-\newcommand*\MTmathactiveLetters
- {\mst@OnlyIfNotSubdued\mst@mathactiveLetters}%
-\newcommand*\MTmathstandardletters{\let\mst@thef\@gobble \let\mst@theF\@gobble}%
+\def\mst@restore@resetMathstrut@{%
+ \@ifundefined{mst@savedresetMathstrut@}{}{%
+ \PackageInfo{mathastext}{restoring for this group or environment
+ the original\MessageBreak
+ amsmath \protect\resetMathstrut@}%
+ \let\resetMathstrut@\mst@savedresetMathstrut@}%
+}%
+\ifmst@everymath
+ \newcommand*\MTnonlettersobeymathxx{%
+ \mst@OnlyIfNotSubdued{%
+ \ifx\mst@the\the
+ \else
+ \mst@redefine@resetMathstrut@
+ \fi
+ \let\mst@the\the
+ }%
+ }%
+ \newcommand*\MTnonlettersdonotobeymathxx{%
+ \ifx\mst@the\@gobble
+ \else
+ \mst@restore@resetMathstrut@
+ \fi
+ \let\mst@the\@gobble
+ }%
+\else
+ \newcommand*\MTnonlettersobeymathxx{%
+ \mst@OnlyIfNotSubdued{%
+ \AtBeginDocument{\MTnonlettersobeymathxx}%
+ }%
+ }%
+ \newcommand*\MTnonlettersdonotobeymathxx{%
+ \AtBeginDocument{\MTnonlettersdonotobeymathxx}%
+ }%
+ \AtBeginDocument{%
+ \renewcommand*\MTnonlettersobeymathxx{%
+ \mst@OnlyIfNotSubdued{%
+ \the\mst@do@nonletters
+ \ifx\mst@the\the
+ \else
+ \mst@redefine@resetMathstrut@
+ \fi
+ \let\mst@the\the
+ }%
+ }%
+ \renewcommand*\MTnonlettersdonotobeymathxx{%
+ \the\mst@undo@nonletters
+ \ifx\mst@the\@gobble
+ \else
+ \mst@restore@resetMathstrut@
+ \fi
+ \let\mst@the\@gobble
+ }%
+ }%
+\fi
% \end{macrocode}
-% \begin{macro}{\MTicinmath}
-% \begin{macro}{\MTICinmath}
-% \begin{macro}{\MTnoicinmath}
-% \begin{macro}{\MTicalsoinmathxx}
-% \cs{MTnoicinmath} can also be used from inside math mode.
-%
-% \cs{MTicalsoinmathxx} is destined to be used inside
-% \cs{mathnormalbold} as I didn't want to add the complication of
-% extracting the family number used inside \cs{mathnormalbold} (will
-% perhaps come back if I have time to spend on
-% |source2e|). Added note |2016/01/06|: this number is a priori simply
-% |symmtletterfont+1|.
-%
-% \cs{MTicinmath} can also be used inside math mode, to revert an
-% earlier \cs{MTnoicinmath} from inside the same math group: the math mode
-% had to be entered with the math activation of letters allowed.
-%
-% |1.3i| |2016/01/06|: For some reason which I have now forgotten I did
-% until now:
-% \begin{verbatim}
-% \def\mst@itcorr{\ifnum\fam=\m@ne\/\else\ifnum\fam=\symmtletterfont\/\fi\fi}%
-% \end{verbatim}
-% hence italic corrections were also applied inside \cs{mathnormal} (for
-% upright fonts; \cs{mathnormalbold} math alphabet was not treated like
-% \cs{mathnormal}). I now drop this to be more in sync with the handling
-% of the extra skips around letters. Everything gets suppressed inside
-% all math alphabets, allowing ligatures, even for \cs{mathnormal}.
-%
+% \end{macro}\end{macro}\end{macro}\end{macro}\end{macro}
+% \begin{macro}{\MTeasynonlettersobeymathxx}
+% \begin{macro}{\MTeasynonlettersdonotobeymathxx}
% \begin{macrocode}
-\newcommand*\MTicinmath{%
- \MTmathactiveletters
- \def\mst@itcorr{\ifnum\fam=\m@ne\/\fi}%
- \let\mst@ITcorr\mst@itcorr}
-\newcommand*\MTICinmath{%
- \MTmathactiveLetters
- \def\mst@ITcorr{\ifnum\fam=\m@ne\/\fi}}
-\newcommand*\MTnoicinmath{\let\mst@itcorr\@empty\let\mst@ITcorr\@empty}
-\newcommand*\MTnoICinmath{\let\mst@ITcorr\@empty}
-\newcommand*\MTicalsoinmathxx{%
- \ifx\mst@itcorr\@empty\else\def\mst@itcorr{\/}\fi
- \ifx\mst@ITcorr\@empty\else\def\mst@ITcorr{\/}\fi}
+\newtoks\mst@do@easynonletters
+\ifmst@everymath
+ \newcommand*\MTeasynonlettersdonotobeymathxx{\let\mst@theeasy\@gobble}%
+ \newcommand*\MTeasynonlettersobeymathxx{%
+ \mst@OnlyIfNotSubdued{\let\mst@theeasy\the}%
+ }%
+ \MTeasynonlettersobeymathxx
+\else
+ \newtoks\mst@undo@easynonletters
+ \newcommand*\MTeasynonlettersdonotobeymathxx{\the\mst@undo@easynonletters}
+ \newcommand*\MTeasynonlettersobeymathxx{%
+ \mst@OnlyIfNotSubdued{\the\mst@do@easynonletters}%
+ }%
+ \AtEndOfPackage{\MTeasynonlettersobeymathxx}%
+\fi
% \end{macrocode}
-% \end{macro}\end{macro}\end{macro}\end{macro}\end{macro}\end{macro}\end{macro}
-% \end{macro}\end{macro}\end{macro}\end{macro}\end{macro}\end{macro}\end{macro}
-% \end{macro}\end{macro}\end{macro}\end{macro}\end{macro}
-% \begin{macro}{\MTsetmathskips}
-% \begin{macro}{\MTunsetmathskips}
-% |1.3| |2013/09/02|: user level command to specify extra spaces in math mode
-% around the letters (only the 7bit a,b,..,z and A,B,..,Z). First parameter is
-% the letter, second is the math skip to be inserted before, and third the
-% skip to be inserted after; for example \cs{thickmuskip} or explicitly
-% |0.1mu|.
-%
-% For this, letters are made mathematically active. This is now the package
-% default (version |1.2| did this only in the absence of option |italic|, or
-% more precisely when the font used was not of shape |it| or |sl|). But if
-% \cs{MTsetmathskips} has not been used for that letter, the only effect of
-% the math activation is, as in |1.2|, to add the italic correction
-% automatically, except when the font shape is detected to be |it| or |sl|; in
-% these latter cases, although mathematically active, the letter acts in the
-% standard way.
-%
-% The command \cs{MTmathstandardletters} turns off math activation and its
-% effects for all letters.
-%
-% Ligatures within the argument of a math alphabet command are impeached by
-% skips; so \cs{MTunsetmathskips} is provided to cancel the skips for one
-% specific letter (|f| for example).
+% \end{macro}\end{macro}
+% \begin{macro}{\mst@addtodo@easynonletters}
+% |#1| is a one character control sequence (|\.|, |\/|, |\#|, |\%| or |\&|)
+% and |#2| is a mathchar.
%
-% |1.3a| |2013/09/04|: I strangely had |\string#1| inside \cs{MTsetmathskips}.
-% Phobic of catcode active letters... but with |\string| one needs some
-% |\expandafter| to use \cs{MTsetmathskips} in an |\@for| loop for example. It
-% is better to allow the first argument to be a macro or anything expanding to
-% a letter, and to not be paranoid about improbable catcode active letters
-% (the user just has to tame them at the time of the \cs{MTsetmathskip}) so I
-% take out these |\string|'s.
+% Perhaps I should use the Unicode engine \cs{Umathcode} et alia. I do this
+% at other places. However
+% I realized in 2013 and it is still true in 2024 that \LaTeX{} interface
+% \cs{DeclareSymbolFont} does not allow to declare more than 16 font
+% families even with \LuaLaTeX{} despite the latter allowing 256 such.
%
-% |1.3i| |2016/01/06|: the extra skips are suppressed for the arguments of
-% math alphabet commands. This applies in particular for amsmath's
-% \cs{DeclareMathOperator}.
+% So why bother?
%
+% \mstrelease{1.4} adds to this legacy branch a test to not override
+% a mathematically active ``easy'' non-letter. Main case is the dot
+% with Babel Spanish.
% \begin{macrocode}
-\newcommand*\MTsetmathskips[3]{%
- \@namedef{mst@before#1}{\ifnum\fam=\m@ne\mskip#2\relax\fi }%
- \@namedef{mst@after#1}{\ifnum\fam=\m@ne\mskip#3\relax\fi }%
-}
-\newcommand*\MTunsetmathskips[1]{%
- \@namedef{mst@before#1}{}%
- \@namedef{mst@after#1}{}%
-}
+\ifmst@everymath
+ \def\mst@addtodo@easynonletters#1#2{%
+ \mst@do@easynonletters\expandafter{%
+ \the\mst@do@easynonletters
+ \mst@OnlyIfNotMathActive{#1}{\mathcode`#1=#2}%
+ }%
+ }%
+ \def\mst@addtodo@easynonletters@U#1#2{%
+ \mst@do@easynonletters\expandafter{%
+ \the\mst@do@easynonletters
+ \mst@OnlyIfNotMathActive{#1}{\mst@Umathcodenum`#1=#2}%
+ }%
+ }%
+\else
% \end{macrocode}
-% \end{macro}\end{macro}
-% \begin{macro}{\mst@mathactivate}
-% \begin{macro}{\mst@addtodo@nonletters}
-% \begin{macro}{\mst@addtodo@easynonletters}
-% \begin{macro}{\mst@addtodo@az}
-% \begin{macro}{\mst@addtodo@AZ}
-% Added note |2016/01/06|:
-% Notice that the initially |\relax| tokens \verb+\mst@[before|after]@<letter>+
-% formed with |\csname...\endcsname| do not modify TeX's math layout:
-% |{\relax f\relax}| is like |f| (also for ligatures inside |\mathrm| for
-% example).
+% The character may have been made mathcode active
+% exterior to \mst. We can not test this for sure at begin document as it
+% may happen later. If such an ``easy'' character is mathcode active,
+% this can not originate in \mst. So we should not overwrite when
+% we issue \cs{MTeasynonlettersdonotobeymathxx}. Example I know is
+% with \ctanpkg{babel} Spanish which makes the dot math active. With PDF\LaTeX{}
+% it is also catcode active
+%
+% This macro may be used with Unicoe engines, and \LuaTeX{} and \XeTeX{}
+% differ regarding math active characters. I have only tested this (anew)
+% for \mstrelease{1.4} for which this branch is needed, so in 2024.
% \begin{macrocode}
-\def\mst@magic@v #1#2#3#4#5{#1#3#4}
-\def\mst@magic@vi #1#2#3#4#5#6{#1#2#4#5}
-\def\mst@fork{\ifmmode\mst@magic@v\fi\@thirdofthree}
-\def\mst@safefork{\ifmmode\if@safe@actives\else\mst@magic@vi\fi\fi\@thirdofthree}
-\def\mst@do@activecase#1#2#3{% #1 is a category 11 or 12 character token
- \@ifundefined{active@char#1}{}{%
- \ifcat #1a\mathcode`#1=#2\else
- \ifx\relax #2\relax\mathcode`#1=`#1 \else\mathcode`#1=#3\fi\fi
- \expandafter\expandafter\expandafter\let\expandafter\expandafter
- \csname mst@orig@user@active#1\endcsname
- \csname user@active#1\endcsname
- \expandafter\expandafter\expandafter\let\expandafter\expandafter
- \csname mst@orig@normal@char#1\endcsname
- \csname normal@char#1\endcsname
- \ifcat #1a%
- \expandafter\edef\csname user@active#1\endcsname
- {\noexpand\mst@fork {{#2\noexpand#3}}{}\expandafter
- \noexpand\csname mst@orig@user@active#1\endcsname
- }%
- \expandafter\edef\csname normal@char#1\endcsname
- {\noexpand\mst@safefork {{#2\noexpand#3}}{}\expandafter
- \noexpand\csname mst@orig@normal@char#1\endcsname
- }%
- \else
- \expandafter\edef\csname user@active#1\endcsname
- {\noexpand\mst@fork {#2}\noexpand#3\expandafter
- \noexpand\csname mst@orig@user@active#1\endcsname
- }%
- \expandafter\edef\csname normal@char#1\endcsname
- {\noexpand\mst@safefork {#2}\noexpand#3\expandafter
- \noexpand\csname mst@orig@normal@char#1\endcsname
- }%
- \fi}}
-\begingroup
- \catcode`\~=\active
- \def\x{\endgroup
- \def\mst@mathactivate##1##2##3{% ##1 guaranteed of cat 11 or 12
- \begingroup
- \lccode`~=`##1
- \lccode`##1=`##1
- \lowercase{\endgroup
- \ifnum\catcode`##1=\active
- \mst@do@activecase ##1{##2}##3%
- % careful as ##2 is empty in the asterisk and
- % prime case!
- \else
- \mathcode`##1="8000
- % version 1.3 adds the possibility of extra skips around letters,
- % (only if non catcode active at the time of use).
- \ifcat##1a\edef~{% extra braces for a^b for example
- {\expandafter\noexpand\csname mst@before##1\endcsname
- ##2\noexpand##3%
- \expandafter\noexpand\csname mst@after##1\endcsname}}%
- \else\def~{##2##3}\fi
- \fi}}}
-\x
-\def\mst@addtodo@nonletters#1#2#3{%
- % #1 will be of cat 11 or 12.
- % #2 is empty for asterisk and right quote
- \mst@do@nonletters\expandafter
- {\the\mst@do@nonletters \mst@mathactivate#1{#2}#3}%
-}
-\def\mst@addtodo@easynonletters#1#2{% #1 is a one char control sequence
- \mst@do@easynonletters\expandafter{\the\mst@do@easynonletters\mathcode`#1=#2}%
-}
-\def\mst@addtodo@az#1#2{%
- \mst@do@az\expandafter{\the\mst@do@az\mst@mathactivate#1#2\mst@itcorr}
-}
-\def\mst@addtodo@AZ#1#2{%
- \mst@do@AZ\expandafter{\the\mst@do@AZ\mst@mathactivate#1#2\mst@ITcorr}%
-}
+ \def\mst@addtodo@easynonletters#1#2{%
+ \mst@do@easynonletters\expandafter
+ {\the\mst@do@easynonletters
+ \mst@OnlyIfNotMathActive{#1}{\mathcode`#1=#2}}%
+ \def\mst@tmp##1\relax{%
+ \def\mst@tmp{\mst@OnlyIfNotMathActive{#1}{\mathcode`#1=##1\relax}}%
+ }%
+ \expandafter\mst@tmp\the\mathcode`#1\relax
+ \mst@undo@easynonletters\expandafter\expandafter\expandafter
+ {\expandafter\mst@tmp\the\mst@undo@easynonletters}%
+ }%
+ \def\mst@addtodo@easynonletters@U#1#2{%
+ \mst@do@easynonletters\expandafter{%
+ \the\mst@do@easynonletters
+ \mst@OnlyIfNotMathActive{#1}{\mst@Umathcodenum`#1=#2}%
+ }%
+ \def\mst@tmp##1\relax{%
+ \def\mst@tmp{\mst@OnlyIfNotMathActive{#1}{\mst@Umathcodenum`#1=##1\relax}}%
+ }%
+ \expandafter\mst@tmp\the\mst@Umathcodenum`#1\relax
+ \mst@undo@easynonletters\expandafter\expandafter\expandafter
+ {\expandafter\mst@tmp\the\mst@undo@easynonletters}%
+ }%
+\fi
% \end{macrocode}
-% \end{macro}\end{macro}\end{macro}\end{macro}\end{macro}
+% \end{macro}
% \begin{macro}{\newmcodes@}
% \begin{macro}{\mst@newmcodes@}
% \begin{macro}{\MTresetnewmcodes}
% \begin{macro}{\MTcustomizenewmcodes}
-% |1.15d|: the \cs{newmcodes@} amsmath macro causes an error in Unicode engines as soon
-% someone assigns a Unicode mathcode to the minus sign, and then makes a
-% \cs{DeclareMathOperator} declaration. Furthermore it hard-codes the font
-% family 0 as being the one to be used. Moreover just putting the concerned
-% signs |-|, |:|, |.|, |\| ,|'|, |*| inside braces emulates enough the
-% behavior (although the tick will give a prime).
+% \mstrelease{1.15d}: the \cs{newmcodes@} amsmath macro causes an error in
+% Unicode engines as soon someone assigns a Unicode mathcode to the minus
+% sign, and then makes a \cs{DeclareMathOperator} declaration. Furthermore
+% it hard-codes the font family 0 as being the one to be used. Moreover just
+% putting the concerned signs |-|, |:|, |.|, |\| ,|'|, |*| inside braces
+% emulates enough the behavior (although the tick will give a prime).
%
-% |1.3|: now tests if `basic' option was used.
+% \mstrelease{1.3}: now tests if `basic' option was used.
%
-% |1.3d|: I should re-examine the situation with |\newmcodes@|. In the
+% \mstrelease{1.3d}: I should re-examine the situation with |\newmcodes@|. In the
% meantime its relaxification will not be done if lualatex-math is
% loaded. And the whole thing is put at begin document.
%
-% |1.3m|: |lualatex-math 1.5| n'a pas modifi son traitement de |\newmcodes@|
+% \mstrelease{1.3m}: |lualatex-math 1.5| n'a pas modifi son traitement de |\newmcodes@|
% mais par contre a supprim le patch de \cs{resetMathstrut@}. Mais la date
-% de release est reste |2015/09/22| (date de |1.4a|) au lieu de quelque
+% de release est reste |2015/09/22| (date de \mstrelease{1.4a}) au lieu de quelque
% chose comme |2016/03/13| (date pour l'annonce sur CTAN). Il faudra suivre
% l'volution future de |amsmath.sty| maintenant assure par D.C.
%
-% |1.3n 2016/04/22|: there is no more a patch of |\newmcodes@| by
+% \mstrelease{1.3n} |2016/04/22|: there is no more a patch of |\newmcodes@| by
% |lualatex-math 1.6| |(2016/04/16)|, as |amsmath 2016/03/10 v2.15b| has now
% a version compatible with \LuaLaTeX.
%
% My very radical |\let\newmcodes@\relax| was only a temporary measure I
% adopted for lack of time on October 13, 2012, and apart from avoiding to
% do that in case |lualatex-math| was detected, I never came back... finally
-% I handle it myself for |1.3n|. The remaining problem of this macro (now
+% I handle it myself for \mstrelease{1.3n}. The remaining problem of this macro (now
% that it does not anymore crash |lualatex| or vice versa) is that (also
% with |amsmath| version |2016/03/10 v2.15b|) it hardcodes the font used.
% The aim of the macro is to modify the type of spacing affected to symbols
@@ -6954,7 +7147,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% \item \mst makes (or not, depending on commands issued by the user) these
% characters math active (the right tick already is), which complicates
% recovery of former mathcode. We have mathchar type \emph{macros}, but
-% then the complication is in diverging behaviours of the engines:
+% then the complication is in diverging behaviors of the engines:
% |\numexpr\mst@varfam@minus\relax| works with \LuaTeX, not with \XeTeX.
% \item the |*| must presumably really be the non-lowered text glyph.
% \item for the |-| I hesitated but do use the hyphen in the end.
@@ -6979,7 +7172,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% \item I noticed that \LuaLaTeX\ does not apply the ``TeX Ligature'' (bad
% name) regarding the right tick APOSTROPHE being transformed into RIGHT
% SINGLE QUOTATION MARK in math mode, but \XeLaTeX\ does. From the point
-% of view of \mst, the behaviour of \XeLaTeX\ is the coherent one. It
+% of view of \mst, the behavior of \XeLaTeX\ is the coherent one. It
% appears that \LuaLaTeX\ use in math mode of a text font does not obey
% the set features.^^A like this
%^^A \url{http://tex.stackexchange.com/questions/208688/oldstylefigure-issue-with-lualatex-and-mathastext}
@@ -6997,7 +7190,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% in 2012! I spent some hours on this small thing, with consequent testing and
% for example this TeX Ligature issue with Unicode engines.
%
-% Since |1.3v| we require e-\TeX{} extensions, so a test for
+% Since \mstrelease{1.3v} we require e-\TeX{} extensions, so a test for
% \cs{numexpr} has been dropped here.
% \begin{macrocode}
\ifmst@basic
@@ -7027,7 +7220,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
}%
\let\mst@originalnewmcodes@\newmcodes@
\fi
- }% end of AtBeginDocument
+ }%
\else
\AtBeginDocument {%
\ifx\newmcodes@\@undefined\else
@@ -7047,9 +7240,9 @@ defaultbf,defaultit,defaultsf,defaulttt}}
}%
\let\mst@originalnewmcodes@\newmcodes@
\fi
- }% end of second AtBeginDocument
- \fi % mst@XeOrLua
-\fi % mst@basic
+ }%
+ \fi
+\fi
\newcommand*\MTresetnewmcodes{\ifx\mst@originalnewmcodes@\undefined\else
\let\newmcodes@\mst@originalnewmcodes@\fi}
\newcommand*\MTcustomizenewmcodes{\ifx\mst@originalnewmcodes@\undefined\else
@@ -7080,7 +7273,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% we'll see.
% \begin{macro}{\MTmathoperators-}\begin{macro}{obeymathxx}
% \begin{macro}{\MTmathoperators-}\begin{macro}{donot-}\begin{macro}{obeymathxx}
-% |1.2|: rather than just replacing \cs{symoperators} by
+% \mstrelease{1.2}: rather than just replacing \cs{symoperators} by
% \cs{symmtoperatorfont} I add a modification which makes the
% declared operator names sensitive to the math alphabets... ouh le
% vilain!
@@ -7093,7 +7286,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% \end{macrocode}
% \end{macro}\end{macro}\end{macro}\end{macro}\end{macro}\end{macro}
% \begin{macro}{mtletterfont}
-% At version |1.1|, we add the possibility to mimick the standard
+% At version \mstrelease{1.1}, we add the possibility to mimick the standard
% behavior, that is to have italic letters and upright
% digits. Thanks to Tariq~\textsc{Perwez} and
% Kevin~\textsc{Klement} who asked for such a feature.
@@ -7134,39 +7327,59 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% simultaneously when specified with |mode=base|. It does work with
% |mode=node| but this mode ``does not work in math mode.''
%
-% Done for |1.3o| of |2016/05/03|.
+% Done for \mstrelease{1.3o} of |2016/05/03|.
+%
+% \mstrelease{1.3p} renames the macro to \cs{MTfixmathfonts} for public access.
+%
+% \mstrelease{1.4} intercepts also |mode=harf|. Cf
+% \url{https://tex.stackexchange.com/questions/722084/change-number-style-with-mathastext}
+% (thanks to |user691586| for bug report). The new code unconditionally
+% replaces |mode=foo| by |mode=base|. The complications due to the output of
+% |\fontname| using only category 12 characters are handled in a different way
+% than the |2016| code.
%
-% |1.3p| renames the macro to \cs{MTfixmathfonts} for public access.
+% The \url{https://github.com/latex3/fontspec/issues/525} problem causes
+% additional complications.
+%
+% Perhaps I should simply zap spaces always rather than check for quotes?
+% Anyway this appears to work.
% \begin{macrocode}
-\begingroup
-\catcode`N 12
-\catcode`O 12
-\catcode`D 12
-\catcode`E 12
-\lowercase{\gdef\mst@fixmathfonts@ #1=NODE;#2#3\relax #4\@empty #5}%
- {\ifx#2\empty\else\font\mst@mathfont=#1=base;#2#3\relax#5=\mst@mathfont\fi}
-\lowercase{\gdef\MTfixmathfonts
-{\expandafter\mst@fixmathfonts@
- \fontname\textfont\symmtoperatorfont\relax\relax=NODE;\empty\relax\@empty
- {\textfont\symmtoperatorfont}%
- \expandafter\mst@fixmathfonts@
- \fontname\scriptfont\symmtoperatorfont\relax\relax=NODE;\empty\relax\@empty
- {\scriptfont\symmtoperatorfont}%
- \expandafter\mst@fixmathfonts@
- \fontname\scriptscriptfont\symmtoperatorfont\relax\relax=NODE;\empty\relax\@empty
- {\scriptscriptfont\symmtoperatorfont}%
- \expandafter\mst@fixmathfonts@
- \fontname\textfont\symmtletterfont\relax\relax=NODE;\empty\relax\@empty
- {\textfont\symmtletterfont}%
- \expandafter\mst@fixmathfonts@
- \fontname\scriptfont\symmtletterfont\relax\relax=NODE;\empty\relax\@empty
- {\scriptfont\symmtletterfont}%
- \expandafter\mst@fixmathfonts@
- \fontname\scriptscriptfont\symmtletterfont\relax\relax=NODE;\empty\relax\@empty
- {\scriptscriptfont\symmtletterfont}%
- }%
+\def\mst@fixmathfonts@#1.#2.#3.{%
+\def\mst@fixmathfonts@##1##2#1=##3;##4##5\relax##6\@empty##7{%
+ \ifx##3\empty\else
+ \if"##1%
+ \font\mst@mathfont=##1##2#1=base;##4##5\relax
+ \else
+ \mst@arrrrgh@fixmathfonts##1##2#1=base;##4##5#2\empty#3\relax
+ \fi
+ ##7=\mst@mathfont
+ \fi
}%
-\endgroup
+\def\mst@arrrrgh@fixmathfonts##1#2##2##3#3##4\relax{%
+ \ifx##2\empty
+ \font\mst@mathfont="##1"\relax
+ \else
+ \font\mst@mathfont="##1"#2##2##3#3\relax
+ \fi
+}%
+}%
+\expandafter\mst@fixmathfonts@\detokenize{mode. at.pt.}%
+\def\MTfixmathfonts#1{%
+\def\MTfixmathfonts{%
+ \expandafter\mst@fixmathfonts@\fontname\textfont\symmtoperatorfont
+ \relax\relax #1=;\empty\relax\@empty{\textfont\symmtoperatorfont}%
+ \expandafter\mst@fixmathfonts@\fontname\scriptfont\symmtoperatorfont
+ \relax\relax #1=;\empty\relax\@empty{\scriptfont\symmtoperatorfont}%
+ \expandafter\mst@fixmathfonts@\fontname\scriptscriptfont\symmtoperatorfont
+ \relax\relax #1=;\empty\relax\@empty{\scriptscriptfont\symmtoperatorfont}%
+ \expandafter\mst@fixmathfonts@\fontname\textfont\symmtletterfont
+ \relax\relax #1=;\empty\relax\@empty{\textfont\symmtletterfont}%
+ \expandafter\mst@fixmathfonts@\fontname\scriptfont\symmtletterfont
+ \relax\relax #1=;\empty\relax\@empty{\scriptfont\symmtletterfont}%
+ \expandafter\mst@fixmathfonts@\fontname\scriptscriptfont\symmtletterfont
+ \relax\relax #1=;\empty\relax\@empty{\scriptscriptfont\symmtletterfont}%
+}}%
+\expandafter\MTfixmathfonts\expandafter{\detokenize{mode}}%
\ifmst@LuaTeX
\everymath\expandafter{\the\everymath\mst@fixmathfonts}%
\everydisplay\expandafter{\the\everydisplay\mst@fixmathfonts}%
@@ -7198,7 +7411,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% \cs{mathrm} and not \cs{mathnormal}.
%
% Actually math alphabet macros are created robust since \LaTeX{} from 2005,
-% so at |1.3v 2019/09/19| I decided to modify the old \mst approach a bit.
+% so at \mstrelease{1.3v} |2019/09/19| I decided to modify the old \mst approach a bit.
% Indeed with the old approach a \cs{mathtt} in a moving argument translates
% ultimately into \cs{Mathtt} but if for example the new context where it
% gets expanded is a subdued normal math version, this does not give the same
@@ -7220,10 +7433,10 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% robustness (except of course in the subdued math versions as there the math
% alphabets acquire back their original robust meanings.)
%
-% Potential breaking change at |1.3za|, the |defaultbf| etc... options do
+% Potential breaking change at \mstrelease{1.3za}, the |defaultbf| etc... options do
% not prevent the package declaring |\Mathbf| etc... commands.
%
-% |1.3za| defines a \cs{Mathnormalbold} and then defines \cs{mathnormalbold}
+% \mstrelease{1.3za} defines a \cs{Mathnormalbold} and then defines \cs{mathnormalbold}
% in terms of it in place of defining directly \cs{mathnormalbold} as a math
% alphabet. This is in relation to implementation of the |LGRgreek+|
% option. There was some hesitation though to restrict this change to that
@@ -7249,7 +7462,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\let\mst@original@it\mathit
\let\mst@original@sf\mathsf
\let\mst@original@tt\mathtt
-\def\mst@restorealphabets{% for subdued
+\def\mst@restorealphabets{%
\let\mathnormal\mst@original@normal
\let\mathrm\mst@original@rm
\let\mathbf\mst@original@bf
@@ -7264,7 +7477,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% there to be a robust and easy way to know when one is in the argument of
% \cs{mathrm} or \cs{mathbf}, and the code is spread on various chapters of
% \texttt{source2e.pdf}, and the comments are often not up-to-date. So I did
-% not try a too complex hack and decided for |1.3za| to add a numeric
+% not try a too complex hack and decided for \mstrelease{1.3za} to add a numeric
% indicator to let Greek letters react to it. It incorporates a space to be
% self-delimiting in an \cs{ifcase} to maintain expandability in numeric
% context of the to-be-defined Greek control sequences.
@@ -7316,7 +7529,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% \begin{macro}{\MTgreekupdefault}
% \begin{macro}{\MTgreekitdefault}
% \begin{macro}{selfGreek}
-% |1.14b|: We can not move the \cs{DeclareSymbolFont} to the
+% \mstrelease{1.14b}: We can not move the \cs{DeclareSymbolFont} to the
% \cs{Mathastext} macro because it resets the font family in *all*
% math versions, and some could have been defined by the user with
% previous calls to \cs{Mathastext}. So we have to have them here.
@@ -7336,7 +7549,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
%
% First we establish the cumulative effect of the greek related options.
%
-% |1.15c| introduces some possibilities to change the shapes of Greek letters
+% \mstrelease{1.15c} introduces some possibilities to change the shapes of Greek letters
% in each math versions, and even the Greek font (in LGR encoding). The
% commands \cs{MTitgreek} etc... will be used in-between calls to
% \cs{Mathastext} and re-adjust the shapes. And the command \cs{MTgreekfont}
@@ -7355,7 +7568,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% \LaTeX\ (since 2020-02-02 now that I check this out). As a result this
% triggered Font Warnings in the log about the replacement of |up| by |n|.
%
-% |1.3x| refactors completely the handling of Greek letter shapes under the
+% \mstrelease{1.3y} refactors completely the handling of Greek letter shapes under the
% |LGRgreek(s)| options (and only under them). Under these options we don't
% use one font for lowercase Greek and anotherone for uppercase Greek (some
% above code comments have not been updated) but one math font |mtgreekit| for italic Greek
@@ -7372,7 +7585,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
%
% In order to maintain perfect identical code for non-|LGRgreek|, the
% |LGRgreek| related code is simply added to previously shared
-% constructions. The |LGRgreek| behaviour will remain identical in most
+% constructions. The |LGRgreek| behavior will remain identical in most
% documents, but for example those who used some adventurous `|sc|' for the
% main shape (the one used per default for operator names) need to adjust
% \cs{MTgreekupdefault} to be `|sc|', for the math version being defined, or
@@ -7386,9 +7599,9 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% package; to be examined next time --- which may be a long time in
% future!).
%
-% Unfortunately the |1.3x/1.3y| did some internal renamings here (using
+% Unfortunately the \mstrelease{1.3y} did some internal renamings here (using
% |@lgr@| in macro names in place of |@greek@|) which were not everywhere
-% followed up, and this broke the |selfGreek| option. Fixed at |1.3z|.
+% followed up, and this broke the |selfGreek| option. Fixed at \mstrelease{1.3z}.
%
% \begin{macrocode}
\providecommand*\MTgreekupdefault{n}
@@ -7442,14 +7655,14 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% \begin{macro}{\mathgreekit}
% \begin{macro}{\mathgreekupbold}
% \begin{macro}{\mathgreekitbold}
-% The |1.3x| refactoring was done in order to be able to define \cs{alphaup},
+% The \mstrelease{1.3y} refactoring was done in order to be able to define \cs{alphaup},
% etc \dots\ control sequences (\cs{mathchar}'s), as well as the italic ones.
% Formerly two math fonts were created but to be used respectively with
% lowercase or uppercase Greek. Now we have two fonts indexed by their shape,
% and we take advantage to create two math alphabets mapping to the two
% defined symbol fonts |mtgreekup| and |mtgreekit|.
%
-% |1.3za| adds \cs{mathgreekupbold} and \cs{mathgreekitbold}.
+% \mstrelease{1.3za} adds \cs{mathgreekupbold} and \cs{mathgreekitbold}.
% \begin{macrocode}
\ifmst@LGRgreek
\DeclareFontEncoding{LGR}{}{}
@@ -7484,10 +7697,11 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% In case we need the Euler font, we declare it here. It will use
% |uzeur.fd| from the \ctanpkg{eulervm} package of Walter~\textsc{Schmidt}
% \begin{macrocode}
-\ifmst@needeuler\mst@infoline{will use Euler font; command \string\MTEulerScale}
-\DeclareSymbolFont{mteulervm}{U}{zeur}{m}{n}
-\DeclareSymbolFontAlphabet{\MathEuler}{mteulervm}
-\DeclareMathAlphabet{\MathEulerBold}{U}{zeur}{\mst@bold}{n}
+\ifmst@needeuler
+\mst@infoline{will use Euler font; command \string\MTEulerScale}
+ \DeclareSymbolFont{mteulervm}{U}{zeur}{m}{n}
+ \DeclareSymbolFontAlphabet{\MathEuler}{mteulervm}
+ \DeclareMathAlphabet{\MathEulerBold}{U}{zeur}{\mst@bold}{n}
\fi
\newcommand*\MTEulerScale[1]{\edef\zeu@Scale{#1}}
\let\MathastextEulerScale\MTEulerScale
@@ -7534,14 +7748,15 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% \cs{psy@scale} will be used to scale the font (see at the
% very end of this file).
% \begin{macrocode}
-\ifmst@needsymbol\mst@infoline{will use Symbol font; command \string\MTSymbolScale}
- \def\psy@scale{1}
- \DeclareSymbolFont{mtpsymbol}{U}{psy}{m}{n}
- \DeclareSymbolFontAlphabet{\MathPSymbol}{mtpsymbol}
-\AtBeginDocument{%
- \DeclareFontFamily{U}{psy}{}%
- \DeclareFontShape{U}{psy}{m}{n}{<->s*[\psy@scale] psyr}{}%
-}
+\ifmst@needsymbol
+ \mst@infoline{will use Symbol font; command \string\MTSymbolScale}
+ \def\psy@scale{1}
+ \DeclareSymbolFont{mtpsymbol}{U}{psy}{m}{n}
+ \DeclareSymbolFontAlphabet{\MathPSymbol}{mtpsymbol}
+ \AtBeginDocument{%
+ \DeclareFontFamily{U}{psy}{}%
+ \DeclareFontShape{U}{psy}{m}{n}{<->s*[\psy@scale] psyr}{}%
+ }
\fi
\newcommand*\MTSymbolScale[1]{\edef\psy@scale{#1}}
\let\MathastextSymbolScale\MTSymbolScale
@@ -7553,10 +7768,14 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% \end{macro}
% \end{macro}
% \begin{macro}{\pmvec}
-% Definition of a poor man version of the \cs{vec} accent
+% Definition of a poor man version of the \cs{vec} accent.
+% Done using \cs{protected}\cs{def} at \mstrelease{1.4}.
% \begin{macrocode}
-\DeclareRobustCommand*\pmvec[1]{\mathord{\stackrel{\raisebox{-.5ex}%
-{\tiny\boldmath$\mathord{\rightarrow}$}}{{}#1}}}
+\protected\def\pmvec#1{%
+ \mathord{\stackrel{\raisebox{-.5ex}{\tiny\boldmath$\mathord{\rightarrow}$}}%
+ {{}#1}%
+ }%
+}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\fouriervec}
@@ -7584,7 +7803,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% Some public macros to modify our private internals, and
% we will use them also ourself.
%
-% In version |1.1| we add the possibility to have two
+% In version \mstrelease{1.1} we add the possibility to have two
% distinct font shapes for letters and digits. So in fact
% we could as well have two really unrelated fonts but
% this is really not the spirit of the package.
@@ -7594,7 +7813,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% same time not modifying the \cs{familydefault} or \cs{romandefault}
% etc\dots
%
-% At time of |1.3za| I considered letting |LGRgreeks| and |selfGreeks|
+% At time of \mstrelease{1.3za} I considered letting |LGRgreeks| and |selfGreeks|
% support \cs{MTgreekfont} and this needed a chaneg to \cs{MTfamily}
% here but I dropped the idea. Too wary of documentation changes.
% \begin{macrocode}
@@ -7622,14 +7841,14 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% \begin{macro}{\MTitGreek}
% \begin{macro}{\MTupGreek}
% \begin{macro}{\MTgreekfont}
-% |1.15c|: These new macros can be used in-between calls to \cs{Mathastext}.
+% \mstrelease{1.15c}: These new macros can be used in-between calls to \cs{Mathastext}.
% They reset the shapes for Greek letters (applies to LGRgreek(s) and
% selfGreek(s) options). The \cs{MTgreekfont} presupposes either LGRgreek or
% selfGreek (it is inoperant under |LGRgreeks| or |selfGreeks|).
% |\MTgreekfont{\familydefault}| is somewhat like using LGRgreeks or
% selfGreeks.
%
-% At time of |1.3za| I let \cs{MTgreekfont} also have an effect under option
+% At time of \mstrelease{1.3za} I let \cs{MTgreekfont} also have an effect under option
% |LGRgreeks| or |selfGreeks|, via a refactoring which also modified \cs{MTfamily}.
% \begin{macrocode}
\newcommand*\MTitgreek{\mst@itgreektrue\mst@upgreekfalse\def\mst@greek@select{0}}
@@ -7648,55 +7867,359 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% \end{macro}
% \end{macro}
% \end{macro}
+%
% At (long...) last we now change the font for the letters of the
-% latin alphabet. In version |1.1|, Latin letters have their own font
+% latin alphabet. In version \mstrelease{1.1}, Latin letters have their own font
% (shape).
%
-% |1.2b| initiated the use of mathematically active letters to insert the italic
-% corrections. With version |1.3| the use of math active letters is also for
-% extra muglue added before and after the letters. Use of |\@for| to shorten the
-% code initiated with release |1.3|.
+% \mstrelease{1.2b} |2012/12/28| now that we understand the great advantages of |"8000|
+% we do it also for all letters a-z and A-Z to insert automatically the
+% italic corrections. See the \hyperref[sec:ic]{discussion} in the user
+% manual. Ironically I wrote the code initially for the |italic| option only
+% to realize later it was more suitable to using an \emph{upright} text font
+% in math mode! So this mathematical activation of the letters is not done if
+% the font shape is detected to be |it| or |sl|; to bypass this the command
+% \cs{MTicinmath} is provided.
+%
+% \mstrelease{1.2e} |2013/01/10| corrects a bad oversight of \mstrelease{1.2b} in
+% \cs{mst@mathactivate} which made the reproduction of the user manual
+% illustrations with |$f_i^i$| impossible. As \cs{mst@mathactivate} was
+% originally used also to get the non-letters obey math alphabet while
+% maintaining the \TeX{} spacings, it added no extra braces. The braces
+% should however be added for expansion of math active letters, in order of
+% things like |x^y| to work as expected. (the group braces do not prevent
+% ligatures when the letters are arguments to the math alphabet commands,
+% the added macros \cs{mst@itcorr} and \cs{mst@before@<letter>} expanding to
+% nothing).
+%
+% Added note |2016/01/06|: it should be explicitly said that the extra
+% |{..}| in |\mst@mathactivate| for letters end up creating |\hbox|'es
+% around each letter with its extra skips and explicit italic correction,
+% when present. These skips are thus set at natural width and do not add
+% any break point.
+%
+% Added note at \mstrelease{1.4}: the extra pair of braces is inserted here
+% at \cs{mst@DeclareMathLetter}, not at \cs{mst@mathactivate}.
+%
+% \mstrelease{1.3} |2013/09/02| extends the use of mathematically active letters to
+% allow the user to specify muglue before and after the letter itself (see
+% \cs{MTsetmathskips}, below).
+% Mathematically active letters were previously used only to add the italic
+% correction; the math activation has now been separated and put in
+% \cs{MTmathactiveletters}. There is also \cs{MTmathactiveLetters} to allow
+% math activation only for the uppercase letters. To cancel the (now default,
+% even with option |italic|) math
+% activation of letters, there is \cs{MTmathstandardletters}. Version \mstrelease{1.3a}
+% removes some silly |\string|'s from the code, which prevented to pass
+% macros as first argument to the command.
+%
+% Added note |2016/01/06|:
+% Notice that the initially |\relax| tokens \verb+\mst@[before|after]@<letter>+
+% formed with |\csname...\endcsname| do not modify TeX's math layout:
+% |{\relax f\relax}| is like |f| (also for ligatures inside |\mathrm| for
+% example).
+%
+% The code here was refactored at \mstrelease{1.4} and this simplified
+% \cs{mst@mathactivate} definition.
+%
+% The \cs{mst@before}\meta{letter} were renamed at \mstrelease{1.4} into
+% \cs{mst@before@}\meta{letter} and are incorporated at the
+% \cs{mst@DeclareMathLetter} location. Formerly \cs{mst@}\meta{letter} was
+% only the math symbol, now \cs{MTmathcharletter}\meta{letter} is used for that and
+% \cs{MTcommandletter}\meta{letter} is the whole thing to which the active letter
+% expands (the definition of the active letter done by \cs{mst@mathactivate}
+% is done with a \cs{def}, not a \cs{let}).
+% \begin{macro}{\mst@DeclareMathLetter}
+%
+% \mstrelease{1.4b} adds |noletters| option.
% \begin{macrocode}
-\def\mst@DeclareMathLetter #1{%
+\ifmst@noletters
+ \let\MTmathactiveletters\@empty
+ \let\MTmathactiveLetters\@empty
+ \let\MTmathstandardletters\@empty
+\else
+\def\mst@DeclareMathLetter#1#2#3#4#5{%
\DeclareMathSymbol {#1}{\mathalpha}{mtletterfont}{`#1}%
- \expandafter
- \DeclareMathSymbol \csname mst@#1\endcsname{\mathalpha}{mtletterfont}{`#1}%
- \expandafter\mst@addtodo@az\expandafter #1\csname mst@#1\endcsname
+ \DeclareMathSymbol {#4}{\mathalpha}{mtletterfont}{`#1}%
+ \def#2{{#3#4#5\mst@itcorr}}%
+}%
+\@tfor\mst@tmp:=abcdefghijklmnopqrstuvwxyz\do{%
+ \expandafter\expandafter\expandafter\mst@DeclareMathLetter
+ \expandafter\mst@tmp
+ \csname MTcommandletter\mst@tmp\expandafter\endcsname
+ \csname mst@before@\mst@tmp\expandafter\endcsname
+ \csname MTmathcharletter\mst@tmp\expandafter\endcsname
+ \csname mst@after@\mst@tmp\endcsname
}%
-\@tfor\mst@tmp:=abcdefghijklmnopqrstuvwxyz\do
- {\expandafter\mst@DeclareMathLetter\mst@tmp}%
\ifmst@frenchmath \def\mst@font@tbu{mtoperatorfont}%
\else \def\mst@font@tbu{mtletterfont}%
\fi
-\def\mst@DeclareMathLetter #1{%
+\def\mst@DeclareMathLetter #1#2#3#4#5{%
\DeclareMathSymbol {#1}{\mathalpha}{\mst@font@tbu}{`#1}%
- \expandafter
- \DeclareMathSymbol \csname mst@#1\endcsname{\mathalpha}{\mst@font@tbu}{`#1}%
- \expandafter\mst@addtodo@AZ\expandafter #1\csname mst@#1\endcsname
+ \DeclareMathSymbol {#4}{\mathalpha}{\mst@font@tbu}{`#1}%
+ \def#2{{#3#4#5\mst@ITcorr}}%
}%
-\@tfor\mst@tmp:=ABCDEFGHIJKLMNOPQRSTUVWXYZ\do
- {\expandafter\mst@DeclareMathLetter\mst@tmp}%
-\let\mst@DeclareMathLetter\relax
+\@tfor\mst@tmp:=ABCDEFGHIJKLMNOPQRSTUVWXYZ\do{%
+ \expandafter\expandafter\expandafter\mst@DeclareMathLetter
+ \expandafter\mst@tmp
+ \csname MTcommandletter\mst@tmp\expandafter\endcsname
+ \csname mst@before@\mst@tmp\expandafter\endcsname
+ \csname MTmathcharletter\mst@tmp\expandafter\endcsname
+ \csname mst@after@\mst@tmp\endcsname
+}%
+\def\mst@mathactivate@lowercase{%
+ \@tfor\mst@tmp:=abcdefghijklmnopqrstuvwxyz\do{%
+ \expandafter\expandafter\expandafter
+ \mst@mathactivate\expandafter\mst@tmp\csname MTcommandletter\mst@tmp\endcsname{}%
+ }%
+}%
+\def\mst@mathactivate@uppercase{%
+ \@tfor\mst@tmp:=ABCDEFGHIJKLMNOPQRSTUVWXYZ\do{%
+ \expandafter\expandafter\expandafter
+ \mst@mathactivate\expandafter\mst@tmp\csname MTcommandletter\mst@tmp\endcsname{}%
+ }%
+}%
+\def\mst@mathdeactivate@lowercase{%
+ \@tfor\mst@tmp:=abcdefghijklmnopqrstuvwxyz\do{%
+ \expandafter\mathcode\expandafter`\mst@tmp=\csname MTmathcharletter\mst@tmp\endcsname
+ }%
+}%
+\def\mst@mathdeactivate@uppercase{%
+ \@tfor\mst@tmp:=ABCDEFGHIJKLMNOPQRSTUVWXYZ\do{%
+ \expandafter\mathcode\expandafter`\mst@tmp=\csname MTmathcharletter\mst@tmp\endcsname
+ }%
+}%
+% \end{macrocode}
+% We redo the definitions with some added layer (silly because will never
+% happen in pratice that a letter is Babel-active) related to
+% \cs{mst@do@activecase} in \ctanpkg{babel} context.
+% \begin{macrocode}
+\ifmst@everymath
+\else
+ \def\mst@mathdeactivate@lowercase{%
+ \@tfor\mst@tmp:=abcdefghijklmnopqrstuvwxyz\do{%
+ \expandafter\mathcode\expandafter`\mst@tmp=
+ \csname MTmathcharletter\mst@tmp\endcsname
+ }%
+ }%
+ \def\mst@mathdeactivate@uppercase{%
+ \@tfor\mst@tmp:=ABCDEFGHIJKLMNOPQRSTUVWXYZ\do{%
+ \expandafter\mathcode\expandafter`\mst@tmp=
+ \csname MTmathcharletter\mst@tmp\endcsname
+ }%
+ }%
+\fi
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\MTmathactiveletters}
+% \begin{macro}{\MTmathstandardletters}
+%
+% Important changes at \mstrelease{1.4}.
+%
+% Ascii letters are math-activated at package loading time, rather than again and
+% again each time math mode is entered. But not under |subdued| mode, then
+% the activation is done as part of switching to some math version.
+%
+% The ordering in this code source is a bit of a mess, and it may be too early
+% here to execute \cs{MTmathactiveletters} (I think it is fine now after some
+% major moving around of code chunks but will not waste time checking
+% it) so this will be postponed to end of package loading. Prior to
+% \mstrelease{1.4} \cs{MTmathactiveletters} could be executed here as it only
+% set some toggle to be obeyed at every math mode entrance.
+% \begin{macrocode}
+\def\mst@mathactivateletters{%
+ \mst@mathactivate@lowercase
+ \mst@mathactivate@uppercase
+}%
+\newcommand*\MTmathactiveletters{%
+ \mst@OnlyIfNotSubdued
+ \mst@mathactivateletters
+}%
+\AtEndOfPackage{\MTmathactiveletters}%
+% \end{macrocode}
+% Duplication due to some legacy reasons, do not rely on these internal
+% macro names, beware they change at future release.
+% \begin{macrocode}
+\def\mst@mathactivateLetters{\mst@activate@uppercase}%
+\newcommand*\MTmathactiveLetters{%
+ \mst@OnlyIfNotSubdued
+ \mst@mathactivateLetters
+}%
+\newcommand*\MTmathstandardletters{%
+ \mst@mathdeactivate@lowercase
+ \mst@mathdeactivate@uppercase
+}%
+\fi
+% \end{macrocode}
+% \end{macro}\end{macro}
+% \begin{macro}{\MTicinmath}
+% \begin{macro}{\MTICinmath}
+% \begin{macro}{\MTnoicinmath}
+% \begin{macro}{\MTicalsoinmathxx}
+% \cs{MTnoicinmath} can also be used from inside math mode.
+%
+% \cs{MTicalsoinmathxx} is destined to be used inside
+% \cs{mathnormalbold} as I didn't want to add the complication of
+% extracting the family number used inside \cs{mathnormalbold} (will
+% perhaps come back if I have time to spend on
+% |source2e|). Added note |2016/01/06|: this number is a priori simply
+% |symmtletterfont+1|.
+%
+% \cs{MTicinmath} can also be used inside math mode, to revert an
+% earlier \cs{MTnoicinmath} from inside the same math group.
+%
+% \mstrelease{1.3i} |2016/01/06|: For some reason which I have now forgotten I did
+% until then:
+% \begin{verbatim}
+% \def\mst@itcorr{\ifnum\fam=\m@ne\/\else\ifnum\fam=\symmtletterfont\/\fi\fi}%
+% \end{verbatim}
+% hence italic corrections were also applied inside \cs{mathnormal} (for
+% upright fonts; \cs{mathnormalbold} math alphabet was not treated like
+% \cs{mathnormal}). I now drop this to be more in sync with the handling
+% of the extra skips around letters. Everything gets suppressed inside
+% all math alphabets, allowing ligatures, even for \cs{mathnormal}.
+%
+% \begin{macrocode}
+\newcommand*\MTicinmath{%
+ \MTmathactiveletters
+ \def\mst@itcorr{\ifnum\fam=\m@ne\/\fi}%
+ \let\mst@ITcorr\mst@itcorr
+}
+\newcommand*\MTICinmath{%
+ \MTmathactiveLetters
+ \def\mst@ITcorr{\ifnum\fam=\m@ne\/\fi}%
+}
+\newcommand*\MTnoicinmath{\let\mst@itcorr\@empty\let\mst@ITcorr\@empty}
+\newcommand*\MTnoICinmath{\let\mst@ITcorr\@empty}
+\newcommand*\MTicalsoinmathxx{%
+ \ifx\mst@itcorr\@empty\else\def\mst@itcorr{\/}\fi
+ \ifx\mst@ITcorr\@empty\else\def\mst@ITcorr{\/}\fi
+}
+% \end{macrocode}
+% \end{macro}\end{macro}\end{macro}\end{macro}
+% \begin{macro}{\MTsetmathskips}
+% \begin{macro}{\MTunsetmathskips}
+% \mstrelease{1.3} |2013/09/02|: user level command to specify extra spaces in math mode
+% around the letters (only the 7bit a,b,..,z and A,B,..,Z). First parameter is
+% the letter, second is the math skip to be inserted before, and third the
+% skip to be inserted after; for example \cs{thickmuskip} or explicitly
+% |0.1mu|.
+%
+% For this, letters are made mathematically active. This is now the package
+% default (version \mstrelease{1.2} did this only in the absence of option |italic|, or
+% more precisely when the font used was not of shape |it| or |sl|). But if
+% \cs{MTsetmathskips} has not been used for that letter, the only effect of
+% the math activation is, as in \mstrelease{1.2}, to add the italic correction
+% automatically, except when the font shape is detected to be |it| or |sl|; in
+% these latter cases, although mathematically active, the letter acts in the
+% standard way.
+%
+% The command \cs{MTmathstandardletters} turns off math activation and its
+% effects for all letters.
+%
+% Ligatures within the argument of a math alphabet command are impeached by
+% skips; so \cs{MTunsetmathskips} is provided to cancel the skips for one
+% specific letter (|f| for example).
+%
+% \mstrelease{1.3a} |2013/09/04|: I strangely had |\string#1| inside \cs{MTsetmathskips}.
+% Phobic of catcode active letters... but with |\string| one needs some
+% |\expandafter| to use \cs{MTsetmathskips} in an |\@for| loop for example. It
+% is better to allow the first argument to be a macro or anything expanding to
+% a letter, and to not be paranoid about improbable catcode active letters
+% (the user just has to tame them at the time of the \cs{MTsetmathskip}) so I
+% take out these |\string|'s.
+%
+% \mstrelease{1.3i} |2016/01/06|: the extra skips are suppressed for the arguments of
+% math alphabet commands. This applies in particular for amsmath's
+% \cs{DeclareMathOperator}.
+%
+% \begin{macrocode}
+\newcommand*\MTsetmathskips[3]{%
+ \@namedef{mst@before@#1}{\ifnum\fam=\m@ne\mskip#2\relax\fi}%
+ \@namedef{mst@after@#1}{\ifnum\fam=\m@ne\mskip#3\relax\fi}%
+}
+\newcommand*\MTunsetmathskips[1]{%
+ \@namedef{mst@before@#1}{}%
+ \@namedef{mst@after@#1}{}%
+}
+% \end{macrocode}
+% \end{macro}\end{macro}
+% \begin{macro}{\mst@DeclareMathDigit}
+% \begin{macro}{\MTmathactivedigits}
+% \begin{macro}{\MTmathstandarddigits}
+% In version \mstrelease{1.1}, we have now separated digits from letters, so paradoxically
+% it is less problematic to give them the |mathalpha| type.
+%
+% \mstrelease{1.4} had defined some no-op \cs{MTmathstandarddigits} and
+% \cs{MTmathactivedigits} but if not under option |nodigits|. As they are
+% used in \cs{MTeverymathoff} and \cs{MTeverymathdefault} though this broke
+% the option |nodigits| (either with |subdued| or when using \cs{MTversion}).
+%
+% Defining them as \cs{empty} so that \LaTeX{} defensive mechanism with
+% \cs{newcommand} works but this is sooooooo hypothetical context!
+% \begin{macrocode}
+\let\MTmathactivedigits\empty
+\let\MTmathstandarddigits\empty
\ifmst@nodigits\else
-\def\mst@font@tbu{mtoperatorfont}%
+ \def\mst@font@tbu{mtoperatorfont}%
+ \ifmst@symboldigits \def\mst@font@tbu{mtpsymbol}\fi
+ \ifmst@eulerdigits \def\mst@font@tbu{mteulervm}\fi
+ \DeclareMathSymbol{0}{\mathalpha}{\mst@font@tbu}{`0}%
+ \DeclareMathSymbol{1}{\mathalpha}{\mst@font@tbu}{`1}%
+ \DeclareMathSymbol{2}{\mathalpha}{\mst@font@tbu}{`2}%
+ \DeclareMathSymbol{3}{\mathalpha}{\mst@font@tbu}{`3}%
+ \DeclareMathSymbol{4}{\mathalpha}{\mst@font@tbu}{`4}%
+ \DeclareMathSymbol{5}{\mathalpha}{\mst@font@tbu}{`5}%
+ \DeclareMathSymbol{6}{\mathalpha}{\mst@font@tbu}{`6}%
+ \DeclareMathSymbol{7}{\mathalpha}{\mst@font@tbu}{`7}%
+ \DeclareMathSymbol{8}{\mathalpha}{\mst@font@tbu}{`8}%
+ \DeclareMathSymbol{9}{\mathalpha}{\mst@font@tbu}{`9}%
% \end{macrocode}
-% In version |1.1|, we have now separated digits from letters, so paradoxically
-% it is less problematic to give them the |mathalpha| type.
-% \begin{macrocode}
-\ifmst@symboldigits \def\mst@font@tbu{mtpsymbol} \fi
-\ifmst@eulerdigits \def\mst@font@tbu{mteulervm} \fi
-\DeclareMathSymbol{0}{\mathalpha}{\mst@font@tbu}{`0}%
-\DeclareMathSymbol{1}{\mathalpha}{\mst@font@tbu}{`1}%
-\DeclareMathSymbol{2}{\mathalpha}{\mst@font@tbu}{`2}%
-\DeclareMathSymbol{3}{\mathalpha}{\mst@font@tbu}{`3}%
-\DeclareMathSymbol{4}{\mathalpha}{\mst@font@tbu}{`4}%
-\DeclareMathSymbol{5}{\mathalpha}{\mst@font@tbu}{`5}%
-\DeclareMathSymbol{6}{\mathalpha}{\mst@font@tbu}{`6}%
-\DeclareMathSymbol{7}{\mathalpha}{\mst@font@tbu}{`7}%
-\DeclareMathSymbol{8}{\mathalpha}{\mst@font@tbu}{`8}%
-\DeclareMathSymbol{9}{\mathalpha}{\mst@font@tbu}{`9}%
+% \mstrelease{1.4} adds possibility of mathematically active digits.
+% \begin{macrocode}
+ \ifmst@activedigits
+ \def\mst@DeclareMathDigit #1#2#3{%
+ \DeclareMathSymbol{#3}{\mathalpha}{\mst@font@tbu}{`#1}%
+ \def#2{#3}%
+ }%
+ \@tfor\mst@tmp:=0123456789\do{%
+ \expandafter\expandafter\expandafter\mst@DeclareMathDigit
+ \expandafter\mst@tmp
+ \csname MTcommanddigit\romannumeral\mst@tmp\expandafter\endcsname
+ \csname MTmathchardigit\romannumeral\mst@tmp\endcsname
+ }%
+ \def\mst@mathactivatedigits{%
+ \@tfor\mst@tmp:=0123456789\do{%
+ \expandafter\expandafter\expandafter\mst@mathactivate
+ \expandafter\mst@tmp\csname MTcommanddigit\romannumeral\mst@tmp\endcsname{}%
+ }%
+ }%
+ \def\MTmathactivedigits{\mst@OnlyIfNotSubdued\mst@mathactivatedigits}%
+ \MTmathactivedigits
+ \ifmst@everymath
+ \def\MTmathstandarddigits{%
+ \@tfor\mst@tmp:=0123456789\do{%
+ \expandafter\mathcode\expandafter`\mst@tmp
+ =\csname MTmathchardigit\romannumeral\mst@tmp\endcsname
+ }%
+ }%
+ \else
+% \end{macrocode}
+% We inject some extra layer (silly because will never happen in pratice
+% that a digit token is Babel-active) related to \cs{mst@do@activecase} in
+% \ctanpkg{babel} context.
+% \begin{macrocode}
+ \def\MTmathstandarddigits{%
+ \@tfor\mst@tmp:=0123456789\do{%
+ \expandafter\mathcode\expandafter`\mst@tmp
+ =\csname MTmathchardigit\romannumeral\mst@tmp\endcsname
+ }%
+ }%
+ \fi
+ \fi
\fi
% \end{macrocode}
+% \end{macro}\end{macro}\end{macro}
% When |symboldelimiters| is passed as an option, we use the
% Symbol font for the printable characters other than
% letters and digits.
@@ -7709,7 +8232,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\def\mst@font@tbu{mtoperatorfont}%
\fi
% \end{macrocode}
-% |1.2| adds the tricks to let non letters/digits obey math alphabets. We have
+% \mstrelease{1.2} adds the tricks to let non letters/digits obey math alphabets. We have
% to double the definitions for easy switch on-off of the mechanism, via a token
% list which is put into \cs{everymath} and \cs{everydisplay}.
% \begin{macrocode}
@@ -7727,7 +8250,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% \begin{macro}{\mst@@doasterisk}
% \begin{macro}{\MTnormalasterisk}
% \begin{macro}{\MTactiveasterisk}
-% |1.12d| The \cs{ast} or |*| is defined in |fontmath.ltx| as a binary
+% \mstrelease{1.12d} The \cs{ast} or |*| is defined in |fontmath.ltx| as a binary
% operator from the |symbols| font. Usually the asterisk from the text
% font is in a raised position. Previous versions of \mst did nothing
% with \cs{ast} but strangely defined |*| to be the one from the text
@@ -7740,61 +8263,100 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% The user macro \cs{MTlowerast} sets the amount
% of lowering to be applied to the text asterisk.
%
-% |1.12e| Somehow there was a big omission in |1.12d|, the
+% \mstrelease{1.12e} Somehow there was a big omission in \mstrelease{1.12d}, the
% command \cs{MTlowerast} as described in the manual was missing!
%
-% nota bene: it is assumed that |*| is of type |other| when \mst
-% is loaded... it should neither be active, nor of type |letter|!
+% \mstrelease{1.3i} adds \cs{MTnormalasterisk} and \cs{MTactiveasterisk}.
+% They do nothing if package is loaded without option |asterisk|.
+%
+% \mstrelease{1.4} uses \cs{protected} rather than robust commands.
+% And implements the support for the new default of not using \cs{everymath}.
%
-% |1.3i| adds \cs{MTnormalasterisk} and \cs{MTactiveasterisk}. They do nothing
-% without option |asterisk|.
+% The first two \cs{newcommand*} are because the commands were previously
+% defined unconditionally anyhow, in a way making them no-op's without
+% option |asterisk|. Finally using \cs{let} here with \cs{empty} with
+% the idea of less impact on \TeX{} internals, but losing \LaTeX{} check.
% \begin{macrocode}
-\def\mst@@doasterisk{\let\ast\mst@ast\mst@mathactivate*{}\mst@ast}%
-\newcommand*\MTnormalasterisk {\let\mst@doasterisk\relax}
-\newcommand*\MTactiveasterisk {\let\mst@doasterisk\mst@@doasterisk}
+\let\MTnormalasterisk\empty
+\let\MTactiveasterisk\empty
\ifmst@asterisk\mst@infoline{asterisk: \string\ast\space and *}
- \AtBeginDocument{%
- \everymath\expandafter
- {\the\everymath \mst@doasterisk \MTnormalasterisk }%
- \everydisplay\expandafter
- {\the\everydisplay\mst@doasterisk \MTnormalasterisk }}
\ifmst@symbolmisc
- \def\mst@bin@ast{%
- \mathbin{\mathchoice{\raisebox{-.1\height}%
- {\the\textfont\symmtpsymbol\char42}}%
- {\raisebox{-.1\height}%
- {\the\textfont\symmtpsymbol\char42}}%
- {\raisebox{-.1\height}%
- {\the\scriptfont\symmtpsymbol\char42}}%
- {\raisebox{-.1\height}%
- {\the\scriptscriptfont\symmtpsymbol\char42}}}}%
+ \protected\def\mst@bin@ast{\mathbin{\mathchoice
+ {\raisebox{-.1\height}{\the\textfont\symmtpsymbol\char42}}%
+ {\raisebox{-.1\height}{\the\textfont\symmtpsymbol\char42}}%
+ {\raisebox{-.1\height}{\the\scriptfont\symmtpsymbol\char42}}%
+ {\raisebox{-.1\height}{\the\scriptscriptfont\symmtpsymbol\char42}}}%
+ }%
\else
- \def\mst@bin@ast{%
- \mathbin{\mathchoice{\raisebox{-\mst@lowerast}%
- {\the\textfont\symmtoperatorfont\char42}}%
- {\raisebox{-\mst@lowerast}%
- {\the\textfont\symmtoperatorfont\char42}}%
- {\raisebox{-\mst@lowerast}%
- {\the\scriptfont\symmtoperatorfont\char42}}%
- {\raisebox{-\mst@lowerast}%
- {\the\scriptscriptfont\symmtoperatorfont\char42}}}}%
+ \protected\def\mst@bin@ast{\mathbin{\mathchoice
+ {\raisebox{-\mst@lowerast}{\the\textfont\symmtoperatorfont\char42}}%
+ {\raisebox{-\mst@lowerast}{\the\textfont\symmtoperatorfont\char42}}%
+ {\raisebox{-\mst@lowerast}{\the\scriptfont\symmtoperatorfont\char42}}%
+ {\raisebox{-\mst@lowerast}{\the\scriptscriptfont\symmtoperatorfont\char42}}}%
+ }%
\fi
- \def\mst@varfam@ast{\ifnum\fam=\m@ne\mst@bin@ast\else
- \mathbin{\mathchoice{\raisebox{-\mst@lowerast}%
- {\the\textfont\fam\char42}}%
- {\raisebox{-\mst@lowerast}%
- {\the\textfont\fam\char42}}%
- {\raisebox{-\mst@lowerast}%
- {\the\scriptfont\fam\char42}}%
- {\raisebox{-\mst@lowerast}%
- {\the\scriptscriptfont\fam\char42}}}\fi}%
- \MTactiveasterisk
- \DeclareRobustCommand*{\mst@ast}{\mst@bin@ast}
+ \protected\def\mst@varfam@ast{\ifnum\fam=\m@ne
+ \mst@bin@ast
+ \else
+ \mathbin{\mathchoice
+ {\raisebox{-\mst@lowerast}{\the\textfont\fam\char42}}%
+ {\raisebox{-\mst@lowerast}{\the\textfont\fam\char42}}%
+ {\raisebox{-\mst@lowerast}{\the\scriptfont\fam\char42}}%
+ {\raisebox{-\mst@lowerast}{\the\scriptscriptfont\fam\char42}}}%
+ \fi}%
+ \let\mst@ast\mst@bin@ast
\newcommand*\MTlowerast[1]{\def\mst@lowerast{#1}}
\MTlowerast{.3\height}
- \mst@do@easynonletters\expandafter\expandafter\expandafter
- {\expandafter\the\expandafter\mst@do@easynonletters
- \expandafter\def\csname mst@ast \endcsname{\mst@varfam@ast}}
+% \end{macrocode}
+% Arguably \mst should have used the ``hard'' non-letters affiliation here.
+% Probably too late to change this in 2024... and costly in documentation
+% time.
+% \begin{macrocode}
+ \mst@do@easynonletters\expandafter{%
+ \the\mst@do@easynonletters\let\mst@ast\mst@varfam@ast
+ }%
+ \ifmst@everymath
+ \def\mst@@doasterisk {\let\ast\mst@ast\mst@mathactivate*{}\mst@ast}%
+ \def\MTnormalasterisk {\let\mst@doasterisk\relax}
+ \def\MTactiveasterisk {\let\mst@doasterisk\mst@@doasterisk}
+ \MTactiveasterisk
+ \AtBeginDocument{%
+ \everymath\expandafter
+ {\the\everymath \mst@doasterisk \MTnormalasterisk }%
+ \everydisplay\expandafter
+ {\the\everydisplay\mst@doasterisk \MTnormalasterisk }%
+ }%
+ \else
+ \def\MTnormalasterisk{\AtBeginDocument{\MTnormalasterisk}}
+ \def\MTactiveasterisk{\AtBeginDocument{\MTactiveasterisk}}
+% \end{macrocode}
+% For legacy reasons the responsiveness to math alphabets is made part of the
+% handling of ``easy'' non letters (probably because it is on per default),
+% and this causes me problems of internal logic and even more annoyingly of
+% documentation. I am leaving this standing because it would be too much of a
+% pain at this stage to document a change and it was already quite annoying to
+% better document actual situation.
+% \begin{macrocode}
+ \mst@undo@easynonletters\expandafter{%
+ \the\mst@do@easynonletters\let\mst@ast\mst@bin@ast
+ }%
+% \end{macrocode}
+% For legacy reasons the action of \cs{MTactiveasterisk} is not testing if
+% in |subdued| mode.
+%
+% MEMO: if |subdued| there is \cs{MTeverymathoff} added to |\begin{document}|
+% near end of package and it will do \cs{MTnormalasterisk}.
+% \begin{macrocode}
+ \AtBeginDocument{%
+ \let\mst@orig@abd@ast\ast
+ \edef\MTnormalasterisk{\noexpand\mst@mathdeactivate*{\the\mathcode`\*}%
+ \let\noexpand\ast\noexpand\mst@orig@abd@ast}%
+ \def\MTactiveasterisk{\def\ast{\mst@ast}%
+ \mst@mathactivate*{}\mst@ast
+ }%
+ \MTactiveasterisk
+ }
+ \fi
\fi
% \end{macrocode}
% \end{macro}\end{macro}\end{macro}\end{macro}\end{macro}
@@ -7807,17 +8369,19 @@ defaultbf,defaultit,defaultsf,defaulttt}}
%
% [(Dec. 2012) should I reexamine these definitive sounding remarks?]
%
-% |1.3x| of |2022/11/03| adds support for |ncccomma| option.
+% \begin{macro}{ncccomma}
+% \begin{macro}{decimalcomma}
+% \mstrelease{1.3y} of |2022/11/03| adds support for |ncccomma| option.
%
% Some non-obvious hack is needed for compatibility with our home-made
% mechanism of non-letters obeying math alphabet commands. Alternative would
-% have been to not load at all \ctanpkg{ncccomma} (or since |1.3zb|
+% have been to not load at all \ctanpkg{ncccomma} (or since \mstrelease{1.3zb}
% \ctanpkg{decimalcomma}) and provide the functionality purely by our own
% means; because here in order to support \cs{MTnonlettersobeymathxx} we are
% almost contrived to override quasi entirely the contents of these tiny
% packages.
%
-% |1.3zb| adds support for the |decimalcomma| option. This was mandatory to
+% \mstrelease{1.3zb} adds support for the |decimalcomma| option. This was mandatory to
% keep a compatibility layer with \ctanpkg{frenchmath} after its |2.7| release
% of |2023/12/23|.
%
@@ -7838,7 +8402,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\RequirePackage{decimalcomma}[2023/12/28]% 1.3 or later
% \end{macrocode}
% Attention
-% that the breaking behavior of \cs{AtBeginDocument} at October 2020
+% that the \textbf{BREAKING CHANGE} to \cs{AtBeginDocument} at October 2020
% \LaTeX{} release means that, \emph{taking into account that \emph{\mst} already has
% employed some \emph{\cs{AtBeginDocument}} prior to loading} \ctanpkg{decimalcomma}, any
% code here will be executed \textbf{BEFORE} the \cs{AtBeginDocument} material
@@ -7855,7 +8419,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% latter for which \ctanpkg{babel-french} has a dectection mechanism, which as
% a result avoids the bad interactions with \ctanpkg{numprint} plus its
% |autolanguage| option, which are mentioned below in the \ctanpkg{ncccomma}
-% branch. So we don't need here the workaround done below is in the
+% branch. So we don't need here the workaround done below in the
% |ncccomma| branch. Notice though that in both cases, the `intelligent'
% comma feature will be applied to the whole document, even inside those
% portions where the user has switched to another language such as English.
@@ -7884,19 +8448,26 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\let\mathcomma\mst@varfam@comma
\let\sm@rtcomma\mst@sm@rtcomma
}
- \else % end of decimalcomma branch
- \ifmst@ncccomma
- \mst@infoline{loading package ncccomma for `smart comma\string'}
- \RequirePackage{ncccomma}%
+ \ifmst@everymath
+ \else
+ \edef\mst@tmp{\mathchardef\mathcomma=\the\mathcode`\,\relax}%
+ \mst@undo@nonletters\expandafter\expandafter\expandafter
+ {\expandafter\mst@tmp\the\mst@undo@nonletters}%
+ \fi
+ \else
% \end{macrocode}
% Work around some bad interaction of \ctanpkg{ncccomma}, \ctanpkg{numprint}
% with |autolanguage| and \ctanpkg{babel-french}. See
% \centeredline{\url{https://github.com/latex3/babel/issues/190}} for
-% background. Some hesitation whether I should use the \cs{noextrasfrench}
-% to work around \ctanpkg{babel-french} code influencing non-French sections
-% in the document. Update: I think the last sentence means I was hesitating
-% at time of |1.3x| whether to insert some extra code inside the \cs{noextrasfrench}.
+% background. Some hesitation whether I should use the \cs{noextrasfrench} to
+% work around \ctanpkg{babel-french} code influencing non-French sections in
+% the document. Update: I think the last sentence means I was hesitating at
+% time of \mstrelease{1.3y} whether to insert some extra code inside the
+% \cs{noextrasfrench}.
% \begin{macrocode}
+ \ifmst@ncccomma
+ \mst@infoline{loading package ncccomma for `smart comma\string'}
+ \RequirePackage{ncccomma}%
\AtBeginDocument{%
\mathcode`\,="8000\relax
\@ifpackageloaded{babel}{%
@@ -7918,34 +8489,77 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\let\mathcomma\mst@varfam@comma
\let\NCC@comma\mst@NCC@comma
}
- \else % neither ncccomma nor decimalcomma
+ \ifmst@everymath
+ \else
+% \end{macrocode}
+% Attention that \ctanpkg{ncccomma} (contrarily to \ctanpkg{icomma} loaded by
+% \ctanpkg{decimalcomma} has made the comma math active already when we loaded it.
+% So we don't use |\the\mathcode`\,\relax| here.
+% \begin{macrocode}
+ \edef\mst@tmp{\mathchardef\mathcomma=\the\mathcomma\relax}%
+ \mst@undo@nonletters\expandafter\expandafter\expandafter
+ {\expandafter\mst@tmp\the\mst@undo@nonletters}%
+ \fi
+ \else
+% \end{macrocode}
+% Neither option |ncccomma| nor |decimalcomma|. The \mstrelease{1.4} non-use
+% of \cs{everymath} and consequences is accounted for automatically by
+% \cs{mst@addtodo@nonletters}.
+% \begin{macrocode}
\expandafter\mst@addtodo@nonletters\string,\mathpunct\mst@varfam@comma
\fi\fi
+% \end{macrocode}
+% math dot.
+% \begin{macrocode}
\DeclareMathSymbol{.}{\mathord}{\mst@font@tbu}{"2E}
\DeclareMathSymbol{\mst@varfam@dot}{\mathalpha}{\mst@font@tbu}{"2E}
\mst@addtodo@easynonletters\.\mst@varfam@dot
- \DeclareMathSymbol{:}{\mathrel}{\mst@font@tbu}{"3A} % relation spacing
+% \end{macrocode}
+% math colon.
+% \begin{macrocode}
+ \DeclareMathSymbol{:}{\mathrel}{\mst@font@tbu}{"3A}
\DeclareMathSymbol{\mst@varfam@colon}{\mathalpha}{\mst@font@tbu}{"3A}
\expandafter\mst@addtodo@nonletters\string:\mathrel\mst@varfam@colon
\@ifpackageloaded{amsmath}
- {} % \colon defined in amsmath.sty in terms of : with some enlarged explicit
- % spacing. No need to intervene.
- {% no amsmath, use standard punctuation spacing
+% \end{macrocode}
+% \cs{colon} gets defined in \ctanpkg{amsmath} in terms of |:| with some enlarged explicit
+% spacing. No need to intervene.
+% \begin{macrocode}
+ {}
+% \end{macrocode}
+% No \ctanpkg{amsmath}, use standard punctuation spacing.
+%
+% The reason for |\et\colon\undefined| is if some package has redefined
+% \cs{colon} which then can not be used in \cs{DeclareMathSymbol} anymore (we
+% shamelessly overwrite...)
+% \begin{macrocode}
+ {%
\let\colon\undefined
- % the reason is if some package has redefined \colon which then
- % can not be used in \cs{DeclareMathSymbol} anymore (we
- % shamelessly overwrite...)
\DeclareMathSymbol{\colon}{\mathpunct}{\mst@font@tbu}{"3A}
- \mst@do@nonletters\expandafter{\the\mst@do@nonletters
+ \let\mst@colon\colon
+% \end{macrocode}
+% \mstrelease{1.3v} uses \cs{protected} for the (optional) \cs{colon} redefinition.
+% \begin{macrocode}
+ \mst@do@nonletters\expandafter{%
+ \the\mst@do@nonletters
+ \protected\def\colon{\mathpunct{\mst@varfam@colon}}%
+ }%
% \end{macrocode}
-% |1.3v| uses \cs{protected} for the (optional) \cs{colon} redefinition.
+% \mstrelease{1.4} needs extras.
% \begin{macrocode}
- \protected\def\colon{\mathpunct{\mst@varfam@colon}}}%
+ \ifmst@everymath
+ \else
+ \mst@undo@nonletters\expandafter{%
+ \the\mst@undo@nonletters
+ \let\colon\mst@colon
+ }%
+ \fi
}
- \DeclareMathSymbol{\mst@varfam@pointvirgule}{\mathalpha}{\mst@font@tbu}{"3B}
% \end{macrocode}
-% |1.3x| adds |binarysemicolon| option.
+% Semi-colon.
+% \mstrelease{1.3y} adds |binarysemicolon| option.
% \begin{macrocode}
+ \DeclareMathSymbol{\mst@varfam@pointvirgule}{\mathalpha}{\mst@font@tbu}{"3B}
\ifmst@binarysemicolon
\mst@infoline{semi-colon set to be of type \string\mathbin}
\DeclareMathSymbol{;}{\mathbin}{\mst@font@tbu}{"3B}
@@ -7953,21 +8567,22 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\else
\DeclareMathSymbol{;}{\mathpunct}{\mst@font@tbu}{"3B}
\expandafter\mst@addtodo@nonletters\string;\mathpunct\mst@varfam@pointvirgule
- \fi % binarysemicolno
-\fi % end \ifmst@nopunct else branch
+ \fi
+\fi
% \end{macrocode}
+% \end{macro}\end{macro}
% \begin{macro}{\relbar}
% Due to the way = and - are used by \LaTeX{} in arrows, we will
% have to redefine \cs{Relbar} and \cs{relbar} in order for
% them to preserve their original meanings.
%
-% |1.15d|: Oct 13, 2012. Belated amendment of the code to be compatible
+% \mstrelease{1.15d}: Oct 13, 2012. Belated amendment of the code to be compatible
% with Unicode engines in case someone changed the mathcode of -.
% However, for the time being I can do it in an easy way only for
% \XeTeX, not for \LuaLaTeX. Also I do my modifications to \cs{relbar}
% in a manner testing for the presence of amsmath.
%
-% |1.3v 2019/09/19|: \LaTeX{} of |2019-10-01| defines \cs{leftarrowfill}
+% \mstrelease{1.3v} |2019/09/19|: \LaTeX{} of |2019-10-01| defines \cs{leftarrowfill}
% and \cs{rightarrowfill} as robust macros, so we do the same.
%
% I need to put amsmath under surveillance to check if it decides to
@@ -7981,49 +8596,48 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\else
\ifmst@XeOrLua
\mst@Umathcharnumdef\mst@minus@sign=\mst@Umathcodenum`\-\relax
-%^^A I used this prior to the new \luatexUmathcodenum, as available since TL2013:
-%^^A \mathchardef\mst@minus@sign=8704\relax % "2200
+% \end{macrocode}
+% I used this prior to the new \cs{luatexUmathcodenum}, as available since TL2013:
+% \centeredline{|\mathchardef\mst@minus@sign=8704\relax % "2200|}
+%^^A L'alignement est bizarre dans l'output.
+% \begin{macrocode}
\else
\mathchardef\mst@minus@sign=\mathcode`\-\relax
\fi
\@ifpackageloaded{amsmath}
{\def\relbar{\mathrel{\mathpalette\mathsm@sh\mst@minus@sign}}}
{\DeclareRobustCommand\relbar{\mathrel{\smash\mst@minus@sign}}}
- \ifmst@robust@obsessed@LaTeX@era\expandafter\DeclareRobustCommand
- \else\expandafter\def\fi
- \rightarrowfill{$\m@th\mathord{\relbar}\mkern-7mu%
+ \DeclareRobustCommand\rightarrowfill{$\m@th\mathord{\relbar}\mkern-7mu%
\cleaders\hbox{$\mkern-2mu\relbar\mkern-2mu$}\hfill
\mkern-7mu\mathord\rightarrow$}
- \ifmst@robust@obsessed@LaTeX@era\expandafter\DeclareRobustCommand
- \else\expandafter\def\fi
- \leftarrowfill{$\m@th\mathord\leftarrow\mkern-7mu%
+ \DeclareRobustCommand\leftarrowfill{$\m@th\mathord\leftarrow\mkern-7mu%
\cleaders\hbox{$\mkern-2mu\relbar\mkern-2mu$}\hfill
\mkern-7mu\mathord{\relbar}$}
\fi
% \end{macrocode}
% \end{macro}
% \begin{macro}{endash}
-% |1.1| |2011/01/29|: Producing this next piece of code was not a piece
+% \mstrelease{1.1} |2011/01/29|: Producing this next piece of code was not a piece
% of cake for a novice like myself!\newline
-% |1.11| |2011/02/05|: Compatibility with Unicode (via use of fontspec
+% \mstrelease{1.11} |2011/02/05|: Compatibility with Unicode (via use of fontspec
% encodings EU1 and EU2)\newline
-% |1.12| |2011/02/07|: Improved dealing of Unicode possibility.\newline
-% |1.14b| |2011/04/02|: Corrected some very irresponsible bug in the
+% \mstrelease{1.12} |2011/02/07|: Improved dealing of Unicode possibility.\newline
+% \mstrelease{1.14b} |2011/04/02|: Corrected some very irresponsible bug in the
% Unicode part which caused a problem when 10 or more math families have
% been allocated.\newline
-% |1.15| |2012/09/24|: Added AtBeginDocument to circumvent some amsmath
+% \mstrelease{1.15} |2012/09/24|: Added AtBeginDocument to circumvent some amsmath
% problem with unicode engines.
%
-% |1.3l| |2016/01/29|: anticipating TL2016 fontspec's switch to |TU|.
+% \mstrelease{1.3l} |2016/01/29|: anticipating TL2016 fontspec's switch to |TU|.
%
-% |1.3t| |2018/08/22|: fix to very ancient (|2012/12/20|) bug with
+% \mstrelease{1.3t} |2018/08/22|: fix to very ancient (|2012/12/20|) bug with
% |\DeclareMathSymbol| lacking last argument if encoding not T1, OT1 or
% LY1 when setting up math mode to use the en-dash character as minus
% sign (PDF\TeX\ engine).
%
% \begin{macro}{\mst@subduedminus}
% \begin{macro}{\mst@nonsubduedminus}
-% |1.3t| Further, new macros |\mst@subduedminus| and |\mst@nonsubduedminus|,
+% \mstrelease{1.3t} Further, new macros |\mst@subduedminus| and |\mst@nonsubduedminus|,
% for the good functioning of the subdued option also in case of
% presence of fontspec. This is the only character for which subdued
% option works (now) by setting the mathcode on each math version
@@ -8034,7 +8648,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% change. This means also that |\MTversion| and not |\mathversion|
% must be used for good functioning.
%
-% |1.3u| improves the handling of the minus sign by letting it be compatible
+% \mstrelease{1.3u} improves the handling of the minus sign by letting it be compatible
% with math versions (and not only with the with subdued mechanism but all
% math versions) having varying font encodings, even possibly classic 8bit
% font encoding mixed with TU encoding for Unicode engines. For this it is
@@ -8047,9 +8661,9 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% This is counter-intuitive and breaks expectations.
% \end{quotation}
%
-% But the |1.3u| mechanism with \cs{mst@UmathchardefWorkAround@i} introduced a
+% But the \mstrelease{1.3u} mechanism with \cs{mst@UmathchardefWorkAround@i} introduced a
% bug which showed under option |noendash| (hence also |symboldelimiters|) with
-% Unicode engines. Fixed at |1.3w|.
+% Unicode engines. Fixed at \mstrelease{1.3w}.
% \begin{macrocode}
\let\mst@subduedminus\empty
\let\mst@nonsubduedminus\empty
@@ -8063,7 +8677,8 @@ defaultbf,defaultit,defaultsf,defaulttt}}
{\csname\mst@tmp@enc\string\textendash\endcsname}
\DeclareMathSymbol{#2}{\mathalpha}{mtoperatorfont}
{\csname\mst@tmp@enc\string\textendash\endcsname}
- \fi}% mst@dothe@endashstuff
+ \fi
+}%
\def\mst@dothe@emdashstuff#1#2#3{%
\edef\mst@tmp@enc{#3}%
\if1\mst@OneifUniEnc
@@ -8074,7 +8689,8 @@ defaultbf,defaultit,defaultsf,defaulttt}}
{\csname\mst@tmp@enc\string\textemdash\endcsname}
\DeclareMathSymbol{#2}{\mathalpha}{mtoperatorfont}
{\csname\mst@tmp@enc\string\textemdash\endcsname}
- \fi}% mst@dothe@emdashstuff
+ \fi
+}%
\def\mst@dothe@hyphenstuff#1#2{%
\DeclareMathSymbol{#1}{\mathbin}{\mst@font@tbu}{"2D}%
\DeclareMathSymbol{#2}{\mathalpha}{\mst@font@tbu}{"2D}%
@@ -8090,9 +8706,9 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\csname mst@minus@mv\math@version\endcsname
\relax
\else
- \mathcode`\-=\@nameuse{mst@minus@mv\math@version}% self-delimiting
+ \mathcode`\-=\@nameuse{mst@minus@mv\math@version}%
\fi
- }% \mst@nonsubduedminus
+ }%
% \end{macrocode}
% The above works only if the \cs{mst@minus@mv<name>} was really
% defined via \cs{Umathchardef}. If it was defined via \cs{DeclareMathSymbol}
@@ -8101,8 +8717,8 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% \begin{macrocode}
\ifmst@endash\else\ifmst@emdash\else
\def\mst@nonsubduedminus{%
- \mathcode`\-=\@nameuse{mst@minus@mv\math@version}% self-delimiting
- }% non Umathchardef \mst@minus@mv<mathversion> macros
+ \mathcode`\-=\@nameuse{mst@minus@mv\math@version}%
+ }%
\fi\fi
\fi
\def\mst@UmathchardefWorkAround@i
@@ -8112,7 +8728,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% \end{macro}\end{macro}\end{macro}
% \begin{macro}{\mst@hbar@mvnormal}
% \begin{macro}{\mst@ltbar@mvnormal}
-% |2011/01/31|, |1.1| I decide to settle the question of the |\hbar|. The
+% |2011/01/31|, \mstrelease{1.1} I decide to settle the question of the |\hbar|. The
% \LaTeX{} definition is |\def\hbar{{\mathchar'26\mkern-9muh}}|
% and its advantage is that |h| is in the correct font. But of course not
% the macron character (|\=|, |\bar|). And anyway |amsfonts| uses a
@@ -8125,26 +8741,26 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% (as an aside, I am only now (April 2, 2011) aware that the package
% |mathtools| provides the |mathrlap| etc... )
%
-% |1.3l 2016/01/29|: anticipating TL2016 fontspec's switch to |TU|.
+% \mstrelease{1.3l} |2016/01/29|: anticipating TL2016 fontspec's switch to |TU|.
%
-% |1.3u 2019/08/20|: encoding (8bits) agnostic construct for hbar, using same
+% \mstrelease{1.3u} |2019/08/20|: encoding (8bits) agnostic construct for hbar, using same
% method as for |mathaccents| option. I should add some way to adjust the
% vertical positioning.
%
% On this occasion I replace |h| by |\mst@h| because the mechanism for
% before and after skips does not interact well with the rlap construct.
%
-% |1.3v 2019/09/19| adapts to maintain the robustness of \cs{hbar} which now
+% \mstrelease{1.3v} |2019/09/19| adapts to maintain the robustness of \cs{hbar} which now
% applies with \LaTeX{} |2019-10-01|.
%
-% |1.3w| works around \url{https://github.com/latex3/latex2e/issues/216} via
+% \mstrelease{1.3w} works around \url{https://github.com/latex3/latex2e/issues/216} via
% \cs{mst@DeclareMathAccent}. The upstream bug affected the definition of
% \cs{mst@ltbar@mvnormal} and broke usage of \cs{Mathastext} in preamble.
%
-% |1.3w| also fixes oversight that \cs{hbar} may have been redefined via
+% \mstrelease{1.3w} also fixes oversight that \cs{hbar} may have been redefined via
% \cs{DeclareMathSymbol} by some package (e.g. |amsfonts|) and with \LaTeX{}
% |2019-10-01| this means \cs{hbar<space>} is now undefined. Modifying it
-% changed nothing to \cs{hbar} behaviour in such circumstances. Finally we
+% changed nothing to \cs{hbar} behavior in such circumstances. Finally we
% opt for a \cs{protected} \cs{hbar} and choose to ignore completely if
% there is a \cs{hbar<space>} or not. To avoid extra steps we do not
% undefine it if it exists, because we would need to restore it in
@@ -8161,7 +8777,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\def\mst@mathrlapinternal#1#2{\rlap{$\mathsurround=0pt#1{#2}$}}
\def\mst@dothe@hbarstuff#1#2#3{%
\edef\mst@tmp@enc{#3}%
- \if1\mst@OneifUniEnc % Unicode engine and font
+ \if1\mst@OneifUniEnc
\mst@Umathchardef#1="7 \symmtletterfont "0127 \relax %% or 210F?
\else
\begingroup
@@ -8170,13 +8786,13 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\mst@DeclareMathAccent{#2}{\mathalpha}{mtletterfont}%
{\csname\mst@tmp@enc\string\=\endcsname{}}%
\endgroup
- \protected\def#1{\mst@mathrlap{#2{\ }}\mst@h}%
+ \protected\def#1{\mst@mathrlap{#2{\ }}\MTmathcharletterh}%
\fi
-}% end of \mst@dothe@hbarstuff
+}%
% \end{macrocode}
% \end{macro}
% \end{macro}
-% |1.15d|: Oct 13, 2012. The \cs{mathcode} thing with = is (belatedly,
+% \mstrelease{1.15d}: Oct 13, 2012. The \cs{mathcode} thing with = is (belatedly,
% sorry!) made Unicode compatible.
% \begin{macro}{+,=,\Relbar}
% \begin{macrocode}
@@ -8246,7 +8862,8 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% sequences can not be simultaneously math symbols and math delimiters,
% thus, this complicates things for the mathastextification.
% \begin{macrocode}
-\ifmst@noparen\else\mst@infoline{parentheses \string( \string) \string[ \string] and slash \string/}
+\ifmst@noparen\else
+\mst@infoline{parentheses \string( \string) \string[ \string] and slash \string/}
\ifmst@nosmalldelims
\DeclareMathSymbol{(}{\mathopen}{\mst@font@tbu}{"28}
\DeclareMathSymbol{)}{\mathclose}{\mst@font@tbu}{"29}
@@ -8287,17 +8904,22 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% other math symbol fonts they do respect the encoding of the CM symbols and
% largesymbols, so this is 90\% safe. But in truth I should extract from the
% meaning of \cs{backslash} the |delcode|.
+%
+% At \mstrelease{1.4} I am a bit perplexed at the \cs{mathalpha} here.
+% Adding a a \cs{mst@mathord@backslash} for matters of option |noeverymath|.
% \begin{macrocode}
\DeclareMathDelimiter{\mst@varfam@backslash}
{\mathalpha}{symbols}{"6E}{largesymbols}{"0F}
+ \let\mst@mathord@backslash\backslash
\else
\DeclareMathDelimiter{<}{\mathopen}{\mst@font@tbu}{"3C}{largesymbols}{"0A}
\DeclareMathDelimiter{>}{\mathclose}{\mst@font@tbu}{"3E}{largesymbols}{"0B}
% \end{macrocode}
% There is no backslash in the Symbol font hence |mtoperatorfont| here.
% \begin{macrocode}
- \DeclareMathDelimiter{\backslash}
+ \DeclareMathDelimiter{\mst@mathord@backslash}
{\mathord}{mtoperatorfont}{"5C}{largesymbols}{"0F}
+ \let\backslash\mst@mathord@backslash
\DeclareMathDelimiter{\mst@varfam@backslash}
{\mathalpha}{mtoperatorfont}{"5C}{largesymbols}{"0F}
\fi
@@ -8309,17 +8931,38 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\expandafter\mst@addtodo@nonletters\string>\mathrel\mst@varfam@more
\mst@do@easynonletters\expandafter{\the\mst@do@easynonletters
\let\backslash\mst@varfam@backslash}
+% \end{macrocode}
+% Extras for \mstrelease{1.4} are needed:
+% \begin{macrocode}
+\ifmst@everymath
+\else
+ \mst@undo@easynonletters\expandafter{\the\mst@undo@easynonletters
+ \let\backslash\mst@mathord@backslash}
+\fi
\DeclareMathSymbol{\setminus}{\mathbin}{mtoperatorfont}{"5C}
+\let\mst@setminus\setminus
\DeclareMathSymbol{\mst@varfam@setminus}{\mathalpha}{mtoperatorfont}{"5C}
% \end{macrocode}
-% |1.3v| adds a \cs{protected} here for \cs{setminus}.
+% \mstrelease{1.3v} adds a \cs{protected} here for \cs{setminus}.
% \begin{macrocode}
-\mst@do@nonletters\expandafter{\the\mst@do@nonletters
- \protected\def\setminus{\mathbin{\mst@varfam@setminus}}}
+\mst@do@nonletters\expandafter{%
+ \the\mst@do@nonletters
+ \protected\def\setminus{\mathbin{\mst@varfam@setminus}}%
+}
+% \end{macrocode}
+% Extras for \mstrelease{1.4} are needed:
+% \begin{macrocode}
+\ifmst@everymath
+\else
+ \mst@undo@nonletters\expandafter{%
+ \the\mst@undo@nonletters
+ \let\setminus\mst@setminus
+ }
+\fi
% \end{macrocode}
% \end{macro}\end{macro}\end{macro}
% \begin{macro}{\models}
-% |1.15d|: 13 oct 2012. Before modifying \string| we must preserve \cs{models}.
+% \mstrelease{1.15d}: 13 oct 2012. Before modifying \string| we must preserve \cs{models}.
% \begin{macrocode}
\ifmst@XeOrLua
\mst@Umathcharnumdef\mst@vert@bar=\mst@Umathcodenum`\|\relax
@@ -8335,7 +8978,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% it used to be anyhow, so it is too late. Or not (2019)? maybe I
% \emph{should} do something here...
%
-% |1.3v 2019/09/19|: I discover this rather radical legacy
+% \mstrelease{1.3v} |2019/09/19|: I discover this rather radical legacy
% \verb+\def\vert{|}+, which is done here once in the preamble, but I leave
% it unmodified apart from prefixing it with \cs{protected}. I also add a
% \cs{protected} for the definition of \cs{mid} (which applies only under
@@ -8349,34 +8992,53 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\protected\def\vert{|}
\DeclareMathSymbol{\mst@varfam@vbar}{\mathalpha}{\mst@font@tbu}{124}
\mst@addtodo@easynonletters\|\mst@varfam@vbar
-\let\mid\undefined % 1.3: to avoid problems with some packages
+\let\mid\undefined
\DeclareMathSymbol{\mid}{\mathrel}{\mst@font@tbu}{124}
-\mst@do@nonletters\expandafter{\the\mst@do@nonletters
- \protected\def\mid{\mathrel\mst@varfam@vbar}}
+\let\mst@mid\mid
+\mst@do@nonletters\expandafter{%
+ \the\mst@do@nonletters
+ \protected\def\mid{\mathrel\mst@varfam@vbar}%
+}
+% \end{macrocode}
+% Extras for \mstrelease{1.4} are needed:
+% \begin{macrocode}
+\ifmst@everymath
+\else
+ \mst@undo@nonletters\expandafter{%
+ \the\mst@undo@nonletters
+ \let\mid\mst@mid
+ }
+\fi
% \end{macrocode}
% \begin{macro}{\MTexplicitbraces-}\begin{macro}{obeymathxx}
% \begin{macro}{\MTexplicitbraces-}\begin{macro}{donotobeymathxx}
-% Braces. With version |1.2|, |\{| and |\}| will not be acceptable as
+% Braces. With version \mstrelease{1.2}, |\{| and |\}| will not be acceptable as
% delimiters anymore if the redefinitions below in \cs{mst@dobraces} are
-% enacted. But they will obey math alphabets. Improvements in |1.2a|, to
+% enacted. But they will obey math alphabets. Improvements in \mstrelease{1.2a}, to
% preserve robustness.
%
-% For |1.3| I make |\lbrace| and |\rbrace| undefined first, else problems
+% For \mstrelease{1.3} I make |\lbrace| and |\rbrace| undefined first, else problems
% may arise with some packages.
%
-% |1.3e| suppresses under option
+% \mstrelease{1.3e} suppresses under option
% |nosmalldelims| the definitions of |\lbrace| and |\rbrace| as math
% symbols as this made |\left\lbrace| cause an error, it was a bug.
%
-% LaTeX2e defines |\{| and |\}| as robust commands for a long time
+% (obsolete) LaTeX2e defines |\{| and |\}| as robust commands since a long time
% (I don't know since when). The \mst redefinition is done only if user
% has executed \cs{MTexplicitbracesobeymathxx}, and it is done only when
% entering math mode, but there could be some |\hbox| inside math, hence
% it has to be careful to be valid in text too.
%
-% |1.3v| maintains strict \LaTeX2e robustness for |\{| and |\}|.
+% \mstrelease{1.3v} maintains strict \LaTeX2e robustness for |\{| and |\}|.
% This assumes no one fiddled with |\{| and |\}| proper (without space
% in the name).
+%
+% \LaTeX{} made |\{| and |\}| \cs{protected}, not robust, at its
+% |2020-02-02| release, so the code used by \mst under
+% \cs{MTexplicitbracesobeymathxx} toggle remained without effect since
+% as it configured a change to |\{<space>| and |\}<space>|. Fixed at
+% \mstrelease{1.4}.
% \begin{macrocode}
\ifmst@nosmalldelims
\else
@@ -8388,28 +9050,46 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\fi
\DeclareMathSymbol{\mst@varfam@lbrace}{\mathalpha}{\mst@font@tbu}{123}
\DeclareMathSymbol{\mst@varfam@rbrace}{\mathalpha}{\mst@font@tbu}{125}
-\DeclareRobustCommand*{\mst@lbrace}
- {\ifmmode\mathopen\mst@varfam@lbrace\else\textbraceleft\fi}
-\DeclareRobustCommand*{\mst@rbrace}
- {\ifmmode\mathclose\mst@varfam@rbrace\else\textbraceright\fi}
-\mst@do@nonletters\expandafter{\the\mst@do@nonletters
- \mst@dobraces{\expandafter\let\csname\string{ \expandafter\endcsname
- \csname mst@lbrace \endcsname
- \expandafter\let\csname\string} \expandafter\endcsname
- \csname mst@rbrace \endcsname}}
-\fi % end of \ifmst@alldelims
+% \end{macrocode}
+% \begin{macrocode}
+\protected\def\mst@lbrace{\ifmmode\mathopen\mst@varfam@lbrace\else\textbraceleft\fi}
+\protected\def\mst@rbrace{\ifmmode\mathclose\mst@varfam@rbrace\else\textbraceright\fi}
+\mst@do@nonletters\expandafter{%
+ \the\mst@do@nonletters
+ \mst@dobraces{\let\{\mst@lbrace\let\}\mst@rbrace}%
+}
+\fi
\newcommand*{\MTexplicitbracesobeymathxx}{\let\mst@dobraces\@firstofone}
\newcommand*{\MTexplicitbracesdonotobeymathxx}{\let\mst@dobraces\@gobble}
+% \end{macrocode}
+% Extras for \mstrelease{1.4} are needed:
+% \begin{macrocode}
+\ifmst@everymath
+\else
+ \renewcommand*\MTexplicitbracesobeymathxx{%
+ \let\mst@dobraces\@firstofone
+ \MTnonlettersobeymathxx
+ }%
+ \renewcommand*\MTexplicitbracesdonotobeymathxx{%
+ \let\mst@dobraces\@gobble
+ \protected\def\{{\ifmmode \lbrace \else \textbraceleft \fi}%
+ \protected\def\}{\ifmmode \rbrace \else \textbraceright \fi}%
+ }%
+ \mst@undo@nonletters\expandafter{\the\mst@undo@nonletters
+ \protected\def\{{\ifmmode \lbrace \else \textbraceleft \fi}%
+ \protected\def\}{\ifmmode \rbrace \else \textbraceright \fi}%
+ }%
+\fi
\MTexplicitbracesdonotobeymathxx
% \end{macrocode}
% \end{macro}\end{macro}\end{macro}\end{macro}
% \end{macro}\end{macro}
% \begin{macro}{specials}
-% \leavevmode\kern\parindent |1.14b| |2011/04/02|: the redefinitions of
+% \leavevmode\kern\parindent \mstrelease{1.14b} |2011/04/02|: the redefinitions of
% \#, \$, \% and \& were buggy (this showed up when 10 or more math
% families had been created).
%
-% |1.15f| |2012/10/23|: the code, although working, was perhaps a bit insane
+% \mstrelease{1.15f} |2012/10/23|: the code, although working, was perhaps a bit insane
% and
% had definitions which could surprise other packages. For example, it did:\\
% \null\hspace{1cm}|\renewcommand{\%}{\ifmmode\mt@mmode@percent\else\char37\relax\fi}|\\
@@ -8426,60 +9106,80 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% mathcode. So here it is \emph{not} a redefinition of the control sequences,
% purely an adjustment of mathcodes.
%
-% |1.2d| |2013/01/01|: previous versions imposed the variable family type. I
+% \mstrelease{1.2d} |2013/01/01|: previous versions imposed the variable family type. I
% hereby make it possible to de-activate this feature with the macro
% \cs{MTeasynonlettersdonotobeymathxx}. Besides, I have absolutely no idea
% why I had different looking code depending on the engine \XeTeX, \LuaTeX\ or
% default. Removed.
%
-% |1.3c| |2013/12/14|: I have absolutely no idea why I removed the \XeTeX\
-% and \LuaTeX\ code at the time of |1.2d|! the code for tex/pdftex engine
+% \mstrelease{1.3c} |2013/12/14|: I have absolutely no idea why I removed the \XeTeX\
+% and \LuaTeX\ code at the time of \mstrelease{1.2d}! the code for tex/pdftex engine
% could not accomodate more than 16 math families. Code for \XeTeX\ and
% \LuaTeX\ again added. (and since TL2013 no more problems with
% |\luatexUmathcode|.)
+%
+% \mstrelease{1.4} has done slight refactoring here to share more code related
+% to math activation across the two branches.
% \begin{macrocode}
\ifmst@nospecials
\else
- \mst@infoline{\string\#\space\string\mathdollar\space
- \string\%\space\string\&\space}
+ \mst@infoline{\string\#\space\string\mathdollar\space
+ \string\%\space\string\&\space}
\ifmst@XeOrLua
- \mst@Umathcode`\#=0 \symmtoperatorfont "23 \relax
- \mst@Umathchardef\mathdollar=0 \symmtoperatorfont "24 \relax
- \mst@Umathcode`\%=0 \symmtoperatorfont "25 \relax
- \mst@Umathcode`\&=0 \symmtoperatorfont "26 \relax
- \mst@do@easynonletters\expandafter{%
- \the\mst@do@easynonletters
- \mst@Umathcode`\#=7 \symmtoperatorfont "23 \relax
- \mst@Umathchardef\mathdollar=7 \symmtoperatorfont "24 \relax
- \mst@Umathcode`\%=7 \symmtoperatorfont "25 \relax
- \mst@Umathcode`\&=7 \symmtoperatorfont "26 \relax
- }
+ \mst@Umathcode`\#=0 \symmtoperatorfont "23 \relax
+ \mst@Umathchardef\mathdollar=0 \symmtoperatorfont "24 \relax
+ \mst@Umathcode`\%=0 \symmtoperatorfont "25 \relax
+ \mst@Umathcode`\&=0 \symmtoperatorfont "26 \relax
+ \mst@Umathchardef\mst@varfam@mathhash = 7 \symmtoperatorfont "23 \relax
+ \mst@Umathchardef\mst@varfam@mathdollar = 7 \symmtoperatorfont "24 \relax
+ \mst@Umathchardef\mst@varfam@mathpercent = 7 \symmtoperatorfont "25 \relax
+ \mst@Umathchardef\mst@varfam@mathampersand = 7 \symmtoperatorfont "26 \relax
+ \mst@addtodo@easynonletters@U\#\mst@varfam@mathhash
+ \mst@addtodo@easynonletters@U\%\mst@varfam@mathpercent
+ \mst@addtodo@easynonletters@U\&\mst@varfam@mathampersand
\else
- \count@=\symmtoperatorfont
- \multiply\count@ by \@cclvi
- \advance\count@ by 35
- \mathcode`\#\count@
- \advance\count@ by \@ne
- \mathchardef\mathdollar\count@
- \advance\count@ by \@ne
- \mathcode`\%\count@
- \advance\count@ by \@ne
- \mathcode`\&\count@
- \count@=\symmtoperatorfont
- \multiply\count@ by \@cclvi
- \advance\count@ by 28707 % = "7023
- \mathchardef\mst@varfam@mathhash\count@
- \advance\count@ by \@ne
- \mathchardef\mst@varfam@mathdollar\count@
- \advance\count@ by \@ne
- \mathchardef\mst@varfam@mathpercent\count@
- \advance\count@ by \@ne
- \mathchardef\mst@varfam@mathampersand\count@
+ \count@=\symmtoperatorfont
+ \multiply\count@ by \@cclvi
+ \advance\count@ by 35
+ \mathcode`\#\count@
+ \advance\count@ by \@ne
+ \mathchardef\mathdollar\count@
+ \advance\count@ by \@ne
+ \mathcode`\%\count@
+ \advance\count@ by \@ne
+ \mathcode`\&\count@
+ \count@=\symmtoperatorfont
+ \multiply\count@ by \@cclvi
+ \advance\count@ by 28707 % = "7023
+ \mathchardef\mst@varfam@mathhash\count@
+ \advance\count@ by \@ne
+ \mathchardef\mst@varfam@mathdollar\count@
+ \advance\count@ by \@ne
+ \mathchardef\mst@varfam@mathpercent\count@
+ \advance\count@ by \@ne
+ \mathchardef\mst@varfam@mathampersand\count@
+ \mst@addtodo@easynonletters\#\mst@varfam@mathhash
+ \mst@addtodo@easynonletters\%\mst@varfam@mathpercent
+ \mst@addtodo@easynonletters\&\mst@varfam@mathampersand
+ \fi
+% \end{macrocode}
+% It is possible to mathematically activate the dollar sign, and to use
+% it in math mode as |\string$|... well, how many documents will have
+% done that? But we do not modify the mathcode of the |$| character
+% anyhow, so why should I add here a \cs{mst@OnlyIfNotMathActive}?
+% There is no good reason for that.
+% \begin{macrocode}
\mst@do@easynonletters\expandafter{\the\mst@do@easynonletters
- \mathcode`\#=\mst@varfam@mathhash
- \let\mathdollar\mst@varfam@mathdollar
- \mathcode`\%=\mst@varfam@mathpercent
- \mathcode`\&=\mst@varfam@mathampersand}
+ \let\mathdollar\mst@varfam@mathdollar}%
+% \end{macrocode}
+% Extras for \mstrelease{1.4} are needed. Here too we do not worry
+% about math active dollar character.
+% \begin{macrocode}
+ \ifmst@everymath\else
+ \edef\mst@tmp{\ifmst@XeOrLua\mst@Umathcharnumdef\else\mathchardef\fi
+ \mathdollar=\the\mathdollar\relax}%
+ \mst@undo@easynonletters\expandafter\expandafter\expandafter
+ {\expandafter\mst@tmp\the\mst@undo@easynonletters}%
\fi
\fi
% \end{macrocode}
@@ -8495,7 +9195,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% manipulations, but well, life is finite.
% \begin{macro}{\prod}
% \begin{macro}{\sum}
-% |1.13b|: I correct the brutal re-definitions of \cs{prod} and \cs{sum} from
+% \mstrelease{1.13b}: I correct the brutal re-definitions of \cs{prod} and \cs{sum} from
% the earlier versions of the package; most of the time the Symbol glyphs do
% appear to be too small in display mode. The new redefinitions do have some
% defects: |$\displaystyle\prod_1^2$| changes the position of limits but not
@@ -8506,40 +9206,50 @@ defaultbf,defaultit,defaultsf,defaulttt}}
%
% October 2012: maybe I should re-examine what I did?
%
-% |1.3c| (|2013/12/14|) renames |\defaultprod| to |\MToriginalprod| and
+% \mstrelease{1.3c} (|2013/12/14|) renames |\defaultprod| to |\MToriginalprod| and
% |\defaultsum| to
% |\MToriginalsum|.
%
-% |1.3v| hesitates about making robust here \cs{prod} and \cs{sum}. Finally I
+% \mstrelease{1.3v} hesitates about making robust here \cs{prod} and \cs{sum}. Finally I
% use \cs{protected} for them.
+%
+% \mstrelease{1.4} finally replaces all control sequences defines earlier via
+% \cs{DeclareRobustCommand} to be defined using \cs{protected}\cs{def}. It
+% also removes \cs{mst@prod} and \cs{mst@sum} which were aliases of
+% \cs{MToriginalprod} and \cs{MToriginalsum}, and having both must have
+% been some left-over of earlier versions in 2012 or 2013 (unchecked).
% \begin{macrocode}
-\ifmst@symbolmisc\mst@infoline{symbolmisc: miscellaneous math symbols from Symbol font}
-\let\mst@prod\prod
+\ifmst@symbolmisc
+\mst@infoline{symbolmisc: miscellaneous math symbols from Symbol font}
\let\MToriginalprod\prod
\DeclareMathSymbol{\prodpsy}{\mathop}{mtpsymbol}{213}
-\protected\def\prod{\ifinner\prodpsy\else\mst@prod\fi}
-\let\mst@sum\sum
+\protected\def\prod{\ifinner\prodpsy\else\MToriginalprod\fi}
\let\MToriginalsum\sum
\DeclareMathSymbol{\sumpsy}{\mathop}{mtpsymbol}{229}
-\protected\def\sum{\ifinner\sumpsy\else\mst@sum\fi}
+\protected\def\sum{\ifinner\sumpsy\else\MToriginalsum\fi}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \begin{macrocode}
\DeclareMathSymbol{\mst@implies}{\mathrel}{mtpsymbol}{222}
-\DeclareRobustCommand*{\implies}{\;\mst@implies\;}
+\protected\def\implies{\;\mst@implies\;}
\DeclareMathSymbol{\mst@impliedby}{\mathrel}{mtpsymbol}{220}
-\DeclareRobustCommand*{\impliedby}{\;\mst@impliedby\;}
-\DeclareRobustCommand*{\iff}{\;\mst@impliedby\mathrel{\mkern-3mu}\mst@implies\;}
+\protected\def\impliedby{\;\mst@impliedby\;}
+\protected\def\iff{\;\mst@impliedby\mathrel{\mkern-3mu}\mst@implies\;}
\DeclareMathSymbol{\mst@iff}{\mathrel}{mtpsymbol}{219}
-\DeclareRobustCommand*{\shortiff}{\;\mst@iff\;}
-\DeclareMathSymbol{\mst@to}{\mathrel}{mtpsymbol}{174}
+\protected\def\shortiff{\;\mst@iff\;}
+% \end{macrocode}
+% \mstrelease{1.4} drops defining a \cs{mst@to} and employs \cs{to}
+% in subsequent definitions
+% \begin{macrocode}
+\let\to\relax
+\DeclareMathSymbol{\to}{\mathrel}{mtpsymbol}{174}
\DeclareMathSymbol{\mst@trait}{\mathrel}{mtpsymbol}{190}
-\DeclareRobustCommand*\to{\mst@to}
-\DeclareRobustCommand*\longto{\mkern2mu\mst@trait\mathrel{\mkern-10mu}\mst@to}
-\DeclareRobustCommand*\mapsto{\mapstochar\mathrel{\mkern0.2mu}\mst@to}
-\DeclareRobustCommand*\longmapsto{%
-\mapstochar\mathrel{\mkern2mu}\mst@trait\mathrel{\mkern-10mu}\mst@to}
+\protected\def\longto{\mkern2mu\mst@trait\mathrel{\mkern-10mu}\to}
+\protected\def\mapsto{\mapstochar\mathrel{\mkern0.2mu}\to}
+\protected\def\longmapsto{%
+ \mapstochar\mathrel{\mkern2mu}\mst@trait\mathrel{\mkern-10mu}\to
+}
\DeclareMathSymbol{\aleph}{\mathord}{mtpsymbol}{192}
\DeclareMathSymbol{\inftypsy}{\mathord}{mtpsymbol}{165}
\DeclareMathSymbol{\emptyset}{\mathord}{mtpsymbol}{198}
@@ -8593,7 +9303,8 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% \begin{macro}{symbolre}
% I like the \cs{Re} and \cs{Im} from Symbol, so I overwrite the CM ones.
% \begin{macrocode}
-\ifmst@symbolre\mst@infoline{symbolre: \string\Re\space and \string\Im\space from Symbol font}
+\ifmst@symbolre
+\mst@infoline{symbolre: \string\Re\space and \string\Im\space from Symbol font}
\DeclareMathSymbol{\Re}{\mathord}{mtpsymbol}{"C2}
\DeclareMathSymbol{\Im}{\mathord}{mtpsymbol}{"C1}
\DeclareMathSymbol{\DotTriangle}{\mathord}{mtpsymbol}{92}
@@ -8603,12 +9314,12 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% \begin{macro}{Greek letters}
% LGRgreek $>$ selfGreek $>$ eulergreek $>$ symbolgreek
%
-% |1.11| I correct some bugs on how eulergreek and
+% \mstrelease{1.11} I correct some bugs on how eulergreek and
% symbolgreek interacted.
%
-% |1.12b| more bug fixes.
+% \mstrelease{1.12b} more bug fixes.
%
-% |1.13|
+% \mstrelease{1.13}
%
% * Option LGRgreek.
%
@@ -8616,10 +9327,10 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% the default shape is now the one for letters, not for operator-names
% and digits. This complies to the ISO standard.
%
-% * bugfix: version |1.12b| did not define the \cs{omicron} in the
+% * bugfix: version \mstrelease{1.12b} did not define the \cs{omicron} in the
% case when no Greek-related option was passed to the package.
%
-% |1.13d| has new macros |\MTstandardgreek| and |\MTcustomgreek|.
+% \mstrelease{1.13d} has new macros |\MTstandardgreek| and |\MTcustomgreek|.
% And in the subdued case |\MTstandardgreek| is done when switching to
% the normal or bold math versions (previously something like this
% was only done in case of |LGRgreek| option. )
@@ -8672,13 +9383,13 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% \begin{macrocode}
\ifx\mst@mathord\mathord
% \end{macrocode}
-% symbolgreek but neither eulergreek nor selfGreek
-% \begin{macrocode}
-%% attention le P de Symbol est un \Pi pas un \Rho
+% \noindent symbolgreek but neither eulergreek nor selfGreek\newline
+% Attention le P de Symbol est un \cs{Pi} pas un \cs{Rho}.\newline
+% Attention le X de Symbol est un \cs{Xi} pas un \cs{Chi}.\newline
+% Attention le F de Symbol est un \cs{Phi}. Il n'y a pas de \cs{Digamma}.
+% \begin {macrocode}
\DeclareMathSymbol{\mst@Rho}{\mathord}{mtpsymbol}{"52}
-%% attention le X de Symbol est un \Xi pas un \Chi
\DeclareMathSymbol{\mst@Chi}{\mathord}{mtpsymbol}{"43}
-%% attention le F de Symbol est un \Phi. Il n'y a pas de \Digamma
\DeclareMathSymbol{\mst@Gamma}{\mathord}{mtpsymbol}{"47}
\DeclareMathSymbol{\mst@Delta}{\mathord}{mtpsymbol}{"44}
\DeclareMathSymbol{\mst@Theta}{\mathord}{mtpsymbol}{"51}
@@ -8690,7 +9401,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\DeclareMathSymbol{\mst@Phi}{\mathord}{mtpsymbol}{"46}
\DeclareMathSymbol{\mst@Psi}{\mathord}{mtpsymbol}{"59}
\DeclareMathSymbol{\mst@Omega}{\mathord}{mtpsymbol}{"57}
- \else % de \mst@mathord=\mathord
+ \else
% \end{macrocode}
% not symbolgreek but eulergreek or selfGreek. Note |2015/10/31| : apparemment
% un moment dans le pass je considrais eulergreek et selfGreek comme pouvant
@@ -8709,8 +9420,8 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\DeclareMathSymbol\mst@Phi {\mathalpha}{\mst@font@tbu}{"08}
\DeclareMathSymbol\mst@Psi {\mathalpha}{\mst@font@tbu}{"09}
\DeclareMathSymbol\mst@Omega {\mathalpha}{\mst@font@tbu}{"0A}
- \fi % de \mst@mathord=\mathord
-\fi % fin de goahead
+ \fi
+\fi
% \end{macrocode}
% There are differences regarding Euler and Symbol with respect to the
% available var-letters. We include one or two things like the |wp| and the
@@ -8796,10 +9507,10 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\fi
% \end{macrocode}
% \begin{macro}{\alphaup etc...}
-% Completely refactored at |1.3x| to define |\Alphaup|, |\Alphait|,
+% Completely refactored at \mstrelease{1.3y} to define |\Alphaup|, |\Alphait|,
% |\alphaup|, |\alphait|, etc\dots{} and prepare templates |\Alpha|, \dots{},
% |\alpha|, \dots{}, which when activating a math version will be submitted to
-% an |\expanded|, whose behaviour will depend on version-specific conditionals.
+% an |\expanded|, whose behavior will depend on version-specific conditionals.
% \begin{macrocode}
\ifmst@LGRgreek
% cf http://milde.users.sourceforge.net/LGR/lgrxenc.def.html
@@ -8832,7 +9543,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\DeclareMathSymbol{\Tauit}{\mathalpha}{mtgreekit}{84}
\DeclareMathSymbol{\Chiit}{\mathalpha}{mtgreekit}{81}
% \end{macrocode}
-% |1.3w| and earlier had a bug regarding Digamma which was set up
+% \mstrelease{1.3w} and earlier had a bug regarding Digamma which was set up
% to use same font shape as for lowercase digamma.
% \begin{macrocode}
\DeclareMathSymbol{\Digammaup}{\mathalpha}{mtgreekup}{195}
@@ -8916,7 +9627,9 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\DeclareMathSymbol{\omegaup}{\mathalpha}{mtgreekup}{119}
%
\DeclareMathSymbol{\digammaup}{\mathalpha}{mtgreekup}{147}
-% only varsigma defined (I should check this again)
+% \end{macrocode}
+% Only varsigma defined (I should check this again).
+% \begin{macrocode}
\DeclareMathSymbol{\varsigmaup}{\mathalpha}{mtgreekup}{99}
%
\DeclareMathSymbol{\alphait}{\mathalpha}{mtgreekit}{97}
@@ -8981,12 +9694,12 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% \begin{macro}{\MTstandardgreek}
% \begin{macro}{\MTcustomgreek}
% \begin{macro}{\MTrecordstandardgreek}
-% |1.3d 2014/05/23| defines the commands |\MTstandardgreek| and
+% \mstrelease{1.3d} |2014/05/23| defines the commands |\MTstandardgreek| and
% |\MTcustomgreek| for package and user. I leave |\MTrecordstandardgreek|
% undocumented as I don't want to encourage people to load math packages
% after \mst.
%
-% |1.3h 2015/10/31|: corrected |\MTcustomgreek| as it caused |\ell| to
+% \mstrelease{1.3h} |2015/10/31|: corrected |\MTcustomgreek| as it caused |\ell| to
% become undefined under option |symbolgreek| and, much more catastrophic,
% caused |\alpha|, etc.. to become undefined under option |selfGreek| !
% \begin{macrocode}
@@ -9055,7 +9768,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
%
\let\mst@origpartial\partial
\let\mst@origwp\wp
- \let\mst@origell\ell }% \MTrecordstandardgreek
+ \let\mst@origell\ell }%
\MTrecordstandardgreek
\renewcommand*{\MTstandardgreek}{%
\let\Alpha\mst@origAlpha
@@ -9119,10 +9832,10 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\let\partial\mst@origpartial
\let\wp\mst@origwp
\let\ell\mst@origell
-}% \MTstandardgreek
+}%
\ifmst@greekplus
% \end{macrocode}
-% |1.3za| implementation of |LGRgreek+| option. It is not exactly
+% \mstrelease{1.3za} implementation of |LGRgreek+| option. It is not exactly
% clear what we should do for \cs{mathnormal} and \cs{mathnormalbold}.
%
% This definition allows usage of \cs{alpha} for example in numerical
@@ -9210,7 +9923,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\mst@define@lowergreekletter\omega\mst@omega
\mst@define@lowergreekletter\varsigma\mst@varsigma
\mst@define@lowergreekletter\digamma\mst@digamma
-}% end of True branch of \ifmst@greekplus
+}%
\else
% \end{macrocode}
% Under |selfGreek| or other Greek option but not |LGRgreek|, these Greek
@@ -9243,8 +9956,10 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\let\noexpand\Rho\mst@Rho
\let\noexpand\Tau\mst@Tau
\let\noexpand\Chi\mst@Chi
- }% end of first big \expanded
-% 1.3h: \mst@Digamma not defined if symbolgreek option
+ }%
+% \end{macrocode}
+% \mstrelease{1.3h}: \cs{mst@Digamma} not defined if |symbolgreek| option.
+% \begin{macrocode}
\ifmst@symbolgreek\else
\expanded{\let\noexpand\Digamma\mst@Digamma}%
\fi
@@ -9260,10 +9975,10 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\let\noexpand\Phi\mst@Phi
\let\noexpand\Psi\mst@Psi
\let\noexpand\Omega\mst@Omega
- }% end of second big \expanded
+ }%
% \end{macrocode}
-% |1.3h 2015/10/31| adds this conditional to correct the bad bug in
-% |1.3d 2014/05/23| which caused |\alpha| etc... to become undefined
+% \mstrelease{1.3h} |2015/10/31| adds this conditional to correct the bad bug in
+% \mstrelease{1.3d} |2014/05/23| which caused |\alpha| etc... to become undefined
% under option |selfGreek|.
% \begin{macrocode}
\ifmst@selfGreek\else
@@ -9293,28 +10008,34 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\let\noexpand\psi\mst@psi
\let\noexpand\omega\mst@omega
\let\noexpand\varsigma\mst@varsigma
- }% end of third big \expanded
-% 1.3h: digamma only defined with option LGRgreek:
+ }%
+% \end{macrocode}
+% \mstrelease{1.3h}: digamma only defined with option |LGRgreek|.
+% \begin{macrocode}
\ifmst@LGRgreek
\expanded{\let\noexpand\digamma\mst@digamma}%
\fi
-% conditional added 1.3h 2015/10/31
+% \end{macrocode}
+% Conditional added \mstrelease{1.3h} |2015/10/31|.
+% \begin{macrocode}
\ifmst@LGRgreek\else
\let\varepsilon\mst@varepsilon
\let\vartheta\mst@vartheta
\let\varpi\mst@varpi
\let\varrho\mst@varrho
\let\varphi\mst@varphi
-%
\let\partial\mst@partial
\let\wp\mst@wp
-% 1.3h: no \mst@ell if symbolgreek (bugfix 1.3h 2015/10/31)
+% \end{macrocode}
+% \mstrelease{1.3h}: no \cs{mst@ell} if |symbolgreek| (bugfix
+% \mstrelease{1.3h} |2015/10/31|).
+% \begin{macrocode}
\ifmst@symbolgreek\else\let\ell\mst@ell\fi
\fi
\fi
-}% \MTcustomgreek
-\fi% end of else branch of \ifmst@greekplus
-\fi% end of \ifmst@customgreek
+}%
+\fi
+\fi
\let\Mathastextstandardgreek\MTstandardgreek
\let\Mathastextcustomgreek\MTcustomgreek
\ifmst@subdued\else\MTcustomgreek\fi
@@ -9322,22 +10043,22 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% \end{macro}\end{macro}\end{macro}
% \begin{macro}{\inodot}
% \begin{macro}{\jnodot}
-% In |1.0|, I had them of type |mathord|, here I choose |mathalpha|. If I
+% In \mstrelease{1.0}, I had them of type |mathord|, here I choose |mathalpha|. If I
% used \cs{i} and \cs{j} from the text font the problem would be with the
% fontsize, if in scriptstyle. The amsmath \cs{text} would do the trick.
%
-% |1.14b| |2011/04/02|: again this bug in the EU1/EU2 encoding part, as in the
+% \mstrelease{1.14b} |2011/04/02|: again this bug in the EU1/EU2 encoding part, as in the
% code redefining \$ etc in math mode (see above). Fixed.
%
-% |1.3l| |2016/01/29|: anticipating TL2016 fontspec's switch to |TU|.
+% \mstrelease{1.3l} |2016/01/29|: anticipating TL2016 fontspec's switch to |TU|.
%
-% |1.3t| |2018/08/22| removes the definitions done of |\i| and |\j|
-% since |1.12| (as robust commands usable both in text and math mode).
+% \mstrelease{1.3t} |2018/08/22| removes the definitions done of |\i| and |\j|
+% since \mstrelease{1.12} (as robust commands usable both in text and math mode).
%
-% |1.3u| lets the \cs{imath} and \cs{jmath} react to the font encoding at each
+% \mstrelease{1.3u} lets the \cs{imath} and \cs{jmath} react to the font encoding at each
% math version.
%
-% |1.3v| lets the redefined \cs{imath} and \cs{jmath} be \cs{protected}.
+% \mstrelease{1.3v} lets the redefined \cs{imath} and \cs{jmath} be \cs{protected}.
% \begin{macrocode}
\def\mst@subduedinodot{%
\let\inodot\mst@original@imath
@@ -9352,7 +10073,6 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\def\mst@dothe@inodotstuff#1#2#3{%
\edef\mst@tmp@enc{#3}%
\if1\mst@OneifUniEnc
- % Unicode engine and font
\mst@Umathchardef#1="7 \symmtletterfont "0131 \relax
\mst@Umathchardef#2="7 \symmtletterfont "0237 \relax
\else
@@ -9360,7 +10080,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
{\csname\mst@tmp@enc\string\i\endcsname}
\DeclareMathSymbol{#2}{\mathalpha}{mtletterfont}
{\csname\mst@tmp@enc\string\j\endcsname}
- \fi}% \mst@dothe@inodotstuff
+ \fi}%
\ifmst@defaultimath\else\mst@infoline{\string\imath\space and \string\jmath\space}
\AtEndOfPackage{\AtBeginDocument{%
\protected\def\imath{\inodot}%
@@ -9382,10 +10102,10 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% define math versions with different encodings. Here I
% take T1 if it was the default at the time of loading the
% package, else OT1.
-% |1.12b|: I add LY1 which is quasi like OT1.
+% \mstrelease{1.12b}: I add LY1 which is quasi like OT1.
% \end{quote}
%
-% At |1.3u 2019/08/20| I decide to remove the hard-coded slot positions
+% At \mstrelease{1.3u} |2019/08/20| I decide to remove the hard-coded slot positions
% for OT1, T1 and LY1, and replace them with some hack which assumes
% LaTeX2e way of handling text accents got executed by the encoding
% definition file. If not, some breakage on package loading could occur, but
@@ -9395,21 +10115,22 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% The |\vec| accent is not considered here because it has no suitable
% available glyph in a standard 8bits text font encodings.
%
-% Also at |1.3u| the math accents adapt to the font encoding at each math
+% Also at \mstrelease{1.3u} the math accents adapt to the font encoding at each math
% version.
%
-% |1.3v| adapts to \LaTeX{} |2019-10-01| which now comes with robust math
-% accent macros. The original-named macros are without the robustifying
-% space (NOT true anymore, see |1.3w| next), as they only serve as meaning
+% (obsolete at \mstrelease{1.4}) \mstrelease{1.3v} adapts to \LaTeX{}
+% |2019-10-01| which now comes with robust math accent macros. The
+% original-named macros are without the robustifying space (NOT true
+% anymore, see \mstrelease{1.3w} next), as they only serve as meaning
% holders.
%
-% On the other hand the macros
-% indexed by math version names are (in the pdflatex branch) always defined
-% via \cs{DeclareMathAccent} hence they will be robust with |2019-10-01| or
+% (obsolete at \mstrelease{1.4}) On the other hand the macros indexed by
+% math version names are (in the pdflatex branch) always defined via
+% \cs{DeclareMathAccent} hence they will be robust with |2019-10-01| or
% later and we must use the \cs{mst@robustifyingspace} with them to access
% their real meaning (this thus differs from the situation with \cs{hbar}).
%
-% |1.3w| The above was a bit optimistic as |amsmath| for example modifies
+% \mstrelease{1.3w} The above was a bit optimistic as |amsmath| for example modifies
% \LaTeX{} internals and handles math accents differently.
%
% We thus needed to double our
@@ -9456,73 +10177,63 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\let\add@unicode@accent\@firstoftwo
\if1\mst@OneifUniEnc
\ifmst@unimathaccents
- % \` -> \grave
\expandafter\xdef\csname mst@grave@mv#1\mst@robustifyingspace\endcsname
{\mst@Umathaccent
7
\number\symmtoperatorfont\space
\csname#2\string\`\endcsname{}\relax}%
- % \' -> \acute
\expandafter\xdef\csname mst@acute@mv#1\mst@robustifyingspace\endcsname
{\mst@Umathaccent
7
\number\symmtoperatorfont\space
\csname#2\string\'\endcsname{}\relax}%
- % \v -> \check
\expandafter\xdef\csname mst@check@mv#1\mst@robustifyingspace\endcsname
{\mst@Umathaccent
7
\number\symmtoperatorfont\space
\csname#2\string\v\endcsname{}\relax}%
- % \u -> \breve
\expandafter\xdef\csname mst@breve@mv#1\mst@robustifyingspace\endcsname
{\mst@Umathaccent
7
\number\symmtoperatorfont\space
\csname#2\string\u\endcsname{}\relax}%
- % \= -> \bar
\expandafter\xdef\csname mst@bar@mv#1\mst@robustifyingspace\endcsname
{\mst@Umathaccent
7
\number\symmtoperatorfont\space
\csname#2\string\=\endcsname{}\relax}%
- % \. -> \dot
\expandafter\xdef\csname mst@dot@mv#1\mst@robustifyingspace\endcsname
{\mst@Umathaccent
7
\number\symmtoperatorfont\space
\csname#2\string\.\endcsname{}\relax}%
- % \" -> \ddot
\expandafter\xdef\csname mst@ddot@mv#1\mst@robustifyingspace\endcsname
{\mst@Umathaccent
7
\number\symmtoperatorfont\space
\csname#2\string\"\endcsname{}\relax}%
- % \r -> \mathring
\expandafter\xdef\csname mst@mathring@mv#1\mst@robustifyingspace\endcsname
{\mst@Umathaccent
7
\number\symmtoperatorfont\space
\csname#2\string\r\endcsname{}\relax}%
- % \^ -> \hat
\expandafter\xdef\csname mst@hat@mv#1\mst@robustifyingspace\endcsname
{\mst@Umathaccent
7
\number\symmtoperatorfont\space
\csname#2\string\^\endcsname{}\relax}%
- % \~ -> \tilde
\expandafter\xdef\csname mst@tilde@mv#1\mst@robustifyingspace\endcsname
{\mst@Umathaccent
7
\number\symmtoperatorfont\space
\csname#2\string\~\endcsname{}\relax}%
- \else % false branch of ifmst@unimathaccents
+ \else
% \end{macrocode}
-% |1.3u| used some \cs{def} but this made the accent macro meanings look
+% \mstrelease{1.3u} used some \cs{def} but this made the accent macro meanings look
% slightly different depending on whether the math version being set-up was
% with an 8bit encoding or TU encoding.
%
-% For the sake of uniform treatment we modify this at |1.3v|, but this is a
+% For the sake of uniform treatment we modify this at \mstrelease{1.3v}, but this is a
% bit complicated regarding timing: we need, in absence of |unimathaccents|
% option, in math versions with an OpenType font, to let the \cs{acute} etc...
% acquire back some prior non-\mst meanings. To allow maximal flexibility,
@@ -9535,8 +10246,8 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% definition of the original-named macros but prior to the (last one, if
% multiple) \cs{mst@nonsubduedmathaccents}.
%
-% Hence |1.3v| delayed a bit the initial execution of this macro (see further
-% down in the code) compared to what happened in |1.3u|.
+% Hence \mstrelease{1.3v} delayed a bit the initial execution of this macro (see further
+% down in the code) compared to what happened in \mstrelease{1.3u}.
%
% We are in a group but \cs{AtEndOfPackage} does the right thing.
% \begin{macrocode}
@@ -9561,7 +10272,6 @@ defaultbf,defaultit,defaultsf,defaulttt}}
%
% But wouldn't it be simpler to manage \cs{protected} macros?
% \begin{macrocode}
- \ifmst@robust@obsessed@LaTeX@era
\@tfor\@tempa:={grave}{acute}{check}{breve}{bar}%
{dot}{ddot}{mathring}{hat}{tilde}%
\do
@@ -9569,58 +10279,47 @@ defaultbf,defaultit,defaultsf,defaulttt}}
{\noexpand\protect
\expandafter\noexpand\csname mst@\@tempa @mv#1 \endcsname}%
}%
- \fi
- \else % false branch of ifUniEnc
+ \else
% \end{macrocode}
% \cs{DeclareMathAccent} works \cs{global}ly. And with \LaTeX{} |2019-10-01|
% or later it creates robust macros.
%
% \cs{mst@DeclareMathAccent} to work around \url{https://github.com/latex3/latex2e/issues/216}
% \begin{macrocode}
- % \` -> \grave
\expandafter\mst@DeclareMathAccent\expandafter
{\csname mst@grave@mv#1\endcsname}{\mathalpha}{mtoperatorfont}%
{\csname#2\string\`\endcsname{}}
- % \' -> \acute
\expandafter\mst@DeclareMathAccent\expandafter
{\csname mst@acute@mv#1\endcsname}{\mathalpha}{mtoperatorfont}%
{\csname#2\string\'\endcsname{}}
- % \v -> \check
\expandafter\mst@DeclareMathAccent\expandafter
{\csname mst@check@mv#1\endcsname}{\mathalpha}{mtoperatorfont}%
{\csname#2\string\v\endcsname{}}
- % \u -> \breve
\expandafter\mst@DeclareMathAccent\expandafter
{\csname mst@breve@mv#1\endcsname}{\mathalpha}{mtoperatorfont}%
{\csname#2\string\u\endcsname{}}
- % \= -> \bar
\expandafter\mst@DeclareMathAccent\expandafter
{\csname mst@bar@mv#1\endcsname}{\mathalpha}{mtoperatorfont}%
{\csname#2\string\=\endcsname{}}
- % \. -> \dot
\expandafter\mst@DeclareMathAccent\expandafter
{\csname mst@dot@mv#1\endcsname}{\mathalpha}{mtoperatorfont}%
{\csname#2\string\.\endcsname{}}
- % \" -> \ddot
\expandafter\mst@DeclareMathAccent\expandafter
{\csname mst@ddot@mv#1\endcsname}{\mathalpha}{mtoperatorfont}%
{\csname#2\string\"\endcsname{}}
- % \r -> \mathring
\expandafter\mst@DeclareMathAccent\expandafter
{\csname mst@mathring@mv#1\endcsname}{\mathalpha}{mtoperatorfont}%
{\csname#2\string\r\endcsname{}}
- % \^ -> \hat
\expandafter\mst@DeclareMathAccent\expandafter
{\csname mst@hat@mv#1\endcsname}{\mathalpha}{mtoperatorfont}%
{\csname#2\string\^\endcsname{}}
- % \~ -> \tilde
\expandafter\mst@DeclareMathAccent\expandafter
{\csname mst@tilde@mv#1\endcsname}{\mathalpha}{mtoperatorfont}%
{\csname#2\string\~\endcsname{}}
\fi
\endgroup
}%
-\fi % \ifmst@mathaccents
+\fi
% \end{macrocode}
% \end{macro}
% \begin{macro}{\MTDeclareVersion}
@@ -9634,14 +10333,14 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% \cs{SetSymbolFont}|{mteulervm}||{versionname}||{U}{zeur}{bx}{n}| if
% one wants to have a math version with bold Euler characters.
%
-% For version |1.1| we add an optional parameter specifying the shape
+% For version \mstrelease{1.1} we add an optional parameter specifying the shape
% to be used for letters.
%
% Note: (|2012/10/24|) I really should check whether the user attempts to
% redefine the `normal' and `bold' versions and issue a warning in
-% that case! Finally done at |1.3w| |2019/11/16|! Better late than never...
+% that case! Finally done at \mstrelease{1.3w} |2019/11/16|! Better late than never...
%
-% |1.3c| (|2013/12/14|) adds an extra optional parameter after all
+% \mstrelease{1.3c} (|2013/12/14|) adds an extra optional parameter after all
% previous ones, to inherit the settings from another version. Typically
% to be used with [bold]. I take this opportunity to sanitize a bit some
% line endings to avoid generating (in the preamble, document macros were
@@ -9650,11 +10349,11 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% purpose) the strange way I used |\@onlypreamble| in earlier
% version.
%
-% |1.3u| adds storage of macros holding the needed meanings for
+% \mstrelease{1.3u} adds storage of macros holding the needed meanings for
% \cs{imath}, \cs{hbar}, math accents, and the minus symbol,
% version wise.
%
-% |1.3w| adds the check to forbid |normal| and |bold| as version names.
+% \mstrelease{1.3w} adds the check to forbid |normal| and |bold| as version names.
% \begin{macrocode}
\newcommand*\MTDeclareVersion[6][]{%
\edef\mst@declareversionargs{{#1}{#2}{#3}{#4}{#5}{#6}}%
@@ -9666,14 +10365,14 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\MTDoNotDeclareVersion@\expandafter\@gobblefour
\fi
\relax\DeclareMathVersion{\mst@version}\MTDeclareVersion@
-}% \MTDeclareVersion
+}%
\newcommand*\MTDoNotDeclareVersion@[1][]{%
\PackageWarningNoLine{mathastext}{You asked to declare a version with name
`\mst@version'.^^J%
\@spaces Sorry but you are not allowed to do that.^^J%
\@spaces \ifmst@subdued Anyway the `subdued' option is in force\else
Use rather \string\Mathastext\space macro (with no optional argument)\fi
-}}%\MTDoNotDeclareVersion@
+}}%
\newcommand*\MTDeclareVersion@[1][]{%
\edef\mst@tmp{#1}%
\ifx\mst@tmp\empty\else
@@ -9685,7 +10384,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
inherits from `#1\string'\@gobble}%
\fi
\expandafter\MTDeclareVersion@@\mst@declareversionargs
-}% \MTDeclareVersion@
+}%
\newcommand*\MTDeclareVersion@@[6]{%
\expandafter\edef\csname mst@encoding@\mst@version\endcsname{#3}%
\expandafter\edef\csname mst@family@\mst@version\endcsname{#4}%
@@ -9706,46 +10405,69 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\ifx\mst@tmp\empty
\ifmst@italic
\SetSymbolFont{mtletterfont}{#2}{#3}{#4}{#5}{\mst@ltsh}%
-\immediate\write\m@ne{}%
-\PackageInfo{mathastext}{Latin letters in math version `#2\string'\MessageBreak
+ \immediate\write\m@ne{}%
+ \PackageInfo{mathastext}%
+ {\ifmst@noletters
+ \else
+ Latin letters in math version `#2\string'\MessageBreak
declared\on@line\MessageBreak
will use the font #3/#4/#5/\mst@ltsh
\ifmst@frenchmath\space(uppercase: #6)\fi\MessageBreak
+ \fi
Other characters (digits, ...) and \protect\log-like names\MessageBreak
- will be in `#6\string' shape\@gobble}%
-\immediate\write\m@ne{}%
+ \ifmst@noletters
+ will use the font #3/#4/#5/#6%
+ \else
+ will be in `#6\string' shape%
+ \fi\@gobble}%
+ \immediate\write\m@ne{}%
\expandafter\edef\csname mst@ltshape@\mst@version\endcsname{\mst@ltsh}%
\else
\SetSymbolFont{mtletterfont}{#2}{#3}{#4}{#5}{#6}%
-\immediate\write\m@ne{}%
-\PackageInfo{mathastext}{Latin letters in math version `#2\string'\MessageBreak
+ \ifmst@noletters
+ \else
+ \immediate\write\m@ne{}%
+ \PackageInfo{mathastext}%
+ {Latin letters in math version `#2\string'\MessageBreak
declared\on@line\MessageBreak
will use the fonts #3/#4/#5(\mst@bold)/#6\@gobble}%
-\immediate\write\m@ne{}%
+ \fi
+ \immediate\write\m@ne{}%
\expandafter\edef\csname mst@ltshape@\mst@version\endcsname{#6}%
\fi
- \else % #1 not empty
+ \else
+% \end{macrocode}
+% |#1| not empty.
+% \begin{macrocode}
\SetSymbolFont{mtletterfont}{#2}{#3}{#4}{#5}{#1}%
-\immediate\write\m@ne{}%
-\PackageInfo{mathastext}{Latin letters in math version `#2\string'\MessageBreak
+ \immediate\write\m@ne{}%
+ \PackageInfo{mathastext}%
+ {\ifmst@noletters
+ \else
+ Latin letters in math version `#2\string'\MessageBreak
declared\on@line\MessageBreak
will use the font #3/#4/#5/#1%
\ifmst@frenchmath\space(uppercase: #6)\fi\MessageBreak
+ \fi
Other characters (digits, ...) and
\protect\log-like names\MessageBreak
- will be in `#6\string' shape\@gobble}%
-\immediate\write\m@ne{}%
- \expandafter\edef\csname mst@ltshape@\mst@version\endcsname{#1}%
+ \ifmst@noletters
+ will use the font #3/#4/#5/#6%
+ \else
+ will be in `#6\string' shape%
+ \fi\@gobble}%
+ \immediate\write\m@ne{}%
+ \expandafter\edef\csname mst@ltshape@\mst@version\endcsname{#1}%
\fi
% \end{macrocode}
-% Here and elsewhere |1.3za| has removed an
+% Here and elsewhere \mstrelease{1.3za} has removed an
% \cs{ifmst@nonormalbold} conditional.
% \begin{macrocode}
\SetMathAlphabet{\Mathnormalbold}{#2}{#3}{#4}{\mst@bold}%
{\csname mst@ltshape@\mst@version\endcsname}%
\SetSymbolFont{mtoperatorfont}{#2}{#3}{#4}{#5}{#6}%
% \end{macrocode}
-% Since |1.3za| (and prior to |1.15f|) these math alphabet
+% Since \mstrelease{1.3za} (and prior to \mstrelease{1.15f}) these math alphabet
% commands are always defined.
% \begin{macrocode}
\SetMathAlphabet{\Mathbf}{#2}{#3}{#4}{\mst@bold}{#6}
@@ -9765,12 +10487,12 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% options as well as on the (local to this version) shapes for letters
% and digits.
%
-% |1.3x| replaces \cs{updefault} by \cs{MTgreekupdefault} and
+% \mstrelease{1.3y} replaces \cs{updefault} by \cs{MTgreekupdefault} and
% \cs{itdefault} by \cs{MTgreekitdefault}. It also prepares to store
% two Boolean settings saying whether lowercase respectively uppercase
% Greek letters will use `upright' or `italic' (|LGRgreek(s)| only).
%
-% The |1.3x| refactoring of |LGRgreek| is done via a decoupling,
+% The \mstrelease{1.3y} refactoring of |LGRgreek| is done via a decoupling,
% thus things are done here under |selfGreek| or other Greek options
% which ultimately serve nothing and conversely things are done here
% for |LGRgreek| which are superfluous.
@@ -9813,7 +10535,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\mst@greek@upper@uptrue
\fi
% \end{macrocode}
-% |1.3za| refactoring to reduce code duplication; I briefly considered
+% \mstrelease{1.3za} refactoring to reduce code duplication; I briefly considered
% trying to enhance \cs{MTgreekfont} to work also with |LGRgreeks| and
% |selfGreeks| but I have dropped the idea for now.
% \begin{macrocode}
@@ -9875,7 +10597,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\expandafter\mst@dothe@hyphenstuff\mst@tmp
\fi
\fi
-}% \MTDeclareVersion@@
+}%
\let\MathastextDeclareVersion\MTDeclareVersion
% \end{macrocode}
% \end{macro}
@@ -9890,45 +10612,48 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% additionally to the math fonts. Present already in the initial
% version of the package (January 2011.)
%
-% |1.15|: some modifications for the subdued option vs LGRgreek and
+% \mstrelease{1.15}: some modifications for the subdued option vs LGRgreek and
% for the math muskips after \cs{exists} and \cs{forall}.
%
-% |1.2|: with the subdued option sets the math alphabets in the
+% \mstrelease{1.2}: with the subdued option sets the math alphabets in the
% normal and bold math versions do not apply to operator
% names and non-alphabetical symbols. The switch for braces
% is left as it is.
%
-% |1.2b|: with the subdued option, the italic corrections are not added.
+% \mstrelease{1.2b}: with the subdued option, the italic corrections are not added.
% Else, we check the shape of letters in this version. Also, there was a bug
-% since |1.15|: the values of the math skips were taken not from the
+% since \mstrelease{1.15}: the values of the math skips were taken not from the
% settings for the math version (\#2) but from those of the optional argument
% (\#1), if present...
%
-% |1.3|: activation of italic corrections is now separated from actual math
+% \mstrelease{1.3}: activation of italic corrections is now separated from actual math
% activation of letters.
%
-% |1.3c|: a starred variant is added which does not modify the text fonts,
+% \mstrelease{1.3c}: a starred variant is added which does not modify the text fonts,
% only the math set-tup.
%
-% |1.3d|: replaced in |\MTversion@| things like |\edef\mst@encoding{...}| and
-% |\renewcommand{\encodingdefault}{\mst@@encoding}| by
+% \mstrelease{1.3d}: replaced in |\MTversion@| things like |\edef\mst@encoding{...}| and
+% \centeredline{|\renewcommand{\encodingdefault}{\mst@@encoding}|} by
% |\edef\encodingdefault{...}| etc\dots All those |\mst@@...| things were
% useless. I also redefine |\seriesdefault| rather than |\mddefault|.
%
-% |1.3d|: mechanism of restoration of Greek in subdued normal and bold
+% \mstrelease{1.3d}: mechanism of restoration of Greek in subdued normal and bold
% versions has been to all cases, and not only for the
% |LGRgreek| option.
%
-% |1.3u|: version savvy (i.e.\@ font-encoding savvy) minus sign,
+% \mstrelease{1.3u}: version savvy (i.e.\@ font-encoding savvy) minus sign,
% \cs{hbar}, \cs{imath}, math accents.
%
-% |1.3x|: Booleans recovered from stored data in the math version will
+% \mstrelease{1.3y}: Booleans recovered from stored data in the math version will
% configure the things \cs{MTcustomgreek} do, under |LGRgreek| option.
% \begin{macrocode}
-\newcommand*\MTversion {\@ifstar\MTversion@s\MTversion@ }
-\newcommand*\MTversion@s [1]{\mathversion{#1}\MTversion@@ }
+\newcommand*\MTversion {\@ifstar\MTversion@s\MTversion@}
+\newcommand*\MTversion@s [1]{\mathversion{#1}\MTversion@@}
\newcommand*\MTversion@ [2][]{%
- \mathversion{#2}% defines \math@version as expanded #2
+% \end{macrocode}
+% This defines \cs{math@version} as expanded |#2|.
+% \begin{macrocode}
+ \mathversion{#2}%
\edef\mst@tmpa{#1}%
\ifx\mst@tmpa\empty
\let\mst@tmp\math@version
@@ -9946,14 +10671,14 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\edef\ttdefault {\csname mst@ttdefault@\mst@tmp\endcsname}%
\usefont{\encodingdefault}{\familydefault}{\seriesdefault}{\shapedefault}%
\MTversion@@
-}% \MTversion@
+}%
% \end{macrocode}
-% |1.3j| has a stronger subdued which does \cs{MTnormalprime},
+% \mstrelease{1.3j} has a stronger subdued which does \cs{MTnormalprime},
% \cs{MTnormalexists}, \cs{MTnormalforall} rather than setting the skips to
% |0mu|. Hence \cs{MTversion} by default should do \cs{MTprimedoesskip},
% \cs{MTexistsdoesskip}, \cs{MTforalldoesskip}.
%
-% |1.3u| drops the argument, as the info is in \cs{math@version} from
+% \mstrelease{1.3u} drops the argument, as the info is in \cs{math@version} from
% \LaTeX2e code.
% \begin{macrocode}
\newcommand*\MTversion@@ {%
@@ -9979,18 +10704,18 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\edef\mst@tmpa{\csname mst@ltshape@\math@version\endcsname}%
\edef\mst@tmpb{\csname mst@shape@\math@version\endcsname}%
% \end{macrocode}
-% |v1.15c|: extending subdued to LGRgreek.
+% \mstrelease{1.15c}: extending subdued to LGRgreek.
%
-% |v1.15f|: subdueing math alphabets in a simpler way than in |1.15e|.
+% \mstrelease{1.15f}: subdueing math alphabets in a simpler way than in \mstrelease{1.15e}.
%
-% |v1.2b|: subdueing the activation of characters in math mode.
+% \mstrelease{1.2b}: subdueing the activation of characters in math mode.
%
-% |v1.2d|: special treatment of the asterisk.
+% \mstrelease{1.2d}: special treatment of the asterisk.
%
-% |v1.3d|: extended LGRgreek mechanism of activation/restoration of Greek to all
+% \mstrelease{1.3d}: extended LGRgreek mechanism of activation/restoration of Greek to all
% cases.
%
-% |v1.3j|: use of \cs{MTeverymathdefault}, which includes \cs{MTicinmath}, but
+% \mstrelease{1.3j}: use of \cs{MTeverymathdefault}, which includes \cs{MTicinmath}, but
% must be corrected then according to shape of letters and presence or absence
% of option |frenchmath|. We do only |\def\mst@ITcorr{\ifnum\fam=\m@ne\/\fi}|
% and not \cs{MTICinmath} to not overwrite some user-defined
@@ -9999,6 +10724,12 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% user customizing possibilities, but if I moved it later, I would possibly
% have to put inside the \cs{MTicinmath} the check for |it| ot |sl|. Similary
% the \cs{MTcustomgreek} always executed (if not |subdued|).
+%
+% MEMO: \cs{MTeverymathdefault} is executed \emph{also} if in |subdued| mode
+% but there is a \cs{MTeverymathoff} done next in the \emph{normal} and
+% \emph{bold} version. It does \cs{MTicinmath} and \cs{MTmathactivedigits}
+% which however are no-ops (only partly for the former, and for the latter
+% always anyhow if no option |activedigits|) in subdude mode.
% \begin{macrocode}
\MTmathoperatorsobeymathxx
\MTeverymathdefault
@@ -10009,7 +10740,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\@for\mst@tmpc:=it,sl\do{\ifx\mst@tmpc\mst@tmpb\MTnoICinmath\fi}%
\fi
% \end{macrocode}
-% |1.3j| has a stronger subdued which does \cs{MTnormalprime},
+% \mstrelease{1.3j} has a stronger subdued which does \cs{MTnormalprime},
% \cs{MTnormalexists}, \cs{MTnormalforall} rather than simply setting the
% skips to |0mu|. Note: \cs{MTnormalprime} is done as part of
% \cs{MTeverymathoff}.
@@ -10027,13 +10758,18 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\MTmathoperatorsdonotobeymathxx
\MTnormalexists
\MTnormalforall
+% \end{macrocode}
+% \mstrelease{1.4} has kept \cs{MTmathstandardletters} inside
+% \cs{MTeverymathoff} but its action is now quite different from earlier
+% situation as it resets mathcodes from active to normal status on the spot.
+% \begin{macrocode}
\MTeverymathoff
\MTresetnewmcodes
% \end{macrocode}
-% |1.3t| adds better compatibility with |subdued| mode for
+% \mstrelease{1.3t} adds better compatibility with |subdued| mode for
% |\imath/\jmath| and perfect compatibility for the minus sign.
%
-% |1.3u| extends this further to allow per-math-version meanings
+% \mstrelease{1.3u} extends this further to allow per-math-version meanings
% for them.
% \begin{macrocode}
\mst@subduedhbar
@@ -10056,7 +10792,14 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\else
\mst@setalphabets
% \end{macrocode}
-% |1.3x| addition for \cs{MTcustomgreek} under |LGRgreeks| option.
+% \mstrelease{1.3y} addition for \cs{MTcustomgreek} under |LGRgreeks| option.
+%
+% MEMO: the needed mathematical re-activation of letters when switching from
+% \emph{normal} or \emph{bold} to a non-|subdued| math version has already
+% been done above from the \cs{MTicinmath} which is part of
+% \cs{MTeverymathdefault}.
+%
+% MEMO: idem for digits under option |activedigits|.
% \begin{macrocode}
\expandafter\let\csname ifmst@greek@upper@up\expandafter\endcsname
\csname ifmst@greek@\math@version @upper@up\endcsname
@@ -10071,19 +10814,22 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\fi
\else
% \end{macrocode}
-% |1.3x| addition for \cs{MTcustomgreek} under |LGRgreek| option.
+% \mstrelease{1.3y} addition for \cs{MTcustomgreek} under |LGRgreek| option.
+%
+% MEMO: the mathematical activation of letters happened above from
+% \cs{MTeverymathdefault}. Idem if |activedigits| for digits.
% \begin{macrocode}
\expandafter\let\csname ifmst@greek@upper@up\expandafter\endcsname
\csname ifmst@greek@\math@version @upper@up\endcsname
\expandafter\let\csname ifmst@greek@lower@up\expandafter\endcsname
\csname ifmst@greek@\math@version @lower@up\endcsname
- \MTcustomgreek % new with 1.3d
+ \MTcustomgreek
\mst@nonsubduedhbar
\mst@nonsubduedinodot
\mst@nonsubduedmathaccents
\mst@nonsubduedminus
\fi
-}% \MTversion@@
+}%
\let\MathastextVersion\MTversion
\let\Mathastextversion\MTversion
\let\MTVersion\MTversion
@@ -10100,7 +10846,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\MTfamily{#3}
\MTseries{#4}
\MTshape{#5}
- \ifmst@italic\MTlettershape{\itdefault}\fi % was missing in v 1.14 and prior
+ \ifmst@italic\MTlettershape{\itdefault}\fi
\edef\mst@tmp{#1}
\ifx\mst@tmp\empty\else\MTlettershape{#1}\fi
\Mathastext}
@@ -10113,23 +10859,23 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% preamble and any number of time, the last one is the
% one that counts.
%
-% In version |1.1| we have two fonts: they only differ in
+% In version \mstrelease{1.1} we have two fonts: they only differ in
% shape. The |mtletterfont| is for letters, and the
% |mtoperatorfont| for digits and log-like operator
% names. The default is that both are upright.
%
-% Starting with version |1.12|, an optional argument makes
+% Starting with version \mstrelease{1.12}, an optional argument makes
% \cs{Mathastext} act as the declaration of a math
% version, to be later used in the document.
%
-% Versions |1.15x| brought some adaptations related to the subdued
+% Versions \mstrelease{1.15x} brought some adaptations related to the subdued
% option.
%
-% |1.3c| adds a second optional parameter to inherit previous settings
+% \mstrelease{1.3c} adds a second optional parameter to inherit previous settings
% from another version; mostly done to inherit the bold version fonts for
% symbols and large symbols. This is done in |\MTDeclareVersion|.
%
-% |1.3j| moves the code related to \cs{MTicinmath} from \cs{Mathastext@} to
+% \mstrelease{1.3j} moves the code related to \cs{MTicinmath} from \cs{Mathastext@} to
% \cs{AtBeginDocument} (code depending on whether |subdued| option in use).
% But we omit for this from \cs{MTicinmath} the \cs{MTmathactiveletters}
% and issue the latter during loading of package, hence allowing
@@ -10139,15 +10885,15 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% command without optional parameter does not any |\SetSymbolFont| etc...
% but it has a few other tasks to complete nevertheless.
%
-% |1.3u| fixes some long-standing bug that \cs{Mathastext} did not repeat some
+% \mstrelease{1.3u} fixes some long-standing bug that \cs{Mathastext} did not repeat some
% font-encoding dependent things: they got done only once during package
% loading (things regarding the \cs{hbar}, \cs{imath}, the math accents and
% the minus sign). They are now part of the contents of \cs{Mathastext} macro
% itself (which is executed during package loading).
%
-% |1.3x| has refactored the |LGRgreek| associated math fonts.
+% \mstrelease{1.3y} has refactored the |LGRgreek| associated math fonts.
% \begin{macrocode}
-\def\Mathastext {\@ifnextchar [\Mathastext@declare\Mathastext@ }
+\def\Mathastext {\@ifnextchar[\Mathastext@declare\Mathastext@}% ]
\def\Mathastext@declare [#1]{%
\edef\mst@tmp{#1}%
\ifx\mst@tmp\empty
@@ -10156,7 +10902,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\fi
\Mathastext@
{\MTDeclareVersion[\mst@ltsh]{#1}{\mst@enc}{\mst@fam}{\mst@ser}{\mst@opsh}}%
-}% \Mathastext@declare
+}%
\def\Mathastext@ {%
\mst@update@greeksh
\edef\mst@encoding@normal{\mst@enc}%
@@ -10187,7 +10933,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\edef\mst@prime@skip@bold{\mst@prime@skip}%
\ifmst@subdued
% \end{macrocode}
-% Since |1.3j| this branch is actually almost superfluous, as entering
+% Since \mstrelease{1.3j} this branch is actually almost superfluous, as entering
% |normal| or |bold| with \cs{MTversion} does \cs{MTnormalexists},
% \cs{MTnormalforall}, and \cs{MTnormalprime}. But some default values are
% needed if the user insists on issuing \cs{MTexistsdoesskip}, etc...
@@ -10199,7 +10945,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\def\mst@exists@skip@bold{0mu}%
\def\mst@forall@skip@bold{0mu}%
\def\mst@prime@skip@bold{0mu}%
- \else % not subdued
+ \else
\ifmst@italic
\ifmst@frenchmath
\mst@exists@muskip\mst@exists@skip\relax
@@ -10220,8 +10966,8 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\fi
\fi
% \end{macrocode}
-% Here and elsewhere |1.3za| has removed usage of an
-% \cs{ifmst@nonormalbold} conditional which was added at |1.15f|.
+% Here and elsewhere \mstrelease{1.3za} has removed usage of an
+% \cs{ifmst@nonormalbold} conditional which was added at \mstrelease{1.15f}.
% \begin{macrocode}
\SetMathAlphabet{\Mathnormalbold}{normal}{\mst@encoding@normal}%
{\mst@family@normal}%
@@ -10249,7 +10995,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
{\mst@series@bold}%
{\mst@shape@bold}%
% \end{macrocode}
-% |1.3za| removes the |1.15f| added conditional checks.
+% \mstrelease{1.3za} removes the \mstrelease{1.15f} added conditional checks.
% \begin{macrocode}
\SetMathAlphabet{\Mathbf}{normal}{\mst@encoding@normal}%
{\mst@family@normal}%
@@ -10283,10 +11029,10 @@ defaultbf,defaultit,defaultsf,defaulttt}}
{\mst@ttdefault@bold}%
{\mst@series@bold}%
{\mst@shape@bold}%
- \fi % de \ifmst@subdued
+ \fi
% \end{macrocode}
% \begin{macro}{\MathEulerBold}
-% |1.14c|: We reset |mteulervm| and \cs{MathEulerBold} here as the
+% \mstrelease{1.14c}: We reset |mteulervm| and \cs{MathEulerBold} here as the
% variant for bold may have been changed by the user via
% \cs{Mathastextboldvariant}|{m}|; and we should keep this local to
% math versions.
@@ -10309,9 +11055,9 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% \begin{macro}{selfGreek*}
% LGRgreek, LGRgreeks, selfGreek, and selfGreeks options.
%
-% |1.3x| has refactored the |LGRgreek| associated math fonts.
+% \mstrelease{1.3y} has refactored the |LGRgreek| associated math fonts.
%
-% |1.3za| adds the math alphabets \cs{mathgreekitbold} and
+% \mstrelease{1.3za} adds the math alphabets \cs{mathgreekitbold} and
% \cs{mathgreekupbold}.
% And it executes this code also in |subdued| mode, because
% anyhow the symbolfonts |mtgreekup| and |mtgreekit| and
@@ -10352,7 +11098,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% \end{macrocode}
% \end{macro}
% \end{macro}
-% |1.3za| adds the log message in case of |selfGreek| option.
+% \mstrelease{1.3za} adds the log message in case of |selfGreek| option.
% \begin{macrocode}
\ifmst@subdued
\else
@@ -10380,7 +11126,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\mst@infoline{Other characters (digits, ...) and \string\log-like names will be}%
\mst@infoline{typeset with the \mst@shape@normal\space shape.}%
\fi
- \fi % end of else branch \ifmst@subdued
+ \fi
\ifmst@nohbar\else
\mst@infoline{\string\hbar}%
\mst@dothe@hbarstuff
@@ -10415,9 +11161,9 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\let\mst@varfam@minus@mvbold\mst@varfam@minus@mvnormal
\fi
\fi
- \fi % minus
+ \fi
% \end{macrocode}
-% |1.3zb| moves this info line last and also explicitly mentions |italic| or
+% \mstrelease{1.3zb} moves this info line last and also explicitly mentions |italic| or
% |frenchmath| (here and at some other locations above).
% \begin{macrocode}
\ifmst@subdued
@@ -10427,7 +11173,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\mst@infoline{The \ifmst@frenchmath frenchmath \else
italic \fi option is in effect.}%
\fi
-}% \Mathastext@
+}%
\let\mathastext\Mathastext
\Mathastext
% \end{macrocode}
@@ -10488,14 +11234,23 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\MTeverymathoff}
-% |1.3i 2016/01/06| Compatibility patch with |\url| from |url.sty| and
+% \mstrelease{1.3i} |2016/01/06| Compatibility patch with |\url| from |url.sty| and
% |\url/\nolinkurl| from |hyperref.sty|.
%
-% |1.3j 2016/01/15| renamed the macro from |\MTactivemathoff| to
+% \mstrelease{1.3j} |2016/01/15| renamed the macro from |\MTactivemathoff| to
% |\MTeverymathoff|, as it is not exclusively a matter of math active
% characters due to |\MTeasynonlettersdonotobeymathxx|.
%
-% |1.3o 2016/05/03| adds \cs{MTdonotfixfonts}. Operant with \LuaLaTeX\ only.
+% \mstrelease{1.3o} |2016/05/03| adds \cs{MTdonotfixfonts}. Operant with
+% \LuaLaTeX\ only.
+%
+% \mstrelease{1.4} |2024/07/20| keeps the \cs{MTmathstandardletters} as a
+% component of \cs{MTeverymathoff}. It was checked that \ctanpkg{url} and
+% \ctanpkg{hyperref} do not change mathcodes of ascii letters prior to
+% location where \cs{MTeverymathoff} gets executed, so nothing is
+% overwritten, despite the new mode of action of \cs{MTmathstandardletters}.
+%
+% \mstrelease{1.4} has \cs{MTmathstandarddigits} and inserts it into \cs{MTeverymathoff}.
% \begin{macrocode}
\newcommand*\MTeverymathoff {%
\MTnormalasterisk
@@ -10503,6 +11258,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\MTnonlettersdonotobeymathxx
\MTeasynonlettersdonotobeymathxx
\MTmathstandardletters
+ \MTmathstandarddigits
\MTdonotfixfonts
}%
\AtBeginDocument {%
@@ -10513,7 +11269,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\MTeverymathdefault}
-% |1.3j 2016/01/15| Customizable command which gets executed by
+% \mstrelease{1.3j} |2016/01/15| Customizable command which gets executed by
% \cs{MTversion} except when switching to |normal/bold| if option |subdued|.
% The included \cs{MTicinmath} does \cs{MTmathactiveletters} which will also
% activate the math skips around letters.
@@ -10537,13 +11293,18 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% it will not be overruled (as it is delayed at begin document to after \mst
% dealings).
%
-% |1.3o 2016/05/03| adds \cs{MTfixfonts}. Operant with \LuaLaTeX\ only.
+% \mstrelease{1.3o} |2016/05/03| adds \cs{MTfixfonts}. Operant with
+% \LuaLaTeX\ only.
+%
+% \cs{MTmathactivedigits} of \mstrelease{1.4} is a no-op except under option
+% |activedigits|.
% \begin{macrocode}
\newcommand*\MTeverymathdefault {%
\MTactiveasterisk
\MTprimedoesskip
\MTeasynonlettersobeymathxx
\MTicinmath
+ \MTmathactivedigits
\MTfixfonts
}%
% \end{macrocode}
@@ -10552,48 +11313,54 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% \def~{\rlap}
% \begin{macro}{Things to do last ~{``at begin document''}}
% \let~\temp
+%
+% \mstrelease{1.4} has a significant change here that mathematical
+% activation of ascii letters is now not incorporated into the \cs{everymath}
+% and \cs{everydisplay}.
% \begin{macrocode}
-\AtBeginDocument{%
- \everymath\expandafter{\the\everymath
- \mst@the\mst@do@nonletters \let\mst@the\@gobble
- \mst@theeasy\mst@do@easynonletters \let\mst@theeasy\@gobble
- \mst@thef\mst@do@az \let\mst@thef\@gobble
- \mst@theF\mst@do@AZ \let\mst@theF\@gobble}%
- \everydisplay\expandafter{\the\everydisplay
- \mst@the\mst@do@nonletters \let\mst@the\@gobble
- \mst@theeasy\mst@do@easynonletters \let\mst@theeasy\@gobble
- \mst@thef\mst@do@az \let\mst@thef\@gobble
- \mst@theF\mst@do@AZ \let\mst@theF\@gobble}%
-% \end{macrocode}
-% |1.3j|: moved here to be executed at begin document (and not from inside
+\ifmst@everymath
+ \AtBeginDocument{%
+ \everymath\expandafter{\the\everymath
+ \mst@the\mst@do@nonletters \let\mst@the\@gobble
+ \mst@theeasy\mst@do@easynonletters \let\mst@theeasy\@gobble
+ }%
+ \everydisplay\expandafter{\the\everydisplay
+ \mst@the\mst@do@nonletters \let\mst@the\@gobble
+ \mst@theeasy\mst@do@easynonletters \let\mst@theeasy\@gobble
+ }%
+ }
+\fi
+% \end{macrocode}
+% \mstrelease{1.3j}: moved here to be executed at begin document (and not from inside
% \cs{Mathastext@}.) The \cs{MTeverymathoff} does: \cs{MTnormalasterisk},
% \cs{MTnormalprime}, \cs{MTnonlettersdonotobeymathxx},
% \cs{MTeasynonlettersdonotobeymathxx}, \cs{MTmathstandardletters}.
%
-% |1.3m|: doing \cs{MTmathactiveletters} in subdued mode immediately after
+% \mstrelease{1.3m}: doing \cs{MTmathactiveletters} in subdued mode immediately after
% |\begin{document}| resulted in errors because \cs{mst@itcorr} had been left
% undefined. We thus add \cs{MTnoicinmath} to the subdued initialization.
%
-% Since |1.3n| there is \cs{MTresetnewmcodes} which needs
+% Since \mstrelease{1.3n} there is \cs{MTresetnewmcodes} which needs
% \cs{mst@originalnewmcodes@}, itself defined at begin document. Thus we have
-% wrapped the whole thing in \cs{AtEndOfPackage} (at |1.3u| whole code
+% wrapped the whole thing in \cs{AtEndOfPackage} (at \mstrelease{1.3u} whole code
% directly moved at end of package).
%
-% And |1.3p| adds here \cs{MTcustomizenewmcodes} which had been regrettably
-% forgotten by |1.3n|.
+% And \mstrelease{1.3p} adds here \cs{MTcustomizenewmcodes} which had been regrettably
+% forgotten by \mstrelease{1.3n}.
%
-% |1.3t| adds some extras to handle correctly the minus sign and
+% \mstrelease{1.3t} adds some extras to handle correctly the minus sign and
% dotless i and j in subdued mode, even in case of usage with fontspec.
%
-% |1.3u| similarly lets math accents be correctly subdued.
+% \mstrelease{1.3u} similarly lets math accents be correctly subdued.
%
-% |1.3v| adapts to \cs{hbar} and math accents now being robust with \LaTeX{}
+% \mstrelease{1.3v} adapts to \cs{hbar} and math accents now being robust with \LaTeX{}
% |2019-10-01| or later.
%
-% |1.3w| pays attention to the fact that \cs{hbar} may well be
+% \mstrelease{1.3w} pays attention to the fact that \cs{hbar} may well be
% a |\mathchar| and not a robust macro! And no need to worry about
% \cs{hbar<space>} finally in revised code.
% \begin{macrocode}
+\AtBeginDocument{%
\MTcustomizenewmcodes
\let\mst@original@hbar\hbar
\let\mst@original@imath\imath
@@ -10617,21 +11384,18 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\MTresetnewmcodes
\MTnoicinmath
\MTmathoperatorsdonotobeymathxx
- %\mst@subduedhbar
\let\inodot\imath
\let\jnodot\jmath
- %\mst@subduedmathaccents
\mst@subduedminus
\else
\mst@nonsubduedhbar
% \end{macrocode}
-% |1.3v| needs this \cs{mst@nonsubduedmathaccents} to get executed later (see
+% \mstrelease{1.3v} needs \cs{mst@nonsubduedmathaccents} to get executed later (see
% code comments for \cs{mst@dothe@mathaccentsstuff}).
% \begin{macrocode}
- % \mst@nonsubduedmathaccents % will get executed later
\mst@nonsubduedminus
% \end{macrocode}
-% |1.3j|: an earlier version of this code was earlier part of \cs{Mathastext@}.
+% \mstrelease{1.3j}: an earlier version of this code was earlier part of \cs{Mathastext@}.
% As we are now in \cs{AtBeginDocument} we try to be careful not to overwrite
% \cs{MTicinmath}, \cs{MTnoicinmath}, \cs{MTicalsoinmathxx}, ... if issued by
% the user in the preamble, though. And we do not execute
@@ -10652,12 +11416,12 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\fi
\fi
\fi
-}% \AtBeginDocument
+}%
\AtEndOfPackage{\AtBeginDocument{\ifmst@subdued\else\mst@nonsubduedmathaccents\fi}}%
% \end{macrocode}
% \end{macro}
% \begin{macro}{subdued}
-% |1.15|: The subdued code was initiated in May 2011. I returned to
+% \mstrelease{1.15}: The subdued code was initiated in May 2011. I returned to
% |mathastext| on Sep 24, 2012, and decided to complete what I had started
% then, but in the mean time I had forgotten almost all of the little I knew
% about \LaTeX{} macro programming.
@@ -10671,7 +11435,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% $^1$but the \emph{euler} package for example
% assigns the digits to the \emph{letters} symbol font...
%
-% |1.15d|: Oct 13, 2012. The \cs{mathcode} thing has to be used with care
+% \mstrelease{1.15d}: Oct 13, 2012. The \cs{mathcode} thing has to be used with care
% under Unicode engines. Unfortunately the \cs{luatexUmathcode} macro is
% helpless as it is not possible to know if it will return a legacy mathcode
% or a Unicode mathcode. On the other hand the much saner
@@ -10683,14 +11447,14 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% treats identically under both unicode engines the equal and minus signs (and
% the vertical bar).}
%
-% |1.15e|: Oct 22, 2012. I add the necessary things to also subdue the
+% \mstrelease{1.15e}: Oct 22, 2012. I add the necessary things to also subdue the
% \cs{mathbf}, \cs{mathit}, \cs{mathsf} and \cs{mathtt} macros (previous
% version only took care of the symbol alphabets \cs{mathnormal} and
-% \cs{mathrm}.) [update: |1.15f| does that in a completely different and much
+% \cs{mathrm}.) [update: \mstrelease{1.15f} does that in a completely different and much
% simpler way] Notice that the package defines a \cs{mathnormalbold} macro,
% but it will not be subdued in the normal and bold math versions.
%
-% |1.15f|: Oct 23, 2012. The previous version of the code queried the math
+% \mstrelease{1.15f}: Oct 23, 2012. The previous version of the code queried the math
% family of a, respectively 1, to guess and then extract the fonts to be
% reassigned to mtletterfont and mtoperatorfont (which is done at the end of
% this .sty file). The present code simply directly uses letters and operators
@@ -10705,23 +11469,24 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% to revert these changes (and one would have to do even more hacking for
% |\mathversion{normal}| and not only |\MTversion{normal}| to work).
%
-% |1.15f|: and also I take this opportunity to do the subdued math
+% \mstrelease{1.15f}: and also I take this opportunity to do the subdued math
% alphabets things in a much much easier way, see below.
%
-% |1.3s 2018/08/21|: I have half-forgotten the reasons for modifiying the
+% \mstrelease{1.3s} |2018/08/21|: I have half-forgotten the reasons for modifiying the
% font encoding to current |\encodingdefault|, but at any rate this should
% not be done in a \ctanpkg{fontspec} context, encoding default being (now) |TU| it
% is very unlikely modifying from |TU| or to |TU| from something else will
-% do any good.^^A See
+% do any good.
+%^^A See
%^^A \centeredline{\url{https://tex.stackexchange.com/questions/444565/mathastext-wrong-digits-in-math-mode/}}
%^^A for original report.
% I add workaround here for case of \ctanpkg{fontspec} being
% detected via the |\encodingdefault| setting.
%
-% |1.3t 2018/08/22|: the |1.3s| fix erroneously removed the
+% \mstrelease{1.3t} |2018/08/22|: the \mstrelease{1.3s} fix erroneously removed the
% |OT1->T1| replacement in |TU| context.
%
-% |1.3u|: the whole thing will only get executed At Begin
+% \mstrelease{1.3u}: the whole thing will only get executed At Begin
% Document.
%
% I realize extremely late (|2023/12/28|) I never said explicitly anywhere
@@ -10734,7 +11499,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
% behavior of the package.
% \begin{macrocode}
\ifmst@subdued
-\AtBeginDocument{%
+ \AtBeginDocument{%
\def\mst@reserved#1\getanddefine@fonts\symletters#2#3\@nil{%
\def\mst@normalmv@letter{#2}}%
\expandafter\mst@reserved\mv@normal\@nil
@@ -10773,15 +11538,19 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\else
\mst@tmp@enc
\fi/\mst@reste\endcsname}%
- \expandafter\SetSymbolFont@ \expandafter\mv@normal\mst@normalmv@letter\symmtletterfont
- \expandafter\SetSymbolFont@ \expandafter\mv@bold\mst@boldmv@letter\symmtletterfont
- \expandafter\SetSymbolFont@ \expandafter\mv@normal\mst@normalmv@operator\symmtoperatorfont
- \expandafter\SetSymbolFont@ \expandafter\mv@bold\mst@boldmv@operator\symmtoperatorfont
-\immediate\write\m@ne{}%
+ \expandafter\SetSymbolFont@
+ \expandafter\mv@normal\mst@normalmv@letter\symmtletterfont
+ \expandafter\SetSymbolFont@
+ \expandafter\mv@bold\mst@boldmv@letter\symmtletterfont
+ \expandafter\SetSymbolFont@
+ \expandafter\mv@normal\mst@normalmv@operator\symmtoperatorfont
+ \expandafter\SetSymbolFont@
+ \expandafter\mv@bold\mst@boldmv@operator\symmtoperatorfont
+ \immediate\write\m@ne{}%
\PackageInfo{mathastext}{...entering subdued mode...\MessageBreak ...done}%
-\immediate\write\m@ne{}%
-}% \AtBeginDocument
-\fi % \ifmst@subdued
+ \immediate\write\m@ne{}%
+ }%
+\fi
% \end{macrocode}
%^^A In the short-lived |1.15e| I was doing the following for alphabets:\\
%^^A |\def\mst@reservedc#1#2#3#4{\def\mst@normalmv@mathbf{#4#3}}|\\
diff --git a/macros/latex/contrib/mathastext/mathastext.pdf b/macros/latex/contrib/mathastext/mathastext.pdf
index 6e95227410..635b6149fb 100644
--- a/macros/latex/contrib/mathastext/mathastext.pdf
+++ b/macros/latex/contrib/mathastext/mathastext.pdf
Binary files differ
diff --git a/macros/latex/contrib/mercatormap/CHANGES.md b/macros/latex/contrib/mercatormap/CHANGES.md
new file mode 100644
index 0000000000..49ef66fb7a
--- /dev/null
+++ b/macros/latex/contrib/mercatormap/CHANGES.md
@@ -0,0 +1,176 @@
+# Changelog
+All notable changes to this project will be documented in this file.
+
+The format is based on
+[Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
+and this project adheres to
+[Semantic Versioning](http://semver.org/spec/v2.0.0.html).
+
+## [Unreleased]
+
+### Added
+### Changed
+### Deprecated
+### Removed
+### Fixed
+### Security
+
+
+
+## [1.2.0] - 2024-08-05
+
+### Added
+- Command `\ifmrcNPexists` to test existence of a named position
+- Macros `\mrcAnimAngle` and `\l_mermap_anim_angle_fp` to measure
+ the current orthodrome angle
+- Animation example for static maps
+
+### Changed
+- `\mrcNPlat` and `\mrcNPlon` result to 0 now, if named position does not exist
+- `\ifmrcNPinmap` and `\ifmrcNPinvicinity` result to `false` now, if named position does not exist
+- Point definitions on an orthodrome now take an optional angle as result:
+ - Command `mrcNPfromOrthoFraction`
+ - Command `mrcNPfromOrthoFractionNamed`
+ - Command `mrcNPfromOrthoDistance`
+ - Command `mrcNPfromOrthoDistanceNamed`
+
+### Fixed
+- Documentation contained dates from `2023` instead of `2024`
+
+
+
+## [1.1.0] - 2024-08-01
+
+### Added
+- New supply sources (web tile servers):
+ - `thunderforest atlas`
+ - `topplusopen web light`
+ - `topplusopen web light grau`
+- Needed LaTeX version 2023-11-01
+- Point definitions on an orthodrome:
+ - Command `mrcNPfromOrthoFraction`
+ - Command `mrcNPfromOrthoFractionNamed`
+ - Command `mrcNPfromOrthoDistance`
+ - Command `mrcNPfromOrthoDistanceNamed`
+- Animation support:
+ - Environment `mrcAnimation`
+ - Command `\mrcTimewarpIdentity`
+ - Command `\mrcTimewarpSlowStart`
+ - Command `\mrcTimewarpSlowFinal`
+ - Command `\mrcTimewarpSlowStartFinal`
+ - Command `\mrcAnimFrame`
+ - Command `\l_mermap_anim_frame_int`
+ - Command `\mrcAnimTime`
+ - Command `\l_mermap_anim_time_fp`
+ - Command `\mrcAnimScaleDenom`
+ - Command `\l_mermap_anim_scaledenom_fp`
+ - Command `\mrcAnimLatitude`
+ - Command `\l_mermap_anim_lat_fp`
+ - Command `\mrcAnimLongitude`
+ - Command `\l_mermap_anim_lon_fp`
+ - Option `start-position`
+ - Option `named-start-position`
+ - Option `final-position`
+ - Option `named-final-position`
+ - Option `position`
+ - Option `named-position`
+ - Option `frames`
+ - Option `drop-first-frame`
+ - Option `drop-last-frame`
+ - Option `drop-no-frame`
+ - Option `scale-denominators`
+ - Option `common-scale-denominator`
+ - Option `timewarp`
+ - Option `timewarp-identity`
+ - Option `timewarp-slow-start`
+ - Option `timewarp-slow-final`
+ - Option `timewarp-slow-start-final`
+
+### Changed
+- Version history moved from documentation Chapter 11 to this changelog
+- Versioning changed to [Semantic Versioning](http://semver.org/spec/v2.0.0.html)
+ starting with 1.1.0
+- `README` changed to `README.md`
+- Key names start with `mermap` instead of `/mermap` now
+- All common scratch variables like `\l_tmpa_tl` replaced by package variables
+- Orthodrome code
+- Several code further revisions
+
+### Deprecated
+- Stamen Design has discontinued to server map tiles since 2023-07-31.
+ Therefore, all `supply/source` options based on Stamen Design are
+ deprecated now, namely
+ - `stamen terrain`
+ - `stamen terrain-background`
+ - `stamen terrain-labels`
+ - `stamen terrain-lines`
+ - `stamen toner`
+ - `stamen toner-lite`
+ - `stamen toner-hybrid`
+ - `stamen toner-background`
+ - `stamen toner-labels`
+ - `stamen toner-lines`
+ - `stamen watercolor`
+ All these options are now not documented any more, but for some time
+ are still available for old documents with cached map tiles.
+
+### Removed
+- Requirement for packages `expl3`, `xparse`, and `pdftexcmds`
+
+### Fixed
+- Links to the WMS maps of Bundesamt für Kartographie und Geodäsie changed
+- Overwrite warning while generating `maptiles.texpy`
+- Orthodrome drawing with identical starting and final point is now silently ignored
+
+
+
+## [1.02] - 2020-08-06
+
+### Added
+- New options
+ `/mermap/supply/area from marker input` and
+ `/mermap/supply/add area from marker input`
+ which allow to fit a map to a given external list of marker positions.
+- New option `/mermap/fail on missing resource` to control
+ compilation behavior for missing resource files.
+- New marker option `/mermap/marker/distance` with corresponding
+ macro `\mrcmarkerdistance` (issue #2)
+
+### Deprecated
+- Openrouteservice has discontinued mapsurfer tiles since June 2020.
+ Therefore, `/mermap/supply/source=openrouteservice mapsurfer`
+ is deprecated now. It is not documented any more, but
+ for some time it is still available for old documents with
+ cached map tiles.
+
+
+
+## [1.01] - 2020-05-05
+
+### Added
+- New general marker option
+ `/mermap/marker/generic` with corresponding macros
+ `\mrcmarkergeneric` and `\l_mermap_marker_generic_tl`.
+ Also, the marker uuid is made expl3 accessible as `\l_mermap_marker_uuid_tl`.
+- New hyper marker options:
+ - `/mermap/marker/url`
+ - `/mermap/marker/link`
+ - `/mermap/marker/use urls`
+ - `/mermap/marker/ignore urls`
+ - `/mermap/marker/use links`
+ - `/mermap/marker/ignore links`
+
+### Changed
+- User messages for failed Python script calls are changed from warnings to
+ errors to fail fast and to provide more information and hints about
+ possible reasons.
+
+### Fixed
+- Sorting of index key entries fixed for the documentation.
+
+
+
+## [1.00] - 2020-04-20
+
+### Added
+- Initial public release
diff --git a/macros/latex/contrib/mercatormap/README b/macros/latex/contrib/mercatormap/README
deleted file mode 100644
index c33ea99112..0000000000
--- a/macros/latex/contrib/mercatormap/README
+++ /dev/null
@@ -1,43 +0,0 @@
-%% The LaTeX package mercatormap - version 1.02 (2020/08/06)
-%%
-%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
-%% -------------------------------------------------------------------------------------------
-%%
-%% 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'.
-%%
-%% This work consists of all files listed in README
-%%
-
-The package ...
-
-Contents of the package
-=======================
- 'README' this file
- 'mercatormap.sty' LaTeX package file (style file)
- 'mercatorsupplier.def' LaTeX package file (include file for style)
- 'mercatorpy.def' LaTeX package file (Python generator)
- 'mercatormap.pdf' Documentation
- 'mercatormap.tex' Source code of the documentation (main file)
- '*.doc.*' Source code of the documentation (include files)
- 'mercatormap-example.tex' Source code of an example
- 'mercatormap.bib' Bibliography of the documentation
-
-Installation
-============
-Copy the contents of the 'mercatormap.tds.zip' from CTAN to your local TeX file tree.
-
-Alternatively, put the files to their respective locations within the TeX installation:
- 'mercatormap.sty' -> /tex/latex/mercatormap
- 'mercatorpy.def' -> /tex/latex/mercatormap
- 'mercatorsupplier.def' -> /tex/latex/mercatormap
-
- all other files -> /doc/latex/mercatormap
diff --git a/macros/latex/contrib/mercatormap/README.md b/macros/latex/contrib/mercatormap/README.md
new file mode 100644
index 0000000000..b7b4be29ab
--- /dev/null
+++ b/macros/latex/contrib/mercatormap/README.md
@@ -0,0 +1,50 @@
+# The LaTeX package mercatormap - version 1.2.0 (2024/08/05)
+
+
+> Copyright (c) 2020-2024 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+
+> 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
+> https://www.latex-project.org/lppl.txt
+> and version 1.3c or later is part of all distributions of LaTeX
+> version 2008-05-04 or later.
+
+> This work has the LPPL maintenance status `author-maintained`.
+
+> This work consists of all files listed in README.md
+
+
+The mercatormap package extends TikZ with tools to
+create map graphics. The provided coordinate system relies on the
+Web Mercator projection used on the Web by OpenStreetMap and others.
+The package supports the seamless integration of graphics
+from public map tile servers by a Python script. Also, common map
+elements like markers, geodetic networks, bar scales, routes, orthodrome
+pieces, and more are part of the package.
+
+
+## Contents of the package
+
+- `README.md` this file
+- `CHANGES.md` log of changes (history)
+- `mercatormap.sty` LaTeX package file (style file)
+- `mercatorsupplier.def` LaTeX package file (include file for style)
+- `mercatorpy.def` LaTeX package file (Python generator)
+- `mercatormap.pdf` Documentation
+- `mercatormap.tex` Source code of the documentation (main file)
+- `*.doc.*` Source code of the documentation (include files)
+- `mercatormap-example.tex` Source code of an example
+- `mercatormap.bib` Bibliography of the documentation
+
+
+## Installation
+
+Copy the contents of the `mercatormap.tds.zip` from CTAN to your local TeX file tree.
+
+Alternatively, put the files to their respective locations within the TeX installation:
+- `mercatormap.sty` -> /tex/latex/mercatormap
+- `mercatorpy.def` -> /tex/latex/mercatormap
+- `mercatorsupplier.def` -> /tex/latex/mercatormap
+- all other files -> /doc/latex/mercatormap
diff --git a/macros/latex/contrib/mercatormap/mercatormap-example.tex b/macros/latex/contrib/mercatormap/mercatormap-example.tex
index 0951bf14d1..333a249590 100644
--- a/macros/latex/contrib/mercatormap/mercatormap-example.tex
+++ b/macros/latex/contrib/mercatormap/mercatormap-example.tex
@@ -1,11 +1,11 @@
% \LaTeX-Main\
% !TeX encoding=UTF-8
%%
-%% The LaTeX package mercatormap - version 1.02 (2020/08/06)
+%% The LaTeX package mercatormap - version 1.2.0 (2024/08/05)
%% mercatormap-example.tex: Example document with a map
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2020-2024 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
diff --git a/macros/latex/contrib/mercatormap/mercatormap.bib b/macros/latex/contrib/mercatormap/mercatormap.bib
index ef2e9b6213..36a3e976ec 100644
--- a/macros/latex/contrib/mercatormap/mercatormap.bib
+++ b/macros/latex/contrib/mercatormap/mercatormap.bib
@@ -1,4 +1,5 @@
% Encoding: UTF-8
+
% include file of mercatormap.tex (manual of the LaTeX package mercatormap)
@Report{Sturm:2020,
@@ -14,35 +15,27 @@
}
-@manual{package:tikz,
- author = {Till Tantau},
- title = {The TikZ and PGF Packages},
- subtitle = {Manual for version 3.1.5b},
- url = {http://mirrors.ctan.org/graphics/pgf/base/doc/pgfmanual.pdf},
- date = {2020-01-08},
+@Manual{package:tikz,
+ author = {Till Tantau},
+ date = {2023-01-15},
+ title = {The TikZ and PGF Packages},
+ subtitle = {Manual for version 3.1.10},
+ url = {https://mirrors.ctan.org/graphics/pgf/base/doc/pgfmanual.pdf},
}
-@manual{package:xparse,
- author = {{The \LaTeX3 Project}},
- title = {The xparse package},
- subtitle = {Document command parser},
- url = {http://mirrors.ctan.org/macros/latex/contrib/l3packages/xparse.pdf},
- date = {2020-03-06},
+@Manual{l3kernel:interfaces,
+ author = {{The \LaTeX3 Project}},
+ date = {2024-05-27},
+ title = {The \LaTeX3 Interfaces},
}
-@manual{package:siunitx,
- author = {Joseph Wright},
- title = {siunitx -- A comprehensive (SI) units package},
- url = {http://mirrors.ctan.org/macros/latex/contrib/siunitx/siunitx.pdf},
- date = {2020-02-25},
+@Manual{package:siunitx,
+ author = {Joseph Wright},
+ date = {2024-06-24},
+ title = {siunitx -- A comprehensive (SI) units package},
+ url = {https://mirrors.ctan.org/macros/latex/contrib/siunitx/siunitx.pdf},
}
-
-@manual{package:expl3,
- author = {{The \LaTeX3 Project}},
- title = {The expl3 package and \LaTeX3 programming},
- url = {http://mirrors.ctan.org/macros/latex/contrib/l3kernel/expl3.pdf},
- date = {2020-04-06},
-}
+@Comment{jabref-meta: databaseType:biblatex;}
diff --git a/macros/latex/contrib/mercatormap/mercatormap.doc.animations.tex b/macros/latex/contrib/mercatormap/mercatormap.doc.animations.tex
new file mode 100644
index 0000000000..022b856a61
--- /dev/null
+++ b/macros/latex/contrib/mercatormap/mercatormap.doc.animations.tex
@@ -0,0 +1,538 @@
+% !TeX root = mercatormap.tex
+% !TeX encoding=UTF-8
+% !TeX spellcheck=en_US
+% include file of mercatormap.tex (manual of the LaTeX package mercatormap)
+\clearpage
+\section{Animations}\label{sec:animations}%
+
+An animation in the context of map drawing is considered to be a direct movement
+from a starting position to a final position with possible adaption of
+scale denominators.
+
+This package does not provide animation production, but allows to create a
+PDF with a sequence of maps (frames) following such an animation path.
+
+
+%-------------------------------------------------------------------------------
+\subsection{Animation Environment}
+
+\begin{docEnvironment}[doc new=2024-07-31]{mrcAnimation}{\marg{options}}
+ According to the given \meta{options}, the environment loops over the
+ \meta{environment content} several times generating \textit{frames}
+ for an external animation program.
+ A detailed description for the \meta{options} is found in \Fullref{ref:animOptions}.
+ \begin{itemize}
+ \item Basically, the position is moved from
+ a given \refKey{mermap/anim/start-position} with time index |0|
+ following an orthodrome
+ to a \refKey{mermap/anim/final-position} with time index |1|.
+ \item
+ This time interval $[0,1]$ is divided into \refKey{mermap/anim/frames}.
+ The current frame number is denoted by \refCom{mrcAnimFrame},
+ the current time is denoted by \refCom{mrcAnimTime}, and
+ the current position is denoted by
+ \refCom{mrcAnimLatitude} and \refCom{mrcAnimLongitude},
+ alternatively by the named positon \docValue{AnimNP}.
+ \item
+ During movement, a time dependent sequence of \refKey{mermap/anim/scale-denominators}
+ defines the current scale denominator \refCom{mrcAnimScaleDenom}.
+ \item
+ The frames may have an equal time distance or have different time
+ distances using a \refKey{mermap/anim/timewarp}. This could be used
+ to slow down movement near ground and to speed up with more height.
+ \end{itemize}
+ The generated sequence of frames is applicable for
+ \begin{itemize}
+ \item Movement along an orthodrome from starting to final position with an unchanged
+ common scale denominator.
+ \item Zoom in or out on a fixed position.
+ \item Combination of both animations.
+ \item Animated orthodrome drawing on a static map.
+ \end{itemize}
+ For more complex animations, several \refEnv{mrcAnimation} environments may be
+ used consecutively.
+\end{docEnvironment}
+
+\clearpage
+\begin{dispExample*}{breakable}
+ \mrcNPdef{heathrow}{51.4678}{-0.4548}
+ \mrcNPdef{fiumicino}{41.8151}{12.2508}
+
+ \begin{tcbraster}[raster height=22cm,raster columns=4,raster rows=7,
+ tile,size=minimal,boxsep=1pt,colback=black!20 ]
+ \begin{mrcAnimation}
+ {
+ named-start-position = heathrow,
+ named-final-position = fiumicino,
+ frames = 36,
+ scale-denominators = 0/1000000 - 0.3/8000000 - 0.7/8000000 - 1/1000000,
+ timewarp-slow-start-final = 1.5,
+ }
+ \begin{tcolorbox}
+ \begin{tikzpicture}
+ \mermapset
+ {
+ named flex scale = \mrcAnimScaleDenom:AnimNP,
+ }
+ \mrcmap
+ [
+ type = reference,
+ named position = AnimNP,
+ source = topplusopen web,
+ tex width = \tcbtextwidth,
+ tex height = \tcbtextheight
+ ]{london-roma-\mrcAnimFrame}
+ \mrcdrawmap
+ \node[above left,font=\fontsize{3.5pt}{3.5pt}\sffamily]
+ at (mrcmap.south east) {\mrcmapattribution};
+ \mrcclipmap
+ \end{tikzpicture}
+ \end{tcolorbox}
+ \end{mrcAnimation}
+ \end{tcbraster}
+\end{dispExample*}
+
+
+
+\clearpage
+\begin{dispExample*}{breakable}
+ % \usepackage{fontawesome5}
+ \mrcNPdef{heathrow}{51.4678}{-0.4548}
+ \mrcNPdef{lax}{33.9421}{-118.4088}
+ \mrcNPdef{reykjavik}{64.1289}{-21.9369}
+
+ \begin{tcbraster}[raster height=22cm,raster columns=2,raster rows=4,
+ tile,size=minimal,boxsep=1pt,colback=black!20 ]
+ \begin{mrcAnimation}
+ {
+ named-start-position = heathrow,
+ named-final-position = lax,
+ frames = 8,
+ }
+ \begin{tcolorbox}
+ \begin{tikzpicture}
+ \mrcmap
+ [
+ type = areafit,
+ area = {heathrow,lax,reykjavik},
+ source = topplusopen web,
+ tex width = \tcbtextwidth,
+ tex height = \tcbtextheight,
+ flex area fit = 8mm,
+ ]{london-lax-\mrcAnimFrame}
+ \mrcdrawmap
+ \node[above left,font=\fontsize{3.5pt}{3.5pt}\sffamily]
+ at (mrcmap.south east) {\mrcmapattribution};
+ \mrcclipmap
+ \mrcNPdraworthodrome[red,very thick]{heathrow}{AnimNP}
+ \node[red!70!black,rotate=\mrcAnimAngle]
+ at (\mrcNPcs{AnimNP}) {\large\faPlane};
+ \end{tikzpicture}
+ \end{tcolorbox}
+ \end{mrcAnimation}
+ \end{tcbraster}
+\end{dispExample*}
+
+
+\clearpage
+%-------------------------------------------------------------------------------
+\subsection{Animation Options}\label{ref:animOptions}
+
+\begin{docMrcKeys}[
+ doc keypath = anim,
+ doc new = 2024-07-31,
+ ]{
+ {
+ doc name = start-position,
+ doc parameter = {=\meta{latitude}/\meta{longitude}},
+ doc description = initially |51.4779/0|
+ },
+ {
+ doc name = named-start-position,
+ doc parameter = {=\meta{name}},
+ }
+ }
+ Starting position of the animation given by
+ \meta{latitude} and \meta{longitude} or by a named position using \meta{name}.
+\end{docMrcKeys}
+
+
+\begin{docMrcKeys}[
+ doc keypath = anim,
+ doc new = 2024-07-31,
+ ]{
+ {
+ doc name = final-position,
+ doc parameter = {=\meta{latitude}/\meta{longitude}},
+ doc description = initially |51.4779/0|
+ },
+ {
+ doc name = named-final-position,
+ doc parameter = {=\meta{name}},
+ }
+ }
+ Final position of the animation given by
+ \meta{latitude} and \meta{longitude} or by a named position using \meta{name}.
+\end{docMrcKeys}
+
+
+\begin{docMrcKeys}[
+ doc keypath = anim,
+ doc new = 2024-07-31,
+ ]{
+ {
+ doc name = position,
+ doc parameter = {=\meta{latitude}/\meta{longitude}},
+ doc description = initially |51.4779/0|
+ },
+ {
+ doc name = named-position,
+ doc parameter = {=\meta{name}},
+ }
+ }
+ Fixed position of the animation given by
+ \meta{latitude} and \meta{longitude} or by a named position using \meta{name}.
+ This sets \refKey{mermap/anim/start-position} and
+ \refKey{mermap/anim/final-position} to the identical value.
+\end{docMrcKeys}
+
+
+
+\begin{docMrcKeys}[
+ doc keypath = anim,
+ doc new = 2024-07-31,
+ ]{
+ {
+ doc name = frames,
+ doc parameter = {=\meta{frame number}},
+ doc description = initially |20|
+ },
+ }
+ Integer \meta{frame number} for the animation, at least |2|. For maps made with tiles,
+ even a large \meta{frame number} typically results in limited downloads,
+ because the tiles a reused as far as possible. For WMS maps, every frame
+ could give another download!
+\end{docMrcKeys}
+
+
+\begin{docMrcKeys}[
+ doc keypath = anim,
+ doc new = 2024-07-31,
+ doc parameter = {\colOpt{=true\textbar false}},
+ doc description = {default |true|, initially |false|},
+ ]{
+ {
+ doc name = drop-first-frame,
+ },
+ {
+ doc name = drop-last-frame,
+ },
+ }
+ If several \refEnv{mrcAnimation} environments are used consecutively,
+ the end frame of one animation is identical to the start frame of the
+ next animation. These options allow to remove one superfluous connecting frame.
+\end{docMrcKeys}
+
+
+\begin{docMrcKeys}[
+ doc keypath = anim,
+ doc new = 2024-07-31,
+ ]{
+ {
+ doc name = drop-no-frame,
+ doc description = {no value, initially set},
+ },
+ }
+ Reset to drop no frames.
+\end{docMrcKeys}
+
+
+\begin{docMrcKeys}[
+ doc keypath = anim,
+ doc new = 2024-07-31,
+ ]{
+ {
+ doc name = scale-denominators,
+ doc parameter = {=\marg{time and scale sequence}},
+ doc description = {initially |0/25000-1/25000|},
+ },
+ }
+ The \meta{time and scale sequence} has to obey the following pattern:
+ \par
+ \meta{time$_1$}|/|\meta{scale$_1$} |-|
+ \meta{time$_2$}|/|\meta{scale$_2$} |-| $\ldots$ |-|
+ \meta{time$_n$}|/|\meta{scale$_n$}
+ \par
+ The time values have to be taken from the interval $[0,1]$ and have to be
+ strictly monotonically increasing, i.e.
+ \par
+ $0\le$ \meta{time$_1$} $<$
+ \meta{time$_2$} $<$ $\ldots$ $<$
+ \meta{time$_n$} $\le 1$
+ \par
+ If not given, time and scale for time $0$ and $1$ are automatically added
+ as constant continuation.\par
+ Depending on the current time value \refCom{mrcAnimTime}, the current
+ scale denominator \refCom{mrcAnimScaleDenom} is interpolated from this
+ sequence using a logarithmic approach.
+\end{docMrcKeys}
+
+
+\begin{docMrcKeys}[
+ doc keypath = anim,
+ doc new = 2024-07-31,
+ ]{
+ {
+ doc name = common-scale-denominator,
+ doc parameter = {=\marg{scale denominator}},
+ doc description = {initially |25000|},
+ },
+ }
+ This is a shortcut for\par
+ \refKey{mermap/anim/scale-denominators} |=|\\
+ \hspace*{5mm} |0/|\marg{scale denominator} |- 1/|\marg{scale denominator}
+ \par
+ Thereby, a fixed \marg{scale denominator} is set for the animation.
+\end{docMrcKeys}
+
+
+\clearpage
+\begin{docMrcKeys}[
+ doc keypath = anim,
+ doc new = 2024-07-31,
+ ]{
+ {
+ doc name = timewarp,
+ doc parameter = {=\meta{macro}},
+ doc description = initially \texttt{\textbackslash mrcTimewarpIdentity}
+ },
+ }
+ \meta{macro} has to be a fully expandable \LaTeX\ macro with one parameter.
+ The expansion has to be a valid |expl3| \meta{floating point expression}
+ denoting a strictly monotonically increasing function mapping from
+ the interval \mbox{$[0,1]$} into \mbox{$[0,1]$} again.
+ This timewarp may slow down and accelerate time over the span from $0$ to $1$.
+\end{docMrcKeys}
+
+
+\begin{docCommands}[
+ doc new = 2024-07-31,
+ ]{
+ {
+ doc name = mrcTimewarpIdentity,
+ doc parameter = {=\marg{time}},
+ },
+ }
+ Identity function from \mbox{$[0,1]$} into \mbox{$[0,1]$}.
+\end{docCommands}
+
+
+\begin{docMrcKeys}[
+ doc keypath = anim,
+ doc new = 2024-07-31,
+ ]{
+ {
+ doc name = timewarp-identity,
+ doc description = {no value, initially set}
+ },
+ }
+ Sets \refKey{mermap/anim/timewarp} to \refCom{mrcTimewarpIdentity}.
+ This means that time flows constantly.
+\end{docMrcKeys}
+
+
+\begin{docCommands}[
+ doc new = 2024-07-31,
+ ]{
+ {
+ doc name = mrcTimewarpSlowStart,
+ doc parameter = {=\marg{exponent}\marg{time}},
+ doc description = {default |2|}
+ },
+ }
+ Function term $t^{\text{\meta{exponent}}}$
+\end{docCommands}
+
+
+\begin{docMrcKeys}[
+ doc keypath = anim,
+ doc new = 2024-07-31,
+ ]{
+ {
+ doc name = timewarp-slow-start,
+ doc parameter = \colOpt{=\meta{exponent}},
+ doc description = {default |2|}
+ },
+ }
+ Sets \refKey{mermap/anim/timewarp} to \refCom{mrcTimewarpSlowStart}\marg{exponent}.
+ \par
+ If $\text{\meta{exponent}}>1$ is used, time flows slower at the begin of the
+ interval \mbox{$[0,1]$}. This can be used, if a low scale denominator is
+ present at begin of a movement and is becoming larger later. Here, for smoothness,
+ you may want this to have slower speed near ground and larger speed later.
+\end{docMrcKeys}
+
+
+\begin{docCommands}[
+ doc new = 2024-07-31,
+ ]{
+ {
+ doc name = mrcTimewarpSlowFinal,
+ doc parameter = {=\marg{exponent}\marg{time}},
+ doc description = {default |2|}
+ },
+ }
+ Function term $1 - (1-t)^{\text{\meta{exponent}}}$
+\end{docCommands}
+
+
+\begin{docMrcKeys}[
+ doc keypath = anim,
+ doc new = 2024-07-31,
+ ]{
+ {
+ doc name = timewarp-slow-final,
+ doc parameter = \colOpt{=\meta{exponent}},
+ doc description = {default |2|}
+ },
+ }
+ Sets \refKey{mermap/anim/timewarp} to \refCom{mrcTimewarpSlowFinal}\marg{exponent}.
+ \par
+ If $\text{\meta{exponent}}>1$ is used, time flows slower at the end of the
+ interval \mbox{$[0,1]$}. This can be used, if a large scale denominator is
+ present at begin of a movement and is becoming lower later. Here, for smoothness,
+ you may want this to have slower speed near ground at the end.
+\end{docMrcKeys}
+
+
+\begin{docCommands}[
+ doc new = 2024-07-31,
+ ]{
+ {
+ doc name = mrcTimewarpSlowStartFinal,
+ doc parameter = {=\marg{exponent}\marg{time}},
+ doc description = {default |2|}
+ },
+ }
+ Combination of \refCom{mrcTimewarpSlowStart} and \refCom{mrcTimewarpSlowFinal}
+ using case discrimination for the first and the second half of the intervall.
+\end{docCommands}
+
+
+\begin{docMrcKeys}[
+ doc keypath = anim,
+ doc new = 2024-07-31,
+ ]{
+ {
+ doc name = timewarp-slow-start-final,
+ doc parameter = \colOpt{=\meta{exponent}},
+ doc description = {default |2|}
+ },
+ }
+ Sets \refKey{mermap/anim/timewarp} to \refCom{mrcTimewarpSlowStartFinal}\marg{exponent}.
+ \par
+ If $\text{\meta{exponent}}>1$ is used, time flows slower at the begin and at the end of the
+ interval \mbox{$[0,1]$}. This can be used, if a low scale denominator is
+ present at begin of a movement, becomes larger in the middle, and finally
+ is becoming lower later. Here, for smoothness,
+ you may want this to have slower speed near ground at the begin and the end.
+\end{docMrcKeys}
+
+
+\clearpage
+%-------------------------------------------------------------------------------
+\subsection{Macros inside the Animation Environment}\label{ref:animMacros}
+
+\begin{docCommands}[
+ doc new = 2024-07-31,
+ ]{
+ {
+ doc name = mrcAnimFrame,
+ },
+ {
+ doc name = l_mermap_anim_frame_int,
+ },
+ }
+ The current frame number ranging from $1$ to \refKey{mermap/anim/frames}.
+\end{docCommands}
+
+
+\begin{docCommands}[
+ doc new = 2024-07-31,
+ ]{
+ {
+ doc name = mrcAnimTime,
+ },
+ {
+ doc name = l_mermap_anim_time_fp,
+ },
+ }
+ The current time ranging from $0$ to $1$.
+\end{docCommands}
+
+
+\begin{docCommands}[
+ doc new = 2024-07-31,
+ ]{
+ {
+ doc name = mrcAnimScaleDenom,
+ },
+ {
+ doc name = l_mermap_anim_scaledenom_fp,
+ },
+ }
+ The current scale denominator according to \refKey{mermap/anim/scale-denominators}.
+\end{docCommands}
+
+
+\begin{docCommands}[
+ doc new = 2024-07-31,
+ ]{
+ {
+ doc name = mrcAnimLatitude,
+ },
+ {
+ doc name = l_mermap_anim_lat_fp,
+ },
+ }
+ The latitude of the current position.
+\end{docCommands}
+
+
+\begin{docCommands}[
+ doc new = 2024-07-31,
+ ]{
+ {
+ doc name = mrcAnimLongitude,
+ },
+ {
+ doc name = l_mermap_anim_lon_fp,
+ },
+ }
+ The longitude of the current position.
+\end{docCommands}
+
+
+\begin{docCommands}[
+ doc new = 2024-08-05,
+ ]{
+ {
+ doc name = mrcAnimAngle,
+ },
+ {
+ doc name = l_mermap_anim_angle_fp,
+ },
+ }
+ Current angle between the tangent vector to the orthodrome and
+ the current parallel circle.
+\end{docCommands}
+
+
+
+
+\docValue{AnimNP}\tcbdocmarginnote{\tcbdocnew{2024-07-31}}:
+ The current named position.
+
+
+
+
diff --git a/macros/latex/contrib/mercatormap/mercatormap.doc.definition.tex b/macros/latex/contrib/mercatormap/mercatormap.doc.definition.tex
index ad285fb7c9..01667cd1d3 100644
--- a/macros/latex/contrib/mercatormap/mercatormap.doc.definition.tex
+++ b/macros/latex/contrib/mercatormap/mercatormap.doc.definition.tex
@@ -23,14 +23,14 @@
\subsection{Option Setting}
\begin{docCommand}{mermapset}{\marg{options}}
Sets \meta{options} for all following maps inside the current \TeX\ group.
- All options share the common prefix |/mermap/|, e.g. for setting
- \refKey{/mermap/vicinity} use
+ All options share the common prefix |mermap/|, e.g. for setting
+ \refKey{mermap/vicinity} use
\begin{dispListing}
\mermapset{vicinity=3cm}
\end{dispListing}
Also see \refCom{mrcdefinemap}, \refCom{mermapsetsupply},
and \refCom{mermapsetmarker}.\par
- Note that the options by \refCom{mermapset} are |expl3| \cite{package:expl3}
+ Note that the options by \refCom{mermapset} are |expl3| \cite{l3kernel:interfaces}
keys while \tikzname\ \cite{package:tikz} uses its own key management.
\end{docCommand}
@@ -45,7 +45,7 @@ See \Fullref{sec:automated_map} for script aided map definitions.
\begin{docCommand}{mrcdefinemap}{\marg{options}}
Establishes a map inside a |tikzpicture| environment following
and applying the given \meta{options}.
- All options share the common prefix |/mermap/mapdef/|.
+ All options share the common prefix |mermap/mapdef/|.
After \refCom{mrcdefinemap} is applied, map drawing and map coordinates
can be used.
\begin{itemize}
@@ -60,25 +60,25 @@ See \Fullref{sec:automated_map} for script aided map definitions.
\begin{docMrcKey}[mapdef]{north}{=\meta{map north latitude}}{no default, initially 50}
Northern latitude degree of the visible map, possibly negative for the southern hemisphere,
- lower than $90$ but always larger than \refKey{/mermap/mapdef/south}.
+ lower than $90$ but always larger than \refKey{mermap/mapdef/south}.
It is accessible as \docAuxCommand{mrcmapnorth} (use read-only).
\end{docMrcKey}
\begin{docMrcKey}[mapdef]{south}{=\meta{map south latitude}}{no default, initially 48}
Southern latitude degree of the visible map, possibly negative for the southern hemisphere,
- larger than $-90$ but always lower than \refKey{/mermap/mapdef/north}.
+ larger than $-90$ but always lower than \refKey{mermap/mapdef/north}.
It is accessible as \docAuxCommand{mrcmapsouth} (use read-only).
\end{docMrcKey}
\begin{docMrcKey}[mapdef]{west}{=\meta{map west longitude}}{no default, initially 11}
Western longitude degree of the visible map, possibly negative for the western hemisphere,
- possibly shifted periodically, but always lower than \refKey{/mermap/mapdef/east}.
+ possibly shifted periodically, but always lower than \refKey{mermap/mapdef/east}.
It is accessible as \docAuxCommand{mrcmapwest} (use read-only).
\end{docMrcKey}
\begin{docMrcKey}[mapdef]{east}{=\meta{map east longitude}}{no default, initially 13}
Eastern longitude degree of the visible map, possibly negative for the western hemisphere,
- possibly shifted periodically, but always larger than \refKey{/mermap/mapdef/west}.
+ possibly shifted periodically, but always larger than \refKey{mermap/mapdef/west}.
It is accessible as \docAuxCommand{mrcmapeast} (use read-only).
\end{docMrcKey}
@@ -149,7 +149,7 @@ information.
\begin{docMrcKey}[mapdef]{attribution print}{=\meta{attribution text}}{no default, initially empty}
Attribution text for the map source.
- In contrast to \refKey{/mermap/mapdef/attribution} it is intended for media
+ In contrast to \refKey{mermap/mapdef/attribution} it is intended for media
that does not support hyperlinks like printed posters, books, etc.
It is accessible as \docAuxCommand{mrcmapattributionprint} (use read-only).
\end{docMrcKey}
@@ -166,7 +166,7 @@ information.
\end{docMrcKey}
\begin{docMrcKey}[mapdef]{tile size}{=\meta{length}}{no default, initially |32.512mm|}
- Typically set computationally. It is identical to \refKey{/mermap/tile size}
+ Typically set computationally. It is identical to \refKey{mermap/tile size}
which is the recommended user option for manual setup.
\end{docMrcKey}
@@ -204,7 +204,7 @@ The border of the visible map is denoted by a \tikzname\ node \docNode{mrcmap}.
\medskip
The |mrc cs| coordinate system defines a map point by
-\refKey{/mermap/cs/latitude} and \refKey{/mermap/cs/longitude}
+\refKey{mermap/cs/latitude} and \refKey{mermap/cs/longitude}
\begin{docMrcKey}[cs]{latitude}{=\meta{latitude}}{no default}
Sets the \meta{latitude} of a map point.
@@ -220,7 +220,7 @@ The |mrc cs| coordinate system defines a map point by
\medskip
A map point can also be defined by shorter variants
-\refKey{/mermap/cs/lat} and \refKey{/mermap/cs/lon}
+\refKey{mermap/cs/lat} and \refKey{mermap/cs/lon}
\begin{docMrcKey}[cs]{lat}{=\meta{latitude}}{no default}
Sets the \meta{latitude} of a map point.
@@ -298,9 +298,10 @@ A map point can be defined even quicker by
\end{docCommand}
-\begin{docCommand}{mrcNPlat}{\marg{name}}
+\begin{docCommand}[doc updated=2024-08-02]{mrcNPlat}{\marg{name}}
Inserts the \emph{latitude} of a \emph{named position} with given \meta{name}.
\refCom{mrcNPlat} is expandable and may be used in floating point expressions.
+ If the \meta{name} does not exist, the macro expands to |0|.
\begin{dispExample}
\mrcNPdef{nuremberg}{49.45522}{11.07631}
Latitude: \mrcNPlat{nuremberg}\\
@@ -309,9 +310,16 @@ A map point can be defined even quicker by
\end{docCommand}
-\begin{docCommand}{mrcNPlon}{\marg{name}}
+\begin{docCommand}[doc updated=2024-08-02]{mrcNPlon}{\marg{name}}
Inserts the \emph{longitude} of a \emph{named position} with given \meta{name}.
\refCom{mrcNPlon} is expandable and may be used in floating point expressions.
+ If the \meta{name} does not exist, the macro expands to |0|.
+\end{docCommand}
+
+
+\begin{docCommand}[doc new=2024-08-02]{ifmrcNPexists}{\marg{name}\marg{true}\marg{false}}
+ If the given \emph{named position} with given \meta{name} exists, the \meta{true} code is executed, otherwise
+ the \meta{false} code.
\end{docCommand}
@@ -356,7 +364,7 @@ Very similar to \refCom{ifmrcinmap} is \refCom{ifmrcinvicinity}.
\begin{docCommand}{ifmrcinvicinity}{\marg{latitude}\marg{longitude}\marg{true}\marg{false}}
If the given \meta{latitude} and \meta{longitude} describes a point
- inside a vicinity of the visible map, i.e. the map \emph{plus} a margin of \refKey{/mermap/vicinity},
+ inside a vicinity of the visible map, i.e. the map \emph{plus} a margin of \refKey{mermap/vicinity},
the \meta{true} code is executed, otherwise
the \meta{false} code.\par
Inside the \meta{true} code a \tikzname\ coordinate \docNode{mrcpos}
diff --git a/macros/latex/contrib/mercatormap/mercatormap.doc.drawing.tex b/macros/latex/contrib/mercatormap/mercatormap.doc.drawing.tex
index dd86fcedbd..0b484da09b 100644
--- a/macros/latex/contrib/mercatormap/mercatormap.doc.drawing.tex
+++ b/macros/latex/contrib/mercatormap/mercatormap.doc.drawing.tex
@@ -11,7 +11,7 @@
\begin{docCommand}{mrcdrawmap}{\oarg{options}}
Inside a |tikzpicture| environment, \refCom{mrcdrawmap} draws a map
prepared by \refCom{mrcdefinemap}, \refCom{mrcapplymap}, or \refCom{mrcmap}.
- All \meta{options} share the common prefix |/mermap/|.
+ All \meta{options} share the common prefix |mermap/|.
This is the principal macro to draw a prepared map respectively
the background of the map. The background consists of downloaded map tiles
or just a color rectangle.
@@ -19,10 +19,10 @@
\begin{docMrcKey}{draw}{=\meta{tile draw}}{no default, initially |auto|}
\begin{itemize}
- \item\docValue{auto}: Draws the map according to \refKey{/mermap/mapdef/resource},
+ \item\docValue{auto}: Draws the map according to \refKey{mermap/mapdef/resource},
i.e. downloaded maps or tiles are used, if available.
\item\docValue{path}: Draws the map according to the style given by
- \refKey{/mermap/map path}. Existing map tiles or merged maps are ignored
+ \refKey{mermap/map path}. Existing map tiles or merged maps are ignored
\item\docValue{tiles}: Draws the map with downloaded map tiles, if
available.
\item\docValue{mergedmap}: Draws the map with a merged picture, if
@@ -75,24 +75,24 @@
Typically, the pixel size of a map tile is fixed and a map tile is a
pixel graphics file. The actual size of such an included picture inside
the document is freely selectable. Note that a very small
-\refKey{/mermap/tile size} results in very small map lettering,
-while a very large \refKey{/mermap/tile size} results results in
+\refKey{mermap/tile size} results in very small map lettering,
+while a very large \refKey{mermap/tile size} results results in
very blurred images.
The general idea of a \emph{flexible} tile size is to specify an aspired
-tile size called \refKey{/mermap/flex tile size} and to give \LaTeX\
-the freedom to select \refKey{/mermap/tile size} in \emph{about the same size}
-as \refKey{/mermap/flex tile size}.
+tile size called \refKey{mermap/flex tile size} and to give \LaTeX\
+the freedom to select \refKey{mermap/tile size} in \emph{about the same size}
+as \refKey{mermap/flex tile size}.
This freedom is used to achieve a \emph{pseudo zoom} called
-\refKey{/mermap/flex zoom} which is a nearly arbitrary rational number instead
-of \refKey{/mermap/supply/zoom} which is a natural number.
+\refKey{mermap/flex zoom} which is a nearly arbitrary rational number instead
+of \refKey{mermap/supply/zoom} which is a natural number.
This \emph{pseudo zoom} is applied by several options which share \emph{flex}
in their names, e.g.
-\refKey{/mermap/flex scale}, \refKey{/mermap/named flex scale},
-\refKey{/mermap/supply/flex reference scale},
-\refKey{/mermap/supply/flex area scale},
-\refKey{/mermap/supply/flex area fit}.
+\refKey{mermap/flex scale}, \refKey{mermap/named flex scale},
+\refKey{mermap/supply/flex reference scale},
+\refKey{mermap/supply/flex area scale},
+\refKey{mermap/supply/flex area fit}.
@@ -101,30 +101,30 @@ in their names, e.g.
For standard tiles with 256 times 256 pixels a tile size of
\SI{32.512}{mm} = \SI{1.28}{in} results in an approximate
\SI{200}{dpi} output for the document.
- For a |beamer| document, consider to use a \refKey{/mermap/tile size} of
+ For a |beamer| document, consider to use a \refKey{mermap/tile size} of
\SI{21.333333}{mm} to get approximate 1:1 pixel input and output (depending on |beamer| settings
- and used hardware). Also see \refKey{/mermap/mapdef/tile size}.
+ and used hardware). Also see \refKey{mermap/mapdef/tile size}.
\end{docMrcKey}
\begin{docMrcKey}{flex tile size}{=\meta{length}}{no default, initially |32.512mm|}
Aspired width and height of a tile picture are set to \meta{length}.
- This value is used while applying \refKey{/mermap/flex zoom}.
+ This value is used while applying \refKey{mermap/flex zoom}.
\end{docMrcKey}
\begin{docMrcKey}{flex zoom}{=\meta{pseudo zoom}}{style, no default}
- This style sets \refKey{/mermap/supply/zoom} and \refKey{/mermap/tile size} in combination.
+ This style sets \refKey{mermap/supply/zoom} and \refKey{mermap/tile size} in combination.
\begin{itemize}
\item
If \meta{pseudo zoom} is a natural number,
- \refKey{/mermap/supply/zoom} is set to \meta{pseudo zoom} and
- \refKey{/mermap/tile size} is set to \refKey{/mermap/flex tile size}.
- \item Otherwise, \refKey{/mermap/supply/zoom} is set to the natural number
- closest to \meta{pseudo zoom} and \refKey{/mermap/tile size} is such
+ \refKey{mermap/supply/zoom} is set to \meta{pseudo zoom} and
+ \refKey{mermap/tile size} is set to \refKey{mermap/flex tile size}.
+ \item Otherwise, \refKey{mermap/supply/zoom} is set to the natural number
+ closest to \meta{pseudo zoom} and \refKey{mermap/tile size} is such
enlarged or reduced that the \meta{pseudo zoom} value is simulated,
i.e. the \emph{impression} of a rational zoom factor is given.
\end{itemize}
- Note that \refKey{/mermap/flex zoom} has to be used \emph{before}
+ Note that \refKey{mermap/flex zoom} has to be used \emph{before}
\refCom{mrcsupplymap} or \refCom{mrcmap}, because the zoom setup is
adapted.
\end{docMrcKey}
@@ -133,12 +133,12 @@ in their names, e.g.
\clearpage
\begin{docMrcKey}{flex scale}{=\meta{scale denominator}:\meta{latitude}}{style, no default}
For different latitude scopes, an identical zoom factor produces maps of
- different scale. With \refKey{/mermap/flex scale}, a \refKey{/mermap/flex zoom}
+ different scale. With \refKey{mermap/flex scale}, a \refKey{mermap/flex zoom}
is computed to achieve the given \meta{scale denominator} at a given \meta{latitude}.
Note that this only applies to the center of a map. If the produced
map is not centered at \meta{latitude}, the produced scale may
differ from the intended one.
- Also see \refKey{/mermap/supply/flex reference scale}.
+ Also see \refKey{mermap/supply/flex reference scale}.
\tikzsetnextfilename{drawing_flex_scale}%
\begin{dispExample}
@@ -162,7 +162,7 @@ in their names, e.g.
\begin{docMrcKey}{named flex scale}{=\meta{scale denominator}:\meta{name}}{style, no default}
- Identical to \refKey{/mermap/flex scale}, but used the \emph{named position}
+ Identical to \refKey{mermap/flex scale}, but used the \emph{named position}
\meta{name} to provide a \emph{latitude}, see \Fullref{sec:names_positions}.
\begin{dispListing}
\mrcNPdef{munich}{48.137222}{11.575556}
@@ -179,12 +179,12 @@ in their names, e.g.
\begin{docCommand}{mrcdrawnetwork}{\oarg{options}}
Draws a geodetic network with meridians and parallels.
- All \meta{options} share the common prefix |/mermap/|.
+ All \meta{options} share the common prefix |mermap/|.
The displayed lines are selected automatically according to some tuning
parameters.
- The map is sliced in \emph{about} maximal \refKey{/mermap/network pieces} in each
+ The map is sliced in \emph{about} maximal \refKey{mermap/network pieces} in each
direction. Meridians and parallels share a minimal distance of
- \emph{about} \refKey{/mermap/network distance}. The algorithm is
+ \emph{about} \refKey{mermap/network distance}. The algorithm is
allowed to violate these conditions \emph{somewhat}.
Note that oversized maps are not supported, i.e. maps which are wider
@@ -213,7 +213,7 @@ in their names, e.g.
\begin{docMrcKey}{network pieces}{=\meta{number}}{no default, initially |8|}
The map is sliced in \emph{about} maximal \meta{number} pieces in each
direction. \meta{number} may be exceeded \emph{somewhat}.
- It is underrun to comply with \refKey{/mermap/network distance}.
+ It is underrun to comply with \refKey{mermap/network distance}.
\end{docMrcKey}
@@ -221,7 +221,7 @@ in their names, e.g.
Meridians and parallels share a minimal distance of
\emph{about} \meta{mesh width}.
\meta{mesh width} may be underrun \emph{somewhat}.
- It is exceeded to comply with \refKey{/mermap/network pieces}.
+ It is exceeded to comply with \refKey{mermap/network pieces}.
For parallels on small scale maps, it refers to an averaged mesh width.
\end{docMrcKey}
diff --git a/macros/latex/contrib/mercatormap/mercatormap.doc.examples.tex b/macros/latex/contrib/mercatormap/mercatormap.doc.examples.tex
index 7eb5b5f86e..11c3068f31 100644
--- a/macros/latex/contrib/mercatormap/mercatormap.doc.examples.tex
+++ b/macros/latex/contrib/mercatormap/mercatormap.doc.examples.tex
@@ -14,13 +14,13 @@ Note to do all preparations documented in \Fullref{sec:python}.
%-------------------------------------------------------------------------------
\subsection{Reference Position}
-With \refKey{/mermap/supply/type}|=|\docValue{reference} a map with a
+With \refKey{mermap/supply/type}|=|\docValue{reference} a map with a
\emph{reference position} is constructed. Here, Munich is taken as
reference position and center of the map. Since the position is used
more than once, it is stored with \refCom{mrcNPdef} for further reference.
-With \refKey{/mermap/supply/flex reference scale} the scale
+With \refKey{mermap/supply/flex reference scale} the scale
is set to 1:6\,000\,000. For the background map tiles, a
-\refKey{/mermap/supply/source} is selected for download.
+\refKey{mermap/supply/source} is selected for download.
This setup is done by \refCom{mrcmap} while \refCom{mrcdrawmap} draws
the downloaded map tiles.
@@ -84,10 +84,10 @@ the downloaded map tiles.
%-------------------------------------------------------------------------------
\subsection{Fitting Area}
-With \refKey{/mermap/supply/type}|=|\docValue{areafit} a map is constructed
+With \refKey{mermap/supply/type}|=|\docValue{areafit} a map is constructed
where a given area is fitted in. The following example lists some
-US-American cities and constructs an \refKey{/mermap/supply/area} which
-contains all of them. With \refKey{/mermap/supply/flex area fit}|=15mm| a
+US-American cities and constructs an \refKey{mermap/supply/area} which
+contains all of them. With \refKey{mermap/supply/flex area fit}|=15mm| a
border region is added.
@@ -102,7 +102,7 @@ border region is added.
\mrcNPdef{denver}{39.7372435}{-104.997378}
\mrcmap[type=areafit,
area={honolulu,fairbanks,sandiego,miami,boston,denver},
- source=stamen terrain,
+ source=topplusopen web,
tex width=15cm, tex height=11cm,
flex area fit=15mm,
]{examples_fitting_area}
@@ -122,12 +122,12 @@ border region is added.
%-------------------------------------------------------------------------------
\subsection{Fixed Boundaries}
-With \refKey{/mermap/supply/type}|=|\docValue{boundaries} a map is constructed
+With \refKey{mermap/supply/type}|=|\docValue{boundaries} a map is constructed
with fixed boundaries. In contrast to the other map types, the document
map size cannot be given directly but derives from the map setup. This bears
the risk of too large maps. The following example is a map with exact
boundaries \mrcformlat{-45} to \mrcformlat{-10}
-and \mrcformlon{110} to \mrcformlon{155}. A decent \refKey{/mermap/supply/zoom}
+and \mrcformlon{110} to \mrcformlon{155}. A decent \refKey{mermap/supply/zoom}
is 5 (every zoom step doubles the map size in each direction).
\tikzsetnextfilename{examples_boundaries}%
@@ -160,7 +160,7 @@ is 5 (every zoom step doubles the map size in each direction).
\subsection{Map Without Map Tiles}
There is no coercion to use downloaded map tiles, if they are not needed or
-wanted. With \refKey{/mermap/supply/target}|=none| no map tiles are downloaded.
+wanted. With \refKey{mermap/supply/target}|=none| no map tiles are downloaded.
The following example draws a rough polygon shape of Germany using
\refEnv{mrcroute*}.
@@ -299,7 +299,7 @@ The following example draws a rough polygon shape of Germany using
%-------------------------------------------------------------------------------
\subsection{Alignment of the Reference Position}
-With \refKey{/mermap/supply/align} the reference position can be aligned
+With \refKey{mermap/supply/align} the reference position can be aligned
at different map positions.
\tikzsetnextfilename{examples_alignment}%
@@ -332,13 +332,13 @@ at different map positions.
\subsection{Flexible Zoom}
Map tiles are only provided at fixed zoom levels with natural numbers,
-but the package allows a \refKey{/mermap/flex zoom} with rational numbers.
+but the package allows a \refKey{mermap/flex zoom} with rational numbers.
The flexible zoom is realized by combining a suitable fixed zoom with
an adapted document tile scaling, see \Fullref{sec:flexible_tile_size}.
The following example shows a more or less smooth zoom increase.
The same technique is used by all options starting with |flex|, e.g.
-\refKey{/mermap/supply/flex reference scale}
-or \refKey{/mermap/supply/flex area fit}
+\refKey{mermap/supply/flex reference scale}
+or \refKey{mermap/supply/flex area fit}
as seen in the examples before.
\tikzexternaldisable
diff --git a/macros/latex/contrib/mercatormap/mercatormap.doc.intro.tex b/macros/latex/contrib/mercatormap/mercatormap.doc.intro.tex
index 294f5e278f..29514fb0f0 100644
--- a/macros/latex/contrib/mercatormap/mercatormap.doc.intro.tex
+++ b/macros/latex/contrib/mercatormap/mercatormap.doc.intro.tex
@@ -18,9 +18,7 @@ and the algorithms of this packages, you are invited to read
\enquote{\fullcite{Sturm:2020}}.
With very few exceptions, the package is programmed with the
-|expl3| \cite{package:expl3} programming interface for \LaTeX3
-and loads the packages
-|xparse| \cite{package:xparse} and |siunitx| \cite{package:siunitx}.
+|expl3| programming interface for \LaTeX3 \cite{l3kernel:interfaces}.
\medskip
@@ -103,7 +101,7 @@ This should give a version number starting with 3. Otherwise, try
\begin{dispListing}
python3 --version
\end{dispListing}
-If this is successful, \refKey{/mermap/python} has to be adapted to |python3|
+If this is successful, \refKey{mermap/python} has to be adapted to |python3|
\subsubsection{Python Packages}
The Python packages |Pillow| (\url{https://pypi.org/project/Pillow/})
diff --git a/macros/latex/contrib/mercatormap/mercatormap.doc.limitations.tex b/macros/latex/contrib/mercatormap/mercatormap.doc.limitations.tex
index 0c44427ca5..70a08de273 100644
--- a/macros/latex/contrib/mercatormap/mercatormap.doc.limitations.tex
+++ b/macros/latex/contrib/mercatormap/mercatormap.doc.limitations.tex
@@ -42,8 +42,8 @@
remember that the eastern hemisphere lies \emph{west} and
the western hemisphere lies \emph{east} for your map.
Consider the following example displaying Vladivostok and Anchorage.
- Here, \refKey{/mermap/supply/west} is set to \ang{130}\,E (|130|)
- and \refKey{/mermap/supply/east} is set to \ang{149}\,W (|211| instead of |-149|).
+ Here, \refKey{mermap/supply/west} is set to \ang{130}\,E (|130|)
+ and \refKey{mermap/supply/east} is set to \ang{149}\,W (|211| instead of |-149|).
There is some automatic correction for positions to fit inside the
defined map (see Anchorage in the example below), but
@@ -123,7 +123,7 @@
\tikzsetnextfilename{limit_zoom_scale_1}
\begin{dispExample}
- \mermapsetsupply{source=stamen terrain, type=reference, zoom=12,
+ \mermapsetsupply{source=topplusopen web, type=reference, zoom=12,
tex width=7cm, tex height=5cm}
\begin{tikzpicture}
\mrcmap[latitude=59.91,longitude=10.75]{oslo1} \mrcdrawmap
@@ -133,12 +133,12 @@
\begin{center}\fontsize{7pt}{7pt}\sffamily\mrcmapattribution\end{center}
\end{dispExample}
- Same example again, but with \refKey{/mermap/flex scale} which gives
+ Same example again, but with \refKey{mermap/flex scale} which gives
1:150000 for both cities and comparable maps.
\tikzsetnextfilename{limit_zoom_scale_2}
\begin{dispExample}
- \mermapsetsupply{source=stamen terrain, type=reference}
+ \mermapsetsupply{source=topplusopen web, type=reference}
\begin{tikzpicture}
\mrcmap[latitude=59.91,longitude=10.75, flex reference scale=150000,
tex width=7cm, tex height=5cm]{oslo2} \mrcdrawmap
diff --git a/macros/latex/contrib/mercatormap/mercatormap.doc.maptiles.tex b/macros/latex/contrib/mercatormap/mercatormap.doc.maptiles.tex
index 9786414753..aa306f5962 100644
--- a/macros/latex/contrib/mercatormap/mercatormap.doc.maptiles.tex
+++ b/macros/latex/contrib/mercatormap/mercatormap.doc.maptiles.tex
@@ -73,7 +73,7 @@ accompanying Python script. The technical background is documented in
\cite[Section~5]{Sturm:2020}.
\begin{enumerate}
-\item \refKey{/mermap/supply/type}|=|\docValue{reference}:
+\item \refKey{mermap/supply/type}|=|\docValue{reference}:
\tcbsidebyside[sidebyside adapt=left,blankest,grow to left by=1cm]
{
\tikzexternaldisable
@@ -85,12 +85,12 @@ accompanying Python script. The technical background is documented in
}{
The default method determines the map dimensions from a reference
position and given document map dimensions.
- Also, a zoom level \refKey{/mermap/supply/zoom}
+ Also, a zoom level \refKey{mermap/supply/zoom}
is required which relates to the Web Mercator map tile covering of the Earth.
A higher zoom level gives a growing number of smaller map tiles.
Alternative to the zoom level, a \meta{scale denominator} can be provided
- by \refKey{/mermap/supply/flex area scale}, \refKey{/mermap/flex scale}
- or \refKey{/mermap/supply/flex reference scale} which determines
+ by \refKey{mermap/supply/flex area scale}, \refKey{mermap/flex scale}
+ or \refKey{mermap/supply/flex reference scale} which determines
the zoom level implicitly.
As default, the reference position is the center of the map, but can be
aligned at the map borders. This method is quite safe to use and could
@@ -100,7 +100,7 @@ accompanying Python script. The technical background is documented in
be more tricky.
}
-\item \refKey{/mermap/supply/type}|=|\docValue{areafit}:
+\item \refKey{mermap/supply/type}|=|\docValue{areafit}:
\tcbsidebyside[sidebyside adapt=left,blankest,grow to left by=1cm]
{
\tikzexternaldisable
@@ -114,7 +114,7 @@ accompanying Python script. The technical background is documented in
The map dimensions are determined by an area with
latitude and longitude boundaries which is fitted into given
document map dimensions. The zoom level is computed accordingly
- for a fixed document tile size or by \refKey{/mermap/supply/flex area fit}.
+ for a fixed document tile size or by \refKey{mermap/supply/flex area fit}.
In any case, the map contains the target area plus some protrusion.
This method is also quite safe to use and may be
the preferred one for many applications like showing a map which contains
@@ -123,7 +123,7 @@ accompanying Python script. The technical background is documented in
the third method can be regarded.
}
-\item \refKey{/mermap/supply/type}|=|\docValue{boundaries}:
+\item \refKey{mermap/supply/type}|=|\docValue{boundaries}:
\tcbsidebyside[sidebyside adapt=left,blankest,grow to left by=1cm]
{
\tikzexternaldisable
@@ -134,11 +134,11 @@ accompanying Python script. The technical background is documented in
}{
The most obvious method determines the map dimensions from
latitude and longitude boundaries. For this, a corresponding zoom level
- \refKey{/mermap/supply/zoom}
+ \refKey{mermap/supply/zoom}
is required which relates to the Web Mercator map tile covering of the Earth.
Alternative to the zoom level, a \meta{scale denominator} can be provided
- by \refKey{/mermap/supply/flex area scale}
- or \refKey{/mermap/supply/flex reference scale} which determines
+ by \refKey{mermap/supply/flex area scale}
+ or \refKey{mermap/supply/flex reference scale} which determines
the zoom level implicitly.
Note that a too high zoom level imposes the risk of downloading an unwanted
high quantity of map tiles resulting in a much too large document map.
@@ -156,9 +156,9 @@ accompanying Python script. The technical background is documented in
\begin{docCommand}{mrcsupplymap}{\oarg{options}\marg{definition}}
The \meta{options} provide parameters for the Python~3 script to supply all
materials for a map.
- All options share the common prefix |/mermap/supply/|.\par
+ All options share the common prefix |mermap/supply/|.\par
The map is identified by\\
- \meta{id}=\refKey{/mermap/definition prefix}+\meta{definition}\\
+ \meta{id}=\refKey{mermap/definition prefix}+\meta{definition}\\
for later drawing.
This identifier \meta{id} has to be unique for the document.
It corresponds to generated files \meta{id}|.def|, \meta{id}|.md5|, and
@@ -172,8 +172,8 @@ accompanying Python script. The technical background is documented in
\begin{docCommand}{mermapsetsupply}{\marg{options}}
Sets \meta{options} for all following maps inside the current \TeX\ group.
- All options share the common prefix |/mermap/supply/|, e.g. for setting
- \refKey{/mermap/supply/type} use
+ All options share the common prefix |mermap/supply/|, e.g. for setting
+ \refKey{mermap/supply/type} use
\begin{dispListing}
\mermapsetsupply{type=reference}
\end{dispListing}
@@ -184,7 +184,7 @@ accompanying Python script. The technical background is documented in
\begin{docMrcKey}{definition prefix}{=\meta{definition prefix}}{no default, initially |maps/|}
Prefix for map identifiers and generated map files, see \refCom{mrcsupplymap}
and \refCom{mrcapplymap}.
- Note that \refKey{/mermap/definition prefix} is not to be used inside
+ Note that \refKey{mermap/definition prefix} is not to be used inside
the option list for \refCom{mrcsupplymap}.
\end{docMrcKey}
@@ -193,30 +193,30 @@ accompanying Python script. The technical background is documented in
\begin{itemize}
\item\docValue{reference}: \flqq map with reference position\frqq\\
The map is constructed from a given reference position
- \refKey{/mermap/supply/latitude},\\
- \refKey{/mermap/supply/longitude},\\
- a zoom level \refKey{/mermap/supply/zoom},\\
+ \refKey{mermap/supply/latitude},\\
+ \refKey{mermap/supply/longitude},\\
+ a zoom level \refKey{mermap/supply/zoom},\\
map dimensions\\
- \refKey{/mermap/supply/width},\\
- \refKey{/mermap/supply/height},\\
- and alignment \refKey{/mermap/supply/align}.
+ \refKey{mermap/supply/width},\\
+ \refKey{mermap/supply/height},\\
+ and alignment \refKey{mermap/supply/align}.
\item\docValue{areafit}: \flqq map fitting an area\frqq\\
The map is constructed from a given area boundaries\\
- \refKey{/mermap/supply/west},\\
- \refKey{/mermap/supply/east},\\
- \refKey{/mermap/supply/north},\\
- \refKey{/mermap/supply/south},\\
+ \refKey{mermap/supply/west},\\
+ \refKey{mermap/supply/east},\\
+ \refKey{mermap/supply/north},\\
+ \refKey{mermap/supply/south},\\
map dimensions\\
- \refKey{/mermap/supply/width},\\
- \refKey{/mermap/supply/height},\\
- and alignment \refKey{/mermap/supply/align}.
+ \refKey{mermap/supply/width},\\
+ \refKey{mermap/supply/height},\\
+ and alignment \refKey{mermap/supply/align}.
\item\docValue{boundaries}: \flqq map with boundaries\frqq\\
The map is constructed from given boundaries\\
- \refKey{/mermap/supply/west},\\
- \refKey{/mermap/supply/east},\\
- \refKey{/mermap/supply/north},\\
- \refKey{/mermap/supply/south},\\
- and zoom level \refKey{/mermap/supply/zoom}.
+ \refKey{mermap/supply/west},\\
+ \refKey{mermap/supply/east},\\
+ \refKey{mermap/supply/north},\\
+ \refKey{mermap/supply/south},\\
+ and zoom level \refKey{mermap/supply/zoom}.
\end{itemize}
\end{docMrcKey}
@@ -229,25 +229,25 @@ accompanying Python script. The technical background is documented in
\begin{docMrcKey}[supply]{north}{=\meta{setup north latitude}}{no default, initially |50|}
Northern latitude degree, possibly negative for the southern hemisphere,
- lower than $90$ but always larger than \refKey{/mermap/supply/south}.
+ lower than $90$ but always larger than \refKey{mermap/supply/south}.
Used for map types \docValue{boundaries} and \docValue{areafit}.
\end{docMrcKey}
\begin{docMrcKey}[supply]{south}{=\meta{setup south latitude}}{no default, initially |48|}
Southern latitude degree, possibly negative for the southern hemisphere,
- larger than $-90$ but always lower than \refKey{/mermap/supply/north}.
+ larger than $-90$ but always lower than \refKey{mermap/supply/north}.
Used for map types \docValue{boundaries} and \docValue{areafit}.
\end{docMrcKey}
\begin{docMrcKey}[supply]{west}{=\meta{setup west longitude}}{no default, initially |11|}
Western longitude degree, possibly negative for the western hemisphere,
- possibly shifted periodically, but always lower than \refKey{/mermap/supply/east}.
+ possibly shifted periodically, but always lower than \refKey{mermap/supply/east}.
Used for map types \docValue{boundaries} and \docValue{areafit}.
\end{docMrcKey}
\begin{docMrcKey}[supply]{east}{=\meta{setup east longitude}}{no default, initially |13|}
Eastern longitude degree, possibly negative for the western hemisphere,
- possibly shifted periodically, but always larger than \refKey{/mermap/supply/west}.
+ possibly shifted periodically, but always larger than \refKey{mermap/supply/west}.
Used for map types \docValue{boundaries} and \docValue{areafit}.
\end{docMrcKey}
@@ -262,19 +262,19 @@ accompanying Python script. The technical background is documented in
{ doc name = add area },
}
Sets
- \refKey{/mermap/supply/north}, \refKey{/mermap/supply/south},
- \refKey{/mermap/supply/west}, \refKey{/mermap/supply/east}
+ \refKey{mermap/supply/north}, \refKey{mermap/supply/south},
+ \refKey{mermap/supply/west}, \refKey{mermap/supply/east}
according to the given \meta{comma separated list of named positions}, i.e.
the described area contains all these positions.\\
- \refKey{/mermap/supply/area} resets the current area which requires
+ \refKey{mermap/supply/area} resets the current area which requires
at least two points inside the list.\\
- \refKey{/mermap/supply/add area} does not reset the current area,
+ \refKey{mermap/supply/add area} does not reset the current area,
i.e. the positions are added to the
current area which possibly grows to fit all positions.\\
Also note to take special care, if the international dateline is on your
resulting map, see \Fullref{sec:dateline}.
Used for map types \docValue{boundaries} and \docValue{areafit}
- or in combination with \refKey{/mermap/supply/area to reference} also
+ or in combination with \refKey{mermap/supply/area to reference} also
for for map type \docValue{reference}.
\end{docMrcKeys}
@@ -290,19 +290,19 @@ accompanying Python script. The technical background is documented in
{ doc name = add area from marker input },
}
Sets
- \refKey{/mermap/supply/north}, \refKey{/mermap/supply/south},
- \refKey{/mermap/supply/west}, \refKey{/mermap/supply/east}
+ \refKey{mermap/supply/north}, \refKey{mermap/supply/south},
+ \refKey{mermap/supply/west}, \refKey{mermap/supply/east}
according to the given \refCom{mrcmarker} positions contained in a
file with the given \meta{file name}.\\
- \refKey{/mermap/supply/area from marker input} resets the current area which requires
+ \refKey{mermap/supply/area from marker input} resets the current area which requires
at least two marker positions inside the file.\\
- \refKey{/mermap/supply/add area from marker input} does not reset the current area,
+ \refKey{mermap/supply/add area from marker input} does not reset the current area,
i.e. the positions are added to the
current area which possibly grows to fit all positions.\\
Also note to take special care, if the international dateline is on your
resulting map, see \Fullref{sec:dateline}.
Used for map types \docValue{boundaries} and \docValue{areafit}
- or in combination with \refKey{/mermap/supply/area to reference} also
+ or in combination with \refKey{mermap/supply/area to reference} also
for for map type \docValue{reference}.
\end{docMrcKeys}
@@ -310,10 +310,10 @@ accompanying Python script. The technical background is documented in
\begin{docMrcKey}[supply]{area to reference}{}{no value, initially unset}
The map settings
- \refKey{/mermap/supply/north}, \refKey{/mermap/supply/south},
- \refKey{/mermap/supply/west}, \refKey{/mermap/supply/east}
+ \refKey{mermap/supply/north}, \refKey{mermap/supply/south},
+ \refKey{mermap/supply/west}, \refKey{mermap/supply/east}
are taken to compute the map center. This center position is saved
- to \refKey{/mermap/supply/latitude} and \refKey{/mermap/supply/longitude}.
+ to \refKey{mermap/supply/latitude} and \refKey{mermap/supply/longitude}.
Used for map type \docValue{reference}.
\end{docMrcKey}
@@ -352,8 +352,8 @@ accompanying Python script. The technical background is documented in
\begin{docMrcKey}[supply]{tex width}{=\meta{width}}{style, no default}
Width of the map as \TeX\ dimension.
- This is a style to compute \refKey{/mermap/supply/width} according to
- the current \refKey{/mermap/tile size}.
+ This is a style to compute \refKey{mermap/supply/width} according to
+ the current \refKey{mermap/tile size}.
\end{docMrcKey}
\begin{docMrcKey}[supply]{height}{=\meta{setup height in tiles}}{no default, initially |4|}
@@ -363,8 +363,8 @@ accompanying Python script. The technical background is documented in
\begin{docMrcKey}[supply]{tex height}{=\meta{width}}{style, no default}
Height of the map as \TeX\ dimension.
- This is a style to compute \refKey{/mermap/supply/height} according to
- the current \refKey{/mermap/tile size}.
+ This is a style to compute \refKey{mermap/supply/height} according to
+ the current \refKey{mermap/tile size}.
\end{docMrcKey}
\begin{docMrcKey}[supply]{align}{=\meta{setup alignment}}{no default, initially |center|}
@@ -379,12 +379,12 @@ accompanying Python script. The technical background is documented in
\begin{itemize}
\item\docValue{none}: No tiles are downloaded and no merged map is generated, just map computation.
This is the fastest method and needs no tile supplier.
- \item\docValue{tiles}: Download map tiles from a tile map service (TMS) \refKey{/mermap/supply/url}.
+ \item\docValue{tiles}: Download map tiles from a tile map service (TMS) \refKey{mermap/supply/url}.
Compilation of a document with map tile takes longer than compilation
with a merged map and transparency should not be used with tiles,
but the resulting document is smaller than a document with merged maps.
\item\docValue{mergedmap}: Download map tiles from a tile map service (TMS)
- \refKey{/mermap/supply/url} and merge them into a single map picture.
+ \refKey{mermap/supply/url} and merge them into a single map picture.
This speeds compilation and allows transparency effects, but
the resulting document is possibly larger than a document with map tiles,
because map tiles often are optimized 8-bit image files while the merged
@@ -394,7 +394,7 @@ accompanying Python script. The technical background is documented in
may differ (shift/size) from the more accurate tile representation by
one pixel.
\item\docValue{wmsmap}: Download a single map from a web map service (WMS)
- \refKey{/mermap/supply/url}. Internally, the package treats a WMS like
+ \refKey{mermap/supply/url}. Internally, the package treats a WMS like
a tile map service including all tile calculations. Actually, a single
file is downloaded.
\end{itemize}
@@ -404,7 +404,7 @@ accompanying Python script. The technical background is documented in
\begin{docMrcKey}[][doc new=2020-08-06]{fail on missing resource}{\colOpt{=true\textbar false}}{default |true|, initially |true|}
If set to |true|, compilation stops with an error, if
- \refKey{/mermap/supply/target} and \refKey{/mermap/mapdef/resource} are different.
+ \refKey{mermap/supply/target} and \refKey{mermap/mapdef/resource} are different.
Typically, this means that something went wrong while trying to download
map tiles. Set this option temporarily to |false|,
if the map tile service or the internet
@@ -427,7 +427,7 @@ accompanying Python script. The technical background is documented in
\begin{docMrcKey}[supply]{url with api key}{=\marg{prefix}\marg{name}\marg{postfix}}{no default}
- This is an alternative version of \refKey{/mermap/supply/url}.
+ This is an alternative version of \refKey{mermap/supply/url}.
The URL is constructed from some fixed \meta{prefix} and \meta{postfix} with
an API key in between. The API key is retrieved by \meta{name} from a
repository filled by \refCom{mrcsetapikey}.
@@ -442,7 +442,7 @@ accompanying Python script. The technical background is documented in
Stores an API key \meta{value} for access with the given \meta{name}.
Typically, \meta{value} is a received ID from a map tile service provider
after personal registration. \meta{name} is a placeholder which is used
- inside \refKey{/mermap/supply/url with api key} to mark the insertion
+ inside \refKey{mermap/supply/url with api key} to mark the insertion
point for the API key.
\begin{dispListing}
\mrcsetapikey{myservice}{....K942XY....}
@@ -454,7 +454,7 @@ accompanying Python script. The technical background is documented in
\begin{docMrcKey}[supply]{attribution}{=\meta{attribution text}}{no default, initially empty}
Attribution text for the map source. Typically, it acknowledges the copyright
of the map data provider. It may contain hyperlinks.
- It is used to set up \refKey{/mermap/mapdef/attribution} afterwards
+ It is used to set up \refKey{mermap/mapdef/attribution} afterwards
and it is accessible as \docAuxCommand{mrcmapattribution} (use read-only).\par
For technical reasons, do not use \verb+"+. \docAuxCommand{mrcumlaut}
may be used for masking umlauts, e.g. use \verb+\mrcumlaut{u}+ instead of
@@ -463,9 +463,9 @@ accompanying Python script. The technical background is documented in
\begin{docMrcKey}[supply]{attribution print}{=\meta{attribution text}}{no default, initially empty}
Attribution text for the map source.
- In contrast to \refKey{/mermap/supply/attribution} it is intended for media
+ In contrast to \refKey{mermap/supply/attribution} it is intended for media
that does not support hyperlinks like printed posters, books, etc.
- It is used to set up \refKey{/mermap/mapdef/attribution print} afterwards
+ It is used to set up \refKey{mermap/mapdef/attribution print} afterwards
and it is accessible as \docAuxCommand{mrcmapattributionprint} (use read-only).
\end{docMrcKey}
@@ -477,10 +477,10 @@ accompanying Python script. The technical background is documented in
\clearpage
\begin{docMrcKey}[supply]{flex reference scale}{=\meta{scale denominator}}{no default}
- With the given \meta{scale denominator}, an appropriate \refKey{/mermap/supply/zoom}
- and \refKey{/mermap/tile size} is computed. Note that
+ With the given \meta{scale denominator}, an appropriate \refKey{mermap/supply/zoom}
+ and \refKey{mermap/tile size} is computed. Note that
the \meta{scale denominator}
- always applies to the current \refKey{/mermap/supply/latitude}
+ always applies to the current \refKey{mermap/supply/latitude}
and is used for map type \docValue{boundaries} and \docValue{reference}.
For example, if the reference point is on the north side of the map,
also the \meta{scale denominator}
@@ -489,16 +489,16 @@ accompanying Python script. The technical background is documented in
Note to take special care to the order of the options.
\begin{itemize}
\item The reference point has to be set \emph{before}
- \refKey{/mermap/supply/flex reference scale}, e.g. by
- \refKey{/mermap/supply/latitude}, \refKey{/mermap/supply/position},
- \refKey{/mermap/supply/named position}.
- \item \refKey{/mermap/supply/tex height}, \refKey{/mermap/supply/tex width}
+ \refKey{mermap/supply/flex reference scale}, e.g. by
+ \refKey{mermap/supply/latitude}, \refKey{mermap/supply/position},
+ \refKey{mermap/supply/named position}.
+ \item \refKey{mermap/supply/tex height}, \refKey{mermap/supply/tex width}
(only for map type \docValue{reference})
- have to be set \emph{after} \refKey{/mermap/supply/flex reference scale},
- because the \refKey{/mermap/tile size} is adapted.
+ have to be set \emph{after} \refKey{mermap/supply/flex reference scale},
+ because the \refKey{mermap/tile size} is adapted.
\end{itemize}
- Also see \refKey{/mermap/flex tile size}, \refKey{/mermap/flex zoom},
- and \refKey{/mermap/flex scale}.
+ Also see \refKey{mermap/flex tile size}, \refKey{mermap/flex zoom},
+ and \refKey{mermap/flex scale}.
\tikzsetnextfilename{maptiles_flex_reference_scale}%
\begin{dispExample}
\begin{tikzpicture}
@@ -519,17 +519,17 @@ accompanying Python script. The technical background is documented in
\begin{docMrcKey}[supply]{flex area scale}{=\meta{scale denominator}}{no default}
- This is a shortcut for setting \refKey{/mermap/supply/area to reference}
- and \refKey{/mermap/supply/flex reference scale}=\meta{scale denominator}.
+ This is a shortcut for setting \refKey{mermap/supply/area to reference}
+ and \refKey{mermap/supply/flex reference scale}=\meta{scale denominator}.
Used for map type \docValue{boundaries} and \docValue{reference}.
Note to take special care to the order of the options.
\begin{itemize}
\item The reference point has to be set \emph{before}
- \refKey{/mermap/supply/flex area scale}.
- \item \refKey{/mermap/supply/tex height}, \refKey{/mermap/supply/tex width}
+ \refKey{mermap/supply/flex area scale}.
+ \item \refKey{mermap/supply/tex height}, \refKey{mermap/supply/tex width}
(only for map type \docValue{reference})
- have to be set \emph{after} \refKey{/mermap/supply/flex reference scale}.
+ have to be set \emph{after} \refKey{mermap/supply/flex reference scale}.
\end{itemize}
\end{docMrcKey}
@@ -538,13 +538,13 @@ accompanying Python script. The technical background is documented in
\begin{docMrcKey}[supply]{flex area fit}{\colOpt{=\meta{size}}}{default |0pt|}
This key can be used for map type \docValue{areafit} as \emph{final}
option \emph{after} all other options.
- It applies a fine tuning to \refKey{/mermap/tile size},
- \refKey{/mermap/supply/width}, and \refKey{/mermap/supply/height} such
+ It applies a fine tuning to \refKey{mermap/tile size},
+ \refKey{mermap/supply/width}, and \refKey{mermap/supply/height} such
that the defined area fits exactly into the map region.
If a \meta{size} is specified, width and height are reduced for the
calculation by this \meta{size}, e.g. \meta{size}|=1cm| ensures a
border of |5mm| on each side.
- Also see \refKey{/mermap/flex tile size} and \refKey{/mermap/flex zoom}.
+ Also see \refKey{mermap/flex tile size} and \refKey{mermap/flex zoom}.
\tikzsetnextfilename{maptiles_flex_area_fit}%
\begin{dispExample}
@@ -580,24 +580,24 @@ accompanying Python script. The technical background is documented in
\begin{docMrcKey}[supply]{dpi}{=\meta{dpi value}}{style, no default}
- This style sets \refKey{/mermap/supply/pixel} such that the given \meta{dpi value}
+ This style sets \refKey{mermap/supply/pixel} such that the given \meta{dpi value}
is resulting (approximately).
\begin{itemize}
\item Note that this only applies for WMS Servers and not for
TMS (Tile Map Service) Servers,
- because there \refKey{/mermap/supply/pixel} is a fixed number depending on
+ because there \refKey{mermap/supply/pixel} is a fixed number depending on
Server settings and cannot be chosen arbitrarily.
\item A high \meta{dpi value} results in large downloaded map files.
If the server does not provide a high resolution map, you will get
unnecessary large files with blurred content.
\item The \meta{dpi value} for TMS data can be changed by adapting
- \refKey{/mermap/tile size} or \refKey{/mermap/flex tile size}.
+ \refKey{mermap/tile size} or \refKey{mermap/flex tile size}.
\end{itemize}
\tikzsetnextfilename{maptiles_dpi_value}
\begin{dispExample}
\begin{tikzpicture}
- \mrcmap[type=reference,latitude=48.14,longitude=11.57,
+ \mrcmap[type=reference,latitude=48.14,longitude=11.57,
flex reference scale=250000,
source=topplusopen p250, target=wmsmap, dpi=300,
tex width=\linewidth,tex height=5cm]{dpi_value}
@@ -654,7 +654,7 @@ map data is free for everyone to use.
\textbf{But, map tile servers based on OpenStreetMap are not necessarily free}.
A list of online raster tile servers based on OpenStreetMap data is found here:\\
-\url{https://wiki.openstreetmap.org/wiki/Tile_servers}
+\url{https://wiki.openstreetmap.org/wiki/Raster_tile_providers}
\begin{itemize}
\item\bfseries I do not run a map tile server.
@@ -681,8 +681,8 @@ want to add more to avoid any legal uncertainties.
\medskip
\begin{docMrcKey}[supply]{source}{=\meta{source}}{style, no default}
- This style sets \refKey{/mermap/supply/url}, \refKey{/mermap/supply/attribution},\\
- \refKey{/mermap/supply/attribution print} and \refKey{/mermap/supply/basename}.\\
+ This style sets \refKey{mermap/supply/url}, \refKey{mermap/supply/attribution},\\
+ \refKey{mermap/supply/attribution print} and \refKey{mermap/supply/basename}.\\
Feasible values for \meta{source} are:
%\mermapset{tile size=3.2512cm}
\newcommand{\mapexample}[3][]{%
@@ -690,10 +690,10 @@ want to add more to avoid any legal uncertainties.
\mermapset{supply/source=#2}%
\begin{itemize}
\item Required attribution (\docAuxCommand{mrcmapattribution}):
- \begin{tcolorbox}[sharp corners,size=fbox,colback=yellow!8,colframe=yellow!80!gray,halign=flush left]
+ \begin{tcolorbox}[sharp corners,size=fbox,colback=yellow!8,colframe=yellow!80!gray,halign=flush left,before skip=2pt]
\mrcmapattribution\end{tcolorbox}
\item Required attribution for media without hyperlinks (\docAuxCommand{mrcmapattributionprint}):
- \begin{tcolorbox}[sharp corners,size=fbox,colback=yellow!8,colframe=yellow!80!gray,halign=flush left]
+ \begin{tcolorbox}[sharp corners,size=fbox,colback=yellow!8,colframe=yellow!80!gray,halign=flush left,before skip=2pt]
\mrcmapattributionprint\end{tcolorbox}
%\par\smallskip\
\end{itemize}
@@ -713,71 +713,13 @@ want to add more to avoid any legal uncertainties.
Dummy tile server at loopback |127.0.0.1| for test purposes.
\item\docValue{opentopomap}:\\
- Tile server (TMS) of \href{http://opentopomap.org/}{OpenTopoMap}.
+ Tile server (TMS) of \href{https://opentopomap.org/}{OpenTopoMap}.
\begin{itemize}
\item Usage (German language): \url{https://opentopomap.org/about#verwendung}
\end{itemize}
\mapexample{opentopomap}{opentopomap}
\clearpage
- \item\docValue{stamen terrain}:\\
- Tile server of \href{http://stamen.com}{Stamen Design}.\\
- Usage: \url{http://maps.stamen.com/#terrain}
- \mapexample{stamen terrain}{stamen_terrain}
-
- \item\docValue{stamen terrain-background}:\\
- Tile server of \href{http://stamen.com}{Stamen Design}.\\
- Usage: \url{http://maps.stamen.com/#terrain-background}
- \mapexample{stamen terrain-background}{stamen_terrain-background}
-
- \item\docValue{stamen terrain-labels}:\\
- Tile server of \href{http://stamen.com}{Stamen Design}.\\
- Usage: \url{http://maps.stamen.com/#terrain-labels}
- \mapexample{stamen terrain-labels}{stamen_terrain-labels}
-
-\clearpage
- \item\docValue{stamen terrain-lines}:\\
- Tile server of \href{http://stamen.com}{Stamen Design}.\\
- Usage: \url{http://maps.stamen.com/#terrain-lines}
- \mapexample{stamen terrain-lines}{stamen_terrain-lines}
-
- \item\docValue{stamen toner}:\\
- Tile server of \href{http://stamen.com}{Stamen Design}.\\
- Usage: \url{http://maps.stamen.com/#toner}
- \mapexample{stamen toner}{stamen_toner}
-
- \item\docValue{stamen toner-lite}:\\
- Tile server of \href{http://stamen.com}{Stamen Design}.\\
- Usage: \url{http://maps.stamen.com/#toner-lite}
- \mapexample{stamen toner-lite}{stamen_toner-lite}
-
-\clearpage
- \item\docValue{stamen toner-hybrid}:\\
- Tile server of \href{http://stamen.com}{Stamen Design}.\\
- Usage: \url{http://maps.stamen.com/#toner-hybrid}
- \mapexample{stamen toner-hybrid}{stamen_toner-hybrid}
-
- \item\docValue{stamen toner-background}:\\
- Tile server of \href{http://stamen.com}{Stamen Design}.\\
- Usage: \url{http://maps.stamen.com/#toner-background}
- \mapexample{stamen toner-background}{stamen_toner-background}
-
- \item\docValue{stamen toner-labels}:\\
- Tile server of \href{http://stamen.com}{Stamen Design}.\\
- Usage: \url{http://maps.stamen.com/#toner-labels}
- \mapexample{stamen toner-labels}{stamen_toner-labels}
-
-\clearpage
- \item\docValue{stamen toner-lines}:\\
- Tile server of \href{http://stamen.com}{Stamen Design}.\\
- Usage: \url{http://maps.stamen.com/#toner-lines}
- \mapexample{stamen toner-lines}{stamen_toner-lines}
-
- \item\docValue{stamen watercolor}:\\
- Tile server of \href{http://stamen.com}{Stamen Design}.\\
- Usage: \url{http://maps.stamen.com/#watercolor}
- \mapexample{stamen watercolor}{stamen_watercolor}
-
\item\docValue{thunderforest opencyclemap}:\\
Tile server of \href{https://www.thunderforest.com}{Thunderforest}.\\
A registered \meta{api-key} is needed (free plan available)
@@ -789,7 +731,6 @@ want to add more to avoid any legal uncertainties.
\end{itemize}
\mapexample{thunderforest opencyclemap}{thunderforest_opencyclemap}
-\clearpage
\item\docValue{thunderforest transport}:\\
Tile server of \href{https://www.thunderforest.com}{Thunderforest}.\\
A registered \meta{api-key} is needed (free plan available)
@@ -812,6 +753,7 @@ want to add more to avoid any legal uncertainties.
\end{itemize}
\mapexample{thunderforest landscape}{thunderforest_landscape}
+\clearpage
\item\docValue{thunderforest outdoors}:\\
Tile server of \href{https://www.thunderforest.com}{Thunderforest}.\\
A registered \meta{api-key} is needed (free plan available)
@@ -823,7 +765,17 @@ want to add more to avoid any legal uncertainties.
\end{itemize}
\mapexample{thunderforest outdoors}{thunderforest_outdoors}
-\clearpage
+ \item\docValue{thunderforest atlas}:\tcbdocmarginnote{\tcbdocnew{2024-07-29}}\\
+ Tile server of \href{https://www.thunderforest.com}{Thunderforest}.\\
+ A registered \meta{api-key} is needed (free plan available)
+ which is applied by\\
+ \refCom{mrcsetapikey}\brackets{\docValue{thunderforest}}\marg{api-key}.
+ \begin{itemize}
+ \item Usage: \url{https://www.thunderforest.com/terms}
+ \item API documentation: \url{https://www.thunderforest.com/maps/atlas}
+ \end{itemize}
+ \mapexample{thunderforest atlas}{thunderforest_atlas}
+
\item\docValue{thunderforest transport-dark}:\\
Tile server of \href{https://www.thunderforest.com}{Thunderforest}.\\
A registered \meta{api-key} is needed (free plan available)
@@ -835,6 +787,7 @@ want to add more to avoid any legal uncertainties.
\end{itemize}
\mapexample{thunderforest transport-dark}{thunderforest_transport-dark}
+\clearpage
\item\docValue{thunderforest spinal-map}:\\
Tile server of \href{https://www.thunderforest.com}{Thunderforest}.\\
A registered \meta{api-key} is needed (free plan available)
@@ -857,7 +810,6 @@ want to add more to avoid any legal uncertainties.
\end{itemize}
\mapexample{thunderforest pioneer}{thunderforest_pioneer}
-\clearpage
\item\docValue{thunderforest mobile-atlas}:\\
Tile server of \href{https://www.thunderforest.com}{Thunderforest}.\\
A registered \meta{api-key} is needed (free plan available)
@@ -869,6 +821,7 @@ want to add more to avoid any legal uncertainties.
\end{itemize}
\mapexample{thunderforest mobile-atlas}{thunderforest_mobile-atlas}
+\clearpage
\item\docValue{thunderforest neighbourhood}:\\
Tile server of \href{https://www.thunderforest.com}{Thunderforest}.\\
A registered \meta{api-key} is needed (free plan available)
@@ -880,31 +833,49 @@ want to add more to avoid any legal uncertainties.
\end{itemize}
\mapexample{thunderforest neighbourhood}{thunderforest_neighbourhood}
-\clearpage
\item\docValue{topplusopen web}:\\
- Tile server (TMS) of \href{http://www.bkg.bund.de}{Bundesamt f\"{u}r Kartographie und Geod\"{a}sie}.
+ Tile server (TMS) of \href{https://www.bkg.bund.de}{Bundesamt f\"{u}r Kartographie und Geod\"{a}sie}.
\begin{itemize}
\item Covers world / Europe / Germany depending on zoom level
- \item Usage (German language): \url{https://gdz.bkg.bund.de/index.php/default/webdienste/topplus-produkte/wmts-topplusopen-wmts-topplus-open.html}
+ \item Usage (German language): \url{https://gdz.bkg.bund.de/index.php/default/digitale-geodaten/topplusopen-produkte.html}
\end{itemize}
\mapexample{topplusopen web}{topplusopen_web}
\item\docValue{topplusopen web grau}:\\
- Tile server (TMS) of \href{http://www.bkg.bund.de}{Bundesamt f\"{u}r Kartographie und Geod\"{a}sie}.
+ Tile server (TMS) of \href{https://www.bkg.bund.de}{Bundesamt f\"{u}r Kartographie und Geod\"{a}sie}.
\begin{itemize}
\item Covers world / Europe / Germany depending on zoom level
- \item Usage (German language): \url{https://gdz.bkg.bund.de/index.php/default/webdienste/topplus-produkte/wmts-topplusopen-wmts-topplus-open.html}
+ \item Usage (German language): \url{https://gdz.bkg.bund.de/index.php/default/digitale-geodaten/topplusopen-produkte.html}
\end{itemize}
\mapexample{topplusopen web grau}{topplusopen_web_grau}
+\clearpage
+ \item\docValue{topplusopen web light}:\tcbdocmarginnote{\tcbdocnew{2024-07-29}}\\
+ Tile server (TMS) of \href{https://www.bkg.bund.de}{Bundesamt f\"{u}r Kartographie und Geod\"{a}sie}.
+ \begin{itemize}
+ \item Covers world / Europe / Germany depending on zoom level
+ \item Usage (German language): \url{https://gdz.bkg.bund.de/index.php/default/digitale-geodaten/topplusopen-produkte.html}
+ \end{itemize}
+ \mapexample{topplusopen web light}{topplusopen_web_light}
+
+ \item\docValue{topplusopen web light grau}\tcbdocmarginnote{\tcbdocnew{2024-07-29}}:\\
+ Tile server (TMS) of \href{https://www.bkg.bund.de}{Bundesamt f\"{u}r Kartographie und Geod\"{a}sie}.
+ \begin{itemize}
+ \item Covers world / Europe / Germany depending on zoom level
+ \item Usage (German language): \url{https://gdz.bkg.bund.de/index.php/default/digitale-geodaten/topplusopen-produkte.html}
+ \end{itemize}
+ \mapexample{topplusopen web light grau}{topplusopen_web_light_grau}
+
\end{itemize}
-\clearpage
+
+\vfill
\begin{tcolorbox}[spartan,colback=white]
The following sources are Web map server (WMS). Therefore,
-\refKey{/mermap/supply/target} can only be set to \docValue{wmsmap}
+\refKey{mermap/supply/target} can only be set to \docValue{wmsmap}
or \docValue{none}.
\end{tcolorbox}
+\clearpage
\begingroup
\ExplSyntaxOn
@@ -928,19 +899,19 @@ or \docValue{none}.
{
\cleanstep
\item\docValue{topplusopen \name}:\\
- Web map server (WMS) of \href{http://www.bkg.bund.de}{Bundesamt f\"{u}r Kartographie und Geod\"{a}sie}.
+ Web map server (WMS) of \href{https://www.bkg.bund.de}{Bundesamt f\"{u}r Kartographie und Geod\"{a}sie}.
\begin{itemize}
\item 1:\scdenom, covers Europe / Germany depending on zoom level
- \item Usage (German language): \url{https://gdz.bkg.bund.de/index.php/default/webdienste/topplus-produkte/wmts-topplusopen-wmts-topplus-open.html}
+ \item Usage (German language): \url{https://gdz.bkg.bund.de/index.php/default/digitale-geodaten/topplusopen-produkte.html}
\end{itemize}
\mapexample[target=wmsmap]{topplusopen \name}{topplusopen_\name}
\cleanstep
\item\docValue{topplusopen \name\ grau}:\\
- Web map server (WMS) of \href{http://www.bkg.bund.de}{Bundesamt f\"{u}r Kartographie und Geod\"{a}sie}.
+ Web map server (WMS) of \href{https://www.bkg.bund.de}{Bundesamt f\"{u}r Kartographie und Geod\"{a}sie}.
\begin{itemize}
\item 1:\scdenom, covers Europe / Germany depending on zoom level
- \item Usage (German language): \url{https://gdz.bkg.bund.de/index.php/default/webdienste/topplus-produkte/wmts-topplusopen-wmts-topplus-open.html}
+ \item Usage (German language): \url{https://gdz.bkg.bund.de/index.php/default/digitale-geodaten/topplusopen-produkte.html}
\end{itemize}
\def\grau{ grau}%
\mapexample[target=wmsmap]{topplusopen \name\grau}{topplusopen_\name_grau}
@@ -954,16 +925,16 @@ or \docValue{none}.
\begin{docCommand}{mrcnewsupplysource}{\marg{source}\marg{options}}
- Adds a new \meta{source} value to \refKey{/mermap/supply/source}.
+ Adds a new \meta{source} value to \refKey{mermap/supply/source}.
The \meta{options} should set the keys
- \refKey{/mermap/supply/url}, \refKey{/mermap/supply/attribution},\\
- \refKey{/mermap/supply/attribution print} and \refKey{/mermap/supply/basename}.
+ \refKey{mermap/supply/url}, \refKey{mermap/supply/attribution},\\
+ \refKey{mermap/supply/attribution print} and \refKey{mermap/supply/basename}.
It is recommend to use |x ...| for \meta{source} to avoid conflicts
- with future official additions to \refKey{/mermap/supply/source}.
+ with future official additions to \refKey{mermap/supply/source}.
\begin{dispListing}
\mrcnewsupplysource{x example}
{
- url = http://127.0.0.1/dummy/{z}/{x}/{y}.png,
+ url = https://127.0.0.1/dummy/{z}/{x}/{y}.png,
attribution = {Dummy tile server},
attribution print = {Dummy tile server},
basename = tiles/dummy,
diff --git a/macros/latex/contrib/mercatormap/mercatormap.doc.marker.tex b/macros/latex/contrib/mercatormap/mercatormap.doc.marker.tex
index dcd0e072b8..fb206c339e 100644
--- a/macros/latex/contrib/mercatormap/mercatormap.doc.marker.tex
+++ b/macros/latex/contrib/mercatormap/mercatormap.doc.marker.tex
@@ -14,8 +14,8 @@ may be helpful which provides some predefined marker types.
\begin{docCommand}{mrcmarker}{\marg{options}}
Places a marker according to the given \meta{options} on the map.
- All \meta{options} share the common prefix |/mermap/marker/|.
- Different \refKey{/mermap/marker/type} settings are available which are
+ All \meta{options} share the common prefix |mermap/marker/|.
+ Different \refKey{mermap/marker/type} settings are available which are
more or less customizable.
\tikzsetnextfilename{marker_mrcmarker}%
@@ -48,8 +48,8 @@ may be helpful which provides some predefined marker types.
\begin{docCommand}{mermapsetmarker}{\marg{options}}
Sets \meta{options} for all following markers inside the current \TeX\ group.
- All options share the common prefix |/mermap/marker/|, e.g. for setting
- \refKey{/mermap/marker/type} use
+ All options share the common prefix |mermap/marker/|, e.g. for setting
+ \refKey{mermap/marker/type} use
\begin{dispListing}
\mermapsetmarker{type=pin}
\end{dispListing}
@@ -74,7 +74,7 @@ may be helpful which provides some predefined marker types.
\end{docMrcKey}
\begin{docMrcKey}[marker]{lat}{=\meta{latitude}}{no default, initially |12|}
- Alias for \refKey{/mermap/marker/latitude}.
+ Alias for \refKey{mermap/marker/latitude}.
\end{docMrcKey}
\begin{docMrcKey}[marker]{longitude}{=\meta{longitude}}{no default, initially |49|}
@@ -83,7 +83,7 @@ may be helpful which provides some predefined marker types.
\end{docMrcKey}
\begin{docMrcKey}[marker]{lon}{=\meta{longitude}}{no default, initially |49|}
- Alias for \refKey{/mermap/marker/longitude}.
+ Alias for \refKey{mermap/marker/longitude}.
\end{docMrcKey}
\begin{docMrcKey}[marker]{position}{=\meta{place latitude}:\meta{place longitude}}{no default, initially |12:49|}
@@ -100,7 +100,7 @@ may be helpful which provides some predefined marker types.
given \meta{area}. Feasible values for \meta{area} are:
\begin{itemize}
\item\docValue{map}: Use inside map.
- \item\docValue{vicinity}: Use inside map plus vicinity, see \refKey{/mermap/vicinity}.
+ \item\docValue{vicinity}: Use inside map plus vicinity, see \refKey{mermap/vicinity}.
\end{itemize}
\end{docMrcKey}
@@ -157,36 +157,36 @@ may be helpful which provides some predefined marker types.
\begin{docMrcKey}[marker]{hide}{\colOpt{=true\textbar false}}{default |true|, initially |false|}
If set to |true|, the marker is not used.
- \refKey{/mermap/marker/hide} is inverse to \refKey{/mermap/marker/show}.
+ \refKey{mermap/marker/hide} is inverse to \refKey{mermap/marker/show}.
\end{docMrcKey}
\begin{docMrcKey}[marker]{show category}{=\meta{category}}{style, no default}
- Sets \refKey{/mermap/marker/show} to |true|, if \refKey{/mermap/marker/category} equals \meta{category}.
+ Sets \refKey{mermap/marker/show} to |true|, if \refKey{mermap/marker/category} equals \meta{category}.
Otherwise, nothing happens.
- \refKey{/mermap/marker/category} has to be set \emph{before}.
+ \refKey{mermap/marker/category} has to be set \emph{before}.
\end{docMrcKey}
\begin{docMrcKey}[marker]{show all but category}{=\meta{category}}{style, no default}
- Sets \refKey{/mermap/marker/show} to |true|, if \refKey{/mermap/marker/category} does not equal \meta{category}.
+ Sets \refKey{mermap/marker/show} to |true|, if \refKey{mermap/marker/category} does not equal \meta{category}.
Otherwise, nothing happens.
- \refKey{/mermap/marker/category} has to be set \emph{before}.
+ \refKey{mermap/marker/category} has to be set \emph{before}.
\end{docMrcKey}
\begin{docMrcKey}[marker]{hide category}{=\meta{category}}{style, no default}
- Sets \refKey{/mermap/marker/show} to |false|, if \refKey{/mermap/marker/category} equals \meta{category}.
+ Sets \refKey{mermap/marker/show} to |false|, if \refKey{mermap/marker/category} equals \meta{category}.
Otherwise, nothing happens.
- \refKey{/mermap/marker/category} has to be set \emph{before}.
+ \refKey{mermap/marker/category} has to be set \emph{before}.
\end{docMrcKey}
\begin{docMrcKey}[marker]{hide all but category}{=\meta{category}}{style, no default}
- Sets \refKey{/mermap/marker/show} to |false|, if \refKey{/mermap/marker/category} does not equal \meta{category}.
+ Sets \refKey{mermap/marker/show} to |false|, if \refKey{mermap/marker/category} does not equal \meta{category}.
Otherwise, nothing happens.
- \refKey{/mermap/marker/category} has to be set \emph{before}.
+ \refKey{mermap/marker/category} has to be set \emph{before}.
\tikzsetnextfilename{marker_hide}%
\begin{dispExample}
\begin{tikzpicture}
@@ -206,10 +206,10 @@ may be helpful which provides some predefined marker types.
\clearpage
The following options require the package |hyperref| to be loaded.
-If |hyperref| is not loaded, \refKey{/mermap/marker/url} and
-\refKey{/mermap/marker/link} are ignored.\\
-Note that if \refKey{/mermap/marker/url} and \refKey{/mermap/marker/link}
-are applied concurrently, then \refKey{/mermap/marker/link} will win.
+If |hyperref| is not loaded, \refKey{mermap/marker/url} and
+\refKey{mermap/marker/link} are ignored.\\
+Note that if \refKey{mermap/marker/url} and \refKey{mermap/marker/link}
+are applied concurrently, then \refKey{mermap/marker/link} will win.
\begin{docMrcKeys}[
@@ -279,9 +279,9 @@ are applied concurrently, then \refKey{/mermap/marker/link} will win.
doc description = {default |true|, initially |false|},
},
}
- If \refKey{/mermap/marker/use urls} is set to |false|, external links
- with \refKey{/mermap/marker/url} are ignored.\\
- \refKey{/mermap/marker/ignore urls} is inverse to \refKey{/mermap/marker/use urls}.
+ If \refKey{mermap/marker/use urls} is set to |false|, external links
+ with \refKey{mermap/marker/url} are ignored.\\
+ \refKey{mermap/marker/ignore urls} is inverse to \refKey{mermap/marker/use urls}.
\end{docMrcKeys}
@@ -299,9 +299,9 @@ are applied concurrently, then \refKey{/mermap/marker/link} will win.
doc description = {default |true|, initially |false|},
},
}
- If \refKey{/mermap/marker/use links} is set to |false|, internal links
- with \refKey{/mermap/marker/link} are ignored.\\
- \refKey{/mermap/marker/ignore links} is inverse to \refKey{/mermap/marker/use links}.
+ If \refKey{mermap/marker/use links} is set to |false|, internal links
+ with \refKey{mermap/marker/link} are ignored.\\
+ \refKey{mermap/marker/ignore links} is inverse to \refKey{mermap/marker/use links}.
\end{docMrcKeys}
@@ -596,7 +596,7 @@ The different marker types can be customized by some additional options:
\subsection{New Marker Types}
\begin{docCommand}{mrcnewmarkertype}{\marg{type name}\marg{\tikzname\ code}}
- Creates a new \refKey{/mermap/marker/type} value \meta{type name} using the
+ Creates a new \refKey{mermap/marker/type} value \meta{type name} using the
given \meta{\tikzname\ code} for drawing a place marker.
To avoid future name clashes, you should start a private \meta{type name}
with letter |x|. For \meta{\tikzname\ code} settings like
@@ -630,9 +630,9 @@ The different marker types can be customized by some additional options:
\subsection{New Marker Styles}
\begin{docCommand}{mrcnewmarkerstyle}{\marg{style name}\marg{options}}
- Creates a new \refKey{/mermap/marker/style} value \meta{style name} using the
+ Creates a new \refKey{mermap/marker/style} value \meta{style name} using the
given \meta{options} for drawing a place marker.
- All \meta{options} share the common prefix |/mermap/marker/|. Here, a \emph{style}
+ All \meta{options} share the common prefix |mermap/marker/|. Here, a \emph{style}
has the same concept as a \tikzname\ style.
\tikzsetnextfilename{marker_markerstyle}%
diff --git a/macros/latex/contrib/mercatormap/mercatormap.doc.orthodromes.tex b/macros/latex/contrib/mercatormap/mercatormap.doc.orthodromes.tex
index cddb277c86..6f9620fae0 100644
--- a/macros/latex/contrib/mercatormap/mercatormap.doc.orthodromes.tex
+++ b/macros/latex/contrib/mercatormap/mercatormap.doc.orthodromes.tex
@@ -26,7 +26,7 @@ The mathematical background and further information are found in \cite{Sturm:202
\begin{docTikzKey}{mermap samples}{=\meta{number}}{style, no default}
- \tikzname\ variant to set \refKey{/mermap/samples}.
+ \tikzname\ variant to set \refKey{mermap/samples}.
\end{docTikzKey}
\enlargethispage*{1cm}
@@ -56,7 +56,7 @@ The mathematical background and further information are found in \cite{Sturm:202
\mrcclipmap
\draw (mrcmap.south west) rectangle (mrcmap.north east);
\mrcdraworthodrome[red,very thick,mermap samples=100]
- {48.14}{11.58}{40.71}{-74.01}
+ {48.14}{11.58}{40.71}{-74.01}
\node[red,fill=white] at ([above=1.3cm]mrcmap) {
\mrcprettyorthodistance{48.14}{11.58}{40.71}{-74.01} };
\end{tikzpicture}
@@ -99,6 +99,120 @@ The mathematical background and further information are found in \cite{Sturm:202
\clearpage
%-------------------------------------------------------------------------------
+\subsection{Orthodrome Points}
+
+\begin{docCommands}[
+ ]{
+ {
+ doc new and updated = {2024-08-01}{2024-08-05},
+ doc name = mrcNPfromOrthoFraction,
+ doc parameter = \marg{name}\oarg{\textbackslash angle}\marg{lat1}\marg{lon1}\marg{lat2}\marg{lon2}\marg{fraction},
+ },
+ {
+ doc name = mrcNPfromOrthoFractionNamed,
+ doc parameter = \marg{name}\oarg{\textbackslash angle}\marg{name1}\marg{name2}\marg{fraction},
+ },
+ }
+ Defines a new named position \meta{name} which is located on a \meta{fraction}
+ from the starting point of the orthodromic curve
+ from a point with
+ latitude \meta{lat1} and longitude \meta{lon1} (or described by a named position \meta{name1})
+ to a point with
+ latitude \meta{lat2} and longitude \meta{lon2} (or described by a named position \meta{name2}).
+ The given starting and final point of the orthodrome need to have a distance of more than
+ \SI{1}{\meter}.
+ If \meta{\textbackslash angle} is given, this macro is set to the
+ angle between the tangent vector to the orthodrome and
+ the current parallel circle.
+
+\tikzsetnextfilename{ortho_orthodrome3}%
+\begin{dispExample}
+ \begin{tikzpicture}
+ \mrcNPdef{munich}{48.14}{11.58}
+ \mrcNPdef{newyork}{40.71}{-74.01}
+ \mrcmap[type=areafit, area={munich,newyork},
+ source=topplusopen web,
+ tex width=\linewidth,tex height=6cm,
+ ]{ortho_orthodrome3}
+ \mrcdrawmap
+ \node[below,font=\fontsize{7pt}{7pt}\sffamily] at (mrcmap.south)
+ {\mrcmapattribution};
+ \mrcclipmap
+ \draw (mrcmap.south west) rectangle (mrcmap.north east);
+ \mrcmarker{type=pin,named position=munich,contents={M\"unchen}}
+ \mrcmarker{type=pinflip,shift=5mm,named position=newyork,
+ contents={New York City}}
+ \mrcNPdraworthodrome[red,very thick] {munich}{newyork}
+ \foreach \fraction in { 0.1,0.3,0.5,0.7,1.0,1.1 }
+ {
+ \mrcNPfromOrthoFractionNamed{waypoint}[\myangle]
+ {munich}{newyork}{\fraction}
+ \mrcmarker{type=pin,named position=waypoint,
+ contents={\fraction: \fpeval{round(\myangle)}\textdegree }}
+ }
+ \end{tikzpicture}
+\end{dispExample}
+\end{docCommands}
+
+\clearpage
+
+\begin{docCommands}[
+ ]{
+ {
+ doc new and updated = {2024-08-01}{2024-08-05},
+ doc name = mrcNPfromOrthoDistance,
+ doc parameter = \marg{name}\oarg{\textbackslash angle}\marg{lat1}\marg{lon1}\marg{lat2}\marg{lon2}\marg{distance},
+ },
+ {
+ doc name = mrcNPfromOrthoDistanceNamed,
+ doc parameter = \marg{name}\oarg{\textbackslash angle}\marg{name1}\marg{name2}\marg{distance},
+ },
+ }
+ Defines a new named position \meta{name} which is located on a \meta{distance}
+ from the starting point of the orthodromic curve
+ from a point with
+ latitude \meta{lat1} and longitude \meta{lon1} (or described by a named position \meta{name1})
+ to a point with
+ latitude \meta{lat2} and longitude \meta{lon2} (or described by a named position \meta{name2}).
+ The given starting and final point of the orthodrome need to have a distance of more than
+ \SI{1}{\meter}. The unit for the \meta{distance} is kilometer.
+ If \meta{\textbackslash angle} is given, this macro is set to the
+ angle between the tangent vector to the orthodrome and
+ the current parallel circle.
+
+\tikzsetnextfilename{ortho_orthodrome4}%
+\begin{dispExample}
+ \begin{tikzpicture}
+ \mrcNPdef{munich}{48.14}{11.58}
+ \mrcNPdef{newyork}{40.71}{-74.01}
+ \mrcmap[type=areafit, area={munich,newyork},
+ source=topplusopen web,
+ tex width=\linewidth,tex height=6cm,
+ ]{ortho_orthodrome4}
+ \mrcdrawmap
+ \node[below,font=\fontsize{7pt}{7pt}\sffamily] at (mrcmap.south)
+ {\mrcmapattribution};
+ \mrcclipmap
+ \draw (mrcmap.south west) rectangle (mrcmap.north east);
+ \mrcmarker{type=pin,named position=munich,contents={M\"unchen}}
+ \mrcmarker{type=pinflip,shift=5mm,named position=newyork,
+ contents={New York City}}
+ \mrcNPdraworthodrome[red,very thick] {munich}{newyork}
+ \foreach \distance in { 1000,2000,3000,4000,5000,6000 }
+ {
+ \mrcNPfromOrthoDistanceNamed{waypoint}{munich}{newyork}{\distance}
+ \mrcmarker{type=pin,named position=waypoint,
+ contents={\SI{\distance}{\kilo\meter}}}
+ }
+ \end{tikzpicture}
+\end{dispExample}
+\end{docCommands}
+
+
+
+
+\clearpage
+%-------------------------------------------------------------------------------
\subsection{Orthodromic and Loxodromic Distances}
\begin{docCommand}{mrcprettyorthodistance}{\marg{lat1}\marg{lon1}\marg{lat2}\marg{lon2}}
diff --git a/macros/latex/contrib/mercatormap/mercatormap.doc.scales.tex b/macros/latex/contrib/mercatormap/mercatormap.doc.scales.tex
index 6efc4fe0d0..9e210c2a24 100644
--- a/macros/latex/contrib/mercatormap/mercatormap.doc.scales.tex
+++ b/macros/latex/contrib/mercatormap/mercatormap.doc.scales.tex
@@ -164,7 +164,7 @@ but not for critical navigation purposes etc.
\begin{docCommand}{mrcdrawscalebar}{\oarg{options}}
Draws a scale bar according to the given \meta{options}.
- All \meta{options} share the common prefix |/mermap/scalebar/|.
+ All \meta{options} share the common prefix |mermap/scalebar/|.
The most essential option is the \emph{width} of the scale bar.
\tikzsetnextfilename{scales_scalebar1}
@@ -216,7 +216,7 @@ but not for critical navigation purposes etc.
\end{docMrcKey}
\begin{docMrcKey}[scalebar]{width-in-kilometer}{=\meta{number}}{no default, initially |0|}
- Alias for \refKey{/mermap/scalebar/width-in-km}
+ Alias for \refKey{mermap/scalebar/width-in-km}
\end{docMrcKey}
\begin{docMrcKey}[scalebar]{width-in-meter}{=\meta{number}}{no default, initially |0|}
@@ -247,7 +247,7 @@ but not for critical navigation purposes etc.
\begin{docMrcKey}[scalebar]{at}{=\marg{\tikzname\ coordinate}}{no default,
initially \texttt{\brackets{(0,0)}}}
The scale bar is positioned at the given \meta{\tikzname\ coordinate}.
- The placement is done with the \refKey{/mermap/scalebar/placement} option.
+ The placement is done with the \refKey{mermap/scalebar/placement} option.
Both option correspond to the \tikzname\ options for positioning nodes.
The scale bar can be positioned outside the map (e.g. below), but
remember to use \refCom{mrcclipmap} \emph{after} the scale bar
@@ -285,7 +285,7 @@ but not for critical navigation purposes etc.
\begin{docMrcKey}[scalebar]{placement}{=\meta{\tikzname\ positioning}}{no default, initially empty}
\meta{\tikzname\ positioning} of a scale bar in combination with
- \refKey{/mermap/scalebar/at}. All \tikzname\ placement options for nodes
+ \refKey{mermap/scalebar/at}. All \tikzname\ placement options for nodes
can be used, e.g. \texttt{above left} or \texttt{anchor=mid west}, etc.
Actually, \emph{any} node option could be applied here, but the intended use
is for placement options only.
@@ -298,7 +298,7 @@ but not for critical navigation purposes etc.
absolute shift values in each direction, i.e. the algebraic sign is
automatically complemented.
If only \meta{x shift} is given, then \meta{y shift} is set
- to the same value. \refKey{/mermap/scalebar/at} and \refKey{/mermap/scalebar/placement}
+ to the same value. \refKey{mermap/scalebar/at} and \refKey{mermap/scalebar/placement}
are set by this option.
\end{docMrcKey}
@@ -349,8 +349,8 @@ but not for critical navigation purposes etc.
The \emph{minor} part of the scale bar is a single \tikzname\ path object
which can be customized by the given \meta{\tikzname\ options}.
The \emph{minor} part is seen as holes in the default case.
- \refKey{/mermap/scalebar/minor style} has only an effect, if
- the minor part is drawn \refKey{/mermap/scalebar/solid}.
+ \refKey{mermap/scalebar/minor style} has only an effect, if
+ the minor part is drawn \refKey{mermap/scalebar/solid}.
\tikzsetnextfilename{scales_scalebar5}
\begin{dispExample}
\begin{tikzpicture}
@@ -369,7 +369,7 @@ but not for critical navigation purposes etc.
\begin{docMrcKey}[scalebar]{single}{\colOpt{=true\textbar false}}{default |true|, initially |false|}
If set to |true|, the scale bar is drawn as a single ruler.
- \refKey{/mermap/scalebar/single} is inverse to \refKey{/mermap/scalebar/double}.
+ \refKey{mermap/scalebar/single} is inverse to \refKey{mermap/scalebar/double}.
\tikzsetnextfilename{scales_scalebar6}
\begin{dispExample}
\begin{tikzpicture}
@@ -387,8 +387,8 @@ but not for critical navigation purposes etc.
\begin{docMrcKey}[scalebar]{solid}{\colOpt{=true\textbar false}}{default |true|, initially |false|}
If set to |true|, the \emph{minor} part of the scale bar is drawn opaque.
- It is drawn white or according to \refKey{/mermap/scalebar/minor style}.
- \refKey{/mermap/scalebar/solid} is inverse to \refKey{/mermap/scalebar/transparent}.
+ It is drawn white or according to \refKey{mermap/scalebar/minor style}.
+ \refKey{mermap/scalebar/solid} is inverse to \refKey{mermap/scalebar/transparent}.
\end{docMrcKey}
diff --git a/macros/latex/contrib/mercatormap/mercatormap.doc.sty b/macros/latex/contrib/mercatormap/mercatormap.doc.sty
index 80b38241ce..95b45544d7 100644
--- a/macros/latex/contrib/mercatormap/mercatormap.doc.sty
+++ b/macros/latex/contrib/mercatormap/mercatormap.doc.sty
@@ -4,10 +4,9 @@
\renewcommand*\l@subsubsection{\@dottedtocline{3}{4.2em}{3.2em}}
\RequirePackage[T1]{fontenc}
-\RequirePackage[utf8]{inputenc}
\RequirePackage[english]{babel}
\RequirePackage{lmodern,parskip,array}
-\RequirePackage[svgnames,table,hyperref]{xcolor}
+\RequirePackage[svgnames,table]{xcolor}
\RequirePackage{tikz}
\RequirePackage{varioref}
\RequirePackage[makeindex]{imakeidx}
@@ -31,15 +30,17 @@
\RequirePackage{array,tabularx,booktabs}
\RequirePackage{lipsum}
\RequirePackage[extendedchars,encoding,filenameencoding=utf-8]{grffile}
-\RequirePackage{siunitx,xfp}
+\RequirePackage{xfp}
\RequirePackage{tcolorbox}
-\tcbuselibrary{skins,xparse,minted,breakable,documentation,raster}
+\tcbuselibrary{skins,minted,breakable,documentation,raster}
\providecommand\mrcpkgprefix{}
\RequirePackage{\mrcpkgprefix mercatormap}
\IfFileExists{../private/privatekeys.tex}{\input{../private/privatekeys.tex}}{}
+\RequirePackage{fontawesome5}
+
\RequirePackage{csquotes}
\RequirePackage[%style=authoryear,
style=numeric-comp,
@@ -96,8 +97,8 @@
borderline horizontal={0.3mm}{0pt}{red!50},
#1}{#2}
-\tcbmakedocSubKey{docMrcKey}{mermap}
-\tcbmakedocSubKeys{docMrcKeys}{mermap}
+\tcbmakedocSubKey[doc key prefix=]{docMrcKey}{mermap}
+\tcbmakedocSubKeys[doc key prefix=]{docMrcKeys}{mermap}
\tcbmakedocSubKey{docTikzKey}{tikz}
\def\tikzname{\textup{Ti\textit{k}Z}}
diff --git a/macros/latex/contrib/mercatormap/mercatormap.doc.versionhistory.tex b/macros/latex/contrib/mercatormap/mercatormap.doc.versionhistory.tex
deleted file mode 100644
index bcdf2fd322..0000000000
--- a/macros/latex/contrib/mercatormap/mercatormap.doc.versionhistory.tex
+++ /dev/null
@@ -1,50 +0,0 @@
-% !TeX root = mercatormap.tex
-% !TeX encoding=UTF-8
-% !TeX spellcheck=en_US
-% include file of mercatormap.tex (manual of the LaTeX package mercatormap)
-\clearpage
-\section{Version History}%
-
-\section*{v1.00 (2020/04/20)}
-\begin{itemize}
-\item Initial public release.
-\end{itemize}
-
-\section*{v1.01 (2020/05/05)}
-\begin{itemize}
-\item Sorting of index key entries fixed for the documentation.
-\item User messages for failed Python script calls are changed from warnings to
- errors to fail fast and to provide more information and hints about
- possible reasons.
-\item New general marker option
- \refKey{/mermap/marker/generic} with corresponding macros
- \docAuxCommand*{mrcmarkergeneric}
- and \docAuxCommand*{l_mermap_marker_generic_tl}. Also, the marker uuid is
- made |expl3| accessible as \docAuxCommand*{l_mermap_marker_uuid_tl}.
-\item New hyper marker options
- \refKey{/mermap/marker/url},
- \refKey{/mermap/marker/link},
- \refKey{/mermap/marker/use urls},
- \refKey{/mermap/marker/ignore urls},
- \refKey{/mermap/marker/use links},
- \refKey{/mermap/marker/ignore links}.
-\end{itemize}
-
-
-\section*{v1.02 (2020/08/06)}
-\begin{itemize}
-\item New options
- \refKey{/mermap/supply/area from marker input} and
- \refKey{/mermap/supply/add area from marker input}
- which allow to fit a map to a given external list of marker positions.
-\item New option \refKey{/mermap/fail on missing resource} to control
- compilation behavior for missing resource files.
-\item Openrouteservice has discontinued mapsurfer tiles since June 2020.\\
- Therefore, \refKey{/mermap/supply/source}=\docValue{openrouteservice mapsurfer}
- is deprecated now. It is not documented any more, but
- for some time it is still available for old documents with
- cached map tiles.
-\item\issuetracker{2}
- New marker option \refKey{/mermap/marker/distance} with corresponding
- macro \docAuxCommand{mrcmarkerdistance}.
-\end{itemize}
diff --git a/macros/latex/contrib/mercatormap/mercatormap.pdf b/macros/latex/contrib/mercatormap/mercatormap.pdf
index d90d749617..1c0c7dc3d8 100644
--- a/macros/latex/contrib/mercatormap/mercatormap.pdf
+++ b/macros/latex/contrib/mercatormap/mercatormap.pdf
Binary files differ
diff --git a/macros/latex/contrib/mercatormap/mercatormap.sty b/macros/latex/contrib/mercatormap/mercatormap.sty
index d2c8d61ae4..b9f77b9715 100644
--- a/macros/latex/contrib/mercatormap/mercatormap.sty
+++ b/macros/latex/contrib/mercatormap/mercatormap.sty
@@ -1,8 +1,8 @@
-%% The LaTeX package mercatormap - version 1.02 (2020/08/06)
+%% The LaTeX package mercatormap - version 1.2.0 (2024/08/05)
%% mercatormap.sty: geographic coordinates (Mercator projection) and map tiles for TikZ pictures
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2020-2024 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -17,24 +17,11 @@
%%
%% This work consists of all files listed in README
%%
-\RequirePackage{expl3}[2020/02/25]
-\RequirePackage{xparse}
-\ProvidesExplPackage{mercatormap}{2020/08/06}{1.02}
+\NeedsTeXFormat{LaTeX2e}[2023-11-01]
+\ProvidesExplPackage{mercatormap}{2024/08/05}{1.2.0}
{A Web Mercator projection package with map tile support}
-\@ifpackagelater { expl3 } { 2020/02/25 }
- { }
- {
- \PackageError { mercatormap } { Support~package~expl3~too~old }
- {
- You~need~to~update~your~installation~of~the~bundles~'l3kernel'~and~
- 'l3packages'.\MessageBreak
- Loading~mercatormap~will~abort!
- }
- \tex_endinput:D
- }
-\RequirePackage{siunitx}
-\RequirePackage{graphicx,tikz,pdftexcmds}
+\RequirePackage{siunitx,graphicx,tikz}
\ExplSyntaxOff
% space character problem if within explSyntax
@@ -51,8 +38,23 @@
\NewDocumentCommand\mermapsetmarker{ m } { \keys_set:nn { mermap/marker } {#1} }
-%---- constants ----------------------------------------------------------------
+%---- scratch variables --------------------------------------------------------
+
+\box_new:N \l__mermap_tmpa_box
+
+\clist_new:N \l__mermap_tmpa_clist
+\dim_new:N \l__mermap_tmpa_dim
+\dim_new:N \l__mermap_tmpb_dim
+
+\fp_new:N \l__mermap_tmpa_fp
+\fp_new:N \l__mermap_tmpb_fp
+
+\tl_new:N \g__mermap_tmpa_tl
+\tl_new:N \l__mermap_tmpa_tl
+\tl_new:N \l__mermap_tmpb_tl
+
+%---- constants ----------------------------------------------------------------
\fp_const:Nn \c__mermap_scale_radius_fp { 6371*pi/180 }
\fp_const:Nn \c__mermap_mean_radius_fp { 637100000cm }
@@ -235,16 +237,16 @@
\cs_new_nopar:Npn \__mermap_longitude_to_x:n #1
{
- \fp_set:Nn \l_tmpa_fp { #1-\l__mermap_mapwest_fp }
- \fp_sub:Nn \l_tmpa_fp { 360*floor(\l_tmpa_fp/360) }
- \fp_set:Nn \l_tmpa_fp
- { \l_tmpa_fp>\l__mermap_westeast_fp
- ?(\l_tmpa_fp-\l__mermap_westeast_fp>360-\l_tmpa_fp
- ?\l_tmpa_fp-360
- :\l_tmpa_fp)
- :\l_tmpa_fp
+ \fp_set:Nn \l__mermap_tmpa_fp { #1-\l__mermap_mapwest_fp }
+ \fp_sub:Nn \l__mermap_tmpa_fp { 360*floor(\l__mermap_tmpa_fp/360) }
+ \fp_set:Nn \l__mermap_tmpa_fp
+ { \l__mermap_tmpa_fp>\l__mermap_westeast_fp
+ ?(\l__mermap_tmpa_fp-\l__mermap_westeast_fp>360-\l__mermap_tmpa_fp
+ ?\l__mermap_tmpa_fp-360
+ :\l__mermap_tmpa_fp)
+ :\l__mermap_tmpa_fp
}
- \fp_set:Nn \l__mermap_cs_x_fp { \l_tmpa_fp*\l__mermap_cs_xfactor_fp }
+ \fp_set:Nn \l__mermap_cs_x_fp { \l__mermap_tmpa_fp*\l__mermap_cs_xfactor_fp }
}
@@ -328,7 +330,7 @@
}
-\prg_new_conditional:Npnn \__mermap_if_in_map:nn #1#2 { p, TF }
+\prg_new_conditional:Npnn \__mermap_if_in_map:nn #1#2 { p, T, F, TF }
{
\fp_compare:nNnTF {#1} > \l__mermap_mapnorth_fp
{
@@ -340,14 +342,14 @@
\prg_return_false:
}
{
- \fp_set:Nn \l_tmpa_fp { #2-\l__mermap_mapwest_fp }
- \fp_sub:Nn \l_tmpa_fp { 360*floor(\l_tmpa_fp/360) }
- \fp_compare:nNnTF \l_tmpa_fp > \l__mermap_westeast_fp
+ \fp_set:Nn \l__mermap_tmpa_fp { #2-\l__mermap_mapwest_fp }
+ \fp_sub:Nn \l__mermap_tmpa_fp { 360*floor(\l__mermap_tmpa_fp/360) }
+ \fp_compare:nNnTF \l__mermap_tmpa_fp > \l__mermap_westeast_fp
{
\prg_return_false:
}
{
- \fp_set:Nn \l__mermap_cs_x_fp { \l_tmpa_fp*\l__mermap_cs_xfactor_fp }
+ \fp_set:Nn \l__mermap_cs_x_fp { \l__mermap_tmpa_fp*\l__mermap_cs_xfactor_fp }
\__mermap_latitude_to_y:n {#1}
\pgfnoderename{mrclastpos}{mrcpos}
\pgfcoordinate{mrcpos}{
@@ -366,7 +368,7 @@
}
-\prg_new_conditional:Npnn \__mermap_if_in_vicinity:nn #1#2 { p, TF }
+\prg_new_conditional:Npnn \__mermap_if_in_vicinity:nn #1#2 { p, T, F, TF }
{
\fp_compare:nNnTF {#1} > \l__mermap_vic_north_fp
{
@@ -378,14 +380,14 @@
\prg_return_false:
}
{
- \fp_set:Nn \l_tmpa_fp { #2-\l__mermap_vic_west_fp }
- \fp_sub:Nn \l_tmpa_fp { 360*floor(\l_tmpa_fp/360) }
- \fp_compare:nNnTF \l_tmpa_fp > \l__mermap_vic_westeast_fp
+ \fp_set:Nn \l__mermap_tmpa_fp { #2-\l__mermap_vic_west_fp }
+ \fp_sub:Nn \l__mermap_tmpa_fp { 360*floor(\l__mermap_tmpa_fp/360) }
+ \fp_compare:nNnTF \l__mermap_tmpa_fp > \l__mermap_vic_westeast_fp
{
\prg_return_false:
}
{
- \fp_set:Nn \l__mermap_cs_x_fp { \l_tmpa_fp*\l__mermap_cs_xfactor_fp - \l__mermap_vic_dim_fp }
+ \fp_set:Nn \l__mermap_cs_x_fp { \l__mermap_tmpa_fp*\l__mermap_cs_xfactor_fp - \l__mermap_vic_dim_fp }
\__mermap_latitude_to_y:n {#1}
\pgfnoderename{mrclastpos}{mrcpos}
\pgfcoordinate{mrcpos}{
@@ -443,19 +445,13 @@
\NewExpandableDocumentCommand \mrcNPlat { m }
{
- \cs_if_exist_use:cF{__mermap__lat__#1}
- {
- \msg_error:nnx{ mercatormap }{ np-undefined }{ #1 }
- }
+ \cs_if_exist_use:cF{ __mermap__lat__#1 }{ 0 }
}
\NewExpandableDocumentCommand \mrcNPlon { m }
{
- \cs_if_exist_use:cF{__mermap__lon__#1}
- {
- \msg_error:nnx{ mercatormap }{ np-undefined }{ #1 }
- }
+ \cs_if_exist_use:cF{ __mermap__lon__#1 }{ 0 }
}
@@ -465,15 +461,75 @@
}
+\prg_new_conditional:Npnn \__mermap_if_NP_exists:n #1 { p, TF }
+ {
+ \cs_if_exist:cTF{ __mermap__lat__#1 }
+ {
+ \cs_if_exist:cTF{ __mermap__lon__#1 }
+ {
+ \prg_return_true:
+ }
+ {
+ \prg_return_false:
+ }
+ }
+ {
+ \prg_return_false:
+ }
+ }
+
+
+\NewDocumentCommand{\ifmrcNPexists}{ m }
+ {
+ \__mermap_if_NP_exists:nTF{ #1 }
+ }
+
+
+\prg_new_conditional:Npnn \__mermap_if_NP_in_map:n #1 { p, TF }
+ {
+ \__mermap_if_NP_exists:nTF { #1 }
+ {
+ \__mermap_if_in_map:nnTF{ \mrcNPlat{#1} }{ \mrcNPlon{#1} }
+ {
+ \prg_return_true:
+ }
+ {
+ \prg_return_false:
+ }
+ }
+ {
+ \prg_return_false:
+ }
+ }
+
+
\NewDocumentCommand{\ifmrcNPinmap}{ m }
{
- \__mermap_if_in_map:nnTF{\mrcNPlat{#1}}{\mrcNPlon{#1}}
+ \__mermap_if_NP_in_map:nTF { #1 }
+ }
+
+
+\prg_new_conditional:Npnn \__mermap_if_NP_in_vicinity:n #1 { p, TF }
+ {
+ \__mermap_if_NP_exists:nTF { #1 }
+ {
+ \__mermap_if_in_vicinity:nnTF{ \mrcNPlat{#1} }{ \mrcNPlon{#1} }
+ {
+ \prg_return_true:
+ }
+ {
+ \prg_return_false:
+ }
+ }
+ {
+ \prg_return_false:
+ }
}
\NewDocumentCommand{\ifmrcNPinvicinity}{ m }
{
- \__mermap_if_in_vicinity:nnTF{\mrcNPlat{#1}}{\mrcNPlon{#1}}
+ \__mermap_if_NP_in_vicinity:nTF{ #1 }
}
@@ -485,7 +541,7 @@
\char_set_catcode_other:n {`\"}
\tl_const:Nn \c__mermap_supply_call_boundaries_tl
- {%
+ {
\l__mermap_python_tl\c_space_tl boundaries
-u "\str_use:N\l__mermap_supply_url_str"
-at "\str_use:N\l__mermap_supply_attribution_str"
@@ -503,7 +559,7 @@
}
\tl_const:Nn \c__mermap_supply_call_reference_tl
- {%
+ {
\l__mermap_python_tl\c_space_tl reference
-u "\str_use:N\l__mermap_supply_url_str"
-at "\str_use:N\l__mermap_supply_attribution_str"
@@ -523,7 +579,7 @@
\tl_const:Nn \c__mermap_supply_call_areafit_tl
- {%
+ {
\l__mermap_python_tl\c_space_tl areafit
-u "\str_use:N\l__mermap_supply_url_str"
-at "\str_use:N\l__mermap_supply_attribution_str"
@@ -604,11 +660,11 @@
\cs_new:Npn \__mermap_supply_url_with_api_key:nnn #1#2#3
{
\str_set:Nn \l__mermap_supply_url_str {#1}
- \prop_get:NnNF \g__mermap_apikey_prop {#2} \l_tmpa_tl
+ \prop_get:NnNF \g__mermap_apikey_prop {#2} \l__mermap_tmpa_tl
{
\msg_error:nnx{ mercatormap }{ api-key-undefined }{ #2 }
}
- \str_put_right:NV \l__mermap_supply_url_str \l_tmpa_tl
+ \str_put_right:NV \l__mermap_supply_url_str \l__mermap_tmpa_tl
\str_put_right:Nn \l__mermap_supply_url_str {#3}
}
@@ -621,16 +677,16 @@
{
\msg_error:nnx{ mercatormap }{ np-undefined }{ ##1 }
}
- \fp_set:Nn \l_tmpa_fp { \mrcNPlat{##1} }
- \fp_compare:nNnT \l_tmpa_fp < \l__mermap_supply_south_fp
- { \fp_set_eq:NN \l__mermap_supply_south_fp \l_tmpa_fp }
- \fp_compare:nNnT \l_tmpa_fp > \l__mermap_supply_north_fp
- { \fp_set_eq:NN \l__mermap_supply_north_fp \l_tmpa_fp }
- \fp_set:Nn \l_tmpa_fp { \mrcNPlon{##1} }
- \fp_compare:nNnT \l_tmpa_fp < \l__mermap_supply_west_fp
- { \fp_set_eq:NN \l__mermap_supply_west_fp \l_tmpa_fp }
- \fp_compare:nNnT \l_tmpa_fp > \l__mermap_supply_east_fp
- { \fp_set_eq:NN \l__mermap_supply_east_fp \l_tmpa_fp }
+ \fp_set:Nn \l__mermap_tmpa_fp { \mrcNPlat{##1} }
+ \fp_compare:nNnT \l__mermap_tmpa_fp < \l__mermap_supply_south_fp
+ { \fp_set_eq:NN \l__mermap_supply_south_fp \l__mermap_tmpa_fp }
+ \fp_compare:nNnT \l__mermap_tmpa_fp > \l__mermap_supply_north_fp
+ { \fp_set_eq:NN \l__mermap_supply_north_fp \l__mermap_tmpa_fp }
+ \fp_set:Nn \l__mermap_tmpa_fp { \mrcNPlon{##1} }
+ \fp_compare:nNnT \l__mermap_tmpa_fp < \l__mermap_supply_west_fp
+ { \fp_set_eq:NN \l__mermap_supply_west_fp \l__mermap_tmpa_fp }
+ \fp_compare:nNnT \l__mermap_tmpa_fp > \l__mermap_supply_east_fp
+ { \fp_set_eq:NN \l__mermap_supply_east_fp \l__mermap_tmpa_fp }
}
}
@@ -662,14 +718,14 @@
{
\msg_error:nnn { mercatormap }{ input-area-marker }{ #1 }
}
- \tl_gset:Nx \g_tmpa_tl
+ \tl_gset:Nx \g__mermap_tmpa_tl
{
\exp_not:N\fp_set:Nn \exp_not:N\l__mermap_supply_west_fp { \fp_to_decimal:N\l__mermap_supply_west_fp }
\exp_not:N\fp_set:Nn \exp_not:N\l__mermap_supply_east_fp { \fp_to_decimal:N\l__mermap_supply_east_fp }
\exp_not:N\fp_set:Nn \exp_not:N\l__mermap_supply_south_fp { \fp_to_decimal:N\l__mermap_supply_south_fp }
\exp_not:N\fp_set:Nn \exp_not:N\l__mermap_supply_north_fp { \fp_to_decimal:N\l__mermap_supply_north_fp }
}
- \group_insert_after:N \g_tmpa_tl
+ \group_insert_after:N \g__mermap_tmpa_tl
\group_end:
}
@@ -715,18 +771,18 @@
_source .choice:,
area .code:n =
{
- \clist_set:Nn \l_tmpa_clist { #1 }
+ \clist_set:Nn \l__mermap_tmpa_clist { #1 }
\fp_set:Nn \l__mermap_supply_west_fp { inf }
\fp_set:Nn \l__mermap_supply_east_fp { -inf }
\fp_set:Nn \l__mermap_supply_south_fp { 89 }
\fp_set:Nn \l__mermap_supply_north_fp { -89 }
- \__mermap_supply_add_area_clist:N \l_tmpa_clist
+ \__mermap_supply_add_area_clist:N \l__mermap_tmpa_clist
},
area .value_required:n = true,
add~area .code:n =
{
- \clist_set:Nn \l_tmpa_clist { #1 }
- \__mermap_supply_add_area_clist:N \l_tmpa_clist
+ \clist_set:Nn \l__mermap_tmpa_clist { #1 }
+ \__mermap_supply_add_area_clist:N \l__mermap_tmpa_clist
},
area~from~marker~input .code:n =
{
@@ -756,20 +812,20 @@
flex~area~fit .code:n = {
\fp_compare:nNnF \l__mermap_tile_size_dim = \l__mermap_flex_tile_size_dim
{
- \fp_set:Nn \l_tmpa_fp { \l__mermap_tile_size_dim/\l__mermap_flex_tile_size_dim }
- \fp_set:Nn \l__mermap_supply_width_fp{\l__mermap_supply_width_fp*\l_tmpa_fp}
- \fp_set:Nn \l__mermap_supply_height_fp{\l__mermap_supply_height_fp*\l_tmpa_fp}
+ \fp_set:Nn \l__mermap_tmpa_fp { \l__mermap_tile_size_dim/\l__mermap_flex_tile_size_dim }
+ \fp_set:Nn \l__mermap_supply_width_fp{\l__mermap_supply_width_fp*\l__mermap_tmpa_fp}
+ \fp_set:Nn \l__mermap_supply_height_fp{\l__mermap_supply_height_fp*\l__mermap_tmpa_fp}
}
\fp_set:Nn \l__mermap_supply_width_fp{\l__mermap_supply_width_fp-(#1)/\l__mermap_flex_tile_size_dim}
\fp_set:Nn \l__mermap_supply_height_fp{\l__mermap_supply_height_fp-(#1)/\l__mermap_flex_tile_size_dim}
- \fp_set:Nn \l_tmpa_fp { min ( 180*\l__mermap_supply_width_fp / (\l__mermap_supply_east_fp-\l__mermap_supply_west_fp)
+ \fp_set:Nn \l__mermap_tmpa_fp { min ( 180*\l__mermap_supply_width_fp / (\l__mermap_supply_east_fp-\l__mermap_supply_west_fp)
, pi*\l__mermap_supply_height_fp / ln( tand(\l__mermap_supply_north_fp/2+45) / tand(\l__mermap_supply_south_fp/2+45) ) ) }
- \fp_set:Nn \l_tmpb_fp { ln(\l_tmpa_fp)/ln(2) }
- \fp_set:Nn \l_tmpb_fp { round(\l_tmpb_fp)/\l_tmpb_fp }
- \fp_set:Nn \l_tmpb_fp { \l_tmpa_fp^(\l_tmpb_fp-1+0.0000001) }
- \dim_set:Nn \l__mermap_tile_size_dim { \fp_to_dim:n { \l__mermap_flex_tile_size_dim / \l_tmpb_fp }}
- \fp_set:Nn \l__mermap_supply_width_fp { \l__mermap_supply_width_fp * \l_tmpb_fp + (#1)/\l__mermap_tile_size_dim }
- \fp_set:Nn \l__mermap_supply_height_fp { \l__mermap_supply_height_fp * \l_tmpb_fp + (#1)/\l__mermap_tile_size_dim }
+ \fp_set:Nn \l__mermap_tmpb_fp { ln(\l__mermap_tmpa_fp)/ln(2) }
+ \fp_set:Nn \l__mermap_tmpb_fp { round(\l__mermap_tmpb_fp)/\l__mermap_tmpb_fp }
+ \fp_set:Nn \l__mermap_tmpb_fp { \l__mermap_tmpa_fp^(\l__mermap_tmpb_fp-1+0.0000001) }
+ \dim_set:Nn \l__mermap_tile_size_dim { \fp_to_dim:n { \l__mermap_flex_tile_size_dim / \l__mermap_tmpb_fp }}
+ \fp_set:Nn \l__mermap_supply_width_fp { \l__mermap_supply_width_fp * \l__mermap_tmpb_fp + (#1)/\l__mermap_tile_size_dim }
+ \fp_set:Nn \l__mermap_supply_height_fp { \l__mermap_supply_height_fp * \l__mermap_tmpb_fp + (#1)/\l__mermap_tile_size_dim }
},
flex~area~fit .default:n = 0pt,
}
@@ -815,16 +871,13 @@
\msg_new:nnn { mercatormap }{ python-script }
- { Python~script~'maptiles.texpy'~is~created~(for~map~tile~download). }
+ { Python~script~'maptiles.texpy'~is~created~for~map~tile~download. }
\NewDocumentCommand \mrcactivatescript {}
{
\msg_info:nn { mercatormap }{ python-script }
- \group_begin:
- \def\@latex@warning@no@line##1{}% suppress filecontents warning
\file_input:n {\mrcpkgprefix mercatorpy.def}
- \group_end:
\bool_set_true:N \l__mermap_script_activated_bool
}
\@onlypreamble\mrcactivatescript
@@ -838,21 +891,21 @@
\cs_new:Npn \__mermap_create_definition_id:n #1
{
- \tl_set:Nx \l_tmpa_tl {#1}
- \tl_trim_spaces:N \l_tmpa_tl
- \str_set:Nx \l__mermap_definition_postfix_str {\tl_to_str:N \l_tmpa_tl}
+ \tl_set:Nx \l__mermap_tmpa_tl {#1}
+ \tl_trim_spaces:N \l__mermap_tmpa_tl
+ \str_set:Nx \l__mermap_definition_postfix_str {\tl_to_str:N \l__mermap_tmpa_tl}
\str_concat:NNN \l__mermap_definition_id_str
\l__mermap_definition_prefix_str \l__mermap_definition_postfix_str
}
\cs_new:Npn \__mermap_map:nn #1#2
{
- \tl_set:Nx \l_tmpa_tl {#2}
- \tl_trim_spaces:N \l_tmpa_tl
- \tl_if_empty:NT \l_tmpa_tl
+ \tl_set:Nx \l__mermap_tmpa_tl {#2}
+ \tl_trim_spaces:N \l__mermap_tmpa_tl
+ \tl_if_empty:NT \l__mermap_tmpa_tl
{
\int_gincr:N \g__mermap_automap_int
- \tl_set:Nx \l_tmpa_tl
+ \tl_set:Nx \l__mermap_tmpa_tl
{
automap-
\int_compare:nNnTF \g__mermap_automap_int<{10} {000}
@@ -865,7 +918,7 @@
\int_use:N \g__mermap_automap_int
}
}
- \str_set:Nx \l__mermap_definition_postfix_str {\tl_to_str:N \l_tmpa_tl}
+ \str_set:Nx \l__mermap_definition_postfix_str {\tl_to_str:N \l__mermap_tmpa_tl}
\str_concat:NNN \l__mermap_definition_id_str
\l__mermap_definition_prefix_str \l__mermap_definition_postfix_str
\__mermap_supplymap:n {#1}
@@ -886,12 +939,12 @@
{
\group_begin:
\keys_set:nn { mermap/supply } { #1 }
- \tl_set:Nx \l_tmpa_tl { \str_use:N\l__mermap_definition_id_str }
- \prop_if_in:NVT \g__mermap_definition_prop \l_tmpa_tl
+ \tl_set:Nx \l__mermap_tmpa_tl { \str_use:N\l__mermap_definition_id_str }
+ \prop_if_in:NVT \g__mermap_definition_prop \l__mermap_tmpa_tl
{
- \msg_warning:nnx { mercatormap }{ definition-id-used }{ \tl_use:N \l_tmpa_tl }
+ \msg_warning:nnx { mercatormap }{ definition-id-used }{ \tl_use:N \l__mermap_tmpa_tl }
}
- \prop_gput:NVn \g__mermap_definition_prop \l_tmpa_tl {}
+ \prop_gput:NVn \g__mermap_definition_prop \l__mermap_tmpa_tl {}
\bool_if:NT \l__mermap_script_activated_bool
{
\__mermap_supplymap_call:
@@ -927,10 +980,10 @@
\cs_new:Npn \__mermap_supplymap_call:
{
- \tl_set_eq:Nc \l_tmpa_tl {
+ \tl_set_eq:Nc \l__mermap_tmpa_tl {
c__mermap_supply_call_\l__mermap_supply_type_tl _tl }
- \tl_set:Nx \l__mermap_supply_call_tl \l_tmpa_tl
- \tl_set:Nx \l__mermap_mdfivesum_tl { \pdf@mdfivesum{\l__mermap_supply_call_tl} }
+ \tl_set:Nx \l__mermap_supply_call_tl \l__mermap_tmpa_tl
+ \tl_set:Nx \l__mermap_mdfivesum_tl { \str_mdfive_hash:e{\l__mermap_supply_call_tl} }
\file_if_exist:nTF {\l__mermap_definition_id_str.def}
{
\tl_clear:N \l__mermap_last_mdfivesum_tl
@@ -1031,8 +1084,8 @@
\cs_new_nopar:Npn \__mermap_set_flex_scale:nn #1#2
{
- \fp_set:Nn \l_tmpa_fp { 1+ln(\c__mermap_mean_radius_fp/#1*cosd(#2)*pi/\l__mermap_flex_tile_size_dim)/ln(2) }
- \keys_set:nn { mermap }{ flex~zoom=\l_tmpa_fp }
+ \fp_set:Nn \l__mermap_tmpa_fp { 1+ln(\c__mermap_mean_radius_fp/#1*cosd(#2)*pi/\l__mermap_flex_tile_size_dim)/ln(2) }
+ \keys_set:nn { mermap }{ flex~zoom=\l__mermap_tmpa_fp }
}
\use:x
@@ -1323,19 +1376,19 @@
\cs_new_nopar:Npn \__mermap_compute_network_step:nn #1#2
{
- \fp_set:Nn \l_tmpa_fp
+ \fp_set:Nn \l__mermap_tmpa_fp
{
min ( \l__mermap_network_pieces_int, round((#1)/\l__mermap_network_distance_dim) )
}
- \fp_set:Nn \l_tmpb_fp { (#2)/\l_tmpa_fp }
- \fp_set:Nn \l_tmpa_fp { floor(ln(\l_tmpb_fp)/ln(10)) }
- \fp_compare:nNnTF {\l_tmpa_fp} < {0}
+ \fp_set:Nn \l__mermap_tmpb_fp { (#2)/\l__mermap_tmpa_fp }
+ \fp_set:Nn \l__mermap_tmpa_fp { floor(ln(\l__mermap_tmpb_fp)/ln(10)) }
+ \fp_compare:nNnTF {\l__mermap_tmpa_fp} < {0}
{
- \fp_compare:nNnTF {\l_tmpa_fp} > {-5}
+ \fp_compare:nNnTF {\l__mermap_tmpa_fp} > {-5}
{
\use:x
{
- \exp_not:N\keys_set:nn { mermap }{ format~angle=decimal\fp_to_int:N\l_tmpa_fp}
+ \exp_not:N\keys_set:nn { mermap }{ format~angle=decimal\fp_to_int:N\l__mermap_tmpa_fp}
}
}
{
@@ -1345,25 +1398,25 @@
{
\keys_set:nn { mermap }{ format~angle=decimal-0 }
}
- \fp_set:Nn \l_tmpa_fp { 10^\l_tmpa_fp }
- \fp_set:Nn \l_tmpb_fp { \l_tmpb_fp/\l_tmpa_fp }
- \fp_compare:nNnTF {abs(\l_tmpb_fp-1)} < {abs(\l_tmpb_fp-2)}
+ \fp_set:Nn \l__mermap_tmpa_fp { 10^\l__mermap_tmpa_fp }
+ \fp_set:Nn \l__mermap_tmpb_fp { \l__mermap_tmpb_fp/\l__mermap_tmpa_fp }
+ \fp_compare:nNnTF {abs(\l__mermap_tmpb_fp-1)} < {abs(\l__mermap_tmpb_fp-2)}
{
- \fp_compare:nNnTF {abs(\l_tmpb_fp-1)} < {abs(\l_tmpb_fp-5)}
+ \fp_compare:nNnTF {abs(\l__mermap_tmpb_fp-1)} < {abs(\l__mermap_tmpb_fp-5)}
{
- \fp_set:Nn \l__mermap_result_fp {\l_tmpa_fp}
+ \fp_set:Nn \l__mermap_result_fp {\l__mermap_tmpa_fp}
}
{
- \fp_set:Nn \l__mermap_result_fp {5*\l_tmpa_fp}
+ \fp_set:Nn \l__mermap_result_fp {5*\l__mermap_tmpa_fp}
}
}
{
- \fp_compare:nNnTF {abs(\l_tmpb_fp-2)} < {abs(\l_tmpb_fp-5)}
+ \fp_compare:nNnTF {abs(\l__mermap_tmpb_fp-2)} < {abs(\l__mermap_tmpb_fp-5)}
{
- \fp_set:Nn \l__mermap_result_fp {2*\l_tmpa_fp}
+ \fp_set:Nn \l__mermap_result_fp {2*\l__mermap_tmpa_fp}
}
{
- \fp_set:Nn \l__mermap_result_fp {5*\l_tmpa_fp}
+ \fp_set:Nn \l__mermap_result_fp {5*\l__mermap_tmpa_fp}
}
}
}
@@ -1376,46 +1429,46 @@
\IfNoValueF {#1} { \keys_set:nn { mermap } {#1} }
\tl_use:N \l__mermap_tikz_map_clip_tl
\__mermap_compute_network_step:nn {\l__mermap_tex_height_fp}{\l__mermap_mapnorth_fp-\l__mermap_mapsouth_fp}
- \fp_set:Nn \l_tmpa_fp { ceil(\l__mermap_mapsouth_fp/\l__mermap_result_fp)*\l__mermap_result_fp}
- \fp_compare:nNnT {\l_tmpa_fp-\l__mermap_mapsouth_fp} < {1e-10}
+ \fp_set:Nn \l__mermap_tmpa_fp { ceil(\l__mermap_mapsouth_fp/\l__mermap_result_fp)*\l__mermap_result_fp}
+ \fp_compare:nNnT {\l__mermap_tmpa_fp-\l__mermap_mapsouth_fp} < {1e-10}
{
- \fp_add:Nn \l_tmpa_fp {\l__mermap_result_fp}
+ \fp_add:Nn \l__mermap_tmpa_fp {\l__mermap_result_fp}
}
- \fp_while_do:nNnn {\l_tmpa_fp} < {\l__mermap_mapnorth_fp}
+ \fp_while_do:nNnn {\l__mermap_tmpa_fp} < {\l__mermap_mapnorth_fp}
{
- \tl_set:Nn \l_tmpa_tl {\fp_use:N\l_tmpa_fp}
- \draw[gray,very~thin] (mrc~cs\c_colon_str lat=\l_tmpa_tl,lon=\mrcmapwest)
+ \tl_set:Nn \l__mermap_tmpa_tl {\fp_use:N\l__mermap_tmpa_fp}
+ \draw[gray,very~thin] (mrc~cs\c_colon_str lat=\l__mermap_tmpa_tl,lon=\mrcmapwest)
coordinate (mermap_temp)
node[right=1mm,inner~sep=0.5pt,black!50!gray,font=\l__mermap_network_font_tl,
fill=white,opacity=0.3,text~opacity=1,
- ]{\mrcformlat{\l_tmpa_tl}}
+ ]{\mrcformlat{\l__mermap_tmpa_tl}}
-- (mermap_temp -| mrcmap.east)
node[left=1mm,inner~sep=0.5pt,black!50!gray,font=\l__mermap_network_font_tl,
fill=white,opacity=0.3,text~opacity=1,
- ]{\mrcformlat{\l_tmpa_tl}}
+ ]{\mrcformlat{\l__mermap_tmpa_tl}}
;
- \fp_add:Nn \l_tmpa_fp {\l__mermap_result_fp}
+ \fp_add:Nn \l__mermap_tmpa_fp {\l__mermap_result_fp}
}
\__mermap_compute_network_step:nn {\l__mermap_tex_width_fp}{\l__mermap_mapeast_fp-\l__mermap_mapwest_fp}
- \fp_set:Nn \l_tmpa_fp { ceil(\l__mermap_mapwest_fp/\l__mermap_result_fp)*\l__mermap_result_fp}
- \fp_compare:nNnT {\l_tmpa_fp-\l__mermap_mapwest_fp} < {1e-10}
+ \fp_set:Nn \l__mermap_tmpa_fp { ceil(\l__mermap_mapwest_fp/\l__mermap_result_fp)*\l__mermap_result_fp}
+ \fp_compare:nNnT {\l__mermap_tmpa_fp-\l__mermap_mapwest_fp} < {1e-10}
{
- \fp_add:Nn \l_tmpa_fp {\l__mermap_result_fp}
+ \fp_add:Nn \l__mermap_tmpa_fp {\l__mermap_result_fp}
}
- \fp_while_do:nNnn {\l_tmpa_fp} < {\l__mermap_mapeast_fp}
+ \fp_while_do:nNnn {\l__mermap_tmpa_fp} < {\l__mermap_mapeast_fp}
{
- \tl_set:Nn \l_tmpa_tl {\fp_use:N\l_tmpa_fp}
- \draw[gray,very~thin] (mrc~cs\c_colon_str lon=\l_tmpa_tl,lat=\mrcmapsouth)
+ \tl_set:Nn \l__mermap_tmpa_tl {\fp_use:N\l__mermap_tmpa_fp}
+ \draw[gray,very~thin] (mrc~cs\c_colon_str lon=\l__mermap_tmpa_tl,lat=\mrcmapsouth)
coordinate (mermap_temp)
node[above=1mm,inner~sep=0.5pt,black!50!gray,font=\l__mermap_network_font_tl,
fill=white,opacity=0.3,text~opacity=1,
- ]{\mrcformlon{\l_tmpa_tl}}
+ ]{\mrcformlon{\l__mermap_tmpa_tl}}
-- (mermap_temp |- mrcmap.north)
node[below=1mm,inner~sep=0.5pt,black!50!gray,font=\l__mermap_network_font_tl,
fill=white,opacity=0.3,text~opacity=1,
- ]{\mrcformlon{\l_tmpa_tl}}
+ ]{\mrcformlon{\l__mermap_tmpa_tl}}
;
- \fp_add:Nn \l_tmpa_fp {\l__mermap_result_fp}
+ \fp_add:Nn \l__mermap_tmpa_fp {\l__mermap_result_fp}
}
\end{scope}
}
@@ -1488,26 +1541,26 @@
\cs_new_nopar:Npn \__mermap_pretty_distance:n #1
{
- \fp_set:Nn \l_tmpa_fp { #1 }
- \fp_compare:nNnTF \l_tmpa_fp < 5
+ \fp_set:Nn \l__mermap_tmpa_fp { #1 }
+ \fp_compare:nNnTF \l__mermap_tmpa_fp < 5
{
- \SI[round-mode=figures,round-precision=3,detect-all]{\fp_to_decimal:n{1000*\l_tmpa_fp}}{\meter}
+ \SI[round-mode=figures,round-precision=3,detect-all]{\fp_to_decimal:n{1000*\l__mermap_tmpa_fp}}{\meter}
}
{
- \SI[round-mode=figures,round-precision=3,detect-all]{\fp_to_decimal:N \l_tmpa_fp}{\kilo\meter}
+ \SI[round-mode=figures,round-precision=3,detect-all]{\fp_to_decimal:N \l__mermap_tmpa_fp}{\kilo\meter}
}
}
\cs_new_nopar:Npn \__mermap_pretty_length:n #1
{
- \fp_set:Nn \l_tmpa_fp { (#1)*\l__mermap_scale_fp }
- \fp_compare:nNnTF \l_tmpa_fp < 5
+ \fp_set:Nn \l__mermap_tmpa_fp { (#1)*\l__mermap_scale_fp }
+ \fp_compare:nNnTF \l__mermap_tmpa_fp < 5
{
- \SI[round-mode=figures,round-precision=3,detect-all]{\fp_to_decimal:n{1000*\l_tmpa_fp}}{\meter}
+ \SI[round-mode=figures,round-precision=3,detect-all]{\fp_to_decimal:n{1000*\l__mermap_tmpa_fp}}{\meter}
}
{
- \SI[round-mode=figures,round-precision=3,detect-all]{\fp_to_decimal:N \l_tmpa_fp}{\kilo\meter}
+ \SI[round-mode=figures,round-precision=3,detect-all]{\fp_to_decimal:N \l__mermap_tmpa_fp}{\kilo\meter}
}
}
@@ -1535,25 +1588,25 @@
\cs_new_nopar:Npn \__mermap_format_angle_minute:n #1
{
- \fp_set:Nn \l_tmpa_fp {floor(#1)}
- \fp_set:Nn \l_tmpb_fp {round((#1-\l_tmpa_fp)*60)}
+ \fp_set:Nn \l__mermap_tmpa_fp {floor(#1)}
+ \fp_set:Nn \l__mermap_tmpb_fp {round((#1-\l__mermap_tmpa_fp)*60)}
\ang[add-arc-degree-zero,add-arc-minute-zero]
{
- \fp_to_int:N \l_tmpa_fp ;
- \fp_to_int:N \l_tmpb_fp ;
+ \fp_to_int:N \l__mermap_tmpa_fp ;
+ \fp_to_int:N \l__mermap_tmpb_fp ;
}
}
\cs_new_nopar:Npn \__mermap_format_angle_second:n #1
{
- \fp_set:Nn \l_tmpa_fp {floor(#1)}
- \fp_set:Nn \l_tmpb_fp {floor((#1-\l_tmpa_fp)*60)}
+ \fp_set:Nn \l__mermap_tmpa_fp {floor(#1)}
+ \fp_set:Nn \l__mermap_tmpb_fp {floor((#1-\l__mermap_tmpa_fp)*60)}
\ang[add-arc-degree-zero,add-arc-minute-zero]
{
- \fp_to_int:N \l_tmpa_fp ;
- \fp_to_int:N \l_tmpb_fp ;
- \fp_to_int:n {round(((#1-\l_tmpa_fp)*60-\l_tmpb_fp)*60)}
+ \fp_to_int:N \l__mermap_tmpa_fp ;
+ \fp_to_int:N \l__mermap_tmpb_fp ;
+ \fp_to_int:n {round(((#1-\l__mermap_tmpa_fp)*60-\l__mermap_tmpb_fp)*60)}
}
}
@@ -1562,14 +1615,14 @@
\group_begin:
\IfNoValueF {#1}
{ \keys_set:nn { mermap } {#1} }
- \fp_set:Nn \l_tmpa_fp {#2}
- \fp_compare:nNnTF \l_tmpa_fp < 0
+ \fp_set:Nn \l__mermap_tmpa_fp {#2}
+ \fp_compare:nNnTF \l__mermap_tmpa_fp < 0
{
- \tl_set:Nx \l__mermap_temp_tl {\fp_to_decimal:n{-\l_tmpa_fp}}
+ \tl_set:Nx \l__mermap_temp_tl {\fp_to_decimal:n{-\l__mermap_tmpa_fp}}
\__mermap_format_south:n {\__mermap_format_angle:n{\l__mermap_temp_tl}}
}
{
- \tl_set:Nx \l__mermap_temp_tl {\fp_to_decimal:N \l_tmpa_fp}
+ \tl_set:Nx \l__mermap_temp_tl {\fp_to_decimal:N \l__mermap_tmpa_fp}
\__mermap_format_north:n {\__mermap_format_angle:n{\l__mermap_temp_tl}}
}
\group_end:
@@ -1580,14 +1633,14 @@
\group_begin:
\IfNoValueF {#1}
{ \keys_set:nn { mermap } {#1} }
- \fp_set:Nn \l_tmpa_fp {#2-360*floor((#2+180)/360)}
- \fp_compare:nNnTF \l_tmpa_fp < 0
+ \fp_set:Nn \l__mermap_tmpa_fp {#2-360*floor((#2+180)/360)}
+ \fp_compare:nNnTF \l__mermap_tmpa_fp < 0
{
- \tl_set:Nx \l__mermap_temp_tl {\fp_to_decimal:n{-\l_tmpa_fp}}
+ \tl_set:Nx \l__mermap_temp_tl {\fp_to_decimal:n{-\l__mermap_tmpa_fp}}
\__mermap_format_west:n{\__mermap_format_angle:n{\l__mermap_temp_tl}}
}
{
- \tl_set:Nx \l__mermap_temp_tl {\fp_to_decimal:N \l_tmpa_fp}
+ \tl_set:Nx \l__mermap_temp_tl {\fp_to_decimal:N \l__mermap_tmpa_fp}
\__mermap_format_east:n {\__mermap_format_angle:n{\l__mermap_temp_tl}}
}
\group_end:
@@ -1608,22 +1661,22 @@
{
\tl_if_empty:nTF {#5}
{
- \fp_set:Nn \l_tmpa_fp {0}
- \fp_set:Nn \l_tmpb_fp {0}
+ \fp_set:Nn \l__mermap_tmpa_fp {0}
+ \fp_set:Nn \l__mermap_tmpb_fp {0}
}
{
- \fp_set:Nn \l_tmpa_fp {#3*(#5)}
+ \fp_set:Nn \l__mermap_tmpa_fp {#3*(#5)}
\tl_if_empty:nTF {#6}
{
- \fp_set:Nn \l_tmpb_fp {#4*(#5)}
+ \fp_set:Nn \l__mermap_tmpb_fp {#4*(#5)}
}
{
- \fp_set:Nn \l_tmpb_fp {#4*(#6)}
+ \fp_set:Nn \l__mermap_tmpb_fp {#4*(#6)}
}
}
\tl_set:Nx \l__mermap_scalebar_at_tl
{
- {([xshift=\fp_to_dim:N\l_tmpa_fp,yshift=\fp_to_dim:N\l_tmpb_fp]mrcmap.#1)}
+ {([xshift=\fp_to_dim:N\l__mermap_tmpa_fp,yshift=\fp_to_dim:N\l__mermap_tmpb_fp]mrcmap.#1)}
}
\tl_set:Nn \l__mermap_scalebar_placement_tl {#2}
}
@@ -1691,60 +1744,56 @@
\begin{scope}[shift=(mrcscalebar.south~west)]
\__mermap_tikz_path_begin:n { fill=black, mrcscalebarmajor }
\pgfseteorule
- \fp_set:Nn \l_tmpa_fp {\l__mermap_scalebar_width_fp/\l__mermap_scale_fp} % Breite
+ \fp_set:Nn \l__mermap_tmpa_fp {\l__mermap_scalebar_width_fp/\l__mermap_scale_fp} % Breite
\pgfpathrectangle{\pgfpoint{0pt}{0pt}}
- {\pgfpoint{\fp_to_dim:N\l_tmpa_fp}{\l__mermap_scalebar_height_dim}}
+ {\pgfpoint{\fp_to_dim:N\l__mermap_tmpa_fp}{\l__mermap_scalebar_height_dim}}
\bool_if:NF \l__mermap_scalebar_transparent_bool
{
\__mermap_tikz_path_end:
\__mermap_tikz_path_begin:n { fill=white, mrcscalebarminor }
- \fp_set:Nn \l_tmpa_fp {\l__mermap_scalebar_width_fp/\l__mermap_scale_fp}
+ \fp_set:Nn \l__mermap_tmpa_fp {\l__mermap_scalebar_width_fp/\l__mermap_scale_fp}
}
- \fp_set:Nn \l_tmpb_fp {\l_tmpa_fp/\l__mermap_scalebar_partitions_int}
+ \fp_set:Nn \l__mermap_tmpb_fp {\l__mermap_tmpa_fp/\l__mermap_scalebar_partitions_int}
\bool_if:NTF \l__mermap_scalebar_double_bool
{
- \int_set:Nn \l_tmpa_int {1}
- \dim_set:Nn \l_tmpb_dim {\l__mermap_scalebar_height_dim/2}
- \dim_set:Nn \l_tmpa_dim {0.2pt-\l_tmpb_dim}
+ \dim_set:Nn \l__mermap_tmpb_dim {\l__mermap_scalebar_height_dim/2}
+ \dim_set:Nn \l__mermap_tmpa_dim {0.2pt-\l__mermap_tmpb_dim}
\int_compare:nNnTF \l__mermap_scalebar_partitions_int = 1
{
- \pgfpathrectangle{\pgfpoint{0.2pt}{\l_tmpb_dim}}
- {\pgfpoint{\fp_to_dim:n{\l_tmpb_fp-0.4pt}}{\l_tmpa_dim}}
+ \pgfpathrectangle{\pgfpoint{0.2pt}{\l__mermap_tmpb_dim}}
+ {\pgfpoint{\fp_to_dim:n{\l__mermap_tmpb_fp-0.4pt}}{\l__mermap_tmpa_dim}}
}
{
- \pgfpathrectangle{\pgfpoint{0.2pt}{\l_tmpb_dim}}
- {\pgfpoint{\fp_to_dim:n{\l_tmpb_fp-0.2pt}}{\l_tmpa_dim}}
+ \pgfpathrectangle{\pgfpoint{0.2pt}{\l__mermap_tmpb_dim}}
+ {\pgfpoint{\fp_to_dim:n{\l__mermap_tmpb_fp-0.2pt}}{\l__mermap_tmpa_dim}}
}
- \int_while_do:nNnn \l_tmpa_int < \l__mermap_scalebar_partitions_int
+ \int_step_inline:nn { \l__mermap_scalebar_partitions_int-1 }
{
- \dim_set:Nn \l_tmpa_dim {-\l_tmpa_dim}
- \int_compare:nNnTF {\l_tmpa_int+1} = \l__mermap_scalebar_partitions_int
+ \dim_set:Nn \l__mermap_tmpa_dim {-\l__mermap_tmpa_dim}
+ \int_compare:nNnTF {##1+1} = \l__mermap_scalebar_partitions_int
{
- \pgfpathrectangle{\pgfpoint{\fp_to_dim:n{\l_tmpa_int*\l_tmpb_fp}}{\l_tmpb_dim}}
- {\pgfpoint{\fp_to_dim:n{\l_tmpb_fp-0.2pt}}{\l_tmpa_dim}}
+ \pgfpathrectangle{\pgfpoint{\fp_to_dim:n{##1*\l__mermap_tmpb_fp}}{\l__mermap_tmpb_dim}}
+ {\pgfpoint{\fp_to_dim:n{\l__mermap_tmpb_fp-0.2pt}}{\l__mermap_tmpa_dim}}
}
{
- \pgfpathrectangle{\pgfpoint{\fp_to_dim:n{\l_tmpa_int*\l_tmpb_fp}}{\l_tmpb_dim}}
- {\pgfpoint{\fp_to_dim:N\l_tmpb_fp}{\l_tmpa_dim}}
+ \pgfpathrectangle{\pgfpoint{\fp_to_dim:n{##1*\l__mermap_tmpb_fp}}{\l__mermap_tmpb_dim}}
+ {\pgfpoint{\fp_to_dim:N\l__mermap_tmpb_fp}{\l__mermap_tmpa_dim}}
}
- \int_incr:N \l_tmpa_int
}
}
{
- \int_set:Nn \l_tmpa_int {1}
- \dim_set:Nn \l_tmpa_dim {\l__mermap_scalebar_height_dim-0.4pt}
- \int_while_do:nNnn \l_tmpa_int < \l__mermap_scalebar_partitions_int
+ \dim_set:Nn \l__mermap_tmpa_dim {\l__mermap_scalebar_height_dim-0.4pt}
+ \int_step_inline:nnnn { 1 }{ 2 }{ \l__mermap_scalebar_partitions_int-1 }
{
- \int_compare:nNnTF {\l_tmpa_int+1} = \l__mermap_scalebar_partitions_int
+ \int_compare:nNnTF {##1+1} = \l__mermap_scalebar_partitions_int
{
- \pgfpathrectangle{\pgfpoint{\fp_to_dim:n{\l_tmpa_int*\l_tmpb_fp}}{0.2pt}}
- {\pgfpoint{\fp_to_dim:n{\l_tmpb_fp-0.2pt}}{\l_tmpa_dim}}
+ \pgfpathrectangle{\pgfpoint{\fp_to_dim:n{##1*\l__mermap_tmpb_fp}}{0.2pt}}
+ {\pgfpoint{\fp_to_dim:n{\l__mermap_tmpb_fp-0.2pt}}{\l__mermap_tmpa_dim}}
}
{
- \pgfpathrectangle{\pgfpoint{\fp_to_dim:n{\l_tmpa_int*\l_tmpb_fp}}{0.2pt}}
- {\pgfpoint{\fp_to_dim:N\l_tmpb_fp}{\l_tmpa_dim}}
+ \pgfpathrectangle{\pgfpoint{\fp_to_dim:n{##1*\l__mermap_tmpb_fp}}{0.2pt}}
+ {\pgfpoint{\fp_to_dim:N\l__mermap_tmpb_fp}{\l__mermap_tmpa_dim}}
}
- \int_add:Nn \l_tmpa_int {2}
}
}
\__mermap_tikz_path_end:
@@ -2032,53 +2081,53 @@
\__mermap_new_marker_type:nn {pin}
{
- \tl_set:Nx \l_tmpa_tl {\fp_to_dim:N \l__mermap_marker_distance_fp}
+ \tl_set:Nx \l__mermap_tmpa_tl {\fp_to_dim:N \l__mermap_marker_distance_fp}
\path[fill=mrcmarkerfill,draw=none,fill~opacity=0.7]
- (0,0) -- (0.1,\l_tmpa_tl) -- (-0.1,\l_tmpa_tl) -- cycle;
+ (0,0) -- (0.1,\l__mermap_tmpa_tl) -- (-0.1,\l__mermap_tmpa_tl) -- cycle;
\node[fill=white,draw=none,text=mrcmarkertext,
above,font=\mrcmarkerfont,inner~sep=0.5mm,align=center,
line~width=0mm,xshift=\mrcmarkershift,
fill~opacity=0.7,text~opacity=1,xshift=0mm,mrcnodestyle,mrchyperpath]
- (pin_node) at (0,\l_tmpa_tl) {\mrcmarkercontents};
+ (pin_node) at (0,\l__mermap_tmpa_tl) {\mrcmarkercontents};
\path[draw=mrcmarkerdraw,fill=none,line~join=round,mrcpathstyle]
- (0,0) -- (0.1,\l_tmpa_tl) -- (pin_node.south~east) -- (pin_node.north~east)
+ (0,0) -- (0.1,\l__mermap_tmpa_tl) -- (pin_node.south~east) -- (pin_node.north~east)
-- (pin_node.north~west) -- (pin_node.south~west)
- -- (-0.1,\l_tmpa_tl) [line~join=bevel] -- cycle;
+ -- (-0.1,\l__mermap_tmpa_tl) [line~join=bevel] -- cycle;
}
\__mermap_new_marker_type:nn {pinflip}
{
- \tl_set:Nx \l_tmpa_tl {\fp_to_dim:N \l__mermap_marker_distance_fp}
+ \tl_set:Nx \l__mermap_tmpa_tl {\fp_to_dim:N \l__mermap_marker_distance_fp}
\path[fill=mrcmarkerfill,draw=none,fill~opacity=0.7]
- (0,0) -- (-0.1,-\l_tmpa_tl) -- (0.1,-\l_tmpa_tl) -- cycle;
+ (0,0) -- (-0.1,-\l__mermap_tmpa_tl) -- (0.1,-\l__mermap_tmpa_tl) -- cycle;
\node[fill=white,draw=none,text=mrcmarkertext,
below,font=\mrcmarkerfont,inner~sep=0.5mm,align=center,
line~width=0mm,xshift=\mrcmarkershift,
fill~opacity=0.7,text~opacity=1,xshift=0mm,mrcnodestyle,mrchyperpath]
- (pin_node) at (0,-\l_tmpa_tl) {\mrcmarkercontents};
+ (pin_node) at (0,-\l__mermap_tmpa_tl) {\mrcmarkercontents};
\path[draw=mrcmarkerdraw,fill=none,line~join=round,mrcpathstyle]
- (0,0) -- (-0.1,-\l_tmpa_tl) -- (pin_node.north~west) -- (pin_node.south~west)
+ (0,0) -- (-0.1,-\l__mermap_tmpa_tl) -- (pin_node.north~west) -- (pin_node.south~west)
-- (pin_node.south~east) -- (pin_node.north~east)
- -- (0.1,-\l_tmpa_tl) [line~join=bevel] -- cycle;
+ -- (0.1,-\l__mermap_tmpa_tl) [line~join=bevel] -- cycle;
}
\cs_new_nopar:Npn \__mermap_tikz_drop_path:n #1
{
- \tl_set:Nn \l_tmpa_tl {\fp_to_dim:N\l__mermap_marker_radius_fp}
- \tl_set:Nn \l_tmpb_tl {\fp_to_dim:n{\l__mermap_marker_radius_fp*0.552}}
+ \tl_set:Nn \l__mermap_tmpa_tl {\fp_to_dim:N\l__mermap_marker_radius_fp}
+ \tl_set:Nn \l__mermap_tmpb_tl {\fp_to_dim:n{\l__mermap_marker_radius_fp*0.552}}
\__mermap_tikz_path_begin:n
{
line~join=bevel,draw=mrcmarkerdraw,fill=mrcmarkerfill,mrcpathstyle,mrchyperpath
}
\pgfpathmoveto{\pgfpoint{0pt}{\fp_to_dim:n{-2*\l__mermap_marker_radius_fp-\l__mermap_marker_shift_fp}}}
- \pgfpathcurveto{\pgfpoint{\l_tmpb_tl}{-\l_tmpa_tl}}{\pgfpoint{\l_tmpa_tl}{-\l_tmpb_tl}}
- {\pgfpoint{\l_tmpa_tl}{0pt}}
- \pgfpathcurveto{\pgfpoint{\l_tmpa_tl}{\l_tmpb_tl}}{\pgfpoint{\l_tmpb_tl}{\l_tmpa_tl}}
- {\pgfpoint{0pt}{\l_tmpa_tl}}
- \pgfpathcurveto{\pgfpoint{-\l_tmpb_tl}{\l_tmpa_tl}}{\pgfpoint{-\l_tmpa_tl}{\l_tmpb_tl}}
- {\pgfpoint{-\l_tmpa_tl}{0pt}}
- \pgfpathcurveto{\pgfpoint{-\l_tmpa_tl}{-\l_tmpb_tl}}{\pgfpoint{-\l_tmpb_tl}{-\l_tmpa_tl}}
+ \pgfpathcurveto{\pgfpoint{\l__mermap_tmpb_tl}{-\l__mermap_tmpa_tl}}{\pgfpoint{\l__mermap_tmpa_tl}{-\l__mermap_tmpb_tl}}
+ {\pgfpoint{\l__mermap_tmpa_tl}{0pt}}
+ \pgfpathcurveto{\pgfpoint{\l__mermap_tmpa_tl}{\l__mermap_tmpb_tl}}{\pgfpoint{\l__mermap_tmpb_tl}{\l__mermap_tmpa_tl}}
+ {\pgfpoint{0pt}{\l__mermap_tmpa_tl}}
+ \pgfpathcurveto{\pgfpoint{-\l__mermap_tmpb_tl}{\l__mermap_tmpa_tl}}{\pgfpoint{-\l__mermap_tmpa_tl}{\l__mermap_tmpb_tl}}
+ {\pgfpoint{-\l__mermap_tmpa_tl}{0pt}}
+ \pgfpathcurveto{\pgfpoint{-\l__mermap_tmpa_tl}{-\l__mermap_tmpb_tl}}{\pgfpoint{-\l__mermap_tmpb_tl}{-\l__mermap_tmpa_tl}}
{\pgfpoint{0pt}{\fp_to_dim:n{-2*\l__mermap_marker_radius_fp-\l__mermap_marker_shift_fp}}}
\pgfpathclose
#1
@@ -2089,14 +2138,14 @@
{
\node[circle,inner~sep=0pt,font=\mrcmarkerfont,text=mrcmarkertext,mrcnodestyle]
{
- \hbox_set:Nn \l_tmpa_box {\mrcmarkercontents}
- \fp_compare:nNnT {\box_wd:N \l_tmpa_box} > {1.5*\l__mermap_marker_radius_fp}
+ \hbox_set:Nn \l__mermap_tmpa_box {\mrcmarkercontents}
+ \fp_compare:nNnT {\box_wd:N \l__mermap_tmpa_box} > {1.5*\l__mermap_marker_radius_fp}
{
- \box_resize_to_wd_and_ht:Nnn \l_tmpa_box
+ \box_resize_to_wd_and_ht:Nnn \l__mermap_tmpa_box
{\fp_to_dim:n {1.5*\l__mermap_marker_radius_fp}}
- {\box_ht:N \l_tmpa_box}
+ {\box_ht:N \l__mermap_tmpa_box}
}
- \box_use_drop:N \l_tmpa_box
+ \box_use_drop:N \l__mermap_tmpa_box
};
}
@@ -2153,22 +2202,22 @@
\__mermap_new_marker_type:nn {ringx}
{
- \tl_set:Nn \l_tmpa_tl {\fp_to_dim:N\l__mermap_marker_radius_fp}
+ \tl_set:Nn \l__mermap_tmpa_tl {\fp_to_dim:N\l__mermap_marker_radius_fp}
\path[draw=mrcmarkerdraw,very~thin]
- (45 \c_colon_str \l_tmpa_tl)--(225\c_colon_str \l_tmpa_tl)
- (135\c_colon_str \l_tmpa_tl)--(315\c_colon_str \l_tmpa_tl);
+ (45 \c_colon_str \l__mermap_tmpa_tl)--(225\c_colon_str \l__mermap_tmpa_tl)
+ (135\c_colon_str \l__mermap_tmpa_tl)--(315\c_colon_str \l__mermap_tmpa_tl);
\path[draw=mrcmarkerdraw,fill=mrcmarkerfill,mrcpathstyle,mrchyperpath,even~odd~rule]
- circle (\l_tmpa_tl) circle (\fp_to_dim:N\l__mermap_marker_inner_radius_fp);
+ circle (\l__mermap_tmpa_tl) circle (\fp_to_dim:N\l__mermap_marker_inner_radius_fp);
}
\__mermap_new_marker_type:nn {markx}
{
- \tl_set:Nn \l_tmpa_tl {\fp_to_dim:N\l__mermap_marker_radius_fp}
+ \tl_set:Nn \l__mermap_tmpa_tl {\fp_to_dim:N\l__mermap_marker_radius_fp}
\path[line~join=bevel,draw=mrcmarkerdraw,fill=mrcmarkerfill,mrcpathstyle,mrchyperpath]
- (0,0) -- (35 \c_colon_str \l_tmpa_tl) -- (55 \c_colon_str \l_tmpa_tl) -- cycle
- (0,0) -- (125 \c_colon_str \l_tmpa_tl) -- (145 \c_colon_str \l_tmpa_tl) -- cycle
- (0,0) -- (215 \c_colon_str \l_tmpa_tl) -- (235 \c_colon_str \l_tmpa_tl) -- cycle
- (0,0) -- (305 \c_colon_str \l_tmpa_tl) -- (325 \c_colon_str \l_tmpa_tl) -- cycle;
+ (0,0) -- (35 \c_colon_str \l__mermap_tmpa_tl) -- (55 \c_colon_str \l__mermap_tmpa_tl) -- cycle
+ (0,0) -- (125 \c_colon_str \l__mermap_tmpa_tl) -- (145 \c_colon_str \l__mermap_tmpa_tl) -- cycle
+ (0,0) -- (215 \c_colon_str \l__mermap_tmpa_tl) -- (235 \c_colon_str \l__mermap_tmpa_tl) -- cycle
+ (0,0) -- (305 \c_colon_str \l__mermap_tmpa_tl) -- (325 \c_colon_str \l__mermap_tmpa_tl) -- cycle;
}
@@ -2269,12 +2318,21 @@
\fp_new:N \l__mermap_b_x_fp
\fp_new:N \l__mermap_b_y_fp
\fp_new:N \l__mermap_b_z_fp
+\fp_new:N \l__mermap_alpha_fp
\fp_new:N \l__mermap_delta_lambda_fp
\fp_new:N \l__mermap_delta_phi_fp
+\fp_new:N \l__mermap_n_x_fp
+\fp_new:N \l__mermap_n_y_fp
+\fp_new:N \l__mermap_n_z_fp
\fp_new:N \l__mermap_psi_fp
+\fp_new:N \l__mermap_sin_psi_fp
+\fp_new:N \l__mermap_t_fp
+\fp_new:N \l__mermap_t_psi_fp
\fp_new:N \l__mermap_t_x_fp
\fp_new:N \l__mermap_t_y_fp
\fp_new:N \l__mermap_t_z_fp
+\fp_const:Nn \c__mermap_linearization_threshold_fp { 10e-9 }
+\bool_new:N \l__mermap_linearization_bool
\int_new:N \l__mermap_samples_int
@@ -2309,41 +2367,86 @@
}
-\cs_new:Npn \__mermap_draw_orthodrome:nnnnn #1#2#3#4#5
+\cs_new_protected:Npn \__mermap_draw_orthodrome:nnnnn #1#2#3#4#5
{
\__mermap_tikz_path_begin:n { draw,mermap_every_route,#1 }
- \fp_set:Nn \l__mermap_a_x_fp { cosd(#3)*cosd(#2) }
- \fp_set:Nn \l__mermap_a_y_fp { sind(#3)*cosd(#2) }
- \fp_set:Nn \l__mermap_a_z_fp { sind(#2) }
- \fp_set:Nn \l__mermap_b_x_fp { cosd(#5)*cosd(#4) }
- \fp_set:Nn \l__mermap_b_y_fp { sind(#5)*cosd(#4) }
- \fp_set:Nn \l__mermap_b_z_fp { sind(#4) }
-
- \fp_set:Nn \l_tmpa_fp { sind(#2)*sind(#4) + cosd(#2)*cosd(#4)*cosd(#5-(#3)) }
- \fp_set:Nn \l__mermap_psi_fp { acosd(\l_tmpa_fp) }
- \fp_set:Nn \l_tmpb_fp { sind(\l__mermap_psi_fp) }
-
- \fp_set:Nn \l__mermap_b_x_fp { (\l__mermap_b_x_fp - \l_tmpa_fp*\l__mermap_a_x_fp)/\l_tmpb_fp }
- \fp_set:Nn \l__mermap_b_y_fp { (\l__mermap_b_y_fp - \l_tmpa_fp*\l__mermap_a_y_fp)/\l_tmpb_fp }
- \fp_set:Nn \l__mermap_b_z_fp { (\l__mermap_b_z_fp - \l_tmpa_fp*\l__mermap_a_z_fp)/\l_tmpb_fp }
-
- \__mermap_pgf_moveto_point:nn {#2}{#3}
- \int_set:Nn \l_tmpa_int {1}
- \int_until_do:nNnn \l_tmpa_int > \l__mermap_samples_int
- {
- \fp_set:Nn \l_tmpa_fp { \l__mermap_psi_fp*\l_tmpa_int/\l__mermap_samples_int }
- \fp_set:Nn \l_tmpb_fp { sind(\l_tmpa_fp) }
- \fp_set:Nn \l_tmpa_fp { cosd(\l_tmpa_fp) }
- \fp_set:Nn \l__mermap_t_x_fp { \l_tmpa_fp*\l__mermap_a_x_fp + \l_tmpb_fp*\l__mermap_b_x_fp }
- \fp_set:Nn \l__mermap_t_y_fp { \l_tmpa_fp*\l__mermap_a_y_fp + \l_tmpb_fp*\l__mermap_b_y_fp }
- \fp_set:Nn \l__mermap_t_z_fp { \l_tmpa_fp*\l__mermap_a_z_fp + \l_tmpb_fp*\l__mermap_b_z_fp }
- \pgfpathlineto{\__mermap_unit_sphere_point:nnn {\l__mermap_t_x_fp}{\l__mermap_t_y_fp}{\l__mermap_t_z_fp}}
- \int_incr:N \l_tmpa_int
+ \__mermap_setup_orthodrome:nnnn { #2 }{ #3 }{ #4 }{ #5 }
+ \__mermap_pgf_moveto_point:nn { #2 }{ #3 }
+ \int_step_inline:nn { \l__mermap_samples_int }
+ {
+ \__mermap_point_on_orthodrome:n { ##1/\l__mermap_samples_int }
+ \__mermap_pgf_lineto_point:nn{ \l__mermap_cs_lat_fp }{ \l__mermap_cs_lon_fp }
}
\__mermap_tikz_path_end:
}
+\cs_new_protected:Npn \__mermap_setup_orthodrome:nnnn #1#2#3#4
+ {
+ \fp_set:Nn \l__mermap_a_x_fp { cosd(#2)*cosd(#1) }
+ \fp_set:Nn \l__mermap_a_y_fp { sind(#2)*cosd(#1) }
+ \fp_set:Nn \l__mermap_a_z_fp { sind(#1) }
+
+ \fp_set:Nn \l__mermap_b_x_fp { cosd(#4)*cosd(#3) }
+ \fp_set:Nn \l__mermap_b_y_fp { sind(#4)*cosd(#3) }
+ \fp_set:Nn \l__mermap_b_z_fp { sind(#3) }
+
+ \fp_set:Nn \l__mermap_psi_fp { acosd( sind(#1)*sind(#3) + cosd(#1)*cosd(#3)*cosd(#4-(#2)) ) }
+ \fp_set:Nn \l__mermap_sin_psi_fp { sind(\l__mermap_psi_fp) }
+
+ \bool_set:Nn \l__mermap_linearization_bool { \fp_compare_p:nNn \l__mermap_psi_fp < \c__mermap_linearization_threshold_fp }
+ }
+
+
+\cs_new_protected:Npn \__mermap_point_on_orthodrome:n #1
+ {
+ \fp_set:Nn \l__mermap_t_fp { #1 }
+
+ \bool_if:NTF \l__mermap_linearization_bool
+ {
+ \fp_set:Nn \l__mermap_tmpa_fp { 1 - \l__mermap_t_fp }
+ \fp_set_eq:NN \l__mermap_tmpb_fp \l__mermap_t_fp
+ }
+ {
+ \fp_set:Nn \l__mermap_t_psi_fp { \l__mermap_t_fp * \l__mermap_psi_fp }
+ \fp_set:Nn \l__mermap_tmpa_fp { sind( \l__mermap_psi_fp - \l__mermap_t_psi_fp ) / \l__mermap_sin_psi_fp }
+ \fp_set:Nn \l__mermap_tmpb_fp { sind( \l__mermap_t_psi_fp ) / \l__mermap_sin_psi_fp }
+ }
+
+ \fp_set:Nn \l__mermap_t_x_fp { \l__mermap_tmpa_fp*\l__mermap_a_x_fp + \l__mermap_tmpb_fp*\l__mermap_b_x_fp }
+ \fp_set:Nn \l__mermap_t_y_fp { \l__mermap_tmpa_fp*\l__mermap_a_y_fp + \l__mermap_tmpb_fp*\l__mermap_b_y_fp }
+ \fp_set:Nn \l__mermap_t_z_fp { \l__mermap_tmpa_fp*\l__mermap_a_z_fp + \l__mermap_tmpb_fp*\l__mermap_b_z_fp }
+
+ \fp_set:Nn \l__mermap_cs_lat_fp { asind(\l__mermap_t_z_fp) }
+ \fp_set:Nn \l__mermap_cs_lon_fp { sign(\l__mermap_t_y_fp)*acosd(\l__mermap_t_x_fp/sqrt(\l__mermap_t_x_fp^2+\l__mermap_t_y_fp^2)) }
+ }
+
+
+\cs_new_protected:Npn \__mermap_angle_at_orthodrome:
+ {
+ \bool_if:NTF \l__mermap_linearization_bool
+ {
+ \fp_set:Nn \l__mermap_alpha_fp { 90 }
+ }
+ {
+ \fp_set:Nn \l__mermap_tmpa_fp { cosd( \l__mermap_psi_fp - \l__mermap_t_psi_fp ) }
+ \fp_set:Nn \l__mermap_tmpb_fp { cosd( \l__mermap_t_psi_fp ) }
+ \fp_set:Nn \l__mermap_n_x_fp { \l__mermap_tmpb_fp*\l__mermap_b_x_fp - \l__mermap_tmpa_fp*\l__mermap_a_x_fp }
+ \fp_set:Nn \l__mermap_n_y_fp { \l__mermap_tmpb_fp*\l__mermap_b_y_fp - \l__mermap_tmpa_fp*\l__mermap_a_y_fp }
+ \fp_set:Nn \l__mermap_n_z_fp { \l__mermap_tmpb_fp*\l__mermap_b_z_fp - \l__mermap_tmpa_fp*\l__mermap_a_z_fp }
+ \fp_set:Nn \l__mermap_tmpa_fp { sqrt( \l__mermap_n_x_fp^2 + \l__mermap_n_y_fp^2 + \l__mermap_n_z_fp^2 ) }
+ \fp_set:Nn \l__mermap_n_x_fp { \l__mermap_n_x_fp / \l__mermap_tmpa_fp }
+ \fp_set:Nn \l__mermap_n_y_fp { \l__mermap_n_y_fp / \l__mermap_tmpa_fp }
+ \fp_set:Nn \l__mermap_n_z_fp { \l__mermap_n_z_fp / \l__mermap_tmpa_fp }
+ \fp_set:Nn \l__mermap_alpha_fp { acosd( \l__mermap_n_y_fp*cosd(\l__mermap_cs_lon_fp) - \l__mermap_n_x_fp*sind(\l__mermap_cs_lon_fp) ) }
+ \fp_compare:nNnT \l__mermap_n_z_fp < 0
+ {
+ \fp_set:Nn \l__mermap_alpha_fp { 360 - \l__mermap_alpha_fp }
+ }
+ }
+ }
+
+
\NewDocumentCommand \mrcdraworthodrome { O{} mmmm }
{
\__mermap_draw_orthodrome:nnnnn {#1}{#2}{#3}{#4}{#5}
@@ -2392,11 +2495,11 @@
\fp_set:Nn \l__mermap_delta_lambda_fp {(#4-(#2))/180*pi}
\fp_compare:nNnTF {abs(\l__mermap_delta_phi_fp)} < {1e-5}
{
- \fp_set:Nn \l_tmpa_fp { tand(#1) }
- \fp_set:Nn \l_tmpb_fp { \l__mermap_delta_lambda_fp*cosd(#1)
- /( 1 + (\l_tmpa_fp + (1+2*\l_tmpa_fp*\l_tmpa_fp)*\l__mermap_delta_phi_fp/3)*\l__mermap_delta_phi_fp/2 ) }
+ \fp_set:Nn \l__mermap_tmpa_fp { tand(#1) }
+ \fp_set:Nn \l__mermap_tmpb_fp { \l__mermap_delta_lambda_fp*cosd(#1)
+ /( 1 + (\l__mermap_tmpa_fp + (1+2*\l__mermap_tmpa_fp*\l__mermap_tmpa_fp)*\l__mermap_delta_phi_fp/3)*\l__mermap_delta_phi_fp/2 ) }
\fp_set:Nn \l__mermap_result_fp {
- sqrt( \l__mermap_delta_phi_fp*\l__mermap_delta_phi_fp + \l_tmpb_fp*\l_tmpb_fp ) }
+ sqrt( \l__mermap_delta_phi_fp*\l__mermap_delta_phi_fp + \l__mermap_tmpb_fp*\l__mermap_tmpb_fp ) }
}
{
\fp_set:Nn \l__mermap_result_fp { abs(\l__mermap_delta_phi_fp)
@@ -2422,11 +2525,314 @@
\NewDocumentCommand \mrcNPprettyloxodistance { mm }
{
- \__mermap_loxo_distance:nnnn {\mrcNPlat{#1}}{\mrcNPlon{#1}}{\mrcNPlat{#2}}{\mrcNPlon{#2}}
+ \__mermap_loxo_distance:nnnn { \mrcNPlat{#1} }{ \mrcNPlon{#1} }{ \mrcNPlat{#2} }{ \mrcNPlon{#2} }
\__mermap_pretty_distance:n { \l__mermap_result_fp }
}
+\cs_new_protected:Npn \__mermap_orthodrome_point:nnn #1#2#3
+ {
+ \__mermap_point_on_orthodrome:n { #3 }
+ \__mermap_set_named_position { #1 }{ \l__mermap_cs_lat_fp }{ \l__mermap_cs_lon_fp }
+ \IfNoValueF { #2 }
+ {
+ \__mermap_angle_at_orthodrome:
+ \cs_set:Npe #2 { \fp_to_decimal:N \l__mermap_alpha_fp }
+ }
+ }
+
+\NewDocumentCommand \mrcNPfromOrthoFraction { mo mm mm m }
+ {
+ \__mermap_setup_orthodrome:nnnn { #3 }{ #4 }{ #5 }{ #6 }
+ \__mermap_orthodrome_point:nnn { #1 }{ #2 }{ #7 }
+ }
+
+\NewDocumentCommand \mrcNPfromOrthoFractionNamed { mo m m m }
+ {
+ \__mermap_setup_orthodrome:nnnn { \mrcNPlat{#3} }{ \mrcNPlon{#3} }{ \mrcNPlat{#4} }{ \mrcNPlon{#4} }
+ \__mermap_orthodrome_point:nnn { #1 }{ #2 }{ #5 }
+ }
+
+\NewDocumentCommand \mrcNPfromOrthoDistance { mo mm mm m }
+ {
+ \__mermap_ortho_distance:nnnn { #3 }{ #4 }{ #5 }{ #6 }
+ \fp_compare:nNnTF \l__mermap_result_fp > { 0.001 }
+ {
+ \__mermap_setup_orthodrome:nnnn { #3 }{ #4 }{ #5 }{ #6 }
+ \__mermap_orthodrome_point:nnn { #1 }{ #2 }{ #7 / \l__mermap_result_fp }
+ }
+ {
+ \__mermap_set_named_position { #1 }{ #3 }{ #4 }
+ \IfNoValueF { #2 }
+ {
+ \cs_set:Npn #2 { 90 }
+ }
+ }
+ }
+
+\NewDocumentCommand \mrcNPfromOrthoDistanceNamed { mo m m m }
+ {
+ \__mermap_ortho_distance:nnnn { \mrcNPlat{#3} }{ \mrcNPlon{#3} }{ \mrcNPlat{#4} }{ \mrcNPlon{#4} }
+ \fp_compare:nNnTF \l__mermap_result_fp > { 0.001 }
+ {
+ \__mermap_setup_orthodrome:nnnn { \mrcNPlat{#3} }{ \mrcNPlon{#3} }{ \mrcNPlat{#4} }{ \mrcNPlon{#4} }
+ \__mermap_orthodrome_point:nnn { #1 }{ #2 }{ #5 / \l__mermap_result_fp }
+ }
+ {
+ \__mermap_set_named_position { #1 }{ \mrcNPlat{#3} }{ \mrcNPlon{#3} }
+ \IfNoValueF { #2 }
+ {
+ \cs_set:Npn #2 { 90 }
+ }
+ }
+ }
+
+
+%---- animations ---------------------------------------------------------------
+
+\bool_new:N \l__mermap_anim_drop_first_frame_bool
+\bool_new:N \l__mermap_anim_drop_last_frame_bool
+
+\fp_new:N \l__mermap_anim_a_lat_fp
+\fp_new:N \l__mermap_anim_a_lon_fp
+\fp_new:N \l__mermap_anim_a_scaledenom_fp
+\fp_new:N \l__mermap_anim_a_time_fp
+\fp_new:N \l__mermap_anim_b_lat_fp
+\fp_new:N \l__mermap_anim_b_lon_fp
+\fp_new:N \l__mermap_anim_b_scaledenom_fp
+\fp_new:N \l__mermap_anim_b_time_fp
+\fp_new:N \l_mermap_anim_angle_fp
+\fp_new:N \l_mermap_anim_lat_fp
+\fp_new:N \l_mermap_anim_lon_fp
+\fp_new:N \l_mermap_anim_scaledenom_fp
+\fp_new:N \l_mermap_anim_time_fp
+
+\int_new:N \l__mermap_anim_final_frame_int
+\int_new:N \l__mermap_anim_frames_int
+\int_new:N \l__mermap_anim_start_frame_int
+\int_new:N \l_mermap_anim_frame_int
+
+\seq_new:N \l__mermap_anim_scaledenom_seq
+
+\tl_new:N \l__mermap_anim_timescale_tl
+\tl_new:N \l__mermap_anim_timewarp_tl
+
+
+\NewExpandableDocumentCommand \mrcTimewarpIdentity { m }
+ {
+ #1
+ }
+
+\NewExpandableDocumentCommand \mrcTimewarpSlowStart { m m }
+ {
+ (#2)^(#1)
+ }
+
+\NewExpandableDocumentCommand \mrcTimewarpSlowFinal { m m }
+ {
+ 1 - (1-#2)^(#1)
+ }
+
+\NewExpandableDocumentCommand \mrcTimewarpSlowStartFinal { m m }
+ {
+ %1 - (1-#2)^(#1)
+ #2 <= 0.5
+ ? (2*(#2))^(#1) / 2
+ : 1 - (2-2*(#2))^(#1) / 2
+ }
+
+
+\NewDocumentEnvironment { mrcAnimation }{ m +b }
+ {
+ \keys_set:nn { mermap/anim }{ #1 }
+
+ \__mermap_anim_autocorrect_scaledenom_seq:
+ \int_compare:nNnT \l__mermap_anim_frames_int < 2
+ {
+ \int_set:Nn \l__mermap_anim_frames_int { 2 }
+ }
+ \bool_if:NTF \l__mermap_anim_drop_first_frame_bool
+ {
+ \int_set:Nn \l__mermap_anim_start_frame_int { 2 }
+ }
+ {
+ \int_set:Nn \l__mermap_anim_start_frame_int { 1 }
+ }
+ \bool_if:NTF \l__mermap_anim_drop_last_frame_bool
+ {
+ \int_set:Nn \l__mermap_anim_final_frame_int { \l__mermap_anim_frames_int-1 }
+ }
+ {
+ \int_set:Nn \l__mermap_anim_final_frame_int { \l__mermap_anim_frames_int }
+ }
+
+ \__mermap_setup_orthodrome:nnnn { \l__mermap_anim_a_lat_fp }{ \l__mermap_anim_a_lon_fp }
+ { \l__mermap_anim_b_lat_fp }{ \l__mermap_anim_b_lon_fp }
+
+ \__mermap_anim_pop_time_scale:NN \l__mermap_anim_a_time_fp \l__mermap_anim_a_scaledenom_fp
+ \__mermap_anim_pop_time_scale:NN \l__mermap_anim_b_time_fp \l__mermap_anim_b_scaledenom_fp
+
+ \int_step_variable:nnNn { \l__mermap_anim_start_frame_int }{ \l__mermap_anim_final_frame_int } \l_mermap_anim_frame_int
+ {
+ \fp_set:Nn \l_mermap_anim_time_fp { (\l_mermap_anim_frame_int-1)/(\l__mermap_anim_frames_int-1) }
+ \fp_set:Nn \l_mermap_anim_time_fp { \l__mermap_anim_timewarp_tl { \l_mermap_anim_time_fp } }
+
+ \__mermap_point_on_orthodrome:n { \l_mermap_anim_time_fp }
+ \fp_set_eq:NN \l_mermap_anim_lat_fp \l__mermap_cs_lat_fp
+ \fp_set_eq:NN \l_mermap_anim_lon_fp \l__mermap_cs_lon_fp
+ \__mermap_set_named_position{ AnimNP }{ \l_mermap_anim_lat_fp }{ \l_mermap_anim_lon_fp }
+
+ \__mermap_angle_at_orthodrome:
+ \fp_set_eq:NN \l_mermap_anim_angle_fp \l__mermap_alpha_fp
+
+ \fp_while_do:nNnn \l_mermap_anim_time_fp > \l__mermap_anim_b_time_fp
+ {
+ \fp_set_eq:NN \l__mermap_anim_a_time_fp \l__mermap_anim_b_time_fp
+ \fp_set_eq:NN \l__mermap_anim_a_scaledenom_fp \l__mermap_anim_b_scaledenom_fp
+ \__mermap_anim_pop_time_scale:NN \l__mermap_anim_b_time_fp \l__mermap_anim_b_scaledenom_fp
+ }
+ \fp_set:Nn \l_mermap_anim_scaledenom_fp
+ {
+ round ( exp (
+ ln(\l__mermap_anim_a_scaledenom_fp) +
+ ( ln(\l__mermap_anim_b_scaledenom_fp)-ln(\l__mermap_anim_a_scaledenom_fp) ) *
+ ( \l_mermap_anim_time_fp-\l__mermap_anim_a_time_fp ) / ( \l__mermap_anim_b_time_fp-\l__mermap_anim_a_time_fp )
+ ) )
+ }
+
+ #2
+ }
+ }{}
+
+
+\cs_new_protected:Npn \__mermap_anim_autocorrect_scaledenom_seq:
+ {
+ \seq_get_left:NN \l__mermap_anim_scaledenom_seq \l__mermap_anim_timescale_tl
+ \bool_lazy_any:nTF
+ {
+ { \seq_if_empty_p:N \l__mermap_anim_scaledenom_seq }
+ { \tl_if_empty_p:N \l__mermap_anim_timescale_tl }
+ { \quark_if_no_value_p:N \l__mermap_anim_timescale_tl }
+ }
+ {
+ \seq_set_split:Nnn \l__mermap_anim_scaledenom_seq { - }{ 0/25000 - 1/25000 },
+ }
+ {
+ \fp_compare:nNnF { \__mermap_anim_use_time:o \l__mermap_anim_timescale_tl } = 0
+ {
+ \seq_put_left:Ne \l__mermap_anim_scaledenom_seq { 0 / \__mermap_anim_use_scale:o \l__mermap_anim_timescale_tl }
+ }
+ }
+ \seq_get_right:NNF \l__mermap_anim_scaledenom_seq \l__mermap_anim_timescale_tl
+ {
+ \msg_error:nn{ mercatormap }{ anim-scaledenom-invalid }
+ }
+ \fp_compare:nNnF { \__mermap_anim_use_time:o \l__mermap_anim_timescale_tl } = 1
+ {
+ \seq_put_right:Ne \l__mermap_anim_scaledenom_seq { 1 / \__mermap_anim_use_scale:o \l__mermap_anim_timescale_tl }
+ }
+ \fp_set:Nn \l__mermap_anim_a_time_fp { -1 }
+ \seq_map_inline:Nn \l__mermap_anim_scaledenom_seq
+ {
+ \fp_set:Nn \l__mermap_anim_b_time_fp { \__mermap_anim_use_time:n { ##1 } }
+ \fp_compare:nNnTF \l__mermap_anim_a_time_fp < \l__mermap_anim_b_time_fp
+ {
+ \fp_set_eq:NN \l__mermap_anim_a_time_fp \l__mermap_anim_b_time_fp
+ }
+ {
+ \msg_error:nn{ mercatormap }{ anim-scaledenom-invalid }
+ }
+ }
+ }
+
+\cs_new_protected:Npn \__mermap_anim_pop_time_scale:NN #1#2
+ {
+ \seq_pop_left:NN \l__mermap_anim_scaledenom_seq \l__mermap_anim_timescale_tl
+ \fp_set:Nn #1 { \__mermap_anim_use_time:o \l__mermap_anim_timescale_tl }
+ \fp_set:Nn #2 { \__mermap_anim_use_scale:o \l__mermap_anim_timescale_tl }
+ }
+
+\msg_new:nnnn{ mercatormap }{ anim-scaledenom-invalid }
+ { The~animation~scale~denominator~sequence~is~invalid. }
+ {
+ Check~\seq_use:Nn \l__mermap_anim_scaledenom_seq { ~-~ }~with~the~documentation.~
+ Time~values~are~not~strictly~monotonically~increasing.
+ }
+
+\cs_new_protected_nopar:Npn \__mermap_anim_set_position:w #1 #2 / #3 \q_stop
+ {
+ \fp_set:cn { l__mermap_anim_#1_lat_fp }{ #2 }
+ \fp_set:cn { l__mermap_anim_#1_lon_fp }{ #3 }
+ }
+
+\cs_new_nopar:Npn \__mermap_anim_use_time:w #1 / #2 \q_stop
+ {
+ #1
+ }
+\cs_new_nopar:Npn \__mermap_anim_use_time:n #1
+ {
+ \__mermap_anim_use_time:w #1 \q_stop
+ }
+\cs_generate_variant:Nn \__mermap_anim_use_time:n { o }
+
+\cs_new_nopar:Npn \__mermap_anim_use_scale:w #1 / #2 \q_stop
+ {
+ #2
+ }
+\cs_new_nopar:Npn \__mermap_anim_use_scale:n #1
+ {
+ \__mermap_anim_use_scale:w #1 \q_stop
+ }
+\cs_generate_variant:Nn \__mermap_anim_use_scale:n { o }
+
+\keys_define:nn { mermap/anim }
+ {
+ start-position .code:n = \__mermap_anim_set_position:w { a } #1 \q_stop,
+ final-position .code:n = \__mermap_anim_set_position:w { b } #1 \q_stop,
+ position .meta:n = { start-position = #1, final-position = #1 },
+ named-start-position .code:n =
+ {
+ \fp_set:Nn \l__mermap_anim_a_lat_fp { \mrcNPlat{ #1 } }
+ \fp_set:Nn \l__mermap_anim_a_lon_fp { \mrcNPlon{ #1 } }
+ },
+ named-final-position .code:n =
+ {
+ \fp_set:Nn \l__mermap_anim_b_lat_fp { \mrcNPlat{ #1 } }
+ \fp_set:Nn \l__mermap_anim_b_lon_fp { \mrcNPlon{ #1 } }
+ },
+ named-position .meta:n = { named-start-position = #1, named-final-position = #1 },
+ frames .int_set:N = \l__mermap_anim_frames_int,
+ drop-first-frame .bool_set:N = \l__mermap_anim_drop_first_frame_bool,
+ drop-last-frame .bool_set:N = \l__mermap_anim_drop_last_frame_bool,
+ drop-no-frame .meta:n = { drop-first-frame=false, drop-last-frame=false },
+ scale-denominators .code:n = \seq_set_split:Nnn \l__mermap_anim_scaledenom_seq { - }{ #1 },
+ common-scale-denominator .meta:n = { scale-denominators = 0/#1 - 1/#1 },
+ timewarp .tl_set:N = \l__mermap_anim_timewarp_tl,
+ timewarp-identity .meta:n = { timewarp = \mrcTimewarpIdentity },
+ timewarp-slow-start .meta:n = { timewarp = \mrcTimewarpSlowStart{#1} },
+ timewarp-slow-start .default:n = 2,
+ timewarp-slow-final .meta:n = { timewarp = \mrcTimewarpSlowFinal{#1} },
+ timewarp-slow-final .default:n = 2,
+ timewarp-slow-start-final .meta:n = { timewarp = \mrcTimewarpSlowStartFinal{#1} },
+ timewarp-slow-start-final .default:n = 2,
+ }
+
+\keys_set:nn { mermap/anim }
+ {
+ position = 51.4779 / 0,
+ frames = 20,
+ drop-no-frame,
+ common-scale-denominator = 25000,
+ timewarp-identity,
+ }
+
+\NewExpandableDocumentCommand\mrcAnimFrame{}{\int_to_arabic:n \l_mermap_anim_frame_int}
+\NewExpandableDocumentCommand\mrcAnimTime{}{\fp_to_decimal:N \l_mermap_anim_time_fp}
+\NewExpandableDocumentCommand\mrcAnimScaleDenom{}{\fp_to_decimal:N \l_mermap_anim_scaledenom_fp}
+\NewExpandableDocumentCommand\mrcAnimLatitude{}{\fp_to_decimal:N \l_mermap_anim_lat_fp}
+\NewExpandableDocumentCommand\mrcAnimLongitude{}{\fp_to_decimal:N \l_mermap_anim_lon_fp}
+\NewExpandableDocumentCommand\mrcAnimAngle{}{\fp_to_decimal:N \l_mermap_anim_angle_fp}
+
%---- supplier -----------------------------------------------------------------
diff --git a/macros/latex/contrib/mercatormap/mercatormap.tex b/macros/latex/contrib/mercatormap/mercatormap.tex
index 882587a3d2..a904cce2f9 100644
--- a/macros/latex/contrib/mercatormap/mercatormap.tex
+++ b/macros/latex/contrib/mercatormap/mercatormap.tex
@@ -2,11 +2,11 @@
% !TeX encoding=UTF-8
% !TeX spellcheck=en_US
%%
-%% The LaTeX package mercatormap - version 1.02 (2020/08/06)
+%% The LaTeX package mercatormap - version 1.2.0 (2024/08/05)
%% mercatormap.tex: Manual
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2020-2024 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -32,8 +32,8 @@
% The following personal API-keys are needed for compilation
% \mrcsetapikey{thunderforest}{YOUR-API-KEY} % registered key
-\def\version{1.02}%
-\def\datum{2020/08/06}%
+\def\version{1.2.0}%
+\def\datum{2024/08/05}%
\mrcactivatescript% activates Python script
@@ -54,9 +54,14 @@
\tikzexternaldisable% for final version
\tcbset{shield externalize}
-\nocite{Sturm:2020,package:tikz,package:xparse,package:siunitx,package:expl3}
+\nocite{Sturm:2020,package:tikz,package:siunitx}
-\pdfsuppresswarningpagegroup=1
+\ExplSyntaxOn
+\cs_if_exist:NT \pdfsuppresswarningpagegroup
+ {
+ \pdfsuppresswarningpagegroup=1
+ }
+\ExplSyntaxOff
%\includeonly{mercatormap.doc.intro}
%\includeonly{mercatormap.doc.examples}
@@ -67,8 +72,8 @@
%\includeonly{mercatormap.doc.marker}
%\includeonly{mercatormap.doc.routes}
%\includeonly{mercatormap.doc.orthodromes}
+%\includeonly{mercatormap.doc.animations}
%\includeonly{mercatormap.doc.limitations}
-%\includeonly{mercatormap.doc.versionhistory}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
@@ -83,8 +88,8 @@
\include{mercatormap.doc.marker}
\include{mercatormap.doc.routes}
\include{mercatormap.doc.orthodromes}
+\include{mercatormap.doc.animations}
\include{mercatormap.doc.limitations}
-\include{mercatormap.doc.versionhistory}
\clearpage
\phantomsection
diff --git a/macros/latex/contrib/mercatormap/mercatorpy.def b/macros/latex/contrib/mercatormap/mercatorpy.def
index 670d8fca3b..0df48609bf 100644
--- a/macros/latex/contrib/mercatormap/mercatorpy.def
+++ b/macros/latex/contrib/mercatormap/mercatorpy.def
@@ -1,19 +1,19 @@
-\begin{filecontents*}[overwrite]{maptiles.texpy}
+\begin{filecontents}[force,noheader,nowarn]{maptiles.texpy}
"""
-The LaTeX package mercatormap - version 1.02 (2020/08/06)
+The LaTeX package mercatormap - version 1.2.0 (2024/08/05)
maptiles.texpy: Python script for map tile download
-------------------------------------------------------------------------------------------
-Copyright (c) 2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+Copyright (c) 2020-2024 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
-------------------------------------------------------------------------------------------
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.
+ https://www.latex-project.org/lppl.txt
+and version 1.3c or later is part of all distributions of LaTeX
+version 2008-05-04 or later.
This work has the LPPL maintenance status `author-maintained'.
@@ -28,7 +28,7 @@ from pathlib import Path
from PIL import Image
-packageversion = '1.02 (2020/08/06)'
+packageversion = '1.2.0 (2024/08/05)'
def gd(x):
@@ -531,5 +531,5 @@ if __name__ == '__main__':
print('No url for download given')
mapdef.save_map(args.definition, tiles_success, merge_success, wms_success)
-\end{filecontents*}
+\end{filecontents}
diff --git a/macros/latex/contrib/mercatormap/mercatorsupplier.def b/macros/latex/contrib/mercatormap/mercatorsupplier.def
index 1bf7866b7a..a8063f8135 100644
--- a/macros/latex/contrib/mercatormap/mercatorsupplier.def
+++ b/macros/latex/contrib/mercatormap/mercatorsupplier.def
@@ -1,15 +1,15 @@
-%% The LaTeX package mercatormap - version 1.02 (2020/08/06)
+%% The LaTeX package mercatormap - version 1.2.0 (2024/08/05)
%% mercatorsupplier.def: predefined map supplier list
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2020-2024 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% 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
+%% https://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.
%%
@@ -46,7 +46,7 @@
attribution = {
Kartendaten:~\textcopyright\nobreakspace\href{https://openstreetmap.org/copyright}{OpenStreetMap}
\ Mitwirkende,~SRTM\nobreakspace\textbar\nobreakspace
- Kartendarstellung:~\textcopyright\nobreakspace\href{http://opentopomap.org/}{OpenTopoMap}
+ Kartendarstellung:~\textcopyright\nobreakspace\href{https://opentopomap.org/}{OpenTopoMap}
\ (\href{https://creativecommons.org/licenses/by-sa/3.0/}{CC-BY-SA})
},
attribution~print = {
@@ -61,12 +61,12 @@
{
__attribution_topplusopen .meta:nn = {mermap/supply} {
attribution = {
- \textcopyright\nobreakspace\href{http://www.bkg.bund.de}{Bundesamt~f\mrcumlaut{u}r~Kartographie~und~Geod\mrcumlaut{a}sie}\nobreakspace\the\year,
- \ \href{http://sg.geodatenzentrum.de/web_public/Datenquellen_TopPlus_Open.pdf}{Datenquellen}
+ Kartendarstellung:\nobreakspace\textcopyright\nobreakspace\href{https://www.bkg.bund.de}{BKG\nobreakspace(\the\year)},
+ \ \href{https://sgx.geodatenzentrum.de/web_public/Datenquellen_TopPlus_Open.pdf}{Datenquellen}
},
attribution~print = {
- \textcopyright\nobreakspace Bundesamt~f\mrcumlaut{u}r~Kartographie~und~Geod\mrcumlaut{a}sie\nobreakspace\the\year,
- \ Datenquellen:~\detokenize{http://sg.geodatenzentrum.de/web_public/Datenquellen_TopPlus_Open.pdf}
+ \textcopyright\nobreakspace BKG\nobreakspace(\the\year),
+ \ Datenquellen:~\detokenize{https://sgx.geodatenzentrum.de/web_public/Datenquellen_TopPlus_Open.pdf}
}
}
}
@@ -85,29 +85,121 @@
basename = tiles/tpo_web_grau,
}
-\cs_new:Npn \__mermap_new_supply_source_topplusopen:n #1
+\__mermap_new_supply_source:nn { topplusopen~web~light }
+ {
+ url = {https://sgx.geodatenzentrum.de/wmts_topplus_open/tile/1.0.0/web_light/default/WEBMERCATOR/{z}/{y}/{x}.png},
+ __attribution_topplusopen,
+ basename = tiles/tpo_web_light,
+ }
+
+\__mermap_new_supply_source:nn { topplusopen~web~light~grau }
+ {
+ url = {https://sgx.geodatenzentrum.de/wmts_topplus_open/tile/1.0.0/web_light_grau/default/WEBMERCATOR/{z}/{y}/{x}.png},
+ __attribution_topplusopen,
+ basename = tiles/tpo_web_light_grau,
+ }
+
+
+\cs_new:Npn \__mermap_new_supply_source_topplusopen:nn #1#2
{
\keys_define:nn { mermap/supply/_source }
{
topplusopen~#1 .meta:nn = {mermap/supply}{
- url = {https://sgx.geodatenzentrum.de/wms_topplus_open?service=wms&version=1.3.0&request=GetMap&Layers=#1&STYLES=default&CRS=EPSG:3857&bbox={xmin},{ymin},{xmax},{ymax}&width={width}&height={height}&Format=image/png},
+ url = {https://sgx.geodatenzentrum.de/wms_topplus_open_#2?service=wms&version=1.3.0&request=GetMap&Layers=#1&STYLES=default&CRS=EPSG:3857&bbox={xmin},{ymin},{xmax},{ymax}&width={width}&height={height}&Format=image/png},
__attribution_topplusopen,
basename = tiles/tpo,
},
topplusopen~#1~grau .meta:nn = {mermap/supply}{
- url = {https://sgx.geodatenzentrum.de/wms_topplus_open?service=wms&version=1.3.0&request=GetMap&Layers=#1_grau&STYLES=default&CRS=EPSG:3857&bbox={xmin},{ymin},{xmax},{ymax}&width={width}&height={height}&Format=image/png},
+ url = {https://sgx.geodatenzentrum.de/wms_topplus_open_#2?service=wms&version=1.3.0&request=GetMap&Layers=#1&STYLES=grau&CRS=EPSG:3857&bbox={xmin},{ymin},{xmax},{ymax}&width={width}&height={height}&Format=image/png},
__attribution_topplusopen,
basename = tiles/tpo,
},
}
}
-\__mermap_new_supply_source_topplusopen:n { p5 }
-\__mermap_new_supply_source_topplusopen:n { p10 }
-\__mermap_new_supply_source_topplusopen:n { p17.5 }
-\__mermap_new_supply_source_topplusopen:n { p25 }
-\__mermap_new_supply_source_topplusopen:n { p50 }
-\__mermap_new_supply_source_topplusopen:n { p100 }
-\__mermap_new_supply_source_topplusopen:n { p250 }
+\__mermap_new_supply_source_topplusopen:nn { p5 }{ p5 }
+\__mermap_new_supply_source_topplusopen:nn { p10 }{ p10 }
+\__mermap_new_supply_source_topplusopen:nn { p17.5 }{ p17 }
+\__mermap_new_supply_source_topplusopen:nn { p25 }{ p25 }
+\__mermap_new_supply_source_topplusopen:nn { p50 }{ p50 }
+\__mermap_new_supply_source_topplusopen:nn { p100 }{ p100 }
+\__mermap_new_supply_source_topplusopen:nn { p250 }{ p250 }
+
+
+\keys_define:nn { mermap/supply }
+ {
+ __attribution_thunderforest .meta:nn = {mermap/supply} {
+ attribution = {
+ Maps~\textcopyright\nobreakspace\href{https://www.thunderforest.com/}{Thunderforest},
+ \ Data~\textcopyright\nobreakspace\href{https://openstreetmap.org/copyright}{OpenStreetMap~contributors}
+ },
+ attribution~print = {
+ Maps~\textcopyright\nobreakspace www.thunderforest.com,
+ \ Data~\textcopyright\nobreakspace www.osm.org/copyright
+ }
+ }
+ }
+\__mermap_new_supply_source:nn { thunderforest~opencyclemap }
+ {
+ url~with~api~key = {https://tile.thunderforest.com/cycle/{z}/{x}/{y}.png?apikey=}{thunderforest}{},
+ __attribution_thunderforest,
+ basename = tiles/opencyclemap,
+ }
+\__mermap_new_supply_source:nn { thunderforest~transport }
+ {
+ url~with~api~key = {https://tile.thunderforest.com/transport/{z}/{x}/{y}.png?apikey=}{thunderforest}{},
+ __attribution_thunderforest,
+ basename = tiles/transport,
+ }
+\__mermap_new_supply_source:nn { thunderforest~landscape }
+ {
+ url~with~api~key = {https://tile.thunderforest.com/landscape/{z}/{x}/{y}.png?apikey=}{thunderforest}{},
+ __attribution_thunderforest,
+ basename = tiles/landscape,
+ }
+\__mermap_new_supply_source:nn { thunderforest~outdoors }
+ {
+ url~with~api~key = {https://tile.thunderforest.com/outdoors/{z}/{x}/{y}.png?apikey=}{thunderforest}{},
+ __attribution_thunderforest,
+ basename = tiles/outdoors,
+ }
+\__mermap_new_supply_source:nn { thunderforest~atlas }
+ {
+ url~with~api~key = {https://tile.thunderforest.com/atlas/{z}/{x}/{y}.png?apikey=}{thunderforest}{},
+ __attribution_thunderforest,
+ basename = tiles/atlas,
+ }
+\__mermap_new_supply_source:nn { thunderforest~transport-dark }
+ {
+ url~with~api~key = {https://tile.thunderforest.com/transport-dark/{z}/{x}/{y}.png?apikey=}{thunderforest}{},
+ __attribution_thunderforest,
+ basename = tiles/transport-dark,
+ }
+\__mermap_new_supply_source:nn { thunderforest~spinal-map }
+ {
+ url~with~api~key = {https://tile.thunderforest.com/spinal-map/{z}/{x}/{y}.png?apikey=}{thunderforest}{},
+ __attribution_thunderforest,
+ basename = tiles/spinal-map,
+ }
+\__mermap_new_supply_source:nn { thunderforest~pioneer }
+ {
+ url~with~api~key = {https://tile.thunderforest.com/pioneer/{z}/{x}/{y}.png?apikey=}{thunderforest}{},
+ __attribution_thunderforest,
+ basename = tiles/pioneer,
+ }
+\__mermap_new_supply_source:nn { thunderforest~mobile-atlas }
+ {
+ url~with~api~key = {https://tile.thunderforest.com/mobile-atlas/{z}/{x}/{y}.png?apikey=}{thunderforest}{},
+ __attribution_thunderforest,
+ basename = tiles/mobile-atlas,
+ }
+\__mermap_new_supply_source:nn { thunderforest~neighbourhood }
+ {
+ url~with~api~key = {https://tile.thunderforest.com/neighbourhood/{z}/{x}/{y}.png?apikey=}{thunderforest}{},
+ __attribution_thunderforest,
+ basename = tiles/neighbourhood,
+ }
+
+
%% openrouteservice mapsurfer is DISCONTINUED after June 2020
%% Therefore, the following source is DEPRECATED and will be removed in future
@@ -127,7 +219,7 @@
basename = tiles/mapsurfer,
}
-\keys_define:nn { mermap/supply }
+\keys_define:nn { mermap/supply }% DISCONTINUED after July 2023 and DEPRECATED
{
__attribution_stamen .meta:nn = {mermap/supply} {
attribution = {
@@ -144,67 +236,67 @@
}
}
}
-\__mermap_new_supply_source:nn { stamen~terrain }
+\__mermap_new_supply_source:nn { stamen~terrain }% DISCONTINUED after July 2023 and DEPRECATED
{
url = {https://stamen-tiles-a.a.ssl.fastly.net/terrain/{z}/{x}/{y}.png},
__attribution_stamen,
basename = tiles/terrain,
}
-\__mermap_new_supply_source:nn { stamen~terrain-background }
+\__mermap_new_supply_source:nn { stamen~terrain-background }% DISCONTINUED after July 2023 and DEPRECATED
{
url = {https://stamen-tiles-a.a.ssl.fastly.net/terrain-background/{z}/{x}/{y}.png},
__attribution_stamen,
basename = tiles/terrain-background,
}
-\__mermap_new_supply_source:nn { stamen~terrain-labels }
+\__mermap_new_supply_source:nn { stamen~terrain-labels }% DISCONTINUED after July 2023 and DEPRECATED
{
url = {https://stamen-tiles-a.a.ssl.fastly.net/terrain-labels/{z}/{x}/{y}.png},
__attribution_stamen,
basename = tiles/terrain-labels,
}
-\__mermap_new_supply_source:nn { stamen~terrain-lines }
+\__mermap_new_supply_source:nn { stamen~terrain-lines }% DISCONTINUED after July 2023 and DEPRECATED
{
url = {https://stamen-tiles-a.a.ssl.fastly.net/terrain-lines/{z}/{x}/{y}.png},
__attribution_stamen,
basename = tiles/terrain-lines,
}
-\__mermap_new_supply_source:nn { stamen~toner }
+\__mermap_new_supply_source:nn { stamen~toner }% DISCONTINUED after July 2023 and DEPRECATED
{
url = {https://stamen-tiles-a.a.ssl.fastly.net/toner/{z}/{x}/{y}.png},
__attribution_stamen,
basename = tiles/toner,
}
-\__mermap_new_supply_source:nn { stamen~toner-lite }
+\__mermap_new_supply_source:nn { stamen~toner-lite }% DISCONTINUED after July 2023 and DEPRECATED
{
url = {https://stamen-tiles-a.a.ssl.fastly.net/toner-lite/{z}/{x}/{y}.png},
__attribution_stamen,
basename = tiles/toner-lite,
}
-\__mermap_new_supply_source:nn { stamen~toner-hybrid }
+\__mermap_new_supply_source:nn { stamen~toner-hybrid }% DISCONTINUED after July 2023 and DEPRECATED
{
url = {https://stamen-tiles-a.a.ssl.fastly.net/toner-hybrid/{z}/{x}/{y}.png},
__attribution_stamen,
basename = tiles/toner-hybrid,
}
-\__mermap_new_supply_source:nn { stamen~toner-background }
+\__mermap_new_supply_source:nn { stamen~toner-background }% DISCONTINUED after July 2023 and DEPRECATED
{
url = {https://stamen-tiles-a.a.ssl.fastly.net/toner-background/{z}/{x}/{y}.png},
__attribution_stamen,
basename = tiles/toner-background,
}
-\__mermap_new_supply_source:nn { stamen~toner-labels }
+\__mermap_new_supply_source:nn { stamen~toner-labels }% DISCONTINUED after July 2023 and DEPRECATED
{
url = {https://stamen-tiles-a.a.ssl.fastly.net/toner-labels/{z}/{x}/{y}.png},
__attribution_stamen,
basename = tiles/toner-labels,
}
-\__mermap_new_supply_source:nn { stamen~toner-lines }
+\__mermap_new_supply_source:nn { stamen~toner-lines }% DISCONTINUED after July 2023 and DEPRECATED
{
url = {https://stamen-tiles-a.a.ssl.fastly.net/toner-lines/{z}/{x}/{y}.png},
__attribution_stamen,
basename = tiles/toner-lines,
}
-\__mermap_new_supply_source:nn { stamen~watercolor }
+\__mermap_new_supply_source:nn { stamen~watercolor }% DISCONTINUED after July 2023 and DEPRECATED
{
url = {https://stamen-tiles-a.a.ssl.fastly.net/watercolor/{z}/{x}/{y}.png},
attribution = {
@@ -221,72 +313,3 @@
},
basename = tiles/watercolor,
}
-
-\keys_define:nn { mermap/supply }
- {
- __attribution_thunderforest .meta:nn = {mermap/supply} {
- attribution = {
- Maps~\textcopyright\nobreakspace\href{https://www.thunderforest.com/}{Thunderforest},
- \ Data~\textcopyright\nobreakspace\href{https://openstreetmap.org/copyright}{OpenStreetMap~contributors}
- },
- attribution~print = {
- Maps~\textcopyright\nobreakspace www.thunderforest.com,
- \ Data~\textcopyright\nobreakspace www.osm.org/copyright
- }
- }
- }
-\__mermap_new_supply_source:nn { thunderforest~opencyclemap }
- {
- url~with~api~key = {https://tile.thunderforest.com/cycle/{z}/{x}/{y}.png?apikey=}{thunderforest}{},
- __attribution_thunderforest,
- basename = tiles/opencyclemap,
- }
-\__mermap_new_supply_source:nn { thunderforest~transport }
- {
- url~with~api~key = {https://tile.thunderforest.com/transport/{z}/{x}/{y}.png?apikey=}{thunderforest}{},
- __attribution_thunderforest,
- basename = tiles/transport,
- }
-\__mermap_new_supply_source:nn { thunderforest~landscape }
- {
- url~with~api~key = {https://tile.thunderforest.com/landscape/{z}/{x}/{y}.png?apikey=}{thunderforest}{},
- __attribution_thunderforest,
- basename = tiles/landscape,
- }
-\__mermap_new_supply_source:nn { thunderforest~outdoors }
- {
- url~with~api~key = {https://tile.thunderforest.com/outdoors/{z}/{x}/{y}.png?apikey=}{thunderforest}{},
- __attribution_thunderforest,
- basename = tiles/outdoors,
- }
-\__mermap_new_supply_source:nn { thunderforest~transport-dark }
- {
- url~with~api~key = {https://tile.thunderforest.com/transport-dark/{z}/{x}/{y}.png?apikey=}{thunderforest}{},
- __attribution_thunderforest,
- basename = tiles/transport-dark,
- }
-\__mermap_new_supply_source:nn { thunderforest~spinal-map }
- {
- url~with~api~key = {https://tile.thunderforest.com/spinal-map/{z}/{x}/{y}.png?apikey=}{thunderforest}{},
- __attribution_thunderforest,
- basename = tiles/spinal-map,
- }
-\__mermap_new_supply_source:nn { thunderforest~pioneer }
- {
- url~with~api~key = {https://tile.thunderforest.com/pioneer/{z}/{x}/{y}.png?apikey=}{thunderforest}{},
- __attribution_thunderforest,
- basename = tiles/pioneer,
- }
-\__mermap_new_supply_source:nn { thunderforest~mobile-atlas }
- {
- url~with~api~key = {https://tile.thunderforest.com/mobile-atlas/{z}/{x}/{y}.png?apikey=}{thunderforest}{},
- __attribution_thunderforest,
- basename = tiles/mobile-atlas,
- }
-\__mermap_new_supply_source:nn { thunderforest~neighbourhood }
- {
- url~with~api~key = {https://tile.thunderforest.com/neighbourhood/{z}/{x}/{y}.png?apikey=}{thunderforest}{},
- __attribution_thunderforest,
- basename = tiles/neighbourhood,
- }
-
diff --git a/macros/latex/contrib/mismath/mismath.dtx b/macros/latex/contrib/mismath/mismath.dtx
index f3fd2168bc..c2d10d32af 100644
--- a/macros/latex/contrib/mismath/mismath.dtx
+++ b/macros/latex/contrib/mismath/mismath.dtx
@@ -20,7 +20,7 @@
%<*package>
\NeedsTeXFormat{LaTeX2e}[2005/12/01]
\ProvidesPackage{mismath}
- [2024/05/04 v3.0 .dtx Miscellaneous mathematical macros]
+ [2024/06/16 v3.1 .dtx Miscellaneous mathematical macros]
%</package>
%<*driver>
\documentclass{ltxdoc}
@@ -34,13 +34,16 @@
\usepackage{multicol}
\usepackage{sectsty}
\usepackage{xcolor}
-\usepackage{spacingtricks}
+\usepackage[pifont]{spacingtricks}
\usepackage{array}
\usepackage{metalogo} % for logos of XeLaTeX et LuaLaTeX
\definecolor{darkbrown}{rgb}{0.5,0.1,0.1}
\allsectionsfont{\color{darkbrown}}
+% Next command is used for showing original Latin Modern \i and \j in text mode:
+%\DeclareTextFontCommand{\extrafont}{\fontfamily{lmr}\selectfont} % useless with fourier
+
% The following commands provide several shapes for pi
\DeclareFontEncoding{LGR}{}{}
\def\pilmr{\text{\usefont{LGR}{lmr}{m}{n}\symbol{112}}}
@@ -62,15 +65,13 @@
\def\pipx{\text{\usefont{U}{pxmia}{m}{it}\symbol{"19}}}
\def\pitx{\text{\usefont{U}{txmia}{m}{it}\symbol{"19}}}
-% Next command is used for showing original Latin Modern \i and \j in text mode:
-%\DeclareTextFontCommand{\extrafont}{\fontfamily{lmr}\selectfont} % useless with fourier
+\let\updelta\otherdelta
\DisableCrossrefs
%\CodelineIndex
%\RecordChanges
\usepackage{hyperref}
-\let\C\relax % "\C already defined" with hyperref when compiling with xelatex or lualatex
\hypersetup{%
colorlinks,
linkcolor=blue,
@@ -87,7 +88,7 @@
%</driver>
% \fi
%
-% \CheckSum{845}
+% \CheckSum{854}
%
% \CharacterTable
% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -105,157 +106,13 @@
% Grave accent \` Left brace \{ Vertical bar \|
% Right brace \} Tilde \~}
%
-% \changes{v0.1}{2011/12/27}{First personal version}
-%
-% \changes{v1.0}{2019/04/11}{
-% - Initial published version: creating dtx and ins files}
-%
-% \changes{v1.1}{2019/04/20}{
-% - Some forgotten french 'et' -> 'and', citecolor=blue,
-% - changing the default font for pinumber Euler -> Symbol}
-%
-% \changes{v1.2}{2019/04/27}{
-% - Works fine with beamer now,
-% - AtBeginDocument for enumber, inumber, jnumber,
-% - creating general mm@operator macro,
-% - using mathup instead of mathrm
-% - added mathtools package,
-% - font definition Roman -> up,
-% - changes in documentation,
-% - replacing the PEroman macro by PEupright}
-%
-% \changes{v1.3}{2019/05/08}{
-% - Using bslash in the internal mm@warning macro,
-% - loading of mathfixs package
-% - Many corrections in documentation}
-%
-% \changes{v1.4}{2019/05/22}{
-% - Changing font definition up -> UpSh, due to incompatibility with unicode-math}
-%
-% \changes{v1.5}{2019/05/30}{
-% - A solution for using mul with frac -> braces,
-% - addition of paren macro}
-% \changes{v1.5}{2019/06/22}{
-% - Small corrections in documentation}
-%
-% \changes{v1.6}{2019/09/06}{
-% - Removing mathfixs package, problems with fractions}
-%
-% \changes{v1.7}{2019/12/27}{
-% - Adding a table of contents to the documentation}
-%
-% \changes{v1.8}{2020/11/15}{
-% - Incompatibility mentioned when using `i' with accent in beamer titles -> use \^i,
-% - small changes in documentation}
-%
-% \changes{v1.9}{2020/10/17}{
-% - UpSh replaced by "operators" font in math mode,
-% - PackageWarning `command exist' replaced by PackageWarningNoLine,
-% - medspace replaced by thickspace in the lfrac command,
-% - changing font in documentation, lmodern -> Palatino (mathpazo)}
-%
-% \changes{v1.10}{2020/10/25}{\
-% - pinumber command code adapted to avoid incompatibility with the new frenchmath,
-% - default option (in upgreek) changed from Symbol to Euler.}
-%
-% \changes{v2.0}{2022/11/11}{
-% - pinumber command has been enhanced to use other Greek letters packages,
-% (and LGR encoding pi by default), it is no longer compatible with the older,
-% - paren command has been removed,
-% - hvect and hlbar have been slightly modified (phantom t instead of phantom h),
-% - several changes in the documentation,
-% - now using the Charter font in the doc (with the package mathdesign)}
-%
-% \changes{v2.1}{2022/12/26}{
-% - Improved management of square brackets with the ibrackets package,
-% - new macros codim, sinc, var, eqdef*,
-% - removing the systematic warning for paren command,
-% - a small change in norm command -> bars in small size,
-% - several changes in documentation}
-%
-% \changes{v2.2}{2023/01/06}{
-% - Loading of ibrackets package is now optional, due to an error
-% when using DeclarePairedDelimiter with square brackets.}
-%
-% \changes{v2.3}{2023/02/09}{
-% - Introducing keyval options for enumber, inumber, jnumber, PEupright
-% (corresponding old commands are maintained for now),
-% - and also for ibrackets, boldvect and arrowvect
-% - Documentation update}
-%
-% \changes{v2.4}{2023/02/18}{
-% - New powerful macros MathUp, MathIt and also MathNumbers, MathProba, MathNormal,
-% - keyval options are no longer useful and have been deleted,
-% - loading package ifthen has been forgotten in v2.3 (causing possible errors),
-% - no more incompatibility when using `i' with accent in beamer titles}
-%
-% \changes{v2.5}{2023/02/23}{
-% - Unification of the code of MathUp and MathIt,
-% - a powerful macro `apply' is used in MathNormal to act on a list,
-% - a new `tensor' command,
-% - small changes in the documentation}
-%
-% \changes{v2.6}{2023/03/01}{
-% - A bug correction in mm@macro
-% - incompatibility of \C macro solved, when using babel with Russian
-% (thanks to Murray Eisenberg for this bug report on TeX StackExchange)
-% - mathrm added in macro eqdef* (useful if italicized Greek uppercase Delta)
-% - Tiny changes in the documentation}
-%
-% \changes{v2.7}{2023/03/05}{
-% - Macros for sets of numbers (\R, \C,...) now available only in math mode
-% (following remarks by David Carlisle and Enrico Gregorio)
-% - special (not generic) warning when loading babel with russian
-% (\C will not be defined in that case)}
-%
-% \changes{v2.8}{2023/07/26}{
-% - Some small changes in the documentation
-% - New macro `onlymathC' designed for using '\C' when Russian language is loaded}
-%
-% \changes{v2.9}{2023/12/19}{
-% - New option decimalcomma
-% - Some small changes in the documentation}
-%
-% \changes{v2.10}{2024/02/20}{
-% - Better compatibility with unicode-math:
-% for the options ibrackets, decimalcomma and the commands MathUp, MathIt
-% - Explicit error message when using mathcols without loading the multicol package}
-%
-% \changes{v2.11}{2024/02/26}{
-% - Enhancements of the pinumber macro with keyval options:
-% * no necessity to load a Greek letters package
-% * improvements of compatibility with unicode-math
-% - Now using the Adobe Utopia font with the package fourier}
-%
-% \changes{v2.12}{2024/02/29}{
-% - The xparse package has been removed by mistake in v2.11,
-% this may cause some compatibility problems;
-% it is loaded again by mismath
-% - Improvements to make pinumber work perfectly with unicode-math
-% - Small corrections in the doc}
-%
-% \changes{v3.0}{2024/03/15}{
-% - Rewriting of the pinumber command including the pifonts macro
-% - Presenting other lgrmath values for pinumber in the doc
-% - The \C macro is now in AtBeginDocument
-% - amsmath isn't loaded anymore because mathtools loads it
-% - Bug fix with options decimalcomma and ibrackets
-% - New option 'nofunction' to lighten the package loading
-% - Addition of coker and Res in standard operator names
-% - New option 'classicReIm' to deactivate Im and Re redefinition
-% - New option 'otherReIm' to provide an alternative writing with cmsy font
-% - Removal of the PEupright command
-% - Additional space in the lfrac macro increased from \: (5mu) to 7mu
-% - New optional parameter for adjusting the space in lfrac
-% - Changing the vphantom in hvect, hvec and lbar from `t' to `A', looks better}
-%
% \GetFileInfo{mismath.sty}
%
% \title{Miscellaneous mathematical macros \\The \textsf{mismath} package\thanks{This document
% corresponds to \textsf{mismath}~\fileversion, dated \filedate.
% Thanks to François Bastouil for initial help in English translation.}}
% \author{Antoine Missier \\ \texttt{antoine.missier@ac-toulouse.fr}}
-% \date{May 04, 2024}
+% \date{June 16, 2024}
%
% \maketitle
% \tableofcontents
@@ -292,8 +149,7 @@
% \item displaymath in double columns for lengthy calculations with short expressions.
% \end{itemize}
%
-% To avoid compatibility issues,
-% most of our macros will only be defined
+% To avoid compatibility issues, most of our macros will only be defined
% if there isn't already a command with the same name in the packages loaded
% before \textsf{mismath}. If a macro is already defined,
% a warning message will be displayed and the \textsf{mismath} definition
@@ -302,16 +158,19 @@
%
% \medskip
% \DescribeEnv{\oarg{options}}
-% The \textsf{mismath} package loads the \textsf{mathtools}
+% The \textsf{mismath} package loads the \textsf{mleftright}
+% \footnote{The \textsf{mleftright} package defines variants \texttt{\string \mleft}
+% and \texttt{\string \mright} of \texttt{\string left} and \texttt{\string \right}.}
+% package by Heiko Oberdiek~\cite{MLR} and also \textsf{mathtools}
% \footnote{The \textsf{mathtools} package offers numerous helpful macros and improvements
% of the \textsf{amsmath} package.}
-% package by Morten Høgholm and Lars Madsen~\cite{TOOL} which in turn loads
-% the \textsf{amsmath} package~\cite{AMS}.
+% by Morten Høgholm and Lars Madsen~\cite{TOOL} which in turn loads
+% the \mbox{\textsf{amsmath}} package~\cite{AMS}.
% If you want to use \mbox{\textsf{amsmath}} or \textsf{mathtools} with specific options,
% you can include these options as options of \mbox{\textsf{mismath}}, or
% you can load \textsf{amsmath} or \textsf{mathtools}
% with the desired options before loading \mbox{\textsf{mismath}}.
-% When using the package \textsf{unicode-math}~\cite{UNIC}, \textsf{mismath}
+% When using the package \mbox{\textsf{unicode-math}}~\cite{UNIC}, \textsf{mismath}
% should be loaded before \textsf{unicode-math}, just like \textsf{amsmath}.
%
% \medskip
@@ -364,7 +223,7 @@
% or imaginary number $\i$, with |\mathup{e}| or |\mathup{i}|,
% the package provides the |\e| command for Euler's number
% and |\i| or |\j| for imaginary numbers.
-% Let us notice that |\i| and |\j| already exist in LaTeX. In LR (left-to-right) mode,
+% Let us notice that |\i| and |\j| already exist in \LaTeX. In LR (left-to-right) mode,
% they produce \mbox{`\i,\ \j'} without the dot,
% allowing you to place accents on them.
% However, in mathematical mode, they produce the warning
@@ -376,7 +235,7 @@
% \medskip
% \DescribeMacro{\MathUp}
% Indeed, typing a lot of backslashes for constants like $\e$, $\i$, or $\j$
-% in a document with numerous formulas can become tiresome.
+% in a document with numerous formulas using them can become tiresome.
% To alleviate this, the package proposes another solution
% with the macro |\MathUp|\marg{char}.
% For example, when |\MathUp{e}| is called, any subsequent occurrence of $\e$
@@ -420,7 +279,7 @@
% These three commands, used until version 2.2 but only functioning within the preamble,
% serve now as aliases for the commands |\MathUp{e}|, |\MathUp{i}| or |\MathUp{j}|,
% so they can be used anywhere
-% in the document or preamble and has an inverse switches with |\MathIt|.
+% in the document or preamble and has an inverse switch with |\MathIt|.
%
% \medskip
% \DescribeMacro{\pinumber[\meta{option}]}
@@ -452,7 +311,7 @@
% which allows the use of any Greek LGR-encoded font in math mode,
% an idea taken up in \textsf{mathgreeks}~\cite{MGREEK}.
% Also note \textsf{newtxmath}~\cite{NTX} which has several font options.
-% These packages provide commands like |\uppi| (\textsf{upgreek}),
+% These packages provide commands like |\uppi| (\textsf{upgreek}, \textsf{mathgreeks}),
% |\piup| (\textsf{mathdesign}, \textsf{kpfonts}, \textsf{lgrmath}),
% |\otherpi| (\textsf{fourier}), etc.
% \footnote{They have also options to typeset all the Greek lowercase
@@ -461,7 +320,7 @@
% In this case, |\pinumber| must be called in the preamble
% with an optional argument being the name of the command, \emph{without the backslash},
% giving access to the upright pi:
-% piup, uppi, otherpi\ldots
+% \texttt{piup}, \texttt{uppi}, \texttt{otherpi}\ldots
% However, installing such a Greek letters package will modify
% all the other Greek letter glyphs.
% ^^A even if, except for pi, they will be in italics.
@@ -482,7 +341,7 @@
% providing the same glyph.
% The following table summarizes the available options.
% When a key is given without a value, |\pinumber| will choose a default value
-% specified in the following text (depending on the key).
+% specified in the text list following the table.
%
% \begin{center}
% \setlength{\extrarowheight}{1pt}
@@ -556,18 +415,18 @@
% (based on Palatino),
% \texttt{txfonts} (based on Times)
% are booleans whose default value is \texttt{true} (when called).
-% The \texttt{txfonts} option yields the same glyph than \texttt{lgrmath=txr}.
+% The \texttt{txfonts} key yields the same glyph than \texttt{lgrmath=txr}.
%
% \end{itemize}
% \end{enumerate}
%
-% The \textsf{unicode-math} package~\cite{UNIC} provides |\uppi|, and you can use
+% The \textsf{unicode-math} package~\cite{UNIC} provides |\uppi|, so you can use
% |\pinumber[uppi]| to produce automatic upright pi in the selected math font,
-% but |\pinumber[uppi]| must be called \emph{after} \mbox{\textsf{unicode-math}},
-% and a math font must have been explicitly chosen with |\setmathfont|.
-% You can also use the \texttt{fontspec} key option to obtain pi in any font
-% that is supported by \mbox{\textsf{unicode-math}} \eg
-% |\pinumber[fontspec=STIX Two Math]|.
+% but a math font must have been explicitly chosen with |\setmathfont|.
+% You can also use the \texttt{fontspec} key option,
+% \eg |\pinumber[fontspec=STIX Two Math]|,
+% to obtain pi in any font
+% that is supported by \textsf{unicode-math}.
%
% For other fonts, it can be quite complicated to make Greek letters packages
% work with \textsf{unicode-math}. In any case, such a package must be loaded
@@ -616,7 +475,7 @@
% \DescribeMacro{\boldvect}
% The |\vect| macro allows vector names to be typeset using bold italic font,
% as recommended by ISO~\cite{NIST}~\cite{SI}, instead of using arrows.
-% By using the |\boldvect| command, you can modify the behavior of |\vect|
+% To achieve this, call the |\boldvect| command, it will modify the behavior of |\vect|
% locally or globally, depending on its placement in the document (inside or outside
% a group or an environment):\\[2ex]
% \begin{minipage}{8cm}
@@ -639,16 +498,16 @@
% \textsf{isomath} with |\mathbfit|
% or \textsf{bm} with the |\bm| command;
% \textsf{unicode-math} provides the |\symbfit| command.
-% To use an alternative command instead of |\boldsymbol| in \textsf{mismath},
+% To use an alternative command instead of |\boldsymbol| in \mbox{\textsf{mismath}},
% redefine |\boldvectcommand|,
-% for instance after loading \textsf{fixmath}:
+% for instance if \textsf{fixmath} is loaded:
%
% \medskip
% \centeredline{|\renewcommand\boldvectcommand{\mathbold}|}
%
% \medskip
% According to ISO rules, symbols for matrices are also in bold italic.
-% Therefore you can use the same |\boldvect| command or create another alias.
+% Therefore you can also use |\vect| with |\boldvect| for matrices, or create another alias.
%
% \medskip
% \DescribeMacro{\arrowvect}
@@ -663,7 +522,7 @@
% When vectors with arrows are typeset side by side,
% the arrows can be set up slightly higher using |\hvect|
% (which places a vertical phantom box containing `$A$')
-% to avoid inelegant effects. For example, writing
+% to prevent inelegant effects. For example, writing
% \begin{itemize}
% \item $\vect{AB}=\hvect{u} + \vect{AC}$, obtained with |\hvect{u}|,
% looks better than $\vect{AB}=\vect{u}+ \vect{AC}$;
@@ -696,7 +555,7 @@
% for adaptive delimiters. Unfortunately, these delimiters
% are always vertically centered, relatively to the mathematical center line,
% whereas vectors with arrows are asymmetric objects.
-% The code |$\norm{\vec{h}}$| raises a smaller double bar to produce $\norm{\vec{h}}$
+% The code |$\norm{\vec{h}}$| raises the double bar to produce $\norm{\vec{h}}$
% instead of $\Vert\vec{h}\Vert$ or $\left\Vert \vec{h} \right\Vert$.
% Let's notice that the height of the bars don't adjust to content,
% but however to context: main text, subscripts or exponents,
@@ -745,6 +604,27 @@
% The command |\di| can also represent the \emph{distance}, hence its name:
% \[\di(u, \cmmathcal{H}) = \frac{\abs{\langle u,v\rangle}}{\lVert v \rVert}.\]
%
+% \DescribeMacro{\opDelta} \DescribeMacro{\opdelta}
+% Two other `difference' operators allow for expressing variations ($\opDelta$)
+% or small variations ($\opdelta$).
+% They are obtained using the |\opDelta| and |\opdelta| commands.
+% \begin{align*}
+% \opDelta f \approx \opDelta h = f'(x_0) \opDelta x &&
+% \frac{\opdelta T}{T}=\frac{1}{2}\frac{\opdelta l}{l} &&
+% h= \opdelta x\opdelta y
+% \end{align*}
+%
+% Like |\di|, these operators use specific spacing and are typeset using
+% the upright Greek letters given by |\updelta| and |\upDelta|.
+% By default |\upDelta| is an alias for |\Delta| (which is supposed to be in upright shape);
+% |\updelta| is not provided by \textsf{mismath} but can be obtained with
+% other packages such as \textsf{mathgreeks}~\cite{MGREEK},
+% \mbox{\textsf{unicode-math}}~\cite{UNIC},
+% or as an alias for the upright delta provided by other fonts
+% \footnote{With \textsf{fourier} (without the \texttt{upright} option) we have used
+% \texttt{\string\let\string\updelta\string\otherdelta}.}.
+%
+% \pagebreak
% \DescribeMacro{\P} \DescribeMacro{\E}
% To refer to probability
% \footnote{\LaTeX\ provides also \texttt{\string \Pr} which gives $\Pr$.}
@@ -754,7 +634,7 @@
%
% \medskip
% \DescribeMacro{\Par}
-% The |\P| command already existed to refer to the end of paragraph symbol \Par\
+% The |\P| command already existed to refer to the `end of paragraph' symbol (\Par)
% and has been redefined, but this symbol can still be obtained with |\Par|.
%
% \medskip
@@ -762,17 +642,16 @@
% Variance is generally denoted by $\var$ or $\Var$ (see the following table),
% but some authors prefer to use $\V$, which can be produced using |\V|.
%
-% \pagebreak
% \DescribeMacro{\MathProba}\DescribeMacro{\MathNormal}
% As for $\e$, $\i$ or $\j$, you can use |\MathUp{P}|, |\MathUp{E}|
% or |\MathUp{V}| to avoid typing many |\P|, |\E| or |\V|.
% However you can also achieve this in a single command with |\MathProba|,
% for example |\MathProba{PE}|. We get the inverse toggle with
-% |\MathIt| for any individual letter or |\MathNormal| for a list.
+% |\MathIt| for any individual letter or |\MathNormal| for a comma-separated list.
%
% \medskip
% \DescribeMacro{\probastyle}
-% Some authors use ``outline'' font shape to represent probability, expectation
+% Some authors use double-struck font shape to represent probability, expectation
% and variance: $\mathbb{P}, \mathbb{E}, \mathbb{V}$.
% The |\probastyle| macro sets the appearance of |\P|, |\E| and |\V|.
% For instance |\renewcommand\probastyle{\mathbb}|
@@ -780,7 +659,7 @@
% in which it is used.}
% brings the double-struck letters.
% The |\mathbb| command is provided by \textsf{amsfonts} package
-% (which needs to be called in the preamble), but also by other complete math font
+% (which needs to be loaded in the preamble), but also by other complete math font
% packages such as \textsf{mathdesign}, \textsf{kpfonts}, \textsf{fourier},
% \textsf{unicode-math}\ldots
% \hypertarget{nofunction}{}
@@ -829,8 +708,8 @@
%
% \DescribeMacro{[nofunction]}
% Some may find that the definition of all these operators and functions is not useful
-% for their needs. So, the above definitions (on this page)
-% can be disabled with the \texttt{nofunction} option.
+% for their needs. So, the definitions of standard operators and functions in both
+% previous tables can be disabled with the \texttt{nofunction} option.
% \hypertarget{classicReIm}{}
%
% \medskip
@@ -841,7 +720,6 @@
% Nevertheless, it is still possible to obtain the old symbols
% with |\oldRe| and |\oldIm|.
%
-% \medskip
% \DescribeMacro{[otherReIm]}
% An alternative notation $\Re$, $\Im$ is provided by invoking the \texttt{otherReIm}
% package option,
@@ -874,9 +752,9 @@
% \DescribeMacro{\mathset}
% The |\mathset| command enables you to change the behavior
% of all these macros in a global way.
-% By default, |\mathset| is an alias for |\mathbf|, but if you prefer outline letters,
-% you can simply use |\renewcommand\mathset{\mathbb}| (with local effect when
-% inside an environment or a pair of curly braces).
+% By default, |\mathset| is an alias for |\mathbf|, but if you prefer double-struck letters,
+% you can simply use |\renewcommand\mathset{\mathbb}| (with local effect within
+% an environment or a pair of curly braces).
%
% \smallskip
% \DescribeMacro{\onlymathC}
@@ -894,7 +772,7 @@
%
% \medskip
% Symbols with limits behave differently for in-line formulas or for displayed equations.
-% In the latter case, ``limits'' are placed under or above the symbol
+% In the latter case, `limits' are placed under or above the symbol
% whereas for in-line math mode,
% they are placed on the right, as a subscript or exponent. Compare:
% $\zeta(s)=\sum_{n=1}^{\infty }\frac{1}{n^s}$ with
@@ -905,9 +783,9 @@
% With in-line math mode, displaymath can be forced with |\displaystyle|
% or its alias |\ds|. However, when using these commands, all the rest of the current
% mathematical environment will be set in displaymath mode
-% (as shown in the previous example, where the fraction will be expanded).
+% (as shown in the previous example, where the fraction is expanded).
% To limit the display style effect to the affected symbol only,
-% similar the the \textsf{amsmath} command |\dfrac|,
+% similar to the \textsf{amsmath} command |\dfrac|,
% we can use the following macros:
% |\dlim|, |\dsum|, |\dprod|, |\dcup|, |\dcap|.
% So
@@ -969,13 +847,16 @@
% \DescribeMacro{\iif}
% |\iif| is an alias for ``\iif'', to be used in text mode.
%
+% \medskip
+% \DescribeMacro{\then}
+% This macro produces the symbol $\Longrightarrow$ surrounded by large spaces,
+% like the standard macro |\iff| does it with $\Longleftrightarrow$.
+% It's just an alias for the \textsf{amsmath} |\implies| macro.
+%
% \subsection{Improved spacing in mathematical formulas}
%
-% \DescribeMacro{\then}
-% The |\then| macro produces the symbol $\Longrightarrow$ surrounded by large spaces
-% just like the standard macro |\iff| does it with $\Longleftrightarrow$.
-% Similarly, the |\txt|, \DescribeMacro{\txt}
-% based on the |\text| macro from the \textsf{amstext} package
+% \DescribeMacro{\txt}
+% The |\txt| macro, based on |\text| from the \textsf{amstext} package
% (loaded by \textsf{amsmath}),
% leaves em quad spaces (|\quad|) around the text. See the following example:
% \begin{center}
@@ -988,76 +869,82 @@
% The multiplication symbol obtained with |\times| produces the same spacing as addition
% or subtraction operators, whereas division obtained with $/$ is closer to its operands.
% This actually hides the priority of multiplication over $+$ and $-$.
-% That's why we provide the |\mul| macro, behaving like $/$
-% (ordinary symbol) and leaving less space around than |\times|:
+% That's why we provide the |\mul| macro, to avoid the large space surrounding |\times|:
% \begin{center}
% $\lambda+\alpha \mul b-\beta \mul c$, obtained with |\mul|,
% looks better than $\lambda+\alpha \times b-\beta \times c$.
% \end{center}
%
-% When using |\mul| before a function name or around a |\left...\right| structure,
-% the space may be too large on one side of |\mul|.
-% To ensure the same amount of space on both sides,
-% you can use thin negative spaces |\!|
-% or enclose the function or structure with braces:
+% Using |\mul| before a function name works also fine (since v3.1) without the need
+% of curly braces to avoid the additional space before the operator name:
+% |$x\mul\sin x$| yields $x\mul{\sin x}$.
+%
+% \medskip
+% When using a |\left| \ldots |\right| structure,
+% \TeX\ sets additional surrounding space in some situations.
+% The \textsf{mleftright}~\cite{MLR} package, loaded by \textsf{mismath},
+% offers the variants |\mleft| and |\mright|
+% to address these spacing issues of inner formulas.
+% It also provides the |\mleftright| macro that redefines |\left| as |\mleft|
+% and |\right| as |\mright|.
+%
% \begin{center}
-% $x\mul{\sin x}$, obtained with |x\mul{\sin x}|, is slightly better than $x\mul\sin x$;\\[1ex]
-% |$\sin\!{\left( \frac{\pi}{3} \right)} \mul 2$|\\
-% yields $\sin\!{\left(\frac{\pi}{3}\right)}\mul 2$, which looks better than
-% $\sin\left(\frac{\pi}{3}\right)\mul 2$.
+% Compare $\sin\left(\frac{\pi}{3}\right)\mul 2$ with
+% $\sin\mleft(\frac{\pi}{3}\mright)\mul 2$ obtained with
+% |$\sin\mleft(\frac{\pi}{3}\mright)}\mul 2$|.
% \end{center}
-% The negative thin space after the function name is not related to |\mul|,
-% but to the ``excessive'' spaces around the |\left... \right| structure.
%
-% \medskip
% \DescribeMacro{\pow}
% In the same way, when typesetting an exponent after a closing \emph{big}
% parenthesis produced by |\right)|,
% the exponent appears to be a little to far from the parenthesis.
% To address this issue, the |\pow|\marg{expr}\marg{pow} command is provided
% \footnote{This macro gives bad results with \emph{normal-sized} parenthesis.},
-% which sets the positioning of the exponent \meta{pow}
+% which places \meta{expr} in a pair of parenthesis and
+% sets the positioning of the exponent \meta{pow}
% slightly closer to the right parenthesis.
% Compare:
% \[ \e^a =\lim_{n \to +\infty}\pow{1+\frac{a}{n}}{n}
% \txt{obtained with \texttt{\string \pow}, rather than}
% \e^a =\lim_{n \to +\infty}\left(1+\frac{a}{n}\right)^{n}.\]
%
-% \DescribeMacro{\abs}
-% The correct typesetting of absolute value (or modular for a complex number) is achieved
-% using |\lvert| \ldots |\rvert|, rather than $\mid$, as the latter doesn't maintain
-% proper spacing in some situations (when a sign follows the open delimiter).
-% For bars whose height has to adapt to the content,
-% we can use |\left\vert| \ldots |\right\vert| or, more simply,
-% the |\abs|\{\ldots\} command, which is equivalent
+% \DescribeMacro{\abs} \DeleteShortVerb{\|}
+% The \cs{abs} command typesets the absolute value while properly managing the spacing,
+% which \texttt{|}\ldots\texttt{|} does not. Compare $\abs{-x}$,
+% obtained with \cs{abs}, to $|-x|$ without.
+% Using the delimiters \cs{lvert} and \cs{rvert} presents another issue when
+% the absolute value follows a function name; \eg \verb@\ln\lvert x\rvert@ yields
+% $\ln \lvert x\rvert$
+% instead of $\ln\abs{x}$ (with \verb@\ln\abs{x}@).
+% Moreover, with \cs{abs}, the size of the delimiters adapts to the content
% \footnote{We could also define \texttt{\string \abs}
% using \texttt{\string \DeclarePairedDelimiter}
% from the \mbox{\textsf{mathtools}} package~\cite{TOOL}.}.
+% \MakeShortVerb{\|}
%
% \medskip
% \DescribeMacro{\lfrac}
% The |\lfrac| macro behaves like |\frac|
-% but with thicker spaces around the arguments,
-% making the corresponding fraction bar slightly longer. See the following examples:
+% but with additional spacing around the arguments,
+% making the corresponding fraction bar slightly longer.
+% This macro has an optional parameter |\lfrac|\oarg{space}\marg{num}\marg{denom}
+% to adjust the length of the fraction bar. The optional \meta{space} argument must be given
+% with \emph{math units} (\texttt{mu});
+% the default value is \texttt{7mu} (equivalent to |\:\,|).
+% See the following examples;
+% the last one is obtained with |\lfrac[4mu]{1}{\sqrt{x}}|.
% \[ \lbar{Z} = \lfrac{\lbar{z_1-z_2}}{\lbar{z_1+z_2}} \qquad
% u(x)= \lfrac{\frac{1-2x}{5}}{x^2+1} \qquad
% y'+xy=\lfrac[4mu]{1}{\sqrt{x}}
% \]
-%
-% This macro has an optional parameter |\lfrac|\oarg{space}\marg{num}\marg{denom}
-% to adjust the length of the fraction bar. The optional \meta{space} argument must be given
-% in \emph{math units} (\texttt{mu});
-% the default value is \texttt{7mu} (equivalent to |\:\,|),
-% \texttt{4mu} in the last example.
% \hypertarget{ibrackets}{}
%
-% \medskip
% \DescribeMacro{[ibrackets]}
% Open intervals are commonly represented with parenthesis, \eg $(0, +\infty)$,
% but sometimes square brackets are used, especially in French mathematics: $]0, +\infty[$.
-% In that specific case, the space around the square brackets is often inappropriate,
+% In that case, the space around the square brackets is generally inappropriate,
% as in the expression $x \in \mathclose{]} 0, +\infty[$.
-% To address this issue, we have redefined the brackets in the \textsf{ibrackets}
+% To address this issue, we have redefined the brackets in the \mbox{\textsf{ibrackets}}
% package~\cite{BRACKET}.
% This one can be optionally
% loaded by \textsf{mismath} using the \texttt{ibrackets} package option.
@@ -1107,7 +994,7 @@
% However, in the math mode of \LaTeX, the comma is always, by default,
% treated as a punctuation symbol and therefore is followed by a space.
% This is appropriate in intervals: |$[a,b]$| results in $[a,b]$,
-% but is not appropriate for numbers where the comma represents the decimal separator.
+% but not for numbers where the comma represents the decimal separator.
% For example, |$12,5$| is displayed as $12, 5$ instead of $12{,}5$.
%
% Two very convenient packages allow handling the decimal comma in math mode:
@@ -1143,15 +1030,15 @@
% \DescribeMacro{\systemsep}
% This first example could also have been achieved using the \texttt{cases} environment
% from the \textsf{amsmath} package, although \texttt{cases} places mathematical expressions
-% closer to the bracket.
-% The |\systemsep| length allows you to adjust the gap between
-% the bracket and the expressions.
+% closer to the curly brace.
+% The |\systemsep| length allows to adjust the gap between
+% the bracket and the math expressions.
% By default, the gap is set to |\medspace|. You can reduce this gap by redefining
-% the command, \eg: |\renewcommand{\systemsep}{\thinspace}|.
-% Alternatively you can increase the gap using |\thickspace|
-% and the same spacing as of the \texttt{cases} environment
-% is obtained with |\renewcommand\systemsep}{}|.
-% The |\systemsep| command allows for greater flexibility in adjusting the spacing
+% the command, \eg |\renewcommand{\systemsep}{\thinspace}|.
+% Alternatively you can increase the gap using |\thickspace|;
+% the same spacing as of the \texttt{cases} environment
+% being obtained with |\renewcommand\systemsep}{}|.
+% So the |\systemsep| command allows for greater flexibility in adjusting the spacing
% within the \texttt{system} environment.
%
% \medskip
@@ -1179,7 +1066,7 @@
% The default spacing between the lines of a \texttt{system} environment has been slightly
% enlarged compared to the one used in \texttt{array} environments (using a factor of 1.2).
% This can be adjusted by using
-% |\renewcommand{\systemstretch}|\marg{stretch}, where \meta{stretch} is the desired value
+% |\renewcommand{\systemstretch}|\marg{stretch}, where \meta{stretch} is the desired factor
% for the spacing. You can place this command
% inside the current mathematical environment for a local change, or outside
% for a global change. The default value for is 1.2.
@@ -1241,7 +1128,7 @@
% as shown in the following example.
% However, to use this feature, the \textsf{multicol} package must be loaded in the preamble.
% The \texttt{mathcols} environment activates mathematical mode
-% in display style and uses an \texttt{aligned} environment.
+% in display style and uses the \texttt{aligned} environment (from \textsf{amsmath}).
% \begin{mathcols}
% & \frac{1}{2 \mul {\pow{\frac{1}{4}}{n}} + 1} \geq 0.999 \\
% \iff\ & 1 \geq 1.998 \pow{\frac{1}{4}}{n} + 0.999 \\
@@ -1293,6 +1180,7 @@
% \end{tabular}
% \end{center}
% \StopEventually{}
+%
% \section{Implementation}
%
% We load certain packages conditionally to avoid 'option clash' errors in cases
@@ -1314,6 +1202,7 @@
%\@ifpackageloaded{amsmath}{}{\RequirePackage{amsmath}}
\@ifpackageloaded{mathtools}{}{\RequirePackage{mathtools}}
\@ifpackageloaded{esvect}{}{\RequirePackage[b]{esvect}}
+\RequirePackage{mleftright}
\RequirePackage{ifthen}
\RequirePackage{xparse} % provides \NewDocumentCommand, now in LaTeX3
\RequirePackage{xspace} % for \iif command
@@ -1369,7 +1258,7 @@
% \DescribeMacro{\mm@warning} \DescribeMacro{\mm@macro} \DescribeMacro{\mm@operator}
% The next three internal macros serve as meta commands for
% conditionally defining macros while providing a warning message if the macro already exists.
-% These macros can be useful in other packages as well.
+%
% \medskip
% \begin{macrocode}
\newcommand\mm@warning[1]{
@@ -1395,7 +1284,7 @@
% This command also works fine with other sans serif fonts like \textsf{cmbright}.
%
% Moreover for \textsf{beamer}, which changes the default font family (to sans serif),
-% |\e|, |\i|, |\j| have no effect without |\AtBeginDocument|.
+% |\e|, |\i|, |\j| have no effect without |\AtBeginDocument| and
% |\AtBeginDocument| is also necessary to redefine |\i| when calling
% the \textsf{hyperref} package which overwrites the |\i| definition.
% \medskip
@@ -1411,15 +1300,15 @@
% \end{macrocode}
%
% \DescribeMacro{\MathFamily}
-% The following macros |\MathUp| and |\MathIt| are switches that transform
+% The following macros |\MathUp| and |\MathIt| are toggles that transform
% any chosen letter in math mode to roman or italic style.
-% These switches can be used anywhere in the document or preamble.
+% These switches can be used anywhere in the document or the preamble.
% They are based on the generic macro |\MathFamily|.
% To obtain a letter in roman style instead of italic, we need to change the
% mathcode digit that represents the font family: 1 to 0.
%
% For example, except for \LuaLaTeX, mathcode of the `e' letter is:
-% `e="7165 (decimal 29029), with the second digit `1' indicating ``italic'' style.
+% e="7165 (decimal 29029), with the second digit `1' indicating ``italic'' style.
% To get a roman `e', we need to change its mathcode to "7065.
%
% When used in the preamble, we call |\MathFamily| by |\AtBeginDocument|
@@ -1531,7 +1420,7 @@
% Let its author, Petr Ol\v{s}ák, be thanked.
% This macro allows to accomplish tasks that
% usual loop instructions like |\@for| or |\foreach| cannot achieve due to
-% errors like ``!~Improper alphabetic constant''.
+% errors like ``\texttt{!~Improper alphabetic constant}''.
% For instance, if you try |\def\letter{A} \MathUp{\letter}| it will fail
% because the control sequence |\letter| is not strictly
% equivalent here to the single character `A'.
@@ -1549,11 +1438,11 @@
% \end{macrocode}
%
-% The following commands were used until version 2.2 but still work.
-% They were intended to set some letters in upright shape
-% in math mode, but only worked in the preamble.
-% This is now managed by the more powerful |\MathUp| command, and
-% the old commands are maintained but as alias for |\MathUp|.
+% The following commands were used originally (until version 2.2)
+% to set the math letters e, i or j in upright shape,
+% but only worked in the preamble.
+% This is now managed by the more powerful |\MathUp| command, but
+% the old commands are maintained as alias for |\MathUp|.
% \medskip
%
% \begin{macrocode}
@@ -1564,7 +1453,7 @@
% \end{macrocode}
%
% Obtaining an upright Greek letter $\pi$ must be handled differently.
-% The switches are called |\pinumber| and |\pinormal|
+% The toggles are called |\pinumber| and |\pinormal|
% and can be used anywhere in the document.
%
% But |\pinumber| must be called first in the preamble with an optional argument.
@@ -1573,11 +1462,11 @@
% Compatibility with \textsf{unicode-math} is a bit tricky!
% When given without an argument in the preamble,
% |\pinumber| uses an LGR font encoding called \texttt{lmr}.
-% A new feature (v2.11) is to use |\pinumber| with a keyval option to
+% A new feature (v2.11) for |\pinumber| is provided with keyval options to
% use many other Greek pi letters without loading
% a whole package, thus without altering the other (italic) Greek letters.
% We achieve this with |\DeclareSymbolFont| and |\DeclareMathSymbol|.
-% We just have to know the ``name'' of the desired symbol font.
+% We just have to know the `name' of the desired symbol font.
%
% \medskip
% \begin{macrocode}
@@ -1722,28 +1611,28 @@
% \end{macrocode}
% When |\pinumber|\oarg{keyval} has been called, you can also get
-% some other mathematical constants using Greek letters,
+% some other mathematical constants using Greek letters in the same font (\texttt{mmupgr})
% \eg $\othergamma$, the Euler-Mascheroni constant:
% \begin{verbatim}
% \let\gamma\relax
% \DeclareMathSymbol{\gamma}{\mathord}{mmupgr}{"0D}
% \end{verbatim}
% \vspace{-2ex}
-% If \textsf{unicode-math} is used, you must put these commands in
+% If \textsf{unicode-math} is used, you must put these commands inside
% |\AtBeginDocument|.
% The hexadecimal code |"0D| depends on the option passed to |\pinumber|
-% in the preamble (see the command |\pifonts| above and search in package docs). \\
+% in the preamble (see the command |\pifonts| above and search in package docs).
% And to get the golden ratio $\othervarphi$:
% \begin{verbatim}
-% \let\phi\relax
+% \let\varphi\relax
% \DeclareMathSymbol{\varphi}{\mathord}{mmupgr}{"27}
% \end{verbatim}
% \vspace{-2ex}
-% To preserve the original $\gamma$ or $\varphi$,
+% I you want to preserve the original $\gamma$ or $\varphi$,
% you can define |\upgamma| or |\upvarphi| instead.
%
% \medskip
-% And now the commands for vectors and tensors.
+% Commands for vectors and tensors follow.
% \medskip
% \begin{macrocode}
\newboolean{arrowvect}
@@ -1774,9 +1663,48 @@
\newcommand{\tensor}{\mathbfsfit} % isomath uses \mathsfbfit
% \end{macrocode}
+%
+% `Operators', as for example common function names, are generally defined
+% using the |\DeclareMathOperator| command or |\operatorname| for occasional use.
+% Operators are then typeset in roman (upright) shape and with appropriate thin space
+% before and after the operator name.
+% However, for the `differential' operator d, no space should be left after it
+% to obtain, for example, `$\di x$' instead of `$\operatorname{d} x$'.
+%
+% \medskip
+% Two other operators, suggested by `quark67', representing differences
+% or variations are defined by the macros |\opDelta| and |\opdelta|.
+% They use the Greek letters $\upDelta$ and $\updelta$ with appropriate spacing,
+% similar to |\di|.
+% By default |\upDelta| will be an alias for |\Delta|.
+% Generally, the uppercase Delta is upright
+% unless a package is loaded to change this, but the lowercase delta
+% is italic by default.
+%
+% To use the |\opdelta| macro, it is therefore necessary
+% to load a package that provides the lowercase delta in upright shape,
+% such as \textsf{mathgreeks} or \textsf{unicode-math},
+% or you can use the same symbol font \texttt{mmupgr} as seen above for the upright pi
+% (if |\pinumber|\oarg{keyval} has been called previously).
+% So you could get the upright delta with:
+% \begin{verbatim}
+% \DeclareMathSymbol{\updelta}{\mathord}{mmupgr}{"0E}
+% \end{verbatim} \vspace{-2ex}
+% The hexadecimal code |"0E| depends on the option passed to |\pinumber|.
+% If you have loaded a package that provides upright shapes of Delta and delta,
+% it may be necessary to create new aliases for |\upDelta| or |\updelta|,
+% \eg |\let\updelta\|\meta{mydelta}.
+% \begin{macrocode}
+\mm@macro{di}{\operatorname{d}\mathopen{}}
+\mm@macro{upDelta}{\Delta}
+\mm@macro{opDelta}{\operatorname{\upDelta}\mathopen{}}
+\mm@macro{opdelta}{\operatorname{\updelta}\mathopen{}}
+% \end{macrocode}
+% For the field of probability, we provide the macros |\P|, |\E|, and |\V|,
+% which are defined as operators. They are typeset in normal roman font,
+% but can be changed to double-struck style (or another style) if desired.
% \begin{macrocode}
-\mm@macro{di}{\mathop{}\!\mathup{d}}
\newcommand\probastyle{}
\let\Par\P % end of paragraph symbol
\renewcommand{\P}{\operatorname{\probastyle{P}}}
@@ -1790,7 +1718,7 @@
}
% \end{macrocode}
-% Classic identifiers are presented below. They will be defined only
+% Classic operators or function identifiers are presented below. They will be defined only
% if the option \texttt{nofunction} has not been activated.
% \medskip
% \begin{macrocode}
@@ -1840,13 +1768,13 @@
%
% The |\mathcal| alphabet, from the original Computer Modern font family,
% is used here to produce $\Re$, $\Im$ and $\bigO$.
-% Several font packages redefines this alphabet producing glyphs that may seem less
+% Several font packages redefine this alphabet producing glyphs that may seem less
% suitable for the commands below.
% We have therefore retained the original |\cmmathcal| math alphabet,
% which can be used for other letters.
% If \textsf{unicode-math} is called, it will redefine the commands |\Re| and |\Im|
-% in |\AtBeginDocument|, hence the use of `|\AtEndPreamble{\AtBeginDocument{|'
-% to ensure that the \textsf{mismath} redefinition occur after the actions
+% in |\AtBeginDocument|, hence the use of |\AtEndPreamble{\AtBeginDocument{|\ldots
+% to ensure that the \textsf{mismath} redefinitions occur after the actions
% of \textsf{unicode-math}.
%
% \begin{macrocode}
@@ -1880,24 +1808,23 @@
% \end{macrocode}
% And finally we present the remaining macros.
%
-% With Cyrillic languages, the command |\C| may already be defined but only for text mode.
-% Thus, it will not be redefined by \textsf{mismath}. However, when activating
-% |\onlymathC|, you can to use our |\C| macro only for math mode,
+% With Cyrillic languages, the command |\C| may already be defined
+% but works only in text mode.
+% Then, it will not be redefined by \textsf{mismath}. However, the command
+% |\onlymathC| allows to use our |\C| macro in math mode,
% without interfering the definition of the text |\C| that is already defined.
%
% When using \XeTeX\ or \LuaTeX\ engines with the \textsf{hyperref} package,
% |\C| will be already defined and
-% you get the message "\texttt{Command \string\C\space unavailable in encoding TU}".
+% you get the message ``\texttt{Command \string\C\space unavailable in encoding TU}''.
% Therefore |\onlymathC| is automatically called in that case.
% \medskip
% \begin{macrocode}
\mm@macro{mathset}{\mathbf}
\mm@macro{R}{\mathset{R}}
-\AtBeginDocument{
- \@ifpackageloaded{hyperref}%
- {\iftutex\onlymathC\fi}% LuaTex or XeTeX engines
- {\mm@macro{C}{\mathset{C}}}
-}
+\mm@macro{C}{\mathset{C}}
+\AtBeginDocument{% \iftutex = LuaTex or XeTeX engines
+ \@ifpackageloaded{hyperref}{\iftutex\onlymathC\fi}{} }
\providecommand\onlymathC{\let\oldC\C
\renewcommand{\C}{\TextOrMath{\oldC}{\mathset{C}}} }
\mm@macro{N}{\mathset{N}}
@@ -1918,29 +1845,27 @@
\providecommand*{\hlbar}[1]{\overline{\vphantom{A}#1}}}{
\mm@warning{hlbar} }
\newcommand\@eqdef{\stackrel{\mathup{def}}{=}}
-\newcommand\@@eqdef{\stackrel{\mathrm{\Delta}}{=}}
+\newcommand\@@eqdef{\stackrel{\upDelta}{=}}
\mm@macro{eqdef}{\@ifstar{\@@eqdef}{\@eqdef}}
\mm@macro{unbr}{\underbrace}
\mm@macro{iif}{if and only if\xspace}
+\mm@macro{then}{\implies}
-% \end{macrocode}
-% Above, we have used |\mathrm| before |\Delta| in case of defining capital Greek letters
-% in italics (for example with the \textsf{fixmath} package).
-%
-% The use of |\mbox{}| ensures that the space produced by |\| in the |\then| macro
-% is not suppressed in tables.
-% \medskip
-% \begin{macrocode}
-\mm@macro{then}{\ \Longrightarrow \ \mbox{} }
\@ifundefined{txt}{
\providecommand*{\txt}[1]{\quad\text{#1}\quad} }{
\mm@warning{txt} }
-\mm@macro{mul}{\mathord{\times}}
+\mm@macro{mul}{\mathclose{}\mathord{\times}\mathopen{}}
\@ifundefined{pow}{
\providecommand*{\pow}[2]{\left( #1 \right)^{\!#2}} }{
\mm@warning{pow} }
+% \end{macrocode}
+% For |\abs|, the |\left...\right| structure is inserted within a pair of curly braces
+% to prevent incorrect spacing before the first delimiter when it follows a function name,
+% in cases where the package \textsf{mleftright} is used and activated.
+% This issue was pointed out by `quark67'.
+% \begin{macrocode}
\@ifundefined{abs}{
- \providecommand*{\abs}[1]{\left\vert#1\right\vert} }{
+ \providecommand*{\abs}[1]{{\left\vert#1\right\vert}} }{
\mm@warning{abs} }
\@ifundefined{lfrac}{
\providecommand*{\lfrac}[3][7mu]{%
@@ -1981,7 +1906,216 @@
}
% \end{macrocode}
%
-% \begin{thebibliography}{34}
+% \pagebreak
+% \section*{Change History}
+%
+% \begin{multicols}{2}\begin{raggedright}
+% \renewcommand\changes[3]{\item[#1 \ (#2)] \mbox{}\\ #3}
+% \setlength{\compactlistindent}{-1em}
+% \begin{list}{}{\setlength\labelwidth{1.4em}\setlength{\leftmargin}{2em}
+% \setlength{\parsep}{0pt}}
+%
+% \changes{v0.1}{2011/12/27}{First personal version.}
+%
+% \changes{v1.0}{2019/04/11}{Initial published version.}
+%
+% \changes{v1.1}{2019/04/20}{
+% Changing the default font for \cs{pinumber} from Euler to Symbol.}
+%
+% \changes{v1.2}{2019/04/27}{
+% \begin{compactlist}
+% \item commands \cs{enumber}, \cs{inumber}, \cs{jnumber} in \cs{AtBeginDocument}\\
+% \hand works fine with \textsf{beamer} now,
+% \item new general \cs{mm@operator} macro,
+% \item using \cs{mathup} instead of \cs{mathrm},
+% \item including \textsf{mathtools},
+% \item in \cs{DeclareSymbolFont} 'Roman' changed to 'up',
+% \item changes in the documentation,
+% \item replacing \cs{PEroman} by \cs{PEupright}.
+% \end{compactlist}}
+%
+% \changes{v1.3}{2019/05/08}{
+% \begin{compactlist}
+% \item using \cs{bslash} in the internal \cs{mm@warning} macro
+% to type out a control sequence whose name is given as parameter,
+% \item including the \textsf{mathfixs} package,
+% \item many corrections in the documentation.
+% \end{compactlist}}
+%
+% \changes{v1.4}{2019/05/22}{
+% In \cs{DeclareSymbolFont} 'up' chan\-ged to 'UpSh'
+% to prevent incompatibility with \textsf{unicode-math}.}
+%
+% \changes{v1.5}{2019/05/30}{
+% \begin{compactlist}
+% \item a solution for using \cs{mul} with \cs{frac} \hand use braces,
+% \item addition of the \cs{paren} macro.
+% \end{compactlist}}
+%
+% \changes{v1.6}{2019/09/06}{
+% Removing the \textsf{mathfixs} package because of problems with fractions.}
+%
+% \changes{v1.7}{2019/12/27}{
+% Adding a table of contents to the documentation.}
+%
+% \changes{v1.8}{2020/11/15}{
+% Small changes in the documentation, in particular
+% an incompatibility is mentioned when using `i' with accent in \textsf{beamer} titles:
+% (use \texttt{\textbackslash\textasciicircum i} instead of î).}
+%
+% \changes{v1.9}{2020/10/17}{
+% \begin{compactlist}
+% \item in \cs{DeclareSymbolFont} 'UpSh' replaced by 'operators'
+% \item\cs{PackageWarning} replaced by \cs{PackageWarningNoLine} for existing macros,
+% \item \cs{thickspace} replaces \cs{medspace} in \cs{lfrac},
+% \item changing the documentation font: from lmodern to Palatino (\textsf{mathpazo}).
+% \end{compactlist}}
+%
+% \changes{v1.10}{2020/10/25}{
+% \cs{pinumber} code updated to prevent incompatibility
+% with the new version of the \textsf{frenchmath} package
+% (in which the default 'upgreek' option has been changed from Symbol to Euler).}
+%
+% \changes{v2.0}{2022/11/11}{
+% \begin{compactlist}
+% \item enhancing \cs{pinumber} to use other Greek letters packages
+% (it is no longer compatible with the older),
+% \item \cs{paren} has been removed (useless),
+% \item \cs{hvect} and \cs{hlbar} have been slightly modified (\cs{phantom}\texttt{\{t\}}
+% instead of \cs{phantom}\texttt{\{h\}}),
+% \item several changes in the documentation
+% (now the Charter font is used, with the \textsf{mathdesign} package).
+% \end{compactlist}}
+%
+% \changes{v2.1}{2022/12/26}{
+% \begin{compactlist}
+% \item including the \textsf{ibrackets} package to improve
+% the management of square brackets,
+% \item new macros \cs{codim}, \cs{sinc}, \cs{var}, \cs{eqdef*},
+% \item removing the warning for the obsolete \cs{paren} command,
+% \item a small change in the \cs{norm} command (bars in small size),
+% \item several changes in documentation.
+% \end{compactlist}}
+%
+% \changes{v2.2}{2023/01/06}{
+% New option \texttt{ibrackets} to load the \textsf{ibrackets} package
+% \emph{optionally} because of errors
+% when using \cs{DeclarePairedDelimiter} with square brackets.}
+%
+% \changes{v2.3}{2023/02/09}{
+% Introducing keyval options as an alternative to \cs{enumber},
+% \cs{inumber}, \cs{jnumber}, \cs{PEupright},
+% and also for using ibrackets, \cs{boldvect} and \cs{arrowvect}.}
+%
+% \changes{v2.4}{2023/02/18}{
+% \begin{compactlist}
+% \item new powerful macros \cs{MathUp}, \cs{MathIt},
+% (and \cs{MathNumbers}, \cs{MathProba}, \cs{MathNormal}),
+% \item keyval options are no longer useful and have been removed,
+% \item loading the package \textsf{ifthen} has been forgotten in v2.3
+% (causing possible issues),
+% \item no more incompatibility when using `i' with accent in \textsf{beamer} titles.
+% \end{compactlist}}
+%
+% \changes{v2.5}{2023/02/23}{
+% \begin{compactlist}
+% \item unification of the code of \cs{MathUp} and \cs{MathIt},
+% \item a new powerful macro \cs{apply} is used in \cs{MathNormal} to act on a list,
+% \item new \cs{tensor} command.
+% \end{compactlist}}
+%
+% \changes{v2.6}{2023/03/01}{
+% \begin{compactlist}
+% \item bug fix in \cs{mm@macro},
+% \item solving incompatibility of the \cs{C} macro when using \textsf{babel} with Russian
+% (thanks to Murray Eisenberg for this bug report on TeX StackExchange),
+% \item \cs{mathrm} added in the macro \cs{eqdef*}.
+% \end{compactlist}}
+%
+% \columnbreak
+% \changes{v2.7}{2023/03/05}{
+% \begin{compactlist}
+% \item macros for sets of numbers (\cs{R}, \cs{C}\ldots) now available only in math mode
+% (following remarks by David Carlisle and Enrico Gregorio),
+% \item special warning when loading \textsf{babel} with Russian
+% (\cs{C} will not be defined in that case).
+% \end{compactlist}}
+%
+% \changes{v2.8}{2023/07/26}{
+% New macro \cs{onlymathC} designed for using \cs{C} in pmath mode
+% when Russian language is loaded.}
+%
+% \changes{v2.9}{2023/12/19}{
+% New option \texttt{decimalcomma}.}
+%
+% \changes{v2.10}{2024/02/20}{
+% \begin{compactlist}
+% \item better compatibility with \textsf{unicode-math}:
+% for the options \texttt{ibrackets}, \texttt{decimalcomma}
+% and the commands \cs{MathUp}, \cs{MathIt},
+% \item Explicit error message when using \texttt{mathcols}
+% without loading the \textsf{multicol} package.
+% \end{compactlist}}
+%
+% \changes{v2.11}{2024/02/26}{
+% \begin{compactlist}\setlength\compactlistindent{-0.5em}
+% \item enhancements of the \cs{pinumber} macro with keyval options:
+% \begin{compactlist}[\dash]
+% \item no necessity to load a Greek letters package,
+% \item improvements of compatibility with \textsf{unicode-math};
+% \end{compactlist}
+% \item changing the font to Adobe Utopia with the package \textsf{fourier}.
+% \end{compactlist}}
+%
+% \changes{v2.12}{2024/02/29}{
+% \begin{compactlist}
+% \item the \textsf{xparse} package has been removed by mistake in v2.11,
+% causing some compatibility issues, it is loaded again by \textsf{mismath},
+% \item improvements to make \cs{pinumber} work better with \textsf{unicode-math}.
+% \end{compactlist}}
+%
+% \changes{v3.0}{2024/03/15}{
+% \begin{compactlist}
+% \item rewriting the \cs{pinumber} command with a new \cs{pifonts} macro,
+% \item presenting other \texttt{lgrmath} values for \cs{pinumber} in the doc,
+% \item The \cs{C} macro is now inside \cs{AtBeginDocument},
+% \item \textsf{amsmath} isn't loaded explicitly because \textsf{mathtools} loads it,
+% \item bug fix with options \texttt{decimalcomma} and \texttt{ibrackets},
+% \item new option \texttt{nofunction} to lighten the package loading,
+% \item addition of macros \cs{coker} and \cs{Res} as standard operator names,
+% \item new option \texttt{classicReIm} to deactivate \cs{Im} and \cs{Re} redefinition,
+% \item new option \texttt{otherReIm} to provide an alternative writing
+% with \texttt{cmsy} font,
+% \item removing the \cs{PEupright} command,
+% \item additional space in the \cs{lfrac} macro increased from \texttt{\textbackslash:}
+% (5mu) to 7mu,
+% \item new optional parameter for adjusting the space in \cs{lfrac},
+% \item changing the \cs{vphantom} argument in \cs{hvect}, \cs{hvec} and \cs{lbar}
+% from `t' to `A', looks better.
+% \end{compactlist}}
+%
+% \changes{v3.1}{2024/06/16}{
+% \begin{compactlist}\setlength\compactlistindent{-0.5em}
+% \item adding a change history,
+% \item bug fix with the \cs{C} macro when using \textsf{hyperref} with
+% \LuaTeX{} or \XeTeX{} engines,
+% \item the $\upDelta$ produced in \cs{eqdef*} is now obtained with \cs{upDelta}
+% (\cs{mathrm}, used before, doesn't work generally),
+% \item several relevant suggestions and remarks by `quark67':
+% \begin{compactlist}[\dash]
+% \item new macros for variations \cs{opDelta} and small variations \cs{opdelta},
+% \item redefinition of \cs{then} as an alias for \cs{implies},
+% \item improvement of the \cs{abs} macro,
+% \item including the \textsf{mleftright} package;
+% \end{compactlist}
+% \item new implementation of \cs{di},
+% \item improvement of the \cs{mul} macro.
+% \end{compactlist}}
+%
+% \end{list}\end{raggedright}
+% \end{multicols}
+%
+% \begin{thebibliography}{35}
% \begin{raggedright}
% \bibitem{TYPMA} \emph{Typesetting mathematics for science and technology according
% to ISO 31/XI}, Claudio Beccari, TUGboat Volume 18 (1997), No.~1.
@@ -1997,6 +2131,7 @@
% \url{https://old.iupac.org/standing/idcns/italic-roman_dec99.pdf}.
% \bibitem{VECT} \emph{\textsf{esvect} -- Typesetting vectors with beautiful
% arrow with \LaTeXe}, Eddie Saudrais, CTAN, v1.3 2013/07/11.
+% \bibitem{MLR} \emph{The \textsf{mleftright} package}, Heiko Oberdiek, CTAN, v1.2 2019/12/03.
% \bibitem{TOOL} \emph{The \textsf{mathtools} package}, Morten Høgholm, Lars Madsen, CTAN,
% v1.29 2022/06/29.
% \bibitem{AMS} \emph{\textsf{amsmath} -- \AmS\ mathmatical facilities for \LaTeX},
diff --git a/macros/latex/contrib/mismath/mismath.pdf b/macros/latex/contrib/mismath/mismath.pdf
index fd41e6702c..79dc76ec46 100644
--- a/macros/latex/contrib/mismath/mismath.pdf
+++ b/macros/latex/contrib/mismath/mismath.pdf
Binary files differ
diff --git a/macros/latex/contrib/mitthesis/MIT-Thesis.pdf b/macros/latex/contrib/mitthesis/MIT-Thesis.pdf
index f0964659d8..e7f9b4a01a 100644
--- a/macros/latex/contrib/mitthesis/MIT-Thesis.pdf
+++ b/macros/latex/contrib/mitthesis/MIT-Thesis.pdf
Binary files differ
diff --git a/macros/latex/contrib/mitthesis/MIT-thesis-template/MIT-Thesis.tex b/macros/latex/contrib/mitthesis/MIT-thesis-template/MIT-Thesis.tex
index 2faced3b18..fc7e8a88f1 100644
--- a/macros/latex/contrib/mitthesis/MIT-thesis-template/MIT-Thesis.tex
+++ b/macros/latex/contrib/mitthesis/MIT-thesis-template/MIT-Thesis.tex
@@ -1,12 +1,11 @@
% !TEX encoding = UTF-8 Unicode
-% !BIB TS-program = biber
-% !BIB program = biber
+% !BIB TS-program = biber
% This file is MIT-Thesis.tex, a LaTeX template for formatting an MIT thesis with the mitthesis class.
%
-% Version: 1.11, 2023/11/02
+% Version: 1.14, 2024/07/19
%
-% Author: John H. Lienhard, copyright 2023. Reuse under the MIT license: https://ctan.org/license/mit
+% Author: John H. Lienhard, copyright 2024. Reuse under the MIT license: https://ctan.org/license/mit
% Documentation is here: https://ctan.org/pkg/mitthesis
@@ -16,8 +15,11 @@
pdfstandard = a-2b,
pdfversion = 1.7,
lang = en-US,
-% debug = {xmp-export}, % uncomment to output a separate xmpi file showing the metadata
+% pdfversion = 2.0,
+% pdfstandard = a-4,
+% debug = {xmp-export}, % uncomment to output a separate xmpi file showing the metadata
}
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass[twoside]{mitthesis} %,fontset=libertine, fontset=newtx-sans-text, fontset=heros-stix2, fontset=stix2
@@ -26,9 +28,9 @@
% option [lineno] provides line numbers, as for editing
% option [mydesign] loads packages for color, title and list formats, margins, or captions: edit mydesign.tex to change defaults.
% option [fontset] is a keyvalue which can be:
-% pdftex or unicode engines: defaultfonts, libertine, lucida
-% pdftex only: fira-newtxsf, newtx, newtx-sans-text
-% unicode engines (luatex): heros-stix2, stix2, termes, termes-stix2
+% for pdftex or unicode engines: defaultfonts, libertine, lucida
+% for pdftex only: fira-newtxsf, newtx, newtx-sans-text
+% for unicode engines (luatex): heros-stix2, stix2, termes, termes-stix2
% if no key value is given, fonts default to CMR (pdftex) or LMR (unicode), i.e., "the LaTeX font".
% You can edit the fontset files or you can write your own, myfonts.tex, and do [fontset=myfonts].
% If you are using multiple languages, load the babel package in your fontset file, before the fonts.
@@ -39,12 +41,23 @@
\usepackage{listings}% documentation is here https://ctan.org/pkg/listings
%% Set chemical formulas nicely
-\usepackage[version=4]{mhchem}% documentation is here https://ctan.org/pkg/mhchem
+\usepackage[version=4]{mhchem}% documentation at https://ctan.org/pkg/mhchem
-%% Latin filler used in Chapter 1, with a test for package version date. https://ctan.org/pkg/lipsum
+%% Latin filler used in Chapter 1, with a test for package version date (https://ctan.org/pkg/lipsum)
\usepackage{lipsum}
\IfPackageAtLeastTF{lipsum}{2021/09/20}{\setlipsum{auto-lang=false}}{}
+%% Table related packages
+
+\usepackage{booktabs}% publication quality tables (https://ctan.org/pkg/booktabs)
+
+\usepackage{array}% Additional options for column formats (https://ctan.org/pkg/array)
+
+%\usepackage{dcolumn}% For alignment of numbers on the decimal place (https://ctan.org/pkg/dcolumn)
+% \newcolumntype{d}[1]{D{.}{.}{#1}}% use with dcolumn package
+
+%\usepackage{tabularx}% adjustable-width columns in tabular (https://ctan.org/pkg/tabularx)
+
%%%%%%%%% Graphics path (to figure files) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -56,8 +69,17 @@
%%%%%%%%% Representative set-up for biblatex %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\usepackage[style=ieee,maxbibnames=10,sorting=none]{biblatex}% style=ext-numeric-comp,articlein=false,giveninits=true
- \DefineBibliographyStrings{english}{url= \textsc{url} , }% replaces default "[Online]. Available" by "URL"
+%% Numerical citations of references
+\usepackage[style=ext-numeric-comp,giveninits=true,maxbibnames=10,sorting=none]{biblatex}
+
+%% IEEE style citations and references
+% \usepackage[style=ieee,maxbibnames=10,sorting=none]{biblatex}% style=ext-numeric-comp,articlein=false,giveninits=true
+% \DefineBibliographyStrings{english}{url= \textsc{url} , }% replaces the IEEE default "[Online]. Available" by "URL"
+
+%% author-year style citations and references
+%% use \parencite, not \cite, when you want "(Author, year)"
+%% The sample files are not set up to include parentheses.
+% \usepackage[style=authoryear, maxbibnames=10]{biblatex}
\addbibresource{mitthesis-sample.bib}%% <== change to YOUR bib file <= CHANGE
@@ -65,9 +87,11 @@
%% to avoid split urls and stretched white space, you can set the bibliography ragged-right:
%\appto{\bibsetup}{\raggedright}
-% biblatex is very powerful, and you can customize most aspects the reference list and citations to suit your needs.
-% documentation is here: https://ctan.org/pkg/biblatex
+%% biblatex is very powerful, and you can customize most aspects the reference list and citations to suit your needs.
+%% documentation is here: https://ctan.org/pkg/biblatex
+%% cheat sheet is here: https://tug.ctan.org/info/biblatex-cheatsheet/biblatex-cheatsheet.pdf
+%% To ensure citations are set, run Latex --> biblatex/biber --> Latex again
%%%%%%%%%% Option to use natbib %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -79,19 +103,9 @@
%%% You can use this to rename the bibliography section
%\renewcommand{\bibname}{References}
-%%% Can adjust space between bibliography items (change 4pt to something else; don't drop last two lengths, they are stretchable "glue")
+%%% To adjust space between bibliography items
%\setlength\bibsep{4pt plus 1pt minus 1pt}
-
-
-%%%%%%%%%% Table related packages %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\usepackage{booktabs}% better quality tables, https://ctan.org/pkg/booktabs
-\usepackage{array}% additional options for table columns, https://ctan.org/pkg/array
-
-%\usepackage{tabularx}% https://ctan.org/pkg/tabularx
-
-%\usepackage{dcolumn}% alignment on decimal place, https://ctan.org/pkg/dcolumn
-%\newcolumntype{d}[1]{D{.}{.}{#1}}
+% change 4pt to something else; don't drop last two lengths (they are stretchable "glue")
%%%%%%%%%% Option for "double spacing" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -107,13 +121,13 @@
% \usepackage{setspace}% documentation at https://ctan.org/pkg/setspace
% \setstretch{1.1}% you can choose some other value for the stretch of space between lines
%
-%% Use one or more of the these commands AFTER the frontmatter
+%% Use one or more of the these commands *AFTER* the frontmatter
%
% \onehalfspacing
% \doublespacing
% \singlespacing % will turn these effects off (you can use these anywhere in the document)
-%% The best result may be to stay with leading selected by the typographer who set up the font.
+%% The best result is usually to stay with leading selected by the typographer who set up the font.
%%%%%%%%%%% Metadata %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -128,7 +142,7 @@
pdfkeywords={Massachusetts Institute of Technology, MIT},
% Add keywords that will help search engines and libraries to find your work.
% Includes the name[s] of the author[s]
- % (If you have used \DocumentMetadata, at line 15, you can just put "\CopyrightAuthor," for the names.)
+ % (If you used \DocumentMetadata at line 14, you can just put "\CopyrightAuthor," for the names.)
%
pdfurl={},
% If you have a url for the thesis, put it here. Otherwise delete this.
@@ -162,29 +176,31 @@
% Use once for each degree fulfilled by thesis
% For two degrees from one department, leave the department argument blank for the second degree {}.
-% \Degree{Bachelor of Science in Physics}{Department of Physics}
-% \Degree{Master of Science in Physics}{}
-\Degree{Bachelor of Science in Mechanical Engineering}{Department of Mechanical Engineering}
+\Degree{Bachelor of Science in Physics}{Department of Physics}
+%\Degree{Master of Science in Physics}{}
+%\Degree{Bachelor of Science in Mechanical Engineering}{Department of Mechanical Engineering}
% If there is more than one supervisor, use the \Supervisor command for each.
\Supervisor{Edward C. Pickering}{Professor of Physics}
+% \Supervisor{Edward C. Pickering}{Professor of Physics, and \\ \> Professor of Something Else}
% \Supervisor{Secunda Castor}{Professor of Research}
% \Supervisor{Quintus Castor}{Professor of Log Dams}
% Professor who formally accepts theses for your department (e.g., the Graduate Officer, Professor Sméagol,...)
% If more than one department, use more than once
-% **If you need to reduce vertical space, put the acceptor title in the second argument and leave the third blank {}.**
- \Acceptor{Primus Castor}{Professor of Wetlands Engineering}{Undergraduate Officer, Department of Physics}
+ \Acceptor{Primus Castor}{Professor of Wetlands Engineering}{}%{Undergraduate Officer, Department of Physics}
% \Acceptor{Tertius Castor}{Professor of Log Dams}{Graduate Officer, Department of Research}
% \Acceptor{Quarta Castor}{Professor of Lodge Building}{Graduate Officer, Department of Mechanical Engineering}
+%% If you need to reduce vertical space, put the acceptor title in the second argument and leave the third blank, {}.
% Usage: \DegreeDate{Month}{year}
-% Valid degree months are September, February, or June
+% Valid degree months are February, May, June, or September
\DegreeDate{June}{1876}
% Date that final thesis is submitted to department
\ThesisDate{May 18, 1876}
+
%%%%%% Choose whether to have a CREATIVE COMMONS License %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% If you are using a cc license, put details of your cc license here.
@@ -208,33 +224,34 @@
% (c) you can put the acceptor name and title onto two lines, rather than three like this:
%
% \Acceptor{Tertius Castor}{Professor and Graduate Officer, Department of Research}{}
-% \Acceptor{Quarta Castor}{Professor and Graduate Officer, Department of Mechanical Engineering}{}
%
-% (d) you can change the font size of the the author name[s] with
+% (d) you can change the font size of the author name[s] with
%
% \AuthorNameSize{\normalsize}
%
-% (e) and you can omit any previous degrees from the title page, instead mentioning them in the Biosketch
+% (e) and you can omit any previous degrees from the title page, instead mentioning them in the biographical sketch
% Also, if you prefer to keep the text toward the top of the page with most white space at the bottom, you
-% can you this command to squash all of the vertical glue (stretchy space) with this command:
+% can use this command to squash all of the vertical glue (stretchy space) with this command:
%
% \Squash
%
% This command is useful when the text has not already reach the bottom of the page, since the glue gets squashed automatically
% when the page is too full.
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Make titlepage
\maketitle
-%%%%%%%%% Contents that you need to write follows %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%% Contents that you need to write follows! %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \includeonly{acknowledgments,biography,chapter1,chapter2,...,appendixa,...}
-% for usage, see https://latexref.xyz/_005cinclude-_0026-_005cincludeonly.html
+% for usage of includeonly, see https://latexref.xyz/_005cinclude-_0026-_005cincludeonly.html
-%%% Frontmatter (write this material in the mentioned files) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%% Frontmatter (write this material in the mentioned files) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% The abstract environment creates all the required headings and footers.
% You only need to the text of the abstract in the file abstract.tex
@@ -242,24 +259,22 @@
\input{abstract.tex}% use \input rather than \include because we're inside an environment
\end{abstract}
-\include{acknowledgments}% .tex extension is presumed by \include
-
-\include{biography}% optional, see MIT Libraries https://libraries.mit.edu/distinctive-collections/thesis-specs/#format
+\include{acknowledgments}% acknowledgments.tex (.tex extension is presumed by \include)
+\include{biography}% biography.tex (optional, see https://libraries.mit.edu/distinctive-collections/thesis-specs/#format)
-%%% Table of contents and lists of stuff (delete lists you don't need, e.g., if no tables) %%%%%%%%
+%%% Table of contents and lists of stuff (delete unused lists, i.e., if no tables or figures) %%%%%
\tableofcontents
\listoffigures
\listoftables
-
%%% Chapters of thesis %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% If you want to use "double spacing", you should start here...
\include{chapter1}% .tex extension is presumed
-%\include{chapter2}
+% \include{chapter2}
%\include{chapter3}
%\include{chapter4}
@@ -270,9 +285,13 @@
\include{appendixa}
-%%% Bibliography %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Bibliography (biblatex) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\defbibheading{bibintoc}{\chapter*{#1}\addcontentsline{toc}{backmatter}{\refname}}
+% this sets the title of contents name for bibliography to \refname (= References)
+% change "backmatter" to "chapter" if you prefer a bold face entry in the table of contents
-\printbibliography[title={References},heading=bibintoc]
+\printbibliography[title={\refname},heading=bibintoc]
% biblatex also supports chapter-by-chapter bibliography, https://tex.stackexchange.com/a/296502/119566
% see the biblatex manual, section 3.14.3
diff --git a/macros/latex/contrib/mitthesis/MIT-thesis-template/acknowledgments.tex b/macros/latex/contrib/mitthesis/MIT-thesis-template/acknowledgments.tex
index a1ceaacffd..de4fcfd51d 100644
--- a/macros/latex/contrib/mitthesis/MIT-thesis-template/acknowledgments.tex
+++ b/macros/latex/contrib/mitthesis/MIT-thesis-template/acknowledgments.tex
@@ -1,11 +1,11 @@
%% acknowledgments.tex
% From mitthesis package
-% Version: 1.01, 2023/10/16
+% Version: 1.02, 2024/06/19
% Documentation: https://ctan.org/pkg/mitthesis
-
\chapter*{Acknowledgments}
-\addcontentsline{toc}{chapter}{Acknowledgments}
+\pdfbookmark[0]{Acknowledgments}{acknowledgments}
+
Write your acknowledgments here.
diff --git a/macros/latex/contrib/mitthesis/MIT-thesis-template/biography.tex b/macros/latex/contrib/mitthesis/MIT-thesis-template/biography.tex
index 30e4784525..6148c2f133 100644
--- a/macros/latex/contrib/mitthesis/MIT-thesis-template/biography.tex
+++ b/macros/latex/contrib/mitthesis/MIT-thesis-template/biography.tex
@@ -2,11 +2,12 @@
%% This section is optional
% From mitthesis package
-% Version: 1.01, 2023/10/16
+% Version: 1.02, 2024/06/19
% Documentation: https://ctan.org/pkg/mitthesis
\chapter*{Biographical Sketch}
-\addcontentsline{toc}{chapter}{Biographical Sketch}
+\pdfbookmark[0]{Biographical Sketch}{biosketch}
+
Silas Whitcomb Holman was born in Harvard, Massachusetts on January 20, 1856. He received his S.B. degree in Physics from MIT in 1876, and then joined the MIT Department of Physics as an Assistant. He became Instructor in Physics in 1880, Assistant Professor in 1882, Associate Professor in 1885, and Full Professor in 1893. Throughout this period, he struggled with increasingly severe rheumatoid arthritis. At length, he was defeated, becoming Professor Emeritus in 1897 and dying on April 1, 1900.
diff --git a/macros/latex/contrib/mitthesis/MIT-thesis-template/chapter1.tex b/macros/latex/contrib/mitthesis/MIT-thesis-template/chapter1.tex
index cc7683744e..1f2acd20a6 100644
--- a/macros/latex/contrib/mitthesis/MIT-thesis-template/chapter1.tex
+++ b/macros/latex/contrib/mitthesis/MIT-thesis-template/chapter1.tex
@@ -1,5 +1,5 @@
% From mitthesis package
-% Version: 1.04, 2023/10/19
+% Version: 1.06, 2024/07/09
% Documentation: https://ctan.org/pkg/mitthesis
@@ -7,11 +7,11 @@
\lipsum[1-2] Postremo aliquos futuros suspicor, qui me ad alias litteras vocent, genus hoc scribendi, etsi sit elegans, personae tamen et dignitatis esse negent~\cite{DKE1969,ww1920,kirk2288a,churchill1948,gibbs1863}.
-\section[A section discussing the first issue: \(J/\psi\)]{A section discussing the first issue: \ifpdftex\(\bm{J}/\bm{\psi}\)\else{\(\symbfup{J/\psi}\)}\fi}
+\section[A section discussing the first issue: \(J/\psi\)]{A section discussing the first issue: \ifpdftex\(\bm{J}/\bm{\psi}\)\else{\(\symbfit{J/\psi}\)}\fi}
We begin with some ideas from the literature \cite{Fong2015,sharpe1}.
-\begin{equation}
+\begin{equation}\label{eqn:1}
\frac{\partial}{\partial t}\left[\rho\bigl(e + \lvert\vec{u}\rvert^2\big/2\bigr)\right] + \nabla\cdot\left[\rho\bigl(h + \lvert\vec{u}\rvert^2\big/2 \bigr)\vec{u}\right]
={}-\nabla \cdot \vec{q} + \rho \vec{u}\cdot\vec{g}+ \frac{\partial}{\partial x_j}\bigl(d_{ji}u_i\bigr)
\end{equation}
@@ -37,7 +37,8 @@ We begin with some ideas from the literature \cite{Fong2015,sharpe1}.
\lipsum[4]
-\subsection{Subsection~eqn.~\eqref{eqn:WT1}}
+%% note use of \ref* here to avoid placing a nested link in the table of contents
+\subsection[Subsection~eqn.~(\ref*{eqn:WT1})]{Subsection~eqn.~\eqref{eqn:WT1}}
\lipsum[5-6]
\subsubsection{A subsubsection}
@@ -84,9 +85,9 @@ L(\ifpdftex\bm{A}\else\symbfup{A}\fi) = \begin{pmatrix}
\ce{SO4^2- + Ba^2+ -> BaSO4 v} \\[0.5em]
\ce{Zn^2+
<=>[+ 2OH-][+ 2H+]
-$\underset{\text{amphoteric hydroxide}}{\ce{Zn(OH)2 v}}$
+$\underset{\textrm{amphoteric hydroxide}}{\ce{Zn(OH)2 v}}$
<=>[+ 2OH-][+ 2H+]
-$\underset{\text{tetrahydroxozincate}}{\ce{[Zn(OH)4]^2-}}$
+$\underset{\textrm{tetrahydroxozincate}}{\ce{[Zn(OH)4]^2-}}$
}
\end{gather}
These examples of chemical formul\ae\ are copied directly from the documentation of the \texttt{mhchem} package, which was used to typeset them.
@@ -94,7 +95,7 @@ These examples of chemical formul\ae\ are copied directly from the documentation
\section{Baroclinic generation of vorticity\label{sec:stratified-flow}}
Substitution of the particle acceleration and application Stokes theorem leads to the \textit{Kelvin-Bjerknes circulation theorem}, for
-$\rho \neq \text{fn}(p)$:
+$\rho \neq \textrm{fn}(p)$:
\begin{align}
\frac{d\Gamma}{dt} &{}= \frac{d}{dt} \int_{\mathcal{C}} \mathbf{u} \cdot d\mathbf{r}\\
&{}= \int_{\mathcal{C}} \frac{D\mathbf{u}}{Dt} \cdot d\mathbf{r} + \underbrace{\int_{\mathcal{C}} \mathbf{u}\cdot d\biggl( \frac{d\mathbf{r}}{dt}\Biggr)}_{=\, 0} \\[-2pt]
@@ -130,11 +131,11 @@ Baroclinic generation of vorticity accounts for the sea breeze and various other
\\[-0.5em]
\toprule
\multicolumn{1}{@{\hspace*{1.5em}}c}{$x$\rule{0pt}{8pt}} &
-\multicolumn{1}{c}{$\text{erf}(x)$} &
-\multicolumn{1}{c!{\hspace*{3.em}}}{$\text{erfc}(x)$} &
+\multicolumn{1}{c}{$\textrm{erf}(x)$} &
+\multicolumn{1}{c!{\hspace*{3.em}}}{$\textrm{erfc}(x)$} &
\multicolumn{1}{c}{$x$} &
-\multicolumn{1}{c}{$\text{erf}(x)$} &
-\multicolumn{1}{c@{\hspace*{1.5em}}}{$\text{erfc}(x)$} \\ \midrule
+\multicolumn{1}{c}{$\textrm{erf}(x)$} &
+\multicolumn{1}{c@{\hspace*{1.5em}}}{$\textrm{erfc}(x)$} \\ \midrule
0.00 & 0.00000 & 1.00000 & 1.10 & 0.88021 & 0.11980 \\
0.05 & 0.05637 & 0.94363 & 1.20 & 0.91031 & 0.08969 \\
0.10 & 0.11246 & 0.88754 & 1.30 & 0.93401 & 0.06599 \\
diff --git a/macros/latex/contrib/mitthesis/MIT-thesis-template/fontsets/mitthesis-newtx-sans-text.tex b/macros/latex/contrib/mitthesis/MIT-thesis-template/fontsets/mitthesis-newtx-sans-text.tex
index a599af35e2..03d62286e2 100644
--- a/macros/latex/contrib/mitthesis/MIT-thesis-template/fontsets/mitthesis-newtx-sans-text.tex
+++ b/macros/latex/contrib/mitthesis/MIT-thesis-template/fontsets/mitthesis-newtx-sans-text.tex
@@ -1,14 +1,17 @@
% From mitthesis package
% Documentation: https://ctan.org/pkg/mitthesis
-\ProvidesFile{mitthesis-newtx-sans-text.tex}[2023/09/12 v1.02 Load newtx sans-serif text and regular math fonts]
+\ProvidesFile{mitthesis-newtx-sans-text.tex}[2023/10/03 v1.03 Load newtx sans-serif text and regular math fonts]
%% newtx package with sans-serif text (Helvetica-like text with Times-like math)
%
\ifpdftex
\RequirePackage[T1]{fontenc}
\RequirePackage[subscriptcorrection,varvw,helvratio=0.91,defaultsups]{newtx}% upint for upright integrals
- \renewcommand{\familydefault}{\sfdefault}% use sans for main text
+ \AtEndPreamble{% added to accommodate v1.731 of newtx, 2023/11/03
+ \renewcommand{\familydefault}{\sfdefault}% use sans for main text
+% \renewcommand{\rmdefault}{\sfdefault}% uses sans for \textrm{}, if that's desired.
+ }
% these two commands enable hyphenation of the typewriter font - https://tex.stackexchange.com/a/204421/119566
% \input{t1ntxtt.fd}
% \DeclareFontFamily{\encodingdefault}{\ttdefault}{\hyphenchar\font=`\-} %
diff --git a/macros/latex/contrib/mitthesis/MIT-thesis-template/mydesign.tex b/macros/latex/contrib/mitthesis/MIT-thesis-template/mydesign.tex
index 2a612d88a1..1d9184e973 100644
--- a/macros/latex/contrib/mitthesis/MIT-thesis-template/mydesign.tex
+++ b/macros/latex/contrib/mitthesis/MIT-thesis-template/mydesign.tex
@@ -1,14 +1,14 @@
% From mitthesis package
% Documentation: https://ctan.org/pkg/mitthesis
-\ProvidesFile{mydesign.tex}[2023/10/11 v1.03 Typographic design options for thesis]
+\ProvidesFile{mydesign.tex}[2024/06/28 v1.04 Typographic design options for thesis]
%%%%%%%%%% Color support %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Color package: xcolor.
%% Change this if you prefer something else
-\usepackage[hyperref,dvipsnames,svgnames,x11names]{xcolor}
+\usepackage[dvipsnames,svgnames,x11names]{xcolor}
%% can add option [table] to xcolor to use color in tables (see xcolor documentation)
@@ -57,7 +57,7 @@
\titleformat{\subsection}{\mathversion{bold}\normalfont\large\bfseries}{\thesubsection}{1em}{}
\titleformat{\subsubsection}{\mathversion{bold}\normalfont\normalsize\bfseries}{\thesubsubsection}{1em}{}
-% ==> NOT every font includes a bold math version, so you may need to use other math macros in the headings to get bold math <==
+% ==> NOT every font includes a bold math version, so you may need other math macros in the headings to get bold math <==
%%%%%%%%% Change page margins %%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/macros/latex/contrib/mitthesis/README.md b/macros/latex/contrib/mitthesis/README.md
index 9ead4e57e0..9d2918ca36 100644
--- a/macros/latex/contrib/mitthesis/README.md
+++ b/macros/latex/contrib/mitthesis/README.md
@@ -1,11 +1,11 @@
#mitthesis --- A LaTeX template for an MIT thesis#
- v1.11 dated 2023/11/02
+ v1.14 dated 2024/07/19
####Overview####
This class provides a LaTeX template to format an MIT thesis according to
- the requirements of the Massachusetts Institute of Technology Libraries (as posted in 2023):
+ the requirements of the Massachusetts Institute of Technology Libraries (as posted in 2024):
[https://libraries.mit.edu/distinctive-collections/thesis-specs/](https://libraries.mit.edu/distinctive-collections/thesis-specs/)
@@ -53,9 +53,30 @@
---
####Change log####
+ v1.14 (19 July 2024)
+ - add backward compatibility code for \\text_titlecase_all:n
+ - adjust supervisor and acceptor titles used on sample cover pages
+ - format J/psi as \\symbfit in sample chapter 1 and regenerate font samples
+ - edit documentation
+
+ v1.13 (03 July 2024)
+ - same as v1.12, except now includes the correct documentation
+
+ v1.12 (02 July 2024)
+ - add logic for one degree issued by two departments
+ - fix missing space in abstract block for multiple departments
+ - adjust second department layout on title and abstract pages
+ - table of contents revised
+ - revise documentation
+ - switch default citation style to numeric (from IEEE). Provide examples for IEEE and author/year styles.
+ - add \\AtEndPreamble{..} to mitthesis-newtx-sans-text.tex to accommodate v1.731 of newtx
+ - in chapter1.tex, replace \\text by \\textrm; fix nested link in section heading
+ - remove obsolete hyperref option from xcolor
+ - minor changes to log notes of fontset files
+ - code clean up
v1.11 (02 November 2023)
- - Revise all skips on cover page to better group material while allowing for glue compression as content increases; increase font size of author name; provide user macros for control cover page spacing and author name font.
+ - revise all skips on cover page to better group material while allowing for glue compression as content increases; increase font size of author name; provide user macros for control cover page spacing and author name font.
- use \\mdseries for linenumbers in all cases, rather than using the locally active series
- remove \\raggedright in favor of \\bibsetup for bibliography in MIT-Thesis.tex
- add backward compatibility for alt tag of \\includegraphics for pre-2021/11/15 distributions, add alt tag in chapter1.tex
diff --git a/macros/latex/contrib/mitthesis/examples/cover_page_samples/No_cc_license.pdf b/macros/latex/contrib/mitthesis/examples/cover_page_samples/No_cc_license.pdf
index 304d89113b..159f037a4d 100644
--- a/macros/latex/contrib/mitthesis/examples/cover_page_samples/No_cc_license.pdf
+++ b/macros/latex/contrib/mitthesis/examples/cover_page_samples/No_cc_license.pdf
Binary files differ
diff --git a/macros/latex/contrib/mitthesis/examples/cover_page_samples/One_author_one_degree.pdf b/macros/latex/contrib/mitthesis/examples/cover_page_samples/One_author_one_degree.pdf
index 737603f89c..8b4d3e0942 100644
--- a/macros/latex/contrib/mitthesis/examples/cover_page_samples/One_author_one_degree.pdf
+++ b/macros/latex/contrib/mitthesis/examples/cover_page_samples/One_author_one_degree.pdf
Binary files differ
diff --git a/macros/latex/contrib/mitthesis/examples/cover_page_samples/One_author_one_degree_two_departments.pdf b/macros/latex/contrib/mitthesis/examples/cover_page_samples/One_author_one_degree_two_departments.pdf
new file mode 100644
index 0000000000..e7e2f13e88
--- /dev/null
+++ b/macros/latex/contrib/mitthesis/examples/cover_page_samples/One_author_one_degree_two_departments.pdf
Binary files differ
diff --git a/macros/latex/contrib/mitthesis/examples/cover_page_samples/One_author_two_degrees.pdf b/macros/latex/contrib/mitthesis/examples/cover_page_samples/One_author_two_degrees.pdf
index 7ab9882820..1adb097a70 100644
--- a/macros/latex/contrib/mitthesis/examples/cover_page_samples/One_author_two_degrees.pdf
+++ b/macros/latex/contrib/mitthesis/examples/cover_page_samples/One_author_two_degrees.pdf
Binary files differ
diff --git a/macros/latex/contrib/mitthesis/examples/cover_page_samples/One_author_two_degrees_from_one_department.pdf b/macros/latex/contrib/mitthesis/examples/cover_page_samples/One_author_two_degrees_from_one_department.pdf
index 8950c7ed3c..0617a275f8 100644
--- a/macros/latex/contrib/mitthesis/examples/cover_page_samples/One_author_two_degrees_from_one_department.pdf
+++ b/macros/latex/contrib/mitthesis/examples/cover_page_samples/One_author_two_degrees_from_one_department.pdf
Binary files differ
diff --git a/macros/latex/contrib/mitthesis/examples/cover_page_samples/Two_authors_one_degree.pdf b/macros/latex/contrib/mitthesis/examples/cover_page_samples/Two_authors_one_degree.pdf
index 61a2b63115..7e4300d5b6 100644
--- a/macros/latex/contrib/mitthesis/examples/cover_page_samples/Two_authors_one_degree.pdf
+++ b/macros/latex/contrib/mitthesis/examples/cover_page_samples/Two_authors_one_degree.pdf
Binary files differ
diff --git a/macros/latex/contrib/mitthesis/examples/cover_page_samples/Two_authors_two_degrees.pdf b/macros/latex/contrib/mitthesis/examples/cover_page_samples/Two_authors_two_degrees.pdf
index c9ccbd8a9a..299acda338 100644
--- a/macros/latex/contrib/mitthesis/examples/cover_page_samples/Two_authors_two_degrees.pdf
+++ b/macros/latex/contrib/mitthesis/examples/cover_page_samples/Two_authors_two_degrees.pdf
Binary files differ
diff --git a/macros/latex/contrib/mitthesis/examples/cover_page_samples/latex_sources/One_author_one_degree_two_departments.tex b/macros/latex/contrib/mitthesis/examples/cover_page_samples/latex_sources/One_author_one_degree_two_departments.tex
new file mode 100644
index 0000000000..6c1f5c3982
--- /dev/null
+++ b/macros/latex/contrib/mitthesis/examples/cover_page_samples/latex_sources/One_author_one_degree_two_departments.tex
@@ -0,0 +1,123 @@
+% !TEX encoding = UTF-8 Unicode
+% !BIB TS-program = biber
+% !BIB program = biber
+
+% Author: John H. Lienhard (c) 2024. Reuse under the MIT license: https://ctan.org/license/mit
+% Version 1.02, 2024/07/08
+
+% Documentation: https://ctan.org/pkg/mitthesis
+
+%% Don't modify the \DocumentMetadata command unless you know what it does.
+%% If this command throws an "undefined" error, your latex system is out of date: try commenting this command out.
+\DocumentMetadata
+{
+ pdfstandard = a-2b,
+ pdfversion = 1.7,
+ lang = en-US,
+% debug = {xmp-export}, % output xmpi file to directly examine metadata
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\documentclass[]{mitthesis}
+%
+% option [twoside] gives facing-page behavior for printing; omitting it will eliminate even-numbered blank pages.
+% option [lineno] provides line numbers, as for editing
+% option [mydesign] loads titlesec, enumitem, caption, subcaption - you may edit the mydesign.tex file as you like it.
+% option [fontset] is a keyvalue which can be:
+% pdftex or unicode engines: defaultfonts, libertine, lucida
+% pdftex only: fira-newtxsf, newtx, newtx-sans-text
+% unicode engines (luatex): heros-stix2, stix2, termes, termes-stix2
+% if no key value is given, fonts default to CMR (pdftex) or LMR (unicode), i.e., "the latex font".
+% You can edit the fontset files or you can write your own, myfonts.tex, and do [fontset=myfonts].
+% If you are using multiple languages, load the babel package in your fontset file, before the fonts.
+
+
+%%%%%%%%%%% Metadata %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Most of the document metadata is created automatically.
+% The following items should be adjusted to match your work. <================= !!!!!!!!!!
+
+\hypersetup{%
+ pdfsubject={Template for writing MIT theses with the mitthesis class},
+ % Change this to briefly state topic of your thesis
+%
+ pdfkeywords={Massachusetts Institute of Technology, MIT},
+ % Add keywords that will help search engines and libraries to find your work.
+ % Includes the name[s] of the author[s]
+ % (If you have used \DocumentMetadata, at line 15, you can just put "\CopyrightAuthor," for the names.)
+%
+ pdfurl={},
+ % If you have a url for the thesis, put it here. Otherwise delete this.
+ % (MIT Libraries will put your thesis in DSPACE with a persistent url after you submit it.)
+%
+ pdfcontactemail={},
+ % You can put a [permanent] email address into the metadata, if you like.
+ % Otherwise delete this.
+%
+ pdfauthortitle={},
+ % If you have a title, you can include it here.
+}
+
+
+%%%%%%%%%%%%%% End preamble %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\begin{document}
+
+
+%%% edit the following commands to match your thesis %%%%%%%%%%
+
+\title{The Atomic Theory as Applied To Gases, with Some Experiments on the Viscosity of Air}
+
+% \Author{Author full name}{Author department}[Author's first PREVIOUS degree][Author's second PREVIOUS degree][...
+% Note that third, fourth, fifth, and sixth arguments are optional [] and may be omitted
+
+% note on names: most of the following names are made up; Silas Holman was a professor at MIT in the 19th century.
+
+\Author{Silas W. Holman}{Department of Nuclear Science and Engineering}%[B.S. Physics, MIT, 1876][MBA, Ferengi School of Management, 2022]
+%\Author{Luisa Hernández}{Department of Research}%[B.S. Mechanical Engineering, UCLA, 2018][M.S. Stellar Interiors, Vulcan Science Academy, 2020][MBA, Ferengi School of Management, 2022]
+
+% For one degree issued by two departments, leave the degree argument blank for the second degree {}.
+\Degree{Master of Science in Computational Nuclear Materials}{Department of Nuclear Science and Engineering}
+\Degree{}{Center for Computational Science and Engineering}
+
+% If there is more than one supervisor, use the \Supervisor command for each.
+\Supervisor{Edward C. Pickering}{Professor of Nuclear Science and Engineering}
+%\Supervisor{Secunda Castor}{Professor of Research}
+%\Supervisor{Quintus Castor}{Professor of Log Dams}
+
+% Professor who formally accepts theses for your department (e.g., the Graduate Officer, Professor Sméagol,...)
+% If more than one department, use more than once
+% If you need to reduce vertical space, put the acceptor title in the second argument and leave the third blank {}.
+\Acceptor{Primus Castor}{Professor and Graduate Officer}{Department of Nuclear Science and Engineering}
+\Acceptor{Tertius Castor}{Professor and Graduate Officer}{Center for Computational Science and Engineering}
+%\Acceptor{Quarta Castor}{Professor of Lodge Building}{Undergraduate Officer, Department of Mechanical Engineering}
+
+
+% Usage: \DegreeDate{Month}{year}
+% Valid degree months are September, February, or June.
+\DegreeDate{June}{1876}
+
+% Date that final thesis is submitted to department
+\ThesisDate{May 18, 1876}
+
+%%%%%% Choose whether to have a CREATIVE COMMONS License %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% If you are using a cc license, put details of your cc license here.
+% Omit this command if you are not using a cc license.
+%
+\CClicense{CC BY-NC-ND 4.0}{https://creativecommons.org/licenses/by-nc-nd/4.0/}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%% Titlepage
+\maketitle
+
+% The abstract environment creates all the required headers and footnote.
+% You only need to add the text of the abstract itself in the file abstract.tex
+\begin{abstract}
+ \input{abstract.tex}% in this case, use \input rather than \include because you are inside an environment
+\end{abstract}
+
+\end{document}
diff --git a/macros/latex/contrib/mitthesis/examples/cover_page_samples/latex_sources/One_author_two_degrees.tex b/macros/latex/contrib/mitthesis/examples/cover_page_samples/latex_sources/One_author_two_degrees.tex
index 6334a228ae..f8ebb1b965 100644
--- a/macros/latex/contrib/mitthesis/examples/cover_page_samples/latex_sources/One_author_two_degrees.tex
+++ b/macros/latex/contrib/mitthesis/examples/cover_page_samples/latex_sources/One_author_two_degrees.tex
@@ -85,8 +85,7 @@
% If there is more than one supervisor, use the \Supervisor command for each.
\Supervisor{Edward C. Pickering}{Professor of Physics}
-\Supervisor{Secunda Castor}{Professor of Research}
-%\Supervisor{Quintus Castor}{Professor of Log Dams}
+\Supervisor{Secunda Castor}{Professor of Mechanical Engineering}
% Professor who formally accepts theses for your department (e.g., the Graduate Officer, Professor Sméagol,...)
% If more than one department, use more than once
diff --git a/macros/latex/contrib/mitthesis/examples/cover_page_samples/latex_sources/Two_authors_one_degree.tex b/macros/latex/contrib/mitthesis/examples/cover_page_samples/latex_sources/Two_authors_one_degree.tex
index e5e2618b69..a757806b01 100644
--- a/macros/latex/contrib/mitthesis/examples/cover_page_samples/latex_sources/Two_authors_one_degree.tex
+++ b/macros/latex/contrib/mitthesis/examples/cover_page_samples/latex_sources/Two_authors_one_degree.tex
@@ -2,7 +2,7 @@
% !BIB TS-program = biber
% !BIB program = biber
-% Author: John H. Lienhard (c) 2023. Reuse under the MIT license: https://ctan.org/license/mit
+% Author: John H. Lienhard (c) 2024. Reuse under the MIT license: https://ctan.org/license/mit
% Documentation: https://ctan.org/pkg/mitthesis
@@ -75,7 +75,7 @@
% note on names: most of the following names are made up; Silas Holman was a professor at MIT in the 19th century.
\Author{Silas W. Holman}{Department of Physics}%[B.S. Physics, MIT, 1876][MBA, Ferengi School of Management, 2022]
-\Author{Luisa Hernández}{Department of Research}[B.S. Mechanical Engineering, UCLA, 2018][M.S. Stellar Interiors, Vulcan Science Academy, 2020][MBA, Ferengi School of Management, 2022]
+\Author{Luisa Hernández}{Department of Physics}[B.S. Mechanical Engineering, UCLA, 2018][M.S. Stellar Interiors, Vulcan Science Academy, 2020][MBA, Ferengi School of Management, 2022]
% Use once for each degree fulfilled by thesis
% For two degrees from one department, leave the department argument blank for the second degree {}.
@@ -85,20 +85,11 @@
% If there is more than one supervisor, use the \Supervisor command for each.
\Supervisor{Edward C. Pickering}{Professor of Physics}
-%\Supervisor{Secunda Castor}{Professor of Research}
-%\Supervisor{Quintus Castor}{Professor of Log Dams}
% Professor who formally accepts theses for your department (e.g., the Graduate Officer, Professor Sméagol,...)
% If more than one department, use more than once
% If you need to reduce vertical space, put the acceptor title in the second argument and leave the third blank {}.
-%\Acceptor{Primus Castor}{Professor of Wetlands Engineering}{Graduate Officer, Department of Physics}
\Acceptor{Quintus Castor}{Professor of Wetlands Engineering}{Undergraduate Officer, Department of Physics}
-%\Acceptor{Tertius Castor}{Professor of Log Dams}{Graduate Officer, Department of Research}
-%\Acceptor{Quarta Castor}{Professor of Lodge Building}{Graduate Officer, Department of Mechanical Engineering}
-
-% If your title page is overflowing (from too many names, degrees, etc.), you can scale
-% down the Signature block at the bottom with this command, or use another creative solution...
-%\SignatureBlockSize{\small} %\SignatureBlockSize{\footnotesize}
% Usage: \DegreeDate{Month}{year}
% Valid degree months are September, February, or June.
diff --git a/macros/latex/contrib/mitthesis/examples/cover_page_samples/latex_sources/Two_authors_two_degrees.tex b/macros/latex/contrib/mitthesis/examples/cover_page_samples/latex_sources/Two_authors_two_degrees.tex
index 5e004fe134..57a957b6ba 100644
--- a/macros/latex/contrib/mitthesis/examples/cover_page_samples/latex_sources/Two_authors_two_degrees.tex
+++ b/macros/latex/contrib/mitthesis/examples/cover_page_samples/latex_sources/Two_authors_two_degrees.tex
@@ -2,8 +2,8 @@
% !BIB TS-program = biber
% !BIB program = biber
-% Author: John H. Lienhard (c) 2023. Reuse under the MIT license: https://ctan.org/license/mit
-% Version 1.01, 2023/10/27
+% Author: John H. Lienhard (c) 2024. Reuse under the MIT license: https://ctan.org/license/mit
+% Version 1.02, 2024/07/08
% Documentation: https://ctan.org/pkg/mitthesis
@@ -81,20 +81,17 @@
% Use once for each degree fulfilled by thesis
% For two degrees from one department, leave the department argument blank for the second degree {}.
\Degree{Master of Science in Physics}{Department of Physics}
-%\Degree{Master of Science in Physics}{}
\Degree{Master of Science in Mechanical Engineering}{Department of Mechanical Engineering}
% If there is more than one supervisor, use the \Supervisor command for each.
\Supervisor{Edward C. Pickering}{Professor of Physics}
-\Supervisor{Secunda Castor}{Professor of Research}
-%\Supervisor{Quintus Castor}{Professor of Log Dams}
+\Supervisor{Secunda Castor}{Professor of of Mechanical Engineering}
% Professor who formally accepts theses for your department (e.g., the Graduate Officer, Professor Sméagol,...)
% If more than one department, use more than once
% If you need to reduce vertical space, put the acceptor title in the second argument and leave the third blank {}.
\Acceptor{Primus Castor}{Professor and Graduate Officer, Department of Physics}{}
\Acceptor{Tertius Castor}{Professor and Graduate Officer, Department of Mechanical Engineering}{}
-%\Acceptor{Quarta Castor}{Professor of Lodge Building}{Undergraduate Officer, Department of Mechanical Engineering}
% In this example, several steps have been taken to make the content fit on the title page! The \Acceptors have been confined to two
% lines in the above commands, the signature block font size is reduced, the skips are tightened, the author names use normal font size,
diff --git a/macros/latex/contrib/mitthesis/examples/cover_page_samples/latex_sources/cover_compile.sh b/macros/latex/contrib/mitthesis/examples/cover_page_samples/latex_sources/cover_compile.sh
new file mode 100755
index 0000000000..da23571eff
--- /dev/null
+++ b/macros/latex/contrib/mitthesis/examples/cover_page_samples/latex_sources/cover_compile.sh
@@ -0,0 +1,31 @@
+#! /bin/bash
+
+# first run
+
+for i in *.tex;
+ do
+ if [ "$i" != "abstract.tex" ] ; then
+ pdflatex $i;
+ fi;
+ done
+
+# second run
+
+for i in *.tex;
+ do
+ if [ "$i" != "abstract.tex" ] ; then
+ pdflatex $i;
+ fi;
+ done
+
+# clean up
+
+mkdir pdffiles
+mv *.pdf pdffiles
+rm *.aux
+rm *.gz
+rm *.log
+
+
+
+
diff --git a/macros/latex/contrib/mitthesis/examples/font_samples/Defaultfonts.pdf b/macros/latex/contrib/mitthesis/examples/font_samples/Defaultfonts.pdf
index e55782bbb4..97243bde84 100644
--- a/macros/latex/contrib/mitthesis/examples/font_samples/Defaultfonts.pdf
+++ b/macros/latex/contrib/mitthesis/examples/font_samples/Defaultfonts.pdf
Binary files differ
diff --git a/macros/latex/contrib/mitthesis/examples/font_samples/Fira_Newtxsf.pdf b/macros/latex/contrib/mitthesis/examples/font_samples/Fira_Newtxsf.pdf
index 2d802b2a0e..cc3e40ce75 100644
--- a/macros/latex/contrib/mitthesis/examples/font_samples/Fira_Newtxsf.pdf
+++ b/macros/latex/contrib/mitthesis/examples/font_samples/Fira_Newtxsf.pdf
Binary files differ
diff --git a/macros/latex/contrib/mitthesis/examples/font_samples/Heros-Stix2.pdf b/macros/latex/contrib/mitthesis/examples/font_samples/Heros-Stix2.pdf
index 09a93e218b..c09afd43ee 100644
--- a/macros/latex/contrib/mitthesis/examples/font_samples/Heros-Stix2.pdf
+++ b/macros/latex/contrib/mitthesis/examples/font_samples/Heros-Stix2.pdf
Binary files differ
diff --git a/macros/latex/contrib/mitthesis/examples/font_samples/Libertine.pdf b/macros/latex/contrib/mitthesis/examples/font_samples/Libertine.pdf
index 45b6d25430..418bf7e8d3 100644
--- a/macros/latex/contrib/mitthesis/examples/font_samples/Libertine.pdf
+++ b/macros/latex/contrib/mitthesis/examples/font_samples/Libertine.pdf
Binary files differ
diff --git a/macros/latex/contrib/mitthesis/examples/font_samples/Lucida.pdf b/macros/latex/contrib/mitthesis/examples/font_samples/Lucida.pdf
index 383bbfd3a9..43081a36f0 100644
--- a/macros/latex/contrib/mitthesis/examples/font_samples/Lucida.pdf
+++ b/macros/latex/contrib/mitthesis/examples/font_samples/Lucida.pdf
Binary files differ
diff --git a/macros/latex/contrib/mitthesis/examples/font_samples/Newtx-sans-text.pdf b/macros/latex/contrib/mitthesis/examples/font_samples/Newtx-sans-text.pdf
index 3c8fc160ba..d21ca4d057 100644
--- a/macros/latex/contrib/mitthesis/examples/font_samples/Newtx-sans-text.pdf
+++ b/macros/latex/contrib/mitthesis/examples/font_samples/Newtx-sans-text.pdf
Binary files differ
diff --git a/macros/latex/contrib/mitthesis/examples/font_samples/Newtx.pdf b/macros/latex/contrib/mitthesis/examples/font_samples/Newtx.pdf
index 142d3afc0d..45952c0c52 100644
--- a/macros/latex/contrib/mitthesis/examples/font_samples/Newtx.pdf
+++ b/macros/latex/contrib/mitthesis/examples/font_samples/Newtx.pdf
Binary files differ
diff --git a/macros/latex/contrib/mitthesis/examples/font_samples/Stix2.pdf b/macros/latex/contrib/mitthesis/examples/font_samples/Stix2.pdf
index 46b54f1a07..0792ee30f9 100644
--- a/macros/latex/contrib/mitthesis/examples/font_samples/Stix2.pdf
+++ b/macros/latex/contrib/mitthesis/examples/font_samples/Stix2.pdf
Binary files differ
diff --git a/macros/latex/contrib/mitthesis/examples/font_samples/Termes-stix2.pdf b/macros/latex/contrib/mitthesis/examples/font_samples/Termes-stix2.pdf
index e4306cb237..80b8e07d10 100644
--- a/macros/latex/contrib/mitthesis/examples/font_samples/Termes-stix2.pdf
+++ b/macros/latex/contrib/mitthesis/examples/font_samples/Termes-stix2.pdf
Binary files differ
diff --git a/macros/latex/contrib/mitthesis/examples/font_samples/Termes.pdf b/macros/latex/contrib/mitthesis/examples/font_samples/Termes.pdf
index 93e1db4400..90dfd3ab31 100644
--- a/macros/latex/contrib/mitthesis/examples/font_samples/Termes.pdf
+++ b/macros/latex/contrib/mitthesis/examples/font_samples/Termes.pdf
Binary files differ
diff --git a/macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Defaultfonts.tex b/macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Defaultfonts.tex
index 8b34293ed2..b6480ef952 100644
--- a/macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Defaultfonts.tex
+++ b/macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Defaultfonts.tex
@@ -56,8 +56,8 @@
%%%%%%%%% Representative set-up for biblatex %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\usepackage[style=ieee,maxbibnames=10,sorting=none]{biblatex}% style=ext-numeric-comp,articlein=false,giveninits=true
- \DefineBibliographyStrings{english}{url= \textsc{url} , }% replaces default "[Online]. Available" by "URL"
+%% Numerical citations of references
+\usepackage[style=ext-numeric-comp,giveninits=true,maxbibnames=10,sorting=none]{biblatex}
\addbibresource{mitthesis-sample.bib}%% <== change to YOUR bib file <================= CHANGE
@@ -246,10 +246,12 @@
%%% Bibliography %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-{ \raggedright% to avoid stretched white space and split urls; DELETE THIS if you prefer justified text
-%
-\printbibliography[title={References},heading=bibintoc]
-}
+\defbibheading{bibintoc}{\chapter*{#1}\addcontentsline{toc}{backmatter}{\refname}}
+% this sets the title of contents name for bibliography to \refname (= References)
+% change "backmatter" to "chapter" if you prefer a bold face entry in the table of contents
+
+\printbibliography[title={\refname},heading=bibintoc]
+
% biblatex also supports chapter-by-chapter bibliography, https://tex.stackexchange.com/a/296502/119566
% see the biblatex manual, section 3.14.3
diff --git a/macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Fira_Newtxsf.tex b/macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Fira_Newtxsf.tex
index d428bcadf1..f2c8ed1158 100644
--- a/macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Fira_Newtxsf.tex
+++ b/macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Fira_Newtxsf.tex
@@ -56,8 +56,8 @@
%%%%%%%%% Representative set-up for biblatex %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\usepackage[style=ieee,maxbibnames=10,sorting=none]{biblatex}% style=ext-numeric-comp,articlein=false,giveninits=true
- \DefineBibliographyStrings{english}{url= \textsc{url} , }% replaces default "[Online]. Available" by "URL"
+%% Numerical citations of references
+\usepackage[style=ext-numeric-comp,giveninits=true,maxbibnames=10,sorting=none]{biblatex}
\addbibresource{mitthesis-sample.bib}%% <== change to YOUR bib file <================= CHANGE
@@ -246,12 +246,11 @@
%%% Bibliography %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-{ \raggedright% to avoid stretched white space and split urls; DELETE THIS if you prefer justified text
-%
-\printbibliography[title={References},heading=bibintoc]
-}
-% biblatex also supports chapter-by-chapter bibliography, https://tex.stackexchange.com/a/296502/119566
-% see the biblatex manual, section 3.14.3
+\defbibheading{bibintoc}{\chapter*{#1}\addcontentsline{toc}{backmatter}{\refname}}
+% this sets the title of contents name for bibliography to \refname (= References)
+% change "backmatter" to "chapter" if you prefer a bold face entry in the table of contents
+
+\printbibliography[title={\refname},heading=bibintoc]
%%%% Option for natbib %%%%%%%%%%%%%
diff --git a/macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Heros-Stix2.tex b/macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Heros-Stix2.tex
index 1ae057c0cd..7e914bfa38 100644
--- a/macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Heros-Stix2.tex
+++ b/macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Heros-Stix2.tex
@@ -56,8 +56,8 @@
%%%%%%%%% Representative set-up for biblatex %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\usepackage[style=ieee,maxbibnames=10,sorting=none]{biblatex}% style=ext-numeric-comp,articlein=false,giveninits=true
- \DefineBibliographyStrings{english}{url= \textsc{url} , }% replaces default "[Online]. Available" by "URL"
+%% Numerical citations of references
+\usepackage[style=ext-numeric-comp,giveninits=true,maxbibnames=10,sorting=none]{biblatex}
\addbibresource{mitthesis-sample.bib}%% <== change to YOUR bib file <================= CHANGE
@@ -246,9 +246,13 @@
%%% Bibliography %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\defbibheading{bibintoc}{\chapter*{#1}\addcontentsline{toc}{backmatter}{\refname}}
+% this sets the title of contents name for bibliography to \refname (= References)
+% change "backmatter" to "chapter" if you prefer a bold face entry in the table of contents
+
{ \raggedright% to avoid stretched white space and split urls; DELETE THIS if you prefer justified text
%
-\printbibliography[title={References},heading=bibintoc]
+\printbibliography[title={\refname},heading=bibintoc]
}
% biblatex also supports chapter-by-chapter bibliography, https://tex.stackexchange.com/a/296502/119566
% see the biblatex manual, section 3.14.3
diff --git a/macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Libertine.tex b/macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Libertine.tex
index 8fa97df9b0..9198d8a489 100644
--- a/macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Libertine.tex
+++ b/macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Libertine.tex
@@ -56,8 +56,8 @@
%%%%%%%%% Representative set-up for biblatex %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\usepackage[style=ieee,maxbibnames=10,sorting=none]{biblatex}% style=ext-numeric-comp,articlein=false,giveninits=true
- \DefineBibliographyStrings{english}{url= \textsc{url} , }% replaces default "[Online]. Available" by "URL"
+%% Numerical citations of references
+\usepackage[style=ext-numeric-comp,giveninits=true,maxbibnames=10,sorting=none]{biblatex}
\addbibresource{mitthesis-sample.bib}%% <== change to YOUR bib file <================= CHANGE
@@ -246,10 +246,12 @@
%%% Bibliography %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-{ \raggedright% to avoid stretched white space and split urls; DELETE THIS if you prefer justified text
-%
-\printbibliography[title={References},heading=bibintoc]
-}
+\defbibheading{bibintoc}{\chapter*{#1}\addcontentsline{toc}{backmatter}{\refname}}
+% this sets the title of contents name for bibliography to \refname (= References)
+% change "backmatter" to "chapter" if you prefer a bold face entry in the table of contents
+
+\printbibliography[title={\refname},heading=bibintoc]
+
% biblatex also supports chapter-by-chapter bibliography, https://tex.stackexchange.com/a/296502/119566
% see the biblatex manual, section 3.14.3
diff --git a/macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Lucida.tex b/macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Lucida.tex
index 1af3c90754..3fd445d4ff 100644
--- a/macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Lucida.tex
+++ b/macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Lucida.tex
@@ -56,8 +56,8 @@
%%%%%%%%% Representative set-up for biblatex %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\usepackage[style=ieee,maxbibnames=10,sorting=none]{biblatex}% style=ext-numeric-comp,articlein=false,giveninits=true
- \DefineBibliographyStrings{english}{url= \textsc{url} , }% replaces default "[Online]. Available" by "URL"
+%% Numerical citations of references
+\usepackage[style=ext-numeric-comp,giveninits=true,maxbibnames=10,sorting=none]{biblatex}
\addbibresource{mitthesis-sample.bib}%% <== change to YOUR bib file <================= CHANGE
@@ -246,10 +246,12 @@
%%% Bibliography %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-{ \raggedright% to avoid stretched white space and split urls; DELETE THIS if you prefer justified text
-%
-\printbibliography[title={References},heading=bibintoc]
-}
+\defbibheading{bibintoc}{\chapter*{#1}\addcontentsline{toc}{backmatter}{\refname}}
+% this sets the title of contents name for bibliography to \refname (= References)
+% change "backmatter" to "chapter" if you prefer a bold face entry in the table of contents
+
+\printbibliography[title={\refname},heading=bibintoc]
+
% biblatex also supports chapter-by-chapter bibliography, https://tex.stackexchange.com/a/296502/119566
% see the biblatex manual, section 3.14.3
diff --git a/macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Newtx-sans-text.tex b/macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Newtx-sans-text.tex
index 87ad88c57e..9729118c30 100644
--- a/macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Newtx-sans-text.tex
+++ b/macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Newtx-sans-text.tex
@@ -56,8 +56,8 @@
%%%%%%%%% Representative set-up for biblatex %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\usepackage[style=ieee,maxbibnames=10,sorting=none]{biblatex}% style=ext-numeric-comp,articlein=false,giveninits=true
- \DefineBibliographyStrings{english}{url= \textsc{url} , }% replaces default "[Online]. Available" by "URL"
+%% Numerical citations of references
+\usepackage[style=ext-numeric-comp,giveninits=true,maxbibnames=10,sorting=none]{biblatex}
\addbibresource{mitthesis-sample.bib}%% <== change to YOUR bib file <================= CHANGE
@@ -246,12 +246,11 @@
%%% Bibliography %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-{ \raggedright% to avoid stretched white space and split urls; DELETE THIS if you prefer justified text
-%
-\printbibliography[title={References},heading=bibintoc]
-}
-% biblatex also supports chapter-by-chapter bibliography, https://tex.stackexchange.com/a/296502/119566
-% see the biblatex manual, section 3.14.3
+\defbibheading{bibintoc}{\chapter*{#1}\addcontentsline{toc}{backmatter}{\refname}}
+% this sets the title of contents name for bibliography to \refname (= References)
+% change "backmatter" to "chapter" if you prefer a bold face entry in the table of contents
+
+\printbibliography[title={\refname},heading=bibintoc]
%%%% Option for natbib %%%%%%%%%%%%%
diff --git a/macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Newtx.tex b/macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Newtx.tex
index eb96cc7892..e2cebe98ac 100644
--- a/macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Newtx.tex
+++ b/macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Newtx.tex
@@ -56,8 +56,8 @@
%%%%%%%%% Representative set-up for biblatex %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\usepackage[style=ieee,maxbibnames=10,sorting=none]{biblatex}% style=ext-numeric-comp,articlein=false,giveninits=true
- \DefineBibliographyStrings{english}{url= \textsc{url} , }% replaces default "[Online]. Available" by "URL"
+%% Numerical citations of references
+\usepackage[style=ext-numeric-comp,giveninits=true,maxbibnames=10,sorting=none]{biblatex}
\addbibresource{mitthesis-sample.bib}%% <== change to YOUR bib file <================= CHANGE
@@ -246,10 +246,12 @@
%%% Bibliography %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-{ \raggedright% to avoid stretched white space and split urls; DELETE THIS if you prefer justified text
-%
-\printbibliography[title={References},heading=bibintoc]
-}
+\defbibheading{bibintoc}{\chapter*{#1}\addcontentsline{toc}{backmatter}{\refname}}
+% this sets the title of contents name for bibliography to \refname (= References)
+% change "backmatter" to "chapter" if you prefer a bold face entry in the table of contents
+
+\printbibliography[title={\refname},heading=bibintoc]
+
% biblatex also supports chapter-by-chapter bibliography, https://tex.stackexchange.com/a/296502/119566
% see the biblatex manual, section 3.14.3
diff --git a/macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/README_font_sample_sources.txt b/macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/README_font_sample_sources.txt
index c4d5c782c1..beacdde0a3 100644
--- a/macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/README_font_sample_sources.txt
+++ b/macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/README_font_sample_sources.txt
@@ -12,3 +12,5 @@ mitthesis-sample.bib
mydesign.tex
All of those files are in the directory mitthesis/MIT-thesis-template.
+
+You should also copy the fontsets directory (and mitthesis.cls) into this folder.
diff --git a/macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Stix2.tex b/macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Stix2.tex
index ffc9657186..6fe4965432 100644
--- a/macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Stix2.tex
+++ b/macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Stix2.tex
@@ -56,8 +56,8 @@
%%%%%%%%% Representative set-up for biblatex %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\usepackage[style=ieee,maxbibnames=10,sorting=none]{biblatex}% style=ext-numeric-comp,articlein=false,giveninits=true
- \DefineBibliographyStrings{english}{url= \textsc{url} , }% replaces default "[Online]. Available" by "URL"
+%% Numerical citations of references
+\usepackage[style=ext-numeric-comp,giveninits=true,maxbibnames=10,sorting=none]{biblatex}
\addbibresource{mitthesis-sample.bib}%% <== change to YOUR bib file <================= CHANGE
@@ -246,10 +246,12 @@
%%% Bibliography %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-{ \raggedright% to avoid stretched white space and split urls; DELETE THIS if you prefer justified text
-%
-\printbibliography[title={References},heading=bibintoc]
-}
+\defbibheading{bibintoc}{\chapter*{#1}\addcontentsline{toc}{backmatter}{\refname}}
+% this sets the title of contents name for bibliography to \refname (= References)
+% change "backmatter" to "chapter" if you prefer a bold face entry in the table of contents
+
+\printbibliography[title={\refname},heading=bibintoc]
+
% biblatex also supports chapter-by-chapter bibliography, https://tex.stackexchange.com/a/296502/119566
% see the biblatex manual, section 3.14.3
diff --git a/macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Termes-stix2.tex b/macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Termes-stix2.tex
index 29bb0e05cf..3bbf3c8333 100644
--- a/macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Termes-stix2.tex
+++ b/macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Termes-stix2.tex
@@ -56,8 +56,8 @@
%%%%%%%%% Representative set-up for biblatex %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\usepackage[style=ieee,maxbibnames=10,sorting=none]{biblatex}% style=ext-numeric-comp,articlein=false,giveninits=true
- \DefineBibliographyStrings{english}{url= \textsc{url} , }% replaces default "[Online]. Available" by "URL"
+%% Numerical citations of references
+\usepackage[style=ext-numeric-comp,giveninits=true,maxbibnames=10,sorting=none]{biblatex}
\addbibresource{mitthesis-sample.bib}%% <== change to YOUR bib file <================= CHANGE
@@ -246,10 +246,12 @@
%%% Bibliography %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-{ \raggedright% to avoid stretched white space and split urls; DELETE THIS if you prefer justified text
-%
-\printbibliography[title={References},heading=bibintoc]
-}
+\defbibheading{bibintoc}{\chapter*{#1}\addcontentsline{toc}{backmatter}{\refname}}
+% this sets the title of contents name for bibliography to \refname (= References)
+% change "backmatter" to "chapter" if you prefer a bold face entry in the table of contents
+
+\printbibliography[title={\refname},heading=bibintoc]
+
% biblatex also supports chapter-by-chapter bibliography, https://tex.stackexchange.com/a/296502/119566
% see the biblatex manual, section 3.14.3
diff --git a/macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Termes.tex b/macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Termes.tex
index fb2f11a35d..92a905fe99 100644
--- a/macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Termes.tex
+++ b/macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Termes.tex
@@ -56,8 +56,8 @@
%%%%%%%%% Representative set-up for biblatex %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\usepackage[style=ieee,maxbibnames=10,sorting=none]{biblatex}% style=ext-numeric-comp,articlein=false,giveninits=true
- \DefineBibliographyStrings{english}{url= \textsc{url} , }% replaces default "[Online]. Available" by "URL"
+%% Numerical citations of references
+\usepackage[style=ext-numeric-comp,giveninits=true,maxbibnames=10,sorting=none]{biblatex}
\addbibresource{mitthesis-sample.bib}%% <== change to YOUR bib file <================= CHANGE
@@ -246,10 +246,12 @@
%%% Bibliography %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-{ \raggedright% to avoid stretched white space and split urls; DELETE THIS if you prefer justified text
-%
-\printbibliography[title={References},heading=bibintoc]
-}
+\defbibheading{bibintoc}{\chapter*{#1}\addcontentsline{toc}{backmatter}{\refname}}
+% this sets the title of contents name for bibliography to \refname (= References)
+% change "backmatter" to "chapter" if you prefer a bold face entry in the table of contents
+
+\printbibliography[title={\refname},heading=bibintoc]
+
% biblatex also supports chapter-by-chapter bibliography, https://tex.stackexchange.com/a/296502/119566
% see the biblatex manual, section 3.14.3
diff --git a/macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/compile-font-samples.sh b/macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/compile-font-samples.sh
new file mode 100755
index 0000000000..fdb19c1f4f
--- /dev/null
+++ b/macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/compile-font-samples.sh
@@ -0,0 +1,72 @@
+#! /bin/bash
+
+# first run
+
+pdflatex Defaultfonts
+pdflatex Fira_Newtxsf
+pdflatex Libertine
+pdflatex Lucida
+pdflatex Newtx-sans-text
+pdflatex Newtx
+
+lualatex Heros-Stix2
+lualatex Stix2
+lualatex Termes-stix2
+lualatex Termes
+
+# biber
+
+biber Defaultfonts
+biber Fira_Newtxsf
+biber Libertine
+biber Lucida
+biber Newtx-sans-text
+biber Newtx
+biber Heros-Stix2
+biber Stix2
+biber Termes-stix2
+biber Termes
+
+# second run
+
+pdflatex Defaultfonts
+pdflatex Fira_Newtxsf
+pdflatex Libertine
+pdflatex Lucida
+pdflatex Newtx-sans-text
+pdflatex Newtx
+
+lualatex Heros-Stix2
+lualatex Stix2
+lualatex Termes-stix2
+lualatex Termes
+
+# third run
+
+pdflatex Defaultfonts
+pdflatex Fira_Newtxsf
+pdflatex Libertine
+pdflatex Lucida
+pdflatex Newtx-sans-text
+pdflatex Newtx
+
+lualatex Heros-Stix2
+lualatex Stix2
+lualatex Termes-stix2
+lualatex Termes
+
+# clean up
+
+mkdir pdffiles
+mv *.pdf pdffiles
+rm *.aux
+rm *.bbl
+rm *.bcf
+rm *.blg
+rm *.log
+rm *.lot
+rm *.lof
+rm *.toc
+rm *.xml
+
+
diff --git a/macros/latex/contrib/mitthesis/mitthesis-doc/mitthesis-doc.pdf b/macros/latex/contrib/mitthesis/mitthesis-doc/mitthesis-doc.pdf
index 611f9c69ac..ab61cf59e5 100644
--- a/macros/latex/contrib/mitthesis/mitthesis-doc/mitthesis-doc.pdf
+++ b/macros/latex/contrib/mitthesis/mitthesis-doc/mitthesis-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/mitthesis/mitthesis-doc/mitthesis-doc.tex b/macros/latex/contrib/mitthesis/mitthesis-doc/mitthesis-doc.tex
index 2b434f49a7..4e5e739585 100644
--- a/macros/latex/contrib/mitthesis/mitthesis-doc/mitthesis-doc.tex
+++ b/macros/latex/contrib/mitthesis/mitthesis-doc/mitthesis-doc.tex
@@ -1,12 +1,13 @@
% !TEX TS-program = lualatex
% !TEX encoding = UTF-8 Unicode
-% Version date: 02 November 2023
+% Version date: 19 July 2024
\DocumentMetadata
{
- pdfstandard = a-2b,%a-3u,%a-4,%
- pdfversion = 1.7, %2.0,
+ pdfstandard = a-4,
+ pdfversion = 2.0,
+% testphase = {phase-III, table, firstaid, math},
lang = en-US,
% debug = {xmp-export}, % note that subject entries are all fine in dc format of outputted xmpi file.
}
@@ -23,6 +24,8 @@
\usepackage[x11names,svgnames,dvipsnames,table]{xcolor}
\usepackage{luacolor} % load AFTER xcolor
+\usepackage{mathtools}
+
\usepackage[en-US]{datetime2} %% change default date format
\makeatletter
\newcommand{\daymonthyeardate}{%
@@ -32,41 +35,6 @@
\usepackage{booktabs}
-%%% Create an optional argument for unnumbered sections and set pdf bookmark (thru \addcontentsline).
-%%% The optional argument will manually set the pdf bookmark for that section; can be used to avoid hyperref
-%%% errors when macros are in section titles.
-\let\svsection\section
-\RenewDocumentCommand{\section}{s o m}{%
- \IfBooleanTF {#1}
- {\svsection*{#3}\phantomsection%
- {\IfNoValueTF {#2}
- {\addcontentsline{toc}{section}{#3}}
- {\addcontentsline{toc}{section}{#2}}% removed trailing space 2020/02/28
- }%
- }%
- {\IfNoValueTF {#2}
- {\svsection{#3}}
- {\svsection[#2]{#3}}%
- }%
-}
-
-%%% Create an optional argument for unnumbered SUBsections and set pdf bookmark (thru \addcontentsline).
-%%% The optional argument will manually set the pdf bookmark for that section; can be used to avoid hyperref
-%%% errors when macros are in section titles.
-\let\svsubsection\subsection
-\RenewDocumentCommand{\subsection}{s o m}{%
- \IfBooleanTF {#1}
- {\svsubsection*{#3}\phantomsection%
- {\IfNoValueTF {#2}
- {\addcontentsline{toc}{subsection}{#3}}
- {\addcontentsline{toc}{subsection}{#2}}
- }%
- }%
- {\IfNoValueTF {#2}
- {\svsubsection{#3}}
- {\svssubection[#2]{#3}}%
- }%
-}
%%%%%%%%% Set up text and math fonts %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -128,7 +96,7 @@
citecolor=blue,
urlcolor=violet,
filecolor=red,
-% anchorcolor=yellow,% not all pdf viewers recognize this field (Firefox does)
+ anchorcolor=yellow,% not all pdf viewers recognize this field (Firefox does)
% colorscheme=phelype,% overrides link, cite, url, file colors with a preset scheme, through \DocumentMetadata
pdfpagelayout=SinglePage,
pdfdisplaydoctitle=true,%
@@ -159,42 +127,40 @@
\ExplSyntaxOff
\urlstyle{same} % this changes font for \url to the current text font, but it is not recognized by \href.
-\RequirePackage{bookmark}% improves handling of pdf bookmarks
+%\RequirePackage{bookmark}% improves handling of pdf bookmarks
%\providecommand\hrefurl[2]{\href{#1}{#2}}% to address certain issues around URL recognition with new pdf management code
-%%%%%%% A nomenclature environment, if needed %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%% A nomenclature environment, if needed %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\providecommand{\nomname}{Nomenclature}
\newlength\nomenwidth
\newlength\savitemsep
\makeatletter
+% nomenclature entries
\NewDocumentCommand\entry{m m}{%
- \ifblank{#2}{%
- \ClassWarning{\ClassName}{The command \protect\entry requires two arguments. To obtain a subheading, use \protect\EntryHeading}
- \itemsep3\p@ plus 1\p@ minus 1\p@%
- \goodbreak\item[\itshape#1\hfill]\setlength\itemsep\savitemsep\@itempenalty=1000%
- }{%
- \item[#1\hfill]#2%
- \@itempenalty=-\@lowpenalty%
- }%
+ \item[#1\hfill]#2%
+ \@itempenalty=-\@lowpenalty
}
-% A separate command command for nomenclature subheadings
+% nomenclature subheadings
\NewDocumentCommand\EntryHeading{m}{%
- \itemsep3\p@ plus 1\p@ minus 1\p@%
- \goodbreak\item[\itshape#1\hfill]\setlength\itemsep\savitemsep\@itempenalty=1000%
+ \itemsep3\p@ plus 1\p@ minus 1\p@
+ \goodbreak\item[\itshape#1\hfill]\mbox{}% mbox added for tagged pdf 2023/10/11
+ \setlength{\itemsep}{\savitemsep}\@itempenalty=1000
}
\makeatother
%
% Increase first optional argument to a dimension > 2em if wide entries cause undesired misalignment of columns.
% Second optional argument can be used to rename the environment, e.g., to List of Symbols.
+% Third optional argument selects section-level or chapter-level style for the nomenclature list.
+\newcounter{dummy}% for tagging code
\NewDocumentEnvironment{nomenclature}{O{2em} O{\nomname} O{section}}{%
\setlength\columnsep{2em}
\setlength{\nomenwidth}{#1}
- \csname #3\endcsname *{#2}% this level will probably vary amongst users! add to toc, as well.
-% \phantomsection\addcontentsline{toc}{#3}{#2}% removed for this example.
+ \csname #3\endcsname *{#2}% this level will vary amongst users!
+% \refstepcounter{dummy}\addcontentsline{toc}{#3}{#2}% omit contentsline for this document!
\raggedright
\begin{list}{}{%
\setlength{\itemsep}{0pt}%
@@ -203,7 +169,7 @@
\setlength{\labelwidth}{\nomenwidth}%
\setlength{\leftmargin}{\labelwidth}%
\addtolength{\leftmargin}{\labelsep}%
- \setlength\savitemsep\itemsep%
+ \setlength{\savitemsep}{\itemsep}%
}%
}{\end{list}\ignorespacesafterend}
@@ -211,110 +177,121 @@
%%%%%%%%%%%%% End preamble %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\title{The MIT thesis template}
-\author{John H. Lienhard \\ Department of Mechanical Engineering \\ Massachusetts Institute of Technology}
-\date{\daymonthyeardate}
+\renewcommand\abstractname{SUMMARY}
\begin{document}
-\maketitle
+\begingroup
+ \centering
+ \LARGE The MIT thesis template\\[1em]
+ \large
+ John H. Lienhard \\ Department of Mechanical Engineering \\ Massachusetts Institute of Technology
+ \\[1em]
+ \daymonthyeardate\\[1em]
+\endgroup
-\section*{THE MIT THESIS TEMPLATE}
-This template is suitable for MIT theses of all types and at all levels. The title and abstract pages are automatically laid out from information provided by the user. The template includes options to use a variety of fonts, and it is compatible with either pdfTeX or unicode engines such as luaLaTeX. When using LaTeX formats dated November 2022 or later, the resulting pdf file meets the PDF/A-2b archivability standard. A standard \href{https://www.tug.org/texlive/}{\TeX\ Live} installation includes all other packages required by the template.
+\phantomsection\pdfbookmark[1]{\abstractname}{summary}
+\begin{abstract}
+This \LaTeX\ class formats theses according to the requirements of the MIT Libraries. The template is suitable for MIT theses of all types and at all levels. The title and abstract pages are automatically laid out from information provided by the user. The template includes options to use a variety of typefaces, and it is compatible with either pdfTeX or unicode engines such as LuaLaTeX. When using LaTeX formats dated November 2022 or later, the resulting pdf file meets the PDF/A-2b archivability standard. A standard \href{https://www.tug.org/texlive/}{\TeX\ Live} installation includes all other packages required by the template. This document provides instructions for installation and use of the template.
+\end{abstract}
-\subsection*{Background}
+\tableofcontents
+
+\section{BACKGROUND}
The original MIT Thesis template was written \LaTeX\ 2.09 by Stephen Gildea in the late 1980s (in CTAN, \href{https://mirrors.ctan.org/obsolete/macros/latex209/contrib/mitthesis/mitthesis.sty}{here}). That template was edited by many later students.
-LaTeX has changed greatly since the original MIT thesis template was written. \LaTeX\ 2.09 was replaced by \LaTeXe\ in 1994. New engines were developed, particularly pdfTeX during the 1990s and Unicode-aware engines in the decades that followed. Many packages and fonts were developed to accompany the original platform, particularly after 2000; and major updates to the LaTeX kernel began in 2018. Over the years, the MIT Libraries have changed the required format several times, especially as electronic thesis submission has become the norm. The original template served MIT well; but by the early 2020s, it was substantially out of date. That situation motivated the creation of a new template.
+LaTeX has changed greatly since the original MIT thesis template was written. \LaTeX\ 2.09 was replaced by \LaTeXe\ in 1994. New engines were developed, particularly pdfTeX during the 1990s and Unicode-aware engines in the decades that followed. Many packages and fonts were developed to accompany the original platform, particularly after 2000; and major updates to the LaTeX kernel began in 2018. Over the years, the MIT Libraries changed the required format several times, especially as electronic thesis submission became the norm. The original template served MIT well; but by the early 2020s, it was substantially out of date. That situation motivated the creation of a new template.
This new MIT thesis template was developed in 2023 at the request of the MIT Libraries. The title and abstract pages strictly follow the current \href{https://libraries.mit.edu/distinctive-collections/thesis-specs/}{requirements of the Libraries}. The underlying code is entirely new, with extensive use of \texttt{expl3} syntax.
-\subsection*{System requirements}
+\section{SYSTEM REQUIREMENTS AND INSTALLATION}
The new \texttt{mitthesis} class uses the features of \LaTeX\ as of 2022, with limited backward compatibility. An up-to-date \LaTeX\ system is therefore necessary when using this template.
-\LaTeX\ is a free, open source system. The entire system is distributed through the \TeX\ Live platform (\url{https://www.tug.org/texlive/}), including the basic format, packages, and user interfaces. The system operates on Windows, MacOS, and Unix/Linux. \TeX\ Live is formally updated each year in the spring, and the associated utility package allows users download the most current codes more frequently if they desire. (At the time of this writing, the commercial platform Overleaf.com provides similar functionality.)
+\LaTeX\ is a free, open source system. The entire system is distributed through the \TeX\ Live platform (\url{https://www.tug.org/texlive/}), including the basic format, packages, and user interfaces. The system operates on Windows, MacOS, and Unix/Linux. \TeX\ Live is formally updated each year in the spring, and the associated utility package allows users to download the most current codes more frequently if they desire. (At the time of this writing, the commercial platform Overleaf.com provides a similar functionality.)
If you are missing a package or documentation, you may obtain it at no cost from CTAN (\href{http://ctan.org}{ctan.org}).
-\subsection*{\LaTeX\ engine}
-The template works with either \pdfTeX\ or unicode engines such as \LuaLaTeX. With the latter, fonts that you install in your operating system can be configured for use in your thesis. \LuaLaTeX\ also enables the direct use of lua code in your \texttt{.tex} file.
-
-\subsection*{Downloading the template}
+\subsection{Downloading the template}
The files needed for preparing your thesis are in the CTAN repository: \url{https://ctan.org/pkg/mitthesis}. Copy the subdirectory \texttt{MIT-thesis-template} onto your system. That directory contains files you can modify into your own thesis.
-If \texttt{mitthesis.cls} is installed in your system (e.g., if you use an up-to-date version of \TeX\ Live), you are all set. If not, copy the file \texttt{mitthesis.cls} into your working directory. If you plan to use fonts other than the default fonts, ensure that the subdirectory \texttt{fontsets} is present in your working directory.
+If the most current version of \texttt{mitthesis.cls} is installed in your system (e.g., if you use an up-to-date version of \TeX\ Live), you are all set. If not, copy the file \texttt{mitthesis.cls} into your working directory. If you plan to use fonts other than the default fonts, ensure that the subdirectory \texttt{fontsets} is present in your working directory.
-\subsection*{File structure}
+\subsection{File structure}
The new MIT thesis template consists of: \texttt{mitthesis.cls}; a root file \texttt{MIT-Thesis.tex}; a file to load the abstract, \texttt{abstract.tex}; a file for design options, \texttt{mydesign.tex}; and an optional file to change the fonts (see the subdirectory, \texttt{fontset}). You should change the name of the root file to something more descriptive of your own work (e.g., \texttt{JohnsThesis.tex}, \texttt{MagnumOpusScientiae.tex},\ldots). In addition, files must be loaded for acknowledgments, an optional biosketch, chapters, optional appendices, and bibliography.
-\subsection*{Bibliography}
-You may generate your bibliography using either \texttt{biblatex/biber} or \texttt{natbib/bibtex}. The template is set up for \texttt{biblatex} by default, rather than the older, less flexible \texttt{natbib}.
+\subsection{\LaTeX\ engine}
+The template works with either \pdfTeX\ or unicode engines such as \LuaLaTeX. With the latter, fonts that you install in your operating system can be configured for use in your thesis. \LuaLaTeX\ also enables the direct use of Lua code in your \texttt{.tex} file. With Lua code, you can automate plotting, table generation, and other numerical computations.
-\subsection*{PDF/A compatibility}
-PDF/A-2b compliance will be automatic if the \verb|\DocumentMetadata{..}| command is issued before the \verb|\documentclass{..}| command and \textit{provided that your graphics are also compliant}. This command was added to \LaTeX\ in June 2022. For older versions of \LaTeX, the \texttt{mitthesis} class will fall back to loading the \texttt{hyperxmp} package to support pdf metadata, but PDF/A compliance will require post-processing (for example, by using the PreFlight function of Adobe Acrobat). An up-to-date \LaTeX\ installation is preferred.
+\subsection{PDF/A compliance}
+PDF/A-2b compliance will be automatic if the \verb|\DocumentMetadata{pdfstandard = a-2b}| command is issued before the \verb|\documentclass{..}| command and \textit{provided that your graphics are also compliant}. This command was added to \LaTeX\ in June 2022. For older versions of \LaTeX,
+PDF/A compliance will require post-processing (for example, by using the PreFlight function of Adobe Acrobat). Current \LaTeX\ development (ca.~2024) is working toward fully \textit{accessible} PDF/A out of the box (e.g., PDF/A-2a). Unicode compliance (e.g., PDF/A-2u) depends greatly on your fonts and figures.
-Current \LaTeX\ development (ca.~2023) is working toward fully \textit{accessible} PDF/A out of the box (e.g., PDF/A-2a). Unicode compliance (e.g., PDF/A-2u) depends greatly on your fonts and figures.
-\section*{INFORMATION YOU NEED TO COMPLETE}
-Various fields and commands must be changed to your own information in the preamble of \texttt{MIT-Thesis.tex} and immediately after the \verb|\begin{document}| command. This information includes the title, author, degree and other essential information. With the comments in \texttt{MIT-Thesis.tex}, this step should be self-explanatory. Nevertheless some comments follow.
+\section{SETTING UP TITLE PAGE, ABSTRACT, AND BIBLIOGRAPHY}
+Various fields and commands must be changed to your own information in the preamble of \texttt{MIT-Thesis.tex} and immediately after the \verb|\begin{document}| command. This information includes the title, author, degree and other essential information. With the comments in \texttt{MIT-Thesis.tex}, this step should be self-explanatory. Nevertheless, some explanation follows.
-In the \verb|\hypersetup{..}| command, change the sample file to match your own information (e.g., keywords, subject, etc.). These commands generate metadata that are incorporated into the pdf file.
-The commands that define the title page are as follow.
-\begin{itemize}
+\begin{enumerate}
+\item In the \verb|\hypersetup{..}| command, change the sample file to match your own information (e.g., keywords, subject, etc.). These commands generate metadata that are incorporated into the pdf file.
+
\item \verb|\title{the title of your thesis}|
\item \verb|\Author{author full name}{author department}[1st PREVIOUS degree][2nd...| \linebreak
Note that third, fourth, fifth, and sixth arguments are optional [..] and may be omitted. Use once for each author.
-\item \verb|\Degree{name of degree}{department giving degree}|. Use once for each degree fulfilled by the thesis. If the thesis satisfies two degrees from one department, leave the department argument blank for the \textit{second} degree: \verb|\Degree{2nd degree name}{}|
+\item \verb|\Degree{name of degree}{department giving degree}|. Use once for each degree fulfilled by the thesis.
+
+If two departments jointly issue a single degree, leave the degree name blank for the \textit{second} degree:
+\verb|\Degree{}{2nd department name}|.
+If the thesis satisfies two degrees from one department, leave the department argument blank for
+the \textit{second} degree: \verb|\Degree{2nd degree name}{}|.
-\item \verb|\Supervisor{supervisor name}{supervisor title}|. Use once for each supervisor.
+If you wish to cause a line break in a very long degree name, you can insert \verb|\\| at an appropriate point.
+Department names should not break across lines. For example:
+\begin{quote}
+\verb|\Degree{Doctor of Philosophy \\ in \\ Electrical Engineering and Computer|\linebreak
+\hbox{}\qquad\verb|Science}{Department of Electrical Engineering and Computer Science}|
+\end{quote}
+
+\item \verb|\Supervisor{supervisor name}{supervisor title}|. Use once for each supervisor. See \S\ref{sec:6.3} if your supervisor has more than one title.
\item \verb|\Acceptor{acceptor name}{acceptor title}{thesis related position}|. Professor who accepts theses for your department (e.g., the Graduate Officer). Use once for each department.
\item \verb|\DegreeDate{Month}{year}|. Date degree is awarded (February, May, June, or September).
\item \verb|\ThesisDate{date}|. Date that your final thesis is submitted to the department.
-\end{itemize}
+\end{enumerate}
-\subsection*{Copyright license}
+\subsection{Copyright license}
If you wish to make your thesis available under a Creative Commons License, issue the following command between
\verb|\begin{document}| and \verb|\maketitle|: \verb|\CClicense{license type}{license url}|. For example,
\vskip 5pt
\noindent\quad\verb|\CClicense{CC BY-NC-ND 4.0}{https://creativecommons.org/licenses/by-nc-nd/4.0/}|.
-\subsection*{Overflowing title page: managing space} If your title page overflows the vertical space (from too many authors, degrees, previous degrees, etc.), you can using some or all of the following techniques. The commands must be given before \verb|\maketitle|.
-\begin{enumerate}
- \item Reduce the 12pt and 18pt skips between the various blocks of text to 6pt with this command:
- \vskip 5pt
- \noindent\verb|\Tighten|
- \item Reduce the font size in the signature block with this command:
- \vskip 5pt
- \noindent\verb|\SignatureBlockSize{\small}|
- \item Put the acceptor name and title onto two lines, rather than three, by putting the acceptor's position into the 2\textsuperscript{nd} argument and leaving the 3\textsuperscript{rd} argument blank:
- \vskip 5pt
- {\small\noindent\verb|\Acceptor{Tertius Castor}{Professor and Graduate Officer, Department of Research}{}|}
- \item Reduce the font size of the the author name[s] from \verb|\large| to \verb|\normalsize| with this command:
- \vskip 5pt
- \noindent\verb|\AuthorNameSize{\normalsize}|
- \item Omit previous degrees from the title page, instead mentioning them in the biographical sketch.
-\end{enumerate}
+\subsection{Bibliography}
+You may generate your bibliography using either \texttt{biblatex/biber} or \texttt{natbib/bibtex}. The template is set up for \texttt{biblatex} by default, rather than the older, less flexible \texttt{natbib}. The \texttt{biblatex} package is very powerful, and you can customize most aspects the reference list and citations to suit your needs. See the documentation for details: \hrefurl{https://ctan.org/pkg/biblatex}{ctan.org/pkg/biblatex}.
-Also, if you prefer to keep the text toward the top of the page with most white space at the bottom, you
-can use this command to squash the vertical glue (\TeX's stretchy space):
- \vskip 5pt
- \quad\verb|\Squash|
- \vskip 5pt
-\noindent This command is useful when the text has not already reach the bottom of the page, since the glue gets squashed automatically when the page is too full.
+The style of citations and references can be set in your \texttt{.tex} file. For numerical citations of references (e.g., [1]), you can do
+\vskip 5pt
+\verb|\usepackage[style=ext-numeric-comp,giveninits=true,sorting=none]{biblatex}|
+\vskip 5pt
+\noindent For IEEE style citations and references, you might do
+\vskip 5pt
+\verb| \usepackage[style=ieee,maxbibnames=10,sorting=none]{biblatex}|
+\vskip 5pt
+\noindent For author/year style (Smith, 2024), you might do
+\vskip 5pt
+\verb| \usepackage[style=authoryear, maxbibnames=10]{biblatex} |
+\vskip 5pt
+\noindent In the author/year style, \verb|\cite{..}| commands do not automatically produce parentheses. Instead, you can do
+\verb|\parencite{..}| to get ``(Author, year).''
-\section*{PACKAGE OPTIONS}
-Package options may be specified for \verb|\documentclass[..]{mitthesis}|. These options are described in Table~\ref{tab:1} and the subsections that follow.
+\section{CLASS OPTIONS}
+Class options may be specified for \verb|\documentclass[..]{mitthesis}|. These options are described in Table~\ref{tab:1} and the subsections that follow.
\begin{table}[b]
\caption{Options to the document class\label{tab:1}}
@@ -323,7 +300,7 @@ Package options may be specified for \verb|\documentclass[..]{mitthesis}|. These
\small
\begin{tabular}{>{\ttfamily}l<{} >{\raggedright\arraybackslash}p{42em} }
\toprule
-\textrm{Package option} & Effect \\
+\textrm{Class option} & Effect \\
\midrule
fontset & is a keyvalue, \texttt{fontset = <\textit{name}>}, which selects the set of fonts used for the thesis. See description below. \\
lineno & this option loads the \texttt{\hrefurl{https://ctan.org/pkg/lineno}{lineno}} package, which provides line numbers, as for editing. The \texttt{\hrefurl{https://ctan.org/pkg/lineno}{lineno}} package provides additional commands to control line numbering. \\
@@ -334,17 +311,16 @@ twoside & gives facing-page behavior for two-sided printing; omitting it will e
\end{tabular}}%
\end{table}
-\subsection*{Font loading}
-By default, \texttt{mitthesis.cls} will load the traditional \LaTeX\ fonts, Computer Modern (for \pdfTeX) or Latin Modern (for unicode engines). By using the key value \texttt{fontset=$\cdots$} in the \verb|\documentclass| command, you can select a different set of fonts.
+\subsection{Font loading}
+By default, \texttt{mitthesis.cls} will load the traditional \LaTeX\ typeface, Computer Modern (for \pdfTeX) or Latin Modern (for unicode engines). By using the key value \texttt{fontset=$\cdots$} in the \verb|\documentclass| command, you can select a different set of fonts.
-Ten fontsets are predefined, including the default set (see Table~\ref{tab:2}). Three work only with \pdfTeX, four work only with unicode engines, and three work with either. These options include a mixture of serif or sans serif text and math fonts, as shown in the table. To access the predefined font sets, you \textit{must} have the directory \texttt{fontsets} as a subdirectory of your working directory, including its files as named.
+Ten font sets are predefined, including the default set (see Table~\ref{tab:2}). Three work only with \pdfTeX, four work only with unicode engines, and three work with either. These options include a mixture of serif or sans serif text and math fonts, as shown in the table. To access the predefined font sets, you \textit{must} have the directory \texttt{fontsets} as a subdirectory of your working directory, including its files as named. For unicode engines, you must have the relevant fonts installed as system fonts on your computer.
-Among the predefined fonts, Termes and NewTX are serifed fonts similar to the digital font Times New Roman. STIX Two is more similar to the original metal-type Times font. Linux Libertine is a serif font inspired by 19\textsuperscript{th} century book type. Lucida is a serifed font designed for high legibility at small size or on low resolution devices. This font is excellent for mathematics and includes a complete bold-face math font, but it is not free. Heros and NewTX-sans are sans-serif text fonts similar to Helvetica. NewTXsf is a sans-serif math font which draws upon glyphs from the STIX font. Fira is a humanist sans-serif text font designed in association with the Firefox browser. Finally, Computer Modern (and its extension Latin Modern)---the traditional \LaTeX\ font---is a Didone font, with high contrast between thick and thin elements.
+Among the predefined font sets, Termes and NewTX are serifed typefaces similar to the digital typeface Times New Roman. STIX Two is more similar to the original metal-type Times typeface. Linux Libertine is a serif typeface inspired by 19\textsuperscript{th} century book type. Lucida is a serifed typeface designed for high legibility at small size or on low resolution devices. Lucida is excellent for mathematics and includes a complete bold-face math font, but it is not free. Heros and NewTX-sans are sans-serif text typefaces similar to Helvetica. NewTXsf is a sans-serif math font which draws upon glyphs from the STIX fonts. Fira is a humanist sans-serif text typeface designed in association with the Firefox browser. Finally, Computer Modern (and its extension Latin Modern)---the traditional \LaTeX\ typeface---is a Didone typeface, with high contrast between thick and thin elements.
+% STIX Two, Termes, and LMR do not include a separate bold math font.
-You may also place your own fontset file, say \texttt{Myfontset.tex}, in your working directory, and load it with
-
-\vskip10pt
-\hfill\verb|\documentclass[fontset=Myfontset]{mitthesis}|\hfill\hbox{}
+You may also place your own font-set file, say \texttt{Myfontset.tex}, in your working directory, and load it with:
+\verb|\documentclass[fontset=Myfontset]{mitthesis}|.
\begin{table}[t]
\caption{Predefined font sets\label{tab:2}}
@@ -362,7 +338,7 @@ default & yes & yes & serif & serif & CM \& LM fonts are included in \TeX\
libertine & yes & yes & serif & serif & in \TeX\ Live for \pdfTeX. For unicode, OpenType text fonts freely available here
\linebreak \url{https://sourceforge.net/projects/linuxlibertine/}\linebreak and the math font here
\linebreak \url{https://github.com/alerque/libertinus} \\
-lucida & yes & yes & serif & serif & the lucida fonts are available from the \TeX\ User's Group,
+lucida & yes & yes & serif & serif & the Lucida fonts are available from the \TeX\ User's Group,
\url{https://tug.org/store/lucida} \\[2em]
heros-stix2 & no & yes & sans & serif & \url{http://www.gust.org.pl/projects/e-foundry/tex-gyre} \linebreak\url{https://github.com/stipub/stixfonts} \linebreak fonts are free \\
stix2 & no & yes & serif & serif & \url{https://github.com/stipub/stixfonts}, fonts are free\\
@@ -374,17 +350,65 @@ termes-stix2 & no & yes & serif & serif & \url{http://www.gust.org.pl/projects/
\end{tabular}}%
\end{table}
-\subsection*{Design options}
+\subsection{Design options}
The thesis will follow the default styles of the \LaTeX\ report class for sections headings, captions, and lists. If you prefer different styles you can use the class option [mydesign] which loads the file \texttt{mydesign.tex}.
-With \texttt{mydesign.tex}, you can set options for packages that manage color, e.g.\ \texttt{\hrefurl{https://ctan.org/pkg/xcolor}{xcolor}}, that change the margins, or that change the design of titles, captions, and lists: \texttt{\hrefurl{https://ctan.org/pkg/titlesec}{titlesec}}, \texttt{\hrefurl{https://ctan.org/pkg/caption}{caption}}, or \texttt{\hrefurl{https://ctan.org/pkg/enumitem}{enumitem}}. You can also load other packages. The \texttt{mitthesis} class will insert these commands at the appropriate point (prior to loading \texttt{\hrefurl{https://ctan.org/pkg/babel}{babel}}, fonts, or \texttt{\hrefurl{https://ctan.org/pkg/hyperref}{hyperref}}). You should not need to edit the class file.
+With \texttt{mydesign.tex}, you can set options for packages that manage color, e.g.\ \texttt{\hrefurl{https://ctan.org/pkg/xcolor}{xcolor}}, or that change the design of titles, captions, and lists: \texttt{\hrefurl{https://ctan.org/pkg/titlesec}{titlesec}}, \texttt{\hrefurl{https://ctan.org/pkg/caption}{caption}}, or \texttt{\hrefurl{https://ctan.org/pkg/enumitem}{enumitem}}. You can change the margins with \verb|\newgeometry{..}| from the \texttt{\hrefurl{https://ctan.org/pkg/geometry}{geometry}} package. You can also load other packages. The \texttt{mitthesis} class will insert these commands at the appropriate point (prior to loading \texttt{\hrefurl{https://ctan.org/pkg/babel}{babel}}, fonts, or \texttt{\hrefurl{https://ctan.org/pkg/hyperref}{hyperref}}). You should not need to edit the class file.
Hyperlink colors and pdf bookmark or viewing options from the \texttt{hyperref} package can be changed by using \verb|\hypersetup{ .. }| in the preamble or using \verb|\AtBeginDocument{ \hypersetup{ .. } }| in the \texttt{mydesign.tex} file.
-\subsection*{Single-sided vs.\ double-sided layout}
+\subsection{Single-sided vs.\ double-sided layout}
The sample template uses the option \texttt{[twosided]}, which starts major sections (abstract, table of contents, chapters, etc.) on odd-numbered pages. This arrangement is suitable for two-sided printing, but can lead to empty even-numbered pages. If you do not wish to have this behavior, omit that option. By default, even and odd page margins are the same; this can be changed in \texttt{mydesign.tex} if necessary.
-\begin{table}[t]
+\subsection{Additional commands}
+The class also provides \verb|\DegreeYear|, \verb|\DegreeMonth|, and \verb|\CopyrightAuthor|. The latter combines all author names into a single token list, e.g., ``Joseph O. Hirschfelder, Charles F. Curtiss and R. Byron Bird''; a period at the end of the final name (e.g., as in ``John F. Nash Jr.'') is removed.
+
+\subsection{Nomenclature}
+An optional nomenclature environment is provided by the class. This environment can support either chapter-by-chapter nomenclature (at the section level) or a single nomenclature for the entire thesis (at the chapter level). The environment has three optional arguments: [1] adjust space between symbol and definition; [2] name (heading) of the nomenclature list; and [3] level, which can be ``chapter'' or ``section'' depending on whether you
+have one nomenclature list for whole thesis or one for each chapter (the default is section).
+
+For example, the following code
+\begin{center}
+\begin{minipage}{0.85\textwidth}
+\begin{verbatim}
+\begin{nomenclature}[2em][Nomenclature for Chapter 1][section]
+\EntryHeading{Roman letters}
+\entry{$\mathcal{C}$}{material curve}
+\entry{$\mathbf{u}$}{velocity [m s$\cramped{^{-1}}$]}
+\EntryHeading{Greek letters}
+\entry{$\Gamma$}{circulation [m$\cramped{^2}$ s$\cramped{^{-1}}$]}
+\entry{$\rho$}{mass density [kg m$\cramped{^{-3}}$]}
+\end{nomenclature}
+\end{verbatim}
+\end{minipage}
+\end{center}
+produces the nomenclature list below
+\begin{center}
+\begin{minipage}{0.8\textwidth}
+\begin{nomenclature}[2em][Nomenclature for Chapter 1][section]
+\EntryHeading{Roman letters}
+\entry{$\mathcal{C}$}{material curve}
+\entry{$\mathbf{u}$}{velocity [m s$\cramped{^{-1}}$]}
+\EntryHeading{Greek letters}
+\entry{$\Gamma$}{circulation [m$\cramped{^2}$ s$\cramped{^{-1}}$]}
+\entry{$\rho$}{mass density [kg m$\cramped{^{-3}}$]}
+\end{nomenclature}
+\end{minipage}
+\end{center}
+%% \cramped is from the mathtools package, and moves the superscript a bit lower
+
+\section{PACKAGES FOR MATH, CHEMISTRY, CODE, TABLES, AND MORE}
+The \texttt{mitthesis} class loads the \texttt{amsmath} package and its extension \texttt{mathttools}. These packages provide many useful macros for typesetting equations and symbols, such as: environments for aligning and splitting equations or groups of equations; tools for matrices; a wide variety of operators and symbols; tools to define new math operators and paired delimiters; and much, much more. If you are including equations, look at the documentation for these packages: \url{https://ctan.org/pkg/amsmath} and \url{https://ctan.org/pkg/mathtools}.\looseness=1
+
+Specialized packages for many disciplines can be found in \hrefurl{https://ctan.org}{CTAN}. These include subjects like \hrefurl{https://ctan.org/topic/chemistry}{chemistry}, \hrefurl{https://ctan.org/topic/linguistic}{linguistics}, and \hrefurl{https://ctan.org/topic/physics}{physics}. As examples of such packages, the sample thesis template uses the package \texttt{\hrefurl{https://ctan.org/pkg/mhchem}{mhchem}} to set chemical equations and the package \texttt{\hrefurl{https://ctan.org/pkg/listings}{listings}} to list computer code.
+
+Several packages focus on table and tabular environments. The \texttt{\hrefurl{https://ctan.org/pkg/booktabs}{booktabs}} package, use in the sample thesis template, produces better quality horizontal lines (called \textit{rules}) for separating material in tables. The \texttt{\hrefurl{https://ctan.org/pkg/array}{array}} package (also used) provides additional options for column formats in tabular environments, and the \texttt{\hrefurl{https://ctan.org/pkg/dcolumn}{dcolumn}} package aligns columns of numbers on the decimal separator.
+
+When selecting a package to use, check that it is currently maintained (with relatively recent updates), and compare it to other packages that perform similar functions. Some packages are better than others, and some obsolete packages remain online.
+
+The packages called by \texttt{mitthesis} are listed in Table~\ref{tab:3} on page~\pageref{tab:3}.
+
+\begin{table}
\caption{External packages used. For documentation, visit CTAN, \url{https://ctan.org}. Alternatively, if you have \hrefurl{https://www.tug.org/texlive/}{\TeX\ Live} installed, you can open a terminal window and type \texttt{\%\ texdoc package-name}.\label{tab:3}}
\vskip5pt
\centering{\small%
@@ -398,22 +422,25 @@ bm & defines commands to access bold math symbols (loaded for default fonts) &
bookmarks& is loaded automatically under the new pdf-management system & customize pdf bookmarks \\
doi & support for hyperlinking DOIs & hyperlink a doi number: \verb|\doi{..}| \\
etoolbox & extend or modify other macros & can use in preamble if needed \\
-iftex & check which \LaTeX\ engine is running& macros to check which engine, e.g., \verb|\ifpdftex| \\
geometry & set page size and margins & can use \verb|\newgeometry| in \texttt{mydesign.tex}\\
graphicsx& support for inserting images & use to include graphics\\
hyperref & support for hyperlinks and metadata & must complete setup in preamble\\
+iftex & check which \LaTeX\ engine is running& macros to check which engine, e.g., \verb|\ifpdftex| \\
mathtools& loads and extends \texttt{amsmath} & \textbf{many useful math macros available}. See documentation for \texttt{amsmath} and \texttt{mathtools} \\[0.7em]
\midrule
hyperxmp & fallback if no \verb|\DocumentMetadata{..}|& ---\\
kvoptions& key values for systems pre 2022/11/01 & ---\\
-xparse & for systems older than 2020/10/01 & macros to define new commands\\[0.7em]
+xparse & for systems older than 2020/10/01 & macros to define new commands\\
\midrule
-lineno & loaded if class option is given & keyvalue \texttt{lineno} will give line numbers; \texttt{lineno} package has additional commands that control line numbering\\[3em]
+lineno & loaded if class option is given & keyvalue \texttt{lineno} will give line numbers; \texttt{lineno} package adds commands to control numbering\\[0.7em]
\midrule
caption & also loaded by \texttt{mydesign.tex} & support for caption styling \\
subcaption & also loaded by \texttt{mydesign.tex} & support for subfigures within figures \\
titlesec & also loaded by \texttt{mydesign.tex} & support for styling section headings \\
xcolor & also loaded by \texttt{mydesign.tex} & support for colors, including colored fonts \\[0.7em]
+array & --- & additional options for formatting table columns \\
+booktabs & --- & better quality tables, with additional commands \\
+dcolumn & --- & align number columns on selectable separators \\
\midrule
babel & --- & if you use multiple languages, load \texttt{babel} in a fontset file before loading fonts \\
biblatex & --- & sample template uses this bibliography tool. Change to \texttt{natbib} if you prefer\\
@@ -428,75 +455,71 @@ unicode-math & --- & load in a fontset file if using a unicode engine\\
\end{tabular*}}%
\end{table}
-\subsection*{Additional commands}
-The class also provides \verb|\DegreeYear|, \verb|\DegreeMonth|, and \verb|\CopyrightAuthor|. The latter combines all author names into a single token list, e.g., ``Joseph O. Hirschfelder, Charles F. Curtiss and R. Byron Bird''; a period at the end of the final name (e.g., as in ``John F. Nash Jr.'') is removed.
-
-
-\subsection*{Nomenclature}
-An optional nomenclature environment is provided by the class. This environment can support either chapter-by-chapter nomenclature (at the section level) or a single nomenclature for the entire thesis (at the chapter level). The environment has three optional arguments: [1] adjust space between symbol and definition; [2] name (heading) of the nomenclature list; and [3] level, which can be ``chapter'' or ``section'' depending on whether you
-have one nomenclature list for whole thesis or one for each chapter (the default is section).
+\section{TROUBLESHOOTING AND MODIFICATIONS}
+\subsection{Listing thesis committee members or using a signature page}
+Listing committee members (with or without signatures) is not required under MIT's thesis specifications. Only the thesis supervisor should appear on the title page, not a list of committee members. However, some departments may require a separate committee or signature page. That page can be inserted by the author between the title and abstract pages. Check with your department about this page and any associated formatting requirements.
-For example, the following code
-\begin{center}
-\begin{minipage}{0.8\textwidth}
-\begin{verbatim}
-\begin{nomenclature}[2em][Nomenclature for Chapter 1][section]
-\EntryHeading{Roman letters}
-\entry{$\mathcal{C}$}{material curve}
-\EntryHeading{Greek letters}
-\entry{$\Gamma$}{circulation [m$^2$ s$^{-1}$]}
-\end{nomenclature}
-\end{verbatim}
-\end{minipage}
-\end{center}
-produces the nomenclature list below
-\begin{center}
-\begin{minipage}{0.8\textwidth}
-\begin{nomenclature}[2em][Nomenclature for Chapter 1][section]
-\EntryHeading{Roman letters}
-\entry{$\mathcal{C}$}{material curve}
-%\entry{$\mathbf{u}$}{velocity [m s$^{-1}$]}
-\EntryHeading{Greek letters}
-\entry{$\Gamma$}{circulation [m$^2$ s$^{-1}$]}
-%\entry{$\rho$}{mass density [kg m$^{-3}$]}
-\end{nomenclature}
-\end{minipage}
-\end{center}
+\subsection{Dealing with multiple titles in the signature block}\label{sec:6.3}
+When a thesis supervisor has multiple titles (which will not fit on one line), you can obtain a line break with proper horizontal spacing by doing
+ \vskip 5pt
+ \quad\verb|\Supervisor{name}{first title and \\ \> second title}|
+ \vskip 5pt
+\noindent\textbf{\TeX hackers note:} The signature block is typeset as a \LaTeX\ \texttt{tabbing} environment.
-\section*{PACKAGES FOR MATH, CHEMISTRY, CODE LISTINGS, AND MORE}
-The \texttt{mitthesis} class loads the \texttt{amsmath} package and its extension \texttt{mathttools}. These packages provide many useful macros for typesetting equations and symbols, such as: environments for aligning and splitting equations or groups of equations; tools for matrices; a wide variety of operators and symbols; tools to define new math operators and paired delimiters; and much, much more. If you are including equations, look at the documentation for these packages: \url{https://ctan.org/pkg/amsmath} and \url{https://ctan.org/pkg/mathtools}.\looseness=1
+\subsection{Overflowing title page: managing space} If your title page overflows the vertical space (from too many authors, degrees, previous degrees, etc.), you can use some or all of the following techniques. The commands must be given before \verb|\maketitle|.
+\begin{enumerate}
+ \item Reduce the 12 pt and 18 pt skips between the various blocks of text to 6 pt with this command:
+ \vskip 5pt
+ \noindent\verb|\Tighten|
+ \item Reduce the font size in the signature block with this command:
+ \vskip 5pt
+ \noindent\verb|\SignatureBlockSize{\small}|
+ \item Put the acceptor name and title onto two lines, rather than three, by putting the acceptor's position into the 2\textsuperscript{nd} argument and leaving the 3\textsuperscript{rd} argument blank:
+ \vskip 5pt
+ {\small\noindent\verb|\Acceptor{Tertius Castor}{Professor and Graduate Officer, Department of Research}{}|}
+ \item Reduce the font size of the the author name[s] from \verb|\large| to \verb|\normalsize| with this command:
+ \vskip 5pt
+ \noindent\verb|\AuthorNameSize{\normalsize}|
+ \item Omit previous degrees from the title page, instead mentioning them in the biographical sketch.
+\end{enumerate}
-Specialized packages for many disciplines can be found in \hrefurl{https://ctan.org}{CTAN}. These include subjects like \hrefurl{https://ctan.org/topic/chemistry}{chemistry}, \hrefurl{https://ctan.org/topic/linguistic}{linguistics}, and \hrefurl{https://ctan.org/topic/physics}{physics}. As examples of such packages, the sample thesis template uses the package \texttt{\hrefurl{https://ctan.org/pkg/mhchem}{mhchem}} to set chemical equations and the package \texttt{\hrefurl{https://ctan.org/pkg/listings}{listings}} to list computer code.
-When selecting a package to use, check that it is currently maintained (with relatively recent updates), and compare it to other packages that perform similar functions. Some packages are better than others, and some obsolete packages remain online.
+\subsection{Push title page text toward top} If you prefer to keep the text toward the top of the page with most white space at the bottom, you
+can use this command to squash the vertical glue (\TeX's stretchy space):
+ \vskip 5pt
+ \quad\verb|\Squash|
+ \vskip 5pt
+\noindent This command is useful when the text has not already reach the bottom of the page, since the glue gets squashed automatically when the page is too full.
-The packages called by \texttt{mitthesis} are listed in Table~\ref{tab:3} on page~\pageref{tab:3}.
+\subsection{Changing paragraph separation}
+If you prefer to denote paragraph breaks by vertical space rather than indentation, you can try the \texttt{parskip} package: \hrefurl{https://ctan.org/pkg/parskip}{ctan.org/pkg/parskip}. See that package's documentation for details.
-\section*{USE OUTSIDE MIT}
-If you wish to adapt this template for use at a different institution, you can put the following commands in your preamble.
+\subsection{Use outside MIT}
+To adapt this template for use at a different institution, you can put the following commands in your preamble.
\begin{itemize}
-\item Use \verb|\Institution{Your Institution}| to change MIT to your own institution on the title page. %{\small\textit{New with v1.06.}}
+\item Use \verb|\Institution{Your Institution}| to change MIT to your own institution on the title page.
\item Use \verb|\maketitle*| (in place of \verb|\maketitle|) to drop the MIT copyright permission statement
\item If your institution issues degrees in months other than February, May, June, or September, you can still put those months into the
-\verb|\DegreeDate| command. To suppress the resulting error message, put \verb|\SuppressMonthError| before \verb|\maketitle*|. %\newline{\small\textit{New with v1.11.}}
+\verb|\DegreeDate| command. To suppress the resulting error message, put \verb|\SuppressMonthError| before \verb|\maketitle*|.
-\item Omitting \verb|\Acceptor| commands will drop the ``Accepted by:'' field. To suppress the resultant error message, put \verb|\SuppressAcceptorError| before \verb|\maketitle*|. %\newline{\small\textit{New with v1.06.}}
+\item Omitting \verb|\Acceptor| commands will drop the ``Accepted by:'' field. To suppress the resultant error message, put \verb|\SuppressAcceptorError| before \verb|\maketitle*|.
+
+\item To change ``Thesis Supervisor'' to something else use \verb|\SupervisorDesignation{..}|.
\end{itemize}
Please do not remove the license/copyright text from the sources files --- this code took me some time write!
-\section*{RESOURCES FOR \LaTeX}
+\section[RESOURCES FOR LATEX]{RESOURCES FOR \LaTeX}
\LaTeX\ documentation is easy to find online. A few useful resources, among many, are these:
\begin{description}
\item[\LaTeX\ Wikibook.] \url{https://en.wikibooks.org/wiki/LaTeX}. An online tutorial book.
\item[\LaTeX 2e: An unofficial reference manual.] \url{https://latexref.xyz/dev/latex2e.html}. A comprehensive explanation of each \LaTeX\ command, from the \TeX\ User's Group.
\item[\TeX\ Stack-Exchange.]\ \url{https://tex.stackexchange.com/}. More than 250,000 answered questions, and you can ask your own!
-\item[ChatGPT.] At the time of this writing, ChatGPT, a chatbot based on a large language model, could both answer some \LaTeX-related questions and write acceptable \LaTeX\ and expl3 code.
+\item[ChatGPT.] At the time of this writing, ChatGPT, a chatbot based on a large language model, could sometimes accurately answer \LaTeX-related questions or write acceptable \LaTeX\ and expl3 code.
\end{description}
-
\vskip 30pt
\centering{\color{Red3}\Large\textbf{\textit{Good luck with your thesis and your thesis defense!}}
diff --git a/macros/latex/contrib/mitthesis/mitthesis.cls b/macros/latex/contrib/mitthesis/mitthesis.cls
index b48703d745..0a3a44310c 100644
--- a/macros/latex/contrib/mitthesis/mitthesis.cls
+++ b/macros/latex/contrib/mitthesis/mitthesis.cls
@@ -4,11 +4,11 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%% This file provides the mitthesis LaTeX class for formatting theses according to
-%% MIT Libraries' requirements as of 2023.
+%% MIT Libraries' requirements as of 2024.
%%
%% This file's version and date:
- \def\versionno{1.11}
- \def\versiondate{2023/11/02\space}
+ \def\versionno{1.14}
+ \def\versiondate{2024/07/19\space}
%%
%% Author: John H. Lienhard, V
%% Department of Mechanical Engineering
@@ -25,7 +25,7 @@
%%
%% LICENSE:
%%
-%% Copyright (c) 2023 John H. Lienhard
+%% Copyright (c) 2024 John H. Lienhard
%%
%% Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
%% associated documentation files (the "Software"), to deal in the Software without restriction,
@@ -57,34 +57,24 @@
\providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion}% compare version to date; \If... added to latex 2020/10/01
\providecommand\IfPackageAtLeastTF{\@ifpackagelater}% compare version to date; \If... added to latex 2020/10/01
-\providecommand\IfPackageLoadedTF{\@ifpackageloaded}% \If...added to latex 2021/11/15
+\providecommand\IfPDFManagementActiveTF{\@secondoftwo}% \If... added to latex 2021/07/23
+\providecommand\IfPackageLoadedTF{\@ifpackageloaded}% \If... added to latex 2021/11/15
+\providecommand\ClassNoteNoLine[2]{\typeout{^^JClass Note #1: #2.^^J}}% log & terminal note... added to latex 2021/11/15
\IfFormatAtLeastTF{2020/10/01}{%
- \typeout{^^JYour LaTeX format is dated \fmtversion. LaTeX distributions from 2022/11/01 or later are strongly recommended for best results^^J}
+ \ClassNoteNoLine{\ClassName}{Your LaTeX format is dated \fmtversion. LaTeX distributions from 2022/11/01 or later are strongly recommended for best results}
}{%
\ClassError{\ClassName}{Your LaTeX format is dated \fmtversion. Formats dated 2022/11/01 or later are strongly recommended for this class. Older formats may generate errors}{Please UPDATE your LaTeX distribution to obtain best results. TeX Live is available for download at no charge: \string https://www.tug.org/texlive/. You can try to click past the errors for now...}%
}
-% check whether pdfmanagement (\DocumentMetadata) has been loaded (if not, fall back to hyperxmp)
+% check whether pdfmanagement (\DocumentMetadata) has been loaded (if not, fall back to hyperxmp and bookmark packages after loading hyperref)
\newif\ifmit@pdfmanagement
-\ExplSyntaxOn
- \msg_new:nnn { \ClassName } { loading_hyperxmp } { pdfmanagement\ is\ not\ active.\ Will\ load\ hyperxmp\ instead. }
- % As of 2021/07/23 we could instead use \IfPDFManagementActiveTF{true code}{false code}
- \IfFormatAtLeastTF{2020/10/01}{
- \bool_if:nTF
- {
- \bool_lazy_and_p:nn
- { \cs_if_exist_p:N \pdfmanagement_if_active_p: }
- { \pdfmanagement_if_active_p: }
- }
- { \mit@pdfmanagementtrue }
- { \mit@pdfmanagementfalse
- \msg_warning:nn { \ClassName } { loading_hyperxmp }
- }
- }{ \mit@pdfmanagementfalse
- \msg_warning:nn { \ClassName } { loading_hyperxmp }
- }
-\ExplSyntaxOff
+\IfPDFManagementActiveTF{
+ \mit@pdfmanagementtrue
+}{
+ \mit@pdfmanagementfalse
+ \ClassWarningNoLine{\ClassName}{pdfmanagement is not active. Will load hyperxmp and bookmark packages instead}
+}
% Enable pre-2020/10 formats to access essential macros later moved into LaTeX kernel
\ifdefined\NewDocumentCommand\else
@@ -163,19 +153,35 @@
%%%%%%%%%%%%% Patch table of contents, list of figures, and list of tables %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\RequirePackage{etoolbox}% provides \patchcmd
-
-% We'd like these sections to have pdf bookmarks and to have the two lists appear in the table of contents
+% We'd like these sections to have pdf bookmarks and to have the two lists appear in the table of contents and have
+% pdf bookmarks. This is not automatic for \chapter*, which is the format of toc, lof, and lot.
-\patchcmd{\tableofcontents}{\@starttoc{toc}}{\pdfbookmark[0]{Table of Contents}{toc}\@starttoc{toc}}{}{}
-\patchcmd{\listoffigures}{\chapter*{\listfigurename}}{\chapter*{\listfigurename}\addcontentsline{toc}{chapter}{\listfigurename}}{}{}
-\patchcmd{\listoftables}{\chapter*{\listtablename}}{\chapter*{\listtablename}\addcontentsline{toc}{chapter}{\listtablename}}{}{}
+\RequirePackage{etoolbox}% provides \patchcmd
+\patchcmd{\tableofcontents}{\contentsname}{\pdfbookmark[0]{Table of Contents}{toc}\contentsname}{}{} % placement matters.
+\patchcmd{\listoffigures}{\chapter*{\listfigurename}}{\chapter*{\phantomsection\listfigurename}\addcontentsline{toc}{frontmatter}{\listfigurename}}{}{}
+\patchcmd{\listoftables}{\chapter*{\listtablename}}{\chapter*{\phantomsection\listtablename}\addcontentsline{toc}{frontmatter}{\listtablename}}{}{}
+
+\NewCommandCopy\l@frontmatter\l@chapter
+\NewCommandCopy\l@backmatter\l@chapter
+\providecommand*{\toclevel@frontmatter}{0}% prevent warning, see hyperref manual Sec. 13.3
+\providecommand*{\toclevel@backmatter}{0}
+%% if you want different formatting for front/back matter, change here (cf. report.cls). This approach preserves tagging hooks.
+\AtBeginDocument{
+ \patchcmd{\l@frontmatter}{\bfseries}{\itshape}{}{}
+ \patchcmd{\l@frontmatter}{\nobreak\hfil}{\upshape\nobreak\hfil}{}{}
+ \patchcmd{\l@frontmatter}{1.0em}{3pt}{}{}
+ \patchcmd{\l@backmatter}{\bfseries}{\itshape}{}{}
+ \patchcmd{\l@backmatter}{\nobreak\hfil}{\upshape\nobreak\hfil}{}{}
+}
%%%%%%%%%%%%% Geometry, mathtools, graphics, design, fonts, hyperrefs, bookmarks, footnotes %%%%%%%%%%%%%%%%%%%
-%\RequirePackage[letterpaper,top=1in,bottom=0.97136in,left=1in,right=1in,marginparwidth=50pt,headsep=12pt,footskip=0.47136in]{geometry} % bottom margin allows 45\baselineskip in \textheight
-\RequirePackage[letterpaper,top=1in,bottom=1in,left=1in,right=1in,marginparwidth=50pt,headsep=12pt,footskip=0.5in,heightrounded]{geometry} % 44\baselineskip = \texteheight - \topskip = 650.0pt - 12pt with rounded height
+%\RequirePackage[letterpaper,top=1in,bottom=0.97136in,left=1in,right=1in,marginparwidth=50pt,headsep=12pt,footskip=0.47136in]{geometry}
+% bottom margin allows 45\baselineskip in \textheight
+
+\RequirePackage[letterpaper,top=1in,bottom=1in,left=1in,right=1in,marginparwidth=50pt,headsep=12pt,footskip=0.5in,heightrounded]{geometry}
+% 44\baselineskip = \texteheight - \topskip = 650.0pt - 12pt with rounded height
\RequirePackage{mathtools}% loads and extends amsmath; must load before hyperref and unicode-math
@@ -198,16 +204,17 @@
https://ctan.org/tex-archive/macros/latex/contrib/mitthesis/MIT-thesis-template.}%
}%
\else
- \RequirePackage[hyperref,dvipsnames,svgnames,x11names]{xcolor}
+ \RequirePackage[dvipsnames,svgnames,x11names]{xcolor}
%
\RequirePackage{caption,subcaption}
%
\RequirePackage{titlesec}
% these titlesec commands just automate the bold math in some headings (rest follows default styles)
% NOT every font includes a bold math version, so you may need to use other math macros in the headings to get bold math <==
- \titleformat{\section}{\mathversion{bold}\normalfont\Large\bfseries}{\thesection }{1em}{}
+ % Predefined fontsets for which bold math exists are: CMR, Fira, Libertinus, Lucida, newtx
+ \titleformat{\section}{\mathversion{bold}\normalfont\Large\bfseries}{\thesection}{1em}{}
\titleformat{\subsection}{\mathversion{bold}\normalfont\large\bfseries}{\thesubsection}{1em}{}
- \titleformat{\subsubsection}{\mathversion{bold}\normalfont\normalsize\bfseries}{\thesubsubsection}{1em}{}
+ \titleformat{\subsubsection}{\mathversion{bold}\normalfont\normalsize\bfseries}{\thesubsubsection}{1em}{}
%
\AtBeginDocument{
\hypersetup{
@@ -226,21 +233,21 @@
\RequirePackage{iftex}[2019/11/07]% provides \ifpdftex, etc.
-\typeout{^^JFontset key is \mit@fontset.^^J}
+\ClassNoteNoLine{\ClassName}{Fontset key is \mit@fontset}
\IfFileExists{fontsets/\ClassName-\mit@fontset.tex}{% 2023/07/03
\input{fontsets/\ClassName-\mit@fontset.tex}
}{%
- \ClassWarning{\ClassName}{^^JFontset file \ClassName-\mit@fontset.tex or subdirectory fontsets not found, will look for \mit@fontset.tex in your working directory.}
+ \ClassWarning{\ClassName}{Fontset file \ClassName-\mit@fontset.tex or subdirectory fontsets not found, will look for \mit@fontset.tex in your working directory}
\IfFileExists{\mit@fontset.tex}{% 2023/08/30
\input{\mit@fontset.tex}
}{
- \ClassWarning{\ClassName}{^^JFontset file \mit@fontset.tex not found, using default fonts. You may need to place the fontset file into your working directory.}
+ \ClassWarning{\ClassName}{Fontset file \mit@fontset.tex not found, using default fonts. You may need to place the fontset file into your working directory}
\ifpdftex
- \typeout{^^JLoading Computer Modern text and math fonts (default for pdftex).^^J}
+ \ClassNoteNoLine{\ClassName}{Loading Computer Modern text and math fonts (default for pdftex)}
\RequirePackage[T1]{fontenc}
\RequirePackage{bm}
\else
- \typeout{^^JLoading Latin Modern text and math fonts (default for unicode engines).^^J}
+ \ClassNoteNoLine{\ClassName}{Loading Latin Modern text and math fonts (default for unicode engines)}
\RequirePackage[warnings-off={mathtools-colon,mathtools-overbracket}]{unicode-math}
% suppress tiresome warnings about lack of integration between mathtools and unicode-math.
% Unicode-math loads fontspec package, but default fonts are not selected by fontspec in this case.
@@ -251,15 +258,18 @@
%%%%%%%%%%%% Hyperref %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\RequirePackage[psdextra]{hyperref}
-% the new pdf-management scheme loads the bookmarks package internally.
% authors should use hypersetup to set details, in root .tex file
\urlstyle{same} % this changes font for \url to the current text font
-\providecommand\hrefurl[2]{\href{#1}{#2}}% in case \DocumentMetadata has not been loaded
\RequirePackage{doi} % create macro for hyperlinking doi numbers
+%% In case \DocumentMetadata was not loaded
+\providecommand\hrefurl[2]{\href{#1}{#2}}
+
+% pdfmanagement loads bookmarks package internally
\ifmit@pdfmanagement\else
\RequirePackage{hyperxmp}
+ \RequirePackage{bookmark}
\fi
% the user can alter these choices in the preamble, or by
@@ -289,7 +299,7 @@
\pdfstringdefDisableCommands{%
\def\bm#1#{\relax}%
}
-%%% Let's disable \( and \) in pdf bookmarks
+%% Let's disable \( and \) in pdf bookmarks
\pdfstringdefDisableCommands{%
\def\({\relax}%
\def\){\relax}%
@@ -312,10 +322,22 @@
\def\footnote#1{}%
}
+%%% Here's a more cumbersome removal of the warning for $ (math shift) in pdfbookmarks.
+%%% Not implementing this by default, since novice authors may benefit from the warning.
+%%% https://tex.stackexchange.com/a/620360/119566
+%\let\oldHyPsd@CatcodeWarning\HyPsd@CatcodeWarning
+%\renewcommand{\HyPsd@CatcodeWarning}[1]{%
+% \ifnum\pdfstrcmp{#1}{math shift}=0 % If 'math shift' is present, do nothing
+% \else
+% \oldHyPsd@CatcodeWarning{#1}% % else, keep usual warning.
+% \fi
+%}
\ExplSyntaxOn
%\debug_on:n {all}
+\prop_gput:Nnn \g_msg_module_type_prop { \ClassName } { Class }
+
%%%%%%%%%% Commas between successive footnotes %%%
\cs_new:Npn \__mitthesis_NoteComma:n { \peek_meaning:NT \footnote {\textsuperscript{\mdseries,}} }
@@ -346,11 +368,10 @@
}
\msg_new:nnnn { \ClassName } { wrong_month } {The\ degree\ month\ must\ be\ one\ of\ February,\ May,\ June,\ or\ September.} {You\ cannot\ use\ #1\ as\ the\ degree\ month.}
-\cs_generate_variant:Nn \text_titlecase:n {o,V}
\NewDocumentCommand\DegreeDate{mm}{% {month}{year}
\__dd_setdates:nn {#1}{#2}
- \cs_new:Npn \DegreeMonth { \text_titlecase:V { \g__dd_month_tl } }
- \cs_new:Npn \DegreeYear { \text_titlecase:V { \g__dd_year_tl } }
+ \cs_new:Npn \DegreeMonth { \text_titlecase_first:n { \text_lowercase:n \g__dd_month_tl } }
+ \cs_new:Npn \DegreeYear { \text_expand:n { \g__dd_year_tl } }% edited 2024/06/24
}
\msg_new:nnnn { \ClassName } { no_degree_date } {Missing\ degree\ date!}{
You\ MUST\ issue\ the\ \DegreeDate{month}{year}\ command\ between\ \string\begin{document}\ and\ \string\maketitle.}
@@ -516,7 +537,6 @@
\seq_new:N \g_supervisor_title_seq
\int_gzero_new:N \g_supervisor_supervisorcnt_int
-
\NewDocumentCommand\Supervisor{mm}{
\tl_if_blank:nTF{#1}{
\msg_error:nn { \ClassName } { blank_supervisor }
@@ -535,11 +555,27 @@
\cs_new_protected:Nn \__supervisor_data_add:nn
{
\int_gincr:N \g_supervisor_supervisorcnt_int
- \seq_gput_right:cx { g_supervisor_name_seq } { \tl_trim_spaces:n {#1} }
+ \seq_gput_right:cx { g_supervisor_name_seq } { \tl_trim_spaces:n {#1} }
\seq_gput_right:cx { g_supervisor_title_seq } { \tl_trim_spaces:n {#2} }
}
-
+\tl_new:N \g_titlepage_supervisor_designation_tl
+\tl_new:N \g_abstract_supervisor_designation_tl
+\tl_gset:Nn \g_titlepage_supervisor_designation_tl {Thesis\ Supervisor}
+\tl_gset:Nn \g_abstract_supervisor_designation_tl {Thesis\ supervisor}% style from MIT Libraries
+
+% If for some reason you need to change "Thesis Supervisor" to a different string (say, "Doctoral Advisor")
+% This construction removes leading and trailing spaces and lowercases the string.
+\NewDocumentCommand\SupervisorDesignation{ m } {
+ \tl_gset:Nn \g_titlepage_supervisor_designation_tl
+ { \cs_if_exist:NTF \text_titlecase_all:n % not def'd until 2023/07/08
+ { \text_titlecase_all:n { \text_lowercase:n { \tl_trim_spaces:n {#1} } } }
+ { \tl_trim_spaces:n {#1} }
+ }
+ \tl_gset:Nn \g_abstract_supervisor_designation_tl
+ { \text_titlecase_first:n { \text_lowercase:n { \tl_trim_spaces:n {#1} } } }
+ }
+
\cs_new:Nn \__supervisor_abstractblock: {
\int_zero_new:N \l__supervisor_supervisorno_int
\int_incr:N \l__supervisor_supervisorno_int
@@ -549,11 +585,13 @@
\msg_error:nn { \ClassName } { no_supervisor }
}
{\int_until_do:nNnn { \l__supervisor_supervisorno_int } = { \g_supervisor_supervisorcnt_int } {
- Thesis\ supervisor:\space \seq_item:cn { g_supervisor_name_seq } { \l__supervisor_supervisorno_int }\par
+ \g_abstract_supervisor_designation_tl :\space
+ \seq_item:cn { g_supervisor_name_seq } { \l__supervisor_supervisorno_int }\par
Title:\space \seq_item:cn { g_supervisor_title_seq } { \l__supervisor_supervisorno_int }\par\medskip
\int_incr:N \l__supervisor_supervisorno_int
}
- Thesis\ supervisor:\space \seq_item:cn { g_supervisor_name_seq } { \l__supervisor_supervisorno_int }\par
+ \g_abstract_supervisor_designation_tl :\space
+ \seq_item:cn { g_supervisor_name_seq } { \l__supervisor_supervisorno_int }\par
Title:\space \seq_item:cn { g_supervisor_title_seq } { \l__supervisor_supervisorno_int }\ignorespaces
}
}
@@ -593,8 +631,8 @@
{ Missing\ acceptor\ department,\ check\ for\ blank\ in\ \Acceptor{name}{department}{title}\ command. }{
You\ MUST\ provide\ the\ acceptor's\ department\ using\ the\ \Acceptor{name}{department}{title}\ command.}
\msg_new:nnn { \ClassName } { blank_acceptor_title }
- { Missing\ acceptor\ title\ (blank\ in\ \Acceptor{name}{department}{title}\ command).\ Perhaps\ you\ are\ trying\ to\ save\ vertical\ space?\
- You\ can\ put\ the\ acceptor\ title\ into\ department\ field\ instead.\ For\ consistency,\ I\ will\ omit\ titles\ of\ ALL\ acceptors.}
+ { Missing\ acceptor\ title\ (blank\ in\ \Acceptor{name}{department}{title}\ command).\space Perhaps\ you\ are\ trying\ to\ save\ vertical\ space?\space
+ You\ can\ put\ the\ acceptor\ title\ into\ department\ field\ instead.\space For\ consistency,\ I\ will\ omit\ titles\ of\ ALL\ acceptors.}
\cs_new_protected:Nn \__acceptor_data_add:nnn
{
@@ -607,36 +645,56 @@
%%%%%%%%%% End Acceptor Module %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%% Degree Module %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%% Degree Module %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% extensive edits 2024/06/25
\seq_new:N \g_degree_name_seq
\seq_new:N \g_degree_department_seq
\int_gzero_new:N \g_degree_degreecnt_int
-\int_gzero_new:N \g__degree_degreeflag_int
+\int_gzero_new:N \g_degree_deptcnt_int
\NewDocumentCommand\Degree{mm}
{
- \tl_if_blank:nTF {#1} {
- \msg_error:nn { \ClassName } { blank_degree }
- }{
- \__degree_data_add:nn { #1 } { #2 }
- }
- \tl_if_blank:nT {#2} {
- \int_gset_eq:NN \g__degree_degreeflag_int \g_degree_degreecnt_int
- \msg_warning:nnx { \ClassName } { blank_degree_dep } { \int_to_arabic:n { \g__degree_degreeflag_int } }
- \tl_if_blank:nT {#1} { \int_gincr:N \g__degree_degreeflag_int }% in case both are blank
- }
+ \int_compare:nNnTF { \g_degree_deptcnt_int } = {0} {
+ \tl_if_blank:nTF {#1} {
+ \msg_error:nn { \ClassName } { no_degree_name }
+ }{
+ \__degree_data_add:nn { #1 } { #2 }
+ \int_gincr:N \g_degree_degreecnt_int
+ }
+ \tl_if_blank:nT {#2} {
+ \msg_error:nn { \ClassName } { no_degree_dep }
+ }{
+ \int_gincr:N \g_degree_deptcnt_int
+ }
+ }{
+ \tl_if_blank:nTF {#1} {
+ \msg_warning:nn { \ClassName } { blank_degree }
+ }{
+ \__degree_data_add:nn { #1 } { #2 }
+ \int_gincr:N \g_degree_degreecnt_int
+ }
+ \tl_if_blank:nTF {#2} {
+ \msg_warning:nn { \ClassName } { blank_degree_dep }
+ }{
+ \int_gincr:N \g_degree_deptcnt_int
+ \tl_if_blank:nT {#1} { % in case department is blank
+ \__degree_data_add:nn { #1 } { #2 }
+ }
+ }
+ }
}
+
\cs_new_protected:Nn \__degree_data_add:nn
{
- \int_gincr:N \g_degree_degreecnt_int
\seq_gput_right:cx { g_degree_name_seq } { \tl_trim_spaces:n {#1} }
\seq_gput_right:cx { g_degree_department_seq } { \tl_trim_spaces:n {#2} }
}
-\msg_new:nnnn { \ClassName } { blank_degree } {Missing\ degree\ name,\ check\ for\ blank\ in\ \Degree\ command.}
- {You\ MUST\ provide\ a\ degree\ name\ using\ the\ \Degree{name}{department}\ command.}
-\msg_new:nnnn { \ClassName } { blank_degree_dep } {Missing\ degree\ department\ for\ Degree\ command\ number\
- #1.\ Will\ treat\ as\ a\ duplicate\ of\ previous\ department.}{}
+\msg_new:nnnn { \ClassName } { no_degree_name } {Missing\ degree\ name,\ check\ for\ blank\ in\ \Degree\ command.}
+ {You\ MUST\ provide\ at\ least\ one\ degree\ name\ using\ the\ \Degree{name}{department}\ command.}
+\msg_new:nnnn { \ClassName } { no_degree_dep } {Missing\ degree\ department\ for\ Degree\ command.}
+ {You\ MUST\ provide\ at\ least\ one\ department\ name\ using\ the\ \Degree{name}{department}\ command.}
+\msg_new:nnnn { \ClassName } { blank_degree } {Missing\ degree\ name\ in\ second\ Degree\ command.\ Will\ treat\ as\ two\ departments\ issuing\ one\ degree.}{}
+\msg_new:nnnn { \ClassName } { blank_degree_dep } {Missing\ degree\ department\ in\ second\ \ Degree\ command.\ Will\ treat\ as\ one\ department\ issuing\ two\ degrees.}{}
\int_zero_new:N \l__degree_degreeno_int
\int_zero_new:N \l__degree_departmentno_int
@@ -651,20 +709,18 @@
\int_incr:N \l__degree_departmentno_int
\cs_new:Nx \__degree_prevdept: {\seq_item:cn { g_degree_department_seq } { \l__degree_departmentno_int } }
\cs_new:Nn \__degree_currdept: {}
- \mbox {Submitted\ to\ the\ } \mbox {\__degree_prevdept:}
- \int_until_do:nNnn { \l__degree_departmentno_int } = { \g_degree_degreecnt_int } {
+% \mbox {Submitted\ to\ the\ } \mbox {\__degree_prevdept:}
+ {Submitted\ to\ the\ \__degree_prevdept:}
+ \int_until_do:nNnn { \l__degree_departmentno_int } = { \g_degree_deptcnt_int } {
\int_incr:N \l__degree_departmentno_int
\cs_set:Nx \__degree_currdept: {\seq_item:cn { g_degree_department_seq } { \l__degree_departmentno_int } }
- \int_compare:nNnTF { \l__degree_departmentno_int } = {\g__degree_degreeflag_int } { \scan_stop: }
- {
- \mbox {\ and\ the}\linebreak
- \mbox {\__degree_currdept: }
- }
- }
+ \mbox {\ and}\linebreak
+ \mbox {the\ \__degree_currdept: }
+ }
\linebreak \mbox {in\ partial\ fulfillment\ of\ the\ requirements\ for\ the\
\int_compare:nNnTF { \g_degree_degreecnt_int } > {1} {degrees} {degree}
\ of}
- \par%\medskip, removed 2023/10/25 to work better with four block layout of title page
+ \par
\int_until_do:nNnn { \l__degree_degreeno_int } = { \g_degree_degreecnt_int } {
\text_uppercase:n {\seq_item:cn { g_degree_name_seq } { \l__degree_degreeno_int }}\par and\par
\int_incr:N \l__degree_degreeno_int
@@ -681,16 +737,14 @@
\int_set:Nn \l__degree_departmentno_int {1}
\cs_set:Nx \__degree_prevdept: {\seq_item:cn { g_degree_department_seq } { \l__degree_departmentno_int } }
\cs_set:Nn \__degree_currdept: {}
- \mbox {Submitted\ to\ the\ }\mbox{\__degree_prevdept:}
- \int_until_do:nNnn { \l__degree_departmentno_int } = { \g_degree_degreecnt_int } {
- \int_incr:N \l__degree_departmentno_int
+% \mbox {Submitted\ to\ the\ }\mbox {\__degree_prevdept:} % changed 2024/4/20
+ {Submitted\ to\ the\ \__degree_prevdept:}
+ \int_until_do:nNnn { \l__degree_departmentno_int } = { \g_degree_deptcnt_int } {
+ \int_incr:N \l__degree_departmentno_int
\cs_set:Nx \__degree_currdept: {\seq_item:cn { g_degree_department_seq } { \l__degree_departmentno_int } }
- \int_compare:nNnTF { \g__degree_degreeflag_int } = { \g_degree_degreecnt_int } { \scan_stop: }
- {
- \mbox {\ and\ the}\linebreak
- \mbox { \__degree_currdept: }
- }
- }
+ \mbox {\ and}\linebreak
+ \mbox {the\ \__degree_currdept: }
+ }
\linebreak \mbox{on\ \g_dd_thesisdate_tl\ in\ partial\ fulfillment\ of\ the\ requirements\ for\ the\
\int_compare:nNnTF { \g_degree_degreecnt_int } > {1} {degrees} {degree}
\ of}
@@ -749,7 +803,8 @@
\int_do_while:nNnn { \g__signature_supno_int } < { \g_supervisor_supervisorcnt_int } {
\int_gincr:N \g__signature_supno_int
Certified\ by: \> \seq_item:cn { g_supervisor_name_seq } { \g__signature_supno_int } \\
- \> \seq_item:cn { g_supervisor_title_seq } { \g__signature_supno_int },\ Thesis\ Supervisor\\[1em]
+ \> \seq_item:cn { g_supervisor_title_seq } { \g__signature_supno_int },\
+ \g_titlepage_supervisor_designation_tl \\[1em]
}
\int_compare:nNnF { \g_acceptor_acceptorcnt_int } = {0} {
\int_do_while:nNnn { \g__signature_accno_int } < { \g_acceptor_acceptorcnt_int } {
@@ -883,12 +938,12 @@
\tl_gset:Nn \g_copyright_copyrightlicencse_tl
{This\ work\ is\ licensed\ under\ a\ \mbox{\g_copyright_cclicensetext_tl}\ license.\par\g_copyright_mitpermission_tl}
\tl_gset:Nn \g_copyright_pdfrightstext_tl
- {This\ work\ is\ licensed\ under\ a\ \g_copyright_ccname_tl\ license.\ \g_copyright_mitpermission_tl}
+ {This\ work\ is\ licensed\ under\ a\ \g_copyright_ccname_tl\ license.\space \g_copyright_mitpermission_tl}
}{
\tl_gset:Nn \g_copyright_copyrightlicencse_tl
{All\ rights\ reserved. \par\g_copyright_mitpermission_tl}
\tl_gset:Nn \g_copyright_pdfrightstext_tl
- {All\ rights\ reserved.\ \g_copyright_mitpermission_tl}
+ {All\ rights\ reserved.\space \g_copyright_mitpermission_tl}
}
\int_compare:nNnTF {\g_author_authorcnt_int} > {1}
{
@@ -908,8 +963,10 @@
{\centering \vbox_to_ht:nn { \vsize }% to prevent signature block from breaking across page
{
\setlength{\parskip}{7.5pt plus 1pt minus 1pt}% edited all vertical space on this page 2023/10/25
- \setlength{\parindent}{0pt}
- {\Large\textbf{\g_mitthesis_title_tl}\phantomsection\addcontentsline{toc}{chapter}{Title\ page}\par} % revise for tagging in future
+ \setlength{\parindent}{0pt}\pdfbookmark[0]{Title\ page}{titlepage}
+ {\Large\textbf{\g_mitthesis_title_tl}
+ %\phantomsection\addcontentsline{toc}{chapter}{Title\ page}
+ \par}
\__titlepage_blockskip:nn {12}{1.5}% new idea
\__author_block:
\__titlepage_blockskip:nn {12}{1.5}
@@ -925,7 +982,7 @@
}
}
\hypersetup{
- pdfcopyright={Copyright\ \DegreeYear\ by\ \CopyrightAuthor.\ \g_copyright_pdfrightstext_tl},
+ pdfcopyright={Copyright\ \DegreeYear\ by\ \CopyrightAuthor.\space \g_copyright_pdfrightstext_tl},
pdfauthor={\g__author_pdfca_tl},
pdfcaptionwriter = {\g__author_pdfca_tl},
}
@@ -937,14 +994,17 @@
%%%%%%%%%% Abstract page Module %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% to change abstract name, follow either of these approaches in your preamble:
+% to change abstract name (e.g., to "Summary"), follow either approach in your preamble:
% \RenewExpandableDocumentCommand\abstractname{}{Summary}
% \renewcommand\abstractname{Summary}
\RenewDocumentEnvironment{abstract}{+b}{
\newpage
\begin{center}
- {\large{\textbf{\g_mitthesis_title_tl}}\phantomsection\addcontentsline{toc}{chapter}{\abstractname}\par} % revise for tagging as LaTeX evolves further
+ \pdfbookmark[0]{Abstract}{abstract}
+ {\large{\textbf{\g_mitthesis_title_tl}}
+ %\phantomsection\addcontentsline{toc}{chapter}{\abstractname}
+ \par}
\setlength{\parskip}{0.5\baselineskip plus 2pt minus 2pt}
\__author_abstractblock:
\par
@@ -992,11 +1052,12 @@
% Increase first optional argument to a dimension > 2em if wide entries cause undesired misalignment of columns.
% Second optional argument can be used to rename the environment, e.g., to List of Symbols.
% Third optional argument selects section-level or chapter-level style for the nomenclature list.
+\newcounter{dummy}% for tagging code
\NewDocumentEnvironment{nomenclature}{O{2em} O{\nomname} O{section}}{%
\setlength\columnsep{2em}
\setlength{\nomenwidth}{#1}
\csname #3\endcsname *{#2}% this level will vary amongst users!
- \phantomsection\addcontentsline{toc}{#3}{#2}% tagged pdf may not capture both of these ... 2023/10/18
+ \refstepcounter{dummy}\addcontentsline{toc}{#3}{#2}% \refstepcounter is a hack until tagging code evolves more
\raggedright
\begin{list}{}{%
\setlength{\itemsep}{0pt}%
diff --git a/macros/latex/contrib/moderncv/CHANGELOG b/macros/latex/contrib/moderncv/CHANGELOG
index 245eda72b7..bcfdad1373 100644
--- a/macros/latex/contrib/moderncv/CHANGELOG
+++ b/macros/latex/contrib/moderncv/CHANGELOG
@@ -1,371 +1,396 @@
-version 2.3.1 (2022-02-21)
-- Fix duplicate GitLab icon (#105)
-- Revert using detokenize in social links (#97)
-- Fix broken compilation in classic style (#96)
-
-version 2.3.0 (2021-12-16)
-- Remove font loading from class (#87)
-- Add Matrix and Signal icon (#84)
-- Improved symbol loading (#84)
-
-version: 2.2.0 (2021-07-28)
-- Remove dot in cventry when using moderncvbodyi.
+version 2.4.1 (18 Jul 2024)
+- Fix commons/colors.tex not found in package (#194)
+
+version 2.4.0 (08 Jul 2024)
+- Rewrote user guide, thanks to David Seus (#58, #106, #169).
+- Fixed "Underfull \hbox (badness 10000)" warning in \makecvtitle (#162).
+- Fixed unnecessary academicons warning when academicons aren't used (#161).
+- Fixed page counts unnecessarily linking to the last page of the PDF (#159).
+- Added support for an optional signature in the cover letter (#157).
+- Added support for non-ASCII characters in links (#155).
+- Added option to force a homepage link to use HTTP rather than HTTPS (#154).
+- Passed unicode option directly to hyperref to avoid conflicts with the
+ inclusion of hyperref by other packages (#148).
+- Fixed the sender block on the cover letter in banking style (#146).
+- Added option to classic style to align header elements at the top (#144).
+- Added Twitch, YouTube, TikTok, Instagram, SoundCloud, Steam, Xbox, PlayStation
+ and Battle.net social icons (#131).
+- Removed extra dash in PDF metadata when CV title is empty (#116).
+- Added support for an optional subject line in the cover letter (#114).
+- Added Discord social icon (#112).
+- Replace instances of ~~~ in codebase with \hspace to be more compatible with
+ babel for Spanish (#109).
+- Added Codeberg and Mastodon social icons (#107).
+- New \social options: arXiv, INSPIRE (#185)
+- Systematize colors and make them user adjustable. See documentation for details.
+ This requires the \moderncvcolor to be issued BEFORE \moderncvstyle (#151).
+- all styles: make the head options 'details' and 'nodetails' available to the user. (previously they were hidden). Oldstyle does not respond too well to nodetails (#150).
+- casual style: make the head options 'alternate', 'details' and 'nodetails' available to the user. (previously they were hidden) (#150).
+- Setting \listitemsymbolspace allows custom spacing between list symbol and text item (for \cvlistitem and \cvlistdoubleitem) (#74).
+- Introducing \cvtripleitem command for items in three columns. Closing feature request #174.
+- Fixed wrong cvlistitem vspace caused by multiline section titles in fancy style (#69).
+
+version 2.3.1 (21 Feb 2022)
+- Fix duplicate GitLab icon (#105).
+- Revert using detokenize in social links (#97).
+- Fix broken compilation in classic style (#96).
+
+version 2.3.0 (16 Dec 2021)
+- Remove font loading from class (#87).
+- Add Matrix and Signal icon (#84).
+- Improved symbol loading (#84).
+
+version: 2.2.0 (28 Jul 2021)
+- Remove dot in \cventry when using moderncvbodyi.
+
- Remove http baseurl in hyperref.
-- Change font encoding to use fontspec with Latin Modern for luatex and xetex,
+- Change font encoding to use fontspec with Latin Modern for LuaTeX and XeTeX,
else inputenc / fontenc / lmodern (https://tex.stackexchange.com/a/496643).
- Add birthdate field command.
- Add Social entries for WhatsApp, Signal and Matrix.
- Fix Researcher ID not showing (#29).
-- Make options 'symbols' and 'nosymbols' available to all styles to toggle whether
- symbols should be used or not. Include symbols in oldstyle by default.
-- Migrate older newcommand syntax in moderncvcollection.sty to the xparse syntax.
+- Make options "symbols" and "nosymbols" available to all styles to toggle
+ whether symbols should be used or not. Include symbols in oldstyle by default.
+- Migrate older newcommand syntax in moderncvcollection.sty to xparse syntax.
- Fix resumé typo in template. Is now résumé.
- Various other minor fixes.
version 2.1.0 (21 Jan 2021)
-- maintainer change: now team maintained (https://github.com/moderncv), since
- original repository is basically dead since 2016.
-- new \social options: Xing, Skype, GitLab, Bitbucket, stack overflow, ORCID,
- ResearcherID, ResearchGate, Telegram and Google Scholar
-- hyperlinks in phone numbers
-- switch from l3regex to expl3
-- new skill matrix feature
-- move to fonawesome5 package
-- default to https
+- Maintainer change: now team maintained (https://github.com/moderncv), since
+ original repository has been basically dead since 2016.
+- New \social options: Xing, Skype, GitLab, Bitbucket, stack overflow, ORCID,
+ ResearcherID, ResearchGate, Telegram and Google Scholar.
+- Hyperlinks in phone numbers.
+- Switch from l3regex to expl3.
+- New skill matrix feature.
+- Move to fontawesome5 package.
+- Default to https.
version 2.0.0 (28 Jul 2015)
- - refactored the code into heads, body, foot and icon substyles. All styles
- (classic, casual, banking and oldstyle) are just a combination of these and
- some font selection. Mixing substyles (e.g., the banking header with the
- classic body) is now trivial by using the \moderncvhead, \moderncvbody,
- \moderncvfoot and \moderncvicons commands. Each of these take a substyle number
- as argument. \moderncvcolor takes a color name as argument.
- - added a new style, "fancy".
- - added an optional argument to \moderncvstyle to specify style options, i.e.
- \moderncvstyle[options]{style}. Below is a list of the available options per
- style:
- * classic
- > to specify of one's name should appear left or right at the top: "left"
- (default) or "right;
- * casual
- > to specify of one's name should appear left or right at the top: "left"
- (default) or "right;
- * banking
- > to specify how the section- and subsectionrules should be set:
- "fullrules", "shortrules", "mixedrules" (default; full rules for sections,
- short rules for subsections), "centered" (fullrules with centered title)
- and "norules" (norules, small caps font);
- > to specify how the body should be aligned: left" (default), "center" or
- "right";
- * oldstyle & fancy
- n/a
- - added a new color variant: "burgundy".
- - corrected the color of \addressstyle to match the one effectively used
- (color2).
- - adjusted the bibliography spacing to handle entries with or without labels.
- - added a check on the emptyness of \title when setting the hyperref document
- properties.
+- Refactored the code into heads, body, foot and icon substyles. All styles
+ (classic, casual, banking and oldstyle) are just a combination of these and
+ some font selection. Mixing substyles (e.g., the banking header with the
+ classic body) is now trivial by using the \moderncvhead, \moderncvbody,
+ \moderncvfoot and \moderncvicons commands. Each of these take a substyle
+ number as argument. \moderncvcolor takes a color name as argument.
+- Added a new style: fancy.
+- Added an optional argument to \moderncvstyle to specify style options, i.e.
+ \moderncvstyle[options]{style}. Below is a list of the available options per
+ style:
+ * classic
+ > to specify where at the top one's name should appear: "left" (default) or
+ "right;
+ * casual
+ > to specify where at the top one's name should appear: "left" (default) or
+ "right;
+ * banking
+ > to specify how the section and subsection rules should be set:
+ "fullrules", "shortrules", "mixedrules" (default; full rules for sections,
+ short rules for subsections), "centered" (fullrules with centered title)
+ and "norules" (norules, small caps font);
+ > to specify how the body should be aligned: left" (default), "center" or
+ "right";
+ * oldstyle & fancy
+ > n/a
+- Added a new color variant: "burgundy".
+- Corrected \addressstyle color to match the one effectively used (color2).
+- Adjusted the bibliography spacing to handle entries with or without labels.
+- Added a check on the emptiness of \title when setting the hyperref document
+ properties.
version 1.5.1 (29 Apr 2013)
- - made sure that XeLaTeX or LuaLaTeX is in use before loading the awesome icon
- set and if not, revert to the marvosym icon set.
+- Made sure that XeTeX or LuaTeX is in use before loading the awesome icon set
+ and if not, revert to the marvosym icon set.
version 1.5.0 (23 Apr 2013)
- - added a command to showcase social accounts in one's personal information:
- \social. The command currently handles automatically LinkedIn, Twitter and
- Github accounts, and other links can be provided explicitly.
- - added a new icon set: "awesome" (using the icons from the Font Awesome font).
- - set the "awesome" icon set as the default for the "casual" and "banking"
- style variants (can be changed back with \moderncvicons{marvosym}).
- - forced all the icons of the "letters" icon set to be of the same width, for
- alignment purpose.
- - added a letter icon ("W") for the homepage of the "letters" icon set.
- - forced some white space between the main text and the footer of the "casual"
- style variant.
- - removed the rule below the headings of the cvcolumns environment.
+- Added a command to showcase social accounts in one's personal information:
+ \social. The command currently handles LinkedIn, Twitter and Github accounts
+ automatically, and other links can be provided explicitly.
+- Added a new icon set: "awesome" (using the icons from the Font Awesome font).
+- Set the "awesome" icon set as the default for the casual and banking styles
+ (can be changed back with \moderncvicons{marvosym}).
+- Forced all the icons of the "letters" icon set to be of the same width, for
+ alignment purposes.
+- Added a letter icon ("W") for the homepage of the "letters" icon set.
+- Forced some whitespace between the main text and the footer of the casual
+ style.
+- Removed the rule below the headings of the cvcolumns environment.
version 1.4.0 (28 Mar 2013)
- - deprecated \phone, \mobile and \fax in favour of \phone[<type>], where <type>
- can be "fixed" (default), "mobile" or "fax". As part of the change, one can now
- use each of these multiple times, to e.g. display multiple mobile phone numbers.
- - deprecated \firstname and \familyname in favour of \name{<first>}{<last>}.
- - added a new mechanism to select amongs different possible icon sets:
- \moderncvicons{<iconsetname>}, where <iconsetname> can be "marvosym" (used by
- default in the "banking", "casual" and "classic" style variants) or "letters"
- (used by default in the "oldstyle" style variant). \moderncvicons should
- always be called after \moderncvstyle in order to override the style variants
- defaults.
- - added a command to control the font of the page numbering: \pagenumberfont,
- as requested by fr1a1nky (launchpad question #224496).
- - removed the use of the suffix package.
+- Deprecated \phone, \mobile and \fax in favour of \phone[<type>], where <type>
+ can be "fixed" (default), "mobile" or "fax". As part of the change, one can
+ now use each of these multiple times, e.g. to display multiple mobile phone
+ numbers.
+- Deprecated \firstname and \familyname in favour of \name{<first>}{<last>}.
+- Added a new mechanism to select amongs different possible icon sets:
+ \moderncvicons{<iconsetname>}, where <iconsetname> can be "marvosym" (used by
+ default in the banking, casual and classic styles) or "letters" (used by
+ default in the oldstyle style). \moderncvicons should always be called after
+ \moderncvstyle in order to override the styles' defaults.
+- Added a command to control the font of the page numbering: \pagenumberfont, as
+ requested by fr1a1nky (launchpad question #224496).
+- Removed the use of the suffix package.
version 1.3.0 (09 Feb 2013)
- - added a new environment to create multiple columns: cvcolumns. Each column
- is then created by \cvcolumn[width]{header}{content}, where the optional width
- is given as a fraction of the total width (between 0 and 1). The header and
- content are robust and can contain any paragraph command (e.g., a nest itemize
- environment).
- - added a macro (\pdfpagemode) to control what is visible upon opening compiled
- pdfs (assuming pdf reader support), as suggested by U. Stöhr.
- Possible values include: "UseNone" (only the document), "UseThumbs" (show
- thumbnails), "UseOutlines" (show bookmarks) and "FullScreen" (open in
- fullscreen mode).
- - added a 3rd, fully optional (can be omitted or left blank) argument to
- \address to specify a country, as requested on launchpad (launchpad bug
- #1063995).
- - compacted list environments further.
- - replaced the use of the xargs package by the xparse one.
+- Added a new environment to create multiple columns: cvcolumns. Each column is
+ then created by \cvcolumn[width]{header}{content}, where the optional width is
+ given as a fraction of the total width (between 0 and 1). The header and
+ content are robust and can contain any paragraph command (e.g., a nested
+ itemize environment).
+- Added a macro (\pdfpagemode) to control what is visible upon opening compiled
+ PDFs (assuming PDF reader support), as suggested by U. Stöhr.
+ Possible values include: "UseNone" (only the document), "UseThumbs" (show
+ thumbnails), "UseOutlines" (show bookmarks) and "FullScreen" (open in
+ fullscreen mode).
+- Added a 3rd, fully optional (can be omitted or left blank) argument to
+ \address to specify a country, as requested on launchpad (launchpad bug
+ #1063995).
+- Compacted list environments further.
+- Replaced the use of the xargs package by the xparse one.
version 1.2.1 (04 Dec 2012)
- - fixed a regression bug introduced in version 1.2.0 in the header of the
- "banking" style when no title is used, as reported on tex.stackexchange
- (question #85427).
+- Fixed a regression bug introduced in v1.2.0 in the header of the banking style
+ when no title is used, as reported on tex.stackexchange (question #85427).
version 1.2.0 (31 Oct 2012)
- - updated the "banking" style header to include the option to show a title.
- - set the values of \arrayrulewidth and \doublerulesep to their standard values
- (0.4pt and 2pt resp.) to enable the drawing of rules in tabulars and arrays by
- default.
- - modified the code of \makecvtitle and \makelettertitle of the "casual" style
- to avoid it to cause horizontal alignment issues after and before itself.
- - corrected a bug in \makelettertitle of most styles that displayed the current
- date (\today) instead of the date given through the \date command, as reported
- by B. Schlimmchen and S. Fnord.
- - removed the need to set pdfpagelabels=false when loading hyperref, by putting
- \pagenumbering{arabic} (to define \thepage) before loading hyperref, as figured
- out by J. Wolf.
- - corrected the line wrapping of \cvlistitem of the "banking" style.
- - corrected a bug in \makecvtitle and \makelettertitle of the "banking" style.
- - removed an unwanted space in the footer of the "casual" style.
- - moved the font style definitions to moderncv.cls for better readability
- (moderncv.cls is meant to be a sort of header file, implementing only some
- macros shared by all styles and defining the macros that the style files need
- to implement).
+- Updated the banking style header to include the option to show a title.
+- Set the values of \arrayrulewidth and \doublerulesep to their standard values
+ (0.4pt and 2pt, respectively) to enable the drawing of rules in tabulars and
+ arrays by default.
+- Modified the code of \makecvtitle and \makelettertitle of the casual style to
+ avoid it causing horizontal alignment issues before and after itself.
+- Corrected a bug in \makelettertitle of most styles that displayed the current
+ date (\today) instead of the date given through the \date command, as reported
+ by B. Schlimmchen and S. Fnord.
+- Removed the need to set pdfpagelabels=false when loading hyperref by putting
+ \pagenumbering{arabic} (to define \thepage) before loading hyperref, as
+ figured out by J. Wolf.
+- Corrected the line wrapping of \cvlistitem of the banking style.
+- Corrected a bug in \makecvtitle and \makelettertitle of the banking style.
+- Removed an unwanted space in the footer of the casual style.
+- Moved the font style definitions to moderncv.cls for better readability
+ (moderncv.cls is meant to be a sort of header file, implementing only some
+ macros shared by all styles and defining the macros that the style files need
+ to implement).
version 1.1.3 (10 Aug 2012)
- - corrected a longstanding issue causing hyperref to issue two warnings
- regarding its "pdfpagelabels" option, as pointed out and solved by P. Leifeld
- (launchpad bug #1035466).
+- Corrected a long-standing issue causing hyperref to issue two warnings about
+ its "pdfpagelabels" option, as pointed out and solved by P. Leifeld (launchpad
+ bug #1035466).
version 1.1.2 (09 Aug 2012)
- - fixed a regression bug introduced in version 1.0.0 in the footer of the
- "casual" style, as discovered on tex.stackexchange (question #66316).
+- Fixed a regression bug introduced in v1.0.0 in the footer of the casual style,
+ as discovered on tex.stackexchange (question #66316).
version 1.1.1 (30 Jul 2012)
- - fixed a compatibility issue introduced in version 1.0.0 when
- \maketitlenamewidth was renamed to \makecvtitlenamewidth, as reported by Peppe
- on launchpad (launchpad bug #1030802). The template now correctly uses
- \makecvtitlenamewidth, and \maketitlenamewidth was created as an alias for
- backward compatibility.
+- Fixed a compatibility issue introduced in v1.0.0 when \maketitlenamewidth was
+ renamed to \makecvtitlenamewidth, as reported by Peppe on launchpad (launchpad
+ bug #1030802). The template now correctly uses \makecvtitlenamewidth, and
+ \maketitlenamewidth was created as an alias forbackward compatibility.
version 1.1.0 (29 Jul 2012)
- - fixed the switching from letter to resume, correcting spacing errors when a
- letter is typeset before the resume, as noticed by U. Gabor.
- - fixed the vertical alignment of the footers, as reported by T. Homa.
- Footers are now aligned to the bottom and the letter and cv footers are
- perfectly aligned in the "casual" style.
- - prepared moderncv for fontspec font loading (still commented in code).
- - changed the handling of the "sans" and "roman" class options, to be reflected
- at the beginning of the document and override style font choices.
- - turned unicode support in hyperref on by default.
- - tweaked the use of \textbullet to avoid the fall-back to Computer Modern
- fonts and prepared the use of symbols from the MarVoSym font for fontspec
- (LauLaTeX or XeLaTeX).
- - tweaked the \subsectionfill of the "banking" style to distribute extra space
- evenly between leaders.
- - added two options to change the "Enclosure" string used for the letter
- enclosure: either specify another string as optional argument to \enclosure,
- or redefine \enclname, as suggested by D. Wille.
+- Fixed the switching from letter to resume, correcting spacing errors when a
+ letter is typeset before the resume, as noticed by U. Gabor.
+- Fixed the vertical alignment of the footers, as reported by T. Homa. Footers
+ are now aligned to the bottom and the letter and CV footers are perfectly
+ aligned in the casual style.
+- Prepared moderncv for fontspec font loading (still commented out in code).
+- Changed the handling of the "sans" and "roman" class options, to be reflected
+ at the beginning of the document and override style font choices.
+- Turned unicode support in hyperref on by default.
+- Tweaked the use of \textbullet to avoid a fallback to Computer Modern fonts
+ and prepared the use of symbols from the MarVoSym font for fontspec (LuaTeX or
+ XeTeX).
+- Tweaked the \subsectionfill of the banking style to distribute extra space
+ evenly between leaders.
+- Added two options to change the "Enclosure" string used for the letter
+ enclosure: either specify another string as an optional argument to \enclosure
+ or redefine \enclname, as suggested by D. Wille.
version 1.0.0 (26 Mar 2012)
- - added commands to generate letters for every resume style: \recipient, \date,
- \opening, \closing, \enclosure, \makelettertitle and \makeletterclosing. The
- old \maketitle and \makefooter commands are now deprecated and replaced by
- \makecvtitle and \makecvfooter.
- - changed the alignment algorithm for the personal data display in the oldstyle
- style, as to align on the baseline of the first line with the surrounding text.
+- Added commands to generate letters for every resume style: \recipient, \date,
+ \opening, \closing, \enclosure, \makelettertitle and \makeletterclosing. The
+ old \maketitle and \makefooter commands are now deprecated and replaced by
+ \makecvtitle and \makecvfooter.
+- Changed the alignment algorithm for the personal data display in the oldstyle
+ style, to align on the baseline of the first line with the surrounding text.
version 0.19.0 (06 Feb 2012)
- - reintroduced the ability to force the width reserved to display the name
- in the resume header for the classic style (\maketitlenamewidth).
- - improved the pdf metadata, as reported by S. Wunsch (launchpad bug #922476).
- - fixed a footersymbol bug in the casual style when no mobile number was given,
- as reported by S. Wunsch (launchpad bug #922470).
- - fixed a display bug when an address was given without postcode/city, as
- reported by O. Shaneh (launchpad bug #670263).
+- Reintroduced the ability to force the width reserved to display the name in
+ the resume header for the classic style (\maketitlenamewidth).
+- Improved the PDF metadata, as reported by S. Wunsch (launchpad bug #922476).
+- Fixed a \footersymbol bug in the casual style when no mobile number was given,
+ as reported by S. Wunsch (launchpad bug #922470).
+- Fixed a display bug when an address was given without postcode/city, as
+ reported by O. Shaneh (launchpad bug #670263).
version 0.18.0 (05 Feb 2012)
- - corrected the handling of pdf bookmarks, as suggested on stackexchange by
- U. Fischer.
- - improved the spacing between sections and subsections by using \addvspace
- instead of \vspace.
- - corrected the spacing between entries with nested itemize environments
- (temporary solution working only for single line items).
- - added a check in the oldstyle style for an empty 4th argument in the
- \cvdoubleitem definition, to avoid printing a colon without preceding label.
- - added a new style on top of classic, casual and oldstyle: banking.
+- Corrected the handling of PDF bookmarks, as suggested on stackexchange by
+ U. Fischer.
+- Improved the spacing between sections and subsections by using \addvspace
+ instead of \vspace.
+- Corrected the spacing between entries with nested itemize environments
+ (temporary solution working only for single line items).
+- Added a check in the oldstyle style for an empty 4th argument in the
+ \cvdoubleitem definition to avoid printing a colon without a preceding label.
+- Added a new style on top of classic, casual and oldstyle: banking.
version 0.17.0 (25 Jan 2012)
- - changed the footer algorithm of style casual to avoid starting lines with
- the footer symbol.
- - aligned the space before and after the title across styles.
- - added an optional title to the casual style.
- - changed the definition of the font styles to avoid undesired extra spacing.
- - added a Spanish template, kindly provided by I. Buitrón.
- - corrected the vertical misalignment between the page number and the center
- footer in the casual style.
+- Changed the footer algorithm of the casual style to avoid starting lines with
+ the footer symbol.
+- Aligned the space before and after the title across styles.
+- Added an optional title to the casual style.
+- Changed the definition of the font styles to avoid undesired extra spacing.
+- Added a Spanish template, kindly provided by I. Buitrón.
+- Corrected the vertical misalignment between the page number and the center
+ footer in the casual style.
version 0.16.0 (15 Jan 2012)
- - added starred versions of \section and \subsection (that are identical to
- their non-starred version, to e.g. enable biblatex support as requested by
- S. Verberkt (launchpad bug #913102).
- - corrected a misalignment of the colored rule in front of the section titles
- in the classic and casual styles, as reported by P. Neidhardt (launchpad bug
- #915910).
+- Added starred versions of \section and \subsection that are identical to their
+ non-starred versions (e.g. to enable BibLaTeX support) as requested by
+ S. Verberkt (launchpad bug #913102).
+- Corrected a misalignment of the colored rule in front of the section titles in
+ the classic and casual styles, as reported by P. Neidhardt (launchpad bug
+ #915910).
version 0.15.1 (23 December 2011)
- - corrected a bug in the classic style causing the address font and color not
- being carried over newlines, as reported by J. Smith.
+- Corrected a bug in the classic style causing the address font and color to not
+ be carried over newlines, as reported by J. Smith.
version 0.15.0 (19 December 2011)
- - corrected list spacing.
- - corrected inconsistent use of sans serif fonts in roman layout option.
- - the lmodern fonts are now automatically loaded only if installed on the
- system. The "nolmodern" option is now therefore obsolete.
- - complete code refactoring separating themes in separate styles and colors.
- - renamed \cvline to \cvitem, \cvlanguage to \cvitemwithcomment and \cvcomputer
- to \cvdoubleitem (the old command name still work and redirect to the new ones,
- but are deprecated).
- - removed the arbitrary minipage widths of skill proficiency vs comment in
- \cvitemwithcomments. The skill proficiency is now typeset exactly as given
- (i.e. one one line if no linebreaks are implicitly given) and the comment uses
- the remaining horizontal space.
- - changed the optional argument of \cvlistitem and \cvlistdoubleitem to specify
- the vertical skip after the item (as for \cvitem, cvitemwithcomments, etc).
- The way to change the list symbol is to redefine \listitemsymbol.
- - added a new style on top of classic and casual: oldstyle.
- - loaded the microtype package to improve typography.
+- Corrected list spacing.
+- Corrected inconsistent use of sans serif fonts in roman layout option.
+- The lmodern fonts are now automatically loaded only if they're installed on
+ the system. The "nolmodern" option is now therefore obsolete.
+- Completed code refactoring separating themes in separate styles and colors.
+- Renamed \cvline to \cvitem, \cvlanguage to \cvitemwithcomment and \cvcomputer
+ to \cvdoubleitem (the old command names still work and redirect to the new
+ ones, but are deprecated).
+- Removed the arbitrary minipage widths of skill proficiency vs comment in
+ \cvitemwithcomments. The skill proficiency is now typeset exactly as given
+ (i.e. one one line if no linebreaks are implicitly given) and the comment uses
+ the remaining horizontal space.
+- Changed the optional argument of \cvlistitem and \cvlistdoubleitem to specify
+ the vertical skip after the item (as for \cvitem, \cvitemwithcomments, etc).
+ The way to change the list symbol is to redefine \listitemsymbol.
+- Added a new style on top of classic and casual: oldstyle.
+- Loaded the microtype package to improve typography.
version 0.14.0 (04 December 2011)
- - added support for CJK, thanks to the help of P. D'Apice.
- - the use of \recomputelengths after modifying any length in the preamble is
- now unnecessary; \recomputelength is automatically called at the start of the
- document.
+- Added support for CJK, thanks to the help of P. D'Apice.
+- The use of \recomputelengths after modifying any length in the preamble is now
+ unnecessary; \recomputelength is automatically called at the start of the
+ document.
version 0.13.1 (11 November 2011)
- - corrected a bug introduced by v0.13 in the classic style when no \photo is
- used, as reported by S. Gislais (launchpad bug #888702).
+- Corrected a bug introduced by v0.13 in the classic style when no \photo is
+ used, as reported by S. Gislais (launchpad bug #888702).
version 0.13.0 (06 November 2011)
- - added a "black" color option to render the resume in black & white, as
- suggested by F. Bicarri.
- - removed the pdflatex option when loading hyperref to enable other engines
- (e.g., dvips, xetex), leftover from the v 0.11 cleanup, as reported by
- K. Amaterasu and P. Mavrogiorgos (launchpad bugs #754693 and #859834).
- - added a "purple" color option, as proposed by B. Ravel.
- - added a 3rd optional argument to the \photo command to control the thickness
- of the framebox. Setting it to 0pt will disable the frame around the photo, as
- requested by T. Krennwallner (launchpad bug #664568).
+- Added a "black" color option to render the resume in black & white, as
+ suggested by F. Bicarri.
+- Removed the pdflatex option when loading hyperref to enable other engines
+ (e.g., dvips, XeTeX), leftover from the v0.11 cleanup, as reported by
+ K. Amaterasu and P. Mavrogiorgos (launchpad bugs #754693 and #859834).
+- Added a "purple" color option, as proposed by B. Ravel.
+- Added a 3rd optional argument to the \photo command to control the thickness
+ of the framebox. Setting it to 0pt will disable the frame around the photo, as
+ requested by T. Krennwallner (launchpad bug #664568).
version 0.12.0 (03 August 2010)
- - prevented pagebreaks after sections and subsections (launchpad bug #409902),
- as originally reported by C. Gaspoz and fixed by launchpad user tentotwo).
+- Prevented pagebreaks after sections and subsections (launchpad bug #409902),
+ as originally reported by C. Gaspoz and fixed by launchpad user tentotwo.
version 0.11.0 (20 July 2010)
- - removed the \ifpdf check when loading the graphicx package, as graphicx does
- does check internally and this was preventing proper functionning with xelatex
- and luatex, as reported by A. Trautmann. The same check was also removed
- everywhere else in the document (i.e. when loading the color and hyperref
- packages).
+- Removed the \ifpdf check when loading the graphicx package, as graphicx
+ already does this check internally. This was preventing proper functioning
+ with XeTeX and LuaTeX, as reported by A. Trautmann. The same check was also
+ removed everywhere else in the document (i.e. when loading the color and
+ hyperref packages).
version 0.10.0 (13 June 2010)
- - fixed a compatibility issue with the natbib package (natbib uses \section*
- to format the bibliography title, while only \section was defined by
- moderncv), as reported on launchpad (launchpad bug #393920).
- - fixed a compatibility issues with (any package relying on) the etoolbox
- package, due to the double definition of \AtEndPreamble, as reported by
- D. Becker.
+- Fixed a compatibility issue with the natbib package (natbib uses \section* to
+ format the bibliography title, while only \section was defined by moderncv),
+ as reported on launchpad (launchpad bug #393920).
+- Fixed compatibility issues with (any package relying on) the etoolbox package,
+ due to the double definition of \AtEndPreamble, as reported by D. Becker.
version 0.9.0 (31 May 2010)
- - added support for the itemize, enumerate and description environments.
+- Added support for the itemize, enumerate and description environments.
version 0.8.0 (24 May 2010)
- - added support for multibib. Also modified the template to illustrate how to
+- Added support for multibib. Also modified the template to illustrate how to
show labels in the bibliography, as requested by Tom D. R. and Stefan K.
- - added a command to indicate your personal homepage (\homepage{url}), as
+- Added a command to indicate your personal homepage (\homepage{url}), as
requested by J. de Jong and A. Pairet.
- - corrected an alignment bug for text following a \quote with no immediate
+- Corrected an alignment bug for text following a \quote with no immediate
\section, as kindly reported by J. Vermeulen and L. Saliou.
- - corrected a spacing bug when no blank line (or \par) is left after
- \maketitle. Thanks to A. Menzel for reporting the strange behaviour.
- - corrected the alignment of the extrainfo title part when no picture was
- used, as reported by M. Bana.
- - corrected the missplacement of pdf bookmarks as noticed by L. Fortunato.
- - corrected several bugs linked to the code for checking for empty arguments
- in \cventry, as reported by B. Ekran (launchpad bug #268768), L. Păncescu and
+- Corrected a spacing bug when no blank line (or \par) is left after \maketitle.
+ Thanks to A. Menzel for reporting the strange behaviour.
+- Corrected the alignment of the \extrainfo title part when no picture was used,
+ as reported by M. Bana.
+- Corrected the misplacement of PDF bookmarks as noticed by L. Fortunato.
+- Corrected several bugs linked to the code for checking for empty arguments in
+ \cventry, as reported by B. Ekran (launchpad bug #268768), L. Păncescu and
E. Gregorio.
version 0.7.0 (17 June 2008)
- - corrected an outstanding spacing bug (space between cvlines longer
- than 1 line).
- - removed the need to use \closesection and \emptysection as internal
- tabulars are now always closed. This allows she use of bibliography packages
- such as bibunits. Thanks to S. Busch for pointing out the incompatibility and
- helping testing out the bug correction.
- - changed the definition of \photo: the first (optional) argument should
- give the desired width of the picture, instead of its height
- - corrected an alignment bug for \cvlistitems longer than 1 line, as
- reported by S. Nikolopoulos.
- - deprecated the commands \sethintscolumnlength and \sethintscolumntowidth.
+- Corrected an outstanding spacing bug where the space between cvlines was
+ longer than 1 line.
+- Removed the need to use \closesection and \emptysection as internal tabulars
+ are now always closed. This allows the use of bibliography packages such as
+ bibunits. Thanks to S. Busch for pointing out the incompatibility and helping
+ test out the bug correction.
+- Changed the definition of \photo: the first (optional) argument should give
+ the desired width of the picture, instead of its height
+- Corrected an alignment bug for \cvlistitems longer than 1 line, as reported by
+ S. Nikolopoulos.
+- Deprecated the commands \sethintscolumnlength and \sethintscolumntowidth.
Instead, just set \hintscolumnwidth to the desired length by using the regular
\setlength or \settowidth commands, and call \recomputelengths.
- - added the ability to control the width of the name placeholder in the
- classic theme, by setting the length \maketitlenamewidth. Again, don't forget
- to call \recomputelengths afterward.
+- Added the ability to control the width of the name placeholder in the classic
+ theme, by setting the length \maketitlenamewidth. Again, don't forget to call
+ \recomputelengths afterward.
version 0.6.0 (28 May 2007)
- - corrected some spacing bugs and cleaned up the code.
- - corrected a bug in the bibliography file of the examples spotted by
- U. Stöhr.
- - added color variants to the classic and casual style, as suggested by
+- Corrected some spacing bugs and cleaned up the code.
+- Corrected a bug in the bibliography file of the examples spotted by U. Stöhr.
+- Added color variants to the classic and casual styles, as suggested by
U. Stöhr.
- - added a page counter for resumes running longer than 1 page, as requested by
+- Added a page counter for resumes running longer than 1 page, as requested by
A. Martin. It can be disabled by the command \nopagenumbers{}.
- - added commands to include a mobile phone and fax number.
- - made the symbols used for the phone number, the email, ... customizable.
- To modify those symbols, just redefine \phonesymbol, emailsymbol, ...
- - corrected the pdf information given to hyperref as pointed out by
- C. Knuepfer.
- - rewrote the examples.
+- Added commands to include a mobile phone and fax number.
+- Made the symbols used for the phone number, the email etc. customizable. To
+ modify those symbols, just redefine \phonesymbol, \emailsymbol etc.
+- Corrected the PDF information given to hyperref as pointed out by C. Knuepfer.
+- Rewrote the examples.
version 0.5.0 (9 September 2006)
- - added a \photo command to display a picture. That command takes the name of
- the file with the picture as argument, and the desired height as optional
- argument.
- - implemented the needed commands to make moderncv compatible with BibTeX, as
+- Added a \photo command to display a picture. This command takes the name of
+ the file with the picture as a required argument and the desired height as an
+ optional argument.
+- Implemented the needed commands to make moderncv compatible with BibTeX, as
suggested by J. Lie. This makes it possible to display one's publications,
- stored in the BibTeX file 'publications.bib'
- by using:
+ stored in the BibTeX file "publications.bib" by using:
\nocite{*}
\bibliographystyle{plain}
\bibliography{publications}
- As usual, the name of the section title can be changed by redefining the
- command \refname.
- - added the \today command, useful for example if one need to add the date the
- resumé was produced with
+ As usual, the name of the section title can be changed by redefining \refname.
+- Added the \today command, useful for example if one needs to add the date the
+ resume was produced with:
\closesection{}
\vfill{\hfill{\scriptsize Produced \today.}}
at the end of your CV, as suggested by F. Hammann.
version 0.4.0 (2 May 2006)
- - removed the dependency on the geometry package, so that users can now invoke
- it themselve, and easily change the geometry of the page.
+- Removed the dependency on the geometry package so that users can now invoke it
+ themselves and easily change the geometry of the page.
version 0.3.0 (10 April 2006)
- - moderncv now uses the 'longtable' class, allowing cv sections to split
- across multiple pages.
- - the different lengths used by moderncv are now customizable! In particular,
- the first column (the one containing the date in the examples), can now be set
+- Moderncv now uses the longtable class, allowing CV sections to split across
+ multiple pages.
+- The different lengths used by moderncv are now customizable! In particular,
+ the first column (the one containing the date in the examples) can now be set
to any width, for people needing a smaller or larger one. To do that, either
use
\sethintscolumnlength{<length>},
@@ -374,33 +399,32 @@ version 0.3.0 (10 April 2006)
where <string> is a string of the desired length (usually, the longest string
that has to appear in the column). Thanks to A. Pöge for pointing out the need
of such a feature.
- - added the command \emptysection{}, which makes it possible to start a
- section without name. In combination with \closesection{}, this makes it
- possible to drop out of the layout of moderncv, and come back to it later.
- This should make the inclusion of arbitrary elements not covered by moderncv
- code possible.
- - corrected a spacing problem in the cventry command, as pointed out and
- solved by B. Eßmann.
+- Added the command \emptysection{}, which makes it possible to start an unnamed
+ section. In combination with \closesection{}, this makes it possible to drop
+ out of the layout of moderncv, and come back to it later. This should make the
+ inclusion of arbitrary elements not covered by moderncv code possible.
+- Corrected a spacing problem in the \cventry command, as pointed out and solved
+ by B. Eßmann.
version 0.2.0 (6 March 2006)
- - rewrite of the code to have the styles (fonts, colours, headers and footers)
+- Rewrite of the code to have the styles (fonts, colours, headers and footers)
be defined in different files than the class. The styles are now defined in a
separate file per style, named moderncvstyle<style_name>. It should now be
easy to write your own style, starting from moderncvstyleempty.sty. If you
feel you have created a nice style, just email it to me and I'll include it in
the next version.
- - due to the previous point, styles are now loaded by the command
+- Due to the previous point, styles are now loaded by the command
\moderncvstyle{style_name}. I couldn't figure out a way to preserve the old
"casual" and "classic" class options, so these are now broken! Use
\moderncvstyle{casual} or \moderncvstyle{classic} at the beginning of your
- document. This should be the only incompatibility with version 0.1.
- - added class option "nolmodern" for people without the latin modern fonts.
- - corrected some English mistakes in the examples. Thanks to M. H. Prager for
+ document. This should be the only incompatibility with v0.1.
+- Added class option "nolmodern" for people without the Latin Modern fonts.
+- Corrected some English mistakes in the examples. Thanks to M. H. Prager for
pointing them out.
- - added a \cvlistitem to produce items with a bullet (or whatever is defined
- in \listitemsymbol), and renamed \cvresume to \cvlistdoubleitem for
- consistency purpose. For compatibility reasons, the command \cvresume still
- works, but should be avoided.
+- Added a \cvlistitem to produce items with a bullet (or whatever is defined in
+ \listitemsymbol), and renamed \cvresume to \cvlistdoubleitem for consistency
+ purposes. For compatibility reasons, the command \cvresume still works, but
+ should be avoided.
version 0.1.0 (1 March 2006)
- - first release.
+- First release.
diff --git a/macros/latex/contrib/moderncv/KNOWN_BUGS b/macros/latex/contrib/moderncv/KNOWN_BUGS
index 15b86eccbc..25ef872007 100644
--- a/macros/latex/contrib/moderncv/KNOWN_BUGS
+++ b/macros/latex/contrib/moderncv/KNOWN_BUGS
@@ -1,15 +1,12 @@
-- When using the "fancy" style, undesired space is added between the bibliography
- head and the first entry, as well as after the last entry
-- Moderncv is incompatible with biblatex.
-- Footnotes generates errors (though the output seem correct when running with
- "-interaction=nonstopmode")
-- When using CJK, the last \clearpage required for fancyhdr to work properly kills
- the "lastpage" counter, hence also the page numbering.
-- Moderncv produces an error ("lonely \item--perhaps a missing list environment")
- when used with bibentry, through the output is actually correct. Amongst other,
- this causes compilation by LyX to stop.
-- The space after a cventry gets eaten up when the last argument contains a nested
- itemize environment. An ugly hack and incomplete solution was implemented by
- including a \strut in every item label, but this doesn't solve the problem for
- multi-line items. Ideally, the strut should end the item, but there seems to be
- no way to do this.
+- moderncv is incompatible with biber.
+- moderncv is incompatible with BibLaTeX.
+- moderncv is incompatible with babel in Spanish.
+
+- Skill matrices don't break automatically in fancy style.
+- Long names break the oldstyle style and possibly other styles (needs testing).
+- Long URLs in classic style can make the name break line. Fixed width for the address part must be implemented.
+- When using the fancy style, undesired space is added between the bibliography head and the first entry, as well as after the last entry.
+- Footnotes generate errors, but the output seems correct when running with "-interaction=nonstopmode"
+- When using CJK, the last \clearpage required for the fancyhdr package to work properly kills the "lastpage" counter, and therefore also the page numbering.
+- moderncv produces an error "lonely \item--perhaps a missing list environment" when used with the bibentry package, though the output is actually correct. Among other things, this causes compilation by LyX to stop.
+- The space after a \cventry gets eaten up when the last argument contains a nested itemize environment. An ugly hack and incomplete solution was implemented by including a \strut in every item label, but this doesn't solve the problem for multi-line items. Ideally, the \strut should end the item, but there seems to be no way to do this.
diff --git a/macros/latex/contrib/moderncv/README.md b/macros/latex/contrib/moderncv/README.md
index 1eb439d16b..19ff062dae 100644
--- a/macros/latex/contrib/moderncv/README.md
+++ b/macros/latex/contrib/moderncv/README.md
@@ -1,27 +1,44 @@
# moderncv
+[![Build template](https://github.com/moderncv/moderncv/actions/workflows/build-pdf.yml/badge.svg)](https://github.com/moderncv/moderncv/actions/workflows/build-pdf.yml)
+[![CTAN](https://img.shields.io/ctan/v/moderncv.svg)](https://www.ctan.org/pkg/moderncv)
+[![Matrix](https://img.shields.io/matrix/moderncv:matrix.org)](https://matrix.to/#/#moderncv:matrix.org)
+
## A modern curriculum vitae class for LaTeX
-**moderncv** provides a documentclass for typesetting curricula vitae in various styles. Moderncv aims to be both straightforward to use and customizable, providing five ready-made styles (classic, casual, banking, oldstyle and fancy) and allowing one to define his own by modifying colors, fonts, icons, etc.
+The `moderncv` package provides a document class for typesetting applications (curricula vitae and cover letters) in various styles. `moderncv` aims to be both straightforward to use and customizable, providing five ready-made styles (classic, casual, banking, oldstyle and fancy) and allowing you to define your own by modifying colors, fonts, icons, etc.
-Most commands are defined in such a way that arguments are optional.
+## Getting started
-Until a decent manual is written, one can always look in the `template.tex` file for an example. It can be compiled to pdf via `latexmk -pdf ./template.tex`.
+### Installation
+`moderncv` should already be included in your installed LaTeX distribution.
+If not, you can get the tarball of the package from [CTAN](https://www.ctan.org/pkg/moderncv).
+Alternatively, you can also build the package from source by cloning the its [GitHub repository](https://github.com/moderncv/moderncv) and compiling the included LaTeX files:
+```
+latexmk -pdf ./template.tex manual/moderncv_userguide.tex
+```
-If using [`academicons`](https://ctan.org/tex-archive/fonts/academicons) in the template, you need to use a Xe(La)TeX or Lua(La)TeX engine for them to render. Otherwise an alternative will be used automatically.
+### Usage
+To get started on your own CV, use and modify the template file `template.tex`.
+The user guide can be found in the folder `manual` and contains additional information on what the document class offers.
+Take a look at it to see if this package suits your needs.
-## Development
+If you are using the [`academicons`](https://ctan.org/tex-archive/fonts/academicons) package in the template, you will need to use a Xe(La)TeX or Lua(La)TeX engine to render the icons. Otherwise, an alternative icon package will be used automatically.
-[![Build template](https://github.com/moderncv/moderncv/actions/workflows/build-pdf.yml/badge.svg)](https://github.com/moderncv/moderncv/actions/workflows/build-pdf.yml)
-[![CTAN](https://img.shields.io/ctan/v/moderncv.svg)](https://www.ctan.org/pkg/moderncv)
-[![Matrix](https://img.shields.io/matrix/moderncv:matrix.org)](https://matrix.to/#/#moderncv:matrix.org)
+## Development
-As the main goal is to keep this package alive, it is maintained in a loosely structured team. You can contact us in our matrix room [moderncv:matrix.org](https://matrix.to/#/#moderncv:matrix.org), feel free to join if you have questions or want to contribute. Development takes places at [github.com/moderncv/moderncv](https://github.com/moderncv/moderncv).
+As the main goal is to keep this package alive, it is maintained in a loosely structured team.
+You can contact us in our matrix room [moderncv:matrix.org](https://matrix.to/#/#moderncv:matrix.org), feel free to join if you have questions or want to contribute.
+Development takes place at [github.com/moderncv/moderncv](https://github.com/moderncv/moderncv).
## Licence
-moderncv is licensed under the [LPPL-1.3c](https://spdx.org/licenses/LPPL-1.3c.html).
+
+`moderncv` is licensed under the [LPPL-1.3c](https://spdx.org/licenses/LPPL-1.3c.html).
## Origin
-Original author: Xavier Danaux <xdanaux@gmail.com><br/>
-Original repository: https://github.com/xdanaux/moderncv<br/>
-This repository is a fork aiming to maintain moderncv inside CTAN, since upstream is dead since 2016.
+
+Original author: Xavier Danaux <xdanaux@gmail.com>
+<br/>
+Original repository: https://github.com/xdanaux/moderncv
+
+This repository is a fork aiming to maintain `moderncv` inside CTAN, since upstream has been dead since 2016.
diff --git a/macros/latex/contrib/moderncv/manual/moderncv_userguide.pdf b/macros/latex/contrib/moderncv/manual/moderncv_userguide.pdf
index cadbefe386..0468a22e0f 100644
--- a/macros/latex/contrib/moderncv/manual/moderncv_userguide.pdf
+++ b/macros/latex/contrib/moderncv/manual/moderncv_userguide.pdf
Binary files differ
diff --git a/macros/latex/contrib/moderncv/manual/moderncv_userguide.tex b/macros/latex/contrib/moderncv/manual/moderncv_userguide.tex
index 26d2016178..feb6f31f6f 100644
--- a/macros/latex/contrib/moderncv/manual/moderncv_userguide.tex
+++ b/macros/latex/contrib/moderncv/manual/moderncv_userguide.tex
@@ -1,462 +1,1071 @@
-%% moderncv_userguide.tex (compiled with pdfLaTeX)
-%% Copyright 2007 Cristina Sambo
+%% moderncv_userguide.tex as shipped with 2024-07-18 v2.4.1 modern curriculum vitae and letter document class (moderncv)
+%% 2021 David Seus, cryptointerest@posteo.de
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
% available at http://www.latex-project.org/lppl/.
-\documentclass[a4paper,11pt]{article}
+\documentclass[a4paper, 11pt]{article}
-\title{\bfseries Moderncv -- v. 0.6}
-\author{Package by Xavier Danaux \\ \begin{small}Documentation by Cristina Sambo \end{small}}
-\date{}
+\title{%
+ \texttt{moderncv} User Guide\\
+ {\small Package v2.4.1}%
+}
+% Cristina Sambo,
+\author{%
+ Package by Xavier Danaux\\
+ and\\
+ moderncv community\\
+ {\small Documentation by David Seus}%
+}
+\date{\today}
-%language and encoding options
+% Language and encoding options
\usepackage[english]{babel}
+\usepackage{ifxetex, ifluatex}
+\newif\ifxetexorluatex
+\ifxetex
+ \xetexorluatextrue
+\else
+ \ifluatex
+ \xetexorluatextrue
+ \else
+ \xetexorluatexfalse
+ \fi
+\fi
+
+% PDFLaTeX or LUALaTeX/XeLaTeX
+\ifxetexorluatex
+ % \usepackage{luatextra}
+ % \usepackage{lualatex-math}
+ \usepackage{shellesc} % Fix a bug for lualatex shellescape
+ % \usepackage{unicode-math}
+ % \setmathfont{xits-math.otf}
+\else
+ \usepackage[utf8]{inputenx} % Uncomment if using pdflatex, comment if using lualatex
+\fi
+\PassOptionsToPackage{T1}{fontenc} % T2A for Cyrillic
\usepackage[T1]{fontenc}
-\usepackage[latin1]{inputenc}
-%font options
+% Font options
\usepackage{txfonts}
\usepackage{marvosym}
\usepackage{pifont}
-%margins, spacing and page layout
-\usepackage[pdftex,colorlinks=true]{hyperref} %(hyperref must be loaded before geometry)
-\usepackage[pdftex]{geometry}
+% Margins, spacing and page layout
+\usepackage[pdftex, colorlinks=true]{hyperref} % hyperref must be loaded before geometry
+\usepackage[pdftex, marginparwidth=50pt]{geometry}
\geometry{top=2.5cm, bottom=3cm}
-\setlength{\parindent}{0pt} %(to soppress indentation when starting a new paragraph)
-\frenchspacing %(to soppress additional space after a full stop)
-
-%packages
-\usepackage[pdftex]{graphicx}
-\usepackage[pdftex]{xcolor}
-\usepackage[labelfont=sl,font=small,width=0.9\textwidth]{caption}
+\usepackage{parskip} % Replace paragraph indentation with vertical spacing
+\frenchspacing % Suppress additional space after a full stop
+\renewcommand{\arraystretch}{1.1}
+
+% Packages
+\usepackage{graphicx}
+\usepackage{xcolor}
+\usepackage[labelfont=sl, font=small, width=0.9\textwidth]{caption}
\usepackage{marvosym}
\usepackage{latexsym}
-
-%pdfLaTeX options
-\pdfpagewidth=\paperwidth
-\pdfpageheight=\paperheight
-\pdfimageresolution=150
-\pdfinfo{
- /Title (Moderncv -- v. 0.6)
- /Author (Cristina Sambo)
- /Subject (Moderncv package user's guide)
- /Keywords (curriculum vitae, LaTeX)
+\usepackage{url}
+\usepackage{scrhack} % Fix warnings when using KOMA with listings package
+\usepackage{xspace} % Fix spacing after macros
+\usepackage{mparhack} % Fix marginpar
+\usepackage{microtype}
+\usepackage{multicol} % Multicolumn text for long lists
+
+% Code listings
+\usepackage{listings}
+% \lstset{emph={trueIndex, root}, emphstyle=\color{BlueViolet}}% \underbar} % Special keywords
+\lstset{%
+ language=[LaTeX]Tex, % C++,
+ morekeywords={PassOptionsToPackage, selectlanguage},
+ keywordstyle=\color{cvblue}, % \bfseries,
+ basicstyle=\small\ttfamily,
+ % identifierstyle=\color{NavyBlue},
+ commentstyle=\color{gray}\ttfamily,
+ stringstyle=\rmfamily,
+ numbers=none, % left,
+ numberstyle=\scriptsize, % \tiny
+ stepnumber=5,
+ numbersep=8pt,
+ showstringspaces=false,
+ breaklines=true,
+ % frameround=ftff,
+ % frame=single,
+ belowcaptionskip=0.75\baselineskip,
+ % frame=L,
+ emph={
+ cvitem, cventry, cvdoubleentry, cvdoubleitem, cvtripleitem, cvlistitem, cvlistdoubleitem, cvcolumns, moderncvstyle, moderncvcolor,
+ cvskill, cvskilllegend, cvskillplainlegend, cvskillhead, cvskillentry, nopagenumbers,
+ name, born, address, email, link, social, phone, homepage, extrainfo, photo, quote, section, subsection, setlength, NewDocumentCommand, definecolor, colorlet, cvitemwithcomment,
+ recipient, subject, opening, closing, signature, enclosure
+ },
+ emphstyle={\color{cvblue}},
+ emph={[2]
+ familydefault, sfdefault, rmdefault, inputenc, moderncv, document, bibliographyitemlabel,
+ addresssymbol, mobilephonesymbol, fixedphonesymbol, faxphonesymbol, emailsymbol, homepagesymbol, linkedinsocialsymbol,
+ xingsocialsymbol, twittersocialsymbol, githubsocialsymbol, gitlabsocialsymbol,
+ stackoverflowsocialsymbol, bitbucketsocialsymbol, skypesocialsymbol, orcidsocialsymbol, researchgatesocialsymbol, arxivsocialsymbol, inspiresocialsymbol,
+ researcheridsocialsymbol, telegramsocialsymbol, whatsappsocialsymbol, signalsocialsymbol, matrixsocialsymbol, googlescholarsocialsymbol, cvstretchability, bornsymbol
+ },
+ emphstyle={[2]\color{cvblue!60!cvgrey}\bfseries},
+ literate={{é}{{\'e}}1},
}
-%my commands
-\definecolor{bluecv}{rgb}{0.25,0.5,0.75}
-\definecolor{greencv}{rgb}{0.55,0.85,0.35}
-\definecolor{redcv}{rgb}{1.00,0.30,0.30}
-\definecolor{orangecv}{rgb}{1,0.65,0.20}
-\definecolor{greycv}{rgb}{0.75,0.75,0.75}
+% Hyperlinks
+\usepackage{hyperref}
+\hypersetup{
+ unicode=true,
+ % draft, % Draft mode for printing (see below)
+ colorlinks=true, linktocpage=true, pdfstartpage=3, pdfstartview=FitV,
+ % colorlinks=false, linktocpage=false, pdfstartpage=3, pdfstartview=FitV, pdfborder={0 0 0}, % Black links (e.g., for printing)
+ breaklinks=true, pageanchor=true,
+ pdfpagemode=UseNone,
+ % pdfpagemode=UseOutlines,
+ plainpages=false, bookmarksnumbered, bookmarksopen=true, bookmarksopenlevel=1,
+ hypertexnames=true, pdfhighlight=/O, % nesting=true, frenchlinks,
+ urlcolor=cvblue, linkcolor=cvblue, citecolor=cvblue, % pagecolor=RoyalBlue,
+ % urlcolor=Black, linkcolor=Black, citecolor=Black, % pagecolor=Black,
+ % pdfborder={0 0 1}, % Width of PDF link border 0 0 1, 0 0 0 = colorlinks
+ % linkbordercolor=gray!15,
+ % citebordercolor=green!15,
+}
-%==================
+% Colors
+\definecolor{cvblue}{rgb}{0.22, 0.45, 0.70}
+\definecolor{cvgreen}{rgb}{0.35, 0.70, 0.30}
+\definecolor{cvred}{rgb}{0.95, 0.20, 0.20}
+\definecolor{cvorange}{rgb}{0.95, 0.55, 0.15}
+\definecolor{cvgrey}{rgb}{0.75, 0.75, 0.75}
+\definecolor{cvburgundy}{rgb}{0.596078, 0, 0} % burgundy: 139/255 (0.545098) or 152/255 (0.596078)
+\definecolor{cvgrey}{rgb}{0.55, 0.55, 0.55}
+\definecolor{cvpurple}{rgb}{0.50, 0.33, 0.80}
+
+% Macros
+\newcommand{\todo}[1]{\marginpar{\raggedright \textcolor{red}{[\textbf{TODO:} #1]}}}
+\newcommand{\todox}[1]{\textcolor{red}{[\textbf{TODO:} #1]}}
+\newcommand{\note}{\paragraph{Note.}}
+\newcommand{\code}[1]{\lstinline!#1!}
+\newcommand{\moderncv}{\code{moderncv}}
+\newcommand{\Moderncv}{\moderncv~}
+\newcommand{\github}{GitHub}
+\newcommand{\Github}{\github~}
+\newcommand{\ctan}{CTAN}
+\newcommand{\Ctan}{\ctan~}
+\newcommand{\cvtemplate}{\code{template.tex}}
+\newcommand{\Cvtemplate}{\cvtemplate~}
+\newcommand{\Latex}{\LaTeX~}
+\newcommand{\biblatex}{BibLaTeX}
+\newcommand{\Biblatex}{\biblatex~}
+\newcommand{\cvdoccolorbox}[1]{{\color{#1}\rule{4ex}{2ex}}}
+\newcommand{\moderncvGithub}{\url{https://github.com/moderncv/moderncv}}
+\newcommand{\moderncvCtan}{\url{https://ctan.org/pkg/moderncv}}
+
+
+
+
+
+% ==================
% DOCUMENT BEGINNING
-%==================
+% ==================
\begin{document}
\maketitle
-
\begin{abstract}
-\noindent \texttt{Moderncv}, as its author says in the readme file, provides a documentclass for typesetting modern curriculum vitaes in various styles. It is fairly customizable, allowing you to define your own style by changing the colors, the fonts, \dots\ and provides two default styles: classic and casual.
+ \noindent
+ The \Moderncv package provides a document class for typesetting modern curriculum vit\ae{} and cover letters in various styles.
+ Five predefined styles are available, each of which can be adjusted through various options for headings, footers and colors.
+ It is fairly customizable, allowing the user to adjust the look and feel of each style to their liking.
+ Several macros allow the user to add content to the CV and format it in a consistent way.
+ A letter of motivation consistent with the style is part of the template as well.
\end{abstract}
+\tableofcontents
+
-\section{Introduction}
-When I saw for the first time this class I was amazing: ``Here it is what I need'', I thought. Using the very clear examples, was easy to make my first curriculum.
-Indeed the class is very simple to use, in this documentation I will only put together all the things to help users to have all on hand.
-
-\smallskip
-\texttt{Moderncv} requires the following packages: \texttt{ifthen}, \texttt{ifpdf}, \texttt{color}, \texttt{lmodern}, \texttt{marvosym}, \texttt{url}, \texttt{hyperref}, \texttt{longtable}, \texttt{graphicx}, \texttt{fancyhdr}, usually all just included in the \LaTeX\ distributions.
-
-\section{In the preamble}
-
-At the very beginning of your preamble (that is the part before \verb|\begin{document}|) insert:
-
-\begin{verbatim}
-\documentclass[<options>]{moderncv}
-\end{verbatim}
-
-where the options are:
-
-\begin{description}
- \item[paper size options:] \texttt{a4paper}, \texttt{a5paper}, \texttt{b5paper}, \texttt{letterpaper}, \texttt{legalpaper}, \texttt{ex\-ec\-u\-tive\-pa\-per}, \texttt{landscape}
- \item[font size options:] \texttt{10pt}, \texttt{11pt}, \texttt{12pt}
- \item[font option:] \texttt{nolmodern}, for people without the latin modern fonts
- \item[color option:] \texttt{nocolor}, to have all in black and white
- \item[draft/final options:] \texttt{draft}, \texttt{final}
-\end{description}
-
-The default options are: \texttt{a4paper}, \texttt{11pt}, \texttt{color}, \texttt{final}.
-
-After the documentclass specification, choose the theme for your curriculum vit\ae:
-
-\begin{verbatim}
-\moderncvtheme[<options>]{casual}
-\end{verbatim}
-
-which is the default theme, or
-
-\begin{verbatim}
-\moderncvtheme[<options>]{classic}
-\end{verbatim}
-
-where the theme options are:
-
-\begin{description}
- \item[color options:] you can choose between five color:
- \begin{itemize}
- \item[\texttt{blue}] {\color{bluecv}\rule{1cm}{2ex}} (default color)
- \item[\texttt{green}] {\color{greencv}\rule{1cm}{2ex}}
- \item[\texttt{red}] {\color{redcv}\rule{1cm}{2ex}}
- \item[\texttt{orange}] {\color{orangecv}\rule{1cm}{2ex}}
- \item[\texttt{grey}] {\color{greycv}\rule{1cm}{2ex}}
- \end{itemize}
- \item[roman option:] \texttt{roman}, for {\fontsize{11}{12} \usefont{T1}{lmr}{m}{n}\selectfont roman} fonts, instead of \fontsize{11}{12} \usefont{T1}{lmss}{m}{n}\selectfont sans serif fonts.
-\end{description}
-
-Then you have to specify the character encoding (utf8, latin1, and so on):
-
-\begin{verbatim}
-\usepackage[<your encoding>]{inputenc}
-\end{verbatim}
-
-and you can adjust the page geometry:
-
-\begin{verbatim}
-\usepackage[<options>]{geometry}
-\recomputelengths
-\end{verbatim}
-
-where \verb|\recomputelengths| is required when changes are made to page layout lengths.
-
-Now we can get into the part most related to our curriculum vit\ae: our personal data. They will be inserted in the header of the first page, in the classic theme, or in the footer of every page, in the case of casual theme.
-
+
+\section{Getting started}
+\subsection{How to read this manual}
+This manual is organized as follows.
+The current section explains on how to get started with the \Moderncv package, i.e. how to install required packages.
+% \emph{Note that it is assumed that you know how to install \Latex packages in case some are missing.}
+Section \ref{section:moderncvTemplate} explains how to work with the \Moderncv template file step by step.
+Section \ref{section:customization} details the customizations that the user can make: the different styles, their options, colors and tips and tricks.
+Section \ref{section:implementationDetails} details the packages that \Moderncv uses, known problems and possible solutions to those problems.
+
+\subsection{Installation instructions}
+If the \Moderncv package does not ship with your \Latex distribution or if the installed version is too old, grab the \Moderncv code from \Ctan or \github:
+
+\begin{tabular}{l}
+ \moderncvCtan \\% [.5ex]
+ \moderncvGithub
+\end{tabular}
+
+\note Depending on your \Latex distribution, you may have to install some additional packages.
+Section \ref{section:implementationDetails:requiredPackages} lists all the packages that \Moderncv requires to be installed on your system.
+
+
+
+\section{The \texttt{moderncv} template step by step}
+This section is a quick reference to the \Moderncv package and should contain enough information to typeset a first working CV.
+\label{section:moderncvTemplate}
+The easiest way to get started with \Moderncv is to use the template that comes with the package.
+If \Moderncv is part of your \Latex distribution, search for the folder \Moderncv on your system, which should contain all the files for the package.
+In this folder, there should be a file called \cvtemplate.
+If you downloaded the package from \Github or \ctan, look for \Cvtemplate in the folder of the newly downloaded (and possibly extracted) package.
+
+\note If you downloaded \Moderncv from \Github or \Ctan and moved \Cvtemplate to another folder, make sure to adjust the \code{TEXINPUTS} variable to find the newly downloaded package.
+Otherwise, either the package version provided by your \Latex distribution gets used or \Latex throws an error if there is no other version installed.
+
+Test your setup by compiling \Cvtemplate and looking at the result.
+
+\note The \Moderncv package should compile with \code{pdflatex}, \code{lualatex} and \code{xelatex}.
+However, not all icons are available when using \code{pdflatex}, so using either \code{lualatex} or \code{xelatex} \emph{is highly recommended.}
+
+\subsection{Basic setup}
+A document using the \Moderncv document class is set up like any other document class.
+We will go through the template step by step.
+
+\subsubsection*{Configuring document class options}
+The \Moderncv document class is loaded as per usual, by
+\begin{lstlisting}
+ \documentclass[<options>]{moderncv}
+\end{lstlisting}
+where at most one value for each option can be passed to the document class:
+
+\begin{tabular}{r@{\hspace{2ex}}p{0.55\textwidth}}
+ \textbf{\code{paper}:} & \code{a4paper} (default), \code{a5paper}, \code{b5paper}, \code{letterpaper},
+ \code{legalpaper}, \code{executivepaper}, \code{landscape} \\
+ \textbf{\code{font family}:} & \code{sans}, \code{roman} \\
+ \textbf{\code{font size}:} & \code{10pt}, \code{11pt} (default), \code{12pt} \\
+ \textbf{\code{draft/final}:} & \code{draft}, \code{final} (default)
+\end{tabular}
+
+\subsubsection*{Choosing a \texttt{moderncv} style and color}
+Choose a \Moderncv style and color by adjusting the commands
+\begin{lstlisting}
+ \moderncvstyle{<style>}
+ \moderncvcolor{<color>}
+\end{lstlisting}
+As explained in \cvtemplate, the possible values are
+
+\begin{tabular}{r@{\hspace{2ex}}p{0.65\textwidth}}
+ \textbf{\code{style}:} & \code{casual} (default), \code{classic}, \code{banking}, \code{oldstyle},
+ \code{fancy} \\
+ \textbf{\code{color}:} & \code{black} \cvdoccolorbox{black}, \code{blue} \cvdoccolorbox{cvblue} (default), \code{burgundy} \cvdoccolorbox{cvburgundy}, \code{green} \cvdoccolorbox{cvgreen}, \code{grey} \cvdoccolorbox{cvgrey}, \code{orange} \cvdoccolorbox{cvorange}, \code{purple} \cvdoccolorbox{cvpurple}, \code{red} \cvdoccolorbox{cvred}
+\end{tabular}
+
+\note Some of the styles take additional options to fine-tune their appearance.
+To keep this overview short, these options will be described in section \ref{section:customization:stylesAndOptions}.
+
+\subsubsection*{Font family and page numbering}
+The default font family is set by the line \code{\\renewcommand\{\\familydefault\}\{\\sfdefault\}} in \cvtemplate.
+Use \code{\\sfdefault} for the default sans-serif font, \code{\\rmdefault} for the default roman font, and likewise for any \TeX{} font name.
+The general syntax is
+\begin{lstlisting}
+ \renewcommand{\familydefault}{<fontfamily>}
+ % \nopagenumbers{}
+\end{lstlisting}
+Uncommenting \code{\%\\nopagenumbers\{\}} suppresses automatic page numbering for CVs longer than one page.
+
+\subsubsection*{Adjusting input encoding}
+If you are not using \code{xelatex} or \code{lualatex}, which both use \code{utf8} encoding by default, uncomment the \code{\\usepackage[utf8]\{inputenc\}} import and change the encoding as needed.
+
+\subsubsection{Language-specific setup}
+The \code{babel} package can be loaded in the preamble of your CV.
+
+\note \Moderncv doesn't work with \code{babel} in Spanish (see this \href{https://github.com/moderncv/moderncv/issues/103}{GitHub issue}).
+
+For CJK users, uncomment the \code{\\usepackage\{CJKutf8\}} import.
+
+\subsection{Personal data}
+Edit the personal data section to reflect your personal information.
+This data will appear in the header of the first page of the CV and/or in the footer of every page, as well as on the cover letter.
+Most of the commands are optional, so try out what you like and see what you need.
+
+\paragraph{\code{\\name}}
+A command for your name. Takes the given name and surname as arguments.
+\begin{lstlisting}
+ \name{<given name>}{<surname>}
+\end{lstlisting}
+
+\paragraph{\code{\\title}}
+A command for a document title. Could be used for a generic CV title, job title, etc.
+\begin{lstlisting}
+ \title{<title>}
+\end{lstlisting}
+
+\paragraph{\code{\\born}}
+A command for a birth date.
+\begin{lstlisting}
+ \born{<birth date>}
+\end{lstlisting}
+
+\paragraph{\code{\\address}}
+A command for a three-lined street address.
+\begin{lstlisting}
+ \address{<street address>}{<city and postcode>}{<country>}
+\end{lstlisting}
+
+\paragraph{\code{\\phone}}
+A command for a phone number. Takes the phone type as an optional argument.
+\begin{lstlisting}
+ \phone[<type>]{<phone number>}
+\end{lstlisting}
+The allowed values for \code{<type>} are \code{fax}, \code{fixed} and \code{mobile}.
+
+\paragraph{\code{\\email}}
+A command for an email address.
+\begin{lstlisting}
+ \email{<email address>}
+\end{lstlisting}
+
+\paragraph{\code{\\homepage}}
+A command for a personal website.
+\begin{lstlisting}
+ \homepage{<web address>}
+\end{lstlisting}
+
+\paragraph{\code{\\social}}
+A command for a social media account.
+Takes the platform as an optional argument.
+\begin{lstlisting}
+ \social[<platform>]{<username or handle>}
+\end{lstlisting}
+The following values are supported for \code{<platform>}:
\begin{itemize}
-\item \verb|\firstname{John}|
-\item \verb|\familyname{Doe}|
-\item \verb|\title{Resum\'e title}|: optional
-\item \verb|\address{street and number}{postcode city}|: optional
-\item \verb|\mobile{mobile}|: optional
-\item \verb|\phone{phone}|: optional
-\item \verb|\fax{fax}|: optional
-\item \verb|\email{email}|: optional
-\item \verb|\extrainfo{additional information}|: optional; here you can put, for example, the address of your website
-\item \verb|\photo[64pt]{picture}|: optional; \texttt{64pt} is the height the picture, you can set here the size you prefer; \texttt{picture} is the name of the picture file
-\item \verb|\quote{Some quote}|: optional
-\end{itemize}
-
-Finally you can suppress automatic page numbering for CVs longer than one page:
-
-\begin{verbatim}
-\nopagenumbers{}
-\end{verbatim}
-
-\subsection{Examples}
-
-In practice, you will type:
-
-\begin{verbatim}
-\documentclass[11pt,a4paper]{moderncv}
-
-% moderncv themes
-\moderncvtheme[green]{casual}
-
-% character encoding
-\usepackage[utf8]{inputenc}
-
-% adjust the page margins
-\usepackage[scale=0.8]{geometry}
-\recomputelengths
-
-% personal data
-\firstname{John}
-\familyname{Doe}
-\title{Design enthusiast}
-\address{12 somestreet}{3456 somecity}
-\mobile{+123 456 7890}
-\phone{+12 (3)456 78 90}
-\fax{+12 (3)456 78 90}
-\email{jdoe@design.org}
-\extrainfo{\weblink{www.ctan.org}}
-\photo[64pt]{jdoe_picture}
-\quote{Any intelligent fool can make things bigger, more complex,
-and more violent. It takes a touch of genius -- and a lot of courage -- to
-move in the opposite direction.}
-
-\begin{document}
-\maketitle
-
-... <what you'll see in the next section>
-
-\end{document}
-\end{verbatim}
-
-to obtain a casual moderncv in green, as shown in figure \ref{fig:casual}, and you will substitute the line describing the theme with:
-
-\begin{verbatim}
-% moderncv themes
-\moderncvtheme[blue]{classic}
-\end{verbatim}
-
-to obtain a classic moderncv in blue, as shown in figure \ref{fig:classic}.
-
-
-\begin{figure}[p]
- \centering
- \fbox{\includegraphics[angle=90,width=\textwidth]{cv_casual.pdf}}
- \caption{An example of casual moderncv in green.}
- \label{fig:casual}
-\end{figure}
-
-\begin{figure}[p]
- \centering
- \fbox{\includegraphics[angle=90,width=\textwidth]{cv_classic.pdf}}
- \caption{An example of classic moderncv in blue.}
- \label{fig:classic}
-\end{figure}
-
-\section{Customize sections}
-
-Now we are ready to edit the part between \verb|\begin{document}| and \verb|\end{document}|.
-
-As you can seen in figure \ref{fig:casual} e \ref{fig:classic}, you can divide your CV into sections, each of them describing what you are, what you know and what you have done in your life. Every section is divide into items chosen from different flavours. More in details:
-
-\subsection{Section}
-
-The command to open a new section is:
-
-\begin{verbatim}
-\section{<title>}
-\end{verbatim}
-
-and every section can be divided into subsections:
-
-\begin{verbatim}
-\subsection{<title>}
-\end{verbatim}
-
-If necessary, there is a command to close the section:
-
-\begin{verbatim}
-\closesection{}
-\end{verbatim}
-
-and even one to create an empty section:
-
-\begin{verbatim}
-\emptysection{}
-\end{verbatim}
-
-An example of their usage can be the next one:
-
-\begin{verbatim}
-\section{Section with your own content}\closesection
-Your content here, inside the normal \LaTeX{} environment.
-You can use any regular \LaTeX{} command, display mathematics
-\[e =m\,c^2,\]
-put some table or figure, \dots
-
-\emptysection{}
-\cvitem{Now}{Back to moderncv layout, without making a new section :-)}
-\end{verbatim}
-
-whose results is shown in figure \ref{fig:ex_sec}.
-
-\begin{figure}[!ht]
- \centering
- \fbox{\includegraphics[width=0.9\textwidth]{ex_sec}}
- \caption{Example of usage of section commands.}
- \label{fig:ex_sec}
-\end{figure}
-
-\subsection{Items}
-
-Inside sections, you can choose between different kind of items depending on the purpose:
+ \begin{multicols}{4}
+ \item \code{arxiv}
+ \item \code{battlenet}
+ \item \code{bitbucket}
+ \item \code{codeberg}
+ \item \code{discord}
+ \item \code{github}
+ \item \code{gitlab}
+ \item \code{googlescholar}
+ \item \code{inspire}
+ \item \code{instagram}
+ \item \code{linkedin}
+ \item \code{mastodon}
+ \item \code{matrix}
+ \item \code{orcid}
+ \item \code{playstation}
+ \item \code{researcherid}
+ \item \code{researchgate}
+ \item \code{signal}
+ \item \code{skype}
+ \item \code{soundcloud}
+ \item \code{stackoverflow}
+ \item \code{steam}
+ \item \code{telegram}
+ \item \code{tiktok}
+ \item \code{twitch}
+ \item \code{twitter}
+ \item \code{whatsapp}
+ \item \code{xbox}
+ \item \code{xing}
+ \item \code{youtube}
+ \end{multicols}
+\end{itemize}
+\paragraph{\code{\\extrainfo}}
+A command for any extra information.
+\begin{lstlisting}
+ \extrainfo{<extra information>}
+\end{lstlisting}
+
+\paragraph{\code{\\photo}}
+A command for a photo.
+Takes the image file name as a required argument.
+Takes the height of the photo and the thickness of the photo frame as optional arguments.
+\begin{lstlisting}
+ \photo[<photo height>][<frame thickness>]{<photo file name>}
+\end{lstlisting}
+
+\paragraph{\code{\\quote}}
+A command for a quote.
+\begin{lstlisting}
+ \quote{<quote>}
+\end{lstlisting}
+
+\note{Long names and URLs can break some CVs and cover letters depending on the used style. Manually inserting line breaks for names with \code{\\\\} can help for \texttt{oldstyle} or \texttt{fancy}. Adjusting lengths as described in section \ref{subsection:adjusting:lengths} could help to mitigate issues with long URLs.}
+
+\paragraph{Pictures.}
+For some occasions you may need to include pictures besides the portrait photo. For this task it is helpful to know basic lengths used in \moderncv. For a more detailed description of lengths see section \ref{subsection:adjusting:lengths}.
+For instance, pictures can be included with \code{\\includegraphics}:
+\begin{lstlisting}
+ \hspace{\hintscolumnwidth + \separatorcolumnwidth}\includegraphics[<scale>]{<file name picture>}
+\end{lstlisting}
+Adding \code{\\hspace} in units of basic \code{moderncv} lengths will fit them more naturally into the CV or resume.
+
+\paragraph{Bibliography.}
+In case BibTeX is used, the bibliography settings are adjusted in the lines
+\begin{lstlisting}
+ % to show numerical labels in the bibliography (default is to show no labels)
+ % \renewcommand*{\bibliographyitemlabel}{[\arabic{enumiv}]}
+ % \renewcommand{\refname}{Articles}
+
+ % bibliography with mutiple entries
+ % \usepackage{multibib}
+ % \newcites{book, misc}{{Books}, {Others}}
+\end{lstlisting}
+By default, no labels are shown for bibliography entries.
+Uncommenting the line \code{\%\\renewcommand*\{\\bibliographyitemlabel\}\{[\\arabic\{enumiv\}]\}}
+allows one to fine-tune the labels.
+Uncommenting the line \code{\%\\renewcommand\{\\refname\}\{Articles\}} allows one to redefine the bibliography heading string ``Publications'' that is shown by default.
+Finally, adjustments using the \code{multibib} package can be done in the last two lines shown here.
+
+\note \Biblatex is currently not supported.
+
+\subsection{Modifying CV content}
+\subsubsection{Structuring the CV}
+As with any other document style, the CV can be structured into sections and subsections using \code{\\section} and \code{\\subsection}.
+
+The \Moderncv package provides some macros to add content to your CV.
+The easiest way to understand their intended use is to look at how they're used in the template.
+Nonetheless, we list the macros here along with a short description of their intended use.
+
+\subsubsection{General macros}
+
+\paragraph{\code{\\cvitem}}
+A flexible command for a single CV entry.
+Takes the descriptor and body text as required arguments.
+Can be used to list job experiences and similar.
+\begin{lstlisting}
+ \cvitem{<descriptor>}{<body>}
+\end{lstlisting}
+
+\paragraph{\code{\\cvdoubleitem}}
+A two-column variation of \code{\\cvitem}.
+Takes four required arguments: the descriptor and body text of the first column and the descriptor and body text of the second column.
+Can be used to enter skills, such as computer skills or language skills, in a two-column fashion.
+\begin{lstlisting}
+ \cvdoubleitem{<descriptor 1>}{<body 1>}{<descriptor 2>}{<body 2>}
+\end{lstlisting}
+
+\paragraph{\code{\\cvtripleitem}}
+A three-column variation of \code{\\cvitem}.
+Takes six required arguments: the descriptor and body text of the first column, second and third column.
+Can be used to enter skills, such as computer skills or language skills, in a three-column fashion.
+\begin{lstlisting}
+ \cvtripleitem{<descriptor 1>}{<body 1>}{<descriptor 2>}{<body 2>}{<descriptor 3>}{<body 3>}
+\end{lstlisting}
+
+\paragraph{\code{\\cvitemwithcomment}}
+A variation of \code{\\cvitem} with an additional argument for a comment.
+Can be used to enter skills such as computer skills or language skills.
+\begin{lstlisting}
+ \cvitemwithcomment{<descriptor>}{<skill level>}{<comment>}
+\end{lstlisting}
+
+\paragraph{\code{\\cventry}}
+A command for entering an education or job experience.
+Takes six required arguments: date(s), degree/job title, educational institution/employer, city, academic grade and description.
+While arguments 3 to 6 aren't optional, they can be left empty.
+If line breaks in argument 6 aren't done properly, a minipage can be used.
+Alternatively, \code{\\newline\{\}} can be used to break lines in argument 6.
+\begin{lstlisting}
+ \cventry{<year--year>}{<degree/job title>}{<institution/employer>}
+ {<city>}{<grade>}{<description>}
+\end{lstlisting}
+
+\paragraph{\code{\\cvlistitem}}
+A command for a single bullet-list item.
+Very long lines get broken.
+\begin{lstlisting}
+ \cvlistitem{<item>}
+\end{lstlisting}
+
+\paragraph{\code{\\cvlistdoubleitem}}
+A two-column variation of \code{\\cvlistitem}.
+\begin{lstlisting}
+ \cvlistdoubleitem{<item 1>}{item 2>}
+\end{lstlisting}
+
+\paragraph{\code{\\cvcolumns}}
+An environment typesetting multicolumn \code{\\cvitem}s.
+This can be combined with the \code{itemize} environment.
+\begin{lstlisting}
+ \begin{cvcolumns}
+ \cvcolumn{<category 1>}{<content>}
+ \cvcolumn{<category 2>}{<content>}
+ \cvcolumn[<width>]{<content>}
+ \end{cvcolumns}
+\end{lstlisting}
+\code{<width>} is a number between 0 and 1 controling the width of the column.
+
+\subsubsection{Skill matrix macros}
+The skill matrix is a table for displaying skills such as computer skills or project management skills graphically.
+The skill matrix table consists of several elements:
\begin{itemize}
- \item in the sections describing your education or your job experiences, you can use:
- \begin{verbatim}
-\cventry{years}{degree/job title}{institution/employer}
-{localization}{optional: grade/...}
-{optional: comment/job description}
- \end{verbatim}
-\vspace{-20pt}
-where the last three arguments are optional
- \item inside `language' cvsection environment, you can type every entry with:
- \begin{verbatim}
-\cvlanguage{name}{level}{comment}
- \end{verbatim}
- \item inside `computer skills' cvsection environment, you can type every entry with:
- \begin{verbatim}
-\cvcomputer{category}{programs}{category}{programs}
- \end{verbatim}
- \item to typeset lines with a hint on the left:
- \begin{verbatim}
-\cvline{leftmark}{text}
- \end{verbatim}
- \item to typeset entry with a description on the left, but in two columns inside a cvsection:
- \begin{verbatim}
-\cvdoubleitem{subtitle}{text}{subtitle}{text}
- \end{verbatim}
- \item to typeset lists on one column inside a cvsection:
- \begin{verbatim}
-\cvlistitem{point1}
- \end{verbatim}
- \item to typeset lists on two columns inside a cvsection:
- \begin{verbatim}
-\cvlistdoubleitem{point1}{point2}
- \end{verbatim}
- \item to add a section listing all your publications stored in a BibTeX file:
- \begin{verbatim}
-\nocite{*}
-\bibliographystyle{plain}
-\bibliography{BibTeX_file}
- \end{verbatim}
-\vspace{-20pt}
- where the name of the section title can be changed by redefining the \texttt{refname} with \verb|\renewcommand{\refname}{<new_name>}|
+ \item the graphical representation of the skill on a scale from 0 to 5,
+ \item the legend to explain the meaning of the scale,
+ \item a header line to explain the meaning of the table columns and
+ \item the actual skill entries.
\end{itemize}
-\subsubsection*{Example}
-
-Let's put all together and see in figure \ref{fig:sections} what is the result:
-
-\begin{verbatim}
-... preamble ...
-\begin{document}
-\section{Education}
-\cventry{year--year}{Degree}{Institution}{City}{\textit{Grade}}{Description}
-\cventry{year--year}{Degree}{Institution}{City}{\textit{Grade}}{Description}
-%
-\section{Master thesis}
-\cvline{title}{\emph{Title}}
-\cvline{supervisors}{Supervisors}
-\cvline{description}{\small Short thesis abstract}
-%
-\section{Experience}
-\subsection{Vocational}
-\cventry{year--year}{Job title}{Employer}{City}{}{Description}
-\cventry{year--year}{Job title}{Employer}{City}{}{Description}
-\subsection{Miscellaneous}
-\cventry{year--year}{Job title}{Employer}{City}{}%
- {Description line 1\newline{}Description line 2}
-%
-\section{Languages}
-\cvlanguage{language 1}{Skill level}{Comment}
-\cvlanguage{language 2}{Skill level}{Comment}
-%
-\section{Computer skills}
-\cvcomputer{category 1}{XXX, YYY, ZZZ}{category 3}{XXX, YYY, ZZZ}
-\cvcomputer{category 2}{XXX, YYY, ZZZ}{category 4}{XXX, YYY, ZZZ}
-%
-\section{Interests}
-\cvline{hobby 1}{\small Description}
-\cvline{hobby 2}{\small Description}
-\cvline{hobby 3}{\small Description}
-%
-\closesection{}
-\pagebreak
-%
-\section{Extra}
-\cvlistitem{Item 1}
-\cvlistitem{Item 2}
-\cvlistitem{Item 3}
-%
-\section{Extra 2}
-\cvlistdoubleitem{Item 1}{Item 4}
-\cvlistdoubleitem{Item 2}{Item 5}
-\cvlistdoubleitem{Item 3}{}
-%
-% Publications from a BibTeX file
-\nocite{*}
-\bibliographystyle{plain}
-\bibliography{publications} % 'publications' is the name of a BibTeX file
-%
-\end{document}
-\end{verbatim}
-
-\begin{figure}[!ht]
- \centering
- \fbox{\includegraphics[angle=90,width=\textwidth]{test_cvsection2.pdf}}\\
- \fbox{\includegraphics[angle=90,width=\textwidth]{test_cvsection1.pdf}}
-\caption{Example of usage of items inside cvsections.}
- \label{fig:sections}
-\end{figure}
-
-\section{More customizations}
-
-You have some useful commands to personalize your CV further.
-
-\subsection*{Modifying the symbols}
-You can modify the symbols used for the personal data (phone number, the email, \ldots) redefining \texttt{phonesymbol}, \texttt{emailsymbol}, \texttt{addresssymbol}, \texttt{mobilesymbol}, \texttt{faxsymbol}.
-
-For example: if you want to use the dingbat fonts, load the \texttt{pifont} package in the preamble, then substitute the default symbol \Telefon\ with the dingbat symbol \ding{38}\ by:
-\begin{verbatim}
-\renewcommand{\phonesymbol}{\ding{38}}
-\end{verbatim}
-
-You can change the symbol for lists in two way:
+\paragraph{\code{\\cvskill}}
+A command for the graphical representation of a single skill.
+The required argument must be a number from 0 to 5.
+\begin{lstlisting}
+ \cvskill{<0-5>}
+\end{lstlisting}
+This command can be used outside of the skill matrix, too.
+
+\paragraph{\code{\\cvskilllegend}}
+A command for a legend for the skill matrix.
+Takes six optional arguments: post-padding width and the descriptions for the five skill levels.
+\begin{lstlisting}
+ \cvskilllegend
+ \cvskilllegend*[<post-padding>][<level 1>][<level 2>][<level 3>]
+ [<level 4>][<level 5>]{<descriptor>}
+\end{lstlisting}
+The command with no arguments inserts the legend in its standard form: without a descriptor or any lines.
+An optional asterisk toggles the inclusion of a dashed line.
+\code{<post-padding>} must be a valid length like \code{1em} or \code{1ex}.
+
+The most general form of this command can be used to translate the legend descriptions into other languages or to add a name descriptor:
+\begin{lstlisting}
+ % Example: German translation
+ \cvskilllegend[0.2em][Grundkenntnisse]
+ [Grundkenntnisse und eigene Erfahrung in Projekten]
+ [Umfangreiche Erfahrung in Projekten]
+ [Vertiefte Expertenkenntnisse][Experte/Guru]{Legende}
+\end{lstlisting}
+
+\paragraph{\code{\\cvskillplainlegend}}
+A variation of \code{\\cvskilllegend} with the first three skill levels in the first column.
+\begin{lstlisting}
+ \cvskillplainlegend
+ \cvskillplainlegend*[<post-padding>][<level 1>][<level 2>]
+ [<level 3>][<level 4>][<level 5>]{<descriptor>}
+\end{lstlisting}
+
+\paragraph{\code{\\cvskillhead}}
+A command for a header line for the skill matrix.
+Takes five optional arguments: post-padding width, level, skill label, years of experience and a comment.
+\begin{lstlisting}
+ \cvskillhead[<post-padding>][<level>][<skill>][<years of experience>][<comment>]
+\end{lstlisting}
+\code{<post-padding>} must be a valid length like \code{1em} or \code{1ex}.
+
+\paragraph{\code{\\cvskillentry}}
+A command for an entry in the skill matrix.
+Takes five required arguments: skill category, skill level (0 to 5), skill name, years of experience and a comment.
+Takes a single optional argument for the post-padding width.
+\begin{lstlisting}
+ \cvskillentry*[<post-padding>]{<skill category>}{<0-5>}
+ {<skill name>}{<years of experience>}{<comment>}
+\end{lstlisting}
+An optional asterisk toggles the inclusion of a dashed line.
+\code{<post-padding>} must be a valid length like \code{1em} or \code{1ex}.
+
+How to make length adjustments to the skill matrix will be explained in section \ref{section:length:skillmatrix}.
+
+\subsection{Letter of motivation}
+
+In order to provide additional information for a job application, {\moderncv} provides a motivation letter. Define the following recipient data fields to customize your letter:
+\paragraph{\code{\\recipient}}
+A command for the letter's recipient. This allows line breaks to properly format the recipient's address.
+\begin{lstlisting}
+ \recipient{<Team or contact person>}{<company>\\<street>\\<city>}
+\end{lstlisting}
+
+\paragraph{\code{\\date}}
+A command to set the letter's date.
+\begin{lstlisting}
+ \date{<your custom date>}
+\end{lstlisting}
+
+\paragraph{\code{\\subject}}
+A command to define the job application subject.
+\begin{lstlisting}
+ \subject{<subject>}
+\end{lstlisting}
+
+\paragraph{\code{\\opening}}
+A command to set your opening (e.g. ``Dear X,'' or ``To whom it may concern,'').
+\begin{lstlisting}
+ \opening{<greeting>}
+\end{lstlisting}
+
+\paragraph{\code{\\closing}}
+A command to set your closing (e.g. ``Sincerely,'' or ``Yours truly,'').
+\begin{lstlisting}
+ \closing{<closing>}
+\end{lstlisting}
+
+\paragraph{\code{\\signature}}
+An optional command to include your signature after the closing. This feature is defined using the \code{\\includegraphics}. The first argument is the scale and the second argument is the filename of your scanned signature.
+\begin{lstlisting}
+ \signature{<scale>}{<signature filename>}
+\end{lstlisting}
+
+\paragraph{\code{\\enclosure}}
+A command to list the attached documents. The first optional parameter allows a redefinition of the default ``Enclosure'' label.
+\begin{lstlisting}
+ \enclosure[<optional alternative label>]{<list of documents>}
+\end{lstlisting}
+
+\note If typesetting the resume in Chinese using CJK an additional \code{\\clearpage} is required after the \code{\\makeletterclosing} command. This helps \code{fancyhdr} to work correctly with CJK. Otherwise it will remove the page numbering by making \code{lastpage} undefined.
+
+\section{Customization}
+\label{section:customization}
+\subsection{Styles and their options}
+\label{section:customization:stylesAndOptions}
+Each style allows fine-tuning via options passed into the \code{\\moderncvstyle} command:
+\begin{lstlisting}
+ \moderncvstyle[<option 1>, <option 2>, ...]{<style>}
+\end{lstlisting}
+Each style defines its own options, and not all options are available for each style.
+Below is a list of all the options available for each style:
+
+\paragraph{\code{casual}}
+This style allows the following options which \emph{only} affect header and footer styles:
+
+\begin{tabular}{r@{\hspace{2ex}}p{0.72\textwidth}}
+ \textbf{\code{head alignment}} & values: \code{left}, \code{right} (default).
+ Aligns the title and the picture if one is included. \\
+ \textbf{\code{name}} & values: \code{alternate}.
+ Displays the name in all lowercase.
+ Differentiation of the name is done by color (disabled by default).
+ This feature is discouraged for longer names. \\
+ \textbf{\code{data in head}} & values: \code{details}, \code{nodetails} (default).
+ Toggles between the header and footer as the location of personal data on the page. \\
+ \textbf{\code{symbols}} & values: \code{symbols} (default), \code{nosymbols}.
+ Toggles between inclusion of icons or text-based abbreviations for personal data.
+\end{tabular}
+
+\paragraph{\code{classic}}
+This style allows the following options which \emph{only} affect header and footer styles:
+
+\begin{tabular}{r@{\hspace{2ex}}p{0.75\textwidth}}
+ \textbf{\code{alignment}} & values: \code{left} (default), \code{right}.
+ Aligns the address block and the picture. \\
+ \textbf{\code{data in head}} & values: \code{details}, \code{nodetails} (default).
+ Toggles between the header and footer as the location of personal data on the page. \\
+ \textbf{\code{symbols}} & values: \code{symbols} (default), \code{nosymbols}.
+ Toggles between inclusion of icons or text-based abbreviations for personal data.
+\end{tabular}
+
+\paragraph{\code{banking}}
+This style allows the following options:
+
+\begin{tabular}{r@{\hspace{2ex}}p{0.68\textwidth}}
+ \textbf{\code{alignment (body)}} & values: \code{left} (default), \code{center}, \code{right}.
+ Aligns the entries in the style. \\
+ \textbf{\code{rule style}} & values: \code{fullrules}, \code{shortrules}, \code{mixedrules} (default), \code{norules}.
+ Adjusts the rules used in the style. \\
+ \textbf{\code{data in head}} & values: \code{details}, \code{nodetails} (default).
+ Toggles between the header and footer as the location of personal data on the page. \\
+ \textbf{\code{symbols}} & values: \code{symbols} (default), \code{nosymbols}.
+ Toggles between inclusion of icons or text-based abbreviations for personal data.
+\end{tabular}
+
+\paragraph{\code{oldstyle}}
+This style allows the following options:
+
+\begin{tabular}{r@{\hspace{2ex}}p{0.73\textwidth}}
+ \textbf{\code{data in head}} & values: \code{details}, \code{nodetails} (default).
+ Toggles between the header and footer as the location of personal data on the page. \\
+ \textbf{\code{symbols}} & values: \code{symbols} (default), \code{nosymbols}.
+ Toggles between inclusion of icons or text-based abbreviations for personal data.
+\end{tabular}
+
+\paragraph{\code{fancy}}
+This style allows the following options:
+
+\begin{tabular}{r@{\hspace{2ex}}p{0.73\textwidth}}
+ \textbf{\code{data in head}} & values: \code{details}, \code{nodetails} (default).
+ Toggles between the header and footer as the location of personal data on the page. \\
+ \textbf{\code{symbols}} & values: \code{symbols} (default), \code{nosymbols}.
+ Toggles between inclusion of icons or text-based abbreviations for personal data.
+\end{tabular}
+
+\note Only one option from each option category can be passed in at a time, e.g.
+\begin{lstlisting}
+ \moderncvstyle[left, nosymbols]{casual}
+\end{lstlisting}
+
+\paragraph{\code{contemporary}}
+This style allows the following options which \emph{only} affect header and footer styles:
+
+\begin{tabular}{r@{\hspace{2ex}}p{0.75\textwidth}}
+ \textbf{\code{alignment}} & values: \code{left} (default), \code{right}.
+ Aligns the address block and the picture. \\
+ \textbf{\code{data in head}} & values: \code{details} (default), \code{nodetails}.
+ Toggles between the header and footer as the location of personal data on the page. \\
+ \textbf{\code{qr}} & values: \code{qr} (default), \code{noqr}.
+ Enables or disables the inclusion of a QR code of your personal website.
+\end{tabular}
+\note For the \code{contemporary} style it is recommended to use the \code{\\moderncvcolor\{cerulean\}} color scheme. The \code{contemporary} style is even more appealing with reduced margins. Use this in your preamble:
+\begin{lstlisting}
+ \usepackage[hmargin=0.5in,vmargin=10pt]{geometry}
+\end{lstlisting}
+
+\subsection{Adjusting colors}
+The colors of each style can be adjusted.
+
+\note The color theme must be loaded \emph{before} \code{\\moderncvstyle}, i.e.
+\begin{lstlisting}
+ \moderncvcolor{blue}
+ \moderncvstyle{casual}
+\end{lstlisting}
+
+\paragraph{Base colors.}
+Each style defines three main colors: \code{color0}, \code{color1} and \code{color2}.
+\code{color0} is black and the main text color.
+\code{color1} is the main theme color, like blue, green, etc.
+\code{color2} is a some form of grey used for the user data, etc.
+These colors can be redefined by using either \code{\\definecolor} or \code{\\colorlet}:
+\begin{lstlisting}
+ \definecolor{color1}{rgb}{0.55, 0.55, 0.55} % dark grey
+ \colorlet{color1}{black}
+\end{lstlisting}
+Any mechanism for naming and defining colors used by the \code{xcolor} package can be used to redefine the colors of a \Moderncv style.
+
+\paragraph{Fine tuning.}
+If an even finer control over the color scheme of the style is desired, the following color settings are used internally for the \code{casual} style and can be redefined:
+\begin{lstlisting}
+ % Head and footer
+ \colorlet{lastnamecolor}{color1}
+ \colorlet{namecolor}{lastnamecolor}
+ \colorlet{headrulecolor}{color1}
+ \colorlet{firstnamecolor}{lastnamecolor!50}
+ \colorlet{titlecolor}{color2}
+ \colorlet{addresscolor}{color2}
+ \colorlet{quotecolor}{color1}
+ \colorlet{pictureframecolor}{color1}
+ % Body
+ \colorlet{bodyrulecolor}{color1}
+ \colorlet{sectioncolor}{color1}
+ \colorlet{subsectioncolor}{color1}
+ \colorlet{hintstylecolor}{color0}
+ % Letter
+ \colorlet{letterclosingcolor}{color2}
+ % Skill matrix
+ \colorlet{skillmatrixfullcolor}{color1}
+ \colorlet{skillmatrixemptycolor}{color2!30}
+\end{lstlisting}
+
+
+\subsection{Modifying symbols and icons}
+\subsubsection{Icons}
+As stated in section \ref{section:customization:stylesAndOptions}, the use of icons is toggled by the \code{symbols} option that can be passed to \code{\\moderncvstyle}.
+
+The icons used in the display of the personal data (phone numbers, email, fax, social media accounts, etc.) can be customized by redefining the internal commands for the symbols:
+\begin{lstlisting}
+ \renewcommand*{<\symbolcommand>}{{\small<\symbol>}~}
+\end{lstlisting}
+Using \code{\\small} is optional, but the default behavior is to render all icons using \code{\\small}.
+Use \code{\\small} if one merely wishes to replace an icon/symbol while keeping the size consistent with the default icons/symbols.
+The tilde ensures proper spacing after the symbols and is recommended as well.
+
+Currently \Moderncv supports the following commands as \code{<\\symbolcommand>}:
\begin{itemize}
- \item redefining the command \texttt{listitemsymbol}: \verb|\renewcommand{\listitemsymbol}{-}|
- \item adding a specification for the label in \texttt{cvlistitem} and \texttt{cvlistdoubleitem}
+ \begin{multicols}{2}
+ \item \code{\\addresssymbol}
+ \item \code{\\mobilephonesymbol}
+ \item \code{\\fixedphonesymbol}
+ \item \code{\\faxphonesymbol}
+ \item \code{\\emailsymbol}
+ \item \code{\\homepagesymbol}
+ \item \code{\\linkedinsocialsymbol}
+ \item \code{\\xingsocialsymbol}
+ \item \code{\\twittersocialsymbol}
+ \item \code{\\githubsocialsymbol}
+ \item \code{\\gitlabsocialsymbol}
+ \item \code{\\stackoverflowsocialsymbol}
+ \item \code{\\googlescholarsocialsymbol}
+ \item \code{\\telegramsocialsymbol}
+ \item \code{\\whatsappsocialsymbol}
+ \item \code{\\signalsocialsymbol}
+ \item \code{\\matrixsocialsymbol}
+ \item \code{\\orcidsocialsymbol}
+ \item \code{\\researchgatesocialsymbol}
+ \item \code{\\researcheridsocialsymbol}
+ \item \code{\\bitbucketsocialsymbol}
+ \item \code{\\skypesocialsymbol}
+ \item \code{\\bornsymbol}
+ \item \code{\\arxivsocialsymbol}
+ \item \code{\\inspiresocialsymbol}
+ \end{multicols}
\end{itemize}
+The possible options for \code{<\\symbol>} depend on the package that is used.
+By default, the \code{marvosym} package is loaded if \code{pdflatex} is used, and the \code{academicons} and \code{fontawesome5} packages are loaded if either \code{lualatex} or \code{xelatex} is used.
+Full lists of all available symbols and icons can be found in the documentation of each respective package:
+
+\begin{tabular}{l}
+ \url{https://ctan.org/pkg/marvosym} \\[1ex]
+ \url{https://ctan.org/pkg/fontawesome5} \\[1ex]
+ \url{https://ctan.org/pkg/academicons}
+\end{tabular}
+
+\paragraph{Example.}
+If one wanted to use the dingbat fonts to replace the default phone symbol, one should load the \code{pifont} package in the preamble and then substitute the default symbol with the dingbat symbol \ding{38}\ with
+\begin{lstlisting}
+ \renewcommand*{\fixedphonesymbol}{\ding{38}~}
+\end{lstlisting}
+
+\paragraph{Alternative to icons}
+In case you do not want \texttt{symbols} (default) for the icons, there is also the option to replace icons with \texttt{letters} instead. This is set by the macro \code{\\moderncvicons}, which must be called after setting the style in the preamble.
+\begin{lstlisting}
+ \moderncvicons{<symbols|letters>}
+\end{lstlisting}
+This mechanism is also used to determine the icon set. In principle the \code{\\moderncvicons} can be used to determine the icon set with the possible values \texttt{marvosym}, \texttt{awesome} or \texttt{academic}, but it is recommended to let {\moderncv} decide the correct icon set due to differing \Latex compiler support.
+
+\subsubsection{Listing labels}
+The labels used in \code{itemize} environments, \code{cvlistitem} and \code{cvlistdoubleitem} can be changed in two different ways:
-For example: the following code produces the result shown in figure \ref{fig:ex_items}.
-
-\begin{verbatim}
-\closesection{} % needed to renewcommands
-\renewcommand{\listitemsymbol}{-} % change the symbol for lists
-
-\section{Extra 1}
-\cvlistitem{Item 1}
-\cvlistitem{Item 2}
-\cvlistitem[+]{Item 3} % optional other symbol
-
-\section{Extra 2}
-\cvlistdoubleitem[\Neutral]{Item 1}{Item 4}
-\cvlistdoubleitem[\Neutral]{Item 2}{Item 5}
-\cvlistdoubleitem[\Neutral]{Item 3}{}
-\end{verbatim}
-
-\begin{figure}[!hbt]
- \centering
- \fbox{\includegraphics[width=.8\textwidth]{ex_items.png}}
- \caption{Example of customization of the list labels.}
- \label{fig:ex_items}
-\end{figure}
-
-\subsection*{Adjusting lenghts}
-The different lengths used by moderncv are customizable by
-\begin{verbatim}
-\setlength{<length>}{<new_dimensions>}
-\end{verbatim}
-where \texttt{<length>} are \texttt{quote\-width}, \texttt{sep\-a\-ra\-tor\-col\-umn\-width}, \texttt{main\-col\-umn\-width}, \texttt{doub\-le\-i\-tem\-main\-col\-umn\-width}, \texttt{list\-i\-tem\-sym\-bol\-width}, \texttt{list\-doub\-le\-i\-tem\-main\-col\-umn\-width},
-
-In particular, the first column, can be set to any width. You can do that in two way:
\begin{itemize}
- \item using \verb|\sethintscolumnlength{<length>}|, where \texttt{<length>} is the desired length in a unit LaTeX understands
- \item using \verb|\sethintscolumntowidth{<string>}|, where \texttt{<string>} is a string of the desired length (usually, the longest string that has to appear in the column)
+ \item Redefining \code{\\labelitemi}, \code{\\labelitemii}, \code{\\labelitemiii} and \code{\\labelitemiv} changes the labels for \code{itemize} environments as well as for \code{cvlistitem} and \code{cvlistdoubleitem}, e.g.
+ \begin{lstlisting}
+ \renewcommand{\labelitemi}{-}
+ \end{lstlisting}
+ \item Redefining \code{\\listitemsymbol} changes the labels for \code{cvlistitem} and \code{cvlistdoubleitem} but \emph{not} for \code{itemize} environments, e.g.
+ \begin{lstlisting}
+ \renewcommand{\listitemsymbol}{-}
+\end{lstlisting}
\end{itemize}
-\subsection*{Additional commands}
-There are commands to manage hypertextual links:
+\subsection{Adjusting lengths}\label{subsection:adjusting:lengths}
+Some lengths in \Moderncv can be adjusted.
+
+The hints column can be adjusted by setting \code{\\hintscolumnwidth}:
+\begin{lstlisting}
+ \setlength{\hintscolumnwidth}{3cm}
+\end{lstlisting}
+
+For the \code{classic} style, the amount of horizontal space for the name can be adjusted by setting \code{\\makecvheadnamewidth} to avoid breaks:
+\begin{lstlisting}
+ \setlength{\makecvheadnamewidth}{10cm}
+\end{lstlisting}
+One should be careful though, as the length is normally calculated to avoid any overlap with the personal information.
+This should be used at one's own typographical risk.
+
+The spacing between the hints column and the CV entries can be adjusted by setting\\
+\code{\\separatorcolumnwidth}. The default value is \code{0.025\\textwidth}.
+\begin{lstlisting}
+ \setlength{\separatorcolumnwidth}{0.05\textwidth}
+\end{lstlisting}
+
+The spacing between the list symbol and the text item of \code{\\cvlistitem} and \code{\\cvlistdoubleitem} can be adjusted by setting \code{\\listitemsymbolspace} in the preamble. The default value is set to \code{0pt}.
+\begin{lstlisting}
+ \setlength{\listitemsymbolspace}{5pt}
+\end{lstlisting}
+
+The width of the footer can be adjusted by setting \code{\\footwidth}. Due to internal calculations \code{\\renewcommand} is needed. The default value is \code{0.8\\textwidth}.
+\begin{lstlisting}
+ \renewcommand*{\recomputefootlengths}{%
+ \setlength{\footwidth}{0.9\textwidth}}
+\end{lstlisting}
+
+The width of the quote can be adjusted by setting \code{\\quotewidth}. Due to internal calculations \code{\\renewcommand} is needed. The default value is \code{0.65\\textwidth}.
+\begin{lstlisting}
+ \renewcommand*{\recomputecvheadlengths}{%
+ \setlength{\quotewidth}{0.5\textwidth}}
+\end{lstlisting}
+
+
+% The different lengths used by moderncv are customizable by
+% \begin{lstlisting}
+% \setlength{<length>}{<new_dimensions>}
+% \end{lstlisting}
+% where \code{<length>} are \code{maincolumnwidth}, \code{doubleitemmaincolumnwidth}, \code{listitemsymbolwidth}, \code{listdoubleitemmaincolumnwidth},
+
+
+\subsubsection{Lengths in the skill matrix}
+\label{section:length:skillmatrix}
+Both the width of the skill matrix legend and the width of the skill matrix columns can be adjusted.
+
+The width of the skill matrix legend can be adjusted as follows:
+\begin{lstlisting}
+ \setcvskilllegendcolumns[<width>][<factor>]
+ % Examples:
+ \setcvskilllegendcolumns[][0.45]
+ \setcvskilllegendcolumns[\widthof{``Legend''}][0.45]
+ \setcvskilllegendcolumns[0ex][0.46] % useful for the banking style
+\end{lstlisting}
+\code{<width>} should be a length smaller than \code{\\textwidth}, and \code{<factor>} must be between 0 and 1.
+
+The width of the skill matrix columns can be adjusted as follows:
+\begin{lstlisting}
+ \setcvskillcolumns[<width>][<factor>][<exp_width>]
+ % Examples:
+ \setcvskillcolumns[5em][][] % adjust first column, same as \setcvskillcolumns[5em]
+ \setcvskillcolumns[][0.45][] % adjust third (skill) column, same as \setcvskillcolumns[][0.45]
+ \setcvskillcolumns[][][\widthof{``Year''}] % adjust fourth (years of experience) column
+ \setcvskillcolumns[][0.45][\widthof{``Year''}]
+ \setcvskillcolumns[\widthof{``Language''}][0.48][]
+ \setcvskillcolumns[\widthof{``Language''}]
+\end{lstlisting}
+\code{<width>} and \code{<exp_width>} should be lengths smaller than \code{\\textwidth}, and \code{<factor>} must be between 0 and 1.
+
+\subsection{Additional link commands}%% adapted from Cristina Sambo's documentation
+To create links to a website or a email address, use the following commands:
+
+A general weblink with optional text.
+\begin{lstlisting}
+ \link[<text>]{<link>}
+ %% example
+ \link[name of the link]{ftp://ftp.somesite.org}
+\end{lstlisting}
+
+An HTTP link. The HTTP prefix is generated automatically and is not needed in the link argument.
+\begin{lstlisting}
+ \link[<text>]{<link>}
+ %% example
+ \link[goto HTTP site]{www.somehttpsite.org}
+\end{lstlisting}
+
+A HTTPS link. The HTTPS prefix is generated automatically and is not needed in the link argument.
+\begin{lstlisting}
+ \link[<text>]{<link>}
+ %% example
+ \httpslink[goto HTTPS site]{www.somesecuresite.org}
+\end{lstlisting}
+
+An email link. The mailto prefix is generated automatically and is not needed in the link argument.
+\begin{lstlisting}
+ \link[<text>]{<link>}
+ %% example
+ \emaillink[my email]{jdoe@website.org}
+\end{lstlisting}
+
+\subsection{Page breaks and orphaned section headers}
+If \Latex breaks pages just after \code{\\section} or \code{\\subsection} commands, try adjusting the stretchability of the page with \code{\\cvsectionstretchability} or \code{\\cvsubsectionstretchability}:
+\begin{lstlisting}
+ \setlength{\cvsectionstretchability}{\baselineskip}
+ \setlength{\cvsubsectionstretchability}{100pt}
+\end{lstlisting}
+These two lengths tell \Latex how much extra length it needs after \code{\\section} and \code{\\subsection} commands.
+By default, \Moderncv sets both lengths to \code{0.9\\baselineskip}.
+
+This should solve orphaned \code{\\section} and \code{\\subsection} commands that are used alone for most users.
+However, \Latex does not check for content.
+For example, writing
+\begin{lstlisting}
+ \section{blub}
+ \subsection{blubblub}
+\end{lstlisting}
+one after the other may cause \Latex to place the section and subsection headers on separate pages.
+Since \Latex considers the subsection header to not be orphaned, it may place the section header at the bottom of a page if there is enough space to do so while placing the subsection header on the next page.
+One solution is to increase \code{\\cvsectionstretchability} to force the break of the section header.
+However, this changes the behaviour for all \code{\\section} commands in your CV and might cause unnecessary page breaks.
+It is therefore recommended to force the page break manually with a \code{\\newpage} in this case.
+
+\paragraph{Experts only:}
+Internally, \Moderncv uses a custom \code{\\needspace} command:
+\begin{lstlisting}
+ \NewDocumentCommand\@cvneedspace{m}{%
+ \begingroup
+ \setlength{\dimen@}{#1}%
+ \vskip\z@\@plus\dimen@
+ \penalty \withinstretchpenalty\vskip\z@\@plus -\dimen@
+ \vskip\dimen@
+ \penalty \poststretchpenalty%
+ \vskip -\dimen@
+ \vskip\z@skip % hide the previous |\vskip| from |\addvspace|
+ \endgroup
+ }
+\end{lstlisting}
+Thus, instead of setting \code{\\cvsectionstretchability} and/or \code{\\cvsubsectionstretchability}, page break behavior can be adjusted by redefining the following internal penalties:
+\begin{lstlisting}
+ \renewcommand{\withinstretchpenalty}{<-100...9999>}
+ \renewcommand{\poststretchpenalty}{<-100...9999>}.
+\end{lstlisting}
+By default, \Moderncv sets \code{\\withinstretchpenalty} to 0 and \code{\\poststretchpenalty} to 9999.
+The higher the penalties are, the less likely a page break will occur.
+A good explanation of \code{\\needspace} can be found at \url{https://tex.stackexchange.com/questions/348994/understanding-needspace}.
+
+
+\subsection{Tips and Tricks}
+\subsubsection{Legal disclaimer at the end of the CV}
+Some countries (e.g. Italy) require you to add a legal disclaimer authorizing the use of the personal data in your CV.
+To add such a disclaimer, add the following to the bottom of your CV:%
+\footnote{Example provided by Cristina Sambo}%
+\begin{lstlisting}
+ \vfill
+ \begin{center}
+ \textit{\small Ai sensi del D. Lgs. 196/2003 ...}
+ \end{center}
+\end{lstlisting}
+
+
+
+\section{Implementation details}
+\label{section:implementationDetails}
+
+\subsection{Creating your own styles}
+Currently {\moderncv} ships with six different styles: \texttt{casual} (default), \texttt{classic}, \texttt{banking}, \texttt{oldstyle}, \texttt{fancy} and \texttt{contemporary}. Internally, these styles are numbered 1, 2, 3, 4, 5 and 6, respectively. All styles except \texttt{oldstyle} and \texttt{fancy} possess additional option parameters which were described in section \ref{section:customization:stylesAndOptions}.
+
+Different styles' head, body and foot can be combined to create custom styles. This is done by setting \code{\\moderncvhead}, \code{\\moderncvbody} and \code{\\moderncvfoot} in the preamble. Here is an example of a custom style with a \texttt{banking} head, an \texttt{oldstyle} body and a \texttt{casual} foot:
+\begin{lstlisting}
+ \moderncvhead{3}
+ \moderncvbody{4}
+ \moderncvfoot{1}
+\end{lstlisting}
+Furthermore, options for each part of {\moderncv} parts can be set as well in such combinations. To get a CV with a \texttt{classic} head and a \texttt{banking} body with full rules, define the following in the preamble:
+\begin{lstlisting}
+ \moderncvhead{2}
+ \moderncvbody[fullrules]{3}
+ \moderncvfoot{1}
+\end{lstlisting}
+
+
+\subsection{Required packages}
+\label{section:implementationDetails:requiredPackages}
+In addition to the packages that \Moderncv provides, the following packages are loaded internally:
\begin{itemize}
- \item[-] \verb|\weblink[optional text]{link}|
- \item[-] \verb|\httplink[optional text]{link}|
- \item[-] \verb|\emaillink[optional text]{link}|
+ \begin{multicols}{3}
+ \item \code{etoolbox}
+ \item \code{ifthen}
+ \item \code{xcolor}
+ \item \code{ifxetex} or \code{ifluatex}
+ \item \code{fontenc}
+ \item \code{url}
+ \item \code{hyperref}
+ \item \code{graphicx}
+ \item \code{fancyhdr}
+ \item \code{tweaklist}%
+ \footnote{The \code{tweaklist} package has been altered for the development of \Moderncv and ships with \moderncv.}
+ \item \code{calc}
+ \item \code{xparse}
+ \item \code{microtype}
+ \item \code{expl3}
+ \item \code{tikz}
+ \item \code{changepage}
+ \item \code{fontawesome5}
+ \item \code{academicons}
+ \item \code{tgpagella}
+ \item \code{ebgaramond}
+ \item \code{kurier}
+ \item \code{multirow}
+ \item \code{arydshln}
+ \end{multicols}
\end{itemize}
-There is a \verb|\today| command, useful for example if you need to add the date the CV was produced.
-
-\subsection*{Putting things at the end of CV}
-Sometimes there is the need to add some lines at the end of the CV. For example, in Italy is necessary to add the permission to treat the personal data contained in the r\'esum\'e. You can do that dropping out of the layout of \texttt{moderncv} and pushing the lines at the end by the command \verb|\vfill|:
-\begin{verbatim}
-\emptysection{}\closesection
-\vfill
-\begin{center}
-\textit{\small Ai sensi del D. Lgs. 196/2003 ...}
-\end{center}
-\end{verbatim}
+Most of these packages should be included in your \Latex distribution of choice.
+
+\subsection{Known conflicts with other packages}
+\begin{enumerate}
+ \item \Moderncv is incompatible with \code{biber}.
+ \item \Moderncv is incompatible with \biblatex.
+ \item \Moderncv is incompatible with \code{babel} in Spanish
+\end{enumerate}
+
+\subsection{Known bugs}
+\begin{enumerate}
+ \item Skill matrices don't break automatically in \texttt{fancy} style.
+ \item Long names break the \texttt{oldstyle} style and possibly other styles (needs testing).
+ \item Long URLs in \texttt{classic} style can make the name break line.
+ Fixed width for the address part must be implemented.
+ \item When using the \texttt{fancy} style, undesired space is added between the bibliography head and the first entry, as well as after the last entry.
+ \item Footnotes generate errors, but the output seems correct when running with \code{-interaction=nonstopmode}.
+ \item When using CJK, the last \code{\\clearpage} required for the \code{fancyhdr} package to work properly kills the ``lastpage'' counter, and therefore also the page numbering.
+ \item \Moderncv produces the error ``\code{lonely \\item--perhaps a missing list environment}'' when used with the \code{bibentry} package, though the output is actually correct.
+ Among other things, this causes compilation by LyX to stop.
+ \item The space after a \code{\\cventry} gets eaten up when the last argument contains a nested \code{itemize} environment.
+ An ugly hack and incomplete solution was implemented by including a \code{\\strut} in every item label, but this doesn't solve the problem for multi-line items.
+ Ideally, the \code{\\strut} should end the item, but there seems to be no way to do this.
+\end{enumerate}
\end{document}
diff --git a/macros/latex/contrib/moderncv/moderncv.cls b/macros/latex/contrib/moderncv/moderncv.cls
index 44b9e35914..20cedc8b61 100644
--- a/macros/latex/contrib/moderncv/moderncv.cls
+++ b/macros/latex/contrib/moderncv/moderncv.cls
@@ -1,5 +1,5 @@
%% start of file `moderncv.cls'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{moderncv}[2022-02-21 v2.3.1 modern curriculum vitae and letter document class]
+\ProvidesClass{moderncv}[2024-07-18 v2.4.1 modern curriculum vitae and letter document class]
%-------------------------------------------------------------------------------
@@ -103,7 +103,8 @@
\urlstyle{tt}
\AtEndPreamble{
\pagenumbering{arabic}% has to be issued before loading hyperref, as to set \thepage and hence to avoid hyperref issuing a warning and setting pdfpagelabels=false
- \RequirePackage[unicode]{hyperref}% unicode is required for unicode pdf metadata
+ \PassOptionsToPackage{unicode}{hyperref}
+ \RequirePackage{hyperref}
\hypersetup{
breaklinks,
pdfborder = 0 0 0,
@@ -114,10 +115,16 @@
bookmarksopen = true,
bookmarksdepth= 2,% to show sections and subsections
pdfauthor = {\@firstname{}~\@lastname{}},
- pdftitle = {\@firstname{}~\@lastname{}\notblank{\@title}{ -- \@title}{}},
+ pdftitle =
+ {\@firstname{}~\@lastname{}\expandafter\notblank\expandafter{\@title}{ -- \@title}{}}, %\notblank does not expand argument automatically
pdfsubject = {R\'{e}sum\'{e} of \@firstname{}~\@lastname{}},
pdfkeywords = {\@firstname{}~\@lastname{}, curriculum vit\ae{}, r\'{e}sum\'{e}}}}
+% pdftex not using pdfmanagement-testphase requires T1 font encoding in order to handle links containing special characters somewhat properly
+\ifpdftex
+ \IfPDFManagementActiveTF{}{\RequirePackage[T1]{fontenc}}
+\fi
+
% graphics
\RequirePackage{graphicx}
@@ -138,9 +145,9 @@
\@ifundefined{r@lastpage}{}{%
\ifthenelse{\pageref{lastpage}>1}{%
\newlength{\pagenumberwidth}%
- \settowidth{\pagenumberwidth}{\color{color2}\addressfont\itshape\strut\thepage/\pageref{lastpage}}%
+ \settowidth{\pagenumberwidth}{\color{color2}\pagenumberfont\strut\thepage/\pageref{lastpage}}%
\fancypagestyle{plain}{%
- \fancyfoot[r]{\parbox[b]{\pagenumberwidth}{\color{color2}\pagenumberfont\strut\thepage/\pageref{lastpage}}}}% the parbox is required to ensure alignment with a possible center footer (e.g., as in the casual style)
+ \fancyfoot[r]{\parbox[b]{\pagenumberwidth}{\color{color2}\pagenumberfont\strut\thepage/\protect\NoHyper\pageref{lastpage}\protect\endNoHyper}}}% the parbox is required to ensure alignment with a possible center footer (e.g., as in the casual style)
\pagestyle{plain}}{}}\fi}%
\AtEndDocument{\label{lastpage}}}
\pagestyle{plain}
@@ -231,8 +238,9 @@
\newcommand*{\email}[1]{\def\@email{#1}}
% defines one's home page (optional)
-% usage: \homepage{<url>}
-\newcommand*{\homepage}[1]{\def\@homepage{#1}}
+% usage: \homepage[<optional protocol>]{<url>}
+% where <optional protocol> should be either "https" (default) or "http"
+\NewDocumentCommand{\homepage}{O{https}m}{\def\@homepageprotocol{#1}\def\@homepage{#2}}
% adds a fixed/mobile/fax number to one's personal information (optional)
% usage: \phone[<optional type>]{<number>}
@@ -247,11 +255,41 @@
% http://latex.org/forum/viewtopic.php?t=12239
\def\SplitMyMacro#1/#2{#2}
-
-
+
+
% adds a social link to one's personal information (optional)
% usage: \social[<optional type>][<optional url>]{<account name>}
-% where <optional type> should be either "linkedin", "xing", "twitter", "github", "gitlab", "bitbucket" or "skype"
+% where <optional type> should be either:
+% - "linkedin"
+% - "xing"
+% - "twitter"
+% - "mastodon"
+% - "github"
+% - "gitlab"
+% - "stackoverflow"
+% - "bitbucket"
+% - "skype"
+% - "orcid"
+% - "researchgate"
+% - "researcherid"
+% - "telegram"
+% - "whatsapp"
+% - "signal"
+% - "matrix"
+% - "googlescholar"
+% - "codeberg"
+% - "discord"
+% - "twitch"
+% - "youtube"
+% - "tiktok"
+% - "instagram"
+% - "soundcloud"
+% - "steam
+% - "xbox"
+% - "playstation"
+% - "battlenet"
+% - "arxiv"
+% - "inspire"
\collectionnew{socials}
\NewDocumentCommand{\social}{O{}O{}m}{%
\ifthenelse{\equal{#2}{}}%
@@ -259,6 +297,7 @@
\ifthenelse{\equal{#1}{linkedin}} {\collectionadd[linkedin]{socials} {\protect\httpslink[#3]{www.linkedin.com/in/#3}}} {}%
\ifthenelse{\equal{#1}{xing}} {\collectionadd[xing]{socials} {\protect\httpslink[#3]{www.xing.com/profile/#3}}} {}%
\ifthenelse{\equal{#1}{twitter}} {\collectionadd[twitter]{socials} {\protect\httpslink[#3]{twitter.com/#3}}} {}%
+ \ifthenelse{\equal{#1}{mastodon}} {\collectionadd[mastodon]{socials} {\protect\httpslink[#3]{#3}}} {}%
\ifthenelse{\equal{#1}{github}} {\collectionadd[github]{socials} {\protect\httpslink[#3]{github.com/#3}}} {}%
\ifthenelse{\equal{#1}{gitlab}} {\collectionadd[gitlab]{socials} {\protect\httpslink[#3]{gitlab.com/#3}}} {}%
\ifthenelse{\equal{#1}{stackoverflow}}{\collectionadd[stackoverflow]{socials}{\protect\httpslink[#3]{stackoverflow.com/users/#3}}} {}%
@@ -271,7 +310,20 @@
\ifthenelse{\equal{#1}{whatsapp}} {\collectionadd[whatsapp]{socials} {\protect\httpslink[#3]{wa.me/#3}}} {}%
\ifthenelse{\equal{#1}{signal}} {\collectionadd[signal]{socials} {#3}} {}%
\ifthenelse{\equal{#1}{matrix}} {\collectionadd[matrix]{socials} {\httpslink[#3]{matrix.to/\#/#3}}} {}%
- \ifthenelse{\equal{#1}{googlescholar}}{\collectionadd[googlescholar]{socials}{\protect\httpslink[#3]{scholar.google.com/citations?user=#3}}} {}% {}%
+ \ifthenelse{\equal{#1}{googlescholar}}{\collectionadd[googlescholar]{socials}{\protect\httpslink[#3]{scholar.google.com/citations?user=#3}}} {}%
+ \ifthenelse{\equal{#1}{codeberg}} {\collectionadd[codeberg]{socials} {\protect\httpslink[#3]{codeberg.org/#3}}} {}%
+ \ifthenelse{\equal{#1}{discord}} {\collectionadd[discord]{socials} {#3}} {}%
+ \ifthenelse{\equal{#1}{twitch}} {\collectionadd[twitch]{socials} {\protect\httpslink[#3]{twitch.tv/#3}}} {}%
+ \ifthenelse{\equal{#1}{youtube}} {\collectionadd[youtube]{socials} {\protect\httpslink[#3]{youtube.com/#3}}} {}%
+ \ifthenelse{\equal{#1}{tiktok}} {\collectionadd[tiktok]{socials} {\protect\httpslink[#3]{tiktok.com/@#3}}} {}%
+ \ifthenelse{\equal{#1}{instagram}} {\collectionadd[instagram]{socials} {\protect\httpslink[#3]{instagram.com/#3}}} {}%
+ \ifthenelse{\equal{#1}{soundcloud}} {\collectionadd[soundcloud]{socials} {\protect\httpslink[#3]{soundcloud.com/#3}}} {}%
+ \ifthenelse{\equal{#1}{steam}} {\collectionadd[steam]{socials} {\protect\httpslink[#3]{steamcommunity.com/id/#3}}} {}%
+ \ifthenelse{\equal{#1}{xbox}} {\collectionadd[xbox]{socials} {\protect\httpslink[#3]{account.xbox.com/profile?gamertag=#3}}} {}%
+ \ifthenelse{\equal{#1}{playstation}} {\collectionadd[playstation]{socials} {#3}} {}%
+ \ifthenelse{\equal{#1}{battlenet}} {\collectionadd[battlenet]{socials} {#3}} {}%
+ \ifthenelse{\equal{#1}{arxiv}} {\collectionadd[arxiv]{socials} {\protect\httpslink[#3]{arxiv.org/a/#3}}} {}%
+ \ifthenelse{\equal{#1}{inspire}} {\collectionadd[inspire]{socials} {\protect\httpslink[#3]{inspirehep.net/authoris/#3}}} {}%
}
{\collectionadd[#1]{socials}{\protect\httpslink[#3]{#2}}}}%
@@ -312,6 +364,7 @@
\newcommand*{\linkedinsocialsymbol} {}
\newcommand*{\xingsocialsymbol} {}
\newcommand*{\twittersocialsymbol} {}
+\newcommand*{\mastodonsocialsymbol} {}
\newcommand*{\githubsocialsymbol} {}
\newcommand*{\gitlabsocialsymbol} {}
\newcommand*{\stackoverflowsocialsymbol}{}
@@ -325,6 +378,19 @@
\newcommand*{\whatsappsocialsymbol} {}
\newcommand*{\matrixsocialsymbol} {}
\newcommand*{\signalsocialsymbol} {}
+\newcommand*{\codebergsocialsymbol} {}
+\newcommand*{\discordsocialsymbol} {}
+\newcommand*{\twitchsocialsymbol} {}
+\newcommand*{\youtubesocialsymbol} {}
+\newcommand*{\tiktoksocialsymbol} {}
+\newcommand*{\instagramsocialsymbol} {}
+\newcommand*{\soundcloudsocialsymbol} {}
+\newcommand*{\steamsocialsymbol} {}
+\newcommand*{\xboxsocialsymbol} {}
+\newcommand*{\playstationsocialsymbol} {}
+\newcommand*{\battlenetsocialsymbol} {}
+\newcommand*{\arxivsocialsymbol} {}
+\newcommand*{\inspiresocialsymbol} {}
% other
%------
@@ -441,6 +507,8 @@
% styles
\newcommand*{\namestyle}[1]{{\namefont#1}}
+\NewDocumentCommand{\firstnamestyle}{+m}{{\namefont#1}}
+\NewDocumentCommand{\lastnamestyle}{+m}{{\namefont#1}}
\newcommand*{\titlestyle}[1]{{\titlefont#1}}
\newcommand*{\addressstyle}[1]{{\addressfont#1}}
\newcommand*{\quotestyle}[1]{{\quotefont#1}}
@@ -492,12 +560,16 @@
% usage: \cvdoubleitem[spacing]{header1}{text1}{header2}{text2}
\newcommand*{\cvdoubleitem}[5][.25em]{}
+% makes a resume line 3 headers and their corresponding text
+% usage: \cvtripleitem[spacing]{header1}{text1}{header2}{text2}{header3}{text3}
+\newcommand*{\cvtripleitem}[7][.1em]{}
+
% makes a resume line with a list item
-% usage: \cvlistitem[label]{item}
+% usage: \cvlistitem[spacing]{item}
\newcommand*{\cvlistitem}[2][\listitemsymbol]{}
% makes a resume line with 2 list items
-% usage: \cvlistdoubleitem[label]{item1}{item2}
+% usage: \cvlistdoubleitem[spacing]{item1}{item2}
\newcommand*{\cvlistdoubleitem}[3][\listitemsymbol]{}
% makes a typical resume job / education entry
@@ -510,25 +582,39 @@
% makes a generic hyperlink
% usage: \link[optional text]{link}
-\newcommand*{\link}[2][]{%
- \ifthenelse{\equal{#1}{}}%
- {\href{#2}{#2}}%
- {\href{#2}{#1}}}
+% uses pdfmanagement-testphase when available, which provides url encoding of special characters
+\NewDocumentCommand{\link}{O{}m}{%
+ \IfPDFManagementActiveTF{%
+ \ifthenelse{\equal{#1}{}}%
+ {\hrefurl[urlencode]{#2}{#2}}%
+ {\hrefurl[urlencode]{#2}{#1}}}{%
+ \ifthenelse{\equal{#1}{}}%
+ {\href{#2}{#2}}%
+ {\href{#2}{#1}}}}
% makes a http hyperlink
% usage: \httplink[optional text]{link}
-\newcommand*{\httplink}[2][]{%
- \ifthenelse{\equal{#1}{}}%
- {\href{http://#2}{#2}}%
- {\href{http://#2}{#1}}}
-
+% uses pdfmanagement-testphase when available, which provides url encoding of special characters
+\NewDocumentCommand{\httplink}{O{}m}{%
+ \IfPDFManagementActiveTF{%
+ \ifthenelse{\equal{#1}{}}%
+ {\hrefurl[urlencode]{http://#2}{#2}}%
+ {\hrefurl[urlencode]{http://#2}{#1}}}{%
+ \ifthenelse{\equal{#1}{}}%
+ {\href{http://#2}{#2}}%
+ {\href{http://#2}{#1}}}}
% makes an https hyperlink
% usage: \httpslink[optional text]{link}
-\newcommand*{\httpslink}[2][]{%
- \ifthenelse{\equal{#1}{}}%
- {\href{https://#2}{#2}}%
- {\href{https://#2}{#1}}}
+% uses pdfmanagement-testphase when available, which provides url encoding of special characters
+\NewDocumentCommand{\httpslink}{O{}m}{%
+ \IfPDFManagementActiveTF{%
+ \ifthenelse{\equal{#1}{}}%
+ {\hrefurl[urlencode]{https://#2}{#2}}%
+ {\hrefurl[urlencode]{https://#2}{#1}}}{%
+ \ifthenelse{\equal{#1}{}}%
+ {\href{https://#2}{#2}}%
+ {\href{https://#2}{#1}}}}
% makes an email hyperlink
% usage: \emaillink[optional text]{link}
@@ -712,8 +798,10 @@
% elements
\newcommand*{\recipient}[2]{\def\@recipientname{#1}\def\@recipientaddress{#2}}
\renewcommand*{\date}[1]{\def\@date{#1}}\date{\today}
+\newcommand*{\subject}[1]{\def\@subject{#1}}
\newcommand*{\opening}[1]{\def\@opening{#1}}
\newcommand*{\closing}[1]{\def\@closing{#1}}
+\newcommand*{\signature}[2]{\def\@signature{\includegraphics[scale=#1]{#2}}}
\newcommand*{\enclosure}[2][]{%
% if an optional argument is provided, use it to redefine \enclname
\ifthenelse{\equal{#1}{}}{}{\renewcommand*{\enclname}{#1}}%
diff --git a/macros/latex/contrib/moderncv/moderncvbodyi.sty b/macros/latex/contrib/moderncv/moderncvbodyi.sty
index 02ac2e3aa5..d3db954fef 100644
--- a/macros/latex/contrib/moderncv/moderncvbodyi.sty
+++ b/macros/latex/contrib/moderncv/moderncvbodyi.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvbodyi.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,13 +10,13 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvbodyi}[2022-02-21 v2.3.1 modern curriculum vitae and letter body variant: 1]
+\ProvidesPackage{moderncvbodyi}[2024-07-18 v2.4.1 modern curriculum vitae and letter body variant: 1]
%-------------------------------------------------------------------------------
% required packages
%-------------------------------------------------------------------------------
-% provides the commands for the skillmatrix as well as the command
+% provides the commands for the skillmatrix as well as the command
% \recompute@cvskillmatrix@lengths
\RequirePackage[moderncvbodyi]{moderncvskillmatrix}
@@ -29,9 +29,9 @@
\renewcommand*{\hintfont}{}
% styles
-\renewcommand*{\sectionstyle}[1]{{\sectionfont\textcolor{color1}{#1}}}
-\renewcommand*{\subsectionstyle}[1]{{\subsectionfont\textcolor{color1}{#1}}}
-\renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{color0}{#1}}}
+\renewcommand*{\sectionstyle}[1]{{\sectionfont\textcolor{sectioncolor}{#1}}}
+\renewcommand*{\subsectionstyle}[1]{{\subsectionfont\textcolor{subsectioncolor}{#1}}}
+\renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{hintstylecolor}{#1}}}
%-------------------------------------------------------------------------------
@@ -44,11 +44,14 @@
\@initializelength{\maincolumnwidth}
% used by \cvdoubleitem
\@initializelength{\doubleitemcolumnwidth}
+% used by \cvtripleitem
+\@initializelength{\tripleitemcolumnwidth}
% used by \cvlistitem
\@initializelength{\listitemsymbolwidth} \settowidth{\listitemsymbolwidth}{\listitemsymbol}
\@initializelength{\listitemcolumnwidth}
% used by \cvlistdoubleitem
\@initializelength{\listdoubleitemcolumnwidth}
+\@initializelength{\listitemsymbolspace} \setlength{\listitemsymbolspace}{0pt}
% default moderncv \photo (change the definition such that by default the photo and its box align with the section bars
\RenewDocumentCommand{\photo}{O{\hintscolumnwidth-0.8pt-2\fboxsep}O{0.4pt}m}{\def\@photowidth{#1}\def\@photoframewidth{#2}\def\@photo{#3}}%
@@ -59,6 +62,8 @@
\setlength{\listitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth}%
\setlength{\doubleitemcolumnwidth}{\maincolumnwidth-\hintscolumnwidth-\separatorcolumnwidth-\separatorcolumnwidth}%
\setlength{\doubleitemcolumnwidth}{0.5\doubleitemcolumnwidth}%
+ \setlength{\tripleitemcolumnwidth}{\maincolumnwidth-2\hintscolumnwidth-3\separatorcolumnwidth}%
+ \setlength{\tripleitemcolumnwidth}{0.33\tripleitemcolumnwidth}%
\setlength{\listdoubleitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth-\separatorcolumnwidth-\listitemsymbolwidth}%
\setlength{\listdoubleitemcolumnwidth}{0.5\listdoubleitemcolumnwidth}%
\recompute@cvskillmatrix@lengths
@@ -73,7 +78,7 @@
\par\addvspace{2.5ex}%
\phantomsection{}% reset the anchor for hyperrefs
\addcontentsline{toc}{section}{#2}%
- \cvitem[0ex]{\strut\raggedleft\raisebox{\baseletterheight}{\color{color1}\rule{\hintscolumnwidth}{0.95ex}}}{\strut\sectionstyle{#2}}%
+ \cvitem[0ex]{\strut\raggedleft\raisebox{\baseletterheight}{\color{bodyrulecolor}\rule{\hintscolumnwidth}{0.95ex}}}{\strut\sectionstyle{#2}}%
\par\nobreak\addvspace{1ex}\@afterheading}% to avoid a pagebreak after the heading
\RenewDocumentCommand{\subsection}{sm}{%
@@ -97,15 +102,28 @@
\hspace*{\separatorcolumnwidth}%
\begin{minipage}[t]{\doubleitemcolumnwidth}#5\end{minipage}}}
+\renewcommand*{\cvtripleitem}[7][.1em]{%
+ \cvitem[#1]{#2}{%
+ \begin{minipage}[t]{\tripleitemcolumnwidth}#3\end{minipage}%
+ \hfill% fill of \separatorcolumnwidth
+ \begin{minipage}[t]{\hintscolumnwidth}\raggedleft\hintstyle{#4}\end{minipage}%
+ \hspace*{\separatorcolumnwidth}%
+ \begin{minipage}[t]{\tripleitemcolumnwidth}#5\end{minipage}%
+ \hspace*{\separatorcolumnwidth}%
+ \begin{minipage}[t]{\hintscolumnwidth}\raggedleft\hintstyle{#6}\end{minipage}%
+ \hspace*{\separatorcolumnwidth}%
+ \begin{minipage}[t]{\tripleitemcolumnwidth}#7\end{minipage}}}
+
+
\renewcommand*{\cvlistitem}[2][.25em]{%
- \cvitem[#1]{}{\listitemsymbol\begin{minipage}[t]{\listitemcolumnwidth}#2\end{minipage}}}
+ \cvitem[#1]{}{\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listitemcolumnwidth-\listitemsymbolspace}#2\end{minipage}}}
\renewcommand*{\cvlistdoubleitem}[3][.25em]{%
- \cvitem[#1]{}{\listitemsymbol\begin{minipage}[t]{\listdoubleitemcolumnwidth}#2\end{minipage}%
+ \cvitem[#1]{}{\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listdoubleitemcolumnwidth-\listitemsymbolspace}#2\end{minipage}%
\hfill% fill of \separatorcolumnwidth
\ifthenelse{\equal{#3}{}}%
{}%
- {\listitemsymbol\begin{minipage}[t]{\listdoubleitemcolumnwidth}#3\end{minipage}}}}
+ {\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listdoubleitemcolumnwidth-\listitemsymbolspace}#3\end{minipage}}}}
\renewcommand*{\cventry}[7][.25em]{%
\cvitem[#1]{#2}{%
@@ -162,13 +180,14 @@
\recomputecvlengths%
\setlength{\parskip}{6\p@}}
-\renewcommand*{\makeletterclosing}{
- \@closing\\[3em]%
+\renewcommand*{\makeletterclosing}{%
+ \@closing\ifthenelse{\isundefined{\@signature}}{\\[3em]}{\\[1em]}% shrink space when signature is set
+ \ifthenelse{\isundefined{\@signature}}{}{{\@signature\\}}
{\bfseries\@firstname~\@lastname}%
\ifthenelse{\isundefined{\@enclosure}}{}{%
\\%
\vfil%
- {\color{color2}\itshape\enclname: \@enclosure}}%
+ {\color{letterclosingcolor}\itshape\enclname: \@enclosure}}%
\vfil}
diff --git a/macros/latex/contrib/moderncv/moderncvbodyiii.sty b/macros/latex/contrib/moderncv/moderncvbodyiii.sty
index 003f9f3e1b..37d8d13200 100644
--- a/macros/latex/contrib/moderncv/moderncvbodyiii.sty
+++ b/macros/latex/contrib/moderncv/moderncvbodyiii.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvbodyiii.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvbodyiii}[2022-02-21 v2.3.1 modern curriculum vitae and letter body variant: 3]
+\ProvidesPackage{moderncvbodyiii}[2024-07-18 v2.4.1 modern curriculum vitae and letter body variant: 3]
% rules type options: "fullrules", "shortrules", "mixedrules" (default) or "norules"
\@initializeif{\if@fullrules}\@fullrulesfalse
@@ -37,7 +37,7 @@
%-------------------------------------------------------------------------------
% required packages
%-------------------------------------------------------------------------------
-% provides the commands for the skillmatrix as well as the command
+% provides the commands for the skillmatrix as well as the command
% \recompute@cvskillmatrix@lengths
\RequirePackage[moderncvbodyiii]{moderncvskillmatrix}
@@ -61,16 +61,16 @@
\renewcommand*{\sectionstyle}[1]{{%
\if@center\centering\else%
\if@right\raggedleft\fi\fi%
- \sectionfont\textcolor{color1}{#1}%
+ \sectionfont\textcolor{sectioncolor}{#1}%
\if@shortrules\else%
\par\fi}}
\renewcommand*{\subsectionstyle}[1]{{%
\if@center\centering\else%
\if@right\raggedleft\fi\fi%
- \subsectionfont\textcolor{color1}{#1}%
+ \subsectionfont\textcolor{subsectioncolor}{#1}%
\if@shortrules\else\if@mixedrules\else%
\par\fi\fi}}
-\renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{color0}{#1}}}
+\renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{hintstylecolor}{#1}}}
%-------------------------------------------------------------------------------
@@ -83,11 +83,14 @@
\@initializelength{\maincolumnwidth}
% used by \cvdoubleitem
\@initializelength{\doubleitemcolumnwidth}
+% used by \cvtripleitem
+\@initializelength{\tripleitemcolumnwidth}
% used by \cvlistitem
\@initializelength{\listitemsymbolwidth} \settowidth{\listitemsymbolwidth}{\listitemsymbol}
\@initializelength{\listitemcolumnwidth}
% used by \cvlistdoubleitem
\@initializelength{\listdoubleitemcolumnwidth}
+\@initializelength{\listitemsymbolspace} \setlength{\listitemsymbolspace}{0pt}
% commands
\renewcommand*{\recomputecvbodylengths}{%
@@ -96,6 +99,8 @@
\setlength{\listitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth}%
\setlength{\doubleitemcolumnwidth}{\maincolumnwidth-\separatorcolumnwidth}%
\setlength{\doubleitemcolumnwidth}{0.5\doubleitemcolumnwidth}%
+ \setlength{\tripleitemcolumnwidth}{\maincolumnwidth-2\separatorcolumnwidth}%
+ \setlength{\tripleitemcolumnwidth}{0.33\tripleitemcolumnwidth}%
\setlength{\listdoubleitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth-\separatorcolumnwidth-\listitemsymbolwidth}%
\setlength{\listdoubleitemcolumnwidth}{0.5\listdoubleitemcolumnwidth}%
\recompute@cvskillmatrix@lengths
@@ -133,14 +138,14 @@
\newcommand*{\sectionrule}{}
\newcommand*{\subsectionrule}{}
\if@fullrules%
- \renewcommand*{\sectionrule}{\par\nobreak\vspace*{-.7\baselineskip}\leavevmode{\color{color1}\leaders\hbox{\rule{1pt}{0.4pt}}\hfill\kern0pt}}
- \renewcommand*{\subsectionrule}{\par\nobreak\vspace*{-.7\baselineskip}\leavevmode{\color{color1}\xleaders\hbox to 0.35em{\scriptsize.}\hfill}}\fi% different subsectionrules will not be perfectly aligned, but remaining space at the end of the fill will be distributed evenly between leaders, so it will be barely visible}
+ \renewcommand*{\sectionrule}{\par\nobreak\vspace*{-.7\baselineskip}\leavevmode{\color{bodyrulecolor}\leaders\hbox{\rule{1pt}{0.4pt}}\hfill\kern0pt}}
+ \renewcommand*{\subsectionrule}{\par\nobreak\vspace*{-.7\baselineskip}\leavevmode{\color{bodyrulecolor}\xleaders\hbox to 0.35em{\scriptsize.}\hfill}}\fi% different subsectionrules will not be perfectly aligned, but remaining space at the end of the fill will be distributed evenly between leaders, so it will be barely visible}
\if@shortrules%
- \renewcommand*{\sectionrule}{\leavevmode{\color{color1}\leaders\hbox{\rule{1pt}{0.4pt}}\hfill\kern0pt}}
- \renewcommand*{\subsectionrule}{\leavevmode{\color{color1}\xleaders\hbox to 0.35em{\scriptsize.}\hfill}}\fi% different subsectionrules will not be perfectly aligned, but remaining space at the end of the fill will be distributed evenly between leaders, so it will be barely visible}}
+ \renewcommand*{\sectionrule}{\leavevmode{\color{bodyrulecolor}\leaders\hbox{\rule{1pt}{0.4pt}}\hfill\kern0pt}}
+ \renewcommand*{\subsectionrule}{\leavevmode{\color{bodyrulecolor}\xleaders\hbox to 0.35em{\scriptsize.}\hfill}}\fi% different subsectionrules will not be perfectly aligned, but remaining space at the end of the fill will be distributed evenly between leaders, so it will be barely visible}}
\if@mixedrules%
- \renewcommand*{\sectionrule}{\par\nobreak\vspace*{-.7\baselineskip}\leavevmode{\color{color1}\leaders\hbox{\rule{1pt}{0.4pt}}\hfill\kern0pt}}
- \renewcommand*{\subsectionrule}{\leavevmode{\color{color1}\xleaders\hbox to 0.35em{\scriptsize.}\hfill}}\fi% different subsectionrules will not be perfectly aligned, but remaining space at the end of the fill will be distributed evenly between leaders, so it will be barely visible}}
+ \renewcommand*{\sectionrule}{\par\nobreak\vspace*{-.7\baselineskip}\leavevmode{\color{bodyrulecolor}\leaders\hbox{\rule{1pt}{0.4pt}}\hfill\kern0pt}}
+ \renewcommand*{\subsectionrule}{\leavevmode{\color{bodyrulecolor}\xleaders\hbox to 0.35em{\scriptsize.}\hfill}}\fi% different subsectionrules will not be perfectly aligned, but remaining space at the end of the fill will be distributed evenly between leaders, so it will be barely visible}}
\if@norules%
\renewcommand*{\sectionrule}{}
\renewcommand*{\subsectionrule}{}\fi
@@ -155,16 +160,24 @@
\begin{minipage}[t]{\doubleitemcolumnwidth}\ifstrempty{#4}{}{\hintstyle{#4}: }#5\end{minipage}%
\par\addvspace{#1}}
+\renewcommand*{\cvtripleitem}[7][.1em]{%
+ \begin{minipage}[t]{\tripleitemcolumnwidth}\hintstyle{#2}: #3\end{minipage}%
+ \hfill% fill of \separatorcolumnwidth
+ \begin{minipage}[t]{\tripleitemcolumnwidth}\hintstyle{#4}: #5\end{minipage}%
+ \hfill% fill of \separatorcolumnwidth
+ \begin{minipage}[t]{\tripleitemcolumnwidth}\ifstrempty{#6}{}{\hintstyle{#6}: }#7\end{minipage}%
+ \par\addvspace{#1}}
+
\renewcommand*{\cvlistitem}[2][.25em]{%
- \listitemsymbol\begin{minipage}[t]{\listitemcolumnwidth}#2\end{minipage}%
+ \listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listitemcolumnwidth-\listitemsymbolspace}#2\end{minipage}%
\par\addvspace{#1}}
\renewcommand*{\cvlistdoubleitem}[3][.25em]{%
- \cvitem[#1]{}{\listitemsymbol\begin{minipage}[t]{\listdoubleitemcolumnwidth}#2\end{minipage}%
+ \cvitem[#1]{}{\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listdoubleitemcolumnwidth-\listitemsymbolspace}#2\end{minipage}%
\hfill% fill of \separatorcolumnwidth
\ifstrempty{#3}%
{}%
- {\listitemsymbol\begin{minipage}[t]{\listdoubleitemcolumnwidth}#3\end{minipage}}}}
+ {\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listdoubleitemcolumnwidth-\listitemsymbolspace}#3\end{minipage}}}}
\renewcommand*{\cventry}[7][.25em]{
\begin{tabular*}{\maincolumnwidth}{l@{\extracolsep{\fill}}r}%
@@ -231,13 +244,14 @@
\recomputecvbodylengths%
\setlength{\parskip}{6\p@}}
-\renewcommand*{\makeletterclosing}{
- \@closing\\[3em]%
+\renewcommand*{\makeletterclosing}{%
+ \@closing\ifthenelse{\isundefined{\@signature}}{\\[3em]}{\\[1em]}% shrink space when signature is set
+ \ifthenelse{\isundefined{\@signature}}{}{{\@signature\\}}
{\bfseries\@firstname~\@lastname}%
\ifthenelse{\isundefined{\@enclosure}}{}{%
\\%
\vfil%
- {\color{color2}\itshape\enclname: \@enclosure}}%
+ {\color{letterclosingcolor}\itshape\enclname: \@enclosure}}%
\vfil}
diff --git a/macros/latex/contrib/moderncv/moderncvbodyiv.sty b/macros/latex/contrib/moderncv/moderncvbodyiv.sty
index 9127af18e8..0d9fe6fb87 100644
--- a/macros/latex/contrib/moderncv/moderncvbodyiv.sty
+++ b/macros/latex/contrib/moderncv/moderncvbodyiv.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvbodyiv.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,13 +10,13 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvbodyiv}[2022-02-21 v2.3.1 modern curriculum vitae and letter body variant: 4]
+\ProvidesPackage{moderncvbodyiv}[2024-07-18 v2.4.1 modern curriculum vitae and letter body variant: 4]
%-------------------------------------------------------------------------------
% required packages
%-------------------------------------------------------------------------------
-% provides the commands for the skillmatrix as well as the command
+% provides the commands for the skillmatrix as well as the command
% \recompute@cvskillmatrix@lengths
\RequirePackage[moderncvbodyiv]{moderncvskillmatrix}
@@ -29,9 +29,9 @@
\renewcommand*{\hintfont}{\bfseries}
% styles
-\renewcommand*{\sectionstyle}[1]{{\sectionfont\textcolor{color1}{#1}}}
-\renewcommand*{\subsectionstyle}[1]{{\subsectionfont\textcolor{color1}{#1}}}
-\renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{color0}{#1}}}
+\renewcommand*{\sectionstyle}[1]{{\sectionfont\textcolor{sectioncolor}{#1}}}
+\renewcommand*{\subsectionstyle}[1]{{\subsectionfont\textcolor{subsectioncolor}{#1}}}
+\renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{hintstylecolor}{#1}}}
%-------------------------------------------------------------------------------
@@ -49,6 +49,10 @@
\@initializelength{\listitemcolumnwidth}
% used by \cvlistdoubleitem
\@initializelength{\listdoubleitemcolumnwidth}
+% used by \cvtripleitem
+\@initializelength{\tripleitemcolumnwidth}
+\@initializelength{\listitemsymbolspace} \setlength{\listitemsymbolspace}{0pt}
+
% commands
\renewcommand*{\recomputecvbodylengths}{%
@@ -57,6 +61,8 @@
\setlength{\listitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth}%
\setlength{\doubleitemcolumnwidth}{\maincolumnwidth-\separatorcolumnwidth}%
\setlength{\doubleitemcolumnwidth}{0.5\doubleitemcolumnwidth}%
+ \setlength{\tripleitemcolumnwidth}{\maincolumnwidth-2\separatorcolumnwidth}%
+ \setlength{\tripleitemcolumnwidth}{0.33\tripleitemcolumnwidth}%
\setlength{\listdoubleitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth-\separatorcolumnwidth-\listitemsymbolwidth}%
\setlength{\listdoubleitemcolumnwidth}{0.5\listdoubleitemcolumnwidth}%
\recompute@cvskillmatrix@lengths
@@ -87,15 +93,23 @@
\begin{minipage}[t]{\doubleitemcolumnwidth}\ifthenelse{\equal{#4}{}}{}{\hintstyle{#4}: }#5\end{minipage}%
\par\addvspace{#1}}
+\renewcommand*{\cvtripleitem}[7][.1em]{%
+ \begin{minipage}[t]{\tripleitemcolumnwidth}\hintstyle{#2}: #3\end{minipage}%
+ \hfill% fill of \separatorcolumnwidth
+ \begin{minipage}[t]{\tripleitemcolumnwidth}\hintstyle{#4}: #5\end{minipage}%
+ \hfill% fill of \separatorcolumnwidth
+ \begin{minipage}[t]{\tripleitemcolumnwidth}\ifthenelse{\equal{#6}{}}{}{\hintstyle{#6}: }#7\end{minipage}%
+ \par\addvspace{#1}}
+
\renewcommand*{\cvlistitem}[2][.25em]{%
- \cvitem[#1]{}{\listitemsymbol\begin{minipage}[t]{\listitemcolumnwidth}#2\end{minipage}}}
+ \cvitem[#1]{}{\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listitemcolumnwidth-\listitemsymbolspace}#2\end{minipage}}}
\renewcommand*{\cvlistdoubleitem}[3][.25em]{%
- \cvitem[#1]{}{\listitemsymbol\begin{minipage}[t]{\listdoubleitemcolumnwidth}#2\end{minipage}%
+ \cvitem[#1]{}{\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listdoubleitemcolumnwidth-\listitemsymbolspace}#2\end{minipage}%
\hfill% fill of \separatorcolumnwidth
\ifthenelse{\equal{#3}{}}%
{}%
- {\listitemsymbol\begin{minipage}[t]{\listdoubleitemcolumnwidth}#3\end{minipage}}}}
+ {\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listdoubleitemcolumnwidth-\listitemsymbolspace}#3\end{minipage}}}}
\@initializebox{\cventryyearbox}
\@initializelength{\cventrytitleboxwidth}
@@ -170,13 +184,14 @@
\recomputecvbodylengths%
\setlength{\parskip}{6\p@}}
-\renewcommand*{\makeletterclosing}{
- \@closing\\[3em]%
+\renewcommand*{\makeletterclosing}{%
+ \@closing\ifthenelse{\isundefined{\@signature}}{\\[3em]}{\\[1em]}% shrink space when signature is set
+ \ifthenelse{\isundefined{\@signature}}{}{{\@signature\\}}
{\bfseries\@firstname~\@lastname}%
\ifthenelse{\isundefined{\@enclosure}}{}{%
\\%
\vfil%
- {\color{color2}\itshape\enclname: \@enclosure}}%
+ {\color{letterclosingcolor}\itshape\enclname: \@enclosure}}%
\vfil}
diff --git a/macros/latex/contrib/moderncv/moderncvbodyv.sty b/macros/latex/contrib/moderncv/moderncvbodyv.sty
index 1f49692984..f29e57786b 100644
--- a/macros/latex/contrib/moderncv/moderncvbodyv.sty
+++ b/macros/latex/contrib/moderncv/moderncvbodyv.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvbodyv.sty'.
-%% Copyright 2015-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2015-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,13 +10,13 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvbodyv}[2022-02-21 v2.3.1 modern curriculum vitae and letter body variant: 5]
+\ProvidesPackage{moderncvbodyv}[2024-07-18 v2.4.1 modern curriculum vitae and letter body variant: 5]
%-------------------------------------------------------------------------------
% required packages
%-------------------------------------------------------------------------------
-% provides the commands for the skillmatrix as well as the command
+% provides the commands for the skillmatrix as well as the command
% \recompute@cvskillmatrix@lengths
\RequirePackage[moderncvbodyv]{moderncvskillmatrix}
@@ -34,9 +34,9 @@
\renewcommand*{\hintfont}{\bfseries}
% styles
-\renewcommand*{\sectionstyle}[1]{{\sectionfont\textcolor{color1}{#1}}}
-\renewcommand*{\subsectionstyle}[1]{{\subsectionfont\textcolor{color1}{#1}}}
-\renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{color0}{#1}}}
+\renewcommand*{\sectionstyle}[1]{{\sectionfont\textcolor{sectioncolor}{#1}}}
+\renewcommand*{\subsectionstyle}[1]{{\subsectionfont\textcolor{subsectioncolor}{#1}}}
+\renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{hintstylecolor}{#1}}}
% lengths
% used by \cvitem (and all children command)
@@ -46,6 +46,8 @@
\@initializelength{\maincolumnwidth}
% used by \cvdoubleitem
\@initializelength{\doubleitemcolumnwidth}
+% used by \cvtripleitem
+\@initializelength{\tripleitemcolumnwidth}
% used by \cvlistitem
\@initializelength{\listitemsymbolwidth} \settowidth{\listitemsymbolwidth}{\listitemsymbol}
\@initializelength{\listitemcolumnwidth}
@@ -53,6 +55,7 @@
% used by \cvlistdoubleitem
\@initializelength{\listdoubleitemcolumnwidth}
%\@initializelength{\listdoubleitemmaincolumnwidth}
+\@initializelength{\listitemsymbolspace} \setlength{\listitemsymbolspace}{0pt}
% commands
\@initializecommand{\recomputecvbodylengths}{%
@@ -61,6 +64,8 @@
\setlength{\listitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth}%
\setlength{\doubleitemcolumnwidth}{\maincolumnwidth-\separatorcolumnwidth}%
\setlength{\doubleitemcolumnwidth}{0.5\doubleitemcolumnwidth}%
+ \setlength{\tripleitemcolumnwidth}{\maincolumnwidth-2\separatorcolumnwidth}%
+ \setlength{\tripleitemcolumnwidth}{0.33\tripleitemcolumnwidth}%
\setlength{\listdoubleitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth-\separatorcolumnwidth-\listitemsymbolwidth}%
\setlength{\listdoubleitemcolumnwidth}{0.5\listdoubleitemcolumnwidth}%
\recompute@cvskillmatrix@lengths
@@ -72,7 +77,8 @@
\addvspace{2.5ex}%
\phantomsection{}% reset the anchor for hyperrefs
\addcontentsline{toc}{section}{#2}%
- \noindent\rlap{\@cvitem{\raggedleft\sectionstyle{#2}}{}}%
+ % minipage for correct spacing with multiline sections #69
+ \noindent\rlap{\@cvitem{\begin{minipage}[t][1ex]{\hintscolumnwidth}\raggedleft\sectionstyle{#2}\end{minipage}}{}}%
\nobreak\@afterheading\@aftersectiontrue\ignorespaces}
%\@initializeif{\if@aftersubsection}\@aftersubsectionfalse%
@@ -83,7 +89,8 @@
\par\ignorespaces\fi%
\phantomsection{}% reset the anchor for hyperrefs
\addcontentsline{toc}{subsection}{#2}%
- \noindent\rlap{\@cvitem{\if@aftersection\else\@moderncvstrut{4pt}{24pt}\fi\raggedleft\subsectionstyle{#2}}{}}%
+ % minipage for correct spacing with multiline subsections #69
+ \noindent\rlap{\@cvitem{\begin{minipage}[t][1ex]{\hintscolumnwidth}\if@aftersection\else\@moderncvstrut{4pt}{24pt}\fi\raggedleft\subsectionstyle{#2}\end{minipage}}{}}%
\nobreak\@afterheading\@aftersectiontrue\ignorespaces}
\renewcommand*{\cvitem}[3][.5ex]{%
@@ -99,7 +106,7 @@
% underlying command to implement \cvitem, \subsection and \section
\newcommand*{\@cvitem}[3][.5ex]{%
- \arrayrulecolor{color1}%
+ \arrayrulecolor{bodyrulecolor}%
\setlength\arrayrulewidth{\separatorrulewidth}%
\if@aftersection\else%
\vspace*{-\separatorrulewidth}\fi% HACK; I don't understand where the space is coming from, nor what it's exact value is :(
@@ -117,15 +124,23 @@
\hfill% fill of \separatorcolumnwidth
\begin{minipage}[t]{\doubleitemcolumnwidth}\ifthenelse{\equal{#4}{}}{}{\hintstyle{#4}: }#5\end{minipage}}}
+\renewcommand*{\cvtripleitem}[7][.1ex]{%
+ \@cvitem[#1]{}{%
+ \begin{minipage}[t]{\tripleitemcolumnwidth}\hintstyle{#2}: #3\end{minipage}%
+ \hfill% fill of \separatorcolumnwidth
+ \begin{minipage}[t]{\tripleitemcolumnwidth}\hintstyle{#4}: #5\end{minipage}%
+ \hfill% fill of \separatorcolumnwidth
+ \begin{minipage}[t]{\tripleitemcolumnwidth}\ifthenelse{\equal{#6}{}}{}{\hintstyle{#6}: }#7\end{minipage}}}
+
\renewcommand*{\cvlistitem}[2][.5ex]{%
- \@cvitem[#1]{}{\listitemsymbol\begin{minipage}[t]{\listitemcolumnwidth}#2\end{minipage}}}
+ \@cvitem[#1]{}{\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listitemcolumnwidth-\listitemsymbolspace}#2\end{minipage}}}
\renewcommand*{\cvlistdoubleitem}[3][.5ex]{%
- \@cvitem[#1]{}{\listitemsymbol\begin{minipage}[t]{\listdoubleitemcolumnwidth}#2\end{minipage}%
+ \@cvitem[#1]{}{\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listdoubleitemcolumnwidth-\listitemsymbolspace}#2\end{minipage}%
\hfill% fill of \separatorcolumnwidth
\ifthenelse{\equal{#3}{}}%
{}%
- {\listitemsymbol\begin{minipage}[t]{\listdoubleitemcolumnwidth}#3\end{minipage}}}}
+ {\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listdoubleitemcolumnwidth-\listitemsymbolspace}#3\end{minipage}}}}
\@initializebox{\cventryyearbox}
\@initializelength{\cventrytitleboxwidth}
@@ -165,7 +180,7 @@
{%
\bibliographyhead{\refname}%
% \small%
- \arrayrulecolor{color1}%
+ \arrayrulecolor{bodyrulecolor}%
\setlength\arrayrulewidth{\separatorrulewidth}%
\noindent%
\begin{tabular}[t]{@{}p{\hintscolumnwidth}@{\hspace{\separatorcolumnwidth}}|@{\hspace{\separatorcolumnwidth}}p{\maincolumnwidth}@{}}%
@@ -206,13 +221,14 @@
\recomputecvbodylengths%
\setlength{\parskip}{6\p@}}
-\renewcommand*{\makeletterclosing}{
- \@closing\\[3em]%
+\renewcommand*{\makeletterclosing}{%
+ \@closing\ifthenelse{\isundefined{\@signature}}{\\[3em]}{\\[1em]}% shrink space when signature is set
+ \ifthenelse{\isundefined{\@signature}}{}{{\@signature\\}}
{\bfseries \@firstname~\@lastname}%
\ifthenelse{\isundefined{\@enclosure}}{}{%
\\%
\vfill%
- {\color{color2}\itshape\enclname: \@enclosure}}}
+ {\color{letterclosingcolor}\itshape\enclname: \@enclosure}}}
\endinput
diff --git a/macros/latex/contrib/moderncv/moderncvbodyvi.sty b/macros/latex/contrib/moderncv/moderncvbodyvi.sty
new file mode 100644
index 0000000000..76e1a15c3a
--- /dev/null
+++ b/macros/latex/contrib/moderncv/moderncvbodyvi.sty
@@ -0,0 +1,203 @@
+%% start of file `moderncvbodyvi.sty'.
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com).
+%% Copyright 2023 Javier Lopez-Gomez (javier.lopez.gomez@proton.me).
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License version 1.3c,
+% available at http://www.latex-project.org/lppl/.
+
+
+%-------------------------------------------------------------------------------
+% identification
+%-------------------------------------------------------------------------------
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{moderncvbodyvi}[2023/11/21 v2.0.0 modern curriculum vitae and letter body variant: 6]
+
+
+%-------------------------------------------------------------------------------
+% required packages
+%-------------------------------------------------------------------------------
+\RequirePackage{moderncvverticaltimeline}
+% No customization currently exists for `modercvbodyvi`; just reuse
+% `moderncvbodyi`. We might consider supporting a short table format (only skill
+% name and rating) in the future.
+\RequirePackage[moderncvbodyi,circle]{moderncvskillmatrix}
+
+
+%-------------------------------------------------------------------------------
+% overall body definition
+%-------------------------------------------------------------------------------
+% fonts
+\renewcommand*{\sectionfont}{\Large\upshape\bfseries}
+\renewcommand*{\subsectionfont}{\large\mdseries\upshape}
+\renewcommand*{\hintfont}{}
+
+% styles
+\renewcommand*{\sectionstyle}[1]{{\sectionfont\textcolor{color1}{#1}}}
+\renewcommand*{\subsectionstyle}[1]{{\subsectionfont\textcolor{color1}{#1}}}
+\renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{color0}{#1}}}
+
+
+%-------------------------------------------------------------------------------
+% resume body definition
+%-------------------------------------------------------------------------------
+% lengths
+% used by \cvitem (and all children command)
+\@initializelength{\hintscolumnwidth} \setlength{\hintscolumnwidth}{0.175\textwidth}
+\@initializelength{\separatorcolumnwidth} \setlength{\separatorcolumnwidth}{0.025\textwidth}
+\@initializelength{\maincolumnwidth}
+% used by \cvdoubleitem
+\@initializelength{\doubleitemcolumnwidth}
+% used by \cvtripleitem
+\@initializelength{\tripleitemcolumnwidth}
+% used by \cvlistitem
+\@initializelength{\listitemsymbolwidth} \settowidth{\listitemsymbolwidth}{\listitemsymbol}
+\@initializelength{\listitemcolumnwidth}
+% used by \cvlistdoubleitem
+\@initializelength{\listdoubleitemcolumnwidth}
+\@initializelength{\listitemsymbolspace} \setlength{\listitemsymbolspace}{0pt}
+% default moderncv \photo (change the definition such that by default the photo and its box align with the section bars
+\RenewDocumentCommand{\photo}{O{\hintscolumnwidth-0.8pt-2\fboxsep}O{0.4pt}m}{\def\@photowidth{#1}\def\@photoframewidth{#2}\def\@photo{#3}}%
+
+% commands
+\renewcommand*{\recomputecvbodylengths}{%
+ % body lengths
+ \setlength{\maincolumnwidth}{\textwidth-\leftskip-\rightskip-\separatorcolumnwidth-\hintscolumnwidth}%
+ \setlength{\listitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth}%
+ \setlength{\doubleitemcolumnwidth}{\maincolumnwidth-\hintscolumnwidth-\separatorcolumnwidth-\separatorcolumnwidth}%
+ \setlength{\doubleitemcolumnwidth}{0.5\doubleitemcolumnwidth}%
+ \setlength{\tripleitemcolumnwidth}{\maincolumnwidth-2\hintscolumnwidth-3\separatorcolumnwidth}%
+ \setlength{\tripleitemcolumnwidth}{0.33\tripleitemcolumnwidth}%
+ \setlength{\listdoubleitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth-\separatorcolumnwidth-\listitemsymbolwidth}%
+ \setlength{\listdoubleitemcolumnwidth}{0.5\listdoubleitemcolumnwidth}%
+ \recompute@cvskillmatrix@lengths
+ % regular lengths
+ \setlength{\parskip}{0\p@}}
+
+\@initializelength{\baseletterheight}
+\settoheight{\baseletterheight}{\sectionstyle{o}}
+\setlength{\baseletterheight}{\baseletterheight-0.95ex}
+% The optional argument can be used to place a small icon near the section name.
+% E.g. `\section[\faBookmark]{Education}`
+\RenewDocumentCommand{\section}{sO{}m}{%
+ \tl@resetchain%
+ \par\addvspace{2.5ex}%
+ \phantomsection{}% reset the anchor for hyperrefs
+ \addcontentsline{toc}{section}{#3}%
+ \strut\sectionstyle{\textcolor{color1!55!white}{{#2}\rule{.75ex}{0pt}\rule{1pt}{\heightof{#3}}}%
+ \rule{.75ex}{0pt}#3}%
+ \par\nobreak\addvspace{1ex}\@afterheading}% to avoid a pagebreak after the heading
+
+\RenewDocumentCommand{\subsection}{sm}{%
+ \par\addvspace{1ex}%
+ \phantomsection{}% reset the anchor for hyperrefs
+ \addcontentsline{toc}{subsection}{#2}%
+ \cvitem[0ex]{}{\strut\subsectionstyle{#2}}%
+ \par\nobreak\addvspace{.5ex}\@afterheading}% to avoid a pagebreak after the heading
+
+\renewcommand*{\cvitem}[3][.25em]{%
+ \begin{tabular}{@{}p{\hintscolumnwidth}@{\hspace{\separatorcolumnwidth}}p{\maincolumnwidth}@{}}%
+ \raggedleft\hintstyle{#2} &{#3}%
+ \end{tabular}%
+ \par\addvspace{#1}}
+
+\renewcommand*{\cvdoubleitem}[5][.25em]{%
+ \cvitem[#1]{#2}{%
+ \begin{minipage}[t]{\doubleitemcolumnwidth}#3\end{minipage}%
+ \hfill% fill of \separatorcolumnwidth
+ \begin{minipage}[t]{\hintscolumnwidth}\raggedleft\hintstyle{#4}\end{minipage}%
+ \hspace*{\separatorcolumnwidth}%
+ \begin{minipage}[t]{\doubleitemcolumnwidth}#5\end{minipage}}}
+
+\renewcommand*{\cvtripleitem}[7][.1em]{%
+ \cvitem[#1]{#2}{%
+ \begin{minipage}[t]{\tripleitemcolumnwidth}#3\end{minipage}%
+ \hfill% fill of \separatorcolumnwidth
+ \begin{minipage}[t]{\hintscolumnwidth}\raggedleft\hintstyle{#4}\end{minipage}%
+ \hspace*{\separatorcolumnwidth}%
+ \begin{minipage}[t]{\tripleitemcolumnwidth}#5\end{minipage}%
+ \hspace*{\separatorcolumnwidth}%
+ \begin{minipage}[t]{\hintscolumnwidth}\raggedleft\hintstyle{#6}\end{minipage}%
+ \hspace*{\separatorcolumnwidth}%
+ \begin{minipage}[t]{\tripleitemcolumnwidth}#7\end{minipage}}}
+
+\renewcommand*{\cvlistitem}[2][.25em]{%
+ \cvitem[#1]{}{\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listitemcolumnwidth-\listitemsymbolspace}#2\end{minipage}}}
+
+\renewcommand*{\cvlistdoubleitem}[3][.25em]{%
+ \cvitem[#1]{}{\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listdoubleitemcolumnwidth-\listitemsymbolspace}#2\end{minipage}%
+ \hfill% fill of \separatorcolumnwidth
+ \ifthenelse{\equal{#3}{}}%
+ {}%
+ {\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listdoubleitemcolumnwidth-\listitemsymbolspace}#3\end{minipage}}}}
+
+\renewcommand*{\cventry}[7][.25em]{%
+ \cvitem[#1]{\tl@milestone{#2}}{%
+ {\bfseries#3}%
+ \ifthenelse{\equal{#4}{}}{}{, {\slshape#4}}%
+ \ifthenelse{\equal{#5}{}}{}{, #5}%
+ \ifthenelse{\equal{#6}{}}{}{, #6}%
+ \strut%
+ \ifx&#7&%
+ \else{\newline{}\begin{minipage}[t]{\linewidth}\small#7\end{minipage}}\fi}}
+
+\@initializebox{\cvitemwithcommentbox}
+\@initializelength{\cvitemwithcommentskilllength}
+\@initializelength{\cvitemwithcommentcommentlength}
+\renewcommand*{\cvitemwithcomment}[4][.25em]{%
+ \savebox{\cvitemwithcommentbox}{{#3}}%
+ \setlength{\cvitemwithcommentskilllength}{\widthof{\usebox{\cvitemwithcommentbox}}}%
+ \setlength{\cvitemwithcommentcommentlength}{\maincolumnwidth-\separatorcolumnwidth-\cvitemwithcommentskilllength}%
+ \cvitem[#1]{#2}{%
+ \begin{minipage}[t]{\cvitemwithcommentskilllength}\usebox{\cvitemwithcommentbox}\end{minipage}%
+ \hfill% fill of \separatorcolumnwidth
+ \begin{minipage}[t]{\cvitemwithcommentcommentlength}\raggedleft\small\itshape#4\end{minipage}}}
+
+\renewenvironment{thebibliography}[1]%
+ {%
+ \bibliographyhead{\refname}%
+% \small%
+ \begin{list}{\bibliographyitemlabel}%
+ {%
+ \setlength{\topsep}{0pt}%
+ \setlength{\labelwidth}{\hintscolumnwidth}%
+ \setlength{\labelsep}{\separatorcolumnwidth}%
+ \leftmargin\labelwidth%
+ \advance\leftmargin\labelsep%
+ \@openbib@code%
+ \usecounter{enumiv}%
+ \let\p@enumiv\@empty%
+ \renewcommand\theenumiv{\@arabic\c@enumiv}}%
+ \sloppy%
+ \clubpenalty4000%\@clubpenalty \clubpenalty%
+ \widowpenalty4000%
+ \sfcode`\.\@m%
+ \sfcode `\=1000\relax}%
+ {%
+ \def\@noitemerr{\@latex@warning{Empty `thebibliography' environment}}%
+ \end{list}}
+
+
+%-------------------------------------------------------------------------------
+% letter style definition
+%-------------------------------------------------------------------------------
+% commands
+\renewcommand*{\recomputeletterbodylengths}{%
+ \recomputecvlengths%
+ \setlength{\parskip}{6\p@}}
+
+\renewcommand*{\makeletterclosing}{
+ \@closing\ifthenelse{\isundefined{\@signature}}{\\[3em]}{\\[1em]}% shrink space when signature is set
+ \ifthenelse{\isundefined{\@signature}}{}{{\@signature\\}}
+ {\bfseries\@firstname~\@lastname}%
+ \ifthenelse{\isundefined{\@enclosure}}{}{%
+ \\%
+ \vfil%
+ {\color{color2}\itshape\enclname: \@enclosure}}%
+ \vfil}
+
+
+\endinput
+
+
+%% end of file `moderncvbodyvi.sty'.
diff --git a/macros/latex/contrib/moderncv/moderncvcollection.sty b/macros/latex/contrib/moderncv/moderncvcollection.sty
index 5d3432e661..bddc9a5177 100644
--- a/macros/latex/contrib/moderncv/moderncvcollection.sty
+++ b/macros/latex/contrib/moderncv/moderncvcollection.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvcollection.sty'.
-%% Copyright 2013-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2013-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvcollection}[2022-02-21 v2.3.1 moderncv collections]
+\ProvidesPackage{moderncvcollection}[2024-07-18 v2.4.1 moderncv collections]
%-------------------------------------------------------------------------------
diff --git a/macros/latex/contrib/moderncv/moderncvcolorblack.sty b/macros/latex/contrib/moderncv/moderncvcolorblack.sty
index ea3653eace..29ba5bd410 100644
--- a/macros/latex/contrib/moderncv/moderncvcolorblack.sty
+++ b/macros/latex/contrib/moderncv/moderncvcolorblack.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvcolorblack.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,15 +10,17 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvcolorblack}[2022-02-21 v2.3.1 modern curriculum vitae and letter color scheme: black]
+\ProvidesPackage{moderncvcolorblack}[2024-07-18 v2.4.1 modern curriculum vitae and letter color scheme: black]
%-------------------------------------------------------------------------------
% color scheme definition
%-------------------------------------------------------------------------------
-\definecolor{color0}{rgb}{0,0,0}% black
-\definecolor{color1}{rgb}{0,0,0}% black
-\definecolor{color2}{rgb}{0,0,0}% black
+\input{moderncvcolors.tex}
+
+\colorlet{color0}{black}% black
+\colorlet{color1}{black}% black
+\colorlet{color2}{black}% black
\endinput
diff --git a/macros/latex/contrib/moderncv/moderncvcolorblue.sty b/macros/latex/contrib/moderncv/moderncvcolorblue.sty
index b02992e1b3..779b3be956 100644
--- a/macros/latex/contrib/moderncv/moderncvcolorblue.sty
+++ b/macros/latex/contrib/moderncv/moderncvcolorblue.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvcolorblue.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,15 +10,17 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvcolorblue}[2022-02-21 v2.3.1 modern curriculum vitae and letter color scheme: blue]
+\ProvidesPackage{moderncvcolorblue}[2024-07-18 v2.4.1 modern curriculum vitae and letter color scheme: blue]
%-------------------------------------------------------------------------------
% color scheme definition
%-------------------------------------------------------------------------------
-\definecolor{color0}{rgb}{0,0,0}% black
-\definecolor{color1}{rgb}{0.22,0.45,0.70}% light blue
-\definecolor{color2}{rgb}{0.45,0.45,0.45}% dark grey
+\input{moderncvcolors.tex}
+
+\colorlet{color0}{black}% black
+\colorlet{color1}{lightblue}% light blue
+\colorlet{color2}{darkgrey}% dark grey
\endinput
diff --git a/macros/latex/contrib/moderncv/moderncvcolorburgundy.sty b/macros/latex/contrib/moderncv/moderncvcolorburgundy.sty
index 775f033f23..aeeccf5ef6 100644
--- a/macros/latex/contrib/moderncv/moderncvcolorburgundy.sty
+++ b/macros/latex/contrib/moderncv/moderncvcolorburgundy.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvcolorburgundy.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,15 +10,17 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvcolorburgundy}[2022-02-21 v2.3.1 modern curriculum vitae and letter color scheme: burgundy]
+\ProvidesPackage{moderncvcolorburgundy}[2024-07-18 v2.4.1 modern curriculum vitae and letter color scheme: burgundy]
%-------------------------------------------------------------------------------
% color scheme definition
%-------------------------------------------------------------------------------
-\definecolor{color0}{rgb}{0,0,0}% black
-\definecolor{color1}{rgb}{0.596078,0,0}% burgundy: 139/255 (0.545098) or 152/255 (0.596078)
-\definecolor{color2}{rgb}{0.45,0.45,0.45}% dark grey
+\input{moderncvcolors.tex}
+
+\colorlet{color0}{black}% black
+\colorlet{color1}{burgundy}% burgundy
+\colorlet{color2}{darkgrey}% dark grey
\endinput
diff --git a/macros/latex/contrib/moderncv/moderncvcolorcerulean.sty b/macros/latex/contrib/moderncv/moderncvcolorcerulean.sty
new file mode 100644
index 0000000000..1f7cce83c7
--- /dev/null
+++ b/macros/latex/contrib/moderncv/moderncvcolorcerulean.sty
@@ -0,0 +1,32 @@
+%% start of file `moderncvcolorcerulean.sty'.
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com).
+%% Copyright 2023 Javier Lopez-Gomez (javier.lopez.gomez@proton.me).
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License version 1.3c,
+% available at http://www.latex-project.org/lppl/.
+
+
+%-------------------------------------------------------------------------------
+% identification
+%-------------------------------------------------------------------------------
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{moderncvcolorcerulean}[2023/11/21 v2.0.0 modern curriculum vitae and letter color scheme: cerulean]
+
+
+%-------------------------------------------------------------------------------
+% color scheme definition
+%-------------------------------------------------------------------------------
+\definecolor{color0}{rgb}{0,0,0}% black
+\definecolor{color1}{HTML}{0081a7}% cerulean
+\definecolor{color2}{HTML}{4d908e}% dark cyan
+\definecolor{headTL}{HTML}{00afb9}% verdigris
+\colorlet{headBR}{color1}
+\definecolor{headtext}{HTML}{ffffff}% white
+\colorlet{headhr}{color2}
+
+
+\endinput
+
+
+%% end of file `moderncvcolorcerulean.sty'.
diff --git a/macros/latex/contrib/moderncv/moderncvcolorgreen.sty b/macros/latex/contrib/moderncv/moderncvcolorgreen.sty
index 891c3290b5..03c026ea07 100644
--- a/macros/latex/contrib/moderncv/moderncvcolorgreen.sty
+++ b/macros/latex/contrib/moderncv/moderncvcolorgreen.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvcolorgreen.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,15 +10,17 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvcolorgreen}[2022-02-21 v2.3.1 modern curriculum vitae and letter color scheme: green]
+\ProvidesPackage{moderncvcolorgreen}[2024-07-18 v2.4.1 modern curriculum vitae and letter color scheme: green]
%-------------------------------------------------------------------------------
% color scheme definition
%-------------------------------------------------------------------------------
-\definecolor{color0}{rgb}{0,0,0}% black
-\definecolor{color1}{rgb}{0.35,0.70,0.30}% green
-\definecolor{color2}{rgb}{0.45,0.45,0.45}% dark grey
+\input{moderncvcolors.tex}
+
+\colorlet{color0}{black}% black
+\colorlet{color1}{green}% green
+\colorlet{color2}{darkgrey}% dark grey
\endinput
diff --git a/macros/latex/contrib/moderncv/moderncvcolorgrey.sty b/macros/latex/contrib/moderncv/moderncvcolorgrey.sty
index 37d2b57749..6bd9184c0e 100644
--- a/macros/latex/contrib/moderncv/moderncvcolorgrey.sty
+++ b/macros/latex/contrib/moderncv/moderncvcolorgrey.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvcolorgrey.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,15 +10,17 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvcolorgrey}[2022-02-21 v2.3.1 modern curriculum vitae and letter color scheme: grey]
+\ProvidesPackage{moderncvcolorgrey}[2024-07-18 v2.4.1 modern curriculum vitae and letter color scheme: grey]
%-------------------------------------------------------------------------------
% color scheme definition
%-------------------------------------------------------------------------------
-\definecolor{color0}{rgb}{0,0,0}% black
-\definecolor{color1}{rgb}{0.55,0.55,0.55}% dark grey
-\definecolor{color2}{rgb}{0.55,0.55,0.55}% dark grey
+\input{moderncvcolors.tex}
+
+\colorlet{color0}{black}% black
+\colorlet{color1}{darkgrey}% dark grey
+\colorlet{color2}{darkgrey}% dark grey
\endinput
diff --git a/macros/latex/contrib/moderncv/moderncvcolororange.sty b/macros/latex/contrib/moderncv/moderncvcolororange.sty
index f249fd7de9..c4f612ab6d 100644
--- a/macros/latex/contrib/moderncv/moderncvcolororange.sty
+++ b/macros/latex/contrib/moderncv/moderncvcolororange.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvcolororange.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,15 +10,17 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvcolororange}[2022-02-21 v2.3.1 modern curriculum vitae and letter color scheme: orange]
+\ProvidesPackage{moderncvcolororange}[2024-07-18 v2.4.1 modern curriculum vitae and letter color scheme: orange]
%-------------------------------------------------------------------------------
% color scheme definition
%-------------------------------------------------------------------------------
-\definecolor{color0}{rgb}{0,0,0}% black
-\definecolor{color1}{rgb}{0.95,0.55,0.15}% orange
-\definecolor{color2}{rgb}{0.45,0.45,0.45}% dark grey
+\input{moderncvcolors.tex}
+
+\colorlet{color0}{black}% black
+\colorlet{color1}{orange}% orange
+\colorlet{color2}{darkgrey}% dark grey
\endinput
diff --git a/macros/latex/contrib/moderncv/moderncvcolorpurple.sty b/macros/latex/contrib/moderncv/moderncvcolorpurple.sty
index 22053d7849..d0110526f1 100644
--- a/macros/latex/contrib/moderncv/moderncvcolorpurple.sty
+++ b/macros/latex/contrib/moderncv/moderncvcolorpurple.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvcolorpurple.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,15 +10,17 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvcolorpurple}[2022-02-21 v2.3.1 modern curriculum vitae and letter color scheme: purple]
+\ProvidesPackage{moderncvcolorpurple}[2024-07-18 v2.4.1 modern curriculum vitae and letter color scheme: purple]
%-------------------------------------------------------------------------------
% color scheme definition
%-------------------------------------------------------------------------------
-\definecolor{color0}{rgb}{0,0,0}% black
-\definecolor{color1}{rgb}{0.50,0.33,0.80}% purple
-\definecolor{color2}{rgb}{0.45,0.45,0.45}% dark grey
+\input{moderncvcolors.tex}
+
+\colorlet{color0}{black}% black
+\colorlet{color1}{purple}% purple
+\colorlet{color2}{darkgrey}% dark grey
\endinput
diff --git a/macros/latex/contrib/moderncv/moderncvcolorred.sty b/macros/latex/contrib/moderncv/moderncvcolorred.sty
index 68b1335c84..bc51d4adf5 100644
--- a/macros/latex/contrib/moderncv/moderncvcolorred.sty
+++ b/macros/latex/contrib/moderncv/moderncvcolorred.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvcolorred.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,15 +10,17 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvcolorred}[2022-02-21 v2.3.1 modern curriculum vitae and letter color scheme: red]
+\ProvidesPackage{moderncvcolorred}[2024-07-18 v2.4.1 modern curriculum vitae and letter color scheme: red]
%-------------------------------------------------------------------------------
% color scheme definition
%-------------------------------------------------------------------------------
-\definecolor{color0}{rgb}{0,0,0}% black
-\definecolor{color1}{rgb}{0.95,0.20,0.20}% red
-\definecolor{color2}{rgb}{0.45,0.45,0.45}% dark grey
+\input{moderncvcolors.tex}
+
+\colorlet{color0}{black}% black
+\colorlet{color1}{red}% red
+\colorlet{color2}{darkgrey}% dark grey
\endinput
diff --git a/macros/latex/contrib/moderncv/moderncvcolors.tex b/macros/latex/contrib/moderncv/moderncvcolors.tex
new file mode 100644
index 0000000000..7f840ff059
--- /dev/null
+++ b/macros/latex/contrib/moderncv/moderncvcolors.tex
@@ -0,0 +1,35 @@
+%-------------------------------------------------------------------------------
+% built-in colors
+%-------------------------------------------------------------------------------
+
+\definecolor{black}{RGB}{0, 0, 0}
+\definecolor{red}{rgb}{0.95, 0.20, 0.20}
+\definecolor{darkgrey}{rgb}{0.45, 0.45, 0.45}
+\definecolor{orange}{rgb}{0.95, 0.55, 0.15}
+\definecolor{burgundy}{rgb}{0.596078, 0, 0}% 139/255 (0.545098) or 152/255 (0.596078)
+\definecolor{purple}{rgb}{0.50, 0.33, 0.80}
+\definecolor{lightblue}{rgb}{0.22, 0.45, 0.70}
+\definecolor{green}{rgb}{0.35, 0.70, 0.30}
+
+%-------------------------------------------------------------------------------
+% default colors
+%-------------------------------------------------------------------------------
+
+\@ifundefined{\string\color@default-socialicon-color}{\colorlet{default-socialicon-color}{darkgrey}}{}
+
+%-------------------------------------------------------------------------------
+% colors for social icons
+%-------------------------------------------------------------------------------
+
+% \definecolor{weixin}{rgb}{.184, .533, .098}
+% \definecolor{linkedin}{HTML}{0a66c2}
+% \definecolor{orcid}{HTML}{a6ce39}
+% \definecolor{twitter}{RGB}{29, 155, 240}
+% \definecolor{facebook}{HTML}{1b74e4}
+% TODO: add more colors
+
+%-------------------------------------------------------------------------------
+% custom colors
+%-------------------------------------------------------------------------------
+
+% \definecolor{tsinghua}{HTML}{791CB5}
diff --git a/macros/latex/contrib/moderncv/moderncvcompatibility.sty b/macros/latex/contrib/moderncv/moderncvcompatibility.sty
index fb9a8c4363..e8e0af713f 100644
--- a/macros/latex/contrib/moderncv/moderncvcompatibility.sty
+++ b/macros/latex/contrib/moderncv/moderncvcompatibility.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvcompatibility.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvcompatibility}[2022-02-21 v2.3.1 modern curriculum vitae and letter compatibility patches]
+\ProvidesPackage{moderncvcompatibility}[2024-07-18 v2.4.1 modern curriculum vitae and letter compatibility patches]
%-------------------------------------------------------------------------------
diff --git a/macros/latex/contrib/moderncv/moderncvdebugtools.sty b/macros/latex/contrib/moderncv/moderncvdebugtools.sty
index b28e409b54..c19651ab05 100644
--- a/macros/latex/contrib/moderncv/moderncvdebugtools.sty
+++ b/macros/latex/contrib/moderncv/moderncvdebugtools.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvdebugtools.sty'.
-%% Copyright 2013-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2013-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvdebugtools}[2022-02-21 v2.3.1 modern curriculum vitae and letter debug tools]
+\ProvidesPackage{moderncvdebugtools}[2024-07-18 v2.4.1 modern curriculum vitae and letter debug tools]
%-------------------------------------------------------------------------------
@@ -32,7 +32,7 @@
\begin{tikzpicture}[remember picture,overlay]
\begin{pgfonlayer}{background}
\coordinate (a\thedebugrule);
- \draw[red,thin,#1]
+ \draw[red,thin,#1]
([xshift=#2]a\thedebugrule|-current page.north) -- ([xshift=#2]a\thedebugrule|-current page.south);
\end{pgfonlayer}
\end{tikzpicture}}
@@ -42,7 +42,7 @@
\begin{tikzpicture}[remember picture,overlay]
\begin{pgfonlayer}{background}
\coordinate (b\thedebugrule);
- \draw[red,thin,#1]
+ \draw[red,thin,#1]
([yshift=#2]b\thedebugrule-|current page.west) -- ([yshift=#2]b\thedebugrule-|current page.east);
\end{pgfonlayer}
\end{tikzpicture}}
diff --git a/macros/latex/contrib/moderncv/moderncvfooti.sty b/macros/latex/contrib/moderncv/moderncvfooti.sty
index 370365848f..f1de51a44e 100644
--- a/macros/latex/contrib/moderncv/moderncvfooti.sty
+++ b/macros/latex/contrib/moderncv/moderncvfooti.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvfooti.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvfooti}[2022-02-21 v2.3.1 modern curriculum vitae and letter footer variant: 1]
+\ProvidesPackage{moderncvfooti}[2024-07-18 v2.4.1 modern curriculum vitae and letter footer variant: 1]
%-------------------------------------------------------------------------------
@@ -79,7 +79,7 @@
\fancyfoot[c]{%
\parbox[b]{\footwidth}{%
\centering%
- \color{color2}\addressfont%
+ \color{addresscolor}\addressfont%
\vspace{\baselineskip}% forces a white line to ensure space between main text and footer (as footer height can't be known in advance)
\ifthenelse{\isundefined{\@addressstreet}}{}{\addtofoot[]{\addresssymbol\@addressstreet}%
\ifthenelse{\equal{\@addresscity}{}}{}{\addtofoot[~--~]{\@addresscity}}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty
@@ -89,7 +89,8 @@
\collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
\addtofoot{\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}%
\ifthenelse{\isundefined{\@email}}{}{\addtofoot{\emailsymbol\emaillink{\@email}}}%
- \ifthenelse{\isundefined{\@homepage}}{}{\addtofoot{\homepagesymbol\httpslink{\@homepage}}}%
+ \ifthenelse{\isundefined{\@homepage}}{}{\addtofoot{\homepagesymbol%
+ \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}}%
\collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
\addtofoot{\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}}%
\ifthenelse{\isundefined{\@extrainfo}}{}{\addtofoot{\@extrainfo}}%
@@ -109,7 +110,7 @@
\fancyfoot[c]{%
\parbox[b]{\footwidth}{%
\centering%
- \addressfont\color{color2}%
+ \addressfont\color{addresscolor}%
\vspace{\baselineskip}% forces a white line to ensure space between main text and footer (as footer height can't be known in advance)
\vspace{-\baselineskip}% to cancel out the extra vertical space taken by the name (below) and ensure perfect alignment of letter and cv footers
\strut{\bfseries\upshape\@firstname~\@lastname}\\% the \strut is required to ensure the line is exactly \baselineskip tall
@@ -121,7 +122,8 @@
\collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
\addtofoot{\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}%
\ifthenelse{\isundefined{\@email}}{}{\addtofoot{\emailsymbol\emaillink{\@email}}}%
- \ifthenelse{\isundefined{\@homepage}}{}{\addtofoot{\homepagesymbol\httpslink{\@homepage}}}%
+ \ifthenelse{\isundefined{\@homepage}}{}{\addtofoot{\homepagesymbol%
+ \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}}%
\collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
\addtofoot{\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}}%
\ifthenelse{\isundefined{\@extrainfo}}{}{\addtofoot{\@extrainfo}}%
diff --git a/macros/latex/contrib/moderncv/moderncvheadi.sty b/macros/latex/contrib/moderncv/moderncvheadi.sty
index 087cf776e2..9dfb35a06c 100644
--- a/macros/latex/contrib/moderncv/moderncvheadi.sty
+++ b/macros/latex/contrib/moderncv/moderncvheadi.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvheadi.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvheadi}[2022-02-21 v2.3.1 modern curriculum vitae and letter header variant: 1]
+\ProvidesPackage{moderncvheadi}[2024-07-18 v2.4.1 modern curriculum vitae and letter header variant: 1]
% details options: "details" (default) or "nodetails"
\@initializeif{\if@details}\@detailsfalse
@@ -23,6 +23,11 @@
\@initializeif{\if@right}\@rightfalse
\DeclareOption{right} {\@leftfalse\@righttrue}
+% top options: align header elements by their top instead of their bottom
+% default: bottom
+\@initializeif{\if@top}\@topfalse
+\DeclareOption{top}{\@toptrue}
+
\DeclareOption*{}% avoid choking on unknown options
\ExecuteOptions{details,left}
\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
@@ -43,10 +48,12 @@
\renewcommand*{\quotefont}{\large\slshape}
% styles
-\renewcommand*{\namestyle}[1]{{\namefont\textcolor{color0}{#1}}}
-\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{color2}{#1}}}
-\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{color2}{#1}}}
-\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{color1}{#1}}}
+\renewcommand*{\namestyle}[1]{{\namefont\textcolor{namecolor}{#1}}}
+\renewcommand*{\firstnamestyle}[1]{{\namefont\textcolor{firstnamecolor}{#1}}}
+\renewcommand*{\lastnamestyle}[1]{{\namefont\textcolor{lastnamecolor}{#1}}}
+\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{titlecolor}{#1}}}
+\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{addresscolor}{#1}}}
+\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{quotecolor}{#1}}}
%-------------------------------------------------------------------------------
@@ -72,7 +79,7 @@
\collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
\protected@edef\socialsdetails{\socialsdetails\protect\makenewline\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}}%
\savebox{\makecvheaddetailsbox}{%
- \addressfont\color{color2}%
+ \addressfont\color{addresscolor}%
\if@left\begin{tabular}[b]{@{}r@{}}\fi%
\if@right\begin{tabular}[b]{@{}l@{}}\fi%
\ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet%
@@ -81,7 +88,8 @@
\ifthenelse{\isundefined{\@born}}{}{\makenewline\bornsymbol\@born}%
\phonesdetails% needs to be pre-rendered as loops and tabulars seem to conflict
\ifthenelse{\isundefined{\@email}}{}{\makenewline\emailsymbol\emaillink{\@email}}%
- \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol\httpslink{\@homepage}}%
+ \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol%
+ \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}%
\socialsdetails% needs to be pre-rendered as loops and tabulars seem to conflict
\ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}%
\end{tabular}
@@ -94,7 +102,7 @@
{%
\if@left%
\hspace*{\separatorcolumnwidth}\fi%
- \color{color1}%
+ \color{pictureframecolor}%
\setlength{\fboxrule}{\@photoframewidth}%
\ifdim\@photoframewidth=0pt%
\setlength{\fboxsep}{0pt}\fi%
@@ -112,9 +120,14 @@
\begin{minipage}[b]{\makecvheadnamewidth}%
\if@left\raggedright\fi%
\if@right\raggedleft\fi%
- \namestyle{\@firstname\ \@lastname}%
+ \firstnamestyle{\@firstname}~\lastnamestyle{\@lastname}%
\ifthenelse{\equal{\@title}{}}{}{\\[1.25em]\titlestyle{\@title}}%
\end{minipage}}%
+ % raise boxes if top option is set
+ \if@top%
+ \savebox{\makecvheadnamebox}{\raisebox{-\height+\baselineskip}{\usebox{\makecvheadnamebox}}}%
+ \savebox{\makecvheaddetailsbox}{\raisebox{-\height+\baselineskip}{\usebox{\makecvheaddetailsbox}}}%
+ \savebox{\makecvheadpicturebox}{\raisebox{-\height+\baselineskip}{\usebox{\makecvheadpicturebox}}}\fi%
% rendering
\if@left%
\usebox{\makecvheadnamebox}%
@@ -126,11 +139,17 @@
\rlap{\usebox{\makecvheaddetailsbox}}% \llap is used to suppress the width of the box, allowing overlap if the value of makecvheadnamewidth is forced
\hfill%
\usebox{\makecvheadnamebox}\fi%
- \\[2.5em]%
% optional quote
\ifthenelse{\isundefined{\@quote}}%
- {}%
- {{\centering\begin{minipage}{\quotewidth}\centering\quotestyle{\@quote}\end{minipage}\\[2.5em]}}%
+ {\vspace{2.5em}}%
+ {%
+ \\[2.5em]%
+ {%
+ \centering%
+ \begin{minipage}{\quotewidth}%
+ \centering%
+ \quotestyle{\@quote}%
+ \end{minipage}\\[2.5em]}}%
\par}% to avoid weird spacing bug at the first section if no blank line is left after \makecvhead
@@ -150,7 +169,7 @@
% optional detailed information
\if@details%
\raggedleft%
- \addressfont\textcolor{color2}{%
+ \addressfont\textcolor{addresscolor}{%
{\bfseries\upshape\@firstname~\@lastname}\@firstdetailselementfalse%
% optional detailed information
\ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet%
@@ -159,9 +178,10 @@
\collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
\makenewline\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}%
\ifthenelse{\isundefined{\@email}}{}{\makenewline\emailsymbol\emaillink{\@email}}%
- \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol\httpslink{\@homepage}}%
+ \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol%
+ \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}%
\ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}}\fi%
- \end{minipage}\\[1em]
+ \end{minipage}\\[2em]
% recipient block
\begin{minipage}[t]{.5\textwidth}
\raggedright%
@@ -173,6 +193,8 @@
\hfill% US style
% \\[1em]% UK style
\@date\\[2em]% US informal style: "January 1, 1900"; UK formal style: "01/01/1900"
+ % optional subject
+ \ifthenelse{\isundefined{\@subject}}{}{{\bfseries\@subject\\[2em]}}
% opening
\raggedright%
\@opening\\[1.5em]%
diff --git a/macros/latex/contrib/moderncv/moderncvheadii.sty b/macros/latex/contrib/moderncv/moderncvheadii.sty
index b699242ed4..a36c8e1af4 100644
--- a/macros/latex/contrib/moderncv/moderncvheadii.sty
+++ b/macros/latex/contrib/moderncv/moderncvheadii.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvheadii.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvheadii}[2022-02-21 v2.3.1 modern curriculum vitae and letter header variant: 2]
+\ProvidesPackage{moderncvheadii}[2024-07-18 v2.4.1 modern curriculum vitae and letter header variant: 2]
% details options: "details" or "nodetails" (default)
\@initializeif{\if@details}\@detailsfalse
@@ -47,10 +47,10 @@
\renewcommand*{\quotefont}{\large\slshape}
% styles
-\renewcommand*{\namestyle}[1]{{\namefont\textcolor{color0}{#1}}}
-\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{color2}{#1}}}
-\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{color2}{#1}}}
-\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{color1}{#1}}}
+\renewcommand*{\namestyle}[1]{{\namefont\textcolor{lastnamecolor}{#1}}}
+\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{titlecolor}{#1}}}
+\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{addresscolor}{#1}}}
+\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{quotecolor}{#1}}}
% commands
\@initializecommand{\makeheaddetailssymbol}{%
@@ -110,7 +110,7 @@
\setlength\fboxrule{\@photoframewidth}%
\ifdim\@photoframewidth=0pt%
\setlength{\fboxsep}{0pt}\fi%
- {\color{color1}\framebox{\includegraphics[width=\@photowidth]{\@photo}}}}}%
+ {\color{pictureframecolor}\framebox{\includegraphics[width=\@photowidth]{\@photo}}}}}%
% name (pre-rendering)
\@initializelength{\makecvheadpicturewidth}%
\settowidth{\makecvheadpicturewidth}{\usebox{\makecvheadpicturebox}}%
@@ -121,9 +121,9 @@
\if@right\raggedleft\fi%
\namefont%
\if@alternate% alternate design: first- and lastname in lowercase with no space in between (distinction is made by color difference)
- {\color{color2!50}\MakeLowercase\@firstname}{\color{color2}\MakeLowercase\@lastname}%
+ {\color{firstnamecolor}\MakeLowercase\@firstname}{\color{lastnamecolor}\MakeLowercase\@lastname}%
\else% default design: first- and lastname as given with a space in between
- {\color{color2!50}\@firstname} {\color{color2}\@lastname}\fi}}%
+ {\color{firstnamecolor}\@firstname} {\color{lastnamecolor}\@lastname}\fi}}%
% rendering
\if@left%
\usebox{\makecvheadnamebox}%
@@ -131,11 +131,11 @@
\if@right%
\usebox{\makecvheadpicturebox}%
\usebox{\makecvheadnamebox}\fi\\[-.35em]%
- {\color{color2!50}\rule{\textwidth}{.25ex}}%
+ {\color{headrulecolor}\rule{\textwidth}{.25ex}}%
% optional detailed information
\if@details{%
\\\null%
- \addressfont\color{color2}%
+ \addressfont\color{addresscolor}%
\ifthenelse{\isundefined{\@addressstreet}}{}{\addtomakeheaddetails{\addresssymbol\@addressstreet}%
\ifthenelse{\equal{\@addresscity}{}}{}{\addtomakeheaddetails[~--~]{\@addresscity}}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty
\ifthenelse{\equal{\@addresscountry}{}}{}{\addtomakeheaddetails[~--~]{\@addresscountry}}%
@@ -144,7 +144,8 @@
\collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
\addtomakeheaddetails{\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}%
\ifthenelse{\isundefined{\@email}}{}{\addtomakeheaddetails{\emailsymbol\emaillink{\@email}}}%
- \ifthenelse{\isundefined{\@homepage}}{}{\addtomakeheaddetails{\homepagesymbol\httpslink{\@homepage}}}%
+ \ifthenelse{\isundefined{\@homepage}}{}{\addtomakeheaddetails{\homepagesymbol%
+ \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}}%
\collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
\addtomakeheaddetails{\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}}%
\ifthenelse{\isundefined{\@extrainfo}}{}{\addtomakeheaddetails{\@extrainfo}}%
@@ -157,15 +158,18 @@
\titlestyle{\MakeLowercase\@title}%
\else%
\titlestyle{\@title}\fi%
- }\\[2.5em]%
+ }
% optional quote
\ifthenelse{\isundefined{\@quote}}%
- {}%
- {{\null\hfill%
+ {\vspace{2.5em}}%
+ {%
+ \\[2.5em]%
+ {%
+ \centering%
\begin{minipage}{\quotewidth}%
\centering%
\quotestyle{\@quote}%
- \end{minipage}\hfill\null\\[2.5em]}}%
+ \end{minipage}\\[2.5em]}}%
\par}% to avoid weird spacing bug at the first section if no blank line is left after \maketitle
@@ -189,7 +193,9 @@
% date
\hfill% US style
% \\[1em]% UK style
- \@date\\[2em]% US informal style: "January 1, 1900"; UK formal style: "01/01/1900"
+ \@date\\[3em]% US informal style: "January 1, 1900"; UK formal style: "01/01/1900"
+ % optional subject
+ \ifthenelse{\isundefined{\@subject}}{}{{\bfseries\@subject\\[3em]}}
% opening
\raggedright%
\@opening\\[1.5em]%
diff --git a/macros/latex/contrib/moderncv/moderncvheadiii.sty b/macros/latex/contrib/moderncv/moderncvheadiii.sty
index e4dbafd5ae..51a3aa2444 100644
--- a/macros/latex/contrib/moderncv/moderncvheadiii.sty
+++ b/macros/latex/contrib/moderncv/moderncvheadiii.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvheadiii.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvheadiii}[2022-02-21 v2.3.1 modern curriculum vitae and letter header variant: 3]
+\ProvidesPackage{moderncvheadiii}[2024-07-18 v2.4.1 modern curriculum vitae and letter header variant: 3]
% details options: "details" (default) or "nodetails"
\@initializeif{\if@details}\@detailsfalse
@@ -36,10 +36,12 @@
\renewcommand*{\quotefont}{\large\slshape}
% styles
-\renewcommand*{\namestyle}[1]{{\namefont\textcolor{color1}{#1}}}
-\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{color2!85}{#1}}}
-\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{color2}{#1}}}
-\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{color1}{#1}}}
+\renewcommand*{\namestyle}[1]{{\namefont\textcolor{namecolor}{#1}}}
+\renewcommand*{\firstnamestyle}[1]{{\namefont\textcolor{firstnamecolor}{#1}}}
+\renewcommand*{\lastnamestyle}[1]{{\namefont\textcolor{lastnamecolor}{#1}}}
+\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{titlecolor}{#1}}}
+\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{addresscolor}{#1}}}
+\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{quotecolor}{#1}}}
% commands
\@initializecommand{\makeheaddetailssymbol}{%
@@ -81,12 +83,12 @@
\parbox{\makeheaddetailswidth}{%
\centering%
% name and title
- \namestyle{\@firstname~\@lastname}%
+ \firstnamestyle{\@firstname}~\lastnamestyle{\@lastname}%
\ifthenelse{\equal{\@title}{}}{}{\titlestyle{~|~\@title}}% \isundefined doesn't work on \@title, as LaTeX itself defines \@title (before it possibly gets redefined by \title)
% optional detailed information
\if@details{%
\\%
- \addressfont\color{color2}%
+ \addressfont\color{addresscolor}%
\ifthenelse{\isundefined{\@addressstreet}}{}{\addtomakeheaddetails{\addresssymbol\@addressstreet}%
\ifthenelse{\equal{\@addresscity}{}}{}{\addtomakeheaddetails[~--~]{\@addresscity}}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty
\ifthenelse{\equal{\@addresscountry}{}}{}{\addtomakeheaddetails[~--~]{\@addresscountry}}%
@@ -95,11 +97,12 @@
\collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
\addtomakeheaddetails{\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}%
\ifthenelse{\isundefined{\@email}}{}{\addtomakeheaddetails{\emailsymbol\emaillink{\@email}}}%
- \ifthenelse{\isundefined{\@homepage}}{}{\addtomakeheaddetails{\homepagesymbol\httpslink{\@homepage}}}%
+ \ifthenelse{\isundefined{\@homepage}}{}{\addtomakeheaddetails{\homepagesymbol%
+ \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}}%
\collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
\addtomakeheaddetails{\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}}%
\ifthenelse{\isundefined{\@extrainfo}}{}{\addtomakeheaddetails{\@extrainfo}}%
- \flushmakeheaddetails}\fi}\\[2.5em]}% need to force a \par after this to avoid weird spacing bug at the first section if no blank line is left after \makehead
+ \flushmakeheaddetails}\fi}}% need to force a \par after this to avoid weird spacing bug at the first section if no blank line is left after \makehead
%-------------------------------------------------------------------------------
@@ -117,8 +120,15 @@
\makehead%
% optional quote
\ifthenelse{\isundefined{\@quote}}%
- {}%
- {{\centering\begin{minipage}{\quotewidth}\centering\quotestyle{\@quote}\end{minipage}\\[2.5em]}}%
+ {\vspace{2.5em}}%
+ {%
+ \\[2.5em]%
+ {%
+ \centering%
+ \begin{minipage}{\quotewidth}%
+ \centering%
+ \quotestyle{\@quote}%
+ \end{minipage}\\[2.5em]}}%
\par}% to avoid weird spacing bug at the first section if no blank line is left after \maketitle}
@@ -132,9 +142,25 @@
\renewcommand*{\makeletterhead}{%
% recompute lengths (in case we are switching from letter to resume, or vice versa)
\recomputeletterlengths%
- % sender block
- \makehead%
- \par%
+ % sender contact info
+ \hfill%
+ \begin{minipage}{.5\textwidth}%
+ % optional detailed information
+ \if@details%
+ \raggedleft%
+ \addressfont\textcolor{color2}{%
+ {\bfseries\upshape\@firstname~\@lastname}\@firstdetailselementfalse%
+ % optional detailed information
+ \ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet%
+ \ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}% if \addresstreet is defined, \addresscity and addresscountry will always be defined but could be empty
+ \ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}%
+ \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
+ \makenewline\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}%
+ \ifthenelse{\isundefined{\@email}}{}{\makenewline\emailsymbol\emaillink{\@email}}%
+ \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol%
+ \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}%
+ \ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}}\fi%
+ \end{minipage}\\[2em]
% recipient block
\begin{minipage}[t]{.5\textwidth}
\raggedright%
@@ -145,7 +171,9 @@
% date
\hfill% US style
% \\[1em]% UK style
- \@date\\[2em]% US informal style: "January 1, 1900"; UK formal style: "01/01/1900"
+ \@date\\[3em]% US informal style: "January 1, 1900"; UK formal style: "01/01/1900"
+ % optional subject
+ \ifthenelse{\isundefined{\@subject}}{}{{\bfseries\@subject\\[3em]}}
% opening
\raggedright%
\@opening\\[1.5em]%
diff --git a/macros/latex/contrib/moderncv/moderncvheadiv.sty b/macros/latex/contrib/moderncv/moderncvheadiv.sty
index 9b59dacb9b..5a088fdb73 100644
--- a/macros/latex/contrib/moderncv/moderncvheadiv.sty
+++ b/macros/latex/contrib/moderncv/moderncvheadiv.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvheadiv.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvheadiv}[2022-02-21 v2.3.1 modern curriculum vitae and letter header variant: 4]
+\ProvidesPackage{moderncvheadiv}[2024-07-18 v2.4.1 modern curriculum vitae and letter header variant: 4]
% details options: "details" (default) or "nodetails"
\@initializeif{\if@details}\@detailsfalse
@@ -38,10 +38,12 @@
\renewcommand*{\quotefont}{\large\itshape}
% styles
-\renewcommand*{\namestyle}[1]{{\namefont\textcolor{color0}{#1}}}
-\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{color2}{#1}}}
-\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{color2}{#1}}}
-\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{color1}{#1}}}
+\renewcommand*{\namestyle}[1]{{\namefont\textcolor{namecolor}{#1}}}
+\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{titlecolor}{#1}}}
+\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{addresscolor}{#1}}}
+\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{quotecolor}{#1}}}
+\renewcommand*{\firstnamestyle}[1]{{\namefont\textcolor{firstnamecolor}{#1}}}
+\renewcommand*{\lastnamestyle}[1]{{\namefont\textcolor{lastnamecolor}{#1}}}
%-------------------------------------------------------------------------------
@@ -80,7 +82,7 @@
\ifthenelse{\isundefined{\@photo}}%
{}%
{%
- \color{color1}%
+ \color{pictureframecolor}%
\setlength\fboxrule{\@photoframewidth}%
\ifdim\@photoframewidth=0pt%
\setlength{\fboxsep}{0pt}\fi%
@@ -91,7 +93,7 @@
{\setlength{\makecvheadnamewidth}{\textwidth-\makecvheadpicturewidth}}%
{}%
\begin{minipage}[b]{\makecvheadnamewidth}%
- \namestyle{\@firstname\ \@lastname}%
+ \firstnamestyle{\@firstname}~\lastnamestyle{\@lastname}%
\ifthenelse{\equal{\@title}{}}{}{\\[1.25em]\titlestyle{\@title}}%
\end{minipage}%
% optional photo
@@ -103,7 +105,7 @@
% optional details
\if@details%
\makecvheadinfo{%
- \addressfont\color{color2}%
+ \addressfont\color{addresscolor}%
\ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet%
\ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty
\ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}%
@@ -111,7 +113,8 @@
\collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
\makenewline\hbox to 1.0em{\csname\collectionloopkey phonesymbol\endcsname}~\collectionloopitem}%
\ifthenelse{\isundefined{\@email}}{}{\makenewline\hbox to 1.0em{\emailsymbol}~\emaillink{\@email}}%
- \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\hbox to 1.0em{\homepagesymbol}~\httpslink{\@homepage}}%
+ \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\hbox to 1.0em{\homepagesymbol}~%
+ \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}%
\collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
\makenewline\hbox to 1.0em{\csname\collectionloopkey socialsymbol\endcsname}~\collectionloopitem}%
\ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}}\fi}
@@ -143,13 +146,15 @@
\@recipientaddress}\\[1em]%
% date
\@date\\[2em]%
+ % optional subject
+ \ifthenelse{\isundefined{\@subject}}{}{{\bfseries\@subject\\[2em]}}
% opening
\@opening\\[1.5em]%
% sender contact info
\if@details%
\hspace{0pt}%
\marginpar{%
- \addressfont\textcolor{color2}{%
+ \addressfont\textcolor{addresscolor}{%
{\bfseries\@firstname~\@lastname}\@firstdetailselementfalse%
\ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet%
\ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty
@@ -157,7 +162,8 @@
\collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
\makenewline\hbox to 1.0em{\csname\collectionloopkey phonesymbol\endcsname}~\collectionloopitem}%
\ifthenelse{\isundefined{\@email}}{}{\makenewline\hbox to 1.0em{\emailsymbol}~\emaillink{\@email}}%
- \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\hbox to 1.0em{\homepagesymbol}~\httpslink{\@homepage}}%
+ \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\hbox to 1.0em{\homepagesymbol}~%
+ \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}%
\collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
\makenewline\hbox to 1.0em{\csname\collectionloopkey socialsymbol\endcsname}~\collectionloopitem}%
\ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}}}%
diff --git a/macros/latex/contrib/moderncv/moderncvheadv.sty b/macros/latex/contrib/moderncv/moderncvheadv.sty
index c4d4084324..e92233ef34 100644
--- a/macros/latex/contrib/moderncv/moderncvheadv.sty
+++ b/macros/latex/contrib/moderncv/moderncvheadv.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvheadv.sty'.
-%% Copyright 2015-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2015-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvheadv}[2022-02-21 v2.3.1 modern curriculum vitae and letter header variant: 5]
+\ProvidesPackage{moderncvheadv}[2024-07-18 v2.4.1 modern curriculum vitae and letter header variant: 5]
% details options: "details" (default) or "nodetails"
\@initializeif{\if@details}\@detailsfalse
@@ -37,10 +37,12 @@
\renewcommand*{\quotefont}{\large\slshape}
% styles
-\renewcommand*{\namestyle}[1]{{\namefont\textcolor{color0}{#1}}}
-\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{color2}{#1}}}
-\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{color2}{#1}}}
-\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{color1}{#1}}}
+\renewcommand*{\namestyle}[1]{{\namefont\textcolor{namecolor}{#1}}}
+\renewcommand*{\firstnamestyle}[1]{{\namefont\textcolor{firstnamecolor}{#1}}}
+\renewcommand*{\lastnamestyle}[1]{{\namefont\textcolor{lastnamecolor}{#1}}}
+\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{titlecolor}{#1}}}
+\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{addresscolor}{#1}}}
+\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{quotecolor}{#1}}}
%-------------------------------------------------------------------------------
@@ -61,7 +63,7 @@
\ifthenelse{\isundefined{\@photo}}%
{}%
{%
- \color{color1}%
+ \color{pictureframecolor}%
\setlength{\fboxrule}{\@photoframewidth}%
\ifdim\@photoframewidth=0pt%
\setlength{\fboxsep}{0pt}\fi%
@@ -75,7 +77,7 @@
% optional details
\if@details%
\ifthenelse{\isundefined{\@photo}}{}{\\[0.5em]}%
- \addressfont\color{color2}%
+ \addressfont\color{addresscolor}%
\ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet%
\ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty
\ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}%
@@ -83,7 +85,8 @@
\collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
\makenewline\csname\collectionloopkey phonesymbol\endcsname~\collectionloopitem}%
\ifthenelse{\isundefined{\@email}}{}{\makenewline\emailsymbol~\emaillink{\@email}}%
- \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol~\httpslink{\@homepage}}%
+ \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol~%
+ \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}%
\collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
\makenewline\csname\collectionloopkey socialsymbol\endcsname~\collectionloopitem}%
\ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}\fi}%
@@ -91,23 +94,32 @@
% name and optional title
\newlength{\makecvheadpictureboxskip}%
\setlength{\makecvheadpictureboxskip}{\totalheightof{\usebox{\makecvheadpicturebox}}}%
- \namestyle{\@firstname\ \@lastname}%
+ \firstnamestyle{\@firstname}~\lastnamestyle{\@lastname}%
\ifthenelse{\equal{\@title}{}}{
\ifthenelse{\isundefined{\@quote}}%
- {}%
- {\\[1.25em]\begin{minipage}{\quotewidth}\quotestyle{\@quote}\end{minipage}\\[2.5em]}
- }{
- \\[1.25em]\titlestyle{\@title}\\[2.5em]%
+ {}%
+ {%
+ \\[1.25em]%
+ \begin{minipage}{\quotewidth}%
+ \quotestyle{\@quote}%
+ \end{minipage}}%
+ }{%
+ \\[1.25em]%
+ \titlestyle{\@title}
% optional quote
\ifthenelse{\isundefined{\@quote}}%
- {}%
- {\begin{minipage}{\quotewidth}\quotestyle{\@quote}\end{minipage}\\[2.5em]}}}%
+ {\vspace{2.5em}}%
+ {%
+ \\[2.5em]%
+ \begin{minipage}{\quotewidth}%
+ \quotestyle{\@quote}
+ \end{minipage}}}}%
\par}% to avoid weird spacing bug at the first section if no blank line is left after \makecvhead
% underlying command to implement \makecvtitle, identical to \@cvitem from moderncvbodyv
\let\standarddoublebackslash\\%
\newcommand*{\@makecvtitle}[3][.5ex]{%
- \arrayrulecolor{color1}%
+ \arrayrulecolor{headrulecolor}%
\setlength\arrayrulewidth{1.2\p@}%
\if@aftersection\else%
\vspace*{-\arrayrulewidth}\fi% HACK; I don't understand where the space is coming from, nor what it's exact value is :(
@@ -137,7 +149,7 @@
% optional detailed information
\if@details%
\raggedleft%
- \addressfont\textcolor{color2}{%
+ \addressfont\textcolor{addresscolor}{%
{\bfseries\upshape\@firstname~\@lastname}\@firstdetailselementfalse%
% optional detailed information
\ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet%
@@ -146,9 +158,10 @@
\collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
\makenewline\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}%
\ifthenelse{\isundefined{\@email}}{}{\makenewline\emailsymbol\emaillink{\@email}}%
- \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol\httpslink{\@homepage}}%
+ \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol%
+ \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}%
\ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}}\fi%
- \end{minipage}\\[1em]
+ \end{minipage}\\[2em]
% recipient block
\begin{minipage}[t]{.5\textwidth}
\raggedright%
@@ -159,7 +172,9 @@
% date
\hfill% US style
% \\[1em]% UK style
- \@date\\[2em]% US informal style: "January 1, 1900"; UK formal style: "01/01/1900"
+ \@date\\[3em]% US informal style: "January 1, 1900"; UK formal style: "01/01/1900"
+ % optional subject
+ \ifthenelse{\isundefined{\@subject}}{}{{\bfseries\@subject\\[2em]}}
% opening
\raggedright%
\@opening\\[1.5em]%
diff --git a/macros/latex/contrib/moderncv/moderncvheadvi.sty b/macros/latex/contrib/moderncv/moderncvheadvi.sty
index 8595901901..ecd6dbb041 100644
--- a/macros/latex/contrib/moderncv/moderncvheadvi.sty
+++ b/macros/latex/contrib/moderncv/moderncvheadvi.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvheadvi.sty'.
-%% Copyright 2015-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2015-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvheadvi}[2022-02-21 v2.3.1 modern curriculum vitae and letter header: 6]
+\ProvidesPackage{moderncvheadvi}[2024-07-18 v2.4.1 modern curriculum vitae and letter header: 6]
% details options: "details" (default) or "nodetails"
\@initializeif{\if@details}\@detailsfalse
@@ -24,7 +24,7 @@
\DeclareOption{right} {\@leftfalse\@righttrue}
\DeclareOption*{}% avoid choking on unknown options
-\ExecuteOptions{details, left}
+\ExecuteOptions{details,left}
\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
@@ -43,20 +43,22 @@
\renewcommand*{\quotefont}{\large\slshape}
% styles
-\renewcommand*{\namestyle}[1]{{\namefont\textcolor{color1}{#1}}}
-\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{color2!85}{#1}}}
-\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{color2}{#1}}}
-\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{color1}{#1}}}
+\renewcommand*{\namestyle}[1]{{\namefont\textcolor{namecolor}{#1}}}
+\renewcommand*{\firstnamestyle}[1]{{\namefont\textcolor{firstnamecolor}{#1}}}
+\renewcommand*{\lastnamestyle}[1]{{\namefont\textcolor{lastnamecolor}{#1}}}
+\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{titlecolor}{#1}}}
+\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{addresscolor}{#1}}}
+\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{quotecolor}{#1}}}
% commands
\@initializecommand{\makehead}{%
\setlength{\makeheaddetailswidth}{\textwidth}%
% name and title
\if@left\hfill\fi%
- \namestyle{\@firstname~\@lastname}%
+ \firstnamestyle{\@firstname}~\lastnamestyle{\@lastname}%
\ifthenelse{\equal{\@title}{}}{}{\titlestyle{~|~\@title}}\\[-.35em]% \isundefined doesn't work on \@title, as LaTeX itself defines \@title (before it possibly gets redefined by \title)
% rule
- {\color{color1}\rule{\textwidth}{.25ex}}}
+ {\color{bodyrulecolor}\rule{\textwidth}{.25ex}}}
%-------------------------------------------------------------------------------
% resume head definition
@@ -107,7 +109,7 @@
% optional detailed information
\if@details{%
\\\null%
- \addressfont\color{color2}%
+ \addressfont\color{addresscolor}%
\ifthenelse{\isundefined{\@addressstreet}}{}{\addtomakeheaddetails{\addresssymbol\@addressstreet}%
\ifthenelse{\equal{\@addresscity}{}}{}{\addtomakeheaddetails[~--~]{\@addresscity}}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty
\ifthenelse{\equal{\@addresscountry}{}}{}{\addtomakeheaddetails[~--~]{\@addresscountry}}%
@@ -116,7 +118,8 @@
\collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
\addtomakeheaddetails{\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}%
\ifthenelse{\isundefined{\@email}}{}{\addtomakeheaddetails{\emailsymbol\emaillink{\@email}}}%
- \ifthenelse{\isundefined{\@homepage}}{}{\addtomakeheaddetails{\homepagesymbol\httpslink{\@homepage}}}%
+ \ifthenelse{\isundefined{\@homepage}}{}{\addtomakeheaddetails{\homepagesymbol%
+ \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}}%
\collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
\addtomakeheaddetails{\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}}%
\ifthenelse{\isundefined{\@extrainfo}}{}{\addtomakeheaddetails{\@extrainfo}}%
@@ -154,7 +157,9 @@
% date
\hfill% US style
% \\[1em]% UK style
- \@date\\[2em]% US informal style: "January 1, 1900"; UK formal style: "01/01/1900"
+ \@date\\[3em]% US informal style: "January 1, 1900"; UK formal style: "01/01/1900"
+ % optional subject
+ \ifthenelse{\isundefined{\@subject}}{}{{\bfseries\@subject\\[3em]}}
% opening
\raggedright%
\@opening\\[1.5em]%
diff --git a/macros/latex/contrib/moderncv/moderncvheadvii.sty b/macros/latex/contrib/moderncv/moderncvheadvii.sty
new file mode 100644
index 0000000000..f0c259ec05
--- /dev/null
+++ b/macros/latex/contrib/moderncv/moderncvheadvii.sty
@@ -0,0 +1,226 @@
+%% start of file `moderncvheadvii.sty'.
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com).
+%% Copyright 2023 Javier Lopez-Gomez (javier.lopez.gomez@proton.me).
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License version 1.3c,
+% available at http://www.latex-project.org/lppl/.
+
+
+%-------------------------------------------------------------------------------
+% identification
+%-------------------------------------------------------------------------------
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{moderncvheadvii}[2023/11/21 v2.0.0 modern curriculum vitae and letter header variant: 7]
+
+% details options: "details" (default) or "nodetails"
+\@initializeif{\if@details}\@detailsfalse
+\DeclareOption{details} {\@detailstrue}
+\DeclareOption{nodetails} {\@detailsfalse}
+% QR options: "qr" (default) or "noqr". If "qr" is specified, a QR code is generated to point to the
+% homepage and placed near the details section
+\@initializeif{\if@headqr}\@headqrfalse
+\DeclareOption{qr} {\@headqrtrue}
+\DeclareOption{noqr} {\@headqrfalse}
+
+% left/right options: "left" (default) or "right"
+\@initializeif{\if@left} \@leftfalse
+\DeclareOption{left} {\@lefttrue\@rightfalse}
+\@initializeif{\if@right}\@rightfalse
+\DeclareOption{right} {\@leftfalse\@righttrue}
+
+\DeclareOption*{}% avoid choking on unknown options
+\ExecuteOptions{details,qr,left}
+\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
+
+
+%-------------------------------------------------------------------------------
+% required packages
+%-------------------------------------------------------------------------------
+\RequirePackage{qrcode}
+\RequirePackage{tikz}
+\usetikzlibrary{tikzmark,fit}
+
+
+%-------------------------------------------------------------------------------
+% overall head definition
+%-------------------------------------------------------------------------------
+\@ifundefined{\string\color@headTL}{\colorlet{headTL}{color1}}{}
+\@ifundefined{\string\color@headBR}{\colorlet{headBR}{color1}}{}
+\@ifundefined{\string\color@headtext}{\colorlet{headtext}{color2}}{}
+\@ifundefined{\string\color@headhr}{\colorlet{headhr}{color2}}{}
+
+% fonts
+\renewcommand*{\namefont}{\fontsize{30}{32}\rmfamily\mdseries\upshape}
+\renewcommand*{\titlefont}{\LARGE\mdseries\slshape}
+\renewcommand*{\addressfont}{\small\mdseries\slshape}
+\renewcommand*{\quotefont}{\large\slshape}
+
+% styles
+\renewcommand*{\namestyle}[1]{{\namefont\textcolor{headtext}{#1}}}
+\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{headtext}{#1}}}
+\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{headtext}{#1}}}
+\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{color0}{#1}}}
+
+
+%-------------------------------------------------------------------------------
+% resume head definition
+%-------------------------------------------------------------------------------
+% lengths
+\@initializelength{\quotewidth}
+\@initializelength{\makecvheadnamewidth}% optional makecvheadname width to force a certain width (if set/remains to 0pt, the width is calculated automatically)
+\renewcommand*{\recomputecvheadlengths}{%
+ \setlength{\quotewidth}{0.65\textwidth}}
+
+% commands
+\renewcommand*{\makecvhead}{%
+ % recompute lengths (in case we are switching from letter to resume, or vice versa)
+ \recomputecvlengths%
+ % optional detailed information (pre-rendering)
+ \@initializebox{\makecvheaddetailsbox}%
+ \if@details%
+ \def\phonesdetails{}%
+ \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
+ \protected@edef\phonesdetails{\phonesdetails\protect\makenewline\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}%
+ \def\socialsdetails{}%
+ \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
+ \protected@edef\socialsdetails{\socialsdetails\protect\makenewline\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}}%
+ \savebox{\makecvheaddetailsbox}{%
+ \addressfont\color{headtext}%
+ \if@left\begin{tabular}[b]{@{}r@{}}\fi%
+ \if@right\begin{tabular}[b]{@{}l@{}}\fi%
+ \ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet%
+ \ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}% if \addresstreet is defined, \addresscity and addresscountry will always be defined but could be empty
+ \ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}%
+ \phonesdetails% needs to be pre-rendered as loops and tabulars seem to conflict
+ \ifthenelse{\isundefined{\@email}}{}{\makenewline\emailsymbol\emaillink{\@email}}%
+ \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol\httplink{\@homepage}}%
+ \socialsdetails% needs to be pre-rendered as loops and tabulars seem to conflict
+ \ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}%
+ \end{tabular}
+ }\fi%
+ % optional photo (pre-rendering)
+ \@initializebox{\makecvheadpicturebox}%
+ \savebox{\makecvheadpicturebox}{%
+ \ifthenelse{\isundefined{\@photo}}%
+ {}%
+ {%
+ \if@right%
+ \hspace*{\separatorcolumnwidth}\fi%
+ \begin{tikzpicture}
+ \path[top color=headBR,bottom color=headTL,shading angle=45] (0,0) circle (\dimexpr\@photowidth/2+\@photoframewidth*2);
+ \path[fill=white] (0,0) circle (\dimexpr\@photowidth/2+\@photoframewidth);
+ \begin{scope}
+ \clip (0,0) circle (\dimexpr\@photowidth/2);
+ \node[inner sep=0pt] at (0,0) {\includegraphics[width=\@photowidth]{\@photo}};
+ \end{scope}
+ \end{tikzpicture}%
+ }%
+ \if@left%
+ \hspace*{\separatorcolumnwidth}\fi}%
+ % optional QR for homepage (pre-rendering)
+ \@initializebox{\makecvheadqrbox}%
+ \if@headqr%
+ \savebox{\makecvheadqrbox}{%
+ \ifthenelse{\isundefined{\@homepage}}{}{\tikz\node[inner sep=1ex,fill=white]{\qrcode[height=1.5cm]{\@homepage}};}%
+ }\fi%
+ % name and title (pre-rendering)
+ \@initializelength{\makecvheaddetailswidth}\settowidth{\makecvheaddetailswidth}{\usebox{\makecvheaddetailsbox}}%
+ \@initializelength{\makecvheadpicturewidth}\settowidth{\makecvheadpicturewidth}{\usebox{\makecvheadpicturebox}}%
+ \ifthenelse{\lengthtest{\makecvheadnamewidth=0pt}}% check for dummy value (equivalent to \ifdim\makecvheadnamewidth=0pt)
+ {\setlength{\makecvheadnamewidth}{\textwidth-\makecvheaddetailswidth-\makecvheadpicturewidth}}%
+ {}%
+ \@initializebox{\makecvheadnamebox}%
+ \savebox{\makecvheadnamebox}{%
+ \begin{minipage}[b]{\makecvheadnamewidth}%
+ \if@left\raggedright\fi%
+ \if@right\raggedleft\fi%
+ \namestyle{\@firstname\ {\scshape\@lastname}}%
+ \ifthenelse{\equal{\@title}{}}{}{\\[1.25em]\titlestyle{\@title}}%
+ \end{minipage}}%
+ % rendering
+ \begin{tikzpicture}[remember picture,overlay]
+ \node(head-bg) [top color=headTL,bottom color=headBR,shading angle=45,inner sep=0pt,
+ fit={(current page.north west)(current page.north east)(pic cs:head-end)}] {};
+ % Users may define `\@moderncvheadBackground` for additional background decoration
+ \ifthenelse{\isundefined{\@moderncvheadBackground}}{}{\@moderncvheadBackground}
+
+ \path[draw,line width=\@photoframewidth]
+ (head-bg.south west) edge[color=headhr!85!black] ([xshift=8em]head-bg.south west)
+ ([xshift=8em]head-bg.south west) edge[color=headhr] ([xshift=-8em]head-bg.south east)
+ ([xshift=-8em]head-bg.south east) edge[color=headhr!85!black] (head-bg.south east);
+ \end{tikzpicture}%
+ \if@left%
+ \usebox{\makecvheadpicturebox}%
+ \usebox{\makecvheadnamebox}%
+ \hfill%
+ \llap{\usebox{\makecvheaddetailsbox}}% \llap is used to suppress the width of the box, allowing overlap if the value of makecvheadnamewidth is forced
+ \usebox{\makecvheadqrbox}\fi%
+ \if@right%
+ \usebox{\makecvheadqrbox}%
+ \rlap{\usebox{\makecvheaddetailsbox}}% \llap is used to suppress the width of the box, allowing overlap if the value of makecvheadnamewidth is forced
+ \hfill%
+ \usebox{\makecvheadnamebox}%
+ \usebox{\makecvheadpicturebox}\fi%
+ \\[.15em]%
+ \tikzmark{head-end}\\[.15em]%
+ % optional quote
+ \ifthenelse{\isundefined{\@quote}}%
+ {}%
+ {{\centering\begin{minipage}{\quotewidth}\centering\quotestyle{\@quote}\end{minipage}\\[.15em]}}%
+ \par}% to avoid weird spacing bug at the first section if no blank line is left after \makecvhead
+
+
+%-------------------------------------------------------------------------------
+% letter head definition
+%-------------------------------------------------------------------------------
+% lengths
+%\renewcommand*{\recomputeletterheadlengths}{}
+
+% commands
+\renewcommand*{\makeletterhead}{%
+ % recompute lengths (in case we are switching from letter to resume, or vice versa)
+ \recomputeletterlengths%
+ % sender contact info
+ \hfill%
+ \begin{minipage}{.5\textwidth}%
+ % optional detailed information
+ \if@details%
+ \raggedleft%
+ \addressfont\textcolor{color2}{%
+ {\bfseries\upshape\@firstname~\@lastname}\@firstdetailselementfalse%
+ % optional detailed information
+ \ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet%
+ \ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}% if \addresstreet is defined, \addresscity and addresscountry will always be defined but could be empty
+ \ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}%
+ \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
+ \makenewline\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}%
+ \ifthenelse{\isundefined{\@email}}{}{\makenewline\emailsymbol\emaillink{\@email}}%
+ \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol\httplink{\@homepage}}%
+ \ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}}\fi%
+ \end{minipage}\\[1em]
+ % recipient block
+ \begin{minipage}[t]{.5\textwidth}
+ \raggedright%
+ \addressfont%
+ {\bfseries\upshape\@recipientname}\\%
+ \@recipientaddress%
+ \end{minipage}
+ % date
+ \hfill% US style
+% \\[1em]% UK style
+ \@date\\[2em]% US informal style: "January 1, 1900"; UK formal style: "01/01/1900"
+ % optional subject
+ \ifthenelse{\isundefined{\@subject}}{}{{\bfseries\@subject\\[3em]}}
+ % opening
+ \raggedright%
+ \@opening\\[1.5em]%
+ % ensure no extra spacing after \makelettertitle due to a possible blank line
+% \ignorespacesafterend% not working
+ \hspace{0pt}\par\vspace{-\baselineskip}\vspace{-\parskip}}
+
+
+\endinput
+
+
+%% end of file `moderncvheadvii.sty'.
diff --git a/macros/latex/contrib/moderncv/moderncviconsacademic.sty b/macros/latex/contrib/moderncv/moderncviconsacademic.sty
index e1eae589aa..cf7bbbb536 100644
--- a/macros/latex/contrib/moderncv/moderncviconsacademic.sty
+++ b/macros/latex/contrib/moderncv/moderncviconsacademic.sty
@@ -1,5 +1,5 @@
%% start of file `moderncviconsacademic.sty'.
-%% Copyright 2013-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2013-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncviconsacademic}[2022-02-21 v2.3.1 modern curriculum vitae icons: academicons]
+\ProvidesPackage{moderncviconsacademic}[2024-07-18 v2.4.1 modern curriculum vitae icons: academicons]
%-------------------------------------------------------------------------------
@@ -18,7 +18,19 @@
%-------------------------------------------------------------------------------
% Package for academic icons
\RequirePackage{academicons}
+\RequirePackage{xcolor}
+%-------------------------------------------------------------------------------
+% set colors
+%-------------------------------------------------------------------------------
+\input{moderncvcolors.tex}
+
+\providecolor{orcid}{named}{default-socialicon-color}
+\providecolor{researchgate}{named}{default-socialicon-color}
+\providecolor{researcherid}{named}{default-socialicon-color}
+\providecolor{googlescholar}{named}{default-socialicon-color}
+\providecolor{arxiv}{named}{default-socialicon-color}
+\providecolor{inspire}{named}{default-socialicon-color}
%-------------------------------------------------------------------------------
% all symbols described in moderncv.cls
@@ -39,14 +51,16 @@
%\newcommand*{\stackoverflowsocialsymbol}{}
%\newcommand*{\bitbucketsocialsymbol} {}
%\newcommand*{\skypesocialsymbol} {}
-\renewcommand*{\orcidsocialsymbol} {{\small\aiOrcid}~}
-\renewcommand*{\researchgatesocialsymbol} {{\small\aiResearchGateSquare}~} % alternative: \aiResearchGate
-\renewcommand*{\researcheridsocialsymbol} {{\small\aiResearcherIDSquare}~} % alternative: \aiResearcherID
-\renewcommand*{\googlescholarsocialsymbol}{{\small\aiGoogleScholar}~}
+\renewcommand*{\orcidsocialsymbol} {{\color{orcid}\small\aiOrcid}~}
+\renewcommand*{\researchgatesocialsymbol} {{\color{researchgate}\small\aiResearchGateSquare}~} % alternative: \aiResearchGate
+\renewcommand*{\researcheridsocialsymbol} {{\color{researcherid}\small\aiResearcherIDSquare}~} % alternative: \aiResearcherID
+\renewcommand*{\googlescholarsocialsymbol}{{\color{googlescholar}\raisebox{-1pt}{\large\aiGoogleScholar}}~}
%\newcommand*{\telegramsocialsymbol} {}
%\newcommand*{\whatsappsocialsymbol} {}
%\newcommand*{\matrixsocialsymbol} {}
%\newcommand*{\signalsocialsymbol} {}
+\renewcommand*{\arxivsocialsymbol}{{\color{arxiv}{\small\aiarXiv}}~}
+\renewcommand*{\inspiresocialsymbol}{{\color{inspire}{\small\aiInspire}}~}
\endinput
diff --git a/macros/latex/contrib/moderncv/moderncviconsawesome.sty b/macros/latex/contrib/moderncv/moderncviconsawesome.sty
index 2a0ea3a23c..a51729faa6 100644
--- a/macros/latex/contrib/moderncv/moderncviconsawesome.sty
+++ b/macros/latex/contrib/moderncv/moderncviconsawesome.sty
@@ -1,5 +1,5 @@
%% start of file `moderncviconsawesome.sty'.
-%% Copyright 2013-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2013-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,13 +10,51 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncviconsawesome}[2022-02-21 v2.3.1 modern curriculum vitae icons: awesome]
+\ProvidesPackage{moderncviconsawesome}[2024-07-18 v2.4.1 modern curriculum vitae icons: awesome]
%-------------------------------------------------------------------------------
% required packages
%-------------------------------------------------------------------------------
% Font Awesome font
\RequirePackage{fontawesome5}
+\RequirePackage{xcolor}
+
+%-------------------------------------------------------------------------------
+% set colors
+%-------------------------------------------------------------------------------
+\input{moderncvcolors.tex}
+
+\providecolor{address}{named}{default-socialicon-color}
+\providecolor{mobilephone}{named}{default-socialicon-color}
+\providecolor{fixedphone}{named}{default-socialicon-color}
+\providecolor{faxphone}{named}{default-socialicon-color}
+\providecolor{email}{named}{default-socialicon-color}
+\providecolor{homepage}{named}{default-socialicon-color}
+\providecolor{googlescholar}{named}{default-socialicon-color}
+\providecolor{linkedin}{named}{default-socialicon-color}
+\providecolor{xing}{named}{default-socialicon-color}
+\providecolor{twitter}{named}{default-socialicon-color}
+\providecolor{mastodon}{named}{default-socialicon-color}
+\providecolor{github}{named}{default-socialicon-color}
+\providecolor{gitlab}{named}{default-socialicon-color}
+\providecolor{stackoverflow}{named}{default-socialicon-color}
+\providecolor{bitbucket}{named}{default-socialicon-color}
+\providecolor{skype}{named}{default-socialicon-color}
+\providecolor{orcid}{named}{default-socialicon-color}
+\providecolor{researchgate}{named}{default-socialicon-color}
+\providecolor{telegram}{named}{default-socialicon-color}
+\providecolor{whatsapp}{named}{default-socialicon-color}
+\providecolor{discord}{named}{default-socialicon-color}
+\providecolor{twitch}{named}{default-socialicon-color}
+\providecolor{youtube}{named}{default-socialicon-color}
+\providecolor{tiktok}{named}{default-socialicon-color}
+\providecolor{instagram}{named}{default-socialicon-color}
+\providecolor{soundcloud}{named}{default-socialicon-color}
+\providecolor{steam}{named}{default-socialicon-color}
+\providecolor{xbox}{named}{default-socialicon-color}
+\providecolor{playstation}{named}{default-socialicon-color}
+\providecolor{battlenet}{named}{default-socialicon-color}
+\providecolor{born}{named}{default-socialicon-color}
%-------------------------------------------------------------------------------
% all symbols described in moderncv.cls
@@ -28,28 +66,41 @@
%\renewcommand*{\addresssymbol} {}
-\renewcommand*{\mobilephonesymbol} {{\small\faMobile*}~} % alternative: \faMobile (solid style)
-\renewcommand*{\fixedphonesymbol} {{\small\faPhone*}~} % alternative: \faPhone (reversed)
-\renewcommand*{\faxphonesymbol} {{\small\faFax}~} % alternative: \faPrint
-\renewcommand*{\emailsymbol} {{\small\faEnvelope[regular]}~} % alternative: \faInbox, \faEnvelope (solid style)
-\renewcommand*{\homepagesymbol} {{\small\faGlobeAmericas}~} % alternative: \faHome, \faGlobe, \faGlobeEurope, \faGlobeAfrica, \faGlobeAsia
-\renewcommand*{\linkedinsocialsymbol} {{\small\faLinkedinIn}~} % alternative: \faLinkedin
-\renewcommand*{\xingsocialsymbol} {{\small\faXing}~} % alternative: \faXingSquare
-\renewcommand*{\twittersocialsymbol} {{\small\faTwitter}~} % alternative: \faTwitterSquare
-\renewcommand*{\githubsocialsymbol} {{\small\faGithub}~} % alternative: \faGithubSquare, \faGithub*
-\renewcommand*{\gitlabsocialsymbol} {{\small\faGitlab}~}
-\renewcommand*{\stackoverflowsocialsymbol}{{\small\faStackOverflow}~}
-\renewcommand*{\bitbucketsocialsymbol} {{\small\faBitbucket}~}
-\renewcommand*{\skypesocialsymbol} {{\small\faSkype}~}
-\renewcommand*{\orcidsocialsymbol} {{\small\faOrcid}~}
-\renewcommand*{\researchgatesocialsymbol} {{\small\faResearchgate}~}
+\renewcommand*{\mobilephonesymbol} {{\color{mobilephone}\small\faMobile*}~} % alternative: \faMobile (solid style)
+\renewcommand*{\fixedphonesymbol} {{\color{fixedphone}\small\faPhone*}~} % alternative: \faPhone (reversed)
+\renewcommand*{\faxphonesymbol} {{\color{faxphone}\small\faFax}~} % alternative: \faPrint
+\renewcommand*{\emailsymbol} {{\color{email}\small\faEnvelope[regular]}~} % alternative: \faInbox, \faEnvelope (solid style)
+\renewcommand*{\homepagesymbol} {{\color{homepage}\small\faGlobeAmericas}~} % alternative: \faHome, \faGlobe, \faGlobeEurope, \faGlobeAfrica, \faGlobeAsia
+\renewcommand*{\linkedinsocialsymbol} {{\color{linkedin}\small\faLinkedinIn}~} % alternative: \faLinkedin
+\renewcommand*{\xingsocialsymbol} {{\color{xing}\small\faXing}~} % alternative: \faXingSquare
+\renewcommand*{\twittersocialsymbol} {{\color{twitter}\small\faTwitter}~} % alternative: \faTwitterSquare
+\renewcommand*{\mastodonsocialsymbol} {{\color{mastodon}\small\faMastodon}~}
+\renewcommand*{\githubsocialsymbol} {{\color{github}\small\faGithub}~} % alternative: \faGithubSquare, \faGithub*
+\renewcommand*{\gitlabsocialsymbol} {{\color{gitlab}\small\faGitlab}~}
+\renewcommand*{\stackoverflowsocialsymbol}{{\color{stackoverflow}\small\faStackOverflow}~}
+\renewcommand*{\bitbucketsocialsymbol} {{\color{bitbucket}\small\faBitbucket}~}
+\renewcommand*{\skypesocialsymbol} {{\color{skype}\small\faSkype}~}
+\renewcommand*{\orcidsocialsymbol} {{\color{orcid}\small\faOrcid}~}
+\renewcommand*{\researchgatesocialsymbol} {{\color{researchgate}\small\faResearchgate}~}
%\renewcommand*{\researcheridsocialsymbol} {}
%\renewcommand*{\googlescholarsocialsymbol}{}
-\renewcommand*{\telegramsocialsymbol} {{\small\faTelegram}~}
-\renewcommand*{\whatsappsocialsymbol} {{\small\faWhatsapp}~}
+\renewcommand*{\telegramsocialsymbol} {{\color{telegram}\small\faTelegram}~}
+\renewcommand*{\whatsappsocialsymbol} {{\color{whatsapp}\small\faWhatsapp}~}
+\renewcommand*{\discordsocialsymbol} {{\color{discord}\small\faDiscord}~}
+\renewcommand*{\twitchsocialsymbol} {{\color{twitch}\small\faTwitch}~}
+\renewcommand*{\youtubesocialsymbol} {{\color{youtube}\small\faYoutube}~}
+\renewcommand*{\tiktoksocialsymbol} {{\color{tiktok}\small\faTiktok}~}
+\renewcommand*{\instagramsocialsymbol} {{\color{instagram}\small\faInstagram}~}
+\renewcommand*{\soundcloudsocialsymbol} {{\color{soundcloud}\small\faSoundcloud}~}
+\renewcommand*{\steamsocialsymbol} {{\color{steam}\small\faSteam}~}
+\renewcommand*{\xboxsocialsymbol} {{\color{xbox}\small\faXbox}~}
+\renewcommand*{\playstationsocialsymbol} {{\color{playstation}\small\faPlaystation}~}
+\renewcommand*{\battlenetsocialsymbol} {{\color{battlenet}\small\faBattleNet}~}
%\renewcommand*{\signalsocialsymbol} {}
%\renewcommand*{\matrixsocialsymbol} {}
-\renewcommand*{\bornsymbol} {{\small\faAsterisk}~} % alternative: \faBabyCarriage
+% \renewcommand*{\arxivsocialsymbol} {{\color{arxiv}{\small\faarXiv}}~}
+% \renewcommand*{\inspiresocialsymbol} {{\color{inspire}{\small\faInspire}}~}
+\renewcommand*{\bornsymbol} {{\color{born}\small\faAsterisk}~} % alternative: \faBabyCarriage
\endinput
diff --git a/macros/latex/contrib/moderncv/moderncviconsletters.sty b/macros/latex/contrib/moderncv/moderncviconsletters.sty
index 832e21035a..2dc6386d51 100644
--- a/macros/latex/contrib/moderncv/moderncviconsletters.sty
+++ b/macros/latex/contrib/moderncv/moderncviconsletters.sty
@@ -1,5 +1,5 @@
%% start of file `moderncviconsletters.sty'.
-%% Copyright 2013-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2013-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncviconsletters}[2022-02-21 v2.3.1 modern curriculum vitae icons: letter]
+\ProvidesPackage{moderncviconsletters}[2024-07-18 v2.4.1 modern curriculum vitae icons: letter]
%-------------------------------------------------------------------------------
% symbols definition
@@ -31,6 +31,7 @@
\renewcommand*{\linkedinsocialsymbol} {\textbf{in}~}
\renewcommand*{\xingsocialsymbol} {\textbf{xi}~}
\renewcommand*{\twittersocialsymbol} {\textbf{tw}~}
+\renewcommand*{\mastodonsocialsymbol} {\textbf{ms}~}
\renewcommand*{\githubsocialsymbol} {\textbf{gh}~}
\renewcommand*{\gitlabsocialsymbol} {\textbf{gl}~}
\renewcommand*{\stackoverflowsocialsymbol}{\textbf{so}~}
@@ -45,6 +46,18 @@
\renewcommand*{\matrixsocialsymbol} {\textbf{ma}~}
\renewcommand*{\googlescholarsocialsymbol}{\textbf{gs}~}
\renewcommand*{\bornsymbol} {\textbf{B}~}
+\renewcommand*{\codebergsocialsymbol} {\textbf{cb}~}
+\renewcommand*{\twitchsocialsymbol} {\textbf{ttv}~}
+\renewcommand*{\youtubesocialsymbol} {\textbf{yt}~}
+\renewcommand*{\tiktoksocialsymbol} {\textbf{tok}~}
+\renewcommand*{\instagramsocialsymbol} {\textbf{insta}~}
+\renewcommand*{\soundcloudsocialsymbol} {\textbf{sc}~}
+\renewcommand*{\steamsocialsymbol} {\textbf{st}~}
+\renewcommand*{\xboxsocialsymbol} {\textbf{xb}~}
+\renewcommand*{\playstationsocialsymbol} {\textbf{psn}~}
+\renewcommand*{\battlenetsocialsymbol} {\textbf{bn}~}
+\renewcommand*{\arxivsocialsymbol} {\textbf{arx}~}
+\renewcommand*{\inspiresocialsymbol} {\textbf{ins}~}
\renewcommand*{\listitemsymbol} {\labelitemi~}
diff --git a/macros/latex/contrib/moderncv/moderncviconsmarvosym.sty b/macros/latex/contrib/moderncv/moderncviconsmarvosym.sty
index 0a1d8f107d..2dbc71011e 100644
--- a/macros/latex/contrib/moderncv/moderncviconsmarvosym.sty
+++ b/macros/latex/contrib/moderncv/moderncviconsmarvosym.sty
@@ -1,5 +1,5 @@
%% start of file `moderncviconsmarvosym.sty'.
-%% Copyright 2013-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2013-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncviconsmarvosym}[2022-02-21 v2.3.1 modern curriculum vitae icons: marvosym]
+\ProvidesPackage{moderncviconsmarvosym}[2024-07-18 v2.4.1 modern curriculum vitae icons: marvosym]
%-------------------------------------------------------------------------------
% all symbols described in moderncv.cls
diff --git a/macros/latex/contrib/moderncv/moderncviconssymbols.sty b/macros/latex/contrib/moderncv/moderncviconssymbols.sty
index 256304380e..b6c1fb7b1d 100644
--- a/macros/latex/contrib/moderncv/moderncviconssymbols.sty
+++ b/macros/latex/contrib/moderncv/moderncviconssymbols.sty
@@ -1,5 +1,5 @@
%% start of file `moderncviconssymbols.sty'.
-%% Copyright 2013-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2013-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -17,7 +17,7 @@
\RequirePackage{moderncviconsawesome}
\RequirePackage{moderncviconsacademic}
\else
- \ClassWarningNoLine{moderncv}{"academicons requires xetex/luatex to work. Using alternatives."}
+ \typeout{^^Jmoderncv: academicons requires XeTeX/LuaTeX to work. Using alternatives.^^J}
\ifpdftex
\RequirePackage{moderncviconsawesome}
\else
diff --git a/macros/latex/contrib/moderncv/moderncviconstikz.sty b/macros/latex/contrib/moderncv/moderncviconstikz.sty
index c3e9f40b0d..e1a0248924 100644
--- a/macros/latex/contrib/moderncv/moderncviconstikz.sty
+++ b/macros/latex/contrib/moderncv/moderncviconstikz.sty
@@ -1,5 +1,5 @@
%% start of file `moderncviconstikz.sty'.
-%% Copyright 2013-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2013-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncviconstikz}[2022-02-21 v2.3.1 modern curriculum vitae and letter icons: tickz]
+\ProvidesPackage{moderncviconstikz}[2024-07-18 v2.4.1 modern curriculum vitae and letter icons: tickz]
%-------------------------------------------------------------------------------
@@ -218,7 +218,7 @@
\protect\begin{tikzpicture}[x=0.11em, y=0.11em, xscale=0.015, yscale=-0.015, inner sep=0pt, outer sep=0pt]
\protect\begin{scope}[shift={(507,387)}]
\protect\path[fill=color2,line width=0.057pt]
- (105.2000,24.9000) .. controls (102.1000,16.0000) and (89.5000,16.0000) ..
+ (105.2000,24.9000) .. controls (102.1000,16.0000) and (89.5000,16.0000) ..
(86.3000,24.9000) -- (29.8000,199.7000) -- (161.7000,199.7000) .. controls
(161.7000,199.7000) and (105.2000,24.9000) .. (105.2000,24.9000) -- cycle
(0.9000,287.7000) .. controls (-1.7000,295.7000) and (1.2000,304.6000) ..
@@ -327,7 +327,7 @@
\protect\raisebox{-0.12em}{
\protect\begin{tikzpicture}[y=1.8pt, x=1.8pt, yscale=-0.15, xscale=0.15, inner sep=0pt, outer sep=0pt]
\protect\begin{scope}[shift={(507,387)}]
- \protect\path[fill=color2]
+ \protect\path[fill=color2]
(0.9360,0.7320) .. controls (0.9360,10.9053) and (0.9360,21.0787) ..
(0.9360,31.2520) .. controls (1.6673,31.2520) and (2.3987,31.2520) ..
(3.1300,31.2520) .. controls (3.3452,32.0075) and (2.8778,32.0803) ..
@@ -374,7 +374,7 @@
\protect\raisebox{-0.12em}{
\protect\begin{tikzpicture}[y=0.1pt, x=0.1pt, yscale=-0.13, xscale=0.13, inner sep=0pt, outer sep=0pt]
\protect\begin{scope}[shift={(507,387)}]
- \protect\path[fill=color2]
+ \protect\path[fill=color2]
(430.1000,180.9000) -- (437.8000,211.9000) .. controls (407.6000,219.3000)
and (378.7000,231.3000) .. (352.1000,247.3000) -- (335.7000,220.0000) ..
controls (365.0000,202.3000) and (396.9000,189.1000) .. (430.1000,180.9000) --
@@ -439,6 +439,25 @@
~}
}{}\par
+\ifdefempty{\codebergsocialsymbol} {
+ \renewcommand*{\codebergsocialsymbol} {
+ \protect\raisebox{-0.12em}{
+ \protect\begin{tikzpicture}[y=0.8pt, x=0.8pt, yscale=-1.0, xscale=1.0, inner sep=0pt, outer sep=0pt]
+ \protect\begin{scope}[shift={(507, 387)}]
+ \protect\path[scale=0.265, opacity=0.500, line cap=butt, line join=miter, line width=0.779pt, miter limit=2.00]
+ (11249.8942,-1872.9296)arc(269.285:169.240:0.201313 and 0.150) --
+ (11258.5852,-1839.4433)arc(66.699:32.084:23.067) --
+ (11250.0698,-1872.8557)arc(329.460:269.346:0.201313 and 0.150) -- cycle;
+
+ \protect\path[scale=0.265, fill=color2, line width=0.426pt]
+ (11249.3743,-1883.6959)arc(269.785:180.000:23.067)arc(180.001:147.920:23.067)
+ -- (11249.1480,-1873.2412)arc(209.929:330.071:0.360097 and 0.269) --
+ (11269.0053,-1848.3766)arc(32.082:-0.002:23.067)arc(360.000:270.000:23.067)arc(270.108:269.892:23.067)
+ -- cycle;
+ \protect\end{scope}
+ \protect\end{tikzpicture}}
+ ~}
+}{}\par
\endinput
diff --git a/macros/latex/contrib/moderncv/moderncvskillmatrix.sty b/macros/latex/contrib/moderncv/moderncvskillmatrix.sty
index 68b8db9a0a..9f03be117a 100644
--- a/macros/latex/contrib/moderncv/moderncvskillmatrix.sty
+++ b/macros/latex/contrib/moderncv/moderncvskillmatrix.sty
@@ -2,30 +2,30 @@
%% Copyright 2021 David Seus (cryptointerest@posteo.de).
%
% This package provides a skill matrix template for the moderncv package.
-% Some recruiting firms require applicants to rate their skills, computer
-% skills, management tools, or similar in a table involving a graphical
-% illustration of their skill level. This package implements this idea
-% and provides the following commands to use within the moderncv
+% Some recruiting firms require applicants to rate their skills, computer
+% skills, management tools, or similar in a table involving a graphical
+% illustration of their skill level. This package implements this idea
+% and provides the following commands to use within the moderncv
% package:
-%
-%
+%
+%
% PUBLIC COMMANDS
% \cvskill{<1-5>}
% Illustrate skill level with little colored boxes.
-% By default five skill levels are predefined.
-%
-% Input:
+% By default five skill levels are predefined.
+%
+% Input:
% input_1: integer between 0 and 5
-%
-% Example usages:
+%
+% Example usages:
% \cvskill{3}
-%
-%
+%
+%
% \cvskilllegend[*][<post_padding>][<first_level>][<second_level>][<third_level>][<fourth_level>][<fifth_level>]{<name>}
% Print legend table explaining the meaning of \cvskill{1}...\cvskill{5}.
-%
+%
% Input:
-% asterix (optional): include vertical (dashed) lines. This behaviour depends on the body style.
+% asterix (optional): include vertical (dashed) lines. This behaviour depends on the body style.
% For the fancy style, the asterix has no meaning.
% input_1 (optional): padding length appended to the legend, default: <0.25em>
% input_2 (optional): string describing meaning of \cvskill{1}, default: <basic knowledge>
@@ -34,25 +34,25 @@
% input_5 (optional): string describing meaning of \cvskill{4}, default: <deepened expert knowledge>
% input_6 (optional): string describing meaning of \cvskill{5}, default: <expert/guru>
% input_7: string giving a name to the legend, default: <>
-%
+%
% Example usages:
% \cvskilllegend{} print default legend
% \cvskilllegend[0.5em]{Legend} print default legend, but adjust post padding and display the word ``Legend''.
% \cvskilllegend*[0.2em][Grundkenntnisse][Grundkenntnisse und eigene Erfahrung in Projekten][Umfangreiche Erfahrung in Projekten][Vertiefte Expertenkenntnisse][Experte/Guru]{Legende} Fully adjust legend to German example and including dashed lines
-%
+%
% Note:
% -The width of the columns can be adjusted by the \setcvskilllegendcolumns, see \setcvskilllegendcolumns
-% -The design of the table is such that the <second_level> entry stands in the first column but
+% -The design of the table is such that the <second_level> entry stands in the first column but
% occupies rows two and three. This has been done to accomodate english and german defaults.
% An alternative is provided by \cvskillplainlegend
-%
-%
+%
+%
% \cvskillplainlegend[*][<post_padding>][<first_level>][<second_level>][<third_level>][<fourth_level>][<fifth_level>]{<name>}
% Print alternative legend table explaining the meaning of \cvskill{1}...\cvskill{5}.
% In this legend, the first three skill levels are in one column
-%
+%
% Input:
-% asterix (optional): include vertical (dashed) lines. This behaviour depends on the body style.
+% asterix (optional): include vertical (dashed) lines. This behaviour depends on the body style.
% For the fancy style, the asterix has no meaning.
% input_1 (optional): padding length appended to the legend, default: <0.25em>
% input_2 (optional): string describing meaning of \cvskill{1}, default: <basic knowledge>
@@ -61,40 +61,40 @@
% input_5 (optional): string describing meaning of \cvskill{4}, default: <deepened expert knowledge>
% input_6 (optional): string describing meaning of \cvskill{5}, default: <expert/guru>
% input_7: string giving a name to the legend, default: <>
-%
+%
% Example usages:
% \cvskillplainlegend{} print default legend
% \cvskillplainlegend[0.5em]{Legend} print default legend, but adjust post padding and display the word ``Legend''.
% \cvskillplainlegend*[0.2em][Grundkenntnisse][Grundkenntnisse und eigene Erfahrung in Projekten][Umfangreiche Erfahrung in Projekten][Vertiefte Expertenkenntnisse][Experte/Guru]{Legende} Fully adjust legend to German example and including dashed lines
-%
+%
% Note:
% -The width of the columns can be adjusted by the \setcvskilllegendcolumns, see \setcvskilllegendcolumns
-%
-%
+%
+%
% \cvskillhead[<post_padding>][<Level>][<Skill>][<Years>][<Comment>]%
% add skill matrix line acting as header explaining the meaning of columns.
-%
+%
% Input:
% input_1 (optional): padding length appended to the legend, default: <0.25em>
% input_2 (optional): string naming the level column (2nd column), default: <Level>
% input_3 (optional): string naming the skill column (3nd column), default: <Skill>
% input_4 (optional): string naming the experience-in-years column (4th column), default: <Years>
% input_5 (optional): string naming the comment column (5th column), default: <Comment>
-%
+%
% Example usages:
% \cvskillhead print default head.
% \cvskillhead[0.5em] print default head, but adjust post padding.
% \cvskillhead[0.25em][Level][F\"ahigkeit][Jahre][Bemerkung] Fully adjust head to German example
-%
-% Note:
+%
+% Note:
% - The width of the columns can be adjusted by the \setcvskillcolumns command, see \setcvskillcolumns.
-%
-%
+%
+%
% \cvskillentry[*][<post_padding>]{<skill_cathegory>}{<0-5>}{<skill_name>}{<years_of_experience>}{<comment>}%
% add cvskill matrix row.
-%
+%
% Input:
-% asterix (optional): include horizontal (dashed) line above the entered line. This behaviour depends on the body style.
+% asterix (optional): include horizontal (dashed) line above the entered line. This behaviour depends on the body style.
% For the fancy style, the asterix has no meaning.
% input_1 (optional): padding length appended to the legend, default: <0.25em>
% input_2: string, naming skill cathegory, default: <>
@@ -102,98 +102,98 @@
% input_4: string, naming the skill, default: <>
% input_5: positive real number, stating the number of years of experience with this skill , default: <>
% input_6: string, explaining details w.r.t. that particual skill default: <>
-%
+%
% Example usages:
% \cvskillentry*{Language:}{3}{Python}{2}{I have done a million projects with Python}
% \cvskillentry{}{2}{Lilypond}{14}{So much sheet music! Man I'm the best!}
% \cvskillentry{}{3}{\LaTeX}{14}{Clearly I rock at \LaTeX}
% \cvskillentry*[1.5em]{OS:}{3}{Linux}{2}{I only use Archlinux}
-%
-% Note:
+%
+% Note:
% - The width of the columns can be adjusted by the \setcvskillcolumns command, see \setcvskillcolumns.
-%
-%
+%
+%
% \setcvskillcolumns[<width>][<factor>][<exp_width>]
% adjust column width of skill table
-%
-% The \cvskillentry command comes with default FIXED width definitions of the kill matrix for the columns
-% based on the author's own skill matrix. This is necessary to ensure that the entries are nicely aligned
+%
+% The \cvskillentry command comes with default FIXED width definitions of the kill matrix for the columns
+% based on the author's own skill matrix. This is necessary to ensure that the entries are nicely aligned
% and actually yield a decent looking table. The defaults depend on the style used and are chosen reasonably.
-% However, depending on the user input and the style that is used some of the columns might need adjustments.
-% The \setcvskillcolumns command provides means to influence the width of the first, the third and the fourth
+% However, depending on the user input and the style that is used some of the columns might need adjustments.
+% The \setcvskillcolumns command provides means to influence the width of the first, the third and the fourth
% skill matrix column. The second column containg the output of \cvskill remains fixed width. The last column,
% the comment column gets recalculated according to the setting of the other columns.
-%
+%
% Input
% Input_1 (optional): width smaller than \textwidth, default <\skillmatrix@hintscolumnwidth>
-% Input_2 (optional): float between 0 and 1 adjusting how much percent of the table width without
+% Input_2 (optional): float between 0 and 1 adjusting how much percent of the table width without
% the first column is used columns two, three and four. Through this parameter
% the width of the 3rd column (skill name) can be adjusted, default <\skillmatrix@columnwidth>
-% Input_3 (optional): width smaller than \textwidth, setting the width of the 4th column
+% Input_3 (optional): width smaller than \textwidth, setting the width of the 4th column
% (Years of experience), default <\cvskill@experiencewidth>
-%
+%
% Example usage
% \setcvskillcolumns[5em][][]% adjust first column. Same as \setcvskillcolumns[5em]
% \setcvskillcolumns[][0.45][]% adjust third (skill) column. Same as \setcvskillcolumns[][0.45]
% \setcvskillcolumns[][][\widthof{``Year''}]% adjust fourth (years) column.
-% \setcvskillcolumns[\widthof{``Language''}][0.48][]% adjust 1st and 3rd columns. Same as \setcvskillcolumns[\widthof{``Language''}][0.45]
+% \setcvskillcolumns[\widthof{``Language''}][0.48][]% adjust 1st and 3rd columns. Same as \setcvskillcolumns[\widthof{``Language''}][0.45]
% \setcvskillcolumns[\widthof{``Management Tools''}][0.6][3em]% ajust all at once.
-%
+%
% Note
% - For the styles 'classic' and 'casual' the first column is set to hintscolumnwidth such that
-% it aligns with the rest of the entries. A readjustment of the first column should therefor
-% be avoided. It is recomended to only use \setcvskillcolumns in the form of
+% it aligns with the rest of the entries. A readjustment of the first column should therefor
+% be avoided. It is recomended to only use \setcvskillcolumns in the form of
% \setcvskillcolumns[][<factor>][<width>], thereby leaving the defaults in place for the first column.
-%
-%
+%
+%
% \setcvskilllegendcolumns[<width>][<factor>]
% adjust column width of legend
-%
-% The \cvskilllegend command comes with default FIXED width definitions for the columns of the legend matrix
-% such that the default english and german examples look good.
-% However, depending on the user input (translation) and the style that is used some adjustment might be needed.
-% The \setcvskilllegendcolumns command provides means to influence all columns except the ones containing
+%
+% The \cvskilllegend command comes with default FIXED width definitions for the columns of the legend matrix
+% such that the default english and german examples look good.
+% However, depending on the user input (translation) and the style that is used some adjustment might be needed.
+% The \setcvskilllegendcolumns command provides means to influence all columns except the ones containing
% \cvskill commands. The second column containg the output of \cvskill remains fixed width. The last column,
% the comment column gets recalculated according to the setting of the other columns.
-%
+%
% Input
-% Input_1 (optional): length smaller than \textwidth influencing the width of the first column
-% where depending on the style the legend_string gets printed. In case the
-% string is left empty adjusting this width allows moving the legend horizontally.
+% Input_1 (optional): length smaller than \textwidth influencing the width of the first column
+% where depending on the style the legend_string gets printed. In case the
+% string is left empty adjusting this width allows moving the legend horizontally.
% Default <\skilllegend@hintscolumnwidth>
-% Input_2 (optional): float between 0 and 1 influencing the width of the left legend descritor column,
-% aka \cvskilllegend@leftdescriptorwidth. The desriptor column on the right,
+% Input_2 (optional): float between 0 and 1 influencing the width of the left legend descritor column,
+% aka \cvskilllegend@leftdescriptorwidth. The desriptor column on the right,
% \cvskilllegend@rightdescriptorwidth is influenced by the factor 1-<factor>.
% Default <\skilllegend@leftdesriptorfactor>
-%
+%
% Example usage
% \setcvskilllegendcolumns[][0.45]%% adjust left desriptor column.
% \setcvskilllegendcolumns[\widthof{``Legend''}][0.45]% adjust both left descriptor column and string column
-%
+%
% Note
-% - Due to implementation of \cvskilllegend for style 'fancy' (moderncvbodyv)
+% - Due to implementation of \cvskilllegend for style 'fancy' (moderncvbodyv)
% the first optional variable has no effect in this case.
% - For the styles 'classic' and 'casual' the first column is set to hintscolumnwidth such that
-% it aligns with the rest of the entries. A readjustment of the first column should therefor
-% be avoided. It is recomended to only use \cvskilllegend in the form of
+% it aligns with the rest of the entries. A readjustment of the first column should therefor
+% be avoided. It is recomended to only use \cvskilllegend in the form of
% \cvskilllegend[][<factor>], thereby leaving the defaults in place for the first column.
% - For style 'banking' the first column is set to align with the rest of the \cvskillentry entries
-% Therefor adjusting the first column can be used to widen the table while moving it around. If no
+% Therefor adjusting the first column can be used to widen the table while moving it around. If no
% legend string is used, setting \cvskilllegend[0em] maximises the real enstate for the legend.
-%
-%
+%
+%
% PRIVATE COMMANDS
-%
+%
% \recompute@cvskillmatrix@lengths
-% compute all lengths necessary for the skill matrix depending on
+% compute all lengths necessary for the skill matrix depending on
% the moderncv style (moderncvbody)
-%
+%
% Input: none
-%
+%
% Example usage (only internally in moderncvbody<i-v>.sty)
-% \recompute@cvskillmatrix@lengths
-%
-%
+% \recompute@cvskillmatrix@lengths
+%
+%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
% available at http://www.latex-project.org/lppl/.
@@ -203,10 +203,10 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvskillmatrix}[2022-02-21 v2.3.1 modern curriculum vitae and letter skill matrix]
+\ProvidesPackage{moderncvskillmatrix}[2024-07-18 v2.4.1 modern curriculum vitae and letter skill matrix]
-% The definitions need to be adjusted depending on which moderncvbody<i-v>.sty style is usde.
-% body type options: "moderncvbodyi" (default), "moderncvbodyii", "moderncvbodyiii", "moderncvbodyiv" or "moderncvbodyv"
+% The definitions need to be adjusted depending on which moderncvbody<i-v>.sty style is usde.
+% body type options: "moderncvbodyi" (default), "moderncvbodyii", "moderncvbodyiii", "moderncvbodyiv" or "moderncvbodyv"
\@initializeif{\if@moderncvbodyi}\@moderncvbodyifalse
\DeclareOption{moderncvbodyi}{\@moderncvbodyitrue\@moderncvbodyiifalse\@moderncvbodyiiifalse\@moderncvbodyivfalse\@moderncvbodyvfalse}
\@initializeif{\if@moderncvbodyii}\@moderncvbodyiifalse % this option is added in case moderncvbodyii gets implemented standalone
@@ -218,6 +218,10 @@
\@initializeif{\if@moderncvbodyv}\@moderncvbodyvfalse
\DeclareOption{moderncvbodyv}{\@moderncvbodyifalse\@moderncvbodyiifalse\@moderncvbodyiiifalse\@moderncvbodyivfalse\@moderncvbodyvtrue}
+% If option `circle` is specified, use circles instead of small rectangles for rating skills
+\@initializeif{\if@cvskillcircle}\@cvskillcirclefalse
+\DeclareOption{circle}{\@cvskillcircletrue}
+
\DeclareOption*{}% avoid choking on unknown options
\ExecuteOptions{moderncvbodyi}
\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
@@ -239,23 +243,29 @@
% %-------------------------------------------------------------------------------
% The code for the Skilllevel illustration with the little boxes.
% This is idea stolen from the limecv package, see https://github.com/opieters/limecv.git
-\@initializelength{\cvSkill@RectangleSize}
-\setlength{\cvSkill@RectangleSize}{1.2ex}
+\@initializelength{\cvSkill@ShapeSize}
+\if@cvskillcircle%
+ \setlength{\cvSkill@ShapeSize}{.7ex}%
+ \def\cvSkill@Shape#1{\tikz\filldraw[#1] (0, 0) circle (\cvSkill@ShapeSize);}
+\else
+ \setlength{\cvSkill@ShapeSize}{1.2ex}
+ \def\cvSkill@Shape#1{\tikz\filldraw[#1] (0, 0) rectangle (\cvSkill@ShapeSize, \cvSkill@ShapeSize);}
+\fi
\newcount\my@repeat@count
\DeclareDocumentCommand{\cvskill}{m}{%
% Illustrate skill level with little colored boxes.
-% By default five skill levels are predefined.
-%
-% Input:
+% By default five skill levels are predefined.
+%
+% Input:
% integer between 0 and 5
-% Example usage:
+% Example usage:
% \cvskill{3}
\begingroup
\my@repeat@count=\z@
- \@whilenum\my@repeat@count<#1\do{\tikz\filldraw[color1] (0, 0) rectangle (\cvSkill@RectangleSize, \cvSkill@RectangleSize);\advance%
+ \@whilenum\my@repeat@count<#1\do{\cvSkill@Shape{skillmatrixfullcolor}\advance%
\my@repeat@count\@ne\,}%
\my@repeat@count=\numexpr5-\z@\relax
- \@whilenum\my@repeat@count>#1\do{\tikz\filldraw[color2!30] (0, 0) rectangle (\cvSkill@RectangleSize, \cvSkill@RectangleSize);\advance%
+ \@whilenum\my@repeat@count>#1\do{\cvSkill@Shape{skillmatrixemptycolor}\advance%
\my@repeat@count\m@ne\,}%
\endgroup
}% end \cvskill
@@ -279,10 +289,10 @@
\@initializelength{\skilllegend@padding}
\@initializelength{\skilllegend@bodylength}
-% \separatorrulewidth is defined in moderncvbodyv.sty and we need to
+% \separatorrulewidth is defined in moderncvbodyv.sty and we need to
% define it to not throw an error in the other cases
\if@moderncvbodyv%
-%
+%
\else%
\@initializelength{\separatorrulewidth}
\setlength{\separatorrulewidth}{1ex}
@@ -292,13 +302,13 @@
%% DEFINITION \recompute@cvskillmatrix@lengths
% declare the command \recompute@cvskillmatrix@lengths empty
\DeclareDocumentCommand{\recompute@cvskillmatrix@lengths}{}{}%
-% compute all lengths necessary for the skill matrix depending on
+% compute all lengths necessary for the skill matrix depending on
% the moderncv style (moderncvbody)
-%
+%
% Input: none
-%
+%
% Example usage (only internally in moderncvbody<i-v>.sty)
-% \recompute@cvskillmatrix@lengths
+% \recompute@cvskillmatrix@lengths
% Definition of \recompute@cvskillmatrix@lengths for moderncvbodyi
\if@moderncvbodyi%
@@ -332,7 +342,7 @@
\setlength{\cvskill@descriptorwidth}{\skillmatrix@columnwidth-\cvskill@width-\cvskill@experiencewidth}%
\setlength{\skillmatrix@commentwidth}{\skillmatrix@bodylength-\skillmatrix@columnwidth-3\skillmatrix@padding}%
% lengths and definitions needed for the legends
- % note that \skillmatrix@padding also affects the appearance of legends
+ % note that \skillmatrix@padding also affects the appearance of legends
\setlength{\skilllegend@padding}{0.25ex}%
\setlength{\skilllegend@hintscolumnwidth}{\skillmatrix@hintscolumnwidth}%
\setlength{\skilllegend@bodylength}{\skillmatrix@bodylength}%
@@ -352,7 +362,7 @@
\setlength{\cvskill@descriptorwidth}{\skillmatrix@columnwidth-\cvskill@width-\cvskill@experiencewidth}
\setlength{\skillmatrix@commentwidth}{\skillmatrix@bodylength-\skillmatrix@columnwidth-3\skillmatrix@padding}%
% lengths and definitions needed for the legends
- % note that \skillmatrix@padding also affects the appearance of legends
+ % note that \skillmatrix@padding also affects the appearance of legends
\setlength{\skilllegend@padding}{0.25ex}
\setlength{\skilllegend@hintscolumnwidth}{0ex}%\skillmatrix@hintscolumnwidth
\setlength{\skilllegend@bodylength}{\maincolumnwidth}
@@ -371,7 +381,7 @@
\setlength{\cvskill@descriptorwidth}{\skillmatrix@columnwidth-\cvskill@width-\cvskill@experiencewidth}%
\setlength{\skillmatrix@commentwidth}{\skillmatrix@bodylength-\skillmatrix@columnwidth-3\skillmatrix@padding}%
% lengths and definitions needed for the legends
- % note that \skillmatrix@padding also affects the appearance of legends
+ % note that \skillmatrix@padding also affects the appearance of legends
\setlength{\skilllegend@padding}{0.25ex}%
\setlength{\skilllegend@hintscolumnwidth}{\skillmatrix@hintscolumnwidth}%
\setlength{\skilllegend@bodylength}{\maincolumnwidth}%
@@ -385,43 +395,43 @@
% \setcvskillcolumns[<width>][<factor>][<exp_width>]
\DeclareDocumentCommand{\setcvskillcolumns}{+O{\skillmatrix@hintscolumnwidth} +O{\skillmatrix@columnwidth} +O{\cvskill@experiencewidth}}{%
% adjust column width of skill table
-%
-% The \cvskillentry command comes with default FIXED width definitions of the kill matrix for the columns
-% based on the author's own skill matrix. This is necessary to ensure that the entries are nicely aligned
+%
+% The \cvskillentry command comes with default FIXED width definitions of the kill matrix for the columns
+% based on the author's own skill matrix. This is necessary to ensure that the entries are nicely aligned
% and actually yield a decent looking table. The defaults depend on the style used and are chosen reasonably.
-% However, depending on the user input and the style that is used some of the columns might need adjustments.
-% The \setcvskillcolumns command provides means to influence the width of the first, the third and the fourth
+% However, depending on the user input and the style that is used some of the columns might need adjustments.
+% The \setcvskillcolumns command provides means to influence the width of the first, the third and the fourth
% skill matrix column. The second column containg the output of \cvskill remains fixed width. The last column,
% the comment column gets recalculated according to the setting of the other columns.
-%
+%
% Input
% Input_1 (optional): width smaller than \textwidth, default <\skillmatrix@hintscolumnwidth>
-% Input_2 (optional): float between 0 and 1 adjusting how much percent of the table width without
+% Input_2 (optional): float between 0 and 1 adjusting how much percent of the table width without
% the first column is used columns two, three and four. Through this parameter
% the width of the 3rd column (skill name) can be adjusted, default <\skillmatrix@columnwidth>
-% Input_3 (optional): width smaller than \textwidth, setting the width of the 4th column
+% Input_3 (optional): width smaller than \textwidth, setting the width of the 4th column
% (Years of experience), default <\cvskill@experiencewidth>
-%
+%
% Example usage
% \setcvskillcolumns[5em][][]% adjust first column. Same as \setcvskillcolumns[5em]
% \setcvskillcolumns[][0.45][]% adjust third (skill) column. Same as \setcvskillcolumns[][0.45]
% \setcvskillcolumns[][][\widthof{``Year''}]% adjust fourth (years) column.
-% \setcvskillcolumns[\widthof{``Language''}][0.48][]% adjust 1st and 3rd columns. Same as \setcvskillcolumns[\widthof{``Language''}][0.45]
+% \setcvskillcolumns[\widthof{``Language''}][0.48][]% adjust 1st and 3rd columns. Same as \setcvskillcolumns[\widthof{``Language''}][0.45]
% \setcvskillcolumns[\widthof{``Management Tools''}][0.6][3em]% ajust all at once.
-%
+%
% Note
% - For the styles 'classic' and 'casual' the first column is set to hintscolumnwidth such that
-% it aligns with the rest of the entries. A readjustment of the first column should therefor
-% be avoided. It is recomended to only use \setcvskillcolumns in the form of
+% it aligns with the rest of the entries. A readjustment of the first column should therefor
+% be avoided. It is recomended to only use \setcvskillcolumns in the form of
% \setcvskillcolumns[][<factor>][<width>], thereby leaving the defaults in place for the first column.
-%
+%
\def\arg@new@hintscolumnwidth{#1}% <-- all these terminal % signs are necessary for the fancy style to not show weird spaces!!!
- \def\arg@new@bodyLengthFactor{#2}%
- \def\arg@new@experienceWidth{#3}%
- % Check for empty arguments. Defaults are given. Thus a call of \setcvskillcolumns
+ \def\arg@new@bodyLengthFactor{#2}%
+ \def\arg@new@experienceWidth{#3}%
+ % Check for empty arguments. Defaults are given. Thus a call of \setcvskillcolumns
% without any arguments leads to nonempty arguments \arg@new@hintscolumnwidth and
- % \def\arg@new@bodyLengthFactor{#2}. However, we need to take care of calls like
- % \setcvskillcolumns[], \setcvskillcolumns[][], \setcvskillcolumns[][][] or even
+ % \def\arg@new@bodyLengthFactor{#2}. However, we need to take care of calls like
+ % \setcvskillcolumns[], \setcvskillcolumns[][], \setcvskillcolumns[][][] or even
% \setcvskillcolumns[<somelength>][], \setcvskillcolumns[][<somefactor>] \setcvskillcolumns[][][<length>]
\ifdefempty{\arg@new@hintscolumnwidth}{%
% Case \setcvskillcolumns[], \setcvskillcolumns[][] or \setcvskillcolumns[][<somefactor>]
@@ -445,13 +455,13 @@
% \cvskill@descriptorwidth accordingly
\setlength{\cvskill@experiencewidth}{\arg@new@experienceWidth}%
\setlength{\cvskill@descriptorwidth}{\skillmatrix@columnwidth-\cvskill@width-\cvskill@experiencewidth}%
- }%
+ }%
\setlength{\cvskill@descriptorwidth}{\skillmatrix@columnwidth-\cvskill@width-\cvskill@experiencewidth}%
\setlength{\skillmatrix@commentwidth}{\skillmatrix@bodylength-\skillmatrix@columnwidth-3\skillmatrix@padding}%
}%
% Case \setcvskillcolumns[] nothing needs to be done here recalculate lengths affected by the change
- }{%
- % Case \setcvskillcolumns, \setcvskillcolumns[<width>], \setcvskillcolumns[<width>][]
+ }{%
+ % Case \setcvskillcolumns, \setcvskillcolumns[<width>], \setcvskillcolumns[<width>][]
% or \setcvskillcolumns[<width>][<somefactor>]
\setlength{\skillmatrix@hintscolumnwidth}{\arg@new@hintscolumnwidth}%
\setlength{\skillmatrix@bodylength}{\maincolumnwidth-\skillmatrix@hintscolumnwidth-\separatorcolumnwidth}%
@@ -483,41 +493,41 @@
\setlength{\skillmatrix@commentwidth}{\skillmatrix@bodylength-\skillmatrix@columnwidth-3\skillmatrix@padding}%
}%
}%
-%
+%
% \setcvskilllegendcolumns[<width>][<factor>]
\DeclareDocumentCommand{\setcvskilllegendcolumns}{+O{\skilllegend@hintscolumnwidth} +O{\skilllegend@leftdesriptorfactor}}{%
% adjust column width of legend
-%
-% The \cvskilllegend command comes with default FIXED width definitions for the columns of the legend matrix
-% such that the default english and german examples look good.
-% However, depending on the user input (translation) and the style that is used some adjustment might be needed.
-% The \setcvskilllegendcolumns command provides means to influence all columns except the ones containing
+%
+% The \cvskilllegend command comes with default FIXED width definitions for the columns of the legend matrix
+% such that the default english and german examples look good.
+% However, depending on the user input (translation) and the style that is used some adjustment might be needed.
+% The \setcvskilllegendcolumns command provides means to influence all columns except the ones containing
% \cvskill commands. The second column containg the output of \cvskill remains fixed width. The last column,
% the comment column gets recalculated according to the setting of the other columns.
-%
+%
% Input
-% Input_1 (optional): length smaller than \textwidth influencing the width of the first column
-% where depending on the style the legend_string gets printed. In case the
-% string is left empty adjusting this width allows moving the legend horizontally.
+% Input_1 (optional): length smaller than \textwidth influencing the width of the first column
+% where depending on the style the legend_string gets printed. In case the
+% string is left empty adjusting this width allows moving the legend horizontally.
% Default <\skilllegend@hintscolumnwidth>
-% Input_2 (optional): float between 0 and 1 influencing the width of the left legend descritor column,
-% aka \cvskilllegend@leftdescriptorwidth. The desriptor column on the right,
+% Input_2 (optional): float between 0 and 1 influencing the width of the left legend descritor column,
+% aka \cvskilllegend@leftdescriptorwidth. The desriptor column on the right,
% \cvskilllegend@rightdescriptorwidth is influenced by the factor 1-<factor>.
% Default <\skilllegend@leftdesriptorfactor>
-%
+%
% Example usage
% \setcvskilllegendcolumns[][0.45]%% adjust left desriptor column.
% \setcvskilllegendcolumns[\widthof{``Legend''}][0.45]% adjust both left descriptor column and string column
-%
+%
% Note
-% - Due to implementation of \cvskilllegend for style 'fancy' (moderncvbodyv)
+% - Due to implementation of \cvskilllegend for style 'fancy' (moderncvbodyv)
% the first optional variable has no effect in this case.
% - For the styles 'classic' and 'casual' the first column is set to hintscolumnwidth such that
-% it aligns with the rest of the entries. A readjustment of the first column should therefor
-% be avoided. It is recomended to only use \cvskilllegend in the form of
+% it aligns with the rest of the entries. A readjustment of the first column should therefor
+% be avoided. It is recomended to only use \cvskilllegend in the form of
% \cvskilllegend[][<factor>], thereby leaving the defaults in place for the first column.
% - For style 'banking' the first column is set to align with the rest of the \cvskillentry entries
-% Therefor adjusting the first column can be used to widen the table while moving it around. If no
+% Therefor adjusting the first column can be used to widen the table while moving it around. If no
% legend string is used, setting \cvskilllegend[0em] maximises the real enstate for the legend.
%
\def\arg@new@legend@hintscolumnwidth{#1}%
@@ -532,8 +542,8 @@
\RenewDocumentCommand{\skilllegend@leftdesriptorfactor}{}{\arg@new@legend@leftDescriptorFactor}%
}%
% % Case \setcvskilllegendcolumns[] nothing needs to be done here i.e. leave default values unaltered
- }{%
- % Case \setcvskilllegendcolumns, \setcvskilllegendcolumns[<width>], \setcvskilllegendcolumns[<width>][]
+ }{%
+ % Case \setcvskilllegendcolumns, \setcvskilllegendcolumns[<width>], \setcvskilllegendcolumns[<width>][]
% or \setcvskilllegendcolumns[<width>][<somefactor>]
\setlength{\skilllegend@hintscolumnwidth}{\arg@new@legend@hintscolumnwidth}%
\if@moderncvbodyi%
@@ -554,18 +564,18 @@
}%
}%
}%
-%
+%
% %-------------------------------------------------------------------------------
-% % \cvskilllegend
+% % \cvskilllegend
% %-------------------------------------------------------------------------------
% default legend style
% \cvskilllegend[*][<post_padding>][<first_level>][<second_level>][<third_level>][<fourth_level>][<fifth_level>]{<name>}
\NewDocumentCommand\skillLegend@FontSize{}{\scriptsize}
\DeclareDocumentCommand\cvskilllegend{s +O{} +O{} +O{} +O{} +O{} +O{} +m}{}%
% Print legend table explaining the meaning of \cvskill{1}...\cvskill{5}.
-%
+%
% Input:
-% asterix (optional): include vertical (dashed) lines. This behaviour depends on the body style.
+% asterix (optional): include vertical (dashed) lines. This behaviour depends on the body style.
% For the fancy style, the asterix has no meaning.
% input_1 (optional): padding length appended to the legend, default: <0.25em>
% input_2 (optional): string describing meaning of \cvskill{1}, default: <basic knowledge>
@@ -574,15 +584,15 @@
% input_5 (optional): string describing meaning of \cvskill{4}, default: <deepened expert knowledge>
% input_6 (optional): string describing meaning of \cvskill{5}, default: <expert/guru>
% input_7: string giving a name to the legend, default: <>
-%
+%
% Example usages:
% \cvskilllegend{} print default legend
% \cvskilllegend[0.5em]{Legend} print default legend, but adjust post padding and display the word ``Legend''.
% \cvskilllegend*[0.2em][Grundkenntnisse][Grundkenntnisse und eigene Erfahrung in Projekten][Umfangreiche Erfahrung in Projekten][Vertiefte Expertenkenntnisse][Experte/Guru]{Legende} Fully adjust legend to German example and including dashed lines
-%
+%
% Note:
% -The width of the columns can be adjusted by the \setcvskilllegendcolumns, see \setcvskilllegendcolumns
-% -The design of the table is such that the <second_level> entry stands in the first column but
+% -The design of the table is such that the <second_level> entry stands in the first column but
% occupies rows two and three. This has been done to accomodate english and german defaults.
% An alternative is provided by \cvskillplainlegend
@@ -596,7 +606,7 @@
\RenewDocumentCommand\cvskilllegend{s +O{.25em} +O{\skillLegend@defaultLevelOne} +O{\skillLegend@defaultLevelTwo} +O{\skillLegend@defaultLevelThree} +O{\skillLegend@defaultLevelFour} +O{\skillLegend@defaultLevelFive} +m}{%
\IfBooleanTF#1{% if a star is given, add dashed line
\begingroup%
- \arrayrulecolor{color1}%
+ \arrayrulecolor{bodyrulecolor}%
% calculate descriptor widths
\setlength{\cvskilllegend@leftdescriptorwidth}{\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-3\skilllegend@padding}%
\setlength{\cvskilllegend@rightdescriptorwidth}{\skilllegend@bodylength-\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-3\skilllegend@padding}%
@@ -610,7 +620,7 @@
\raggedleft\hintstyle{#8} & \cvskill{1}& & {\skillLegend@FontSize #3} & \cvskill{3}& &{\skillLegend@FontSize #5 } \\%
%
& \cvskill{2} & & \multirow{2}{\cvskilllegend@leftdescriptorwidth}{{\skillLegend@FontSize #4}} & \cvskill{4}& & {\skillLegend@FontSize #6 } \\%
- %
+ %
& & & & \cvskill{5}& & {\skillLegend@FontSize #7 }%
\end{tabular}%
\endgroup
@@ -629,7 +639,7 @@
\raggedleft\hintstyle{#8} & \cvskill{1}\, & \,{\skillLegend@FontSize #3} & \cvskill{3}\, &\,{\skillLegend@FontSize #5 } \\%
%
& \cvskill{2}\, & \,\multirow{2}{\cvskilllegend@leftdescriptorwidth}{{\skillLegend@FontSize #4}} & \cvskill{4}\, &\,{\skillLegend@FontSize #6 } \\%
- %
+ %
& & & \cvskill{5}\, &\,{\skillLegend@FontSize #7 }%
\end{tabular}%
\endgroup%
@@ -646,11 +656,11 @@
}%
\IfBooleanTF#1{% if a star is given, add dashed line
\begingroup%
- % recalculate desrciptor widths on the fly. Allows for different padding
+ % recalculate desrciptor widths on the fly. Allows for different padding
% in the stared and nonstared case
\setlength{\cvskilllegend@leftdescriptorwidth}{\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-4\skilllegend@padding}%
\setlength{\cvskilllegend@rightdescriptorwidth}{\skilllegend@bodylength-\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-4\skilllegend@padding}%
- \arrayrulecolor{color1}
+ \arrayrulecolor{bodyrulecolor}
\begin{tabular}{@{}p{\skilllegend@hintscolumnwidth}
@{\hspace{\separatorcolumnwidth}}p{\cvskill@width}@{\hspace{\skilllegend@padding}};{.6pt/1pt}%
p{2\skilllegend@padding}%
@@ -660,13 +670,13 @@
\raggedleft\hintstyle{} & \cvskill{1} & & {\skillLegend@FontSize #3} & \cvskill{3} & & {\skillLegend@FontSize #5 } \\
%
& \cvskill{2} & & \multirow{2}{\cvskilllegend@leftdescriptorwidth}{{\skillLegend@FontSize #4}} & \cvskill{4} & &{\skillLegend@FontSize #6 } \\
- %
- & & & & \cvskill{5}& & {\skillLegend@FontSize #7 }
+ %
+ & & & & \cvskill{5}& & {\skillLegend@FontSize #7 }
\end{tabular}%
\endgroup%
\par\addvspace{#2}}{
\begingroup%
- % oddly enough, we should only need to subtract 2 paddings in the descritorwidths.
+ % oddly enough, we should only need to subtract 2 paddings in the descritorwidths.
% but while testing I got overflow of text into the margin
\setlength{\cvskilllegend@leftdescriptorwidth}{\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-4\skilllegend@padding}%
\setlength{\cvskilllegend@rightdescriptorwidth}{\skilllegend@bodylength-\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-5\skilllegend@padding}%
@@ -678,8 +688,8 @@
\raggedleft\hintstyle{} & \cvskill{1} & {\skillLegend@FontSize #3} & \cvskill{3} & {\skillLegend@FontSize #5 } \\
%
& \cvskill{2} & \multirow{2}{\cvskilllegend@leftdescriptorwidth}{{\skillLegend@FontSize #4}} & \cvskill{4} &{\skillLegend@FontSize #6 } \\
- %
- & & & \cvskill{5} & {\skillLegend@FontSize #7 }
+ %
+ & & & \cvskill{5} & {\skillLegend@FontSize #7 }
\end{tabular}%
\endgroup%
\par\addvspace{#2}
@@ -697,7 +707,7 @@
}{%
\cvitem[-0.5em]{#8}{}%
}%
- \arrayrulecolor{color1}%
+ \arrayrulecolor{bodyrulecolor}%
\setlength\arrayrulewidth{\separatorrulewidth}%
\RenewDocumentCommand{\@starIndependentTabular}{}{%
\begingroup%
@@ -713,32 +723,32 @@
\@moderncvstrut{4pt}{16pt} & \cvskill{1}& {\skillLegend@FontSize #3} & \cvskill{3}& {\skillLegend@FontSize #5 }\\%
%
& \cvskill{2}& \multirow{2}{\cvskilllegend@leftdescriptorwidth}{{\skillLegend@FontSize #4}} & \cvskill{4}& {\skillLegend@FontSize #6 }\\%
- %
+ %
& & & \cvskill{5} & {\skillLegend@FontSize #7 }\\[#2]% the spacing needs to be inside the cell for the vertical rule to extend correctly
\end{tabular}%
\endgroup%
- \par\@aftersectionfalse\ignorespaces%
+ \par\@aftersectionfalse\ignorespaces%
}%
- % because of this weird style and the position of the parameter [#2], the dashed lines of the other version look bad. So no lines.
+ % because of this weird style and the position of the parameter [#2], the dashed lines of the other version look bad. So no lines.
\IfBooleanTF#1{%
\@starIndependentTabular%
- }{%
+ }{%
\@starIndependentTabular%
}%
}%
\fi
% %-------------------------------------------------------------------------------
-% % \cvskillplainlegend
+% % \cvskillplainlegend
% %-------------------------------------------------------------------------------
% alternative legend style
% \cvskillplainlegend[*][<post_padding>][<first_level>][<second_level>][<third_level>][<fourth_level>][<fifth_level>]{<name>}
\DeclareDocumentCommand\cvskillplainlegend{s +O{} +O{} +O{} +O{} +O{} +O{} +m}{}%
% Print alternative legend table explaining the meaning of \cvskill{1}...\cvskill{5}.
% In this legend, the first three skill levels are in one column
-%
+%
% Input:
-% asterix (optional): include vertical (dashed) lines. This behaviour depends on the body style.
+% asterix (optional): include vertical (dashed) lines. This behaviour depends on the body style.
% For the fancy style, the asterix has no meaning.
% input_1 (optional): padding length appended to the legend, default: <0.25em>
% input_2 (optional): string describing meaning of \cvskill{1}, default: <basic knowledge>
@@ -747,12 +757,12 @@
% input_5 (optional): string describing meaning of \cvskill{4}, default: <deepened expert knowledge>
% input_6 (optional): string describing meaning of \cvskill{5}, default: <expert/guru>
% input_7: string giving a name to the legend, default: <>
-%
+%
% Example usages:
% \cvskillplainlegend{} print default legend
% \cvskillplainlegend[0.5em]{Legend} print default legend, but adjust post padding and display the word ``Legend''.
% \cvskillplainlegend*[0.2em][Grundkenntnisse][Grundkenntnisse und eigene Erfahrung in Projekten][Umfangreiche Erfahrung in Projekten][Vertiefte Expertenkenntnisse][Experte/Guru]{Legende} Fully adjust legend to German example and including dashed lines
-%
+%
% Note:
% -The width of the columns can be adjusted by the \setcvskilllegendcolumns, see \setcvskilllegendcolumns
@@ -766,7 +776,7 @@
\RenewDocumentCommand\cvskillplainlegend{s +O{.25em} +O{\skillPlainLegend@defaultLevelOne} +O{\skillPlainLegend@defaultLevelTwo} +O{\skillPlainLegend@defaultLevelThree} +O{\skillPlainLegend@defaultLevelFour} +O{\skillPlainLegend@defaultLevelFive} +m}{%
\IfBooleanTF#1{% if a star is given, add dashed line
\begingroup%
- \arrayrulecolor{color1}%
+ \arrayrulecolor{bodyrulecolor}%
% calculate descriptor widths
\setlength{\cvskilllegend@leftdescriptorwidth}{\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-3\skilllegend@padding}%
\setlength{\cvskilllegend@rightdescriptorwidth}{\skilllegend@bodylength-\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-3\skilllegend@padding}%
@@ -780,7 +790,7 @@
\raggedleft\hintstyle{#8} & \cvskill{1}& & {\skillLegend@FontSize #3} & \cvskill{4}& &{\skillLegend@FontSize #6} \\%
%
& \cvskill{2} & & {\skillLegend@FontSize #4} & \cvskill{5}& & {\skillLegend@FontSize #7} \\%
- %
+ %
& \cvskill{3} & & {\skillLegend@FontSize #5} & & & %
\end{tabular}%
\endgroup%
@@ -799,7 +809,7 @@
\raggedleft\hintstyle{#8} & \cvskill{1} & {\skillLegend@FontSize #3} & \cvskill{4} &{\skillLegend@FontSize #6} \\%
%
& \cvskill{2} & {\skillLegend@FontSize #4} & \cvskill{5} &{\skillLegend@FontSize #7} \\%
- %
+ %
& \cvskill{3} & {\skillLegend@FontSize #5 } & & %
\end{tabular}%
\endgroup%
@@ -816,7 +826,7 @@
}%
\IfBooleanTF#1{% if a star is given, add dashed line
\begingroup%
- \arrayrulecolor{color1}
+ \arrayrulecolor{bodyrulecolor}
\setlength{\cvskilllegend@leftdescriptorwidth}{\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-6\skilllegend@padding}%
\setlength{\cvskilllegend@rightdescriptorwidth}{\skilllegend@bodylength-\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-6\skilllegend@padding}%
\begin{tabular}{@{}p{\skilllegend@hintscolumnwidth}
@@ -828,8 +838,8 @@
\raggedleft\hintstyle{} & \cvskill{1} & & {\skillLegend@FontSize#3} & \cvskill{4} & & {\skillLegend@FontSize#6}\\%
%
& \cvskill{2} & &{\skillLegend@FontSize#4} & \cvskill{5} & &{\skillLegend@FontSize#7}\\%
- %
- & \cvskill{3} & &{\skillLegend@FontSize#5} & & &%
+ %
+ & \cvskill{3} & &{\skillLegend@FontSize#5} & & &%
\end{tabular}%
\endgroup%
\par\addvspace{#2}}{
@@ -845,7 +855,7 @@
\raggedleft\hintstyle{} & \cvskill{1} & {\skillLegend@FontSize #3} & \cvskill{4} & {\skillLegend@FontSize #6} \\
%
& \cvskill{2} & {\skillLegend@FontSize #4} & \cvskill{5} & {\skillLegend@FontSize #7} \\
- %
+ %
& \cvskill{3} & {\skillLegend@FontSize #5} & & %
\end{tabular}%
\endgroup
@@ -863,7 +873,7 @@
}{%
\cvitem[-0.5em]{#8}{}%
}%
- \arrayrulecolor{color1}%
+ \arrayrulecolor{bodyrulecolor}%
\setlength\arrayrulewidth{\separatorrulewidth}%
\RenewDocumentCommand{\@starIndependentTabular}{}{%
\begingroup%
@@ -879,16 +889,16 @@
\@moderncvstrut{4pt}{16pt} & \cvskill{1} & {\skillLegend@FontSize #3} & \cvskill{4} & {\skillLegend@FontSize #6}\\%
%
& \cvskill{2} & {\skillLegend@FontSize #4} & \cvskill{5} & {\skillLegend@FontSize #7}\\%
- %
+ %
& \cvskill{3} & {\skillLegend@FontSize #5} & & \\[#2]% the spacing needs to be inside the cell for the vertical rule to extend correctly
\end{tabular}%
\endgroup%
- \par\@aftersectionfalse\ignorespaces%
+ \par\@aftersectionfalse\ignorespaces%
}%
- % because of this weird style and the position of the parameter [#2], the dashed lines of the other version look bad. So no lines.
+ % because of this weird style and the position of the parameter [#2], the dashed lines of the other version look bad. So no lines.
\IfBooleanTF#1{%
\@starIndependentTabular%
- }{%
+ }{%
\@starIndependentTabular%
}%
}%
@@ -900,20 +910,20 @@
\NewDocumentCommand\cvSkillMatrix@HeadFont{}{\normalfont}
\DeclareDocumentCommand\cvskillhead{+O{} +O{} +O{} +O{} +O{}}{}%
% add skill matrix line acting as header explaining the meaning of columns.
-%
+%
% Input:
% input_1 (optional): padding length appended to the legend, default: <0.25em>
% input_2 (optional): string naming the level column (2nd column), default: <Level>
% input_3 (optional): string naming the skill column (3nd column), default: <Skill>
% input_4 (optional): string naming the experience-in-years column (4th column), default: <Years>
% input_5 (optional): string naming the comment column (5th column), default: <Comment>
-%
+%
% Example usages:
% \cvskillhead print default head.
% \cvskillhead[0.5em] print default head, but adjust post padding.
% \cvskillhead[0.25em][Level][F\"ahigkeit][Jahre][Bemerkung] Fully adjust head to German example
-%
-% Note:
+%
+% Note:
% - The width of the columns can be adjusted by the \setcvskillcolumns command, see \setcvskillcolumns.
\NewDocumentCommand\skillMatrix@HeaderDefaultOne{}{Level}
@@ -924,13 +934,13 @@
\RenewDocumentCommand\cvskillhead{O{.25em} +O{\skillMatrix@HeaderDefaultOne} +O{\skillMatrix@HeaderDefaultTwo} +O{\skillMatrix@HeaderDefaultThree} +O{\skillMatrix@HeaderDefaultFour}}{%
\begingroup
\renewcommand{\arraystretch}{1.25}
- \arrayrulecolor{color1}
+ \arrayrulecolor{bodyrulecolor}
\begin{tabular}{@{}p{\skillmatrix@hintscolumnwidth}@{\hspace{\separatorcolumnwidth}}%
p{\cvskill@width}@{\hspace{\skillmatrix@padding}}%
p{\cvskill@descriptorwidth}@{\hspace{\skillmatrix@padding}}%
p{\cvskill@experiencewidth}@{\hspace{\skillmatrix@padding}}
p{\skillmatrix@commentwidth}@{}}%
- & \centering{\cvSkillMatrix@HeadFont #2} & \centering{\cvSkillMatrix@HeadFont #3} & \centering{\cvSkillMatrix@HeadFont #4} & {\cvSkillMatrix@HeadFont #5}
+ & \centering{\cvSkillMatrix@HeadFont #2} & \centering{\cvSkillMatrix@HeadFont #3} & \centering{\cvSkillMatrix@HeadFont #4} & {\cvSkillMatrix@HeadFont #5}
\end{tabular}%
\endgroup
\par\addvspace{#1}
@@ -938,7 +948,7 @@
% Definition of \cvskillhead valid moderncvbodyv
\if@moderncvbodyv%
\RenewDocumentCommand\cvskillhead{O{.25em} +O{\skillMatrix@HeaderDefaultOne} +O{\skillMatrix@HeaderDefaultTwo} +O{\skillMatrix@HeaderDefaultThree} +O{\skillMatrix@HeaderDefaultFour}}{%
- \arrayrulecolor{color1}%
+ \arrayrulecolor{bodyrulecolor}%
\setlength\arrayrulewidth{\separatorrulewidth}%
\vspace*{-\separatorrulewidth}% HACK; I don't understand where the space is coming from, nor what it's exact value is :(
\begingroup%
@@ -954,19 +964,19 @@
& & \centering{\cvSkillMatrix@HeadFont#2} & \centering{\cvSkillMatrix@HeadFont#3} & \centering{\cvSkillMatrix@HeadFont#4} & {\cvSkillMatrix@HeadFont#5} \\[#1]% the spacing needs to be inside the cell for the vertical rule to extend correctly
\end{tabular}%
\endgroup%
- \par\@aftersectionfalse\ignorespaces%
+ \par\@aftersectionfalse\ignorespaces%
}%
\fi
% %-------------------------------------------------------------------------------
-% % \cvskillentry
+% % \cvskillentry
% %-------------------------------------------------------------------------------
% \cvskillentry[*][<post_padding>]{<skill_cathegory>}{<0-5>}{<skill_name>}{<years_of_experience>}{<comment>}%
\DeclareDocumentCommand\cvskillentry{s +O{} +m +m +m +m +m}{}%
% add cvskill matrix row.
-%
+%
% Input:
-% asterix (optional): include horizontal (dashed) line above the entered line. This behaviour depends on the body style.
+% asterix (optional): include horizontal (dashed) line above the entered line. This behaviour depends on the body style.
% For the fancy style, the asterix has no meaning.
% input_1 (optional): padding length appended to the legend, default: <0.25em>
% input_2: string, naming skill cathegory, default: <>
@@ -974,14 +984,14 @@
% input_4: string, naming the skill, default: <>
% input_5: positive real number, stating the number of years of experience with this skill , default: <>
% input_6: string, explaining details w.r.t. that particual skill default: <>
-%
+%
% Example usages:
% \cvskillentry*{Language:}{3}{Python}{2}{I have done a million projects with Python}
% \cvskillentry{}{2}{Lilypond}{14}{So much sheet music! Man I'm the best!}
% \cvskillentry{}{3}{\LaTeX}{14}{Clearly I rock at \LaTeX}
% \cvskillentry*[1.5em]{OS:}{3}{Linux}{2}{I only use Archlinux}
-%
-% Note:
+%
+% Note:
% - The width of the columns can be adjusted by the \setcvskillcolumns command, see \setcvskillcolumns.
% Definition of \cvskillentry valid for moderncvbodyi, moderncvbodyii, moderncvbodyiii, moderncvbodyiv
@@ -990,7 +1000,7 @@
\IfBooleanTF{#1}{% If a star is seen a dotted line is drawn above the entry
\begingroup
\renewcommand{\arraystretch}{1.25}
- \arrayrulecolor{color1}
+ \arrayrulecolor{bodyrulecolor}
\begin{tabular}{@{}p{\skillmatrix@hintscolumnwidth}@{\hspace{\separatorcolumnwidth}}%
p{\cvskill@width}@{\hspace{\skillmatrix@padding}}%
p{\cvskill@descriptorwidth}@{\hspace{\skillmatrix@padding}}%
@@ -1018,7 +1028,7 @@
\if@moderncvbodyv%
\DeclareDocumentCommand\@starIndependentMatrixEntry{}{}%
\RenewDocumentCommand\cvskillentry{s O{.25em} +m +m +m +m +m}{%
- \arrayrulecolor{color1}%
+ \arrayrulecolor{bodyrulecolor}%
\setlength\arrayrulewidth{\separatorrulewidth}%
\vspace*{-\separatorrulewidth}% HACK; I don't understand where the space is coming from, nor what it's exact value is :(
%test for the star * in the command
@@ -1038,13 +1048,13 @@
}%
\IfBooleanTF{#1}{% the star does not do anything here
\@starIndependentMatrixEntry%
- }{%
+ }{%
\@starIndependentMatrixEntry%
}%
\par\@aftersectionfalse\ignorespaces%
}%
\fi
-%
+%
\endinput
diff --git a/macros/latex/contrib/moderncv/moderncvstylebanking.sty b/macros/latex/contrib/moderncv/moderncvstylebanking.sty
index afc20e5399..6398480ef9 100644
--- a/macros/latex/contrib/moderncv/moderncvstylebanking.sty
+++ b/macros/latex/contrib/moderncv/moderncvstylebanking.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvstylebanking.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvstylebanking}[2022-02-21 v2.3.1 modern curriculum vitae and letter style scheme: banking]
+\ProvidesPackage{moderncvstylebanking}[2024-07-18 v2.4.1 modern curriculum vitae and letter style scheme: banking]
% body rules type options: "fullrules", "shortrules", "mixedrules" (default) or "norules"
\@initializecommand{\moderncvstylebodyoptions}{}
@@ -24,6 +24,12 @@
\DeclareOption{center} {\edef\moderncvstylebodyoptions{\moderncvstylebodyoptions,center}}
\DeclareOption{right} {\edef\moderncvstylebodyoptions{\moderncvstylebodyoptions,right}}
+% head options
+\@initializecommand{\moderncvstyleheadoptions}{}
+\@initializeif{\if@datainhead}\@datainheadtrue
+\DeclareOption{details}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,details}}
+\DeclareOption{nodetails}{\@datainheadfalse\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,nodetails}}
+
% toggle use of symbol fonts.
\@initializeif{\if@symbols}\@symbolsfalse
\DeclareOption{symbols} {\@symbolstrue}
@@ -55,19 +61,45 @@
% symbols
\if@symbols
- \moderncvicons{symbols} % use symbols
+ \moderncvicons{symbols} % use symbols
\else
\moderncvicons{letters} % do not use symbols, use letters
\fi
-
+%-------------------------------------------------------------------------------
+% Colors
+%-------------------------------------------------------------------------------
+% head and footer
+\colorlet{lastnamecolor}{color1}
+\colorlet{namecolor}{lastnamecolor}
+\colorlet{headrulecolor}{lastnamecolor!50}
+\colorlet{firstnamecolor}{lastnamecolor!60}
+\colorlet{titlecolor}{color2!85}
+\colorlet{addresscolor}{color2}
+\colorlet{quotecolor}{color1}
+\colorlet{pictureframecolor}{color1}
+% body
+\colorlet{bodyrulecolor}{color1}
+\colorlet{sectioncolor}{color1}
+\colorlet{subsectioncolor}{color1}
+\colorlet{hintstylecolor}{color0}
+% letter
+\colorlet{letterclosingcolor}{color2}
+% skillmatrix
+\colorlet{skillmatrixfullcolor}{color1}
+\colorlet{skillmatrixemptycolor}{color2!30}
%-------------------------------------------------------------------------------
% header, body & footer
%-------------------------------------------------------------------------------
-\moderncvhead{3}
+\moderncvhead[\moderncvstyleheadoptions]{3}
\moderncvbody[\moderncvstylebodyoptions]{3}
+\if@datainhead
+% if data is shown in head, do not include the footer
+\else
+ \moderncvfoot{1}
+\fi
\endinput
diff --git a/macros/latex/contrib/moderncv/moderncvstylecasual.sty b/macros/latex/contrib/moderncv/moderncvstylecasual.sty
index eba5df696e..1192c8911c 100644
--- a/macros/latex/contrib/moderncv/moderncvstylecasual.sty
+++ b/macros/latex/contrib/moderncv/moderncvstylecasual.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvstylecasual.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,12 +10,18 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvstylecasual}[2022-02-21 v2.3.1 modern curriculum vitae and letter style scheme: casual]
+\ProvidesPackage{moderncvstylecasual}[2024-07-18 v2.4.1 modern curriculum vitae and letter style scheme: casual]
% head section alignment options: "left" (default) or "right"
\@initializecommand{\moderncvstyleheadoptions}{}
\DeclareOption{left} {\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,left}}
\DeclareOption{right}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,right}}
+% head options alternate, details and no details
+\DeclareOption{alternate}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,alternate}}
+\@initializeif{\if@datainhead}\@datainheadfalse
+\DeclareOption{details}{\@datainheadtrue\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,details}}
+\DeclareOption{nodetails}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,nodetails}}
+
% toggle use of symbol fonts.
\@initializeif{\if@symbols}\@symbolsfalse
@@ -23,7 +29,7 @@
\DeclareOption{nosymbols} {\@symbolsfalse}
\DeclareOption*{}% avoid choking on unknown options
-\ExecuteOptions{right,symbols}
+\ExecuteOptions{right,symbols,nodetails}
\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
%-------------------------------------------------------------------------------
@@ -42,18 +48,46 @@
% symbols
\if@symbols
- \moderncvicons{symbols} % use symbols
+ \moderncvicons{symbols} % use symbols
\else
\moderncvicons{letters} % do not use symbols, use letters
\fi
+%-------------------------------------------------------------------------------
+% Colors
+%-------------------------------------------------------------------------------
+% head and footer
+\colorlet{lastnamecolor}{color2}
+\colorlet{namecolor}{lastnamecolor}
+\colorlet{headrulecolor}{lastnamecolor!50}
+\colorlet{firstnamecolor}{lastnamecolor!50}
+\colorlet{titlecolor}{color2}
+\colorlet{addresscolor}{color2}
+\colorlet{quotecolor}{color1}
+\colorlet{pictureframecolor}{color1}
+% body
+\colorlet{bodyrulecolor}{color1}
+\colorlet{sectioncolor}{color1}
+\colorlet{subsectioncolor}{color1}
+\colorlet{hintstylecolor}{color0}
+% letter
+\colorlet{letterclosingcolor}{color2}
+% skillmatrix
+\colorlet{skillmatrixfullcolor}{color1}
+\colorlet{skillmatrixemptycolor}{color2!30}
%-------------------------------------------------------------------------------
% header, body & footer
%-------------------------------------------------------------------------------
\moderncvhead[\moderncvstyleheadoptions]{2}
\moderncvbody{1}
-\moderncvfoot{1}
+% include foot only if nodetails option is active since otherwise we have two times the information
+% on the page
+\if@datainhead
+% if data is shown in head, do not include the footer
+\else
+ \moderncvfoot{1}
+\fi
\endinput
diff --git a/macros/latex/contrib/moderncv/moderncvstyleclassic.sty b/macros/latex/contrib/moderncv/moderncvstyleclassic.sty
index 3018cc67a7..07950bcfa5 100644
--- a/macros/latex/contrib/moderncv/moderncvstyleclassic.sty
+++ b/macros/latex/contrib/moderncv/moderncvstyleclassic.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvstyleclassic.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,12 +10,17 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvstyleclassic}[2022-02-21 v2.3.1 modern curriculum vitae and letter style scheme: classic]
+\ProvidesPackage{moderncvstyleclassic}[2024-07-18 v2.4.1 modern curriculum vitae and letter style scheme: classic]
% head section alignment options: "left" (default) or "right"
\@initializecommand{\moderncvstyleheadoptions}{}
\DeclareOption{left} {\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,left}}
\DeclareOption{right}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,right}}
+\DeclareOption{top}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,top}}
+
+\@initializeif{\if@datainhead}\@datainheadtrue
+\DeclareOption{details}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,details}}
+\DeclareOption{nodetails}{\@datainheadfalse\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,nodetails}}
% toggle use of symbol fonts.
\@initializeif{\if@symbols}\@symbolsfalse
@@ -23,7 +28,7 @@
\DeclareOption{nosymbols} {\@symbolsfalse}
\DeclareOption*{}% avoid choking on unknown options
-\ExecuteOptions{left,symbols}
+\ExecuteOptions{left,symbols,details}
\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
%-------------------------------------------------------------------------------
@@ -42,17 +47,46 @@
% symbols
\if@symbols
- \moderncvicons{symbols} % use symbols
+ \moderncvicons{symbols} % use symbols
\else
\moderncvicons{letters} % do not use symbols, use letters
\fi
+%-------------------------------------------------------------------------------
+% Colors
+%-------------------------------------------------------------------------------
+% head and footer
+\colorlet{lastnamecolor}{color2}
+\colorlet{namecolor}{lastnamecolor}
+\colorlet{headrulecolor}{lastnamecolor!50}
+\colorlet{firstnamecolor}{lastnamecolor!50}
+\colorlet{titlecolor}{color2}
+\colorlet{addresscolor}{color2}
+\colorlet{quotecolor}{color1}
+\colorlet{pictureframecolor}{color1}
+% body
+\colorlet{bodyrulecolor}{color1}
+\colorlet{sectioncolor}{color1}
+\colorlet{subsectioncolor}{color1}
+\colorlet{hintstylecolor}{color0}
+% letter
+\colorlet{letterclosingcolor}{color2}
+% skillmatrix
+\colorlet{skillmatrixfullcolor}{color1}
+\colorlet{skillmatrixemptycolor}{color2!30}
%-------------------------------------------------------------------------------
% header, body & footer
%-------------------------------------------------------------------------------
\moderncvhead[\moderncvstyleheadoptions]{1}
\moderncvbody{1}
+% include foot only if nodetails option is active since otherwise we have two times the information
+% on the page
+\if@datainhead
+% if data is shown in head, do not include the footer
+\else
+ \moderncvfoot{1}
+\fi
\endinput
diff --git a/macros/latex/contrib/moderncv/moderncvstylecontemporary.sty b/macros/latex/contrib/moderncv/moderncvstylecontemporary.sty
new file mode 100644
index 0000000000..32f02ceb37
--- /dev/null
+++ b/macros/latex/contrib/moderncv/moderncvstylecontemporary.sty
@@ -0,0 +1,63 @@
+%% start of file `moderncvstylecontemporary.sty'.
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com).
+%% Copyright 2023 Javier Lopez-Gomez (javier.lopez.gomez@proton.me).
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License version 1.3c,
+% available at http://www.latex-project.org/lppl/.
+
+
+%-------------------------------------------------------------------------------
+% identification
+%-------------------------------------------------------------------------------
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{moderncvstylecontemporary}[2023/11/24 v2.0.0 modern curriculum vitae and letter style scheme: contemporary]
+
+% head section alignment options: "left" (default) or "right"
+\@initializecommand{\moderncvstyleheadoptions}{}
+\DeclareOption{left} {\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,left}}
+\DeclareOption{right}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,right}}
+\DeclareOption{qr} {\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,qr}}
+\DeclareOption{noqr}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,noqr}}
+
+\DeclareOption*{}% avoid choking on unknown options
+\ExecuteOptions{left,qr}
+\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
+
+%-------------------------------------------------------------------------------
+% fonts & icons
+%-------------------------------------------------------------------------------
+% Latin Modern fonts
+%\ifxetexorluatex
+% \setmainfont{Latin Modern Roman}
+% \setsansfont{Latin Modern Sans}
+% \setmathfont{Latin Modern Math}
+%\else
+ \IfFileExists{lmodern.sty}%
+ {\RequirePackage{lmodern}}%
+ {}
+%\fi
+
+% symbols
+\providecolor{default-socialicon-color}{named}{headtext}
+\moderncvicons{symbols}
+
+%-------------------------------------------------------------------------------
+% Colors
+%-------------------------------------------------------------------------------
+% skillmatrix
+\colorlet{bodyrulecolor}{color1}
+\colorlet{skillmatrixfullcolor}{color1}
+\colorlet{skillmatrixemptycolor}{color2!30}
+
+%-------------------------------------------------------------------------------
+% header, body & footer
+%-------------------------------------------------------------------------------
+\moderncvhead[\moderncvstyleheadoptions]{7}
+\moderncvbody{6}
+
+
+\endinput
+
+
+%% end of file `moderncvstylecontemporary.sty'.
diff --git a/macros/latex/contrib/moderncv/moderncvstyleempty.sty b/macros/latex/contrib/moderncv/moderncvstyleempty.sty
index a86560524c..8dcce13aa5 100644
--- a/macros/latex/contrib/moderncv/moderncvstyleempty.sty
+++ b/macros/latex/contrib/moderncv/moderncvstyleempty.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvstyleempty.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvstyleempty}[2022-02-21 v2.3.1 modern curriculum vitae scheme: empty]
+\ProvidesPackage{moderncvstyleempty}[2024-07-18 v2.4.1 modern curriculum vitae scheme: empty]
%-------------------------------------------------------------------------------
% required packages
@@ -33,11 +33,34 @@
%-------------------------------------------------------------------------------
%-------------------------------------------------------------------------------
+% Colors
+%-------------------------------------------------------------------------------
+% head and footer
+\colorlet{lastnamecolor}{color2}
+% \colorlet{namecolor}{lastnamecolor}
+\colorlet{headrulecolor}{lastnamecolor!50}
+\colorlet{firstnamecolor}{lastnamecolor!50}
+\colorlet{titlecolor}{color2}
+\colorlet{addresscolor}{color2}
+\colorlet{quotecolor}{color1}
+\colorlet{pictureframecolor}{color1}
+% body
+\colorlet{bodyrulecolor}{color1}
+\colorlet{sectioncolor}{color1}
+\colorlet{subsectioncolor}{color1}
+\colorlet{hintstylecolor}{color0}
+% letter
+\colorlet{letterclosingcolor}{color2}
+% skillmatrix
+\colorlet{skillmatrixfullcolor}{color1}
+\colorlet{skillmatrixemptycolor}{color2!30}
+
+%-------------------------------------------------------------------------------
% fonts & icons
%-------------------------------------------------------------------------------
% symbols
\if@symbols
- \moderncvicons{symbols} % use symbols
+ \moderncvicons{symbols} % use symbols
\else
\moderncvicons{letters} % do not use symbols, use letters
\fi
diff --git a/macros/latex/contrib/moderncv/moderncvstylefancy.sty b/macros/latex/contrib/moderncv/moderncvstylefancy.sty
index 56de636100..1ad8d8732f 100644
--- a/macros/latex/contrib/moderncv/moderncvstylefancy.sty
+++ b/macros/latex/contrib/moderncv/moderncvstylefancy.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvstylefancy.sty'.
-%% Copyright 2015-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2015-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,13 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvstylefancy}[2022-02-21 v2.3.1 modern curriculum vitae and letter style scheme: fancy]
+\ProvidesPackage{moderncvstylefancy}[2024-07-18 v2.4.1 modern curriculum vitae and letter style scheme: fancy]
+
+% headoptions
+\@initializecommand{\moderncvstyleheadoptions}{}
+\@initializeif{\if@datainhead}\@datainheadtrue
+\DeclareOption{details}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,details}}
+\DeclareOption{nodetails}{\@datainheadfalse\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,nodetails}}
% toggle use of symbol fonts.
\@initializeif{\if@symbols}\@symbolsfalse
@@ -18,10 +24,34 @@
\DeclareOption{nosymbols} {\@symbolsfalse}
\DeclareOption*{}% avoid choking on unknown options
-\ExecuteOptions{symbols}
+\ExecuteOptions{symbols,details}
\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
%-------------------------------------------------------------------------------
+% Colors
+%-------------------------------------------------------------------------------
+% head and footer
+\colorlet{lastnamecolor}{color1}
+\colorlet{namecolor}{lastnamecolor}
+\colorlet{headrulecolor}{color1}
+\colorlet{firstnamecolor}{lastnamecolor!50}
+\colorlet{titlecolor}{color2}
+\colorlet{addresscolor}{color2}
+\colorlet{quotecolor}{color1}
+\colorlet{pictureframecolor}{color1}
+% body
+\colorlet{bodyrulecolor}{color1}
+\colorlet{sectioncolor}{color1}
+\colorlet{subsectioncolor}{color1}
+\colorlet{hintstylecolor}{color0}
+% letter
+\colorlet{letterclosingcolor}{color2}
+% skillmatrix
+\colorlet{skillmatrixfullcolor}{color1}
+\colorlet{skillmatrixemptycolor}{color2!30}
+
+
+%-------------------------------------------------------------------------------
% fonts & icons
%-------------------------------------------------------------------------------
% EB Garamond font
@@ -38,7 +68,7 @@
% symbols
\if@symbols
- \moderncvicons{symbols} % use symbols
+ \moderncvicons{symbols} % use symbols
\else
\moderncvicons{letters} % do not use symbols, use letters
\fi
@@ -47,9 +77,16 @@
%-------------------------------------------------------------------------------
% header, body & footer
%-------------------------------------------------------------------------------
-\moderncvhead{5}
+\moderncvhead[\moderncvstyleheadoptions]{5}
\moderncvbody{5}
+% include foot only if nodetails option is active since otherwise we have two times the information
+% on the page
+\if@datainhead
+% if data is shown in head, do not include the footer
+\else
+ \moderncvfoot{1}
+\fi
\endinput
diff --git a/macros/latex/contrib/moderncv/moderncvstyleoldstyle.sty b/macros/latex/contrib/moderncv/moderncvstyleoldstyle.sty
index 78225e0a58..37de3c57b3 100644
--- a/macros/latex/contrib/moderncv/moderncvstyleoldstyle.sty
+++ b/macros/latex/contrib/moderncv/moderncvstyleoldstyle.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvstyleoldstyle.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,14 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvstyleoldstyle}[2022-02-21 v2.3.1 modern curriculum vitae and letter style scheme: oldstyle]
+\ProvidesPackage{moderncvstyleoldstyle}[2024-07-18 v2.4.1 modern curriculum vitae and letter style scheme: oldstyle]
+
+% headoptions
+\@initializecommand{\moderncvstyleheadoptions}{}
+\@initializeif{\if@datainhead}\@datainheadtrue
+\DeclareOption{details}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,details}}
+\DeclareOption{nodetails}{\@datainheadfalse\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,nodetails}}
+
% toggle use of symbol fonts.
\@initializeif{\if@symbols}\@symbolsfalse
@@ -18,7 +25,7 @@
\DeclareOption{nosymbols} {\@symbolsfalse}
\DeclareOption*{}% avoid choking on unknown options
-\ExecuteOptions{symbols}
+\ExecuteOptions{symbols,details}
\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
%-------------------------------------------------------------------------------
@@ -51,11 +58,41 @@
%-------------------------------------------------------------------------------
+% Colors
+%-------------------------------------------------------------------------------
+% head and footer
+\colorlet{lastnamecolor}{color2}
+\colorlet{namecolor}{lastnamecolor}
+\colorlet{headrulecolor}{lastnamecolor!50}
+\colorlet{firstnamecolor}{lastnamecolor!50}
+\colorlet{titlecolor}{color2}
+\colorlet{addresscolor}{color2}
+\colorlet{quotecolor}{color1}
+\colorlet{pictureframecolor}{color1}
+% body
+\colorlet{bodyrulecolor}{color1}
+\colorlet{sectioncolor}{color1}
+\colorlet{subsectioncolor}{color1}
+\colorlet{hintstylecolor}{color0}
+% letter
+\colorlet{letterclosingcolor}{color2}
+% skillmatrix
+\colorlet{skillmatrixfullcolor}{color1}
+\colorlet{skillmatrixemptycolor}{color2!30}
+
+
+%-------------------------------------------------------------------------------
% header, body & footer
%-------------------------------------------------------------------------------
-\moderncvhead{4}
+\moderncvhead[\moderncvstyleheadoptions]{4}
\moderncvbody{4}
-
+% include foot only if nodetails option is active since otherwise we have two times the information
+% on the page
+\if@datainhead
+% if data is shown in head, do not include the footer
+\else
+ \moderncvfoot{1}
+\fi
\endinput
diff --git a/macros/latex/contrib/moderncv/moderncvverticaltimeline.sty b/macros/latex/contrib/moderncv/moderncvverticaltimeline.sty
new file mode 100644
index 0000000000..1ee94a5ef5
--- /dev/null
+++ b/macros/latex/contrib/moderncv/moderncvverticaltimeline.sty
@@ -0,0 +1,79 @@
+%% start of file `moderncvverticaltimeline.sty'.
+%% Copyright 2023 Javier Lopez-Gomez (javier.lopez.gomez@proton.me).
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License version 1.3c,
+% available at http://www.latex-project.org/lppl/.
+
+
+%-------------------------------------------------------------------------------
+% identification
+%-------------------------------------------------------------------------------
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{moderncvverticaltimeline}[2023/11/29 v2.0.0 modern curriculum vitae vertical timeline]
+
+
+%-------------------------------------------------------------------------------
+% required packages
+%-------------------------------------------------------------------------------
+\RequirePackage{tikz}
+
+%-------------------------------------------------------------------------------
+% vertical timeline implementation
+%-------------------------------------------------------------------------------
+\tikzset{
+ tl_milestone/.style={circle,inner sep=1.5pt,draw=color0!20,label={west:#1}},
+ tl_link/.style={thick,densely dotted,color0!20},
+}
+
+\newcounter{tl@chainidx}\setcounter{tl@chainidx}{0}
+\newcounter{tl@nodeidx}\setcounter{tl@nodeidx}{0}
+
+% Mark the end of the current chain; any `\tl@milestone` issued afterward will be on a new timeline.
+\def\tl@resetchain{%
+ \stepcounter{tl@chainidx}%
+ \setcounter{tl@nodeidx}{0}%
+}
+
+% Create a node in the current timeline and link it to the previous node; if the previous milestone
+% is on the last shipped out page, draw a line that extends until the top margin. The argument is laid out as a label (default left).
+\def\tl@milestone#1{%
+ \edef\@tl@prev{tl-\thetl@chainidx-\thetl@nodeidx}%
+ \stepcounter{tl@nodeidx}%
+ \edef\@tl@this{tl-\thetl@chainidx-\thetl@nodeidx}%
+ \tikz[remember picture,overlay] {
+ \node[tl_milestone={#1}] (\@tl@this) {};
+ \ifnum\thetl@nodeidx>1
+ \pgfpointdiff{\pgfpointanchor{\@tl@prev}{center}}{\pgfpointanchor{\@tl@this}{center}}
+ \ifnum\pgf@y>0
+ \draw[tl_link] (\@tl@this) -- ([yshift=-1em] \@tl@this |- current page.north);
+ \else
+ \draw[tl_link] (\@tl@this) -- (\@tl@prev);
+ \fi
+ \fi
+ }
+}
+
+\AddToHook{shipout/background}{%
+ % If there are follow-up milestones in the current timeline, draw a line that extends until the bottom margin
+ \edef\@tl@prev{tl-\thetl@chainidx-\number\numexpr\thetl@nodeidx-1}%
+ \edef\@tl@this{tl-\thetl@chainidx-\thetl@nodeidx}%
+ \tikz[remember picture,overlay] {
+ \ifnum\thetl@nodeidx>1
+ \pgfpointdiff{\pgfpointanchor{\@tl@prev}{center}}{\pgfpointanchor{\@tl@this}{center}}
+ \ifnum\pgf@y>0
+ \draw[tl_link] (\@tl@prev) -- ([yshift=1em] \@tl@prev |- current page.south);
+ \fi
+ \fi
+ }
+}
+
+\AtEndDocument{\tl@resetchain}
+
+\let\@old@section=\section%
+\RenewDocumentCommand{\section}{sm}{\tl@resetchain\@old@section{#1}}
+
+\endinput
+
+
+%% end of file `moderncvverticaltimeline.sty'.
diff --git a/macros/latex/contrib/moderncv/signature.png b/macros/latex/contrib/moderncv/signature.png
new file mode 100644
index 0000000000..8daa868ed8
--- /dev/null
+++ b/macros/latex/contrib/moderncv/signature.png
Binary files differ
diff --git a/macros/latex/contrib/moderncv/template.tex b/macros/latex/contrib/moderncv/template.tex
index 38d313b383..7128f09e08 100644
--- a/macros/latex/contrib/moderncv/template.tex
+++ b/macros/latex/contrib/moderncv/template.tex
@@ -1,5 +1,5 @@
%% start of file `template.tex'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -8,17 +8,23 @@
\documentclass[11pt,a4paper,sans]{moderncv} % possible options include font size ('10pt', '11pt' and '12pt'), paper size ('a4paper', 'letterpaper', 'a5paper', 'legalpaper', 'executivepaper' and 'landscape') and font family ('sans' and 'roman')
+\moderncvcolor{cerulean} % color options 'black', 'blue' (default), 'burgundy', 'green', 'grey', 'orange', 'purple' and 'red'; for contemporary style use 'cerulean'
% moderncv themes
-\moderncvstyle{casual} % style options are 'casual' (default), 'classic', 'banking', 'oldstyle' and 'fancy'
-\moderncvcolor{blue} % color options 'black', 'blue' (default), 'burgundy', 'green', 'grey', 'orange', 'purple' and 'red'
+\moderncvstyle[]{contemporary} % style options are 'casual' (default), 'classic', 'banking', 'oldstyle', 'fancy' and 'contemporary'
+ % the 'contemporary' style optionally takes the `qr` (default) or `noqr` options
%\renewcommand{\familydefault}{\sfdefault} % to set the default font; use '\sfdefault' for the default sans serif font, '\rmdefault' for the default roman one, or any tex font name
%\nopagenumbers{} % uncomment to suppress automatic page numbering for CVs longer than one page
% adjust the page margins
-\usepackage[scale=0.75]{geometry}
-\setlength{\footskip}{136.00005pt} % depending on the amount of information in the footer, you need to change this value. comment this line out and set it to the size given in the warning
+\usepackage[hmargin=0.5in,vmargin=10pt]{geometry} % the 'contemporary' style looks better with reduced margins; uncomment the line below for increased margin
+%\usepackage[scale=0.75]{geometry}
%\setlength{\hintscolumnwidth}{3cm} % if you want to change the width of the column with the dates
%\setlength{\makecvheadnamewidth}{10cm} % for the 'classic' style, if you want to force the width allocated to your name and avoid line breaks. be careful though, the length is normally calculated to avoid any overlap with your personal info; use this at your own typographical risks...
+%\setlength{\listitemsymbolspace}{10pt} % set custom spacing between list symbol and text item (influences \cvlistitem and \cvlistdoubleitem)
+
+% the 'contemporary' style allows to append additional elements to the head background; uncomment and customize if needed
+%\def\@moderncvheadBackground{
+%}
% font loading
% for luatex and xetex, do not use inputenc and fontenc
@@ -30,7 +36,13 @@
\setmainfont{Latin Modern Roman}
\setsansfont{Latin Modern Sans}
\setmonofont{Latin Modern Mono}
- \setmathfont{Latin Modern Math}
+ \setmathfont{Latin Modern Math}
+
+ % you may also consider Fira Sans Light for a extra modern look
+ %\setsansfont[ItalicFont={Fira Sans Light Italic},%
+ % BoldFont={Fira Sans},%
+ % BoldItalicFont={Fira Sans Italic}]%
+ % {Fira Sans Light}%
\else
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
@@ -54,24 +66,49 @@
% Social icons
\social[linkedin]{john.doe} % optional, remove / comment the line if not wanted
\social[xing]{john\_doe} % optional, remove / comment the line if not wanted
-\social[twitter]{ji\_doe} % optional, remove / comment the line if not wanted
+
\social[github]{jdoe} % optional, remove / comment the line if not wanted
\social[gitlab]{jdoe} % optional, remove / comment the line if not wanted
-\social[stackoverflow]{0000000/johndoe} % optional, remove / comment the line if not wanted
+\social[codeberg]{jdoe} % optional, remove / comment the line if not wanted
\social[bitbucket]{jdoe} % optional, remove / comment the line if not wanted
+\social[stackoverflow]{0000000/johndoe} % optional, remove / comment the line if not wanted
+
\social[skype]{jdoe} % optional, remove / comment the line if not wanted
\social[orcid]{0000-0000-000-000} % optional, remove / comment the line if not wanted
\social[researchgate]{jdoe} % optional, remove / comment the line if not wanted
\social[researcherid]{jdoe} % optional, remove / comment the line if not wanted
+\social[googlescholar]{googlescholarid} % optional, remove / comment the line if not wanted
+
+\social[twitter]{ji\_doe} % optional, remove / comment the line if not wanted
+\social[mastodon]{mastodon.social/web/@user} % optional, remove / comment the line if not wanted
\social[telegram]{jdoe} % optional, remove / comment the line if not wanted
\social[whatsapp]{12345678901} % optional, remove / comment the line if not wanted
\social[signal]{12345678901} % optional, remove / comment the line if not wanted
\social[matrix]{@johndoe:matrix.org} % optional, remove / comment the line if not wanted
-\social[googlescholar]{googlescholarid} % optional, remove / comment the line if not wanted
+\social[discord]{jdoe\#0000} % optional, remove / comment the line if not wanted
+
+% YouTube links can take several forms, depending on how your account and channel are set up.
+% See https://support.google.com/youtube/answer/6180214 for more information.
+\social[youtube]{c/jdoeschannel} % optional, remove / comment the line if not wanted; Custom URL - can be shorted by removing 'c/'
+\social[youtube]{channel/XXXXXX} % optional, remove / comment the line if not wanted; Channel URL (ID-based) - can not be shortened
+\social[youtube]{user/jdoe} % optional, remove / comment the line if not wanted; Legacy username URL - if jdoe is not already claimed by a Custom URL, can be shortened by removing 'user/'
+
+\social[twitch]{jdoe} % optional, remove / comment the line if not wanted
+\social[tiktok]{jdoe} % optional, remove / comment the line if not wanted
+\social[instagram]{jdoe} % optional, remove / comment the line if not wanted
+
+\social[soundcloud]{jdoe} % optional, remove / comment the line if not wanted
+
+\social[steam]{jdoe} % optional, remove / comment the line if not wanted
+\social[xbox]{jdoe} % optional, remove / comment the line if not wanted
+\social[playstation]{jdoe} % optional, remove / comment the line if not wanted
+\social[battlenet]{jdoe\#0000} % optional, remove / comment the line if not wanted
+\social[arxiv]{doe\_j\_1} % optional, remove / comment the line if not wanted
+\social[inspire]{0000000} % optional, remove / comment the line if not wanted
\extrainfo{additional information} % optional, remove / comment the line if not wanted
-\photo[64pt][0.4pt]{picture} % optional, remove / comment the line if not wanted; '64pt' is the height the picture must be resized to, 0.4pt is the thickness of the frame around it (put it to 0pt for no frame) and 'picture' is the name of the picture file
+\photo[64pt][2pt]{picture} % optional, remove / comment the line if not wanted; '64pt' is the height the picture must be resized to, 2pt is the thickness of the frame around it (put it to 0pt for no frame) and 'picture' is the name of the picture file
\quote{Some quote} % optional, remove / comment the line if not wanted
% bibliography adjustments (only useful if you make citations in your resume, or print a list of publications using BibTeX)
@@ -92,7 +129,7 @@
%----- resume ---------------------------------------------------------
\makecvtitle
-\section{Education}
+\section{Education} % for 'contemporary' style use optional argument for displaying an icon, e.g. \section[\faGraduationCap]{Education}
\cventry{year--year}{Degree}{Institution}{City}{\textit{Grade}}{Description} % arguments 3 to 6 can be left empty
\cventry{year--year}{Degree}{Institution}{City}{\textit{Grade}}{Description}
@@ -135,12 +172,13 @@ Detailed achievements:
\cvdoubleitem{category 1}{XXX, YYY, ZZZ}{category 4}{XXX, YYY, ZZZ}
\cvdoubleitem{category 2}{XXX, YYY, ZZZ}{category 5}{XXX, YYY, ZZZ}
\cvdoubleitem{category 3}{XXX, YYY, ZZZ}{category 6}{XXX, YYY, ZZZ}
+\cvtripleitem{category 4}{XYZ}{category 5}{XYZ}{category 6}{XYZ}
\section{Skill matrix}
\cvitem{Skill matrix}{Alternatively, provide a skill matrix to show off your skills}
-%% Skill matrix as an alternative to rate one's skills, computer or other.
+%% Skill matrix as an alternative to rate one's skills, computer or other.
-%% Adjusts width of skill matrix columns.
+%% Adjusts width of skill matrix columns.
%% Usage \setcvskillcolumns[<width>][<factor>][<exp_width>]
%% <width>, <exp_width> should be lengths smaller than \textwidth, <factor> needs to be between 0 and 1.
%% Examples:
@@ -179,12 +217,12 @@ Detailed achievements:
%% Adjust head of the skill matrix for other languages
% \cvskillhead[0.25em][Level][F\"ahigkeit][Jahre][Bemerkung]
-%% \cvskillentry[*][<post_padding>]{<skill_cathegory>}{<0-5>}{<skill_name>}{<years_of_experience>}{<comment>}%
+%% \cvskillentry[*][<post_padding>]{<skill_cathegory>}{<0-5>}{<skill_name>}{<years_of_experience>}{<comment>}%
%% Example usages:
\cvskillentry*{Language:}{3}{Python}{2}{I'm so experienced in Python and have realised a million projects. At least.}
\cvskillentry{}{2}{Lilypond}{14}{So much sheet music! Man, I'm the best!}
\cvskillentry{}{3}{\LaTeX}{14}{Clearly I rock at \LaTeX}
-\cvskillentry*{OS:}{3}{Linux}{2}{I only use Archlinux btw}% notice the use of the starred command and the optional
+\cvskillentry*{OS:}{3}{Linux}{2}{I only use Archlinux btw}% notice the use of the starred command and the optional
\cvskillentry*[1em]{Methods}{4}{SCRUM}{8}{SCRUM master for 5 years}
%% \cvskill{<0-5>} command
% \cvitem{\textbackslash{cvskill}:}{Skills can be visually expressed by the \textbackslash{cvskill} command, e.g. \cvskill{2}}
@@ -232,8 +270,10 @@ Detailed achievements:
% recipient data
\recipient{Company Recruitment team}{Company, Inc.\\123 somestreet\\some city}
\date{January 01, 1984}
+\subject{Job application}
\opening{Dear Sir or Madam,}
\closing{Yours faithfully,}
+\signature{0.9}{signature.png} % optional, remove / comment the line if not wanted: first argument goes to \includegraphics > scale
\enclosure[Attached]{curriculum vit\ae{}} % use an optional argument to use a string other than "Enclosure", or redefine \enclname
\makelettertitle
@@ -254,4 +294,3 @@ Albert Einstein discovered that $e=mc^2$ in 1905.
%% end of file `template.tex'.
-
diff --git a/macros/latex/contrib/moderncv/tweaklist.sty b/macros/latex/contrib/moderncv/tweaklist.sty
index 3739c95f92..c5f5870000 100644
--- a/macros/latex/contrib/moderncv/tweaklist.sty
+++ b/macros/latex/contrib/moderncv/tweaklist.sty
@@ -1,6 +1,6 @@
%% start of file `tweaklist.sty'.
%% Original by Jakob Schiotz, downloaded from http://dcwww.camd.dtu.dk/~schiotz/comp/LatexTips/tweaklist.sty; not found on ctan.
-%% Modified by Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Modified by Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% The tweaklist.sty package redefines the itemize, enumerate and description packages, so that all parameters can be adjusted.
% This was done by copying the original definitions, and adding "hook commands" that are executed when entering the environment.
diff --git a/macros/latex/contrib/moremath/MANIFEST.md b/macros/latex/contrib/moremath/MANIFEST.md
new file mode 100644
index 0000000000..ef52db4ec2
--- /dev/null
+++ b/macros/latex/contrib/moremath/MANIFEST.md
@@ -0,0 +1,26 @@
+# Manifest of the `moremath`-package
+
+This file lists all files that are considered to be part of `moremath`.
+
+
+## Source Files
+- `moremath.dtx`: Documentation and package source.
+- `moremath.ins`: Batch file for generating `moremath.sty`
+
+## Text Files
+These plain text files are included as documentation or metadata.
+
+- `README.md`: README file.
+- `MANIFEST.md`: This file.
+
+## Derived Files
+
+These files are derived from other files mentioned above.
+
+### Documentation
+
+- `moremath-doc.pdf`: Package documentation generated from `moremath.dtx`
+
+### Unpacked Package Code
+
+- `moremath.sty`: File generated from `moremath.dtx` by `moremath.ins`.
diff --git a/macros/latex/contrib/moremath/README.md b/macros/latex/contrib/moremath/README.md
new file mode 100644
index 0000000000..4727b4b11d
--- /dev/null
+++ b/macros/latex/contrib/moremath/README.md
@@ -0,0 +1,48 @@
+# `moremath`: Convenience Math Macros
+
+The `moremath` package provides convenience shorthand math macros such as
+(auto-)delimited operators, (auto-)delimited vector calculus operators
+and some commands for quickly producing diagonal matrices,
+column, and row vectors.
+
+It depends on [mathtools](https://ctan.org/pkg/mathtools),
+[amssymb](https://ctan.org/pkg/amsfonts),
+and optionally on [bm](https://ctan.org/pkg/bm).
+
+_____
+**Note: This package is still in its initial development phase.**
+
+Its interface may be subject to change until version 1.0.0 has been reached.
+
+_____
+
+## Unpacking the Source Code
+
+To unpack the source code use
+
+``` shell
+TEX moremath.ins
+```
+
+## Generating the Documentation
+
+To produce the documentation run `moremath.dtx` through `*latex`.
+
+
+## License
+
+Copyright (C) 2024 Marcel Ilg
+
+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
+https://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 "maintained".
+
+The Current Maintainer of this work is Marcel Ilg.
+
+This work consists of the files listed in `MANIFEST.md`.
diff --git a/macros/latex/contrib/moremath/moremath-doc.pdf b/macros/latex/contrib/moremath/moremath-doc.pdf
new file mode 100644
index 0000000000..8ed1c145fd
--- /dev/null
+++ b/macros/latex/contrib/moremath/moremath-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/moremath/moremath.dtx b/macros/latex/contrib/moremath/moremath.dtx
new file mode 100644
index 0000000000..48e7bae62d
--- /dev/null
+++ b/macros/latex/contrib/moremath/moremath.dtx
@@ -0,0 +1,5761 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2024 Marcel Ilg
+%
+% 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
+%
+% https://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 ‘maintained’.
+%
+% The Current Maintainer of this work is Marcel Ilg.
+%
+% This work consists of the files listed in MANIFEST.md.
+% \fi
+%
+% \iffalse
+%
+%<*driver>
+% Generated by ctanbib
+\begin{filecontents*}[overwrite]{\jobname.bib}
+@preamble{ "\providecommand\ctanbibpkgname[1]{\textsl{#1}}" }
+@manual{amsfonts,
+ title = {The \ctanbibpkgname{amsfonts} package},
+ subtitle = {TeX fonts from the American Mathematical Society},
+ author = {{The American Mathematical Society}},
+ url = {https://ctan.org/pkg/amsfonts},
+ urldate = {2024-07-04},
+ date = {},
+ version = {3.04},
+}
+
+@preamble{ "\providecommand\ctanbibpkgname[1]{\textsl{#1}}" }
+@manual{amsmath,
+ title = {The \ctanbibpkgname{amsmath} package},
+ subtitle = {AMS mathematical facilities for LaTeX},
+ author = {{The LaTeX Project Team}},
+ url = {https://ctan.org/pkg/amsmath},
+ urldate = {2024-07-04},
+ date = {2023-05-13},
+ version = {2.17o},
+}
+
+@preamble{ "\providecommand\ctanbibpkgname[1]{\textsl{#1}}" }
+@manual{bm,
+ title = {The \ctanbibpkgname{bm} package},
+ subtitle = {Access bold symbols in maths mode},
+ author = {Carlisle, David and Mittelbach, Frank and {The LaTeX Project Team}},
+ url = {https://ctan.org/pkg/bm},
+ urldate = {2024-07-04},
+ date = {2023-12-19},
+ version = {1.2f},
+}
+
+@preamble{ "\providecommand\ctanbibpkgname[1]{\textsl{#1}}" }
+@manual{mathtools,
+ title = {The \ctanbibpkgname{mathtools} package},
+ subtitle = {Mathematical tools to use with amsmath},
+ author = {Høgholm, Morten and Madsen, Lars and Robertson, Will and Wright, Joseph and {The LaTeX Project Team}},
+ url = {https://ctan.org/pkg/mathtools},
+ urldate = {2024-07-04},
+ date = {2024-03-11},
+ version = {1.30},
+}
+
+@comment{Below are non-package References}
+
+@article{package-rollback,
+ title = {A rollback concept for packages and classes},
+ author = {Frank Mitelbach},
+ year = {2018},
+ journaltitle = {TUGboat},
+ number = 2,
+ url = {https://www.latex-project.org/publications/2018-FMi-TUB-tb122mitt-version-rollback.pdf},
+ urldate = {2024-08-06},
+}
+\end{filecontents*}
+\begin{filecontents*}[overwrite]{\jobname-ams-op-table.tex}
+\begin{tabular}{rlrlrlrl}
+ \cs[module=amsmath,replace=false]{arccos} &\(\arccos\) &\cs[module=amsmath,replace=false]{deg} &\( \deg \) &\cs[module=amsmath,replace=false]{lg} &\( \lg \) &\cs[module=amsmath,replace=false]{projlim} &\( \projlim \)\\
+ \cs[module=amsmath,replace=false]{arcsin} &\(\arcsin\) &\cs[module=amsmath,replace=false]{det} &\( \det \) &\cs[module=amsmath,replace=false]{lim} &\( \lim \) &\cs[module=amsmath,replace=false]{sec} &\( \sec \)\\
+ \cs[module=amsmath,replace=false]{arctan} &\(\arctan\) &\cs[module=amsmath,replace=false]{dim} &\( \dim \) &\cs[module=amsmath,replace=false]{liminf} &\( \liminf \) &\cs[module=amsmath,replace=false]{sin} &\( \sin \)\\
+ \cs[module=amsmath,replace=false]{arg} &\(\arg\) &\cs[module=amsmath,replace=false]{exp} &\( \exp \) &\cs[module=amsmath,replace=false]{limsup} &\( \limsup \) &\cs[module=amsmath,replace=false]{sinh} &\( \sinh \)\\
+ \cs[module=amsmath,replace=false]{cos} &\(\cos\) &\cs[module=amsmath,replace=false]{gcd} &\( \gcd \) &\cs[module=amsmath,replace=false]{ln} &\( \ln \) &\cs[module=amsmath,replace=false]{sup} &\( \sup \)\\
+ \cs[module=amsmath,replace=false]{cosh} &\(\cosh\) &\cs[module=amsmath,replace=false]{hom} &\( \hom \) &\cs[module=amsmath,replace=false]{log} &\( \log \) &\cs[module=amsmath,replace=false]{tan} &\( \tan \)\\
+ \cs[module=amsmath,replace=false]{cot} &\(\cot\) &\cs[module=amsmath,replace=false]{inf} &\( \inf \) &\cs[module=amsmath,replace=false]{max} &\( \max \) &\cs[module=amsmath,replace=false]{tanh} &\( \tanh \)\\
+ \cs[module=amsmath,replace=false]{coth} &\(\coth\) &\cs[module=amsmath,replace=false]{injlim} &\(\injlim\) &\cs[module=amsmath,replace=false]{min} &\( \min \) & &\\
+ \cs[module=amsmath,replace=false]{csc} &\(\csc\) &\cs[module=amsmath,replace=false]{ker} &\(\ker\) &\cs[module=amsmath,replace=false]{Pr} &\( \Pr \) & &\\
+\end{tabular}
+\begin{center}
+ \begin{tabular}{rlrl}
+ \cs[module=amsmath,replace=false]{varinjlim} &\(\varinjlim\) &\cs[module=amsmath,replace=false]{varliminf} &\(\varliminf\)\\
+ \cs[module=amsmath,replace=false]{varprojlim} &\(\varprojlim\) &\cs[module=amsmath,replace=false]{varlimsup} &\(\varlimsup\)\\
+ \end{tabular}
+\end{center}
+\end{filecontents*}
+
+
+% custom commands for use inside the documentation
+\ExplSyntaxOn
+% Property list storing version date information
+\prop_new:N \l__moremathdoc_version_date_prop
+
+\cs_new_protected:Nn \moremathdoc_add_version:nn
+{
+ \prop_put_if_new:Nnn \l__moremathdoc_version_date_prop {#1} {#2}
+}
+
+\cs_new_protected:Nn \moremathdoc_get_version:n
+{
+ \group_begin:
+ \prop_get:NnNT \l__moremathdoc_version_date_prop {#1} \l_tmpa_tl
+ {
+ \tl_use:N \l_tmpa_tl
+ }
+ \group_end:
+}
+
+\NewDocumentCommand \AddVersion { m m }
+{
+ \moremathdoc_add_version:nn {#1} {#2}
+}
+
+\NewDocumentCommand \GetVersionDate { m }
+{
+ \moremathdoc_get_version:n {#1}
+}
+\ExplSyntaxOff
+
+\documentclass[%
+%show-notes,%
+]{l3doc}
+
+\SetupDoc{reportchangedates=true}
+\RecordChanges
+
+\usepackage[american]{babel}
+\AddBabelHook[american]{nofrench}{afterextras}{\frenchspacing}
+
+\usepackage[style=alphabetic]{biblatex}
+\addbibresource{\jobname.bib}
+
+\usepackage{csquotes}
+\SetCiteCommand{\autocite}
+
+\usepackage{amssymb}
+\usepackage[bm]{moremath}
+
+% renew the ctanbibpkgname command
+\NewDocumentCommand\ctanbibpkgname{m}{\pkg{#1}}
+
+% Example operators and commands
+\DeclareMathOperator{\glorb}{glorb}
+\DeclarePairedDelimiter{\inparen}{\lparen}{\rparen}
+\DeclareDelimitedOperator{\pglorb}{\glorb}{\inparen}
+
+\begin{document}
+ \DocInput{moremath.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% ^^X Get the package version name etc.
+% \GetFileInfo{moremath.sty}
+%
+% ^^X Register changes here
+% \AddVersion{v0.1.0}{2024-06-28}
+% \AddVersion{v0.2.0}{2024-07-04}
+% \AddVersion{v0.3.0}{2024-07-08}
+% \AddVersion{v0.4.0}{2024-07-15}
+% \AddVersion{v0.5.0}{2024-08-20}
+%
+% ^^X Placeholder for unreleased versions
+% \AddVersion{vUNRELEASED}{UNRELEASED}
+%
+% \begin{documentation}
+%
+% \changes{v0.1.0}{\GetVersionDate{v0.1.0}}{Initial development release}
+% \changes{v0.3.0}{\GetVersionDate{v0.3.0}}{
+% Split the documentation into several parts.
+% }
+% \changes{v0.4.0}{\GetVersionDate{v0.4.0}}{
+% \textbf{Breaking Change:} Rename the package
+% and the \meta{prefix} used for function names from
+% "conmath" to "moremath".
+% }
+%
+% \title{The \pkg{moremath} package\thanks{This document coresponds to
+% \textsf{moremath}~\fileversion, dated \filedate.}}
+%
+% \author{Marcel Ilg\thanks{\texttt{mister01x (at) web (dot) de}}}
+%
+% \date{Released \filedate}
+%
+% \maketitle
+%
+% \begin{abstract}
+% The \pkg{moremath} package provides several document level commands
+% to ease the typesetting
+% and \LaTeX{} code readability of certain mathematical constructs.
+% It provides complementary commands to all operators defined by \pkg{amsmath},
+% the commands typeset delimiters that may be automatically, manually or
+% not scaled at all.
+% The commands also accept optional sub- and superscripts to the operators.
+%
+% Furthermore it provides several commands to typeset gradient, divergence,
+% curl, and Laplace operators,
+% for which there are also versions with delimiters.
+% Those commands also accept an optional subscript
+% and their appearance can be modified using key-value options.
+%
+% Additionally commands are provided for producing row and column vectors,
+% as well as (anti-)diagonal matrices,
+% utilizing \pkg{mathtools} \env{matrix*} family of environments.
+%
+% Most of the document level commands defined by this package can also
+% be disabled using a package load-time option to avoid clashes with
+% commands defined by other packages.
+% \end{abstract}
+%
+% \section*{Note: This Package is Still in its Initial Development Phase}
+% Do not expect a stable interface until version 1.0.0 has been reached!
+% While I try to keep the interface stable and backwards compatible,
+% I am unable to promise this.
+%
+% \tableofcontents
+%
+% \part{Document Author Documentation}
+% \label{pt:doc-auth}
+%
+% \section{Introduction}
+% \label{sec:intro}
+%
+% When typesetting mathematics in \LaTeX{} it is very common to often encounter,
+% code patterns such as |\sin \left( \frac{x}{2} \right)|.
+% While this above code works as expected its not especially easy for human
+% readers of this code to immediately understand what that code is going to
+% do.
+%
+% This package tries to ease readability of such commonly used constructs
+% by providing commands that (hopefully) increase readability,
+% as well as speeding up writing math in \LaTeX{}.
+% Using \pkg{moremath} the above code can be simplified to |\psin*{\frac{x}{2}}|,
+% which is shorter and better \enquote{human readable}.
+% The package also provides the possibility for users to define such delimited operators,
+% on their own.
+%
+% There are also other things that can be improved when typesetting math.
+% One prominent example is the typesetting of row and column vectors,
+% which require the use of a \env{matrix} environment.
+% For this case \pkg{moremath} provides commands which accept a comma separated
+% list of vector entries,
+% obliterating the need for a \env{matrix} environment to typeset vectors.
+%
+% The same goes for (anti-)diagonal matrices,
+% only the elements of the diagonal are of importance here.
+% Therefore the production of those matrices may also be simplified into a single command,
+% which again improves readability of the code compared to a mostly empty \env{matrix} environment.
+%
+% Another feature of this package is the definition of several (delimited)
+% vector calculus operators such as gradient, divergence and curl operators,
+% this does not only improve the semantics of the math code
+% (|\mathop{\nabla} f| vs.\ |\grad f|),
+% but also tries to provide the correct spacing between the operator and its
+% arguments.
+%
+% The \pkg{moremath} package is written using \LaTeX{}3
+% and provides a small \LaTeX{}3 interface for class and package writers.
+%
+% The source code for \pkg{moremath} is hosted on GitHub at
+% \begin{center}
+% \url{https://github.com/Mister00X/moremath}
+% \end{center}
+% If you have any issues or found a bug, feel free to register an issue there.
+%
+% \section{Dependencies}
+% \label{sec:deps}
+%
+% The main dependency of this package is \pkg{mathtools}~\autocite{mathtools}.
+% Optionally the \pkg{bm}~\autocite{bm} may be loaded.
+%
+% If the option "no-vector" has \emph{not} been given as a package load time option,
+% this package also loads the \pkg{amssymb}~\autocite{amsfonts} package.
+%
+% \section{Package Options}
+% \label{sec:pack-opts}
+%
+% ^^X SUBSECTION: Package Load Time Options
+% \subsection{Package Load Time Options}
+% \label{sec:pkg-load-time-opts}
+% The options described in this section \emph{must} be given
+% at package load time i.e.\ as package options.
+% All options which are not described below will be passed to
+% \pkg{mathtools}~\autocite{mathtools},
+% see its documentation for more information.
+%
+% \DescribeOption{bm} The \verb|bm| option
+% loads the \pkg{bm}~\autocite{bm} package which provides a better version of
+% the \cs{boldsymbol} command.
+%
+%
+%
+%
+% The options
+% \DescribeOption{no-vector} "no-vector",
+% \DescribeOption{no-abs-shorthands} "no-abs-shorthands",
+% \DescribeOption{no-operators} "no-operators",
+% \DescribeOption{no-crvector} "no-crvector",
+% and \DescribeOption{no-matrix} "no-matrix"
+% disable the definition of the predefined commands described in sections~\ref{sec:vector-calculus},
+% \ref{sec:shorthands},
+% \ref{sec:delim-ops},
+% \ref{sec:rc-vectors},
+% and~\ref{sec:matrices}
+% respectively.
+%
+% \DescribeOption{nopredef}
+% The option |nopredef| achieves the same as the three
+% |no-|\meta{functionality} options above.
+% It accepts multiple values, valid option values are:
+% |vector|,
+% |abs|,
+% |operators|,
+% |crvector|,
+% |matrix|,
+% and |all|.
+% The values
+% |abs|,
+% |operators|,
+% and |vector|
+% disable the predefined
+% document level commands for
+% delimited operators,
+% vector calculus
+% and the shorthands for absolute value and norm respectively.
+% The values "crvector" and "matrix" disable the shorthand commands
+% for row and column vectors, and simple matrices respectively.
+% The special value |all| disables all of them.
+%
+% The option accepts multiple values which can be given as a comma separated
+% list, or as multiple key-value options, like in the examples below:
+% \begin{verbatim}
+% \usepackage[nopredef={vector,abs,operators}]{moremath}
+% \end{verbatim}
+% This is equivalent to
+% \begin{verbatim}
+% \usepackage[nopredef=all]{moremath}
+% \end{verbatim}
+% and to:
+% \begin{verbatim}
+% \usepackage[nopredef=vector,nopredef=abs,nopredef=operators]{moremath}
+% \end{verbatim}
+%
+% The command \cs{NewDelimitedOperator} is not affected by any of the above
+% settings.
+%
+% ^^X SUBSECTION: General Options
+% \subsection{General Options}
+% \label{sec:pkg-general-options}
+%
+% The options described in this section
+% \emph{must not} be given as package options,
+% instead they should be set using \cs{moremathsetup}
+% or given as optional argument to the commands described later.
+% \begin{function}[updated = 2024-07-15]{\moremathsetup}
+% \begin{syntax}
+% \cs{moremathsetup}\marg{kv~list}
+% \end{syntax}
+% Sets the options specified in the \meta{key-value list},
+% the assignment is local to the current group.
+% If a \meta{value} contains a comma it needs to be wrapped in braces.
+% This command may be used anywhere in the document after \pkg{moremath}
+% has been loaded.
+% \end{function}
+%
+% \subsubsection{Options Affecting Vector Calculus Operators}
+% \label{sec:options-vec-calc}
+%
+% \DescribeOption{nabla}
+% The option |nabla| sets the symbol to use by the document level commands
+% described in section~\ref{sec:vector-calculus} to use for the nabla.
+% It accepts a list of \meta{tokens}. Its default value is |\nabla|.
+%
+% \DescribeOption{arrownabla}
+% The option |arrownabla| puts a small arrow over the gradient operator symbol.
+% Its default value is |false|.
+%
+% \DescribeOption{boldnabla}
+% The option |boldnabla| makes the nabla symbol bold.
+% If the |bm| package option has been given the |\boldsymbol| command from
+% the \pkg{bm} package is used for the bold symbol,
+% otherwise the \pkg{amsmath}~\autocite{amsmath} version is used.
+%
+% \DescribeOption{grad-op}
+% The option |grad-op| may be used to overwrite,
+% the built in version of the gradient operator, it accepts a \meta{token list}.
+% Use at your own responsibility.
+%
+% \DescribeOption{laplacian-symb}
+% The option |laplacian-symb| sets the symbol to use by the document level
+% commands described in section~\ref{sec:vector-calculus} to use for the
+% Laplace operator. It accepts a list of \meta{tokens}.
+%
+% \DescribeOption{delta-laplace}
+% The option |delta-laplace| replaces the Laplace operator symbol
+% (by default \(\laplacian\)) with a uppercase delta
+% (\(\laplacian[delta-laplace=true]\)).
+% Its default value is |false|.
+%
+% \DescribeOption{arrowlaplace}
+% The option |arrowlaplace| if set to |true| makes the Laplace operator look
+% like this: \(\laplacian[arrowlaplace=true]\).
+%
+% \DescribeOption{laplacian}
+% Like the option |grad-op| above the option |laplacian| may be used to
+% overwrite the built-in version of the Laplace operator.
+% Use at your own responsibility.
+%
+% \DescribeOption{dalembert-symb}
+% Like the option "nabla" this sets the symbol to use by the document level
+% commands described in section~\ref{sec:dalembert-op-cmds} to use as symbol
+% for the \foreignlanguage{french}{d'Alembert} operator. It accepts a list of
+% \meta{tokens}. It's default value is \cs[module=amssymb,replace=false]{square}.
+%
+% \DescribeOption{vcenter}
+% The option "vcenter" controls if certain mathematical symbols
+% of the operators described in section~\ref{sec:vector-calculus} should be
+% vertically centered along the math-axis.
+% The default value of this option is "true".
+%
+%
+%
+% \subsubsection{Options Affecting Matrices and Vectors}
+% \label{sec:options-matrix}
+%
+% The options in this section only affect the commands described in sections~\ref{sec:rc-vectors}
+% and~\ref{sec:matrices}. To set them with \cs{moremathsetup} it is necessary
+% to add the prefix |matrix / | to these options,
+% so that the resulting command looks like \cs{moremathsetup}\texttt{\{matrix / \meta{option}\}}.
+% When using these options inside the optional argument of the commands described
+% in sections~\ref{sec:rc-vectors} and~\ref{sec:matrices}, the prefix "matrix /"
+% must be omitted.
+%
+% \DescribeOption{delimiter}
+% The option |delimiter| determines the delimiters used for the matrices,
+% valid values are "p" for parenthesis, "b" for brackets, "B" for braces,
+% "v" for single vertical lines (\enquote{\(\vert\)}),
+% "V" for double vertical lines (\enquote{\(\Vert\)}) or empty for no delimiters.
+% The default value is "{}" (empty).
+%
+% \DescribeOption{fill}
+% The fill option determines the values an (anti-)diagonal matrix is filled with,
+% outside the diagonal. The default is again empty.
+%
+% \DescribeOption{align}
+% This option determines the alignment of the numbers inside the matrix.
+% The value of this option gets passed to the optional argument of the \env{matrix*}
+% or \env{smallmatrix*} family of environments defined by \pkg{mathtools}~\autocite{mathtools}.
+% Valid values for both types of those environments are |l| for left alignment,
+% |r| for right alignment and |c| for centered alignment. The default is |c|.
+%
+% \begin{texnote}
+% The non-"small" versions of the commands described in the sections~\ref{sec:rc-vectors}
+% and~\ref{sec:matrices}, accept \textcquote{mathtools}{\textelp{}
+% any column type valid in the usual \env{array} environment.}
+% \end{texnote}
+%
+%
+% \section{Delimited Operators}
+% \label{sec:delim-ops}
+%
+% \subsection{Delimited Operators Predefined by \pkg{moremath}}
+% \label{sec:delim-op-predef}
+%
+% \DescribeOption{no-operators}
+% If the package load time option |no-operators| is not given this package defines several
+% delimited mathematical operators.
+%
+% \begin{table}
+% \caption{%
+% Operator commands defined by the \pkg{amsmath}~\autocite{amsmath}
+% package.}
+% \label{tab:amsmath-operators}
+% \vspace{.5\baselineskip}
+% \input{\jobname-ams-op-table.tex}
+% \end{table}
+%
+% \begin{function}{
+% \parccos, \barccos, \Barccos, \varccos, \Varccos,
+% }
+% \begin{syntax}
+% \cs{parccos} \oarg{size cmd} \marg{contents}
+
+% \cs{parccos} \oarg{size cmd} \textasciicircum\marg{superscript} \marg{contents}
+%
+% \cs{parccos} \oarg{size cmd} \_\marg{subscript} \marg{contents}
+%
+% \cs{parccos} \oarg{size cmd} \textasciicircum\marg{superscript} \_\marg{subscript} \marg{contents}
+%
+% \cs{parccos}* \marg{contents}
+%
+% \cs{parccos}* \textasciicircum\marg{superscript} \marg{contents}
+%
+% \cs{parccos}* \_\marg{subscript} \marg{contents}
+% \cs{parccos}* \textasciicircum\marg{superscript} \_\marg{subscript} \marg{contents}
+%
+%
+% \cs[no-index]{\meta{prefix}\meta{op name}} \oarg{size cmd} \marg{contents}
+% \cs[no-index]{\meta{prefix}\meta{op name}} \oarg{size cmd} \textasciicircum\marg{superscript} \marg{contents}
+% \cs[no-index]{\meta{prefix}\meta{op name}} \oarg{size cmd} \_\marg{subscript} \marg{contents}
+% \cs[no-index]{\meta{prefix}\meta{op name}} \oarg{size cmd} \textasciicircum\marg{superscript} \_\marg{subscript} \marg{contents}
+% \cs[no-index]{\meta{prefix}\meta{op name}}* \marg{contents}
+% \cs[no-index]{\meta{prefix}\meta{op name}}* \textasciicircum\marg{superscript} \marg{contents}
+% \cs[no-index]{\meta{prefix}\meta{op name}}* \_\marg{subscript} \marg{contents}
+% \cs[no-index]{\meta{prefix}\meta{op name}}* \textasciicircum\marg{superscript} \_\marg{subscript} \marg{contents}
+% \end{syntax}
+% For all of the operators predefined by \pkg{amsmath}~\autocite{amsmath},
+% which are shown in table~\ref{tab:amsmath-operators},
+% \pkg{moremath} declares delimited versions.
+% The name of those commands follows the scheme \cs[no-index]{\meta{prefix}\meta{op}},
+% where \meta{prefix} is one of |p|, |b|, |B|, |v|, or |V|
+% and \meta{op} is the name of one of the operators shown in table~\ref{tab:amsmath-operators}.
+%
+% The \meta{prefix}es |p|, |b|, |B|, |v|, and |V| stand for
+% parenthesis, brackets, braces, single vertical lines (\enquote{\(\vert\)}), and double vertical lines
+% (\enquote{\(\Vert\)}) respectively.
+%
+% The commands accept a \meta{size cmd} optional argument, which is usually one of
+% \cs{big}, \cs{Big}, \cs{bigg} and \cs{Bigg}.
+% These \meta{size cmd}s are used to change the size of the delimiters.
+%
+% The commands also accept sub- and superscripts,
+% which have to be issued \emph{after} the optional argument (if present),
+% but before the mandatory argument \meta{contents}.
+%
+% The starred variant uses automatic scaling for the delimiters depending on the height of its contents.
+% \end{function}
+%
+% \paragraph{Examples}
+%
+% The following examples showcase the use of those predefined delimited operators:
+% \begin{enumerate}
+% \item Different delimited operators without any scaling:
+%
+% \begin{verbatim}
+% \[
+% \pcos{x} \times \bcos{y}
+% \times \Bcos{z} \times \vcos{a}
+% \times \Vcos{b}
+% \]
+% \end{verbatim}
+% \[
+% \pcos{x} \times \bcos{y}
+% \times \Bcos{z} \times \vcos{a}
+% \times \Vcos{b}
+% \]
+%
+% \item Delimited operator with automatic scaling:
+%
+% \begin{minipage}{.49\linewidth}
+% \begin{verbatim}
+% \[
+% \pcos*{\frac{x^{2}}{2}}
+% \]
+% \end{verbatim}
+% \end{minipage}\hfill
+% \begin{minipage}{.49\linewidth}
+% \[
+% \pcos*{\frac{x^{2}}{2}}
+% \]
+% \end{minipage}
+%
+% \item Delimited operator with manual scaling:
+%
+% \begin{minipage}{.49\linewidth}
+% \begin{verbatim}
+% \[
+% \pcos[\Big]{\frac{x^{2}}{2}}
+% \]
+% \end{verbatim}
+% \end{minipage}\hfill
+% \begin{minipage}{.49\linewidth}
+% \[
+% \pcos[\Big]{\frac{x^{2}}{2}}
+% \]
+% \end{minipage}
+%
+% \item Delimited operator with subscript:
+%
+% \begin{minipage}{.49\linewidth}
+% \begin{verbatim}
+% \[
+% \plog_{10}{1+x}
+% \]
+% \end{verbatim}
+% \end{minipage}\hfill
+% \begin{minipage}{.49\linewidth}
+% ^^X XXX: Using an underscore is broken here (because of l3doc???) therefore I
+% ^^X use "\sb" instead.
+% \[
+% \plog\sb{10}{1+x}
+% \]
+% \end{minipage}
+%
+% \item Delimited operator with superscript:
+%
+% \begin{minipage}{.49\linewidth}
+% \begin{verbatim}
+% \[
+% \pcos^{2}{x}
+% \]
+% \end{verbatim}
+% \end{minipage}\hfill
+% \begin{minipage}{.49\linewidth}
+% \[
+% \pcos^{2}{x}
+% \]
+% \end{minipage}
+%
+% \item Delimited operator with both sub- and superscript and manual scaling:
+%
+% \begin{minipage}{.49\linewidth}
+% \begin{verbatim}
+% \[
+% \pcos[\Big]^{2}_{x}{\frac{x}{2}}
+% \]
+% \end{verbatim}
+% \end{minipage}\hfill
+% \begin{minipage}{.49\linewidth}
+% ^^X XXX: Again use "\sb" instead of "_" because of l3doc
+% \[
+% \pcos[\Big]^{2}\sb{x}{\frac{x}{2}}
+% \]
+% \end{minipage}
+% \end{enumerate}
+%
+%
+% \subsection{Declaring New Delimited Operators}
+% \label{sec:delim-op-new}
+%
+% \begin{function}{\DeclareDelimitedOperator}
+% \begin{syntax}
+% \cs{DeclareDelimitedOperator}\marg{new op}\marg{op}\marg{delim}
+% \end{syntax}
+% Creates a new delimited operator,
+% the name of the new command will be \meta{new op}.
+% The \meta{op} is the command of the operator to use,
+% which is usually a command declared with
+% \cs[module=amsmath,replace=false]{DeclareMathOperator}.
+% \meta{delim} is the command to use as paired delimiter,
+% it is expected to behave like a paired delimiter declared by
+% \pkg{mathtools}~\autocite{mathtools}
+% \cs[module=mathtools,replace=false]{DeclarePairedDelimiter}.
+% \end{function}
+%
+% \paragraph{Example: Creating a New Delimited Operator}
+% The following code creates a new operator and a paired delimiter
+% and uses it afterwards to declare a paired operator.
+% \begin{verbatim}
+% \documentclass{scrartcl}
+%
+% \DeclareMathOperator{\glorb}{glorb}
+% \DeclarePairedDelimiter{\inparen}{\lparen}{\rparen}
+% \DeclarePairedOperator{\pglorb}{\glorb}{\inparen}
+%
+% \begin{document}
+% \[
+% \pglorb{a}
+% \]
+% \end{document}
+% \end{verbatim}
+% The result then looks like this:
+% \[
+% \pglorb{a}
+% \]
+%
+%
+% \section{Vector Calculus Operators}
+% \label{sec:vector-calculus}
+%
+% \DescribeOption{no-vector}
+% The commands in this section are only declared if the option |no-vector|
+% has not been given to the package as a load time option.
+%
+% \DescribeOption{vcenter}
+% The option "vcenter" controls if the symbols for the operators described below
+% should be vertically centered along the math axis. Its default value is "true".
+%
+% This option only shows its effects if other options like "arrownabla",
+% "arrowlaplace", or "boldnabla" are set to "true".
+% Like in the example below:
+% \begin{quote}
+% \begin{verbatim}
+% \begin{gather*}
+% \grad f(x) \quad \grad[arrownabla,vcenter=false] f(x)
+% \quad \grad[arrownabla,vcenter=true] f(x)\\
+% \laplacian f(x) \quad \laplacian[arrowlaplace,vcenter=false] f(x)
+% \quad \laplacian[arrowlaplace,vcenter=true] f(x)
+% \end{gather*}
+% \end{verbatim}
+% \begin{gather*}
+% \grad f(x) \quad \grad[arrownabla,vcenter=false] f(x)
+% \quad \grad[arrownabla,vcenter=true] f(x)\\
+% \laplacian f(x) \quad \laplacian[arrowlaplace,vcenter=false] f(x)
+% \quad \laplacian[arrowlaplace,vcenter=true] f(x)
+% \end{gather*}
+% \end{quote}
+%
+% All of the commands described in this section take key-value options
+% as optional argument, which are described in section~\ref{sec:options-vec-calc}
+%
+% \subsection{Gradient Operator Commands}
+% \label{sec:grad-op-cmds}
+%
+% \subsubsection{Standalone Operator Command}
+% \label{sec:grad-op-standalone}
+%
+% \begin{function}[updated=2024-07-08]{
+% \grad,
+% }
+% \begin{syntax}
+% \cs{grad} \oarg{kv opts}
+% \cs{grad} \oarg{kv opts} \_\marg{subscript}
+% \end{syntax}
+% The \cs{grad} command produces a gradient operator
+% looking like this \enquote{\(\grad\)} by default.
+% The optional argument \meta{kv opts} accepts the key-value options
+% described in section~\ref{sec:options-vec-calc},
+% whitespace between the command name
+% and \oarg{kv~opts} is \emph{not allowed}.
+% An optional subscript using "_" may be given after the optional argument.
+% \end{function}
+%
+% \paragraph{Examples of Use}
+% \begin{enumerate}
+% \item Standalone gradient operator (with and without subscript):
+%
+% \begin{minipage}{.49\linewidth}
+% \begin{verbatim}
+% \[
+% \grad f(x), \quad \grad_{x} f(x)
+% \]
+% \end{verbatim}
+% \end{minipage}\hfill
+% \begin{minipage}{.49\linewidth}
+% \[
+% \grad f(x), \quad \grad\sb{x} f(x)
+% \]
+% \end{minipage}
+%
+% \item Bold version of the gradient operator:
+%
+% \begin{minipage}{.49\linewidth}
+% \begin{verbatim}
+% \[
+% \grad[boldnabla] f(x)
+% \]
+% \end{verbatim}
+% \end{minipage}\hfill
+% \begin{minipage}{.49\linewidth}
+% \[
+% \grad[boldnabla] f(x)
+% \]
+% \end{minipage}
+%
+% \item Gradient operator with an arrow:
+%
+% \begin{minipage}{.49\linewidth}
+% \begin{verbatim}
+% \[
+% \grad[arrownabla] f(x)
+% \]
+% \end{verbatim}
+% \end{minipage}
+% \begin{minipage}{.49\linewidth}
+% \[
+% \grad[arrownabla] f(x)
+% \]
+% \end{minipage}
+% \end{enumerate}
+%
+% \subsubsection{Operators with Delimiters}
+% \label{sec:grad-op-delim}
+%
+% \begin{function}{
+% \pgrad,
+% \bgrad,
+% \Bgrad,
+% \vgrad,
+% \Vgrad
+% }
+% \begin{syntax}
+% \cs[no-index]{\meta{delim}grad} \oarg{size cmd} \marg{content}
+% \cs[no-index]{\meta{delim}grad} \oarg{kv opts} \marg{content}
+% \cs[no-index]{\meta{delim}grad} \oarg{size cmd} \_\marg{subscript} \marg{content}
+% \cs[no-index]{\meta{delim}grad} \oarg{kv opts} \_\marg{subscript} \marg{content}
+% \cs[no-index]{\meta{delim}grad}* \oarg{kv opts} \marg{content}
+% \cs[no-index]{\meta{delim}grad}* \oarg{kv opts} \_\marg{subscript} \marg{content}
+% \end{syntax}
+% The \cs[no-index]{\meta{delim}grad} family of commands produces
+% gradient operator which is followed by \meta{contents} inside delimiters.
+% The delimiter is determined by the first letter of the command \meta{delim},
+% which may be "p" for parenthesis, "b" for brackets, "B" for braces,
+% "v" for a single vertical line (\enquote{\(\vert\)}), or "V" for a double
+% vertical line (\enquote{\(\Vert\)}).
+%
+% The commands accept either a \meta{size command} as optional argument,
+% which gets passed to \pkg{mathtools}~\autocite{mathtools} paired delimiter
+% or a list of \meta{key-value option}s,
+% the \meta{kv opts} \emph{must} be given using the complete syntax,
+% i.e.\ \meta{key}"="\meta{value},
+% shorthands for options with an implicit default value (|arrownabla|),
+% will not work here.
+% The \meta{size~command} is usually one of \cs{big}, \cs{Big}, \cs{bigg} and
+% \cs{Bigg}.
+% Valid \meta{kv opts} are all options described in section~\ref{sec:options-vec-calc}
+% and the key "scale" which accepts a \meta{size cmd}.
+%
+% \begin{quote}
+% \textbf{Note:}\\
+% Do not mix \meta{kv opts} and \meta{size cmd},
+% use either |\pgrad[\big]{f(x)}| or |\pgrad[arrownabla=true,scale=\big]{f(x)}|.
+% \end{quote}
+%
+% \medskip\noindent
+% An optional \meta{subscript} may be given between the optional argument,
+% and \meta{contents}. One use case for this subscript is to write formulae
+% using the so called Feynman-notation, where the gradient operator acts
+% only on one variable.
+%
+% The starred version of the commands automatically scale the delimiters
+% with its contents.
+% \end{function}
+%
+% \paragraph{Examples:}
+% \begin{enumerate}
+% \item Gradient operator with non-scaled delimiters:
+%
+% \begin{minipage}{.49\linewidth}
+% \begin{verbatim}
+% \[
+% \pgrad{1+\vec{x}}
+% \]
+% \end{verbatim}
+% \end{minipage}\hfill
+% \begin{minipage}{.49\linewidth}
+% \[
+% \pgrad{1+\vec{x}}
+% \]
+% \end{minipage}
+%
+% \item Bold version:
+%
+% \begin{minipage}{.49\linewidth}
+% \begin{verbatim}
+% \[
+% \pgrad[boldnabla=true]{1+\vec{x}}
+% \]
+% \end{verbatim}
+% \end{minipage}\hfill
+% \begin{minipage}{.49\linewidth}
+% \[
+% \pgrad[boldnabla=true]{1+\vec{x}}
+% \]
+% \end{minipage}
+%
+% \item Gradient operator with automatically scaled delimiters:
+%
+% \begin{minipage}{.49\linewidth}
+% \begin{verbatim}
+% \[
+% \pgrad*{\frac{1}{x}}
+% \]
+% \end{verbatim}
+% \end{minipage}\hfill
+% \begin{minipage}{.49\linewidth}
+% \[
+% \pgrad*{\frac{1}{x}}
+% \]
+% \end{minipage}
+%
+% \item Manually scaled version:
+%
+% \begin{minipage}{.49\linewidth}
+% \begin{verbatim}
+% \begin{gather*}
+% \pgrad[\Big]{\frac{1}{x}}\\[.5ex]
+% \pgrad[scale=\Big]{\frac{1}{x}}
+% \end{gather*}
+% \end{verbatim}
+% \end{minipage}\hfill
+% \begin{minipage}{.49\linewidth}
+% \begin{gather*}
+% \pgrad[\Big]{\frac{1}{x}}\\[.5ex]
+% \pgrad[scale=\Big]{\frac{1}{x}}
+% \end{gather*}
+% \end{minipage}
+%
+% \item Feynman-notation:
+%
+% \begin{minipage}{.49\linewidth}
+% \begin{verbatim}
+% \[
+% \pgrad_{x}{x+y+z}
+% \]
+% \end{verbatim}
+% \end{minipage}\hfill
+% \begin{minipage}{.49\linewidth}
+% \[
+% \pgrad\sb{x}{x+y+z}
+% \]
+% \end{minipage}
+% \end{enumerate}
+%
+% \subsection{Divergence Operator Commands}
+% \label{sec:div-op-cmds}
+%
+% \subsubsection{Standalone Operator Command}
+% \label{sec:div-op-standalone}
+%
+% \begin{function}[updated=2024-07-08]{\divergence}
+% \begin{syntax}
+% \cs{divergence} \oarg{kv opts}
+% \cs{divergence} \oarg{kv opts} \_\marg{subscript}
+% \end{syntax}
+% The \cs{divergence} command produces the divergence operator
+% \enquote{\(\divergence\)},
+% its usage is analogous to the use of the \cs{grad} command,
+% which is described in section~\ref{sec:grad-op-standalone}.
+% \end{function}
+%
+% \paragraph{Examples}
+% \begin{enumerate}
+% \item Standalone divergence operator
+%
+% \begin{minipage}{.49\linewidth}
+% \begin{verbatim}
+% \[
+% \divergence f(x)
+% \]
+% \end{verbatim}
+% \end{minipage}\hfill
+% \begin{minipage}{.49\linewidth}
+% \[\divergence f\]
+% \end{minipage}
+%
+% \item Standalone divergence operator
+% with an arrow over the gradient operator
+%
+% \begin{minipage}{.49\linewidth}
+% \begin{verbatim}
+% \[
+% \divergence[arrownabla] f(x)
+% \]
+% \end{verbatim}
+% \end{minipage}\hfill
+% \begin{minipage}{.49\linewidth}
+% \[\divergence[arrownabla] f(x)\]
+% \end{minipage}
+%
+% \item Standalone divergence operator with subscript
+%
+% \begin{minipage}{.49\linewidth}
+% \begin{verbatim}
+% \[
+% \divergence_{x} f(x)
+% \]
+% \end{verbatim}
+% \end{minipage}\hfill
+% ^^X We need to use \sb because of the subscript package
+% \begin{minipage}{.49\linewidth}
+% \[\divergence\sb{x} f(x)\]
+% \end{minipage}
+% \end{enumerate}
+% \subsubsection{Operators with Delimiters}
+% \label{sec:div-op-delim}
+%
+% \begin{function}{
+% \pdiv,
+% \bdiv,
+% \Bdiv,
+% \vdiv,
+% \Vdiv
+% }
+% \begin{syntax}
+% \cs[no-index]{\meta{delim}div} \oarg{size cmd} \marg{content}
+% \cs[no-index]{\meta{delim}div} \oarg{kv opts} \marg{content}
+% \cs[no-index]{\meta{delim}div} \oarg{size cmd} \_\marg{subscript} \marg{content}
+% \cs[no-index]{\meta{delim}div} \oarg{kv opts} \_\marg{subscript} \marg{content}
+% \cs[no-index]{\meta{delim}div}* \oarg{kv opts} \marg{content}
+% \cs[no-index]{\meta{delim}div}* \oarg{kv opts} \_\marg{subscript} \marg{content}
+% \end{syntax}
+% The \cs[no-index]{\meta{delim}div} family of commands produces the divergence
+% operator with its arguments placed inside delimiters.
+% The usage of these commands is analogous to the \cs[no-index]{\meta{delim}grad}
+% family of commands described in section~\ref{sec:grad-op-delim}.
+% \end{function}
+%
+% \paragraph{Examples}
+%
+% \begin{enumerate}
+% \item Divergence operator with parenthesis and no scaling
+%
+% \begin{minipage}{.49\linewidth}
+% \begin{verbatim}
+% \[
+% \pdiv{1+x}
+% \]
+% \end{verbatim}
+% \end{minipage}\hfill
+% \begin{minipage}{.49\linewidth}
+% \[\pdiv{1+x}\]
+% \end{minipage}
+% \item Bold version with manual scaling and subscript
+%
+% \begin{verbatim}
+% \[
+% \pdiv[boldnabla=true,scale=\Big]_{x}{1 + \frac{1}{x}}
+% \]
+% \end{verbatim}
+% \[\pdiv[boldnabla=true,scale=\Big]\sb{x}{1+\frac{1}{x}}\]
+%
+% \item Automatic scaling
+%
+% \begin{minipage}{.49\linewidth}
+% \begin{verbatim}
+% \[
+% \pdiv*{1 + \frac{1}{x}}
+% \]
+% \end{verbatim}
+% \end{minipage}\hfill
+% \begin{minipage}{.49\linewidth}
+% \[\pdiv*{1 + \frac{1}{x}}\]
+% \end{minipage}
+% \end{enumerate}
+%
+% \subsection{Curl Operator Commands}
+% \label{sec:curl-op-cmds}
+%
+% \subsubsection{Standalone Operator Command}
+% \label{sec:curl-op-standalone}
+%
+% \begin{function}[updated=2024-07-08]{\curl}
+% \begin{syntax}
+% \cs{curl} \oarg{kv opts}
+% \cs{curl} \oarg{kv opts} \_\marg{subscript}
+% \end{syntax}
+% The \cs{curl} command produces the curl operator \enquote{\(\curl\)},
+% its usage is analogous to the use of the \cs{grad} command
+% described in section~\ref{sec:grad-op-standalone}.
+% \end{function}
+%
+% \paragraph{Examples}
+% \begin{enumerate}
+% \item Standalone curl operator
+%
+% \begin{minipage}{.49\linewidth}
+% \begin{verbatim}
+% \[
+% \curl f(x)
+% \]
+% \end{verbatim}
+% \end{minipage}\hfill
+% \begin{minipage}{.49\linewidth}
+% \[\curl f(x)\]
+% \end{minipage}
+%
+% \item Standalone curl operator with an arrow over the gradient operator
+%
+% \begin{minipage}{.49\linewidth}
+% \begin{verbatim}
+% \[
+% \curl[arrownabla] f(x)
+% \]
+% \end{verbatim}
+% \end{minipage}\hfill
+% \begin{minipage}{.49\linewidth}
+% \[\curl[arrownabla] f(x)\]
+% \end{minipage}
+%
+% \item Standalone curl operator with subscript
+%
+% \begin{minipage}{.49\linewidth}
+% \begin{verbatim}
+% \[
+% \curl_{x} f(x,y)
+% \]
+% \end{verbatim}
+% \end{minipage}\hfill
+% \begin{minipage}{.49\linewidth}
+% \[\curl\sb{x} f(x,y)\]
+% \end{minipage}
+% \end{enumerate}
+%
+% \subsubsection{Operators with Delimiters}
+% \label{sec:curl-op-delim}
+%
+% \begin{function}{
+% \pcurl,
+% \bcurl,
+% \Bcurl,
+% \vcurl,
+% \Vcurl
+% }
+% \begin{syntax}
+% \cs[no-index]{\meta{delim}curl} \oarg{size cmd} \marg{content}
+% \cs[no-index]{\meta{delim}curl} \oarg{kv opts} \marg{content}
+% \cs[no-index]{\meta{delim}curl} \oarg{size cmd} \_\marg{subscript} \marg{content}
+% \cs[no-index]{\meta{delim}curl} \oarg{kv opts} \_\marg{subscript} \marg{content}
+% \cs[no-index]{\meta{delim}curl}* \oarg{kv opts} \marg{content}
+% \cs[no-index]{\meta{delim}curl}* \oarg{kv opts} \_\marg{subscript} \marg{content}
+% \end{syntax}
+% The \cs[no-index]{\meta{delim}curl} family of commands produce the curl operator
+% with its arguments placed inside delimiters.
+% The usage of these commands is analogous to the \cs[no-index]{\meta{delim}grad}
+% family of commmands described in section~\ref{sec:grad-op-delim}.
+% \end{function}
+%
+% \paragraph{Examples}
+% \begin{enumerate}
+% \item Curl operator with parenthesis without scaling
+%
+% \begin{minipage}{.49\linewidth}
+% \begin{verbatim}
+% \[
+% \pcurl{1+x}
+% \]
+% \end{verbatim}
+% \end{minipage}\hfill
+% \begin{minipage}{.49\linewidth}
+% \[\pcurl{1+x}\]
+% \end{minipage}
+%
+% \item Bold version with manual scaling and subscript
+%
+% \begin{verbatim}
+% \[
+% \pcurl[boldnabla=true,scale=\Big]_{x}{1 + \frac{1}{x}}
+% \]
+% \end{verbatim}
+% \[
+% \pcurl[boldnabla=true,scale=\Big]\sb{x}{1 + \frac{1}{x}}
+% \]
+%
+% \item Automatic scaling
+%
+% \begin{minipage}{.49\linewidth}
+% \begin{verbatim}
+% \[
+% \pcurl*{1 + \frac{1}{x}}
+% \]
+% \end{verbatim}
+% \end{minipage}\hfill
+% \begin{minipage}{.49\linewidth}
+% \[\pcurl*{1 + \frac{1}{x}}\]
+% \end{minipage}
+% \end{enumerate}
+% \changes{v0.2.0}{\GetVersionDate{v0.2.0}}{%
+% Fixed example to match description.
+% }
+%
+%
+% \subsection{Laplace Operator Commands}
+% \label{sec:laplace-op-cmds}
+%
+% This section describes commands which can be used to typeset a Laplace
+% operator.
+%
+%
+% Like the commands described in sections~\ref{sec:grad-op-cmds},
+% \ref{sec:div-op-cmds}, and~\ref{sec:curl-op-cmds}
+% the commands in this section accept key-value options via an optional
+% argument.
+% There is some deviation from the options compared to the above commands:
+% The "arrownabla" option is ignored,
+% instead the "arrowlaplace" option produces an arrow over the operator.
+% The "boldnabla" option on the other hand is not ignored.
+% Finally the "delta-laplace" option replaces the symbol used
+% for the operator from \(\laplacian\) to \(\laplacian[delta-laplace]\)
+%
+% \subsubsection{Standalone Operator Command}
+% \label{sec:laplace-op-standalone}
+%
+%
+% \begin{function}[updated=2024-07-08]{\laplacian}
+% \begin{syntax}
+% \cs{laplacian} \oarg{kv opts}
+% \cs{laplacian} \oarg{kv opts} \_\marg{subscript}
+% \end{syntax}
+% The \cs{laplacian} command produces a Laplace operator,
+% which looks by default like this: \(\laplacian\).
+%
+% Its interface is analogous to the \cs{grad}, \cs{divergence},
+% and \cs{curl} commands described above,
+% with the difference in key-value options described at the start of this
+% subsection.
+% \end{function}
+%
+%
+% \subsubsection{Operators with Delimiters}
+% \label{sec:laplace-op-delim}
+%
+% \begin{function}{
+% \plaplacian,
+% \blaplacian,
+% \Blaplacian,
+% \vlaplacian,
+% \Vlaplacian
+% }
+% \begin{syntax}
+% \cs[no-index]{\meta{delim}laplacian} \oarg{size cmd} \marg{content}
+% \cs[no-index]{\meta{delim}laplacian} \oarg{kv opts} \marg{content}
+% \cs[no-index]{\meta{delim}laplacian} \oarg{size cmd} \_\marg{subscript} \marg{content}
+% \cs[no-index]{\meta{delim}laplacian} \oarg{kv opts} \_\marg{subscript} \marg{content}
+% \cs[no-index]{\meta{delim}laplacian}* \oarg{kv opts} \marg{content}
+% \cs[no-index]{\meta{delim}laplacian}* \oarg{kv opts} \_\marg{subscript} \marg{content}
+% \end{syntax}
+% \end{function}
+%
+% \paragraph{Examples}
+% \begin{enumerate}
+% \item Laplace operator delimited by parenthesis without scaling
+%
+% \begin{minipage}{.49\linewidth}
+% \begin{verbatim}
+% \[
+% \plaplacian{1+x}
+% \]
+% \end{verbatim}
+% \end{minipage}\hfill
+% \begin{minipage}{.49\linewidth}
+% \[\plaplacian{1+x}\]
+% \end{minipage}
+%
+% \item Version with arrow, manual scaling and subscript
+%
+% \begin{verbatim}
+% \[
+% \plaplacian[arrowlaplace=true,scale=\Big]_{x}{1 + \frac{1}{x}}
+% \]
+% \end{verbatim}
+% \[
+% \plaplacian[arrowlaplace=true,scale=\Big]\sb{x}{1 + \frac{1}{x}}
+% \]
+%
+% \item Version with automatic scaling
+%
+% \begin{minipage}{.49\linewidth}
+% \begin{verbatim}
+% \[
+% \plaplacian*{1 + \frac{1}{x}}
+% \]
+% \end{verbatim}
+% \end{minipage}\hfill
+% \begin{minipage}{.49\linewidth}
+% \[\plaplacian*{1 + \frac{1}{x}}\]
+% \end{minipage}
+%
+% \item Using a delta as symbol for the Laplacian
+%
+% \begin{minipage}{.49\linewidth}
+% \begin{verbatim}
+% \[
+% \plaplacian[delta-laplace=true]{1+x}
+% \]
+% \end{verbatim}
+% \end{minipage}\hfill
+% \begin{minipage}{.49\linewidth}
+% \[\plaplacian[delta-laplace=true]{1+x}\]
+% \end{minipage}
+% \end{enumerate}
+%
+%
+% \subsection{^^X
+% Commands Producing a \foreignlanguage{french}{d'Alembert} operator
+% }
+% \label{sec:dalembert-op-cmds}
+%
+% \subsubsection{Standalone Operator Command}
+% \label{sec:dalembert-op-standalone}
+%
+% \begin{function}[
+% added = 2024-07-04,
+% updated=2024-07-08,
+% ]{\quabla}
+% \begin{syntax}
+% \cs{quabla} \oarg{kv~opts}
+% \cs{quabla} \oarg{kv~opts} \_\marg{subscript}
+% \end{syntax}
+% The \cs{quabla} command produces
+% the \foreignlanguage{french}{d'Alembert} operator \enquote{\(\quabla\)}.
+% This command accepts an optional subscript.
+% \end{function}
+%
+% The command is called \cs{quabla} because thats shorter and easier to type than
+% \cs[no-index]{dalembertian}.
+% If you want to have a command called \cs[no-index]{dalembertian},
+% put the following in your documents preamble.
+% \begin{verbatim}
+% \NewCommandCopy\quabla\dalembertian
+% \end{verbatim}
+%
+% \paragraph{Example of Use:}
+% \begin{quote}
+% \begin{minipage}{.49\linewidth}
+% \begin{verbatim}
+% \[
+% \quabla f(x)
+% \]
+% \end{verbatim}
+% \end{minipage}\hfill
+% \begin{minipage}{.49\linewidth}
+% \[\quabla f(x)\]
+% \end{minipage}
+% \end{quote}
+%
+%
+% \subsubsection{Operators with Delimiters}
+% \label{sec:dalembert-op-delim}
+%
+% \begin{function}[added = 2024-07-04]{
+% \pquabla,
+% \bquabla,
+% \Bquabla,
+% \vquabla,
+% \Vquabla,
+% }
+% \begin{syntax}
+% \cs[no-index]{\meta{delim}quabla} \oarg{size~cmd} \marg{contents}
+% \cs[no-index]{\meta{delim}quabla} \oarg{kv~opts} \marg{contents}
+% \cs[no-index]{\meta{delim}quabla} \oarg{size~cmd} \_\marg{subscript} \marg{contents}
+% \cs[no-index]{\meta{delim}quabla} \oarg{kv~opts} \_\marg{subscript} \marg{contents}
+% \cs[no-index]{\meta{delim}quabla}* \oarg{kv~opts} \marg{contents}
+% \cs[no-index]{\meta{delim}quabla}* \oarg{kv~opts} \_\marg{subscript} \marg{contents}
+% \end{syntax}
+% The \cs[no-index]{\meta{delim}quabla} family of commands produce a
+% \foreignlanguage{french}{d'Alembert} operator with <contents> placed inside
+% delimiters.
+% Their usage is analogous to the \cs[no-index]{\meta{delim}grad} family of
+% commands described in section~\ref{sec:grad-op-delim}.
+% \end{function}
+%
+% \changes{v0.2.0}{\GetVersionDate{v0.2.0}}{%
+% Fixed syntax description of standalone operators not matching reality.
+% }
+%
+%
+% \section{Row- and Column Vectors}
+% \label{sec:rc-vectors}
+%
+% \DescribeOption{no-crvector}
+% The command in this section are only declared if the option |no-crvector|
+% has not been given as a package option.
+%
+% ^^X \DescribeOption{delimiter}
+% ^^X \DescribeOption{fill}
+% ^^X \DescribeOption{align}
+% ^^X The commands in this section all accept key-value options as optional argument.
+% Valid keys are "delimiter", "fill", and "align",
+% their usage is described in section~\ref{sec:options-matrix}.
+%
+% \begin{function}[
+% updated=2024-08-20,
+% ]{
+% \cvector,
+% \rvector
+% }
+% \begin{syntax}
+% \cs{cvector} \oarg{kv opts} \marg{clist}
+% \cs{rvector} \oarg{kv opts} \marg{clist}
+% \end{syntax}
+% The commands \cs{cvector} and \cs{rvector} produce row and column vectors
+% respectively. Both of them accept key-value options as optional argument
+% \meta{kv opts}. Valid keys and values are described in section~\ref{sec:options-matrix}.
+%
+% The mandatory argument \meta{clist} is a comma-separated-list,
+% whose elements are the entries of the column/row vector.
+% If a comma has to appear inside an entry the entire entry has to be wrapped
+% in braces.
+%
+% The delimiter of the row or column vectors depends on the current value of
+% the option |delimiter|, by default empty. The option |fill| has no effect
+% on the commands and is simply ignored.
+%
+% \begin{texnote}
+% If you were to define your own \env{matrix*}-like environment
+% called \env{mymatrix*},
+% which has an interface compatible to \pkg{mathtools}'s \env{matrix*}
+% family of environments,
+% you could make use of it by setting the value of |delimiter| to |my|.
+% \end{texnote}
+% \end{function}
+%
+% \medbreak\noindent
+% \textbf{Examples:}
+% \begin{enumerate}
+% \item Column \enquote{vector} without delimiters:
+%
+% \begin{minipage}{.49\linewidth}
+% \begin{verbatim}
+% \[
+% \cvector{a_{1},a_{2},a_{3}}
+% \]
+% \end{verbatim}
+% \end{minipage}\hfill
+% \begin{minipage}{.49\linewidth}
+% \[
+% \cvector{a_{1},a_{2},a_{3}}
+% \]
+% \end{minipage}
+%
+% \item A column vectors delimited with parenthesis and different alignment:
+%
+% \begin{minipage}{.49\linewidth}
+% \begin{verbatim}
+% \[
+% \cvector[delimiter=p,align=c]{-1,2,3}
+% \]
+% \end{verbatim}
+% \end{minipage}\hfill
+% \begin{minipage}{.49\linewidth}
+% \[
+% \cvector[delimiter=p,align=c]{-1,2,3}
+% \]
+% \end{minipage}\\[1ex]
+% \begin{minipage}{.49\linewidth}
+% \begin{verbatim}
+% \[
+% \cvector[delimiter=p,align=r]{-1,2,3}
+% \]
+% \end{verbatim}
+% \end{minipage}\hfill
+% \begin{minipage}{.49\linewidth}
+% \[
+% \cvector[delimiter=p,align=r]{-1,2,3}
+% \]
+% \end{minipage}\\[1ex]
+% \begin{minipage}{.49\linewidth}
+% \begin{verbatim}
+% \[
+% \cvector[delimiter=p,align=l]{-1,2,3}
+% \]
+% \end{verbatim}
+% \end{minipage}\hfill
+% \begin{minipage}{.49\linewidth}
+% \[
+% \cvector[delimiter=p,align=l]{-1,2,3}
+% \]
+% \end{minipage}
+% \end{enumerate}
+%
+% \paragraph{Row- and Column Vectors with Predefined Delimiters}
+%
+% As vectors are commonly delimited by parenthesis, brackets, braces, etc.\
+% several shorthands producing delimited vectors are also available.
+% \begin{function}[updated=2024-08-20]{
+% \pcvector,
+% \bcvector,
+% \Bcvector,
+% \vcvector,
+% \Vcvector,
+% \prvector,
+% \brvector,
+% \Brvector,
+% \vrvector,
+% \Vrvector,
+% \prvector,
+% \brvector,
+% \Brvector,
+% \vrvector,
+% \Vrvector
+% }
+% \begin{syntax}
+% \cs[no-index]{\meta{delim}cvector} \oarg{kv opts} \marg{clist}
+% \cs[no-index]{\meta{delim}rvector} \oarg{kv opts} \marg{clist}
+% \end{syntax}
+% The \cs[no-index]{\meta{delim}\meta{c or r}vector} family of commands,
+% accepts a list of key-value options as optional argument \meta{kv opts}.
+% Valid keys are described in section~\ref{sec:options-matrix}.
+%
+% The mandatory argument \meta{clist} is a comma-separated-list of
+% the entries of the vector.
+% If a comma needs to appear inside an entry of the vector,
+% that entry has to be wrapped in braces.
+%
+% \meta{delim} may have the value "p" for parenthesis,
+% "b" for brackets, "B" for braces, "v" for a single vertical line,
+% or "V" for a double vertical line.
+% \end{function}
+%
+% \subparagraph{Example}
+% \begin{quote}
+% \begin{minipage}{.49\linewidth}
+% \begin{verbatim}
+% \[
+% \pcvector{a_{1},a_{2},a_{3}}
+% \]
+% \end{verbatim}
+% \end{minipage}\hfill
+% \begin{minipage}{.49\linewidth}
+% \[
+% \pcvector{a_{1},a_{2},a_{3}}
+% \]
+% \end{minipage}
+% \end{quote}
+%
+% \subsection{Small Versions for Inline Math}
+% \label{sec:rc-vectors-small}
+%
+% As the \env{matrix} and \env{matrix*} family of environments is unsuitable,
+% for inline math,
+% \pkg{mathtools}~\autocite{mathtools} provides the \env{smallmatrix}
+% and \env{smallmatrix*} family of environments.
+% This package provides analogous commands for row and column vectors
+% to be typeset in inline math mode.
+%
+% \begin{function}[
+% updated=2024-08-20,
+% ]{
+% \smallcvector,
+% \smallrvector
+% }
+% \begin{syntax}
+% \cs{smallcvector} \oarg{kv opts} \marg{clist}
+% \cs{smallrvector} \oarg{kv opts} \marg{clist}
+% \end{syntax}
+% \cs{smallcvector} and \cs{smallrvector} produce column and row vectors
+% suitable for inline math.
+% Both commands accept the same optional key-value arguments as
+% \cs{cvector} and \cs{rvector}.
+% \end{function}
+%
+%
+% \medbreak\noindent
+% \textbf{Example:}
+% \begin{quote}
+% \begin{verbatim}
+% An inline version of \verb|\cvector| looks like this
+% \(\smallcvector{1,0}\).
+% \end{verbatim}
+% An inline version of \verb|\cvector| looks like this
+% \(\smallcvector{1,0}\).
+% \end{quote}
+%
+% \begin{function}[updated=2024-08-20]{
+% \psmallcvector,
+% \bsmallcvector,
+% \Bsmallcvector,
+% \vsmallcvector,
+% \Vsmallcvector,
+% \psmallrvector,
+% \bsmallrvector,
+% \Bsmallrvector,
+% \vsmallrvector,
+% \Vsmallrvector,
+% }
+% \begin{syntax}
+% \cs{psmallcvector} \oarg{kv opts} \marg{clist}
+% \cs[no-index]{psmallrvector} \oarg{kv opts} \marg{clist}
+% \cs[no-index]{\meta{delim}small\meta{c or r}vector} \oarg{kv opts} \marg{clist}
+% \end{syntax}
+% The \cs[no-index]{\meta{delim}small\meta{c or r}vector} family of commands
+% like \cs{psmallcvector} produce small inline math version of row and column
+% vectors. Their interface is identical to the commands described above.
+% \end{function}
+%
+% \medbreak\noindent
+% \textbf{Example:}\nobreak
+% \begin{quote}
+% \begin{verbatim}
+% An inline version of \verb|\pcvector| looks like this
+% \(\psmallcvector{1,0}\).
+% \end{verbatim}
+% An inline version of \verb|\pcvector| looks like this
+% \(\psmallcvector{1,0}\).
+% \end{quote}
+%
+%
+% \section{Shorthands for Simple Matrices}
+% \label{sec:matrices}
+%
+% \DescribeOption{no-matrix}
+% The commands in this section are only defined if the option "no-matrix"
+% \emph{has not been given} to the package at load-time.
+%
+%
+% \subsection{(Anti-)diagonal Matrices}
+% \label{sec:diagonal-matrices}
+%
+% \begin{function}{
+% \diagmat,
+% \antidiagmat,
+% }
+% \begin{syntax}
+% \cs{diagmat} \oarg{kv opts} \marg{diagonal}
+% \cs{antidiagmat} \oarg{kv opts} \marg{diagonal}
+% \end{syntax}
+% \cs{diagmat} and \cs{antidiagmat} produce a diagonal or anti-diagonal matrix
+% respectively.
+% The optional argument \meta{kv~opts} accepts the key value options
+% described in section~\ref{sec:options-matrix}.
+%
+% The key "fill" determines the contents of the matrix entries
+% which are not part of the (anti-)diagonal,
+% its default value is |{}| i.e.\ empty.
+% The key "align" determines the alignment of the entries inside the
+% matrix, valid values are usually "l", "c", and "r",
+% the default is "c".
+% The key "delimiter" determines the delimiter around the matrix,
+% its default value is |{}| (none).
+% Valid values for the delimiters are "p" for parenthesis,
+% "b" for brackets, "B" for braces, "v" for a single vertical line
+% (\enquote{\(\vert\)}), and "V" for a double vertical line (\enquote{\(\Vert\)}).
+% See the \pkg{mathtools} manual~\autocite{mathtools} for more information.
+%
+% \begin{texnote}
+% The value of "delimiter" gets inserted inside the |\begin{#1matrix*}|
+% and |\end{#1matrix*}| commands.
+% Therefore it would be possible to define your own \env{matrix*}
+% like environment,
+% called for example \env{mymatrix*} and set "delimiter=my"
+% to make use of it.
+% \end{texnote}
+%
+% The mandatory argument \meta{diagonal} has to be a comma separated list
+% of the entries of the (anti-)diagonal.
+% If an entry of the diagonal needs to contain a comma "," the entire entry
+% has to be wrapped in braces.
+% \end{function}
+%
+% \medskip\noindent
+% \textbf{Examples:}
+% \begin{enumerate}
+% \item A diagonal and an anti-diagonal matrix without delimiters:
+%
+% \begin{minipage}{.49\linewidth}
+% \begin{verbatim}
+% \begin{gather*}
+% \diagmat{1,2,3}\\[.5ex]
+% \antidiagmat{1,2,3}
+% \end{gather*}
+% \end{verbatim}
+% \end{minipage}\hfill
+% \begin{minipage}{.49\linewidth}
+% \begin{gather*}
+% \diagmat{1,2,3}\\[.5ex]
+% \antidiagmat{1,2,3}
+% \end{gather*}
+% \end{minipage}
+% \item A diagonal matrix delimited by parenthesis filled with zeros:
+%
+% \begin{minipage}{.49\linewidth}
+% \begin{verbatim}
+% \[
+% \diagmat[delimiter=p,fill=0]{1,2,3}
+% \]
+% \end{verbatim}
+% \end{minipage}\hfill
+% \begin{minipage}{.49\linewidth}
+% \[
+% \diagmat[delimiter=p,fill=0]{1,2,3}
+% \]
+% \end{minipage}
+%
+% \item A diagonal matrix filled with a symbol:
+%
+% \begin{minipage}{.49\linewidth}
+% \begin{verbatim}
+% \[
+% \diagmat[fill=\square]{1,2,3}
+% \]
+% \end{verbatim}
+% \end{minipage}\hfill
+% \begin{minipage}{.49\linewidth}
+% \[\diagmat[fill=\square]{1,2,3}\]
+% \end{minipage}
+%
+% \item Diagonal matrices with different alignment:
+%
+% \begin{verbatim}
+% \[
+% \diagmat[delimiter=p,align=c,fill=0]{-1,-2,-3} \qquad
+% \diagmat[delimiter=p,align=l,fill=0]{-1,-2,-3} \qquad
+% \diagmat[delimiter=p,align=r,fill=0]{-1,-2,-3}
+% \]
+% \end{verbatim}
+% \[
+% \diagmat[delimiter=p,align=c,fill=0]{-1,-2,-3} \qquad
+% \diagmat[delimiter=p,align=l,fill=0]{-1,-2,-3} \qquad
+% \diagmat[delimiter=p,align=r,fill=0]{-1,-2,-3}
+% \]
+% \end{enumerate}
+%
+%
+% \paragraph{Shorthands for (Anti-)diagonal Matrices with Delimiters}
+%
+% As matrices are more often than not written inside of delimiters,
+% \pkg{moremath} provides several shorthands for producing those matrices
+% without having to set the "delimiter" key explicitly.
+% \begin{function}{
+% \pdiagmat,
+% \bdiagmat,
+% \Bdiagmat,
+% \vdiagmat,
+% \Vdiagmat
+% }
+% \begin{syntax}
+% \cs{pdiagmat} \oarg{kv opts} \marg{diagonal}
+% \cs{bdiagmat} \oarg{kv opts} \marg{diagonal}
+% \cs{Bdiagmat} \oarg{kv opts} \marg{diagonal}
+% \cs{vdiagmat} \oarg{kv opts} \marg{diagonal}
+% \cs{Vdiagmat} \oarg{kv opts} \marg{diagonal}
+% \end{syntax}
+% The \cs[no-index]{\meta{delim}diagmat} family of commands provides
+% shorthands for producing a delimited (anti-)diagonal matrix
+% without having to set the "delimiter" key explicitly every time.
+% The pre-set "delimiter" may be overwritten by explicitly passing "delimiter"
+% as a key-value option.
+%
+% The optional argument \meta{kv~opts} accepts the same key-value arguments
+% as \cs{diagmat}.
+% \end{function}
+%
+% \medskip\noindent
+% \textbf{Example:}
+% \begin{quote}
+% \begin{minipage}{.49\linewidth}
+% \begin{verbatim}
+% \[
+% \pdiagmat{1,2,3}
+% \]
+% \end{verbatim}
+% \end{minipage}\hfill
+% \begin{minipage}{.49\linewidth}
+% \[
+% \pdiagmat{1,2,3}
+% \]
+% \end{minipage}
+% \end{quote}
+%
+% \begin{function}{
+% \pantidiagmat,
+% \bantidiagmat,
+% \Bantidiagmat,
+% \vantidiagmat,
+% \Vantidiagmat
+% }
+% \begin{syntax}
+% \cs{pantidiagmat} \oarg{kv opts} \marg{diagonal}
+% \cs{bantidiagmat} \oarg{kv opts} \marg{diagonal}
+% \cs{Bantidiagmat} \oarg{kv opts} \marg{diagonal}
+% \cs{vantidiagmat} \oarg{kv opts} \marg{diagonal}
+% \cs{Vantidiagmat} \oarg{kv opts} \marg{diagonal}
+% \end{syntax}
+% The \cs[no-index]{\meta{delim}antidiagmat} family of commands behaves
+% like the \cs[no-index]{\meta{delim}diagmat} commands described above,
+% except they produce anti-diagonal matrices.
+% \end{function}
+%
+% \medskip\noindent
+% \textbf{Example:}
+% \begin{quote}
+% \begin{minipage}{.49\linewidth}
+% \begin{verbatim}
+% \[
+% \pantidiagmat{1,2,3}
+% \]
+% \end{verbatim}
+% \end{minipage}
+% \begin{minipage}{.49\linewidth}
+% \[
+% \pantidiagmat{1,2,3}
+% \]
+% \end{minipage}
+% \end{quote}
+%
+%
+% \subsubsection{Small Versions for Inline Math}
+% \label{sec:matrices-small}
+%
+% \pkg{mathtools} defines special matrix environments for use in
+% inline math mode,
+% the \env{smallmatrix} and \env{smallmatrix*} family of environments.
+% \pkg{moremath} provides for the case of typesetting an (anti-)diagonal
+% matrix several commands which utilize these inline math versions.
+%
+% \begin{function}{
+% \smalldiagmat,
+% \smallantidiagmat,
+% }
+% \begin{syntax}
+% \cs{smalldiagmat} \oarg{kv opts} \marg{diagonal}
+% \cs{smallantidiagmat} \oarg{kv opts} \marg{diagonal}
+% \end{syntax}
+% The \cs{smalldiagmat} and \cs{smallantidiagmat} commands behave like
+% their non-"small" counterpart described above,
+% see their description for more information.
+% \end{function}
+%
+% \medskip\noindent
+% \textbf{Example:}
+% \begin{quote}
+% \begin{verbatim}
+% An inline version of a diagonal matrix looks like this
+% \(\smalldiagmat{1,1}\).
+% \end{verbatim}
+% An inline version of a diagonal matrix looks like this
+% \(\smalldiagmat{1,1}\).
+% \end{quote}
+%
+% \begin{function}{
+% \psmalldiagmat,
+% \bsmalldiagmat,
+% \Bsmalldiagmat,
+% \vsmalldiagmat,
+% \Vsmalldiagmat,
+% }
+% \begin{syntax}
+% \cs{psmalldiagmat} \oarg{kv opts} \marg{diagonal}
+% \cs{bsmalldiagmat} \oarg{kv opts} \marg{diagonal}
+% \cs{Bsmalldiagmat} \oarg{kv opts} \marg{diagonal}
+% \cs{vsmalldiagmat} \oarg{kv opts} \marg{diagonal}
+% \cs{Vsmalldiagmat} \oarg{kv opts} \marg{diagonal}
+% \end{syntax}
+% Like the \cs[no-index]{\meta{delim}diagmat} commands described above
+% there are also shorthand commands for producing an inline math version
+% of a diagonal matrix with pre-set delimiters.
+% \end{function}
+%
+% \medbreak\noindent
+% \textbf{Example:}
+% \begin{quote}
+% \begin{verbatim}
+% An inline math delimited diagonal matrix looks like this
+% \(\psmalldiagmat{1,1}\).
+% \end{verbatim}
+% An inline math delimited diagonal matrix looks like this
+% \(\psmalldiagmat{1,1}\).
+% \end{quote}
+%
+% \begin{function}{
+% \psmallantidiagmat,
+% \bsmallantidiagmat,
+% \Bsmallantidiagmat,
+% \vsmallantidiagmat,
+% \Vsmallantidiagmat,
+% }
+% \begin{syntax}
+% \cs{psmallantidiagmat} \oarg{kv opts} \marg{diagonal}
+% \cs{bsmallantidiagmat} \oarg{kv opts} \marg{diagonal}
+% \cs{Bsmallantidiagmat} \oarg{kv opts} \marg{diagonal}
+% \cs{vsmallantidiagmat} \oarg{kv opts} \marg{diagonal}
+% \cs{Vsmallantidiagmat} \oarg{kv opts} \marg{diagonal}
+% \end{syntax}
+% Like the \cs[no-index]{\meta{delim}antidiagmat} commands described above
+% there are also shorthand commands for producing inline math versions
+% of anti-diagonal matrices inside of delimiters.
+% \end{function}
+%
+% \medbreak\noindent
+% \textbf{Example:}
+% \begin{quote}
+% \begin{verbatim}
+% A delimited version of an inline math anti-diagonal matrix
+% looks like this \(\psmallantidiagmat{1,1}\).
+% \end{verbatim}
+% A delimited version of an inline math anti-diagonal matrix
+% looks like this \(\psmallantidiagmat{1,1}\).
+% \end{quote}
+%
+% \subsection{Identity Matrices}
+% \label{sec:id-matrices}
+%
+% As identity matrices are always quadratic,
+% one can further simplify the typesetting of identity matrices to a command,
+% which constructs the identity matrix from the number of dimensions.
+% The commands in this subsection perform this.
+%
+% \begin{function}[added = 2024-07-04]{
+% \idmat,
+% \smallidmat,
+% }
+% \begin{syntax}
+% \cs{idmat} \oarg{kv~opts} \marg{dimension}
+% \cs{smallidmat} \oarg{kv~opts} \marg{dimension}
+% \end{syntax}
+% The \cs{idmat} command produces an identity matrix.
+% The optional argument <kv~opts> accepts any valid \emph{matrix} key-value
+% arguments,
+% which are described in section~\ref{sec:options-matrix}.
+% The mandatory argument <dimension> expects a \emph{positive} integer,
+% which specifies the dimensions of the identity matrix.
+%
+% The \cs{smallidmat} command behaves like the \cs{idmat} command,
+% except it produces a matrix suitable for inline math mode.
+%
+% \begin{texnote}
+% The maximum number of columns is determined by the \TeX{} counter
+% "MaxMatrixCols",
+% which has a default value of 10.
+% See \textcite{amsmath} for more information.
+% \end{texnote}
+% \end{function}
+%
+%
+% \begin{function}[added = 2024-07-04]{
+% \pidmat,
+% \bidmat,
+% \Bidmat,
+% \vidmat,
+% \Vidmat
+% }
+% \begin{syntax}
+% \cs{pidmat} \oarg{kv~opts} \marg{dimension}
+% \cs{bidmat} \oarg{kv~opts} \marg{dimension}
+% \cs{Bidmat} \oarg{kv~opts} \marg{dimension}
+% \cs{vidmat} \oarg{kv~opts} \marg{dimension}
+% \cs{Vidmat} \oarg{kv~opts} \marg{dimension}
+% \end{syntax}
+% Like the \cs[no-index]{\meta{delim}diagmat} commands,
+% the \cs[no-index]{\meta{delim}idmat} commands produce an identity matrix
+% with a pre-set delimiter around the matrix,
+% i.e.\ they behave like \cs{idmat}|[delimiter = |<delim>|]|\marg{dimension}.
+% <delim> can be "p" for parenthesis,
+% "b" for brackets,
+% "B" for braces,
+% "v" for a single vertical line (\enquote{\(\vert\)}),
+% or "V" for a double vertical line (\enquote{\(\Vert\)}).
+%
+% Furthermore these commands accept the same <kv~opts> as the \cs{idmat} command.
+% \end{function}
+%
+% \begin{function}[added = 2024-07-04]{
+% \psmallidmat,
+% \bsmallidmat,
+% \Bsmallidmat,
+% \vsmallidmat,
+% \Vsmallidmat
+% }
+% \begin{syntax}
+% \cs{psmallidmat} \oarg{kv~opts} \marg{dimension}
+% \cs{bsmallidmat} \oarg{kv~opts} \marg{dimension}
+% \cs{Bsmallidmat} \oarg{kv~opts} \marg{dimension}
+% \cs{vsmallidmat} \oarg{kv~opts} \marg{dimension}
+% \cs{Vsmallidmat} \oarg{kv~opts} \marg{dimension}
+% \end{syntax}
+% These commands are provide inline math suitable versions of the
+% \cs[no-index]{\meta{delim}idmat} commands described above.
+% See their description for more information.
+%
+% The commands accept any of the key-value options described in section~\ref{sec:options-matrix}
+% as optional argument <kv~opts>.
+% \end{function}
+%
+% \paragraph{Examples of Use}
+% \begin{enumerate}
+% \item Identity matrix without delimiters:
+%
+% \begin{minipage}{.49\linewidth}
+% \begin{verbatim}
+% \[
+% \idmat{3}
+% \]
+% \end{verbatim}
+% \end{minipage}\hfill
+% \begin{minipage}{.49\linewidth}
+% \[\idmat{3}\]
+% \end{minipage}
+%
+% \item Identity matrices with different delimiters:
+%
+% \begin{verbatim}
+% \[
+% \pidmat{3}\text{,}\quad \bidmat{3}\text{,}\quad
+% \Bidmat{3}\text{,}\quad \vidmat{3}\text{,}\quad
+% \Vidmat{3}
+% \]
+% \end{verbatim}
+% \[
+% \pidmat{3}\text{,}\quad
+% \bidmat{3}\text{,}\quad
+% \Bidmat{3}\text{,}\quad
+% \vidmat{3}\text{,}\quad
+% \Vidmat{3}
+% \]
+%
+% \item Inline math versions of identity matrices with delimiters:
+%
+% \begin{verbatim}
+% Inline math mode matrices look like this:
+% \(\psmallidmat{2}\), \(\bsmallidmat{2}\), \(\Bsmallidmat{2}\),
+% \(\vsmallidmat{2}\), \(\Vsmallidmat{2}\).
+% \end{verbatim}
+% Inline math mode matrices look like this:
+% \(\psmallidmat{2}\), \(\bsmallidmat{2}\), \(\Bsmallidmat{2}\),
+% \(\vsmallidmat{2}\), \(\Vsmallidmat{2}\).
+%
+% \item Identity matrix using the "fill" option for the non-diagonal elements
+%
+% \begin{minipage}{.49\linewidth}
+% \begin{verbatim}
+% \[
+% \pidmat[fill=\star]{3}
+% \]
+% \end{verbatim}
+% \end{minipage}\hfill
+% \begin{minipage}{.49\linewidth}
+% \[\pidmat[fill=\star]{3}\]
+% \end{minipage}
+% \end{enumerate}
+%
+%
+% \section{Shorthands for Absolute Value and Norm}
+% \label{sec:shorthands}
+%
+% \DescribeOption{no-abs-shorthands}
+% The commands in this section are only declared if the option "no-abs-shorthands"
+% has not been given to the package as a load time option.
+%
+% \begin{function}{
+% \abs,
+% \norm
+% }
+% \begin{syntax}
+% \cs{abs} \oarg{size cmd} \marg{content}
+% \cs{abs}* \marg{content}
+% \cs{norm} \oarg{size cmd} \marg{content}
+% \cs{norm}* \marg{content}
+% \end{syntax}
+% The commands \cs{abs} and \cs{norm}, produce \(\abs{\cdot}\) and
+% \(\norm{\cdot}\) respectively.
+% These commands are simply paired delimiters defined using \pkg{mathtools}'
+% \cs[module=mathtools,replace=false]{DeclarePairedDelimiter} command,
+% instruction on their usage can therefore be found in~\textcite{mathtools}.
+% \end{function}
+%
+%
+% \section{Vertically Centering Math Along the Math Axis}
+% \label{sec:vcenter}
+%
+% Sometimes it is useful to explicitly center a math symbol along the math axis.
+% A prominent example is the case of |\mathop{\boldsymbol\nabla}\nolimits|
+% vs.\ |\mathop{\nabla}\nolimits|,
+% as displayed below.
+% \[
+% \mathop{\boldsymbol\nabla}\nolimits f(x)
+% \quad \mathop{\nabla}\nolimits f(x)
+% \]
+% Here the bold nabla is slightly higher up than the non-bold version.
+%
+% \begin{function}[added=2024-07-08]{\VCenterMath}
+% \begin{syntax}
+% \cs{VCenterMath} \marg{contents}
+% \end{syntax}
+% \begin{danger}
+% The command \cs{VCenterMath} centers <contents> along the current math axis,
+% while adhering to the current math style.
+% This command is not in a \TeX{}-sense
+% \tn[no-index]{long}, i.e.\ it does not take \tn[no-index]{par} tokens.
+%
+% This command is somewhat dangerous as it utilizes the \tn{vcenter} primitive,
+% which leaves math mode and requires to reenter it.
+% \emph{Use at your own responsibility.}
+% \end{danger}
+% \begin{texnote}
+% This command is a wrapper around \tn{vcenter}, \cs{hbox:n}
+% and \tn{mathpalette}, it reenters math mode inside the hbox.
+% \end{texnote}
+% \end{function}
+%
+% With \cs{VCenterMath} it is possible to fix the above example to:
+% \begin{quote}
+% \begin{verbatim}
+% \[
+% \mathop{\VCenterMath{\boldsymbol\nabla}}\nolimits f(x)
+% \quad \mathop{\nabla}\nolimits f(x)
+% \]
+% \end{verbatim}
+% \[
+% \mathop{\VCenterMath{\boldsymbol\nabla}}\nolimits f(x)
+% \quad \mathop{\nabla}\nolimits f(x)
+% \]
+% \end{quote}
+%
+%
+% \part{Documentation for Class and Package Authors}
+% \label{sec:package-auth-doc}
+%
+% \section{Setting of Options}
+% \label{sec:authors-options}
+%
+% \begin{function}[updated = 2024-07-15]{
+% \moremath_setup:n
+% }
+% \begin{syntax}
+% \cs{moremath_setup:n} \marg{kv opts}
+% \end{syntax}
+% This functions sets the key-value options \meta{kv~opts} in the "moremath" namespace.
+% \end{function}
+%
+% \section{Delimited Operators}
+% \label{sec:authors-delim-op}
+%
+% \begin{function}[updated = 2024-07-15]{
+% \moremath_delim_op_noscale:NNnnn,
+% \moremath_delim_op_autoscale:NNnnn
+% }
+% \begin{syntax}
+% \cs{moremath_delim_op_noscale:NNnnn} \meta{math~op} \meta{delim}
+% \hspace*{2ex} \marg{sup~tl} \marg{sub~tl} \marg{tl}
+% \cs{moremath_delim_op_autoscale:NNnnn} \meta{math op} \meta{delim}
+% \hspace*{2ex} \marg{sup~tl} \marg{sub~tl} \marg{tl}
+% \end{syntax}
+% The two functions \cs{moremath_delim_op_noscale:NNnnn} and \cs{moremath_delim_op_autoscale:NNnnn}
+% provide a version of a delimited operator with no scaling or automatic scaling respectively.
+% The token list arguments \meta{sup~tl} and \meta{sub~tl} take the super- and subscript
+% of the operator respectively. Both of those token lists may be empty.
+%
+% The first argument to the function is a control sequence \meta{math~op},
+% which should be an operator declared with
+% \cs[module=amsmath,replace=false]{DeclareMathOperator}.
+% The second argument \meta{delim} has to be a control sequence of a paired delimiter,
+% as defined by \pkg{mathtools}'s
+% \cs[module=mathtools,replace=false]{DeclarePairedDelimiter}.
+%
+% The final argument \meta{tl} is a list of arbitrary token to put inside the delimiters.
+% \end{function}
+%
+% \begin{function}[updated=2024-07-15]{
+% \moremath_delim_op_manuscale:NNnnnn,
+% \moremath_delim_op_manuscale:NNVnnn
+% }
+% \begin{syntax}
+% \cs{moremath_delim_op_manuscale:NNnnnn} \meta{math op} \meta{delim} \marg{scale cmd}
+% \hspace*{2ex} \marg{sup} \marg{sub} \marg{tl}
+% \end{syntax}
+% The function \cs{moremath_delim_op_manuscale:NNnnnn} typesets a math operator with
+% manual scaling of its delimiters.
+% Its arguments are identical to \cs{moremath_delim_op_noscale:NNnnn}
+% except for the argument \meta{scale~cmd} which has to be a token list containing
+% a \meta{size~cmd} that can be understood by \pkg{mathtools},
+% usually \cs{big}, \cs{Big}, \cs{bigg} and \cs{Bigg}.
+% \end{function}
+%
+% \begin{function}[updated=2024-07-15]{
+% \moremath_new_delim_op_command:NNN,
+% \moremath_new_delim_op_command:cNN,
+% }
+% \begin{syntax}
+% \cs{moremath_new_delim_op_command:NNN} \meta{new~csname} \meta{operator} \meta{delim}
+% \end{syntax}
+% The function \cs{moremath_new_delim_op_command:NNN} defines a new document level command
+% called \meta{new~csname}, utilizing the operator \meta{operator} and the delimiter \meta{delim}.
+%
+% \meta{operator} has to be a control sequence referring to an operator,
+% as declared by \cs{DeclareMathOperator}.
+%
+% \meta{delim} has to be a paired delimiter as defined by \pkg{mathtools}'
+% \cs{DeclarePairedDelimiter}.
+% \end{function}
+%
+% \section{Vector Calculus Typesetting}
+% \label{sec:authors-vec-calc}
+%
+% \subsection{Functions Producing Standalone Operators with Subscripts}
+% \label{sec:authors-vec-calc-operators}
+%
+% \begin{function}[updated=2024-07-15]{
+% \moremath_gradient_operator:n,
+% \moremath_divergence_operator:n,
+% \moremath_curl_operator:n,
+% \moremath_laplace_operator:n,
+% \moremath_dalembert_operator:n
+% }
+% \begin{syntax}
+% \cs{moremath_gradient_operator:n} \marg{subscript}
+% \cs{moremath_divergence_operator:n} \marg{subscript}
+% \cs{moremath_curl_operator:n} \marg{subscript}
+% \cs{moremath_laplace_operator:n} \marg{subscript}
+% \cs{moremath_dalembert_operator:n} \marg{subscript}
+% \end{syntax}
+% Each of these functions return a vector calculus operator,
+% with an (optional) subscript.
+% The argument \meta{subscript}, a token list, may be empty,
+% in which case no subscript is produced.
+%
+% The actual operator produced depends on the current settings
+% of the key-value options described in section~\ref{sec:pack-opts}
+% inside the current group.
+% \end{function}
+%
+% \subsection{Functions Producing Operators with Delimiters}
+% \label{sec:authors-vec-calc-delim-ops}
+%
+% \begin{function}[updated=2024-07-15]{
+% \moremath_delim_nabla_op_noscale:NNnn,
+% \moremath_delim_nabla_op_autoscale:NNnn,
+% }
+% \begin{syntax}
+% \cs{moremath_delim_nabla_op_noscale:NNnn} \meta{operator} \meta{delim}
+% \hspace*{2ex} \marg{sub} \marg{contents}
+%
+% \cs{moremath_delim_nabla_op_autoscale:NNnn} \meta{operator} \meta{delim}
+% \hspace*{2ex} \marg{sub} \marg{contents}
+% \end{syntax}
+% The usage of these functions is similar to the functions
+% \cs{moremath_delim_op_noscale:NNnnn} and \cs{moremath_delim_op_autoscale:NNnnn}
+% except for the missing superscript.
+%
+% The first argument \meta{operator} has to be a function which accepts one argument
+% (the subscript).
+% This is usually one of the \cs[no-index]{moremath_\meta{op}_operator:n} commands.
+%
+% The argument \meta{sub}, which may be empty,
+% is a token list to pass as the subscript to
+% \cs[no-index]{moremath_\meta{op}_operator:n}.
+%
+% The last argument \meta{contents} is a token list to put inside the delimiters.
+%
+% \end{function}
+%
+% \begin{function}[updated=2024-07-15]{
+% \moremath_delim_nabla_op_manuscale:NNnnn,
+% \moremath_delim_nabla_op_manuscale:NNVnn,
+% }
+% \begin{syntax}
+% \cs{moremath_delim_nabla_op_manuscale:NNnnn} \meta{operator} \meta{delim}
+% \hspace*{2ex} \marg{scale~cmd} \marg{sub} \marg{contents}
+% \end{syntax}
+% The usage of this function is similar to the above functions
+% except for the additional argument \meta{scale~cmd} which is a token list
+% with a \meta{size~cmd} that should be understood by \pkg{mathtools}
+% (e.g.\ \cs{big}, \cs{Big}, etc.).
+% \end{function}
+%
+% \section{Formatting Matrices and Vectors}
+% \label{sec:authors-matrix}
+%
+% \begin{function}[
+% updated=2024-07-15,
+% updated=2024-08-20,
+% ]{
+% \moremath_column_vector:nn,
+% \moremath_column_vector:Vn,
+% \moremath_row_vector:nn,
+% \moremath_row_vector:Vn,
+% \moremath_column_smallvector:nn,
+% \moremath_column_smallvector:Vn,
+% \moremath_row_smallvector:nn,
+% \moremath_row_smallvector:Vn,
+% }
+% \begin{syntax}
+% \cs{moremath_column_vector:nn} \marg{delim spec tl} \marg{clist}
+% \cs{moremath_row_vector:nn} \marg{delim spec tl} \marg{clist}
+% \cs{moremath_column_smallvector:nn} \marg{delim spec tl} \marg{clist}
+% \cs{moremath_row_smallvector:nn} \marg{delim spec tl} \marg{clist}
+% \end{syntax}
+% These functions produce a column or row vector.
+% The "small"\meta{c~or~r}"vector" versions are intended for inline math mode.
+%
+% The first argument \meta{delim spec tl} should be the specification of
+% a delimiter, as used in the naming of the \env{matrix*} environments
+% by \pkg{mathtools}.
+%
+% The second argument \meta{clist}, is a comma-separated list of entries
+% of the vector.
+%
+% Of this commands the "c" versions produce column vectors, the "r" versions
+% produce row vectors.
+%
+% The alignment of the entries inside the vector depends on the current
+% value of the key "align".
+% \end{function}
+%
+% \begin{function}[
+% updated = 2024-07-04,
+% updated=2024-07-15,
+% updated=2024-08-20,
+% ]{
+% \moremath_diagonal_matrix:nn,
+% \moremath_diagonal_matrix:nV,
+% \moremath_diagonal_matrix:Vn,
+% \moremath_diagonal_matrix:VV,
+% \moremath_antidiagonal_matrix:nn,
+% \moremath_antidiagonal_matrix:nV,
+% \moremath_antidiagonal_matrix:Vn,
+% \moremath_antidiagonal_matrix:VV,
+% \moremath_diagonal_smallmatrix:nn,
+% \moremath_diagonal_smallmatrix:nV,
+% \moremath_diagonal_smallmatrix:Vn,
+% \moremath_diagonal_smallmatrix:VV,
+% \moremath_antidiagonal_smallmatrix:nn,
+% \moremath_antidiagonal_smallmatrix:nV,
+% \moremath_antidiagonal_smallmatrix:Vn,
+% \moremath_antidiagonal_smallmatrix:VV,
+% }
+% \begin{syntax}
+% \cs{moremath_diagonal_matrix:nn} \marg{delim tl} \marg{clist}
+% \cs{moremath_antidiagonal_matrix:nn} \marg{delim tl} \marg{clist}
+% \cs{moremath_diagonal_smallmatrix:nn} \marg{delim tl} \marg{clist}
+% \cs{moremath_antidiagonal_smallmatrix:nn} \marg{delim tl} \marg{clist}
+% \end{syntax}
+% These functions produce (anti-)diagonal matrices.
+% The argument \meta{delim~tl} is a token list,
+% intended to specify the delimiter of the matrix or no delimiter if the
+% <tl> is empty no delimiters are produced.
+%
+% The argument <clist> is a list of comma separated values which specify the
+% entries of the diagonal.
+% Other properties of the matrix to produce like alignment ("align")
+% and the tokens to insert for non-diagonal entries ("fill")
+% depend on the current setting of the keys described in section~\ref{sec:options-matrix}.
+%
+% The "smallmatrix" versions are intended for use in inline math mode.
+% \end{function}
+%
+% \begin{function}[
+% added = 2024-07-04,
+% updated=2024-07-15,
+% ]{
+% \moremath_id_matrix:n,
+% \moremath_id_matrix:V,
+% \moremath_id_smallmatrix:n,
+% \moremath_id_smallmatrix:V,
+% }
+% \begin{syntax}
+% \cs{moremath_id_matrix:n} \marg{dimensions}
+% \cs{moremath_id_smallmatrix:n} \marg{dimensions}
+% \end{syntax}
+% These functions produce a identity matrix with <dimensions> rows and columns.
+% <dimensions> is expected to be a \emph{positive} integer.
+% The "smallmatrix" version utilizes \pkg{mathtools}' \env{smallmatrix*} environment,
+% which makes it suitable for inline math mode.
+%
+% The delimiter around the matrix is determined by the current value of the key
+% "matrix / delimiter" inside the current group.
+%
+% As these functions utilize \cs{moremath_diagonal_matrix:VV} or
+% \cs{moremath_diagonal_smallmatrix:VV} and make use of temporary variables
+% it is advised to put them into their own group,
+% i.e.\ surround them by \cs{group_begin:} and \cs{group_end:}.
+% \end{function}
+%
+% \section{Vertically Centering Math Along the Math Axis}
+% \label{sec:autors-vcenter}
+%
+% As already said in section~\ref{sec:vcenter} sometimes it is needed to
+% explicitly center some math code.
+%
+% \begin{function}[
+% added=2024-07-08,
+% updated=2024-07-15,
+% updated=2024-08-20,
+% ]{
+% \moremath_vcenter:n,
+% }
+% \begin{syntax}
+% \cs{moremath_vcenter:n} \marg{contents}
+% \end{syntax}
+% The function \cs{moremath_vcenter:n} places <contents> inside a "hbox",
+% which is centered along the math axis by \tn{vcenter}.
+% The contents inside the "hbox" are set in math mode.
+% The function also applies the \enquote{outer} math style
+% to the contents of the "hbox".
+%
+% This function is not \tn[no-index]{long},
+% as it sets its contents inside a "hbox".
+%
+% \begin{texnote}
+% This function is a wrapper around \tn{vcenter}, \cs{hbox:n},
+% and \tn{mathpalette}.
+% Inside the "hbox" math mode is reentered.
+% \end{texnote}
+% \end{function}
+%
+% \end{documentation}
+%
+%
+%
+%
+%
+%
+%
+%
+%
+%
+% \begin{implementation}
+% \part{Implementation}
+% \label{pt:implementation}
+% Start the \pkg{DocStrip} guards.
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+%
+% Set the internal prefix for this package so that \pkg{DocStrip} knows what to
+% do.
+% \begin{macrocode}
+%<@@=moremath>
+% \end{macrocode}
+%
+% \section{Initial Setup}
+%
+% First set the required version of \LaTeX{},
+% we need at least
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}[2022-11-01]
+% \end{macrocode}
+% for key-value option handling, \pkg{xparse}-like document commands
+% (especially for using the "=" option specification)
+% and hooks.
+%
+% Afterwards we provide rollback information,
+% for the \pkg{latexrelease} rollback mechanism.
+% (See \textcite{package-rollback} for more information.)
+%
+% For the v0.x.x versions I've decided on using the date of the first release
+% that was uploaded to CTAN\@.
+% \begin{macrocode}
+\DeclareCurrentRelease{v0}{2024-07-15}
+% \end{macrocode}
+% \changes{v0.5.0}{\GetVersionDate{v0.5.0}}{
+% Add information for \LaTeX{}'s package rollback mechanism.
+% }
+%
+% Then identify this package as \pkg{moremath}.
+% \begin{macrocode}
+\ProvidesExplPackage{moremath}
+ {2024-08-20}{v0.5.0}{More Math Macros}
+% \end{macrocode}
+%
+% ^^X Debugging switch
+% \iffalse
+% \debug_on:n {all}
+% \fi
+% \section{Key-value interfaces}
+% \label{sec:key-val}
+% To make use of key-value interfaces we need to define a few keys.
+%
+% \subsection{Package load time options}
+% \label{sec:load-time-options}
+%
+% To allow for the conditional definition of macros at load time
+% we define a few keys.
+%
+% But before doing so we define a few messages to write the package options to
+% the log file.
+% One message to issue if the \texttt{bm} option has been given:
+% \begin{macrocode}
+\msg_new:nnn { moremath } {load / bm}
+{
+ Option~'bm'~given.\\
+ Loading~the~bm~package~\msg_line_context:.
+}
+% \end{macrocode}
+% And a more generic message to issue for the other options,
+% which all disable certain parts of the library.
+% \begin{macrocode}
+\msg_new:nnn {moremath} { load / disabling }
+{
+ Option~'#1'~given.\\
+ Disabling~#2~\msg_line_context:.
+}
+% \end{macrocode}
+%
+% \begin{variable}{
+% \l_@@_predef_vector_op_bool,
+% \l_@@_predef_operators_bool,
+% \l_@@_predef_crvector_bool,
+% \l_@@_predef_matrix_bool,
+% \l_@@_predef_abs_bool,
+% }
+% To store the values of several switch type key-value options
+% we declare several boolean variables.
+% \begin{macrocode}
+\bool_new:N \l_@@_predef_vector_op_bool
+\bool_new:N \l_@@_predef_operators_bool
+\bool_new:N \l_@@_predef_crvector_bool
+\bool_new:N \l_@@_predef_matrix_bool
+\bool_new:N \l_@@_predef_abs_bool
+% \end{macrocode}
+%
+% The variables \cs{l_@@_predef_vector_op_bool}, \cs{l_@@_predef_operators_bool}
+% \cs{l_@@_predef_abs_bool}, \cs{l_@@_predef_matrix_bool}
+% and \cs{l_@@_predef_crvector_bool}
+% control if the predefined macros
+% for vector calculus, delimited operators, the matrix shorthands,
+% the row and column vectors,
+% and the shorthands for absolute value
+% and norm shall be defined.
+%
+% \changes{v0.2.0}{\GetVersionDate{v0.2.0}}{
+% Explicitly declared boolean variables used to store key-value options.
+% }
+% \end{variable}
+%
+% \begin{optionenv}{
+% bm,
+% no-vector,
+% no-operators,
+% no-abs-shorthands,
+% no-matrix,
+% no-crvector,
+% nopredef,
+% }
+% Now we define package load time keys:
+% \begin{macrocode}
+\keys_define:nn { moremath / load }
+{
+% \end{macrocode}
+% We provide an option to conditionally load the \pkg{bm}-package~\autocite{bm}
+% to provide better looking bold symbols.
+% \begin{macrocode}
+ bm .code:n = {
+ \msg_info:nn {moremath} {load / bm}
+ \RequirePackage{bm}
+ },
+ bm .value_forbidden:n = true,
+ bm. usage:n = load,
+% \end{macrocode}
+% Then we define options for en-/disabling predefined macros of this package
+% to avoid name clashes.
+% \begin{macrocode}
+ no-vector .bool_set_inverse:N = \l_@@_predef_vector_op_bool,
+ no-vector .default:n = true,
+ no-vector .initial:n = false,
+ no-vector .usage:n = load,
+ no-operators .bool_set_inverse:N = \l_@@_predef_operators_bool,
+ no-operators .default:n = true,
+ no-operators .initial:n = false,
+ no-operators .usage:n = load,
+ no-abs-shorthands .bool_set_inverse:N = \l_@@_predef_abs_bool,
+ no-abs-shorthands .default:n = true,
+ no-abs-shorthands .initial:n = false,
+ no-abs-shorthands .usage:n = load,
+ no-matrix .bool_set_inverse:N = \l_@@_predef_matrix_bool,
+ no-matrix .initial:n = false,
+ no-matrix .default:n = true,
+ no-matrix .usage:n =load,
+ no-crvector .bool_set_inverse:N = \l_@@_predef_crvector_bool,
+ no-crvector .default:n = true,
+ no-crvector .initial:n = false,
+ no-crvector .usage:n = load,
+ nopredef .multichoice:,
+ nopredef / operators .meta:nn = { moremath / load }
+ {
+ no-operators = true
+ },
+ nopredef / vector .meta:nn = { moremath / load }
+ {
+ no-vector = true
+ },
+ nopredef / abs .meta:nn = { moremath / load }
+ {
+ no-abs-shorthands = true,
+ },
+ noperdef / matrix .meta:nn = { moremath / load }
+ {
+ no-matrix = true,
+ },
+ nopredef / crvector .meta:nn = {moremath / load}
+ {
+ no-crvector = true,
+ },
+ nopredef / all .meta:nn = { moremath / load }
+ {
+ no-operators = true,
+ no-vector = true,
+ no-abs-shorthands = true
+ },
+ nopredef .usage:n = load,
+% \end{macrocode}
+% Unknown package options get passed to \pkg{mathtools}.
+% \begin{macrocode}
+ unknown .code:n = {\PassOptionsToPackage{\CurrentOption}{mathtools}},
+ unknown .usage:n = load,
+}
+% \end{macrocode}
+% \changes{v0.1.0}{\GetVersionDate{v0.1.0}}{
+% Added package load-time options.
+% }
+% \end{optionenv}
+%
+%
+% \subsection{Keys controlling appearance}
+% \label{sec:keys-appearance}
+%
+% \begin{variable}{
+% \l_@@_nabla_tl,
+% \l_@@_nabla_arrow_bool,
+% \l_@@_nabla_arrow_bold_bool,
+% \l_@@_grad_op_tl,
+% \l_@@_laplacian_symb_tl,
+% \l_@@_laplacian_delta_bool,
+% \l_@@_laplacian_arrow_bool,
+% \l_@@_laplacian_tl,
+% \l_@@_dalembert_symb_tl,
+% }
+% We declare several variables to store the values of the keys affecting
+% appearance.
+% \begin{macrocode}
+\tl_new:N \l_@@_nabla_tl
+\bool_new:N \l_@@_nabla_arrow_bool
+\bool_new:N \l_@@_nabla_arrow_bold_bool
+\tl_new:N \l_@@_grad_op_tl
+% \end{macrocode}
+%
+% The symbol to use as \enquote{nabla} is stored in \cs{l_@@_nabla_tl}.
+% The variables \cs{l_@@_nabla_arrow_bool} and \cs{l_@@_nabla_bold_bool}
+% determine if the nabla-symbol shall have an arrow over itself and/or be bold
+% respectively.
+%
+% The variable \cs{l_@@_grad_op_tl} contains a user provided token list to
+% overwrite the built-in gradient operator of the package.
+%
+% \begin{macrocode}
+\tl_new:N \l_@@_laplacian_symb_tl
+\bool_new:N \l_@@_laplacian_delta_bool
+\bool_new:N \l_@@_laplacian_arrow_bool
+\tl_new:N \l_@@_laplacian_tl
+% \end{macrocode}
+% The token list variable \cs{l_@@_laplacian_symb_tl} stores the tokens to be
+% used for the Laplace operator.
+% The boolean variable \cs{l_@@_laplacian_delta_bool}
+% determines if a delta should be used instead
+% of \(\laplacian\) for the laplacian symbol.
+% If the boolean variable \cs{l_@@_laplacian_arrow_bool} a small arrow will be
+% placed over the Laplace operator symbol.
+% If the user wants to overwrite the symbol used for the Laplacian,
+% the user provided list of tokens is stored in the variable
+% \cs{l_@@_laplacian_tl}.
+%
+% Finally we define a variable to hold the symbol to use for the
+% \foreignlanguage{french}{d'Alembert} operator.
+% \begin{macrocode}
+\tl_new:N \l_@@_dalembert_symb_tl
+% \end{macrocode}
+% \changes{v0.2.0}{\GetVersionDate{v0.2.0}}{%
+% Explicitly declared variables before using them to set keys.
+% }
+% \changes{v0.2.0}{\GetVersionDate{v0.2.0}}{%
+% Added: New variable \cs{l_@@_dalembert_symb_tl}
+% }
+% \end{variable}
+%
+% \begin{variable}{
+% \l_@@_vcenter_bool,
+% }
+% Additionally we declare a variable to decide if certain math symbols
+% shall be centered explicitly along the math axis.
+% \begin{macrocode}
+\bool_new:N \l_@@_vcenter_bool
+% \end{macrocode}
+% If \cs{l_@@_vcenter_bool} is true, the symbols of certain math operators,
+% should be centered explicitly.
+% \end{variable}
+%
+% \begin{optionenv}{
+% nabla,
+% arrownabla,
+% boldnabla,
+% grad-op,
+% laplacian-symb,
+% delta-laplace,
+% arrowlaplace,
+% laplacian,
+% dalembert-symb,
+% }
+% First define keys for the vector calculus macros.
+% \begin{macrocode}
+\keys_define:nn { moremath }
+{
+% \end{macrocode}
+% First we define keys for use with the gradient and gradient based operators.
+% \begin{macrocode}
+ % Symbol to use for the nabla
+ nabla .tl_set:N = \l_@@_nabla_tl,
+ nabla .initial:n = {\nabla},
+ nabla .value_required:n = true,
+ % shall the nabla have an arrow over it
+ arrownabla .bool_set:N = \l_@@_nabla_arrow_bool,
+ arrownabla .default:n = {true},
+ arrownabla .initial:n = {false},
+ % shall the nabla be bold
+ boldnabla .bool_set:N = \l_@@_nabla_bold_bool,
+ boldnabla .default:n = {true},
+ boldnabla .initial:n = {false},
+% \end{macrocode}
+% We also provide an override for the gradient operator
+% \begin{macrocode}
+ % Symbol to use for the gradient operator
+ grad-op .tl_set:N = \l_@@_grad_op_tl,
+ grad-op .value_required:n = true,
+% \end{macrocode}
+%
+% Then we define keys for the laplacian.
+% \begin{macrocode}
+ % Symbol to use for the laplacian
+ laplacian-symb .tl_set:N = \l_@@_laplacian_symb_tl,
+ laplacian-symb .initial:n = {\l_@@_nabla_tl},
+ % shall the Laplace operator be a delta
+ delta-laplace .bool_set:N = \l_@@_laplacian_delta_bool,
+ delta-laplace .initial:n = {false},
+ % shall the laplace operator have an arrow over itself
+ arrowlaplace .bool_set:N = \l_@@_laplacian_arrow_bool,
+ arrowlaplace .default:n = {true},
+ arrowlaplace .initial:n = {false},
+ % overwrite the laplace operator
+ laplacian .tl_set:N = \l_@@_laplacian_tl,
+ laplacian .value_required:n = true,
+% \end{macrocode}
+% And keys for the \foreignlanguage{french}{d'Alembert} operator.
+% \begin{macrocode}
+ dalembert-symb .tl_set:N = \l_@@_dalembert_symb_tl,
+ dalembert-symb .initial:n = {\square},
+% \end{macrocode}
+% \begin{optionenv}{
+% vcenter,
+% }
+% The "vcenter" option will control the manual centering of certain math
+% operators.
+% \begin{macrocode}
+ vcenter .bool_set:N = \l_@@_vcenter_bool,
+ vcenter .initial:n = true,
+ vcenter .value_required:n = true,
+}% \keys_define:nn
+% \end{macrocode}
+% \changes{v0.3.0}{\GetVersionDate{v0.3.0}}{
+% Added new option.
+% }
+% \end{optionenv} ^^X vcenter
+% \changes{v0.1.0}{\GetVersionDate{v0.1.0}}{%
+% Added options controlling appearance.
+% }
+% \changes{v0.2.0}{\GetVersionDate{v0.2.0}}{%
+% Added: New option "dalembert-symb".
+% }
+% \end{optionenv}
+%
+% \begin{optionenv}{
+% delimiter,
+% fill,
+% align
+% }
+% Then we define some keys for the matrix based environments:
+% \begin{macrocode}
+\keys_define:nn { moremath / matrix }
+{
+% \end{macrocode}
+% \begin{variable}{
+% \l_@@_matrix_delim_tl,
+% \l_@@_matrix_fill_tl,
+% \l_@@_matrix_align_tl,
+% }
+% Every one of the following keys stores its value inside a token list variable.
+% \begin{macrocode}
+ delimiter .tl_set:N = \l_@@_matrix_delim_tl,
+ delimiter .initial:n = {},
+ fill .tl_set:N = \l_@@_matrix_fill_tl,
+ fill .initial:n = {},
+ align .tl_set:N = \l_@@_matrix_align_tl,
+ align .initial:n = {c},
+ align .value_required:n = true,
+}
+% \end{macrocode}
+% The keys \verb|delimiter| and \verb|fill| set the variables
+% \cs{l_@@_matrix_delim_tl} and \cs{l_@@_matrix_fill_tl} respectively.
+% \cs{l_@@_matrix_delim_tl} determines the delimiter in use to surround
+% matrices and \cs{l_@@_matrix_fill_tl} determines the fill values of the
+% \cs{diag}, \cs{smalldiag}, \cs[no-index]{Xdiag} and \cs[no-index]{Xsmalldiag}
+% commands, which are used for non-diagonal matrix entries.
+% The variable \cs{l_@@_matrix_align_tl} contains the alignment specifier
+% for use with the \env{matrix*} environment.
+%
+% \changes{v0.1.0}{\GetVersionDate{v0.1.0}}{%
+% Added internal variables.
+% }
+% \end{variable}
+% \changes{v0.1.0}{\GetVersionDate{v0.1.0}}{%
+% Added options for the matrix-based environments of \pkg{mathtools}.
+% }
+% \end{optionenv}
+%
+% \subsection{Functions for Setting Options}
+% \label{sec:option-setters}
+%
+%
+% Now we define a function for setting the options within the document
+% \begin{macro}{\moremath_setup:n}
+% \begin{macrocode}
+\cs_new_protected:Nn \moremath_setup:n
+{
+ \keys_set:nn {moremath} {#1}
+}
+% \end{macrocode}
+% \changes{v0.1.0}{\GetVersionDate{v0.1.0}}{%
+% Added function for setting options.
+% }
+% \end{macro}
+%
+% Additionally we provide the user with a version of this command.
+% \begin{macro}{\moremathsetup}
+% \begin{macrocode}
+\NewDocumentCommand \moremathsetup {m}
+{
+ \moremath_setup:n {#1}
+}
+% \end{macrocode}
+% \changes{v0.1.0}{\GetVersionDate{v0.1.0}}{%
+% Added document command for setting package options.
+% }
+% \end{macro}
+% We also need a function for setting the package load time options.
+% This function should set all given values for all key families
+% and pass unknown options to mathtools.
+% \begin{macro}{\@@_load_time_setup:}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_load_time_setup:
+{
+ \ProcessKeyOptions[ moremath / load ]
+}
+% \end{macrocode}
+% \end{macro}
+%
+% ^^X SUBSECTION: Package Initialization
+% \section{Package Initialization}
+% \label{sec:init}
+%
+% We now \enquote{initialize} the package by processing the package options,
+% all unknown options are passed to \pkg{mathtools}~\autocite{mathtools},
+% which is loaded afterwards.
+% Because certain \pkg{mathtools}-features are needed by this package,
+% we need to require a version of at least 2004/06/05.
+% As explained in section~\ref{sec:load-time-options} this may also load \pkg{bm}
+% if the \verb|bm| package option has been given.
+% \begin{macrocode}
+\@@_load_time_setup:
+% \end{macrocode}
+% If the "no-vector" option has not been given during load time,
+% we also need the \pkg{amssymb} package~\autocite{amsfonts} for the
+% \cs[module=amssymb,replace=false]{square} command.
+% We first define a message to inform the user about this.
+% \begin{macrocode}
+\msg_new:nnn { moremath } { load / loading-amssymb }
+{
+ Vector~calculus~commands~enabled.\\
+ Loading~amssymb~package~\msg_line_context:.
+}
+% \end{macrocode}
+% Then we conditionally load the package.
+% \begin{macrocode}
+\bool_if:NT \l_@@_predef_vector_op_bool
+{
+ \msg_info:nn { moremath } { load / loading-amssymb }
+ \RequirePackage{amssymb}
+}
+% \end{macrocode}
+% \changes{v0.2.0}{\GetVersionDate{v0.2.0}}{
+% New: Load \pkg{amssymb} if the "no-vector" option has \emph{not} been given.
+% }
+%
+% Finally we load our most important dependency \pkg{mathtools}.
+% \begin{macrocode}
+\RequirePackage{mathtools}[2004/06/05]
+% \end{macrocode}
+%
+%
+% \section{Abstractions for \TeX{}-primitives and \LaTeXe{}-commands}
+% \label{sec:impl-abstractions}
+%
+% As this package makes use of certain \TeX{}-primitives and \LaTeXe{}-commands,
+% which are either part of the \LaTeX{}-kernel or of some package.
+% It is sensible to provide a (package internal) abstraction for those commands,
+% so that they can be switched out once a \LaTeX3{}-command has been defined for them.
+%
+% \subsection{\TeX{}-primitives}
+% \label{sec:impl-tex-abstractions}
+%
+% \begin{macro}[added=2024-08-20]{
+% \@@_tex_vcenter:n,
+% }
+% \cs{@@_tex_vcenter:n} is an abstraction for \cs{tex_vcenter:D}
+% i.e.\ \tn{vcenter}.
+% Its single argument is passed to \cs{tex_vcenter:D}.
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_tex_vcenter:n
+{
+ \tex_vcenter:D {#1}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[added=2024-08-20]{
+% \@@_tex_mathpalette:Nn,
+% }
+% The function \cs{@@_tex_mathpalette:Nn} is an abstraction for the \tn{mathpalette},
+% primitive.
+% The function takes two arguments
+% \begin{arguments}
+% \item The \meta{csname} of the macro to pass to \tn{mathpalette}
+%
+% This macro \textbf{must} accept \textbf{two} arguments:
+% The first is a single token containing the current math-style,
+% the second is the contents to \enquote{typeset}.
+% See \url{https://tex.stackexchange.com/questions/34393/the-mysteries-of-mathpalette/34412#34412}
+% for further information.
+%
+% \item The \meta{tokens} to forward to the macro passed as first argument.
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_tex_mathpalette:Nn
+{
+ \mathpalette #1 {#2}
+}
+% \end{macrocode}
+% \changes{v0.5.0}{\GetVersionDate{v0.5.0}}{
+% Added new function.
+% }
+% \end{macro}
+%
+% \begin{macro}[added=2024-08-20]{
+% \@@_tex_mathsurround:n
+% }
+% The function \cs{@@_tex_mathsurround:n} provides (hopefully) a correct abstraction
+% for the \tn{mathsurround} primitive.
+% It takes one argument
+% \begin{arguments}
+% \item A \meta{length~expr} for the whitespace surrounding a math switch.
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected_nopar:Nn \@@_tex_mathsurround:n
+{
+ \tex_mathsurround:D = #1
+}
+% \end{macrocode}
+% \changes{v0.5.0}{\GetVersionDate{v0.5.0}}{
+% Added new function.
+% }
+% \end{macro}
+%
+% \begin{macro}[added=2024-08-20]{
+% \@@_tex_mathop:n
+% }
+% The function \cs{@@_tex_mathop:n} provides an abstraction for the \tn{mathop}
+% \TeX{}-primitive.
+% It accepts a single argument:
+% \begin{arguments}
+% \item \meta{Tokens} to treat as a math operator.
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected_nopar:Nn \@@_tex_mathop:n
+{
+ \tex_mathop:D {#1}
+}
+% \end{macrocode}
+% \changes{v0.5.0}{\GetVersionDate{v0.5.0}}{
+% Added new function.
+% }
+% \end{macro}
+%
+%
+% \subsection{\LaTeXe{}-commands}
+% \label{sec:impl-latex-abstractions}
+%
+% \begin{macro}[EXP,added=2024-08-20]{
+% \@@_matrix_star_begin:nn,
+% \@@_matrix_star_begin:nV,
+% \@@_matrix_star_begin:Vn,
+% \@@_matrix_star_begin:VV,
+% \@@_matrix_star_end:n,
+% \@@_matrix_star_end:V,
+% }
+% The functions \cs{@@_matrix_star_begin:nn} and \cs{@@_matrix_star_end:n}
+% provide an abstraction to the \env{matrix*} family of environments provided
+% by \pkg{mathtools}.
+% \NB{MI}{These functions need to be expandable,
+% as they produce an empty line otherwise.}
+%
+% \cs{@@_matrix_star_begin:nn} takes two arguments:
+% \begin{arguments}
+% \item A \meta{tl} determining the type of the matrix.
+%
+% This is used to further specify which "matrix*" environment to use.
+%
+% The \meta{tl} may be empty.
+%
+% \item A \meta{tl} specifying the column type.
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_nopar:Nn \@@_matrix_star_begin:nn
+{
+ \begin{ #1 matrix* } [ #2 ]
+}
+% \end{macrocode}
+% We also create "nV", "Vn", and "VV" variants of this function:
+% \begin{macrocode}
+\cs_generate_variant:Nn \@@_matrix_star_begin:nn { nV, Vn, VV }
+% \end{macrocode}
+%
+% The function \cs{@@_matrix_star_end:n} takes only one argument
+% \begin{arguments}
+% \item The \meta{tl} determining the type of the \env{matrix*} environment.
+%
+% The \meta{tl} \textbf{must} have the same value as used for
+% \cs{@@_matrix_star_begin:nn}.
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_nopar:Nn \@@_matrix_star_end:n
+{
+ \end{ #1 matrix* }
+}
+% \end{macrocode}
+% We also provide a "V" type variant of this function.
+% \begin{macrocode}
+\cs_generate_variant:Nn \@@_matrix_star_end:n {V}
+% \end{macrocode}
+% \changes{v0.5.0}{\GetVersionDate{v0.5.0}}{
+% Added new functions and variants.
+% }
+% \end{macro}
+%
+%
+% \section{Centering Math Symbols Along the Math-Axis}
+% \label{sec:impl-vcenter}
+%
+% Certain math constructs such cause \TeX{}
+% to not center the operator along the math axis,
+% like case of |\mathop{\nabla}\nolimits| vs.\
+% |\mathop{\boldsymbol\nabla}\nolimits|,
+% as can be seen below.
+% \[
+% \mathop{\nabla}\nolimits f(x)
+% \quad \text{vs.} \quad
+% \mathop{\boldsymbol\nabla}\nolimits f(x)
+% \]
+% As can be seen the bold nabla symbol is slightly higher up than the non-bold
+% version.
+% Because of this it is sometimes useful to manually center some math symbols,
+% along the math axis.\footnote{%
+% The code in this section is inspired by
+% \url{http://www.tug.org/TUGboat/Articles/tb22-4/tb72perlS.pdf}
+% }
+%
+% \begin{macro}[added = 2024-07-08, updated=2024-08-20]{
+% \moremath_vcenter:n
+% }
+% The function \cs{moremath_vcenter:n} is a wrapper around the \tn{vcenter}
+% \TeX{} primitive.
+% It takes a single argument.
+% \begin{arguments}
+% \item A \meta{tl} containing math mode material to center along the math axis.
+%
+% This argument is typeset in math mode.
+% \end{arguments}
+% The function uses the \tn{mathpalette} primitive to switch to the right
+% math style.
+% The function is not in a \TeX{}-sense long,
+% i.e.\ it does not take \tn{par} tokens.
+%
+% As this function might be useful not only for internal use by \pkg{moremath},
+% we declare it as a public function here.
+% \begin{macrocode}
+\cs_new_protected_nopar:Nn \moremath_vcenter:n
+{
+ \@@_tex_mathpalette:Nn \@@_vcenter:Nn {#1}
+}
+% \end{macrocode}
+% \changes{v0.3.0}{\GetVersionDate{v0.3.0}}{
+% Added new function.
+% }
+% \changes{v0.5.0}{\GetVersionDate{v0.5.0}}{
+% Changed: Make use of \cs{@@_tex_mathpalette:Nn}.
+% }
+% \end{macro}
+%
+% \begin{macro}[
+% added=2024-07-08,
+% updated=2024-08-20,
+% ]{
+% \@@_vcenter:Nn,
+% }
+% As \tn{mathpalette} needs as its first argument a macro which takes two
+% arguments
+% (the first is a math style switch and the second the contents).\footnote{%
+% See \TeX{}SE answer \url{https://tex.stackexchange.com/a/34412}
+% }
+% We define an internal helper function for \cs{moremath_vcenter:n} for
+% \cs{mathpalette} to call.
+%
+% The function \cs{@@_vcenter:Nn} takes two arguments:
+% \begin{arguments}
+% \item The math style macro, which is passed to this function by
+% \tn{mathpalette}.
+%
+% \item The \meta{tl} to typeset inside the \tn{vcenter}.
+% \end{arguments}
+%
+% Because of the properties of \tn{vcenter}, it switches to vertical mode,
+% we need to put the contents to typeset inside a horizontal box.
+% Because of this we also need to reenter math mode, and because of this
+% we need to remove the spacing inserted by entering math mode
+% by setting \tn{mathsurround} to zero.
+% \begin{macrocode}
+\cs_new_protected_nopar:Nn \@@_vcenter:Nn
+{
+ \@@_tex_vcenter:n
+ {
+ \hbox:n
+ {
+ $
+ \@@_tex_mathsurround:n {0pt}
+ #1 {#2}
+ $
+ }
+ }
+}
+% \end{macrocode}
+% \changes{v0.5.0}{\GetVersionDate{v0.5.0}}{
+% Changed: Now uses \cs{@@_tex_vcenter:n} and \cs{@@_tex_mathsurround:n}
+% instead of \TeX-primitives.
+% }
+% \end{macro}
+%
+%
+% \subsection*{Document Level Command}
+%
+% Although unlikely there might arise the need for a document author to center
+% some math along the math axis.
+% For this purpose we are going to define a new document level command.
+%
+% But first we are going to declare some messages to use by the command.
+% The first message informs the user that the command is not available,
+% because its \meta{csname} is already taken.
+% \begin{macrocode}
+\msg_new:nnn { moremath } { csname-already-defined }
+{
+ Control~sequence~' #1 '~is~already~ defined.\\
+ Skipping~definition~\msg_line_context:
+}
+% \end{macrocode}
+% The second message should be issued if a command that only works in math mode
+% was given outside of it.
+% \begin{macrocode}
+\msg_new:nnnn { moremath } { vcenter / only-in-math-mode }
+{
+ Command~#1~used~outside~math~mode~\msg_line_context:.
+}
+{
+ The~command~#1~may~only~be~used~inside~math~mode.
+}
+% \end{macrocode}
+% \begin{macro}{
+% \VCenterMath,
+% }
+% Now to the document level command for centering math along the math axis.
+% \begin{macrocode}
+\cs_if_free:NTF \VCenterMath
+{
+ \NewDocumentCommand \VCenterMath { m }
+ {
+ \mode_if_math:TF
+ {
+ \moremath_vcenter:n {#1}
+ }{% \mode_if_math:TF FALSE BRANCH
+ \msg_error:nnn { moremath } { vcenter / only-in-math-mode } {\VCenterMath}
+ }
+ }
+}{% \cs_if_free:NTF \VCenterMath FALSE BRANCH
+ \msg_warning:nnn { moremath } { csname-already-defined } {\VCenterMath}
+}
+% \end{macrocode}
+% \changes{v0.3.0}{\GetVersionDate{v0.3.0}}{
+% Added new document level command.
+% }
+% \end{macro}
+%
+%
+% ^^X SECTION: Paired Delimiters
+% \section{Declaring Paired Delimiters for Internal Use}
+% \label{sec:impl-paired-delim}
+%
+% \begin{macro}{
+% \@@_inparent:w,
+% \@@_inbrack:w,
+% \@@_inbrace:w,
+% \@@_in_vert:w,
+% \@@_in_Vert:w
+% }
+% As we are going to use \pkg{mathtools}' \emph{paired delimiters}
+% at several places throughout this package,
+% we define \emph{paired delimiters} for internal use, as functions with weird
+% syntax.
+% \begin{macrocode}
+\DeclarePairedDelimiter{\@@_inparent:w}{\lparen}{\rparen}
+\DeclarePairedDelimiter{\@@_inbrack:w}{\lbrack}{\rbrack}
+\DeclarePairedDelimiter{\@@_inbrace:w}{\lbrace}{\rbrace}
+\DeclarePairedDelimiter{\@@_in_vert:w}{\lvert}{\rvert}
+\DeclarePairedDelimiter{\@@_in_Vert:w}{\lVert}{\rVert}
+% \end{macrocode}
+% \end{macro}
+%
+% ^^X SECTION: Delimited Operators
+% \section{Delimited Operators}
+% \label{sec:impl-delim-op}
+%
+% We need three different functions for providing the delimited operators.
+% But as we share a lot of code between those, we define an additional
+% helper function beforehand.
+% \begin{macro}{
+% \@@_operator:Nnn
+% }
+% The function \cs{@@_operator:Nnn} takes care of the operator part
+% of the new delimiter.
+% It allows the operator to have super- and subscripts.
+% It takes three arugments.
+% \begin{arguments}
+% \item The \meta{csname} of the operator to use.
+% \item A \meta{token list}, which is used as the superscript operator.
+%
+% This argument may be empty
+% \item A \meta{tl}, which is used as the subscript operator.
+%
+% The \meta{tl} may be empty.
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_operator:Nnn
+{
+ #1
+ % add superscript if present
+ \tl_if_empty:nF {#2} {^{#2}}
+ % add subscript if present
+ \tl_if_empty:nF {#3} { \c_math_subscript_token {#3} }
+}
+% \end{macrocode}
+% \end{macro}
+%
+% We now define three version of the delimited operators.
+% \begin{macro}{
+% \moremath_delim_op_noscale:NNnnn,
+% \moremath_delim_op_autoscale:NNnnn,
+% }
+% \cs{moremath_delim_op_noscale:NNnnn} is provides a delimited operator without
+% any scaling of the delimiters
+% and \cs{moremath_delim_op_autoscale:NNnnn} provides a version with
+% automatic scaling of the delimiters.
+% Both of them take five arguments:
+% \begin{arguments}
+% \item The \meta{csname} of the operator to use.
+%
+% Any operator declared with \pkg{amsmath}'s \cs{operatorname}
+% and/or\linebreak[3]
+% \cs[module=amsmath,replace=false]{DeclareMathOperator}
+% is valid for this.
+%
+% \item The \meta{csname} of a paired delimiter declared by
+% \pkg{mathtools}'~\autocite{mathtools}
+% \cs[module=mathtools,replace=false]{DeclarePairedDelimiter}.
+%
+% \item A \meta{tl} to use as the superscript of the operator.
+%
+% \item A \meta{tl} to use as the subscript of the operator.
+%
+% \item A \meta{tl} to insert inside the delimiters.
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected_nopar:Nn \moremath_delim_op_noscale:NNnnn
+{
+ \@@_operator:Nnn #1 {#3} {#4}
+ % #2 is the paired delimiter
+ #2 {#5}
+}
+
+\cs_new_protected_nopar:Nn \moremath_delim_op_autoscale:NNnnn
+{
+ \@@_operator:Nnn #1 {#3} {#4}
+ % #2 is the paired delimiter
+ #2 * {#5}
+}
+% \end{macrocode}
+% \changes{v0.1.0}{\GetVersionDate{v0.1.0}}{%
+% Added "noscale" and "autoscale" versions.
+% }
+% \end{macro}
+% \begin{macro}{
+% \moremath_delim_op_manuscale:NNnnnn,
+% \moremath_delim_op_manuscale:NNVnnn
+% }
+% \cs{moremath_delim_op_manuscale:NNnnnn} provides a delimited operator with
+% manual scaling.
+% This version takes six arguments:
+% \begin{arguments}
+% \item The \meta{csname} of the operator to use.
+%
+% \item The \meta{csname} of the paired delimiter
+% declared by \pkg{mathtools}'~\autocite{mathtools}\linebreak[3]
+% \cs[module=mathtools,replace=false]{DeclarePairedDelimiter}.
+%
+% \item A \meta{tl} containing the scaling macro i.e.\ \cs{big}, \cs{Big},
+% \cs{Bigg},\dots
+%
+% \item A \meta{tl} containing the superscript of the operator.
+%
+% The \meta{tl} may be empty
+%
+% \item A \meta{tl} containing the subscript of the operator
+%
+% The \meta{tl} may be empty.
+%
+% \item A \meta{tl} to insert inside the delimiters
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected_nopar:Nn \moremath_delim_op_manuscale:NNnnnn
+{
+ \@@_operator:Nnn #1 {#4} {#5}
+ % #2 is the paired delimiter
+ #2 [ #3 ] {#6}
+}
+% \end{macrocode}
+% We also provide a variant for the scaling macro.
+% \begin{macrocode}
+\cs_generate_variant:Nn \moremath_delim_op_manuscale:NNnnnn {NNVnnn}
+% \end{macrocode}
+% \changes{v0.1.0}{\GetVersionDate{v0.1.0}}{%
+% Function added.
+% }
+% \end{macro}
+%
+% For the creation of document level commands we also create a function,
+% so that the user is also able to declare new delimited operators.
+% But before we do so we create a message to inform the user if a
+% \meta{csname} was already taken.
+% \begin{macrocode}
+\msg_new:nnn { moremath } { delimop / already-defined-skip }
+{
+ Control~sequence~'#1'~is~already~defined.\\
+ Skipping~definition~of~delimited~operator~'#1'~\msg_line_context:.
+}
+% \end{macrocode}
+%
+% We also create a message to inform the user about conflicting options
+% given to the command.
+% \begin{macrocode}
+\msg_new:nnn { moremath } { delimop / auto-manu-scale-conflict }
+{
+ Both~star~and~scale~cmd~given~to~'#1'.\\
+ Automatic~scaling~will~be~preferred,~the~size~command~will~be~
+ ignored~\msg_line_context:.
+}
+% \end{macrocode}
+% \begin{macro}{
+% \moremath_new_delim_op_command:NNN,
+% \moremath_new_delim_op_command:cNN,
+%}
+% \cs{moremath_new_delim_op_command:NNN} takes three arguments:
+% \begin{arguments}
+% \item The \meta{csname} to be defined.
+%
+% \item The \meta{csname} of the operator to use,
+% which should be an operator declared with
+% \cs[module=amsmath,replace=false]{DeclareMathOperator}.
+%
+% \item The \meta{csname} of the delimiter to use,
+% which should have been declared with
+% \cs[module=mathtools,replace=false]{DeclarePairedDelimiter}.
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \moremath_new_delim_op_command:NNN
+{
+ \cs_if_free:NTF #1
+ {
+ \exp_args:NNe \NewDocumentCommand #1
+ { s o E{ ^ \char_generate:nn {`_} {8} }{{}{}} m }
+ {
+ \tl_if_novalue:nTF {##2}
+ {
+ % second argument empty
+ \bool_if:nTF {##1}
+ {
+ % star given
+ \moremath_delim_op_autoscale:NNnnn #2 #3 {##3} {##4} {##5}
+ }{
+ % star not given
+ \moremath_delim_op_noscale:NNnnn #2 #3 {##3} {##4} {##5}
+ }
+ }{
+ % second argument present
+ % star given?
+ \bool_if:nTF {##1}
+ {
+ % Warn if both star and scaling factor are present
+ \msg_warning:nnn { moremath } { delimop / auto-manu-scale-conflict }
+ {#1}
+ \moremath_delim_op_autoscale:NNnnn #2 #3 {##3} {##4} {##5}
+ }{ % FALSE BRANCH
+ \moremath_delim_op_manuscale:NNnnnn #2 #3 {##2} {##3} {##4} {##5}
+ }
+ }
+ }
+ }{ % \cs_if_free:nTF #1 FALSE BRANCH
+ \msg_warning:nnn { moremath } { delimop / already-defined-skip }
+ {#1}
+ }
+}
+
+\cs_generate_variant:Nn \moremath_new_delim_op_command:NNN {cNN}
+% \end{macrocode}
+% \changes{v0.1.0}{\GetVersionDate{v0.1.0}}{%
+% Added function and variant.
+% }
+% \end{macro}
+%
+% \subsection{Document Level Commands}
+% \label{sec:impl-delim-op-doc-cmds}
+%
+% \begin{macro}{\DeclareDelimitedOperator}
+% Finally provide the user with a command to declare an additional
+% delimited operator.
+% \begin{macrocode}
+\NewDocumentCommand\DeclareDelimitedOperator { m m m }
+{
+ \msg_redirect_name:nnn { moremath } { delimop / already-defined-skip } { error }
+ \moremath_new_delim_op_command:NNN #1 #2 #3
+ \msg_redirect_name:nnn { moremath } { delimop / already-defined-skip } {}
+}
+% \end{macrocode}
+% \changes{v0.1.0}{\GetVersionDate{v0.1.0}}{Added document level command.}
+% \end{macro}
+%
+% As \pkg{amsmath}~\autocite{amsmath} pre-defines the following operators
+% it is only sensible to also define delimited versions of them:\\
+% \input{\jobname-ams-op-table.tex}
+%
+% \begin{macro}{\@@_new_delim_op_cmds:nN}
+% \cs{@@_new_delim_op_cmds:nN} creates document level macros of the form
+% \cs[no-index]{\meta{prefix}\meta{op name}}.
+% It declares fife versions \cs[no-index]{p\meta{op name}},
+% \cs[no-index]{b\meta{op name}}, \cs[no-index]{B\meta{op name}},
+% \cs[no-index]{v\meta{op name}} and \cs[no-index]{V\meta{op name}}.
+%
+% The function takes two arguments:
+% \begin{arguments}
+% \item A token list which contains \meta{op name}
+%
+% \item The \meta{csname} of the operator to use.
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_new_delim_op_cmds:nN
+{
+ \moremath_new_delim_op_command:cNN {p #1} #2 \@@_inparent:w
+ \moremath_new_delim_op_command:cNN {b #1} #2 \@@_inbrack:w
+ \moremath_new_delim_op_command:cNN {B #1} #2 \@@_inbrace:w
+ \moremath_new_delim_op_command:cNN {v #1} #2 \@@_in_vert:w
+ \moremath_new_delim_op_command:cNN {V #1} #2 \@@_in_Vert:w
+}
+% \end{macrocode}
+% \end{macro}
+%
+% The decision if the following macros are defined depends on a package load
+% time option.
+% \begin{macrocode}
+\bool_if:NTF \l_@@_predef_operators_bool
+{
+% \end{macrocode}
+% We define the commands for the operators already declared by amsmath.
+% \begin{macro}[documented-as=\parccos]{
+% \parccos, \barccos, \Barccos, \varccos, \Varccos,
+% }
+% For \cs[module=amsmath,replace=false]{arccos},
+% \begin{macrocode}
+\@@_new_delim_op_cmds:nN {arccos} \arccos
+% \end{macrocode}
+% \changes{v0.1.0}{\GetVersionDate{v0.1.0}}{%
+% Added delimited document commands for all \pkg{amsmath}-defined operators.
+% }
+% \end{macro}
+% \begin{macro}[documented-as=\parccos]{
+% \parcsin, \barcsin, \Barcsin, \varcsin, \Varcsin,
+% }
+% \cs[module=amsmath,replace=false]{arcsin},
+% \begin{macrocode}
+\@@_new_delim_op_cmds:nN {arcsin} \arcsin
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[documented-as=\parccos]{
+% \parctan, \barctan, \Barctan, \varctan, \Varctan,
+% }
+% \cs[module=amsmath,replace=false]{arctan},
+% \begin{macrocode}
+\@@_new_delim_op_cmds:nN {arctan} \arctan
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[documented-as=\parccos]{
+% \Parg, \barg, \Barg, \varg, \Varg,
+% }
+% \cs[module=amsmath,replace=false]{arg}
+% \begin{macrocode}
+\@@_new_delim_op_cmds:nN {arg} \arg
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[documented-as=\parccos]{
+% \pcos, \bcos, \Bcos, \vcos, \Vcos,
+% }
+% \cs[module=amsmath,replace=false]{cos}
+% \begin{macrocode}
+\@@_new_delim_op_cmds:nN {cos} \cos
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[documented-as=\parccos]{
+% \pcosh, \bcosh, \Bcosh, \vcosh, \Vcosh,
+% }
+% \cs[module=amsmath,replace=false]{cosh},
+% \begin{macrocode}
+\@@_new_delim_op_cmds:nN {cosh} \cosh
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[documented-as=\parccos]{
+% \pcot, \bcot, \Bcot, \vcot, \Vcot,
+% }
+% \cs[module=amsmath,replace=false]{cot},
+% \begin{macrocode}
+\@@_new_delim_op_cmds:nN {cot} \cot
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[documented-as=\parccos]{
+% \pcoth, \bcoth, \Bcoth, \vcoth, \Vcoth,
+% }
+% \cs[module=amsmath,replace=false]{coth},
+% \begin{macrocode}
+\@@_new_delim_op_cmds:nN {coth} \coth
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[documented-as=\parccos]{
+% \pcsc, \bcsc, \Bcsc, \vcsc, \Vcsc,
+% }
+% \cs[module=amsmath,replace=false]{csc},
+% \begin{macrocode}
+\@@_new_delim_op_cmds:nN {csc} \csc
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[documented-as=\parccos]{
+% \pdeg, \bdeg, \Bdeg, \vdeg, \Vdeg,
+% }
+% \cs[module=amsmath,replace=false]{deg},
+% \begin{macrocode}
+\@@_new_delim_op_cmds:nN {deg} \deg
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[documented-as=\parccos]{
+% \pdet, \bdet, \Bdet, \vdet, \Vdet,
+% }
+% \cs[module=amsmath,replace=false]{det},
+% \begin{macrocode}
+\@@_new_delim_op_cmds:nN {det} \det
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[documented-as=\parccos]{
+% \pdim, \bdim, \Bdim, \vdim, \Vdim,
+% }
+% \cs[module=amsmath,replace=false]{dim},
+% \begin{macrocode}
+\@@_new_delim_op_cmds:nN {dim} \dim
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[documented-as=\parccos]{
+% \pexp, \bexp, \Bexp, \vexp, \Vexp,
+% }
+% \cs[module=amsmath,replace=false]{exp},
+% \begin{macrocode}
+\@@_new_delim_op_cmds:nN {exp} \exp
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[documented-as=\parccos]{
+% \pgcd, \bgcd, \Bgcd, \vgcd, \Vgcd,
+% }
+% \cs[module=amsmath,replace=false]{gcd},
+% \begin{macrocode}
+\@@_new_delim_op_cmds:nN {gcd} \gcd
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[documented-as=\parccos]{
+% \phom, \bhom, \Bhom, \vhom, \Vhom,
+% }
+% \cs[module=amsmath,replace=false]{hom},
+% \begin{macrocode}
+\@@_new_delim_op_cmds:nN {hom} \hom
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[documented-as=\parccos]{
+% \pinf, \binf, \Binf, \vinf, \Vinf,
+% }
+% \cs[module=amsmath,replace=false]{inf},
+% \begin{macrocode}
+\@@_new_delim_op_cmds:nN {inf} \inf
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[documented-as=\parccos]{
+% \pinjlim, \binjlim, \Binjlim, \vinjlim, \Vinjlim,
+% }
+% \cs[module=amsmath,replace=false]{injlim},
+% \begin{macrocode}
+\@@_new_delim_op_cmds:nN {injlim} \injlim
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[documented-as=\parccos]{
+% \pker, \bker, \Bker, \vker, \Vker,
+% }
+% \cs[module=amsmath,replace=false]{ker},
+% \begin{macrocode}
+\@@_new_delim_op_cmds:nN {ker} \ker
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[documented-as=\parccos]{
+% \plg, \blg, \Blg, \vlg, \Vlg,
+% }
+% \cs[module=amsmath,replace=false]{lg},
+% \begin{macrocode}
+\@@_new_delim_op_cmds:nN {lg} \lg
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[documented-as=\parccos]{
+% \plim, \blim, \Blim, \vlim, \Vlim,
+% }
+% \cs[module=amsmath,replace=false]{lim},
+% \begin{macrocode}
+\@@_new_delim_op_cmds:nN {lim} \lim
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[documented-as=\parccos]{
+% \pliminf, \bliminf, \Bliminf, \vliminf, \Vliminf,
+% }
+% \cs[module=amsmath,replace=false]{liminf},
+% \begin{macrocode}
+\@@_new_delim_op_cmds:nN {liminf} \liminf
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[documented-as=\parccos]{
+% \plimsup, \blimsup, \Blimsup, \vlimsup, \Vlimsup,
+% }
+% \cs[module=amsmath,replace=false]{limsup},
+% \begin{macrocode}
+\@@_new_delim_op_cmds:nN {limsup} \limsup
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[documented-as=\parccos]{
+% \pln, \bln, \Bln, \vln, \Vln,
+% }
+% \cs[module=amsmath,replace=false]{ln}
+% \begin{macrocode}
+\@@_new_delim_op_cmds:nN {ln} \ln
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[documented-as=\parccos]{
+% \plog, \blog, \Blog, \vlog, \Vlog,
+% }
+% \cs[module=amsmath,replace=false]{log},
+% \begin{macrocode}
+\@@_new_delim_op_cmds:nN {log} \log
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[documented-as=\parccos]{
+% \pmax, \bmax, \Bmax, \vmax, \Vmax,
+% }
+% \cs[module=amsmath,replace=false]{max},
+% \begin{macrocode}
+\@@_new_delim_op_cmds:nN {max} \max
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[documented-as=\parccos]{
+% \pmin, \bmin, \Bmin, \vmin, \Vmin,
+% }
+% \cs[module=amsmath,replace=false]{min},
+% \begin{macrocode}
+\@@_new_delim_op_cmds:nN {min} \min
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[documented-as=\parccos]{
+% \pPr, \bPr, \BPr, \vPr, \VPr,
+% }
+% \cs[module=amsmath,replace=false]{Pr},
+% \begin{macrocode}
+\@@_new_delim_op_cmds:nN {Pr} \Pr
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[documented-as=\parccos]{
+% \pprojlim, \bprojlim, \Bprojlim, \vprojlim, \Vprojlim,
+% }
+% \cs[module=amsmath,replace=false]{projlim},
+% \begin{macrocode}
+\@@_new_delim_op_cmds:nN {projlim} \projlim
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[documented-as=\parccos]{
+% \psec, \bsec, \Bsec, \vsec, \Vsec,
+% }
+% \cs[module=amsmath,replace=false]{sec},
+% \begin{macrocode}
+\@@_new_delim_op_cmds:nN {sec} \sec
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[documented-as=\parccos]{
+% \psin, \bsin, \Bsin, \vsin, \Vsin,
+% }
+% \cs[module=amsmath,replace=false]{sin},
+% \begin{macrocode}
+\@@_new_delim_op_cmds:nN {sin} \sin
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[documented-as=\parccos]{
+% \psinh, \bsinh, \Bsinh, \vsinh, \Vsinh,
+% }
+% \cs[module=amsmath,replace=false]{sinh},
+% \begin{macrocode}
+\@@_new_delim_op_cmds:nN {sinh} \sinh
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[documented-as=\parccos]{
+% \psup, \bsup, \Bsup, \vsup, \Vsup,
+% }
+% \cs[module=amsmath,replace=false]{sup},
+% \begin{macrocode}
+\@@_new_delim_op_cmds:nN {sup} \sup
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[documented-as=\parccos]{
+% \ptan, \btan, \Btan, \vtan, \Vtan,
+% }
+% \cs[module=amsmath,replace=false]{tan},
+% \begin{macrocode}
+\@@_new_delim_op_cmds:nN {tan} \tan
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[documented-as=\parccos]{
+% \ptanh, \btanh, \Btanh, \vtanh, \Vtanh
+% }
+% and \cs[module=amsmath,replace=false]{tanh}.
+% \begin{macrocode}
+\@@_new_delim_op_cmds:nN {tanh} \tanh
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[documented-as=\parccos]{
+% \pvarinjlim, \bvarinjlim, \Bvarinjlim, \vvarinjlim, \Vvarinjlim,
+% \pvarprojlim, \bvarprojlim, \Bvarprojlim, \vvarprojlim, \Vvarprojlim,
+% \pvarliminf, \bvarliminf, \Bvarliminf, \vvarliminf, \Vvarliminf,
+% \pvarlimsup, \bvarlimsup, \Bvarlimsup, \vvarlimsup, \Vvarlimsup,
+% }
+% We also provide delimited versions of \cs[module=amsmath,replace=false]{varinjlim},
+% \cs[module=amsmath,replace=false]{varprojlim},
+% \cs[module=amsmath,replace=false]{varliminf},
+% and \cs[module=amsmath,replace=false]{varlimsup}.
+% \begin{macrocode}
+\@@_new_delim_op_cmds:nN {varinjlim} \varinjlim
+\@@_new_delim_op_cmds:nN {varprojlim} \varprojlim
+\@@_new_delim_op_cmds:nN {varliminf} \varliminf
+\@@_new_delim_op_cmds:nN {varlimsup} \varlimsup
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+}{
+ \msg_info:nnnn {moremath} {load /disabling} {no-operators}
+ {
+ predefined~delimited~operator~macros
+ }
+} % End of the conditional
+% \end{macrocode}
+%
+% ^^X SECTION: Vector Calculus Macros
+% \section{Vector Calculus Macros}
+% \label{sec:vector-calc}
+%
+% For providing macros which help with vector differentials,
+% we first need some setup functions.
+%
+% \subsection{Macros Providing Symbols of Operators}
+% \label{sec:op-symbols}
+%
+% \begin{macro}{
+% \@@_maybe_vcenter:n,
+% }
+% Sometimes a symbol should be centered explicitly,
+% as this will depend on the current setting of "vcenter",
+% i.e.\ the current value of \cs{l_@@_vcenter_bool},
+% we provide a helper function which puts its argument
+% \begin{arguments}
+% \item A list of \meta{tokens}
+% \end{arguments}
+% inside a \tn{vcenter} by means of \cs{moremath_vcenter:n}
+% or not depending on the current value of \cs{l_@@_vcenter_bool}.
+% \begin{macrocode}
+\cs_new_protected_nopar:Nn \@@_maybe_vcenter:n
+{
+ \bool_if:NTF \l_@@_vcenter_bool
+ {
+ \moremath_vcenter:n {#1}
+ }{
+ #1
+ }
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[updated=2024-08-20]{\@@_gradient_operator_get:}
+% This function returns the gradient operator depending on the current setting
+% of the keys.
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_gradient_operator_get:
+{
+ \tl_if_empty:NTF \l_@@_grad_op_tl
+ {
+ \@@_tex_mathop:n
+ {
+% \end{macrocode}
+% Otherwise we first need to check if the operator shall have an arrow over it.
+% Afterwards if the nabla shall be bold.
+% \begin{macrocode}
+ \bool_if:NTF \l_@@_nabla_arrow_bool
+ {
+ \vec
+ {
+% \end{macrocode}
+% In case \cs{l_@@_nabla_arrow_bool} is true we should \emph{maybe}
+% center the symbol.
+% \begin{macrocode}
+ \@@_maybe_vcenter:n
+ {
+ \bool_if:NT \l_@@_nabla_bold_bool
+ {
+ \boldsymbol
+ }
+ \l_@@_nabla_tl
+ }
+ }
+ }{
+% \end{macrocode}
+% Like in the case above we should \emph{maybe} center the symbol
+% if \cs{l_@@_nabla_bold_bool} is true.
+% \begin{macrocode}
+ \bool_if:NTF \l_@@_nabla_bold_bool
+ {
+ \@@_maybe_vcenter:n
+ {
+ \boldsymbol
+ \l_@@_nabla_tl
+ }
+ }{
+ \l_@@_nabla_tl
+ }
+ }
+ }% \@@_tex_mathop:n
+ \nolimits
+ }{
+% \end{macrocode}
+% If the user provided its own implementation of the operator,
+% we simply return it.
+% \begin{macrocode}
+ \l_@@_grad_op_tl
+ }
+}
+% \end{macrocode}
+% \changes{v0.5.0}{\GetVersionDate{v0.5.0}}{
+% Now uses \cs{@@_tex_mathop:n} instead of \TeX{}-primitives.
+% }
+% \end{macro}
+%
+% \begin{macro}[updated=2024-08-20]{\@@_laplace_operator_get:}
+% Then we define a function for returning the laplace operator symbol,
+% depending on the currently set keys.
+% The function wraps the symbol for the operator inside
+% \tn{mathop} to provide the right spacing.
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_laplace_operator_get:
+{
+ \tl_if_empty:NTF \l_@@_laplacian_tl
+ {
+ \@@_tex_mathop:n
+ {
+ \bool_if:NTF \l_@@_laplacian_delta_bool
+ {
+ \Delta
+ }{
+ \bool_if:NTF \l_@@_laplacian_arrow_bool
+ {
+ \vec{
+ \@@_maybe_vcenter:n
+ {
+ \bool_if:NT \l_@@_nabla_bold_bool {\boldsymbol}
+ \l_@@_laplacian_symb_tl
+ }
+ }
+ }{
+ \bool_if:NTF \l_@@_nabla_bold_bool
+ {
+ \@@_maybe_vcenter:n
+ {
+ \boldsymbol
+ \l_@@_laplacian_symb_tl
+ }
+ }{
+ \l_@@_laplacian_symb_tl
+ }
+ }
+ }
+ }\nolimits
+ \bool_if:NF \l_@@_laplacian_delta_bool
+ {
+ \c_math_superscript_token
+ {
+ 2
+ }
+ }
+ }{
+ \l_@@_laplacian_tl
+ }
+}
+% \end{macrocode}
+% \changes{v0.5.0}{\GetVersionDate{v0.5.0}}{
+% Now uses \cs{@@_tex_mathop:n} instead of \TeX{}-primitives.
+% }
+% \end{macro}
+%
+% \begin{macro}[updated=2024-08-20]{
+% \@@_dalembert_operator_get:
+% }
+% This function returns the \foreignlanguage{french}{d'Alembert} operator
+% depending on the currently set keys. The symbol for the
+% \foreignlanguage{french}{d'Alembert} operator is wrapped inside \tn{mathop}
+% to provide proper spacing.
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_dalembert_operator_get:
+{
+ \@@_tex_mathop:n
+ {
+ \l_@@_dalembert_symb_tl
+ }% \@@_tex_mathop:n
+ \nolimits
+}
+% \end{macrocode}
+% \changes{v0.2.0}{\GetVersionDate{v0.2.0}}{%
+% Added function: \cs{@@_dalembert_operator_get:}
+% }
+% \changes{v0.5.0}{\GetVersionDate{v0.5.0}}{
+% Now uses \cs{@@_tex_mathop:n} instead of \TeX{}-primitives.
+% }
+% \end{macro}
+%
+% \subsection{Macros Producing an Operator}
+% \label{sec:op-macros}
+%
+% After we have defined the symbols it is now time to provide a function which
+% produces the entire gradient operator
+% \begin{macro}{
+% \moremath_gradient_operator:n,
+% \moremath_laplace_operator:n
+% }
+% This function takes one arguments, the subscript to use with the operator.
+% \begin{macrocode}
+\cs_new_protected_nopar:Nn \moremath_gradient_operator:n
+{
+ \@@_gradient_operator_get:
+ \tl_if_empty:nF {#1} {\c_math_subscript_token {#1}}
+}
+% \end{macrocode}
+%
+% Like for the gradient operator we do the same for the laplacian
+% \begin{macrocode}
+\cs_new_protected_nopar:Nn \moremath_laplace_operator:n
+{
+ \@@_laplace_operator_get:
+ \tl_if_empty:nF {#1} {\c_math_subscript_token {#1}}
+}
+% \end{macrocode}
+% \changes{v0.1.0}{\GetVersionDate{v0.1.0}}{%
+% Added functions.
+% }
+% \end{macro}
+%
+% \begin{macro}{
+% \moremath_divergence_operator:n,
+% \moremath_curl_operator:n
+% }
+% Using the already defined gradient operator it is possible to define a
+% function which acts as an operator suitable for representing the divergence
+% operator and the curl operator.
+% Like the gradient operator this functions take one argument
+% \begin{arguments}
+% \item the subscript of the gradient operator.
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected_nopar:Nn \moremath_divergence_operator:n
+{
+% \end{macrocode}
+% The braces around \cs{moremath_gradient_operator:n} are necessary to avoid
+% issues with the spacing between \tn{cdot} and the following \tn{mathopen}
+% from any braces.\footnote{%
+% See: \url{https://tex.stackexchange.com/a/223914}
+% }
+% Example:
+% \[
+% \text{With braces:}\quad \pdiv{f(x)} \text{,}
+% \qquad\text{without braces: }\quad \mathop{\nabla}\nolimits\cdot(f(x))
+% \]
+% \begin{macrocode}
+ {
+ \moremath_gradient_operator:n {#1}
+ }
+ \cdot
+}
+
+\cs_new_protected_nopar:Nn \moremath_curl_operator:n
+{
+ {
+ \moremath_gradient_operator:n {#1}
+ }
+ \times
+}
+% \end{macrocode}
+% \changes{v0.1.0}{\GetVersionDate{v0.1.0}}{%
+% Added functions.
+% }
+% \end{macro}
+%
+% \begin{macro}{
+% \moremath_dalembert_operator:n
+% }
+% This function produces the \foreignlanguage{french}{d'Alembert} operator,
+% including an optional subscript.
+% The function takes one argument:
+% \begin{arguments}
+% \item A \meta{tl} with the contents of the subscript of the operator.
+%
+% This variable may be empty,
+% in this case no subscript (not even an empty one) is produced.
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \moremath_dalembert_operator:n
+{
+ \@@_dalembert_operator_get:
+ \tl_if_empty:nF {#1}
+ {
+ \c_math_subscript_token {#1}
+ }
+}
+% \end{macrocode}
+% \changes{v0.2.0}{\GetVersionDate{v0.2.0}}{%
+% Added new function \cs{moremath_dalembert_operator:n}.
+% }
+% \end{macro}
+%
+%
+% \subsection{Producing Delimited Vector Calculus Operators}
+% \label{sec:delim-vec-ops}
+%
+% \begin{macro}{
+% \moremath_delim_nabla_op_noscale:NNnn,
+% \moremath_delim_nabla_op_autoscale:NNnn
+% }
+% These functions produce a vector calculus operator with \meta{contents}
+% inside delimiters.
+% The "autoscale" variant scales the delimiters with the size of \meta{contents},
+% the "noscale" variant does no scaling at all.
+% \begin{arguments}
+% \item The \meta{csname} of the operator to use.
+%
+% This should have the same form as \cs{moremath_gradient_operator:n},
+% i.e.\ the function passed as \meta{csname} should accept one argument
+% to typeset as subscript.
+%
+% \item The \meta{csname} of the \emph{paired delimiter} to use.
+%
+% The paired delimiter has to be one declared using \pkg{mathtools}'
+% \cs[module=mathtools,replace=false]{DeclarePairedDelimiter} command.
+%
+% \item A \meta{tl} with the subscript of the operator.
+%
+% \item A \meta{tl} with the contents to typeset inside the delimiters
+% \end{arguments}
+% We begin with the "noscale" version.
+% \begin{macrocode}
+\cs_new_protected_nopar:Nn \moremath_delim_nabla_op_noscale:NNnn
+{
+ #1 {#3} #2{#4}
+}
+% \end{macrocode}
+% Then we create the version with automatic scaling.
+% \begin{macrocode}
+\cs_new_protected_nopar:Nn \moremath_delim_nabla_op_autoscale:NNnn
+{
+ #1 {#3} #2 * {#4}
+}
+% \end{macrocode}
+% \changes{v0.1.0}{\GetVersionDate{v0.1.0}}{%
+% Added "noscale" and "autoscale" functions.
+% }
+% \end{macro}
+%
+% \begin{macro}{
+% \moremath_delim_nabla_op_manuscale:NNnnn
+% }
+% This function produces a vector calculus operator like
+% \cs{moremath_delim_nabla_op_noscale:NNnn}
+% and \cs{moremath_delim_nabla_op_autoscale:NNnn},
+% but with manual scaling.
+% It takes five arguments:
+% \begin{arguments}
+% \item The \meta{csname} of the operator to use.
+%
+% \item The \meta{csname} of the paired delimiter.
+%
+% \item A \meta{token~list} containing the \meta{scale~cmd} like
+% \cs{big}, \cs{Big}, \cs{bigg}, etc.
+%
+% \item A \meta{tl} with the subscript of the operator.
+%
+% \item A \meta{tl} with the contents to typeset inside the delimiters.
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected_nopar:Nn \moremath_delim_nabla_op_manuscale:NNnnn
+{
+ #1 {#4} #2 [#3] {#5}
+}
+% \end{macrocode}
+% \begin{macro}{
+% \moremath_delim_nabla_op_manuscale:NNVnn
+% }
+% We also declare a variant for passing a variable with the \meta{scale~cmd}
+% instead of a \meta{token~list}.
+% \begin{macrocode}
+\cs_generate_variant:Nn \moremath_delim_nabla_op_manuscale:NNnnn {NNVnn}
+% \end{macrocode}
+% \changes{v0.1.0}{\GetVersionDate{v0.1.0}}{%
+% Add variant.
+% }
+% \end{macro}
+% \changes{v0.1.0}{\GetVersionDate{v0.1.0}}{%
+% Add function.
+% }
+% \end{macro}
+%
+% To ease the definition of those macros we define a function for defining
+% the delimited versions.
+%
+% Of course we also need a way to declare a user interface for this functions.
+% For this purpose we first need some helpers for setting
+% necessary parameters.
+% \begin{macro}{\@@_parse_kv_args:nN}
+% This helper macro takes two arguments,
+% \begin{arguments}
+% \item A token list of the key-value arguments.
+% \item The \meta{csname} of a token list to put the scale value in.
+% \end{arguments}
+% The function sets the given keys but before it does so it searches for a
+% key named \verb|scale| and puts it into the second argument.
+% For this to work it is necessary that all values have \verb|=| in them.
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_parse_kv_args:nN
+{
+% \end{macrocode}
+% We first put the key-value arguments inside a property list.
+% Afterwards we check if the key \verb|scale| has been given.
+% If yes we pop it and assign it to the second argument.
+% Otherwise we do nothing.
+% \NB{MI}{It may be a better idea to use a key instead but I'm not sure.
+% If one nests those environments the size of the outer one will propagate into
+% the inner scope, which might not be what is wanted.}
+% \begin{macrocode}
+ \prop_set_from_keyval:Nn \l_tmpa_prop {#1}
+
+ \prop_pop:NnNT \l_tmpa_prop {scale} #2 {}
+
+ \keys_set:ne {moremath} {\prop_to_keyval:N \l_tmpa_prop}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% We also need a warning message for conflicting arguments,
+% to inform the user that one of his options is going to be ignored.
+% \begin{macrocode}
+\msg_new:nnn { moremath } { vector-calc / scale-star-conflict }
+{
+ Both~star~and~scaling~factor~given~to~'#1'.\\
+ Automatic~scaling~will~be~preferred,~the~size~command~'#2'~will~be~
+ ignored~\msg_line_context:.
+}
+% \end{macrocode}
+%
+% \begin{macro}{
+% \@@_new_delim_nabla_doc_cmd:NNN,
+% \@@_new_delim_nabla_doc_cmd:cNN,
+% }
+% This function takes three arguments:
+% \begin{arguments}
+% \item The \meta{csname} of the to be defined command
+% \item The \meta{csname} of the operator to use.
+%
+% This should be a function like \cs{moremath_gradient_operator:n}.
+% \item The \meta{csname} of the delimiter function to use.
+%
+% This should be a macro/command created with \pkg{mathtools}
+% \cs[module=mathtools,replace=false]{DeclarePairedDelimiter} command.
+% \end{arguments}
+% Its purpose is to create a new document level command,
+% for the delimited vector calculus operators.
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_new_delim_nabla_doc_cmd:NNN
+{
+ \cs_if_free:NTF #1
+ {
+ \exp_args:NNe \NewDocumentCommand #1
+ {
+ s ={scale} o E{ \char_generate:nn {`_}{8} }{ {} } m
+ }
+ { % command code
+ \group_begin:
+ % optional arguments given?
+ \tl_if_novalue:nF {##2}
+ {
+ \@@_parse_kv_args:nN {##2} \l_tmpa_tl
+ }
+ % star given?
+ \bool_if:nTF {##1}
+ {
+ % scale factor given?
+ \tl_if_empty:NF \l_tmpa_tl
+ {
+ \msg_warning:nnnV { moremath } { vector-calc / scale-star-conflict }
+ {#1} \l_tmpa_tl
+ }
+ \moremath_delim_nabla_op_autoscale:NNnn #2 #3 {##3} {##4}
+ }{ % \bool_if:nTF {##1} FALSE BRANCH
+ % scale factor given?
+ \tl_if_empty:NTF \l_tmpa_tl
+ {
+ \moremath_delim_nabla_op_noscale:NNnn #2 #3 {##3} {##4}
+ }{ % FALSE BRANCH
+ \moremath_delim_nabla_op_manuscale:NNVnn #2 #3 \l_tmpa_tl {##3} {##4}
+ }
+ } % \bool_if:nTF {##1}
+ \group_end:
+ }
+ }{ % \cs_if_free:NTF #1 FALSE BRANCH
+ \msg_warning:nnn { moremath } { vector-calc / already-defined-skip } {#1}
+ } % \cs_if_free:NTF #1
+}
+%
+\cs_generate_variant:Nn \@@_new_delim_nabla_doc_cmd:NNN {cNN}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_new_nabla_doc_cmds:nN}
+% This internal function creates five different document level commands at once,
+% using \cs{@@_new_delim_nabla_doc_cmd:cNN}.
+% It takes two arguments:
+% \begin{arguments}
+% \item The a \meta{suffix~tl} for constructing the command names.
+%
+% The resulting commands will have the form \cs[no-index]{p\meta{suffix}},
+% \cs[no-index]{b\meta{suffix}}, \cs[no-index]{B\meta{suffix}},
+% \cs[no-index]{v\meta{suffix}} and \cs[no-index]{V\meta{suffix}}.
+%
+% \item The \meta{csname} of the operator to use
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_new_nabla_doc_cmds:nN
+{
+ \@@_new_delim_nabla_doc_cmd:cNN { p #1 } #2 \@@_inparent:w
+ \@@_new_delim_nabla_doc_cmd:cNN { b #1 } #2 \@@_inbrack:w
+ \@@_new_delim_nabla_doc_cmd:cNN { B #1 } #2 \@@_inbrace:w
+ \@@_new_delim_nabla_doc_cmd:cNN { v #1 } #2 \@@_in_vert:w
+ \@@_new_delim_nabla_doc_cmd:cNN { V #1 } #2 \@@_in_Vert:w
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Document Level Commands}
+% \label{sec:vec-doc-lvl-commands}
+%
+% The predefined macros for vector calculus are also guarded by a package
+% option to be conditionally disabled by the user.
+% \begin{macrocode}
+\bool_if:NTF \l_@@_predef_vector_op_bool
+{
+% \end{macrocode}
+% \subsubsection{Standalone Operators}
+% \label{par:impl-vector-calc-standalone}
+% The user might want to use also a non-delimited version
+% of the vector calculus operators,
+% we provide them with a standalone version of those.
+%
+% As the definition of a new document command can fail if the \meta{csname}
+% clashes with some already defined macro,
+% we define an error message to use when defining document level commands.
+% \begin{macrocode}
+\msg_new:nnn { moremath } { vector-calc / already-defined-skip }
+{
+ Control~sequence~'#1'~is~already~defined.\\
+ Skipping~definition~\msg_line_context:.
+}
+% \end{macrocode}
+%
+% \begin{macro}{
+% \grad,
+% \divergence,
+% \curl,
+% \laplacian
+% }
+% Now we provide the user with document level commands for
+% \cs[no-index]{moremath_\meta{op}_operator:n}.
+% \begin{macrocode}
+\cs_if_free:NTF \grad
+{
+ \exp_args:NNe \NewDocumentCommand \grad { !o E{ \char_generate:nn {`_}{8} }{{}} }
+ {
+ \group_begin:
+ \tl_if_novalue:nF {#1}
+ {
+ \keys_set:nn {moremath} {#1}
+ }
+ \moremath_gradient_operator:n {#2}
+ \group_end:
+ }
+}{
+ \msg_warning:nnn {moremath} { vector-calc / already-defined-skip } {\grad}
+}
+
+\cs_if_free:NTF \divergence
+{
+ \exp_args:NNe \NewDocumentCommand \divergence
+ { !o E{ \char_generate:nn {`_} {8} }{{}} }
+ {
+ \group_begin:
+ \tl_if_novalue:nF {#1}
+ {
+ \keys_set:nn {moremath} {#1}
+ }
+ \moremath_divergence_operator:n {#2}
+ \group_end:
+ }
+}{
+ \msg_warning:nnn {moremath} { vector-calc / already-defined-skip } {\divergence}
+}
+
+\cs_if_free:NTF \curl
+{
+ \exp_args:NNe \NewDocumentCommand \curl
+ { !o E{ \char_generate:nn {`_}{8} }{{}} }
+ {
+ \group_begin:
+ \tl_if_novalue:nF {#1}
+ {
+ \keys_set:nn {moremath} {#1}
+ }
+ \moremath_curl_operator:n {#2}
+ \group_end:
+ }
+}{
+ \msg_warning:nnn {moremath} {vector-calc / already-defined-skip} {\curl}
+}
+
+\cs_if_free:NTF \laplacian
+{
+ \exp_args:NNe \NewDocumentCommand \laplacian
+ { !o E{ \char_generate:nn {`_}{8} }{{}} }
+ {
+ \group_begin:
+ \tl_if_novalue:nF {#1}
+ {
+ \keys_set:nn {moremath} {#1}
+ }
+ \moremath_laplace_operator:n {#2}
+ \group_end:
+ }
+}{
+ \msg_warning:nnn {moremath} { vector-calc / already-defined-skip }
+ {\laplacian}
+}
+% \end{macrocode}
+% \begin{macro}{\quabla}
+% We now also define a command to use as a standalone
+% \foreignlanguage{french}{d'Alembert} operator.
+% As the name \cs[no-index]{dalembertian} is a bit cumbersome to type out,
+% I've decided to use one of its alternate names \cs{quabla}
+% \begin{macrocode}
+\cs_if_free:NTF \quabla
+{
+ \exp_args:NNe \NewDocumentCommand \quabla
+ { !o E{ \char_generate:nn {`_} { 8 } }{{}} }
+ {
+ \group_begin:
+ \tl_if_novalue:nF {#1}
+ {
+ \keys_set:nn { moremath } {#1}
+ }
+ \moremath_dalembert_operator:n {#2}
+ \group_end:
+ }
+}{ % \cs_if_free:NTF \quabla FALSE BRANCH
+ \msg_warning:nnn { moremath } { vector-calc / already-defined-skip }
+ {\quabla}
+}
+% \end{macrocode}
+% \changes{v0.2.0}{\GetVersionDate{v0.2.0}}{
+% Added \cs{quabla} command.
+% }
+% \changes{v0.3.0}{\GetVersionDate{v0.3.0}}{
+% Changed: Spaces between the \meta{csname}
+% and the optional argument are now disallowed.
+% }
+% \end{macro}^^X \quabla
+% \changes{v0.1.0}{\GetVersionDate{v0.1.0}}{
+% Added \cs{grad}, \cs{divergence}, \cs{curl} and \cs{laplacian}
+% commands.
+% }
+% \changes{v0.3.0}{\GetVersionDate{v0.3.0}}{
+% Changed: Spaces between the \meta{csname}
+% and the optional argument are now disallowed
+% for \cs{grad}, \cs{divergence}, \cs{curl} and \cs{laplacian}.
+% }
+% \end{macro}
+%
+% \subsubsection{Operators with Delimiters}
+% \label{par:impl-vec-calc-op-delim}
+%
+% \begin{macro}{
+% \pgrad,
+% \bgrad,
+% \Bgrad,
+% \vgrad,
+% \Vgrad,
+% }
+% Now lets declare the delimited gradient operators.
+% We provide five versions using parenthesis, brackets, braces, single \tn{vert},
+% and double \tn{Vert}.
+% \begin{macrocode}
+\@@_new_nabla_doc_cmds:nN {grad} \moremath_gradient_operator:n
+% \end{macrocode}
+% \changes{v0.1.0}{\GetVersionDate{v0.1.0}}{%
+% Added commands for delimited gradient operators.
+% }
+% \end{macro}
+%
+% \begin{macro}{
+% \pdiv,
+% \bdiv,
+% \Bdiv,
+% \vdiv,
+% \Vdiv
+% }
+% Now we do the same for the divergence operator.
+% \begin{macrocode}
+\@@_new_nabla_doc_cmds:nN {div} \moremath_divergence_operator:n
+% \end{macrocode}
+% \changes{v0.1.0}{\GetVersionDate{v0.1.0}}{%
+% Added commands for delimited divergence operators.
+% }
+% \end{macro}
+%
+% \begin{macro}{
+% \pcurl,
+% \bcurl,
+% \Bcurl,
+% \vcurl,
+% \Vcurl
+% }
+% Now to the curl macros.
+% \begin{macrocode}
+\@@_new_nabla_doc_cmds:nN {curl} \moremath_curl_operator:n
+% \end{macrocode}
+% \changes{v0.1.0}{\GetVersionDate{v0.1.0}}{%
+% Added commands for delimited curl operators.
+% }
+% \end{macro}
+%
+% \begin{macro}{
+% \plaplacian,
+% \blaplacian,
+% \Blaplacian,
+% \vlaplacian,
+% \Vlaplacian
+% }
+% Next we take care of the laplacian
+% \begin{macrocode}
+\@@_new_nabla_doc_cmds:nN {laplacian} \moremath_laplace_operator:n
+% \end{macrocode}
+% \changes{v0.1.0}{\GetVersionDate{v0.1.0}}{%
+% Added commands for delimited Laplace operators.
+% }
+% \end{macro}
+%
+% \begin{macro}{
+% \pquabla,
+% \bquabla,
+% \Bquabla,
+% \vquabla,
+% \Vquabla
+% }
+% Finally we define delimited commands for the
+% \foreignlanguage{french}{d'Alembert} operator.
+% \begin{macrocode}
+\@@_new_nabla_doc_cmds:nN {quabla} \moremath_dalembert_operator:n
+% \end{macrocode}
+% \changes{v0.2.0}{\GetVersionDate{v0.2.0}}{
+% Added commands for a delimited \foreignlanguage{french}{d'Alembert}
+% operator.
+% }
+% \end{macro}
+%
+% If the user issued \texttt{no-vector} as a package loading option,
+% write this to the log file.
+% \begin{macrocode}
+}{ % IF NOT \l_@@_predef_vector_op_bool
+ \msg_info:nnnn {moremath} { load /disabling } {no-vector}
+ {
+ predefined~vector~calculus~macros
+ }
+} % END \l_@@_predef_vector_op_bool
+% \end{macrocode}
+%
+% \section{Macros Producing Matrices and Vectors}
+% \label{sec:impl-matr-vec}
+%
+% \subsection{Producing Row and Column Vectors}
+%
+% The functions in this section are used to generate row and column vectors
+% utilizing \pkg{mathtools}~\autocite{mathtools} \env{matrix*} and
+% \env{smallmatrix*} environments.
+%
+% \begin{variable}{\l_@@_vector_entries_seq}
+% For generating row or column vectors it is necessary to store the entries
+% inside a variable. \cs{l_@@_vector_entries_seq} is used for this purpose.
+% \begin{macrocode}
+\seq_new:N \l_@@_vector_entries_seq
+% \end{macrocode}
+% \end{variable}
+%
+% Then we need a function for formatting the actual entries of the vector.
+% We need two version one for the row vector and one for the column vector
+% version.
+% \begin{macro}{
+% \@@_seq_to_column_vector:N,
+% \@@_seq_to_row_vector:N
+% }
+% These functions take one argument
+% \begin{arguments}
+% \item A sequence which should be converted to the contents of the single
+% column/row matrix.
+% \end{arguments}
+% They format the input suitable to be put inside a \env{matrix*} environment.
+% We begin with the column vector version.
+% \begin{macrocode}
+\cs_new_protected_nopar:Nn \@@_seq_to_column_vector:N
+{
+ \seq_use:Nn #1 {\\}
+}
+% \end{macrocode}
+% Then we get to the row vector.
+% \begin{macrocode}
+\cs_new_protected_nopar:Nn \@@_seq_to_row_vector:N
+{
+ \seq_use:Nn #1 {&}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% In the next step we construct the single row/column matrix from the user
+% provided input.
+% \begin{macro}[updated=2024-08-20]{
+% \moremath_column_vector:nn,
+% \moremath_column_vector:Vn,
+% \moremath_row_vector:nn,
+% \moremath_row_vector:Vn,
+% }
+% The two commands \cs{moremath_column_vector:nn} and \cs{moremath_row_vector:nn}
+% construct the matrix, they both take two arguments.
+% \begin{arguments}
+% \item The delimiter specifier.
+%
+% This should be one of the prefixes of the \env{\meta{prefix}matrix*},
+% environments.
+%
+% Another possibility is to issue |small| as this parameter to get
+% an inline matrix.
+%
+% \item The comma separated contents of the matrix.
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected_nopar:Nn \moremath_column_vector:nn
+{
+ \seq_clear:N \l_@@_vector_entries_seq
+ \seq_set_from_clist:Nn \l_@@_vector_entries_seq {#2}
+
+ \@@_matrix_star_begin:nV {#1} \l_@@_matrix_align_tl
+ \@@_seq_to_column_vector:N \l_@@_vector_entries_seq
+ \@@_matrix_star_end:n {#1}
+}
+%
+\cs_new_protected_nopar:Nn \moremath_row_vector:nn
+{
+ \seq_clear:N \l_@@_vector_entries_seq
+ \seq_set_from_clist:Nn \l_@@_vector_entries_seq {#2}
+
+ \@@_matrix_star_begin:nV {#1} \l_@@_matrix_align_tl
+ \@@_seq_to_row_vector:N \l_@@_vector_entries_seq
+ \@@_matrix_star_end:n {#1}
+}
+% \end{macrocode}
+% We also provide a "Vn" variant of those functions.
+% \begin{macrocode}
+\cs_generate_variant:Nn \moremath_column_vector:nn { Vn }
+\cs_generate_variant:Nn \moremath_row_vector:nn { Vn }
+% \end{macrocode}
+% \changes{v0.1.0}{\GetVersionDate{v0.1.0}}{%
+% Added functions producing row- and column vectors.
+% }
+% \changes{v0.5.0}{\GetVersionDate{v0.5.0}}{
+% Changed now uses \cs{@@_matrix_star_begin:nV} instead of raw
+% |\begin{#1matrix*}|.
+% }
+% \changes{v0.5.0}{\GetVersionDate{v0.5.0}}{
+% Added new "Vn" variants.
+% }
+% \end{macro}
+%
+% \begin{macro}{
+% \moremath_column_smallvector:nn,
+% \moremath_column_smallvector:Vn,
+% \moremath_row_smallvector:nn,
+% \moremath_row_smallvector:Vn,
+% }
+% To make the code more readable, we define functions specifically for
+% creating row and column vectors using the \env{smallmatrix*} family of
+% environments. These functions take the same arguments as the non-small
+% versions above.
+% \begin{macrocode}
+\cs_new_protected_nopar:Nn \moremath_column_smallvector:nn
+{
+ \moremath_column_vector:nn {#1 small} {#2}
+}
+
+\cs_new_protected_nopar:Nn \moremath_row_smallvector:nn
+{
+ \moremath_row_vector:nn {#1 small} {#2}
+}
+% Variants
+\cs_generate_variant:Nn \moremath_column_smallvector:nn { Vn }
+\cs_generate_variant:Nn \moremath_row_smallvector:nn { Vn }
+% \end{macrocode}
+% \changes{v0.1.0}{\GetVersionDate{v0.1.0}}{%
+% Added functions producing inline math row- and column vectors.
+% }
+% \changes{v0.5.0}{\GetVersionDate{v0.5.0}}{
+% Added new "Vn" variants.
+% }
+% \end{macro}
+%
+% ^^X SUBSECTION: Shorthands for simple matrices
+% \subsection{Shorthands for Simple Matrices}
+% \label{sec:impl-matr-shorth}
+%
+% The construction of several simple matrices like diagonal matrices,
+% can be simplified as there is no need to use the \env{matrix} environment.\footnote{%
+% The code in this section is heavily inspired by the following answer on
+% \TeX{}SE: \url{https://tex.stackexchange.com/a/539741}
+% }
+%
+% \begin{variable}{
+% \l_@@_mat_diag_entries_seq,
+% \l_@@_mat_row_entries_seq,
+% }
+% We construct the matrices row by row, therefore we need to store the
+% currently constructed row inside a variable.
+% The same is true for the diagonal entries which also need to be stored
+% somewhere.
+% We therefore declare two sequence variables \cs{l_@@_mat_diag_entries_seq}
+% and \cs{l_@@_mat_row_seq} for this purpose
+% \begin{macrocode}
+\seq_clear_new:N \l_@@_mat_diag_entries_seq
+\seq_clear_new:N \l_@@_mat_row_entries_seq
+% \end{macrocode}
+% \end{variable}
+%
+% \subsubsection{(Anti-)diagonal matrices}
+% We split the construction of the matrix into multiple parts,
+% utilizing internal helper functions.
+% \begin{macro}{
+% \@@_constr_diagmat_row:n,
+% \@@_constr_antidiagmat_row:n
+% }
+% \cs{@@_constr_diagmat_row:n} and \cs{@@_constr_antidiagmat_row:n}
+% take one integer argument:
+% \begin{arguments}
+% \item The number of the current row.
+% \end{arguments}
+% They both construct a matrix row and place it inside the input stream.
+% They take the content of the (anti-)diagonal from the variable
+% \cs{l_@@_mat_diag_entries_seq}
+% and use the variable \cs{l_@@_mat_row_entries_seq}
+% to store the current row.
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_constr_diagmat_row:n
+{
+ \seq_clear:N \l_@@_mat_row_entries_seq
+% \end{macrocode}
+% As all diagonal matrices \(M \in A^{m \times n}\), where \(A\) is a field,
+% are quadratic i.e.\ \(A^{m \times n} \equiv A^{n \times n}\) the length of the
+% diagonal sequence equals the number of rows and columns of the matrix.
+% We exploit this fact here.
+% \begin{macrocode}
+ \int_step_inline:nn {\seq_count:N \l_@@_mat_diag_entries_seq}
+ {
+ \int_compare:nTF { #1 == ##1 }
+ {
+ \seq_put_right:Nx \l_@@_mat_row_entries_seq
+ {
+ \seq_item:Nn \l_@@_mat_diag_entries_seq { #1 }
+ }
+ }{ % false branch
+ \seq_put_right:NV \l_@@_mat_row_entries_seq \l_@@_matrix_fill_tl
+ } % \int_compare:nTF { #1 == ##1 }
+ }
+ \seq_use:Nn \l_@@_mat_row_entries_seq { & } \\
+}
+
+% Anti-diagonal version
+\cs_new_protected:Nn \@@_constr_antidiagmat_row:n
+{
+ \seq_clear:N \l_@@_mat_row_entries_seq
+ \int_step_inline:nn {\seq_count:N \l_@@_mat_diag_entries_seq}
+ {
+ \int_compare:nTF { #1 == ##1 }
+ {
+ % as this is a anti diagonal matrix we put in the elements from the
+ % left so that the first entry is the right most entry
+ \seq_put_left:Nx \l_@@_mat_row_entries_seq
+ {
+ \seq_item:Nn \l_@@_mat_diag_entries_seq { #1 }
+ }
+ }{ % false branch
+ \seq_put_left:NV \l_@@_mat_row_entries_seq \l_@@_matrix_fill_tl
+ } % \int_compare:nTF { #1 == ##1 }
+ }
+ \seq_use:Nn \l_@@_mat_row_entries_seq { & } \\
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{
+% \moremath_diagonal_matrix:nn,
+% \moremath_antidiagonal_matrix:nn,
+% \moremath_diagonal_smallmatrix:nn,
+% \moremath_antidiagonal_smallmatrix:nn,
+% }
+% The \cs[no-index]{moremath_\meta{a or d}_matrix:nn} and
+% \cs[no-index]{moremath_\meta{a or d}_smallmatrix:nn} family of functions
+% produce a matrix based on \pkg{mathtools}~\autocite{mathtools}
+% \env{matrix*} environment.
+% The functions take two arguments.
+% \begin{arguments}
+% \item The delimiter specifier.
+%
+% This should be one of the prefixes of the \env{\meta{prefix}matrix*}
+% environments.
+%
+% \item The comma separated contents of the (anti-)diagonal.
+% \end{arguments}
+% These functions also use the values of the variables
+% \cs{l_@@_matrix_fill_tl} and \cs{l_@@_matrix_align_tl}.
+% And modifies the variable \cs{l_@@_mat_diag_entries_seq}.
+% \begin{macrocode}
+\cs_new_protected:Nn \moremath_diagonal_matrix:nn
+{
+ \seq_set_from_clist:Nn \l_@@_mat_diag_entries_seq { #2 }
+ \@@_matrix_star_begin:nV { #1 } \l_@@_matrix_align_tl
+ \int_step_function:nN { \seq_count:N \l_@@_mat_diag_entries_seq }
+ \@@_constr_diagmat_row:n
+ \@@_matrix_star_end:n { #1 }
+}
+%
+% Anti-diagonal matrix
+\cs_new_protected:Nn \moremath_antidiagonal_matrix:nn
+{
+ \seq_set_from_clist:Nn \l_@@_mat_diag_entries_seq { #2 }
+ \@@_matrix_star_begin:nV { #1 } \l_@@_matrix_align_tl
+ \int_step_function:nN { \seq_count:N \l_@@_mat_diag_entries_seq }
+ \@@_constr_antidiagmat_row:n
+ \@@_matrix_star_end:n { #1 }
+}
+
+% Small versions
+\cs_new_protected:Nn \moremath_diagonal_smallmatrix:nn
+{
+ \moremath_diagonal_matrix:nn {#1 small} {#2}
+}
+
+\cs_new_protected:Nn \moremath_antidiagonal_smallmatrix:nn
+{
+ \moremath_antidiagonal_matrix:nn {#1 small} {#2}
+}
+% \end{macrocode}
+% \begin{macro}{
+% \moremath_diagonal_matrix:nV,
+% \moremath_diagonal_matrix:Vn,
+% \moremath_diagonal_matrix:VV,
+% \moremath_antidiagonal_matrix:nV,
+% \moremath_antidiagonal_matrix:Vn,
+% \moremath_antidiagonal_matrix:VV,
+% \moremath_diagonal_smallmatrix:nV,
+% \moremath_diagonal_smallmatrix:Vn,
+% \moremath_diagonal_smallmatrix:VV,
+% \moremath_antidiagonal_smallmatrix:nV,
+% \moremath_antidiagonal_smallmatrix:Vn,
+% \moremath_antidiagonal_smallmatrix:VV,
+% }
+% For convenience we also define some variants of the above functions.
+% \begin{macrocode}
+\cs_generate_variant:Nn \moremath_diagonal_matrix:nn { nV, Vn, VV }
+\cs_generate_variant:Nn \moremath_antidiagonal_matrix:nn { nV, Vn, VV }
+\cs_generate_variant:Nn \moremath_diagonal_smallmatrix:nn { nV, Vn, VV}
+\cs_generate_variant:Nn \moremath_antidiagonal_smallmatrix:nn { nV, Vn, VV }
+% \end{macrocode}
+% \changes{v0.1.0}{\GetVersionDate{v0.1.0}}{Added variants.}
+% \changes{v0.2.0}{\GetVersionDate{v0.2.0}}{Added "nV" and "VV" variants.}
+% \end{macro}
+% \changes{v0.1.0}{\GetVersionDate{v0.1.0}}{%
+% Added functions producing (anti-)diagonal matrices.
+% Also added versions for inline math.
+% }
+% \changes{v0.5.0}{\GetVersionDate{v0.5.0}}{
+% Changed now uses \cs{@@_matrix_star_begin:nV} instead of raw
+% |\begin{#1matrix*}|.
+% }
+% \end{macro}
+%
+%
+% \subsubsection{Identity Matrices}
+% As we already have functions available for producing diagonal matrices,
+% it makes only sense to also provide a shorthand for producing an identity matrix,
+% i.e.\ a diagonal matrix with \enquote{1} along the diagonal.
+%
+%
+% \begin{macro}{
+% \@@_generate_one_filled_clist:Nn
+% }
+% The function \cs{@@_generate_one_filled_clist:Nn} produces a \meta{clist},
+% consisting only of \enquote{1} as entries.
+% This function takes two arguments:
+% \begin{arguments}
+% \item The \emph{csname} of a \meta{clist~var} to store the \meta{clist}
+% into.
+%
+% \item An \meta{int} to represent the number of entries to produce.
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected_nopar:Nn \@@_generate_one_filled_clist:Nn
+{
+ \seq_clear:N \l_tmpa_seq
+ \int_step_inline:nn {#2}
+ {
+ \seq_put_right:NV \l_tmpa_seq \c_one_int
+ }
+ \clist_set_from_seq:NN #1 \l_tmpa_seq
+}
+% \end{macrocode}
+% \begin{macro}{
+% \@@_generate_one_filled_clist:NV
+% }
+% We also define a variant accepting an integer variable.
+% \begin{macrocode}
+\cs_generate_variant:Nn \@@_generate_one_filled_clist:Nn { N V }
+% \end{macrocode}
+% \end{macro}
+% \changes{v0.2.0}{\GetVersionDate{v0.2.0}}{%
+% Added function.
+% }
+% \end{macro}
+%
+% \begin{variable}{
+% \l_@@_id_entries_clist
+% }
+% As we want to utilize the \cs{moremath_diagonal_matrix:VV} and
+% \cs{moremath_diagonal_smallmatrix:VV} functions for creating the identity
+% matrix we declare an internal \meta{clist~var} called
+% \cs{l_@@_id_entries_clist} for passing the \meta{clist} around.
+% \begin{macrocode}
+\clist_new:N \l_@@_id_entries_clist
+% \end{macrocode}
+% \changes{v0.2.0}{\GetVersionDate{v0.2.0}}{Added variable.}
+% \end{variable}
+%
+% \begin{macro}{
+% \moremath_id_matrix:n,
+% \moremath_id_smallmatrix:n
+% }
+% These functions are intended to produce an identity matrix from an integer
+% expression.
+% They take one argument.
+% \begin{arguments}
+% \item The number of diagonal entries.
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected_nopar:Nn \moremath_id_matrix:n
+{
+ \clist_clear:N \l_@@_id_entries_clist
+ \@@_generate_one_filled_clist:Nn \l_@@_id_entries_clist {#1}
+ \moremath_diagonal_matrix:VV \l_@@_matrix_delim_tl \l_@@_id_entries_clist
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_new_protected_nopar:Nn \moremath_id_smallmatrix:n
+{
+ \clist_clear:N \l_@@_id_entries_clist
+ \@@_generate_one_filled_clist:Nn \l_@@_id_entries_clist {#1}
+ \moremath_diagonal_smallmatrix:VV \l_@@_matrix_delim_tl \l_@@_id_entries_clist
+}
+% \end{macrocode}
+%
+% \begin{macro}{
+% \moremath_id_matrix:V,
+% \moremath_id_smallmatrix:V
+% }
+% We also provide variants, which accepts a "V"-type argument:
+% \begin{macrocode}
+\cs_generate_variant:Nn \moremath_id_matrix:n { V }
+\cs_generate_variant:Nn \moremath_id_smallmatrix:n { V }
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v0.2.0}{\GetVersionDate{v0.2.0}}{%
+% Added functions \cs{moremath_id_matrix:n} and \cs{moremath_id_smallmatrix:n}
+% and variants.
+% }
+% \end{macro}
+%
+% \subsection{Document Level Commands}
+% \label{sec:mat-doc-lvl-cmds}
+%
+% Now we define document level commands for the previously defined
+% functions.
+%
+% But before we do so we define a message to be issued in case the targeted
+% \meta{csname} is already defined elsewhere.
+% \begin{macrocode}
+\msg_new:nnnn { moremath } { matrix / already-defined-doc-cmd-skip }
+{
+ Control~sequence~'#1'~is~already~defined.\\
+ Skipping~definition~\msg_line_context:.
+}
+{
+ The~control~sequence~'#1'~has~already\\
+ been~defined~by~some~other~package.\\
+ And~I~am~refusing~to~overwrite~the~existing~definition,\\
+ therefore~I~am~skipping~the~definition~of~this~command.
+}
+% \end{macrocode}
+%
+% \subsubsection{Row and Column Vectors}
+% We begin with the row and column vector functions.
+% As with the other document level commands, we guard the definitions
+% with a key value option, so that the user can disable them.
+% \begin{macrocode}
+\bool_if:nTF \l_@@_predef_crvector_bool
+{
+% \end{macrocode}
+% \begin{macro}[updated=2024-08-20,]{
+% \cvector,
+% \rvector,
+% \smallcvector,
+% \smallrvector
+% }
+% First we define the document level command for the bare column vector
+% \begin{macrocode}
+\cs_if_free:NTF \cvector
+{
+ \NewDocumentCommand \cvector { o m }
+ {
+ \group_begin:
+ \tl_if_novalue:nF {#1}
+ {
+ \keys_set:nn { moremath / matrix } {#1}
+ }
+ \moremath_column_vector:Vn \l_@@_matrix_delim_tl {#2}
+ \group_end:
+ }
+}{
+ % issue a warning message if the csname is already taken.
+ \msg_warning:nnn { moremath } { matrix / already-defined-doc-cmd-skip }
+ {
+ \cvector
+ }
+} % \cs_if_free:NTF \cvector
+% \end{macrocode}
+% and the row vector.
+% \begin{macrocode}
+\cs_if_free:NTF \rvector
+{
+ \NewDocumentCommand \rvector { o m }
+ {
+ \group_begin:
+ \tl_if_novalue:nF {#1}
+ {
+ \keys_set:nn { moremath / matrix } {#1}
+ }
+ \moremath_row_vector:Vn \l_@@_matrix_delim_tl {#2}
+ \group_end:
+ }
+}{
+ % warn if csname is already taken
+ \msg_warning:nnn { moremath } { matrix / already-defined-doc-cmd-skip}
+ {
+ \rvector
+ }
+} % \cs_if_free:NTF \rvector
+% \end{macrocode}
+% Then we define the smaller inline versions of those commands.
+% \begin{macrocode}
+\cs_if_free:NTF \smallcvector
+{
+ \NewDocumentCommand \smallcvector { o m }
+ {
+ \group_begin:
+ \tl_if_novalue:nF {#1}
+ {
+ \keys_set:nn {moremath / matrix} {#1}
+ }
+ \moremath_column_smallvector:Vn \l_@@_matrix_delim_tl {#2}
+ \group_end:
+ }
+}{
+ % Issue a warning message if the csname is already taken
+ \msg_warning:nnn { moremath } { matrix / already-defined-doc-cmd-skip }
+ {
+ \smallcvector
+ }
+} % \cs_if_free:NTF \smallcvector
+
+\cs_if_free:NTF \smallrvector
+{
+ \NewDocumentCommand \smallrvector { o m }
+ {
+ \group_begin:
+ \tl_if_novalue:nF {#1}
+ {
+ \keys_set:nn { moremath / matrix } {#1}
+ }
+ \moremath_row_smallvector:Vn \l_@@_matrix_delim_tl {#2}
+ \group_end:
+ }
+}{
+ % warn if csname is taken
+ \msg_warning:nnn { moremath } { matrix / already-defined-doc-cmd-skip }
+ {
+ \smallrvector
+ }
+}
+% \end{macrocode}
+% \changes{v0.1.0}{\GetVersionDate{v0.1.0}}{%
+% Added commands producing row and column vectors,
+% including inline math versions.
+% }
+% \changes{v0.5.0}{\GetVersionDate{v0.5.0}}{
+% Use "Vn" versions of functions when passing variables around.
+% }
+% \end{macro}
+%
+% \paragraph{Commands with Pre-defined Delimiters}
+% Next we define several shorthands to for the commonly used delimiters,
+% to avoid code duplication, we first create some helper functions which
+% define those functions.
+% \begin{macro}[updated=2024-08-20]{
+% \@@_new_vector_shorth_doc_cmd:NNn
+% }
+% The function \cs{@@_new_vector_shorth_doc_cmd} creates a new vector shorthand,
+% command. It takes three arguments:
+% \begin{arguments}
+% \item The \meta{csname} to be defined.
+% \item The \meta{function} to use for this shorthand.
+%
+% This should be one of the
+% \cs[no-index]{moremath_\meta{type}_\meta{size}vector:Vn}
+% like commands.
+%
+% \item The \meta{delimiter} to use.
+%
+% Usually one of |p|, |b|, |B|, |v|, |V|.
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_new_vector_shorth_doc_cmd:NNn
+{
+ \cs_if_free:NTF #1
+ {
+ \NewDocumentCommand #1 { o m }
+ {
+ \group_begin:
+ % set the delimiter key pre-set for this function
+ \keys_set:nn {moremath / matrix } {delimiter = #3}
+ \tl_if_novalue:nF {##1}
+ {
+ \keys_set:nn {moremath / matrix } {##1}
+ }
+ #2 \l_@@_matrix_delim_tl {##2}
+ \group_end:
+ }
+ }{
+ % warn if csname is taken
+ \msg_warning:nnn { moremath } { matrix / already-defined-doc-cmd-skip }
+ {
+ #1
+ }
+ }
+}
+% \end{macrocode}
+% \changes{v0.5.0}{\GetVersionDate{v0.5.0}}{
+% Require function with "Vn" signature to pass variable correctly.
+% }
+% \end{macro}
+%
+% \begin{macro}[updated=2024-08-20]{
+% \pcvector,
+% \bcvector,
+% \Bcvector,
+% \vcvector,
+% \Vcvector,
+% \prvector,
+% \brvector,
+% \Brvector,
+% \vrvector,
+% \Vrvector,
+% }
+% Now we define shorthands for all of the matrix types so that the user
+% does not have to specify |delimiter=|\meta{delim} every time.
+% We begin with the column vector.
+% \begin{macrocode}
+% parenthesis
+\@@_new_vector_shorth_doc_cmd:NNn \pcvector \moremath_column_vector:Vn {p}
+% brackets
+\@@_new_vector_shorth_doc_cmd:NNn \bcvector \moremath_column_vector:Vn {b}
+% braces
+\@@_new_vector_shorth_doc_cmd:NNn \Bcvector \moremath_column_vector:Vn {B}
+% single vert
+\@@_new_vector_shorth_doc_cmd:NNn \vcvector \moremath_column_vector:Vn {v}
+% double vert
+\@@_new_vector_shorth_doc_cmd:NNn \Vcvector \moremath_column_vector:Vn {V}
+% \end{macrocode}
+% Now to the row vectors.
+% \begin{macrocode}
+% parenthesis
+\@@_new_vector_shorth_doc_cmd:NNn \prvector \moremath_row_vector:Vn {p}
+% brackets
+\@@_new_vector_shorth_doc_cmd:NNn \brvector \moremath_row_vector:Vn {b}
+% braces
+\@@_new_vector_shorth_doc_cmd:NNn \Brvector \moremath_row_vector:Vn {B}
+% single vert
+\@@_new_vector_shorth_doc_cmd:NNn \vrvector \moremath_row_vector:Vn {v}
+% double vert
+\@@_new_vector_shorth_doc_cmd:NNn \Vrvector \moremath_row_vector:Vn {V}
+% \end{macrocode}
+% \changes{v0.1.0}{\GetVersionDate{v0.1.0}}{
+% Added commands for row and column vectors with predefined delimiters.
+% }
+% \changes{v0.5.0}{\GetVersionDate{v0.5.0}}{
+% Use functions with "Vn" signature instead of "nn"
+% }
+% \end{macro}
+%
+% \begin{macro}[updated=2024-08-20]{
+% \psmallcvector,
+% \bsmallcvector,
+% \Bsmallcvector,
+% \vsmallcvector,
+% \Vsmallcvector,
+% \psmallrvector,
+% \bsmallrvector,
+% \Bsmallrvector,
+% \vsmallrvector,
+% \Vsmallrvector
+% }
+% We also define shorthands for the \cs{shortcvector} and \cs{shortrvector}
+% versions.
+% \begin{macrocode}
+% column vectors
+% parenthesis
+\@@_new_vector_shorth_doc_cmd:NNn \psmallcvector \moremath_column_smallvector:Vn
+ {p}
+% brackets
+\@@_new_vector_shorth_doc_cmd:NNn \bsmallcvector \moremath_column_smallvector:Vn
+ {b}
+% braces
+\@@_new_vector_shorth_doc_cmd:NNn \Bsmallcvector \moremath_column_smallvector:Vn
+ {B}
+% single vert
+\@@_new_vector_shorth_doc_cmd:NNn \vsmallcvector \moremath_column_smallvector:Vn
+ {v}
+% double vert
+\@@_new_vector_shorth_doc_cmd:NNn \Vsmallcvector \moremath_column_smallvector:Vn
+ {V}
+%
+% row vectors
+% parenthesis
+\@@_new_vector_shorth_doc_cmd:NNn \psmallrvector \moremath_row_smallvector:Vn {p}
+% brackets
+\@@_new_vector_shorth_doc_cmd:NNn \bsmallrvector \moremath_row_smallvector:Vn {b}
+% braces
+\@@_new_vector_shorth_doc_cmd:NNn \Bsmallrvector \moremath_row_smallvector:Vn {B}
+% single vert
+\@@_new_vector_shorth_doc_cmd:NNn \vsmallrvector \moremath_row_smallvector:Vn {v}
+% double vert
+\@@_new_vector_shorth_doc_cmd:NNn \Vsmallrvector \moremath_row_smallvector:Vn {V}
+
+
+}{ % \bool_if:nTF \l_@@_predef_crvector_bool FALSE PATH
+ \msg_info:nnnn {moremath} {load / disabling} {no-crvector}
+ {
+ commands~producing~row~and~column~vectors
+ }
+} % \bool_if:nTF \l_@@_predef_crvector_bool
+% \end{macrocode}
+% \changes{v0.1.0}{\GetVersionDate{v0.1.0}}{
+% Added commands for inline math row and column vectors
+% with predefined delimiters.
+% }
+% \changes{v0.5.0}{\GetVersionDate{v0.5.0}}{
+% Use functions with "Vn" signature instead of "nn"
+% }
+% \end{macro}
+%
+%
+% \subsubsection{(Anti-)diagonal Matrices}
+% Now to the (anti-)diagonal matrix shorthands,
+% these are also guarded by a key value option.
+% \begin{macrocode}
+\bool_if:nTF \l_@@_predef_matrix_bool
+{
+% \end{macrocode}
+% \begin{macro}{
+% \diagmat,
+% \antidiagmat,
+% \smalldiagmat,
+% \smallantidiagmat,
+% }
+% \begin{NOTE}{MI}
+% Say something like we begin with some commands producing a matrix that
+% is not necessarily delimited.
+% \end{NOTE}
+% \begin{macrocode}
+\cs_if_free:NTF \diagmat
+{
+ \NewDocumentCommand \diagmat { o m }
+ {
+ \group_begin:
+ \tl_if_novalue:nF {#1}
+ {
+ \keys_set:nn { moremath / matrix } {#1}
+ }
+ \moremath_diagonal_matrix:Vn \l_@@_matrix_delim_tl {#2}
+ \group_end:
+ }
+}{
+ \msg_warning:nnn {moremath} {matrix / already-defined-doc-cmd-skip}
+ {
+ \diagmat
+ }
+} % \cs_if_free:nTF \diagmat
+
+\cs_if_free:NTF \antidiagmat
+{
+ \NewDocumentCommand \antidiagmat { o m }
+ {
+ \group_begin:
+ \tl_if_novalue:nF {#1}
+ {
+ \keys_set:nn { moremath / matrix } {#1}
+ }
+ \moremath_antidiagonal_matrix:Vn \l_@@_matrix_delim_tl {#2}
+ \group_end:
+ }
+}{
+ \msg_warning:nnn { moremath } { matrix / already-defined-doc-cmd-skip }
+ {
+ \antidiagmat
+ }
+} % \cs_if_free:nTF \antidiagmat
+
+\cs_if_free:NTF \smalldiagmat
+{
+ \NewDocumentCommand \smalldiagmat { o m }
+ {
+ \group_begin:
+ \tl_if_novalue:nF {#1}
+ {
+ \keys_set:nn { moremath / matrix } {#1}
+ }
+ \moremath_diagonal_smallmatrix:Vn \l_@@_matrix_delim_tl {#2}
+ \group_end:
+ }
+}{
+ \msg_warning:nnn { moremath } { matrix / already-defined-doc-cmd-skip }
+ {
+ \smalldiagmat
+ }
+}
+
+\cs_if_free:NTF \smallantidiagmat
+{
+ \NewDocumentCommand \smallantidiagmat { o m }
+ {
+ \group_begin:
+ \tl_if_novalue:nF {#1}
+ {
+ \keys_set:nn { moremath / matrix } {#1}
+ }
+ \moremath_antidiagonal_smallmatrix:Vn \l_@@_matrix_delim_tl {#2}
+ \group_end:
+ }
+}{
+ \msg_warning:nnn { moremath } { matrix / already-defined-doc-cmd-skip }
+ {
+ \smallantidiagmat
+ }
+}
+% \end{macrocode}
+% \changes{v0.1.0}{\GetVersionDate{v0.1.0}}{%
+% Added commands producing (anti-)diagonal matrices, including inline math
+% versions.
+% }
+% \end{macro}
+%
+% \paragraph{(Anti-)diagonal Matrices with Pre-defined Delimiters}
+% As it is sort of cumbersome to always specify the delimiter key,
+% we also provide commands with pre-defined delimiters.
+% \begin{macro}{
+% \@@_new_matrix_shorth_doc_cmd:NNn
+% }
+% To provide several shorthands for delimited matrices,
+% we use a helper function to avoid code duplication.
+% \cs{@@_new_matrix_shorth_doc_cmd:NNn} takes three arguments:
+% \begin{arguments}
+% \item The \meta{csname} to define
+% \item The \meta{csname} of the matrix function to use,
+% which should have the signature |Vn|.
+% \item The \enquote{predefined} delimiter of this version
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_new_matrix_shorth_doc_cmd:NNn
+{
+ \cs_if_free:NTF #1
+ {
+ \NewDocumentCommand #1 { o m }
+ {
+ \group_begin:
+ \tl_if_empty:nF {#3}
+ {
+ \keys_set:nn { moremath / matrix }
+ {
+ delimiter = #3
+ }
+ } % \tl_if_empty:nF {#3}
+ \tl_if_novalue:nF {##1}
+ {
+ \keys_set:nn { moremath / matrix } {##1}
+ }
+ #2 \l_@@_matrix_delim_tl {##2}
+ \group_end:
+ }
+ }{
+ \msg_warning:nnn { moremath } { matrix / already-defined-doc-cmd-skip }
+ {
+ #1
+ }
+ }
+}
+% \end{macrocode}
+% \end{macro}
+%
+% We now define the shorthand commands with predefined delimiters.
+% \begin{macro}{
+% \pdiagmat,
+% \bdiagmat,
+% \Bdiagmat,
+% \vdiagmat,
+% \Vdiagmat,
+% }
+% We begin with the regular diagonal matrix
+% \begin{macrocode}
+\@@_new_matrix_shorth_doc_cmd:NNn \pdiagmat \moremath_diagonal_matrix:Vn {p}
+\@@_new_matrix_shorth_doc_cmd:NNn \bdiagmat \moremath_diagonal_matrix:Vn {b}
+\@@_new_matrix_shorth_doc_cmd:NNn \Bdiagmat \moremath_diagonal_matrix:Vn {B}
+\@@_new_matrix_shorth_doc_cmd:NNn \vdiagmat \moremath_diagonal_matrix:Vn {v}
+\@@_new_matrix_shorth_doc_cmd:NNn \Vdiagmat \moremath_diagonal_matrix:Vn {V}
+% \end{macrocode}
+% \changes{v0.1.0}{\GetVersionDate{v0.1.0}}{
+% Added commands for delimited diagonal matrices.
+% }
+% \end{macro}
+% \begin{macro}{
+% \pantidiagmat,
+% \bantidiagmat,
+% \Bantidiagmat,
+% \vantidiagmat,
+% \Vantidiagmat,
+% }
+% Now for the anti-diagonal matrix commands.
+% \begin{macrocode}
+\@@_new_matrix_shorth_doc_cmd:NNn \pantidiagmat
+ \moremath_antidiagonal_matrix:Vn {p}
+\@@_new_matrix_shorth_doc_cmd:NNn \bantidiagmat
+ \moremath_antidiagonal_matrix:Vn {b}
+\@@_new_matrix_shorth_doc_cmd:NNn \Bantidiagmat
+ \moremath_antidiagonal_matrix:Vn {B}
+\@@_new_matrix_shorth_doc_cmd:NNn \vantidiagmat
+ \moremath_antidiagonal_matrix:Vn {v}
+\@@_new_matrix_shorth_doc_cmd:NNn \Vantidiagmat
+ \moremath_antidiagonal_matrix:Vn {V}
+% \end{macrocode}
+% \changes{v0.1.0}{\GetVersionDate{v0.1.0}}{
+% Added commands for delimited antidiagonal matrices.
+% }
+% \end{macro}
+%
+% \begin{macro}{
+% \psmalldiagmat,
+% \bsmalldiagmat,
+% \Bsmalldiagmat,
+% \vsmalldiagmat,
+% \Vsmalldiagmat,
+% }
+% We continue with the inline math versions based on the \env{smallmatrix*}
+% environment.
+% \begin{macrocode}
+\@@_new_matrix_shorth_doc_cmd:NNn \psmalldiagmat
+ \moremath_diagonal_smallmatrix:Vn {p}
+\@@_new_matrix_shorth_doc_cmd:NNn \bsmalldiagmat
+ \moremath_diagonal_smallmatrix:Vn {b}
+\@@_new_matrix_shorth_doc_cmd:NNn \Bsmalldiagmat
+ \moremath_diagonal_smallmatrix:Vn {B}
+\@@_new_matrix_shorth_doc_cmd:NNn \vsmalldiagmat
+ \moremath_diagonal_smallmatrix:Vn {v}
+\@@_new_matrix_shorth_doc_cmd:NNn \Vsmalldiagmat
+ \moremath_diagonal_smallmatrix:Vn {V}
+% \end{macrocode}
+% \changes{v0.1.0}{\GetVersionDate{v0.1.0}}{
+% Added commands for delimited diagonal matrices suitable for inline math.
+% }
+% \end{macro}
+% \begin{macro}{
+% \psmallantidiagmat,
+% \bsmallantidiagmat,
+% \Bsmallantidiagmat,
+% \vsmallantidiagmat,
+% \Vsmallantidiagmat,
+% }
+% We provide also anti-diagonal versions of the small matrices.
+% \begin{macrocode}
+\@@_new_matrix_shorth_doc_cmd:NNn \psmallantidiagmat
+ \moremath_antidiagonal_smallmatrix:Vn {p}
+\@@_new_matrix_shorth_doc_cmd:NNn \bsmallantidiagmat
+ \moremath_antidiagonal_smallmatrix:Vn {b}
+\@@_new_matrix_shorth_doc_cmd:NNn \Bsmallantidiagmat
+ \moremath_antidiagonal_smallmatrix:Vn {B}
+\@@_new_matrix_shorth_doc_cmd:NNn \vsmallantidiagmat
+ \moremath_antidiagonal_smallmatrix:Vn {v}
+\@@_new_matrix_shorth_doc_cmd:NNn \Vsmallantidiagmat
+ \moremath_antidiagonal_smallmatrix:Vn {V}
+% \end{macrocode}
+% \changes{v0.1.0}{\GetVersionDate{v0.1.0}}{
+% Added commands for delimited anti-diagonal matrices suitable for inline math.
+% }
+% \end{macro}
+%
+% \subsubsection{Identity Matrices}
+% We also provide document level commands for producing an identity matrix.
+% These commands are also guarded by the same variable as the other matrix commands
+% (\cs{l_@@_predef_matrix_bool}).
+%
+% \begin{macro}{
+% \idmat,
+% \smallidmat,
+% }
+% We provide two document level commands for producing the identiy matrix,
+% one for inline math mode and one for display math mode.
+%
+% We start with the display math mode version.
+% \begin{macrocode}
+\cs_if_free:NTF \idmat
+{
+ \NewDocumentCommand \idmat { o m }
+ {
+ \group_begin:
+ \tl_if_novalue:nF {#1}
+ {
+ \keys_set:nn { moremath / matrix } {#1}
+ }
+ \moremath_id_matrix:n {#2}
+ \group_end:
+ }
+}{ % \cs_if_free:NTF \idmat FALSE BRANCH
+ \msg_warning:nnn { moremath } { matrix / already-defined-doc-cmd-skip }
+ {\idmat}
+}
+% \end{macrocode}
+% Afterwards we continue with the inline math mode version.
+% \begin{macrocode}
+\cs_if_free:NTF \smallidmat
+{
+ \NewDocumentCommand \smallidmat { o m }
+ {
+ \group_begin:
+ \tl_if_novalue:nF {#1}
+ {
+ \keys_set:nn { moremath / matrix } {#1}
+ }
+ \moremath_id_smallmatrix:n {#2}
+ \group_end:
+ }
+}{ % \cs_if_free:NTF \smallidmat FALSE BRANCH
+ \msg_warning:nnn { moremath } { matrix / already-defined-doc-cmd-skip }
+ {\smallidmat}
+}
+% \end{macrocode}
+% \changes{v0.2.0}{\GetVersionDate{v0.2.0}}{%
+% Added \cs{idmat} and \cs{smallidmat} document level commands.
+% }
+% \end{macro}
+%
+% \paragraph{Identity Matrices with Pre-defined Delimiters}
+% We also define shorthands for the commonly used delimiters around matrices,
+% to avoid code duplication, we first declare a helper function for this.
+% \begin{macro}{
+% \@@_new_id_matrix_doc_cmd:NNn
+% }
+% This function creates a new document level command for an identity matrix like
+% command.
+% It allows pre-setting \meta{kv~opts}.
+% The function takes three arguments.
+% \begin{arguments}
+% \item The \meta{csname} of the document level command to define
+%
+% \item The \meta{csname} of the function to use
+%
+% This is indented to be one of \cs{moremath_id_matrix:n} or
+% \cs{moremath_id_smallmatrix:n}
+%
+% \item \meta{kv~opts} to preset in the "moremath / matrix" namespace
+% for this command
+%
+% This is meant to be used for pre-setting the key "delimiter".
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_new_id_matrix_doc_cmd:NNn
+{
+ \cs_if_free:NTF #1
+ {
+ \NewDocumentCommand #1 { o m }
+ {
+ \group_begin:
+ \tl_if_empty:nF {#3}
+ {
+ \keys_set:nn { moremath / matrix } {#3}
+ }
+ \tl_if_novalue:nF {##1}
+ {
+ \keys_set:nn { moremath / matrix } {##1}
+ }
+ #2 {##2}
+ \group_end:
+ }
+ }{ % \cs_if_free:NTF #1 FALSE BRANCH
+ \msg_warning:nnn { moremath } { matrix / already-defined-doc-cmd-skip }
+ {#1}
+ }
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{
+% \pidmat,
+% \bidmat,
+% \Bidmat,
+% \vidmat,
+% \Vidmat
+% }
+% We begin with the display math versions,
+% starting with the version delimited by parenthesis,
+% \begin{macrocode}
+\@@_new_id_matrix_doc_cmd:NNn \pidmat \moremath_id_matrix:n { delimiter = p }
+% \end{macrocode}
+% continue with the bracketed version,
+% \begin{macrocode}
+\@@_new_id_matrix_doc_cmd:NNn \bidmat \moremath_id_matrix:n { delimiter = b }
+% \end{macrocode}
+% the version using braces,
+% \begin{macrocode}
+\@@_new_id_matrix_doc_cmd:NNn \Bidmat \moremath_id_matrix:n { delimiter = B }
+% \end{macrocode}
+% single vertical lines,
+% \begin{macrocode}
+\@@_new_id_matrix_doc_cmd:NNn \vidmat \moremath_id_matrix:n { delimiter = v }
+% \end{macrocode}
+% and finally double vertical lines.
+% \begin{macrocode}
+\@@_new_id_matrix_doc_cmd:NNn \Vidmat \moremath_id_matrix:n { delimiter = V }
+% \end{macrocode}
+%
+% \changes{v0.2.0}{\GetVersionDate{v0.2.0}}{
+% Added document level commands \cs{pidmat}, \cs{bidmat}, \cs{Bidmat},
+% \cs{vidmat}, and \cs{Vidmat}.
+% }
+% \end{macro}
+%
+% \begin{macro}{
+% \psmallidmat,
+% \bsmallidmat,
+% \Bsmallidmat,
+% \vsmallidmat,
+% \Vsmallidmat,
+% }
+% Now we also define shorthands for inline math mode.
+% We start again defining the version using parenthesis,
+% \begin{macrocode}
+\@@_new_id_matrix_doc_cmd:NNn \psmallidmat \moremath_id_smallmatrix:n
+ { delimiter = p }
+% \end{macrocode}
+% then brackets,
+% \begin{macrocode}
+\@@_new_id_matrix_doc_cmd:NNn \bsmallidmat \moremath_id_smallmatrix:n
+ { delimiter = b }
+% \end{macrocode}
+% then braces,
+% \begin{macrocode}
+\@@_new_id_matrix_doc_cmd:NNn \Bsmallidmat \moremath_id_smallmatrix:n
+ { delimiter = B }
+% \end{macrocode}
+% followed by single vertical lines,
+% \begin{macrocode}
+\@@_new_id_matrix_doc_cmd:NNn \vsmallidmat \moremath_id_smallmatrix:n
+ { delimiter = v }
+% \end{macrocode}
+% and finally double vertical lines.
+% \begin{macrocode}
+\@@_new_id_matrix_doc_cmd:NNn \Vsmallidmat \moremath_id_smallmatrix:n
+ { delimiter = V }
+% \end{macrocode}
+% \changes{v0.2.0}{\GetVersionDate{v0.2.0}}{%
+% Added document level commands \cs{psmallidmat}, \cs{bsmallidmat},
+% \cs{Bsmallidmat}, \cs{vsmallidmat} and \cs{Vsmallidmat}.
+% }
+% \end{macro}
+%
+% \begin{macrocode}
+}{ % \bool_if:nTF \l_@@_predef_matrix_bool FALSE BRANCH
+ \msg_info:nnnn {moremath} { load / disabling } { no-matrix }
+ {
+ (anti-)diagonal~matrix~commands
+ }
+} % \bool_if:nTF \l_@@_predef_matrix_bool
+% \end{macrocode}
+%
+%
+% \section{Shorthand Macros for Absolute Value and Norm}
+% \label{sec:impl-abs-shorthands}
+%
+% We first declare another warning message to inform the user of the case that,
+% the \meta{csnames} are already taken.
+% \begin{macrocode}
+\msg_new:nnnn { moremath } { abs-shorth / csname-already-defined-skip }
+{
+ Control~sequence~'#1'~is~already~defined.\\
+ Skipping~declaration~of~paired~delimiter~\msg_line_context:.\\
+ Use~package~option~'no-abs-shorthands'~to~disable~the~paired\\
+ delimiter~shorthands.
+}{
+ The~control~sequence~'#1'~has~already~been\\
+ defined~by~something~else.\\
+ I~am~refusing~to~overwrite~its~existing~definition~and~instead~avoid\\
+ declaring~a~paired~delimiter.\\
+}
+% \end{macrocode}
+%
+%
+% As with the other parts these macros may be conditionally disabled.
+% \begin{macrocode}
+\bool_if:NTF \l_@@_predef_abs_bool
+{
+% \end{macrocode}
+% \begin{macro}{\abs,\norm}
+% These macros provide shorthands for \(\abs{\meta{content}}\)
+% and \(\norm{\meta{content}}\).
+% \begin{macrocode}
+\cs_if_free:NTF \abs
+{
+ \DeclarePairedDelimiter \abs {\lvert} {\rvert}
+}{
+ % warn if the csname is taken
+ \msg_warning:nnn { moremath } { abs-shorth / csname-already-defined-skip }
+ {\abs}
+} % \cs_if_free:NTF \abs
+
+\cs_if_free:NTF \norm
+{
+ \DeclarePairedDelimiter \norm {\lVert} {\rVert}
+}{
+ % warn if csname is already taken
+ \msg_warning:nnn { moremath } { abs-shorth / csname-already-defined-skip }
+ {\norm}
+} % \cs_if_free:NTF
+% \end{macrocode}
+% \changes{v0.1.0}{\GetVersionDate{v0.1.0}}{%
+% Added shorthands for absolute value and norm.
+% }
+% \end{macro}
+%
+% \begin{macrocode}
+}{
+ \msg_info:nnnn {moremath} {load / disabling} {no-abs-shorthands}
+ {
+ '\abs'~and~'\norm'~macros
+ }
+} % End of the conditional
+% \end{macrocode}
+%
+% \iffalse debug-switch
+%\debug_off:n {all}
+% \fi
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+% \end{implementation}
+%
+% \section*{Copyright and License}
+% \addcontentsline{toc}{section}{Copyright and License}
+% \label{sec:license}
+%
+% The following copyright notice applies to the \pkg{moremath} package:
+%
+% \begin{quote}
+% Copyright \textcopyright{} 2024 Marcel Ilg
+%
+% 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
+% \url{https://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 \enquote{maintained}.
+%
+% The Current Maintainer of this work is Marcel Ilg.
+%
+% This work consists of the files listed in \file{MANIFEST.md}.
+% \end{quote}
+%
+% \noindent The file \file{MANIFEST.md} has to be distributed together with the
+% package.
+%
+%
+% \printbibliography[heading=bibintoc]
+% \PrintChanges
+% \PrintIndex
diff --git a/macros/latex/contrib/moremath/moremath.ins b/macros/latex/contrib/moremath/moremath.ins
new file mode 100644
index 0000000000..f04f2b04b2
--- /dev/null
+++ b/macros/latex/contrib/moremath/moremath.ins
@@ -0,0 +1,66 @@
+%%
+%% Copyright (C) 2024 Marcel Ilg
+%%
+%% 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
+%%
+%% https://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 ‘maintained’.
+%%
+%% The Current Maintainer of this work is Marcel Ilg.
+%%
+%% This work consists of the files listed in MANIFEST.md.
+
+\input docstrip
+
+\usedir{tex/latex/moremath}
+
+\keepsilent
+
+\preamble
+
+This is a generated file.
+
+
+Copyright (C) 2024 Marcel Ilg
+
+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
+
+ https://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 ‘maintained’.
+
+The Current Maintainer of this work is Marcel Ilg.
+
+This work consists of the files listed in MANIFEST.md.
+
+\endpreamble
+
+\generate{\file{moremath.sty}{\from{moremath.dtx}{package}}}
+
+\obeyspaces
+\Msg{***************************************************************************}
+\Msg{*}
+\Msg{* To finish the installation you have to move the following file into a}
+\Msg{* directory searched by TeX:}
+\Msg{*}
+\Msg{* moremath.sty}
+\Msg{*}
+\Msg{* To produce the documentation run the file moremath.dtx through LaTeX.}
+\Msg{*}
+\Msg{* Happy TeXing!}
+\Msg{*}
+\Msg{***************************************************************************}
+\endbatchfile
diff --git a/macros/latex/contrib/ms/README.md b/macros/latex/contrib/ms/README.md
deleted file mode 100644
index 65a355a9fc..0000000000
--- a/macros/latex/contrib/ms/README.md
+++ /dev/null
@@ -1,11 +0,0 @@
-# ms – Various LaTeX packages by Martin Schröder
-
-Copyright (C) 1994–2011 Martin Schröder
-
-multitoc 1999/06/08 v2.01 MultiToc Package
-count1to 2009/05/25 v2.1 Count1to LaTeX Package
-
-The new upload has only been done to split the ms-bundle.
-The packages everyshi, everysel and prelim2e are no longer part of this bundle
-
-The current maintainer of this package is Marei Peischl <marei@peitex.de>
diff --git a/macros/latex/contrib/ms/count1to.ins b/macros/latex/contrib/ms/count1to.ins
deleted file mode 100644
index 1bd534ef1d..0000000000
--- a/macros/latex/contrib/ms/count1to.ins
+++ /dev/null
@@ -1,112 +0,0 @@
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesFile{count1to.ins}
- [2009/05/24 v2.1 Installation script for Count1to9 Package (MS)]
-%%
-%% Copyright (c) 1994..2009 by Martin Schr\"oder. All rights reserved.
-%%
-%% 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 `maintained'.
-%%
-%% The Current Maintainer of this work is Martin Schr\"oder.
-%%
-%% This work consists of the files count1to.dtx and count1to.ins
-%% and the derived file count1to.sty.
-%%
-%% This file will be used by the docstrip.tex program to generate
-%% fast loadable files from the doc files.
-%%
-%% $Id: count1to.ins 1368 2009-05-24 16:02:57Z oneiros $
-%%
-%% --------------- start of docstrip commands ------------------
-\input docstrip.tex
-{\ifx\endbatchfile\undefined
-\Msg{**********************************************}
-\Msg{*}
-\Msg{* This installation requires docstrip}
-\Msg{* version 2.4d or later.}
-\Msg{*}
-\Msg{* An older version of docstrip has been input}
-\Msg{*}
-\Msg{**********************************************}
-\errhelp{Move or rename old docstrip.tex.}
-\errmessage{Old docstrip in input path}
-\batchmode
-\csname @@end\endcsname
-\fi}
-
-\Msg{***********************************************************}
-\Msg{*}
-\Msg{* The count1to distribution contains these files:}
-\Msg{*}
-\Msg{* \space\space count1to.dtx}
-\Msg{* \space\space count1to.ins}
-\Msg{* \space\space count1to.bug}
-\Msg{*}
-\Msg{* If you receive only some of these files from someone, complain!}
-\Msg{*}
-\Msg{***********************************************************}
-
-\preamble
-
-Copyright (c) 1994..2009 by Martin Schroeder. All rights reserved.
-
-This file is part of the Count1to package
-
-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 `maintained'.
-
-The Current Maintainer of this work is Martin Schroeder.
-
-This work consists of the files count1to.dtx and count1to.ins
-and the derived file count1to.sty.
-
-\endpreamble
-\declarepreamble\driverpreamble
-
-This file is part of the Count1to package
------------------------------------------
-
-Copyright (c) 1994..2009 by Martin Schroeder. All rights reserved.
-
-To produce the documentation in the way you like you are allowed
-to change this driver file.
-
-\endpreamble
-
-\keepsilent
-\askforoverwritefalse
-\generate{%
- \file{count1to.sty}{\from{count1to.dtx}{package}}
- \usepreamble\driverpreamble
- \file{count1to.drv}{\from{count1to.dtx}{driver}}
- }
-
-\Msg{***********************************************************}
-\Msg{*}
-\Msg{* To finish the installation you have to move the following}
-\Msg{* style files into a directory searched by TeX:}
-\Msg{*}
-\Msg{* \space\space count1to.sty}
-\Msg{*}
-\Msg{* To produce the documentation run the file count1to.drv}
-\Msg{* through LaTeX.}
-\Msg{*}
-\Msg{* Happy TeXing}
-\Msg{***********************************************************}
-\endbatchfile
-%%
-%% End of file `count1to.ins'.
diff --git a/macros/latex/contrib/ms/count1to.pdf b/macros/latex/contrib/ms/count1to.pdf
deleted file mode 100644
index 9e339af9c9..0000000000
--- a/macros/latex/contrib/ms/count1to.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/ms/multitoc.asc b/macros/latex/contrib/ms/multitoc.asc
deleted file mode 100644
index 3fcaa10673..0000000000
--- a/macros/latex/contrib/ms/multitoc.asc
+++ /dev/null
@@ -1,12 +0,0 @@
------BEGIN PGP MESSAGE-----
-Version: 2.6.3ia
-Comment: PGP sig of multitoc.dvi
-
-iQEVAwUAN11/jOHJal4pKBTlAQEoKAf8CqoIr8kQR2fuygRaYeeOKwV0sn2hZ8nE
-0jRurHZvMG+oeqNWQmmhUWf5QbmhoeySV4k0oZptAJH7trA4VUOyQPekqW/lRlUs
-yoqxArqL9qhSK9+L6NDPKjZ9K3xejC8ivPkzoWSdHM7T4pOPwjmYNqrIo11I4DsQ
-eP/v4MlI83QPfDwWWQPq6AVPNa2yPoztsCKe5A6t4nkesgBPwBEorg/8LDwbGAzB
-psrpO/a/0V6FBKQ9MkeZ3pXSzZm6o91M4wZXf864pw67lj7BWnOsecbidJAuzd//
-+4VD1/BYIuGV7Mt8K5r2DNx9IRWCEQWiIXXO31lD4MBP6Jz382PTIw==
-=8lva
------END PGP MESSAGE-----
diff --git a/macros/latex/contrib/ms/multitoc.bug b/macros/latex/contrib/ms/multitoc.bug
deleted file mode 100644
index 400db9b6b5..0000000000
--- a/macros/latex/contrib/ms/multitoc.bug
+++ /dev/null
@@ -1,11 +0,0 @@
-This file is part of the multitoc package.
------------------------------------------
-
-\ProvidesFile{multitoc.bug}[1999/06/08 v2.01 MultiToc Package Bugs (MS)]
-
-This file contains problem-records and bug-reports. Unsolved problems
-and uncorrected but known bugs (so called features) start out with two
-exclamation marks before the number. Fixed problems will start with two
-asterisks.
-
-No bugs so far. \ No newline at end of file
diff --git a/macros/latex/contrib/ms/multitoc.ins b/macros/latex/contrib/ms/multitoc.ins
deleted file mode 100644
index 154b6ec1d5..0000000000
--- a/macros/latex/contrib/ms/multitoc.ins
+++ /dev/null
@@ -1,116 +0,0 @@
-%% \ProvidesFile{multitoc.ins}
-%% [1999/06/08 v2.01 Installation script for MultiToc Package (MS)]
-%%
-%% Copyright (c) [1998..1999] by Martin Schr\"oder. All rights reserved.
-%%
-%% This program may be redistributed and/or modified under the terms
-%% of the LaTeX Project Public License, either version 1.0 of this
-%% license, or (at your option) any later version.
-%% The latest version of this license is in
-%% CTAN:macros/latex/base/lppl.txt.
-%%
-%% Happy users are requested to send me a postcard. :-)
-%%
-%% checksum = "55078 128 458 3787"
-%%
-%% The checksum field above contains a CRC-16 checksum as the first
-%% value, followed by the equivalent of the standard UNIX wc (word
-%% count) utility output of lines, words, and characters.
-%% This is produced by Robert Solovay's checksum utility.
-%%
-%% --------------- start of docstrip commands ------------------
-\input docstrip
-{\ifx\endbatchfile\undefined
-\Msg{**********************************************}
-\Msg{*}
-\Msg{* This installation requires docstrip}
-\Msg{* version 2.4d or later.}
-\Msg{*}
-\Msg{* An older version of docstrip has been input}
-\Msg{*}
-\Msg{**********************************************}
-\errhelp{Move or rename old docstrip.tex.}
-\errmessage{Old docstrip in input path}
-\batchmode
-\csname @@end\endcsname
-\fi}
-
-\Msg{***********************************************************}
-\Msg{*}
-\Msg{* The multitoc distribution contains these files:}
-\Msg{*}
-\Msg{* \space\space multitoc.asc}
-\Msg{* \space\space multitoc.dtx}
-\Msg{* \space\space multitoc.dvi}
-\Msg{* \space\space multitoc.ins}
-\Msg{* \space\space multitoc.bug}
-\Msg{*}
-\Msg{* If you receive only some of these files from someone, complain!}
-\Msg{*}
-\Msg{***********************************************************}
-
-\preamble
-
-Copyright (c) [1998..1999] by Martin Schr"oder. All rights reserved.
-
-This file is part of the MultiToc package
-
-This program may be redistributed and/or modified under the terms
-of the LaTeX Project Public License, either version 1.0 of this
-license, or (at your option) any later version.
-The latest version of this license is in
- CTAN:macros/latex/base/lppl.txt.
-
-Happy users are requested to send me a postcard. :-)
-
-The MultiToc package contains these files:
-
- multitoc.asc
- multitoc.dtx
- multitoc.dvi
- multitoc.ins
- multitoc.bug
-
-Error Reports in case of UNCHANGED versions to
-
- Martin Schr"oder
- Cr"usemannallee 3
- D-28213 Bremen
- Martin.Schroeder@ACM.org
-
-\endpreamble
-\declarepreamble\driverpreamble
-
-This file is part of the MultiToc package
------------------------------------------
-
-Copyright (c) [1998..1999] by Martin Schr"oder. All rights reserved.
-
-To produce the documentation in the way you like you are allowed
-to change this driver file.
-
-\endpreamble
-
-\keepsilent
-\askforoverwritefalse
-\generate{%
- \file{multitoc.sty}{\from{multitoc.dtx}{package}}
- \usepreamble\driverpreamble
- \file{multitoc.drv}{\from{multitoc.dtx}{driver}}
- }
-
-\Msg{***********************************************************}
-\Msg{*}
-\Msg{* To finish the installation you have to move the following}
-\Msg{* style files into a directory searched by TeX:}
-\Msg{*}
-\Msg{* \space\space multitoc.sty}
-\Msg{*}
-\Msg{* To produce the documentation run the file multitoc.drv}
-\Msg{* through LaTeX.}
-\Msg{*}
-\Msg{* Happy TeXing}
-\Msg{***********************************************************}
-\endbatchfile
-%%
-%% End of file `multitoc.ins'.
diff --git a/macros/latex/contrib/ms/multitoc.pdf b/macros/latex/contrib/ms/multitoc.pdf
deleted file mode 100644
index b72c2a0c4c..0000000000
--- a/macros/latex/contrib/ms/multitoc.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/msu-thesis/README.md b/macros/latex/contrib/msu-thesis/README.md
index 8e706e6de9..d1942487f7 100644
--- a/macros/latex/contrib/msu-thesis/README.md
+++ b/macros/latex/contrib/msu-thesis/README.md
@@ -1,4 +1,4 @@
-# MSU Thesis Class Version 4.2b 2024/05/16
+# MSU Thesis Class Version 4.3b 2024/07/08
Copyright 2011-2024 by Alan Munn <amunn@msu.edu>
@@ -58,6 +58,7 @@ a template.
If you are using Overleaf, you should upload a copy of `msu-thesis.cls` to your project. It *must* have exactly this name to be found. Click on the Menu icon and make sure to choose the latest version of TeX Live for compilation.
+## Licence
This package may be distributed and/or modified under the conditions of
the LaTeX Project Public License, either version 1.3 of this license or
diff --git a/macros/latex/contrib/msu-thesis/docs/msu-thesis.tex b/macros/latex/contrib/msu-thesis/docs/msu-thesis.tex
index 7ea3b12edf..ffd0904eb8 100644
--- a/macros/latex/contrib/msu-thesis/docs/msu-thesis.tex
+++ b/macros/latex/contrib/msu-thesis/docs/msu-thesis.tex
@@ -2,8 +2,8 @@
\documentclass[11pt]{article}
-\def\msuversion{4.2b}
-\def\msudate{2024/05/16}
+\def\msuversion{4.3b}
+\def\msudate{2024/07/08}
\title{\textbf{Using the MSU Thesis Class}}
\author{\textbf{Alan Munn}\\Department of Linguistics, Languages, and Cultures\\Michigan State University\\\texttt{\href{mailto:amunn@msu.edu}{amunn@msu.edu}}}
\date{Version \msuversion\\\msudate}
@@ -137,6 +137,7 @@ In addition to all the user functionality defined by \pkg{memoir}, the \pkg{msu-
\toprule
{\bs msucaptiondelim} & Delimiter for floating elements (see section \ref{captiondelim}).\\
{\bs msutocdelim} & Delimiter for table of contents chapter/section titles.\\
+{\bs msuappendixdelim} & Delimiter for table of contents appendix titles.\\
%{\bs setabstractnamespace} & Changes spacing after the name in the abstract (see section \ref{abstractspacing}).\\
\bottomrule
\end{tabularx}
@@ -200,8 +201,8 @@ The thesis guide suggests that you use a simplified table of contents that lists
\begin{quote}
|\setcounter{msutocdepth}{0}|
\end{quote}
-\subsubsection{Ensuring the minimum number of leader dots}
-If your chapter titles are very long, they sometimes fail to put any leader dots before the page number in the Table of Contents. The thesis office requires a minimum of three dots of leaders for any TOC line. You can solve this problem by putting a line break into the TOC entry title. To do this, use the optional argument of the corresponding |\chapter| or |\section| etc. command. Note that the line break needs to be preceded by |\protect|.
+\subsubsection{Adding line breaks to TOC entries}
+If your chapter titles are very long, they sometimes fail to put any leader dots before the page number in the Table of Contents or they hyphenate a word in the title. The thesis office requires a minimum of three dots of leaders for any TOC line, and they don't seem to like hyphenation inside TOC entries. You can solve both of these problems by putting a line break into the TOC entry title. To do this, use the optional argument of the corresponding |\chapter| or |\section| etc. command. Note that the line break needs to be preceded by |\protect|.
%\begin{quote}
\begin{lstlisting}[frame=none,xleftmargin=2.5em]
@@ -211,7 +212,9 @@ If your chapter titles are very long, they sometimes fail to put any leader dots
%\end{quote}
\subsection{Captions}
\subsubsection{Caption delimiter}\label{captiondelim}
-Because the thesis office doesn't understand anything about punctuation, it requires the colon that would appear in a caption to also appear in the contents lists. Since they don't care about the colon itself, but just consistency I've removed colons from the captions entirely, since leaving it in makes the contents lists look really stupid. But in case you or your advisor want the colon in captions, you can add the colon back in by adding |\renewcommand{\msucaptiondelim}{:\space}| to your preamble, and the class will make sure the Lists of Tables and Figures match in formatting. If you have other floating objects with captions (e.g., algorithms, listings) you may need to change their delimiter too (see below). How you do this may depend on the particular packages you are using.
+Because the thesis office doesn't understand anything about punctuation, it requires the colon that would appear in a caption to also appear in the contents lists. Since they don't care about the colon itself, but just consistency I've removed colons from the captions entirely, since leaving it in makes the contents lists look really stupid. But in case you or your advisor want the colon in captions, you can add the colon back in by adding |\renewcommand{\msucaptiondelim}{:}| to your preamble, and the class will make sure the Lists of Tables and Figures match in formatting. If you have other floating objects with captions (e.g., algorithms, listings) you may need to change their delimiter too (see below). How you do this may depend on the particular packages you are using.
+\subsection{Colons after Appendix titles}\label{appendixdelim}
+I have also received reports that sometimes the thesis office requires a colon after appendix titles in the table of contents. To add this colon you can add |\renewcommand{\msuappendixdelim}{:}| to your preamble.
\subsubsection{New lists and floats}
Note that the thesis office no longer seems to \emph{require} lists of anything other than the main table of contents. This is another odd decision on their part. If do include a List of Tables and List of Figures and need to add other lists, you can follow the directions here. Note that lists of algorithms require special treatment. See §\ref{algorithms}.
@@ -452,7 +455,8 @@ Version 3.7 added improved support for \pkg{hyperref}.
Version 4.0 implements the new requirements as of September 2022, including adding a |\dualmajor| command.
Various spacing changes have been made which will make your document look like you used Word, but this is what the thesis office seems to care about.
Version 4.1 added the |msutocdepth| counter to allow for the chapters-only format that the thesis office recommends.
-Version 4.2 changed the spacing parameters for subsections to appease the thesis office yet again.
+Version 4.2 changed the spacing parameters for subsections to appease the thesis office yet again and added an explicit check for an up-to-date kernel.
+Version 4.3 added a |\msuappendixdelim| command to appease the thesis office's thirst for colons.
\section{Acknowledgements}
Thanks to Lars Madsen, Ulrike Fischer and Peter Wilson for help with setting up parts of
@@ -463,8 +467,8 @@ Florent Chervet for early \pkg{hyperref} code (up until v.3.6), and Ulrike Fisch
current \pkg{hyperref} code. Thanks to David Carlisle for helping me understand a ridiculous spacing problem.
Thanks also to the following people who have reported
problems over the years: Irina Agafonova, Ali Al-jiboory, Abubakr Ayesh, Julian Blank,
-Nathan Brugnone, Dmitriy Bryndin, Greg Christian, Kyle Crayne, Ciaron Hamilton, Matt Husband, Changkuk
-Jung, Claire Kopenhafer, Adam Liter, Vanessa Maldonado, Andriana Manousidaki, Ben Miller, William Muir, Eureka
+Nathan Brugnone, Dmitriy Bryndin, Harrison Cassady, Greg Christian, Kyle Crayne, Ciaron Hamilton, Matt Husband, Changkuk
+Jung, Minkyu Kim, Claire Kopenhafer, Adam Liter, Vanessa Maldonado, Andriana Manousidaki, Ben Miller, William Muir, Eureka
Pai, Alicia Parrish, Victoria Parrish, Neil ver Planck, Taha Posos, Nick Rekuski, Giacomo Romanini, William Sands, Adam
Soliman, Mookyong Son, Erik Stitt, Fanurs C.E. Teh, Eremey Valetov, Matthew Vincent, Michael Wojcik, Stephen Yowono, Atacan Yücesoy, Ali
Zare, and Yisu Zhou. A special thank you to Non Thongprong who graciously provided a copy
diff --git a/macros/latex/contrib/msu-thesis/msu-thesis.cls b/macros/latex/contrib/msu-thesis/msu-thesis.cls
index f873f7a964..538a98da06 100644
--- a/macros/latex/contrib/msu-thesis/msu-thesis.cls
+++ b/macros/latex/contrib/msu-thesis/msu-thesis.cls
@@ -192,11 +192,13 @@
% Version 4.1h 2023/10/07 Changed option processing code
% Version 4.1i 2023/12/02 Fixed spurious blank page with biblatex bibliography
% Version 4.2 2024/02/18 Changed spacing for sections to address complaints about adjacent sectioning commands
-% Version 4.2b 2024/05/16 Added version check for l3kernel.
+% Version 4.2b 2024/05/16 Added version check for l3kernel.
+% Version 4.3 2024/06/07 Fixed bug with TOCs when calc package was loaded; added \msuappendixdelim
+% Version 4.3b 2024/07/08 Fixed spurious page break with biblatex per chapter bibliographies
% Report bugs/problems/questions to <amunn@msu.edu>
%
-\def\msu@version{4.2b}
-\def\msu@date{2024/05/16}
+\def\msu@version{4.3b}
+\def\msu@date{2024/07/08}
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{msu-thesis}[\msu@date\space Michigan State University Thesis Class version \msu@version]
\@ifundefined{ExplLoaderFileDate}
@@ -333,7 +335,6 @@ chapterapp.code = {
% This may also be solved by using \hypersetup{hypertexnames=false}
% hard to tell whether this is a better solution.
-
% make title 2in from top of page
% This value is crazy because the grad school doesn’t know how to measure
\setlength{\droptitle}{.25in} % changed again due to topskip removal 12/13/17
@@ -499,6 +500,7 @@ chapterapp.code = {
\renewcommand\cftsectionfont{\msu@tocfont} % fixed 12/13/17
\renewcommand\cftchapterpagefont{\msu@tocfont}
\renewcommand*{\cftappendixname}{APPENDIX\space}
+ \renewcommand*\cftchapteraftersnum{\msuappendixdelim}
}
\cftinsertcode{SINGAPP}{\renewcommand{\cftchapteraftersnum}{}}
@@ -517,7 +519,7 @@ chapterapp.code = {
% chapters in the source
\newlength\apptoclen
-\settowidth{\apptoclen}{APPENDIX M}
+\settowidth{\apptoclen}{APPENDIX: M}
\cftinsertcode{APPENDICES}{
\setlength\cftchapterindent{\cftsectionindent}
\setlength\cftsectionnumwidth{\apptoclen} % add the extra space
@@ -525,7 +527,7 @@ chapterapp.code = {
\renewcommand\cftsectionfont{\msu@tocfont} % fixed 12/13/17
\renewcommand\cftchapterpagefont{\msu@tocfont}
\renewcommand*{\cftappendixname}{APPENDIX\space}
- \renewcommand\cftchapteraftersnum{\msutocdelim}
+ \renewcommand\cftchapteraftersnum{\msuappendixdelim}
%\ifthenelse{\value{msutocdepth}=0}{\addtocounter{tocdepth}{-1}}{} % removed 8/12/2023
}
@@ -538,7 +540,7 @@ chapterapp.code = {
\setlength{\cftbeforechapterskip}{1.0em \@plus\p@}
\renewcommand\cftchapterfont{\msu@chapfont\MakeUppercase}
\renewcommand\cftchapterpagefont{\msu@chapfont}
- \setcounter{tocdepth}{\value{msutocdepth}}
+ \protect\setcounter{tocdepth}{\value{msutocdepth}}
}
% This code resets the changes made in the APP code back to normal
% so that the bibliography will appear correctly in the TOC
@@ -547,7 +549,7 @@ chapterapp.code = {
\setlength{\cftbeforechapterskip}{1.0em \@plus\p@}
\renewcommand\cftchapterfont{\msu@chapfont\MakeUppercase}
\renewcommand\cftchapterpagefont{\msu@chapfont}
- \setcounter{tocdepth}{\value{msutocdepth}}
+ \protect\setcounter{tocdepth}{\value{msutocdepth}}
}
\cftinsertcode{CHAPBIB}{
@@ -679,6 +681,7 @@ chapterapp.code = {
% contents lists don't look so stupid. Can be changed if necessary.
\newcommand*\msucaptiondelim{\space}
\newcommand*\msutocdelim{} % removed idiotic colon 5/25/23
+\newcommand*\msuappendixdelim{} % added 6/7/24
\captiondelim{\msucaptiondelim}
\pagestyle{plain}
@@ -773,11 +776,11 @@ chapterapp.code = {
% \ifmsu@chapterapp\else
\msu@singleappendixtrue
% \fi% make sure single appendix doesn't have a number if global 3.1b (always 3.2)
- \msu@apppage\cftinserthook{toc}{SINGAPP}\setcounter{tocdepth}{0}\@resets@pp\anappendixtrue}%
+ \msu@apppage\cftinserthook{toc}{SINGAPP}\protect\setcounter{tocdepth}{0}\@resets@pp\anappendixtrue}%
{\@ppsaveapp\@pprestoresec\anappendixfalse\cftinserthook{toc}{CHAPAPPR}} % reset aded 2022/04/16
\renewenvironment{appendices}%
- {\msu@singleappendixfalse\msu@apppage\ifmsu@chapterapp\cftinserthook{toc}{APPENDICES}\fi\addtocontents{toc}{\setcounter{tocdepth}{0}}
+ {\msu@singleappendixfalse\msu@apppage\ifmsu@chapterapp\cftinserthook{toc}{APPENDICES}\fi\addtocontents{toc}{\protect\setcounter{tocdepth}{0}}
\@resets@pp\anappendixtrue}%
{\@ppsaveapp\@pprestoresec\anappendixfalse\cftinserthook{toc}{CHAPAPPR}} % reset added 2022/04/16
@@ -835,9 +838,10 @@ chapterapp.code = {
% This code probably needs to be revisited since it’s a unholy amalgam of old and new code
% Removed clearpage from the document level code in response to issue #26.
% Problem seems to only arise with biblatex so more testing is needed
+% Added test for natbib here 7/8/2024 because biblatex produces extra page
\newcommand\msu@addbibheadtotoc{%
\ifmsu@chapterbib
- \clearpage\phantomsection\addcontentsline{toc}{\msu@bibsection}{\bibtocname}
+ \@ifpackageloaded{natbib}{\clearpage}{}\phantomsection\addcontentsline{toc}{\msu@bibsection}{\bibtocname}
\else
\phantomsection\addcontentsline{toc}{chapter}{\bibtocname}
\fi
diff --git a/macros/latex/contrib/msu-thesis/msu-thesis.pdf b/macros/latex/contrib/msu-thesis/msu-thesis.pdf
index 89f49a4d54..11fe39050a 100644
--- a/macros/latex/contrib/msu-thesis/msu-thesis.pdf
+++ b/macros/latex/contrib/msu-thesis/msu-thesis.pdf
Binary files differ
diff --git a/macros/latex/contrib/msu-thesis/samples/MSU-thesis-chapterbib-testfile.pdf b/macros/latex/contrib/msu-thesis/samples/MSU-thesis-chapterbib-testfile.pdf
index 3fea93983a..2de16c4965 100644
--- a/macros/latex/contrib/msu-thesis/samples/MSU-thesis-chapterbib-testfile.pdf
+++ b/macros/latex/contrib/msu-thesis/samples/MSU-thesis-chapterbib-testfile.pdf
Binary files differ
diff --git a/macros/latex/contrib/msu-thesis/samples/MSU-thesis-chapterbib-testfile.tex b/macros/latex/contrib/msu-thesis/samples/MSU-thesis-chapterbib-testfile.tex
index f4ee4c9157..d0ce1cca0c 100644
--- a/macros/latex/contrib/msu-thesis/samples/MSU-thesis-chapterbib-testfile.tex
+++ b/macros/latex/contrib/msu-thesis/samples/MSU-thesis-chapterbib-testfile.tex
@@ -7,7 +7,7 @@
\usepackage[]{chapterbib}
\usepackage[]{natbib}
\usepackage{lipsum}
-
+\renewcommand{\msuappendixdelim}{:}
\usepackage{hyperref}
diff --git a/macros/latex/contrib/msu-thesis/samples/MSU-thesis-template.tex b/macros/latex/contrib/msu-thesis/samples/MSU-thesis-template.tex
index eb0b2e2b83..6c02721c99 100644
--- a/macros/latex/contrib/msu-thesis/samples/MSU-thesis-template.tex
+++ b/macros/latex/contrib/msu-thesis/samples/MSU-thesis-template.tex
@@ -1,5 +1,5 @@
% This is a template for use with the MSU Thesis class
-% Version 4.1b 2023/05/25
+% Version 4.3 2024/06/07
%
% Class options:
%[PhD] Doctor of Philosophy (default)
@@ -61,10 +61,6 @@
%
%\dedication{This thesis is dedicated to someone.}
%
-% The default TOC format for the class lists both chapters and sections
-% The thesis office suggests only listing chapters. If you prefer that format
-% uncomment the next line:
-%\setcounter{msutocdepth}{0} % sets TOC to list chapters only
%
\begin{document}
@@ -100,9 +96,21 @@
Your acknowledgements here.
%
\clearpage
+% The default TOC format for the class lists both chapters and sections
+% The thesis office suggests only listing chapters. If you prefer that format
+% uncomment the next line:
+%
+%\setcounter{msutocdepth}{0} % sets TOC to list chapters only
+%
% We need to turn single spacing back on for the contents/figures/tables lists
+
\SingleSpacing
\tableofcontents* % table of contents will not be listed in the TOC
+%
+% The thesis office now seems to discourage the use of lists of tables/figures etc.
+% Again, this is a very dubious suggestion, since it makes it harder for the people who actually
+% read your thesis, so I would recommend keeping these lists unless the thesis office forces you to
+% remove them or finds other problems with them.
%\clearpage
%\listoftables % comment this out if you have no tables
%\clearpage
@@ -131,6 +139,11 @@ Your acknowledgements here.
% If you are using it for an MA/MS thesis you still need to have chapters, even if they are very small.
\chapter{Your first chapter}
+% The \chapter command supports an optional argument for the entry in the Table of Contents. The thesis
+% office sometimes complains about hyphenation in the TOC or entries with too few dots! If they do, you
+% can use the optional argument of \chapter (or \section etc.) to add explicit linebreaks in the TOC entries:
+%\chapter[Long title that will \protect\\ break before the word ‘break’]{Long title that will break before the word ‘break’}
+%
%
% If you have pages that must appear in landscape mode, use the [lscape] documentclass option
% and enclose the pages in a {landscape} environment.
diff --git a/macros/latex/contrib/msu-thesis/samples/MSU-thesis-testfile.pdf b/macros/latex/contrib/msu-thesis/samples/MSU-thesis-testfile.pdf
index 1b819b0aa0..8ac6fc3ef5 100644
--- a/macros/latex/contrib/msu-thesis/samples/MSU-thesis-testfile.pdf
+++ b/macros/latex/contrib/msu-thesis/samples/MSU-thesis-testfile.pdf
Binary files differ
diff --git a/macros/latex/contrib/msu-thesis/samples/MSU-thesis-testfile.tex b/macros/latex/contrib/msu-thesis/samples/MSU-thesis-testfile.tex
index bd67ccb091..a00f0b1070 100644
--- a/macros/latex/contrib/msu-thesis/samples/MSU-thesis-testfile.tex
+++ b/macros/latex/contrib/msu-thesis/samples/MSU-thesis-testfile.tex
@@ -1,5 +1,5 @@
% !TEX TS-program = pdflatexmk
-% v4.1c Testfile
+% v4.3 Testfile
\listfiles
\documentclass[lscape]{msu-thesis}
@@ -26,6 +26,7 @@
\usepackage{lipsum}
\usepackage{xcolor}
\usepackage{enumitem}
+\usepackage{calc}
\usepackage[unit=in]{fgruler}
\usepackage{gb4e}
\counterwithin{exx}{chapter}
@@ -41,6 +42,7 @@
\newlistentry{listing}{lol}{0}
\renewcommand*{\cftlistingname}{Listing\space}
\renewcommand*{\cftlistingaftersnum}{\msucaptiondelim}
+\renewcommand*{\msuappendixdelim}{:}
\usepackage[bookmarksopenlevel=2,bookmarks=true]{hyperref} % not needed but here for testing
\setcounter{msutocdepth}{1} % default is 1; this puts only chapters in the TOC
@@ -269,6 +271,7 @@ A & B & C & D & E & F & G \\
% use this if you have more than one appendix
\clearpage
%\backmatter
+
\bibliography{MSU-thesis-testfile}
%\begin{appendix} ... \end{appendix} % use this if you have only one appendix
%\begin{appendix}
@@ -284,8 +287,7 @@ A & B & C & D & E & F & G \\
\section{An appendix section}
\lipsum[16-17]
\end{appendices}
-% This command creates the cover page for the bibliography
-%\makebibliographypage
+
\end{document}
diff --git a/macros/latex/contrib/multitoc/README.md b/macros/latex/contrib/multitoc/README.md
new file mode 100644
index 0000000000..69078f454e
--- /dev/null
+++ b/macros/latex/contrib/multitoc/README.md
@@ -0,0 +1,44 @@
+# The `multitoc` package
+
+Copyright (C) Martin Schröder, 1998–1999, Marei Peischl (peiTeX) <marei@peitex.de>, 2024
+
+ multitoc 2024/06/13 v2.02
+
+***************************************************************************
+
+ This material is subject to the LaTeX Project Public License version 1.3c
+ or later. See http://www.latex-project.org/lppl.txt for details.
+
+***************************************************************************
+
+This work has the LPPL maintenance status `maintained'.
+This package is maintained but will not receive any additional features anymore.
+
+The Current Maintainer of this work is
+ Marei Peischl <marei@peitex.de>.
+
+[Link to the GitLab Repository](https://gitlab.com/TeXhackse/ragged2e)
+
+## Abstract
+This package only exists and is maintained for compatibility reasons!
+
+The package automatically sets the table of contents, list of figures and list of tables in two or more columns (the number of columns may be configured).
+
+The package uses the multicol package.
+
+## Provided files
+
+* README.md
+* multitoc.dtx
+* multitoc.ins
+
+The file
+* multitoc.sty
+
+## Issue Tracker
+If you think you may have found a bug in this package, please visit
+ https://gitlab.com/TeXhackse/multitoc/issues
+
+## Version History
+ * 2.02 Bugfix to no longer break other lists but toc/lot and lof
+t. \ No newline at end of file
diff --git a/macros/latex/contrib/ms/multitoc.dtx b/macros/latex/contrib/multitoc/multitoc.dtx
index a88e69fbe6..2e6c5bd9c9 100644
--- a/macros/latex/contrib/ms/multitoc.dtx
+++ b/macros/latex/contrib/multitoc/multitoc.dtx
@@ -1,16 +1,53 @@
+%% \iffalse meta-comment
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Copyright (C) Martin Schröder, 1998–1999
+% Marei Peischl (peiTeX) <marei@peitex.de>, 2024
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3c
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+% This package is maintained but will not receive any additional features.
+%
+% The Current Maintainer of this work is
+% Marei Peischl <marei@peitex.de>.
+%
+%
+% This work consists of the files
+% README.md
+% multitoc.dtx
+% multitoc.ins
+% and the derived file
+% multitoc.sty.
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \fi
% \iffalse
-\NeedsTeXFormat{LaTeX2e}
+\NeedsTeXFormat{LaTeX2e}[2015-09-18]
%<package>\ProvidesPackage{multitoc}
-%<package> [1999/06/08 v2.01 MultiToc Package (MS)]
+%<package> [2024/06/13 v2.02 MultiToc Package]
%
%<*driver>
\ProvidesFile{multitoc.drv}
- [1999/06/08 v2.01 Driver for MultiToc Package (MS)]
+ [1999/06/08 v2.02 Driver for MultiToc Package]
\documentclass{ltxdoc}
\usepackage{url}
\usepackage{ragged2e}
\usepackage[toc]{multitoc}
\GetFileInfo{multitoc.sty}
+\makeatletter
+\IfFileExists{gitHeadInfo.gin}{
+ \newcommand*{\GI@githeadinfo@file}{gitHeadInfo.gin}
+}{}
+\makeatother
+\usepackage{gitinfo2}
\setcounter{IndexColumns}{2}
\EnableCrossrefs
%%\DisableCrossrefs% Say \DisableCrossrefs if index is ready
@@ -25,74 +62,8 @@
\DocInput{multitoc.dtx}
\end{document}
%</driver>
-%
-% Copyright (c) [1998..1999] by Martin Schr\"oder. All rights reserved.
-%
-% This program may be redistributed and/or modified under the terms
-% of the LaTeX Project Public License, either version 1.0 of this
-% license, or (at your option) any later version.
-% The latest version of this license is in
-% CTAN:macros/latex/base/lppl.txt.
-%
-% Happy users are requested to send me a postcard. :-)
-%
-% For error reports in case of UNCHANGED versions see multitoc.ins
-%
% \fi
%
-% \CheckSum{83}
-%
-%% \CharacterTable
-%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
-%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
-%% Digits \0\1\2\3\4\5\6\7\8\9
-%% Exclamation \! Double quote \" Hash (number) \#
-%% Dollar \$ Percent \% Ampersand \&
-%% Acute accent \' Left paren \( Right paren \)
-%% Asterisk \* Plus \+ Comma \,
-%% Minus \- Point \. Solidus \/
-%% Colon \: Semicolon \; Less than \<
-%% Equals \= Greater than \> Question mark \?
-%% Commercial at \@ Left bracket \[ Backslash \\
-%% Right bracket \] Circumflex \^ Underscore \_
-%% Grave accent \` Left brace \{ Vertical bar \|
-%% Right brace \} Tilde \~}
-%%
-%% \iffalse meta-comment
-%% ===================================================================
-%% @LaTeX-style-file{
-%% author = {Martin Schr\"oder},
-%% version = "2.01",
-%% date = "8 June 1999",
-%% filename = "multitoc.sty",
-%% address = {Martin Schr\"oder
-%% Cr\"usemannallee 3
-%% D-28213 Bremen
-%% telephone = "+49-421-2239425",
-%% email = "Martin.Schroeder@ACM.org",
-%% pgp-Key = "2048 bit / KeyID 292814E5",
-%% pgp-fingerprint = "7E86 6EC8 97FA 2995 82C3 FEA5 2719 090E",
-% checksum = "62732 556 2216 19056",
-% codetable = "ISO/ASCII",
-% keywords = "LaTeX, multicol, toc, lof, lot",
-% dependences = "multicol",
-% supported = "yes",
-%% docstring = "LaTeX package which automatically sets only
-%% the table of contents, list of figures and list
-%% of tables in two or more columns.
-%% The number of columns can be configured.
-%% Uses the multicol package.
-%
-% The checksum field above contains a CRC-16
-% checksum as the first value, followed by
-% the equivalent of the standard UNIX wc
-% (word count) utility output of lines,
-% words, and characters. This is produced
-% by Robert Solovay's checksum utility."
-%% }
-%% ===================================================================
-%% \fi
-%
% \changes{v0.90}{1998/05/23}{New}
% \changes{v1.00}{1998/08/09}{Documentation improved}
% \changes{v2.00}{1998/08/23}{Redesign}
@@ -109,24 +80,28 @@
% \title{\unskip
% The \textsf{multitoc} package^^A
% \thanks{^^A
-% The version number of this file is \fileversion,
-% last revised \filedate.\protect\newline
+% The version number of this file is \fileversion,
+% revision~\#\gitAbbrevHash, last revised \protect\gitAuthorIsoDate.\protect\newline
% The name \textsf{multitoc} is a tribute to the $8+3$
% file-naming convention of certain ``operating
% systems''; strictly speaking it should be
% \textsf{MulticolumnToc}.}
% }
-% \author{Martin Schr\"oder\\[0.5ex]
-% \normalsize Cr\"usemannallee 3\\
-% \normalsize D-28213 Bremen\\
-% \normalsize Martin.Schroeder@ACM.org\\
-% \scriptsize \texttt{PGP-Key: 2048 bit / KeyID 292814E5}\\[-0.5em]
-% \scriptsize \texttt{7E86 6EC8 97FA 2995~~82C3 FEA5 2719 090E}}
+% \author{Martin Schröder\\
+% \url{https://gitlab.com/TeXhackse/multitoc}\thanks{maintained by Marei Peischl}}
% \date{\filedate}
% \maketitle
%
% ^^A -----------------------------
%
+% \begingroup\renewcommand*{\abstractname}{Disclaimer/Warning}
+% \begin{abstract}
+% \changes{v2.02}{2024/06/13}{Add note, that there will not be any additional features.}
+% This package is maintained to keep compatibility but will not receive any further feature extensions as there are a lot of packages providing by far more functionality.
+%
+% In case you are looking for methods to modify lists have a look at Markus Kohm's tocbasic Package \cite{package:tocbasic} or the corresponding CTAN Topic \url{https://ctan.org/topic/toc-etc}.
+% \end{abstract}
+% \endgroup
%
% \begin{abstract}
% This package allows setting only the table of contents, list of
@@ -318,6 +293,11 @@
% \newblock The \package{count1to} package.
% \newblock \url{CTAN: tex-archive/macros/latex/contrib/supported/ms/count1to.dtx}.
% \newblock \LaTeXe{} package.
+% \bibitem{package:tocbasic}
+% Markus Kohm
+% \newblock KOMA-Script
+% \newblock \url{CTAN: tex-archive/macros/latex/contrib/koma-script/tocbasic.dtx}.
+% \newblock \LaTeXe{} package.
% \end{thebibliography}
%
% }
@@ -448,25 +428,24 @@
% We also have to determine the number of columns to use.\footnote{^^A
% This could probably be coded more effeciently, but this code
% works\ldots}
+% \changes{v2.02}{2024/06/13}{Fix bug breaking other lists but toc/lof/lot. Thanks to Markus Kohm for reporting.}
% \begin{macrocode}
\let\@multitoc@starttoc\@starttoc
+\ExplSyntaxOn
\renewcommand*{\@starttoc}[1]{%
- \ifthenelse{\boolean{@multitoc@toc}\and\equal{#1}{toc}}{%
- \begin{multicols}{\multicolumntoc}%
- \@multitoc@starttoc{#1}%
- \end{multicols}%
- }{}%
- \ifthenelse{\boolean{@multitoc@lot}\and\equal{#1}{lot}}{%
- \begin{multicols}{\multicolumnlot}%
- \@multitoc@starttoc{#1}%
- \end{multicols}%
- }{}%
- \ifthenelse{\boolean{@multitoc@lof}\and\equal{#1}{lof}}{%
- \begin{multicols}{\multicolumnlof}%
- \@multitoc@starttoc{#1}%
- \end{multicols}%
- }{}%
- }
+ \clist_if_in:nnTF {toc,lof,lot} {#1} {
+ \ifthenelse{\boolean{@multitoc@#1}}{
+ \begin{multicols}{\use:c{multicolumn#1}}%
+ \@multitoc@starttoc{#1}%
+ \end{multicols}
+ }{
+ \@multitoc@starttoc{#1}
+ }
+ }{
+ \@multitoc@starttoc{#1}
+ }
+}
+\ExplSyntaxOff
% \end{macrocode}
% \end{macro}
%
diff --git a/macros/latex/contrib/multitoc/multitoc.ins b/macros/latex/contrib/multitoc/multitoc.ins
new file mode 100644
index 0000000000..e42692f99a
--- /dev/null
+++ b/macros/latex/contrib/multitoc/multitoc.ins
@@ -0,0 +1,47 @@
+\input docstrip.tex
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesFile{ragged2e.ins}
+ [2024/06/13 v2.02 Installation script for MultiToc Package]
+
+\preamble
+Copyright (C) 1998–1999 Martin Schröder, 2024 Marei Peischl (peiTeX) <marei@peitex.de>
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either version 1.3c
+of this license or (at your option) any later version.
+The latest version of this license is in
+http://www.latex-project.org/lppl.txt
+and version 1.3c or later is part of all distributions of LaTeX
+version 2005/12/01 or later.
+
+This work has the LPPL maintenance status `maintained'.
+
+The Current Maintainer of this work is
+ Marei Peischl <marei@peitex.de>.
+
+This work consists of the files multitoc.dtx and multitoc.ins
+and the derived file multitoc.sty.
+
+\endpreamble
+\keepsilent
+\askforoverwritefalse
+\generate{%
+ \file{multitoc.sty}{\from{multitoc.dtx}{package}}
+}
+
+\Msg{***********************************************************}
+\Msg{*}
+\Msg{* To finish the installation you have to move the following}
+\Msg{* style files into a directory searched by TeX:}
+\Msg{*}
+\Msg{* \space\space multitoc.sty}
+\Msg{*}
+\Msg{* To produce the documentation run the file multitoc.dtx}
+\Msg{* through LaTeX.}
+\Msg{*}
+\Msg{* Happy TeXing}
+\Msg{***********************************************************}
+\endbatchfile
+%%
+%% End of file `multitoc.ins'.
diff --git a/macros/latex/contrib/multitoc/multitoc.pdf b/macros/latex/contrib/multitoc/multitoc.pdf
new file mode 100644
index 0000000000..7401b2f53e
--- /dev/null
+++ b/macros/latex/contrib/multitoc/multitoc.pdf
Binary files differ
diff --git a/macros/latex/contrib/nicematrix/README.md b/macros/latex/contrib/nicematrix/README.md
index da760d4374..2318c86d3a 100644
--- a/macros/latex/contrib/nicematrix/README.md
+++ b/macros/latex/contrib/nicematrix/README.md
@@ -4,6 +4,8 @@ Author: F. Pantigny (`fpantigny@wanadoo.fr`).
CTAN page: `https://ctan.org/pkg/nicematrix`
+GitHub page: `github.com/fpantigny/nicematrix`
+
## License
The LaTeX extension `nicematrix` is distributed under the LPPL 1.3 license.
diff --git a/macros/latex/contrib/nicematrix/nicematrix-code.dtx b/macros/latex/contrib/nicematrix/nicematrix-code.dtx
index 340d2e0f5e..58a841a655 100644
--- a/macros/latex/contrib/nicematrix/nicematrix-code.dtx
+++ b/macros/latex/contrib/nicematrix/nicematrix-code.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% This file should be compiled with $xelatex$.
+% This file should be compiled with $lualatex$.
%
% Copyright (C) 2018-2024 by F. Pantigny
% ------------------------------------------
@@ -17,8 +17,8 @@
%
% \fi
% \iffalse
-\def\myfileversion{6.27b}
-\def\myfiledate{2024/04/23}
+\def\myfileversion{6.28c}
+\def\myfiledate{2024/08/22}
%
%
%<*batchfile>
@@ -102,25 +102,11 @@ version 2005/12/01 or later.
%
%
% \bigskip
-% By default, the package \pkg{nicematrix} doesn't patch any existing code.
+% The development of the extension \pkg{nicematrix} is done on the following GitHub
+% depot:
%
-% \smallskip
-% However, when the option |renew-dots| is used, the commands |\cdots|,
-% |\ldots|, |\dots|, |\vdots|, |\ddots| and |\iddots| are redefined in the
-% environments provided by \pkg{nicematrix}. In the same way, if the option
-% |renew-matrix| is used, the environment |{matrix}| of \pkg{amsmath} is
-% redefined.
-%
-% \smallskip
-% On the other hand, the environment |{array}| is never redefined.
+% \verb|https://github.com/fpantigny/nicematrix|
%
-% \smallskip
-% Of course, the package \pkg{nicematrix} uses the features of the package
-% \pkg{array}. It tries to be independent of its implementation. Unfortunately,
-% it was not possible to be strictly independent. For example, the package
-% \pkg{nicematrix} relies upon the fact that the package |{array}| uses
-% |\ialign| to begin the |\halign|.
-%
%
% \bigskip
% \section{Declaration of the package and packages loaded}
@@ -169,7 +155,11 @@ version 2005/12/01 or later.
% In the version 2.6a of \pkg{array}, important modifications have been done for
% the Tagging Project.
% \begin{macrocode}
-\bool_const:Nn \c_@@_tagging_array_bool { \cs_if_exist_p:N \ar@ialign }
+\bool_const:Nn \c_@@_tagging_array_bool
+ { \IfPackageAtLeastTF { array } { 2024/05/01 } \c_true_bool \c_false_bool }
+\bool_const:Nn \c_@@_testphase_table_bool
+ { \IfPackageLoadedTF { latex-lab-testphase-table } \c_true_bool \c_false_bool
+ }
% \end{macrocode}
%
%
@@ -299,19 +289,27 @@ version 2005/12/01 or later.
%
% \bigskip
% \begin{macrocode}
-\cs_new_protected:Npn \@@_security_test_i:w \ignorespaces #1
+\bool_if:NTF \c_@@_tagging_array_bool
{
- \peek_meaning:NF \unskip { \@@_error:n { Internal~error } }
- #1
+ \cs_new_protected:Npn \@@_security_test_i:w \ignorespaces #1
+ {
+ \peek_meaning:NF \textonly@unskip { \@@_error:n { Internal~error } }
+ #1
+ }
+ }
+ {
+ \cs_new_protected:Npn \@@_security_test_i:w \ignorespaces #1
+ {
+ \peek_meaning:NF \unskip { \@@_error:n { Internal~error } }
+ #1
+ }
}
% \end{macrocode}
%
% \bigskip
% Here, the box |\l_tmpa_box| will be used as sandbox to take our security test.
-% This code has been modified in version 6.18 (see question 682891 on TeX
-% StackExchange).
% \begin{macrocode}
-\hook_gput_code:nnn { begindocument / after } { . }
+\hook_gput_code:nnn { begindocument / end } { . }
{
\IfPackageLoadedTF { mdwtab }
{ \@@_fatal:n { mdwtab~loaded } }
@@ -397,6 +395,7 @@ version 2005/12/01 or later.
\tl_const:Nn \c_@@_dot_tl { . }
\tl_const:Nn \c_@@_default_tl { default }
\tl_const:Nn \c_@@_star_tl { * }
+\str_const:Nn \c_@@_star_str { * }
\str_const:Nn \c_@@_r_str { r }
\str_const:Nn \c_@@_c_str { c }
\str_const:Nn \c_@@_l_str { l }
@@ -415,8 +414,8 @@ version 2005/12/01 or later.
% \end{macrocode}
%
% \begin{macrocode}
-\cs_generate_variant:Nn \seq_set_split:Nnn { N V n }
-\cs_generate_variant:Nn \str_lowercase:n { V }
+\cs_generate_variant:Nn \seq_set_split:Nnn { N o n }
+\cs_generate_variant:Nn \str_lowercase:n { o }
% \end{macrocode}
%
% \medskip
@@ -565,8 +564,8 @@ version 2005/12/01 or later.
% the rules even if \pkg{colortbl} is not loaded.
% \begin{macrocode}
\cs_set_protected:Npn \CT@arc@ { }
- \cs_set:Npn \arrayrulecolor #1 # { \CT@arc { #1 } }
- \cs_set:Npn \CT@arc #1 #2
+ \cs_set_nopar:Npn \arrayrulecolor #1 # { \CT@arc { #1 } }
+ \cs_set_nopar:Npn \CT@arc #1 #2
{
\dim_compare:nNnT \baselineskip = \c_zero_dim \noalign
{ \cs_gset_nopar:Npn \CT@arc@ { \color #1 { #2 } } }
@@ -574,13 +573,13 @@ version 2005/12/01 or later.
% \end{macrocode}
% Idem for |\CT@drs@|.
% \begin{macrocode}
- \cs_set:Npn \doublerulesepcolor #1 # { \CT@drs { #1 } }
- \cs_set:Npn \CT@drs #1 #2
+ \cs_set_nopar:Npn \doublerulesepcolor #1 # { \CT@drs { #1 } }
+ \cs_set_nopar:Npn \CT@drs #1 #2
{
\dim_compare:nNnT \baselineskip = \c_zero_dim \noalign
{ \cs_gset:Npn \CT@drsc@ { \color #1 { #2 } } }
}
- \cs_set:Npn \hline
+ \cs_set_nopar:Npn \hline
{
\noalign { \ifnum 0 = `} \fi
\cs_set_eq:NN \hskip \vskip
@@ -599,8 +598,8 @@ version 2005/12/01 or later.
% be linked to |\cline| in the beginning of |{NiceArrayWithDelims}|. The
% following commands must \emph{not} be protected.
% \begin{macrocode}
-\cs_set:Npn \@@_standard_cline #1 { \@@_standard_cline:w #1 \q_stop }
-\cs_set:Npn \@@_standard_cline:w #1-#2 \q_stop
+\cs_set_nopar:Npn \@@_standard_cline #1 { \@@_standard_cline:w #1 \q_stop }
+\cs_set_nopar:Npn \@@_standard_cline:w #1-#2 \q_stop
{
\int_if_zero:nT \l_@@_first_col_int { \omit & }
\int_compare:nNnT { #1 } > \c_one_int
@@ -694,8 +693,8 @@ version 2005/12/01 or later.
\tl_if_blank:nF { #1 }
{
\tl_if_head_eq_meaning:nNTF { #1 } [
- { \cs_set:Npn \CT@arc@ { \color #1 } }
- { \cs_set:Npn \CT@arc@ { \color { #1 } } }
+ { \cs_set_nopar:Npn \CT@arc@ { \color #1 } }
+ { \cs_set_nopar:Npn \CT@arc@ { \color { #1 } } }
}
}
\cs_generate_variant:Nn \@@_set_CT@arc@:n { o }
@@ -706,8 +705,8 @@ version 2005/12/01 or later.
\cs_new_protected:Npn \@@_set_CT@drsc@:n #1
{
\tl_if_head_eq_meaning:nNTF { #1 } [
- { \cs_set:Npn \CT@drsc@ { \color #1 } }
- { \cs_set:Npn \CT@drsc@ { \color { #1 } } }
+ { \cs_set_nopar:Npn \CT@drsc@ { \color #1 } }
+ { \cs_set_nopar:Npn \CT@drsc@ { \color { #1 } } }
}
\cs_generate_variant:Nn \@@_set_CT@drsc@:n { o }
% \end{macrocode}
@@ -732,10 +731,6 @@ version 2005/12/01 or later.
\cs_generate_variant:Nn \@@_color:n { o }
% \end{macrocode}
%
-% \bigskip
-% \begin{macrocode}
-\cs_set_eq:NN \@@_old_pgfpointanchor \pgfpointanchor
-% \end{macrocode}
%
% \bigskip
% \begin{macrocode}
@@ -970,6 +965,7 @@ version 2005/12/01 or later.
\bool_new:N \g_@@_rotate_bool
% \end{macrocode}
%
+%
% \bigskip
% The following boolean will be raise then the command |\rotate| is used with
% the key |c|.
@@ -1110,12 +1106,12 @@ version 2005/12/01 or later.
% The following command will be able to reconstruct the full name of the current
% command or environment (despite its name which contains \textsl{env}). This
% command must \emph{not} be protected since it will be used in error messages
-% and we have to use |\str_if_eq:VnTF| and not |\tl_if_eq:NnTF| because we need
+% and we have to use |\str_if_eq:onTF| and not |\tl_if_eq:NnTF| because we need
% to be fully expandable).
% \begin{macrocode}
\cs_new:Npn \@@_full_name_env:
{
- \str_if_eq:VnTF \g_@@_com_or_env_str { command }
+ \str_if_eq:onTF \g_@@_com_or_env_str { command }
{ command \space \c_backslash_str \g_@@_name_env_str }
{ environment \space \{ \g_@@_name_env_str \} }
}
@@ -1163,6 +1159,14 @@ version 2005/12/01 or later.
\bool_new:N \l_@@_in_code_after_bool
% \end{macrocode}
%
+%
+% \bigskip
+% The following parameter will be raised when a block content a |&| in its
+% content (=label).
+% \begin{macrocode}
+\bool_new:N \l_@@_ampersand_bool
+% \end{macrocode}
+%
% \bigskip
% The counters |\l_@@_old_iRow_int| and |\l_@@_old_jCol_int| will be used to
% save the values of the potential LaTeX counters |iRow| and |jCol|. These LaTeX
@@ -1275,11 +1279,21 @@ version 2005/12/01 or later.
% The L3 programming layer provides scratch dimensions |\l_tmpa_dim| and
% |\l_tmpb_dim|. We creates two more in the same spirit.
% \begin{macrocode}
-\dim_zero_new:N \l_@@_tmpc_dim
-\dim_zero_new:N \l_@@_tmpd_dim
+\dim_new:N \l_@@_tmpc_dim
+\dim_new:N \l_@@_tmpd_dim
% \end{macrocode}
%
% \bigskip
+% \begin{macrocode}
+\dim_new:N \g_@@_dp_row_zero_dim
+\dim_new:N \g_@@_ht_row_zero_dim
+\dim_new:N \g_@@_ht_row_one_dim
+\dim_new:N \g_@@_dp_ante_last_row_dim
+\dim_new:N \g_@@_ht_last_row_dim
+\dim_new:N \g_@@_dp_last_row_dim
+% \end{macrocode}
+%
+% \bigskip
% Some cells will be declared as ``empty'' (for example a cell with an
% instruction |\Cdots|).
% \begin{macrocode}
@@ -1475,6 +1489,7 @@ version 2005/12/01 or later.
\str_new:N \l_@@_hpos_block_str
\str_set:Nn \l_@@_hpos_block_str { c }
\bool_new:N \l_@@_hpos_of_block_cap_bool
+\bool_new:N \l_@@_p_block_bool
% \end{macrocode}
%
% \medskip
@@ -1485,10 +1500,11 @@ version 2005/12/01 or later.
% \end{macrocode}
%
% \medskip
-% For the vertical position, the possible values are |c|, |t| and |b|.
+% For the vertical position, the possible values are |c|, |t|, |b|, |T| and |B|
+% (but |\l_@@_vpos_block_str| will remain empty if the user doesn't use a key
+% for the vertical position).
% \begin{macrocode}
\str_new:N \l_@@_vpos_block_str
-\str_set:Nn \l_@@_vpos_block_str { c }
% \end{macrocode}
%
%
@@ -1761,6 +1777,14 @@ version 2005/12/01 or later.
\newcounter { tabularnote }
% \end{macrocode}
%
+% We want to avoid error messages for duplicate labels when the package
+% \pkg{hyperref} is used. That's why we will count all the tabular notes of the
+% whole document with |\g_@@_tabularnote_int|.
+% \begin{macrocode}
+\int_new:N \g_@@_tabularnote_int
+\cs_set:Npn \theHtabularnote { \int_use:N \g_@@_tabularnote_int }
+% \end{macrocode}
+%
% \begin{macrocode}
\seq_new:N \g_@@_notes_seq
\seq_new:N \g_@@_notes_in_caption_seq
@@ -1986,7 +2010,12 @@ version 2005/12/01 or later.
% \begin{macrocode}
\int_gdecr:N \c@tabularnote
\int_set_eq:NN \l_tmpa_int \c@tabularnote
- \refstepcounter { tabularnote }
+% \end{macrocode}
+% The following line is only to avoid error messages for multipy defined labels
+% when the package \pkg{hyperref} is used.
+% \begin{macrocode}
+ \int_gincr:N \g_@@_tabularnote_int
+ \refstepcounter { tabularnote }
\int_compare:nNnT \l_tmpa_int = \c@tabularnote
{ \int_gincr:N \c@tabularnote }
\seq_clear:N \l_@@_notes_labels_seq
@@ -2261,6 +2290,12 @@ version 2005/12/01 or later.
\tl_new:N \l_@@_baseline_tl
\tl_set:Nn \l_@@_baseline_tl { c }
% \end{macrocode}
+%
+% \bigskip
+% The following parameter corresponds to the key |ampersand-in-blocks|
+% \begin{macrocode}
+\bool_new:N \l_@@_amp_in_blocks_bool
+% \end{macrocode}
%
% \bigskip
% The flag |\l_@@_exterior_arraycolsep_bool| corresponds to the option
@@ -2414,7 +2449,7 @@ version 2005/12/01 or later.
%
% \bigskip
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / xdots }
+\keys_define:nn { nicematrix / xdots }
{
shorten-start .code:n =
\hook_gput_code:nnn { begindocument } { . }
@@ -2474,7 +2509,7 @@ version 2005/12/01 or later.
%
% \bigskip
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / rules }
+\keys_define:nn { nicematrix / rules }
{
color .tl_set:N = \l_@@_rules_color_tl ,
color .value_required:n = true ,
@@ -2486,12 +2521,15 @@ version 2005/12/01 or later.
%
%
% \bigskip
-% First, we define a set of keys ``|NiceMatrix / Global|'' which will be used
+% First, we define a set of keys ``|nicematrix / Global|'' which will be used
% (with the mechanism of |.inherit:n|) by other sets of keys.
%
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / Global }
+\keys_define:nn { nicematrix / Global }
{
+ ampersand-in-blocks .bool_set:N = \l_@@_amp_in_blocks_bool ,
+ ampersand-in-blocks .default:n = true ,
+ &-in-blocks .meta:n = ampersand-in-blocks ,
no-cell-nodes .code:n =
\cs_set_protected:Npn \@@_node_for_cell:
{ \box_use_drop:N \l_@@_cell_box } ,
@@ -2499,7 +2537,7 @@ version 2005/12/01 or later.
rounded-corners .dim_set:N = \l_@@_tab_rounded_corners_dim ,
rounded-corners .default:n = 4 pt ,
custom-line .code:n = \@@_custom_line:n { #1 } ,
- rules .code:n = \keys_set:nn { NiceMatrix / rules } { #1 } ,
+ rules .code:n = \keys_set:nn { nicematrix / rules } { #1 } ,
rules .value_required:n = true ,
standard-cline .bool_set:N = \l_@@_standard_cline_bool ,
standard-cline .default:n = true ,
@@ -2513,7 +2551,7 @@ version 2005/12/01 or later.
cell-space-bottom-limit = #1 ,
} ,
cell-space-limits .value_required:n = true ,
- xdots .code:n = \keys_set:nn { NiceMatrix / xdots } { #1 } ,
+ xdots .code:n = \keys_set:nn { nicematrix / xdots } { #1 } ,
light-syntax .code:n =
\bool_set_true:N \l_@@_light_syntax_bool
\bool_set_false:N \l_@@_light_syntax_expanded_bool ,
@@ -2606,7 +2644,7 @@ version 2005/12/01 or later.
% We define a set of keys used by the environments of \pkg{nicematrix} (but not
% by the command |\NiceMatrixOptions|).
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / Env }
+\keys_define:nn { nicematrix / environments }
{
corners .clist_set:N = \l_@@_corners_clist ,
corners .default:n = { NW , SW , NE , SE } ,
@@ -2660,7 +2698,7 @@ version 2005/12/01 or later.
% \end{macrocode}
%
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / notes }
+\keys_define:nn { nicematrix / notes }
{
para .bool_set:N = \l_@@_notes_para_bool ,
para .default:n = true ,
@@ -2703,7 +2741,7 @@ version 2005/12/01 or later.
% \end{macrocode}
%
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / delimiters }
+\keys_define:nn { nicematrix / delimiters }
{
max-width .bool_set:N = \l_@@_delimiters_max_width_bool ,
max-width .default:n = true ,
@@ -2716,63 +2754,63 @@ version 2005/12/01 or later.
% We begin the construction of the major sets of keys (used by the different
% user commands and environments).
% \begin{macrocode}
-\keys_define:nn { NiceMatrix }
+\keys_define:nn { nicematrix }
{
NiceMatrixOptions .inherit:n =
- { NiceMatrix / Global } ,
- NiceMatrixOptions / xdots .inherit:n = NiceMatrix / xdots ,
- NiceMatrixOptions / rules .inherit:n = NiceMatrix / rules ,
- NiceMatrixOptions / notes .inherit:n = NiceMatrix / notes ,
- NiceMatrixOptions / sub-matrix .inherit:n = NiceMatrix / sub-matrix ,
- SubMatrix / rules .inherit:n = NiceMatrix / rules ,
- CodeAfter / xdots .inherit:n = NiceMatrix / xdots ,
- CodeBefore / sub-matrix .inherit:n = NiceMatrix / sub-matrix ,
- CodeAfter / sub-matrix .inherit:n = NiceMatrix / sub-matrix ,
+ { nicematrix / Global } ,
+ NiceMatrixOptions / xdots .inherit:n = nicematrix / xdots ,
+ NiceMatrixOptions / rules .inherit:n = nicematrix / rules ,
+ NiceMatrixOptions / notes .inherit:n = nicematrix / notes ,
+ NiceMatrixOptions / sub-matrix .inherit:n = nicematrix / sub-matrix ,
+ SubMatrix / rules .inherit:n = nicematrix / rules ,
+ CodeAfter / xdots .inherit:n = nicematrix / xdots ,
+ CodeBefore / sub-matrix .inherit:n = nicematrix / sub-matrix ,
+ CodeAfter / sub-matrix .inherit:n = nicematrix / sub-matrix ,
NiceMatrix .inherit:n =
{
- NiceMatrix / Global ,
- NiceMatrix / Env ,
+ nicematrix / Global ,
+ nicematrix / environments ,
} ,
- NiceMatrix / xdots .inherit:n = NiceMatrix / xdots ,
- NiceMatrix / rules .inherit:n = NiceMatrix / rules ,
+ NiceMatrix / xdots .inherit:n = nicematrix / xdots ,
+ NiceMatrix / rules .inherit:n = nicematrix / rules ,
NiceTabular .inherit:n =
{
- NiceMatrix / Global ,
- NiceMatrix / Env
+ nicematrix / Global ,
+ nicematrix / environments
} ,
- NiceTabular / xdots .inherit:n = NiceMatrix / xdots ,
- NiceTabular / rules .inherit:n = NiceMatrix / rules ,
- NiceTabular / notes .inherit:n = NiceMatrix / notes ,
+ NiceTabular / xdots .inherit:n = nicematrix / xdots ,
+ NiceTabular / rules .inherit:n = nicematrix / rules ,
+ NiceTabular / notes .inherit:n = nicematrix / notes ,
NiceArray .inherit:n =
{
- NiceMatrix / Global ,
- NiceMatrix / Env ,
+ nicematrix / Global ,
+ nicematrix / environments ,
} ,
- NiceArray / xdots .inherit:n = NiceMatrix / xdots ,
- NiceArray / rules .inherit:n = NiceMatrix / rules ,
+ NiceArray / xdots .inherit:n = nicematrix / xdots ,
+ NiceArray / rules .inherit:n = nicematrix / rules ,
pNiceArray .inherit:n =
{
- NiceMatrix / Global ,
- NiceMatrix / Env ,
+ nicematrix / Global ,
+ nicematrix / environments ,
} ,
- pNiceArray / xdots .inherit:n = NiceMatrix / xdots ,
- pNiceArray / rules .inherit:n = NiceMatrix / rules ,
+ pNiceArray / xdots .inherit:n = nicematrix / xdots ,
+ pNiceArray / rules .inherit:n = nicematrix / rules ,
}
% \end{macrocode}
%
%
% \bigskip
% We finalise the definition of the set of keys
-% ``|NiceMatrix / NiceMatrixOptions|'' with the options specific to
+% ``|nicematrix / NiceMatrixOptions|'' with the options specific to
% |\NiceMatrixOptions|.
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / NiceMatrixOptions }
+\keys_define:nn { nicematrix / NiceMatrixOptions }
{
delimiters / color .tl_set:N = \l_@@_delimiters_color_tl ,
delimiters / color .value_required:n = true ,
delimiters / max-width .bool_set:N = \l_@@_delimiters_max_width_bool ,
delimiters / max-width .default:n = true ,
- delimiters .code:n = \keys_set:nn { NiceMatrix / delimiters } { #1 } ,
+ delimiters .code:n = \keys_set:nn { nicematrix / delimiters } { #1 } ,
delimiters .value_required:n = true ,
width .dim_set:N = \l_@@_width_dim ,
width .value_required:n = true ,
@@ -2820,9 +2858,9 @@ version 2005/12/01 or later.
allow-duplicate-names .code:n =
\@@_msg_redirect_name:nn { Duplicate~name } { none } ,
allow-duplicate-names .value_forbidden:n = true ,
- notes .code:n = \keys_set:nn { NiceMatrix / notes } { #1 } ,
+ notes .code:n = \keys_set:nn { nicematrix / notes } { #1 } ,
notes .value_required:n = true ,
- sub-matrix .code:n = \keys_set:nn { NiceMatrix / sub-matrix } { #1 } ,
+ sub-matrix .code:n = \keys_set:nn { nicematrix / sub-matrix } { #1 } ,
sub-matrix .value_required:n = true ,
matrix / columns-type .tl_set:N = \l_@@_columns_type_tl ,
matrix / columns-type .value_required:n = true ,
@@ -2840,17 +2878,17 @@ version 2005/12/01 or later.
% current TeX group.
% \begin{macrocode}
\NewDocumentCommand \NiceMatrixOptions { m }
- { \keys_set:nn { NiceMatrix / NiceMatrixOptions } { #1 } }
+ { \keys_set:nn { nicematrix / NiceMatrixOptions } { #1 } }
% \end{macrocode}
%
%
% \bigskip
-% We finalise the definition of the set of keys ``|NiceMatrix / NiceMatrix|''.
+% We finalise the definition of the set of keys ``|nicematrix / NiceMatrix|''.
% That set of keys will be used by |{NiceMatrix}|, |{pNiceMatrix}|,
% |{bNiceMatrix}|, etc.
%
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / NiceMatrix }
+\keys_define:nn { nicematrix / NiceMatrix }
{
last-col .code:n = \tl_if_empty:nTF { #1 }
{
@@ -2866,7 +2904,7 @@ version 2005/12/01 or later.
delimiters / color .value_required:n = true ,
delimiters / max-width .bool_set:N = \l_@@_delimiters_max_width_bool ,
delimiters / max-width .default:n = true ,
- delimiters .code:n = \keys_set:nn { NiceMatrix / delimiters } { #1 } ,
+ delimiters .code:n = \keys_set:nn { nicematrix / delimiters } { #1 } ,
delimiters .value_required:n = true ,
small .bool_set:N = \l_@@_small_bool ,
small .value_forbidden:n = true ,
@@ -2877,11 +2915,11 @@ version 2005/12/01 or later.
%
%
% \bigskip
-% We finalise the definition of the set of keys ``|NiceMatrix / NiceArray|''
+% We finalise the definition of the set of keys ``|nicematrix / NiceArray|''
% with the options specific to |{NiceArray}|.
%
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / NiceArray }
+\keys_define:nn { nicematrix / NiceArray }
{
% \end{macrocode}
%
@@ -2903,7 +2941,7 @@ version 2005/12/01 or later.
%
%
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / pNiceArray }
+\keys_define:nn { nicematrix / pNiceArray }
{
first-col .code:n = \int_zero:N \l_@@_first_col_int ,
last-col .code:n = \tl_if_empty:nF {#1}
@@ -2914,7 +2952,7 @@ version 2005/12/01 or later.
delimiters / color .value_required:n = true ,
delimiters / max-width .bool_set:N = \l_@@_delimiters_max_width_bool ,
delimiters / max-width .default:n = true ,
- delimiters .code:n = \keys_set:nn { NiceMatrix / delimiters } { #1 } ,
+ delimiters .code:n = \keys_set:nn { nicematrix / delimiters } { #1 } ,
delimiters .value_required:n = true ,
small .bool_set:N = \l_@@_small_bool ,
small .value_forbidden:n = true ,
@@ -2925,11 +2963,11 @@ version 2005/12/01 or later.
% \end{macrocode}
%
% \bigskip
-% We finalise the definition of the set of keys ``|NiceMatrix / NiceTabular|''
+% We finalise the definition of the set of keys ``|nicematrix / NiceTabular|''
% with the options specific to |{NiceTabular}|.
%
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / NiceTabular }
+\keys_define:nn { nicematrix / NiceTabular }
{
% \end{macrocode}
% The dimension |width| will be used if at least a column of type |X| is used.
@@ -2938,7 +2976,7 @@ version 2005/12/01 or later.
width .code:n = \dim_set:Nn \l_@@_width_dim { #1 }
\bool_set_true:N \l_@@_width_used_bool ,
width .value_required:n = true ,
- notes .code:n = \keys_set:nn { NiceMatrix / notes } { #1 } ,
+ notes .code:n = \keys_set:nn { nicematrix / notes } { #1 } ,
tabularnote .tl_gset:N = \g_@@_tabularnote_tl ,
tabularnote .value_required:n = true ,
caption .tl_set:N = \l_@@_caption_tl ,
@@ -2965,18 +3003,18 @@ version 2005/12/01 or later.
% We \emph{must} put the following instructions \emph{after} the :
%
% \begin{verbatim}
-% CodeAfter / sub-matrix .inherit:n = NiceMatrix / sub-matrix
+% CodeAfter / sub-matrix .inherit:n = nicematrix / sub-matrix
% \end{verbatim}
%
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / CodeAfter }
+\keys_define:nn { nicematrix / CodeAfter }
{
delimiters / color .tl_set:N = \l_@@_delimiters_color_tl ,
delimiters / color .value_required:n = true ,
- rules .code:n = \keys_set:nn { NiceMatrix / rules } { #1 } ,
+ rules .code:n = \keys_set:nn { nicematrix / rules } { #1 } ,
rules .value_required:n = true ,
- xdots .code:n = \keys_set:nn { NiceMatrix / xdots } { #1 } ,
- sub-matrix .code:n = \keys_set:nn { NiceMatrix / sub-matrix } { #1 } ,
+ xdots .code:n = \keys_set:nn { nicematrix / xdots } { #1 } ,
+ sub-matrix .code:n = \keys_set:nn { nicematrix / sub-matrix } { #1 } ,
sub-matrix .value_required:n = true ,
unknown .code:n = \@@_error:n { Unknown~key~for~CodeAfter }
}
@@ -3475,10 +3513,10 @@ version 2005/12/01 or later.
% \end{macrocode}
% |\l_@@_baseline_tl| may have the value |t|, |c| or |b|. However, if the value
% is |b|, we compose the |\array| (of \pkg{array}) with the option |t| and the
-% right translation will be done further. Remark that |\str_if_eq:VnTF| is
+% right translation will be done further. Remark that |\str_if_eq:onTF| is
% fully expandable and we need something fully expandable here.
% \begin{macrocode}
- [ \str_if_eq:VnTF \l_@@_baseline_tl c c t ]
+ [ \str_if_eq:onTF \l_@@_baseline_tl c c t ]
}
% \end{macrocode}
%
@@ -3554,7 +3592,7 @@ version 2005/12/01 or later.
% \begin{macrocode}
\cs_new_protected:Npn \@@_everycr_i:
{
- \bool_if:NT \c_@@_tagging_array_bool
+ \bool_if:NT \c_@@_testphase_table_bool
{
\tbl_if_row_was_started:T { \UseTaggingSocket { tbl / row / end } }
\tbl_update_cell_data_for_next_row:
@@ -3587,10 +3625,7 @@ version 2005/12/01 or later.
{
\int_compare:nNnF \c@iRow = \l_@@_last_row_int
% \end{macrocode}
-% The command |\CT@arc@| is a command of \pkg{colortbl} which sets the color of
-% the rules in the array. The package \pkg{nicematrix} uses it even if
-% \pkg{colortbl} is not loaded. We use a TeX group in order to limit the scope
-% of |\CT@arc@|.
+%
% \begin{macrocode}
{ \hrule height \arrayrulewidth width \c_zero_dim }
}
@@ -3636,21 +3671,21 @@ version 2005/12/01 or later.
% \bigskip
% \begin{macrocode}
\cs_new_protected:Npn \@@_redefine_everycr: { \everycr { \@@_everycr: } }
-\hook_gput_code:nnn { begindocument } { . }
- {
- \IfPackageLoadedTF { colortbl }
- {
- \cs_set_protected:Npn \@@_redefine_everycr:
- {
- \CT@everycr
- {
- \noalign { \cs_gset_eq:NN \CT@row@color \prg_do_nothing: }
- \@@_everycr:
- }
- }
- }
- { }
- }
+ \hook_gput_code:nnn { begindocument } { . }
+ {
+ \IfPackageLoadedTF { colortbl }
+ {
+ \cs_set_protected:Npn \@@_redefine_everycr:
+ {
+ \CT@everycr
+ {
+ \noalign { \cs_gset_eq:NN \CT@row@color \prg_do_nothing: }
+ \@@_everycr:
+ }
+ }
+ }
+ { }
+ }
% \end{macrocode}
%
% If \pkg{booktabs} is loaded, we have to patch the macro |\@BTnormal| which is
@@ -3688,16 +3723,11 @@ version 2005/12/01 or later.
% \begin{macrocode}
\cs_new_protected:Npn \@@_some_initialization:
{
- \dim_gzero_new:N \g_@@_dp_row_zero_dim
\dim_gset:Nn \g_@@_dp_row_zero_dim { \box_dp:N \@arstrutbox }
- \dim_gzero_new:N \g_@@_ht_row_zero_dim
\dim_gset:Nn \g_@@_ht_row_zero_dim { \box_ht:N \@arstrutbox }
- \dim_gzero_new:N \g_@@_ht_row_one_dim
- \dim_gset:Nn \g_@@_ht_row_one_dim { \box_ht:N \@arstrutbox }
- \dim_gzero_new:N \g_@@_dp_ante_last_row_dim
- \dim_gzero_new:N \g_@@_ht_last_row_dim
+ \dim_gset_eq:NN \g_@@_ht_row_one_dim \g_@@_ht_row_zero_dim
+ \dim_gzero:N \g_@@_dp_ante_last_row_dim
\dim_gset:Nn \g_@@_ht_last_row_dim { \box_ht:N \@arstrutbox }
- \dim_gzero_new:N \g_@@_dp_last_row_dim
\dim_gset:Nn \g_@@_dp_last_row_dim { \box_dp:N \@arstrutbox }
}
% \end{macrocode}
@@ -3735,7 +3765,7 @@ version 2005/12/01 or later.
\cs_set_nopar:Npn \arraystretch { 0.47 }
\dim_set:Nn \arraycolsep { 1.45 pt }
% \end{macrocode}
-% By default, |\@@_small_scripstyle:| is null.
+% By default, |\@@_tuning_key_small:| is no-op.
% \begin{macrocode}
\cs_set_eq:NN \@@_tuning_key_small: \scriptstyle
}
@@ -3763,9 +3793,9 @@ version 2005/12/01 or later.
{
\cs_set_nopar:Npn \ar@ialign
{
- \tbl_init_cell_data_for_table:
+ \bool_if:NT \c_@@_testphase_table_bool \tbl_init_cell_data_for_table:
\@@_redefine_everycr:
- \tabskip = \c_zero_skip
+ \dim_zero:N \tabskip
\@@_some_initialization:
% \end{macrocode}
%
@@ -3786,7 +3816,7 @@ version 2005/12/01 or later.
\cs_set_nopar:Npn \ialign
{
\@@_redefine_everycr:
- \tabskip = \c_zero_skip
+ \dim_zero:N \tabskip
\@@_some_initialization:
\cs_set_eq:NN \ialign \@@_old_ialign:
\halign
@@ -4061,7 +4091,9 @@ version 2005/12/01 or later.
% |\hbox_set_end:| corresponding to this |\hbox_set:Nw| will be in the second
% part of the environment (and the closing |\c_math_toggle_token| also).
% \begin{macrocode}
- \hbox_set:Nw \l_@@_the_array_box
+ \hbox_set:Nw \l_@@_the_array_box
+ \bool_if:NT \c_@@_testphase_table_bool
+ { \UseTaggingSocket { tbl / hmode / begin } }
% \end{macrocode}
%
% \begin{macrocode}
@@ -4101,7 +4133,7 @@ version 2005/12/01 or later.
% \section{The \textbackslash CodeBefore}
%
% The following command will be executed if the |\CodeBefore| has to be actually
-% executed (that commmand will be used only once and is present only for legibility).
+% executed (that commmand will be used only once and is present alone only for legibility).
% \begin{macrocode}
\cs_new_protected:Npn \@@_pre_code_before:
{
@@ -4250,11 +4282,11 @@ version 2005/12/01 or later.
%
% \bigskip
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / CodeBefore }
+\keys_define:nn { nicematrix / CodeBefore }
{
create-cell-nodes .bool_gset:N = \g_@@_recreate_cell_nodes_bool ,
create-cell-nodes .default:n = true ,
- sub-matrix .code:n = \keys_set:nn { NiceMatrix / sub-matrix } { #1 } ,
+ sub-matrix .code:n = \keys_set:nn { nicematrix / sub-matrix } { #1 } ,
sub-matrix .value_required:n = true ,
delimiters / color .tl_set:N = \l_@@_delimiters_color_tl ,
delimiters / color .value_required:n = true ,
@@ -4266,7 +4298,7 @@ version 2005/12/01 or later.
% \begin{macrocode}
\NewDocumentCommand \@@_CodeBefore_keys: { O { } }
{
- \keys_set:nn { NiceMatrix / CodeBefore } { #1 }
+ \keys_set:nn { nicematrix / CodeBefore } { #1 }
\@@_CodeBefore:w
}
% \end{macrocode}
@@ -4426,6 +4458,7 @@ version 2005/12/01 or later.
\tl_gset:Nn \g_@@_left_delim_tl { #1 }
\tl_gset:Nn \g_@@_right_delim_tl { #2 }
\tl_gset:Nn \g_@@_user_preamble_tl { #4 }
+ \tl_if_empty:NT \g_@@_user_preamble_tl { \@@_fatal:n { empty~preamble } }
% \end{macrocode}
%
%
@@ -4526,8 +4559,8 @@ version 2005/12/01 or later.
% |{NiceArray}|, we have the options |t|, |c|, |b| and |baseline|.
% \begin{macrocode}
\bool_if:NTF \g_@@_delims_bool
- { \keys_set:nn { NiceMatrix / pNiceArray } }
- { \keys_set:nn { NiceMatrix / NiceArray } }
+ { \keys_set:nn { nicematrix / pNiceArray } }
+ { \keys_set:nn { nicematrix / NiceArray } }
{ #3 , #5 }
% \end{macrocode}
%
@@ -4545,7 +4578,7 @@ version 2005/12/01 or later.
% command |\@@_CodeBefore_Body:w|. After that job, the command |\@@_CodeBefore_Body:w|
% will go on with |\@@_pre_array:|.
% \begin{macrocode}
- \IfBooleanTF { #6 } \@@_CodeBefore_Body:w \@@_pre_array:
+ \bool_if:nTF { #6 } \@@_CodeBefore_Body:w \@@_pre_array:
}
% \end{macrocode}
%
@@ -4558,6 +4591,18 @@ version 2005/12/01 or later.
\c_math_toggle_token
\skip_horizontal:N \l_@@_right_margin_dim
\skip_horizontal:N \l_@@_extra_right_margin_dim
+
+ % awful workaround
+ \int_compare:nNnT \g_@@_col_total_int = \c_one_int
+ {
+ \dim_compare:nNnT \l_@@_columns_width_dim > \c_zero_dim
+ {
+ \skip_horizontal:N - \l_@@_columns_width_dim
+ \bool_if:NTF \l_@@_tabular_bool
+ { \skip_horizontal:n { - 2 \tabcolsep } }
+ { \skip_horizontal:n { - 2 \arraycolsep } }
+ }
+ }
\hbox_set_end:
% \end{macrocode}
% End of the construction of the array (in the box |\l_@@_the_array_box|).
@@ -4798,7 +4843,7 @@ version 2005/12/01 or later.
%
% \bigskip
% The final user provides a preamble, but we must convert that preamble into a
-% preamble that will be given to |{array}| (of the package \pkg{array}).
+% preamble which will be given to |{array}| (of the package \pkg{array}).
%
% \bigskip
% The preamble given by the final user is stored in |\g_@@_user_preamble_tl|.
@@ -4872,6 +4917,12 @@ version 2005/12/01 or later.
{
\IfPackageLoadedTF { colortbl }
{
+% \end{macrocode}
+% When \pkg{colortbl} is used, we have to catch the tokens |\columncolor| in the
+% preamble because, otherwise, \pkg{colortbl} will catch them and the colored
+% panels won't be drawn by \pkg{nicematrix} but by \pkg{colortbl} (with an
+% output which is not perfect).
+% \begin{macrocode}
\regex_const:Nn \c_@@_columncolor_regex { \c { columncolor } }
\cs_new_protected:Npn \@@_replace_columncolor:
{
@@ -5186,7 +5237,7 @@ version 2005/12/01 or later.
%
%
% \medskip
-% For |p|, |b| and |m|.
+% For |p| but also |b| and |m|.
% \begin{macrocode}
\cs_new:Npn \@@_p #1
{
@@ -5262,7 +5313,7 @@ version 2005/12/01 or later.
{ \tl_clear:N \exp_not:N \l_@@_hpos_cell_tl }
{
\cs_set_nopar:Npn \exp_not:N \l_@@_hpos_cell_tl
- { \str_lowercase:V \l_@@_hpos_col_str }
+ { \str_lowercase:o \l_@@_hpos_col_str }
}
\str_case:on \l_@@_hpos_col_str
{
@@ -5288,7 +5339,7 @@ version 2005/12/01 or later.
% \end{macrocode}
% We use |\str_lowercase:n| to convert |R| to |r|, etc.
% \begin{macrocode}
- { \str_lowercase:V \l_@@_hpos_col_str }
+ { \str_lowercase:o \l_@@_hpos_col_str }
}
}
% \end{macrocode}
@@ -5341,6 +5392,8 @@ version 2005/12/01 or later.
% mono-column blocks.
% \begin{macrocode}
\dim_set:Nn \l_@@_col_width_dim { #2 }
+ \bool_if:NT \c_@@_testphase_table_bool
+ { \tag_struct_begin:n { tag = Div } }
\@@_cell_begin:w
% \end{macrocode}
% We use the form |\minipage|--|\endminipage| (|\varwidth|--|\endvarwidth|) for
@@ -5355,6 +5408,7 @@ version 2005/12/01 or later.
\vrule height \box_ht:N \@arstrutbox width \c_zero_dim
\everypar { }
}
+ \bool_if:NT \c_@@_testphase_table_bool \tagpdfparaOn
% \end{macrocode}
% Now, the potential code for the horizontal position of the content of the cell
% (|\centering|, |\raggedright|, |\RaggedRight|, etc.).
@@ -5381,28 +5435,19 @@ version 2005/12/01 or later.
% \begin{macrocode}
#4
\@@_cell_end:
+ \bool_if:NT \c_@@_testphase_table_bool \tag_struct_end:
}
}
}
% \end{macrocode}
%
% \bigskip
-%
% \begin{macrocode}
\str_new:N \c_@@_ignorespaces_str
\str_set:Nx \c_@@_ignorespaces_str { \ignorespaces }
\str_remove_all:Nn \c_@@_ignorespaces_str { ~ }
-% \end{macrocode}
-%
-% \bigskip
-% In order to test whether a cell is empty, we test whether it begins by
-% |\ignorespaces\unskip|. However, in some circunstancies, for example when
-% |\collectcell| of \pkg{collcell} is used, the cell does not begin with
-% |\ignorespaces|. In that case, we consider as not empty...
-%
-% First, we test if the next token is |\ignorespaces| and it's not very easy...
-% \begin{macrocode}
-\cs_new_protected:Npn \@@_test_if_empty: { \peek_after:Nw \@@_test_if_empty_i: }
+\cs_new_protected:Npn \@@_test_if_empty:
+ { \peek_after:Nw \@@_test_if_empty_i: }
\cs_new_protected:Npn \@@_test_if_empty_i:
{
\str_set:Nx \l_tmpa_str { \token_to_meaning:N \l_peek_token }
@@ -5410,17 +5455,40 @@ version 2005/12/01 or later.
{ \@@_test_if_empty:w }
}
\cs_new_protected:Npn \@@_test_if_empty:w \ignorespaces
- {
- \peek_meaning:NT \unskip
- {
- \tl_gput_right:Nn \g_@@_cell_after_hook_tl
- {
- \box_set_wd:Nn \l_@@_cell_box \c_zero_dim
- \skip_horizontal:N \l_@@_col_width_dim
- }
+ { \peek_after:Nw \@@_test_if_empty_ii: }
+% \end{macrocode}
+%
+% \bigskip
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_nullify_cell:
+ {
+ \tl_gput_right:Nn \g_@@_cell_after_hook_tl
+ {
+ \box_set_wd:Nn \l_@@_cell_box \c_zero_dim
+ \skip_horizontal:N \l_@@_col_width_dim
}
}
% \end{macrocode}
+%
+% \bigskip
+% \begin{macrocode}
+\bool_if:NTF \c_@@_tagging_array_bool
+ {
+ \cs_new_protected:Npn \@@_test_if_empty_ii:
+ { \peek_meaning:NT \textonly@unskip \@@_nullify_cell: }
+ }
+% \end{macrocode}
+% In the old version of \pkg{array}, we test whether it begins by
+% |\ignorespaces\unskip|. However, in some circunstancies, for example when
+% |\collectcell| of \pkg{collcell} is used, the cell does not begin with
+% |\ignorespaces|. In that case, we consider as not empty...
+% First, we test if the next token is |\ignorespaces| and it's not very easy...
+% \begin{macrocode}
+ {
+ \cs_new_protected:Npn \@@_test_if_empty_ii:
+ { \peek_meaning:NT \unskip \@@_nullify_cell: }
+ }
+% \end{macrocode}
%
%
% \begin{macrocode}
@@ -6032,7 +6100,9 @@ version 2005/12/01 or later.
\multispan { #1 }
\cs_set_eq:NN \@@_update_max_cell_width: \prg_do_nothing:
\begingroup
- \cs_set:Npn \@addamp
+ \bool_if:NT \c_@@_testphase_table_bool
+ { \tbl_update_multicolumn_cell_data:n { #1 } }
+ \cs_set_nopar:Npn \@addamp
{ \legacy_if:nTF { @firstamp } { \@firstampfalse } { \@preamerr 5 } }
% \end{macrocode}
%
@@ -6051,6 +6121,8 @@ version 2005/12/01 or later.
\exp_args:No \@mkpream \g_@@_preamble_tl
\@addtopreamble \@empty
\endgroup
+ \bool_if:NT \c_@@_testphase_table_bool
+ { \UseTaggingSocket { tbl / colspan } { #1 } }
% \end{macrocode}
%
% \medskip
@@ -6081,10 +6153,28 @@ version 2005/12/01 or later.
}
% \end{macrocode}
%
+% \bigskip
+% We want |\cellcolor| to be available in |\multicolumn| because |\cellcolor| of
+% \pkg{colortbl} is available in |\multicolumn|.
+% \begin{macrocode}
+ \RenewDocumentCommand \cellcolor { O { } m }
+ {
+ \@@_test_color_inside:
+ \tl_gput_right:Nx \g_@@_pre_code_before_tl
+ {
+ \@@_rectanglecolor [ ##1 ]
+ { \exp_not:n { ##2 } }
+ { \int_use:N \c@iRow - \int_use:N \c@jCol }
+ { \int_use:N \c@iRow - \int_eval:n { \c@jCol + #1 } }
+ }
+ \ignorespaces
+ }
+% \end{macrocode}
+%
% \medskip
% The following lines were in the original definition of |\multicolumn|.
% \begin{macrocode}
- \cs_set:Npn \@sharp { #3 }
+ \cs_set_nopar:Npn \@sharp { #3 }
\@arstrut
\@preamble
\null
@@ -6736,7 +6826,7 @@ version 2005/12/01 or later.
}
}
{
- \@@_create_col_nodes:
+ \@@_create_col_nodes:
\endarray
}
% \end{macrocode}
@@ -6784,7 +6874,7 @@ version 2005/12/01 or later.
% \begin{macrocode}
{
\@@_create_col_nodes:
- \endarray
+ \endarray
}
% \end{macrocode}
%
@@ -6804,7 +6894,7 @@ version 2005/12/01 or later.
\tl_set_rescan:Nno \l_@@_end_of_row_tl { } \l_@@_end_of_row_tl
\bool_if:NTF \l_@@_light_syntax_expanded_bool
\seq_set_split:Nee
- \seq_set_split:NVn
+ \seq_set_split:Non
\l_@@_rows_seq \l_@@_end_of_row_tl { #1 }
% \end{macrocode}
% We delete the last row if it is empty.
@@ -6913,7 +7003,7 @@ version 2005/12/01 or later.
% The command |\@@_create_col_nodes:| will construct a special last row.
% That last row is a false row used to create the |col| nodes and to fix the
% width of the columns (when the array is constructed with an option which
-% specifies the width of the columns).
+% specifies the width of the columns such as |columns-width|).
% \begin{macrocode}
\cs_new:Npn \@@_create_col_nodes:
{
@@ -7080,7 +7170,7 @@ version 2005/12/01 or later.
{ \skip_gset:Nn \g_tmpa_skip { 0 pt~plus 1 fill } }
\skip_horizontal:N \g_tmpa_skip
\int_gincr:N \g_tmpa_int
- \bool_lazy_any:nF % modified 2023/12/13
+ \bool_lazy_any:nF
{
\g_@@_delims_bool
\l_@@_tabular_bool
@@ -7160,7 +7250,7 @@ version 2005/12/01 or later.
\endpgfpicture
}
}
- \cr
+ % \cr
}
% \end{macrocode}
%
@@ -7415,7 +7505,7 @@ version 2005/12/01 or later.
\bool_set_true:N \l_@@_last_col_without_value_bool
\int_set:Nn \l_@@_last_col_int { -1 }
}
- \keys_set:nn { NiceMatrix / NiceMatrix } { ##1 }
+ \keys_set:nn { nicematrix / NiceMatrix } { ##1 }
\@@_begin_of_NiceMatrix:nV { #1 } \l_@@_columns_type_tl
}
{ \use:c { end #1 NiceArray } }
@@ -7433,7 +7523,7 @@ version 2005/12/01 or later.
\bool_set_true:N \l_@@_last_col_without_value_bool
\int_set:Nn \l_@@_last_col_int { -1 }
}
- \keys_set:nn { NiceMatrix / NiceMatrix } { #1 }
+ \keys_set:nn { nicematrix / NiceMatrix } { #1 }
\bool_lazy_or:nnT
{ \clist_if_empty_p:N \l_@@_vlines_clist }
{ \l_@@_except_borders_bool }
@@ -7464,7 +7554,7 @@ version 2005/12/01 or later.
\dim_compare:nNnT \l_@@_width_dim = \c_zero_dim
{ \dim_set_eq:NN \l_@@_width_dim \linewidth }
\str_gset:Nn \g_@@_name_env_str { NiceTabular }
- \keys_set:nn { NiceMatrix / NiceTabular } { #1 , #3 }
+ \keys_set:nn { nicematrix / NiceTabular } { #1 , #3 }
\tl_if_empty:NF \l_@@_short_caption_tl
{
\tl_if_empty:NT \l_@@_caption_tl
@@ -7492,7 +7582,11 @@ version 2005/12/01 or later.
\@@_settings_for_tabular:
\NiceArray { #2 }
}
- { \endNiceArray }
+ {
+ \endNiceArray
+ \bool_if:NT \c_@@_testphase_table_bool
+ { \UseTaggingSocket { tbl / hmode / end } }
+ }
% \end{macrocode}
%
% \begin{macrocode}
@@ -7512,7 +7606,7 @@ version 2005/12/01 or later.
\str_gset:Nn \g_@@_name_env_str { NiceTabularX }
\dim_zero_new:N \l_@@_width_dim
\dim_set:Nn \l_@@_width_dim { #1 }
- \keys_set:nn { NiceMatrix / NiceTabular } { #2 , #4 }
+ \keys_set:nn { nicematrix / NiceTabular } { #2 , #4 }
\@@_settings_for_tabular:
\NiceArray { #3 }
}
@@ -7529,7 +7623,7 @@ version 2005/12/01 or later.
{
\str_gset:Nn \g_@@_name_env_str { NiceTabular* }
\dim_set:Nn \l_@@_tabular_width_dim { #1 }
- \keys_set:nn { NiceMatrix / NiceTabular } { #2 , #4 }
+ \keys_set:nn { nicematrix / NiceTabular } { #2 , #4 }
\@@_settings_for_tabular:
\NiceArray { #3 }
}
@@ -7893,7 +7987,7 @@ version 2005/12/01 or later.
% the |\CodeBefore.|
% \begin{macrocode}
\NewDocumentCommand \@@_CodeAfter_keys: { O { } }
- { \keys_set:nn { NiceMatrix / CodeAfter } { #1 } }
+ { \keys_set:nn { nicematrix / CodeAfter } { #1 } }
% \end{macrocode}
%
%
@@ -7982,7 +8076,7 @@ version 2005/12/01 or later.
%
% \bigskip
% We define a new \textsc{pgf} shape for the diag nodes because we want to
-% provide a anchor called |.5| for those nodes.
+% provide an anchor called |.5| for those nodes.
% \begin{macrocode}
\pgfdeclareshape { @@_diag_node }
{
@@ -7993,6 +8087,14 @@ version 2005/12/01 or later.
}
\anchor { 5 } { \five }
\anchor { center } { \pgfpointorigin }
+ \anchor { 1 } { \five \pgf@x = 0.2 \pgf@x \pgf@y = 0.2 \pgf@y }
+ \anchor { 2 } { \five \pgf@x = 0.4 \pgf@x \pgf@y = 0.4 \pgf@y }
+ \anchor { 3 } { \five \pgf@x = 0.6 \pgf@x \pgf@y = 0.6 \pgf@y }
+ \anchor { 4 } { \five \pgf@x = 0.8 \pgf@x \pgf@y = 0.8 \pgf@y }
+ \anchor { 6 } { \five \pgf@x = 1.2 \pgf@x \pgf@y = 1.2 \pgf@y }
+ \anchor { 7 } { \five \pgf@x = 1.4 \pgf@x \pgf@y = 1.4 \pgf@y }
+ \anchor { 8 } { \five \pgf@x = 1.6 \pgf@x \pgf@y = 1.6 \pgf@y }
+ \anchor { 9 } { \five \pgf@x = 1.8 \pgf@x \pgf@y = 1.8 \pgf@y }
}
% \end{macrocode}
%
@@ -8494,7 +8596,7 @@ version 2005/12/01 or later.
\int_compare:nNnT { #1 } = \l_@@_last_row_int
{ \color { nicematrix-last-row } }
}
- \keys_set:nn { NiceMatrix / xdots } { #3 }
+ \keys_set:nn { nicematrix / xdots } { #3 }
\tl_if_empty:oF \l_@@_xdots_color_tl { \color { \l_@@_xdots_color_tl } }
\@@_actually_draw_Ldots:
\group_end:
@@ -8589,7 +8691,7 @@ version 2005/12/01 or later.
\int_compare:nNnT { #1 } = \l_@@_last_row_int
{ \color { nicematrix-last-row } }
}
- \keys_set:nn { NiceMatrix / xdots } { #3 }
+ \keys_set:nn { nicematrix / xdots } { #3 }
\tl_if_empty:oF \l_@@_xdots_color_tl { \color { \l_@@_xdots_color_tl } }
\@@_actually_draw_Cdots:
\group_end:
@@ -8717,7 +8819,7 @@ version 2005/12/01 or later.
\int_compare:nNnT { #2 } = \l_@@_last_col_int
{ \color { nicematrix-last-col } }
}
- \keys_set:nn { NiceMatrix / xdots } { #3 }
+ \keys_set:nn { nicematrix / xdots } { #3 }
\tl_if_empty:oF \l_@@_xdots_color_tl
{ \color { \l_@@_xdots_color_tl } }
\@@_actually_draw_Vdots:
@@ -8866,7 +8968,7 @@ version 2005/12/01 or later.
% \begin{macrocode}
\group_begin:
\@@_open_shorten:
- \keys_set:nn { NiceMatrix / xdots } { #3 }
+ \keys_set:nn { nicematrix / xdots } { #3 }
\tl_if_empty:oF \l_@@_xdots_color_tl { \color { \l_@@_xdots_color_tl } }
\@@_actually_draw_Ddots:
\group_end:
@@ -8930,11 +9032,14 @@ version 2005/12/01 or later.
% extremity of the line by modifying the coordinate |\l_@@_x_initial_dim|.
% \begin{macrocode}
{
- \dim_set:Nn \l_@@_y_final_dim
- {
- \l_@@_y_initial_dim +
- ( \l_@@_x_final_dim - \l_@@_x_initial_dim ) *
- \dim_ratio:nn \g_@@_delta_y_one_dim \g_@@_delta_x_one_dim
+ \dim_compare:nNnF \g_@@_delta_x_one_dim = \c_zero_dim
+ {
+ \dim_set:Nn \l_@@_y_final_dim
+ {
+ \l_@@_y_initial_dim +
+ ( \l_@@_x_final_dim - \l_@@_x_initial_dim ) *
+ \dim_ratio:nn \g_@@_delta_y_one_dim \g_@@_delta_x_one_dim
+ }
}
}
}
@@ -8961,7 +9066,7 @@ version 2005/12/01 or later.
% \begin{macrocode}
\group_begin:
\@@_open_shorten:
- \keys_set:nn { NiceMatrix / xdots } { #3 }
+ \keys_set:nn { nicematrix / xdots } { #3 }
\tl_if_empty:oF \l_@@_xdots_color_tl { \color { \l_@@_xdots_color_tl } }
\@@_actually_draw_Iddots:
\group_end:
@@ -9006,11 +9111,14 @@ version 2005/12/01 or later.
{ \l_@@_y_final_dim - \l_@@_y_initial_dim }
}
{
- \dim_set:Nn \l_@@_y_final_dim
- {
- \l_@@_y_initial_dim +
- ( \l_@@_x_final_dim - \l_@@_x_initial_dim ) *
- \dim_ratio:nn \g_@@_delta_y_two_dim \g_@@_delta_x_two_dim
+ \dim_compare:nNnF \g_@@_delta_x_two_dim = \c_zero_dim
+ {
+ \dim_set:Nn \l_@@_y_final_dim
+ {
+ \l_@@_y_initial_dim +
+ ( \l_@@_x_final_dim - \l_@@_x_initial_dim ) *
+ \dim_ratio:nn \g_@@_delta_y_two_dim \g_@@_delta_x_two_dim
+ }
}
}
}
@@ -9519,7 +9627,7 @@ version 2005/12/01 or later.
\l_@@_last_col_int { \@@_error:nn { in~last~col } \Ddots }
}
{
- \keys_set_known:nn { NiceMatrix / Ddots } { #1 }
+ \keys_set_known:nn { nicematrix / Ddots } { #1 }
\@@_instruction_of_type:nnn \l_@@_draw_first_bool { Ddots }
{ #1 , down = #2 , up = #3 , middle = #4 }
}
@@ -9549,7 +9657,7 @@ version 2005/12/01 or later.
\l_@@_last_col_int { \@@_error:nn { in~last~col } \Iddots }
}
{
- \keys_set_known:nn { NiceMatrix / Ddots } { #1 }
+ \keys_set_known:nn { nicematrix / Ddots } { #1 }
\@@_instruction_of_type:nnn \l_@@_draw_first_bool { Iddots }
{ #1 , down = #2 , up = #3 , middle = #4 }
}
@@ -9567,7 +9675,7 @@ version 2005/12/01 or later.
% Despite its name, the following set of keys will be used for |\Ddots| but also
% for |\Iddots|.
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / Ddots }
+\keys_define:nn { nicematrix / Ddots }
{
draw-first .bool_set:N = \l_@@_draw_first_bool ,
draw-first .default:n = true ,
@@ -9726,7 +9834,7 @@ version 2005/12/01 or later.
{ \color { nicematrix-last-row } }
}
- \keys_set:nn { NiceMatrix / xdots } { #4 }
+ \keys_set:nn { nicematrix / xdots } { #4 }
\tl_if_empty:oF \l_@@_xdots_color_tl { \color { \l_@@_xdots_color_tl } }
\@@_actually_draw_Ldots:
\group_end:
@@ -9832,7 +9940,7 @@ version 2005/12/01 or later.
\int_compare:nNnT { #2 } = \g_@@_col_total_int
{ \color { nicematrix-last-col } }
}
- \keys_set:nn { NiceMatrix / xdots } { #4 }
+ \keys_set:nn { nicematrix / xdots } { #4 }
\tl_if_empty:oF \l_@@_xdots_color_tl { \color { \l_@@_xdots_color_tl } }
\@@_actually_draw_Vdots:
\group_end:
@@ -9859,14 +9967,14 @@ version 2005/12/01 or later.
\peek_remove_spaces:n
{
\bool_gset_true:N \g_@@_rotate_bool
- \keys_set:nn { NiceMatrix / rotate } { #1 }
+ \keys_set:nn { nicematrix / rotate } { #1 }
}
}
% \end{macrocode}
%
% \bigskip
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / rotate }
+\keys_define:nn { nicematrix / rotate }
{
c .code:n = \bool_gset_true:N \g_@@_rotate_c_bool ,
c .value_forbidden:n = true ,
@@ -9920,7 +10028,7 @@ version 2005/12/01 or later.
\exp_args:NNo \NewDocumentCommand \@@_line \l_@@_argspec_tl
{
\group_begin:
- \keys_set:nn { NiceMatrix / xdots } { #1 , #4 , down = #5 , up = #6 }
+ \keys_set:nn { nicematrix / xdots } { #1 , #4 , down = #5 , up = #6 }
\tl_if_empty:oF \l_@@_xdots_color_tl { \color { \l_@@_xdots_color_tl } }
\use:e
{
@@ -10041,7 +10149,7 @@ version 2005/12/01 or later.
% \end{macrocode}
% \medskip
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / RowStyle }
+\keys_define:nn { nicematrix / RowStyle }
{
cell-space-top-limit .dim_set:N = \l_tmpa_dim ,
cell-space-top-limit .value_required:n = true ,
@@ -10078,7 +10186,7 @@ version 2005/12/01 or later.
\int_set_eq:NN \l_@@_key_nb_rows_int \c_one_int
\dim_zero:N \l_tmpa_dim
\dim_zero:N \l_tmpb_dim
- \keys_set:nn { NiceMatrix / RowStyle } { #1 }
+ \keys_set:nn { nicematrix / RowStyle } { #1 }
% \end{macrocode}
% If the key |rowcolor| has been used.
% \begin{macrocode}
@@ -10524,7 +10632,7 @@ version 2005/12/01 or later.
%
% \bigskip
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / rowcolors }
+\keys_define:nn { nicematrix / rowcolors }
{
respect-blocks .bool_set:N = \l_@@_respect_blocks_bool ,
respect-blocks .default:n = true ,
@@ -10561,7 +10669,7 @@ version 2005/12/01 or later.
\seq_set_split:Nnn \l_@@_colors_seq { , } { #3 }
\tl_clear_new:N \l_@@_cols_tl
\cs_set_nopar:Npn \l_@@_cols_tl { - }
- \keys_set:nn { NiceMatrix / rowcolors } { #4 }
+ \keys_set:nn { nicematrix / rowcolors } { #4 }
% \end{macrocode}
% The counter |\l_@@_color_int| will be the rank of the current color in the list of
% colors (modulo the length of the list).
@@ -11220,7 +11328,7 @@ version 2005/12/01 or later.
% However, unknown keys will be analyzed further with another set of keys.
%
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / Rules }
+\keys_define:nn { nicematrix / Rules }
{
position .int_set:N = \l_@@_position_int ,
position .value_required:n = true ,
@@ -11243,7 +11351,7 @@ version 2005/12/01 or later.
% following set of keys.
%
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / RulesBis }
+\keys_define:nn { nicematrix / RulesBis }
{
multiplicity .int_set:N = \l_@@_multiplicity_int ,
multiplicity .initial:n = 1 ,
@@ -11294,7 +11402,7 @@ version 2005/12/01 or later.
% \begin{macrocode}
\group_begin:
\int_set_eq:NN \l_@@_end_int \c@iRow
- \keys_set_known:nnN { NiceMatrix / Rules } { #1 } \l_@@_other_keys_tl
+ \keys_set_known:nnN { nicematrix / Rules } { #1 } \l_@@_other_keys_tl
% \end{macrocode}
% The following test is for the case where the user does not use all the columns
% specified in the preamble of the environment (for instance, a preamble of
@@ -11393,7 +11501,7 @@ version 2005/12/01 or later.
\cs_new_protected:Npn \@@_vline_ii:
{
\tl_clear:N \l_@@_tikz_rule_tl
- \keys_set:nV { NiceMatrix / RulesBis } \l_@@_other_keys_tl
+ \keys_set:nV { nicematrix / RulesBis } \l_@@_other_keys_tl
\bool_if:NTF \l_@@_dotted_bool
\@@_vline_iv:
{
@@ -11549,7 +11657,7 @@ version 2005/12/01 or later.
% \bigskip
% The following command will be executed in the internal |\CodeAfter|. The
% argument |#1| is a list of \textsl{key=value} pairs of the form
-% |{NiceMatrix/Rules}|.
+% |{nicematrix/Rules}|.
% \begin{macrocode}
\cs_new_protected:Npn \@@_hline:n #1
{
@@ -11559,7 +11667,7 @@ version 2005/12/01 or later.
\group_begin:
\int_zero_new:N \l_@@_end_int
\int_set_eq:NN \l_@@_end_int \c@jCol
- \keys_set_known:nnN { NiceMatrix / Rules } { #1 } \l_@@_other_keys_tl
+ \keys_set_known:nnN { nicematrix / Rules } { #1 } \l_@@_other_keys_tl
\@@_hline_i:
\group_end:
}
@@ -11654,7 +11762,7 @@ version 2005/12/01 or later.
\cs_new_protected:Npn \@@_hline_ii:
{
\tl_clear:N \l_@@_tikz_rule_tl
- \keys_set:nV { NiceMatrix / RulesBis } \l_@@_other_keys_tl
+ \keys_set:nV { nicematrix / RulesBis } \l_@@_other_keys_tl
\bool_if:NTF \l_@@_dotted_bool
\@@_hline_iv:
{
@@ -11934,7 +12042,7 @@ version 2005/12/01 or later.
\str_clear_new:N \l_@@_ccommand_str
\str_clear_new:N \l_@@_letter_str
\tl_clear_new:N \l_@@_other_keys_tl
- \keys_set_known:nnN { NiceMatrix / custom-line } { #1 } \l_@@_other_keys_tl
+ \keys_set_known:nnN { nicematrix / custom-line } { #1 } \l_@@_other_keys_tl
% \end{macrocode}
% If the final user only wants to draw horizontal rules, he does not need to
% specify a letter (for the vertical rules in the preamble of the array). On the
@@ -11956,7 +12064,7 @@ version 2005/12/01 or later.
%
%
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / custom-line }
+\keys_define:nn { nicematrix / custom-line }
{
letter .str_set:N = \l_@@_letter_str ,
letter .value_required:n = true ,
@@ -11980,7 +12088,7 @@ version 2005/12/01 or later.
\bool_set_false:N \l_@@_color_bool
% \end{macrocode}
% \begin{macrocode}
- \keys_set:nn { NiceMatrix / custom-line-bis } { #1 }
+ \keys_set:nn { nicematrix / custom-line-bis } { #1 }
\bool_if:NT \l_@@_tikz_rule_bool
{
\IfPackageLoadedTF { tikz }
@@ -12028,10 +12136,10 @@ version 2005/12/01 or later.
% The previous command |\@@_custom_line_i:n| uses the following set of keys.
% However, the whole definition of the customized lines (as provided by the
% final user as argument of |custom-line|) will also be used further with
-% other sets of keys (for instance |{NiceMatrix/Rules}|). That's why the
+% other sets of keys (for instance |{nicematrix/Rules}|). That's why the
% following set of keys has some keys which are no-op.
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / custom-line-bis }
+\keys_define:nn { nicematrix / custom-line-bis }
{
multiplicity .int_set:N = \l_@@_multiplicity_int ,
multiplicity .initial:n = 1 ,
@@ -12066,7 +12174,7 @@ version 2005/12/01 or later.
% deprecated and has been replaced by the key |total-width|.
%
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / custom-line-width }
+\keys_define:nn { nicematrix / custom-line-width }
{
multiplicity .int_set:N = \l_@@_multiplicity_int ,
multiplicity .initial:n = 1 ,
@@ -12156,7 +12264,7 @@ version 2005/12/01 or later.
\bool_set_false:N \l_@@_tikz_rule_bool
\bool_set_false:N \l_@@_total_width_bool
\bool_set_false:N \l_@@_dotted_rule_bool
- \keys_set_known:nn { NiceMatrix / custom-line-width } { #1 }
+ \keys_set_known:nn { nicematrix / custom-line-width } { #1 }
\bool_if:NF \l_@@_total_width_bool
{
\bool_if:NTF \l_@@_dotted_rule_bool
@@ -12482,7 +12590,7 @@ version 2005/12/01 or later.
% Up to now, there is only one option available for the environment
% |{NiceMatrixBlock}|.
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / NiceMatrixBlock }
+\keys_define:nn { nicematrix / NiceMatrixBlock }
{
auto-columns-width .code:n =
{
@@ -12499,7 +12607,7 @@ version 2005/12/01 or later.
{
\int_gincr:N \g_@@_NiceMatrixBlock_int
\dim_zero:N \l_@@_columns_width_dim
- \keys_set:nn { NiceMatrix / NiceMatrixBlock } { #1 }
+ \keys_set:nn { nicematrix / NiceMatrixBlock } { #1 }
\bool_if:NT \l_@@_block_auto_columns_width_bool
{
\cs_if_exist:cT
@@ -12914,8 +13022,11 @@ version 2005/12/01 or later.
% array (and once again when the block will be put in the array).
% Here is the set of keys for the first pass (in the cell of the array).
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / Block / FirstPass }
+\keys_define:nn { nicematrix / Block / FirstPass }
{
+ j .code:n = \str_set:Nn \l_@@_hpos_block_str j
+ \bool_set_true:N \l_@@_p_block_bool ,
+ j .value_forbidden:n = true ,
l .code:n = \str_set:Nn \l_@@_hpos_block_str l ,
l .value_forbidden:n = true ,
r .code:n = \str_set:Nn \l_@@_hpos_block_str r ,
@@ -12936,6 +13047,11 @@ version 2005/12/01 or later.
b .value_forbidden:n = true ,
B .code:n = \str_set:Nn \l_@@_vpos_block_str B ,
B .value_forbidden:n = true ,
+ m .code:n = \str_set:Nn \l_@@_vpos_block_str c ,
+ m .value_forbidden:n = true ,
+ v-center .meta:n = m ,
+ p .code:n = \bool_set_true:N \l_@@_p_block_bool ,
+ p .value_forbidden:n = true ,
color .code:n =
\@@_color:n { #1 }
\tl_set_rescan:Nnn
@@ -12950,6 +13066,7 @@ version 2005/12/01 or later.
% \end{macrocode}
%
%
+%
% The following command |\@@_Block:| will be linked to |\Block| in the
% environments of \pkg{nicematrix}. We define it with
% |\NewExpandableDocumentCommand| because it has an optional argument between~
@@ -13021,12 +13138,12 @@ version 2005/12/01 or later.
% \begin{macrocode}
\bool_lazy_or:nnTF
{ \tl_if_blank_p:n { #1 } }
- { \str_if_eq_p:nn { #1 } { * } }
+ { \str_if_eq_p:Vn \c_@@_star_str { #1 } }
{ \int_set:Nn \l_tmpa_int { 100 } }
{ \int_set:Nn \l_tmpa_int { #1 } }
\bool_lazy_or:nnTF
{ \tl_if_blank_p:n { #2 } }
- { \str_if_eq_p:nn { #2 } { * } }
+ { \str_if_eq_p:Vn \c_@@_star_str { #2 } }
{ \int_set:Nn \l_tmpb_int { 100 } }
{ \int_set:Nn \l_tmpb_int { #2 } }
% \end{macrocode}
@@ -13047,7 +13164,7 @@ version 2005/12/01 or later.
%
% \medskip
% \begin{macrocode}
- \keys_set_known:nn { NiceMatrix / Block / FirstPass } { #3 }
+ \keys_set_known:nn { nicematrix / Block / FirstPass } { #3 }
% \end{macrocode}
%
% \begin{macrocode}
@@ -13066,18 +13183,18 @@ version 2005/12/01 or later.
%
%
% \medskip
-% If the block is mono-column or mono-row, we have a special treatment. That's
-% why we have two macros: |\@@_Block_iv:nnnnn| and |\@@_Block_v:nnnnn| (the five
+% We have different treatments when the key |p| is used and when the block is
+% mono-column or mono-row, etc. That's why we have several macros:
+% |\@@_Block_iv:nnnnn|, |\@@_Block_v:nnnnn|, |\@@_Block_vi:nnnn|, etc. (the five
% arguments of those macros are provided by curryfication).
% \begin{macrocode}
- \bool_if:nTF
+ \bool_set_false:N \l_tmpa_bool
+ \bool_if:NT \l_@@_amp_in_blocks_bool
+ { \tl_if_in:nnT { #5 } { & } { \bool_set_true:N \l_tmpa_bool } }
+ \bool_case:nF
{
- (
- \int_compare_p:nNn \l_tmpa_int = \c_one_int
- ||
- \int_compare_p:nNn \l_tmpb_int = \c_one_int
- )
- && ! \tl_if_empty_p:n { #5 }
+ \l_tmpa_bool { \exp_args:Nee \@@_Block_vii:nnnnn }
+ \l_@@_p_block_bool { \exp_args:Nee \@@_Block_vi:nnnnn }
% \end{macrocode}
% For the blocks mono-column, we will compose right now in a box in order to
% compute its width and take that width into account for the width of the
@@ -13087,9 +13204,13 @@ version 2005/12/01 or later.
% column, it's imperative. Otherwise, the process for the determination of the
% widths of the columns will be wrong.
% \begin{macrocode}
- && ! \l_@@_X_bool
- }
- { \exp_args:Nee \@@_Block_iv:nnnnn }
+ \l_@@_X_bool { \exp_args:Nee \@@_Block_v:nnnnn }
+ { \tl_if_empty_p:n { #5 } } { \exp_args:Nee \@@_Block_v:nnnnn }
+ { \int_compare_p:nNn \l_tmpa_int = \c_one_int }
+ { \exp_args:Nee \@@_Block_iv:nnnnn }
+ { \int_compare_p:nNn \l_tmpb_int = \c_one_int }
+ { \exp_args:Nee \@@_Block_iv:nnnnn }
+ }
{ \exp_args:Nee \@@_Block_v:nnnnn }
{ \l_tmpa_int } { \l_tmpb_int } { #3 } { #4 } { #5 }
}
@@ -13098,12 +13219,13 @@ version 2005/12/01 or later.
%
% \bigskip
% The following macro is for the case of a |\Block| which is mono-row or
-% mono-column (or both). In that case, the content of the block is composed
-% right now in a box (because we have to take into account the dimensions of
-% that box for the width of the current column or the height and the depth of the
-% current row). However, that box will be put in the array \emph{after the
-% construction of the array} (by using \textsc{pgf}) with |\@@_draw_blocks:| and
-% above all |\@@_Block_v:nnnnnn| which will do the main job.
+% mono-column (or both) and don't use the key~|p|. In that case, the content of
+% the block is composed right now in a box (because we have to take into account
+% the dimensions of that box for the width of the current column or the height
+% and the depth of the current row). However, that box will be put in the array
+% \emph{after the construction of the array} (by using \textsc{pgf}) with
+% |\@@_draw_blocks:| and above all |\@@_Block_v:nnnnnn| which will do the main
+% job.
%
% |#1| is $i$ (the number of rows of the block), |#2| is $j$ (the number of
% columns of the block), |#3| is the list of \textsl{key=values} pairs, |#4| are
@@ -13157,10 +13279,42 @@ version 2005/12/01 or later.
\int_compare:nNnT { #1 } = \c_one_int
{
\int_if_zero:nTF \c@iRow
- \l_@@_code_for_first_row_tl
+ {
+% \end{macrocode}
+%
+% \bigskip
+% In the following code, the value of |code-for-first-row| contains a |\Block|
+% (in order to have the ``first row'' centered). But, that block will be
+% executed, since it is entirely contained in the first row, the value of
+% |code-for-first-row| will be inserted once again... with the same command
+% |\Block|. That's why we have to nullify the command |\Block.|
+% \begin{Verbatim}
+% $\begin{bNiceMatrix}%
+% [
+% r,
+% first-row,
+% last-col,
+% code-for-first-row = \Block{}{\scriptstyle\color{blue} \arabic{jCol}},
+% code-for-last-col = \scriptstyle \color{blue} \arabic{iRow}
+% ]
+% & & & & \\
+% -2 & 3 & -4 & 5 & \\
+% 3 & -4 & 5 & -6 & \\
+% -4 & 5 & -6 & 7 & \\
+% 5 & -6 & 7 & -8 & \\
+% \end{bNiceMatrix}$
+% \end{Verbatim}
+%
+% \begin{macrocode}
+ \cs_set_eq:NN \Block \@@_NullBlock:
+ \l_@@_code_for_first_row_tl
+ }
{
\int_compare:nNnT \c@iRow = \l_@@_last_row_int
- \l_@@_code_for_last_row_tl
+ {
+ \cs_set_eq:NN \Block \@@_NullBlock:
+ \l_@@_code_for_last_row_tl
+ }
}
\g_@@_row_style_tl
}
@@ -13202,14 +13356,14 @@ version 2005/12/01 or later.
{ ! \g_@@_rotate_bool }
}
% \end{macrocode}
-% When the block is mono-column in a column with a fixed width (eg |p{3cm}|), we
+% When the block is mono-column in a column with a fixed width (e.g. |p{3cm}|), we
% use a |{minipage}|.
% \begin{macrocode}
{
\use:e
{
\exp_not:N \begin { minipage }%
- [ \str_lowercase:V \l_@@_vpos_block_str ]
+ [ \str_lowercase:o \l_@@_vpos_block_str ]
{ \l_@@_col_width_dim }
\str_case:on \l_@@_hpos_block_str
{ c \centering r \raggedleft l \raggedright }
@@ -13224,7 +13378,7 @@ version 2005/12/01 or later.
\use:e
{
\exp_not:N \begin { tabular }%
- [ \str_lowercase:V \l_@@_vpos_block_str ]
+ [ \str_lowercase:o \l_@@_vpos_block_str ]
{ @ { } \l_@@_hpos_block_str @ { } }
}
#5
@@ -13240,7 +13394,7 @@ version 2005/12/01 or later.
\use:e
{
\exp_not:N \begin { array }%
- [ \str_lowercase:V \l_@@_vpos_block_str ]
+ [ \str_lowercase:o \l_@@_vpos_block_str ]
{ @ { } \l_@@_hpos_block_str @ { } }
}
#5
@@ -13254,7 +13408,7 @@ version 2005/12/01 or later.
% \bigskip
% If there were |\rotate| (which raises |\g_@@_rotate_bool|) in the content of
% the |\Block|, we do a rotation of the box (and we also adjust the
-% baseline the rotated box).
+% baseline of the rotated box).
% \begin{macrocode}
\bool_if:NT \g_@@_rotate_bool \@@_rotate_box_of_block:
% \end{macrocode}
@@ -13275,37 +13429,36 @@ version 2005/12/01 or later.
}
}
% \end{macrocode}
-% If we are in a mono-row block and if that block has no vertical option for the
-% position\footnote{If the block has a key of a vertical position, that means
-% that it has to be put in a vertical space determined by the \emph{others}
-% cells of the row. Therefore there is no point creating space here. Moreover,
-% that would lead to problems when a multi-row block with a position key such as
-% |b| or |B|.}, we take into account the height and the depth of that block for the
-% height and the depth of the row.
+% If we are in a mono-row block we take into account the height and the depth of
+% that block for the height and the depth of the row, excepted when the block
+% uses explicitely an option of vertical position.
% \begin{macrocode}
- \str_if_eq:VnT \l_@@_vpos_block_str { c }
+ \bool_lazy_and:nnT
+ { \int_compare_p:nNn { #1 } = \c_one_int }
+% \end{macrocode}
+% If the user has not used a key for the vertical position of the block, then
+% |\l_@@_vpos_block_str| remains empty.
+% \begin{macrocode}
+ { \str_if_empty_p:N \l_@@_vpos_block_str }
{
- \int_compare:nNnT { #1 } = \c_one_int
+ \dim_gset:Nn \g_@@_blocks_ht_dim
{
- \dim_gset:Nn \g_@@_blocks_ht_dim
+ \dim_max:nn
+ \g_@@_blocks_ht_dim
{
- \dim_max:nn
- \g_@@_blocks_ht_dim
- {
- \box_ht:c
- { g_@@_ block _ box _ \int_use:N \g_@@_block_box_int _ box }
- }
- }
- \dim_gset:Nn \g_@@_blocks_dp_dim
+ \box_ht:c
+ { g_@@_ block _ box _ \int_use:N \g_@@_block_box_int _ box }
+ }
+ }
+ \dim_gset:Nn \g_@@_blocks_dp_dim
+ {
+ \dim_max:nn
+ \g_@@_blocks_dp_dim
{
- \dim_max:nn
- \g_@@_blocks_dp_dim
- {
- \box_dp:c
- { g_@@_ block _ box _ \int_use:N \g_@@_block_box_int _ box }
- }
- }
- }
+ \box_dp:c
+ { g_@@_ block _ box _ \int_use:N \g_@@_block_box_int _ box }
+ }
+ }
}
\seq_gput_right:Nx \g_@@_blocks_seq
{
@@ -13329,7 +13482,6 @@ version 2005/12/01 or later.
{ m }
{ \int_compare:nNnT \c@iRow = \l_@@_last_row_int T }
}
-
}
{
\box_use_drop:c
@@ -13340,6 +13492,8 @@ version 2005/12/01 or later.
}
% \end{macrocode}
%
+%
+%
% \bigskip
% \begin{macrocode}
\cs_new:Npn \@@_adjust_hpos_rotate:
@@ -13398,10 +13552,10 @@ version 2005/12/01 or later.
%
% \bigskip
% The following macro is for the standard case, where the block is not mono-row
-% and not mono-column. In that case, the content of the block is \emph{not}
-% composed right now in a box. The composition in a box will be done further,
-% just after the construction of the array (cf. |\@@_draw_blocks:| and
-% above all |\@@_Block_v:nnnnnn|).
+% and not mono-column and does not use the key |p|). In that case, the content of
+% the block is \emph{not} composed right now in a box. The composition in a box
+% will be done further, just after the construction of the array (cf.
+% |\@@_draw_blocks:| and above all |\@@_Block_v:nnnnnn|).
%
% |#1| is $i$ (the number of rows of the block), |#2| is $j$ (the number of
% columns of the block), |#3| is the list of \textsl{key=values} pairs, |#4| are
@@ -13434,18 +13588,20 @@ version 2005/12/01 or later.
% the tabular is the same as the external alignment of the tabular (that is to
% say the position of the block in its zone of merged cells).
% \begin{macrocode}
- \use:e
- {
- \exp_not:N \begin { tabular } [ \l_@@_vpos_block_str ]
- { @ { } \l_@@_hpos_block_str @ { } }
- }
- #5
- \end { tabular }
+ \bool_if:NT \c_@@_testphase_table_bool
+ { \tag_stop:n { table } }
+ \use:e
+ {
+ \exp_not:N \begin { tabular } [ \l_@@_vpos_block_str ]
+ { @ { } \l_@@_hpos_block_str @ { } }
+ }
+ #5
+ \end { tabular }
}
\group_end:
}
% \end{macrocode}
-% When we are \emph{not} in an environments |{NiceTabular}| (or similar).
+% When we are \emph{not} in an environment |{NiceTabular}| (or similar).
% \begin{macrocode}
{
\group_begin:
@@ -13473,6 +13629,40 @@ version 2005/12/01 or later.
}
}
% \end{macrocode}
+%
+% \bigskip
+% The following macro is for the case of a |\Block| which uses the key~|p|.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_Block_vi:nnnnn #1 #2 #3 #4 #5
+ {
+ \seq_gput_right:Nx \g_@@_blocks_seq
+ {
+ \l_tmpa_tl
+ { \exp_not:n { #3 } }
+ {
+ \group_begin:
+ \exp_not:n { #4 #5 }
+ \group_end:
+ }
+ }
+ }
+% \end{macrocode}
+%
+%
+% \bigskip
+% The following macro is for the case of a |\Block| which uses the key~|p|.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_Block_vii:nnnnn #1 #2 #3 #4 #5
+ {
+ \seq_gput_right:Nx \g_@@_blocks_seq
+ {
+ \l_tmpa_tl
+ { \exp_not:n { #3 } }
+ { \exp_not:n { #4 #5 } }
+ }
+ }
+% \end{macrocode}
+%
%
% \bigskip
% We recall that the options of the command |\Block| are analyzed twice: first
@@ -13481,8 +13671,11 @@ version 2005/12/01 or later.
%
% \medskip
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / Block / SecondPass }
+\keys_define:nn { nicematrix / Block / SecondPass }
{
+ ampersand-in-blocks .bool_set:N = \l_@@_amp_in_blocks_bool ,
+ ampersand-in-blocks .default:n = true ,
+ &-in-blocks .meta:n = ampersand-in-blocks ,
tikz .code:n =
\IfPackageLoadedTF { tikz }
{ \seq_put_right:Nn \l_@@_tikz_seq { { #1 } } }
@@ -13523,6 +13716,8 @@ version 2005/12/01 or later.
% Some keys have not a property |.value_required:n| (or similar) because they
% are in |FirstPass|.
% \begin{macrocode}
+ j .code:n = \str_set:Nn \l_@@_hpos_block_str j
+ \bool_set_true:N \l_@@_p_block_bool ,
l .code:n = \str_set:Nn \l_@@_hpos_block_str l ,
r .code:n = \str_set:Nn \l_@@_hpos_block_str r ,
c .code:n = \str_set:Nn \l_@@_hpos_block_str c ,
@@ -13536,9 +13731,11 @@ version 2005/12/01 or later.
T .code:n = \str_set:Nn \l_@@_vpos_block_str T ,
b .code:n = \str_set:Nn \l_@@_vpos_block_str b ,
B .code:n = \str_set:Nn \l_@@_vpos_block_str B ,
- m .code:n = \str_set:Nn \l_@@_vpos_block_str { c } ,
+ m .code:n = \str_set:Nn \l_@@_vpos_block_str c ,
m .value_forbidden:n = true ,
v-center .meta:n = m ,
+ p .code:n = \bool_set_true:N \l_@@_p_block_bool ,
+ p .value_forbidden:n = true ,
name .tl_set:N = \l_@@_block_name_str ,
name .value_required:n = true ,
name .initial:n = ,
@@ -13610,10 +13807,22 @@ version 2005/12/01 or later.
{
\int_compare:nNnTF \l_@@_last_row_int > \g_@@_row_total_int
{ \msg_error:nnnn { nicematrix } { Block~too~large~1 } { #1 } { #2 } }
- { \@@_Block_v:nnnnnn { #1 } { #2 } { #3 } { #4 } { #5 } { #6 } }
+ {
+ \@@_Block_v:nnVVnn
+ { #1 }
+ { #2 }
+ \l_@@_last_row_int
+ \l_@@_last_col_int
+ { #5 }
+ { #6 }
+ }
}
}
% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_generate_variant:Nn \@@_Block_v:nnnnnn { n n V V n n }
+% \end{macrocode}
%
%
% \medskip
@@ -13633,11 +13842,20 @@ version 2005/12/01 or later.
\group_begin:
\int_compare:nNnT { #1 } = { #3 }
{ \str_set:Nn \l_@@_vpos_block_str { t } }
- \keys_set:nn { NiceMatrix / Block / SecondPass } { #5 }
+ \keys_set:nn { nicematrix / Block / SecondPass } { #5 }
% \end{macrocode}
%
+%
+% If the content of the block contains |&|, we will have a special treatement
+% (since the cell must be divided in several sub-cells).
+% \begin{macrocode}
+ \tl_if_in:nnT { #6 } { & } { \bool_set_true:N \l_@@_ampersand_bool }
+% \end{macrocode}
+%
% \begin{macrocode}
- \bool_if:NT \l_@@_vlines_block_bool
+ \bool_lazy_and:nnT
+ \l_@@_vlines_block_bool
+ { ! \l_@@_ampersand_bool }
{
\tl_gput_right:Nx \g_nicematrix_code_after_tl
{
@@ -13768,11 +13986,6 @@ version 2005/12/01 or later.
}
% \end{macrocode}
%
-% \medskip
-% \begin{macrocode}
- \hbox_set:Nn \l_@@_cell_box { \set@color #6 }
- \bool_if:NT \g_@@_rotate_bool \@@_rotate_cell_box:
-% \end{macrocode}
%
% \bigskip
% Let's consider the following |{NiceTabular}|. Because of the instruction
@@ -13825,38 +14038,40 @@ version 2005/12/01 or later.
% The construction of the node corresponding to the merged cells.
% \begin{macrocode}
\pgfpicture
- \pgfrememberpicturepositiononpagetrue
- \pgf@relevantforpicturesizefalse
- \@@_qpoint:n { row - #1 }
- \dim_set_eq:NN \l_tmpa_dim \pgf@y
- \@@_qpoint:n { col - #2 }
- \dim_set_eq:NN \l_tmpb_dim \pgf@x
- \@@_qpoint:n { row - \int_eval:n { \l_@@_last_row_int + 1 } }
- \dim_set_eq:NN \l_@@_tmpc_dim \pgf@y
- \@@_qpoint:n { col - \int_eval:n { \l_@@_last_col_int + 1 } }
- \dim_set_eq:NN \l_@@_tmpd_dim \pgf@x
+ \pgfrememberpicturepositiononpagetrue
+ \pgf@relevantforpicturesizefalse
+ \@@_qpoint:n { row - #1 }
+ \dim_set_eq:NN \l_tmpa_dim \pgf@y
+ \@@_qpoint:n { col - #2 }
+ \dim_set_eq:NN \l_tmpb_dim \pgf@x
+ \@@_qpoint:n { row - \int_eval:n { \l_@@_last_row_int + 1 } }
+ \dim_set_eq:NN \l_@@_tmpc_dim \pgf@y
+ \@@_qpoint:n { col - \int_eval:n { \l_@@_last_col_int + 1 } }
+ \dim_set_eq:NN \l_@@_tmpd_dim \pgf@x
% \end{macrocode}
%
+%
+%
% We construct the node for the block with the name |(#1-#2-block)|.
%
% The function |\@@_pgf_rect_node:nnnnn| takes in as arguments the name of the node
% and the four coordinates of two opposite corner points of the rectangle.
% \begin{macrocode}
- \@@_pgf_rect_node:nnnnn
- { \@@_env: - #1 - #2 - block }
- \l_tmpb_dim \l_tmpa_dim \l_@@_tmpd_dim \l_@@_tmpc_dim
- \str_if_empty:NF \l_@@_block_name_str
- {
- \pgfnodealias
- { \@@_env: - \l_@@_block_name_str }
- { \@@_env: - #1 - #2 - block }
- \str_if_empty:NF \l_@@_name_str
- {
- \pgfnodealias
- { \l_@@_name_str - \l_@@_block_name_str }
- { \@@_env: - #1 - #2 - block }
- }
- }
+ \@@_pgf_rect_node:nnnnn
+ { \@@_env: - #1 - #2 - block }
+ \l_tmpb_dim \l_tmpa_dim \l_@@_tmpd_dim \l_@@_tmpc_dim
+ \str_if_empty:NF \l_@@_block_name_str
+ {
+ \pgfnodealias
+ { \@@_env: - \l_@@_block_name_str }
+ { \@@_env: - #1 - #2 - block }
+ \str_if_empty:NF \l_@@_name_str
+ {
+ \pgfnodealias
+ { \l_@@_name_str - \l_@@_block_name_str }
+ { \@@_env: - #1 - #2 - block }
+ }
+ }
% \end{macrocode}
%
% \medskip
@@ -13867,64 +14082,64 @@ version 2005/12/01 or later.
% normal node is used to put the label.
%
% \begin{macrocode}
- \bool_if:NF \l_@@_hpos_of_block_cap_bool
- {
- \dim_set_eq:NN \l_tmpb_dim \c_max_dim
+ \bool_if:NF \l_@@_hpos_of_block_cap_bool
+ {
+ \dim_set_eq:NN \l_tmpb_dim \c_max_dim
% \end{macrocode}
% The short node is constructed by taking into account the \emph{contents} of
% the columns involved in at least one cell of the block. That's why we have to
% do a loop over the rows of the array.
% \begin{macrocode}
- \int_step_inline:nnn \l_@@_first_row_int \g_@@_row_total_int
- {
+ \int_step_inline:nnn \l_@@_first_row_int \g_@@_row_total_int
+ {
% \end{macrocode}
% We recall that, when a cell is empty, no (normal) node is created in that
% cell. That's why we test the existence of the node before using it.
% \begin{macrocode}
- \cs_if_exist:cT
- { pgf @ sh @ ns @ \@@_env: - ##1 - #2 }
- {
- \seq_if_in:NnF \g_@@_multicolumn_cells_seq { ##1 - #2 }
- {
- \pgfpointanchor { \@@_env: - ##1 - #2 } { west }
- \dim_set:Nn \l_tmpb_dim { \dim_min:nn \l_tmpb_dim \pgf@x }
- }
- }
- }
+ \cs_if_exist:cT
+ { pgf @ sh @ ns @ \@@_env: - ##1 - #2 }
+ {
+ \seq_if_in:NnF \g_@@_multicolumn_cells_seq { ##1 - #2 }
+ {
+ \pgfpointanchor { \@@_env: - ##1 - #2 } { west }
+ \dim_set:Nn \l_tmpb_dim { \dim_min:nn \l_tmpb_dim \pgf@x }
+ }
+ }
+ }
% \end{macrocode}
% If all the cells of the column were empty, |\l_tmpb_dim| has still the same
% value |\c_max_dim|. In that case, you use for |\l_tmpb_dim| the value of the
% position of the vertical rule.
% \begin{macrocode}
- \dim_compare:nNnT \l_tmpb_dim = \c_max_dim
- {
- \@@_qpoint:n { col - #2 }
- \dim_set_eq:NN \l_tmpb_dim \pgf@x
- }
- \dim_set:Nn \l_@@_tmpd_dim { - \c_max_dim }
- \int_step_inline:nnn \l_@@_first_row_int \g_@@_row_total_int
- {
- \cs_if_exist:cT
- { pgf @ sh @ ns @ \@@_env: - ##1 - \int_use:N \l_@@_last_col_int }
- {
- \seq_if_in:NnF \g_@@_multicolumn_cells_seq { ##1 - #2 }
- {
- \pgfpointanchor
- { \@@_env: - ##1 - \int_use:N \l_@@_last_col_int }
- { east }
- \dim_set:Nn \l_@@_tmpd_dim { \dim_max:nn \l_@@_tmpd_dim \pgf@x }
- }
- }
- }
- \dim_compare:nNnT \l_@@_tmpd_dim = { - \c_max_dim }
- {
- \@@_qpoint:n { col - \int_eval:n { \l_@@_last_col_int + 1 } }
- \dim_set_eq:NN \l_@@_tmpd_dim \pgf@x
- }
- \@@_pgf_rect_node:nnnnn
- { \@@_env: - #1 - #2 - block - short }
- \l_tmpb_dim \l_tmpa_dim \l_@@_tmpd_dim \l_@@_tmpc_dim
- }
+ \dim_compare:nNnT \l_tmpb_dim = \c_max_dim
+ {
+ \@@_qpoint:n { col - #2 }
+ \dim_set_eq:NN \l_tmpb_dim \pgf@x
+ }
+ \dim_set:Nn \l_@@_tmpd_dim { - \c_max_dim }
+ \int_step_inline:nnn \l_@@_first_row_int \g_@@_row_total_int
+ {
+ \cs_if_exist:cT
+ { pgf @ sh @ ns @ \@@_env: - ##1 - \int_use:N \l_@@_last_col_int }
+ {
+ \seq_if_in:NnF \g_@@_multicolumn_cells_seq { ##1 - #2 }
+ {
+ \pgfpointanchor
+ { \@@_env: - ##1 - \int_use:N \l_@@_last_col_int }
+ { east }
+ \dim_set:Nn \l_@@_tmpd_dim { \dim_max:nn \l_@@_tmpd_dim \pgf@x }
+ }
+ }
+ }
+ \dim_compare:nNnT \l_@@_tmpd_dim = { - \c_max_dim }
+ {
+ \@@_qpoint:n { col - \int_eval:n { \l_@@_last_col_int + 1 } }
+ \dim_set_eq:NN \l_@@_tmpd_dim \pgf@x
+ }
+ \@@_pgf_rect_node:nnnnn
+ { \@@_env: - #1 - #2 - block - short }
+ \l_tmpb_dim \l_tmpa_dim \l_@@_tmpd_dim \l_@@_tmpc_dim
+ }
% \end{macrocode}
%
% \medskip
@@ -13946,150 +14161,297 @@ version 2005/12/01 or later.
{ south~east }
}
}
+ \endpgfpicture
% \end{macrocode}
%
+% \bigskip
+% \begin{macrocode}
+ \bool_if:NTF \l_@@_ampersand_bool
+ {
+ \seq_set_split:Nnn \l_tmpa_seq { & } { #6 }
+ \int_zero_new:N \l_@@_split_int
+ \int_set:Nn \l_@@_split_int { \seq_count:N \l_tmpa_seq }
+ \pgfpicture
+ \pgfrememberpicturepositiononpagetrue
+ \pgf@relevantforpicturesizefalse
+ \@@_qpoint:n { row - #1 }
+ \dim_set_eq:NN \l_@@_tmpc_dim \pgf@y
+ \@@_qpoint:n { row - \int_eval:n { #3 + 1 } }
+ \dim_set_eq:NN \l_@@_tmpd_dim \pgf@y
+ \@@_qpoint:n { col - #2 }
+ \dim_set_eq:NN \l_tmpa_dim \pgf@x
+ \@@_qpoint:n { col - \int_eval:n { #4 + 1 } }
+ \dim_set:Nn \l_tmpb_dim
+ { ( \pgf@x - \l_tmpa_dim ) / \int_use:N \l_@@_split_int }
+ \bool_lazy_or:nnT
+ \l_@@_vlines_block_bool
+ { \tl_if_eq_p:NN \l_@@_vlines_clist \c_@@_all_tl }
+ {
+ \int_step_inline:nn { \l_@@_split_int - 1 }
+ {
+ \pgfpathmoveto
+ {
+ \pgfpoint
+ { \l_tmpa_dim + ##1 \l_tmpb_dim }
+ \l_@@_tmpc_dim
+ }
+ \pgfpathlineto
+ {
+ \pgfpoint
+ { \l_tmpa_dim + ##1 \l_tmpb_dim }
+ \l_@@_tmpd_dim
+ }
+ \CT@arc@
+ \pgfsetlinewidth { 1.1 \arrayrulewidth }
+ \pgfsetrectcap
+ \pgfusepathqstroke
+ }
+ }
+ \@@_qpoint:n { row - #1 - base }
+ \dim_set_eq:NN \l_@@_tmpc_dim \pgf@y
+ \int_step_inline:nn \l_@@_split_int
+ {
+ \group_begin:
+ \dim_set:Nn \col@sep
+ { \bool_if:NTF \l_@@_tabular_bool \tabcolsep \arraycolsep }
+ \pgftransformshift
+ {
+ \pgfpoint
+ {
+ \str_case:on \l_@@_hpos_block_str
+ {
+ l { \l_tmpa_dim + ##1 \l_tmpb_dim - \l_tmpb_dim + \col@sep}
+ c { \l_tmpa_dim + ##1 \l_tmpb_dim - 0.5 \l_tmpb_dim }
+ r { \l_tmpa_dim + ##1 \l_tmpb_dim - \col@sep }
+ }
+ }
+ { \l_@@_tmpc_dim }
+ }
+ \pgfset
+ {
+ inner~xsep = \c_zero_dim ,
+ inner~ysep = \c_zero_dim
+ }
+ \pgfnode
+ { rectangle }
+ {
+ \str_case:on \l_@@_hpos_block_str
+ {
+ c { base }
+ l { base~west }
+ r { base~east }
+ }
+ }
+ { \seq_item:Nn \l_tmpa_seq { ##1 } } { } { }
+ \group_end:
+ }
+ \endpgfpicture
+ }
+% \end{macrocode}
+% Now the case where there is no ampersand |&| in the content of the block.
+% \begin{macrocode}
+ {
+ \bool_if:NTF \l_@@_p_block_bool
+ {
+% \end{macrocode}
+% When the final user has used the key~|p|, we have to compute the width.
+% \begin{macrocode}
+ \pgfpicture
+ \pgfrememberpicturepositiononpagetrue
+ \pgf@relevantforpicturesizefalse
+ \bool_if:NTF \l_@@_hpos_of_block_cap_bool
+ {
+ \@@_qpoint:n { col - #2 }
+ \dim_gset_eq:NN \g_tmpa_dim \pgf@x
+ \@@_qpoint:n { col - \int_eval:n { \l_@@_last_col_int + 1 } }
+ }
+ {
+ \pgfpointanchor { \@@_env: - #1 - #2 - block - short } { west }
+ \dim_gset_eq:NN \g_tmpa_dim \pgf@x
+ \pgfpointanchor { \@@_env: - #1 - #2 - block - short } { east }
+ }
+ \dim_gset:Nn \g_tmpb_dim { \pgf@x - \g_tmpa_dim }
+ \endpgfpicture
+ \hbox_set:Nn \l_@@_cell_box
+ {
+ \begin { minipage } [ \str_lowercase:o \l_@@_vpos_block_str ]
+ { \g_tmpb_dim }
+ \str_case:on \l_@@_hpos_block_str
+ { c \centering r \raggedleft l \raggedright j { } }
+ #6
+ \end { minipage }
+ }
+ }
+ { \hbox_set:Nn \l_@@_cell_box { \set@color #6 } }
+ \bool_if:NT \g_@@_rotate_bool \@@_rotate_cell_box:
+% \end{macrocode}
%
-% \medskip
-% Now, we will put the label of the block.
+% \bigskip
+% Now, we will put the label of the block. We recall that |\l_@@_vpos_block_str|
+% is empty when the user has not used a key for the vertical position of the block.
% \begin{macrocode}
- \bool_lazy_any:nTF
- {
- { \str_if_eq_p:on \l_@@_vpos_block_str { c } }
- { \str_if_eq_p:on \l_@@_vpos_block_str { T } }
- { \str_if_eq_p:on \l_@@_vpos_block_str { B } }
- }
+ \pgfpicture
+ \pgfrememberpicturepositiononpagetrue
+ \pgf@relevantforpicturesizefalse
+ \bool_lazy_any:nTF
+ {
+ { \str_if_empty_p:N \l_@@_vpos_block_str } % added 2024/06/29
+ { \str_if_eq_p:on \l_@@_vpos_block_str { c } }
+ { \str_if_eq_p:on \l_@@_vpos_block_str { T } }
+ { \str_if_eq_p:on \l_@@_vpos_block_str { B } }
+ }
% \end{macrocode}
% \medskip
% \begin{macrocode}
- {
+ {
% \end{macrocode}
% If we are in the first column, we must put the block as if it was with the key~|r|.
% \begin{macrocode}
- \int_if_zero:nT { #2 } { \str_set_eq:NN \l_@@_hpos_block_str \c_@@_r_str }
+ \int_if_zero:nT { #2 } { \str_set_eq:NN \l_@@_hpos_block_str \c_@@_r_str }
% \end{macrocode}
% If we are in the last column, we must put the block as if it was with the key~|l|.
% \begin{macrocode}
- \bool_if:nT \g_@@_last_col_found_bool
- {
- \int_compare:nNnT { #2 } = \g_@@_col_total_int
- { \str_set_eq:NN \l_@@_hpos_block_str \c_@@_l_str }
- }
+ \bool_if:nT \g_@@_last_col_found_bool
+ {
+ \int_compare:nNnT { #2 } = \g_@@_col_total_int
+ { \str_set_eq:NN \l_@@_hpos_block_str \c_@@_l_str }
+ }
% \end{macrocode}
% |\l_tmpa_tl| will contain the anchor of the \textsc{pgf} node which will be used.
% \begin{macrocode}
- \tl_set:Nx \l_tmpa_tl
- {
- \str_case:on \l_@@_vpos_block_str
+ \tl_set:Nx \l_tmpa_tl
{
- c {
- \str_case:on \l_@@_hpos_block_str
- {
- c { center }
- l { west }
- r { east }
- }
+ \str_case:on \l_@@_vpos_block_str
+ {
+% \end{macrocode}
+% We recall that |\l_@@_vpos_block_str| is empty when the user has not used a key
+% for the vertical position of the block.
+% \begin{macrocode}
+ { } { % added 2024-06-29
+ \str_case:on \l_@@_hpos_block_str
+ {
+ c { center }
+ l { west }
+ r { east }
+ j { center }
+ }
+ }
+ c {
+ \str_case:on \l_@@_hpos_block_str
+ {
+ c { center }
+ l { west }
+ r { east }
+ j { center }
+ }
- }
- T {
- \str_case:on \l_@@_hpos_block_str
- {
- c { north }
- l { north~west }
- r { north~east }
- }
+ }
+ T {
+ \str_case:on \l_@@_hpos_block_str
+ {
+ c { north }
+ l { north~west }
+ r { north~east }
+ j { north }
+ }
- }
- B {
- \str_case:on \l_@@_hpos_block_str
- {
- c { south}
- l { south~west }
- r { south~east }
- }
+ }
+ B {
+ \str_case:on \l_@@_hpos_block_str
+ {
+ c { south }
+ l { south~west }
+ r { south~east }
+ j { south }
+ }
- }
+ }
+ }
}
- }
% \end{macrocode}
% \begin{macrocode}
- \pgftransformshift
- {
- \pgfpointanchor
- {
- \@@_env: - #1 - #2 - block
- \bool_if:NF \l_@@_hpos_of_block_cap_bool { - short }
+ \pgftransformshift
+ {
+ \pgfpointanchor
+ {
+ \@@_env: - #1 - #2 - block
+ \bool_if:NF \l_@@_hpos_of_block_cap_bool { - short }
+ }
+ { \l_tmpa_tl }
}
+ \pgfset
+ {
+ inner~xsep = \c_zero_dim ,
+ inner~ysep = \c_zero_dim
+ }
+ \pgfnode
+ { rectangle }
{ \l_tmpa_tl }
- }
- \pgfset
- {
- inner~xsep = \c_zero_dim ,
- inner~ysep = \c_zero_dim
- }
- \pgfnode
- { rectangle }
- { \l_tmpa_tl }
- { \box_use_drop:N \l_@@_cell_box } { } { }
- }
+ { \box_use_drop:N \l_@@_cell_box } { } { }
+ }
% \end{macrocode}
% End of the case when |\l_@@_vpos_block_str| is equal to |c|, |T| or |B|.
% Now, the other cases.
% \begin{macrocode}
- {
+ {
% \end{macrocode}
%
% \begin{macrocode}
- \pgfextracty \l_tmpa_dim
- {
- \@@_qpoint:n
+ \pgfextracty \l_tmpa_dim
{
- row - \str_if_eq:onTF \l_@@_vpos_block_str { b } { #3 } { #1 }
- - base
+ \@@_qpoint:n
+ {
+ row - \str_if_eq:onTF \l_@@_vpos_block_str { b } { #3 } { #1 }
+ - base
+ }
}
- }
- \dim_sub:Nn \l_tmpa_dim { 0.5 \arrayrulewidth }
+ \dim_sub:Nn \l_tmpa_dim { 0.5 \arrayrulewidth }
% \end{macrocode}
% We retrieve (in |\pgf@x|) the $x$-value of the center of the block.
% \begin{macrocode}
- \pgfpointanchor
- {
- \@@_env: - #1 - #2 - block
- \bool_if:NF \l_@@_hpos_of_block_cap_bool { - short }
- }
- {
- \str_case:on \l_@@_hpos_block_str
+ \pgfpointanchor
+ {
+ \@@_env: - #1 - #2 - block
+ \bool_if:NF \l_@@_hpos_of_block_cap_bool { - short }
+ }
{
- c { center }
- l { west }
- r { east }
- }
- }
+ \str_case:on \l_@@_hpos_block_str
+ {
+ c { center }
+ l { west }
+ r { east }
+ j { center }
+ }
+ }
% \end{macrocode}
% We put the label of the block which has been composed in |\l_@@_cell_box|.
% \begin{macrocode}
- \pgftransformshift { \pgfpoint \pgf@x \l_tmpa_dim }
- \pgfset { inner~sep = \c_zero_dim }
- \pgfnode
- { rectangle }
- {
- \str_case:on \l_@@_hpos_block_str
+ \pgftransformshift { \pgfpoint \pgf@x \l_tmpa_dim }
+ \pgfset { inner~sep = \c_zero_dim }
+ \pgfnode
+ { rectangle }
{
- c { base }
- l { base~west }
- r { base~east }
+ \str_case:on \l_@@_hpos_block_str
+ {
+ c { base }
+ l { base~west }
+ r { base~east }
+ j { base }
+ }
}
- }
- { \box_use_drop:N \l_@@_cell_box } { } { }
- }
+ { \box_use_drop:N \l_@@_cell_box } { } { }
+ }
% \end{macrocode}
%
% \begin{macrocode}
- \endpgfpicture
+ \endpgfpicture
+ }
\group_end:
}
% \end{macrocode}
%
%
+%
% \bigskip
% The first argument of |\@@_stroke_block:nnn| is a list of options for the
% rectangle that you will stroke. The second argument is the upper-left cell of
@@ -14101,7 +14463,7 @@ version 2005/12/01 or later.
\group_begin:
\tl_clear:N \l_@@_draw_tl
\dim_set_eq:NN \l_@@_line_width_dim \arrayrulewidth
- \keys_set_known:nn { NiceMatrix / BlockStroke } { #1 }
+ \keys_set_known:nn { nicematrix / BlockStroke } { #1 }
\pgfpicture
\pgfrememberpicturepositiononpagetrue
\pgf@relevantforpicturesizefalse
@@ -14155,7 +14517,7 @@ version 2005/12/01 or later.
%
% Here is the set of keys for the command |\@@_stroke_block:nnn|.
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / BlockStroke }
+\keys_define:nn { nicematrix / BlockStroke }
{
color .tl_set:N = \l_@@_draw_tl ,
draw .code:n =
@@ -14177,7 +14539,7 @@ version 2005/12/01 or later.
\cs_new_protected:Npn \@@_vlines_block:nnn #1 #2 #3
{
\dim_set_eq:NN \l_@@_line_width_dim \arrayrulewidth
- \keys_set_known:nn { NiceMatrix / BlockBorders } { #1 }
+ \keys_set_known:nn { nicematrix / BlockBorders } { #1 }
\@@_cut_on_hyphen:w #2 \q_stop
\tl_set_eq:NN \l_@@_tmpc_tl \l_tmpa_tl
\tl_set_eq:NN \l_@@_tmpd_tl \l_tmpb_tl
@@ -14201,7 +14563,7 @@ version 2005/12/01 or later.
\cs_new_protected:Npn \@@_hlines_block:nnn #1 #2 #3
{
\dim_set_eq:NN \l_@@_line_width_dim \arrayrulewidth
- \keys_set_known:nn { NiceMatrix / BlockBorders } { #1 }
+ \keys_set_known:nn { nicematrix / BlockBorders } { #1 }
\@@_cut_on_hyphen:w #2 \q_stop
\tl_set_eq:NN \l_@@_tmpc_tl \l_tmpa_tl
\tl_set_eq:NN \l_@@_tmpd_tl \l_tmpb_tl
@@ -14233,13 +14595,13 @@ version 2005/12/01 or later.
\cs_new_protected:Npn \@@_stroke_borders_block:nnn #1 #2 #3
{
\dim_set_eq:NN \l_@@_line_width_dim \arrayrulewidth
- \keys_set_known:nn { NiceMatrix / BlockBorders } { #1 }
+ \keys_set_known:nn { nicematrix / BlockBorders } { #1 }
\dim_compare:nNnTF \l_@@_rounded_corners_dim > \c_zero_dim
{ \@@_error:n { borders~forbidden } }
{
\tl_clear_new:N \l_@@_borders_tikz_tl
\keys_set:nV
- { NiceMatrix / OnlyForTikzInBorders }
+ { nicematrix / OnlyForTikzInBorders }
\l_@@_borders_clist
\@@_cut_on_hyphen:w #2 \q_stop
\tl_set_eq:NN \l_@@_tmpc_tl \l_tmpa_tl
@@ -14283,7 +14645,7 @@ version 2005/12/01 or later.
% \end{macrocode}
%
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / OnlyForTikzInBorders }
+\keys_define:nn { nicematrix / OnlyForTikzInBorders }
{
tikz .code:n =
\cs_if_exist:NTF \tikzpicture
@@ -14352,7 +14714,7 @@ version 2005/12/01 or later.
% \bigskip
% Here is the set of keys for the command |\@@_stroke_borders_block:nnn|.
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / BlockBorders }
+\keys_define:nn { nicematrix / BlockBorders }
{
borders .clist_set:N = \l_@@_borders_clist ,
rounded-corners .dim_set:N = \l_@@_rounded_corners_dim ,
@@ -14376,7 +14738,7 @@ version 2005/12/01 or later.
\@@_clip_with_rounded_corners:
\clist_map_inline:nn { #5 }
{
- \keys_set_known:nnN { NiceMatrix / SpecialOffset } { ##1 } \l_tmpa_tl
+ \keys_set_known:nnN { nicematrix / SpecialOffset } { ##1 } \l_tmpa_tl
\use:e { \exp_not:N \path [ \l_tmpa_tl ] }
(
[
@@ -14401,9 +14763,21 @@ version 2005/12/01 or later.
%
% \medskip
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / SpecialOffset }
+\keys_define:nn { nicematrix / SpecialOffset }
{ offset .dim_set:N = \l_@@_offset_dim }
% \end{macrocode}
+%
+% \bigskip
+% In some circonstancies, we want to nullify the command |\Block|. In order to
+% reach that goal, we will link the command |\Block| to the following command
+% |\@@_NullBlock:| which has the same syntax as the standard command |\Block|
+% but which is no-op.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_NullBlock:
+ { \@@_collect_options:n { \@@_NullBlock_i: } }
+\NewExpandableDocumentCommand \@@_NullBlock_i: { m m D < > { } +m }
+ { }
+% \end{macrocode}
%
%
% \section{How to draw the dotted lines transparently}
@@ -14437,7 +14811,7 @@ version 2005/12/01 or later.
% We will extract some keys and pass the other keys to the environment
% |{NiceArrayWithDelims}|.
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / Auto }
+\keys_define:nn { nicematrix / Auto }
{
columns-type .tl_set:N = \l_@@_columns_type_tl ,
columns-type .value_required:n = true ,
@@ -14448,7 +14822,7 @@ version 2005/12/01 or later.
delimiters / color .value_required:n = true ,
delimiters / max-width .bool_set:N = \l_@@_delimiters_max_width_bool ,
delimiters / max-width .default:n = true ,
- delimiters .code:n = \keys_set:nn { NiceMatrix / delimiters } { #1 } ,
+ delimiters .code:n = \keys_set:nn { nicematrix / delimiters } { #1 } ,
delimiters .value_required:n = true ,
rounded-corners .dim_set:N = \l_@@_tab_rounded_corners_dim ,
rounded-corners .default:n = 4 pt
@@ -14469,7 +14843,7 @@ version 2005/12/01 or later.
% The group is for the protection of the keys.
% \begin{macrocode}
\group_begin:
- \keys_set_known:nnN { NiceMatrix / Auto } { #6 } \l_tmpa_tl
+ \keys_set_known:nnN { nicematrix / Auto } { #6 } \l_tmpa_tl
\use:e
{
\exp_not:N \begin { NiceArrayWithDelims } { #1 } { #2 }
@@ -14838,7 +15212,7 @@ version 2005/12/01 or later.
%
%
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / sub-matrix }
+\keys_define:nn { nicematrix / sub-matrix }
{
extra-height .dim_set:N = \l_@@_submatrix_extra_height_dim ,
extra-height .value_required:n = true ,
@@ -14859,12 +15233,12 @@ version 2005/12/01 or later.
hvlines .meta:n = { hlines, vlines } ,
hvlines .value_forbidden:n = true
}
-\keys_define:nn { NiceMatrix }
+\keys_define:nn { nicematrix }
{
- SubMatrix .inherit:n = NiceMatrix / sub-matrix ,
- NiceArray / sub-matrix .inherit:n = NiceMatrix / sub-matrix ,
- pNiceArray / sub-matrix .inherit:n = NiceMatrix / sub-matrix ,
- NiceMatrixOptions / sub-matrix .inherit:n = NiceMatrix / sub-matrix ,
+ SubMatrix .inherit:n = nicematrix / sub-matrix ,
+ NiceArray / sub-matrix .inherit:n = nicematrix / sub-matrix ,
+ pNiceArray / sub-matrix .inherit:n = nicematrix / sub-matrix ,
+ NiceMatrixOptions / sub-matrix .inherit:n = nicematrix / sub-matrix ,
}
% \end{macrocode}
%
@@ -14872,7 +15246,7 @@ version 2005/12/01 or later.
% The following keys set is for the command |\SubMatrix| itself (not the tuning
% of |\SubMatrix| that can be done elsewhere).
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / SubMatrix }
+\keys_define:nn { nicematrix / SubMatrix }
{
delimiters / color .tl_set:N = \l_@@_delimiters_color_tl ,
delimiters / color .value_required:n = true ,
@@ -14898,7 +15272,7 @@ version 2005/12/01 or later.
{ \@@_error:n { Invalid~name } }
} ,
name .value_required:n = true ,
- rules .code:n = \keys_set:nn { NiceMatrix / rules } { #1 } ,
+ rules .code:n = \keys_set:nn { nicematrix / rules } { #1 } ,
rules .value_required:n = true ,
code .tl_set:N = \l_@@_code_tl ,
code .value_required:n = true ,
@@ -15030,7 +15404,7 @@ version 2005/12/01 or later.
{ \@@_error:nn { Construct~too~large } { \SubMatrix } }
{
\str_clear_new:N \l_@@_submatrix_name_str
- \keys_set:nn { NiceMatrix / SubMatrix } { #5 }
+ \keys_set:nn { nicematrix / SubMatrix } { #5 }
\pgfpicture
\pgfrememberpicturepositiononpagetrue
\pgf@relevantforpicturesizefalse
@@ -15425,6 +15799,7 @@ version 2005/12/01 or later.
{
\nullfont
\c_math_toggle_token
+ \colorlet { current-color } { . }
\@@_color:o \l_@@_delimiters_color_tl
\left .
\vcenter
@@ -15436,7 +15811,7 @@ version 2005/12/01 or later.
}
\right #1
\tl_if_empty:nF { #3 } { _ { \smash { #3 } } }
- ^ { \smash { #4 } }
+ ^ { \color { current-color } \smash { #4 } }
\c_math_toggle_token
}
{ #2 }
@@ -15470,13 +15845,16 @@ version 2005/12/01 or later.
%
% \medskip
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / Brace }
+\keys_define:nn { nicematrix / Brace }
{
left-shorten .bool_set:N = \l_@@_brace_left_shorten_bool ,
left-shorten .default:n = true ,
+ left-shorten .value_forbidden:n = true ,
right-shorten .bool_set:N = \l_@@_brace_right_shorten_bool ,
- shorten .meta:n = { left-shorten , right-shorten } ,
right-shorten .default:n = true ,
+ right-shorten .value_forbidden:n = true ,
+ shorten .meta:n = { left-shorten , right-shorten } ,
+ shorten .value_forbidden:n = true ,
yshift .dim_set:N = \l_@@_brace_yshift_dim ,
yshift .value_required:n = true ,
yshift .initial:n = \c_zero_dim ,
@@ -15511,7 +15889,7 @@ version 2005/12/01 or later.
}
{
\tl_clear:N \l_tmpa_tl
- \keys_set:nn { NiceMatrix / Brace } { #4 }
+ \keys_set:nn { nicematrix / Brace } { #4 }
\tl_if_empty:NF \l_tmpa_tl { \color { \l_tmpa_tl } }
\pgfpicture
\pgfrememberpicturepositiononpagetrue
@@ -15662,7 +16040,7 @@ version 2005/12/01 or later.
\bool_new:N \l_@@_not_empty_bool
\bool_new:N \l_@@_empty_bool
-\keys_define:nn { NiceMatrix / TikzEveryCell }
+\keys_define:nn { nicematrix / TikzEveryCell }
{
not-empty .code:n =
\bool_lazy_or:nnTF
@@ -15687,7 +16065,7 @@ version 2005/12/01 or later.
\IfPackageLoadedTF { tikz }
{
\group_begin:
- \keys_set:nn { NiceMatrix / TikzEveryCell } { #1 }
+ \keys_set:nn { nicematrix / TikzEveryCell } { #1 }
% \end{macrocode}
% The inner pair of braces in the following line is mandatory because, the last
% argument of |\@@_tikz:nnnnn| is \emph{a list of lists} of TikZ keys.
@@ -15764,9 +16142,9 @@ version 2005/12/01 or later.
% \begin{macrocode}
\NewDocumentCommand \@@_ShowCellNames_CodeBefore { }
{
- \dim_zero_new:N \g_@@_tmpc_dim
- \dim_zero_new:N \g_@@_tmpd_dim
- \dim_zero_new:N \g_@@_tmpe_dim
+ \dim_gzero_new:N \g_@@_tmpc_dim
+ \dim_gzero_new:N \g_@@_tmpd_dim
+ \dim_gzero_new:N \g_@@_tmpe_dim
\int_step_inline:nn \c@iRow
{
\begin { pgfpicture }
@@ -15850,9 +16228,9 @@ version 2005/12/01 or later.
\pgfusepathqfill
\endpgfpicture
}
- \dim_zero_new:N \g_@@_tmpc_dim
- \dim_zero_new:N \g_@@_tmpd_dim
- \dim_zero_new:N \g_@@_tmpe_dim
+ \dim_gzero_new:N \g_@@_tmpc_dim
+ \dim_gzero_new:N \g_@@_tmpd_dim
+ \dim_gzero_new:N \g_@@_tmpe_dim
\int_step_inline:nn \c@iRow
{
\bool_if:NTF \l_@@_in_code_after_bool
@@ -15977,7 +16355,7 @@ version 2005/12/01 or later.
%
%
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / Package }
+\keys_define:nn { nicematrix / Package }
{
renew-dots .bool_set:N = \l_@@_renew_dots_bool ,
renew-dots .value_forbidden:n = true ,
@@ -15990,7 +16368,7 @@ version 2005/12/01 or later.
no-test-for-array .default:n = true ,
unknown .code:n = \@@_error:n { Unknown~key~for~package }
}
-\ProcessKeysOptions { NiceMatrix / Package }
+\ProcessKeysOptions { nicematrix / Package }
% \end{macrocode}
%
% \bigskip
@@ -16207,7 +16585,7 @@ version 2005/12/01 or later.
~you~try~to~use~more~columns~than~allowed~by~your~
\@@_full_name_env:.\@@_message_hdotsfor:\ The~maximal~number~of~columns~is~
\int_use:N \g_@@_static_num_of_col_int\
- ~(plus~the~potential~exterior~ones).
+ ~(plus~the~potential~exterior~ones).~
This~error~is~fatal.
}
% \end{macrocode}
@@ -16224,6 +16602,15 @@ version 2005/12/01 or later.
}
% \end{macrocode}
%
+% \begin{macrocode}
+\@@_msg_new:nn { empty~preamble }
+ {
+ Empty~preamble.\\
+ The~preamble~of~your~\@@_full_name_env:\ is~empty.\\
+ This~error~is~fatal.
+ }
+% \end{macrocode}
+%
%
% \begin{macrocode}
\@@_msg_new:nn { in~first~col }
@@ -16471,7 +16858,7 @@ version 2005/12/01 or later.
Incompatible~keys.\\
You~can't~use~the~keys~'hlines',~'vlines'~or~'hvlines'~for~a~
'\token_to_str:N \Block'~when~the~key~'color'~or~'draw'~is~used.\\
- Maybe~it~will~possible~in~future~version.\\
+ However,~you~can~put~several~commands~\token_to_str:N \Block.\\
Your~key~will~be~discarded.
}
% \end{macrocode}
@@ -16512,7 +16899,7 @@ version 2005/12/01 or later.
\@@_msg_new:nn { ragged2e~not~loaded }
{
You~have~to~load~'ragged2e'~in~order~to~use~the~key~'\l_keys_key_str'~in~
- your~column~'\l_@@_vpos_col_str'~(or~'X').~The~key~'\str_lowercase:V
+ your~column~'\l_@@_vpos_col_str'~(or~'X').~The~key~'\str_lowercase:o
\l_keys_key_str'~will~be~used~instead.
}
% \end{macrocode}
@@ -16971,9 +17358,10 @@ version 2005/12/01 or later.
\c_@@_available_keys_str
}
{
- The~available~keys~are~(in~alphabetic~order):~b,~B,~borders,~c,~draw,~fill,~
- hlines,~hvlines,~l,~line-width,~name,~opacity,~rounded-corners,~r,~
- respect-arraystretch,~t,~T,~tikz,~transparent~and~vlines.
+ The~available~keys~are~(in~alphabetic~order):~&-in-blocks,~ampersand-in-blocks,~
+ b,~B,~borders,~c,~draw,~fill,~hlines,~hvlines,~l,~line-width,~name,~
+ opacity,~rounded-corners,~r,~respect-arraystretch,~t,~T,~tikz,~transparent~
+ and~vlines.
}
% \end{macrocode}
%
@@ -17107,7 +17495,9 @@ version 2005/12/01 or later.
}
{
The~available~keys~are~(in~alphabetic~order):~
+ &-in-blocks,~
allow-duplicate-names,~
+ ampersand-in-blocks,~
caption-above,~
cell-space-bottom-limit,~
cell-space-limits,~
@@ -17121,6 +17511,7 @@ version 2005/12/01 or later.
create-extra-nodes,~
create-medium-nodes,~
create-large-nodes,~
+ custom-line,~
delimiters~(several~subkeys),~
end-of-row,~
first-col,~
@@ -17164,6 +17555,8 @@ version 2005/12/01 or later.
}
{
The~available~keys~are~(in~alphabetic~order):~
+ &-in-blocks,~
+ ampersand-in-blocks,~
b,~
baseline,~
c,~
@@ -17214,8 +17607,8 @@ version 2005/12/01 or later.
% \end{macrocode}
%
% \medskip
-% This error message is used for the set of keys |NiceMatrix/NiceMatrix| and
-% |NiceMatrix/pNiceArray| (but not by |NiceMatrix/NiceArray| because, for this
+% This error message is used for the set of keys |nicematrix/NiceMatrix| and
+% |nicematrix/pNiceArray| (but not by |nicematrix/NiceArray| because, for this
% set of keys, there is no |l| and |r|).
% \begin{macrocode}
\@@_msg_new:nnn { Unknown~key~for~NiceMatrix }
@@ -17228,6 +17621,8 @@ version 2005/12/01 or later.
}
{
The~available~keys~are~(in~alphabetic~order):~
+ &-in-blocks,~
+ ampersand-in-blocks,~
b,~
baseline,~
c,~
@@ -17291,6 +17686,8 @@ version 2005/12/01 or later.
}
{
The~available~keys~are~(in~alphabetic~order):~
+ &-in-blocks,~
+ ampersand-in-blocks,~
b,~
baseline,~
c,~
diff --git a/macros/latex/contrib/nicematrix/nicematrix-code.pdf b/macros/latex/contrib/nicematrix/nicematrix-code.pdf
new file mode 100644
index 0000000000..8d79c6ecdf
--- /dev/null
+++ b/macros/latex/contrib/nicematrix/nicematrix-code.pdf
@@ -0,0 +1,53124 @@
+%PDF-1.5
+%
+4 0 obj
+<< /S /GoTo /D (section.0.1) >>
+endobj
+7 0 obj
+(\376\377\0001\000\040\000D\000e\000c\000l\000a\000r\000a\000t\000i\000o\000n\000\040\000o\000f\000\040\000t\000h\000e\000\040\000p\000a\000c\000k\000a\000g\000e\000\040\000a\000n\000d\000\040\000p\000a\000c\000k\000a\000g\000e\000s\000\040\000l\000o\000a\000d\000e\000d)
+
+endobj
+8 0 obj
+<< /S /GoTo /D (section.0.2) >>
+endobj
+11 0 obj
+(\376\377\0002\000\040\000S\000e\000c\000u\000r\000i\000t\000y\000\040\000t\000e\000s\000t)
+
+endobj
+12 0 obj
+<< /S /GoTo /D (section.0.3) >>
+endobj
+15 0 obj
+(\376\377\0003\000\040\000C\000o\000l\000l\000e\000c\000t\000i\000n\000g\000\040\000o\000p\000t\000i\000o\000n\000s)
+
+endobj
+16 0 obj
+<< /S /GoTo /D (section.0.4) >>
+endobj
+19 0 obj
+(\376\377\0004\000\040\000T\000e\000c\000h\000n\000i\000c\000a\000l\000\040\000d\000e\000f\000i\000n\000i\000t\000i\000o\000n\000s)
+
+endobj
+20 0 obj
+<< /S /GoTo /D (section.0.5) >>
+endobj
+23 0 obj
+(\376\377\0005\000\040\000P\000a\000r\000a\000m\000e\000t\000e\000r\000s)
+
+endobj
+24 0 obj
+<< /S /GoTo /D (section.0.6) >>
+endobj
+27 0 obj
+(\376\377\0006\000\040\000T\000h\000e\000\040\000c\000o\000m\000m\000a\000n\000d\000\040\000\134\000t\000a\000b\000u\000l\000a\000r\000n\000o\000t\000e)
+
+endobj
+28 0 obj
+<< /S /GoTo /D (section.0.7) >>
+endobj
+31 0 obj
+(\376\377\0007\000\040\000C\000o\000m\000m\000a\000n\000d\000\040\000f\000o\000r\000\040\000c\000r\000e\000a\000t\000i\000o\000n\000\040\000o\000f\000\040\000r\000e\000c\000t\000a\000n\000g\000l\000e\000\040\000n\000o\000d\000e\000s)
+
+endobj
+32 0 obj
+<< /S /GoTo /D (section.0.8) >>
+endobj
+35 0 obj
+(\376\377\0008\000\040\000T\000h\000e\000\040\000o\000p\000t\000i\000o\000n\000s)
+
+endobj
+36 0 obj
+<< /S /GoTo /D (section.0.9) >>
+endobj
+39 0 obj
+(\376\377\0009\000\040\000I\000m\000p\000o\000r\000t\000a\000n\000t\000\040\000c\000o\000d\000e\000\040\000u\000s\000e\000d\000\040\000b\000y\000\040\000\173\000N\000i\000c\000e\000A\000r\000r\000a\000y\000W\000i\000t\000h\000D\000e\000l\000i\000m\000s\000\175\000\040)
+
+endobj
+40 0 obj
+<< /S /GoTo /D (section.0.10) >>
+endobj
+43 0 obj
+(\376\377\0001\0000\000\040\000T\000h\000e\000\040\000\134\000C\000o\000d\000e\000B\000e\000f\000o\000r\000e)
+
+endobj
+44 0 obj
+<< /S /GoTo /D (section.0.11) >>
+endobj
+47 0 obj
+(\376\377\0001\0001\000\040\000T\000h\000e\000\040\000e\000n\000v\000i\000r\000o\000n\000m\000e\000n\000t\000\040\000\173\000N\000i\000c\000e\000A\000r\000r\000a\000y\000W\000i\000t\000h\000D\000e\000l\000i\000m\000s\000\175)
+
+endobj
+48 0 obj
+<< /S /GoTo /D (section.0.12) >>
+endobj
+51 0 obj
+(\376\377\0001\0002\000\040\000W\000e\000\040\000c\000o\000n\000s\000t\000r\000u\000c\000t\000\040\000t\000h\000e\000\040\000p\000r\000e\000a\000m\000b\000l\000e\000\040\000o\000f\000\040\000t\000h\000e\000\040\000a\000r\000r\000a\000y)
+
+endobj
+52 0 obj
+<< /S /GoTo /D (section.0.13) >>
+endobj
+55 0 obj
+(\376\377\0001\0003\000\040\000T\000h\000e\000\040\000r\000e\000d\000e\000f\000i\000n\000i\000t\000i\000o\000n\000\040\000o\000f\000\040\000\134\000m\000u\000l\000t\000i\000c\000o\000l\000u\000m\000n)
+
+endobj
+56 0 obj
+<< /S /GoTo /D (section.0.14) >>
+endobj
+59 0 obj
+(\376\377\0001\0004\000\040\000T\000h\000e\000\040\000e\000n\000v\000i\000r\000o\000n\000m\000e\000n\000t\000\040\000\173\000N\000i\000c\000e\000M\000a\000t\000r\000i\000x\000\175\000\040\000a\000n\000d\000\040\000i\000t\000s\000\040\000v\000a\000r\000i\000a\000n\000t\000s)
+
+endobj
+60 0 obj
+<< /S /GoTo /D (section.0.15) >>
+endobj
+63 0 obj
+(\376\377\0001\0005\000\040\000\173\000N\000i\000c\000e\000T\000a\000b\000u\000l\000a\000r\000\175\000,\000\040\000\173\000N\000i\000c\000e\000T\000a\000b\000u\000l\000a\000r\000X\000\175\000\040\000a\000n\000d\000\040\000\173\000N\000i\000c\000e\000T\000a\000b\000u\000l\000a\000r\000*\000\175)
+
+endobj
+64 0 obj
+<< /S /GoTo /D (section.0.16) >>
+endobj
+67 0 obj
+(\376\377\0001\0006\000\040\000A\000f\000t\000e\000r\000\040\000t\000h\000e\000\040\000c\000o\000n\000s\000t\000r\000u\000c\000t\000i\000o\000n\000\040\000o\000f\000\040\000t\000h\000e\000\040\000a\000r\000r\000a\000y)
+
+endobj
+68 0 obj
+<< /S /GoTo /D (section.0.17) >>
+endobj
+71 0 obj
+(\376\377\0001\0007\000\040\000W\000e\000\040\000d\000r\000a\000w\000\040\000t\000h\000e\000\040\000d\000o\000t\000t\000e\000d\000\040\000l\000i\000n\000e\000s)
+
+endobj
+72 0 obj
+<< /S /GoTo /D (section.0.18) >>
+endobj
+75 0 obj
+(\376\377\0001\0008\000\040\000T\000h\000e\000\040\000a\000c\000t\000u\000a\000l\000\040\000i\000n\000s\000t\000r\000u\000c\000t\000i\000o\000n\000s\000\040\000f\000o\000r\000\040\000d\000r\000a\000w\000i\000n\000g\000\040\000t\000h\000e\000\040\000d\000o\000t\000t\000e\000d\000\040\000l\000i\000n\000e\000s\000\040\000w\000i\000t\000h\000\040\000T\000i\000k\000z)
+
+endobj
+76 0 obj
+<< /S /GoTo /D (section.0.19) >>
+endobj
+79 0 obj
+(\376\377\0001\0009\000\040\000U\000s\000e\000r\000\040\000c\000o\000m\000m\000a\000n\000d\000s\000\040\000a\000v\000a\000i\000l\000a\000b\000l\000e\000\040\000i\000n\000\040\000t\000h\000e\000\040\000n\000e\000w\000\040\000e\000n\000v\000i\000r\000o\000n\000m\000e\000n\000t\000s)
+
+endobj
+80 0 obj
+<< /S /GoTo /D (section.0.20) >>
+endobj
+83 0 obj
+(\376\377\0002\0000\000\040\000T\000h\000e\000\040\000c\000o\000m\000m\000a\000n\000d\000\040\000\134\000l\000i\000n\000e\000\040\000a\000c\000c\000e\000s\000s\000i\000b\000l\000e\000\040\000i\000n\000\040\000c\000o\000d\000e\000-\000a\000f\000t\000e\000r)
+
+endobj
+84 0 obj
+<< /S /GoTo /D (section.0.21) >>
+endobj
+87 0 obj
+(\376\377\0002\0001\000\040\000T\000h\000e\000\040\000c\000o\000m\000m\000a\000n\000d\000\040\000\134\000R\000o\000w\000S\000t\000y\000l\000e)
+
+endobj
+88 0 obj
+<< /S /GoTo /D (section.0.22) >>
+endobj
+91 0 obj
+(\376\377\0002\0002\000\040\000C\000o\000l\000o\000r\000s\000\040\000o\000f\000\040\000c\000e\000l\000l\000s\000,\000\040\000r\000o\000w\000s\000\040\000a\000n\000d\000\040\000c\000o\000l\000u\000m\000n\000s)
+
+endobj
+92 0 obj
+<< /S /GoTo /D (section.0.23) >>
+endobj
+95 0 obj
+(\376\377\0002\0003\000\040\000T\000h\000e\000\040\000v\000e\000r\000t\000i\000c\000a\000l\000\040\000a\000n\000d\000\040\000h\000o\000r\000i\000z\000o\000n\000t\000a\000l\000\040\000r\000u\000l\000e\000s)
+
+endobj
+96 0 obj
+<< /S /GoTo /D (section.0.24) >>
+endobj
+99 0 obj
+(\376\377\0002\0004\000\040\000T\000h\000e\000\040\000e\000m\000p\000t\000y\000\040\000c\000o\000r\000n\000e\000r\000s)
+
+endobj
+100 0 obj
+<< /S /GoTo /D (section.0.25) >>
+endobj
+103 0 obj
+(\376\377\0002\0005\000\040\000T\000h\000e\000\040\000e\000n\000v\000i\000r\000o\000n\000m\000e\000n\000t\000\040\000\173\000N\000i\000c\000e\000M\000a\000t\000r\000i\000x\000B\000l\000o\000c\000k\000\175)
+
+endobj
+104 0 obj
+<< /S /GoTo /D (section.0.26) >>
+endobj
+107 0 obj
+(\376\377\0002\0006\000\040\000T\000h\000e\000\040\000e\000x\000t\000r\000a\000\040\000n\000o\000d\000e\000s)
+
+endobj
+108 0 obj
+<< /S /GoTo /D (section.0.27) >>
+endobj
+111 0 obj
+(\376\377\0002\0007\000\040\000T\000h\000e\000\040\000b\000l\000o\000c\000k\000s)
+
+endobj
+112 0 obj
+<< /S /GoTo /D (section.0.28) >>
+endobj
+115 0 obj
+(\376\377\0002\0008\000\040\000H\000o\000w\000\040\000t\000o\000\040\000d\000r\000a\000w\000\040\000t\000h\000e\000\040\000d\000o\000t\000t\000e\000d\000\040\000l\000i\000n\000e\000s\000\040\000t\000r\000a\000n\000s\000p\000a\000r\000e\000n\000t\000l\000y)
+
+endobj
+116 0 obj
+<< /S /GoTo /D (section.0.29) >>
+endobj
+119 0 obj
+(\376\377\0002\0009\000\040\000A\000u\000t\000o\000m\000a\000t\000i\000c\000\040\000a\000r\000r\000a\000y\000s)
+
+endobj
+120 0 obj
+<< /S /GoTo /D (section.0.30) >>
+endobj
+123 0 obj
+(\376\377\0003\0000\000\040\000T\000h\000e\000\040\000r\000e\000d\000e\000f\000i\000n\000i\000t\000i\000o\000n\000\040\000o\000f\000\040\000t\000h\000e\000\040\000c\000o\000m\000m\000a\000n\000d\000\040\000\134\000d\000o\000t\000f\000i\000l\000l\000\040)
+
+endobj
+124 0 obj
+<< /S /GoTo /D (section.0.31) >>
+endobj
+127 0 obj
+(\376\377\0003\0001\000\040\000T\000h\000e\000\040\000c\000o\000m\000m\000a\000n\000d\000\040\000\134\000d\000i\000a\000g\000b\000o\000x)
+
+endobj
+128 0 obj
+<< /S /GoTo /D (section.0.32) >>
+endobj
+131 0 obj
+(\376\377\0003\0002\000\040\000T\000h\000e\000\040\000k\000e\000y\000w\000o\000r\000d\000\040\000\134\000C\000o\000d\000e\000A\000f\000t\000e\000r)
+
+endobj
+132 0 obj
+<< /S /GoTo /D (section.0.33) >>
+endobj
+135 0 obj
+(\376\377\0003\0003\000\040\000T\000h\000e\000\040\000d\000e\000l\000i\000m\000i\000t\000e\000r\000s\000\040\000i\000n\000\040\000t\000h\000e\000\040\000p\000r\000e\000a\000m\000b\000l\000e)
+
+endobj
+136 0 obj
+<< /S /GoTo /D (section.0.34) >>
+endobj
+139 0 obj
+(\376\377\0003\0004\000\040\000T\000h\000e\000\040\000c\000o\000m\000m\000a\000n\000d\000\040\000\134\000S\000u\000b\000M\000a\000t\000r\000i\000x)
+
+endobj
+140 0 obj
+<< /S /GoTo /D (section.0.35) >>
+endobj
+143 0 obj
+(\376\377\0003\0005\000\040\000L\000e\000s\000\040\000c\000o\000m\000m\000a\000n\000d\000e\000s\000\040\000\134\000U\000n\000d\000e\000r\000B\000r\000a\000c\000e\000\040\000e\000t\000\040\000\134\000O\000v\000e\000r\000B\000r\000a\000c\000e)
+
+endobj
+144 0 obj
+<< /S /GoTo /D (section.0.36) >>
+endobj
+147 0 obj
+(\376\377\0003\0006\000\040\000T\000h\000e\000\040\000c\000o\000m\000m\000a\000n\000d\000\040\000T\000i\000k\000z\000E\000v\000e\000r\000y\000C\000e\000l\000l)
+
+endobj
+148 0 obj
+<< /S /GoTo /D (section.0.37) >>
+endobj
+151 0 obj
+(\376\377\0003\0007\000\040\000T\000h\000e\000\040\000c\000o\000m\000m\000a\000n\000d\000\040\000\134\000S\000h\000o\000w\000C\000e\000l\000l\000N\000a\000m\000e\000s)
+
+endobj
+152 0 obj
+<< /S /GoTo /D (section.0.38) >>
+endobj
+155 0 obj
+(\376\377\0003\0008\000\040\000W\000e\000\040\000p\000r\000o\000c\000e\000s\000s\000\040\000t\000h\000e\000\040\000o\000p\000t\000i\000o\000n\000s\000\040\000a\000t\000\040\000p\000a\000c\000k\000a\000g\000e\000\040\000l\000o\000a\000d\000i\000n\000g)
+
+endobj
+156 0 obj
+<< /S /GoTo /D (section.0.39) >>
+endobj
+159 0 obj
+(\376\377\0003\0009\000\040\000A\000b\000o\000u\000t\000\040\000t\000h\000e\000\040\000p\000a\000c\000k\000a\000g\000e\000\040\000u\000n\000d\000e\000r\000s\000c\000o\000r\000e)
+
+endobj
+160 0 obj
+<< /S /GoTo /D (section.0.40) >>
+endobj
+163 0 obj
+(\376\377\0004\0000\000\040\000E\000r\000r\000o\000r\000\040\000m\000e\000s\000s\000a\000g\000e\000s\000\040\000o\000f\000\040\000t\000h\000e\000\040\000p\000a\000c\000k\000a\000g\000e)
+
+endobj
+164 0 obj
+<< /S /GoTo /D (toc1.1) >>
+endobj
+167 0 obj
+(\376\377\000C\000o\000n\000t\000e\000n\000t\000s)
+
+endobj
+168 0 obj
+<< /S /GoTo /D [ 169 0 R /FitBH 771.02165 ] >>
+endobj
+171 0 obj
+<< /Filter /FlateDecode /Length 2080 >>
+stream
+xڝYmo_ox W4Ns\#E/cMQԑ_` -La>$wwvٙyf*3o%d<#0ciE2|$ *Ӆ?uؙYc8=q؞̋ !(
+ĥ_0fALQ1*bY #g;+AOΩNrO>$ߎID
+9
+~4s~s2=t2@3E*愂_Ƣ)<釃~a=H*~tzݝ>Vb 7oO'`̉Р+W^`/ՊAJۡ}Wnte] k2;ѭJglhڀ>p<sp[,Oj4vߕ2չiSTY*$ʧ+S:;Fy_K1Cx
+OZ;HXFJ"2UJclr*ĒeS|2 GMm2"
+I{NZ߾nj~6-cl Rڼ`6Qrl跺kʮ=Q~zگWnC0gL7>HѐؤJCKJ %-OM} ok#*Kq(EvQ><!}w}Xbp:͑֡Vp E8nƖӡ@]e(Z*u"5McZCQe]lv͆}~z5_=B!HBuo.s+iB]eysSzg ,O&
+#X,zH@f#dEspF,hm
+'xdK1->(l
+Dcm q\ico1} !ӞLD4 :jR}tq() rHl{8]e\'P6N_M"+6K~Qwüoww0YB)"'"T'p-:8TE nzs MP۽g-nvpmWN
+{j%t-Gda>Bw+Oc;tit h+5+8\M;#7dR1jvЈ`0ht~P!{Z 53GaNؘ'Xg#z2dEgѢƈj۳_ L'wnMP DRB4 T+9!Y6FMBYˣ|. 3(@hwamÀeszQTTCh񣒌$D3MwЖOpSQ^ㅏP4 m
+endstream
+endobj
+169 0 obj
+<< /Type /Page /Contents 171 0 R /Resources 170 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 206 0 R >>
+endobj
+172 0 obj
+<< /D [ 169 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+173 0 obj
+<< /D [ 169 0 R /XYZ 79.37 771.024 null ] >>
+endobj
+5 0 obj
+<< /D [ 169 0 R /XYZ 79.37 516.661 null ] >>
+endobj
+188 0 obj
+<< /D [ 169 0 R /XYZ 77.103 376.109 null ] >>
+endobj
+190 0 obj
+<< /D [ 169 0 R /XYZ 77.103 365.15 null ] >>
+endobj
+191 0 obj
+<< /D [ 169 0 R /XYZ 77.103 336.492 null ] >>
+endobj
+192 0 obj
+<< /D [ 169 0 R /XYZ 77.103 325.533 null ] >>
+endobj
+193 0 obj
+<< /D [ 169 0 R /XYZ 77.103 314.574 null ] >>
+endobj
+194 0 obj
+<< /D [ 169 0 R /XYZ 77.103 303.615 null ] >>
+endobj
+195 0 obj
+<< /D [ 169 0 R /XYZ 77.103 292.656 null ] >>
+endobj
+196 0 obj
+<< /D [ 169 0 R /XYZ 77.103 281.697 null ] >>
+endobj
+197 0 obj
+<< /D [ 169 0 R /XYZ 77.103 216.232 null ] >>
+endobj
+198 0 obj
+<< /D [ 169 0 R /XYZ 78.427 184.289 null ] >>
+endobj
+199 0 obj
+<< /D [ 169 0 R /XYZ 78.427 153.755 null ] >>
+endobj
+200 0 obj
+<< /D [ 169 0 R /XYZ 78.427 142.796 null ] >>
+endobj
+201 0 obj
+<< /D [ 169 0 R /XYZ 78.427 131.837 null ] >>
+endobj
+202 0 obj
+<< /D [ 169 0 R /XYZ 78.427 120.879 null ] >>
+endobj
+203 0 obj
+<< /D [ 169 0 R /XYZ 78.427 109.92 null ] >>
+endobj
+170 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F39 174 0 R /F40 175 0 R /F46 176 0 R /F51 177 0 R /F62 178 0 R /F66 179 0 R /F65 180 0 R /F67 181 0 R /F68 182 0 R /F69 183 0 R /F19 184 0 R /F70 185 0 R /F20 186 0 R /F72 187 0 R /F73 189 0 R /F57 204 0 R /F63 205 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+209 0 obj
+<< /Filter /FlateDecode /Length 1990 >>
+stream
+xڵZ]۸}_aXT0> X٢/Ʀ=jeɕLg/m8 $<N</72m_npʙbyƥ-73>9,M8>[lgxr}OY$㯡T˾hs,?;-XO麶cٗcնRʦZm9tc4s$ux,dJ"9^E욪ټBP>DeθH4#B)yy9߇I4P1ˮ*apQ2odS&vf`
+%-7V}*NH$IDЫˡ_q<{IS$)($(eC3SLiJ)* x"pYDM Ls&YLq N:H#զ\EY=ڒ[YzkҨtUk?~kvpmU/}U{6ms~%vBNOq5Ó B Y'tfJk`4Ul-2
+m{s/t=؋,gۭ\8 Lsa۶÷Y,h6v"d-=t0mG,~87 J2I*G='O}8ܚQ1+ym'W>~?mK_+;Λtl€Iδe~7Wd_?;eBKdy؍ D+fgu\-WwC5v~5T!s)TMPTKP}3 `
+BVadŕɀhk'mZvp}
+}
+۞j/*@Wz ^ᢿq| WTVOaJ&(EF#=Ş'XJOMC'ew5fym&ǣ%΢[ d Xj=ٷereO!ϪݛO6׾ߗu:'-Or\]۸V8ZfO$rɤ-HV$Vj<989ZH#ϲL$7q^٪^>$&*Y`IJiP:Z,)=`'(9:s7-ly0"нKE_WJMW1
+[$.h`_3أؕvp8 CP/})(LͲ#~<;*+*(#NR0\ zWޮ/+<cݏӁD
+endstream
+endobj
+208 0 obj
+<< /Type /Page /Contents 209 0 R /Resources 207 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 206 0 R >>
+endobj
+210 0 obj
+<< /D [ 208 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+211 0 obj
+<< /D [ 208 0 R /XYZ 78.427 768.832 null ] >>
+endobj
+212 0 obj
+<< /D [ 208 0 R /XYZ 78.427 757.873 null ] >>
+endobj
+213 0 obj
+<< /D [ 208 0 R /XYZ 78.427 746.914 null ] >>
+endobj
+214 0 obj
+<< /D [ 208 0 R /XYZ 78.427 735.955 null ] >>
+endobj
+215 0 obj
+<< /D [ 208 0 R /XYZ 78.427 724.996 null ] >>
+endobj
+216 0 obj
+<< /D [ 208 0 R /XYZ 78.427 714.037 null ] >>
+endobj
+217 0 obj
+<< /D [ 208 0 R /XYZ 78.427 703.078 null ] >>
+endobj
+218 0 obj
+<< /D [ 208 0 R /XYZ 78.427 692.119 null ] >>
+endobj
+219 0 obj
+<< /D [ 208 0 R /XYZ 78.427 625.37 null ] >>
+endobj
+220 0 obj
+<< /D [ 208 0 R /XYZ 78.427 614.411 null ] >>
+endobj
+221 0 obj
+<< /D [ 208 0 R /XYZ 78.427 603.452 null ] >>
+endobj
+222 0 obj
+<< /D [ 208 0 R /XYZ 78.427 592.493 null ] >>
+endobj
+223 0 obj
+<< /D [ 208 0 R /XYZ 78.427 581.534 null ] >>
+endobj
+224 0 obj
+<< /D [ 208 0 R /XYZ 78.427 570.575 null ] >>
+endobj
+225 0 obj
+<< /D [ 208 0 R /XYZ 78.427 517.773 null ] >>
+endobj
+226 0 obj
+<< /D [ 208 0 R /XYZ 78.427 506.814 null ] >>
+endobj
+227 0 obj
+<< /D [ 208 0 R /XYZ 78.427 465.967 null ] >>
+endobj
+228 0 obj
+<< /D [ 208 0 R /XYZ 78.427 455.009 null ] >>
+endobj
+229 0 obj
+<< /D [ 208 0 R /XYZ 78.427 444.05 null ] >>
+endobj
+230 0 obj
+<< /D [ 208 0 R /XYZ 78.427 433.091 null ] >>
+endobj
+231 0 obj
+<< /D [ 208 0 R /XYZ 78.427 422.132 null ] >>
+endobj
+232 0 obj
+<< /D [ 208 0 R /XYZ 78.427 411.173 null ] >>
+endobj
+233 0 obj
+<< /D [ 208 0 R /XYZ 78.427 380.289 null ] >>
+endobj
+234 0 obj
+<< /D [ 208 0 R /XYZ 78.427 369.33 null ] >>
+endobj
+235 0 obj
+<< /D [ 208 0 R /XYZ 78.427 358.371 null ] >>
+endobj
+236 0 obj
+<< /D [ 208 0 R /XYZ 78.427 347.412 null ] >>
+endobj
+237 0 obj
+<< /D [ 208 0 R /XYZ 78.427 336.453 null ] >>
+endobj
+238 0 obj
+<< /D [ 208 0 R /XYZ 78.427 325.494 null ] >>
+endobj
+239 0 obj
+<< /D [ 208 0 R /XYZ 78.427 314.535 null ] >>
+endobj
+240 0 obj
+<< /D [ 208 0 R /XYZ 78.427 303.576 null ] >>
+endobj
+241 0 obj
+<< /D [ 208 0 R /XYZ 78.427 292.618 null ] >>
+endobj
+242 0 obj
+<< /D [ 208 0 R /XYZ 78.427 281.659 null ] >>
+endobj
+243 0 obj
+<< /D [ 208 0 R /XYZ 78.427 270.7 null ] >>
+endobj
+244 0 obj
+<< /D [ 208 0 R /XYZ 78.427 259.741 null ] >>
+endobj
+245 0 obj
+<< /D [ 208 0 R /XYZ 78.427 248.782 null ] >>
+endobj
+246 0 obj
+<< /D [ 208 0 R /XYZ 78.427 237.823 null ] >>
+endobj
+247 0 obj
+<< /D [ 208 0 R /XYZ 78.427 226.864 null ] >>
+endobj
+248 0 obj
+<< /D [ 208 0 R /XYZ 78.427 215.905 null ] >>
+endobj
+249 0 obj
+<< /D [ 208 0 R /XYZ 78.427 204.946 null ] >>
+endobj
+250 0 obj
+<< /D [ 208 0 R /XYZ 78.427 193.987 null ] >>
+endobj
+251 0 obj
+<< /D [ 208 0 R /XYZ 78.427 183.028 null ] >>
+endobj
+252 0 obj
+<< /D [ 208 0 R /XYZ 78.427 140.189 null ] >>
+endobj
+253 0 obj
+<< /D [ 208 0 R /XYZ 78.427 129.23 null ] >>
+endobj
+9 0 obj
+<< /D [ 208 0 R /XYZ 79.37 104.523 null ] >>
+endobj
+207 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+256 0 obj
+<< /Filter /FlateDecode /Length 2385 >>
+stream
+xZ[o~ϯP+sSPM Th,Jd)T0{\(qdCB73f~~\2{$#efwn$#<Q9\!&h>&?f;aqB:|P̈́qrG%7YXOX4҂vE HRʿ>/
+LtF*솥0PQR8oREi⌅ Qe؄8՗9wXWE8*A޹K6J},JMles_I E|U|Mxܧ abW5GSXncSe!,G$<PUѲFVt=Tz$EĠoc@BBFc|d1ţ߆XM0=k_q R"Vv?J00y
+_1e?΍n|=7a=NP
+,|iByqkw<izUPV?Q>ܵ_#G8M+ͤ
+ze'l8'!r҆260u2$.e\o|z3Јh/! {HKy0ם+3C uk:4"]9VH>-6
+mc{̏+paߺg 5yY
+jRoUR#8桦%!۴sV
+(-U?sPdޢ&6iʨM7NiXs(".]іAgcAm?Y;M? .Μ
+ڦ *Am*B9?yu(0Wi۔miĹqcMnw0HnҼxntOV3eO[SE0vfż)uSMlbX8X;ՙϿߋ4uY\s,s"JF1c  _Gw ioiL1xrOm:5q`D%Or:V x<:V2AQ/ci({(3L1D
+.c+4qK 3UBGAE vfӎ^-&R $qEFW/ ehf94U7L=xۙ}o2cUN`WXX¡Z"FH$:l5g|/OgGx ! ~7S Y}z=n|NA1)C8P;[y[vDoZ0ZENtR{q6X%1@Mxe0s4l v<b psX
+01߂T&0^x(hT9h'J8bw#SmV}ɣ,kѿ݅D-H$ۨ>`Mf ]DT^)F  Rqd&Iұc>!@'qYӃF0ItjW'} h
+Sf8\11If7/Xyn\-HaP9C}U!}Y>7C3_lZ\uZd0Gv>CVZ{rXy VUK>6_nkeTSƙ׿SoI:x6hHn3U=!^3Ie"(
+l\j'Iˋ?9mzicDE^N^%HK<!u?
+
+endstream
+endobj
+255 0 obj
+<< /Type /Page /Contents 256 0 R /Resources 254 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 206 0 R >>
+endobj
+257 0 obj
+<< /D [ 255 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+258 0 obj
+<< /D [ 255 0 R /XYZ 78.427 623.082 null ] >>
+endobj
+259 0 obj
+<< /D [ 255 0 R /XYZ 78.427 612.123 null ] >>
+endobj
+260 0 obj
+<< /D [ 255 0 R /XYZ 78.427 601.164 null ] >>
+endobj
+261 0 obj
+<< /D [ 255 0 R /XYZ 78.427 590.206 null ] >>
+endobj
+262 0 obj
+<< /D [ 255 0 R /XYZ 78.427 579.247 null ] >>
+endobj
+263 0 obj
+<< /D [ 255 0 R /XYZ 78.427 568.288 null ] >>
+endobj
+265 0 obj
+<< /D [ 255 0 R /XYZ 78.427 557.329 null ] >>
+endobj
+266 0 obj
+<< /D [ 255 0 R /XYZ 78.427 546.37 null ] >>
+endobj
+267 0 obj
+<< /D [ 255 0 R /XYZ 78.427 535.411 null ] >>
+endobj
+268 0 obj
+<< /D [ 255 0 R /XYZ 78.427 503.18 null ] >>
+endobj
+269 0 obj
+<< /D [ 255 0 R /XYZ 78.427 492.222 null ] >>
+endobj
+270 0 obj
+<< /D [ 255 0 R /XYZ 78.427 481.263 null ] >>
+endobj
+271 0 obj
+<< /D [ 255 0 R /XYZ 78.427 470.304 null ] >>
+endobj
+272 0 obj
+<< /D [ 255 0 R /XYZ 78.427 459.345 null ] >>
+endobj
+273 0 obj
+<< /D [ 255 0 R /XYZ 78.427 427.114 null ] >>
+endobj
+274 0 obj
+<< /D [ 255 0 R /XYZ 78.427 416.155 null ] >>
+endobj
+275 0 obj
+<< /D [ 255 0 R /XYZ 78.427 405.196 null ] >>
+endobj
+276 0 obj
+<< /D [ 255 0 R /XYZ 78.427 394.237 null ] >>
+endobj
+277 0 obj
+<< /D [ 255 0 R /XYZ 78.427 383.279 null ] >>
+endobj
+278 0 obj
+<< /D [ 255 0 R /XYZ 78.427 372.32 null ] >>
+endobj
+279 0 obj
+<< /D [ 255 0 R /XYZ 78.427 361.361 null ] >>
+endobj
+280 0 obj
+<< /D [ 255 0 R /XYZ 78.427 329.13 null ] >>
+endobj
+281 0 obj
+<< /D [ 255 0 R /XYZ 78.427 318.171 null ] >>
+endobj
+282 0 obj
+<< /D [ 255 0 R /XYZ 78.427 307.212 null ] >>
+endobj
+283 0 obj
+<< /D [ 255 0 R /XYZ 78.427 296.253 null ] >>
+endobj
+284 0 obj
+<< /D [ 255 0 R /XYZ 78.427 285.295 null ] >>
+endobj
+285 0 obj
+<< /D [ 255 0 R /XYZ 78.427 274.336 null ] >>
+endobj
+286 0 obj
+<< /D [ 255 0 R /XYZ 78.427 263.377 null ] >>
+endobj
+287 0 obj
+<< /D [ 255 0 R /XYZ 78.427 252.418 null ] >>
+endobj
+288 0 obj
+<< /D [ 255 0 R /XYZ 78.427 241.459 null ] >>
+endobj
+289 0 obj
+<< /D [ 255 0 R /XYZ 78.427 230.5 null ] >>
+endobj
+290 0 obj
+<< /D [ 255 0 R /XYZ 78.427 219.541 null ] >>
+endobj
+291 0 obj
+<< /D [ 255 0 R /XYZ 78.427 208.582 null ] >>
+endobj
+292 0 obj
+<< /D [ 255 0 R /XYZ 78.427 197.623 null ] >>
+endobj
+293 0 obj
+<< /D [ 255 0 R /XYZ 78.427 186.664 null ] >>
+endobj
+294 0 obj
+<< /D [ 255 0 R /XYZ 78.427 175.705 null ] >>
+endobj
+295 0 obj
+<< /D [ 255 0 R /XYZ 78.427 133.431 null ] >>
+endobj
+296 0 obj
+<< /D [ 255 0 R /XYZ 78.427 122.473 null ] >>
+endobj
+297 0 obj
+<< /D [ 255 0 R /XYZ 78.427 111.514 null ] >>
+endobj
+298 0 obj
+<< /D [ 255 0 R /XYZ 78.427 100.555 null ] >>
+endobj
+299 0 obj
+<< /D [ 255 0 R /XYZ 78.427 89.596 null ] >>
+endobj
+300 0 obj
+<< /D [ 255 0 R /XYZ 79.752 78.637 null ] >>
+endobj
+254 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F72 187 0 R /F19 184 0 R /F70 185 0 R /F20 186 0 R /F73 189 0 R /F69 183 0 R /F74 264 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+303 0 obj
+<< /Filter /FlateDecode /Length 1762 >>
+stream
+xڭYMo8W(IYn
+!'{HCĨ,{eylCTDQ̴Dyn %_>O>^I:`H+L`8R2l Fjp3 Njx%@!-U],fPdo iBT SvWw,[h&T#̨gBOc"$Bar?[?Ly=.Ga1Wt
+_E#
+a<9v9)!2ǯ6pofZ $ X<KvEZW<4|vղ~< .3N\q\%[piG#HJF
+ƃy9[Xn!ʴ禢3
+7ejX˰ʭ =n
+X3>MBE f6.9*H7}2;/GaiuMۄipm,
+Apj 1YnjS OkԡfNOnp>-\jtSv[j fc8!9鵥jzM
+MmQ,*
+$H8#EMg\?`hA]?֙QK^?(`Hu5791EyD{nkq*mmI S{sMmF餞#ta<.$8T9AnS/B1E9P24]
+}6L>AAaA-~j)9M!ZB.t9)|8`Bb4/?]0yKSYDMh"D ;_ 3 wӿ*A\M⊎
+ufO4IQ`߹n6
+I5 v
+#Go6;dҐjIQm|϶8d[Mhb& FZccd"b
+endstream
+endobj
+302 0 obj
+<< /Type /Page /Contents 303 0 R /Resources 301 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 206 0 R >>
+endobj
+304 0 obj
+<< /D [ 302 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+305 0 obj
+<< /D [ 302 0 R /XYZ 79.752 768.832 null ] >>
+endobj
+306 0 obj
+<< /D [ 302 0 R /XYZ 79.752 757.873 null ] >>
+endobj
+307 0 obj
+<< /D [ 302 0 R /XYZ 79.752 746.914 null ] >>
+endobj
+308 0 obj
+<< /D [ 302 0 R /XYZ 79.752 735.955 null ] >>
+endobj
+309 0 obj
+<< /D [ 302 0 R /XYZ 79.752 724.996 null ] >>
+endobj
+310 0 obj
+<< /D [ 302 0 R /XYZ 79.752 714.037 null ] >>
+endobj
+311 0 obj
+<< /D [ 302 0 R /XYZ 79.752 703.078 null ] >>
+endobj
+312 0 obj
+<< /D [ 302 0 R /XYZ 79.752 692.119 null ] >>
+endobj
+313 0 obj
+<< /D [ 302 0 R /XYZ 79.752 681.16 null ] >>
+endobj
+314 0 obj
+<< /D [ 302 0 R /XYZ 79.752 670.202 null ] >>
+endobj
+315 0 obj
+<< /D [ 302 0 R /XYZ 79.752 659.243 null ] >>
+endobj
+316 0 obj
+<< /D [ 302 0 R /XYZ 79.752 648.284 null ] >>
+endobj
+13 0 obj
+<< /D [ 302 0 R /XYZ 79.37 625.133 null ] >>
+endobj
+319 0 obj
+<< /D [ 302 0 R /XYZ 79.752 436.219 null ] >>
+endobj
+320 0 obj
+<< /D [ 302 0 R /XYZ 79.752 425.26 null ] >>
+endobj
+321 0 obj
+<< /D [ 302 0 R /XYZ 79.752 414.301 null ] >>
+endobj
+322 0 obj
+<< /D [ 302 0 R /XYZ 79.752 403.342 null ] >>
+endobj
+323 0 obj
+<< /D [ 302 0 R /XYZ 79.752 392.383 null ] >>
+endobj
+324 0 obj
+<< /D [ 302 0 R /XYZ 79.752 381.424 null ] >>
+endobj
+325 0 obj
+<< /D [ 302 0 R /XYZ 79.752 327.065 null ] >>
+endobj
+326 0 obj
+<< /D [ 302 0 R /XYZ 79.752 316.106 null ] >>
+endobj
+327 0 obj
+<< /D [ 302 0 R /XYZ 79.752 305.147 null ] >>
+endobj
+328 0 obj
+<< /D [ 302 0 R /XYZ 79.752 294.188 null ] >>
+endobj
+329 0 obj
+<< /D [ 302 0 R /XYZ 79.752 283.23 null ] >>
+endobj
+330 0 obj
+<< /D [ 302 0 R /XYZ 79.752 272.271 null ] >>
+endobj
+331 0 obj
+<< /D [ 302 0 R /XYZ 79.752 261.312 null ] >>
+endobj
+332 0 obj
+<< /D [ 302 0 R /XYZ 79.752 250.353 null ] >>
+endobj
+333 0 obj
+<< /D [ 302 0 R /XYZ 79.752 239.394 null ] >>
+endobj
+334 0 obj
+<< /D [ 302 0 R /XYZ 79.752 228.435 null ] >>
+endobj
+335 0 obj
+<< /D [ 302 0 R /XYZ 79.752 217.476 null ] >>
+endobj
+336 0 obj
+<< /D [ 302 0 R /XYZ 79.752 206.517 null ] >>
+endobj
+17 0 obj
+<< /D [ 302 0 R /XYZ 79.37 182.121 null ] >>
+endobj
+337 0 obj
+<< /D [ 302 0 R /XYZ 79.752 100.555 null ] >>
+endobj
+338 0 obj
+<< /D [ 302 0 R /XYZ 79.752 89.596 null ] >>
+endobj
+339 0 obj
+<< /D [ 302 0 R /XYZ 79.752 78.637 null ] >>
+endobj
+301 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F72 187 0 R /F19 184 0 R /F20 186 0 R /F75 317 0 R /F76 318 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+342 0 obj
+<< /Filter /FlateDecode /Length 2526 >>
+stream
+xZs6~_J71$^k'x.7Z,62v "$vń@,b-h:-ë^z!I >^b0N$rhFfLzAgdZt((# e?p/i~*gWs1n^ۍz>~ «(a{*
+Pvo"K10)<fy(;yYɥyJX*=$
+Pbw#ԮR,!+=>޴SRTS{Y,kz3C@LAZЁ Lj/:D#fQ'//.E"z<
+@K#֜H᳉Q'|K+Fd ag?!x)b|6Q/=#Ŀ\De>ȨȞ
+b~e BTd v뵙] !jf<>j/aJsS4m=jӛOn]c{Uն4eU+-\Evp&qA>Uݝ)vQ(BFn*cDg.gv$ӼOsB6`5sз3E,D?s1rif1Sl
+ƅfT1(hvmjcwlfc˽Zeu,vQuÖ yƖH$ Tj'NiEmQ-uԭ4o?ܦcm5 ndFRգbilw)Mf~E^1Λ7e$:䴲 )I3U dRz0"oPR`ô"t,\W՗vB^ߘۢ\<Tx$y^``
+?.-3Jh):qJ* р?/c/C`ۅbK=39b_?T%P:V#8iSlA|L^]|=J≯v˨8r .b#M*BQ!j[,]m)H$*~X DM[kJCѻIuYԪ[&_ @޸qCQspOOgISH]^w^Mxn F֯qX
+ 4@ Mw~[' ʛ; &JxNKBm
+ K&٥Fu;I'./U!eUc|yz wp7Laym>-M,gQn)n~<8',DoeG IÇҝx؝k%5khN'm^ԣj0Qpʎ7qXrp:tWkrxMS.asV0p
+ոw&Kw9+|w!0̹*xXC5m]tMtl_"ad[.Y㑰ʪrD3@{}AyL%d \Rl{QpN -l'/"
+pSQLpA
+>NRM(c1Y1Ә}0<הdbǫx&@ˆըEIr ,e%
+endstream
+endobj
+341 0 obj
+<< /Type /Page /Contents 342 0 R /Resources 340 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 206 0 R >>
+endobj
+343 0 obj
+<< /D [ 341 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+344 0 obj
+<< /D [ 341 0 R /XYZ 79.752 768.832 null ] >>
+endobj
+345 0 obj
+<< /D [ 341 0 R /XYZ 79.752 757.873 null ] >>
+endobj
+346 0 obj
+<< /D [ 341 0 R /XYZ 79.752 746.914 null ] >>
+endobj
+347 0 obj
+<< /D [ 341 0 R /XYZ 79.752 735.955 null ] >>
+endobj
+348 0 obj
+<< /D [ 341 0 R /XYZ 79.752 724.996 null ] >>
+endobj
+349 0 obj
+<< /D [ 341 0 R /XYZ 79.752 714.037 null ] >>
+endobj
+350 0 obj
+<< /D [ 341 0 R /XYZ 79.752 703.078 null ] >>
+endobj
+351 0 obj
+<< /D [ 341 0 R /XYZ 79.752 692.119 null ] >>
+endobj
+352 0 obj
+<< /D [ 341 0 R /XYZ 79.752 681.16 null ] >>
+endobj
+353 0 obj
+<< /D [ 341 0 R /XYZ 79.752 670.202 null ] >>
+endobj
+354 0 obj
+<< /D [ 341 0 R /XYZ 79.752 659.243 null ] >>
+endobj
+355 0 obj
+<< /D [ 341 0 R /XYZ 79.752 648.284 null ] >>
+endobj
+356 0 obj
+<< /D [ 341 0 R /XYZ 79.752 637.325 null ] >>
+endobj
+357 0 obj
+<< /D [ 341 0 R /XYZ 79.752 626.366 null ] >>
+endobj
+358 0 obj
+<< /D [ 341 0 R /XYZ 79.752 573.564 null ] >>
+endobj
+359 0 obj
+<< /D [ 341 0 R /XYZ 79.752 557.624 null ] >>
+endobj
+360 0 obj
+<< /D [ 341 0 R /XYZ 79.752 546.665 null ] >>
+endobj
+361 0 obj
+<< /D [ 341 0 R /XYZ 79.752 519.766 null ] >>
+endobj
+362 0 obj
+<< /D [ 341 0 R /XYZ 79.752 508.807 null ] >>
+endobj
+363 0 obj
+<< /D [ 341 0 R /XYZ 79.752 497.848 null ] >>
+endobj
+364 0 obj
+<< /D [ 341 0 R /XYZ 79.752 486.889 null ] >>
+endobj
+365 0 obj
+<< /D [ 341 0 R /XYZ 79.752 372.319 null ] >>
+endobj
+366 0 obj
+<< /D [ 341 0 R /XYZ 79.752 361.36 null ] >>
+endobj
+367 0 obj
+<< /D [ 341 0 R /XYZ 79.752 350.401 null ] >>
+endobj
+368 0 obj
+<< /D [ 341 0 R /XYZ 79.752 339.442 null ] >>
+endobj
+369 0 obj
+<< /D [ 341 0 R /XYZ 79.752 328.483 null ] >>
+endobj
+370 0 obj
+<< /D [ 341 0 R /XYZ 79.752 317.524 null ] >>
+endobj
+371 0 obj
+<< /D [ 341 0 R /XYZ 79.752 306.565 null ] >>
+endobj
+372 0 obj
+<< /D [ 341 0 R /XYZ 79.752 295.606 null ] >>
+endobj
+373 0 obj
+<< /D [ 341 0 R /XYZ 79.752 240.812 null ] >>
+endobj
+374 0 obj
+<< /D [ 341 0 R /XYZ 79.752 229.853 null ] >>
+endobj
+375 0 obj
+<< /D [ 341 0 R /XYZ 79.752 218.894 null ] >>
+endobj
+376 0 obj
+<< /D [ 341 0 R /XYZ 79.752 207.935 null ] >>
+endobj
+377 0 obj
+<< /D [ 341 0 R /XYZ 79.752 196.976 null ] >>
+endobj
+378 0 obj
+<< /D [ 341 0 R /XYZ 79.752 186.017 null ] >>
+endobj
+379 0 obj
+<< /D [ 341 0 R /XYZ 79.752 155.133 null ] >>
+endobj
+380 0 obj
+<< /D [ 341 0 R /XYZ 79.752 144.174 null ] >>
+endobj
+381 0 obj
+<< /D [ 341 0 R /XYZ 79.752 133.215 null ] >>
+endobj
+382 0 obj
+<< /D [ 341 0 R /XYZ 79.752 122.256 null ] >>
+endobj
+383 0 obj
+<< /D [ 341 0 R /XYZ 79.752 111.297 null ] >>
+endobj
+340 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F76 318 0 R /F70 185 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+386 0 obj
+<< /Filter /FlateDecode /Length 2716 >>
+stream
+xڽZo߿=Tv<n8lh{bӶ[J%9Nɢf-Qp7Cr'w?=H4;LFLNdNv3gequ+/~nj_} YU}ö5Miu7Ccc)Tl)q|(Deg?}-uk§8+k0=
+Iá~'?,s0_l$Z.0œ]^
+#q8~=14, 'x\#B3գ׳+*UQ-aM]Cٹ mj6jL\h+Zs`yiƃW4ϞF Rfۀs7f\(IDD*33+`STYm*u*SYn[b{(HJf s$<šxX%2
+&I45|HB24 k@'T,.,.sr:t+9ɾ4Wޗ*K#?NFSavi9DGYpW?`-NEv?$AλuמTl[n)5ߓ&dfp߱`X" )<j̃-$CZ$W0
+dO)ouET."d)08[<p'p#a k!eUAk I~T刄5Uvm$l5Й4lqI8 X⺫Whۇ몊!;~heW 5dsQ4 8}CM4\c3wsݥYF?Xߌ@i`[;(5?k`F£5~Ջ_cV vVU€䢏
+Z%H o$8UzHQ*̞.JH breW+k đ:ɂ)G94=v1ރ~rvM) +B,EhR%\eUp\d8K'90fP^w 4|]՗[ ҁ1~x)mAxpcL$k _}t?b)ne j|,E;Yp>܆P&svL4,uiԦnS=4fVf|,<r%Ի[@Xh.T
+gpYGx՟-Y'J݉?Xr=x ئp0
+WlHܝ‹T6v8vsݚyk/9?xVv7r)s9`'gCxFlەoly-5FUjOc$wŗHL lM->:MgT™NI#YB~|vY=7@bsge51HS Bb#$B>&Iir$le̯u17O ߨ%HHg)NG#VzTmh9eeXx "y?6[3 X@Z1?Nٳ`TɊdG'Z#[TyZI+N߫@ C"onz>=DgI*ȃS}&hGMIִK}\"`.Qoh=$*'p<y$pќ VuޫM
+Kzv'%=Q=Dk OrX[~">SPKg?h|y~<p"~O`2~bR$9> An~"MHNp'"]e
+endstream
+endobj
+385 0 obj
+<< /Type /Page /Contents 386 0 R /Resources 384 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 206 0 R >>
+endobj
+387 0 obj
+<< /D [ 385 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+388 0 obj
+<< /D [ 385 0 R /XYZ 79.752 719.019 null ] >>
+endobj
+389 0 obj
+<< /D [ 385 0 R /XYZ 79.752 708.06 null ] >>
+endobj
+390 0 obj
+<< /D [ 385 0 R /XYZ 79.752 697.101 null ] >>
+endobj
+391 0 obj
+<< /D [ 385 0 R /XYZ 79.752 686.142 null ] >>
+endobj
+392 0 obj
+<< /D [ 385 0 R /XYZ 79.752 675.183 null ] >>
+endobj
+393 0 obj
+<< /D [ 385 0 R /XYZ 79.752 664.224 null ] >>
+endobj
+394 0 obj
+<< /D [ 385 0 R /XYZ 79.752 653.265 null ] >>
+endobj
+395 0 obj
+<< /D [ 385 0 R /XYZ 79.752 642.306 null ] >>
+endobj
+396 0 obj
+<< /D [ 385 0 R /XYZ 79.752 631.347 null ] >>
+endobj
+397 0 obj
+<< /D [ 385 0 R /XYZ 79.752 620.388 null ] >>
+endobj
+398 0 obj
+<< /D [ 385 0 R /XYZ 79.752 609.429 null ] >>
+endobj
+399 0 obj
+<< /D [ 385 0 R /XYZ 79.752 537.892 null ] >>
+endobj
+400 0 obj
+<< /D [ 385 0 R /XYZ 79.752 526.933 null ] >>
+endobj
+401 0 obj
+<< /D [ 385 0 R /XYZ 79.752 515.974 null ] >>
+endobj
+402 0 obj
+<< /D [ 385 0 R /XYZ 79.752 505.015 null ] >>
+endobj
+403 0 obj
+<< /D [ 385 0 R /XYZ 79.752 494.057 null ] >>
+endobj
+404 0 obj
+<< /D [ 385 0 R /XYZ 79.752 483.098 null ] >>
+endobj
+405 0 obj
+<< /D [ 385 0 R /XYZ 79.752 472.139 null ] >>
+endobj
+406 0 obj
+<< /D [ 385 0 R /XYZ 79.752 461.18 null ] >>
+endobj
+407 0 obj
+<< /D [ 385 0 R /XYZ 79.752 450.221 null ] >>
+endobj
+408 0 obj
+<< /D [ 385 0 R /XYZ 79.752 439.262 null ] >>
+endobj
+409 0 obj
+<< /D [ 385 0 R /XYZ 79.752 428.303 null ] >>
+endobj
+410 0 obj
+<< /D [ 385 0 R /XYZ 79.752 417.344 null ] >>
+endobj
+411 0 obj
+<< /D [ 385 0 R /XYZ 79.752 406.385 null ] >>
+endobj
+412 0 obj
+<< /D [ 385 0 R /XYZ 79.752 395.426 null ] >>
+endobj
+413 0 obj
+<< /D [ 385 0 R /XYZ 79.752 304.766 null ] >>
+endobj
+414 0 obj
+<< /D [ 385 0 R /XYZ 79.752 293.808 null ] >>
+endobj
+415 0 obj
+<< /D [ 385 0 R /XYZ 79.752 282.849 null ] >>
+endobj
+416 0 obj
+<< /D [ 385 0 R /XYZ 79.752 271.89 null ] >>
+endobj
+417 0 obj
+<< /D [ 385 0 R /XYZ 79.752 260.931 null ] >>
+endobj
+418 0 obj
+<< /D [ 385 0 R /XYZ 79.752 249.972 null ] >>
+endobj
+419 0 obj
+<< /D [ 385 0 R /XYZ 79.752 239.013 null ] >>
+endobj
+420 0 obj
+<< /D [ 385 0 R /XYZ 79.752 228.054 null ] >>
+endobj
+421 0 obj
+<< /D [ 385 0 R /XYZ 79.752 217.095 null ] >>
+endobj
+422 0 obj
+<< /D [ 385 0 R /XYZ 79.752 176.248 null ] >>
+endobj
+423 0 obj
+<< /D [ 385 0 R /XYZ 79.752 165.289 null ] >>
+endobj
+424 0 obj
+<< /D [ 385 0 R /XYZ 79.752 154.331 null ] >>
+endobj
+425 0 obj
+<< /D [ 385 0 R /XYZ 79.752 143.372 null ] >>
+endobj
+426 0 obj
+<< /D [ 385 0 R /XYZ 79.752 132.413 null ] >>
+endobj
+427 0 obj
+<< /D [ 385 0 R /XYZ 79.752 121.454 null ] >>
+endobj
+428 0 obj
+<< /D [ 385 0 R /XYZ 79.752 80.607 null ] >>
+endobj
+384 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F70 185 0 R /F20 186 0 R /F73 189 0 R /F69 183 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+432 0 obj
+<< /Filter /FlateDecode /Length 2439 >>
+stream
+xZko_a`BF7)h>v(v'Y[$';;KIǑMoC"!ϽRxv?ó/"a~/|{b3tJݮ.gdjD%)IdvP"?0vԳi)Yc !Q PocC nhy#t~OGe}=T
+MݩT(2Θ7). D ObaRw\7hV6믝^-vh+MLϟ)OK4{{scr*JiXmGљ+Ozo;
+1P]^契GX{h._t2kO@* ƐZ~GVOi~6n -hv/=WP  Jb{h`| FCcBpt0!1SNZ4u,ZPS~UT;E}ڼ,X< =\7wmU}-H
+A!3OI,8Y<B>Ӿ)Ab TٌzB`X"i7̓QhBTVi˦=!Gh,4ER-@
+QC˰[aJܓR;"V3\s :LDi&
+xy^?nݯ~ES#Ƥ,ꃿL1R{Gq# øűM^ݎ\)P/hj\/8g)vΞř
+Se(-$ha&}QUEu?nNO
+5?<h %MI*i '^&.qd
+4 #m7!7 VיY
+z|e`n7u,L)iKHT7)DXlˬb([̓T{_;c :݅ԚHy `U2V:FaG, hmXɮBQ:y~z[3ö~Tl^*C%o;6/a}~f\?Q5e#OY8Yv#ӽ?7;B:=lZ\+uCn/Mj\͆{L*+[[H6
+endstream
+endobj
+431 0 obj
+<< /Type /Page /Contents 432 0 R /Resources 430 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 206 0 R /Annots 482 0 R >>
+endobj
+482 0 obj
+[ 429 0 R ]
+endobj
+429 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 120.217 226.236 126.679 237.063 ]/A << /S /GoTo /D (Hfootnote.1) >> >>
+endobj
+433 0 obj
+<< /D [ 431 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+434 0 obj
+<< /D [ 431 0 R /XYZ 79.752 768.832 null ] >>
+endobj
+435 0 obj
+<< /D [ 431 0 R /XYZ 79.752 757.873 null ] >>
+endobj
+436 0 obj
+<< /D [ 431 0 R /XYZ 79.752 746.914 null ] >>
+endobj
+437 0 obj
+<< /D [ 431 0 R /XYZ 79.752 735.955 null ] >>
+endobj
+438 0 obj
+<< /D [ 431 0 R /XYZ 79.752 695.108 null ] >>
+endobj
+439 0 obj
+<< /D [ 431 0 R /XYZ 79.752 684.149 null ] >>
+endobj
+440 0 obj
+<< /D [ 431 0 R /XYZ 79.752 673.19 null ] >>
+endobj
+441 0 obj
+<< /D [ 431 0 R /XYZ 79.752 662.231 null ] >>
+endobj
+442 0 obj
+<< /D [ 431 0 R /XYZ 79.752 651.273 null ] >>
+endobj
+443 0 obj
+<< /D [ 431 0 R /XYZ 79.752 640.314 null ] >>
+endobj
+444 0 obj
+<< /D [ 431 0 R /XYZ 79.752 629.355 null ] >>
+endobj
+445 0 obj
+<< /D [ 431 0 R /XYZ 79.752 600.463 null ] >>
+endobj
+446 0 obj
+<< /D [ 431 0 R /XYZ 79.752 589.504 null ] >>
+endobj
+447 0 obj
+<< /D [ 431 0 R /XYZ 79.752 578.545 null ] >>
+endobj
+448 0 obj
+<< /D [ 431 0 R /XYZ 79.752 567.586 null ] >>
+endobj
+449 0 obj
+<< /D [ 431 0 R /XYZ 79.752 556.627 null ] >>
+endobj
+450 0 obj
+<< /D [ 431 0 R /XYZ 79.752 545.669 null ] >>
+endobj
+451 0 obj
+<< /D [ 431 0 R /XYZ 79.752 534.71 null ] >>
+endobj
+452 0 obj
+<< /D [ 431 0 R /XYZ 79.752 523.751 null ] >>
+endobj
+453 0 obj
+<< /D [ 431 0 R /XYZ 79.752 512.792 null ] >>
+endobj
+454 0 obj
+<< /D [ 431 0 R /XYZ 79.752 501.833 null ] >>
+endobj
+455 0 obj
+<< /D [ 431 0 R /XYZ 79.752 490.874 null ] >>
+endobj
+456 0 obj
+<< /D [ 431 0 R /XYZ 79.752 479.915 null ] >>
+endobj
+457 0 obj
+<< /D [ 431 0 R /XYZ 79.752 468.956 null ] >>
+endobj
+458 0 obj
+<< /D [ 431 0 R /XYZ 79.752 457.997 null ] >>
+endobj
+459 0 obj
+<< /D [ 431 0 R /XYZ 79.752 447.038 null ] >>
+endobj
+460 0 obj
+<< /D [ 431 0 R /XYZ 79.752 436.08 null ] >>
+endobj
+461 0 obj
+<< /D [ 431 0 R /XYZ 79.752 425.121 null ] >>
+endobj
+462 0 obj
+<< /D [ 431 0 R /XYZ 79.752 414.162 null ] >>
+endobj
+463 0 obj
+<< /D [ 431 0 R /XYZ 79.752 361.36 null ] >>
+endobj
+464 0 obj
+<< /D [ 431 0 R /XYZ 79.752 350.401 null ] >>
+endobj
+465 0 obj
+<< /D [ 431 0 R /XYZ 79.752 339.442 null ] >>
+endobj
+466 0 obj
+<< /D [ 431 0 R /XYZ 79.752 328.483 null ] >>
+endobj
+467 0 obj
+<< /D [ 431 0 R /XYZ 79.752 317.524 null ] >>
+endobj
+468 0 obj
+<< /D [ 431 0 R /XYZ 79.752 306.565 null ] >>
+endobj
+469 0 obj
+<< /D [ 431 0 R /XYZ 79.752 295.606 null ] >>
+endobj
+470 0 obj
+<< /D [ 431 0 R /XYZ 79.752 284.647 null ] >>
+endobj
+471 0 obj
+<< /D [ 431 0 R /XYZ 79.752 273.688 null ] >>
+endobj
+472 0 obj
+<< /D [ 431 0 R /XYZ 79.752 262.73 null ] >>
+endobj
+474 0 obj
+<< /D [ 431 0 R /XYZ 79.752 221.883 null ] >>
+endobj
+475 0 obj
+<< /D [ 431 0 R /XYZ 79.752 210.924 null ] >>
+endobj
+476 0 obj
+<< /D [ 431 0 R /XYZ 79.752 158.122 null ] >>
+endobj
+477 0 obj
+<< /D [ 431 0 R /XYZ 79.752 147.163 null ] >>
+endobj
+478 0 obj
+<< /D [ 431 0 R /XYZ 79.752 136.204 null ] >>
+endobj
+479 0 obj
+<< /D [ 431 0 R /XYZ 79.752 125.245 null ] >>
+endobj
+481 0 obj
+<< /D [ 431 0 R /XYZ 94.613 95.656 null ] >>
+endobj
+430 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F70 185 0 R /F74 264 0 R /F76 318 0 R /F22 473 0 R /F77 480 0 R /F63 205 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+485 0 obj
+<< /Filter /FlateDecode /Length 2394 >>
+stream
+xڵZ]o}@iM}hѻ>)n- ]Ȓ$'Mw(8/E3̙ajM_?}FZ&Od<Q9Lf~moe]5ӧZ١lxM4mQWn^^y<V
+yYT#O FE$;։9ɭDrBvyevEwM{). ]=JNJT,2L1D{= fQ1B1p&B INb(aM@JaKk ʦ_A95YW/s]to5kb<
+,cI.y93$ɑֽAΊr,P qiI' i)~Zid'#2]'
+TE08>ZmA"Nx?켞~I{?^+jW [[?^u"BYU˦s?rWek4~&~"Xƿ-=֔ePka-PyY"8g< zYݳX 7+Z0v
+1A^͏]39e'TxwN\FRAR"Уfŭ׊P0'Qmcmᔀa3x,rVTv
+aÔ&t^o6fyH}3v$xϑ.L]Pm&@ެvRT q+U8e{h`Aۍ{OR7a`k?}nSI`gu^')Fl
+B
+|]ۍ'A@$1_c%e h7 &5
+]s'?89V(i,et]~zM3? ',]lF|3>"H#ȿ09֯9:
+.jfYg3A C<SxFRR~=]臯w= \ "77ڮa
+zNe"v׺)g-MXDei6_PAG;,k\
+Z &i?J~C~@\gi4}Z`8yRԉS%*hb"<DKXRW ) )9fѴK/wZq6aeVZ(83
+*N4 aA#a
+}lU)ƒziHCl2CJ0qҿ* i,
+'^7O#l iS~vsf
+endstream
+endobj
+484 0 obj
+<< /Type /Page /Contents 485 0 R /Resources 483 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 206 0 R >>
+endobj
+486 0 obj
+<< /D [ 484 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+487 0 obj
+<< /D [ 484 0 R /XYZ 79.752 743.268 null ] >>
+endobj
+488 0 obj
+<< /D [ 484 0 R /XYZ 79.752 703.1 null ] >>
+endobj
+489 0 obj
+<< /D [ 484 0 R /XYZ 79.752 650.977 null ] >>
+endobj
+490 0 obj
+<< /D [ 484 0 R /XYZ 79.752 640.018 null ] >>
+endobj
+491 0 obj
+<< /D [ 484 0 R /XYZ 79.752 629.059 null ] >>
+endobj
+492 0 obj
+<< /D [ 484 0 R /XYZ 79.752 618.1 null ] >>
+endobj
+493 0 obj
+<< /D [ 484 0 R /XYZ 79.752 607.141 null ] >>
+endobj
+494 0 obj
+<< /D [ 484 0 R /XYZ 79.752 596.182 null ] >>
+endobj
+495 0 obj
+<< /D [ 484 0 R /XYZ 79.752 585.223 null ] >>
+endobj
+496 0 obj
+<< /D [ 484 0 R /XYZ 79.752 574.264 null ] >>
+endobj
+497 0 obj
+<< /D [ 484 0 R /XYZ 79.752 563.305 null ] >>
+endobj
+498 0 obj
+<< /D [ 484 0 R /XYZ 79.752 552.346 null ] >>
+endobj
+499 0 obj
+<< /D [ 484 0 R /XYZ 79.752 541.387 null ] >>
+endobj
+500 0 obj
+<< /D [ 484 0 R /XYZ 79.752 501.219 null ] >>
+endobj
+501 0 obj
+<< /D [ 484 0 R /XYZ 79.752 490.26 null ] >>
+endobj
+502 0 obj
+<< /D [ 484 0 R /XYZ 79.752 479.301 null ] >>
+endobj
+503 0 obj
+<< /D [ 484 0 R /XYZ 79.752 468.343 null ] >>
+endobj
+504 0 obj
+<< /D [ 484 0 R /XYZ 79.752 457.384 null ] >>
+endobj
+505 0 obj
+<< /D [ 484 0 R /XYZ 79.752 446.425 null ] >>
+endobj
+506 0 obj
+<< /D [ 484 0 R /XYZ 79.752 435.466 null ] >>
+endobj
+507 0 obj
+<< /D [ 484 0 R /XYZ 79.752 424.507 null ] >>
+endobj
+508 0 obj
+<< /D [ 484 0 R /XYZ 79.752 396.294 null ] >>
+endobj
+509 0 obj
+<< /D [ 484 0 R /XYZ 79.752 385.335 null ] >>
+endobj
+510 0 obj
+<< /D [ 484 0 R /XYZ 79.752 374.376 null ] >>
+endobj
+511 0 obj
+<< /D [ 484 0 R /XYZ 79.752 363.417 null ] >>
+endobj
+512 0 obj
+<< /D [ 484 0 R /XYZ 79.752 352.458 null ] >>
+endobj
+513 0 obj
+<< /D [ 484 0 R /XYZ 79.752 301.692 null ] >>
+endobj
+514 0 obj
+<< /D [ 484 0 R /XYZ 79.752 273.183 null ] >>
+endobj
+515 0 obj
+<< /D [ 484 0 R /XYZ 79.752 262.224 null ] >>
+endobj
+516 0 obj
+<< /D [ 484 0 R /XYZ 79.752 251.265 null ] >>
+endobj
+517 0 obj
+<< /D [ 484 0 R /XYZ 79.752 240.306 null ] >>
+endobj
+518 0 obj
+<< /D [ 484 0 R /XYZ 79.752 229.347 null ] >>
+endobj
+519 0 obj
+<< /D [ 484 0 R /XYZ 79.752 218.388 null ] >>
+endobj
+520 0 obj
+<< /D [ 484 0 R /XYZ 79.752 207.429 null ] >>
+endobj
+521 0 obj
+<< /D [ 484 0 R /XYZ 79.752 196.471 null ] >>
+endobj
+522 0 obj
+<< /D [ 484 0 R /XYZ 79.752 185.512 null ] >>
+endobj
+523 0 obj
+<< /D [ 484 0 R /XYZ 79.752 174.553 null ] >>
+endobj
+524 0 obj
+<< /D [ 484 0 R /XYZ 79.752 144.39 null ] >>
+endobj
+525 0 obj
+<< /D [ 484 0 R /XYZ 79.752 133.431 null ] >>
+endobj
+526 0 obj
+<< /D [ 484 0 R /XYZ 79.752 122.473 null ] >>
+endobj
+527 0 obj
+<< /D [ 484 0 R /XYZ 79.752 111.514 null ] >>
+endobj
+528 0 obj
+<< /D [ 484 0 R /XYZ 79.752 100.555 null ] >>
+endobj
+529 0 obj
+<< /D [ 484 0 R /XYZ 79.752 89.596 null ] >>
+endobj
+530 0 obj
+<< /D [ 484 0 R /XYZ 79.752 78.637 null ] >>
+endobj
+483 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F20 186 0 R /F73 189 0 R /F69 183 0 R /F76 318 0 R /F75 317 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+533 0 obj
+<< /Filter /FlateDecode /Length 2129 >>
+stream
+xڵY[~?@j]wJ H$H}؇Iap-[H^8Ë.Z
+IDIO$:x쭜FW@ZcYm^n ]}͆#_޸jL"G<$i&a1>dz35n<Ӏnڸg6L[]3`Ƃ47$ј,9,#sc׽"ߠ=
+ =Шg:
+Cey0`V+I&BMbŹyY+?j6vۥa*-T`߹Y9$]x6{xؙdi'xp9^*%Ɏu)Mj>) S=G gx3Gt
+P|xw7sԩJeI}O䷯t'N "RuMx*$o K}*]eU"rW[3Z%n0!TȀgB™,2Dn03E'TC xp6{}cSڄF[/#`wd {(s=Ѫ?U.]Ny Vb_=a.!
+&wzO7[}wz^jژ`gQ psN;
+endstream
+endobj
+532 0 obj
+<< /Type /Page /Contents 533 0 R /Resources 531 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 206 0 R >>
+endobj
+534 0 obj
+<< /D [ 532 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+535 0 obj
+<< /D [ 532 0 R /XYZ 79.752 742.929 null ] >>
+endobj
+536 0 obj
+<< /D [ 532 0 R /XYZ 79.752 731.97 null ] >>
+endobj
+537 0 obj
+<< /D [ 532 0 R /XYZ 79.752 721.011 null ] >>
+endobj
+538 0 obj
+<< /D [ 532 0 R /XYZ 79.752 710.052 null ] >>
+endobj
+539 0 obj
+<< /D [ 532 0 R /XYZ 79.752 699.093 null ] >>
+endobj
+540 0 obj
+<< /D [ 532 0 R /XYZ 79.752 688.134 null ] >>
+endobj
+541 0 obj
+<< /D [ 532 0 R /XYZ 79.752 677.175 null ] >>
+endobj
+542 0 obj
+<< /D [ 532 0 R /XYZ 79.752 648.284 null ] >>
+endobj
+543 0 obj
+<< /D [ 532 0 R /XYZ 79.752 637.325 null ] >>
+endobj
+544 0 obj
+<< /D [ 532 0 R /XYZ 79.752 626.366 null ] >>
+endobj
+545 0 obj
+<< /D [ 532 0 R /XYZ 79.752 595.482 null ] >>
+endobj
+546 0 obj
+<< /D [ 532 0 R /XYZ 79.752 584.523 null ] >>
+endobj
+547 0 obj
+<< /D [ 532 0 R /XYZ 79.752 573.564 null ] >>
+endobj
+548 0 obj
+<< /D [ 532 0 R /XYZ 79.752 562.605 null ] >>
+endobj
+549 0 obj
+<< /D [ 532 0 R /XYZ 79.752 551.646 null ] >>
+endobj
+550 0 obj
+<< /D [ 532 0 R /XYZ 79.752 540.687 null ] >>
+endobj
+551 0 obj
+<< /D [ 532 0 R /XYZ 79.752 529.728 null ] >>
+endobj
+552 0 obj
+<< /D [ 532 0 R /XYZ 79.752 518.769 null ] >>
+endobj
+553 0 obj
+<< /D [ 532 0 R /XYZ 79.752 507.811 null ] >>
+endobj
+554 0 obj
+<< /D [ 532 0 R /XYZ 79.752 496.852 null ] >>
+endobj
+21 0 obj
+<< /D [ 532 0 R /XYZ 79.37 471.397 null ] >>
+endobj
+555 0 obj
+<< /D [ 532 0 R /XYZ 79.752 364.504 null ] >>
+endobj
+557 0 obj
+<< /D [ 532 0 R /XYZ 79.752 311.702 null ] >>
+endobj
+558 0 obj
+<< /D [ 532 0 R /XYZ 79.752 223.035 null ] >>
+endobj
+559 0 obj
+<< /D [ 532 0 R /XYZ 79.752 212.076 null ] >>
+endobj
+560 0 obj
+<< /D [ 532 0 R /XYZ 79.752 171.229 null ] >>
+endobj
+561 0 obj
+<< /D [ 532 0 R /XYZ 79.752 160.27 null ] >>
+endobj
+562 0 obj
+<< /D [ 532 0 R /XYZ 79.752 107.468 null ] >>
+endobj
+531 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F76 318 0 R /F20 186 0 R /F73 189 0 R /F69 183 0 R /F72 187 0 R /F78 556 0 R /F70 185 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+565 0 obj
+<< /Filter /FlateDecode /Length 2969 >>
+stream
+xڥZo_@2OC 4+ Z-6#8>#{gvI1E.9;3XFUM{{a ъx"Ww\?ovY}U7<xr%<EqsY
+&^_=TK^WmS'SfuCG:ʾ[Y~弼V4Jr?i[_M.Ssɸ!_'g#3]]q%`:ROOǕeBȐy|wj:'$JJ)Ye9h`W˕bR ل!0Ƶ%fRr{,Hb`wˉ@j 7e؀Яb<I:"Mng|Mz"Pk!ݶ ] EjU8Yz@/2zz0D zҢ%lmHqqe,@I!-}OE|\6 E}" m1 AnPO&9ڊ!-]zLLo9mXXj)/qH{M/\SAI=j'!) !$cio~OԡM Ni #h+Ǻ"޻lwigM$=R?.yT&ЩjiؐT %Ci$y
+39h$aQF]v<a2T8\kѢ@vCpHw"E"i{/WFp߁n2)B2Y7GBm#-vJTMb2/&U2L)R?Aɀ AI9y53DHA
+h h*v1.j! x P6v~r@xLW^G(P_ &t d8Doh=<cR%^{@%`
+r9\uj"L2`"H^r'יL =g#0a`P&T^[j! ]G~kIdx [ ȗ(4ݩX1fLO}
+AڤotAKvk  d2dћ2:لLǴh|opS9hJh&E0v Hqe.MJeJ(] 0YACi դJB>
+bH2sN- kz2$;s1V
+@ɐzp iQjWG3i5Cɨ䆯 aN?t.xDf<E4/= ϔ!T%:#,.-|,ON:)'+w҆~#{gP ax_{γ ݧu6s<9yD2Ss(hEhH,`[@2K< 6?mgzۈī=&AUMʾcᎠ\jXf O/r{&"aJ+G_](a}}Z Q0p_ͺ}eR䚩hZE_wclPM+)F-:h| N2.}=gYAHK3 V^{?
+endstream
+endobj
+564 0 obj
+<< /Type /Page /Contents 565 0 R /Resources 563 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 206 0 R >>
+endobj
+566 0 obj
+<< /D [ 564 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+567 0 obj
+<< /D [ 564 0 R /XYZ 79.752 742.929 null ] >>
+endobj
+568 0 obj
+<< /D [ 564 0 R /XYZ 79.752 731.97 null ] >>
+endobj
+569 0 obj
+<< /D [ 564 0 R /XYZ 79.752 661.235 null ] >>
+endobj
+570 0 obj
+<< /D [ 564 0 R /XYZ 79.752 650.276 null ] >>
+endobj
+571 0 obj
+<< /D [ 564 0 R /XYZ 79.752 603.452 null ] >>
+endobj
+572 0 obj
+<< /D [ 564 0 R /XYZ 79.752 562.605 null ] >>
+endobj
+573 0 obj
+<< /D [ 564 0 R /XYZ 79.752 497.848 null ] >>
+endobj
+574 0 obj
+<< /D [ 564 0 R /XYZ 79.752 433.091 null ] >>
+endobj
+575 0 obj
+<< /D [ 564 0 R /XYZ 79.752 344.423 null ] >>
+endobj
+576 0 obj
+<< /D [ 564 0 R /XYZ 79.752 333.464 null ] >>
+endobj
+577 0 obj
+<< /D [ 564 0 R /XYZ 79.752 292.618 null ] >>
+endobj
+578 0 obj
+<< /D [ 564 0 R /XYZ 79.752 281.659 null ] >>
+endobj
+579 0 obj
+<< /D [ 564 0 R /XYZ 79.752 228.857 null ] >>
+endobj
+580 0 obj
+<< /D [ 564 0 R /XYZ 79.752 188.01 null ] >>
+endobj
+581 0 obj
+<< /D [ 564 0 R /XYZ 79.752 123.253 null ] >>
+endobj
+582 0 obj
+<< /D [ 564 0 R /XYZ 79.752 112.294 null ] >>
+endobj
+563 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F20 186 0 R /F19 184 0 R /F73 189 0 R /F69 183 0 R /F76 318 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+585 0 obj
+<< /Filter /FlateDecode /Length 2573 >>
+stream
+xڵɎ>_ѷPAvs2 K8l U"";$5=jXl %6{Dݏ憎~,Iw|w.͉HRx׃i6<Sp0qUﮅۦ/tKu[Iru #UL1m`Wp;Ȳ=f?JN/Q)%Yb:?2!̠8J@bs MI{_4%uDŧqL7eٞ{D+s¨vZK}tP xzYf(e)J.,H'(7B'/:x-<Is2/.R”9̢DKf4%Zd10iw߾긨w(34`fuxR<
+4;3[M?t=Kʡjl'vl9v~YdB<QxK
+Edb!arXjp,իVȘGxí5 oώ߂#Km'mIZ<OI7]
+UNaop|Ƅ
+x!V,)9#gJb/zư"w ^SHe8JѸgckQ;RPNut"ǚd_ҌpTI~
+ ʚʍ2ĭ's'ӔW2QGoѲdъqTuYDacᡮa6k%!^47H}vONza 窘!k1/
+KT'&$aQ
+%[XHc+\tÒYxćJvp62|Y#3v!ժ"w6Â'uU,,vIWcQ*#
+FL!_5cY{Li,hC,\ -x#8\s :&}e9B!/Av%ejF 9+`Zsxl"9Ϧ-#X+꼮8 ,ޣq76~ 9ck.E ۵m}1T4:+:M2*({]= hn4eD=ӿߛP_NGuC>JEE Y;l GŽfBn֓}3\yS. ிH2"N+ƿy:Ǽ@[z5SR{ \Xl
+E4VFzJI94ه(ྪVIv!V,܄v@H.e0hƠ#إ2ܫpU9.4'ZH)_MP 埓(ލWZXaa6߇v(#ޢgCtsޢU/p"ܖC4p`GS4}^c3>БEi|hѵn&ڇ gYf&OM2/J)u"֙S>5-nʞ@1m ?T"C} w \5wן%vձIU맺j0`r3RѾ-E1e)* e3Xv
+$@*u[A=w}IOzyjc_{ 3C}| ]ưj6E Zv$\^/>&̚Bi>>a8B 7Aukqrb``~0]cejl~4-c֒?7l" ," Uu
+B*8u;U]=$U펄+әhIC@9%uUC)o fӸÀ]X&~O C,Xy$_S: [OOvSh RTU$߮X 5W󩏹vtδ&<BOm [9UvMM 1*-5BMA,sX5U0Bb!2x׹z^k<LA9Hbqr-shcE / </y}|yjuGk΁=>vrIWւNՓkhj|,O]wn%TBt#q*
+@
+#YRلK2ql.<(sĉ-LC<7%Soeww)9\5r+ *|÷2uy
+bzRvv>OA/qFXCï4Ԓj
+endstream
+endobj
+584 0 obj
+<< /Type /Page /Contents 585 0 R /Resources 583 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 603 0 R >>
+endobj
+586 0 obj
+<< /D [ 584 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+587 0 obj
+<< /D [ 584 0 R /XYZ 79.752 719.139 null ] >>
+endobj
+588 0 obj
+<< /D [ 584 0 R /XYZ 79.752 679.017 null ] >>
+endobj
+589 0 obj
+<< /D [ 584 0 R /XYZ 79.752 668.059 null ] >>
+endobj
+590 0 obj
+<< /D [ 584 0 R /XYZ 79.752 615.981 null ] >>
+endobj
+591 0 obj
+<< /D [ 584 0 R /XYZ 79.752 551.949 null ] >>
+endobj
+592 0 obj
+<< /D [ 584 0 R /XYZ 79.752 499.872 null ] >>
+endobj
+593 0 obj
+<< /D [ 584 0 R /XYZ 79.752 459.75 null ] >>
+endobj
+594 0 obj
+<< /D [ 584 0 R /XYZ 79.752 448.791 null ] >>
+endobj
+595 0 obj
+<< /D [ 584 0 R /XYZ 79.752 396.714 null ] >>
+endobj
+596 0 obj
+<< /D [ 584 0 R /XYZ 79.752 344.637 null ] >>
+endobj
+597 0 obj
+<< /D [ 584 0 R /XYZ 79.752 292.56 null ] >>
+endobj
+598 0 obj
+<< /D [ 584 0 R /XYZ 79.752 252.438 null ] >>
+endobj
+599 0 obj
+<< /D [ 584 0 R /XYZ 79.752 212.316 null ] >>
+endobj
+600 0 obj
+<< /D [ 584 0 R /XYZ 79.752 160.239 null ] >>
+endobj
+601 0 obj
+<< /D [ 584 0 R /XYZ 79.752 144.541 null ] >>
+endobj
+602 0 obj
+<< /D [ 584 0 R /XYZ 79.752 78.637 null ] >>
+endobj
+583 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F20 186 0 R /F73 189 0 R /F69 183 0 R /F70 185 0 R /F76 318 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+606 0 obj
+<< /Filter /FlateDecode /Length 2511 >>
+stream
+xڝZKs6ϯmCARI%U;svvUD٬P‡=k A˔lCxuW?O>~*!bJnw(WtJ+JbEWtu^_]3#!s&T2%"wm^€FUOۼ*7 .huV^18#U^<#e>Ρ_,>uRDŽQ5yYX91E #`WEqq
+>?EFxY*id[b!D
+"{Tȫ/WVm
+BKePj3x)M@S\#7Q$[HAjo>g@ڷ/^K$N11==ё+ґoQ뉐JޜqEP@ lLTϩ!<&@Qbzv#d˜ho4((bjxMߧ=ÛoƠ3PH'Cj˼똔ħ>n(l=dq&NmzNMvx^ 'm:۴ų{tw_O5ϾA-cg($s)CU@p}АSӋXGcC|h:!WxJ!N,$lDNv9 5!>DNHfl hg75wю+uڳ
+endstream
+endobj
+605 0 obj
+<< /Type /Page /Contents 606 0 R /Resources 604 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 603 0 R >>
+endobj
+607 0 obj
+<< /D [ 605 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+608 0 obj
+<< /D [ 605 0 R /XYZ 79.752 742.978 null ] >>
+endobj
+609 0 obj
+<< /D [ 605 0 R /XYZ 79.752 690.472 null ] >>
+endobj
+610 0 obj
+<< /D [ 605 0 R /XYZ 79.752 659.933 null ] >>
+endobj
+611 0 obj
+<< /D [ 605 0 R /XYZ 79.752 648.974 null ] >>
+endobj
+612 0 obj
+<< /D [ 605 0 R /XYZ 79.752 594.525 null ] >>
+endobj
+613 0 obj
+<< /D [ 605 0 R /XYZ 79.752 553.776 null ] >>
+endobj
+614 0 obj
+<< /D [ 605 0 R /XYZ 79.752 524.983 null ] >>
+endobj
+615 0 obj
+<< /D [ 605 0 R /XYZ 79.752 472.477 null ] >>
+endobj
+616 0 obj
+<< /D [ 605 0 R /XYZ 79.752 461.518 null ] >>
+endobj
+617 0 obj
+<< /D [ 605 0 R /XYZ 79.752 397.057 null ] >>
+endobj
+618 0 obj
+<< /D [ 605 0 R /XYZ 79.752 386.098 null ] >>
+endobj
+619 0 obj
+<< /D [ 605 0 R /XYZ 79.752 375.139 null ] >>
+endobj
+620 0 obj
+<< /D [ 605 0 R /XYZ 79.752 322.633 null ] >>
+endobj
+621 0 obj
+<< /D [ 605 0 R /XYZ 79.752 292.094 null ] >>
+endobj
+622 0 obj
+<< /D [ 605 0 R /XYZ 79.752 281.135 null ] >>
+endobj
+623 0 obj
+<< /D [ 605 0 R /XYZ 79.752 270.176 null ] >>
+endobj
+624 0 obj
+<< /D [ 605 0 R /XYZ 79.752 259.217 null ] >>
+endobj
+625 0 obj
+<< /D [ 605 0 R /XYZ 79.752 248.258 null ] >>
+endobj
+626 0 obj
+<< /D [ 605 0 R /XYZ 79.752 237.3 null ] >>
+endobj
+627 0 obj
+<< /D [ 605 0 R /XYZ 79.752 194.608 null ] >>
+endobj
+628 0 obj
+<< /D [ 605 0 R /XYZ 79.752 142.102 null ] >>
+endobj
+629 0 obj
+<< /D [ 605 0 R /XYZ 79.752 131.143 null ] >>
+endobj
+630 0 obj
+<< /D [ 605 0 R /XYZ 79.752 78.637 null ] >>
+endobj
+604 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F20 186 0 R /F73 189 0 R /F69 183 0 R /F70 185 0 R /F75 317 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+633 0 obj
+<< /Filter /FlateDecode /Length 2850 >>
+stream
+xڵZn}S"1W0"A2 [z=`=UEԢ,O]*]ݾ#MRJ&;
+ R)JIJbInWn.蹨죶k,ND׺:ۅy}gA)TD:bШ> OOSFR>9K<ɫ_ ZTsSvü88qYn(!RBc&s'ORHUc2; 5  3NYf*`}pJFf}:l`K1&ߦ Ӛp6%7BSPgZr$QV\[Ano)+"1Ip8>$ՔN vxB$s0ZZyy(+ CK@x1%) e?S.rW?]$,1Ov>
+x؇3,"A_j
+:tDM b@(
+5!˹K( PcM|cG Ō}6
+Bn˜Dpv]8$*!<½bvwAo ȲTztoJxv-8G|J"j}Va)Bn G:@
+Oe$Dΰ&GOY9 g&)'}<Z瑱s1Kn<;\5O]QWSAOBї\N v
+\9+DE('џqbp0QqOCwv&j0a$%_ &(2?H$
+=H%2RO;[f?3o
+#咨&ZP1?x 2U*<M'V9|{އWk0+b,Z&)>2e31P,B ,> ;qӒ+(6)8]RpՆuV0_5Ŕ
+/E}j˗uk00QP#`QSnU!R}Db); G:lTcme͉_yۻ;몷01œ!4!>ݟَ7eQ-yAX)OjVI<?|eaZ5$21e ɶ" =~Mti7siID&EKpj66fs*MdZJOқμ9yl0%ˣ^#R`K4tv}_J
+endstream
+endobj
+632 0 obj
+<< /Type /Page /Contents 633 0 R /Resources 631 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 603 0 R >>
+endobj
+634 0 obj
+<< /D [ 632 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+635 0 obj
+<< /D [ 632 0 R /XYZ 79.752 743.392 null ] >>
+endobj
+636 0 obj
+<< /D [ 632 0 R /XYZ 79.752 732.433 null ] >>
+endobj
+637 0 obj
+<< /D [ 632 0 R /XYZ 79.752 704.791 null ] >>
+endobj
+638 0 obj
+<< /D [ 632 0 R /XYZ 79.752 629.328 null ] >>
+endobj
+639 0 obj
+<< /D [ 632 0 R /XYZ 79.752 618.369 null ] >>
+endobj
+640 0 obj
+<< /D [ 632 0 R /XYZ 79.752 607.41 null ] >>
+endobj
+641 0 obj
+<< /D [ 632 0 R /XYZ 79.752 596.451 null ] >>
+endobj
+642 0 obj
+<< /D [ 632 0 R /XYZ 79.752 585.492 null ] >>
+endobj
+643 0 obj
+<< /D [ 632 0 R /XYZ 79.752 574.533 null ] >>
+endobj
+644 0 obj
+<< /D [ 632 0 R /XYZ 79.752 524.51 null ] >>
+endobj
+645 0 obj
+<< /D [ 632 0 R /XYZ 79.752 474.487 null ] >>
+endobj
+646 0 obj
+<< /D [ 632 0 R /XYZ 79.752 424.464 null ] >>
+endobj
+647 0 obj
+<< /D [ 632 0 R /XYZ 79.752 413.505 null ] >>
+endobj
+648 0 obj
+<< /D [ 632 0 R /XYZ 79.752 339.572 null ] >>
+endobj
+649 0 obj
+<< /D [ 632 0 R /XYZ 79.752 328.613 null ] >>
+endobj
+650 0 obj
+<< /D [ 632 0 R /XYZ 79.752 277.06 null ] >>
+endobj
+651 0 obj
+<< /D [ 632 0 R /XYZ 79.752 237.463 null ] >>
+endobj
+652 0 obj
+<< /D [ 632 0 R /XYZ 79.752 175.485 null ] >>
+endobj
+653 0 obj
+<< /D [ 632 0 R /XYZ 79.752 164.526 null ] >>
+endobj
+654 0 obj
+<< /D [ 632 0 R /XYZ 79.752 78.637 null ] >>
+endobj
+631 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F76 318 0 R /F70 185 0 R /F73 189 0 R /F69 183 0 R /F75 317 0 R /F20 186 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+657 0 obj
+<< /Filter /FlateDecode /Length 3025 >>
+stream
+xڥZKo6ϯm@̈o)$$EN`hhe[+TH({փE~,V}UE*yIn~?|3n2a/~c3&5%ܟn*n樂[aweĮo>
++jʮm|{']S;|9CH"$RlcP*oMմ^x~>RLk 8[mvyY+'`ZذlD}p ӨKF,RN3`sI#Đ_o6M
+LDz<,\wiݓj{ƾX$Lp5^` /y x֩||;zZUEJ)_+bFOD`SaeOV'2"x% o$=`=0|]޹~'kL̛ܗMWt`wns.vqk~zx/G_o3B
+'*Ri</P%XdGL1yH##Y..7}^?{hniXS8:5K4{s
+Hvx*EC,/҉`O=@ѓa$o[ǿ/܁(\_NBJD^?H58]ki+s1).h
+k4]4/_u5`@Wޑ.Z?,fsX3`&(<1M=G.a J
+l;t<8<W%I:\B+`bR8,3p
+scYif>} $=6یC3ۄs,W`&83 3CXq@*8*u^t/=]/>z61/<?޺gs2,
+챬k*;PdgJo:\2Ѓ@hob}[m۴ޕV
+@X&
+8s&5kgQ)ĵ+/Z:$a.]%lT+[')K "5y;jC [$^O|WPDeXCSJ*PSg8XyV՜8zW5nZ;@uܒ遀@+s %kypuBkݷ1g"h^d;RHZ9kN~ZwE?DDd24ٵű@cKl-VBbQ'}9,sAL@=aUX.`DW VƗ`L
+*W=#YXv"KN|(~fL'WtwM4ggi0}RYr* c:3H6!槉EPweYd6~n˾w31d]?lq=mc
+m!L1ia!s\:s;wJ&f=-)U<!{jKt V3k`PiRկX]!x,`rH5^\ ?v@z>R,Y&YX %DpD(|['fL.tTA< 33~ۃCZ^iZ`ۧ͘P]ߟ*x z8_!-f*qa=@J#dƨXY>tՎ+<Ɲuve8Eȟ\O@?D-"Gb,ޣH.@:h@F-~7;^5MM>ko=(з+Itbju@¤L 1G)ikeE| re(lkh?6Ǘ/  [kA-d$MɌn@(Sعڂ0]<|c2PP"#C6O26|dֵL6 t{ ;/ g:i"viWf}Fn_rJ̪h"%rw E$0&
+d ?HCZu4Ư黴Hv˾ Ǽݶ L5n{>.{YfMd2`5]`oq4L%r8-+O'2wxP}ڞJ>OCو+V!sS<EsO|uVJTk
+,.c~\?x1xH~ÏVdnì dENM&{Al\et86#AGK<W *bXt
+m`
+m1گ$_
+endstream
+endobj
+656 0 obj
+<< /Type /Page /Contents 657 0 R /Resources 655 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 603 0 R >>
+endobj
+658 0 obj
+<< /D [ 656 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+659 0 obj
+<< /D [ 656 0 R /XYZ 79.752 754.884 null ] >>
+endobj
+661 0 obj
+<< /D [ 656 0 R /XYZ 79.752 702.082 null ] >>
+endobj
+663 0 obj
+<< /D [ 656 0 R /XYZ 79.752 637.325 null ] >>
+endobj
+664 0 obj
+<< /D [ 656 0 R /XYZ 79.752 626.366 null ] >>
+endobj
+665 0 obj
+<< /D [ 656 0 R /XYZ 79.752 573.564 null ] >>
+endobj
+666 0 obj
+<< /D [ 656 0 R /XYZ 79.752 484.896 null ] >>
+endobj
+667 0 obj
+<< /D [ 656 0 R /XYZ 79.752 432.094 null ] >>
+endobj
+669 0 obj
+<< /D [ 656 0 R /XYZ 79.752 310.55 null ] >>
+endobj
+670 0 obj
+<< /D [ 656 0 R /XYZ 79.752 299.591 null ] >>
+endobj
+671 0 obj
+<< /D [ 656 0 R /XYZ 79.752 244.797 null ] >>
+endobj
+672 0 obj
+<< /D [ 656 0 R /XYZ 79.752 203.95 null ] >>
+endobj
+673 0 obj
+<< /D [ 656 0 R /XYZ 79.752 192.991 null ] >>
+endobj
+674 0 obj
+<< /D [ 656 0 R /XYZ 79.752 182.032 null ] >>
+endobj
+675 0 obj
+<< /D [ 656 0 R /XYZ 79.752 171.073 null ] >>
+endobj
+676 0 obj
+<< /D [ 656 0 R /XYZ 79.752 118.271 null ] >>
+endobj
+677 0 obj
+<< /D [ 656 0 R /XYZ 79.752 107.312 null ] >>
+endobj
+655 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F20 186 0 R /F73 189 0 R /F69 183 0 R /F23 660 0 R /F26 662 0 R /F70 185 0 R /F79 668 0 R /F75 317 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+680 0 obj
+<< /Filter /FlateDecode /Length 3209 >>
+stream
+xڥZo~SdǧH(G4~B0]VO+m%}נ{gЊZZ9_v)Ù I7 Da ~|?h$3LmLFx*7:els3_PH!Y
+3eŴrSO_|Nqeofwims}K2*JAFJ1휌oQdIdd^ cSŒ "U"i:;'kep*AǴ kd)AFJ1b>,d06J1[gDM5싫wBd[TUOeU;nC&b[msMrZg`Zѻuŧ|<܍7ծ=n8=7!0FDf*.wfB*Am$a͚mhQۦ3.\s>(nne5U^==VԦ;Xuqۏacqh뼪>AƵm{>p}*wXl&mˤ 7jWnDTTȶq_[Of%QȼޝW
+'jnmsѾWY('Yc62b'U
+XF&[
+܄f1Ǫ5cp'kteחgd>(:8Vm)w
+ mi^i%(+ΖN
+LjhY:f= "@3Q\$˩ҜP-!>G4˩L**N
+i =#gl'HtNK`nqLi3xD z j& U< m nD{vB&$ʨqʚ
+;[p뫽K4x @4G؈߁}|L|+d줥ɈD.+/81q}
+Xmm ;]ݦPc/s5 Q xQBBbdYG{
+Һ8O'.;{ V$ +X4p>u
+o}rvAʄph$_K~apBۙw)fbp6omiDgD G|8 ioJeol|;QT|&-.)
+5_b&_Ђ;xŒ?CwT*V}6A|, t(?'m6-w&?\NՄ!1,Lrh}jǝ=arpZK`$rBT9) Ūc9?ovJ7]x4Dl zgkڛC߻fo-=pQ|y\t)ȅ
+wzzbxަI4Y 1~B;
+endstream
+endobj
+679 0 obj
+<< /Type /Page /Contents 680 0 R /Resources 678 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 603 0 R >>
+endobj
+681 0 obj
+<< /D [ 679 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+682 0 obj
+<< /D [ 679 0 R /XYZ 79.752 768.832 null ] >>
+endobj
+683 0 obj
+<< /D [ 679 0 R /XYZ 79.752 757.873 null ] >>
+endobj
+684 0 obj
+<< /D [ 679 0 R /XYZ 79.752 746.914 null ] >>
+endobj
+685 0 obj
+<< /D [ 679 0 R /XYZ 79.752 735.955 null ] >>
+endobj
+686 0 obj
+<< /D [ 679 0 R /XYZ 79.752 724.996 null ] >>
+endobj
+687 0 obj
+<< /D [ 679 0 R /XYZ 79.752 714.037 null ] >>
+endobj
+688 0 obj
+<< /D [ 679 0 R /XYZ 79.752 671.198 null ] >>
+endobj
+689 0 obj
+<< /D [ 679 0 R /XYZ 79.752 618.396 null ] >>
+endobj
+690 0 obj
+<< /D [ 679 0 R /XYZ 79.752 607.437 null ] >>
+endobj
+691 0 obj
+<< /D [ 679 0 R /XYZ 79.752 530.725 null ] >>
+endobj
+692 0 obj
+<< /D [ 679 0 R /XYZ 79.752 477.923 null ] >>
+endobj
+693 0 obj
+<< /D [ 679 0 R /XYZ 79.752 377.3 null ] >>
+endobj
+694 0 obj
+<< /D [ 679 0 R /XYZ 79.752 282.655 null ] >>
+endobj
+695 0 obj
+<< /D [ 679 0 R /XYZ 79.752 235.83 null ] >>
+endobj
+696 0 obj
+<< /D [ 679 0 R /XYZ 79.752 177.051 null ] >>
+endobj
+697 0 obj
+<< /D [ 679 0 R /XYZ 79.752 118.271 null ] >>
+endobj
+678 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F75 317 0 R /F76 318 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+700 0 obj
+<< /Filter /FlateDecode /Length 3271 >>
+stream
+xڥZKs6ϯQ#x@[IM٪!qU13xTvAL +z~ݾ;f,Җ}3FhƮnwWnUW/MqaNM$#tLȏoYU_njכ5L;(.ʪ6M}mUv=^UsGne9yWy83C'QF3jvygWBdψ33XA .&$EQQBT(P3E EJqRPIt6f!
+&2,%)QFo/FYaQB3by)ەW0&&=GBv{]vr CC7hnP]|*- (<J0:@2`Ӵm=^pXd`pu]ߴNj
+@]K(a0w71V2Ƭbi/9 1JbWl׍[r;ƽhy |y;^"WEB jq%5L1cނ1"%0>xk1 4ml9E]]?Ipuo^R"H"csg^I5kڀTUTЦ{-Ώec5l0 W]~Zŗ-ve_:[oo3Ve]+Ԭ'U]wzg/< aƸ4)eMG! o*  O^Gkhâtقࠜ:K/˼ׂhm'g֕JeX8>Vr*mqsL*-Kwbc&)E~',2s)kNheOBkn|1> 9~QEƴ'_.,zCGx1NF|b1I|#hec s^->F>nǭ ~>я3CoU-6QlPF 3>oKD2ITQ-B7躢_|ͺ@C*젟"c9"l2"6ۘv[l|\uĸ(oLhOcsCB*p¥Ȧ.: ޺
+Bx30lTBd )DCMȱ.K#hdPD-$N~b 2i 7[,dtƃ'A1ʼnl%6=x*KThp?F0M:4HƔ+}C.uwH=nv(Kq$d ƫ!0h"r0P4 3
+WW |mGC6k%?\%>^lXPƂD`NfʜMPw$W儤_RVu@Be8D/ٲU@jROh>ͯ"ˀI MuU(2|aY,4+UҍR)g3"U`rʲµ[ .IBhnaoF}{!}ssH{SĞԗ
+lj"4f&b= _pbD c^#CfKyi"/_V2Qho>>!V
+cb{ţ5>   -}8Z+Y: XZyu$,1gg| 亸AWպPϊp~Dݳ:)V[3>h!~c'ַ!z*u`d>l#5ۓ= Eib[dn nW"GbGJh1+;>~cE<"icܶы@1>:|7I:p^L[
+endstream
+endobj
+699 0 obj
+<< /Type /Page /Contents 700 0 R /Resources 698 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 603 0 R >>
+endobj
+701 0 obj
+<< /D [ 699 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+702 0 obj
+<< /D [ 699 0 R /XYZ 79.752 719.213 null ] >>
+endobj
+703 0 obj
+<< /D [ 699 0 R /XYZ 79.752 708.254 null ] >>
+endobj
+704 0 obj
+<< /D [ 699 0 R /XYZ 79.752 650.252 null ] >>
+endobj
+705 0 obj
+<< /D [ 699 0 R /XYZ 79.752 639.293 null ] >>
+endobj
+706 0 obj
+<< /D [ 699 0 R /XYZ 79.752 628.334 null ] >>
+endobj
+707 0 obj
+<< /D [ 699 0 R /XYZ 79.752 617.375 null ] >>
+endobj
+708 0 obj
+<< /D [ 699 0 R /XYZ 79.752 583.283 null ] >>
+endobj
+709 0 obj
+<< /D [ 699 0 R /XYZ 79.752 572.324 null ] >>
+endobj
+710 0 obj
+<< /D [ 699 0 R /XYZ 79.752 561.365 null ] >>
+endobj
+711 0 obj
+<< /D [ 699 0 R /XYZ 79.752 550.406 null ] >>
+endobj
+712 0 obj
+<< /D [ 699 0 R /XYZ 79.752 539.447 null ] >>
+endobj
+713 0 obj
+<< /D [ 699 0 R /XYZ 79.752 457.535 null ] >>
+endobj
+714 0 obj
+<< /D [ 699 0 R /XYZ 79.752 411.488 null ] >>
+endobj
+715 0 obj
+<< /D [ 699 0 R /XYZ 79.752 365.441 null ] >>
+endobj
+716 0 obj
+<< /D [ 699 0 R /XYZ 79.752 354.482 null ] >>
+endobj
+717 0 obj
+<< /D [ 699 0 R /XYZ 79.752 343.523 null ] >>
+endobj
+718 0 obj
+<< /D [ 699 0 R /XYZ 79.752 332.564 null ] >>
+endobj
+719 0 obj
+<< /D [ 699 0 R /XYZ 79.752 321.605 null ] >>
+endobj
+720 0 obj
+<< /D [ 699 0 R /XYZ 79.752 310.646 null ] >>
+endobj
+721 0 obj
+<< /D [ 699 0 R /XYZ 79.752 228.733 null ] >>
+endobj
+722 0 obj
+<< /D [ 699 0 R /XYZ 79.752 182.686 null ] >>
+endobj
+723 0 obj
+<< /D [ 699 0 R /XYZ 79.752 112.729 null ] >>
+endobj
+724 0 obj
+<< /D [ 699 0 R /XYZ 79.752 78.637 null ] >>
+endobj
+698 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F20 186 0 R /F26 662 0 R /F23 660 0 R /F73 189 0 R /F69 183 0 R /F70 185 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+727 0 obj
+<< /Filter /FlateDecode /Length 2800 >>
+stream
+xڽˎ>_ѷn.5$ n+#K$wb=U|آ즬 K&Yb(ztCo~~G?&#Yysa7iFDz&Єn;b苶Gdm^t~yʾ\Ԣ̪
+71k YIIƛ=u/Z|]optN/]p!ïenT&!Hdh)%K:y9!Ģ1q0Np%VFB:1y[ޱp5rcKJ&'{ݎ8OtaDDSbl:-9%$_hzNIę
+
+&R9{K<'eQC-k+'7uSo y&Tq[1M?N|u&CMԆT? I3b(Qg@3n2F$ȄYpd7'B2
+Y6I@x9Z?8
+IE`&툾Ǧ|KY?Or<[8 d[j؇Q;0*]-{.H\bad <Hr?ٕq; E\1!q CEr;Z!H 3Rzk!DYI&ga B\DZ@-d(Mq< (IsCǕd<ؽEDGR3~$>)vMBqr]C. -Ɂ-{޾)P&+9(3DbҔhX`v1lzĖk*(™
+wݴcvqP(kQVm=4}7QjĒ t)SHGWDzJgYj55ڨiTMG&%|!M.mڥQ.TD5!窬)5ApܤSGȶW K02^Sav"dt]%AbDb!
+&9f!AYP]/T])o'd!=xQ\sȤ ɤdf˫dƭ\r}>tԑ˶4 T;UM0N ཋӈPWY
+d6?po\Ɇ o0R?[D'Gz;R:GXԨJJu+fS(S8"9rw .uUmx+X>\>Kgsȭ~moIȿ/Lgpm W\ִ0YauUv})sI^xj9qD ؒ̓8( `$]LG4+^K_PHMR-P3fMϮ틫4zevB2Ix&IJy8+y].Cn2<z
+ZlLNiН/DF]s_Օ+v0 I=F+?&RVp,tA#MDq+"s.J{ m!lo?$˨" 1Y?62H5
+C1kJg|њʻxBrY#u26`+VSJc؆.bpIY>21n:%<U!xPWe~۠`p[ˉ!9vhnԜ$Ɉd aoEabDB]rQ6C<}GE]rפgk׮/vF|f; -0BlK>Zʬ/wUm#ځ6nбqpߎ%Ʃik6˺ٍ>i1gn| Pti*lhup\;(r!7O2|CبVk: LA,/:}cGXE[Y
+xwTXnîPMB$ae$Ӗ2t@VjC{"̟tcwm2q)$MtIa}z¢!`,+&~7s^,SM͇
+GPӥvwsBh2C S?]+!s0WTdddsgܿ3R9{ˆ̨<a M4PCku
+S w9:'{wl$Yt!e =UrvĖJ #s/[
+endstream
+endobj
+726 0 obj
+<< /Type /Page /Contents 727 0 R /Resources 725 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 603 0 R >>
+endobj
+728 0 obj
+<< /D [ 726 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+729 0 obj
+<< /D [ 726 0 R /XYZ 79.752 719.19 null ] >>
+endobj
+730 0 obj
+<< /D [ 726 0 R /XYZ 79.752 708.232 null ] >>
+endobj
+731 0 obj
+<< /D [ 726 0 R /XYZ 79.752 697.273 null ] >>
+endobj
+732 0 obj
+<< /D [ 726 0 R /XYZ 79.752 686.314 null ] >>
+endobj
+733 0 obj
+<< /D [ 726 0 R /XYZ 79.752 652.132 null ] >>
+endobj
+734 0 obj
+<< /D [ 726 0 R /XYZ 79.752 605.995 null ] >>
+endobj
+735 0 obj
+<< /D [ 726 0 R /XYZ 79.752 571.814 null ] >>
+endobj
+736 0 obj
+<< /D [ 726 0 R /XYZ 79.752 525.677 null ] >>
+endobj
+737 0 obj
+<< /D [ 726 0 R /XYZ 79.752 514.718 null ] >>
+endobj
+738 0 obj
+<< /D [ 726 0 R /XYZ 79.752 468.582 null ] >>
+endobj
+739 0 obj
+<< /D [ 726 0 R /XYZ 79.752 444.535 null ] >>
+endobj
+740 0 obj
+<< /D [ 726 0 R /XYZ 79.752 433.576 null ] >>
+endobj
+741 0 obj
+<< /D [ 726 0 R /XYZ 79.752 422.617 null ] >>
+endobj
+742 0 obj
+<< /D [ 726 0 R /XYZ 79.752 411.658 null ] >>
+endobj
+743 0 obj
+<< /D [ 726 0 R /XYZ 79.752 400.699 null ] >>
+endobj
+744 0 obj
+<< /D [ 726 0 R /XYZ 79.752 389.74 null ] >>
+endobj
+745 0 obj
+<< /D [ 726 0 R /XYZ 79.752 378.781 null ] >>
+endobj
+746 0 obj
+<< /D [ 726 0 R /XYZ 79.752 330.824 null ] >>
+endobj
+747 0 obj
+<< /D [ 726 0 R /XYZ 79.752 279.053 null ] >>
+endobj
+748 0 obj
+<< /D [ 726 0 R /XYZ 79.752 227.283 null ] >>
+endobj
+750 0 obj
+<< /D [ 726 0 R /XYZ 79.752 89.596 null ] >>
+endobj
+751 0 obj
+<< /D [ 726 0 R /XYZ 79.752 78.637 null ] >>
+endobj
+725 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F20 186 0 R /F73 189 0 R /F69 183 0 R /F80 749 0 R /F79 668 0 R /F23 660 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+755 0 obj
+<< /Filter /FlateDecode /Length 2875 >>
+stream
+xڝZ[s۸~ϯS+ͬ/~miN[!hhHdVd
+Mi0sXFC%F#<d`RaarU!uxBYHN_iE6uW2%#
+m(b:zt%&0T'J$'q))>⊃"ٖEjE$wQ@l^74Y @)bI{!RYb`'L{4 aO0ۀ5n02f^"K!i7~s|1QkD\o\BLw|뀛/uH*Y!!\Ez_&1C/c>44IQzxPlF5yݴAj@@xլW"_&1c IϢ8> \oS¢C8\vY]3ᩐᙓDCOULT8?S*x{\R0!yaaKX}7oծ 6T8X߿~VO#<Mkʭ
+ pʼL^XܻIω0r4c32ȅ
+#E6L2k74%?x.˻DN!%1R{0Jf="30Ni|^(a`+3L)^P&+Z{闲1Aє ')rq.r'-lz tg:UZ0I^OXQY \ >HƉC $K1LND 7 P G3:t @f;Іh LCŲf.^1GZz+́7=JrOCj;~!/E~?l!1~:& 9\D ~ہf !UIR5xQ41XТB#hiE\G H1#.Gw'K :ydG?]9C,^r?@EV)&L$nO"RgU% LW %!@?9qc~9Ě\D.!wwh₄&;Ε9;sakJWbdJt&7?UBP* #,_) a,f6
+Ǟ,IMhv5ĸ>耵bY/R1Mþ/^E]䱐 1Kb NǨa7n8D}6JIUTmە
+endstream
+endobj
+754 0 obj
+<< /Type /Page /Contents 755 0 R /Resources 753 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 603 0 R /Annots 771 0 R >>
+endobj
+771 0 obj
+[ 752 0 R ]
+endobj
+752 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 377.359 528.11 383.821 540.046 ]/A << /S /GoTo /D (Hfootnote.2) >> >>
+endobj
+756 0 obj
+<< /D [ 754 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+757 0 obj
+<< /D [ 754 0 R /XYZ 79.752 718.51 null ] >>
+endobj
+758 0 obj
+<< /D [ 754 0 R /XYZ 79.752 707.551 null ] >>
+endobj
+759 0 obj
+<< /D [ 754 0 R /XYZ 79.752 600.095 null ] >>
+endobj
+760 0 obj
+<< /D [ 754 0 R /XYZ 79.752 589.136 null ] >>
+endobj
+761 0 obj
+<< /D [ 754 0 R /XYZ 79.752 516.306 null ] >>
+endobj
+762 0 obj
+<< /D [ 754 0 R /XYZ 79.752 467.386 null ] >>
+endobj
+763 0 obj
+<< /D [ 754 0 R /XYZ 79.752 336.02 null ] >>
+endobj
+764 0 obj
+<< /D [ 754 0 R /XYZ 79.752 325.061 null ] >>
+endobj
+765 0 obj
+<< /D [ 754 0 R /XYZ 79.752 186.323 null ] >>
+endobj
+766 0 obj
+<< /D [ 754 0 R /XYZ 79.752 118.637 null ] >>
+endobj
+767 0 obj
+<< /D [ 754 0 R /XYZ 94.613 89.795 null ] >>
+endobj
+753 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F79 668 0 R /F80 749 0 R /F19 184 0 R /F20 186 0 R /F23 660 0 R /F73 189 0 R /F69 183 0 R /F46 176 0 R /F22 473 0 R /F77 480 0 R /F63 205 0 R /F81 768 0 R /F56 769 0 R /F52 770 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+774 0 obj
+<< /Filter /FlateDecode /Length 2205 >>
+stream
+xڵYMo6W6pM16a^: AX,<`/ERmG1=KP|ij|݇4ҒJ>{^gd4bj$AXv?6_ܳ]Q]>z0ߟa;f0:.F35%@dK0A؏ey˗]zxU{AEK*|m`}CfiջhhH=:A%h]⺣)F <^U&\v]vfǿFɖqdWrF6lbXyU=#o;T ў7g\.zAPTfλ3ׯؼye>uvTfD/z>ՖeY$jAc,VæX6F2ܑ١?1ͧlφJ8qはy"
+U~HmڻcibH~:.&O 8*^^FiN0 RZV&RLzJuB!-$%JG^S
+iY&ӞnjC`" $@G|$b,7z~e őtveUa2a6^eEl$ҕΨ1xHN=Wua归i7 JVqdהT*T\ bxucMtcGwiT=G a0!Q>`χ WUok;d,ىB8(OnM7Lj4\@ID̰㏖A<*Ǎ.|xz:R&CC(2%
+獝)зB}0HƠ=Ai }6__`aA)cԕ㺾_B6;)_zRz H-,dA #I`˭ct}a5޹A#p;!fC(
+Tob*tUl2,%' =U[ObcmENAERn۩
+endstream
+endobj
+773 0 obj
+<< /Type /Page /Contents 774 0 R /Resources 772 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 603 0 R >>
+endobj
+775 0 obj
+<< /D [ 773 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+776 0 obj
+<< /D [ 773 0 R /XYZ 79.752 746.914 null ] >>
+endobj
+777 0 obj
+<< /D [ 773 0 R /XYZ 79.752 735.955 null ] >>
+endobj
+778 0 obj
+<< /D [ 773 0 R /XYZ 79.752 724.996 null ] >>
+endobj
+779 0 obj
+<< /D [ 773 0 R /XYZ 79.752 714.037 null ] >>
+endobj
+780 0 obj
+<< /D [ 773 0 R /XYZ 79.752 703.078 null ] >>
+endobj
+781 0 obj
+<< /D [ 773 0 R /XYZ 79.752 648.284 null ] >>
+endobj
+782 0 obj
+<< /D [ 773 0 R /XYZ 79.752 637.325 null ] >>
+endobj
+783 0 obj
+<< /D [ 773 0 R /XYZ 79.752 626.366 null ] >>
+endobj
+784 0 obj
+<< /D [ 773 0 R /XYZ 79.752 615.407 null ] >>
+endobj
+785 0 obj
+<< /D [ 773 0 R /XYZ 79.752 604.448 null ] >>
+endobj
+786 0 obj
+<< /D [ 773 0 R /XYZ 79.752 593.489 null ] >>
+endobj
+787 0 obj
+<< /D [ 773 0 R /XYZ 79.752 582.53 null ] >>
+endobj
+788 0 obj
+<< /D [ 773 0 R /XYZ 79.752 571.571 null ] >>
+endobj
+789 0 obj
+<< /D [ 773 0 R /XYZ 79.752 560.613 null ] >>
+endobj
+790 0 obj
+<< /D [ 773 0 R /XYZ 79.752 549.654 null ] >>
+endobj
+791 0 obj
+<< /D [ 773 0 R /XYZ 79.752 538.695 null ] >>
+endobj
+792 0 obj
+<< /D [ 773 0 R /XYZ 79.752 527.736 null ] >>
+endobj
+793 0 obj
+<< /D [ 773 0 R /XYZ 79.752 516.777 null ] >>
+endobj
+794 0 obj
+<< /D [ 773 0 R /XYZ 79.752 505.818 null ] >>
+endobj
+795 0 obj
+<< /D [ 773 0 R /XYZ 79.752 494.859 null ] >>
+endobj
+796 0 obj
+<< /D [ 773 0 R /XYZ 79.752 483.9 null ] >>
+endobj
+797 0 obj
+<< /D [ 773 0 R /XYZ 79.752 472.941 null ] >>
+endobj
+798 0 obj
+<< /D [ 773 0 R /XYZ 79.752 461.982 null ] >>
+endobj
+799 0 obj
+<< /D [ 773 0 R /XYZ 79.752 451.023 null ] >>
+endobj
+800 0 obj
+<< /D [ 773 0 R /XYZ 79.752 333.464 null ] >>
+endobj
+801 0 obj
+<< /D [ 773 0 R /XYZ 79.752 322.505 null ] >>
+endobj
+802 0 obj
+<< /D [ 773 0 R /XYZ 79.752 311.547 null ] >>
+endobj
+803 0 obj
+<< /D [ 773 0 R /XYZ 79.752 300.588 null ] >>
+endobj
+804 0 obj
+<< /D [ 773 0 R /XYZ 79.752 289.629 null ] >>
+endobj
+805 0 obj
+<< /D [ 773 0 R /XYZ 79.752 278.67 null ] >>
+endobj
+25 0 obj
+<< /D [ 773 0 R /XYZ 79.37 253.215 null ] >>
+endobj
+772 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F80 749 0 R /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F76 318 0 R /F79 668 0 R /F72 187 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+809 0 obj
+<< /Filter /FlateDecode /Length 3347 >>
+stream
+xڥZo _@nLzhkW\+Bv%G %CȲJ?R6l~vcUL
+7 XJ(\7o2]qKO':KL3APlC[n/.m[;fn=O,{,10JHwCTu ɴ",)
+R^R ]}3myQT D]~ߕu(lX
+)wŕg{(,wHp *C
+Ȉf*%/[2tS7\\j?(ԃy ]&o:"ͩu+ض)exd2 }8]}_Z͚JbHy7],eD¦'diA(%б..6,}ס5>rwWW]^Vm/<c^Ùo3!ZIZ{yϻ lۢde+e
++h`נޫ^L(?
+}W|8?
+ C=~
+mO]cϐ +1lbwPb`_ߖ;gd싆kQL+ӗ|~~=I"f>hPIpQیe e[ڞhAAw\D)»L5!8h0ݔ]W5b4W9Br0d|b@.A8ZE)KD/Gm! m^{, >f<=aﯝE˪[e֒Lۍ "VsQ
+4n0σ'lw%=5eu 8<bgV1VZ S=,w^}r3 !MSw;*'
+00Q1Ƣbl|`Q3^+2hgΜ ,dvccH#F8҇`3
+&R~F#$LϽ&>ݻ(evs~`
+Ar_we{B(33(&ZoL uLL䌳,6ܲqbE`>N.Cl q<f3#JI$} ¢9t`'BNšsYShHpzu끄I >Ӂ&rhS(і((!'Fma {plܜn5>HM߱Z\SektTʍ`3l©Ӯ;52th@88&T݅qige9(o-!g\NSFCS+
+mL4HL#Hx6Z 77rYɺ}7PhK{EWgJPJ4d=S^P& P.p
+1n*p=<K:Q(;u]/ aqPAJ%͜fuYaYTE&,*<S-7Q^Dآ^ѩ3O&"{ZŻaa'(Tdx{|=W
+)whHxj?unpbA980cE@N
+U@u̞s7ʈ2e!մ5ľ2Nډ/ǀCPC̎{xuDeb̬9# D¶B!ķ̆Qf#2k!B$:m 8Yc7]l5)W0EٵQc3BkY,#Cu;
+v}߀v]OAKoF6_[keC2Qf<)
+@_V?+hɟY1pܦۺ"mR5
+endstream
+endobj
+808 0 obj
+<< /Type /Page /Contents 809 0 R /Resources 807 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 603 0 R /Annots 827 0 R >>
+endobj
+827 0 obj
+[ 806 0 R ]
+endobj
+806 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 300.845 666.194 307.307 678.408 ]/A << /S /GoTo /D (Hfootnote.3) >> >>
+endobj
+810 0 obj
+<< /D [ 808 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+812 0 obj
+<< /D [ 808 0 R /XYZ 79.752 426.117 null ] >>
+endobj
+813 0 obj
+<< /D [ 808 0 R /XYZ 79.752 385.27 null ] >>
+endobj
+814 0 obj
+<< /D [ 808 0 R /XYZ 79.752 374.311 null ] >>
+endobj
+815 0 obj
+<< /D [ 808 0 R /XYZ 79.752 358.371 null ] >>
+endobj
+816 0 obj
+<< /D [ 808 0 R /XYZ 79.752 347.412 null ] >>
+endobj
+817 0 obj
+<< /D [ 808 0 R /XYZ 79.752 292.618 null ] >>
+endobj
+818 0 obj
+<< /D [ 808 0 R /XYZ 79.752 239.816 null ] >>
+endobj
+819 0 obj
+<< /D [ 808 0 R /XYZ 79.752 228.857 null ] >>
+endobj
+820 0 obj
+<< /D [ 808 0 R /XYZ 79.752 217.898 null ] >>
+endobj
+821 0 obj
+<< /D [ 808 0 R /XYZ 79.752 206.939 null ] >>
+endobj
+822 0 obj
+<< /D [ 808 0 R /XYZ 79.752 195.98 null ] >>
+endobj
+823 0 obj
+<< /D [ 808 0 R /XYZ 79.752 185.021 null ] >>
+endobj
+824 0 obj
+<< /D [ 808 0 R /XYZ 79.752 174.062 null ] >>
+endobj
+825 0 obj
+<< /D [ 808 0 R /XYZ 79.752 133.215 null ] >>
+endobj
+826 0 obj
+<< /D [ 808 0 R /XYZ 94.613 102.381 null ] >>
+endobj
+807 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F79 668 0 R /F19 184 0 R /F20 186 0 R /F76 318 0 R /F80 749 0 R /F22 473 0 R /F82 811 0 R /F23 660 0 R /F73 189 0 R /F69 183 0 R /F70 185 0 R /F77 480 0 R /F63 205 0 R /F81 768 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+830 0 obj
+<< /Filter /FlateDecode /Length 2701 >>
+stream
+xZ[۸~ϯpчzwJ
+,zfahlyF-lË,z<q/E#ϝ_峜k9^bDьPfJ1_7MsoWlˮjj7hYږ=.W!+&9|rޅ>Up"nrfSܔꊛæh<,$a<B(Q3F`d³F˜ph%{^ "be$g1=r_w;`}nna7[?=?CZLW~]mߏÿ\pJ8 AT:D.6վ
+Lxt:E$CtDȯmȄ=Y\GOqI,ʻ 7nlb<@!9Yϫu_m6uDx9QbO^
+)T\_d|^ӽVk7H,[?sss nuٖC
+ڦjC$n/w鹻R=6dcYm:Xqa.FO3AUL3L1\\y@z!%msعfnZbY}_ñճbw\J=Q= o0jIV7M~s64+(;%ix!k6zte+LKF̓=SYl_v=;Q|ꅝ#t. )i.΢H9(]T}P`*PN<ӹ"7j+ٚI]ևmՕq'ɲ,V~[X+Tf?֫\/XhMJy+xG /fޚ`*:pv:zzp m` 7z3]~ y;9_ M.-Nc0,FIS~[Sb":-$(Cl&/e](z" V dm/Rɍ?EeiA?$t}B褰/WDY-(,޻%@a(r5 u˗o:(g'~oɇb
+
+;mGeNA:C|!ĥ{E!xwF-<HÇU]0j 3_5va +p? j']GhTkb2Atd|$׺7nlI1 u61YFxX'])N2#7%iCŲY[sߠ+ ]
+ Mi<2
+_$ Sr<KJs?,E]5 {)g; J#OH!
+)neZ}ax>hz3C yУ!`S 'E5Q,b5?&~_0",s RI`׍L!6ya#do/''"¢g6Ɠcl
+endstream
+endobj
+829 0 obj
+<< /Type /Page /Contents 830 0 R /Resources 828 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 871 0 R >>
+endobj
+831 0 obj
+<< /D [ 829 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+832 0 obj
+<< /D [ 829 0 R /XYZ 79.752 754.884 null ] >>
+endobj
+833 0 obj
+<< /D [ 829 0 R /XYZ 79.752 714.037 null ] >>
+endobj
+834 0 obj
+<< /D [ 829 0 R /XYZ 79.752 649.28 null ] >>
+endobj
+835 0 obj
+<< /D [ 829 0 R /XYZ 79.752 560.613 null ] >>
+endobj
+836 0 obj
+<< /D [ 829 0 R /XYZ 79.752 549.654 null ] >>
+endobj
+837 0 obj
+<< /D [ 829 0 R /XYZ 79.752 538.695 null ] >>
+endobj
+838 0 obj
+<< /D [ 829 0 R /XYZ 79.752 527.736 null ] >>
+endobj
+839 0 obj
+<< /D [ 829 0 R /XYZ 79.752 486.889 null ] >>
+endobj
+840 0 obj
+<< /D [ 829 0 R /XYZ 79.752 475.93 null ] >>
+endobj
+841 0 obj
+<< /D [ 829 0 R /XYZ 79.752 464.971 null ] >>
+endobj
+842 0 obj
+<< /D [ 829 0 R /XYZ 79.752 454.012 null ] >>
+endobj
+843 0 obj
+<< /D [ 829 0 R /XYZ 79.752 443.053 null ] >>
+endobj
+844 0 obj
+<< /D [ 829 0 R /XYZ 79.752 432.094 null ] >>
+endobj
+845 0 obj
+<< /D [ 829 0 R /XYZ 79.752 421.136 null ] >>
+endobj
+846 0 obj
+<< /D [ 829 0 R /XYZ 79.752 410.177 null ] >>
+endobj
+847 0 obj
+<< /D [ 829 0 R /XYZ 79.752 399.218 null ] >>
+endobj
+848 0 obj
+<< /D [ 829 0 R /XYZ 79.752 388.259 null ] >>
+endobj
+849 0 obj
+<< /D [ 829 0 R /XYZ 79.752 377.3 null ] >>
+endobj
+850 0 obj
+<< /D [ 829 0 R /XYZ 79.752 366.341 null ] >>
+endobj
+851 0 obj
+<< /D [ 829 0 R /XYZ 79.752 355.382 null ] >>
+endobj
+852 0 obj
+<< /D [ 829 0 R /XYZ 79.752 344.423 null ] >>
+endobj
+853 0 obj
+<< /D [ 829 0 R /XYZ 79.752 333.464 null ] >>
+endobj
+854 0 obj
+<< /D [ 829 0 R /XYZ 79.752 322.505 null ] >>
+endobj
+855 0 obj
+<< /D [ 829 0 R /XYZ 79.752 311.547 null ] >>
+endobj
+856 0 obj
+<< /D [ 829 0 R /XYZ 79.752 300.588 null ] >>
+endobj
+857 0 obj
+<< /D [ 829 0 R /XYZ 79.752 289.629 null ] >>
+endobj
+858 0 obj
+<< /D [ 829 0 R /XYZ 79.752 212.916 null ] >>
+endobj
+859 0 obj
+<< /D [ 829 0 R /XYZ 79.752 201.957 null ] >>
+endobj
+860 0 obj
+<< /D [ 829 0 R /XYZ 79.752 190.999 null ] >>
+endobj
+861 0 obj
+<< /D [ 829 0 R /XYZ 79.752 180.04 null ] >>
+endobj
+862 0 obj
+<< /D [ 829 0 R /XYZ 79.752 169.081 null ] >>
+endobj
+863 0 obj
+<< /D [ 829 0 R /XYZ 79.752 158.122 null ] >>
+endobj
+864 0 obj
+<< /D [ 829 0 R /XYZ 79.752 147.163 null ] >>
+endobj
+865 0 obj
+<< /D [ 829 0 R /XYZ 79.752 136.204 null ] >>
+endobj
+866 0 obj
+<< /D [ 829 0 R /XYZ 79.752 125.245 null ] >>
+endobj
+867 0 obj
+<< /D [ 829 0 R /XYZ 79.752 114.286 null ] >>
+endobj
+868 0 obj
+<< /D [ 829 0 R /XYZ 79.752 103.327 null ] >>
+endobj
+869 0 obj
+<< /D [ 829 0 R /XYZ 79.752 92.368 null ] >>
+endobj
+870 0 obj
+<< /D [ 829 0 R /XYZ 79.752 81.41 null ] >>
+endobj
+828 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F20 186 0 R /F73 189 0 R /F69 183 0 R /F70 185 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+874 0 obj
+<< /Filter /FlateDecode /Length 2437 >>
+stream
+xڵZYoH~ w>샟 @K%D" 2}/M˒Z; Y]GUUSx<_p<"aWyp؄# +/ h% ’LM?Ý4Le ?@)#iTS@HU3gQS=jD4͙ (0~_^enj9g]MUw)Vwa#
+Q*!f(;,(jrj3:q^6M⴮o$ReۮrM],AF UfY˟rnE7٭9bDYd'fD%EEJ<̈́ NUs$~&c Ie-J*_/ +/&C]vuZ}-6;QUy&k,&=U^?Vwio76m,|xɇ;b&[KALM$Vr7lZ7ΨM+d]Ul広W_
+E^o]ma²wV7Cf3A"5|QXGeZ!-t*6c]5Ҙ2>^<2-glX:7x:G !Q A\Td!
+[;*Cz/Kf(+m0HSMYMr"|N,dp@DS.
+4h
+TtM@CG"Tf$&8xpOw'oSiFhH+t@B7;?&wL
+MՖV[c[3}vJat].GKOL=X Rf`pLu2#Vd:m=}'US-i3.ʣk'zsY1X):3h}AZZ76 xV/(K09RMpX k`f3 {S5MXrpI3!bCg{>',f- W}]x1!2}>;%G K
+/yY[6vo0dY~+pܬ;r̅HO"C_h0adGD
+endstream
+endobj
+873 0 obj
+<< /Type /Page /Contents 874 0 R /Resources 872 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 871 0 R >>
+endobj
+875 0 obj
+<< /D [ 873 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+876 0 obj
+<< /D [ 873 0 R /XYZ 79.752 768.832 null ] >>
+endobj
+877 0 obj
+<< /D [ 873 0 R /XYZ 79.752 757.873 null ] >>
+endobj
+878 0 obj
+<< /D [ 873 0 R /XYZ 79.752 746.914 null ] >>
+endobj
+879 0 obj
+<< /D [ 873 0 R /XYZ 79.752 735.955 null ] >>
+endobj
+880 0 obj
+<< /D [ 873 0 R /XYZ 79.752 724.996 null ] >>
+endobj
+881 0 obj
+<< /D [ 873 0 R /XYZ 79.752 714.037 null ] >>
+endobj
+882 0 obj
+<< /D [ 873 0 R /XYZ 79.752 703.078 null ] >>
+endobj
+883 0 obj
+<< /D [ 873 0 R /XYZ 79.752 692.119 null ] >>
+endobj
+884 0 obj
+<< /D [ 873 0 R /XYZ 79.752 681.16 null ] >>
+endobj
+885 0 obj
+<< /D [ 873 0 R /XYZ 79.752 670.202 null ] >>
+endobj
+886 0 obj
+<< /D [ 873 0 R /XYZ 79.752 654.377 null ] >>
+endobj
+887 0 obj
+<< /D [ 873 0 R /XYZ 79.752 643.418 null ] >>
+endobj
+888 0 obj
+<< /D [ 873 0 R /XYZ 79.752 577.072 null ] >>
+endobj
+889 0 obj
+<< /D [ 873 0 R /XYZ 79.752 566.113 null ] >>
+endobj
+890 0 obj
+<< /D [ 873 0 R /XYZ 79.752 489.517 null ] >>
+endobj
+891 0 obj
+<< /D [ 873 0 R /XYZ 79.752 478.558 null ] >>
+endobj
+892 0 obj
+<< /D [ 873 0 R /XYZ 79.752 467.599 null ] >>
+endobj
+893 0 obj
+<< /D [ 873 0 R /XYZ 79.752 363.568 null ] >>
+endobj
+894 0 obj
+<< /D [ 873 0 R /XYZ 79.752 352.61 null ] >>
+endobj
+895 0 obj
+<< /D [ 873 0 R /XYZ 79.752 341.651 null ] >>
+endobj
+896 0 obj
+<< /D [ 873 0 R /XYZ 79.752 330.692 null ] >>
+endobj
+897 0 obj
+<< /D [ 873 0 R /XYZ 79.752 319.733 null ] >>
+endobj
+898 0 obj
+<< /D [ 873 0 R /XYZ 79.752 308.774 null ] >>
+endobj
+899 0 obj
+<< /D [ 873 0 R /XYZ 79.752 297.815 null ] >>
+endobj
+900 0 obj
+<< /D [ 873 0 R /XYZ 79.752 286.856 null ] >>
+endobj
+901 0 obj
+<< /D [ 873 0 R /XYZ 79.752 275.897 null ] >>
+endobj
+902 0 obj
+<< /D [ 873 0 R /XYZ 79.752 264.938 null ] >>
+endobj
+903 0 obj
+<< /D [ 873 0 R /XYZ 79.752 253.979 null ] >>
+endobj
+904 0 obj
+<< /D [ 873 0 R /XYZ 79.752 243.021 null ] >>
+endobj
+905 0 obj
+<< /D [ 873 0 R /XYZ 79.752 232.062 null ] >>
+endobj
+906 0 obj
+<< /D [ 873 0 R /XYZ 79.752 221.103 null ] >>
+endobj
+907 0 obj
+<< /D [ 873 0 R /XYZ 79.752 210.144 null ] >>
+endobj
+908 0 obj
+<< /D [ 873 0 R /XYZ 79.752 199.185 null ] >>
+endobj
+909 0 obj
+<< /D [ 873 0 R /XYZ 79.752 188.226 null ] >>
+endobj
+910 0 obj
+<< /D [ 873 0 R /XYZ 79.752 177.267 null ] >>
+endobj
+911 0 obj
+<< /D [ 873 0 R /XYZ 79.752 166.308 null ] >>
+endobj
+912 0 obj
+<< /D [ 873 0 R /XYZ 79.752 155.349 null ] >>
+endobj
+913 0 obj
+<< /D [ 873 0 R /XYZ 79.752 144.39 null ] >>
+endobj
+914 0 obj
+<< /D [ 873 0 R /XYZ 79.752 133.431 null ] >>
+endobj
+915 0 obj
+<< /D [ 873 0 R /XYZ 79.752 122.473 null ] >>
+endobj
+916 0 obj
+<< /D [ 873 0 R /XYZ 79.752 111.514 null ] >>
+endobj
+917 0 obj
+<< /D [ 873 0 R /XYZ 79.752 100.555 null ] >>
+endobj
+918 0 obj
+<< /D [ 873 0 R /XYZ 79.752 89.596 null ] >>
+endobj
+919 0 obj
+<< /D [ 873 0 R /XYZ 79.752 78.637 null ] >>
+endobj
+872 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F82 811 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+922 0 obj
+<< /Filter /FlateDecode /Length 2704 >>
+stream
+xڭZKۺWz[
+'3(r¤ Y rx F>X]e2+fd`E2JXF8Wf.SɤHyuF`LZzi FtF!@:K#=s[79##f#,Pf6DE3)S[0j_M<M/NhC1Ӊ
+` ,_
+E`\lU_wwy{)eMHOJ"𜈫4KmI&]Ю%Cω6/ZVArOJwI5iĭ^O,kHWA6WE9X("00+«q87V3m<eׯp=`ZN$&,d^ĔHabHa b:2U7:*C'fQVnY F@ʴIW儆ҸZ21`>=xOu(|&J$sFuȒ56PMhH$V ;D!|Z
+8 L9pic]&S)\^ma^<~Z>U”
+cb49#G~( XM|U'qVF)XF춹k_~?1>8$eRN]4͟ B)COS4eO!Ze1y9+IRJ P؜ϫ2W<*IeGN֒%j<΢yeZ|מswy12bt d4FdBibLɥPQ+T^EC~}UW=&rxzbaԩ>=+d)u<SRa/HX`x)*0ljFNo׬e
+թ厍5T.6t|~2)sӎ/`Wؿm]s|hl8pqnc5mZ*! ?L[fkgMWO=\ AC$_1P kڵ]m~O<m~&R!
+cN'5Jƕ0ʠ6P2 4 53's6Ĥ S+pfOHcGmu wWcYu.ɹ\6ܼD
+l`_6Tz wc/spl.1 ul3{<AG0o-i>/4s@mS
+J(`+3cxjC/{?7$8F 
+ܣn/iO 4,3iƱ12T:Px|8 ',=x"w睕Ջ3j7I秱a덻ǯ)N> I0_5)(5q0"X g7/p֮һb`C]r忚sG$l ED݌x&;}$xU=UI`H&FRg#p[6h}l0.REUYX0k{t/Cbm'w?g!QK$N|S6ϲ48dWDQO1rf5>-g1ֲݯ@kC+t09_=yw=)o<UN6KSlri^$}
+6Ŏj{{7ZԶV}'WӿW$f9<)b!_[V[g
+endstream
+endobj
+921 0 obj
+<< /Type /Page /Contents 922 0 R /Resources 920 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 871 0 R >>
+endobj
+923 0 obj
+<< /D [ 921 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+924 0 obj
+<< /D [ 921 0 R /XYZ 79.752 768.832 null ] >>
+endobj
+925 0 obj
+<< /D [ 921 0 R /XYZ 79.752 757.873 null ] >>
+endobj
+926 0 obj
+<< /D [ 921 0 R /XYZ 79.752 746.914 null ] >>
+endobj
+927 0 obj
+<< /D [ 921 0 R /XYZ 79.752 735.955 null ] >>
+endobj
+928 0 obj
+<< /D [ 921 0 R /XYZ 79.752 724.996 null ] >>
+endobj
+929 0 obj
+<< /D [ 921 0 R /XYZ 79.752 714.037 null ] >>
+endobj
+930 0 obj
+<< /D [ 921 0 R /XYZ 79.752 703.078 null ] >>
+endobj
+931 0 obj
+<< /D [ 921 0 R /XYZ 79.752 692.119 null ] >>
+endobj
+932 0 obj
+<< /D [ 921 0 R /XYZ 79.752 681.16 null ] >>
+endobj
+933 0 obj
+<< /D [ 921 0 R /XYZ 79.752 670.202 null ] >>
+endobj
+934 0 obj
+<< /D [ 921 0 R /XYZ 79.752 659.243 null ] >>
+endobj
+935 0 obj
+<< /D [ 921 0 R /XYZ 79.752 594.513 null ] >>
+endobj
+936 0 obj
+<< /D [ 921 0 R /XYZ 79.752 583.554 null ] >>
+endobj
+937 0 obj
+<< /D [ 921 0 R /XYZ 79.752 542.734 null ] >>
+endobj
+938 0 obj
+<< /D [ 921 0 R /XYZ 79.752 531.775 null ] >>
+endobj
+939 0 obj
+<< /D [ 921 0 R /XYZ 79.752 520.816 null ] >>
+endobj
+940 0 obj
+<< /D [ 921 0 R /XYZ 79.752 509.857 null ] >>
+endobj
+941 0 obj
+<< /D [ 921 0 R /XYZ 79.752 498.898 null ] >>
+endobj
+942 0 obj
+<< /D [ 921 0 R /XYZ 79.752 487.939 null ] >>
+endobj
+943 0 obj
+<< /D [ 921 0 R /XYZ 79.752 459.075 null ] >>
+endobj
+944 0 obj
+<< /D [ 921 0 R /XYZ 79.752 448.116 null ] >>
+endobj
+945 0 obj
+<< /D [ 921 0 R /XYZ 79.752 407.296 null ] >>
+endobj
+946 0 obj
+<< /D [ 921 0 R /XYZ 79.752 396.337 null ] >>
+endobj
+947 0 obj
+<< /D [ 921 0 R /XYZ 79.752 385.378 null ] >>
+endobj
+948 0 obj
+<< /D [ 921 0 R /XYZ 79.752 374.419 null ] >>
+endobj
+949 0 obj
+<< /D [ 921 0 R /XYZ 79.752 363.46 null ] >>
+endobj
+950 0 obj
+<< /D [ 921 0 R /XYZ 79.752 352.501 null ] >>
+endobj
+951 0 obj
+<< /D [ 921 0 R /XYZ 79.752 341.543 null ] >>
+endobj
+952 0 obj
+<< /D [ 921 0 R /XYZ 79.752 330.584 null ] >>
+endobj
+953 0 obj
+<< /D [ 921 0 R /XYZ 79.752 319.625 null ] >>
+endobj
+954 0 obj
+<< /D [ 921 0 R /XYZ 79.752 308.666 null ] >>
+endobj
+955 0 obj
+<< /D [ 921 0 R /XYZ 79.752 255.891 null ] >>
+endobj
+956 0 obj
+<< /D [ 921 0 R /XYZ 79.752 244.932 null ] >>
+endobj
+957 0 obj
+<< /D [ 921 0 R /XYZ 79.752 233.973 null ] >>
+endobj
+958 0 obj
+<< /D [ 921 0 R /XYZ 79.752 223.014 null ] >>
+endobj
+959 0 obj
+<< /D [ 921 0 R /XYZ 79.752 212.055 null ] >>
+endobj
+960 0 obj
+<< /D [ 921 0 R /XYZ 79.752 111.514 null ] >>
+endobj
+961 0 obj
+<< /D [ 921 0 R /XYZ 79.752 100.555 null ] >>
+endobj
+962 0 obj
+<< /D [ 921 0 R /XYZ 79.752 89.596 null ] >>
+endobj
+963 0 obj
+<< /D [ 921 0 R /XYZ 79.752 78.637 null ] >>
+endobj
+920 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F76 318 0 R /F20 186 0 R /F70 185 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+966 0 obj
+<< /Filter /FlateDecode /Length 2359 >>
+stream
+xZK6p07%X`E&==dƖm!t&oK&~EEVUrO~/ |ͻNRS2y\`XOD*D
+6Fy'/YQyװջHʐS8?aꦟͶyㄛ7}y.+=Ͳ.OtVnm%,<G8'^|, &%X"-4<ӜVh~SBTL(fxhoȞQƳ'=3~`YyW޾ﷷw8[׳wʺq>8u;&x0U;=[dԟ|wwbXH(
+zwx|8|C H{"J]2L Kӌ{<.8E]I)Dx$ikwoZyO 9cv?ohDY( ,K/'Mr8p=꺶o"^?Ϋ_?e2+
+-
+Tp2O;9vE$s -Y)
+ AH*P%2#o)qDf:'M]m/J϶pmggè`*I/ Z)vլ f£d< Y!a\xAEZ r#٘_{5˹0a/&ˇ#+Hx`^.df8ʹP͊ڶ]0Xx,4XK3U=ӛclU5'j9y}6WUc`&u=_naTn攧A1_ k 8k,mבֿV޲Y:FO|ݴX5H;8Y 8`zI=ִaXU;48(Tvo.
+>3HeRDȤ {k۔M E|H Fd
+_X*'Y_H~triNVկMU6P|?_
+Sye1Xњ 6t۵N56Qޘ{H .A !Ž!2a2a8c+ZcQ U)ts7(BK"w0taURස ,庲Fj͇Ϲ*h.<><CE[{vܮ4u5#e%\1;߶Ŷ:_8CR15?co73)mW\8ꊪl{ӏ ?).Η#Wn*[
+ RgD uߔSI`"bᮖu\wv.f2 SרO!mۣB#{U[{ Gͦ7>ko$Ri#MԛyWQ3A
+endstream
+endobj
+965 0 obj
+<< /Type /Page /Contents 966 0 R /Resources 964 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 871 0 R >>
+endobj
+967 0 obj
+<< /D [ 965 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+968 0 obj
+<< /D [ 965 0 R /XYZ 79.752 768.832 null ] >>
+endobj
+969 0 obj
+<< /D [ 965 0 R /XYZ 79.752 757.873 null ] >>
+endobj
+970 0 obj
+<< /D [ 965 0 R /XYZ 79.752 717.298 null ] >>
+endobj
+971 0 obj
+<< /D [ 965 0 R /XYZ 79.752 706.339 null ] >>
+endobj
+972 0 obj
+<< /D [ 965 0 R /XYZ 79.752 695.38 null ] >>
+endobj
+973 0 obj
+<< /D [ 965 0 R /XYZ 79.752 684.421 null ] >>
+endobj
+974 0 obj
+<< /D [ 965 0 R /XYZ 79.752 643.846 null ] >>
+endobj
+975 0 obj
+<< /D [ 965 0 R /XYZ 79.752 632.887 null ] >>
+endobj
+976 0 obj
+<< /D [ 965 0 R /XYZ 79.752 580.356 null ] >>
+endobj
+977 0 obj
+<< /D [ 965 0 R /XYZ 79.752 569.397 null ] >>
+endobj
+978 0 obj
+<< /D [ 965 0 R /XYZ 79.752 558.438 null ] >>
+endobj
+979 0 obj
+<< /D [ 965 0 R /XYZ 79.752 547.479 null ] >>
+endobj
+980 0 obj
+<< /D [ 965 0 R /XYZ 79.752 536.521 null ] >>
+endobj
+981 0 obj
+<< /D [ 965 0 R /XYZ 79.752 525.562 null ] >>
+endobj
+982 0 obj
+<< /D [ 965 0 R /XYZ 79.752 484.986 null ] >>
+endobj
+983 0 obj
+<< /D [ 965 0 R /XYZ 79.752 474.027 null ] >>
+endobj
+984 0 obj
+<< /D [ 965 0 R /XYZ 79.752 463.069 null ] >>
+endobj
+985 0 obj
+<< /D [ 965 0 R /XYZ 79.752 452.11 null ] >>
+endobj
+986 0 obj
+<< /D [ 965 0 R /XYZ 79.752 441.151 null ] >>
+endobj
+987 0 obj
+<< /D [ 965 0 R /XYZ 79.752 430.192 null ] >>
+endobj
+988 0 obj
+<< /D [ 965 0 R /XYZ 79.752 419.233 null ] >>
+endobj
+989 0 obj
+<< /D [ 965 0 R /XYZ 79.752 408.274 null ] >>
+endobj
+990 0 obj
+<< /D [ 965 0 R /XYZ 79.752 397.315 null ] >>
+endobj
+991 0 obj
+<< /D [ 965 0 R /XYZ 79.752 386.356 null ] >>
+endobj
+992 0 obj
+<< /D [ 965 0 R /XYZ 79.752 375.397 null ] >>
+endobj
+993 0 obj
+<< /D [ 965 0 R /XYZ 79.752 364.438 null ] >>
+endobj
+994 0 obj
+<< /D [ 965 0 R /XYZ 79.752 353.48 null ] >>
+endobj
+995 0 obj
+<< /D [ 965 0 R /XYZ 79.752 342.521 null ] >>
+endobj
+996 0 obj
+<< /D [ 965 0 R /XYZ 79.752 326.852 null ] >>
+endobj
+997 0 obj
+<< /D [ 965 0 R /XYZ 79.752 315.893 null ] >>
+endobj
+29 0 obj
+<< /D [ 965 0 R /XYZ 79.37 301.42 null ] >>
+endobj
+998 0 obj
+<< /D [ 965 0 R /XYZ 79.752 188.226 null ] >>
+endobj
+999 0 obj
+<< /D [ 965 0 R /XYZ 79.752 177.267 null ] >>
+endobj
+1000 0 obj
+<< /D [ 965 0 R /XYZ 79.752 166.308 null ] >>
+endobj
+1001 0 obj
+<< /D [ 965 0 R /XYZ 79.752 155.349 null ] >>
+endobj
+1002 0 obj
+<< /D [ 965 0 R /XYZ 79.752 144.39 null ] >>
+endobj
+1003 0 obj
+<< /D [ 965 0 R /XYZ 79.752 133.431 null ] >>
+endobj
+1004 0 obj
+<< /D [ 965 0 R /XYZ 79.752 122.473 null ] >>
+endobj
+1005 0 obj
+<< /D [ 965 0 R /XYZ 79.752 111.514 null ] >>
+endobj
+1006 0 obj
+<< /D [ 965 0 R /XYZ 79.752 100.555 null ] >>
+endobj
+1007 0 obj
+<< /D [ 965 0 R /XYZ 79.752 89.596 null ] >>
+endobj
+1008 0 obj
+<< /D [ 965 0 R /XYZ 79.752 78.637 null ] >>
+endobj
+964 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F76 318 0 R /F72 187 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+1011 0 obj
+<< /Filter /FlateDecode /Length 2040 >>
+stream
+xڵZ]o6}ϯ0HX~
+0(n%m:&K4R$mIeٔag?_pE~?_zVG&W329ϔ$K2&[4ʥdz% #"oԽi]o#B?'f9"L9p+'X4}3wuLjD4TyT84j}L,UvM]oWwaB\1%\e0-3-4bCeUR@ @A%QOBMG?\9b<I'y,%Ey$8"D. $M#
+Igc ԫh:ݲٙKQPb4)߄ WoI>b;ATIdޟ M5l}v[sD{xz.ffe`דLwTvI.ϊ,k6YOdD#yOPL#E-8+{DZ/*3yo<YR9tIh3'rJ*kJz ͊u[*7W•ga< ]ԾMCۄ=b]6YӮʺMRWVZX
+>v.}Cb>IJ#4L 4m; ėx0 @+tiNtYҜQg$huפ:Kq\pZ .JdN78efy A@O#2_Z`"diAIL:D¢BfGHc<*L1)9yNe`X+bk]>lt]:7:ruOdy9\0!0&"LB8d)ZǐnӴ99#gjbai[lIÆ,sQpBmSu,r8qGʥ/UNӈ%,Ó !ʬR*jB_ݻv{'"W,Dn6oaؾ$can*C`ת}mUm-V7:SAiFkDsN-3-7¾1TUa!0օvAVm3ĚKȑ- ^P`dЬVfuѷ~"B!Yml]o7+$O6KۊŔ)9s*,cTDϙC#
+
+4v??t"/7d?mr3Zy׺Pµ= &8!֩:S(4f4b-ƪKhj\@򶬻reX pաR[^8:׳eNRdb V 땹A$V,s3!-BOW~
+endstream
+endobj
+1010 0 obj
+<< /Type /Page /Contents 1011 0 R /Resources 1009 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 871 0 R >>
+endobj
+1012 0 obj
+<< /D [ 1010 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+1013 0 obj
+<< /D [ 1010 0 R /XYZ 79.752 768.832 null ] >>
+endobj
+1014 0 obj
+<< /D [ 1010 0 R /XYZ 79.752 757.873 null ] >>
+endobj
+1015 0 obj
+<< /D [ 1010 0 R /XYZ 79.752 746.914 null ] >>
+endobj
+1016 0 obj
+<< /D [ 1010 0 R /XYZ 79.752 735.955 null ] >>
+endobj
+1017 0 obj
+<< /D [ 1010 0 R /XYZ 79.752 724.996 null ] >>
+endobj
+1018 0 obj
+<< /D [ 1010 0 R /XYZ 79.752 714.037 null ] >>
+endobj
+1019 0 obj
+<< /D [ 1010 0 R /XYZ 79.752 703.078 null ] >>
+endobj
+1020 0 obj
+<< /D [ 1010 0 R /XYZ 79.752 692.119 null ] >>
+endobj
+1021 0 obj
+<< /D [ 1010 0 R /XYZ 79.752 681.16 null ] >>
+endobj
+1022 0 obj
+<< /D [ 1010 0 R /XYZ 79.752 670.202 null ] >>
+endobj
+1023 0 obj
+<< /D [ 1010 0 R /XYZ 79.752 659.243 null ] >>
+endobj
+1024 0 obj
+<< /D [ 1010 0 R /XYZ 79.752 648.284 null ] >>
+endobj
+1025 0 obj
+<< /D [ 1010 0 R /XYZ 79.752 637.325 null ] >>
+endobj
+1026 0 obj
+<< /D [ 1010 0 R /XYZ 79.752 590.5 null ] >>
+endobj
+1027 0 obj
+<< /D [ 1010 0 R /XYZ 79.752 579.542 null ] >>
+endobj
+1028 0 obj
+<< /D [ 1010 0 R /XYZ 79.752 568.583 null ] >>
+endobj
+1029 0 obj
+<< /D [ 1010 0 R /XYZ 79.752 557.624 null ] >>
+endobj
+1030 0 obj
+<< /D [ 1010 0 R /XYZ 79.752 546.665 null ] >>
+endobj
+1031 0 obj
+<< /D [ 1010 0 R /XYZ 79.752 535.706 null ] >>
+endobj
+1032 0 obj
+<< /D [ 1010 0 R /XYZ 79.752 524.747 null ] >>
+endobj
+1033 0 obj
+<< /D [ 1010 0 R /XYZ 79.752 513.788 null ] >>
+endobj
+1034 0 obj
+<< /D [ 1010 0 R /XYZ 79.752 502.829 null ] >>
+endobj
+1035 0 obj
+<< /D [ 1010 0 R /XYZ 79.752 491.87 null ] >>
+endobj
+1036 0 obj
+<< /D [ 1010 0 R /XYZ 79.752 480.911 null ] >>
+endobj
+1037 0 obj
+<< /D [ 1010 0 R /XYZ 79.752 469.953 null ] >>
+endobj
+1038 0 obj
+<< /D [ 1010 0 R /XYZ 79.752 458.994 null ] >>
+endobj
+1039 0 obj
+<< /D [ 1010 0 R /XYZ 79.752 448.035 null ] >>
+endobj
+1040 0 obj
+<< /D [ 1010 0 R /XYZ 79.752 437.076 null ] >>
+endobj
+1041 0 obj
+<< /D [ 1010 0 R /XYZ 79.752 426.117 null ] >>
+endobj
+1042 0 obj
+<< /D [ 1010 0 R /XYZ 79.752 415.158 null ] >>
+endobj
+1043 0 obj
+<< /D [ 1010 0 R /XYZ 79.752 404.199 null ] >>
+endobj
+1044 0 obj
+<< /D [ 1010 0 R /XYZ 79.752 393.24 null ] >>
+endobj
+1045 0 obj
+<< /D [ 1010 0 R /XYZ 79.752 382.281 null ] >>
+endobj
+1046 0 obj
+<< /D [ 1010 0 R /XYZ 79.752 371.322 null ] >>
+endobj
+1047 0 obj
+<< /D [ 1010 0 R /XYZ 79.752 360.363 null ] >>
+endobj
+1048 0 obj
+<< /D [ 1010 0 R /XYZ 79.752 349.405 null ] >>
+endobj
+33 0 obj
+<< /D [ 1010 0 R /XYZ 79.37 325.943 null ] >>
+endobj
+1049 0 obj
+<< /D [ 1010 0 R /XYZ 79.752 231.06 null ] >>
+endobj
+1050 0 obj
+<< /D [ 1010 0 R /XYZ 79.752 220.101 null ] >>
+endobj
+1051 0 obj
+<< /D [ 1010 0 R /XYZ 79.752 209.142 null ] >>
+endobj
+1052 0 obj
+<< /D [ 1010 0 R /XYZ 79.752 144.385 null ] >>
+endobj
+1053 0 obj
+<< /D [ 1010 0 R /XYZ 79.752 79.628 null ] >>
+endobj
+1009 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F78 556 0 R /F72 187 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+1056 0 obj
+<< /Filter /FlateDecode /Length 2768 >>
+stream
+xZK6W趚* Onz/s[o( #L
+Iyq忧 EP2EN*$nt7_/~~7~""A//B%aIyX1ʗ;R`XnVT/!}Yy|(5DC}$o0cD@ʬn؛o
+/g')UY^6@duSd`-9MCR d~/QCq k 5 *ELZ*jG8u`ysLMb=-Bcy.l{/45P4  m~ιyvaTK)]i^['e]gt.hy4?9WsR铵2_0,S[MZjޔe>#$13H0veyقDF:A >ąw?daht`Z5<UN͛I& &њr|*󼴦~Ίoep,j-amnvퟍg$q$c@S%i,>[j*ώY31 f|puV44`0sJ էr6*wROތ6
+ dwz;&-uL پ)EI[ds|3~>r5Nk&s&s g +)LYi'
+)<佳Uo=Y'ƨdٺuYR/)kIq&"ʦ~w(ײh|Kab"F= "'܉Ys#N!(55$BL 3kAs'Hg_ A ކL8nLM= jхx=t
+D}uL6*}ɒ/^?G55P/??@U7{l1ovo蟛s9G-˧[UF`}gqR c/
+"`'2&B$:f7{ +-v,nN_[ لVF5K>PӹYo˝y_l>+v MEP8W ЭzޡF^k ^_Ea1)r4$sᖓ`〒0P{ƌgo94>ޟm5Yt3ns
+τtPVljNKv_!]RNO; m
+)65-ڧg6{YPٻv[iz,APBnK /APM|Iaz `ܿuII4`u)&i9[e <WyBvN*yZMzL ²ǼXPYiy
+[V*,dx} JRNQ8A{fr ꉤEJ.CS=J"ŒxBBʾ0bü6W
+
+S‘~bba
+d( ]aޫ~uw,B
+B/Mp"{O~aY xjb"ZYb|*N裎݇lk#'[7@Ng=Vݍ!x&X%,D@bjw!:.
+8߀"{ ׸
+endstream
+endobj
+1055 0 obj
+<< /Type /Page /Contents 1056 0 R /Resources 1054 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 871 0 R >>
+endobj
+1057 0 obj
+<< /D [ 1055 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+1058 0 obj
+<< /D [ 1055 0 R /XYZ 79.752 731.344 null ] >>
+endobj
+1059 0 obj
+<< /D [ 1055 0 R /XYZ 79.752 680.764 null ] >>
+endobj
+1060 0 obj
+<< /D [ 1055 0 R /XYZ 79.752 669.805 null ] >>
+endobj
+1061 0 obj
+<< /D [ 1055 0 R /XYZ 79.752 631.181 null ] >>
+endobj
+1062 0 obj
+<< /D [ 1055 0 R /XYZ 79.752 568.646 null ] >>
+endobj
+1063 0 obj
+<< /D [ 1055 0 R /XYZ 79.752 557.687 null ] >>
+endobj
+1064 0 obj
+<< /D [ 1055 0 R /XYZ 79.752 546.728 null ] >>
+endobj
+1065 0 obj
+<< /D [ 1055 0 R /XYZ 79.752 472.238 null ] >>
+endobj
+1066 0 obj
+<< /D [ 1055 0 R /XYZ 79.752 461.279 null ] >>
+endobj
+1067 0 obj
+<< /D [ 1055 0 R /XYZ 79.752 450.321 null ] >>
+endobj
+1068 0 obj
+<< /D [ 1055 0 R /XYZ 79.752 439.362 null ] >>
+endobj
+1069 0 obj
+<< /D [ 1055 0 R /XYZ 79.752 428.403 null ] >>
+endobj
+1070 0 obj
+<< /D [ 1055 0 R /XYZ 79.752 417.444 null ] >>
+endobj
+1071 0 obj
+<< /D [ 1055 0 R /XYZ 79.752 406.485 null ] >>
+endobj
+1072 0 obj
+<< /D [ 1055 0 R /XYZ 79.752 331.995 null ] >>
+endobj
+1073 0 obj
+<< /D [ 1055 0 R /XYZ 79.752 321.036 null ] >>
+endobj
+1074 0 obj
+<< /D [ 1055 0 R /XYZ 79.752 310.077 null ] >>
+endobj
+1075 0 obj
+<< /D [ 1055 0 R /XYZ 79.752 235.587 null ] >>
+endobj
+1076 0 obj
+<< /D [ 1055 0 R /XYZ 79.752 224.628 null ] >>
+endobj
+1077 0 obj
+<< /D [ 1055 0 R /XYZ 79.752 213.669 null ] >>
+endobj
+1078 0 obj
+<< /D [ 1055 0 R /XYZ 79.752 163.09 null ] >>
+endobj
+1079 0 obj
+<< /D [ 1055 0 R /XYZ 79.752 152.131 null ] >>
+endobj
+1080 0 obj
+<< /D [ 1055 0 R /XYZ 79.752 89.596 null ] >>
+endobj
+1081 0 obj
+<< /D [ 1055 0 R /XYZ 79.752 78.637 null ] >>
+endobj
+1054 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F20 186 0 R /F70 185 0 R /F73 189 0 R /F69 183 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+1084 0 obj
+<< /Filter /FlateDecode /Length 2575 >>
+stream
+xڝZK6W訩IpNl%L-ŒXH-IxO H-S/#1yx_;VSb‹dEWiFxJ%뇝pOm]w,]Vͳ}և ]]7: m Eb*3ow{
+S$ӔB;D*RB)G}R( *[i
+Ki!NdbZ ? `2v,[f $p(Jߘ+iX2b
+kEZMiTh针F"M$|ؘ76
+HBNTI*jBHR0r'Aa}4^Y$vU H;H"&/6)E6Ʋ6KRH2 XEXDz'rk%1`7tJÙnLRFeؾDo! P#
+>?D2Y,8>Ii},.(?;.]tƱ6`xl_L+ĥbS
+T1ޤ4_{Z|E?'m o1zS;cXR3μ yq <<xeWy7.I}R>O 2BE\X[ k)8|POTO _OPO[i:Vn, Č, Z%x˹kOU'W -iyLzS]Kue~]2=8v]^NAXQytBybM1o~ ğo< 'Ҷ"n8z""lYrQ"[E9
+z˓02[a=|jP ӡރӏ KhpP.*{ø0 ?fH7H OcLP--TINNo&+Pb#YζB7eP21TvGzDj@[x_ąV6=4 B /<熫!L!HSC^1o<[I%gѦVq転Hl +] 'ʻcdOzYA${.;yQ,,w
+endstream
+endobj
+1083 0 obj
+<< /Type /Page /Contents 1084 0 R /Resources 1082 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 871 0 R >>
+endobj
+1085 0 obj
+<< /D [ 1083 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+1086 0 obj
+<< /D [ 1083 0 R /XYZ 79.752 754.884 null ] >>
+endobj
+1087 0 obj
+<< /D [ 1083 0 R /XYZ 79.752 690.127 null ] >>
+endobj
+1088 0 obj
+<< /D [ 1083 0 R /XYZ 79.752 637.325 null ] >>
+endobj
+1089 0 obj
+<< /D [ 1083 0 R /XYZ 79.752 626.366 null ] >>
+endobj
+1090 0 obj
+<< /D [ 1083 0 R /XYZ 79.752 573.564 null ] >>
+endobj
+1091 0 obj
+<< /D [ 1083 0 R /XYZ 79.752 542.68 null ] >>
+endobj
+1092 0 obj
+<< /D [ 1083 0 R /XYZ 79.752 531.721 null ] >>
+endobj
+1093 0 obj
+<< /D [ 1083 0 R /XYZ 79.752 520.762 null ] >>
+endobj
+1094 0 obj
+<< /D [ 1083 0 R /XYZ 79.752 430.102 null ] >>
+endobj
+1095 0 obj
+<< /D [ 1083 0 R /XYZ 79.752 395.233 null ] >>
+endobj
+1096 0 obj
+<< /D [ 1083 0 R /XYZ 79.752 384.274 null ] >>
+endobj
+1097 0 obj
+<< /D [ 1083 0 R /XYZ 79.752 319.517 null ] >>
+endobj
+1098 0 obj
+<< /D [ 1083 0 R /XYZ 79.752 278.67 null ] >>
+endobj
+1099 0 obj
+<< /D [ 1083 0 R /XYZ 79.752 225.868 null ] >>
+endobj
+1100 0 obj
+<< /D [ 1083 0 R /XYZ 79.752 173.066 null ] >>
+endobj
+1101 0 obj
+<< /D [ 1083 0 R /XYZ 79.752 162.107 null ] >>
+endobj
+1102 0 obj
+<< /D [ 1083 0 R /XYZ 79.752 109.305 null ] >>
+endobj
+1082 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F20 186 0 R /F73 189 0 R /F69 183 0 R /F70 185 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+1105 0 obj
+<< /Filter /FlateDecode /Length 2705 >>
+stream
+xZ[۸~ϯ0Їzbf76/) -ՑYI$h~{oh{ls6XsG\I~zWo32H*z@2aIF׫ѿj¸ϫUf}_81{<>?LrOWE{[/p:JN͚- Uf=o#?)
+\Să; S)1pMʃX4]^q[rn@
+K>T2Hl|%^mKoz7.l2c3h⤎]PIf{4]c׬|,VuIgvnM \"L<D)W'^@S¨r0qHu)X:,/Yofvw:%R#
+*a&:uJZ j
+2L<yQ7|F59I:VmR >;0]Q,I{#+1/Xw;!΄
+G}u~E]v\4?QAo;k:D&x EGKaOq|;kn08{N<wbf&>aB#iaY,e
+
+-~+se8w
+1ua @쉁T* 7C7-Pu*FgMB{ 
+H^J Dܧрp͊ q'% M<n+ۺ4mZB{G:Y.1!znZ-caWwYi˗:@ х0v}
+h^Z!.E;K3b$byhH;sW>ȚԙR̩h2LɢmZU1ϔ.WxG(A
+!mV w#ERi*oׯX
+endstream
+endobj
+1104 0 obj
+<< /Type /Page /Contents 1105 0 R /Resources 1103 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 871 0 R >>
+endobj
+1106 0 obj
+<< /D [ 1104 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+1107 0 obj
+<< /D [ 1104 0 R /XYZ 79.752 730.974 null ] >>
+endobj
+1108 0 obj
+<< /D [ 1104 0 R /XYZ 79.752 720.015 null ] >>
+endobj
+1109 0 obj
+<< /D [ 1104 0 R /XYZ 79.752 667.213 null ] >>
+endobj
+1110 0 obj
+<< /D [ 1104 0 R /XYZ 79.752 656.254 null ] >>
+endobj
+1111 0 obj
+<< /D [ 1104 0 R /XYZ 79.752 609.429 null ] >>
+endobj
+1112 0 obj
+<< /D [ 1104 0 R /XYZ 79.752 598.471 null ] >>
+endobj
+1113 0 obj
+<< /D [ 1104 0 R /XYZ 79.752 551.646 null ] >>
+endobj
+1114 0 obj
+<< /D [ 1104 0 R /XYZ 79.752 510.799 null ] >>
+endobj
+1115 0 obj
+<< /D [ 1104 0 R /XYZ 79.752 398.221 null ] >>
+endobj
+1116 0 obj
+<< /D [ 1104 0 R /XYZ 79.752 367.337 null ] >>
+endobj
+1117 0 obj
+<< /D [ 1104 0 R /XYZ 79.752 356.378 null ] >>
+endobj
+1118 0 obj
+<< /D [ 1104 0 R /XYZ 79.752 345.42 null ] >>
+endobj
+1119 0 obj
+<< /D [ 1104 0 R /XYZ 79.752 334.461 null ] >>
+endobj
+1120 0 obj
+<< /D [ 1104 0 R /XYZ 79.752 323.502 null ] >>
+endobj
+1121 0 obj
+<< /D [ 1104 0 R /XYZ 79.752 312.543 null ] >>
+endobj
+1122 0 obj
+<< /D [ 1104 0 R /XYZ 79.752 301.584 null ] >>
+endobj
+1123 0 obj
+<< /D [ 1104 0 R /XYZ 79.752 290.625 null ] >>
+endobj
+1124 0 obj
+<< /D [ 1104 0 R /XYZ 79.752 279.666 null ] >>
+endobj
+1125 0 obj
+<< /D [ 1104 0 R /XYZ 79.752 268.707 null ] >>
+endobj
+1126 0 obj
+<< /D [ 1104 0 R /XYZ 79.752 257.748 null ] >>
+endobj
+1127 0 obj
+<< /D [ 1104 0 R /XYZ 79.752 246.789 null ] >>
+endobj
+1128 0 obj
+<< /D [ 1104 0 R /XYZ 79.752 235.83 null ] >>
+endobj
+1129 0 obj
+<< /D [ 1104 0 R /XYZ 79.752 224.872 null ] >>
+endobj
+1130 0 obj
+<< /D [ 1104 0 R /XYZ 79.752 213.913 null ] >>
+endobj
+1131 0 obj
+<< /D [ 1104 0 R /XYZ 79.752 202.954 null ] >>
+endobj
+1132 0 obj
+<< /D [ 1104 0 R /XYZ 79.752 191.995 null ] >>
+endobj
+1133 0 obj
+<< /D [ 1104 0 R /XYZ 79.752 181.036 null ] >>
+endobj
+1134 0 obj
+<< /D [ 1104 0 R /XYZ 79.752 170.077 null ] >>
+endobj
+1135 0 obj
+<< /D [ 1104 0 R /XYZ 79.752 159.118 null ] >>
+endobj
+1136 0 obj
+<< /D [ 1104 0 R /XYZ 79.752 148.159 null ] >>
+endobj
+1137 0 obj
+<< /D [ 1104 0 R /XYZ 79.752 137.2 null ] >>
+endobj
+1138 0 obj
+<< /D [ 1104 0 R /XYZ 79.752 126.241 null ] >>
+endobj
+1139 0 obj
+<< /D [ 1104 0 R /XYZ 79.752 115.283 null ] >>
+endobj
+1140 0 obj
+<< /D [ 1104 0 R /XYZ 79.752 104.324 null ] >>
+endobj
+1141 0 obj
+<< /D [ 1104 0 R /XYZ 79.752 93.365 null ] >>
+endobj
+1142 0 obj
+<< /D [ 1104 0 R /XYZ 79.752 82.406 null ] >>
+endobj
+1103 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F20 186 0 R /F73 189 0 R /F69 183 0 R /F76 318 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+1145 0 obj
+<< /Filter /FlateDecode /Length 2292 >>
+stream
+xZMo8WX`l~
+0`ۍÜ [J,DISEEttK=UX2vG$|닏qiCxFf:BTaIfכٯsM߮='4dz%#"\eh"\*I:.}CX,0")<{m7Y{ a9~H88'a1ws3Ոh0cp鮪4{"ʉ(DpiL]W]|ݵ%U2˴Z6Y[߼jp
+~/)L|c<vbx;߈gط3cEF1E"(V<+Rsx0cp^Y-Cl`{+ZJ8sZBuP\{㺛w kAW҄>??~",a 0*BL$H>]ɔW6ʦS|O@R/HrrP"$H(>dF)&)"Hl
+(howeY$.TϻUsIռRu/\/dn;Ь/d^敆ޤSDG&y
+H"\q-ˡbiP%tH[&+)ai{ۧ #rclо$+ !"@T]B:$CZ'ni!/qd2>_+3P!󼱔6Yүv[}.Y,QAg &ŸA
+ .b|GR~ˋ'd֝5묜$ !؁@GDPi`'HyXaŁ93œ꼼׶Ƅ*Lo$u8͑.-ieI{f%{.{{5 2%sUEX<m6FU!5dַ%1c :7F=ʻ@B꺪?.{ .˞ v~ĽI*16x`.#m SO|qxJjoW&i^zWd uU<ࡹ{uP
+n{[ϼlrpFІo;<c`>e"}MR`},()xo'TL2h@{|2,imNشИݧ0Ǿng{yOD"x!~.eRLW
+( bjlc-9&Oe/pWHwW]McN6}KRf0xmɠƶry{udtAv _!{֕xs\dn),!
+aS~\M#9H,K<p25H,^䁓6(yX}XVդ2bbya \3l DE+ڷ eaEM&{L_,WVxZXgo1Ba'O}s&HWx[WmNm驭Ɗ`P#Gu%}[o!Ӻںu7,8Cكx; "beY)
+֍{ڕi.VU]š:Zvoec VKoLX_0`me %NtDo*<j״fafٸDM) ?a"G5Kt 3Z4D Z{gs֎c߫#":"Lc=pӂt&5Q+p(@p"A44͋"1bi [@4d-j +~eN:d ȸC"ZEL8ٓa[x¤w[L#Z4ȏ#˪I)
+U3'2L=a61D"$0!#ý@(=,AP#^ʠx}iq7wNgN3$kߤ
+"8NI*$w'u؏GXX^F"mp"{4=
+endstream
+endobj
+1144 0 obj
+<< /Type /Page /Contents 1145 0 R /Resources 1143 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 871 0 R >>
+endobj
+1146 0 obj
+<< /D [ 1144 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+1147 0 obj
+<< /D [ 1144 0 R /XYZ 79.752 768.832 null ] >>
+endobj
+1148 0 obj
+<< /D [ 1144 0 R /XYZ 79.752 757.873 null ] >>
+endobj
+1149 0 obj
+<< /D [ 1144 0 R /XYZ 79.752 746.914 null ] >>
+endobj
+1150 0 obj
+<< /D [ 1144 0 R /XYZ 79.752 735.955 null ] >>
+endobj
+1151 0 obj
+<< /D [ 1144 0 R /XYZ 79.752 724.996 null ] >>
+endobj
+1152 0 obj
+<< /D [ 1144 0 R /XYZ 79.752 714.037 null ] >>
+endobj
+1153 0 obj
+<< /D [ 1144 0 R /XYZ 79.752 703.078 null ] >>
+endobj
+1154 0 obj
+<< /D [ 1144 0 R /XYZ 79.752 692.119 null ] >>
+endobj
+1155 0 obj
+<< /D [ 1144 0 R /XYZ 79.752 681.16 null ] >>
+endobj
+1156 0 obj
+<< /D [ 1144 0 R /XYZ 79.752 670.202 null ] >>
+endobj
+1157 0 obj
+<< /D [ 1144 0 R /XYZ 79.752 659.243 null ] >>
+endobj
+1158 0 obj
+<< /D [ 1144 0 R /XYZ 79.752 604.448 null ] >>
+endobj
+1159 0 obj
+<< /D [ 1144 0 R /XYZ 79.752 593.489 null ] >>
+endobj
+1160 0 obj
+<< /D [ 1144 0 R /XYZ 79.752 582.53 null ] >>
+endobj
+1161 0 obj
+<< /D [ 1144 0 R /XYZ 79.752 529.728 null ] >>
+endobj
+1162 0 obj
+<< /D [ 1144 0 R /XYZ 79.752 518.769 null ] >>
+endobj
+1163 0 obj
+<< /D [ 1144 0 R /XYZ 79.752 507.811 null ] >>
+endobj
+1164 0 obj
+<< /D [ 1144 0 R /XYZ 79.752 476.926 null ] >>
+endobj
+1165 0 obj
+<< /D [ 1144 0 R /XYZ 79.752 465.967 null ] >>
+endobj
+1166 0 obj
+<< /D [ 1144 0 R /XYZ 79.752 455.009 null ] >>
+endobj
+1167 0 obj
+<< /D [ 1144 0 R /XYZ 79.752 444.05 null ] >>
+endobj
+1168 0 obj
+<< /D [ 1144 0 R /XYZ 79.752 433.091 null ] >>
+endobj
+1169 0 obj
+<< /D [ 1144 0 R /XYZ 79.752 422.132 null ] >>
+endobj
+1170 0 obj
+<< /D [ 1144 0 R /XYZ 79.752 411.173 null ] >>
+endobj
+1171 0 obj
+<< /D [ 1144 0 R /XYZ 79.752 400.214 null ] >>
+endobj
+1172 0 obj
+<< /D [ 1144 0 R /XYZ 79.752 343.427 null ] >>
+endobj
+1173 0 obj
+<< /D [ 1144 0 R /XYZ 79.752 332.468 null ] >>
+endobj
+1174 0 obj
+<< /D [ 1144 0 R /XYZ 79.752 321.509 null ] >>
+endobj
+1175 0 obj
+<< /D [ 1144 0 R /XYZ 79.752 310.55 null ] >>
+endobj
+1176 0 obj
+<< /D [ 1144 0 R /XYZ 79.752 299.591 null ] >>
+endobj
+1177 0 obj
+<< /D [ 1144 0 R /XYZ 79.752 288.632 null ] >>
+endobj
+1178 0 obj
+<< /D [ 1144 0 R /XYZ 79.752 277.674 null ] >>
+endobj
+1179 0 obj
+<< /D [ 1144 0 R /XYZ 79.752 266.715 null ] >>
+endobj
+1180 0 obj
+<< /D [ 1144 0 R /XYZ 79.752 255.756 null ] >>
+endobj
+1181 0 obj
+<< /D [ 1144 0 R /XYZ 79.752 244.797 null ] >>
+endobj
+1182 0 obj
+<< /D [ 1144 0 R /XYZ 79.752 233.838 null ] >>
+endobj
+1183 0 obj
+<< /D [ 1144 0 R /XYZ 79.752 222.879 null ] >>
+endobj
+1184 0 obj
+<< /D [ 1144 0 R /XYZ 79.752 211.92 null ] >>
+endobj
+1185 0 obj
+<< /D [ 1144 0 R /XYZ 79.752 200.961 null ] >>
+endobj
+1186 0 obj
+<< /D [ 1144 0 R /XYZ 79.752 190.002 null ] >>
+endobj
+1187 0 obj
+<< /D [ 1144 0 R /XYZ 79.752 179.043 null ] >>
+endobj
+1188 0 obj
+<< /D [ 1144 0 R /XYZ 79.752 168.085 null ] >>
+endobj
+1189 0 obj
+<< /D [ 1144 0 R /XYZ 79.752 157.126 null ] >>
+endobj
+1190 0 obj
+<< /D [ 1144 0 R /XYZ 79.752 146.167 null ] >>
+endobj
+1191 0 obj
+<< /D [ 1144 0 R /XYZ 79.752 135.208 null ] >>
+endobj
+1192 0 obj
+<< /D [ 1144 0 R /XYZ 79.752 124.249 null ] >>
+endobj
+1193 0 obj
+<< /D [ 1144 0 R /XYZ 79.752 113.29 null ] >>
+endobj
+1194 0 obj
+<< /D [ 1144 0 R /XYZ 79.752 102.331 null ] >>
+endobj
+1195 0 obj
+<< /D [ 1144 0 R /XYZ 79.752 91.372 null ] >>
+endobj
+1196 0 obj
+<< /D [ 1144 0 R /XYZ 79.752 80.413 null ] >>
+endobj
+1143 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+1199 0 obj
+<< /Filter /FlateDecode /Length 1957 >>
+stream
+xڽZ[o6~ϯ0/Pqx(0b} BPl:FRYN2} Nl;Ȗ|<T~'?_`E|ŧk&M..'d O$K2]N7\vQhdd:b&lQ$lf"_2TLSVmZymWek9 `:0W<̫ ƿدter[)]fM?FFpA3o4IV_&{yv(331c bܮ]Uzm\ݼ:H?N;i=m(, EV/Y9ȏ,Uz! uQw|nˏWibXy:Rsĸ%(,"wab#W`T?"3/:JB!
+E Qy`m9OERWspjiSKa+f". !hEE^dV>/[W[SOݐc! GS5!u
+IH35!"cZ;R}"ua$ hޠ>l]4Hȱ<@h& d3v .?Bqp0[컦 ɐ^1#.lN"44a3lN"Ô7oϡ
+
+')p1CGw9qԼ"G8nex/`08gʹF{20E^W;v㎥KIo~Q
+wK9 [ q=lplT9}f8w7k75jyϭqyèuSl??KfU?n
+.̛ASsp!,?/'nճ?RecI1V)عr>I3FJ{.#О<_v)e<)i5C5vxbG#-I`<C Cٳ篲j(s2N(yÙB؛|l\|&.ؗ}l}G$/e [ O^* ݓ2LyI9"լ!<`i:eRRǑu[~|uCJCAT*Ma1]d"&<E/{I.p[qop._a ݌P=6yUA,~TmKtDRlڼr.TA]palj{bd X{&s6f{)&ٴ+6To6;wV7}iL8Ӭ6kw.P_]&q%ӧKii[^6Fjw\ZKKL ݽq{lR""ap{{PZ%ڬPqPZ9Y.tuhĕO(Ja-`C ʥ(m7+xˀSHQ a["_|,
+{bK C:{vD)tvN#j?o/~l
+endstream
+endobj
+1198 0 obj
+<< /Type /Page /Contents 1199 0 R /Resources 1197 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 871 0 R >>
+endobj
+1200 0 obj
+<< /D [ 1198 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+1201 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 768.832 null ] >>
+endobj
+1202 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 757.873 null ] >>
+endobj
+1203 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 746.914 null ] >>
+endobj
+1204 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 735.955 null ] >>
+endobj
+1205 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 724.996 null ] >>
+endobj
+1206 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 714.037 null ] >>
+endobj
+1207 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 703.078 null ] >>
+endobj
+1208 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 692.119 null ] >>
+endobj
+1209 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 681.16 null ] >>
+endobj
+1210 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 670.202 null ] >>
+endobj
+1211 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 659.243 null ] >>
+endobj
+1212 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 648.284 null ] >>
+endobj
+1213 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 637.325 null ] >>
+endobj
+1214 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 626.366 null ] >>
+endobj
+1215 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 615.407 null ] >>
+endobj
+1216 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 604.448 null ] >>
+endobj
+1217 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 593.489 null ] >>
+endobj
+1218 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 582.53 null ] >>
+endobj
+1219 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 571.571 null ] >>
+endobj
+1220 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 560.613 null ] >>
+endobj
+1221 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 549.654 null ] >>
+endobj
+1222 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 538.695 null ] >>
+endobj
+1223 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 527.736 null ] >>
+endobj
+1224 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 516.777 null ] >>
+endobj
+1225 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 505.818 null ] >>
+endobj
+1226 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 494.859 null ] >>
+endobj
+1227 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 483.9 null ] >>
+endobj
+1228 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 472.941 null ] >>
+endobj
+1229 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 461.982 null ] >>
+endobj
+1230 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 451.023 null ] >>
+endobj
+1231 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 440.065 null ] >>
+endobj
+1232 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 429.106 null ] >>
+endobj
+1233 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 418.147 null ] >>
+endobj
+1234 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 407.188 null ] >>
+endobj
+1235 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 376.304 null ] >>
+endobj
+1236 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 365.345 null ] >>
+endobj
+1237 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 354.386 null ] >>
+endobj
+1238 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 343.427 null ] >>
+endobj
+1239 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 332.468 null ] >>
+endobj
+1240 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 321.509 null ] >>
+endobj
+1241 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 310.55 null ] >>
+endobj
+1242 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 299.591 null ] >>
+endobj
+1243 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 288.632 null ] >>
+endobj
+1244 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 277.674 null ] >>
+endobj
+1245 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 266.715 null ] >>
+endobj
+1246 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 255.756 null ] >>
+endobj
+1247 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 244.797 null ] >>
+endobj
+1248 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 233.838 null ] >>
+endobj
+1249 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 222.879 null ] >>
+endobj
+1250 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 211.92 null ] >>
+endobj
+1251 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 200.961 null ] >>
+endobj
+1252 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 190.002 null ] >>
+endobj
+1253 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 179.043 null ] >>
+endobj
+1254 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 126.241 null ] >>
+endobj
+1255 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 115.283 null ] >>
+endobj
+1256 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 104.324 null ] >>
+endobj
+1257 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 93.365 null ] >>
+endobj
+1258 0 obj
+<< /D [ 1198 0 R /XYZ 79.752 82.406 null ] >>
+endobj
+1197 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+1261 0 obj
+<< /Filter /FlateDecode /Length 2118 >>
+stream
+xڽZoH~_ai_iCK'͝vJ{h0n;h18w&iLYϽ W]U_ E*GWn%]0
+à`a` )0
+^^FD^QnEQ$ XL$iJ%Q_*)ʍo8KWM*̏(ŏ ǏφAGs6q?s?OfG@#D~<jWM&dVNn{)c s !! C69iw$U<e^\X"BxU{q503;ν8ĩqPv#I{n~9 qs\ QYCo$Eg&{v%A$F-C15r{1b<ꗓ1g‡|1m2~w~9ッ-3a!D痩i3ɏ*1fMuTsIf9旝pJ6M# gIa=3koKk톱z\ݝ|P\ɯN.ޔqQ6Y[}=<HH՘_:vsm6ʶfr$qhd|m[e|EGɧ# b5"n&Hd{΀ԗ( lRbL#
+knq
+}Ϭ*>M?P9a$ sYISe_'ͤF$.s{tZIA$ls-,IwPY)k"bƠ'By
+?t鶰K5AQs A;_*pZVl/#ͳt831 E3 ?_MtwGkyɽ鯕KLHՑO8`o
+򥺄Xa~r?,0; ތmiU:+}ɾ )C$SA0R?9
+Nbg!T &gw86m+N.kJz<nڀ
+0l5uY+du" \!0>[{h 7K/tsc"}_p/cW8-('PuQ^ty{QF'ӚF98H, ]H3PfÒHF.h=.D+a=JrNN!B>kw]MxO ~HZ!uhUR@Mk~$9ꛚh?
+'7s&6_uE+d^qiL%ݖ'G TL/
+Ne.& Iu==UVQi>&*j1ouA#U
+u'zMͨ@_.p=\M"/j]CtR 0,&F;B5Mzk{N̚$v(e˓-;$ϓ4+y^uފ\9rMwl3}\h
+{kL,"}:W
+pmQ$}40̈GϢ{LݳK$^Mn*t?$1ܺL3
+^`ӣkp9zԉ=+Vw7ԟ2Z˛O{ү;怟oj'Y=oS
+endstream
+endobj
+1260 0 obj
+<< /Type /Page /Contents 1261 0 R /Resources 1259 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1316 0 R >>
+endobj
+1262 0 obj
+<< /D [ 1260 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+1263 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 768.832 null ] >>
+endobj
+1264 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 757.873 null ] >>
+endobj
+1265 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 746.914 null ] >>
+endobj
+1266 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 735.955 null ] >>
+endobj
+1267 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 724.996 null ] >>
+endobj
+1268 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 714.037 null ] >>
+endobj
+1269 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 703.078 null ] >>
+endobj
+1270 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 692.119 null ] >>
+endobj
+1271 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 681.16 null ] >>
+endobj
+1272 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 670.202 null ] >>
+endobj
+1273 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 659.243 null ] >>
+endobj
+1274 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 648.284 null ] >>
+endobj
+1275 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 637.325 null ] >>
+endobj
+1276 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 626.366 null ] >>
+endobj
+1277 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 615.407 null ] >>
+endobj
+1278 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 604.448 null ] >>
+endobj
+1279 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 593.489 null ] >>
+endobj
+1280 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 582.53 null ] >>
+endobj
+1281 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 571.571 null ] >>
+endobj
+1282 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 518.769 null ] >>
+endobj
+1283 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 507.811 null ] >>
+endobj
+1284 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 496.852 null ] >>
+endobj
+1285 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 485.893 null ] >>
+endobj
+1286 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 474.934 null ] >>
+endobj
+1287 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 463.975 null ] >>
+endobj
+1288 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 453.016 null ] >>
+endobj
+1289 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 442.057 null ] >>
+endobj
+1290 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 431.098 null ] >>
+endobj
+1291 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 420.139 null ] >>
+endobj
+1292 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 409.18 null ] >>
+endobj
+1293 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 398.221 null ] >>
+endobj
+1294 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 387.263 null ] >>
+endobj
+1295 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 334.461 null ] >>
+endobj
+1296 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 323.502 null ] >>
+endobj
+1297 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 312.543 null ] >>
+endobj
+1298 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 301.584 null ] >>
+endobj
+1299 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 290.625 null ] >>
+endobj
+1300 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 279.666 null ] >>
+endobj
+1301 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 268.707 null ] >>
+endobj
+1302 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 257.748 null ] >>
+endobj
+1303 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 246.789 null ] >>
+endobj
+1304 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 235.83 null ] >>
+endobj
+1305 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 224.872 null ] >>
+endobj
+1306 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 184.025 null ] >>
+endobj
+1307 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 173.066 null ] >>
+endobj
+1308 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 162.107 null ] >>
+endobj
+1309 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 151.148 null ] >>
+endobj
+1310 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 140.189 null ] >>
+endobj
+1311 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 129.23 null ] >>
+endobj
+1312 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 118.271 null ] >>
+endobj
+1313 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 107.312 null ] >>
+endobj
+1314 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 96.354 null ] >>
+endobj
+1315 0 obj
+<< /D [ 1260 0 R /XYZ 79.752 85.395 null ] >>
+endobj
+1259 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F70 185 0 R /F20 186 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+1319 0 obj
+<< /Filter /FlateDecode /Length 1661 >>
+stream
+xZ]o6}ϯ0~,Pvl1Yd>%I:]9^bY1Ͻ$%gW3<{}'͕Nj8Ҋ0:<!%<#3|I$\+|Υ)dQt^Y$N9[WmVE~~ִW&=FY`D0u ^yY-bD1P2c3:=a|Yy1uśS _w{ܼ
+&K"; F!ې4eq$B
+Gz?pY +S:X|g7 8 Yb8rd8 fS4bo:4&H e2+ts~ʬ>Ϻem6%Tc+X|i!εkZFW
+ ˍ
+GuUnR&2Ijҋ AnM1H# wXi&λnW|!ש0h4ERb:
+ƜM$bWaB`᣿NTTXF4GbK`F @? bG"h"Az%070I"hx
+Fy=0iJ`V!^fBR J 3
+N4) K{
+C S#`[lz`fe sCyO4EDU /?SSMq fڧ,#Epٌ&Xn'93m!&imsUߟ-q|yjw=M{*oUge{em4$nyzsjʦ
+endstream
+endobj
+1318 0 obj
+<< /Type /Page /Contents 1319 0 R /Resources 1317 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1316 0 R >>
+endobj
+1320 0 obj
+<< /D [ 1318 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+1321 0 obj
+<< /D [ 1318 0 R /XYZ 79.752 768.832 null ] >>
+endobj
+1322 0 obj
+<< /D [ 1318 0 R /XYZ 79.752 757.873 null ] >>
+endobj
+1323 0 obj
+<< /D [ 1318 0 R /XYZ 79.752 746.914 null ] >>
+endobj
+1324 0 obj
+<< /D [ 1318 0 R /XYZ 79.752 735.955 null ] >>
+endobj
+1325 0 obj
+<< /D [ 1318 0 R /XYZ 79.752 724.996 null ] >>
+endobj
+1326 0 obj
+<< /D [ 1318 0 R /XYZ 79.752 714.037 null ] >>
+endobj
+1327 0 obj
+<< /D [ 1318 0 R /XYZ 79.752 703.078 null ] >>
+endobj
+1328 0 obj
+<< /D [ 1318 0 R /XYZ 79.752 687.138 null ] >>
+endobj
+1329 0 obj
+<< /D [ 1318 0 R /XYZ 79.752 676.179 null ] >>
+endobj
+1330 0 obj
+<< /D [ 1318 0 R /XYZ 79.752 665.22 null ] >>
+endobj
+1331 0 obj
+<< /D [ 1318 0 R /XYZ 79.752 654.261 null ] >>
+endobj
+1332 0 obj
+<< /D [ 1318 0 R /XYZ 79.752 643.302 null ] >>
+endobj
+1333 0 obj
+<< /D [ 1318 0 R /XYZ 79.752 632.344 null ] >>
+endobj
+1334 0 obj
+<< /D [ 1318 0 R /XYZ 79.752 621.385 null ] >>
+endobj
+1335 0 obj
+<< /D [ 1318 0 R /XYZ 79.752 610.426 null ] >>
+endobj
+1336 0 obj
+<< /D [ 1318 0 R /XYZ 79.752 599.467 null ] >>
+endobj
+1337 0 obj
+<< /D [ 1318 0 R /XYZ 79.752 588.508 null ] >>
+endobj
+1338 0 obj
+<< /D [ 1318 0 R /XYZ 79.752 577.549 null ] >>
+endobj
+1339 0 obj
+<< /D [ 1318 0 R /XYZ 79.752 566.59 null ] >>
+endobj
+1340 0 obj
+<< /D [ 1318 0 R /XYZ 79.752 555.631 null ] >>
+endobj
+1341 0 obj
+<< /D [ 1318 0 R /XYZ 81.077 544.672 null ] >>
+endobj
+1342 0 obj
+<< /D [ 1318 0 R /XYZ 81.077 533.713 null ] >>
+endobj
+1343 0 obj
+<< /D [ 1318 0 R /XYZ 81.077 522.754 null ] >>
+endobj
+1344 0 obj
+<< /D [ 1318 0 R /XYZ 81.077 511.796 null ] >>
+endobj
+1345 0 obj
+<< /D [ 1318 0 R /XYZ 81.077 500.837 null ] >>
+endobj
+1346 0 obj
+<< /D [ 1318 0 R /XYZ 81.077 489.878 null ] >>
+endobj
+1347 0 obj
+<< /D [ 1318 0 R /XYZ 81.077 478.919 null ] >>
+endobj
+1348 0 obj
+<< /D [ 1318 0 R /XYZ 81.077 467.96 null ] >>
+endobj
+1349 0 obj
+<< /D [ 1318 0 R /XYZ 81.077 457.001 null ] >>
+endobj
+1350 0 obj
+<< /D [ 1318 0 R /XYZ 81.077 446.042 null ] >>
+endobj
+1351 0 obj
+<< /D [ 1318 0 R /XYZ 81.077 435.083 null ] >>
+endobj
+1352 0 obj
+<< /D [ 1318 0 R /XYZ 81.077 424.124 null ] >>
+endobj
+1353 0 obj
+<< /D [ 1318 0 R /XYZ 81.077 413.165 null ] >>
+endobj
+1354 0 obj
+<< /D [ 1318 0 R /XYZ 81.077 402.207 null ] >>
+endobj
+1355 0 obj
+<< /D [ 1318 0 R /XYZ 81.077 391.248 null ] >>
+endobj
+1356 0 obj
+<< /D [ 1318 0 R /XYZ 81.077 380.289 null ] >>
+endobj
+1357 0 obj
+<< /D [ 1318 0 R /XYZ 81.077 369.33 null ] >>
+endobj
+1358 0 obj
+<< /D [ 1318 0 R /XYZ 81.077 358.371 null ] >>
+endobj
+1359 0 obj
+<< /D [ 1318 0 R /XYZ 81.077 347.412 null ] >>
+endobj
+1360 0 obj
+<< /D [ 1318 0 R /XYZ 81.077 336.453 null ] >>
+endobj
+1361 0 obj
+<< /D [ 1318 0 R /XYZ 81.077 325.494 null ] >>
+endobj
+1362 0 obj
+<< /D [ 1318 0 R /XYZ 81.077 314.535 null ] >>
+endobj
+1363 0 obj
+<< /D [ 1318 0 R /XYZ 81.077 303.576 null ] >>
+endobj
+1364 0 obj
+<< /D [ 1318 0 R /XYZ 81.077 292.618 null ] >>
+endobj
+1365 0 obj
+<< /D [ 1318 0 R /XYZ 81.077 281.659 null ] >>
+endobj
+1366 0 obj
+<< /D [ 1318 0 R /XYZ 81.077 270.7 null ] >>
+endobj
+1367 0 obj
+<< /D [ 1318 0 R /XYZ 81.077 259.741 null ] >>
+endobj
+1368 0 obj
+<< /D [ 1318 0 R /XYZ 81.077 243.801 null ] >>
+endobj
+1369 0 obj
+<< /D [ 1318 0 R /XYZ 81.077 232.842 null ] >>
+endobj
+1370 0 obj
+<< /D [ 1318 0 R /XYZ 81.077 221.883 null ] >>
+endobj
+1371 0 obj
+<< /D [ 1318 0 R /XYZ 81.077 210.924 null ] >>
+endobj
+1372 0 obj
+<< /D [ 1318 0 R /XYZ 81.077 199.965 null ] >>
+endobj
+1373 0 obj
+<< /D [ 1318 0 R /XYZ 81.077 189.006 null ] >>
+endobj
+1374 0 obj
+<< /D [ 1318 0 R /XYZ 81.077 178.047 null ] >>
+endobj
+1375 0 obj
+<< /D [ 1318 0 R /XYZ 81.077 123.253 null ] >>
+endobj
+1376 0 obj
+<< /D [ 1318 0 R /XYZ 81.077 112.294 null ] >>
+endobj
+1377 0 obj
+<< /D [ 1318 0 R /XYZ 81.077 101.335 null ] >>
+endobj
+1378 0 obj
+<< /D [ 1318 0 R /XYZ 81.077 90.376 null ] >>
+endobj
+1379 0 obj
+<< /D [ 1318 0 R /XYZ 81.077 79.417 null ] >>
+endobj
+1317 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+1382 0 obj
+<< /Filter /FlateDecode /Length 1721 >>
+stream
+xZnF}W_ HR4
+$}>4@[EK;$%W kWyn<9;3gf&tn_'//N^1Y&Et&VhFf)%uJ%Nka`)1Te*-Tq5=k_u7ߐ4eZۗ5G[%-;IqavyQc Gñ룇٭֗}qwxfeq<֗oCMf*8V}O¿|iQTXxVTu`%qK]{
+F
+E0B?c?Gw 6#L3&@ŕw;kNeRo툂"ǽΊ$NSH93c?e/}J#%\BR>XJp3B1EW3K D
+dC(RSCD*di]$,)IWꀒhh5RVlB{~
+5RFӹM"mZK+\ cEH)N b,*#Wa}LRk;}ǍzȐ; z90;T +,Ϗ%Jh>-Ye@W~
+qjk3~VOMV(E*+""nwb
++$ʡ T0諔p}B$'upGㅈ3"DgCqG?1JD3~:!ɀ=VD 7DH1D wo#1ZXWK<{ܤn}qɠf}fNUwT<UYO 4;eӴ>o-t3nj<8}<q By2Z>qFCVӚUZ`V Mơp*^ljCP -CБFv,bp=8{iM f̓&1<('t`p)GK&w0D0\+>KiQU#*C4l[`ހU6RMlY}
+w~z^|ړWX-".{peYdlw>/uQlFR2p2]sIj/m ԭ92 ) jn^-,;6J
+B
+e*i݊eX0<W"vvkne;zjBmxPoR/U $Q;v<{>)ʌi5<"EZcZ!,pc.F$KVP
+endstream
+endobj
+1381 0 obj
+<< /Type /Page /Contents 1382 0 R /Resources 1380 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1316 0 R >>
+endobj
+1383 0 obj
+<< /D [ 1381 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+1384 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+1385 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+1386 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+1387 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+1388 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+1389 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+1390 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+1391 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+1392 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+1393 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+1394 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+1395 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+1396 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 637.325 null ] >>
+endobj
+1397 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 626.366 null ] >>
+endobj
+1398 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 615.407 null ] >>
+endobj
+1399 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 604.448 null ] >>
+endobj
+1400 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 593.489 null ] >>
+endobj
+1401 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 582.53 null ] >>
+endobj
+1402 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 571.571 null ] >>
+endobj
+1403 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 560.613 null ] >>
+endobj
+1404 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 549.654 null ] >>
+endobj
+1405 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 538.695 null ] >>
+endobj
+1406 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 527.736 null ] >>
+endobj
+1407 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 516.777 null ] >>
+endobj
+1408 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 505.818 null ] >>
+endobj
+1409 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 494.859 null ] >>
+endobj
+1410 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 483.9 null ] >>
+endobj
+1411 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 472.941 null ] >>
+endobj
+1412 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 461.982 null ] >>
+endobj
+1413 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 451.023 null ] >>
+endobj
+1414 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 440.065 null ] >>
+endobj
+1415 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 429.106 null ] >>
+endobj
+1416 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 418.147 null ] >>
+endobj
+1417 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 407.188 null ] >>
+endobj
+1418 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 396.229 null ] >>
+endobj
+1419 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 385.27 null ] >>
+endobj
+1420 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 374.311 null ] >>
+endobj
+1421 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 321.509 null ] >>
+endobj
+1422 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 310.55 null ] >>
+endobj
+1423 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 299.591 null ] >>
+endobj
+1424 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 288.632 null ] >>
+endobj
+1425 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 277.674 null ] >>
+endobj
+1426 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 266.715 null ] >>
+endobj
+1427 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 255.756 null ] >>
+endobj
+1428 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 244.797 null ] >>
+endobj
+1429 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 233.838 null ] >>
+endobj
+1430 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 222.879 null ] >>
+endobj
+1431 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 211.92 null ] >>
+endobj
+1432 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 200.961 null ] >>
+endobj
+1433 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 190.002 null ] >>
+endobj
+1434 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 179.043 null ] >>
+endobj
+1435 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 168.085 null ] >>
+endobj
+1436 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 157.126 null ] >>
+endobj
+1437 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 116.279 null ] >>
+endobj
+1438 0 obj
+<< /D [ 1381 0 R /XYZ 81.077 105.32 null ] >>
+endobj
+1380 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F70 185 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+1441 0 obj
+<< /Filter /FlateDecode /Length 2283 >>
+stream
+xZ[o~_a/0.rv;%]S$RV'oE8IڗH/~z>|"zT;,XH$AXnuvbX.6ʳ: fu^իӻMU4ٍ%H rC,VddeFϘlzY3#7ٟ2PF^V[o:[(̢#p%IB\',v0lҝ8[{j_
+ ˖,IEB 'iE•
+q%‰@lVv&!<o&۾F-jx~F46  %b{sLk R L:/kf:N@z$<-3&l:HdM*# 9ҫHYB,ӼH/,: ه
+
+8'#8g]sm^C6rTcţ _Veph$\j8Sj5Ef T!d4N!쮱S?tg|:)Z8Ku6DXō|tX -JO"F='Ϡ¤YƉ<
+S3Qv1w5, W6M4/!)14 )J^f3=(C!'" E sVWP"mզ:
+endstream
+endobj
+1440 0 obj
+<< /Type /Page /Contents 1441 0 R /Resources 1439 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1316 0 R >>
+endobj
+1442 0 obj
+<< /D [ 1440 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+1443 0 obj
+<< /D [ 1440 0 R /XYZ 81.077 742.929 null ] >>
+endobj
+1444 0 obj
+<< /D [ 1440 0 R /XYZ 81.077 690.127 null ] >>
+endobj
+1445 0 obj
+<< /D [ 1440 0 R /XYZ 81.077 679.168 null ] >>
+endobj
+1446 0 obj
+<< /D [ 1440 0 R /XYZ 81.077 668.209 null ] >>
+endobj
+1447 0 obj
+<< /D [ 1440 0 R /XYZ 81.077 657.25 null ] >>
+endobj
+1448 0 obj
+<< /D [ 1440 0 R /XYZ 81.077 592.493 null ] >>
+endobj
+1449 0 obj
+<< /D [ 1440 0 R /XYZ 81.077 581.534 null ] >>
+endobj
+1450 0 obj
+<< /D [ 1440 0 R /XYZ 81.077 570.575 null ] >>
+endobj
+1451 0 obj
+<< /D [ 1440 0 R /XYZ 81.077 559.616 null ] >>
+endobj
+1452 0 obj
+<< /D [ 1440 0 R /XYZ 81.077 548.657 null ] >>
+endobj
+1453 0 obj
+<< /D [ 1440 0 R /XYZ 81.077 537.698 null ] >>
+endobj
+1454 0 obj
+<< /D [ 1440 0 R /XYZ 81.077 526.74 null ] >>
+endobj
+1455 0 obj
+<< /D [ 1440 0 R /XYZ 81.077 515.781 null ] >>
+endobj
+1456 0 obj
+<< /D [ 1440 0 R /XYZ 81.077 504.822 null ] >>
+endobj
+1457 0 obj
+<< /D [ 1440 0 R /XYZ 81.077 493.863 null ] >>
+endobj
+1458 0 obj
+<< /D [ 1440 0 R /XYZ 81.077 482.904 null ] >>
+endobj
+1459 0 obj
+<< /D [ 1440 0 R /XYZ 81.077 471.945 null ] >>
+endobj
+1460 0 obj
+<< /D [ 1440 0 R /XYZ 81.077 460.986 null ] >>
+endobj
+1461 0 obj
+<< /D [ 1440 0 R /XYZ 81.077 408.184 null ] >>
+endobj
+1462 0 obj
+<< /D [ 1440 0 R /XYZ 81.077 397.225 null ] >>
+endobj
+1463 0 obj
+<< /D [ 1440 0 R /XYZ 81.077 342.431 null ] >>
+endobj
+1464 0 obj
+<< /D [ 1440 0 R /XYZ 81.077 331.472 null ] >>
+endobj
+1465 0 obj
+<< /D [ 1440 0 R /XYZ 81.077 320.513 null ] >>
+endobj
+1466 0 obj
+<< /D [ 1440 0 R /XYZ 81.077 309.554 null ] >>
+endobj
+1467 0 obj
+<< /D [ 1440 0 R /XYZ 81.077 298.595 null ] >>
+endobj
+1468 0 obj
+<< /D [ 1440 0 R /XYZ 81.077 287.636 null ] >>
+endobj
+1469 0 obj
+<< /D [ 1440 0 R /XYZ 81.077 276.677 null ] >>
+endobj
+1470 0 obj
+<< /D [ 1440 0 R /XYZ 81.077 265.718 null ] >>
+endobj
+1471 0 obj
+<< /D [ 1440 0 R /XYZ 81.077 254.759 null ] >>
+endobj
+1472 0 obj
+<< /D [ 1440 0 R /XYZ 81.077 243.801 null ] >>
+endobj
+1473 0 obj
+<< /D [ 1440 0 R /XYZ 81.077 232.842 null ] >>
+endobj
+1474 0 obj
+<< /D [ 1440 0 R /XYZ 81.077 221.883 null ] >>
+endobj
+1475 0 obj
+<< /D [ 1440 0 R /XYZ 81.077 210.924 null ] >>
+endobj
+1476 0 obj
+<< /D [ 1440 0 R /XYZ 81.077 199.965 null ] >>
+endobj
+1477 0 obj
+<< /D [ 1440 0 R /XYZ 81.077 189.006 null ] >>
+endobj
+1478 0 obj
+<< /D [ 1440 0 R /XYZ 81.077 178.047 null ] >>
+endobj
+1479 0 obj
+<< /D [ 1440 0 R /XYZ 81.077 167.088 null ] >>
+endobj
+1480 0 obj
+<< /D [ 1440 0 R /XYZ 81.077 156.129 null ] >>
+endobj
+1481 0 obj
+<< /D [ 1440 0 R /XYZ 81.077 145.17 null ] >>
+endobj
+1482 0 obj
+<< /D [ 1440 0 R /XYZ 81.077 134.212 null ] >>
+endobj
+1483 0 obj
+<< /D [ 1440 0 R /XYZ 81.077 123.253 null ] >>
+endobj
+1484 0 obj
+<< /D [ 1440 0 R /XYZ 81.077 112.294 null ] >>
+endobj
+1439 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F20 186 0 R /F73 189 0 R /F69 183 0 R /F70 185 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+1487 0 obj
+<< /Filter /FlateDecode /Length 1968 >>
+stream
+xZ[o6~ϯ0hXI XX2l:J4Be)Y2E:c:NȒQ;<<?7H6P&/T)Idt<=sٸ2Nǟ0u^;?xVWeW6{՜7~Ȣ7_&T#05œ(O48jM<-yז&wn~Lgpr'eٝG@ CpR=.NKHD_} {QZ$0B0fi{+6(ӄ%>-ƛw2id:4&(#a ,tVuqTNۛd)E/N|B"F_oTvNX F|0MV@-ۦz-6.>4v)Èjz*Dqޖy/kXfo (?T6L"E%-f:>q[ɺ\f5.P- xEdMm&r/?b.rntЏj|`
+K)RDxJ"R^_މ{ i%RBzZ2)9VHTJZbwK+/:ɑփi  etpoi1B6Ah as NAZEZOH 006,"fSP(hwp"-bF玘>wZ"-bFhgms$gPS늴hgEUˮhu7ܠۘL-hsUZ[r}[,b+Bp/˙94ڪ
+S }J%C/T%CDB :"čr60]>ڎ9GlDZ.mbC ~Rć*@4Cw9m!4MRjK1?ђi?B LK
+~WUk?F';'\H8Fq,HS'o?YCЂ.sҸS42_\dO ]Ncx!7CkjʤU޽CZw
+$2EPь#Lzxlm>Aһ Z
+* g#tV*#jP>ƪl*fpO}X
+$9:t E0Ce~)gsEj(_ɜ&HN !xrO;nPiN||Pai#Qr,x
+endstream
+endobj
+1486 0 obj
+<< /Type /Page /Contents 1487 0 R /Resources 1485 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1316 0 R >>
+endobj
+1488 0 obj
+<< /D [ 1486 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+1489 0 obj
+<< /D [ 1486 0 R /XYZ 81.077 740.96 null ] >>
+endobj
+1490 0 obj
+<< /D [ 1486 0 R /XYZ 81.077 730.001 null ] >>
+endobj
+1491 0 obj
+<< /D [ 1486 0 R /XYZ 81.077 687.198 null ] >>
+endobj
+1492 0 obj
+<< /D [ 1486 0 R /XYZ 81.077 676.239 null ] >>
+endobj
+1493 0 obj
+<< /D [ 1486 0 R /XYZ 81.077 665.28 null ] >>
+endobj
+1494 0 obj
+<< /D [ 1486 0 R /XYZ 81.077 654.321 null ] >>
+endobj
+1495 0 obj
+<< /D [ 1486 0 R /XYZ 81.077 643.363 null ] >>
+endobj
+1496 0 obj
+<< /D [ 1486 0 R /XYZ 81.077 632.404 null ] >>
+endobj
+1497 0 obj
+<< /D [ 1486 0 R /XYZ 81.077 621.445 null ] >>
+endobj
+1498 0 obj
+<< /D [ 1486 0 R /XYZ 81.077 610.486 null ] >>
+endobj
+1499 0 obj
+<< /D [ 1486 0 R /XYZ 81.077 599.527 null ] >>
+endobj
+1500 0 obj
+<< /D [ 1486 0 R /XYZ 81.077 583.611 null ] >>
+endobj
+1501 0 obj
+<< /D [ 1486 0 R /XYZ 81.077 572.652 null ] >>
+endobj
+1502 0 obj
+<< /D [ 1486 0 R /XYZ 81.077 561.693 null ] >>
+endobj
+1503 0 obj
+<< /D [ 1486 0 R /XYZ 81.077 550.734 null ] >>
+endobj
+1504 0 obj
+<< /D [ 1486 0 R /XYZ 81.077 539.775 null ] >>
+endobj
+1505 0 obj
+<< /D [ 1486 0 R /XYZ 81.077 528.816 null ] >>
+endobj
+1506 0 obj
+<< /D [ 1486 0 R /XYZ 81.077 517.857 null ] >>
+endobj
+1507 0 obj
+<< /D [ 1486 0 R /XYZ 81.077 506.898 null ] >>
+endobj
+1508 0 obj
+<< /D [ 1486 0 R /XYZ 81.077 495.939 null ] >>
+endobj
+1509 0 obj
+<< /D [ 1486 0 R /XYZ 81.077 484.981 null ] >>
+endobj
+1510 0 obj
+<< /D [ 1486 0 R /XYZ 81.077 474.022 null ] >>
+endobj
+1511 0 obj
+<< /D [ 1486 0 R /XYZ 81.077 463.063 null ] >>
+endobj
+1512 0 obj
+<< /D [ 1486 0 R /XYZ 81.077 452.104 null ] >>
+endobj
+1513 0 obj
+<< /D [ 1486 0 R /XYZ 81.077 441.145 null ] >>
+endobj
+1514 0 obj
+<< /D [ 1486 0 R /XYZ 81.077 430.186 null ] >>
+endobj
+1515 0 obj
+<< /D [ 1486 0 R /XYZ 81.077 419.227 null ] >>
+endobj
+1516 0 obj
+<< /D [ 1486 0 R /XYZ 81.077 408.268 null ] >>
+endobj
+1517 0 obj
+<< /D [ 1486 0 R /XYZ 81.077 397.309 null ] >>
+endobj
+1518 0 obj
+<< /D [ 1486 0 R /XYZ 81.077 386.35 null ] >>
+endobj
+1519 0 obj
+<< /D [ 1486 0 R /XYZ 81.077 329.659 null ] >>
+endobj
+1520 0 obj
+<< /D [ 1486 0 R /XYZ 81.077 318.701 null ] >>
+endobj
+1521 0 obj
+<< /D [ 1486 0 R /XYZ 81.077 275.897 null ] >>
+endobj
+1522 0 obj
+<< /D [ 1486 0 R /XYZ 81.077 264.938 null ] >>
+endobj
+1523 0 obj
+<< /D [ 1486 0 R /XYZ 81.077 253.979 null ] >>
+endobj
+1524 0 obj
+<< /D [ 1486 0 R /XYZ 81.077 243.021 null ] >>
+endobj
+1525 0 obj
+<< /D [ 1486 0 R /XYZ 81.077 232.062 null ] >>
+endobj
+1526 0 obj
+<< /D [ 1486 0 R /XYZ 81.077 221.103 null ] >>
+endobj
+1527 0 obj
+<< /D [ 1486 0 R /XYZ 81.077 210.144 null ] >>
+endobj
+1528 0 obj
+<< /D [ 1486 0 R /XYZ 81.077 199.185 null ] >>
+endobj
+1529 0 obj
+<< /D [ 1486 0 R /XYZ 81.077 188.226 null ] >>
+endobj
+1530 0 obj
+<< /D [ 1486 0 R /XYZ 81.077 177.267 null ] >>
+endobj
+1531 0 obj
+<< /D [ 1486 0 R /XYZ 81.077 166.308 null ] >>
+endobj
+1532 0 obj
+<< /D [ 1486 0 R /XYZ 81.077 155.349 null ] >>
+endobj
+1533 0 obj
+<< /D [ 1486 0 R /XYZ 81.077 144.39 null ] >>
+endobj
+1534 0 obj
+<< /D [ 1486 0 R /XYZ 81.077 133.431 null ] >>
+endobj
+1535 0 obj
+<< /D [ 1486 0 R /XYZ 81.077 122.473 null ] >>
+endobj
+1536 0 obj
+<< /D [ 1486 0 R /XYZ 81.077 111.514 null ] >>
+endobj
+1537 0 obj
+<< /D [ 1486 0 R /XYZ 81.077 100.555 null ] >>
+endobj
+1538 0 obj
+<< /D [ 1486 0 R /XYZ 81.077 89.596 null ] >>
+endobj
+1539 0 obj
+<< /D [ 1486 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+1485 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F20 186 0 R /F73 189 0 R /F69 183 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+1542 0 obj
+<< /Filter /FlateDecode /Length 2482 >>
+stream
+xڵZ[o~ϯЇJ@< ,t@SH۬)!);P2%هXg;  z'-"I* xA*BL-$K.VH(>FB0F>M՞DH c6KWLS޹؋lEϓ( 
+ 0#61FDˤRciG`6^].ndl`iݣƭ<$yxJճ$<ɋǕ
+s}h ϯz&2vȅb4mgw.v]OokEօ
+rADxWC3z44Oґ̓gGbH]3Lh<%x/$X5H0sMq=r)2$ypԟӪJzH};m3;z<Y*"8G,g!z*<^~]~oP(gHʜ VDHy s_[7BU'mRTʤfv W NB%N $d!r Gˇ&A*wO*Z/X^훬(kĬN8┼~rVR`OyQ8\ÈHNpV|ս
+jX476'5m WPG>'FU| }ByIp#f,۴k"ܚm`ۢN
+$Ly 8KP?(kvond|
+P
+_d!F Fj0o,5cK4f֙E^OI:qFQ)BrPsx~r Χ|c9&jϣ3UCcg.T!noڳ hV!%Βf/Cc#ȡ0M룕z*LR""d S&!&ڲj)oK ;̼F@8x̨9_9`}٠Dbt\dpj^%PՉ NRu8`pb-
+ђ
+7 oćqp1^^2n͝@Ƶ+,Y1pybeon_]#X
+6N{˸#30Wb(tȣNϛ (Ü5 ,jkLmef9d;9m7'9ǃ蒶6<*1wؕzJL'yg,1V_cѝ8(wW d ޑ4C];멜'ޭg-m0mM躼,|w<-U@68htI
+9dP]
+RἎߖ7yݘ
+u^lvOquz8:ᤜh0Dg;1pS>SmLб+p"1seGiW-
+endstream
+endobj
+1541 0 obj
+<< /Type /Page /Contents 1542 0 R /Resources 1540 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1316 0 R >>
+endobj
+1543 0 obj
+<< /D [ 1541 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+1544 0 obj
+<< /D [ 1541 0 R /XYZ 81.077 697.101 null ] >>
+endobj
+1545 0 obj
+<< /D [ 1541 0 R /XYZ 81.077 686.142 null ] >>
+endobj
+1546 0 obj
+<< /D [ 1541 0 R /XYZ 81.077 675.183 null ] >>
+endobj
+1547 0 obj
+<< /D [ 1541 0 R /XYZ 81.077 664.224 null ] >>
+endobj
+1548 0 obj
+<< /D [ 1541 0 R /XYZ 81.077 653.265 null ] >>
+endobj
+1549 0 obj
+<< /D [ 1541 0 R /XYZ 81.077 642.306 null ] >>
+endobj
+1550 0 obj
+<< /D [ 1541 0 R /XYZ 81.077 631.347 null ] >>
+endobj
+1551 0 obj
+<< /D [ 1541 0 R /XYZ 81.077 620.388 null ] >>
+endobj
+1552 0 obj
+<< /D [ 1541 0 R /XYZ 81.077 609.429 null ] >>
+endobj
+1553 0 obj
+<< /D [ 1541 0 R /XYZ 81.077 598.471 null ] >>
+endobj
+1554 0 obj
+<< /D [ 1541 0 R /XYZ 81.077 587.512 null ] >>
+endobj
+37 0 obj
+<< /D [ 1541 0 R /XYZ 79.37 562.057 null ] >>
+endobj
+1555 0 obj
+<< /D [ 1541 0 R /XYZ 81.077 453.172 null ] >>
+endobj
+1556 0 obj
+<< /D [ 1541 0 R /XYZ 81.077 442.213 null ] >>
+endobj
+1557 0 obj
+<< /D [ 1541 0 R /XYZ 81.077 399.373 null ] >>
+endobj
+1558 0 obj
+<< /D [ 1541 0 R /XYZ 81.077 358.526 null ] >>
+endobj
+1559 0 obj
+<< /D [ 1541 0 R /XYZ 81.077 329.635 null ] >>
+endobj
+1560 0 obj
+<< /D [ 1541 0 R /XYZ 81.077 276.833 null ] >>
+endobj
+1561 0 obj
+<< /D [ 1541 0 R /XYZ 81.077 265.874 null ] >>
+endobj
+1562 0 obj
+<< /D [ 1541 0 R /XYZ 81.077 225.027 null ] >>
+endobj
+1563 0 obj
+<< /D [ 1541 0 R /XYZ 81.077 196.135 null ] >>
+endobj
+1564 0 obj
+<< /D [ 1541 0 R /XYZ 81.077 180.195 null ] >>
+endobj
+1565 0 obj
+<< /D [ 1541 0 R /XYZ 81.077 169.236 null ] >>
+endobj
+1566 0 obj
+<< /D [ 1541 0 R /XYZ 81.077 158.277 null ] >>
+endobj
+1567 0 obj
+<< /D [ 1541 0 R /XYZ 81.077 147.318 null ] >>
+endobj
+1540 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F20 186 0 R /F75 317 0 R /F76 318 0 R /F73 189 0 R /F69 183 0 R /F72 187 0 R /F70 185 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+1570 0 obj
+<< /Filter /FlateDecode /Length 2069 >>
+stream
+xZKsW(WxTU&$|ˤXˌ)RKQq =;UA|Dw_h:+?^k9b,+ffj61}0 !kg!>_umծ퍄q3<{Xk!?Q! `z^Q],Y&%*]21ș.&22# ㌹x[Q Ee`)r/[Tn07z~PS xwOKBd_&/cDp抰BeksJ2Qhke{;i{B $Be :$A CYV]0;7&5Ϳ~{/?EãKa%'(Lr Hhrڰ첥UND'`kZukSw_Р(r\1
+etwUmVt}c7]ze_ =O2JHɃRnc4~mxC KXevk/s2*O+
+QM~ʘ͍yQ-X_p*wi~f56RMWDg5.ebڜ5b00| Yzg(\~SIpYX^NwRЍ*e8HF+P@FF'~I%o˱4 {oO_ O+T>Kx)N)s4˪/J2G9>/-2.V]3XՎ16*ڼgnMw?;zG@ (˂}Ε1:>ܔ7C
+y>[!$D *VMs
+x2fn2 `Y A1u!7Ci~_ܼVs9Mʶ`wD^ >yק{:Tw|h~7!
+wOiJɷ-ذ-Jh-q=AX'$߇r6"d%U]lux:+61gsb}wӮ
+/ҍ&{30Nx^$J]me'ldSDZͼ!؄9|FWQݽ˄$|Ii|="$ZlRsжZA`S ¥N_XT\$/d86sH1>puQ?Vf
+zQz XDv>ЀY'Mݽ[>HN*z6lgGa2'#9p +o9UUĵpe=&k. ;OX#RCŬCZdQZ_2#H=OZ2A_ x<"C%|wˀ|-rT2NC@kp@"
+TmJGXAG?B g!$KVu-7T%]Y6~9%y&g<K&F,o79t}9|.<y''PȊ,HS.FWax[;+,toן'mwj8-KгI\ ٚ@n_uv^DiZ;p"h/uV^{#BuP&޴}ppµD4ϼn
+¦Zԋёz;pX}<6qS}T g B1ڊo?gnx^|<9pn)a
+VHVd6('htfpE$u[=Z rvP/co<̘DLYtY) 8Gճm  F BC%'iFfU 35%@HV Z<}moVnac|AB H_21Šs9`+??Y%ڎ7/iasXn'Z}5WS^-#m>Tg $~0iˉVz&Ea}2%
+endstream
+endobj
+1569 0 obj
+<< /Type /Page /Contents 1570 0 R /Resources 1568 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1316 0 R >>
+endobj
+1571 0 obj
+<< /D [ 1569 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+1572 0 obj
+<< /D [ 1569 0 R /XYZ 81.077 754.884 null ] >>
+endobj
+1573 0 obj
+<< /D [ 1569 0 R /XYZ 81.077 743.925 null ] >>
+endobj
+1574 0 obj
+<< /D [ 1569 0 R /XYZ 81.077 732.966 null ] >>
+endobj
+1575 0 obj
+<< /D [ 1569 0 R /XYZ 81.077 722.007 null ] >>
+endobj
+1576 0 obj
+<< /D [ 1569 0 R /XYZ 81.077 711.048 null ] >>
+endobj
+1577 0 obj
+<< /D [ 1569 0 R /XYZ 81.077 700.089 null ] >>
+endobj
+1578 0 obj
+<< /D [ 1569 0 R /XYZ 81.077 689.131 null ] >>
+endobj
+1579 0 obj
+<< /D [ 1569 0 R /XYZ 81.077 678.172 null ] >>
+endobj
+1580 0 obj
+<< /D [ 1569 0 R /XYZ 81.077 667.213 null ] >>
+endobj
+1581 0 obj
+<< /D [ 1569 0 R /XYZ 81.077 656.254 null ] >>
+endobj
+1582 0 obj
+<< /D [ 1569 0 R /XYZ 81.077 645.295 null ] >>
+endobj
+1583 0 obj
+<< /D [ 1569 0 R /XYZ 81.077 604.448 null ] >>
+endobj
+1584 0 obj
+<< /D [ 1569 0 R /XYZ 81.077 593.489 null ] >>
+endobj
+1585 0 obj
+<< /D [ 1569 0 R /XYZ 81.077 582.53 null ] >>
+endobj
+1586 0 obj
+<< /D [ 1569 0 R /XYZ 81.077 571.571 null ] >>
+endobj
+1587 0 obj
+<< /D [ 1569 0 R /XYZ 81.077 560.613 null ] >>
+endobj
+1588 0 obj
+<< /D [ 1569 0 R /XYZ 81.077 549.654 null ] >>
+endobj
+1589 0 obj
+<< /D [ 1569 0 R /XYZ 81.077 538.695 null ] >>
+endobj
+1590 0 obj
+<< /D [ 1569 0 R /XYZ 81.077 527.736 null ] >>
+endobj
+1591 0 obj
+<< /D [ 1569 0 R /XYZ 81.077 498.844 null ] >>
+endobj
+1592 0 obj
+<< /D [ 1569 0 R /XYZ 81.077 469.953 null ] >>
+endobj
+1593 0 obj
+<< /D [ 1569 0 R /XYZ 81.077 458.994 null ] >>
+endobj
+1594 0 obj
+<< /D [ 1569 0 R /XYZ 81.077 448.035 null ] >>
+endobj
+1595 0 obj
+<< /D [ 1569 0 R /XYZ 81.077 419.143 null ] >>
+endobj
+1596 0 obj
+<< /D [ 1569 0 R /XYZ 81.077 408.184 null ] >>
+endobj
+1597 0 obj
+<< /D [ 1569 0 R /XYZ 81.077 397.225 null ] >>
+endobj
+1598 0 obj
+<< /D [ 1569 0 R /XYZ 81.077 336.536 null ] >>
+endobj
+1599 0 obj
+<< /D [ 1569 0 R /XYZ 81.077 325.577 null ] >>
+endobj
+1600 0 obj
+<< /D [ 1569 0 R /XYZ 81.077 314.618 null ] >>
+endobj
+1601 0 obj
+<< /D [ 1569 0 R /XYZ 81.077 303.659 null ] >>
+endobj
+1602 0 obj
+<< /D [ 1569 0 R /XYZ 81.077 292.7 null ] >>
+endobj
+1603 0 obj
+<< /D [ 1569 0 R /XYZ 81.077 281.741 null ] >>
+endobj
+1604 0 obj
+<< /D [ 1569 0 R /XYZ 81.077 270.782 null ] >>
+endobj
+1605 0 obj
+<< /D [ 1569 0 R /XYZ 81.077 259.824 null ] >>
+endobj
+1606 0 obj
+<< /D [ 1569 0 R /XYZ 81.077 248.865 null ] >>
+endobj
+1607 0 obj
+<< /D [ 1569 0 R /XYZ 81.077 237.906 null ] >>
+endobj
+1608 0 obj
+<< /D [ 1569 0 R /XYZ 81.077 226.947 null ] >>
+endobj
+1609 0 obj
+<< /D [ 1569 0 R /XYZ 81.077 215.988 null ] >>
+endobj
+1610 0 obj
+<< /D [ 1569 0 R /XYZ 81.077 205.029 null ] >>
+endobj
+1611 0 obj
+<< /D [ 1569 0 R /XYZ 81.077 194.07 null ] >>
+endobj
+1612 0 obj
+<< /D [ 1569 0 R /XYZ 81.077 183.111 null ] >>
+endobj
+1613 0 obj
+<< /D [ 1569 0 R /XYZ 81.077 172.152 null ] >>
+endobj
+1614 0 obj
+<< /D [ 1569 0 R /XYZ 81.077 161.193 null ] >>
+endobj
+1615 0 obj
+<< /D [ 1569 0 R /XYZ 81.077 150.235 null ] >>
+endobj
+1616 0 obj
+<< /D [ 1569 0 R /XYZ 81.077 139.276 null ] >>
+endobj
+1568 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F73 189 0 R /F69 183 0 R /F76 318 0 R /F20 186 0 R /F23 660 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+1619 0 obj
+<< /Filter /FlateDecode /Length 1743 >>
+stream
+xڽZM6ыf~h( 
+ߚBPlZ-Mwh%I=q83| <N?ί^17qidpŠN8"hFfft*oӇz>գo2E}}tQ6s˾EU+뮽~q|mo۾ou4ۖmٵ*o_Ӽ=_KG#>rf O;Tb&o˺j>~wT``lkEޏ,7E
+~DŽ\4YU<e]XACm.9|%Ι7vƞ3NG1"J_s Uan;nnN.E{۔UٟŮUh촣FعqO)m#Uܚ] 
+,5]4BJB5ܸ$AIu 8 h| u听bt,mgP~pw z|#s΁wg?;b
+(ɂ}D5/@Ez .pO1 kI;"M.?ͯ1
+endstream
+endobj
+1618 0 obj
+<< /Type /Page /Contents 1619 0 R /Resources 1617 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1316 0 R >>
+endobj
+1620 0 obj
+<< /D [ 1618 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+1621 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 730.974 null ] >>
+endobj
+1622 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 720.015 null ] >>
+endobj
+1623 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 709.056 null ] >>
+endobj
+1624 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 698.097 null ] >>
+endobj
+1625 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 687.138 null ] >>
+endobj
+1626 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 676.179 null ] >>
+endobj
+1627 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 665.22 null ] >>
+endobj
+1628 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 654.261 null ] >>
+endobj
+1629 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 643.302 null ] >>
+endobj
+1630 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 632.344 null ] >>
+endobj
+1631 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 621.385 null ] >>
+endobj
+1632 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 610.426 null ] >>
+endobj
+1633 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 599.467 null ] >>
+endobj
+1634 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 588.508 null ] >>
+endobj
+1635 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 577.549 null ] >>
+endobj
+1636 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 566.59 null ] >>
+endobj
+1637 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 555.631 null ] >>
+endobj
+1638 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 539.691 null ] >>
+endobj
+1639 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 528.732 null ] >>
+endobj
+1640 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 517.773 null ] >>
+endobj
+1641 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 506.814 null ] >>
+endobj
+1642 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 495.855 null ] >>
+endobj
+1643 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 484.896 null ] >>
+endobj
+1644 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 473.938 null ] >>
+endobj
+1645 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 462.979 null ] >>
+endobj
+1646 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 452.02 null ] >>
+endobj
+1647 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 441.061 null ] >>
+endobj
+1648 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 430.102 null ] >>
+endobj
+1649 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 419.143 null ] >>
+endobj
+1650 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 408.184 null ] >>
+endobj
+1651 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 397.225 null ] >>
+endobj
+1652 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 386.266 null ] >>
+endobj
+1653 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 375.307 null ] >>
+endobj
+1654 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 364.349 null ] >>
+endobj
+1655 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 353.39 null ] >>
+endobj
+1656 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 342.431 null ] >>
+endobj
+1657 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 331.472 null ] >>
+endobj
+1658 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 320.513 null ] >>
+endobj
+1659 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 309.554 null ] >>
+endobj
+1660 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 298.595 null ] >>
+endobj
+1661 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 287.636 null ] >>
+endobj
+1662 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 276.677 null ] >>
+endobj
+1663 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 265.718 null ] >>
+endobj
+1664 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 249.778 null ] >>
+endobj
+1665 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 238.819 null ] >>
+endobj
+1666 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 227.86 null ] >>
+endobj
+1667 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 216.901 null ] >>
+endobj
+1668 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 205.943 null ] >>
+endobj
+1669 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 194.984 null ] >>
+endobj
+1670 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 184.025 null ] >>
+endobj
+1671 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 173.066 null ] >>
+endobj
+1672 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 162.107 null ] >>
+endobj
+1673 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 151.148 null ] >>
+endobj
+1674 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 140.189 null ] >>
+endobj
+1675 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 129.23 null ] >>
+endobj
+1676 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 118.271 null ] >>
+endobj
+1677 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 107.312 null ] >>
+endobj
+1678 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 96.354 null ] >>
+endobj
+1679 0 obj
+<< /D [ 1618 0 R /XYZ 81.077 85.395 null ] >>
+endobj
+1617 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F20 186 0 R /F73 189 0 R /F69 183 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+1682 0 obj
+<< /Filter /FlateDecode /Length 2922 >>
+stream
+xڵZ[ۺ~ϯ[hˆWI8mќ(i%W' /J}, he~|'~|7?|%HPVw7E+JQ4^ŊHa5T\?tT))O.3y̺dR7W?d2`8\QFFlQ]'Ƅ"mCvok+  xI~s콯2 ])
+>4ی1[◟/傰RD R&WJ O!;7G;o]R>l.cŦ/#qVP9U ' ґG]HU
+$L1IbN w|ka`[o!"eg8TU爋bk<{3XێBDdPN,"L>ݕTÊ3+A0&ؘۻ*YxL٬E(#fe(Lو0SQLT{{A
+-4%9!8HK5.FX<\d7_w_uUvEB3 H+#EkWrXě C
+
+9}W ]?A5W̟J/ɭ Bΐ˦6n2ތA5<ή1HF6`*%X6&9AC8 ω{0{Oֻ\s޴[݄4=|[\{3l"cpR$>G$(yKV"}<4L1MOw|Q' c۝ͅG}Q#b+O볮x<4%b6a_ՋC,-{ԡ%//v|Sd}s̪PՊO" C0G=VS'щ(QORVM7OBPظכ B=\޴:*O}a^ ḩ
+-p » s+>mKA/ 6E?Mq4Xd< ՟sƂmunr}#aavKoPC35#TygSy<B$&ڳ0p{:n1y{VuE76oEt̟Xx: (OZ1$e< v%,5d(1$kSNƌ?Xxޚ0_ dZ݁liQ>J(ty_3҈f" D=p[5Rb{{5,7Q,vE^)zKœ0z$ LF*K(!.+덵{|0S5F+m;bcQyiRDUt݇
+aJc;;fD~]U
+Jbw\y;޽yǾ- 6g@
+5>p7,`,BAWmN2,xgeQmʂIŋ>杊_Į"ՄgXڑ{O+VEPFu q(^k >KjXtL_dZEda B^2q*1<\8H|yHGiqDy."")A\DLL}1cQ|w'ttm5P%,~ƕZ[ig@i|3[jLmHh:VhbCWdrIM^UO"YGQcC9hz;wg.9nZo&2k{dB(uS;/NGbzjkSAN, n
+p/# P
+nF 2Q6@g~|{2TϹSrRS)W?52g]2ɘABegKK146lVbc[,ClͿ^^tvx#M糍65)#uGMj ̸"^`Yd$I'\m/("RP"_'S H' YoYBFP)eP赵Gm" Og"㧄NdH[)I2hRE m$Ϲ x
+A!o$*ZKjwl.G]K6dY0éOReӻR(dQ}0Q k6^;>:0,L'7 غɻµ?ǶV6'7vwQk/e5ǺB
+.Z'mCfjz
+endstream
+endobj
+1681 0 obj
+<< /Type /Page /Contents 1682 0 R /Resources 1680 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1316 0 R >>
+endobj
+1683 0 obj
+<< /D [ 1681 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+1684 0 obj
+<< /D [ 1681 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+1685 0 obj
+<< /D [ 1681 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+1686 0 obj
+<< /D [ 1681 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+1687 0 obj
+<< /D [ 1681 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+1688 0 obj
+<< /D [ 1681 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+1689 0 obj
+<< /D [ 1681 0 R /XYZ 81.077 709.066 null ] >>
+endobj
+1690 0 obj
+<< /D [ 1681 0 R /XYZ 81.077 698.107 null ] >>
+endobj
+1691 0 obj
+<< /D [ 1681 0 R /XYZ 81.077 667.239 null ] >>
+endobj
+1692 0 obj
+<< /D [ 1681 0 R /XYZ 81.077 656.28 null ] >>
+endobj
+1693 0 obj
+<< /D [ 1681 0 R /XYZ 81.077 645.321 null ] >>
+endobj
+1694 0 obj
+<< /D [ 1681 0 R /XYZ 81.077 634.362 null ] >>
+endobj
+1695 0 obj
+<< /D [ 1681 0 R /XYZ 81.077 618.432 null ] >>
+endobj
+1696 0 obj
+<< /D [ 1681 0 R /XYZ 81.077 607.473 null ] >>
+endobj
+1697 0 obj
+<< /D [ 1681 0 R /XYZ 81.077 564.649 null ] >>
+endobj
+1698 0 obj
+<< /D [ 1681 0 R /XYZ 81.077 553.69 null ] >>
+endobj
+1699 0 obj
+<< /D [ 1681 0 R /XYZ 81.077 542.731 null ] >>
+endobj
+1700 0 obj
+<< /D [ 1681 0 R /XYZ 81.077 526.801 null ] >>
+endobj
+1701 0 obj
+<< /D [ 1681 0 R /XYZ 81.077 515.842 null ] >>
+endobj
+1702 0 obj
+<< /D [ 1681 0 R /XYZ 81.077 504.884 null ] >>
+endobj
+1703 0 obj
+<< /D [ 1681 0 R /XYZ 81.077 493.925 null ] >>
+endobj
+1704 0 obj
+<< /D [ 1681 0 R /XYZ 81.077 451.101 null ] >>
+endobj
+1705 0 obj
+<< /D [ 1681 0 R /XYZ 81.077 422.219 null ] >>
+endobj
+1706 0 obj
+<< /D [ 1681 0 R /XYZ 81.077 155.349 null ] >>
+endobj
+1707 0 obj
+<< /D [ 1681 0 R /XYZ 81.077 144.39 null ] >>
+endobj
+1708 0 obj
+<< /D [ 1681 0 R /XYZ 81.077 133.431 null ] >>
+endobj
+1709 0 obj
+<< /D [ 1681 0 R /XYZ 81.077 122.473 null ] >>
+endobj
+1710 0 obj
+<< /D [ 1681 0 R /XYZ 81.077 111.514 null ] >>
+endobj
+1711 0 obj
+<< /D [ 1681 0 R /XYZ 81.077 100.555 null ] >>
+endobj
+1712 0 obj
+<< /D [ 1681 0 R /XYZ 81.077 89.596 null ] >>
+endobj
+1713 0 obj
+<< /D [ 1681 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+1680 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F76 318 0 R /F78 556 0 R /F79 668 0 R /F70 185 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+1716 0 obj
+<< /Filter /FlateDecode /Length 1945 >>
+stream
+xڭZ]}_G&(0h Z
+E3(=g?)r?ý>*;3*M Ja~YJ&?]>W-[npi^,kWKh/}o1 4.}sKo=o}J}3Co3o7Evm\{gۍOU,۪]Kh Wݗ`V9&1?iU4.#}>O e)”:m¶LtcJ &~l>R;
+K>&|}Lch)WA֤D)g2AR}>mzoj/SqY"QnV)*# '.EFP:u!|U+P3oja JVP+WnRdfys̶·gih`j|
+ DMFP2J)ACؓ4gc h&)QUW'h|p< AM4D5):.0?]Ƨze~IZ6؇
+#g <_+ Zh(V*+iSeP1Afqt<_f
+b:C7`
+ )&'` 4 Asj?A
+bRET&zJDtNek<7B8#Yh+bR=MQ cnj\c!\M>o][1=0Mxuk@<5hJ=`YhM(OCjU-3? z`W{H r2!S`Š8+:+g ,uptI
+endstream
+endobj
+1715 0 obj
+<< /Type /Page /Contents 1716 0 R /Resources 1714 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1316 0 R >>
+endobj
+1717 0 obj
+<< /D [ 1715 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+1718 0 obj
+<< /D [ 1715 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+1719 0 obj
+<< /D [ 1715 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+1720 0 obj
+<< /D [ 1715 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+1721 0 obj
+<< /D [ 1715 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+1722 0 obj
+<< /D [ 1715 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+1723 0 obj
+<< /D [ 1715 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+1724 0 obj
+<< /D [ 1715 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+1725 0 obj
+<< /D [ 1715 0 R /XYZ 81.077 661.013 null ] >>
+endobj
+1726 0 obj
+<< /D [ 1715 0 R /XYZ 81.077 650.054 null ] >>
+endobj
+1727 0 obj
+<< /D [ 1715 0 R /XYZ 81.077 639.095 null ] >>
+endobj
+1728 0 obj
+<< /D [ 1715 0 R /XYZ 81.077 628.136 null ] >>
+endobj
+1729 0 obj
+<< /D [ 1715 0 R /XYZ 81.077 617.177 null ] >>
+endobj
+1730 0 obj
+<< /D [ 1715 0 R /XYZ 81.077 565.038 null ] >>
+endobj
+1731 0 obj
+<< /D [ 1715 0 R /XYZ 81.077 554.079 null ] >>
+endobj
+1732 0 obj
+<< /D [ 1715 0 R /XYZ 81.077 543.12 null ] >>
+endobj
+1733 0 obj
+<< /D [ 1715 0 R /XYZ 81.077 532.161 null ] >>
+endobj
+1734 0 obj
+<< /D [ 1715 0 R /XYZ 81.077 521.202 null ] >>
+endobj
+1735 0 obj
+<< /D [ 1715 0 R /XYZ 81.077 510.244 null ] >>
+endobj
+1736 0 obj
+<< /D [ 1715 0 R /XYZ 81.077 499.285 null ] >>
+endobj
+1737 0 obj
+<< /D [ 1715 0 R /XYZ 81.077 488.326 null ] >>
+endobj
+1738 0 obj
+<< /D [ 1715 0 R /XYZ 81.077 477.367 null ] >>
+endobj
+1739 0 obj
+<< /D [ 1715 0 R /XYZ 81.077 466.408 null ] >>
+endobj
+1740 0 obj
+<< /D [ 1715 0 R /XYZ 81.077 455.449 null ] >>
+endobj
+1741 0 obj
+<< /D [ 1715 0 R /XYZ 81.077 444.49 null ] >>
+endobj
+1742 0 obj
+<< /D [ 1715 0 R /XYZ 81.077 433.531 null ] >>
+endobj
+1743 0 obj
+<< /D [ 1715 0 R /XYZ 81.077 422.572 null ] >>
+endobj
+1744 0 obj
+<< /D [ 1715 0 R /XYZ 81.077 392.462 null ] >>
+endobj
+1745 0 obj
+<< /D [ 1715 0 R /XYZ 81.077 381.503 null ] >>
+endobj
+1746 0 obj
+<< /D [ 1715 0 R /XYZ 81.077 370.544 null ] >>
+endobj
+1747 0 obj
+<< /D [ 1715 0 R /XYZ 81.077 359.585 null ] >>
+endobj
+1748 0 obj
+<< /D [ 1715 0 R /XYZ 81.077 348.626 null ] >>
+endobj
+1749 0 obj
+<< /D [ 1715 0 R /XYZ 81.077 337.667 null ] >>
+endobj
+1750 0 obj
+<< /D [ 1715 0 R /XYZ 81.077 326.708 null ] >>
+endobj
+1751 0 obj
+<< /D [ 1715 0 R /XYZ 81.077 315.749 null ] >>
+endobj
+1752 0 obj
+<< /D [ 1715 0 R /XYZ 81.077 261.728 null ] >>
+endobj
+1753 0 obj
+<< /D [ 1715 0 R /XYZ 81.077 250.77 null ] >>
+endobj
+1754 0 obj
+<< /D [ 1715 0 R /XYZ 81.077 239.811 null ] >>
+endobj
+1755 0 obj
+<< /D [ 1715 0 R /XYZ 81.077 228.852 null ] >>
+endobj
+1756 0 obj
+<< /D [ 1715 0 R /XYZ 81.077 217.893 null ] >>
+endobj
+1757 0 obj
+<< /D [ 1715 0 R /XYZ 81.077 206.934 null ] >>
+endobj
+1758 0 obj
+<< /D [ 1715 0 R /XYZ 81.077 195.975 null ] >>
+endobj
+1759 0 obj
+<< /D [ 1715 0 R /XYZ 81.077 185.016 null ] >>
+endobj
+1760 0 obj
+<< /D [ 1715 0 R /XYZ 81.077 174.057 null ] >>
+endobj
+1761 0 obj
+<< /D [ 1715 0 R /XYZ 81.077 163.098 null ] >>
+endobj
+1762 0 obj
+<< /D [ 1715 0 R /XYZ 81.077 122.473 null ] >>
+endobj
+1763 0 obj
+<< /D [ 1715 0 R /XYZ 81.077 111.514 null ] >>
+endobj
+1764 0 obj
+<< /D [ 1715 0 R /XYZ 81.077 100.555 null ] >>
+endobj
+1765 0 obj
+<< /D [ 1715 0 R /XYZ 81.077 89.596 null ] >>
+endobj
+1766 0 obj
+<< /D [ 1715 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+1714 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F78 556 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+1769 0 obj
+<< /Filter /FlateDecode /Length 4223 >>
+stream
+x\p^N[
+j43H?.wMGFt>WWO>zs#F8]]?aDGld5̌fj6}7fɋ}}\%Nka1jn6û/&ٳzvLA%|,HE <)Jඅ#Lܶٶ#
+~=W͢P%S=ӊ'07/hl澟OoVeprvXe 67<&\뜧6ඵSDPۖǡY/`|oݮDHcaba:sFL8"9-6|C!\g܌WƇ(ެVr*z]EO^&YEC\8AG*Sp;7Y
+Pbpp#VvO,bW[{<67n{ 9`V7)Zwâֹk!j%Ј!'R(YOb \rz1 w:xng~ٮC#bP+Yཱུ
+L¢38J,J2wX/6^~iit)6[t?4@r@~vuӴ_T^]fyApd6]]X>n=B$l 0Ѹ!9fr>[E 4p %Hq[77os?<:VOaA01Y,l:{HCJٍm#4ڮeO=M^r
+nl}!?4!Ur8.-BaN&X /wpYUam;bxq=92θDփnyhxwfN`Rr9 ̱m?+^M:%
+*ReZٳxm>]y0=9be;-jF,Q=uflzw/Kn ff<>fׇf9փ#a|{t((׹%ּnWNӝC84zrgbR`J/__.
+X 0 }0`#
+Z|e7a
+E3Hnr1Enz  aKN)aJA
+>0")p aJ"*+4RXX+<u3p(q:%L9Pe @ƹRUp
+XQ+'WaɝiO<%YD`3%SCM2ChEӮ
+E3Hnr1E nz 0}(\|U`z'8"'f)aZzboL]DDi`Wl*KB2K5T3Mh+(Af@S#N
+c2acA`=  <! ISY67Zbz)䬛ecI_)i=h|=T
+PVj@˜\eIKc&YN4a)EAr BbSUZsZ{9eO3P%yXAҔIvVMmVа^?y{hg
+endstream
+endobj
+1768 0 obj
+<< /Type /Page /Contents 1769 0 R /Resources 1767 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1810 0 R >>
+endobj
+1770 0 obj
+<< /D [ 1768 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+1771 0 obj
+<< /D [ 1768 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+1772 0 obj
+<< /D [ 1768 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+1773 0 obj
+<< /D [ 1768 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+1774 0 obj
+<< /D [ 1768 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+1775 0 obj
+<< /D [ 1768 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+1776 0 obj
+<< /D [ 1768 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+1777 0 obj
+<< /D [ 1768 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+1778 0 obj
+<< /D [ 1768 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+1779 0 obj
+<< /D [ 1768 0 R /XYZ 81.077 633.368 null ] >>
+endobj
+1780 0 obj
+<< /D [ 1768 0 R /XYZ 81.077 622.409 null ] >>
+endobj
+1781 0 obj
+<< /D [ 1768 0 R /XYZ 81.077 611.45 null ] >>
+endobj
+1782 0 obj
+<< /D [ 1768 0 R /XYZ 81.077 600.492 null ] >>
+endobj
+1783 0 obj
+<< /D [ 1768 0 R /XYZ 81.077 589.533 null ] >>
+endobj
+1784 0 obj
+<< /D [ 1768 0 R /XYZ 81.077 578.574 null ] >>
+endobj
+1785 0 obj
+<< /D [ 1768 0 R /XYZ 81.077 567.615 null ] >>
+endobj
+1786 0 obj
+<< /D [ 1768 0 R /XYZ 81.077 556.656 null ] >>
+endobj
+1787 0 obj
+<< /D [ 1768 0 R /XYZ 81.077 545.697 null ] >>
+endobj
+1788 0 obj
+<< /D [ 1768 0 R /XYZ 81.077 534.738 null ] >>
+endobj
+1789 0 obj
+<< /D [ 1768 0 R /XYZ 81.077 523.779 null ] >>
+endobj
+1790 0 obj
+<< /D [ 1768 0 R /XYZ 81.077 482.947 null ] >>
+endobj
+1791 0 obj
+<< /D [ 1768 0 R /XYZ 81.077 471.988 null ] >>
+endobj
+1792 0 obj
+<< /D [ 1768 0 R /XYZ 81.077 461.029 null ] >>
+endobj
+1793 0 obj
+<< /D [ 1768 0 R /XYZ 81.077 450.07 null ] >>
+endobj
+1794 0 obj
+<< /D [ 1768 0 R /XYZ 81.077 439.111 null ] >>
+endobj
+1795 0 obj
+<< /D [ 1768 0 R /XYZ 81.077 428.152 null ] >>
+endobj
+1796 0 obj
+<< /D [ 1768 0 R /XYZ 81.077 417.193 null ] >>
+endobj
+1797 0 obj
+<< /D [ 1768 0 R /XYZ 81.077 406.234 null ] >>
+endobj
+1798 0 obj
+<< /D [ 1768 0 R /XYZ 81.077 395.275 null ] >>
+endobj
+1799 0 obj
+<< /D [ 1768 0 R /XYZ 81.077 384.317 null ] >>
+endobj
+1800 0 obj
+<< /D [ 1768 0 R /XYZ 81.077 373.358 null ] >>
+endobj
+1801 0 obj
+<< /D [ 1768 0 R /XYZ 81.077 362.399 null ] >>
+endobj
+1802 0 obj
+<< /D [ 1768 0 R /XYZ 81.077 351.44 null ] >>
+endobj
+1803 0 obj
+<< /D [ 1768 0 R /XYZ 81.077 310.636 null ] >>
+endobj
+1804 0 obj
+<< /D [ 1768 0 R /XYZ 81.077 299.677 null ] >>
+endobj
+1805 0 obj
+<< /D [ 1768 0 R /XYZ 81.077 288.718 null ] >>
+endobj
+1806 0 obj
+<< /D [ 1768 0 R /XYZ 81.077 277.759 null ] >>
+endobj
+1807 0 obj
+<< /D [ 1768 0 R /XYZ 81.077 266.8 null ] >>
+endobj
+1808 0 obj
+<< /D [ 1768 0 R /XYZ 81.077 255.841 null ] >>
+endobj
+1767 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F75 317 0 R /F32 1809 0 R /F23 660 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+1813 0 obj
+<< /Filter /FlateDecode /Length 2530 >>
+stream
+xڝZ[o6~_EQ&.";CP)YflJd=%JT̋%Qx.<<7:B|_Eܙd7>|"J!%`w>Vx%r%FgLUjMY#H=fUQ?z:>a@JyO/.euڇޟ rݏM^$^Wiiyf@Hy˳[tm?}0U'<w˦OYW*g_t0pV@JՁiYս{_5sW넡~9} _']fFx3rQwTqiQh<M 8ڻ<WeZ<'0+[001$]1bLb+"i0dfJBb0%A)G)샍fMR䮮ZzM6i`l~G+ &ICϓcD яe6;6GemHMyRz%}vMbv&MHB '0sOU;Fb4mұ-؞í1Th3i+ᕇ6+xj&S Ժ3µH)`$y0~M2/u=eW/[$Q* 5X&Y=RKʪݔ{{5L
+"Fccg팆A|VL:}3$;f,L?p[T &̃3Y#">/iVWYb ;4\O
+rFs;0<d9„6ݞNnþ odo)CqyÔ>EJϪ#Ð ^/JvC_?L(U(LQ VCOV 6?Xfii˶\[]5 ‘Ksx2__~xr8_^C \2\Omϖ
+CBTxu-a|rj*|;́H
+ej$@T{S" [E̛ܤ"^% tXzgld{ox)P.q25Kpٓc{P~=gzftLtӷ0g 3Ð/3}x!gJwr(b~3W/cliji
+kڪD,3:7ҟTM0fLEcǺi)L6S l.^7nXe9k ޙu'ZG77t:ڞ]ħQXA*վ`D쓴=9xV
+
+E1=8I<LB|dK.6v%vv׬:  )%v)^@H nT2<R\!$cBhfPfmѶB98µ9 nSkZ-6y[(5uC+
+MA >9򰪰-≩'}2[|.rXP]ݿRK"ʪ >4eet/w1LM]G3!մJN@WIYtp@V|48>D
+Jr8vk?8i:%0G0A:=tb%zAg r~o(`<xl &Hm3GAs8;r"CӖrv~zBaAns#",|z3"x&sqo))CLy#a[}ݼmKؐԴƖs|Ybp
+P,8 a<FTK[K#w<3 UgՕ!%{$y
+endstream
+endobj
+1812 0 obj
+<< /Type /Page /Contents 1813 0 R /Resources 1811 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1810 0 R >>
+endobj
+1814 0 obj
+<< /D [ 1812 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+1815 0 obj
+<< /D [ 1812 0 R /XYZ 81.077 707.063 null ] >>
+endobj
+1816 0 obj
+<< /D [ 1812 0 R /XYZ 81.077 696.104 null ] >>
+endobj
+1817 0 obj
+<< /D [ 1812 0 R /XYZ 81.077 685.146 null ] >>
+endobj
+1818 0 obj
+<< /D [ 1812 0 R /XYZ 81.077 674.187 null ] >>
+endobj
+1819 0 obj
+<< /D [ 1812 0 R /XYZ 81.077 663.228 null ] >>
+endobj
+1820 0 obj
+<< /D [ 1812 0 R /XYZ 81.077 652.269 null ] >>
+endobj
+1821 0 obj
+<< /D [ 1812 0 R /XYZ 81.077 641.31 null ] >>
+endobj
+1822 0 obj
+<< /D [ 1812 0 R /XYZ 81.077 630.351 null ] >>
+endobj
+1823 0 obj
+<< /D [ 1812 0 R /XYZ 81.077 619.392 null ] >>
+endobj
+1824 0 obj
+<< /D [ 1812 0 R /XYZ 81.077 608.433 null ] >>
+endobj
+1825 0 obj
+<< /D [ 1812 0 R /XYZ 81.077 597.474 null ] >>
+endobj
+1826 0 obj
+<< /D [ 1812 0 R /XYZ 81.077 566.59 null ] >>
+endobj
+1827 0 obj
+<< /D [ 1812 0 R /XYZ 81.077 555.631 null ] >>
+endobj
+1828 0 obj
+<< /D [ 1812 0 R /XYZ 81.077 544.672 null ] >>
+endobj
+1829 0 obj
+<< /D [ 1812 0 R /XYZ 81.077 533.713 null ] >>
+endobj
+1830 0 obj
+<< /D [ 1812 0 R /XYZ 81.077 522.754 null ] >>
+endobj
+1831 0 obj
+<< /D [ 1812 0 R /XYZ 81.077 511.796 null ] >>
+endobj
+1832 0 obj
+<< /D [ 1812 0 R /XYZ 81.077 500.837 null ] >>
+endobj
+1833 0 obj
+<< /D [ 1812 0 R /XYZ 81.077 489.878 null ] >>
+endobj
+1834 0 obj
+<< /D [ 1812 0 R /XYZ 81.077 458.994 null ] >>
+endobj
+1835 0 obj
+<< /D [ 1812 0 R /XYZ 81.077 406.192 null ] >>
+endobj
+1836 0 obj
+<< /D [ 1812 0 R /XYZ 81.077 395.233 null ] >>
+endobj
+1837 0 obj
+<< /D [ 1812 0 R /XYZ 81.077 324.498 null ] >>
+endobj
+1838 0 obj
+<< /D [ 1812 0 R /XYZ 81.077 313.539 null ] >>
+endobj
+1839 0 obj
+<< /D [ 1812 0 R /XYZ 81.077 302.58 null ] >>
+endobj
+1840 0 obj
+<< /D [ 1812 0 R /XYZ 81.077 273.688 null ] >>
+endobj
+1841 0 obj
+<< /D [ 1812 0 R /XYZ 81.077 262.73 null ] >>
+endobj
+1842 0 obj
+<< /D [ 1812 0 R /XYZ 81.077 251.771 null ] >>
+endobj
+1843 0 obj
+<< /D [ 1812 0 R /XYZ 81.077 240.812 null ] >>
+endobj
+1844 0 obj
+<< /D [ 1812 0 R /XYZ 81.077 229.853 null ] >>
+endobj
+1845 0 obj
+<< /D [ 1812 0 R /XYZ 81.077 218.894 null ] >>
+endobj
+1846 0 obj
+<< /D [ 1812 0 R /XYZ 81.077 207.935 null ] >>
+endobj
+1847 0 obj
+<< /D [ 1812 0 R /XYZ 81.077 196.976 null ] >>
+endobj
+1848 0 obj
+<< /D [ 1812 0 R /XYZ 81.077 181.036 null ] >>
+endobj
+1849 0 obj
+<< /D [ 1812 0 R /XYZ 81.077 170.077 null ] >>
+endobj
+1850 0 obj
+<< /D [ 1812 0 R /XYZ 81.077 139.193 null ] >>
+endobj
+1851 0 obj
+<< /D [ 1812 0 R /XYZ 81.077 128.234 null ] >>
+endobj
+1852 0 obj
+<< /D [ 1812 0 R /XYZ 81.077 117.275 null ] >>
+endobj
+1853 0 obj
+<< /D [ 1812 0 R /XYZ 81.077 106.316 null ] >>
+endobj
+1854 0 obj
+<< /D [ 1812 0 R /XYZ 81.077 95.357 null ] >>
+endobj
+1855 0 obj
+<< /D [ 1812 0 R /XYZ 81.077 84.398 null ] >>
+endobj
+1811 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F20 186 0 R /F19 184 0 R /F73 189 0 R /F69 183 0 R /F70 185 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+1858 0 obj
+<< /Filter /FlateDecode /Length 1976 >>
+stream
+xZ]o}ϯ[a%4E@zشJJiC}Фn}dIGs8̜Bg}wE#I˫ۻT$1 >[n<DglQ,lsd*23MRB`#g&dg϶U^.ó7M<Xw/M(a{G4D;2}m?˾n+4#a3J.cВQاOÅ/o\Qu}'WõO'?OP&LK?Ts~*u s64J 0FDJy2.jѶIm. 0[z }&%LD4 #6#)\jom<)CcGnEw](,oY)N9_s:OdjG<ml]Apx(mx #2B >YuMVl2w2٭4I 1_<A~C0gs}aJ4,|lj"oT&Z+To_TvGSW"7jbq0Bm네L{۸rslxELRIR?҂,㽠'zsacAz}{
+[0Ds#.Mu]WKCBCO*Pk.BӐHmKT@Fl95f H$;k-z9d69Q|佔nVnuƷiqGvY!+bNeQHD| d/P(W aO^Gc[<O5aOtxs3h@p{ ]S7(KQ~L[M4[>=[@t~`r!mh+&JB'NkYyfgX٪,ƾÓ$TN8B UД$vЁ?X* :tV&TyWnЎiyP#B?ٶ6O׾3 q&FA}Yg &D*!o?OhGKFo&p<DmULo QnQ1_O38i> $}T94B:0
+$Pd';yrg
+ھ>9D-
+endstream
+endobj
+1857 0 obj
+<< /Type /Page /Contents 1858 0 R /Resources 1856 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1810 0 R >>
+endobj
+1859 0 obj
+<< /D [ 1857 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+1860 0 obj
+<< /D [ 1857 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+1861 0 obj
+<< /D [ 1857 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+1862 0 obj
+<< /D [ 1857 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+1863 0 obj
+<< /D [ 1857 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+1864 0 obj
+<< /D [ 1857 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+1865 0 obj
+<< /D [ 1857 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+1866 0 obj
+<< /D [ 1857 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+1867 0 obj
+<< /D [ 1857 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+1868 0 obj
+<< /D [ 1857 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+1869 0 obj
+<< /D [ 1857 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+1870 0 obj
+<< /D [ 1857 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+1871 0 obj
+<< /D [ 1857 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+1872 0 obj
+<< /D [ 1857 0 R /XYZ 81.077 637.325 null ] >>
+endobj
+1873 0 obj
+<< /D [ 1857 0 R /XYZ 81.077 626.366 null ] >>
+endobj
+1874 0 obj
+<< /D [ 1857 0 R /XYZ 81.077 615.407 null ] >>
+endobj
+1875 0 obj
+<< /D [ 1857 0 R /XYZ 81.077 604.448 null ] >>
+endobj
+1876 0 obj
+<< /D [ 1857 0 R /XYZ 81.077 593.489 null ] >>
+endobj
+1877 0 obj
+<< /D [ 1857 0 R /XYZ 81.077 582.53 null ] >>
+endobj
+1878 0 obj
+<< /D [ 1857 0 R /XYZ 81.077 571.571 null ] >>
+endobj
+1879 0 obj
+<< /D [ 1857 0 R /XYZ 81.077 530.725 null ] >>
+endobj
+1880 0 obj
+<< /D [ 1857 0 R /XYZ 81.077 499.84 null ] >>
+endobj
+1881 0 obj
+<< /D [ 1857 0 R /XYZ 81.077 488.882 null ] >>
+endobj
+1882 0 obj
+<< /D [ 1857 0 R /XYZ 81.077 477.923 null ] >>
+endobj
+1883 0 obj
+<< /D [ 1857 0 R /XYZ 81.077 466.964 null ] >>
+endobj
+1884 0 obj
+<< /D [ 1857 0 R /XYZ 81.077 456.005 null ] >>
+endobj
+1885 0 obj
+<< /D [ 1857 0 R /XYZ 81.077 445.046 null ] >>
+endobj
+1886 0 obj
+<< /D [ 1857 0 R /XYZ 81.077 434.087 null ] >>
+endobj
+1887 0 obj
+<< /D [ 1857 0 R /XYZ 81.077 423.128 null ] >>
+endobj
+1888 0 obj
+<< /D [ 1857 0 R /XYZ 81.077 412.169 null ] >>
+endobj
+1889 0 obj
+<< /D [ 1857 0 R /XYZ 81.077 401.21 null ] >>
+endobj
+1890 0 obj
+<< /D [ 1857 0 R /XYZ 81.077 390.251 null ] >>
+endobj
+1891 0 obj
+<< /D [ 1857 0 R /XYZ 81.077 379.292 null ] >>
+endobj
+1892 0 obj
+<< /D [ 1857 0 R /XYZ 81.077 336.453 null ] >>
+endobj
+1893 0 obj
+<< /D [ 1857 0 R /XYZ 81.077 325.494 null ] >>
+endobj
+1894 0 obj
+<< /D [ 1857 0 R /XYZ 81.077 314.535 null ] >>
+endobj
+1895 0 obj
+<< /D [ 1857 0 R /XYZ 81.077 303.576 null ] >>
+endobj
+1896 0 obj
+<< /D [ 1857 0 R /XYZ 81.077 292.618 null ] >>
+endobj
+1897 0 obj
+<< /D [ 1857 0 R /XYZ 81.077 281.659 null ] >>
+endobj
+1898 0 obj
+<< /D [ 1857 0 R /XYZ 81.077 270.7 null ] >>
+endobj
+1899 0 obj
+<< /D [ 1857 0 R /XYZ 81.077 259.741 null ] >>
+endobj
+1900 0 obj
+<< /D [ 1857 0 R /XYZ 81.077 248.782 null ] >>
+endobj
+1901 0 obj
+<< /D [ 1857 0 R /XYZ 81.077 237.823 null ] >>
+endobj
+1902 0 obj
+<< /D [ 1857 0 R /XYZ 81.077 196.976 null ] >>
+endobj
+1903 0 obj
+<< /D [ 1857 0 R /XYZ 81.077 186.017 null ] >>
+endobj
+1904 0 obj
+<< /D [ 1857 0 R /XYZ 81.077 175.058 null ] >>
+endobj
+1905 0 obj
+<< /D [ 1857 0 R /XYZ 81.077 159.118 null ] >>
+endobj
+1906 0 obj
+<< /D [ 1857 0 R /XYZ 81.077 148.159 null ] >>
+endobj
+1907 0 obj
+<< /D [ 1857 0 R /XYZ 81.077 137.2 null ] >>
+endobj
+1908 0 obj
+<< /D [ 1857 0 R /XYZ 81.077 126.241 null ] >>
+endobj
+1909 0 obj
+<< /D [ 1857 0 R /XYZ 81.077 115.283 null ] >>
+endobj
+1910 0 obj
+<< /D [ 1857 0 R /XYZ 81.077 104.324 null ] >>
+endobj
+1856 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F76 318 0 R /F20 186 0 R /F78 556 0 R /F46 176 0 R /F23 660 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+1915 0 obj
+<< /Filter /FlateDecode /Length 2722 >>
+stream
+xZ[o6~ϯ 4,ӝ.) Efl!J$oCREX`˔>xO7a~NRJ*dxCI"LId2N~16m]<h2o?LpD"¹j]e6$Mآq.Oͦ2B i^n.;_=
+6&
+6 JILϛEs]:q>=
+{~a[%eb FE6p¯-ǭM1JX4?>}ӳ4da1(^$N!;YJVMU:D;Yy2QӲ.dU^u
+# O("|o,#`$$D
+?>5˟ʖz9dm}\TDkdP$2D$04k d! վu
+ AJ_-Fe!:,þ#(!ذ$r1/bd &
+FJm4 !S=\C%˨ ]`ETM8fut3`9ks3v_]),l!'Xa^V6ۜ
+/b/ ʆ2<\PD'iE( 0)R9d
+V>Zg,DP;
+@*TKZ!{" U%dŴɶU'Z0"6_=~!
+ eEF\rY7rXp
+e
+ь]4BHBےd$#ʦ1-QJvn[GGx.;
+KSNŴFiiT5@G{/.' a"Ny扤7Iހs]jG3k 1&Yԫ
+c6ҶR@Ҿ5jz>! K ׬o,8`dx,ٓ= EŸ۵K|
+endstream
+endobj
+1914 0 obj
+<< /Type /Page /Contents 1915 0 R /Resources 1913 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1810 0 R /Annots 1962 0 R >>
+endobj
+1962 0 obj
+[ 1911 0 R 1912 0 R ]
+endobj
+1911 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 163.914 250.974 170.376 260.973 ]/A << /S /GoTo /D (Hfootnote.4) >> >>
+endobj
+1912 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 409.702 120.242 416.164 132.455 ]/A << /S /GoTo /D (Hfootnote.5) >> >>
+endobj
+1916 0 obj
+<< /D [ 1914 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+1917 0 obj
+<< /D [ 1914 0 R /XYZ 81.077 754.884 null ] >>
+endobj
+1918 0 obj
+<< /D [ 1914 0 R /XYZ 81.077 743.925 null ] >>
+endobj
+1919 0 obj
+<< /D [ 1914 0 R /XYZ 81.077 732.966 null ] >>
+endobj
+1920 0 obj
+<< /D [ 1914 0 R /XYZ 81.077 722.007 null ] >>
+endobj
+1921 0 obj
+<< /D [ 1914 0 R /XYZ 81.077 711.048 null ] >>
+endobj
+1922 0 obj
+<< /D [ 1914 0 R /XYZ 81.077 700.089 null ] >>
+endobj
+1923 0 obj
+<< /D [ 1914 0 R /XYZ 81.077 689.131 null ] >>
+endobj
+1924 0 obj
+<< /D [ 1914 0 R /XYZ 81.077 678.172 null ] >>
+endobj
+1925 0 obj
+<< /D [ 1914 0 R /XYZ 81.077 667.213 null ] >>
+endobj
+1926 0 obj
+<< /D [ 1914 0 R /XYZ 81.077 656.254 null ] >>
+endobj
+1927 0 obj
+<< /D [ 1914 0 R /XYZ 81.077 640.314 null ] >>
+endobj
+1928 0 obj
+<< /D [ 1914 0 R /XYZ 81.077 629.355 null ] >>
+endobj
+1929 0 obj
+<< /D [ 1914 0 R /XYZ 81.077 618.396 null ] >>
+endobj
+1930 0 obj
+<< /D [ 1914 0 R /XYZ 81.077 607.437 null ] >>
+endobj
+1931 0 obj
+<< /D [ 1914 0 R /XYZ 81.077 576.553 null ] >>
+endobj
+1932 0 obj
+<< /D [ 1914 0 R /XYZ 81.077 565.594 null ] >>
+endobj
+1933 0 obj
+<< /D [ 1914 0 R /XYZ 81.077 554.635 null ] >>
+endobj
+1934 0 obj
+<< /D [ 1914 0 R /XYZ 81.077 543.676 null ] >>
+endobj
+1935 0 obj
+<< /D [ 1914 0 R /XYZ 81.077 512.792 null ] >>
+endobj
+1936 0 obj
+<< /D [ 1914 0 R /XYZ 81.077 501.833 null ] >>
+endobj
+1937 0 obj
+<< /D [ 1914 0 R /XYZ 81.077 490.874 null ] >>
+endobj
+1938 0 obj
+<< /D [ 1914 0 R /XYZ 81.077 479.915 null ] >>
+endobj
+1939 0 obj
+<< /D [ 1914 0 R /XYZ 81.077 468.956 null ] >>
+endobj
+1940 0 obj
+<< /D [ 1914 0 R /XYZ 81.077 457.997 null ] >>
+endobj
+1941 0 obj
+<< /D [ 1914 0 R /XYZ 81.077 447.038 null ] >>
+endobj
+1942 0 obj
+<< /D [ 1914 0 R /XYZ 81.077 436.08 null ] >>
+endobj
+1943 0 obj
+<< /D [ 1914 0 R /XYZ 81.077 425.121 null ] >>
+endobj
+1944 0 obj
+<< /D [ 1914 0 R /XYZ 81.077 414.162 null ] >>
+endobj
+1945 0 obj
+<< /D [ 1914 0 R /XYZ 81.077 403.203 null ] >>
+endobj
+1946 0 obj
+<< /D [ 1914 0 R /XYZ 81.077 392.244 null ] >>
+endobj
+1947 0 obj
+<< /D [ 1914 0 R /XYZ 81.077 381.285 null ] >>
+endobj
+1948 0 obj
+<< /D [ 1914 0 R /XYZ 81.077 370.326 null ] >>
+endobj
+1949 0 obj
+<< /D [ 1914 0 R /XYZ 81.077 359.367 null ] >>
+endobj
+1950 0 obj
+<< /D [ 1914 0 R /XYZ 81.077 348.408 null ] >>
+endobj
+1951 0 obj
+<< /D [ 1914 0 R /XYZ 81.077 245.793 null ] >>
+endobj
+1952 0 obj
+<< /D [ 1914 0 R /XYZ 81.077 234.834 null ] >>
+endobj
+1953 0 obj
+<< /D [ 1914 0 R /XYZ 81.077 223.875 null ] >>
+endobj
+1954 0 obj
+<< /D [ 1914 0 R /XYZ 81.077 212.916 null ] >>
+endobj
+1955 0 obj
+<< /D [ 1914 0 R /XYZ 81.077 201.957 null ] >>
+endobj
+1956 0 obj
+<< /D [ 1914 0 R /XYZ 81.077 190.999 null ] >>
+endobj
+1957 0 obj
+<< /D [ 1914 0 R /XYZ 81.077 180.04 null ] >>
+endobj
+1958 0 obj
+<< /D [ 1914 0 R /XYZ 81.077 169.081 null ] >>
+endobj
+1959 0 obj
+<< /D [ 1914 0 R /XYZ 81.077 158.122 null ] >>
+endobj
+1960 0 obj
+<< /D [ 1914 0 R /XYZ 94.613 100.167 null ] >>
+endobj
+1961 0 obj
+<< /D [ 1914 0 R /XYZ 94.613 90.702 null ] >>
+endobj
+1913 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F20 186 0 R /F73 189 0 R /F69 183 0 R /F70 185 0 R /F76 318 0 R /F22 473 0 R /F77 480 0 R /F63 205 0 R /F81 768 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+1965 0 obj
+<< /Filter /FlateDecode /Length 2471 >>
+stream
+xڽZo~߿og",3JJ`IYDC_lҐ 3ߌ,d˧O_^hlq ÍdR#*R`/W“aLޒ)ClEiK-_zX .huUeJ\n`N͏ˢjMә_ 0gb>gM5$dHrUyXΌmQUE7r_5Ng͓9J0KkiC"'ƒ{yJL/_~!Bbo_;$̀G6
+*"+?'}Zq*ٺ4mdW ˢ,f2oJy;P.T+"]̮)le-j=pc;\>M]vQ ;Lu
+#/[;nI+$4EN$AFAņ3`H+LX\ $0 cDҘ 'O_^(X[@[,HP۴2!TpӶޛ4thId52`үk FI$XzmMw{7263miS?N)x4<s{7hդS$NrrOVNH0qʍʥ?wwo޻%c,=a]z`Vu& !XW58cxeS>(K_WcK1(ǣBl }25,+|ғG'˼v b3T HrN'CcRK0_Ң!I.r<*Ҝp׻"7(~+_MYi;8 4dkg
+ 8yc9@ rFH[ }Yu]u\LإW }yiư ,c*CRq+Xg:kaqH4~
+*Z}1c8)FJ`>ؙ~5/_a)>lUԇEḚ *n#:k{͛еKiSzux+)tg L7'?U0e_]YqċlHG*gH1I.]Ip\k,ZZ'i3y"S.6COoDZC~gCAĠX<T33e0~ TO~^8|?8{Ғ& BJNWH8~eQrzeQKI]X -?{} |:qXpY\PS!IQW -1+Hy۷eg}aRL)CL77ָZ
+:
+M?NŠCoC2l͓m*^66AhH_QFl=3emZP"֛ԆDPA{ͯD͓i^fz+!PIa^PB*@Pҿ?8#ޜ@+"2+n+pX/u\sXۑ؍ 2 Dz`TW|ǾK 6-Bh>!9ָh /̔hZF!dIMΙ#t4ؐDD@Zy.bBc qTz㭃RbXDQ@=j}ȴa i]E#ݺt uY
+?lqB?6
+endstream
+endobj
+1964 0 obj
+<< /Type /Page /Contents 1965 0 R /Resources 1963 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1810 0 R >>
+endobj
+1966 0 obj
+<< /D [ 1964 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+1967 0 obj
+<< /D [ 1964 0 R /XYZ 81.077 719.019 null ] >>
+endobj
+1968 0 obj
+<< /D [ 1964 0 R /XYZ 81.077 708.06 null ] >>
+endobj
+1969 0 obj
+<< /D [ 1964 0 R /XYZ 81.077 697.101 null ] >>
+endobj
+1970 0 obj
+<< /D [ 1964 0 R /XYZ 81.077 686.142 null ] >>
+endobj
+1971 0 obj
+<< /D [ 1964 0 R /XYZ 81.077 675.183 null ] >>
+endobj
+1972 0 obj
+<< /D [ 1964 0 R /XYZ 81.077 664.224 null ] >>
+endobj
+1973 0 obj
+<< /D [ 1964 0 R /XYZ 81.077 653.265 null ] >>
+endobj
+1974 0 obj
+<< /D [ 1964 0 R /XYZ 81.077 642.306 null ] >>
+endobj
+1975 0 obj
+<< /D [ 1964 0 R /XYZ 81.077 631.347 null ] >>
+endobj
+1976 0 obj
+<< /D [ 1964 0 R /XYZ 81.077 576.553 null ] >>
+endobj
+1977 0 obj
+<< /D [ 1964 0 R /XYZ 81.077 565.594 null ] >>
+endobj
+1978 0 obj
+<< /D [ 1964 0 R /XYZ 81.077 534.71 null ] >>
+endobj
+1979 0 obj
+<< /D [ 1964 0 R /XYZ 81.077 518.769 null ] >>
+endobj
+1980 0 obj
+<< /D [ 1964 0 R /XYZ 81.077 507.811 null ] >>
+endobj
+1981 0 obj
+<< /D [ 1964 0 R /XYZ 81.077 496.852 null ] >>
+endobj
+1982 0 obj
+<< /D [ 1964 0 R /XYZ 81.077 485.893 null ] >>
+endobj
+1983 0 obj
+<< /D [ 1964 0 R /XYZ 81.077 474.934 null ] >>
+endobj
+1984 0 obj
+<< /D [ 1964 0 R /XYZ 81.077 420.139 null ] >>
+endobj
+1985 0 obj
+<< /D [ 1964 0 R /XYZ 81.077 409.18 null ] >>
+endobj
+1986 0 obj
+<< /D [ 1964 0 R /XYZ 81.077 393.24 null ] >>
+endobj
+1987 0 obj
+<< /D [ 1964 0 R /XYZ 81.077 382.281 null ] >>
+endobj
+1988 0 obj
+<< /D [ 1964 0 R /XYZ 81.077 351.397 null ] >>
+endobj
+1989 0 obj
+<< /D [ 1964 0 R /XYZ 81.077 340.438 null ] >>
+endobj
+1990 0 obj
+<< /D [ 1964 0 R /XYZ 81.077 309.554 null ] >>
+endobj
+1991 0 obj
+<< /D [ 1964 0 R /XYZ 81.077 298.595 null ] >>
+endobj
+1992 0 obj
+<< /D [ 1964 0 R /XYZ 81.077 287.636 null ] >>
+endobj
+1993 0 obj
+<< /D [ 1964 0 R /XYZ 81.077 276.677 null ] >>
+endobj
+1994 0 obj
+<< /D [ 1964 0 R /XYZ 81.077 265.718 null ] >>
+endobj
+1995 0 obj
+<< /D [ 1964 0 R /XYZ 81.077 254.759 null ] >>
+endobj
+1996 0 obj
+<< /D [ 1964 0 R /XYZ 81.077 243.801 null ] >>
+endobj
+1997 0 obj
+<< /D [ 1964 0 R /XYZ 81.077 232.842 null ] >>
+endobj
+1998 0 obj
+<< /D [ 1964 0 R /XYZ 81.077 166.092 null ] >>
+endobj
+1999 0 obj
+<< /D [ 1964 0 R /XYZ 81.077 155.133 null ] >>
+endobj
+2000 0 obj
+<< /D [ 1964 0 R /XYZ 81.077 144.174 null ] >>
+endobj
+2001 0 obj
+<< /D [ 1964 0 R /XYZ 81.077 133.215 null ] >>
+endobj
+2002 0 obj
+<< /D [ 1964 0 R /XYZ 81.077 122.256 null ] >>
+endobj
+2003 0 obj
+<< /D [ 1964 0 R /XYZ 81.077 111.297 null ] >>
+endobj
+2004 0 obj
+<< /D [ 1964 0 R /XYZ 81.077 100.339 null ] >>
+endobj
+2005 0 obj
+<< /D [ 1964 0 R /XYZ 81.077 89.38 null ] >>
+endobj
+1963 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F70 185 0 R /F20 186 0 R /F73 189 0 R /F69 183 0 R /F76 318 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+2008 0 obj
+<< /Filter /FlateDecode /Length 2484 >>
+stream
+xڭZ]o6}_a/
+`vv1va(%$'M{)JhrC"/{^w}DE! n@^ C-|ij 67bƫ1?uz w" SD5YYڥv)Q}ٶQ ~Pҧ+*j >4.n$HS:ݣ@/qd,!Cj[dW嶊wѲe<xn9{qO>W4
+kSКV?y޽l5u$AWWU_rXн$ywlR.IqٷD;6#% -8at W!
+ 4"B4 qh^o?BA!Sc0 ԓzU*rs{{Tu*x(ĥ1Zy C0DƁCb1ETt.ifd$bpmwzPM神Y5EX;p=wpQAYyڤū!^'}i.Uq{N&nJ}YkN5Xt2,pۑS?J,l58 (Mu&ugO$L-N]
+|פE;*rȪt %&lo^An[`eh&ol;Bȹ%LțeG"ң^A*$OtН; n"]OiT<:~hMiVUy3&73 a
+ ?b#pgܥL?0o~ocok p
+aMHjSRVG%G-_\J=c09m+
+hqY${QlD\lRBVTtKbR 6y.57Eln,xڔ! :鲹G<T.b+p"'ڒ SI<ؤw>Nt|{ D$(0-I LhDwݧzK̜7<6/ +uG>9/~#Ӧo(Fe}^g:]1ƒ/"xu&.d_qK>|fjcj]Y|CPٔ/͎g (9~hMB'lss{qt[7
+qvpQncvzE4h!j䖥cs;(!:@`с71
+<}pe*B\؄>?*'t<ן'dY(`V69lvĚ ii #m?].j].8=AWTpWOqs7c<_p DŽ?& 9Vc<F}^&߶ğ,Hr+OyUč;M?]LTB>OEKY7UCS0RS:}07~Έ|Wmx
+i
+mAO:ǡD_O:N{zY/)ҕCHq'Oyʷen߼8B+ꬦp? t)|WN/Xu#O`ͤNv~mq[%{ɡnݪ|/ޤ@XZa~~5aJSU~ qqno7ןN(DO6DyRGRoKWM|ʛ;f`a>RS}\$D ̼~z="2IOD$<5 1>U~*bqN;DM|Uc:Zm[ !6l O9ȡ'Glon}gU<Vp_&TAaTxP
+.ldz Hߑ?<h8'AeFJYȵ$,w[w `Btw>ўޚ6}f;M>簻pcI
+8HE:2)ckG{JA}Uo`o5Ź)7+ۈQDVeӻRs_;?}8Hz1Hks(OmSr)ͭ}¡41mi&G"r\0kh$@`70Al [q5i{]cgrP+DΠmV9eHs|7=$Wbq]#u'g)"h8?=}ng]IOum[N0™Ql7{Q9 @q/7^m(
+endstream
+endobj
+2007 0 obj
+<< /Type /Page /Contents 2008 0 R /Resources 2006 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1810 0 R >>
+endobj
+2009 0 obj
+<< /D [ 2007 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+2010 0 obj
+<< /D [ 2007 0 R /XYZ 81.077 742.929 null ] >>
+endobj
+2011 0 obj
+<< /D [ 2007 0 R /XYZ 81.077 731.97 null ] >>
+endobj
+2012 0 obj
+<< /D [ 2007 0 R /XYZ 81.077 721.011 null ] >>
+endobj
+2013 0 obj
+<< /D [ 2007 0 R /XYZ 81.077 710.052 null ] >>
+endobj
+2014 0 obj
+<< /D [ 2007 0 R /XYZ 81.077 669.205 null ] >>
+endobj
+2015 0 obj
+<< /D [ 2007 0 R /XYZ 81.077 658.246 null ] >>
+endobj
+2016 0 obj
+<< /D [ 2007 0 R /XYZ 81.077 647.288 null ] >>
+endobj
+2017 0 obj
+<< /D [ 2007 0 R /XYZ 81.077 636.329 null ] >>
+endobj
+2018 0 obj
+<< /D [ 2007 0 R /XYZ 81.077 625.37 null ] >>
+endobj
+2019 0 obj
+<< /D [ 2007 0 R /XYZ 81.077 614.411 null ] >>
+endobj
+2020 0 obj
+<< /D [ 2007 0 R /XYZ 81.077 603.452 null ] >>
+endobj
+2021 0 obj
+<< /D [ 2007 0 R /XYZ 81.077 592.493 null ] >>
+endobj
+2022 0 obj
+<< /D [ 2007 0 R /XYZ 81.077 581.534 null ] >>
+endobj
+2023 0 obj
+<< /D [ 2007 0 R /XYZ 81.077 570.575 null ] >>
+endobj
+2024 0 obj
+<< /D [ 2007 0 R /XYZ 81.077 517.773 null ] >>
+endobj
+2025 0 obj
+<< /D [ 2007 0 R /XYZ 81.077 506.814 null ] >>
+endobj
+2026 0 obj
+<< /D [ 2007 0 R /XYZ 81.077 495.855 null ] >>
+endobj
+2027 0 obj
+<< /D [ 2007 0 R /XYZ 81.077 484.896 null ] >>
+endobj
+2028 0 obj
+<< /D [ 2007 0 R /XYZ 81.077 473.938 null ] >>
+endobj
+2029 0 obj
+<< /D [ 2007 0 R /XYZ 81.077 462.979 null ] >>
+endobj
+2030 0 obj
+<< /D [ 2007 0 R /XYZ 81.077 452.02 null ] >>
+endobj
+2031 0 obj
+<< /D [ 2007 0 R /XYZ 81.077 441.061 null ] >>
+endobj
+2032 0 obj
+<< /D [ 2007 0 R /XYZ 81.077 430.102 null ] >>
+endobj
+2033 0 obj
+<< /D [ 2007 0 R /XYZ 81.077 419.143 null ] >>
+endobj
+2034 0 obj
+<< /D [ 2007 0 R /XYZ 81.077 408.184 null ] >>
+endobj
+2035 0 obj
+<< /D [ 2007 0 R /XYZ 81.077 397.225 null ] >>
+endobj
+2036 0 obj
+<< /D [ 2007 0 R /XYZ 81.077 386.266 null ] >>
+endobj
+2037 0 obj
+<< /D [ 2007 0 R /XYZ 81.077 375.307 null ] >>
+endobj
+2038 0 obj
+<< /D [ 2007 0 R /XYZ 81.077 364.349 null ] >>
+endobj
+2039 0 obj
+<< /D [ 2007 0 R /XYZ 81.077 353.39 null ] >>
+endobj
+2040 0 obj
+<< /D [ 2007 0 R /XYZ 81.077 342.431 null ] >>
+endobj
+2041 0 obj
+<< /D [ 2007 0 R /XYZ 81.077 331.472 null ] >>
+endobj
+2042 0 obj
+<< /D [ 2007 0 R /XYZ 81.077 320.513 null ] >>
+endobj
+2043 0 obj
+<< /D [ 2007 0 R /XYZ 81.077 309.554 null ] >>
+endobj
+2044 0 obj
+<< /D [ 2007 0 R /XYZ 81.077 298.595 null ] >>
+endobj
+2045 0 obj
+<< /D [ 2007 0 R /XYZ 81.077 287.636 null ] >>
+endobj
+2046 0 obj
+<< /D [ 2007 0 R /XYZ 81.077 276.677 null ] >>
+endobj
+2047 0 obj
+<< /D [ 2007 0 R /XYZ 81.077 265.718 null ] >>
+endobj
+2048 0 obj
+<< /D [ 2007 0 R /XYZ 81.077 254.759 null ] >>
+endobj
+2049 0 obj
+<< /D [ 2007 0 R /XYZ 81.077 243.801 null ] >>
+endobj
+2050 0 obj
+<< /D [ 2007 0 R /XYZ 81.077 232.842 null ] >>
+endobj
+2051 0 obj
+<< /D [ 2007 0 R /XYZ 81.077 221.883 null ] >>
+endobj
+2052 0 obj
+<< /D [ 2007 0 R /XYZ 81.077 210.924 null ] >>
+endobj
+2053 0 obj
+<< /D [ 2007 0 R /XYZ 81.077 199.965 null ] >>
+endobj
+2054 0 obj
+<< /D [ 2007 0 R /XYZ 81.077 189.006 null ] >>
+endobj
+2055 0 obj
+<< /D [ 2007 0 R /XYZ 81.077 178.047 null ] >>
+endobj
+2056 0 obj
+<< /D [ 2007 0 R /XYZ 81.077 167.088 null ] >>
+endobj
+2057 0 obj
+<< /D [ 2007 0 R /XYZ 81.077 156.129 null ] >>
+endobj
+2058 0 obj
+<< /D [ 2007 0 R /XYZ 81.077 145.17 null ] >>
+endobj
+2059 0 obj
+<< /D [ 2007 0 R /XYZ 81.077 134.212 null ] >>
+endobj
+2060 0 obj
+<< /D [ 2007 0 R /XYZ 81.077 81.41 null ] >>
+endobj
+2006 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F20 186 0 R /F73 189 0 R /F69 183 0 R /F70 185 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+2063 0 obj
+<< /Filter /FlateDecode /Length 2865 >>
+stream
+xڭZs۸_31o~褽kCi`D:ۗI)ѹ"b /~y+~y׫7>((ӄ,DaIWD
+u߫_{^>lQ&%11)ԟwuyu{oWE6UU *T_;i&og T,6o{D=`Oӕ)uɪ\V;Ӯ̗viˢUYF+4a"dV-r5imꦽ\8>l#*yHe#eǛs&貽3lYƒםzF4vW]CRyi5R3 F pE~ߖu$?;zifܬk+ӈSiR.2r݄S,CZ,FB(ܪ`2o]^knZokP[]a
+o?|p6{\R96 aY %qBQwa2 ;;'|w
+#c)a~j5Z:dH)2F4GB1~V˽vbYwI9gz3͖IqHZ%6o˜WgT.۲O:﵌B ~nI5b,cN2 -=lQ4yEpF6흓ÿz&2 ;mfke5:nnǼ?f&c+plì"*yp)!4k/0ԨSF&V.:p'0As3qsgeͪYr^\^ laaUV`U--hU%o09TΐW ud}tq᏷yeIf)|KD&is pL"eծn@RN0$VH2k#iS\\F@xN):,(2*#gyFB=n Y~n5k&O@Ba
+ y٢~yڙ8]G|[rx>Z:ql}".%DdݚOxD Ky;$XqoH~ykmUk
+ڏn-Q=I?Cթ<LOQCzl#%<Y\h_BC h0C:āK0 |YMOoWoȉr=
+endstream
+endobj
+2062 0 obj
+<< /Type /Page /Contents 2063 0 R /Resources 2061 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1810 0 R >>
+endobj
+2064 0 obj
+<< /D [ 2062 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+2065 0 obj
+<< /D [ 2062 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+2066 0 obj
+<< /D [ 2062 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+2067 0 obj
+<< /D [ 2062 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+2068 0 obj
+<< /D [ 2062 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+2069 0 obj
+<< /D [ 2062 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+2070 0 obj
+<< /D [ 2062 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+2071 0 obj
+<< /D [ 2062 0 R /XYZ 81.077 637.325 null ] >>
+endobj
+2072 0 obj
+<< /D [ 2062 0 R /XYZ 81.077 626.366 null ] >>
+endobj
+2073 0 obj
+<< /D [ 2062 0 R /XYZ 81.077 615.407 null ] >>
+endobj
+2074 0 obj
+<< /D [ 2062 0 R /XYZ 81.077 604.448 null ] >>
+endobj
+2075 0 obj
+<< /D [ 2062 0 R /XYZ 81.077 593.489 null ] >>
+endobj
+2076 0 obj
+<< /D [ 2062 0 R /XYZ 81.077 528.732 null ] >>
+endobj
+2077 0 obj
+<< /D [ 2062 0 R /XYZ 81.077 517.773 null ] >>
+endobj
+2078 0 obj
+<< /D [ 2062 0 R /XYZ 81.077 476.926 null ] >>
+endobj
+2079 0 obj
+<< /D [ 2062 0 R /XYZ 81.077 424.124 null ] >>
+endobj
+2080 0 obj
+<< /D [ 2062 0 R /XYZ 81.077 371.322 null ] >>
+endobj
+2081 0 obj
+<< /D [ 2062 0 R /XYZ 81.077 355.382 null ] >>
+endobj
+2082 0 obj
+<< /D [ 2062 0 R /XYZ 81.077 339.442 null ] >>
+endobj
+2083 0 obj
+<< /D [ 2062 0 R /XYZ 81.077 290.625 null ] >>
+endobj
+2084 0 obj
+<< /D [ 2062 0 R /XYZ 81.077 279.666 null ] >>
+endobj
+2085 0 obj
+<< /D [ 2062 0 R /XYZ 81.077 268.707 null ] >>
+endobj
+2086 0 obj
+<< /D [ 2062 0 R /XYZ 81.077 257.748 null ] >>
+endobj
+2087 0 obj
+<< /D [ 2062 0 R /XYZ 81.077 246.789 null ] >>
+endobj
+2088 0 obj
+<< /D [ 2062 0 R /XYZ 81.077 235.83 null ] >>
+endobj
+2089 0 obj
+<< /D [ 2062 0 R /XYZ 81.077 210.924 null ] >>
+endobj
+2090 0 obj
+<< /D [ 2062 0 R /XYZ 81.077 199.965 null ] >>
+endobj
+2091 0 obj
+<< /D [ 2062 0 R /XYZ 81.077 189.006 null ] >>
+endobj
+2092 0 obj
+<< /D [ 2062 0 R /XYZ 81.077 134.212 null ] >>
+endobj
+2093 0 obj
+<< /D [ 2062 0 R /XYZ 81.077 123.253 null ] >>
+endobj
+2094 0 obj
+<< /D [ 2062 0 R /XYZ 81.077 112.294 null ] >>
+endobj
+2095 0 obj
+<< /D [ 2062 0 R /XYZ 81.077 101.335 null ] >>
+endobj
+2096 0 obj
+<< /D [ 2062 0 R /XYZ 81.077 90.376 null ] >>
+endobj
+2097 0 obj
+<< /D [ 2062 0 R /XYZ 81.077 79.417 null ] >>
+endobj
+2061 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F76 318 0 R /F26 662 0 R /F23 660 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+2100 0 obj
+<< /Filter /FlateDecode /Length 2596 >>
+stream
+xڵ]o}t2OZ]y
+pBPl:QW|dEcދ-O gJtx^hSbq@a"]E $Utq]+u,ox&άʺ,a.E$ZGE]CQPtKQ5#,1I!Y'*^~\$#@: iSLhxWIdY.Y<,oti7(tB*k
+{[{z0^ n{'?7T0Gg-Kx33\lH,i)h
+Rz@^KKéP4*"d,<WTzBDSzSz'zTw)[κa*>
+`<)7yB HnwU]U8C)xh|!)gsrEpZft#`ȥ`)ɸc@ 6w=(ov/h12'1ubDV6fWDжuћ{Kݢ@h b<mzͶY*60+R`C/JAǷwEA淢6
+@yNu_WU+m~%xDdieWdR$ BjsQazлqSNܨ (X+>m]9>C"zAGA+SŃy <DRynmHC]iv&+8͉IBkWv볤uypclb 6H0Ojz8RW(0&V,KQ>n %gZIЮj28LwV ){@l:>LO㒔
+i37t2иT$5|;w*cMn/{}\Wp|搛dPu&6gv\J(s|7/(Մ1b@>֮͏s>ɤ .(Q/<Ns* d(Qǭy5kOεwuju;Y*8pk2]xէ90%!#mU^mX% eHRǒC 8ѷ,[( -]KA;0
+|,ӇKDk ޲v$ {w7&[tNG&xmDu[e+&T_!6FGW ʇ.KGu}oܚʯ}7ܙ1Je sl0OA әT⧏n"ВgSJETP/8Qh/ku"oZovz{ӬƋ\_p-x,GIvB v!2*vcFјvdKcrտfĵHKt!QȡX6;BXƧCT ĥ㒨X|ȼ{Jcim]Y6{A:^vG_
+P?|qvs8$<WB=blgbX2[
+z9pֵ;L-7ҙbv-Í}[ys6O,`:j4
+ؔ<݊*{W}y>fSΉurHq(ʰRR!o%P
+̖EGV> ;n(9S֐RE1yT;}" qyAsQU)ƒ!Q|gѦgD%Q8~S7Ԍ(P_|
+endstream
+endobj
+2099 0 obj
+<< /Type /Page /Contents 2100 0 R /Resources 2098 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1810 0 R >>
+endobj
+2101 0 obj
+<< /D [ 2099 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+2102 0 obj
+<< /D [ 2099 0 R /XYZ 81.077 695.108 null ] >>
+endobj
+2103 0 obj
+<< /D [ 2099 0 R /XYZ 81.077 684.149 null ] >>
+endobj
+2104 0 obj
+<< /D [ 2099 0 R /XYZ 81.077 673.19 null ] >>
+endobj
+2105 0 obj
+<< /D [ 2099 0 R /XYZ 81.077 662.231 null ] >>
+endobj
+2106 0 obj
+<< /D [ 2099 0 R /XYZ 81.077 651.273 null ] >>
+endobj
+2107 0 obj
+<< /D [ 2099 0 R /XYZ 81.077 640.314 null ] >>
+endobj
+2108 0 obj
+<< /D [ 2099 0 R /XYZ 81.077 629.355 null ] >>
+endobj
+2109 0 obj
+<< /D [ 2099 0 R /XYZ 81.077 618.396 null ] >>
+endobj
+2110 0 obj
+<< /D [ 2099 0 R /XYZ 81.077 607.437 null ] >>
+endobj
+2111 0 obj
+<< /D [ 2099 0 R /XYZ 81.077 596.478 null ] >>
+endobj
+2112 0 obj
+<< /D [ 2099 0 R /XYZ 81.077 585.519 null ] >>
+endobj
+2113 0 obj
+<< /D [ 2099 0 R /XYZ 81.077 532.717 null ] >>
+endobj
+2114 0 obj
+<< /D [ 2099 0 R /XYZ 81.077 521.758 null ] >>
+endobj
+2115 0 obj
+<< /D [ 2099 0 R /XYZ 81.077 510.799 null ] >>
+endobj
+2116 0 obj
+<< /D [ 2099 0 R /XYZ 81.077 499.84 null ] >>
+endobj
+2117 0 obj
+<< /D [ 2099 0 R /XYZ 81.077 488.882 null ] >>
+endobj
+2118 0 obj
+<< /D [ 2099 0 R /XYZ 81.077 477.923 null ] >>
+endobj
+2119 0 obj
+<< /D [ 2099 0 R /XYZ 81.077 466.964 null ] >>
+endobj
+2120 0 obj
+<< /D [ 2099 0 R /XYZ 81.077 456.005 null ] >>
+endobj
+2121 0 obj
+<< /D [ 2099 0 R /XYZ 81.077 445.046 null ] >>
+endobj
+2122 0 obj
+<< /D [ 2099 0 R /XYZ 81.077 434.087 null ] >>
+endobj
+2123 0 obj
+<< /D [ 2099 0 R /XYZ 81.077 403.203 null ] >>
+endobj
+2124 0 obj
+<< /D [ 2099 0 R /XYZ 81.077 392.244 null ] >>
+endobj
+2125 0 obj
+<< /D [ 2099 0 R /XYZ 81.077 349.405 null ] >>
+endobj
+2126 0 obj
+<< /D [ 2099 0 R /XYZ 81.077 284.647 null ] >>
+endobj
+2127 0 obj
+<< /D [ 2099 0 R /XYZ 81.077 255.756 null ] >>
+endobj
+2128 0 obj
+<< /D [ 2099 0 R /XYZ 81.077 244.797 null ] >>
+endobj
+2129 0 obj
+<< /D [ 2099 0 R /XYZ 81.077 156.129 null ] >>
+endobj
+2130 0 obj
+<< /D [ 2099 0 R /XYZ 81.077 95.44 null ] >>
+endobj
+2098 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F20 186 0 R /F76 318 0 R /F70 185 0 R /F73 189 0 R /F69 183 0 R /F46 176 0 R /F23 660 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+2133 0 obj
+<< /Filter /FlateDecode /Length 2257 >>
+stream
+xڽZKϯ0
+,v (b/74ʚRVPq"Q713ҘSg.^U_Y?҆`dbW@Y =1&nԮüY~Fb~تΠg"zOv7Ȝ_eYoZ+_ϪDQE{0E4lxI?1ʋ|=jΊvJYk9&2Q}8&(G`q`9 PuKWM}JإF) FEbDJo"m{J8#TՕq.q\}pn4NM``y\D#FvF!q_Lr@ESMA8̟lξۋ>d>:|s&>/۵ B9 4eF wV* ,ė
+ժn\v(asͣ?O#zkqdw'5xB#H-֕Z_G%wCR?j蚕a$\O̕mwEqQj=x)b
+{\YB]7GE_ڕn| m+=l F,a_"Ӊli~
+&Ig)XqA>xQ™?E^7:U8Ax(6ھ4LUi)֕b_}Չ AIlv8Ϩ0`3ؔhkpUAﳦNfaqx^֭ĹujPgTSȴ7Rgxyb!DYW\2DxPIo[=]2 &P~@j6kTWDGdPDsSV_uYuI?{ikyБl4%NbS6i?t[7uen.k
+GzJ
+&,ZQ4J~!a_V7}Sw*:j )HO)DQ~Zh  B&O:1*w
+2({Ҧ-ՇH}<tzhDhf5R}5jQ-ҘJ߲Iy`$Q,5_vj%gl
+a &OgyV`iϪݞ {C܉&1toUSgbQ"S%}9ETj0IGW]^QG|ΧDJ9CΆ9K~ו>ķpl7co%ZZ[QP
+ o ȔλljSrs/: GkB.fm@ZT'r$%ax<')>DT|awx{ة1 Zje4?g&auIk[ ?Zh<%ܗ7O&4b7ωs#Ow=c+`K4`:D1qO`j 3#oR$h
+endstream
+endobj
+2132 0 obj
+<< /Type /Page /Contents 2133 0 R /Resources 2131 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1810 0 R >>
+endobj
+2134 0 obj
+<< /D [ 2132 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+2135 0 obj
+<< /D [ 2132 0 R /XYZ 81.077 742.929 null ] >>
+endobj
+2136 0 obj
+<< /D [ 2132 0 R /XYZ 81.077 696.104 null ] >>
+endobj
+2137 0 obj
+<< /D [ 2132 0 R /XYZ 81.077 685.146 null ] >>
+endobj
+2138 0 obj
+<< /D [ 2132 0 R /XYZ 81.077 674.187 null ] >>
+endobj
+2139 0 obj
+<< /D [ 2132 0 R /XYZ 81.077 663.228 null ] >>
+endobj
+2140 0 obj
+<< /D [ 2132 0 R /XYZ 81.077 634.336 null ] >>
+endobj
+2141 0 obj
+<< /D [ 2132 0 R /XYZ 81.077 623.377 null ] >>
+endobj
+2142 0 obj
+<< /D [ 2132 0 R /XYZ 81.077 612.418 null ] >>
+endobj
+2143 0 obj
+<< /D [ 2132 0 R /XYZ 81.077 601.459 null ] >>
+endobj
+2144 0 obj
+<< /D [ 2132 0 R /XYZ 81.077 590.5 null ] >>
+endobj
+2145 0 obj
+<< /D [ 2132 0 R /XYZ 81.077 579.542 null ] >>
+endobj
+2146 0 obj
+<< /D [ 2132 0 R /XYZ 81.077 568.583 null ] >>
+endobj
+2147 0 obj
+<< /D [ 2132 0 R /XYZ 81.077 557.624 null ] >>
+endobj
+2148 0 obj
+<< /D [ 2132 0 R /XYZ 81.077 546.665 null ] >>
+endobj
+2149 0 obj
+<< /D [ 2132 0 R /XYZ 81.077 535.706 null ] >>
+endobj
+2150 0 obj
+<< /D [ 2132 0 R /XYZ 81.077 470.949 null ] >>
+endobj
+2151 0 obj
+<< /D [ 2132 0 R /XYZ 81.077 459.99 null ] >>
+endobj
+2152 0 obj
+<< /D [ 2132 0 R /XYZ 81.077 449.031 null ] >>
+endobj
+2153 0 obj
+<< /D [ 2132 0 R /XYZ 81.077 433.091 null ] >>
+endobj
+2154 0 obj
+<< /D [ 2132 0 R /XYZ 81.077 422.132 null ] >>
+endobj
+2155 0 obj
+<< /D [ 2132 0 R /XYZ 81.077 411.173 null ] >>
+endobj
+2156 0 obj
+<< /D [ 2132 0 R /XYZ 81.077 400.214 null ] >>
+endobj
+2157 0 obj
+<< /D [ 2132 0 R /XYZ 81.077 389.255 null ] >>
+endobj
+2158 0 obj
+<< /D [ 2132 0 R /XYZ 81.077 378.296 null ] >>
+endobj
+2159 0 obj
+<< /D [ 2132 0 R /XYZ 81.077 367.337 null ] >>
+endobj
+2160 0 obj
+<< /D [ 2132 0 R /XYZ 81.077 312.543 null ] >>
+endobj
+2161 0 obj
+<< /D [ 2132 0 R /XYZ 81.077 301.584 null ] >>
+endobj
+2162 0 obj
+<< /D [ 2132 0 R /XYZ 81.077 290.625 null ] >>
+endobj
+2163 0 obj
+<< /D [ 2132 0 R /XYZ 81.077 279.666 null ] >>
+endobj
+2164 0 obj
+<< /D [ 2132 0 R /XYZ 81.077 268.707 null ] >>
+endobj
+2165 0 obj
+<< /D [ 2132 0 R /XYZ 81.077 257.748 null ] >>
+endobj
+2166 0 obj
+<< /D [ 2132 0 R /XYZ 81.077 246.789 null ] >>
+endobj
+2167 0 obj
+<< /D [ 2132 0 R /XYZ 81.077 193.987 null ] >>
+endobj
+2168 0 obj
+<< /D [ 2132 0 R /XYZ 81.077 183.028 null ] >>
+endobj
+41 0 obj
+<< /D [ 2132 0 R /XYZ 79.37 159.567 null ] >>
+endobj
+2131 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F20 186 0 R /F73 189 0 R /F69 183 0 R /F70 185 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+2171 0 obj
+<< /Filter /FlateDecode /Length 2501 >>
+stream
+xZmo}q W|'ޡ98Ebӎ.dsoŒulӋbIG|f8|ft6YMOﲝw>H2 Q&nËl'R#*'+$ܭ'w녷=1H0{0TGLُ5`ucW>`=H "؞q@XѷVe]ӗZy^>hh.K|qIf7YWҷv[ $f ف9I*RRyQtG1e5l={;7掱`~koJiָlZWv8VW6HiƴBVl+ͪ/ʢ
+0<+}_]cvHWwqu#G$bZ/g :rZyQK=ԛ.̎E9` )@eJW\`X6Ni;*ۂ[ޣv ̋ wV1B;UPRS̺YQueejGSGRow6L@ <4cH %z3a
+6(|@r[ aöozos)JcdaN4 Dyc h1:Xx{ h{X}AA* IjX~.υWu}ejɭ@/!Iu,mE
+ܚO3먯W>f/I REzDb#r\zq!%pLR,i63now
+Pcӧ|cBtՎ%$xO%PhȾiZ(4>9Pq@X._P}myTE{Xz wN4tҴKX
+bm(I9i*R2Ȏ=d,\74yP6,=c<GaP㕟
+
+:]!t^C3r3rpwQVxq;8f8vupEaÄ*H6b]>?Reެ:CkiA}z Ӷ#i%˫ۻZ)NN!p>m:L!8¹g 7=v1H$BP6'Ӈ~+w
+*_/Lw<`7m= l3l,EL˖#i˿|e~YDINW<~fnW9UZI'Xe p*-ߍZ%
+qgZCX<-8g/^}2B&5 
+{\Mc5
+b!H%Rev:3>>/#xo$0݂
+<cGُk
+endstream
+endobj
+2170 0 obj
+<< /Type /Page /Contents 2171 0 R /Resources 2169 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1810 0 R >>
+endobj
+2172 0 obj
+<< /D [ 2170 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+2173 0 obj
+<< /D [ 2170 0 R /XYZ 81.077 708.104 null ] >>
+endobj
+2174 0 obj
+<< /D [ 2170 0 R /XYZ 81.077 697.146 null ] >>
+endobj
+2175 0 obj
+<< /D [ 2170 0 R /XYZ 81.077 620.55 null ] >>
+endobj
+2176 0 obj
+<< /D [ 2170 0 R /XYZ 81.077 609.591 null ] >>
+endobj
+2177 0 obj
+<< /D [ 2170 0 R /XYZ 81.077 598.632 null ] >>
+endobj
+2178 0 obj
+<< /D [ 2170 0 R /XYZ 81.077 587.673 null ] >>
+endobj
+2179 0 obj
+<< /D [ 2170 0 R /XYZ 81.077 546.943 null ] >>
+endobj
+2180 0 obj
+<< /D [ 2170 0 R /XYZ 81.077 535.984 null ] >>
+endobj
+2181 0 obj
+<< /D [ 2170 0 R /XYZ 81.077 525.025 null ] >>
+endobj
+2182 0 obj
+<< /D [ 2170 0 R /XYZ 81.077 514.066 null ] >>
+endobj
+2183 0 obj
+<< /D [ 2170 0 R /XYZ 81.077 485.292 null ] >>
+endobj
+2184 0 obj
+<< /D [ 2170 0 R /XYZ 81.077 474.333 null ] >>
+endobj
+2185 0 obj
+<< /D [ 2170 0 R /XYZ 81.077 463.374 null ] >>
+endobj
+2186 0 obj
+<< /D [ 2170 0 R /XYZ 81.077 452.415 null ] >>
+endobj
+2187 0 obj
+<< /D [ 2170 0 R /XYZ 81.077 441.456 null ] >>
+endobj
+2188 0 obj
+<< /D [ 2170 0 R /XYZ 81.077 430.497 null ] >>
+endobj
+2189 0 obj
+<< /D [ 2170 0 R /XYZ 81.077 401.722 null ] >>
+endobj
+2190 0 obj
+<< /D [ 2170 0 R /XYZ 81.077 390.763 null ] >>
+endobj
+2191 0 obj
+<< /D [ 2170 0 R /XYZ 81.077 379.804 null ] >>
+endobj
+2192 0 obj
+<< /D [ 2170 0 R /XYZ 81.077 368.845 null ] >>
+endobj
+2193 0 obj
+<< /D [ 2170 0 R /XYZ 81.077 357.887 null ] >>
+endobj
+2194 0 obj
+<< /D [ 2170 0 R /XYZ 81.077 346.928 null ] >>
+endobj
+2195 0 obj
+<< /D [ 2170 0 R /XYZ 81.077 318.153 null ] >>
+endobj
+2196 0 obj
+<< /D [ 2170 0 R /XYZ 81.077 271.562 null ] >>
+endobj
+2197 0 obj
+<< /D [ 2170 0 R /XYZ 81.077 260.603 null ] >>
+endobj
+2198 0 obj
+<< /D [ 2170 0 R /XYZ 81.077 225.967 null ] >>
+endobj
+2199 0 obj
+<< /D [ 2170 0 R /XYZ 81.077 210.144 null ] >>
+endobj
+2200 0 obj
+<< /D [ 2170 0 R /XYZ 81.077 199.185 null ] >>
+endobj
+2201 0 obj
+<< /D [ 2170 0 R /XYZ 81.077 188.226 null ] >>
+endobj
+2202 0 obj
+<< /D [ 2170 0 R /XYZ 81.077 177.267 null ] >>
+endobj
+2203 0 obj
+<< /D [ 2170 0 R /XYZ 81.077 166.308 null ] >>
+endobj
+2204 0 obj
+<< /D [ 2170 0 R /XYZ 81.077 155.349 null ] >>
+endobj
+2205 0 obj
+<< /D [ 2170 0 R /XYZ 81.077 144.39 null ] >>
+endobj
+2206 0 obj
+<< /D [ 2170 0 R /XYZ 81.077 133.431 null ] >>
+endobj
+2207 0 obj
+<< /D [ 2170 0 R /XYZ 81.077 122.473 null ] >>
+endobj
+2208 0 obj
+<< /D [ 2170 0 R /XYZ 81.077 111.514 null ] >>
+endobj
+2209 0 obj
+<< /D [ 2170 0 R /XYZ 81.077 100.555 null ] >>
+endobj
+2210 0 obj
+<< /D [ 2170 0 R /XYZ 81.077 89.596 null ] >>
+endobj
+2211 0 obj
+<< /D [ 2170 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+2169 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F72 187 0 R /F19 184 0 R /F20 186 0 R /F73 189 0 R /F69 183 0 R /F76 318 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+2214 0 obj
+<< /Filter /FlateDecode /Length 2837 >>
+stream
+xڵZ[oܸ~ϯ0Ї5#$]l[`R}h
+A#!i"ixp<36ˈx?Ή./_^EHl/~}M/IAP1irĔD1^gE]oB4ZS>[Eg2J2izh~^3seDh&< ,_BP'" 4GEJLe%iԀlm^ aLN0K37mޕGD1aq< [
+_]у>fUPlN.!N%Q2-A->M|bWpN0KowAw ŞpG*^RAğg0ij#JRMkCA.ovK.zDJ1ea[<7UDr;̙yԸ~;ܴ녔g֖!|oy)gXORH,nuShǀEPpTsE(
+bgP ~dmC^5nVo#p`;u]Z;x.=9V!R8 l% .Ox}y%(]=l
+QdLGBuYƜt9,ǐ,](ul'1y=>o(ń|5.fݶuv.{2ut> (k(5ϣ6غvr_5/0LV:_*nJo8kB%Y"`o~#֓J" >PkFKjvUhd 澮;Plkb×~u~,FNV3 c<n(Wݾ9ƌHN}v!
+2ҧ`#O{ԓZUw7>ըOCs OL}my '@huukr*ĩEН^28adZ(Ȍv6c8: HzڨϮHOPьݡ !?`T|x(bbx FlTc:U~cCW&r]RzZm$dTӷQ`xgEQSH xr@G0?AMR]5K&=?℥
+b"wuv!<E
+J<j\},t;c%iOҠhƣ1Dnol5EBnL'!+BT6Wn+X5")er! KZr>Z-)U N`z+T
+}JUWkdfpå1j^C~obpmP/1=mېnr͛=U,yO|):tvXf TIRq`Y=
+6WL D2? Rz$;Ѵ`{ Qj< ВT&T1ea7|La5%7Dtarz. /8HN, zԧv20(nhX^$CCVƿF&-Gާ]>#DxUE
+endstream
+endobj
+2213 0 obj
+<< /Type /Page /Contents 2214 0 R /Resources 2212 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2254 0 R >>
+endobj
+2215 0 obj
+<< /D [ 2213 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+2216 0 obj
+<< /D [ 2213 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+2217 0 obj
+<< /D [ 2213 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+2218 0 obj
+<< /D [ 2213 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+2219 0 obj
+<< /D [ 2213 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+2220 0 obj
+<< /D [ 2213 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+2221 0 obj
+<< /D [ 2213 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+2222 0 obj
+<< /D [ 2213 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+2223 0 obj
+<< /D [ 2213 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+2224 0 obj
+<< /D [ 2213 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+2225 0 obj
+<< /D [ 2213 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+2226 0 obj
+<< /D [ 2213 0 R /XYZ 81.077 637.325 null ] >>
+endobj
+2227 0 obj
+<< /D [ 2213 0 R /XYZ 81.077 626.366 null ] >>
+endobj
+2228 0 obj
+<< /D [ 2213 0 R /XYZ 81.077 571.571 null ] >>
+endobj
+2229 0 obj
+<< /D [ 2213 0 R /XYZ 81.077 560.613 null ] >>
+endobj
+2230 0 obj
+<< /D [ 2213 0 R /XYZ 81.077 549.654 null ] >>
+endobj
+2231 0 obj
+<< /D [ 2213 0 R /XYZ 81.077 508.807 null ] >>
+endobj
+2232 0 obj
+<< /D [ 2213 0 R /XYZ 81.077 444.05 null ] >>
+endobj
+2233 0 obj
+<< /D [ 2213 0 R /XYZ 81.077 433.091 null ] >>
+endobj
+2234 0 obj
+<< /D [ 2213 0 R /XYZ 81.077 356.378 null ] >>
+endobj
+2235 0 obj
+<< /D [ 2213 0 R /XYZ 81.077 345.42 null ] >>
+endobj
+2236 0 obj
+<< /D [ 2213 0 R /XYZ 81.077 292.618 null ] >>
+endobj
+2237 0 obj
+<< /D [ 2213 0 R /XYZ 81.077 281.659 null ] >>
+endobj
+2238 0 obj
+<< /D [ 2213 0 R /XYZ 81.077 270.7 null ] >>
+endobj
+2239 0 obj
+<< /D [ 2213 0 R /XYZ 81.077 259.741 null ] >>
+endobj
+2240 0 obj
+<< /D [ 2213 0 R /XYZ 81.077 248.782 null ] >>
+endobj
+2241 0 obj
+<< /D [ 2213 0 R /XYZ 81.077 237.823 null ] >>
+endobj
+2242 0 obj
+<< /D [ 2213 0 R /XYZ 81.077 226.864 null ] >>
+endobj
+2243 0 obj
+<< /D [ 2213 0 R /XYZ 81.077 215.905 null ] >>
+endobj
+2244 0 obj
+<< /D [ 2213 0 R /XYZ 81.077 185.021 null ] >>
+endobj
+2245 0 obj
+<< /D [ 2213 0 R /XYZ 81.077 174.062 null ] >>
+endobj
+2246 0 obj
+<< /D [ 2213 0 R /XYZ 81.077 163.103 null ] >>
+endobj
+2247 0 obj
+<< /D [ 2213 0 R /XYZ 81.077 152.144 null ] >>
+endobj
+2248 0 obj
+<< /D [ 2213 0 R /XYZ 81.077 141.185 null ] >>
+endobj
+2249 0 obj
+<< /D [ 2213 0 R /XYZ 81.077 130.226 null ] >>
+endobj
+2250 0 obj
+<< /D [ 2213 0 R /XYZ 81.077 119.268 null ] >>
+endobj
+2251 0 obj
+<< /D [ 2213 0 R /XYZ 81.077 108.309 null ] >>
+endobj
+2252 0 obj
+<< /D [ 2213 0 R /XYZ 81.077 97.35 null ] >>
+endobj
+2253 0 obj
+<< /D [ 2213 0 R /XYZ 81.077 86.391 null ] >>
+endobj
+2212 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F70 185 0 R /F78 556 0 R /F76 318 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+2257 0 obj
+<< /Filter /FlateDecode /Length 2074 >>
+stream
+xZKoHWȅ퓑d=x]9lMQ6'2% }GklY`/U_SNwtY:tg׳7g>kf}FtAFEB+JRE7'?7ᳲ CR4rq]<wE}ju~!׮UXMV<~?cv%Wgf[ȔД졔p&cwln |͎R\l"GUe^<d]S>09wpPf5b4㌚hm& 5h#pᝣ'>|va”C%ĥ)azsp.Oer3;SdyWܥJŸۮ6\Vox~tYXJPH)Y%F_VAfU4A"(x_˪TY7E=0v2p%/6
+LkZE$)`"}ur{~LRܵŊ_-]$*x*]Wx7NYNx-rWbL?[Ⱥp5I^x Ȝ%Yӟ Wsm a[n2[J1"4t$fD`ļ]Vr]
+z[2vD=e[ 9P(BFp[כereU{%Dip0H; {l K:8Ky(DA Dh~G¥֣p
+EFi$ԌP"1[JC 3z*Uvz蚞5A
+xN1cЌx,ҙI{
+,6^7 +C IA }0mn6.)~<,ZzMmr P[{jԜheJ
+-(= Lۍ"30)T.R/ 1ܱ/ew4aZJ3梙iّ+K+lЅ\kջ<]d]e,}My4y1LOBd p8Hžk*78d2:ow_]aqpN/_t M[[/"<nAw RWosz0s~kaax_ U]y{Δ(Xl</;+мRw0k8WFxKe_*h^ ,4c1f܆6BY0f##HYu@6eU\V]G(%l0-nl]e~ k lj(%
+Ep"4ދJ:P\[]m>}~.~fЄ۬f|JA<Ly]7ʺ"Xgr<X NTpkx&nkU^Gm˼5XӉqlaI܎#Bn_yyӫAnNR\lh|uF8R`ܚfJ^Oe]7XeSG7ԟ\4z@P߹rbsc9\k"8x#T{W?V!E9XO)4Aq6?eq!bh9'Řsds_N2l.v>RsKQ^8bl<GSn6 ]Z?1*9i>=2cacCVu+8"mQcWg-ry~M0
+endstream
+endobj
+2256 0 obj
+<< /Type /Page /Contents 2257 0 R /Resources 2255 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2254 0 R >>
+endobj
+2258 0 obj
+<< /D [ 2256 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+2259 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+2260 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+2261 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+2262 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+2263 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+2264 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+2265 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+2266 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+2267 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 637.325 null ] >>
+endobj
+2268 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 626.366 null ] >>
+endobj
+2269 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 615.407 null ] >>
+endobj
+2270 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 604.448 null ] >>
+endobj
+2271 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 593.489 null ] >>
+endobj
+2272 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 516.777 null ] >>
+endobj
+2273 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 505.818 null ] >>
+endobj
+2274 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 494.859 null ] >>
+endobj
+2275 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 483.9 null ] >>
+endobj
+2276 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 472.941 null ] >>
+endobj
+2277 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 461.982 null ] >>
+endobj
+2278 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 451.023 null ] >>
+endobj
+2279 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 440.065 null ] >>
+endobj
+2280 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 429.106 null ] >>
+endobj
+2281 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 418.147 null ] >>
+endobj
+2282 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 407.188 null ] >>
+endobj
+2283 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 396.229 null ] >>
+endobj
+2284 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 385.27 null ] >>
+endobj
+2285 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 374.311 null ] >>
+endobj
+2286 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 363.352 null ] >>
+endobj
+2287 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 352.393 null ] >>
+endobj
+2288 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 341.434 null ] >>
+endobj
+2289 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 330.476 null ] >>
+endobj
+2290 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 319.517 null ] >>
+endobj
+2291 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 308.558 null ] >>
+endobj
+2292 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 297.599 null ] >>
+endobj
+2293 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 286.64 null ] >>
+endobj
+2294 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 275.681 null ] >>
+endobj
+2295 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 264.722 null ] >>
+endobj
+2296 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 253.763 null ] >>
+endobj
+2297 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 242.804 null ] >>
+endobj
+2298 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 231.845 null ] >>
+endobj
+2299 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 220.887 null ] >>
+endobj
+2300 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 209.928 null ] >>
+endobj
+2301 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 198.969 null ] >>
+endobj
+2302 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 188.01 null ] >>
+endobj
+2303 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 177.051 null ] >>
+endobj
+2304 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 166.092 null ] >>
+endobj
+2305 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 155.133 null ] >>
+endobj
+2306 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 144.174 null ] >>
+endobj
+2307 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 133.215 null ] >>
+endobj
+2308 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 122.256 null ] >>
+endobj
+2309 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 111.297 null ] >>
+endobj
+2310 0 obj
+<< /D [ 2256 0 R /XYZ 81.077 100.339 null ] >>
+endobj
+2255 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+2314 0 obj
+<< /Filter /FlateDecode /Length 2015 >>
+stream
+xڭko8WxY@6,)s
+*bИ'_9#$ZEQOjipeVsFy;\(|l◚#S#:K){kdW"lQ7-C/ӡ4@ms$hϺ*@X/kHn(J])#(16F40M5|3pk>#/#[ z.W4MX5pqV
+T m9Kŝ篼!V;aHH`C}֋:^xUD!, 4lIpq 㲰u,_̌<]Ts<[t m7:8:2J#O=zחUWE&|0zblB%x]%LLb֕tOu+aa6tTq>dޓ!J<$U˜7|
+)jIp]uPk!{mqIppp0X:TU8H=BZKLˆ]nG} aaCú㈏;ŠX`GƬa; J *bBA,IW|ŞYDD3w-SH%[RFꪏ y H]HS`!JZ$ U; ,m!z)<Ү$,m3EIPb䉏JViu }_# ai䙄$)>BO=녭2rSpGz,H]6SGΫV7%twe2m4xe2/,~{aO}YNLF $]+>
+nzo90%a
+ߪmzҐgcTU?{_Ͼl9-(+>|9 懾b9!1/4b?ǟ{{,< @DGMb`"W{VHڥ TEucNl ~&JZpOIT zyۍClB0a9_ÔDV_, uЙ#~Ѽ w^WQ43`q|vctk>tgh= NcOGt|4J3# tí9Nubvdc;*{5V0pgL31v-44ةz1u=n/ۉxZ `ql{HF
+endstream
+endobj
+2313 0 obj
+<< /Type /Page /Contents 2314 0 R /Resources 2312 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2254 0 R /Annots 2365 0 R >>
+endobj
+2365 0 obj
+[ 2311 0 R ]
+endobj
+2311 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 408.109 641.043 414.571 653.533 ]/A << /S /GoTo /D (Hfootnote.6) >> >>
+endobj
+2315 0 obj
+<< /D [ 2313 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+2316 0 obj
+<< /D [ 2313 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+2317 0 obj
+<< /D [ 2313 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+2318 0 obj
+<< /D [ 2313 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+2319 0 obj
+<< /D [ 2313 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+2320 0 obj
+<< /D [ 2313 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+2321 0 obj
+<< /D [ 2313 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+2322 0 obj
+<< /D [ 2313 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+2323 0 obj
+<< /D [ 2313 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+2324 0 obj
+<< /D [ 2313 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+2325 0 obj
+<< /D [ 2313 0 R /XYZ 81.077 638.368 null ] >>
+endobj
+2326 0 obj
+<< /D [ 2313 0 R /XYZ 81.077 627.409 null ] >>
+endobj
+2327 0 obj
+<< /D [ 2313 0 R /XYZ 81.077 616.451 null ] >>
+endobj
+2328 0 obj
+<< /D [ 2313 0 R /XYZ 81.077 605.492 null ] >>
+endobj
+2329 0 obj
+<< /D [ 2313 0 R /XYZ 81.077 594.533 null ] >>
+endobj
+2330 0 obj
+<< /D [ 2313 0 R /XYZ 81.077 583.574 null ] >>
+endobj
+2331 0 obj
+<< /D [ 2313 0 R /XYZ 81.077 572.615 null ] >>
+endobj
+2332 0 obj
+<< /D [ 2313 0 R /XYZ 81.077 561.656 null ] >>
+endobj
+2333 0 obj
+<< /D [ 2313 0 R /XYZ 81.077 550.697 null ] >>
+endobj
+2334 0 obj
+<< /D [ 2313 0 R /XYZ 81.077 539.738 null ] >>
+endobj
+2335 0 obj
+<< /D [ 2313 0 R /XYZ 81.077 528.779 null ] >>
+endobj
+2336 0 obj
+<< /D [ 2313 0 R /XYZ 81.077 517.82 null ] >>
+endobj
+2337 0 obj
+<< /D [ 2313 0 R /XYZ 81.077 506.861 null ] >>
+endobj
+2338 0 obj
+<< /D [ 2313 0 R /XYZ 81.077 495.903 null ] >>
+endobj
+2339 0 obj
+<< /D [ 2313 0 R /XYZ 81.077 484.944 null ] >>
+endobj
+2340 0 obj
+<< /D [ 2313 0 R /XYZ 81.077 473.985 null ] >>
+endobj
+2341 0 obj
+<< /D [ 2313 0 R /XYZ 81.077 463.026 null ] >>
+endobj
+2342 0 obj
+<< /D [ 2313 0 R /XYZ 81.077 452.067 null ] >>
+endobj
+2343 0 obj
+<< /D [ 2313 0 R /XYZ 81.077 441.108 null ] >>
+endobj
+2344 0 obj
+<< /D [ 2313 0 R /XYZ 81.077 430.149 null ] >>
+endobj
+2345 0 obj
+<< /D [ 2313 0 R /XYZ 81.077 399.375 null ] >>
+endobj
+2346 0 obj
+<< /D [ 2313 0 R /XYZ 81.077 388.416 null ] >>
+endobj
+2347 0 obj
+<< /D [ 2313 0 R /XYZ 81.077 377.457 null ] >>
+endobj
+2348 0 obj
+<< /D [ 2313 0 R /XYZ 81.077 366.498 null ] >>
+endobj
+2349 0 obj
+<< /D [ 2313 0 R /XYZ 81.077 355.54 null ] >>
+endobj
+2350 0 obj
+<< /D [ 2313 0 R /XYZ 81.077 344.581 null ] >>
+endobj
+2351 0 obj
+<< /D [ 2313 0 R /XYZ 81.077 333.622 null ] >>
+endobj
+2352 0 obj
+<< /D [ 2313 0 R /XYZ 81.077 322.663 null ] >>
+endobj
+2353 0 obj
+<< /D [ 2313 0 R /XYZ 81.077 311.704 null ] >>
+endobj
+2354 0 obj
+<< /D [ 2313 0 R /XYZ 81.077 300.745 null ] >>
+endobj
+2355 0 obj
+<< /D [ 2313 0 R /XYZ 81.077 289.786 null ] >>
+endobj
+2356 0 obj
+<< /D [ 2313 0 R /XYZ 81.077 278.827 null ] >>
+endobj
+2357 0 obj
+<< /D [ 2313 0 R /XYZ 81.077 267.868 null ] >>
+endobj
+2358 0 obj
+<< /D [ 2313 0 R /XYZ 81.077 256.909 null ] >>
+endobj
+2359 0 obj
+<< /D [ 2313 0 R /XYZ 81.077 245.951 null ] >>
+endobj
+2360 0 obj
+<< /D [ 2313 0 R /XYZ 81.077 234.992 null ] >>
+endobj
+45 0 obj
+<< /D [ 2313 0 R /XYZ 79.37 209.632 null ] >>
+endobj
+2361 0 obj
+<< /D [ 2313 0 R /XYZ 81.077 141.302 null ] >>
+endobj
+2362 0 obj
+<< /D [ 2313 0 R /XYZ 81.077 130.343 null ] >>
+endobj
+2363 0 obj
+<< /D [ 2313 0 R /XYZ 81.077 119.384 null ] >>
+endobj
+2364 0 obj
+<< /D [ 2313 0 R /XYZ 94.613 89.795 null ] >>
+endobj
+2312 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F22 473 0 R /F72 187 0 R /F77 480 0 R /F63 205 0 R /F81 768 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+2369 0 obj
+<< /Filter /FlateDecode /Length 2986 >>
+stream
+xڥZ[۸~_a
+'؂^z>3Ar6\Q,IHYRtv}ӄןnz>Lf1ICbĥr,|m~~-}͢Rz\x?Y-6eeg5$" P [HUybO~٥g\\!5~[d,lԈuz֯}&^B1|]PiD2N]a<OilڑM5Y4D2Aog[$6)1m Ǫ*U_Xgk:a1c@< .#ХW
+-
+|6FITdH7YP@bm᠚:B[rcw|ᆒ$v_PP &THwjL*qs~BBp
+!5ٕN
+BŽt|O@MhйDAR[
+4H4)'r\H#P
+k2{zBpn\3tYEǴaZgLkkosc!tW"0KDZ7y֘'ҴAILsw{Y4p x ":KNh8bJ.R5i 0T``>JU43Zi2'!c5a,-^iFX
+rlK@؍ b$!˙G.u$ 26b@Q6/=c2v2]5VPP_v(~ EhqV9bqitZQl.[!)hebSψZ+ Lv[fE0`k X[*I#Pˇ۸D Ԩ#
+F=˪EO6@bs9t>+mY_PC*qICmM:q3M-zi~c|7;YWI2\uX充!L(`ȡ DU$4 :lS7~i/@N!^Xs+PnrzchwW[<\/Kʛ+8/p<D$t!^Ɋ6Qo_Ug_% %]K mYbFfCScnwSNl?[mX" 'OȡG!|a *үJP;Uq܎"aWԶ
+(<
+h7^E諝EK+6^G txZ^S>( kX30
+Jx~guw Ϙ4EhʼnO0XּAOV`+ E0QE;ϟ`
+Cu8QQUb
+endstream
+endobj
+2368 0 obj
+<< /Type /Page /Contents 2369 0 R /Resources 2367 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2254 0 R /Annots 2407 0 R >>
+endobj
+2407 0 obj
+[ 2366 0 R ]
+endobj
+2366 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 438.519 480.603 444.981 492.54 ]/A << /S /GoTo /D (Hfootnote.7) >> >>
+endobj
+2370 0 obj
+<< /D [ 2368 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+2371 0 obj
+<< /D [ 2368 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+2372 0 obj
+<< /D [ 2368 0 R /XYZ 81.077 753.177 null ] >>
+endobj
+2373 0 obj
+<< /D [ 2368 0 R /XYZ 81.077 742.218 null ] >>
+endobj
+2374 0 obj
+<< /D [ 2368 0 R /XYZ 81.077 702.653 null ] >>
+endobj
+2375 0 obj
+<< /D [ 2368 0 R /XYZ 81.077 677.463 null ] >>
+endobj
+2376 0 obj
+<< /D [ 2368 0 R /XYZ 81.077 666.504 null ] >>
+endobj
+2377 0 obj
+<< /D [ 2368 0 R /XYZ 81.077 655.546 null ] >>
+endobj
+2378 0 obj
+<< /D [ 2368 0 R /XYZ 81.077 644.587 null ] >>
+endobj
+2379 0 obj
+<< /D [ 2368 0 R /XYZ 81.077 617.547 null ] >>
+endobj
+2380 0 obj
+<< /D [ 2368 0 R /XYZ 81.077 606.588 null ] >>
+endobj
+2381 0 obj
+<< /D [ 2368 0 R /XYZ 81.077 595.63 null ] >>
+endobj
+2382 0 obj
+<< /D [ 2368 0 R /XYZ 81.077 584.671 null ] >>
+endobj
+2383 0 obj
+<< /D [ 2368 0 R /XYZ 81.077 573.712 null ] >>
+endobj
+2384 0 obj
+<< /D [ 2368 0 R /XYZ 81.077 562.753 null ] >>
+endobj
+2385 0 obj
+<< /D [ 2368 0 R /XYZ 81.077 551.794 null ] >>
+endobj
+2386 0 obj
+<< /D [ 2368 0 R /XYZ 81.077 540.835 null ] >>
+endobj
+2387 0 obj
+<< /D [ 2368 0 R /XYZ 81.077 529.876 null ] >>
+endobj
+2388 0 obj
+<< /D [ 2368 0 R /XYZ 81.077 518.917 null ] >>
+endobj
+2389 0 obj
+<< /D [ 2368 0 R /XYZ 81.077 507.958 null ] >>
+endobj
+2390 0 obj
+<< /D [ 2368 0 R /XYZ 81.077 432.528 null ] >>
+endobj
+2391 0 obj
+<< /D [ 2368 0 R /XYZ 81.077 382.857 null ] >>
+endobj
+2392 0 obj
+<< /D [ 2368 0 R /XYZ 81.077 371.898 null ] >>
+endobj
+2393 0 obj
+<< /D [ 2368 0 R /XYZ 81.077 360.939 null ] >>
+endobj
+2394 0 obj
+<< /D [ 2368 0 R /XYZ 81.077 349.98 null ] >>
+endobj
+2395 0 obj
+<< /D [ 2368 0 R /XYZ 81.077 339.022 null ] >>
+endobj
+2396 0 obj
+<< /D [ 2368 0 R /XYZ 81.077 328.063 null ] >>
+endobj
+2397 0 obj
+<< /D [ 2368 0 R /XYZ 81.077 302.302 null ] >>
+endobj
+2398 0 obj
+<< /D [ 2368 0 R /XYZ 81.077 291.344 null ] >>
+endobj
+2399 0 obj
+<< /D [ 2368 0 R /XYZ 81.077 280.385 null ] >>
+endobj
+2400 0 obj
+<< /D [ 2368 0 R /XYZ 81.077 230.714 null ] >>
+endobj
+2401 0 obj
+<< /D [ 2368 0 R /XYZ 81.077 219.755 null ] >>
+endobj
+2402 0 obj
+<< /D [ 2368 0 R /XYZ 81.077 182.04 null ] >>
+endobj
+2403 0 obj
+<< /D [ 2368 0 R /XYZ 81.077 171.081 null ] >>
+endobj
+2404 0 obj
+<< /D [ 2368 0 R /XYZ 81.077 160.122 null ] >>
+endobj
+2405 0 obj
+<< /D [ 2368 0 R /XYZ 81.077 149.163 null ] >>
+endobj
+2406 0 obj
+<< /D [ 2368 0 R /XYZ 94.613 80.331 null ] >>
+endobj
+2367 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F22 473 0 R /F70 185 0 R /F76 318 0 R /F78 556 0 R /F77 480 0 R /F63 205 0 R /F81 768 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+2410 0 obj
+<< /Filter /FlateDecode /Length 2480 >>
+stream
+xڵZ[o~ϯ0X&/ZdgY>)h(Y
+dylCQ7*l:\xxnfxnHzb3&nL32IfJ%lf#o~|%L##%C0)f|*(yJbysu~!2t], ͫhM̋[ϼUu<<$` )JpLD8h#i$ʹ-,Zm*kŻw+Ոhx-Gv_&_&@Tt0ic-mh/zKAS13C fhc9U &|o$0jX&q@ϫ⡞7/fƺLxYEm!}enϩ;=@!eZ5Ӌㄥ-ap/.lRC\1ĄA`Ƴ>RH`I~s4ø--|cǰ
+9)5Xw6Gnj%qUFyv cocq,6 LN3$ءXC2D;olS>x(l㮊t`6`$H’)1H"
+:
+:5haia&b' j(>HKџ&˗# RΓj@\r~ߞ_DeCnL
+buy&a ѧ d>ain834"K5 C[ڔ˸\^.QQd GVm497A9Pm\qWM(jp䴯q!lb:<m5q%Ce
+B~V@+NUDKEv]% wlfG6.9S*f!@j ngH;Y.|M
+$c}_ϫF :أ?Bn
+7Mn\QNF5"#Da t޵75I*4_{u?{~k4k[;nȅLk77;
+mcI6-ҲO`&5m9zJܟv<#[-`EUn9;oh0dkXNTSL!c>2,'nSa`դtYo( (0W~)3y8AV!$bύ=)n[[b5E#IJl8KH+:,>[:E?W-pv6#ƚ/vyPωm6ʍӤnUmZކ e />W@I-&My<(49(>L݀ӑB
+J®Al>;^9`m6x܏qY [༟?p%g4 % S2fPGHgaDnWęmF缊N*N=Ѓ:;=\^^L_8?V1 VD}4yQn컰OBt 2m^FPX.Mr\5rC[c.#R.ҽ
+!f,KxFNKBc` Kמ1aC$u/ʇ暑 aܹY銇n?CDʾ^ͫ6NM_)˨ȓI *FkC
+JRН6axh0wؼv|;p~oC%IM@Xf>:X@ٻ##}.CO e[k(;I1alӉB<)G J< o< Ǝ<Vϴ".QC:Yh,C"h' :q:6Pn6:6ќ&t<ݏmTw![QbfVw 
+ZBAumhN۸iO嗡9{X7,齃!:XFpCnW_ltY];Z?MjZ<N 6+cukJ8oM֛2$pߧUI]}
+endstream
+endobj
+2409 0 obj
+<< /Type /Page /Contents 2410 0 R /Resources 2408 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2254 0 R >>
+endobj
+2411 0 obj
+<< /D [ 2409 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+2412 0 obj
+<< /D [ 2409 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+2413 0 obj
+<< /D [ 2409 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+2414 0 obj
+<< /D [ 2409 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+2415 0 obj
+<< /D [ 2409 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+2416 0 obj
+<< /D [ 2409 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+2417 0 obj
+<< /D [ 2409 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+2418 0 obj
+<< /D [ 2409 0 R /XYZ 81.077 676.179 null ] >>
+endobj
+2419 0 obj
+<< /D [ 2409 0 R /XYZ 81.077 662.231 null ] >>
+endobj
+2420 0 obj
+<< /D [ 2409 0 R /XYZ 81.077 651.273 null ] >>
+endobj
+2421 0 obj
+<< /D [ 2409 0 R /XYZ 81.077 640.314 null ] >>
+endobj
+2422 0 obj
+<< /D [ 2409 0 R /XYZ 81.077 629.355 null ] >>
+endobj
+2423 0 obj
+<< /D [ 2409 0 R /XYZ 81.077 618.396 null ] >>
+endobj
+2424 0 obj
+<< /D [ 2409 0 R /XYZ 81.077 607.437 null ] >>
+endobj
+2425 0 obj
+<< /D [ 2409 0 R /XYZ 81.077 596.478 null ] >>
+endobj
+2426 0 obj
+<< /D [ 2409 0 R /XYZ 81.077 544.672 null ] >>
+endobj
+2427 0 obj
+<< /D [ 2409 0 R /XYZ 81.077 533.713 null ] >>
+endobj
+2428 0 obj
+<< /D [ 2409 0 R /XYZ 81.077 522.754 null ] >>
+endobj
+2429 0 obj
+<< /D [ 2409 0 R /XYZ 81.077 511.796 null ] >>
+endobj
+2430 0 obj
+<< /D [ 2409 0 R /XYZ 81.077 485.893 null ] >>
+endobj
+2431 0 obj
+<< /D [ 2409 0 R /XYZ 81.077 386.266 null ] >>
+endobj
+2432 0 obj
+<< /D [ 2409 0 R /XYZ 81.077 375.307 null ] >>
+endobj
+2433 0 obj
+<< /D [ 2409 0 R /XYZ 81.077 349.405 null ] >>
+endobj
+2434 0 obj
+<< /D [ 2409 0 R /XYZ 81.077 338.446 null ] >>
+endobj
+2435 0 obj
+<< /D [ 2409 0 R /XYZ 81.077 327.487 null ] >>
+endobj
+2436 0 obj
+<< /D [ 2409 0 R /XYZ 81.077 316.528 null ] >>
+endobj
+2437 0 obj
+<< /D [ 2409 0 R /XYZ 81.077 305.569 null ] >>
+endobj
+2438 0 obj
+<< /D [ 2409 0 R /XYZ 81.077 294.61 null ] >>
+endobj
+2439 0 obj
+<< /D [ 2409 0 R /XYZ 81.077 283.651 null ] >>
+endobj
+2440 0 obj
+<< /D [ 2409 0 R /XYZ 81.077 272.692 null ] >>
+endobj
+2441 0 obj
+<< /D [ 2409 0 R /XYZ 81.077 261.733 null ] >>
+endobj
+2442 0 obj
+<< /D [ 2409 0 R /XYZ 81.077 250.774 null ] >>
+endobj
+2443 0 obj
+<< /D [ 2409 0 R /XYZ 81.077 239.816 null ] >>
+endobj
+2444 0 obj
+<< /D [ 2409 0 R /XYZ 81.077 228.857 null ] >>
+endobj
+2445 0 obj
+<< /D [ 2409 0 R /XYZ 81.077 217.898 null ] >>
+endobj
+2446 0 obj
+<< /D [ 2409 0 R /XYZ 81.077 206.939 null ] >>
+endobj
+2447 0 obj
+<< /D [ 2409 0 R /XYZ 81.077 195.98 null ] >>
+endobj
+2448 0 obj
+<< /D [ 2409 0 R /XYZ 81.077 185.021 null ] >>
+endobj
+2449 0 obj
+<< /D [ 2409 0 R /XYZ 81.077 174.062 null ] >>
+endobj
+2450 0 obj
+<< /D [ 2409 0 R /XYZ 81.077 163.103 null ] >>
+endobj
+2451 0 obj
+<< /D [ 2409 0 R /XYZ 81.077 152.144 null ] >>
+endobj
+2452 0 obj
+<< /D [ 2409 0 R /XYZ 81.077 141.185 null ] >>
+endobj
+2453 0 obj
+<< /D [ 2409 0 R /XYZ 81.077 91.372 null ] >>
+endobj
+2454 0 obj
+<< /D [ 2409 0 R /XYZ 81.077 80.413 null ] >>
+endobj
+2408 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+2458 0 obj
+<< /Filter /FlateDecode /Length 2381 >>
+stream
+xڭZ[o6~ϯУpx-]l!@:@0[qR*qHQ8;d$KsCh _ww\JXQpD"%$IH$&%ٯ7?_4R(1 x?Ƌ]w?W7KAE|amV.>.yt6-iFS'mz*棿 hy*2Wb?޵uT[ p+C%ѦW$RPǐ$E #I ພ$޿]2ŝϛ[sZs-lko*Q|;PQ)N@ يS9 M^i6^ŭUf?2b<|?n"Ec$yje
+:w @^WvHNB0jy|
+C+CZ<-%S$CIעI/\@؈c i5F$Ԥy2R%T%a%XF"sN ’rPq18giB]Bd"{1Ct ɠ>P:i)زa5}uV~ߨr~wem/zFyG"3"<΄rEg1]tm겯tu@Yx.;De~Ϯ>
+e4bu2?PbR3 5.ƤxJF-,і,ؔE3i{e*S*[UPwݱ-YE45mD0%fH HT8 ']qzQ2|꒞ITi'@tL<+ wLg?zU`TS"8J:\DS"G8 Ixvf{TPdS\41BN&?l<4qaYPC7&l?7u~֦{Sy&ܸu<aѽ׺R1~ýR#G5sn3(qˠq:Bm(MȄǫ0˪ЛszuH q&W I7U rހyae] Ww
+,9L\N{Pɰpn9VLM`\6_zb(.77!~og9 N)G}/(mmag93”#3f`4(M~DUI邤.qK@h>m \q4\i#Gn&2vSUXIH;⡿E*_6W<sILJ s&DV<;o}E; >]sMCb˩&~}<Մux )
+1@8^uef OvE\nkŤl@ߤ0<:pW.K&
+endstream
+endobj
+2457 0 obj
+<< /Type /Page /Contents 2458 0 R /Resources 2456 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2254 0 R /Annots 2509 0 R >>
+endobj
+2509 0 obj
+[ 2455 0 R ]
+endobj
+2455 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 139.584 204.941 146.046 214.941 ]/A << /S /GoTo /D (Hfootnote.8) >> >>
+endobj
+2459 0 obj
+<< /D [ 2457 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+2460 0 obj
+<< /D [ 2457 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+2461 0 obj
+<< /D [ 2457 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+2462 0 obj
+<< /D [ 2457 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+2463 0 obj
+<< /D [ 2457 0 R /XYZ 81.077 685.505 null ] >>
+endobj
+2464 0 obj
+<< /D [ 2457 0 R /XYZ 81.077 674.547 null ] >>
+endobj
+2465 0 obj
+<< /D [ 2457 0 R /XYZ 81.077 663.588 null ] >>
+endobj
+2466 0 obj
+<< /D [ 2457 0 R /XYZ 81.077 652.629 null ] >>
+endobj
+2467 0 obj
+<< /D [ 2457 0 R /XYZ 81.077 641.67 null ] >>
+endobj
+2468 0 obj
+<< /D [ 2457 0 R /XYZ 81.077 630.711 null ] >>
+endobj
+2469 0 obj
+<< /D [ 2457 0 R /XYZ 81.077 619.752 null ] >>
+endobj
+2470 0 obj
+<< /D [ 2457 0 R /XYZ 81.077 608.793 null ] >>
+endobj
+2471 0 obj
+<< /D [ 2457 0 R /XYZ 81.077 597.834 null ] >>
+endobj
+2472 0 obj
+<< /D [ 2457 0 R /XYZ 81.077 586.875 null ] >>
+endobj
+2473 0 obj
+<< /D [ 2457 0 R /XYZ 81.077 575.916 null ] >>
+endobj
+2474 0 obj
+<< /D [ 2457 0 R /XYZ 81.077 564.957 null ] >>
+endobj
+2475 0 obj
+<< /D [ 2457 0 R /XYZ 81.077 553.999 null ] >>
+endobj
+2476 0 obj
+<< /D [ 2457 0 R /XYZ 81.077 543.04 null ] >>
+endobj
+2477 0 obj
+<< /D [ 2457 0 R /XYZ 81.077 532.081 null ] >>
+endobj
+2478 0 obj
+<< /D [ 2457 0 R /XYZ 81.077 521.122 null ] >>
+endobj
+2479 0 obj
+<< /D [ 2457 0 R /XYZ 81.077 510.163 null ] >>
+endobj
+2480 0 obj
+<< /D [ 2457 0 R /XYZ 81.077 499.204 null ] >>
+endobj
+2481 0 obj
+<< /D [ 2457 0 R /XYZ 81.077 488.245 null ] >>
+endobj
+2482 0 obj
+<< /D [ 2457 0 R /XYZ 81.077 477.286 null ] >>
+endobj
+2483 0 obj
+<< /D [ 2457 0 R /XYZ 81.077 466.327 null ] >>
+endobj
+2484 0 obj
+<< /D [ 2457 0 R /XYZ 81.077 455.368 null ] >>
+endobj
+2485 0 obj
+<< /D [ 2457 0 R /XYZ 81.077 444.41 null ] >>
+endobj
+2486 0 obj
+<< /D [ 2457 0 R /XYZ 81.077 433.451 null ] >>
+endobj
+2487 0 obj
+<< /D [ 2457 0 R /XYZ 81.077 422.492 null ] >>
+endobj
+2488 0 obj
+<< /D [ 2457 0 R /XYZ 81.077 411.533 null ] >>
+endobj
+2489 0 obj
+<< /D [ 2457 0 R /XYZ 81.077 362.08 null ] >>
+endobj
+2490 0 obj
+<< /D [ 2457 0 R /XYZ 81.077 351.121 null ] >>
+endobj
+2491 0 obj
+<< /D [ 2457 0 R /XYZ 81.077 340.162 null ] >>
+endobj
+2492 0 obj
+<< /D [ 2457 0 R /XYZ 81.077 329.203 null ] >>
+endobj
+2493 0 obj
+<< /D [ 2457 0 R /XYZ 81.077 318.244 null ] >>
+endobj
+2494 0 obj
+<< /D [ 2457 0 R /XYZ 81.077 307.285 null ] >>
+endobj
+2495 0 obj
+<< /D [ 2457 0 R /XYZ 81.077 296.326 null ] >>
+endobj
+2496 0 obj
+<< /D [ 2457 0 R /XYZ 81.077 285.367 null ] >>
+endobj
+2497 0 obj
+<< /D [ 2457 0 R /XYZ 81.077 274.408 null ] >>
+endobj
+2498 0 obj
+<< /D [ 2457 0 R /XYZ 81.077 263.449 null ] >>
+endobj
+2499 0 obj
+<< /D [ 2457 0 R /XYZ 81.077 252.49 null ] >>
+endobj
+2500 0 obj
+<< /D [ 2457 0 R /XYZ 81.077 202.749 null ] >>
+endobj
+2501 0 obj
+<< /D [ 2457 0 R /XYZ 81.077 191.79 null ] >>
+endobj
+2502 0 obj
+<< /D [ 2457 0 R /XYZ 81.077 180.831 null ] >>
+endobj
+2503 0 obj
+<< /D [ 2457 0 R /XYZ 81.077 169.873 null ] >>
+endobj
+2504 0 obj
+<< /D [ 2457 0 R /XYZ 81.077 158.914 null ] >>
+endobj
+2505 0 obj
+<< /D [ 2457 0 R /XYZ 81.077 147.955 null ] >>
+endobj
+2506 0 obj
+<< /D [ 2457 0 R /XYZ 81.077 136.996 null ] >>
+endobj
+2507 0 obj
+<< /D [ 2457 0 R /XYZ 81.077 111.165 null ] >>
+endobj
+2508 0 obj
+<< /D [ 2457 0 R /XYZ 94.613 80.331 null ] >>
+endobj
+2456 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F23 660 0 R /F26 662 0 R /F22 473 0 R /F77 480 0 R /F63 205 0 R /F52 770 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+2514 0 obj
+<< /Filter /FlateDecode /Length 2645 >>
+stream
+xڽZKo8Wxo6Qaг9ؙ
+T./֮mIkתWfml emnG/ q26)Iig!o m<VIQ\;<
+>+g'Y TP85,Q m|wVS0QoٵbzZ[a
+?zCϬ {$0}[ m@nVa7T:Pҝ=dU9aE; ԘD5N=w(:VUUipz4OfnлMlq8h "ds̾}p4Ϫz:\稯Yg|Y2
+E{@:/i9|{ *>0>>뙗)wAצIm @:Z8DC@_XâNx x6уz^*
+ഏ'ʶ. :st"MVxoZ]ㆲ9ʡ@EȋIxuϣ;Wc^g5B
+WbsO
+hj: 4
+622Gf3D0.K bD0=ůQpRON*^Fpzki1\C6-n O|1J *h8.΃Bo>;"AGnvp=FGFh܇<6JiZrAQb|"xB>4D~ [;3\N
+endstream
+endobj
+2513 0 obj
+<< /Type /Page /Contents 2514 0 R /Resources 2512 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2254 0 R /Annots 2562 0 R >>
+endobj
+2562 0 obj
+[ 2510 0 R 2511 0 R ]
+endobj
+2510 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 460.302 706.917 472.257 718.872 ]/A << /S /GoTo /D (section.0.13) >> >>
+endobj
+2511 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 487.585 430.047 494.046 442.537 ]/A << /S /GoTo /D (Hfootnote.9) >> >>
+endobj
+2515 0 obj
+<< /D [ 2513 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+2516 0 obj
+<< /D [ 2513 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+2517 0 obj
+<< /D [ 2513 0 R /XYZ 81.077 707.216 null ] >>
+endobj
+2518 0 obj
+<< /D [ 2513 0 R /XYZ 81.077 696.257 null ] >>
+endobj
+2519 0 obj
+<< /D [ 2513 0 R /XYZ 81.077 670.384 null ] >>
+endobj
+2520 0 obj
+<< /D [ 2513 0 R /XYZ 81.077 659.425 null ] >>
+endobj
+2521 0 obj
+<< /D [ 2513 0 R /XYZ 81.077 648.467 null ] >>
+endobj
+2522 0 obj
+<< /D [ 2513 0 R /XYZ 81.077 637.508 null ] >>
+endobj
+2523 0 obj
+<< /D [ 2513 0 R /XYZ 81.077 626.549 null ] >>
+endobj
+2524 0 obj
+<< /D [ 2513 0 R /XYZ 81.077 615.59 null ] >>
+endobj
+2525 0 obj
+<< /D [ 2513 0 R /XYZ 81.077 604.631 null ] >>
+endobj
+2526 0 obj
+<< /D [ 2513 0 R /XYZ 81.077 593.672 null ] >>
+endobj
+2527 0 obj
+<< /D [ 2513 0 R /XYZ 81.077 582.713 null ] >>
+endobj
+2528 0 obj
+<< /D [ 2513 0 R /XYZ 81.077 571.754 null ] >>
+endobj
+2529 0 obj
+<< /D [ 2513 0 R /XYZ 81.077 533.927 null ] >>
+endobj
+2530 0 obj
+<< /D [ 2513 0 R /XYZ 81.077 522.968 null ] >>
+endobj
+2531 0 obj
+<< /D [ 2513 0 R /XYZ 81.077 512.009 null ] >>
+endobj
+2532 0 obj
+<< /D [ 2513 0 R /XYZ 81.077 501.05 null ] >>
+endobj
+2533 0 obj
+<< /D [ 2513 0 R /XYZ 81.077 490.091 null ] >>
+endobj
+2534 0 obj
+<< /D [ 2513 0 R /XYZ 81.077 479.132 null ] >>
+endobj
+2535 0 obj
+<< /D [ 2513 0 R /XYZ 81.077 468.173 null ] >>
+endobj
+2536 0 obj
+<< /D [ 2513 0 R /XYZ 81.077 430.346 null ] >>
+endobj
+2537 0 obj
+<< /D [ 2513 0 R /XYZ 81.077 419.387 null ] >>
+endobj
+2538 0 obj
+<< /D [ 2513 0 R /XYZ 81.077 408.428 null ] >>
+endobj
+2539 0 obj
+<< /D [ 2513 0 R /XYZ 81.077 397.469 null ] >>
+endobj
+2540 0 obj
+<< /D [ 2513 0 R /XYZ 81.077 386.51 null ] >>
+endobj
+2541 0 obj
+<< /D [ 2513 0 R /XYZ 81.077 375.551 null ] >>
+endobj
+2542 0 obj
+<< /D [ 2513 0 R /XYZ 81.077 361.634 null ] >>
+endobj
+2543 0 obj
+<< /D [ 2513 0 R /XYZ 81.077 350.675 null ] >>
+endobj
+2544 0 obj
+<< /D [ 2513 0 R /XYZ 81.077 339.716 null ] >>
+endobj
+2545 0 obj
+<< /D [ 2513 0 R /XYZ 81.077 328.757 null ] >>
+endobj
+2546 0 obj
+<< /D [ 2513 0 R /XYZ 81.077 317.798 null ] >>
+endobj
+2547 0 obj
+<< /D [ 2513 0 R /XYZ 81.077 306.839 null ] >>
+endobj
+2548 0 obj
+<< /D [ 2513 0 R /XYZ 81.077 295.881 null ] >>
+endobj
+2549 0 obj
+<< /D [ 2513 0 R /XYZ 81.077 256.091 null ] >>
+endobj
+2550 0 obj
+<< /D [ 2513 0 R /XYZ 81.077 245.132 null ] >>
+endobj
+2551 0 obj
+<< /D [ 2513 0 R /XYZ 81.077 234.173 null ] >>
+endobj
+2552 0 obj
+<< /D [ 2513 0 R /XYZ 81.077 223.214 null ] >>
+endobj
+2553 0 obj
+<< /D [ 2513 0 R /XYZ 81.077 212.255 null ] >>
+endobj
+2554 0 obj
+<< /D [ 2513 0 R /XYZ 81.077 201.296 null ] >>
+endobj
+2555 0 obj
+<< /D [ 2513 0 R /XYZ 81.077 190.337 null ] >>
+endobj
+2556 0 obj
+<< /D [ 2513 0 R /XYZ 81.077 179.379 null ] >>
+endobj
+2557 0 obj
+<< /D [ 2513 0 R /XYZ 81.077 168.42 null ] >>
+endobj
+2558 0 obj
+<< /D [ 2513 0 R /XYZ 81.077 157.461 null ] >>
+endobj
+2559 0 obj
+<< /D [ 2513 0 R /XYZ 81.077 146.502 null ] >>
+endobj
+2560 0 obj
+<< /D [ 2513 0 R /XYZ 81.077 120.629 null ] >>
+endobj
+2561 0 obj
+<< /D [ 2513 0 R /XYZ 94.613 89.795 null ] >>
+endobj
+2512 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F80 749 0 R /F19 184 0 R /F20 186 0 R /F46 176 0 R /F23 660 0 R /F22 473 0 R /F77 480 0 R /F63 205 0 R /F56 769 0 R /F52 770 0 R /F81 768 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+2566 0 obj
+<< /Filter /FlateDecode /Length 2358 >>
+stream
+xڭY[o~ϯ 4\%}^nч BPlV#K$.I1ӾX2g3ߌl3ó7xx"o>}ٌ#Fg$g$K2Q_u>}j %%K$gاyˬ\of"k{s(cvI)0":)uRCgL!™ۛ]HSOifq)6nI?NXbve4A$Nl&ZKLwYMz)sx<UDD;p$00f
+HSX!ah]=qt1u\q~K̝zƒppt-ŔKv}>֧"QLyEkX6y+X0oI^e4OC-2I< <eߒhWh"4a[D?,oX yZж`I?fɶ<,v ™udڎqWVd'Xh^3@,Ot;ƥlH@eW(FHch)<j틏u]zqwe %%YRsT/X0U;QޛS$?QkŀZ蛛U.cX*8IF౓K%'2_<K
+˒d0d$B*' s)up*AYРį;"X#1q\'`}kҠ)l@.{rahO`KlvN(M͗]n犬2k;jY]cr{w[)KkYk'ljm'j4yRDz%
+])G2jca@08ppVbG;pyTt퐻WC..#FcgfVR
+IWH)3[z8ڼ?~
+̾<KQsQMuk
+}=< )PpR BdS) L;eW}eP\#"Nҙi[7k|,rIdoi`=# 1H xJ/1S$Aḥ(*m1(|QU5-?Oϣߟ2K뵱8 = Wa1
+giU둴+8*6UuŃ~oyV;Pu1jJGkД,+QWݛU(A@k솙u]YbE t4(6M}_fbzNk|/)W۽-*uN @ .@ +>-Z]Kis3;S]86EUYpߗ(s`_ v
+g-^U"7j;9`W]fs3Òԫ(ѳ]5ᏳmL[Nf%>YpL MiصR_q1re ju5tO( 84#z[}o~vaf;i=
+_#"RaR@ ݊)*ܗIb W`?T6{L,z v_ A ŔP>ޡ><]ṅfi 0v PƐ]Y>3Lctpĸl-*U9ժ_m,* /03Y +ަKt]2g$~H,MiR
+jJS|B#E`-Sp7Nf!@ɗJpI:yRJ%l6 =7EB<U& ){:@ْڂgՍ&c@'~ٌ˭QƔ x]mh2ϴF"q;g]@َA':@4xee[%@eHdW%: To*?1 }u&Z]!#*ǔ΃G1V"LhTFZ#QPRAdjq?(߸
+ฐ3{>r*
+endstream
+endobj
+2565 0 obj
+<< /Type /Page /Contents 2566 0 R /Resources 2564 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2254 0 R /Annots 2605 0 R >>
+endobj
+2605 0 obj
+[ 2563 0 R ]
+endobj
+2563 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 486.924 557.325 498.879 569.28 ]/A << /S /GoTo /D (section.0.13) >> >>
+endobj
+2567 0 obj
+<< /D [ 2565 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+2568 0 obj
+<< /D [ 2565 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+2569 0 obj
+<< /D [ 2565 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+2570 0 obj
+<< /D [ 2565 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+2571 0 obj
+<< /D [ 2565 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+2572 0 obj
+<< /D [ 2565 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+2573 0 obj
+<< /D [ 2565 0 R /XYZ 81.077 672.194 null ] >>
+endobj
+2574 0 obj
+<< /D [ 2565 0 R /XYZ 81.077 661.235 null ] >>
+endobj
+2575 0 obj
+<< /D [ 2565 0 R /XYZ 81.077 650.276 null ] >>
+endobj
+2576 0 obj
+<< /D [ 2565 0 R /XYZ 81.077 639.317 null ] >>
+endobj
+2577 0 obj
+<< /D [ 2565 0 R /XYZ 81.077 628.358 null ] >>
+endobj
+2578 0 obj
+<< /D [ 2565 0 R /XYZ 81.077 617.4 null ] >>
+endobj
+2579 0 obj
+<< /D [ 2565 0 R /XYZ 81.077 606.441 null ] >>
+endobj
+2580 0 obj
+<< /D [ 2565 0 R /XYZ 81.077 595.482 null ] >>
+endobj
+2581 0 obj
+<< /D [ 2565 0 R /XYZ 81.077 557.624 null ] >>
+endobj
+2582 0 obj
+<< /D [ 2565 0 R /XYZ 81.077 546.665 null ] >>
+endobj
+2583 0 obj
+<< /D [ 2565 0 R /XYZ 81.077 535.706 null ] >>
+endobj
+2584 0 obj
+<< /D [ 2565 0 R /XYZ 81.077 524.747 null ] >>
+endobj
+2585 0 obj
+<< /D [ 2565 0 R /XYZ 81.077 513.788 null ] >>
+endobj
+2586 0 obj
+<< /D [ 2565 0 R /XYZ 81.077 502.829 null ] >>
+endobj
+2587 0 obj
+<< /D [ 2565 0 R /XYZ 81.077 491.87 null ] >>
+endobj
+2588 0 obj
+<< /D [ 2565 0 R /XYZ 81.077 480.911 null ] >>
+endobj
+2589 0 obj
+<< /D [ 2565 0 R /XYZ 81.077 443.053 null ] >>
+endobj
+2590 0 obj
+<< /D [ 2565 0 R /XYZ 81.077 405.195 null ] >>
+endobj
+2591 0 obj
+<< /D [ 2565 0 R /XYZ 81.077 394.236 null ] >>
+endobj
+2592 0 obj
+<< /D [ 2565 0 R /XYZ 81.077 383.278 null ] >>
+endobj
+2593 0 obj
+<< /D [ 2565 0 R /XYZ 81.077 372.319 null ] >>
+endobj
+2594 0 obj
+<< /D [ 2565 0 R /XYZ 81.077 361.36 null ] >>
+endobj
+2595 0 obj
+<< /D [ 2565 0 R /XYZ 81.077 350.401 null ] >>
+endobj
+2596 0 obj
+<< /D [ 2565 0 R /XYZ 81.077 339.442 null ] >>
+endobj
+2597 0 obj
+<< /D [ 2565 0 R /XYZ 81.077 328.483 null ] >>
+endobj
+2598 0 obj
+<< /D [ 2565 0 R /XYZ 81.077 302.58 null ] >>
+endobj
+2599 0 obj
+<< /D [ 2565 0 R /XYZ 81.077 291.621 null ] >>
+endobj
+49 0 obj
+<< /D [ 2565 0 R /XYZ 79.37 236.354 null ] >>
+endobj
+2600 0 obj
+<< /D [ 2565 0 R /XYZ 81.077 122.998 null ] >>
+endobj
+2601 0 obj
+<< /D [ 2565 0 R /XYZ 81.077 112.039 null ] >>
+endobj
+2602 0 obj
+<< /D [ 2565 0 R /XYZ 81.077 101.081 null ] >>
+endobj
+2603 0 obj
+<< /D [ 2565 0 R /XYZ 81.077 90.122 null ] >>
+endobj
+2604 0 obj
+<< /D [ 2565 0 R /XYZ 81.077 79.163 null ] >>
+endobj
+2564 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F72 187 0 R /F70 185 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+2608 0 obj
+<< /Filter /FlateDecode /Length 2194 >>
+stream
+xڽZKoS#Ab"؃:Ȳ,yH&w&1i/-G/97Ǜp"7ݼ 醡HaJ6 ()0
+ΛS/^>hP$U6EĔM\fO,mrNPgx&KEwHoCC2]G3ƈ_ϦŒgI
+K2[-|ƬTţ@Qw.էSVUg\POF>a+
+h_z2w=]m&C"/|KsKX:749i<Cz5aIr^ߓZ67EޜWĈD*ZD$P'^`yǴȒ
+֚MƇh2ׄ`:"9f*^0Oyyy{1vҴU-BRs1[T7]
+aY3*HbAV# Y.&B5iiFkյt1EX
+{ME-+!utb=Da쵌h
+# #(ѸّemPq!$p]܏8u<ǃ{PUĜ6x3?/wǾSѭULCTHDS7uS9sޕ=0uN*zKz/$򻫗Cs reঢ.;sy)m>TU&m=uWdO=_VRO6lʐⓛpw5Bltq%^M/&(;5)+WFEoES ~e~9`?d+
+^vgȞp <d7[Hs$iAB{6ɧimmK:!O6ULqJrطZo$Fcfn:83I.D
+ɡn|u_z% % (˻dX"͖">_"ەuYߜQgw`gZW:ȏ5= %uSW} ʛ6i4.s\􌦯_]z0@A*~SU=IRVb37Ϫ3kSl3;h8H)
+3wZ /] ؃5[c^TO*Z'w 7fJ"T
+'A]7PНmʯtZ?~NO1k  }(*PWq_z$<S6qDg fW'ɪV 7:(=@3lmw0ODFAcoD[\6H ԡYsX 3e(Iq
+/oO|ei44&U^at0+ab]})SS3'W頵1빤T;ѷAӱX=M/W= ap%
+Ǥ^{;gAS+W堽%yo>:jmlHsø(S*C~A'Q8RHɩ,؋(UX9v XA'mnK2x*{XA DvGpy\lgIrA{;:f _w)EOIJ?;Ѷ5+Mhk._$-Yp~rg+h*ihmg?HIQʯ/ W$@>ywM\G
+endstream
+endobj
+2607 0 obj
+<< /Type /Page /Contents 2608 0 R /Resources 2606 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2254 0 R >>
+endobj
+2609 0 obj
+<< /D [ 2607 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+2610 0 obj
+<< /D [ 2607 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+2611 0 obj
+<< /D [ 2607 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+2612 0 obj
+<< /D [ 2607 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+2613 0 obj
+<< /D [ 2607 0 R /XYZ 81.077 704.721 null ] >>
+endobj
+2614 0 obj
+<< /D [ 2607 0 R /XYZ 81.077 676.26 null ] >>
+endobj
+2615 0 obj
+<< /D [ 2607 0 R /XYZ 81.077 647.799 null ] >>
+endobj
+2616 0 obj
+<< /D [ 2607 0 R /XYZ 81.077 619.338 null ] >>
+endobj
+2617 0 obj
+<< /D [ 2607 0 R /XYZ 81.077 608.38 null ] >>
+endobj
+2618 0 obj
+<< /D [ 2607 0 R /XYZ 81.077 597.421 null ] >>
+endobj
+2619 0 obj
+<< /D [ 2607 0 R /XYZ 81.077 586.462 null ] >>
+endobj
+2620 0 obj
+<< /D [ 2607 0 R /XYZ 81.077 575.503 null ] >>
+endobj
+2621 0 obj
+<< /D [ 2607 0 R /XYZ 81.077 564.544 null ] >>
+endobj
+2622 0 obj
+<< /D [ 2607 0 R /XYZ 81.077 553.585 null ] >>
+endobj
+2623 0 obj
+<< /D [ 2607 0 R /XYZ 81.077 542.626 null ] >>
+endobj
+2624 0 obj
+<< /D [ 2607 0 R /XYZ 81.077 531.667 null ] >>
+endobj
+2625 0 obj
+<< /D [ 2607 0 R /XYZ 81.077 520.708 null ] >>
+endobj
+2626 0 obj
+<< /D [ 2607 0 R /XYZ 81.077 509.749 null ] >>
+endobj
+2627 0 obj
+<< /D [ 2607 0 R /XYZ 81.077 498.791 null ] >>
+endobj
+2628 0 obj
+<< /D [ 2607 0 R /XYZ 81.077 487.832 null ] >>
+endobj
+2629 0 obj
+<< /D [ 2607 0 R /XYZ 81.077 476.873 null ] >>
+endobj
+2630 0 obj
+<< /D [ 2607 0 R /XYZ 81.077 425.363 null ] >>
+endobj
+2631 0 obj
+<< /D [ 2607 0 R /XYZ 81.077 414.404 null ] >>
+endobj
+2632 0 obj
+<< /D [ 2607 0 R /XYZ 81.077 390.575 null ] >>
+endobj
+2633 0 obj
+<< /D [ 2607 0 R /XYZ 81.077 379.616 null ] >>
+endobj
+2634 0 obj
+<< /D [ 2607 0 R /XYZ 81.077 348.463 null ] >>
+endobj
+2635 0 obj
+<< /D [ 2607 0 R /XYZ 81.077 337.504 null ] >>
+endobj
+2636 0 obj
+<< /D [ 2607 0 R /XYZ 81.077 326.545 null ] >>
+endobj
+2637 0 obj
+<< /D [ 2607 0 R /XYZ 81.077 315.586 null ] >>
+endobj
+2638 0 obj
+<< /D [ 2607 0 R /XYZ 81.077 261.438 null ] >>
+endobj
+2639 0 obj
+<< /D [ 2607 0 R /XYZ 81.077 250.479 null ] >>
+endobj
+2640 0 obj
+<< /D [ 2607 0 R /XYZ 81.077 239.52 null ] >>
+endobj
+2641 0 obj
+<< /D [ 2607 0 R /XYZ 81.077 228.561 null ] >>
+endobj
+2642 0 obj
+<< /D [ 2607 0 R /XYZ 81.077 217.602 null ] >>
+endobj
+2643 0 obj
+<< /D [ 2607 0 R /XYZ 81.077 206.643 null ] >>
+endobj
+2644 0 obj
+<< /D [ 2607 0 R /XYZ 81.077 195.684 null ] >>
+endobj
+2645 0 obj
+<< /D [ 2607 0 R /XYZ 81.077 184.725 null ] >>
+endobj
+2646 0 obj
+<< /D [ 2607 0 R /XYZ 81.077 173.767 null ] >>
+endobj
+2647 0 obj
+<< /D [ 2607 0 R /XYZ 81.077 162.808 null ] >>
+endobj
+2648 0 obj
+<< /D [ 2607 0 R /XYZ 81.077 151.849 null ] >>
+endobj
+2649 0 obj
+<< /D [ 2607 0 R /XYZ 81.077 140.89 null ] >>
+endobj
+2650 0 obj
+<< /D [ 2607 0 R /XYZ 81.077 129.931 null ] >>
+endobj
+2651 0 obj
+<< /D [ 2607 0 R /XYZ 81.077 118.972 null ] >>
+endobj
+2652 0 obj
+<< /D [ 2607 0 R /XYZ 81.077 89.596 null ] >>
+endobj
+2653 0 obj
+<< /D [ 2607 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+2606 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F70 185 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+2657 0 obj
+<< /Filter /FlateDecode /Length 2046 >>
+stream
+xZMoϯ0E⅏ZL t^[YS-d)dt{/I+z0ƒHKKx_>?0H*b@/BBI$aw7Te/>Pr[T싶y
+rj"pSIcWn h)H8JP1m˺ mVXܘʶ볍OTUDԂAyyM"PcDwuL%鐟<0ou%Ԝ=믥m)4G%Z(
+:gf6 U:?]T%FM333@ydf066:F+<cuU|FLff"ąP R zH
+\.lS]: Z)3se1ah̔J(1A_C' |WM(>w<]4]z^l[cہ?FO_'T4G8(Is!B"Iҷ5Mx4B ,͒.B1a]B1OJs")ͱY`mS<U.yK!5"!b8F5wdA 972'9cVoE1Nu0Q'}:9<L3e4(B4)D`Vu NdH@$%A&ALPX&4I"tz8A&,) $Hؖ$(B l̂1HDM1:omLV侩QH@D%hN%:I"M,
+sfe{Jx Ɠw[pm;}CwFmc ͱ+9tд،ncUحgA[l]&. Ee/7=oA?lƶmAkε_NݦÎ_ו~_0D,Mn}Y_>2rѝۭhInw{84~ϲma_|i>mtFӍ0X]&qߤgp0Q QiGo$>g/]oٶX H2U`<ye DH`<J}| "2$4m_[YKmb2&;7{jVWW:1X!i7!39=Gṿƕ4[M.H GY Pp\V,CO[7~a[e?4͏}sGzvל;M_6`
+endstream
+endobj
+2656 0 obj
+<< /Type /Page /Contents 2657 0 R /Resources 2655 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2254 0 R >>
+endobj
+2658 0 obj
+<< /D [ 2656 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+2659 0 obj
+<< /D [ 2656 0 R /XYZ 81.077 742.929 null ] >>
+endobj
+2660 0 obj
+<< /D [ 2656 0 R /XYZ 81.077 731.97 null ] >>
+endobj
+2661 0 obj
+<< /D [ 2656 0 R /XYZ 81.077 721.011 null ] >>
+endobj
+2662 0 obj
+<< /D [ 2656 0 R /XYZ 81.077 710.052 null ] >>
+endobj
+2663 0 obj
+<< /D [ 2656 0 R /XYZ 81.077 699.093 null ] >>
+endobj
+2664 0 obj
+<< /D [ 2656 0 R /XYZ 81.077 688.134 null ] >>
+endobj
+2665 0 obj
+<< /D [ 2656 0 R /XYZ 81.077 653.265 null ] >>
+endobj
+2666 0 obj
+<< /D [ 2656 0 R /XYZ 81.077 612.418 null ] >>
+endobj
+2667 0 obj
+<< /D [ 2656 0 R /XYZ 81.077 601.459 null ] >>
+endobj
+2668 0 obj
+<< /D [ 2656 0 R /XYZ 81.077 590.5 null ] >>
+endobj
+2669 0 obj
+<< /D [ 2656 0 R /XYZ 81.077 579.542 null ] >>
+endobj
+2670 0 obj
+<< /D [ 2656 0 R /XYZ 81.077 568.583 null ] >>
+endobj
+2671 0 obj
+<< /D [ 2656 0 R /XYZ 81.077 557.624 null ] >>
+endobj
+2672 0 obj
+<< /D [ 2656 0 R /XYZ 81.077 546.665 null ] >>
+endobj
+2673 0 obj
+<< /D [ 2656 0 R /XYZ 81.077 535.706 null ] >>
+endobj
+2674 0 obj
+<< /D [ 2656 0 R /XYZ 81.077 524.747 null ] >>
+endobj
+2675 0 obj
+<< /D [ 2656 0 R /XYZ 81.077 513.788 null ] >>
+endobj
+2676 0 obj
+<< /D [ 2656 0 R /XYZ 81.077 502.829 null ] >>
+endobj
+2677 0 obj
+<< /D [ 2656 0 R /XYZ 81.077 491.87 null ] >>
+endobj
+2678 0 obj
+<< /D [ 2656 0 R /XYZ 81.077 480.911 null ] >>
+endobj
+2679 0 obj
+<< /D [ 2656 0 R /XYZ 81.077 469.953 null ] >>
+endobj
+2680 0 obj
+<< /D [ 2656 0 R /XYZ 81.077 458.994 null ] >>
+endobj
+2681 0 obj
+<< /D [ 2656 0 R /XYZ 81.077 448.035 null ] >>
+endobj
+2682 0 obj
+<< /D [ 2656 0 R /XYZ 81.077 437.076 null ] >>
+endobj
+2683 0 obj
+<< /D [ 2656 0 R /XYZ 81.077 426.117 null ] >>
+endobj
+2684 0 obj
+<< /D [ 2656 0 R /XYZ 81.077 415.158 null ] >>
+endobj
+2685 0 obj
+<< /D [ 2656 0 R /XYZ 81.077 404.199 null ] >>
+endobj
+2686 0 obj
+<< /D [ 2656 0 R /XYZ 81.077 393.24 null ] >>
+endobj
+2687 0 obj
+<< /D [ 2656 0 R /XYZ 81.077 382.281 null ] >>
+endobj
+2688 0 obj
+<< /D [ 2656 0 R /XYZ 81.077 371.322 null ] >>
+endobj
+2689 0 obj
+<< /D [ 2656 0 R /XYZ 81.077 360.363 null ] >>
+endobj
+2690 0 obj
+<< /D [ 2656 0 R /XYZ 81.077 349.405 null ] >>
+endobj
+2691 0 obj
+<< /D [ 2656 0 R /XYZ 81.077 338.446 null ] >>
+endobj
+2692 0 obj
+<< /D [ 2656 0 R /XYZ 81.077 327.487 null ] >>
+endobj
+2693 0 obj
+<< /D [ 2656 0 R /XYZ 81.077 316.528 null ] >>
+endobj
+2694 0 obj
+<< /D [ 2656 0 R /XYZ 81.077 305.569 null ] >>
+endobj
+2695 0 obj
+<< /D [ 2656 0 R /XYZ 81.077 294.61 null ] >>
+endobj
+2696 0 obj
+<< /D [ 2656 0 R /XYZ 81.077 241.808 null ] >>
+endobj
+2697 0 obj
+<< /D [ 2656 0 R /XYZ 81.077 230.849 null ] >>
+endobj
+2698 0 obj
+<< /D [ 2656 0 R /XYZ 81.077 219.89 null ] >>
+endobj
+2699 0 obj
+<< /D [ 2656 0 R /XYZ 81.077 208.931 null ] >>
+endobj
+2700 0 obj
+<< /D [ 2656 0 R /XYZ 81.077 197.972 null ] >>
+endobj
+2701 0 obj
+<< /D [ 2656 0 R /XYZ 81.077 187.014 null ] >>
+endobj
+2702 0 obj
+<< /D [ 2656 0 R /XYZ 81.077 122.256 null ] >>
+endobj
+2703 0 obj
+<< /D [ 2656 0 R /XYZ 81.077 111.297 null ] >>
+endobj
+2655 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F20 186 0 R /F73 189 0 R /F69 183 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+2706 0 obj
+<< /Filter /FlateDecode /Length 2037 >>
+stream
+xZo۶_!`Va6,`kpwmvR*HSan$Rsi:I.R{5Γܮ.0L NdL(8&ήb:ٖKh0'r =60l_/wZu8Tmשad6M6e5lƼ|籮ʺv/-7Nծ1o<֘h 0`-Cey]̐VY_o1-p_
+\kYrU|l(kr eb)*~P<[Z]F,!-4 VjW/旂ɨD z7J{8o@y$ih92e]?n۪f[&̽mkPo`[C$։maK’@H*8M<Ôt22""!C"O2p<D7Uâ_rgrue*)nqcƿH
+&̩=MBt8բ{zx%S(ϝy>3kG
+hAN[)c [X\Hxxa ;<Ao6mQw=WCg9S~b R VPևpSm&ԙ[ys;8}I?@ y.)M!
+
+ e:1"^e<HZ<JgPӶ.Y`v!\'V_Asm VaTt)Q)i\(J
+d)He74 5M$ R}pQXϿ̳LQq,[sA峻%g*w2#?[Uٿ7#9\k5qKHN>eZ\Kx78m'o\.틭5"江ZAO韨Bs<;OK$5~B .usL0{
+endstream
+endobj
+2705 0 obj
+<< /Type /Page /Contents 2706 0 R /Resources 2704 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2759 0 R /Annots 2760 0 R >>
+endobj
+2760 0 obj
+[ 2654 0 R ]
+endobj
+2654 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 371.83 733.664 382.263 746.154 ]/A << /S /GoTo /D (Hfootnote.10) >> >>
+endobj
+2707 0 obj
+<< /D [ 2705 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+2708 0 obj
+<< /D [ 2705 0 R /XYZ 81.077 731.048 null ] >>
+endobj
+2709 0 obj
+<< /D [ 2705 0 R /XYZ 81.077 720.089 null ] >>
+endobj
+2710 0 obj
+<< /D [ 2705 0 R /XYZ 81.077 709.13 null ] >>
+endobj
+2711 0 obj
+<< /D [ 2705 0 R /XYZ 81.077 680.387 null ] >>
+endobj
+2712 0 obj
+<< /D [ 2705 0 R /XYZ 81.077 669.428 null ] >>
+endobj
+2713 0 obj
+<< /D [ 2705 0 R /XYZ 81.077 658.469 null ] >>
+endobj
+2714 0 obj
+<< /D [ 2705 0 R /XYZ 81.077 647.51 null ] >>
+endobj
+2715 0 obj
+<< /D [ 2705 0 R /XYZ 81.077 636.551 null ] >>
+endobj
+2716 0 obj
+<< /D [ 2705 0 R /XYZ 81.077 625.592 null ] >>
+endobj
+2717 0 obj
+<< /D [ 2705 0 R /XYZ 81.077 614.633 null ] >>
+endobj
+2718 0 obj
+<< /D [ 2705 0 R /XYZ 81.077 603.674 null ] >>
+endobj
+2719 0 obj
+<< /D [ 2705 0 R /XYZ 81.077 592.716 null ] >>
+endobj
+2720 0 obj
+<< /D [ 2705 0 R /XYZ 81.077 581.757 null ] >>
+endobj
+2721 0 obj
+<< /D [ 2705 0 R /XYZ 81.077 570.798 null ] >>
+endobj
+2722 0 obj
+<< /D [ 2705 0 R /XYZ 81.077 559.839 null ] >>
+endobj
+2723 0 obj
+<< /D [ 2705 0 R /XYZ 81.077 519.437 null ] >>
+endobj
+2724 0 obj
+<< /D [ 2705 0 R /XYZ 81.077 508.478 null ] >>
+endobj
+2725 0 obj
+<< /D [ 2705 0 R /XYZ 81.077 497.519 null ] >>
+endobj
+2726 0 obj
+<< /D [ 2705 0 R /XYZ 81.077 486.56 null ] >>
+endobj
+2727 0 obj
+<< /D [ 2705 0 R /XYZ 81.077 475.602 null ] >>
+endobj
+2728 0 obj
+<< /D [ 2705 0 R /XYZ 81.077 464.643 null ] >>
+endobj
+2729 0 obj
+<< /D [ 2705 0 R /XYZ 81.077 435.899 null ] >>
+endobj
+2730 0 obj
+<< /D [ 2705 0 R /XYZ 81.077 424.94 null ] >>
+endobj
+2731 0 obj
+<< /D [ 2705 0 R /XYZ 81.077 413.982 null ] >>
+endobj
+2732 0 obj
+<< /D [ 2705 0 R /XYZ 81.077 398.19 null ] >>
+endobj
+2733 0 obj
+<< /D [ 2705 0 R /XYZ 81.077 387.231 null ] >>
+endobj
+2734 0 obj
+<< /D [ 2705 0 R /XYZ 81.077 376.272 null ] >>
+endobj
+2735 0 obj
+<< /D [ 2705 0 R /XYZ 81.077 365.313 null ] >>
+endobj
+2736 0 obj
+<< /D [ 2705 0 R /XYZ 81.077 354.354 null ] >>
+endobj
+2737 0 obj
+<< /D [ 2705 0 R /XYZ 81.077 343.395 null ] >>
+endobj
+2738 0 obj
+<< /D [ 2705 0 R /XYZ 81.077 332.436 null ] >>
+endobj
+2739 0 obj
+<< /D [ 2705 0 R /XYZ 81.077 321.477 null ] >>
+endobj
+2740 0 obj
+<< /D [ 2705 0 R /XYZ 81.077 310.518 null ] >>
+endobj
+2741 0 obj
+<< /D [ 2705 0 R /XYZ 81.077 299.56 null ] >>
+endobj
+2742 0 obj
+<< /D [ 2705 0 R /XYZ 81.077 288.601 null ] >>
+endobj
+2743 0 obj
+<< /D [ 2705 0 R /XYZ 81.077 277.642 null ] >>
+endobj
+2744 0 obj
+<< /D [ 2705 0 R /XYZ 81.077 266.683 null ] >>
+endobj
+2745 0 obj
+<< /D [ 2705 0 R /XYZ 81.077 250.891 null ] >>
+endobj
+2746 0 obj
+<< /D [ 2705 0 R /XYZ 81.077 239.932 null ] >>
+endobj
+2747 0 obj
+<< /D [ 2705 0 R /XYZ 81.077 228.973 null ] >>
+endobj
+2748 0 obj
+<< /D [ 2705 0 R /XYZ 81.077 218.014 null ] >>
+endobj
+2749 0 obj
+<< /D [ 2705 0 R /XYZ 81.077 207.055 null ] >>
+endobj
+2750 0 obj
+<< /D [ 2705 0 R /XYZ 81.077 196.096 null ] >>
+endobj
+2751 0 obj
+<< /D [ 2705 0 R /XYZ 81.077 185.138 null ] >>
+endobj
+2752 0 obj
+<< /D [ 2705 0 R /XYZ 81.077 174.179 null ] >>
+endobj
+2753 0 obj
+<< /D [ 2705 0 R /XYZ 81.077 163.22 null ] >>
+endobj
+2754 0 obj
+<< /D [ 2705 0 R /XYZ 81.077 152.261 null ] >>
+endobj
+2755 0 obj
+<< /D [ 2705 0 R /XYZ 81.077 141.302 null ] >>
+endobj
+2756 0 obj
+<< /D [ 2705 0 R /XYZ 81.077 130.343 null ] >>
+endobj
+2757 0 obj
+<< /D [ 2705 0 R /XYZ 81.077 119.384 null ] >>
+endobj
+2758 0 obj
+<< /D [ 2705 0 R /XYZ 94.613 89.795 null ] >>
+endobj
+2704 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F20 186 0 R /F22 473 0 R /F73 189 0 R /F69 183 0 R /F70 185 0 R /F77 480 0 R /F63 205 0 R /F81 768 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+2763 0 obj
+<< /Filter /FlateDecode /Length 1759 >>
+stream
+xڭZMoFW(jo-=d' hHJQq"ʲQ}H|ܙٝ73;|<񷫓,k9=ap DDH3B5\Ëò} `وpiBܻ{ F !I1; ㊰5崃ߏ
+\JY(~0{+?hgK0"2βþ(^8ns|:ϠBSE % `\;
+N(1($P hϖ&{U,.@<;ђF uyGJGԐotlp
+÷l[->JX^!\D
+l8GP
+N<.zkkG/</{Yk̷emԭgbxtt
+iiH>=ޘTr[(Vr4>1K ó5=3_ B5dAtIyE8?^pf k-^@ *Nڝ}ⶱ7{&dK$4W&e+=!HF[/ڿ=#
+hBo3}:W'(
+endstream
+endobj
+2762 0 obj
+<< /Type /Page /Contents 2763 0 R /Resources 2761 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2759 0 R >>
+endobj
+2764 0 obj
+<< /D [ 2762 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+2765 0 obj
+<< /D [ 2762 0 R /XYZ 81.077 754.966 null ] >>
+endobj
+2766 0 obj
+<< /D [ 2762 0 R /XYZ 81.077 744.007 null ] >>
+endobj
+2767 0 obj
+<< /D [ 2762 0 R /XYZ 81.077 733.048 null ] >>
+endobj
+2768 0 obj
+<< /D [ 2762 0 R /XYZ 81.077 722.089 null ] >>
+endobj
+2769 0 obj
+<< /D [ 2762 0 R /XYZ 81.077 711.13 null ] >>
+endobj
+2770 0 obj
+<< /D [ 2762 0 R /XYZ 81.077 700.171 null ] >>
+endobj
+2771 0 obj
+<< /D [ 2762 0 R /XYZ 81.077 665.629 null ] >>
+endobj
+2772 0 obj
+<< /D [ 2762 0 R /XYZ 81.077 654.67 null ] >>
+endobj
+2773 0 obj
+<< /D [ 2762 0 R /XYZ 81.077 625.942 null ] >>
+endobj
+2774 0 obj
+<< /D [ 2762 0 R /XYZ 81.077 614.983 null ] >>
+endobj
+2775 0 obj
+<< /D [ 2762 0 R /XYZ 81.077 604.025 null ] >>
+endobj
+2776 0 obj
+<< /D [ 2762 0 R /XYZ 81.077 588.248 null ] >>
+endobj
+2777 0 obj
+<< /D [ 2762 0 R /XYZ 81.077 577.289 null ] >>
+endobj
+2778 0 obj
+<< /D [ 2762 0 R /XYZ 81.077 566.33 null ] >>
+endobj
+2779 0 obj
+<< /D [ 2762 0 R /XYZ 81.077 555.371 null ] >>
+endobj
+2780 0 obj
+<< /D [ 2762 0 R /XYZ 81.077 544.412 null ] >>
+endobj
+2781 0 obj
+<< /D [ 2762 0 R /XYZ 81.077 533.453 null ] >>
+endobj
+2782 0 obj
+<< /D [ 2762 0 R /XYZ 81.077 517.677 null ] >>
+endobj
+2783 0 obj
+<< /D [ 2762 0 R /XYZ 81.077 506.718 null ] >>
+endobj
+2784 0 obj
+<< /D [ 2762 0 R /XYZ 81.077 495.759 null ] >>
+endobj
+2785 0 obj
+<< /D [ 2762 0 R /XYZ 81.077 484.8 null ] >>
+endobj
+2786 0 obj
+<< /D [ 2762 0 R /XYZ 81.077 473.841 null ] >>
+endobj
+2787 0 obj
+<< /D [ 2762 0 R /XYZ 81.077 462.882 null ] >>
+endobj
+2788 0 obj
+<< /D [ 2762 0 R /XYZ 81.077 451.923 null ] >>
+endobj
+2789 0 obj
+<< /D [ 2762 0 R /XYZ 81.077 440.964 null ] >>
+endobj
+2790 0 obj
+<< /D [ 2762 0 R /XYZ 81.077 425.188 null ] >>
+endobj
+2791 0 obj
+<< /D [ 2762 0 R /XYZ 81.077 414.229 null ] >>
+endobj
+2792 0 obj
+<< /D [ 2762 0 R /XYZ 81.077 403.27 null ] >>
+endobj
+2793 0 obj
+<< /D [ 2762 0 R /XYZ 81.077 392.311 null ] >>
+endobj
+2794 0 obj
+<< /D [ 2762 0 R /XYZ 81.077 381.352 null ] >>
+endobj
+2795 0 obj
+<< /D [ 2762 0 R /XYZ 81.077 350.713 null ] >>
+endobj
+2796 0 obj
+<< /D [ 2762 0 R /XYZ 81.077 339.755 null ] >>
+endobj
+2797 0 obj
+<< /D [ 2762 0 R /XYZ 81.077 328.796 null ] >>
+endobj
+2798 0 obj
+<< /D [ 2762 0 R /XYZ 81.077 317.837 null ] >>
+endobj
+2799 0 obj
+<< /D [ 2762 0 R /XYZ 81.077 306.878 null ] >>
+endobj
+2800 0 obj
+<< /D [ 2762 0 R /XYZ 81.077 295.919 null ] >>
+endobj
+2801 0 obj
+<< /D [ 2762 0 R /XYZ 81.077 284.96 null ] >>
+endobj
+2802 0 obj
+<< /D [ 2762 0 R /XYZ 81.077 274.001 null ] >>
+endobj
+2803 0 obj
+<< /D [ 2762 0 R /XYZ 81.077 263.042 null ] >>
+endobj
+2804 0 obj
+<< /D [ 2762 0 R /XYZ 81.077 252.083 null ] >>
+endobj
+2805 0 obj
+<< /D [ 2762 0 R /XYZ 81.077 241.124 null ] >>
+endobj
+2806 0 obj
+<< /D [ 2762 0 R /XYZ 81.077 198.53 null ] >>
+endobj
+2807 0 obj
+<< /D [ 2762 0 R /XYZ 81.077 187.572 null ] >>
+endobj
+2808 0 obj
+<< /D [ 2762 0 R /XYZ 81.077 176.613 null ] >>
+endobj
+2809 0 obj
+<< /D [ 2762 0 R /XYZ 81.077 165.654 null ] >>
+endobj
+2810 0 obj
+<< /D [ 2762 0 R /XYZ 81.077 154.695 null ] >>
+endobj
+2811 0 obj
+<< /D [ 2762 0 R /XYZ 81.077 122.473 null ] >>
+endobj
+2812 0 obj
+<< /D [ 2762 0 R /XYZ 81.077 111.514 null ] >>
+endobj
+2813 0 obj
+<< /D [ 2762 0 R /XYZ 81.077 100.555 null ] >>
+endobj
+2814 0 obj
+<< /D [ 2762 0 R /XYZ 81.077 89.596 null ] >>
+endobj
+2815 0 obj
+<< /D [ 2762 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+2761 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F20 186 0 R /F73 189 0 R /F69 183 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+2818 0 obj
+<< /Filter /FlateDecode /Length 1829 >>
+stream
+xڽZko6_a`_l`@b6À0d[Nؒ';͊"H%Sr@IxKK^^2,'\]h>` lp9?%2@Q=ЊQtp|2[g X P4\L|9SdU|9$8َl6u&qrUjaJh 1l*Nzt0.>.Ң#}
+S޺!$I6$M^ޙ&ebR *Vp;(2E Um_XƨRvn_=R[=;ڈWP9
+-vgɲ~JUmk6,i n"HuF2 jLP${]a)l8ϋF ‡f[Z=8^5i\ut_`y,o~cSZvz`, >b[zjgR߈zV%Ӽ(fjl]וվOTcG4hżYR\'oƳt,u[}tlſY}YNͪyK_Y}NFMdH0Bf41|:~um1ޤesM>ؽ4-*ڲ93F1\BqY=YfiipfOes8!zzCL1dƅ !;5D/b!nNk[
+Ik:h!p|6j/ %-hRERh y}G=DRWKxW$vΞnk[$tZEW!s0@d>L
+p/RZ>\&_^5$DU+8 ?Z%`xiP#,uHVqJrep/Ԋ'B:Ja D{EWH`~fq@-FR_EGNP8O۬c/(z#{6 p;
+endstream
+endobj
+2817 0 obj
+<< /Type /Page /Contents 2818 0 R /Resources 2816 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2759 0 R >>
+endobj
+2819 0 obj
+<< /D [ 2817 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+2820 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+2821 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 715.533 null ] >>
+endobj
+2822 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 704.574 null ] >>
+endobj
+2823 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 693.615 null ] >>
+endobj
+2824 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 682.656 null ] >>
+endobj
+2825 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 671.697 null ] >>
+endobj
+2826 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 660.738 null ] >>
+endobj
+2827 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 649.779 null ] >>
+endobj
+2828 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 638.821 null ] >>
+endobj
+2829 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 627.862 null ] >>
+endobj
+2830 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 616.903 null ] >>
+endobj
+2831 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 605.944 null ] >>
+endobj
+2832 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 594.985 null ] >>
+endobj
+2833 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 584.026 null ] >>
+endobj
+2834 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 573.067 null ] >>
+endobj
+2835 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 562.108 null ] >>
+endobj
+2836 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 551.149 null ] >>
+endobj
+2837 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 540.19 null ] >>
+endobj
+2838 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 529.231 null ] >>
+endobj
+2839 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 518.273 null ] >>
+endobj
+2840 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 507.314 null ] >>
+endobj
+2841 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 496.355 null ] >>
+endobj
+2842 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 485.396 null ] >>
+endobj
+2843 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 474.437 null ] >>
+endobj
+2844 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 463.478 null ] >>
+endobj
+2845 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 452.519 null ] >>
+endobj
+2846 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 441.56 null ] >>
+endobj
+2847 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 430.601 null ] >>
+endobj
+2848 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 419.642 null ] >>
+endobj
+2849 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 408.684 null ] >>
+endobj
+2850 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 397.725 null ] >>
+endobj
+2851 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 386.766 null ] >>
+endobj
+2852 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 375.807 null ] >>
+endobj
+2853 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 364.848 null ] >>
+endobj
+2854 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 353.889 null ] >>
+endobj
+2855 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 342.93 null ] >>
+endobj
+2856 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 331.971 null ] >>
+endobj
+2857 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 321.012 null ] >>
+endobj
+2858 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 310.053 null ] >>
+endobj
+2859 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 299.094 null ] >>
+endobj
+2860 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 288.136 null ] >>
+endobj
+2861 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 277.177 null ] >>
+endobj
+2862 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 266.218 null ] >>
+endobj
+2863 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 232.203 null ] >>
+endobj
+2864 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 221.244 null ] >>
+endobj
+2865 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 210.285 null ] >>
+endobj
+2866 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 181.821 null ] >>
+endobj
+2867 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 170.862 null ] >>
+endobj
+2868 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 159.903 null ] >>
+endobj
+2869 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 148.944 null ] >>
+endobj
+2870 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 133.431 null ] >>
+endobj
+2871 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 122.473 null ] >>
+endobj
+2872 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 111.514 null ] >>
+endobj
+2873 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 100.555 null ] >>
+endobj
+2874 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 89.596 null ] >>
+endobj
+2875 0 obj
+<< /D [ 2817 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+2816 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F76 318 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+2878 0 obj
+<< /Filter /FlateDecode /Length 2335 >>
+stream
+xڵZ[o8~ϯ00/6аJ (P؇PlV+K^Ie9%JEtEP\x.ߡgqO$?>ބlƑd€ ~2۾Mf `& E\W\ePU-_1܎}O ><1EzƼe`j-,!1*\tNYfjв?P<S /3TTPF" sԅ$16v9UgQ<*}-h8: (k*: s+82iRVX_ӏQp=.F?\cq9CHvS T$@5qT}RlUyrZ-ל?%jgת/yzg;0CTv x>ХY_=g֊Ы,8 oB%CBրz 9 g.?.k|0P"0W^y^U1( RxT6G|m<0FDWx(cY_2߼!d]3s֠j(ɒ*get0r`UQ8
+܅!E
+q)
+G[ƣI@ˡR[>K!PVP@ I|!A+J\Sb.˨BQ]N
+6U̥4\PFl d1%uOՄDLXqi 45GX 2oN2s7=}l@gi|t>j՚ 20BI}8aahio*;HY8J(MY7 Kڻqk n}17fNl[ =&W]8HbiĉEHvI=Փ60-$O[=@<t:WjQmχUWf9sUm&uk,H=Lz]:#<p2DќIXG@7Apv}lȌJuʸ)󓯒T!:G'v}av$:Π]`q]K)vod.Ԙ
+ރ~mad 6Pyyila68f^3LN,cTύz$C
+H/۩poClsrd2TJO;U$(m[O>ڛSOWry Y' [+U8EU^-A7NaIf> ϧ{*!b,$w$$UΜ'D!òfNJ/A
+pq"z|U"IN{WggRc`\GGר8_KcZBt<>9H#^~?WV<`1R(-_wW=<
+endstream
+endobj
+2877 0 obj
+<< /Type /Page /Contents 2878 0 R /Resources 2876 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2759 0 R >>
+endobj
+2879 0 obj
+<< /D [ 2877 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+2880 0 obj
+<< /D [ 2877 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+2881 0 obj
+<< /D [ 2877 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+2882 0 obj
+<< /D [ 2877 0 R /XYZ 81.077 711.053 null ] >>
+endobj
+2883 0 obj
+<< /D [ 2877 0 R /XYZ 81.077 700.094 null ] >>
+endobj
+2884 0 obj
+<< /D [ 2877 0 R /XYZ 81.077 660.046 null ] >>
+endobj
+2885 0 obj
+<< /D [ 2877 0 R /XYZ 81.077 649.087 null ] >>
+endobj
+2886 0 obj
+<< /D [ 2877 0 R /XYZ 81.077 638.128 null ] >>
+endobj
+2887 0 obj
+<< /D [ 2877 0 R /XYZ 81.077 627.17 null ] >>
+endobj
+2888 0 obj
+<< /D [ 2877 0 R /XYZ 81.077 612.028 null ] >>
+endobj
+2889 0 obj
+<< /D [ 2877 0 R /XYZ 81.077 601.069 null ] >>
+endobj
+2890 0 obj
+<< /D [ 2877 0 R /XYZ 81.077 554.25 null ] >>
+endobj
+2891 0 obj
+<< /D [ 2877 0 R /XYZ 81.077 543.291 null ] >>
+endobj
+2892 0 obj
+<< /D [ 2877 0 R /XYZ 81.077 532.332 null ] >>
+endobj
+2893 0 obj
+<< /D [ 2877 0 R /XYZ 81.077 521.373 null ] >>
+endobj
+2894 0 obj
+<< /D [ 2877 0 R /XYZ 81.077 510.414 null ] >>
+endobj
+2895 0 obj
+<< /D [ 2877 0 R /XYZ 81.077 499.455 null ] >>
+endobj
+2896 0 obj
+<< /D [ 2877 0 R /XYZ 81.077 488.496 null ] >>
+endobj
+2897 0 obj
+<< /D [ 2877 0 R /XYZ 81.077 477.537 null ] >>
+endobj
+2898 0 obj
+<< /D [ 2877 0 R /XYZ 81.077 413.579 null ] >>
+endobj
+2899 0 obj
+<< /D [ 2877 0 R /XYZ 81.077 402.62 null ] >>
+endobj
+2900 0 obj
+<< /D [ 2877 0 R /XYZ 81.077 391.661 null ] >>
+endobj
+2901 0 obj
+<< /D [ 2877 0 R /XYZ 81.077 380.702 null ] >>
+endobj
+2902 0 obj
+<< /D [ 2877 0 R /XYZ 81.077 369.743 null ] >>
+endobj
+2903 0 obj
+<< /D [ 2877 0 R /XYZ 81.077 358.785 null ] >>
+endobj
+2904 0 obj
+<< /D [ 2877 0 R /XYZ 81.077 347.826 null ] >>
+endobj
+2905 0 obj
+<< /D [ 2877 0 R /XYZ 81.077 336.867 null ] >>
+endobj
+2906 0 obj
+<< /D [ 2877 0 R /XYZ 81.077 325.908 null ] >>
+endobj
+2907 0 obj
+<< /D [ 2877 0 R /XYZ 81.077 314.949 null ] >>
+endobj
+2908 0 obj
+<< /D [ 2877 0 R /XYZ 81.077 303.99 null ] >>
+endobj
+2909 0 obj
+<< /D [ 2877 0 R /XYZ 81.077 293.031 null ] >>
+endobj
+2910 0 obj
+<< /D [ 2877 0 R /XYZ 81.077 282.072 null ] >>
+endobj
+2911 0 obj
+<< /D [ 2877 0 R /XYZ 81.077 271.113 null ] >>
+endobj
+2912 0 obj
+<< /D [ 2877 0 R /XYZ 81.077 260.154 null ] >>
+endobj
+2913 0 obj
+<< /D [ 2877 0 R /XYZ 81.077 249.195 null ] >>
+endobj
+2914 0 obj
+<< /D [ 2877 0 R /XYZ 81.077 238.237 null ] >>
+endobj
+2915 0 obj
+<< /D [ 2877 0 R /XYZ 81.077 227.278 null ] >>
+endobj
+2916 0 obj
+<< /D [ 2877 0 R /XYZ 81.077 216.319 null ] >>
+endobj
+2917 0 obj
+<< /D [ 2877 0 R /XYZ 81.077 205.36 null ] >>
+endobj
+2918 0 obj
+<< /D [ 2877 0 R /XYZ 81.077 194.401 null ] >>
+endobj
+2919 0 obj
+<< /D [ 2877 0 R /XYZ 81.077 183.442 null ] >>
+endobj
+2920 0 obj
+<< /D [ 2877 0 R /XYZ 81.077 172.483 null ] >>
+endobj
+2921 0 obj
+<< /D [ 2877 0 R /XYZ 81.077 161.524 null ] >>
+endobj
+2922 0 obj
+<< /D [ 2877 0 R /XYZ 81.077 150.565 null ] >>
+endobj
+2923 0 obj
+<< /D [ 2877 0 R /XYZ 81.077 139.606 null ] >>
+endobj
+2924 0 obj
+<< /D [ 2877 0 R /XYZ 81.077 128.648 null ] >>
+endobj
+2925 0 obj
+<< /D [ 2877 0 R /XYZ 81.077 100.555 null ] >>
+endobj
+2926 0 obj
+<< /D [ 2877 0 R /XYZ 81.077 89.596 null ] >>
+endobj
+2927 0 obj
+<< /D [ 2877 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+2876 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F20 186 0 R /F19 184 0 R /F76 318 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+2930 0 obj
+<< /Filter /FlateDecode /Length 3129 >>
+stream
+xڽ[YF~
+x "WOHnn)9+oHn#nOݾz4ϳ<lީ;N˃y |C
+ 7,)ض$'k9q0fffFA#>nMLts(_P젂&66Ko\Z-\)('Ee)tpJc x ~|
+Ġ@ɄOrjwl:b/7Q \6q Uަ{g4o` ZWIH'umOR|s-_5ٴ ا{˦%Hbr %"i`F!ĨV
+U
+h`ci`3Z|Y8(>.3m=o/uf6;l.z8zN?fC;ϷOS1R߿%J+WaShhƹG97wLZ)-6ANMVۦ]P
+
+lGCe)m (٪eP> *Чv3pzTxqnw1/7Ogs{ǒ)Ca
+wVjɟ/U%w[
+}ncum5lrM˙kӏGiH<aHɢ"jڗַDR)С _8/Υ/
+3XIq.l9F%/XڞN a8 J"O1E=8Qo a¡,ї a]o݆bz˹G%-K=sdg ˎh[I^APB< Hb=#9ɰ,H.y=
+ e]kL]_ ~Ob\$.d
+endstream
+endobj
+2929 0 obj
+<< /Type /Page /Contents 2930 0 R /Resources 2928 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2759 0 R >>
+endobj
+2931 0 obj
+<< /D [ 2929 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+2932 0 obj
+<< /D [ 2929 0 R /XYZ 81.077 754.884 null ] >>
+endobj
+2933 0 obj
+<< /D [ 2929 0 R /XYZ 81.077 743.925 null ] >>
+endobj
+2934 0 obj
+<< /D [ 2929 0 R /XYZ 81.077 732.966 null ] >>
+endobj
+2935 0 obj
+<< /D [ 2929 0 R /XYZ 81.077 554.635 null ] >>
+endobj
+2936 0 obj
+<< /D [ 2929 0 R /XYZ 81.077 543.676 null ] >>
+endobj
+2937 0 obj
+<< /D [ 2929 0 R /XYZ 81.077 532.717 null ] >>
+endobj
+2938 0 obj
+<< /D [ 2929 0 R /XYZ 81.077 521.758 null ] >>
+endobj
+2939 0 obj
+<< /D [ 2929 0 R /XYZ 81.077 510.799 null ] >>
+endobj
+2940 0 obj
+<< /D [ 2929 0 R /XYZ 81.077 499.84 null ] >>
+endobj
+2941 0 obj
+<< /D [ 2929 0 R /XYZ 81.077 488.882 null ] >>
+endobj
+2942 0 obj
+<< /D [ 2929 0 R /XYZ 81.077 477.923 null ] >>
+endobj
+2943 0 obj
+<< /D [ 2929 0 R /XYZ 81.077 466.964 null ] >>
+endobj
+2944 0 obj
+<< /D [ 2929 0 R /XYZ 81.077 456.005 null ] >>
+endobj
+2945 0 obj
+<< /D [ 2929 0 R /XYZ 81.077 415.158 null ] >>
+endobj
+2946 0 obj
+<< /D [ 2929 0 R /XYZ 81.077 404.199 null ] >>
+endobj
+2947 0 obj
+<< /D [ 2929 0 R /XYZ 81.077 393.24 null ] >>
+endobj
+2948 0 obj
+<< /D [ 2929 0 R /XYZ 81.077 382.281 null ] >>
+endobj
+2949 0 obj
+<< /D [ 2929 0 R /XYZ 81.077 341.434 null ] >>
+endobj
+2950 0 obj
+<< /D [ 2929 0 R /XYZ 81.077 312.543 null ] >>
+endobj
+2951 0 obj
+<< /D [ 2929 0 R /XYZ 81.077 301.584 null ] >>
+endobj
+2952 0 obj
+<< /D [ 2929 0 R /XYZ 81.077 290.625 null ] >>
+endobj
+2953 0 obj
+<< /D [ 2929 0 R /XYZ 81.077 279.666 null ] >>
+endobj
+2954 0 obj
+<< /D [ 2929 0 R /XYZ 81.077 268.707 null ] >>
+endobj
+2955 0 obj
+<< /D [ 2929 0 R /XYZ 81.077 257.748 null ] >>
+endobj
+2956 0 obj
+<< /D [ 2929 0 R /XYZ 81.077 216.901 null ] >>
+endobj
+2957 0 obj
+<< /D [ 2929 0 R /XYZ 81.077 188.01 null ] >>
+endobj
+2958 0 obj
+<< /D [ 2929 0 R /XYZ 81.077 177.051 null ] >>
+endobj
+2959 0 obj
+<< /D [ 2929 0 R /XYZ 81.077 166.092 null ] >>
+endobj
+2960 0 obj
+<< /D [ 2929 0 R /XYZ 81.077 155.133 null ] >>
+endobj
+2961 0 obj
+<< /D [ 2929 0 R /XYZ 81.077 144.174 null ] >>
+endobj
+2962 0 obj
+<< /D [ 2929 0 R /XYZ 81.077 133.215 null ] >>
+endobj
+2963 0 obj
+<< /D [ 2929 0 R /XYZ 81.077 122.256 null ] >>
+endobj
+2964 0 obj
+<< /D [ 2929 0 R /XYZ 81.077 93.365 null ] >>
+endobj
+2965 0 obj
+<< /D [ 2929 0 R /XYZ 81.077 82.406 null ] >>
+endobj
+2928 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F20 186 0 R /F73 189 0 R /F69 183 0 R /F76 318 0 R /F70 185 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+2968 0 obj
+<< /Filter /FlateDecode /Length 2260 >>
+stream
+xڽZo_au OKskb˱YJ8oGREqL؋EK{{Rij ׿>~+13ן<32S15S ,q;167TE][;Op~}PEJ8xBs;@3I)FxTD~ SeUyB~\&-4 ʞE8Hj2 Sw}kؕ9K1&،# c:Z"I@ \!P.WifXLDhČcf)NiFzjj
+HiXiіrxxT{ 싮m(/^Mp!uBp G?icG
+_GaDɴ2&&1:c u1A`k
+
+Xcˮ85~7(s%“DŶ^dyU-{!*N"D5l6}a7b9bߒQsr.\cvEkȉW9nr1: ֔Jcu*Cy:McTBġ9Ҿ2m@E*뷻lH蛗&y]WeN+7ځPqj ӄem0So[HE\
+[+$<M6B Ni(zx'84d7F\oK }rʍ@\LXNHֵJ>*{-7}T<gǭ{iU2!!C*:)Dt]IF,%9&찊T5 'Xfmm2oK681ڥrkז7uWq.C[y(W&^9F^rIN0(LZ!IJ8nN{
+,ow2VMZ:ǔA:߈PoKf&5*u#9BOsg(EG%^_M]}K/ۚB&R$
+~f[ . 6V~n+mW6:o(a*s; 8pnbgX\X#>?l
+ܖ`.BE(IO;X7 ;NV#EvN:Y'W5[P
+ZEq?CaN0'1~B켰X plftOɼ
+EL&Bmޓ(V't$7Y!+|eaw ]xpF+W7KyaA]C9B-ۮ?3:;YWc;+DV |# 6 MjM׫TSGnǬ!t^NњXS9]3'i RTqD?'OSeMei_"5y|CKAZ E7NR,俔6߰T/:㈄Rpt B!cEK˲e:|˳v%QB"=tMPqrMԽF?e{[WP%}УPr^Iy!X"t:mzIr}MA8m(_]
+㑗a$ŧR{Je(ߙ!~ٞCwXM3!C.'xM-[;Dpm/qb"ZFM s?Sw Nw#A:_Kqb<{-Rfj1AB%q?~C
+endstream
+endobj
+2967 0 obj
+<< /Type /Page /Contents 2968 0 R /Resources 2966 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2759 0 R >>
+endobj
+2969 0 obj
+<< /D [ 2967 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+2970 0 obj
+<< /D [ 2967 0 R /XYZ 81.077 755.471 null ] >>
+endobj
+2971 0 obj
+<< /D [ 2967 0 R /XYZ 81.077 744.512 null ] >>
+endobj
+2972 0 obj
+<< /D [ 2967 0 R /XYZ 81.077 733.553 null ] >>
+endobj
+2973 0 obj
+<< /D [ 2967 0 R /XYZ 81.077 722.594 null ] >>
+endobj
+2974 0 obj
+<< /D [ 2967 0 R /XYZ 81.077 711.636 null ] >>
+endobj
+2975 0 obj
+<< /D [ 2967 0 R /XYZ 81.077 700.677 null ] >>
+endobj
+2976 0 obj
+<< /D [ 2967 0 R /XYZ 81.077 673.903 null ] >>
+endobj
+2977 0 obj
+<< /D [ 2967 0 R /XYZ 81.077 662.944 null ] >>
+endobj
+2978 0 obj
+<< /D [ 2967 0 R /XYZ 81.077 651.985 null ] >>
+endobj
+2979 0 obj
+<< /D [ 2967 0 R /XYZ 81.077 641.026 null ] >>
+endobj
+2980 0 obj
+<< /D [ 2967 0 R /XYZ 81.077 630.067 null ] >>
+endobj
+2981 0 obj
+<< /D [ 2967 0 R /XYZ 81.077 619.108 null ] >>
+endobj
+2982 0 obj
+<< /D [ 2967 0 R /XYZ 81.077 608.149 null ] >>
+endobj
+2983 0 obj
+<< /D [ 2967 0 R /XYZ 81.077 597.19 null ] >>
+endobj
+2984 0 obj
+<< /D [ 2967 0 R /XYZ 81.077 586.231 null ] >>
+endobj
+2985 0 obj
+<< /D [ 2967 0 R /XYZ 81.077 575.272 null ] >>
+endobj
+2986 0 obj
+<< /D [ 2967 0 R /XYZ 81.077 564.314 null ] >>
+endobj
+2987 0 obj
+<< /D [ 2967 0 R /XYZ 81.077 553.355 null ] >>
+endobj
+2988 0 obj
+<< /D [ 2967 0 R /XYZ 81.077 542.396 null ] >>
+endobj
+2989 0 obj
+<< /D [ 2967 0 R /XYZ 81.077 514.216 null ] >>
+endobj
+2990 0 obj
+<< /D [ 2967 0 R /XYZ 81.077 503.257 null ] >>
+endobj
+2991 0 obj
+<< /D [ 2967 0 R /XYZ 81.077 492.298 null ] >>
+endobj
+2992 0 obj
+<< /D [ 2967 0 R /XYZ 81.077 481.34 null ] >>
+endobj
+2993 0 obj
+<< /D [ 2967 0 R /XYZ 81.077 470.381 null ] >>
+endobj
+2994 0 obj
+<< /D [ 2967 0 R /XYZ 81.077 459.422 null ] >>
+endobj
+2995 0 obj
+<< /D [ 2967 0 R /XYZ 81.077 448.463 null ] >>
+endobj
+2996 0 obj
+<< /D [ 2967 0 R /XYZ 81.077 437.504 null ] >>
+endobj
+2997 0 obj
+<< /D [ 2967 0 R /XYZ 81.077 409.325 null ] >>
+endobj
+2998 0 obj
+<< /D [ 2967 0 R /XYZ 81.077 398.366 null ] >>
+endobj
+2999 0 obj
+<< /D [ 2967 0 R /XYZ 81.077 387.407 null ] >>
+endobj
+3000 0 obj
+<< /D [ 2967 0 R /XYZ 81.077 376.448 null ] >>
+endobj
+3001 0 obj
+<< /D [ 2967 0 R /XYZ 81.077 365.489 null ] >>
+endobj
+3002 0 obj
+<< /D [ 2967 0 R /XYZ 81.077 300.501 null ] >>
+endobj
+3003 0 obj
+<< /D [ 2967 0 R /XYZ 81.077 289.542 null ] >>
+endobj
+3004 0 obj
+<< /D [ 2967 0 R /XYZ 81.077 278.583 null ] >>
+endobj
+3005 0 obj
+<< /D [ 2967 0 R /XYZ 81.077 267.624 null ] >>
+endobj
+3006 0 obj
+<< /D [ 2967 0 R /XYZ 81.077 252.858 null ] >>
+endobj
+3007 0 obj
+<< /D [ 2967 0 R /XYZ 81.077 241.899 null ] >>
+endobj
+3008 0 obj
+<< /D [ 2967 0 R /XYZ 81.077 230.94 null ] >>
+endobj
+3009 0 obj
+<< /D [ 2967 0 R /XYZ 81.077 219.981 null ] >>
+endobj
+3010 0 obj
+<< /D [ 2967 0 R /XYZ 81.077 209.022 null ] >>
+endobj
+3011 0 obj
+<< /D [ 2967 0 R /XYZ 81.077 198.064 null ] >>
+endobj
+3012 0 obj
+<< /D [ 2967 0 R /XYZ 81.077 187.105 null ] >>
+endobj
+3013 0 obj
+<< /D [ 2967 0 R /XYZ 81.077 176.146 null ] >>
+endobj
+3014 0 obj
+<< /D [ 2967 0 R /XYZ 81.077 89.596 null ] >>
+endobj
+3015 0 obj
+<< /D [ 2967 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+2966 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F20 186 0 R /F73 189 0 R /F69 183 0 R /F70 185 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+3018 0 obj
+<< /Filter /FlateDecode /Length 2189 >>
+stream
+xڭZ[oF~ϯ[O~M胑,#QPUH!!r)Z 99l5óÛwd$||C2aIf7hw,_5_|_yr?1ůmLEo a|&NUZxMZ27컛[Eet*JN**ӯL֌[b_&jlպgv_G k= "XvfmY__G!"a! 2+6hh%`46\o dS3>ڪ_m<.պ/ *.+D_1˦0}KlN4( a*]Rw} jӴᰨ~Iu+~BBu FU1z&C%K?SVabz}RZ2.T
+qo +DyQH)y.~lFŹʭEפe?,ͦcM+,oo~9Tܒ]@t*Z_WF VbYEGS*)kS<]IJ͂^ED@fv
+v^6PdُK`$fm>"e{FHƢo>1 ֓ԫS;WrUϝ:L>:H"8diF m=٧~=o(BIJ
+>:9p$p4JO-xQ<VG3}SgbdќpW(TNĦH
+0גR:\6Q(G4=tl(t,if,$ĶGЃqkk-hjqZ
+f4Rw_6$eӒTE{]ݻ"HAƈ05@0OM{:N3[.H&ML!>ؒ|~'&>6޶6OaIK}tp-@TXvqӯR<|hh+ɕC0
+A$_hn4ޕiIqvw.E=pǜnIոZdXeLbb\Q*]?p,?9t?ۡaTna:ȇB*du~u6L1$LPBt=2IZx`ePq'A,O,`+ <H2WxpSևa>ӽ{Z \aCi>񰅙'XrF]y=U˟cJ,ET৤m:s%] aCW|B0yr!@."2LT ]*蝊n}eQypryQZ)v%0ib.&2a㬇-$[,=e"E8᎓Yb_ENAE|Ч`gYbj=0xL>,T sӛA&#&}ʤw]:ϒMVc
+CqVpҰ*FE3 3>wQ! FӨ9
+endstream
+endobj
+3017 0 obj
+<< /Type /Page /Contents 3018 0 R /Resources 3016 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2759 0 R >>
+endobj
+3019 0 obj
+<< /D [ 3017 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+3020 0 obj
+<< /D [ 3017 0 R /XYZ 81.077 742.929 null ] >>
+endobj
+3021 0 obj
+<< /D [ 3017 0 R /XYZ 81.077 731.97 null ] >>
+endobj
+3022 0 obj
+<< /D [ 3017 0 R /XYZ 81.077 721.011 null ] >>
+endobj
+3023 0 obj
+<< /D [ 3017 0 R /XYZ 81.077 710.052 null ] >>
+endobj
+3024 0 obj
+<< /D [ 3017 0 R /XYZ 81.077 699.093 null ] >>
+endobj
+3025 0 obj
+<< /D [ 3017 0 R /XYZ 81.077 646.291 null ] >>
+endobj
+3026 0 obj
+<< /D [ 3017 0 R /XYZ 81.077 635.332 null ] >>
+endobj
+3027 0 obj
+<< /D [ 3017 0 R /XYZ 81.077 624.373 null ] >>
+endobj
+3028 0 obj
+<< /D [ 3017 0 R /XYZ 81.077 613.415 null ] >>
+endobj
+3029 0 obj
+<< /D [ 3017 0 R /XYZ 81.077 602.456 null ] >>
+endobj
+3030 0 obj
+<< /D [ 3017 0 R /XYZ 81.077 591.497 null ] >>
+endobj
+3031 0 obj
+<< /D [ 3017 0 R /XYZ 81.077 580.538 null ] >>
+endobj
+3032 0 obj
+<< /D [ 3017 0 R /XYZ 81.077 569.579 null ] >>
+endobj
+3033 0 obj
+<< /D [ 3017 0 R /XYZ 81.077 558.62 null ] >>
+endobj
+3034 0 obj
+<< /D [ 3017 0 R /XYZ 81.077 547.661 null ] >>
+endobj
+3035 0 obj
+<< /D [ 3017 0 R /XYZ 81.077 536.702 null ] >>
+endobj
+3036 0 obj
+<< /D [ 3017 0 R /XYZ 81.077 525.743 null ] >>
+endobj
+3037 0 obj
+<< /D [ 3017 0 R /XYZ 81.077 514.784 null ] >>
+endobj
+3038 0 obj
+<< /D [ 3017 0 R /XYZ 81.077 503.825 null ] >>
+endobj
+3039 0 obj
+<< /D [ 3017 0 R /XYZ 81.077 468.956 null ] >>
+endobj
+3040 0 obj
+<< /D [ 3017 0 R /XYZ 81.077 457.997 null ] >>
+endobj
+3041 0 obj
+<< /D [ 3017 0 R /XYZ 81.077 447.038 null ] >>
+endobj
+3042 0 obj
+<< /D [ 3017 0 R /XYZ 81.077 436.08 null ] >>
+endobj
+3043 0 obj
+<< /D [ 3017 0 R /XYZ 81.077 425.121 null ] >>
+endobj
+3044 0 obj
+<< /D [ 3017 0 R /XYZ 81.077 414.162 null ] >>
+endobj
+3045 0 obj
+<< /D [ 3017 0 R /XYZ 81.077 403.203 null ] >>
+endobj
+3046 0 obj
+<< /D [ 3017 0 R /XYZ 81.077 392.244 null ] >>
+endobj
+3047 0 obj
+<< /D [ 3017 0 R /XYZ 81.077 381.285 null ] >>
+endobj
+3048 0 obj
+<< /D [ 3017 0 R /XYZ 81.077 370.326 null ] >>
+endobj
+3049 0 obj
+<< /D [ 3017 0 R /XYZ 81.077 359.367 null ] >>
+endobj
+3050 0 obj
+<< /D [ 3017 0 R /XYZ 81.077 348.408 null ] >>
+endobj
+3051 0 obj
+<< /D [ 3017 0 R /XYZ 81.077 337.449 null ] >>
+endobj
+3052 0 obj
+<< /D [ 3017 0 R /XYZ 81.077 326.49 null ] >>
+endobj
+3053 0 obj
+<< /D [ 3017 0 R /XYZ 81.077 315.532 null ] >>
+endobj
+3054 0 obj
+<< /D [ 3017 0 R /XYZ 81.077 304.573 null ] >>
+endobj
+3055 0 obj
+<< /D [ 3017 0 R /XYZ 81.077 293.614 null ] >>
+endobj
+3056 0 obj
+<< /D [ 3017 0 R /XYZ 81.077 282.655 null ] >>
+endobj
+3057 0 obj
+<< /D [ 3017 0 R /XYZ 81.077 271.696 null ] >>
+endobj
+3058 0 obj
+<< /D [ 3017 0 R /XYZ 81.077 260.737 null ] >>
+endobj
+3059 0 obj
+<< /D [ 3017 0 R /XYZ 81.077 225.868 null ] >>
+endobj
+3060 0 obj
+<< /D [ 3017 0 R /XYZ 81.077 214.909 null ] >>
+endobj
+3061 0 obj
+<< /D [ 3017 0 R /XYZ 81.077 148.159 null ] >>
+endobj
+3062 0 obj
+<< /D [ 3017 0 R /XYZ 81.077 137.2 null ] >>
+endobj
+3063 0 obj
+<< /D [ 3017 0 R /XYZ 81.077 126.241 null ] >>
+endobj
+3064 0 obj
+<< /D [ 3017 0 R /XYZ 81.077 115.283 null ] >>
+endobj
+3065 0 obj
+<< /D [ 3017 0 R /XYZ 81.077 104.324 null ] >>
+endobj
+3066 0 obj
+<< /D [ 3017 0 R /XYZ 81.077 93.365 null ] >>
+endobj
+3016 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F20 186 0 R /F73 189 0 R /F69 183 0 R /F70 185 0 R /F76 318 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+3069 0 obj
+<< /Filter /FlateDecode /Length 1947 >>
+stream
+xZMD﯈%#MVzaN#I<CbC۩Nmwv֓ ).t+_y[8͵\ܽb0@lafa4#T~mٴWn[?yU\UϺfp/ߕվ7-,~}rW?|*qJ2"Lj{T
+*zW7=G왬RlYtTe 3#̮7tQ@YANx
+)^s,e܃a؂k):%l \XBHegRMe
+ɫMP+9D3?2!߼iٻYJuwO,Y8M#J}S lmt>)d8O7 :zD
++cQ}
+x)ɦgm3xdu%BGz N)|[ܗֆKL ⴙcv̊_Wg6:gZ`c`0HiEo!D 9Vb,5 %;ALS* G==EɠƂݮ*iGJSt_Sc4xh$N#vY[YdxsHCxFN 
+dmm:{
+Mh&h1ʝ /E AYuuR
+P&ǠpM)nXw]|I`0Tlq5x0˔Z6r7ۢ:i T{l w90f=4-~lhڲ<<h\y9E)GB%ӕ`hs|^
+hBvR&Rr wi 2 q B|_'j3{7DrPfRme最ǜ?AUW^B:z1y.X$n1&v %ҒA;X[iDؘ]8EDZ8cڳU $hpfP|N|~yo]&g"ڐR TWXS%\ۑԄV%u}MV%yjUf~|4+!/.LxRjRzR ʙ߀Ed}&}QQ/ zm`6(7I}RT0g?>MqRt
+`tpܖ|fK E&npO^ɭ;'͏/uČQ~S t|Č916St_]OU|9TOv}ާu~1c~q4Z6wXٛэ꘨ɞ$hWHgt*qp:td: |CƗlj=q5c5ćӁ!?wEr.k`>"0I4^6ovEPk/,jV Պ?W!/i]4CM&vGr)E?[.2)oj} }5O;1sAXH`,Eh~Hxq9Ap)~gL a3"/jĜ}Q55D#]8.xj LeX{($Uu]<ȏ Yځ\&8c@;O7UYݯd'A]c8܇+3'o5BRWigoonM
+endstream
+endobj
+3068 0 obj
+<< /Type /Page /Contents 3069 0 R /Resources 3067 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2759 0 R >>
+endobj
+3070 0 obj
+<< /D [ 3068 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+3071 0 obj
+<< /D [ 3068 0 R /XYZ 81.077 730.974 null ] >>
+endobj
+3072 0 obj
+<< /D [ 3068 0 R /XYZ 81.077 720.015 null ] >>
+endobj
+3073 0 obj
+<< /D [ 3068 0 R /XYZ 81.077 709.056 null ] >>
+endobj
+3074 0 obj
+<< /D [ 3068 0 R /XYZ 81.077 698.097 null ] >>
+endobj
+3075 0 obj
+<< /D [ 3068 0 R /XYZ 81.077 687.138 null ] >>
+endobj
+3076 0 obj
+<< /D [ 3068 0 R /XYZ 81.077 676.179 null ] >>
+endobj
+3077 0 obj
+<< /D [ 3068 0 R /XYZ 81.077 665.22 null ] >>
+endobj
+3078 0 obj
+<< /D [ 3068 0 R /XYZ 81.077 654.261 null ] >>
+endobj
+3079 0 obj
+<< /D [ 3068 0 R /XYZ 81.077 643.302 null ] >>
+endobj
+3080 0 obj
+<< /D [ 3068 0 R /XYZ 81.077 632.344 null ] >>
+endobj
+3081 0 obj
+<< /D [ 3068 0 R /XYZ 81.077 621.385 null ] >>
+endobj
+3082 0 obj
+<< /D [ 3068 0 R /XYZ 81.077 610.426 null ] >>
+endobj
+3083 0 obj
+<< /D [ 3068 0 R /XYZ 81.077 599.467 null ] >>
+endobj
+3084 0 obj
+<< /D [ 3068 0 R /XYZ 81.077 588.508 null ] >>
+endobj
+3085 0 obj
+<< /D [ 3068 0 R /XYZ 81.077 577.549 null ] >>
+endobj
+3086 0 obj
+<< /D [ 3068 0 R /XYZ 81.077 566.59 null ] >>
+endobj
+3087 0 obj
+<< /D [ 3068 0 R /XYZ 81.077 555.631 null ] >>
+endobj
+3088 0 obj
+<< /D [ 3068 0 R /XYZ 81.077 544.672 null ] >>
+endobj
+3089 0 obj
+<< /D [ 3068 0 R /XYZ 81.077 533.713 null ] >>
+endobj
+3090 0 obj
+<< /D [ 3068 0 R /XYZ 81.077 522.754 null ] >>
+endobj
+3091 0 obj
+<< /D [ 3068 0 R /XYZ 81.077 511.796 null ] >>
+endobj
+3092 0 obj
+<< /D [ 3068 0 R /XYZ 81.077 500.837 null ] >>
+endobj
+3093 0 obj
+<< /D [ 3068 0 R /XYZ 81.077 459.99 null ] >>
+endobj
+3094 0 obj
+<< /D [ 3068 0 R /XYZ 81.077 449.031 null ] >>
+endobj
+3095 0 obj
+<< /D [ 3068 0 R /XYZ 81.077 438.072 null ] >>
+endobj
+3096 0 obj
+<< /D [ 3068 0 R /XYZ 81.077 427.113 null ] >>
+endobj
+3097 0 obj
+<< /D [ 3068 0 R /XYZ 81.077 416.154 null ] >>
+endobj
+3098 0 obj
+<< /D [ 3068 0 R /XYZ 81.077 405.195 null ] >>
+endobj
+3099 0 obj
+<< /D [ 3068 0 R /XYZ 81.077 394.236 null ] >>
+endobj
+3100 0 obj
+<< /D [ 3068 0 R /XYZ 81.077 353.39 null ] >>
+endobj
+3101 0 obj
+<< /D [ 3068 0 R /XYZ 81.077 342.431 null ] >>
+endobj
+3102 0 obj
+<< /D [ 3068 0 R /XYZ 81.077 331.472 null ] >>
+endobj
+3103 0 obj
+<< /D [ 3068 0 R /XYZ 81.077 320.513 null ] >>
+endobj
+3104 0 obj
+<< /D [ 3068 0 R /XYZ 81.077 309.554 null ] >>
+endobj
+3105 0 obj
+<< /D [ 3068 0 R /XYZ 81.077 298.595 null ] >>
+endobj
+3106 0 obj
+<< /D [ 3068 0 R /XYZ 81.077 287.636 null ] >>
+endobj
+3107 0 obj
+<< /D [ 3068 0 R /XYZ 81.077 276.677 null ] >>
+endobj
+3108 0 obj
+<< /D [ 3068 0 R /XYZ 81.077 265.718 null ] >>
+endobj
+3109 0 obj
+<< /D [ 3068 0 R /XYZ 81.077 254.759 null ] >>
+endobj
+3110 0 obj
+<< /D [ 3068 0 R /XYZ 81.077 243.801 null ] >>
+endobj
+3111 0 obj
+<< /D [ 3068 0 R /XYZ 81.077 232.842 null ] >>
+endobj
+3112 0 obj
+<< /D [ 3068 0 R /XYZ 81.077 221.883 null ] >>
+endobj
+3113 0 obj
+<< /D [ 3068 0 R /XYZ 81.077 210.924 null ] >>
+endobj
+3114 0 obj
+<< /D [ 3068 0 R /XYZ 81.077 182.032 null ] >>
+endobj
+3115 0 obj
+<< /D [ 3068 0 R /XYZ 81.077 171.073 null ] >>
+endobj
+3116 0 obj
+<< /D [ 3068 0 R /XYZ 81.077 160.114 null ] >>
+endobj
+3117 0 obj
+<< /D [ 3068 0 R /XYZ 81.077 129.23 null ] >>
+endobj
+3118 0 obj
+<< /D [ 3068 0 R /XYZ 81.077 118.271 null ] >>
+endobj
+3119 0 obj
+<< /D [ 3068 0 R /XYZ 81.077 107.312 null ] >>
+endobj
+3120 0 obj
+<< /D [ 3068 0 R /XYZ 81.077 96.354 null ] >>
+endobj
+3121 0 obj
+<< /D [ 3068 0 R /XYZ 81.077 85.395 null ] >>
+endobj
+3067 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F20 186 0 R /F76 318 0 R /F73 189 0 R /F69 183 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+3124 0 obj
+<< /Filter /FlateDecode /Length 1910 >>
+stream
+xZ[۸~ϯp/6~1EŠ@CLOHSYl:H~{ISHu|<T>ss ~y?ݼ13n/{gd bj$AXBy-`(9̀8.`19]8uTi<mǦ;-D<v(7/820%+D;PIp`Oi'^2 Cr;x-yy,^
+*vkWWś2|RL""eԒ%!92X6bedS39ڛcwE.쿖Ms*)e5[}_M΍zfsSv-:[3 Q050D >41F=34\;*˖
+#x)(C{3/cnG-g]W~]ݓ<0)k @TfHH@tLG|PuEƢq[,GRŠ#4bF?CȺt\aO'Xwn֍KiPmѽ5Lu_<<cYB.d7Ab&-4Oѻ6<[0 R!a+U$\F`+ln\B1
+ΜblZf5dl6v:qQz <u&÷v16YP5gUm\c><<7[fV >/ nvۇuD|kʦ O8ap&j7\ppdpKvPŭ~5b<;0RݝD[] Ռ.mTL
+ /JK`St˾,oMG`Ur`yVY_Sk]$ey{Z
+Q'R<E\G@3O
+P`ZaJ )FG5^8'!wЫYܷw)#;L=#I]c ghp˄k,rP>zߐlK_!M}_;:?~mp*L#K)WSnِI?,^R=.ژ Iw,VdP<]וNtr+S\`C/"7v=IbQa e]_/: 34<q8aP0ӿNE;̆*j jcXpX󟡟R=,K}V[]
+<,˪?wn;`6jeχK2WU:z = Ͷ^*w8Ē{)lRcrx<зx5,4G*H&z?bsҁ=P@9N߁qS=E'hMnP }>T"5qIXhbƺB` ^b X%
+ؔ%C_4iMwՎmwCK{$6G_ԟ[ך(\
+KM@K&
+endstream
+endobj
+3123 0 obj
+<< /Type /Page /Contents 3124 0 R /Resources 3122 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2759 0 R >>
+endobj
+3125 0 obj
+<< /D [ 3123 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+3126 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 754.896 null ] >>
+endobj
+3127 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 743.937 null ] >>
+endobj
+3128 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 732.978 null ] >>
+endobj
+3129 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 722.019 null ] >>
+endobj
+3130 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 711.06 null ] >>
+endobj
+3131 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 700.102 null ] >>
+endobj
+3132 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 684.185 null ] >>
+endobj
+3133 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 673.226 null ] >>
+endobj
+3134 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 657.31 null ] >>
+endobj
+3135 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 646.351 null ] >>
+endobj
+3136 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 635.392 null ] >>
+endobj
+3137 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 624.433 null ] >>
+endobj
+3138 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 613.475 null ] >>
+endobj
+3139 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 602.516 null ] >>
+endobj
+3140 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 591.557 null ] >>
+endobj
+3141 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 580.598 null ] >>
+endobj
+3142 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 569.639 null ] >>
+endobj
+3143 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 558.68 null ] >>
+endobj
+3144 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 547.721 null ] >>
+endobj
+3145 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 536.762 null ] >>
+endobj
+3146 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 525.803 null ] >>
+endobj
+3147 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 514.844 null ] >>
+endobj
+3148 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 503.886 null ] >>
+endobj
+3149 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 492.927 null ] >>
+endobj
+3150 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 462.078 null ] >>
+endobj
+3151 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 451.12 null ] >>
+endobj
+3152 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 440.161 null ] >>
+endobj
+3153 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 429.202 null ] >>
+endobj
+3154 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 418.243 null ] >>
+endobj
+3155 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 383.422 null ] >>
+endobj
+3156 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 372.463 null ] >>
+endobj
+3157 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 361.504 null ] >>
+endobj
+3158 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 332.636 null ] >>
+endobj
+3159 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 321.677 null ] >>
+endobj
+3160 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 310.718 null ] >>
+endobj
+3161 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 299.76 null ] >>
+endobj
+3162 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 258.937 null ] >>
+endobj
+3163 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 247.978 null ] >>
+endobj
+3164 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 237.019 null ] >>
+endobj
+3165 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 226.06 null ] >>
+endobj
+3166 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 215.101 null ] >>
+endobj
+3167 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 204.142 null ] >>
+endobj
+3168 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 193.183 null ] >>
+endobj
+3169 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 182.224 null ] >>
+endobj
+3170 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 171.265 null ] >>
+endobj
+3171 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 160.307 null ] >>
+endobj
+3172 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 149.348 null ] >>
+endobj
+3173 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 138.389 null ] >>
+endobj
+3174 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 127.43 null ] >>
+endobj
+3175 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 111.514 null ] >>
+endobj
+3176 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 100.555 null ] >>
+endobj
+3177 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 89.596 null ] >>
+endobj
+3178 0 obj
+<< /D [ 3123 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+3122 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F20 186 0 R /F70 185 0 R /F73 189 0 R /F69 183 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+3181 0 obj
+<< /Filter /FlateDecode /Length 1930 >>
+stream
+xZKo6W.W!
+ <='QeņګZV-&[܍ 2$;&Ge4:mS}qSf5OHђ !|w +Ԓݦ<lXŕ6n)=̫eNhFV}3Mۥjo3u ]C"/]sS&ȶY5W-jp$-&N KebGyfC,t8.ʍ[fr﷛ӽܰ{N҂+6+ag.]zpos&DoBټ|*:=-pA7 7_MZ9ImFS~ȓ,tVwT:3deʺ;ʺ|wMG~Z׌[ ~-VU7aQ?KœĩI|*&OUcD`]
+^a0J%MGސo'&Pr>EADBjC~`Kv\Uz]]GjlSzcםV4>!eM6~5dEs#At
+qчn5FX=YN\".'KW\2H0,aSeN9w8֍G, aHp,m,E)2TjFhJЉ宮֖s7!l~Fq3;'sZ58{nR8 g.V:oFW,$CI. R:gxR@ͷk|'&?lmWZ׮WMAf0 c 6T|ܞ"u qLrH5Y?z(("tr/U֝ٔ?a&!hhsM~:/j~OH~pgB8
+4\64,%h0 1V=BQ?du4En7(7f9fWхc̑1-ؖI 'Fɶ8l{kAb51l˘FTp$hMB=XᒉD_Hй@< G- ;jK'CE!5@#PW4b| #<yP0dYZ|ղ oA2&R#R}1hO%hpCBD Ο[i
+;t ph "Lp1Ÿж&`!!ѐ+ ] n7 Ka -$P(,aH&!\_aJ&wL $hk2" i4\I"&;F pDHf ;% 50"0#H
+@H3G|՝]k(ѿG<!!
+El hlC
+*-%ktا1(F:|(}4AYJ!#fȍo~><D
+endstream
+endobj
+3180 0 obj
+<< /Type /Page /Contents 3181 0 R /Resources 3179 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 2759 0 R >>
+endobj
+3182 0 obj
+<< /D [ 3180 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+3183 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+3184 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+3185 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+3186 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+3187 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+3188 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+3189 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+3190 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 673.068 null ] >>
+endobj
+3191 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 598.104 null ] >>
+endobj
+3192 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 587.145 null ] >>
+endobj
+3193 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 576.186 null ] >>
+endobj
+3194 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 565.227 null ] >>
+endobj
+3195 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 554.268 null ] >>
+endobj
+3196 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 543.31 null ] >>
+endobj
+3197 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 532.351 null ] >>
+endobj
+3198 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 521.392 null ] >>
+endobj
+3199 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 510.433 null ] >>
+endobj
+3200 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 499.474 null ] >>
+endobj
+3201 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 488.515 null ] >>
+endobj
+3202 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 477.556 null ] >>
+endobj
+3203 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 466.597 null ] >>
+endobj
+3204 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 455.638 null ] >>
+endobj
+3205 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 444.679 null ] >>
+endobj
+3206 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 433.72 null ] >>
+endobj
+3207 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 422.762 null ] >>
+endobj
+3208 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 411.803 null ] >>
+endobj
+3209 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 400.844 null ] >>
+endobj
+3210 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 389.885 null ] >>
+endobj
+3211 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 378.926 null ] >>
+endobj
+3212 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 367.967 null ] >>
+endobj
+3213 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 357.008 null ] >>
+endobj
+3214 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 346.049 null ] >>
+endobj
+3215 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 335.09 null ] >>
+endobj
+3216 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 324.131 null ] >>
+endobj
+3217 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 313.173 null ] >>
+endobj
+3218 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 302.214 null ] >>
+endobj
+3219 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 286.856 null ] >>
+endobj
+3220 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 275.897 null ] >>
+endobj
+3221 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 264.938 null ] >>
+endobj
+3222 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 253.979 null ] >>
+endobj
+3223 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 243.021 null ] >>
+endobj
+3224 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 232.062 null ] >>
+endobj
+3225 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 221.103 null ] >>
+endobj
+3226 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 210.144 null ] >>
+endobj
+3227 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 199.185 null ] >>
+endobj
+3228 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 188.226 null ] >>
+endobj
+3229 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 177.267 null ] >>
+endobj
+3230 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 166.308 null ] >>
+endobj
+3231 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 155.349 null ] >>
+endobj
+3232 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 144.39 null ] >>
+endobj
+3233 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 133.431 null ] >>
+endobj
+3234 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 122.473 null ] >>
+endobj
+3235 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 111.514 null ] >>
+endobj
+3236 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 100.555 null ] >>
+endobj
+3237 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 89.596 null ] >>
+endobj
+3238 0 obj
+<< /D [ 3180 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+3179 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+3241 0 obj
+<< /Filter /FlateDecode /Length 1920 >>
+stream
+xZIsW5}Qq%TCBaHHD 4{^citS2G u[t|?\G#8_^0x.jYlqe%7̭spև-,qZ E+Rj#*Ul沮~ыefzZZ_][վ>͎HS*J壬ΓU8`+ABM&rmvuۗA~W" \1), 'Kdiuv`r@-aVL@JhN!@[̣Jh 'ЖhSFKﳺx\ߧuu?ZEl6-jʻm\w - '+G_YBQyz}zs2f8"@6nKȝX!{xe.Br]꽠|fYm~طoۢݎ'߆7@._w׎DW`$T}Dq}Haڪ HuVG%yw;@RAwGڢ^ql[q/ kRgZ oM!q2qE C;'}5寻ͫ-O- #;ꁹmǥ]~q I8;8kU5{RD~C@f_2Dcnu.DBC
+jv!{薷lg8A-%|6t)l~ )j= <tTf)hTSWx1PdQ2} I*MnP9:?a)+g Uig mY7Ӫ.TgzBT:TI4+/k4oF&B*(VPj
+\ gv:מGPW j {cP)W&0'phA'H{f ,J]Y 闫 4'l]61a+мCU$>Xֆ)7F63!Akwm5Q24/%#(,f&
+(C`e St
+G;FMjM WR%ho{p=͊RDKc%Fw5\d8d_~O?+=OJe.Q[WC33P>$pN YK**" OO}
+gLv!hK61M[XGQVTUL:UX.%քx,-nJxڠgǦxk4ĩ-9a2DA0p~E'uMgB0l()/Føƕ@u 0Bgrw $J$ѧf HΠ=!"DQPsfrh`q\mC0 o:3`5ō>`/g~;N|ixqbs,o0<*Gaߖ7|}>,a造(T.fv4oO(OrR͈M@YW9)A]i1rkb?ޔTx; ~uF-@)WrUi~UxER>
+7=M"?Wnz|6ù$|^>Jx1ATj7 -%N9Pj*ct:%=o51Ljc"!Ai[JTkўǴ#҅XK%Ni|3Ds±_ҜO0i2!hM o~)aqEMRyaGLi܇u O
+b юxUwu;Oǎ3}kf*`4e 5T *b#)oX"A~;@AJ/$%nO
+endstream
+endobj
+3240 0 obj
+<< /Type /Page /Contents 3241 0 R /Resources 3239 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3298 0 R >>
+endobj
+3242 0 obj
+<< /D [ 3240 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+3243 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+3244 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+3245 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+3246 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+3247 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+3248 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 701.49 null ] >>
+endobj
+3249 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 690.531 null ] >>
+endobj
+3250 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 627.74 null ] >>
+endobj
+3251 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 616.781 null ] >>
+endobj
+3252 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 605.822 null ] >>
+endobj
+3253 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 594.863 null ] >>
+endobj
+3254 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 583.904 null ] >>
+endobj
+3255 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 572.945 null ] >>
+endobj
+3256 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 561.986 null ] >>
+endobj
+3257 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 551.027 null ] >>
+endobj
+3258 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 540.069 null ] >>
+endobj
+3259 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 529.11 null ] >>
+endobj
+3260 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 518.151 null ] >>
+endobj
+3261 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 507.192 null ] >>
+endobj
+3262 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 496.233 null ] >>
+endobj
+3263 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 485.274 null ] >>
+endobj
+3264 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 474.315 null ] >>
+endobj
+3265 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 463.356 null ] >>
+endobj
+3266 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 452.397 null ] >>
+endobj
+3267 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 441.438 null ] >>
+endobj
+3268 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 430.479 null ] >>
+endobj
+3269 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 419.521 null ] >>
+endobj
+3270 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 408.562 null ] >>
+endobj
+3271 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 397.603 null ] >>
+endobj
+3272 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 386.644 null ] >>
+endobj
+3273 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 375.685 null ] >>
+endobj
+3274 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 364.726 null ] >>
+endobj
+3275 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 349.917 null ] >>
+endobj
+3276 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 338.958 null ] >>
+endobj
+3277 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 327.999 null ] >>
+endobj
+3278 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 317.04 null ] >>
+endobj
+3279 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 306.081 null ] >>
+endobj
+3280 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 264.938 null ] >>
+endobj
+3281 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 253.979 null ] >>
+endobj
+3282 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 243.021 null ] >>
+endobj
+3283 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 232.062 null ] >>
+endobj
+3284 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 221.103 null ] >>
+endobj
+3285 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 210.144 null ] >>
+endobj
+3286 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 199.185 null ] >>
+endobj
+3287 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 188.226 null ] >>
+endobj
+3288 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 177.267 null ] >>
+endobj
+3289 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 166.308 null ] >>
+endobj
+3290 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 155.349 null ] >>
+endobj
+3291 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 144.39 null ] >>
+endobj
+3292 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 133.431 null ] >>
+endobj
+3293 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 122.473 null ] >>
+endobj
+3294 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 111.514 null ] >>
+endobj
+3295 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 100.555 null ] >>
+endobj
+3296 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 89.596 null ] >>
+endobj
+3297 0 obj
+<< /D [ 3240 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+3239 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+3301 0 obj
+<< /Filter /FlateDecode /Length 2883 >>
+stream
+xڭZ[oܺ~ϯX<u3UA}K @.UHZA;v0eș\2Y-o{׫w>t0%w>Jx $pHF%ISv~\dH
+A11N08$)[y.Vn/?kn/ vWԲ0 <A8!^~ #JxH=zn*f-N$(Cjnh..2m=슼FF23yKxSk>ʪNږEG wySmd@4G8E;{LTmviZ_\փ?ZF7[Pc^
+'FS]}Fҥ$94&)ch/ֳ DqN_ɲڨbmշE,KBYUve]W=Ւ=ε`7 VbRj~vyfe"  duGEe0LIYTj5Q-Q0 '}|f=1;{QBV*8F,Q7Kb2G@|z0ѤWU0[;-ߏ:IB⩋֟Z hU2kfDh/mUaoT3K0 ,zރ2 ;Fٵ_MTc>Э
+:Ža4xI>9C`5q|c:y,ی,`3q&9iώM՝ZuNwNC-=Ͳ8 g>/mg:㵸lO8+Fe ~L' SUWuN3(&E L .%2h `[¥O4(#a@2,^=g1PBp@s>? <70"|WͫPe$G/o6X#9̲3|n탲{fTА#ކ:- 0/8
+ԋ?)b=eL#MmFf,= <41cqKO]Η{oAm([9 gra*W{^v網;\7罭-E {wwV;`SljHrY 0t<;Oօhܷjݗu@Mq}x!io4/t16?Eކcb<ݶX ?)X˪]9J2wCIdL |n^1>xeoĎ}u_OתOii/\i͍n&rA=DQMraѪ~x(!1`#X
+1nplnot,jL;HPk54J4"+n^Pilo%ěުNY3)e0
+ë9jh*@ JA{T|6fQ
+6KHc /rWƙ:~nc; {]u;m~}0Kq:  . bd8HCKջo`
+endstream
+endobj
+3300 0 obj
+<< /Type /Page /Contents 3301 0 R /Resources 3299 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3298 0 R >>
+endobj
+3302 0 obj
+<< /D [ 3300 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+3303 0 obj
+<< /D [ 3300 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+3304 0 obj
+<< /D [ 3300 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+3305 0 obj
+<< /D [ 3300 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+3306 0 obj
+<< /D [ 3300 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+3307 0 obj
+<< /D [ 3300 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+3308 0 obj
+<< /D [ 3300 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+3309 0 obj
+<< /D [ 3300 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+3310 0 obj
+<< /D [ 3300 0 R /XYZ 81.077 606.441 null ] >>
+endobj
+3311 0 obj
+<< /D [ 3300 0 R /XYZ 81.077 595.482 null ] >>
+endobj
+3312 0 obj
+<< /D [ 3300 0 R /XYZ 81.077 584.523 null ] >>
+endobj
+3313 0 obj
+<< /D [ 3300 0 R /XYZ 81.077 573.564 null ] >>
+endobj
+3314 0 obj
+<< /D [ 3300 0 R /XYZ 81.077 562.605 null ] >>
+endobj
+3315 0 obj
+<< /D [ 3300 0 R /XYZ 81.077 551.646 null ] >>
+endobj
+3316 0 obj
+<< /D [ 3300 0 R /XYZ 81.077 535.706 null ] >>
+endobj
+3317 0 obj
+<< /D [ 3300 0 R /XYZ 81.077 524.747 null ] >>
+endobj
+3318 0 obj
+<< /D [ 3300 0 R /XYZ 81.077 452.02 null ] >>
+endobj
+3319 0 obj
+<< /D [ 3300 0 R /XYZ 81.077 441.061 null ] >>
+endobj
+3320 0 obj
+<< /D [ 3300 0 R /XYZ 81.077 406.192 null ] >>
+endobj
+3321 0 obj
+<< /D [ 3300 0 R /XYZ 81.077 395.233 null ] >>
+endobj
+3322 0 obj
+<< /D [ 3300 0 R /XYZ 81.077 354.386 null ] >>
+endobj
+3323 0 obj
+<< /D [ 3300 0 R /XYZ 81.077 313.539 null ] >>
+endobj
+3324 0 obj
+<< /D [ 3300 0 R /XYZ 81.077 248.782 null ] >>
+endobj
+3325 0 obj
+<< /D [ 3300 0 R /XYZ 81.077 237.823 null ] >>
+endobj
+3326 0 obj
+<< /D [ 3300 0 R /XYZ 81.077 226.864 null ] >>
+endobj
+3327 0 obj
+<< /D [ 3300 0 R /XYZ 81.077 197.972 null ] >>
+endobj
+3328 0 obj
+<< /D [ 3300 0 R /XYZ 81.077 187.014 null ] >>
+endobj
+3329 0 obj
+<< /D [ 3300 0 R /XYZ 81.077 176.055 null ] >>
+endobj
+3330 0 obj
+<< /D [ 3300 0 R /XYZ 81.077 165.096 null ] >>
+endobj
+3331 0 obj
+<< /D [ 3300 0 R /XYZ 81.077 154.137 null ] >>
+endobj
+3332 0 obj
+<< /D [ 3300 0 R /XYZ 81.077 143.178 null ] >>
+endobj
+3333 0 obj
+<< /D [ 3300 0 R /XYZ 81.077 132.219 null ] >>
+endobj
+3299 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F76 318 0 R /F23 660 0 R /F70 185 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+3336 0 obj
+<< /Filter /FlateDecode /Length 2307 >>
+stream
+xڽZ[o~_UF˻$(; !
+B|98 k0,O0QB,RLtTpǘf"n&w퇏"[BAqB3Sj*/onAutgr+,sTuT)G ^Ә0trYah
+V/DI4œ`LU%e4Dc
+y"]GAgJ}יe y թMY_y(-Fah˻.r_l{ 0F;B8=$Hi~S 2Vu^~< :|mN4l):*:KY@*߂';` ƣ*.xl-z]FSt0QJC AH%
+- dnMd]!ѾkAk6 BocڤHaߐzkZh0K.HŌ7"$Sq ^8:87jBcY¼s+<N2jܗ&fUaFt,|ܕk՝*:5wFLìCkʡ|>&CiԷZ9fl\W1OjW4pT>:6viR+~*5)j1PIY+?WK&}[8e.4=N ]uq"l^7 xjBnf nv),*T'maHҐǶLbb!8#)oL^/gxXCfkY[!bg%]nc4Yұ**_͛V̪ lGDXňѓ
+§k|׶Op,Mc%WƆ
+͈ĆUǸram8 /ټ#XRR m 1`_fBCkݎf؜z2ACYW*ҙT5bAp Cp
+'4*/{hŋ>êW6ߴ==pHh?0 1V?:R7K+9JA2>e=:-|4D(mm] ]40bVoUʁ]fJ |hƨq0wrW`g(Lw`!-AC+g=^֣z#._B.MG,zPQ|.Lb G![PᤳՌ{>c_~X@*0yO/`mO1ムzTtfs%ݡo~Qpȶ\}gB@3H0d<5.H8q -Z_..G7e .VbAQ]tDg93eS6̟Tz6ӣ7 X.hxYwU6y b02oXXfCQnWSM>mڳMמlPe37)'.,M8؟fIǤ%!tCwo>^p?CiŚ@`IwG=. YbV[>*
+endstream
+endobj
+3335 0 obj
+<< /Type /Page /Contents 3336 0 R /Resources 3334 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3298 0 R >>
+endobj
+3337 0 obj
+<< /D [ 3335 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+3338 0 obj
+<< /D [ 3335 0 R /XYZ 81.077 742.929 null ] >>
+endobj
+3339 0 obj
+<< /D [ 3335 0 R /XYZ 81.077 731.97 null ] >>
+endobj
+3340 0 obj
+<< /D [ 3335 0 R /XYZ 81.077 721.011 null ] >>
+endobj
+3341 0 obj
+<< /D [ 3335 0 R /XYZ 81.077 710.052 null ] >>
+endobj
+3342 0 obj
+<< /D [ 3335 0 R /XYZ 81.077 699.093 null ] >>
+endobj
+3343 0 obj
+<< /D [ 3335 0 R /XYZ 81.077 688.134 null ] >>
+endobj
+3344 0 obj
+<< /D [ 3335 0 R /XYZ 81.077 677.175 null ] >>
+endobj
+3345 0 obj
+<< /D [ 3335 0 R /XYZ 81.077 666.217 null ] >>
+endobj
+3346 0 obj
+<< /D [ 3335 0 R /XYZ 81.077 655.258 null ] >>
+endobj
+3347 0 obj
+<< /D [ 3335 0 R /XYZ 81.077 644.299 null ] >>
+endobj
+3348 0 obj
+<< /D [ 3335 0 R /XYZ 81.077 633.34 null ] >>
+endobj
+3349 0 obj
+<< /D [ 3335 0 R /XYZ 81.077 622.381 null ] >>
+endobj
+3350 0 obj
+<< /D [ 3335 0 R /XYZ 81.077 611.422 null ] >>
+endobj
+3351 0 obj
+<< /D [ 3335 0 R /XYZ 81.077 600.463 null ] >>
+endobj
+3352 0 obj
+<< /D [ 3335 0 R /XYZ 81.077 535.706 null ] >>
+endobj
+3353 0 obj
+<< /D [ 3335 0 R /XYZ 81.077 506.814 null ] >>
+endobj
+3354 0 obj
+<< /D [ 3335 0 R /XYZ 81.077 495.855 null ] >>
+endobj
+3355 0 obj
+<< /D [ 3335 0 R /XYZ 81.077 455.009 null ] >>
+endobj
+3356 0 obj
+<< /D [ 3335 0 R /XYZ 81.077 444.05 null ] >>
+endobj
+3357 0 obj
+<< /D [ 3335 0 R /XYZ 81.077 433.091 null ] >>
+endobj
+3358 0 obj
+<< /D [ 3335 0 R /XYZ 81.077 422.132 null ] >>
+endobj
+3359 0 obj
+<< /D [ 3335 0 R /XYZ 81.077 411.173 null ] >>
+endobj
+3360 0 obj
+<< /D [ 3335 0 R /XYZ 81.077 400.214 null ] >>
+endobj
+3361 0 obj
+<< /D [ 3335 0 R /XYZ 81.077 389.255 null ] >>
+endobj
+3362 0 obj
+<< /D [ 3335 0 R /XYZ 81.077 378.296 null ] >>
+endobj
+3363 0 obj
+<< /D [ 3335 0 R /XYZ 81.077 367.337 null ] >>
+endobj
+3364 0 obj
+<< /D [ 3335 0 R /XYZ 81.077 356.378 null ] >>
+endobj
+3365 0 obj
+<< /D [ 3335 0 R /XYZ 81.077 345.42 null ] >>
+endobj
+3366 0 obj
+<< /D [ 3335 0 R /XYZ 81.077 334.461 null ] >>
+endobj
+3367 0 obj
+<< /D [ 3335 0 R /XYZ 81.077 309.554 null ] >>
+endobj
+3368 0 obj
+<< /D [ 3335 0 R /XYZ 81.077 298.595 null ] >>
+endobj
+3369 0 obj
+<< /D [ 3335 0 R /XYZ 81.077 287.636 null ] >>
+endobj
+3370 0 obj
+<< /D [ 3335 0 R /XYZ 81.077 276.677 null ] >>
+endobj
+3371 0 obj
+<< /D [ 3335 0 R /XYZ 81.077 265.718 null ] >>
+endobj
+3372 0 obj
+<< /D [ 3335 0 R /XYZ 81.077 228.857 null ] >>
+endobj
+3373 0 obj
+<< /D [ 3335 0 R /XYZ 81.077 217.898 null ] >>
+endobj
+3374 0 obj
+<< /D [ 3335 0 R /XYZ 81.077 206.939 null ] >>
+endobj
+3375 0 obj
+<< /D [ 3335 0 R /XYZ 81.077 195.98 null ] >>
+endobj
+3376 0 obj
+<< /D [ 3335 0 R /XYZ 81.077 185.021 null ] >>
+endobj
+3377 0 obj
+<< /D [ 3335 0 R /XYZ 81.077 174.062 null ] >>
+endobj
+3378 0 obj
+<< /D [ 3335 0 R /XYZ 81.077 163.103 null ] >>
+endobj
+3379 0 obj
+<< /D [ 3335 0 R /XYZ 81.077 152.144 null ] >>
+endobj
+3380 0 obj
+<< /D [ 3335 0 R /XYZ 81.077 105.32 null ] >>
+endobj
+3334 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F20 186 0 R /F73 189 0 R /F69 183 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+3383 0 obj
+<< /Filter /FlateDecode /Length 2202 >>
+stream
+xY[o~_a(xPlQAѺ@N!(2m#ɓ vN13IKsHF"Z&o޽"F -7^D 1r!FurWoiLۺ(+"y3Ȳ+ڷ]eԶ.3vh[wt̀~:N!J i;{;4:-ͤ[&ګzP# P ?M]Q7ڃ@y.UH`(刐D1e?0({/h^PqQ}LY&OMӛUvUs—mbꏺJ:ifu3?{lSCDiUeQ},uMXk#gVu"Qx&iuUMט%,44_K#]}h ՉYgF!^_)Ӣ$Y`q
+UhUUû%CKe
+EN.nNҋ F%2mlnDw/&yQ 3yJDt5O4ǤfM." 5ڗٸ4sA"\3‘{]v0fc-"Qsa }nR#
+$Ҽlm0m6iގ/+te5-NaY>mz=6qM}:<Ǚ`ڥr#N Ivq8B ?0GTMxh?a}[ G 12t.¤s>I;$En]=U2X 3]AF[S[wM}< xC{1Hf=+*K@nĢN$1%qG g4B3lϺbf4]߾}aDooU0MZ8L.QrwixF~Sm>i>KGYJ}ğ0yZ, 3+"4j@:gMn˴(LYwPӑN$Pɦ/F =Iݸ (Ӿϛh~A,Xs BR C훼ycHvYSo30$]xZI>Hdt#N?B2d3Hͨ;և ʰ6󛹑ґ°tuI{swp)}lm(}S` ('b #bl(CF><ح
+'+<71bx*B~"bPɷɏ睵(ҩ1>GÅDJD x336<s}}y
+Ґq:b(=t܆k˩")6~6.H
+px-<hXo!͊aa(lJΊ-E6-ՔUXq3+W 8v\FH)A+{l߀NCyzr2hP<f_
+endstream
+endobj
+3382 0 obj
+<< /Type /Page /Contents 3383 0 R /Resources 3381 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3298 0 R >>
+endobj
+3384 0 obj
+<< /D [ 3382 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+3385 0 obj
+<< /D [ 3382 0 R /XYZ 81.077 742.996 null ] >>
+endobj
+3386 0 obj
+<< /D [ 3382 0 R /XYZ 81.077 732.037 null ] >>
+endobj
+3387 0 obj
+<< /D [ 3382 0 R /XYZ 81.077 721.079 null ] >>
+endobj
+3388 0 obj
+<< /D [ 3382 0 R /XYZ 81.077 710.12 null ] >>
+endobj
+3389 0 obj
+<< /D [ 3382 0 R /XYZ 81.077 699.161 null ] >>
+endobj
+53 0 obj
+<< /D [ 3382 0 R /XYZ 79.37 674.791 null ] >>
+endobj
+3390 0 obj
+<< /D [ 3382 0 R /XYZ 81.077 586.783 null ] >>
+endobj
+3391 0 obj
+<< /D [ 3382 0 R /XYZ 81.077 575.824 null ] >>
+endobj
+3392 0 obj
+<< /D [ 3382 0 R /XYZ 81.077 523.157 null ] >>
+endobj
+3393 0 obj
+<< /D [ 3382 0 R /XYZ 81.077 512.198 null ] >>
+endobj
+3394 0 obj
+<< /D [ 3382 0 R /XYZ 81.077 501.239 null ] >>
+endobj
+3395 0 obj
+<< /D [ 3382 0 R /XYZ 81.077 490.28 null ] >>
+endobj
+3396 0 obj
+<< /D [ 3382 0 R /XYZ 81.077 479.321 null ] >>
+endobj
+3397 0 obj
+<< /D [ 3382 0 R /XYZ 81.077 468.363 null ] >>
+endobj
+3398 0 obj
+<< /D [ 3382 0 R /XYZ 81.077 457.404 null ] >>
+endobj
+3399 0 obj
+<< /D [ 3382 0 R /XYZ 81.077 422.804 null ] >>
+endobj
+3400 0 obj
+<< /D [ 3382 0 R /XYZ 81.077 411.845 null ] >>
+endobj
+3401 0 obj
+<< /D [ 3382 0 R /XYZ 81.077 377.246 null ] >>
+endobj
+3402 0 obj
+<< /D [ 3382 0 R /XYZ 81.077 366.287 null ] >>
+endobj
+3403 0 obj
+<< /D [ 3382 0 R /XYZ 81.077 355.328 null ] >>
+endobj
+3404 0 obj
+<< /D [ 3382 0 R /XYZ 81.077 344.369 null ] >>
+endobj
+3405 0 obj
+<< /D [ 3382 0 R /XYZ 81.077 333.411 null ] >>
+endobj
+3406 0 obj
+<< /D [ 3382 0 R /XYZ 81.077 286.856 null ] >>
+endobj
+3407 0 obj
+<< /D [ 3382 0 R /XYZ 81.077 275.897 null ] >>
+endobj
+3408 0 obj
+<< /D [ 3382 0 R /XYZ 81.077 264.938 null ] >>
+endobj
+3409 0 obj
+<< /D [ 3382 0 R /XYZ 81.077 253.979 null ] >>
+endobj
+3410 0 obj
+<< /D [ 3382 0 R /XYZ 81.077 243.021 null ] >>
+endobj
+3411 0 obj
+<< /D [ 3382 0 R /XYZ 81.077 232.062 null ] >>
+endobj
+3412 0 obj
+<< /D [ 3382 0 R /XYZ 81.077 221.103 null ] >>
+endobj
+3413 0 obj
+<< /D [ 3382 0 R /XYZ 81.077 210.144 null ] >>
+endobj
+3414 0 obj
+<< /D [ 3382 0 R /XYZ 81.077 199.185 null ] >>
+endobj
+3415 0 obj
+<< /D [ 3382 0 R /XYZ 81.077 188.226 null ] >>
+endobj
+3416 0 obj
+<< /D [ 3382 0 R /XYZ 81.077 177.267 null ] >>
+endobj
+3417 0 obj
+<< /D [ 3382 0 R /XYZ 81.077 166.308 null ] >>
+endobj
+3418 0 obj
+<< /D [ 3382 0 R /XYZ 81.077 155.349 null ] >>
+endobj
+3419 0 obj
+<< /D [ 3382 0 R /XYZ 81.077 144.39 null ] >>
+endobj
+3420 0 obj
+<< /D [ 3382 0 R /XYZ 81.077 133.431 null ] >>
+endobj
+3421 0 obj
+<< /D [ 3382 0 R /XYZ 81.077 122.473 null ] >>
+endobj
+3422 0 obj
+<< /D [ 3382 0 R /XYZ 81.077 111.514 null ] >>
+endobj
+3423 0 obj
+<< /D [ 3382 0 R /XYZ 81.077 100.555 null ] >>
+endobj
+3424 0 obj
+<< /D [ 3382 0 R /XYZ 81.077 89.596 null ] >>
+endobj
+3425 0 obj
+<< /D [ 3382 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+3381 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F73 189 0 R /F69 183 0 R /F72 187 0 R /F76 318 0 R /F20 186 0 R /F70 185 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+3428 0 obj
+<< /Filter /FlateDecode /Length 1905 >>
+stream
+xڽZ]o6}ϯCX~SÐ[!6}XAqG,\߾KKE'u}/чuK{%CzA+Qz+#؄ >_0 D330`25IbGO~ mx !VkLD V0ʻ-=o(%ctW,@}D@w\Lx=JЍ͈aVuϵ8% 9uE1jy3$,Fp`tx;]󐍸)="-ZyyWSnuQ@n=/D@KkW`B)qi$dt [yK9,{o*Cݛ|ooWDtc&9aB Oik*;Χ`aac'+j~YYy7R\cs=z\v<pTpTЏ_4oqdߖ()B{k]_[bi^;7FsҒ$ $S9E:[tRX:{[w_}]BPR
+_"4~nq]+}p;{K7rVޚ\^o4I5DZRяsiY2K9%!N l#u
+e|Ӌ,զy/yYZ 㱸'ǽˊyfO|,(_Cѡ#󒔄*Bo 7+!ԭT3
+.Dcdedys'^K1Flr_a !Eꖮtm݁+yӝ{C,:pV =f(h(IQh$#ֲ0%U"aVr|(wtzȖ8S}.<8}Z\u R# Goi@^by@dLǣ<uQR ajWU5o_m
+6d5ߔG8_5v"ZD }ݱVs+7.oCaO;BI
+- Btg>D㛛ldvQ4< AYvd(Y>&I*QcI΃WӦ
+EsxC]ͳ~C6m{ fc<(T]Jdc3Ͻᱡo8 UM [ޛb %q`~!x-&f
+@%EaVȇ;׉M^?_n_/* g1SL)FTYA,hvrTX nK6PcW5nO\_.7wE%CiL?Bp1hlȤ '"7 tAqUM(-HDHLrMGSL6sIf3l\.>FaC4>zCt-qQA*C)sqK9qg.
+8}q>=sPYL qzqw`t}fnRNCn=r](w[X2P>68.-F1ܷ[C`PCﶉ8.QF'rp42됞8.Fhmމ!RenA8CFG-6d`GԽWx:fm>\NMvzGIDh!ʄ$0BgtEZ?9}j`,}%
+#$nT=pwXd:]l"5:v\)
+ܡq[Ib|w_T#Cl7u}t C0Lrb}L}V?9]զ|?,ܧ?thHIw?#_ן$|~o 2.J$%&v_&(h
+endstream
+endobj
+3427 0 obj
+<< /Type /Page /Contents 3428 0 R /Resources 3426 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3298 0 R >>
+endobj
+3429 0 obj
+<< /D [ 3427 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+3430 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+3431 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+3432 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 705.136 null ] >>
+endobj
+3433 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 694.177 null ] >>
+endobj
+3434 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 683.218 null ] >>
+endobj
+3435 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 672.259 null ] >>
+endobj
+3436 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 661.3 null ] >>
+endobj
+3437 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 650.341 null ] >>
+endobj
+3438 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 639.382 null ] >>
+endobj
+3439 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 628.423 null ] >>
+endobj
+3440 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 617.464 null ] >>
+endobj
+3441 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 606.506 null ] >>
+endobj
+3442 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 595.547 null ] >>
+endobj
+3443 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 584.588 null ] >>
+endobj
+3444 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 549.762 null ] >>
+endobj
+3445 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 538.803 null ] >>
+endobj
+3446 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 527.844 null ] >>
+endobj
+3447 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 516.885 null ] >>
+endobj
+3448 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 482.059 null ] >>
+endobj
+3449 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 471.1 null ] >>
+endobj
+3450 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 460.141 null ] >>
+endobj
+3451 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 449.182 null ] >>
+endobj
+3452 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 438.223 null ] >>
+endobj
+3453 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 385.486 null ] >>
+endobj
+3454 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 374.527 null ] >>
+endobj
+3455 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 363.568 null ] >>
+endobj
+3456 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 352.61 null ] >>
+endobj
+3457 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 341.651 null ] >>
+endobj
+3458 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 330.692 null ] >>
+endobj
+3459 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 319.733 null ] >>
+endobj
+3460 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 308.774 null ] >>
+endobj
+3461 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 297.815 null ] >>
+endobj
+3462 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 286.856 null ] >>
+endobj
+3463 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 275.897 null ] >>
+endobj
+3464 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 264.938 null ] >>
+endobj
+3465 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 253.979 null ] >>
+endobj
+3466 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 243.021 null ] >>
+endobj
+3467 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 232.062 null ] >>
+endobj
+3468 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 221.103 null ] >>
+endobj
+3469 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 210.144 null ] >>
+endobj
+3470 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 199.185 null ] >>
+endobj
+3471 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 188.226 null ] >>
+endobj
+3472 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 177.267 null ] >>
+endobj
+3473 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 166.308 null ] >>
+endobj
+3474 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 155.349 null ] >>
+endobj
+3475 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 144.39 null ] >>
+endobj
+3476 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 133.431 null ] >>
+endobj
+3477 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 122.473 null ] >>
+endobj
+3478 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 111.514 null ] >>
+endobj
+3479 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 100.555 null ] >>
+endobj
+3480 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 89.596 null ] >>
+endobj
+3481 0 obj
+<< /D [ 3427 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+3426 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F70 185 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+3484 0 obj
+<< /Filter /FlateDecode /Length 1449 >>
+stream
+xڽZKoH WhN0"(COzh Aۨ$]dߗ0Gtҽt ˟!9GNóqƳOG|2|?}<:p*,xdvy}$G<
+9+"e_e]6dkOBq&_-41mo2ږl 4>!
+cp!i
+W|NB6!h1ZuEvK椎Z 4=HN0gMzp|Fo#rjiXVU~U][D\u>_,.dXHfR(kPwk9znS4,X.4)qh@Hy恝N+G
+Ԍ4RPSJn?]8_M61u9nnb/Jp 6xC)`#T@h|$j#hDLL&'Ɓ:#^ A%W蜜2ӻ:" >&+{0
++;#4YՌQ M(O} (
+ciJO
+(SطY$eJ-K:NTS+g*x~ 0ћ@&E7l@2Χb\+.EFY^
+caӊ~ pw/̅9yqbm@_ȡԎŒ4!Af`{~bkWM M n)MRl6!܄@]hBӃlTRO-t)x7KUi=r ~: x)qrҴNzC}"%h e)y8ՃXc3Y1Ӄ
+endstream
+endobj
+3483 0 obj
+<< /Type /Page /Contents 3484 0 R /Resources 3482 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3298 0 R >>
+endobj
+3485 0 obj
+<< /D [ 3483 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+3486 0 obj
+<< /D [ 3483 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+3487 0 obj
+<< /D [ 3483 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+3488 0 obj
+<< /D [ 3483 0 R /XYZ 81.077 723.372 null ] >>
+endobj
+3489 0 obj
+<< /D [ 3483 0 R /XYZ 81.077 712.413 null ] >>
+endobj
+3490 0 obj
+<< /D [ 3483 0 R /XYZ 81.077 701.454 null ] >>
+endobj
+3491 0 obj
+<< /D [ 3483 0 R /XYZ 81.077 690.495 null ] >>
+endobj
+3492 0 obj
+<< /D [ 3483 0 R /XYZ 81.077 679.536 null ] >>
+endobj
+3493 0 obj
+<< /D [ 3483 0 R /XYZ 81.077 668.577 null ] >>
+endobj
+3494 0 obj
+<< /D [ 3483 0 R /XYZ 81.077 657.618 null ] >>
+endobj
+3495 0 obj
+<< /D [ 3483 0 R /XYZ 81.077 646.659 null ] >>
+endobj
+3496 0 obj
+<< /D [ 3483 0 R /XYZ 81.077 617.952 null ] >>
+endobj
+3497 0 obj
+<< /D [ 3483 0 R /XYZ 81.077 606.993 null ] >>
+endobj
+3498 0 obj
+<< /D [ 3483 0 R /XYZ 81.077 572.492 null ] >>
+endobj
+3499 0 obj
+<< /D [ 3483 0 R /XYZ 81.077 561.533 null ] >>
+endobj
+3500 0 obj
+<< /D [ 3483 0 R /XYZ 81.077 550.574 null ] >>
+endobj
+3501 0 obj
+<< /D [ 3483 0 R /XYZ 81.077 539.615 null ] >>
+endobj
+3502 0 obj
+<< /D [ 3483 0 R /XYZ 81.077 528.656 null ] >>
+endobj
+3503 0 obj
+<< /D [ 3483 0 R /XYZ 81.077 494.155 null ] >>
+endobj
+3504 0 obj
+<< /D [ 3483 0 R /XYZ 81.077 483.196 null ] >>
+endobj
+3505 0 obj
+<< /D [ 3483 0 R /XYZ 81.077 472.237 null ] >>
+endobj
+3506 0 obj
+<< /D [ 3483 0 R /XYZ 81.077 461.278 null ] >>
+endobj
+3507 0 obj
+<< /D [ 3483 0 R /XYZ 81.077 450.319 null ] >>
+endobj
+3508 0 obj
+<< /D [ 3483 0 R /XYZ 81.077 415.818 null ] >>
+endobj
+3509 0 obj
+<< /D [ 3483 0 R /XYZ 81.077 404.859 null ] >>
+endobj
+3510 0 obj
+<< /D [ 3483 0 R /XYZ 81.077 393.9 null ] >>
+endobj
+3511 0 obj
+<< /D [ 3483 0 R /XYZ 81.077 382.942 null ] >>
+endobj
+3512 0 obj
+<< /D [ 3483 0 R /XYZ 81.077 371.983 null ] >>
+endobj
+3513 0 obj
+<< /D [ 3483 0 R /XYZ 81.077 361.024 null ] >>
+endobj
+3514 0 obj
+<< /D [ 3483 0 R /XYZ 81.077 350.065 null ] >>
+endobj
+3515 0 obj
+<< /D [ 3483 0 R /XYZ 81.077 339.106 null ] >>
+endobj
+3516 0 obj
+<< /D [ 3483 0 R /XYZ 81.077 328.147 null ] >>
+endobj
+3517 0 obj
+<< /D [ 3483 0 R /XYZ 81.077 317.188 null ] >>
+endobj
+3518 0 obj
+<< /D [ 3483 0 R /XYZ 81.077 306.229 null ] >>
+endobj
+3519 0 obj
+<< /D [ 3483 0 R /XYZ 81.077 295.27 null ] >>
+endobj
+3520 0 obj
+<< /D [ 3483 0 R /XYZ 81.077 284.311 null ] >>
+endobj
+3521 0 obj
+<< /D [ 3483 0 R /XYZ 81.077 273.353 null ] >>
+endobj
+3522 0 obj
+<< /D [ 3483 0 R /XYZ 81.077 262.394 null ] >>
+endobj
+3523 0 obj
+<< /D [ 3483 0 R /XYZ 81.077 251.435 null ] >>
+endobj
+3524 0 obj
+<< /D [ 3483 0 R /XYZ 81.077 240.476 null ] >>
+endobj
+3525 0 obj
+<< /D [ 3483 0 R /XYZ 81.077 229.517 null ] >>
+endobj
+3526 0 obj
+<< /D [ 3483 0 R /XYZ 81.077 200.809 null ] >>
+endobj
+3527 0 obj
+<< /D [ 3483 0 R /XYZ 81.077 189.85 null ] >>
+endobj
+3528 0 obj
+<< /D [ 3483 0 R /XYZ 81.077 155.349 null ] >>
+endobj
+3529 0 obj
+<< /D [ 3483 0 R /XYZ 81.077 144.39 null ] >>
+endobj
+3530 0 obj
+<< /D [ 3483 0 R /XYZ 81.077 133.431 null ] >>
+endobj
+3531 0 obj
+<< /D [ 3483 0 R /XYZ 81.077 122.473 null ] >>
+endobj
+3532 0 obj
+<< /D [ 3483 0 R /XYZ 81.077 111.514 null ] >>
+endobj
+3533 0 obj
+<< /D [ 3483 0 R /XYZ 81.077 100.555 null ] >>
+endobj
+3534 0 obj
+<< /D [ 3483 0 R /XYZ 81.077 89.596 null ] >>
+endobj
+3535 0 obj
+<< /D [ 3483 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+3482 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+3538 0 obj
+<< /Filter /FlateDecode /Length 2201 >>
+stream
+xڭZo0Ћ6\-!
+xBrIT4 9 #>13h' *h@H$Rl.c6oZ롪C7yFVu(>&iC׳RIDA%IybvAf
+Y2ΛSA2Z%Tq:1k. RE>e(]0~9.Zxv/i__V4qB%)yeவlpm3PݹMѸUQ71VTYXp_7 g *DEHRX<1c4 k,m g#\|#'(\F`fLkIԑ 0M[3H&Ӥ3I`҂
+ -&B`MyU9gxcep kD1c[s5MhtNL>eǥ
+'cT/-U 7<Ơ5ۥ`N!PD/bmoB X4YQNuң/
+MRC4ӓi*py3IT%lLe)Q2n/J 4=S7Y$k_dQqm7澏u"wALǐrZ#*U2l{{=-k5'lO/#)gb)Idᤌ"ʇWCtO)AT UF%
+8'41@ǘ׌Qi&CXG|?ِg ǭsm6;o)Ppy>#6zDvsJ'Nܭ
+O9MBDl u6KޥN yP ^|g[L|9eܼ{pO8u 5޽3~ur W>n֬~5!0|flnFwQ绬-{7{~-ge\Bg\xPY%EϦXN>tt%A/Q/>N#@W@WrBS2\j 6"PNd% `
+endstream
+endobj
+3537 0 obj
+<< /Type /Page /Contents 3538 0 R /Resources 3536 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3298 0 R >>
+endobj
+3539 0 obj
+<< /D [ 3537 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+3540 0 obj
+<< /D [ 3537 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+3541 0 obj
+<< /D [ 3537 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+3542 0 obj
+<< /D [ 3537 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+3543 0 obj
+<< /D [ 3537 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+3544 0 obj
+<< /D [ 3537 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+3545 0 obj
+<< /D [ 3537 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+3546 0 obj
+<< /D [ 3537 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+3547 0 obj
+<< /D [ 3537 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+3548 0 obj
+<< /D [ 3537 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+3549 0 obj
+<< /D [ 3537 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+3550 0 obj
+<< /D [ 3537 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+3551 0 obj
+<< /D [ 3537 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+3552 0 obj
+<< /D [ 3537 0 R /XYZ 81.077 619.411 null ] >>
+endobj
+3553 0 obj
+<< /D [ 3537 0 R /XYZ 81.077 608.452 null ] >>
+endobj
+3554 0 obj
+<< /D [ 3537 0 R /XYZ 81.077 579.579 null ] >>
+endobj
+3555 0 obj
+<< /D [ 3537 0 R /XYZ 81.077 568.62 null ] >>
+endobj
+3556 0 obj
+<< /D [ 3537 0 R /XYZ 81.077 557.661 null ] >>
+endobj
+3557 0 obj
+<< /D [ 3537 0 R /XYZ 81.077 546.702 null ] >>
+endobj
+3558 0 obj
+<< /D [ 3537 0 R /XYZ 81.077 535.744 null ] >>
+endobj
+3559 0 obj
+<< /D [ 3537 0 R /XYZ 81.077 524.785 null ] >>
+endobj
+3560 0 obj
+<< /D [ 3537 0 R /XYZ 81.077 508.863 null ] >>
+endobj
+3561 0 obj
+<< /D [ 3537 0 R /XYZ 81.077 497.904 null ] >>
+endobj
+3562 0 obj
+<< /D [ 3537 0 R /XYZ 81.077 486.945 null ] >>
+endobj
+3563 0 obj
+<< /D [ 3537 0 R /XYZ 81.077 475.986 null ] >>
+endobj
+3564 0 obj
+<< /D [ 3537 0 R /XYZ 81.077 465.028 null ] >>
+endobj
+3565 0 obj
+<< /D [ 3537 0 R /XYZ 81.077 386.389 null ] >>
+endobj
+3566 0 obj
+<< /D [ 3537 0 R /XYZ 81.077 375.43 null ] >>
+endobj
+3567 0 obj
+<< /D [ 3537 0 R /XYZ 81.077 364.471 null ] >>
+endobj
+3568 0 obj
+<< /D [ 3537 0 R /XYZ 81.077 353.512 null ] >>
+endobj
+3569 0 obj
+<< /D [ 3537 0 R /XYZ 81.077 342.553 null ] >>
+endobj
+3570 0 obj
+<< /D [ 3537 0 R /XYZ 81.077 331.594 null ] >>
+endobj
+3571 0 obj
+<< /D [ 3537 0 R /XYZ 81.077 320.635 null ] >>
+endobj
+3572 0 obj
+<< /D [ 3537 0 R /XYZ 81.077 309.676 null ] >>
+endobj
+3573 0 obj
+<< /D [ 3537 0 R /XYZ 81.077 250.972 null ] >>
+endobj
+3574 0 obj
+<< /D [ 3537 0 R /XYZ 81.077 240.013 null ] >>
+endobj
+3575 0 obj
+<< /D [ 3537 0 R /XYZ 81.077 229.054 null ] >>
+endobj
+3576 0 obj
+<< /D [ 3537 0 R /XYZ 81.077 218.095 null ] >>
+endobj
+3577 0 obj
+<< /D [ 3537 0 R /XYZ 81.077 207.136 null ] >>
+endobj
+3578 0 obj
+<< /D [ 3537 0 R /XYZ 81.077 196.177 null ] >>
+endobj
+3579 0 obj
+<< /D [ 3537 0 R /XYZ 81.077 185.218 null ] >>
+endobj
+3580 0 obj
+<< /D [ 3537 0 R /XYZ 81.077 174.259 null ] >>
+endobj
+3581 0 obj
+<< /D [ 3537 0 R /XYZ 81.077 133.431 null ] >>
+endobj
+3582 0 obj
+<< /D [ 3537 0 R /XYZ 81.077 122.473 null ] >>
+endobj
+3583 0 obj
+<< /D [ 3537 0 R /XYZ 81.077 111.514 null ] >>
+endobj
+3584 0 obj
+<< /D [ 3537 0 R /XYZ 81.077 100.555 null ] >>
+endobj
+3585 0 obj
+<< /D [ 3537 0 R /XYZ 81.077 89.596 null ] >>
+endobj
+3586 0 obj
+<< /D [ 3537 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+3536 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F26 662 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+3589 0 obj
+<< /Filter /FlateDecode /Length 2237 >>
+stream
+xڵYmo6ߪ
+S2[aL $IQ*lДQd32!XJD Z8))ѯ7'LYWz_uVwwR,*wO4CQ`^&0Wf*DǯMŠMkfШh} PS1h=[3mw:kU)i;
+9tS4nm8fQc/ֹe~_->~އ#ȄblGY~ 5]3fVy 愤 $ǟ щeli!L#O^^4I
+["ec~Í )I?HRT]^JoqmueXR 1[ X EeGG[m>|Ap8C_p@k]W4ϝ WF\ɸEU!Y5[\q)TmKeR LK8)CpDsbP<įjgYtybٵ;g} xkb*Adc]ԣ!Z+tu1( :酹I 4L
+ޟ;`ħBo?U]fwv2Br9\uMv B9I.hG6Xdݙ9
+p"
+{{=o$ *OC֛cFAoCש-#xa6 C癝 >}>^q[/P38C՝?`FTB+r
+.$:V2ǫ qwzL kp8TIuO+YISn|2걙uJN} kR94!)O*c rs29'zUs^mbJ[e.X,]kQFEek{i8^]nmط۽mKԊ3"SW^c[|6D}E5Cqw2Q1Ծǫ}{rRDE
+@$f,Ex+a
+endstream
+endobj
+3588 0 obj
+<< /Type /Page /Contents 3589 0 R /Resources 3587 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3298 0 R >>
+endobj
+3590 0 obj
+<< /D [ 3588 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+3591 0 obj
+<< /D [ 3588 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+3592 0 obj
+<< /D [ 3588 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+3593 0 obj
+<< /D [ 3588 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+3594 0 obj
+<< /D [ 3588 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+3595 0 obj
+<< /D [ 3588 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+3596 0 obj
+<< /D [ 3588 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+3597 0 obj
+<< /D [ 3588 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+3598 0 obj
+<< /D [ 3588 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+3599 0 obj
+<< /D [ 3588 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+3600 0 obj
+<< /D [ 3588 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+3601 0 obj
+<< /D [ 3588 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+3602 0 obj
+<< /D [ 3588 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+3603 0 obj
+<< /D [ 3588 0 R /XYZ 81.077 637.325 null ] >>
+endobj
+3604 0 obj
+<< /D [ 3588 0 R /XYZ 81.077 626.366 null ] >>
+endobj
+3605 0 obj
+<< /D [ 3588 0 R /XYZ 81.077 615.407 null ] >>
+endobj
+3606 0 obj
+<< /D [ 3588 0 R /XYZ 81.077 604.448 null ] >>
+endobj
+3607 0 obj
+<< /D [ 3588 0 R /XYZ 81.077 593.489 null ] >>
+endobj
+3608 0 obj
+<< /D [ 3588 0 R /XYZ 81.077 582.53 null ] >>
+endobj
+3609 0 obj
+<< /D [ 3588 0 R /XYZ 81.077 571.571 null ] >>
+endobj
+3610 0 obj
+<< /D [ 3588 0 R /XYZ 81.077 560.613 null ] >>
+endobj
+3611 0 obj
+<< /D [ 3588 0 R /XYZ 81.077 549.654 null ] >>
+endobj
+3612 0 obj
+<< /D [ 3588 0 R /XYZ 81.077 520.762 null ] >>
+endobj
+3613 0 obj
+<< /D [ 3588 0 R /XYZ 81.077 509.803 null ] >>
+endobj
+3614 0 obj
+<< /D [ 3588 0 R /XYZ 81.077 498.844 null ] >>
+endobj
+3615 0 obj
+<< /D [ 3588 0 R /XYZ 81.077 469.953 null ] >>
+endobj
+3616 0 obj
+<< /D [ 3588 0 R /XYZ 81.077 458.994 null ] >>
+endobj
+3617 0 obj
+<< /D [ 3588 0 R /XYZ 81.077 448.035 null ] >>
+endobj
+3618 0 obj
+<< /D [ 3588 0 R /XYZ 81.077 437.076 null ] >>
+endobj
+3619 0 obj
+<< /D [ 3588 0 R /XYZ 81.077 372.319 null ] >>
+endobj
+3620 0 obj
+<< /D [ 3588 0 R /XYZ 81.077 361.36 null ] >>
+endobj
+3621 0 obj
+<< /D [ 3588 0 R /XYZ 81.077 308.558 null ] >>
+endobj
+3622 0 obj
+<< /D [ 3588 0 R /XYZ 81.077 297.599 null ] >>
+endobj
+3623 0 obj
+<< /D [ 3588 0 R /XYZ 81.077 286.64 null ] >>
+endobj
+3624 0 obj
+<< /D [ 3588 0 R /XYZ 81.077 275.681 null ] >>
+endobj
+3625 0 obj
+<< /D [ 3588 0 R /XYZ 81.077 264.722 null ] >>
+endobj
+3626 0 obj
+<< /D [ 3588 0 R /XYZ 81.077 253.763 null ] >>
+endobj
+3627 0 obj
+<< /D [ 3588 0 R /XYZ 81.077 242.804 null ] >>
+endobj
+3628 0 obj
+<< /D [ 3588 0 R /XYZ 81.077 231.845 null ] >>
+endobj
+3629 0 obj
+<< /D [ 3588 0 R /XYZ 81.077 190.999 null ] >>
+endobj
+3630 0 obj
+<< /D [ 3588 0 R /XYZ 81.077 180.04 null ] >>
+endobj
+3631 0 obj
+<< /D [ 3588 0 R /XYZ 81.077 169.081 null ] >>
+endobj
+3632 0 obj
+<< /D [ 3588 0 R /XYZ 81.077 158.122 null ] >>
+endobj
+3633 0 obj
+<< /D [ 3588 0 R /XYZ 81.077 147.163 null ] >>
+endobj
+3634 0 obj
+<< /D [ 3588 0 R /XYZ 81.077 131.223 null ] >>
+endobj
+3635 0 obj
+<< /D [ 3588 0 R /XYZ 81.077 120.264 null ] >>
+endobj
+3636 0 obj
+<< /D [ 3588 0 R /XYZ 81.077 109.305 null ] >>
+endobj
+3587 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F26 662 0 R /F76 318 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+3639 0 obj
+<< /Filter /FlateDecode /Length 2353 >>
+stream
+xڭZKϯpN4OQ!,C! %,Ow`o!TE'MXrn?O?}!jhO
+1A8#<XNþ+,]}T}[Q;7Pǔr$W1Ƈܔ} ;}ukE;toPw_7ud~e0_ՀgSÕ痫R\ DmxSŒC&"8$6qug̯edF+վҦ=!VwV\lj7h퇈L Iקέ?덖fdu1}>u;
+'~)$"Yt_j)3ɗUگS՟ aaxqdS26)ܔA/?O_ϥ ͸/U~1;PdH蘄?J-8R9a4T)PF@'p.EX#ZnnBau'0ovυEK^m_3R5!Qν&b&Dp`L=7&Q:6ny(z/+B(&ULahedԜt
+vHΛg+yhGStVaTIKJrFDn%ʑ>*67Ŝ ϕjfgQ8`!@I iGKGK][].R}("N<f8`hkQzGn{iշ}\<6u
+6ZXzҮ8X=HXn*ҡ@aaE$+Z&/H^ʃY){bURD
+ xQkA{]Zez7U}_œfq
+k*gw
+ŖWN?\Wj\%8i#,f=ٽ6dcױ)A WKm]q>i? pM*Þ/踡Cvw9ڵhxe7IZ|VO@Yl"])GT񫹼 W^V<ۛ}GgBąxn4.ό=pnz6ͫfn`s ̂Ro oOuL@HC5چ+
+ 2mGD
+LR!@+@鈲Izr۵Ə346ȁ%ȐnZ|0V#*
+9Ir$[lrvbTʰ |4C2ۑ89&+DTӲq>qF62$Ȅf+ӫ,s4&7}IVΤ]3ޑSĵs 5XC5kiK+
+@뚐x'M&{Z'jc0:
+-]ە~"}'8MڌuKs!vX[c$s
++1u2o*1ʕ2
+*/C*BiB$A(l?"%ш־;jWZr:plfgH7(qu
+endstream
+endobj
+3638 0 obj
+<< /Type /Page /Contents 3639 0 R /Resources 3637 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3298 0 R >>
+endobj
+3640 0 obj
+<< /D [ 3638 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+3641 0 obj
+<< /D [ 3638 0 R /XYZ 81.077 730.974 null ] >>
+endobj
+3642 0 obj
+<< /D [ 3638 0 R /XYZ 81.077 720.015 null ] >>
+endobj
+3643 0 obj
+<< /D [ 3638 0 R /XYZ 81.077 709.056 null ] >>
+endobj
+3644 0 obj
+<< /D [ 3638 0 R /XYZ 81.077 698.097 null ] >>
+endobj
+3645 0 obj
+<< /D [ 3638 0 R /XYZ 81.077 687.138 null ] >>
+endobj
+3646 0 obj
+<< /D [ 3638 0 R /XYZ 81.077 676.179 null ] >>
+endobj
+3647 0 obj
+<< /D [ 3638 0 R /XYZ 81.077 665.22 null ] >>
+endobj
+3648 0 obj
+<< /D [ 3638 0 R /XYZ 81.077 654.261 null ] >>
+endobj
+3649 0 obj
+<< /D [ 3638 0 R /XYZ 81.077 643.302 null ] >>
+endobj
+3650 0 obj
+<< /D [ 3638 0 R /XYZ 81.077 632.344 null ] >>
+endobj
+3651 0 obj
+<< /D [ 3638 0 R /XYZ 81.077 621.385 null ] >>
+endobj
+3652 0 obj
+<< /D [ 3638 0 R /XYZ 81.077 580.538 null ] >>
+endobj
+3653 0 obj
+<< /D [ 3638 0 R /XYZ 81.077 569.579 null ] >>
+endobj
+3654 0 obj
+<< /D [ 3638 0 R /XYZ 81.077 558.62 null ] >>
+endobj
+3655 0 obj
+<< /D [ 3638 0 R /XYZ 81.077 493.863 null ] >>
+endobj
+3656 0 obj
+<< /D [ 3638 0 R /XYZ 81.077 482.904 null ] >>
+endobj
+3657 0 obj
+<< /D [ 3638 0 R /XYZ 81.077 471.945 null ] >>
+endobj
+3658 0 obj
+<< /D [ 3638 0 R /XYZ 81.077 419.143 null ] >>
+endobj
+3659 0 obj
+<< /D [ 3638 0 R /XYZ 81.077 408.184 null ] >>
+endobj
+3660 0 obj
+<< /D [ 3638 0 R /XYZ 81.077 397.225 null ] >>
+endobj
+3661 0 obj
+<< /D [ 3638 0 R /XYZ 81.077 386.266 null ] >>
+endobj
+3662 0 obj
+<< /D [ 3638 0 R /XYZ 81.077 375.307 null ] >>
+endobj
+3663 0 obj
+<< /D [ 3638 0 R /XYZ 81.077 364.349 null ] >>
+endobj
+3664 0 obj
+<< /D [ 3638 0 R /XYZ 81.077 353.39 null ] >>
+endobj
+3665 0 obj
+<< /D [ 3638 0 R /XYZ 81.077 342.431 null ] >>
+endobj
+3666 0 obj
+<< /D [ 3638 0 R /XYZ 81.077 331.472 null ] >>
+endobj
+3667 0 obj
+<< /D [ 3638 0 R /XYZ 81.077 320.513 null ] >>
+endobj
+3668 0 obj
+<< /D [ 3638 0 R /XYZ 81.077 309.554 null ] >>
+endobj
+3669 0 obj
+<< /D [ 3638 0 R /XYZ 81.077 278.67 null ] >>
+endobj
+3670 0 obj
+<< /D [ 3638 0 R /XYZ 81.077 267.711 null ] >>
+endobj
+3671 0 obj
+<< /D [ 3638 0 R /XYZ 81.077 256.752 null ] >>
+endobj
+3672 0 obj
+<< /D [ 3638 0 R /XYZ 81.077 245.793 null ] >>
+endobj
+3673 0 obj
+<< /D [ 3638 0 R /XYZ 81.077 234.834 null ] >>
+endobj
+3674 0 obj
+<< /D [ 3638 0 R /XYZ 81.077 223.875 null ] >>
+endobj
+3675 0 obj
+<< /D [ 3638 0 R /XYZ 81.077 212.916 null ] >>
+endobj
+3676 0 obj
+<< /D [ 3638 0 R /XYZ 81.077 201.957 null ] >>
+endobj
+3677 0 obj
+<< /D [ 3638 0 R /XYZ 81.077 190.999 null ] >>
+endobj
+3678 0 obj
+<< /D [ 3638 0 R /XYZ 81.077 158.122 null ] >>
+endobj
+3679 0 obj
+<< /D [ 3638 0 R /XYZ 81.077 147.163 null ] >>
+endobj
+3680 0 obj
+<< /D [ 3638 0 R /XYZ 81.077 136.204 null ] >>
+endobj
+3681 0 obj
+<< /D [ 3638 0 R /XYZ 81.077 93.365 null ] >>
+endobj
+3637 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F20 186 0 R /F73 189 0 R /F69 183 0 R /F70 185 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+3684 0 obj
+<< /Filter /FlateDecode /Length 2554 >>
+stream
+xڽZmo8_C?rhYKCuo0lb3PYJrlE:cX&5q晡l3ó_ūwH>Q.+xFfiX:K%AXb;-YܩLdWh|*6ϰFAXhm
+qH*[Sf&hZ.-6=M @Z;9(ߕF5w ܗUeYT_XK?*rnj޶v[؂`i7ꋛ}U-'"M%~TW$i߀$Q&M2ٚr񬲘@Bp,,&2\,?7~,:NQ<2(※݌Srz ]YgɌ>ȇ_.։ @ RD;EWi/ѡƸoH
+*Gq[o_y%Q2^uz`Hꖝ4ݍ 2H_Ȃ1bT:(Z-},ojףD|~5mthfp52G+]62Cg#O Sh
+I~f֒~X\ Mm-}4&w+x498$aa}wj7Hig8环XFሐ"mPTS~nLu/vS5K
+LE]!g,e2(qԆOnYJQb$rA cݴMŤaXۦC+I(m&PRf+S]r_VdED,6kQ'r9X.ӷLy q'|s6e|#H.Z0~^1| L".瀮9>yJL1ْGuty|
+q^@}Jm4{ԓS.q\@=qT> gAJ.M%` 6W!!a4PuqąʮOC)
+HS.ýlשmY!)O$RoZ::juk?6hÎtBwlc/hq
+endstream
+endobj
+3683 0 obj
+<< /Type /Page /Contents 3684 0 R /Resources 3682 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3298 0 R >>
+endobj
+3685 0 obj
+<< /D [ 3683 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+3686 0 obj
+<< /D [ 3683 0 R /XYZ 81.077 730.974 null ] >>
+endobj
+3687 0 obj
+<< /D [ 3683 0 R /XYZ 81.077 720.015 null ] >>
+endobj
+3688 0 obj
+<< /D [ 3683 0 R /XYZ 81.077 709.056 null ] >>
+endobj
+3689 0 obj
+<< /D [ 3683 0 R /XYZ 81.077 698.097 null ] >>
+endobj
+3690 0 obj
+<< /D [ 3683 0 R /XYZ 81.077 687.138 null ] >>
+endobj
+3691 0 obj
+<< /D [ 3683 0 R /XYZ 81.077 676.179 null ] >>
+endobj
+3692 0 obj
+<< /D [ 3683 0 R /XYZ 81.077 665.22 null ] >>
+endobj
+3693 0 obj
+<< /D [ 3683 0 R /XYZ 81.077 588.508 null ] >>
+endobj
+3694 0 obj
+<< /D [ 3683 0 R /XYZ 81.077 577.549 null ] >>
+endobj
+3695 0 obj
+<< /D [ 3683 0 R /XYZ 81.077 566.59 null ] >>
+endobj
+3696 0 obj
+<< /D [ 3683 0 R /XYZ 81.077 555.631 null ] >>
+endobj
+3697 0 obj
+<< /D [ 3683 0 R /XYZ 81.077 544.672 null ] >>
+endobj
+3698 0 obj
+<< /D [ 3683 0 R /XYZ 81.077 533.713 null ] >>
+endobj
+3699 0 obj
+<< /D [ 3683 0 R /XYZ 81.077 522.754 null ] >>
+endobj
+3700 0 obj
+<< /D [ 3683 0 R /XYZ 81.077 511.796 null ] >>
+endobj
+3701 0 obj
+<< /D [ 3683 0 R /XYZ 81.077 500.837 null ] >>
+endobj
+3702 0 obj
+<< /D [ 3683 0 R /XYZ 81.077 484.896 null ] >>
+endobj
+3703 0 obj
+<< /D [ 3683 0 R /XYZ 81.077 473.938 null ] >>
+endobj
+3704 0 obj
+<< /D [ 3683 0 R /XYZ 81.077 462.979 null ] >>
+endobj
+3705 0 obj
+<< /D [ 3683 0 R /XYZ 81.077 452.02 null ] >>
+endobj
+3706 0 obj
+<< /D [ 3683 0 R /XYZ 81.077 441.061 null ] >>
+endobj
+3707 0 obj
+<< /D [ 3683 0 R /XYZ 81.077 425.121 null ] >>
+endobj
+3708 0 obj
+<< /D [ 3683 0 R /XYZ 81.077 414.162 null ] >>
+endobj
+3709 0 obj
+<< /D [ 3683 0 R /XYZ 81.077 403.203 null ] >>
+endobj
+3710 0 obj
+<< /D [ 3683 0 R /XYZ 81.077 392.244 null ] >>
+endobj
+3711 0 obj
+<< /D [ 3683 0 R /XYZ 81.077 381.285 null ] >>
+endobj
+3712 0 obj
+<< /D [ 3683 0 R /XYZ 81.077 350.401 null ] >>
+endobj
+3713 0 obj
+<< /D [ 3683 0 R /XYZ 81.077 339.442 null ] >>
+endobj
+3714 0 obj
+<< /D [ 3683 0 R /XYZ 81.077 328.483 null ] >>
+endobj
+3715 0 obj
+<< /D [ 3683 0 R /XYZ 81.077 317.524 null ] >>
+endobj
+3716 0 obj
+<< /D [ 3683 0 R /XYZ 81.077 306.565 null ] >>
+endobj
+3717 0 obj
+<< /D [ 3683 0 R /XYZ 81.077 295.606 null ] >>
+endobj
+3718 0 obj
+<< /D [ 3683 0 R /XYZ 81.077 284.647 null ] >>
+endobj
+3719 0 obj
+<< /D [ 3683 0 R /XYZ 81.077 243.801 null ] >>
+endobj
+3720 0 obj
+<< /D [ 3683 0 R /XYZ 81.077 232.842 null ] >>
+endobj
+3721 0 obj
+<< /D [ 3683 0 R /XYZ 81.077 221.883 null ] >>
+endobj
+3722 0 obj
+<< /D [ 3683 0 R /XYZ 81.077 210.924 null ] >>
+endobj
+3723 0 obj
+<< /D [ 3683 0 R /XYZ 81.077 199.965 null ] >>
+endobj
+3724 0 obj
+<< /D [ 3683 0 R /XYZ 81.077 189.006 null ] >>
+endobj
+3725 0 obj
+<< /D [ 3683 0 R /XYZ 81.077 178.047 null ] >>
+endobj
+3726 0 obj
+<< /D [ 3683 0 R /XYZ 81.077 167.088 null ] >>
+endobj
+3727 0 obj
+<< /D [ 3683 0 R /XYZ 81.077 156.129 null ] >>
+endobj
+3728 0 obj
+<< /D [ 3683 0 R /XYZ 81.077 115.283 null ] >>
+endobj
+3729 0 obj
+<< /D [ 3683 0 R /XYZ 81.077 104.324 null ] >>
+endobj
+3730 0 obj
+<< /D [ 3683 0 R /XYZ 81.077 93.365 null ] >>
+endobj
+3731 0 obj
+<< /D [ 3683 0 R /XYZ 81.077 82.406 null ] >>
+endobj
+3682 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F70 185 0 R /F20 186 0 R /F73 189 0 R /F69 183 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+3734 0 obj
+<< /Filter /FlateDecode /Length 2451 >>
+stream
+xڭZ]o}ϯ0/6pOy
+Zt/ZAqw/fl!dŽCRD+NFt8G3ÙCJd5I&$__o>I!%1%ǧ 7%< NRQ"q;mJqg?ӏPTX _1e{-滬(7E-'^ZeYY5z]̀9<A8!'g"B?zN*u& vDS
+aF=U!ںM4"s`qQ%CGh6؄{626 NJ㣑De)$ g!:ڶP$lAhC.v$$C)OBƑ4.&R.C yUmᱟ̫͛a3sg4UA*$*ih#J'/P68\
+)xwxW_U/_)8fR'܆}$jbh_(T!
+@Hֳ[J鴙t:#rZb}QvL :ո,W/^FY A7V 'HPZ/okl֣v)eηuPV91}kOOrd. -\lf#Ȼ(:0A)'cRĶ)/'B~:|. x{G0I $hc~g="o -ՓcQmC w\ZJ$I$f< T=ybͿ1qطT4~1}tZ<g !H4
++u %/q,@%WRC1뺪3
+J(Wwi
+|-uuh<nW::^4J/xЄ0W
+DZ lu] .˼XL.Ԃ?.,(Q| ӧjZ+L~s*]-6z7kgӍ͋=7bw*upfXڂ LiQ4z;+8!!2%2i%O5IDOx yj5|d^YvWH
+Rw~9ԟe yKeѲtG.(oUv
+"gzP9n:{Lv⳽ٷw!F? VFCe9wd'Sdfv^TvA0{n]mKSndjlukhƈD¥D!VJq ыF/ve88N}gquތ`@ʋDţzlgٱ^o`+::E߬Qq;|z&mٽ(}'S$߂Ds
+)͑=k~cdQy/*$r#tu"v6(p}0x4H z(4jlbLt#WXN[;I.R$y8;\_u'[߸6ʓÓJHQqӮ-#c4 Z8?3A)Cՙ!$v/gvb,V-B˒))k( s}1h{K"LzqĠ+z˥mDF146;5>TF;ڌ,rdLS~턙+U{!
+'65<ɏ'UW6N qOqu/8~A[R9r^}Lv/V_PP<6Hĵ!:Zhs9؎[3hiW,C6&!Q @` ܺ?J*RGƑf+#`_ .o\A)Þ-c;DǸC98@L%mcq}
+K;ROVM!($\޼h|<8[2×x1tLg+ߓ? ay 8)&<QCttM\5'QeFڹ̸^
+6
+r
+Q 3H >CDtJ O8Q0Fվ6ym:͵_q 0Aj7jgW#S3I
+Px*m[gmoF
+endstream
+endobj
+3733 0 obj
+<< /Type /Page /Contents 3734 0 R /Resources 3732 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3784 0 R >>
+endobj
+3735 0 obj
+<< /D [ 3733 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+3736 0 obj
+<< /D [ 3733 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+3737 0 obj
+<< /D [ 3733 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+3738 0 obj
+<< /D [ 3733 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+3739 0 obj
+<< /D [ 3733 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+3740 0 obj
+<< /D [ 3733 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+3741 0 obj
+<< /D [ 3733 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+3742 0 obj
+<< /D [ 3733 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+3743 0 obj
+<< /D [ 3733 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+3744 0 obj
+<< /D [ 3733 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+3745 0 obj
+<< /D [ 3733 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+3746 0 obj
+<< /D [ 3733 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+3747 0 obj
+<< /D [ 3733 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+3748 0 obj
+<< /D [ 3733 0 R /XYZ 81.077 620.523 null ] >>
+endobj
+3749 0 obj
+<< /D [ 3733 0 R /XYZ 81.077 592.762 null ] >>
+endobj
+3750 0 obj
+<< /D [ 3733 0 R /XYZ 81.077 581.804 null ] >>
+endobj
+3751 0 obj
+<< /D [ 3733 0 R /XYZ 81.077 570.845 null ] >>
+endobj
+3752 0 obj
+<< /D [ 3733 0 R /XYZ 81.077 559.886 null ] >>
+endobj
+3753 0 obj
+<< /D [ 3733 0 R /XYZ 81.077 548.927 null ] >>
+endobj
+3754 0 obj
+<< /D [ 3733 0 R /XYZ 81.077 537.968 null ] >>
+endobj
+3755 0 obj
+<< /D [ 3733 0 R /XYZ 81.077 527.009 null ] >>
+endobj
+3756 0 obj
+<< /D [ 3733 0 R /XYZ 81.077 516.05 null ] >>
+endobj
+3757 0 obj
+<< /D [ 3733 0 R /XYZ 81.077 505.091 null ] >>
+endobj
+3758 0 obj
+<< /D [ 3733 0 R /XYZ 81.077 436.618 null ] >>
+endobj
+3759 0 obj
+<< /D [ 3733 0 R /XYZ 81.077 425.659 null ] >>
+endobj
+3760 0 obj
+<< /D [ 3733 0 R /XYZ 81.077 414.701 null ] >>
+endobj
+3761 0 obj
+<< /D [ 3733 0 R /XYZ 81.077 403.742 null ] >>
+endobj
+3762 0 obj
+<< /D [ 3733 0 R /XYZ 81.077 392.783 null ] >>
+endobj
+3763 0 obj
+<< /D [ 3733 0 R /XYZ 81.077 381.824 null ] >>
+endobj
+3764 0 obj
+<< /D [ 3733 0 R /XYZ 81.077 325.306 null ] >>
+endobj
+3765 0 obj
+<< /D [ 3733 0 R /XYZ 81.077 314.347 null ] >>
+endobj
+3766 0 obj
+<< /D [ 3733 0 R /XYZ 81.077 303.388 null ] >>
+endobj
+3767 0 obj
+<< /D [ 3733 0 R /XYZ 81.077 292.43 null ] >>
+endobj
+3768 0 obj
+<< /D [ 3733 0 R /XYZ 81.077 281.471 null ] >>
+endobj
+3769 0 obj
+<< /D [ 3733 0 R /XYZ 81.077 270.512 null ] >>
+endobj
+3770 0 obj
+<< /D [ 3733 0 R /XYZ 81.077 259.553 null ] >>
+endobj
+3771 0 obj
+<< /D [ 3733 0 R /XYZ 81.077 248.594 null ] >>
+endobj
+3772 0 obj
+<< /D [ 3733 0 R /XYZ 81.077 237.635 null ] >>
+endobj
+3773 0 obj
+<< /D [ 3733 0 R /XYZ 81.077 226.676 null ] >>
+endobj
+3774 0 obj
+<< /D [ 3733 0 R /XYZ 81.077 215.717 null ] >>
+endobj
+3775 0 obj
+<< /D [ 3733 0 R /XYZ 81.077 204.758 null ] >>
+endobj
+3776 0 obj
+<< /D [ 3733 0 R /XYZ 81.077 193.799 null ] >>
+endobj
+3777 0 obj
+<< /D [ 3733 0 R /XYZ 81.077 182.841 null ] >>
+endobj
+3778 0 obj
+<< /D [ 3733 0 R /XYZ 81.077 171.882 null ] >>
+endobj
+3779 0 obj
+<< /D [ 3733 0 R /XYZ 81.077 160.923 null ] >>
+endobj
+3780 0 obj
+<< /D [ 3733 0 R /XYZ 81.077 128.315 null ] >>
+endobj
+3781 0 obj
+<< /D [ 3733 0 R /XYZ 81.077 117.357 null ] >>
+endobj
+3782 0 obj
+<< /D [ 3733 0 R /XYZ 81.077 89.596 null ] >>
+endobj
+3783 0 obj
+<< /D [ 3733 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+3732 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F70 185 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+3787 0 obj
+<< /Filter /FlateDecode /Length 1949 >>
+stream
+xڵZMϯ0HsMA9̩ ۲DoOQ)u'㱊4mgt:^ghi :c3afF3B5=g(?竺zz<oaw% +5cכ?&9M:g&d~.6/*Or|eZyiW@r=lCynw׬0o†$/.L)¨]nZ?=0(c`nҢZKdbc<!('1$Ln5 EZp g,̭nDvs(VݱD$,ID8 ю/l
+)tF 2N.|H(@y
+G;D;:˺.2kZ7zBӁKШ<Ёn8cj]E}_.eS4mB'%ZXK^a5/^|KqM^XKh|1E{&5?7 H/۳+m95UrH2z G/ܒT(BsD_N-L?fY_Kj"&QQ*Jpdlvj}fˌ8.!.[pYd_cuC 48!e7k#(3DLaiq)ˇtuR6!Fi s"D)J+ׇqHU^1#4ZD1
+:t_?J+k;)y*]Z]ަyo|涩T-FtlyjPj}}ZJ0F]RT馄[*cÊv`^Nd<HrJP.oڏIGQ F>TEgNGV|ٝtQ( o?>2(3e`?hka vD_*NḷjZ ]܅/'vݐXG&))
+ɐȋƊQ?漣8XHB\hfu}C!k>,lMХUbq" {+KU·WGc^v0B X~Aag+NEY\} 5yߗLq}>ua*\㽫 I]\a5@6m˥eҞ=>Tpo#"зm=|&S/,n
+endstream
+endobj
+3786 0 obj
+<< /Type /Page /Contents 3787 0 R /Resources 3785 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3784 0 R >>
+endobj
+3788 0 obj
+<< /D [ 3786 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+3789 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 742.929 null ] >>
+endobj
+3790 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 731.97 null ] >>
+endobj
+3791 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 721.011 null ] >>
+endobj
+3792 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 710.052 null ] >>
+endobj
+3793 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 699.093 null ] >>
+endobj
+3794 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 688.134 null ] >>
+endobj
+3795 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 677.175 null ] >>
+endobj
+3796 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 666.217 null ] >>
+endobj
+3797 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 655.258 null ] >>
+endobj
+3798 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 644.299 null ] >>
+endobj
+3799 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 633.34 null ] >>
+endobj
+3800 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 622.381 null ] >>
+endobj
+3801 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 611.422 null ] >>
+endobj
+3802 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 600.463 null ] >>
+endobj
+3803 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 589.504 null ] >>
+endobj
+3804 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 578.545 null ] >>
+endobj
+3805 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 567.586 null ] >>
+endobj
+3806 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 556.627 null ] >>
+endobj
+3807 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 545.669 null ] >>
+endobj
+3808 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 534.71 null ] >>
+endobj
+3809 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 523.751 null ] >>
+endobj
+3810 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 512.792 null ] >>
+endobj
+3811 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 501.833 null ] >>
+endobj
+3812 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 490.874 null ] >>
+endobj
+3813 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 479.915 null ] >>
+endobj
+3814 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 468.956 null ] >>
+endobj
+3815 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 457.997 null ] >>
+endobj
+3816 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 447.038 null ] >>
+endobj
+3817 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 436.08 null ] >>
+endobj
+3818 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 425.121 null ] >>
+endobj
+3819 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 414.162 null ] >>
+endobj
+3820 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 403.203 null ] >>
+endobj
+3821 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 392.244 null ] >>
+endobj
+3822 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 381.285 null ] >>
+endobj
+3823 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 370.326 null ] >>
+endobj
+3824 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 305.569 null ] >>
+endobj
+3825 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 294.61 null ] >>
+endobj
+3826 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 265.718 null ] >>
+endobj
+3827 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 254.759 null ] >>
+endobj
+3828 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 243.801 null ] >>
+endobj
+3829 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 232.842 null ] >>
+endobj
+3830 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 221.883 null ] >>
+endobj
+3831 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 210.924 null ] >>
+endobj
+3832 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 199.965 null ] >>
+endobj
+3833 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 189.006 null ] >>
+endobj
+3834 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 178.047 null ] >>
+endobj
+3835 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 167.088 null ] >>
+endobj
+3836 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 156.129 null ] >>
+endobj
+3837 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 145.17 null ] >>
+endobj
+3838 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 134.212 null ] >>
+endobj
+3839 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 123.253 null ] >>
+endobj
+3840 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 112.294 null ] >>
+endobj
+3841 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 101.335 null ] >>
+endobj
+3842 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 90.376 null ] >>
+endobj
+3843 0 obj
+<< /D [ 3786 0 R /XYZ 81.077 79.417 null ] >>
+endobj
+3785 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F20 186 0 R /F73 189 0 R /F69 183 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+3846 0 obj
+<< /Filter /FlateDecode /Length 2522 >>
+stream
+xڭZ[o}_a`L8I4-vg;EBPd9VG\IN f~{?^D㘙C]^(VOwy` RI]ܬd! A8!__ont!Q$LaDb tkk0 n̵SCB/M>KZ6`n™c1\ 1#̄JD$wLD9Z1mHpՄ
+qq(~2ǡ()F!ֻ>[n:6<[0a $pFx~z#$b qyhu$]u "9b<u\H9g`Mhљ%3g$;oihVg6Y_W\|?~̺23}kٲa ą26{{X>ӷI.fWך5]͋r>t9"Yb* %c4zP/zfQ7að]<2G!7E?Mb]fϢuU4i˗æ4LĢZ}5O(Et Zm3؃Ic<ɞr;? uN_`eה1tE9ZR JVup()R1'q:34Hpev>s"ǧg:XO>ǘŌ4^F[mCͅ$Q28$\ٕyDW]h $ҡa3L/Lӻ$FLS>Ա\`mcζ98,
+ig p/k%0d(ySP><[E,$y.CMm,9-X@Hj9;Eʞ?NRv +p-hv*P@UW$uijWYIԁ%H3g9`5hl
+Fy̻ Jb ߏk5}_6VZ
+M8K ,pHpPHxTV6ӆVRj5رrȀ. !oK'z;aIlf%*FxC- |z2sڶqnvΫef͊<TumLSZ2clL n`žs/ [u*ڮ32 M93n6E$ԕR
+z&"dnrx[_!8޴e*RȺKҰ> &c.K
+Ǧ̛4%=pũ$&m7ỳIJ+"~O1Ep^zfvKRY ]l B36c崿2@S \*Ԟbʈ?¢7eTc8ZKh eX7xEw)#,E1ph8ب@Mm6l!hUΥmP`6`kdz0Hu;
+ijc9lndru9`2/L]@UզT ij~rG!͖ hA
+uV2%uS]3muQ.4^5^{yh U|*v:G۝nmV5uՔ?5$X9wO‚9881d.&4N2ϭCp0R`oU "k_U3oeCj脾0x%`8F כw}
+endstream
+endobj
+3845 0 obj
+<< /Type /Page /Contents 3846 0 R /Resources 3844 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3784 0 R >>
+endobj
+3847 0 obj
+<< /D [ 3845 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+3848 0 obj
+<< /D [ 3845 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+3849 0 obj
+<< /D [ 3845 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+3850 0 obj
+<< /D [ 3845 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+3851 0 obj
+<< /D [ 3845 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+3852 0 obj
+<< /D [ 3845 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+3853 0 obj
+<< /D [ 3845 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+3854 0 obj
+<< /D [ 3845 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+3855 0 obj
+<< /D [ 3845 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+3856 0 obj
+<< /D [ 3845 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+3857 0 obj
+<< /D [ 3845 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+3858 0 obj
+<< /D [ 3845 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+3859 0 obj
+<< /D [ 3845 0 R /XYZ 81.077 630.351 null ] >>
+endobj
+3860 0 obj
+<< /D [ 3845 0 R /XYZ 81.077 619.392 null ] >>
+endobj
+3861 0 obj
+<< /D [ 3845 0 R /XYZ 81.077 608.433 null ] >>
+endobj
+3862 0 obj
+<< /D [ 3845 0 R /XYZ 81.077 597.474 null ] >>
+endobj
+3863 0 obj
+<< /D [ 3845 0 R /XYZ 81.077 586.515 null ] >>
+endobj
+3864 0 obj
+<< /D [ 3845 0 R /XYZ 81.077 575.556 null ] >>
+endobj
+3865 0 obj
+<< /D [ 3845 0 R /XYZ 81.077 490.957 null ] >>
+endobj
+3866 0 obj
+<< /D [ 3845 0 R /XYZ 81.077 426.2 null ] >>
+endobj
+3867 0 obj
+<< /D [ 3845 0 R /XYZ 81.077 415.241 null ] >>
+endobj
+3868 0 obj
+<< /D [ 3845 0 R /XYZ 81.077 404.282 null ] >>
+endobj
+3869 0 obj
+<< /D [ 3845 0 R /XYZ 81.077 393.323 null ] >>
+endobj
+3870 0 obj
+<< /D [ 3845 0 R /XYZ 81.077 382.364 null ] >>
+endobj
+3871 0 obj
+<< /D [ 3845 0 R /XYZ 81.077 371.405 null ] >>
+endobj
+3872 0 obj
+<< /D [ 3845 0 R /XYZ 81.077 360.446 null ] >>
+endobj
+3873 0 obj
+<< /D [ 3845 0 R /XYZ 81.077 319.599 null ] >>
+endobj
+3874 0 obj
+<< /D [ 3845 0 R /XYZ 81.077 308.641 null ] >>
+endobj
+3875 0 obj
+<< /D [ 3845 0 R /XYZ 81.077 297.682 null ] >>
+endobj
+3876 0 obj
+<< /D [ 3845 0 R /XYZ 81.077 286.723 null ] >>
+endobj
+3877 0 obj
+<< /D [ 3845 0 R /XYZ 81.077 275.764 null ] >>
+endobj
+3878 0 obj
+<< /D [ 3845 0 R /XYZ 81.077 264.805 null ] >>
+endobj
+3879 0 obj
+<< /D [ 3845 0 R /XYZ 81.077 253.846 null ] >>
+endobj
+3880 0 obj
+<< /D [ 3845 0 R /XYZ 81.077 242.887 null ] >>
+endobj
+3881 0 obj
+<< /D [ 3845 0 R /XYZ 81.077 190.085 null ] >>
+endobj
+3882 0 obj
+<< /D [ 3845 0 R /XYZ 81.077 179.126 null ] >>
+endobj
+3883 0 obj
+<< /D [ 3845 0 R /XYZ 81.077 126.324 null ] >>
+endobj
+3884 0 obj
+<< /D [ 3845 0 R /XYZ 81.077 115.365 null ] >>
+endobj
+3885 0 obj
+<< /D [ 3845 0 R /XYZ 81.077 104.406 null ] >>
+endobj
+3886 0 obj
+<< /D [ 3845 0 R /XYZ 81.077 93.447 null ] >>
+endobj
+3887 0 obj
+<< /D [ 3845 0 R /XYZ 81.077 82.489 null ] >>
+endobj
+3844 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F70 185 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+3890 0 obj
+<< /Filter /FlateDecode /Length 3004 >>
+stream
+xڵZ[o~?]8=E 4/ Ї0I%$$]ΐԅ#Cb37CūU˧% >|($K)gO+J%T$tu_+✊m/2[$Sb3+ߔk6Fۄ%Oo(>g϶~O$~:tܧ0Ǽu񺫏}ȷ?e>RTsw۾U]AQ@TAyN}*&ŔDerLeாa*z g,zF}#5gfiʉT̟5zf3&(r[8mnnY 
+hjiԑ[K=Wo8#aHYTն)#L>v˚aԧ^3TJ³ya3vB35j&e9N_oPq459;;Qn̝D}T69I<_U$){<2p2KI8%4hpf㘰Y%Ow/
+VߺXuϲveER~I$JV6,loW9UrvN%TXJ3E9~[KR;F_9Uo]QWyb
+\pbz_,*
+if7Q)@LMx6Bz)P_,B[%s0 >ޝ02:Mg[7LO"1dGsl;*t_otˢҭ}Dvj*3%;3 ~!Sr~Vqmuَy1/l?8vv׏s<ץ{a?g;r/E/ytN2dƛ`}^yX>`c\H 0knv&,‘cOoSjv"Of c9/bq%/nNǪ^F1XOPTO((3W`?G ?Q6uC!
+gsF睆\n*[:%9R:UFXR#Kڍ+ `a2!.R$l(0~1Q߶JlMmwC`C'CD߰ 'K`LsJn4&XbIAMQ]y0iPs뻉:Wcr'iu0>KnM,3ƋbYa4K Ž6ʛAJ ~ ND
+;Q2NM.\0  ꯍHd1=K)6u-T-
+/Ao/wIBt4QdhwD[uvU٧PxCUϫy-SĹMxnAOgXX]M2;2@ o#[ m:|ܣ8&9-W@19ScADb#-BYlǞa]HP&*V;L|;_Lm)O[nWߢ8r{Ӣv=}=̳W2evWap*bc&=x n4ʿKzhgsz=ۋyl]uW *lP.ژz@1nXQ^Ww#2
+{~-e 9O#;ncխŽXvIA{a2 x#Ľ'%RCdO%"Im+iCC:Gϯj0W7k??nZ@9;ak}԰t!1ɆmkC-x2)': qhk9EL8guO#|nDYT@P.^e "o>4.}DjeRp u|j$5s`+_.hSMCM{8>ifəv5K..VtƮu
+;JƋdAPZq/a|Sj f,ү[}E[Cc{d{LYUe-%Jz],5R|Do꥝&7V-ra[uo
+endstream
+endobj
+3889 0 obj
+<< /Type /Page /Contents 3890 0 R /Resources 3888 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3784 0 R >>
+endobj
+3891 0 obj
+<< /D [ 3889 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+3892 0 obj
+<< /D [ 3889 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+3893 0 obj
+<< /D [ 3889 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+3894 0 obj
+<< /D [ 3889 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+3895 0 obj
+<< /D [ 3889 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+3896 0 obj
+<< /D [ 3889 0 R /XYZ 81.077 641.31 null ] >>
+endobj
+3897 0 obj
+<< /D [ 3889 0 R /XYZ 81.077 588.508 null ] >>
+endobj
+3898 0 obj
+<< /D [ 3889 0 R /XYZ 81.077 577.549 null ] >>
+endobj
+3899 0 obj
+<< /D [ 3889 0 R /XYZ 81.077 566.59 null ] >>
+endobj
+3900 0 obj
+<< /D [ 3889 0 R /XYZ 81.077 555.631 null ] >>
+endobj
+3901 0 obj
+<< /D [ 3889 0 R /XYZ 81.077 539.691 null ] >>
+endobj
+3902 0 obj
+<< /D [ 3889 0 R /XYZ 81.077 528.732 null ] >>
+endobj
+3903 0 obj
+<< /D [ 3889 0 R /XYZ 81.077 517.773 null ] >>
+endobj
+3904 0 obj
+<< /D [ 3889 0 R /XYZ 81.077 486.889 null ] >>
+endobj
+3905 0 obj
+<< /D [ 3889 0 R /XYZ 81.077 457.997 null ] >>
+endobj
+3906 0 obj
+<< /D [ 3889 0 R /XYZ 81.077 447.038 null ] >>
+endobj
+3907 0 obj
+<< /D [ 3889 0 R /XYZ 81.077 436.08 null ] >>
+endobj
+3908 0 obj
+<< /D [ 3889 0 R /XYZ 81.077 425.121 null ] >>
+endobj
+3909 0 obj
+<< /D [ 3889 0 R /XYZ 81.077 414.162 null ] >>
+endobj
+3910 0 obj
+<< /D [ 3889 0 R /XYZ 81.077 385.27 null ] >>
+endobj
+3911 0 obj
+<< /D [ 3889 0 R /XYZ 81.077 374.311 null ] >>
+endobj
+3912 0 obj
+<< /D [ 3889 0 R /XYZ 81.077 363.352 null ] >>
+endobj
+3913 0 obj
+<< /D [ 3889 0 R /XYZ 81.077 310.55 null ] >>
+endobj
+3914 0 obj
+<< /D [ 3889 0 R /XYZ 81.077 299.591 null ] >>
+endobj
+3915 0 obj
+<< /D [ 3889 0 R /XYZ 81.077 234.834 null ] >>
+endobj
+3916 0 obj
+<< /D [ 3889 0 R /XYZ 81.077 223.875 null ] >>
+endobj
+3917 0 obj
+<< /D [ 3889 0 R /XYZ 81.077 194.984 null ] >>
+endobj
+3918 0 obj
+<< /D [ 3889 0 R /XYZ 81.077 184.025 null ] >>
+endobj
+3919 0 obj
+<< /D [ 3889 0 R /XYZ 81.077 155.133 null ] >>
+endobj
+3920 0 obj
+<< /D [ 3889 0 R /XYZ 81.077 144.174 null ] >>
+endobj
+3921 0 obj
+<< /D [ 3889 0 R /XYZ 81.077 133.215 null ] >>
+endobj
+3922 0 obj
+<< /D [ 3889 0 R /XYZ 81.077 122.256 null ] >>
+endobj
+3923 0 obj
+<< /D [ 3889 0 R /XYZ 81.077 111.297 null ] >>
+endobj
+3924 0 obj
+<< /D [ 3889 0 R /XYZ 81.077 100.339 null ] >>
+endobj
+3888 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F75 317 0 R /F70 185 0 R /F76 318 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+3927 0 obj
+<< /Filter /FlateDecode /Length 2439 >>
+stream
+xڭZKo80ŇHCN0%$1oߢHѤ(f/1E#JUůJIwddEߟ?.$dqd#Bp7ůKJXny(JIBoNfutS߾uuϙ[0?
+)<MS#MNSC^TBs4CQwvJVLثa}/VF"l1M.!LV ՟^ǷUwo DHqoG~"̇ Q.I\+"_VWÊ1˲h.˶Xr)38tkm֫+e={ثΌvE6zD6ۑz%d'kSP@
+j
+^`$p"GVZLR
+}q"rqmשҸjhP.%@16z^p+(vSMo&y&ǻ;ƌ=Nm捕@2 XqD ȇjصl~JeQu.;_'Q :@mG L &Y9k=ˡ5>YivUo/m];+d-IɁЁLaܨMUژ}Qv*2"җ*G-;
+gv1i!'C`mpY_uը\<vx\g-HSQ 3\8zyY&\_Wj sLP D:)e>zhp nޔ/ ?UE
+udS)SG2{BNJt$ x r8 Гq:BhAg~D6D8q|WjAa&`?,(I]b,ʅt2EI*O,@OF:V[;2p x5.%s' :=V&?+c?@-N.&@Oc_ qR5,%PM^\'@?٣Ɯ5l:#at<>8~g"!h;ը
+誢 .Evm};W Da+PY"AS9:%dItLQˀe;b{J<QS
+ O!rxa9xc:X7:<ۄ4u%ٖf/+IcNtדA0n7l0Hl>#$9!zi1þN=]Q ?}i'Ѥ\=TumF/*.8jnӄ"! ިvx|
+D)cw"m)'B"q
+endstream
+endobj
+3926 0 obj
+<< /Type /Page /Contents 3927 0 R /Resources 3925 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3784 0 R >>
+endobj
+3928 0 obj
+<< /D [ 3926 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+3929 0 obj
+<< /D [ 3926 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+3930 0 obj
+<< /D [ 3926 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+3931 0 obj
+<< /D [ 3926 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+3932 0 obj
+<< /D [ 3926 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+3933 0 obj
+<< /D [ 3926 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+3934 0 obj
+<< /D [ 3926 0 R /XYZ 81.077 682.157 null ] >>
+endobj
+3935 0 obj
+<< /D [ 3926 0 R /XYZ 81.077 629.355 null ] >>
+endobj
+3936 0 obj
+<< /D [ 3926 0 R /XYZ 81.077 618.396 null ] >>
+endobj
+3937 0 obj
+<< /D [ 3926 0 R /XYZ 81.077 602.456 null ] >>
+endobj
+3938 0 obj
+<< /D [ 3926 0 R /XYZ 81.077 591.497 null ] >>
+endobj
+3939 0 obj
+<< /D [ 3926 0 R /XYZ 81.077 580.538 null ] >>
+endobj
+3940 0 obj
+<< /D [ 3926 0 R /XYZ 81.077 569.579 null ] >>
+endobj
+3941 0 obj
+<< /D [ 3926 0 R /XYZ 81.077 558.62 null ] >>
+endobj
+3942 0 obj
+<< /D [ 3926 0 R /XYZ 81.077 547.661 null ] >>
+endobj
+3943 0 obj
+<< /D [ 3926 0 R /XYZ 81.077 536.702 null ] >>
+endobj
+3944 0 obj
+<< /D [ 3926 0 R /XYZ 81.077 525.743 null ] >>
+endobj
+3945 0 obj
+<< /D [ 3926 0 R /XYZ 81.077 514.784 null ] >>
+endobj
+3946 0 obj
+<< /D [ 3926 0 R /XYZ 81.077 503.825 null ] >>
+endobj
+3947 0 obj
+<< /D [ 3926 0 R /XYZ 81.077 492.867 null ] >>
+endobj
+3948 0 obj
+<< /D [ 3926 0 R /XYZ 81.077 481.908 null ] >>
+endobj
+3949 0 obj
+<< /D [ 3926 0 R /XYZ 81.077 470.949 null ] >>
+endobj
+3950 0 obj
+<< /D [ 3926 0 R /XYZ 81.077 459.99 null ] >>
+endobj
+3951 0 obj
+<< /D [ 3926 0 R /XYZ 81.077 449.031 null ] >>
+endobj
+3952 0 obj
+<< /D [ 3926 0 R /XYZ 81.077 438.072 null ] >>
+endobj
+3953 0 obj
+<< /D [ 3926 0 R /XYZ 81.077 371.322 null ] >>
+endobj
+3954 0 obj
+<< /D [ 3926 0 R /XYZ 81.077 360.363 null ] >>
+endobj
+3955 0 obj
+<< /D [ 3926 0 R /XYZ 81.077 349.405 null ] >>
+endobj
+3956 0 obj
+<< /D [ 3926 0 R /XYZ 81.077 338.446 null ] >>
+endobj
+3957 0 obj
+<< /D [ 3926 0 R /XYZ 81.077 297.599 null ] >>
+endobj
+3958 0 obj
+<< /D [ 3926 0 R /XYZ 81.077 286.64 null ] >>
+endobj
+3959 0 obj
+<< /D [ 3926 0 R /XYZ 81.077 221.883 null ] >>
+endobj
+3960 0 obj
+<< /D [ 3926 0 R /XYZ 81.077 210.924 null ] >>
+endobj
+3961 0 obj
+<< /D [ 3926 0 R /XYZ 81.077 199.965 null ] >>
+endobj
+3962 0 obj
+<< /D [ 3926 0 R /XYZ 81.077 189.006 null ] >>
+endobj
+3963 0 obj
+<< /D [ 3926 0 R /XYZ 81.077 178.047 null ] >>
+endobj
+3964 0 obj
+<< /D [ 3926 0 R /XYZ 81.077 167.088 null ] >>
+endobj
+3965 0 obj
+<< /D [ 3926 0 R /XYZ 81.077 156.129 null ] >>
+endobj
+3966 0 obj
+<< /D [ 3926 0 R /XYZ 81.077 145.17 null ] >>
+endobj
+3967 0 obj
+<< /D [ 3926 0 R /XYZ 81.077 134.212 null ] >>
+endobj
+3968 0 obj
+<< /D [ 3926 0 R /XYZ 81.077 123.253 null ] >>
+endobj
+3969 0 obj
+<< /D [ 3926 0 R /XYZ 81.077 112.294 null ] >>
+endobj
+3970 0 obj
+<< /D [ 3926 0 R /XYZ 81.077 101.335 null ] >>
+endobj
+3971 0 obj
+<< /D [ 3926 0 R /XYZ 81.077 90.376 null ] >>
+endobj
+3972 0 obj
+<< /D [ 3926 0 R /XYZ 81.077 79.417 null ] >>
+endobj
+3925 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F70 185 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+3975 0 obj
+<< /Filter /FlateDecode /Length 2060 >>
+stream
+xZOoS"s(Sr",w(:KC/D 3~rIb |vb0hY64#TvϹ-u0[mgXLg&Lѿ.WLnE^y[jòηŲ[,׾wTa|wSE&|ͯ+kQ0ʃ`yQkR㸨 ]mEX¤/1}*w˧-6uW7w^D?t!788c ]ףr?-7eKx.hYF8WcuHxۢpm}mУ',mm4 3i=+F!mmΣ)Nm3evfɵ%jK$uuT,MSU͂g~tM|^֋k6_eSq[7faq rۏ/Z?e=My%
+ryְkD$h(Et lǮ藰⻍6flSK7]حR«Cr!'#2霫W`@~ nkX?{Q9HlCUo⅕>CKxȺ9Ɠ$3M=ZSrPÁ$<SuN^7pFQ!)mLHJq6e/k67Q`3J0'DQs1W,m-9PJ# 0\>?O㶢|
+2$2hœ͂zB | gg-'kumiU1D{h^ؚk5FMO+}|pAV.LG
+cpˉ'DH) 4}2s 1M[Z 'cpgdQg H[lCю 쿩wc<44Q&p,UӴԮAB$tz{k\/:i>;\~Q):NO1zp:}bF$:q:`ꬸP{6   1kc0^
+TC5 G:F%a!;L!0,P(IY!`\"_>dʆpKT\:s7UZӀ+1Q n΂{d&Ay2#!G2F`hFkhjblr Bjn1"Ώ'
+y& )pG}Cj.k!4;úp9O~XKNh(IgW,#T$C2ӱ4LaШ6;©d{4,_J}?b钋99ēPKwv3Wf:<+ۡ\$~GWFq89Y:
+-e-#^=qxWOTb
+l*0H#nxDc<oPjeP]̋U`
+ZvjO֔۽{I?>mW* o8p.g8 M 5Šwc_Ky,?Ňf?_|_~j? >>k4GQMҦ8
+A1=({tYqCT
+C
+]&&AyYeDNFD&A'WFbx S]rsĨ&M:v-AGpw]1!$ˏuW9:%E-+/MbpPv_+?=$z*;J\6ϳ0ܦ@i8!i
+endstream
+endobj
+3974 0 obj
+<< /Type /Page /Contents 3975 0 R /Resources 3973 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3784 0 R >>
+endobj
+3976 0 obj
+<< /D [ 3974 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+3977 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+3978 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+3979 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+3980 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+3981 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+3982 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+3983 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+3984 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+3985 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 663.228 null ] >>
+endobj
+3986 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 622.381 null ] >>
+endobj
+3987 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 611.422 null ] >>
+endobj
+3988 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 600.463 null ] >>
+endobj
+3989 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 589.504 null ] >>
+endobj
+3990 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 578.545 null ] >>
+endobj
+3991 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 567.586 null ] >>
+endobj
+3992 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 556.627 null ] >>
+endobj
+3993 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 545.669 null ] >>
+endobj
+3994 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 534.71 null ] >>
+endobj
+3995 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 523.751 null ] >>
+endobj
+3996 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 512.792 null ] >>
+endobj
+3997 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 501.833 null ] >>
+endobj
+3998 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 490.874 null ] >>
+endobj
+3999 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 479.915 null ] >>
+endobj
+4000 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 468.956 null ] >>
+endobj
+4001 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 457.997 null ] >>
+endobj
+4002 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 447.038 null ] >>
+endobj
+4003 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 436.08 null ] >>
+endobj
+4004 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 425.121 null ] >>
+endobj
+4005 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 414.162 null ] >>
+endobj
+4006 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 403.203 null ] >>
+endobj
+4007 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 392.244 null ] >>
+endobj
+4008 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 381.285 null ] >>
+endobj
+4009 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 370.326 null ] >>
+endobj
+4010 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 359.367 null ] >>
+endobj
+4011 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 348.408 null ] >>
+endobj
+4012 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 337.449 null ] >>
+endobj
+4013 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 326.49 null ] >>
+endobj
+4014 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 315.532 null ] >>
+endobj
+4015 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 304.573 null ] >>
+endobj
+4016 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 293.614 null ] >>
+endobj
+4017 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 282.655 null ] >>
+endobj
+4018 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 271.696 null ] >>
+endobj
+4019 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 260.737 null ] >>
+endobj
+4020 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 249.778 null ] >>
+endobj
+4021 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 238.819 null ] >>
+endobj
+4022 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 227.86 null ] >>
+endobj
+4023 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 136.204 null ] >>
+endobj
+4024 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 125.245 null ] >>
+endobj
+4025 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 114.286 null ] >>
+endobj
+4026 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 103.327 null ] >>
+endobj
+4027 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 92.368 null ] >>
+endobj
+4028 0 obj
+<< /D [ 3974 0 R /XYZ 81.077 81.41 null ] >>
+endobj
+3973 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F76 318 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+4031 0 obj
+<< /Filter /FlateDecode /Length 1744 >>
+stream
+xYnF+t
+$nd'9$AILX").jv˨q2X~Uj!Ft>j.~]\1Y&hvw&:b#ffd4#Tl3c,fg]h7i-lf~"F\*2!eNNbu\_'uxH}]&rC-#%ro#v6Y60bԛm4M1Yduo2ߜkpIQ8sBy洁
+k%Jo>B}`8n{w\+!+o9
+ZJhT_۞6B/sYzz$SDPI:0$BEQ1_kAİ4Cm3e̳:IJԜH^qDh#xV'fe56FA$Ƽ6s2NuC| \iU:k͕Y;q\CtCf}]oa[:/{lx?>2s~jj^?_pwri*ڡ&e1J"4~m#%!o|Q MC bGMgUOb)*N29b).ʲZEZg/JOXX:0nb_ErOp9msV({{݊N]AEdmiz{sT&K4I怃z4"t
+tG[*{ܿ*W= ᚖ0Ί$%TqGpuܨ 2G,g}bt*|r8[Ec]f\nodU䒍R:u :[eUOӧ(
+*&t.D :2Tȵ \vwGw.Uu4<kSd [#t Wo.[614
+G!D{ˋE5}Zx!D~c<z.],D{`%їS(8-dMǎn;n>6 ֋y:Yjc>ѓCDYAl(#b+
+#aDdHOLE|Y2L"CM"CHA 1[7KQc6Ѳ2PӰHnÛ0q\CsH,##ff<F#;Cރ*a>/ᵗ
+endstream
+endobj
+4030 0 obj
+<< /Type /Page /Contents 4031 0 R /Resources 4029 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3784 0 R >>
+endobj
+4032 0 obj
+<< /D [ 4030 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+4033 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+4034 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+4035 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+4036 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+4037 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+4038 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+4039 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+4040 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+4041 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+4042 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+4043 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+4044 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+4045 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 637.325 null ] >>
+endobj
+4046 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 626.366 null ] >>
+endobj
+4047 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 615.407 null ] >>
+endobj
+4048 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 604.448 null ] >>
+endobj
+4049 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 593.489 null ] >>
+endobj
+4050 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 582.53 null ] >>
+endobj
+4051 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 571.571 null ] >>
+endobj
+4052 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 560.613 null ] >>
+endobj
+4053 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 549.654 null ] >>
+endobj
+4054 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 538.695 null ] >>
+endobj
+4055 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 527.736 null ] >>
+endobj
+4056 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 516.777 null ] >>
+endobj
+4057 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 505.818 null ] >>
+endobj
+4058 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 464.971 null ] >>
+endobj
+4059 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 454.012 null ] >>
+endobj
+4060 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 443.053 null ] >>
+endobj
+4061 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 432.094 null ] >>
+endobj
+4062 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 421.136 null ] >>
+endobj
+4063 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 410.177 null ] >>
+endobj
+4064 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 399.218 null ] >>
+endobj
+4065 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 388.259 null ] >>
+endobj
+4066 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 359.367 null ] >>
+endobj
+4067 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 348.408 null ] >>
+endobj
+4068 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 337.449 null ] >>
+endobj
+4069 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 326.49 null ] >>
+endobj
+4070 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 315.532 null ] >>
+endobj
+4071 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 304.573 null ] >>
+endobj
+4072 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 293.614 null ] >>
+endobj
+4073 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 282.655 null ] >>
+endobj
+4074 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 271.696 null ] >>
+endobj
+4075 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 260.737 null ] >>
+endobj
+4076 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 249.778 null ] >>
+endobj
+4077 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 220.887 null ] >>
+endobj
+4078 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 209.928 null ] >>
+endobj
+4079 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 198.969 null ] >>
+endobj
+4080 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 188.01 null ] >>
+endobj
+4081 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 177.051 null ] >>
+endobj
+4082 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 166.092 null ] >>
+endobj
+4083 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 155.133 null ] >>
+endobj
+4084 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 144.174 null ] >>
+endobj
+4085 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 133.215 null ] >>
+endobj
+4086 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 122.256 null ] >>
+endobj
+4087 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 111.297 null ] >>
+endobj
+4088 0 obj
+<< /D [ 4030 0 R /XYZ 81.077 100.339 null ] >>
+endobj
+4029 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+4091 0 obj
+<< /Filter /FlateDecode /Length 1907 >>
+stream
+xZ]o}ϯp_noIy
+
+46/ Їӎhr`;et^QKd<p,'t=r_D"gO : hM2lro*dQ\0ֻ[]LrRh-DA4%xhdk%Ѷg;FgBU#eŤ
+־mtF?oj:gL3aa!tU AX pm_֋u{y/˛6eo).4T4^"Eym>r1]Wt删_7ۍcQ7yN0WDH&(P+mW-aIf\G2FeYΉ-Y`pb#2M饬ڗMGq"uh\WmɈEf[Dywnz)[ttvcƑٶ0X:N}>4fAZ/:pCsDp2@tʪY]Udvz Pt 7Ҵ.ugy w$hLLdg;F`!msxf)-IV5e8OAM~xsSv5U",S8h*Ie1qf?)F(:#0^OS9(;Q3X$<Rms=O(%[ HiOɟζ|ӷeJ}t8!aSrw0lvo2q#ۙP슌ь3(}sBW/Gg!$
+yKu 6զaaT (~[ZP”Lhub Rw׍>eW/kP
+w$h;i9:C632*x=G_!cD(bi1X5k'"c%O
+endstream
+endobj
+4090 0 obj
+<< /Type /Page /Contents 4091 0 R /Resources 4089 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3784 0 R >>
+endobj
+4092 0 obj
+<< /D [ 4090 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+4093 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+4094 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+4095 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 715.033 null ] >>
+endobj
+4096 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 704.075 null ] >>
+endobj
+4097 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 693.116 null ] >>
+endobj
+4098 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 682.157 null ] >>
+endobj
+4099 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 671.198 null ] >>
+endobj
+4100 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 660.239 null ] >>
+endobj
+4101 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 649.28 null ] >>
+endobj
+4102 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 638.321 null ] >>
+endobj
+4103 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 627.362 null ] >>
+endobj
+4104 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 616.403 null ] >>
+endobj
+4105 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 605.444 null ] >>
+endobj
+4106 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 594.486 null ] >>
+endobj
+4107 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 583.527 null ] >>
+endobj
+4108 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 572.568 null ] >>
+endobj
+4109 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 561.609 null ] >>
+endobj
+4110 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 550.65 null ] >>
+endobj
+4111 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 539.691 null ] >>
+endobj
+4112 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 528.732 null ] >>
+endobj
+4113 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 475.93 null ] >>
+endobj
+4114 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 464.971 null ] >>
+endobj
+4115 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 454.012 null ] >>
+endobj
+4116 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 443.053 null ] >>
+endobj
+4117 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 432.094 null ] >>
+endobj
+4118 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 421.136 null ] >>
+endobj
+4119 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 410.177 null ] >>
+endobj
+4120 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 399.218 null ] >>
+endobj
+4121 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 388.259 null ] >>
+endobj
+4122 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 377.3 null ] >>
+endobj
+4123 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 366.341 null ] >>
+endobj
+4124 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 355.382 null ] >>
+endobj
+4125 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 344.423 null ] >>
+endobj
+4126 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 333.464 null ] >>
+endobj
+4127 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 322.505 null ] >>
+endobj
+4128 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 311.547 null ] >>
+endobj
+4129 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 300.588 null ] >>
+endobj
+4130 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 289.629 null ] >>
+endobj
+4131 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 278.67 null ] >>
+endobj
+4132 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 267.711 null ] >>
+endobj
+4133 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 256.752 null ] >>
+endobj
+4134 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 245.793 null ] >>
+endobj
+4135 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 234.834 null ] >>
+endobj
+4136 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 223.875 null ] >>
+endobj
+4137 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 212.916 null ] >>
+endobj
+4138 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 201.957 null ] >>
+endobj
+4139 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 190.999 null ] >>
+endobj
+4140 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 180.04 null ] >>
+endobj
+4141 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 149.155 null ] >>
+endobj
+4142 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 138.197 null ] >>
+endobj
+4143 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 127.238 null ] >>
+endobj
+4144 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 116.279 null ] >>
+endobj
+4145 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 105.32 null ] >>
+endobj
+4146 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 94.361 null ] >>
+endobj
+4147 0 obj
+<< /D [ 4090 0 R /XYZ 81.077 83.402 null ] >>
+endobj
+4089 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+4150 0 obj
+<< /Filter /FlateDecode /Length 2081 >>
+stream
+xYKoWDF~?bv.raa L@%C
+I俧lF5l.nA?_I{#8_mL hfF3B5[Z
+z^%Nka` S:-يFy.m  ym>o?˦Fk$aRDey)jPݻVX7UuOyDZ L7}^e0s/!l|-aVF hlSE2lNp(c[p"i}/ڠM}wE>UNAͤ(tPq4DHua(Iп;Tš~oh#`3g <9k
+6m+d5'RD sW۬fпn7Z")h%#D׸EK"k\~IfSUwhU#\*Ē,Q.29h_ibuhIW[nsHg쀴C9x#3;&hlavm(NT(# ո3%kA,k8xߦ|բ'VF~5& Vh>HFj.vu;YˆUj.vƈr1Akt~ŚHF=x󞹅@p3qDj฿/7Beٍ! oز-57jm&} l|@-cW'/8ы-^A~ y?h["7SVHAe
+Ev#s^x8]zQ$ѩRpKOcQ%V92ޅCz7A-4:2(IП/0%~#ð܆/o]Peǚ +|l<}UFPx5# J}ў;G(xߌnތ/0nS0*.!I-_+·Uܩ;@p>9$@X8:]ff|{ha E0.|};iN-{8nzO]nc/$=TuTrYhP0f
+6\e8h}\~-=VMg;r;Cly^]H h
+;(<QC܅L?x?]I6lqOp#4>',Gh^<lf
+Ȥ̹t7QGyx n>@f_|>ui6徨=Et#B1S>N'>3JLt*~stp}?o
+<;0
+51k6stЦI:Xd>K9ZV [k(|)צJkO 3*u!՜5ad=BTG_hs1@MS9 ql|iF˼ӻ !
+
+F`Șx⇲NMBzZy[L_CU?|ρ[bJ|A)}^CG$veCs 5^OmSC|g6? a-Ul,CV~U\䊧 '-7㩓_hLo؆Ek3L1_hkeןլ7D+*'e%
+endstream
+endobj
+4149 0 obj
+<< /Type /Page /Contents 4150 0 R /Resources 4148 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3784 0 R >>
+endobj
+4151 0 obj
+<< /D [ 4149 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+4152 0 obj
+<< /D [ 4149 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+4153 0 obj
+<< /D [ 4149 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+4154 0 obj
+<< /D [ 4149 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+4155 0 obj
+<< /D [ 4149 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+4156 0 obj
+<< /D [ 4149 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+4157 0 obj
+<< /D [ 4149 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+4158 0 obj
+<< /D [ 4149 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+4159 0 obj
+<< /D [ 4149 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+4160 0 obj
+<< /D [ 4149 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+4161 0 obj
+<< /D [ 4149 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+4162 0 obj
+<< /D [ 4149 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+4163 0 obj
+<< /D [ 4149 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+4164 0 obj
+<< /D [ 4149 0 R /XYZ 81.077 637.325 null ] >>
+endobj
+4165 0 obj
+<< /D [ 4149 0 R /XYZ 81.077 626.366 null ] >>
+endobj
+4166 0 obj
+<< /D [ 4149 0 R /XYZ 81.077 615.407 null ] >>
+endobj
+4167 0 obj
+<< /D [ 4149 0 R /XYZ 81.077 604.448 null ] >>
+endobj
+4168 0 obj
+<< /D [ 4149 0 R /XYZ 81.077 593.489 null ] >>
+endobj
+4169 0 obj
+<< /D [ 4149 0 R /XYZ 81.077 582.53 null ] >>
+endobj
+4170 0 obj
+<< /D [ 4149 0 R /XYZ 81.077 571.571 null ] >>
+endobj
+4171 0 obj
+<< /D [ 4149 0 R /XYZ 81.077 560.613 null ] >>
+endobj
+4172 0 obj
+<< /D [ 4149 0 R /XYZ 81.077 549.654 null ] >>
+endobj
+4173 0 obj
+<< /D [ 4149 0 R /XYZ 81.077 538.695 null ] >>
+endobj
+4174 0 obj
+<< /D [ 4149 0 R /XYZ 81.077 527.736 null ] >>
+endobj
+4175 0 obj
+<< /D [ 4149 0 R /XYZ 81.077 477.009 null ] >>
+endobj
+4176 0 obj
+<< /D [ 4149 0 R /XYZ 81.077 466.05 null ] >>
+endobj
+4177 0 obj
+<< /D [ 4149 0 R /XYZ 81.077 455.091 null ] >>
+endobj
+4178 0 obj
+<< /D [ 4149 0 R /XYZ 81.077 444.132 null ] >>
+endobj
+4179 0 obj
+<< /D [ 4149 0 R /XYZ 81.077 403.286 null ] >>
+endobj
+4180 0 obj
+<< /D [ 4149 0 R /XYZ 81.077 392.327 null ] >>
+endobj
+4181 0 obj
+<< /D [ 4149 0 R /XYZ 81.077 381.368 null ] >>
+endobj
+4182 0 obj
+<< /D [ 4149 0 R /XYZ 81.077 340.521 null ] >>
+endobj
+4183 0 obj
+<< /D [ 4149 0 R /XYZ 81.077 329.562 null ] >>
+endobj
+4184 0 obj
+<< /D [ 4149 0 R /XYZ 81.077 318.603 null ] >>
+endobj
+4185 0 obj
+<< /D [ 4149 0 R /XYZ 81.077 277.756 null ] >>
+endobj
+4186 0 obj
+<< /D [ 4149 0 R /XYZ 81.077 266.797 null ] >>
+endobj
+4187 0 obj
+<< /D [ 4149 0 R /XYZ 81.077 255.839 null ] >>
+endobj
+4188 0 obj
+<< /D [ 4149 0 R /XYZ 81.077 244.88 null ] >>
+endobj
+4189 0 obj
+<< /D [ 4149 0 R /XYZ 81.077 233.921 null ] >>
+endobj
+4190 0 obj
+<< /D [ 4149 0 R /XYZ 81.077 222.962 null ] >>
+endobj
+4191 0 obj
+<< /D [ 4149 0 R /XYZ 81.077 212.003 null ] >>
+endobj
+4192 0 obj
+<< /D [ 4149 0 R /XYZ 81.077 201.044 null ] >>
+endobj
+4193 0 obj
+<< /D [ 4149 0 R /XYZ 81.077 190.085 null ] >>
+endobj
+4194 0 obj
+<< /D [ 4149 0 R /XYZ 81.077 179.126 null ] >>
+endobj
+4195 0 obj
+<< /D [ 4149 0 R /XYZ 81.077 168.167 null ] >>
+endobj
+4196 0 obj
+<< /D [ 4149 0 R /XYZ 81.077 127.32 null ] >>
+endobj
+4197 0 obj
+<< /D [ 4149 0 R /XYZ 81.077 116.362 null ] >>
+endobj
+4198 0 obj
+<< /D [ 4149 0 R /XYZ 81.077 105.403 null ] >>
+endobj
+4199 0 obj
+<< /D [ 4149 0 R /XYZ 81.077 94.444 null ] >>
+endobj
+4200 0 obj
+<< /D [ 4149 0 R /XYZ 81.077 83.485 null ] >>
+endobj
+4148 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+4203 0 obj
+<< /Filter /FlateDecode /Length 2172 >>
+stream
+xZKoWxWh8|a iN.(tqs!hlV#K$)!)Qq|wHl3x%J~z13I҄ >[_1x,HY1B#63cFH|0)Q(@3!?5MʴmsD'S*x{SxQK=0W>/AL
+Haknl]-WYM-wY:K[I8%(qIl_'b^\؄|O5ͱ\[{۬5SN祖@6,갫ߟox2/axqcYU0 [v}ўZ6u׷e_6c2]Ij'kB5'={(MIDjOU6]/n51 02ko& dƗqИNS友  jW۩QmuybIhv-;pIm4 W'zP}'F蠥>gcV~_`oļJ-x2sڥ'Q>ZV/qP̪b/j4#m 'GY<fUBDQTnŢ>#ynzi})M:RlQL=YYI}.q||ɲQVm?rr c+XdGkJC϶M[~i>*
+D ۭREY"/&MYmTŎ±ї-6ǜcaF9G(kѢ"Np(]ȬlW]ᯗqn?3bDN 3>pcCW%'p z.{z!E1fh0Q `w:TV>k'M(1p}O-M5u'L4̄ӗf"EY56DH mSb!Xm_e&VXlGL!Tr
+r?v@J7I (&*arhPEM8Ԑ(1}·62l*뇳*̥2#ߛxAE;x>Pkv^m>
+X*&,ru !Qj^
+EU)kE #.)탽ҷ^iv8w;̈ko7ٸ7%}ٜ||T2i
+GE +Db,Ņ[OЯh/jJIQOymiS5mUaY]. pmxJ|y>3år(qb?6D2u\
+%$N&K}3D)P,[QHAS ݙ9tᓒtiP?]}
+endstream
+endobj
+4202 0 obj
+<< /Type /Page /Contents 4203 0 R /Resources 4201 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 3784 0 R >>
+endobj
+4204 0 obj
+<< /D [ 4202 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+4205 0 obj
+<< /D [ 4202 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+4206 0 obj
+<< /D [ 4202 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+4207 0 obj
+<< /D [ 4202 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+4208 0 obj
+<< /D [ 4202 0 R /XYZ 81.077 707.379 null ] >>
+endobj
+4209 0 obj
+<< /D [ 4202 0 R /XYZ 81.077 696.42 null ] >>
+endobj
+4210 0 obj
+<< /D [ 4202 0 R /XYZ 81.077 668.84 null ] >>
+endobj
+4211 0 obj
+<< /D [ 4202 0 R /XYZ 81.077 657.881 null ] >>
+endobj
+4212 0 obj
+<< /D [ 4202 0 R /XYZ 81.077 646.922 null ] >>
+endobj
+4213 0 obj
+<< /D [ 4202 0 R /XYZ 81.077 635.963 null ] >>
+endobj
+4214 0 obj
+<< /D [ 4202 0 R /XYZ 81.077 625.004 null ] >>
+endobj
+4215 0 obj
+<< /D [ 4202 0 R /XYZ 81.077 614.046 null ] >>
+endobj
+4216 0 obj
+<< /D [ 4202 0 R /XYZ 81.077 603.087 null ] >>
+endobj
+4217 0 obj
+<< /D [ 4202 0 R /XYZ 81.077 592.128 null ] >>
+endobj
+4218 0 obj
+<< /D [ 4202 0 R /XYZ 81.077 581.169 null ] >>
+endobj
+4219 0 obj
+<< /D [ 4202 0 R /XYZ 81.077 570.21 null ] >>
+endobj
+4220 0 obj
+<< /D [ 4202 0 R /XYZ 81.077 559.251 null ] >>
+endobj
+4221 0 obj
+<< /D [ 4202 0 R /XYZ 81.077 548.292 null ] >>
+endobj
+4222 0 obj
+<< /D [ 4202 0 R /XYZ 81.077 537.333 null ] >>
+endobj
+4223 0 obj
+<< /D [ 4202 0 R /XYZ 81.077 509.753 null ] >>
+endobj
+4224 0 obj
+<< /D [ 4202 0 R /XYZ 81.077 498.794 null ] >>
+endobj
+4225 0 obj
+<< /D [ 4202 0 R /XYZ 81.077 487.836 null ] >>
+endobj
+4226 0 obj
+<< /D [ 4202 0 R /XYZ 81.077 476.877 null ] >>
+endobj
+4227 0 obj
+<< /D [ 4202 0 R /XYZ 81.077 465.918 null ] >>
+endobj
+4228 0 obj
+<< /D [ 4202 0 R /XYZ 81.077 426.383 null ] >>
+endobj
+4229 0 obj
+<< /D [ 4202 0 R /XYZ 81.077 398.803 null ] >>
+endobj
+4230 0 obj
+<< /D [ 4202 0 R /XYZ 81.077 387.844 null ] >>
+endobj
+4231 0 obj
+<< /D [ 4202 0 R /XYZ 81.077 376.885 null ] >>
+endobj
+4232 0 obj
+<< /D [ 4202 0 R /XYZ 81.077 337.35 null ] >>
+endobj
+4233 0 obj
+<< /D [ 4202 0 R /XYZ 81.077 326.391 null ] >>
+endobj
+4234 0 obj
+<< /D [ 4202 0 R /XYZ 81.077 315.432 null ] >>
+endobj
+4235 0 obj
+<< /D [ 4202 0 R /XYZ 81.077 275.897 null ] >>
+endobj
+4236 0 obj
+<< /D [ 4202 0 R /XYZ 81.077 264.938 null ] >>
+endobj
+4237 0 obj
+<< /D [ 4202 0 R /XYZ 81.077 253.979 null ] >>
+endobj
+4238 0 obj
+<< /D [ 4202 0 R /XYZ 81.077 243.021 null ] >>
+endobj
+4239 0 obj
+<< /D [ 4202 0 R /XYZ 81.077 232.062 null ] >>
+endobj
+4240 0 obj
+<< /D [ 4202 0 R /XYZ 81.077 221.103 null ] >>
+endobj
+4241 0 obj
+<< /D [ 4202 0 R /XYZ 81.077 210.144 null ] >>
+endobj
+4242 0 obj
+<< /D [ 4202 0 R /XYZ 81.077 199.185 null ] >>
+endobj
+4243 0 obj
+<< /D [ 4202 0 R /XYZ 81.077 188.226 null ] >>
+endobj
+4244 0 obj
+<< /D [ 4202 0 R /XYZ 81.077 177.267 null ] >>
+endobj
+4245 0 obj
+<< /D [ 4202 0 R /XYZ 81.077 166.308 null ] >>
+endobj
+4246 0 obj
+<< /D [ 4202 0 R /XYZ 81.077 155.349 null ] >>
+endobj
+4247 0 obj
+<< /D [ 4202 0 R /XYZ 81.077 144.39 null ] >>
+endobj
+4248 0 obj
+<< /D [ 4202 0 R /XYZ 81.077 133.431 null ] >>
+endobj
+4249 0 obj
+<< /D [ 4202 0 R /XYZ 81.077 122.473 null ] >>
+endobj
+4250 0 obj
+<< /D [ 4202 0 R /XYZ 81.077 111.514 null ] >>
+endobj
+4251 0 obj
+<< /D [ 4202 0 R /XYZ 81.077 100.555 null ] >>
+endobj
+4252 0 obj
+<< /D [ 4202 0 R /XYZ 81.077 89.596 null ] >>
+endobj
+4253 0 obj
+<< /D [ 4202 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+4201 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+4256 0 obj
+<< /Filter /FlateDecode /Length 1657 >>
+stream
+xڵYIoFW2POf_t( ЃOBs(D
+$e'u 9JE7oޘngt/17silyqDьPfÅR9W1ޥesնOն7')ڻU;3x{=fc?EwkW>^\nZ~pdUUq\Uiyz~tQ~o(˗
+x;A/i7`-̄#
+^k&:GeR-CWի1AT[8FC4U. sSӨJxhE~ՌE6p&ݯWÓ]\%]L.Jƌ5m"'ϪxSKWerhx<ⴳX%0y>lL ~Z[ 6*<ʤuoMPyWϘpHb2J"E
+e
+Lh'V'ƈ*D.D%UD]$K<
+Ŕ! `tJDx b:z^;))꩔:9jcNHPC`N,BpW|u3To"U wቲY:AؠClFW|i9fb PpcTI9EpA#:F7ų*t&g("pT #ZqpoԤTY䐂XwJC^Ja侀
+c=TM+pxZ%E+NdG6:Xd~='i_'z%(fUhswS
+)11ɇ6 ,DS!皸pk1(g_S4dsxpXNWpʮk[zMsN9"Fb|n;
+~z"RkM!| D8 GءNi )Be}t(*50Mo_X7n/|(`8jDpIƢ2@z{\E'$8O&C
+endstream
+endobj
+4255 0 obj
+<< /Type /Page /Contents 4256 0 R /Resources 4254 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 4299 0 R >>
+endobj
+4257 0 obj
+<< /D [ 4255 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+4258 0 obj
+<< /D [ 4255 0 R /XYZ 81.077 742.929 null ] >>
+endobj
+4259 0 obj
+<< /D [ 4255 0 R /XYZ 81.077 731.97 null ] >>
+endobj
+4260 0 obj
+<< /D [ 4255 0 R /XYZ 81.077 721.011 null ] >>
+endobj
+4261 0 obj
+<< /D [ 4255 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+4262 0 obj
+<< /D [ 4255 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+4263 0 obj
+<< /D [ 4255 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+4264 0 obj
+<< /D [ 4255 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+4265 0 obj
+<< /D [ 4255 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+4266 0 obj
+<< /D [ 4255 0 R /XYZ 81.077 637.325 null ] >>
+endobj
+4267 0 obj
+<< /D [ 4255 0 R /XYZ 81.077 626.366 null ] >>
+endobj
+4268 0 obj
+<< /D [ 4255 0 R /XYZ 81.077 615.407 null ] >>
+endobj
+4269 0 obj
+<< /D [ 4255 0 R /XYZ 81.077 604.448 null ] >>
+endobj
+4270 0 obj
+<< /D [ 4255 0 R /XYZ 81.077 593.489 null ] >>
+endobj
+4271 0 obj
+<< /D [ 4255 0 R /XYZ 81.077 582.53 null ] >>
+endobj
+4272 0 obj
+<< /D [ 4255 0 R /XYZ 81.077 571.571 null ] >>
+endobj
+4273 0 obj
+<< /D [ 4255 0 R /XYZ 81.077 560.613 null ] >>
+endobj
+4274 0 obj
+<< /D [ 4255 0 R /XYZ 81.077 511.878 null ] >>
+endobj
+4275 0 obj
+<< /D [ 4255 0 R /XYZ 81.077 500.919 null ] >>
+endobj
+4276 0 obj
+<< /D [ 4255 0 R /XYZ 81.077 489.961 null ] >>
+endobj
+4277 0 obj
+<< /D [ 4255 0 R /XYZ 81.077 479.002 null ] >>
+endobj
+4278 0 obj
+<< /D [ 4255 0 R /XYZ 81.077 468.043 null ] >>
+endobj
+4279 0 obj
+<< /D [ 4255 0 R /XYZ 81.077 427.196 null ] >>
+endobj
+4280 0 obj
+<< /D [ 4255 0 R /XYZ 81.077 416.237 null ] >>
+endobj
+4281 0 obj
+<< /D [ 4255 0 R /XYZ 81.077 405.278 null ] >>
+endobj
+4282 0 obj
+<< /D [ 4255 0 R /XYZ 81.077 354.551 null ] >>
+endobj
+4283 0 obj
+<< /D [ 4255 0 R /XYZ 81.077 343.593 null ] >>
+endobj
+4284 0 obj
+<< /D [ 4255 0 R /XYZ 81.077 332.634 null ] >>
+endobj
+4285 0 obj
+<< /D [ 4255 0 R /XYZ 81.077 321.675 null ] >>
+endobj
+4286 0 obj
+<< /D [ 4255 0 R /XYZ 81.077 310.716 null ] >>
+endobj
+4287 0 obj
+<< /D [ 4255 0 R /XYZ 81.077 299.757 null ] >>
+endobj
+4288 0 obj
+<< /D [ 4255 0 R /XYZ 81.077 288.798 null ] >>
+endobj
+4289 0 obj
+<< /D [ 4255 0 R /XYZ 81.077 277.839 null ] >>
+endobj
+4290 0 obj
+<< /D [ 4255 0 R /XYZ 81.077 266.88 null ] >>
+endobj
+4291 0 obj
+<< /D [ 4255 0 R /XYZ 81.077 255.921 null ] >>
+endobj
+4292 0 obj
+<< /D [ 4255 0 R /XYZ 81.077 244.962 null ] >>
+endobj
+4293 0 obj
+<< /D [ 4255 0 R /XYZ 81.077 234.003 null ] >>
+endobj
+4294 0 obj
+<< /D [ 4255 0 R /XYZ 81.077 218.063 null ] >>
+endobj
+4295 0 obj
+<< /D [ 4255 0 R /XYZ 81.077 207.104 null ] >>
+endobj
+4296 0 obj
+<< /D [ 4255 0 R /XYZ 81.077 196.145 null ] >>
+endobj
+4297 0 obj
+<< /D [ 4255 0 R /XYZ 81.077 185.187 null ] >>
+endobj
+4298 0 obj
+<< /D [ 4255 0 R /XYZ 81.077 174.228 null ] >>
+endobj
+57 0 obj
+<< /D [ 4255 0 R /XYZ 79.37 148.175 null ] >>
+endobj
+4254 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F73 189 0 R /F69 183 0 R /F20 186 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+4302 0 obj
+<< /Filter /FlateDecode /Length 1758 >>
+stream
+xڽZKoFWR[KܴqQ/Bzh
+6Q(#Çh/)<8;tp=wGtk}3=:=7|$R:`aFY" LL;cD$wzF'¨+F rY,㪾 O|gU?|no͊ HaV
+n!ڻ1O[.ϫm­DkmZP”OUI˯Ogk$G{3a-뛗 @r0\{\Žl(B斘Dx|?~"FfX!=T9]YY(η<[õzZK5kgנ1!((3C8BwG8H C~[nseᚲ^c8Do4f/i\pw~.lG";=g x]IҖP+!)L[=ʎ'0%ULbDYVXnmٞ߸Si~9@^0kOT|6fxݽn׬hW`L$A}~Wg7~
+x(#RPݧCpRFthqC~<=5dPX#aO *Ghl. jO&Qj{˦p!(_nܭr pjkYf__2&82.BUdy_EDJp}\{JCH}Nc
+Gv+ʥwMw:.:C_>p^٧iQ&Ƥy9p  SU.ٛ.:;غ]\h4Um]v_ndWoM^ ;Rs.n F}Wߌ *)GhpEh? *Uy U~
+%ǽ~if;~bU=g{Dw#9N
+endstream
+endobj
+4301 0 obj
+<< /Type /Page /Contents 4302 0 R /Resources 4300 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 4299 0 R >>
+endobj
+4303 0 obj
+<< /D [ 4301 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+4304 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 735.194 null ] >>
+endobj
+4305 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 724.235 null ] >>
+endobj
+4306 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 713.276 null ] >>
+endobj
+4307 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 702.317 null ] >>
+endobj
+4308 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 691.359 null ] >>
+endobj
+4309 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 680.4 null ] >>
+endobj
+4310 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 669.441 null ] >>
+endobj
+4311 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 658.482 null ] >>
+endobj
+4312 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 647.523 null ] >>
+endobj
+4313 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 636.564 null ] >>
+endobj
+4314 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 625.605 null ] >>
+endobj
+4315 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 614.646 null ] >>
+endobj
+4316 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 603.687 null ] >>
+endobj
+4317 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 592.728 null ] >>
+endobj
+4318 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 564.833 null ] >>
+endobj
+4319 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 553.874 null ] >>
+endobj
+4320 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 542.915 null ] >>
+endobj
+4321 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 531.956 null ] >>
+endobj
+4322 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 520.997 null ] >>
+endobj
+4323 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 510.039 null ] >>
+endobj
+4324 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 499.08 null ] >>
+endobj
+4325 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 488.121 null ] >>
+endobj
+4326 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 474.173 null ] >>
+endobj
+4327 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 458.233 null ] >>
+endobj
+4328 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 447.274 null ] >>
+endobj
+4329 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 436.315 null ] >>
+endobj
+4330 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 425.356 null ] >>
+endobj
+4331 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 414.397 null ] >>
+endobj
+4332 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 403.438 null ] >>
+endobj
+4333 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 392.479 null ] >>
+endobj
+4334 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 381.52 null ] >>
+endobj
+4335 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 370.562 null ] >>
+endobj
+4336 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 359.603 null ] >>
+endobj
+4337 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 348.644 null ] >>
+endobj
+4338 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 337.685 null ] >>
+endobj
+4339 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 326.726 null ] >>
+endobj
+4340 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 315.767 null ] >>
+endobj
+4341 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 304.808 null ] >>
+endobj
+4342 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 293.849 null ] >>
+endobj
+4343 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 253.999 null ] >>
+endobj
+4344 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 243.04 null ] >>
+endobj
+4345 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 232.081 null ] >>
+endobj
+4346 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 221.122 null ] >>
+endobj
+4347 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 210.163 null ] >>
+endobj
+4348 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 199.204 null ] >>
+endobj
+4349 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 188.245 null ] >>
+endobj
+4350 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 177.286 null ] >>
+endobj
+4351 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 166.327 null ] >>
+endobj
+4352 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 155.369 null ] >>
+endobj
+4353 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 144.41 null ] >>
+endobj
+4354 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 133.451 null ] >>
+endobj
+4355 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 122.492 null ] >>
+endobj
+4356 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 111.533 null ] >>
+endobj
+4357 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 100.574 null ] >>
+endobj
+4358 0 obj
+<< /D [ 4301 0 R /XYZ 81.077 89.615 null ] >>
+endobj
+4300 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F72 187 0 R /F73 189 0 R /F69 183 0 R /F19 184 0 R /F23 660 0 R /F20 186 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+4361 0 obj
+<< /Filter /FlateDecode /Length 1879 >>
+stream
+xڵZ[6~ϯb_<b`vۤupl!JrAKJ2M:I (}~<YMgxg+b&I%,
+a1zt׎tHpYlX=KVa%π}aC@b83E{\eFoΪy8PQ><^fM04`i\i<EGo W𵼂9"Ι{%8 1ڋvM_f%+Vo30 Qw @:$h/.UU"h/.$]
+0%cW+~!fWGq֮˖yOYWeUQc
+ <Į S_66LG1#+s $yaݠf)nJ^A )zlmM=ML4m`z>Cѭ]aMP%oG%)G7r#'! pa/a+A憻uk k +8 <V淶7\3$iZ)@I")wJ "
+&(xcc
+ <E!ׯp%hc4|n4eTl`/\͎}ʼ^Z#RVyaq0̈1/D!B)P/1:l.Wɤf}ga**Ȑ@
+F 6?Շy%9dD r@$hә[ZqPOHpջ(@R"]X#;W]5j}bu$rcEmTKf|.~mW@PDh`}_ >7'
+Vq4|nDm`skMO <ƠGs{HgX#C; LQiwi+FBs+!5<O@԰B^1PQ$G=vFg;vuZȥ͠!ni JZW+h76+2[o\XC9E
+1>P|Y!4;[M ;L*te`CgQ_>T! HNMޭ^J;f0wvՁ %A5Elm|AM67(`D`=lʸ f(5Sק667?:
+$f &;B8R?T1
+1'h5 sHA S"F1cUWf>
+i(r-`]şY$j4&iz4ɯTQVDcOr12j,GxsE
+endstream
+endobj
+4360 0 obj
+<< /Type /Page /Contents 4361 0 R /Resources 4359 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 4299 0 R >>
+endobj
+4362 0 obj
+<< /D [ 4360 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+4363 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+4364 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+61 0 obj
+<< /D [ 4360 0 R /XYZ 79.37 723.409 null ] >>
+endobj
+4365 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 684.193 null ] >>
+endobj
+4366 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 673.234 null ] >>
+endobj
+4367 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 633.864 null ] >>
+endobj
+4368 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 622.906 null ] >>
+endobj
+4369 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 611.947 null ] >>
+endobj
+4370 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 600.988 null ] >>
+endobj
+4371 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 590.029 null ] >>
+endobj
+4372 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 579.07 null ] >>
+endobj
+4373 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 568.111 null ] >>
+endobj
+4374 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 557.152 null ] >>
+endobj
+4375 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 546.193 null ] >>
+endobj
+4376 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 535.234 null ] >>
+endobj
+4377 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 524.275 null ] >>
+endobj
+4378 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 513.317 null ] >>
+endobj
+4379 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 502.358 null ] >>
+endobj
+4380 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 491.399 null ] >>
+endobj
+4381 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 480.44 null ] >>
+endobj
+4382 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 469.481 null ] >>
+endobj
+4383 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 458.522 null ] >>
+endobj
+4384 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 447.563 null ] >>
+endobj
+4385 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 436.604 null ] >>
+endobj
+4386 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 425.645 null ] >>
+endobj
+4387 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 414.686 null ] >>
+endobj
+4388 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 403.728 null ] >>
+endobj
+4389 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 392.769 null ] >>
+endobj
+4390 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 381.81 null ] >>
+endobj
+4391 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 370.851 null ] >>
+endobj
+4392 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 359.892 null ] >>
+endobj
+4393 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 348.933 null ] >>
+endobj
+4394 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 337.974 null ] >>
+endobj
+4395 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 327.015 null ] >>
+endobj
+4396 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 316.056 null ] >>
+endobj
+4397 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 305.097 null ] >>
+endobj
+4398 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 294.138 null ] >>
+endobj
+4399 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 283.18 null ] >>
+endobj
+4400 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 272.221 null ] >>
+endobj
+4401 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 261.262 null ] >>
+endobj
+4402 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 250.303 null ] >>
+endobj
+4403 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 236.596 null ] >>
+endobj
+4404 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 225.637 null ] >>
+endobj
+4405 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 214.678 null ] >>
+endobj
+4406 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 203.719 null ] >>
+endobj
+4407 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 192.76 null ] >>
+endobj
+4408 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 181.801 null ] >>
+endobj
+4409 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 170.842 null ] >>
+endobj
+4410 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 144.39 null ] >>
+endobj
+4411 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 133.431 null ] >>
+endobj
+4412 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 122.473 null ] >>
+endobj
+4413 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 111.514 null ] >>
+endobj
+4414 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 100.555 null ] >>
+endobj
+4415 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 89.596 null ] >>
+endobj
+4416 0 obj
+<< /D [ 4360 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+4359 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F20 186 0 R /F70 185 0 R /F73 189 0 R /F69 183 0 R /F72 187 0 R /F23 660 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+4419 0 obj
+<< /Filter /FlateDecode /Length 1998 >>
+stream
+xڵZ[o6~ϯ/bᝒv
+! ~T q`P(Q8ff2h~w-g73< O$O˳q&$<#D"ILI$v%w_GJɒ1PKCge?up~!?w=G_c'0"zv4v FEߛpq{я{EܩTYK(DA2F[*i:K,YÇ>e]l`ib:-C<D?䀚^NվOOTSoox
+İ$QV
+q2ܶ1A) +ЇWVgs_ԕ_S?uo?/oM)
+q<q_yBY5uvL.ɷ:>)F# q$@[bMe([Ghfbl2V! ,m]߄~ÀySeUHBx!yctAĦ07캪YD7"EiŅ
+sքs:[E ϐK0j(αBQ8hO~s_F2{|lHCGy
+/3#qVnMV&xUYnˍ Ps11:F4A`~#
+q:݉RcX0DkR.}O9OӴӱ&y9»h@Pxd@cϤh)UUVo~*8t{v3$Y96r^ eq\IJ:1Շⷪ;ʋ!C}qr9[I<.;"xʊ
+ΟuoHېfvݾ(\]e'Ճ^m ,ilBEdE8ʗb{"msyqצϖv#Wmk5yvk3n
+m׾>*meS@oQfHYK %S0!d\Sؾ]Y;&奟[7v~Jeb}7mxk{R}E#[=Zh yjn&r'1q5dMtp=KzON`#IIA<Ф 8*g1xpIVJ/$"dQ>qc n/ȔﲖbWN
+i3Q/
+endstream
+endobj
+4418 0 obj
+<< /Type /Page /Contents 4419 0 R /Resources 4417 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 4299 0 R >>
+endobj
+4420 0 obj
+<< /D [ 4418 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+4421 0 obj
+<< /D [ 4418 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+4422 0 obj
+<< /D [ 4418 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+4423 0 obj
+<< /D [ 4418 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+4424 0 obj
+<< /D [ 4418 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+4425 0 obj
+<< /D [ 4418 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+4426 0 obj
+<< /D [ 4418 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+4427 0 obj
+<< /D [ 4418 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+4428 0 obj
+<< /D [ 4418 0 R /XYZ 81.077 675.183 null ] >>
+endobj
+4429 0 obj
+<< /D [ 4418 0 R /XYZ 81.077 664.224 null ] >>
+endobj
+4430 0 obj
+<< /D [ 4418 0 R /XYZ 81.077 653.265 null ] >>
+endobj
+4431 0 obj
+<< /D [ 4418 0 R /XYZ 81.077 642.306 null ] >>
+endobj
+4432 0 obj
+<< /D [ 4418 0 R /XYZ 81.077 631.347 null ] >>
+endobj
+4433 0 obj
+<< /D [ 4418 0 R /XYZ 81.077 620.388 null ] >>
+endobj
+4434 0 obj
+<< /D [ 4418 0 R /XYZ 81.077 609.429 null ] >>
+endobj
+4435 0 obj
+<< /D [ 4418 0 R /XYZ 81.077 598.471 null ] >>
+endobj
+4436 0 obj
+<< /D [ 4418 0 R /XYZ 81.077 587.512 null ] >>
+endobj
+65 0 obj
+<< /D [ 4418 0 R /XYZ 79.37 560.812 null ] >>
+endobj
+4437 0 obj
+<< /D [ 4418 0 R /XYZ 81.077 470.537 null ] >>
+endobj
+4438 0 obj
+<< /D [ 4418 0 R /XYZ 81.077 459.578 null ] >>
+endobj
+4439 0 obj
+<< /D [ 4418 0 R /XYZ 81.077 448.619 null ] >>
+endobj
+4440 0 obj
+<< /D [ 4418 0 R /XYZ 81.077 437.66 null ] >>
+endobj
+4441 0 obj
+<< /D [ 4418 0 R /XYZ 81.077 426.701 null ] >>
+endobj
+4442 0 obj
+<< /D [ 4418 0 R /XYZ 81.077 415.742 null ] >>
+endobj
+4443 0 obj
+<< /D [ 4418 0 R /XYZ 81.077 404.783 null ] >>
+endobj
+4444 0 obj
+<< /D [ 4418 0 R /XYZ 81.077 393.824 null ] >>
+endobj
+4445 0 obj
+<< /D [ 4418 0 R /XYZ 81.077 382.865 null ] >>
+endobj
+4446 0 obj
+<< /D [ 4418 0 R /XYZ 81.077 371.906 null ] >>
+endobj
+4447 0 obj
+<< /D [ 4418 0 R /XYZ 81.077 360.948 null ] >>
+endobj
+4448 0 obj
+<< /D [ 4418 0 R /XYZ 81.077 349.989 null ] >>
+endobj
+4449 0 obj
+<< /D [ 4418 0 R /XYZ 81.077 339.03 null ] >>
+endobj
+4450 0 obj
+<< /D [ 4418 0 R /XYZ 81.077 328.071 null ] >>
+endobj
+4451 0 obj
+<< /D [ 4418 0 R /XYZ 81.077 317.112 null ] >>
+endobj
+4452 0 obj
+<< /D [ 4418 0 R /XYZ 81.077 306.153 null ] >>
+endobj
+4453 0 obj
+<< /D [ 4418 0 R /XYZ 81.077 295.194 null ] >>
+endobj
+4454 0 obj
+<< /D [ 4418 0 R /XYZ 81.077 284.235 null ] >>
+endobj
+4455 0 obj
+<< /D [ 4418 0 R /XYZ 81.077 273.276 null ] >>
+endobj
+4456 0 obj
+<< /D [ 4418 0 R /XYZ 81.077 262.317 null ] >>
+endobj
+4457 0 obj
+<< /D [ 4418 0 R /XYZ 81.077 251.359 null ] >>
+endobj
+4458 0 obj
+<< /D [ 4418 0 R /XYZ 81.077 240.4 null ] >>
+endobj
+4459 0 obj
+<< /D [ 4418 0 R /XYZ 81.077 229.441 null ] >>
+endobj
+4460 0 obj
+<< /D [ 4418 0 R /XYZ 81.077 218.482 null ] >>
+endobj
+4461 0 obj
+<< /D [ 4418 0 R /XYZ 81.077 207.523 null ] >>
+endobj
+4462 0 obj
+<< /D [ 4418 0 R /XYZ 81.077 182.616 null ] >>
+endobj
+4463 0 obj
+<< /D [ 4418 0 R /XYZ 81.077 171.657 null ] >>
+endobj
+4464 0 obj
+<< /D [ 4418 0 R /XYZ 81.077 104.908 null ] >>
+endobj
+4465 0 obj
+<< /D [ 4418 0 R /XYZ 81.077 93.949 null ] >>
+endobj
+4417 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F72 187 0 R /F19 184 0 R /F20 186 0 R /F76 318 0 R /F70 185 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+4468 0 obj
+<< /Filter /FlateDecode /Length 2458 >>
+stream
+xZ[o~_a`.4Eg">t
+qD[r`{! ]G13%ȏ %:hx,e$\:c3afF3B5lgPTK}(Mk˺Z0bxr^M@ T!˽/]yL
+Xr3,⽝Tݦ\kA=6JMeu*4ϿO.Q1A1brFumwtLrN X0c]X4[\JKhz`*l594weنBO{*-en7u7y:0 ]7b*6=r746-õvtl]YYJgY4gWSJD>2!n~tMy^Uڐۣڐ-RI="v`B
+aSz()pEX
+]"vUsbWhQxmnۼťӶO@{`)0@ M)fO"N|^@=,_\e-p"hqwNac:Mw5I?$JEȻBw f66Vo?B/k~B>vU7M
+?.@z͡EsǤposüii48$:j/Q~AIY&xPff!?Bfi~̈SbDqa5g}u}T\hP\2Ubjϣ*(8  @hⷫ5[ۺ]}r>%h`˞/Mqf- x=Yp 6G [N(l7K(lyzrB"LΘ)!Egܝ;PcxJ41ƣ nOC@1*9y%wVb)HpߺB ɋNN<@!8k~{$ŦBCלFjcH1:&a E N KW#K*^T|zЗink-
+tOզQ_z_~z#=i15ʒE&o
+B4cJBr:Um G4cJO_HOA:T/ %$Z$9sń}N&ȕ_VSS AeckMwPڟ u'}+*J]u~W}x4
+KEZF=rw| VV+;).%DȰ[;ZP>3z w\ ep_
+~Z&C T?)]<hU8{͑z #Mx]w28}n'! ޟ0Ohmł?q&2`M+8dGx<:H.
+x*)']Ubk?_]8rwN
+[u+9
+1x:yW[W֜Ta#BjN\ zP.Tf|ILT۰4{禂XC&xs󌓌~J;BնM[5{9L~ؤ%Y:yrCI^դl\SBE}MZu#3B3V]Gm΄%lp6ɽyӜ㐬1=봰n
+qQIb
+@{,5
+/^\0 ɈMK"4<qzQs9F1S,>x*r/ UjRהE<d1}jqqLY;F}ǭolB1<}gHLzݯw=ӌ"ȗi6eU\]y8N% R:B''T_gN#nwYmZ<-z w,M!m:fIDg~
+PH(LHɳx{ʣ>
+endstream
+endobj
+4467 0 obj
+<< /Type /Page /Contents 4468 0 R /Resources 4466 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 4299 0 R >>
+endobj
+4469 0 obj
+<< /D [ 4467 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+4470 0 obj
+<< /D [ 4467 0 R /XYZ 81.077 695.248 null ] >>
+endobj
+4471 0 obj
+<< /D [ 4467 0 R /XYZ 81.077 684.289 null ] >>
+endobj
+4472 0 obj
+<< /D [ 4467 0 R /XYZ 81.077 643.72 null ] >>
+endobj
+4473 0 obj
+<< /D [ 4467 0 R /XYZ 81.077 632.762 null ] >>
+endobj
+4474 0 obj
+<< /D [ 4467 0 R /XYZ 81.077 598.45 null ] >>
+endobj
+4475 0 obj
+<< /D [ 4467 0 R /XYZ 81.077 587.491 null ] >>
+endobj
+4476 0 obj
+<< /D [ 4467 0 R /XYZ 81.077 563.281 null ] >>
+endobj
+4477 0 obj
+<< /D [ 4467 0 R /XYZ 81.077 552.322 null ] >>
+endobj
+4478 0 obj
+<< /D [ 4467 0 R /XYZ 81.077 541.363 null ] >>
+endobj
+4479 0 obj
+<< /D [ 4467 0 R /XYZ 81.077 530.404 null ] >>
+endobj
+4480 0 obj
+<< /D [ 4467 0 R /XYZ 81.077 519.445 null ] >>
+endobj
+4481 0 obj
+<< /D [ 4467 0 R /XYZ 81.077 508.486 null ] >>
+endobj
+4482 0 obj
+<< /D [ 4467 0 R /XYZ 81.077 497.528 null ] >>
+endobj
+4483 0 obj
+<< /D [ 4467 0 R /XYZ 81.077 486.569 null ] >>
+endobj
+4484 0 obj
+<< /D [ 4467 0 R /XYZ 81.077 475.61 null ] >>
+endobj
+4485 0 obj
+<< /D [ 4467 0 R /XYZ 81.077 464.651 null ] >>
+endobj
+4486 0 obj
+<< /D [ 4467 0 R /XYZ 81.077 453.692 null ] >>
+endobj
+4487 0 obj
+<< /D [ 4467 0 R /XYZ 81.077 442.733 null ] >>
+endobj
+4488 0 obj
+<< /D [ 4467 0 R /XYZ 81.077 388.357 null ] >>
+endobj
+4489 0 obj
+<< /D [ 4467 0 R /XYZ 81.077 377.398 null ] >>
+endobj
+4490 0 obj
+<< /D [ 4467 0 R /XYZ 81.077 366.439 null ] >>
+endobj
+4491 0 obj
+<< /D [ 4467 0 R /XYZ 81.077 355.48 null ] >>
+endobj
+4492 0 obj
+<< /D [ 4467 0 R /XYZ 81.077 344.521 null ] >>
+endobj
+4493 0 obj
+<< /D [ 4467 0 R /XYZ 81.077 333.562 null ] >>
+endobj
+4494 0 obj
+<< /D [ 4467 0 R /XYZ 81.077 322.603 null ] >>
+endobj
+4495 0 obj
+<< /D [ 4467 0 R /XYZ 81.077 311.644 null ] >>
+endobj
+4496 0 obj
+<< /D [ 4467 0 R /XYZ 81.077 300.685 null ] >>
+endobj
+4497 0 obj
+<< /D [ 4467 0 R /XYZ 81.077 289.726 null ] >>
+endobj
+4498 0 obj
+<< /D [ 4467 0 R /XYZ 81.077 278.768 null ] >>
+endobj
+4499 0 obj
+<< /D [ 4467 0 R /XYZ 81.077 267.809 null ] >>
+endobj
+4500 0 obj
+<< /D [ 4467 0 R /XYZ 81.077 256.85 null ] >>
+endobj
+4501 0 obj
+<< /D [ 4467 0 R /XYZ 81.077 245.891 null ] >>
+endobj
+4502 0 obj
+<< /D [ 4467 0 R /XYZ 81.077 234.932 null ] >>
+endobj
+4503 0 obj
+<< /D [ 4467 0 R /XYZ 81.077 223.973 null ] >>
+endobj
+4504 0 obj
+<< /D [ 4467 0 R /XYZ 81.077 213.014 null ] >>
+endobj
+4505 0 obj
+<< /D [ 4467 0 R /XYZ 81.077 202.055 null ] >>
+endobj
+4506 0 obj
+<< /D [ 4467 0 R /XYZ 81.077 167.743 null ] >>
+endobj
+4507 0 obj
+<< /D [ 4467 0 R /XYZ 81.077 133.431 null ] >>
+endobj
+4508 0 obj
+<< /D [ 4467 0 R /XYZ 81.077 122.473 null ] >>
+endobj
+4509 0 obj
+<< /D [ 4467 0 R /XYZ 81.077 111.514 null ] >>
+endobj
+4510 0 obj
+<< /D [ 4467 0 R /XYZ 81.077 100.555 null ] >>
+endobj
+4511 0 obj
+<< /D [ 4467 0 R /XYZ 81.077 89.596 null ] >>
+endobj
+4512 0 obj
+<< /D [ 4467 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+4466 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F20 186 0 R /F73 189 0 R /F69 183 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+4516 0 obj
+<< /Filter /FlateDecode /Length 2533 >>
+stream
+xڭZKoFWa%`O &I ! DʤCQ[&lI&ٚ9|VU_U
+wG$۫[pd4atq{wE% -$j$AX%~я4 L ÈJDt SM1R̄ҿƳTu}yZ *gwGd<@ghT#f6H@./viϒ*
+QRyP8,/ɻw4tnaTup;w.,҃q;{뛡e?/h6İQH1nnKUn>>Շn<e4H18 UJ8Dj :KqѬ8*xpx0{& Ce1I{(3\*_^s3O->FAJOpg׸酳
+I&lI [8*u` Ch2N BquQQ:P!G=]hOBPyO&P:߾ =}HlkBRz .Q%O m$wOٶ~.fYط!A c0m=jYһy_+CΒ"OʲPN_}{jM}))>gS]/v~.$2i10Mxu9?1 SC2jy-;WT-_V7!L
+Ky% Qy\Hw,6y2[s5
+`q~Q8CiYs<qHe+Hn؁:cVYW&0 魕dySֹJ:F:@GfgPz4˯HҐ Cg>6 nw Υ_EGs0`,:%" T0`CtjҹI<я؆#LRv22'k'y9;VuQ|>|]b4d_iev;Ll90
+$4 Ž}NEs
+E#
+؃1&[#MFn"?*9뺭B.l|ܧqI2>vqIr(=#.{R \@Ƣ~H{R3^H|;<Cmuϣaǫ_;eҼě^^\^-`7G3&q!F4B]^ر 7?lq%,*s>s%M)wQ j8BiUml6n^Ab`E~/BFJJ`Z683,zY
+endstream
+endobj
+4515 0 obj
+<< /Type /Page /Contents 4516 0 R /Resources 4514 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 4299 0 R /Annots 4565 0 R >>
+endobj
+4565 0 obj
+[ 4513 0 R ]
+endobj
+4513 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 300.185 502.088 310.618 514.024 ]/A << /S /GoTo /D (Hfootnote.11) >> >>
+endobj
+4517 0 obj
+<< /D [ 4515 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+4518 0 obj
+<< /D [ 4515 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+4519 0 obj
+<< /D [ 4515 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+4520 0 obj
+<< /D [ 4515 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+4521 0 obj
+<< /D [ 4515 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+4522 0 obj
+<< /D [ 4515 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+4523 0 obj
+<< /D [ 4515 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+4524 0 obj
+<< /D [ 4515 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+4525 0 obj
+<< /D [ 4515 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+4526 0 obj
+<< /D [ 4515 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+4527 0 obj
+<< /D [ 4515 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+4528 0 obj
+<< /D [ 4515 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+4529 0 obj
+<< /D [ 4515 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+4530 0 obj
+<< /D [ 4515 0 R /XYZ 81.077 637.325 null ] >>
+endobj
+4531 0 obj
+<< /D [ 4515 0 R /XYZ 81.077 626.366 null ] >>
+endobj
+4532 0 obj
+<< /D [ 4515 0 R /XYZ 81.077 615.407 null ] >>
+endobj
+4533 0 obj
+<< /D [ 4515 0 R /XYZ 81.077 604.448 null ] >>
+endobj
+4534 0 obj
+<< /D [ 4515 0 R /XYZ 81.077 593.489 null ] >>
+endobj
+4535 0 obj
+<< /D [ 4515 0 R /XYZ 81.077 582.53 null ] >>
+endobj
+4536 0 obj
+<< /D [ 4515 0 R /XYZ 81.077 571.571 null ] >>
+endobj
+4537 0 obj
+<< /D [ 4515 0 R /XYZ 81.077 560.613 null ] >>
+endobj
+4538 0 obj
+<< /D [ 4515 0 R /XYZ 81.077 549.654 null ] >>
+endobj
+4539 0 obj
+<< /D [ 4515 0 R /XYZ 81.077 538.695 null ] >>
+endobj
+4540 0 obj
+<< /D [ 4515 0 R /XYZ 81.077 527.736 null ] >>
+endobj
+4541 0 obj
+<< /D [ 4515 0 R /XYZ 81.077 474.934 null ] >>
+endobj
+4542 0 obj
+<< /D [ 4515 0 R /XYZ 81.077 463.975 null ] >>
+endobj
+4543 0 obj
+<< /D [ 4515 0 R /XYZ 81.077 453.016 null ] >>
+endobj
+4544 0 obj
+<< /D [ 4515 0 R /XYZ 81.077 442.057 null ] >>
+endobj
+4546 0 obj
+<< /D [ 4515 0 R /XYZ 81.077 377.3 null ] >>
+endobj
+4547 0 obj
+<< /D [ 4515 0 R /XYZ 81.077 366.341 null ] >>
+endobj
+4548 0 obj
+<< /D [ 4515 0 R /XYZ 81.077 355.382 null ] >>
+endobj
+4549 0 obj
+<< /D [ 4515 0 R /XYZ 81.077 344.423 null ] >>
+endobj
+4550 0 obj
+<< /D [ 4515 0 R /XYZ 81.077 333.464 null ] >>
+endobj
+4551 0 obj
+<< /D [ 4515 0 R /XYZ 81.077 317.524 null ] >>
+endobj
+4552 0 obj
+<< /D [ 4515 0 R /XYZ 81.077 306.565 null ] >>
+endobj
+4553 0 obj
+<< /D [ 4515 0 R /XYZ 81.077 295.606 null ] >>
+endobj
+4554 0 obj
+<< /D [ 4515 0 R /XYZ 81.077 284.647 null ] >>
+endobj
+4555 0 obj
+<< /D [ 4515 0 R /XYZ 81.077 273.688 null ] >>
+endobj
+4556 0 obj
+<< /D [ 4515 0 R /XYZ 81.077 262.73 null ] >>
+endobj
+4557 0 obj
+<< /D [ 4515 0 R /XYZ 81.077 207.935 null ] >>
+endobj
+4558 0 obj
+<< /D [ 4515 0 R /XYZ 81.077 196.976 null ] >>
+endobj
+4559 0 obj
+<< /D [ 4515 0 R /XYZ 81.077 186.017 null ] >>
+endobj
+4560 0 obj
+<< /D [ 4515 0 R /XYZ 81.077 175.058 null ] >>
+endobj
+4561 0 obj
+<< /D [ 4515 0 R /XYZ 81.077 134.212 null ] >>
+endobj
+4562 0 obj
+<< /D [ 4515 0 R /XYZ 81.077 123.253 null ] >>
+endobj
+4563 0 obj
+<< /D [ 4515 0 R /XYZ 81.077 112.294 null ] >>
+endobj
+4564 0 obj
+<< /D [ 4515 0 R /XYZ 94.613 82.107 null ] >>
+endobj
+4514 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F22 473 0 R /F20 186 0 R /F23 660 0 R /F27 4545 0 R /F77 480 0 R /F63 205 0 R /F81 768 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+4568 0 obj
+<< /Filter /FlateDecode /Length 2542 >>
+stream
+xڝZ[o~_bb]R-YhuM!жl%$'ËdI3/E|<<<7O<HçpĄb <!X"II$ ’Lɿ,abş>}$F,1fsA#iw"9&mvUfetYvoL{: -O_I2IJ>$Āebf ngsQdͦjUQۺVffs Iڶ;,ps3nRtrH)~ )#qrU -E2NQ$>qnq-ƈg܌0v@
++NW:E,*@]aSQ٣+E1!DnM7UQX˭U?[$p#0ū.&:ޫr<gZgEhQckj7SgY٧e}UFqN}$μbPtSUfs tĭ׾5ז>/},}Hq R#~H\|Wz̋iV*BD"F;uP64 ۴ a
+_ݿb`ԟke{lZ Z>fkkl/mj\ўtNiu{./h.S:3败9ǝpTx`I,Yh=oǽ0e( A2&AjQ;5\nEEq!u2UyKXyg%!D=6mHEoRmN7_/ĝa>uy7!  Ŭ7?-`HFpu0!(~ٻCWܯڴƁk_PxsٜU#$!0Zg0: ᧔`tv֐ZCojuٟ+ a.Si3 #{<( ?rqp'lʄiǓFAMbDhq6z"!"cHxCV~=䐾iU}=`BBsV+C@QCJ?E
+S` #^M0 C:geV;NF{_&H!uٯ`7NG>+nl<$DRJ0R[5zM`az@r+řuAyIo˄=~z;-C&M Qk \VSnng\
+QW:m5.R[Wm^%q=F0#7o 5dܻy.
+BDPBPiPw柰K<j׌t%J]RHU?s'uW#;8:ћ !v.L "Őe5|#8=^9U||v"aG9quJȯ)QpDY̌FdjnznؚnSi#M웳o j/&ćDzv 엀8#oA-{{q֯S@.>xa'/o
+tW s[FG%u7zLsTCe+18u7m>wp؛eӨNqF`W6N#}!VIs6Syٚk~ƛ\x6-ڦ8B&Zݔ 7w8dX)ƣE^xk ]gJ)X ߈yƎ(\ЕNŇ
+q"
+endstream
+endobj
+4567 0 obj
+<< /Type /Page /Contents 4568 0 R /Resources 4566 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 4299 0 R >>
+endobj
+4569 0 obj
+<< /D [ 4567 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+4570 0 obj
+<< /D [ 4567 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+4571 0 obj
+<< /D [ 4567 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+4572 0 obj
+<< /D [ 4567 0 R /XYZ 81.077 717.026 null ] >>
+endobj
+4573 0 obj
+<< /D [ 4567 0 R /XYZ 81.077 652.269 null ] >>
+endobj
+4574 0 obj
+<< /D [ 4567 0 R /XYZ 81.077 599.467 null ] >>
+endobj
+4575 0 obj
+<< /D [ 4567 0 R /XYZ 81.077 583.527 null ] >>
+endobj
+4576 0 obj
+<< /D [ 4567 0 R /XYZ 81.077 572.568 null ] >>
+endobj
+4577 0 obj
+<< /D [ 4567 0 R /XYZ 81.077 561.609 null ] >>
+endobj
+4578 0 obj
+<< /D [ 4567 0 R /XYZ 81.077 518.769 null ] >>
+endobj
+4579 0 obj
+<< /D [ 4567 0 R /XYZ 81.077 507.811 null ] >>
+endobj
+4580 0 obj
+<< /D [ 4567 0 R /XYZ 81.077 496.852 null ] >>
+endobj
+4581 0 obj
+<< /D [ 4567 0 R /XYZ 81.077 485.893 null ] >>
+endobj
+4582 0 obj
+<< /D [ 4567 0 R /XYZ 81.077 474.934 null ] >>
+endobj
+4583 0 obj
+<< /D [ 4567 0 R /XYZ 81.077 463.975 null ] >>
+endobj
+4584 0 obj
+<< /D [ 4567 0 R /XYZ 81.077 453.016 null ] >>
+endobj
+4585 0 obj
+<< /D [ 4567 0 R /XYZ 81.077 442.057 null ] >>
+endobj
+4586 0 obj
+<< /D [ 4567 0 R /XYZ 81.077 431.098 null ] >>
+endobj
+4587 0 obj
+<< /D [ 4567 0 R /XYZ 81.077 420.139 null ] >>
+endobj
+4588 0 obj
+<< /D [ 4567 0 R /XYZ 81.077 409.18 null ] >>
+endobj
+4589 0 obj
+<< /D [ 4567 0 R /XYZ 81.077 398.221 null ] >>
+endobj
+4590 0 obj
+<< /D [ 4567 0 R /XYZ 81.077 387.263 null ] >>
+endobj
+4591 0 obj
+<< /D [ 4567 0 R /XYZ 81.077 376.304 null ] >>
+endobj
+4592 0 obj
+<< /D [ 4567 0 R /XYZ 81.077 365.345 null ] >>
+endobj
+4593 0 obj
+<< /D [ 4567 0 R /XYZ 81.077 354.386 null ] >>
+endobj
+4594 0 obj
+<< /D [ 4567 0 R /XYZ 81.077 343.427 null ] >>
+endobj
+4595 0 obj
+<< /D [ 4567 0 R /XYZ 81.077 332.468 null ] >>
+endobj
+4596 0 obj
+<< /D [ 4567 0 R /XYZ 81.077 321.509 null ] >>
+endobj
+4597 0 obj
+<< /D [ 4567 0 R /XYZ 81.077 310.55 null ] >>
+endobj
+4598 0 obj
+<< /D [ 4567 0 R /XYZ 81.077 299.591 null ] >>
+endobj
+4599 0 obj
+<< /D [ 4567 0 R /XYZ 81.077 288.632 null ] >>
+endobj
+4600 0 obj
+<< /D [ 4567 0 R /XYZ 81.077 277.674 null ] >>
+endobj
+4601 0 obj
+<< /D [ 4567 0 R /XYZ 81.077 224.872 null ] >>
+endobj
+4602 0 obj
+<< /D [ 4567 0 R /XYZ 81.077 184.025 null ] >>
+endobj
+4603 0 obj
+<< /D [ 4567 0 R /XYZ 81.077 125.245 null ] >>
+endobj
+4604 0 obj
+<< /D [ 4567 0 R /XYZ 81.077 114.286 null ] >>
+endobj
+4566 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F75 317 0 R /F70 185 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+4608 0 obj
+<< /Filter /FlateDecode /Length 3052 >>
+stream
+xڵZIs6P"W6bәI&9xjW!I( H5I
+HMzᄎ][Teյ"޸- ц큵c_ZvVm7Aa$9ȳЄe}赶x>57guǴ!Z!BIp-fX" ©ha5 }շ ̭IhaS4򰬪͢q+
+8\Ev2.eO.FT&ožĕ7Ձ#
+=,by[LYp,i, HXEV(K'DL"$A#!fڸ.Nl
+w=rC'+7l]"\ݻvN*
+>a(ʛ7so79رrMa ]x뺷͛=V1YDkzZU꼋e)2 ",$rL(¸iF_;Avx]ŧ.W<ϓq )5#ڰjH{D65d
+^UޚrkB Ё@)V|kW>6I1CPf#j"V , J"ɸVxK(s;wE\#
+0` b,EyɁǕ|
+CW@"C>ƒދ #ՄX\ϕK~ܶRnwGz؅gQuӆm:TS^=~..wjb{Vn *} B͛H3F{ }!FNlZGa
+7baƛbo;ѩY25/MԺ4#\$0 9~MbK#U$Rу|:F>uy+lc [[f1%u+/#RL,Me8>SFp<@/h54;Aą žKsEAux;EV**9sEtn7ZBJ!Em_ /l:\}XnW>D{_Io7&E4|?BoGV]v|zD1_eݽ/jdm_e:¼]b[t1G66OԻ:ߗݖ̺1U /(Z)tGhNgDf1$N YpLK`lV-{ܕIК7:V!cYG5?|Hd 훟5
+endstream
+endobj
+4607 0 obj
+<< /Type /Page /Contents 4608 0 R /Resources 4606 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 4299 0 R /Annots 4643 0 R >>
+endobj
+4643 0 obj
+[ 4605 0 R ]
+endobj
+4605 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 434.917 367.592 445.35 379.529 ]/A << /S /GoTo /D (Hfootnote.12) >> >>
+endobj
+4609 0 obj
+<< /D [ 4607 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+4610 0 obj
+<< /D [ 4607 0 R /XYZ 81.077 730.974 null ] >>
+endobj
+4611 0 obj
+<< /D [ 4607 0 R /XYZ 81.077 720.015 null ] >>
+endobj
+4612 0 obj
+<< /D [ 4607 0 R /XYZ 81.077 709.056 null ] >>
+endobj
+4613 0 obj
+<< /D [ 4607 0 R /XYZ 81.077 698.097 null ] >>
+endobj
+4614 0 obj
+<< /D [ 4607 0 R /XYZ 81.077 687.138 null ] >>
+endobj
+4615 0 obj
+<< /D [ 4607 0 R /XYZ 81.077 628.358 null ] >>
+endobj
+4616 0 obj
+<< /D [ 4607 0 R /XYZ 81.077 617.4 null ] >>
+endobj
+4617 0 obj
+<< /D [ 4607 0 R /XYZ 81.077 606.441 null ] >>
+endobj
+4618 0 obj
+<< /D [ 4607 0 R /XYZ 81.077 595.482 null ] >>
+endobj
+4619 0 obj
+<< /D [ 4607 0 R /XYZ 81.077 584.523 null ] >>
+endobj
+4620 0 obj
+<< /D [ 4607 0 R /XYZ 81.077 573.564 null ] >>
+endobj
+4621 0 obj
+<< /D [ 4607 0 R /XYZ 81.077 562.605 null ] >>
+endobj
+4622 0 obj
+<< /D [ 4607 0 R /XYZ 81.077 551.646 null ] >>
+endobj
+4623 0 obj
+<< /D [ 4607 0 R /XYZ 81.077 540.687 null ] >>
+endobj
+4624 0 obj
+<< /D [ 4607 0 R /XYZ 81.077 529.728 null ] >>
+endobj
+4625 0 obj
+<< /D [ 4607 0 R /XYZ 81.077 518.769 null ] >>
+endobj
+4626 0 obj
+<< /D [ 4607 0 R /XYZ 81.077 507.811 null ] >>
+endobj
+4627 0 obj
+<< /D [ 4607 0 R /XYZ 81.077 496.852 null ] >>
+endobj
+4628 0 obj
+<< /D [ 4607 0 R /XYZ 81.077 485.893 null ] >>
+endobj
+4629 0 obj
+<< /D [ 4607 0 R /XYZ 81.077 474.934 null ] >>
+endobj
+4630 0 obj
+<< /D [ 4607 0 R /XYZ 81.077 463.975 null ] >>
+endobj
+4631 0 obj
+<< /D [ 4607 0 R /XYZ 81.077 453.016 null ] >>
+endobj
+4632 0 obj
+<< /D [ 4607 0 R /XYZ 81.077 442.057 null ] >>
+endobj
+4633 0 obj
+<< /D [ 4607 0 R /XYZ 81.077 431.098 null ] >>
+endobj
+4634 0 obj
+<< /D [ 4607 0 R /XYZ 81.077 406.192 null ] >>
+endobj
+4635 0 obj
+<< /D [ 4607 0 R /XYZ 81.077 395.233 null ] >>
+endobj
+4636 0 obj
+<< /D [ 4607 0 R /XYZ 81.077 328.483 null ] >>
+endobj
+4637 0 obj
+<< /D [ 4607 0 R /XYZ 81.077 317.524 null ] >>
+endobj
+4638 0 obj
+<< /D [ 4607 0 R /XYZ 81.077 252.767 null ] >>
+endobj
+4639 0 obj
+<< /D [ 4607 0 R /XYZ 81.077 241.808 null ] >>
+endobj
+4640 0 obj
+<< /D [ 4607 0 R /XYZ 81.077 129.23 null ] >>
+endobj
+4641 0 obj
+<< /D [ 4607 0 R /XYZ 81.077 118.271 null ] >>
+endobj
+4642 0 obj
+<< /D [ 4607 0 R /XYZ 94.613 88.682 null ] >>
+endobj
+4606 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F20 186 0 R /F73 189 0 R /F69 183 0 R /F22 473 0 R /F70 185 0 R /F76 318 0 R /F26 662 0 R /F77 480 0 R /F63 205 0 R /F81 768 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+4646 0 obj
+<< /Filter /FlateDecode /Length 2008 >>
+stream
+xڵZK6004G|Ja1$`чHh[YXNc{"Mp>$XM֓hEti/\\| iB9,V:E:IQ4ĊHb;s*ՏJ' ILYDbϔV֭mWWR2ٿ[g?f͚Uv]5/m_}ɈЈ%E~ymlw悔&SBi)%m L1$N /6zv9jf,ޕ4n0b5@
+nX=7>Ji‚;ʉ1hL&vݾAFAib` 4=XYWbzPw]
+wũ2~q
+3=w;FY
+D5MǦ:SeDxJc14TTL[V3?T$eeY
+:% plk\0 uJAm_o5C[fɡ\E*nWq*wYtdUYv~<? { uѰM?_3U meòڻeCSÖ4/yVM!W1ʙ=%a4,O$gMdyϦidݍ
+
+=ɽz]E bׁiE ݤl{FTBN{eP2@rvHa,jq@/-^X
+j
+S/mRVⷉ* Bh/*,H@hFur}RQЧq"t\c1=TCX}&`aKcn,!WX̆
+}t!2lƶxWӴ仝]^,7K|.Ww2TƧ-n`(㒓(Gg_qK} Ñ)Nh:H c v1^oZ5miwZi4A1o!9hG^W6;f[~ӫj2
+yAZ 
+o,|\XhϪ'u>2sc4F{F?QO|8q
+OF%2^G\ 3SD;1AX)@ Mo?5lNV*eͯ P9|+vu~ \lʸVb໺
+GeVSG+ ¡:Z&AQ_+P1!;>6?[;3|X5}4^־ CxmצHٖHg3~WUKbc9@tW> $XG!#ޛ
+endstream
+endobj
+4645 0 obj
+<< /Type /Page /Contents 4646 0 R /Resources 4644 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 4299 0 R >>
+endobj
+4647 0 obj
+<< /D [ 4645 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+4648 0 obj
+<< /D [ 4645 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+4649 0 obj
+<< /D [ 4645 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+4650 0 obj
+<< /D [ 4645 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+4651 0 obj
+<< /D [ 4645 0 R /XYZ 81.077 718.123 null ] >>
+endobj
+4652 0 obj
+<< /D [ 4645 0 R /XYZ 81.077 707.164 null ] >>
+endobj
+4653 0 obj
+<< /D [ 4645 0 R /XYZ 81.077 696.205 null ] >>
+endobj
+4654 0 obj
+<< /D [ 4645 0 R /XYZ 81.077 685.247 null ] >>
+endobj
+4655 0 obj
+<< /D [ 4645 0 R /XYZ 81.077 674.288 null ] >>
+endobj
+4656 0 obj
+<< /D [ 4645 0 R /XYZ 81.077 663.329 null ] >>
+endobj
+4657 0 obj
+<< /D [ 4645 0 R /XYZ 81.077 652.37 null ] >>
+endobj
+4658 0 obj
+<< /D [ 4645 0 R /XYZ 81.077 641.411 null ] >>
+endobj
+4659 0 obj
+<< /D [ 4645 0 R /XYZ 81.077 630.452 null ] >>
+endobj
+4660 0 obj
+<< /D [ 4645 0 R /XYZ 81.077 619.493 null ] >>
+endobj
+4661 0 obj
+<< /D [ 4645 0 R /XYZ 81.077 608.534 null ] >>
+endobj
+4662 0 obj
+<< /D [ 4645 0 R /XYZ 81.077 597.575 null ] >>
+endobj
+4663 0 obj
+<< /D [ 4645 0 R /XYZ 81.077 586.616 null ] >>
+endobj
+4664 0 obj
+<< /D [ 4645 0 R /XYZ 81.077 575.658 null ] >>
+endobj
+4665 0 obj
+<< /D [ 4645 0 R /XYZ 81.077 564.699 null ] >>
+endobj
+4666 0 obj
+<< /D [ 4645 0 R /XYZ 81.077 553.74 null ] >>
+endobj
+4667 0 obj
+<< /D [ 4645 0 R /XYZ 81.077 489.286 null ] >>
+endobj
+4668 0 obj
+<< /D [ 4645 0 R /XYZ 81.077 478.327 null ] >>
+endobj
+4669 0 obj
+<< /D [ 4645 0 R /XYZ 81.077 467.368 null ] >>
+endobj
+4670 0 obj
+<< /D [ 4645 0 R /XYZ 81.077 456.409 null ] >>
+endobj
+4671 0 obj
+<< /D [ 4645 0 R /XYZ 81.077 445.45 null ] >>
+endobj
+4672 0 obj
+<< /D [ 4645 0 R /XYZ 81.077 434.491 null ] >>
+endobj
+4673 0 obj
+<< /D [ 4645 0 R /XYZ 81.077 423.532 null ] >>
+endobj
+4674 0 obj
+<< /D [ 4645 0 R /XYZ 81.077 412.573 null ] >>
+endobj
+4675 0 obj
+<< /D [ 4645 0 R /XYZ 81.077 401.614 null ] >>
+endobj
+4676 0 obj
+<< /D [ 4645 0 R /XYZ 81.077 360.869 null ] >>
+endobj
+4677 0 obj
+<< /D [ 4645 0 R /XYZ 81.077 349.91 null ] >>
+endobj
+4678 0 obj
+<< /D [ 4645 0 R /XYZ 81.077 338.951 null ] >>
+endobj
+4679 0 obj
+<< /D [ 4645 0 R /XYZ 81.077 327.992 null ] >>
+endobj
+4680 0 obj
+<< /D [ 4645 0 R /XYZ 81.077 317.033 null ] >>
+endobj
+4681 0 obj
+<< /D [ 4645 0 R /XYZ 81.077 306.074 null ] >>
+endobj
+4682 0 obj
+<< /D [ 4645 0 R /XYZ 81.077 295.115 null ] >>
+endobj
+4683 0 obj
+<< /D [ 4645 0 R /XYZ 81.077 284.156 null ] >>
+endobj
+4684 0 obj
+<< /D [ 4645 0 R /XYZ 81.077 273.197 null ] >>
+endobj
+4685 0 obj
+<< /D [ 4645 0 R /XYZ 81.077 262.239 null ] >>
+endobj
+4686 0 obj
+<< /D [ 4645 0 R /XYZ 81.077 251.28 null ] >>
+endobj
+4687 0 obj
+<< /D [ 4645 0 R /XYZ 81.077 220.749 null ] >>
+endobj
+4688 0 obj
+<< /D [ 4645 0 R /XYZ 81.077 209.79 null ] >>
+endobj
+4689 0 obj
+<< /D [ 4645 0 R /XYZ 81.077 198.831 null ] >>
+endobj
+4690 0 obj
+<< /D [ 4645 0 R /XYZ 81.077 187.872 null ] >>
+endobj
+4691 0 obj
+<< /D [ 4645 0 R /XYZ 81.077 176.913 null ] >>
+endobj
+4692 0 obj
+<< /D [ 4645 0 R /XYZ 81.077 122.473 null ] >>
+endobj
+4693 0 obj
+<< /D [ 4645 0 R /XYZ 81.077 111.514 null ] >>
+endobj
+4694 0 obj
+<< /D [ 4645 0 R /XYZ 81.077 100.555 null ] >>
+endobj
+4695 0 obj
+<< /D [ 4645 0 R /XYZ 81.077 89.596 null ] >>
+endobj
+4696 0 obj
+<< /D [ 4645 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+4644 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F76 318 0 R /F20 186 0 R /F78 556 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+4699 0 obj
+<< /Filter /FlateDecode /Length 1942 >>
+stream
+xڽZIo6WiAfRȭ- Ŗ䑕%Pc9z[ ?od=OGO_\*6h~uA <!-$j$AXvהcA.?VFFJ` V0L>.啠[n^)/O7b{:"%`(Cwք3n6# ю(]<fyѷOT߃n*7RS^jzEnM˒d*ATx%L.G 6DZ\aD}sQ)=#H=bÈ41<#
+Haψ1"GbDsĸh#]t#|F4=#!b`t=|s /B"RRę{Q3AE} $0FFH#cynH
+caĜψ126>ABYH}}KX Q1:BS-#*lKI.-6JOyST(>]&:KMufW jͱ.GsǫhQ4YUSQ'_G'YEu!<_? tJJ
+c+shdTגьO`dՅ ePCȁ2&Ȑb?O.ϊxQ.mgͼ܉<O3 ,th/
+B!YOֲPABuyq^Idiu\OpDشah'"͓t,M_yN7d}x=w5ۜ-wj G8"_AM
+7򉓁WT"'>=2y|aia0!聓&mf#_b>sDS[8iFBABd`]
+endstream
+endobj
+4698 0 obj
+<< /Type /Page /Contents 4699 0 R /Resources 4697 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 4299 0 R >>
+endobj
+4700 0 obj
+<< /D [ 4698 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+4701 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+4702 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+4703 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+4704 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+4705 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+4706 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+4707 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+4708 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+4709 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+4710 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+4711 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+4712 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+4713 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 637.325 null ] >>
+endobj
+4714 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 587.698 null ] >>
+endobj
+4715 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 576.739 null ] >>
+endobj
+4716 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 565.78 null ] >>
+endobj
+4717 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 554.821 null ] >>
+endobj
+4718 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 543.862 null ] >>
+endobj
+4719 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 532.903 null ] >>
+endobj
+4720 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 521.944 null ] >>
+endobj
+4721 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 510.985 null ] >>
+endobj
+4722 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 500.027 null ] >>
+endobj
+4723 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 489.068 null ] >>
+endobj
+4724 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 478.109 null ] >>
+endobj
+4725 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 467.15 null ] >>
+endobj
+4726 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 456.191 null ] >>
+endobj
+4727 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 445.232 null ] >>
+endobj
+4728 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 434.273 null ] >>
+endobj
+4729 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 394.485 null ] >>
+endobj
+4730 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 383.526 null ] >>
+endobj
+4731 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 372.567 null ] >>
+endobj
+4732 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 361.608 null ] >>
+endobj
+4733 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 350.649 null ] >>
+endobj
+4734 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 339.69 null ] >>
+endobj
+4735 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 299.902 null ] >>
+endobj
+4736 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 288.943 null ] >>
+endobj
+4737 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 277.984 null ] >>
+endobj
+4738 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 267.025 null ] >>
+endobj
+4739 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 256.066 null ] >>
+endobj
+4740 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 245.107 null ] >>
+endobj
+4741 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 234.148 null ] >>
+endobj
+4742 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 223.189 null ] >>
+endobj
+4743 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 212.23 null ] >>
+endobj
+4744 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 201.271 null ] >>
+endobj
+4745 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 190.312 null ] >>
+endobj
+4746 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 179.354 null ] >>
+endobj
+4747 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 168.395 null ] >>
+endobj
+4748 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 157.436 null ] >>
+endobj
+4749 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 146.477 null ] >>
+endobj
+4750 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 135.518 null ] >>
+endobj
+4751 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 124.559 null ] >>
+endobj
+4752 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 113.6 null ] >>
+endobj
+4753 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 102.641 null ] >>
+endobj
+4754 0 obj
+<< /D [ 4698 0 R /XYZ 81.077 91.682 null ] >>
+endobj
+69 0 obj
+<< /D [ 4698 0 R /XYZ 79.37 70.866 null ] >>
+endobj
+4697 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+4757 0 obj
+<< /Filter /FlateDecode /Length 4021 >>
+stream
+x[m_! _thnN:H?0` K{:Er݋ K7 y\60c^_߽3}63igVFY>{w7۫{VƖ(_ǕZZ5_mW_z/~oW۴o^s?7¨#Xgc߂T|vn_] 7Oݢ[~9Q=WY hך&ۣ_m߶wݾkc6}Q(,Շb>y؉^Nrڀ{u6g׺=8}vmsupۢov~ۯ͇ 2ݯ4,ѵ9vk!мoq[ $V/L4bH}9v>&菍 xhV8J<qoJ+)#x`O3sHӳًYSw|vih%|=Si}M}y7q-k ky 6I[ZyTEPx/TUޟԋkefP#ND0:z|8Yf8?;>pz=)yO 9h)34GX>иO\~M 5FFd;(7^xR-T;hݥ[cTOZ(Peڸ9xH's~SO ;IU.Σ<yX<9lVXS 4K&,Ac,D FLEֵɂcHqkg`@A9=\Kv6$_G̀SoxMff@Hk4P;cL0H;^巵u'a߫gP;vҼΪ0hCi cI87tR͚oG\捕Lذf`n R @H@ug Zg` sEE]J͡bs,Est4,0!^Fo,3 H[2dX!PA PR,a@3g}o4  lN"0Ƅ"(azc"dR\q|e
+%"Dh +BбҬ8b`w!30
+" a Q9,8'VY++K()taMe!e#UZa#!,)sJdl, 6<PM;@YhHE T=V|c:b`:%L(
+ Q^z|:E# Y 2wF>fo4  lA)!r 9Erz\L8T:Q{AJ<bDB]{7XXQ0lZ
+N LhTwȤa.fT$"D h+6_^,bp)!ꅻBZ>m
++OpN8PpfeFF:2|Exl3QMޔ=lPx̓e#uyqxr: :OO+cr}7ZSY[6^v wބg/7ٻpRAȗX'6~xk7+d3o^ۣxH5~m OԃLnEI.ۅx}/wɯ6^:";v{hWBgdTڙ]ѿ\,&
+'Q!)R!EuM8|&T;;mG1q4 \ŧilWZ뇖;U]rpo'Fkӈ֮DSzH iM:SaE~G#7l439qoJ_%HX0R6,X Me;&
+xXw%lf8y-C>)BX>܇nUˤ@jnWi@3w,ܤOoioS1sX)#̏!&<\ !P΅<P#$|0UcOoU/O~z9bbԡVVύe=}yO_ۺɢ:@ Ý!'C-!r/JGꝑS'\XsTo:?7}z5:
+ *aNyH">31Gs{Cfޑbҁ:uI4ש(|x6/e*d:>:-N N88%/̡p|7IǗ:*"T<uap8ȳn%
+Y.HD1U6O&J12|e[{|xHeRm}<ޜT
+ODv9 Jo=sT
+wޠ ˵ѫJCzSb&
+B"@X/UÙ;sj nD2r Jڿ%X;V=O'kq9 3)P=;8szʓ|lnrnR 2tlw2/<]*@cm/Q\
+endstream
+endobj
+4756 0 obj
+<< /Type /Page /Contents 4757 0 R /Resources 4755 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 4783 0 R >>
+endobj
+4758 0 obj
+<< /D [ 4756 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+4759 0 obj
+<< /D [ 4756 0 R /XYZ 81.077 427.447 null ] >>
+endobj
+4760 0 obj
+<< /D [ 4756 0 R /XYZ 81.077 416.488 null ] >>
+endobj
+4761 0 obj
+<< /D [ 4756 0 R /XYZ 81.077 385.897 null ] >>
+endobj
+4762 0 obj
+<< /D [ 4756 0 R /XYZ 81.077 357.2 null ] >>
+endobj
+4763 0 obj
+<< /D [ 4756 0 R /XYZ 81.077 346.241 null ] >>
+endobj
+4764 0 obj
+<< /D [ 4756 0 R /XYZ 81.077 335.282 null ] >>
+endobj
+4765 0 obj
+<< /D [ 4756 0 R /XYZ 81.077 324.324 null ] >>
+endobj
+4766 0 obj
+<< /D [ 4756 0 R /XYZ 81.077 271.717 null ] >>
+endobj
+4767 0 obj
+<< /D [ 4756 0 R /XYZ 81.077 260.758 null ] >>
+endobj
+4768 0 obj
+<< /D [ 4756 0 R /XYZ 81.077 249.799 null ] >>
+endobj
+4769 0 obj
+<< /D [ 4756 0 R /XYZ 81.077 238.84 null ] >>
+endobj
+4770 0 obj
+<< /D [ 4756 0 R /XYZ 81.077 227.881 null ] >>
+endobj
+4771 0 obj
+<< /D [ 4756 0 R /XYZ 81.077 199.185 null ] >>
+endobj
+4772 0 obj
+<< /D [ 4756 0 R /XYZ 81.077 188.226 null ] >>
+endobj
+4773 0 obj
+<< /D [ 4756 0 R /XYZ 81.077 177.267 null ] >>
+endobj
+4774 0 obj
+<< /D [ 4756 0 R /XYZ 81.077 166.308 null ] >>
+endobj
+4775 0 obj
+<< /D [ 4756 0 R /XYZ 81.077 155.349 null ] >>
+endobj
+4776 0 obj
+<< /D [ 4756 0 R /XYZ 81.077 144.39 null ] >>
+endobj
+4777 0 obj
+<< /D [ 4756 0 R /XYZ 81.077 133.431 null ] >>
+endobj
+4778 0 obj
+<< /D [ 4756 0 R /XYZ 81.077 122.473 null ] >>
+endobj
+4779 0 obj
+<< /D [ 4756 0 R /XYZ 81.077 111.514 null ] >>
+endobj
+4780 0 obj
+<< /D [ 4756 0 R /XYZ 81.077 100.555 null ] >>
+endobj
+4781 0 obj
+<< /D [ 4756 0 R /XYZ 81.077 89.596 null ] >>
+endobj
+4782 0 obj
+<< /D [ 4756 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+4755 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F72 187 0 R /F19 184 0 R /F76 318 0 R /F32 1809 0 R /F26 662 0 R /F23 660 0 R /F20 186 0 R /F79 668 0 R /F73 189 0 R /F69 183 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+4786 0 obj
+<< /Filter /FlateDecode /Length 1964 >>
+stream
+xڽY[۸~_ak; hhۇ<Ma(&-f"E 6yh9/sDtDrի7F,$,|bЉ.jYl>.Wlz%` %Kf(aO̷13;&7x}ۮW׊+`5<Z4^;Q&El-yT@wa34fsavևMwjڍRfebq랣[A| sTu-q{.G;[Zva +}?ȑJAMBEm%Je+M:C\9tm3=H GZs"EkaqKß|-K2+/<($TZQyEJB)/xvM:mgs ZMEPcLﯷkӊe:BwÖ~+;_`c=?mfwPݝh>}s܏۳>n<X[[l"6-eEeȻʱh0{)^
+YaŝOp|g]K=JYYBeKz
+4B.!ۢD@
+AhR>>~|I&A%|(\@f"%.}(|J\([c/bH"^ELXKJ x'\*㚣QhMxZΆ_P):G__!!IX5( :="hJ$hLpN M"*wXOn֌GpWm⯛7ؽMp C#j㜣g2Xcj#/&c[SyWQ;@u<uKmps_m43;yA1D &]IjřLh5Cz,,)؅:Zlۀ,mwM.T'ǞX9[F LBm]7g)ބ0S6T!ו_7 s>PtLMH՞`Yw?K@=;΍,?ﻘxߺd`2̥[l UM?@Bk M;YCsnL~G$,-%-
+}34uwu"R*v3=29hrH"_l;ʥ3+˗o]~SGy^كI}]{llZal~q M>wMF3,ahLﻂ8T/:M4rt
+Bк[hLٴ4
+4*FX5^-6ԢXJ)Pԧ>$חh9Z]LOit7*GL ۑ89;]јD[9}Ec7z<jiӝn
+x6cPjF8Qz~-*ў-#Zv
+
+B. 3l^R\*93Z
+?Wt
+endstream
+endobj
+4785 0 obj
+<< /Type /Page /Contents 4786 0 R /Resources 4784 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 4783 0 R >>
+endobj
+4787 0 obj
+<< /D [ 4785 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+4788 0 obj
+<< /D [ 4785 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+4789 0 obj
+<< /D [ 4785 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+4790 0 obj
+<< /D [ 4785 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+4791 0 obj
+<< /D [ 4785 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+4792 0 obj
+<< /D [ 4785 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+4793 0 obj
+<< /D [ 4785 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+4794 0 obj
+<< /D [ 4785 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+4795 0 obj
+<< /D [ 4785 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+4796 0 obj
+<< /D [ 4785 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+4797 0 obj
+<< /D [ 4785 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+4798 0 obj
+<< /D [ 4785 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+4799 0 obj
+<< /D [ 4785 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+4800 0 obj
+<< /D [ 4785 0 R /XYZ 81.077 637.325 null ] >>
+endobj
+4801 0 obj
+<< /D [ 4785 0 R /XYZ 81.077 608.433 null ] >>
+endobj
+4802 0 obj
+<< /D [ 4785 0 R /XYZ 81.077 579.542 null ] >>
+endobj
+4803 0 obj
+<< /D [ 4785 0 R /XYZ 81.077 568.583 null ] >>
+endobj
+4804 0 obj
+<< /D [ 4785 0 R /XYZ 81.077 557.624 null ] >>
+endobj
+4805 0 obj
+<< /D [ 4785 0 R /XYZ 81.077 546.665 null ] >>
+endobj
+4806 0 obj
+<< /D [ 4785 0 R /XYZ 81.077 505.818 null ] >>
+endobj
+4807 0 obj
+<< /D [ 4785 0 R /XYZ 81.077 494.859 null ] >>
+endobj
+4808 0 obj
+<< /D [ 4785 0 R /XYZ 81.077 483.9 null ] >>
+endobj
+4809 0 obj
+<< /D [ 4785 0 R /XYZ 81.077 472.941 null ] >>
+endobj
+4810 0 obj
+<< /D [ 4785 0 R /XYZ 81.077 461.982 null ] >>
+endobj
+4811 0 obj
+<< /D [ 4785 0 R /XYZ 81.077 451.023 null ] >>
+endobj
+4812 0 obj
+<< /D [ 4785 0 R /XYZ 81.077 440.065 null ] >>
+endobj
+4813 0 obj
+<< /D [ 4785 0 R /XYZ 81.077 429.106 null ] >>
+endobj
+4814 0 obj
+<< /D [ 4785 0 R /XYZ 81.077 418.147 null ] >>
+endobj
+4815 0 obj
+<< /D [ 4785 0 R /XYZ 81.077 407.188 null ] >>
+endobj
+4816 0 obj
+<< /D [ 4785 0 R /XYZ 81.077 396.229 null ] >>
+endobj
+4817 0 obj
+<< /D [ 4785 0 R /XYZ 81.077 385.27 null ] >>
+endobj
+4818 0 obj
+<< /D [ 4785 0 R /XYZ 81.077 374.311 null ] >>
+endobj
+4819 0 obj
+<< /D [ 4785 0 R /XYZ 81.077 363.352 null ] >>
+endobj
+4820 0 obj
+<< /D [ 4785 0 R /XYZ 81.077 352.393 null ] >>
+endobj
+4821 0 obj
+<< /D [ 4785 0 R /XYZ 81.077 341.434 null ] >>
+endobj
+4822 0 obj
+<< /D [ 4785 0 R /XYZ 81.077 330.476 null ] >>
+endobj
+4823 0 obj
+<< /D [ 4785 0 R /XYZ 81.077 319.517 null ] >>
+endobj
+4824 0 obj
+<< /D [ 4785 0 R /XYZ 81.077 308.558 null ] >>
+endobj
+4825 0 obj
+<< /D [ 4785 0 R /XYZ 81.077 297.599 null ] >>
+endobj
+4826 0 obj
+<< /D [ 4785 0 R /XYZ 81.077 286.64 null ] >>
+endobj
+4827 0 obj
+<< /D [ 4785 0 R /XYZ 81.077 209.928 null ] >>
+endobj
+4828 0 obj
+<< /D [ 4785 0 R /XYZ 81.077 198.969 null ] >>
+endobj
+4829 0 obj
+<< /D [ 4785 0 R /XYZ 81.077 188.01 null ] >>
+endobj
+4830 0 obj
+<< /D [ 4785 0 R /XYZ 81.077 177.051 null ] >>
+endobj
+4831 0 obj
+<< /D [ 4785 0 R /XYZ 81.077 166.092 null ] >>
+endobj
+4832 0 obj
+<< /D [ 4785 0 R /XYZ 81.077 155.133 null ] >>
+endobj
+4833 0 obj
+<< /D [ 4785 0 R /XYZ 81.077 144.174 null ] >>
+endobj
+4834 0 obj
+<< /D [ 4785 0 R /XYZ 81.077 133.215 null ] >>
+endobj
+4835 0 obj
+<< /D [ 4785 0 R /XYZ 81.077 122.256 null ] >>
+endobj
+4836 0 obj
+<< /D [ 4785 0 R /XYZ 81.077 111.297 null ] >>
+endobj
+4837 0 obj
+<< /D [ 4785 0 R /XYZ 81.077 100.339 null ] >>
+endobj
+4838 0 obj
+<< /D [ 4785 0 R /XYZ 81.077 89.38 null ] >>
+endobj
+4784 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F76 318 0 R /F20 186 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+4841 0 obj
+<< /Filter /FlateDecode /Length 1424 >>
+stream
+xڽZMo#7 W%9+4EPYr7vv'g .WHN6N\<<")juNɇK
+Ml6 ZZ$(0mú1VM)
+`]QIx{b?V!d Ehw4tr%%8jfч8.T)P^%Q-]iL:i)-rrObH$űM!PR7b.dh,Q29iQ}:x)[FP:dels]@lJ`
+IdsyK[AR52˨h^5$eQZ$ldst3#WIɲC-O]ܼvdb4YR($El9X<}V4Ix܍d
+aOeH+o =.
+
+0pq>_H
+endstream
+endobj
+4840 0 obj
+<< /Type /Page /Contents 4841 0 R /Resources 4839 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 4783 0 R >>
+endobj
+4842 0 obj
+<< /D [ 4840 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+4843 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 742.929 null ] >>
+endobj
+4844 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 731.97 null ] >>
+endobj
+4845 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 721.011 null ] >>
+endobj
+4846 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 710.052 null ] >>
+endobj
+4847 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 699.093 null ] >>
+endobj
+4848 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 688.134 null ] >>
+endobj
+4849 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 677.175 null ] >>
+endobj
+4850 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 666.217 null ] >>
+endobj
+4851 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 655.258 null ] >>
+endobj
+4852 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 644.299 null ] >>
+endobj
+4853 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 633.34 null ] >>
+endobj
+4854 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 622.381 null ] >>
+endobj
+4855 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 611.422 null ] >>
+endobj
+4856 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 600.463 null ] >>
+endobj
+4857 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 589.504 null ] >>
+endobj
+4858 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 578.545 null ] >>
+endobj
+4859 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 567.586 null ] >>
+endobj
+4860 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 556.627 null ] >>
+endobj
+4861 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 545.669 null ] >>
+endobj
+4862 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 534.71 null ] >>
+endobj
+4863 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 523.751 null ] >>
+endobj
+4864 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 512.792 null ] >>
+endobj
+4865 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 501.833 null ] >>
+endobj
+4866 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 490.874 null ] >>
+endobj
+4867 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 479.915 null ] >>
+endobj
+4868 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 468.956 null ] >>
+endobj
+4869 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 457.997 null ] >>
+endobj
+4870 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 447.038 null ] >>
+endobj
+4871 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 436.08 null ] >>
+endobj
+4872 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 425.121 null ] >>
+endobj
+4873 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 414.162 null ] >>
+endobj
+4874 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 403.203 null ] >>
+endobj
+4875 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 392.244 null ] >>
+endobj
+4876 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 381.285 null ] >>
+endobj
+4877 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 370.326 null ] >>
+endobj
+4878 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 359.367 null ] >>
+endobj
+4879 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 348.408 null ] >>
+endobj
+4880 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 337.449 null ] >>
+endobj
+4881 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 326.49 null ] >>
+endobj
+4882 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 315.532 null ] >>
+endobj
+4883 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 304.573 null ] >>
+endobj
+4884 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 293.614 null ] >>
+endobj
+4885 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 282.655 null ] >>
+endobj
+4886 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 271.696 null ] >>
+endobj
+4887 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 260.737 null ] >>
+endobj
+4888 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 249.778 null ] >>
+endobj
+4889 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 238.819 null ] >>
+endobj
+4890 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 227.86 null ] >>
+endobj
+4891 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 216.901 null ] >>
+endobj
+4892 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 205.943 null ] >>
+endobj
+4893 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 194.984 null ] >>
+endobj
+4894 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 184.025 null ] >>
+endobj
+4895 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 173.066 null ] >>
+endobj
+4896 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 162.107 null ] >>
+endobj
+4897 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 151.148 null ] >>
+endobj
+4898 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 140.189 null ] >>
+endobj
+4899 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 129.23 null ] >>
+endobj
+4900 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 118.271 null ] >>
+endobj
+4901 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 107.312 null ] >>
+endobj
+4902 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 96.354 null ] >>
+endobj
+4903 0 obj
+<< /D [ 4840 0 R /XYZ 81.077 85.395 null ] >>
+endobj
+4839 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F20 186 0 R /F73 189 0 R /F69 183 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+4906 0 obj
+<< /Filter /FlateDecode /Length 2942 >>
+stream
+xڽZ_oܸϧ0b)H\@]0ڇXȻd-I؎ҊLRp8PvO}8$Mg׷o g,D3sf4#T뇳/$?zQg Iɐ3IDԟE.wM~yu~]ˢ,",?Cu,bɨ(a2dHCѼEJ=o{H:? OKd/<IԒ!:6& ySM=o}o yTAMۜ[)R;?,ĤD
+mR
+CCwRM(UY5e`IB8Ħ`q/ۼ.?%p*:HJIHw@,'/=gÞCBޕL
+)S1; /j$u3钸yT }/ИȐt:AZI+n疂׃+ n@}A{ 4
+AD`SdЩX%Zü.6gVR!zCR r{#~WR[ ʆ=~ .Fj#aAkDaLn|H X,$F[52\n
+}Y)`jKhY#<c$
+: =M*A5⦪ >ܭpTב> #Ѳxf巼^ERsi`Z!Ns5q@=c
+̔G螲^ C5d Ds>% t4 ^@.AW7~\8
+s z,D˫q=v-$I :tyPR % #4H:V7?hq
+xʐd~Xň4n["Z:w-=b_ЬEx k_bv*cnmQ>Am@رk0>ryF@^&28wFKCi.G [Ez:?D鱐fBMBS1b#ٰ(%؀oRب+ ёngGe KGͦj팝*:}8fWY䰰29l$btB EӁ:~wN] p8󷢼d 1Ԑ֧RbS.{
+SG/4}ȸ3N5D>1*
+O,ʏaA
+endstream
+endobj
+4905 0 obj
+<< /Type /Page /Contents 4906 0 R /Resources 4904 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 4783 0 R >>
+endobj
+4907 0 obj
+<< /D [ 4905 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+4908 0 obj
+<< /D [ 4905 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+4909 0 obj
+<< /D [ 4905 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+4910 0 obj
+<< /D [ 4905 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+4911 0 obj
+<< /D [ 4905 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+4912 0 obj
+<< /D [ 4905 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+4913 0 obj
+<< /D [ 4905 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+4914 0 obj
+<< /D [ 4905 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+4915 0 obj
+<< /D [ 4905 0 R /XYZ 81.077 662.231 null ] >>
+endobj
+4916 0 obj
+<< /D [ 4905 0 R /XYZ 81.077 651.273 null ] >>
+endobj
+4917 0 obj
+<< /D [ 4905 0 R /XYZ 81.077 640.314 null ] >>
+endobj
+4918 0 obj
+<< /D [ 4905 0 R /XYZ 81.077 599.467 null ] >>
+endobj
+4919 0 obj
+<< /D [ 4905 0 R /XYZ 81.077 588.508 null ] >>
+endobj
+4920 0 obj
+<< /D [ 4905 0 R /XYZ 81.077 577.549 null ] >>
+endobj
+4921 0 obj
+<< /D [ 4905 0 R /XYZ 81.077 566.59 null ] >>
+endobj
+4922 0 obj
+<< /D [ 4905 0 R /XYZ 81.077 555.631 null ] >>
+endobj
+4923 0 obj
+<< /D [ 4905 0 R /XYZ 81.077 544.672 null ] >>
+endobj
+4924 0 obj
+<< /D [ 4905 0 R /XYZ 81.077 450.027 null ] >>
+endobj
+4925 0 obj
+<< /D [ 4905 0 R /XYZ 81.077 439.068 null ] >>
+endobj
+4926 0 obj
+<< /D [ 4905 0 R /XYZ 81.077 428.109 null ] >>
+endobj
+4927 0 obj
+<< /D [ 4905 0 R /XYZ 81.077 417.151 null ] >>
+endobj
+4928 0 obj
+<< /D [ 4905 0 R /XYZ 81.077 406.192 null ] >>
+endobj
+4929 0 obj
+<< /D [ 4905 0 R /XYZ 81.077 395.233 null ] >>
+endobj
+4930 0 obj
+<< /D [ 4905 0 R /XYZ 81.077 384.274 null ] >>
+endobj
+4931 0 obj
+<< /D [ 4905 0 R /XYZ 81.077 313.539 null ] >>
+endobj
+4932 0 obj
+<< /D [ 4905 0 R /XYZ 81.077 302.58 null ] >>
+endobj
+4933 0 obj
+<< /D [ 4905 0 R /XYZ 81.077 291.621 null ] >>
+endobj
+4934 0 obj
+<< /D [ 4905 0 R /XYZ 81.077 280.662 null ] >>
+endobj
+4935 0 obj
+<< /D [ 4905 0 R /XYZ 81.077 269.703 null ] >>
+endobj
+4936 0 obj
+<< /D [ 4905 0 R /XYZ 81.077 258.745 null ] >>
+endobj
+4937 0 obj
+<< /D [ 4905 0 R /XYZ 81.077 217.898 null ] >>
+endobj
+4938 0 obj
+<< /D [ 4905 0 R /XYZ 81.077 206.939 null ] >>
+endobj
+4939 0 obj
+<< /D [ 4905 0 R /XYZ 81.077 195.98 null ] >>
+endobj
+4940 0 obj
+<< /D [ 4905 0 R /XYZ 81.077 137.2 null ] >>
+endobj
+4941 0 obj
+<< /D [ 4905 0 R /XYZ 81.077 126.241 null ] >>
+endobj
+4942 0 obj
+<< /D [ 4905 0 R /XYZ 81.077 115.283 null ] >>
+endobj
+4943 0 obj
+<< /D [ 4905 0 R /XYZ 81.077 104.324 null ] >>
+endobj
+4944 0 obj
+<< /D [ 4905 0 R /XYZ 81.077 93.365 null ] >>
+endobj
+4945 0 obj
+<< /D [ 4905 0 R /XYZ 81.077 82.406 null ] >>
+endobj
+4904 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F76 318 0 R /F26 662 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+4948 0 obj
+<< /Filter /FlateDecode /Length 1406 >>
+stream
+xڭZMo7W,KrS('B0䕳R$v`w5"Y⵴z# WtBʭ_/~^|XY" 
+蕇PJ{ք]}JcK_iWl:]ԃy{oM!M V~QwD?Ƥ" As>yK=W=D30fF[SZccW-j~atu5ZGӦW{h;Q4)LެeۧAbyX{*p" Jg}*)z97<Jt@rFE Oۧ^:{,(9GܴBgw6H2sSiKNI˔]Ι:5T$g QcCT.qHF |lG1;Yz3bh~@eH-;: sBZ>״rթ[
+n93IEw S+G'QtnVF+<KZfQ192'։>u7\=i:hSN6xPkJhy\P!! 9.&M?*,UEkDZhqTX*uJ<6W>[Ώ KX`VF:GWH#R10iY(∰T<(Sb4Y̦vmӠ*xӐ-*hxlY(л-4QDLj5wM@˅Z #+ttvʖnvŞTQ#,@Ģ@:uϲ~37}:"zX029Z@{/RLQrء#u> -:C%8QuHl}EW傐>Adܫz܁b˄(0G-
+`@;R!s--5k3r NŃ
+p1my"V m$ZZ,6%ԢS{N7뷤ԃMAF=GÅU='M[gf\m jZ{RyI/
+7ʼ@fb2G+:/;OeVl<oإ˽5۠~&*>d:hl༆^K}~SgǙ R~>s.qr7cM,X/R=r(g miPFo.X3ifƹ<>*3q"ZN_ /|
+endstream
+endobj
+4947 0 obj
+<< /Type /Page /Contents 4948 0 R /Resources 4946 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 4783 0 R >>
+endobj
+4949 0 obj
+<< /D [ 4947 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+4950 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+4951 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+4952 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+4953 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+4954 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+4955 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+4956 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+4957 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+4958 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+4959 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+4960 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+4961 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+4962 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 637.325 null ] >>
+endobj
+4963 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 626.366 null ] >>
+endobj
+4964 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 615.407 null ] >>
+endobj
+4965 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 604.448 null ] >>
+endobj
+4966 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 593.489 null ] >>
+endobj
+4967 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 568.583 null ] >>
+endobj
+4968 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 557.624 null ] >>
+endobj
+4969 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 546.665 null ] >>
+endobj
+4970 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 535.706 null ] >>
+endobj
+4971 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 524.747 null ] >>
+endobj
+4972 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 513.788 null ] >>
+endobj
+4973 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 502.829 null ] >>
+endobj
+4974 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 491.87 null ] >>
+endobj
+4975 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 480.911 null ] >>
+endobj
+4976 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 469.953 null ] >>
+endobj
+4977 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 458.994 null ] >>
+endobj
+4978 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 448.035 null ] >>
+endobj
+4979 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 437.076 null ] >>
+endobj
+4980 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 426.117 null ] >>
+endobj
+4981 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 415.158 null ] >>
+endobj
+4982 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 404.199 null ] >>
+endobj
+4983 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 393.24 null ] >>
+endobj
+4984 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 382.281 null ] >>
+endobj
+4985 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 371.322 null ] >>
+endobj
+4986 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 360.363 null ] >>
+endobj
+4987 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 349.405 null ] >>
+endobj
+4988 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 338.446 null ] >>
+endobj
+4989 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 327.487 null ] >>
+endobj
+4990 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 316.528 null ] >>
+endobj
+4991 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 305.569 null ] >>
+endobj
+4992 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 294.61 null ] >>
+endobj
+4993 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 283.651 null ] >>
+endobj
+4994 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 272.692 null ] >>
+endobj
+4995 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 261.733 null ] >>
+endobj
+4996 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 250.774 null ] >>
+endobj
+4997 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 239.816 null ] >>
+endobj
+4998 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 228.857 null ] >>
+endobj
+4999 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 212.916 null ] >>
+endobj
+5000 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 201.957 null ] >>
+endobj
+5001 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 190.999 null ] >>
+endobj
+5002 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 180.04 null ] >>
+endobj
+5003 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 169.081 null ] >>
+endobj
+5004 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 158.122 null ] >>
+endobj
+5005 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 147.163 null ] >>
+endobj
+5006 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 136.204 null ] >>
+endobj
+5007 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 125.245 null ] >>
+endobj
+5008 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 114.286 null ] >>
+endobj
+5009 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 103.327 null ] >>
+endobj
+5010 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 92.368 null ] >>
+endobj
+5011 0 obj
+<< /D [ 4947 0 R /XYZ 81.077 81.41 null ] >>
+endobj
+4946 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+5014 0 obj
+<< /Filter /FlateDecode /Length 2115 >>
+stream
+xZKo8W苍0|? 4,ibbӉm#yL}IQH' 0H"UWUtv'_̾_8dBb} 8AGb"8b;f[uqD9!Q(I @qkb4F/(
+<;'L=4l\[{Ro6{nWm۲G}' ebQ| XNW űWMdc$8 *FCm;弼.sY׳./Ǭ(7C6zR
+H.4KBs\k#Vmm`ۮ*v^:<q!rnkFeFϯ<Wֺǥ
+,$3I4g{DsK,PYZ 6ޙ)JsCEݴY]=dhnmmmk` K ::d"S3X4|HFP@ٸ<)?нw/Ee}[Y?}B/#qLDBt;0 њAD.]U' C`b#C
+L?`sr׋4BtΛA
+pGi;"B 1i
+сXIMD0<T 0fF$y
+ٝE}LK4՟T6ɪ22KJB"QUARʭ(ёx d09+BR|s0m{'ZS}eMnKǤ4CznB Ę
+!:yB@H"1Tl$w/,Rs s4m`re_z/^VCc^,6=ת^}juZ-ô|;Ý~ert3k#U@A{#;\M+`P:m]p)5FM\(()
+H@јEoܗELt.& kY޻+n9g}QWeNJr Vuk7ve5o\7s7>֘lom_ۨyI<SsEW)Vb 0tV;:9ݏSɄ)hiZ
+ٍ-;dL@!TIUe;%q _aYN4qB]ռ\\ϩ2B(eMGZ +v弻1>UH'=G(_9g&IG0-Ev\mnC)\94SewӞ_òRNXYy˅kra#|`1i
+vbn8ç^>`0_ۗR+<wpEX\NkG
+6n`kNEn[/HB.^SS$c슝r]osN}E1Pw&cfm#'Iz 5C9(i_8l$ Ӿ<2#X13 diW6%H맦>(F xث#9ՒI>>nk틕>#k7/^O')w'Ri2p)S2uZ_]1*Y SHTڝVN:$?ϩ
+endstream
+endobj
+5013 0 obj
+<< /Type /Page /Contents 5014 0 R /Resources 5012 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 4783 0 R >>
+endobj
+5015 0 obj
+<< /D [ 5013 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+5016 0 obj
+<< /D [ 5013 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+5017 0 obj
+<< /D [ 5013 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+5018 0 obj
+<< /D [ 5013 0 R /XYZ 81.077 728.598 null ] >>
+endobj
+5019 0 obj
+<< /D [ 5013 0 R /XYZ 81.077 717.639 null ] >>
+endobj
+5020 0 obj
+<< /D [ 5013 0 R /XYZ 81.077 706.68 null ] >>
+endobj
+5021 0 obj
+<< /D [ 5013 0 R /XYZ 81.077 695.721 null ] >>
+endobj
+5022 0 obj
+<< /D [ 5013 0 R /XYZ 81.077 684.762 null ] >>
+endobj
+5023 0 obj
+<< /D [ 5013 0 R /XYZ 81.077 673.803 null ] >>
+endobj
+5024 0 obj
+<< /D [ 5013 0 R /XYZ 81.077 662.844 null ] >>
+endobj
+5025 0 obj
+<< /D [ 5013 0 R /XYZ 81.077 647.977 null ] >>
+endobj
+5026 0 obj
+<< /D [ 5013 0 R /XYZ 81.077 637.018 null ] >>
+endobj
+5027 0 obj
+<< /D [ 5013 0 R /XYZ 81.077 626.059 null ] >>
+endobj
+5028 0 obj
+<< /D [ 5013 0 R /XYZ 81.077 615.1 null ] >>
+endobj
+5029 0 obj
+<< /D [ 5013 0 R /XYZ 81.077 604.141 null ] >>
+endobj
+5030 0 obj
+<< /D [ 5013 0 R /XYZ 81.077 593.183 null ] >>
+endobj
+5031 0 obj
+<< /D [ 5013 0 R /XYZ 81.077 582.224 null ] >>
+endobj
+5032 0 obj
+<< /D [ 5013 0 R /XYZ 81.077 571.265 null ] >>
+endobj
+5033 0 obj
+<< /D [ 5013 0 R /XYZ 81.077 560.306 null ] >>
+endobj
+5034 0 obj
+<< /D [ 5013 0 R /XYZ 81.077 549.347 null ] >>
+endobj
+5035 0 obj
+<< /D [ 5013 0 R /XYZ 81.077 538.388 null ] >>
+endobj
+5036 0 obj
+<< /D [ 5013 0 R /XYZ 81.077 527.429 null ] >>
+endobj
+5037 0 obj
+<< /D [ 5013 0 R /XYZ 81.077 516.47 null ] >>
+endobj
+5038 0 obj
+<< /D [ 5013 0 R /XYZ 81.077 505.511 null ] >>
+endobj
+5039 0 obj
+<< /D [ 5013 0 R /XYZ 81.077 494.552 null ] >>
+endobj
+5040 0 obj
+<< /D [ 5013 0 R /XYZ 81.077 465.277 null ] >>
+endobj
+5041 0 obj
+<< /D [ 5013 0 R /XYZ 81.077 454.319 null ] >>
+endobj
+5042 0 obj
+<< /D [ 5013 0 R /XYZ 81.077 443.36 null ] >>
+endobj
+5043 0 obj
+<< /D [ 5013 0 R /XYZ 81.077 432.401 null ] >>
+endobj
+5044 0 obj
+<< /D [ 5013 0 R /XYZ 81.077 421.442 null ] >>
+endobj
+5045 0 obj
+<< /D [ 5013 0 R /XYZ 81.077 410.483 null ] >>
+endobj
+5046 0 obj
+<< /D [ 5013 0 R /XYZ 81.077 399.524 null ] >>
+endobj
+5047 0 obj
+<< /D [ 5013 0 R /XYZ 81.077 344.486 null ] >>
+endobj
+5048 0 obj
+<< /D [ 5013 0 R /XYZ 81.077 333.527 null ] >>
+endobj
+5049 0 obj
+<< /D [ 5013 0 R /XYZ 81.077 322.568 null ] >>
+endobj
+5050 0 obj
+<< /D [ 5013 0 R /XYZ 81.077 311.61 null ] >>
+endobj
+5051 0 obj
+<< /D [ 5013 0 R /XYZ 81.077 300.651 null ] >>
+endobj
+5052 0 obj
+<< /D [ 5013 0 R /XYZ 81.077 289.692 null ] >>
+endobj
+5053 0 obj
+<< /D [ 5013 0 R /XYZ 81.077 249.918 null ] >>
+endobj
+5054 0 obj
+<< /D [ 5013 0 R /XYZ 81.077 238.959 null ] >>
+endobj
+5055 0 obj
+<< /D [ 5013 0 R /XYZ 81.077 228 null ] >>
+endobj
+5056 0 obj
+<< /D [ 5013 0 R /XYZ 81.077 217.041 null ] >>
+endobj
+5057 0 obj
+<< /D [ 5013 0 R /XYZ 81.077 206.082 null ] >>
+endobj
+5058 0 obj
+<< /D [ 5013 0 R /XYZ 81.077 166.308 null ] >>
+endobj
+5059 0 obj
+<< /D [ 5013 0 R /XYZ 81.077 155.349 null ] >>
+endobj
+5060 0 obj
+<< /D [ 5013 0 R /XYZ 81.077 144.39 null ] >>
+endobj
+5061 0 obj
+<< /D [ 5013 0 R /XYZ 81.077 133.431 null ] >>
+endobj
+5062 0 obj
+<< /D [ 5013 0 R /XYZ 81.077 122.473 null ] >>
+endobj
+5063 0 obj
+<< /D [ 5013 0 R /XYZ 81.077 111.514 null ] >>
+endobj
+5064 0 obj
+<< /D [ 5013 0 R /XYZ 81.077 100.555 null ] >>
+endobj
+5065 0 obj
+<< /D [ 5013 0 R /XYZ 81.077 89.596 null ] >>
+endobj
+5066 0 obj
+<< /D [ 5013 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+5012 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+5069 0 obj
+<< /Filter /FlateDecode /Length 2005 >>
+stream
+xڭY[o6~0Ї9@.`ú %AP$9Q!K$ԅTt1>;G|‹^
+^}GE"I%_ܭ_/" $K,^=W׌eZo6I]s;)>'\ ʘ;{M.)C5>#vOv 8lǤ5t׺.}Q=[f[iљa+ȰKG &{3(33N`'1HʸQEDɥ\lo*f ť\LͫKB2$}ruQ]Ib3~)R$ 'pt)RqחpDpgB )B>K7O^k\_]JOIjė6̽{>LWHe*;洁G"r>r3ջE!aFI4vIF,tw`;m*ۦ˳<%j,"B y eTk$M1
+X䢕GTzu{nrөtW08(È}$
+1g.!?9>j>>ɊBNGR)ݓ!#l.M7kuYx*}fMPby}]e3F+ͻ8?2}XiCE#p.#*zsֶџd7(&kuSoJf9j˓3ra,Gc_ѧԱRG!<yR/;h
+OcSe_ܫJ[fT$'@?n)5 Eʐ;ɰ!t&4 pA=O\)rUΕhgI%!<+l>%- !Sѣ/lw8@d*zz_ݷzjH$UID0b)_dU2 ׭FC{6O 4 B2P7DP̝rMv'1_?c: V`؝mwy֧[\X4ɣ%&/,v?dpE>m9HfcFC'i^JyͼM
+}2p}H M/jZdvVݫV
+endstream
+endobj
+5068 0 obj
+<< /Type /Page /Contents 5069 0 R /Resources 5067 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 4783 0 R >>
+endobj
+5070 0 obj
+<< /D [ 5068 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+5071 0 obj
+<< /D [ 5068 0 R /XYZ 81.077 615.407 null ] >>
+endobj
+5072 0 obj
+<< /D [ 5068 0 R /XYZ 81.077 604.448 null ] >>
+endobj
+5073 0 obj
+<< /D [ 5068 0 R /XYZ 81.077 593.489 null ] >>
+endobj
+5074 0 obj
+<< /D [ 5068 0 R /XYZ 81.077 582.53 null ] >>
+endobj
+5075 0 obj
+<< /D [ 5068 0 R /XYZ 81.077 571.571 null ] >>
+endobj
+5076 0 obj
+<< /D [ 5068 0 R /XYZ 81.077 560.613 null ] >>
+endobj
+5077 0 obj
+<< /D [ 5068 0 R /XYZ 81.077 549.654 null ] >>
+endobj
+5078 0 obj
+<< /D [ 5068 0 R /XYZ 81.077 538.695 null ] >>
+endobj
+5079 0 obj
+<< /D [ 5068 0 R /XYZ 81.077 527.736 null ] >>
+endobj
+5080 0 obj
+<< /D [ 5068 0 R /XYZ 81.077 516.777 null ] >>
+endobj
+5081 0 obj
+<< /D [ 5068 0 R /XYZ 81.077 505.818 null ] >>
+endobj
+5082 0 obj
+<< /D [ 5068 0 R /XYZ 81.077 494.859 null ] >>
+endobj
+5083 0 obj
+<< /D [ 5068 0 R /XYZ 81.077 483.9 null ] >>
+endobj
+5084 0 obj
+<< /D [ 5068 0 R /XYZ 81.077 472.941 null ] >>
+endobj
+5085 0 obj
+<< /D [ 5068 0 R /XYZ 81.077 461.982 null ] >>
+endobj
+5086 0 obj
+<< /D [ 5068 0 R /XYZ 81.077 451.023 null ] >>
+endobj
+5087 0 obj
+<< /D [ 5068 0 R /XYZ 81.077 398.221 null ] >>
+endobj
+5088 0 obj
+<< /D [ 5068 0 R /XYZ 81.077 387.263 null ] >>
+endobj
+5089 0 obj
+<< /D [ 5068 0 R /XYZ 81.077 376.304 null ] >>
+endobj
+5090 0 obj
+<< /D [ 5068 0 R /XYZ 81.077 365.345 null ] >>
+endobj
+5091 0 obj
+<< /D [ 5068 0 R /XYZ 81.077 354.386 null ] >>
+endobj
+5092 0 obj
+<< /D [ 5068 0 R /XYZ 81.077 343.427 null ] >>
+endobj
+5093 0 obj
+<< /D [ 5068 0 R /XYZ 81.077 332.468 null ] >>
+endobj
+5094 0 obj
+<< /D [ 5068 0 R /XYZ 81.077 321.509 null ] >>
+endobj
+5095 0 obj
+<< /D [ 5068 0 R /XYZ 81.077 310.55 null ] >>
+endobj
+5096 0 obj
+<< /D [ 5068 0 R /XYZ 81.077 299.591 null ] >>
+endobj
+5097 0 obj
+<< /D [ 5068 0 R /XYZ 81.077 258.745 null ] >>
+endobj
+5098 0 obj
+<< /D [ 5068 0 R /XYZ 81.077 247.786 null ] >>
+endobj
+5099 0 obj
+<< /D [ 5068 0 R /XYZ 81.077 236.827 null ] >>
+endobj
+5100 0 obj
+<< /D [ 5068 0 R /XYZ 81.077 225.868 null ] >>
+endobj
+5101 0 obj
+<< /D [ 5068 0 R /XYZ 81.077 214.909 null ] >>
+endobj
+5102 0 obj
+<< /D [ 5068 0 R /XYZ 81.077 203.95 null ] >>
+endobj
+5103 0 obj
+<< /D [ 5068 0 R /XYZ 81.077 143.261 null ] >>
+endobj
+5104 0 obj
+<< /D [ 5068 0 R /XYZ 81.077 132.302 null ] >>
+endobj
+5105 0 obj
+<< /D [ 5068 0 R /XYZ 81.077 121.343 null ] >>
+endobj
+5106 0 obj
+<< /D [ 5068 0 R /XYZ 81.077 110.384 null ] >>
+endobj
+5107 0 obj
+<< /D [ 5068 0 R /XYZ 81.077 99.425 null ] >>
+endobj
+5108 0 obj
+<< /D [ 5068 0 R /XYZ 81.077 88.466 null ] >>
+endobj
+5067 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F20 186 0 R /F79 668 0 R /F73 189 0 R /F69 183 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+5111 0 obj
+<< /Filter /FlateDecode /Length 1947 >>
+stream
+xڭZˎWFF|2 =@2E:T\VF,S|{.E=czSH*<{ϟp$(TrS3% ’̖_r͟(Ѯw,jmnLTE's-mNuّݦkvx4Ye[;`oJ[/ʴ%^^E.ouݶ~^\V#4bEiUfiiԍ(ol7WՇv3; e~6agלM0C6}?QWb$`1fŚ0:H Dbpΰ}Ao_e<`nLXLyoN%{ͫE0Q!Q06T|I]V%-${aj0:SWmo߲^T˯'AEn/"{0GLqdqX螊 ~UʴmOٷOM}(?\170A={+jkօʣ&+.vm ^DAﲦ`sMĉ  =//b~;F%kyQ4xꩿE6kiUg@2AB#Az7ш}4146
+ A.^JQGM^ɭ*@g/X$w~z_<}̊T?8"Gn,Kxtwy &y`B[
+ 1x6T^裇y6٢zb6_pqaCĀl"i}b((=CŜq?ĨF2ï
+ bStD!
+qk%[0=lټ<p0&;@q,b(}N?dHxs*]RECC6y`w"?S 7O>>ڧ&7הI^1wtT15ulxUcRAI ϘDPkxw֮w嗇61Fe<Zl
+
+*v a?:ewK3}H4#&`E k],LSR49bA<!TC3\+"D):8Phd0qEȠ~C^뮆̿Iȓu4W- 
+k6 t9um]jb(uLW(],:8{5l/c1/a2O-3N=Ȉ!]1r!A}T|#\֑a<M4rh hD] ais
+VЀ"n<tp$D b yh81AznNl8be*)?ET9 q0)>E߭32HE\$ú:6'H`"*h=tC
+endstream
+endobj
+5110 0 obj
+<< /Type /Page /Contents 5111 0 R /Resources 5109 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 4783 0 R >>
+endobj
+5112 0 obj
+<< /D [ 5110 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+5113 0 obj
+<< /D [ 5110 0 R /XYZ 81.077 742.975 null ] >>
+endobj
+5114 0 obj
+<< /D [ 5110 0 R /XYZ 81.077 732.017 null ] >>
+endobj
+5115 0 obj
+<< /D [ 5110 0 R /XYZ 81.077 721.058 null ] >>
+endobj
+5116 0 obj
+<< /D [ 5110 0 R /XYZ 81.077 710.099 null ] >>
+endobj
+5117 0 obj
+<< /D [ 5110 0 R /XYZ 81.077 699.14 null ] >>
+endobj
+5118 0 obj
+<< /D [ 5110 0 R /XYZ 81.077 658.386 null ] >>
+endobj
+5119 0 obj
+<< /D [ 5110 0 R /XYZ 81.077 647.427 null ] >>
+endobj
+5120 0 obj
+<< /D [ 5110 0 R /XYZ 81.077 636.468 null ] >>
+endobj
+5121 0 obj
+<< /D [ 5110 0 R /XYZ 81.077 625.51 null ] >>
+endobj
+5122 0 obj
+<< /D [ 5110 0 R /XYZ 81.077 614.551 null ] >>
+endobj
+5123 0 obj
+<< /D [ 5110 0 R /XYZ 81.077 603.592 null ] >>
+endobj
+5124 0 obj
+<< /D [ 5110 0 R /XYZ 81.077 592.633 null ] >>
+endobj
+5125 0 obj
+<< /D [ 5110 0 R /XYZ 81.077 581.674 null ] >>
+endobj
+5126 0 obj
+<< /D [ 5110 0 R /XYZ 81.077 570.715 null ] >>
+endobj
+5127 0 obj
+<< /D [ 5110 0 R /XYZ 81.077 412.292 null ] >>
+endobj
+5128 0 obj
+<< /D [ 5110 0 R /XYZ 81.077 401.333 null ] >>
+endobj
+5129 0 obj
+<< /D [ 5110 0 R /XYZ 81.077 390.374 null ] >>
+endobj
+5130 0 obj
+<< /D [ 5110 0 R /XYZ 81.077 379.415 null ] >>
+endobj
+5131 0 obj
+<< /D [ 5110 0 R /XYZ 81.077 368.457 null ] >>
+endobj
+5132 0 obj
+<< /D [ 5110 0 R /XYZ 81.077 357.498 null ] >>
+endobj
+5133 0 obj
+<< /D [ 5110 0 R /XYZ 81.077 346.539 null ] >>
+endobj
+5134 0 obj
+<< /D [ 5110 0 R /XYZ 81.077 335.58 null ] >>
+endobj
+5135 0 obj
+<< /D [ 5110 0 R /XYZ 81.077 324.621 null ] >>
+endobj
+5136 0 obj
+<< /D [ 5110 0 R /XYZ 81.077 313.662 null ] >>
+endobj
+5137 0 obj
+<< /D [ 5110 0 R /XYZ 81.077 302.703 null ] >>
+endobj
+5138 0 obj
+<< /D [ 5110 0 R /XYZ 81.077 291.744 null ] >>
+endobj
+5139 0 obj
+<< /D [ 5110 0 R /XYZ 81.077 280.785 null ] >>
+endobj
+5140 0 obj
+<< /D [ 5110 0 R /XYZ 81.077 269.826 null ] >>
+endobj
+5141 0 obj
+<< /D [ 5110 0 R /XYZ 81.077 258.867 null ] >>
+endobj
+5142 0 obj
+<< /D [ 5110 0 R /XYZ 81.077 247.909 null ] >>
+endobj
+5143 0 obj
+<< /D [ 5110 0 R /XYZ 81.077 236.95 null ] >>
+endobj
+5144 0 obj
+<< /D [ 5110 0 R /XYZ 81.077 225.991 null ] >>
+endobj
+5145 0 obj
+<< /D [ 5110 0 R /XYZ 81.077 215.032 null ] >>
+endobj
+5146 0 obj
+<< /D [ 5110 0 R /XYZ 81.077 204.073 null ] >>
+endobj
+5147 0 obj
+<< /D [ 5110 0 R /XYZ 81.077 193.114 null ] >>
+endobj
+5148 0 obj
+<< /D [ 5110 0 R /XYZ 81.077 182.155 null ] >>
+endobj
+5149 0 obj
+<< /D [ 5110 0 R /XYZ 81.077 171.196 null ] >>
+endobj
+5150 0 obj
+<< /D [ 5110 0 R /XYZ 81.077 160.237 null ] >>
+endobj
+5151 0 obj
+<< /D [ 5110 0 R /XYZ 81.077 149.278 null ] >>
+endobj
+5152 0 obj
+<< /D [ 5110 0 R /XYZ 81.077 138.32 null ] >>
+endobj
+5153 0 obj
+<< /D [ 5110 0 R /XYZ 81.077 122.473 null ] >>
+endobj
+5154 0 obj
+<< /D [ 5110 0 R /XYZ 81.077 111.514 null ] >>
+endobj
+5155 0 obj
+<< /D [ 5110 0 R /XYZ 81.077 100.555 null ] >>
+endobj
+5156 0 obj
+<< /D [ 5110 0 R /XYZ 81.077 89.596 null ] >>
+endobj
+5157 0 obj
+<< /D [ 5110 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+5109 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F73 189 0 R /F69 183 0 R /F20 186 0 R /F79 668 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+5160 0 obj
+<< /Filter /FlateDecode /Length 1866 >>
+stream
+xڽZ[o6~ϯ0gkX^%@`Z`y2bӶ6[r%mВ(IW$݋%S\$:YOD;}ͻTL$1 >.t6 IX:IFh&䏩sͻL41I"tf"&ɊUfM;[̻y'QIFB1Jq5ݯWuwi6߲\_g4lCcg7c6EYE
+k#ԫWIssM~n}Jatv: W\l- K c&I [,ӄ$V)ne!_YY$FAS/ CmzvZ[<9,w^-DH(EˬoYEA_=Uͩ
+o>ULe $#hCPnCQ2VhER$ ETo97.@#c%HS8BϽmREG+d6<tM[ZhZ~/mbi`}1b^DKOFv;DIAIFkEh@߆{58ҏ=3I1" )Phg1eİ'몵.g72Ы-WEQ +/@"hf#NT}*JQ!OVf?nn-)D[FzN=D
+Mk[E ڃ({UM vܳ{Z۪ͻgؕ$ͻdE9FhK>KVTb #Q\Jg/oK12^ 82C)B%%Ero0iץQb j#w2"}%OK)EX)%Q/
+ u#4~nK .hLs>rZ}CpC(Dp&b4u|
+Q/4%E&E>$F',\q5WʭoOzڞq3c0:?w* +I;f&.E@8
+")r)W+6\k˥Ӷ"]TCc^;[^t6='Euy`mjun7Av;/&=lmW!;YT$=CMsK()
++q- ݓv-sG}[TeC{.\RSL*Ju9}Y͘
+n'#t|a`pۺ_I*'3J%8.cu9j(uf
+endstream
+endobj
+5159 0 obj
+<< /Type /Page /Contents 5160 0 R /Resources 5158 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 4783 0 R >>
+endobj
+5161 0 obj
+<< /D [ 5159 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+5162 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+5163 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+5164 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+5165 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+5166 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+5167 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+5168 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+5169 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+5170 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+5171 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+5172 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+5173 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+5174 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 637.325 null ] >>
+endobj
+5175 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 626.366 null ] >>
+endobj
+5176 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 615.407 null ] >>
+endobj
+5177 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 604.448 null ] >>
+endobj
+5178 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 593.489 null ] >>
+endobj
+5179 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 582.53 null ] >>
+endobj
+5180 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 571.571 null ] >>
+endobj
+5181 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 560.613 null ] >>
+endobj
+5182 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 549.654 null ] >>
+endobj
+5183 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 538.695 null ] >>
+endobj
+5184 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 527.736 null ] >>
+endobj
+5185 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 512.142 null ] >>
+endobj
+5186 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 501.183 null ] >>
+endobj
+5187 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 490.224 null ] >>
+endobj
+5188 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 479.265 null ] >>
+endobj
+5189 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 468.306 null ] >>
+endobj
+5190 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 457.347 null ] >>
+endobj
+5191 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 446.389 null ] >>
+endobj
+5192 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 435.43 null ] >>
+endobj
+5193 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 424.471 null ] >>
+endobj
+5194 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 413.512 null ] >>
+endobj
+5195 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 402.553 null ] >>
+endobj
+5196 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 391.594 null ] >>
+endobj
+5197 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 380.635 null ] >>
+endobj
+5198 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 369.676 null ] >>
+endobj
+5199 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 358.717 null ] >>
+endobj
+5200 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 347.758 null ] >>
+endobj
+5201 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 336.8 null ] >>
+endobj
+5202 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 325.841 null ] >>
+endobj
+5203 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 314.882 null ] >>
+endobj
+5204 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 303.923 null ] >>
+endobj
+5205 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 292.964 null ] >>
+endobj
+5206 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 282.005 null ] >>
+endobj
+5207 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 239.685 null ] >>
+endobj
+5208 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 228.726 null ] >>
+endobj
+5209 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 217.767 null ] >>
+endobj
+5210 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 206.809 null ] >>
+endobj
+5211 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 195.85 null ] >>
+endobj
+5212 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 184.891 null ] >>
+endobj
+5213 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 144.39 null ] >>
+endobj
+5214 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 133.431 null ] >>
+endobj
+5215 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 122.473 null ] >>
+endobj
+5216 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 111.514 null ] >>
+endobj
+5217 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 100.555 null ] >>
+endobj
+5218 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 89.596 null ] >>
+endobj
+5219 0 obj
+<< /D [ 5159 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+5158 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+5222 0 obj
+<< /Filter /FlateDecode /Length 1725 >>
+stream
+xZMo6WFߤ Xh!=t AX,yey4ޡ%Ѣ6e%E> 3ȈNn'tvW}ťI"\t6hf&F3B5\o&Lb]:Xi-l̔%"!s ؊F[6VLȿӇ]KyQWRdtUvh.˲5߉)&G飝=ug8lyyprݻ>^yYuf-aVz>H&g?Ε'opG;~.Y$eſ9s4+ ڳ+h
+ЎmUqZ,DtN$ѤdFF[I%=mlƈ
+dLM,s !e)7O
+tF eg#zY/5Tj(Ja |iphG jgV=RD*:%06.}e?f?d@9@Lܴs)11aOVY? 7Vjeq[GQɢͅܢ e ګ(nB88,ض]GӖ|YT G74·<]YqhŚ 4ܟA)3mBz_Wɛ P+L1,\n `NZeeQM:4>
+]n]gs]։\tǕ"JoDC8uN@xA"[zW}4>A"[˛>*w`>@cDDt~"Ad[Kf8RlpNs>,J]eiRӾi!@QoB/Z,XU3/ZrL>%]3͈`Ön-f\O˳]K<y#('TnQd y_%Ѕ^㥉8@c]0Ke@lgUbYA"}r@:x!䃮/yH?08A{.:)v6REb$|1Ǐ0 CE|62=axD+ #P}| Kl_P<
+endstream
+endobj
+5221 0 obj
+<< /Type /Page /Contents 5222 0 R /Resources 5220 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 4783 0 R >>
+endobj
+5223 0 obj
+<< /D [ 5221 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+5224 0 obj
+<< /D [ 5221 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+5225 0 obj
+<< /D [ 5221 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+5226 0 obj
+<< /D [ 5221 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+5227 0 obj
+<< /D [ 5221 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+5228 0 obj
+<< /D [ 5221 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+5229 0 obj
+<< /D [ 5221 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+5230 0 obj
+<< /D [ 5221 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+5231 0 obj
+<< /D [ 5221 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+5232 0 obj
+<< /D [ 5221 0 R /XYZ 81.077 516.871 null ] >>
+endobj
+5233 0 obj
+<< /D [ 5221 0 R /XYZ 81.077 505.912 null ] >>
+endobj
+5234 0 obj
+<< /D [ 5221 0 R /XYZ 81.077 477.443 null ] >>
+endobj
+5235 0 obj
+<< /D [ 5221 0 R /XYZ 81.077 448.975 null ] >>
+endobj
+5236 0 obj
+<< /D [ 5221 0 R /XYZ 81.077 438.016 null ] >>
+endobj
+5237 0 obj
+<< /D [ 5221 0 R /XYZ 81.077 427.057 null ] >>
+endobj
+5238 0 obj
+<< /D [ 5221 0 R /XYZ 81.077 416.098 null ] >>
+endobj
+5239 0 obj
+<< /D [ 5221 0 R /XYZ 81.077 387.629 null ] >>
+endobj
+5240 0 obj
+<< /D [ 5221 0 R /XYZ 81.077 376.67 null ] >>
+endobj
+5241 0 obj
+<< /D [ 5221 0 R /XYZ 81.077 365.711 null ] >>
+endobj
+5242 0 obj
+<< /D [ 5221 0 R /XYZ 81.077 354.752 null ] >>
+endobj
+5243 0 obj
+<< /D [ 5221 0 R /XYZ 81.077 343.794 null ] >>
+endobj
+5244 0 obj
+<< /D [ 5221 0 R /XYZ 81.077 332.835 null ] >>
+endobj
+5245 0 obj
+<< /D [ 5221 0 R /XYZ 81.077 321.876 null ] >>
+endobj
+5246 0 obj
+<< /D [ 5221 0 R /XYZ 81.077 310.917 null ] >>
+endobj
+5247 0 obj
+<< /D [ 5221 0 R /XYZ 81.077 299.958 null ] >>
+endobj
+5248 0 obj
+<< /D [ 5221 0 R /XYZ 81.077 288.999 null ] >>
+endobj
+5249 0 obj
+<< /D [ 5221 0 R /XYZ 81.077 278.04 null ] >>
+endobj
+5250 0 obj
+<< /D [ 5221 0 R /XYZ 81.077 249.571 null ] >>
+endobj
+5251 0 obj
+<< /D [ 5221 0 R /XYZ 81.077 238.613 null ] >>
+endobj
+5252 0 obj
+<< /D [ 5221 0 R /XYZ 81.077 227.654 null ] >>
+endobj
+5253 0 obj
+<< /D [ 5221 0 R /XYZ 81.077 216.695 null ] >>
+endobj
+5254 0 obj
+<< /D [ 5221 0 R /XYZ 81.077 205.736 null ] >>
+endobj
+5255 0 obj
+<< /D [ 5221 0 R /XYZ 81.077 194.777 null ] >>
+endobj
+5256 0 obj
+<< /D [ 5221 0 R /XYZ 81.077 183.818 null ] >>
+endobj
+5257 0 obj
+<< /D [ 5221 0 R /XYZ 81.077 155.349 null ] >>
+endobj
+5258 0 obj
+<< /D [ 5221 0 R /XYZ 81.077 144.39 null ] >>
+endobj
+5259 0 obj
+<< /D [ 5221 0 R /XYZ 81.077 133.431 null ] >>
+endobj
+5260 0 obj
+<< /D [ 5221 0 R /XYZ 81.077 122.473 null ] >>
+endobj
+5261 0 obj
+<< /D [ 5221 0 R /XYZ 81.077 111.514 null ] >>
+endobj
+5262 0 obj
+<< /D [ 5221 0 R /XYZ 81.077 100.555 null ] >>
+endobj
+5263 0 obj
+<< /D [ 5221 0 R /XYZ 81.077 89.596 null ] >>
+endobj
+5264 0 obj
+<< /D [ 5221 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+5220 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F79 668 0 R /F26 662 0 R /F76 318 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+5267 0 obj
+<< /Filter /FlateDecode /Length 2161 >>
+stream
+xڽZ[o~_a`_l .@bu
+CDJdoHѢMdƏƋ^/w~!zTxAFX ,֮h|Z]3Fq7l}ov/ onAT=Qgt1bX7ov%>ak{ET\9U4=0s7d=ڔMh&I$JD7[[O<WuTͮږ}h`([Џ>PW bK&ky;))R ¸8mܰD2p~0nonNGZFD2P2% %d0xmrDL&Nn¸LٗugַkAũÑ0Dy((Na_L}zcL6"g1'a0Ѷg[(ĴJ/vҾjER?hA):FѶl :qlmwfæl]7Kg㿟Ma8??EO}}cw⪈i)zgַq1E@]b94)ۉЮ:@lMK>P˟
+zMyknηM8#*/pr)%:ɮ AN޴#A(Q\QwFզWkPhD
+AOn_(@bD$
+pK$
+$/Q`PAN#/'$( ] Spv!O=/'ࠇN:ulR"ţ0P:ƨƀ!8A
+$8=bs}{s[
+:+ J Ơ!p% = WRLb ϋ 2EgwSR`mϋr((AN tBvnw.Rc3 oLD-2y=g; hZd-oUh;/
+$|T y%|۰R
+&m mcf:^Nѯ:~ҏTCHb!8 :][>o^vK~8V<.큋=gۉrEXn7+iP*BuOQ f/\,e@u_lvjNvרؙ;
+ٙ}y`s_@tum_YtlY9.Il'SyW`؇<bfS˲qeБ7.*IEbB#)Cds#-YnBӆK&Mh9ڽZg _v%7l8}
+~"JFO, #aY-AgO"Aݫ r :QnKԘ.oՈ,0KD^0 =Ƭw Ïu/U&Ɩ]Ir
+y2K$)<)t Mvvh*sgp! N;'M!<seB2&WT.?֌{u_<6??|Z ~Q'eG<x۝=+)% zQ=쯼k۶?Q]) 'gUvuݙY,|hc3?'ԫO\.]5`7l$P x=pLJzr1EL
+endstream
+endobj
+5266 0 obj
+<< /Type /Page /Contents 5267 0 R /Resources 5265 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 5315 0 R >>
+endobj
+5268 0 obj
+<< /D [ 5266 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+5269 0 obj
+<< /D [ 5266 0 R /XYZ 81.077 742.929 null ] >>
+endobj
+5270 0 obj
+<< /D [ 5266 0 R /XYZ 81.077 731.97 null ] >>
+endobj
+5271 0 obj
+<< /D [ 5266 0 R /XYZ 81.077 721.011 null ] >>
+endobj
+5272 0 obj
+<< /D [ 5266 0 R /XYZ 81.077 710.052 null ] >>
+endobj
+5273 0 obj
+<< /D [ 5266 0 R /XYZ 81.077 699.093 null ] >>
+endobj
+5274 0 obj
+<< /D [ 5266 0 R /XYZ 81.077 688.134 null ] >>
+endobj
+5275 0 obj
+<< /D [ 5266 0 R /XYZ 81.077 677.175 null ] >>
+endobj
+5276 0 obj
+<< /D [ 5266 0 R /XYZ 81.077 666.217 null ] >>
+endobj
+5277 0 obj
+<< /D [ 5266 0 R /XYZ 81.077 655.258 null ] >>
+endobj
+5278 0 obj
+<< /D [ 5266 0 R /XYZ 81.077 644.299 null ] >>
+endobj
+5279 0 obj
+<< /D [ 5266 0 R /XYZ 81.077 633.34 null ] >>
+endobj
+5280 0 obj
+<< /D [ 5266 0 R /XYZ 81.077 622.381 null ] >>
+endobj
+5281 0 obj
+<< /D [ 5266 0 R /XYZ 81.077 593.489 null ] >>
+endobj
+5282 0 obj
+<< /D [ 5266 0 R /XYZ 81.077 582.53 null ] >>
+endobj
+5283 0 obj
+<< /D [ 5266 0 R /XYZ 81.077 571.571 null ] >>
+endobj
+5284 0 obj
+<< /D [ 5266 0 R /XYZ 81.077 560.613 null ] >>
+endobj
+5285 0 obj
+<< /D [ 5266 0 R /XYZ 81.077 549.654 null ] >>
+endobj
+5286 0 obj
+<< /D [ 5266 0 R /XYZ 81.077 538.695 null ] >>
+endobj
+5287 0 obj
+<< /D [ 5266 0 R /XYZ 81.077 527.736 null ] >>
+endobj
+5288 0 obj
+<< /D [ 5266 0 R /XYZ 81.077 516.777 null ] >>
+endobj
+5289 0 obj
+<< /D [ 5266 0 R /XYZ 81.077 505.818 null ] >>
+endobj
+5290 0 obj
+<< /D [ 5266 0 R /XYZ 81.077 494.859 null ] >>
+endobj
+5291 0 obj
+<< /D [ 5266 0 R /XYZ 81.077 454.012 null ] >>
+endobj
+5292 0 obj
+<< /D [ 5266 0 R /XYZ 81.077 443.053 null ] >>
+endobj
+5293 0 obj
+<< /D [ 5266 0 R /XYZ 81.077 432.094 null ] >>
+endobj
+5294 0 obj
+<< /D [ 5266 0 R /XYZ 81.077 421.136 null ] >>
+endobj
+5295 0 obj
+<< /D [ 5266 0 R /XYZ 81.077 410.177 null ] >>
+endobj
+5296 0 obj
+<< /D [ 5266 0 R /XYZ 81.077 399.218 null ] >>
+endobj
+5297 0 obj
+<< /D [ 5266 0 R /XYZ 81.077 388.259 null ] >>
+endobj
+5298 0 obj
+<< /D [ 5266 0 R /XYZ 81.077 377.3 null ] >>
+endobj
+5299 0 obj
+<< /D [ 5266 0 R /XYZ 81.077 366.341 null ] >>
+endobj
+5300 0 obj
+<< /D [ 5266 0 R /XYZ 81.077 355.382 null ] >>
+endobj
+5301 0 obj
+<< /D [ 5266 0 R /XYZ 81.077 344.423 null ] >>
+endobj
+5302 0 obj
+<< /D [ 5266 0 R /XYZ 81.077 333.464 null ] >>
+endobj
+5303 0 obj
+<< /D [ 5266 0 R /XYZ 81.077 322.505 null ] >>
+endobj
+5304 0 obj
+<< /D [ 5266 0 R /XYZ 81.077 311.547 null ] >>
+endobj
+5305 0 obj
+<< /D [ 5266 0 R /XYZ 81.077 300.588 null ] >>
+endobj
+5306 0 obj
+<< /D [ 5266 0 R /XYZ 81.077 289.629 null ] >>
+endobj
+5307 0 obj
+<< /D [ 5266 0 R /XYZ 81.077 193.074 null ] >>
+endobj
+5308 0 obj
+<< /D [ 5266 0 R /XYZ 81.077 182.115 null ] >>
+endobj
+5309 0 obj
+<< /D [ 5266 0 R /XYZ 81.077 171.156 null ] >>
+endobj
+5310 0 obj
+<< /D [ 5266 0 R /XYZ 81.077 160.197 null ] >>
+endobj
+5311 0 obj
+<< /D [ 5266 0 R /XYZ 81.077 149.238 null ] >>
+endobj
+5312 0 obj
+<< /D [ 5266 0 R /XYZ 81.077 138.279 null ] >>
+endobj
+5313 0 obj
+<< /D [ 5266 0 R /XYZ 81.077 97.433 null ] >>
+endobj
+5314 0 obj
+<< /D [ 5266 0 R /XYZ 81.077 86.474 null ] >>
+endobj
+5265 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F76 318 0 R /F20 186 0 R /F73 189 0 R /F69 183 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+5318 0 obj
+<< /Filter /FlateDecode /Length 2025 >>
+stream
+xڭZMoWi;~2P`PxoU.:ز֖$y`{)$&({fg^awE_~z،DFgw+̴DaIfws.)~72iHL84j?M, *_,.k>U6k;Z;:%Z`C3F۴X=,ɴoҎ}Uۀӽx&+f "Ӹц˖>nΞhVT#gcl
+Іզi^(?8!:~kDTJ?8onB9 If @cJS3 Ez{ȯ1jU5<QNy[d`Yc鴎׺nkOEMq[,>efK;7zu ,9d*josDlQm]EcV^J&@OMbur)
+Ɂ4)=;JJ"E}bh輇KI8cqs_#7ʲUjfaT<kZ/NHc`3u.sB i喉8QM&Nk
+vE_'h:M
+Z1w]v0vϩ E*o%Rllt2˄x98*
+0
+Ldo+6%'Qg9@GQUtJ7E#Sh:&=l"Yr6E;me)Čn0{%#}ʐT+ؘc#sp; [[Ծ6 1!g>qe/r-MlEF^S؃3BLiu@h/g㎃Q9QAkY/gm t-~1ÌhuH#<GDb&E$@㞙$HChMN.ZHĸ1'雯%4r({B(py]Rv /}Nӵl)wApUyѓĥ ~ OP&wR}V
+u<::"Qm(?2ѮؘrݖSMʷm:P_i3(i</QPV^V)S((Wqvϱb;CDGJyp·o`g2J&Qg)@SYB Icn1OV̝ ZW`#&UC2a1@ʼ颥v:j/+'}h⫎{2ޏl*󯩗HXO
+?Hx
+ap!F(I-HO8ęy2ٞG}!m ~Ιߠ9 9%1!WB~ !d1ԙgE{q$w*]l~PQKے ћaGo|)[ \t :AP5p I/`P`_ |
+endstream
+endobj
+5317 0 obj
+<< /Type /Page /Contents 5318 0 R /Resources 5316 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 5315 0 R >>
+endobj
+5319 0 obj
+<< /D [ 5317 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+5320 0 obj
+<< /D [ 5317 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+5321 0 obj
+<< /D [ 5317 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+5322 0 obj
+<< /D [ 5317 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+5323 0 obj
+<< /D [ 5317 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+5324 0 obj
+<< /D [ 5317 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+5325 0 obj
+<< /D [ 5317 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+5326 0 obj
+<< /D [ 5317 0 R /XYZ 81.077 550.245 null ] >>
+endobj
+5327 0 obj
+<< /D [ 5317 0 R /XYZ 81.077 539.286 null ] >>
+endobj
+5328 0 obj
+<< /D [ 5317 0 R /XYZ 81.077 528.327 null ] >>
+endobj
+5329 0 obj
+<< /D [ 5317 0 R /XYZ 81.077 517.368 null ] >>
+endobj
+5330 0 obj
+<< /D [ 5317 0 R /XYZ 81.077 506.409 null ] >>
+endobj
+5331 0 obj
+<< /D [ 5317 0 R /XYZ 81.077 495.45 null ] >>
+endobj
+5332 0 obj
+<< /D [ 5317 0 R /XYZ 81.077 484.491 null ] >>
+endobj
+5333 0 obj
+<< /D [ 5317 0 R /XYZ 81.077 473.533 null ] >>
+endobj
+5334 0 obj
+<< /D [ 5317 0 R /XYZ 81.077 462.574 null ] >>
+endobj
+5335 0 obj
+<< /D [ 5317 0 R /XYZ 81.077 451.615 null ] >>
+endobj
+5336 0 obj
+<< /D [ 5317 0 R /XYZ 81.077 440.656 null ] >>
+endobj
+5337 0 obj
+<< /D [ 5317 0 R /XYZ 81.077 429.697 null ] >>
+endobj
+5338 0 obj
+<< /D [ 5317 0 R /XYZ 81.077 418.738 null ] >>
+endobj
+5339 0 obj
+<< /D [ 5317 0 R /XYZ 81.077 407.779 null ] >>
+endobj
+5340 0 obj
+<< /D [ 5317 0 R /XYZ 81.077 365.147 null ] >>
+endobj
+5341 0 obj
+<< /D [ 5317 0 R /XYZ 81.077 354.188 null ] >>
+endobj
+5342 0 obj
+<< /D [ 5317 0 R /XYZ 81.077 343.229 null ] >>
+endobj
+5343 0 obj
+<< /D [ 5317 0 R /XYZ 81.077 314.475 null ] >>
+endobj
+5344 0 obj
+<< /D [ 5317 0 R /XYZ 81.077 261.811 null ] >>
+endobj
+5345 0 obj
+<< /D [ 5317 0 R /XYZ 81.077 250.853 null ] >>
+endobj
+5346 0 obj
+<< /D [ 5317 0 R /XYZ 81.077 239.894 null ] >>
+endobj
+5347 0 obj
+<< /D [ 5317 0 R /XYZ 81.077 228.935 null ] >>
+endobj
+5348 0 obj
+<< /D [ 5317 0 R /XYZ 81.077 217.976 null ] >>
+endobj
+5349 0 obj
+<< /D [ 5317 0 R /XYZ 81.077 207.017 null ] >>
+endobj
+5350 0 obj
+<< /D [ 5317 0 R /XYZ 81.077 166.308 null ] >>
+endobj
+5351 0 obj
+<< /D [ 5317 0 R /XYZ 81.077 155.349 null ] >>
+endobj
+5352 0 obj
+<< /D [ 5317 0 R /XYZ 81.077 144.39 null ] >>
+endobj
+5353 0 obj
+<< /D [ 5317 0 R /XYZ 81.077 133.431 null ] >>
+endobj
+5354 0 obj
+<< /D [ 5317 0 R /XYZ 81.077 122.473 null ] >>
+endobj
+5355 0 obj
+<< /D [ 5317 0 R /XYZ 81.077 111.514 null ] >>
+endobj
+5356 0 obj
+<< /D [ 5317 0 R /XYZ 81.077 100.555 null ] >>
+endobj
+5357 0 obj
+<< /D [ 5317 0 R /XYZ 81.077 89.596 null ] >>
+endobj
+5358 0 obj
+<< /D [ 5317 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+5316 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F79 668 0 R /F23 660 0 R /F27 4545 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+5361 0 obj
+<< /Filter /FlateDecode /Length 1792 >>
+stream
+xڭZ]۶}_a/^ ˈߤAhipSZ%Cq~Enb:}Yɒp8sfHo.o7tEn~yy^CZaJ _xX.(x[w׷>z^BZB01gggd-l3xhNM5Œz2lrmb66؍0eeW<u՘U2,!sqQ@Eh燷^hBԈʅ
+Q/~/vIK<RVŶmwl]-a˾؝>[U->mM,Pyʊ;;=(0gfNn{ؙZ 9@g
+'_~ȇ6bOSc}i F\&dB)MY"޹k.#ѣifw?:L!A皩VN%r[
+P+9ЧTMOCgvP>o75bFx;u+k(6jǪ=IBr7V A3oX~5'khtas}:fI5x ,:}]?+zCF2~p߼ \BxOx8ݴpEFoNJ}IW#]nw_a^{[F%>(vœsS0,-C q
+VMrGj.5'4yKbC\3$I-ͱ{3kuSSq|r^)yP}4m:f~8s sp=_uC߾/%YڄCTyácԥ$#yZ…9LS&a6oݤH*:ymQ/R&c8E.Y*7wH*xklF
+oںnmX±z*#Ѧfu;iX.,ODڿℌ[<l@QݐDSDK>'W*)bZs2czl:O1N(BOMf(D+WW&BTҗ "Pc*"x䞋(ΥX#E{lьB+<g:yD4A
+UeIm]bWyJ&0U)[Xvӽ}HRcRV!yE8ҧ4vx/T,mBtr[L)f;Dr6)>t./5lV񖣇=,gv؄H A|ISxbx2!:=+30TZ8+OI
+VVh|kO3Ǖ
+ṵҗSsĹbo u6q tQWbYuC%>>^c iwdoF
+endstream
+endobj
+5360 0 obj
+<< /Type /Page /Contents 5361 0 R /Resources 5359 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 5315 0 R >>
+endobj
+5362 0 obj
+<< /D [ 5360 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+5363 0 obj
+<< /D [ 5360 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+5364 0 obj
+<< /D [ 5360 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+5365 0 obj
+<< /D [ 5360 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+5366 0 obj
+<< /D [ 5360 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+5367 0 obj
+<< /D [ 5360 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+5368 0 obj
+<< /D [ 5360 0 R /XYZ 81.077 660.239 null ] >>
+endobj
+5369 0 obj
+<< /D [ 5360 0 R /XYZ 81.077 649.28 null ] >>
+endobj
+5370 0 obj
+<< /D [ 5360 0 R /XYZ 81.077 638.321 null ] >>
+endobj
+5371 0 obj
+<< /D [ 5360 0 R /XYZ 81.077 627.362 null ] >>
+endobj
+5372 0 obj
+<< /D [ 5360 0 R /XYZ 81.077 616.403 null ] >>
+endobj
+5373 0 obj
+<< /D [ 5360 0 R /XYZ 81.077 605.444 null ] >>
+endobj
+5374 0 obj
+<< /D [ 5360 0 R /XYZ 81.077 564.598 null ] >>
+endobj
+5375 0 obj
+<< /D [ 5360 0 R /XYZ 81.077 553.639 null ] >>
+endobj
+5376 0 obj
+<< /D [ 5360 0 R /XYZ 81.077 542.68 null ] >>
+endobj
+5377 0 obj
+<< /D [ 5360 0 R /XYZ 81.077 531.721 null ] >>
+endobj
+5378 0 obj
+<< /D [ 5360 0 R /XYZ 81.077 520.762 null ] >>
+endobj
+5379 0 obj
+<< /D [ 5360 0 R /XYZ 81.077 509.803 null ] >>
+endobj
+5380 0 obj
+<< /D [ 5360 0 R /XYZ 81.077 498.844 null ] >>
+endobj
+5381 0 obj
+<< /D [ 5360 0 R /XYZ 81.077 487.885 null ] >>
+endobj
+5382 0 obj
+<< /D [ 5360 0 R /XYZ 81.077 322.505 null ] >>
+endobj
+5383 0 obj
+<< /D [ 5360 0 R /XYZ 81.077 311.547 null ] >>
+endobj
+5384 0 obj
+<< /D [ 5360 0 R /XYZ 81.077 300.588 null ] >>
+endobj
+5385 0 obj
+<< /D [ 5360 0 R /XYZ 81.077 289.629 null ] >>
+endobj
+5386 0 obj
+<< /D [ 5360 0 R /XYZ 81.077 278.67 null ] >>
+endobj
+5387 0 obj
+<< /D [ 5360 0 R /XYZ 81.077 267.711 null ] >>
+endobj
+5388 0 obj
+<< /D [ 5360 0 R /XYZ 81.077 256.752 null ] >>
+endobj
+5389 0 obj
+<< /D [ 5360 0 R /XYZ 81.077 245.793 null ] >>
+endobj
+5390 0 obj
+<< /D [ 5360 0 R /XYZ 81.077 234.834 null ] >>
+endobj
+5391 0 obj
+<< /D [ 5360 0 R /XYZ 81.077 223.875 null ] >>
+endobj
+5392 0 obj
+<< /D [ 5360 0 R /XYZ 81.077 212.916 null ] >>
+endobj
+5393 0 obj
+<< /D [ 5360 0 R /XYZ 81.077 201.957 null ] >>
+endobj
+5394 0 obj
+<< /D [ 5360 0 R /XYZ 81.077 190.999 null ] >>
+endobj
+5395 0 obj
+<< /D [ 5360 0 R /XYZ 81.077 180.04 null ] >>
+endobj
+5396 0 obj
+<< /D [ 5360 0 R /XYZ 81.077 169.081 null ] >>
+endobj
+5397 0 obj
+<< /D [ 5360 0 R /XYZ 81.077 158.122 null ] >>
+endobj
+5398 0 obj
+<< /D [ 5360 0 R /XYZ 81.077 147.163 null ] >>
+endobj
+5399 0 obj
+<< /D [ 5360 0 R /XYZ 81.077 136.204 null ] >>
+endobj
+5400 0 obj
+<< /D [ 5360 0 R /XYZ 81.077 125.245 null ] >>
+endobj
+5401 0 obj
+<< /D [ 5360 0 R /XYZ 81.077 114.286 null ] >>
+endobj
+5402 0 obj
+<< /D [ 5360 0 R /XYZ 81.077 103.327 null ] >>
+endobj
+5403 0 obj
+<< /D [ 5360 0 R /XYZ 81.077 92.368 null ] >>
+endobj
+5404 0 obj
+<< /D [ 5360 0 R /XYZ 81.077 81.41 null ] >>
+endobj
+5359 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F79 668 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+5407 0 obj
+<< /Filter /FlateDecode /Length 1685 >>
+stream
+xڭYMo6Wvp%R4P`Q)CNzbˉPYr%ylGDɊ޽D2!Լ!gw3<(o_W%qbl ,H9 ,l=??]_H !p(~1_;ˆ`Ʀacc3gnl6m(FL>a|uۧu,oUD.1dE&IP%7Z'_T΃ƈ̓O:1$QicK1lvyS)tm^YQ!E1Fsꣃ#Tnl9ml%FA(2os.L?9b\9^q!h\j0H_
+
+"D=M*N RglNap@2pzߢ@)AR*:vqE%uh`04%Vnae]nLRs>5ߧ!䏦$|;rAmwrXEPaY@;}%o, 1t^ !A\2O!xS
+a(24ӈ0Gger[UE!؀Bg>1qDXDK"m6&Hܝ}]$zyرov$/<tyw{%!XGtv6& *]0 &HeoCU!RXgE9-[Hǖfɶiф0xo)c7Dkvz'E)jP>TI@Rd =s"ɷI__܌ONXn'MTdI[ EӂH덭֔S֔ҰY ю1Zg pR) sz.NYZBEt{ø Cn8"I2 eѥ ~kV
+ &N-i+gj޸u޹zh<8vkM;JtTH=(g<c <)upd=
+P-۱zhKg ((VU[,a
+J-m|kHǾH׶v7)PN&ʥ=>]nаt={.Y_32OiRlU0=A. 1$yj<p]U}~:%4 ۀC&\`
+Sw*,
+sܧPϷSPu []dp~_LBa9޼.ii* ?:՛\bd~嶧<B{lL{N2p:11ڧ:wbhf+DڏWEKvtj:qn̮ھO>&hCT '.L^rXq/G.7ur?pu0 IC7g҈$tKdԋ !8_Z eaCTU5CAb1ROF.UC,
+endstream
+endobj
+5406 0 obj
+<< /Type /Page /Contents 5407 0 R /Resources 5405 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 5315 0 R >>
+endobj
+5408 0 obj
+<< /D [ 5406 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+5409 0 obj
+<< /D [ 5406 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+5410 0 obj
+<< /D [ 5406 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+5411 0 obj
+<< /D [ 5406 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+5412 0 obj
+<< /D [ 5406 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+5413 0 obj
+<< /D [ 5406 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+5414 0 obj
+<< /D [ 5406 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+5415 0 obj
+<< /D [ 5406 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+5416 0 obj
+<< /D [ 5406 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+5417 0 obj
+<< /D [ 5406 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+5418 0 obj
+<< /D [ 5406 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+5419 0 obj
+<< /D [ 5406 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+5420 0 obj
+<< /D [ 5406 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+5421 0 obj
+<< /D [ 5406 0 R /XYZ 81.077 637.325 null ] >>
+endobj
+5422 0 obj
+<< /D [ 5406 0 R /XYZ 81.077 626.366 null ] >>
+endobj
+5423 0 obj
+<< /D [ 5406 0 R /XYZ 81.077 615.407 null ] >>
+endobj
+73 0 obj
+<< /D [ 5406 0 R /XYZ 79.37 589.953 null ] >>
+endobj
+5424 0 obj
+<< /D [ 5406 0 R /XYZ 81.077 360.519 null ] >>
+endobj
+5425 0 obj
+<< /D [ 5406 0 R /XYZ 81.077 349.56 null ] >>
+endobj
+5426 0 obj
+<< /D [ 5406 0 R /XYZ 81.077 338.601 null ] >>
+endobj
+5427 0 obj
+<< /D [ 5406 0 R /XYZ 81.077 327.642 null ] >>
+endobj
+5428 0 obj
+<< /D [ 5406 0 R /XYZ 81.077 316.683 null ] >>
+endobj
+5429 0 obj
+<< /D [ 5406 0 R /XYZ 81.077 305.724 null ] >>
+endobj
+5430 0 obj
+<< /D [ 5406 0 R /XYZ 81.077 294.766 null ] >>
+endobj
+5431 0 obj
+<< /D [ 5406 0 R /XYZ 81.077 283.807 null ] >>
+endobj
+5432 0 obj
+<< /D [ 5406 0 R /XYZ 81.077 272.848 null ] >>
+endobj
+5433 0 obj
+<< /D [ 5406 0 R /XYZ 81.077 261.889 null ] >>
+endobj
+5434 0 obj
+<< /D [ 5406 0 R /XYZ 81.077 213.072 null ] >>
+endobj
+5435 0 obj
+<< /D [ 5406 0 R /XYZ 81.077 202.113 null ] >>
+endobj
+5436 0 obj
+<< /D [ 5406 0 R /XYZ 81.077 191.154 null ] >>
+endobj
+5437 0 obj
+<< /D [ 5406 0 R /XYZ 81.077 180.195 null ] >>
+endobj
+5438 0 obj
+<< /D [ 5406 0 R /XYZ 81.077 169.236 null ] >>
+endobj
+5439 0 obj
+<< /D [ 5406 0 R /XYZ 81.077 158.277 null ] >>
+endobj
+5440 0 obj
+<< /D [ 5406 0 R /XYZ 81.077 102.487 null ] >>
+endobj
+5441 0 obj
+<< /D [ 5406 0 R /XYZ 81.077 91.528 null ] >>
+endobj
+5442 0 obj
+<< /D [ 5406 0 R /XYZ 81.077 80.569 null ] >>
+endobj
+5405 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F72 187 0 R /F19 184 0 R /F20 186 0 R /F79 668 0 R /F78 556 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+5445 0 obj
+<< /Filter /FlateDecode /Length 2357 >>
+stream
+xڵZ[o~ϯ0U GAg(YL!t]bb!I2HѢ8fX7~<~t]銸|u T)Y\ݜah/H`\fόIuB-
+i0g1}7LTiN*"M9 Y2C/&Yf4#ԙԩCHpBEBsBD:M%TN\ "$1R8[onuWz.?.wUՕme[]8 Z6u/ǖlf>j@"\ a/B:E<1McΉ^Q]w~8'"{j9zs7հx>Nuӻ_rzp '',!Ξ6:H~*ZP1۵<Z(Dq)#Ő_Ja9Cy<*}8.4!hjnʴַCݚKO@1C=Hѱӎ{k#EHAKp0\\pv򬍹[oT0YZ?tַu[va:+`<'FS~NM1L4$GFcu᧛VdJWW# crx@"/'KZU"trQAC!"MgZpeglPDeA#pH@؉"FZvO~kx!1remjH@Xf=uvf7%8*AҌ':bUOC@1:=E \HA ,@r](FhNܹ7X-yȼ 9ΑR!rty]UspdL3/Bif~~r$a$dG.(IN .R}}gB}B9 ʒͣP]Lʍa0??4ɆnT;oSZ{v4/rH*G+1Ktn8^qq3ZJ[2C/FB!Y|*=C֠J K<y*XTCwwZ^dnxS 8 uQ[a)bk.&P<K`/ q 1H~8nC$Tͫ0#xܷvviCFLbQ."bQ?L?t^
+ l'֏h7&H1ɵ
+2[/c=p&YNDZI}@@G:Bv;@Ay[%޻qbM $𸼩͊5zMv]HI;' 0B1Y6' [%s>Χq'#(CyZѣ2);'\XeZfO9#9GpZozw;+*ݸY,unF{=ol#ƋMTL x,"ӓQ[QrLC)g۲~0pK$ &"n@ͻ'ԔݭeEEtl;z*m^v^ 0ۦP50/=t_j[PV<Z)x7n* {ںvMo|f*aWޣC9{:W6 T{ t r<ٴLӳqȃB!RyqK
+endstream
+endobj
+5444 0 obj
+<< /Type /Page /Contents 5445 0 R /Resources 5443 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 5315 0 R >>
+endobj
+5446 0 obj
+<< /D [ 5444 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+5447 0 obj
+<< /D [ 5444 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+5448 0 obj
+<< /D [ 5444 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+5449 0 obj
+<< /D [ 5444 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+5450 0 obj
+<< /D [ 5444 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+5451 0 obj
+<< /D [ 5444 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+5452 0 obj
+<< /D [ 5444 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+5453 0 obj
+<< /D [ 5444 0 R /XYZ 81.077 661.235 null ] >>
+endobj
+5454 0 obj
+<< /D [ 5444 0 R /XYZ 81.077 650.276 null ] >>
+endobj
+5455 0 obj
+<< /D [ 5444 0 R /XYZ 81.077 639.317 null ] >>
+endobj
+5456 0 obj
+<< /D [ 5444 0 R /XYZ 81.077 628.358 null ] >>
+endobj
+5457 0 obj
+<< /D [ 5444 0 R /XYZ 81.077 617.4 null ] >>
+endobj
+5458 0 obj
+<< /D [ 5444 0 R /XYZ 81.077 606.441 null ] >>
+endobj
+5459 0 obj
+<< /D [ 5444 0 R /XYZ 81.077 595.482 null ] >>
+endobj
+5460 0 obj
+<< /D [ 5444 0 R /XYZ 81.077 584.523 null ] >>
+endobj
+5461 0 obj
+<< /D [ 5444 0 R /XYZ 81.077 573.564 null ] >>
+endobj
+5462 0 obj
+<< /D [ 5444 0 R /XYZ 81.077 562.605 null ] >>
+endobj
+5463 0 obj
+<< /D [ 5444 0 R /XYZ 81.077 551.646 null ] >>
+endobj
+5464 0 obj
+<< /D [ 5444 0 R /XYZ 81.077 540.687 null ] >>
+endobj
+5465 0 obj
+<< /D [ 5444 0 R /XYZ 81.077 529.728 null ] >>
+endobj
+5466 0 obj
+<< /D [ 5444 0 R /XYZ 81.077 518.769 null ] >>
+endobj
+5467 0 obj
+<< /D [ 5444 0 R /XYZ 81.077 507.811 null ] >>
+endobj
+5468 0 obj
+<< /D [ 5444 0 R /XYZ 81.077 496.852 null ] >>
+endobj
+5469 0 obj
+<< /D [ 5444 0 R /XYZ 81.077 485.893 null ] >>
+endobj
+5470 0 obj
+<< /D [ 5444 0 R /XYZ 81.077 455.009 null ] >>
+endobj
+5471 0 obj
+<< /D [ 5444 0 R /XYZ 81.077 444.05 null ] >>
+endobj
+5472 0 obj
+<< /D [ 5444 0 R /XYZ 81.077 359.367 null ] >>
+endobj
+5473 0 obj
+<< /D [ 5444 0 R /XYZ 81.077 348.408 null ] >>
+endobj
+5474 0 obj
+<< /D [ 5444 0 R /XYZ 81.077 337.449 null ] >>
+endobj
+5475 0 obj
+<< /D [ 5444 0 R /XYZ 81.077 326.49 null ] >>
+endobj
+5476 0 obj
+<< /D [ 5444 0 R /XYZ 81.077 315.532 null ] >>
+endobj
+5477 0 obj
+<< /D [ 5444 0 R /XYZ 81.077 304.573 null ] >>
+endobj
+5478 0 obj
+<< /D [ 5444 0 R /XYZ 81.077 293.614 null ] >>
+endobj
+5479 0 obj
+<< /D [ 5444 0 R /XYZ 81.077 282.655 null ] >>
+endobj
+5480 0 obj
+<< /D [ 5444 0 R /XYZ 81.077 271.696 null ] >>
+endobj
+5481 0 obj
+<< /D [ 5444 0 R /XYZ 81.077 260.737 null ] >>
+endobj
+5482 0 obj
+<< /D [ 5444 0 R /XYZ 81.077 249.778 null ] >>
+endobj
+5483 0 obj
+<< /D [ 5444 0 R /XYZ 81.077 238.819 null ] >>
+endobj
+5484 0 obj
+<< /D [ 5444 0 R /XYZ 81.077 227.86 null ] >>
+endobj
+5485 0 obj
+<< /D [ 5444 0 R /XYZ 81.077 163.103 null ] >>
+endobj
+5486 0 obj
+<< /D [ 5444 0 R /XYZ 81.077 152.144 null ] >>
+endobj
+5487 0 obj
+<< /D [ 5444 0 R /XYZ 81.077 141.185 null ] >>
+endobj
+5488 0 obj
+<< /D [ 5444 0 R /XYZ 81.077 130.226 null ] >>
+endobj
+5489 0 obj
+<< /D [ 5444 0 R /XYZ 81.077 119.268 null ] >>
+endobj
+5490 0 obj
+<< /D [ 5444 0 R /XYZ 81.077 90.376 null ] >>
+endobj
+5491 0 obj
+<< /D [ 5444 0 R /XYZ 81.077 79.417 null ] >>
+endobj
+5443 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F26 662 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+5494 0 obj
+<< /Filter /FlateDecode /Length 1989 >>
+stream
+xZ[6~_a0E@
+~D$ >z1xhY2J4#Tza,C's}0! K<Mۼ& \b(a{:ne.L
+/_'["?,Os>W\v6U_禊y]}50#FQk[5*pJRޫ.fյTe^7C&l~tV*J5Z{E.B4Zx\
+2a)n BX7~BSU*VH<bQVLRf_:o1; kO,@xYϟW0e_'FoMwyn9=6?0s$KYMX@vl,QA)щ'*mgJ5?DHM:yJCfZjUMx2~)ʅEǫ̷ӧ=7|=o{뽸wk0q`9
+A DQ@AUTgnOKԞ2{uеZy7ܪf̅e-CWvBYBñ)JoŦ ľ꽹1+cH2V]>Sd"T,IH"WL ' +Ӻg{pd>ZEy>VhU 5zDh/wy1XZYB-ɕ}+cD$BeNf#XM%UO|~Sk
++:0ԕRWMd60.D&4)DlNx_1Ь7YHrjBɍhH2j/E,P" '$pB}r;{m2Z):﫳76.n%[-3uQ8/ 7>8)tY@AA`?!mpO2!O&xM_ }(<xoT Õ^o$ Ч <6Z6!B |n@D KGr}2cy4N}KŽ/] gy0ԒD ap/pk=?MFnLq!BmX:Oo^{Ve9%G/WL q%BK\"#M>E~f Ay+} sBOЗ~mg0S=ǝFˆ?C:@!^m)BI8d[G[ei*O?guq<Y[Sg _8;dJ!z|tG7'i^æg2!xP
+\8%4[O ssێZsWfR4zn] \{YS7 Z._RuJN㭲?꘸:VӺz.gö7E1nOçC"6]0TFhthBX 4B;,`!7S(ʇ+rULW1Uy1f8Ҥϡ+{(7{\4=Gl-J8 #$Dڑ.VܭI\
+0t!#jryq=۴GUQN7҅_tǂxu CX[t#ƢN n. dssk`yuH$%vl`z
+endstream
+endobj
+5493 0 obj
+<< /Type /Page /Contents 5494 0 R /Resources 5492 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 5315 0 R >>
+endobj
+5495 0 obj
+<< /D [ 5493 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+5496 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+5497 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+5498 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+5499 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+5500 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+5501 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+5502 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+5503 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+5504 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+5505 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+5506 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+5507 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+5508 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 607.437 null ] >>
+endobj
+5509 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 596.478 null ] >>
+endobj
+5510 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 585.519 null ] >>
+endobj
+5511 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 574.56 null ] >>
+endobj
+5512 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 563.601 null ] >>
+endobj
+5513 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 552.642 null ] >>
+endobj
+5514 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 536.702 null ] >>
+endobj
+5515 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 525.743 null ] >>
+endobj
+5516 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 514.784 null ] >>
+endobj
+5517 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 503.825 null ] >>
+endobj
+5518 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 492.867 null ] >>
+endobj
+5519 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 481.908 null ] >>
+endobj
+5520 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 470.949 null ] >>
+endobj
+5521 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 459.99 null ] >>
+endobj
+5522 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 449.031 null ] >>
+endobj
+5523 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 438.072 null ] >>
+endobj
+5524 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 427.113 null ] >>
+endobj
+5525 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 416.154 null ] >>
+endobj
+5526 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 405.195 null ] >>
+endobj
+5527 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 394.236 null ] >>
+endobj
+5528 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 383.278 null ] >>
+endobj
+5529 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 372.319 null ] >>
+endobj
+5530 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 361.36 null ] >>
+endobj
+5531 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 350.401 null ] >>
+endobj
+5532 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 339.442 null ] >>
+endobj
+5533 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 328.483 null ] >>
+endobj
+5534 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 317.524 null ] >>
+endobj
+5535 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 306.565 null ] >>
+endobj
+5536 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 295.606 null ] >>
+endobj
+5537 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 284.647 null ] >>
+endobj
+5538 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 273.688 null ] >>
+endobj
+5539 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 262.73 null ] >>
+endobj
+5540 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 251.771 null ] >>
+endobj
+5541 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 240.812 null ] >>
+endobj
+5542 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 229.853 null ] >>
+endobj
+5543 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 218.894 null ] >>
+endobj
+5544 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 207.935 null ] >>
+endobj
+5545 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 191.995 null ] >>
+endobj
+5546 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 137.2 null ] >>
+endobj
+5547 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 126.241 null ] >>
+endobj
+5548 0 obj
+<< /D [ 5493 0 R /XYZ 81.077 115.283 null ] >>
+endobj
+5492 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F76 318 0 R /F70 185 0 R /F26 662 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+5551 0 obj
+<< /Filter /FlateDecode /Length 1789 >>
+stream
+xڽYKo6Whw&Xh-Мm%Vf`{D{m/L|3"dqHJߏG??|!5Eɂ."V$.7?p. Jq3S*EDX*;9[K&2!-SϟqGPGp ywrV}r*x '$g F0 WiW;Th&Td`c" hERA9LM$<A=LfD) Z ;Ja %݋Oė2.' ip~_:i"DS*-Y1"xp9G>k'֔9\,=
+r +Z6'+{8.,@s8*VLev7Y=*\ovs?)ie-ʬ+@.\f˖%qjr*zϩA?Td+^\H-om;%6++^m!B0aD!ԍ{eATe\n+ձ`vʰ^1͊7"[]~mY~G_f~ү9\iش~8J:w~W&drE,*w:*[{{~}{㉺laEStzw7=.貨ٍ%Ljaf.DˁH7pkido6u3͎.iC6L0Ӟtֵ3%}H%!+zC
+FA9}h"G?/CD$>EOJ`oK.YNyOQO47kvd{s4.4!TI;suSooӼZ t"PD"#rQeZfܧYYTh:C#4AdHx@0L4v퓊 l6wו>cE$(ԡv4-B#Y eUkRxHޛb.70L qq!Be3Hɞ']eӫ ՄO@O)LF`e3W:s
+N]z9D'-+\ Уh\tR35`P7MIok3c y28"s(jbM*ZCRMeq BZ*~JsNP(B<UdяN%o^es6=P%BҎd *@#xUڊ/ *g뾎!Gp/G*yN~J"I{s
+qQ5BB&!o:ߡQ0;5\"ר7ETZ|r3Bi;sU'hHfH uIp;jSAݲQSeGV)6`\R Ci|>?G<
+endstream
+endobj
+5550 0 obj
+<< /Type /Page /Contents 5551 0 R /Resources 5549 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 5315 0 R >>
+endobj
+5552 0 obj
+<< /D [ 5550 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+5553 0 obj
+<< /D [ 5550 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+5554 0 obj
+<< /D [ 5550 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+5555 0 obj
+<< /D [ 5550 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+5556 0 obj
+<< /D [ 5550 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+5557 0 obj
+<< /D [ 5550 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+5558 0 obj
+<< /D [ 5550 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+5559 0 obj
+<< /D [ 5550 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+5560 0 obj
+<< /D [ 5550 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+5561 0 obj
+<< /D [ 5550 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+5562 0 obj
+<< /D [ 5550 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+5563 0 obj
+<< /D [ 5550 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+5564 0 obj
+<< /D [ 5550 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+5565 0 obj
+<< /D [ 5550 0 R /XYZ 81.077 637.325 null ] >>
+endobj
+5566 0 obj
+<< /D [ 5550 0 R /XYZ 81.077 572.568 null ] >>
+endobj
+5567 0 obj
+<< /D [ 5550 0 R /XYZ 81.077 561.609 null ] >>
+endobj
+5568 0 obj
+<< /D [ 5550 0 R /XYZ 81.077 550.65 null ] >>
+endobj
+5569 0 obj
+<< /D [ 5550 0 R /XYZ 81.077 539.691 null ] >>
+endobj
+5570 0 obj
+<< /D [ 5550 0 R /XYZ 81.077 528.732 null ] >>
+endobj
+5571 0 obj
+<< /D [ 5550 0 R /XYZ 81.077 517.773 null ] >>
+endobj
+5572 0 obj
+<< /D [ 5550 0 R /XYZ 81.077 501.833 null ] >>
+endobj
+5573 0 obj
+<< /D [ 5550 0 R /XYZ 81.077 490.874 null ] >>
+endobj
+5574 0 obj
+<< /D [ 5550 0 R /XYZ 81.077 479.915 null ] >>
+endobj
+5575 0 obj
+<< /D [ 5550 0 R /XYZ 81.077 468.956 null ] >>
+endobj
+5576 0 obj
+<< /D [ 5550 0 R /XYZ 81.077 457.997 null ] >>
+endobj
+5577 0 obj
+<< /D [ 5550 0 R /XYZ 81.077 447.038 null ] >>
+endobj
+5578 0 obj
+<< /D [ 5550 0 R /XYZ 81.077 436.08 null ] >>
+endobj
+5579 0 obj
+<< /D [ 5550 0 R /XYZ 81.077 425.121 null ] >>
+endobj
+5580 0 obj
+<< /D [ 5550 0 R /XYZ 81.077 409.18 null ] >>
+endobj
+5581 0 obj
+<< /D [ 5550 0 R /XYZ 81.077 393.24 null ] >>
+endobj
+5582 0 obj
+<< /D [ 5550 0 R /XYZ 81.077 382.281 null ] >>
+endobj
+5583 0 obj
+<< /D [ 5550 0 R /XYZ 81.077 351.397 null ] >>
+endobj
+5584 0 obj
+<< /D [ 5550 0 R /XYZ 81.077 340.438 null ] >>
+endobj
+5585 0 obj
+<< /D [ 5550 0 R /XYZ 81.077 329.479 null ] >>
+endobj
+5586 0 obj
+<< /D [ 5550 0 R /XYZ 81.077 318.52 null ] >>
+endobj
+5587 0 obj
+<< /D [ 5550 0 R /XYZ 81.077 307.561 null ] >>
+endobj
+5588 0 obj
+<< /D [ 5550 0 R /XYZ 81.077 296.603 null ] >>
+endobj
+5589 0 obj
+<< /D [ 5550 0 R /XYZ 81.077 285.644 null ] >>
+endobj
+5590 0 obj
+<< /D [ 5550 0 R /XYZ 81.077 274.685 null ] >>
+endobj
+5591 0 obj
+<< /D [ 5550 0 R /XYZ 81.077 263.726 null ] >>
+endobj
+5592 0 obj
+<< /D [ 5550 0 R /XYZ 81.077 252.767 null ] >>
+endobj
+5593 0 obj
+<< /D [ 5550 0 R /XYZ 81.077 205.943 null ] >>
+endobj
+5594 0 obj
+<< /D [ 5550 0 R /XYZ 81.077 194.984 null ] >>
+endobj
+5595 0 obj
+<< /D [ 5550 0 R /XYZ 81.077 184.025 null ] >>
+endobj
+5596 0 obj
+<< /D [ 5550 0 R /XYZ 81.077 173.066 null ] >>
+endobj
+5597 0 obj
+<< /D [ 5550 0 R /XYZ 81.077 162.107 null ] >>
+endobj
+5598 0 obj
+<< /D [ 5550 0 R /XYZ 81.077 151.148 null ] >>
+endobj
+5599 0 obj
+<< /D [ 5550 0 R /XYZ 81.077 140.189 null ] >>
+endobj
+5600 0 obj
+<< /D [ 5550 0 R /XYZ 81.077 129.23 null ] >>
+endobj
+5601 0 obj
+<< /D [ 5550 0 R /XYZ 81.077 118.271 null ] >>
+endobj
+5602 0 obj
+<< /D [ 5550 0 R /XYZ 81.077 107.312 null ] >>
+endobj
+5549 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+5605 0 obj
+<< /Filter /FlateDecode /Length 1689 >>
+stream
+xZK6Wh1cA&h9) M
+%W&.4xA.~f!e:t|{;&8͵\_0@'lbfb4#Tfr6BN;}PӢ͹Vk5/fN}U6Q7llf]pz9B|dB7o_yyV,v}$$F'+W' + gV+9/azn`a[$@:¨
+6#C;8$ht>@ 窃RX'T:$Ձ
+1$tzGю!AI8m<$ 
+ICf`' M )+[Eme{_&ǯh y;a-cx-_W}>CJ*TJc0e1L4 Af2:t N>+KAhYtHs"cqǣ[g{u]pQ@Dr6Ha79O:p1\h|"BaE zw;zCev9SH# Ͱ3e:wRp/͢ۺjn|t}Sjh.zQA;aj4Z+tD@LPPh؃7 ΍=Y@i5Z7D}U[TU'h|J& :nifmo@{Kj;I, }&9$'O\ĆB⸝D [6X86 v@bEIå.g(q&0,.%=ؗP_g2QnasG
+Ldv%iNOW]+ ss<F?]|Ʃ!L 8,FHiLPAQEì"O0ZC"brV1na.p|ܹb>;Ѽ5ݸcu'!D}p␠;w.lۇBU-z'B8Hh`| X$~ۼL Qž5;ZJлo hxr_^(1ԁ߅Pj0jH)AXÖ5+oKS Qr8?K=x 0",#hX2s-ACn/LjʊF'h7?ZqGȮ;v6!
+endstream
+endobj
+5604 0 obj
+<< /Type /Page /Contents 5605 0 R /Resources 5603 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 5315 0 R >>
+endobj
+5606 0 obj
+<< /D [ 5604 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+5607 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 740.936 null ] >>
+endobj
+5608 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 729.977 null ] >>
+endobj
+5609 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 719.019 null ] >>
+endobj
+5610 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 708.06 null ] >>
+endobj
+5611 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 697.101 null ] >>
+endobj
+5612 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 686.142 null ] >>
+endobj
+5613 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 675.183 null ] >>
+endobj
+5614 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 664.224 null ] >>
+endobj
+5615 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 653.265 null ] >>
+endobj
+5616 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 642.306 null ] >>
+endobj
+5617 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 631.347 null ] >>
+endobj
+5618 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 620.388 null ] >>
+endobj
+5619 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 609.429 null ] >>
+endobj
+5620 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 598.471 null ] >>
+endobj
+5621 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 587.512 null ] >>
+endobj
+5622 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 576.553 null ] >>
+endobj
+5623 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 565.594 null ] >>
+endobj
+5624 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 554.635 null ] >>
+endobj
+5625 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 543.676 null ] >>
+endobj
+5626 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 532.717 null ] >>
+endobj
+5627 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 521.758 null ] >>
+endobj
+5628 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 510.799 null ] >>
+endobj
+5629 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 499.84 null ] >>
+endobj
+5630 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 488.882 null ] >>
+endobj
+5631 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 477.923 null ] >>
+endobj
+5632 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 466.964 null ] >>
+endobj
+5633 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 456.005 null ] >>
+endobj
+5634 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 445.046 null ] >>
+endobj
+5635 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 434.087 null ] >>
+endobj
+5636 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 423.128 null ] >>
+endobj
+5637 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 412.169 null ] >>
+endobj
+5638 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 379.292 null ] >>
+endobj
+5639 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 368.334 null ] >>
+endobj
+5640 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 357.375 null ] >>
+endobj
+5641 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 346.416 null ] >>
+endobj
+5642 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 335.457 null ] >>
+endobj
+5643 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 324.498 null ] >>
+endobj
+5644 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 313.539 null ] >>
+endobj
+5645 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 302.58 null ] >>
+endobj
+5646 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 291.621 null ] >>
+endobj
+5647 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 280.662 null ] >>
+endobj
+5648 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 269.703 null ] >>
+endobj
+5649 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 258.745 null ] >>
+endobj
+5650 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 247.786 null ] >>
+endobj
+5651 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 236.827 null ] >>
+endobj
+5652 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 225.868 null ] >>
+endobj
+5653 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 214.909 null ] >>
+endobj
+5654 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 203.95 null ] >>
+endobj
+5655 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 192.991 null ] >>
+endobj
+5656 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 182.032 null ] >>
+endobj
+5657 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 171.073 null ] >>
+endobj
+5658 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 160.114 null ] >>
+endobj
+5659 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 149.155 null ] >>
+endobj
+5660 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 138.197 null ] >>
+endobj
+5661 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 127.238 null ] >>
+endobj
+5662 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 116.279 null ] >>
+endobj
+5663 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 105.32 null ] >>
+endobj
+5664 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 94.361 null ] >>
+endobj
+5665 0 obj
+<< /D [ 5604 0 R /XYZ 81.077 83.402 null ] >>
+endobj
+5603 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F20 186 0 R /F73 189 0 R /F69 183 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+5668 0 obj
+<< /Filter /FlateDecode /Length 2049 >>
+stream
+xZKoFW 6~䔾^B),I1ΒjWV$XǷqfYtt7(??_}}#IeoDGld5̌fj6^K'\ok7i-l f0E顑S%`[g#2~Vww~H8¤$Q^ۦ}Z;{7<fZ͓[¬ <g~)1?
+4.bWm :6ٖpҊ"`ۢl'/})XItQ% "V<&`ۦhoe^-wE[\ ͉AñMSa$ =K *F B8.1o[m,H:SA\J9E9OcWC
+BdP oY\4urJhv9[Ίպ}zzY_P 45D~J\_95AA%OVVY 4 a6ip.6+2]Hp>M٪ Ҡ~h|~(N ¦qʛ}~UM9v=+>e˷erevf/tdڠ.'h3a:PBMb Ըv9A._$:BiX*'tPDSZ_i 6HƵ ohxh5NԊq#F;xH% gA2 E-*a'A̫E-')4a"5 _<Q"v-T/-.Pꋻa-*861!tAAu= nf,``+"ʆ8TN/TD󠑖sz RA! 2F8'ٴ9A1bdK+pb)TGd:A_pA -NpcA4-5Fۆ,sAdA=1xx^zay(M9Sh!?W)p(R'v6`Ĝ! Rh{hz2FjyeƟ&2&/r{_x '?-\1MG{F~Ƚ=#yX~VݎK?&`VFSy0~}
+:~8i+N({uy'
+cP@zA8h]qV?_'mJ!$<?vo}L܎}NAj.Äq1/QfCz*A_XИ)w<c^<;VLr91zntJ18c֨{nt:qDe
+=Nz3es{gc;r;Aq{\Dl/_>,⻺ΞohS~Fmͺvø> @"I )Jxh)IMu|xhU+Iu"׎
+endstream
+endobj
+5667 0 obj
+<< /Type /Page /Contents 5668 0 R /Resources 5666 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 5315 0 R >>
+endobj
+5669 0 obj
+<< /D [ 5667 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+5670 0 obj
+<< /D [ 5667 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+5671 0 obj
+<< /D [ 5667 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+5672 0 obj
+<< /D [ 5667 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+5673 0 obj
+<< /D [ 5667 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+5674 0 obj
+<< /D [ 5667 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+5675 0 obj
+<< /D [ 5667 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+5676 0 obj
+<< /D [ 5667 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+5677 0 obj
+<< /D [ 5667 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+5678 0 obj
+<< /D [ 5667 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+5679 0 obj
+<< /D [ 5667 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+5680 0 obj
+<< /D [ 5667 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+5681 0 obj
+<< /D [ 5667 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+5682 0 obj
+<< /D [ 5667 0 R /XYZ 81.077 637.325 null ] >>
+endobj
+5683 0 obj
+<< /D [ 5667 0 R /XYZ 81.077 626.366 null ] >>
+endobj
+5684 0 obj
+<< /D [ 5667 0 R /XYZ 81.077 615.407 null ] >>
+endobj
+5685 0 obj
+<< /D [ 5667 0 R /XYZ 81.077 604.448 null ] >>
+endobj
+5686 0 obj
+<< /D [ 5667 0 R /XYZ 81.077 593.489 null ] >>
+endobj
+5687 0 obj
+<< /D [ 5667 0 R /XYZ 81.077 582.53 null ] >>
+endobj
+5688 0 obj
+<< /D [ 5667 0 R /XYZ 81.077 571.571 null ] >>
+endobj
+5689 0 obj
+<< /D [ 5667 0 R /XYZ 81.077 560.613 null ] >>
+endobj
+5690 0 obj
+<< /D [ 5667 0 R /XYZ 81.077 549.654 null ] >>
+endobj
+5691 0 obj
+<< /D [ 5667 0 R /XYZ 81.077 538.695 null ] >>
+endobj
+5692 0 obj
+<< /D [ 5667 0 R /XYZ 81.077 527.736 null ] >>
+endobj
+5693 0 obj
+<< /D [ 5667 0 R /XYZ 81.077 516.777 null ] >>
+endobj
+5694 0 obj
+<< /D [ 5667 0 R /XYZ 81.077 505.818 null ] >>
+endobj
+5695 0 obj
+<< /D [ 5667 0 R /XYZ 81.077 494.859 null ] >>
+endobj
+5696 0 obj
+<< /D [ 5667 0 R /XYZ 81.077 483.9 null ] >>
+endobj
+5697 0 obj
+<< /D [ 5667 0 R /XYZ 81.077 472.941 null ] >>
+endobj
+5698 0 obj
+<< /D [ 5667 0 R /XYZ 81.077 461.982 null ] >>
+endobj
+5699 0 obj
+<< /D [ 5667 0 R /XYZ 81.077 451.023 null ] >>
+endobj
+5700 0 obj
+<< /D [ 5667 0 R /XYZ 81.077 440.065 null ] >>
+endobj
+5701 0 obj
+<< /D [ 5667 0 R /XYZ 81.077 429.106 null ] >>
+endobj
+5702 0 obj
+<< /D [ 5667 0 R /XYZ 81.077 418.147 null ] >>
+endobj
+5703 0 obj
+<< /D [ 5667 0 R /XYZ 81.077 407.188 null ] >>
+endobj
+5704 0 obj
+<< /D [ 5667 0 R /XYZ 81.077 396.229 null ] >>
+endobj
+5705 0 obj
+<< /D [ 5667 0 R /XYZ 81.077 385.27 null ] >>
+endobj
+5706 0 obj
+<< /D [ 5667 0 R /XYZ 81.077 374.311 null ] >>
+endobj
+5707 0 obj
+<< /D [ 5667 0 R /XYZ 81.077 363.352 null ] >>
+endobj
+5708 0 obj
+<< /D [ 5667 0 R /XYZ 81.077 352.393 null ] >>
+endobj
+5709 0 obj
+<< /D [ 5667 0 R /XYZ 81.077 341.434 null ] >>
+endobj
+5710 0 obj
+<< /D [ 5667 0 R /XYZ 81.077 330.476 null ] >>
+endobj
+5711 0 obj
+<< /D [ 5667 0 R /XYZ 81.077 319.517 null ] >>
+endobj
+5712 0 obj
+<< /D [ 5667 0 R /XYZ 81.077 308.558 null ] >>
+endobj
+5713 0 obj
+<< /D [ 5667 0 R /XYZ 81.077 297.599 null ] >>
+endobj
+5714 0 obj
+<< /D [ 5667 0 R /XYZ 81.077 286.64 null ] >>
+endobj
+5715 0 obj
+<< /D [ 5667 0 R /XYZ 81.077 275.681 null ] >>
+endobj
+5716 0 obj
+<< /D [ 5667 0 R /XYZ 81.077 264.722 null ] >>
+endobj
+77 0 obj
+<< /D [ 5667 0 R /XYZ 79.37 242.175 null ] >>
+endobj
+5666 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F72 187 0 R /F19 184 0 R /F20 186 0 R /F70 185 0 R /F76 318 0 R /F23 660 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+5719 0 obj
+<< /Filter /FlateDecode /Length 1442 >>
+stream
+x͚KoFrqfP (
+
+×>E)Htp>{z8p$ŴIڙm&wgb{~;SQ K"[2gjz/)}K2Z0
+ P&דbPUWF}q;&nVT#y7WFtF
+"~^ U
+!4 `yAhv (%?VG0ZS%mrRK6HAjV"4m%oyR*>K]O'SJ*$x.B?W(A4g)'B%]tw{4({)Crk}>Ɓ '(Ɋ++~Ux1BŀT:J68liG+!4G/"Q3I)sK,$Ԟ,O*UcXQn;
+@/49ѥ6@XzGbhZ3Ղ% +v &YDВլ_[Z>{͛F~^ŏh
+ q'x.B?
+djqĐŦg]PZim{y{u3
+endstream
+endobj
+5718 0 obj
+<< /Type /Page /Contents 5719 0 R /Resources 5717 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 5315 0 R >>
+endobj
+5720 0 obj
+<< /D [ 5718 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+5721 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+5722 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+5723 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+5724 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+5725 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+5726 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+5727 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+5728 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+5729 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+5730 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+5731 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+5732 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+5733 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 637.325 null ] >>
+endobj
+5734 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 626.366 null ] >>
+endobj
+5735 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 615.407 null ] >>
+endobj
+5736 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 604.448 null ] >>
+endobj
+5737 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 593.489 null ] >>
+endobj
+5738 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 582.53 null ] >>
+endobj
+5739 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 571.571 null ] >>
+endobj
+5740 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 560.613 null ] >>
+endobj
+5741 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 549.654 null ] >>
+endobj
+5742 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 538.695 null ] >>
+endobj
+5743 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 506.139 null ] >>
+endobj
+5744 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 495.18 null ] >>
+endobj
+5745 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 484.221 null ] >>
+endobj
+5746 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 473.262 null ] >>
+endobj
+5747 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 462.304 null ] >>
+endobj
+5748 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 451.345 null ] >>
+endobj
+5749 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 440.386 null ] >>
+endobj
+5750 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 429.427 null ] >>
+endobj
+5751 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 418.468 null ] >>
+endobj
+5752 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 407.509 null ] >>
+endobj
+5753 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 396.55 null ] >>
+endobj
+5754 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 385.591 null ] >>
+endobj
+5755 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 374.632 null ] >>
+endobj
+5756 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 363.673 null ] >>
+endobj
+5757 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 352.714 null ] >>
+endobj
+5758 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 341.756 null ] >>
+endobj
+5759 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 330.797 null ] >>
+endobj
+5760 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 319.838 null ] >>
+endobj
+5761 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 287.282 null ] >>
+endobj
+5762 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 276.323 null ] >>
+endobj
+5763 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 265.364 null ] >>
+endobj
+5764 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 254.405 null ] >>
+endobj
+5765 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 243.447 null ] >>
+endobj
+5766 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 232.488 null ] >>
+endobj
+5767 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 221.529 null ] >>
+endobj
+5768 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 210.57 null ] >>
+endobj
+5769 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 199.611 null ] >>
+endobj
+5770 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 188.652 null ] >>
+endobj
+5771 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 177.693 null ] >>
+endobj
+5772 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 166.734 null ] >>
+endobj
+5773 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 155.775 null ] >>
+endobj
+5774 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 144.816 null ] >>
+endobj
+5775 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 133.858 null ] >>
+endobj
+5776 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 122.899 null ] >>
+endobj
+5777 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 111.94 null ] >>
+endobj
+5778 0 obj
+<< /D [ 5718 0 R /XYZ 81.077 100.981 null ] >>
+endobj
+5717 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+5781 0 obj
+<< /Filter /FlateDecode /Length 1640 >>
+stream
+xZIoFW싀
+e*!OYs"JHh*F\ܶ:i 1՞F hZ8D'=siczB2|ڶ8/D95ʼncF9hf8[ h@9vF۩f=mnMvW'u$7eu[n^OYߺg%ڷ_TFo 7u\M2fIshTS}m#2bтXû3hcbt{yϣEVDoyY*JMƹBӖXӅ3Y.`}~#4i`>0;T[;n6g.WEu۱n,JOSRljƚeHAJg 4^2\\1BN69n7"/dŠmj}7EhW@ztȀBJu!P0x~B
+(Ei:DPĒ`D!9
+>ۗ
+Q}8qB(^&!V?;g+!M[hCEhr`Y0-BDC
+>;L-BlL"
+#c9E\j¨O(7xB8JOKzU6p&D,&Bdؐn)'?oq! 1"gP=[F+YJDLXPbtGq-CqD
+endstream
+endobj
+5780 0 obj
+<< /Type /Page /Contents 5781 0 R /Resources 5779 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 5841 0 R >>
+endobj
+5782 0 obj
+<< /D [ 5780 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+5783 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+5784 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+5785 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+5786 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+5787 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+5788 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+5789 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+5790 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+5791 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+5792 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+5793 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+5794 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+5795 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 637.325 null ] >>
+endobj
+5796 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 626.366 null ] >>
+endobj
+5797 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 615.407 null ] >>
+endobj
+5798 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 604.448 null ] >>
+endobj
+5799 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 593.489 null ] >>
+endobj
+5800 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 582.53 null ] >>
+endobj
+5801 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 571.571 null ] >>
+endobj
+5802 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 560.613 null ] >>
+endobj
+5803 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 549.654 null ] >>
+endobj
+5804 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 538.695 null ] >>
+endobj
+5805 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 527.736 null ] >>
+endobj
+5806 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 516.777 null ] >>
+endobj
+5807 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 505.818 null ] >>
+endobj
+5808 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 494.859 null ] >>
+endobj
+5809 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 462.098 null ] >>
+endobj
+5810 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 451.139 null ] >>
+endobj
+5811 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 440.18 null ] >>
+endobj
+5812 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 429.221 null ] >>
+endobj
+5813 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 418.262 null ] >>
+endobj
+5814 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 407.303 null ] >>
+endobj
+5815 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 396.344 null ] >>
+endobj
+5816 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 385.385 null ] >>
+endobj
+5817 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 374.426 null ] >>
+endobj
+5818 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 363.468 null ] >>
+endobj
+5819 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 352.509 null ] >>
+endobj
+5820 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 341.55 null ] >>
+endobj
+5821 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 330.591 null ] >>
+endobj
+5822 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 319.632 null ] >>
+endobj
+5823 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 308.673 null ] >>
+endobj
+5824 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 297.714 null ] >>
+endobj
+5825 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 286.755 null ] >>
+endobj
+5826 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 275.796 null ] >>
+endobj
+5827 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 264.837 null ] >>
+endobj
+5828 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 253.879 null ] >>
+endobj
+5829 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 242.92 null ] >>
+endobj
+5830 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 231.961 null ] >>
+endobj
+5831 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 221.002 null ] >>
+endobj
+5832 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 210.043 null ] >>
+endobj
+5833 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 199.084 null ] >>
+endobj
+5834 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 188.125 null ] >>
+endobj
+5835 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 133.431 null ] >>
+endobj
+5836 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 122.473 null ] >>
+endobj
+5837 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 111.514 null ] >>
+endobj
+5838 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 100.555 null ] >>
+endobj
+5839 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 89.596 null ] >>
+endobj
+5840 0 obj
+<< /D [ 5780 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+5779 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+5844 0 obj
+<< /Filter /FlateDecode /Length 2366 >>
+stream
+xڭZ[~PP@v2w(։AEдWJ)R) /CWr,o
+/v n};iI%_޿"^E $K=, c,Co;)'\ ʘ7o_cIV-Kri57T-,/i$*&Q8sj$-F!!.6'c yZ/SyzC4"jF -8Ҋ0:+$=0lЂ`,К^([28 6rڔQ<DSQ%*ٮ|y#`L"Je)$1*\Uhw8soRXA!Eʤ9Y{"Pr8V&ɲ|ӛ,YʏjټR~Ϳ C2(o`kҠ2S$qTe~:F)9!NBA6{ؖ(I .d4s8gU)!@z|)&`d7!aKł_OǸ, '0{ 9RX6;\=b"OU|wӴ" _]{7{kCZKsǃK!8;`'`Hw;c$;KAѴs:}n OWl f?{X(NKŕBYEUi$Q(!K)A\:%2q,^) //~OIiB#EGZ niE-mR^~*SmZUWxYv4ᘥjQZW߳:)z)cҥ1_\0?6L4(yyC=ᡨ mzю3O,N)
+͑P--M
+粋%!E
+dg#ƈh-*eo: V7گҼ 08^)N+q];~
+Զ$'~:~^]
+BmJWI堽_!
+{y[S\o97?=F`Ы<}MEmuI<> l
+)+'ͫ(>%":Zۼ[\QO=kfTVM߻7t,s[ Zͅ{f43w,m*9Ղ%yM%WJZ3-ur!LmNfvY0]8rj t&4|ʸ=~'G5JAj/M:h9H7vk
+؋`vn!(@od4B#v}+R2߰΅x[<Ͻј (mNLK6rGz>rșty>m-Pm4Oh5E#JBCΊ W
+{!hxAd~ Wyw]
+endstream
+endobj
+5843 0 obj
+<< /Type /Page /Contents 5844 0 R /Resources 5842 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 5841 0 R >>
+endobj
+5845 0 obj
+<< /D [ 5843 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+5846 0 obj
+<< /D [ 5843 0 R /XYZ 81.077 754.948 null ] >>
+endobj
+5847 0 obj
+<< /D [ 5843 0 R /XYZ 81.077 743.989 null ] >>
+endobj
+5848 0 obj
+<< /D [ 5843 0 R /XYZ 81.077 733.03 null ] >>
+endobj
+5849 0 obj
+<< /D [ 5843 0 R /XYZ 81.077 722.071 null ] >>
+endobj
+5850 0 obj
+<< /D [ 5843 0 R /XYZ 81.077 711.112 null ] >>
+endobj
+5851 0 obj
+<< /D [ 5843 0 R /XYZ 81.077 658.693 null ] >>
+endobj
+5852 0 obj
+<< /D [ 5843 0 R /XYZ 81.077 588.469 null ] >>
+endobj
+5853 0 obj
+<< /D [ 5843 0 R /XYZ 81.077 577.51 null ] >>
+endobj
+5854 0 obj
+<< /D [ 5843 0 R /XYZ 81.077 566.551 null ] >>
+endobj
+5855 0 obj
+<< /D [ 5843 0 R /XYZ 81.077 555.592 null ] >>
+endobj
+5856 0 obj
+<< /D [ 5843 0 R /XYZ 81.077 544.633 null ] >>
+endobj
+5857 0 obj
+<< /D [ 5843 0 R /XYZ 81.077 533.674 null ] >>
+endobj
+5858 0 obj
+<< /D [ 5843 0 R /XYZ 81.077 522.715 null ] >>
+endobj
+5859 0 obj
+<< /D [ 5843 0 R /XYZ 81.077 511.757 null ] >>
+endobj
+5860 0 obj
+<< /D [ 5843 0 R /XYZ 81.077 500.798 null ] >>
+endobj
+5861 0 obj
+<< /D [ 5843 0 R /XYZ 81.077 489.839 null ] >>
+endobj
+5862 0 obj
+<< /D [ 5843 0 R /XYZ 81.077 478.88 null ] >>
+endobj
+5863 0 obj
+<< /D [ 5843 0 R /XYZ 81.077 467.921 null ] >>
+endobj
+5864 0 obj
+<< /D [ 5843 0 R /XYZ 81.077 456.962 null ] >>
+endobj
+5865 0 obj
+<< /D [ 5843 0 R /XYZ 81.077 446.003 null ] >>
+endobj
+5866 0 obj
+<< /D [ 5843 0 R /XYZ 81.077 435.044 null ] >>
+endobj
+5867 0 obj
+<< /D [ 5843 0 R /XYZ 81.077 424.085 null ] >>
+endobj
+5868 0 obj
+<< /D [ 5843 0 R /XYZ 81.077 413.126 null ] >>
+endobj
+5869 0 obj
+<< /D [ 5843 0 R /XYZ 81.077 402.168 null ] >>
+endobj
+5870 0 obj
+<< /D [ 5843 0 R /XYZ 81.077 349.493 null ] >>
+endobj
+5871 0 obj
+<< /D [ 5843 0 R /XYZ 81.077 338.534 null ] >>
+endobj
+5872 0 obj
+<< /D [ 5843 0 R /XYZ 81.077 327.575 null ] >>
+endobj
+5873 0 obj
+<< /D [ 5843 0 R /XYZ 81.077 316.616 null ] >>
+endobj
+5874 0 obj
+<< /D [ 5843 0 R /XYZ 81.077 275.897 null ] >>
+endobj
+5875 0 obj
+<< /D [ 5843 0 R /XYZ 81.077 264.938 null ] >>
+endobj
+5876 0 obj
+<< /D [ 5843 0 R /XYZ 81.077 253.979 null ] >>
+endobj
+5877 0 obj
+<< /D [ 5843 0 R /XYZ 81.077 243.021 null ] >>
+endobj
+5878 0 obj
+<< /D [ 5843 0 R /XYZ 81.077 232.062 null ] >>
+endobj
+5879 0 obj
+<< /D [ 5843 0 R /XYZ 81.077 221.103 null ] >>
+endobj
+5880 0 obj
+<< /D [ 5843 0 R /XYZ 81.077 210.144 null ] >>
+endobj
+5881 0 obj
+<< /D [ 5843 0 R /XYZ 81.077 199.185 null ] >>
+endobj
+5882 0 obj
+<< /D [ 5843 0 R /XYZ 81.077 188.226 null ] >>
+endobj
+5883 0 obj
+<< /D [ 5843 0 R /XYZ 81.077 177.267 null ] >>
+endobj
+5884 0 obj
+<< /D [ 5843 0 R /XYZ 81.077 166.308 null ] >>
+endobj
+5885 0 obj
+<< /D [ 5843 0 R /XYZ 81.077 155.349 null ] >>
+endobj
+5886 0 obj
+<< /D [ 5843 0 R /XYZ 81.077 144.39 null ] >>
+endobj
+5887 0 obj
+<< /D [ 5843 0 R /XYZ 81.077 133.431 null ] >>
+endobj
+5888 0 obj
+<< /D [ 5843 0 R /XYZ 81.077 122.473 null ] >>
+endobj
+5889 0 obj
+<< /D [ 5843 0 R /XYZ 81.077 111.514 null ] >>
+endobj
+5890 0 obj
+<< /D [ 5843 0 R /XYZ 81.077 100.555 null ] >>
+endobj
+5891 0 obj
+<< /D [ 5843 0 R /XYZ 81.077 89.596 null ] >>
+endobj
+5892 0 obj
+<< /D [ 5843 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+5842 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F20 186 0 R /F73 189 0 R /F69 183 0 R /F76 318 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+5895 0 obj
+<< /Filter /FlateDecode /Length 1515 >>
+stream
+xڽZ[oF~ϯ@uT)lՇ<V!&q
+65fh{g >$͹|s1h N~I,70GzVLhFfg_1u>ҮgZ̔%C (ambB.U6-l?5F7n~E@8¤H
+Bt*YU;lw?/*-[ M!6Y U7ߴ"F] \mͶV2FmSM`tfF֖nf2XI>$˲i^/y_jVk>9ݔ)*6S b~B֔ i7ۜ_l1vUQ%7W0(yݘYMIL[4]鈤tgY6 'VlitfE*#WisRg>WU?3O'@>aP9'!^yWK Y);R58!:A,/pD(ZMCsцxܸʪdQ
+ USRwh(j߉߭V@qi @;ܠ7;ZJ14 T.FhmE堜Nl.ζpؕGzԫm*9܌65.C{;,g8 nU!ﰜjhh| 孶7Ehm3s"t_&WM }K4PP7:VEYGy7CDmM㿴,&c+I] qCAxZ̋2"gt1`jPoS[&q#Z˸m ?zo6 &΀7fy/&UQm iaLC[KE讱O%TI
+endstream
+endobj
+5894 0 obj
+<< /Type /Page /Contents 5895 0 R /Resources 5893 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 5841 0 R >>
+endobj
+5896 0 obj
+<< /D [ 5894 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+5897 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+5898 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+5899 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+5900 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+5901 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+5902 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+5903 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 690.051 null ] >>
+endobj
+5904 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 679.092 null ] >>
+endobj
+5905 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 668.133 null ] >>
+endobj
+5906 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 657.174 null ] >>
+endobj
+5907 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 626.842 null ] >>
+endobj
+5908 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 615.883 null ] >>
+endobj
+5909 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 587.36 null ] >>
+endobj
+5910 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 576.401 null ] >>
+endobj
+5911 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 565.442 null ] >>
+endobj
+5912 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 554.483 null ] >>
+endobj
+5913 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 543.524 null ] >>
+endobj
+5914 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 532.565 null ] >>
+endobj
+5915 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 521.606 null ] >>
+endobj
+5916 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 510.647 null ] >>
+endobj
+5917 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 499.689 null ] >>
+endobj
+5918 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 488.73 null ] >>
+endobj
+5919 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 477.771 null ] >>
+endobj
+5920 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 466.812 null ] >>
+endobj
+5921 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 455.853 null ] >>
+endobj
+5922 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 444.894 null ] >>
+endobj
+5923 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 433.935 null ] >>
+endobj
+5924 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 422.976 null ] >>
+endobj
+5925 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 412.017 null ] >>
+endobj
+5926 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 401.058 null ] >>
+endobj
+5927 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 390.099 null ] >>
+endobj
+5928 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 379.141 null ] >>
+endobj
+5929 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 368.182 null ] >>
+endobj
+5930 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 357.223 null ] >>
+endobj
+5931 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 346.264 null ] >>
+endobj
+5932 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 335.305 null ] >>
+endobj
+5933 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 324.346 null ] >>
+endobj
+5934 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 313.387 null ] >>
+endobj
+5935 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 302.428 null ] >>
+endobj
+5936 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 291.469 null ] >>
+endobj
+5937 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 280.51 null ] >>
+endobj
+5938 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 269.552 null ] >>
+endobj
+5939 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 258.593 null ] >>
+endobj
+5940 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 247.634 null ] >>
+endobj
+5941 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 236.675 null ] >>
+endobj
+5942 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 225.716 null ] >>
+endobj
+5943 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 214.757 null ] >>
+endobj
+5944 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 203.798 null ] >>
+endobj
+5945 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 188.226 null ] >>
+endobj
+5946 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 177.267 null ] >>
+endobj
+5947 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 166.308 null ] >>
+endobj
+5948 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 155.349 null ] >>
+endobj
+5949 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 144.39 null ] >>
+endobj
+5950 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 133.431 null ] >>
+endobj
+5951 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 122.473 null ] >>
+endobj
+5952 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 111.514 null ] >>
+endobj
+5953 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 100.555 null ] >>
+endobj
+5954 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 89.596 null ] >>
+endobj
+5955 0 obj
+<< /D [ 5894 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+5893 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+5958 0 obj
+<< /Filter /FlateDecode /Length 1854 >>
+stream
+xڽY]o}ʨ=|
+M׻(.PC 5R ,˺J<dHsǜwVhE4D+??\|&HSf^ft+iEIa=\2JWww*$Q>h4˻mV_e=.]JFF̱b8V>ڲZ5vjywGYx 07ӄqUFp6_̚ E497eMSe-zρE80ֆ_#&D*@gm?E3KsrV]MkLv̞Td{kQS(`JBEb/gDLpp=Ob|+_"La<25Ƭ0mZ?6
+5BB{_$%.>/E+!{v]>y|jgvvsuɋ
+VzoצyA&A=7ī&bSUɚ/ej fnLveu0PR<?8G2|? h|uPW\ט6Ϫ}JAbt޷}4H&ĭc
+C.T94ugrP0?]kʘ”n`k("\{Gjp
+\-3yޛ ^jyԖE2!1U, Fk0}궛3@[O|2]U5[|>2M%MDjDĉۺđу~vX=u{dq޵A&NjIC4>P{:qPFK1d"IslN2΁hOYlm,ogʋH4'(-,crXe>f
+ǜht~ En ,=aCs$GJGG/a'Ӕ6vnog ȔS
+.p}vs*gT䄕Kg.Ҝ[R&|JV[(?s@ҝrڃ4znH"T
+
+:aZ
+*~Kpv)ж(DMP}4Z9Kn \]qjkǬ 7]_TEWd%2:<4&e> Ǐ9G8e]WM-M~+Y 6ɞ(hw\iR^'^9R׊zJ{= ̓b!fP$hڞP?_Sػu yޔEn')΋>z5fQWwa#Zo3Ӻ2·2Flr4Z]~b2p̳bAnF pL6!n.>-34vlw,EcFTIQ15[0l4%l$GU N]+$@oVL>U囩~GBAKUJg}U߳r?>NLq7GW^;1Ti5M&p)c>zhT^ я$%8|4z'DkYEGbNT:wEQ}aՌ(vP] dvO
+endstream
+endobj
+5957 0 obj
+<< /Type /Page /Contents 5958 0 R /Resources 5956 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 5841 0 R >>
+endobj
+5959 0 obj
+<< /D [ 5957 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+5960 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+5961 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+5962 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 697.101 null ] >>
+endobj
+5963 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 686.142 null ] >>
+endobj
+5964 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 675.183 null ] >>
+endobj
+5965 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 644.299 null ] >>
+endobj
+5966 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 633.34 null ] >>
+endobj
+5967 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 622.381 null ] >>
+endobj
+5968 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 611.422 null ] >>
+endobj
+5969 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 600.463 null ] >>
+endobj
+5970 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 589.504 null ] >>
+endobj
+5971 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 578.545 null ] >>
+endobj
+5972 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 567.586 null ] >>
+endobj
+5973 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 556.627 null ] >>
+endobj
+5974 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 545.669 null ] >>
+endobj
+5975 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 534.71 null ] >>
+endobj
+5976 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 523.751 null ] >>
+endobj
+5977 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 512.792 null ] >>
+endobj
+5978 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 501.833 null ] >>
+endobj
+5979 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 490.874 null ] >>
+endobj
+5980 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 479.915 null ] >>
+endobj
+5981 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 468.956 null ] >>
+endobj
+5982 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 457.997 null ] >>
+endobj
+5983 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 447.038 null ] >>
+endobj
+5984 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 436.08 null ] >>
+endobj
+5985 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 425.121 null ] >>
+endobj
+5986 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 414.162 null ] >>
+endobj
+5987 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 403.203 null ] >>
+endobj
+5988 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 392.244 null ] >>
+endobj
+5989 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 359.367 null ] >>
+endobj
+5990 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 348.408 null ] >>
+endobj
+5991 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 337.449 null ] >>
+endobj
+5992 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 326.49 null ] >>
+endobj
+5993 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 295.606 null ] >>
+endobj
+5994 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 284.647 null ] >>
+endobj
+5995 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 255.756 null ] >>
+endobj
+5996 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 244.797 null ] >>
+endobj
+5997 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 233.838 null ] >>
+endobj
+5998 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 222.879 null ] >>
+endobj
+5999 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 211.92 null ] >>
+endobj
+6000 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 200.961 null ] >>
+endobj
+6001 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 190.002 null ] >>
+endobj
+6002 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 179.043 null ] >>
+endobj
+6003 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 168.085 null ] >>
+endobj
+6004 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 157.126 null ] >>
+endobj
+6005 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 146.167 null ] >>
+endobj
+6006 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 135.208 null ] >>
+endobj
+6007 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 124.249 null ] >>
+endobj
+6008 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 113.29 null ] >>
+endobj
+6009 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 102.331 null ] >>
+endobj
+6010 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 91.372 null ] >>
+endobj
+6011 0 obj
+<< /D [ 5957 0 R /XYZ 81.077 80.413 null ] >>
+endobj
+5956 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+6014 0 obj
+<< /Filter /FlateDecode /Length 1775 >>
+stream
+xڽYnFS荌V9,\(»,l(R%8n<9hFqdN 7D ~9ӊp~9չb3&.O{ LK$)Idvw.d5\FFJc0aSF䟣-)8#L~C/>+&o/O|Cv~?2Wj21gA&g
+Q*T
+&U$jj+;xRfclx+=a֏`=I#*6 yRsĸh+ QC̾/~Y8rb;fqpwS ׃M=ЎNћkg~nm%Ak}mn YUŠxы3CjYk$YaL=eDŽe:!'+s WH9юR%S M,X`Rhp| Vr K_S_XaH20b_^aHk 2~ kI2q횀k
+( 7msɮMY`H Iޖۦ ء]aD5ڶY~2?ЗF
+aApTM0X]}[_\m/+_i:o-ahp冹r?A?5Fig!c9=f} ^nJ CkPJZʿ"n EAƉ -):t:Azkgt~])DC2&Nq8ZoesW]G޳=Jo"_;L#7wa*AoD^wyU=d63
+.*Ht v%]3ꜘqx*yW1G%áYѯO5gtEҰas'o [UW4uaڮꔪkx@S<P4baTsC0b:E'S8"t_X6_o몬$Zk~OCx2|8!Qq4~w!gSj=Oeq&>jnm/۲_L7VMmZ.i^e}uٗ˚l0K.)™qS_+}1z=#dQȝǻ f.χϻ-ʼ\H mt? |ouYyIIv㻁518{ݸFbR01!л kKt\`|-6`gT_4frn缴 1Α*,!6A?v@v:W سm jCDEY/j1ƹ!|K {*Ӌ()kgK!$ŖAz$O1.\}'[E8wpEci 8s8h]nmǭS_q'CǞϯTIiAOtT
+e=ic̕ͺM^nYY <8 cPLpupj hMS_ֻԋQFIa|FG1>br(C$_4 Npڮ9,b46Qh HK+{cԔP
+(m feŢoMEpcx|X.2<ɢaIwyug37]$y)L #v+ ~[7amao㗹1uԆ2aniK[R}lF$i|y0p!
+endstream
+endobj
+6013 0 obj
+<< /Type /Page /Contents 6014 0 R /Resources 6012 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 5841 0 R >>
+endobj
+6015 0 obj
+<< /D [ 6013 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+6016 0 obj
+<< /D [ 6013 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+6017 0 obj
+<< /D [ 6013 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+6018 0 obj
+<< /D [ 6013 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+6019 0 obj
+<< /D [ 6013 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+6020 0 obj
+<< /D [ 6013 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+6021 0 obj
+<< /D [ 6013 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+6022 0 obj
+<< /D [ 6013 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+6023 0 obj
+<< /D [ 6013 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+6024 0 obj
+<< /D [ 6013 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+6025 0 obj
+<< /D [ 6013 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+6026 0 obj
+<< /D [ 6013 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+6027 0 obj
+<< /D [ 6013 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+6028 0 obj
+<< /D [ 6013 0 R /XYZ 81.077 637.325 null ] >>
+endobj
+6029 0 obj
+<< /D [ 6013 0 R /XYZ 81.077 626.366 null ] >>
+endobj
+6030 0 obj
+<< /D [ 6013 0 R /XYZ 81.077 615.407 null ] >>
+endobj
+6031 0 obj
+<< /D [ 6013 0 R /XYZ 81.077 604.448 null ] >>
+endobj
+6032 0 obj
+<< /D [ 6013 0 R /XYZ 81.077 593.489 null ] >>
+endobj
+6033 0 obj
+<< /D [ 6013 0 R /XYZ 81.077 582.53 null ] >>
+endobj
+6034 0 obj
+<< /D [ 6013 0 R /XYZ 81.077 571.571 null ] >>
+endobj
+6035 0 obj
+<< /D [ 6013 0 R /XYZ 81.077 555.631 null ] >>
+endobj
+6036 0 obj
+<< /D [ 6013 0 R /XYZ 81.077 544.672 null ] >>
+endobj
+6037 0 obj
+<< /D [ 6013 0 R /XYZ 81.077 533.713 null ] >>
+endobj
+6038 0 obj
+<< /D [ 6013 0 R /XYZ 81.077 522.754 null ] >>
+endobj
+6039 0 obj
+<< /D [ 6013 0 R /XYZ 81.077 511.796 null ] >>
+endobj
+6040 0 obj
+<< /D [ 6013 0 R /XYZ 81.077 500.837 null ] >>
+endobj
+6041 0 obj
+<< /D [ 6013 0 R /XYZ 81.077 489.878 null ] >>
+endobj
+6042 0 obj
+<< /D [ 6013 0 R /XYZ 81.077 478.919 null ] >>
+endobj
+6043 0 obj
+<< /D [ 6013 0 R /XYZ 81.077 467.96 null ] >>
+endobj
+6044 0 obj
+<< /D [ 6013 0 R /XYZ 81.077 457.001 null ] >>
+endobj
+6045 0 obj
+<< /D [ 6013 0 R /XYZ 81.077 446.042 null ] >>
+endobj
+6046 0 obj
+<< /D [ 6013 0 R /XYZ 81.077 435.083 null ] >>
+endobj
+6047 0 obj
+<< /D [ 6013 0 R /XYZ 81.077 374.311 null ] >>
+endobj
+6048 0 obj
+<< /D [ 6013 0 R /XYZ 81.077 363.352 null ] >>
+endobj
+6049 0 obj
+<< /D [ 6013 0 R /XYZ 81.077 352.393 null ] >>
+endobj
+6050 0 obj
+<< /D [ 6013 0 R /XYZ 81.077 295.155 null ] >>
+endobj
+6051 0 obj
+<< /D [ 6013 0 R /XYZ 81.077 284.196 null ] >>
+endobj
+6052 0 obj
+<< /D [ 6013 0 R /XYZ 81.077 273.237 null ] >>
+endobj
+6053 0 obj
+<< /D [ 6013 0 R /XYZ 81.077 262.279 null ] >>
+endobj
+6054 0 obj
+<< /D [ 6013 0 R /XYZ 81.077 251.32 null ] >>
+endobj
+6055 0 obj
+<< /D [ 6013 0 R /XYZ 81.077 240.361 null ] >>
+endobj
+6056 0 obj
+<< /D [ 6013 0 R /XYZ 81.077 229.402 null ] >>
+endobj
+6057 0 obj
+<< /D [ 6013 0 R /XYZ 81.077 218.443 null ] >>
+endobj
+6058 0 obj
+<< /D [ 6013 0 R /XYZ 81.077 187.559 null ] >>
+endobj
+6059 0 obj
+<< /D [ 6013 0 R /XYZ 81.077 176.6 null ] >>
+endobj
+6060 0 obj
+<< /D [ 6013 0 R /XYZ 81.077 165.641 null ] >>
+endobj
+6061 0 obj
+<< /D [ 6013 0 R /XYZ 81.077 154.682 null ] >>
+endobj
+6062 0 obj
+<< /D [ 6013 0 R /XYZ 81.077 143.723 null ] >>
+endobj
+6063 0 obj
+<< /D [ 6013 0 R /XYZ 81.077 132.764 null ] >>
+endobj
+81 0 obj
+<< /D [ 6013 0 R /XYZ 79.37 107.31 null ] >>
+endobj
+6012 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+6067 0 obj
+<< /Filter /FlateDecode /Length 2689 >>
+stream
+xڽZ[۸~_"
+Ji@`dcN͞b˅rAJ` ㌄Bsyz[$ Bǂxȶ[Cwyr*&0 TcjDN"sI.*PY끂 P+<\wq4렶aLqy{إ9j@,d ݙL!j$ۀ$"Lbc
+t#^\1vh^28)]\RWd'`lQ8c6)nAȅ,{afEgK 0HjGc])<X1g]u>5#YVo{5HS4nPUSI
+rNzDop4Nh8QDp*9#5W ݞUsJ"`Qj=LdMKƺ8 xWU]M&Lyp&]'Ðu}fdRFUY}od>YYYA}LfrqK[*TGe4_lZÞ\cm<;2!|+IqlCe(Ơ7DfS um@g_I ^ٮkdBؤMpuyHpPZG8îd'@C w,M60)_*Qb_BGD!amh]iz4 jS
+tdN'u?xxH 0(WCJ5N]z"dv@Kd$Q;
+xB흴AI'?FR*WyK7lW@#}7GZtIc^37g,M)\)t]OmO28_^)Óybc!$ETl4dE:}5}AdӀx._u.wspAelGD'-~å7P@t H>}lr,Iwq]fM\_yi_.lߥw'Z1Wk? %dq5FEiX S# PǾ3#8nj$eԛv RioFό
++O&>T%LvdqׂПaGg-9 ,:܏}}zޅ.A \z݇4_{!hWtBPxz^zeڿo .HcpꖁG{;pb U` OfCdLuC^ F+
+n-Qا
+zӥ1oϠg _MGvn>ʗ$ ŀ^~AS
+ӣM2qr<6?՝WΫ54th-P]L~:la~"VJ iY6
+.}eS_=~/up=qL"Z7<=M;ȝܳa+fvi\,}=} gbD!(y&Rmo&ޛy
+caZ.=D7܉R3@
+endstream
+endobj
+6066 0 obj
+<< /Type /Page /Contents 6067 0 R /Resources 6065 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 5841 0 R /Annots 6107 0 R >>
+endobj
+6107 0 obj
+[ 6064 0 R ]
+endobj
+6064 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 357.901 609.67 368.334 622.161 ]/A << /S /GoTo /D (Hfootnote.13) >> >>
+endobj
+6068 0 obj
+<< /D [ 6066 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+6069 0 obj
+<< /D [ 6066 0 R /XYZ 81.077 606.981 null ] >>
+endobj
+6070 0 obj
+<< /D [ 6066 0 R /XYZ 81.077 596.022 null ] >>
+endobj
+6071 0 obj
+<< /D [ 6066 0 R /XYZ 81.077 585.063 null ] >>
+endobj
+6072 0 obj
+<< /D [ 6066 0 R /XYZ 81.077 574.104 null ] >>
+endobj
+6073 0 obj
+<< /D [ 6066 0 R /XYZ 81.077 563.145 null ] >>
+endobj
+6074 0 obj
+<< /D [ 6066 0 R /XYZ 81.077 552.186 null ] >>
+endobj
+6075 0 obj
+<< /D [ 6066 0 R /XYZ 81.077 541.227 null ] >>
+endobj
+6076 0 obj
+<< /D [ 6066 0 R /XYZ 81.077 530.268 null ] >>
+endobj
+6077 0 obj
+<< /D [ 6066 0 R /XYZ 81.077 471.489 null ] >>
+endobj
+6078 0 obj
+<< /D [ 6066 0 R /XYZ 81.077 460.53 null ] >>
+endobj
+6079 0 obj
+<< /D [ 6066 0 R /XYZ 81.077 449.571 null ] >>
+endobj
+6080 0 obj
+<< /D [ 6066 0 R /XYZ 81.077 438.612 null ] >>
+endobj
+6081 0 obj
+<< /D [ 6066 0 R /XYZ 81.077 427.653 null ] >>
+endobj
+6082 0 obj
+<< /D [ 6066 0 R /XYZ 81.077 416.694 null ] >>
+endobj
+6083 0 obj
+<< /D [ 6066 0 R /XYZ 81.077 405.735 null ] >>
+endobj
+6084 0 obj
+<< /D [ 6066 0 R /XYZ 81.077 394.776 null ] >>
+endobj
+6085 0 obj
+<< /D [ 6066 0 R /XYZ 81.077 383.817 null ] >>
+endobj
+6086 0 obj
+<< /D [ 6066 0 R /XYZ 81.077 372.858 null ] >>
+endobj
+6087 0 obj
+<< /D [ 6066 0 R /XYZ 81.077 361.9 null ] >>
+endobj
+6088 0 obj
+<< /D [ 6066 0 R /XYZ 81.077 350.941 null ] >>
+endobj
+6089 0 obj
+<< /D [ 6066 0 R /XYZ 81.077 339.982 null ] >>
+endobj
+6090 0 obj
+<< /D [ 6066 0 R /XYZ 81.077 329.023 null ] >>
+endobj
+6091 0 obj
+<< /D [ 6066 0 R /XYZ 81.077 318.064 null ] >>
+endobj
+6092 0 obj
+<< /D [ 6066 0 R /XYZ 81.077 307.105 null ] >>
+endobj
+6093 0 obj
+<< /D [ 6066 0 R /XYZ 81.077 296.146 null ] >>
+endobj
+6094 0 obj
+<< /D [ 6066 0 R /XYZ 81.077 285.187 null ] >>
+endobj
+6095 0 obj
+<< /D [ 6066 0 R /XYZ 81.077 274.228 null ] >>
+endobj
+6096 0 obj
+<< /D [ 6066 0 R /XYZ 81.077 258.288 null ] >>
+endobj
+6097 0 obj
+<< /D [ 6066 0 R /XYZ 81.077 247.329 null ] >>
+endobj
+6098 0 obj
+<< /D [ 6066 0 R /XYZ 81.077 236.37 null ] >>
+endobj
+6099 0 obj
+<< /D [ 6066 0 R /XYZ 81.077 225.411 null ] >>
+endobj
+6100 0 obj
+<< /D [ 6066 0 R /XYZ 81.077 214.452 null ] >>
+endobj
+6101 0 obj
+<< /D [ 6066 0 R /XYZ 81.077 203.494 null ] >>
+endobj
+6102 0 obj
+<< /D [ 6066 0 R /XYZ 81.077 192.535 null ] >>
+endobj
+6103 0 obj
+<< /D [ 6066 0 R /XYZ 81.077 181.576 null ] >>
+endobj
+6104 0 obj
+<< /D [ 6066 0 R /XYZ 81.077 150.692 null ] >>
+endobj
+6105 0 obj
+<< /D [ 6066 0 R /XYZ 81.077 139.733 null ] >>
+endobj
+6106 0 obj
+<< /D [ 6066 0 R /XYZ 94.613 110.144 null ] >>
+endobj
+6065 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F72 187 0 R /F19 184 0 R /F20 186 0 R /F26 662 0 R /F79 668 0 R /F76 318 0 R /F22 473 0 R /F73 189 0 R /F69 183 0 R /F77 480 0 R /F63 205 0 R /F81 768 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+6110 0 obj
+<< /Filter /FlateDecode /Length 2480 >>
+stream
+xڭZKϯ0iߒd >dC&0dn -K^I,(RʶdbIX,V}qg? }?ç/qB$ f$K2{83>鋌f!da`"%ix<UMU,wVI7*3jk!z Z`ڮ"m FK,Bfnob.V\eeu,Jm*]_VϟW"~YIVIlW->  y+>M|*ܥ6DH} B S/B6W;FP8M}6wd2BV4WIn\ORm?Z1($ (^hVӷcN]IA]qIB!gU։9_y1:7!h}|28EFF`2%qNPp 1`:D 槲Ox^Ѱ#xM<}?'eNZj-=p|3^}.7j_ܕo򬬊#仆Y@a\laJr8`T0$.)d VFW}V0J_Iէ`yu[Iߧnj3E5jPXB 
+F
+ My(
+;~ٳCݤ4yU>>u^lU d=/ۯY.+>~IާbnêTJOuDx]%lS،_qAR?Sb][lJQԅSQo3#if:D]8[xzvI12
+:-2(&]* ",ͫrF䐎$29% Зl`b~>ۯӳ D(fq z>_g㓌gq(u[eA@B$`yce[sc*p6m{ 7Ħ3X 7`PBqS36ρMan;*(Jν2k|8y2ifď9.\ÂJ۸9:E*Mm/Qn}=Й#naD߹%)viT?W`dK/o~+b_eUVA{T.t-ڂZF?Uq]\wj
+h
+O[ͪ10(rw;NYH]TrN:7]ɺH>AzKhYa(
+^ԝS:Q{1ݰ.?D$F
+Ɂ}M-bP4h'7LYcs&:>"&_F,B%t}<ZnJB?Zw6;Dw @Evb?1zI'ZpcK`ATq:8? OmJ@ҩF+.%r14PNH
+endstream
+endobj
+6109 0 obj
+<< /Type /Page /Contents 6110 0 R /Resources 6108 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 5841 0 R >>
+endobj
+6111 0 obj
+<< /D [ 6109 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+6112 0 obj
+<< /D [ 6109 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+6113 0 obj
+<< /D [ 6109 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+6114 0 obj
+<< /D [ 6109 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+6115 0 obj
+<< /D [ 6109 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+6116 0 obj
+<< /D [ 6109 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+6117 0 obj
+<< /D [ 6109 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+6118 0 obj
+<< /D [ 6109 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+6119 0 obj
+<< /D [ 6109 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+6120 0 obj
+<< /D [ 6109 0 R /XYZ 81.077 637.325 null ] >>
+endobj
+6121 0 obj
+<< /D [ 6109 0 R /XYZ 81.077 596.478 null ] >>
+endobj
+6122 0 obj
+<< /D [ 6109 0 R /XYZ 81.077 585.519 null ] >>
+endobj
+6123 0 obj
+<< /D [ 6109 0 R /XYZ 81.077 574.56 null ] >>
+endobj
+6124 0 obj
+<< /D [ 6109 0 R /XYZ 81.077 563.601 null ] >>
+endobj
+6125 0 obj
+<< /D [ 6109 0 R /XYZ 81.077 552.642 null ] >>
+endobj
+6126 0 obj
+<< /D [ 6109 0 R /XYZ 81.077 541.684 null ] >>
+endobj
+6127 0 obj
+<< /D [ 6109 0 R /XYZ 81.077 530.725 null ] >>
+endobj
+6128 0 obj
+<< /D [ 6109 0 R /XYZ 81.077 519.766 null ] >>
+endobj
+6129 0 obj
+<< /D [ 6109 0 R /XYZ 81.077 508.807 null ] >>
+endobj
+6130 0 obj
+<< /D [ 6109 0 R /XYZ 81.077 497.848 null ] >>
+endobj
+6131 0 obj
+<< /D [ 6109 0 R /XYZ 81.077 486.889 null ] >>
+endobj
+85 0 obj
+<< /D [ 6109 0 R /XYZ 79.37 437.773 null ] >>
+endobj
+6132 0 obj
+<< /D [ 6109 0 R /XYZ 81.077 245.949 null ] >>
+endobj
+6133 0 obj
+<< /D [ 6109 0 R /XYZ 81.077 234.99 null ] >>
+endobj
+6134 0 obj
+<< /D [ 6109 0 R /XYZ 81.077 194.143 null ] >>
+endobj
+6135 0 obj
+<< /D [ 6109 0 R /XYZ 81.077 183.184 null ] >>
+endobj
+6136 0 obj
+<< /D [ 6109 0 R /XYZ 81.077 172.225 null ] >>
+endobj
+6137 0 obj
+<< /D [ 6109 0 R /XYZ 81.077 161.266 null ] >>
+endobj
+6138 0 obj
+<< /D [ 6109 0 R /XYZ 81.077 120.419 null ] >>
+endobj
+6139 0 obj
+<< /D [ 6109 0 R /XYZ 81.077 109.46 null ] >>
+endobj
+6140 0 obj
+<< /D [ 6109 0 R /XYZ 81.077 98.502 null ] >>
+endobj
+6108 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F76 318 0 R /F72 187 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+6143 0 obj
+<< /Filter /FlateDecode /Length 1918 >>
+stream
+xڽZ]o6}ϯ0{Y~ XCl:8Zmɕ&Y]D5d/uDKOV<yw.N^=HK* <!H#M"Idr96.~A{nd̷ aD2Dçٜ 9$eRŝ}WyQ?[4+§lLtsmaLpĹ/"/ rgZ ;sYH~IoL6VW$u,;7waJ ?@cAPHXApa߅H"B=Eu[>zdʳϡQ1}? *AmiV75o!ÞC5BS֎:?pۄ!ʝi}iB[QEZ
+g&>.rLf
+H<=ϺEz&8"W+kF"[.4Wi|ҥ$eϯFҗ tix`B  ggb1fa'&-A&p)q&1|P
+
+>82BsL#lg/A^6أJo&Y:_F/6#)n@2h.=tp"
+g;vVE J`**{*Jm-&)Z 'WqMqOCI4E 69?z.<3US(y
+ [S,=7 FX![XЃai0 ,ڠ=$wN*B5l/Yq^O._[ip|#]m{1S55&UPm R  1=t#l˻g6*A?f!Ҫ賴ؕv
+`W7TyƫWHWP3v~g[源W@jx9ePv0C
+#ƻJ?Mz9(e\@}ڤvI:=Pa/Q>j/C!@ o3Fm(P{HuvdV)G?6|02Vkӫ $D1DizGfa>Q?XIAy}mva飃3ԌH(\GIglAJ_\
+aKfs2zLdg>U Q놶Q29oR$]DmR@|]s
+endstream
+endobj
+6142 0 obj
+<< /Type /Page /Contents 6143 0 R /Resources 6141 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 5841 0 R >>
+endobj
+6144 0 obj
+<< /D [ 6142 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+6145 0 obj
+<< /D [ 6142 0 R /XYZ 81.077 742.929 null ] >>
+endobj
+6146 0 obj
+<< /D [ 6142 0 R /XYZ 81.077 731.97 null ] >>
+endobj
+6147 0 obj
+<< /D [ 6142 0 R /XYZ 81.077 721.011 null ] >>
+endobj
+6148 0 obj
+<< /D [ 6142 0 R /XYZ 81.077 710.052 null ] >>
+endobj
+6149 0 obj
+<< /D [ 6142 0 R /XYZ 81.077 685.146 null ] >>
+endobj
+6150 0 obj
+<< /D [ 6142 0 R /XYZ 81.077 674.187 null ] >>
+endobj
+6151 0 obj
+<< /D [ 6142 0 R /XYZ 81.077 663.228 null ] >>
+endobj
+6152 0 obj
+<< /D [ 6142 0 R /XYZ 81.077 652.269 null ] >>
+endobj
+6153 0 obj
+<< /D [ 6142 0 R /XYZ 81.077 641.31 null ] >>
+endobj
+6154 0 obj
+<< /D [ 6142 0 R /XYZ 81.077 630.351 null ] >>
+endobj
+6155 0 obj
+<< /D [ 6142 0 R /XYZ 81.077 619.392 null ] >>
+endobj
+6156 0 obj
+<< /D [ 6142 0 R /XYZ 81.077 608.433 null ] >>
+endobj
+6157 0 obj
+<< /D [ 6142 0 R /XYZ 81.077 597.474 null ] >>
+endobj
+6158 0 obj
+<< /D [ 6142 0 R /XYZ 81.077 586.515 null ] >>
+endobj
+6159 0 obj
+<< /D [ 6142 0 R /XYZ 81.077 575.556 null ] >>
+endobj
+6160 0 obj
+<< /D [ 6142 0 R /XYZ 81.077 564.598 null ] >>
+endobj
+6161 0 obj
+<< /D [ 6142 0 R /XYZ 81.077 553.639 null ] >>
+endobj
+6162 0 obj
+<< /D [ 6142 0 R /XYZ 81.077 542.68 null ] >>
+endobj
+6163 0 obj
+<< /D [ 6142 0 R /XYZ 81.077 531.721 null ] >>
+endobj
+6164 0 obj
+<< /D [ 6142 0 R /XYZ 81.077 520.762 null ] >>
+endobj
+6165 0 obj
+<< /D [ 6142 0 R /XYZ 81.077 509.803 null ] >>
+endobj
+6166 0 obj
+<< /D [ 6142 0 R /XYZ 81.077 498.844 null ] >>
+endobj
+6167 0 obj
+<< /D [ 6142 0 R /XYZ 81.077 487.885 null ] >>
+endobj
+6168 0 obj
+<< /D [ 6142 0 R /XYZ 81.077 476.926 null ] >>
+endobj
+6169 0 obj
+<< /D [ 6142 0 R /XYZ 81.077 465.967 null ] >>
+endobj
+6170 0 obj
+<< /D [ 6142 0 R /XYZ 81.077 455.009 null ] >>
+endobj
+6171 0 obj
+<< /D [ 6142 0 R /XYZ 81.077 444.05 null ] >>
+endobj
+6172 0 obj
+<< /D [ 6142 0 R /XYZ 81.077 433.091 null ] >>
+endobj
+6173 0 obj
+<< /D [ 6142 0 R /XYZ 81.077 400.214 null ] >>
+endobj
+6174 0 obj
+<< /D [ 6142 0 R /XYZ 81.077 389.255 null ] >>
+endobj
+6175 0 obj
+<< /D [ 6142 0 R /XYZ 81.077 378.296 null ] >>
+endobj
+6176 0 obj
+<< /D [ 6142 0 R /XYZ 81.077 367.337 null ] >>
+endobj
+6177 0 obj
+<< /D [ 6142 0 R /XYZ 81.077 356.378 null ] >>
+endobj
+6178 0 obj
+<< /D [ 6142 0 R /XYZ 81.077 345.42 null ] >>
+endobj
+6179 0 obj
+<< /D [ 6142 0 R /XYZ 81.077 334.461 null ] >>
+endobj
+6180 0 obj
+<< /D [ 6142 0 R /XYZ 81.077 323.502 null ] >>
+endobj
+6181 0 obj
+<< /D [ 6142 0 R /XYZ 81.077 312.543 null ] >>
+endobj
+6182 0 obj
+<< /D [ 6142 0 R /XYZ 81.077 281.659 null ] >>
+endobj
+6183 0 obj
+<< /D [ 6142 0 R /XYZ 81.077 270.7 null ] >>
+endobj
+6184 0 obj
+<< /D [ 6142 0 R /XYZ 81.077 241.808 null ] >>
+endobj
+6185 0 obj
+<< /D [ 6142 0 R /XYZ 81.077 230.849 null ] >>
+endobj
+6186 0 obj
+<< /D [ 6142 0 R /XYZ 81.077 201.957 null ] >>
+endobj
+6187 0 obj
+<< /D [ 6142 0 R /XYZ 81.077 190.999 null ] >>
+endobj
+6188 0 obj
+<< /D [ 6142 0 R /XYZ 81.077 180.04 null ] >>
+endobj
+6189 0 obj
+<< /D [ 6142 0 R /XYZ 81.077 169.081 null ] >>
+endobj
+6190 0 obj
+<< /D [ 6142 0 R /XYZ 81.077 140.189 null ] >>
+endobj
+6191 0 obj
+<< /D [ 6142 0 R /XYZ 81.077 129.23 null ] >>
+endobj
+6192 0 obj
+<< /D [ 6142 0 R /XYZ 81.077 118.271 null ] >>
+endobj
+6193 0 obj
+<< /D [ 6142 0 R /XYZ 81.077 107.312 null ] >>
+endobj
+6194 0 obj
+<< /D [ 6142 0 R /XYZ 81.077 96.354 null ] >>
+endobj
+6195 0 obj
+<< /D [ 6142 0 R /XYZ 81.077 85.395 null ] >>
+endobj
+6141 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F20 186 0 R /F73 189 0 R /F69 183 0 R /F76 318 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+6198 0 obj
+<< /Filter /FlateDecode /Length 1695 >>
+stream
+xZMo"GW "ū!D#y`zz[x ~utD溜H,|0]^0D330`1T˿>\i7i-l fNN2!Mr)_ۋXV}n_^6fKI+J!iK:F121<U ~h=z
+Gz)[¬ Y0Ec3C8W!6[›Vh|l :b h&%S4:vjBl/6j}_BWnjFߕپ~(':6U}r;~٨u?\q:p28" { yy.v]LҦ^ _&oTr8+|X-rx{08'K#-E>,E}6_! Qʥ@>"  s68sKkb ݥp}PlQAwUʹ먨{?F "ֹF[½
+MЎ(m[Ǔ/ݼ<Ti
+<-64~ -=p6El'dWnd&[+~geﲛ j+)J׳˹K wh?j/ꪽTw3V2 $ʲw?U{oQ5]ht~u:K[\.TKM{<\F#PEbv?~$tl/ |9NY׮=]=hҀeF42װ2hErKБab5rho
+HkPdR-AcTS*$>&
+jS5m$RdU]W>>J rK6HTx(Mx3 cD4E%.j.J \4nh #2iQ.*<l4~. .JQJJ%+ܹAOTD?AU^o
+4<LOǤ a:52$h4p A4:Aٖ E4\:g`Mw,ʰy
+"-'hPwDt2k$i=oBe Bdp =YduZ$6GWYz6` >#'>Ktb |g$.VSB 3
+H YL%P9/_Xq߸\7>e~c,a4418wd)726Ac;NLP$7onkt齭rT18v53Vج6.o'=cF;.tv˰F4
+endstream
+endobj
+6197 0 obj
+<< /Type /Page /Contents 6198 0 R /Resources 6196 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 5841 0 R >>
+endobj
+6199 0 obj
+<< /D [ 6197 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+6200 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+6201 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+6202 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+6203 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+6204 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+6205 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+6206 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+6207 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 674.628 null ] >>
+endobj
+6208 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 663.669 null ] >>
+endobj
+6209 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 652.711 null ] >>
+endobj
+6210 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 641.752 null ] >>
+endobj
+6211 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 630.793 null ] >>
+endobj
+6212 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 619.834 null ] >>
+endobj
+6213 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 591.384 null ] >>
+endobj
+6214 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 580.425 null ] >>
+endobj
+6215 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 569.466 null ] >>
+endobj
+6216 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 558.507 null ] >>
+endobj
+6217 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 547.548 null ] >>
+endobj
+6218 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 519.098 null ] >>
+endobj
+6219 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 508.14 null ] >>
+endobj
+6220 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 497.181 null ] >>
+endobj
+6221 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 486.222 null ] >>
+endobj
+6222 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 475.263 null ] >>
+endobj
+6223 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 464.304 null ] >>
+endobj
+6224 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 453.345 null ] >>
+endobj
+6225 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 442.386 null ] >>
+endobj
+6226 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 431.427 null ] >>
+endobj
+6227 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 420.468 null ] >>
+endobj
+6228 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 409.509 null ] >>
+endobj
+6229 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 381.059 null ] >>
+endobj
+6230 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 370.101 null ] >>
+endobj
+6231 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 359.142 null ] >>
+endobj
+6232 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 348.183 null ] >>
+endobj
+6233 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 337.224 null ] >>
+endobj
+6234 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 326.265 null ] >>
+endobj
+6235 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 315.306 null ] >>
+endobj
+6236 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 304.347 null ] >>
+endobj
+6237 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 275.897 null ] >>
+endobj
+6238 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 264.938 null ] >>
+endobj
+6239 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 253.979 null ] >>
+endobj
+6240 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 243.021 null ] >>
+endobj
+6241 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 232.062 null ] >>
+endobj
+6242 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 221.103 null ] >>
+endobj
+6243 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 210.144 null ] >>
+endobj
+6244 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 199.185 null ] >>
+endobj
+6245 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 188.226 null ] >>
+endobj
+6246 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 177.267 null ] >>
+endobj
+6247 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 166.308 null ] >>
+endobj
+6248 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 155.349 null ] >>
+endobj
+6249 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 144.39 null ] >>
+endobj
+6250 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 133.431 null ] >>
+endobj
+6251 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 122.473 null ] >>
+endobj
+6252 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 111.514 null ] >>
+endobj
+6253 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 100.555 null ] >>
+endobj
+6254 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 89.596 null ] >>
+endobj
+6255 0 obj
+<< /D [ 6197 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+6196 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F20 186 0 R /F19 184 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+6258 0 obj
+<< /Filter /FlateDecode /Length 3141 >>
+stream
+xڭˎ6>_Aqc3هE6 -Bdɑx:njŢ(X*:mf7Ix#o}HL)g
+iEMg$Qt:ByefSJ g2r M 6D2A(a?eݴwx*=yY߸qSq:?Y/ZjfŔxNRP-i> n;†wL;7?C]mE#̏ۢeQ孛-kr7nkp\|[rO?0
+\)B ࡹN"͑HÇD&@XmjG.)S¸_
+<DNnߜ˶[*?IpZ_lU{ \vuMwE^{ޡ Ȭ7šwUW0{9b/0H&G&/V*
+NvKp®Qg~2Z?+]#I~P9$O05Smp` }wǽ$1,e!IԐ}Hd.,,Mw^{pG ɞ~ 8p4!oЇ~`E8w֭-U) G<" (CLD6ܢuTf#BOU` #<$S T?zr3MǑ[( [rlEUhz>qҐ x'l:w@3s=(9 eԔ-@QoP l'jdώi+3UW*ƈ}#r?Ǧ:D/._ &Bң*1xTsI<Np ̪zA.#AmcWtD]JJT;<M1 l8Q7`*YhNͩ#NZJAY)*㏐ށTc*$u&*4ёTj=;&X 4f+WG%6`|fNeDytOnM K(ʶv\n:۫/BiJ|rȪSVm^8N;gS, *LD4sL mB 3<<2리?f:b$ʰ&|.nR\`2\`XҸ5N_T$5b^-0|
+o@H7(2lOP=CT4dQd޻: \
+;xXmq IX,EkUPk?ԫ|㘡j}нB
+B=:S-ϮW9*&&#ܤ+oq37H >]@:Wpo%Y o
+Ց<m}Cc`ʏ}Sw9&kFEX 0|ۅ>N9O GPn("74UDYz(L!?W=_bQh`` k: s^JM
+:[PηEsV+?Gڲ #L(r٢aŌ@[DPݩNos8p'<E;҄V 6͵7`
+n/]ཉj]p\<4.+|+Z%~uSHD00doAʜ/LL4&FM}dndW14˃*4KzWCTvor 6P驫fAra=Q&eL "oòh\$Gxmmﰮ5W=XaUI}n_CnZr=p hPh ) `>! ~ @vsw9iއFA¹(֠'{/Do4$dDn1ɸ)2Mr#npH)<X<:O4^ (m <|\])
+2+/y/ƻěy0#WM6I"鸵 g3|@ 6T ,X:%Yh7Y9˱&\qd(ڐ^/D9nOB~썀z:%]!y%\`ž<던7}~种sb f?tlc3=ds8%QFM#SΤ;S1yו
+`{$6֡י81)?]qD}#ad4 NІYI]~Z4ÃeY7 ~*ᆑ4FO2>lJS<a>m;`&އzԮ벏Z
+endstream
+endobj
+6257 0 obj
+<< /Type /Page /Contents 6258 0 R /Resources 6256 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 5841 0 R >>
+endobj
+6259 0 obj
+<< /D [ 6257 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+6260 0 obj
+<< /D [ 6257 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+89 0 obj
+<< /D [ 6257 0 R /XYZ 79.37 746.372 null ] >>
+endobj
+6261 0 obj
+<< /D [ 6257 0 R /XYZ 81.077 438.866 null ] >>
+endobj
+6262 0 obj
+<< /D [ 6257 0 R /XYZ 81.077 427.907 null ] >>
+endobj
+6263 0 obj
+<< /D [ 6257 0 R /XYZ 81.077 387.461 null ] >>
+endobj
+6264 0 obj
+<< /D [ 6257 0 R /XYZ 81.077 347.015 null ] >>
+endobj
+6265 0 obj
+<< /D [ 6257 0 R /XYZ 81.077 336.056 null ] >>
+endobj
+6266 0 obj
+<< /D [ 6257 0 R /XYZ 81.077 325.098 null ] >>
+endobj
+6267 0 obj
+<< /D [ 6257 0 R /XYZ 81.077 314.139 null ] >>
+endobj
+6268 0 obj
+<< /D [ 6257 0 R /XYZ 81.077 303.18 null ] >>
+endobj
+6269 0 obj
+<< /D [ 6257 0 R /XYZ 81.077 292.221 null ] >>
+endobj
+6270 0 obj
+<< /D [ 6257 0 R /XYZ 81.077 263.73 null ] >>
+endobj
+6271 0 obj
+<< /D [ 6257 0 R /XYZ 81.077 252.771 null ] >>
+endobj
+6272 0 obj
+<< /D [ 6257 0 R /XYZ 81.077 241.812 null ] >>
+endobj
+6273 0 obj
+<< /D [ 6257 0 R /XYZ 81.077 230.853 null ] >>
+endobj
+6274 0 obj
+<< /D [ 6257 0 R /XYZ 81.077 190.407 null ] >>
+endobj
+6275 0 obj
+<< /D [ 6257 0 R /XYZ 81.077 179.448 null ] >>
+endobj
+6276 0 obj
+<< /D [ 6257 0 R /XYZ 81.077 163.909 null ] >>
+endobj
+6277 0 obj
+<< /D [ 6257 0 R /XYZ 81.077 152.95 null ] >>
+endobj
+6278 0 obj
+<< /D [ 6257 0 R /XYZ 81.077 111.514 null ] >>
+endobj
+6279 0 obj
+<< /D [ 6257 0 R /XYZ 81.077 100.555 null ] >>
+endobj
+6280 0 obj
+<< /D [ 6257 0 R /XYZ 81.077 89.596 null ] >>
+endobj
+6281 0 obj
+<< /D [ 6257 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+6256 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F72 187 0 R /F19 184 0 R /F78 556 0 R /F20 186 0 R /F79 668 0 R /F76 318 0 R /F26 662 0 R /F70 185 0 R /F23 660 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+6284 0 obj
+<< /Filter /FlateDecode /Length 2304 >>
+stream
+xZMϯ040 H}`w!mv[Y濧!ZtZs&rLI|,,
+~|7߿#zTFL$Kzد~Z?-clpS/<{맮P7ŗ&#-dZτoM?TlC=9R,q -fΑGv&!ȵb+ _FL
+$sqaX
+'nHV$` x9iG\wTDl3QQyT腑!D"ZDBu8,X62׵-
+t1^i`*&_GC*7
+Ǧ)߾-걄nͶ Tn}"kn"J&1тӸ5/BPJ8 ̦:8d}1_7 9cT]VAkim1jʇ)JM+Klvfen<tbdڤU^DeL3gd[AF9ޚ=ouUelG|r9[~!owhKʻ;v<xE3(#H?oQE`<EC/4*&C,
+Yf0F
+0cpqsL&cg0UWJ ) nǺka"q^"Ρi!
+7zcj7EKތބbM1ƺ})ex{8l,djZUL02ZjWИcU4$kd޼
+tsڽ_MaYR@~//%1G8b}]> O](`˚^8:_:<_%8[&h>,.)Bq}"!oolCP #MBNm6㮞DOv{DO]s5*e NǮkݙ}ҾKR)Yn>Agc"+rwq
+V\hNS,H1k̺r~.Y
+dDgfd8>ٔbo%UHϣy6Hy0DD%4oa߸0ͤ,k%l+?^)z/1 W"ISn⊦~wj |3uwm;[Toty׿s?7
+"1y=G-LިT=G*h)S1rAtW%# :m
+'>ɧΊut~2ἶ|
+-M_"+5tNzKFe,=Lq$2
+纝t
+"l,ՇڽIhxEDliyM/+3E3V6Hf_X
+endstream
+endobj
+6283 0 obj
+<< /Type /Page /Contents 6284 0 R /Resources 6282 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 6334 0 R >>
+endobj
+6285 0 obj
+<< /D [ 6283 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+6286 0 obj
+<< /D [ 6283 0 R /XYZ 81.077 754.884 null ] >>
+endobj
+6287 0 obj
+<< /D [ 6283 0 R /XYZ 81.077 743.925 null ] >>
+endobj
+6288 0 obj
+<< /D [ 6283 0 R /XYZ 81.077 732.966 null ] >>
+endobj
+6289 0 obj
+<< /D [ 6283 0 R /XYZ 81.077 722.007 null ] >>
+endobj
+6290 0 obj
+<< /D [ 6283 0 R /XYZ 81.077 711.048 null ] >>
+endobj
+6291 0 obj
+<< /D [ 6283 0 R /XYZ 81.077 700.089 null ] >>
+endobj
+6292 0 obj
+<< /D [ 6283 0 R /XYZ 81.077 689.131 null ] >>
+endobj
+6293 0 obj
+<< /D [ 6283 0 R /XYZ 81.077 612.418 null ] >>
+endobj
+6294 0 obj
+<< /D [ 6283 0 R /XYZ 81.077 601.459 null ] >>
+endobj
+6295 0 obj
+<< /D [ 6283 0 R /XYZ 81.077 590.5 null ] >>
+endobj
+6296 0 obj
+<< /D [ 6283 0 R /XYZ 81.077 579.542 null ] >>
+endobj
+6297 0 obj
+<< /D [ 6283 0 R /XYZ 81.077 568.583 null ] >>
+endobj
+6298 0 obj
+<< /D [ 6283 0 R /XYZ 81.077 557.624 null ] >>
+endobj
+6299 0 obj
+<< /D [ 6283 0 R /XYZ 81.077 546.665 null ] >>
+endobj
+6300 0 obj
+<< /D [ 6283 0 R /XYZ 81.077 535.706 null ] >>
+endobj
+6301 0 obj
+<< /D [ 6283 0 R /XYZ 81.077 524.747 null ] >>
+endobj
+6302 0 obj
+<< /D [ 6283 0 R /XYZ 81.077 513.788 null ] >>
+endobj
+6303 0 obj
+<< /D [ 6283 0 R /XYZ 81.077 502.829 null ] >>
+endobj
+6304 0 obj
+<< /D [ 6283 0 R /XYZ 81.077 491.87 null ] >>
+endobj
+6305 0 obj
+<< /D [ 6283 0 R /XYZ 81.077 480.911 null ] >>
+endobj
+6306 0 obj
+<< /D [ 6283 0 R /XYZ 81.077 469.953 null ] >>
+endobj
+6307 0 obj
+<< /D [ 6283 0 R /XYZ 81.077 458.994 null ] >>
+endobj
+6308 0 obj
+<< /D [ 6283 0 R /XYZ 81.077 448.035 null ] >>
+endobj
+6309 0 obj
+<< /D [ 6283 0 R /XYZ 81.077 437.076 null ] >>
+endobj
+6310 0 obj
+<< /D [ 6283 0 R /XYZ 81.077 426.117 null ] >>
+endobj
+6311 0 obj
+<< /D [ 6283 0 R /XYZ 81.077 415.158 null ] >>
+endobj
+6312 0 obj
+<< /D [ 6283 0 R /XYZ 81.077 404.199 null ] >>
+endobj
+6313 0 obj
+<< /D [ 6283 0 R /XYZ 81.077 393.24 null ] >>
+endobj
+6314 0 obj
+<< /D [ 6283 0 R /XYZ 81.077 382.281 null ] >>
+endobj
+6315 0 obj
+<< /D [ 6283 0 R /XYZ 81.077 371.322 null ] >>
+endobj
+6316 0 obj
+<< /D [ 6283 0 R /XYZ 81.077 360.363 null ] >>
+endobj
+6317 0 obj
+<< /D [ 6283 0 R /XYZ 81.077 349.405 null ] >>
+endobj
+6318 0 obj
+<< /D [ 6283 0 R /XYZ 81.077 338.446 null ] >>
+endobj
+6319 0 obj
+<< /D [ 6283 0 R /XYZ 81.077 327.487 null ] >>
+endobj
+6320 0 obj
+<< /D [ 6283 0 R /XYZ 81.077 316.528 null ] >>
+endobj
+6321 0 obj
+<< /D [ 6283 0 R /XYZ 81.077 305.569 null ] >>
+endobj
+6322 0 obj
+<< /D [ 6283 0 R /XYZ 81.077 294.61 null ] >>
+endobj
+6323 0 obj
+<< /D [ 6283 0 R /XYZ 81.077 283.651 null ] >>
+endobj
+6324 0 obj
+<< /D [ 6283 0 R /XYZ 81.077 254.759 null ] >>
+endobj
+6325 0 obj
+<< /D [ 6283 0 R /XYZ 81.077 243.801 null ] >>
+endobj
+6326 0 obj
+<< /D [ 6283 0 R /XYZ 81.077 190.999 null ] >>
+endobj
+6327 0 obj
+<< /D [ 6283 0 R /XYZ 81.077 180.04 null ] >>
+endobj
+6328 0 obj
+<< /D [ 6283 0 R /XYZ 81.077 169.081 null ] >>
+endobj
+6329 0 obj
+<< /D [ 6283 0 R /XYZ 81.077 158.122 null ] >>
+endobj
+6330 0 obj
+<< /D [ 6283 0 R /XYZ 81.077 117.275 null ] >>
+endobj
+6331 0 obj
+<< /D [ 6283 0 R /XYZ 81.077 106.316 null ] >>
+endobj
+6332 0 obj
+<< /D [ 6283 0 R /XYZ 81.077 95.357 null ] >>
+endobj
+6333 0 obj
+<< /D [ 6283 0 R /XYZ 81.077 84.398 null ] >>
+endobj
+6282 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F20 186 0 R /F73 189 0 R /F69 183 0 R /F70 185 0 R /F75 317 0 R /F26 662 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+6337 0 obj
+<< /Filter /FlateDecode /Length 1898 >>
+stream
+xڵYMo6W%6\4P`я!- EaBl+˛ Mz'^,J#ߐ73T1OJo'?_|&5 E3()]fO쟫?c_o/b&S O eAh򸱥!ܚ7,6_˳sݻEUveXyŸeKXc%Th=ͫ@)\'Bǻ~_ę!ԈH\㈧
+ݪ\b&hBTNhORV^ilU0Cvwumj{LA=:ӆheUՏ?24/a"-.+vZ<ʶ8)SjEĤ9
+xF=W=A|Wb@쎌6BUƏM 6:2`p0fƏ]hxYu@BvEZ)A&Cyx{A)B%ShmAm\gL>͝$Ov*v? [sߕUn >;g];r:qŊC809&g6IKq%*&4u_M9/jd(]za|Ӆao$qq[jsOaJ<~蓆 ?L{U6nzIilc|89{!TYTDIЛXpbttf}dPPbi=,lw7^m,W`.E3,bi %<zW/VlkWaޣYтXQR_+,
+R ]>pT0121b. %bέ8J0PDļă ^~2${^p/4ؿ6dNh!g
+5㛫?~<j{Xͦq]CO-wQ(%vr. M2(8LNMx a%fն}UFKP
+S+$g`$ySxZ4A)ZP(wZ!f2
+Qr\uk,;-E{17C3oˬhʭʾ?2yV9pSqe).74P=8n N@j ZcpLfᝐ7FuP4Y_gL)\BZDaʰxVtkEd1`Cx eLMڣzv|_^t 5T|3lw}z_g@O%ŎY8SW_]<C5֙Ҩ Q7ZBtOY(bc23C'A;/qR!~mXМa,6ԐݑP4C<cLy LMd|U2kS9ÙD󢕢DwV+HLc@qu :bm:X&W-1)0ݩF_& `{gzVߠ) /k\sʟ-:q[LF}E2HiDq Y2:Ed㊈n| Pwؓ^A %GÞ |m`u-}'BK]D㨧#bMGXrFp;D|J-j7QO)r^_>+ Ď=s.ə@~r*F78/c!YC_d`=VHeΞWv7ڴ.h,T;g$XNTO3,.إ]mr,ys}1)U=3ǖJAHe߮N'ct
+endstream
+endobj
+6336 0 obj
+<< /Type /Page /Contents 6337 0 R /Resources 6335 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 6334 0 R >>
+endobj
+6338 0 obj
+<< /D [ 6336 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+6339 0 obj
+<< /D [ 6336 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+6340 0 obj
+<< /D [ 6336 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+6341 0 obj
+<< /D [ 6336 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+6342 0 obj
+<< /D [ 6336 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+6343 0 obj
+<< /D [ 6336 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+6344 0 obj
+<< /D [ 6336 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+6345 0 obj
+<< /D [ 6336 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+6346 0 obj
+<< /D [ 6336 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+6347 0 obj
+<< /D [ 6336 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+6348 0 obj
+<< /D [ 6336 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+6349 0 obj
+<< /D [ 6336 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+6350 0 obj
+<< /D [ 6336 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+6351 0 obj
+<< /D [ 6336 0 R /XYZ 81.077 637.325 null ] >>
+endobj
+6352 0 obj
+<< /D [ 6336 0 R /XYZ 81.077 626.366 null ] >>
+endobj
+6353 0 obj
+<< /D [ 6336 0 R /XYZ 81.077 615.407 null ] >>
+endobj
+6354 0 obj
+<< /D [ 6336 0 R /XYZ 81.077 604.448 null ] >>
+endobj
+6355 0 obj
+<< /D [ 6336 0 R /XYZ 81.077 551.646 null ] >>
+endobj
+6356 0 obj
+<< /D [ 6336 0 R /XYZ 81.077 540.687 null ] >>
+endobj
+6357 0 obj
+<< /D [ 6336 0 R /XYZ 81.077 529.728 null ] >>
+endobj
+6358 0 obj
+<< /D [ 6336 0 R /XYZ 81.077 518.769 null ] >>
+endobj
+6359 0 obj
+<< /D [ 6336 0 R /XYZ 81.077 507.811 null ] >>
+endobj
+6360 0 obj
+<< /D [ 6336 0 R /XYZ 81.077 496.852 null ] >>
+endobj
+6361 0 obj
+<< /D [ 6336 0 R /XYZ 81.077 444.05 null ] >>
+endobj
+6362 0 obj
+<< /D [ 6336 0 R /XYZ 81.077 433.091 null ] >>
+endobj
+6363 0 obj
+<< /D [ 6336 0 R /XYZ 81.077 422.132 null ] >>
+endobj
+6364 0 obj
+<< /D [ 6336 0 R /XYZ 81.077 411.173 null ] >>
+endobj
+6365 0 obj
+<< /D [ 6336 0 R /XYZ 81.077 370.326 null ] >>
+endobj
+6366 0 obj
+<< /D [ 6336 0 R /XYZ 81.077 359.367 null ] >>
+endobj
+6367 0 obj
+<< /D [ 6336 0 R /XYZ 81.077 348.408 null ] >>
+endobj
+6368 0 obj
+<< /D [ 6336 0 R /XYZ 81.077 337.449 null ] >>
+endobj
+6369 0 obj
+<< /D [ 6336 0 R /XYZ 81.077 326.49 null ] >>
+endobj
+6370 0 obj
+<< /D [ 6336 0 R /XYZ 81.077 285.644 null ] >>
+endobj
+6371 0 obj
+<< /D [ 6336 0 R /XYZ 81.077 274.685 null ] >>
+endobj
+6372 0 obj
+<< /D [ 6336 0 R /XYZ 81.077 263.726 null ] >>
+endobj
+6373 0 obj
+<< /D [ 6336 0 R /XYZ 81.077 252.767 null ] >>
+endobj
+6374 0 obj
+<< /D [ 6336 0 R /XYZ 81.077 241.808 null ] >>
+endobj
+6375 0 obj
+<< /D [ 6336 0 R /XYZ 81.077 210.924 null ] >>
+endobj
+6376 0 obj
+<< /D [ 6336 0 R /XYZ 81.077 199.965 null ] >>
+endobj
+6377 0 obj
+<< /D [ 6336 0 R /XYZ 81.077 189.006 null ] >>
+endobj
+6378 0 obj
+<< /D [ 6336 0 R /XYZ 81.077 178.047 null ] >>
+endobj
+6379 0 obj
+<< /D [ 6336 0 R /XYZ 81.077 167.088 null ] >>
+endobj
+6380 0 obj
+<< /D [ 6336 0 R /XYZ 81.077 156.129 null ] >>
+endobj
+6381 0 obj
+<< /D [ 6336 0 R /XYZ 81.077 113.29 null ] >>
+endobj
+6382 0 obj
+<< /D [ 6336 0 R /XYZ 81.077 102.331 null ] >>
+endobj
+6383 0 obj
+<< /D [ 6336 0 R /XYZ 81.077 91.372 null ] >>
+endobj
+6384 0 obj
+<< /D [ 6336 0 R /XYZ 81.077 80.413 null ] >>
+endobj
+6335 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+6387 0 obj
+<< /Filter /FlateDecode /Length 1533 >>
+stream
+xZKOH+RGN}0=n#$Ʊ3߷8ݮW
+k~k3FGfW%C]qDD;Nku~9B\dE;8jt|Lsj`&Vì:v@ m.WlFq W^珿VY^6TYVNCF] k՚.rs9@4
+ܷSdn/h a5EM`u渪˼~n67$j.0taꡜ$qdK ǝ|%Uĩ
+M
+?P0`WHE y@p %Ye圛P!V\NLB=&}^a>Z==]4-b@H:.^m:
+W^f6MQY"T[ܙ89EDiH\m[M%uFPvB_1-N.̓2ߞ"3WDP >R!$Q<qqGXC217—{%EsA&/vaf꺧FWY7=K_x3<k?ϳ~TM0'jo _Sωޏ|/6Ngb:6pU>9b3Zkuc?7,C2+VptôY8SHrb~iX9'F
+ FCc̼5Y^s}we 2X{19TSZgPِ?
+endstream
+endobj
+6386 0 obj
+<< /Type /Page /Contents 6387 0 R /Resources 6385 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 6334 0 R >>
+endobj
+6388 0 obj
+<< /D [ 6386 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+6389 0 obj
+<< /D [ 6386 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+6390 0 obj
+<< /D [ 6386 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+6391 0 obj
+<< /D [ 6386 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+6392 0 obj
+<< /D [ 6386 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+6393 0 obj
+<< /D [ 6386 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+6394 0 obj
+<< /D [ 6386 0 R /XYZ 81.077 686.992 null ] >>
+endobj
+6395 0 obj
+<< /D [ 6386 0 R /XYZ 81.077 676.033 null ] >>
+endobj
+6396 0 obj
+<< /D [ 6386 0 R /XYZ 81.077 665.074 null ] >>
+endobj
+6397 0 obj
+<< /D [ 6386 0 R /XYZ 81.077 654.115 null ] >>
+endobj
+6398 0 obj
+<< /D [ 6386 0 R /XYZ 81.077 643.156 null ] >>
+endobj
+6399 0 obj
+<< /D [ 6386 0 R /XYZ 81.077 632.197 null ] >>
+endobj
+6400 0 obj
+<< /D [ 6386 0 R /XYZ 81.077 621.238 null ] >>
+endobj
+6401 0 obj
+<< /D [ 6386 0 R /XYZ 81.077 610.279 null ] >>
+endobj
+6402 0 obj
+<< /D [ 6386 0 R /XYZ 81.077 599.321 null ] >>
+endobj
+6403 0 obj
+<< /D [ 6386 0 R /XYZ 81.077 561.316 null ] >>
+endobj
+6404 0 obj
+<< /D [ 6386 0 R /XYZ 81.077 550.357 null ] >>
+endobj
+6405 0 obj
+<< /D [ 6386 0 R /XYZ 81.077 539.398 null ] >>
+endobj
+6406 0 obj
+<< /D [ 6386 0 R /XYZ 81.077 528.44 null ] >>
+endobj
+6407 0 obj
+<< /D [ 6386 0 R /XYZ 81.077 517.481 null ] >>
+endobj
+6408 0 obj
+<< /D [ 6386 0 R /XYZ 81.077 506.522 null ] >>
+endobj
+6409 0 obj
+<< /D [ 6386 0 R /XYZ 81.077 495.563 null ] >>
+endobj
+6410 0 obj
+<< /D [ 6386 0 R /XYZ 81.077 484.604 null ] >>
+endobj
+6411 0 obj
+<< /D [ 6386 0 R /XYZ 81.077 473.645 null ] >>
+endobj
+6412 0 obj
+<< /D [ 6386 0 R /XYZ 81.077 435.641 null ] >>
+endobj
+6413 0 obj
+<< /D [ 6386 0 R /XYZ 81.077 424.682 null ] >>
+endobj
+6414 0 obj
+<< /D [ 6386 0 R /XYZ 81.077 413.723 null ] >>
+endobj
+6415 0 obj
+<< /D [ 6386 0 R /XYZ 81.077 402.764 null ] >>
+endobj
+6416 0 obj
+<< /D [ 6386 0 R /XYZ 81.077 391.805 null ] >>
+endobj
+6417 0 obj
+<< /D [ 6386 0 R /XYZ 81.077 380.846 null ] >>
+endobj
+6418 0 obj
+<< /D [ 6386 0 R /XYZ 81.077 369.887 null ] >>
+endobj
+6419 0 obj
+<< /D [ 6386 0 R /XYZ 81.077 358.928 null ] >>
+endobj
+6420 0 obj
+<< /D [ 6386 0 R /XYZ 81.077 347.97 null ] >>
+endobj
+6421 0 obj
+<< /D [ 6386 0 R /XYZ 81.077 309.965 null ] >>
+endobj
+6422 0 obj
+<< /D [ 6386 0 R /XYZ 81.077 299.006 null ] >>
+endobj
+6423 0 obj
+<< /D [ 6386 0 R /XYZ 81.077 288.047 null ] >>
+endobj
+6424 0 obj
+<< /D [ 6386 0 R /XYZ 81.077 277.089 null ] >>
+endobj
+6425 0 obj
+<< /D [ 6386 0 R /XYZ 81.077 266.13 null ] >>
+endobj
+6426 0 obj
+<< /D [ 6386 0 R /XYZ 81.077 255.171 null ] >>
+endobj
+6427 0 obj
+<< /D [ 6386 0 R /XYZ 81.077 244.212 null ] >>
+endobj
+6428 0 obj
+<< /D [ 6386 0 R /XYZ 81.077 233.253 null ] >>
+endobj
+6429 0 obj
+<< /D [ 6386 0 R /XYZ 81.077 222.294 null ] >>
+endobj
+6430 0 obj
+<< /D [ 6386 0 R /XYZ 81.077 211.335 null ] >>
+endobj
+6431 0 obj
+<< /D [ 6386 0 R /XYZ 81.077 171.436 null ] >>
+endobj
+6432 0 obj
+<< /D [ 6386 0 R /XYZ 81.077 160.477 null ] >>
+endobj
+6433 0 obj
+<< /D [ 6386 0 R /XYZ 81.077 122.473 null ] >>
+endobj
+6434 0 obj
+<< /D [ 6386 0 R /XYZ 81.077 111.514 null ] >>
+endobj
+6435 0 obj
+<< /D [ 6386 0 R /XYZ 81.077 100.555 null ] >>
+endobj
+6436 0 obj
+<< /D [ 6386 0 R /XYZ 81.077 89.596 null ] >>
+endobj
+6437 0 obj
+<< /D [ 6386 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+6385 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+6440 0 obj
+<< /Filter /FlateDecode /Length 2320 >>
+stream
+xڭZ[o~P/2O~b`f}p}JkԒTTH~{pH qP3F ~ כqd4atvsA!<#3-$j$AX\Hn.?_if) &Ȑo}K<ټ~_<=%啠ݻ곭")VEVq/|oS!X`۰Fn{O!QѲA^6&bzYEtzx&H5"4 "xWQ;llO+"&%R4nj#@ ^&[hČѝrbE~!8u???~>lRsĸiiB`ކqfY1ݏ-і'onCcM(Z0
+#Zrwlv툊Ke:?DE8C&̋ZAGʶ,rywߡюi/R2*)}="L'E`DŽ7 P'6k]
+dLl;}6Pu\uZ6f%A}&m7(KT+ZMp$t[6 >_'+G1yvNpG[I(XbSB|u8dijٸhB )֬i\|8)&cZAKL琌ġlJ7k0kLҍ)sqTrį8E yQJ1
+:x2Zܵ[R>ְLU`HnF_؀: N<LrPtwH]m 9NsW}I֙]Gdi`p@?[m{m1,>GiQE A
+endstream
+endobj
+6439 0 obj
+<< /Type /Page /Contents 6440 0 R /Resources 6438 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 6334 0 R >>
+endobj
+6441 0 obj
+<< /D [ 6439 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+6442 0 obj
+<< /D [ 6439 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+6443 0 obj
+<< /D [ 6439 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+6444 0 obj
+<< /D [ 6439 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+6445 0 obj
+<< /D [ 6439 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+6446 0 obj
+<< /D [ 6439 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+6447 0 obj
+<< /D [ 6439 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+6448 0 obj
+<< /D [ 6439 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+6449 0 obj
+<< /D [ 6439 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+6450 0 obj
+<< /D [ 6439 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+6451 0 obj
+<< /D [ 6439 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+6452 0 obj
+<< /D [ 6439 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+6453 0 obj
+<< /D [ 6439 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+6454 0 obj
+<< /D [ 6439 0 R /XYZ 81.077 637.325 null ] >>
+endobj
+6455 0 obj
+<< /D [ 6439 0 R /XYZ 81.077 570.575 null ] >>
+endobj
+6456 0 obj
+<< /D [ 6439 0 R /XYZ 81.077 559.616 null ] >>
+endobj
+6457 0 obj
+<< /D [ 6439 0 R /XYZ 81.077 548.657 null ] >>
+endobj
+6458 0 obj
+<< /D [ 6439 0 R /XYZ 81.077 537.698 null ] >>
+endobj
+6459 0 obj
+<< /D [ 6439 0 R /XYZ 81.077 526.74 null ] >>
+endobj
+6460 0 obj
+<< /D [ 6439 0 R /XYZ 81.077 515.781 null ] >>
+endobj
+6461 0 obj
+<< /D [ 6439 0 R /XYZ 81.077 484.896 null ] >>
+endobj
+6462 0 obj
+<< /D [ 6439 0 R /XYZ 81.077 473.938 null ] >>
+endobj
+6463 0 obj
+<< /D [ 6439 0 R /XYZ 81.077 462.979 null ] >>
+endobj
+6464 0 obj
+<< /D [ 6439 0 R /XYZ 81.077 452.02 null ] >>
+endobj
+6465 0 obj
+<< /D [ 6439 0 R /XYZ 81.077 441.061 null ] >>
+endobj
+6466 0 obj
+<< /D [ 6439 0 R /XYZ 81.077 430.102 null ] >>
+endobj
+6467 0 obj
+<< /D [ 6439 0 R /XYZ 81.077 419.143 null ] >>
+endobj
+6468 0 obj
+<< /D [ 6439 0 R /XYZ 81.077 408.184 null ] >>
+endobj
+6469 0 obj
+<< /D [ 6439 0 R /XYZ 81.077 397.225 null ] >>
+endobj
+6470 0 obj
+<< /D [ 6439 0 R /XYZ 81.077 288.632 null ] >>
+endobj
+6471 0 obj
+<< /D [ 6439 0 R /XYZ 81.077 277.674 null ] >>
+endobj
+6472 0 obj
+<< /D [ 6439 0 R /XYZ 81.077 248.782 null ] >>
+endobj
+6473 0 obj
+<< /D [ 6439 0 R /XYZ 81.077 237.823 null ] >>
+endobj
+6474 0 obj
+<< /D [ 6439 0 R /XYZ 81.077 226.864 null ] >>
+endobj
+6475 0 obj
+<< /D [ 6439 0 R /XYZ 81.077 215.905 null ] >>
+endobj
+6476 0 obj
+<< /D [ 6439 0 R /XYZ 81.077 204.946 null ] >>
+endobj
+6477 0 obj
+<< /D [ 6439 0 R /XYZ 81.077 193.987 null ] >>
+endobj
+6478 0 obj
+<< /D [ 6439 0 R /XYZ 81.077 153.141 null ] >>
+endobj
+6479 0 obj
+<< /D [ 6439 0 R /XYZ 81.077 142.182 null ] >>
+endobj
+6480 0 obj
+<< /D [ 6439 0 R /XYZ 81.077 131.223 null ] >>
+endobj
+6481 0 obj
+<< /D [ 6439 0 R /XYZ 81.077 120.264 null ] >>
+endobj
+6438 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F70 185 0 R /F76 318 0 R /F75 317 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+6484 0 obj
+<< /Filter /FlateDecode /Length 2242 >>
+stream
+xڭZ]o6}_a`j o~( l݇<SLq$WǓR(Rqӝ&$+ŧ^}5 /nxd4bj$AXV [+r[?+[WT-möO쳹C
+ۤWfS|Pf1w; YṇK|;jlMm{0!_>b?bc @qcޙ˼^q_0 e 8ip9mKhı !0vϢdFΌnf\ ,>hbd?4`&_ kXiŻaC^nr{zk Vg HQ#iRdkdnx6` WBG:!]$IgL<?_KH`|LFh6Zܬi=~&SsßrDkG *0r$ͩ' xxs
+%FoSQ;5>]ۗ vgj$ Z8Iqm赻]ߔo3VH28(9СomZ!/ljmM#8mT[a;@{+E~lCpPV)y3EYˍՖfe`DCsC!BI*gSɉRչw8^mW^KE/Kx69fZ {qۉ"7sm>u~,R}f_ɢ "`dBH[YVWayHY0L0 .4JXv]Xkhfv1Ng>gE!p&n7( K7֛&%.CG׈hTvX!,N}xwUeb&G@&D65mm#JD)Eڥ
+8uq}30\dzBvY" /tK]*=m[7.;k(gl?tfpYS:N^%_*蕅z+? %<˸vtgjJ૾U`Ѣ%A$7™HI6+ޣDLגKDy=35-r>/p,aO|^
+ DEf>ᠼ!z;MDXe0kB.$ :ExHR&ET¬GfgUYdbRsnI<9Ctі .焖({~hw(NY#3'N_ə Asc"Ϥq$
+",z0Wiu817*f6/S |rF A<aL#7|[۳M(bp E.)DY`
+^6m+oˬD8$0S
+DNÚGW*f
+endstream
+endobj
+6483 0 obj
+<< /Type /Page /Contents 6484 0 R /Resources 6482 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 6334 0 R >>
+endobj
+6485 0 obj
+<< /D [ 6483 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+6486 0 obj
+<< /D [ 6483 0 R /XYZ 81.077 742.929 null ] >>
+endobj
+6487 0 obj
+<< /D [ 6483 0 R /XYZ 81.077 731.97 null ] >>
+endobj
+6488 0 obj
+<< /D [ 6483 0 R /XYZ 81.077 721.011 null ] >>
+endobj
+6489 0 obj
+<< /D [ 6483 0 R /XYZ 81.077 710.052 null ] >>
+endobj
+6490 0 obj
+<< /D [ 6483 0 R /XYZ 81.077 699.093 null ] >>
+endobj
+6491 0 obj
+<< /D [ 6483 0 R /XYZ 81.077 688.134 null ] >>
+endobj
+6492 0 obj
+<< /D [ 6483 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+6493 0 obj
+<< /D [ 6483 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+6494 0 obj
+<< /D [ 6483 0 R /XYZ 81.077 637.325 null ] >>
+endobj
+6495 0 obj
+<< /D [ 6483 0 R /XYZ 81.077 626.366 null ] >>
+endobj
+6496 0 obj
+<< /D [ 6483 0 R /XYZ 81.077 615.407 null ] >>
+endobj
+6497 0 obj
+<< /D [ 6483 0 R /XYZ 81.077 604.448 null ] >>
+endobj
+6498 0 obj
+<< /D [ 6483 0 R /XYZ 81.077 563.601 null ] >>
+endobj
+6499 0 obj
+<< /D [ 6483 0 R /XYZ 81.077 552.642 null ] >>
+endobj
+6500 0 obj
+<< /D [ 6483 0 R /XYZ 81.077 541.684 null ] >>
+endobj
+6501 0 obj
+<< /D [ 6483 0 R /XYZ 81.077 530.725 null ] >>
+endobj
+6502 0 obj
+<< /D [ 6483 0 R /XYZ 81.077 519.766 null ] >>
+endobj
+6503 0 obj
+<< /D [ 6483 0 R /XYZ 81.077 508.807 null ] >>
+endobj
+6504 0 obj
+<< /D [ 6483 0 R /XYZ 81.077 497.848 null ] >>
+endobj
+6505 0 obj
+<< /D [ 6483 0 R /XYZ 81.077 468.956 null ] >>
+endobj
+6506 0 obj
+<< /D [ 6483 0 R /XYZ 81.077 440.065 null ] >>
+endobj
+6507 0 obj
+<< /D [ 6483 0 R /XYZ 81.077 429.106 null ] >>
+endobj
+6508 0 obj
+<< /D [ 6483 0 R /XYZ 81.077 418.147 null ] >>
+endobj
+6509 0 obj
+<< /D [ 6483 0 R /XYZ 81.077 407.188 null ] >>
+endobj
+6510 0 obj
+<< /D [ 6483 0 R /XYZ 81.077 396.229 null ] >>
+endobj
+6511 0 obj
+<< /D [ 6483 0 R /XYZ 81.077 367.337 null ] >>
+endobj
+6512 0 obj
+<< /D [ 6483 0 R /XYZ 81.077 356.378 null ] >>
+endobj
+6513 0 obj
+<< /D [ 6483 0 R /XYZ 81.077 345.42 null ] >>
+endobj
+6514 0 obj
+<< /D [ 6483 0 R /XYZ 81.077 316.528 null ] >>
+endobj
+6515 0 obj
+<< /D [ 6483 0 R /XYZ 81.077 305.569 null ] >>
+endobj
+6516 0 obj
+<< /D [ 6483 0 R /XYZ 81.077 294.61 null ] >>
+endobj
+6517 0 obj
+<< /D [ 6483 0 R /XYZ 81.077 283.651 null ] >>
+endobj
+6518 0 obj
+<< /D [ 6483 0 R /XYZ 81.077 272.692 null ] >>
+endobj
+6519 0 obj
+<< /D [ 6483 0 R /XYZ 81.077 261.733 null ] >>
+endobj
+6520 0 obj
+<< /D [ 6483 0 R /XYZ 81.077 250.774 null ] >>
+endobj
+6521 0 obj
+<< /D [ 6483 0 R /XYZ 81.077 239.816 null ] >>
+endobj
+6522 0 obj
+<< /D [ 6483 0 R /XYZ 81.077 228.857 null ] >>
+endobj
+6523 0 obj
+<< /D [ 6483 0 R /XYZ 81.077 217.898 null ] >>
+endobj
+6524 0 obj
+<< /D [ 6483 0 R /XYZ 81.077 206.939 null ] >>
+endobj
+6525 0 obj
+<< /D [ 6483 0 R /XYZ 81.077 195.98 null ] >>
+endobj
+6526 0 obj
+<< /D [ 6483 0 R /XYZ 81.077 185.021 null ] >>
+endobj
+6527 0 obj
+<< /D [ 6483 0 R /XYZ 81.077 174.062 null ] >>
+endobj
+6528 0 obj
+<< /D [ 6483 0 R /XYZ 81.077 163.103 null ] >>
+endobj
+6529 0 obj
+<< /D [ 6483 0 R /XYZ 81.077 152.144 null ] >>
+endobj
+6530 0 obj
+<< /D [ 6483 0 R /XYZ 81.077 141.185 null ] >>
+endobj
+6531 0 obj
+<< /D [ 6483 0 R /XYZ 81.077 130.226 null ] >>
+endobj
+6532 0 obj
+<< /D [ 6483 0 R /XYZ 81.077 119.268 null ] >>
+endobj
+6533 0 obj
+<< /D [ 6483 0 R /XYZ 81.077 108.309 null ] >>
+endobj
+6534 0 obj
+<< /D [ 6483 0 R /XYZ 81.077 97.35 null ] >>
+endobj
+6535 0 obj
+<< /D [ 6483 0 R /XYZ 81.077 86.391 null ] >>
+endobj
+6482 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F23 660 0 R /F20 186 0 R /F73 189 0 R /F69 183 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+6538 0 obj
+<< /Filter /FlateDecode /Length 2343 >>
+stream
+xڭZKo8W t4Ѓn
+x8auMҘϕ.bV"9"$tT|
+  VIq$ T!+ӊN
+/fuDc{RYulUCOo{7]c2{'&{?o$A:d5_Xyʢ݉6ZN+ӭ-f{U浅}2\2H
+B Qd_3%*)ǖO^5g&ERN OR־XYD˛d.&P K>;/ϝT" `wLl4ϪV~9ٻS'2n/"PbC`kX dnsiU3Lqo
+gajmiS(N)pwG4YX,Q?Sk<ΦPW'ǵBX듫mlgvΝ΁ ky\t*!pUKٍyGu??Us뮢2կNE
+w B˷}fl̫R
+J۔GJ4!Hyrh,(<qI4@ /gS:BSe
+5?Itwš渻LhuXq_TO֤!ݱ}mɍN,yEr
+ers?wV2,Xէ+*]vtKvĦ Ww+">HR =79S-&ӴXwtۛ-ܴwQ.w YNFGZ2''Q=T<v_S !KyfH8#Z~=_W^qBO9w?tə_rp:ꮢgfy?y؛x&h|JF]d[8!l{S>ڽ{ "b2mΜi:5+-0*0:af0$`S?cD![Օ[Cy۪kvOo$H 5!8 /UY:woj˪ߘ` -
+d\$UqeTWUGx
+#EWT?`;MUČNweo ,;a0
+endstream
+endobj
+6537 0 obj
+<< /Type /Page /Contents 6538 0 R /Resources 6536 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 6334 0 R >>
+endobj
+6539 0 obj
+<< /D [ 6537 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+6540 0 obj
+<< /D [ 6537 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+6541 0 obj
+<< /D [ 6537 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+6542 0 obj
+<< /D [ 6537 0 R /XYZ 81.077 711.281 null ] >>
+endobj
+6543 0 obj
+<< /D [ 6537 0 R /XYZ 81.077 700.322 null ] >>
+endobj
+6544 0 obj
+<< /D [ 6537 0 R /XYZ 81.077 689.363 null ] >>
+endobj
+6545 0 obj
+<< /D [ 6537 0 R /XYZ 81.077 678.404 null ] >>
+endobj
+6546 0 obj
+<< /D [ 6537 0 R /XYZ 81.077 667.445 null ] >>
+endobj
+6547 0 obj
+<< /D [ 6537 0 R /XYZ 81.077 656.486 null ] >>
+endobj
+6548 0 obj
+<< /D [ 6537 0 R /XYZ 81.077 592.078 null ] >>
+endobj
+6549 0 obj
+<< /D [ 6537 0 R /XYZ 81.077 581.119 null ] >>
+endobj
+6550 0 obj
+<< /D [ 6537 0 R /XYZ 81.077 538.687 null ] >>
+endobj
+6551 0 obj
+<< /D [ 6537 0 R /XYZ 81.077 527.728 null ] >>
+endobj
+6552 0 obj
+<< /D [ 6537 0 R /XYZ 81.077 516.769 null ] >>
+endobj
+6553 0 obj
+<< /D [ 6537 0 R /XYZ 81.077 505.81 null ] >>
+endobj
+6554 0 obj
+<< /D [ 6537 0 R /XYZ 81.077 494.851 null ] >>
+endobj
+6555 0 obj
+<< /D [ 6537 0 R /XYZ 81.077 462.439 null ] >>
+endobj
+6556 0 obj
+<< /D [ 6537 0 R /XYZ 81.077 451.48 null ] >>
+endobj
+6557 0 obj
+<< /D [ 6537 0 R /XYZ 81.077 440.521 null ] >>
+endobj
+6558 0 obj
+<< /D [ 6537 0 R /XYZ 81.077 429.563 null ] >>
+endobj
+6559 0 obj
+<< /D [ 6537 0 R /XYZ 81.077 418.604 null ] >>
+endobj
+6560 0 obj
+<< /D [ 6537 0 R /XYZ 81.077 407.645 null ] >>
+endobj
+6561 0 obj
+<< /D [ 6537 0 R /XYZ 81.077 396.686 null ] >>
+endobj
+6562 0 obj
+<< /D [ 6537 0 R /XYZ 81.077 385.727 null ] >>
+endobj
+6563 0 obj
+<< /D [ 6537 0 R /XYZ 81.077 374.768 null ] >>
+endobj
+6564 0 obj
+<< /D [ 6537 0 R /XYZ 81.077 363.809 null ] >>
+endobj
+6565 0 obj
+<< /D [ 6537 0 R /XYZ 81.077 321.377 null ] >>
+endobj
+6566 0 obj
+<< /D [ 6537 0 R /XYZ 81.077 310.418 null ] >>
+endobj
+6567 0 obj
+<< /D [ 6537 0 R /XYZ 81.077 299.459 null ] >>
+endobj
+6568 0 obj
+<< /D [ 6537 0 R /XYZ 81.077 288.5 null ] >>
+endobj
+6569 0 obj
+<< /D [ 6537 0 R /XYZ 81.077 277.541 null ] >>
+endobj
+6570 0 obj
+<< /D [ 6537 0 R /XYZ 81.077 266.582 null ] >>
+endobj
+6571 0 obj
+<< /D [ 6537 0 R /XYZ 81.077 255.623 null ] >>
+endobj
+6572 0 obj
+<< /D [ 6537 0 R /XYZ 81.077 244.664 null ] >>
+endobj
+6573 0 obj
+<< /D [ 6537 0 R /XYZ 81.077 233.705 null ] >>
+endobj
+6574 0 obj
+<< /D [ 6537 0 R /XYZ 81.077 222.746 null ] >>
+endobj
+6575 0 obj
+<< /D [ 6537 0 R /XYZ 81.077 122.473 null ] >>
+endobj
+6576 0 obj
+<< /D [ 6537 0 R /XYZ 81.077 111.514 null ] >>
+endobj
+6577 0 obj
+<< /D [ 6537 0 R /XYZ 81.077 100.555 null ] >>
+endobj
+6578 0 obj
+<< /D [ 6537 0 R /XYZ 81.077 89.596 null ] >>
+endobj
+6579 0 obj
+<< /D [ 6537 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+6536 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F76 318 0 R /F23 660 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+6582 0 obj
+<< /Filter /FlateDecode /Length 1763 >>
+stream
+xZ[oF~ϯ@ h/HVJ}Cԇne9I\f6x% ݗ@<ߜ9Fxo?hٿ.~_VlđфExDFZ"IHI$rX(e&sz-H##%>p{Q0EWWQ^,(uEEuxEJ`D0ݒFG7,E\IyG˰\Y305fQ#0j>7Ոh-4bFF,UQ\՟g7TP1hqQyRV"ɲ*tB
+GFW*dn/+s7v%>~@c>6BibX9jd,9bܸa{3듂hފYSv[+`O\$%EHa A̺A~MX܇(ݎ $XӲL1iqN7It_Ӫ[wɢu݅Fq]iD4˺)U~enMܯ{"Nrɫ\/U{R}eX_ʤZgu?BSz7s>kuwִd' h2圏[q^&Ċ"hqߥls I90c ,(O6Ѫ,jkfC%F# \+B8o5y!J^qh-UkAPz8"ƽiN:557Yaqm1O{%)w<̺zíSDgd[Ҫ*J,͓MEIc+\
+ns+  B&X*S[w`k/Wq:oU&(CL6FG7ꬩTܪ4S˙4\ym$
+;ź<zzLfG͢G;7uQ0>{zspl39Llfow(AMmc9#X=A.XrEl Ch 48qic6noj`E"nU1J!e2u>r~.3" r ߛ*dky7,距 О-OMngfV6,_DcNgpۮJyz~oL3ĕr547fAK\$H 
+3[yq65Ov)0hM?}+ $%HagŒGN Okc'U>Eg`=p_?Ӄb:M1HWNXJ<z=}3lM7r> <i
+Իtun}cne.YI
+{^SĶ
+^7ܗc?b *]@a4 K9,]qx50_gL $L>M0ʌ+ܨGq?=0Ū,;o6$D!$p`jМ7&X"A\m0L>H ,3 ? }YV_1$ݏ}4z? `Dq%BX\~_͌=
+endstream
+endobj
+6581 0 obj
+<< /Type /Page /Contents 6582 0 R /Resources 6580 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 6334 0 R >>
+endobj
+6583 0 obj
+<< /D [ 6581 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+6584 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+6585 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+6586 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+6587 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+6588 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+6589 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+6590 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+6591 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+6592 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+6593 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+6594 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 617.4 null ] >>
+endobj
+6595 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 606.441 null ] >>
+endobj
+6596 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 595.482 null ] >>
+endobj
+6597 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 566.59 null ] >>
+endobj
+6598 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 555.631 null ] >>
+endobj
+6599 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 544.672 null ] >>
+endobj
+6600 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 533.713 null ] >>
+endobj
+6601 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 522.754 null ] >>
+endobj
+6602 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 511.796 null ] >>
+endobj
+6603 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 500.837 null ] >>
+endobj
+6604 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 489.878 null ] >>
+endobj
+6605 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 478.919 null ] >>
+endobj
+6606 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 467.96 null ] >>
+endobj
+6607 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 457.001 null ] >>
+endobj
+6608 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 446.042 null ] >>
+endobj
+6609 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 435.083 null ] >>
+endobj
+6610 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 424.124 null ] >>
+endobj
+6611 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 413.165 null ] >>
+endobj
+6612 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 402.207 null ] >>
+endobj
+6613 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 391.248 null ] >>
+endobj
+6614 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 380.289 null ] >>
+endobj
+6615 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 369.33 null ] >>
+endobj
+6616 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 358.371 null ] >>
+endobj
+6617 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 329.479 null ] >>
+endobj
+6618 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 318.52 null ] >>
+endobj
+6619 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 307.561 null ] >>
+endobj
+6620 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 296.603 null ] >>
+endobj
+6621 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 285.644 null ] >>
+endobj
+6622 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 274.685 null ] >>
+endobj
+6623 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 263.726 null ] >>
+endobj
+6624 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 234.834 null ] >>
+endobj
+6625 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 223.875 null ] >>
+endobj
+6626 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 212.916 null ] >>
+endobj
+6627 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 201.957 null ] >>
+endobj
+6628 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 190.999 null ] >>
+endobj
+6629 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 180.04 null ] >>
+endobj
+6630 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 169.081 null ] >>
+endobj
+6631 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 158.122 null ] >>
+endobj
+6632 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 147.163 null ] >>
+endobj
+6633 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 136.204 null ] >>
+endobj
+6634 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 125.245 null ] >>
+endobj
+6635 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 114.286 null ] >>
+endobj
+6636 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 103.327 null ] >>
+endobj
+6637 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 92.368 null ] >>
+endobj
+6638 0 obj
+<< /D [ 6581 0 R /XYZ 81.077 81.41 null ] >>
+endobj
+6580 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F78 556 0 R /F20 186 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+6641 0 obj
+<< /Filter /FlateDecode /Length 1950 >>
+stream
+xZKoW4k"H`$@@t%R[3俧%ݏxXm7E O/>b!5LItFE-wG_Zn]bf
+fqL8aB6$HZqՎnf4qh$uVn%9aϊFY]ƳCKu֬ʣ|O&E<n"M?+I%ӗIc h<mn3ӎ/ քanV٪+k7N)%i&M*)BNՐgT- q-ŖrMoiB"*\Gϻ%75Ȫ{S>tO7lQխSwIuy3k q Gː%'`TkmOI ɎxfLʥ .F ( Эè[_9 `k`FR^yong2ԛjT^ /r]nPkM$^*j*9*hC?Ol}Uu3_l+-h)D8Qh&u8^|LӪJT%8O6 JX/!. Ü uΉF8Mg0F4Y8}|ul]V}X(%ZRƨ2@jkcAo2'ҠDgDhu|hxcCb94rOV<p
+5"Di+M G]1Jh<mۨ XD9@_*`r9Oc]+i2˧Ƿv[w?_ dq0}~6*7WA6eO{py>_?/rdۋfqeꥎc2}VUgDVQE~Յ2bY"{IUـ6$؀O[UyZ$K'EY\|K+ (e PAYՅaSey%uK[W
+endstream
+endobj
+6640 0 obj
+<< /Type /Page /Contents 6641 0 R /Resources 6639 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 6334 0 R >>
+endobj
+6642 0 obj
+<< /D [ 6640 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+6643 0 obj
+<< /D [ 6640 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+6644 0 obj
+<< /D [ 6640 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+6645 0 obj
+<< /D [ 6640 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+6646 0 obj
+<< /D [ 6640 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+6647 0 obj
+<< /D [ 6640 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+6648 0 obj
+<< /D [ 6640 0 R /XYZ 81.077 696.104 null ] >>
+endobj
+6649 0 obj
+<< /D [ 6640 0 R /XYZ 81.077 685.146 null ] >>
+endobj
+6650 0 obj
+<< /D [ 6640 0 R /XYZ 81.077 674.187 null ] >>
+endobj
+6651 0 obj
+<< /D [ 6640 0 R /XYZ 81.077 663.228 null ] >>
+endobj
+6652 0 obj
+<< /D [ 6640 0 R /XYZ 81.077 652.269 null ] >>
+endobj
+6653 0 obj
+<< /D [ 6640 0 R /XYZ 81.077 641.31 null ] >>
+endobj
+6654 0 obj
+<< /D [ 6640 0 R /XYZ 81.077 630.351 null ] >>
+endobj
+6655 0 obj
+<< /D [ 6640 0 R /XYZ 81.077 619.392 null ] >>
+endobj
+6656 0 obj
+<< /D [ 6640 0 R /XYZ 81.077 608.433 null ] >>
+endobj
+6657 0 obj
+<< /D [ 6640 0 R /XYZ 81.077 597.474 null ] >>
+endobj
+6658 0 obj
+<< /D [ 6640 0 R /XYZ 81.077 586.515 null ] >>
+endobj
+6659 0 obj
+<< /D [ 6640 0 R /XYZ 81.077 575.556 null ] >>
+endobj
+6660 0 obj
+<< /D [ 6640 0 R /XYZ 81.077 564.598 null ] >>
+endobj
+6661 0 obj
+<< /D [ 6640 0 R /XYZ 81.077 553.639 null ] >>
+endobj
+6662 0 obj
+<< /D [ 6640 0 R /XYZ 81.077 512.792 null ] >>
+endobj
+6663 0 obj
+<< /D [ 6640 0 R /XYZ 81.077 501.833 null ] >>
+endobj
+6664 0 obj
+<< /D [ 6640 0 R /XYZ 81.077 490.874 null ] >>
+endobj
+6665 0 obj
+<< /D [ 6640 0 R /XYZ 81.077 479.915 null ] >>
+endobj
+6666 0 obj
+<< /D [ 6640 0 R /XYZ 81.077 451.023 null ] >>
+endobj
+6667 0 obj
+<< /D [ 6640 0 R /XYZ 81.077 440.065 null ] >>
+endobj
+6668 0 obj
+<< /D [ 6640 0 R /XYZ 81.077 429.106 null ] >>
+endobj
+6669 0 obj
+<< /D [ 6640 0 R /XYZ 81.077 418.147 null ] >>
+endobj
+6670 0 obj
+<< /D [ 6640 0 R /XYZ 81.077 407.188 null ] >>
+endobj
+6671 0 obj
+<< /D [ 6640 0 R /XYZ 81.077 396.229 null ] >>
+endobj
+6672 0 obj
+<< /D [ 6640 0 R /XYZ 81.077 385.27 null ] >>
+endobj
+6673 0 obj
+<< /D [ 6640 0 R /XYZ 81.077 374.311 null ] >>
+endobj
+6674 0 obj
+<< /D [ 6640 0 R /XYZ 81.077 345.42 null ] >>
+endobj
+6675 0 obj
+<< /D [ 6640 0 R /XYZ 81.077 334.461 null ] >>
+endobj
+6676 0 obj
+<< /D [ 6640 0 R /XYZ 81.077 323.502 null ] >>
+endobj
+6677 0 obj
+<< /D [ 6640 0 R /XYZ 81.077 312.543 null ] >>
+endobj
+6678 0 obj
+<< /D [ 6640 0 R /XYZ 81.077 301.584 null ] >>
+endobj
+6679 0 obj
+<< /D [ 6640 0 R /XYZ 81.077 290.625 null ] >>
+endobj
+6680 0 obj
+<< /D [ 6640 0 R /XYZ 81.077 279.666 null ] >>
+endobj
+6681 0 obj
+<< /D [ 6640 0 R /XYZ 81.077 268.707 null ] >>
+endobj
+6682 0 obj
+<< /D [ 6640 0 R /XYZ 81.077 257.748 null ] >>
+endobj
+6683 0 obj
+<< /D [ 6640 0 R /XYZ 81.077 246.789 null ] >>
+endobj
+6684 0 obj
+<< /D [ 6640 0 R /XYZ 81.077 235.83 null ] >>
+endobj
+6685 0 obj
+<< /D [ 6640 0 R /XYZ 81.077 224.872 null ] >>
+endobj
+6686 0 obj
+<< /D [ 6640 0 R /XYZ 81.077 213.913 null ] >>
+endobj
+6687 0 obj
+<< /D [ 6640 0 R /XYZ 81.077 202.954 null ] >>
+endobj
+6688 0 obj
+<< /D [ 6640 0 R /XYZ 81.077 191.995 null ] >>
+endobj
+6689 0 obj
+<< /D [ 6640 0 R /XYZ 81.077 181.036 null ] >>
+endobj
+6690 0 obj
+<< /D [ 6640 0 R /XYZ 81.077 170.077 null ] >>
+endobj
+6691 0 obj
+<< /D [ 6640 0 R /XYZ 81.077 159.118 null ] >>
+endobj
+6692 0 obj
+<< /D [ 6640 0 R /XYZ 81.077 148.159 null ] >>
+endobj
+6693 0 obj
+<< /D [ 6640 0 R /XYZ 81.077 95.357 null ] >>
+endobj
+6639 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F23 660 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+6696 0 obj
+<< /Filter /FlateDecode /Length 2384 >>
+stream
+xZKsϯPjl tHMe7Mޭbl3CZ{ABmɂ=\$_7ݍvg>=HK*xFfF,% ,r5}iEkN8#m\VBۻM] MEunjUKwOΨ :7&߯]c}r7;tr05gwe2 =eMQ]ӏvm|=_SFK']G 2պu(]wpK:ҽ1)59ޖKᵓž_\Ϧʭj٠Z֦Բml7fE]lN >0,AD\YexaBfa1M]ge梓6
+,y6H+蘂H`O9B):Mù3%SL&!07ienMޚb ӏ<۴)*SVu'ܢ{ߓh"ʹ/ObTA T ?vrms]eژ6#4k*6fWcJAf٪(KeѴ)aۤmϏmL<mG{>.]\HbDyBJ-^{#xP:G^e<m3,avU2՞'~5,]e봨ʢ+/'H?˚Ǔa<DG/cIBcØ(@2by =OvO7 я#nY䃟}S<sx='w-+058zdETT ߎB*(
+YAdHɳO&5L=XeU0OŊ}Bn((
+ |4m1p8=Xw_G?/B6.no~Sq6H`d#B%અ`Akk1+.CsAfC^ߣc,JB=/۬t `pz:U9Rɑ8 1G*a
+DANӡ ><J<Ns
+{Xbz8a &D2#5I.:/o;IѓN)>}AK\nS,f.Lɘ T
+$F;.M{<GN'`|2
+endstream
+endobj
+6695 0 obj
+<< /Type /Page /Contents 6696 0 R /Resources 6694 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 6334 0 R >>
+endobj
+6697 0 obj
+<< /D [ 6695 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+6698 0 obj
+<< /D [ 6695 0 R /XYZ 81.077 730.974 null ] >>
+endobj
+6699 0 obj
+<< /D [ 6695 0 R /XYZ 81.077 720.015 null ] >>
+endobj
+6700 0 obj
+<< /D [ 6695 0 R /XYZ 81.077 709.056 null ] >>
+endobj
+6701 0 obj
+<< /D [ 6695 0 R /XYZ 81.077 698.097 null ] >>
+endobj
+6702 0 obj
+<< /D [ 6695 0 R /XYZ 81.077 687.138 null ] >>
+endobj
+6703 0 obj
+<< /D [ 6695 0 R /XYZ 81.077 658.246 null ] >>
+endobj
+6704 0 obj
+<< /D [ 6695 0 R /XYZ 81.077 647.288 null ] >>
+endobj
+6705 0 obj
+<< /D [ 6695 0 R /XYZ 81.077 636.329 null ] >>
+endobj
+6706 0 obj
+<< /D [ 6695 0 R /XYZ 81.077 625.37 null ] >>
+endobj
+6707 0 obj
+<< /D [ 6695 0 R /XYZ 81.077 614.411 null ] >>
+endobj
+6708 0 obj
+<< /D [ 6695 0 R /XYZ 81.077 603.452 null ] >>
+endobj
+6709 0 obj
+<< /D [ 6695 0 R /XYZ 81.077 538.695 null ] >>
+endobj
+6710 0 obj
+<< /D [ 6695 0 R /XYZ 81.077 527.736 null ] >>
+endobj
+6711 0 obj
+<< /D [ 6695 0 R /XYZ 81.077 516.777 null ] >>
+endobj
+6712 0 obj
+<< /D [ 6695 0 R /XYZ 81.077 505.818 null ] >>
+endobj
+6713 0 obj
+<< /D [ 6695 0 R /XYZ 81.077 494.859 null ] >>
+endobj
+6714 0 obj
+<< /D [ 6695 0 R /XYZ 81.077 483.9 null ] >>
+endobj
+6715 0 obj
+<< /D [ 6695 0 R /XYZ 81.077 472.941 null ] >>
+endobj
+6716 0 obj
+<< /D [ 6695 0 R /XYZ 81.077 461.982 null ] >>
+endobj
+6717 0 obj
+<< /D [ 6695 0 R /XYZ 81.077 451.023 null ] >>
+endobj
+6718 0 obj
+<< /D [ 6695 0 R /XYZ 81.077 440.065 null ] >>
+endobj
+6719 0 obj
+<< /D [ 6695 0 R /XYZ 81.077 429.106 null ] >>
+endobj
+6720 0 obj
+<< /D [ 6695 0 R /XYZ 81.077 418.147 null ] >>
+endobj
+6721 0 obj
+<< /D [ 6695 0 R /XYZ 81.077 407.188 null ] >>
+endobj
+6722 0 obj
+<< /D [ 6695 0 R /XYZ 81.077 396.229 null ] >>
+endobj
+6723 0 obj
+<< /D [ 6695 0 R /XYZ 81.077 385.27 null ] >>
+endobj
+6724 0 obj
+<< /D [ 6695 0 R /XYZ 81.077 374.311 null ] >>
+endobj
+6725 0 obj
+<< /D [ 6695 0 R /XYZ 81.077 363.352 null ] >>
+endobj
+6726 0 obj
+<< /D [ 6695 0 R /XYZ 81.077 352.393 null ] >>
+endobj
+6727 0 obj
+<< /D [ 6695 0 R /XYZ 81.077 341.434 null ] >>
+endobj
+6728 0 obj
+<< /D [ 6695 0 R /XYZ 81.077 330.476 null ] >>
+endobj
+6729 0 obj
+<< /D [ 6695 0 R /XYZ 81.077 319.517 null ] >>
+endobj
+6730 0 obj
+<< /D [ 6695 0 R /XYZ 81.077 308.558 null ] >>
+endobj
+6731 0 obj
+<< /D [ 6695 0 R /XYZ 81.077 297.599 null ] >>
+endobj
+6732 0 obj
+<< /D [ 6695 0 R /XYZ 81.077 286.64 null ] >>
+endobj
+6733 0 obj
+<< /D [ 6695 0 R /XYZ 81.077 233.838 null ] >>
+endobj
+6734 0 obj
+<< /D [ 6695 0 R /XYZ 81.077 222.879 null ] >>
+endobj
+6735 0 obj
+<< /D [ 6695 0 R /XYZ 81.077 211.92 null ] >>
+endobj
+6736 0 obj
+<< /D [ 6695 0 R /XYZ 81.077 200.961 null ] >>
+endobj
+6737 0 obj
+<< /D [ 6695 0 R /XYZ 81.077 190.002 null ] >>
+endobj
+6738 0 obj
+<< /D [ 6695 0 R /XYZ 81.077 149.155 null ] >>
+endobj
+6739 0 obj
+<< /D [ 6695 0 R /XYZ 81.077 138.197 null ] >>
+endobj
+6740 0 obj
+<< /D [ 6695 0 R /XYZ 81.077 127.238 null ] >>
+endobj
+6741 0 obj
+<< /D [ 6695 0 R /XYZ 81.077 116.279 null ] >>
+endobj
+6742 0 obj
+<< /D [ 6695 0 R /XYZ 81.077 105.32 null ] >>
+endobj
+6694 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F70 185 0 R /F73 189 0 R /F69 183 0 R /F20 186 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+6745 0 obj
+<< /Filter /FlateDecode /Length 2715 >>
+stream
+xڭZKoϯh˷H&nhm3jGRw`Ѓr[-9MQ,XA
+~o?3+n| *ՈT%YW%n*iiVK|2ɿ_~/XSP,<\hSU}+}O3IB\#㗪(K&qwp#.J<Ůjr?fBT萕τz
+"p$f!4,'#cIF
+{<+G{@<떝Z!c ʸ VZ%_"UHh$ !b$2|y" G@{YD@ũ'
+`=$.W2xmxDg,`Y@eW3)|n~ Σ-Nx
+I=c"* o ,7ȕIq< O<
+iپ#_
+ib QIE@mx"s3 $a~k"1g]_ߔ[g/_ԠMC띉ɽC.2$UT<-u~_yĦ^ua
++ F`.6OY ̾L/;Sboj kfsC6f}fw^~o8#W&:<nغI)O?>oRD) g@ B-^dv IЀMq`7}=~E)}6b~@g1H(YJPmL:D#ѹ3^cZry[Ch{ӓ kOIܽSg `>"&R^%J.JSP 卆:=m6aSE8S}&3FpCAkoY ǐxɇh?~F-
+endstream
+endobj
+6744 0 obj
+<< /Type /Page /Contents 6745 0 R /Resources 6743 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 6334 0 R >>
+endobj
+6746 0 obj
+<< /D [ 6744 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+6747 0 obj
+<< /D [ 6744 0 R /XYZ 81.077 742.929 null ] >>
+endobj
+6748 0 obj
+<< /D [ 6744 0 R /XYZ 81.077 731.97 null ] >>
+endobj
+6749 0 obj
+<< /D [ 6744 0 R /XYZ 81.077 721.011 null ] >>
+endobj
+6750 0 obj
+<< /D [ 6744 0 R /XYZ 81.077 710.052 null ] >>
+endobj
+6751 0 obj
+<< /D [ 6744 0 R /XYZ 81.077 699.093 null ] >>
+endobj
+6752 0 obj
+<< /D [ 6744 0 R /XYZ 81.077 688.134 null ] >>
+endobj
+6753 0 obj
+<< /D [ 6744 0 R /XYZ 81.077 677.175 null ] >>
+endobj
+6754 0 obj
+<< /D [ 6744 0 R /XYZ 81.077 666.217 null ] >>
+endobj
+6755 0 obj
+<< /D [ 6744 0 R /XYZ 81.077 655.258 null ] >>
+endobj
+6756 0 obj
+<< /D [ 6744 0 R /XYZ 81.077 644.299 null ] >>
+endobj
+6757 0 obj
+<< /D [ 6744 0 R /XYZ 81.077 633.34 null ] >>
+endobj
+6758 0 obj
+<< /D [ 6744 0 R /XYZ 81.077 580.538 null ] >>
+endobj
+6759 0 obj
+<< /D [ 6744 0 R /XYZ 81.077 569.579 null ] >>
+endobj
+6760 0 obj
+<< /D [ 6744 0 R /XYZ 81.077 504.822 null ] >>
+endobj
+6761 0 obj
+<< /D [ 6744 0 R /XYZ 81.077 493.863 null ] >>
+endobj
+6762 0 obj
+<< /D [ 6744 0 R /XYZ 81.077 482.904 null ] >>
+endobj
+6763 0 obj
+<< /D [ 6744 0 R /XYZ 81.077 471.945 null ] >>
+endobj
+6764 0 obj
+<< /D [ 6744 0 R /XYZ 81.077 460.986 null ] >>
+endobj
+6765 0 obj
+<< /D [ 6744 0 R /XYZ 81.077 450.027 null ] >>
+endobj
+6766 0 obj
+<< /D [ 6744 0 R /XYZ 81.077 419.143 null ] >>
+endobj
+6767 0 obj
+<< /D [ 6744 0 R /XYZ 81.077 408.184 null ] >>
+endobj
+6768 0 obj
+<< /D [ 6744 0 R /XYZ 81.077 305.569 null ] >>
+endobj
+6769 0 obj
+<< /D [ 6744 0 R /XYZ 81.077 294.61 null ] >>
+endobj
+6770 0 obj
+<< /D [ 6744 0 R /XYZ 81.077 283.651 null ] >>
+endobj
+6771 0 obj
+<< /D [ 6744 0 R /XYZ 81.077 272.692 null ] >>
+endobj
+6772 0 obj
+<< /D [ 6744 0 R /XYZ 81.077 231.845 null ] >>
+endobj
+6773 0 obj
+<< /D [ 6744 0 R /XYZ 81.077 220.887 null ] >>
+endobj
+6774 0 obj
+<< /D [ 6744 0 R /XYZ 81.077 209.928 null ] >>
+endobj
+6775 0 obj
+<< /D [ 6744 0 R /XYZ 81.077 198.969 null ] >>
+endobj
+6776 0 obj
+<< /D [ 6744 0 R /XYZ 81.077 188.01 null ] >>
+endobj
+6777 0 obj
+<< /D [ 6744 0 R /XYZ 81.077 177.051 null ] >>
+endobj
+6778 0 obj
+<< /D [ 6744 0 R /XYZ 81.077 166.092 null ] >>
+endobj
+6779 0 obj
+<< /D [ 6744 0 R /XYZ 81.077 155.133 null ] >>
+endobj
+6743 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F20 186 0 R /F73 189 0 R /F69 183 0 R /F76 318 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+6782 0 obj
+<< /Filter /FlateDecode /Length 2337 >>
+stream
+xڵZoܸb|8i ish?@aP䂅m]Ҟ5wDnҹ^3/~~۫W?xT+/,
+X($AXfa}'PfT9cl9QW`
+7Rv=<LeYQH3ؖU \^lC6e+4v=>/*J0޵{u[1y9v Fj-8Ҋ0PI"4pZ2 ^(X_2 IJlwWٯ];`n..ٹ½}flq5׻VE|x4˳8"N[mĨHצ Q̦ikS
+SjVv-;s\6WNjʾfTnGM)x/JWLBf=;jve`̿>fj^n̦5<; MWr߭7a'P?tދV{kkiw=ݶ:<*o9R J#$BzuIl*i׬]o(KK,,צT}37YѾk-/
+!Ra[:ÐxJ8.nV]uw?\\Fq$ 4|Q1 .bK:;HrZ[F^%VC, o;Ƭ xY u@\4y!kR|]1U>mm,-FqiH?d>oWM;\4;X~p$'P,I#=嶉|*StX̐~X~boj}BS$m
+#jBm#g$B
+
+8$|Pw9O*H m gy}6띇B6x 6 Xqt,=;9RZAtMi AZ/{4L>.,lʉ~Fܴ0[ /5+QiO2'ݟL%(^"Fڀ7̅ۡ0kʩ_Wg _E؊#$CBwxSS86MG)
+CX:>Cو6b:'#&(/o:n<϶n8A\&
+||$ ya 54Ίw PܩL~[P~2%cBt`l[fp7@yqxƘ+1WmӘ9m0/X?'mkP@qg,pշ#ޛ ad7ah6y|V|$ $Oo
+ e?q[p̟(@ U
+endstream
+endobj
+6781 0 obj
+<< /Type /Page /Contents 6782 0 R /Resources 6780 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 6821 0 R >>
+endobj
+6783 0 obj
+<< /D [ 6781 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+6784 0 obj
+<< /D [ 6781 0 R /XYZ 81.077 752.891 null ] >>
+endobj
+6785 0 obj
+<< /D [ 6781 0 R /XYZ 81.077 741.933 null ] >>
+endobj
+6786 0 obj
+<< /D [ 6781 0 R /XYZ 81.077 730.974 null ] >>
+endobj
+6787 0 obj
+<< /D [ 6781 0 R /XYZ 81.077 688.134 null ] >>
+endobj
+6788 0 obj
+<< /D [ 6781 0 R /XYZ 81.077 677.175 null ] >>
+endobj
+6789 0 obj
+<< /D [ 6781 0 R /XYZ 81.077 666.217 null ] >>
+endobj
+6790 0 obj
+<< /D [ 6781 0 R /XYZ 81.077 655.258 null ] >>
+endobj
+6791 0 obj
+<< /D [ 6781 0 R /XYZ 81.077 644.299 null ] >>
+endobj
+6792 0 obj
+<< /D [ 6781 0 R /XYZ 81.077 633.34 null ] >>
+endobj
+6793 0 obj
+<< /D [ 6781 0 R /XYZ 81.077 622.381 null ] >>
+endobj
+6794 0 obj
+<< /D [ 6781 0 R /XYZ 81.077 611.422 null ] >>
+endobj
+6795 0 obj
+<< /D [ 6781 0 R /XYZ 81.077 600.463 null ] >>
+endobj
+6796 0 obj
+<< /D [ 6781 0 R /XYZ 81.077 589.504 null ] >>
+endobj
+6797 0 obj
+<< /D [ 6781 0 R /XYZ 81.077 578.545 null ] >>
+endobj
+6798 0 obj
+<< /D [ 6781 0 R /XYZ 81.077 567.586 null ] >>
+endobj
+6799 0 obj
+<< /D [ 6781 0 R /XYZ 81.077 502.829 null ] >>
+endobj
+6800 0 obj
+<< /D [ 6781 0 R /XYZ 81.077 491.87 null ] >>
+endobj
+6801 0 obj
+<< /D [ 6781 0 R /XYZ 81.077 480.911 null ] >>
+endobj
+6802 0 obj
+<< /D [ 6781 0 R /XYZ 81.077 469.953 null ] >>
+endobj
+6803 0 obj
+<< /D [ 6781 0 R /XYZ 81.077 458.994 null ] >>
+endobj
+6804 0 obj
+<< /D [ 6781 0 R /XYZ 81.077 448.035 null ] >>
+endobj
+6805 0 obj
+<< /D [ 6781 0 R /XYZ 81.077 423.128 null ] >>
+endobj
+6806 0 obj
+<< /D [ 6781 0 R /XYZ 81.077 412.169 null ] >>
+endobj
+6807 0 obj
+<< /D [ 6781 0 R /XYZ 81.077 401.21 null ] >>
+endobj
+6808 0 obj
+<< /D [ 6781 0 R /XYZ 81.077 390.251 null ] >>
+endobj
+6809 0 obj
+<< /D [ 6781 0 R /XYZ 81.077 379.292 null ] >>
+endobj
+6810 0 obj
+<< /D [ 6781 0 R /XYZ 81.077 310.55 null ] >>
+endobj
+6811 0 obj
+<< /D [ 6781 0 R /XYZ 81.077 299.591 null ] >>
+endobj
+6812 0 obj
+<< /D [ 6781 0 R /XYZ 81.077 256.752 null ] >>
+endobj
+6813 0 obj
+<< /D [ 6781 0 R /XYZ 81.077 245.793 null ] >>
+endobj
+6814 0 obj
+<< /D [ 6781 0 R /XYZ 81.077 181.036 null ] >>
+endobj
+6815 0 obj
+<< /D [ 6781 0 R /XYZ 81.077 170.077 null ] >>
+endobj
+6816 0 obj
+<< /D [ 6781 0 R /XYZ 81.077 159.118 null ] >>
+endobj
+6817 0 obj
+<< /D [ 6781 0 R /XYZ 81.077 148.159 null ] >>
+endobj
+6818 0 obj
+<< /D [ 6781 0 R /XYZ 81.077 137.2 null ] >>
+endobj
+6819 0 obj
+<< /D [ 6781 0 R /XYZ 81.077 126.241 null ] >>
+endobj
+6820 0 obj
+<< /D [ 6781 0 R /XYZ 81.077 115.283 null ] >>
+endobj
+6780 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F20 186 0 R /F19 184 0 R /F75 317 0 R /F73 189 0 R /F69 183 0 R /F26 662 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+6824 0 obj
+<< /Filter /FlateDecode /Length 2294 >>
+stream
+xڽZo_a _"
+O"Cx;1M8X{-/䝒>hUlnZg?}Zz˲7~v*•r'qrߔGbHUAZEIP;||j._u: 7s`[H"d՗+a҈:3DXX'L@|ճ}h]v+&ar
+bo)~8e*M`Ð: #R{f4tb喰y|g,N1iǁ?Rs#=q'=2fHzg".&Jxf2 y')<\D_F.}z;D$D3uQQU@!\N
+:q%_ &!F:Z~ΊgvAQ"wSca$:? QWӀڼ7vzǼn(n[HοP!Oр帅\`9B/ӍOZG_ 1ݭ5T 
+
+ݟRB0lܟP,#!BPN< iuJ5XAc?HA$-k;}&'=U}]?Yw] 
+8e
+8g@ _m`LJc޸(\> !EP2ʒ!<628$*ܷ1Eݤ}M-:iUӍ?JxQMRTݲxX7M5C=
+w[L]Xv5U^Ra;:uEd@[S=hJ>+|(9gǾ%xSO #y#z5$|mtCp$zSҵ^|eT:nT}pJn\2ܭRԿfЎW8;CВIϬLfك0nA}3[|Rކׄ0'ac\ycvm jZ;f4>g%@b@t\o_9D2'D~#XL!2I< /~*fW\(R}8,s}̘8:E Cg>BEe[c#SMVlЪ$.Ef2t?]I
+endstream
+endobj
+6823 0 obj
+<< /Type /Page /Contents 6824 0 R /Resources 6822 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 6821 0 R >>
+endobj
+6825 0 obj
+<< /D [ 6823 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+6826 0 obj
+<< /D [ 6823 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+6827 0 obj
+<< /D [ 6823 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+6828 0 obj
+<< /D [ 6823 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+6829 0 obj
+<< /D [ 6823 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+6830 0 obj
+<< /D [ 6823 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+6831 0 obj
+<< /D [ 6823 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+6832 0 obj
+<< /D [ 6823 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+6833 0 obj
+<< /D [ 6823 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+6834 0 obj
+<< /D [ 6823 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+6835 0 obj
+<< /D [ 6823 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+6836 0 obj
+<< /D [ 6823 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+6837 0 obj
+<< /D [ 6823 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+6838 0 obj
+<< /D [ 6823 0 R /XYZ 81.077 637.325 null ] >>
+endobj
+6839 0 obj
+<< /D [ 6823 0 R /XYZ 81.077 626.366 null ] >>
+endobj
+6840 0 obj
+<< /D [ 6823 0 R /XYZ 81.077 615.407 null ] >>
+endobj
+6841 0 obj
+<< /D [ 6823 0 R /XYZ 81.077 604.448 null ] >>
+endobj
+6842 0 obj
+<< /D [ 6823 0 R /XYZ 81.077 593.489 null ] >>
+endobj
+93 0 obj
+<< /D [ 6823 0 R /XYZ 79.37 568.601 null ] >>
+endobj
+6843 0 obj
+<< /D [ 6823 0 R /XYZ 81.077 382.645 null ] >>
+endobj
+6844 0 obj
+<< /D [ 6823 0 R /XYZ 81.077 334.3 null ] >>
+endobj
+6845 0 obj
+<< /D [ 6823 0 R /XYZ 81.077 323.341 null ] >>
+endobj
+6846 0 obj
+<< /D [ 6823 0 R /XYZ 81.077 312.382 null ] >>
+endobj
+6847 0 obj
+<< /D [ 6823 0 R /XYZ 81.077 301.423 null ] >>
+endobj
+6848 0 obj
+<< /D [ 6823 0 R /XYZ 81.077 290.464 null ] >>
+endobj
+6849 0 obj
+<< /D [ 6823 0 R /XYZ 81.077 279.505 null ] >>
+endobj
+6850 0 obj
+<< /D [ 6823 0 R /XYZ 81.077 268.546 null ] >>
+endobj
+6851 0 obj
+<< /D [ 6823 0 R /XYZ 81.077 257.587 null ] >>
+endobj
+6852 0 obj
+<< /D [ 6823 0 R /XYZ 81.077 246.628 null ] >>
+endobj
+6853 0 obj
+<< /D [ 6823 0 R /XYZ 81.077 235.669 null ] >>
+endobj
+6854 0 obj
+<< /D [ 6823 0 R /XYZ 81.077 224.711 null ] >>
+endobj
+6855 0 obj
+<< /D [ 6823 0 R /XYZ 81.077 213.752 null ] >>
+endobj
+6856 0 obj
+<< /D [ 6823 0 R /XYZ 81.077 202.793 null ] >>
+endobj
+6857 0 obj
+<< /D [ 6823 0 R /XYZ 81.077 133.431 null ] >>
+endobj
+6858 0 obj
+<< /D [ 6823 0 R /XYZ 81.077 122.473 null ] >>
+endobj
+6859 0 obj
+<< /D [ 6823 0 R /XYZ 81.077 111.514 null ] >>
+endobj
+6860 0 obj
+<< /D [ 6823 0 R /XYZ 81.077 100.555 null ] >>
+endobj
+6861 0 obj
+<< /D [ 6823 0 R /XYZ 81.077 89.596 null ] >>
+endobj
+6862 0 obj
+<< /D [ 6823 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+6822 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F72 187 0 R /F80 749 0 R /F19 184 0 R /F20 186 0 R /F70 185 0 R /F76 318 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+6865 0 obj
+<< /Filter /FlateDecode /Length 2962 >>
+stream
+xڵZmo8_a>4**z]="]ĺRVM~3$%#[83j>'؂/ޞx>3AM9_0(љVDx+J"EgOssz&R\TjR\eXVOɩd|Y߻_Z
+NS@'h vdE%ptfV˴v|יRH3p ܘݣDFhpB#шv2ّYF47M F´/acU'v"kb.HY 8٤%*4G؂ۼʍmuPznl
+i*^E Dddloj;Q^ͼp-cv|J#M"nzSIf!5ۻjf?11藖!te- 3&,ۻ%9xwMrr*X4[kdv7MA}}Mm{6Bh^<E޴5(ܿ1hI,׷'R{fL6Nqu\+"
+/`kۭ=I٪@a 4.NlKM6m=Xʞ/\/T&ee[^މqFrz^nk@]w3꺅:<u0Qj!(%F$4E
+M򲭶Mqo.j3Vs i 1[=^SIvȪ񂓈"4Yh_sDA
+C@EeD\7{BIYk9 u2XijĮ"Dojy=J>E1L<L>v$ܠJӨ@=߭v* "NAPgxL+\6֮͊ʰq9eUU"Ӱ펔?zm]Gi&5قݭs#׵{ͻ1w
+6;ܧeZ4OM9zO֧*ԧMHA?T#Yˡ~<:99TM9{0}b,8urXXicΕuCWVKS9laZ;
+wyf7ŝE>
+_``|"nxzu!ro|bAwvcB[$ێX6[Uf-Pz'Kߜᓓq&iخ8^xᚇd+D8;{7QI,ZKk`1Gj$ƏMb% *eHC*zd^^&rqc ;2T&܅
+endstream
+endobj
+6864 0 obj
+<< /Type /Page /Contents 6865 0 R /Resources 6863 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 6821 0 R >>
+endobj
+6866 0 obj
+<< /D [ 6864 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+6867 0 obj
+<< /D [ 6864 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+6868 0 obj
+<< /D [ 6864 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+6869 0 obj
+<< /D [ 6864 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+6870 0 obj
+<< /D [ 6864 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+6871 0 obj
+<< /D [ 6864 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+6872 0 obj
+<< /D [ 6864 0 R /XYZ 81.077 590.051 null ] >>
+endobj
+6873 0 obj
+<< /D [ 6864 0 R /XYZ 81.077 579.092 null ] >>
+endobj
+6874 0 obj
+<< /D [ 6864 0 R /XYZ 81.077 568.133 null ] >>
+endobj
+6875 0 obj
+<< /D [ 6864 0 R /XYZ 81.077 557.174 null ] >>
+endobj
+6876 0 obj
+<< /D [ 6864 0 R /XYZ 81.077 546.215 null ] >>
+endobj
+6877 0 obj
+<< /D [ 6864 0 R /XYZ 81.077 535.257 null ] >>
+endobj
+6878 0 obj
+<< /D [ 6864 0 R /XYZ 81.077 524.298 null ] >>
+endobj
+6879 0 obj
+<< /D [ 6864 0 R /XYZ 81.077 513.339 null ] >>
+endobj
+6880 0 obj
+<< /D [ 6864 0 R /XYZ 81.077 502.38 null ] >>
+endobj
+6881 0 obj
+<< /D [ 6864 0 R /XYZ 81.077 491.421 null ] >>
+endobj
+6882 0 obj
+<< /D [ 6864 0 R /XYZ 81.077 480.462 null ] >>
+endobj
+6883 0 obj
+<< /D [ 6864 0 R /XYZ 81.077 469.503 null ] >>
+endobj
+6884 0 obj
+<< /D [ 6864 0 R /XYZ 81.077 376.851 null ] >>
+endobj
+6885 0 obj
+<< /D [ 6864 0 R /XYZ 81.077 365.892 null ] >>
+endobj
+6886 0 obj
+<< /D [ 6864 0 R /XYZ 81.077 354.933 null ] >>
+endobj
+6887 0 obj
+<< /D [ 6864 0 R /XYZ 81.077 343.974 null ] >>
+endobj
+6888 0 obj
+<< /D [ 6864 0 R /XYZ 81.077 333.015 null ] >>
+endobj
+6889 0 obj
+<< /D [ 6864 0 R /XYZ 81.077 322.056 null ] >>
+endobj
+6890 0 obj
+<< /D [ 6864 0 R /XYZ 81.077 311.097 null ] >>
+endobj
+6891 0 obj
+<< /D [ 6864 0 R /XYZ 81.077 232.392 null ] >>
+endobj
+6892 0 obj
+<< /D [ 6864 0 R /XYZ 81.077 221.433 null ] >>
+endobj
+6893 0 obj
+<< /D [ 6864 0 R /XYZ 81.077 210.474 null ] >>
+endobj
+6894 0 obj
+<< /D [ 6864 0 R /XYZ 81.077 199.516 null ] >>
+endobj
+6895 0 obj
+<< /D [ 6864 0 R /XYZ 81.077 188.557 null ] >>
+endobj
+6896 0 obj
+<< /D [ 6864 0 R /XYZ 81.077 177.598 null ] >>
+endobj
+6897 0 obj
+<< /D [ 6864 0 R /XYZ 81.077 136.751 null ] >>
+endobj
+6898 0 obj
+<< /D [ 6864 0 R /XYZ 81.077 125.792 null ] >>
+endobj
+6899 0 obj
+<< /D [ 6864 0 R /XYZ 81.077 114.833 null ] >>
+endobj
+6900 0 obj
+<< /D [ 6864 0 R /XYZ 81.077 103.874 null ] >>
+endobj
+6901 0 obj
+<< /D [ 6864 0 R /XYZ 81.077 92.915 null ] >>
+endobj
+6902 0 obj
+<< /D [ 6864 0 R /XYZ 81.077 81.956 null ] >>
+endobj
+6863 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F46 176 0 R /F23 660 0 R /F80 749 0 R /F70 185 0 R /F75 317 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+6905 0 obj
+<< /Filter /FlateDecode /Length 2473 >>
+stream
+xZs۸~_>~4Nt8D٬)R(;w@;޴LH\`wEvg?R}pnj8R0:^L
+$H6AXzDnwI`&Po|eJ=̻弱ە}L#S)K˾(<:5mx;bK}GvYNLD>/Wy3_˧Ӯ.h[QT""3Jf!4s(Lb0Ji d9#Iբtڪa<= I2ںniGYhYU]ۻK*AR.v}9|T5Q~
+Rirk~SV<Z9gK/U>ߖ}^~_]탢57.W?J JӘDiHk% l&5͛*H;M(EU_wbOW_Ͷd}}BT@^TҌLfY~~ٛ~[('ow$ٖвפ4ѤiwN"m[7ۍ-f\g[3te֖' i}WPumM>mZ5۾hq>*%lq>Q뗅{8S@ nv0iS? 5R <%XFq&MSgI㶊/=nn tj'!i&c5mm^)\9lybU
+M·ELgro$.Y{rVm%֢+tIXvŽTO [wUjIO)NihZXűJoBxJQ&U2
+i|_k5j14Y|o~u4DJq <v/7CU
+#F>d/52+QHJ qzҧk*<5Lm]a1BñLNi[bD
+@dQ9kjko۵AYyNt-_5cD`G CJLͼ (~Q#S*2Kօiy7ukX3MC Ƶ]1 &t81h^u?,CFb-MP4; īiA jYHSc)qh(0BFOxLML3 fiPG3/'"lC4 ᧋P AN^v^eDw&jL 8y *K!TF Pa2y-`
+3l+`_`c{ږ9ؗp/BJ5{'<Htp8aME6} }W\o Д6_sL0~?Dw.i N qor_λ &qK?GS#jOL]DLPz`]vEⲨZxBHG>̐ .R3q˺Wɺ\ݓb ԑ'Nl]3b?U?):̳B\N}՜PC]g>2fhۃc%סD"185|
+#h' hE.|"9 ғ&i4Gс;`]zWHK ?ɤ;ۗFX Q(HpZɟ?oi Et9
+endstream
+endobj
+6904 0 obj
+<< /Type /Page /Contents 6905 0 R /Resources 6903 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 6821 0 R >>
+endobj
+6906 0 obj
+<< /D [ 6904 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+6907 0 obj
+<< /D [ 6904 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+6908 0 obj
+<< /D [ 6904 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+6909 0 obj
+<< /D [ 6904 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+6910 0 obj
+<< /D [ 6904 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+6911 0 obj
+<< /D [ 6904 0 R /XYZ 81.077 665.767 null ] >>
+endobj
+6912 0 obj
+<< /D [ 6904 0 R /XYZ 81.077 654.808 null ] >>
+endobj
+6913 0 obj
+<< /D [ 6904 0 R /XYZ 81.077 625.917 null ] >>
+endobj
+6914 0 obj
+<< /D [ 6904 0 R /XYZ 81.077 614.958 null ] >>
+endobj
+6915 0 obj
+<< /D [ 6904 0 R /XYZ 81.077 603.999 null ] >>
+endobj
+6916 0 obj
+<< /D [ 6904 0 R /XYZ 81.077 563.152 null ] >>
+endobj
+6917 0 obj
+<< /D [ 6904 0 R /XYZ 81.077 552.193 null ] >>
+endobj
+6918 0 obj
+<< /D [ 6904 0 R /XYZ 81.077 541.234 null ] >>
+endobj
+6919 0 obj
+<< /D [ 6904 0 R /XYZ 81.077 530.275 null ] >>
+endobj
+6920 0 obj
+<< /D [ 6904 0 R /XYZ 81.077 514.335 null ] >>
+endobj
+6921 0 obj
+<< /D [ 6904 0 R /XYZ 81.077 503.376 null ] >>
+endobj
+6922 0 obj
+<< /D [ 6904 0 R /XYZ 81.077 460.537 null ] >>
+endobj
+6923 0 obj
+<< /D [ 6904 0 R /XYZ 81.077 449.578 null ] >>
+endobj
+6924 0 obj
+<< /D [ 6904 0 R /XYZ 81.077 438.619 null ] >>
+endobj
+6925 0 obj
+<< /D [ 6904 0 R /XYZ 81.077 427.66 null ] >>
+endobj
+6926 0 obj
+<< /D [ 6904 0 R /XYZ 81.077 362.903 null ] >>
+endobj
+6927 0 obj
+<< /D [ 6904 0 R /XYZ 81.077 351.944 null ] >>
+endobj
+6928 0 obj
+<< /D [ 6904 0 R /XYZ 81.077 340.985 null ] >>
+endobj
+6929 0 obj
+<< /D [ 6904 0 R /XYZ 81.077 330.026 null ] >>
+endobj
+6930 0 obj
+<< /D [ 6904 0 R /XYZ 81.077 319.067 null ] >>
+endobj
+6931 0 obj
+<< /D [ 6904 0 R /XYZ 81.077 308.108 null ] >>
+endobj
+6932 0 obj
+<< /D [ 6904 0 R /XYZ 81.077 297.149 null ] >>
+endobj
+6933 0 obj
+<< /D [ 6904 0 R /XYZ 81.077 286.191 null ] >>
+endobj
+6934 0 obj
+<< /D [ 6904 0 R /XYZ 81.077 275.232 null ] >>
+endobj
+6935 0 obj
+<< /D [ 6904 0 R /XYZ 81.077 264.273 null ] >>
+endobj
+6936 0 obj
+<< /D [ 6904 0 R /XYZ 81.077 253.314 null ] >>
+endobj
+6937 0 obj
+<< /D [ 6904 0 R /XYZ 81.077 212.467 null ] >>
+endobj
+6938 0 obj
+<< /D [ 6904 0 R /XYZ 81.077 201.508 null ] >>
+endobj
+6939 0 obj
+<< /D [ 6904 0 R /XYZ 81.077 190.549 null ] >>
+endobj
+6940 0 obj
+<< /D [ 6904 0 R /XYZ 81.077 179.59 null ] >>
+endobj
+6941 0 obj
+<< /D [ 6904 0 R /XYZ 81.077 168.631 null ] >>
+endobj
+6942 0 obj
+<< /D [ 6904 0 R /XYZ 81.077 157.672 null ] >>
+endobj
+6943 0 obj
+<< /D [ 6904 0 R /XYZ 81.077 146.714 null ] >>
+endobj
+6944 0 obj
+<< /D [ 6904 0 R /XYZ 81.077 135.755 null ] >>
+endobj
+6945 0 obj
+<< /D [ 6904 0 R /XYZ 81.077 124.796 null ] >>
+endobj
+6946 0 obj
+<< /D [ 6904 0 R /XYZ 81.077 113.837 null ] >>
+endobj
+6947 0 obj
+<< /D [ 6904 0 R /XYZ 81.077 102.878 null ] >>
+endobj
+6948 0 obj
+<< /D [ 6904 0 R /XYZ 81.077 91.919 null ] >>
+endobj
+6949 0 obj
+<< /D [ 6904 0 R /XYZ 81.077 80.96 null ] >>
+endobj
+6903 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F80 749 0 R /F19 184 0 R /F20 186 0 R /F75 317 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+6952 0 obj
+<< /Filter /FlateDecode /Length 1615 >>
+stream
+xڽZMoFWh7z?0Rz0zi
+I*w(J]q9rڋI|3of=#Q}{҈$2g׷' 36hffF3B5]fj_׿w_j7i-l f;&dQuYϯ^+"+E^fZfTOWƣ{E <781D>E峢KH((msKf1"JhF4˔bh?6lԝ_t~9ZW tKET>HQM'M(/AE6\i"RWꪺ[o&u?ztkq/j8m[K"!bb\HbAX4~Ε Rrm) 7:E_}Fs(5 p}蠚C —e {&%Q^{RG*F0{'nA/u>Ygp՛.Y6/[?0ax]`lqѶDPc0:P5İ ̂5A8PĨ Ԃ|&A@UZり
+#'jGR"(81LRkҊ*E7Ӫg26fu_F+Z%8F:& #$VqTXQc0~%݂MRURBG(*p ivU┠H?O@ƒPK_bEjC@gc74ᣃJ\IxR. K\ -=%hmhsnS*Loc'5Go\GT#M<HhPRt? ]-J7í%k6%Q[1F|>^ͻyG"Ukw ݾ)D*øo+2DQn`1:gq;J+$`;A8e ҡ(jW-Aq<B(q%phGs&]@WzQ0A5Q%\"EF91&J u8U
+: F*'%s3c]M۝BN 'ݞv˫e,^K)GDf}'U M>qsv9}P@Y
+'XH`Ua_Hqf7!m1( A{2$
+| snfeq.ˡdcݬpI2A󰾻]nx4`CG$F4~W7ZmuUWwM9I YJ3xZʪ4߶fhvVCj.F<~]C{6';MLF_DAnM􈮲yN btlY~x_4] qr8UXU;K@Q"J+ܠbtJ?XrPU}$h|2n'@́">G[&0{CrSBT5v9WXNf2Q¬M?O?XmʮXŢ+(>W#e)}O눶
+{n
+endstream
+endobj
+6951 0 obj
+<< /Type /Page /Contents 6952 0 R /Resources 6950 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 6821 0 R >>
+endobj
+6953 0 obj
+<< /D [ 6951 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+6954 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+6955 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+6956 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+6957 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+6958 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 705.071 null ] >>
+endobj
+6959 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 694.112 null ] >>
+endobj
+6960 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 683.153 null ] >>
+endobj
+6961 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 672.194 null ] >>
+endobj
+6962 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 661.235 null ] >>
+endobj
+6963 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 650.276 null ] >>
+endobj
+6964 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 639.317 null ] >>
+endobj
+6965 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 628.358 null ] >>
+endobj
+6966 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 617.4 null ] >>
+endobj
+6967 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 606.441 null ] >>
+endobj
+6968 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 595.482 null ] >>
+endobj
+6969 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 584.523 null ] >>
+endobj
+6970 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 573.564 null ] >>
+endobj
+6971 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 562.605 null ] >>
+endobj
+6972 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 551.646 null ] >>
+endobj
+6973 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 540.687 null ] >>
+endobj
+6974 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 529.728 null ] >>
+endobj
+6975 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 518.769 null ] >>
+endobj
+6976 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 507.811 null ] >>
+endobj
+6977 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 496.852 null ] >>
+endobj
+6978 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 485.893 null ] >>
+endobj
+6979 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 474.934 null ] >>
+endobj
+6980 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 463.975 null ] >>
+endobj
+6981 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 453.016 null ] >>
+endobj
+6982 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 442.057 null ] >>
+endobj
+6983 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 409.18 null ] >>
+endobj
+6984 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 398.221 null ] >>
+endobj
+6985 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 387.263 null ] >>
+endobj
+6986 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 376.304 null ] >>
+endobj
+6987 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 365.345 null ] >>
+endobj
+6988 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 354.386 null ] >>
+endobj
+6989 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 343.427 null ] >>
+endobj
+6990 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 332.468 null ] >>
+endobj
+6991 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 321.509 null ] >>
+endobj
+6992 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 310.55 null ] >>
+endobj
+6993 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 299.591 null ] >>
+endobj
+6994 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 288.632 null ] >>
+endobj
+6995 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 245.793 null ] >>
+endobj
+6996 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 234.834 null ] >>
+endobj
+6997 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 223.875 null ] >>
+endobj
+6998 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 212.916 null ] >>
+endobj
+6999 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 201.957 null ] >>
+endobj
+7000 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 190.999 null ] >>
+endobj
+7001 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 180.04 null ] >>
+endobj
+7002 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 169.081 null ] >>
+endobj
+7003 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 158.122 null ] >>
+endobj
+7004 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 147.163 null ] >>
+endobj
+7005 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 136.204 null ] >>
+endobj
+7006 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 125.245 null ] >>
+endobj
+7007 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 114.286 null ] >>
+endobj
+7008 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 103.327 null ] >>
+endobj
+7009 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 92.368 null ] >>
+endobj
+7010 0 obj
+<< /D [ 6951 0 R /XYZ 81.077 81.41 null ] >>
+endobj
+6950 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+7013 0 obj
+<< /Filter /FlateDecode /Length 1727 >>
+stream
+xZMo6W7EC.CN ۲#D ;%:i
+bFy3#V#:rA#Q?rH$ >./ #62h"l4] qw7קڎ Z $6DɄnʬh&j?TЎQqzCKy <X0relV0ʝgn.u\`́ z3apzZ^? K1-YYq|{MŒttit<8%C3,"+w{[R~}q^7IƛIqsI9z7&Y4,
+'&\kg=u-10s_׋_DVA#֢&oI>36i{҆6@ "[3ܭ=0:^D
+'Gk&(Fdtả8>d'9I*yy-s}+(->ڥ<0Cun4e,v`шhTڜ|$4"DYY8FNs͉BΆڤ/̨ZYZ{iЖE"fegd𫠠<|$I<RG`t(-N-CK
+MVIU˪HJqbyqG?U8YX[{(Ɉ1.5X# k-(,w[o!>;YKYxKYz(HKD#ZB.&@PF.@{.ӦGPdM>ڳ)ϊ&ZY>zGZU&I' >NVxK"9NqF.RIwƥ
+aͅ,8V:θ+@tE~pFP&\F 8]+*GN.}4Z"=)(M ]'TF\C2. nkGe˭""uq.@{^hM ÊkT]fQK88:>]ټVx.R͝*D=gfGm ʵ!p Lo+!xYyyɣCVS|<f؍GV?mwe,rLeӤ֗!kSnꧺI<r usg%Lc'&Iʈe!{_ oHH-As{t-41r
+}:/xD4ᶑtGJzVMYgMVeIV g[<E夌ڪ4OHٷt5ۮ k{2?W
+<9_;vfڜY~#pI>Lau]\(8>S,[2+|{_xX 
+-t3a>yޜgVf\jE;@o>`[R}6^#QtBEj8.wt=LCM`9ˢJ,BDLA*d]. US
+u8_S?ܦEn<.޵wL:֜c-v}{T-l<D+|k=to_>Q{A8d 
+~n
+endstream
+endobj
+7012 0 obj
+<< /Type /Page /Contents 7013 0 R /Resources 7011 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 6821 0 R >>
+endobj
+7014 0 obj
+<< /D [ 7012 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+7015 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+7016 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+7017 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+7018 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+7019 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+7020 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+7021 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+7022 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+7023 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+7024 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+7025 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+7026 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+7027 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 637.325 null ] >>
+endobj
+7028 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 626.366 null ] >>
+endobj
+7029 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 615.407 null ] >>
+endobj
+7030 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 604.448 null ] >>
+endobj
+7031 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 593.489 null ] >>
+endobj
+7032 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 582.53 null ] >>
+endobj
+7033 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 571.571 null ] >>
+endobj
+7034 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 560.613 null ] >>
+endobj
+7035 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 549.654 null ] >>
+endobj
+7036 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 538.695 null ] >>
+endobj
+7037 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 527.736 null ] >>
+endobj
+7038 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 516.777 null ] >>
+endobj
+7039 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 505.818 null ] >>
+endobj
+7040 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 494.859 null ] >>
+endobj
+7041 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 483.9 null ] >>
+endobj
+7042 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 472.941 null ] >>
+endobj
+7043 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 461.982 null ] >>
+endobj
+7044 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 451.023 null ] >>
+endobj
+7045 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 440.065 null ] >>
+endobj
+7046 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 429.106 null ] >>
+endobj
+7047 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 418.147 null ] >>
+endobj
+7048 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 407.188 null ] >>
+endobj
+7049 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 396.229 null ] >>
+endobj
+7050 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 385.27 null ] >>
+endobj
+7051 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 374.311 null ] >>
+endobj
+7052 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 363.352 null ] >>
+endobj
+7053 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 352.393 null ] >>
+endobj
+7054 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 311.547 null ] >>
+endobj
+7055 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 300.588 null ] >>
+endobj
+7056 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 289.629 null ] >>
+endobj
+7057 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 278.67 null ] >>
+endobj
+7058 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 267.711 null ] >>
+endobj
+7059 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 256.752 null ] >>
+endobj
+7060 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 245.793 null ] >>
+endobj
+7061 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 234.834 null ] >>
+endobj
+7062 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 223.875 null ] >>
+endobj
+7063 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 212.916 null ] >>
+endobj
+7064 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 201.957 null ] >>
+endobj
+7065 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 190.999 null ] >>
+endobj
+7066 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 180.04 null ] >>
+endobj
+7067 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 169.081 null ] >>
+endobj
+7068 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 158.122 null ] >>
+endobj
+7069 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 147.163 null ] >>
+endobj
+7070 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 106.316 null ] >>
+endobj
+7071 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 95.357 null ] >>
+endobj
+7072 0 obj
+<< /D [ 7012 0 R /XYZ 81.077 84.398 null ] >>
+endobj
+7011 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+7075 0 obj
+<< /Filter /FlateDecode /Length 2253 >>
+stream
+xڭZKo80ЇuoJ^
+(\f_%o7e'uVMߜkB!iK/
+EflԺI_pݥ   t0.`םD L atRaRhG bQo"=q{~)[5bRabs6|d3b5jB~!8/j߱ b<,{hA?ԋ҉AC2!獇Ykm3#KQ6 XUigmiC"2,yPMSrcc`2FJ 0.:;b_%yXЭ+϶tʹ&F?1yN۶TPm
+,ոhur<+t8\:1 hS=RԴ-$]% 7m%Y58zM/R_Ya%wyv?ڦCmy))٧u>kg;Ge1nt
+[zlKB57:BOUߪl R<Vt|a ۪Е#a|qRjd,&ADvv0,#BpcZ_N@x6B?%l pqsvEՈ#^+
+-xnC.r=ouwXEHRD!$(
+yh'%+<חխӰؘy$8YoI*'5C-h.:\vvsaDy}Ë* ׍<Xuqx1r !Ƈ.D vR5+ bѐ
+f.:xnCOg-T:x/H .+࡝MQe͸AgSLA=8\kX!+7͏Iܾa¸7/2?@{ANC+OI˶}:ϖ\P$!ȰPP!Hzx" #PWȭH"6/ GovIc1wGT|]y{@dOr2rxoKp\j~g~i2\mb
+bd]K{k(uYmY#7[-6m7c~ߎT[9xc)Fd!e>Lwag!l: pɃ܅~;es3.@͛V MAb4&2tɯa `"+ #TUWF~z E+h agRz?{tW%Pv, R2Fb_o o~t—`UN#%P4G2C>$ɂ-Hކ
+k5xqsa EcH aE!n( ["\"CA C|PX <RXp'0G RBeXLNs
+endstream
+endobj
+7074 0 obj
+<< /Type /Page /Contents 7075 0 R /Resources 7073 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 6821 0 R >>
+endobj
+7076 0 obj
+<< /D [ 7074 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+7077 0 obj
+<< /D [ 7074 0 R /XYZ 81.077 730.974 null ] >>
+endobj
+7078 0 obj
+<< /D [ 7074 0 R /XYZ 81.077 720.015 null ] >>
+endobj
+7079 0 obj
+<< /D [ 7074 0 R /XYZ 81.077 709.056 null ] >>
+endobj
+7080 0 obj
+<< /D [ 7074 0 R /XYZ 81.077 698.097 null ] >>
+endobj
+7081 0 obj
+<< /D [ 7074 0 R /XYZ 81.077 687.138 null ] >>
+endobj
+7082 0 obj
+<< /D [ 7074 0 R /XYZ 81.077 676.179 null ] >>
+endobj
+7083 0 obj
+<< /D [ 7074 0 R /XYZ 81.077 665.22 null ] >>
+endobj
+7084 0 obj
+<< /D [ 7074 0 R /XYZ 81.077 654.261 null ] >>
+endobj
+7085 0 obj
+<< /D [ 7074 0 R /XYZ 81.077 643.302 null ] >>
+endobj
+7086 0 obj
+<< /D [ 7074 0 R /XYZ 81.077 632.344 null ] >>
+endobj
+7087 0 obj
+<< /D [ 7074 0 R /XYZ 81.077 621.385 null ] >>
+endobj
+7088 0 obj
+<< /D [ 7074 0 R /XYZ 81.077 610.426 null ] >>
+endobj
+7089 0 obj
+<< /D [ 7074 0 R /XYZ 81.077 599.467 null ] >>
+endobj
+7090 0 obj
+<< /D [ 7074 0 R /XYZ 81.077 588.508 null ] >>
+endobj
+7091 0 obj
+<< /D [ 7074 0 R /XYZ 81.077 577.549 null ] >>
+endobj
+7092 0 obj
+<< /D [ 7074 0 R /XYZ 81.077 566.59 null ] >>
+endobj
+7093 0 obj
+<< /D [ 7074 0 R /XYZ 81.077 555.631 null ] >>
+endobj
+7094 0 obj
+<< /D [ 7074 0 R /XYZ 81.077 502.829 null ] >>
+endobj
+7095 0 obj
+<< /D [ 7074 0 R /XYZ 81.077 491.87 null ] >>
+endobj
+7096 0 obj
+<< /D [ 7074 0 R /XYZ 81.077 480.911 null ] >>
+endobj
+7097 0 obj
+<< /D [ 7074 0 R /XYZ 81.077 469.953 null ] >>
+endobj
+7098 0 obj
+<< /D [ 7074 0 R /XYZ 81.077 458.994 null ] >>
+endobj
+7099 0 obj
+<< /D [ 7074 0 R /XYZ 81.077 448.035 null ] >>
+endobj
+7100 0 obj
+<< /D [ 7074 0 R /XYZ 81.077 437.076 null ] >>
+endobj
+7101 0 obj
+<< /D [ 7074 0 R /XYZ 81.077 426.117 null ] >>
+endobj
+7102 0 obj
+<< /D [ 7074 0 R /XYZ 81.077 415.158 null ] >>
+endobj
+7103 0 obj
+<< /D [ 7074 0 R /XYZ 81.077 404.199 null ] >>
+endobj
+7104 0 obj
+<< /D [ 7074 0 R /XYZ 81.077 393.24 null ] >>
+endobj
+7105 0 obj
+<< /D [ 7074 0 R /XYZ 81.077 382.281 null ] >>
+endobj
+7106 0 obj
+<< /D [ 7074 0 R /XYZ 81.077 371.322 null ] >>
+endobj
+7107 0 obj
+<< /D [ 7074 0 R /XYZ 81.077 360.363 null ] >>
+endobj
+7108 0 obj
+<< /D [ 7074 0 R /XYZ 81.077 349.405 null ] >>
+endobj
+7109 0 obj
+<< /D [ 7074 0 R /XYZ 81.077 267.262 null ] >>
+endobj
+7110 0 obj
+<< /D [ 7074 0 R /XYZ 81.077 256.303 null ] >>
+endobj
+7111 0 obj
+<< /D [ 7074 0 R /XYZ 81.077 227.411 null ] >>
+endobj
+7112 0 obj
+<< /D [ 7074 0 R /XYZ 81.077 216.452 null ] >>
+endobj
+7113 0 obj
+<< /D [ 7074 0 R /XYZ 81.077 205.493 null ] >>
+endobj
+7114 0 obj
+<< /D [ 7074 0 R /XYZ 81.077 194.534 null ] >>
+endobj
+7115 0 obj
+<< /D [ 7074 0 R /XYZ 81.077 183.575 null ] >>
+endobj
+7116 0 obj
+<< /D [ 7074 0 R /XYZ 81.077 172.616 null ] >>
+endobj
+7117 0 obj
+<< /D [ 7074 0 R /XYZ 81.077 161.658 null ] >>
+endobj
+7118 0 obj
+<< /D [ 7074 0 R /XYZ 81.077 145.717 null ] >>
+endobj
+7119 0 obj
+<< /D [ 7074 0 R /XYZ 81.077 134.758 null ] >>
+endobj
+7120 0 obj
+<< /D [ 7074 0 R /XYZ 81.077 123.799 null ] >>
+endobj
+7121 0 obj
+<< /D [ 7074 0 R /XYZ 81.077 112.841 null ] >>
+endobj
+7073 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F20 186 0 R /F78 556 0 R /F73 189 0 R /F69 183 0 R /F80 749 0 R /F75 317 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+7124 0 obj
+<< /Filter /FlateDecode /Length 2141 >>
+stream
+xZMo#ϯ1 6A@=B[n[´5xgEʲ,F2|U,*Gx<\}AFRG))Id4[~+>yޔ{O
+}kVHstOU%T@~X7h|% -~]VhXc*o]0"-tDt$0 n.v}믥{mx<~_!|nھU p;9LHdM.# A06
+xz6)
+"Y]jBAbV21wq7CMh -Ey'냂*s7`1_N-Üyϫtv.,FӇɋ=72`L] )zw%I3;Xa̲t\Ș!kr5Puڒoތb]
+xw7O0ri
+.͇-ka+ Jۋe4|\G3$ݫ}'nW !0̆:H?]ˆ<XҥXe?x<]QރH藘3EpJ6i^ôr*يɕDjj?ð#pp:gIH-ۢ-I3}UDӿ-\!Fda w!39Fĩo>#w3W<Wri)A,,*Ϧ=C`p0:J޹e .&y$&'
+endstream
+endobj
+7123 0 obj
+<< /Type /Page /Contents 7124 0 R /Resources 7122 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 6821 0 R >>
+endobj
+7125 0 obj
+<< /D [ 7123 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+7126 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 742.929 null ] >>
+endobj
+7127 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 731.97 null ] >>
+endobj
+7128 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 721.011 null ] >>
+endobj
+7129 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 710.052 null ] >>
+endobj
+7130 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 645.295 null ] >>
+endobj
+7131 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 634.336 null ] >>
+endobj
+7132 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 623.377 null ] >>
+endobj
+7133 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 612.418 null ] >>
+endobj
+7134 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 601.459 null ] >>
+endobj
+7135 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 590.5 null ] >>
+endobj
+7136 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 579.542 null ] >>
+endobj
+7137 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 568.583 null ] >>
+endobj
+7138 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 557.624 null ] >>
+endobj
+7139 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 546.665 null ] >>
+endobj
+7140 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 535.706 null ] >>
+endobj
+7141 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 494.859 null ] >>
+endobj
+7142 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 483.9 null ] >>
+endobj
+7143 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 472.941 null ] >>
+endobj
+7144 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 461.982 null ] >>
+endobj
+7145 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 451.023 null ] >>
+endobj
+7146 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 440.065 null ] >>
+endobj
+7147 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 429.106 null ] >>
+endobj
+7148 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 418.147 null ] >>
+endobj
+7149 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 407.188 null ] >>
+endobj
+7150 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 396.229 null ] >>
+endobj
+7151 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 385.27 null ] >>
+endobj
+7152 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 374.311 null ] >>
+endobj
+7153 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 363.352 null ] >>
+endobj
+7154 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 352.393 null ] >>
+endobj
+7155 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 341.434 null ] >>
+endobj
+7156 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 330.476 null ] >>
+endobj
+7157 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 319.517 null ] >>
+endobj
+7158 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 288.632 null ] >>
+endobj
+7159 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 277.674 null ] >>
+endobj
+7160 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 266.715 null ] >>
+endobj
+7161 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 255.756 null ] >>
+endobj
+7162 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 244.797 null ] >>
+endobj
+7163 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 233.838 null ] >>
+endobj
+7164 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 222.879 null ] >>
+endobj
+7165 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 211.92 null ] >>
+endobj
+7166 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 200.961 null ] >>
+endobj
+7167 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 190.002 null ] >>
+endobj
+7168 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 179.043 null ] >>
+endobj
+7169 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 168.085 null ] >>
+endobj
+7170 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 157.126 null ] >>
+endobj
+7171 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 146.167 null ] >>
+endobj
+7172 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 135.208 null ] >>
+endobj
+7173 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 124.249 null ] >>
+endobj
+7174 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 113.29 null ] >>
+endobj
+7175 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 102.331 null ] >>
+endobj
+7176 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 91.372 null ] >>
+endobj
+7177 0 obj
+<< /D [ 7123 0 R /XYZ 81.077 80.413 null ] >>
+endobj
+7122 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F20 186 0 R /F19 184 0 R /F73 189 0 R /F69 183 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+7180 0 obj
+<< /Filter /FlateDecode /Length 1703 >>
+stream
+xڽZKoFW7;F~P)
+*?ֶy}-Wy?0:H`+Mp 4Ǚ ICR46Ոhml3۠ MTx8D"~/AmK͇Pf%O}묶O٪m:[tv>]!8mVS0O 4K-M ~[qSLS\D~*+*qV[|f]('-01h׽LF[.-?/:wz8_M`l1$A^8vvrt.^Gr HgN**AY %D#a drgN*Ao\dv_ٮIaU)OHf)zO&@hυ¸ <tHcȉ$$C{0mOУb&A1DĜ9W V]wo];w25~(7N>^]^v>~GxMSs|[ZFa64. Qi.Scxؘp݂ gaS7<9 Sfa. F'$&6KXPhrc}0ݯ~*nZ0־p #DZ;n uٕMԫvNQ)Dh-[[Oy-uH_jۈj5fI_V즽!S&Y5E.o=sȅ@%̱3a au߆{}0
+C<M` 9-{7?IpP;ًp
+ 4݀Ne`>o6w*".\Ex7:,$ʫĠlN`s=zJO)+=LF$}zHXkk?F/WP^eH N*Q4U9+30B
+dҰa7.]P|\mq\ÊJF@\{T4|;0Gzְ!AGIl>ٮf60C!8ȥyԿ8ңO:) C hYkzwvZg>('5Hr_z ~C~p9FfwAE>;g
+endstream
+endobj
+7179 0 obj
+<< /Type /Page /Contents 7180 0 R /Resources 7178 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 6821 0 R >>
+endobj
+7181 0 obj
+<< /D [ 7179 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+7182 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+7183 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+7184 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+7185 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+7186 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+7187 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+7188 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+7189 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+7190 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+7191 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+7192 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 637.325 null ] >>
+endobj
+7193 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 626.366 null ] >>
+endobj
+7194 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 615.407 null ] >>
+endobj
+7195 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 604.448 null ] >>
+endobj
+7196 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 593.489 null ] >>
+endobj
+7197 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 582.53 null ] >>
+endobj
+7198 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 571.571 null ] >>
+endobj
+7199 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 528.732 null ] >>
+endobj
+7200 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 517.773 null ] >>
+endobj
+7201 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 506.814 null ] >>
+endobj
+7202 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 495.855 null ] >>
+endobj
+7203 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 484.896 null ] >>
+endobj
+7204 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 473.938 null ] >>
+endobj
+7205 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 462.979 null ] >>
+endobj
+7206 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 452.02 null ] >>
+endobj
+7207 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 441.061 null ] >>
+endobj
+7208 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 430.102 null ] >>
+endobj
+7209 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 419.143 null ] >>
+endobj
+7210 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 408.184 null ] >>
+endobj
+7211 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 397.225 null ] >>
+endobj
+7212 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 386.266 null ] >>
+endobj
+7213 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 375.307 null ] >>
+endobj
+7214 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 364.349 null ] >>
+endobj
+7215 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 353.39 null ] >>
+endobj
+7216 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 342.431 null ] >>
+endobj
+7217 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 331.472 null ] >>
+endobj
+7218 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 320.513 null ] >>
+endobj
+7219 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 309.554 null ] >>
+endobj
+7220 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 298.595 null ] >>
+endobj
+7221 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 287.636 null ] >>
+endobj
+7222 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 276.677 null ] >>
+endobj
+7223 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 265.718 null ] >>
+endobj
+7224 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 254.759 null ] >>
+endobj
+7225 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 243.801 null ] >>
+endobj
+7226 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 232.842 null ] >>
+endobj
+7227 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 221.883 null ] >>
+endobj
+7228 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 210.924 null ] >>
+endobj
+7229 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 199.965 null ] >>
+endobj
+7230 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 189.006 null ] >>
+endobj
+7231 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 178.047 null ] >>
+endobj
+7232 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 167.088 null ] >>
+endobj
+7233 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 156.129 null ] >>
+endobj
+7234 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 145.17 null ] >>
+endobj
+7235 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 134.212 null ] >>
+endobj
+7236 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 123.253 null ] >>
+endobj
+7237 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 112.294 null ] >>
+endobj
+7238 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 101.335 null ] >>
+endobj
+7239 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 90.376 null ] >>
+endobj
+7240 0 obj
+<< /D [ 7179 0 R /XYZ 81.077 79.417 null ] >>
+endobj
+7178 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+7243 0 obj
+<< /Filter /FlateDecode /Length 4623 >>
+stream
+x]]o#}_\o@
+>Ɣ["Grxxnsy%e-|dwZvC(SAˆІŠM]غ&uQۧ꘡u*xŌ],OwOqsmIѻOMbc11Cm0akiLts ,~mXTdE'‚a%En]vS*ͦC$v뇛nqSF(xU}۹~.wܵuEYx])#6/)]^iNx
+Eօ}$Pyv(Fުp,EZtϻX$%Bn'N<Wf=R;`”&1IT 臇
+zn^o/;X@ab5V{Wntv1WۻAg>]n]X>ԽɳwnYm\^)@W7<_=(]
+
+Ȕ%
+*(a%H u|',%6< >X0(8' *Q(agp9ah"*= J*9%Zε7gi8usngo-O=tj-q ¸;ZI 3_(Óhl.d8xhhFFN
+kpAb&E#; Ci.+ը0˳PWH %BX* i%ı,5><$_9Аg][q3.X@d!
+K#̀Ppְ\O)#8D)3X$wrl'&
+ X4,QHF"1m86h|bJ<]BĊFrW Nq"!J[ƥ&Z\Hza1MT@*WԼ`ǓEԩ]`RD0>=iqa@#\YcD3>H 7)Jd?;$BAҀ&KcYrbX1J!5%y5z4 ":s8%.Ӱ2D(5HDw qhg&F0kHMp
+P+*Jxg:IPn0` d[RD!3)΁&q!Fr J ʳIcQMNa#WHGtqRb`H-]`#[a}%ft|rX!.n "dE#enIܒKn\ㇹ#|&o$Et­`E9Z"Mk$$? AXX_߀R" l=)w`/ )BIN -N04͋a߬G9%#aa4g(tس{ao!aNEA3B|G(Х}iz(ԪzJ}SdʓOODlzlXFN-P^{bJ϶@MJ@-T&%?]~(P,PسUr<y%F Zb|m? t9[LĜ/PbU?Ybj׮&5=ĺ{񮳸{lpAճ}oA! *h{!ᒸyՓ9$=szd吸gؚC-9$
+˫8$hwoqH$xᎰ$LtK1{ 57ٽcEkE0]
+>.M#Z")yqMT~bEexNB|OtPv 0)}T N3: tKa."# aCx`" i ywH61`$wAN R%S XiN,؂ERa5U9 2R4]-H>2ؐ2XB5qi" *h*jʒBkRyB"$M#f3~MEY5qHi"Aeh*Ę#I3ލiD/$GQG]-G>@L>0f΢qib l7ʡk(a*8HrKpG,31$*S5ӂh)ٳXGVPBT# a\Q(Eiyw;-G>`$Q7l,[B|t,M!a(+hE*8֔F 8ir iao7KO 0#+TM$4iQa Yk2Z&XKefH9HQ9HU>0LU
+GRg$:<At#ߑBdN)Yx:[㾖;*bi?>]'tLmS]|]{hP!N[uQfKmېCۢiNbʬh; cŁ}}|8O[m7vj #;-!u|mCտۻz_]Oc12k??]oCvË4Ay^'߁[V+NPҭfyDUwZfWl|E+鰾l׺pm 6[wJ[f޶߽;@|`#E,dDPw[f0\lדz
+t;"sJz1_y=Wb?xOQz3al7 GJX鏢t;w(LGʌÂT_mfv8y~qgK
+endstream
+endobj
+7242 0 obj
+<< /Type /Page /Contents 7243 0 R /Resources 7241 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 6821 0 R >>
+endobj
+7244 0 obj
+<< /D [ 7242 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+7245 0 obj
+<< /D [ 7242 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+7246 0 obj
+<< /D [ 7242 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+7247 0 obj
+<< /D [ 7242 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+7248 0 obj
+<< /D [ 7242 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+7249 0 obj
+<< /D [ 7242 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+7250 0 obj
+<< /D [ 7242 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+7251 0 obj
+<< /D [ 7242 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+7252 0 obj
+<< /D [ 7242 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+7253 0 obj
+<< /D [ 7242 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+7254 0 obj
+<< /D [ 7242 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+7255 0 obj
+<< /D [ 7242 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+7256 0 obj
+<< /D [ 7242 0 R /XYZ 81.077 427.707 null ] >>
+endobj
+7257 0 obj
+<< /D [ 7242 0 R /XYZ 81.077 416.748 null ] >>
+endobj
+7258 0 obj
+<< /D [ 7242 0 R /XYZ 81.077 405.789 null ] >>
+endobj
+7259 0 obj
+<< /D [ 7242 0 R /XYZ 81.077 394.831 null ] >>
+endobj
+7260 0 obj
+<< /D [ 7242 0 R /XYZ 81.077 383.872 null ] >>
+endobj
+7261 0 obj
+<< /D [ 7242 0 R /XYZ 81.077 372.913 null ] >>
+endobj
+7262 0 obj
+<< /D [ 7242 0 R /XYZ 81.077 361.954 null ] >>
+endobj
+7263 0 obj
+<< /D [ 7242 0 R /XYZ 81.077 350.995 null ] >>
+endobj
+7264 0 obj
+<< /D [ 7242 0 R /XYZ 81.077 340.036 null ] >>
+endobj
+7265 0 obj
+<< /D [ 7242 0 R /XYZ 81.077 329.077 null ] >>
+endobj
+7266 0 obj
+<< /D [ 7242 0 R /XYZ 81.077 318.118 null ] >>
+endobj
+7267 0 obj
+<< /D [ 7242 0 R /XYZ 81.077 307.159 null ] >>
+endobj
+7268 0 obj
+<< /D [ 7242 0 R /XYZ 81.077 296.2 null ] >>
+endobj
+7269 0 obj
+<< /D [ 7242 0 R /XYZ 81.077 285.242 null ] >>
+endobj
+7270 0 obj
+<< /D [ 7242 0 R /XYZ 81.077 274.283 null ] >>
+endobj
+7271 0 obj
+<< /D [ 7242 0 R /XYZ 81.077 232.062 null ] >>
+endobj
+7272 0 obj
+<< /D [ 7242 0 R /XYZ 81.077 221.103 null ] >>
+endobj
+7273 0 obj
+<< /D [ 7242 0 R /XYZ 81.077 210.144 null ] >>
+endobj
+7274 0 obj
+<< /D [ 7242 0 R /XYZ 81.077 199.185 null ] >>
+endobj
+7275 0 obj
+<< /D [ 7242 0 R /XYZ 81.077 188.226 null ] >>
+endobj
+7276 0 obj
+<< /D [ 7242 0 R /XYZ 81.077 177.267 null ] >>
+endobj
+7277 0 obj
+<< /D [ 7242 0 R /XYZ 81.077 166.308 null ] >>
+endobj
+7278 0 obj
+<< /D [ 7242 0 R /XYZ 81.077 155.349 null ] >>
+endobj
+7279 0 obj
+<< /D [ 7242 0 R /XYZ 81.077 144.39 null ] >>
+endobj
+7280 0 obj
+<< /D [ 7242 0 R /XYZ 81.077 133.431 null ] >>
+endobj
+7281 0 obj
+<< /D [ 7242 0 R /XYZ 81.077 122.473 null ] >>
+endobj
+7282 0 obj
+<< /D [ 7242 0 R /XYZ 81.077 111.514 null ] >>
+endobj
+7283 0 obj
+<< /D [ 7242 0 R /XYZ 81.077 100.555 null ] >>
+endobj
+7284 0 obj
+<< /D [ 7242 0 R /XYZ 81.077 89.596 null ] >>
+endobj
+7285 0 obj
+<< /D [ 7242 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+7241 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F32 1809 0 R /F23 660 0 R /F76 318 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+7288 0 obj
+<< /Filter /FlateDecode /Length 2422 >>
+stream
+xڭZMo6Wa#~^Z!EnBPl"K$' (Q\,C>/~b]Dqs]r{ T)Y_`-"H`HnR0_u'1RBx $B*S~{͡vs\xpD5 ƈi?aP
+HD-A_^QBeD.bk~uyyEJadehz:]Q֕{^vͪcNS&d_OK%FBL$(+&l爲"k{T[9NCݔ޴+Nv_r3);#؋7~wfX2XEXBWyV{@(F
+XBT(h4Qje]'~NUu7=l:'}z}<U0ER挚 CЯkKh쌘 .mmʫmL["Bv "c>=&UE{n,v
+;F:|}!Px)'jꦘpAxsi)ńT9 gaOONLI m/;.&H)YX|'~# ͈‚nB_IZmM9AS25SKIb cHU,EٌJ;Gٸ;uŐ`dAY6o{ -*d1zHg` xr15Jt5B2 EúzNGdQMp]ZlNjVŸƖl۫^iq؟m綶dҶi7j<U,&sKZLm3mL<v OmZ+7: jMOY i)ˍntS;/~Qb^iǦ-6eSwaDsm7loIVZ
+6ndܬDK #նv<`Vq<T *1A,vu=ńPq<{>10LhAgwuXË)$"c9 Qz0ܕeח5klW'f$YOO dIc$"09S"(8m߱ʂCgd ~7[Kg(#9\_gJXP<<GvLQ<
+[z" "
+=jp.!YY V6 CzGE*\A:NJe!buSܞO?})ܾ aҌѯoo'Fޑ]Ҕ^oqݒEi x:|mP4zNbAjCaD=3S_#ש f3SSygɐdg A!'!} ]w`UY}S[beRK9lwiSe_N L)8cI=pI4>egлmU$iƒ""Dj{̝W Q|^"GOۄ
+<]__R]l}}FĠs>o̘9l}y(6p}"Hs׫.2{SIa֏IwN}
+
+.0=tV`K4^}ێNخn`!"%L!"~}K}Aτ~Le($N$ b?M>[Mtcaӥc2,W6e.aȠ0<ȝOO?|Q
+endstream
+endobj
+7287 0 obj
+<< /Type /Page /Contents 7288 0 R /Resources 7286 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 7337 0 R >>
+endobj
+7289 0 obj
+<< /D [ 7287 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+7290 0 obj
+<< /D [ 7287 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+7291 0 obj
+<< /D [ 7287 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+7292 0 obj
+<< /D [ 7287 0 R /XYZ 81.077 705.071 null ] >>
+endobj
+7293 0 obj
+<< /D [ 7287 0 R /XYZ 81.077 694.112 null ] >>
+endobj
+7294 0 obj
+<< /D [ 7287 0 R /XYZ 81.077 683.153 null ] >>
+endobj
+7295 0 obj
+<< /D [ 7287 0 R /XYZ 81.077 630.351 null ] >>
+endobj
+7296 0 obj
+<< /D [ 7287 0 R /XYZ 81.077 619.392 null ] >>
+endobj
+7297 0 obj
+<< /D [ 7287 0 R /XYZ 81.077 608.433 null ] >>
+endobj
+7298 0 obj
+<< /D [ 7287 0 R /XYZ 81.077 597.474 null ] >>
+endobj
+7299 0 obj
+<< /D [ 7287 0 R /XYZ 81.077 586.515 null ] >>
+endobj
+7300 0 obj
+<< /D [ 7287 0 R /XYZ 81.077 575.556 null ] >>
+endobj
+7301 0 obj
+<< /D [ 7287 0 R /XYZ 81.077 564.598 null ] >>
+endobj
+7302 0 obj
+<< /D [ 7287 0 R /XYZ 81.077 553.639 null ] >>
+endobj
+7303 0 obj
+<< /D [ 7287 0 R /XYZ 81.077 542.68 null ] >>
+endobj
+7304 0 obj
+<< /D [ 7287 0 R /XYZ 81.077 531.721 null ] >>
+endobj
+7305 0 obj
+<< /D [ 7287 0 R /XYZ 81.077 520.762 null ] >>
+endobj
+7306 0 obj
+<< /D [ 7287 0 R /XYZ 81.077 509.803 null ] >>
+endobj
+7307 0 obj
+<< /D [ 7287 0 R /XYZ 81.077 498.844 null ] >>
+endobj
+7308 0 obj
+<< /D [ 7287 0 R /XYZ 81.077 487.885 null ] >>
+endobj
+7309 0 obj
+<< /D [ 7287 0 R /XYZ 81.077 476.926 null ] >>
+endobj
+7310 0 obj
+<< /D [ 7287 0 R /XYZ 81.077 465.967 null ] >>
+endobj
+7311 0 obj
+<< /D [ 7287 0 R /XYZ 81.077 455.009 null ] >>
+endobj
+7312 0 obj
+<< /D [ 7287 0 R /XYZ 81.077 390.251 null ] >>
+endobj
+7313 0 obj
+<< /D [ 7287 0 R /XYZ 81.077 379.292 null ] >>
+endobj
+7314 0 obj
+<< /D [ 7287 0 R /XYZ 81.077 368.334 null ] >>
+endobj
+7315 0 obj
+<< /D [ 7287 0 R /XYZ 81.077 357.375 null ] >>
+endobj
+7316 0 obj
+<< /D [ 7287 0 R /XYZ 81.077 346.416 null ] >>
+endobj
+7317 0 obj
+<< /D [ 7287 0 R /XYZ 81.077 335.457 null ] >>
+endobj
+7318 0 obj
+<< /D [ 7287 0 R /XYZ 81.077 324.498 null ] >>
+endobj
+7319 0 obj
+<< /D [ 7287 0 R /XYZ 81.077 313.539 null ] >>
+endobj
+7320 0 obj
+<< /D [ 7287 0 R /XYZ 81.077 302.58 null ] >>
+endobj
+7321 0 obj
+<< /D [ 7287 0 R /XYZ 81.077 291.621 null ] >>
+endobj
+7322 0 obj
+<< /D [ 7287 0 R /XYZ 81.077 280.662 null ] >>
+endobj
+7323 0 obj
+<< /D [ 7287 0 R /XYZ 81.077 269.703 null ] >>
+endobj
+7324 0 obj
+<< /D [ 7287 0 R /XYZ 81.077 258.745 null ] >>
+endobj
+7325 0 obj
+<< /D [ 7287 0 R /XYZ 81.077 247.786 null ] >>
+endobj
+7326 0 obj
+<< /D [ 7287 0 R /XYZ 81.077 236.827 null ] >>
+endobj
+7327 0 obj
+<< /D [ 7287 0 R /XYZ 81.077 201.957 null ] >>
+endobj
+7328 0 obj
+<< /D [ 7287 0 R /XYZ 81.077 167.088 null ] >>
+endobj
+7329 0 obj
+<< /D [ 7287 0 R /XYZ 81.077 156.129 null ] >>
+endobj
+7330 0 obj
+<< /D [ 7287 0 R /XYZ 81.077 145.17 null ] >>
+endobj
+7331 0 obj
+<< /D [ 7287 0 R /XYZ 81.077 134.212 null ] >>
+endobj
+7332 0 obj
+<< /D [ 7287 0 R /XYZ 81.077 123.253 null ] >>
+endobj
+7333 0 obj
+<< /D [ 7287 0 R /XYZ 81.077 112.294 null ] >>
+endobj
+7334 0 obj
+<< /D [ 7287 0 R /XYZ 81.077 101.335 null ] >>
+endobj
+7335 0 obj
+<< /D [ 7287 0 R /XYZ 81.077 90.376 null ] >>
+endobj
+7336 0 obj
+<< /D [ 7287 0 R /XYZ 81.077 79.417 null ] >>
+endobj
+7286 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F78 556 0 R /F70 185 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+7340 0 obj
+<< /Filter /FlateDecode /Length 2097 >>
+stream
+xڽZn8}W3aw2
+dPjU0}[>|9WD wAZQ`JmA}M1wͲs
+fsE3~U k5䇨JP8f2 ~״% "uĶ(OP
+Cz=>7zEk~@ygSWaSƳẽY@=.6G6٭ߺO:O[~@=!!Gf|ft
+;!
+P`/`t=_f@k;PLBY8,
+%B[BEgsחu}ujZ|Lsf_/(ܿW a/lգ/}7?l '}i/p
+*GqːEk;3T*C:(9f u>ر} U+V7nUW7N$6UCoxoJo нK\l dOcKW6
+SD͋j^:$W$)PRA"tl,`A6RN8ԧKr4U *dӬ7E'G{9 :2w
+
+4St^mWfyDӷ;s*_8X(fi|(eg> H4St/35ԴJ@8B%B/l'eHӐUq%K^M0-C.*)tE䰩딨G^2_IdI>ApZbfB8$z
+endstream
+endobj
+7339 0 obj
+<< /Type /Page /Contents 7340 0 R /Resources 7338 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 7337 0 R >>
+endobj
+7341 0 obj
+<< /D [ 7339 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+7342 0 obj
+<< /D [ 7339 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+7343 0 obj
+<< /D [ 7339 0 R /XYZ 81.077 752.891 null ] >>
+endobj
+7344 0 obj
+<< /D [ 7339 0 R /XYZ 81.077 741.933 null ] >>
+endobj
+7345 0 obj
+<< /D [ 7339 0 R /XYZ 81.077 725.992 null ] >>
+endobj
+7346 0 obj
+<< /D [ 7339 0 R /XYZ 81.077 715.033 null ] >>
+endobj
+7347 0 obj
+<< /D [ 7339 0 R /XYZ 81.077 704.075 null ] >>
+endobj
+7348 0 obj
+<< /D [ 7339 0 R /XYZ 81.077 693.116 null ] >>
+endobj
+7349 0 obj
+<< /D [ 7339 0 R /XYZ 81.077 682.157 null ] >>
+endobj
+7350 0 obj
+<< /D [ 7339 0 R /XYZ 81.077 671.198 null ] >>
+endobj
+7351 0 obj
+<< /D [ 7339 0 R /XYZ 81.077 660.239 null ] >>
+endobj
+7352 0 obj
+<< /D [ 7339 0 R /XYZ 81.077 649.28 null ] >>
+endobj
+7353 0 obj
+<< /D [ 7339 0 R /XYZ 81.077 638.321 null ] >>
+endobj
+7354 0 obj
+<< /D [ 7339 0 R /XYZ 81.077 627.362 null ] >>
+endobj
+7355 0 obj
+<< /D [ 7339 0 R /XYZ 81.077 616.403 null ] >>
+endobj
+7356 0 obj
+<< /D [ 7339 0 R /XYZ 81.077 605.444 null ] >>
+endobj
+7357 0 obj
+<< /D [ 7339 0 R /XYZ 81.077 594.486 null ] >>
+endobj
+7358 0 obj
+<< /D [ 7339 0 R /XYZ 81.077 583.527 null ] >>
+endobj
+7359 0 obj
+<< /D [ 7339 0 R /XYZ 81.077 572.568 null ] >>
+endobj
+7360 0 obj
+<< /D [ 7339 0 R /XYZ 81.077 561.609 null ] >>
+endobj
+7361 0 obj
+<< /D [ 7339 0 R /XYZ 81.077 461.533 null ] >>
+endobj
+7362 0 obj
+<< /D [ 7339 0 R /XYZ 81.077 450.574 null ] >>
+endobj
+7363 0 obj
+<< /D [ 7339 0 R /XYZ 81.077 439.615 null ] >>
+endobj
+7364 0 obj
+<< /D [ 7339 0 R /XYZ 81.077 428.656 null ] >>
+endobj
+7365 0 obj
+<< /D [ 7339 0 R /XYZ 81.077 417.697 null ] >>
+endobj
+7366 0 obj
+<< /D [ 7339 0 R /XYZ 81.077 406.738 null ] >>
+endobj
+7367 0 obj
+<< /D [ 7339 0 R /XYZ 81.077 395.78 null ] >>
+endobj
+7368 0 obj
+<< /D [ 7339 0 R /XYZ 81.077 329.03 null ] >>
+endobj
+7369 0 obj
+<< /D [ 7339 0 R /XYZ 81.077 318.071 null ] >>
+endobj
+7370 0 obj
+<< /D [ 7339 0 R /XYZ 81.077 307.112 null ] >>
+endobj
+7371 0 obj
+<< /D [ 7339 0 R /XYZ 81.077 296.153 null ] >>
+endobj
+7372 0 obj
+<< /D [ 7339 0 R /XYZ 81.077 285.194 null ] >>
+endobj
+7373 0 obj
+<< /D [ 7339 0 R /XYZ 81.077 274.235 null ] >>
+endobj
+7374 0 obj
+<< /D [ 7339 0 R /XYZ 81.077 263.276 null ] >>
+endobj
+7375 0 obj
+<< /D [ 7339 0 R /XYZ 81.077 252.318 null ] >>
+endobj
+7376 0 obj
+<< /D [ 7339 0 R /XYZ 81.077 241.359 null ] >>
+endobj
+7377 0 obj
+<< /D [ 7339 0 R /XYZ 81.077 225.418 null ] >>
+endobj
+7378 0 obj
+<< /D [ 7339 0 R /XYZ 81.077 214.46 null ] >>
+endobj
+7379 0 obj
+<< /D [ 7339 0 R /XYZ 81.077 203.501 null ] >>
+endobj
+7380 0 obj
+<< /D [ 7339 0 R /XYZ 81.077 192.542 null ] >>
+endobj
+7381 0 obj
+<< /D [ 7339 0 R /XYZ 81.077 181.583 null ] >>
+endobj
+7382 0 obj
+<< /D [ 7339 0 R /XYZ 81.077 170.624 null ] >>
+endobj
+7383 0 obj
+<< /D [ 7339 0 R /XYZ 81.077 159.665 null ] >>
+endobj
+7384 0 obj
+<< /D [ 7339 0 R /XYZ 81.077 148.706 null ] >>
+endobj
+7385 0 obj
+<< /D [ 7339 0 R /XYZ 81.077 137.747 null ] >>
+endobj
+7386 0 obj
+<< /D [ 7339 0 R /XYZ 81.077 104.87 null ] >>
+endobj
+7387 0 obj
+<< /D [ 7339 0 R /XYZ 81.077 93.912 null ] >>
+endobj
+7338 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F80 749 0 R /F19 184 0 R /F20 186 0 R /F75 317 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+7390 0 obj
+<< /Filter /FlateDecode /Length 2239 >>
+stream
+xڵZmo6E? \S Ep Pl%"K9INޡ(S-Q|șppH<pw?=HK*xB&J#&J%\n&L/lΤ^WEQͨ>-Hob_4:͛lWYg-m׳9U5fhjH6ׇMC7a yYUm JJHiru3%a!fYU}+l$bZ:sAI8 =x$ʶiͼ\kDՊ
+L0i` =4؄#F&$~@D$)( ԓ, )CGUU&kidgR,ƿb#꣏պ+% Qeqz#d\$)V9!yHr xVV'Wlu}o`|}~7
+#HpSQ+A8c藍݉_X#Ibh} 9rkH( ҌGY(@G?<Q z#/[pƳ[j-ȗy6*~7Z.2!Rڅq&K~ybJO_5YmsQ8W}s;Kf6kf"ܵgFPd`zdi":D>:~NlOfK@3ږ|_}kO剂`[m}VųUy匁 v8=p3D#͏\]DNB1V"oYr B)8H*AΏ\XB`*+{lvNȿ7.s'Yvh4B"SG?̆
+pCefmRM.S=eZ<6<TA :tcgWEWK. 鏘qhݶmxLښ-̴#Oߍ)\VuKq
+n;hs7<U2u:s)p Nm<Xk 8} Vy-VF 1|crKhjŻf4}#&yIh'YIx솎,a ~$P
+Qa˻0ŋ3f;&Z0Gr4Dq~afa|e Y1z:*.e`C[u3@-CA\GrE\4@Lr08x[-&%o>B]#_qA7N`;}$[I޲* !˹"0b6W?s0c?~~3jQ`7v9BƨM̑z!`Kpđca}^m&}$
+av=8"?+JERh
+f
+#d+ml:WGٵ6PGhҾEm7Yi#1 Zy 'ž`〶.1nmJ{32[{j5(_:5)$[\
+~J܉6y6Urci<|`sƒ> 'S-!a]%0/ay"aқx|
++qzubǔ^ A9+n6=ާ6[o^Dnmv
+#qD=@{/VeFB
+ćnHGQql<@ʼaDŽ˸z8?<'jf!#e>?:k@Z#UN>:ɎC|AJ; mզ!_rx
+vjLup*[yB.eA%HE^ u$r 7d?4=8
+endstream
+endobj
+7389 0 obj
+<< /Type /Page /Contents 7390 0 R /Resources 7388 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 7337 0 R >>
+endobj
+7391 0 obj
+<< /D [ 7389 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+7392 0 obj
+<< /D [ 7389 0 R /XYZ 81.077 742.929 null ] >>
+endobj
+7393 0 obj
+<< /D [ 7389 0 R /XYZ 81.077 731.97 null ] >>
+endobj
+7394 0 obj
+<< /D [ 7389 0 R /XYZ 81.077 721.011 null ] >>
+endobj
+7395 0 obj
+<< /D [ 7389 0 R /XYZ 81.077 705.071 null ] >>
+endobj
+7396 0 obj
+<< /D [ 7389 0 R /XYZ 81.077 694.112 null ] >>
+endobj
+7397 0 obj
+<< /D [ 7389 0 R /XYZ 81.077 683.153 null ] >>
+endobj
+7398 0 obj
+<< /D [ 7389 0 R /XYZ 81.077 672.194 null ] >>
+endobj
+7399 0 obj
+<< /D [ 7389 0 R /XYZ 81.077 661.235 null ] >>
+endobj
+7400 0 obj
+<< /D [ 7389 0 R /XYZ 81.077 650.276 null ] >>
+endobj
+7401 0 obj
+<< /D [ 7389 0 R /XYZ 81.077 639.317 null ] >>
+endobj
+7402 0 obj
+<< /D [ 7389 0 R /XYZ 81.077 628.358 null ] >>
+endobj
+7403 0 obj
+<< /D [ 7389 0 R /XYZ 81.077 617.4 null ] >>
+endobj
+7404 0 obj
+<< /D [ 7389 0 R /XYZ 81.077 606.441 null ] >>
+endobj
+7405 0 obj
+<< /D [ 7389 0 R /XYZ 81.077 595.482 null ] >>
+endobj
+7406 0 obj
+<< /D [ 7389 0 R /XYZ 81.077 584.523 null ] >>
+endobj
+7407 0 obj
+<< /D [ 7389 0 R /XYZ 81.077 573.564 null ] >>
+endobj
+7408 0 obj
+<< /D [ 7389 0 R /XYZ 81.077 562.605 null ] >>
+endobj
+7409 0 obj
+<< /D [ 7389 0 R /XYZ 81.077 551.646 null ] >>
+endobj
+7410 0 obj
+<< /D [ 7389 0 R /XYZ 81.077 540.687 null ] >>
+endobj
+7411 0 obj
+<< /D [ 7389 0 R /XYZ 81.077 529.728 null ] >>
+endobj
+7412 0 obj
+<< /D [ 7389 0 R /XYZ 81.077 518.769 null ] >>
+endobj
+7413 0 obj
+<< /D [ 7389 0 R /XYZ 81.077 507.811 null ] >>
+endobj
+7414 0 obj
+<< /D [ 7389 0 R /XYZ 81.077 496.852 null ] >>
+endobj
+7415 0 obj
+<< /D [ 7389 0 R /XYZ 81.077 485.893 null ] >>
+endobj
+7416 0 obj
+<< /D [ 7389 0 R /XYZ 81.077 474.934 null ] >>
+endobj
+7417 0 obj
+<< /D [ 7389 0 R /XYZ 81.077 463.975 null ] >>
+endobj
+7418 0 obj
+<< /D [ 7389 0 R /XYZ 81.077 409.18 null ] >>
+endobj
+7419 0 obj
+<< /D [ 7389 0 R /XYZ 81.077 398.221 null ] >>
+endobj
+7420 0 obj
+<< /D [ 7389 0 R /XYZ 81.077 387.263 null ] >>
+endobj
+7421 0 obj
+<< /D [ 7389 0 R /XYZ 81.077 376.304 null ] >>
+endobj
+7422 0 obj
+<< /D [ 7389 0 R /XYZ 81.077 365.345 null ] >>
+endobj
+7423 0 obj
+<< /D [ 7389 0 R /XYZ 81.077 354.386 null ] >>
+endobj
+7424 0 obj
+<< /D [ 7389 0 R /XYZ 81.077 343.427 null ] >>
+endobj
+7425 0 obj
+<< /D [ 7389 0 R /XYZ 81.077 332.468 null ] >>
+endobj
+7426 0 obj
+<< /D [ 7389 0 R /XYZ 81.077 316.528 null ] >>
+endobj
+7427 0 obj
+<< /D [ 7389 0 R /XYZ 81.077 305.569 null ] >>
+endobj
+7428 0 obj
+<< /D [ 7389 0 R /XYZ 81.077 232.842 null ] >>
+endobj
+7429 0 obj
+<< /D [ 7389 0 R /XYZ 81.077 221.883 null ] >>
+endobj
+7430 0 obj
+<< /D [ 7389 0 R /XYZ 81.077 210.924 null ] >>
+endobj
+7431 0 obj
+<< /D [ 7389 0 R /XYZ 81.077 199.965 null ] >>
+endobj
+7432 0 obj
+<< /D [ 7389 0 R /XYZ 81.077 189.006 null ] >>
+endobj
+7433 0 obj
+<< /D [ 7389 0 R /XYZ 81.077 178.047 null ] >>
+endobj
+7434 0 obj
+<< /D [ 7389 0 R /XYZ 81.077 167.088 null ] >>
+endobj
+7435 0 obj
+<< /D [ 7389 0 R /XYZ 81.077 156.129 null ] >>
+endobj
+7436 0 obj
+<< /D [ 7389 0 R /XYZ 81.077 145.17 null ] >>
+endobj
+7437 0 obj
+<< /D [ 7389 0 R /XYZ 81.077 134.212 null ] >>
+endobj
+7438 0 obj
+<< /D [ 7389 0 R /XYZ 81.077 123.253 null ] >>
+endobj
+7439 0 obj
+<< /D [ 7389 0 R /XYZ 81.077 112.294 null ] >>
+endobj
+7440 0 obj
+<< /D [ 7389 0 R /XYZ 81.077 101.335 null ] >>
+endobj
+7441 0 obj
+<< /D [ 7389 0 R /XYZ 81.077 90.376 null ] >>
+endobj
+7442 0 obj
+<< /D [ 7389 0 R /XYZ 81.077 79.417 null ] >>
+endobj
+7388 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F20 186 0 R /F73 189 0 R /F69 183 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+7445 0 obj
+<< /Filter /FlateDecode /Length 2466 >>
+stream
+xZ]6}ϯ00?nif_fM*6'"K,w:4}/EJ&ml:Ӿ,G<\j ~|+/㳿>{VGZFgwt32S "gRݮg?E&鋟o9[g
+i!
+b$[Y4UӾh6Gfi^捻<ҍ=G6È`:eidC!_jg|ٕYڝ2ӈp6RiC\7@ܴm_?wMuv*k3LIaT!hXva F~<H G
+H3!wMU5/ߗ'ޚ/^Vu::::0FNM@htYNZArz .
+]aEz9=ca˜(P޻-8{=rqȵ4wZLs *܂ȝbH@Qj %
+Cˢ$i6lÒuS2M)Qj)hI6'o1NRCwOo:X(aRQ(@STŹʆ8q-Kәv'U{ 욮\}VgS'sߵpzQ#vS,ֿv׏/njR2W¶\X :Q zq9%Z nsfOM TVzKiKwoZuUr57vT?t0 :i gǤټ9oא)`9qu"͗uk\uѵo <]0dZ#!`I!B?&xL$U]E=x)V]5ݐC+$du$UR'm(%H*=rM׿JgYk!#t/&zAJ{8GJ; aʛ4kYZ,_C(<'W cJ](a/o0)IlL}<)ʀ,)F:Dtצ+N0T4EN3$D&1rt/Ĺ PgjfH5CӢYNSC%|WCk7Znx>]{ 7;`ۗە/0%} eu E`/мtwQΜk(- /Nzɾ2^h`Hf,gZ+c<BVk.ֽw>rwyJkkV2pb^>)apLeƑQޯʳu5r=1iL"*}
+aJ/<dK %JKDP
+HhOߧOk}%=!H=#I"t?r_X3 &9ąFP:~{\3Z!Q7k&s?fǯ:$q>rҸ\n_Mە >O簟 G@\^m|]lTF]/akC4TrҸǧ%D^k2
+exuzck2>ZNϊ
+endstream
+endobj
+7444 0 obj
+<< /Type /Page /Contents 7445 0 R /Resources 7443 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 7337 0 R >>
+endobj
+7446 0 obj
+<< /D [ 7444 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+7447 0 obj
+<< /D [ 7444 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+7448 0 obj
+<< /D [ 7444 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+7449 0 obj
+<< /D [ 7444 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+7450 0 obj
+<< /D [ 7444 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+7451 0 obj
+<< /D [ 7444 0 R /XYZ 81.077 695.108 null ] >>
+endobj
+7452 0 obj
+<< /D [ 7444 0 R /XYZ 81.077 684.149 null ] >>
+endobj
+7453 0 obj
+<< /D [ 7444 0 R /XYZ 81.077 673.19 null ] >>
+endobj
+7454 0 obj
+<< /D [ 7444 0 R /XYZ 81.077 618.396 null ] >>
+endobj
+7455 0 obj
+<< /D [ 7444 0 R /XYZ 81.077 607.437 null ] >>
+endobj
+7456 0 obj
+<< /D [ 7444 0 R /XYZ 81.077 596.478 null ] >>
+endobj
+7457 0 obj
+<< /D [ 7444 0 R /XYZ 81.077 585.519 null ] >>
+endobj
+7458 0 obj
+<< /D [ 7444 0 R /XYZ 81.077 574.56 null ] >>
+endobj
+7459 0 obj
+<< /D [ 7444 0 R /XYZ 81.077 563.601 null ] >>
+endobj
+7460 0 obj
+<< /D [ 7444 0 R /XYZ 81.077 552.642 null ] >>
+endobj
+7461 0 obj
+<< /D [ 7444 0 R /XYZ 81.077 541.684 null ] >>
+endobj
+7462 0 obj
+<< /D [ 7444 0 R /XYZ 81.077 530.725 null ] >>
+endobj
+7463 0 obj
+<< /D [ 7444 0 R /XYZ 81.077 519.766 null ] >>
+endobj
+7464 0 obj
+<< /D [ 7444 0 R /XYZ 81.077 508.807 null ] >>
+endobj
+7465 0 obj
+<< /D [ 7444 0 R /XYZ 81.077 497.848 null ] >>
+endobj
+7466 0 obj
+<< /D [ 7444 0 R /XYZ 81.077 431.098 null ] >>
+endobj
+7467 0 obj
+<< /D [ 7444 0 R /XYZ 81.077 420.139 null ] >>
+endobj
+7468 0 obj
+<< /D [ 7444 0 R /XYZ 81.077 379.292 null ] >>
+endobj
+7469 0 obj
+<< /D [ 7444 0 R /XYZ 81.077 368.334 null ] >>
+endobj
+7470 0 obj
+<< /D [ 7444 0 R /XYZ 81.077 357.375 null ] >>
+endobj
+7471 0 obj
+<< /D [ 7444 0 R /XYZ 81.077 278.67 null ] >>
+endobj
+7472 0 obj
+<< /D [ 7444 0 R /XYZ 81.077 267.711 null ] >>
+endobj
+7473 0 obj
+<< /D [ 7444 0 R /XYZ 81.077 236.827 null ] >>
+endobj
+7474 0 obj
+<< /D [ 7444 0 R /XYZ 81.077 225.868 null ] >>
+endobj
+7475 0 obj
+<< /D [ 7444 0 R /XYZ 81.077 214.909 null ] >>
+endobj
+7476 0 obj
+<< /D [ 7444 0 R /XYZ 81.077 203.95 null ] >>
+endobj
+7477 0 obj
+<< /D [ 7444 0 R /XYZ 81.077 192.991 null ] >>
+endobj
+7478 0 obj
+<< /D [ 7444 0 R /XYZ 81.077 182.032 null ] >>
+endobj
+7479 0 obj
+<< /D [ 7444 0 R /XYZ 81.077 171.073 null ] >>
+endobj
+7480 0 obj
+<< /D [ 7444 0 R /XYZ 81.077 160.114 null ] >>
+endobj
+7481 0 obj
+<< /D [ 7444 0 R /XYZ 81.077 149.155 null ] >>
+endobj
+7482 0 obj
+<< /D [ 7444 0 R /XYZ 81.077 138.197 null ] >>
+endobj
+7483 0 obj
+<< /D [ 7444 0 R /XYZ 81.077 127.238 null ] >>
+endobj
+7484 0 obj
+<< /D [ 7444 0 R /XYZ 81.077 116.279 null ] >>
+endobj
+7485 0 obj
+<< /D [ 7444 0 R /XYZ 81.077 105.32 null ] >>
+endobj
+7486 0 obj
+<< /D [ 7444 0 R /XYZ 81.077 94.361 null ] >>
+endobj
+7487 0 obj
+<< /D [ 7444 0 R /XYZ 81.077 83.402 null ] >>
+endobj
+7443 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F76 318 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+7490 0 obj
+<< /Filter /FlateDecode /Length 1828 >>
+stream
+xڽZMo6W؋]3hES
+ߺJF\I$В)f5`/Q"q2tr;hyqvqt&a&F3B5,6uz>VO?P!qiR6iqʹi?gulfgM5Ogϕ&xdU^JMZ>[̡s )9IʹNeC0![h
+L2i8 !<e6Eش?_\r9Qh3nHJxϚuoyK؎;y80u'"LEBP" !Ȃ!(o
+'we봘߇]c퉴uS=mg=5Lv\<*]7󫇞m CVi,Wi@MW[dӵ8ݥUDۜmO鵋:MD"#㉰qD$D;AhϜ 6
+mUwhK]7Iմ4~j7m$4.q]9*V=;c7Do:kEǬhcϋ CSϲ jo z@r\I}rhLlt~5
+.O=$&hH*<y(n|*hmeI`jQ2)@mKA"㓈ir)1,v[Hm6DC^
+y,N&ɟVMvuk(
+uՅ.ĖRB>Gv
+WE|ߓ d9C*脻  9?אּ˶񺬲Oe<{ɗuoSt*53)M Xp{ <
+h'0\zqUQ>Wrw[O;2ͳ~ҥÀpW?3PB%n5@J#VpAJ#.Tҧ(VШ Jh/@*ٛ0rw+0TH.P=
+
+endstream
+endobj
+7489 0 obj
+<< /Type /Page /Contents 7490 0 R /Resources 7488 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 7337 0 R >>
+endobj
+7491 0 obj
+<< /D [ 7489 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+7492 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 742.929 null ] >>
+endobj
+7493 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 731.97 null ] >>
+endobj
+7494 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 721.011 null ] >>
+endobj
+7495 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 710.052 null ] >>
+endobj
+7496 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 699.093 null ] >>
+endobj
+7497 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 688.134 null ] >>
+endobj
+7498 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 677.175 null ] >>
+endobj
+7499 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 666.217 null ] >>
+endobj
+7500 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 655.258 null ] >>
+endobj
+7501 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 644.299 null ] >>
+endobj
+7502 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 633.34 null ] >>
+endobj
+7503 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 622.381 null ] >>
+endobj
+7504 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 611.422 null ] >>
+endobj
+7505 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 600.463 null ] >>
+endobj
+7506 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 589.504 null ] >>
+endobj
+7507 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 578.545 null ] >>
+endobj
+7508 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 567.586 null ] >>
+endobj
+7509 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 551.646 null ] >>
+endobj
+7510 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 540.687 null ] >>
+endobj
+7511 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 529.728 null ] >>
+endobj
+7512 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 518.769 null ] >>
+endobj
+7513 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 507.811 null ] >>
+endobj
+7514 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 496.852 null ] >>
+endobj
+7515 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 485.893 null ] >>
+endobj
+7516 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 474.934 null ] >>
+endobj
+7517 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 463.975 null ] >>
+endobj
+7518 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 453.016 null ] >>
+endobj
+7519 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 442.057 null ] >>
+endobj
+7520 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 431.098 null ] >>
+endobj
+7521 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 420.139 null ] >>
+endobj
+7522 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 409.18 null ] >>
+endobj
+7523 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 398.221 null ] >>
+endobj
+7524 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 387.263 null ] >>
+endobj
+7525 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 376.304 null ] >>
+endobj
+7526 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 365.345 null ] >>
+endobj
+7527 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 354.386 null ] >>
+endobj
+7528 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 343.427 null ] >>
+endobj
+7529 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 332.468 null ] >>
+endobj
+7530 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 321.509 null ] >>
+endobj
+7531 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 305.569 null ] >>
+endobj
+7532 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 294.61 null ] >>
+endobj
+7533 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 283.651 null ] >>
+endobj
+7534 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 252.767 null ] >>
+endobj
+7535 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 241.808 null ] >>
+endobj
+7536 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 230.849 null ] >>
+endobj
+7537 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 219.89 null ] >>
+endobj
+7538 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 208.931 null ] >>
+endobj
+7539 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 197.972 null ] >>
+endobj
+7540 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 187.014 null ] >>
+endobj
+7541 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 176.055 null ] >>
+endobj
+7542 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 165.096 null ] >>
+endobj
+7543 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 154.137 null ] >>
+endobj
+7544 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 143.178 null ] >>
+endobj
+7545 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 132.219 null ] >>
+endobj
+7546 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 121.26 null ] >>
+endobj
+7547 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 105.32 null ] >>
+endobj
+7548 0 obj
+<< /D [ 7489 0 R /XYZ 81.077 94.361 null ] >>
+endobj
+7488 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F20 186 0 R /F26 662 0 R /F73 189 0 R /F69 183 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+7551 0 obj
+<< /Filter /FlateDecode /Length 1688 >>
+stream
+xZKo7WEFc7
+4A{Idy-/,4P\s-k?r>-F|w?&G?9>ahrqG0I;70F'tr|u,a\| b|neUѡX1Px9X]Y-+1׫լ:mnh/{i*F5^ܸ^mYW͚f "+|Qކ7E_8-񠟔'ZNl.wzE9˄9/|(9`M]L⫬4س V0+] VrnfU;!>߅7x|[ uSWU-fve5-M?tYVYa|`<|tS1{Ų\mэ Njwfqo ˍ;.$F6ewH4یrc
+ζ圤J2#]Kτɶ MpzN9>KRdGx4劤J2CP<g2i52A|:3y!6-$)IeчPBK,M#i ZZJ(EmO
+endstream
+endobj
+7550 0 obj
+<< /Type /Page /Contents 7551 0 R /Resources 7549 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 7337 0 R >>
+endobj
+7552 0 obj
+<< /D [ 7550 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+7553 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 700.629 null ] >>
+endobj
+7554 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 689.67 null ] >>
+endobj
+7555 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 678.711 null ] >>
+endobj
+7556 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 667.753 null ] >>
+endobj
+7557 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 656.794 null ] >>
+endobj
+7558 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 645.835 null ] >>
+endobj
+7559 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 634.876 null ] >>
+endobj
+7560 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 623.917 null ] >>
+endobj
+7561 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 612.958 null ] >>
+endobj
+7562 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 601.999 null ] >>
+endobj
+7563 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 591.04 null ] >>
+endobj
+7564 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 580.081 null ] >>
+endobj
+7565 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 569.122 null ] >>
+endobj
+7566 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 558.163 null ] >>
+endobj
+7567 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 529.272 null ] >>
+endobj
+7568 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 518.313 null ] >>
+endobj
+7569 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 507.354 null ] >>
+endobj
+7570 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 496.395 null ] >>
+endobj
+7571 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 485.436 null ] >>
+endobj
+7572 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 474.477 null ] >>
+endobj
+7573 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 463.518 null ] >>
+endobj
+7574 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 452.559 null ] >>
+endobj
+7575 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 441.601 null ] >>
+endobj
+7576 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 430.642 null ] >>
+endobj
+7577 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 419.683 null ] >>
+endobj
+7578 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 408.724 null ] >>
+endobj
+7579 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 397.765 null ] >>
+endobj
+7580 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 386.806 null ] >>
+endobj
+7581 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 370.866 null ] >>
+endobj
+7582 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 359.907 null ] >>
+endobj
+7583 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 348.948 null ] >>
+endobj
+7584 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 337.989 null ] >>
+endobj
+7585 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 327.03 null ] >>
+endobj
+7586 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 316.071 null ] >>
+endobj
+7587 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 305.112 null ] >>
+endobj
+7588 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 294.154 null ] >>
+endobj
+7589 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 283.195 null ] >>
+endobj
+7590 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 272.236 null ] >>
+endobj
+7591 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 261.277 null ] >>
+endobj
+7592 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 250.318 null ] >>
+endobj
+7593 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 239.359 null ] >>
+endobj
+7594 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 228.4 null ] >>
+endobj
+7595 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 217.441 null ] >>
+endobj
+7596 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 201.501 null ] >>
+endobj
+7597 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 190.542 null ] >>
+endobj
+7598 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 179.583 null ] >>
+endobj
+7599 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 168.624 null ] >>
+endobj
+7600 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 157.665 null ] >>
+endobj
+7601 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 146.706 null ] >>
+endobj
+7602 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 135.748 null ] >>
+endobj
+7603 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 124.789 null ] >>
+endobj
+7604 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 113.83 null ] >>
+endobj
+7605 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 102.871 null ] >>
+endobj
+7606 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 91.912 null ] >>
+endobj
+7607 0 obj
+<< /D [ 7550 0 R /XYZ 81.077 80.953 null ] >>
+endobj
+7549 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F80 749 0 R /F19 184 0 R /F20 186 0 R /F73 189 0 R /F69 183 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+7610 0 obj
+<< /Filter /FlateDecode /Length 2248 >>
+stream
+xڭZ[o۸~ϯ0hX%f_-!8`q]$:$7~QbNo8gFƋ^r }9U0=#0 /"HtJ$DT,z{%"CJJÌo:Z#_[[J6SpNMbTohJA>q*҅L3R NjH¹7")vݒId]7UѴ+
+XK%}Q&!I(Q| LBZsX vN([Bmy4m˼qϪM/L&fO?M㧗(mݿ$Sn70~S~×yz_l !MВ{1iM_7mFdɣQ&}o,i?j;þ+,z3S>}5׸ygĬI8F )L[ȈRĥS]`tb}Ua"f|HZx\=4uWbsy
+.gWE
+Zەj 6ݮQ^`Z%a瓵q{//H2eշv{`o=9\7qsxjlUS:`BH
+wl}Z\kꟁ66!`̃a|6os8!ioC ϳ!M!Z+ZoѦy=Mp vsKn˶[UYm˪^XόQҨ#@?GM!af.Wcj׬y[\VՕгωi KAƣ
+gqzst!%ʲB~WXK8e<ձjݷb9_=)
+FsVdT R_,HUSw_hy%ćUFE}UT+k
+ 0inu;ۂ :4ׇo3Qe}"f&p=Jn X$&%~cCtFG^8 –_Ecpʌ"|/xTs<@T)1ӟ7QYHr;XE{b͗)7EW4۾"K z|[{;צM,lFgܞv=uRW7[PĹV~]l6llןq؞rD8 9{2]!))8I64--
+u75l>Qt#p =k$?m.RUpoܙia#NxF " 12 $cu良QB'h47يa(,kcϖVg+9GsK$))_w{OBjSe[}o`>O:튇6Xk
+endstream
+endobj
+7609 0 obj
+<< /Type /Page /Contents 7610 0 R /Resources 7608 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 7337 0 R >>
+endobj
+7611 0 obj
+<< /D [ 7609 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+7612 0 obj
+<< /D [ 7609 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+7613 0 obj
+<< /D [ 7609 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+7614 0 obj
+<< /D [ 7609 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+97 0 obj
+<< /D [ 7609 0 R /XYZ 79.37 722.92 null ] >>
+endobj
+7615 0 obj
+<< /D [ 7609 0 R /XYZ 81.077 614.786 null ] >>
+endobj
+7616 0 obj
+<< /D [ 7609 0 R /XYZ 81.077 603.827 null ] >>
+endobj
+7617 0 obj
+<< /D [ 7609 0 R /XYZ 81.077 561.718 null ] >>
+endobj
+7618 0 obj
+<< /D [ 7609 0 R /XYZ 81.077 550.759 null ] >>
+endobj
+7619 0 obj
+<< /D [ 7609 0 R /XYZ 81.077 539.8 null ] >>
+endobj
+7620 0 obj
+<< /D [ 7609 0 R /XYZ 81.077 528.841 null ] >>
+endobj
+7621 0 obj
+<< /D [ 7609 0 R /XYZ 81.077 517.882 null ] >>
+endobj
+7622 0 obj
+<< /D [ 7609 0 R /XYZ 81.077 506.923 null ] >>
+endobj
+7623 0 obj
+<< /D [ 7609 0 R /XYZ 81.077 495.964 null ] >>
+endobj
+7624 0 obj
+<< /D [ 7609 0 R /XYZ 81.077 485.006 null ] >>
+endobj
+7625 0 obj
+<< /D [ 7609 0 R /XYZ 81.077 474.047 null ] >>
+endobj
+7626 0 obj
+<< /D [ 7609 0 R /XYZ 81.077 463.088 null ] >>
+endobj
+7627 0 obj
+<< /D [ 7609 0 R /XYZ 81.077 452.129 null ] >>
+endobj
+7628 0 obj
+<< /D [ 7609 0 R /XYZ 81.077 441.17 null ] >>
+endobj
+7629 0 obj
+<< /D [ 7609 0 R /XYZ 81.077 430.211 null ] >>
+endobj
+7630 0 obj
+<< /D [ 7609 0 R /XYZ 81.077 419.252 null ] >>
+endobj
+7631 0 obj
+<< /D [ 7609 0 R /XYZ 81.077 408.293 null ] >>
+endobj
+7632 0 obj
+<< /D [ 7609 0 R /XYZ 81.077 397.334 null ] >>
+endobj
+7633 0 obj
+<< /D [ 7609 0 R /XYZ 81.077 368.929 null ] >>
+endobj
+7634 0 obj
+<< /D [ 7609 0 R /XYZ 81.077 357.971 null ] >>
+endobj
+7635 0 obj
+<< /D [ 7609 0 R /XYZ 81.077 305.655 null ] >>
+endobj
+7636 0 obj
+<< /D [ 7609 0 R /XYZ 81.077 294.696 null ] >>
+endobj
+7637 0 obj
+<< /D [ 7609 0 R /XYZ 81.077 283.738 null ] >>
+endobj
+7638 0 obj
+<< /D [ 7609 0 R /XYZ 81.077 272.779 null ] >>
+endobj
+7639 0 obj
+<< /D [ 7609 0 R /XYZ 81.077 261.82 null ] >>
+endobj
+7640 0 obj
+<< /D [ 7609 0 R /XYZ 81.077 250.861 null ] >>
+endobj
+7641 0 obj
+<< /D [ 7609 0 R /XYZ 81.077 239.902 null ] >>
+endobj
+7642 0 obj
+<< /D [ 7609 0 R /XYZ 81.077 89.596 null ] >>
+endobj
+7643 0 obj
+<< /D [ 7609 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+7608 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F72 187 0 R /F19 184 0 R /F20 186 0 R /F79 668 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+7646 0 obj
+<< /Filter /FlateDecode /Length 1798 >>
+stream
+xڽZKoFWȡPm)(P'=4@˔MD"RK ;YnCq4ݍ\_|dn\tFaFF3B5]Fdc+OUY{_zWy[Y^݆8WEU/JeyS7b;s2{su9<-6ɛ8x~h._gbNkP3JGa󺩊& ajgٴv=%y'2kp-ڢYU}9eFo2ߴX[?9e8B fQU /pfYot<T&Du[.{)\{\TE^u<ٲ82qB$a<f7C?}PrPLir8Ԅ BE:pS`Zs]> r9kW|vSWyeU.}SoN6t_tF;d#[9,&a&pBlQ?T!)Q>%#IeY[M43#NGiLx@Q>^j7d-8%Fm5l/7j<Q\&D9Z!3)vhYU< ?}:Nx5 Ƣ.RñwlӫL~?&Mqȿ-@p 9sZ&wE)E2qQE
+A蹥$87?rnGAm/33Vzu,+v1_N|
+)"|
+}reE8 :ًɻ 6XH%Fƒ-n!:қJ'wc2DImb?mJc6GxFa%:P{8AG+Y"%7s=
+xqq
+X%ɕǧ* uPq^Zo}~pENl2kXHڽ}gp!NJA(SM{3ǃؘDM@VK l[3= )hYCJnʒCI]k4ZK9о2G>'htdа2[NgQ3Ay/|pzƠ]s.`>a_hKqe?AQ0D 12}d6>afLl-y>Q/}z.(k8oYĹq1AZ UF¸/ 5Uũ jg YzjMXM#S8T!R%^hZ$%tT
+endstream
+endobj
+7645 0 obj
+<< /Type /Page /Contents 7646 0 R /Resources 7644 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 7337 0 R >>
+endobj
+7647 0 obj
+<< /D [ 7645 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+7648 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 707.063 null ] >>
+endobj
+7649 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 696.104 null ] >>
+endobj
+7650 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 685.146 null ] >>
+endobj
+7651 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 674.187 null ] >>
+endobj
+7652 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 663.228 null ] >>
+endobj
+7653 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 652.269 null ] >>
+endobj
+7654 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 641.31 null ] >>
+endobj
+7655 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 630.351 null ] >>
+endobj
+7656 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 619.392 null ] >>
+endobj
+7657 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 608.433 null ] >>
+endobj
+7658 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 597.474 null ] >>
+endobj
+7659 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 586.515 null ] >>
+endobj
+7660 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 575.556 null ] >>
+endobj
+7661 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 564.598 null ] >>
+endobj
+7662 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 553.639 null ] >>
+endobj
+7663 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 542.68 null ] >>
+endobj
+7664 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 531.721 null ] >>
+endobj
+7665 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 520.762 null ] >>
+endobj
+7666 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 491.87 null ] >>
+endobj
+7667 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 480.911 null ] >>
+endobj
+7668 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 469.953 null ] >>
+endobj
+7669 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 458.994 null ] >>
+endobj
+7670 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 448.035 null ] >>
+endobj
+7671 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 437.076 null ] >>
+endobj
+7672 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 426.117 null ] >>
+endobj
+7673 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 415.158 null ] >>
+endobj
+7674 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 404.199 null ] >>
+endobj
+7675 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 393.24 null ] >>
+endobj
+7676 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 382.281 null ] >>
+endobj
+7677 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 371.322 null ] >>
+endobj
+7678 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 360.363 null ] >>
+endobj
+7679 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 349.405 null ] >>
+endobj
+7680 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 338.446 null ] >>
+endobj
+7681 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 327.487 null ] >>
+endobj
+7682 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 316.528 null ] >>
+endobj
+7683 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 305.569 null ] >>
+endobj
+7684 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 276.677 null ] >>
+endobj
+7685 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 265.718 null ] >>
+endobj
+7686 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 236.827 null ] >>
+endobj
+7687 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 225.868 null ] >>
+endobj
+7688 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 214.909 null ] >>
+endobj
+7689 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 203.95 null ] >>
+endobj
+7690 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 192.991 null ] >>
+endobj
+7691 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 182.032 null ] >>
+endobj
+7692 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 171.073 null ] >>
+endobj
+7693 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 160.114 null ] >>
+endobj
+7694 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 149.155 null ] >>
+endobj
+7695 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 138.197 null ] >>
+endobj
+7696 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 127.238 null ] >>
+endobj
+7697 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 116.279 null ] >>
+endobj
+7698 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 105.32 null ] >>
+endobj
+7699 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 94.361 null ] >>
+endobj
+7700 0 obj
+<< /D [ 7645 0 R /XYZ 81.077 83.402 null ] >>
+endobj
+7644 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F23 660 0 R /F20 186 0 R /F73 189 0 R /F69 183 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+7703 0 obj
+<< /Filter /FlateDecode /Length 1816 >>
+stream
+xڭYo6~_!/603M*X[`iّm!J.HѢڢ>2OxwrGp7"aOWn>*6(ф"<"#-$j$AXfXj'uQ&#)I".7>7i],W]ict`At(+ u]:2w<_w)0&D8h>u2y̷hvT#gdžAse(^6&[* DTJ/[ aR-[&1l9L6<D1xjlB]h+#IF @}JqB!WdT2^Tu5jRK;ue|Q*oVym3;gNnUQX଱s<50A쫪|pBV);>3`3z<7vW:hVיYVZU r-/#o!D"[Ϊ/'(`
+zcH଀f"[lg鬪֧iY)A9Y{8O>wG^ߣJ5L&2tMNc#.7=)abi1FTZ{U^srsuOC f':.&Xd^a
+
+2~Ҳ F8lh}ԲҪ댴]fmePYa>eڦZ?oʝ6oH'
+"̗R$؇*(Iitԟ;߮rZb噻Y]7Kk+?U^;ulOk˽MQM{HBb:^`sh#
+|dJj0 wptӦ Q/(NN6'ݥ])if`6P|4*)
+M0oWh S SFEh^=:_b uWhpU.|ETϤ=J sO<8}ny]¶Sɾt!^VqtQ* sxAhcg';.
+1N!
+?ܷ KŻ Q탣㍦Px/qM>E9@m72oH o"胻bˑNvba2p"%T(Qʉ]V
+endstream
+endobj
+7702 0 obj
+<< /Type /Page /Contents 7703 0 R /Resources 7701 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 7337 0 R >>
+endobj
+7704 0 obj
+<< /D [ 7702 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+7705 0 obj
+<< /D [ 7702 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+7706 0 obj
+<< /D [ 7702 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+7707 0 obj
+<< /D [ 7702 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+7708 0 obj
+<< /D [ 7702 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+7709 0 obj
+<< /D [ 7702 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+7710 0 obj
+<< /D [ 7702 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+7711 0 obj
+<< /D [ 7702 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+7712 0 obj
+<< /D [ 7702 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+7713 0 obj
+<< /D [ 7702 0 R /XYZ 81.077 627.362 null ] >>
+endobj
+7714 0 obj
+<< /D [ 7702 0 R /XYZ 81.077 616.403 null ] >>
+endobj
+7715 0 obj
+<< /D [ 7702 0 R /XYZ 81.077 605.444 null ] >>
+endobj
+7716 0 obj
+<< /D [ 7702 0 R /XYZ 81.077 594.486 null ] >>
+endobj
+7717 0 obj
+<< /D [ 7702 0 R /XYZ 81.077 583.527 null ] >>
+endobj
+7718 0 obj
+<< /D [ 7702 0 R /XYZ 81.077 572.568 null ] >>
+endobj
+7719 0 obj
+<< /D [ 7702 0 R /XYZ 81.077 561.609 null ] >>
+endobj
+7720 0 obj
+<< /D [ 7702 0 R /XYZ 81.077 550.65 null ] >>
+endobj
+7721 0 obj
+<< /D [ 7702 0 R /XYZ 81.077 534.71 null ] >>
+endobj
+7722 0 obj
+<< /D [ 7702 0 R /XYZ 81.077 523.751 null ] >>
+endobj
+7723 0 obj
+<< /D [ 7702 0 R /XYZ 81.077 512.792 null ] >>
+endobj
+7724 0 obj
+<< /D [ 7702 0 R /XYZ 81.077 501.833 null ] >>
+endobj
+7725 0 obj
+<< /D [ 7702 0 R /XYZ 81.077 490.874 null ] >>
+endobj
+7726 0 obj
+<< /D [ 7702 0 R /XYZ 81.077 479.915 null ] >>
+endobj
+7727 0 obj
+<< /D [ 7702 0 R /XYZ 81.077 468.956 null ] >>
+endobj
+7728 0 obj
+<< /D [ 7702 0 R /XYZ 81.077 457.997 null ] >>
+endobj
+7729 0 obj
+<< /D [ 7702 0 R /XYZ 81.077 447.038 null ] >>
+endobj
+7730 0 obj
+<< /D [ 7702 0 R /XYZ 81.077 436.08 null ] >>
+endobj
+7731 0 obj
+<< /D [ 7702 0 R /XYZ 81.077 425.121 null ] >>
+endobj
+7732 0 obj
+<< /D [ 7702 0 R /XYZ 81.077 414.162 null ] >>
+endobj
+7733 0 obj
+<< /D [ 7702 0 R /XYZ 81.077 403.203 null ] >>
+endobj
+7734 0 obj
+<< /D [ 7702 0 R /XYZ 81.077 392.244 null ] >>
+endobj
+101 0 obj
+<< /D [ 7702 0 R /XYZ 79.37 366.789 null ] >>
+endobj
+7735 0 obj
+<< /D [ 7702 0 R /XYZ 81.077 271.907 null ] >>
+endobj
+7736 0 obj
+<< /D [ 7702 0 R /XYZ 81.077 231.06 null ] >>
+endobj
+7737 0 obj
+<< /D [ 7702 0 R /XYZ 81.077 220.101 null ] >>
+endobj
+7738 0 obj
+<< /D [ 7702 0 R /XYZ 81.077 209.142 null ] >>
+endobj
+7739 0 obj
+<< /D [ 7702 0 R /XYZ 81.077 198.183 null ] >>
+endobj
+7740 0 obj
+<< /D [ 7702 0 R /XYZ 81.077 187.225 null ] >>
+endobj
+7741 0 obj
+<< /D [ 7702 0 R /XYZ 81.077 176.266 null ] >>
+endobj
+7742 0 obj
+<< /D [ 7702 0 R /XYZ 81.077 165.307 null ] >>
+endobj
+7743 0 obj
+<< /D [ 7702 0 R /XYZ 81.077 154.348 null ] >>
+endobj
+7744 0 obj
+<< /D [ 7702 0 R /XYZ 81.077 143.389 null ] >>
+endobj
+7745 0 obj
+<< /D [ 7702 0 R /XYZ 81.077 112.505 null ] >>
+endobj
+7746 0 obj
+<< /D [ 7702 0 R /XYZ 81.077 101.546 null ] >>
+endobj
+7747 0 obj
+<< /D [ 7702 0 R /XYZ 81.077 90.587 null ] >>
+endobj
+7748 0 obj
+<< /D [ 7702 0 R /XYZ 81.077 79.628 null ] >>
+endobj
+7701 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F72 187 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+7751 0 obj
+<< /Filter /FlateDecode /Length 2202 >>
+stream
+xڽZ[o~ϯ0PU]x'tɢ 4}X?,S,;RV-*L//BsxnV.ŏWxE~X]}tVjsaR %r!Fnk$g\VBZ`Lb$_0e_6inYUs£W{,ߥ]SPW;G{bŽ2#2)ڬ쾮ˤ,V+0O}W'Y]wU<!1`T#̨#-.#M,g>5X6Q+d ekᑇ6]I~(n`ᎌ AE}`H]zH,YT]oqhkt;}cn=:l=Stbr-ds>vE{ܨͶ]vtV봫3U QS|!SV>453.vf'?0-@ı'<pA:7.e9&3s`#&fG\~piydÔ:E&[B9 .+ĵsBE".;HP,ŅcD{h+- ""5rG$_XQ
+ggsϣ[sM
+>cd)<O\ ,4x<ߘ
+endstream
+endobj
+7750 0 obj
+<< /Type /Page /Contents 7751 0 R /Resources 7749 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 7337 0 R >>
+endobj
+7752 0 obj
+<< /D [ 7750 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+7753 0 obj
+<< /D [ 7750 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+7754 0 obj
+<< /D [ 7750 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+7755 0 obj
+<< /D [ 7750 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+7756 0 obj
+<< /D [ 7750 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+7757 0 obj
+<< /D [ 7750 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+7758 0 obj
+<< /D [ 7750 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+7759 0 obj
+<< /D [ 7750 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+7760 0 obj
+<< /D [ 7750 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+7761 0 obj
+<< /D [ 7750 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+7762 0 obj
+<< /D [ 7750 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+7763 0 obj
+<< /D [ 7750 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+7764 0 obj
+<< /D [ 7750 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+7765 0 obj
+<< /D [ 7750 0 R /XYZ 81.077 637.325 null ] >>
+endobj
+7766 0 obj
+<< /D [ 7750 0 R /XYZ 81.077 626.366 null ] >>
+endobj
+7767 0 obj
+<< /D [ 7750 0 R /XYZ 81.077 615.407 null ] >>
+endobj
+7768 0 obj
+<< /D [ 7750 0 R /XYZ 81.077 555.244 null ] >>
+endobj
+7769 0 obj
+<< /D [ 7750 0 R /XYZ 81.077 544.285 null ] >>
+endobj
+7770 0 obj
+<< /D [ 7750 0 R /XYZ 81.077 503.682 null ] >>
+endobj
+7771 0 obj
+<< /D [ 7750 0 R /XYZ 81.077 492.723 null ] >>
+endobj
+7772 0 obj
+<< /D [ 7750 0 R /XYZ 81.077 481.764 null ] >>
+endobj
+7773 0 obj
+<< /D [ 7750 0 R /XYZ 81.077 470.805 null ] >>
+endobj
+7774 0 obj
+<< /D [ 7750 0 R /XYZ 81.077 459.846 null ] >>
+endobj
+7775 0 obj
+<< /D [ 7750 0 R /XYZ 81.077 448.887 null ] >>
+endobj
+7776 0 obj
+<< /D [ 7750 0 R /XYZ 81.077 437.928 null ] >>
+endobj
+7777 0 obj
+<< /D [ 7750 0 R /XYZ 81.077 426.969 null ] >>
+endobj
+7778 0 obj
+<< /D [ 7750 0 R /XYZ 81.077 416.01 null ] >>
+endobj
+7779 0 obj
+<< /D [ 7750 0 R /XYZ 81.077 387.362 null ] >>
+endobj
+7780 0 obj
+<< /D [ 7750 0 R /XYZ 81.077 376.403 null ] >>
+endobj
+7781 0 obj
+<< /D [ 7750 0 R /XYZ 81.077 365.444 null ] >>
+endobj
+7782 0 obj
+<< /D [ 7750 0 R /XYZ 81.077 354.486 null ] >>
+endobj
+7783 0 obj
+<< /D [ 7750 0 R /XYZ 81.077 343.527 null ] >>
+endobj
+7784 0 obj
+<< /D [ 7750 0 R /XYZ 81.077 332.568 null ] >>
+endobj
+7785 0 obj
+<< /D [ 7750 0 R /XYZ 81.077 321.609 null ] >>
+endobj
+105 0 obj
+<< /D [ 7750 0 R /XYZ 79.37 310.224 null ] >>
+endobj
+7786 0 obj
+<< /D [ 7750 0 R /XYZ 81.077 230.335 null ] >>
+endobj
+7787 0 obj
+<< /D [ 7750 0 R /XYZ 81.077 219.376 null ] >>
+endobj
+7788 0 obj
+<< /D [ 7750 0 R /XYZ 81.077 155.349 null ] >>
+endobj
+7789 0 obj
+<< /D [ 7750 0 R /XYZ 81.077 144.39 null ] >>
+endobj
+7790 0 obj
+<< /D [ 7750 0 R /XYZ 81.077 133.431 null ] >>
+endobj
+7791 0 obj
+<< /D [ 7750 0 R /XYZ 81.077 122.473 null ] >>
+endobj
+7792 0 obj
+<< /D [ 7750 0 R /XYZ 81.077 111.514 null ] >>
+endobj
+7793 0 obj
+<< /D [ 7750 0 R /XYZ 81.077 100.555 null ] >>
+endobj
+7794 0 obj
+<< /D [ 7750 0 R /XYZ 81.077 89.596 null ] >>
+endobj
+7795 0 obj
+<< /D [ 7750 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+7749 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F70 185 0 R /F72 187 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+7798 0 obj
+<< /Filter /FlateDecode /Length 2852 >>
+stream
+xZIoW)rNFh|A(F7&)cB6C,rUUxs_ {͛w׊m820{C#!-$j$AXqF]Xﮥhddz& #"x~q)~$îps~vؽ;d}+ۼُίγ6~secK\ Ӟ++B"F]1
+j%Ӝr&Ӭ%`!N={en62r\D
+!ӹj)d,*Dcw/Y5Q9F!M |B㣛[P4dÈ}~8JGn':-T|<X!"+%.).b*\vqc肎04Ͷ^R2çu #tD@ɤM tF5#C:5: AJiAT:L=R$d,$ho6All~ 7X *!k-b%. ٻn0ltߩP8XN= `HM4/ ծ eқ}\\s$(rJ+ɺaY
+Ӵ0a.GU6@ѱ"1iPk¦-ÔѰ=H"#H=Gҁ)]SmBq9ϕ0 =L22BLS۾]o/E.,/Mq. r>PJu//a.";9j>~@Б|ٞ~1<H ׸ '$@T-£V MѷͺV4fWϻS]Vé{͗ d `GSU-Vb&F[ek{"tȯC9ڞ+u
+|~~w0mf)AIBo4i%BUjssC"h[^WV/^.a'/rr9}J^O>O#ovx>%.!!r= 4\W?\N-+<Q3OǶu'=:LxBt~NPp|0&MCt'CpF5~3dCGBxW8u,Od}"4!GV<߱f%_M/IExF5'-Rۘ> ?p<(l{ͧ5j߉7WÇW6lP+vY>:@vrFO{HC]2l7@UHHXUFBPk??'$Unn5w5v^G,|/*\-P
+E˅ Cl",ulCs=0Ϗ%5o̺$lwNb_Sri6&0d6fwmώ'UBcn풘,DKmUN(8CNxr6kpRqn՟ad/K93}:JL 龈qY1Е(C_҆db(CXy%]WJ`x֮68|
+8ʌ3>2 5(Pb[m]OA>z|
+֫-<JùТ`zzlp!YY81E!5ŔU}FYCd ~>$
+!"G;n* kI!VvFY3u@\'*x5SrYVuF GgTaʂI Z#e ]ڨ;ߜN'@10هMe}NEi>(S'R
+Q:B*H%kj8?##Fi\8їds6ʚƢ9уEEWO'F7W.O)L[!ڒ_l\?|%C[ve2kg
+ArNxQa,a1Bkʤ^o
+XC$N
+(cwO) LZWᐮtl2(#K11$r12"Cav{@oj
+endstream
+endobj
+7797 0 obj
+<< /Type /Page /Contents 7798 0 R /Resources 7796 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 7834 0 R >>
+endobj
+7799 0 obj
+<< /D [ 7797 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+7800 0 obj
+<< /D [ 7797 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+7801 0 obj
+<< /D [ 7797 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+7802 0 obj
+<< /D [ 7797 0 R /XYZ 81.077 519.766 null ] >>
+endobj
+7803 0 obj
+<< /D [ 7797 0 R /XYZ 81.077 508.807 null ] >>
+endobj
+7804 0 obj
+<< /D [ 7797 0 R /XYZ 81.077 497.848 null ] >>
+endobj
+7805 0 obj
+<< /D [ 7797 0 R /XYZ 81.077 486.889 null ] >>
+endobj
+7806 0 obj
+<< /D [ 7797 0 R /XYZ 81.077 475.93 null ] >>
+endobj
+7807 0 obj
+<< /D [ 7797 0 R /XYZ 81.077 464.971 null ] >>
+endobj
+7808 0 obj
+<< /D [ 7797 0 R /XYZ 81.077 454.012 null ] >>
+endobj
+7809 0 obj
+<< /D [ 7797 0 R /XYZ 81.077 443.053 null ] >>
+endobj
+7810 0 obj
+<< /D [ 7797 0 R /XYZ 81.077 432.094 null ] >>
+endobj
+7811 0 obj
+<< /D [ 7797 0 R /XYZ 81.077 421.136 null ] >>
+endobj
+7812 0 obj
+<< /D [ 7797 0 R /XYZ 81.077 410.177 null ] >>
+endobj
+7813 0 obj
+<< /D [ 7797 0 R /XYZ 81.077 399.218 null ] >>
+endobj
+7814 0 obj
+<< /D [ 7797 0 R /XYZ 81.077 388.259 null ] >>
+endobj
+7815 0 obj
+<< /D [ 7797 0 R /XYZ 81.077 377.3 null ] >>
+endobj
+7816 0 obj
+<< /D [ 7797 0 R /XYZ 81.077 366.341 null ] >>
+endobj
+7817 0 obj
+<< /D [ 7797 0 R /XYZ 81.077 355.382 null ] >>
+endobj
+7818 0 obj
+<< /D [ 7797 0 R /XYZ 81.077 326.49 null ] >>
+endobj
+7819 0 obj
+<< /D [ 7797 0 R /XYZ 81.077 315.532 null ] >>
+endobj
+7820 0 obj
+<< /D [ 7797 0 R /XYZ 81.077 304.573 null ] >>
+endobj
+7821 0 obj
+<< /D [ 7797 0 R /XYZ 81.077 293.614 null ] >>
+endobj
+7822 0 obj
+<< /D [ 7797 0 R /XYZ 81.077 252.767 null ] >>
+endobj
+7823 0 obj
+<< /D [ 7797 0 R /XYZ 81.077 241.808 null ] >>
+endobj
+7824 0 obj
+<< /D [ 7797 0 R /XYZ 81.077 230.849 null ] >>
+endobj
+7825 0 obj
+<< /D [ 7797 0 R /XYZ 81.077 190.002 null ] >>
+endobj
+7826 0 obj
+<< /D [ 7797 0 R /XYZ 81.077 179.043 null ] >>
+endobj
+7827 0 obj
+<< /D [ 7797 0 R /XYZ 81.077 168.085 null ] >>
+endobj
+7828 0 obj
+<< /D [ 7797 0 R /XYZ 81.077 157.126 null ] >>
+endobj
+7829 0 obj
+<< /D [ 7797 0 R /XYZ 81.077 146.167 null ] >>
+endobj
+7830 0 obj
+<< /D [ 7797 0 R /XYZ 81.077 135.208 null ] >>
+endobj
+7831 0 obj
+<< /D [ 7797 0 R /XYZ 81.077 124.249 null ] >>
+endobj
+7832 0 obj
+<< /D [ 7797 0 R /XYZ 81.077 113.29 null ] >>
+endobj
+7833 0 obj
+<< /D [ 7797 0 R /XYZ 81.077 102.331 null ] >>
+endobj
+7796 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F26 662 0 R /F82 811 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+7838 0 obj
+<< /Filter /FlateDecode /Length 2332 >>
+stream
+xڽZMo8Wa#
+ZncQ y. RF'!"'_EI5!OϢ "BW0 n_MYٍoɛLCxO퇯' Z#e ͊
+q|ic j
+
+2"tgHevcΠΛ,>MuH7QJ;TctەهheofnٮNNy]NY7F ܢ+0^bb-1!rΊn&VL\cL& oiԏ)-yx,PDf|\$d-]gV2!@7  -})K~IKuemweN I!&-$莌!{
+\}-ϊ\vSq>;} C.1l|#;vLS7n1 4ŴֈBBp 72MjGyҾMVLHd9Rm_w>&;S# X m 1"Nw8!N3M=E .Y9(p$G qq<::1%T++BJ&!P̅!U(ly(|1bLö kֵ\CnQ-J EQQq}eb
+endstream
+endobj
+7837 0 obj
+<< /Type /Page /Contents 7838 0 R /Resources 7836 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 7834 0 R /Annots 7883 0 R >>
+endobj
+7883 0 obj
+[ 7835 0 R ]
+endobj
+7835 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 228.711 144.429 239.144 156.365 ]/A << /S /GoTo /D (Hfootnote.14) >> >>
+endobj
+7839 0 obj
+<< /D [ 7837 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+7840 0 obj
+<< /D [ 7837 0 R /XYZ 81.077 742.929 null ] >>
+endobj
+7841 0 obj
+<< /D [ 7837 0 R /XYZ 81.077 731.97 null ] >>
+endobj
+7842 0 obj
+<< /D [ 7837 0 R /XYZ 81.077 721.011 null ] >>
+endobj
+7843 0 obj
+<< /D [ 7837 0 R /XYZ 81.077 710.052 null ] >>
+endobj
+7844 0 obj
+<< /D [ 7837 0 R /XYZ 81.077 699.093 null ] >>
+endobj
+7845 0 obj
+<< /D [ 7837 0 R /XYZ 81.077 688.134 null ] >>
+endobj
+7846 0 obj
+<< /D [ 7837 0 R /XYZ 81.077 677.175 null ] >>
+endobj
+7847 0 obj
+<< /D [ 7837 0 R /XYZ 81.077 666.217 null ] >>
+endobj
+7848 0 obj
+<< /D [ 7837 0 R /XYZ 81.077 655.258 null ] >>
+endobj
+7849 0 obj
+<< /D [ 7837 0 R /XYZ 81.077 644.299 null ] >>
+endobj
+7850 0 obj
+<< /D [ 7837 0 R /XYZ 81.077 633.34 null ] >>
+endobj
+7851 0 obj
+<< /D [ 7837 0 R /XYZ 81.077 592.493 null ] >>
+endobj
+7852 0 obj
+<< /D [ 7837 0 R /XYZ 81.077 581.534 null ] >>
+endobj
+7853 0 obj
+<< /D [ 7837 0 R /XYZ 81.077 570.575 null ] >>
+endobj
+7854 0 obj
+<< /D [ 7837 0 R /XYZ 81.077 559.616 null ] >>
+endobj
+7855 0 obj
+<< /D [ 7837 0 R /XYZ 81.077 548.657 null ] >>
+endobj
+7856 0 obj
+<< /D [ 7837 0 R /XYZ 81.077 537.698 null ] >>
+endobj
+7857 0 obj
+<< /D [ 7837 0 R /XYZ 81.077 526.74 null ] >>
+endobj
+7858 0 obj
+<< /D [ 7837 0 R /XYZ 81.077 515.781 null ] >>
+endobj
+7859 0 obj
+<< /D [ 7837 0 R /XYZ 81.077 504.822 null ] >>
+endobj
+7860 0 obj
+<< /D [ 7837 0 R /XYZ 81.077 493.863 null ] >>
+endobj
+7861 0 obj
+<< /D [ 7837 0 R /XYZ 81.077 482.904 null ] >>
+endobj
+7862 0 obj
+<< /D [ 7837 0 R /XYZ 81.077 471.945 null ] >>
+endobj
+7863 0 obj
+<< /D [ 7837 0 R /XYZ 81.077 460.986 null ] >>
+endobj
+7864 0 obj
+<< /D [ 7837 0 R /XYZ 81.077 450.027 null ] >>
+endobj
+7865 0 obj
+<< /D [ 7837 0 R /XYZ 81.077 439.068 null ] >>
+endobj
+7866 0 obj
+<< /D [ 7837 0 R /XYZ 81.077 428.109 null ] >>
+endobj
+7867 0 obj
+<< /D [ 7837 0 R /XYZ 81.077 417.151 null ] >>
+endobj
+7868 0 obj
+<< /D [ 7837 0 R /XYZ 81.077 406.192 null ] >>
+endobj
+7869 0 obj
+<< /D [ 7837 0 R /XYZ 81.077 395.233 null ] >>
+endobj
+7870 0 obj
+<< /D [ 7837 0 R /XYZ 81.077 384.274 null ] >>
+endobj
+7871 0 obj
+<< /D [ 7837 0 R /XYZ 81.077 373.315 null ] >>
+endobj
+7872 0 obj
+<< /D [ 7837 0 R /XYZ 81.077 318.52 null ] >>
+endobj
+7873 0 obj
+<< /D [ 7837 0 R /XYZ 81.077 307.561 null ] >>
+endobj
+7874 0 obj
+<< /D [ 7837 0 R /XYZ 81.077 296.603 null ] >>
+endobj
+7875 0 obj
+<< /D [ 7837 0 R /XYZ 81.077 285.644 null ] >>
+endobj
+7876 0 obj
+<< /D [ 7837 0 R /XYZ 81.077 274.685 null ] >>
+endobj
+7877 0 obj
+<< /D [ 7837 0 R /XYZ 81.077 263.726 null ] >>
+endobj
+7878 0 obj
+<< /D [ 7837 0 R /XYZ 81.077 220.887 null ] >>
+endobj
+7879 0 obj
+<< /D [ 7837 0 R /XYZ 81.077 209.928 null ] >>
+endobj
+7880 0 obj
+<< /D [ 7837 0 R /XYZ 81.077 198.969 null ] >>
+endobj
+7881 0 obj
+<< /D [ 7837 0 R /XYZ 81.077 188.01 null ] >>
+endobj
+7882 0 obj
+<< /D [ 7837 0 R /XYZ 94.613 85.223 null ] >>
+endobj
+7836 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F20 186 0 R /F26 662 0 R /F73 189 0 R /F69 183 0 R /F22 473 0 R /F77 480 0 R /F63 205 0 R /F81 768 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+7886 0 obj
+<< /Filter /FlateDecode /Length 1956 >>
+stream
+xZMoFWV 7SТ ڃڂ`dʦ!HiΊjWel_z72 |<Ñ(~<#&8\-Njlr:ΈW?w1QFK1!MVzSż-/.\q{}6y[d|sSdU}]4]S%Xc\ѱ#L[)dYyh"fe )')Vs l˺u~S-"3È b)K^zٔ|QMցűCi׫50Vu]X)" _~sz^7.|j2v(fww84o4 beSy;qL5'R)%. )E+F "kJd4~R![b,)c,_yu5aQI)h;i@Ch<oTt' I9/o'W&e9w2,Nxozr-GPҚ8ѿq3;;Mz:ϫdo.ps;
+͘S2;RN?,ީۦrY*Isi-0< G5%3p|yޖ=C`Ms!\.3ڟ)UwY\t s]Ջ'=܏sÌ-I<J>A?
+:0* %,_1G =8:15<E!M8z13iHT %&]ZhQ>p>OM
+Өv%Aa#R BM_f +kL5G Z|mMAtQt^nWU!zwmwYV/Y6ok:g>.;N{.)!MAs@曶wp_Ѵ>8f} ~F&vkqCCU͡4lAcd;aZfmˬڣ<*O?]|"$EBl0{<n*-'nc4z!)̕KiYC⏋{X6³yVWE)u ^H E=AWǕSX
+wBOo׽uwA
+v,}70s'$TPE[P`ng g1:Y[/?/J:(N ]zlx%Մ\H5JhWVH8Q {c7hpv]X#ɵvBs↏kȝ\gE*4!mD@]&hߕCFb~NGݗ=).0lѝ T \_ſ5"͡D00"*sF
+CaQtq;\ a:H/5aPnP#u1^/WMD>H:;:& g`O} Z5!30\4s}ysCw.Bc)Ph2LjdFTҵ9+%fm j1%hjG pOi_;''%IC ct#c#>ҿVu7ƪ^lw"ZW11I ݏѧM
+bdn%h;N Jc5*FˈM\f"XYmp_AFoGq 7!R:Uj
+endstream
+endobj
+7885 0 obj
+<< /Type /Page /Contents 7886 0 R /Resources 7884 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 7834 0 R >>
+endobj
+7887 0 obj
+<< /D [ 7885 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+7888 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+7889 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+7890 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+7891 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+7892 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+7893 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+7894 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+7895 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+7896 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+7897 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+7898 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+7899 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 644.868 null ] >>
+endobj
+7900 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 633.91 null ] >>
+endobj
+7901 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 622.951 null ] >>
+endobj
+7902 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 611.992 null ] >>
+endobj
+7903 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 601.033 null ] >>
+endobj
+7904 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 590.074 null ] >>
+endobj
+7905 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 549.584 null ] >>
+endobj
+7906 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 538.625 null ] >>
+endobj
+7907 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 527.666 null ] >>
+endobj
+7908 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 516.707 null ] >>
+endobj
+7909 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 505.748 null ] >>
+endobj
+7910 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 494.789 null ] >>
+endobj
+7911 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 483.83 null ] >>
+endobj
+7912 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 435.726 null ] >>
+endobj
+7913 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 424.767 null ] >>
+endobj
+7914 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 413.808 null ] >>
+endobj
+7915 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 402.849 null ] >>
+endobj
+7916 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 363.568 null ] >>
+endobj
+7917 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 352.61 null ] >>
+endobj
+7918 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 341.651 null ] >>
+endobj
+7919 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 330.692 null ] >>
+endobj
+7920 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 319.733 null ] >>
+endobj
+7921 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 308.774 null ] >>
+endobj
+7922 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 297.815 null ] >>
+endobj
+7923 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 286.856 null ] >>
+endobj
+7924 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 275.897 null ] >>
+endobj
+7925 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 264.938 null ] >>
+endobj
+7926 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 253.979 null ] >>
+endobj
+7927 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 243.021 null ] >>
+endobj
+7928 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 232.062 null ] >>
+endobj
+7929 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 221.103 null ] >>
+endobj
+7930 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 210.144 null ] >>
+endobj
+7931 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 199.185 null ] >>
+endobj
+7932 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 188.226 null ] >>
+endobj
+7933 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 177.267 null ] >>
+endobj
+7934 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 166.308 null ] >>
+endobj
+7935 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 155.349 null ] >>
+endobj
+7936 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 144.39 null ] >>
+endobj
+7937 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 133.431 null ] >>
+endobj
+7938 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 122.473 null ] >>
+endobj
+7939 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 111.514 null ] >>
+endobj
+7940 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 100.555 null ] >>
+endobj
+7941 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 89.596 null ] >>
+endobj
+7942 0 obj
+<< /D [ 7885 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+7884 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F82 811 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+7945 0 obj
+<< /Filter /FlateDecode /Length 2540 >>
+stream
+xZo:0.6P[d-oaT[IԵԒߌRqd1Fgo]yGfX͵\ܾc@lX"E-n-b2gǣ>^*_0` ' S(bVWş AHϫ5
+ppB.N>wi}t )J
+As]upGu!3V#xu-nzkBZ@4AޞZ1dZ36_(Ddd6H98*FKZ´xRAFlFc3| 2J:wuPL,U[xTWG1
+>8ު\Z禦(>zڪrlUHgo[KU!̤UK#BDA1
+]b\l}J3k>o~g|rgWkANr7 ^pPiB5:!BP_)GR*Fȷ8Ri~g1kBt+mxKX/Z(jfq@Ö퐗Wz|<gX7qzhO/,`qc^,gtUҐ$}N8|<,ק(A8kvR܏$9Rǩx~>p>I(d>iqWG[kB'^GGI!Np
+ёg"b{fr DK_K\i\HG)oR^&QJE
+&zvy\l#A_;A^HJlwقn.n
+endstream
+endobj
+7944 0 obj
+<< /Type /Page /Contents 7945 0 R /Resources 7943 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 7834 0 R >>
+endobj
+7946 0 obj
+<< /D [ 7944 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+7947 0 obj
+<< /D [ 7944 0 R /XYZ 81.077 754.884 null ] >>
+endobj
+7948 0 obj
+<< /D [ 7944 0 R /XYZ 81.077 743.925 null ] >>
+endobj
+7949 0 obj
+<< /D [ 7944 0 R /XYZ 81.077 732.966 null ] >>
+endobj
+7950 0 obj
+<< /D [ 7944 0 R /XYZ 81.077 722.007 null ] >>
+endobj
+7951 0 obj
+<< /D [ 7944 0 R /XYZ 81.077 711.048 null ] >>
+endobj
+7952 0 obj
+<< /D [ 7944 0 R /XYZ 81.077 700.089 null ] >>
+endobj
+7953 0 obj
+<< /D [ 7944 0 R /XYZ 81.077 689.131 null ] >>
+endobj
+7954 0 obj
+<< /D [ 7944 0 R /XYZ 81.077 588.508 null ] >>
+endobj
+7955 0 obj
+<< /D [ 7944 0 R /XYZ 81.077 577.549 null ] >>
+endobj
+7956 0 obj
+<< /D [ 7944 0 R /XYZ 81.077 566.59 null ] >>
+endobj
+7957 0 obj
+<< /D [ 7944 0 R /XYZ 81.077 555.631 null ] >>
+endobj
+7958 0 obj
+<< /D [ 7944 0 R /XYZ 81.077 544.672 null ] >>
+endobj
+7959 0 obj
+<< /D [ 7944 0 R /XYZ 81.077 533.713 null ] >>
+endobj
+7960 0 obj
+<< /D [ 7944 0 R /XYZ 81.077 504.822 null ] >>
+endobj
+7961 0 obj
+<< /D [ 7944 0 R /XYZ 81.077 493.863 null ] >>
+endobj
+7962 0 obj
+<< /D [ 7944 0 R /XYZ 81.077 482.904 null ] >>
+endobj
+7963 0 obj
+<< /D [ 7944 0 R /XYZ 81.077 471.945 null ] >>
+endobj
+7964 0 obj
+<< /D [ 7944 0 R /XYZ 81.077 460.986 null ] >>
+endobj
+7965 0 obj
+<< /D [ 7944 0 R /XYZ 81.077 450.027 null ] >>
+endobj
+7966 0 obj
+<< /D [ 7944 0 R /XYZ 81.077 439.068 null ] >>
+endobj
+7967 0 obj
+<< /D [ 7944 0 R /XYZ 81.077 428.109 null ] >>
+endobj
+7968 0 obj
+<< /D [ 7944 0 R /XYZ 81.077 417.151 null ] >>
+endobj
+7969 0 obj
+<< /D [ 7944 0 R /XYZ 81.077 406.192 null ] >>
+endobj
+7970 0 obj
+<< /D [ 7944 0 R /XYZ 81.077 395.233 null ] >>
+endobj
+7971 0 obj
+<< /D [ 7944 0 R /XYZ 81.077 384.274 null ] >>
+endobj
+7972 0 obj
+<< /D [ 7944 0 R /XYZ 81.077 373.315 null ] >>
+endobj
+7973 0 obj
+<< /D [ 7944 0 R /XYZ 81.077 362.356 null ] >>
+endobj
+7974 0 obj
+<< /D [ 7944 0 R /XYZ 81.077 309.554 null ] >>
+endobj
+7975 0 obj
+<< /D [ 7944 0 R /XYZ 81.077 298.595 null ] >>
+endobj
+7976 0 obj
+<< /D [ 7944 0 R /XYZ 81.077 287.636 null ] >>
+endobj
+7977 0 obj
+<< /D [ 7944 0 R /XYZ 81.077 276.677 null ] >>
+endobj
+7978 0 obj
+<< /D [ 7944 0 R /XYZ 81.077 265.718 null ] >>
+endobj
+7979 0 obj
+<< /D [ 7944 0 R /XYZ 81.077 234.834 null ] >>
+endobj
+7980 0 obj
+<< /D [ 7944 0 R /XYZ 81.077 223.875 null ] >>
+endobj
+7981 0 obj
+<< /D [ 7944 0 R /XYZ 81.077 212.916 null ] >>
+endobj
+7982 0 obj
+<< /D [ 7944 0 R /XYZ 81.077 201.957 null ] >>
+endobj
+7983 0 obj
+<< /D [ 7944 0 R /XYZ 81.077 190.999 null ] >>
+endobj
+7984 0 obj
+<< /D [ 7944 0 R /XYZ 81.077 136.204 null ] >>
+endobj
+7985 0 obj
+<< /D [ 7944 0 R /XYZ 81.077 125.245 null ] >>
+endobj
+7986 0 obj
+<< /D [ 7944 0 R /XYZ 81.077 114.286 null ] >>
+endobj
+7987 0 obj
+<< /D [ 7944 0 R /XYZ 81.077 103.327 null ] >>
+endobj
+7988 0 obj
+<< /D [ 7944 0 R /XYZ 81.077 92.368 null ] >>
+endobj
+7989 0 obj
+<< /D [ 7944 0 R /XYZ 81.077 81.41 null ] >>
+endobj
+7943 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F20 186 0 R /F73 189 0 R /F69 183 0 R /F82 811 0 R /F26 662 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+7992 0 obj
+<< /Filter /FlateDecode /Length 1760 >>
+stream
+xZ[o6}ϯY/) C Ae:Q#K$͂L Ŗ(Ï(pt30{d~;dDtqMpFHp GrX@zsH9>!|0DerYW_)ozΒvS_˼ M_Kӓ:a ӉttfUq,M ZWx_/G((q8_|Q:HRC`4hxIHr<]\_ RZeԉ%$
+0s)@[V7u, P8*b?*J3mdgNv IbIHBS'p^#z(lukT@**}p|J\Vp
+p+GrI^QmqmUkԹ2*<|2z]Jj̬úSndҭ䞫oa[hKlVUe4}izh|3߽N̘.
+9+%r̒<.#[O̪bX858QqT}t}DCS Tqr|t}jRe#Z*GJK1
+ɭ7@q\}`!\fRq6@?\VRq`!9PqI6@8
+endstream
+endobj
+7991 0 obj
+<< /Type /Page /Contents 7992 0 R /Resources 7990 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 7834 0 R >>
+endobj
+7993 0 obj
+<< /D [ 7991 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+7994 0 obj
+<< /D [ 7991 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+7995 0 obj
+<< /D [ 7991 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+7996 0 obj
+<< /D [ 7991 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+7997 0 obj
+<< /D [ 7991 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+7998 0 obj
+<< /D [ 7991 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+7999 0 obj
+<< /D [ 7991 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+8000 0 obj
+<< /D [ 7991 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+8001 0 obj
+<< /D [ 7991 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+8002 0 obj
+<< /D [ 7991 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+8003 0 obj
+<< /D [ 7991 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+109 0 obj
+<< /D [ 7991 0 R /XYZ 79.37 647.685 null ] >>
+endobj
+8004 0 obj
+<< /D [ 7991 0 R /XYZ 81.077 506.034 null ] >>
+endobj
+8005 0 obj
+<< /D [ 7991 0 R /XYZ 81.077 495.075 null ] >>
+endobj
+8006 0 obj
+<< /D [ 7991 0 R /XYZ 81.077 484.116 null ] >>
+endobj
+8007 0 obj
+<< /D [ 7991 0 R /XYZ 81.077 473.157 null ] >>
+endobj
+8008 0 obj
+<< /D [ 7991 0 R /XYZ 81.077 462.199 null ] >>
+endobj
+8009 0 obj
+<< /D [ 7991 0 R /XYZ 81.077 451.24 null ] >>
+endobj
+8010 0 obj
+<< /D [ 7991 0 R /XYZ 81.077 440.281 null ] >>
+endobj
+8011 0 obj
+<< /D [ 7991 0 R /XYZ 81.077 429.322 null ] >>
+endobj
+8012 0 obj
+<< /D [ 7991 0 R /XYZ 81.077 418.363 null ] >>
+endobj
+8013 0 obj
+<< /D [ 7991 0 R /XYZ 81.077 407.404 null ] >>
+endobj
+8014 0 obj
+<< /D [ 7991 0 R /XYZ 81.077 396.445 null ] >>
+endobj
+8015 0 obj
+<< /D [ 7991 0 R /XYZ 81.077 385.486 null ] >>
+endobj
+8016 0 obj
+<< /D [ 7991 0 R /XYZ 81.077 374.527 null ] >>
+endobj
+8017 0 obj
+<< /D [ 7991 0 R /XYZ 81.077 363.568 null ] >>
+endobj
+8018 0 obj
+<< /D [ 7991 0 R /XYZ 81.077 352.61 null ] >>
+endobj
+8019 0 obj
+<< /D [ 7991 0 R /XYZ 81.077 341.651 null ] >>
+endobj
+8020 0 obj
+<< /D [ 7991 0 R /XYZ 81.077 330.692 null ] >>
+endobj
+8021 0 obj
+<< /D [ 7991 0 R /XYZ 81.077 319.733 null ] >>
+endobj
+8022 0 obj
+<< /D [ 7991 0 R /XYZ 81.077 308.774 null ] >>
+endobj
+8023 0 obj
+<< /D [ 7991 0 R /XYZ 81.077 297.815 null ] >>
+endobj
+8024 0 obj
+<< /D [ 7991 0 R /XYZ 81.077 286.856 null ] >>
+endobj
+8025 0 obj
+<< /D [ 7991 0 R /XYZ 81.077 275.897 null ] >>
+endobj
+8026 0 obj
+<< /D [ 7991 0 R /XYZ 81.077 264.938 null ] >>
+endobj
+8027 0 obj
+<< /D [ 7991 0 R /XYZ 81.077 253.979 null ] >>
+endobj
+8028 0 obj
+<< /D [ 7991 0 R /XYZ 81.077 243.021 null ] >>
+endobj
+8029 0 obj
+<< /D [ 7991 0 R /XYZ 81.077 232.062 null ] >>
+endobj
+8030 0 obj
+<< /D [ 7991 0 R /XYZ 81.077 221.103 null ] >>
+endobj
+8031 0 obj
+<< /D [ 7991 0 R /XYZ 81.077 210.144 null ] >>
+endobj
+8032 0 obj
+<< /D [ 7991 0 R /XYZ 81.077 199.185 null ] >>
+endobj
+8033 0 obj
+<< /D [ 7991 0 R /XYZ 81.077 188.226 null ] >>
+endobj
+8034 0 obj
+<< /D [ 7991 0 R /XYZ 81.077 177.267 null ] >>
+endobj
+8035 0 obj
+<< /D [ 7991 0 R /XYZ 81.077 166.308 null ] >>
+endobj
+8036 0 obj
+<< /D [ 7991 0 R /XYZ 81.077 155.349 null ] >>
+endobj
+8037 0 obj
+<< /D [ 7991 0 R /XYZ 81.077 144.39 null ] >>
+endobj
+8038 0 obj
+<< /D [ 7991 0 R /XYZ 81.077 133.431 null ] >>
+endobj
+8039 0 obj
+<< /D [ 7991 0 R /XYZ 81.077 122.473 null ] >>
+endobj
+8040 0 obj
+<< /D [ 7991 0 R /XYZ 81.077 111.514 null ] >>
+endobj
+8041 0 obj
+<< /D [ 7991 0 R /XYZ 81.077 100.555 null ] >>
+endobj
+8042 0 obj
+<< /D [ 7991 0 R /XYZ 81.077 89.596 null ] >>
+endobj
+8043 0 obj
+<< /D [ 7991 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+7990 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F72 187 0 R /F19 184 0 R /F20 186 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+8046 0 obj
+<< /Filter /FlateDecode /Length 2963 >>
+stream
+xڵZK6WʇHoSq*M|ؚ6[*ıSBr<S p80aDFw+~+Ӌo^|&+I {%bX͢Un#7NV1I#+~% \1$J& 5C,YUEQmx~w8w{7%sS2!b_}v)C!/
+KkGalokESD'1eE Syih;e%R!hRVݹYʤb$V?}cEdz}(\IdɆ I}+$6oCY
+
+ͅ|=jdӜ'>I?#n8.o&/uZځU.w#Q; ^%DG'KSLHr"
+DۯPXӶ?aņ~;ڜ:g&\hˌe$a>hla{6۵ U\Ml{Շ%n?@u$HzEcs4鎭eh~?؟o7;>g͉sACqYRqrFU7k<[
+ι$81!vvJ 3,Ry!EOLZz5cf^Z9|&u=" V|(Ũ2>Cݦ S,W(`ǺD(q雤tmw M #1o.#v,*v\/ųY5DWgYP5`p0鐕&gJb=D
+\i7`|>-Gadv9ټjܱtѴ]nᒂEeSp
+ڡ>^N CcM wܽu.BjgWvДg ޠD!CN.DHh;
+H<t:4Y%[s_:QOGaې /qo-D$8>,HWFK
+t|k#E4Bq֜%w0b -9tb\axy]N0`FDg&RIb>V͌Xqk;Vq"Xղ#5JDV|}@+
+A3@1=ogyK'r^X}Dk=UX6+E9^]y㸀"7%Ej^c .| vrW4e(DB ryiل<`*;~wbq{WճJH%Kxey߷
+($e(<V jz˛ծ"Շt
+K<􌺐
+Tߝa!=*b %C5 =ik$9Xi-1Qclu7Y{vCmtkW"㛨B@a
+?޼SA^
+endstream
+endobj
+8045 0 obj
+<< /Type /Page /Contents 8046 0 R /Resources 8044 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 7834 0 R >>
+endobj
+8047 0 obj
+<< /D [ 8045 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+8048 0 obj
+<< /D [ 8045 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+8049 0 obj
+<< /D [ 8045 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+8050 0 obj
+<< /D [ 8045 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+8051 0 obj
+<< /D [ 8045 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+8052 0 obj
+<< /D [ 8045 0 R /XYZ 81.077 627.362 null ] >>
+endobj
+8053 0 obj
+<< /D [ 8045 0 R /XYZ 81.077 616.403 null ] >>
+endobj
+8054 0 obj
+<< /D [ 8045 0 R /XYZ 81.077 605.444 null ] >>
+endobj
+8055 0 obj
+<< /D [ 8045 0 R /XYZ 81.077 594.486 null ] >>
+endobj
+8056 0 obj
+<< /D [ 8045 0 R /XYZ 81.077 583.527 null ] >>
+endobj
+8057 0 obj
+<< /D [ 8045 0 R /XYZ 81.077 572.568 null ] >>
+endobj
+8058 0 obj
+<< /D [ 8045 0 R /XYZ 81.077 561.609 null ] >>
+endobj
+8059 0 obj
+<< /D [ 8045 0 R /XYZ 81.077 550.65 null ] >>
+endobj
+8060 0 obj
+<< /D [ 8045 0 R /XYZ 81.077 539.691 null ] >>
+endobj
+8061 0 obj
+<< /D [ 8045 0 R /XYZ 81.077 528.732 null ] >>
+endobj
+8062 0 obj
+<< /D [ 8045 0 R /XYZ 81.077 517.773 null ] >>
+endobj
+8063 0 obj
+<< /D [ 8045 0 R /XYZ 81.077 506.814 null ] >>
+endobj
+8064 0 obj
+<< /D [ 8045 0 R /XYZ 81.077 459.99 null ] >>
+endobj
+8065 0 obj
+<< /D [ 8045 0 R /XYZ 81.077 407.188 null ] >>
+endobj
+8066 0 obj
+<< /D [ 8045 0 R /XYZ 81.077 396.229 null ] >>
+endobj
+8067 0 obj
+<< /D [ 8045 0 R /XYZ 81.077 385.27 null ] >>
+endobj
+8068 0 obj
+<< /D [ 8045 0 R /XYZ 81.077 374.311 null ] >>
+endobj
+8069 0 obj
+<< /D [ 8045 0 R /XYZ 81.077 315.532 null ] >>
+endobj
+8070 0 obj
+<< /D [ 8045 0 R /XYZ 81.077 304.573 null ] >>
+endobj
+8071 0 obj
+<< /D [ 8045 0 R /XYZ 81.077 221.883 null ] >>
+endobj
+8072 0 obj
+<< /D [ 8045 0 R /XYZ 81.077 210.924 null ] >>
+endobj
+8073 0 obj
+<< /D [ 8045 0 R /XYZ 81.077 199.965 null ] >>
+endobj
+8074 0 obj
+<< /D [ 8045 0 R /XYZ 81.077 189.006 null ] >>
+endobj
+8075 0 obj
+<< /D [ 8045 0 R /XYZ 81.077 178.047 null ] >>
+endobj
+8076 0 obj
+<< /D [ 8045 0 R /XYZ 81.077 167.088 null ] >>
+endobj
+8077 0 obj
+<< /D [ 8045 0 R /XYZ 81.077 156.129 null ] >>
+endobj
+8078 0 obj
+<< /D [ 8045 0 R /XYZ 81.077 145.17 null ] >>
+endobj
+8079 0 obj
+<< /D [ 8045 0 R /XYZ 81.077 134.212 null ] >>
+endobj
+8080 0 obj
+<< /D [ 8045 0 R /XYZ 81.077 123.253 null ] >>
+endobj
+8044 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F70 185 0 R /F26 662 0 R /F75 317 0 R /F76 318 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+8083 0 obj
+<< /Filter /FlateDecode /Length 3224 >>
+stream
+xڽ[mo6"@&\ P~]Ple][IfsE _D#[ٶaErfH3do2wX_h _HLſg?<^PJgݪpu}uClqE죫+[U}׻Ms q3+=L*CZaJI@ìL"Ub
+!~{g"|?G?ɎDRX/q;aNN?NZn˖c lYQV,]Cz1+[7H躆f0Z
+`c!Έ6*SiSnwn'qaG gn\ʫ|?̪P?MvVYpVOrV QGPݯ*+Eɻ~u]ٴ@<%}mi޽XyW8q$XN1d5CB+$PG˄-Slp(do]4.cS\~s~- )drZP,>8 uF <MiXAiJ__{#x P`B}"w|_0SCҴ RE]Sd+3~(ĮaQ7MnmK]-꽫j
+K[ve7s[znp7G$'iwVU8kɬ+'=
+ܸRw4
+lk־Q|trypĶ!?Ff8(7eurSdz@D
+
+b@J`"_WpleO.ڳ56rEw"6fvuOI 2ҎJIGᄣZILQnFKW2-kx QvTYӟˊ}TcIJ@( pnTW06XgJf0Q0jW}M[EhM}TSBh%a86 XDIa?# 269sL6_cӖ'w(άdGce)1<oZ@ȭ!o|O Oolܸ*`OQ 0$zHnڢcNSM<2Gfx /o9߾SD8$P,I, ,O%?3t2Yٽ6?.eP T"T
+9*ӐiB=R 4%!ӄ`y `s0]Qk#WzJ!tkB֧Ӝ@Li3X hjS>3:vfzҷG])XvrZq|Q\[YogvC,-L31S:b8YZa
+|k3>vt!"xxDAxJ-99IwVwk㥅\ai6X^PjjaDzAъ
+mˢ+@75~(0 CkrgVW@1k e?
+cK g
+O@\ɆkQmO HVe{>㼱kOЦ$F%IziA,mƲL)M~TOcbtz4%16!&ÍYk#ФVw4k/(ٍGKWv3v"*7l~f%|Ƚ&G`A+6e71 ,u"TMf'7妨Z[7U: H0aG4p&\͠= !;8_CSX[DԾ-Feo#/%7YdfHh ~lyӼis/'߈kR;9Aaqų,aQU`jG> ?fy,R8@d,U/:~':fq|nا̥9)j^}O>;)A6k8h[oQA'n Tb a5D䑽Ab,.ftF\39ģ\k^M W).N5 Y5iN
+|Y jy1<llX;$!I2>(b}E-+Q:[UL.y0*prd7L*zÌLۈ<&71A !yٴ'K 6K.ىQ[d#]'Y?]a귻8`HӐ6߲v}69.ƭ[ ⰇbLFP-̩4/%7.zakOn/3`}D wPCq|*uf1&OڌG;5_tn[1\`\xr _J}2Ϳܿ?u
+endstream
+endobj
+8082 0 obj
+<< /Type /Page /Contents 8083 0 R /Resources 8081 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 7834 0 R >>
+endobj
+8084 0 obj
+<< /D [ 8082 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+8085 0 obj
+<< /D [ 8082 0 R /XYZ 81.077 754.884 null ] >>
+endobj
+8086 0 obj
+<< /D [ 8082 0 R /XYZ 81.077 743.925 null ] >>
+endobj
+8087 0 obj
+<< /D [ 8082 0 R /XYZ 81.077 732.966 null ] >>
+endobj
+8088 0 obj
+<< /D [ 8082 0 R /XYZ 81.077 722.007 null ] >>
+endobj
+8089 0 obj
+<< /D [ 8082 0 R /XYZ 81.077 711.048 null ] >>
+endobj
+8090 0 obj
+<< /D [ 8082 0 R /XYZ 81.077 700.089 null ] >>
+endobj
+8091 0 obj
+<< /D [ 8082 0 R /XYZ 81.077 689.131 null ] >>
+endobj
+8092 0 obj
+<< /D [ 8082 0 R /XYZ 81.077 640.314 null ] >>
+endobj
+8093 0 obj
+<< /D [ 8082 0 R /XYZ 81.077 624.373 null ] >>
+endobj
+8094 0 obj
+<< /D [ 8082 0 R /XYZ 81.077 613.415 null ] >>
+endobj
+8095 0 obj
+<< /D [ 8082 0 R /XYZ 81.077 602.456 null ] >>
+endobj
+8096 0 obj
+<< /D [ 8082 0 R /XYZ 81.077 591.497 null ] >>
+endobj
+8097 0 obj
+<< /D [ 8082 0 R /XYZ 81.077 580.538 null ] >>
+endobj
+8098 0 obj
+<< /D [ 8082 0 R /XYZ 81.077 569.579 null ] >>
+endobj
+8099 0 obj
+<< /D [ 8082 0 R /XYZ 81.077 558.62 null ] >>
+endobj
+8100 0 obj
+<< /D [ 8082 0 R /XYZ 81.077 461.982 null ] >>
+endobj
+8101 0 obj
+<< /D [ 8082 0 R /XYZ 81.077 451.023 null ] >>
+endobj
+8102 0 obj
+<< /D [ 8082 0 R /XYZ 81.077 440.065 null ] >>
+endobj
+8103 0 obj
+<< /D [ 8082 0 R /XYZ 81.077 429.106 null ] >>
+endobj
+8104 0 obj
+<< /D [ 8082 0 R /XYZ 81.077 418.147 null ] >>
+endobj
+8105 0 obj
+<< /D [ 8082 0 R /XYZ 81.077 407.188 null ] >>
+endobj
+8106 0 obj
+<< /D [ 8082 0 R /XYZ 81.077 396.229 null ] >>
+endobj
+8107 0 obj
+<< /D [ 8082 0 R /XYZ 81.077 319.517 null ] >>
+endobj
+8108 0 obj
+<< /D [ 8082 0 R /XYZ 81.077 308.558 null ] >>
+endobj
+8109 0 obj
+<< /D [ 8082 0 R /XYZ 81.077 297.599 null ] >>
+endobj
+8110 0 obj
+<< /D [ 8082 0 R /XYZ 81.077 286.64 null ] >>
+endobj
+8111 0 obj
+<< /D [ 8082 0 R /XYZ 81.077 275.681 null ] >>
+endobj
+8112 0 obj
+<< /D [ 8082 0 R /XYZ 81.077 264.722 null ] >>
+endobj
+8113 0 obj
+<< /D [ 8082 0 R /XYZ 81.077 253.763 null ] >>
+endobj
+8114 0 obj
+<< /D [ 8082 0 R /XYZ 81.077 242.804 null ] >>
+endobj
+8115 0 obj
+<< /D [ 8082 0 R /XYZ 81.077 231.845 null ] >>
+endobj
+8116 0 obj
+<< /D [ 8082 0 R /XYZ 81.077 220.887 null ] >>
+endobj
+8117 0 obj
+<< /D [ 8082 0 R /XYZ 81.077 84.398 null ] >>
+endobj
+8081 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F73 189 0 R /F69 183 0 R /F20 186 0 R /F75 317 0 R /F76 318 0 R /F78 556 0 R /F26 662 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+8120 0 obj
+<< /Filter /FlateDecode /Length 2636 >>
+stream
+xZm۸_⮭ DJ
+)8,iYJrvΐ,j^+w@$Dp:7{Go>\yQ$I]o0XDgl+iUlv<,֋_Jf1I1FBGG:8#JegsJHBOLȼl׻b~ܭ߿_Uy}S=ad"!Le2 eͺ1Zf. ߕGЛ<ZX7XvzvdH=v&t;]xvB"
+Q&munjΪY붘 *•JzTAu(&"Cj#CZ_^V3X,IL^Liԏ CC=4fh޽?MFM9 ~ RߊQq"Eg5 z|Iw$*;{o(bD{'zGCK9IXzO8R?S]ݯka3SxQ>4:zdC_|DIA8\r@=l?M䳣ZgIG@y.+LZKs&É#yOGLE@5ê /]>O$vVƻ8ȒY(C:!8 :UZp=X(㋁(ܨ &Y[,y<5TuM*S$g
+<{;\BQik@5B
+'EA-4ׂO0W&<<D$#Ntk ;[B(hnnCqH*B>}?Xg}!nZCÅ+GQ18'J "ɶYe=/+Ҧ9sT4nrs)?D#8_Ht2&d`c٨'5=j̷kk?O)VsxR]P:7X YWuп<ꬫt3o Pu,Xi u_U/]@?n 8p5E"9B.{A389k/
+SHIm =Wy6zBӺU.o6H! P]^ys ?菥
+ep9<oM?g/( &`\$xHjdylwRWK8+TӹfD|m)?fYuU jA"֥A%Z/OQЂþA-.ě|[^V: ʬ)Qjd/"tgt_qr>tSSwMr_D?2q'Pw_SWr3/"SqxI!%M'l}|’(w.2*6z\eE8λ- pos6y;¼Ξ;U$=T &yYItL+W't֖}_[D9X?!X1P0ɼ/Hqi2Rá QG$Z{4y5~w5!{PlpbЎ3Cǭouu9-u.I^9"(aqߊnG0
+RFn]`ʉFDBqf[t>7P]%HL]1@|_9%|%H_ao'
+F-9oO/1r^Ne"Lwuw
+K!}yai /j݃`mhKZm0Nozz愫d A<s6ЧSye-,dO"(
+%=#uɤb¦#(zń=G8͔%K/xɯ$.S37 8
+endstream
+endobj
+8119 0 obj
+<< /Type /Page /Contents 8120 0 R /Resources 8118 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 7834 0 R >>
+endobj
+8121 0 obj
+<< /D [ 8119 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+8122 0 obj
+<< /D [ 8119 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+8123 0 obj
+<< /D [ 8119 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+8124 0 obj
+<< /D [ 8119 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+8125 0 obj
+<< /D [ 8119 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+8126 0 obj
+<< /D [ 8119 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+8127 0 obj
+<< /D [ 8119 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+8128 0 obj
+<< /D [ 8119 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+8129 0 obj
+<< /D [ 8119 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+8130 0 obj
+<< /D [ 8119 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+8131 0 obj
+<< /D [ 8119 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+8132 0 obj
+<< /D [ 8119 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+8133 0 obj
+<< /D [ 8119 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+8134 0 obj
+<< /D [ 8119 0 R /XYZ 81.077 637.325 null ] >>
+endobj
+8135 0 obj
+<< /D [ 8119 0 R /XYZ 81.077 626.366 null ] >>
+endobj
+8136 0 obj
+<< /D [ 8119 0 R /XYZ 81.077 615.407 null ] >>
+endobj
+8137 0 obj
+<< /D [ 8119 0 R /XYZ 81.077 604.448 null ] >>
+endobj
+8138 0 obj
+<< /D [ 8119 0 R /XYZ 81.077 593.489 null ] >>
+endobj
+8139 0 obj
+<< /D [ 8119 0 R /XYZ 81.077 528.732 null ] >>
+endobj
+8140 0 obj
+<< /D [ 8119 0 R /XYZ 81.077 517.773 null ] >>
+endobj
+8141 0 obj
+<< /D [ 8119 0 R /XYZ 81.077 506.814 null ] >>
+endobj
+8142 0 obj
+<< /D [ 8119 0 R /XYZ 81.077 442.057 null ] >>
+endobj
+8143 0 obj
+<< /D [ 8119 0 R /XYZ 81.077 431.098 null ] >>
+endobj
+8144 0 obj
+<< /D [ 8119 0 R /XYZ 81.077 420.139 null ] >>
+endobj
+8145 0 obj
+<< /D [ 8119 0 R /XYZ 81.077 367.337 null ] >>
+endobj
+8146 0 obj
+<< /D [ 8119 0 R /XYZ 81.077 356.378 null ] >>
+endobj
+8147 0 obj
+<< /D [ 8119 0 R /XYZ 81.077 345.42 null ] >>
+endobj
+8148 0 obj
+<< /D [ 8119 0 R /XYZ 81.077 334.461 null ] >>
+endobj
+8118 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F76 318 0 R /F70 185 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+8151 0 obj
+<< /Filter /FlateDecode /Length 2376 >>
+stream
+xڽZo8_C4,?Cpvva(*[>Yn P(RIe3H$pf~Cz`dh820:{C`H5S ,f;}(zQFFJc0Q
+Q:B"/C.]]__\
+*֟zyxaq}ɋt>`y
+hK
+o
+@9/Ur=l~G~uRENR# DcR;.zdl_@JW:ϯb N#8̗K]hf3nGRv?9n*dfRPI':${.ۢ-O
+8ϐFJWKED,JC;p@T2'XXlgV B
+נ*A S,8%Xj
+uo8NnnW
+Kw} c皌1f08NǪh“BeBA#I2b.֍[sqMrec7b]N %@Slvf\"Cff8+3'hm[lo>. 1GI&H5Ag_qѬS|?IW;0S>ĞnÍ˻H6q,>:A? ]*.ZuorISN?
+qISj`t9}.e]+înC}Œu)DjFɸ3|퉾ѕ\,`d`7y
+#*;O7p~p<4 Hձ g *b*h
+1M^D)4%(2-{ȑ6;72IiX׌o+;^/'hd|]ϪW ##^hJ [k5|l&]UfϤo[>EXTWHBG^. 3d ׻rݲ+KF'F#Ol=Q5Mq
+3[ɮ5yWwr^;$SY9**S %g"5)3xɊm,~Uf5?|j8 K_?DPN ]@mޤEAYϿȐP:EI&AtzfQe,`QBvd+.2"9gyANv֦LTw{:[5T",|;,AI!5l[zb.WUy:W㮦2JSpe^
+Q Wyc[-D8$.#wR+֢tE 7YĔϩcT}n wknumOmNܠSTy3T✥l-C}yVtG@&$^0J"A篟jY{>AMޱ^W<4_K$H`{!ў?$v6ͪ]狈4h$.<rْ5GZyI1$=Ex)a^`"cdz'2e޼?j
+endstream
+endobj
+8150 0 obj
+<< /Type /Page /Contents 8151 0 R /Resources 8149 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 7834 0 R >>
+endobj
+8152 0 obj
+<< /D [ 8150 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+8153 0 obj
+<< /D [ 8150 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+8154 0 obj
+<< /D [ 8150 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+8155 0 obj
+<< /D [ 8150 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+8156 0 obj
+<< /D [ 8150 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+8157 0 obj
+<< /D [ 8150 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+8158 0 obj
+<< /D [ 8150 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+8159 0 obj
+<< /D [ 8150 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+8160 0 obj
+<< /D [ 8150 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+8161 0 obj
+<< /D [ 8150 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+8162 0 obj
+<< /D [ 8150 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+8163 0 obj
+<< /D [ 8150 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+8164 0 obj
+<< /D [ 8150 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+8165 0 obj
+<< /D [ 8150 0 R /XYZ 81.077 617.4 null ] >>
+endobj
+8166 0 obj
+<< /D [ 8150 0 R /XYZ 81.077 606.441 null ] >>
+endobj
+8167 0 obj
+<< /D [ 8150 0 R /XYZ 81.077 577.549 null ] >>
+endobj
+8168 0 obj
+<< /D [ 8150 0 R /XYZ 81.077 536.702 null ] >>
+endobj
+8169 0 obj
+<< /D [ 8150 0 R /XYZ 81.077 454.012 null ] >>
+endobj
+8170 0 obj
+<< /D [ 8150 0 R /XYZ 81.077 443.053 null ] >>
+endobj
+8171 0 obj
+<< /D [ 8150 0 R /XYZ 81.077 432.094 null ] >>
+endobj
+8172 0 obj
+<< /D [ 8150 0 R /XYZ 81.077 421.136 null ] >>
+endobj
+8173 0 obj
+<< /D [ 8150 0 R /XYZ 81.077 410.177 null ] >>
+endobj
+8174 0 obj
+<< /D [ 8150 0 R /XYZ 81.077 369.33 null ] >>
+endobj
+8175 0 obj
+<< /D [ 8150 0 R /XYZ 81.077 358.371 null ] >>
+endobj
+8176 0 obj
+<< /D [ 8150 0 R /XYZ 81.077 347.412 null ] >>
+endobj
+8177 0 obj
+<< /D [ 8150 0 R /XYZ 81.077 318.52 null ] >>
+endobj
+8178 0 obj
+<< /D [ 8150 0 R /XYZ 81.077 307.561 null ] >>
+endobj
+8179 0 obj
+<< /D [ 8150 0 R /XYZ 81.077 296.603 null ] >>
+endobj
+8180 0 obj
+<< /D [ 8150 0 R /XYZ 81.077 285.644 null ] >>
+endobj
+8181 0 obj
+<< /D [ 8150 0 R /XYZ 81.077 274.685 null ] >>
+endobj
+8182 0 obj
+<< /D [ 8150 0 R /XYZ 81.077 263.726 null ] >>
+endobj
+8183 0 obj
+<< /D [ 8150 0 R /XYZ 81.077 252.767 null ] >>
+endobj
+8184 0 obj
+<< /D [ 8150 0 R /XYZ 81.077 241.808 null ] >>
+endobj
+8185 0 obj
+<< /D [ 8150 0 R /XYZ 81.077 230.849 null ] >>
+endobj
+8186 0 obj
+<< /D [ 8150 0 R /XYZ 81.077 219.89 null ] >>
+endobj
+8187 0 obj
+<< /D [ 8150 0 R /XYZ 81.077 208.931 null ] >>
+endobj
+8188 0 obj
+<< /D [ 8150 0 R /XYZ 81.077 197.972 null ] >>
+endobj
+8189 0 obj
+<< /D [ 8150 0 R /XYZ 81.077 169.081 null ] >>
+endobj
+8190 0 obj
+<< /D [ 8150 0 R /XYZ 81.077 158.122 null ] >>
+endobj
+8191 0 obj
+<< /D [ 8150 0 R /XYZ 81.077 147.163 null ] >>
+endobj
+8192 0 obj
+<< /D [ 8150 0 R /XYZ 81.077 136.204 null ] >>
+endobj
+8193 0 obj
+<< /D [ 8150 0 R /XYZ 81.077 125.245 null ] >>
+endobj
+8194 0 obj
+<< /D [ 8150 0 R /XYZ 81.077 114.286 null ] >>
+endobj
+8195 0 obj
+<< /D [ 8150 0 R /XYZ 81.077 103.327 null ] >>
+endobj
+8196 0 obj
+<< /D [ 8150 0 R /XYZ 81.077 92.368 null ] >>
+endobj
+8197 0 obj
+<< /D [ 8150 0 R /XYZ 81.077 81.41 null ] >>
+endobj
+8149 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F76 318 0 R /F46 176 0 R /F23 660 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+8200 0 obj
+<< /Filter /FlateDecode /Length 2062 >>
+stream
+xڽZKoW(
+(@wvUvm!(ƶ [i{(Ri{\qfp71E9:/~G
+=+<"aG>|RlƑфMxFfZ"ILI$BQa-43L`" Sglt-4&5KNO @1D@
+D E*FʖFdM1SMyiu ?O6[#4byh󡾭uPb[xVyMR8D+dׯrvw7~~^>
+xI9M_En_ۗz?W޿v|Xntf+1ގ~>RzuF鳈Y1%8 O5F˦ ̓<" F©p^}l_̋\ՄAHj ;U5R8UENo (Oz&tMD=2
+ XiªK^ڍ@`dE7l2aM.^@0U?UupmKT]o- L#mȆV\(Oe!>f6mWu&BHK"cr!}rj<zt®p+Dmaz]rhTma'Wɑ?XB;cUYND #bMnT]ˋ=:A8ͶEQ#d_EȘ'DE1R`ݳYݏIxxlPr80aUܥʨKC*}*]Mmoy]оvtSW=+aMW,\O$mW9nn[Ȑ/G
+͔fYmaեwqa}MZe_[ܝKdiDqlf$Y#A.^ZdU/{t$pV")hDY{z`=_9z:YD"z4=+9y\E =O Z,=\;sUK NIG-N3ix'vr%/:a; 6+j[7onv6v*¿uv<,Q59j޷g!
+S1Q'"?B^~+ppg룡DGq%Ii4Y4<-*SE&NI;xػQ߷s"o*z)b?,:'%q38bJooHQ_ A!t$׻}QovYYx6yAӗͲAMx{}~P(8<BJc8#BR$v꾆IR!͙ߕ$E[38GLpPXoc@:l3\AUH)DCUkYlDOLD=UzFBkl& M{ re&B}5:18_4Sh|6_.x0* zRy\* 2M$>1:?1 fm@(yЃg>.5dE2Y1q
+c brf?j @К
+endstream
+endobj
+8199 0 obj
+<< /Type /Page /Contents 8200 0 R /Resources 8198 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 7834 0 R >>
+endobj
+8201 0 obj
+<< /D [ 8199 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+8202 0 obj
+<< /D [ 8199 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+8203 0 obj
+<< /D [ 8199 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+8204 0 obj
+<< /D [ 8199 0 R /XYZ 81.077 717.026 null ] >>
+endobj
+8205 0 obj
+<< /D [ 8199 0 R /XYZ 81.077 706.067 null ] >>
+endobj
+8206 0 obj
+<< /D [ 8199 0 R /XYZ 81.077 695.108 null ] >>
+endobj
+8207 0 obj
+<< /D [ 8199 0 R /XYZ 81.077 684.149 null ] >>
+endobj
+8208 0 obj
+<< /D [ 8199 0 R /XYZ 81.077 673.19 null ] >>
+endobj
+8209 0 obj
+<< /D [ 8199 0 R /XYZ 81.077 662.231 null ] >>
+endobj
+8210 0 obj
+<< /D [ 8199 0 R /XYZ 81.077 651.273 null ] >>
+endobj
+8211 0 obj
+<< /D [ 8199 0 R /XYZ 81.077 640.314 null ] >>
+endobj
+8212 0 obj
+<< /D [ 8199 0 R /XYZ 81.077 629.355 null ] >>
+endobj
+8213 0 obj
+<< /D [ 8199 0 R /XYZ 81.077 618.396 null ] >>
+endobj
+8214 0 obj
+<< /D [ 8199 0 R /XYZ 81.077 607.437 null ] >>
+endobj
+8215 0 obj
+<< /D [ 8199 0 R /XYZ 81.077 596.478 null ] >>
+endobj
+8216 0 obj
+<< /D [ 8199 0 R /XYZ 81.077 585.519 null ] >>
+endobj
+8217 0 obj
+<< /D [ 8199 0 R /XYZ 81.077 520.762 null ] >>
+endobj
+8218 0 obj
+<< /D [ 8199 0 R /XYZ 81.077 479.915 null ] >>
+endobj
+8219 0 obj
+<< /D [ 8199 0 R /XYZ 81.077 468.956 null ] >>
+endobj
+8220 0 obj
+<< /D [ 8199 0 R /XYZ 81.077 457.997 null ] >>
+endobj
+8221 0 obj
+<< /D [ 8199 0 R /XYZ 81.077 447.038 null ] >>
+endobj
+8222 0 obj
+<< /D [ 8199 0 R /XYZ 81.077 436.08 null ] >>
+endobj
+8223 0 obj
+<< /D [ 8199 0 R /XYZ 81.077 425.121 null ] >>
+endobj
+8224 0 obj
+<< /D [ 8199 0 R /XYZ 81.077 414.162 null ] >>
+endobj
+8225 0 obj
+<< /D [ 8199 0 R /XYZ 81.077 403.203 null ] >>
+endobj
+8226 0 obj
+<< /D [ 8199 0 R /XYZ 81.077 392.244 null ] >>
+endobj
+8227 0 obj
+<< /D [ 8199 0 R /XYZ 81.077 381.285 null ] >>
+endobj
+8228 0 obj
+<< /D [ 8199 0 R /XYZ 81.077 370.326 null ] >>
+endobj
+8229 0 obj
+<< /D [ 8199 0 R /XYZ 81.077 359.367 null ] >>
+endobj
+8230 0 obj
+<< /D [ 8199 0 R /XYZ 81.077 306.565 null ] >>
+endobj
+8231 0 obj
+<< /D [ 8199 0 R /XYZ 81.077 295.606 null ] >>
+endobj
+8232 0 obj
+<< /D [ 8199 0 R /XYZ 81.077 254.759 null ] >>
+endobj
+8233 0 obj
+<< /D [ 8199 0 R /XYZ 81.077 243.801 null ] >>
+endobj
+8234 0 obj
+<< /D [ 8199 0 R /XYZ 81.077 232.842 null ] >>
+endobj
+8235 0 obj
+<< /D [ 8199 0 R /XYZ 81.077 221.883 null ] >>
+endobj
+8236 0 obj
+<< /D [ 8199 0 R /XYZ 81.077 210.924 null ] >>
+endobj
+8237 0 obj
+<< /D [ 8199 0 R /XYZ 81.077 199.965 null ] >>
+endobj
+8238 0 obj
+<< /D [ 8199 0 R /XYZ 81.077 189.006 null ] >>
+endobj
+8239 0 obj
+<< /D [ 8199 0 R /XYZ 81.077 178.047 null ] >>
+endobj
+8240 0 obj
+<< /D [ 8199 0 R /XYZ 81.077 167.088 null ] >>
+endobj
+8241 0 obj
+<< /D [ 8199 0 R /XYZ 81.077 156.129 null ] >>
+endobj
+8242 0 obj
+<< /D [ 8199 0 R /XYZ 81.077 145.17 null ] >>
+endobj
+8243 0 obj
+<< /D [ 8199 0 R /XYZ 81.077 134.212 null ] >>
+endobj
+8244 0 obj
+<< /D [ 8199 0 R /XYZ 81.077 123.253 null ] >>
+endobj
+8245 0 obj
+<< /D [ 8199 0 R /XYZ 81.077 112.294 null ] >>
+endobj
+8246 0 obj
+<< /D [ 8199 0 R /XYZ 81.077 101.335 null ] >>
+endobj
+8247 0 obj
+<< /D [ 8199 0 R /XYZ 81.077 90.376 null ] >>
+endobj
+8248 0 obj
+<< /D [ 8199 0 R /XYZ 81.077 79.417 null ] >>
+endobj
+8198 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+8251 0 obj
+<< /Filter /FlateDecode /Length 1941 >>
+stream
+xZo6_a W& (z]PzGIؒOR>2%^}ؗ 3䳇Y>"=t#74 b lvsAaQ>3z%?湚+egX ?/%CCf-yr⹫ã @.qeNhqiՌH%THڜFZr,MxjDmO1M5aLh4,'pLW<l]=<CV hS*2JO)#5FDږH)A;I~-~yE)1kK869j*+7zamjnؙvZc2;~j əJ1٦3~;Gcq~I^W]` '~7m2mMˬ\M@ ,5
+p)%/8'F"\5)=NEBt)iSQ)ny#{%Km`RNe73?e@*<, wT*YXvaقɪmUޅQYȺiarU=6{uYLp$)ۦn?.rn(R9Ahq:wlpֿ7wWov@zR!kn`ۇ%<>̍[te=_y?sXQFV@ws[lڶ^wM}\:o|)o8_{pbI7qJx\-A+sś2vt릜Nx lϛoxr1-?TFZ))zu/p%\CLyL19EΪ&m|ذuw~,]ڽlbcG~t6KmPbTBI,A;6ͺX/o˾*h!j3*L^4İSy(St*Y'! }I?=1.C9\
+bPQ:0cmW}5d\g SzFyʸ^7͸BP[qoz-]Χvឧ eŔk$wM5sgeߠr3IfB>WmЗ!EA2\8ۨ֫
+?%f$-7}-+W 9tnjtF
+&1-jWwɄcV4!Saar 1e }?R% cUU zW? F3#d*2cQ1'A <+9;EǵpF53)Q"du%ruvq] ;kK EJ\[n
+"MW
+endstream
+endobj
+8250 0 obj
+<< /Type /Page /Contents 8251 0 R /Resources 8249 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 8304 0 R >>
+endobj
+8252 0 obj
+<< /D [ 8250 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+8253 0 obj
+<< /D [ 8250 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+8254 0 obj
+<< /D [ 8250 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+8255 0 obj
+<< /D [ 8250 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+8256 0 obj
+<< /D [ 8250 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+8257 0 obj
+<< /D [ 8250 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+8258 0 obj
+<< /D [ 8250 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+8259 0 obj
+<< /D [ 8250 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+8260 0 obj
+<< /D [ 8250 0 R /XYZ 81.077 638.321 null ] >>
+endobj
+8261 0 obj
+<< /D [ 8250 0 R /XYZ 81.077 627.362 null ] >>
+endobj
+8262 0 obj
+<< /D [ 8250 0 R /XYZ 81.077 616.403 null ] >>
+endobj
+8263 0 obj
+<< /D [ 8250 0 R /XYZ 81.077 587.512 null ] >>
+endobj
+8264 0 obj
+<< /D [ 8250 0 R /XYZ 81.077 576.553 null ] >>
+endobj
+8265 0 obj
+<< /D [ 8250 0 R /XYZ 81.077 565.594 null ] >>
+endobj
+8266 0 obj
+<< /D [ 8250 0 R /XYZ 81.077 554.635 null ] >>
+endobj
+8267 0 obj
+<< /D [ 8250 0 R /XYZ 81.077 543.676 null ] >>
+endobj
+8268 0 obj
+<< /D [ 8250 0 R /XYZ 81.077 532.717 null ] >>
+endobj
+8269 0 obj
+<< /D [ 8250 0 R /XYZ 81.077 521.758 null ] >>
+endobj
+8270 0 obj
+<< /D [ 8250 0 R /XYZ 81.077 510.799 null ] >>
+endobj
+8271 0 obj
+<< /D [ 8250 0 R /XYZ 81.077 499.84 null ] >>
+endobj
+8272 0 obj
+<< /D [ 8250 0 R /XYZ 81.077 488.882 null ] >>
+endobj
+8273 0 obj
+<< /D [ 8250 0 R /XYZ 81.077 477.923 null ] >>
+endobj
+8274 0 obj
+<< /D [ 8250 0 R /XYZ 81.077 466.964 null ] >>
+endobj
+8275 0 obj
+<< /D [ 8250 0 R /XYZ 81.077 456.005 null ] >>
+endobj
+8276 0 obj
+<< /D [ 8250 0 R /XYZ 81.077 445.046 null ] >>
+endobj
+8277 0 obj
+<< /D [ 8250 0 R /XYZ 81.077 414.162 null ] >>
+endobj
+8278 0 obj
+<< /D [ 8250 0 R /XYZ 81.077 403.203 null ] >>
+endobj
+8279 0 obj
+<< /D [ 8250 0 R /XYZ 81.077 392.244 null ] >>
+endobj
+8280 0 obj
+<< /D [ 8250 0 R /XYZ 81.077 381.285 null ] >>
+endobj
+8281 0 obj
+<< /D [ 8250 0 R /XYZ 81.077 370.326 null ] >>
+endobj
+8282 0 obj
+<< /D [ 8250 0 R /XYZ 81.077 359.367 null ] >>
+endobj
+8283 0 obj
+<< /D [ 8250 0 R /XYZ 81.077 348.408 null ] >>
+endobj
+8284 0 obj
+<< /D [ 8250 0 R /XYZ 81.077 337.449 null ] >>
+endobj
+8285 0 obj
+<< /D [ 8250 0 R /XYZ 81.077 326.49 null ] >>
+endobj
+8286 0 obj
+<< /D [ 8250 0 R /XYZ 81.077 315.532 null ] >>
+endobj
+8287 0 obj
+<< /D [ 8250 0 R /XYZ 81.077 304.573 null ] >>
+endobj
+8288 0 obj
+<< /D [ 8250 0 R /XYZ 81.077 293.614 null ] >>
+endobj
+8289 0 obj
+<< /D [ 8250 0 R /XYZ 81.077 282.655 null ] >>
+endobj
+8290 0 obj
+<< /D [ 8250 0 R /XYZ 81.077 271.696 null ] >>
+endobj
+8291 0 obj
+<< /D [ 8250 0 R /XYZ 81.077 260.737 null ] >>
+endobj
+8292 0 obj
+<< /D [ 8250 0 R /XYZ 81.077 249.778 null ] >>
+endobj
+8293 0 obj
+<< /D [ 8250 0 R /XYZ 81.077 194.984 null ] >>
+endobj
+8294 0 obj
+<< /D [ 8250 0 R /XYZ 81.077 184.025 null ] >>
+endobj
+8295 0 obj
+<< /D [ 8250 0 R /XYZ 81.077 173.066 null ] >>
+endobj
+8296 0 obj
+<< /D [ 8250 0 R /XYZ 81.077 162.107 null ] >>
+endobj
+8297 0 obj
+<< /D [ 8250 0 R /XYZ 81.077 151.148 null ] >>
+endobj
+8298 0 obj
+<< /D [ 8250 0 R /XYZ 81.077 140.189 null ] >>
+endobj
+8299 0 obj
+<< /D [ 8250 0 R /XYZ 81.077 129.23 null ] >>
+endobj
+8300 0 obj
+<< /D [ 8250 0 R /XYZ 81.077 118.271 null ] >>
+endobj
+8301 0 obj
+<< /D [ 8250 0 R /XYZ 81.077 107.312 null ] >>
+endobj
+8302 0 obj
+<< /D [ 8250 0 R /XYZ 81.077 96.354 null ] >>
+endobj
+8303 0 obj
+<< /D [ 8250 0 R /XYZ 81.077 85.395 null ] >>
+endobj
+8249 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F76 318 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+8307 0 obj
+<< /Filter /FlateDecode /Length 2471 >>
+stream
+xZK8WE L360@0f0{ȩo3CmݞؖG;oI=8,>(X/|뫼#_^y؂)+w(Lt%T-$tqwX)&͟wzN&FJ`*4aF?(/3b[|м!c[Qlzvj';w޿Gn ^`U>'oB9k.tڅ&T̯@ĂtT=mz"'խگvw3ljLRLi?ҖF6!^Eh#r}LfEs¸YI:MRMR*>߭H~ >X$QBաlWm-\>p{c"4r\pF{')bBN?,J NJAM?%Da<1sE$]iG>F'wHR_2CQT$ӥ8QA8SwJOL)aDhO;j c29&
+[vi]; r.Єͮݡ&1Zx{;YapA5_ +>`wC'w4m}^h)e]H'
+ȬyPv^=/ĦM]>
+ |H~DX> 4e%%ؼY ;cdk ^C
+K~p}hC>ǟn{=f^;9/=!{*wu3/($-4ƽPd )19>߂;Bwﯧs7YAPL<qD!!p^z61T䘤 4d1V.|V8`&Zﵘ@98bl`e\{]|
+k!I.QazER[(B;îiuoc
+13`Xt0|@<ځw )xʒ Զ9z#U]?WbĒh.P2^QCF˴sCv52)U15F&JJZ:`
+Ch}eA4=B 6[W}i벮@1p&3eMl0<$y܄,Q|W>?$n
+eN, \` rݸ^@NPy!ܰwz,aǃm^ZM}D/
+͕uvsiش/s}Bz"azlޖGz:UM>ؿ3ysP1ףFmn76 ӏHWS<Ri
+2`pޗ'FQ{dA 1i)xvu07%yL0"!~1<'L}i?O_
+) ωQE'1ݫ
+endstream
+endobj
+8306 0 obj
+<< /Type /Page /Contents 8307 0 R /Resources 8305 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 8304 0 R >>
+endobj
+8308 0 obj
+<< /D [ 8306 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+8309 0 obj
+<< /D [ 8306 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+8310 0 obj
+<< /D [ 8306 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+8311 0 obj
+<< /D [ 8306 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+8312 0 obj
+<< /D [ 8306 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+8313 0 obj
+<< /D [ 8306 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+8314 0 obj
+<< /D [ 8306 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+8315 0 obj
+<< /D [ 8306 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+8316 0 obj
+<< /D [ 8306 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+8317 0 obj
+<< /D [ 8306 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+8318 0 obj
+<< /D [ 8306 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+8319 0 obj
+<< /D [ 8306 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+8320 0 obj
+<< /D [ 8306 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+8321 0 obj
+<< /D [ 8306 0 R /XYZ 81.077 637.325 null ] >>
+endobj
+8322 0 obj
+<< /D [ 8306 0 R /XYZ 81.077 626.366 null ] >>
+endobj
+8323 0 obj
+<< /D [ 8306 0 R /XYZ 81.077 615.407 null ] >>
+endobj
+8324 0 obj
+<< /D [ 8306 0 R /XYZ 81.077 604.448 null ] >>
+endobj
+8325 0 obj
+<< /D [ 8306 0 R /XYZ 81.077 593.489 null ] >>
+endobj
+8326 0 obj
+<< /D [ 8306 0 R /XYZ 81.077 582.53 null ] >>
+endobj
+8327 0 obj
+<< /D [ 8306 0 R /XYZ 81.077 571.571 null ] >>
+endobj
+8328 0 obj
+<< /D [ 8306 0 R /XYZ 81.077 458.994 null ] >>
+endobj
+8329 0 obj
+<< /D [ 8306 0 R /XYZ 81.077 448.035 null ] >>
+endobj
+8330 0 obj
+<< /D [ 8306 0 R /XYZ 81.077 437.076 null ] >>
+endobj
+8331 0 obj
+<< /D [ 8306 0 R /XYZ 81.077 426.117 null ] >>
+endobj
+8332 0 obj
+<< /D [ 8306 0 R /XYZ 81.077 415.158 null ] >>
+endobj
+8333 0 obj
+<< /D [ 8306 0 R /XYZ 81.077 404.199 null ] >>
+endobj
+8334 0 obj
+<< /D [ 8306 0 R /XYZ 81.077 393.24 null ] >>
+endobj
+8335 0 obj
+<< /D [ 8306 0 R /XYZ 81.077 382.281 null ] >>
+endobj
+8336 0 obj
+<< /D [ 8306 0 R /XYZ 81.077 371.322 null ] >>
+endobj
+8337 0 obj
+<< /D [ 8306 0 R /XYZ 81.077 360.363 null ] >>
+endobj
+8338 0 obj
+<< /D [ 8306 0 R /XYZ 81.077 331.472 null ] >>
+endobj
+8339 0 obj
+<< /D [ 8306 0 R /XYZ 81.077 320.513 null ] >>
+endobj
+8340 0 obj
+<< /D [ 8306 0 R /XYZ 81.077 309.554 null ] >>
+endobj
+8341 0 obj
+<< /D [ 8306 0 R /XYZ 81.077 298.595 null ] >>
+endobj
+8342 0 obj
+<< /D [ 8306 0 R /XYZ 81.077 287.636 null ] >>
+endobj
+8343 0 obj
+<< /D [ 8306 0 R /XYZ 81.077 210.924 null ] >>
+endobj
+8344 0 obj
+<< /D [ 8306 0 R /XYZ 81.077 199.965 null ] >>
+endobj
+8345 0 obj
+<< /D [ 8306 0 R /XYZ 81.077 189.006 null ] >>
+endobj
+8346 0 obj
+<< /D [ 8306 0 R /XYZ 81.077 178.047 null ] >>
+endobj
+8347 0 obj
+<< /D [ 8306 0 R /XYZ 81.077 167.088 null ] >>
+endobj
+8348 0 obj
+<< /D [ 8306 0 R /XYZ 81.077 156.129 null ] >>
+endobj
+8349 0 obj
+<< /D [ 8306 0 R /XYZ 81.077 145.17 null ] >>
+endobj
+8350 0 obj
+<< /D [ 8306 0 R /XYZ 81.077 134.212 null ] >>
+endobj
+8351 0 obj
+<< /D [ 8306 0 R /XYZ 81.077 123.253 null ] >>
+endobj
+8352 0 obj
+<< /D [ 8306 0 R /XYZ 81.077 112.294 null ] >>
+endobj
+8353 0 obj
+<< /D [ 8306 0 R /XYZ 81.077 101.335 null ] >>
+endobj
+8354 0 obj
+<< /D [ 8306 0 R /XYZ 81.077 90.376 null ] >>
+endobj
+8305 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F76 318 0 R /F26 662 0 R /F75 317 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+8357 0 obj
+<< /Filter /FlateDecode /Length 1832 >>
+stream
+xZo6~_a` ˟"i`@Q`baEm!IJ4$x)>;3t/p}, Or:c3m30B6ܸrq!-;Y^
+䩁Dʪ@O[gJ-T *p6@sQW宿? SrI&CvՏ'9 ƈ"Vuϧ)v1ҍ漣/=b&5L&! HMZR0۟;3@)&v!š-1ږN4c'&亮n[Cpnz\Um(}ۭ7ͲCX
+ @`1rN٘IYz"465 r0(m[ZKhp-tHxF
+.6i}]c}j,TbYk6\y__o9\EGB,XJ .h -Ϭw9{qm־MX~*M
+irHAp6" ,{Yn<(4BA1E?L[C;*~cD"kF0!Y"ά>D'1Pє$A2EXx^,B!Ǥ*$ߴ!3&BpQ3E ``e-sШ3e3 VDCg"Zp|ko0z&w4`DBƕ%h+h8t,P&B]/ F 旙Q$H1EwA!B8E8Ss
+|xZבRblFfzti"9EiF*Dž2Yw2&kwc8mQ*zjE zDyE fInb?XdeN}}rq!B0hSaaN~:ț 
+|WQ2~Dٟj
+
+endstream
+endobj
+8356 0 obj
+<< /Type /Page /Contents 8357 0 R /Resources 8355 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 8304 0 R >>
+endobj
+8358 0 obj
+<< /D [ 8356 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+8359 0 obj
+<< /D [ 8356 0 R /XYZ 81.077 754.893 null ] >>
+endobj
+8360 0 obj
+<< /D [ 8356 0 R /XYZ 81.077 743.934 null ] >>
+endobj
+8361 0 obj
+<< /D [ 8356 0 R /XYZ 81.077 715.06 null ] >>
+endobj
+8362 0 obj
+<< /D [ 8356 0 R /XYZ 81.077 704.102 null ] >>
+endobj
+8363 0 obj
+<< /D [ 8356 0 R /XYZ 81.077 693.143 null ] >>
+endobj
+8364 0 obj
+<< /D [ 8356 0 R /XYZ 81.077 682.184 null ] >>
+endobj
+8365 0 obj
+<< /D [ 8356 0 R /XYZ 81.077 671.225 null ] >>
+endobj
+8366 0 obj
+<< /D [ 8356 0 R /XYZ 81.077 660.266 null ] >>
+endobj
+8367 0 obj
+<< /D [ 8356 0 R /XYZ 81.077 649.307 null ] >>
+endobj
+8368 0 obj
+<< /D [ 8356 0 R /XYZ 81.077 638.348 null ] >>
+endobj
+8369 0 obj
+<< /D [ 8356 0 R /XYZ 81.077 627.389 null ] >>
+endobj
+8370 0 obj
+<< /D [ 8356 0 R /XYZ 81.077 616.43 null ] >>
+endobj
+8371 0 obj
+<< /D [ 8356 0 R /XYZ 81.077 605.471 null ] >>
+endobj
+8372 0 obj
+<< /D [ 8356 0 R /XYZ 81.077 594.513 null ] >>
+endobj
+8373 0 obj
+<< /D [ 8356 0 R /XYZ 81.077 583.554 null ] >>
+endobj
+8374 0 obj
+<< /D [ 8356 0 R /XYZ 81.077 572.595 null ] >>
+endobj
+8375 0 obj
+<< /D [ 8356 0 R /XYZ 81.077 561.636 null ] >>
+endobj
+8376 0 obj
+<< /D [ 8356 0 R /XYZ 81.077 550.677 null ] >>
+endobj
+8377 0 obj
+<< /D [ 8356 0 R /XYZ 81.077 539.718 null ] >>
+endobj
+8378 0 obj
+<< /D [ 8356 0 R /XYZ 81.077 528.759 null ] >>
+endobj
+8379 0 obj
+<< /D [ 8356 0 R /XYZ 81.077 517.8 null ] >>
+endobj
+8380 0 obj
+<< /D [ 8356 0 R /XYZ 81.077 506.841 null ] >>
+endobj
+8381 0 obj
+<< /D [ 8356 0 R /XYZ 81.077 466.049 null ] >>
+endobj
+8382 0 obj
+<< /D [ 8356 0 R /XYZ 81.077 455.09 null ] >>
+endobj
+8383 0 obj
+<< /D [ 8356 0 R /XYZ 81.077 444.131 null ] >>
+endobj
+8384 0 obj
+<< /D [ 8356 0 R /XYZ 81.077 433.172 null ] >>
+endobj
+8385 0 obj
+<< /D [ 8356 0 R /XYZ 81.077 422.213 null ] >>
+endobj
+8386 0 obj
+<< /D [ 8356 0 R /XYZ 81.077 411.254 null ] >>
+endobj
+8387 0 obj
+<< /D [ 8356 0 R /XYZ 81.077 400.295 null ] >>
+endobj
+8388 0 obj
+<< /D [ 8356 0 R /XYZ 81.077 389.336 null ] >>
+endobj
+8389 0 obj
+<< /D [ 8356 0 R /XYZ 81.077 378.377 null ] >>
+endobj
+8390 0 obj
+<< /D [ 8356 0 R /XYZ 81.077 367.418 null ] >>
+endobj
+8391 0 obj
+<< /D [ 8356 0 R /XYZ 81.077 356.459 null ] >>
+endobj
+8392 0 obj
+<< /D [ 8356 0 R /XYZ 81.077 345.501 null ] >>
+endobj
+8393 0 obj
+<< /D [ 8356 0 R /XYZ 81.077 334.542 null ] >>
+endobj
+8394 0 obj
+<< /D [ 8356 0 R /XYZ 81.077 293.749 null ] >>
+endobj
+8395 0 obj
+<< /D [ 8356 0 R /XYZ 81.077 282.79 null ] >>
+endobj
+8396 0 obj
+<< /D [ 8356 0 R /XYZ 81.077 271.831 null ] >>
+endobj
+8397 0 obj
+<< /D [ 8356 0 R /XYZ 81.077 260.872 null ] >>
+endobj
+8398 0 obj
+<< /D [ 8356 0 R /XYZ 81.077 249.913 null ] >>
+endobj
+8399 0 obj
+<< /D [ 8356 0 R /XYZ 81.077 238.954 null ] >>
+endobj
+8400 0 obj
+<< /D [ 8356 0 R /XYZ 81.077 227.995 null ] >>
+endobj
+8401 0 obj
+<< /D [ 8356 0 R /XYZ 81.077 217.037 null ] >>
+endobj
+8402 0 obj
+<< /D [ 8356 0 R /XYZ 81.077 206.078 null ] >>
+endobj
+8403 0 obj
+<< /D [ 8356 0 R /XYZ 81.077 133.431 null ] >>
+endobj
+8404 0 obj
+<< /D [ 8356 0 R /XYZ 81.077 122.473 null ] >>
+endobj
+8405 0 obj
+<< /D [ 8356 0 R /XYZ 81.077 111.514 null ] >>
+endobj
+8406 0 obj
+<< /D [ 8356 0 R /XYZ 81.077 100.555 null ] >>
+endobj
+8407 0 obj
+<< /D [ 8356 0 R /XYZ 81.077 89.596 null ] >>
+endobj
+8408 0 obj
+<< /D [ 8356 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+8355 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F76 318 0 R /F20 186 0 R /F73 189 0 R /F69 183 0 R /F78 556 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+8411 0 obj
+<< /Filter /FlateDecode /Length 1708 >>
+stream
+xڽZ]o6}ϯXX~PtX EPl~[AX-">ʒ)I\EKJ<9^R =+O߷'o'.pd4at29!nH5Q ,du`gOե4L`0"nާ]zY>^ *Nm/uqOk)1<3y$ܣݑiOjS'Weo,ׯoD"ˏd$@u93Kt@[[ً|.y ,jD42dP O<MaNϝɇ%
+Q*<[coŢcU%RzJ! zuv #@ +ǀ2Btj*`*#͎0*!:Hleiݬ\R^\t!S%0iGq]RPG ҏRĕ7y`lCtJ~.'ۄ@ #%1M4u']K#g6<J0ޓ`
+!Z3W PwUދQG7@RD{G@8R~z"}ߤEݡ<%C{VF4DjS<lt<(@>THso
+Vt"W<9/
+V}"tV-*;+
+ozVl #ƽݛ0z!z d0 /5mn4ܛՏ}tZ!i+X#[:Dob쬷lQC6 OVrBpX QZ*O/2^uGpOe6!*kXБ:h'׋*Kp"jkXKKĘ| D9d/b;A DQxô<\f|iDÎ"# |uI̤1᫔qK9a A;Z:(ca3*OϨ>;eU7?Ӵynн^MBBUb\Fi9FbY,Rnu/K7N:Usv;譗] an"dO28D3qAjXPOvGڶ)R[Ъ>klTs漇nl3ib՞*ˡ»53z1C9{:ڎ(C#('*So F 6jԟJ$2n:YzIS~/``MRcꐮa0!{pĸ/t=E_FMi3_茆@+´/yÇ]\'V`ia+y*x(g:T`*xQP9#n ͈r C CW+!x9QFYG^Fכ^Y^wh@*
+w?O #ܓlD8ebBx)2WG 3s#t.gQE;>ĩB V#t@XHĕLVh#t(H{4@wf+U穵[ܼc|4A([b~'[o?tquY/+{̪yQ^3; ѬBQ${A88{pmrJ$<3xRN8FfCdkӓk)
+endstream
+endobj
+8410 0 obj
+<< /Type /Page /Contents 8411 0 R /Resources 8409 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 8304 0 R >>
+endobj
+8412 0 obj
+<< /D [ 8410 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+8413 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+8414 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+8415 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+8416 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+8417 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+8418 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+8419 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+8420 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+8421 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+8422 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+8423 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+8424 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+8425 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 637.325 null ] >>
+endobj
+8426 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 626.366 null ] >>
+endobj
+8427 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 615.407 null ] >>
+endobj
+8428 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 604.448 null ] >>
+endobj
+8429 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 593.489 null ] >>
+endobj
+8430 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 582.53 null ] >>
+endobj
+8431 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 571.571 null ] >>
+endobj
+8432 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 560.613 null ] >>
+endobj
+8433 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 549.654 null ] >>
+endobj
+8434 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 538.695 null ] >>
+endobj
+8435 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 527.736 null ] >>
+endobj
+8436 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 516.777 null ] >>
+endobj
+8437 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 505.818 null ] >>
+endobj
+8438 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 494.859 null ] >>
+endobj
+8439 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 483.9 null ] >>
+endobj
+8440 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 472.941 null ] >>
+endobj
+8441 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 461.982 null ] >>
+endobj
+8442 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 451.023 null ] >>
+endobj
+8443 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 440.065 null ] >>
+endobj
+8444 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 429.106 null ] >>
+endobj
+8445 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 418.147 null ] >>
+endobj
+8446 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 407.188 null ] >>
+endobj
+8447 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 396.229 null ] >>
+endobj
+8448 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 365.345 null ] >>
+endobj
+8449 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 354.386 null ] >>
+endobj
+8450 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 343.427 null ] >>
+endobj
+8451 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 332.468 null ] >>
+endobj
+8452 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 321.509 null ] >>
+endobj
+8453 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 310.55 null ] >>
+endobj
+8454 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 299.591 null ] >>
+endobj
+8455 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 288.632 null ] >>
+endobj
+8456 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 277.674 null ] >>
+endobj
+8457 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 266.715 null ] >>
+endobj
+8458 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 255.756 null ] >>
+endobj
+8459 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 244.797 null ] >>
+endobj
+8460 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 233.838 null ] >>
+endobj
+8461 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 222.879 null ] >>
+endobj
+8462 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 211.92 null ] >>
+endobj
+8463 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 200.961 null ] >>
+endobj
+8464 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 190.002 null ] >>
+endobj
+8465 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 179.043 null ] >>
+endobj
+8466 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 168.085 null ] >>
+endobj
+8467 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 157.126 null ] >>
+endobj
+8468 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 146.167 null ] >>
+endobj
+8469 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 135.208 null ] >>
+endobj
+8470 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 124.249 null ] >>
+endobj
+8471 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 113.29 null ] >>
+endobj
+8472 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 102.331 null ] >>
+endobj
+8473 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 91.372 null ] >>
+endobj
+8474 0 obj
+<< /D [ 8410 0 R /XYZ 81.077 80.413 null ] >>
+endobj
+8409 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+8477 0 obj
+<< /Filter /FlateDecode /Length 2359 >>
+stream
+xZKs۸Sh&3kIN>tpvHu<g" Jzh&0xv3ó__鉄}xs[fM]^ LK$)Idv{g{[if)bICW6mUpv.ܬE~COL2ں\P{]e*i>6' -۫jwׯnzp:߬G75%<cĨHWoPc2q \~
+ * M7W+GsF*0S2_U{tvCݻ4+?R^UmzpHw*,e[0ɼvq Rv3 $_gy<0~>:dW}SU7{,WUzOTAk栎IAXpUkïUW쓱R`Ez+#:Xb008FRhToUkId (挒1qFOMʮlfQO#081$[,ۮP]-.n$=RE\TT~>$ g$޷oY º}ae
+N'DG) !"/j(Ohٽ]]afqbB aBCY1Y6w25,4L4էb]ujq{cƹp)<;cd*ϋf^$'&BRj,GLgk
+9*K %O>o?e6wT$Y'pD&Cc dnL9X1.Vn+kWcԀqܕ,@0hwwo]5xui=Wc2(98z ŭNA6G <-Dd
+)ula BOc3_~-I$2J:M18:њWOhjI 򺶥}eWS.0hcmf2*wCewYWο܈崅: b#hJq%(3,Sh'Dy_<Gq:|cX2ն>g{WVKHnu9ʽ8dpxT+BΟ9zspIsmLM[xu?YVtm<ߜ`P[Sĵd0ٮr i;LcJA1)ޑ;,pwq> t= RUwU٠҈Po%4J7Q
+Gº: >[:ńmvŽ9ىhMsGONMG
+DMHz"/&|1K :ib[]S!c#T6LOtK
+#%Foi@(A\/t)1|N#.1yldAC@8~QVH%"$?O'K$ UҬp Q@rm^/@@F
+endstream
+endobj
+8476 0 obj
+<< /Type /Page /Contents 8477 0 R /Resources 8475 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 8304 0 R >>
+endobj
+8478 0 obj
+<< /D [ 8476 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+8479 0 obj
+<< /D [ 8476 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+8480 0 obj
+<< /D [ 8476 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+8481 0 obj
+<< /D [ 8476 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+8482 0 obj
+<< /D [ 8476 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+8483 0 obj
+<< /D [ 8476 0 R /XYZ 81.077 671.198 null ] >>
+endobj
+8484 0 obj
+<< /D [ 8476 0 R /XYZ 81.077 660.239 null ] >>
+endobj
+8485 0 obj
+<< /D [ 8476 0 R /XYZ 81.077 649.28 null ] >>
+endobj
+8486 0 obj
+<< /D [ 8476 0 R /XYZ 81.077 638.321 null ] >>
+endobj
+8487 0 obj
+<< /D [ 8476 0 R /XYZ 81.077 627.362 null ] >>
+endobj
+8488 0 obj
+<< /D [ 8476 0 R /XYZ 81.077 616.403 null ] >>
+endobj
+8489 0 obj
+<< /D [ 8476 0 R /XYZ 81.077 605.444 null ] >>
+endobj
+8490 0 obj
+<< /D [ 8476 0 R /XYZ 81.077 589.504 null ] >>
+endobj
+8491 0 obj
+<< /D [ 8476 0 R /XYZ 81.077 578.545 null ] >>
+endobj
+8492 0 obj
+<< /D [ 8476 0 R /XYZ 81.077 535.706 null ] >>
+endobj
+8493 0 obj
+<< /D [ 8476 0 R /XYZ 81.077 524.747 null ] >>
+endobj
+8494 0 obj
+<< /D [ 8476 0 R /XYZ 81.077 436.08 null ] >>
+endobj
+8495 0 obj
+<< /D [ 8476 0 R /XYZ 81.077 425.121 null ] >>
+endobj
+8496 0 obj
+<< /D [ 8476 0 R /XYZ 81.077 414.162 null ] >>
+endobj
+8497 0 obj
+<< /D [ 8476 0 R /XYZ 81.077 403.203 null ] >>
+endobj
+8498 0 obj
+<< /D [ 8476 0 R /XYZ 81.077 392.244 null ] >>
+endobj
+8499 0 obj
+<< /D [ 8476 0 R /XYZ 81.077 381.285 null ] >>
+endobj
+8500 0 obj
+<< /D [ 8476 0 R /XYZ 81.077 370.326 null ] >>
+endobj
+8501 0 obj
+<< /D [ 8476 0 R /XYZ 81.077 359.367 null ] >>
+endobj
+8502 0 obj
+<< /D [ 8476 0 R /XYZ 81.077 348.408 null ] >>
+endobj
+8503 0 obj
+<< /D [ 8476 0 R /XYZ 81.077 337.449 null ] >>
+endobj
+8504 0 obj
+<< /D [ 8476 0 R /XYZ 81.077 326.49 null ] >>
+endobj
+8505 0 obj
+<< /D [ 8476 0 R /XYZ 81.077 315.532 null ] >>
+endobj
+8506 0 obj
+<< /D [ 8476 0 R /XYZ 81.077 304.573 null ] >>
+endobj
+8507 0 obj
+<< /D [ 8476 0 R /XYZ 81.077 293.614 null ] >>
+endobj
+8508 0 obj
+<< /D [ 8476 0 R /XYZ 81.077 282.655 null ] >>
+endobj
+8509 0 obj
+<< /D [ 8476 0 R /XYZ 81.077 271.696 null ] >>
+endobj
+8510 0 obj
+<< /D [ 8476 0 R /XYZ 81.077 260.737 null ] >>
+endobj
+8511 0 obj
+<< /D [ 8476 0 R /XYZ 81.077 249.778 null ] >>
+endobj
+8512 0 obj
+<< /D [ 8476 0 R /XYZ 81.077 238.819 null ] >>
+endobj
+8513 0 obj
+<< /D [ 8476 0 R /XYZ 81.077 227.86 null ] >>
+endobj
+8514 0 obj
+<< /D [ 8476 0 R /XYZ 81.077 216.901 null ] >>
+endobj
+8515 0 obj
+<< /D [ 8476 0 R /XYZ 81.077 205.943 null ] >>
+endobj
+8516 0 obj
+<< /D [ 8476 0 R /XYZ 81.077 194.984 null ] >>
+endobj
+8517 0 obj
+<< /D [ 8476 0 R /XYZ 81.077 184.025 null ] >>
+endobj
+8518 0 obj
+<< /D [ 8476 0 R /XYZ 81.077 173.066 null ] >>
+endobj
+8519 0 obj
+<< /D [ 8476 0 R /XYZ 81.077 162.107 null ] >>
+endobj
+8520 0 obj
+<< /D [ 8476 0 R /XYZ 81.077 151.148 null ] >>
+endobj
+8521 0 obj
+<< /D [ 8476 0 R /XYZ 81.077 140.189 null ] >>
+endobj
+8522 0 obj
+<< /D [ 8476 0 R /XYZ 81.077 129.23 null ] >>
+endobj
+8523 0 obj
+<< /D [ 8476 0 R /XYZ 81.077 118.271 null ] >>
+endobj
+8524 0 obj
+<< /D [ 8476 0 R /XYZ 81.077 107.312 null ] >>
+endobj
+8525 0 obj
+<< /D [ 8476 0 R /XYZ 81.077 96.354 null ] >>
+endobj
+8526 0 obj
+<< /D [ 8476 0 R /XYZ 81.077 85.395 null ] >>
+endobj
+8475 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F26 662 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+8529 0 obj
+<< /Filter /FlateDecode /Length 2097 >>
+stream
+xZmo6_b.EP(-ܗۃش-Ddkިxć3Cg| "6H+~uEHhI$?HHv_z10>wl`&1*|tllqlL&>#a|Qk2Mi׷wYxntpM{M5iЎJ>.҈e0?+\0"ˊk͟|^-6ɗt %A[tJ3RdseNdQ, Oϗe(jyX
+ŭ)tl
+<,lo,Bui`NM|ntoRimi?!q!K3{GTPDi`l&Kz"qt,`*n>t-<!]y)xyZ(,qtz$b'B.cl-yweQEmw3 :R-3o[Ѷ24IgC>fGhf2Oj,_
+61pay&R"@yhDYm*K5aV4c ]R.c~wG6?Bu08}Uqe+a+<*~hL= !_HJVGƄi*.6=wMŽ72"_3*Ϯ("Ee6DI`n@$گ}{:u$ͫA@ȷ7 ;ylSL)闸Ed<~kG,p 31|abU2}JfyHv9DVeUZjÑV&$8 ! {,NW1|D1oK;CQdvu7w͜lw~[YKg9 |5Β>ǠWc~>+^榋{\*e D"L1]o[랗#} ^YHgq7b/d&NV):xMyLb8TGOE/̴EIW+c !I8^t6<P0/H { uv7C%q(aѣYiz:.g ڝbn]b%㈪>D+sp4eуM(bg%CTn'Ky+]q8(>0Ӷ3w
+endstream
+endobj
+8528 0 obj
+<< /Type /Page /Contents 8529 0 R /Resources 8527 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 8304 0 R >>
+endobj
+8530 0 obj
+<< /D [ 8528 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+8531 0 obj
+<< /D [ 8528 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+8532 0 obj
+<< /D [ 8528 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+8533 0 obj
+<< /D [ 8528 0 R /XYZ 81.077 741.933 null ] >>
+endobj
+8534 0 obj
+<< /D [ 8528 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+8535 0 obj
+<< /D [ 8528 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+8536 0 obj
+<< /D [ 8528 0 R /XYZ 81.077 641.31 null ] >>
+endobj
+8537 0 obj
+<< /D [ 8528 0 R /XYZ 81.077 630.351 null ] >>
+endobj
+8538 0 obj
+<< /D [ 8528 0 R /XYZ 81.077 619.392 null ] >>
+endobj
+8539 0 obj
+<< /D [ 8528 0 R /XYZ 81.077 608.433 null ] >>
+endobj
+8540 0 obj
+<< /D [ 8528 0 R /XYZ 81.077 567.586 null ] >>
+endobj
+8541 0 obj
+<< /D [ 8528 0 R /XYZ 81.077 551.646 null ] >>
+endobj
+8542 0 obj
+<< /D [ 8528 0 R /XYZ 81.077 540.687 null ] >>
+endobj
+8543 0 obj
+<< /D [ 8528 0 R /XYZ 81.077 529.728 null ] >>
+endobj
+8544 0 obj
+<< /D [ 8528 0 R /XYZ 81.077 518.769 null ] >>
+endobj
+8545 0 obj
+<< /D [ 8528 0 R /XYZ 81.077 507.811 null ] >>
+endobj
+8546 0 obj
+<< /D [ 8528 0 R /XYZ 81.077 496.852 null ] >>
+endobj
+8547 0 obj
+<< /D [ 8528 0 R /XYZ 81.077 485.893 null ] >>
+endobj
+8548 0 obj
+<< /D [ 8528 0 R /XYZ 81.077 474.934 null ] >>
+endobj
+8549 0 obj
+<< /D [ 8528 0 R /XYZ 81.077 463.975 null ] >>
+endobj
+8550 0 obj
+<< /D [ 8528 0 R /XYZ 81.077 453.016 null ] >>
+endobj
+8551 0 obj
+<< /D [ 8528 0 R /XYZ 81.077 442.057 null ] >>
+endobj
+8552 0 obj
+<< /D [ 8528 0 R /XYZ 81.077 431.098 null ] >>
+endobj
+8553 0 obj
+<< /D [ 8528 0 R /XYZ 81.077 420.139 null ] >>
+endobj
+8554 0 obj
+<< /D [ 8528 0 R /XYZ 81.077 409.18 null ] >>
+endobj
+8555 0 obj
+<< /D [ 8528 0 R /XYZ 81.077 398.221 null ] >>
+endobj
+8556 0 obj
+<< /D [ 8528 0 R /XYZ 81.077 387.263 null ] >>
+endobj
+8557 0 obj
+<< /D [ 8528 0 R /XYZ 81.077 376.304 null ] >>
+endobj
+8558 0 obj
+<< /D [ 8528 0 R /XYZ 81.077 365.345 null ] >>
+endobj
+8559 0 obj
+<< /D [ 8528 0 R /XYZ 81.077 354.386 null ] >>
+endobj
+8560 0 obj
+<< /D [ 8528 0 R /XYZ 81.077 343.427 null ] >>
+endobj
+8561 0 obj
+<< /D [ 8528 0 R /XYZ 81.077 332.468 null ] >>
+endobj
+8562 0 obj
+<< /D [ 8528 0 R /XYZ 81.077 321.509 null ] >>
+endobj
+8563 0 obj
+<< /D [ 8528 0 R /XYZ 81.077 310.55 null ] >>
+endobj
+8564 0 obj
+<< /D [ 8528 0 R /XYZ 81.077 299.591 null ] >>
+endobj
+8565 0 obj
+<< /D [ 8528 0 R /XYZ 81.077 288.632 null ] >>
+endobj
+8566 0 obj
+<< /D [ 8528 0 R /XYZ 81.077 277.674 null ] >>
+endobj
+8567 0 obj
+<< /D [ 8528 0 R /XYZ 81.077 234.834 null ] >>
+endobj
+8568 0 obj
+<< /D [ 8528 0 R /XYZ 81.077 223.875 null ] >>
+endobj
+8569 0 obj
+<< /D [ 8528 0 R /XYZ 81.077 212.916 null ] >>
+endobj
+8570 0 obj
+<< /D [ 8528 0 R /XYZ 81.077 201.957 null ] >>
+endobj
+8571 0 obj
+<< /D [ 8528 0 R /XYZ 81.077 171.073 null ] >>
+endobj
+8572 0 obj
+<< /D [ 8528 0 R /XYZ 81.077 160.114 null ] >>
+endobj
+8573 0 obj
+<< /D [ 8528 0 R /XYZ 81.077 149.155 null ] >>
+endobj
+8574 0 obj
+<< /D [ 8528 0 R /XYZ 81.077 138.197 null ] >>
+endobj
+8575 0 obj
+<< /D [ 8528 0 R /XYZ 81.077 127.238 null ] >>
+endobj
+8576 0 obj
+<< /D [ 8528 0 R /XYZ 81.077 116.279 null ] >>
+endobj
+8577 0 obj
+<< /D [ 8528 0 R /XYZ 81.077 105.32 null ] >>
+endobj
+8527 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F75 317 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+8580 0 obj
+<< /Filter /FlateDecode /Length 1449 >>
+stream
+xZMOH+"qi?"4Zii#+X;--'N%i.8yWUDL׋OgJL"D\I@LG~~ryrlO^CD *
+GImYvUS6w`{" 뉁V]'M u|:sq!KoHӏVٓ?6㲨nZo/ :7^\eB*y\sܾ~ުC) *L̋Urz>^Z?٪+dv_]7UJZEib̷,4fL~utUg1_>nz^Z6-V]ܕuqhV]T`J-e$I*/jޖ.H0v#(ftV?EQ>=?{:WM{Sb=6WkD5ܔlFcEVtnAr1ϙ.g][=ܔ+ۢ[)kAR/9.%!Ԟ1Pt~ȴk63)
+ Am#v0&J;h(1?q>PGRC|+,+^I hm+A1x%{Vf
+o (|ޘiB*og ځۺmj#۶Jn k^'hmjn<𰖵Aл x9oPIގYAs7npP9/-Y AۛM{]m z+ C1.!49^ ˑt
+Mm 5ATmٟk~ < LT'pKa; >S'z7q4߶ ǣ9{fێ
+8~ޜ'M v)5|Yl~ Ux+NJ<Hc x[9xE/&F0gkRVĹ`8Ub
+endstream
+endobj
+8579 0 obj
+<< /Type /Page /Contents 8580 0 R /Resources 8578 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 8304 0 R >>
+endobj
+8581 0 obj
+<< /D [ 8579 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+8582 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 754.977 null ] >>
+endobj
+8583 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 744.018 null ] >>
+endobj
+8584 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 733.059 null ] >>
+endobj
+8585 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 722.101 null ] >>
+endobj
+8586 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 711.142 null ] >>
+endobj
+8587 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 700.183 null ] >>
+endobj
+8588 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 689.224 null ] >>
+endobj
+8589 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 673.47 null ] >>
+endobj
+8590 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 662.511 null ] >>
+endobj
+8591 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 651.552 null ] >>
+endobj
+8592 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 640.593 null ] >>
+endobj
+8593 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 629.635 null ] >>
+endobj
+8594 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 618.676 null ] >>
+endobj
+8595 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 607.717 null ] >>
+endobj
+8596 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 596.758 null ] >>
+endobj
+8597 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 585.799 null ] >>
+endobj
+8598 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 574.84 null ] >>
+endobj
+8599 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 559.086 null ] >>
+endobj
+8600 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 548.127 null ] >>
+endobj
+8601 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 537.169 null ] >>
+endobj
+8602 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 526.21 null ] >>
+endobj
+8603 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 515.251 null ] >>
+endobj
+8604 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 504.292 null ] >>
+endobj
+8605 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 493.333 null ] >>
+endobj
+8606 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 482.374 null ] >>
+endobj
+8607 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 471.415 null ] >>
+endobj
+8608 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 460.456 null ] >>
+endobj
+8609 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 449.497 null ] >>
+endobj
+8610 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 438.538 null ] >>
+endobj
+8611 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 427.579 null ] >>
+endobj
+8612 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 416.621 null ] >>
+endobj
+8613 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 405.662 null ] >>
+endobj
+8614 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 394.703 null ] >>
+endobj
+8615 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 383.744 null ] >>
+endobj
+8616 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 372.785 null ] >>
+endobj
+8617 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 361.826 null ] >>
+endobj
+8618 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 350.867 null ] >>
+endobj
+8619 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 339.908 null ] >>
+endobj
+8620 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 328.949 null ] >>
+endobj
+8621 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 317.99 null ] >>
+endobj
+8622 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 307.032 null ] >>
+endobj
+8623 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 296.073 null ] >>
+endobj
+8624 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 285.114 null ] >>
+endobj
+8625 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 274.155 null ] >>
+endobj
+8626 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 263.196 null ] >>
+endobj
+8627 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 247.442 null ] >>
+endobj
+8628 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 236.483 null ] >>
+endobj
+8629 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 225.524 null ] >>
+endobj
+8630 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 214.566 null ] >>
+endobj
+8631 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 203.607 null ] >>
+endobj
+8632 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 192.648 null ] >>
+endobj
+8633 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 181.689 null ] >>
+endobj
+8634 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 170.73 null ] >>
+endobj
+8635 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 159.771 null ] >>
+endobj
+8636 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 148.812 null ] >>
+endobj
+8637 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 137.853 null ] >>
+endobj
+8638 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 126.894 null ] >>
+endobj
+8639 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 100.555 null ] >>
+endobj
+8640 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 89.596 null ] >>
+endobj
+8641 0 obj
+<< /D [ 8579 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+8578 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F20 186 0 R /F19 184 0 R /F73 189 0 R /F69 183 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+8644 0 obj
+<< /Filter /FlateDecode /Length 2806 >>
+stream
+x[oۼBC&V|'((`P&jK4Q$R[@j[;xoOYrd۳{Eܾߞ<{F҄!0%,H`HQ&prJ9Bfk/T̘EECǖ[<C8#x\!US<_ru~]W՗ j큑iD 0~<O9} (8(>w
+KD8(>bV~k. s02M0{
+_ZM[B,`nW~DQX1 Q5 3)clJxgŵٴW;cM\VD-A]KNf/X~o#$زFtJg"oU7k(~QUy
+t{W,셻cQ.dkNljߪyJԍu[Sv~Un2]Y-U~} 6 nj. EoѺrw;Iauʤ)N\V.eTR&}ػwpk_X`-`eVC\:!8sKT  U?T}s$hS
+DJQ njY5o|n޼6+[p%/>T>ּ1rP!?ڑw/ߪC2ە- w=.OSqHdR ^ۍ<|{7lWuaW*AgYl5HA*suHuДdZ`BcXVAMP|%?(*õ-
+4Z`'YOeȦKCj2,B> ԩDL?X%CzVOR{s[M@yGhΆ~ ۦX)PWr)\B8Y |/eքn-yGݦ)+ϑջn-PS*L,)&Qw)G#P>'
+ =YOzCd
+:@ͱF <OT
+yUV$F?nM̱t* äqx}nXͷOzpwf5a܇ԻzO*+>ޫ jD%C1n7!}ܾͰS쟚Q2n>ADX"B8>wLL6w3R&s2t 'z_.:D.x+<6fX|(X{X#c
+X[Ⱦ\qfm@*7sZ_/޽lt>qP3Z_ku;fuX(Rݩe#(_b(;ZD=p }v;-hi;yĀXpի8/ʩQ4S%sޭ-,AQBUhG=p?X9eL=p?#VbqT{qsǯA'_;=E4ճ}hog?l
+endstream
+endobj
+8643 0 obj
+<< /Type /Page /Contents 8644 0 R /Resources 8642 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 8304 0 R >>
+endobj
+8645 0 obj
+<< /D [ 8643 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+8646 0 obj
+<< /D [ 8643 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+8647 0 obj
+<< /D [ 8643 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+8648 0 obj
+<< /D [ 8643 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+8649 0 obj
+<< /D [ 8643 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+8650 0 obj
+<< /D [ 8643 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+8651 0 obj
+<< /D [ 8643 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+8652 0 obj
+<< /D [ 8643 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+8653 0 obj
+<< /D [ 8643 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+8654 0 obj
+<< /D [ 8643 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+8655 0 obj
+<< /D [ 8643 0 R /XYZ 81.077 423.713 null ] >>
+endobj
+8656 0 obj
+<< /D [ 8643 0 R /XYZ 81.077 412.754 null ] >>
+endobj
+8657 0 obj
+<< /D [ 8643 0 R /XYZ 81.077 401.795 null ] >>
+endobj
+8658 0 obj
+<< /D [ 8643 0 R /XYZ 81.077 390.837 null ] >>
+endobj
+8659 0 obj
+<< /D [ 8643 0 R /XYZ 81.077 379.878 null ] >>
+endobj
+8660 0 obj
+<< /D [ 8643 0 R /XYZ 81.077 368.919 null ] >>
+endobj
+8661 0 obj
+<< /D [ 8643 0 R /XYZ 81.077 357.96 null ] >>
+endobj
+8662 0 obj
+<< /D [ 8643 0 R /XYZ 81.077 347.001 null ] >>
+endobj
+8663 0 obj
+<< /D [ 8643 0 R /XYZ 81.077 336.042 null ] >>
+endobj
+8664 0 obj
+<< /D [ 8643 0 R /XYZ 81.077 325.083 null ] >>
+endobj
+8665 0 obj
+<< /D [ 8643 0 R /XYZ 81.077 314.124 null ] >>
+endobj
+8666 0 obj
+<< /D [ 8643 0 R /XYZ 81.077 261.322 null ] >>
+endobj
+8667 0 obj
+<< /D [ 8643 0 R /XYZ 81.077 250.363 null ] >>
+endobj
+8668 0 obj
+<< /D [ 8643 0 R /XYZ 81.077 239.404 null ] >>
+endobj
+8669 0 obj
+<< /D [ 8643 0 R /XYZ 81.077 228.446 null ] >>
+endobj
+8670 0 obj
+<< /D [ 8643 0 R /XYZ 81.077 217.487 null ] >>
+endobj
+8671 0 obj
+<< /D [ 8643 0 R /XYZ 81.077 206.528 null ] >>
+endobj
+8672 0 obj
+<< /D [ 8643 0 R /XYZ 81.077 195.569 null ] >>
+endobj
+8673 0 obj
+<< /D [ 8643 0 R /XYZ 81.077 184.61 null ] >>
+endobj
+8674 0 obj
+<< /D [ 8643 0 R /XYZ 81.077 173.651 null ] >>
+endobj
+8675 0 obj
+<< /D [ 8643 0 R /XYZ 81.077 162.692 null ] >>
+endobj
+8676 0 obj
+<< /D [ 8643 0 R /XYZ 81.077 151.733 null ] >>
+endobj
+8677 0 obj
+<< /D [ 8643 0 R /XYZ 81.077 140.774 null ] >>
+endobj
+8678 0 obj
+<< /D [ 8643 0 R /XYZ 81.077 129.815 null ] >>
+endobj
+8679 0 obj
+<< /D [ 8643 0 R /XYZ 81.077 118.857 null ] >>
+endobj
+8680 0 obj
+<< /D [ 8643 0 R /XYZ 81.077 107.898 null ] >>
+endobj
+8642 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F76 318 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+8683 0 obj
+<< /Filter /FlateDecode /Length 2435 >>
+stream
+xZ[o~_a`VF",0hnQЇnahd9ƖINfE*N}%/߹Qċ^?߽{FZRww*,RXH%AX~^4yZ^3ɓ%IB%ySd}IbmtT%ʉ+zږe,+*lgKETv'ۃk׼]ͦ<dOInuWǷYWn&0> ׈`dוu&y06] hy9Oi`ţm8T]y& YH񩝣#.i8xͦJ#ghҔa nÈDP!5Hг:զnYW֕߄UO)г 00M]UgK`XϺ0[}vUoVvuygէޝZIj!А [5NJQ&3*
+\ShÔ:nˬlٮ-p5 v'FRƽZ&Zl cg p#S("ֈ
+?fb:G
+d*
+6b2&XۏkAE1[Z͖ayV)bKck$*@-Ups{;V?|ZA),_/dǞw 'dWji-]s4&?,pPtxeuA׮&J|So@}R5_
+Hמn2E zwWt;iX;R(yo{/G5LT蟭c%Yci;12m6L^׵kW;փ{GX8`8#N3-H4+Dj5S)𽬺UUYʪjTkM6ev~&ݨ<Δvul]JC [}J8*/V--iyfɅ5Wx\a<)2t?tNZQx|猌se=qn q&㸆P<2O ]v}\ P|)a u%9=]Q@ 3V&,4Ѡg
+H!T!U4!:^f J Q耫 yV'd-K%ң 2nS$ʼIVi%[WHaǟ 8~d +%*Lcsُs ??B~1^|g
+WVFN0:wx, 8{!1XqAZ7+_,~K!` 9$Ʃ/gxYfS;CiK-;s }Y[\⫑m}T&Q9"a59B>F8ONwӖ1|U泛+c(.DqTN{C@>p[ݽ14V<!,$L3h|)
+>փT} N1b7,nS"S;] =J-(X.k"J#al7j=sˡVmÙJz)Y*M՜I&@Fc
+g33'rDl)@GKQ>Xs.hO)nUkgTUBT 8LѧOGG~:EP?񿉘D<(@۲l^v}q%br\E З
+L3\i՝iXmuyܻSloBc=X6jyͱ=sp:/+HǢ0ĕ7cUeX|M-ϟ2ﬧ.sj-/19ypbO\\=Ve,sm].ٳdHәLr|ZABM z,} I)Q<rq[پB V_(#%L Qf
+>W No>g`zM
+endstream
+endobj
+8682 0 obj
+<< /Type /Page /Contents 8683 0 R /Resources 8681 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 8304 0 R >>
+endobj
+8684 0 obj
+<< /D [ 8682 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+8685 0 obj
+<< /D [ 8682 0 R /XYZ 81.077 717.026 null ] >>
+endobj
+8686 0 obj
+<< /D [ 8682 0 R /XYZ 81.077 706.067 null ] >>
+endobj
+8687 0 obj
+<< /D [ 8682 0 R /XYZ 81.077 695.108 null ] >>
+endobj
+8688 0 obj
+<< /D [ 8682 0 R /XYZ 81.077 652.269 null ] >>
+endobj
+8689 0 obj
+<< /D [ 8682 0 R /XYZ 81.077 641.31 null ] >>
+endobj
+8690 0 obj
+<< /D [ 8682 0 R /XYZ 81.077 600.463 null ] >>
+endobj
+8691 0 obj
+<< /D [ 8682 0 R /XYZ 81.077 589.504 null ] >>
+endobj
+8692 0 obj
+<< /D [ 8682 0 R /XYZ 81.077 578.545 null ] >>
+endobj
+8693 0 obj
+<< /D [ 8682 0 R /XYZ 81.077 567.586 null ] >>
+endobj
+8694 0 obj
+<< /D [ 8682 0 R /XYZ 81.077 556.627 null ] >>
+endobj
+8695 0 obj
+<< /D [ 8682 0 R /XYZ 81.077 545.669 null ] >>
+endobj
+8696 0 obj
+<< /D [ 8682 0 R /XYZ 81.077 534.71 null ] >>
+endobj
+8697 0 obj
+<< /D [ 8682 0 R /XYZ 81.077 523.751 null ] >>
+endobj
+8698 0 obj
+<< /D [ 8682 0 R /XYZ 81.077 512.792 null ] >>
+endobj
+8699 0 obj
+<< /D [ 8682 0 R /XYZ 81.077 501.833 null ] >>
+endobj
+8700 0 obj
+<< /D [ 8682 0 R /XYZ 81.077 460.986 null ] >>
+endobj
+8701 0 obj
+<< /D [ 8682 0 R /XYZ 81.077 450.027 null ] >>
+endobj
+8702 0 obj
+<< /D [ 8682 0 R /XYZ 81.077 439.068 null ] >>
+endobj
+8703 0 obj
+<< /D [ 8682 0 R /XYZ 81.077 428.109 null ] >>
+endobj
+8704 0 obj
+<< /D [ 8682 0 R /XYZ 81.077 417.151 null ] >>
+endobj
+8705 0 obj
+<< /D [ 8682 0 R /XYZ 81.077 406.192 null ] >>
+endobj
+8706 0 obj
+<< /D [ 8682 0 R /XYZ 81.077 395.233 null ] >>
+endobj
+8707 0 obj
+<< /D [ 8682 0 R /XYZ 81.077 384.274 null ] >>
+endobj
+8708 0 obj
+<< /D [ 8682 0 R /XYZ 81.077 373.315 null ] >>
+endobj
+8709 0 obj
+<< /D [ 8682 0 R /XYZ 81.077 362.356 null ] >>
+endobj
+8710 0 obj
+<< /D [ 8682 0 R /XYZ 81.077 351.397 null ] >>
+endobj
+8711 0 obj
+<< /D [ 8682 0 R /XYZ 81.077 340.438 null ] >>
+endobj
+8712 0 obj
+<< /D [ 8682 0 R /XYZ 81.077 329.479 null ] >>
+endobj
+8713 0 obj
+<< /D [ 8682 0 R /XYZ 81.077 318.52 null ] >>
+endobj
+8714 0 obj
+<< /D [ 8682 0 R /XYZ 81.077 307.561 null ] >>
+endobj
+8715 0 obj
+<< /D [ 8682 0 R /XYZ 81.077 296.603 null ] >>
+endobj
+8716 0 obj
+<< /D [ 8682 0 R /XYZ 81.077 285.644 null ] >>
+endobj
+8717 0 obj
+<< /D [ 8682 0 R /XYZ 81.077 274.685 null ] >>
+endobj
+8718 0 obj
+<< /D [ 8682 0 R /XYZ 81.077 263.726 null ] >>
+endobj
+8719 0 obj
+<< /D [ 8682 0 R /XYZ 81.077 252.767 null ] >>
+endobj
+8720 0 obj
+<< /D [ 8682 0 R /XYZ 81.077 241.808 null ] >>
+endobj
+8721 0 obj
+<< /D [ 8682 0 R /XYZ 81.077 230.849 null ] >>
+endobj
+8722 0 obj
+<< /D [ 8682 0 R /XYZ 81.077 219.89 null ] >>
+endobj
+8723 0 obj
+<< /D [ 8682 0 R /XYZ 81.077 208.931 null ] >>
+endobj
+8724 0 obj
+<< /D [ 8682 0 R /XYZ 81.077 197.972 null ] >>
+endobj
+8725 0 obj
+<< /D [ 8682 0 R /XYZ 81.077 187.014 null ] >>
+endobj
+8726 0 obj
+<< /D [ 8682 0 R /XYZ 81.077 176.055 null ] >>
+endobj
+8727 0 obj
+<< /D [ 8682 0 R /XYZ 81.077 165.096 null ] >>
+endobj
+8728 0 obj
+<< /D [ 8682 0 R /XYZ 81.077 154.137 null ] >>
+endobj
+8729 0 obj
+<< /D [ 8682 0 R /XYZ 81.077 107.312 null ] >>
+endobj
+8730 0 obj
+<< /D [ 8682 0 R /XYZ 81.077 96.354 null ] >>
+endobj
+8731 0 obj
+<< /D [ 8682 0 R /XYZ 81.077 85.395 null ] >>
+endobj
+8681 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F20 186 0 R /F73 189 0 R /F69 183 0 R /F76 318 0 R /F78 556 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+8734 0 obj
+<< /Filter /FlateDecode /Length 1613 >>
+stream
+xڽZMoFW0P$(<M|ҭ)Jl")h{ܥeG#'y3$N O/>||"d"2@Q=ъQt2_OzdGe'R܄`*Ic+ϔ,ʇpI,(:ɷY},I8Bt`vM]UϿʪn{̚6n
+!pO{3oyڽnM>},1ɨ( c%ǒ!
+R>HWddT8EڴI]=&,Se%p=SbOe#%opa=yZN< ֊nT['Y:b WzEQJrN2ɰ1o.^Չp8ʛNe34bA!*NTcJ;Eեjz=8Jt&-o,Mi (J<%C AP;_4}dml^evIݷQX1Tg
+\O8sBt/߲Jvl<G⥒ G2D$ϝ_$8neZV۲
+H|)p~(+DyY/} H>u^dЦj6ʪܤY[o9K}C)b>PY=ezM-[Eg(Xi<;\Ї~IN(]twG%`yq|Ct&_T,^2qDC+1!@|h#1…I1mC0UEKy!~/W#k+Z)îq+tUJ3+;Eh{_ xC^H`b8tZ`qZcN-*B=dcDZ#:?Zz071Q\yо/o_M2Sp+̚dw!FƲ#"R/|?RWTh)\kn 9"PDhĵa}05GhʷE~iY>kݏHðF(Zbj0B(5H Ѩm i{BsыmEh%>thbtu(uӞX*"G觗ۈCͽQy;o䔃^c-Qϛ},Q\.B4R0ˡ娌AFur(f
+"4:`W5+QߒQɤ^Beńvy=G=D?װ\¼>Z6Ghh؞YZ/ghT%{&..3(СAK:Zo:
+*DdRALG{/5~
+endstream
+endobj
+8733 0 obj
+<< /Type /Page /Contents 8734 0 R /Resources 8732 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 8304 0 R >>
+endobj
+8735 0 obj
+<< /D [ 8733 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+8736 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+8737 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+8738 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+8739 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+8740 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+8741 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+8742 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+8743 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+8744 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+8745 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+8746 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+8747 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+8748 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 617.4 null ] >>
+endobj
+8749 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 606.441 null ] >>
+endobj
+8750 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 595.482 null ] >>
+endobj
+8751 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 584.523 null ] >>
+endobj
+8752 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 573.564 null ] >>
+endobj
+8753 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 562.605 null ] >>
+endobj
+8754 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 551.646 null ] >>
+endobj
+8755 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 540.687 null ] >>
+endobj
+8756 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 529.728 null ] >>
+endobj
+8757 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 518.769 null ] >>
+endobj
+8758 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 507.811 null ] >>
+endobj
+8759 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 496.852 null ] >>
+endobj
+8760 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 485.893 null ] >>
+endobj
+8761 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 474.934 null ] >>
+endobj
+8762 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 463.975 null ] >>
+endobj
+8763 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 453.016 null ] >>
+endobj
+8764 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 442.057 null ] >>
+endobj
+8765 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 431.098 null ] >>
+endobj
+8766 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 420.139 null ] >>
+endobj
+8767 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 409.18 null ] >>
+endobj
+8768 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 398.221 null ] >>
+endobj
+8769 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 387.263 null ] >>
+endobj
+8770 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 376.304 null ] >>
+endobj
+8771 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 365.345 null ] >>
+endobj
+8772 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 354.386 null ] >>
+endobj
+8773 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 343.427 null ] >>
+endobj
+8774 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 332.468 null ] >>
+endobj
+8775 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 321.509 null ] >>
+endobj
+8776 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 310.55 null ] >>
+endobj
+8777 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 299.591 null ] >>
+endobj
+8778 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 288.632 null ] >>
+endobj
+8779 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 277.674 null ] >>
+endobj
+8780 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 266.715 null ] >>
+endobj
+8781 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 255.756 null ] >>
+endobj
+8782 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 244.797 null ] >>
+endobj
+8783 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 233.838 null ] >>
+endobj
+8784 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 222.879 null ] >>
+endobj
+8785 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 211.92 null ] >>
+endobj
+8786 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 200.961 null ] >>
+endobj
+8787 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 190.002 null ] >>
+endobj
+8788 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 179.043 null ] >>
+endobj
+8789 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 168.085 null ] >>
+endobj
+8790 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 157.126 null ] >>
+endobj
+8791 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 146.167 null ] >>
+endobj
+8792 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 135.208 null ] >>
+endobj
+8793 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 124.249 null ] >>
+endobj
+8794 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 113.29 null ] >>
+endobj
+8795 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 102.331 null ] >>
+endobj
+8796 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 91.372 null ] >>
+endobj
+8797 0 obj
+<< /D [ 8733 0 R /XYZ 81.077 80.413 null ] >>
+endobj
+8732 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+8800 0 obj
+<< /Filter /FlateDecode /Length 1722 >>
+stream
+xZn8}WpІ``M}S}h Ai[[Yr%%i߾%Sriw_"[g r'oD}{ћ &M\-'d%DM$K2ZOM&_\H3Ht&R!1=a|\lʬh_ `ih((A3o[gEs[Mڞɩb{3Oϓզ뼜}L 0MT4a1B]DZG o[eb1:o7z&l{]h0GG2?xX"*M7D~tǀg)@ ,)2BW?{Q;tf#ƍJV 4 Y[q楜2}?R.ND ۘ1۳휡c46wÈWwgef1/p7I k70hvK0^U{W[`X!ɼR ;_~@O8ujPKZ aRDl3 pQ-Hb
+"ͽ1+{F ڋ㠒.b5 P[gSv:4dq&2Xٺ96!Xĸs/{L"(Bmkd&n[ID8A3UOIeUvϢr7@į*WDv˪$i(2pQ3DF;]"ЭÏlTEx{4HB悘IVT bq{7ѯeyB1:mV2Ƨw+[7cVwO]EVuZ{?ƁJr,~{6uzij³9ͨ\D-Y;#/vtp[
+a|Cj/8ԠX#G{&Dm?IA:B(,k{.j9/ܕ
+:ʹۚ$ao"teu]~Ns
+.+hzתol*+ I.vE/Q-W;6n3Aazc 5n`'bli$O!o7Bn+zO]#ϫ6
+endstream
+endobj
+8799 0 obj
+<< /Type /Page /Contents 8800 0 R /Resources 8798 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 8862 0 R >>
+endobj
+8801 0 obj
+<< /D [ 8799 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+8802 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+8803 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+8804 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+8805 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+8806 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+8807 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+8808 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+8809 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+8810 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+8811 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+8812 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+8813 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+8814 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 637.325 null ] >>
+endobj
+8815 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 626.366 null ] >>
+endobj
+8816 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 615.407 null ] >>
+endobj
+8817 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 604.448 null ] >>
+endobj
+8818 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 593.489 null ] >>
+endobj
+8819 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 582.53 null ] >>
+endobj
+8820 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 571.571 null ] >>
+endobj
+8821 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 560.613 null ] >>
+endobj
+8822 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 549.654 null ] >>
+endobj
+8823 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 538.695 null ] >>
+endobj
+8824 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 527.736 null ] >>
+endobj
+8825 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 516.777 null ] >>
+endobj
+8826 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 505.818 null ] >>
+endobj
+8827 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 494.859 null ] >>
+endobj
+8828 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 483.9 null ] >>
+endobj
+8829 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 472.941 null ] >>
+endobj
+8830 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 461.982 null ] >>
+endobj
+8831 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 451.023 null ] >>
+endobj
+8832 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 440.065 null ] >>
+endobj
+8833 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 409.18 null ] >>
+endobj
+8834 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 398.221 null ] >>
+endobj
+8835 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 387.263 null ] >>
+endobj
+8836 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 358.371 null ] >>
+endobj
+8837 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 347.412 null ] >>
+endobj
+8838 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 336.453 null ] >>
+endobj
+8839 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 325.494 null ] >>
+endobj
+8840 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 314.535 null ] >>
+endobj
+8841 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 303.576 null ] >>
+endobj
+8842 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 292.618 null ] >>
+endobj
+8843 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 281.659 null ] >>
+endobj
+8844 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 270.7 null ] >>
+endobj
+8845 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 259.741 null ] >>
+endobj
+8846 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 248.782 null ] >>
+endobj
+8847 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 237.823 null ] >>
+endobj
+8848 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 226.864 null ] >>
+endobj
+8849 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 215.905 null ] >>
+endobj
+8850 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 204.946 null ] >>
+endobj
+8851 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 193.987 null ] >>
+endobj
+8852 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 183.028 null ] >>
+endobj
+8853 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 172.07 null ] >>
+endobj
+8854 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 161.111 null ] >>
+endobj
+8855 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 150.152 null ] >>
+endobj
+8856 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 139.193 null ] >>
+endobj
+8857 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 128.234 null ] >>
+endobj
+8858 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 117.275 null ] >>
+endobj
+8859 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 106.316 null ] >>
+endobj
+8860 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 95.357 null ] >>
+endobj
+8861 0 obj
+<< /D [ 8799 0 R /XYZ 81.077 84.398 null ] >>
+endobj
+8798 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+8865 0 obj
+<< /Filter /FlateDecode /Length 1831 >>
+stream
+xڽZo6~_a  CPX!O ([EdYZtLnNJߑwΥ:yBwW"Aa&M"VP&o6ZLuNى!V)nb0uz*A3._M՟_4z|QGYuG~]"ӞKR(avqK$JЎeldӵ}Ws޽71;8-(O-H8tqzz5w
+,VuַQELQE{TqY8@)AN Ur~Yo7*eqŧ]
+ߋ&,0/|]0T{McQ?@1^UKbRPZ]?R384n)R1:.c~6W˥J9p`~4|HX 4=0>nެуϛ#ǽutKcيVF %=0sh)hE"c_RB3$oFW#!%ּ&.{yx@<)d
+z( LGPKQ6[YOCHa/I1q2)=rNNo(.êZϖ !v2/n_ڷ1ުb("|,F C<ʼnѻ]8&m0!մ*OQb!&XAu< cG̺ ≮#/ nmW ]1s]r7C _z+W./ }7 ݨ3&rKjGYU=ׇހN: pϥ=,POЏYaDžkHapJ]x'ז
+51.6Hձ
+ o0HAK<f$'%cl ^fȋD `¡1G*F gs
+Ƃ1)Fw g`d<ybǗ=f0,oNsc<K6>eA؁BI%Rt>i+a<Lг#uƹ
+2ABɸ&cd_RJ :ɦ\-w\1tS<L~V2* ?3[= 7[Ŷ
+endstream
+endobj
+8864 0 obj
+<< /Type /Page /Contents 8865 0 R /Resources 8863 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 8862 0 R >>
+endobj
+8866 0 obj
+<< /D [ 8864 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+8867 0 obj
+<< /D [ 8864 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+8868 0 obj
+<< /D [ 8864 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+8869 0 obj
+<< /D [ 8864 0 R /XYZ 81.077 705.071 null ] >>
+endobj
+8870 0 obj
+<< /D [ 8864 0 R /XYZ 81.077 694.112 null ] >>
+endobj
+8871 0 obj
+<< /D [ 8864 0 R /XYZ 81.077 683.153 null ] >>
+endobj
+8872 0 obj
+<< /D [ 8864 0 R /XYZ 81.077 672.194 null ] >>
+endobj
+8873 0 obj
+<< /D [ 8864 0 R /XYZ 81.077 661.235 null ] >>
+endobj
+8874 0 obj
+<< /D [ 8864 0 R /XYZ 81.077 650.276 null ] >>
+endobj
+8875 0 obj
+<< /D [ 8864 0 R /XYZ 81.077 639.317 null ] >>
+endobj
+8876 0 obj
+<< /D [ 8864 0 R /XYZ 81.077 628.358 null ] >>
+endobj
+8877 0 obj
+<< /D [ 8864 0 R /XYZ 81.077 617.4 null ] >>
+endobj
+8878 0 obj
+<< /D [ 8864 0 R /XYZ 81.077 606.441 null ] >>
+endobj
+8879 0 obj
+<< /D [ 8864 0 R /XYZ 81.077 581.534 null ] >>
+endobj
+8880 0 obj
+<< /D [ 8864 0 R /XYZ 81.077 550.65 null ] >>
+endobj
+8881 0 obj
+<< /D [ 8864 0 R /XYZ 81.077 521.758 null ] >>
+endobj
+8882 0 obj
+<< /D [ 8864 0 R /XYZ 81.077 510.799 null ] >>
+endobj
+8883 0 obj
+<< /D [ 8864 0 R /XYZ 81.077 499.84 null ] >>
+endobj
+8884 0 obj
+<< /D [ 8864 0 R /XYZ 81.077 488.882 null ] >>
+endobj
+8885 0 obj
+<< /D [ 8864 0 R /XYZ 81.077 477.923 null ] >>
+endobj
+8886 0 obj
+<< /D [ 8864 0 R /XYZ 81.077 449.031 null ] >>
+endobj
+8887 0 obj
+<< /D [ 8864 0 R /XYZ 81.077 438.072 null ] >>
+endobj
+8888 0 obj
+<< /D [ 8864 0 R /XYZ 81.077 427.113 null ] >>
+endobj
+8889 0 obj
+<< /D [ 8864 0 R /XYZ 81.077 416.154 null ] >>
+endobj
+8890 0 obj
+<< /D [ 8864 0 R /XYZ 81.077 375.307 null ] >>
+endobj
+8891 0 obj
+<< /D [ 8864 0 R /XYZ 81.077 364.349 null ] >>
+endobj
+8892 0 obj
+<< /D [ 8864 0 R /XYZ 81.077 353.39 null ] >>
+endobj
+8893 0 obj
+<< /D [ 8864 0 R /XYZ 81.077 342.431 null ] >>
+endobj
+8894 0 obj
+<< /D [ 8864 0 R /XYZ 81.077 331.472 null ] >>
+endobj
+8895 0 obj
+<< /D [ 8864 0 R /XYZ 81.077 320.513 null ] >>
+endobj
+8896 0 obj
+<< /D [ 8864 0 R /XYZ 81.077 309.554 null ] >>
+endobj
+8897 0 obj
+<< /D [ 8864 0 R /XYZ 81.077 298.595 null ] >>
+endobj
+8898 0 obj
+<< /D [ 8864 0 R /XYZ 81.077 287.636 null ] >>
+endobj
+8899 0 obj
+<< /D [ 8864 0 R /XYZ 81.077 276.677 null ] >>
+endobj
+8900 0 obj
+<< /D [ 8864 0 R /XYZ 81.077 265.718 null ] >>
+endobj
+8901 0 obj
+<< /D [ 8864 0 R /XYZ 81.077 254.759 null ] >>
+endobj
+8902 0 obj
+<< /D [ 8864 0 R /XYZ 81.077 243.801 null ] >>
+endobj
+8903 0 obj
+<< /D [ 8864 0 R /XYZ 81.077 232.842 null ] >>
+endobj
+8904 0 obj
+<< /D [ 8864 0 R /XYZ 81.077 221.883 null ] >>
+endobj
+8905 0 obj
+<< /D [ 8864 0 R /XYZ 81.077 210.924 null ] >>
+endobj
+8906 0 obj
+<< /D [ 8864 0 R /XYZ 81.077 199.965 null ] >>
+endobj
+8907 0 obj
+<< /D [ 8864 0 R /XYZ 81.077 189.006 null ] >>
+endobj
+8908 0 obj
+<< /D [ 8864 0 R /XYZ 81.077 178.047 null ] >>
+endobj
+8909 0 obj
+<< /D [ 8864 0 R /XYZ 81.077 167.088 null ] >>
+endobj
+8910 0 obj
+<< /D [ 8864 0 R /XYZ 81.077 156.129 null ] >>
+endobj
+8911 0 obj
+<< /D [ 8864 0 R /XYZ 81.077 145.17 null ] >>
+endobj
+8912 0 obj
+<< /D [ 8864 0 R /XYZ 81.077 134.212 null ] >>
+endobj
+8913 0 obj
+<< /D [ 8864 0 R /XYZ 81.077 123.253 null ] >>
+endobj
+8914 0 obj
+<< /D [ 8864 0 R /XYZ 81.077 112.294 null ] >>
+endobj
+8915 0 obj
+<< /D [ 8864 0 R /XYZ 81.077 101.335 null ] >>
+endobj
+8916 0 obj
+<< /D [ 8864 0 R /XYZ 81.077 90.376 null ] >>
+endobj
+8917 0 obj
+<< /D [ 8864 0 R /XYZ 81.077 79.417 null ] >>
+endobj
+8863 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F78 556 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+8920 0 obj
+<< /Filter /FlateDecode /Length 1653 >>
+stream
+xڽZMoIW bH+YH{ i!`̀l[ =]cx`2MMW=xƷߏggﮜiP7 D[f9+7y4DZ],X|
+0$FlIb1=*q~߿0Ҝ SP "w ͼI(]l<Ahe6]Uv3/_3LSz&4q4f H8&qbNXI@aXWIkJyȫՉl0t 3.0G30t$Yj/:TI&v
+GiOi:hhF@d"4D+udh-1[fL!uV
+ Bu9?N
+Cp!*h 蠠wHʈг"/ye3~8;/vv\{Ky&M*?'&D]5
+<L\F0BsxQd
+ehHѭ*y~h팲4F)NKǬjg UNXٺʳ۲Xw8ϡ=6o_ԧ9PÂW~w%B/
+&_~ڋN3i-Bʝ?B6^}W'4ٛ.1 险ӻli>=ʷM6XYʂ,ujM
+,CmY* n=KktE`i&鱽J%B
+'7^MJ' {[Uz"Hkq*P|Pr^ `@KxVk/G$ z6k'0p@!}ߘ|7eJz[>fA3$m\\]%/eD׷ޤPuE,RAMNǭ7)`hQ#[o$. Gk[Xϝ$N'K"C/Ol7X!ZEhzI!YI ֓0:=v~Kk9ӳmhRt81-\MqJ_^Ik@)[sڤcLW0s-׫71lD>O~n4a:6LGJ;8w͕oa_wX١B"hG+%"N=r??oM֣HP%}f;΁3a]@(]óPU
+endstream
+endobj
+8919 0 obj
+<< /Type /Page /Contents 8920 0 R /Resources 8918 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 8862 0 R >>
+endobj
+8921 0 obj
+<< /D [ 8919 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+8922 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+8923 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+8924 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+8925 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+8926 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+8927 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+8928 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+8929 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+8930 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+8931 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+8932 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+8933 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+8934 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 637.325 null ] >>
+endobj
+8935 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 621.753 null ] >>
+endobj
+8936 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 610.794 null ] >>
+endobj
+8937 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 599.835 null ] >>
+endobj
+8938 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 588.876 null ] >>
+endobj
+8939 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 577.917 null ] >>
+endobj
+8940 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 566.958 null ] >>
+endobj
+8941 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 555.999 null ] >>
+endobj
+8942 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 545.04 null ] >>
+endobj
+8943 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 534.082 null ] >>
+endobj
+8944 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 523.123 null ] >>
+endobj
+8945 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 512.164 null ] >>
+endobj
+8946 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 501.205 null ] >>
+endobj
+8947 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 490.246 null ] >>
+endobj
+8948 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 479.287 null ] >>
+endobj
+8949 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 468.328 null ] >>
+endobj
+8950 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 457.369 null ] >>
+endobj
+8951 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 446.41 null ] >>
+endobj
+8952 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 435.451 null ] >>
+endobj
+8953 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 424.492 null ] >>
+endobj
+8954 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 394.16 null ] >>
+endobj
+8955 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 378.588 null ] >>
+endobj
+8956 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 367.629 null ] >>
+endobj
+8957 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 356.671 null ] >>
+endobj
+8958 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 345.712 null ] >>
+endobj
+8959 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 334.753 null ] >>
+endobj
+8960 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 323.794 null ] >>
+endobj
+8961 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 312.835 null ] >>
+endobj
+8962 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 301.876 null ] >>
+endobj
+8963 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 290.917 null ] >>
+endobj
+8964 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 260.585 null ] >>
+endobj
+8965 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 249.626 null ] >>
+endobj
+8966 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 238.667 null ] >>
+endobj
+8967 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 227.708 null ] >>
+endobj
+8968 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 216.75 null ] >>
+endobj
+8969 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 205.791 null ] >>
+endobj
+8970 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 194.832 null ] >>
+endobj
+8971 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 183.873 null ] >>
+endobj
+8972 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 172.914 null ] >>
+endobj
+8973 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 161.955 null ] >>
+endobj
+8974 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 150.996 null ] >>
+endobj
+8975 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 140.037 null ] >>
+endobj
+8976 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 129.078 null ] >>
+endobj
+8977 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 118.119 null ] >>
+endobj
+8978 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 89.596 null ] >>
+endobj
+8979 0 obj
+<< /D [ 8919 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+8918 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F26 662 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+8982 0 obj
+<< /Filter /FlateDecode /Length 1990 >>
+stream
+xڵZMs8Wj.N'A嚩]6[,J-PTlkoȲZ\,~B'_( ~G-& >]1hD'l&$azFh&_ڤݿg>|L$%&IDJ0iĄUDb(a{<&a~y^quEW/f$ aRxF
+(D)ac'獝2b.'۶NYf77jSoyY/2h4\yL<FCD“ď7IUEa!P.(" S.Gm/%J"#orbZx^ +
+i^F;si$I csG}Q_:Q юJ[f7NfY[iN юʲXg[faYT6{,*fyͮ32'pю̃}v3xj:nV®)ǯnGǬc.RQ--DE.pa::B qDB@kf um90"PY=PiliU ~c-crg\ \
+endstream
+endobj
+8981 0 obj
+<< /Type /Page /Contents 8982 0 R /Resources 8980 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 8862 0 R >>
+endobj
+8983 0 obj
+<< /D [ 8981 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+8984 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+8985 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+8986 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+8987 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+8988 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+8989 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+8990 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+8991 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+8992 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+8993 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+8994 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+8995 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+8996 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 637.325 null ] >>
+endobj
+8997 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 621.967 null ] >>
+endobj
+8998 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 611.008 null ] >>
+endobj
+8999 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 600.05 null ] >>
+endobj
+9000 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 589.091 null ] >>
+endobj
+9001 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 524.38 null ] >>
+endobj
+9002 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 513.422 null ] >>
+endobj
+9003 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 502.463 null ] >>
+endobj
+9004 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 491.504 null ] >>
+endobj
+9005 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 480.545 null ] >>
+endobj
+9006 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 469.586 null ] >>
+endobj
+9007 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 458.627 null ] >>
+endobj
+9008 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 447.668 null ] >>
+endobj
+9009 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 436.709 null ] >>
+endobj
+9010 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 425.75 null ] >>
+endobj
+9011 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 414.791 null ] >>
+endobj
+9012 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 374.527 null ] >>
+endobj
+9013 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 363.568 null ] >>
+endobj
+9014 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 352.61 null ] >>
+endobj
+9015 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 341.651 null ] >>
+endobj
+9016 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 330.692 null ] >>
+endobj
+9017 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 319.733 null ] >>
+endobj
+9018 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 308.774 null ] >>
+endobj
+9019 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 297.815 null ] >>
+endobj
+9020 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 286.856 null ] >>
+endobj
+9021 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 275.897 null ] >>
+endobj
+9022 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 264.938 null ] >>
+endobj
+9023 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 253.979 null ] >>
+endobj
+9024 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 243.021 null ] >>
+endobj
+9025 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 232.062 null ] >>
+endobj
+9026 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 221.103 null ] >>
+endobj
+9027 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 210.144 null ] >>
+endobj
+9028 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 199.185 null ] >>
+endobj
+9029 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 188.226 null ] >>
+endobj
+9030 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 177.267 null ] >>
+endobj
+9031 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 166.308 null ] >>
+endobj
+9032 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 155.349 null ] >>
+endobj
+9033 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 144.39 null ] >>
+endobj
+9034 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 133.431 null ] >>
+endobj
+9035 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 122.473 null ] >>
+endobj
+9036 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 111.514 null ] >>
+endobj
+9037 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 100.555 null ] >>
+endobj
+9038 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 89.596 null ] >>
+endobj
+9039 0 obj
+<< /D [ 8981 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+8980 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F26 662 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+9042 0 obj
+<< /Filter /FlateDecode /Length 1930 >>
+stream
+xZ]o:}ϯ0{6wyټmb+6JMEZ2EIwYxfHΜBg3:D_w7oI,|vswD333i]]oY63ep6EgBnﺢʺx.Bq54\a߱~5]l]> ?"#eQ@R1z`m*VM[mf%aRV<Vxa4y͓kʺ?cY=(fhrK?g_f*U= :mXgju[ :#qv_mWZ;E5BKG%Adb*+ [It>F+R4~l#`yC RJ&`Ț)B9%R^\m[(Fbqў=lMh"ՙɃ1" <$aB^17s
+`۪mhN˪~Ar!ݹ= XT:(A,֓ߌjQdPDcHv^Uw*n_>ރ(|._y>^ѽ I|/A79Oyy/,NqBBsrQH&l玼f?Vv&fkw$]9ubNsrе˟b&³GKS 
+rHjnkLi!%~Gko5YSg/^ot}Pc6,QәƉ=꣫hwW1$4a9Cjv8yy%p6(JY ߽ 4tӡ8ə:y?,Z_<:
+b ?65Pn
+endstream
+endobj
+9041 0 obj
+<< /Type /Page /Contents 9042 0 R /Resources 9040 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 8862 0 R >>
+endobj
+9043 0 obj
+<< /D [ 9041 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+9044 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+9045 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+9046 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+9047 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+9048 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+9049 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+9050 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+9051 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+9052 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+9053 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+9054 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+9055 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+9056 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 619.392 null ] >>
+endobj
+9057 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 608.433 null ] >>
+endobj
+9058 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 597.474 null ] >>
+endobj
+9059 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 586.515 null ] >>
+endobj
+9060 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 575.556 null ] >>
+endobj
+9061 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 564.598 null ] >>
+endobj
+9062 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 553.639 null ] >>
+endobj
+9063 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 542.68 null ] >>
+endobj
+9064 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 531.721 null ] >>
+endobj
+9065 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 520.762 null ] >>
+endobj
+9066 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 456.005 null ] >>
+endobj
+9067 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 445.046 null ] >>
+endobj
+9068 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 434.087 null ] >>
+endobj
+9069 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 423.128 null ] >>
+endobj
+9070 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 412.169 null ] >>
+endobj
+9071 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 401.21 null ] >>
+endobj
+9072 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 390.251 null ] >>
+endobj
+9073 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 379.292 null ] >>
+endobj
+9074 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 368.334 null ] >>
+endobj
+9075 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 357.375 null ] >>
+endobj
+9076 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 346.416 null ] >>
+endobj
+9077 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 335.457 null ] >>
+endobj
+9078 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 324.498 null ] >>
+endobj
+9079 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 313.539 null ] >>
+endobj
+9080 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 302.58 null ] >>
+endobj
+9081 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 291.621 null ] >>
+endobj
+9082 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 280.662 null ] >>
+endobj
+9083 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 269.703 null ] >>
+endobj
+9084 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 258.745 null ] >>
+endobj
+9085 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 247.786 null ] >>
+endobj
+9086 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 236.827 null ] >>
+endobj
+9087 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 225.868 null ] >>
+endobj
+9088 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 214.909 null ] >>
+endobj
+9089 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 203.95 null ] >>
+endobj
+9090 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 192.991 null ] >>
+endobj
+9091 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 182.032 null ] >>
+endobj
+9092 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 171.073 null ] >>
+endobj
+9093 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 160.114 null ] >>
+endobj
+9094 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 149.155 null ] >>
+endobj
+9095 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 138.197 null ] >>
+endobj
+9096 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 127.238 null ] >>
+endobj
+9097 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 116.279 null ] >>
+endobj
+9098 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 105.32 null ] >>
+endobj
+9099 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 94.361 null ] >>
+endobj
+9100 0 obj
+<< /D [ 9041 0 R /XYZ 81.077 83.402 null ] >>
+endobj
+9040 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F26 662 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+9103 0 obj
+<< /Filter /FlateDecode /Length 1884 >>
+stream
+xڭZMo8W苃-.^L3Be&F<<tۗdtn3vl񑯪ȪzTO~O$__>ͯ>%l‘VAxB&J"II" ’Lɿ
+ky~wROR2 È_{hvLəkk$0m̀9g:?*S~m}B!Uvަ̬! T D hDTJ69oĭymuu}# e&@ '1m5]DLmȺfvGkϑ8hS-0,.5flkH2_x7o05fM
+HMm)ܯ}f&1"t;'B!$ш0ER n27LgxvK2͚T4vac36M`C6o~2niEYONReM ',ˢ~7.qvtq}Cմ &8cT/1sQnr#:LCL7TjKO͎inJ0M [nҧg,sѭ~_f0u7o_z:ٗ}Pp@`BN,"lL
+!9JX0A`w46siY7XKN\;O :|29! {ܯ NJ|&gkn;[#vPìif[C `6V
+'?Us5>*rκ|r>
+@P BqV DJd{qv OV]̭~r
+h&EQR gjҺJW/fC.z&#Ofr>(d>쒓B)bF9D-%]1R`C޽0F|Èѹ/%w7,a 8i0%3 [#)[غmJk_^(F}ZdՆL"4)B"+ڰ; _c$A2,x)}؜KWcKgjY;fKH
+W7wXqS*:Qv`Q-Uͣ ym*(D蓱&)R0XaZ>jo/lUey*گ|G$kF/.HT"<J*a. SO"4'#ݼY4ݿjMhf ~L1GdK#@1mΞf[|5Yق.Bm`"|۬=xȶN1x-83'$gyau<-ҢW=)Wݥ&Hn"4U!51
+.anq{F2 ?>s@
+endstream
+endobj
+9102 0 obj
+<< /Type /Page /Contents 9103 0 R /Resources 9101 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 8862 0 R >>
+endobj
+9104 0 obj
+<< /D [ 9102 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+9105 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+9106 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+9107 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+9108 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+9109 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+9110 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+9111 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+9112 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+9113 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+9114 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+9115 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+9116 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+9117 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 637.325 null ] >>
+endobj
+9118 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 572.568 null ] >>
+endobj
+9119 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 561.609 null ] >>
+endobj
+9120 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 550.65 null ] >>
+endobj
+9121 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 539.691 null ] >>
+endobj
+9122 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 528.732 null ] >>
+endobj
+9123 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 517.773 null ] >>
+endobj
+9124 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 506.814 null ] >>
+endobj
+9125 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 495.855 null ] >>
+endobj
+9126 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 484.896 null ] >>
+endobj
+9127 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 473.938 null ] >>
+endobj
+9128 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 462.979 null ] >>
+endobj
+9129 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 452.02 null ] >>
+endobj
+9130 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 441.061 null ] >>
+endobj
+9131 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 430.102 null ] >>
+endobj
+9132 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 419.143 null ] >>
+endobj
+9133 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 408.184 null ] >>
+endobj
+9134 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 397.225 null ] >>
+endobj
+9135 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 386.266 null ] >>
+endobj
+9136 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 375.307 null ] >>
+endobj
+9137 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 364.349 null ] >>
+endobj
+9138 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 348.408 null ] >>
+endobj
+9139 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 337.449 null ] >>
+endobj
+9140 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 326.49 null ] >>
+endobj
+9141 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 315.532 null ] >>
+endobj
+9142 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 304.573 null ] >>
+endobj
+9143 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 293.614 null ] >>
+endobj
+9144 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 282.655 null ] >>
+endobj
+9145 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 271.696 null ] >>
+endobj
+9146 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 260.737 null ] >>
+endobj
+9147 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 244.797 null ] >>
+endobj
+9148 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 233.838 null ] >>
+endobj
+9149 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 222.879 null ] >>
+endobj
+9150 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 211.92 null ] >>
+endobj
+9151 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 200.961 null ] >>
+endobj
+9152 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 190.002 null ] >>
+endobj
+9153 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 179.043 null ] >>
+endobj
+9154 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 168.085 null ] >>
+endobj
+9155 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 157.126 null ] >>
+endobj
+9156 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 146.167 null ] >>
+endobj
+9157 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 135.208 null ] >>
+endobj
+9158 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 124.249 null ] >>
+endobj
+9159 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 113.29 null ] >>
+endobj
+9160 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 102.331 null ] >>
+endobj
+9161 0 obj
+<< /D [ 9102 0 R /XYZ 81.077 91.372 null ] >>
+endobj
+9101 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F26 662 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+9164 0 obj
+<< /Filter /FlateDecode /Length 1869 >>
+stream
+xZKoFWEF;.
+=@%&,
+EvwVK.%kq)ٙF|8(N_0b L &ьPC˔8xkvK2X
+ y=.G:/8=S\ COm8^/2K񾬦Ywgs(Jy)U~pI߭{7)sC&1|M[¬aL)/d9ʯGC wOU)2C8}KHhɢ4{7
+5G,xY{jµX%}t UUY[-/5}rUk=Gvfoh&ZPޜ{y<[e*ʫluZeDzZuxrI":^ ǫ*뺜$3͉1kGϲ%)FA\ >on_XZѫ(G*!ꨘBײ1x7<y \h9.g}^Kb8)q1_0_Vl2uUyd3Rџ]q;l_hoA
+1W7yV>e`"b{'HQG8 ,tD&#I@
+#@K'R-M :M\Дpl4%^kJhJ= B?_I%%܉GBTRHRQi:EQy$QDXԎ!`H6ԏ
+ΓO?
+ `l%F?&`~-KYԭG(H@.7 F`]g5*M*܈.>z|Y9/@,׏%ٰc) X+Pt/5T2IXg0y'qQ4W%1beĪX;\' A\ĺX;\' Aٍy7
+endstream
+endobj
+9163 0 obj
+<< /Type /Page /Contents 9164 0 R /Resources 9162 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 8862 0 R >>
+endobj
+9165 0 obj
+<< /D [ 9163 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+9166 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+9167 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+9168 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+9169 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+9170 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+9171 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+9172 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+9173 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+9174 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+9175 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+9176 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+9177 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+9178 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 637.325 null ] >>
+endobj
+9179 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 588.508 null ] >>
+endobj
+9180 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 577.549 null ] >>
+endobj
+9181 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 566.59 null ] >>
+endobj
+9182 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 555.631 null ] >>
+endobj
+9183 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 544.672 null ] >>
+endobj
+9184 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 533.713 null ] >>
+endobj
+9185 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 522.754 null ] >>
+endobj
+9186 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 511.796 null ] >>
+endobj
+9187 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 500.837 null ] >>
+endobj
+9188 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 489.878 null ] >>
+endobj
+9189 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 478.919 null ] >>
+endobj
+9190 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 467.96 null ] >>
+endobj
+9191 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 457.001 null ] >>
+endobj
+9192 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 446.042 null ] >>
+endobj
+9193 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 435.083 null ] >>
+endobj
+9194 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 424.124 null ] >>
+endobj
+9195 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 413.165 null ] >>
+endobj
+9196 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 402.207 null ] >>
+endobj
+9197 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 355.382 null ] >>
+endobj
+9198 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 344.423 null ] >>
+endobj
+9199 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 333.464 null ] >>
+endobj
+9200 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 322.505 null ] >>
+endobj
+9201 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 311.547 null ] >>
+endobj
+9202 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 300.588 null ] >>
+endobj
+9203 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 289.629 null ] >>
+endobj
+9204 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 278.67 null ] >>
+endobj
+9205 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 267.711 null ] >>
+endobj
+9206 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 256.752 null ] >>
+endobj
+9207 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 245.793 null ] >>
+endobj
+9208 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 234.834 null ] >>
+endobj
+9209 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 223.875 null ] >>
+endobj
+9210 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 212.916 null ] >>
+endobj
+9211 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 201.957 null ] >>
+endobj
+9212 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 190.999 null ] >>
+endobj
+9213 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 180.04 null ] >>
+endobj
+9214 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 169.081 null ] >>
+endobj
+9215 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 158.122 null ] >>
+endobj
+9216 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 147.163 null ] >>
+endobj
+9217 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 106.316 null ] >>
+endobj
+9218 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 95.357 null ] >>
+endobj
+9219 0 obj
+<< /D [ 9163 0 R /XYZ 81.077 84.398 null ] >>
+endobj
+9162 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+9222 0 obj
+<< /Filter /FlateDecode /Length 2256 >>
+stream
+xڭZ[۸~_a kFK&-)ǖȒ inPhxa( hv3f^DC~^|u3S2^`(Y,r&F<&\|GbA1I覺+7f2kŒ>G|Y46gLYSjAGCd$k8I0IoHm]ѭJOf{+m ̨̖Mӽ>Jl i1FpY""Da#se%dZ9ӵ{UnC^z$]ohٓeDSH! S36<N4C
+"6RNsOPMWZߞ@:
+vڈkۃŮ=K 0#aO&  r~)=W~4UWj6y5ִeMYLfʚr`K
+xRQ8%EROf<-]deP.n*i].)[%z5u*`!a"њUսc-Xߥ÷))/o5!1Nu#ZG<=P;O&VPr<78L&F]^Ǻp֫|yT1$;)8̜w'$2HPQ"Z [K,R"75 C^e?fH0br}u<:MDc!] ҹS"8oq= 2gn8`<͝_mQH'$<C9CF|"("aSZy٥ٽ*VGyX~0 J^g) wm=?%R{p Hx+ <tcߵG9KEPe ]*C}l <ejrUB<6};څPȃ$]eɶ'
+ǐ(Ta$a2[Ո^\():$NP<+͹g[:oUBγ?ć/,ͳ*=z-q]Q'sb\:P M@\aރcAªd=Ld? '
+tSn"أWO="B Xӄ G |5"Ha2mQNY$_㻄/]~P=rcOOnK=OT{j &8_PoT1o!Qƛ2>knOjYs',
+qc#U0.a83zglȦULnƎ>r|wRvgg$Hcv=|x]^/Zv{/iE=+J(]vh
+7>@%C|?*:s p.޷U =Jf<M4rb\&³>qncרUOToR
+d8S->ש<.f"
+:z Qo$03:.IN
+endstream
+endobj
+9221 0 obj
+<< /Type /Page /Contents 9222 0 R /Resources 9220 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 8862 0 R >>
+endobj
+9223 0 obj
+<< /D [ 9221 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+9224 0 obj
+<< /D [ 9221 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+9225 0 obj
+<< /D [ 9221 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+9226 0 obj
+<< /D [ 9221 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+9227 0 obj
+<< /D [ 9221 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+9228 0 obj
+<< /D [ 9221 0 R /XYZ 81.077 647.288 null ] >>
+endobj
+9229 0 obj
+<< /D [ 9221 0 R /XYZ 81.077 636.329 null ] >>
+endobj
+9230 0 obj
+<< /D [ 9221 0 R /XYZ 81.077 625.37 null ] >>
+endobj
+9231 0 obj
+<< /D [ 9221 0 R /XYZ 81.077 614.411 null ] >>
+endobj
+9232 0 obj
+<< /D [ 9221 0 R /XYZ 81.077 603.452 null ] >>
+endobj
+9233 0 obj
+<< /D [ 9221 0 R /XYZ 81.077 592.493 null ] >>
+endobj
+9234 0 obj
+<< /D [ 9221 0 R /XYZ 81.077 581.534 null ] >>
+endobj
+9235 0 obj
+<< /D [ 9221 0 R /XYZ 81.077 570.575 null ] >>
+endobj
+9236 0 obj
+<< /D [ 9221 0 R /XYZ 81.077 559.616 null ] >>
+endobj
+9237 0 obj
+<< /D [ 9221 0 R /XYZ 81.077 548.657 null ] >>
+endobj
+9238 0 obj
+<< /D [ 9221 0 R /XYZ 81.077 537.698 null ] >>
+endobj
+9239 0 obj
+<< /D [ 9221 0 R /XYZ 81.077 526.74 null ] >>
+endobj
+9240 0 obj
+<< /D [ 9221 0 R /XYZ 81.077 515.781 null ] >>
+endobj
+9241 0 obj
+<< /D [ 9221 0 R /XYZ 81.077 504.822 null ] >>
+endobj
+9242 0 obj
+<< /D [ 9221 0 R /XYZ 81.077 493.863 null ] >>
+endobj
+9243 0 obj
+<< /D [ 9221 0 R /XYZ 81.077 482.904 null ] >>
+endobj
+9244 0 obj
+<< /D [ 9221 0 R /XYZ 81.077 471.945 null ] >>
+endobj
+9245 0 obj
+<< /D [ 9221 0 R /XYZ 81.077 460.986 null ] >>
+endobj
+9246 0 obj
+<< /D [ 9221 0 R /XYZ 81.077 450.027 null ] >>
+endobj
+9247 0 obj
+<< /D [ 9221 0 R /XYZ 81.077 439.068 null ] >>
+endobj
+9248 0 obj
+<< /D [ 9221 0 R /XYZ 81.077 428.109 null ] >>
+endobj
+9249 0 obj
+<< /D [ 9221 0 R /XYZ 81.077 417.151 null ] >>
+endobj
+9250 0 obj
+<< /D [ 9221 0 R /XYZ 81.077 406.192 null ] >>
+endobj
+9251 0 obj
+<< /D [ 9221 0 R /XYZ 81.077 395.233 null ] >>
+endobj
+9252 0 obj
+<< /D [ 9221 0 R /XYZ 81.077 384.274 null ] >>
+endobj
+9253 0 obj
+<< /D [ 9221 0 R /XYZ 81.077 373.315 null ] >>
+endobj
+9254 0 obj
+<< /D [ 9221 0 R /XYZ 81.077 362.356 null ] >>
+endobj
+9255 0 obj
+<< /D [ 9221 0 R /XYZ 81.077 337.449 null ] >>
+endobj
+9256 0 obj
+<< /D [ 9221 0 R /XYZ 81.077 326.49 null ] >>
+endobj
+9257 0 obj
+<< /D [ 9221 0 R /XYZ 81.077 259.741 null ] >>
+endobj
+9258 0 obj
+<< /D [ 9221 0 R /XYZ 81.077 248.782 null ] >>
+endobj
+9259 0 obj
+<< /D [ 9221 0 R /XYZ 81.077 237.823 null ] >>
+endobj
+9260 0 obj
+<< /D [ 9221 0 R /XYZ 81.077 226.864 null ] >>
+endobj
+113 0 obj
+<< /D [ 9221 0 R /XYZ 79.37 215.357 null ] >>
+endobj
+9261 0 obj
+<< /D [ 9221 0 R /XYZ 81.077 150.003 null ] >>
+endobj
+9262 0 obj
+<< /D [ 9221 0 R /XYZ 81.077 139.044 null ] >>
+endobj
+9263 0 obj
+<< /D [ 9221 0 R /XYZ 81.077 128.085 null ] >>
+endobj
+9264 0 obj
+<< /D [ 9221 0 R /XYZ 81.077 117.126 null ] >>
+endobj
+9265 0 obj
+<< /D [ 9221 0 R /XYZ 81.077 106.167 null ] >>
+endobj
+9266 0 obj
+<< /D [ 9221 0 R /XYZ 81.077 95.208 null ] >>
+endobj
+9267 0 obj
+<< /D [ 9221 0 R /XYZ 81.077 84.249 null ] >>
+endobj
+9220 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F70 185 0 R /F72 187 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+9270 0 obj
+<< /Filter /FlateDecode /Length 2066 >>
+stream
+xZko_".j_#@,P) v?,ValɕLԃ"d
+_yr4e< N=XaQAGvXef a|g-)r<ZN-n;B?3[TORBA=[SPF;&Huf-nrzgEޱ4q'c
+ހCq c%2֗*$,'dڋ|G3 ǣփkKCD4w٪-̩%Jy4h9A){WEݺa#h/#C/y
+endstream
+endobj
+9269 0 obj
+<< /Type /Page /Contents 9270 0 R /Resources 9268 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 8862 0 R >>
+endobj
+9271 0 obj
+<< /D [ 9269 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+9272 0 obj
+<< /D [ 9269 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+9273 0 obj
+<< /D [ 9269 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+9274 0 obj
+<< /D [ 9269 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+9275 0 obj
+<< /D [ 9269 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+9276 0 obj
+<< /D [ 9269 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+9277 0 obj
+<< /D [ 9269 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+9278 0 obj
+<< /D [ 9269 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+9279 0 obj
+<< /D [ 9269 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+9280 0 obj
+<< /D [ 9269 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+9281 0 obj
+<< /D [ 9269 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+9282 0 obj
+<< /D [ 9269 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+117 0 obj
+<< /D [ 9269 0 R /XYZ 79.37 633.788 null ] >>
+endobj
+9283 0 obj
+<< /D [ 9269 0 R /XYZ 81.077 578.687 null ] >>
+endobj
+9284 0 obj
+<< /D [ 9269 0 R /XYZ 81.077 567.728 null ] >>
+endobj
+9285 0 obj
+<< /D [ 9269 0 R /XYZ 81.077 556.769 null ] >>
+endobj
+9286 0 obj
+<< /D [ 9269 0 R /XYZ 81.077 545.81 null ] >>
+endobj
+9287 0 obj
+<< /D [ 9269 0 R /XYZ 81.077 534.851 null ] >>
+endobj
+9288 0 obj
+<< /D [ 9269 0 R /XYZ 81.077 523.892 null ] >>
+endobj
+9289 0 obj
+<< /D [ 9269 0 R /XYZ 81.077 512.933 null ] >>
+endobj
+9290 0 obj
+<< /D [ 9269 0 R /XYZ 81.077 501.974 null ] >>
+endobj
+9291 0 obj
+<< /D [ 9269 0 R /XYZ 81.077 491.015 null ] >>
+endobj
+9292 0 obj
+<< /D [ 9269 0 R /XYZ 81.077 480.056 null ] >>
+endobj
+9293 0 obj
+<< /D [ 9269 0 R /XYZ 81.077 469.098 null ] >>
+endobj
+9294 0 obj
+<< /D [ 9269 0 R /XYZ 81.077 458.139 null ] >>
+endobj
+9295 0 obj
+<< /D [ 9269 0 R /XYZ 81.077 447.18 null ] >>
+endobj
+9296 0 obj
+<< /D [ 9269 0 R /XYZ 81.077 436.221 null ] >>
+endobj
+9297 0 obj
+<< /D [ 9269 0 R /XYZ 81.077 425.262 null ] >>
+endobj
+9298 0 obj
+<< /D [ 9269 0 R /XYZ 81.077 414.303 null ] >>
+endobj
+9299 0 obj
+<< /D [ 9269 0 R /XYZ 81.077 398.363 null ] >>
+endobj
+9300 0 obj
+<< /D [ 9269 0 R /XYZ 81.077 387.404 null ] >>
+endobj
+9301 0 obj
+<< /D [ 9269 0 R /XYZ 81.077 376.445 null ] >>
+endobj
+9302 0 obj
+<< /D [ 9269 0 R /XYZ 81.077 360.505 null ] >>
+endobj
+9303 0 obj
+<< /D [ 9269 0 R /XYZ 81.077 349.546 null ] >>
+endobj
+9304 0 obj
+<< /D [ 9269 0 R /XYZ 81.077 318.662 null ] >>
+endobj
+9305 0 obj
+<< /D [ 9269 0 R /XYZ 81.077 307.703 null ] >>
+endobj
+9306 0 obj
+<< /D [ 9269 0 R /XYZ 81.077 296.744 null ] >>
+endobj
+9307 0 obj
+<< /D [ 9269 0 R /XYZ 81.077 285.785 null ] >>
+endobj
+9308 0 obj
+<< /D [ 9269 0 R /XYZ 81.077 274.826 null ] >>
+endobj
+9309 0 obj
+<< /D [ 9269 0 R /XYZ 81.077 263.867 null ] >>
+endobj
+9310 0 obj
+<< /D [ 9269 0 R /XYZ 81.077 252.908 null ] >>
+endobj
+9311 0 obj
+<< /D [ 9269 0 R /XYZ 81.077 241.949 null ] >>
+endobj
+9312 0 obj
+<< /D [ 9269 0 R /XYZ 81.077 230.99 null ] >>
+endobj
+9313 0 obj
+<< /D [ 9269 0 R /XYZ 81.077 220.032 null ] >>
+endobj
+9314 0 obj
+<< /D [ 9269 0 R /XYZ 81.077 209.073 null ] >>
+endobj
+9315 0 obj
+<< /D [ 9269 0 R /XYZ 81.077 198.114 null ] >>
+endobj
+9316 0 obj
+<< /D [ 9269 0 R /XYZ 81.077 187.155 null ] >>
+endobj
+9317 0 obj
+<< /D [ 9269 0 R /XYZ 81.077 176.196 null ] >>
+endobj
+9318 0 obj
+<< /D [ 9269 0 R /XYZ 81.077 165.237 null ] >>
+endobj
+9319 0 obj
+<< /D [ 9269 0 R /XYZ 81.077 154.278 null ] >>
+endobj
+9320 0 obj
+<< /D [ 9269 0 R /XYZ 81.077 143.319 null ] >>
+endobj
+9321 0 obj
+<< /D [ 9269 0 R /XYZ 81.077 90.517 null ] >>
+endobj
+9322 0 obj
+<< /D [ 9269 0 R /XYZ 81.077 79.558 null ] >>
+endobj
+9268 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F72 187 0 R /F19 184 0 R /F20 186 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+9325 0 obj
+<< /Filter /FlateDecode /Length 2094 >>
+stream
+xڭZo6~_W
+>D$R&$:cT͒YnwTP~ܻ,%")JnD=/VʝnqnNI"Pg&dU틶;du->oC̣ !2¤pːq&uT:BQ(>W3Wm-(k-¹ruz_Quޖm,zp^9#6!.uPMnI:|K9؆G^{ŮTgJ(_SI̜,.i\zY-eMwut"NFpzs6DМH᨝p0FDU o x}aZd,F,+|6}b_~ !*﫺Ġ0x-E艉8Į$:Ja2Ή|\o0~,z|m
+Й:NQI%@zgf%#;"
+/<~;1Q} Y72̠=rAU T_v#,ekkH2"
+9OsX KNt<IiU]Ek
+@ф?h<D,{;pvmiMWMm5f쏓9gZ5=
+mcfODT{iߛ"* t7b! "r*@BqA<IOׄ@k<A,tbYt~
+; 8;\5&F%ynLVWס dܓrZ ^_u~; +?> Jep/J&X9O(ƖJXmK[<yk"M.</:DB+SJ75 H:em7P̋{|4iU<m1Ex2f4|K.-89,zx<0H7nzsQ=>l? G_n?cS7;VYˢ#j.;{)FkOrYK v R:aceRnj&
+" _:\UPu2H_\Cz6;)%ԉ| \ qN_W$ϱ_\Qg5p}nM1s-
+im wxPmav:#)a>Tw=o͗La cݘۦ^<bTLp?Ld?sRj+IihUb
+@8{72%t; éU{ '.䇕߫;w'-sxt)0T褻;o_n]b}QD
+$N*@AxzS_ֆ)(L`xn[տ܅+iD%K)WE/>Xř΀s'UKh.K?*e?D?Mӯgga.|!_p
+J
+\ |,=܍\P^VeGΆ Ǿ:RIIWsy{º
+endstream
+endobj
+9324 0 obj
+<< /Type /Page /Contents 9325 0 R /Resources 9323 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 8862 0 R >>
+endobj
+9326 0 obj
+<< /D [ 9324 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+9327 0 obj
+<< /D [ 9324 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+9328 0 obj
+<< /D [ 9324 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+9329 0 obj
+<< /D [ 9324 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+9330 0 obj
+<< /D [ 9324 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+9331 0 obj
+<< /D [ 9324 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+9332 0 obj
+<< /D [ 9324 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+9333 0 obj
+<< /D [ 9324 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+9334 0 obj
+<< /D [ 9324 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+9335 0 obj
+<< /D [ 9324 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+9336 0 obj
+<< /D [ 9324 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+9337 0 obj
+<< /D [ 9324 0 R /XYZ 81.077 654.294 null ] >>
+endobj
+9338 0 obj
+<< /D [ 9324 0 R /XYZ 81.077 643.336 null ] >>
+endobj
+9339 0 obj
+<< /D [ 9324 0 R /XYZ 81.077 632.377 null ] >>
+endobj
+9340 0 obj
+<< /D [ 9324 0 R /XYZ 81.077 621.418 null ] >>
+endobj
+9341 0 obj
+<< /D [ 9324 0 R /XYZ 81.077 610.459 null ] >>
+endobj
+9342 0 obj
+<< /D [ 9324 0 R /XYZ 81.077 599.5 null ] >>
+endobj
+9343 0 obj
+<< /D [ 9324 0 R /XYZ 81.077 588.541 null ] >>
+endobj
+9344 0 obj
+<< /D [ 9324 0 R /XYZ 81.077 577.582 null ] >>
+endobj
+9345 0 obj
+<< /D [ 9324 0 R /XYZ 81.077 566.623 null ] >>
+endobj
+9346 0 obj
+<< /D [ 9324 0 R /XYZ 81.077 550.716 null ] >>
+endobj
+9347 0 obj
+<< /D [ 9324 0 R /XYZ 81.077 539.757 null ] >>
+endobj
+9348 0 obj
+<< /D [ 9324 0 R /XYZ 81.077 528.798 null ] >>
+endobj
+9349 0 obj
+<< /D [ 9324 0 R /XYZ 81.077 517.839 null ] >>
+endobj
+9350 0 obj
+<< /D [ 9324 0 R /XYZ 81.077 506.881 null ] >>
+endobj
+9351 0 obj
+<< /D [ 9324 0 R /XYZ 81.077 464.157 null ] >>
+endobj
+9352 0 obj
+<< /D [ 9324 0 R /XYZ 81.077 453.198 null ] >>
+endobj
+9353 0 obj
+<< /D [ 9324 0 R /XYZ 81.077 442.239 null ] >>
+endobj
+9354 0 obj
+<< /D [ 9324 0 R /XYZ 81.077 431.281 null ] >>
+endobj
+9355 0 obj
+<< /D [ 9324 0 R /XYZ 81.077 420.322 null ] >>
+endobj
+9356 0 obj
+<< /D [ 9324 0 R /XYZ 81.077 409.363 null ] >>
+endobj
+9357 0 obj
+<< /D [ 9324 0 R /XYZ 81.077 398.404 null ] >>
+endobj
+121 0 obj
+<< /D [ 9324 0 R /XYZ 79.37 375.025 null ] >>
+endobj
+9358 0 obj
+<< /D [ 9324 0 R /XYZ 81.077 306.696 null ] >>
+endobj
+9359 0 obj
+<< /D [ 9324 0 R /XYZ 81.077 295.737 null ] >>
+endobj
+9360 0 obj
+<< /D [ 9324 0 R /XYZ 81.077 284.778 null ] >>
+endobj
+9361 0 obj
+<< /D [ 9324 0 R /XYZ 81.077 244.961 null ] >>
+endobj
+9362 0 obj
+<< /D [ 9324 0 R /XYZ 81.077 234.002 null ] >>
+endobj
+9363 0 obj
+<< /D [ 9324 0 R /XYZ 81.077 223.043 null ] >>
+endobj
+9364 0 obj
+<< /D [ 9324 0 R /XYZ 81.077 173.246 null ] >>
+endobj
+9365 0 obj
+<< /D [ 9324 0 R /XYZ 81.077 162.287 null ] >>
+endobj
+125 0 obj
+<< /D [ 9324 0 R /XYZ 79.37 137.663 null ] >>
+endobj
+9323 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F72 187 0 R /F70 185 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+9368 0 obj
+<< /Filter /FlateDecode /Length 2341 >>
+stream
+xڵZ[o}ϯ0Ї;
+'a[uebۓLCx%]3̑G`3;c9KUejMmfѾx_dޱm;6l鮍?Ξ98L֡YIJ'GO$0v=`"_~>M05>彮*[h~:flA᣿k;(RrLFUczN\B!M]8J3<K8͉ rQ̭ɨ1 0 [닔HXx# a}9Uv:81̐ 68ޮo:{hIV\hZRWjy[y,ed"#x >b7& ^A=П}r4 3JfO O!%GʛtP2Q8<8-^]E1ld"N~h%I%8V<>$r#񤧅ba5^Uq,}iK񲤎ccmy:qI/!ؔ dl6w]nu+z\bt{~Gľz-ƽęG?@L!u&qT}SW$Qjz֚T8ZsE0;&@G--ڞA?cƫ!K rjy]f}\ߜodӷfh /׀A; \l(;|w117pd'a736L x!A 䭕AuTڒ!5y֥]~g,ϷqMy
+jTZ<2_ 6 ҳeLɏ`hdv+0Q]f6Ef}.2!Ip$tW–4Pڧԥ.w] ZeQAq <}Ic>YAr>z_D쑹#wG2zL#ɧ¢b{CH>£J
+^CmK 3'&1Ũ\cԌ:#X!$Rh1#$1g=7Lu( d/T\23:QQ%}}Juy؂7i]U넰ܫu݈kŨA(K= TGC> R[KTX/C{ J'7KEBmS
+]VR{_lwoe[ ҕ nԂQK7
+endstream
+endobj
+9367 0 obj
+<< /Type /Page /Contents 9368 0 R /Resources 9366 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 9414 0 R >>
+endobj
+9369 0 obj
+<< /D [ 9367 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+9370 0 obj
+<< /D [ 9367 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+9371 0 obj
+<< /D [ 9367 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+9372 0 obj
+<< /D [ 9367 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+9373 0 obj
+<< /D [ 9367 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+9374 0 obj
+<< /D [ 9367 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+9375 0 obj
+<< /D [ 9367 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+9376 0 obj
+<< /D [ 9367 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+9377 0 obj
+<< /D [ 9367 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+9378 0 obj
+<< /D [ 9367 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+9379 0 obj
+<< /D [ 9367 0 R /XYZ 81.077 602.456 null ] >>
+endobj
+9380 0 obj
+<< /D [ 9367 0 R /XYZ 81.077 591.497 null ] >>
+endobj
+9381 0 obj
+<< /D [ 9367 0 R /XYZ 81.077 580.538 null ] >>
+endobj
+9382 0 obj
+<< /D [ 9367 0 R /XYZ 81.077 539.691 null ] >>
+endobj
+9383 0 obj
+<< /D [ 9367 0 R /XYZ 81.077 528.732 null ] >>
+endobj
+9384 0 obj
+<< /D [ 9367 0 R /XYZ 81.077 517.773 null ] >>
+endobj
+9385 0 obj
+<< /D [ 9367 0 R /XYZ 81.077 506.814 null ] >>
+endobj
+9386 0 obj
+<< /D [ 9367 0 R /XYZ 81.077 495.855 null ] >>
+endobj
+9387 0 obj
+<< /D [ 9367 0 R /XYZ 81.077 484.896 null ] >>
+endobj
+9388 0 obj
+<< /D [ 9367 0 R /XYZ 81.077 456.005 null ] >>
+endobj
+9389 0 obj
+<< /D [ 9367 0 R /XYZ 81.077 445.046 null ] >>
+endobj
+9390 0 obj
+<< /D [ 9367 0 R /XYZ 81.077 434.087 null ] >>
+endobj
+9391 0 obj
+<< /D [ 9367 0 R /XYZ 81.077 357.375 null ] >>
+endobj
+9392 0 obj
+<< /D [ 9367 0 R /XYZ 81.077 346.416 null ] >>
+endobj
+9393 0 obj
+<< /D [ 9367 0 R /XYZ 81.077 335.457 null ] >>
+endobj
+9394 0 obj
+<< /D [ 9367 0 R /XYZ 81.077 324.498 null ] >>
+endobj
+9395 0 obj
+<< /D [ 9367 0 R /XYZ 81.077 313.539 null ] >>
+endobj
+9396 0 obj
+<< /D [ 9367 0 R /XYZ 81.077 302.58 null ] >>
+endobj
+9397 0 obj
+<< /D [ 9367 0 R /XYZ 81.077 291.621 null ] >>
+endobj
+9398 0 obj
+<< /D [ 9367 0 R /XYZ 81.077 280.662 null ] >>
+endobj
+9399 0 obj
+<< /D [ 9367 0 R /XYZ 81.077 269.703 null ] >>
+endobj
+9400 0 obj
+<< /D [ 9367 0 R /XYZ 81.077 258.745 null ] >>
+endobj
+9401 0 obj
+<< /D [ 9367 0 R /XYZ 81.077 247.786 null ] >>
+endobj
+9402 0 obj
+<< /D [ 9367 0 R /XYZ 81.077 236.827 null ] >>
+endobj
+9403 0 obj
+<< /D [ 9367 0 R /XYZ 81.077 225.868 null ] >>
+endobj
+9404 0 obj
+<< /D [ 9367 0 R /XYZ 81.077 214.909 null ] >>
+endobj
+9405 0 obj
+<< /D [ 9367 0 R /XYZ 81.077 203.95 null ] >>
+endobj
+9406 0 obj
+<< /D [ 9367 0 R /XYZ 81.077 192.991 null ] >>
+endobj
+9407 0 obj
+<< /D [ 9367 0 R /XYZ 81.077 152.144 null ] >>
+endobj
+9408 0 obj
+<< /D [ 9367 0 R /XYZ 81.077 141.185 null ] >>
+endobj
+9409 0 obj
+<< /D [ 9367 0 R /XYZ 81.077 130.226 null ] >>
+endobj
+9410 0 obj
+<< /D [ 9367 0 R /XYZ 81.077 119.268 null ] >>
+endobj
+9411 0 obj
+<< /D [ 9367 0 R /XYZ 81.077 108.309 null ] >>
+endobj
+9412 0 obj
+<< /D [ 9367 0 R /XYZ 81.077 97.35 null ] >>
+endobj
+9413 0 obj
+<< /D [ 9367 0 R /XYZ 81.077 86.391 null ] >>
+endobj
+9366 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F20 186 0 R /F19 184 0 R /F70 185 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+9418 0 obj
+<< /Filter /FlateDecode /Length 2274 >>
+stream
+xZKۺϯ0HJ[tn]@0[ؒ+ə=GޢD4ŏ!ϋ.?-?|Wlф -$j$AXaL3-na,42R2=b&F?ƏMU?bvzD/T]֭?g
+S)(Ȁ%9)8pe><$E 4"St]Wntѩ #uYuc~ <L/U,j&-XD7n X0 ۤ,$O$wk҂E? I4f&-XDh˾ɷb/8
+I6:ڴ0_Z7ZScD7B)vi#B8RrX:-bLo B214S)4XǨu,WݩI[5t yUqOlѺ '8l%Ot A4a)}e$+?Gݬm7?&0$ݦ+7{bD_!3xX.XW{hjەo-D[¾#f*z~Z Zp=;/cL #XK.~.dH)!yN zsS BgZcP @ g!cl~Q۲2Zrs|p~vSi4Aե ?n2dlPI*8!xϟ>}1 M/Vakh2.|㯣Ma1HaXt>#&(Hy}U.jh!U* 6巫꣔#-h}u(xhMϤo) &?޺}Y}'X{Etu$8or:.1<CjдvjsAU9)ҪJ2c̨ƳcSwjxɲZYv~Dyl;JpW3^4^*>Ri(5F2(TcKF`Kz.c5hI8/.YQI jSmȓyC vLBGCv Gȋ6LyjWG4O0&,& ˮ>iS^Ae4K#g<a%-w]IHP"dA͆[>UM-W-˗D~a{ul6]Kdq] ٣qQȐa[c™t}'gy]HCY}*<7Sޅi{㽅~wXy,(GbfFy."pf",,I i#dȮ-m} MBuB8Ax!TŷΛ,e!}=~Hdkeb8(CzS$aEI*.#tUP9 )2'8ȎVnOݲ%ݯmq_@iGWem _,Ic~_CIa~~r M)zפ̾Rg^7βٞ&>>'0TxY)" Ѳ|G^p3|-jFr4jTWujRIxyIDUHGJp]:k|޿ >"$Ϣ/#n苊ۿ%lLwf8f2T&b=N6K>`Ћ_7voz3l]¼ZUf#pe<8w %C}H>Eh+~ہ]lſ~b8L7 ,b|Y,B?iezSeL8+S𪸞 (cѴsWNL.y1VxP(ڂr۳m-)
+ɶUcLdlc`?L
+Wsh
+:j۫G>>p<+땼= o5IU O 6 )>zoIyI~>ѣL<~ѓFC/IhMo;'C%JIR5#|%6] p(U rE|^[
+endstream
+endobj
+9417 0 obj
+<< /Type /Page /Contents 9418 0 R /Resources 9416 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 9414 0 R /Annots 9457 0 R >>
+endobj
+9457 0 obj
+[ 9415 0 R ]
+endobj
+9415 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 89.997 423.245 101.952 433.449 ]/A << /S /GoTo /D (section.0.13) >> >>
+endobj
+9419 0 obj
+<< /D [ 9417 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+9420 0 obj
+<< /D [ 9417 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+9421 0 obj
+<< /D [ 9417 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+9422 0 obj
+<< /D [ 9417 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+9423 0 obj
+<< /D [ 9417 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+9424 0 obj
+<< /D [ 9417 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+9425 0 obj
+<< /D [ 9417 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+9426 0 obj
+<< /D [ 9417 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+9427 0 obj
+<< /D [ 9417 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+9428 0 obj
+<< /D [ 9417 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+9429 0 obj
+<< /D [ 9417 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+9430 0 obj
+<< /D [ 9417 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+9431 0 obj
+<< /D [ 9417 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+9432 0 obj
+<< /D [ 9417 0 R /XYZ 81.077 637.325 null ] >>
+endobj
+9433 0 obj
+<< /D [ 9417 0 R /XYZ 81.077 626.366 null ] >>
+endobj
+9434 0 obj
+<< /D [ 9417 0 R /XYZ 81.077 615.407 null ] >>
+endobj
+9435 0 obj
+<< /D [ 9417 0 R /XYZ 81.077 604.448 null ] >>
+endobj
+9436 0 obj
+<< /D [ 9417 0 R /XYZ 81.077 593.489 null ] >>
+endobj
+9437 0 obj
+<< /D [ 9417 0 R /XYZ 81.077 582.53 null ] >>
+endobj
+9438 0 obj
+<< /D [ 9417 0 R /XYZ 81.077 571.571 null ] >>
+endobj
+9439 0 obj
+<< /D [ 9417 0 R /XYZ 81.077 560.613 null ] >>
+endobj
+9440 0 obj
+<< /D [ 9417 0 R /XYZ 81.077 549.654 null ] >>
+endobj
+129 0 obj
+<< /D [ 9417 0 R /XYZ 79.37 530.441 null ] >>
+endobj
+9441 0 obj
+<< /D [ 9417 0 R /XYZ 81.077 392.664 null ] >>
+endobj
+9442 0 obj
+<< /D [ 9417 0 R /XYZ 81.077 348.096 null ] >>
+endobj
+9443 0 obj
+<< /D [ 9417 0 R /XYZ 81.077 305.667 null ] >>
+endobj
+9444 0 obj
+<< /D [ 9417 0 R /XYZ 81.077 294.708 null ] >>
+endobj
+9445 0 obj
+<< /D [ 9417 0 R /XYZ 81.077 283.749 null ] >>
+endobj
+9446 0 obj
+<< /D [ 9417 0 R /XYZ 81.077 272.791 null ] >>
+endobj
+9447 0 obj
+<< /D [ 9417 0 R /XYZ 81.077 261.832 null ] >>
+endobj
+9448 0 obj
+<< /D [ 9417 0 R /XYZ 81.077 234.64 null ] >>
+endobj
+9449 0 obj
+<< /D [ 9417 0 R /XYZ 81.077 223.681 null ] >>
+endobj
+9450 0 obj
+<< /D [ 9417 0 R /XYZ 81.077 184.534 null ] >>
+endobj
+9451 0 obj
+<< /D [ 9417 0 R /XYZ 81.077 173.575 null ] >>
+endobj
+9452 0 obj
+<< /D [ 9417 0 R /XYZ 81.077 122.473 null ] >>
+endobj
+9453 0 obj
+<< /D [ 9417 0 R /XYZ 81.077 111.514 null ] >>
+endobj
+9454 0 obj
+<< /D [ 9417 0 R /XYZ 81.077 100.555 null ] >>
+endobj
+9455 0 obj
+<< /D [ 9417 0 R /XYZ 81.077 89.596 null ] >>
+endobj
+9456 0 obj
+<< /D [ 9417 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+133 0 obj
+<< /D [ 9417 0 R /XYZ 79.37 67.98 null ] >>
+endobj
+9416 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F72 187 0 R /F19 184 0 R /F20 186 0 R /F70 185 0 R /F76 318 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+9460 0 obj
+<< /Filter /FlateDecode /Length 2679 >>
+stream
+xڥZo8~_a/6a_e`{` CX8[r%I)̾!?3ߐ&hݻ6phB'IJx2I"")?~녻Ro{ѳJo]6yaʦktq:i:IIXAbpwbeYtN
+AX*P.>}Z(EQ`<&QL^
+<l5bD1/RZx=o6iʈd͗HF,Q G{
+C#X0E:|-҄tDijO:DZ-lSN⧣Uy,yx6OW g";pGi5M
+a28o6tp!7hj+37 UB?u3_I>W2"A\2LQoW<Uu^mŷgt*`<$J{U]@y(+)UtT"ʊƞФwJs_޲v kA^Aa]i@բ_ux^~A:1dт#|E\zG/x]pw܍i^aׄAIq?q-<䪏 ",&y? XB $#p[6srȷlrQq|.7ܥlrݩ2)؇d(gO(31d"<˓;ѳ(tZ.3/L&bH ;M7.'1$D&idxVMv&_?=iVsIIJ2
+K
+aDiO$ t8؜iJa/Y,O~t4hV?fӏbIGSRFY =c{W";WfQ]5\dɰ(Iw'z ͛VD$$dȕ%Ci`I\+Xe"5C8 @.s_:xǭq BZʄ?E.Ac9̇n9BlhSwjo+N8T}$yS?˿_SlVOc
+endstream
+endobj
+9459 0 obj
+<< /Type /Page /Contents 9460 0 R /Resources 9458 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 9414 0 R >>
+endobj
+9461 0 obj
+<< /D [ 9459 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+9462 0 obj
+<< /D [ 9459 0 R /XYZ 81.077 619.932 null ] >>
+endobj
+9463 0 obj
+<< /D [ 9459 0 R /XYZ 81.077 608.973 null ] >>
+endobj
+9464 0 obj
+<< /D [ 9459 0 R /XYZ 81.077 598.014 null ] >>
+endobj
+9465 0 obj
+<< /D [ 9459 0 R /XYZ 81.077 587.055 null ] >>
+endobj
+9466 0 obj
+<< /D [ 9459 0 R /XYZ 81.077 576.096 null ] >>
+endobj
+9467 0 obj
+<< /D [ 9459 0 R /XYZ 81.077 527.279 null ] >>
+endobj
+9468 0 obj
+<< /D [ 9459 0 R /XYZ 81.077 516.32 null ] >>
+endobj
+9469 0 obj
+<< /D [ 9459 0 R /XYZ 81.077 505.362 null ] >>
+endobj
+9470 0 obj
+<< /D [ 9459 0 R /XYZ 81.077 494.403 null ] >>
+endobj
+9471 0 obj
+<< /D [ 9459 0 R /XYZ 81.077 447.578 null ] >>
+endobj
+9472 0 obj
+<< /D [ 9459 0 R /XYZ 81.077 436.619 null ] >>
+endobj
+9473 0 obj
+<< /D [ 9459 0 R /XYZ 81.077 425.66 null ] >>
+endobj
+9474 0 obj
+<< /D [ 9459 0 R /XYZ 81.077 414.702 null ] >>
+endobj
+9475 0 obj
+<< /D [ 9459 0 R /XYZ 81.077 403.743 null ] >>
+endobj
+9476 0 obj
+<< /D [ 9459 0 R /XYZ 81.077 392.784 null ] >>
+endobj
+9477 0 obj
+<< /D [ 9459 0 R /XYZ 81.077 381.825 null ] >>
+endobj
+9478 0 obj
+<< /D [ 9459 0 R /XYZ 81.077 370.866 null ] >>
+endobj
+9479 0 obj
+<< /D [ 9459 0 R /XYZ 81.077 359.907 null ] >>
+endobj
+9480 0 obj
+<< /D [ 9459 0 R /XYZ 81.077 348.948 null ] >>
+endobj
+9481 0 obj
+<< /D [ 9459 0 R /XYZ 81.077 337.989 null ] >>
+endobj
+9482 0 obj
+<< /D [ 9459 0 R /XYZ 81.077 327.03 null ] >>
+endobj
+9483 0 obj
+<< /D [ 9459 0 R /XYZ 81.077 316.071 null ] >>
+endobj
+9484 0 obj
+<< /D [ 9459 0 R /XYZ 81.077 305.113 null ] >>
+endobj
+9485 0 obj
+<< /D [ 9459 0 R /XYZ 81.077 294.154 null ] >>
+endobj
+9486 0 obj
+<< /D [ 9459 0 R /XYZ 81.077 265.262 null ] >>
+endobj
+9487 0 obj
+<< /D [ 9459 0 R /XYZ 81.077 254.303 null ] >>
+endobj
+9488 0 obj
+<< /D [ 9459 0 R /XYZ 81.077 243.344 null ] >>
+endobj
+9489 0 obj
+<< /D [ 9459 0 R /XYZ 81.077 232.385 null ] >>
+endobj
+9490 0 obj
+<< /D [ 9459 0 R /XYZ 81.077 221.426 null ] >>
+endobj
+9491 0 obj
+<< /D [ 9459 0 R /XYZ 81.077 210.467 null ] >>
+endobj
+9492 0 obj
+<< /D [ 9459 0 R /XYZ 81.077 199.509 null ] >>
+endobj
+9493 0 obj
+<< /D [ 9459 0 R /XYZ 81.077 188.55 null ] >>
+endobj
+9494 0 obj
+<< /D [ 9459 0 R /XYZ 81.077 177.591 null ] >>
+endobj
+9495 0 obj
+<< /D [ 9459 0 R /XYZ 81.077 166.632 null ] >>
+endobj
+9496 0 obj
+<< /D [ 9459 0 R /XYZ 81.077 155.673 null ] >>
+endobj
+9497 0 obj
+<< /D [ 9459 0 R /XYZ 81.077 144.714 null ] >>
+endobj
+9498 0 obj
+<< /D [ 9459 0 R /XYZ 81.077 115.822 null ] >>
+endobj
+9499 0 obj
+<< /D [ 9459 0 R /XYZ 81.077 104.863 null ] >>
+endobj
+9500 0 obj
+<< /D [ 9459 0 R /XYZ 81.077 93.905 null ] >>
+endobj
+9501 0 obj
+<< /D [ 9459 0 R /XYZ 81.077 82.946 null ] >>
+endobj
+9458 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F72 187 0 R /F19 184 0 R /F20 186 0 R /F76 318 0 R /F73 189 0 R /F69 183 0 R /F26 662 0 R /F78 556 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+9504 0 obj
+<< /Filter /FlateDecode /Length 1570 >>
+stream
+xYnF}Wȋ _ H 
+4}ߚE"]rIi+;㼘{93k:ɛ~oN~:94b"L":affb4#TzJO5<R%Nkac0()AcB}HDX(J偅8/Hџ{-L<noep6E(EM[¬ 4FnimOWoVxRU #ҥ"_gnV\="{:e"og,2^mՄkl28btمmVyvj1";b#bO̡6|[\WUˋ2IbKpqZ[ݒhʚldRj͉ 3F^ϚUT77{_)F %+ PLxoHXBI6w<6 \B96G!F,Q._s"pJ@Rt\,oy= 5DP4͑B6
+g-Ϊ}UO̽<Ao}!@vTjAY|,ka<p#ͶEn6:DU.Mȼ7q~qYk0umv8mNЉ;{VN `jprFz-%LANݓz[ʇ o^%D}T6ƌT9ANPtjC_U}/|`ئ\PgP^FR=xL 9)r6*84z$ƒp(Nbp'S^|G* 1H$+A?7~o&q©Y1 X)8LЭ}}*~UXΜ_27q
+endstream
+endobj
+9503 0 obj
+<< /Type /Page /Contents 9504 0 R /Resources 9502 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 9414 0 R >>
+endobj
+9505 0 obj
+<< /D [ 9503 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+9506 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+9507 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+9508 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+9509 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+9510 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+9511 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+9512 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+9513 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+9514 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+9515 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+9516 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+9517 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+9518 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 637.325 null ] >>
+endobj
+9519 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 626.366 null ] >>
+endobj
+9520 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 615.407 null ] >>
+endobj
+137 0 obj
+<< /D [ 9503 0 R /XYZ 79.37 603.9 null ] >>
+endobj
+9521 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 538.546 null ] >>
+endobj
+9522 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 527.587 null ] >>
+endobj
+9523 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 516.628 null ] >>
+endobj
+9524 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 505.669 null ] >>
+endobj
+9525 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 494.71 null ] >>
+endobj
+9526 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 483.751 null ] >>
+endobj
+9527 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 472.792 null ] >>
+endobj
+9528 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 461.834 null ] >>
+endobj
+9529 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 450.875 null ] >>
+endobj
+9530 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 439.916 null ] >>
+endobj
+9531 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 428.957 null ] >>
+endobj
+9532 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 417.998 null ] >>
+endobj
+9533 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 407.039 null ] >>
+endobj
+9534 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 396.08 null ] >>
+endobj
+9535 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 385.121 null ] >>
+endobj
+9536 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 374.162 null ] >>
+endobj
+9537 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 363.203 null ] >>
+endobj
+9538 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 352.244 null ] >>
+endobj
+9539 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 341.286 null ] >>
+endobj
+9540 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 330.327 null ] >>
+endobj
+9541 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 319.368 null ] >>
+endobj
+9542 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 308.409 null ] >>
+endobj
+9543 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 297.45 null ] >>
+endobj
+9544 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 286.491 null ] >>
+endobj
+9545 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 275.532 null ] >>
+endobj
+9546 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 264.573 null ] >>
+endobj
+9547 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 253.614 null ] >>
+endobj
+9548 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 242.655 null ] >>
+endobj
+9549 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 196.827 null ] >>
+endobj
+9550 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 185.868 null ] >>
+endobj
+9551 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 174.91 null ] >>
+endobj
+9552 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 163.951 null ] >>
+endobj
+9553 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 152.992 null ] >>
+endobj
+9554 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 142.033 null ] >>
+endobj
+9555 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 131.074 null ] >>
+endobj
+9556 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 120.115 null ] >>
+endobj
+9557 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 109.156 null ] >>
+endobj
+9558 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 98.197 null ] >>
+endobj
+9559 0 obj
+<< /D [ 9503 0 R /XYZ 81.077 87.238 null ] >>
+endobj
+9502 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F72 187 0 R /F19 184 0 R /F20 186 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+9562 0 obj
+<< /Filter /FlateDecode /Length 1884 >>
+stream
+xڵZ]o6ϯ8/fߢ2lh׭ 0VYreIW}E8ɍi|xsxx>(刎~<H?}wze"F >:8b0hY2J4#T|zloNk=}ӑ!„`&(aJ这M/'jnԉh~i{ɞS>{ٺ2bS~Zܺ'H0)<m?esC^vl V7|̮N}u~>k:z{O` \jqZ7)Մked1fi߹'A s:cMpk@*"h)8m,}Zl4}Ͽ~i5jg$2 v!:d^OK[hj\c0rq120KkNi+;bdu~y˿@ňL|!/[4=OP)Bes{npC4>E2CT:"#Wh
+4!Z.L)1zlVw醦^٪oPl#t*rMwV n6m2yşvCθ(08CtmR"I2x n[\n­=jӂ5š| /$p?u'F/m^o}tpF6X$#!\%mf
+~L\EXgWj۲yQ<27T۞Y0kE||3zF2;~8B;.} m^p1%8,*{uH8 U
+DEDXlv7hlB'f"ErTR-W{UEhgȵ=gO֧bSy੔\x$%ӎЯѲ9X>N*TmspeT%ͪO%D މkBU}͝h7+91>G9DߋsׇpiP#iʺpuy>VKW[iY`
+
+GT둤$M֫A?Jş
+endstream
+endobj
+9561 0 obj
+<< /Type /Page /Contents 9562 0 R /Resources 9560 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 9414 0 R >>
+endobj
+9563 0 obj
+<< /D [ 9561 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+9564 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+9565 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+9566 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+9567 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+9568 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+9569 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+9570 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+9571 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+9572 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+9573 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+9574 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+9575 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+9576 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 637.325 null ] >>
+endobj
+9577 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 626.366 null ] >>
+endobj
+9578 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 615.407 null ] >>
+endobj
+9579 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 604.448 null ] >>
+endobj
+9580 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 593.489 null ] >>
+endobj
+9581 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 582.53 null ] >>
+endobj
+9582 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 571.571 null ] >>
+endobj
+9583 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 560.613 null ] >>
+endobj
+9584 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 549.654 null ] >>
+endobj
+9585 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 523.751 null ] >>
+endobj
+9586 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 512.792 null ] >>
+endobj
+9587 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 501.833 null ] >>
+endobj
+9588 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 490.874 null ] >>
+endobj
+9589 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 479.915 null ] >>
+endobj
+9590 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 468.956 null ] >>
+endobj
+9591 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 457.997 null ] >>
+endobj
+9592 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 447.038 null ] >>
+endobj
+9593 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 436.08 null ] >>
+endobj
+9594 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 425.121 null ] >>
+endobj
+9595 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 414.162 null ] >>
+endobj
+9596 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 403.203 null ] >>
+endobj
+9597 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 392.244 null ] >>
+endobj
+9598 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 381.285 null ] >>
+endobj
+9599 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 370.326 null ] >>
+endobj
+9600 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 359.367 null ] >>
+endobj
+9601 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 348.408 null ] >>
+endobj
+9602 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 337.449 null ] >>
+endobj
+9603 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 326.49 null ] >>
+endobj
+9604 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 315.532 null ] >>
+endobj
+9605 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 304.573 null ] >>
+endobj
+9606 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 288.632 null ] >>
+endobj
+9607 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 277.674 null ] >>
+endobj
+9608 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 266.715 null ] >>
+endobj
+9609 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 250.774 null ] >>
+endobj
+9610 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 239.816 null ] >>
+endobj
+9611 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 228.857 null ] >>
+endobj
+9612 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 217.898 null ] >>
+endobj
+9613 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 190.002 null ] >>
+endobj
+9614 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 179.043 null ] >>
+endobj
+9615 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 168.085 null ] >>
+endobj
+9616 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 157.126 null ] >>
+endobj
+9617 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 146.167 null ] >>
+endobj
+9618 0 obj
+<< /D [ 9561 0 R /XYZ 81.077 135.208 null ] >>
+endobj
+9560 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F79 668 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+9621 0 obj
+<< /Filter /FlateDecode /Length 2167 >>
+stream
+xڭZ[o~_a /.EN7h
+t}鴂02Jf߾Ф#ۢg˔>xwHjg>zugiI%>!pL$x2K$AXfJnv &{ b^ Q b16oMw^^Q57<4Ҭˇ7YS基/yw^.*b" 6
+:
+ BCՉYRlt|"i?ǝ B\}9ǼrV%~c~f<W"FRnaBB)7'H*BL R"9>Osy*foTqJa
+*/4|&Aˢ>rɊ(H
+zBN9ҹKec֝y֯^VN8ס>"Pm?jxuY8CI'Kޯ
+~6?!ܘv*)M6̅mS&SlWkS1=dqYSa}9$DvH8mGZ(ZI$ `:0(e,
+ M,?s.{(
+b3/[74 $)A)AbT/s -!ͦM1Jք:M67ހ:}.ͪU5˴YgdoO ~]8hkfڬ1ƍU(hq
+h+ VMƼ_<<'}K+HMI㗕mN&έ[ZbkGMIm4 '#ʉV,DǛ sis V!$i$<me"A"I$U%FQnسbtT&&4
+bQ7@=Ju:ťDX-\rK
+Bh̲1aw@p@ou`+RQIx5s](@OhZ08rn 'ѓz%aݪ$Nx<A-䱢3;i>z
+D<m~##H7xo `qwͣ
+J4^ǁ(#=gץtxf
+endstream
+endobj
+9620 0 obj
+<< /Type /Page /Contents 9621 0 R /Resources 9619 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 9414 0 R >>
+endobj
+9622 0 obj
+<< /D [ 9620 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+9623 0 obj
+<< /D [ 9620 0 R /XYZ 81.077 625.801 null ] >>
+endobj
+9624 0 obj
+<< /D [ 9620 0 R /XYZ 81.077 614.842 null ] >>
+endobj
+9625 0 obj
+<< /D [ 9620 0 R /XYZ 81.077 603.883 null ] >>
+endobj
+9626 0 obj
+<< /D [ 9620 0 R /XYZ 81.077 592.924 null ] >>
+endobj
+9627 0 obj
+<< /D [ 9620 0 R /XYZ 81.077 581.965 null ] >>
+endobj
+9628 0 obj
+<< /D [ 9620 0 R /XYZ 81.077 571.006 null ] >>
+endobj
+9629 0 obj
+<< /D [ 9620 0 R /XYZ 81.077 560.048 null ] >>
+endobj
+9630 0 obj
+<< /D [ 9620 0 R /XYZ 81.077 549.089 null ] >>
+endobj
+9631 0 obj
+<< /D [ 9620 0 R /XYZ 81.077 538.13 null ] >>
+endobj
+9632 0 obj
+<< /D [ 9620 0 R /XYZ 81.077 527.171 null ] >>
+endobj
+9633 0 obj
+<< /D [ 9620 0 R /XYZ 81.077 516.212 null ] >>
+endobj
+9634 0 obj
+<< /D [ 9620 0 R /XYZ 81.077 505.253 null ] >>
+endobj
+9635 0 obj
+<< /D [ 9620 0 R /XYZ 81.077 494.294 null ] >>
+endobj
+9636 0 obj
+<< /D [ 9620 0 R /XYZ 81.077 436.161 null ] >>
+endobj
+9637 0 obj
+<< /D [ 9620 0 R /XYZ 81.077 425.202 null ] >>
+endobj
+9638 0 obj
+<< /D [ 9620 0 R /XYZ 81.077 414.243 null ] >>
+endobj
+9639 0 obj
+<< /D [ 9620 0 R /XYZ 81.077 398.626 null ] >>
+endobj
+9640 0 obj
+<< /D [ 9620 0 R /XYZ 81.077 387.667 null ] >>
+endobj
+9641 0 obj
+<< /D [ 9620 0 R /XYZ 81.077 376.708 null ] >>
+endobj
+9642 0 obj
+<< /D [ 9620 0 R /XYZ 81.077 365.749 null ] >>
+endobj
+9643 0 obj
+<< /D [ 9620 0 R /XYZ 81.077 354.79 null ] >>
+endobj
+9644 0 obj
+<< /D [ 9620 0 R /XYZ 81.077 343.832 null ] >>
+endobj
+9645 0 obj
+<< /D [ 9620 0 R /XYZ 81.077 332.873 null ] >>
+endobj
+9646 0 obj
+<< /D [ 9620 0 R /XYZ 81.077 321.914 null ] >>
+endobj
+9647 0 obj
+<< /D [ 9620 0 R /XYZ 81.077 310.955 null ] >>
+endobj
+9648 0 obj
+<< /D [ 9620 0 R /XYZ 81.077 299.996 null ] >>
+endobj
+9649 0 obj
+<< /D [ 9620 0 R /XYZ 81.077 289.037 null ] >>
+endobj
+9650 0 obj
+<< /D [ 9620 0 R /XYZ 81.077 278.078 null ] >>
+endobj
+9651 0 obj
+<< /D [ 9620 0 R /XYZ 81.077 267.119 null ] >>
+endobj
+9652 0 obj
+<< /D [ 9620 0 R /XYZ 81.077 256.16 null ] >>
+endobj
+9653 0 obj
+<< /D [ 9620 0 R /XYZ 81.077 245.201 null ] >>
+endobj
+9654 0 obj
+<< /D [ 9620 0 R /XYZ 81.077 229.584 null ] >>
+endobj
+9655 0 obj
+<< /D [ 9620 0 R /XYZ 81.077 218.625 null ] >>
+endobj
+9656 0 obj
+<< /D [ 9620 0 R /XYZ 81.077 207.667 null ] >>
+endobj
+9657 0 obj
+<< /D [ 9620 0 R /XYZ 81.077 177.267 null ] >>
+endobj
+9658 0 obj
+<< /D [ 9620 0 R /XYZ 81.077 166.308 null ] >>
+endobj
+9659 0 obj
+<< /D [ 9620 0 R /XYZ 81.077 155.349 null ] >>
+endobj
+9660 0 obj
+<< /D [ 9620 0 R /XYZ 81.077 144.39 null ] >>
+endobj
+9661 0 obj
+<< /D [ 9620 0 R /XYZ 81.077 133.431 null ] >>
+endobj
+9662 0 obj
+<< /D [ 9620 0 R /XYZ 81.077 122.473 null ] >>
+endobj
+9663 0 obj
+<< /D [ 9620 0 R /XYZ 81.077 111.514 null ] >>
+endobj
+9664 0 obj
+<< /D [ 9620 0 R /XYZ 81.077 100.555 null ] >>
+endobj
+9665 0 obj
+<< /D [ 9620 0 R /XYZ 81.077 89.596 null ] >>
+endobj
+9666 0 obj
+<< /D [ 9620 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+9619 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F79 668 0 R /F20 186 0 R /F19 184 0 R /F26 662 0 R /F73 189 0 R /F69 183 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+9669 0 obj
+<< /Filter /FlateDecode /Length 1862 >>
+stream
+xڽZ[oF~ϯ@ iYFZ)Ԭڇ<V!k\v{x/!3s; U$~u|^ QH9Wn
+t*hEI`9 7s}W $R<tGD%x^r  %pD\tG4+#TUZygEhr[GEwJ4OIV-*bɲ³c!B;ݱL}s+~m?,3W1؎67O/YjǾSM|#>@$<zxi.㻻%N3pd+:VfK=P)uP=doxeʭ []pOA .*s>\&Ut#0Y70ws`ߜTJʟafu\զ_eYvSh.ҪT çtffȤR2Nn*aY#2M=eG֓URK\-a˛\"N*`0>knViYq˝ 8hP>Bjk0̟ᖺ\kF뼆g(v ].+ٜ# gzTαyIz40Fd'x 灻 s~T kVy_&{
+I5}#_sCSJ@Cgo|lBNtJw.#dE^zyκ3՝T4FD6Ccf}$96-v6JQw>_]fpP)ʭ=4RJ<z&;
+縅pm"&9\ l4gF dDYTw6f(у+.K1`$6p2e>-j˕L@}h0xgvJm#TVV*za|U$%ٛbgOq_يTF6[As2/u~_yU>3P)8~wanÊv+´UxQC;'57$J" UĎR_+$.V'qסH9NXs-BND0
+wH\4<bD`{fM6;qCJD}!|Hᶾm+N a, G>zp)ul&"Lh]>g5Au܅kzqXhC6\71s1zNkӱiA&4RFvj
+j:2Dz[49pwKd3Pmt p~u R ҅ShJoL2yiL=]C7Tn
+p1CQسhTC,*oTqv8[6Ya;$a}WIܞh;ic-Pbs4mF *8+6h(\/YDP=TS#^] k\C㷞6uO*R;3ߕ,/ř
+4EY,: 7"C\)J^}4Q)y |KB,װWf
+endstream
+endobj
+9668 0 obj
+<< /Type /Page /Contents 9669 0 R /Resources 9667 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 9414 0 R >>
+endobj
+9670 0 obj
+<< /D [ 9668 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+9671 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+9672 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+9673 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+9674 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+9675 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+9676 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+9677 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 685.146 null ] >>
+endobj
+9678 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 674.187 null ] >>
+endobj
+9679 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 663.228 null ] >>
+endobj
+9680 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 652.269 null ] >>
+endobj
+9681 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 641.31 null ] >>
+endobj
+9682 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 630.351 null ] >>
+endobj
+9683 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 619.392 null ] >>
+endobj
+9684 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 608.433 null ] >>
+endobj
+9685 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 597.474 null ] >>
+endobj
+9686 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 586.515 null ] >>
+endobj
+9687 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 575.556 null ] >>
+endobj
+9688 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 564.598 null ] >>
+endobj
+9689 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 553.639 null ] >>
+endobj
+9690 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 542.68 null ] >>
+endobj
+9691 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 531.721 null ] >>
+endobj
+9692 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 520.762 null ] >>
+endobj
+9693 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 509.803 null ] >>
+endobj
+9694 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 498.844 null ] >>
+endobj
+9695 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 487.885 null ] >>
+endobj
+9696 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 476.926 null ] >>
+endobj
+9697 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 465.967 null ] >>
+endobj
+9698 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 455.009 null ] >>
+endobj
+9699 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 444.05 null ] >>
+endobj
+9700 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 433.091 null ] >>
+endobj
+9701 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 422.132 null ] >>
+endobj
+9702 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 411.173 null ] >>
+endobj
+9703 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 400.214 null ] >>
+endobj
+9704 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 389.255 null ] >>
+endobj
+9705 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 378.296 null ] >>
+endobj
+9706 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 367.337 null ] >>
+endobj
+9707 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 326.49 null ] >>
+endobj
+9708 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 315.532 null ] >>
+endobj
+9709 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 304.573 null ] >>
+endobj
+9710 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 293.614 null ] >>
+endobj
+9711 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 282.655 null ] >>
+endobj
+9712 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 271.696 null ] >>
+endobj
+9713 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 260.737 null ] >>
+endobj
+9714 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 249.778 null ] >>
+endobj
+9715 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 238.819 null ] >>
+endobj
+9716 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 227.86 null ] >>
+endobj
+9717 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 216.901 null ] >>
+endobj
+9718 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 205.943 null ] >>
+endobj
+9719 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 194.984 null ] >>
+endobj
+9720 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 184.025 null ] >>
+endobj
+9721 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 173.066 null ] >>
+endobj
+9722 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 162.107 null ] >>
+endobj
+9723 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 151.148 null ] >>
+endobj
+9724 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 140.189 null ] >>
+endobj
+9725 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 129.23 null ] >>
+endobj
+9726 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 118.271 null ] >>
+endobj
+9727 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 107.312 null ] >>
+endobj
+9728 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 96.354 null ] >>
+endobj
+9729 0 obj
+<< /D [ 9668 0 R /XYZ 81.077 85.395 null ] >>
+endobj
+9667 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+9732 0 obj
+<< /Filter /FlateDecode /Length 2140 >>
+stream
+xڵZKo8WŗHE
+8}+zm ­-5FhkcMRle{UYrlϵ7U1t8}.ۭY#^Ykx-bND3MX0D{淒bY5vW/g86Hʥ4~m-ƭM'&3RhڊٴYD =&T3"Y&R՗
+@ rq;@5Xp9`bwi&dkff`n neW3i(M|^.8,ϻ]\25ؼٶ/݆{#+}-ɢcK "XԊ[8)1̄p QBШV?o#hQ(=GG
+c}x%at^IR=O}+¯Jղ֛2/+ae!G[z!$ zw)8r!d ? x!&!f eO-jMwn#.һ Qon>dg{!+ݲOYU;;^}ά/GjCOhdHϭHLG7 LTևVYM/dݾ^db7!@aBT<_Ɂu#k@Rp2%{yVffzjvc^5}lH'$cԦ*H wkնxDPÉVFZ@lU
+=_bq>uȷqUha]{gb G-/V3
+EYmi/9O2OI,m}=v;Rx=g1qsq %UP
+կw}AeTCݔrgzuF!sڶ)ɻy}hУS&7@L =c{
+,dN8\;QQGN͒f+Ҧ|3է7\wDQKI"]Rũ=l j(<^XN) SǺ)Zɉt$HE>4A+j+sఊ%NHB?%Аh!04onGo iO!wkl&L/to)ޕvI%+& ӏ",P:vzz
+u[ƌ&ʌI]['EZg<eu:]{2Q}rC"FXDÉ!<unWՋuMdeLUCƎQl#@[pqyseزsc6$8`P!@Ñkб&q pnhO )= 9}g(!)1v@]/hk۲a?\+h9(E
+,H0Wq*42:2\ УFoUY<|%+ ϡO}6Nx#"֌
+#@ݧ쨟^EiH+9$ڷ!1!~gvZAk;X?a/Vu՟l g"?z
+endstream
+endobj
+9731 0 obj
+<< /Type /Page /Contents 9732 0 R /Resources 9730 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 9414 0 R >>
+endobj
+9733 0 obj
+<< /D [ 9731 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+9734 0 obj
+<< /D [ 9731 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+9735 0 obj
+<< /D [ 9731 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+9736 0 obj
+<< /D [ 9731 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+9737 0 obj
+<< /D [ 9731 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+9738 0 obj
+<< /D [ 9731 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+9739 0 obj
+<< /D [ 9731 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+9740 0 obj
+<< /D [ 9731 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+9741 0 obj
+<< /D [ 9731 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+9742 0 obj
+<< /D [ 9731 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+9743 0 obj
+<< /D [ 9731 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+9744 0 obj
+<< /D [ 9731 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+9745 0 obj
+<< /D [ 9731 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+9746 0 obj
+<< /D [ 9731 0 R /XYZ 81.077 637.325 null ] >>
+endobj
+9747 0 obj
+<< /D [ 9731 0 R /XYZ 81.077 626.366 null ] >>
+endobj
+9748 0 obj
+<< /D [ 9731 0 R /XYZ 81.077 585.519 null ] >>
+endobj
+9749 0 obj
+<< /D [ 9731 0 R /XYZ 81.077 574.56 null ] >>
+endobj
+9750 0 obj
+<< /D [ 9731 0 R /XYZ 81.077 563.601 null ] >>
+endobj
+9751 0 obj
+<< /D [ 9731 0 R /XYZ 81.077 552.642 null ] >>
+endobj
+9752 0 obj
+<< /D [ 9731 0 R /XYZ 81.077 499.84 null ] >>
+endobj
+9753 0 obj
+<< /D [ 9731 0 R /XYZ 81.077 488.882 null ] >>
+endobj
+9754 0 obj
+<< /D [ 9731 0 R /XYZ 81.077 477.923 null ] >>
+endobj
+9755 0 obj
+<< /D [ 9731 0 R /XYZ 81.077 466.964 null ] >>
+endobj
+9756 0 obj
+<< /D [ 9731 0 R /XYZ 81.077 456.005 null ] >>
+endobj
+9757 0 obj
+<< /D [ 9731 0 R /XYZ 81.077 445.046 null ] >>
+endobj
+9758 0 obj
+<< /D [ 9731 0 R /XYZ 81.077 434.087 null ] >>
+endobj
+9759 0 obj
+<< /D [ 9731 0 R /XYZ 81.077 405.195 null ] >>
+endobj
+9760 0 obj
+<< /D [ 9731 0 R /XYZ 81.077 394.236 null ] >>
+endobj
+9761 0 obj
+<< /D [ 9731 0 R /XYZ 81.077 383.278 null ] >>
+endobj
+9762 0 obj
+<< /D [ 9731 0 R /XYZ 81.077 372.319 null ] >>
+endobj
+9763 0 obj
+<< /D [ 9731 0 R /XYZ 81.077 361.36 null ] >>
+endobj
+9764 0 obj
+<< /D [ 9731 0 R /XYZ 81.077 350.401 null ] >>
+endobj
+9765 0 obj
+<< /D [ 9731 0 R /XYZ 81.077 339.442 null ] >>
+endobj
+9766 0 obj
+<< /D [ 9731 0 R /XYZ 81.077 292.618 null ] >>
+endobj
+9767 0 obj
+<< /D [ 9731 0 R /XYZ 81.077 281.659 null ] >>
+endobj
+9768 0 obj
+<< /D [ 9731 0 R /XYZ 81.077 270.7 null ] >>
+endobj
+9769 0 obj
+<< /D [ 9731 0 R /XYZ 81.077 259.741 null ] >>
+endobj
+9770 0 obj
+<< /D [ 9731 0 R /XYZ 81.077 248.782 null ] >>
+endobj
+9771 0 obj
+<< /D [ 9731 0 R /XYZ 81.077 237.823 null ] >>
+endobj
+9772 0 obj
+<< /D [ 9731 0 R /XYZ 81.077 226.864 null ] >>
+endobj
+9773 0 obj
+<< /D [ 9731 0 R /XYZ 81.077 215.905 null ] >>
+endobj
+9774 0 obj
+<< /D [ 9731 0 R /XYZ 81.077 204.946 null ] >>
+endobj
+9775 0 obj
+<< /D [ 9731 0 R /XYZ 81.077 193.987 null ] >>
+endobj
+9776 0 obj
+<< /D [ 9731 0 R /XYZ 81.077 183.028 null ] >>
+endobj
+9777 0 obj
+<< /D [ 9731 0 R /XYZ 81.077 172.07 null ] >>
+endobj
+9778 0 obj
+<< /D [ 9731 0 R /XYZ 81.077 161.111 null ] >>
+endobj
+9779 0 obj
+<< /D [ 9731 0 R /XYZ 81.077 150.152 null ] >>
+endobj
+9780 0 obj
+<< /D [ 9731 0 R /XYZ 81.077 139.193 null ] >>
+endobj
+9781 0 obj
+<< /D [ 9731 0 R /XYZ 81.077 128.234 null ] >>
+endobj
+9782 0 obj
+<< /D [ 9731 0 R /XYZ 81.077 117.275 null ] >>
+endobj
+9730 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+9785 0 obj
+<< /Filter /FlateDecode /Length 2075 >>
+stream
+xZ]o}ϯ0/TPAf}]#ʒGg&^J2%:ɶ/l4<L]rw⯳wFL$,|2[^0xNjl2[O~ZowĒHka`)1"
+ѿ2!<Ζqnv{yj㛛ISeUi/n$&9FB
+M?_Z1M/m$*w+M&]4}/E^$I+2D,CG:)8I =~8w/ >#3~<ORϳ*϶d4RJ/äFDެ] Cȵ AOw#8!W/&uOe?tWylS=#gmӮ"AB=@XC:mSqiw=k$o:s?׫ .e1f l*^$31>#>M!lX\h4w)D{_W >Iov~lXHIݬ'F^Ksj;=o7$~ Σ1ڙL_4_{Hc4oXP  aIպ:ͳ\Z5͡O<dUee3w
+W~PzKҸ`~L|B*on~ˊoj94ʾEZwi IeP#c9*V0As'Nq=ɷ?U"Y'{wy4
+Q _^q;MӢ4-jgfsTF(<FuFŐ!O{3FJ`Y<y7ʜ3I?^(#x ̫NR̀f]c۫zԷ6(-i&|Ckzﶻn@N٠=SÂ[YԡtiNw*4wǏ]cxmĚbGIkE"拴3
+endstream
+endobj
+9784 0 obj
+<< /Type /Page /Contents 9785 0 R /Resources 9783 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 9414 0 R >>
+endobj
+9786 0 obj
+<< /D [ 9784 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+9787 0 obj
+<< /D [ 9784 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+9788 0 obj
+<< /D [ 9784 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+9789 0 obj
+<< /D [ 9784 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+9790 0 obj
+<< /D [ 9784 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+9791 0 obj
+<< /D [ 9784 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+9792 0 obj
+<< /D [ 9784 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+9793 0 obj
+<< /D [ 9784 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+9794 0 obj
+<< /D [ 9784 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+9795 0 obj
+<< /D [ 9784 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+9796 0 obj
+<< /D [ 9784 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+9797 0 obj
+<< /D [ 9784 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+9798 0 obj
+<< /D [ 9784 0 R /XYZ 81.077 630.351 null ] >>
+endobj
+9799 0 obj
+<< /D [ 9784 0 R /XYZ 81.077 601.459 null ] >>
+endobj
+9800 0 obj
+<< /D [ 9784 0 R /XYZ 81.077 590.5 null ] >>
+endobj
+9801 0 obj
+<< /D [ 9784 0 R /XYZ 81.077 579.542 null ] >>
+endobj
+9802 0 obj
+<< /D [ 9784 0 R /XYZ 81.077 568.583 null ] >>
+endobj
+9803 0 obj
+<< /D [ 9784 0 R /XYZ 81.077 557.624 null ] >>
+endobj
+9804 0 obj
+<< /D [ 9784 0 R /XYZ 81.077 546.665 null ] >>
+endobj
+9805 0 obj
+<< /D [ 9784 0 R /XYZ 81.077 535.706 null ] >>
+endobj
+9806 0 obj
+<< /D [ 9784 0 R /XYZ 81.077 524.747 null ] >>
+endobj
+9807 0 obj
+<< /D [ 9784 0 R /XYZ 81.077 513.788 null ] >>
+endobj
+9808 0 obj
+<< /D [ 9784 0 R /XYZ 81.077 484.896 null ] >>
+endobj
+9809 0 obj
+<< /D [ 9784 0 R /XYZ 81.077 473.938 null ] >>
+endobj
+9810 0 obj
+<< /D [ 9784 0 R /XYZ 81.077 462.979 null ] >>
+endobj
+9811 0 obj
+<< /D [ 9784 0 R /XYZ 81.077 452.02 null ] >>
+endobj
+9812 0 obj
+<< /D [ 9784 0 R /XYZ 81.077 441.061 null ] >>
+endobj
+9813 0 obj
+<< /D [ 9784 0 R /XYZ 81.077 430.102 null ] >>
+endobj
+9814 0 obj
+<< /D [ 9784 0 R /XYZ 81.077 419.143 null ] >>
+endobj
+9815 0 obj
+<< /D [ 9784 0 R /XYZ 81.077 408.184 null ] >>
+endobj
+9816 0 obj
+<< /D [ 9784 0 R /XYZ 81.077 397.225 null ] >>
+endobj
+9817 0 obj
+<< /D [ 9784 0 R /XYZ 81.077 386.266 null ] >>
+endobj
+9818 0 obj
+<< /D [ 9784 0 R /XYZ 81.077 375.307 null ] >>
+endobj
+9819 0 obj
+<< /D [ 9784 0 R /XYZ 81.077 364.349 null ] >>
+endobj
+9820 0 obj
+<< /D [ 9784 0 R /XYZ 81.077 353.39 null ] >>
+endobj
+9821 0 obj
+<< /D [ 9784 0 R /XYZ 81.077 342.431 null ] >>
+endobj
+9822 0 obj
+<< /D [ 9784 0 R /XYZ 81.077 295.606 null ] >>
+endobj
+9823 0 obj
+<< /D [ 9784 0 R /XYZ 81.077 284.647 null ] >>
+endobj
+9824 0 obj
+<< /D [ 9784 0 R /XYZ 81.077 273.688 null ] >>
+endobj
+9825 0 obj
+<< /D [ 9784 0 R /XYZ 81.077 262.73 null ] >>
+endobj
+9826 0 obj
+<< /D [ 9784 0 R /XYZ 81.077 251.771 null ] >>
+endobj
+9827 0 obj
+<< /D [ 9784 0 R /XYZ 81.077 240.812 null ] >>
+endobj
+9828 0 obj
+<< /D [ 9784 0 R /XYZ 81.077 229.853 null ] >>
+endobj
+9829 0 obj
+<< /D [ 9784 0 R /XYZ 81.077 171.073 null ] >>
+endobj
+9830 0 obj
+<< /D [ 9784 0 R /XYZ 81.077 160.114 null ] >>
+endobj
+9831 0 obj
+<< /D [ 9784 0 R /XYZ 81.077 149.155 null ] >>
+endobj
+9832 0 obj
+<< /D [ 9784 0 R /XYZ 81.077 138.197 null ] >>
+endobj
+9833 0 obj
+<< /D [ 9784 0 R /XYZ 81.077 127.238 null ] >>
+endobj
+9834 0 obj
+<< /D [ 9784 0 R /XYZ 81.077 116.279 null ] >>
+endobj
+9835 0 obj
+<< /D [ 9784 0 R /XYZ 81.077 105.32 null ] >>
+endobj
+9836 0 obj
+<< /D [ 9784 0 R /XYZ 81.077 94.361 null ] >>
+endobj
+9837 0 obj
+<< /D [ 9784 0 R /XYZ 81.077 83.402 null ] >>
+endobj
+9783 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F26 662 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+9840 0 obj
+<< /Filter /FlateDecode /Length 2652 >>
+stream
+xڭZ[ۺ~ϯ0z,e
+4-}9) +u"K$gw=CR7jYLbx«_morVM]Wd%D$K;JiV)<~T?eS&OwMQoq=7>}:$M=mnꦲx7[tHK ^vLvb&L} aWoc:bV&'U1`D񶼢j1~Զ>Mrz̚o5{ao6>ͳC֤V2+G)gLmhweul],?#xϏ31K0Ĉ 6Hű̊hHMg,cKBY{"77f6q}" q0cN,MVdM6'TrAWBgDYl@67+ӯMNo@m5ػvplon>\FX~FGbT5">ㄜ `}H
+l@^r-kLmrXư@e,9*"%#{|Y@Ham UiI<\RlelN馈_*oS[vyiRm6ȶh!381uo[{<.72 ?KEH$F6J?ps*`&3YgW'$!U-)xp& >#Th 90PCbu;-sw荬N&+]]sFlNhC~jڦd46sagkFbڦpY1, VME
+ >iT{v{LܷIkC6g?OV6M
+{@ٍ_c0 yb9SʪeDLɺwu_{yto5H5b, D1pC*B.Pj%+)"nBr8`I.06}V OcypCDHa rrT䂳'_+qvsڊ?13-$Ubhq6dbqdly˔6pa;&u{q+AyYe4h`(@ pL:́DfW-
+a:d ݋>Aɧ<}, -jlS鲧dl<!l:#xnf(uNpxڪV/+M|Ǝxg}@iON蔱@FR7}=ǰ_H7Ǫl-ps{,Od,ã)utE Pʉ Vnhg`dT 3o6E,^fvCL+ރ#9
+
+endstream
+endobj
+9839 0 obj
+<< /Type /Page /Contents 9840 0 R /Resources 9838 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 9414 0 R >>
+endobj
+9841 0 obj
+<< /D [ 9839 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+9842 0 obj
+<< /D [ 9839 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+9843 0 obj
+<< /D [ 9839 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+9844 0 obj
+<< /D [ 9839 0 R /XYZ 81.077 723.004 null ] >>
+endobj
+9845 0 obj
+<< /D [ 9839 0 R /XYZ 81.077 712.045 null ] >>
+endobj
+9846 0 obj
+<< /D [ 9839 0 R /XYZ 81.077 701.086 null ] >>
+endobj
+9847 0 obj
+<< /D [ 9839 0 R /XYZ 81.077 690.127 null ] >>
+endobj
+9848 0 obj
+<< /D [ 9839 0 R /XYZ 81.077 679.168 null ] >>
+endobj
+9849 0 obj
+<< /D [ 9839 0 R /XYZ 81.077 668.209 null ] >>
+endobj
+9850 0 obj
+<< /D [ 9839 0 R /XYZ 81.077 657.25 null ] >>
+endobj
+9851 0 obj
+<< /D [ 9839 0 R /XYZ 81.077 646.291 null ] >>
+endobj
+9852 0 obj
+<< /D [ 9839 0 R /XYZ 81.077 635.332 null ] >>
+endobj
+9853 0 obj
+<< /D [ 9839 0 R /XYZ 81.077 624.373 null ] >>
+endobj
+9854 0 obj
+<< /D [ 9839 0 R /XYZ 81.077 613.415 null ] >>
+endobj
+9855 0 obj
+<< /D [ 9839 0 R /XYZ 81.077 602.456 null ] >>
+endobj
+9856 0 obj
+<< /D [ 9839 0 R /XYZ 81.077 586.515 null ] >>
+endobj
+9857 0 obj
+<< /D [ 9839 0 R /XYZ 81.077 575.556 null ] >>
+endobj
+9858 0 obj
+<< /D [ 9839 0 R /XYZ 81.077 564.598 null ] >>
+endobj
+9859 0 obj
+<< /D [ 9839 0 R /XYZ 81.077 553.639 null ] >>
+endobj
+9860 0 obj
+<< /D [ 9839 0 R /XYZ 81.077 474.934 null ] >>
+endobj
+9861 0 obj
+<< /D [ 9839 0 R /XYZ 81.077 386.266 null ] >>
+endobj
+9862 0 obj
+<< /D [ 9839 0 R /XYZ 81.077 375.307 null ] >>
+endobj
+9863 0 obj
+<< /D [ 9839 0 R /XYZ 81.077 364.349 null ] >>
+endobj
+9864 0 obj
+<< /D [ 9839 0 R /XYZ 81.077 353.39 null ] >>
+endobj
+9865 0 obj
+<< /D [ 9839 0 R /XYZ 81.077 342.431 null ] >>
+endobj
+9866 0 obj
+<< /D [ 9839 0 R /XYZ 81.077 277.674 null ] >>
+endobj
+9867 0 obj
+<< /D [ 9839 0 R /XYZ 81.077 266.715 null ] >>
+endobj
+9868 0 obj
+<< /D [ 9839 0 R /XYZ 81.077 213.913 null ] >>
+endobj
+9869 0 obj
+<< /D [ 9839 0 R /XYZ 81.077 202.954 null ] >>
+endobj
+9870 0 obj
+<< /D [ 9839 0 R /XYZ 81.077 191.995 null ] >>
+endobj
+9871 0 obj
+<< /D [ 9839 0 R /XYZ 81.077 181.036 null ] >>
+endobj
+9872 0 obj
+<< /D [ 9839 0 R /XYZ 81.077 170.077 null ] >>
+endobj
+9873 0 obj
+<< /D [ 9839 0 R /XYZ 81.077 159.118 null ] >>
+endobj
+9874 0 obj
+<< /D [ 9839 0 R /XYZ 81.077 148.159 null ] >>
+endobj
+9875 0 obj
+<< /D [ 9839 0 R /XYZ 81.077 117.275 null ] >>
+endobj
+9876 0 obj
+<< /D [ 9839 0 R /XYZ 81.077 106.316 null ] >>
+endobj
+9838 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F26 662 0 R /F76 318 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+9879 0 obj
+<< /Filter /FlateDecode /Length 2492 >>
+stream
+xڵZߏ۸~_aEoyMj
+P4Z,v7kEu^ܤ/+Gg3ߐW+z_d eJ߿!JeaIVտ׿on4,Znnɺv7Tk޹GW0P(PƯ~9ƟrC9 f%y<ڿ`X6 l> 4@9 pɐH!ER7h1y2(1E-l3DtYoXCi~29o ᙗ_0|(upiK?𾩏1ۼ+j?foCxNZ+SUP(Ek-. &H 4 Mhx5$Z0ʚ˯rpL!"ֽZ$v)XP1Ě*@+릶=Oj*Psn̫{˺2֕]G}} H(0~z؟j{QT1@lĮU= 5
+a24ܞs Dx<򘗶ҙF l4+{fd+d힟yƦ)'p˓AߒN/&z0+aro]^py&ۺ|<OQPmN Po^^:%t}~bn?ɻ]z}s6O>=
+yYݢKx`֬9]S|^* iwz[E;+(ӄ)\QAgn
+u+ШYNdz07nnt
+ٗæ Hy-Jchi9[1d.x26AX:^v ׭G* `,FO2Oy9yXyYZ@F6u޳owK#z KiKuiDBKSWTFZ0N{.]p%u1+"Y6 82]q% 0:30El:M 8et?.p":ze@#, i @ω
+^NSK\p"cH2Dj@ӈURqA)l`P0H!j+8*"_)EDy6w?
+*oK&܁taµK^RG39pًgv})?=O8=/`i7h>C!Ɲ)ƈRO07+Dc~:zGձ`}jLVBgcgyiRJ EYFbpOMe~=UWa ;6Y~%/QE"t2#<qT}!
+.'?DR
+QIM+[P4鳝ᤍu~bHH,-B^.۝_S$2DgM):}ne!ϰ41*}"d{!.?.2ޙMiEǠS<hhbmrM;SǢsWb\tYm4f뻷o0b=Nq+X3t?,_K e18wsl5=D[ѤV} Ո]g~t"(tQDdNT
+4K!ƒeZI[&T}Qg/le
+xPpoC_Br?FzlΥѢP m|MDB0 Jf,3R Eڜev-?REk3#trrR#2\&f
+i2"PVroAʉKk΅q%2 0ݦt,/4{Te.Y L
+XWvWǼ;lIRDB0 <4hQ zF_Cl]W\ NBd,I݋sREq<4Qh+T<J!pHs
+0.r#l(*\Ęq7+wSdA&a|,r_~3M*(TrY\St/sN 8(L4ߞgoӢtJhFJfEJ'Ң҅7o! d( N𤙧'z&0e0(oGPs
+endstream
+endobj
+9878 0 obj
+<< /Type /Page /Contents 9879 0 R /Resources 9877 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 9927 0 R >>
+endobj
+9880 0 obj
+<< /D [ 9878 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+9881 0 obj
+<< /D [ 9878 0 R /XYZ 81.077 695.255 null ] >>
+endobj
+9882 0 obj
+<< /D [ 9878 0 R /XYZ 81.077 684.297 null ] >>
+endobj
+9883 0 obj
+<< /D [ 9878 0 R /XYZ 81.077 673.338 null ] >>
+endobj
+9884 0 obj
+<< /D [ 9878 0 R /XYZ 81.077 662.379 null ] >>
+endobj
+9885 0 obj
+<< /D [ 9878 0 R /XYZ 81.077 651.42 null ] >>
+endobj
+9886 0 obj
+<< /D [ 9878 0 R /XYZ 81.077 640.461 null ] >>
+endobj
+9887 0 obj
+<< /D [ 9878 0 R /XYZ 81.077 629.502 null ] >>
+endobj
+9888 0 obj
+<< /D [ 9878 0 R /XYZ 81.077 618.543 null ] >>
+endobj
+9889 0 obj
+<< /D [ 9878 0 R /XYZ 81.077 607.584 null ] >>
+endobj
+9890 0 obj
+<< /D [ 9878 0 R /XYZ 81.077 596.625 null ] >>
+endobj
+9891 0 obj
+<< /D [ 9878 0 R /XYZ 81.077 585.666 null ] >>
+endobj
+9892 0 obj
+<< /D [ 9878 0 R /XYZ 81.077 557.069 null ] >>
+endobj
+9893 0 obj
+<< /D [ 9878 0 R /XYZ 81.077 546.11 null ] >>
+endobj
+9894 0 obj
+<< /D [ 9878 0 R /XYZ 81.077 494.192 null ] >>
+endobj
+9895 0 obj
+<< /D [ 9878 0 R /XYZ 81.077 483.233 null ] >>
+endobj
+9896 0 obj
+<< /D [ 9878 0 R /XYZ 81.077 472.274 null ] >>
+endobj
+9897 0 obj
+<< /D [ 9878 0 R /XYZ 81.077 461.315 null ] >>
+endobj
+9898 0 obj
+<< /D [ 9878 0 R /XYZ 81.077 450.356 null ] >>
+endobj
+9899 0 obj
+<< /D [ 9878 0 R /XYZ 81.077 439.397 null ] >>
+endobj
+9900 0 obj
+<< /D [ 9878 0 R /XYZ 81.077 428.438 null ] >>
+endobj
+9901 0 obj
+<< /D [ 9878 0 R /XYZ 81.077 399.841 null ] >>
+endobj
+9902 0 obj
+<< /D [ 9878 0 R /XYZ 81.077 388.882 null ] >>
+endobj
+9903 0 obj
+<< /D [ 9878 0 R /XYZ 81.077 377.923 null ] >>
+endobj
+9904 0 obj
+<< /D [ 9878 0 R /XYZ 81.077 366.965 null ] >>
+endobj
+9905 0 obj
+<< /D [ 9878 0 R /XYZ 81.077 356.006 null ] >>
+endobj
+9906 0 obj
+<< /D [ 9878 0 R /XYZ 81.077 297.815 null ] >>
+endobj
+9907 0 obj
+<< /D [ 9878 0 R /XYZ 81.077 286.856 null ] >>
+endobj
+9908 0 obj
+<< /D [ 9878 0 R /XYZ 81.077 275.897 null ] >>
+endobj
+9909 0 obj
+<< /D [ 9878 0 R /XYZ 81.077 264.938 null ] >>
+endobj
+9910 0 obj
+<< /D [ 9878 0 R /XYZ 81.077 253.979 null ] >>
+endobj
+9911 0 obj
+<< /D [ 9878 0 R /XYZ 81.077 243.021 null ] >>
+endobj
+9912 0 obj
+<< /D [ 9878 0 R /XYZ 81.077 232.062 null ] >>
+endobj
+9913 0 obj
+<< /D [ 9878 0 R /XYZ 81.077 221.103 null ] >>
+endobj
+9914 0 obj
+<< /D [ 9878 0 R /XYZ 81.077 210.144 null ] >>
+endobj
+9915 0 obj
+<< /D [ 9878 0 R /XYZ 81.077 199.185 null ] >>
+endobj
+9916 0 obj
+<< /D [ 9878 0 R /XYZ 81.077 188.226 null ] >>
+endobj
+9917 0 obj
+<< /D [ 9878 0 R /XYZ 81.077 177.267 null ] >>
+endobj
+9918 0 obj
+<< /D [ 9878 0 R /XYZ 81.077 166.308 null ] >>
+endobj
+9919 0 obj
+<< /D [ 9878 0 R /XYZ 81.077 155.349 null ] >>
+endobj
+9920 0 obj
+<< /D [ 9878 0 R /XYZ 81.077 144.39 null ] >>
+endobj
+9921 0 obj
+<< /D [ 9878 0 R /XYZ 81.077 133.431 null ] >>
+endobj
+9922 0 obj
+<< /D [ 9878 0 R /XYZ 81.077 122.473 null ] >>
+endobj
+9923 0 obj
+<< /D [ 9878 0 R /XYZ 81.077 111.514 null ] >>
+endobj
+9924 0 obj
+<< /D [ 9878 0 R /XYZ 81.077 100.555 null ] >>
+endobj
+9925 0 obj
+<< /D [ 9878 0 R /XYZ 81.077 89.596 null ] >>
+endobj
+9926 0 obj
+<< /D [ 9878 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+9877 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F20 186 0 R /F26 662 0 R /F73 189 0 R /F69 183 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+9930 0 obj
+<< /Filter /FlateDecode /Length 1876 >>
+stream
+xZ[o~ϯ00/p;v
+Hi,OXXQi:jr>^f`~NL>d&m.u|3ME1:uѻ
+/)C_>dۻL`2a>?5mDMQcpw J%w32&Q eT /-ΈQ*(1nUߌ !x=ހ p?^F
+endstream
+endobj
+9929 0 obj
+<< /Type /Page /Contents 9930 0 R /Resources 9928 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 9927 0 R >>
+endobj
+9931 0 obj
+<< /D [ 9929 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+9932 0 obj
+<< /D [ 9929 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+9933 0 obj
+<< /D [ 9929 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+9934 0 obj
+<< /D [ 9929 0 R /XYZ 81.077 699.507 null ] >>
+endobj
+9935 0 obj
+<< /D [ 9929 0 R /XYZ 81.077 688.548 null ] >>
+endobj
+9936 0 obj
+<< /D [ 9929 0 R /XYZ 81.077 677.589 null ] >>
+endobj
+9937 0 obj
+<< /D [ 9929 0 R /XYZ 81.077 666.63 null ] >>
+endobj
+9938 0 obj
+<< /D [ 9929 0 R /XYZ 81.077 655.671 null ] >>
+endobj
+9939 0 obj
+<< /D [ 9929 0 R /XYZ 81.077 644.712 null ] >>
+endobj
+9940 0 obj
+<< /D [ 9929 0 R /XYZ 81.077 633.753 null ] >>
+endobj
+9941 0 obj
+<< /D [ 9929 0 R /XYZ 81.077 622.794 null ] >>
+endobj
+9942 0 obj
+<< /D [ 9929 0 R /XYZ 81.077 611.836 null ] >>
+endobj
+9943 0 obj
+<< /D [ 9929 0 R /XYZ 81.077 600.877 null ] >>
+endobj
+9944 0 obj
+<< /D [ 9929 0 R /XYZ 81.077 589.918 null ] >>
+endobj
+9945 0 obj
+<< /D [ 9929 0 R /XYZ 81.077 578.959 null ] >>
+endobj
+9946 0 obj
+<< /D [ 9929 0 R /XYZ 81.077 568 null ] >>
+endobj
+9947 0 obj
+<< /D [ 9929 0 R /XYZ 81.077 557.041 null ] >>
+endobj
+9948 0 obj
+<< /D [ 9929 0 R /XYZ 81.077 546.082 null ] >>
+endobj
+9949 0 obj
+<< /D [ 9929 0 R /XYZ 81.077 535.123 null ] >>
+endobj
+9950 0 obj
+<< /D [ 9929 0 R /XYZ 81.077 524.164 null ] >>
+endobj
+9951 0 obj
+<< /D [ 9929 0 R /XYZ 81.077 513.205 null ] >>
+endobj
+9952 0 obj
+<< /D [ 9929 0 R /XYZ 81.077 502.246 null ] >>
+endobj
+9953 0 obj
+<< /D [ 9929 0 R /XYZ 81.077 491.288 null ] >>
+endobj
+9954 0 obj
+<< /D [ 9929 0 R /XYZ 81.077 480.329 null ] >>
+endobj
+9955 0 obj
+<< /D [ 9929 0 R /XYZ 81.077 469.37 null ] >>
+endobj
+9956 0 obj
+<< /D [ 9929 0 R /XYZ 81.077 458.411 null ] >>
+endobj
+9957 0 obj
+<< /D [ 9929 0 R /XYZ 81.077 447.452 null ] >>
+endobj
+9958 0 obj
+<< /D [ 9929 0 R /XYZ 81.077 436.493 null ] >>
+endobj
+9959 0 obj
+<< /D [ 9929 0 R /XYZ 81.077 425.534 null ] >>
+endobj
+141 0 obj
+<< /D [ 9929 0 R /XYZ 79.37 402.589 null ] >>
+endobj
+9960 0 obj
+<< /D [ 9929 0 R /XYZ 81.077 317.91 null ] >>
+endobj
+9961 0 obj
+<< /D [ 9929 0 R /XYZ 81.077 306.951 null ] >>
+endobj
+9962 0 obj
+<< /D [ 9929 0 R /XYZ 81.077 295.992 null ] >>
+endobj
+9963 0 obj
+<< /D [ 9929 0 R /XYZ 81.077 285.033 null ] >>
+endobj
+9964 0 obj
+<< /D [ 9929 0 R /XYZ 81.077 274.074 null ] >>
+endobj
+9965 0 obj
+<< /D [ 9929 0 R /XYZ 81.077 258.34 null ] >>
+endobj
+9966 0 obj
+<< /D [ 9929 0 R /XYZ 81.077 247.382 null ] >>
+endobj
+9967 0 obj
+<< /D [ 9929 0 R /XYZ 81.077 236.423 null ] >>
+endobj
+9968 0 obj
+<< /D [ 9929 0 R /XYZ 81.077 225.464 null ] >>
+endobj
+9969 0 obj
+<< /D [ 9929 0 R /XYZ 81.077 214.505 null ] >>
+endobj
+9970 0 obj
+<< /D [ 9929 0 R /XYZ 81.077 188.226 null ] >>
+endobj
+9971 0 obj
+<< /D [ 9929 0 R /XYZ 81.077 177.267 null ] >>
+endobj
+9972 0 obj
+<< /D [ 9929 0 R /XYZ 81.077 166.308 null ] >>
+endobj
+9973 0 obj
+<< /D [ 9929 0 R /XYZ 81.077 155.349 null ] >>
+endobj
+9974 0 obj
+<< /D [ 9929 0 R /XYZ 81.077 144.39 null ] >>
+endobj
+9975 0 obj
+<< /D [ 9929 0 R /XYZ 81.077 133.431 null ] >>
+endobj
+9976 0 obj
+<< /D [ 9929 0 R /XYZ 81.077 122.473 null ] >>
+endobj
+9977 0 obj
+<< /D [ 9929 0 R /XYZ 81.077 111.514 null ] >>
+endobj
+9978 0 obj
+<< /D [ 9929 0 R /XYZ 81.077 100.555 null ] >>
+endobj
+9979 0 obj
+<< /D [ 9929 0 R /XYZ 81.077 89.596 null ] >>
+endobj
+9980 0 obj
+<< /D [ 9929 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+9928 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F72 187 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+9983 0 obj
+<< /Filter /FlateDecode /Length 2173 >>
+stream
+xZ]o}ϯ0/ pM-h.Ї%N+K^IǦ^Ғ(R:g!%hxf<lp{o'^|PlƑN %IfJ%]f<M4g g R$b:F?5w=;Tؘ6_7ymnewn._0!:⛗ygńEUz4"yF9D/{m6_"\jmq,_ pW-"B
+O7 ћKY=Т1;ӧuUyzYV˯uM6 KD&L"1kJxAL[<(ɄaGw!4CN7g$vMXp{ZN͢~ۻ᪳srڟj3NqGb0C .`X!bA4ByItbNP f?I$^\[_NTQ$.-s 2oS:'MG^D*41v4vn̊WVn\L(݆y]PMFWbw D<fuNx,fc)ܟ q|hBDF7]c$a# [\~(6 9Myc'iU\P# :
+QV,aBai$%o&-CJ2ʒ.K~ܖ`xb[D@2B?f6q`Ǧ#B;f^ۼ^m>I_y_mE[eݞ{EQ9}x[wMN0Z=M4k;WӪ`dVv&wffs}:OT|g溫CD-iC&k͓۬% "tj޴&2 G"H3_X*"
+ˉ%{ԓIuQ=Mk֖e~b2|G5A)u؁K*doO^Jrv`jR}/8)]|q&#R+/;0841O VROݦ~MsywOCs{3>)j1(a^♄YᏞ1>0hi<dN\H́W^ o`XoSlEMN`&@毺X$ qaaib1u<L].~<͘ }6!<6a' -F8:)(Gh2Aڟk LG(D%kaсlYU떔,Ž`%70!:ES]ґ61RD}.5oY!c(mLSÖ"4eDeDAzh}qo9|H-`-L~,YeYϯ{EƑ̷L npKpPf,#T 9~2)`IbWJ%K`hsw_tO
+Xcv3ʭLvt/)RB,K`BP2Kڰ<²]]Dۃ)JI@O?pԏXvuu;
+endstream
+endobj
+9982 0 obj
+<< /Type /Page /Contents 9983 0 R /Resources 9981 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 9927 0 R >>
+endobj
+9984 0 obj
+<< /D [ 9982 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+9985 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+9986 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+9987 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+9988 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+9989 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+9990 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+9991 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 666.798 null ] >>
+endobj
+9992 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 655.839 null ] >>
+endobj
+9993 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 644.88 null ] >>
+endobj
+9994 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 604.664 null ] >>
+endobj
+9995 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 593.705 null ] >>
+endobj
+9996 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 582.747 null ] >>
+endobj
+9997 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 571.788 null ] >>
+endobj
+9998 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 560.829 null ] >>
+endobj
+9999 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 549.87 null ] >>
+endobj
+10000 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 538.911 null ] >>
+endobj
+10001 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 527.952 null ] >>
+endobj
+10002 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 516.993 null ] >>
+endobj
+10003 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 506.034 null ] >>
+endobj
+10004 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 495.075 null ] >>
+endobj
+10005 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 484.116 null ] >>
+endobj
+10006 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 473.157 null ] >>
+endobj
+10007 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 462.199 null ] >>
+endobj
+10008 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 451.24 null ] >>
+endobj
+10009 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 440.281 null ] >>
+endobj
+10010 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 429.322 null ] >>
+endobj
+10011 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 418.363 null ] >>
+endobj
+10012 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 407.404 null ] >>
+endobj
+10013 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 396.445 null ] >>
+endobj
+10014 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 385.486 null ] >>
+endobj
+10015 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 374.527 null ] >>
+endobj
+10016 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 363.568 null ] >>
+endobj
+10017 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 352.61 null ] >>
+endobj
+10018 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 341.651 null ] >>
+endobj
+10019 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 330.692 null ] >>
+endobj
+10020 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 319.733 null ] >>
+endobj
+10021 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 308.774 null ] >>
+endobj
+10022 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 297.815 null ] >>
+endobj
+10023 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 286.856 null ] >>
+endobj
+10024 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 275.897 null ] >>
+endobj
+10025 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 264.938 null ] >>
+endobj
+10026 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 253.979 null ] >>
+endobj
+10027 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 243.021 null ] >>
+endobj
+10028 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 232.062 null ] >>
+endobj
+10029 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 221.103 null ] >>
+endobj
+10030 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 210.144 null ] >>
+endobj
+10031 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 199.185 null ] >>
+endobj
+10032 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 188.226 null ] >>
+endobj
+10033 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 177.267 null ] >>
+endobj
+10034 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 166.308 null ] >>
+endobj
+10035 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 155.349 null ] >>
+endobj
+10036 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 144.39 null ] >>
+endobj
+10037 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 133.431 null ] >>
+endobj
+10038 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 122.473 null ] >>
+endobj
+10039 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 111.514 null ] >>
+endobj
+10040 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 100.555 null ] >>
+endobj
+10041 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 89.596 null ] >>
+endobj
+10042 0 obj
+<< /D [ 9982 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+9981 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F20 186 0 R /F19 184 0 R /F26 662 0 R /F75 317 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+10045 0 obj
+<< /Filter /FlateDecode /Length 1589 >>
+stream
+xڵYKoFWEF
+:z-'=`l(*>B0])|"7 "t7{VY忇t߮pw}O"^Xi|%0G>D|Udz!_F8U-&-.aXDeCٓw*޸8xNrc$s9wefr ]sM}nͅ/fd Xmj|0#KDK.}ޘXE zP#t넋K& \b`NKb\|I΅Eݥ7Ӫç١iWݍ9ӢߝcP&hπ2C2#+eı$Cߒ}YTJofW=wМaXORb`Q ^P,t)otMSWY %IzuC7Uު\UQlU@~'w+P)BSB~gi;VEZi@v'h;NE达QE,Ϫ,ԍ~., h/pF&|V~˓hsCTmU}_?AiVp6;ڲs^^ܠe ΃9
+J4S9mlI(AԠ؜A5n#4>>$7=2{鯲Nygh KR08 XNW&5dؙ١>%^%/G)Q5h#i%'!lztjo,-Y/8vQG~ 7w%Eo(,0gQ"tȟ<,lQ<FC͍&o푉O&.a1o7Zyz.2?FǶ~\3<%¨Gm
+Ad.8D؜jlP2B9cq堠PZ%B]Ȭ#ܞGv uD"46,#>1իLi"DL()HE+Lڋ!xLqIdߩU}!f{`ztTg/HְS!-GCʐ7KQ|ԜfEo{ypW{=Ɵ'Q
+endstream
+endobj
+10044 0 obj
+<< /Type /Page /Contents 10045 0 R /Resources 10043 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 9927 0 R >>
+endobj
+10046 0 obj
+<< /D [ 10044 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+10047 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+10048 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+10049 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+10050 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+10051 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+10052 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+10053 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+10054 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+10055 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+10056 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+10057 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+10058 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+10059 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 637.325 null ] >>
+endobj
+10060 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 626.366 null ] >>
+endobj
+10061 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 615.407 null ] >>
+endobj
+10062 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 604.448 null ] >>
+endobj
+10063 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 593.489 null ] >>
+endobj
+10064 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 558.62 null ] >>
+endobj
+10065 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 547.661 null ] >>
+endobj
+10066 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 536.702 null ] >>
+endobj
+10067 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 525.743 null ] >>
+endobj
+10068 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 514.784 null ] >>
+endobj
+10069 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 503.825 null ] >>
+endobj
+10070 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 492.867 null ] >>
+endobj
+10071 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 481.908 null ] >>
+endobj
+10072 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 470.949 null ] >>
+endobj
+10073 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 459.99 null ] >>
+endobj
+10074 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 449.031 null ] >>
+endobj
+10075 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 438.072 null ] >>
+endobj
+10076 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 427.113 null ] >>
+endobj
+10077 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 416.154 null ] >>
+endobj
+10078 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 405.195 null ] >>
+endobj
+10079 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 394.236 null ] >>
+endobj
+10080 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 383.278 null ] >>
+endobj
+10081 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 372.319 null ] >>
+endobj
+10082 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 361.36 null ] >>
+endobj
+10083 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 350.401 null ] >>
+endobj
+10084 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 339.442 null ] >>
+endobj
+10085 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 328.483 null ] >>
+endobj
+10086 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 317.524 null ] >>
+endobj
+10087 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 306.565 null ] >>
+endobj
+10088 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 295.606 null ] >>
+endobj
+10089 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 284.647 null ] >>
+endobj
+10090 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 273.688 null ] >>
+endobj
+10091 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 262.73 null ] >>
+endobj
+10092 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 251.771 null ] >>
+endobj
+10093 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 240.812 null ] >>
+endobj
+10094 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 229.853 null ] >>
+endobj
+10095 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 218.894 null ] >>
+endobj
+10096 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 207.935 null ] >>
+endobj
+10097 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 196.976 null ] >>
+endobj
+10098 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 186.017 null ] >>
+endobj
+10099 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 175.058 null ] >>
+endobj
+10100 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 164.099 null ] >>
+endobj
+10101 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 153.141 null ] >>
+endobj
+10102 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 118.271 null ] >>
+endobj
+10103 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 107.312 null ] >>
+endobj
+10104 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 96.354 null ] >>
+endobj
+10105 0 obj
+<< /D [ 10044 0 R /XYZ 81.077 85.395 null ] >>
+endobj
+10043 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+10108 0 obj
+<< /Filter /FlateDecode /Length 1446 >>
+stream
+xYMo6WK6 I(,CO[M;BlɐoZE:A%-=yl }m_G'Fd f' ^ˬ&hFfhuSyfI1 J)F4^(cΉG +r5j4C&E!!G+Rٹ+Ut x-(-NjbZ.g?yeVV ^t qKan7Ӆڜ3,nm9kUtͪ:f*LG5FǦp9%")zU=uX:WDPX
+$݆6nҎ m%2,Q1ꦽ"z29LF֜HTP%h_7n^Vh*i
+=ͤvyHx8OОM3P>A㣃Y\@!VҦh?Wh-ShZK(Kz
+1Cz%odڠc0mTm55AoTk
+gto]5E[i)8yKIEtRq1zkѻ%pbP
+"ω3@ fg}
+N59΄D]x -QzW˨LS8K 2xg:LPFr}B{-W`Iroӣ _I
+rv4Srk $&Dɜ2)A-<&bMQg B|2I=u~4/oU0? :bmS wIaCUקE Ke8iسjܤq߃qlQ-FGNukms>RaG m;Bx~NlkyL]&mYW/eKů{FU~b?M9m7g(goismpcфy.8k5z>Av'q(F;{ bļA =A,F?.D\IÆ
+\RD`"PDэ]U?VG;g}Cs|9ʹH
+Q(5D &-E= ;gRu&DFp<:p^mz
+endstream
+endobj
+10107 0 obj
+<< /Type /Page /Contents 10108 0 R /Resources 10106 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 9927 0 R >>
+endobj
+10109 0 obj
+<< /D [ 10107 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+10110 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+10111 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+10112 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+10113 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+10114 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+10115 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+10116 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+10117 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+10118 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+10119 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+10120 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+10121 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+10122 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 637.325 null ] >>
+endobj
+10123 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 626.366 null ] >>
+endobj
+10124 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 615.407 null ] >>
+endobj
+10125 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 604.448 null ] >>
+endobj
+10126 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 593.489 null ] >>
+endobj
+10127 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 582.53 null ] >>
+endobj
+10128 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 571.571 null ] >>
+endobj
+10129 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 560.613 null ] >>
+endobj
+10130 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 549.654 null ] >>
+endobj
+10131 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 538.695 null ] >>
+endobj
+10132 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 527.736 null ] >>
+endobj
+10133 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 516.777 null ] >>
+endobj
+10134 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 505.818 null ] >>
+endobj
+10135 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 494.859 null ] >>
+endobj
+10136 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 483.9 null ] >>
+endobj
+10137 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 472.941 null ] >>
+endobj
+10138 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 461.982 null ] >>
+endobj
+10139 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 451.023 null ] >>
+endobj
+10140 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 440.065 null ] >>
+endobj
+10141 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 429.106 null ] >>
+endobj
+10142 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 418.147 null ] >>
+endobj
+10143 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 407.188 null ] >>
+endobj
+145 0 obj
+<< /D [ 10107 0 R /XYZ 79.37 383.726 null ] >>
+endobj
+10144 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 315.383 null ] >>
+endobj
+10145 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 304.424 null ] >>
+endobj
+10146 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 293.465 null ] >>
+endobj
+10147 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 282.506 null ] >>
+endobj
+10148 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 271.547 null ] >>
+endobj
+10149 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 260.588 null ] >>
+endobj
+10150 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 249.629 null ] >>
+endobj
+10151 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 238.67 null ] >>
+endobj
+10152 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 227.711 null ] >>
+endobj
+10153 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 216.753 null ] >>
+endobj
+10154 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 205.794 null ] >>
+endobj
+10155 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 194.835 null ] >>
+endobj
+10156 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 183.876 null ] >>
+endobj
+10157 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 172.917 null ] >>
+endobj
+10158 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 161.958 null ] >>
+endobj
+10159 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 150.999 null ] >>
+endobj
+10160 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 140.04 null ] >>
+endobj
+10161 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 129.081 null ] >>
+endobj
+10162 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 118.122 null ] >>
+endobj
+10163 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 107.164 null ] >>
+endobj
+10164 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 96.205 null ] >>
+endobj
+10165 0 obj
+<< /D [ 10107 0 R /XYZ 81.077 85.246 null ] >>
+endobj
+10106 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F72 187 0 R /F19 184 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+10168 0 obj
+<< /Filter /FlateDecode /Length 1717 >>
+stream
+xڽZYoF~ {z2AB)
+=@2%3HF;+JK8ȃI-;2tѫ#﫣fGF$q >-DGld5̌fj6G;jٯ(aڍ,qZ ۗ(#r~ΊE^Dqu|^+gg,廬{V{E힭
+,k#L`f!cDpѲ%ʽlK攀}t~.2G^k3{=0=,1# :e;Q>ZV&Ȗy1"@*]Y3)h|Ӧ߷q~v[{zȁ:\˾: !̮V8/[M7i^yVy>kHXU96/U^ݡOM8>@6Oo lMfZ-=iTk$O5@.~ߓ^bJx
+(FFO2 oPvN#:p.6o G_ݵw A3(U}wn|4M4ʣ FHg
+~u:$y72c@l:)Ū_mDm0hE墬Ul٭c>h9Qc α=Ntp%s Ϻj58u.d%^J֡#4zIuP8ɪ&q2ۼ*oyq PVֆLJVJiby`I'0pޑdN!HEIZ}'z<fHv 2koM&7eD_Gq\#gpQGaE9"P!B{_EMIޥU^I1-Z2hyd~Q> /jO5(6B}+-g"C|Ez·ٚRCtVՙ {`(5Zm|d.wh|dMG)6503@" c4ޡZo|'
+T8 x/&Ӈt7?Ek8,pch=#P;9\;'SPe
+H}T͗Ę@Lォ>ĝV{ jE#4^Ī "taĺ5qy"BkJ)*#.}lO?IG :x>Htn1h( ,9neh|sKhU*xhhF"4^6Մ@\Z͜"ud񲭄~*0Ehl#ׁz4lŨE!gm'v* $(}4DP;
+:nߨ#]%8.{`o |#p#Wa b}EQ<8{v^Hnj`4XE 4'4j^hIu}I*pxć~km03;^Ύ7q
+endstream
+endobj
+10167 0 obj
+<< /Type /Page /Contents 10168 0 R /Resources 10166 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 9927 0 R >>
+endobj
+10169 0 obj
+<< /D [ 10167 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+10170 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+10171 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+10172 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+10173 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+10174 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+10175 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+10176 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+10177 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 663.228 null ] >>
+endobj
+10178 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 652.269 null ] >>
+endobj
+10179 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 641.31 null ] >>
+endobj
+10180 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 630.351 null ] >>
+endobj
+10181 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 619.392 null ] >>
+endobj
+10182 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 608.433 null ] >>
+endobj
+10183 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 597.474 null ] >>
+endobj
+10184 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 586.515 null ] >>
+endobj
+10185 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 575.556 null ] >>
+endobj
+10186 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 564.598 null ] >>
+endobj
+10187 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 553.639 null ] >>
+endobj
+10188 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 542.68 null ] >>
+endobj
+10189 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 531.721 null ] >>
+endobj
+10190 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 520.762 null ] >>
+endobj
+10191 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 509.803 null ] >>
+endobj
+10192 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 498.844 null ] >>
+endobj
+10193 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 487.885 null ] >>
+endobj
+10194 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 476.926 null ] >>
+endobj
+10195 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 465.967 null ] >>
+endobj
+10196 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 455.009 null ] >>
+endobj
+10197 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 444.05 null ] >>
+endobj
+10198 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 433.091 null ] >>
+endobj
+10199 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 422.132 null ] >>
+endobj
+10200 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 411.173 null ] >>
+endobj
+10201 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 400.214 null ] >>
+endobj
+10202 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 389.255 null ] >>
+endobj
+10203 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 378.296 null ] >>
+endobj
+10204 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 367.337 null ] >>
+endobj
+10205 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 356.378 null ] >>
+endobj
+10206 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 345.42 null ] >>
+endobj
+10207 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 334.461 null ] >>
+endobj
+10208 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 323.502 null ] >>
+endobj
+10209 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 312.543 null ] >>
+endobj
+10210 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 301.584 null ] >>
+endobj
+10211 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 290.625 null ] >>
+endobj
+10212 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 279.666 null ] >>
+endobj
+10213 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 268.707 null ] >>
+endobj
+10214 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 257.748 null ] >>
+endobj
+10215 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 246.789 null ] >>
+endobj
+10216 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 235.83 null ] >>
+endobj
+10217 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 224.872 null ] >>
+endobj
+10218 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 213.913 null ] >>
+endobj
+10219 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 202.954 null ] >>
+endobj
+10220 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 191.995 null ] >>
+endobj
+10221 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 181.036 null ] >>
+endobj
+10222 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 170.077 null ] >>
+endobj
+10223 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 159.118 null ] >>
+endobj
+10224 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 148.159 null ] >>
+endobj
+10225 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 137.2 null ] >>
+endobj
+10226 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 126.241 null ] >>
+endobj
+10227 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 115.283 null ] >>
+endobj
+10228 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 104.324 null ] >>
+endobj
+10229 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 93.365 null ] >>
+endobj
+10230 0 obj
+<< /D [ 10167 0 R /XYZ 81.077 82.406 null ] >>
+endobj
+10166 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F20 186 0 R /F76 318 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+10233 0 obj
+<< /Filter /FlateDecode /Length 1584 >>
+stream
+xڵYKoFW%Fɾ:q
+m '<u8n te<u)G4024ݶ [ӆ)i&
+T"|^'-a=T{p6amIt34%M+ˣGc/y rȟaTGQ6ōjg~~[ ^i~^j#MU-lx=zR]Wb<ۅMQ?GQ:Ti4St*4KMT40mAG
+59,JH&ʍ(Z:C) X<bh2tҪeYܵ~o!Id6@ai&cs(k<$E%EzE10C?%$YAVDy0F9EpGϬ W4>7=qEW-(2) N{˱`>)JGձ[Ro%MGF9E<4T.BQqIe\Q,M73tojdjL5,M434yqfَe`gCTVrH?p O:GC`<ضp; ^'Nϋv`];Z` ,se8\.8䙣ѷU0H[|iwA{ Bh,։4f):aV'Q8霤URf?)Mb%0GӤ*ϭb`&ΐj%CgU gh7giQn[L/Zk:R1ehmv$z ehm@8=NчaA9i7t܀qyzJNˀ[ۋ@A8켤&E'' D#b/^q.zE+K'A82&%;S=1*QO{46aV7as Ԕ*ym‘ %]2<3c?OX
+endstream
+endobj
+10232 0 obj
+<< /Type /Page /Contents 10233 0 R /Resources 10231 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 9927 0 R >>
+endobj
+10234 0 obj
+<< /D [ 10232 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+10235 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+10236 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+10237 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+10238 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+10239 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+10240 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+10241 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+10242 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+10243 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+149 0 obj
+<< /D [ 10232 0 R /XYZ 79.37 657.699 null ] >>
+endobj
+10244 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 617.236 null ] >>
+endobj
+10245 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 606.278 null ] >>
+endobj
+10246 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 595.319 null ] >>
+endobj
+10247 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 584.36 null ] >>
+endobj
+10248 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 573.401 null ] >>
+endobj
+10249 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 562.442 null ] >>
+endobj
+10250 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 551.483 null ] >>
+endobj
+10251 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 540.524 null ] >>
+endobj
+10252 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 529.565 null ] >>
+endobj
+10253 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 518.606 null ] >>
+endobj
+10254 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 507.647 null ] >>
+endobj
+10255 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 496.689 null ] >>
+endobj
+10256 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 485.73 null ] >>
+endobj
+10257 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 474.771 null ] >>
+endobj
+10258 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 463.812 null ] >>
+endobj
+10259 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 452.853 null ] >>
+endobj
+10260 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 441.894 null ] >>
+endobj
+10261 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 430.935 null ] >>
+endobj
+10262 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 419.976 null ] >>
+endobj
+10263 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 409.017 null ] >>
+endobj
+10264 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 398.058 null ] >>
+endobj
+10265 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 387.1 null ] >>
+endobj
+10266 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 376.141 null ] >>
+endobj
+10267 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 365.182 null ] >>
+endobj
+10268 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 354.223 null ] >>
+endobj
+10269 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 343.264 null ] >>
+endobj
+10270 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 332.305 null ] >>
+endobj
+10271 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 321.346 null ] >>
+endobj
+10272 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 310.387 null ] >>
+endobj
+10273 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 299.428 null ] >>
+endobj
+10274 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 288.469 null ] >>
+endobj
+10275 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 277.51 null ] >>
+endobj
+10276 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 266.552 null ] >>
+endobj
+10277 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 255.593 null ] >>
+endobj
+10278 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 244.634 null ] >>
+endobj
+10279 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 233.675 null ] >>
+endobj
+10280 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 222.716 null ] >>
+endobj
+10281 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 211.757 null ] >>
+endobj
+10282 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 200.798 null ] >>
+endobj
+10283 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 189.839 null ] >>
+endobj
+10284 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 178.88 null ] >>
+endobj
+10285 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 167.921 null ] >>
+endobj
+10286 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 156.963 null ] >>
+endobj
+10287 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 146.004 null ] >>
+endobj
+10288 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 135.045 null ] >>
+endobj
+10289 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 124.086 null ] >>
+endobj
+10290 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 113.127 null ] >>
+endobj
+10291 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 102.168 null ] >>
+endobj
+10292 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 91.209 null ] >>
+endobj
+10293 0 obj
+<< /D [ 10232 0 R /XYZ 81.077 80.25 null ] >>
+endobj
+10231 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F72 187 0 R /F19 184 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+10296 0 obj
+<< /Filter /FlateDecode /Length 1546 >>
+stream
+xڵZKoFWũɾ>M
+ԀAV)-=FŵWo/ ѠxAz L%Ibm$hjE<VUSc/
+k '?۷/ƭ7O[) tJR4 B@ť
+]
+H[WϪemYU;4+^g<KBj7S4G-6\x㳠∤-5v=ƪ[WCյ]*no
+4pjoq+5EoW U9/ h9G>X2\n9yWw}vVn5 92oaF4rŲVN-0% B۴
+
+bлMWw[%5 9d>$@OG1b"&Z%b%V=er[)9ՠc:8y.rʉ&f%E?i}3"hmdC`LVAqS !L1,hUt`cp{
+N4ݲʫdr=Bn
+ Uҧ˫WS?|5DG8Eﲑgx`_tb
+1F\<M #0@\nС:9h(*vn!~N#wfsaMC$C{ў>:ZѨ^>&CtL $ Jh3t׼יDmؐ}$l"C^$99_pO߯7PnB|! F2hr'gXvP!H&Y{X$G}v}S֋_~+׋ET&Z]_9n5 Em1SK ɑ4yDCnziE$h:X*S",T!V<q
+endstream
+endobj
+10295 0 obj
+<< /Type /Page /Contents 10296 0 R /Resources 10294 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 9927 0 R >>
+endobj
+10297 0 obj
+<< /D [ 10295 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+10298 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+10299 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+10300 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+10301 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+10302 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+10303 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+10304 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+10305 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+10306 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+10307 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+10308 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+10309 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+10310 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 637.325 null ] >>
+endobj
+10311 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 626.366 null ] >>
+endobj
+10312 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 615.407 null ] >>
+endobj
+10313 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 604.448 null ] >>
+endobj
+10314 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 593.489 null ] >>
+endobj
+10315 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 577.549 null ] >>
+endobj
+10316 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 566.59 null ] >>
+endobj
+10317 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 555.631 null ] >>
+endobj
+10318 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 544.672 null ] >>
+endobj
+10319 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 533.713 null ] >>
+endobj
+10320 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 522.754 null ] >>
+endobj
+10321 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 511.796 null ] >>
+endobj
+10322 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 500.837 null ] >>
+endobj
+10323 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 489.878 null ] >>
+endobj
+10324 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 478.919 null ] >>
+endobj
+10325 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 467.96 null ] >>
+endobj
+10326 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 457.001 null ] >>
+endobj
+10327 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 446.042 null ] >>
+endobj
+10328 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 435.083 null ] >>
+endobj
+10329 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 424.124 null ] >>
+endobj
+10330 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 413.165 null ] >>
+endobj
+10331 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 402.207 null ] >>
+endobj
+10332 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 391.248 null ] >>
+endobj
+10333 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 380.289 null ] >>
+endobj
+10334 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 369.33 null ] >>
+endobj
+10335 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 358.371 null ] >>
+endobj
+10336 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 347.412 null ] >>
+endobj
+10337 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 336.453 null ] >>
+endobj
+10338 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 325.494 null ] >>
+endobj
+10339 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 314.535 null ] >>
+endobj
+10340 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 303.576 null ] >>
+endobj
+10341 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 292.618 null ] >>
+endobj
+10342 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 281.659 null ] >>
+endobj
+10343 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 270.7 null ] >>
+endobj
+10344 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 259.741 null ] >>
+endobj
+10345 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 248.782 null ] >>
+endobj
+10346 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 237.823 null ] >>
+endobj
+10347 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 226.864 null ] >>
+endobj
+10348 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 215.905 null ] >>
+endobj
+10349 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 204.946 null ] >>
+endobj
+10350 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 193.987 null ] >>
+endobj
+10351 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 183.028 null ] >>
+endobj
+10352 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 172.07 null ] >>
+endobj
+10353 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 161.111 null ] >>
+endobj
+10354 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 150.152 null ] >>
+endobj
+10355 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 139.193 null ] >>
+endobj
+10356 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 128.234 null ] >>
+endobj
+10357 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 117.275 null ] >>
+endobj
+10358 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 106.316 null ] >>
+endobj
+10359 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 95.357 null ] >>
+endobj
+10360 0 obj
+<< /D [ 10295 0 R /XYZ 81.077 84.398 null ] >>
+endobj
+10294 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+10363 0 obj
+<< /Filter /FlateDecode /Length 1994 >>
+stream
+xڵZKoWFm&WAn E[4J"Rq !GVtzcR$9ߜ!]LVbUq8/W?]Dk(g E()m&O-Swk7)jF$o뷒捿ү0YZHGGq@-[By%'iֳjys{aP?ټYYnCSeP#"USSM5aLF1)+dZny94BT!Q<Rpswg۴UW5uSo˕v{4Ce%ᅎ a }*nX?nY[<9#6(HS>68 YnUp5qV1""-*/dhOmSMNwi`̟" )KJiT8)S^T٪u}u٬l3xb`}h1j1ZS3ѣ~;Y"eW`2tjII ,Vgxި!ƪ9no)s( 8)뽴pԱhʘ:W/H,3#&2S8f):g*\jAhqx
+$qoM bXc4$fhtC'%#Fbڔ ꛺F 9fJ,9^bf6gK&(C11*+
+pLhtWB/\)dN5g' 7{q E Bq{Lg8߿n]b֐BĤmʡ34^Ѥ01-`ҿTZbop%"Ce+Ih\OiAί_ [sAH Ձјߍ)!E.'L7HegX,npЯ0 `q3R]Yl>T͇eNͭ%b m1]K>8,!B<kq9>C
+/
+I,mQ6r93CP1(nQI"DKX9>3ϠA52B30a]H<E!
+][>lŵnw PHmifp㶜_b\T?W3R M5&p0#{`Rvr0i7<-p-xq\}D$- 8EnL8 sGO7pl6~S@wߺL6ZvoAiR 8dLU+GSp0G6`}_ W0UޚQpQsI,*
+-rW4=wbe0@zxn?b?֧8|2C4 ]ڕGȈ
+^VMMަj^ԕ-XaO]Y-yF@i2}liWȁ@ZFtJ“q|H; aO-w(MdNgmeW
+u>Z`){(ȇ}Kh
+endstream
+endobj
+10362 0 obj
+<< /Type /Page /Contents 10363 0 R /Resources 10361 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 9927 0 R >>
+endobj
+10364 0 obj
+<< /D [ 10362 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+10365 0 obj
+<< /D [ 10362 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+10366 0 obj
+<< /D [ 10362 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+10367 0 obj
+<< /D [ 10362 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+10368 0 obj
+<< /D [ 10362 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+10369 0 obj
+<< /D [ 10362 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+10370 0 obj
+<< /D [ 10362 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+10371 0 obj
+<< /D [ 10362 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+10372 0 obj
+<< /D [ 10362 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+10373 0 obj
+<< /D [ 10362 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+10374 0 obj
+<< /D [ 10362 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+10375 0 obj
+<< /D [ 10362 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+10376 0 obj
+<< /D [ 10362 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+10377 0 obj
+<< /D [ 10362 0 R /XYZ 81.077 637.325 null ] >>
+endobj
+10378 0 obj
+<< /D [ 10362 0 R /XYZ 81.077 626.366 null ] >>
+endobj
+10379 0 obj
+<< /D [ 10362 0 R /XYZ 81.077 615.407 null ] >>
+endobj
+10380 0 obj
+<< /D [ 10362 0 R /XYZ 81.077 604.448 null ] >>
+endobj
+10381 0 obj
+<< /D [ 10362 0 R /XYZ 81.077 593.489 null ] >>
+endobj
+10382 0 obj
+<< /D [ 10362 0 R /XYZ 81.077 582.53 null ] >>
+endobj
+10383 0 obj
+<< /D [ 10362 0 R /XYZ 81.077 571.571 null ] >>
+endobj
+10384 0 obj
+<< /D [ 10362 0 R /XYZ 81.077 560.613 null ] >>
+endobj
+10385 0 obj
+<< /D [ 10362 0 R /XYZ 81.077 549.654 null ] >>
+endobj
+10386 0 obj
+<< /D [ 10362 0 R /XYZ 81.077 538.695 null ] >>
+endobj
+10387 0 obj
+<< /D [ 10362 0 R /XYZ 81.077 527.736 null ] >>
+endobj
+10388 0 obj
+<< /D [ 10362 0 R /XYZ 81.077 516.777 null ] >>
+endobj
+10389 0 obj
+<< /D [ 10362 0 R /XYZ 81.077 505.818 null ] >>
+endobj
+10390 0 obj
+<< /D [ 10362 0 R /XYZ 81.077 494.859 null ] >>
+endobj
+10391 0 obj
+<< /D [ 10362 0 R /XYZ 81.077 483.9 null ] >>
+endobj
+10392 0 obj
+<< /D [ 10362 0 R /XYZ 81.077 472.941 null ] >>
+endobj
+10393 0 obj
+<< /D [ 10362 0 R /XYZ 81.077 461.982 null ] >>
+endobj
+10394 0 obj
+<< /D [ 10362 0 R /XYZ 81.077 451.023 null ] >>
+endobj
+10395 0 obj
+<< /D [ 10362 0 R /XYZ 81.077 440.065 null ] >>
+endobj
+10396 0 obj
+<< /D [ 10362 0 R /XYZ 81.077 429.106 null ] >>
+endobj
+10397 0 obj
+<< /D [ 10362 0 R /XYZ 81.077 418.147 null ] >>
+endobj
+10398 0 obj
+<< /D [ 10362 0 R /XYZ 81.077 407.188 null ] >>
+endobj
+10399 0 obj
+<< /D [ 10362 0 R /XYZ 81.077 396.229 null ] >>
+endobj
+10400 0 obj
+<< /D [ 10362 0 R /XYZ 81.077 385.27 null ] >>
+endobj
+10401 0 obj
+<< /D [ 10362 0 R /XYZ 81.077 374.311 null ] >>
+endobj
+10402 0 obj
+<< /D [ 10362 0 R /XYZ 81.077 363.352 null ] >>
+endobj
+10403 0 obj
+<< /D [ 10362 0 R /XYZ 81.077 352.393 null ] >>
+endobj
+10404 0 obj
+<< /D [ 10362 0 R /XYZ 81.077 341.434 null ] >>
+endobj
+10405 0 obj
+<< /D [ 10362 0 R /XYZ 81.077 330.476 null ] >>
+endobj
+10406 0 obj
+<< /D [ 10362 0 R /XYZ 81.077 319.517 null ] >>
+endobj
+10407 0 obj
+<< /D [ 10362 0 R /XYZ 81.077 308.558 null ] >>
+endobj
+10408 0 obj
+<< /D [ 10362 0 R /XYZ 81.077 297.599 null ] >>
+endobj
+10409 0 obj
+<< /D [ 10362 0 R /XYZ 81.077 286.64 null ] >>
+endobj
+10410 0 obj
+<< /D [ 10362 0 R /XYZ 81.077 275.681 null ] >>
+endobj
+10411 0 obj
+<< /D [ 10362 0 R /XYZ 81.077 264.722 null ] >>
+endobj
+153 0 obj
+<< /D [ 10362 0 R /XYZ 79.37 242.776 null ] >>
+endobj
+10412 0 obj
+<< /D [ 10362 0 R /XYZ 81.077 123.122 null ] >>
+endobj
+10413 0 obj
+<< /D [ 10362 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+10361 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F72 187 0 R /F19 184 0 R /F20 186 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+10416 0 obj
+<< /Filter /FlateDecode /Length 1940 >>
+stream
+xZoD޿"h]B x_|M6u}ݖ;rM&)⤫Ǐgfwg泛}wƇ#3wiB|}&">2+YdV淳œ? z&%֪x
+\D`Bf]\iΟC-mZ_ѯ!o޻f]͇t>qG MLp9$a! 4D&
+a%gƵH3Y1 @!~ 0W?._4+bRLK!MV5w.#?yeDKOMZ#m͵k(TE$$ࡢy8E56۬bԐ(}mm2՛~KWߕ,LZմ54EׯM S<
+ 6Bׯ5S: -izѴ4i?Yޤٲ)ʕ+ᴸjF
+6y;΋ڽ`%*|'6t4~BduUjt+.]ᑆD<vU:ex72aڄХ**j4_]13IBIck\,U椢QM9HyX8RSjԖ[gڣv_Fe>b4Fh2I3ˊF=&r7(W?u'vW 9"hFQ-'W9
+.ܱNkI&4G^+W?aȻ]|57 Β?o|Xb0hp`('yAQ5#C ŜN@E(~?'ƒ kӪŝO RR4-)S@}Mo4c*St˦,*?r4Ж3,I 4ݶBaUET!_b V?"}aa`;rE4SNi'r6S4Y*'6PKkiaG=ͷ_ usWSYu4Unh+\e:yӨΜ4р87iդҥGpͶHWnF54M R!7'HFZ$4w3u &`Ee,R,* X<s(0}"=^(md>+u#V.eVzT =^liAE<,;4n6,?΅ )py(@;Aj?kz'K,jM:M.JhfjHB
+S"pPPhL),d"5ꢵ"0 ^( 
+2fsAW
+讇 9HP*%y(E IXi5$1f4 p60eNiJH|=im:Z8EH EC{F*9%:6O۩DE\H3?
+.)"Jci_\Ž|Mj# -fRiѹKoCEmWq[ *Cqw;걪mC]tǞ3/뢵_wGlBކ>oRBP 4#T8+uE愎
+}gȏ-!i|w\O(8p
+endstream
+endobj
+10415 0 obj
+<< /Type /Page /Contents 10416 0 R /Resources 10414 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 9927 0 R >>
+endobj
+10417 0 obj
+<< /D [ 10415 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+10418 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+10419 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+10420 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+10421 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+10422 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+10423 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+10424 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+10425 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+10426 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+10427 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+10428 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+10429 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+10430 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 637.325 null ] >>
+endobj
+10431 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 626.366 null ] >>
+endobj
+10432 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 615.407 null ] >>
+endobj
+10433 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 599.772 null ] >>
+endobj
+10434 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 588.813 null ] >>
+endobj
+10435 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 577.854 null ] >>
+endobj
+10436 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 566.895 null ] >>
+endobj
+10437 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 555.936 null ] >>
+endobj
+10438 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 544.978 null ] >>
+endobj
+10439 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 534.019 null ] >>
+endobj
+10440 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 523.06 null ] >>
+endobj
+10441 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 512.101 null ] >>
+endobj
+10442 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 501.142 null ] >>
+endobj
+10443 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 490.183 null ] >>
+endobj
+10444 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 479.224 null ] >>
+endobj
+10445 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 468.265 null ] >>
+endobj
+10446 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 457.306 null ] >>
+endobj
+10447 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 425.651 null ] >>
+endobj
+10448 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 414.692 null ] >>
+endobj
+10449 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 403.733 null ] >>
+endobj
+10450 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 392.774 null ] >>
+endobj
+10451 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 381.815 null ] >>
+endobj
+10452 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 370.856 null ] >>
+endobj
+10453 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 359.897 null ] >>
+endobj
+10454 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 348.938 null ] >>
+endobj
+10455 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 337.979 null ] >>
+endobj
+10456 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 322.344 null ] >>
+endobj
+10457 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 311.385 null ] >>
+endobj
+10458 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 300.427 null ] >>
+endobj
+10459 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 289.468 null ] >>
+endobj
+10460 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 278.509 null ] >>
+endobj
+10461 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 267.55 null ] >>
+endobj
+10462 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 256.591 null ] >>
+endobj
+10463 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 245.632 null ] >>
+endobj
+10464 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 234.673 null ] >>
+endobj
+10465 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 208.69 null ] >>
+endobj
+10466 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 197.731 null ] >>
+endobj
+10467 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 155.349 null ] >>
+endobj
+10468 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 144.39 null ] >>
+endobj
+10469 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 133.431 null ] >>
+endobj
+10470 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 122.473 null ] >>
+endobj
+10471 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 111.514 null ] >>
+endobj
+10472 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 100.555 null ] >>
+endobj
+10473 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 89.596 null ] >>
+endobj
+10474 0 obj
+<< /D [ 10415 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+10414 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F74 264 0 R /F19 184 0 R /F70 185 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+10477 0 obj
+<< /Filter /FlateDecode /Length 1718 >>
+stream
+xڵYKoFWo0"M)Z hKCRv #R$We^Lro盙|<+~<{?>{{؀# Kx@Z"I@I$j0)Gmz{)@##%}0!_2JgWѹ^GE<JIלח
+-QuQBG?з @}28ƋdtδNqY6h 2GT xE/ O&n}򡬒5RrgňH"w#+"isMg-ؗDIyCkZ e2Eg
++D%kϔ>LQ3>ڞO-t|B]zPH0oyx28.0`-*2z&d]H\ ĸW8x,[qĴle#e$'g<XI2ĩjrXG NL"/.2(zxsVvistܪq6".u Ӧiۧ+ys6-ovZpٰEe>؋Xء< ći%ʰzD#U 3P31:'xlAb"BpN}\"N{ٔU)7Fue޼OKs-NieM5_VWF^9ULb\Vc|_C4MSn:lx=AP_; 'A`{+5l?ryzx R9|ܘ0V$IT hh 0B@r? U_ٖ,q7FxvaI^$GDCgpmo֥AVzoZ:8~_ܖݠ%j1z^Gkeºx0GhK(:J I `6ˋzp(4!>屖uMtH$
+0=p[ٲ_Ԗ6u9Nn\BxA\{ؗF/OkV`خB]_4
+pH;k@x**!tH`kEDuMire8Oi>YC1FyHjf>:xȲMdYP꡽GKx3àll{`K_d8E8_G_] 7 ځTˠC<vl7u9:&q=
+䮒c]|v)4aIC?u_[ `+?bij6B݋²*BeeuquK=e|L䡌MO_2uwMXym P:x\f]V<t˼ěeZV|(ڴ,7Mpl~P$պ~D.&E=tl7ay kk2gL%&*>0YoE&ޡfE ^88v MŮ^K& DgYcƥ}JMϬu'+ o5 2:<tCiPD^DQЎ*^F* s]-*%k;2{cdT(a|$>~D
+endstream
+endobj
+10476 0 obj
+<< /Type /Page /Contents 10477 0 R /Resources 10475 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 10517 0 R >>
+endobj
+10478 0 obj
+<< /D [ 10476 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+10479 0 obj
+<< /D [ 10476 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+10480 0 obj
+<< /D [ 10476 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+10481 0 obj
+<< /D [ 10476 0 R /XYZ 81.077 715.033 null ] >>
+endobj
+10482 0 obj
+<< /D [ 10476 0 R /XYZ 81.077 704.075 null ] >>
+endobj
+10483 0 obj
+<< /D [ 10476 0 R /XYZ 81.077 693.116 null ] >>
+endobj
+10484 0 obj
+<< /D [ 10476 0 R /XYZ 81.077 682.157 null ] >>
+endobj
+10485 0 obj
+<< /D [ 10476 0 R /XYZ 81.077 671.198 null ] >>
+endobj
+10486 0 obj
+<< /D [ 10476 0 R /XYZ 81.077 660.239 null ] >>
+endobj
+10487 0 obj
+<< /D [ 10476 0 R /XYZ 81.077 649.28 null ] >>
+endobj
+10488 0 obj
+<< /D [ 10476 0 R /XYZ 81.077 638.321 null ] >>
+endobj
+10489 0 obj
+<< /D [ 10476 0 R /XYZ 81.077 627.362 null ] >>
+endobj
+157 0 obj
+<< /D [ 10476 0 R /XYZ 79.37 579.907 null ] >>
+endobj
+10490 0 obj
+<< /D [ 10476 0 R /XYZ 81.077 483.059 null ] >>
+endobj
+10491 0 obj
+<< /D [ 10476 0 R /XYZ 81.077 472.101 null ] >>
+endobj
+10492 0 obj
+<< /D [ 10476 0 R /XYZ 81.077 461.142 null ] >>
+endobj
+10493 0 obj
+<< /D [ 10476 0 R /XYZ 81.077 450.183 null ] >>
+endobj
+10494 0 obj
+<< /D [ 10476 0 R /XYZ 81.077 434.243 null ] >>
+endobj
+10495 0 obj
+<< /D [ 10476 0 R /XYZ 81.077 423.284 null ] >>
+endobj
+10496 0 obj
+<< /D [ 10476 0 R /XYZ 81.077 412.325 null ] >>
+endobj
+10497 0 obj
+<< /D [ 10476 0 R /XYZ 81.077 401.366 null ] >>
+endobj
+10498 0 obj
+<< /D [ 10476 0 R /XYZ 81.077 390.407 null ] >>
+endobj
+10499 0 obj
+<< /D [ 10476 0 R /XYZ 81.077 379.448 null ] >>
+endobj
+10500 0 obj
+<< /D [ 10476 0 R /XYZ 81.077 368.489 null ] >>
+endobj
+10501 0 obj
+<< /D [ 10476 0 R /XYZ 81.077 357.53 null ] >>
+endobj
+10502 0 obj
+<< /D [ 10476 0 R /XYZ 81.077 346.571 null ] >>
+endobj
+161 0 obj
+<< /D [ 10476 0 R /XYZ 79.37 321.117 null ] >>
+endobj
+10503 0 obj
+<< /D [ 10476 0 R /XYZ 81.077 252.774 null ] >>
+endobj
+10504 0 obj
+<< /D [ 10476 0 R /XYZ 81.077 241.815 null ] >>
+endobj
+10505 0 obj
+<< /D [ 10476 0 R /XYZ 81.077 230.856 null ] >>
+endobj
+10506 0 obj
+<< /D [ 10476 0 R /XYZ 81.077 219.897 null ] >>
+endobj
+10507 0 obj
+<< /D [ 10476 0 R /XYZ 81.077 208.938 null ] >>
+endobj
+10508 0 obj
+<< /D [ 10476 0 R /XYZ 81.077 197.979 null ] >>
+endobj
+10509 0 obj
+<< /D [ 10476 0 R /XYZ 81.077 182.039 null ] >>
+endobj
+10510 0 obj
+<< /D [ 10476 0 R /XYZ 81.077 171.08 null ] >>
+endobj
+10511 0 obj
+<< /D [ 10476 0 R /XYZ 81.077 160.121 null ] >>
+endobj
+10512 0 obj
+<< /D [ 10476 0 R /XYZ 81.077 149.162 null ] >>
+endobj
+10513 0 obj
+<< /D [ 10476 0 R /XYZ 81.077 138.203 null ] >>
+endobj
+10514 0 obj
+<< /D [ 10476 0 R /XYZ 81.077 127.244 null ] >>
+endobj
+10515 0 obj
+<< /D [ 10476 0 R /XYZ 81.077 116.285 null ] >>
+endobj
+10516 0 obj
+<< /D [ 10476 0 R /XYZ 81.077 105.327 null ] >>
+endobj
+10475 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F19 184 0 R /F70 185 0 R /F20 186 0 R /F72 187 0 R /F76 318 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+10520 0 obj
+<< /Filter /FlateDecode /Length 2330 >>
+stream
+xڽZ[o~ϯ[d ;I&ꇅv[4H 9q}1iߜmFtɏ層yO,$$\l :a(!"Dd2"6[jS wwljjAywil'2?qeۥ߳[cKPM!c2!?~*ySa-v^FXŲA*lLeV>Rz:ډdB=vVViV[W=X-{eH쯛ɪϸ[wljDVj6Y pMe_e+ϓL]C)"”bWIA
+d<[ϳᱜ}h)%kXKY&o=0.r]g
+{lykqBLi-?lBni4{vNg\(mS| $.QnSēו{#
+-I 8=NA!e
+ةE@Rm
+endstream
+endobj
+10519 0 obj
+<< /Type /Page /Contents 10520 0 R /Resources 10518 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 10517 0 R >>
+endobj
+10521 0 obj
+<< /D [ 10519 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+10522 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 722.007 null ] >>
+endobj
+10523 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 711.048 null ] >>
+endobj
+10524 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 700.089 null ] >>
+endobj
+10525 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 689.131 null ] >>
+endobj
+10526 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 678.172 null ] >>
+endobj
+10527 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 667.213 null ] >>
+endobj
+10528 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 656.254 null ] >>
+endobj
+10529 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 645.295 null ] >>
+endobj
+10530 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 634.336 null ] >>
+endobj
+10531 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 623.377 null ] >>
+endobj
+10532 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 612.418 null ] >>
+endobj
+10533 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 601.459 null ] >>
+endobj
+10534 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 590.5 null ] >>
+endobj
+10535 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 579.542 null ] >>
+endobj
+10536 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 568.583 null ] >>
+endobj
+10537 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 557.624 null ] >>
+endobj
+10538 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 546.665 null ] >>
+endobj
+10539 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 520.762 null ] >>
+endobj
+10540 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 509.803 null ] >>
+endobj
+10541 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 498.844 null ] >>
+endobj
+10542 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 487.885 null ] >>
+endobj
+10543 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 476.926 null ] >>
+endobj
+10544 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 462.979 null ] >>
+endobj
+10545 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 452.02 null ] >>
+endobj
+10546 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 441.061 null ] >>
+endobj
+10547 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 430.102 null ] >>
+endobj
+10548 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 419.143 null ] >>
+endobj
+10549 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 408.184 null ] >>
+endobj
+10550 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 392.244 null ] >>
+endobj
+10551 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 381.285 null ] >>
+endobj
+10552 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 370.326 null ] >>
+endobj
+10553 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 359.367 null ] >>
+endobj
+10554 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 348.408 null ] >>
+endobj
+10555 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 337.449 null ] >>
+endobj
+10556 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 326.49 null ] >>
+endobj
+10557 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 310.55 null ] >>
+endobj
+10558 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 299.591 null ] >>
+endobj
+10559 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 288.632 null ] >>
+endobj
+10560 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 277.674 null ] >>
+endobj
+10561 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 266.715 null ] >>
+endobj
+10562 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 255.756 null ] >>
+endobj
+10563 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 239.816 null ] >>
+endobj
+10564 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 228.857 null ] >>
+endobj
+10565 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 217.898 null ] >>
+endobj
+10566 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 206.939 null ] >>
+endobj
+10567 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 195.98 null ] >>
+endobj
+10568 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 185.021 null ] >>
+endobj
+10569 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 174.062 null ] >>
+endobj
+10570 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 163.103 null ] >>
+endobj
+10571 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 152.144 null ] >>
+endobj
+10572 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 136.204 null ] >>
+endobj
+10573 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 125.245 null ] >>
+endobj
+10574 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 114.286 null ] >>
+endobj
+10575 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 103.327 null ] >>
+endobj
+10576 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 92.368 null ] >>
+endobj
+10577 0 obj
+<< /D [ 10519 0 R /XYZ 81.077 81.41 null ] >>
+endobj
+10518 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F19 184 0 R /F20 186 0 R /F73 189 0 R /F69 183 0 R /F76 318 0 R /F74 264 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+10580 0 obj
+<< /Filter /FlateDecode /Length 1772 >>
+stream
+xڵZnF}WC{S 6}(Т)ZZlx1Hw\75"93djAoI }{- X^1.(^hUl,=^~eXD mqꮺU-ʦ.튴ݯM6]{uey[Wgpnb/)a ~sˀzv4/zKj[I |M*/*D y޿ʛ+jJ875T<"IDs\wmӭu ݦ3Dj۸ߞ(|Z_ {0}>hO>rVShV:-YߺO4 Hp|WP6 U+0#cg@ &6[2bY hV;/ݩ}^:}]ijւFl
+^Yq *u"r/GOw,'Dnqwe/uuALJSn~?KP%p zq^j۵5OyI+[(4ϫExT)iuF}\n|U[ &rM6P#-T>+o
+SFW0 Lơ}8Я!YJWv:;0(B{c[[<"HC􎵮"_$.0ݮ^4?tz"?}vr}z쪬jYм`ʄ/9LזDqmԄ<6 dba"4^>lqOl|fR)HBT!GǜNe$̓" ^8
+Mb1"M2*ƖVC6?"iT Nh"!#4EcT ^43B6IqcU>0
+pхlB6 5%ѿ⦦
+PN'-7&)9DI,`2dUnSoFқ6ʮڶMiͫ[x\D%xMcY]=tCX."l\9?HMyIF)x"L!"|p~%9<ZrkA,YJ9G
+endstream
+endobj
+10579 0 obj
+<< /Type /Page /Contents 10580 0 R /Resources 10578 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 10517 0 R >>
+endobj
+10581 0 obj
+<< /D [ 10579 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+10582 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+10583 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+10584 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+10585 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+10586 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+10587 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+10588 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+10589 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+10590 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+10591 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+10592 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+10593 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 637.325 null ] >>
+endobj
+10594 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 626.366 null ] >>
+endobj
+10595 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 615.407 null ] >>
+endobj
+10596 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 604.448 null ] >>
+endobj
+10597 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 593.489 null ] >>
+endobj
+10598 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 577.549 null ] >>
+endobj
+10599 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 566.59 null ] >>
+endobj
+10600 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 555.631 null ] >>
+endobj
+10601 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 544.672 null ] >>
+endobj
+10602 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 533.713 null ] >>
+endobj
+10603 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 522.754 null ] >>
+endobj
+10604 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 511.796 null ] >>
+endobj
+10605 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 500.837 null ] >>
+endobj
+10606 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 484.896 null ] >>
+endobj
+10607 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 473.938 null ] >>
+endobj
+10608 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 462.979 null ] >>
+endobj
+10609 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 452.02 null ] >>
+endobj
+10610 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 441.061 null ] >>
+endobj
+10611 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 430.102 null ] >>
+endobj
+10612 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 414.162 null ] >>
+endobj
+10613 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 403.203 null ] >>
+endobj
+10614 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 392.244 null ] >>
+endobj
+10615 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 381.285 null ] >>
+endobj
+10616 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 370.326 null ] >>
+endobj
+10617 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 359.367 null ] >>
+endobj
+10618 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 343.427 null ] >>
+endobj
+10619 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 332.468 null ] >>
+endobj
+10620 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 321.509 null ] >>
+endobj
+10621 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 310.55 null ] >>
+endobj
+10622 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 299.591 null ] >>
+endobj
+10623 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 288.632 null ] >>
+endobj
+10624 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 272.692 null ] >>
+endobj
+10625 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 261.733 null ] >>
+endobj
+10626 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 250.774 null ] >>
+endobj
+10627 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 239.816 null ] >>
+endobj
+10628 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 228.857 null ] >>
+endobj
+10629 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 217.898 null ] >>
+endobj
+10630 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 201.957 null ] >>
+endobj
+10631 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 190.999 null ] >>
+endobj
+10632 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 180.04 null ] >>
+endobj
+10633 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 169.081 null ] >>
+endobj
+10634 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 158.122 null ] >>
+endobj
+10635 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 142.182 null ] >>
+endobj
+10636 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 131.223 null ] >>
+endobj
+10637 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 120.264 null ] >>
+endobj
+10638 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 109.305 null ] >>
+endobj
+10639 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 98.346 null ] >>
+endobj
+10640 0 obj
+<< /D [ 10579 0 R /XYZ 81.077 87.387 null ] >>
+endobj
+10578 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F74 264 0 R /F19 184 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+10643 0 obj
+<< /Filter /FlateDecode /Length 2060 >>
+stream
+xڭMoFB{h
+7S6I[!h h 5HʮE()are|9gfv-nEt|e\\^<{mB$R,.|f]XYdb]$<O6"f12<,Xŋm}sUfK-U:krWysvM۽'LO##q]D9Bcm0dog[D XZϮشk]m־M eY }I>m_hXfԢ%R'>?nD,4kF3
+,9p
+-IOi$b꧑MP{ivxh֏?.O`ըϜ~oQh@%0u]e~lڴBna-ŪT@6IΚBFY-0H,a)!g)$i tCP)yܱqUyyn"MVKv$SC0& CeH?DA?dL ksHeSl/%30H83@44+7ώW_.:Jr
+ < !24&'T#E$-!5yAi(0 vtC%]y]cĀV ,-b-aB~ aha <
+տ:-I{g0z t>i n?Xyo]Y<i;Xjo{hx8-$5gV̙E9:ָarh# >g"(C͉IMZmƍYXX$5t{2 HCY*&cNqQP;7YYYe7 tVtV2;Y>RqiծHC|fcZiiijJjHrjYO#unwe @FkIgUz0}|ޏHG+xcvlSa>=5jКtz千e]dOʭdK@\VUܮ&CN 71mņj:-1
+4H1 =c}:HCBSihڑRI'58д# [:A؆E*
+(
+E#퉓>g:9m_/f܏H@w~qElz -?*7i?ǧtmos?}64uGֻ-TeZ@F SǚV 59DT x-[tARծݎ+= @jr ,~'
+ŕI6~3( F7Sh%Tӗ*4*F$b^+ˊbf!Ng-T1fh fxH<R6ai*= XP̩y珂cIԵPH2AS;Kݎ.@Av9\B((P9Ś KOM316摚IT$3s lLⳳ :#5\q"[<UפܓS.営749-mG
+endstream
+endobj
+10642 0 obj
+<< /Type /Page /Contents 10643 0 R /Resources 10641 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 10517 0 R >>
+endobj
+10644 0 obj
+<< /D [ 10642 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+10645 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+10646 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+10647 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+10648 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+10649 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+10650 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 709.191 null ] >>
+endobj
+10651 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 698.232 null ] >>
+endobj
+10652 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 687.273 null ] >>
+endobj
+10653 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 676.314 null ] >>
+endobj
+10654 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 665.355 null ] >>
+endobj
+10655 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 654.396 null ] >>
+endobj
+10656 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 638.591 null ] >>
+endobj
+10657 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 627.632 null ] >>
+endobj
+10658 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 616.673 null ] >>
+endobj
+10659 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 605.714 null ] >>
+endobj
+10660 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 594.755 null ] >>
+endobj
+10661 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 583.796 null ] >>
+endobj
+10662 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 567.991 null ] >>
+endobj
+10663 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 557.032 null ] >>
+endobj
+10664 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 546.073 null ] >>
+endobj
+10665 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 535.114 null ] >>
+endobj
+10666 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 524.155 null ] >>
+endobj
+10667 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 513.196 null ] >>
+endobj
+10668 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 497.391 null ] >>
+endobj
+10669 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 486.432 null ] >>
+endobj
+10670 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 475.473 null ] >>
+endobj
+10671 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 464.514 null ] >>
+endobj
+10672 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 453.555 null ] >>
+endobj
+10673 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 442.596 null ] >>
+endobj
+10674 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 431.637 null ] >>
+endobj
+10675 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 415.832 null ] >>
+endobj
+10676 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 404.873 null ] >>
+endobj
+10677 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 393.914 null ] >>
+endobj
+10678 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 382.955 null ] >>
+endobj
+10679 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 371.996 null ] >>
+endobj
+10680 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 361.037 null ] >>
+endobj
+10681 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 350.078 null ] >>
+endobj
+10682 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 339.119 null ] >>
+endobj
+10683 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 328.16 null ] >>
+endobj
+10684 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 317.201 null ] >>
+endobj
+10685 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 301.396 null ] >>
+endobj
+10686 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 290.437 null ] >>
+endobj
+10687 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 279.478 null ] >>
+endobj
+10688 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 268.519 null ] >>
+endobj
+10689 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 257.56 null ] >>
+endobj
+10690 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 246.601 null ] >>
+endobj
+10691 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 230.796 null ] >>
+endobj
+10692 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 219.837 null ] >>
+endobj
+10693 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 208.878 null ] >>
+endobj
+10694 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 197.919 null ] >>
+endobj
+10695 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 186.96 null ] >>
+endobj
+10696 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 176.001 null ] >>
+endobj
+10697 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 165.042 null ] >>
+endobj
+10698 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 149.237 null ] >>
+endobj
+10699 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 138.278 null ] >>
+endobj
+10700 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 127.319 null ] >>
+endobj
+10701 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 116.36 null ] >>
+endobj
+10702 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 105.401 null ] >>
+endobj
+10703 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 94.442 null ] >>
+endobj
+10704 0 obj
+<< /D [ 10642 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+10641 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F74 264 0 R /F19 184 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+10707 0 obj
+<< /Filter /FlateDecode /Length 2198 >>
+stream
+xڽ[o6~_aVMiõhq(=R uEPhJ6 ÙoH:<mͷ7J{?o4b ls%1(7ZQ(o~JmY_~7!RJ81 q˄Є&YX+rP9gNΔ~xЊ"!ܚdØe qc-u?ڮeMqC1/pv{Q`9G`9ʫfeQ|&Fɵ%J\0bP#|1\>Ou_WoǢ,~L~u˛>oiW
+JFn)4{F<z&\v:k%rVFB+1z/)BB/,~LcKV8~ n^ å^C̵1P/35!Iš
+
+E6NΖ~Ϋvh H7u:ǝFY=Q4ht\qv|CNݧ]S6vz eZq>V[PHBqu3BWw |\ѡM]7}irW% 2OqB0:/8_ԏevfn:B+XL¢<ƫ<!#@ _lZ{IifCp<|
+ΞBR ]qA>[v:;)PKZe!;-uŌs!bF~j78/V#Ձ?o
+endstream
+endobj
+10706 0 obj
+<< /Type /Page /Contents 10707 0 R /Resources 10705 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 10517 0 R >>
+endobj
+10708 0 obj
+<< /D [ 10706 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+10709 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+10710 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+10711 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+10712 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+10713 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+10714 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+10715 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+10716 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+10717 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 681.16 null ] >>
+endobj
+10718 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 670.202 null ] >>
+endobj
+10719 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 659.243 null ] >>
+endobj
+10720 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 648.284 null ] >>
+endobj
+10721 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 637.325 null ] >>
+endobj
+10722 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 626.366 null ] >>
+endobj
+10723 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 615.407 null ] >>
+endobj
+10724 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 604.448 null ] >>
+endobj
+10725 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 593.489 null ] >>
+endobj
+10726 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 577.549 null ] >>
+endobj
+10727 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 566.59 null ] >>
+endobj
+10728 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 555.631 null ] >>
+endobj
+10729 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 544.672 null ] >>
+endobj
+10730 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 533.713 null ] >>
+endobj
+10731 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 522.754 null ] >>
+endobj
+10732 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 511.796 null ] >>
+endobj
+10733 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 500.837 null ] >>
+endobj
+10734 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 489.878 null ] >>
+endobj
+10735 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 478.919 null ] >>
+endobj
+10736 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 467.96 null ] >>
+endobj
+10737 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 457.001 null ] >>
+endobj
+10738 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 446.042 null ] >>
+endobj
+10739 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 435.083 null ] >>
+endobj
+10740 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 424.124 null ] >>
+endobj
+10741 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 413.165 null ] >>
+endobj
+10742 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 397.225 null ] >>
+endobj
+10743 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 386.266 null ] >>
+endobj
+10744 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 375.307 null ] >>
+endobj
+10745 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 364.349 null ] >>
+endobj
+10746 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 353.39 null ] >>
+endobj
+10747 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 342.431 null ] >>
+endobj
+10748 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 331.472 null ] >>
+endobj
+10749 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 315.532 null ] >>
+endobj
+10750 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 304.573 null ] >>
+endobj
+10751 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 293.614 null ] >>
+endobj
+10752 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 282.655 null ] >>
+endobj
+10753 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 271.696 null ] >>
+endobj
+10754 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 255.756 null ] >>
+endobj
+10755 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 244.797 null ] >>
+endobj
+10756 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 233.838 null ] >>
+endobj
+10757 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 222.879 null ] >>
+endobj
+10758 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 211.92 null ] >>
+endobj
+10759 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 195.98 null ] >>
+endobj
+10760 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 185.021 null ] >>
+endobj
+10761 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 174.062 null ] >>
+endobj
+10762 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 163.103 null ] >>
+endobj
+10763 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 152.144 null ] >>
+endobj
+10764 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 141.185 null ] >>
+endobj
+10765 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 130.226 null ] >>
+endobj
+10766 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 114.286 null ] >>
+endobj
+10767 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 103.327 null ] >>
+endobj
+10768 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 92.368 null ] >>
+endobj
+10769 0 obj
+<< /D [ 10706 0 R /XYZ 81.077 81.41 null ] >>
+endobj
+10705 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F74 264 0 R /F19 184 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+10772 0 obj
+<< /Filter /FlateDecode /Length 2634 >>
+stream
+xڭ[MW)qF'KIUI{HbXXrv l
+4~ҌʁB"%$D\P K@h84 [W=9=ɻCQVoȇV{[az 7:hbH3Ԋu
+n5ec4Yy62hǘvÏ,ۣ;I@z>~J`uE=Z#i*#\LBoP yVc#RGF^#͆5& B/ vRϡu&BD raJ8(7S&v֙C']x梾}AZG/ESUnWDacCȄ&fVhq %Z,  ';BkAD.M_xӝ]Y ̆zL.B%g4 9 i3BS.p%+^ynL&XEnP ?Z?G.u[]w vڐE̢a4%B7;_"w4Jl7Dc4 '
++$o!4y0
+Оck 3ڵs|B?%dGՑW~HE*#Q*}>ŦQe -m-W[f:P\6f֏y˳ߺ X1$/< A뀹eR%XW_3=E[ V6;{/mQ_>.Nls̟\MK*'6-mʇĤB]<c&("dpYEqiKk `zI KeIS1v5ZuCciD(fFDB=q@z84m Mcܲi妎/,7ُwƈ#4
+{pcZCVztwhmba
+endstream
+endobj
+10771 0 obj
+<< /Type /Page /Contents 10772 0 R /Resources 10770 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 10517 0 R >>
+endobj
+10773 0 obj
+<< /D [ 10771 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+10774 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+10775 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+10776 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+10777 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 730.974 null ] >>
+endobj
+10778 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 720.015 null ] >>
+endobj
+10779 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 709.056 null ] >>
+endobj
+10780 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 698.097 null ] >>
+endobj
+10781 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 687.138 null ] >>
+endobj
+10782 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 676.179 null ] >>
+endobj
+10783 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 660.239 null ] >>
+endobj
+10784 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 649.28 null ] >>
+endobj
+10785 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 638.321 null ] >>
+endobj
+10786 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 627.362 null ] >>
+endobj
+10787 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 616.403 null ] >>
+endobj
+10788 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 605.444 null ] >>
+endobj
+10789 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 594.486 null ] >>
+endobj
+10790 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 583.527 null ] >>
+endobj
+10791 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 567.586 null ] >>
+endobj
+10792 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 556.627 null ] >>
+endobj
+10793 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 545.669 null ] >>
+endobj
+10794 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 534.71 null ] >>
+endobj
+10795 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 523.751 null ] >>
+endobj
+10796 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 512.792 null ] >>
+endobj
+10797 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 501.833 null ] >>
+endobj
+10798 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 490.874 null ] >>
+endobj
+10799 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 474.934 null ] >>
+endobj
+10800 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 463.975 null ] >>
+endobj
+10801 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 453.016 null ] >>
+endobj
+10802 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 442.057 null ] >>
+endobj
+10803 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 431.098 null ] >>
+endobj
+10804 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 420.139 null ] >>
+endobj
+10805 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 409.18 null ] >>
+endobj
+10806 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 398.221 null ] >>
+endobj
+10807 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 387.263 null ] >>
+endobj
+10808 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 371.322 null ] >>
+endobj
+10809 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 360.363 null ] >>
+endobj
+10810 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 349.405 null ] >>
+endobj
+10811 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 338.446 null ] >>
+endobj
+10812 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 327.487 null ] >>
+endobj
+10813 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 316.528 null ] >>
+endobj
+10814 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 305.569 null ] >>
+endobj
+10815 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 294.61 null ] >>
+endobj
+10816 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 278.67 null ] >>
+endobj
+10817 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 267.711 null ] >>
+endobj
+10818 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 256.752 null ] >>
+endobj
+10819 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 245.793 null ] >>
+endobj
+10820 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 234.834 null ] >>
+endobj
+10821 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 223.875 null ] >>
+endobj
+10822 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 207.935 null ] >>
+endobj
+10823 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 196.976 null ] >>
+endobj
+10824 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 186.017 null ] >>
+endobj
+10825 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 175.058 null ] >>
+endobj
+10826 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 164.099 null ] >>
+endobj
+10827 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 153.141 null ] >>
+endobj
+10828 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 137.2 null ] >>
+endobj
+10829 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 126.241 null ] >>
+endobj
+10830 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 115.283 null ] >>
+endobj
+10831 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 104.324 null ] >>
+endobj
+10832 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 93.365 null ] >>
+endobj
+10833 0 obj
+<< /D [ 10771 0 R /XYZ 81.077 82.406 null ] >>
+endobj
+10770 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F74 264 0 R /F19 184 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+10836 0 obj
+<< /Filter /FlateDecode /Length 2166 >>
+stream
+xڭZM600$os
+K lBd!oߢdQ*g"9LcXdXUQ|uoLxZiRj}w#G|%VeV$
+ƭX~οqo?XJVs%ah/.澸&߱aٴp&sI?ȶfNe`N`BM?oi}xOSW,*pS<uMYK$Wq֊9wm!:ִ'< 8C>y]wM3F ;V갿ߏS_U:~xԯ/OD:XF.Q\6ZJaHSnapKr8B_j՛k}C>>(a^CP*盼zz7!+KS6+Kh+;Ŏݫ3)<SLI9ɴl;JDLqXmq[~ž4i`qʂ5GӤU𳘗 %\.p̸HBҦ5G%1f9KzX
+AZ_LSs@OUc&f|gryY>krJKM"- -#4B@uyW$e5S(nw>'v;uBlSM KL$3q!C@`C}(wx.:2 H:ßwPt,RM2qNbsܟkR%.ү/B <Q,UsF%,um5#ssb4tleNEz4zFh2=a1I98T S!.;R sLA^,e1 B _U>‡>*Y*4Blf$Ň*LbGg[nQGIBuڿS+CҚM>:Rl䣬Ԑ4=qP<~訡.;kW @=!mSEZ u;g\-u-1La ɪ~\YjL*9!OMأ$M!\7>:)દ۬*d1CS@K-HȎEoD)P$A-o)QX9Łnӑz9v i(,E70~Ww?`8f$9$Ǵh>B1e+|MQ;rGWQ4ejA汲l05KK2xl#UGAJ09*R9F|cR)XbQrLESA= %kdb1 k2U=].Yc4ؓA`@/}b6$phL /EA$ځ!xm0#7d5`L+sH,q@ulfwEavة!s4 lEeyT4uەS M 4oKX25X49~ꎫ՞tj8iZ?_p d!MSwwYȗaPxq$c.2VcS˼ 9Y =&{x{e˞oԴBӃjF.4.F4U^ |0n4B>,$}gX*A.J `od[?4p37)õ2iĹ݉z'Bw:BW!P{:و á?JI4AL><MWl72o' v J)3<L|21-Ҽ"҆}o_ӯɃ:*M sO ģVE2vDV uSVW<Ni(#U?Yh׾T ɌKN
+Ȑ_,D>m1K\)@(6 M!4Y8*ƍ5S_\J3-3&B"L9ǪA^.82Ewǻx#.kX95!pWo 9^$iE^B25vhw3N(yj]NS?|43`s=2ӟ#NmsyOb7%
+P+>* kA1A<v~}%K
+endstream
+endobj
+10835 0 obj
+<< /Type /Page /Contents 10836 0 R /Resources 10834 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 10517 0 R >>
+endobj
+10837 0 obj
+<< /D [ 10835 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+10838 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+10839 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+10840 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 741.933 null ] >>
+endobj
+10841 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 730.974 null ] >>
+endobj
+10842 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 720.015 null ] >>
+endobj
+10843 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 709.056 null ] >>
+endobj
+10844 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 698.097 null ] >>
+endobj
+10845 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 687.138 null ] >>
+endobj
+10846 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 676.179 null ] >>
+endobj
+10847 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 660.239 null ] >>
+endobj
+10848 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 649.28 null ] >>
+endobj
+10849 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 638.321 null ] >>
+endobj
+10850 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 627.362 null ] >>
+endobj
+10851 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 616.403 null ] >>
+endobj
+10852 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 605.444 null ] >>
+endobj
+10853 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 594.486 null ] >>
+endobj
+10854 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 583.527 null ] >>
+endobj
+10855 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 572.568 null ] >>
+endobj
+10856 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 561.609 null ] >>
+endobj
+10857 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 545.669 null ] >>
+endobj
+10858 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 534.71 null ] >>
+endobj
+10859 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 523.751 null ] >>
+endobj
+10860 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 512.792 null ] >>
+endobj
+10861 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 501.833 null ] >>
+endobj
+10862 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 490.874 null ] >>
+endobj
+10863 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 479.915 null ] >>
+endobj
+10864 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 468.956 null ] >>
+endobj
+10865 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 457.997 null ] >>
+endobj
+10866 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 447.038 null ] >>
+endobj
+10867 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 436.08 null ] >>
+endobj
+10868 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 425.121 null ] >>
+endobj
+10869 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 409.18 null ] >>
+endobj
+10870 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 398.221 null ] >>
+endobj
+10871 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 387.263 null ] >>
+endobj
+10872 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 376.304 null ] >>
+endobj
+10873 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 365.345 null ] >>
+endobj
+10874 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 354.386 null ] >>
+endobj
+10875 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 343.427 null ] >>
+endobj
+10876 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 327.487 null ] >>
+endobj
+10877 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 316.528 null ] >>
+endobj
+10878 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 305.569 null ] >>
+endobj
+10879 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 294.61 null ] >>
+endobj
+10880 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 283.651 null ] >>
+endobj
+10881 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 267.711 null ] >>
+endobj
+10882 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 256.752 null ] >>
+endobj
+10883 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 245.793 null ] >>
+endobj
+10884 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 234.834 null ] >>
+endobj
+10885 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 223.875 null ] >>
+endobj
+10886 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 212.916 null ] >>
+endobj
+10887 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 201.957 null ] >>
+endobj
+10888 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 190.999 null ] >>
+endobj
+10889 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 175.058 null ] >>
+endobj
+10890 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 164.099 null ] >>
+endobj
+10891 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 153.141 null ] >>
+endobj
+10892 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 142.182 null ] >>
+endobj
+10893 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 131.223 null ] >>
+endobj
+10894 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 120.264 null ] >>
+endobj
+10895 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 104.324 null ] >>
+endobj
+10896 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 93.365 null ] >>
+endobj
+10897 0 obj
+<< /D [ 10835 0 R /XYZ 81.077 82.406 null ] >>
+endobj
+10834 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F74 264 0 R /F19 184 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+10900 0 obj
+<< /Filter /FlateDecode /Length 2120 >>
+stream
+xڭZ[o~M̈́s1"vhBM"{ϐҐ#ے@ҧsx.߹ ,}_w7^i>f}AGɌΌ"V$n6~eJ}{7c0e mM][<6wM64ߺv]Vms{v@A .eayY-b!EKiP,'Z$-V7<!^<AqG罰:na4M5#ň)潥usLX!I+DR*x6Y{i?fy.\eV 3iC)Lв)V [';
+dp/BY\0B<ʭMXGw"]hA a6t<^2;J]l:.tӨgo_} HY 1RiH0 S>>BWM~5qY [ nFgWh2L~_UemormzV>d Dh̚2 Yk !r|
+C<#gsH{t-n2|~pl#͡ٸ eo7E*>Q\o#N&ptcqj։tcqTG)?{V1I
+xUaU6\ I dbI`AuWA#4$04A6nP_$06("4$DJBK±5>Z&&-ZqUVj
+-AKBKa\Y;
+_t Ad80 `6B㓊_!$HW๪OQd?!q^g?t  W1"`ɩc
+ fPr}7{YYM]:ca6PVWxg}w@ q ['Fco~^<w#A B 6-t#tcawݍ7KxwѼA:  nQVGRl4gRCj.XazPSAt27D`0zH,Ou 'Z "K{!"HǹQYZ"!=d]^.{rz2Í:nݼm^E4&:m%dPW4KRfw#NzWdy.us#1*̲ yC#}z^+1)ťL Y5 ZbZ>
+endstream
+endobj
+10899 0 obj
+<< /Type /Page /Contents 10900 0 R /Resources 10898 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 10517 0 R >>
+endobj
+10901 0 obj
+<< /D [ 10899 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+10902 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+10903 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+10904 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+10905 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+10906 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 720.33 null ] >>
+endobj
+10907 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 709.371 null ] >>
+endobj
+10908 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 698.412 null ] >>
+endobj
+10909 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 687.454 null ] >>
+endobj
+10910 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 676.495 null ] >>
+endobj
+10911 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 665.536 null ] >>
+endobj
+10912 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 654.577 null ] >>
+endobj
+10913 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 638.952 null ] >>
+endobj
+10914 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 627.993 null ] >>
+endobj
+10915 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 617.034 null ] >>
+endobj
+10916 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 606.075 null ] >>
+endobj
+10917 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 595.117 null ] >>
+endobj
+10918 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 584.158 null ] >>
+endobj
+10919 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 573.199 null ] >>
+endobj
+10920 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 562.24 null ] >>
+endobj
+10921 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 546.615 null ] >>
+endobj
+10922 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 535.656 null ] >>
+endobj
+10923 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 524.697 null ] >>
+endobj
+10924 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 513.738 null ] >>
+endobj
+10925 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 502.78 null ] >>
+endobj
+10926 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 491.821 null ] >>
+endobj
+10927 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 480.862 null ] >>
+endobj
+10928 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 469.903 null ] >>
+endobj
+10929 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 458.944 null ] >>
+endobj
+10930 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 447.985 null ] >>
+endobj
+10931 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 437.026 null ] >>
+endobj
+10932 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 426.067 null ] >>
+endobj
+10933 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 415.108 null ] >>
+endobj
+10934 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 399.484 null ] >>
+endobj
+10935 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 388.525 null ] >>
+endobj
+10936 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 377.566 null ] >>
+endobj
+10937 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 366.607 null ] >>
+endobj
+10938 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 355.648 null ] >>
+endobj
+10939 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 344.689 null ] >>
+endobj
+10940 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 333.73 null ] >>
+endobj
+10941 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 322.771 null ] >>
+endobj
+10942 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 307.147 null ] >>
+endobj
+10943 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 296.188 null ] >>
+endobj
+10944 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 285.229 null ] >>
+endobj
+10945 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 274.27 null ] >>
+endobj
+10946 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 263.311 null ] >>
+endobj
+10947 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 252.352 null ] >>
+endobj
+10948 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 236.727 null ] >>
+endobj
+10949 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 225.768 null ] >>
+endobj
+10950 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 214.81 null ] >>
+endobj
+10951 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 203.851 null ] >>
+endobj
+10952 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 192.892 null ] >>
+endobj
+10953 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 181.933 null ] >>
+endobj
+10954 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 170.974 null ] >>
+endobj
+10955 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 155.349 null ] >>
+endobj
+10956 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 144.39 null ] >>
+endobj
+10957 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 133.431 null ] >>
+endobj
+10958 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 122.473 null ] >>
+endobj
+10959 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 111.514 null ] >>
+endobj
+10960 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 100.555 null ] >>
+endobj
+10961 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 89.596 null ] >>
+endobj
+10962 0 obj
+<< /D [ 10899 0 R /XYZ 81.077 78.637 null ] >>
+endobj
+10898 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F74 264 0 R /F19 184 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+10965 0 obj
+<< /Filter /FlateDecode /Length 1917 >>
+stream
+xڵZnF}W&@%Oi$mѦC/)Zli]~{g)iU]8eA39gf(:3KTxߟxgHg舍&ьPF菧rZ/i7i-l%L}:^rA(.p ]_\e|sqΦWE+;+rK.;Npt:4z *cHPG)GȄ ? G1aa$RrQ:.i,—s^Vҟ~qQU>#h?%|AUƧ&˃m0۔Rp8W&bR/b[,Cʼɫ͛uh.uDXS$gt\EamkG6J}Q6m=C umD,Υ.7`iV8ShȀ_LY"M!_׹7ܔWy1iIT/?l"$ΠhK$12.<fM96G; \RԴ\bٔڏ)45螊-8~B
+cpfN.Z]4%ZBH\uяEMP.%h %qQrQhBZ7R297FKC(C%U
+jomO훀KQ! rc3 vˤ.:8zYNsI›VSK.?T(Q#ARϓ %1.v¢/AIWQYu0:bi,|n6m1}XLo*ۄOCXIqњ&NĮC2\*uo,r]LN,8Οe݉V$/n^~j]C_"Gb?IJw>A,Foydp,
+eLCB1Bbot-OW:I-ĵ( 6a`{CYn HYrJׯ$TѐXmEYOGYN Iktƾ=@0fcWԠ#1` MRiG?eMOꈔp[$)$6$7Z'V nNР$}k#dP1$臩KA N]c TrpCEE8J:A'h$iKjq %<tPzFQ`UO)K̪ܳ ,Ht8AEDHF:psm>
+`Jm*2=AVSm)?[vP!O'<<OUVݿ?`Y9A֫ |ݲaloqP%0k\'v mXo G rpg9 OHh O8&J['h4p刋DqcfX<mb,ʳ2Tqu=(u1@g_ra Q4n pnf1դO㜀{B :*ƩG/֫n7/(zzS.឵ؿZ ܦO ܾ)Xr5?
+NKI;kpGs_4pvZb9llu :
+FL!OX?U2Jq(3Lku
+ ,}w c{`pAbUgqcW`p]An.*{<k%ր$a5mFU0LvhR f>` ;B27_s(n8,Ggv Y^-Z
+endstream
+endobj
+10964 0 obj
+<< /Type /Page /Contents 10965 0 R /Resources 10963 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 10517 0 R >>
+endobj
+10966 0 obj
+<< /D [ 10964 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+10967 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+10968 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+10969 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+10970 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+10971 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 720.015 null ] >>
+endobj
+10972 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 709.056 null ] >>
+endobj
+10973 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 698.097 null ] >>
+endobj
+10974 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 687.138 null ] >>
+endobj
+10975 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 676.179 null ] >>
+endobj
+10976 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 665.22 null ] >>
+endobj
+10977 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 654.261 null ] >>
+endobj
+10978 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 638.321 null ] >>
+endobj
+10979 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 627.362 null ] >>
+endobj
+10980 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 616.403 null ] >>
+endobj
+10981 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 605.444 null ] >>
+endobj
+10982 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 594.486 null ] >>
+endobj
+10983 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 583.527 null ] >>
+endobj
+10984 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 572.568 null ] >>
+endobj
+10985 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 556.627 null ] >>
+endobj
+10986 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 545.669 null ] >>
+endobj
+10987 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 534.71 null ] >>
+endobj
+10988 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 523.751 null ] >>
+endobj
+10989 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 512.792 null ] >>
+endobj
+10990 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 501.833 null ] >>
+endobj
+10991 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 490.874 null ] >>
+endobj
+10992 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 479.915 null ] >>
+endobj
+10993 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 463.975 null ] >>
+endobj
+10994 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 453.016 null ] >>
+endobj
+10995 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 442.057 null ] >>
+endobj
+10996 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 431.098 null ] >>
+endobj
+10997 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 420.139 null ] >>
+endobj
+10998 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 409.18 null ] >>
+endobj
+10999 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 398.221 null ] >>
+endobj
+11000 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 387.263 null ] >>
+endobj
+11001 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 371.322 null ] >>
+endobj
+11002 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 360.363 null ] >>
+endobj
+11003 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 349.405 null ] >>
+endobj
+11004 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 338.446 null ] >>
+endobj
+11005 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 327.487 null ] >>
+endobj
+11006 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 316.528 null ] >>
+endobj
+11007 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 305.569 null ] >>
+endobj
+11008 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 289.629 null ] >>
+endobj
+11009 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 278.67 null ] >>
+endobj
+11010 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 267.711 null ] >>
+endobj
+11011 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 256.752 null ] >>
+endobj
+11012 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 245.793 null ] >>
+endobj
+11013 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 234.834 null ] >>
+endobj
+11014 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 223.875 null ] >>
+endobj
+11015 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 212.916 null ] >>
+endobj
+11016 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 201.957 null ] >>
+endobj
+11017 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 190.999 null ] >>
+endobj
+11018 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 175.058 null ] >>
+endobj
+11019 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 164.099 null ] >>
+endobj
+11020 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 153.141 null ] >>
+endobj
+11021 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 142.182 null ] >>
+endobj
+11022 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 131.223 null ] >>
+endobj
+11023 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 120.264 null ] >>
+endobj
+11024 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 109.305 null ] >>
+endobj
+11025 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 93.365 null ] >>
+endobj
+11026 0 obj
+<< /D [ 10964 0 R /XYZ 81.077 82.406 null ] >>
+endobj
+10963 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F74 264 0 R /F19 184 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+11029 0 obj
+<< /Filter /FlateDecode /Length 2022 >>
+stream
+xڽMoHMvt9el\F, ZmPTN)~Ģ9$%buu=䫻_}+3;ՇۏN4Pr#2+YnW>I?Wۏ֯UI,3<VH*m?gOtob% gYR_ '-OiQV$7L;I"ڼlCv!~Peˮ˻>oԯ}{(kɺ̫â<ZaQaտv_Ӳi=쳶L ^Lr%FC0YK2o}u(-y
+*/7a f4!52-[hu*t $\2k<dHk^MweUg[2ҌP"V< iHMƃq9sMBGMUozlg3&@)OT 8{h7sʐ2$2$9 nj
+2 ˇiMR*
+͚͐Շbд7U
+ݐpݐd&'aR1-ϚUl7JR\Xm'vt^||5Pj4<RI<mH=dt;/b<%&d$:-HrP΄HL@z!I铕]d.NIÊ*&SG9}]]m
+I^
+endstream
+endobj
+11028 0 obj
+<< /Type /Page /Contents 11029 0 R /Resources 11027 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 10517 0 R >>
+endobj
+11030 0 obj
+<< /D [ 11028 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+11031 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+11032 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+11033 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+11034 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+11035 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+11036 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+11037 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 698.097 null ] >>
+endobj
+11038 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 687.138 null ] >>
+endobj
+11039 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 676.179 null ] >>
+endobj
+11040 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 665.22 null ] >>
+endobj
+11041 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 654.261 null ] >>
+endobj
+11042 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 643.302 null ] >>
+endobj
+11043 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 632.344 null ] >>
+endobj
+11044 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 621.385 null ] >>
+endobj
+11045 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 610.426 null ] >>
+endobj
+11046 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 599.467 null ] >>
+endobj
+11047 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 583.527 null ] >>
+endobj
+11048 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 572.568 null ] >>
+endobj
+11049 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 561.609 null ] >>
+endobj
+11050 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 550.65 null ] >>
+endobj
+11051 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 539.691 null ] >>
+endobj
+11052 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 528.732 null ] >>
+endobj
+11053 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 517.773 null ] >>
+endobj
+11054 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 506.814 null ] >>
+endobj
+11055 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 490.874 null ] >>
+endobj
+11056 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 479.915 null ] >>
+endobj
+11057 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 468.956 null ] >>
+endobj
+11058 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 457.997 null ] >>
+endobj
+11059 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 447.038 null ] >>
+endobj
+11060 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 436.08 null ] >>
+endobj
+11061 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 425.121 null ] >>
+endobj
+11062 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 409.18 null ] >>
+endobj
+11063 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 398.221 null ] >>
+endobj
+11064 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 387.263 null ] >>
+endobj
+11065 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 376.304 null ] >>
+endobj
+11066 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 365.345 null ] >>
+endobj
+11067 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 354.386 null ] >>
+endobj
+11068 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 343.427 null ] >>
+endobj
+11069 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 332.468 null ] >>
+endobj
+11070 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 316.528 null ] >>
+endobj
+11071 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 305.569 null ] >>
+endobj
+11072 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 294.61 null ] >>
+endobj
+11073 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 283.651 null ] >>
+endobj
+11074 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 272.692 null ] >>
+endobj
+11075 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 261.733 null ] >>
+endobj
+11076 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 245.793 null ] >>
+endobj
+11077 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 234.834 null ] >>
+endobj
+11078 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 223.875 null ] >>
+endobj
+11079 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 212.916 null ] >>
+endobj
+11080 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 201.957 null ] >>
+endobj
+11081 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 190.999 null ] >>
+endobj
+11082 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 180.04 null ] >>
+endobj
+11083 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 169.081 null ] >>
+endobj
+11084 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 153.141 null ] >>
+endobj
+11085 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 142.182 null ] >>
+endobj
+11086 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 131.223 null ] >>
+endobj
+11087 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 120.264 null ] >>
+endobj
+11088 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 109.305 null ] >>
+endobj
+11089 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 98.346 null ] >>
+endobj
+11090 0 obj
+<< /D [ 11028 0 R /XYZ 81.077 87.387 null ] >>
+endobj
+11027 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F74 264 0 R /F19 184 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+11093 0 obj
+<< /Filter /FlateDecode /Length 2183 >>
+stream
+xڭZmoF_ov_)P\-m]7͒Ғm>XÇ3;3]tEODϟ\_}+Ieo<DWle5̬fjޭs}w}v+KŽ2X
+ zW߭K,}S7աi7UQ_eo}?{#\V0ʣ2# m[8¤e9%LnjCz庩uOESuqKq]1~nIE^7#ve~Z­lNjj_TutWkHbg>l6}ϽOګDroG׭s);C$y>i9XTB*ex&CXί}.vj~~$@MVwU[ @]ܖvgYWeMоZtW* ]Pm;LI}U͡n"/}Kg!r莢&`c*}uC/gPD^94F+l0) 7:Mg?K+RȈ ՆZbq4<}(70ph!, g+h>ib5Gor;"AIV),]JO[
+I Y盆.!0Q)KOM*htlANN;C^G 2\p&CA 6}Lx6BuO1d6A$h:A9ƐPz}),*mS 2e )ETX z2OV(9ʒcH ΋67H[hER>FńO4ꦅ!i,"FqCT4Z(-qQZ+ʄǢ<n~QJ+U!eM,kH K ay٬x0-@Z@0ZSi٣뤒X5:':t;ۼ9e
+3v7+ϝ z-UKTI'm7mi xAM8b9%0 GG5.Hc49KQhܹW~
+!6eS/R5ivOe翅3=`K^73i_̣pEƉ}*Y0mص $-AӅq"PUV럏
+endstream
+endobj
+11092 0 obj
+<< /Type /Page /Contents 11093 0 R /Resources 11091 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 11155 0 R >>
+endobj
+11094 0 obj
+<< /D [ 11092 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+11095 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 768.832 null ] >>
+endobj
+11096 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 757.873 null ] >>
+endobj
+11097 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 746.914 null ] >>
+endobj
+11098 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 735.955 null ] >>
+endobj
+11099 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 724.996 null ] >>
+endobj
+11100 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 714.037 null ] >>
+endobj
+11101 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 703.078 null ] >>
+endobj
+11102 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 692.119 null ] >>
+endobj
+11103 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 676.179 null ] >>
+endobj
+11104 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 665.22 null ] >>
+endobj
+11105 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 654.261 null ] >>
+endobj
+11106 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 643.302 null ] >>
+endobj
+11107 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 632.344 null ] >>
+endobj
+11108 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 621.385 null ] >>
+endobj
+11109 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 610.426 null ] >>
+endobj
+11110 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 594.486 null ] >>
+endobj
+11111 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 583.527 null ] >>
+endobj
+11112 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 572.568 null ] >>
+endobj
+11113 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 561.609 null ] >>
+endobj
+11114 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 550.65 null ] >>
+endobj
+11115 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 539.691 null ] >>
+endobj
+11116 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 528.732 null ] >>
+endobj
+11117 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 517.773 null ] >>
+endobj
+11118 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 506.814 null ] >>
+endobj
+11119 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 490.874 null ] >>
+endobj
+11120 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 479.915 null ] >>
+endobj
+11121 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 468.956 null ] >>
+endobj
+11122 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 457.997 null ] >>
+endobj
+11123 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 447.038 null ] >>
+endobj
+11124 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 436.08 null ] >>
+endobj
+11125 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 420.139 null ] >>
+endobj
+11126 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 409.18 null ] >>
+endobj
+11127 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 398.221 null ] >>
+endobj
+11128 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 387.263 null ] >>
+endobj
+11129 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 376.304 null ] >>
+endobj
+11130 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 365.345 null ] >>
+endobj
+11131 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 354.386 null ] >>
+endobj
+11132 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 338.446 null ] >>
+endobj
+11133 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 327.487 null ] >>
+endobj
+11134 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 316.528 null ] >>
+endobj
+11135 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 305.569 null ] >>
+endobj
+11136 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 294.61 null ] >>
+endobj
+11137 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 283.651 null ] >>
+endobj
+11138 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 267.711 null ] >>
+endobj
+11139 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 256.752 null ] >>
+endobj
+11140 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 245.793 null ] >>
+endobj
+11141 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 234.834 null ] >>
+endobj
+11142 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 223.875 null ] >>
+endobj
+11143 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 212.916 null ] >>
+endobj
+11144 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 201.957 null ] >>
+endobj
+11145 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 186.017 null ] >>
+endobj
+11146 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 175.058 null ] >>
+endobj
+11147 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 164.099 null ] >>
+endobj
+11148 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 153.141 null ] >>
+endobj
+11149 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 142.182 null ] >>
+endobj
+11150 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 131.223 null ] >>
+endobj
+11151 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 120.264 null ] >>
+endobj
+11152 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 104.324 null ] >>
+endobj
+11153 0 obj
+<< /D [ 11092 0 R /XYZ 81.077 93.365 null ] >>
+endobj
+11154 0 obj
+<< /D [ 11092 0 R /XYZ 82.402 82.406 null ] >>
+endobj
+11091 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F74 264 0 R /F19 184 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+11158 0 obj
+<< /Filter /FlateDecode /Length 1666 >>
+stream
+xڽMoF: MdNh9Ma"LIqw3FhK3\μ/WbqN;x^:9=;y! E.Z]Ob!"IN.v?Bϳ_N+9R tAnt'4Ha)B4Aȟ"6yǗ~^ tFiNXeBψirnk1<t6VPio1߿?/?U]^~?:#IK NiҒ\ s^p.3P,O-`lǧ{F?? +f,myj=wcnd+(R/mvKv
+ERX)|!7Mry9`|w[M]~F&)x 7)0:Uu)xY`|Zev(]J0Y*tR5řo23I,>sR",BB9]uwMӼYYeC>>4?cc9+J N
+*y
+gS
+Jp4([-$"UHɫa k"L:NGMD
+g׼nwXbJC{ }78YH^ xfZ&inLazcuմSeyJ]~DfDe5`-sk5AU/6jHM< hoVUqw>,!mųXb7^[aI,m]5>|p>Grg/w(MW^]{l&h.%7~=ʮ+Ò:$=,dz: +&f_0 Wwr?ld
+ 'Z[^&@*q+~1΁t7dg#c-(ڃCc@!3x,CAf*FGCWOcB* b| 5J</H'dR
+42r ~tyf*FR'(ό`ԼhgD`lȚg .: Y.ͳ#rX۶|4e`S<HڢTVmg_|D۰%YO]؉[ͳX'25Xpȯ7'1_
+s@FBYO;^p+2
+ 2CcLi ¤fixލ_W*}N+R2<+FDE44Ut "= }&Xt,:&<z1L!68E=ފثqb5aG&%D3&(@"ofyavU_qL,rHX x_6п3PȥY x,Xu9
+'O/>(di9PY$8H'@=Fk8z3GsJSF;ם nRGEJCRKA66YIj̔Ԍ ǐR:0ȡ[ %uhȥ[!%uh63fWfp)p&uNq K`!r-2~g'~0
+endstream
+endobj
+11157 0 obj
+<< /Type /Page /Contents 11158 0 R /Resources 11156 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 11155 0 R >>
+endobj
+11159 0 obj
+<< /D [ 11157 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+11160 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 768.832 null ] >>
+endobj
+11161 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 757.873 null ] >>
+endobj
+11162 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 746.914 null ] >>
+endobj
+11163 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 735.955 null ] >>
+endobj
+11164 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 724.996 null ] >>
+endobj
+11165 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 714.037 null ] >>
+endobj
+11166 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 703.078 null ] >>
+endobj
+11167 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 692.119 null ] >>
+endobj
+11168 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 681.16 null ] >>
+endobj
+11169 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 670.202 null ] >>
+endobj
+11170 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 659.243 null ] >>
+endobj
+11171 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 648.284 null ] >>
+endobj
+11172 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 632.344 null ] >>
+endobj
+11173 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 621.385 null ] >>
+endobj
+11174 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 610.426 null ] >>
+endobj
+11175 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 599.467 null ] >>
+endobj
+11176 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 588.508 null ] >>
+endobj
+11177 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 577.549 null ] >>
+endobj
+11178 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 566.59 null ] >>
+endobj
+11179 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 555.631 null ] >>
+endobj
+11180 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 544.672 null ] >>
+endobj
+11181 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 533.713 null ] >>
+endobj
+11182 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 522.754 null ] >>
+endobj
+11183 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 511.796 null ] >>
+endobj
+11184 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 500.837 null ] >>
+endobj
+11185 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 484.896 null ] >>
+endobj
+11186 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 473.938 null ] >>
+endobj
+11187 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 462.979 null ] >>
+endobj
+11188 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 452.02 null ] >>
+endobj
+11189 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 441.061 null ] >>
+endobj
+11190 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 430.102 null ] >>
+endobj
+11191 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 419.143 null ] >>
+endobj
+11192 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 408.184 null ] >>
+endobj
+11193 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 397.225 null ] >>
+endobj
+11194 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 386.266 null ] >>
+endobj
+11195 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 375.307 null ] >>
+endobj
+11196 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 364.349 null ] >>
+endobj
+11197 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 353.39 null ] >>
+endobj
+11198 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 337.449 null ] >>
+endobj
+11199 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 326.49 null ] >>
+endobj
+11200 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 315.532 null ] >>
+endobj
+11201 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 304.573 null ] >>
+endobj
+11202 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 293.614 null ] >>
+endobj
+11203 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 282.655 null ] >>
+endobj
+11204 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 271.696 null ] >>
+endobj
+11205 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 260.737 null ] >>
+endobj
+11206 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 249.778 null ] >>
+endobj
+11207 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 238.819 null ] >>
+endobj
+11208 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 227.86 null ] >>
+endobj
+11209 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 216.901 null ] >>
+endobj
+11210 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 205.943 null ] >>
+endobj
+11211 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 194.984 null ] >>
+endobj
+11212 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 184.025 null ] >>
+endobj
+11213 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 168.085 null ] >>
+endobj
+11214 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 157.126 null ] >>
+endobj
+11215 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 146.167 null ] >>
+endobj
+11216 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 135.208 null ] >>
+endobj
+11217 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 124.249 null ] >>
+endobj
+11218 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 113.29 null ] >>
+endobj
+11219 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 102.331 null ] >>
+endobj
+11220 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 91.372 null ] >>
+endobj
+11221 0 obj
+<< /D [ 11157 0 R /XYZ 82.402 80.413 null ] >>
+endobj
+11156 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F74 264 0 R /F19 184 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+11224 0 obj
+<< /Filter /FlateDecode /Length 1914 >>
+stream
+xڽKoF5;MqOMaP"BH w(YvX'[f泛++_./^jwB?31sy+fƍ]nf?[gycôYS| eP]ÐG)8\Fw4B]m>lW˶nYR C!wwէ^.܇mYso FvO:&<`J)l\(f42ns A(զji^ Yrxشt]Ý|}/tϹdsG _ƍJ{ҒJp$ 48`/a
+9B P ݙt$S q 2iLm0x[\ ı S4q0)Fp?uβIiI1A&d8X>ΔM Oˢ5Phxө L~I*ϔ#!g-q  rLPjbZth
+a<S!ls!g\KcȾzzإ?H dY)  l}Xr>Ǚ7-yόpK
+2&EU~Ғ $KJd U 8M[\Z͋C>ea
+\AS`PLe FoǨK4F]dx)4sPLIYEغZw]ݢ>oe=JHn a;IL
+yr+{dl! ~~(9:{# MmSHkMޜ%L<3/qGO'4q>ݴ=ĬiimbS<M2L"GsIO'ș!0wI1MLc0YĹtq,Jk%"z7Thi+@YO '8=bp$f䈡dM0=-&K+($'zKPKfHe)zGvu(<t(ӞF&ޏE 8E=W~eO9
+endstream
+endobj
+11223 0 obj
+<< /Type /Page /Contents 11224 0 R /Resources 11222 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 11155 0 R >>
+endobj
+11225 0 obj
+<< /D [ 11223 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+11226 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 768.832 null ] >>
+endobj
+11227 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 757.873 null ] >>
+endobj
+11228 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 746.914 null ] >>
+endobj
+11229 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 735.955 null ] >>
+endobj
+11230 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 721.415 null ] >>
+endobj
+11231 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 710.456 null ] >>
+endobj
+11232 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 699.497 null ] >>
+endobj
+11233 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 688.538 null ] >>
+endobj
+11234 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 677.58 null ] >>
+endobj
+11235 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 666.621 null ] >>
+endobj
+11236 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 655.662 null ] >>
+endobj
+11237 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 644.703 null ] >>
+endobj
+11238 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 633.744 null ] >>
+endobj
+11239 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 622.785 null ] >>
+endobj
+11240 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 611.826 null ] >>
+endobj
+11241 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 600.867 null ] >>
+endobj
+11242 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 589.908 null ] >>
+endobj
+11243 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 578.949 null ] >>
+endobj
+11244 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 567.991 null ] >>
+endobj
+11245 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 557.032 null ] >>
+endobj
+11246 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 546.073 null ] >>
+endobj
+11247 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 535.114 null ] >>
+endobj
+11248 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 524.155 null ] >>
+endobj
+11249 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 513.196 null ] >>
+endobj
+11250 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 502.237 null ] >>
+endobj
+11251 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 487.697 null ] >>
+endobj
+11252 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 476.738 null ] >>
+endobj
+11253 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 465.779 null ] >>
+endobj
+11254 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 454.821 null ] >>
+endobj
+11255 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 443.862 null ] >>
+endobj
+11256 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 432.903 null ] >>
+endobj
+11257 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 421.944 null ] >>
+endobj
+11258 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 410.985 null ] >>
+endobj
+11259 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 400.026 null ] >>
+endobj
+11260 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 389.067 null ] >>
+endobj
+11261 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 378.108 null ] >>
+endobj
+11262 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 367.149 null ] >>
+endobj
+11263 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 356.19 null ] >>
+endobj
+11264 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 345.232 null ] >>
+endobj
+11265 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 334.273 null ] >>
+endobj
+11266 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 323.314 null ] >>
+endobj
+11267 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 312.355 null ] >>
+endobj
+11268 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 301.396 null ] >>
+endobj
+11269 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 290.437 null ] >>
+endobj
+11270 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 279.478 null ] >>
+endobj
+11271 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 264.938 null ] >>
+endobj
+11272 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 253.979 null ] >>
+endobj
+11273 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 243.021 null ] >>
+endobj
+11274 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 232.062 null ] >>
+endobj
+11275 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 221.103 null ] >>
+endobj
+11276 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 210.144 null ] >>
+endobj
+11277 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 199.185 null ] >>
+endobj
+11278 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 188.226 null ] >>
+endobj
+11279 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 177.267 null ] >>
+endobj
+11280 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 166.308 null ] >>
+endobj
+11281 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 155.349 null ] >>
+endobj
+11282 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 144.39 null ] >>
+endobj
+11283 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 133.431 null ] >>
+endobj
+11284 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 122.473 null ] >>
+endobj
+11285 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 111.514 null ] >>
+endobj
+11286 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 100.555 null ] >>
+endobj
+11287 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 89.596 null ] >>
+endobj
+11288 0 obj
+<< /D [ 11223 0 R /XYZ 82.402 78.637 null ] >>
+endobj
+11222 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F74 264 0 R /F19 184 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+11291 0 obj
+<< /Filter /FlateDecode /Length 1767 >>
+stream
+xڭnF~
+Z(O~*-(t㮚¡E"AJfuqeI??̮fd<9?v~3PfDftf8XMgZQ WN)L{bo+;3`&Vo}Dxb5\]m۶gduݶkw]tc]?˱Zu}k$@ -/kL_*xn^TuL}90Ԉ
+>xR) pkR7){\ͅ7L.6,4Um=l7~&\uUη辧Q} ccwڋ:"Y֜!
+R7rMۺin[_]毴NtP*oʺ)/vSc[Dܯ[bGj4b xH\#O94umٻ'"Inf,/XWۮ޿MߢW)+XSQeU/x#t5H,/-uSW芶\K̂!cp\KjU}D HayUYݍ˰B4((pDOkbX+.qVESoJZJ
+ydj&c>`Duvi:43n
+_Ƣ 71$RXOf ,8v'򣟦A@DCs"O'`Y:W]zfև8$'j3Ly5@Hp$NU$ƾ,Z?P""$ljgfmh &OPr~ ~p,N䇉mFJ
+X=w,Ѯ$܍f;l.Rq*3IJNȃ 8'Wd(0'qNHL ԓ8&4ms%Ațȗ7& Ճn"?ܭz紉d HpM |S8&+цI '~fؐ A67r,v,2)OyڵLy%AhphMݽ7~nVP댌MN)Jr
+Dv)yizq_̻m-3 p"__-vcUL +ڀQzD޻vәzb2|HVFFp
+(Sx@
+WSɀ=ܸ-\1}uër G=N(ahVp_h [V7VG݃{֜Ӝ5|#M1H<s
+endstream
+endobj
+11290 0 obj
+<< /Type /Page /Contents 11291 0 R /Resources 11289 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 11155 0 R >>
+endobj
+11292 0 obj
+<< /D [ 11290 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+11293 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 768.832 null ] >>
+endobj
+11294 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 757.873 null ] >>
+endobj
+11295 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 746.914 null ] >>
+endobj
+11296 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 735.955 null ] >>
+endobj
+11297 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 724.996 null ] >>
+endobj
+11298 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 714.037 null ] >>
+endobj
+11299 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 703.078 null ] >>
+endobj
+11300 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 692.119 null ] >>
+endobj
+11301 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 681.16 null ] >>
+endobj
+11302 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 670.202 null ] >>
+endobj
+11303 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 659.243 null ] >>
+endobj
+11304 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 648.284 null ] >>
+endobj
+11305 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 637.325 null ] >>
+endobj
+11306 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 626.366 null ] >>
+endobj
+11307 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 615.407 null ] >>
+endobj
+11308 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 604.448 null ] >>
+endobj
+11309 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 593.489 null ] >>
+endobj
+11310 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 582.53 null ] >>
+endobj
+11311 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 571.571 null ] >>
+endobj
+11312 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 560.613 null ] >>
+endobj
+11313 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 549.654 null ] >>
+endobj
+11314 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 538.695 null ] >>
+endobj
+11315 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 527.736 null ] >>
+endobj
+11316 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 516.777 null ] >>
+endobj
+11317 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 505.818 null ] >>
+endobj
+11318 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 494.859 null ] >>
+endobj
+11319 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 483.9 null ] >>
+endobj
+11320 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 472.941 null ] >>
+endobj
+11321 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 461.982 null ] >>
+endobj
+11322 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 451.023 null ] >>
+endobj
+11323 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 440.065 null ] >>
+endobj
+11324 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 429.106 null ] >>
+endobj
+11325 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 418.147 null ] >>
+endobj
+11326 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 407.188 null ] >>
+endobj
+11327 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 396.229 null ] >>
+endobj
+11328 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 385.27 null ] >>
+endobj
+11329 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 374.311 null ] >>
+endobj
+11330 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 363.352 null ] >>
+endobj
+11331 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 352.393 null ] >>
+endobj
+11332 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 341.434 null ] >>
+endobj
+11333 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 330.476 null ] >>
+endobj
+11334 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 319.517 null ] >>
+endobj
+11335 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 308.558 null ] >>
+endobj
+11336 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 297.599 null ] >>
+endobj
+11337 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 286.64 null ] >>
+endobj
+11338 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 275.681 null ] >>
+endobj
+11339 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 264.722 null ] >>
+endobj
+11340 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 253.763 null ] >>
+endobj
+11341 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 242.804 null ] >>
+endobj
+11342 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 231.845 null ] >>
+endobj
+11343 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 220.887 null ] >>
+endobj
+11344 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 209.928 null ] >>
+endobj
+11345 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 198.969 null ] >>
+endobj
+11346 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 188.01 null ] >>
+endobj
+11347 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 177.051 null ] >>
+endobj
+11348 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 137.2 null ] >>
+endobj
+11349 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 126.241 null ] >>
+endobj
+11350 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 115.283 null ] >>
+endobj
+11351 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 104.324 null ] >>
+endobj
+11352 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 93.365 null ] >>
+endobj
+11353 0 obj
+<< /D [ 11290 0 R /XYZ 82.402 82.406 null ] >>
+endobj
+11289 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F74 264 0 R /F19 184 0 R /F20 186 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+11356 0 obj
+<< /Filter /FlateDecode /Length 1748 >>
+stream
+xڭMoF:6n#@@{rOMaP"BI1wVn"g=&$G;wfh_ЇD#I,|v`!:c3+3lf4#Tf%̚<w,qZ ?0!7oԟꦭ筿Ǜq'MȞR0#1,ƈ*E0)bp ʿsK%$_1}=hv~j~X^foh^fopy/> Tu8T^o~n D V!] /qS}t"Hԋ)9mq[/|5里Tmi(ň4q3yu)٥>Ƣ9I o;TGWjCDGgęj T-<8Oxϣ&ژȃ3L֥ˣ"وL㔭$¹o
+L&9L#i/aimr(AؓڳIpAR$j/>c=MO\XH W8DǕL^YssB?}
+@"T:(pu0Au?LƩJ%&V!<]A(a, +<É~\ !+H/ #%eLd~}(13a?f /0@C{XF<sP7PN8~  @]zϯ?g0X4+ƖTwcoC_B#+,Q<:z@C }`~Y$
+;MgCV *
+&S2$js+-c qK&Oօ% ?hێ&kkf2yx#l6
+endstream
+endobj
+11355 0 obj
+<< /Type /Page /Contents 11356 0 R /Resources 11354 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 11155 0 R >>
+endobj
+11357 0 obj
+<< /D [ 11355 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+11358 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 768.832 null ] >>
+endobj
+11359 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 757.873 null ] >>
+endobj
+11360 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 746.914 null ] >>
+endobj
+11361 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 735.955 null ] >>
+endobj
+11362 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 724.996 null ] >>
+endobj
+11363 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 714.037 null ] >>
+endobj
+11364 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 703.078 null ] >>
+endobj
+11365 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 692.119 null ] >>
+endobj
+11366 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 681.16 null ] >>
+endobj
+11367 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 670.202 null ] >>
+endobj
+11368 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 659.243 null ] >>
+endobj
+11369 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 648.284 null ] >>
+endobj
+11370 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 637.325 null ] >>
+endobj
+11371 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 626.366 null ] >>
+endobj
+11372 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 615.407 null ] >>
+endobj
+11373 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 604.448 null ] >>
+endobj
+11374 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 593.489 null ] >>
+endobj
+11375 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 582.53 null ] >>
+endobj
+11376 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 571.571 null ] >>
+endobj
+11377 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 560.613 null ] >>
+endobj
+11378 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 549.654 null ] >>
+endobj
+11379 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 538.695 null ] >>
+endobj
+11380 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 527.736 null ] >>
+endobj
+11381 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 516.777 null ] >>
+endobj
+11382 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 505.818 null ] >>
+endobj
+11383 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 494.859 null ] >>
+endobj
+11384 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 483.9 null ] >>
+endobj
+11385 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 472.941 null ] >>
+endobj
+11386 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 461.982 null ] >>
+endobj
+11387 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 451.023 null ] >>
+endobj
+11388 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 440.065 null ] >>
+endobj
+11389 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 429.106 null ] >>
+endobj
+11390 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 418.147 null ] >>
+endobj
+11391 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 407.188 null ] >>
+endobj
+11392 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 396.229 null ] >>
+endobj
+11393 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 385.27 null ] >>
+endobj
+11394 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 374.311 null ] >>
+endobj
+11395 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 363.352 null ] >>
+endobj
+11396 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 352.393 null ] >>
+endobj
+11397 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 341.434 null ] >>
+endobj
+11398 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 330.476 null ] >>
+endobj
+11399 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 319.517 null ] >>
+endobj
+11400 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 308.558 null ] >>
+endobj
+11401 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 297.599 null ] >>
+endobj
+11402 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 286.64 null ] >>
+endobj
+11403 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 275.681 null ] >>
+endobj
+11404 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 264.722 null ] >>
+endobj
+11405 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 253.763 null ] >>
+endobj
+11406 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 242.804 null ] >>
+endobj
+11407 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 231.845 null ] >>
+endobj
+11408 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 220.887 null ] >>
+endobj
+11409 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 209.928 null ] >>
+endobj
+11410 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 198.969 null ] >>
+endobj
+11411 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 155.349 null ] >>
+endobj
+11412 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 144.39 null ] >>
+endobj
+11413 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 133.431 null ] >>
+endobj
+11414 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 122.473 null ] >>
+endobj
+11415 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 111.514 null ] >>
+endobj
+11416 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 100.555 null ] >>
+endobj
+11417 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 89.596 null ] >>
+endobj
+11418 0 obj
+<< /D [ 11355 0 R /XYZ 82.402 78.637 null ] >>
+endobj
+11354 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F74 264 0 R /F19 184 0 R /F20 186 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+11421 0 obj
+<< /Filter /FlateDecode /Length 1526 >>
+stream
+xڥMoF: PN#@SSP@Rq]Jw'1h^/Jb[}bA/?ů~zʕb+r+k80Wׇ?8ʽϧ'{ot99)4ƿ^Ьkf*``>iuO~!fM7q_l~؆!yS^hysuo>уܩӂx}8aq "@(aL*/is|]m@OalJH))(HSyM+жx7Z94SA(+Af -SFgY
+v1LӖ&dz8S,^Ad@hr|oCU0Pa<3?Ckq6}[Gx: Lo ]A@7C.Ÿu0 F&nM34"<Gtc-Pv,w) MINncIfW&~ql}A#$=CS07a T򜡙!S—i.ޒ<sw]?9ms: ȄG0pp%Y~RmM!fj8cv4"ghnywT2 /hY`.ċtGe p<K.]a BmN?F
+O4"!D&8/֒LJB<L4"dJ'Yg^>.)ALf4"|JRFGS*_$S=^q4"=ktKA@/G($96l "Y '9RՇQd]_3K9ݩm}KR)0"Y̊ r)"%]P^pPBeIe&T wWs*Mx !Lsd]/bjWiXU|-I>4"|8a<~Lyڇy<ϯ4FQ{27?ٯ oY_xBїX̱yO SJ>^%9꟭$y\ (G16N sz<m&vh}="\!&S/ߜo BxZC%ȸ)t8Cqԅ<"
+](]ւhM(N! jC fٿRݷa\ez#H2NzGNjd1~2 Tۛ8<u~Su濚MקqR쒶p9N~YZli`Y9O$)_>0\g/d |&J%Yf/7qPq`B܌aݗLl }wDWJ<>(m:—%mT?Wަ|}=7]Ӷ:ma҈efeZBRsu{^X̡mgOLN TH jyB,m<GQQE7
+endstream
+endobj
+11420 0 obj
+<< /Type /Page /Contents 11421 0 R /Resources 11419 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 11155 0 R >>
+endobj
+11422 0 obj
+<< /D [ 11420 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+11423 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 768.832 null ] >>
+endobj
+11424 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 757.873 null ] >>
+endobj
+11425 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 746.914 null ] >>
+endobj
+11426 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 735.955 null ] >>
+endobj
+11427 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 724.996 null ] >>
+endobj
+11428 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 714.037 null ] >>
+endobj
+11429 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 703.078 null ] >>
+endobj
+11430 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 692.119 null ] >>
+endobj
+11431 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 681.16 null ] >>
+endobj
+11432 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 670.202 null ] >>
+endobj
+11433 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 659.243 null ] >>
+endobj
+11434 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 648.284 null ] >>
+endobj
+11435 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 637.325 null ] >>
+endobj
+11436 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 626.366 null ] >>
+endobj
+11437 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 615.407 null ] >>
+endobj
+11438 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 604.448 null ] >>
+endobj
+11439 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 593.489 null ] >>
+endobj
+11440 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 582.53 null ] >>
+endobj
+11441 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 571.571 null ] >>
+endobj
+11442 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 560.613 null ] >>
+endobj
+11443 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 549.654 null ] >>
+endobj
+11444 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 538.695 null ] >>
+endobj
+11445 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 527.736 null ] >>
+endobj
+11446 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 516.777 null ] >>
+endobj
+11447 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 505.818 null ] >>
+endobj
+11448 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 494.859 null ] >>
+endobj
+11449 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 483.9 null ] >>
+endobj
+11450 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 472.941 null ] >>
+endobj
+11451 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 461.982 null ] >>
+endobj
+11452 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 451.023 null ] >>
+endobj
+11453 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 440.065 null ] >>
+endobj
+11454 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 429.106 null ] >>
+endobj
+11455 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 418.147 null ] >>
+endobj
+11456 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 407.188 null ] >>
+endobj
+11457 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 396.229 null ] >>
+endobj
+11458 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 385.27 null ] >>
+endobj
+11459 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 374.311 null ] >>
+endobj
+11460 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 363.352 null ] >>
+endobj
+11461 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 352.393 null ] >>
+endobj
+11462 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 341.434 null ] >>
+endobj
+11463 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 330.476 null ] >>
+endobj
+11464 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 319.517 null ] >>
+endobj
+11465 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 308.558 null ] >>
+endobj
+11466 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 297.599 null ] >>
+endobj
+11467 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 286.64 null ] >>
+endobj
+11468 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 275.681 null ] >>
+endobj
+11469 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 264.722 null ] >>
+endobj
+11470 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 253.763 null ] >>
+endobj
+11471 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 242.804 null ] >>
+endobj
+11472 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 231.845 null ] >>
+endobj
+11473 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 220.887 null ] >>
+endobj
+11474 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 209.928 null ] >>
+endobj
+11475 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 198.969 null ] >>
+endobj
+11476 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 188.01 null ] >>
+endobj
+11477 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 174.062 null ] >>
+endobj
+11478 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 163.103 null ] >>
+endobj
+11479 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 152.144 null ] >>
+endobj
+11480 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 141.185 null ] >>
+endobj
+11481 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 130.226 null ] >>
+endobj
+11482 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 119.268 null ] >>
+endobj
+11483 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 108.309 null ] >>
+endobj
+11484 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 97.35 null ] >>
+endobj
+11485 0 obj
+<< /D [ 11420 0 R /XYZ 82.402 86.391 null ] >>
+endobj
+11419 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F74 264 0 R /F19 184 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+11488 0 obj
+<< /Filter /FlateDecode /Length 1729 >>
+stream
+xڥo6Wikob{˰-ӶPY2$91LNSA䘇6k;tYŧ7/7>ĖL[XF3B5[aT0?=Gm%Z2V3N6n]ݸe/4LghNoҏu5u2{?]E(a7PmlވIXv{]/ +e0$qb2#<3s+\Xtogp s+|xmԄ>Wn?]aDHL8MS {Wbٍc+zW "dq"ud%#UD
+kE‚ț3JS;NʒH&q(MHkW~a"ma5n/ I4HPcuI5JUR⸚nVpw4m|#aMJy6ny{hz}*V]εtGD]
+D߬{UcYΉs
+Ds1bd
+8ݱX=TbN-PPEą
+h$(|LkU}&f"
+endstream
+endobj
+11487 0 obj
+<< /Type /Page /Contents 11488 0 R /Resources 11486 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 11155 0 R >>
+endobj
+11489 0 obj
+<< /D [ 11487 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+11490 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 768.832 null ] >>
+endobj
+11491 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 757.873 null ] >>
+endobj
+11492 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 746.914 null ] >>
+endobj
+11493 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 735.955 null ] >>
+endobj
+11494 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 724.996 null ] >>
+endobj
+11495 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 714.037 null ] >>
+endobj
+11496 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 703.078 null ] >>
+endobj
+11497 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 692.119 null ] >>
+endobj
+11498 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 681.16 null ] >>
+endobj
+11499 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 670.202 null ] >>
+endobj
+11500 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 659.243 null ] >>
+endobj
+11501 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 648.284 null ] >>
+endobj
+11502 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 637.325 null ] >>
+endobj
+11503 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 626.366 null ] >>
+endobj
+11504 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 615.407 null ] >>
+endobj
+11505 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 604.448 null ] >>
+endobj
+11506 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 593.489 null ] >>
+endobj
+11507 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 582.53 null ] >>
+endobj
+11508 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 571.571 null ] >>
+endobj
+11509 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 560.613 null ] >>
+endobj
+11510 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 549.654 null ] >>
+endobj
+11511 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 538.695 null ] >>
+endobj
+11512 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 527.736 null ] >>
+endobj
+11513 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 516.777 null ] >>
+endobj
+11514 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 505.818 null ] >>
+endobj
+11515 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 494.859 null ] >>
+endobj
+11516 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 483.9 null ] >>
+endobj
+11517 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 472.941 null ] >>
+endobj
+11518 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 461.982 null ] >>
+endobj
+11519 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 451.023 null ] >>
+endobj
+11520 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 440.065 null ] >>
+endobj
+11521 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 429.106 null ] >>
+endobj
+11522 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 418.147 null ] >>
+endobj
+11523 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 407.188 null ] >>
+endobj
+11524 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 396.229 null ] >>
+endobj
+11525 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 385.27 null ] >>
+endobj
+11526 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 374.311 null ] >>
+endobj
+11527 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 363.352 null ] >>
+endobj
+11528 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 352.393 null ] >>
+endobj
+11529 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 341.434 null ] >>
+endobj
+11530 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 330.476 null ] >>
+endobj
+11531 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 319.517 null ] >>
+endobj
+11532 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 308.558 null ] >>
+endobj
+11533 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 297.599 null ] >>
+endobj
+11534 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 286.64 null ] >>
+endobj
+11535 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 275.681 null ] >>
+endobj
+11536 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 264.722 null ] >>
+endobj
+11537 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 253.763 null ] >>
+endobj
+11538 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 242.804 null ] >>
+endobj
+11539 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 231.845 null ] >>
+endobj
+11540 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 220.887 null ] >>
+endobj
+11541 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 209.928 null ] >>
+endobj
+11542 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 198.969 null ] >>
+endobj
+11543 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 188.01 null ] >>
+endobj
+11544 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 177.051 null ] >>
+endobj
+11545 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 161.111 null ] >>
+endobj
+11546 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 150.152 null ] >>
+endobj
+11547 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 139.193 null ] >>
+endobj
+11548 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 128.234 null ] >>
+endobj
+11549 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 117.275 null ] >>
+endobj
+11550 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 106.316 null ] >>
+endobj
+11551 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 95.357 null ] >>
+endobj
+11552 0 obj
+<< /D [ 11487 0 R /XYZ 82.402 84.398 null ] >>
+endobj
+11486 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F69 183 0 R /F74 264 0 R /F19 184 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+11555 0 obj
+<< /Filter /FlateDecode /Length 1050 >>
+stream
+xڝXnF}W l~"('(P'zHe$"Ů`xK]\U<zD<3sfep?\>x{XƑфl &L3dɔ$KMW3_=a3LфbIloy"*|#wmL_Tl_7Ϣk?vgDuxF`D1O!h=|v:#iTR)Ç3窼\L$ݻ|m۶X6_&tg|LD8(@Ucy_l;[Y_/[;v}S,O5"Ge AN)O5,
+!߇}b4Q)$-AXhPDÐG$6<H8Jh K1|*eUvÛ1 9M|aA3aj\Cq>݌9yZhɺ;lPZ"ET HB Dj lRHϫrv;#ec>6vaL1=8C[,xݽ ۍK_:jpU
+NV 8<DsPUѧs׳uϭH"µHX4NEz_Q Z |U͊YN{v!18FFv gܢV'=Yb*6Ѧ l'fц`QtE<LjD? JLfJ~7 a}PӋ
+endstream
+endobj
+11554 0 obj
+<< /Type /Page /Contents 11555 0 R /Resources 11553 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 11155 0 R >>
+endobj
+11556 0 obj
+<< /D [ 11554 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+11557 0 obj
+<< /D [ 11554 0 R /XYZ 82.402 768.832 null ] >>
+endobj
+11558 0 obj
+<< /D [ 11554 0 R /XYZ 82.402 757.873 null ] >>
+endobj
+11559 0 obj
+<< /D [ 11554 0 R /XYZ 82.402 746.914 null ] >>
+endobj
+11560 0 obj
+<< /D [ 11554 0 R /XYZ 82.402 735.955 null ] >>
+endobj
+11561 0 obj
+<< /D [ 11554 0 R /XYZ 82.402 724.996 null ] >>
+endobj
+11562 0 obj
+<< /D [ 11554 0 R /XYZ 82.402 714.037 null ] >>
+endobj
+11563 0 obj
+<< /D [ 11554 0 R /XYZ 82.402 703.078 null ] >>
+endobj
+11564 0 obj
+<< /D [ 11554 0 R /XYZ 82.402 692.119 null ] >>
+endobj
+11565 0 obj
+<< /D [ 11554 0 R /XYZ 82.402 676.179 null ] >>
+endobj
+11566 0 obj
+<< /D [ 11554 0 R /XYZ 82.402 665.22 null ] >>
+endobj
+11567 0 obj
+<< /D [ 11554 0 R /XYZ 82.402 654.261 null ] >>
+endobj
+11568 0 obj
+<< /D [ 11554 0 R /XYZ 82.402 643.302 null ] >>
+endobj
+11569 0 obj
+<< /D [ 11554 0 R /XYZ 82.402 632.344 null ] >>
+endobj
+11570 0 obj
+<< /D [ 11554 0 R /XYZ 82.402 621.385 null ] >>
+endobj
+11571 0 obj
+<< /D [ 11554 0 R /XYZ 82.402 605.444 null ] >>
+endobj
+11572 0 obj
+<< /D [ 11554 0 R /XYZ 82.402 594.486 null ] >>
+endobj
+11573 0 obj
+<< /D [ 11554 0 R /XYZ 82.402 583.527 null ] >>
+endobj
+11574 0 obj
+<< /D [ 11554 0 R /XYZ 82.402 572.568 null ] >>
+endobj
+11575 0 obj
+<< /D [ 11554 0 R /XYZ 82.402 561.609 null ] >>
+endobj
+11576 0 obj
+<< /D [ 11554 0 R /XYZ 82.402 550.65 null ] >>
+endobj
+11577 0 obj
+<< /D [ 11554 0 R /XYZ 82.402 534.71 null ] >>
+endobj
+11578 0 obj
+<< /D [ 11554 0 R /XYZ 82.402 523.751 null ] >>
+endobj
+11579 0 obj
+<< /D [ 11554 0 R /XYZ 82.402 512.792 null ] >>
+endobj
+11580 0 obj
+<< /D [ 11554 0 R /XYZ 82.402 501.833 null ] >>
+endobj
+11581 0 obj
+<< /D [ 11554 0 R /XYZ 82.402 490.874 null ] >>
+endobj
+11582 0 obj
+<< /D [ 11554 0 R /XYZ 82.402 479.915 null ] >>
+endobj
+11583 0 obj
+<< /D [ 11554 0 R /XYZ 82.402 468.956 null ] >>
+endobj
+11553 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F73 189 0 R /F74 264 0 R /F69 183 0 R /F19 184 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+11617 0 obj
+<< /Filter /FlateDecode /Length 1225 >>
+stream
+xڝo6WO1In6 XL"TNG,ɎI6-x_4Nn;y9{VLdss@"2<ELB%jMae{7}xJLqDA IsP̚V9M骾qOs݇,~nBVm~i*l=]040piCB1bA0kJV_=n͢Z2lqԹ)[} cNfJwUgV”UEDhQspgw6nv*N%(s[D0=d^vC ~zo>Mb,8rD@=rMxFyĆ<jldm>kQ'jIAqAQۓνAXqZ B8^}ofXۻ`5މ]<<"Mk sFŮ}ZfsP
+1j˺غ
+ėr|MqD0Gphj$?褉6WH_2x}!r,+s3luob]Ysax <I<6;9m}ݹy]w2XKVFI";3_&혭
+ӺMSo9' cR
+)=Zߠ\=~z5B ?c*.i*⾞7{Ɲ!*J\NTB L}y"׶N6Ѷ6&Ҳ.LviqCe AtYnnv"@G'r
+endstream
+endobj
+11616 0 obj
+<< /Type /Page /Contents 11617 0 R /Resources 11615 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 11155 0 R /Annots 11619 0 R >>
+endobj
+11619 0 obj
+[ 11584 0 R 11585 0 R 11586 0 R 11587 0 R 11588 0 R 11589 0 R 11590 0 R 11591 0 R 11592 0 R 11593 0 R 11594 0 R 11595 0 R 11596 0 R 11597 0 R 11598 0 R 11599 0 R 11600 0 R 11601 0 R 11602 0 R 11603 0 R 11604 0 R 11605 0 R 11606 0 R 11607 0 R 11608 0 R 11609 0 R 11610 0 R 11611 0 R 11612 0 R 11613 0 R ]
+endobj
+11584 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 713.79 345.275 724.684 ]/A << /S /GoTo /D (section.0.1) >> >>
+endobj
+11585 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 691.872 168.931 702.766 ]/A << /S /GoTo /D (section.0.2) >> >>
+endobj
+11586 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 669.954 195.879 680.848 ]/A << /S /GoTo /D (section.0.3) >> >>
+endobj
+11587 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 649.973 207.669 658.93 ]/A << /S /GoTo /D (section.0.4) >> >>
+endobj
+11588 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 628.056 162.385 637.012 ]/A << /S /GoTo /D (section.0.5) >> >>
+endobj
+11589 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 603.647 244.465 615.602 ]/A << /S /GoTo /D (section.0.6) >> >>
+endobj
+11590 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 582.283 313.465 593.177 ]/A << /S /GoTo /D (section.0.7) >> >>
+endobj
+11591 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 560.365 165.023 571.259 ]/A << /S /GoTo /D (section.0.8) >> >>
+endobj
+11592 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 537.894 356.927 549.849 ]/A << /S /GoTo /D (section.0.9) >> >>
+endobj
+11593 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 515.976 192.945 527.931 ]/A << /S /GoTo /D (section.0.10) >> >>
+endobj
+11594 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 494.058 318.799 506.013 ]/A << /S /GoTo /D (section.0.11) >> >>
+endobj
+11595 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 472.694 304.727 483.588 ]/A << /S /GoTo /D (section.0.12) >> >>
+endobj
+11596 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 450.222 271.2 462.178 ]/A << /S /GoTo /D (section.0.13) >> >>
+endobj
+11597 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 428.305 345.319 440.26 ]/A << /S /GoTo /D (section.0.14) >> >>
+endobj
+11598 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 406.387 370.804 418.342 ]/A << /S /GoTo /D (section.0.15) >> >>
+endobj
+11599 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 385.022 280.698 395.917 ]/A << /S /GoTo /D (section.0.16) >> >>
+endobj
+11600 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 365.042 232.492 373.999 ]/A << /S /GoTo /D (section.0.17) >> >>
+endobj
+11601 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 341.187 418.007 352.081 ]/A << /S /GoTo /D (section.0.18) >> >>
+endobj
+11602 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 321.206 359.856 330.163 ]/A << /S /GoTo /D (section.0.19) >> >>
+endobj
+11603 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 296.798 323.519 308.753 ]/A << /S /GoTo /D (section.0.20) >> >>
+endobj
+11604 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 274.88 233.701 286.835 ]/A << /S /GoTo /D (section.0.21) >> >>
+endobj
+11605 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 253.516 272.181 264.41 ]/A << /S /GoTo /D (section.0.22) >> >>
+endobj
+11606 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 233.535 269.72 242.492 ]/A << /S /GoTo /D (section.0.23) >> >>
+endobj
+11607 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 209.68 200.238 220.574 ]/A << /S /GoTo /D (section.0.24) >> >>
+endobj
+11608 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 187.209 292.135 199.164 ]/A << /S /GoTo /D (section.0.25) >> >>
+endobj
+11609 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 167.782 187.086 176.738 ]/A << /S /GoTo /D (section.0.26) >> >>
+endobj
+11610 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 145.864 159.613 154.821 ]/A << /S /GoTo /D (section.0.27) >> >>
+endobj
+11611 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 122.009 324.087 132.903 ]/A << /S /GoTo /D (section.0.28) >> >>
+endobj
+11612 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 100.091 192.653 110.985 ]/A << /S /GoTo /D (section.0.29) >> >>
+endobj
+11613 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 77.62 313.527 89.575 ]/A << /S /GoTo /D (section.0.30) >> >>
+endobj
+11618 0 obj
+<< /D [ 11616 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+165 0 obj
+<< /D [ 11616 0 R /XYZ 79.37 771.024 null ] >>
+endobj
+11615 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F72 187 0 R /F80 749 0 R /F19 184 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+11631 0 obj
+<< /Filter /FlateDecode /Length 498 >>
+stream
+xڍK0
+C4  łم7", .KM ßI~ F`Y7$,)ħCսw0NswY0Xr%˳"kW}sɻhyE8m N/͇lF$FPaU#%l)_dur{~usAVΖ5T+yٚ1.g1É9S4R$j|KMED93DP-4"}
+\Nr[WU^< l[!I2et>TpfUw:#׹]նn,iA#Dɐ}UҕWsa2?ndԚ{ 6zvȁx.
+endstream
+endobj
+11630 0 obj
+<< /Type /Page /Contents 11631 0 R /Resources 11629 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 11155 0 R /Annots 11633 0 R >>
+endobj
+11633 0 obj
+[ 11614 0 R 11620 0 R 11621 0 R 11622 0 R 11623 0 R 11624 0 R 11625 0 R 11626 0 R 11627 0 R 11628 0 R ]
+endobj
+11614 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 757.574 225.426 769.529 ]/A << /S /GoTo /D (section.0.31) >> >>
+endobj
+11620 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 735.656 232.547 747.611 ]/A << /S /GoTo /D (section.0.32) >> >>
+endobj
+11621 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 714.292 261.342 725.186 ]/A << /S /GoTo /D (section.0.33) >> >>
+endobj
+11622 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 691.821 240.384 703.776 ]/A << /S /GoTo /D (section.0.34) >> >>
+endobj
+11623 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 669.903 329.738 681.858 ]/A << /S /GoTo /D (section.0.35) >> >>
+endobj
+11624 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 648.538 252.167 659.432 ]/A << /S /GoTo /D (section.0.36) >> >>
+endobj
+11625 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 626.067 266.6 638.022 ]/A << /S /GoTo /D (section.0.37) >> >>
+endobj
+11626 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 604.703 318.705 615.597 ]/A << /S /GoTo /D (section.0.38) >> >>
+endobj
+11627 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 582.785 258.373 593.679 ]/A << /S /GoTo /D (section.0.39) >> >>
+endobj
+11628 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [ 78.374 560.867 257.469 571.761 ]/A << /S /GoTo /D (section.0.40) >> >>
+endobj
+11632 0 obj
+<< /D [ 11630 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+11629 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F80 749 0 R /F19 184 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+1 0 obj
+<< /pgf@bmMultiply<< /BM /Multiply>>>>
+endobj
+2 0 obj
+<<>>
+endobj
+3 0 obj
+<< /pgfprgb [/Pattern /DeviceRGB] >>
+endobj
+11635 0 obj
+[647.8 579.4 ]
+endobj
+11637 0 obj
+[875 875 666.7 666.7 666.7 666.7 0 0 0 0 0 0 0 0 0 0 875 875 ]
+endobj
+11639 0 obj
+[525 525 0 0 525 525 0 525 525 525 0 525 0 525 525 0 0 525 0 525 525 0 0 525 ]
+endobj
+11641 0 obj
+[531.3 531.3 ]
+endobj
+11643 0 obj
+[826.4 ]
+endobj
+11644 0 obj
+[531.3 531.3 531.3 0 531.3 0 0 0 0 531.3 0 0 0 0 531.3 0 0 0 0 0 531.3 531.3 0 531.3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 531.3 531.3 531.3 0 531.3 0 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 0 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 0 531.3 ]
+endobj
+11645 0 obj
+[575 0 0 0 0 0 0 638.9 638.9 0 0 0 0 0 0 0 0 0 0 0 0 575 0 319.5 383.3 0 0 575 575 575 575 575 575 575 575 575 575 0 0 0 0 0 0 0 869.4 818 830.6 881.9 755.5 723.6 904.2 900 436.1 0 0 691.7 1091.7 900 863.9 786.1 0 862.5 638.9 800 884.7 869.4 1188.9 869.4 0 0 0 575 0 0 0 0 559 638.9 511.1 638.9 527.1 351.4 575 638.9 319.5 0 607 319.5 958.3 638.9 575 638.9 0 473.6 453.6 447.2 638.9 607 830.6 607 607 511.1 575 0 575 ]
+endobj
+11647 0 obj
+[777.8 ]
+endobj
+11648 0 obj
+[777.8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 416.7 528.6 429.2 432.8 0 0 0 0 0 344.5 411.8 520.6 298.4 0 600.2 0 0 0 0 0 0 0 0 0 571.5 490.3 ]
+endobj
+11649 0 obj
+[833.3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 777.8 0 0 0 0 500 500 500 500 500 500 500 500 ]
+endobj
+11650 0 obj
+[613.3 0 591.1 624.5 0 535.5 641.1 0 302.2 0 0 0 0 0 0 557.8 0 0 457.8 ]
+endobj
+11651 0 obj
+[611.1 611.1 611.1 611.1 611.1 611.1 611.1 611.1 611.1 611.1 ]
+endobj
+11652 0 obj
+[569.4 569.4 569.4 569.4 569.4 569.4 569.4 569.4 569.4 569.4 ]
+endobj
+11653 0 obj
+[562.2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 357.8 306.7 0 0 0 0 0 0 0 0 0 0 0 306.7 0 0 0 0 0 0 0 703.9 715.6 0 678.3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 511.1 460 460 511.1 460 306.7 460 511.1 306.7 306.7 460 255.5 817.8 562.2 511.1 511.1 460 421.7 408.9 332.2 536.7 460 664.4 463.9 485.5 ]
+endobj
+11654 0 obj
+[388.9 388.9 0 0 0 333.3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 777.8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 0 444.5 0 444.5 305.5 0 0 277.8 305.5 527.8 277.8 833.3 555.5 500 555.5 0 0 394.4 388.9 555.5 527.8 0 527.8 527.8 ]
+endobj
+11655 0 obj
+[525 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 525 ]
+endobj
+11656 0 obj
+[502.3 502.3 0 0 0 0 1062.5 0 0 0 0 0 590.3 0 0 0 0 0 0 0 0 0 0 295.1 413.2 413.2 0 0 295.1 0 295.1 531.3 531.3 531.3 531.3 0 531.3 0 531.3 0 531.3 531.3 0 0 0 0 0 0 0 795.9 0 0 0 722.6 0 0 0 382.6 0 0 663.5 972.9 0 0 0 0 0 590.3 767.4 0 0 1091 795.9 0 0 0 0 0 0 0 0 531.3 590.3 472.2 590.3 472.2 324.7 531.3 590.3 295.1 0 560.7 295.1 885.4 590.3 531.3 590.3 560.7 414.1 419.1 413.2 590.3 560.7 767.4 560.7 560.7 472.2 ]
+endobj
+11657 0 obj
+[638.9 ]
+endobj
+11658 0 obj
+[531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 510.4 0 472.2 0 472.2 0 0 0 253.5 0 0 0 843.8 548.6 0 0 0 362.8 0 383.7 0 0 0 489.6 ]
+endobj
+11659 0 obj
+[625 0 0 0 0 0 0 0 0 0 0 0 0 0 562.5 0 312.5 375 0 0 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 0 0 0 0 0 0 0 849.5 799.7 812.5 862.3 738.4 0 0 879.6 419 0 0 675.9 1067.2 879.6 844.9 768.5 0 839.2 625 782.4 864.6 0 1162 849.5 0 0 0 575 0 0 0 0 546.9 625 500 625 513.3 343.7 562.5 625 312.5 0 593.7 312.5 937.5 625 562.5 625 0 459.5 443.7 437.5 625 593.7 812.5 593.7 593.7 500 575 0 575 ]
+endobj
+11660 0 obj
+[525 0 525 525 525 525 0 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 0 525 525 525 0 525 525 525 525 525 525 525 525 525 525 0 0 525 525 525 525 525 0 525 525 525 525 525 525 525 0 0 525 525 525 525 525 0 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 ]
+endobj
+11661 0 obj
+[583.3 0 536.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 333.3 0 0 0 500 500 500 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 480.5 516.7 444.5 516.7 444.5 305.5 500 516.7 238.9 0 488.9 238.9 794.5 516.7 500 516.7 0 341.7 383.3 361.1 516.7 461.1 683.3 461.1 461.1 ]
+endobj
+11662 0 obj
+[472 472 0 0 0 500 1000 0 0 0 0 583.3 555.5 555.5 833.3 0 0 277.8 0 0 0 0 0 277.8 388.9 388.9 0 777.8 277.8 333.3 277.8 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 777.8 777.8 777.8 472.2 777.8 750 708.3 722.2 763.9 680.5 652.8 784.7 750 361.1 513.9 0 625 916.7 750 777.8 680.5 0 736.1 555.5 722.2 750 0 1027.8 750 750 611.1 277.8 0 277.8 0 0 277.8 500 555.5 444.5 555.5 444.5 305.5 500 555.5 277.8 305.5 527.8 277.8 833.3 555.5 500 555.5 527.8 391.7 394.4 388.9 555.5 527.8 722.2 527.8 527.8 444.5 ]
+endobj
+11663 0 obj
+[525 525 525 525 525 525 0 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 0 525 525 525 525 525 525 0 525 525 525 525 525 525 525 525 525 525 525 525 525 525 0 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 ]
+endobj
+11664 0 obj
+[577.2 524.7 0 0 0 0 341.1 ]
+endobj
+11665 0 obj
+[493.8 0 456.8 0 456.8 0 0 0 245.4 0 0 0 816.3 530.8 0 0 0 351.1 0 371.1 0 0 0 473.8 ]
+endobj
+11666 0 obj
+[285.5 399.7 399.7 0 0 0 0 285.5 0 0 0 0 0 0 0 0 0 0 0 285.5 0 0 0 0 0 0 0 0 0 0 0 670.8 0 0 371 0 0 642.3 0 0 0 0 0 0 0 742.3 0 0 0 770.7 0 0 0 0 0 0 0 0 513.9 0 456.8 571 457.2 314 513.9 571 285.5 0 542.4 285.5 856.4 571 513.9 571 0 402 405.4 399.7 571 0 742.3 ]
+endobj
+11667 0 obj
+[892.9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 575.2 657.4 525.9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 488.1 466.7 460.2 ]
+endobj
+11668 0 obj
+[514.6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 514.6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 514.6 0 0 514.6 0 514.6 514.6 0 514.6 0 0 0 0 514.6 514.6 514.6 0 514.6 0 514.6 0 0 514.6 0 514.6 ]
+endobj
+11669 0 obj
+[272 0 272 0 489.6 0 489.6 0 489.6 0 0 0 0 0 0 0 0 0 0 0 0 734 0 0 0 0 639 0 0 0 0 0 0 0 0 0 666.2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 489.6 0 0 0 0 0 489.6 0 272 0 0 0 0 544 0 0 0 0 386.2 380.8 544 0 0 0 516.8 ]
+endobj
+11670 0 obj
+[777.8 0 0 500 ]
+endobj
+11671 0 obj
+[450.9 0 417.9 0 417.9 0 0 0 222.6 0 0 0 745.1 483.9 0 0 0 320.3 0 339.6 0 0 0 431.6 ]
+endobj
+11672 0 obj
+[667.6 0 0 0 0 0 0 0 0 0 0 0 0 458.6 0 406.4 510.9 406.4 275.8 458.6 510.9 0 0 484.7 0 0 0 458.6 510.9 0 0 0 354.1 ]
+endobj
+11674 0 obj
+<< /Length1 2610 /Length2 30311 /Length3 0 /Filter /FlateDecode /Length 31774 >>
+stream
+xڴzeTup'8ww {pw ݝorν7 fvuÛTYQd
+922TA&, ;s
+pZ\
+L
+p:XmT`e? 
+t0q0;
+LWi\]\]XXwfDe$%
+.9I8̭,l\
+\k@p]@V?8qpI@wkLX\$P vwG
+ tO_˟c_a5Wg-PWgkO=Q
+(Ry0r#/' ̬~k5n-
+a(yN+qe?MuC|_IU3PMmj\Ex_
+.yJn@gdg|_`~I
+B(SDd硥WEf)؛J[9R1!-?57A{yd\{2Z&>!.KR ̩ םHDF{,+ :y_>p80g%sh6!%').*['ۊE}.yxe;Qa`o;2?+Gt^߮VmŎnעQoh Ȉ|Ss'oL!7?',*Ε@pN-Uq|J}"Py\cGL.1T$kfF2^n}qIRWr>ySk!\rb
+E.p)! r
+
+ vKx(mĵ!̠g1Y$f( GݍQeU*4S.$Ar2R<H`k;E>mO|p5}2|X5Z80/ +KANun%IV\{;mȨQO+!؟HG4C Ї::|L jM^`5@Mr^F$M>_%=rd]Vb
+`Gm͂##b䨰k.Ho@I$>LVcH,rÉmo9䯢q:6_Taj&ziGMH_pBܓÈ#)B t3sGϠYJ%['WC>;`6yL{/đ
+)_In)۝C)"XhKZDukwQr9/&,
+òWKӚXp8SOB]:,@)ʾt FwbȮ[u F\#sk5RAV2<wWS yeL+42ë4V<}b'OVMX˼Ϫ%$Dan0KOh,RNwO%D|XwW]bsuty[bΈӅ>W5!}H!Ї}ԑI#$=R4i
+ΨC
+?m.!8uZ Fޥ@pL?kǦ%ktٻtPwkA-֝7)`a}T_e5]>j<$ľXyE>*~MxA:8lJT[ʊμ)XѱL0N*"BA*24_M5qO?)}NTEMCco z/i#tβɇE%H%w㚬'&—s8BGR;0`Մ71)vW=XբmPcB,SK͌ċ@Z9(BmlW}*ۑXA C@ik~e
+@d-H0:֭c%aQPTw>X2"ρAXmBN Nu]4N@(?5VY}M_(TenWg+i=j FbI
+}ҍqAr&>^,)5萻~a31=
+Ź=V rܼp?AU&
+RyU kG
+e:$_rr96X5q̍XOT1儭 ]XsVur`
+h 6!+[^+bLӅ!e+|L+$P)t>>'_}8P"&+.= >
+] |ŕ
+r=Хyϼ{g,:>~9"
+ՇX(׌ViL (oBy'` & hЯe6eJI`J !]ez?tn4p [񭗸?Cu1J[97>^/:RP0+8ĺ+$/QvTbz gpCLN#߳hV 4tdw2un&6Khs0ԠSC`I0Ѐ0㱏T2NYNDi S&~~y}m
+C yg1WKP'N5D='
+9'ZiF6`ܶ
+6!_SItk{`mԖ%Ƥ5cX\$ZDi#0EZ'Rt$UOQ+hD⫝)Ox*LXl!9}x_T ó4ַ|x&iAXSI1 ;
+.Eu'^|O` .4P˟6E* ElVՀlW.-z6/`UF#bǸSJ챼Jr5`jR|xH+U~Ыdxn9dyL;a#avŹ`:0\,F
+C]FuGo<"zPr\;2\'>Trq
+o6 XI)F˧2"C]}=eL  bB\53ַB*a?)e[>5;rhS#C%&](1 1ƺL=2"Jx݄$Ǯ2|>Wu7¾NUw
+v&%gce(j inCF{-ݼp5''{SM\И*Au u⽌yKXw4 +^.^\zgNb~ NFJ$A߬_Bb#D7PE%cXQOj]O)LK[Z* 􆯩PUL Ï~yQ boԛ3WfP1[/cUf&]eWyg:h #5\"*[sn Wa_rf:-(}ٕn󣀩xXFgzcOzOO!Y)_o/A2]IKKyMo\ b a"Q`F^Y &:/0= t$o6r 44!A$LM2Ρ,v_:aw6\Ҧλ{uvCrIO= |RO-m<*1HL]@83Ce0x
+(}l:B`W7T)vWxZ`R>-sjm_iN(q0k@;MJ=JUǼ9ef"]y/+&-frxJ!ۓ, iM^K"!,}Ђ#S1h=#7#e7y-4g||[-F w&Î#sD3CƲ
+원,sGrQk1pKgƍ$"Pft<-ax^% "ЃCݶjzT?IZӆPSy0ܷL&,-
+lB!{w{2+ڗM6{ͫf1~Vgl]Y}ň<Ql"ܷ^%Yf{`=l `^';Q
+% qӇap"B-j[RM8JzK;&(f{;cNU5 ڙLz
+c(#2q(h
+Q\%V3
+\U/: uDk_;FtXMJ AǠG1\Ig%/5\!zVaW
+ q4kk<ZE'i\6+ACd0xkqtm$Cu=|85
+RvᑅMkܛgP^@i^
+A=pZ
+醤c ×ʟ=KDi+
+zgIٻP_xP.Vjt?k yQ*sЀt)+4~䔨v^'Ɇ!ى}~8!&e"dSaIסSFz2*{CS~b}bFzA0˘ar߽[%ĵH4q
+&rV\^Æއ &_?v.+>h[^c7~k IP2 mk@7X/B#e`ub< ]Q
+>S@ )+N/~yq0s.g܉rћ| bwn&_| MS`ar%QJ<k+q <p,xY]wDs^(Ÿ6߆(89ݶeu,PͼML Ü[g
+a
+WBvlQxύ4gWLGlG6ة~J/GFNy=iwݹg;Lf"."OfьEz3ueM*?Z9Q7KQ?՚_bsܑe(.7 Wo#0ybRESٴf@#d9c.ABXda? 0@xY<A7ԫhF3@_KFN wamͭڡ߼B¾=A4ջ/&, ۢRxTa液lxF@nANgah^
+<S.]q4xMݷ1P}$-x{ j諩rFIx谝)k?Cw#<t΀މa#ηŘ-o8HR$ٌjHvd|#YŸК"B}>-w jςbލD!q>䑷V6UydxYFf$3]7wAr:X@R`й08ƌ];0\NFͨoC:]@3.;u\][r h_Q 56QۗhCK0{KAv4u4}gDYrQtrqaIrx?xXrrU2H6o!hC;`[>(ӾiŰe.6_R7۞cSݼϨ
+_>D~ūahRa
+ٜ}1=1zlr#e!!Ã(&燱& h
+d l`il!擬,;v#4ЊJʭ& ,15JL݀f#'@dbyQSW-M`̅oP4_xyw%YD%Cae<\Zo/Wp JE_M,i7:5H)g6vYA5
+i-iB…,׌_ڍGʬZi|m0xDDvS m)z75$>6o Pl>p4捂ۼϺ(bUZ +{Nvwq+~
+vHH΀jmR:=3%q|AȂCm5dؒ&VTThL
+DQ'>u;^Vq5_b)8FHJ
+3n^\ix8"9,Uוfv4q0Dd9@{:hn\kNh7M`V S['a'mA&IcR5LfSM"Ivfm놸T IR3?n`['9(Hɧ]8cѻ7ggz.c(b&vE 2ayꐯ.G$sIwLs}ţ3(GJ2)t0$G筿Id1}WӤE4tsvO ^/6kcdnw!1Ҟ^s-eR?pkt{ǙҜ&Tǁҍ3˯bx wCw$8ffcG p~\R"x4Y5ߜ sED |~>M10x]0X\:燮)
+b'
+ x
+C0 J3Е(.ZjCQ'uf+|A7'L]ZͨHW|z{2IR 0"10g2gf޽
+.H|EkɋT^kw;Ӽ] e8cY6VMzfJ"-XZs+%LHcx(ˤbЫ]8RXjNoNϲ[!pbXHK/ ?{67Z_QּbCX8!*|s1L|rN Bb~ר52gn'<*7KؠMJd燺ZØnTӗ0IQ"VqN`RW lҶ'kv; io\umuXWv3R<iQ]g)*Z 0{vYTe`l)lkp52ȓq|JHMջ+7m|7LFdjWS㾤5;c}țɜY<P_#t"ҡ=6ĝ-#jU$gNtKgwKFy5 -K*rČk9Ff3՗,=J,_ޠD'7_+ wLpZnrwsQ)M
+v:I8 {<O6{AY[c {"B<FTgnD"|~Og*٫zǚiX ֯E" k-Khj,
+GNSŻZQ#::(y}։enlM0uzh2:2ݖ~}R1S
+m[_6}qWݡvu+m3N jGcQ+MxxY'Oz7;&z 
+UEK8&mpB|<?Wm~^\L&Qүb y#=,nÙ w`iY93
+/NZe:iəwAե<pHxvJ=ױ; \eh6,sG{-TO47J ^^ /=9D!% k(Bz#3)% 5W-eg -x#hBfL*.uCyխvyhR i6R$ESD|2XVp1ZI|X2隺ĦJ,9ݲY[c ]ܩ҈.c;DҟaK ̱ NOMjẐQijgIa۶Zl4"sh*Jg3-;S˕Г3
+?E٤4!+l2x9#MK~i*6b<yl^u?<82!
+@Km2Un qbS8[ȥsbݮǝ-}=0ey-`lWwqVX~-\ ueP(D`zDO04A\.Ex}l&SBIGK-ҙ`D?oVhFZv
+F/mˇ!ucshN`.Bq#/EDvڛOI#|߭a !̩R ʾ*鐵H:"5]㫋+3Lzv_aOޛo46|1/bLttZ
+cguHX C-ٻ_Ϫj =w |#sk)v>hۙaCt}mdk$h́&v8kfRv^oQ[uإBW Ȫ踹 _KLJC_*<hTKVp%po@TKrb,3R/?=!8O Mcч'XݠZw&<
+PV8T l_+N/Q쵥cvV|GaO=!ÍP_%n&VzGc{
+ΰfç Д%4ġ&tu}{JZ@l<E/~AP@vʲ54|t6imԥď?m%扪xcա`q|fsJD'ja|2+L1^(}*ez`fC|x@xČtϽĴ 5e;1vX4B>\䊋(s9APe'tmpȑJ)7NY;0 +Ax'/^T:&LF[BGϻwG8݆l__Bڿ 글wU<BMĞ w'0GR{bE/P1̐nh5q$4+xb3]
+Xb?.t^ C &W=VK|tt`@ݏnv<:ZfIjQO%y[@b+Mvƪ>| oDi`o3J>}YA
+?T4VUJ8MP{0T9-OB^MkfM
+4L5h3K6ޞˋ}NJJ|QCˠFYuuGoWp,F9T [%t nX= FӂE=^W5j7UxXz V0^K' 0tY+Xy
+*xk}[?߫z׎ꅏ")k\FEkD ֶm۶m۶m۶m۶M.5ˎƇ篽5/cCzM5*yH!;7ɗ4^j^&0T}a*0_F<{,&NձVHnyӆC[) `<*E(B>(EƖ
+E>ESi/QB>r1+)$GSRvFU}_,=c
+N
+|)
+tQ
+1ju75#-LuPU&_zfJg^]y֯ U|/a[
+:EP*GUH#(bi)ۼI<*l>)%86ԞɻLGx#vơ-1#Mpʙ5qx‰|3"c~`"(RʏD)merYkr'D%reRB܎g|
+<ҌVOpN ~Ce=a~茹 CȬ πzHVzw}6&VtU))*<aX'.D{AyBp{>GKvdtp#PV/b*'WqVsX94c~ $Z3RYǢ&8zҟ%pG3 `E.#W-f䵃67DD 6y8&oB[uG0 `_/[6נщ+2x[1GadSrފWu(oȋx縈{y)_}8-'{mA=:Eկݰ}C K0FC6tQTd/Z˙]/4DxENTMv?u8l1B.Hv  \nq},g!a7S68lt`R6-4jJ 2>%^|2m/W@!0% *c(%HR8/Yğ|Nj:?wv \<O7b0hCSY(C4HZ2L0@zƅִ2{?\TA<(7Jz"st9{G>d$N2x*% a
+4"A
+`*I6E ߮-ʠJrax|ښ"ƻs]TCoX :jpBFV)vwR-͉?3FtjE̊|״MJg`6FAл?b<,vޖ$-ӎ]J+j?Ur9VxM/ְ-
+%&S19V/wk[,,Λs 3cf*{ˊdH%tq^IJ"G &
+ bТ!Y٠n
+ !evtI*Q& 엃D'gUm;:<\c.^@14pQyMͪ IDx
+~CCkd:̹Wy٦b@&
+ʔS[`NVͳ~ !VN4YT5%z fy<U`l*hN MO)
+L0puW2?!~ªϛOTNe4NDumf8tV )YKtkҏņHgrK|5镾( b`Fzƿ2Z.2 0Aɍ cE#_W]t40#՞fJy m>$T?0@ ,߆I/T\g_M~]29 ӣ2( U9e Ly"
+gI1ǼcQۜ#
+SVVY6~+ק{/jןd;*@;14 Еn~5z +_ّVL(s˗gp uS:ZivO2+1@ƫ(rfj+;&. 5L-z(ױ^{feAh2VA״
+ր\Xl:SQ~R|K*Z`gO۫m=Ecv O}b7鞪 /WJ%>JnSGd)
+ж$
+
+.9&;OּU
+y {<b- 8W?05K*Vq[>y{p=.C0aDˉϧp˚qId킁yq}rT~8wŐhgF=`0VSh5,_P[߿Z|8!NU?9IZa~ȴM͞JK5+XAUb/&|7!@-ƺzfw0&z*%'
+"@~ACFqJ
+<cPD sc0 ]m2"6kIІJiaz)=MVU-)*G/1|h]¢t/ZO=^S>;qs=iL&9xy@f ,KPH1tZ-tUx<=!Q{Q|: ~M;h&
+0ihnm<q6j;x쮃OJPf _k52h k&ⵠu^Z߁[< |6Xθ^ę3 qgM,K
+cC֚T(#i+L_/1+ۈ77Φ+
+aںh?6K;\t%}gb?\avM/veMՅ6Jewub=2k#ExؽX`vŜՉ{Dx0E E{fZrq'}P&V
+hBЖY}Nud
+Efɬj{}E<w4T1ATc U (qD$^QXRkɴ_֤@h_nXyY_{9XT;cre˫ZtHQ*+hc
+7_o[Ł=Qb
+9C^1c3 Ey‰I?0v;ЧTzG C'ofN|K|Ĩu}=?~EsCcKͺ7 <,k4W|NC֚Ƨ>iᏌ5MG&?c( cp[ Ҥ ||Lx5ExtN*L"7
+&UTn4ADa54_ϼHD/ /ۙh A<LMojdMCrG=Q27{?iR=^vKNwfH%:ѢiW>d՝?`z?AFrWUSoA/ "|!*G1)T&c91L\bޡܦi@nվ@1*'m y0 haj2oh*{jmߜ"Y>MtljC0 eg)S?%p@xFQ >F%sZfԕGޤV΄OO>n.ʾKflV$ 8Yl.,|dY)Mhy7Da4|u{K
+*j-F9QX},Fy7Y2<ɓ Dfͻoaےw4F𸪍<mX?~pC\lAvA|K'ϧw,Kă>i0W qf7p;Ȗ(+EvfgB٤AF>gVN@pavyF[ĆB:Uם `:8<"*VY06(rx]0iַlo
+fD|/J Ԯ]yQpIv8c[<+੨5aC M)tqA ȹ7-
+]NbJH1bFʌ?cg= +]dPP
+qsM.cgrC8u05R0B5d69D+G2/9M'+l ɯ]@)Ȇ2; "DfOZ%n ȲVWhշϗjHKFo-3Š3J-cz߉$?1OR8>w䳈G\qA`L' aGeCbS%:w0ًh|ɗc X!QDP̉ᄁ19 MH!rVV,=Z|t–qŃJ_m6H9
+x>oX?$_Wgy o蟥,YM\W<[wEE xvg\hWʑtYG%h;7S4#> w!`;'hRBݢTFwsCq:-3D|5rTQEf`9;8XR'!3
+oY H}ὒcN
+4w#V!:NsR Uh98E
+-ڜ)1vw72$f)"0rR?%XCJ@J*\4q5ș8k7lg*Dgb&RCRƃ$m:z5\]u+QFʞ#-g>I9*MKyC#x~[ckܠ{#.A3.vOEo=-lޭ8هoo5lxjbgLW]B
+Ke[L3T>@*]Zr]yQvx9ʧ i`V\VI9 wyEH
+w%kÂW%){p9p5.K^
+7;"MYYcG
+ƺ= ";kC`Y/\ oegej?Hm+n`sN;ɥ4+Ąv@cJx$$fQ7Y(NWKq]l`\).gЅ iEtɐ*,$).B@NÂ52K QabLbm9]er҈KGFaǶ2_B|1PA3Yl/{b['E;ZtBYsRT2P`9`/vJe\N§^6BW<Ĕ)O'9pI7|/
+̧8w&EނƂL?2,' B0~,1Q-F6(vGIީo~ +֯};*9.OG&T!}"`ߨ
+LLKi="Yi<7)^A2`{u#`oM@;b~Z뢄>(Y-{Ex@ymՂc#)d+ЉMz-ia aE?s$ pv\:Ah+ˢn׊ /d4">4 Od)8scaAh{eR~)&,4YH=݊&f6Y.1enYBtDHU } q(ڋ(ZРEr,Mf2L/]2c9eky0
+2TX<ԡ?^z܉lvP7σ4tn||헺}9S
+Pٗ(QvԒuTs}듶WJageatث=bႜO]뛍ߡ
+%EuxjӭUBCZqC6gu;Aw*X( xD@b泗>-V8zk4TꐅqJk~CW2AѝA}AׇVaVvb+
+$d4ߺ7E ?N:N[}sa/uc3q d#j)"枺wG鶏Xl9.fLO&
+5Yhd qw
+_F'ޚbE
+'ٸ|,afvv_U-QBL=`b8Ir:RrC{KQ'rH9c6cɓCn Hd]jЁRVꆌƧ"?֑ ~&
+.wOZX vrJQVqk?nёC6"ʣDz D9'FO$m
+۠J믅r.V~XʌT~'gQ%CIK/5 t.8{ܨuE!UΰBD2K[p?ݹPU1ՕCR8 Y[n]zcLXTT
+Œ# f7.2GϘYC3Rrse \Sx*r!"`Ι. (JfwI1F.rRqvVbN
+ޛ׎oذsR"N
+|(U]0ky1˾ka iX
+Dmu44)BA?22nXщ0*%:1"-2" IHσYHYgen3yRU*ffr_BG&$]09OY>-dA+]tAy帯eɎ tF'-tsL)2;1'Q@iJqBTtkv89RgFrX c5B<Bn< `CB;A9
+9J<pgfie!fes1ۢc1KkM~yuݑĶiC٤_^h SD]m^Cg/SQ7(8BF- RfO#=k; C
+endstream
+endobj
+11673 0 obj
+<< /Type /FontDescriptor /FontName /OCVDMH+LMRoman10-Bold /Flags 4 /FontBBox [ -486 -295 1607 1133 ] /Ascent 699 /CapHeight 699 /Descent -194 /ItalicAngle 0 /StemV 114 /XHeight 444 /CharSet( /A /B /C /D /E /F /G /H /I /L /M /N /O /P /R /S /T /U /V /W /X /a /asterisk /b /backslash /braceleft /braceright /c /comma /d /e /eight /endash /f /fi /five /fl /four /g /h /hyphen /i /k /l /m /n /nine /o /one /p /r /s /seven /six /t /three /two /u /v /w /x /y /z /zero) /FontFile 11674 0 R >>
+endobj
+11676 0 obj
+<< /Length1 2532 /Length2 28425 /Length3 0 /Filter /FlateDecode /Length 29858 >>
+stream
+xڴzePݲ5
+181@Kk -Ew vFߑ~{1Ll=]m&
+?\54
+G+|TT
+`XY@,J oaǁ7+osGwL, J
+5qW% cos sv+ᄖlEi/
+1&A$ўTc\c86G<i5#)?j|\lT}{gA-1$_m /<!0*!-ݛ\<^~Eg07|f Dv#͍~[0A.jȜ,4Pqyop
+ޤ CP7+g'0CKF]5uHIʼs ;Ȇ&t?/;i9b?XbI&2|K)s7Is{y*`eQSc:%.jKupw[ ؛$s0R: l
+@98C24c%7!9ږ(=g^Bm<wö{!3)V (ɒi
+%0:
+ai87P.%hGs}=y
+æ6l<ʓn8e>eǩMya)$S n.6%wu`/'mdnnL2lإQLNxcfa7[egA -bBn\v6ܽݛ/"MuRNJhV=2to+&|Ё?7p_ ~A!
+ 3An >RL38 ?\w'2 EE1.EOmG2^:fdܨ"ӆ>KT31OMJFeC=0c rWwh(HVْ(Qx}EؠD]+[k' [CXƁ/*8 2_?S$~h=]%^ D_|HD;uϋuĊƪ{gRZm{3hZv$wtG1BT?}ckUc4}6kugeJaCdg+՘=;*J[b<Bڃ'763u_nfwVըa``^gy).4FϭEIB Gv}-]^NO;Luvm}Omcw8/ bkTk{3QYm/g+C]$+~!0^nj2ͱsIVz|7ڠ1E놐I[x"e%LBmZ$'p<>Ne*͗b- R~][g d8'n'[XAhMqتSdj egX+cI7_O\3]EP=hi[7_<Q ,s|rI[$$0Bu`L95w5t8xuCZEH̺jɚ"pK#<_ꕖSZPԀ[崼2M)Q,yr5sEѪGdp {Er|J˗ GX|]A"Z8C,<(#nrp{oY^o?i;XcduȭsXo 4
+ T%0u*T%Y8T?k;>E<CsG 1-eLZ=(C,v[_ɑACgP ߚ ByaE/ ΄oXDv_} =ѭˮ2?a|ƙe aʺK5}gdϣ߃ Q;Qo#
+pAFH1 ;HtWS̼DAT>DGGLrnV Y[a+GbN~廐<WAh i+'<3?5&ج<N|a
+(s03hʹ9U`!D2PZ2GPj:2$kBB4a36Z5D5 %4RlN{n,;Y_h[F"5AdPY#5JŢiFh(N,T(ǀxLt}PNxf~T/qc+Lq<m
+Jn.+%"$k/Uf4B. :KN9;(Iyv8^ѯwb4~b%Ɍ)κTwR!Ե^6b,=E=;F>ݾV &7MjI-CvfLoer0{X#}7 sa:gS}đgx-è޺bgu
+ 4 9ΐ>~u~Qߩ3#4D^puB!'=x|9*az_g /"-N&|VW BWOC_3!
++x,[6 yBxCzLtqoKN0[x^-[К9X*ۈ|F*PPpݵx?!: J჏|ŏXV榥-.ҞcN4w"v.;b?Q~qZHŁ+Hm*`8GN[ |,+SAВſ #[)gUE9|n|^ wjxĦ|˃o6{)"r7^T$񎃔(ǥ`A,г@ XJhϔH+Ɵw? B(Cʿ*
+1ubbZpE:P;wgTkKL#y-BtPZBuc2nm ܊}C_ODK^]'0 V>wSjnnxrа_K= Q>;FWBqk8UTv]98aTE}؛UlT)0˗'4}3oPtOqVvIV"xdW?B4/g1imf/}t|TZ
+sb/d4kɉD=z玶9mȆ%f<譙j3AnoKO]/'Qj*D"ze"A]N;qUYc~B,6˰F޽rƶˊi~#J7iuۢY;;M%}St;ߕ|`̸9 Lf
+ȴcC=g` 9` Z b'Ras0Y-҅T̟7c2E^c93tu˔Iɚ PGiP:F>L|o8#͉p=wXm=ݢ2pgqPӼM-3Aܤ|34OfP&Ao |12lQ;eiffP0,:/9˶gLo-7DbSmM *
+ݏ?ඩ["7/X:._)<q\B8]Zenŀh(AԑH?blD`Z.}F.zaj7~l:q} 7͜@ sj"N!3
+I d|Ʉ1L㝝%l. j
+u.H "EZ#lzHInO38WcWЖ<Cj{Jw&:;C+}ʉ.jb^@w84`l f,׹x Mۤӎ8FWz k1TCrDVK$,)vE}3j
+}\2\̖,6Bv+cBA0Uo[_s$fPRYx"huFYplN}4 >Td+v.9d^9W(;4]
+C\%p3QR'8OF2'}54_5t\oTnլZGyHހ+ow-xema- NL3΁q5Zcz씜y|U`'CKHo%88Vah)VhZ$3BC`$FZYLr :jf,ljJ2kͣ$9[]|=0J)?'phˉlUءpT/4.hW
+YY+kS.4d~p~"o`\!,E EץmP*"Wzq.`qX4`?Wp4QQ8$]50/0|._գwڅ0⛯]_K&e+G]"7H*Yntȱ7HuV6OmbBCKxՂᙆeӗF=YvX˜HC *LR]ыQNMʗcѝeV f*s`c~$oH5.!9Ey2twPi|`v5(Di4!ݝApIh/fdoKbTmo5~:oJe3/c3^AcSkv4RS-Q"ߞ^k ՝%F~umΫ
+*8/O3A<myxjk%B uh^Q&$ɼMwZ=R}sR);gc/>d l-Z}H1)nۀn `} R= i[eȉEr_'ii0(1
+"jF]巴
+}U;y RבʽEe'^/JZo0DNrkUJ{P u~8@ <O@--ܠC`=_,@ſs0Qʣ# S~9E;p(S}a6S`8!Pw}1za$44 HD )*I~|>o!aΖy~ f-cƔ}=*;E&;E~ppM[K5E0ġ5+a%D(XPZuJEܵ|/zӠْ.krQ Ka4+@$r`M=)RbhL4m㤔dm0,]ɾ|`!Nr;;.BӖHd\ q U꭫A_V5!j*߰&S:|4r,Sف27JUEO#X (nMQjy-ҳve<)Qi(hP4g " &<:di-^u|zƆ& mT_j0L7X<oTFIڟ
+`,lV7
+\Bh8i3gxŨوs-pT\UGVJg5->T:/T6NF1 a
+Ӧc49\i ~w=.LS c,-WeTy*).'U4+
+wuH#{
+~PveAȱ-:e]8J .U_2T?pIo 3?S>JD([+jGsgOM^I[#}D`B۾Ӊv8#wJ7mUr+w'Qe)1œ -&AZN
+V+*4 R|_gzZ_|nϛr*-WK۵v|V`vJUjHTP:h<<&l8%Z;/\!2R#5ݧUHi 3M4DdŢ{el7{?Hc<“۽PMV)c|e0QtWm N<_KZ E_{5MZa7LQ͎J0+\:P> 8=<(G}ph0ūse J>G&m6-9ݧ{w]y+q$eaDғ uJ6 e=MPY6n*xtKVsFj9
+;(,,Litbޗ q`o'4SG=le3uxY\!)eAg4 _8Gd2(CaKHXSuM 3<D55-0|:QEA'&YJ[l /5r\"j<)BīYs()5s?Gjm\=\–[˃bFJ7 'ywV:Շ:HKh1tWכft$FGQ ({1'.evkT%}xy> + )Q/yhX5sNpB?N80q gФ|A)XiVNK ˥Ⱦ]j#BҔY#$583TqI!N;V9?s0^G>8VL228ԃD-W'|1
+!Qiܗ$|ߡ2&zr["-K}T̍n~Nke-l̋X
+е$|>}1))xxӘMrΒ$aZIV:<Ԡ51#kcY1ҫ@Z[L`8san Pfl*~ZC[R<5A[QAkb++ŶH~Ue(er޼Car)E@潃Řͽ-RDq70ch_ &/6Vݏyg7LJq5 a}1
+ZZVRKaccv,N ,ΞP X>QNmazaVeKB? X VSFy
+9\
+S7=+nryi!WzU
+-/-3#C#MГl>Ej e%e|$c$)p}X^^anmwAt"אJuեzvH<0_:1~3oHG5!z{b!:w71uF|ݚDمq#X审iyK'.Cc;l'XEgux>7=3g\M$P{ *ĦM@Bcb$;xoHgi!xK1= үWQcse[~&\0IFc PէeN
+ď\Q=KˡdVԵ6p-/dFpxE5*2j^ Tҿ6 e)Z)si1LiGXvzwo2Mp+jHrݖW7<G&'MIoN8+='Vq\yfh%q#4pqq 7G!Z »6G {ҽۖj)zNcouCt2OHalޠ=RD);|xd f3:w[&Ïp 5mѱ^0~MRʭ[F+Sg6|+aO)EG֜=7-B0m{gN
+6"C}Us˘jW<!=n5v͌u!̘2Ąazp<jHf]
+q&WA>eZsD&a&L,(X'fJgcqaR͏*[@)wnEߠ
+.Օ༨|HYԌQ8±rN n`ظ紏i(9cIfYkE>]BlCI0F(ygndZ>I% `Ԏ_ɚ pP7{5*Fڒ۴^}j&\ T~!?7Rq,[g`܏qr5}VjU}/U$5A%*},m~feGJcjie˜{)u7vBk,h<(h FҏhÀ9{H$oa_>\ N  iH_NsrYo`5.bPQx.(B.`ܙnfGi.ez\]ӦӒB4ޫ\ >)b?\=IӴ`{05de٪ NsQ*IVԏ7 N8W,.[492zwq8F"qSfmbK}xɋ.dKyr";VߤqT|<8ar_y0WXX?e9eWxy)~?~,,,]v&9ʨz'ϝa%nr_ǡƹD׺S@a!x(Y -Su%<r$ܱc.AI9V Vv&tR%q@rqck%%74(30g{4|F̠P(W Z*"=$%xۖؽ_^}:<mjlgrvSa⣵XH8ϕa2yYŁ#R~-Ka>4\Jq9(?/4ty|tYU6VwjoKh¹
+WSdzJE=ǵ":s){_ b}
+s~V q>N+/fD허;5Ft ֝'94Sz"$THv,Zqԯ Q1oMN4jTgIt(4f$V]3{H'2Dq2^MIqMx31M>!(}$9튎w*\aM%81t5V~vw Q XP䜑9Ro6pŭs ` ~"$-% O50|N)xdbaS Q R4puɑ| Yhi *{_tؾ-:Y
+ Z͌aikt ԣVi.\r Uy#7^l_.PtàLEɘe`*:pEFDllJ D'56Jޢ0sdsFodp [oBAͧSjIqG`etyKWϽinݙ87춑KZYrY[韜?WY1_5q=^FܗBXsXKygeJc_ϻ-/#&I$#Yڞ؃):dqS%A$Hﯶ~]+`o(Xݜl߷CM\xY9USƽ#c1M>I2DAZ7hXh0*"5ᰑoTúA8U:|3́iUwOu&?/a>|^uHZnܥZT{6"̲[KbN<q
+򓋑h-5;Wg@6;
+Uu<k[9!Yk xK9^ ;PG`ut= I{Qޠ>l<0)[ּ8KbֳFQg+n?xao߳}Sޝ M$Q$3.y%Fd'Owi )K䷋deWS8xC7!:k=vfvcaI^oҚO$+' %arΏ-GBɸĢO3iٮrϲwN{\[Z\տд,.M}s;&â$֕h\jn w>zhpAf^+ akӫe[SjU~N 2iN_঩[[L*Mz7.̿o]IU6Xoy ;)ˉM;Сj~SzuCp\. ރ<y2/!JΎU{Ѵ;:"^r`nYΔDdF $3yb*%[?"~C>31^Xm:hs3)gd\;pP.}]6_fE:3 eݓ"nSTI0@tIfW&B, Љ%h.F[\/L#r?+jtUIy݀UcUÜ75kyeMuo%9֣=Z=.E-U t%òLSZt
+[ 7Y
+>璗~n~W_U&߂<9
+
+oKH4~e%k0<Zc2W-rq U&
+թ!/ bDޅVXHyﷄ8<+c%dƟ~Q$ ?Y8vqadpfK.Yu,҉yŔjẸՔ-UW/SվY0Ȱ e5QLʶLp'.,9GkF5ğ:vSi~UZ@e3϶\_Ώ$ziXSQX
+#*xIW ~4 E7o9#!LdXȇ1H)ӂL?[ Kk#HCU~}BnCӻ9O?ly De>e0?6`I<#MXr.i=$Mȑٞs0 JdEqfsA/[SK>C%Je&#xkzror=XǣѪyQE&hgurd.qc;){䤛MO:4Vˢ~Ywu4qhJ4cp.s2N~zw,r,(#ϲުquX]
+mՈ5)5"+[z;ul(Hc&=Zay =
+U_Fnk F_Ԝ jj۶mkk۶mvmny9Lf$&CGZRBx{h|4T1|Ov%ehChyib7}1+єj\I_kIg֫Tҋ7~]ws"_ֿ͙v?R*dQkktpɲw ( +13b^މ]𫘧a(&]&[ %&@<[!]n܏M*fQ^j >b@XV:AO8~\GS8+ B8͟w"Stk/₭a9PP?qAF_Id
+Ag.)|l;,$+ox}V]qPoP"`ɻ.mT-ӷp%x.@m$f㡋Z
+ )'pXRc_L "'G?I#uw6[Z,:XZ'mzd1䍸/(~u?R}'okLuH %bo~qUp PRh$(:XVf! F@盵dHGrj*}z(45Ѓ <҈drTrgK>q/<;^+.O]*y'D5lrtc^OW"'zP8Sְ] [jw٤dݱHx
+?V } Lv('z iʎ>Av~9ID+QޱR:n$>ld{=w7A + y5( tb]US\aT"UK#yRk%1)n6EUG!/Oʍ9(+hF#$kb\nFZa)!
+ֆ&'#Uf\%9ZRro󯾤HFa6@/Q
+@[#t܉Nc"^v}ZIg&O$NٟamGr'Mt(ď`# \H3 QM؝jsڄjl`wS {q[D.׺1U8!ju7{wI>U
+5tnsv \0>NFxh/Xo^Js>^Ku0M`XF |kO D<
+7?_̚z=
+`xD`:
+LWjSf9 @zM%I 5>,N婙FwW(ΕAaDiZ4.+2 R-Ƿ*wK8T_sѴwo=^]L[oe?4$ iAPoKs%F `ڱ AKw}魻RIx5x^ .b+'oʤA54TʯGݏi,8Ciz,0ߚo"N]m:l\6t0<S &b1t3fҜbR
+g+82r) g ķrfD"L3J"D6__g{=q~2S NT״"hX]% 킹]nb<A YuT`mP;q'xM.%ߵF~aew ݩ8Vl[@dl+#B-%r!U;d`ȹoo /x^
+f P7Lʥ1 Elb 5W0cBy
+%G㙢榠<ʃE,
+Q
+1# S
+I>%xꂧ^9l@s4?҇}]IT/6
+ }" >IXaՋ"Bv+_'&G9阴. Bs>₥Cf}RJ?.o64I[11EQ5;8˅ٰs5F&ވ fgyq%ϡ:cW?[pYfן(B+ks4z/q{ӔޭrySmhd/UqW쬳GLpS(RifrGK?8P*CudGS t&d
+Wq"Hrq-c6U,h6t_=!U1(39DQ|ʫ=ryѻo6at %ت 3^WV`M+9p"S?)meIՋWagUSE'ˇD3I,[(3
+0#LCA7niAgbc [?Ee`?oG9ĘmFܭig@[F,^rOA HfZ(TJi6h0.+K7]Tj c ҲkP FJ'ϧ$ T\ch _g]yf&sJicT큰vLиF'2 b%j'L+B/޺?( ˖>NO2'`)j|0J:cUzθ/ה2#^oMEppoλ_Jw, :F9#%(]+fY^ZY?*,b,J*$_ͷ)oZqF92=Pi2 y!^]MoH,xI*1MX5#:ml{ʘ-p]X໓02Zfڙ{Mhc*au9cju:NAfs ׷*1bwUu]<8Z@*T'!Nsd޶7m@GFpI\.{Ep{[IQA- X=g-FA^.Z 7'(sx)|{[
+V._2ٞ- ) FQ; -L(ȯPt+j.Fr^t(AVnybVj@#"C -&bl1p/#+݄S tn|4So7uAK^ӊ",FՔqȪrfӧOrZDQ " c_G|p>XrH}Ji6Jp:W :0Y#{7p*.ugռ4mR1MKHPtaiM-YSSIƊcJ<4q1etѱ3u1d
+p'mrZ6XayW, P[sb*H7hG$`jD0|U.l%vЙSAXWɼgQC̒19N$%
+ݞx@կ
+>#%_T&f
+\kR 㴣%4NDRxZbw 8/󈏱&uܲ8bw)<F/``hZw>ZT6W`3R {. ĶM.W7V(u6|NὥTXWP;1.Ф`ah`5rMe;
+[ZsQD)H/*+WOr|P Fl&1r ;2mXG1+[z;b
+wZf# F|~s+Zs!
+oPeD8te6ma qﴢghxuP֕63WYH*HK'TTO-BWI`Ot pyE\pv`DmliM/ȓ:gZ̜w-+Ǟ'6lE$;)%[BNk ,V j-(4(9V Tzp-p7N&,-
+fE^X1DlV N)`<z-_{D }k $-za<~
+ekG Nh8$<9ZGbC1& _ץb<BfZ3!͚pR
+Mxu:uDG~nt3[]>fZc, b,yO6!|MtfGxe()^و4q>+)qU LH25k:^kCݭvG'^mA{$U埆 VO#
+
+I7u,Рm aj(ؗBϺ.. r<GoZ]y\)1 Rä\!p+x
+f@{ 9j1lŏ=$8:(ܖ3e-[ݴ(dbuLbcg$Wju4Jp Lѳrvs¬92bUt:lHg0\*5 KLpZ, 5ζ_ivi J$$.=mV,
+pͩh~.?fųbS'W I"S\] D-}f?$`|TUð&ŌaZG9A$:pc
+h$ |GcG2䰯*TbC
+ mm6TA2nNE*=ȔgK9iͪko("p{7mA֊!}Hy}ĩNcrb8(%gz0B [[3R2XK)l Mr!㊔uw|=kg6ɕk]e)h/sٲ֏-gn5֗ȹ;l_z @|8o!G=– %؁t"hX^_AJSp#Ԫrxyf N+,+Tj<ūM,&
+q¸qFdp&h&
+VK( 0 *, `rЇRO`Fs&u(+oqaKtpln/
+טV2f;y{?3sG- ;~^~Kvk,6N|
+3$eIZYʰ_1Т,kX35;j?yc-{so6C#t8Y3 MFDMS*\ Ard7wg.ƾM0>y"ŽSEH84J]ZuYQ|V,)o?P#dN<n<
+.쏼eU6.%'?-?
+mM
+0%$o|PĝaF;CuZӂ5jm2t4NNE.!4ٚA!+bjX$4+'ϱh%j~zV{K95:ilJEi~x_P+ ?ir c["rhIP4"c{H ۮ^@0[ՇU㾪[ɚ]!8\a4GKF
+><s,јd.׌r05um} YBs-w>&D0Mlx/q^=J
+TB1"
+'
+:dϤ2 qGNne(l-{q_et+' 8=e/jha9"h96#)7 宝B8mI:q{IgzRDG`{*:T7ݐ1BzZÍ}w%5>BC &`^NͿgjzUN IЅ0sHcvoYXDX:
+Sg6* tj&O>_?皀>Z!q>[2iG
+gewi2:
+ 8@+"{:0 qP3ن=3wrlY\nT[pb.04cF~<"a
+"< ߅TQ?}'[91/wKޛNƄɚ PZj&k,xyT$ADk Հ /[TsѤ1@{ۥUn3G cHy- `:$6Rm"12eZ o4зw8hl =ac= G<> q6W@^d-n<Ap<$ILHy\wG㇟D:A'k?Y%2l
+a1_9R}=Q(-+H2Cw%js1ј=i g;?1@;U집&B}hoژj$חqc|}.en۩
+̮_;k&7?VvϪ-KBQmag!K^{U;ȟu~Ӵ~{&f(Rk ҧ\%='^VY<
+dT0خot`>Cl+_)|h٧ࣁx٥78 ƞUjdus$hueý- |I(9C 6V:aDt  LHژGlT҂r=w&d3_1FMf/5JK}JeQK*00S*0A.ᛰo*<9-v<yuO=l2?KUr'U5Is"\QTO9] ,GJb} ܫ| ɾASc$㌘si.-O.DȜxees.%zrI-Ruh tQ0) !sC
+dSwArH^m
+W(nQ[̋B̓-zPx)4ۀ=(_7` /(P<.YZՓ*􋖂<+*jm\{wе82}f`NYҋ59.[= t+թN65 l3(h :qCAқ#B ڿ;bZFt膳^tRS&1',mc@^c .~}g5XJ:،g9{AG/jEf<?(:5T)Vgmxwi]L[-HBqAÅme.?8-sl3z ^y+#+ܿ`b<gW'w-)W +h΂oIb.<$n\ng
+endstream
+endobj
+11675 0 obj
+<< /Type /FontDescriptor /FontName /LCRVQF+LMRoman12-Bold /Flags 4 /FontBBox [ -476 -289 1577 1137 ] /Ascent 684 /CapHeight 684 /Descent -194 /ItalicAngle 0 /StemV 109 /XHeight 444 /CharSet( /A /B /C /D /E /H /I /L /M /N /O /P /R /S /T /U /W /X /a /asterisk /b /backslash /braceleft /braceright /c /comma /d /e /eight /f /fi /five /four /g /h /hyphen /i /k /l /m /n /nine /o /one /p /r /s /seven /six /t /three /two /u /v /w /x /y /z /zero) /FontFile 11676 0 R >>
+endobj
+11678 0 obj
+<< /Length1 1705 /Length2 21472 /Length3 0 /Filter /FlateDecode /Length 22554 >>
+stream
+xڴspݺ>LI2ѱmۜضmcLlۚdm֗y9sW]<}^׺UUPAV(fkDHU62010
+;
+
+2
+n
+]/_E2&mې4^b!?ӭT@!g8zW]zx.`//+L&|!ns3?<%SITDwD!G.Յxʇ%G#9aH"FC?!ϯ0X)NΜ^=2ݏ%U瑕 9Qp!Ki^j$'eW|Mw+~* zcޏN(_|%R؄WF1/,D?R$lgxAt8J8T2x3iDA@}ۛa$U] A$H(c-7;/6,U@b=X ПvTo1Kʧlk*iXI\C/3kTB,*Z7gZesdO&WXhQsx 7{ Dsm} xP&ȫz) iذ|kWR;̿LxE,gݬ6?}>9RYIH؎Hӧ٭sO(gdTI;}xt?
+)ۅ#,:-,Z>
+֝eM%5qhR ,cǭGjE68a G3'KyB Svj\QOR6eCvr]Qw(b7"Hwү$ݸU ӳŅ6T[{wpיe<bv?䪜ЁۼR |-*F^W#U#L'=[dpYRZ@rFt_jlO],"g3磺 ݝ
+y#ɗcb վ`x htG8s*<w3`$;cqWm:yR/ΒKnnfr^6%"<NJ!|8xqhV5}VS2ÍrCPiVEɌdn襇vIǿqjMVq$rld=p,RY
+$.KT^}'d_BE&nj@fXV5@ _V1cnM:dǰsc'se 8ۅ@})W.ޣ6[~VTkw*bK0 C2LdMXc:Kz&|1>S<4 wu 7G\peE4h Rau93 zYaRH\r D$%dXI/q1e2#hsxR_N`n+ߟ8HGKkloY%*y?8Qˡu%́۶ko l#׶Hxy eiؼ֝d9Y+'|מ$ġvdŠnlN~c5RDE(L OL;Q23U*hv#l /bfEqF4RxY9bĔ1vO'a@k /w%z k" %yY?GaFgauaw`\3d10R郳Q,5φq˫79aKo :h kҎ~w5it:O*VN`Mb }& ; Dξ~S])_b:h5>btN03wDU#d2v -0\d7Aa/'Bv>Utz[!69)
+~H{nmQ[X#d]Z{P x&t-1PiT*qْ29r ' I
+rIhoUjND
+c g<?M庶G+)CLH*/+MzS>}4BG``{ z<u= ;Q]ZvK9jC_WP
+a RilNny+>VJ"G!?;%Yn,ّa2/#vvK\8%BL-!>K⿍jT@(\ݷk,S؜Q@ssmZ7d9EeXDm0|۽î6Xk Al%(uWMԋ{Exs`QG0oTwMI)5_W)zf4fbUg_'=df\ivF@(K;}1$b|b- 7MF'"u{u D 4$3M2Bf5Mw3ڀi"k›%:Ȕņ9Q8#x3jnػy4rU"(! L*ӻͩ<ݟ=-
+skOΣ=`
+ю]ts]M623)Ժpvχ)UƔTeyC$ {llr}tߤqGw#j,K6fY판w2'pKWN~FxTA#"O2d S+XS$\fImYo
+C4ogp%ѷ0>
+i&+F}oU7{H4> >CfԲ&MPzBt%a<q6|8mHQ66 ud<:qcn"MD6WH\ҝ2>=foY[)A:Q@XV:I@.ʦ
+=k ;;6vtţ0v>f][l x%_g?}퐩q_ _}e($N H^9O
+O2%0;:ܡA?/RҷġVN9 4{cxҏl
+60D03vb?J7ZK
+aqW,E*XXǜ<l<װb ^U3Ipy΁ u/gJ(ǃ,W?w|iY n8.R3o[5] H I^F6i0ҬbC dnh>ʗf ya#2`jU~
+H<HFm;vzM 2 +JLi͌Kh7*>jy1
+ېt?Ӵw5
+f
++sHya40!S-ʂRHo_CGv`8?vJ##̦dD8AZ-Ғ.UZ(
+ ?`.ןX}Bd- _6%4
+'|]M5vlX\ο@ )nBk JHFջ;JzpKeDݽ$-BU+H-SĴjO!YȚ IDNҫX3AԨf`aS'{^4W΢
+='|_PwĶ@H{:twT$BL[$?jI<B#R`˝@TP-~ɰj1*6`t`k8B]@#Tii4b%k2 'Wf8򣺁FWRFF L<%9I ܆%gr^+DCom2vˠqr^u,ݭpư 1x@: R}
+|
+A
+4s`T 9'9.4jZ\ I^^BmSH9PV_}BJ`Ga$)` -5-p=1y' g%J-UdGboθFL{\M Q_N`1:BDoK&rV:~>ǸVَ/`
+wqŅs$E<6/Zo`pZo9')\^
+vcпϴhvJɊ)mdPz6k:4qN'xd^2١Pz+P]x ?!ve<(h;YRmUW*2~ky:-N h]05+_r_nxZ"3NgFdKo#xgO{I$X"УԒwK]ɥ8av" [5˳SN5HvgNn5i7
+b}٤B#)oFa;-
+d[\y Z!++w :H}2xC TDonm,c90Ca$lPwb,O6O=4GUpw3ާ"qx+7UI#xń>}7egtx*%3ھ,fOvR8'm6}&NpW7SO\\Qb<G:&W`1С!/K(^
+Oad P=N u/GuF[dMah#к.U2os15@tֈ ndI)GZF[#>ʵ:MsV*& ү5wn@Q67ė(
+,@nڅz
+g7%Yhu/:t8/ ~[6۷ۧcTj@)@ȇˋQ:KaZU#S"h%/*O=Gz$MEhT^\v㊡qI?JlNdL{f_Iܑfas$XDrIj SK\34jjT)TbY1‡NiH$d<+=lݶ5s֋pGRsb0XT; 5]RPg7XN
+[lAn={ÆJ: (? 3NI<e7 Okdwv%;4Yi 3x+FiL>Z"fIryżzh̾F]ͨ]": D!gҺȯ`}tR #lBt60@rn&aA ;/uW*"ehL䏈\,j@m"{Na 6:4P)||C = %_x7@7cOp$ 7R$ߧ`}#sV[QGQfw1gڌc8Y
+tid^+r$[u6 P_{nx pϝ@Jꤸow.|~q6gb$\ S]ן2spL\^8d{GaF{ꈆ͑& NA_>kyx;M?KTRaN:k({!S_ז7faӉ(]rjY>U(1O:G% Y)C9Si^Xb׎kU#T:\ H7#ETI 3TZ~b? lF0hƤOiy EHK/dd_F9uo9[)F:&+dŷQCa( `Dc
+q L_?W Q7$X
+'^ai-5aPPqK7z~{uo КMgZ!aoqcR1:Y{ Ƿ`R|yG=A, %l)O^LX<Ab˧ I9q8Lȉn$jLf#z5*Z Kmۤ[# YU$;.6Ta1<W[Ct3Vq*dPE^G=Mq;E+ju)~6JnV&%c:54?320qk
+L'yS&\aLu}si}" z݌:So])~v'pMM9˪`0,LDl2 a1<HB/:R]qCۣ
+%atoZ-(y
+Mȓcv:%a d_Tb;-Z$َCJ/Hp\]cBq'XX_Sz[=ϡHrܶbֈ=.~(s* qOt>uFgUFNIXuH>FD=O
+"#
+g&Q:@2pjKTKȷe&ȻjeJw;Y<ΞbkL"<l-^&o?.I]"n'%3äfTJƶҵ]9f
+g#x0hOt(d U$#N{ #0.)QhڔvgИkNf
+sNӫL+BNY|6c]1Pg e!Ҩܪeg~_18{Ց?|.s90m
+i̳;KAg}[ -/Qkh  --@ # xvl`yL1DR;+J>3\$PUAk
+&f'mUZSKWk(8)2\'+4'CeJJ@mOb(dRc̀}>6|'.RuK[r9u޸aːQs6"K\ZR7¯D32~3GX
+%+8Cv$_u͏0Gǰ2.>q5Rʂi0GuglVR Edi֖]w#x7a[3r YfR@;!Nbȭ6{kġ݃<߲D>~X3dؗ#oXlQeSjw@4"eLӓM;`MhQMш`&5- {~&vdÛsRGTXJLEVvg'3t|.W,iwvZf0i *Pl'M B&4ը")+JnJ
+2q4b4\oϳ1>e*lnJY]6;v016Ÿ[FQ.ӷc)n(Ofc\ ):g\SN}Ib\_
+
+,ǻ+2L ?}eN|2s%(DyD <&\r޻^$/C3ӻ8fXwxG#
+Gp_3Mm!%dF$IQϨ2[ )0DfRsAM'y:M8EwNEv+x8օ*#!-ľ*.xM2wȟtO:hOtv.K oվZ<e+cYt@1 X;Rz~tbTAdHo!4UuȡKT۞; ػn 4]:ҿCͪ4mLĐalt$ˡ#;ų(_eGDȌu0zw 24ސQ{Am)4DނZ"42!_Eiΰ&+hVe9եhGGVuy =%m1Kq_'Ґ%d<Ѻ;3#R} pb )<ӈ,+adP&jj'i h
+ϨEVT)GqcapY1
+G3 [όq;n3[Tdgby_ &Gg #0'؁sS7eQ;tMQ8Nj?갺m8C)DmԡXR<o
+o0| =S<e τ):"8ReЫ;>> +}a?iff૘"PjOe~qZkWE:7WD -xfTM#U_F{[T!r *E<DEXӪpBZ?t(ﶉ>$@WN(`~ABu,_3{dNMڟ#wwV8~%.ܻf.C+}/-
+v{Ѿ YIHIM(3W q|a/gbyD-Zsc/gbPPf
+8x @fo>qE,?DN_֑ڭ!dY $s@b!`'tHF.{cW/z2xWD;L+eAP8>!^)F0B)LeBz9EF-0RȻL=RD&oۊjX~?6KuhOTqH#WTN#
+5}(ǻb1) AUa흅c4cրu4+XunH1
+Չ}U:i_<d[N~@ W֟xl=>wv&ǺpPpFqM2w>ʙ$|筈QQ:{UMHnCU>,&w-EncLRHsgiuSm a|AYE:K c3Wp t3f{KB'*EXeRlï">="?I6 0Lx8n|*HNe.<HM:Q_Z)1
+k J^
+Kbswk<RɏwX(tFτ'7-]%i\!) ӈawScm˒>G pڨ';gZ0 HGsku? a㗌>Jr*)
+vU#jZI?مLNΰ^%I!'̽3aQݴ[A|=€{v} ;ZMX/ߔX.,^e*̻.3YVrLt>W_ylӏ=r07.9I:8S,PvZD `-qV}2ewؕ.<wDPR{}l!}lY~uXԯkC)zv޳ q2z,9;wv=1g oE%,*I"Z?Pw`q6go6uYm\6!S3(g " pIE0p|yި
+# 8@sm>Q"3`1o<xH`T`w
+
+F(,\ S·p =͘"O{EnC °/)4~k8M l٠oV(oLS ZO`{=d$iH;)U݋5B=D^xRmm84$ScE8eܾ-5,>gJS-d;}xޟ
+yHcl2n+cgRwv/n4:q 9}vT%mjvvgBf]ᣤ*iб d\<{ZA<lKM^cPwM?0`ǬġsS >nBri[wKa̘
+DY`UP7M n0*_tl8ƛ#12cZi6Blf.p`az89h6T 8`"e2 0zh
+fj'Dl7݇@h/OL2]G֪ ?-1Fg--E΀b,y'o`묃IY<UƐ;J[LAbf m
+T ?]Gx
+`K -ZP,NE}]~a>״W66d0^ߣ4~]L;&ģC
+9#7q{eWaCio5 d<+_T6q$v;%k*r_l[
+kD4O!&Oޡw6S[qʣJ5ϼ2+hsQi*[!u;HWg3hN]t+SͭcmPl}=>/i
+N3(P8քdl9RًUΤ]@FFҽ ؗ+gOl乁!AUc=Fc;EqEFJS\gRyt>u&*,!ևA6q#,nc+8;;t=hg(NTrlogOŬW Z:Xʁ"%B΁Rzi{֘Bhm1K88vS醞ntDɄ=$6QkP/}K
+ᩝQw]Z uSRv mDT~5F\$\ǹQ^D/oZ]`'g(kIb]6"CI;Nq<&AYXCť? EmTՏ?n?rf
+P
+zeE<$8Mjl N8.奵g[AR8 8/ח)Bk.h!kյ is'qnpҲ̠ G;,~ hZK?Qhi!zDVvEְ\W
+Kn٦j|$mG.1`
+g3R9˿mNm]yD ֨K1D<@ S]}w'қҡ!AoP7r񇐄 |J?Ju9`ޖe;.;(b摼ֲ p1->OC-byǖg!D̲rrϘv#y}Pe|1}v˪\$&-іXM'dPeex*r \5mf@J !!& CxWA\Q1 VPh<>cr+xކދ^S{hC*判4/0ɹ|}=Pe`u <Jzo- Jl A\˭#W.u]]a޿8j,5nٳgxB'jox䋁ԆY6bkpڣhR
+ y f$v=ukK8PQDUu{1.Q͊<Kw>_._֍UMN5w% ߌtq nĆ#,a.#O50"R4Nłn! 1Fcp T$FV0ż]0 _^6:MK}@P/zʣD{&t?F}γu[@4zٖ81!H+w'/y'mw5F 7ʊGf1Pw'k"o:^Ξ<9 | |j%sl]e-TmShﻐՎ NSa#|!~XAvD~$mnX?mY83z2^f JHԱgB2`įnDqQ.}p7m~ċGI 05=vXZJGJ{Ţ3@#~jsPP]W4?1^fȂaYsQ,5̭Fd4V`SMz5zWzsJt {)NUB};_콤֥,1:!uX}w .u!7gצ\RH-n,W@yIX+_@&1ϱ>3TA4)m
+o=ӈ^,ȆkV!EʲJ<Nc48M,!-,paX|ѱK ޕN텿]*PH8PyJ)LcЦI|O$I1P
+`ωj %E[z.9>̳pO"@% b;˟we#xlO
+ѲQ>ɤͬH_ږY,`96%9c-"r;:z{':`eUSэY^Iin ǖW]G]SHL]D2֒lq&tB{l]=R[asW Cknz-|i&>BKUɋs%i&9
+mP?&sY- 7+`q钳S<B(I~}(w9;#_>B8
+K- M,ߋlC!(|2"4hYl)l]<[R4ɠ>ar "tz4w+29 die
+109gаjO\7pOc<ne#XoXr>CvaS<!v.T2Z_nq Cf!GcH8U* 655^؅KGM;=)E*8yXO cJUI8TkFE.haSCTIT
+*>D |/l.%|=u\/tEꨇ{1v
+7%G"2 Lç#\1P?+ i:L8
+endstream
+endobj
+11677 0 obj
+<< /Type /FontDescriptor /FontName /WCAPHI+LMRoman9-Bold /Flags 4 /FontBBox [ -501 -299 1649 1136 ] /Ascent 700 /CapHeight 700 /Descent -194 /ItalicAngle 0 /StemV 117 /XHeight 444 /CharSet( /A /a /b /c /r /s /t) /FontFile 11678 0 R >>
+endobj
+11680 0 obj
+<< /Length1 1769 /Length2 19553 /Length3 0 /Filter /FlateDecode /Length 20656 >>
+stream
+xڴeXݶ6C ݽ).݋Cqw-Nqw(o{uy\ɓass{<I(HDL ,̼
+r7q\
+":,L
+~?Pt/f
+ݨW)C5e-԰B9=K^U-׽?Ӱ)#-Va;} p.7G[ Ke)wa:^JU];CM=
+xTԂg>½'eA.+r1–P+):Qّduyڛއة0 ##Δ? 09y"]=g}W]V[{H s%'. :ڇYPPp#KP6JsE?Mk5n^0D4C#6f ټhS_ o}~w M6
+M?E&{ D
+ O/d}fItaGGq4'QCnI46܁ZJ6]q',$E=@U}j+V8Ply}j}r|[oPRNSzCe"r["+pnQˌ)+Fj8#4vi(
+':㈰l$`hK&aPBCZZy{×WdxT,]Dنn~?Dv_mBW}3Pk>9\xځa\˒]6BGwF1U(fNE˳./R
+Ϛj"zͺYb2ю>{pH͊F;핞p`0a4w#
+Rc,l`'c|md[#壆/g(`ٌKlI`a#VTaiYĸm1$Z[( oQQ ~Vx ΑzqG#qe 8HU!gK6cK/ ʒ qz<#+nWTxω1Cf 颁@i sh# -O[l r=XݝOs.?bNj>)=ФPbOeDb6C.Cj:.RvBSph__cUEdo\{%5E~#fZ._.?ˍ
+S( 
+7I׫^cL;(/x
+DHe[{=G1;,iT_+%<[F](~gKgsF#z2Q.!49Q;nԈJEk/)Bdee]T{i3uhG5h2h#j P r.V<9%O!qMٵlEI!tnl|_6AYsr&R_H/2"2$$mX!=xgqg=y WYG6Yf{8!9HȒgox8 I~
+*
+_`^C(0&m[X;ξ<nCj&K^,4xj;잼PmSX%SfףxО@Gy|^4 ל Z{^nP80/5lւt 4ۯ:BWގ{ -OU`$贽f{T-IcC`%HvQ_d-s*Z+;jج+;[bCo9'|ic= xaSa@ؐM.a[3*!R˕F̲eJ^-yP؏ F'I1֐>6mPT}oܫȁqj@`Bsm*g'S`UiZ# _R~C_oݏF8[0D$<!d4T "ي>GlT-a
+=r;[?x"; ;I{͙4]n#[356B~X:= gw9vKDZ/kffprdfM䱋 ) cZ8S wgC7D~a4E
+9, ),@?N{Ȇ]^*\HsÀ@baNn:C2ˑg:H_`S%#*SN3z]PߡO;WEbCڃ_5}go5l2Wq/?ǟJ(
+PbmaJ*Vf5j%7449=i
+Lcn=JuI|xX4KGQϬo P03F啚[/xMޒAj_<'ڎr>a6ݐ;wg |$Q96?{* 3,eB!?!6c  *LD붞$ "JQ884le)+820!d}1 +'|{*_'|1}9lpG
+[C96Moy)|^e-!6<LQ/-<t޹3 BipxTx7`Mt8z+(H%љC%T,9L`yץ<[+;VASGJhYXRAc>0%3z$1:%ܩr1+$_/h!NvV8*ڢo[#ܞ8ϙ#P_KC:ߺs]{w+r4'F9`˵w}~{w(6s؈C-
+2dcIaEŌ$T^{Y/ҐrTR VjdYi;aMC>V =0Bְ}y%$)6{m}S?Lx'^S)x[$Uw3Z6*G)TdNF%gC2w%dTUvB֛C+D|8َX0] V_%\1d=Z7(zԚe#g?5Sr~.@/BrCP*xbɺh/I%,FW-K~T/Fkz/de"U65ΞnϦ l‹
+ ; ,n
+^X̭R,mwSkʔ.~LOvDK[n]6s9gy
+T|kz/:Tmͣ9@FQ.#7TDFMx<!N\rzBq!yO Fj;! qh۞8|ahɜ"A"@%mգAFxQ}c0 |rnu6EDɶ%Z_K_Ovіgp' 4Ə.L|/5hyY>-=Tb\(:d"lpS$8#=pUM6W$D3L[c|nG殞%wԒ] }uȏD1st<\Id* OYoo/e 3g̈sE!gг'mH )h:%`aI'd]#L=c%湄5UpU ݿ(JD\Zu
+*zm0 įe@f\u:zu|%a>a
+)"7)]dR`5z/۟?gn"
+;q)d^G`Q߾fKx-FJC\#.y⋛@P7(#axɰRښ≶;R,r#@/GY*Tvq $D]6\PX}R]6[t+dEGׯJ?(+^ &mp)b_#@3>: h25+%HA&2NkIW!` XteZҫP)wbH5z@nHW8&H|+ѻEIABU͵N
+=s'=q[lhJxEibTBe~smޚ 8tu
+K9|j9{0u6M 4jh= Z-mb.YHF[N0woss)#+#Q<[ cx"a˭tqF)ju`gJ%Zݮcd15?ٚ I)˻lL-{<HřA݆isrGq:ff_Q|d1 Rj0D_1)&< 8-'LK9U+5c}6BӨz;EhԔRηE蹼79
+DSV[
+U1MՔ2ۃt*T(<&ްV8Ȓεw/cFdQ/ɘ0 1ߚϩD){n+c_/\
+(=vyI=ΓH,yKj#4mƤ SӚIHu 7)}U7iڝw'ߵgo2hgæzB[N ϝIl* WLP)u@+J <UrY0HfJ"; OÏ<`-CVx
+3Pڬ4!vGy`&FJ;(e計ҳ'u%FZV:H*_k DFVsf\W4`4PT xfl'8kC=P3ưBd R~zBnxK[QBͧTÝ%74')Qď/T|f;lf;Jݖ9!ʇ_gĩ7DQɢv<CC-K:ìY<[#"fj#`6SH7`ÜM~0q9:TI&T̪c4MA\҈`r
+~Sq\<:ek!1`HI$97k\]׵Kd>i\:Q;B/P'Uw٭(lwܗe1%65TGaK@Cq?ApshPRXZa>p:; X7hRW7vnVߐT
+sԇpdLnNn+Y"NEp(KKkbz7vjﵾ]Nud`j0;kҶg`Ud
+nTu,tJ\W8M
+⡣Y*C¾+m/ 2 ң{gj9.㴮ʗDatW 9R9tb<3v-Zb_ahRNF$*&С'cM[N`k^bT;:Zzo*`ʅhK\AfuANICkMv-ÐYp38VCI#MIdbo7K+9i޶?G9{/Kz◑.0&m=ND''پ)M1RiUIS*ؘƥvg:
+♝w<+8l\DWHʧKHܨ&<{dZP3Q f㧒@i&w4@z~Tͦ
+qFZ[f'zgӈ%nqޜJ$ (:pRxE~\B_0py*[ŵE,{Bı
+2ɯ%YM@GEldڬ1*j$JOyTPL|<:=1 / ^h^q> ^Y(Ow6
+,3MP*Zhu-fh*ω@5{1N"R?ܯ4nk3Ŋıү.vի尢;X E6n(Z4E0gt@=ǁOя[ÊG{MagjĔ~Oit잴
+^ s5"(mg1G,DVDž~&0 n{!x+OJ!Z%g ZL3wUlIۇ eW$`18wFsxXF4jFңSLh*#hY*sx 6z s@en2gPSnZ_A|2miHY6aOp3xrPBɨa zL
+q㚏<{7p_2p޵</ݩ3AJ>K2>Ln.^DQ&Jq|܈~vFo[t|zfCtZMXr i{­jU҈#`4|Ct͠B|HGûKBT@'q9l{`Ay3 S슛'|
+]a~w(5cs:55ʋ_Q1!JBOf\-Ηr$uosp/r؉c1# t>Q I!EϛeXfc.U S'S!~CFFbɎ/`tq$QcT¿޲$,ȗN]VZ 0ٍR:Ca af~ y/5)* |^
+=Jfu=YJzG%_]prN}ɘTz*ngx %/bwzHF|L FVbp̟PLkIi q\Xm<\?9ߎ6C9_Wrza=&T գӥqL͸/O-sɹayІq9ldz)߽*BgJw7X-X
+A^NpOI%tzN @\GgcSԂ@ap95ᾨBZUͩk#j<,-Y2=Jn覉 E2dC8pcw_*RХ76qdiؼlbRkq=`[_ZZ\i
+n,O]no/ ]PV"q${iҩ_y% Vj⠶tg,(8-n66Q? W1so牜GwnE^\޲A'}`XcXx]1Εe
+&kLU/4 72#5пӥ4fSfr)Fbz c>6BnM0ӥn;9Ure$ m`*Om6q{(d"9ďrs10$(kzӜTBA U~T^v]</]_['{Y`?*-ߙ0Ơ" X%/]prmߕ0GfIN+P͒bK+~SbA C{>oV4GWkKӛ p#cZNs,0{N^'(K 7‚E-9-4%hjrw6BElD̊$;o)(>v/UT"</|[TWouDj$ u˕A19SJ{g7(dCjlR'yQ#+\!&HQRa4 }rUsW&\Bu P~[z:go^iCiLbI!ӅGMdK}cHGVI,^|bQ6 eQoT{CIWԇ|%N2P4<ٮןֺh^LA& @%BD됏{z=MVd\wKx[-☭luE_ (^ƺ-7ܿ=k|ҐyiAMxPƲNZ-\}b Qz皬@сiě}gk:PGO5Imz#AEh폝q.R(%$cbwBGyi"-kuiy)*Sub 4*HG W/3-vG1L"+LP8*32 +Ο7~W}yD.{9Ĝ홲|E PoB>< ́Mľ ug{ELTL `h"t1X`luJ𙨡QۺpfߠI 7 >|)뉸yCh?!@3^m_񥰊=@&egB1үxP._Vcϊ[ZD %6\&$v7ꬤLdu?N=e#(+H:}|9u".R׸a|//$-c8}j3 _qnwSOA^kݨT2a'ܟbpZ[{{oN&%@arG_ld׼m0eaQj09PǓzg %?U < :/0cD)<2h+U
+'s5Gd8OOG^%g2ebɕre׍G: (|k vđ7~bϴl='"u潢KFZA>{;؁2 ް>%ltqg4R26TGm<0Y-,Y2.[c6/*֟3PE6.TTR䈫9iPݑ+/k^NsdoJRLlJp $ri*=6$dbY4|tYWx'tB6Iy=gNcENS+z xMt~7-]ѩKwe콓mF/O5ߊ\3l{ "7Ԏ|[xI=9w%T!P<}UTWeM6=Eз0T~6*|:Ts DRݗbM#%k<CyEFfZfA/B1L'SSIC ^sA'<a-H89[QԱ'̂D"(-ams@.A'9{=E49qF7qYTT>:5Dljs{c`'y EL=)YCDѼ)%]5n/`! H!5yeTZ : rRwLYlU*Dm&M
+u 9[g'Yв]{PH~yecĊ 󡞍
+"d*ՓJGZ 7GXJ-$XӸ
+?98@7Jopcx芶$ `HU@ K;XIno.I F$od?K%18b[㎍jeio^o؂P'+"n`S#X՗+Bny zZ,-a}+nh_tci֛UsXhBu&{=TwkXd8U8mt=fc)]CGByI%q<z<]N
+2'? I>,Y:j~E*2r1
+H*
+._2s]t g}:MAT~5F\$\ǹQ_rxeIOw#wBGi; ,z@hַwc<񰣥ҿ!쩫|}O&O.jKǪֻ'+M¢jbӓ+b澶/W9 ,"TI,;@akbP%[и,B q8,~PF?QYLֆa=mMXk=k%z0Wݔ
+}D-뻀V򔤥y>N A>Q"p1\9Qid(Ÿ&6;: b ʀ%T5s {lF Z e%JO kNvh z
+LU~uBntvTXG5XT*ѕzUWmdM
+&BdL5?;|WE^$v|LKjnQP-t|ٱ
+oZb~a_HjϒG4IG\krx?$Bv@L" S޲핬1JőhnGվJ)i?lK$G$qp[3 '(AȽ Խ%
+a'<塡\v@o7UL* 0kufnr "s=qֹ+be}Cȗ,nq0wk
+IϐaЖbp}C
+#6ko)ބB ,4Wnȍ E(iRMlqGq>BSxw $5f+q-13ߌз?SKaBQ \ɘg>#{dpЇ<AGͻ(Dx,A'j[Rnt$W f1ƘUFɩ"q$YQhbh`*uӧC!9c~Oagxx
+44hH!YOeܼ!PQLAW$:RY ~w&TA۸u2y@ͿlOz4|R1*
+lتWRE%_X7bRb-+)=+;2]v?ύk;33}@,ˇӕ[Ck>'uK>%
+\%JN32[:}pP=Gs<Z
+j*6?z3.ǵ_Fa9$n?
+An[XZ@ԧAar2X
+x0 & 9Q_Xjx:ϒ'@h"ˤo]CCEJ[ƋR άUHyu!\?r
+As;7`03h #1|j#o7\رuN"1ZLC>*0]57^s"$gWSüB^"-ο[ -X0 3eVIGỤ7T\Gva/~`˝@`B9C$SSJBB˂;EL|՘
+n{Mqq>CHk"QW9)Bzc/$=2JY*sͽTc:Zք,ˋsd?F_'1阊t[=.<Gd8E<[BCKy`M|~/gQH BMtZ .Q,ZTP-.lEb=UxJ1坈ղT;mYŕu! M`M3@p^ɟK*:<5f
+ M+8./yEM`s6Rwgճi5fL,(4Kc*eq 2@-DbEu|gMH(k9C? qG#Ov1;dpV0NN,2Yxfcj#Z"L}2~6b?&q: t*H
+{O{3LKjV4E 2\,l97I_ na"&j|Qc@'(;Z$A79@rmmPXtd\,a6Fx~_}aT 7b^N٘?(>PQq>x˹ caξ_(°oזueTEWX.uޑt:1 p)SP
+n ^C
+w 9ʺ&` $2"*Vb*ɪK v03=ph)͑ex%M++ 3
+DzTf2L~+,ү|j ڹxtqy0r%~smFm&vmGlF[hlj2WZ*V4Q@
+endstream
+endobj
+11679 0 obj
+<< /Type /FontDescriptor /FontName /YSYFAJ+LMRomanCaps10-Regular /Flags 4 /FontBBox [ -496 -290 1501 1100 ] /Ascent 527 /CapHeight 689 /Descent 0 /ItalicAngle 0 /StemV 89 /XHeight 431 /CharSet( /a /c /d /f /g /i /p /s) /FontFile 11680 0 R >>
+endobj
+11682 0 obj
+<< /Length1 1881 /Length2 2001 /Length3 0 /Filter /FlateDecode /Length 3102 >>
+stream
+xڵUy<T{o_FԯLaΥ C 33gfq5JHRнEѢ}Rn"nJxό33g}=\/(Ѩ&6łf#2!LVr1nbB"1 a@C
+6pYNjJf˥RőqY <9L
+ 9à(%A"_ˆBaw ҄@2%H !BBx#rRڈ  9X_!4_3PVc;!rYԈ|<5.P +="JՙyP:ފxN6 ЈK1LJ$jIQ>'!Q'"yED ˥>0T:}&7[0
+x-/w2;37m'-~?uKGw_Ȣ5k?/Iړh3t)~!Uxݼ+楔m'j=ƪua,v}Zo٣;[VWwȞPK-+kou:pϯSIjU~hhfɢFV=rRhtWUX(,pRtM=2AUzZ35.Ӭ쟨V-cm+R&t-SQNy=Y@yfBvs5. %!uɭ:;׫t|y72('ZN<U̸0X};'~ g]ݒ:Ն;WZ;J+{ˀKѦW֭_ay6ٹ*$4m:ÁK"ntGΎϷZڢf*S8ՋTk iUzFi <Qg4ruȪuXģ1/yaJV}rn)mDO~rʖHIpiZC?M?A}{+5Qg'MmP\Rɣ9s΂x͛VYN}ޘАM v'+Τ~Ό8z0k?mdFMi6ָz-p1M5/0Y:mz^2o[uOʐevuGM3b gL& =Z6W
+3Gkmd<Sʫ[ej]3<Dfh/6]isN1II?;xUP}pGWG5xfu?g\8骩~qrx hRSҗ soTVNʫǡcS/v\ͬv}kQT?>7%轄TjmCv4=bVi?!z(uH5GN,=}ˈG}g&HV5 ݧ[<١ Ӌ>GɻTo$i4.)-'? <3_$3h2dfENgS:.kxs;S|zeCI˯Oea5L9aֲ
+P=q{"|h\BS, ̸$N=\aQJ /,Oҡ'7f:74Ox~<MM#
+endstream
+endobj
+11681 0 obj
+<< /Type /FontDescriptor /FontName /WOCBGC+LMMathExtension10-Regular /Flags 4 /FontBBox [ -24 -2960 1454 772 ] /Ascent 40 /CapHeight 0 /Descent -600 /ItalicAngle 0 /StemV 69 /XHeight 431 /CharSet( /bracketleftbt /bracketlefttp /bracketrightbt /bracketrighttp /parenleftbt /parenlefttp /parenrightbt /parenrighttp) /FontFile 11682 0 R >>
+endobj
+11684 0 obj
+<< /Length1 1853 /Length2 4159 /Length3 0 /Filter /FlateDecode /Length 5318 >>
+stream
+xڵUy8mG%"u6kֲcoc13%$[RBD-*= )Klef<~sw5NC4#h Z% C$`p#JPT甕5L2@
+ 
+d`xP+v2utNPzbP
+L 
+mڢLY0G;(DآvF##i2Dٛ"`3
+4E Рd?BƇ
+
+?;G-P" *wb?[L B Ξ@"W*C? u(\MS6"}Wq1 "!!:|ҙ=
+DgmJK4(^Oya(8Zth=Ea"%53mYGg.BwK=NA&wc ߛs{c]R/!"33Im~leF9Ky0nX=vtj0U,+R)φ37FF):Zs`@rWs׮͵#:RLoj>p>.0Dط},f=ZŢfY-;MUO=o:|nӲvf-2Rq7s+ZMM\({۷$^׃O ~U|VTg {UQ%E:Z\ԁMڥ#5 ]h#uE}FN4
+7_EIQHVLu'4 E1}ܽ,B7}-ROsd=J?y#RǾhU3%oo޻`nlUcjȑ[Tt,׹uogβO${x}0o*Yppj҇Hnk2.1̑'uUks٩ OU"{tNi rZ*sG*<im5">ְs>Olp謯Dn2"5i:2
+I6^M]S.P֖9\#oS'|W-lخ^TE֨DD
+|4-h$"&L{ԸRloY/dMM| >9bӀk<|&=&V3DK󡀦dxEKX2ۍ+ V?uNtGS/Ű]n$+=wXtRQ1
+|/IC%ܻ |MgpDu  ~o?ᷨx.a|1ܼ|49IQW4ˢv,vbA[G6d- !)B+ʯylIRqG R=ulRmVAW ;Fؘz)לꍼ<P譿e-g'djM}AY^چ#SNTeˢE
+*ԛ77oq6N,Lsmy{񒾝wC֚PF!P%Oˇ
+hk>6NOMWېyض3*Qmڎ[+UAdBӊr_=)/wKʫAFPJAv~:'*'_6j52Ҷ8֮Sv lz$!KyygcvA&&ы?^+k:g#S[7}7yŬݲ5
+%=<U\xł<ɵ- kpO!2c}m79lz¤i&k n.cmC=zǫ"$rP{_OM~Wh*uFg-@f\nziFppWd=-)ٽs4`gG&t4#9xd+YqȕEÛ%Ş z[v"]%T9oO/Lǎlԧe)Nyլyf,N: vG3P\Nb0冀0Zxcט3{Y-c4XKR!tvMEUDH&"[czN|%Sr_7 qEȝ
+o<E> G$V]43ԇ#%x֣%vb+'N̈ƶX,[ct+{SEh
+fȹx,u:ՇL l竂%_n?Tl}K:i{Vsӛ?$MyulfQ[Cm:)|/XFWT %}Ru~Nf"[ד/Gw-lj9NJ?,(h[4/$
+. (ldy{L ™ ߹ÔRe|DKs,>SP_wn8㔦?4i2m3OOڳFA>BmCMwL3{i}rMv@DĮ{!y
+rW?JЧU'ΘcJlvب˅OX7RM͓R/ ]xUfA?pA?V8^+>&)MKE_>wr]|S+ ɏ^5 ]z%ذyvFR;
+=9ue
+hvVֳ@j_5Rjeؙpbqsh ń"h=`=!&uԳ)IL%bWa^@K^
+4"v<i+-ԾC6ڻ[
+=Vk&6Wt'̵s.I_imTQ i뙏@x
+'"Y{CWDYkW69ZKͣCs[a&^]2]n-H?tZf
+endstream
+endobj
+11683 0 obj
+<< /Type /FontDescriptor /FontName /YCPAMU+LMMathItalic10-Regular /Flags 4 /FontBBox [ -32 -250 1048 750 ] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 60 /XHeight 431 /CharSet( /a /b /c /greater /i /j /k /l /lscript /n /x /y) /FontFile 11684 0 R >>
+endobj
+11686 0 obj
+<< /Length1 1688 /Length2 1921 /Length3 0 /Filter /FlateDecode /Length 2966 >>
+stream
+xڵT{<Ti/ITj)!$57\kV(3g1qLfQ(*Z"%-+* kRIEQ[yϜ3}xy4rBL,; ,^F^ , )4I_X8",t3!!B B,HB s@C8G*%_x"n h1b
+e5LdY%Y|4Lć
+|x_ @rbAcd`6 Y: !$;0\VS0DCK$ur!,!@E @n#~g@؋1L Wv( Vc!bql"\4V\X
+1M堈@
+8D@qBI,xB u|0+H;|\ZHBXq>XK yc*1 tS
+x+4!iZe᧍jeH$&rD2<q2nuŒW<a  30D#a`p:y$P))@(#
+ˍ~TOɫ{YȬ\CqĽ55\3O;RT|k-ʮ3שΕv^<̖ΚUDȜxVπj5J*%}6Ȼ^Ewilڽ*Lԛ}3b 3R+Z]- \e#iwY<!q܇wyˌbiS s5< qrU&rO\Ȼ0+p3;5I꾛uk8 ?K FͶ3"S %>(KpviEz`3יִz";80ygVVܘ_Wo?¡jk`ޙwۡOoZLJV_`ȪMag(F/,u@x嬨S/ zk%bm5նc=B6_ͫdsʕ<v"6ϵѢ-;`cx`UzL2wpjThj`6I {^|T^yq^_X ,hI[+rzoi@n5Vo\.h`:ѵ7H62v{Y^OhnϬvwvI_ݩV
+ĎcN,OB,h^ʔF3eDKoz
+3pL`?nւߕ'K45->ߵS)<yx/{^&8}Vן\(Ȋ<XAAKMO4eMOwoJkgu=nM\cWcrS_stG)Tڭ$:|~icF-/~kᎦ[ q+bEi33p+_E 'g`WV+g'N_`V9TŞq Rj!GxlŐ͚e cCS^ݝ1?m,[aߙXjsGdMEײ=s-yEk{; yۥn}*]Fʏ5*+{vH>(.ΜBKI1W{&ib4{˓/u6$*d<gM*L^),4֎9nroY{Ip{~`SlNkkn^|}jhz#8EzPf}lTUig)POXl
+i> >21%n.iv0N
+dfok2Gg)}$\tMΪu?Xg^Le%YwsB3ScJFliꙙCs{lP>Oᤓ> KݼWsNJ@rĪBlu^)q7)iZyb#ݶ܆h?TiJ_y4ΦpjBlE~Q ]d! x681} J|C(
+endstream
+endobj
+11685 0 obj
+<< /Type /FontDescriptor /FontName /JMCQJH+LMMathItalic7-Regular /Flags 4 /FontBBox [ -1 -250 1171 750 ] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 72 /XHeight 431 /CharSet( /x /y) /FontFile 11686 0 R >>
+endobj
+11688 0 obj
+<< /Length1 3033 /Length2 34723 /Length3 0 /Filter /FlateDecode /Length 36368 >>
+stream
+xڴuX= (ݰ
+d
+G"P 3i0(
+L
+&n.
+u9+ӷ3\?m
+`
+ NڿM44gB(:8ۛg"e 4Wv5e]M/
+/Ư#e]c0rpK3[w܈)w^
+]7+ٕ#0oS|xO7iF`>!^0o30o'on3xЁv@?g&69`L``Z88~Ykbe 6e
+ޤ?[%'+.@{6 .b{`.v\V0o_j
+$ >DAg<nP^g6]Ӓ1dPg&Ѣor|ȁÐb J?- _+ƿ^u.uZ{V &g.R/ggpM{U7:<=Û\@m$(Ds<HCV]yĥ^,̕qˆmQ?dTBU_y`_ 64K_T]dt?ΌthǶ$7~9w8I0B_eAQV716JSL$Qi&zYg^S2/CX|>\
+Ec\'Mn?iEd5KT΅EZKvսyaV˯l!~哦aB= {0j`"A.wܝ9gz#36ݰV YggK"-w<݌Kҵ*WՓ q66Rl&l5cW+\P4WM]~ЂF?bG Hb {e[s N
+ƫdk 
+SH?-IQҋ]^dq%0{rd^&6wN|#o
+pcJ}r&Ɋ)LpH9#3!{3CSW:T&U& ('41pti._ '؁*<x31Ǵ3&@D55dmq٪AȀNkU҄$v<O$T)^czD@
+!Z㠯ζaiG)m)KViQJ/INz7Wde<WjYMkwMV5W҉xd7&HEW),EFXl}^sj)d,EN?qDT~
+|X)r"zۿ>T|Ӿ B
+͆="JW23L=HeO/ܐK SLpASsr\&c0#4RG]?ͼL3ľ`v޶8e<iraюJP8zI s=^0 IhLC-"L"&ѐ.8J
+!BiU2s/6yR}<I\}j8ǖX,[3)ԉ0|-Y 3An%,﷾
+ zRYe>5ȹ[z6{ 3A-~?d_)zE\jĂU.$e-`n)k
+?+{\[p2J31B9uQ_̥ ;ueyIz7A$T1 Tln'zDogU\NEy#2g%QAPr +W0.pyeC;굓vΗk' 1#z;Z_g}2R4g],ʃtɽXSFI̖^Zrtv([5]16a|XeNġ2DtȞeuh%d>S|Ee.sP飤Z-̫ Nxne3.Q* Xg"M (0<W</d4E=IPVF RZ QxYјr
+//J #zHsǞYz%hI q+cAS-3֒9ЭHM/քQE񝎞3H< _̠N'%heA Rr"FS~ &]Q^x)Q^.WÃOui'pMh
+RdV2G]] UfEp"dGB?xLzp5 j}+KOF[i. S=DUB ϶VTDvYN,uRLvbʼcЃ;Oۢ]a }|^`)ϵq6fP?]oz}!mπ( &-"ӸJ%d6)y==}I^&>O$찆w,QPD? }VNFv'Ey` "Vk{r'/蔵0ԃ.Z?Jˌ$nTi5SE7df⫇Rt2%Zq><yɴ҆36 wU2CkG%go$ZV6Bx~7km[c$x+"%}LT˺4\2͗Q z4]ީf9_u޵;}MpAq+wo2$$R8 sEܞnMYM lቨ.تN:K~UD]_YC ~(tr\e1[(Kh6d:xÊធlGq4ۙ !YǙb P=c&&6 8UxoI۩3Ʋk);{+r/" PT|"v4 %.ʙ(mE
+/$&(7Ž+V?.^8L^A?OǪp<#^松wbkȞRɻ%%IO1 ""@"ܫ{;@yQ&%NQA 1 n/}aih~dF2?=dz%vڴ j0:^Q A悔k
+uK mXRM<UǯuT;YVdd^Ez2+>dKۋaHwfi"|ph)Pd'@rnY2<YShٶ Fa"%0Q\PQ7/Mno1 R4^b6')qrXM $CHW:N"nΠtJ(.1NW%)؏>#rDMG^w[D
+=^WnLr/a~h+-dzfE
+QL2aƳNXIb ƼV2!j'+4"?MSqcs>lw܃hh'>-g>&2],!!!t/K
+P<ي#/?64`^Aʜ@`>yB,pؾbo9|SoM.X2@r.4VeUZ3/zf6OA~~ct.#A"[+ۣ.C-aՍTx<"6{V(Fv\@;ڹ<ǏOFp EYIa<CΆ:6Fm"6_#E^XRP_As1cAq3ǢBA6vz"G?ú2BC(Vѩ*TJN*?,w!ʏ76!ҵ_,M,B}-5 |x 0QsF'DIG=!m 'usNWNYO,V-*>wcu_K
+NxvvӼҹqdٴ?Z3cVs.èj
+dA<]*sFGāqqy28I{">/UJV|yE"n9
+%b3Z| LVxZ1'wU\ Y2bx2^ЬaMe8zJ`y`ONDb1;'T9Xf%n<2̉X4U*-2t>l{\ &Ot*AaJp;[yBC ۪;c}}V`+(FoP*FQmw~^ Bk2q1^4J#B\ߘܞQ9vgʎ}QqtOuQ/sV՞^@PdndմOr(L~3
+o0 p9'"Üf/(BmUi
+aG_LpNU݈,<ZwVHEDfB WRnܳNg' ]G,犲mسU<l^WQep J@s֌\Fj̇>ǼrsN9r#%q P wXDA*_OtS*^j?򔛑-W$aq>tƇѾ+vU*sZl/|q סrqŢW<2SytgLeaTBXK'L3WN)]O> LW̸$;>#MNPՒI,j}T\#v%`~µ1K-L*!8VҳG^HQgBE[3Mw`ozHD":nEQbxނ>+Wg';_cw uW7G/oŰsu<\d. |#:sDh?[Jz;/B
+P Zp,\7A>|vd.kkir:,PױeSyVڻh{bZ;[r*],@^@yOM _5>KC{D&Q|GѩB\B;)᧛t#M!X4P sraH2+om{? g7! ~46LҒKA@'. \F)z26R ´l?GOƸ!]jc ?7}hPqN&o}yPMwJQB'aM(/iQ*˖|N;-JQCU8XJ#7!TUu^0uRgDX+Ty@t3{ɝɴ#Tnҏ%EY%Q)H[
+謮lJsl,p <6#.T{z+])2 qa#
+1ۯXT]zVƃs<lGAI7Q0Gs҄L
+l=h"9f衇m<?X92c?dgbe ;r!=+`3YF>lD-—c]D>p\T@AhyEAe>ܛY&ygGxо8>UDZ֑0-.+m|qA@ESnIG/Z
+Gv^x 7Y5 gf&ݖxFc\h=L*4&_Y~8V:V|AZԽai=bt AE+,,~| Ds
+}0 C\_uw#froχ-l!Շ'fċ0}"RUW Z]Án8}<ֱx*}ms
+؟(Ί
+Ev`)1*6}9\r3Dρ̶zk#nRj"0F{]$"]JxWyP>#۲j#;h7y.V`-4Iʘ_=;fV`ʭ)CT,i碱kn x\6ԳCl0Bj́uJ/`Lc%tOԛm~U o=a
+Arf 9۬!q3Ap[KSNk2nIVJSw2X.*.&,v㖓\Ka&z6aR:%(
+8ų-Z͂V l7353d䪄i&ng3RpdiRK£+*$5%o[L@n">$ఃk\v5y*iTKwuDmKS1O+!Δk&V@*RdK})K%́-=2?a-]]` N
+Ćd1nRr
+^h ό~*%Ī]*_ 1(~솘ጶn0ّk/..L Bu5h#BBZWڼOĻU0)}RJ`)U:V 2ҔmnSR _ _Np
+㪬3u;93fN4*f4u.
+boHΉMg\y̾J`&I(Ӄ>:ZVVY Vg&6-kDd 
+bݼwzI*pyƛYH4wŢGϢ`|va ΍9[ aZm.3 2He7m܌&&~6 ҿ'1:E럦v#ƞ" ߒ]0 ۙӈ$YJYn0o\Nv VΕ!Oh)2~eX1k$O/5=p&BU
+6^wЊl<6~lc[vs=^~:(H^ )wS_̌-U-,e|Rݤf) FGc}5|"Q(k
+T8}&+v&Z`($=:ɏ`1kxLż3Qx] ("=Qzҿ=@F 7X1'[Ke&vBmz;31n@f5NNTiPJcU0fVgF`e! hsBx
+g]bEbѮ HI=YFaՀ>}5DP ~rTu!3RxzB{[exg
+PMzU7A*S\4e6րiܗAd}sRԆRΰ$JuPAq
+yq3HZF%ӕ]$yyhg\sJS
+`7Xx|3ItFȐGnfe3pC3JSxWM3F2yw=VO c<1PVN]f rFA"7omҴ9+z]QVۼ᧾!5x;hX0}ϫ8A9vh`?0%E _rg˝5$gMPI8b]fi2Zv(F#~uQ=|F`&U9N ]$Ij`(5(Pkl\dz{ N$Iߣ;ʕD O}E7Cg] ڳ^لpު>Nf+@P\UmոƩrˡ\NȔ?vUp~#CK͐i,uw8R\NKPR^c |o>X>pԻB sX]5"(
+#i;6`;4D8 T`+>ږt+^u+-K,X~),{/[oWN*3 4; 44sA/ܐ[.8:}If~ua
+=T _(iwWge{Hg4`OK^$fT԰F{z'yGQ:6ڒ|j\3Y3-'F̊'7t7w%Tt1P&w4XQocy+YAWLOZ
+{Cn[rOPR}Oe2vL4B 1s%)cE[OuE9 BE9/'т/^j\nnN3Ki9){4qPۆdC}3_ 1KD& 4!ELcEuO$_* KXrL`$x>7RkʆlFK,hFA,АP#jKڢ^/+XNLf(Ŗ@mdsL{ߨ1XtYjɜYVcu]KZuY6nlEлK\\wB>/GV_P,:pf28|^n8s}T9WF~ISNڱgzU}r$sz!Qu_&R-"ylJ(ƸяdXm}y@ɡ j>6LWTf<%|?aUAbЀ~
+j_rf;lq%^D>FWcWT
+]7r)t,K"_"7 |(/v9b11ug[,;-v7my3=/;gqy
+X'K%Bvmh-^V\儯P!\~~aܭ鎩g`@DJhfcYk3y/_3H`L`BQDLriu{(^`J|w^<•ypܺP/`/;=R#뛾|Bi4>Exx#(lmA{%HGEL%o#v{{Mᡶ>aGI]ERT
+=1k%ֺ]4D&V=OKbWB^ 51re
+>9]b4~ ֒s?]/˱ SʸXF-m@D߸.x䗚p7
+g$4eug5 ]4B\W7\Zq8n}#ϦlGkbaN6}"=if_xTa`Yc5~r̽aMwv$S,OVšr!Ck. LKCca\-M'gV'Ro^b).0e?$&g0D?PVk2S_@nfEYӜ' C܊[W+;D(w_6k |66 |v~xR<\UR)ꌵYQU? 9Ȱj+o^I~.36F2O|00H;G*N.ۿryn12̐6Sm]+h#@GV&꟢;n܌>FӁ>)cŋ_'2nvPT5) R+LmdWdzc$.V/d@q@/HLCH TF>DD`s&wj!}2t>4zoy^Ì+/L}D YEƿki}UC/Pȷj=Pǧ^e|Px]@si2] OdG&jz|i%VȾS__ 9 IcH==uJMՏN h֜[ife䭭ܲC\<PLޯj?o+ꖠajDO%UH< ],q3љ#Wɵⳋܾ\ISy@tLQGZ VQI[\_i*1ljeXk)NԚ X8y9lJZ+o#vϼP,~3v՚Pvfe?ž>B/+(D8yd=uo̽@D%uΚY}:mn
+7_o[QB*wې
+?SA.[ǧzr.7#/xinY@@40#2]ה#&TM'WNEK0ȼ4]15yoyw-h(Sr<{7
+79u+Ul~>`Y5:I=˅Lja! KvBfCD'.sZ*{pL+?#RA7L^|[*-B w0&D#]RЄ=~*s+^-פcd>$=Ԋ=6Sej,wb= ިsZ׮rtg[?YC5HS^
+|2B'UMi)ԡO çM 4Qhh3[TDv25dٲ4h38DCu6VWIhXu4pTҒm?
+Wm*~gRE Fiz>+D}M5ZEkih+F%c
+T*Χx~#XY.IcKFF>~#)N#Hk{|k" ($mf?F)No=0 k.)=g.!H-8VnN.-8諦A"ts\AnL <>#ݘroʵTv01ώ^ k
+=2y0`ZrdSeH E^Jߒbb9Uk..JDv7ذ{q $,{Hnx!YNvqOy翹ReAwp"YNV0ԏh^ћ="~E=R^q;>MDm(Ub- |P|(~䫐f/qwZq;[ީ=w{heϫK8:Mq2ҎmKScS0Y9Pa KЅ(N0A$>qہ9*+$XX2O%}jyeq_K
+ZTr]?c.@e[ꌥsv3; "+Y%mOϧH;vbG ,_=5:ʀ~pt c< }1#"U^Ml(2رEj|("Bw/v<Y`1OG',~~21q\]= +UyTAtTK퇀y ~Yk㗡<1MTc.d
+^ Ԏ7 ^lC0 c۶m۶m۶mwm۶m۶msYYL}ַM*"OC?fַݪt ŠC5XíS0}&ILmd$9+S#̀@(8c PDnן#EΒϑZ&̖}*tJЈ J6(Y*lΗz iebF>۫r9tG^6#YD'N5rN2"ss
+{AP6iV ǃVQB4TFAnm"/9ΗP0qDւtPVykuD9<ג3wTfY~"F'$xk>(H>*WX`-Df"67H~QjSJV/#
+؎$q{\ Vjɷ;*$.U5hd O*i_C.|(Ի@a rDh2R5%2nu@J1YHRIB:t's&TYȞ.b1/b;Wdώxm ݱf8=Y-1QJ}
+XfdivNp
+K5|نe%F{ 6?6nk~`{"* "LŢ6h'׃XP'ڀG|#B?XWzV\S/?xقa _ʪW'2M O_t4DdT ܂f/ػ~%w>EE"gbM0s&4mϿ;xOsA
+HtE#jf+l_Ϙs@'XsyxT!<C5UΙɞ3+Z~S[
+{3gljM5,i#чSfsM$#rEl3_x`K[ Q%$ ؐǤi%pV9ѽ>dl`l&u2v&Qb<,1Hm}7Ӏ]<irFԟ$ aA̓ۥ.GKB~0F{)j.
+>׎Wq|ً>炳4)њӽ-f
+-{!a料=zn/NCFVH'iXa̤P 7xClR?AuZکe1Flwn<] EeSM7Le =Co!\p$%ɇp9ܮEdF}SjtޛR{X <T2 )`LT=QhC^NCOSt҂*"B)xB"DW-h=G麈F7# 1
+DsYJOI@:-+0}FhmaIIמ0i(]Gn'i?"buty%0C
+:{y PCDgtg/e-,{)U`?d<\Jm۰hxť^y
+ϷcrDI$ ȫ~uxqfmmc,4^ify 6aWŸ]"
+(h`c=k- p+J`PoMa
+tU~_9>Nʹ.J`{_puR^,ٺ^)^w\=VOϓ:wq PmeN^N7@F'Gԣz"77>DM"(xG0  v-ʾGE
+"(S~ΌwI!iռAKC93;Qۖ(T*;\`&'Gն"w <֕H:P
+S3FK
+zu&!|ņC#kYfBݲCF@~xggjI8z6M/8<Kvs(sLWEP][) P}dQ-54,ߏ3q7ĆУ'7d'`ۥglJ8kuϊbe&6!#: Q
+9B?~`7S0eH#s>z]rڲۙ}0 .]^5f%"8{S
+<D0ġ@[۪"/>6b{ 8R;h t;H2rj!in&
+uW@HE~U}lql"-iZ{ISvOsuEqR-I̅TAH_ϘbuؖA=97${(q}7:ԅΜ
+
+ KS4|_<kKwح])k3'o &аG(Wت)!,NHbL(ozN5Am=4+8W%4 RARwbt
+h5P%(-s^-Fh0 2LMF88 d'ogˡy>.?QUQѝ8þ0oGb}
+:ʀ[\ ۘGRJhO>U+;]Q:u`PEy!!s{tx_~c
+t\/OP}ъ)*>5Є>V4ph md^jr&w(@+ֵ0o>ϷRBA1I'1kGÁāFLp#ËyyA7dǚ{d?2u KsaB1j?
+]˹;I4sO*N: bE
+gmKӐ#eHѴs-.ws#brNo~[~&R}bщVYyo\X݄I
+ɳ@L2lxPt^ $u:Vб <p
+̥̋{(?/^˵Xayutjw=$G1WTj!NW4]xv[Fyv
+`KX"~ C";G%\r&P'+/L@7X@M=mE\qC,[-6aN6e{Je0T
+iE0`GD3~!g0B:̫"=u_hGH:N|FGWg0Rh%Z 8Ά_7h*nƋ)hW(ޤjFZ\oH><0B])APi܎XWk4J}\Q<f_oQ] K_w$ tB֞A6eOࣗd ؙҫ"
+Ф䬚`<Z
+7P
+h4[H~g -֬A'ith ݔEꅭgĪ=aQ39pEJNvBf`+6Kü&0gKP/E^?@8+4w /`P DS_iW.H`i5ܤH\9:L7 Y1{
+tvJ5X ,Q3jr Œ^" ]v<i`.:r^(?r5uCЅPB+ \A9a6ה'řzh-m/ףG`ZR7QIR1V] 2J*F
+[s!pg9qj!<@cO@=F/_[TMTsK+蒙L$z4QCgp{cn4ͽl<Ocyjf#F2~;l1y_4~0XٝIP%9&0;*% q=~1뾙9h:
+ZJ>?793&/zzk! + 4OBR+AncBܓbo]A#IYN1fQzhK\c}қ.o&;#G.+!#Ik0!Ik<8 &AeW_;N;qA=G[YGPX`?oAmnnRkc. >.cEt9_*bfǥd|uњl[woS*a74-#LZ@&J%ϦF5U e~Rn$NavDc Ldr[oajd}b91
+@f& |F(<tUR7xsPVV9TTś%е Lp[$8ycyլ>K$\<bpN:v ګWۦ >H,5^,Eڄ+L;:d<kvBpw=({md?NKK?m.Q&z
+P=d%V7; L+W/O "=+@ON:յ@ *
+5^4e+̒47FWWlgP##.ZEYEaek2G5QջK4}Sfoqs iO&ʳA
+aJ,G3NE]
+ÿ+%?ύ|t
+KMF{cI"ݗ ␓Ukp䐐%HSCi8]RpT^;T ")B?~ϋEeŢ-I NM0/OwWI:B*"jکT{uo"!F+ fwo[F0y5<&~]":CL4Ss[&)2<+=`͏.), ]MSDmrYdpt]NPrKd0I<
+XSgBb8Gj.i?psdV8
+KLNLH%[T"N "`YU2BxˆTY=o. J؏`O( v0JNE֗e/u4V4I}~"\U$$soz1Fd)2&t&y|O1ªKR\GzT6)`7"a#%ܫP~wEjm d:R,A=>/V?g߳/<솧&x,n&1 Ms)'V5چ:ZNq؜lj:Ka\!lU;F&$fi= (26Zՠ)i\tPigz,_r7b i.]}2,hğEAV%4^Ҩޗcl>S
+fjt̎,έQ.)Rr̾2jܢ3@9(cƈFƾ׳2kyC\[
+t벇azZ/nȮ3]Z ‡_PrqLYj={so嘻F76>s8qI7
+:82_x?'`б-E pI^2`Ly?;s9ƙ_u}:{HGZ;"'{=N"2,N]4+ҔX܏ "bǓ@LS<BBEd5/DUOZ5.ClK8Ѱ,@((kųN
+dET8Q[8K Мz"U%vHHw7 u!ٓ6#A?>޶Nz p?
+JYJ:&;-L[=;X+Y2t;ƾnJˋicg5?{h߮M,ch2,Z3CjP!6N==so}[#Q
+K-xcjwk; e y(7v=~\t"*%d
+2f!A \C&7z"1MJO•0~
+UUyRC!샒<MJ>aXB*,nR ԔI_D^f&]ݙ\)Nf})Ψr{
+KwXQZs`BΞO BL=4M̅
+tfԝʤPYNU]Ec' t0_EoҐw/] `ܡOTWE8;$FN><2",F(To% >O(/+7Ά܋n:9ZVn
+燺r%ak%:݂vPy Y{9hf`RIa@<k: XR_[`Kߡͦ9L/Hyza$U3&1]ܩxTŎJ w5q
+oM&
+9޳]eyPĖJzƲn[lyXT%Vgo11-J҅[L풪(]aS>o͠B{nx eQھgf(kkؤnǟgY$;9l!ȟ 5⽎w9t.5od^WTc8'Xmm(^Cz>:fԦCF> N\!:+n@ 'ЙVTsbB^{vFfBQmFEIӇYq+xO鐭wdT28(\Qk6>gj\w[A-S{ӘD
+-;xoʀ\|O %2Nhc ): mNJ_W:*[X`D8[ݡs )<6'r/Otf]I̿CU
+$/# !0M/YqO1УAZ ALb419KxG5Ş94w1YEQ:
+3)'9p ES~{Ӂj)`1:X.8ץ){d=a}Ql^KK(NRNyuS
+S-PBFVONReY ȥJ,d*5} 9N_@wC=d& 3b}faIqSs+zgvXJXvTAHOsbӖac^]Mf
+fZ/go"c %7]gG*!H,m?}IQ1^@j#
+XFY8/E6p _
+.,j!,ǾȑUF!غq$ ABb[q\SȯtK鍍-a}?q,Eu~OwV;$9 BgmqpnSDOQz<,lXL|oq4$siKt :f|-fUYJuѬ/dHs>3yҰ
+u_Y}_h>-(*&eh\'\a42Em`'Կ点{",Owxrc .RMQ`.#a+Ayprl Ө4xI1 3Bߏ
+ߛ zG
+? <GZ7yK3L"1<p|.'BUtN]p#A#>öC\H[B2]M&Gp4@0Aky;81Lrp5>[nz<{ΤC9~QDԒ`|lir}(CUuJVV E=pY*Y Q&R+3D\TbS5# %sI8#T!ƒTU V .˲ϣz.X`>wB{jNlqݴ+Z
+<k8-Bcԡ+ۘ ;YQlvuxz݈#O MaB`Q56"һkq‰nc:ByJ$/M,pbZjRns:(-]Y$B@*i>y|wYTN0)e}
+: =VVXRR~6X %h$Ѱy
+˸\k7_DSvec,z0w qTiтB 0skZ{p+ǣh*M08P\_LjMiQHW< eew&QSl}b ! jx~P\1eKJU#sih޹)o.
+ ~<E˱i=/
+L
+G+0|#pWI`_< z
+WP5>G`ڭ.G'h2% ^Tq9N? hNӽb [p7Xvs5!bak;:XC4a${4yR[r ރz(! ^y
+`m*fRNJg9'T
+|f÷!y g5 z/4į
+P}z8:Yw$~
+OO5`9V/y'2ӫ\<;N0?KA?J\|tPc?9mcJ%j$7JTgCuj(-^Z6qڮ -[?KV?:>1"""Gvr-XWk roy& CJiLjCC:NÙ%aݕ ǼhN:c=J?؂žQ|Sj[[GF孲,@I۰@ln{YLN#KCdz½ u"~ɟAL"$Ws2{ܬ̌HyAcvVmϏC<*uLigMK쁲O;@S}aqB"@=04EeX2Z
+Bz3QKű 1fRKPuF>ƋpZ C@{ ~P.w~7Sh=VbS8 ϧfqEoq<Q^ÎW@"fVT(/H>
+/][Uك )q\Jfg:s_
+4)EqZLs?\wGϽe~zRWQ(
+;1A˯=0V\4 /S{"~t[Ròxi>["q@h
+jM!;lظl/^D۳egf% Jax 7۹Smޫs,?HB|OtofZwyE*uL 4 EbOu?a4i+(GAh0Fl%vHQ52 VLvyg`c"Q朚j.\58)+/Fz8}v|bׅu'Hs bA`a0_?&w#\c6<:2uA>/CƍVO`4h  g^7}ɐîO#hH{klTj
+EDbj.6.я7KͻS~4gM
+Svmݯg,(D$s߭2 !g$ҕQDNۅWk3e (7>kqDpܧ4
+8W98SsݲQi^t<[&W~|f ~WM3텿 @6D,mC$"bf_`^p5''"ĉQ".s r$+ċXb
+ͧFGN U?<Kݣb80T?cI+:7 3O$iQ>ҡT./ü
+?l?#߲><yu u򈠋jAAQj=/mTFj{lJE‡CAC] }EJ(ֶ;-[r=jt nI$+JN-m|V6ߢL
+܃<[a2,6bj t9wI܀c&a'.]\tąP^_d?w{*3"A
+<Gz]n?N".SvK(ZZ ReY( rAA-<ņTwwŒwf
+TD+
+P:0nJr l:JIg^ Vz-aQ]ģL|nvaIG$=MyDuc&zDG7,omX"'uͤu's/~ S?9l;DD* kn˳\Á&Ŀv-hyI X2BF-EnƱH-o` cB-ԈRqWk`_bR{D^lC[u4kk/ݘò0&wyek?ZΌloݔKub,F=+BNy6ׯ?Z!M~s,qIX!ҔT[#q@iYi\b#CY Ga,7t7nzwp<cdH* ^;RKX2 3.Wh>ij@{:RqJGފ1lXt)p`Ār= "Z%Rl{}fI-)*SRBU4w=*dI>g66'
+xQd,)P`Dn8ɒ&{񙒩KTi/KL'3 ~};ƞ@Fժ#Htv<&Q &a2|ҡ{l;|YC)%*Y EY)h=Ǯ\vorI=um`Us
+/̞,:OSS&s'%@硸-s:0N%=>rH2gr1 u4@0k.# _TAoOlZ0x._=P#1
+ m
+aK鲋VJBjW0JoՏ]˟ 7s*:C#ϭښ@@#ʱzPU!M_{v$<Uفw1*'ᘯSuVeg)W
+-Y$>K#,N[P}t<A!H>w~s Fv&CmPEi$Λ?5צF2Q|!WY5xU[-y iVpzwzA,"׳\4zm/=g
+mu`WsarU]l+ 1C"N=٦4
+S6YPg (R ?e2 yNSKPC<>Wtj/P>"0Db*h4, 5!I1Lԑ^HZ9M7duRWz-,h0C&>2\`iٟ7vCcno;L<pʮ0C# uJ4xsd}N;~onw{^ 7#r^{ =&$"^Nf|{
+ܬ aʿv7v'@Ҙ|li~{DƌF3# B6<<+<6Ͷ xsdK
+֗
+p1*)K)7wσcƸuĂp!tj\,͏:Ϯ6~DĶB9&qL$nuN d {@aKTPQTs“
+/ef]#,ZrW-=꽝6jOBj) ßC?7Pogx`,df0.$QGriyA"P@^)/^.2 I"s)][Nܧ[ p!pz׆-XRA :Xhz.h3"2a^D0}P:X:inɨa/(# 0:L:e^F(儎Y8 txnX,m_°$b]ۃA& xy܀aB*Z$s ap~"*tJasip{%H]%SqX
+2ŻA4LKI9B$౨{'WNI
+𦃹
+YOly^V` QB,0y iIZ4m'y1坡!_C8 o' qm \΂\Ɲɻ ^,autpŻ%幦Pm~hX4)Aqܘ6VD߁'*;̵5dO.X_'0 f>3bP
+=zAqYyxJ^>RQd(յY;s^ ⍡g'/}{ n&J(s:_11-R<f
+b13X
+ojUu7ذ2T_,msCE<鷓=2Sw$u#ŁmXggw}SlO$'{Eg~56Δ
+~3^<@ sS:xư֧>O?`$Ic|քMDRQ|8g
+endstream
+endobj
+11687 0 obj
+<< /Type /FontDescriptor /FontName /CVXELO+LMRoman10-Regular /Flags 4 /FontBBox [ -430 -290 1417 1127 ] /Ascent 0 /CapHeight 0 /Descent 0 /ItalicAngle 0 /StemV 69 /XHeight 431 /CharSet( /A /B /C /D /Delta /E /F /G /H /I /J /L /M /N /O /P /R /S /T /U /W /X /Y /Z /a /at /b /bracketleft /bracketright /bullet /c /colon /comma /d /e /eight /emdash /endash /equal /exclam /f /ff /ffi /fi /five /fl /four /g /greater /h /hyphen /i /j /k /l /less /m /n /nine /o /one /p /parenleft /parenright /period /plus /q /question /quotedblleft /quotedblright /quoteleft /quoteright /r /s /semicolon /seven /six /slash /t /three /two /u /v /w /x /y /z /zero) /FontFile 11688 0 R >>
+endobj
+11690 0 obj
+<< /Length1 1875 /Length2 20880 /Length3 0 /Filter /FlateDecode /Length 22069 >>
+stream
+xڴzcXmv&\ٶ9vje۶milN1Y1 S_smm:_gQ(2$\Xyr*@;V GA!Xۉ]@
+K,
+[
+}P$Ͷf~!yr<EzY^+86mҷniJ^1ͼ3󛫯a8ZY˭rY]r&Rw \y:R"[ p,~Z }øa rQL8//`6 rc*z\*Vg9ƷPL Q)O*ջoz.q879Gu!t 
+q x4YyghE"NP~PtMtpX,*{2Q/&4aļg!|jh_qŞ%'Gw)BFA!(2 :%:숸3 B~Y̐՜.dz./Rl!,UL s 1.c$#_FRuf}$72hrVD!_+"?e(dX]lHk^45̍<HE cm?rI] {cA. _$,dcq -F|5KۑIPh-ݢkcP[|;¥+5|<JCB)HG-b#0(X hS&gJ5w#iofz`AQ1||Xq%ݪnn\VGLV{Wurfwqct+(jz:)G Ad 'ޤ|#;h7 u4 'J," L3 Szd ԣ5I=4Drm$ u<5Ϙ6H3^gxsq^-a*X9HI7 ~'=^Fv##w F$M/0V!
+<,C>"SY4Bs}^H
+4-,LD_u -R:zf8ED<墫L{;!]0GW=95}٪F;o
+U:+ze-g!<&Wy ^
+Uh?@[2L5|wL*L. Jz.eUFN Ė"Yxvs[F
+n>"oԪh^`c&BPـP؅1<h@+e&z OP؉B= MU][TbQ<#ug]%OK,Գ{+θ`ŨC[ p?[$#L}2͍aQ(e<zctވi=9ͨ^V7RM+L<>WW˪aH&'kV/rXٛ{;'8u$X},Z$5u#%7BS8q]?9;3:I$#Ɲ4Up%J%,,Y\B` @8=m=~%bϗMI2M,?HĘvse:gK\uKLjg:-Vw(< ^ X+7%kuu%},;ef\!&a>Qި9H_im~TLf k 9ؘy}?su!x䓫 &?2g8
+o
+d ?A ]0G{
+қ)zkN[w١/?j7E
+~!(5zj8H2Vt| 3oq˵_V]3cII˶ݙ$bG $#R!
+qJ!܏E,BafOz2.k_k{*S\D]e2}~WŽu&IL23(US?E*gQnZ}<I5ޞCi;kd]U7M% +2Q)hq+'RM%r\Fdd)(ŵIQOk'@ C}ίx{_W;ǥVUŻoMɆFO 5`\1јg zڼl=1ɦjclh=
+Tg`۪#r7{lC\ M4=WkXq^\MWx{j':9Z"4)4?5PU~1Ģ${ӹmH.9(?(!pr,*S 0 Lv waϻZ*ۨe/^=7Y}>Bh' @qjڇt.saVp)(diě;[G,'"W}((K_é ײ1:6&4\8tm=%lm=@:-XP,Ȧw ~dM굈Bc9+\L j$}/ rdCrTҢ4뢴8|o@kCT3K]P<Ő\#g*Ug8bUxNY'ZrEg6UՔ>W ;yQ:{.ºsGWuYer`3ER:8,Z*BlӪT#}y$iFĩtď±m&0,[ nH4yy@la"-7Vrvrgm0.C+)S"
+Nh^gqG^WԽj| Twq0K\Nda&7J4f&ekXa7&xJis)iCFMS#Eq.8O9qn)ܥB8M# C1ubX,\`KKR_7 ;O,IWOֆ 4gfMHH}TL6bjQ3TTO<
+V"跳d .":grQ'CSAI#dmes]ӣP&[Hk8B o^2n f&Gz zl)l>튛`%=,#ؑk)ALGǢ>nۚRП{tS I޽:;J^v`I@pvGv-W[tc_=eJ .?a俐l"?ЉԧTeꠇ ׇx@u6y dM|=ڗ<WŞa)xKS&uK!Ć&ks4`~JN. sڗV?8Ubvʱ*Yau!^gT`Ř{\[u2+kۀPV|2"3k}\T h0[$<2(xūת,{xKG#s1l\4=fC+Dc{y=%Ufz/ŽY*6惌d:+u:Dz6VIН}[&0`ܘRx6q:M429{)//5'`*XA1&b6yrB3@De0yLw sG-ӯNWy ѱ*ALQY/O36ll6':1W/QwiBPM&Pi^'Ld'VG# ];!b;`9&Ol£=AFUn:`!4?LvK㲣L̍e˺<QFL.4]xo7rjEr҆dȸ!v*rNN4| f7=ewh{7^{C~U+ 6/)U*VUMGe?GӋ(m
+
+48  _;هk49yV4(]M˦q-`Mg ]܃]Ҵw*ZN&ތۧ[mp+Ϟ1JQaluqiy!@yгZ"tױ9nWO*`q& y;F~@Ֆ 1t2Pzpj `Lcb0"s n0s~.BsFTsYY*3zdZMs&Hmv
+W!+džX
+~)@owƐRM x,fkgXFD"V`jJ,APƽhb,UTϥD@et' V^9t"6Ζ P#m(
+J;(r\)վ]Jt4m
+cmXC!"B n$v<ŮJ;ǏVVdigĘ(dEuH!gj! QHܚLI@,n;0QHIr0hiU+`Ҧ.BBGQ~BF]r<,$a)gYMļ7[1%mC裡:g.kØ3Q <U$|W27.(0*lsbJ5C ~lKh,fZ
+F"QqN* 3;t -FvO%P#%pwU4*N1V8p#>QW_Z%-x~ EiVUoG|C6T}%`eQVAmG ,ByG')Z e_` p0rIb#z [ZX@m)=:k'0<aA
+9Ki&^aa]OY&vi4_vBsM'_9(:s= s33i>Uc鸟>4bW6أHV@GPC%i!
+KĊe%{]]Fn}M2KJ3iQ-+zlWP:"Q$oɯ᥁A&,2ϪJtx?ŧ&O͵\O1@ە(qU*u]OB<)^HDOoC/*e^8Ohѐ>GDO7Chk]>"Ի>h%p[CqJ7e&~k:s- Ab@hDH9&v"#}'&#-f7*i>[\'3wcs`S~K!JDЀlR|ܬ!OYFrXt TIBq=~yh
+#_^HEP⟘֪% }8l_>Fc@G(:^p;)%9h=r^!F,l@<a0AgO6D>:P%l@_hpb@˥V7ÝjNm;[l/wП>Dfdz"J=N:b*$U𡁥\S;2{VJ
+ '!G p3LhH4 ON wL2X)Ykl :ًkV˵e9E k:#r],C:QDr,m:aՙZDv9R [&G[gU4i/*wCXteWoo iQTqD| ̥e"/o5ȏЋB)_wP!JؘUg@0¯=FS h7elߡc .l̀ˉօ"2(vog?C/3z6[5Gb, N:=p*ʌ?䔼RsJzQwl
+#`?vj,E;<7[zƅVTʼn)km( t۩wxjhiBZe50PA@4ai9| blajӽvUc*GTq}ǁ׈&%WS
+#kZs|O# 39xt+Ǧ҇sztoW߬Z1҈;-HBve$iX/CN"[3^F,8QqbەޗFKà( P.hC>\aچvBw3NiӠ(+,g>ʃVLBBJ%irPLL.,@~.YP
+#4[cj*qOxykw̡
+j/T=G"M=[%{>ML"BQ鯠(;15:!ҦZPQr%&\К'BIgKGi®[nDž*1}r:~ĥZBnFe5=J0Ĵb;O؏S:jD> BgJחy[C8V9ȐϿq+&}}kSAÔzq6Z4ءKTvk -ԍw[ ݒQŗ;@8wsc?=B9wIb.%ji'y}]硫%u28[=棔88EjFϐߔ&8.J@heQ^Uub#BI-*7f t&maKB5 f(g C͑ 0$H22%B̅k1<{(fc0^gB yq {mkzk S@ՊσγRzXvWҳe/af/So,a|ENbNxQq7R7hAm '9WDgPzxX1zQTV9spIyj|rF<#+xΔ$gr.3L_Rg2cu;2}CvH4΀dmVjvX)MĦfI?vͽ^.
++zU<z1jw%NX#5GﷷNޱYV{POv5dcl{sC0
+NZ%RiV]6]+m
+^Z!
+]㴤Ib(hp͕4ꡘxL*Dt9*=G _ />[ډ-, J~5Zۥ% H &^ @f!{Dbd[P |M;\Q^fb4C6F"fjaG۰۽y]}n)0:Ƶ)ѱ)ſ/7 J1
+{ݹ'FVv1x<Hצ8oKs  K<XL( }<)82sFzl7O%PU:K%\C_֒r3|G=y%SP$Fp|AݽMtV:Ehc[dLt?iH W6q$yt.WMoNd꾉H;A eAU{WP Ѥ[LY w|Z/wfڶ5KFyTa=jxXp?;NNjuw~t
+G:˙8w&5X\XpY9+
+=G3Hф)ɶ; -כ- [s0QC!MOa= cOʓANgaE:?Gk xN|h6KdA('YcjنM;3VFo`Tb^GNQFt
+7iا pq/[|Y[#6p5̴giL= ?ѾSo|n|Y.j5Jq(S-c
+yQ$,A+F>3o L@81eЁ?{A8^gV _\ F$8e"ݕ7"8%V)zY슘 -3/&tGw
+A«!ԣ=d3i$Pt4 2 s.fG)b7
+HE:?po->9/ʽMC;/5a+W2"7`;ڶC ND;}*
+/R7"gez7WjM欎 4ps
+#
+SR}unw1oʓ(3C^,6&sh,
+HFi)6QQx[N]I(g se&Ys͉^a
+QBo Doغ}IZµL㋍qhaT{H~WDK
+Fp,$ tjwTB-E4[]/n^Kj},X1 }`Z~cp?._*
+G2U9]fOC4ذzɞӞ6ˣCx-4un'烥SY*D5'h`{!7L|Vo
+7>wɅ\:
+t¼Œ.桚hN#j4hE1&ØSa*E4
+hp# ?Z<JK_
+odTjІt+%F)<&{
+4%dC4aEyڈmHE-VwF.ƞzhy u MW;5yGн⒒jfT\̒2MɲZ;]f@޽]G}ǚ߆=v$mW{/_<,Tcci1K|9H7!5uc3{`4N+%0h-eH\o!9/)[>B
+K*2_3pʼnns5"qFI\0,{ I$Jt R 0&v`20;aq)H';sm
+uʶ)PvvHx{ȗre>3m4 sP/?[v0{L[
+dmj"YAb}7mXJg3sͬo" ُ8.6`GueOW ^R3jhנɠvtQeW{z0񙘔ZԨz2OݫttF2lƺjAZ`\F>qWWY$t*LѻxmX 2n?ݮH:"@\@xV@l#SǛOW@l"dΟR|IyzH~#-C(>ܫa5P*6sJCJr#OJ @Z+~OVrD5$JtoC,E_EFk\y<[04
+Yyach7H;IAZتm%nJP`c(>K֛-a~ؾcǽBKt ^ 3xv%k?$'*fwul
+FT閁ڰ=EEeP kSpjYzo(u#E!!l"glA\[w=S]R/YF^DuyVƭq#h"2vDI_P>"@|0Gy<pVPNe/Œs 9x1Q1)<s> M6dDie>X<yA˔}g ]n*se}4>aTM
+m5O$56~$SO(<5<s@ )r]or*4D:p:oyn_xJ6%ۓ*B?$Wz.TRG.`$$̆$U+ OY< TU??ko!c~uQG`%UcȍYK%: PZ˶YKwY8UOH=(^A)rǪk;*04?KÙLvysw.rU~f(!a>]</ɩ?'R/؜Ϗ2Ͳ)KىO(}܎?>0*Jb6Uh'a-,bx /$2*>qB1T.GaՄt+?D$J'ڣm+~E {'g7 C,
+0Zр9_QhX)p4\7JJN/fFطjX.F&GlG>9b
+%ƃ$p4Z@ "wu0ٲ1 !h|qXv^ҍ<-UĜD(bG 6ރGU&"q+-G#w.\Ԗau6>0V5u47N Ҏe
+KC 0;#(jGni9'^|@Dpz
+'
+endstream
+endobj
+11689 0 obj
+<< /Type /FontDescriptor /FontName /RBJMPF+LMRoman12-Regular /Flags 4 /FontBBox [ -422 -280 1394 1127 ] /Ascent 689 /CapHeight 689 /Descent -194 /ItalicAngle 0 /StemV 65 /XHeight 431 /CharSet( /A /F /P /a /comma /four /g /i /n /period /s /t /two /u /y /zero) /FontFile 11690 0 R >>
+endobj
+11692 0 obj
+<< /Length1 1804 /Length2 21821 /Length3 0 /Filter /FlateDecode /Length 22965 >>
+stream
+xڴct-mUlv۶ӱձm_]{>72{^w*2"%:!c[C=#7 "L
+CF&
+NFf_~)'O ٘Z?ߕc11ا,,m
+*RS|]ր%3] ,/`V[yå.WeHdS%W k"펲<LWnDP'iEʲl_p%[U6mAG|_Em;^7!݈:}3o|gg j<p{)swu}i䥘4VZ}~+fͽI޴<tS}83gr4@WMfDֹ&~pab.X'0HC
+'4д#Ԑ+{\0o\q&nup
+u@7/{T=}5dZ역cIWj<ڶkGOz0
+T2OwxwėZC9᭱f鶣y]wU!6jH,"7k+Ai逃in=%6R%AchBӈe։Ab&mP wiFѐʲ EwKy c3X+eȭ`~nHMp{V"HF@4haW KI@D8{CډW5 )%}%'B-1uFjZʤpvaSM=vlV\u*a:luaww^RZ-ᩑ^
+2#ki}ޝ>Gf}v`-hd){9Qt]f.R4~܊I_Ƒ#gۼ/|MJܺ#ѹiXXȠ ǒyH‘J F-b-^EySr{iv?ՔQ簋9G{[_רX ~;Dq#e
+nKy&?met|eZl*9%78e6lS:V⾝dnT+(zyfwdDˣHSCrYBSIPrAng/r+w1z~׎m©'vsn[ʢFo*얙u~tazi+U{S*"K#"_v:iu,ٱ
+1JbGpROh')~=J'S_0^m=asw_3D
+C!gkH$xVIYמѽF?N_$>a*qf?yFrLO&A|v8~s+{=:I T#?7 Q/m$m+]1hkeApp>$hL%)ee}/nt-_ JT4\o<–ŀTeC}o;svYX>
+E.bSW$9ӖCP6ܛJ,}sz3b&2܁+ tV
+]!h<A2O9y_)s\ {ɿYCC`԰'uT@1v`W(s(%7qۄwD#Lv®"hu2g0=`\~'}j4]YSUpTv%!Uz:#&! 31;:gܹ<Ϊ'W$ 䀚erթq˕t{6; Pp>O=_g\-(GQ\qjPa`P hEh!A
+bNhP%AX?LtK-1M dxT.8VX
+r=\tE;o7bIiþ y_
+> pODBq!ÍBxB76Wų?] ,Y\`'c(
+;ϟ#Rq/r u8ئ :
+ z[ 8 SD5gFMɁq~rMUmUxv5ƖF&ąJmH
+~F&eB1sVKGS"G+v LwA=GGYIk@0 BWR'Dʺ*ߥA@
+yWnX'J K&K.jf l:9Ft%u"HP36T,0Qe̺p@eD]_y[{W=&Zc7ڻ<k-?8ljHAc
+ * RՊb$9lO2Mr56RjZ+o6C < '9F|a=֤Mv>*Ë|bee1vM NӺǿ^_jZTΓԁD@F6; e4oG=tAk6$hQ&q{Z<)J0|dl|s5ld$Xmti넯s
+}f
+)'~vL{dr2(h!P_\ds;^CN8QTƴ)s+:YScf
+3=3XAf4|Žq!QrlPG
+ޏ aͿ>JpAftHI(Y 1Зtû^޺TV.y>p }85Q{ A'dqz&ˤ["1wfeh V57
+$S"q]Jwy̐I1Pd欞.W"9V*;l?;<n\.?5ۨy{KսʖPi7z>vMfIq cEeL8I5y4=Xr^y)Hȱ*Q4<dwYeV̥$dPpC))mS'o;`(d~{3d? UuD ®Zܽr{q0z/KȉCZP,OzzXI^Azq}h4
+9k91Y9m.v%na{`[jM q <f.8/"b
+)׺030FjKe ?G-y[؋Πdza*S&ju-C%WJ86Z2]^_kGv]#9ݩ3B @
+3.ɌnR(Kq20GsZS]hIR! x{ l_nދ=[ջEɓG=Tr+|="SMlJ̬uxbTzAQ_w \˛JxwZobPQE`cn~|L"XRXA0A` fp]J (J%׵u* Ʌ`
+QLN8UIwX/37͢>lm`8,M)̧$ەNTt͑4PyGO濘یuSXdNmPĿI|˙?TK;@@ mWfpRIcGw6UzJF!Twc!OxYu`+ XS81y*=`QtE7՗dMhP$8 G%+ QD:+dŇhJz%Մ 썦Hъ_gQT8of4,0or. e rԣ( p\ ~ heoWrȴ 'OL_YsQCiHO.),Nw8TC45<ڻn.d$)qTv#oـ(vO%|G^׊E›rH5S s<[w|0o CP >[fc5ыw 6:s<K1ɝDs͢^v-&E+&BTR[Au{<g$3(+9ૐTv $L9WQ!x3Lj}*D,;E*\Yq/0ݭY>zKC;((t=d{{ LY$/=$}Ke]tx,) :O
+wg#b,VbWikLPWGjtЁ7pr{2gRge'J[! l)VQV
+$~F̱kC7>Q5|vOHvb~YEF Zc[iF}}K_~]hS.2r_@w["v0ϋ &~ԩP-f
+va$X/bd)D}M?2=7Oȯ87m@5'72Q^9q؋Vs6d^+&@nW̔V \K)a~洛ULʪÎɁ `R@
+C8o/0tCT7XΑ:vRQ$ZW7 37!hhCy>KF[ˈW?鲰<[C(*sBih'3ޯ9R9Y7Hrɾ=} 80ڽo8t%6䇴C=NREjedEF<`JCo/J )1[c" ҋEAYl*m<bK%8cem>Ik\@pw獪JJw06әPU|_U+rIICȯ-|_~|({*_:ze0F o$*~
+)y榑yz9n~!֝AG& tږv[\;gI q!:`~.*Q .sOTh?{#-8YPQ
+ykeWqqj?ᆫYlSH}v/eߢ<4r۷;۽zc`%2S azf܍S/;;1WLb5 fT:MS$db,my-Q0OAhr3 R2ǣ<a9
+Β*'ՙ(|RN`Ov{^IE5/OE&i pФJbl>y)ޞ0E
+*a2s(M:F'=8=V=-@ i*|4[طeTIEJ| )E!lh?-n޳E9W]9$GfnḘrd&9GfhkRZ'@?A>t72q(L&ݕzO ̰ޣ qhޛUd='>҈^hFy=Q2֥)d0W|4Qa#' k"Z-Uw@05jqtzB@5(?IB#yd<V/ZQ2̽4j`TA^-Te5_Q7W|T q>d**Xg8D:JKe% _-CBZP> >?aT=! MÉm]0RkIc+Sa^35+ĤGo|P8l}毈^~s+=Ȳ*IuiN
+/ZUG%'șBU)JYsn㵑9'+&
+{V3uyl2Wu'P8uz .}2W;\eu}482'yz=G,yOQ#bk<ALJ'V^tXO4Gܨ~v sBk[R]e0SZZx,XtLa>׼cmWF<$eop_ ݗW.~KWu% e' m?F +x zjt]zTr>ukWɆD2uWHKv]Ç!3)<1U%A(x4
+-WUB_QT]m,a7 WSӥ
+xj e~5C:]l&@b6U׼!iIxNKYUhΕΉjTCx9fmT JzcVJ,8xTU,p=@Qf,T&N H/DkjXs"V;U޳aC̓%^O,?^9-omkY0i2|o,<P$ݢMn6mfg"B|b+dPaÈ^<û(@ lB"AְPRiHc>
+ZC+%+0oYsCEEҗӢctOrg Nc&ܹowϟXpo(sq@3JBV|aV {1eBMEzP6<Yc݋t.o5DIvY&02
+pzc31-V1j(;\JlV#LY"!XKgE;HD|R^bǸnun#GoG`UX[Yh=zI}0(eO]e9+Fa-vdEqШ{ٿ5W8npvө=% 9KF(\^8UIq
+ f.^΄Ew_3cӱ+?J57 LUSĊ%p\UfX89Fs:7 ~,W nw'tvEua.L3fGH)X !Ggc TzF:cei RHPrIY62˗M[uBrL"8MI H0uycNJQ ~/9#% tZuToumʈ'r%R\ c@ k5edB` c3o0U:$'EE yzbІ*Rw]=J*MzuOi+Yqt4"\
+)
+\R+^A-ε;2o
+Z2/wgйtAw M l=l][u݋;“ZUshĔjJISH{2js&8#G]̡k&;W+%j"Ouj1(4A1*
+:vѭ8ivm54I
+?WDY=$ZGсK /A'\Z
+'
+zcқּCPq-lXe$@{9N,dbc0M#¯E:<} RSljZhe$چZ?0b[B3U{lG 0g`qs/7oUC0dل7` q .dҬcU D<@. LyA 'PO*zI`=6 #Y$N+*anY&plc*}]WȞ]#")$D4 %8v\Gã?%y;oW
+)b ˗֯REF 6VT^OptLSQ0bnE3[[yeu%wsCJuyPBb#x<2BCH9^M雿VN8[aVQX!k.^[7І"+G\@xk/UEF?~I5B>NeBvYd1ƈdA1 HQE|K?>xWmGejr*Fm.%Gԩ2ɩE/]XDkb,h HZ볆atTb>ڞuW'b 0-i3ٔo߬rܗw5 4+0 Y\lp
+ VlS5FfrTAWԽ|H Na!F(]A7L5$Pax'vB]a߇S3E>o^Ɂdչz Z6(g C^6^Ċ0AÜ%ա*`gߐic@ϔ*¯zJEdl{Q9~8b\Ej>f ۡMKXӧP?C@$U#2ܿ"V&Vg>8-pS9lN[?'Hyq^hfǧa"wE<%e+ឭϡvbM-EƸ {YHsSJf^ʩ ˡBa5 ҙ9]l-$k5k9F\to* .gÎ_Uj(
+5hɁVE 䭫FDFO4iՓs%cCNbw|+A@5F+]ZIiy˥Z^ga`QJڙgme4^yhIs^t
+
+
+"X yhK:+Q"97P 6G#p
+}DŽGp%j&od
+mw`" 7i45ipsGo]eQ"\JȬ~צ\.7nZ]fTϿ2& ڼj"E.Pe
+Ŕ`&@\ 8%U[ΨM_"l)9?Xֶ׿9r9
+{XQIvƢ‚:D,X2VJ ǂ=>0,cjƀ " 8<hBGLNg! Z}z/t
+[,eL'&jS袜qvKgӤK r'8 !AALgQY
+>S/bo r %$/5[m'Ao-z'NqA[aȨ!7+
+32 ȵYSh@B}W 69AX~Ƨ%:|CsȄkw)0sJfY X b&?)w$p t&ey]PQ E[Ƌ{CI3$@:i[uE6DvL={$9%C^ fHMTTl{(hAnӺx:*oꕧ^9͘׶ Z6)x;aYBR֍uHe;pJ73ԫ\7|wzW%Ny,0E|–6.[z& Epo!,|_,5
+$];g3Ay 8Oc
+?x> _w} ,[㍋WukFf|ZʗX>\JI&p["v=WՀfXÞ4-']O-Q6)\T4貝m+zHDX1m)p_N\9m->wB442 Ȗ~yG_$ op,юi{W\9#<wQdά'#Kk\`+JM9ӳѡ#\PhɬH,톋CjH@B AYdĥ}N`Wk(SJH}㢒V<ېC=."N~UB?"%G.&چsjO@o LM! A,Ze*T'̞$kD32BVe˩٩hbm4S_#&"z"ʃux%'뗵RX{uMgjrcCi"n-.PYNʔoi3|:?ӥ֡G< NfHQ[#hÕ1V T Vt;msp Ч/CjdͤqϿ?SsͧATR-24nr;
+- .pxҏ _HzR;`mFAV։N?RG[*B/lϩՊ8f5h <_?rx 2Izn瓂gt
+
+&et- 4d[n.iC@e]ܓe,9[H yļM ✳wP~MAe!)Y,,M$jg >.^v"r#,s: Xg0
+;n?N] t+WFyꀓ'%PnC>]ցH<M@C D.nr6߲;A$RtPנl ΰ"l9:mYZ; 3(1O 86΂y,6 WTx2WxR`J
+S<|
+OfMقْnȸ:/\@ێؕO 绦
+?FkIͥ=S,r4Wm2`5q$FSԡ!?dB>X풪qv؇i
+krЪDȢtpScW;
+gs*=-QeyK#y6 pnѕm$ KE9U "UdER]_kC\,ەKn>U _f_-4gA+:<ۢnIݨP?\x4E#a _ݿ8ew"(x%sSw`\oaQ 8Nlc}!DI }&QRnjM3>776q~T˧T_41{roS{M{68J/)!* 'eh%1'DGr5STQsxWPx{y)I/Y,B#jw݉
+EIݒ `!:E@ie"OL
+G> -ZG#T,293cp׿| Q1̕eF9<_?駘؁RU7Z]C Tv#U-NaFSۀ#>vBQ~SV5QPM
+eU
+pyh~>E\7r/Vx\=>ZBŋ߱{1-h }zXL0F`j'=B`t 4R=9in(%5ˎ<SɮR^ԅ,,6t*s^Lc3$({
+r$`4TV+;_q/MAFGہė`WRޢ IGɶA5q$, zV<'Q'6UQ&tf=C-rq_Sa7E=r9|WxF9wIܶhhJ;̝UHaH@dg|3P.NDhzcsK3
+endstream
+endobj
+11691 0 obj
+<< /Type /FontDescriptor /FontName /JTSGNV+LMRoman17-Regular /Flags 4 /FontBBox [ -400 -286 1338 1125 ] /Ascent 683 /CapHeight 683 /Descent -195 /ItalicAngle 0 /StemV 18 /XHeight 430 /CharSet( /T /a /c /d /e /f /g /h /k /o /p /t) /FontFile 11692 0 R >>
+endobj
+11694 0 obj
+<< /Length1 1790 /Length2 21416 /Length3 0 /Filter /FlateDecode /Length 22479 >>
+stream
+xڴzeT\˺m ;ww ܡ=ww];<==RӚ5zMNL/dlkqgf`)Zm8@V@
+t
+FNLLp
+llٱaprsO>!QY
+)˟*$f8АXNj$M\/VVG'ߦH<u%rGILh4[A5 ]nɯH:;Om&5:z,2zDu-ҵp
+m oi#&+L3k5* eӅ~Pg9q]3V֨s}( 5q Ww)1I#4" ÅUD3p&{(FtqrK ph>0VBe@#V}*3NVbS:S7P.ke^"WiDޖg
+ڮfQ2A h̙iƯ~ZJK%EԿ͏TDWa !}Y/i1*B"["]w E/Z,[>NjhG^!{Z޹G/ 1i##歚be%ݺaAXGX~f-(/j4^|o^@tpz#eX.jg*gr &1#^k>vlyT~
+<`Hc'&y2:(]|4{-/MkN
+@,X2n5M̲N 0ͦ5Ƭ9}as}nR|z$%~~^w|>*(Oz3 4P=Q1ob.dĘi/CBjR)i.5b &GlwYaܚEO
+_GI71~WL{J$t>653R_I}dzY=ND@~ϊEVdtSW$eݽ
+m2_[hS5K3O=j]~ih@-XS؎/]߻hC;~EfO<(L?/٩i٫kCP
+!>"|k6MJ)+DZr\J^%pPTe37JeGu;6;N.0q^}AZ>ڂ^{5Q6NUNE
+Ջ`f=cBL?ܱ36c/cJ )FXOc
+KJ!$6+ ^}ِum2(Ws2!CьFdnh+[j]tA߯MELZObG$fP ExDgqSaTgi
+dWjh'ӡ9QѝӇ:}lЉϝ$7tD!1{,;,U$K9_OM 8R"T#+O0_ṯ.?V]pj1hs3{"'Ey .gW ZzXP׹H1I+Z-T/ԔF zU v58}$_(<zviĄaarڜ֯3[Fvѿ2|;>XBb:']$ QlUz1#aM5{
+JY|F-Mڿf\.5 W׵ ckQ֕k`#Nh1S)"{~v[0o<,p2չ앧~%} rnRC',YkGR%Fl=X=/ThvwJTlIq>DOeU˹< EjU ۨ梖4Y;W*Ȑe6,+/˻;&Tarp"]mc37&zI|az6!83,:fJ+7% #3e,*owdctt_ s ~+awY H89C-g拘_:i^$x#虭nQ
+@ƈjUh!Lwz FYuL|&Fb ϐc_^zf)js#(VUc#yFJ^ZI l}]' iIJꋶ\6!)p[ꄠKC4GZaU:^HI$g]zQژ#r *FW>LpIy(qqz:.n#/|B$wz;-z:z^"TG)fic5B? ۯ8Zm$3T*^
+il3e`I_R׵0oJ5"-86b;L)Rp=;ڳ~/~=,HZ" ՜;"R4I.7!a9CS..*wo1 9@@K.Cݫ-N<`^r'j싀 ^ L[454f-XRs?6y2Z@qmqMN>cr\1ʜv[\[ܩ\8\?{8^?㮘#}6d:+DXYɞ6 [\OcXpCD8"|0g#GV>дc:Ce. |A-X(lɮDQ nVo~m +)Y HFh|UrXN*:|U4,/7@ekxT,_ܓ%}E*4<x%IN1v/ȋ0iMf$⤾&pupo == >rp&E,CɞZh",w+uǮ/~:W؜!^,.rʄ:KӞ-y%ԟHsbf5貪&ZfA؊<Y7}NKȋ{k #zN^V(B5tϱ?B5B $S'1d38wgzȇ\gtw9§}=r.im^_0@5J!ъ&&!fL+U\2bvA#@G!s!~lΒE0-[pw-P# I^h.y3oe/fQ져fJ˯OMzK75_}r*G@Jh:UG}~.&.2ilwSRo|<ca]&a%HvO6َx:uk(@׋+-.A[MW,)m|݉o>P>r I~r8y55vP#u.+LF(#LփGCdh_7Έ]
+GYBTh~H/"wcܧ+M_xH_aSas|Vtw|{}.]/am*}h'ѕRm@չLS Q/Gz6|'Cy1
+
+3mSznᦚH^?_GWQq9YSejN&TхZͷmuwi942ʶmdG,9cB)iM)(:zo y"q}gH#6_silnS*2S-v L8aą([{%OT1E<}v#g>*'.4
+xuʊJb[mrsz"},HNTꘘ-_'O9Ҹp
+i# +866Ű )co|AMeb|IkJ|>ՒA*i*BGkӉ:5h@g828_
+Ea@Й[.x^k55`?7o
+H6覓 f@]IRiqkf13a'[$\'3B"*S昲1+4c@Z4)dn$NٕDk] TȌ JF=VPvx`1MؾmT*;4N2 aс
+%YPc8NåȞIw+4ܘTQC
+h;\FfV5O|cTXsKuGq.^8o*b*Ὠo~ζ,|ے7XmInA+ۯPn
+"PG:Љ f]d7.,`KUYK"Iukz=Q`˵43-E`!Z۱kcǒ߿z[$~su3̒Һ(>ڃzGZ{Oި/&'(j[$uǟۤD>KE)}J 8BÏxXlODgEEß~{9N&l킠4)){4qQ(|QoH||G6JP$AO_;阕8$me>wu)3mF̶[~2萟0rQ!o׳*ԥjnAyRAws cp=YFX0#+ZG&
+l ,9fI<ۅH5Û+9ϙv8% >tIK`~1mNپy@l;"p>7Q6yҖ>hu"}Q73|!\N0 O+c=kiiEΑ]e M  u4#ܦ_7吁 YWh
+Aj{N~0~=:+D6f].}y0ܥ OTE,Ꮚ2g\x
+VqcK~Bjs;z' 6HE
+4r
+o*ZDo~[Cf%S@2n=`KR,Upy ^e+UОfI"{}yoXG&=2"&h
+j?;9_
+t%Q&7=<kq CM"{ܠ!Q]2("V}|Pf
+ [ *eߧsu`U, O%E2 g)PHݗYK^ $o_CD|͜)D뤻INvO߸T>r})>%u[\1︈DWpIN0[{/~zJ וV!ɡeW.{%G__Ъ^W^!J.
+g[
+ZCyG1n>CPe򒒽@$[㯑9`B9uHiozE$9CO/JPch$8EA4ȓmchTDH^gMe·}҃PBx 6߿ݺY/p)0t˻4TtOfK<[Ihsh+k6j\(*>BfP๪,ZhF1~1lQ/%";Z5M7XIe:j K>Kt'+
+JZ4a\?/j 1-3selWm'FڒC)R"+kY Ek\ڱg>y6Oă;F00Z5٦IXX#{_?
+^ÐW}gAj 8BBb Dz6 khSTٜ]Eyv kTLW9_TS-5FH[?XClH:BOlg!O<ZfΚ hi :pRy(܂6W(&\?߂2Žfy:?vғO ^<TnhvIә}lz?֤% qLCcAoBX{X`=\ 'Lo> ɁgnwtفY b Dc`혅5G~3g'`)ۃkeE)h~2
+J鮥L5YHްܮY$
+%'{MoOnZ;NNE wO[6|۔Oya%8Qp.*X_+_4<[ܫI;T޼ϐ|Z݂cLyu—jT7(6WdjNQQ;6"q5N< Fx$vЛs
+;0,;nid~"W7:0
+ft|=uBFPCLVсiߖMÄrGĵsSHtNЧ GF\6&0y:'0Cz>37ԋ`x>}b" R=|=5d&nBL]dwP6-HO`"<cs.m1*t\^$1F'x 5kUu$0GK[JaQ~ТB.ɴua3DpY*eB_|M%?)%av4ՌjIv&# D-U?,P,k/‡8u"{y1Cd93AcN|wgX[:M3 q&t @8ִv;hk2jI,:DIrEs =
+DzS$:/FB@f+9YN%$3X{7ϼ"XlQv ~r ևR~=pȮp4j %Wh 3 aw_ǶoY|ӡ`GDZo6 wq WL:#;&[7Z,Qr؛UB%"&GU8l}UVߦcAim"U_9_&$=! GzpRyD1|r1j~JOJ:/'mZ۪|<5V5`s9fsziZejQW agbgK8;JE?Sr`bS?hB;
+\eGe!cb=rzC7M.ʙlQDdOUgN<#u @c1u"b"QZq@g8|BWs q@3bah
+d}a ۚWFYޕ73طڑB)pͥ؍F1
+֛Gا%EHpPbzU8)0Xd 9tKl' [?V+ (=/< juY
+@Qbqt3x/^{u,Ivs%nV9?su'E׀N.y.-`AyDQL$p(t,X_E]w%,^J)Ig.Z%~ٷk}7Np gձ{< m5u
+ZT#KCm<gȎfV9VBv =XxKQ
+m1$Ǭ+a) {I wÖK}xоo-7vM-T=]KC'"XL9$)n>`> q+_6ZaGjЪ)q&W}{ Nohm47S1B(=|-RI2WV54A ǓEg1[UV,YfD|,0̏;%dWrsҫ%w ސeɊ7’Yu[?~#J4K+v6OQΪ q*5"AMuQ8z*\ urI ;5K!&65J:I٘}fN mE# _^QwAi>^ p
+fWmcVie~8FrݱXzD▧>mQ(<z}N/VrLDjvN*d|n~93/苙*>n9X{ƌ T4^^1kvv
+׃յvwf=Va1PawLn쮖FP
+UqO}RY͖A}v9E7oűǒ(Č쒩^haǬXiyK@rlJ>h@d}N%DvzՍ,@sRvvy TDI=(ЮA&3mֹ:bx 0c,,~ eL1A֬'ljQZ8/}' i%d_&x_86]n>QlIx gSΡ @<7lC4C<$\;F r"ħ&
+NX[#FQhV9?a\# mL%-)&`
+mQ+s0cg o#:|I<ř؝j5d})h[.?hX3^(˪Sչ8nv |.j57F)0LfsA -
+p)J3z'&X%bȢaQ/V..ۧ*Q=>l"א+uƊo}P );C-l !A.ovoSVA5ty_9!tdS{馟
+xnJ!VAçUu?!^uzHC@z7mdRɑR18p}a`% `S#Gm_[(6/;IoH񧑻*kOt'14m8}X2~;}v7|u"o ~%3WH;"AC%i]y; $ZO!x1@rڈk D
+c:!n(@?Ե`.ԗG^yҋ~2%\zʕ)HV{1ZUu2s5ޘ;Mzi_-ڕ44Q- މo,;J ?zLá)7YʍqpFa[S/;{fNOoM,%%&Fm%v*Q
+CRMDy{$‘I%*HۿeOXp(' F}wA@a|JcO)ȕ?XXK+JfgFY'W.OKafTrzI]]Қ5 %0Vø62йU'iƅŏJr5I
+M[:O4x-m%Jfn |QB aГl.Z|ǐ Ut>)enc}Y:{+1[LMw+cеЦyRf[|JXt@ED3,̨ kfh;>ԳI_LЈ >}Q%ا*4=n5>sӎQS+&hs<ʝG)_f'~(X7e/@$Q{~K"誀ONK|1^ xfŊ-{ٟ# Ϙ- 2aIHK17s!'*;A `Z7A!5.:roR)OǕ導Kĸn;{3pWR: R_gC]mtpaTwCqhIjfWtU!ˋfeau&$'OXJk5JMHOt_L <^8
+(NՂsO@"A}\3T,o lZ{|'[q7lS\I='cX`@4?^2~M"MJ߶ý#
+4{M2>%ĥ5`Y yCa$׶ 5ݝҼ]UR|q}5"%0<Kz%[Y~\= OT4)y\Ť_"0$`Ct5_ {G&䂈LnQ#Q4:: ezN^1>E4h
+'frlEAj}~{d
+*c9 jjZe`D*p4zH$sZ^ 'CV˄(qI;Dp܌_h}Ќ#_ArhO#񯟈R jn ehRdh(s6WEez~1س% C.f!@*$/ "N,'?t@َ[A}sbq(RUhpXOJî.g^1+P0/=~0HG&g^N2%i@Ή(Q3nP^ߑ{g.guo)śe)<r6īK}hCy;=jkINo<'=AvfW>t>C2"3՛a4 ok0uLMH']4y<j<5r YWĩ,T=y%ƽ| WC,R߽n
+,O8 I8.mBicxejܾvoi
+E-^hڲm*p
+diه06f3tH/Tv^ O~1jI`ӗ8Լ%Z۩5)K
+JǏuvk#K$.q(L_AZ0ȵJgY!ȣh$*s_+nb^O1γ_
+l&ypEcyoj_?tx;ҷs|Kt.HU"amZSd||O
+94m_Go]0
+Oqvd?uMit78zVkvʛ! 5tFϱ3+kfE-g
+8sLnd14cՊ Zf `Ӷ_EK^!GHP>U@;u
+N`Sg=a42x0G
+E)5}M` "0~$}B(
+?>>#J8EAC@Kyd OdР@{f1(iy~T>jM-aM64i~WrLT ](j'?-LCn1 A/ zԪ,G?x?n2σBC\*12f$F GpT\RvZ;hւ|c=DKJ,|+IptBgHj=..P> m[WyR R<Wst_Jƹꬋgs]J a6zsGO߾-3JӅ"4AfSc4m{fgܮb}#񊎢ZF<Hq>ԤzG4{>ݿz"bW&Nu9TX& xuv7t\cZl6YU)KNP`)p2N(|w .nu-l,o6LBSH{tvLE@݇ .M+Hm+=~pb%7SU: Fe k,km+Ԕ Vo_5%{q\cҾSuP4Zb$3.>[
+`
+6-6ˀ)
+T{ `xWu=@x67sAt Lf%qP{*Lc1d96\tНwB:TnK<0fxodH M#F+yɢ춫u}
+}t;K\^JnA.G͢q])T=zR>2le"_v3aĩ1*^`OPFl27'歀Ķ
+D`sw>~%Vdm}W[w\R@v&w0!|H\ń_Q3;Yp4{z}bC]VH%$4R첅͝i. E E6Riug >3T Y?fh)LA$s%H *&襞[3iE8{[^jw^o!y2/J
+)r#BԇGX`16xFkA pupo#ɫd9;#/DNP.ߗ _64_q1o9N]vڰk*Qi\W4pH}KSvvZIO AU"ݸ_{֭5AϺzD6o#W(+tnU}Ǵp4\F
+Hp{${9XGm犨L rEU%-DvnWP
+HrFWjXr
+endstream
+endobj
+11693 0 obj
+<< /Type /FontDescriptor /FontName /HUFBEO+LMRoman6-Regular /Flags 4 /FontBBox [ -515 -298 1647 1125 ] /Ascent 689 /CapHeight 689 /Descent -194 /ItalicAngle 0 /StemV 83 /XHeight 431 /CharSet( /eight /five /four /nine /one /seven /six /three /two /zero) /FontFile 11694 0 R >>
+endobj
+11696 0 obj
+<< /Length1 1791 /Length2 20995 /Length3 0 /Filter /FlateDecode /Length 22169 >>
+stream
+xڴeX\ͺ-{pݝ
+`aEHF3'@2Vth(9M]>@{ +{ G%ovFƿF0dMm]l
+ju>ˋ i+2tv[?z >B͝)
+dj/bK?/loa X Cgߣ I]\
+ptG? a0[}
+z$ocs-Z;-\[i}
+?HrJjөN=m_ן
+> *jkA81r?%o]
+1Q1T061E!hrRЌQ]j5劁`AxPjλNMTQFp @>4uѓSǪQ_Q|AE\1MWrWs/Rr {[=w 7k϶M6\֨_"㛖a0J*6dDein+jȏ `IH}.s?VOj]x٫QH؂Kj+ɡɝlKelYew i=^UX"'qc{<e4Ioa]X硬0&{},X<j) o=%<Nx[Ě+Ūf> ްQyK#HAXB$s%!DxoTϾKŝUh}l=mb)aYXkיa ZE0)<5MttI]\BryF«2Pw
+q9ڨ2ӞBzH\s(|*Ƽf`vƿ~OȰxnECvt,f7tx~8Q6epѣ)偩^{|)<s.g`_Lnd pBʜn9&ǒ̉R $,9P'sM(ci/!v`n1ވuYkO
+e)¯%\eQ_:4 Y-Mn#`j =Պ;6PY-]KJ0Y;jr3owJӲd sQ`#Mns=.%?[D6(Ꝍ3\ܷۢ5A`a[؟|A
+!"& 敃y%1گ^/[e%zDJ7M&?T ҇9̹4-70QU=>,ռ#.xG
+ۊΝ1 ˛%pcD+jF&4>FSTsXSH6n(U,Gt6BMӏ!4='uYrGzT@-4k'&r]xԣ" ܎ qEkӅGH;HHo^w<tp%N
+Ha >u 4)ǫ$%L%C9G^y+MJ%/r`OLLC+A`dM^\[<9BxvW;dwAov?aY!>ySeKvEg7 kq<Q[Y3lt'u*/KqhVj+FDF{ׯJIЈ׭ T:Cl={Ex}.7ޮZJ*Y96#}|xRsnh2 9WQ|#p{[sͼۨbl
+Ӎ&pFpHVf2kSX4h#=t4X :gg[s+٘ٯ$^֖
+Ͽ"@1DS~M/l2TX+|ܬ,>2G(А:2Mc{VlےEĨy
+ x /W?J.3YNpYl]{$A-ꁦ(Tq/zP[ :DznřE`,|YQŐW*b$bRQY)n 2%ku<#Cӂ\ng O[JWnE6,&ׄƙO42ߥ]QE3 3zhnp~a{螼hA&GxCڀq;02277"xiE!{mXOr`QM׸i xoSE ]>_$ƹf98AW7ӝ>,P=7^GsòD3[
+pm֜`6shqIaBRi4\z|BsSZ'b ]j`9"-rUcsሦ/<pr_ Ѥ<]4:tzܸ3^tP}9\ W 6wԠY\E^W'fr3\zx5PˋoJV
+ H"+ o=hkw| \n60]0|D2ii-Ҍ Y{r,&9c%Ƥ pO FOuCv Od1 #ѵ@mə$XyA n!gѪր!~i'Rd]JJ_i?]$^A^WH|ߏ% 2.Ed^`xFwTAeuUg+V$ydZajj_z\{A*ˤRcx C'ӘI'
+ӛ35L(o6k_U~f@|矂aUۂ9^ƙ(2UotUޡo֨UM`: LC]@ph[\sevjk`v'b9װF3$"?^R|4qc㹒!ŰV8azek^0v ci
+/gTVd*mD,{[
+*kGq[8zgV7<pP8 ˊf!y)ƈ&oIԅZޒls@ȁ-u>xcՃx9,GUIπߩϏ.2Z4H|e4σdZw]tş/=#}ru>SuC]2AdcYz 5'KXس-E$E3Shҙdv^.GZ4!oC&Bڏt}g!ld򴿊ڂǭan#55g% Fq~S mOP[ /!ήm-mWfgm[2z9Ѫp&{M?wk5*`5j\/JwѝFY?_CjTeSCBlI7~29FAÆ U
++b3h fdi,7Mn%
+mXs@Q!Nz\ѩ_?8OŚDM0 Hl|Jb1sWnWȴ*" :)[mxɎ:8dafWm+&rݣ C<Mz
+C&v " j|fҼyOm7Dlӭ~zRJe
+\-]l|G?|L%R{TZS"ukwUj!ù%i(bAAƲsLCUCCOA>r hCej>`{VT&(61Vͻ)Ty~=#rmʉPtYzgHvW<vľ4BrvV` Ky34hNB >ԯB#z:O$]韊~贵eX֌a^+Fwf[6Qxk*/TEtpe`SFzJ>Icwp2pf OB|TMKSw^wj/]̌5Yf>b􅺔
+GLtd<\F =A([}heit[ᤊ*'7) nI"4R31Uܚ y܈!4n {w_za#+XYxOf,gY!IWlo4Bg!vp._
+YԳ=#Y5u,63| 7cnhr6uXF^ocMAhjk@}=)^*?W_3|QsUng}gKS>tT}u~>mz&ҥri"\b,fhȕ2Tf[Ëwcf% EX^z.(h?B)[bp?"W[g`޳=ヶK !Dvb%&)4}qLyȜ/|َW Nxs$n}hWU|b tY}_bJ_;jv6+y}[jgo.FQE !n G#0'Ļ%Qx~^FB(M<ąA㉄
+b&}1OK+x;"]_uY[2ſ-I2}T(?7~VKe1*6[~뺺̙ͩmCvc4b9N~^{=f<qBޖ=\qqDEM= $x@brҐ"wR~Xzon[6$Jh*,UgEegg/2 8xtKY%Yq=Qoӂ  FN ,n TM䒞0SwJ[R=v2'0yŽ,XXU-_[)"ç1ܪ#/dް[(EaxK
+Utl-7%CQVFaM(~\S)`Rzj5+ǵ\"
+'&Gvi1A>[,+r!ۑU4ZؿȢ+mWTimZ+Y№-a_6Eu4 !(6<pgR&Ns#<ly,elzr;ܥ]g7I-3QgDp*
+4 7{I;*P',,b5[t[# nGƧeZ^ m~B[K;r.4p0U@'bW3NXYC̄,a*bzOrdCQhP-i)\jwYM4Qr[_(I6*--RAҋ^JُBv+F' &a]49ġhy nϦ
+w^d.vI 'ӄN,&!]ȗ֣uK q#5
+ۦo){NH?bpmi
+%HXdI:E#|*]ЩUGțAzǰUuVp,p#A݌h<ēL DA^2$Q1Z PZj ~7NŊ3ē`} $pd#^c 6x"UOm> |Qh
+刲&bAޒ3}_e@g`9ˇ!3_)Z; 4T\v잀#\x$4s/'eQ!v
+#9n_{;Q
+1hř|{?CsIRlWtn}q4\'zR
+|90>d;YD` I9 B:tVE չ7$˳-T\\DZ}-ɦ3I`0M^֑|Hw\{G.v?),vɽ35ɋJ~WW#G!E
+KǎD]Ne˺^_la49uzxeד1pjø, jbwʞb/$9T :/ P E}~RM'vH%t@ߏw )B}-Md@XڑDé;|vK+Cu~VËEum#:`XigǮJ-WD0c; Z:ȗ =TE'SEYv|tD~11}z)=DaC"=Bc ;~o4"-09m^ѻ;o@_@daߤy`4ax{zͭsq]B%_!1R=CO!]R0M|)X)^#m{[}Ñ")pvshƨ$
+I;FV2
+w6A9
+8x=Vݛ1@}DNcY#|\Xo}>@ ~t*ҩI~\ؾOYx^k͓(\5rpɗwy Hjl_5*%*H+
+DceAK3(9A[U#,ࣝ%㦶:LgTv
+TQ_
+: MsY왘,)ע#5e1$EǤ"huBdZWXsAYqy$yXI9h~S"c-e<+6!0J[|;
+Hk7*C"f]u3s~#Z
+rHl?LjdAp$5J)^g{Yj6GT7n!\-[ Vh'l`eRxIs&wU9
+Q !z:l0NX#ʨc%m:</ ZLTΊق0-IfM>PEL\#2$*sD^ti`jZF6:"ӭ&M%$[`FJ S+ݴf]@*fϴQpy'#w=L `Ҡ ,b鱶=b'*RB_Ӣ#+:!5bчՋ뢜()߰=lńW+0|wqEr%bq>6(@EeD>dَ [{N2ҳdigZ^͌%o 2&Y{Ws 2Fn_/ IV*RI;I9PA
+x6@V|T$<rEQ!kJDg (qd>Iu 뾝#̲EuLf/BG:k-ABQc>_?\'aI-G+ihSg`4&)l͗dqphY²B`.T>@6>0Q'SCm&Uݘb}bδhN޳!D`VOVzgG`6@tuQfI', A0*Z ڡi;J{q`2I&9b4IybfM ƈmHR  s/1W%ה
+\rȥPbIL&o,,D*%^eҕIմ5 ˽_gܱº-wnFE#0EtO8GXA2|N~'k,k8?v ]p]`YOit.Ge(;>`<9c<[%V0 Uð bB&U3
+>7g8ך53uǃQ\y u&U I H}0穩ruR ^4n?fA2Nr G ~kWT{]aR$ ػ/.!8zLEfΡODDjᵃ1!Mۧ1qu HoҀHwLzTRFr*::2U6[Qt %3rM5Ұi`Otr%@򻗗I2}(UKc}P3ޛ#Pk.@o)
+G2lXCoft*G:s/1a!a͉9t '3y\ C^eKFad<EIjMe>\Y64B }״eʟ$j0jq$p9;"a^kN(l6aBv0+1#X[%<~.WNB`J0?t
+_|Uk7\m;:d)P)`(V\OL%+lec8GpC+)u}ym~{("AMǿVtMdئɅ̚V@<34{ (.'2Чѡi[[CF"׼1wI'?)@Z&ߊ,ę- ^q,9= vs\߹˗8[=Rũ<\:8{
+uyu nU2=!"2FƊ#R:)6p݋-j
+:^:3 s/t-NeaScd(R)E#P(O ]BGp{gk<6|) }~0Gh^VlDx\TóDbgr҃7ZqPߐu}ќhT4b8zfhe!5H7I/"/ê HMf0uP_a F1r\ jn9-?jsBecrDJn3)hzͺEWw80h#3rX BH|xB.6~rrثwԪ^+仇TgFi +uw6"tAWd68r*(}] ا]Մ]a
+E]Yc"H%??fn TZc_w
+^T4{/9̚K Ddi/+hpfѥ-UmpZM)dr徰U)5h\UhX>HK@^Tԥ}+F݈Z!_`lW
+o&&Ј`d>i}'OA}Wt߳5 zLn( ! > 6dUAOOʦ-op# <Dal)oyN*|ԧWm±|uK Q\~sE,ks}CrB(ٗHxj9<s@DU0Etkc6Y/vCef"XۋɧT)nŒ7Q7T4=<~K,
+mvh|s?KͤÔuG$fij+({ 6N)C/*
+ICsL2,TᤘӤqwy];ls 痮|-&yYð݊QtƃӇMBt du{ .(UlޫBI(k3Ԫ2Hl[)k{
+Fv_*䆌Ї%+#1f;JK"6 VNw_Ȗbl{vJOtIl. ;7"7{ғ2oX,F3uCz%%&r=SmeN|+BE (F<m<F
+ٴ*yR*)! sl'YNTdny Rq35^o%k/|.4 722PA[]oP2 Һ-Q힬p.Z%y>-b(&WDtBr`{\;B)*tBK5ߥxk‰K^AmAmk25nȄq ՗䜷<Nul."[D{`
+}ΟWr3qYЎ˞"v=fbkV(vTeT Pf Lꚬ'AO&GJfiBS̆60y/!&#\8WՏYU
+Շʚuu(fр*ucY";Pd'z#9sWgEB0#-suQO%%r
+`b$(\{c$ZiɌӱn<+yG:aLSh $C~'&,J=ȃwPŮNߥGt?zhn]U@0c
+qkϾHs'aVE $Ѧ-6+5f=Dt!O5_B"vebyrW yKtR޳ ŌD6vA@WqO
+´O9Ō5^¨C}*i6C7zlI-kF+ǾnГȴR O)>4$’L!I8p$EEm{<燑
+$/&eG`\xbuDHE7jq:߾z#
+>]޿C6=~)ĖSx4Z縤FwHǵ *R
+QwMwxw"ç̻nP,6]BFun'烥SYkꋧDЬ9D^:rGd*_P4u1 ]X %>ǔa6q:=\J2ҏLgMn
+K~^glKCխ^^33mR"S+\U%Pcq[ܮEM*\"29-1zszxa$[yƣu<|ngSt>-&
+Ҏv*""uE&]m־^3ϽRuHl/F(lmSFߒ&x,Y*8: (6cKIwP6;&% GkQsb<p懝Z2[]Q(==2*gdR2
+yogxbƸa dK0߳X쒲zdˑ'q"-1HK\1uT>JKv(YfɟWZM+g.q}3_*Hӝ3烆pI7z` De
+VkI:j$/l֧GyǴ} ͇T?]IЧD7hSl䇱]gC<Rc 祖PW2wnX?i yXc\xfP7py=[œo9NkᏙ0HY Yvq jk5 _(CӽT%mK܄!{6X;AP"(g5^JnƠ5@Yj6yx"9*c[]vK q[)]VԻB?!fՓ&Saڻ8D%gR3TƏ8H[9w]уon1ŗd ozT! f}cL*5i&=9mS}+_ԔtَvU)~=/D(HHGfF0J\=oFu_Ճ~8%}2
+rph)e 3qy]ǦvoewN֌'݁ B0b0`Lfl A8Po$ݏUqVRxrm|F,PL*n^ HC2p=ѿ޼á!̒ ``c.8F,'>@.YȚv qTJ^mrj7Pst_bq\T";ljُ;<8D2cd
+< pHԘ'S^lo 1=W[i߀D)=96]-y/|yʫQMfƖm?Ĥ\P޻װη1ij"C j#< + b5/eqjĜ'N)}L[=W73=eqӴe-)8\zOG-*X>"kpė Av^FzY5ՇLITiyw g18`ۘ8 ]4ۚ8*Z"+h7]IN]x57ҵ|:V]s4^}H|͂Q$T"?Q,b#M4Ũ[ࢉ吃G plz A|>@;ַ8R_r,[SZ冼q["ZA_j@=}-.؋Xp7wB7U@͠PZjfL?VI4gI:Zijg/=+[(}DY(N Q B"8D}7^8u^MLnrȒR֣JW9~Ժ&⸖ ޿=%EmnLl@s1YLwLɒC7j(A\/XLE<nZMoP*TW(|0:
+O1PZӌ$| 5AOdK'g2~xAfm|WZӸK1W5Ш͞ ;e9$އ<ѸDg2'AyAi_`t49%B3Uexv̙#J3>G:yqqbEk#+tP&ql%wN:秤wpND-.H|%Ş }*fUUD+z<ʄ/]:_ޣϞu6*rI1#![[5<8l!9ɳ,rOB ț!:][wK
+S
+8yVyƳԥGwt0D
+pv-bDCÉ ,1e&VL~?Nu9B
+}\}=̲)Fz!8_&{#]a|4!eA-Ҵmӽqq[d4p,B}U[ 6 Oƣ<6 IU6‘ziz3Ch<=K} ˠIN["7>|e◰ۛ e3wH(=xpSɜԤoM@#}^Պ11;tk' Ҋ=.hwnkG=lܜŋ% /<hy~*kCHfx1j &Wmc%^#!.1/THBWGKt!
+jf,ڳ6dɏQv2"GHع,]D߲_oFi/1/z><n AT#-"lcppk`Rea3 U+#g{@?N-\U\ͣtOu6!c *>zG+ Rvw;yݜp*Xf76IlvyP1oL)8\fIUb"h"ՙ;0+jZI݋*b:CdD!+;/@"'OWڂ[#[d:"xf5-MUG"[ݸzK&I'cx88uQs@W:lD-8SL>~\)fv /,q@W vQ_Yq1ʕ깥?(!&x *c8vf\C 3UE2٥*8XI̹+܈PW\FXb"̻<>7v%36uIDn~,ٌ ԨŋE +u+oSlUIMB2/\<T8bi)=t\mqUş$kaC`_م LV*K'@Vj½uuY|Dʡ3<ĆXˁ6G6&r#풚!\4d$^TGakis8&]BM7 lR-c-)
+R{
+3{h"#9:{iʈqOםurg7Ed۽߶.{ô)WLh`fW&XMW=mf~直|4;dW
+1 HΫ8yQ+z-V&9^<.vٛuaa]PX
+endstream
+endobj
+11695 0 obj
+<< /Type /FontDescriptor /FontName /SXHXQW+LMRoman7-Regular /Flags 4 /FontBBox [ -483 -292 1562 1124 ] /Ascent 689 /CapHeight 689 /Descent -194 /ItalicAngle 0 /StemV 79 /XHeight 431 /CharSet( /eight /five /four /nine /one /seven /six /three /two /zero) /FontFile 11696 0 R >>
+endobj
+11698 0 obj
+<< /Length1 2449 /Length2 28789 /Length3 0 /Filter /FlateDecode /Length 30195 >>
+stream
+xڴzeT˶-nin qw @pw .-x瞓Ͻ`@3Κ>"WRe37Jۃ\ؘY
+*v ^&J hbe4vx\,L]VV>$*; vL<
+@c5O /ddb vAV 8Ew &ߕ~g3dMmݝm
+v9ͿۃWgk;f ru6\=_
+MALQFZJUI<x &{: fr8!IفY;#O
+'k;ͭ@f濕7su`QY9e$'lBc
+djof
+ppr
+sI7sEta;PujP)/t3>j@RUj`׊p&-õA 9
+77΋l32's[QmŽV~a!
+ ur%ZX#QAi5mZ\2%rmٹ M*V:9`?w ݐOQnm8ŹxKfo\ݗ]-c"y6+?=9~?#X/=-U׾~c2><A"a,_x$7Q@IW~&.ze3&\J"RL~ps~4ۭh.#_+Ք{]sq]:@ q-D{l NCr٢4bn
+l~H'}ӊ٧
+
+B`yP!p D^.~vPߓR&ɛP Cb_]ֈ`+//qP$[q9+9,U!y<A\p :aRT\.)TօR2󴛽I=+v-"rPrVVGp20(&.<vPc{_2Keulf'I څ{8L&bg :2Ml6ưg3TW<e?a)
+
+${ gNDB|R|dsqJܸWeh(^.B8,G^\VlH]#q3!GE(FQj aK3&}vӊ&Yi~ /w*S-:Uϱc0@p=̄ڪ/Ji/CԹ Ѧ KnH.s*K D5EE5~ԹU%W剰7 d{]䅾I~6ssUl[+mOkHaEu֍ѻGmsCH/bB'qs5dm7nη Ё頟 FcumIXwZ\]>Iפ``ABg0BvcR 2W#0#ϕ{M7=k6_$s>f!ǯ5m@&fލnfᆓsՌ)e%D:jLکsJQ;OhQ\3813) 熾|{_e5Д!̩>!<iF%4mtr6Cz2O%J
+_:Z/={6}ϡfb 晡nQa7SF²O
+es+FxRvŀiO>gS|Kѧyb46g\gIXk%r˔ ]m:w]>t , ƙص~ MwYBˡ.b߻i|$vѫM
+2L}}-KD6ޘ P?.:whm(9(rdM}kTb]m^7́aݬ[}S;*ĩ},/3)(p}
+}s"zz1.:
+B[ӡ*p\t"{m[gc~d2˔ҟv$lH?QO[-v`ۂ(@Vӱs 35&k=5GbCʼnU3& -'eTCi ܉MUb^]Lp<If^-TS%Al~n<\h*M@ 3В'Rt>#V/EsfkGkUs.YHPg::dwLQ57o-)فmt*Ca š鶸i2-Cx4)w$QCd7 Ӭuv~KYobW ;KX}4Ӹ_I}lTp+qu) {_ F!lVjaS&ͥge}y~c+]ZUP9BA҂,@5eUXSmk.5~>7JlDu="?{z뭢~4BJfT<?ShD0d*fdvATD%swCZu+u6ٳ[wN99?C[K.lux޼)0bL6X*{Z-t;20eCڧ\ist~$<izh>Fw4r)
+
+R3O޾50:)A7,(l>SN SN}t/rt#Ə~,</qf2s1Ͻ>b' 41ƁjZ ҉ &UvMlE[oܝNW7OL@>Xh<^&~&"S4BYϞ.3)zCbwj%K cb[
+8>1}q`7,c؆r% p<ĥC’IW-i2^Hi/<Y}o;]{L/GCsbSH oA[{o
+EX/P eԛraZWT{P>mLx&͑ sb?dT6[\|.~>I;L
+L*ݪ?o<
+Y<*OUy>kvt\ ~:L;iL_?y!yCY O0ƝKeDJ  ->fz&3]gfU9p^
+?_3dQ# 4}x
+fQLŵ.gX T}Igy% e>TX]@?b6lp>g| s[d'} aV-bp՚VHhWp{v\-HSaĄmϢ甡< y?,|ks9KlO
+:@S)'P|D4{s |ZN][}Ube-7{Q"8W#[\=OZ
+C`̯7(L5 [ޣ]뮄Wᗘi;u4>d{QݵpRml@B9WB#/\VҨ?"N
+3ֶbi")ceiBPo]]I1BE5L|QVR +k/&Rx.zu`e%|/݅/iAGgpJ:'?\_R>zsU"pBu6QKT8Ą)+ypЦXP@g>ItkvV\v;9']O-KPnTW
+Ku%0E~=0ڮŒ:oUPvK7`FyEyXh(_C382*K3cxw%/@sSw*E
+Qb!-+ g4t״֮kө~YџQ׷W " _oLP"+PT[{[TgC6:ń\>>{zsF u s
+߬055 b,ШyCNUյA1*9ew|1,|#WiLR)v6I<(~c $
+MTdga7=O2iAN-|yE}ۗïwm/qtg*viQ^VAfّD!y}WJS|u}J?ho~2Tey4"/W'<tC[Fq?77NPu (cdșא) -j-O-_xx`gg}/3qmؘ"oq278ͭ0~\jPw΢`QoA
+qR Cs8v˅MH l©O6}CQEsdޓyePQ?6{WѴgg~3rmJIoD .짰up~z)Goⷮ
+M
+ctOX/v l? ,jyr0_CF]M'C2<I,rTIl+"f oҐ=iC$ mU&5 QJ70-5MST\F^Oᲃڇ<)s){Zob8Q|6} 4Zy+Ʊs_GVH}N8*,?ܘn܈ ~'qLk ˈD2])܌`DiWL9_L֋iq*2հ6\~b0/y,tE ]D/Ԃk$;b!.S$nXa)Z/A6a2 _uў޶b55 Fd
+Ne-?eR0-J'J/B*qh_/,.WcPߍ&1Pׇ$1jqiSv(lTx;V̳C} VXtL'^.LD5 }hA,ۇ[V#J*IRƓ qVf槪ğl80Qp;{[IF~7<̜3t(DjM!w PlSbrmęg $= 7
+F8۵zxE +/14Wo)-Sߍ[{eܱSt0<'Ii*.wI?f4[J])0SQ"% t }7(8. NOHS?>i3~O
+SuF1ļY+ӈ%g^y;̌#vv]f.:_a~uayO}ʰ|pqD L E<\Yp(')Kx}x"AX\J?<bIg;kX,W΋ϞJQAF<
+y}j3In\0͂;]hX#j=˕ !^bd\?w{=<.O?7vs.!4Qɏ챇pnw_YȬWjY?=jdP^L6~/JuGdLw&B: qW7rj]]x]˒*wBv{XRjv[e JPX$V>ݕ8 54\l:FxR^)#Vy J%TӄS_V@7Ϙ*Ē"̶Մ`(J+r$t_ֿP{)Jl ?/ 0Hx89#Do;"Q&rmU-VmC3<׷UH^[F4 吴i͓oŸcܛϢ31np 21hI''ތ`<cfÍpF#33@U5Ԡ
+ϽW.t1ͼ
+/I;UtyTTZEc7R9~=/~Xt'W;,=7[r[ϓ=}oe;;K~4O4p:<%*'<;s֔b> 6 pl1} qBGrϤ=`qUN)D)Kɩ+mF3hed`jc_ja<Lf'5t <8;X;?q*Anf}(iN0L{5n(^QT*OnQKdl<y妣x:63C-5@|">'b*/a$"a">L#V-ؑP+[/֑OLaqDΊ^ Cq9E}
+<ɏ\ݟkt<1PH~&9lS\[MNeQȯz5*bx5CXCrXa)Hi 8ӓj覧vJER:ņqf s TuNki| ~dEDMZ>*X~x,T `gEhxj
+Qgv:y|eu,+T#? ӚeҐOmo[;j6a
+<1v/gn)b~J=<(?d肓p/ BjBv cv%K&''H_;rw3H!ገA=ӾLj[ D=hҬ3Ulbv?&TfUv)m'Us|w1~{@AX Wp*sXo5}[9}L ! pPTBLPD\wr{g4>3AxG5&^*[V <b0½yx
+ry60>4"Ym͆-h ͎ǥΉ{INSƉےmp8hA%1s܃D@C\{
+̼hrTFTgeRvsF-XnM狾ܒ:}\"
+:.ef'vEt{eij7 8 mWU PdV nq=4"RƭZ>>/L:xq]P(A6MR;qӬ2^ *̷3tWZga<6aYp?H߭(5HXyu}9R07m0YGf,{tǖ?>?vl7OEB„6u\ ǥfV(b罢fdHun2[G޷g 3Wo+]&&)lh%-gZ7(8B4ϡk ޝuVdv)r>p{ppMۊܤ6/5kKI+F=Mɴ=ᅩ>|#_B%y|> #EԫEћ7[}lA'NIвrJL)=&R+)"-Y+Kb+٘?RTvr ;Q;9Bz366!zLJ&f xi-{*1fjP]ĘAB7R<bM*7׍* 3H"H!jO5}A_BA@4
+x$~ZÆb%$5R(qU3 \8q0ͲX5Gcٺ
+XyC:fu:B2³hkm-=HYEuohX7MJ[HX$#s
++H~(yxT'zL8i/Ē䑟&Nh-qx|3a7OoBwMQVq/B[~
+x0umwKy߃S9Szj;V|~t=my&"0~o:pMC ?;~dn-a)Wljt$)+ķ CB _dQd~$&D2PNU7?Gb% ~B*2gBAGy8& 3~dt!YVf5* Tw*J{{|܎;@.|)._"2HW6_ZϜ~B ^LI(buُ1N̩ WcO7|
+,@/zz=V0ّ(zPϷ
+cw\\>_M ,l_MK©5Qu gL}8#Q}W)iLbnU2̇pkےAf'2cuFnRşCm~6roM̭|j).mkn5"Nn6oY^2X">0[:ȕF(>V8E|I|Z8TOXBY]F4y:cè' ܒƴ o3šnEyڥ-!WXCi=ڎ?ZK`/UxG9#MMHfAMX
+MH Q-awړeYh@dKk&'1}6G>A'Axo>&V
+YS<UmF[6 46dpBKI@rI}= 튵LCϞYLg7?*=-iGF_)tCsn
+a{+Ԃ ]Wy)#Liuiv3ԮV_r\'Z~9dI_g.Gщppt;rod<-qUg+~xlr}3/Bri
+{%0=x(--+A!eWZ#f,9gxKRB`RQ' -G׳&NQQg\)ӷ{o!]p:T?5.-> z<I6{=㟕#"%~7zU:ʨ7˹>`H|08}@-#i+m*P p"hŪ|)t>qa{0'mgHIi{'V)Zntp~UV~,%jw?_rh?45Oݨ?V@+s
+c\|@YYCE0k'\xU<fRY){RbjT;CGN{h]zrȡ0 Ijo8rR~
+S`̮{ q>W ]^Aa9y9'>`=qr7>X~)+ 9%*( IMZ_ݸ)}Ue(VEe&Oh&Rs\3Bri-e\7M':DuㆠdX\s(mrc4z/ʦ) R3!Kcd
+s Ӏ{*&XfDVˇMh}[@sZs,/[wEJCZLMNB2g[T@u<?!t$Ol قsO;NOMP'9㽣T(߫P;j?bcQ@}1e([1wѭ-{8ngS4~mJq+xKgr'BU[ /1Q F^Eے_)ax#^_>L{ӳHcCWC tV
+5=]H"% P`+
+C+SYVnL5559{TA*{2\-_˔b*p$%|<1 02SM7 .븷u˹Sh U&~,jߒM %4=b(#qe }LaJ U;<SX,4˭ˏ)qL7xcĴ|֣4L&0VQ8DRyX [fe^Ku o5v`M
+^FciE~"K_ˁ0e1㘨N8lkafm-UܸA4a>@5 !X4]ufJZP
+& AH`-d
+n*|aoX
+GͷNEUO#Z3J#mlƄ`L$NC?z [I7)"qU8 c3ÆZQVweySgrĮh?XH eq?݈-g etuD)RlV)? l p,vg5SX1"'j}
+"[^H.
+_nOYNrz=;o8EoXZ6`20+®3|Lg M=J:4ZYdJG{)=1\ň@e
+Tiv9w5/w}҈gUO_ ܍iÓ:S'sY-}r<>c'jKRwYی6OqUW_decJ*La(kڳ7ԣk*7[K50b&;00bRTt<(^-R֛--6$vr,﫵g[[!^X
+ QH"z[Ig4VͮN4f}&<$/jW&BΑV<MZLArIߪ%eutoK -OLT &=:9wq#b^-7RA##U k&dtU,JMwN`'&ezǬyË#TCaFp_`rZ;O|ŘoQ1:nI|4.{d<e{awp@]^n['!Hn_ƪ:Ѫf;;]ʂ7n&Ż["6a{^kRƛwjh6? ;оA
+^7{T<S6\٣BK_%Ͻi\֖1OO~j}Lmj"؊8tw'gy?qX눟)׸_^wؙ̪\EDqt\D*ƻ m ݛvXT8 9Qn
+g+1I0kM fA5ӓ k:k$g!jEyq^;}&K$ )--ܜnp_pD{R?yn 1;vڔլN0-95J sKPOKL &x3X?ASds2x!4K.'`F$
+*ֹibsvtˀX=#!zpG,_CVf
+BYG}cK)|K0*ҫ ?vL'1Ne8 <.My$}fH1V}
+vE]r1in=ΔV}*+6|Sd4 bJafud+"3>z)Ѻ^7|SLRow{
+VXFMbH'Cf+BP;VT 8Yϋk%F9c@!<IQԆS#iD&ъKI(Tp?ܶn:r=~9ba͡5OOXuVMtK.L
+(|܉Etthe+<4dVH%4$Et>JSM7muk:5G0!4¢|3Zi?uTRC5r,E*M]XԊTS
+&UH4:>:LVx&0r?Kj9^aє}"ix:땷ZYB=V.J4c'ﰊWk$FCTeWG4Rf2xMUWI( 3 \ĄFN쳭n(A1L* ;x܅ĠڂE||I\֙e[pݴ79^Qޯ{Pi]Kb/^ZbpmIS%3`*v!rK=L$i٧,B:Y$}LA:ɤZm}н{Gz~ԗ^ 5Х
+E+byNB ?g)h udM:] ^a$=|nj` TQI`RDuxXvhTukWK2!}F?j<MPCC/ Qq 1 sӰ *ݫx6U.[nUc˶^~me|['^9% _YСʏxΫeU[y
+<ES+ӂUVC:8UlJsTKDbz-X;/yWg55\
+&a;rۮC^M:VAIM!P?m
+M8j$`dV((C`<0eT~CY(45lg
+ӓgQDݒR Wh5}c1``ں ]^Wѹ+
+J<+y*GsizWND1O=y(*}m?0D)\S95bLx=D֏ukfch
+Ai\Cˁ$ Z
+Xf#e{
+)$h]јRaciNk
+iόcD=BLY@JReӷbIՠ/Dٵ>WCΑoVԻN~csW#Q=%V rkN-*--E˞׵+ iar^u2%YzQf:
+EZ.-)Dqm;?+5/ mP5VzռvGe|
+t (D~FctɊ&֧GdC OB:Lc.jmmwgOz tď@JԮ4tCQFz)
+R[4 /~mn9}*('Ǥ>3=P,c|OzOf$p/?f'b͕"CEQ7R򜸗 " $P' _:*8' ;"iOZ.oRy%
+w6O
+zdB<s,/{WJ5W!M4OU=
+̈́N3gM˸Z!էԓ*^dƶM|-|>(x}e% a>޹;
+i|\h$?~&j?WSWWd.k]H GSVb+롏ː.ybT])'Otv*jt׫շt$(
+g.mSt+c&p |Y @OXݐX.uע֣x.jeF}
+h
+04W^W> 3{I?.j#d!K@aY!35t`GF/J];.IP๽zim1_o{BbfQ!0U O<OѲ ^ @
+bDpD '$.77] :6>Bj$*Ga7-hȋW qu3/1+r }ھ\J?Hie
+`EWu Y;3Wa/7]s\R
+o6"thy :)E~vعN`:®8r(΢D"y'L?u/j&[K퍸Da̻rI?R r)PY&xNVYeI
+g(z1}(|`9M|K긥9p^(0#A_rZroUE ^ ju
+XapۓbbPG@ >hׄP%팖o80$V;Tr2 U4緹&ٔ-v'4ۗgBqv+x)2XdT7L
+# odMlbo\eN|#=g:w3&΁r6;J#lp*1}bbUK3ɥɲtOzylju-.M~v9+As"j4}qq[H.gUw&
+έ`EJ*$ej 4p+(32^>liO]}k@өqw|n)O=-OqsWwSad(f\ 5 S
+kѬ[tFS#
+DYkdz=JQ,GG/Q`V! Mq"|_B.fePW($ rlƕF Q¥|) @NG~DDLWP
+L@ϰ zEfp>B'+w>r޽BtA}H+iI5omEH1+bh8nU+XRinznM!3 -Xu9eMްfǽ}!\tte8
+0'$R+GX9װѶCvt8]4YBgRjPb֩^<Dge]#0xX,v6P3Lbd-Xh8V:-ުIar)0@W̘&>xcߩ>GRMأT$v+r}`z$6Rgʲ%3#0bF (AD;G،Ȁ&{j3͐iH0s'ubf:'*ه!١nfy ]hPe챴4"(-ٴ2\> O||Z׭Mܺz u/^I)0]QU'"8,&T|I Z4b~}fQMqV#eB̜ C7j[Fk.9 YS{{]̩p2uzCK^۝{9Šyӈ:KZ@sĖ~ٓ
+@?.F2p<M~VYrC|m04KBw_.#6jvmrD,OXDI
+`A ]XC-vGDTSKh_Jw@]G& %|fAsl
+H2@
+xc|b88*->g^:EV55q˻',lByX:fj+E-= Փe\MY)heS.(nXO
+
+Y⏇'K~ZKN) qLciOf@Qv$3x[eμê7=. IL*΢D5VMOv
+#ž3z$Ѥ+Y
+ -L\{D??8E)U m(bȃ\`c } ^Rr\螠9U0e{^"_yԋ$oCeM,O18;o-~v[й8XQV d;:cqaQ
+c(
+Jwm{Usoe_Nt# Dyp&p +<ڽ&O}:m!ל|i?;L5[KZ3{+kX
+!(U V$w DNG +ƓѸ%#F gݜNC.AHyNf/I,!V
+ oRDI؝Q\E::Z?xbM ߯ 9D+2C36Ko▲樍r9%w/aȫ\W܌uL;v·NL~XE.D't s>D+˻זs,H2ɔzeaU,|䣚P(6l7$H͕X)zzQC<Vj3]ʾ\2ZkP* X E86!h61g}IȈ׻a,M2 Q[?q/jOu])lrwZLƄOk|abh{{
+.xŘrY;aRwe_(I9zF0 x{]|W<&8 ON+ R(1-ڗu <OnG!=+v@*%ٛ:TTVM]bMAe Z|! "Jmu&p>k5SYc(.gہ&= ,;cNl3̅_"؏#}X؛kJ*Q,* )EFF6]fxzMsU+tܚ\?:e軁lnǕ!b#$r 8rNu HT!_/!7@*XVQݍR&o0!wXmc hm*H薮xw@p15qaYʧmDED$7 v>!r5&d!M`.FphH%^V6fv[JS| װճcܲ m݄tGe>Jܑj
+׎$kUN1rT*zJ
+)^2ň!+
+endstream
+endobj
+11697 0 obj
+<< /Type /FontDescriptor /FontName /PQFDKJ+LMRoman8-Regular /Flags 4 /FontBBox [ -456 -292 1497 1125 ] /Ascent 689 /CapHeight 689 /Descent -194 /ItalicAngle 0 /StemV 76 /XHeight 431 /CharSet( /A /E /I /L /M /S /T /W /X /a /b /c /comma /d /e /eight /emdash /f /fi /four /g /h /i /k /l /m /n /nine /o /one /p /parenleft /parenright /period /q /quotedblleft /quotedblright /quoteright /r /s /six /slash /t /two /u /v /w /x /y /z /zero) /FontFile 11698 0 R >>
+endobj
+11700 0 obj
+<< /Length1 2080 /Length2 24299 /Length3 0 /Filter /FlateDecode /Length 25582 >>
+stream
+xڴcx]>QcOlmۚض4Xݤqcvcu=L΅νo> 2P֙ #dgchI4s6t032‘ ; -lE \
+P, WWUPXX\UTi"r*
+-@NGtYQAMQ&?{
+
+2
+8;
+5350a::z1~ӇM)@okwq99MvF
+`P
+F_S?Z3/hgT0x-D]J3}?^O
+g-[H݋@/_
+h$/M- F~[oM1Q1EUW ̔]/":-:ٖF
+G7.ht1Kn&(vS'<)^8"Q-O3<|4ȩ%@rR"'ej[S@e%0Ut0Պ+FS)3Ԭٝލ;Z"U$1I{Ze9
+ иd
+#JTf1Ē/-cxA1nCJ'*0U6]WCCPh?UPļ'kG_}QvL\dfV'v]F۰e&<UJchWnԘ}C@Ӳu@>
+DFw<b0(w(у!Bez:Xw]icѻp(Z ?9`4Tv1
+/!y}o%;jN)4ʽ|G/kKzuaV2^ \IJ7 '7蝢?C:&
+R?2)S-lYDqBy9vw@6umBW;U0̴e"[ N>NTLh8+,ЪTJyZDsbNC"SebfwP)KO Zpb؋uɠΤ򟍝2y$#̼޸dCHK<pDn*ZY`<G<s˼/trszK֪b-?S}Ha`!S[- F\bԽUy@FFjEYac>_}J$"V vz-ԃbe<;]ZP\3Pt"mh*(Pf+dyV} 7`ۗ@q&:}9PappŽ 0K$|cTL%UD(&.P7
+X;S#[V>  8'9Ӫ!+t'~luQ^~mΌ2>~)mA ibHR(U>#xt[%|-jAXЎmG ˕;bRgTXң#lvxlNJv613:֑4ν~g*-a9-z)L evg~Xu xH9E1XF㸁sm{|<r(эவSWvBBjQvKzɑͫ^DBfj=ܗa8>K4(ĵ-owʄ^*m"j&v@;Ո0O
+զ\߄>3vpBOPPFi5{H[/iFydi=)@믦#Z5 _f =<Ž>rw$\MH":0VOa0}",9C1ka8пf=] u`hm H8,v`8S-f\6ryI&]2بw$klXc,+kJja軇ĚD1^1mT9o+ZuQ$"@]>fE@dbV~(kw0tG\
+8ped/ޟswQv=I^A]ә|Bfn Y{;e/` k/~6VR=8# ?:90I<r_LeI9^ϸp+V5I$Ey4vC,j/*s퍁Xе.+EMKPAN9?ղ]\)&UQO+kz׻=XrLc)|@'~* DY0LQހu{ S!&mYI $8wm%lJ,䉁$-35 _\Z`ǘo }|6x/Ձ›K&* H/ƭN2Zfsk鯚i*M_s#MU]Z@QXϯYQw6
+&5TVX7#h1LCId"mAǾOtug& o6̅g2W>;5ނKSK_rE3
+)bb 
+hJ0q~t/mꞡBY|@kuPUרب r41np\EAX-b[Tn(~hP;U[,0[nD <Ɲ51LciJAgc=?T ERE󭧐dp ==ysyru\9­蓶3'Po]]h_.(ԫr঑ʁ쨉Z!'5+7陆'SZl1m  [zyR(s]Q.>n %L _BôFTfY)YsS⃡AdAe{^O ]ˉG^7!|fNe1<\{T-e˺J =]Jjq0Hs?3zDILf|X?ڸ9Ʈ*|fS|\}fAB<fC&K Q]囡;v e`r s0[u$x $Wt"k˕иmA sᷫ DCdV1.ȉJ]G?K~o.Wo7N5
+P`P
+֕2mř'51ˢOpG_PFQxul 0
+#^A髊v v^rɂZCT:\}fu\X1jr LWpd-oϐ7]E(4c1X/aVT:[|Yv}LC;IN>LUU-R^Z,|GE2(~hPHf6,g2A hnG[&"~\)EzAW[h@_^$Bљ:~J:$vmgvtտ Պ.y]xIˠvy)Sozlse>_c`
+wa\vusl2Yh .{iY'E;} i{]b{e4̓
+Lm3ZW!4-gg띓0>,ͬD۩r9ad` dx'&#V߉_(. 1P۰iVB2jW*^y{H K᜕o7R\i{:YŅcފĐ5Ѧ](Dѯ-D8X&/ ޝ&JlЈ7E4-=^;5[iu%_/ġIxS+''.w^DCs?|WbX,2 K%sdly4n3m0y
+rC@ŏQFrtN(@JX Uim(Xj?g`ZgYh$`Wju*k6/6,'OGD:9pDjzlؾv2ZLDz!m9tFh5bۂqjyx<XΨZ#"gSo`^ ͧ^զ"Ͼз,qkb6xZDseXZB}\lb3Z([MJPIf.X}
+ڰ2!"UGlagpMȯ[5ܾ9'I(wuXP"t)}E j#^ρ.]D՞>.gL$V9 fos\RqK3{7qD3([l_=-*7h`;9lJhȾi{4&b)d;Gw(wlؑGpTğ?|)PA[<PQؼ$UԺ1QsopRNaO%5Ⱦp©+3*Q]S0_xCpS[[ޛsw5NVʈ!q2s؂JJ
+Z vJc.7Z*گ5sNn)~~Z)j"=1 <@?Kd)?={׸Q2AotT
+7imƼi^Y<'w 1noX_1JQ5-UFM"eL`~k
+n/{t2bN%mjs%;6ΪB1b؂ك`EBd 7QX6@L*ا*
+jV6S~]̴9Fc<U1
+r!|3jU{_Hb<MʷJnYfS.bGL,y{ @)I?Ihgx1Ax=d4h)6LpqX. ]7EnDPcӕ;"W)a7-ה`Rs#a"|M~L
+S[KL=c8*W+[fr'Bw
+lגX|umen]ַ]#1埽0?0/GJ5 QU D*hp9 >@kKoHBWJ7%B{oTeUjM8nE`zEE5 7hD&ǘEe8@G5R-t:*PlKbPH<In+0MZ0}xtϧ@(qH,\+m3<l$nKMn4˾~%P]G /s(V{b#|O2Sļm/S?da|7N[%f;.2=ݙ%E3J#蹵%%km6^;2Q詝8 ިS)nଆDd\u"ǩ
+p?߶'ۯ,TE[#~|V;L-Fi3[KQ{JFmtx<ghiGk=}d2*vLu]0m1馬W߇#Hz`v?TIjWQngHbN#cp`
+Ń#!p2:, Q3t78k3:JYgCmY>uzTp%)􂺧xHҠgTBa|2FNS_eA=1J2Yx(/T_jsR践+]yv.i?A]eѶgWi]cB[pc28lj(>&13k4S>y@x`ˤɥRhpԼLF#]qAkɲI|n"7XD|TV9[ }ńjظW/hJ
+-ꢘ, X]It!
+v4K<c"ٙs0֫M:\0QKNZ}!Uшt,Q1ґV.[ihd\;%1j{5=2Qx
+ﵪ:y"ȶPqߣAIHhJ+geN=]qMةs5*yH/촔OuTKG^N8X2Vz;3^YKKv
+t_5CfkHա/Yʣ:P| {Ǽ QhWdFY4̃6s6}o = /&[Uj)o(-!.xmEZll&md_gIr~^v*.<dqg'yUu#3zɆH|<+< $̵+gGT
+rP[m8x< An%4OS_Owv䢾3I̤RS6Ǫ˨&*@'`lNιoq`) l2G_P9%nMѴ .O=U1oRA7(>1\dG|q" 14ǝX'kV'x\U fRd(|/vT\-/(hf>_,n xQZ09dPx
+^K{PK aXɴ
+r"'t.i72Kjh'Q5Ba`z{٤ ee+ ga^ %ێbF-U_}|9R \YXH[1w0tL:^?o'A軻4&6J?AA7/!3G[< r\Ux 3oֆ5H%-rd1`1hP!'?I
+aLJ? r`}$oņʝtifBJ?~{ \wHOec=n jWdA><,n>}u*;oԵB=*EhLɴ}0FsK<;g"
+_׻ lm|ap Mi]YJH^cjY;thUm>Cpc<NL o#$ˈ%ηӺ"gOXKX9Sb,rB_D'j޷5zl!.%7@>1~-$i$\W '-l*wY3 RU-xBEa
+_S 0FϦEuА+i.2"Oy:27.%MUv^_
+7Zxn,R~1<}Ihd1Υ}W xH.v`]f歀+è/y85'.&WY|'Aiy
+j!ꊚUC~x~ǎ `GkII\~$6PxS]1t_ߺZfАmcZy-vU0Y.FɘAWƟ
+=GU3o!o,oUL_Ԍ4yv~mRpB&C_0l`"Y9C
+?wʹWFYtHQJނ> Mnݵ!vGX[U%Ў.tL[P|
+J ~
+dUY6}4sj6BW!^0ZR$K2sDPCkъ\~$3^
+!H6ߥ
+֊ԶZT4F/׾/HOO%BXHNGj㦃"$Gô. R㊨oni$_ތš^W,ГMn
+L"$py'2kdU* U <yQ&N03&QC<1@ݬIo|zk,Z!-igy3u|.I9fIQd 0ڼFvXj[NNr2#`bM
+q3,&UujUN(NKfCd1Obd؎X~l-@bG܉#cȁ;V%Q3$`i*21uߛJ=
+~]y]xnwrե[(]>jBx׎V]b<CGůוjxwZjjJ%fz@٘kd}xTolKpմ
+=C:yvw[ֈxk~k1*0o}-uC\4 Z' )Kd>
+bkü;L}W+]t7 OLhrg#%{^\,>ӻf[?V,̽asF0QC >ncw;Hk 9;Iz~gO2Q6^D;P7dWArb U'\
+<S !8td_|Pevt\ țzOœ:5v!NxS~`V>]%@y>jYH96Co'U!|m<H
+تr2OUr@D?K[F*z/zyugdEV/:{qY^n@PDrVa6ۡvOT_<8TdIW@5<_ZaUnBN1hGA
+/Pz7bc`cH3)OIV^bj "mv;Av3@NF8FX4Ɋޕ\AP'Nd TS~=`劦w_;wk
+=wK?:<by
+ Vh;c7z3T{,&XJLu_>?}z<H1?{4(gr)q$RE&IyM6L?VgHI(*?.f:VYX2/d; 2޽~[ѝs)э'8DSC%v6UML'hp-ɾAҲ>l/^N첑dYU#:tFϻ28:5ayuzG{hڠ+3T >prqQ7;֔1,y;l!5FkȒĹztV<
+֒~vZ th{7ɫ]2ukE@ӈ#Uͫ<pW@5>~ΠЕH8$Xx* kpI4}4)BJ
+jn@T)}ݤ
+&J`u
+b5ydBD7oQ3>4)ksb6p$ƙJd@=:,p5%?5WWز+C|xO@|8k͢=/ID_)NAK'XB_ν\lpZҨ=UzvmרμS35\%*zJAc8_ݍ9eԉn"%Rgk-UFдOW+UQ34]A[  BT}*A<cA8HHA>׭n(I/qs\c;^
+!<oK?wE(#d'MB| чҗ>1~S8/B^E7=0ַ<[# LɅ8Bdb X2ʴ˝'4LE {xo<qJ/)KvW) MNfh>Ik3VM݆Hb ΧQGw1% =#)T*B tkWL=e["Eɳ9VlٸtG93:asK>1C0K3 J@ꎪcdodjp@l(ApIl/H.o*(}W_'@3g8p]$Zy(cTѫNԘMl,Ʒl`5[iZ2}\/'c5ՃnԾ
+!v.6hHk,%54$"d&>7Mdu{Q$D;rciiurr~^rϻobe s[|"o)jg1鯻DHLV|BBWϞ1$wvZիƞ/}"…RVaWqcyWWN0cыFCcp"Ш&5Nplpy$0>Xl9
+k H-ʚs`:Pt_$iq  NE6I3%9E߷hT_CfEacekf`=q0~nP죳@Q-3ͧf=Z3v
+T+
+{kq?
+֨,; ?Cj'qȓo 556#=8OQFT_?dOih+OkQ;7H$: uaa=^ @ej
+@Kq a|AYE:K bAѴKEPxL08u }: G&7V LEbZKѯ[xYhg~ |9=˭:O0?$Pfق *J}Ɨp@Vm.~q?  :c$:"][/0mr 9?& ">v wRWTc;
+千\?N{{.(,3 Ou Z|6Nk?NТq8 m͓/ u)["gGY4_&@LL#ṘSSZ~\oA}sl%i!'zRȔv,3vxɰ#d%*g%;& nΈYgv WjGE~ M
+1<({bzgOTi "\'|]'Tﱄe6DNW"Oc5z/&
+
+=#DDtɴL֖ӗ# ΟYs&84S֑犤ht&FJ{d>GUD~)\ii5]}JzV-[W-Bo{J[ D&C$=Qy+
+B3*Jᙧg4ćTz
+ӆdVW<}۠ɡ9g;NЊ=Fcy2:q
+R OEW..z1;a8xsx1v:c6^ F{ -hpe&Tp:%o,N/ D&1  `4P!7oς <-IV3/|ܣ00񇏳9f.AX&WpDDJKɁ=]"
+O;AC k?o'~J]&5nf 7O *.H&"w2Μ}"eB&KO
+9'{{B9wЬ *8N;@_u'!b HwdK~' 9Èo6Z0xnY>,.d~1bfɷ2Wuo?BŚ*l
+iQ %_( D5L
+#`W"'5
+<P|tʙ׉h'np"Qǭkaw6Zzw/nt ᩎȱP0R]~Ԭ.̹ Q B"C= XMgY8+%ɨ5d-x^7ĉ}QV&pc5&O/ƾh3W諍O f?:5"$00q}{dZ}/ӂy]d\<o7h { 0mD l
+JP:Y6׻Mr~5  |@fq;
+3enBhiWB$J"к~u*GA6dWŴߌT3#5G_IX+3@Xˊl`Hƫi1C]ѠԜwśgvj>)m *Ղ,Dk렧YK>3%X褄ֈh>ҸxPJD[>6JK*SV8&PBhޗ#~c<(Bzw9Ӽ[#E8L H^V/݀UQ $dm-O45S +
+As;7`0Mk/m@@8˫MJEmo3_ B([L1%7?9%bR\AY9.*"8V% mC>Lh\ЧcR4-iċP`)}9+p`PusQeP{EI,3AEsЎ zijy_A-T4=/&m/ξ@Vkh[CYҒ+xލﻖFV
+>C_FZ *(:"jQO|~S7:IWӊOS<
+CcqPO~!Wrrykr
+6vQ1L,Sq?8`[% S*#X* OT&T$ i%mOb
+|mQߊnh?IHl
+V|+# GqmHf}LCB/ێZF$AIu`uu꽶S[` ZlH 05+Fm {O,@=#W(VC&"ya1/Pq|*, ;tr}hPyy6oO I ZPd>gj\B--rq5vfv$1J1h8'<5Iԯ ש+'|cx'/NO6M uFL: *}[rtS3PAn|xCR#Йoc!HL@"JQx'NX^~kŲx
+ʊ^,Աn; * "5Xë*IjM/ {]FSA8 B!/+r:Uthiz8zZVdN]@_1aʨ<9p΄k3M0#:7RZŏF![4&\PvBg8 TN+Us
+CS]>^@4vT$DFq9d 3 iB%߽hvOԄ- :R(l^g^Tmu1Bhܸ\f|g
+Z7&r`SWm/
++-&-oi* U -if@&J_pNL ;6_3[yCMqZ.aG<E)4ё.Wj܈Ip7">j44s`NeG Nh7
+31`l>2a+ß
+endstream
+endobj
+11699 0 obj
+<< /Type /FontDescriptor /FontName /BYGIQZ+LMRoman9-Regular /Flags 4 /FontBBox [ -443 -292 1454 1128 ] /Ascent 689 /CapHeight 689 /Descent -194 /ItalicAngle 0 /StemV 90 /XHeight 431 /CharSet( /F /I /L /T /X /a /c /colon /d /e /f /g /h /i /k /l /m /n /o /p /parenleft /parenright /period /quoteright /r /s /t /u /w) /FontFile 11700 0 R >>
+endobj
+11702 0 obj
+<< /Length1 2115 /Length2 16804 /Length3 0 /Filter /FlateDecode /Length 18109 >>
+stream
+xڴeP]۶5;!H` pww n݂gsWLZ6hcZUPNF
+l
+rlmm5@X@FI
+g/߇4 -
+PcI@tF𽄓Po%cG]?7hJ $ϓYW_@)e|t`VS3PpyM$t~e5,P5Vg'C9`1U='{=d{FZ>SUfKe~M
+s}#ֽ-Q{vhW
+@Ws%wk)1?Ų~uډiWxJ )La.1Q9\'zaA|@}A}:?PtĒ2>4z]?@(tg:ULTd.A$ıJXħGf3m&[w4rh?h?+xPfCdɌpĄ>;.\y$th~(ZNJ ?9^_`E0D/:^{owWft W/l2޶,D=\״mݠ0 Z r
+t".C4'4xL\4(D
+ŘHM1wh/bdQ˙dAH#5]sxBm5!/l[z(dd6]lfHW':^!`BvH ww fu鮶_Pk3vAui:gT#=3b'nƦlCOʥGz[: H̤i/ld$ w>1ԗϱway2I9NLODI;g9O亝,7ĝ+0F$/nߗ/Tk_`\PVɤ{32.rEAjwӣ͜>]$}Z'BA3^l тd9nKeƃV |0tI*y{W-
+_rUaF %1ɹЪzœ1ßp0%{"GP"xL6}$^ vV;<n2N̯.*RY$re,dzD`fxdKQ -Kfs9J^AI5?櫗54YGzCgUQ\/ez1#\u`Gc+PԊ}r쀾\Tl :Hۏ0Ah`݁khPFoɌz< 0RB'3iMe]E,Wo tfs_j&j ;,yJ2hQQmA]d6;;3 Kd/HތU(rZTx] oA^x^z[!빓Ug1@;Z\tg2fN>AۥpD65ɾ`b-b*>
+64o_Մp,hZz'( vh>.G;I I/sȥnq~8ad4Ea0-Cڭs"v0ڐ#Uc}7gQaN9mF+(jtiK_ZT;*;#'B绺J r2:RgX7 rfsTZ ҈̣ >Be9Y Kq2p(GM#|NWba"MÿGk0xv$
+Ɖw^!;!v YW>"S_:RvplaQ ")[!VJ$IɗNtP
+cի/^J1 8 PS}֑Xt"^A'
+s؝v_8U.qw N+fQ-6eKFV]VmX!dh.Ne2u)JEÄThFMK_xfTTW;ߕ.v :bY Jˊ{<#&SE_a~U6OzK
+Fp:l#^9V648\]/%>^hQ-5}S_꿅SO+Gxt2x?d{2_^#ޚ`L&`Dfa;3PnX̕ ʒ4d-6
+( ,˷|TV\~!N;+vu>D{x&.[pމ|OoY8܎Jr B e</zK?3 I}
+42:~7I m<B߀QZjd_}᩹;=pֳﱦ Um@T%bi,ua\/MAE}(`GHfقF1eƗẝWG~cq#ZUy
+xM"R
+ ,i M
+fpD) D`eYՔe&ܡA7YX @|7ov-řA 2<왋Gi|OV(0ցfp0(θDK:]QBvîe(JRv_"wqa~Di jۂ0T3ΖED_/"4>m\X |MO:rnŌ 4C}%ѩνMl}q IiAI9oj 
+W@}_jWM]DOb&C
+= >FYvY"ķ' qU ;QU)yqC6.'Y˫"%0CS~3Z\8S$fW_X^0k4 n塿 ϨR‹Z-(.ȄȫOa:7EX)&p&X{|wdf+lT~i};I"0`˛ 䕸<<>8?E7R__.
+̍_ Xls
+*תNsqjF ȸg3Nt+O,du-‚{1Y6xD~tdloM6ҋHIi]"`zobgub^ٵr|6Ǐw$ ˝3N3GlAIK>ŷ7wY 9_4侪'K[O[)$>} =prs: {~q1D[ p+czs3jb@}ASGql<Ub7 w܎T_ )
+C-)ǽ^@Xc~ڸ6QR>sl D`Įq=Z.nxtLOԜ 9LPz?@'6y8ңrQ97>#1Hb{P4T@oS:t
+,l7Tzsb('hTox$Aq= zF1qg|ycl.f1>=Os1tܠ_ Dp1 &<*JYxwIonxuQ7<s_atB2H)$I]"xu>jP-Yf*wZlS=z;,TpЄKIN^uԅ둇^K6'HzЖ[Dl"P4d<z;b PXШ)B[LDS']vQ{~7Gu|в΋V;1:S{fݜ_'xLϪ.rIaҝ=jn، Uxӂ\V}4a!hrU$g޸ T_g~Id6ETTMee~RJveDY=eczΟt V& [
+8f]p SIFC-R+Ж![>pJ imf Ajz3[PgÜ{B l8t9>xGO^ދa9-Sեj3
+bRJ̓{ʰxd;#q}C[wo't8T~@4`<=U %2W2Yb]):fHfWvW!p۹awR6Zus? 8wpP(G<2*Y7W26Jٰ;*VFjnv37E!#XH7_5՝`~sR|Gyf$iso·Uf-wXW|nNW -\
+/W-fETXh)|̍A[W \ȸ]]ތ2'Ec']J̒4
+c ovZڤ|߱osGk ڑ&5(2S;
+u9)Ƌ!.
+aqZZ;<?k3[Gd uW?Ԑ(7:n7KSghZv]$7K3kICw' ԙx#_CiXzM/fiHH,<i1 lsyZ[M;P_G{=žJ,=X޲?gALc* `=H^EAgwVIhKe)ǯug 3Ao;#!|#z`glE
+F05 1
+%;Pg PShwo: B LvjA*- KW%:ҨD_kú*7I_=͛5Tղ~`"g+ix3dE2ãd*C₡O0Rfҙ|쟠k0>ַd$BԸɮM:0:<RZTUOפSXcN&,#oz$5mv0Rb7˳ҋU,ip-8].գ6a+`Vq&p +9ɋ AW>Em5ϘTj qɍV(O"8:K@
+;He]e5}P }htzC0*\6;n.: ֦ku4q >W6 8F΁ˡAnHAZu;x8'LpDڛU5K5[$E gVfJL蠩a
+Jv. ƶ4~Yk:I>Z"Z =3uy>!yy*c>>t]m(;/[~%1X T} \Ku(9¾`ћ!o゚0J߭F e߸O(ŋ*_յshJ#M[֬~ ;IfVj ;cv*EISu7AO{Ps +o{(Dޢd Uen-}\Hܧqc6r.x{ muLGe&3s
+>Łc]*&jPwh>F x6o%NO5anXn'C3GoIKW[A{ٕ+
+*p2MOhv]a-Z$BE+9\(*{=2+4l )Nx5!A(+dƦT省OE݊@OI8JngSvɂ|㷆!VCk3&/mzt:a<,0
+MN0XrEbۧ,;mBK ;P6OZe[3;Fa]պtHY~\DX?nrb&qdq72A`OUGMx־!- @8\5]$tI:,>>Y-h
+m@?VW?y=K<s *4w|At# bꀧж -d ğ;9B S/sfO۲e2рVx3PTdl @G~T }fkmB#/CgĽXxzz"5yIvj[w^J(-G@3.ϲ>en514c'
+VCCgQ[} -Z@.4S`OƑ/+zmdֵ'$d "fj-kK.=ֻl^z~.r\&O[ZƷjK_E@m|i7U*Eg6еu/)U=?QgEٟو~\BG>AJ%*!sYwx8vmhFljyYYkJl$$=gi d3ַ1Jޏݔ?i!o+W#nEͫv\`Qg~Ͳަ@EXEb]l>ОlQ,?ѫcI,) =-m$/>-xA:Ct$8:"1Ј0jۨ`zH›jxF,t>F657d> /,wq-YoX7i+ݑS~MU0}.{n޹[IpO*L҇&n _!>5-~kK=0ųϕZSwtG奾
+|ǴQ{U¿I')ry!x@.# [)~%&ZUᵸ$A HF:0w+YsQJFSjjԻU]soT 1n]M&]3g5%_f>;#.T{ 3)vPN Qf%߳nFMcJ˴ˤ:MnR̥Fd׬x12m@?5\UہW.?uNq3YNPc3#3E-t떄A,wOVf$1ZII֏@S4f0}~\2JK䒎5ۘ1?]r;3
+nkmc*լ0S+b=7yb0 !c*9mN
+jRivVJJ
+V89B`+&Ͻ3hKμ)4
+u%Jݣ0?s&b1abhȱ(t7 TTnGh R !<G[Ն]Ӽ,<lSEG|o*yzPF3dFrzjD
+\ƛr5r\ K۷"Nk  OU^<'x660q!~B a нFhGH9 EJ=t=؋֌'3+g5}
+l0j_ fþWC-zU I%gs=sp̾w ͈)i@TDmDo5+
+-δv˾WCSn-`֟i{=%私3~7qo>x+v/v)Rb:ݲ^RQځoﰓO=l(ubL]I}ek.t$OV8" XBIA+&2/#y8" *7>ڝ#J`'.+SȜe':pUD *ղcFycg({Ӻ>q$e'5?]2HEfړ0Y~a*bEdr>B 5˲k}(<-
+hj#]E=EV5Ҿ: iTa/M1M(C5:U ,:5'#VD[,d] k v%1C!
+"e)*rSb"_s41/mB>Btt@Dps@ l"8"uN`ju^C>؁#`vз?MeUFgرg]Nmݚ
+Alg)vK{?-ky
+SN~Dtʐ8ƽZh5Rᕤ{Ph ̫kqދi'yGkd$\DFP֬ސQKi_}$؎Ʒ$ru Vr=.
+tiqN2~4ddSyaD=2,aW^v#>i_Kp-2I[}i,7$k;8pM-Ҭ!aSi(!/ZYM6 $aWn|Xү~v(BMJ˂vOI4C8Hd"| u,ڸ_!cJrT۴}_'FKC/xPRƛԓhR OBuR
+jT<ۻUCq;΄x>t@;AUKeFǎ?TY[h8;( ɰpwna1JV;pSDԵbI ruG; ³NEME VJJ&,3o;H|ym,}zы2?猔++LHܢ'Ĩnrkٵ`&ԝݮp33,DNՏK)$y\lN$ٗm(|r$t~ e(M֏d^iv渮.^un-Z~6,7"{ю2,=]sEg#4Z
+s66|%6"R(ne3WM_##.}2v@;0(R(O_Xz%<64,90]L*bP6; }\6Ddj9'l\-F tczCwk+QJ3;PwS&ht<ܻ>PmF,w*}yʪpe~eΤC|΢t"hO^ns@;ؠ=
+{3p/%׽' MFfPǩ;wTx0BL
+Cw`!CJnR` y3ayqsDx.>_ʥ2.hG#Yj'q۹я*P!:@Rv1$"z w7OAgK⠈?7uh""ŭ>ySV#xSi 6z@.Qˆu-gbuV Q./oM Uݚ~vu[ɩ!qM"L:x)8l}%iE-քJk۬uOw l`UB#E
+a̚;uPM`v{'k4x9*37ΨxVuV#^R
+endstream
+endobj
+11701 0 obj
+<< /Type /FontDescriptor /FontName /NRYMBG+LMRoman10-Italic /Flags 4 /FontBBox [ -458 -290 1386 1125 ] /Ascent 689 /CapHeight 689 /Descent -194 /ItalicAngle -14 /StemV 56 /XHeight 431 /CharSet( /B /C /E /a /b /c /colon /d /e /f /fi /g /h /hyphen /i /j /k /l /m /n /o /p /period /q /r /s /t /u /v /w /x /y) /FontFile 11702 0 R >>
+endobj
+11704 0 obj
+<< /Length1 1668 /Length2 6617 /Length3 0 /Filter /FlateDecode /Length 7718 >>
+stream
+xڵWuTKT>@:I`dIiDZD% N%%;9fM<]kؘ !H[ J:Hg0BO
+80J $((ICP6l
+{
+
+& ҉qipy&6@C/ԐX*EX?a\IP?8ѿkg0 ";l"qC6}7 PvC.g;1>nh柏mDah OG(`C/ѣ/ QPS50
+IJxb~g_STі$
+i.UǾ#VRBzI|BB
+F[YX,ebp͙>}L\t2r}gۋ8Cr_T4I/E6W;{12v߇e i
+e]:1ޒCx"X  9he r}A;g%P{ sboF%6jZ
+vė^}b^m004<mkerF~n"vfYJW@~1Ϳ)Ր67f$j1xĺS1sJ`@/$k*pHH^=V)Z e,L_)UePR踹0_rV/|oE>wFrgRO{.DF4guvLg%^ϑf
+e<.
+Pk|!3Hq'I~-Slp7wS0I45K? 9(sƧ>Db`]m'F/l_=tI-OLQ KL7idްrzFLjG>5@U*Wxҏ|B7m"'^1aUyHCxH 7w0^v9>­-`'0]z.vuWLN4Qu|5ٺSe</J&Za)CT݉VʼrtՏpeF8 CB@\C\l=(axF>wi!IDGl W6"dOJ`*sTI=4ö |,ީ/0q͎4ޱdJlG
+n9/R\ƚ7&гSƃ|{wZnFsp@(Fxb4-ɨ$Ɓ/!Mpc=TײzMC6Mb8,3#P',jt _GWzD:Q|TMp`Q?XLz|!%+wcX'NϚ(dۃI4FϩR6y}@c,z
+'Y|7=?QMG2KeQ>dW\^Rkq5~:]+UDq
+);Rth~ ɧq\ iUFy1IY:̷ze<dsxK"W{Q8Ϳy'ro6ͨESNXUs6n'to`.]rhgS c909":?
+(|*K[5 <9XW5[z)\tcf~VVJf9 Ggb69g-M_uP{Z;0YQ/&ge}!2\ѥnS{-*Y“N56n_D$[IZS(3G8h, DžnR)U$IGֱ@̑@_'nQ}w{u3,N…Fb@m{|4 kj{\ ܮQ +Vrel!\/(UyK$Z}iǯZgKdP꛲#o>;ڠ**N<8/o=.*]!Fɭ̳{K|#\O6d%)$FP{:5;傱7n n.{BCE : 85DFN0Ӎkϣ=8zh#*>R1\ll}WNOz ŶW\^cv~ͯr!`ܻZ7 mEG Yt U.͓ M;gCY Bգ*m*
+[),p']ްOa$|!q0܆
+ I;(y/jg} &÷Z$r'_ɉ;CI\8wDWnM\I%HAYMS
+DUwpPާnYMW5$gsYl+uf]-@d!-/ϏQUk#=\,SNQ4Ym~!yY\N6%h [ 3IO>-@vO
+xCsCt ~lgh^=N UUSxbCiVLuץ~p
+<C34 󻭚0|Ȟ@YSp/cA x7wHҾf_7x ȋX~f7? 4<5}ϜGCK2mg;ܥ~ճ:T=7;kR9m&:2?UWU)V!4Үjww у>#woVb.L}
+|6,`|ܥrMm1/͜_ދ :x[j։W2|Y~Zνv碍gWFq+~,9fT뽎S,oO<ڜtG?d( ͧzUNա_Nq-NM؋W.]`%3jE!?{8 ShwBOd\8ڦ\ݹ&EABէp"3>Dl[S~)8Lz#R$r V][ݥ離!r(gTz侭-cLxG5<qFOj^;zTʫWxײ&L J˝/WwpvnP1mg("tBr7 qkؔæGh*Fxl>$߶Y^Ĥ%0'Rޠrb3cX߈OiP-<Suc3Ai GIXR]> 6giī^y88WRy8T8XMX4E |ojNh]24ֽBR5M_?`[)~TGMpA0ւDJpn)䐸Eu!9 VIw_I%|Y'T+9d"MTjGLN,8˴BQ`H΅kYX3k[xj<_nlwɋO{ l' Gyx;Wg$)6'a=^:7YTQ&2#CKkGķT)^P<Th\IyAJ2nL._SCkh%2&Ne:P*F쾮8%qu8(ɥp=pX}~޸s.]`kjE ɘV ?gkg-U`s@Cr|inVV̫2ǣjݛn'=ݟp}S*kz+zo- k.u]7 .'e_A/5eJ)\ߐa*i%QZnAIH/>5/]$ʖ*D9kQ:"Ix{y!2$>l;Ne ' ߸ӭ<jgH"L@^2s2z9nĵwm2n6$[(JSV9nk
+BU`9Cۀ= 3Ek.j?}rےTBGS j7Sؓ[c'.⋇>[n4 g 5:螿aA[Y)tG"5 2Q'ΘuqN'}oe$6.=O翶o)}T9[\vmW;/y&Gs1!e=7Dc
+#6SïׂŹLw[J1[*tlhU)M!r7>yDErɫsv<wyL~F_ZK.Q>MA ``u]˞iZ鶳seE8n?PWf9}"Z ǧN
+hH.gNQ'Yn{,%_USW$!ƞw46=Y<^2I/c;c*VL##ɿ.F\Fl uQAgҙiU[(%oRyUr^Mt+M_X+/y儩YQꛎ%N`H|(AE¹e|LykE+咩X|iDd͢&Y3emtlY"׋ЃH;pG~ψ"o rXy,j<I
+&lj|p[T^zP'*/Ʃ7iqE#F.4Aq:S_~fW]\[~V i& MLtitu/ o)Ru|<eN|֓$dXA47A)H&|_`[a;GiVnT4N*76(xE;S5Ϭp"t,17㙿z/e<К٘BWڿP{r5x/3O:#iHOQ]ĮLڤun7XfI^#{v:mj r[
+w')7sLx=QҘM3] 3㪞"l]퐀бߍߍ]kyyw3c;v8LroqvLt,ܺ6ݦ9̊˄S!Ѯi2-~2XU4VxHaHcȬߗR(]9 }b;oxS7͢؊h4 Iy$SQ??|.{Ė<&( tOwxozdN4hչ{`S8#wr'Nrpja,{F+ͪ/5f_ U𤖾_98ڿ(/6)2sکbf[}2{}muaD4Ӗ1d
+WHt=Ho
+H"s}|pC
+endstream
+endobj
+11703 0 obj
+<< /Type /FontDescriptor /FontName /TXCPTT+LMRoman9-Italic /Flags 4 /FontBBox [ -469 -292 1419 1127 ] /Ascent 689 /CapHeight 689 /Descent -194 /ItalicAngle -14 /StemV 65 /XHeight 431 /CharSet( /n /o /t) /FontFile 11704 0 R >>
+endobj
+11706 0 obj
+<< /Length1 2013 /Length2 26872 /Length3 0 /Filter /FlateDecode /Length 28072 >>
+stream
+xڴeT\5@nAC4]Kg3 螥sSU-,
+EaS;cș +lgkR1903(]lFΖv Q#g /`݂ ߕ
+˫
+tt?Q3ڻ_
+2}/
+`2_`
+*Ύv@ K9;Z0O˻_O/xع{1spXyۂ+|MM{7 Y
+_xֶnR#`(Hioف>d' £)h2c-Csމ(AV,b(QV:+k
+a >%I%9;wZurw]4CXc#LZښr\Z"ۙsSi!p)YUR͖si8du}]2rh&%&W#jrM X,?&*^t/m/۞cD@{vG.NuPrvS]
+Hgk;5Mm%IT- VZpRuUZs,銓fn}P' a <؅  ?E)]8;NoLa2ތb-^$t[sHżTtK{Y#a!wH`sz( me;I$[A Y6Ĕϡa0?!>uutje_ eMK:ż-opoMc1"UbJ#jKN+YQA`K/uN)=־'ϳ"Vo3ƢNyh2f@ k˜IBC_x?[ J!Iƹ #%vۏWQ-Q}/:H`ה
+Mr`ϡcܞ nb,Qq]N 1Xύ]Hy=Y7v:05!6juJC9כxD`&?vtjC)J\gǒѼ|"ϢZBJ編B50u
+Uct9?HͲ˔n"hf?е pV3QxyQ8>L:SR觿l#Q&P^ej X_I"
+9hlMU_$0'SܫJj<'~uE ̂钄s~ђ70E֮Z_5RhևhQ"Im={'%D"q9qL]_*xDU W[MvQX~YJ/Be%3Wbe<79m:="WyO;rfHAM;{;mS|xϺ_Hܗv@+ 'TC?Q~E٠r,.C5:(MB% VfA3V9ޟ)'fkݐJ"qR,O҆/Q5ؼ1
+?nb$$aSх 29h;76<h컴qR u8a$В_0:]5kGs!CpŊA&)J.H]"C1ܳ@€Li#!]W0tV8:As< =*FZ &Le-Gé8+Iu'[mG5`u1X''߲ӄ@[3薿lge?@t(aT^}IEXφJQt/V2[]@ǒ7]5Wg-R<p|Bad,GsMC 
+8GIѭN Zqdr4GDxiٺUF?fftjӁ抱[sƲ,~
+t̳A1vjeʢ㲄 <2)ÓvPj]`BǠb\ /+א0ڨ`)+,aƏ U&"u0DnY*)[e#1 G
+k.Ȁ4on%{]?u1Jj&y,l@=`=Dgk4;)Tي#e!vp>$_|+QnDc6aX~Zʉ)$IOM<Kc&B*IYHb;hTCPCw%9UlC؄b"|pٍ/:Ju8,z>]$!xchP}!uźO=ש8ge ~|@]d8R>;57?7n2ӻd#[%ҳR'Cъ= 3ʓ$D=hQ9ouxh(ǷCSF*%v_m&]sRna{%GrW?o$>vU#tȅ$Fҕ!3uߋUhs.BW}2zޝUCˌ S<?l)t$?ṵgEMۻZ q(uw=>Wq$\K^$FB%t,zg#jV9[n
+^$y$J<7h@|:h+ ]
+GlǥS G)utbD
+HWzCCq &[ ++UظGcU7Ǝ>\XH˰MZ TbT+z9aQs?iÀ 0 '@޼7c.<]f% 05G XԡP_m"km^L"BXZ҇Ϸ~]~C# ;^rhAl
+"9#i$'5
+ˣ]!z
+BGl~(dxhlz*(j.
+/"ۻSXδ.VpVNP):ͮBs3S 9;&DIU<#h퉒ޡ(F.5+.W#) 6"]ت@)S+jY
+j{R5W).
++OR;W们Z*tjg>Kr/=?O<̭ۇ@U9e)f¦sVG-AL=˘ʔ==VI4*RsC2"a_k'^H-qv o<j'ToiS{Ѭp4ki?8
+'m1\҈gwJ' ~2<ɏlo z&k\#c72N0tJ:m< D[o?YM)&Wc:ALߦ2/hhlPQճ&yZ3ITSUc;]YTΒ;-W{cd/<" q<1|x{ cfJg0;,;cIlN$tR묕%8"$[o&lZ,B#%5'Qw$lvpS?4=>:|J5^j ^gk4 |{6υ6Pb=Z~x`\!<ekӄ5u&dQ9A565\0/N#ضI}-/8>a,
+cȼʃz<ad8l+{'9ugݣiˤoRFܦo-8Q}^^/
+r$2%/:˰1Y'i2O]Cxf76W%μ́J7U҉t*@ 4EKiWQ9]㮬΅""/~qݮgs45Ǿ}kQ%ް'(~']1?ołH1즗 5 <gY.m$2J
+n?^+?H~6k 촒[Îvr!&ӲP\Ԥv]T &w#Hڒ6ѫ%LP8N!ߑ5#=d+_o`Yõy䤶4 b1V^蓺okBvqGfn$
+Mv{L;º̖/?N`%9',aLr Nř"]B02өB
+eMX%&4 t Su)'4# ՕU; w#=U,셢ӊ"g DW1>6R_xrCSvW8Okl'ݬvU ~SBPM#@'BR`4'ҢbHI~lo`t'w`'FFHl ?T%0d!Wks׎P
+7^AH`L`JjUt,ɑfe|t,ur~qn=(-h]xJV6GWB|q;pƍM<}醆[YCկ~oO*KК4x3CglD\ vĬ
+Zww t_ݡPn=kXemtGڶl^`O(>}V?;q<)i E<}
+
+RB6ydOA Ю
+&"+pOE̞x;xL#8[t<*OR.Z.˚RunR0%Z_Ge۴2 0þ;3PE[ks y8IvhעJeֲb\[yA093tt\-SolF:{<jA
+ٯDw>@e Ak)ilZ+l"R5Lv3Ƭs>8\F{y_:#LH}bU p$fPg2ćL;
+HC'iVK|@
+8οB~ۣG=p9Kۂ*0mRM!.۟m!@f+/;"4GG8>3&g3~ȍq2LwH:V'E&|!Kt:3}JӤWU*ۈٲ"fEcWEd^pسm5g=M ڨ2*>PeGFJΑ ~ʣbcu`}Ct[Kp<,IA-\g=>^U4x]"(Rdx'+`+ 7d::,6?4Zċ
+=QoEX59J+*l*OE=WeG8\o5cƠ+A)9~/S~ VYٕ]=bàOmMn(<Letj@@L!}/Vc [jGg^YZf !ғwUuᱫyD;I:|V)(,05+ad%5xϷ{rկzu(uSeImi8%y $53|3!􅤐}X;3;t:xKW΄k>!^1=R2{/T8osa֟
+frJi@J# #rѩOMFxem+|*eף/F"iޒƭVFͥ2#}rFulEt)gE[׺6 {$b`Sƛ|M|ٓJ$8H$K.6N~-
+jo; '3[nӞF~I17:uWG^#5KCfo-Iq␨wFdE #-KsڄuscmiC3bE!4EuB`ei6s̓zE?c{jv)@
+.Le1/s U
+UbؒֈsMe&o2h%NEG_'|_F%
+x4{y.U4-76Nd\`N?d
+=d|?exz9#pYgڤ}#d&mÎ'!)uH>m P_4'V5R2*ë }\8Ic#cшBm|-3WįDȘVc4cYY/!ԐJQ
+[J-<Kuk[l!Su#Ya BV
+=(]hVFpcZ]Ғ6EƳ9v?[8vەr|kv囶WSuoV:0o
+ 8p^5hI$)o̗l5J6wgu0c!D9'!b?_R9fHY
+՟{ynUT=BNA^d8?bm5 at-
+.𗐾'P V-<T!zB:W_3JVE%mmEu<z!E60[y$0r46(qSh,l8QD)WW\/2ZZ<BJ&~[?gy)V:<IJ:KxރNt?(0nSf;Skv,d6,);(\>$5JDL<BB9_uDˬq< \}ם@J(;T75\6U5,i(mX/nfC-a Fw?o4IJIe\/ӠH/!V^(GJ J*:RS$d4͒yV!H-lY#јkek?auӚRiESGhbo|b *v`&m(3! h
+f<$@w! fc#nʕ+fpd4NKZɚ]ro_kWjÃץ}|@ۅf-yF]G{s.8Amн_`5A)vvhAM *uA
++1XDwDcֺceONʗU$)y0ζ 3\ܑD$49G6"tAoDkB6ק?=:qM<Cy'&fEuգ?Dˠ!i&UaU-3ϻuMC*fczɧ{$,mx(p=,_A@>U ݼ^AZ,j>ȃbV:\N=8(6OIY>p*քp{}0QP{O-nV;]n"˓ڀ y.n=}Y݋-G-T!?{ԍgjEjup̉+/%&,*3 Djfwy5ID~weMAvV?TW [4'|Hc 84RyNG ꎕH|is(ngo%6k+qcV&_}Ts[0 6)SJ5n[kb
+e3vP'9meϝ@pC,H7 2QjEYf241Hm*8w>juƗ)\9=3t!se&ilCfxf-N5ܾ\LT[_qBC7=*>󑃊N(HfL׿'Ux%<L}B$9%~i :h3}jK޺'0ͫFΐÛ|G=ݧkgлAh'.@uCp+J}@\,\ I*q/&%A0=T%dp$bJ( EXjk2 mGd'9%/"mF$"| @$Яm?wV
+}ɛ᜛ ֟SAW~Bݡ.a#oٰ?UF&}檩+*brQQMcP?22܇*&Jg_sgʆ^VB=.2dZa`<<Q%8\4x`Tn?t&0xOUtaL6tWA@(wp_G((#*jW>R^TzٸhǙ!KK$df_睤F{(4EoQ  l`TknpsYCXEu$lαY,&߰%Be4QiFmh9d. Iu^BQ +a8:.dG7PQMm8t{pq
+" .H['v`c6ƭӾ Dč&.IJG0pbK+]T+tۯ_] @Q4mb۶m۶m۶bvR1'=w e]&CWfk&uVx~3DX7T&p`\I{ʙC\x+L
+BT&ȝqҶ}]߭ɌCd4r<`ZipW/c$@i~ )m&Ou{
+;)Yu4MhTDa*;cV]`6dߝ ?A?VYZy?VoV<G~nP&rWg*Pxܟ"9nq!šg1TE8>u]$9$R h\1Ts7 W|pSۤ0 .-֢l*i (S5}{IJ}J֕WމzuN##pn^e(Sv̺al0n2|V腭3~X@^rK;Y3cphO+-[sWjʾIxl⭚}(CH=ܼJȷMgJs=)x h}?U~z4YUo湥aZB3kolƲaz1kۈrfȮ<5Fϸ
+P
+MPKDH3bթT;H LFW*y#8{ a,=bBX9JݑB3Au2O}&g8xtNdAT/]`Xǀg\ha oSWUbzRy-CƴM3ZC_߯5 ˠ3a 5sd5*CTN cX8Zd͋{}͙#G7ARo`eJ:s-" ֚*c@(Tєj) %XPvn]NIkOc Y VN -8}XW7:ֹ_Mf' /<6>
+1Rc2i9?eω4ݥ;L0~Y+'X=FmWQ@^l2k>A QXpFcDu~cFaV
+`E|H`5`bV߁صhS!;A`}="LhZ?saLPY,Xs|Z,}" FOުf%h<1 
+֛J+MʤOb \s*:!J/TvBZ̚Lߍ(̐9y\9YD3_[%Z'WFg#ʾBQ>
+taH-TPs
+6ً3Ru{؋`<G!MVIeAdG MHwY+f"$t uJROHڅ$(L^&*/y5,cܞ{b~76k}xGКmoug5
+jaw*<,PCyE[}G@fut{u_n:]L뤈-~݋4jbP&Gʖ9qA6!^! M캥M͞>`Eki΃(RDda8ow7JK~@
+CEZ[#ɳ nfQ5-
+/ :p}yŽ@H3 ~xUmQDɡ%#\MFgcMX3즥25tn_=AM1-
+nV9CVim{`q _n\`'l`H-s `XHC^g7F8|ݖ͌x ƾ_h%}ioӇ*)v6̾:v{1;4P(J@%x<!78b<5.><
+9P@O L 4 ;y ]vl|i=P$|soܨTռ]IWɹ` =-R) ,N@2~hRuP:\o;f2;YGQ. -[}α9VzΆL:Rb6&Md!U ꡲks]5h&r,{KvzC0ƎK!7Zk%@@ش ܁wMVa H]ryIR=, 6) wpXoKU ›??Q#OJ.=`<7CxF~Z#P8 <,=|JuܷWL~>TwUV|+GdbWTO\H%~^qG+}&~IK25?0' d s6!lu/ܪ4sSגʪlo5J[̫*UpP3(k"iuMg8‹P]MZ6 ߼M藨"e7&F?~b{hqZü1?C.N\{$',\ L}_pg3Yv1
+%tNX=hC,fv mzB9Xpj-}*
+ TWOk-A!]I֙
+nHBkΗU=I.I7ѷsl?xyU"ha17^aE=is68Ʒq r虏|ZNm1()+uF_²rG&4Xq@c=dulNⷺq}Q{NdN
+O9ޛe,#uvX3]v=Zv7R-+xv>D*M\6жX0@sBzGtO@2ϙ QRf[\#E˔35mpk*,^PG
+&mUS3[yvx*ٔ+/}0͂h%VYn.o~I
+2@PCm7A ꂽ7=XP'C1_A.Y9Il]<NE.ѓw ܁J;ًkyC2)rڮeX +3XL0+wG)m36q7M^tNmj1_6I$;RHCM;ԠgecKEMMV4J
+P
+iҶ gm,x} 0J
+AA-eQ%mcs/&xb䓿r`RG.'6Ej+ip.OK0!<'XrY1c] Mk^ܚۻ<a9B>HX6"}ҷ?IӡS癶JFqWې.:h֝!p9;d,RzFom RR%zfԷW
+XVJHc_Ta8<wizؑ%/U$cHtEDGWbI/{Rmٽ?r;Ԣ'Xv{ ^+B/BJ
+b<3qۏ7'X̤stf
+LO-]TS/+ rdxڄfÙ!hQ! 5&:Ib*/4*!(m˩OK,x'V,KF[V?UD) Grk@qf0eD\=uzIhY,"`;Yy>=Y};)UH7?w@3"8H(S9^ <TcG ÚZ_7,[ .+g$\)8TJ8Bp(Uj4
+ DmpI0yK%Z<]E42@E7>e6FTnhƂ{wx?]r6&U|[ {]MP*Qf`kU5vEV{2'c #
+*)Jiu7b_xN #yy_x[yߘRrULO'wQBC&մ$?2
+hV=:ޡ#| W/x͟ه4t`}E:GQѮFG %r[}L_ #K: ^ t~K $SNY)>~ukϢ|Q95%a˳/?>I솨>AU**,L(^tUm˛@Z5yPnn$7mz϶eB(˜o
+vkHEQ.ێ#N7
+Me2;rG5|%FLM/zB.>0
+ 5H,w~G)ڼ6L&s7o<07[!i̴1H`&{K)54t P&ѻߡh,h*іh+p3VhP6F
+C݄4G[m R
+60h墤`\->$K,ᐖ{i c쯑T1¬u`Shi [9 R!t0n#ȥa
+1cL oH[} Occ;oJk<MLH=qu\K3jvpAFުW噌"Ɨtp{5kv_tۘz2 Hb6F'$5q0㺲/0$+~Qʇj|fg˜FdՍ0HwSUX{"j(F}g 7m"\&f.) a;x,C#m=aHD۔oY"T>CBYda*JP߰yȋ5W?NgG]KrʮVa0i"G eޙ#9S(iHL۠2E/><ЧWtT5.0s2,>!ՍQG0B7Hp/Zo+r\n`{5&Ī}giW[C4<rVk[olwǹ78vvuӻwmטuy/➡m/K%b;{RF(>'4/(^v
+8-6 3Qi;hZpaH߄%>{}da!`XnI;4>~E%;L>-r 7g֒qbG3D$J0+-ԟ2v[oݗȓÙLg`@`r%4Z.Gx tӌڤ;b_,x"f)./6N@t{{ʎ0Ld3I"EdDI|H>ce\;OzcT
+ڻp}*}
+.m`FM=4 t0l4FF?KF0W.Ie5KjZ2Q)ǁ ohOg*5C'蠆T{LkeZ- y/ FAt`nQbE#&GNut(_ΗX(0$b%؁CJѽ"xkzA 3'/3'Eߏ_h(ӷU|hA'W"?J4,SK\f8ͬF$.v1Ӻ_ <Tc-HoO6;
+*D%&iLk((T%O<8:a˰J]ؓf4(_;-! vjʗ̀~!goM!"]܏ԫ6!P1 :Hb[l%,ŧ
+)d$K?szf%"\aByG8Pr<U1(t ZnD@=>%tjbi-}[vRXb|V8b';i!MFQM!@gD_A?PJ>_>k\x#ٗX3WXEDL+ixOs[龙#娞"$?|AbG.e
+4@J'e矰41ry[gzACycAFojF{w\+,&Fv$xTm Er]ԯ6.&{&;wiH
+ZȲǼ
+Q[~]x<1\e\^l?ըi?5|JX 4T}~0* _xnn SZѵ(`_
+endstream
+endobj
+11705 0 obj
+<< /Type /FontDescriptor /FontName /IATCRU+LMRomanSlant10-Regular /Flags 4 /FontBBox [ -457 -290 1446 1127 ] /Ascent 689 /CapHeight 689 /Descent -194 /ItalicAngle -9 /StemV 89 /XHeight 431 /CharSet( /a /c /e /equal /f /hyphen /i /j /k /l /m /n /o /p /parenleft /parenright /s /t /u /v /x /y) /FontFile 11706 0 R >>
+endobj
+11708 0 obj
+<< /Length1 2065 /Length2 17708 /Length3 0 /Filter /FlateDecode /Length 18980 >>
+stream
+xڴeTʶ5h !84];[>s tϥVͪ2!PƉ #l`H4u2p
++;:eU Z
+̇ldm?cCWzB2
+t0
+NFfolLIqc1CF6@GG
+<aAbEw~#I_r|\o xl9Õ4sW$Ivyt:\s`ꀚ h"^_~7go1` 'Gi۾E˴sJM2:H5O|BxGf[%}x-ۚ\t[=HKvDmڧgr+SwdkC߳ 0oj>z˦|cMKk\ /2j(::3" ӲNTz4) o5~DuàZ I-#ilBFU*C s %? yi l)y4^о$=>f^xtanv~ǠZ02Is_k=s/*yyϲw1[CE_ʒf-ouLڵu*Qp+r0(%[m`Tp뚮v0&yUaG&t؈ PD`>t9tq?MW\1s})L}`VUH%(SH֌)ZFsǕV=X5:Ŝ:Y*M.GcF. /do:K~dۀ2?jW=3ewhWUf(}
+̯ʾ%:ղ3vݻ
+˜f
+Bl0r z8~9\wP(i3tAcg)etOhcPvxNXKo+XaL<.SsQ͠FHAAs0Y;zFteH;5v*nY}q!ٹ\v-Wޛ$c)YZ* KY1BaR6 f
+H\Aƃl!Go~c03_:
+_y8Š= [to<9]Y s5C&UlYh簠+{>39nt2RڡmMD
+4u"aւbKs-MxTS?[{R܁YRBlJ qN ,C޸_2ʩw[=*/ (\M9L%L]&yHY a\xsZ]0.o@۸@= ½.\G#Y͎zj;p)od/HNyJpU!ZϦ2݄<'|YEs}fx]CRsdg]۬s Wr1}LK7(#6I1,q]Ġƶe`p+}`C.qw S
+ݼԗ;p"u;1׻ffC-j+ǹ)#BH>bՠð[gzzHʍC´q\QS0Jw/ujpOp0M=צ]@"o`.TvaFqGzq`gm5f/I>A`ٝJ\#O1hMK|BVscr  B] WDG&@e}9:CU}߅սO޵mhO,S#M b% ;}fy[ȕX5Z`Xw&|'"V́I\.g3_̬j6x p;ؾ P<Mݒ6ڕztrw8a_t; 1&3Aj
+(%ލ8uIe">S]G%MI,ʮ,[L<OO$ ؟I%V| n2Uq[t1
+ ؔ .ޕLb^9(ILQgTAN&5_b>mI%)Dkn"^Lwp:W\qb+"Bih0Qqg/IcqÂ߷kXڗrRTRw\hxg07g~c=`I2u<¯]3 \n
+T[~@WEk"(d?"Un,$ʯv#T᧳T>"$R\13~+ )c&R<OLyǑ5&}oe$I
+3$CMW3U!lk8{W0vbc.CM{2Sd]6 2/=\9{whl4M)1cZIb.QaaC&U;vi1ҕnk$x>0rx9!2K<`SI iOܢֲ-ބ8ӭARw{g C{`w{ٻ=a41D߷(^C[>Ğbe!cw d*rği׀?t:ٞS_ z@ݵxRބs%jwqL̘:?;yC-Ђ\~׹X.C *_E\=#).<$:i8JN[,)!Eu4cQJB"U5x巉Dd<j']AgilEk_r[O 4^|U?ZM ] 3X
+@I ḣDYvJk<=qw`ŦxjQ ?cOI{%3lWECܔ:ͷy&%1eŠޝvP_Co>0uSkӤ~}EZ^?S*Yz$jy#r^!&v$P>yĴLA
+3wbUT#W85S;OEؚjrYEq'fG?9Ԩ﬎ 㵅RQK9NwdM_gXL1.<$5A.OLgcΎXM9'~h p9LsKqtIj^.|BPYn2Dꡁ`p?2{](rKkEܱ@F6 xfZօ913z #łb7,\ǸWt 3bB.IU01(<b 15܏K ((I2.PΆd*I7JT u.v
+ -Ȇ Y-w+,rczsye^8PQ<*؉Zbj
+R]/{i'{pKلĄ~E v^W-8g)#ij[= ϳJk<N:>SIfp+B-RC[/7s177$}?Wbb3ݽir7zBLZPR1مn 3ϣ3jպ['9PFc,հRJ|KCjz)G"bAXkMTbHg^I8 s
+PhCޖE3grGV{F{82TɅ)HNF:2ޔ7.q5\h9ts*RuqKDj*k/Kơqew"=B:~ڏ}=#_+ʕ?$%7e4t3KǩR̀_͹/EԏMBXyHjoVo*3?MhPҘVF!wX B~ouBr%wnΝ3/+ݏ$؂ަhf%6cMI~4mJ?*cO M{}uzꋣ" a^Max)Xh(<W@^.2j>ʈϰ
+XpqXP
+qI
+E~|ΚekOق
+_#%窧tR ^?DˏSSN
+(;F?YBq\\(>Iwb,bteխcW/eL]%!Nwm54fM3ϋhCwZofX0 0
+Q|sFK#M̰p R{^G ^pG @MN^E;]殍Dox LKygh08#"?}UӺ񸅏
+46i3]sAIn15*1Hm8gt"|}r/.#~Yd}0ͥ'(h!<j.: 7:1Yt fQDϞ*ww,lM w {>aus0_l{%m*ĩ{~E;{R|Hi3A2coS}YX;A}xYakyJ220_ Xƴ]hmxRasUYԹsDҮ2ؠ:uh U̯)hMܫd^q 8S4@/0΂[&|ݩcU4mqܞQHEљTUThꅂxzf:I@|عW:'/}hZX?
+f7g~ˇ6 O/$uKhf=Sޟ6{{o  qH {D} v er ,I#+l_|*+whK2Ago>[kl"vaXvoi}wޱ\Rp2ujHYR_@Ϊm*_y0]
+Xc7g㧔?JŝYD2 $Q2uH U~NƖ4fH,s]H?..R<(U!F}N .yѕi\l k3VT֪*)xA]岸ĥzgIFȴO ܁u'̺O݄v"}hXv׌zo.I'C#b%Z _EŰ3/M1&X_7Nvra.gg=ljQa "'b 2<#ʤ_ַjlܟO4Q֫5ƌu,W덡`yF6:\,m~\Ln}z=6퐦ȭUE|;HҼӗ=tGPhf0dQ|GRpƧ>s=R"ۂS8ôEk#[P~qļۊ)ad OX S/l/+EcÉE ]9'.Hg.~H8vCҧ`rOHM"kίE}=kҫ!f
+c3w ť]Y8&d g.iK(5!fU'M*OsV6Ur$ęrA5 Ȑ7tKʡ۲_K9mj&F(_ i{uJGYJGN4ÙaS6T%X:b(*^}j6~kSR/.GϢuq_B| HψmOExP(I[ݺW~PcUuAt1H Wf5dꨳS UD=&LDBkf1~_QzSȐr;
+_*
+"9"uiH6 1 5bf޹r)UV 3}Pd[ m"qۦ]&hy@ Aޯq])-Թ&V1)KEWjϤײQՖKwCtu_*XfWNFi%VHYKK9#qy:(. D:!]Мw/|K"( zVoO'W|qtm
+i]Srxm>h@s * ҋcuq@d+ayހkHr6qێq\q4:.$˺=I!VG!<ph!ZHQhpiLu_٬qF3Sja%v-nP#"[a84QV1ݩ*D.._b^GAb"2N("6={.>Kk/|f%n>WfcYh'!_[n8ę;x~_ ŢG^*Z, pWSd&3͈{ZYGWi 
+-+oG ߽2B:Gw45R KnfQrki PY)cw6&1[fEpQ4WôLM:!SJY3O#i_HIcscIŨ/9e̢ʮ*Giun+#쩴!lxumd~!{tM"me[^K:4t7tN5}Wٲ 9 {7N!/C#rHE3FO`U_{ȔL*B/ὙqC!.#YJVEDZXȵBsr{_:[ŰqD2K?E{B`V3斷dV΍Y'ܞTQy E`<ԭ5e}3tr,OxߍA50;)TO_s?l7 XkK?\ C(u}ж'OQv!ă$iױ-}$u!v;U¥8VAc# .%Y.Ckjwveٷw, WqZ+!"VQ&Vw2吱n(
+3Gw
+-k OVarEzXg ݰVG?[tCĹ3\ˈ}2
+ ?łqcrxZEe9lf] gRGOfxE%B2έ~0yVI%z%.>ZP_4=0Rc<T\-M
+B=NqXYr~Mt m]@[M;,;(۞>p4A}`] tgJ\9Sk1 7U\.v9I8dz6Y0pe6t(Q}M*g<"Yci\tѩ#BBG x9)AWT炝]%qRla rH@Ĩo!q9)<ݲ:9V|{
+Lcgdx73B 9yKחk\&EU,W6EXYl3w{}5;:.9o|IZlͰ >$quq {3I +as>- ['-IΛiQhKfӧ9 _/O4
+
+
+Mg|@f*oũnx(TQ%3J_;x̔Mߎ9VWlW`L:K^Q*<cCe).ESK;A~kpBk9a#TIs&Gi031!ѣ8p"{ [:e&~7+ -9|cvD\"Zx=y&f5c:6kib>rz2S=_0YRi
+|qb%ʲNYL`[ExZ46x,uuz!naH/1_8}ݹ>w^M O8u4$v)Bjav'C'ǖ;S n|?lSg"i0, c?}A90XUɃ):ԓu“M -_-ƭ |b)Y7O4Qp-KŐ- #}eaվ!0af;5m
++p;HMPl/}5Xr-tk!lɓІ/Zއ3 q)9"M^֎wfvRx.Is/5{eC7蝟 ))ܴ"1jǚu|6}"h-#䵛ֲ%?c0`*S
+`/iVT\,y$ߟD~2]FǏl|YUĴOM曠$Ë͗x^
+fy$T#/5 -Hu [HNRvc :j)w \VA&dRѐNIgt]> Ag<+xhg6Ld+0d],SX wYBƦQY6}cHez@X1t
+s߅\Z+Ca޷ XW^3]QU|. {ml+jG%x_eG>ӳp-= CR@tZ7wkcCM.I|%Ly`xj#;zag$+[v-ٗoI2O
+e`;U\Ƅ( =eAFoP;rhYzl}l!~Tpro@2|D׿m]F;КR' pH}ٗ.'<Rb25S5@CBjkkC{EW_"gSz`)L'X+?y4OsQJpiA!f k~aSo)zfWC54HϫM"NASP)4sfR=ZyéyDcFXD~Zcx Y,1Lg}DQd!$@ÓU!fbm{NRzW!И%;9
+P?,sĩ}Z.](4 M+
+10کG՟0FNbZ'CV}12ٹBJ?P!SDܞsь33
+ w=z="׍Eqt> %ʆ,;KH5x?nhBZxMfVRf7iމ6\t">őB1w%P.rΊ Z'4DETBbm;FHq#Y\@UJ% ~ CHHWW34's~>5Q0]Ӽӕ^UXV#فMDJr_ێ/PYY{^lCW[b}\ShJԞ2hE}1"}̒}/|$s\Feog.E@0bן'&85Uݡiq&$n,c;aTÞ2
+z|'k@΋+V+>hN
+;?%^Kx+)=R@N<5Zњl|1il>r2XnL%By_uyd&eI߫(0#u7yVrcd2 ݹGCK,_ۅрŊn<.Zg]ݥF B/I+ZLKi&G4]va$t=J |I鈫axn2#? P(v*wmRJv/B.͎4A]4"~{ȁv c᯿7qb9 1$I05`̧F$ٶWܗZ0j;3XM
+`X79> 8r- "6YX8vG|[X5{JrW5J7|bσ
+Dw:V7F10$PHZܚ}qiGd:.2Ҕ2힂A!Dd\NjBF$ﻛBB;7P43:YȒW7eF9_eʩ\3hd(w
+ O#|'㻻iע`-asuZ9K2iЇD|ޥRC'9c*$"7XДDgl/uDqH˒e908<1U kx&BӴVOTR侴 Ӝ<aWi)րȶOL'dr9#;p"WH %o ]tH4I4efŃ$%ʨ9<wZ{}lga'mVEf;x5_b[O3xNǟ9WJDC:M`WqR"Бe 'L;"sp
+mI2ܴ [{E'32O5GbzQCE Ĥ_2Vp!YuZݡŎm<rrlAUK&Up" .ّfW+=14YȎd5.@-[`50z~宸Nԓarug+lNkhP'⏵쁆)um Z11-}B{sWvk^Eᕽv
+ Z8j.GA<MĖy`JӋpP Yrj#la MA-g{g- ̋*oE[6s$_.ZMqX(Tה
+b @_4׀nh|h{ <ߔH}^B/Xi|IGQO~^&>\er+&Wž˪i!Y2(yG5ҾErm\XdӅpdh/Sw&qmV5tQs(ǥ
+<{JBo5L?Vl7(L^O
+f֏8a$) a8MVɡb#:?2Es`yPU;X14i2Lj8}z U샭6ѫK}x#7Hٗrʛ Ňu;Zх v# ~S 7mKۺ&N_(+GuuY
+nB
+R}ia.^i,ԨLU/Wϻlei9,
+_P&T9q o/ֶa$
++kIU۩QXʧ)IW-
+4
+YV]':qfo݄G(
+i%%bL Ekʗ1G#>\ ¢! rlS@!j8I?O`ōǬ4d'k{>b$
+Rz;pBg5Ϣ1`é%S +DƥnQIgS${#ш$2[#caQ6&F[ߝ oTg>~PW;2
+?FHN?E/)#􈱗ŵQN;\}jk>H-44Bs1 pg
+ٞTJ0[*"`X ` X_ Ti2C{5R}d [VAߦK.)DfQC~GjS-_Dj^@oc]H!1;;1"c%|,':m `\
+ uxT!!d6ߪH~d h;7zcJ(~RP!uq%IT'RImTNj/ ^ =䅷vS5髈L 0Iorx%”õ
+
+󹬞"Upwq@Ow}XL!cu(w)kO5!9a=sb k(j?P,EƝ{n> ՅcKN%U#$QAK>ICQU7yѸ!۶%0]zqyoRLhc=.2hEeC8"NqfAΗ-5T)-[
+endstream
+endobj
+11707 0 obj
+<< /Type /FontDescriptor /FontName /DXGFLV+LMSans10-Regular /Flags 4 /FontBBox [ -420 -309 1431 1154 ] /Ascent 694 /CapHeight 694 /Descent -194 /ItalicAngle 0 /StemV 78 /XHeight 444 /CharSet( /a /b /c /d /e /f /ff /fl /four /g /h /hyphen /i /k /l /m /n /o /one /p /r /s /t /three /two /u /v /w /x /y) /FontFile 11708 0 R >>
+endobj
+11710 0 obj
+<< /Length1 1754 /Length2 13064 /Length3 0 /Filter /FlateDecode /Length 14154 >>
+stream
+xڵzeT۶6Npwwŋ$+.-.šPh#FFf\zJFQdY
+
+ȮPy*
+xU ڿ +@UΫp9-)-wr\
+'w?P:Ƀ6:Boc@t[[sb߽S89Ζ`s0` bA @?Ln[K^Wfo;f ql}ٖ gw;w
+
+
+rs2wo`+_/l|ݔT񕷯gݟ WJZ:8_a_.CEM_EZp/79gK `fJn>>/+^1 
+
+Et__;ݖF?辋|H6ԶZY:Ղ㵄EI4 ~Kxo'yά(`\X7C|c~^MzGq\xFŏ$D&<\t(4 @5zV@ZvAe 1qW(Yn=3⯂o;X؈]ָ1!Ѧc%
+{gf”rsJE{қTl<QX}/_hcҭ&YY Qˮw?'Glp "B>OτA(f
+lJtfgmYQ;Ǎk߅Gُٗ&11m\eݷ~q:\ /Z+''n#:u| ,4b
+ChdѱDsފ Q@ l A ǩiY/gGbBVu]dcv/uV:&t,#QC<f)jV٩a14S/<'5LǕlyl7R/-
+aYg)`e˧
+є+*&W.=(ߞ-"/.vztu}8o>f}G
+omXߠ:ë[j," d uw(?g'`O*3˹3W
+6kcHIdo#SSrꖅ|GNP]zRS1cࣗ4iH>Adtpj.4o\EI_!h jJ7dtů]JŢ0g\
+2E`gA0*!gooe1m܄>oZs1;4W1!]oxDBR݉~Br4/Miw Q0BEܭt*ۓsYi
+H khriDٛ]\p!\z/St70#28bf5vzP VkHm~YB!2ª7a|դf"ӲGroeSEXG@NnKX6K 1i) !~6ԛhK#fz<`wCGe3 ^O/V]= YM8*k@,YU
+5u(s֓;CA^&i t1SJ Sk̳&>Nz\*y|PII:D+*9GÎPȵ^w,F6d:J<JyعknQI#vQw@Y4_@̿LgRg c.n>cmߟ'@:<;u)4&{\[7yXGQz"w`TzkѢ=-+V|uӷeѲ`'Vez.mlgR+ha[kƿ9Į!Ys,vϦr[*$ϫ=uՂAC^gHiS+܌|`@ѐ 2*B #G6HDuXURlV~&ZLW݆jCC?ؑp&:%mIg݀TIQB2ڤJxec03`y4PSut#e\1{$뚘w@C^FoAjXY^Y^Vܲai=]^6?O[VqZi@V&pcv;K^՜m>.zG"ƨO{]]%mޔ<(5.y Ս ^c2(̋O
+LOt
+qٽiSxl1QԷ{g.ۼfYǓ4:@ ,-3{]F찪 FmBb24>NI)3xhh]u$ˇźX?yϊ=,4|{ +1 N7.+ ^:QsCیm*GNL.;!ߙ:[/`
+p`E)Wem5aҊse{҈aFo͗{RK4 ]nV<K^Awa(f#%uGr&NJHﺸ[ebBYY]RN|&
+@Ċ\PiUpHɟv`l͕H6t8^W Vm яrhH6o0ǃZ(|ؠ/vokbrL8Aõ6;)9n&8X>+†ˊмԔ`>?!7DŰC 3Wq魫58Z'g2 f<2% FR&ajSdb(*p<SѾ\cXF0! NI4=`I/{mfHӛkx!,E/JH\qza4 hG<qwk55BgŤ{]is*]xI4rN OtЭG$њc)%^쌓([;>fr)wd*Jx#aJo}_1m\5ٌlLOq~2?.LDBpX^d$&"qﭾ*W*-CRQ`*+CW0xrhcWyBn;B
+=)oNA~rs‘_u([as.*
+4#+%=cdM͇('d.SëcF1
+ۤΨX]4{`Tq{6hyr}UV櫇 tċ“sϥOhX+}blv-4uqyf17>8s;1S}@{_ؾLKR~=1Tl
+%寖$ҷ
+ہ=51wZ > 5 I@Le>m
+.=γ`c iϮp7S +o(8"Ԧ~t`9"B p!n)}t&Qk(YB3d
+*-JɂkmS 39x
+{jy%S|o:zozF|Q{6{ofyuvVZt*.hy3nBf 9pL0b’"TwF`Dė:{f׽37V-ލ^'A,Ya̤˿=Pb1=޷d 3|gPgZyB-
+rOU3䳔"fk/u;Vi'rbLo7̬.:U,*a^X\s.aձyƤָ`9T5+DE
+؎(e
+ 1l%dL끪y W֬jN-_~J0YPLP"CKx/ȵ9҃}4ݷuRἭEG5ۆyGзBN`(<01(҃yFMh=
+O!UES}Q
+R Pv4լ?j`7T@K@H=4H/7$b詻7x 6 2j;9vdr\'qNb}t{T? l#sDh m|B@"D/L+#'`s<IuG":cRݵ.xg`L$MEdoÏ eY&]b'jr''TAb'Et5ķ.n8{ EyyV9eLGc NdcEVGtK$7]<0\}F îu(\xز$= Fs٩fSD8S f6%ʵ K !q<MMpZU5qE"UUi@Sn)Z,5<Wu%L^s| kLжȌFpT.;{c?\DNv)fw Ts* "U _5IH[_
+3iOsI"XL
+wprFD'U%?
+(cSwg8DͮzSLX|L㳫ͱU7.gh_F9 Ob olpK14I )F41E p )$\/Ǐa%.? 2wxWC*猝
+#
+O+ iIihG&EyS2A
+6T S^Q0;{i#\JgA"K##;vkp
+]/X7qLi_4A$gc>D'7.~M2¢OjXїͽ=M?󒑰Dz(o>s K nNp1Cw'S{lZl#|?R'9{ ۶A#=A퉒w[e孙ZOm)rv92AŘ`r3!`
+Eblrq:5*A{y)c,V|gŠH9dD)g<+B)T_+B!˰+
+wiqsSuSBU_UCA Eˏv6ݎ*Rdt^#
++
+Vuu
+& #ۛ ֩!D;}RhQ@Q>[>Qjƿ<Nz\‰`-scZrKT0
+N:pD& [M[sHOAQQBv֘Հ V}"]X\fHy \0]ҩ
+ e:d7Tyk fCt,:{P6)S}X[fC. G;hh=2
+Nv0qthDBAںWaEfz{2xu$}+AE''U=Ebin#(GZɒ^'+&(T-2jJ4`m;Z8#F
+T6WAv=T3\ OO,eI
+,a|I uFOX`eN!bo>c>ts{]GTqG!@@_noI|pni'&` Jew.%e:ݽ:rCar1RfuS4dImh__j, kg=}?¸xϖ
+\$(Հ\ sZdkЄv>ݴ &K(-^ 髙B1?VZ>&DLP/4+_f¦v#p4_PQ~Grj7JY1bZXhu;̶Z]E ~k%TZmI2V=:h6wd;0\,#PDTHBg|ܝ6d+r
+.껻Y8F ׺7<GB;7cZ;Q^ecw6(N\1+SȬ!Ac%U_vyܕ
+L|*Axw3Rk2KX)<qGNa({rG#򿼟QC.}`0O $jZ붭Fh>d,h}ǂVrr+ bZGf?f ͆v9>ڹRGl5ZR쥘|^$.0: GdpaRc88P^h.`0'(^!=CsxygF0IF|r7f4Um-ۋh.Բ>؍oI$b/8xE6饪s67r-+?qЙZȧq}S+<E@!YYۡ8x{ݖRznKia䥇a
+)92u?qՏ߱ƕ/m7  f:N?w4›+<o
+<}ʤ}PwnՊxZǀf\1]e!5nV*98j><$Z;Q(5\Wd{n7QrAADX7nE2=U]G5+;ror_bfML<c f5O_~bgaexqYx_V̓V&)(h䲣pO־=Tv6R<uGHQ^ bA~|Aoq==z'(lţg#/
+endstream
+endobj
+11709 0 obj
+<< /Type /FontDescriptor /FontName /MOYMBT+LMSans17-Regular /Flags 4 /FontBBox [ -395 -305 1355 1159 ] /Ascent 705 /CapHeight 705 /Descent -195 /ItalicAngle 0 /StemV 76 /XHeight 430 /CharSet( /a /c /e /i /m /n /r /t /x) /FontFile 11710 0 R >>
+endobj
+11712 0 obj
+<< /Length1 1918 /Length2 13058 /Length3 0 /Filter /FlateDecode /Length 14258 >>
+stream
+xڵxeT˶-N]6X#AKp !@ܳy Xs٬YtTl`K)PQնpv`z8Z99yP݀YC
+w%!9%`!2p|獶ӗ֚z캡9+ULGJE<s9
+Yu'=ewbַE~j&{>QKz%;6KߛYw2M쾪XOm`X {OVBE}dGc*A{"Y46%3bV[9zW`!t}5iGb /'qSY/T< Wzq;aV͝ftGT??˴%DmPժ#H/ x^sLn1[B^:5wŲdj@8PfWqħj2G@.]Z̗:X)9qb,ҥ_9y33༛&g$H4)C .giQ* ]+śFꭶ&gK]NvLۣxs?+ArlgƔؕ{`;~c 5HݎI:ʆ!܁_q  9 "͗c>O|֐^R9C톧FSI1GO(6Ⴤ3Hyb+뱨;H٘S/Us.Ek &0cNSX~Gl*[`Ģkati,&M&.LmN aeA}u
+ ߃6g)_(Ҡ@Џ]/?r:YӝVBѩ (9,ksM?szg,GSU.I틏d,nFd,AdåJC?;%hm@A~3 æϏun:& ۞EWBL"k׍Due(6}ޯ^F(IH i+TC#: tW Jܐ8LށPizr>=o0RG>Mphux>^`wXLLDRi=89$f8LL0
+K6=tNqC$ʏDC|. 4 pbq<.3(*w
+vʛJ|O=,d[7pFZ;∂lq!-/N 5U˘KaM
+%$r0H(_|-|86%}oz\tVQ".' N%AБgG;vslS:;HAOAʴX'&]
+C >p`r{<ޚCJ}4i2/8 
+%^6"{a4L.bT=',=`_< ~gu{" U~Ny <׆>ӓ2 Dۥxo\ r>W@V lڊfJ/HXo=uLm7{1 Sc~{ #(I}΄ɯf`B[hDX1JExwN =0\v6yw3?~Oh979 ;b) yj#$%ضpɔwwԊAق
+F'ɕv uI#ص^3Oγ+[l 7"POLjƉ ]i[vjInU:1Ծ,DXl2a;"'|݂g[EkHG}9<ja?κ|, 1e5t- %g^c7o.a3WL oZ
+o 'R[
+3\*1J!"L5ᮣ)4&|BEYN'0cb޶s_̆;ƕ-ke ~ ,Ef,TvN`Ҽ?߅zl*.G"\K6Bo <͠|=+BD\j76 Ԓن/YUd}M'l{(Ѷ<£YӢ}beg" Knr
+zYL^w^A~UBluaE[h%sxӭuѼF`#W;O$"ޔ᝗ƺ˜nŬv
+ѾA/SmP5y;d%[+uʧfJ%GF2GSL$vţiz6
+rqW`wjQ#1/yZiuqW "@؂%i)F+ޖ.)ݮXQ䒾T_\hr;C,ͽ4<~<ۻ&58jW+(sl\u^[yҴt@r]*wlL6?tK]ˁ 'C6_W%UpH7yoZYɓ/09<.}dܢwb^:Ǔjv]Ąȁ}<0,T\˳Va dZEP>U<l K4FL3F08*3LkT2|T["/a$])#C~xs4v9FC7ow:%'eZJLt>(P~=D'M,I
+EI(H' %Pqg B_X&,)2Heыa$! IY'Qv?؅wMvdCA< &ڦhS
++c{4vVyglxdRaxRJ9L5gh6I#}֛~Fz/lBE˓>}\< 'W׭ 3O$Ss+vE?)I{B3-L%d|!ܒ-ǩ>mf[zJHz}l<w]`]үE=^NQ"g9.߁}ve
+
+rzD1ȇ.!b.cPlTNdbֱ{Dhcwɑ_DjT; #mP_S(o49m-^- 9[
+[ZQxk]$`־^!%RӤ7[2ћi6ُ^6>`9}Zd,o!rwa×|ۑ] &UotNs9 5 XFJ`͎YuLO?b7%K'~R:ibHI<˱ 6y{<Ŭٻ OI]МpFܜ)ON' Ӟ!p%)7K'j8H"9O-Us97Kєϵ `:@$kӖ#&oVuy-u~
+t9[iO:.<'kޔ?P'sOQUxTV@#S{/&zx5𑵳~ǹsյ%5&g^M`z7` :Q/w 5GdsgCWwN ͤV_w۽FIz<p'mV !a]ȜP$CZp^lgz3כ3۩?ge~$:ݝiÄ_| <kcRʛ1zyD[F1mf'K'{>!65%QPG1ǻf~vvc ]ى`QrJ YDӻ[eUQhrm[bg6l
+ em#?L]~$\dsaWNWlQ)6 USR
+3\ҡn5$u['w*S(; v1X=̇k?d\c4rk;hYwW=P?;:U ĆN21gPbO ) CWӓ,)uV%$V)'U"mQۏ1fljV;Ήz
+tw?>[\cls?O{
+ݓ½Sk6cb[:bx(IHxN ں*Ba`xZ]JB/8JhzzK*_^[tW Wki`"i{A9p3umCdڵ5 Ze螻4
+2*ȑF
+*roJ~:u+杖S=1oܠ8fy芙!`\{ԒJGK=0Sh:.q_2\sv'H-}p]OI<wW Fr125]YD_JtȰy*;fF+K#k ϳZPwnv7@bxi;
+p1?G#
+YO,vQ>%uOoIjca#iƻC 6e+%8l$<t~xQ8{"5.n16<3 -tbzK5іBPtfKu
+;R#+<,dߏݴ)1)gAQ 1g-&h?|I5p9>FYُwT@D[ aO^Me" V(2ST;ƙ S6])y:gS -,?5N(q'>GyJ"?Y u9:A1QI촂xZV1æҨ;MX.Y!+pOsɵY=QcLcDv)K~b fѭ
+3/zGis5S5n4ӫuܿU<G=+4,ʷ̨I.ƕXӶpXl!֮}xXA>F9J: Z@: "rQ=*QOl佄F'@S'rӮM܆aٙ5
+!#تPL^@I 
+m;aVr54̰YޓU>\tCHNCuu.UO%C fLE)7
+[;.1ws®›f'}#]\сo G oR{Zܶh0&u'R)\e4`MGO$ 0
+}RH|eu{ھgBio*!Thl5ƒ]اblX'WO=nf/1*2NUo]_ؓ}0mCփ4ݹF%gP\d""6!PSܑDkjix_~ݨ HImfNW
+CF74s 39ӥ/nl-n]61AMd}ŏx3Nw? m~5uhN6W)l)C(_υFH"q><Qx;HW[kve=B<H!r 3̤ⷘ^V*KթǗ1ҳl#ee{fcv^FwW}Y(dv-N-(kTsDFw/ZdGc]vb(KotE:fwkffC‡v!c,*fb5?u`I0O7CR_R۔%F\&߭s{ggШ#cJlf.t4\FkHi^
+x2SFl$y84LV
+Caxda[G.kB(g"w.@l
+k$5-Oz`¿1)j` +Ѭz?fCo(-vP@_U~l< g 25H
+%>Yi]!+^PhpmzΩL"pΑ*7M9 oss~KI{ ۺa,щqKL뀓yVa$>v+[2,|sS*­Щ\SIhBԐ­&z"Ru5ąKKc]A?6Y
+it=z-Iˍ IYP#2%kbߺ@0D9NxfoJ2/ =n';#˫$AM ):ۧ ew䁊D
+]ɯ6)tW3Ttvk/e[?4u
+o`Pbd)" a&TTfNݢVkcdYePӕD~͋ 4܀I )':;kvy4.QڋPQ=0oO~O4<: ߢ:͓/1\ϓSV eۣaӄ~"Q@Aǵ`_֥ǯD1w"LQ|
+"H,Cy+o>>uS{Dm`ﯾW5K\+tԡ)LZm|(p҄ ִuQ]d'%/?ÍB!}F,v*+,s0/R83OE~pF,ÄA$ɇ J".qnu.rNt; ioeR@ (P'B\;.&Y jᇯdѕ9j\ܖOEWP$>F] XFnv_1fhKH+yPICx<#}}D]4$!^jF2}JA? x+PKRj3!Tϯ-(;8;Q?wG6`uTGS|9,kǓ:4ctM7.3&:d7
+rqʴ҂_"DlԸ6]P3ҹ1`Px[#YW\N(i6'<~ kYnVpl{.Ps+KnQgD`{48k1d{| t["^9Яۻ l`ڕ<'v-yFkG>i3?Ä7YX1 E+ᤩ|}6hp~ X>FEN4k_;9!q~ߌfU?Ux\웺vIȣK#iCU<fƫ'w%0Gu`N^IR3n=}Qn=.Ch?fD
+endstream
+endobj
+11711 0 obj
+<< /Type /FontDescriptor /FontName /MMROMK+LMSans8-Regular /Flags 4 /FontBBox [ -446 -314 1510 1154 ] /Ascent 694 /CapHeight 694 /Descent -194 /ItalicAngle 0 /StemV 87 /XHeight 444 /CharSet( /a /c /e /eight /five /four /i /m /n /nine /one /r /seven /six /t /three /two /x /zero) /FontFile 11712 0 R >>
+endobj
+11714 0 obj
+<< /Length1 1748 /Length2 12258 /Length3 0 /Filter /FlateDecode /Length 13383 >>
+stream
+xڵuX[۶>\bHZܭkInťKqEkqѽ'O2|wcP3f i(&
+4
+@S#0KinpvtSC_&-š+36u玙B<^9v9
+:K 
+C,<
+{;üPG?[ `5[` `lo
+ "o/׬g"3ۿA/Yi7pQ29ٞ~G8͓ `ykvnn5Lk
+w_
+{윐N)Dc`$Ou<-n1NYc rEP%Ro^vTz/[eb JJI VE(%#_)Ic?nSD(/4_e|e|;F ',c},.iϿ;蝰`zZ5ʒz<% s,),C_KC[2<SaW3U1p
+?C{dE<|"t}e|̆
+Ŷ;_
+ԏ]- n4_/r;Y3&'A. ?0Ww5(D0o՝PϕʜʟJ2r4;U|%_2ffe`bt./0/kVȾq< l`w q*~3eDF<c#+ ]k/Itߦ/o)B~p+pѨkN- /=@tRKofUY\eQ7j=36Nhgn~u۟E~wU~]`,\.jLW83m1MAّ)B~\qDqtE"V}ˍgT'ȕj(s,*h h4]< xU.N߰#%+9tZB>֣ȕu̗KJԚ M31jZ42EO1BKq37h%hklCUќ1:xHuǚXw#^FۯZM!RT&6h84rq&taTE'$@tOlN޳odt`!>8>1Ow&֞
+%ww;|_=4]P?<b\`x b~ԫq)In]GR)+fu2s<1R{`^ ~>M @zM R8PM JJ':65"cΦe.6D]<ݲVjv_/(9^@vLԂX[xCgS7XZ c8ʯKoJN\#Iy)eX<DD"'n!:x{/|Q"\Wܳ™F$6zP'޶SYY9쟫96W.m¸1=c%E3v@je]WR}~P/&XmsŠY,6d-) l_u7ӺTt`1rvAW{W诮F"!gVʽ{DGr-)ZaJOW 2P7_d;-ؕ/x9"4x>&a;Lf p~lMr5pHE~k]5qbJP~rE= AiJ"%C<bna~:,3~H+}۹y\ 2ߑ6G_.a9q}Q.;'])녩Ůtėq(c3
+ĝޛ׵M 4s5 س>]#vqtf[%;HHRPΰ+LFV3Aňy ;#ݴ6kӣGT>cq!k¹RLw<F\{g E&Wv_ {Ag5uS;bl[, sz
+ |ƾCR Iv|92=>fd!Y(qVeŃ͢{tczi~cs1^I`gޣ1ioMJ?\%kreH Ved2/u2q- !C&H9޸wF
+I]14ҫ1tDӥi[rX8Ͼ `R4f%YZL7lyT="%LcX^vQ'7?P*4Hrzt<~NPV{樰kwtc]()dl
+Sͻ
+ʀ%*zsQH}PBsK~qE;4V~ n2bj1!h\zL-aXI(PgX ZXw: cbc׫>&à;^D3&$D-<
+ƾp\7 [c70yGZ7
+)%TVx?1Z˝#X[{ #' .$5TGyFIDPv<`aPsү,9Qu ϟvjV} c=b,c8=:4oG)o;M:}xОrgW;D4(u/OR'6A4_^lI
+tU$'2X@s$q?'
+a)͙ /ώ4w:dMVE;y>RlOQ&E"(NRD7 E(JOPg#n~@w{(tiU2CT(盧JHϐ(AYe>+hNHv5qNc5{͇jOIms\}f.zr/?R^¤|YnO|ug6 A.f2ȶYE{ i艱eh5Xn٘oLΙ噝4BHsc%l/pY%?|lR9<ޅv?j9 'P FVRyp+T$_NDSk7ljV?-LbWðj^;l2l΋g;(Lp(U2suR~4荘a1D Lm3^2dO$\E(x`._YLagT6oնݕÛ[6dGn7j~-15IA{eꪡqÚLe؂C]@t+%E > /dNU-FsŹ'>AL#b=u!9"̰u_^Ҳ(%juyҒZ+q
+}b7.OlBQ"GO{4&ɮl_FkYZyaGHCAj KxR0Xfz˪:[E;QR&8i,1|!]$/tw\.bH"g{XC
+婏F*
+Da+^Tk+]ښ+-mHgW/w͌~;ę=+fisc jDnLaѩ*vj>33`ayW:M(k5<g3<SY+ӡmL`YV=9šD%N^tTd>1g+:ZjQzQW*.\c\tÁ֪cMk^24c|D0HUbs Dr.*G^"DRz`:<YЄ%1mෂRUO&
+pSqu
+]<ΥTOҞ`6'DqkWen{m*r‰GP{_|$kT8aHɼ$/(HCrlqV]
+rqOgf{wd;GAOצ;q !VNgs֝4c"*p|U\* дgxj&`{$hu򱏑wEEnN!AݴS/>^6TZC=$~ϰ{ηߗdT;=0OkIXMv:
+Ě#¦Vʑq ^td+zIuYiɾ1J,]hʒΛ(j[ v[
+ |T//j(i>R*z։R0IqANd) nX]Ẫy:f9XX }o&ߢ>!evCҌ;\+Z+<GSlZ{ R.Ӟ"t$1rG{_sJ/ޑ0}7df㑯/^JZNi赠&=z:Y,i@{ws݃VވϒMbja֏
+a[˖}@S檋_&=HͪFIWvMt
+ Ph0$h(ܥu(PSý?SϡD>EEORNSHw#G44X|] OҢf^d\I(AuE5Fq
+Fw;Q" N8[ EU:!V' u䵠U~xxz{oB 8\ae{Տ́;
+3p mn/@)ga|5 m0d
+3r
+ykEfDzF%?
+
+Ly
+j MJmWw
+Ք/*Q-a*+i[IrȮ{+H3Oc2E#}Ch| GHpZJ?gq\w&Y`kEl,3h](29i~?ڠGLv Wn^
+r4֦G^3yҶ^&U]޽_nϡАrH4R_FH2WC PA8xږ߅<ɣ8ÿkO++ӫLbQ㠦=q#xf4^SqA/V׍5I
+? (&F'Oup|/pUV"5pP'jqgs,ݐqH9Z=|њW}<Q{dyÌLC!T\:2,[5{vR$3(~f6fFA'*n=ڋ.jpPݮH&  J;cN1me |P=˰[ޓ1r( $S(;EޒhV˄$Ynջì
+kN-_6)9F93o;+b_QˈpJ*VBV2Wwv>TQ$-čUE7},SAϗdΦߜ+4gN$x ]ǖ#z<Hx*,Rr}T`E_pY7i !`/Ǒ|Bu(;6+jd½TrIqŞaN0o#eZz#+ġo Tcy 8WWQp}j%]ifpU8|sKQqeG':?9ܨiGxPB[eخLKh֤>0A~$pic?wt#=+sX >%"guKFQ57.9wOppm?ioŅ슨 ÷=ymc.ȅVyTS/j$leG䉒{*( /?=E%<3Aw.",lL2Cy3TrKC"-{E3ѳUVco|B].?~1;RF3k~K& \[TIܸ3Fp7}7cPR۔Y ñy1DlVEiHG #_iHAnދW }J2P$ڢu+>UT:YM4g BZt2 _/'gC?κz\)PQѦR$4-QTQޙӸ/Mv>,9sm
+[1 5U`-hT{N^[h
+y]݈lUNkSFJenl;E0s
+7g.p/O;Mf/@-0Ma(AӋտF!7LqS{r *9? Ip ,%ʩ)MДVLXβR]Jn51oQwq\'JV<h'u,N}
+`(k| "Okz9l63:sw{Zw6
+*_a.Ͻ &9Aa+Zlt})C-ߧ,vB WQ8
+endstream
+endobj
+11713 0 obj
+<< /Type /FontDescriptor /FontName /JJEEWR+LMSans9-Regular /Flags 4 /FontBBox [ -433 -313 1466 1155 ] /Ascent 694 /CapHeight 694 /Descent -194 /ItalicAngle 0 /StemV 96 /XHeight 444 /CharSet( /a /c /e /i /m /n /r /t /x) /FontFile 11714 0 R >>
+endobj
+11716 0 obj
+<< /Length1 1716 /Length2 1755 /Length3 0 /Filter /FlateDecode /Length 2818 >>
+stream
+xڵT{<TiM5[L(3cu4 ׉J3d1qɥ*V)]h)]mlWQU)VZSH۟g>gy~i&=11."b$BL3miAp\
+FqX䉍di'%F6P( X?>H %`BHG"8TYW.jdH#w!NIO BxgrQ#8dA4"Uqՙ! X H4J' *8|T:".&q}'%18S)_T:\Ax9Ci|p<bjLlJjhHéH4L()8
+נèwl_dQ'f4ǹYؿ9OiYx}C-gM@.<֝Z}#*϶8yJG&NlnXm|z ~P'?i{?,K憐҅ˇ}+u72ɡK&Tkx~bLUSK{L{`qdVAזNԩmj-xeد-1u?bV,`uI4spjˤ[ݶmkRԇ 扏s q2_k'sSrqe~oq"|qJ&ZBFu>ay3;OӮJ+tnjY]g*1(
+Ŀ*O{3+ԶuW=\~n&ыmb4CuGV |k__/M~SMn81Ѿ[+WKWMSD^$OoB3+} B f1ZNr|SwoK[f,-@$s 䣔F+bw7j 1aǽ< ,khpA%ZS
+'
+<Lt76n89,lѝ߮?l+_(I.X}GL &>&<EsBCKBK mQXǛ[uw&9
+sZxӮ1nJ5"5J-$ Wp}fREj7ϳYd!fTܶB[-YF7~8Vz+wҺ'պ
+\=!-3cK8A-ek7|T1MoOx:%vB\_> ğEwy~e fBr4ǎb6>Ԭ[kQ{joP/#mISwy6>˾ x vWI?f8Wf&HMgJùF.vugFү\YYTEh޿kXC}\?WzZ6vXY)qo6E~[qQYpu'嬳t2t36+Zgy{dB
+zwr ?QUYU<?n]:l*VK;srܐcLHmPd nީSLGṔuu&}.S].;X t;=*W|޷x;7hrfpuI'~gt_~{֥IΪm([}_yi/&4d.WxҚǻլ]ba{?(*0u-MI//^guW=uW ]^u8:6kwF쳛-<ΜHXP}M{4C[2"/׋m*ȕڅ3֖S~vvJ+Z-{%`=8+SV7v٣C9ɮd|ϓeMᠼ윃U=;]}/(A$΂.izKYw;{ ?d[sugnq8٥1\JMUss'/ZiW3K=h2\u.i ~O$s{4_Y]%w^ܢrK˔>wf8
+endstream
+endobj
+11715 0 obj
+<< /Type /FontDescriptor /FontName /FACRCI+LMMathSymbols10-Regular /Flags 4 /FontBBox [ -29 -960 1116 775 ] /Ascent 750 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 40 /XHeight 431 /CharSet( /asteriskmath /minus) /FontFile 11716 0 R >>
+endobj
+11718 0 obj
+<< /Length1 1689 /Length2 1347 /Length3 0 /Filter /FlateDecode /Length 2378 >>
+stream
+xڵTyTv5R
+U.hP"$Ņ!I$3qfbB)Bq؂lʩ*k+-Uں*ٓ3~.C5d /(cDSi1Pg1b
+|}|8\D8` `@ 4%@
+ L_2" 2f ܐD)"ҜH:=Jlv
+H :/@~
+dӥbEbL,f
+WClR4!*Q3CD0lMcw8!|Q2Y0a8@#( 6@n,rQy=D;oLJƬ=O #,gop$A4CwW@!f '6ih\B#RCcf녆GI@VbB#"M&'!pAZwy8ѲgA&k2%
+B? 090 Duub,՚e
+ckG<<[$[nt`1@Y(u/=_z;+ªqPî.ͼp9~KS|иEd]jw>ֿi=RseTEkܶŲnǯ; ~KmPi&&~~cƊ[ڃLȏ8ˎ%gg8]n˜g靃]$n#g}~hmjVN
+3EymR u\FZɊ5cb~wǍ$ՅnQ<:9/gT$Zdmwn~h~ɗ+~F<&=ytỦE gPiօ7(*kkcenHe[@U>8"ҍwsK瓢4[Ɩɳ:~e]du~Vy3 =?iw0K
+ArOc3wQ9eKf
+zFyrݮ,Б9vBG/Nr
+endstream
+endobj
+11717 0 obj
+<< /Type /FontDescriptor /FontName /DTFCKV+LMMathSymbols6-Regular /Flags 4 /FontBBox [ -4 -948 1329 786 ] /Ascent 750 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 52 /XHeight 431 /CharSet( /asteriskmath) /FontFile 11718 0 R >>
+endobj
+11720 0 obj
+<< /Length1 1684 /Length2 1579 /Length3 0 /Filter /FlateDecode /Length 2629 >>
+stream
+xڵT{\LvI1QYR6SS*SHjJhN3gf9g9S. B7eV&hlEmZTr۵L,9|_l՝^S4;bAcBj ,TJ 9(ffr pНp2r@0(fFa9p`8U`:4 6ᐂpèAaK"P5T|!R
+F)4l?B(@•
+̟? J#ePILAR3nFn
+D++@H`<3X>^LOh0Gh pttt!uDTJVPH<'lCbBc+@P<Rf"JCa| a8<-ZL'%q12LD!xQbP$ p1rE;> CTA` $]`aO#ɒZ>JT (N3s_RJ$wbD/_ĭI\
+I!
+/$'&yCLB 4;'aO9mBՄ'#B4.` q؁-qsCL`&*b!RQ;::!|>N
+4)~Y|AZIlQ οsi͘ecut{or];"Qj`Íjá'ft_]imsY-cE䥨)^w\!פ+spj0+)o﷌-~xs:gg IonN6YB/s~~-;CH;g|@xC_.qzW%L c3j7pe|Eփ%|ͧ5T_}mwt[IșG{۸?B/m$s]s5^,m9ӻRRlT$&fT䴝;zWU8}i[LB-Aϙ~ {av ˏ/nj!Ѵ*6EGWr19h%%6Zj1ik-VM8fPPܴJ4SczՐ!@o-gS%!ǞLz|aʤ5OnS} pm7MY<Iػø8?dAĖXvz$ 7K_᝺)[,J_9&R!I1YGP*7\Zfze<nj֐>j޹gP?<jmE-ouuGK)UNƲ^{1Cm.awj\6w٭c}E];wCAo7l[秓0{?w+ҚҘt?7.Dz䗴|X`>/_캐qPf§)~UG5<<ҧ<u갞/bE2w͙hRϫ*B*6][iX=3}C.޲`o9ؠs} oQY f:`
+endstream
+endobj
+11719 0 obj
+<< /Type /FontDescriptor /FontName /ANTVSN+LMMathSymbols8-Regular /Flags 4 /FontBBox [ -30 -955 1185 779 ] /Ascent 750 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 46 /XHeight 431 /CharSet( /minus) /FontFile 11720 0 R >>
+endobj
+11722 0 obj
+<< /Length1 3000 /Length2 31036 /Length3 0 /Filter /FlateDecode /Length 32693 >>
+stream
+xڴuX=L,SSrѰ.FCI{uwqb9| Ċ*B& #8։ +'13+͜ 
+5XؚX9
+8史 ?ۂC~7~+[m6v@?"6? <#V@^qNJ[kقE
+a.@*pQ? oJ@NS?
+aa"g>n:Lw-3ozj@G0͓ ,=+X=NV___z̓Fſ<
+"f5feB;w" >G8׵$+<b՝ `GףUIeW`y)
+˭%vg' ^MQ((!VNd@xmgX`Oatډ&jky%GT1bn2Qg[Uz9_&*-US]Mk]Mzׇ
+Y8GfT"C'Rw@K#Neܗg*q+n(sY&[ǢjM9bxȦE֨8?uELPLD;1c#s"4;kUZo%f Ϯ o?|Ƭ[#Њ*׫@P6fa@;y7^H.y?qTO
+_Q*6!"6:En
+hQjF6t[0qxIjH`O~ ?o_nHrG2Cj+gaq;:?+NV㚻L˅.,?=;F}ײs4qJ*^Ԗ$F~oE%ep[o3><%9(cC2"yqzv-x}2i6sh{Upj5 :qBJ%öЗ< ׄ b)b[^ 2|17ļkrx$s! 6Z\oMyόz)&D c*?ӻou<eC=h u'v&h;:| MITÎ|+qNEƩm &Գ~^`AQ.VW\]{pN>Y@d2N=|%` 
+hdᮖWPt+ZʫQ
+ti2D^yl4<gkoK;w
+SfP03#u2xP2,f䌇<Hrl #
+v-v%~q 5%>TZ썗L?\5M^=Daln!`
+K  
+??M>8i'7
+`lhcNAh5JW(6k0<]2`|Z5rGTꗒg澨{(>3J!S=U-6y?Ȭi\_&f9C5^IΥls8o-POo? ߸1!iO*Vho@="K£ Nh}`q=v!-| T8dШ\viII񃨹hDM"b fih&sjgmS4N24X4]|){m! TTSct#ӪXϳu!uI0RM(:)kC6^\IIcZf6pEMgHʪ"wj
+X ȉyVs$M^ørI} ROLy <]1WUW2̮ Wҕ l9z]ȓq`4:mc(kߪO|zuQlZW{ROSbmKAUZEs$h3t$LIwЌev:v{'BV߿33*0_toH;
+}\hLѽMqe?t;`_2Հ)h'(P.2Y L-6:mmeB#/w[>Tw>ܳ cMȥ~>N:dKlHxH?+D³BWv1K.ܴ6|Bv;${&#Djr{w~ P~dqy-1mpJRvޘĜfȝtiP7DC@JNK asyaͅ1'einwYMv\G kp|p!=j(hO>ֲ?7U|Zl3\Q&au<|P;i/BiZ $?]?+6\Q`mz&_SC)4)a\&'n?p>i*IJ"Wif"-eg+bT"
++׋#I@/9<xn5\#}v;"PNOAIP5{&(o1}+#Me/q:EwBeZ=
+eNc{ ^0P-M-H4yPh/Ҷzn3Hsz)p~SC{Nh)ajJUj1J˪<BEPO<J
+Hxl~~bllj(yQF-ZbIrܾ#Μa(>6o}p 8Ý)?i4#fVPK其-~I~R>` "ļJfUCqkdohZFxf-68MSR?[#gz(/ۃ5hÐ Ns@k:d*@=) gDU`rMy.*`G.}O܀r?(,7IE>C<8xF~K[QA_S߷o4ދ Ʀ{of3,(RvҲݔ>qٱ?ŵؔA4;Q2Z};![#5ˌgJ=,-SH^;cTS.Nʅ=+t}bSNG9W0[K
+n\U]xZ1!dF rAבh[>^"}-mo)~QvK0ޭ/1 *< [ԬἮZa1܎KO#⦀ux`$w云BO>*}{#l!҅7cbwktTh*4B9 3jbCzg Lv4GAʬcu|>{ZѸeyX%.OVP&QuJѢRG'cD&f{=;0(K:=k(
+eхMng']<g[>N !Y[>Ѕ~8J^ǎdф'Y3OK(oiW$#\M|18{Z8X_#45.>>)82zAx/.| Gi3Z1ég8t~0%SZZ.3T[-~P{K'k"ˢΤ[a[=Jv QOGhIZ+ ?5//4J3O"K2+"޿~N#+Dz*^EiEgw:}hbHzk tă)T^01j7IA2M*'W! L@{!f?hF"+y$ij.V>P(*~oԮGEc5.]FĢZQ=![R%PT7417/:6QsAv!l<"i_X6Ø筵rPojVA992 "!`!@,<JJ@ll/P)ǢV]\5FUB8jj5: 9mx* ry_}dC4i|Â'| ^Y
+=!|Op;-k5fHCW&kUfZTF|ɩ0Ny2שtHʘԚ쟮(Ju}%M})h_rV&5HPue UvcxMw w|CzZʹa~-y߳VTnM[y=']ia1L *LE^zu=GO/$⺓BLlVGA!|շ0NzKhQb*KX=MhQq`~^-1n4x[Pw W2v)䏼T,iS0%gziIj4&ʮ.FpnIhl<p/^zvabpc?+X ax,*
+10֩iO&(Vk:e#=0^YAoiOFpMPmnpIVaȌid ) b9(6w6:f ýqL\>:S9<& gT*}UzM&AK 6]'[]I:A]v{U<3^NN+Sg=kZSz&</@0{og=~(!rj?cX<yY+gڜt
+ ;Vc[ݓ8T ThDl" F,ZO8ٞٓt] G!et}+øYhP\V'<fr<\X J1従{4gf؝_.g?҉rW!vK5Udl}!u+\ 3*@JNhjaj?힓cl~謒ľ0^9G.aQ =vֳrsa'( +AݒjȀmԪuQȻo~ƣ/
+a-7l؂;PelҗfVM#$*W_dl^r5,ՉHjJ'D>܋8tث>SmSGl0X5\f1gHIiu3s'ӼkёtuR4NˎKC7Lo!zߊ:7
+~]jdF+a8 8wfGI]?
+d,*>տUf7x*]p=vOf?C,ӾaH [$&h'uìڏ#M +Us_x
+[|a8l7E}!߉:%@ch\L+toG*cjZ:w15Ae:r}@S:'}޹L|\t!W
+uzw&ݲoxưH>.M1GYH8J7YЉaT5)57ϬҲ_p5Xj*\]6PqQ?T&w(8Ϟ?IRā]&^
+V3(2I *#?+SwVƉl<xgk঍܈"E;b
+4b:Ur4l03w&58y*|>,/kWT:zRD|ϟ|=U)tOQx1-q= !g
+ V0ux@݄ g_Uh62~ *(!A*؈:_˓TȬ -qrqỊ34g:^-۩󝮨p9ɳ~n)7F[?$<CxF&Y˳vOZ
+
+k
+<FoQO#7߆\lא;YtX~ۭ3QGBAb)/wW.nmcqck~0Z^XC; uz"f=АNl;>JVL:5]muU#AX7P\WS q։ř~fD>Vt*ύg?"PcoỀ,HHl=5w(/ô,$z*eE M>Pkn*t2gv ʃeƒsj*0Lm\1JIUǸ"hDe5ogl 7ZYE0D%3<DΆE4OHC%^IdGӤM1EU1<V]ϊ QV\? Q/\Hސ6c؋**ƃ9-MZCˉ6:%[ƅ` aT+xZ LwSΩi;L1?g k/)Vw5РNM6E<7^d=ʊm̫`ܩ)N4!p8Pe9(aݘ <-+Z{oxܮ%n(tRMŽY*y.ɧڥ9}5lcmB<^6tJnk o<Ѫp~⻀OThfR#y>/:gQ]:,Cqb9{y}s~dGц76nߨr_ jI8 xV;=mN.{lyI J=IJ77Gkߍ? m>wFܤ:$ܴ>S=`+!Cy7)=6);J*^g z0W)q=
+ \EDNL7Ӈ%&ԎXzzBׄ^H\iLU1:abA}}1Aɳl0s{,Ȧw3Ku[*0:f=C-}XE6znNq:Zyc,]{nQbx~Llc#^3P;B$EQNqD{8l]ik43:gz)R/92M;RՏ-mfu|6#ʬ(23WlpULQ2\*1wKC|F C^ U@8BRX}wrQ0C7Dnv=<bi-`eONopJΎ!+ "dY!uY4S.m_1\Iڕ{%ǝTǬD ]}lq | dS Ce97GovF;GpŪo޸GΨLkZEȊi op?vHZ2?[J6u0{<p+LTL--Hx$K of0f*T0#,DĞn1|/~K)#ƴ qD,{:I9,?$f$Y]^ߒA)!1x.3ymBF^BL(?h."@1OBj9rC3]pA/vv;U(ggn:>Z ZTyf -!XL|%8`^*сGfM+1ٙ-&c>/&PKQ=0Ywd!fpS d&!yǪJ~{6|ZN/ӓ<ͥ>1gNWRN}4>e _ 2MaxbI^-(_=R.6gts*>B8&7M`hEq_<@U^7~SWPrkazP_{<z&X!ZNɣScO< .͝ҕ
+ E̓~ =|YwI۹3jfy]Te-4#7]ePk:]$]]|i!nb
+ ,ewPxCK0Fb:z o(?j,\<MaD-a<kC|7/{҄¼VDg dQ뿐ndmH4 L="{š$$hJ@vcv賣8W`n H7
+G;׮5ǝrڰ9w‘ӏ#dPkUˮJV}2 ].Ɵ"D
+1<7.)?IdY\l]^Xhx'i՘"UT 7Β/{r*;JiZ꛶8e$9["#c̓)Zx~(=d W?-.\i
+pOy'Lkiv$[ӪCq;ыG[,@oB{'q_Ӛb|R^h7[Ö@Y.hD2wSxA ^nrN
++X%֙bj su{eWTBLKYJ2N>;0!&*SbXȉ䊋͕g=pˠF|{G'uqq?1*d%[2^yUimLT1OuH+njG/#̎ 1)aNicBR|h?ߊbDW=m7i{?X `w?πӂv5b}لY8-8$ кq21E|YUb4ݹ дKr)#IhLCv)=p/Vy_c`]a)Er`_mDq]Fkb|[<}) ac1蕟@ak>;sеOjQDw)oķO\.3pQGtS}=^8S*LQ
+;4W.gUVOt;\gNODVe L Tő֢O*%m1ڋQO#x
+ o\E"^EB5]V
+(=#[=8)xECe;cLIiM*O.|F@D% 'dȮ%{$ܤ,y!cecuw2mf;eSP2m,z@5l>cҧԟ+-s˶+SDL%(}&@n$lR ǚ)$Lb4I_gM B˨:-PX݄gwɍJkDIk5Z}H[9.p61zì$ox!Ki^P_AZIBK7k0,G9^tA:h&[<ڱ>/n|Z{%;S׌Ɋ9E@Es}]r"20)4. n
+4~
+b6g!85{8WmHU§tDX4}F9
+el }'9>\hMk&RV,Rυhwݻ9f%$BfPEVDAOf7=m93씕
+wO8
+Ѷy2NHRTlż$ 3 덅ȡVk <HHL9IB#Lꐨ+'/q"䘜,oT;E6nE|OeCUj2$ʼn~˫y0
+3%!Ɨנּ2l%Q&\s=`w,ǰ)*67MQz$웝^BtF2j&ec*K% "
+'eݩ -}%;*y\,>hԃKx}E?68e9XL6Nw
+\3 1{sK>z8ʃ
+.vPgIc*+3Adk{Soqa<y_̅eV0עV~.,}!=z0e Z" 64W"
+Q~";S~D)3_(_2NTl/0scC{"k"pYlJN6/I?s/5ݼFz m!YE4w\9B=7,E.G$-mRB){aքv9E~_t_Kà
+њWh~MnUJ,D+aDŽhPbjB74kE,2r%ʮ'!B"C= XMea}̝f7K)}
+q"Pe0M2o`.GMݭی@AwQ^y"pIt]6\k 3gOy82Y!j4^ݛ+'\8e"8"}gY_+8<c8RV}|w93<ۄI{U[Q&D8h=ו;O<'*FY =G8Ucj(ږhaァ OxEH{R
+Aj{4 ^Zl| =[5,RZ⪊JiZSpYkDY86q`io>B1ߍv\1r-kzuo٠{Ӑ{[t~2R)MR K+KӶ|̛ Ţq@I}vu+rG?rp9l%šq} mK<?"j4[m3<R@vR7j7@;T}QЈݐjT}m?W> $1uYd\\ujxy/E%-`Hf$UD@;0҈cWD,v\)VUP\L Mtİ
+ x@;L
+ N
+monѩ&67UL* 0kzPR&qW5hyM_
+Mt<`r5<Ƨ,2>c^ёFvUmJ]9o(ᘩ9}uk5.$ZOXY>4>߾8}_DD.:2_)븷%lMb#hY)*d3AFѣG7.ƅ
+kᅢ5AyRh?ُ
+h{7DDƅc>C_V}LtY'FA=H64| .:ЮbV=[%pg~
+=q(,TXPl%s}=e
+.S)`dG_I*e5e, wY\;zdk7MPH^Q>):C+v=jj\6`|$v7pG-Q*ժd_@,p5ϥK\EɿDbXk N̤WLF/=0>W)talK(5FׁK5<\MX<,/|FcK -21fI )e<Co}U5a7i #޳/el6עf!sF3s@ʷ7<og
+mϯKjOrEutMr
+(
+׉K\)J*N:J]J72V3so<t|JNk$}ʺX<V%3Tz65󈵓>5T5ivqStC٪6t nF_VPSk\E(?@q#<Fj%FU'p8b #'qJRFR#&cTS}̬~c
+#7ۇl> [V@qPG ?
+6;Q kSR_܊5,FxO>Mރ{UP(TBfT1@g,dEunNCʊ4O^
+ftR,A^E.@LPv+\sn*xs}Zgǵ7u_LOyC&l
+:"z_O&1cOY4|e1XZ(ӳ #*/ŶtZ 0Aba?45q
+!R'*ƅ q+}ǁTB l;-)
+㯎1Qµq^( ;H{q8B<BmHAEeY6jND2=+o
+ȞZ‚L0r8uCtԛ<F1Mr+`{)_$Nc5 a3z-􈧥ɦі7dorPY+r`N"vy/Y7%"MVn=@G~{ GUH ɒ`*W|cI}ny9NW᝭xDɝq*>@
+_g+<<͋T? ,S08X
+𾓇V[xiȴic%Q8_ Oz+4@if<_u(41V95p= e+sثh#$]}@k"N%SKd:d>)2(oÈ cC|COQJdp '>A{
+m
+#`̒m z.SWLl:&-B}FgyEaP{MH2&Bf=5+tJs *(n"e+'sDlr 76-B^? l{bzjߛ6ZHէac>7| $K ,a|уdZ
+&eks);z0ߛqE6USxlєvW
+7>vZ]g/p0ARk=H_vԖ5pzI~*,woD4|x;R
+u0ezF:PCD<YZa10JDL\`H+blbٙ#ԩowG&(Wwn*5BЕ峬p랞R4`vewO}TXfjKI=tS0416xc!ӥn!^8_rAymv[IʴERRUB:@(˲q|pA87{uͨ_xlyVվb٨䧙pj4ȢC VC=Wԟhc\z#fiV֕40IGEvS0B!_ +^,s1~2 ? 
+_Vuav% N |]ɼgo.U%9[pqaDCױ
+J>9UG JUvUn Upi`c5ۢ췵iyYe@
+ K=Qω*sjGK04U6\wLд֟d A25P'@v=in<QM#3V➝>ID(پB:QվJO5;!@@Rq'#@ˑ>9YMeCIXm[?\f;SxYgCޓ %%u8i@a´
+ PH̑T9xaf-;-kueⲵ{!\ ~~9Z @ a)ive䇥mA}B( V~R U{I]C/ڔ[ozQ<a'Xe|-|쏅'e !}x~\+pV%G&\.ʏt!!%e3,zZQc ۩ aǑ*~p :k8@0q=W
+Fr=u =Qs:#j0O>Dy% h` ;)B@1=cTEYĆ>&>77(cc;3 C.@UQfe{z$#>81<A.h@|⽗5<
+hȟA /O=G$ z=6_sb0Y"f`ˋ0\1VНD?[
+įtMk)kѷ#Wd`r0iOo1Ux́-JAjW5CO$q^VQ`
+@^Y[\iS{9@{%%=oA =pAQ=ɲd<e#4ZzfD8pܖ@K+UjWm4YyFu݊ [,IY?v8~[4;Lpa4}k\Hfi%LkXC~"{ZpNU-ƽ4(1gPAF$ĦE!@_JVOUE'>bhBv2 auziqUf J4C#OD)2!{'tl8E^40aH'],cn.gjݵuh,ZQLY}bY9ֻx |uϼ-Op
+g<G30R:L, ?sscuV СzNSc|e2/]!NgSGJ'SoRdJ߲% /b0hmTO9dW3ۀUqO:Vo'r25RVM/@48B ]z6w$Cw@ADqȘwޱ3Ճ6-?~ / 4^j V" Ofhl$nveu~44܂ (
+F+)]58}[E1&d Lq..o(j ?%gR#.WZ0fؒ.J2
+d/G:wGgLt瘷`jH5ŗ%&c
+UBI^͌, %
+ g}5C^ ץ7
+96 7s"Ȼ㟻,fP i\9CPwkY(|YNeTXhXrʚԛqeLp*l^w[kq5j:f;j6O#qR7D܊gV7$ԏ~hL+G5?=7ZCTպ$cAԷ9W曟/kS_4J|mm{ԃiy~{a}v:gM#(JܪU;B1$E?*kD]*)νtֺ%!)۹)P9db^\YLr92
+7}czB+Ӱ^rd~(K (UX{;$LxpWI"$8;>3sgnPavM`L)
+^Hw]?y"3r0Z.&d݃V^.˝uQL{X^[qăq{_l4_ ltoq@+d o3imȼ4&Ndq"- Y'`(|irY!M'Lv%װ[V}Y: 򌿴>s=FO:w~!%swH6ғ\$dZ[P94rN~hu2w9wF{p A`ع_0#re&yk
+"d8d烿fMEl9fZR̝hK'zvw,jضq#&=2,vL+
+T"E} Oxf$€W" V{Uy A#Ї.-IT9W;L"RT/,o+\n I9\}Ac;U4<:Y祖wa?m_Ikxjoz_NX_*DUP7E6~B-#VU'ԐO?AG^[\nm'dCrh mdw۲1?цODd.5@b|Av9CP!@ LlKx%p@s3,ӶeͿtƘEbFH@V;%%"C41 kSL"ɕR0QY ܔҫtTU h`F9Hk "_NWDiO٪-UklqH[{6̩OxLگ ak4^
+/9M+[6J,vs#1Q%tU^4cKR9{Q&M4%RHcE啵}XjF4<)°oזt=fB î}ٓ
+|NWAD~7ّw e
+dfĢ??Itq)m_@;;_[?5*>cH#ηw$hp2S#`YkY0zKmP[ͨv|O9!tgUF'nr%iz]%LQawRzS19j U N[wT~~5+((%{tGc-ԾHg穆x;Dh^6HDYU_5xޱELjVé^2(WĹ<+yv(!sowvDKپߝd-:^}d6]Ļ+bO8jxQVv=h-Vk'݃%1֖^{YNgOS>P
+d=<
+E><,B=x
+y_I^'k_E5_ ӌ7Bm39"{1q`؜l{hLohXi:
+&&e>P֕w5qOjIm[$$o9h/2qo^[]B4@)N#crѷ
+J ,".~"OtM1 /7{'~IJ̊qtƒEb<p_w<
+lj0.mnK%or@SP`#;A,rH(q1o".WU2\nf;V&o4`]mR80 DYC7#=H-NTXR9L*zgݡiISm
+endstream
+endobj
+11721 0 obj
+<< /Type /FontDescriptor /FontName /JLHGIY+LMMono10-Regular /Flags 4 /FontBBox [ -451 -316 731 1016 ] /Ascent 599 /CapHeight 599 /Descent -222 /ItalicAngle 0 /StemV 69 /XHeight 431 /CharSet( /A /B /C /D /E /F /G /H /I /L /M /N /O /P /R /S /T /U /V /W /X /a /ampersand /asciicircum /asterisk /at /b /backslash /bar /braceleft /braceright /bracketleft /bracketright /c /colon /comma /d /dollar /e /eight /equal /exclam /f /five /four /g /greater /h /hyphen /i /j /k /l /less /m /n /nine /numbersign /o /one /p /parenleft /parenright /percent /period /plus /q /r /s /seven /six /slash /t /three /two /u /underscore /v /w /x /y /z /zero) /FontFile 11722 0 R >>
+endobj
+11724 0 obj
+<< /Length1 1832 /Length2 18448 /Length3 0 /Filter /FlateDecode /Length 19593 >>
+stream
+xڴst\>n8m۶4v5vضmml7V/}οߚ53n^Y!'VR6s0J8ػ330
+j}>ˋ i+33]tv߸Q|2Tsg
+)7I?vR~&}]اkG8_m,]ɕSR[ٻM?]]\
+A9^n
+v@lWEhrRpp37'L,j9=Ǥ4~c]>'.
+Sl
+*rr&no`feo`a
+3 0wpܜ
+^yzG"s -*
+nl3h~50 (Ǿm[x3oC|ϺI [ex]DNJOΥG㛶gP\v{`IoQTNjiZ׏HXoTTeg{@"⭅7^? U=
+Yзsflv1q9W&rVLG2:" ~7zU!<D)E6z.X[]XmOʼ5T؂p,o9؝Ue 5Azd]>Y rmH.*pkOg"Ep26 ,>B!Pth;h .ܐv
+mm׶syg
+%Ĝ|Iiij_xwXB1&8i\wK`{WD[a6l4o&E%J_S8Z6r ZGci<qt?-;
+{PcpK6^X
+_Vs+-Ĺ{FOlOC(c
+:OzG(E_1Zntw HF4JpS \H%R{m GB9fZ(n-Ξljr#9Qe"k~dž|ߑgEy^9=%W
+,TD MwwRtShڍ2!æ_2EPKh:-1R i5 1SnSM "]?4y[q@`e/cSA+Pڑ#
+O)3zELyh3Sy`(}/.wx2)2Q32(1: AF
+m߳]NSJ֙7u-S_8
+1` mMʽR(Og/)I4+9gQe]x0Y Prj#GSv^+ReVZ÷2<© m)4ZEns^RK FSS'PJ_c㙅:)\dt?bX sr >űW"mE +R֒)4SR3C+tsj5q*S
+<RJPQݟ,qV& lN>G>іm"QQJU](w;m,a0Smݪ]DW$B5_|&,+ͻ٭"IM.VtO =vR?擰*-v=2iw6H>p
+,[ZOQK U *RK"ˑkT
+M#Mͬ Cۛm]"G쌻hP wM2?He[̙ < Z
+#VnϤǩ gdiҙt.ĽҥY Gc,ӵw
+iPnMᨹrRue8gprZm_~>^h*2T1oc^V0VSe pL0iPcq Oi-cpXoWO&tPQo!Wi?V$:I<M23֬k>Ց˫G!Kt7-嫸z&n9>sX{ Xqظe3Zwʈs>j2-2fc x:1J@ND%W\b\~9gOu+_?b:_+J-K^z{5 ЋyO}^
+r+eF8SjĀݩZ~1?9Qu̾l:C2L$kYSڜp[$8ԝGo߹ڽT;^AqQRT8ߩqh7Ynn;"AH/Pg\jH `{>\6[BeC XfFoՎN{LdjQ"d_wW;ņ&CJ<pU ZjgwYHZBf31C WDDTҼ[܆y
+bi ?@h`,*ӿЬϿi+s²#<Dزuk=(cc=XwU|kuٰHo9Y7^#/v' O[+|넬q406#$Oo;i @%=ZF)BR8m$up5M#
+V%1d`,1r@xn;bL$iʐwto?P̜s%YIE @yeծQui|GKpϙw>3RԻƟ| >+M+H喑Ͷ.]=Ť 3wSR`Z_2RVގH8c@i"U=m,=#B5e8R0^^*G
+9%B+Qʁ~YmdCy
+k>LwZAuU K7́:k DE
+/Jv9B_Q440?LcAEJ(HJr2]tUT?NH&qeZkE7/nNG:Q Gj"\ SkfKs:}pBvhuf)c]Z3VPq@m'D&d)Hܕn(#3r3N#tI0P;z;6(KO,oZ~bWFPݝ*.
+2,
+.:HϢПsnT R8R*45&nu2F%f ]<wDa^X|bQdWII $RMsD ̢D
+,WR%|Y>E(CJBRn)[B_@aEy΢z%R]2u
+ll* >-N2kkᛅДJcw L7lɒJvJ:B C 0?#oе'uy}
+pĩ#J<B׸0*_kv4ϥp;ALl6
+iR2dѮ:?u;kjrb
+cb2I4"CF/Z2$δj`.3wS0Fcϟm1uwə+j쭑F*D:gVڵIMFW"dk?TՔ+ƪ%wp*ZǴWޞdPLu'erFITVA]rY .ln7) |kf\s8! 넓~vd5$s CTۡu3.P0ypTAO8?z /+*A '%1}%'s%\mR(@}W(i?y$>y&Y/Wn 9!/s~Hܴ!3( /n\p\~!*}ilnۺG]Эn_ m22ūVX>58E,\=aYcKArt#ᒧ$`ݹfvI3ϏeIo^.)t؃A[Œ|VGt~
+jP<jig,:SroۘmMI)? ~H ,/.ICԃ}S5ƅ]d$<gܯsS[kK;/{m5ccՊSc&
+ewG>t?$
+
+&,Q%)ɽb.uNM%+IFQ,|$c2Њ!P<Z[E.]; k'݁^*Lzֆ6ݫUkhJ “ T/8D]j'+fsl(lnoz׹,^}zy(){^K#ՆDl8Q6XW?U.M,6qkt/h 1@#,"yIUGXkp0Q[!"6$ nA nCô}f
+z>T
+7e&pc&&1siP2/A[Q`UδWNt$5̍2EJg—O5q:Gm3:t):`fZ@
+հzn][n[?:L1{Ǔ'2O,Y:ct4<Ӌ}J{R[ն @V``Ĉ|h5vrdQ0L i=1Ate&VTH(jURE mGWӠ{pwY\\QTN\Σ0iE1= ri@\@'^*b v=z'"lM>Bټ/g'F {oRpI$?@gTg,~%<Ԯfm!~5jWвd9"ǔBpn;5@\k@
+5%Ecy _U3)կaIaw7{hk^YRJ
+?&F;/?HX)(.yFC~22A`LUsժf>T .1P1^"Vs%bUK !4?NTpɵd$,!~g-QvRe<v5ZsuhcHS4FUWF84JdY,#lKכޛSY!crP5S ncnR$,WusDKk'R G`􆷋A3Uj
+7B^OU
+gMuFDRHqd3ao:/CX; HT/`ʦ6aG Kpv[R}QnyFpVcZOzD:0g]m94Y0_c3
+ύJJG316!cu8ľB(mpRy KT<0"f]A`7|Lm՘t" ٱW~.ٲ&Q̚YJhj :&9Pƃ@*jrnnp
+Molh!žPy{ct>FU=nmj 7M`W%?3/4?t`$!G^TdmpRqi=%
+"ᾣVb ڜ 7ʰ䇛?Ҙ]NV+עaARHp>dx)[gn<'ۈ$"6L8˃$-Z^>SG-A~|ISLӨRAŕ!a?<`'lFRq/MpUS,%NDkW }ǩ >+'Py
+ $C_6
+:tucrƐJt;#BWn1%W>r 9Pp+
+R.7X$2ڋhlԽBЩ7
+G?ag8{`^~!
+|!
+/A65UpcS@򙸭Hۇ>R2Hzl2S8ZqL)k_,AΎNSBHhHqҫHPhÂǛ4c/AgwTmnO7}~!|?6haH %7Ep_X:@w܊.N$2i}GQ?]P8]G6tTM?lhq91ռRh)h:9
+oeTH|WیcmŚf0%9 ġ8HJ2S=;Y3DI)8A<R %Z)g>(_Zb+u@su h66P<0E Ձ;-l4%/%0̸zjU+{b~yS2rAe^<U߂y5x9 =#u݂SVl {E7 ޫElmr>zļ&1mdOԸ z>:ͰQj
+sSVsm^ ;I*jUGTu(bvMNv:mfR[B[nT錙1,
+0_|^x^}ZTѤ(5^*jt3Z  -,q& +wĹXEҬmTF[LIHB[-͗ݒ5s5X`ObptPoT7(1^5p-awg!A~1K^0g|kc
+_
+PwRi@`7S{_y@?M
+H"SŐBH {//r}aG^EO<ꅜ㱎΁en0-~{} /{娸>S277sh:Hq~!pG鮢V;(bG7=PYG\3ENU/3DBpʌ]??{+UAI=/֨]>vL-%e(DCLwc
+sMgs(iKgShccwӥnwe ;^q ϓr ZZ2 ZxL<' ,rQXM ʢG>yԤ(÷Z EEcx$O"=f'E6E5EѪ")dRֿk<.; !`P[o{hNJ)lfx%1<rڬp*c27)[eLe Rnshf͐[8@o @,u2vۣ<
+E.Z(rx@4 @ӳlK)Gx8wJVR@ph~HsջduII|ƼCcxM/0j7R,,Ƿ՝p|V|ctdTb*bc/ežʟ2f _Ye _fך
+Gbr2_Jtt:~Sؐj
+ۚ?뱺-"%Թ/5-)vZ YR KUTa35~Oۺ- :U?VQEԾU%HQБݙ&5\#9P wGM?-~*$|R$XON>oPF]{#Nx.$ GxGnD=Z
+DXˬS.•rݦk[H-Kџ.A-Qna_>~7SUE2"W$ *>݁ꘛwOW+OYI7s
+]j̵:^?6C}5usCb"kwn(շJ$_B "{roη _6.];%c<9vq. \TM"*^!\6=71 "75޾^Аt<Z4-ݚءEfr-ϭ71XE \ y&atId
+9z?M
+;%Zz ftUcW }ܰb/v5 ۘ4ˈ!m<cz:fRcicCuѫU7R
+ 9=6}Ah` ql> em{Y4=\rHu~a?Z* X?C;9|jvw0\traDL=:̏˙9d˫#0dLldU5@tL%Vu
+l
+[2s˒Z
+N#,#4m&z
+lBl,j#9>Otd=P)u9$=` ;\XG35utN Ih+ `.lZWt5 Ri$cܲª/ױ)"prsGA=dQv4w
+N3(P8քdl9S{s 1ܰ5݂GͥEyg{$EgCiHjӴ~&F9~B.m{7f]WwX>oU
+ij<P:'>M Kܫ$2Rv6hW=0@3c}T|LKc؍Sa31>pH|$_#;80;}G L|e W >qN |C(>$)c̚߉"βNep] JvQ_cI/!]";̟-P岝QQ_7:;@ƑqvΒ' .#9Õi#rn{&XY&dȈmXEM+d93H+) M?R؉ 2˅녱|UYl}
+|x!XrqYgTf^M1{q#Wiʾ} \_RR NwM#KWL ѰDPAsD67CEM@
+ 6)<I4w[+rڥ0\  mꮚh= aNTq:PPĵ@VZpMx{j'Vw >R
+!j nЁyFV+G 8El)OkB:!$3SfbMLDBK2q^&1{Jki`'69ej꘢
+endstream
+endobj
+11723 0 obj
+<< /Type /FontDescriptor /FontName /NRLLYV+LMMono12-Regular /Flags 4 /FontBBox [ -444 -311 715 1019 ] /Ascent 618 /CapHeight 618 /Descent -222 /ItalicAngle 0 /StemV 65 /XHeight 431 /CharSet( /a /at /d /f /g /i /n /o /p /period /r /t /w /y) /FontFile 11724 0 R >>
+endobj
+11726 0 obj
+<< /Length1 2277 /Length2 23448 /Length3 0 /Filter /FlateDecode /Length 24809 >>
+stream
+xڴeX
+-8o܂Cи݂d;gr޿nRvzɈi A@Q= -='@ZFdbQ
+гskF[7
+n%iJ7kHں#Tq4 v(n/{ź b^zcNv,t+^+U MQb0KLwt}SvEf@4 B*ge[+jdD+^\38x̎o<DbyFm Fv2 i?1P98/ρupTp%ŕC}D#Q0g-#?]qHSt3Ʃѡ Xjj.
+ sJ)b@"Sr
+"ኲ#Bz\x iz8bSuȰIH|L[qVP,TAxEC?ouUs\jYPHKD~
+4w$0fd٭ڽr9mԬ c3z |G3+D169-hZ!#po1CJ#$-.c>Z<F"`}Yt$7nk~W0=Put ^f/ @FF*hu>:EӺ+p|1:I5dV`C}O)nDAG|Վj;z.qm/96 !_G04fpm .7Mc\h}!<D4ˈwhOk4ȍxL
+s9BC͙V2ġ§I=
+V&qV62RPH6pqKvH6P
+ͣ"nZ.HuY[L8ۖ{~U`O_W ggjG3[0z }6''% XނJM>M?0J
+m&?ړ%>EFH ʯꙊ$<3!T(sg9~T
+p<)ޓev:IwL0A\5!%JN}N>Lna7sŎ֚^|a)~hut1D">8<2:qP'PUTx;߳J IӪi?&Koahr:tS!ywaMDugc‡ty$^ $~(ly/=&X:ZtN%A%monJIdi~C x$Ԯtᆵ09p!9J
+9ZnrKWYɁk
+KTbNmLg#xCFVYXwǨ+W
+a=3ԃû%9d+ϫ b S2c]MN,bz"l]$;Lb2_ Mzj\*WG8
+>
+|%rO`J?BA?64e|d>;
+ì/,Jݨҵ؁U|aqşѻDDigF’e{*7 (.{02Askw -+책oi3*cvuV&;'rT) =[sRÔ3M]B=Y$(nŒ| $
+y.0%ʢ6()NdaaFTm
+鴿¨$eh.w.}[-K2+2f2A7~f˚ qo晫n×-,F݁K1
+6Ȩg4;Xn(*d=fm ћ|l%V/v`ܨ}gbi)(^V=Js)gci#+ޖ8-JV/S%% ج=ރ!j8phm X'b)~uD Ć^D>)FY^EwH}>uX
+D?">D-|.E1]<a7 TӜ 6ߍ}UL@!6tD-w:M$bQ|獮%rd62i4BTʎ Fi4huOXgpNw<_K
+ry'W>yk0P|W%Vl]\p.ȍIjӔ%OF&ތLqcceB0;p^j>"B-6%:EK9/;5`&I{<k7 <xOڄeR+rp]7|" ړ<G~{$ϣ]40jz(g`#
+O،OGf oUlBU.qw24ICOs2.Qok p XĦU^Micr`A
+3޷T`k?:h5<鵩 K=ebay 4](/9Q.^M0Z܅܄y[d]r6ɋଙ!]r*.ʗdƎ& ̧{5ϙ#"f*ߏ*Gg5Y/='<B^)>Z@ ESA$x
+{$2K4^ٜQDcLFt/1:TSzM0 oiFVR$'EC"$q^bh, c}印[RUfFt}erwmNd&תH2mja&% $_ű)wrzӍy|I؋O'K%4Xdhd VzP>Fx`ce:׮Ug7wM8L9Zmi 1 JG~V4 |hŦRq1(٧mI7SȮo,=+SmWy\"ؼX{*`Zl} $\#pTK/
+gq- LXK_G?]RaS BT.uҳoBLQCD+H18 \@H:7IQFȲda#F/re#ߒel.IriE{iz>Qݙd$P64[=${K P;)xܵ[nJX VMUZq!p[5G9_f39Ӱlf6Ebխ)CBsiMj?4M, {`:*iF=rhu#1.I9/Z$`&N3xǹX%:*|GDZ@gC nid|\u.s[Zh[|c+~W.jYK9)6K/-[uS 5D?yOqkrQIf}Re1bQ[+.OUv][vG*Oic}u=L4be=˥z
+"A/*)fH%<ezP +{ď訡KnlC7]J`h&19y(҃&Т(÷OZe<fk*t Uv5m.J4 A޸2~D:?EH5#~P ݞS^u ],G[w/>B<@?ϭVc9G=xeRF@nzB<kH48"K<)>T߯
+h3TgkӻDM~| 3q|LD/ާHfC3_
+ _-Ǽ8ricծ=g2nqzUS{
+*qr'Y:,w|FBDNJ&:VߏӦ\JAH0pfͯ"](y ^Ԥ'YAdM?|U̝GG?x8C\hj2"vIkSquCܫav~mFu$IYy6~a4Q- rx *UiRV#eSK1(3|ӉnwbL1a˿a(,$mN]6ihr}֏Xːn.k-O dI2C?r`K~w/KYO#;IwyNb}Et3T
+.Eΐ Xya6_l0⏬iKo~ѣ>0ȻPqX!B޾#3: FPt>3g0k& @z\`m"P^6|A"(dى/pͱ zu8z$ciTuW`Dz7QĽ_g@$mlJ\FnNvvCptS3a)T \aS3&)R}jC{ ?}%+dVq&ǧ[u>c|h*<1a菒f'ɣvj}ʻqS}.qzN}c6TJ{4&\u8(2Aˏl NzN|~iYzU~R|ޮO+3噢>IȈu>t̗/A0:eĝɡn"[.*֦!_䏟Z` Y.LT#&x/-6K3Qx7+y "~eX%
+y{4ȓ }!xEkxB`4R!_+:A;_O
+9gBWF!@aQ-yv70[`vn7@_d5NDّ?_'} <LB~ TDAoRƼAÞV>lYYRguy@X= I f5
+S~Tcz-Xw:*2YHe{ys%^X012vD%)42tU69f8&ŝxEi(U1/H-!WLEZl9hˀ![#ȫ_ثI'z'Ԁ>|:{&f.kkVMӌ !w2hT(礊ڢeݠ3stM,#pSι:7nm ֱܱ?c@Fh_%Nnr:)򌊅݃e cKcȏrX/7
+_ ;ko$J^
+
+ AK.u P7yf !wۏZ}Q
+F}RhUV|ѼeJY-/*JUNTW?W8W=ؐOґMC}0(p"#PnѻK
+}=(e6f )KfPI|DI̟Ue#?Nj{FNsk(8Oswg+`C']VR~,$ZMA{;ݗQTy ;2S(K$7#*[| 2͘ (
+öN. AAj7fKg`e卑8`>ѦJYÉ'ڼ `s^}FMٹHIpIJ8jG
+9]q
+^я2MŘPZ6 wF( U8>ohYuP&, ҂$Dt]G-8XVp%8Dd0"vӈ uׅ5d;]9 ~pfxB8=LylUD,@"/ k܊FN/k<bq
+0e*yBمJ:MmV\bW51 v<٣Cl#0 P
+/_`IO{m^w̜Q'$\ec(j\A;պA#03
+z)*EzP0-vhSj \saM*_H<j'DIsn=-K;T:^MF Jոr O(DA:B?EM#CXN!q748l20," }T9>FRC
+m $)@`3zZ
+Y쨵V :K{N?}*<f"; $~\> Gc!}<T,cHYuԛ5H͇1B;"2I. qi8ȟQJ0660xѻd̺ξ3TǾdr̀sGM
+=[w nmM<!w<|fi:m}$.|cKzxZ7W+S
+ufjl`.;XʐޙAxKM0=(xxCNhvS[N}@
+a!4͠nŠj>7rHBZ|O@Y)2Huz>,5E <I\5!=:6QE00C!Aͷ1b1ND :űzklMFm۵B*&9upX`p8 `ħX[F(yf kΒ_\8k3m譓_ L."6H_FĸG%p3]pB͒"{ApnKb]WDۑSt'w=6m_h%N[_26Wܢ̷MCߙefI]߆_(ޖxJiVCs<ؿ>[@ lQa=2B8'νn΋uaE-M?<B"pok{yENBʆ?+I0IʉBv\+wLH8D:l9`ۮ NܭB}ŕkbgY_W\
+1M3$-0JG{8$].b4X19-nVќ\/Äw._s=GLwTZ4ohٯ} -^XvS6/`:< dFE/zvs5FlΔO~ 
+dB_CU_.;bD"K?!KXf=zw֥u T7ו^5/˾4/߃ᥑaSv,Ձ*el]1V5hӰr[B:@xm.ˊ_2D|N_sc6ZP+#hm`gD J'"⺣ʺ 3ދ$<)c "_iX/%^F尿geŒ2:Gn
+]O=,XK+ 2>QIųsp5
+d҇tm\V66fLniw&'V[g8|z}EO9Mx, nm'2}%tnV@elEcx3HEy%.+7CuYVY~*}7ؓykHNdQoE-~A2TVעbUqN(gi>T;@[D'}x2J%Iۛ$GboJ-p9P&c .mD tW>xE
+q[#?`u:!뉫;:{ s\l']4Զ0UmGl&mF}~7蠘~Ÿ&
+:"6L}tK̟#ԋ҆U@\sB&lg< #T}0eCp㓽z]VH-*la0n
+>wǐn3YRKe3\{9A2SkJbͲ
+AuDG>?\. {ӯ8i
+$okEv_"jf,0Wo*:~oj
+
+O{sk6z̰U?47^9,`I
+O?z{Qf90h"d!F\H7K3 Ֆ#KUFLJU rYs֗cvB^3]XdzE)[M{x\aV6yL{hZ
+}91nџa/h|fA__5͡&}㛱̫xY5z(D!c ^lL1`Fexw~+LtfEr(F
+>$ӫX) (!ߎT ;*C-)F0N'˦MW|)i[x,pj q5Ip0!ْnٍ`yV2dO_[%M_}nL =
+o KuZZ͆K4y Dڣ8ܟ<lv#[X>9yb\6[x0B뉉?c;}>PbQ&=X
+U7*@kU޸p
+` }66UV@{Y}ьZj98Mh<?PC(WrbO 1ųJb=NN97#vRTM346tҌ|$x7\g(ִq.g f"O"Hƚ"]yQih,/S&#,BFv %ĩ`P2Wбö\^."?S(L'Sƽ'Ԓj_'+
+ܑӸSZa7ۼhAcjz_R([[y+.܄.1u6jD P LYKga`Eيefˑw
+h̝J~שn[3&BӘ b^|#
+% Xgoa~$1@ G+ܴ&u{ ctO=s-,`?%ϏsC=
+X<\#3p[țIh lS,/"u{fc%ZK|I!w+Q1cW,ǐ]! 5Ybp!lKX*.J'$rW11&?KꑹVeѭI@F-ԈRKx{N
+ᥜvXbys]6D:)GH#\ &]ͥ}%@tb]VUc\-Ć*bh0Dx<5zFZE+6QiqyZ&y *f&e8qYCMM̄17q탣^ǚB/%YpURj4؊U9&yU*]O\FMdzVbP R@6\ kU18lz_g>f&2NƨZ9d7`9zm/NN˩ U_.ߦH78(pW#R_5'1_/fFi]|1LMNXg ^bӣJۈ }3
+bnna ti9"F~eB'(nHLp0C$_$1nes#$\g1a;{|Cy|)$BLDKoV&RKc47j>/ܘl146vW_!CK #]FdRT YO˜58xe8 ڝƷ_]XLB4gpEk;5%:<3G0,0vCfw}Vmm$ E{/lpX ;UյeV`aܚ x<„'Q>&9c$!Nx9:T!C떁 PdOO[`T/;;a8o:퐡I7OG{"PO
+5yL1
+cm.@WQ,^l֟f{z7URM"X6MrlZ0mCќBtm]؃@KW~
+ y4앧@D ҡbCKpK"3k:)qgzo4P ?qHq_X+NW[;
+js1J9
+U;(3UIipPLeb.ߨ}&X<^(:)Ԟ~~% @H, o"Qg zNnypWN~rT@Lt_GJ!'YTZ r 
+ J ;\cI ^v~~i$
+k hs=1m#k|\R<.By;?vԮ:j{f!5߅Zk!m;lApl + 4gkG'KdNoY|˽,[
+S5Fg--E%C5qGƧ"JV9/UxI2R$'MD٢!)kB2s /;US^ Z1*IC)4[+/g,І,#6_W=vjٶ I
+7(Ui0Eǧn/y<l֧
+#;!WH@K8u aH2Ǐ*ji5(z9vljszI\9>'[fPCA_94T 2
+l C* ҈pUeGQ1e&
+q݀5%wxbVM [V.T~VH21I*eoőb=9Їy#^jfˌX_>רxos;1DA!6%b-&qI?9Q[vz ]9duFJhExR4=80Xu@S
+tFՆI0jۤyAn
+hs8 zX
+uö9M #ymsO:ᛗ$x ֧T/ ҂۶
+l]/.'**nƛa8w0r
+Sibh#wBrרs4.%zl']\DMZ/.%DL&nPlx)w;Ħ_8*j$ݫ*ύg>z05
+x!Sutx\ klN =b||ͩAN]4PUtndny7S8Pӓ`y=ڮ!?
+U<|Uk-KW
+u)E
+rr<X̸%D:g?T uuoiԭ )Byj07h_R,Xka2l%+4%&̙G !zzCcfa?T/PnɥlR[4(伐ȥzA)KI@
+8--#^4 .Y C񩐲T< GnRӋ;3)LO.Gsv
+endstream
+endobj
+11725 0 obj
+<< /Type /FontDescriptor /FontName /REBVUK+LMMono8-Regular /Flags 4 /FontBBox [ -456 -320 743 1014 ] /Ascent 601 /CapHeight 601 /Descent -222 /ItalicAngle 0 /StemV 76 /XHeight 431 /CharSet( /A /C /a /at /b /backslash /braceleft /braceright /bracketleft /bracketright /c /colon /comma /d /e /f /five /g /h /hyphen /i /k /l /m /n /o /p /period /q /r /s /t /u /underscore /v /w /x /y /z /zero) /FontFile 11726 0 R >>
+endobj
+11728 0 obj
+<< /Length1 3124 /Length2 30450 /Length3 0 /Filter /FlateDecode /Length 32183 >>
+stream
+xڴuXJtHoJBCCZE@;;K@ns|g;Y볨ȔUDMv. ,̼
+
+j"j,Lz
+`u]<\OD\<\
+L]mrodct9[ހ_I\~3FIr1v#?/:&NƦf>del t??2qK4ce- 3XJ1ffp=_]m~g>6H Vw9폴]X&[z
+yik
+<B啯93,:}bVy0~
+@ m_чI '^5lrX?Z9:P9Mt4Y RFotK7-Z\XR:eW=SNP9=ݦ S: z
+ŠM
+Oۓ*QTW(-a9>o7‡ z{UB^ҐCzSę  Pv|m 3jKSK9C%A24eK:@.9e2mlK;m4A՘RO d"oYgLZUco*z=4^3+sDYs:՝gA* ~YJ2
+U?F{*@b鎄C`zOY$n&G!e`bz+˥' u,=^Fg^~V<u9ZxRbN/"Bfn)%WudopA!JN<#ig5tRI
+JCT>IkwZvgMibMŔmzF L{-(D;*7=~ w' NS _Zb'ȋ', i;/o:H)0<%yg @> n$ʊVB<~14+ Ą(u9w<`'Ո{ໟdja 'w<:8ίoRTGO>XH%$@<h
+Qi.Ky o=ɳa@J^~ 91)~qbtd'Iѵw2R^ݫ(b~Y0q)M#XhB:K, E[+
++4? dG!OsJ^ø}ʈCyӣsJǽYZ%Nő[XAbwWR/ vã2>iq!iCoD[Fӗ PdR=:(MϜ{Zm/ϋ?%LPaf'^gL]Jlrqﯴ$)H7wBzqjL7ZK։'
+TR6Kzw86m>x$#ٯ9r.˸Rmwizvz!Jel>֔H5:O4<#AtR:kVӶ@UÅ ^^Hr~47|Ţ-̑ezW=gJ("wq'Uj$u0MCql[VZu40k"
+Ȅ73ʣڛ)cmx vүho#qr,diy/c Zgͬ#vzR'|a"x&wy@wBU+4
+nl[PނtNJ\$ʂ):_eѵZVc]zݛ\V5mtc OrJRgnغ(ci-$ϧ-;c5ꭶq6EǛb VyG>%ɢ6~
+ %%ú;'1Ah,[qWx1w*n) J~b00XV_gF֝WT" Wȼ*6µOI49+A+d9N0FFO3IS3Q9rʗN/Ze<CZM^˝Jy,R^䍖A|8 Ƀp5X0'_|
+kφKPJ)F^$|z2\uTo}eO;u<G8tT>owСQqr"}l+|cwQL÷2˕#/2/
+9Mit}͂ n!uƆ-D,rZ[9E+*^o2ɗjyZS?v6%oҏ΋ ~{aazsCw ^; (80’ mE)b+feЅA͵v2 d͉KTn~N<^]8JhŀsLu_"i59CPi'!D} A2%RGp)SYr?0^4I\0 *TUf{"o |~;ǃM= r\/`D.1[ݣ+MP{)~kݩpmo~kuv0r = =5t/:;AuC8j~<sAMjQ׷jLNMu+>Whn3A&(+()ܐ}`,•SGʗcc*}GÞ%%649P-r! ? l
+~/ꅐ
+[g;ŅerEl[YPl&] ,ҩd<zùg/?lLf}hcW/؋Iz_CP̝01'5pg܏^yB4C^hӐIYE N˱>-{3}SϵutS=tNTBQ7mdc;6u@5[n7!
+}jZ"Pz5 rߒHLhA_NeK<YqiUCY9_P1nw^.s-/1θ9O=Vɴn( mYeK\;99E'6 8z[SIϷZqnQO)8)~z#!6Dkٙ zmHm|M#TWd*vO{3bW5#ϽoWycng P( dq²&M+ s,y.IJ;yxW}QvrӼp:[E ɶv n|nL֢wEiBC#lo RytbmQBrmSuB\-K$_r `|kLJL%ZHl \2Y
+yx];-B-u;*ؚrJ@/oP0WiQFzVzÅB(}gCP
+e;p<b~(q{y+H'Q/1`Jjgl#6'<)ۡAmS+9UT<
+p\3
+oKO~7P͸,n77FVliX+?RH l+w5B4JV$~)Q ,bGh›ud6ޣ~kp^{lg'*uan}UqEaD
+fdny \d3)a 'K3׫"h%,nC` EOVH*Ϯ:/BpN~{5?onfU:O|CϷf Q4kNO.+ߒGݭ) ~`fA)P{{c4mI*.5Lo[')/5-)T-=]jXQNmB%kgҲo,z !bvZg&\W[J.ã*d y{SNCհnX5/|d=^)F3 !cAב(uoɦ{O
+K(ش ;9ŘU7y= t, B2g;I%b<oA]vp/?/j#lְAjlJ.OEcbw >_?ڗ
+ΏN͵v,&WP)?B@",fZ5iY5Ưs&d]2*Q!L/T@_
+Y ~sqOj0e?RW~lӰp[8Ebr @ $5^Bޡg?HŶe?:3el(3$ $`!h8 u^.`X.GJ+ᘱWFܢ=^+{鬟b= nf}y\C*["p9Vm/̀RtRQW`1E 4&mpBnIY0P7P`Pl2yŬ xx1^Xc?AېWY5LrcU¢ K)'J2n0lFlp6;aN|3<sVbPW{!Ѳ:$$%.쵻J;SAw_Nxr|UwfP^FP$'eJb
+WTj烚ՑQZQZ;= *atfJbʓ26J- ht%5:f賝J{Dۘ`>7PzI+ M a'{mF
+Pus7ك'=Läv!#7Svv 6"ޔ!%S@L+oqS"VC!С}8mHYL͒>9G.|[BwG?kw8>V R/)HK:eI~a(GΥZgoDV[yO>ӎ^JQ)WjTݞ[HC 9o8yqd46Bso\[t2Ǯ/yKfYg~Tݵ-X)dzpLDAPFUU{n[5˝,*[Ɨ2ix.l&,X)A*odY%T÷gʋW>ȔlàqsF;/OK B.RX S\(O|έ4YBϸyt6`~z$0KDgHZ?X7CӶkDk6--^MGn@HO0gK(77+Z>gNRl2KP|cs ?/BԾL?5v+@1रQa*E j\T糜?޿);0Fu@Ճ.- B=w/
+fKu;kY9v9Du&%9~ zJlJ6r,3hH4=s.(ۂ4HDtM@auY;SNjzn[`׋#Ljg\:.qx;92tcZoo ESƟ` Hٺܺձ-M5?[ LE~F
+~c3`J9<3=aWV_h%UɄeR3RTdGTƶ!ȺuK֘S@BA>@Ufp̶#Ȃ:;Zfp9+
+[Rn5
+=>uVJfqgQW-5K /D%OAMbq
+ԞöPQH8Q_);
+쉲@ZY3G &aF).a%mRpVf*{ȔYRitÅj!%RڼF?!9) 1;z{;O2^cW9uWAJɌPsjk{hv2H7&E5 =Q"*l^{]S*48a!saLtPrv<!̽>T
+w07JH6+•=}*?WNRMe3TcB[gN!K<X~‘Kq8whJB[eA6p)L
+e\0Sl OLZHNYu (錮`f՟1(}mPP?scg3wܬ
+@F*yL*jKtʢ'Sfb[7M1(cm|6U7Ju:!霶P-}mԻ&o`Jv?4g0ŕoAil$KˡPzv<yk(zbU۟?XH":Wmېa " ;zn=zvLƉK6 c:FӕyX]Ev
+خ0gBs!zjuÃ%1\5P
+uAQ3O_iY+OQ9Qj[4o2r$fƹiH|)SI3a_=)1QUF(6a)n+NzJ7m@OGw-$ynQ\7/(JuZwFOT45|*…<dg\`߆N܉6Ѫ!蝀0$\=:)Z0sڦJ]hYDvHoX~P|. M?M'ξa{-aRye/эjBֱNd鋯7j ,Zf)[E0g]
+w{™D۸!SaPN ^h"ڑḭQzxv~ /3l;Դ s)υ5N3@
+N$iOz<0UTKKŎNn' [`-YkX[tF]ck? FM
+1IjHп]jy3wӺy6W3댒_;s<1KՂX5n3tOTEh٫mSh(RPTN]Kgz@[m
+{E]ZVR3õ Zn_{2l"G&˗aJre!9O~qqWSp^BT
+駤c.o65`:Lۏ;镉J>kHM.4:/-_T QBx"Է-{`iF󔥣%b`7i7ЭZ+-&WL%ǐQr|p@6E
+yof
+#Y!!h 2 ,s1E6k:S]$}ub9`F8V|1';P(DK+BV*gqҴMqf 3uF׭TYF旼ɭC\ 24zb(oxz}l愴>ی*h+? W+5rU
+#b0/=4׊1G:NpJ_ˬdyB8
+8IB#{N
+3ߞ N'3ԙ[k9aHtTY668&-ix>aQaFÉ<jև2[9%pvs4!X͇ Q%/QPգqhҦl|57-T>eB}6艜!.!;7`tƩYרHooֻۑn "͗ƉЫC˖"";Kޕꮵ'?Z8PPJY-aJ" T8#L|+!^!q
+ϙULݘqlpŌ
+q3Eg!:#CU`c ŪCDZ @`z[/jDFO‰4+h L{j6'R{"RM;<%mW ט1QM3D(NSԾ77?Qq6#_˴΄P_]}u3> pRjwʭf=Vy7 ^u>hYl)'SO *5DTR]FCZz]$=@r}<msY%V~U^`gҠr\&-!KW Y>Ram1&No#Ds< ӵȣˀ%NAT4KF;գ*$C`mAQl$um__5g',5uf/qS"Yi0ʄ\nm7+o9;v5xu: h oϫ3͓ɕ?,fZ<dPbw<*[!mjI z lnV+LD>#=yp,i}NHP11Y1uZIyx;{~wphqׯp*Dž{ec A儩 {8PgRwR /w- THW:v-HԄC<p!
+JRԒx~ʨr
+0R럇k|; WZΏW (~ɯ.L>rxNwZr:)_M1˸n@&~؇.&52|T s{SR>\>y`qKaPUVTlPɛ[h=l6掦G7 `ϡƧ"L>
+.jDNGdzɯ䖋iޟ{L\&B{zxtco[[.2lmyk/L2>OCČQZ_?Z`G DC ?ƠەqӭOX gV%;uZJ
+6@̛ 92rug.kޅ2d{" Pz{ 3ΆsPɽǟB_
+X?ͰBj'_5I7m1&NwR͛J37RFvFt(;ǪA)븭ط9|Fws<ӟfouSܡEKӀ |Mӽm=NsP$'A_9 A.Vk:H1J% baCl
+:@nѥcHZt܈ĜEe20lhuZu
+um#0iR܊h,y@\<[H !7yLD
+zDҮ||v7o"x\*&sȩ2huOkϥ7#WP<&ӔS`M\h6n>+{8
+Kk%W:CcXߋXbN:9]P
+!ʍ*fqQ(ݥk{EmyMnPÕS]>%naBF)gA<'<m#
+WcW,X*5Ϟ0]T)
+HW<7ľܤ' YY%#PS. Vn1€F$o䂬tdycO:&5QW͍{HD[jy-[eTAbpd9dvy 3T*%Z(R:%u@
+>7GSk&VbxҊ<=/đKN/_>.#7ѳ&B0{)|b9Š6ϼL *
+."WP5ei8;]}|Or@YL[ײ齁r'3F4Tʥ!Z+X'L$?0٬9D({VFa:BuYC}fcH3lo!v}~ٜ+?R!7Hݘ ǧ om?D6I8݊>H.-"wOG9;ab'qڼt
+ba|EdE߈% ̔ϲk<G
+x4& Poeb:OMsEw9}UY0/*`hfg(~\ZHc:,iŽ\mNa50|W|FDˉi*o_@r5ȠaZz]BN=ˣC -ڵHYDDxPW΂O
+ub xy
+)o߀!JL_zF+ #| x;fDh&(;FɉPtf0RwZ6-iN݉m#X/0T^, p]1KcE$2 2rloQ`TY U(q$y%ו+O2zj4H60lbuZkLnWsϚ!B:\Lg#Q6ԡ3r3MBγW[[_*jX%Qa}; Q[Vy袕
+j,T48"eMr8]q4>_fӊb*N)n8w^(~3$
+o7gqiЗ7-/nɤTaE HW~~xk,1;A;gO?h ^K~٪•)1A~b/z !,MHv=9qɈvmv1.Ϊ/"6kZEv
+>tj /_wN Fқ,UUy G<<Ni]ջFo>{R1E.4kC@'@.lx3򞶄x*)/zZy (
+^uc
+jQ*)V%1ZYwHq4`cb4$[up୆S6[*\d]jоN]Ӱ\HxE]mʢ|0jJɎ)*FP*V?Cm0\vݜIϭ >diz񖽖G~+#X_\޵Tfߚ/o1h6B4tY5Db,| VOSB FxgқfMMGi`h0MMzc12~lĽC4$k̀b檯<4Ok~
+iPk{⒰">0*sWBZ/[+՘}M#G%<E4k9pCxR)DdJ!ZӰJ(UW$V-go9͏@=(3^H \ mr܃Ha
+5$'>Ү)GbkGFm@,hT#qJ 1|JN6 i{ŷjpa pnE~%xY^z3 XĪ(}"
+)dM  A$-!KrqmU/DXz jLmCNX6m
+41/)AiI""
+ʺWDSxo7N]1{1Mx"ɿ3 }ؘȎP]•86$HM ۂ<mȗ銑:0CdoN1onKy5G'I[{!쌖x.t7cNq0aۄm5\.-HM8}%+),Oaj͢8c<m .sRhkt>\4l,wrp2Tfu~MAj5[aL72bEu@<E!;$2 0WL9@Yeq NW!ʋR6q\V0(Π`MWYq2G"
+fi:8f T4u=ϞBT x<'sR‚Uqwk 8Ч Fq֛u,zqhsj/"?w<̳JB-͘!E;i"}<);yx7U[; kwbX:RkL~ӌD~4Ӱqݒ샢t&E6pviGFT&FY4gB[VvRlڞqhIxclNϛ c
+\RBUjך2sWZvh*W {i-uٞK/e@
+vgN >2 柯/u^ 38=`1$Srxr`ЬX52$+=#eeI
+bDű;N h 3Z):
+Nzإq`尉WSc }Z,8/?ՙũKa;SbmTWb
+y
+ t~p h ZVt;A<ٳjZjRA!L(##=T`m."a<OKo$d#Fe{`;O\kfvaiK pp𫠅.}-ˬe:rcG03'\(4amXZD<7Lˈ+LeQ;1d`*x璠m&"0Ȍ^Ʃe
+?zq &qɓ7 !1Wݘ)nKtDn_8Ig|J1,{CgYx: v҄=QΔFq@捅0\(U̴(ft }kA۽[LJdmu@9E$kW*DhlfxҞ05)
+ :U+hR
+'sk }+߁ZꞓFg պ7ęo^^a5a
+*Ty8͞{kX`+7*:lJ= ux8E26drٻv7j㱩97 _?;c.
+';;&<۰ek'f#SX1e¡H &۝A8j]JϔG"NJup=7ϟqx2<$I^d?5O1I B6/?ٞX_5Ÿ HЃ"W%*
+I۲ɵ_@,v7YT{.n bЪĽd~45e#PܿnycQ97}?9V{au D!)
+T
+ͬcBM(XQCn`+". S wDkY@&r
+ϯMTc<sF;YPۂ+$.PK\eQ<`x]->$L̙~7ow=B2ɧ
+=*!3ۚIKnY7p0$Rj~d˞;C&0.-µ\I13}zW]C}UbJ떴X#~dXs :vdn2DSJǮd
+Iyñ7ʹ`~Bc8ߞQ{gr'cݓt睋SWoR$gXɯp_oc~1@ÒTn@Qf|C.c:=2
+_MA%s\K.? vS2P9:Q =+sz iWyNdgk*7R&8]bN|{`y C$t(p/bG.{G`6r'WoUUfZolUt.EEު/ &@u'.L1
+Ȁof!
+42:otAvNcCC&yA-\(|3~|lc^}' q_Zyխ׾EZ  F &nX9T'y"e
+ ޠּU&OۃE없176uʘ &26n/Ä́:v
+c G^bH`ͨRY1Ah:찄pF:D8cb AJy[5u`rOvVTQa"nιYVG43u*kȒ_6ɮV#vrpO2==2Cf#Ucįj*U"bsF$xXT-Bn-c`|{ɒ&QДJ'\Sɋ@w kh{-K qSZ+9!?ޣeS
+_~z|ז%2%ּwF9k(1{D15?>q׌*-F`ar?$*T ICm1lfzC{
+%'4g}мw+='3!dgξ\8$T;&PN]Т-mŸHKN[Rhb̉")9#tlqeNR
+3(an[k*MĮg&xDRm9FYOPi&!JxNء' ( %/ȋ[$PqPye9"AV}zȵv?Ezt'Ȥ,U8r?V5BN2H $?V*)sOq Y΋04Suc=oZ =͗hW/ "u%aM?AB~cVN
+~-]9eF|8a ҉]h/X颢1dSE[.1>JPBq$5TDh?(Y|]*he#.UB7)с4:aнr8_.P0v q&1)u3u& 귳[ &rQ›i~f Tջ[}d꤅ۢ m)u_u.CaU]M9.
+lH#حNH{`)D:A"n`KsK`vF@G]`Rִ"f&u_L`IASLvViXs{'4))xڏIbz}wso8
+=]KNmV-x9xE1pmMpJ4Ġh[@rh3i' P=\`#
+ioFdmꚤbkOl~(\F:\,>=Ɗ3;9غ\2h h9t /Yoۂ ʁZ= *063/TBzGeaǽ/QNBhV; fZz"_ @Z]nN~+6M^
+\JO7dd`~֞`lMqQSJ_Q*ْ\gNpvҰ|oe5\*xCPOX7s[s3+՛ $>.Ug)\-Y:I<0d9-(Z.`aF3 |#-YC&~AP&tN3T?6MFT
+ד9VF_ނQ|e>Q]?s>hjϧ6q^
+&J%7Hy=1N%u<v[;(aĊlDk\VT8)ډZp. ev/#[p1_sǜIZܛPiq"r=>πݤkY2j[K KAŁc&[(dl Gy3<_ uSmQdږ*!i_]#-ƿj$ID ‡?TMk3-$H Fx(RԻ(e|z7!v]O(y/U_V edV~$Cu+&*HM>}IiI1KC'lN5NvYZ7(h!DѶ8d2 ĭ h!J_52!`o_W,* ѴIqx<C72X9[DtRScHA%D;pcʳq9qc)_"ny+>Mɚ~hؗu)Yr NΟVTR?<ktaHgYÖ(=4>wĜRW,ي\ KG~.bQMg1^Z C GiN1q0~Tc+EG6.&)N¤4Zjc>"ռ '{&aLP]41Baߣ
+>0[qZ^C2-{isj6!"O1
+WϚ' 'S\b&YF79/t!߸( #gBR8-r{H+*o<`PAg,|h{4k-[. b<AOn
+2__WUN"oj0cuAy5k)fFc@iz艌~rH,Th+gR9  h?P
+~:r4=7ސ5dp|r$Q$WiH[E.
+IP"HԇU);pX8folg7]l\Jl#̴~\DuEQm7r>ChF4rS:DT?j}Ȉ$Wـl kj7yĭ^ے6Q"RU8R׀Ww
+5mXrݔɫ}RK=<b| QDe
+,`QTGrL@3B2+L! Wocxjnt9J.) \9y}r;di9<=V*8>Z8حe9J׏昖N:K<<\2crB
+j'IUSF_:c"ld5 zN=ht?|pDCOk
+6_>Ύ!c20ǧS(&O+".;=??Aeg`_
+o!%B:>X1sa )AC1 ݘf\"SƻynwDIYg`,,h32;th8 si% 5DTQe
+CVBX 2%։H}/36m2lnzޥSeEa(|!buﶄrw(9Ufo*&+k7教^wN68џl¢8[uNڕRj
+/ +r& !M唟4C>X"B&ߴ)B[ ⇂N5!>n}jO0mš,V)>ˌ-=dm-+"⇚n~0Tέv^=ubBv/s8C@y t|IϐXfgVnd /̑]sW^ڐtҧ0
+z i-XBcАC-~bHAV0eq(cpK%S#T2N~.O)i4ڈٗ96྆#&߃Vt<~\m45AWDa_ ^jV-fQ)Go[=tlf-;
+endstream
+endobj
+11727 0 obj
+<< /Type /FontDescriptor /FontName /GVYJDY+LMMono9-Regular /Flags 4 /FontBBox [ -451 -318 734 1016 ] /Ascent 0 /CapHeight 0 /Descent 0 /ItalicAngle 0 /StemV 74 /XHeight 431 /CharSet( /A /B /C /D /E /F /G /H /I /K /L /M /N /O /P /R /S /T /U /V /W /X /Y /Z /a /ampersand /asciicircum /asciitilde /asterisk /at /b /backslash /bar /braceleft /braceright /bracketleft /bracketright /c /colon /comma /d /dollar /e /eight /equal /exclam /f /five /four /g /grave.ts1 /greater /h /hyphen /i /j /k /l /less /m /n /nine /numbersign /o /one /p /parenleft /parenright /percent /period /plus /q /question /quotedbl /quotesingle.ts1 /r /s /semicolon /seven /six /slash /t /three /two /u /underscore /v /w /x /y /z /zero) /FontFile 11728 0 R >>
+endobj
+11730 0 obj
+<< /Length1 1863 /Length2 22779 /Length3 0 /Filter /FlateDecode /Length 23842 >>
+stream
+xڴyeX[m.Z܃CqwwwIp/P(E7߼3gsJv^ZOޡ&W`
+ ]M]\
+?JXj>Uº0Y]D;@l,_j T:e=zBMtOɏMJl<_Y+([i)X>Hs&#5~">yFaXٱVia7t7v|&Eap E'}>mWGI"79r8?Պ機}2")7+Ɓt)˘6Q\1f$HiYQkV'1 Eӗ
+Ծ, .L(}PZSC ۊ=V2:FJޏ;X\tQxج<yVTst,/~TBd X4*.Ә?o|Vh*M;D o`ШTLX@SP7jrM~_ܣRZ'@ְ=n
+xB~5; ADҩ{~)BUr#"Ƈz#[vju5;1勾V7?ԇ;ˍʫF>%HpYR'=b38fYF:ջ|CкL$%aqpUhayV+"2ZXle_HDJO8~Ѡ8^G 4uR@@LBJ12oؕR:(Llgkgj}q: cw&?z͑MH}zV?BԳhr4F}x0>7R6,^e-sHOFX֛6/!Tx_mIx3ͻ-H5cͷ.˲xD
+i>7L%uT hg2˚՜CMtԵ^8e
+G%ghWw&6B܅'~B)i4. /򰞊,!N|t3>F٫&76=F:H dS{b \]K6_Fw!Cr K:L+ɼlUdSw=!xfMffd="n'ȗӄU\{wydO* үOQwߐ'Axɺ)K3D31弍cEjxV#YJbD{Ix(1^(<-LBDO{(Ar+ lJx!s^C:l0o{L^ I%0,
+U-ϰ$ $|4УP}T"G-\,OōWa`,$ 8ٟ0 4M!%&#C7|v{,DD>
+yGwRHi VQ0'ߵg9H Lxd)k`Ə591>Kfh} dBɰbXI5bt8EtChk63=FX07wZB?,>}&cK(:D!;tcku)Kb5$!=KHSъ r<V=F6 ~ٞib=>=$⿸ᄩMEAW[JxT6=$to%.rRvB!3f?`.Iӂ5A*nթR_ћ e EWkRTX\+Yc䞢̮m)ۂ@hLi0=]@Q]p FbFQx15=q2] b;{alU1#6le'[n;s^^<ӃXfشKbb%=)awւHŭNu݆}!K+/mlLżpM40.s&{m+~3Z (xܡ $Us~9# o\&ZXןco+(69݉ic궰N\4L_hǢ֨0x]ȮY1|0|ߓkP~ DIb&S>9>]e Jwc}8yitPwAtt&I\z~<5 F5Znb eiuCCɋAwI2Qp P[ՓFPN@">Du<?^
+$b4j7bzZ70# !`ɔ_B)!3/6' Ț'.xkC@0cDιu{ mYE>`8P6,C#QiJ!%O6zPȒPlU~Ž D
+nyVC6) m̲.Vbb%}
+iERר(VUΆ鐗셕{ʘhbN2 E rP&|P
+2iij<Qi֜l}˩ %`z^B?w(SE(c%xtF)d9<ˏئK? ]' i"Vi}CDad |Ж4e
+<d v6ڋ>'K+;ǁD\t7҅>Z bi[ Q -pHkDF+<8QR:(bLWJ:Ẍ́1;R/4 d×(XdnE`wL|xhLjfyA>''G}ac= jbj(7v'cLIG,)wc#ze ᕀGA4>JT-AbdO[IRԩiBx=5,o{,gxܷrD&t_ϱ1jYОb2'ߚ@|¡E.#%UO3儭EpI؊PGJr2!wu'TU#1.o볬1w <\
+E܉JN$V
+и찪>
+#?8LB!Ȝ͏0eD}ZoQIH]p 1,I&dFk
+cGq>z1q ظs[/耻h 'ĈOOr9>|1P@7f>ȨiHYM)XX9Ȗ? S>]?6>Lŗ{R<E`kɺ?ȶ%ۊai5
+M; _EI[٭]&4uW۳)$TG_Pvbl#~ڕ_v+t29읝NW{心,EvԕMth򬟂} bny<oy*!OInD@DaDZ1H
+A2]J`!|12[OGȷJc^>y0sɨ@?$:ntew+s 7nDUcYd4։z89k;<*uCS i(҇z}V|V^}tNc~D, %;Ü giI}égi!ug(?(M֗3۵j9}1`6?~D.aqH=Z$t\w% Zi*4 [.2İx$-eK=;mq;_K7qX<xVܭn;U hWٳt+ buuCeSF;mE܅r6Si[*7F BU0NK^wf>a9HQT: uƧtzݬ{<ML"ĸ~l`:V'i\H+eҢt:*n}(^E^=T}֜k9M$r6x' YL?O LlKԛa:3^bjXiZ~Ě!B8K vN"XdvpS>̟fim>aLmw2HVڒ' xx1/z 8netWYL"oSeڸ7 Nz%w=`sLib
+@$H1P(at<|m\c*l$6Y۠щ#=D D9w{XCn)m'6QXXK'RQ5
+ӒAE65[MUװZ%(< j[:OK~ #!Qz ugŪr.h$@m5gct_lc à2&*~3y`sjQ|CD_XǾD&/CbTKr8H5Q{U2v=<a+^FoRΧLi2r<M\dP;@ha|Óx䪿f=%bP ܒ׹  `9/*c&D|LL$_I!OOq&ӹ/+]wkPP-α78 9ݽ. IM#Nnq@b.gf#fS!
+,2;o}dT[)F n=r_P υ;2!R:Lcp:~D[QyV*eZU߭6ed{g9z _t$]Lc͐Dވmk} : Ґ[rM \ݨŸu;ӫzRD-:glW
+
+kLGUiLfl!y%M568Ȍ!j9\쉾`)ֳbbB GFe<о2!qWip!L8,R+'Ub [rE4{/Q?쀚(eD
+a?!'ڦm E*)>9iIW+٧(9(Wä5[C`Yڈ-ㆾч'y'dcJ <>Q`7*W+/^c ,i˿8{soZ"SCƋV;
+_nY_PshK[ 1TITAF/8AmLڒFJܹѐmd-jT$GU-9z-v)n^Å*?q)V@jZ6tO!;nh[Tɿ{Ȑ,BEͭ=>bO w1kF3g;GI8n"Yaȹj?W!ow",NV0_g _٪o#T3'$5N%-7<>pi+0!PES2eQAتoOH,D5s݅5䨵cY^Kh;CMMg3442kY{FIYFŽ=h^@ A1 ӯST z+TCzT]梂>r}Ú
+r}%J)!Ф"ʶp5>w/phz;F|_
+9uQkL4qK'~`v8pZ:bȣY7U],SG$ 5V坷<L um.#Qz' W~dlʍ4JH~xv^-ЍuD{~_<*s測4*ffe5A)Qf硞T-q8UN3_fGx|,F87[ziJh{%W~fF"1";O+q 5
+aMw!O<
+2`=P6^պg=7*lR[9Eȣ0r3zAtգyCU]ۘ2㯿eكusSߏɭ
+O!$YxlWYt#E1-hlSiP/97*o>/q?}m!Ʒ; A(SċA \Mڰйsԍ*Zdι!>[թ6 |RH#b`EvD
+[$ӗc ΃&
+LOq|RfiSw}x
+Ƒ~~s/PC/Ps\ ^oe|3̒Ɵg#+Qyo"=Ki_9GƺX†On]{TY-I?5n7{+zx
+3JhR *
+y0^E*AMpk6ۂvdȣbf1CV|LIEx:4C[ S-3%HtHUȢrf+}qfg)ύaD\eC)JzƟ;D\w-;ղ ޟjx=*PN*DΞ7IwEzg g=8@a満R+\UUo/._[
+
+acWeq
+ЋNsx9-j g# rP/v,4_JVѐ0L?۬hAh9>|M0Ju c^H_Td398Q%p5>z-l5 
+nX7n3v!g'9o+j:}cD|r|7
+MjMO:} ]gl̛Uܞqy
+?WO/G4 ӕ@|Bۍ'G/UukJV:ޭ攏 1"7I2fޒ}/\,XL&kh;0MvDzvr-@ X+}/8Io'̌zk7i~JzMkxD_]-pp nZ`sx__Һ6<%@yJi!Ѐ= ΢"*Cs=VnGE|]"&JD1c[Mz%ln/<=Ez
+8g#}k}H %mBI=R2ZXajW8|ͭ3\CzIʎEn.=a&Ϩiza-r|;3y72^ZObCдj_c+F*MvD/pOr8Vax {|Y,It5d2U&c0#EVU_6N[*rE%
+N31]7̝ݠQB6t6؛m ew& 2dɨYgPfr"+؉@ǒ_%K
+Մ*k!\ ݨ̀Žp^BC8wFu$D ޸hp f`/7Sp';&NEQA[4q(;;Uz]pODmФFj7V02GM6p<dmy^ ۅ [[kZ?
+|B<W_2]I[ö-VN)H%۠B[ m+XƳ|#
+lA4}2dT yڐ[ GĈb=>G4^^\.P:g|OtUBE'$.3 7QPKPu }Ιrϱ?*nďVupPS6=o));wӤ
+l(+<1pB$+h&ݕ^<sFF_k_SZm2q8n(z
++;6jҼ3)x}ӵl1(>B
+PP]5QG)L$VkB_#:)%Aʎ|dャnAiޫROD #4,/z*9=Tؗ{45 ~3SZ~HJ^Jݮ;I}|8ms >ԄWUZ[?za#hI2LԈav/Rb?<SӍɦ%^6 h꼢Y_6IMMW4+OGi_c@=nF RU> mkJ<lU߰AOVH~UjWO&m֪>-GQ< q uY0xQo8<)K9c,묱t34Gk':r(Fkj$lu1n7%~6`]ƺrR aEĥn.l Եt)k0Nٸ5uG|dUBb|HRܽAd^CAϫmzėv_iA-(y{f ȶ$e^1sElEoEn^HL:i1 RIF0?Td횇S&*Q  QcN%]aīda1S„y&,Y''TA<缱LW|5nOhPhpGKTeF;2XK"Bǰ3&Ac(3YFQny+;SV)&Cvi93&sכL0pGp1 }<C͌i
+;ȿ k,[.p%8jn-U%^W5~cYM
+< ;mW<C'?$a.ר4ާ|~n/81g4Jˉ ['yXk\$Ͽ#a$h̎ ,"Opzژ’3(N1`D=٪Ŋ
+h$p(9]"oڗwyƓXQ(X OS8i@{ocvRoLHZ1:&cMbbHÑ+0cgNJxrd OI7
+6
+u΄oqQHG{Atmf>O:. ~"Gr-}u{%3 6WH:BΡGFuAE5 -Ã<܇x:ҋ_kwX6vn}f,NFL񡗿Tɗ~4:"i$ iSk_x(@ %i "n
+ޫ"G^M[ @${paK2QSWW#K{kRŪQwcC_rR?.Op%bm|,Ed`.՛ 'pWGbo 38w Ke/> 3Shrt%[ 0'R |<OH?p {߶̱-MXۑxg&|srgol;;J3Z\Qo/cʑ ]1ccIQq)ˌã[H1I"h݋ѕ^Xha~/צ!`,&h'Q.U;Ɍ$75YճiLD{lKv&<ܧ Rvf=|2F9#osvVomD!M}>hGAhpK6p\Vviu
+"S(uΓ#\}Nq
+:xg)O~NN#]D NhDjFtx[W{MD;@<gfQG2JXҍƳDC+q3+r0^হI!]_zFqXuKo8%c&c_-?)J9r ◎|y}/q(
+oR$1E$$x8H䱲YdGO~.uQ+n@7
+]D@Q#߱2yf;ME(ƺt*qNq0 ml6FLl۶Ƥm;۶mz^'k]VBZzҜ;,cP@Ʊ A?$MJw^Gӫc5]WqxbZ8S=RRԤ{}Ӡ)h%._'V`9*Aj 7yX,tAc)Iܔ(co#a;=-L"!z% z].σEjn˜ﭨ_LijB]f?;<-2˸GתPD44&39;gKRex;ˏ}ۈGOUNŗy;9D!X4ĩoA۝=Gv3D9e2qlC1!(Ĭf>bhq
+Q/s6Gh"+>IÞߍfּ)NAcLSxԟPsq,$>2XKQS} z3[gu*x)u9 r kRou!ʀ/_ib1ĮEǟIb7hGC>--ŏTŢE<>>r }2"59BOvy#*xxԘEڥ5
+iϕCo\N<PPWa/)}+;uCή6tNlT1[?uo9nbm
+R-VdZ!+HL)kΟO\]H3ۧ8C}(< 7.@W8v,1$cBH%)8f{bZ x^uEǾkCµ=&dbZj/,7f8G#%ϖI9uMC]@bXAI,pMm3^y
+TzK`/W=I&2dmB=;=6;TǠ3P[q G{U%F?HO7oC؁_ԀC#eU:OZ"u~ix bv ټ5{aQ.#+Rro~I<<l;dM.J>s7Z;w.w'bA%!P1Rz fWOyJ*b-;3GXGV=SY2)W˖CLsʖ\-tBq:K?愾54) Yoҋ/ EFa3L 9aRI?Mp4YMÚ՚U}a|!kWi&CA$$ZyˑbMI@'ڦ?Ck[
+Wn|b̾h^K?͹׷0H ݶ19N$ƨ5X 3tg5<H9WZc>0ڤ̃
+sϫ %bk Vf؀YY+Zx%gwLD?iJ~԰4O5;){Lx&5s=&N" lW5]ۥH܋@xsf1r
+
+.HŒG1Y +h6&F^.dl٩Xm`7|x(dm}NTNqJPԕŒTV_K
+j~iD)pϮ׾UmStԏ^ɉ qi4)#}Zs
+T~`D'~H(&}#r;Ĉ>0(GU.7H*Qjx]ʡCUD!w0s?yNy̵b63 yoh1ėi:͗Vg/COK,Hp( #DϚʪ^
+5K y\ Xe.GNprb6Hz!Ӣ&6f^/e(3)\
+E޳+n̨|z,('NWƧGϹVns2('N7nbl#6 @ ¼5'tv0t)e VGW9F$X%dfT fyBgs"EQ{͖*UjfUrrD'LFĔx`_%w˦xhˀlO7b}Q33d$9'kKX*b穢O1;؈!'T7.=CI4"yT گ<<ԅ=t~(DrE+&CJqmFܡlx=EW 1x/ cY4 1K* [8Џ3jzDap,,k]rX$Dcxmx8DH^`ÌW`]:<,{檐M*i2o׉B9!2 )?j[a<(PW'M?fXA
+jes`Aq|=:|Ŀ#+4NnQ1X R6JbL!qL?;N̶e(6Us%߅<-=h?v
+Jk$޽c[@{127>f:8_r}I-OBFeK覰**(P܏5M޽6zF0xs<=[-0-u!߰ǩ[91̌hYfHk2
+eBt~|EFwpASBC߅m?<Ut `dGckIoTR$jG7FR&鰲Žڕ|}-xnauX!9j\9}8j~E|
+C3_cY7])ir3.CѨ.A}qlF[DjUk
+;*ߍd8"93V1 5 ~I^jf<6MywAy+g5pϹseޒG{~f~Z?f*Yl8{]Sདྷ F6v?5,Tx($5W2ǟ>-o-j~P$2a3~N23!La\eP4Ĝ%d#t]}$2<X񓌑~+cs$r;lZ<~f>ܮYVk("OnwkieJ^
+mU1Wx%@,1Ё:㍛dIDts_g
+qp r~/n
+{t֦~X
+j2yuSd!Bbn1?Hy YSw\L kO`ӺܶY*՗9D)r9R줉TZG;o*{&+SBᮈ4~E rdbF=dT<~K&Zb_rQJxv~ݒ%E顈P?~?Ѧ}X)fGo8@
+p&Yנ- +j/7
+Al)
+oSD&UAUm͕fҎ]26JO%~kA$c!F%޵Iy*#;3KQ9FR߳gȽV:B =b_աZsT5r(|zCLE;@u#'D{5P,яr&]>B15KȂEcSqg|"5fYn*sKPb|qml8ɣ5|D=TÅS3w(g&|Wrο~lwrL AַqS
+4;dkTX+tU>\ht^4Hns=S=F
+9ׇjlz;x?#7SB;8>\ܳc^@=R<aX5u*xG&9J,-S`
+ip6?2M /2ܵKo~X:S\<=:\UTQ '2\lDa1wµd[,64ąWbJ]ΑQglB<URQjSC1.[Ͼ.V~h\1TeT6/ Fkhfʃ?߆mENd@en4Ķp8Qc/Lu Dn83xH0b
+NLVϺ(GkI4tըkgy[d]z.g0ѯ.BD J_KZZv+L퀩=YڰE@0,o(27&Z,=6C}"0 >PqvʵF 7hp h!7^>N0݈(994"E| \7*
+{H #taQ+MCfפ~\=謆n6F="T Q*7(Ɔ;GAZ=&X"\7=O#8̊䳏_6Yuw1BS2V1Yr=(+qs~`
+(3`*J>$C
+S)<fAg/R6Jſ=rZ cX%Bs>M
+/)1fXf5DJhl3:ei+-aʤe[
+endstream
+endobj
+11729 0 obj
+<< /Type /FontDescriptor /FontName /NWBRFF+LMMonoSlant10-Regular /Flags 4 /FontBBox [ -477 -316 786 1016 ] /Ascent 599 /CapHeight 599 /Descent -222 /ItalicAngle -9 /StemV 69 /XHeight 431 /CharSet( /a /b /e /f /h /i /j /l /n /o /r /t /u /x) /FontFile 11730 0 R >>
+endobj
+11638 0 obj
+<< /Type /Encoding /Differences [ 16 /quotedblleft /quotedblright 21 /endash /emdash 27 /ff /fi /fl /ffi 33 /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P 82 /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde ] >>
+endobj
+11636 0 obj
+<< /Type /Encoding /Differences [ 48 /parenlefttp /parenrighttp /bracketlefttp /bracketrighttp /bracketleftbt /bracketrightbt 64 /parenleftbt /parenrightbt ] >>
+endobj
+11634 0 obj
+<< /Type /Encoding /Differences [ 62 /greater 96 /lscript /a /b /c 105 /i /j /k /l 110 /n 120 /x /y ] >>
+endobj
+11642 0 obj
+<< /Type /Encoding /Differences [ 0 /minus 3 /asteriskmath ] >>
+endobj
+11640 0 obj
+<< /Type /Encoding /Differences [ 1 /Delta 43 /plus 48 /zero /one /two /three /four /five /six /seven ] >>
+endobj
+11646 0 obj
+<< /Type /Encoding /Differences [ 39 /quotesingle.ts1 96 /grave.ts1 136 /bullet ] >>
+endobj
+749 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /OCVDMH+LMRoman10-Bold /FontDescriptor 11673 0 R /FirstChar 21 /LastChar 125 /Widths 11645 0 R /Encoding 11638 0 R >>
+endobj
+187 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /LCRVQF+LMRoman12-Bold /FontDescriptor 11675 0 R /FirstChar 28 /LastChar 125 /Widths 11659 0 R /Encoding 11638 0 R >>
+endobj
+179 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /WCAPHI+LMRoman9-Bold /FontDescriptor 11677 0 R /FirstChar 65 /LastChar 116 /Widths 11667 0 R /Encoding 11638 0 R >>
+endobj
+556 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /YSYFAJ+LMRomanCaps10-Regular /FontDescriptor 11679 0 R /FirstChar 97 /LastChar 115 /Widths 11650 0 R /Encoding 11638 0 R >>
+endobj
+184 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /CVXELO+LMRoman10-Regular /FontDescriptor 11687 0 R /FirstChar 16 /LastChar 122 /Widths 11662 0 R /Encoding 11638 0 R >>
+endobj
+177 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /RBJMPF+LMRoman12-Regular /FontDescriptor 11689 0 R /FirstChar 44 /LastChar 121 /Widths 11669 0 R /Encoding 11638 0 R >>
+endobj
+174 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /JTSGNV+LMRoman17-Regular /FontDescriptor 11691 0 R /FirstChar 84 /LastChar 116 /Widths 11672 0 R /Encoding 11638 0 R >>
+endobj
+480 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /HUFBEO+LMRoman6-Regular /FontDescriptor 11693 0 R /FirstChar 48 /LastChar 57 /Widths 11651 0 R /Encoding 11638 0 R >>
+endobj
+473 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /SXHXQW+LMRoman7-Regular /FontDescriptor 11695 0 R /FirstChar 48 /LastChar 57 /Widths 11652 0 R /Encoding 11638 0 R >>
+endobj
+205 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /PQFDKJ+LMRoman8-Regular /FontDescriptor 11697 0 R /FirstChar 16 /LastChar 122 /Widths 11656 0 R /Encoding 11638 0 R >>
+endobj
+180 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /BYGIQZ+LMRoman9-Regular /FontDescriptor 11699 0 R /FirstChar 39 /LastChar 119 /Widths 11666 0 R /Encoding 11638 0 R >>
+endobj
+318 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /NRYMBG+LMRoman10-Italic /FontDescriptor 11701 0 R /FirstChar 28 /LastChar 121 /Widths 11653 0 R /Encoding 11638 0 R >>
+endobj
+182 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /TXCPTT+LMRoman9-Italic /FontDescriptor 11703 0 R /FirstChar 110 /LastChar 116 /Widths 11664 0 R /Encoding 11638 0 R >>
+endobj
+317 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /IATCRU+LMRomanSlant10-Regular /FontDescriptor 11705 0 R /FirstChar 40 /LastChar 121 /Widths 11654 0 R /Encoding 11638 0 R >>
+endobj
+185 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /DXGFLV+LMSans10-Regular /FontDescriptor 11707 0 R /FirstChar 27 /LastChar 121 /Widths 11661 0 R /Encoding 11638 0 R >>
+endobj
+175 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /MOYMBT+LMSans17-Regular /FontDescriptor 11709 0 R /FirstChar 97 /LastChar 120 /Widths 11671 0 R /Encoding 11638 0 R >>
+endobj
+189 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /MMROMK+LMSans8-Regular /FontDescriptor 11711 0 R /FirstChar 48 /LastChar 120 /Widths 11658 0 R /Encoding 11638 0 R >>
+endobj
+181 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /JJEEWR+LMSans9-Regular /FontDescriptor 11713 0 R /FirstChar 97 /LastChar 120 /Widths 11665 0 R /Encoding 11638 0 R >>
+endobj
+186 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /JLHGIY+LMMono10-Regular /FontDescriptor 11721 0 R /FirstChar 33 /LastChar 125 /Widths 11660 0 R /Encoding 11638 0 R >>
+endobj
+178 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /NRLLYV+LMMono12-Regular /FontDescriptor 11723 0 R /FirstChar 46 /LastChar 121 /Widths 11668 0 R /Encoding 11638 0 R >>
+endobj
+768 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /REBVUK+LMMono8-Regular /FontDescriptor 11725 0 R /FirstChar 44 /LastChar 125 /Widths 11644 0 R /Encoding 11638 0 R >>
+endobj
+183 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /GVYJDY+LMMono9-Regular /FontDescriptor 11727 0 R /FirstChar 33 /LastChar 126 /Widths 11663 0 R /Encoding 11638 0 R >>
+endobj
+811 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /NWBRFF+LMMonoSlant10-Regular /FontDescriptor 11729 0 R /FirstChar 97 /LastChar 120 /Widths 11639 0 R /Encoding 11638 0 R >>
+endobj
+1809 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /WOCBGC+LMMathExtension10-Regular /FontDescriptor 11681 0 R /FirstChar 48 /LastChar 65 /Widths 11637 0 R /Encoding 11636 0 R >>
+endobj
+662 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /YCPAMU+LMMathItalic10-Regular /FontDescriptor 11683 0 R /FirstChar 62 /LastChar 121 /Widths 11648 0 R /Encoding 11634 0 R >>
+endobj
+4545 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /JMCQJH+LMMathItalic7-Regular /FontDescriptor 11685 0 R /FirstChar 120 /LastChar 121 /Widths 11635 0 R /Encoding 11634 0 R >>
+endobj
+176 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /FACRCI+LMMathSymbols10-Regular /FontDescriptor 11715 0 R /FirstChar 0 /LastChar 3 /Widths 11670 0 R /Encoding 11642 0 R >>
+endobj
+204 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /DTFCKV+LMMathSymbols6-Regular /FontDescriptor 11717 0 R /FirstChar 3 /LastChar 3 /Widths 11657 0 R /Encoding 11642 0 R >>
+endobj
+769 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /ANTVSN+LMMathSymbols8-Regular /FontDescriptor 11719 0 R /FirstChar 0 /LastChar 0 /Widths 11643 0 R /Encoding 11642 0 R >>
+endobj
+660 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /CVXELO+LMRoman10-Regular /FontDescriptor 11687 0 R /FirstChar 1 /LastChar 55 /Widths 11649 0 R /Encoding 11640 0 R >>
+endobj
+770 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /PQFDKJ+LMRoman8-Regular /FontDescriptor 11697 0 R /FirstChar 48 /LastChar 49 /Widths 11641 0 R /Encoding 11640 0 R >>
+endobj
+668 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /CVXELO+LMRoman10-Regular /FontDescriptor 11687 0 R /FirstChar 136 /LastChar 136 /Widths 11647 0 R /Encoding 11646 0 R >>
+endobj
+264 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /GVYJDY+LMMono9-Regular /FontDescriptor 11727 0 R /FirstChar 39 /LastChar 96 /Widths 11655 0 R /Encoding 11646 0 R >>
+endobj
+206 0 obj
+<< /Type /Pages /Parent 11731 0 R /Count 10 /Kids [ 169 0 R 208 0 R 255 0 R 302 0 R 341 0 R 385 0 R 431 0 R 484 0 R 532 0 R 564 0 R ] >>
+endobj
+603 0 obj
+<< /Type /Pages /Parent 11731 0 R /Count 10 /Kids [ 584 0 R 605 0 R 632 0 R 656 0 R 679 0 R 699 0 R 726 0 R 754 0 R 773 0 R 808 0 R ] >>
+endobj
+871 0 obj
+<< /Type /Pages /Parent 11731 0 R /Count 10 /Kids [ 829 0 R 873 0 R 921 0 R 965 0 R 1010 0 R 1055 0 R 1083 0 R 1104 0 R 1144 0 R 1198 0 R ] >>
+endobj
+1316 0 obj
+<< /Type /Pages /Parent 11731 0 R /Count 10 /Kids [ 1260 0 R 1318 0 R 1381 0 R 1440 0 R 1486 0 R 1541 0 R 1569 0 R 1618 0 R 1681 0 R 1715 0 R ] >>
+endobj
+1810 0 obj
+<< /Type /Pages /Parent 11731 0 R /Count 10 /Kids [ 1768 0 R 1812 0 R 1857 0 R 1914 0 R 1964 0 R 2007 0 R 2062 0 R 2099 0 R 2132 0 R 2170 0 R ] >>
+endobj
+2254 0 obj
+<< /Type /Pages /Parent 11731 0 R /Count 10 /Kids [ 2213 0 R 2256 0 R 2313 0 R 2368 0 R 2409 0 R 2457 0 R 2513 0 R 2565 0 R 2607 0 R 2656 0 R ] >>
+endobj
+2759 0 obj
+<< /Type /Pages /Parent 11731 0 R /Count 10 /Kids [ 2705 0 R 2762 0 R 2817 0 R 2877 0 R 2929 0 R 2967 0 R 3017 0 R 3068 0 R 3123 0 R 3180 0 R ] >>
+endobj
+3298 0 obj
+<< /Type /Pages /Parent 11731 0 R /Count 10 /Kids [ 3240 0 R 3300 0 R 3335 0 R 3382 0 R 3427 0 R 3483 0 R 3537 0 R 3588 0 R 3638 0 R 3683 0 R ] >>
+endobj
+3784 0 obj
+<< /Type /Pages /Parent 11731 0 R /Count 10 /Kids [ 3733 0 R 3786 0 R 3845 0 R 3889 0 R 3926 0 R 3974 0 R 4030 0 R 4090 0 R 4149 0 R 4202 0 R ] >>
+endobj
+4299 0 obj
+<< /Type /Pages /Parent 11731 0 R /Count 10 /Kids [ 4255 0 R 4301 0 R 4360 0 R 4418 0 R 4467 0 R 4515 0 R 4567 0 R 4607 0 R 4645 0 R 4698 0 R ] >>
+endobj
+4783 0 obj
+<< /Type /Pages /Parent 11732 0 R /Count 10 /Kids [ 4756 0 R 4785 0 R 4840 0 R 4905 0 R 4947 0 R 5013 0 R 5068 0 R 5110 0 R 5159 0 R 5221 0 R ] >>
+endobj
+5315 0 obj
+<< /Type /Pages /Parent 11732 0 R /Count 10 /Kids [ 5266 0 R 5317 0 R 5360 0 R 5406 0 R 5444 0 R 5493 0 R 5550 0 R 5604 0 R 5667 0 R 5718 0 R ] >>
+endobj
+5841 0 obj
+<< /Type /Pages /Parent 11732 0 R /Count 10 /Kids [ 5780 0 R 5843 0 R 5894 0 R 5957 0 R 6013 0 R 6066 0 R 6109 0 R 6142 0 R 6197 0 R 6257 0 R ] >>
+endobj
+6334 0 obj
+<< /Type /Pages /Parent 11732 0 R /Count 10 /Kids [ 6283 0 R 6336 0 R 6386 0 R 6439 0 R 6483 0 R 6537 0 R 6581 0 R 6640 0 R 6695 0 R 6744 0 R ] >>
+endobj
+6821 0 obj
+<< /Type /Pages /Parent 11732 0 R /Count 10 /Kids [ 6781 0 R 6823 0 R 6864 0 R 6904 0 R 6951 0 R 7012 0 R 7074 0 R 7123 0 R 7179 0 R 7242 0 R ] >>
+endobj
+7337 0 obj
+<< /Type /Pages /Parent 11732 0 R /Count 10 /Kids [ 7287 0 R 7339 0 R 7389 0 R 7444 0 R 7489 0 R 7550 0 R 7609 0 R 7645 0 R 7702 0 R 7750 0 R ] >>
+endobj
+7834 0 obj
+<< /Type /Pages /Parent 11732 0 R /Count 10 /Kids [ 7797 0 R 7837 0 R 7885 0 R 7944 0 R 7991 0 R 8045 0 R 8082 0 R 8119 0 R 8150 0 R 8199 0 R ] >>
+endobj
+8304 0 obj
+<< /Type /Pages /Parent 11732 0 R /Count 10 /Kids [ 8250 0 R 8306 0 R 8356 0 R 8410 0 R 8476 0 R 8528 0 R 8579 0 R 8643 0 R 8682 0 R 8733 0 R ] >>
+endobj
+8862 0 obj
+<< /Type /Pages /Parent 11732 0 R /Count 10 /Kids [ 8799 0 R 8864 0 R 8919 0 R 8981 0 R 9041 0 R 9102 0 R 9163 0 R 9221 0 R 9269 0 R 9324 0 R ] >>
+endobj
+9414 0 obj
+<< /Type /Pages /Parent 11732 0 R /Count 10 /Kids [ 9367 0 R 9417 0 R 9459 0 R 9503 0 R 9561 0 R 9620 0 R 9668 0 R 9731 0 R 9784 0 R 9839 0 R ] >>
+endobj
+9927 0 obj
+<< /Type /Pages /Parent 11733 0 R /Count 10 /Kids [ 9878 0 R 9929 0 R 9982 0 R 10044 0 R 10107 0 R 10167 0 R 10232 0 R 10295 0 R 10362 0 R 10415 0 R ] >>
+endobj
+10517 0 obj
+<< /Type /Pages /Parent 11733 0 R /Count 10 /Kids [ 10476 0 R 10519 0 R 10579 0 R 10642 0 R 10706 0 R 10771 0 R 10835 0 R 10899 0 R 10964 0 R 11028 0 R ] >>
+endobj
+11155 0 obj
+<< /Type /Pages /Parent 11733 0 R /Count 10 /Kids [ 11092 0 R 11157 0 R 11223 0 R 11290 0 R 11355 0 R 11420 0 R 11487 0 R 11554 0 R 11616 0 R 11630 0 R ] >>
+endobj
+11731 0 obj
+<< /Type /Pages /Parent 11734 0 R /Count 100 /Kids [ 206 0 R 603 0 R 871 0 R 1316 0 R 1810 0 R 2254 0 R 2759 0 R 3298 0 R 3784 0 R 4299 0 R ] >>
+endobj
+11732 0 obj
+<< /Type /Pages /Parent 11734 0 R /Count 100 /Kids [ 4783 0 R 5315 0 R 5841 0 R 6334 0 R 6821 0 R 7337 0 R 7834 0 R 8304 0 R 8862 0 R 9414 0 R ] >>
+endobj
+11733 0 obj
+<< /Type /Pages /Parent 11734 0 R /Count 30 /Kids [ 9927 0 R 10517 0 R 11155 0 R ] >>
+endobj
+11734 0 obj
+<< /Type /Pages /Count 230 /Kids [ 11731 0 R 11732 0 R 11733 0 R ] >>
+endobj
+11735 0 obj
+<< /Type /Outlines /First 6 0 R /Last 166 0 R /Count 41 >>
+endobj
+166 0 obj
+<< /Title 167 0 R /A 164 0 R /Parent 11735 0 R /Prev 162 0 R >>
+endobj
+162 0 obj
+<< /Title 163 0 R /A 160 0 R /Parent 11735 0 R /Prev 158 0 R /Next 166 0 R >>
+endobj
+158 0 obj
+<< /Title 159 0 R /A 156 0 R /Parent 11735 0 R /Prev 154 0 R /Next 162 0 R >>
+endobj
+154 0 obj
+<< /Title 155 0 R /A 152 0 R /Parent 11735 0 R /Prev 150 0 R /Next 158 0 R >>
+endobj
+150 0 obj
+<< /Title 151 0 R /A 148 0 R /Parent 11735 0 R /Prev 146 0 R /Next 154 0 R >>
+endobj
+146 0 obj
+<< /Title 147 0 R /A 144 0 R /Parent 11735 0 R /Prev 142 0 R /Next 150 0 R >>
+endobj
+142 0 obj
+<< /Title 143 0 R /A 140 0 R /Parent 11735 0 R /Prev 138 0 R /Next 146 0 R >>
+endobj
+138 0 obj
+<< /Title 139 0 R /A 136 0 R /Parent 11735 0 R /Prev 134 0 R /Next 142 0 R >>
+endobj
+134 0 obj
+<< /Title 135 0 R /A 132 0 R /Parent 11735 0 R /Prev 130 0 R /Next 138 0 R >>
+endobj
+130 0 obj
+<< /Title 131 0 R /A 128 0 R /Parent 11735 0 R /Prev 126 0 R /Next 134 0 R >>
+endobj
+126 0 obj
+<< /Title 127 0 R /A 124 0 R /Parent 11735 0 R /Prev 122 0 R /Next 130 0 R >>
+endobj
+122 0 obj
+<< /Title 123 0 R /A 120 0 R /Parent 11735 0 R /Prev 118 0 R /Next 126 0 R >>
+endobj
+118 0 obj
+<< /Title 119 0 R /A 116 0 R /Parent 11735 0 R /Prev 114 0 R /Next 122 0 R >>
+endobj
+114 0 obj
+<< /Title 115 0 R /A 112 0 R /Parent 11735 0 R /Prev 110 0 R /Next 118 0 R >>
+endobj
+110 0 obj
+<< /Title 111 0 R /A 108 0 R /Parent 11735 0 R /Prev 106 0 R /Next 114 0 R >>
+endobj
+106 0 obj
+<< /Title 107 0 R /A 104 0 R /Parent 11735 0 R /Prev 102 0 R /Next 110 0 R >>
+endobj
+102 0 obj
+<< /Title 103 0 R /A 100 0 R /Parent 11735 0 R /Prev 98 0 R /Next 106 0 R >>
+endobj
+98 0 obj
+<< /Title 99 0 R /A 96 0 R /Parent 11735 0 R /Prev 94 0 R /Next 102 0 R >>
+endobj
+94 0 obj
+<< /Title 95 0 R /A 92 0 R /Parent 11735 0 R /Prev 90 0 R /Next 98 0 R >>
+endobj
+90 0 obj
+<< /Title 91 0 R /A 88 0 R /Parent 11735 0 R /Prev 86 0 R /Next 94 0 R >>
+endobj
+86 0 obj
+<< /Title 87 0 R /A 84 0 R /Parent 11735 0 R /Prev 82 0 R /Next 90 0 R >>
+endobj
+82 0 obj
+<< /Title 83 0 R /A 80 0 R /Parent 11735 0 R /Prev 78 0 R /Next 86 0 R >>
+endobj
+78 0 obj
+<< /Title 79 0 R /A 76 0 R /Parent 11735 0 R /Prev 74 0 R /Next 82 0 R >>
+endobj
+74 0 obj
+<< /Title 75 0 R /A 72 0 R /Parent 11735 0 R /Prev 70 0 R /Next 78 0 R >>
+endobj
+70 0 obj
+<< /Title 71 0 R /A 68 0 R /Parent 11735 0 R /Prev 66 0 R /Next 74 0 R >>
+endobj
+66 0 obj
+<< /Title 67 0 R /A 64 0 R /Parent 11735 0 R /Prev 62 0 R /Next 70 0 R >>
+endobj
+62 0 obj
+<< /Title 63 0 R /A 60 0 R /Parent 11735 0 R /Prev 58 0 R /Next 66 0 R >>
+endobj
+58 0 obj
+<< /Title 59 0 R /A 56 0 R /Parent 11735 0 R /Prev 54 0 R /Next 62 0 R >>
+endobj
+54 0 obj
+<< /Title 55 0 R /A 52 0 R /Parent 11735 0 R /Prev 50 0 R /Next 58 0 R >>
+endobj
+50 0 obj
+<< /Title 51 0 R /A 48 0 R /Parent 11735 0 R /Prev 46 0 R /Next 54 0 R >>
+endobj
+46 0 obj
+<< /Title 47 0 R /A 44 0 R /Parent 11735 0 R /Prev 42 0 R /Next 50 0 R >>
+endobj
+42 0 obj
+<< /Title 43 0 R /A 40 0 R /Parent 11735 0 R /Prev 38 0 R /Next 46 0 R >>
+endobj
+38 0 obj
+<< /Title 39 0 R /A 36 0 R /Parent 11735 0 R /Prev 34 0 R /Next 42 0 R >>
+endobj
+34 0 obj
+<< /Title 35 0 R /A 32 0 R /Parent 11735 0 R /Prev 30 0 R /Next 38 0 R >>
+endobj
+30 0 obj
+<< /Title 31 0 R /A 28 0 R /Parent 11735 0 R /Prev 26 0 R /Next 34 0 R >>
+endobj
+26 0 obj
+<< /Title 27 0 R /A 24 0 R /Parent 11735 0 R /Prev 22 0 R /Next 30 0 R >>
+endobj
+22 0 obj
+<< /Title 23 0 R /A 20 0 R /Parent 11735 0 R /Prev 18 0 R /Next 26 0 R >>
+endobj
+18 0 obj
+<< /Title 19 0 R /A 16 0 R /Parent 11735 0 R /Prev 14 0 R /Next 22 0 R >>
+endobj
+14 0 obj
+<< /Title 15 0 R /A 12 0 R /Parent 11735 0 R /Prev 10 0 R /Next 18 0 R >>
+endobj
+10 0 obj
+<< /Title 11 0 R /A 8 0 R /Parent 11735 0 R /Prev 6 0 R /Next 14 0 R >>
+endobj
+6 0 obj
+<< /Title 7 0 R /A 4 0 R /Parent 11735 0 R /Next 10 0 R >>
+endobj
+11736 0 obj
+<< /Names [ (Doc-Start) 173 0 R (HD.1) 188 0 R (HD.10) 198 0 R (HD.100) 300 0 R (HD.1000) 1341 0 R (HD.10000) 11154 0 R (HD.10001) 11160 0 R (HD.10002) 11161 0 R (HD.10003) 11162 0 R (HD.10004) 11163 0 R (HD.10005) 11164 0 R (HD.10006) 11165 0 R (HD.10007) 11166 0 R (HD.10008) 11167 0 R (HD.10009) 11168 0 R (HD.1001) 1342 0 R (HD.10010) 11169 0 R (HD.10011) 11170 0 R (HD.10012) 11171 0 R (HD.10013) 11172 0 R (HD.10014) 11173 0 R (HD.10015) 11174 0 R (HD.10016) 11175 0 R (HD.10017) 11176 0 R (HD.10018) 11177 0 R (HD.10019) 11178 0 R (HD.1002) 1343 0 R (HD.10020) 11179 0 R (HD.10021) 11180 0 R (HD.10022) 11181 0 R (HD.10023) 11182 0 R (HD.10024) 11183 0 R ] /Limits [ (Doc-Start) (HD.10024) ] >>
+endobj
+11737 0 obj
+<< /Names [ (HD.10025) 11184 0 R (HD.10026) 11185 0 R (HD.10027) 11186 0 R (HD.10028) 11187 0 R (HD.10029) 11188 0 R (HD.1003) 1344 0 R (HD.10030) 11189 0 R (HD.10031) 11190 0 R (HD.10032) 11191 0 R (HD.10033) 11192 0 R (HD.10034) 11193 0 R (HD.10035) 11194 0 R (HD.10036) 11195 0 R (HD.10037) 11196 0 R (HD.10038) 11197 0 R (HD.10039) 11198 0 R (HD.1004) 1345 0 R (HD.10040) 11199 0 R (HD.10041) 11200 0 R (HD.10042) 11201 0 R (HD.10043) 11202 0 R (HD.10044) 11203 0 R (HD.10045) 11204 0 R (HD.10046) 11205 0 R (HD.10047) 11206 0 R (HD.10048) 11207 0 R (HD.10049) 11208 0 R (HD.1005) 1346 0 R (HD.10050) 11209 0 R (HD.10051) 11210 0 R (HD.10052) 11211 0 R (HD.10053) 11212 0 R ] /Limits [ (HD.10025) (HD.10053) ] >>
+endobj
+11738 0 obj
+<< /Names [ (HD.10054) 11213 0 R (HD.10055) 11214 0 R (HD.10056) 11215 0 R (HD.10057) 11216 0 R (HD.10058) 11217 0 R (HD.10059) 11218 0 R (HD.1006) 1347 0 R (HD.10060) 11219 0 R (HD.10061) 11220 0 R (HD.10062) 11221 0 R (HD.10063) 11226 0 R (HD.10064) 11227 0 R (HD.10065) 11228 0 R (HD.10066) 11229 0 R (HD.10067) 11230 0 R (HD.10068) 11231 0 R (HD.10069) 11232 0 R (HD.1007) 1348 0 R (HD.10070) 11233 0 R (HD.10071) 11234 0 R (HD.10072) 11235 0 R (HD.10073) 11236 0 R (HD.10074) 11237 0 R (HD.10075) 11238 0 R (HD.10076) 11239 0 R (HD.10077) 11240 0 R (HD.10078) 11241 0 R (HD.10079) 11242 0 R (HD.1008) 1349 0 R (HD.10080) 11243 0 R (HD.10081) 11244 0 R (HD.10082) 11245 0 R ] /Limits [ (HD.10054) (HD.10082) ] >>
+endobj
+11739 0 obj
+<< /Names [ (HD.10083) 11246 0 R (HD.10084) 11247 0 R (HD.10085) 11248 0 R (HD.10086) 11249 0 R (HD.10087) 11250 0 R (HD.10088) 11251 0 R (HD.10089) 11252 0 R (HD.1009) 1350 0 R (HD.10090) 11253 0 R (HD.10091) 11254 0 R (HD.10092) 11255 0 R (HD.10093) 11256 0 R (HD.10094) 11257 0 R (HD.10095) 11258 0 R (HD.10096) 11259 0 R (HD.10097) 11260 0 R (HD.10098) 11261 0 R (HD.10099) 11262 0 R (HD.101) 305 0 R (HD.1010) 1351 0 R (HD.10100) 11263 0 R (HD.10101) 11264 0 R (HD.10102) 11265 0 R (HD.10103) 11266 0 R (HD.10104) 11267 0 R (HD.10105) 11268 0 R (HD.10106) 11269 0 R (HD.10107) 11270 0 R (HD.10108) 11271 0 R (HD.10109) 11272 0 R (HD.1011) 1352 0 R (HD.10110) 11273 0 R ] /Limits [ (HD.10083) (HD.10110) ] >>
+endobj
+11740 0 obj
+<< /Names [ (HD.10111) 11274 0 R (HD.10112) 11275 0 R (HD.10113) 11276 0 R (HD.10114) 11277 0 R (HD.10115) 11278 0 R (HD.10116) 11279 0 R (HD.10117) 11280 0 R (HD.10118) 11281 0 R (HD.10119) 11282 0 R (HD.1012) 1353 0 R (HD.10120) 11283 0 R (HD.10121) 11284 0 R (HD.10122) 11285 0 R (HD.10123) 11286 0 R (HD.10124) 11287 0 R (HD.10125) 11288 0 R (HD.10126) 11293 0 R (HD.10127) 11294 0 R (HD.10128) 11295 0 R (HD.10129) 11296 0 R (HD.1013) 1354 0 R (HD.10130) 11297 0 R (HD.10131) 11298 0 R (HD.10132) 11299 0 R (HD.10133) 11300 0 R (HD.10134) 11301 0 R (HD.10135) 11302 0 R (HD.10136) 11303 0 R (HD.10137) 11304 0 R (HD.10138) 11305 0 R (HD.10139) 11306 0 R (HD.1014) 1355 0 R ] /Limits [ (HD.10111) (HD.1014) ] >>
+endobj
+11741 0 obj
+<< /Names [ (HD.10140) 11307 0 R (HD.10141) 11308 0 R (HD.10142) 11309 0 R (HD.10143) 11310 0 R (HD.10144) 11311 0 R (HD.10145) 11312 0 R (HD.10146) 11313 0 R (HD.10147) 11314 0 R (HD.10148) 11315 0 R (HD.10149) 11316 0 R (HD.1015) 1356 0 R (HD.10150) 11317 0 R (HD.10151) 11318 0 R (HD.10152) 11319 0 R (HD.10153) 11320 0 R (HD.10154) 11321 0 R (HD.10155) 11322 0 R (HD.10156) 11323 0 R (HD.10157) 11324 0 R (HD.10158) 11325 0 R (HD.10159) 11326 0 R (HD.1016) 1357 0 R (HD.10160) 11327 0 R (HD.10161) 11328 0 R (HD.10162) 11329 0 R (HD.10163) 11330 0 R (HD.10164) 11331 0 R (HD.10165) 11332 0 R (HD.10166) 11333 0 R (HD.10167) 11334 0 R (HD.10168) 11335 0 R (HD.10169) 11336 0 R ] /Limits [ (HD.10140) (HD.10169) ] >>
+endobj
+11742 0 obj
+<< /Names [ (HD.1017) 1358 0 R (HD.10170) 11337 0 R (HD.10171) 11338 0 R (HD.10172) 11339 0 R (HD.10173) 11340 0 R (HD.10174) 11341 0 R (HD.10175) 11342 0 R (HD.10176) 11343 0 R (HD.10177) 11344 0 R (HD.10178) 11345 0 R (HD.10179) 11346 0 R (HD.1018) 1359 0 R (HD.10180) 11347 0 R (HD.10181) 11348 0 R (HD.10182) 11349 0 R (HD.10183) 11350 0 R (HD.10184) 11351 0 R (HD.10185) 11352 0 R (HD.10186) 11353 0 R (HD.10187) 11358 0 R (HD.10188) 11359 0 R (HD.10189) 11360 0 R (HD.1019) 1360 0 R (HD.10190) 11361 0 R (HD.10191) 11362 0 R (HD.10192) 11363 0 R (HD.10193) 11364 0 R (HD.10194) 11365 0 R (HD.10195) 11366 0 R (HD.10196) 11367 0 R (HD.10197) 11368 0 R (HD.10198) 11369 0 R ] /Limits [ (HD.1017) (HD.10198) ] >>
+endobj
+11743 0 obj
+<< /Names [ (HD.10199) 11370 0 R (HD.102) 306 0 R (HD.1020) 1361 0 R (HD.10200) 11371 0 R (HD.10201) 11372 0 R (HD.10202) 11373 0 R (HD.10203) 11374 0 R (HD.10204) 11375 0 R (HD.10205) 11376 0 R (HD.10206) 11377 0 R (HD.10207) 11378 0 R (HD.10208) 11379 0 R (HD.10209) 11380 0 R (HD.1021) 1362 0 R (HD.10210) 11381 0 R (HD.10211) 11382 0 R (HD.10212) 11383 0 R (HD.10213) 11384 0 R (HD.10214) 11385 0 R (HD.10215) 11386 0 R (HD.10216) 11387 0 R (HD.10217) 11388 0 R (HD.10218) 11389 0 R (HD.10219) 11390 0 R (HD.1022) 1363 0 R (HD.10220) 11391 0 R (HD.10221) 11392 0 R (HD.10222) 11393 0 R (HD.10223) 11394 0 R (HD.10224) 11395 0 R (HD.10225) 11396 0 R (HD.10226) 11397 0 R ] /Limits [ (HD.10199) (HD.10226) ] >>
+endobj
+11744 0 obj
+<< /Names [ (HD.10227) 11398 0 R (HD.10228) 11399 0 R (HD.10229) 11400 0 R (HD.1023) 1364 0 R (HD.10230) 11401 0 R (HD.10231) 11402 0 R (HD.10232) 11403 0 R (HD.10233) 11404 0 R (HD.10234) 11405 0 R (HD.10235) 11406 0 R (HD.10236) 11407 0 R (HD.10237) 11408 0 R (HD.10238) 11409 0 R (HD.10239) 11410 0 R (HD.1024) 1365 0 R (HD.10240) 11411 0 R (HD.10241) 11412 0 R (HD.10242) 11413 0 R (HD.10243) 11414 0 R (HD.10244) 11415 0 R (HD.10245) 11416 0 R (HD.10246) 11417 0 R (HD.10247) 11418 0 R (HD.10248) 11423 0 R (HD.10249) 11424 0 R (HD.1025) 1366 0 R (HD.10250) 11425 0 R (HD.10251) 11426 0 R (HD.10252) 11427 0 R (HD.10253) 11428 0 R (HD.10254) 11429 0 R (HD.10255) 11430 0 R ] /Limits [ (HD.10227) (HD.10255) ] >>
+endobj
+11745 0 obj
+<< /Names [ (HD.10256) 11431 0 R (HD.10257) 11432 0 R (HD.10258) 11433 0 R (HD.10259) 11434 0 R (HD.1026) 1367 0 R (HD.10260) 11435 0 R (HD.10261) 11436 0 R (HD.10262) 11437 0 R (HD.10263) 11438 0 R (HD.10264) 11439 0 R (HD.10265) 11440 0 R (HD.10266) 11441 0 R (HD.10267) 11442 0 R (HD.10268) 11443 0 R (HD.10269) 11444 0 R (HD.1027) 1368 0 R (HD.10270) 11445 0 R (HD.10271) 11446 0 R (HD.10272) 11447 0 R (HD.10273) 11448 0 R (HD.10274) 11449 0 R (HD.10275) 11450 0 R (HD.10276) 11451 0 R (HD.10277) 11452 0 R (HD.10278) 11453 0 R (HD.10279) 11454 0 R (HD.1028) 1369 0 R (HD.10280) 11455 0 R (HD.10281) 11456 0 R (HD.10282) 11457 0 R (HD.10283) 11458 0 R (HD.10284) 11459 0 R ] /Limits [ (HD.10256) (HD.10284) ] >>
+endobj
+11746 0 obj
+<< /Names [ (HD.10285) 11460 0 R (HD.10286) 11461 0 R (HD.10287) 11462 0 R (HD.10288) 11463 0 R (HD.10289) 11464 0 R (HD.1029) 1370 0 R (HD.10290) 11465 0 R (HD.10291) 11466 0 R (HD.10292) 11467 0 R (HD.10293) 11468 0 R (HD.10294) 11469 0 R (HD.10295) 11470 0 R (HD.10296) 11471 0 R (HD.10297) 11472 0 R (HD.10298) 11473 0 R (HD.10299) 11474 0 R (HD.103) 307 0 R (HD.1030) 1371 0 R (HD.10300) 11475 0 R (HD.10301) 11476 0 R (HD.10302) 11477 0 R (HD.10303) 11478 0 R (HD.10304) 11479 0 R (HD.10305) 11480 0 R (HD.10306) 11481 0 R (HD.10307) 11482 0 R (HD.10308) 11483 0 R (HD.10309) 11484 0 R (HD.1031) 1372 0 R (HD.10310) 11485 0 R (HD.10311) 11490 0 R (HD.10312) 11491 0 R ] /Limits [ (HD.10285) (HD.10312) ] >>
+endobj
+11747 0 obj
+<< /Names [ (HD.10313) 11492 0 R (HD.10314) 11493 0 R (HD.10315) 11494 0 R (HD.10316) 11495 0 R (HD.10317) 11496 0 R (HD.10318) 11497 0 R (HD.10319) 11498 0 R (HD.1032) 1373 0 R (HD.10320) 11499 0 R (HD.10321) 11500 0 R (HD.10322) 11501 0 R (HD.10323) 11502 0 R (HD.10324) 11503 0 R (HD.10325) 11504 0 R (HD.10326) 11505 0 R (HD.10327) 11506 0 R (HD.10328) 11507 0 R (HD.10329) 11508 0 R (HD.1033) 1374 0 R (HD.10330) 11509 0 R (HD.10331) 11510 0 R (HD.10332) 11511 0 R (HD.10333) 11512 0 R (HD.10334) 11513 0 R (HD.10335) 11514 0 R (HD.10336) 11515 0 R (HD.10337) 11516 0 R (HD.10338) 11517 0 R (HD.10339) 11518 0 R (HD.1034) 1375 0 R (HD.10340) 11519 0 R (HD.10341) 11520 0 R ] /Limits [ (HD.10313) (HD.10341) ] >>
+endobj
+11748 0 obj
+<< /Names [ (HD.10342) 11521 0 R (HD.10343) 11522 0 R (HD.10344) 11523 0 R (HD.10345) 11524 0 R (HD.10346) 11525 0 R (HD.10347) 11526 0 R (HD.10348) 11527 0 R (HD.10349) 11528 0 R (HD.1035) 1376 0 R (HD.10350) 11529 0 R (HD.10351) 11530 0 R (HD.10352) 11531 0 R (HD.10353) 11532 0 R (HD.10354) 11533 0 R (HD.10355) 11534 0 R (HD.10356) 11535 0 R (HD.10357) 11536 0 R (HD.10358) 11537 0 R (HD.10359) 11538 0 R (HD.1036) 1377 0 R (HD.10360) 11539 0 R (HD.10361) 11540 0 R (HD.10362) 11541 0 R (HD.10363) 11542 0 R (HD.10364) 11543 0 R (HD.10365) 11544 0 R (HD.10366) 11545 0 R (HD.10367) 11546 0 R (HD.10368) 11547 0 R (HD.10369) 11548 0 R (HD.1037) 1378 0 R (HD.10370) 11549 0 R ] /Limits [ (HD.10342) (HD.10370) ] >>
+endobj
+11749 0 obj
+<< /Names [ (HD.10371) 11550 0 R (HD.10372) 11551 0 R (HD.10373) 11552 0 R (HD.10374) 11557 0 R (HD.10375) 11558 0 R (HD.10376) 11559 0 R (HD.10377) 11560 0 R (HD.10378) 11561 0 R (HD.10379) 11562 0 R (HD.1038) 1379 0 R (HD.10380) 11563 0 R (HD.10381) 11564 0 R (HD.10382) 11565 0 R (HD.10383) 11566 0 R (HD.10384) 11567 0 R (HD.10385) 11568 0 R (HD.10386) 11569 0 R (HD.10387) 11570 0 R (HD.10388) 11571 0 R (HD.10389) 11572 0 R (HD.1039) 1384 0 R (HD.10390) 11573 0 R (HD.10391) 11574 0 R (HD.10392) 11575 0 R (HD.10393) 11576 0 R (HD.10394) 11577 0 R (HD.10395) 11578 0 R (HD.10396) 11579 0 R (HD.10397) 11580 0 R (HD.10398) 11581 0 R (HD.10399) 11582 0 R (HD.104) 308 0 R ] /Limits [ (HD.10371) (HD.104) ] >>
+endobj
+11750 0 obj
+<< /Names [ (HD.1040) 1385 0 R (HD.10400) 11583 0 R (HD.1041) 1386 0 R (HD.1042) 1387 0 R (HD.1043) 1388 0 R (HD.1044) 1389 0 R (HD.1045) 1390 0 R (HD.1046) 1391 0 R (HD.1047) 1392 0 R (HD.1048) 1393 0 R (HD.1049) 1394 0 R (HD.105) 309 0 R (HD.1050) 1395 0 R (HD.1051) 1396 0 R (HD.1052) 1397 0 R (HD.1053) 1398 0 R (HD.1054) 1399 0 R (HD.1055) 1400 0 R (HD.1056) 1401 0 R (HD.1057) 1402 0 R (HD.1058) 1403 0 R (HD.1059) 1404 0 R (HD.106) 310 0 R (HD.1060) 1405 0 R (HD.1061) 1406 0 R (HD.1062) 1407 0 R (HD.1063) 1408 0 R (HD.1064) 1409 0 R (HD.1065) 1410 0 R (HD.1066) 1411 0 R (HD.1067) 1412 0 R (HD.1068) 1413 0 R ] /Limits [ (HD.1040) (HD.1068) ] >>
+endobj
+11751 0 obj
+<< /Names [ (HD.1069) 1414 0 R (HD.107) 311 0 R (HD.1070) 1415 0 R (HD.1071) 1416 0 R (HD.1072) 1417 0 R (HD.1073) 1418 0 R (HD.1074) 1419 0 R (HD.1075) 1420 0 R (HD.1076) 1421 0 R (HD.1077) 1422 0 R (HD.1078) 1423 0 R (HD.1079) 1424 0 R (HD.108) 312 0 R (HD.1080) 1425 0 R (HD.1081) 1426 0 R (HD.1082) 1427 0 R (HD.1083) 1428 0 R (HD.1084) 1429 0 R (HD.1085) 1430 0 R (HD.1086) 1431 0 R (HD.1087) 1432 0 R (HD.1088) 1433 0 R (HD.1089) 1434 0 R (HD.109) 313 0 R (HD.1090) 1435 0 R (HD.1091) 1436 0 R (HD.1092) 1437 0 R (HD.1093) 1438 0 R (HD.1094) 1443 0 R (HD.1095) 1444 0 R (HD.1096) 1445 0 R (HD.1097) 1446 0 R ] /Limits [ (HD.1069) (HD.1097) ] >>
+endobj
+11752 0 obj
+<< /Names [ (HD.1098) 1447 0 R (HD.1099) 1448 0 R (HD.11) 199 0 R (HD.110) 314 0 R (HD.1100) 1449 0 R (HD.1101) 1450 0 R (HD.1102) 1451 0 R (HD.1103) 1452 0 R (HD.1104) 1453 0 R (HD.1105) 1454 0 R (HD.1106) 1455 0 R (HD.1107) 1456 0 R (HD.1108) 1457 0 R (HD.1109) 1458 0 R (HD.111) 315 0 R (HD.1110) 1459 0 R (HD.1111) 1460 0 R (HD.1112) 1461 0 R (HD.1113) 1462 0 R (HD.1114) 1463 0 R (HD.1115) 1464 0 R (HD.1116) 1465 0 R (HD.1117) 1466 0 R (HD.1118) 1467 0 R (HD.1119) 1468 0 R (HD.112) 316 0 R (HD.1120) 1469 0 R (HD.1121) 1470 0 R (HD.1122) 1471 0 R (HD.1123) 1472 0 R (HD.1124) 1473 0 R (HD.1125) 1474 0 R ] /Limits [ (HD.1098) (HD.1125) ] >>
+endobj
+11753 0 obj
+<< /Names [ (HD.1126) 1475 0 R (HD.1127) 1476 0 R (HD.1128) 1477 0 R (HD.1129) 1478 0 R (HD.113) 319 0 R (HD.1130) 1479 0 R (HD.1131) 1480 0 R (HD.1132) 1481 0 R (HD.1133) 1482 0 R (HD.1134) 1483 0 R (HD.1135) 1484 0 R (HD.1136) 1489 0 R (HD.1137) 1490 0 R (HD.1138) 1491 0 R (HD.1139) 1492 0 R (HD.114) 320 0 R (HD.1140) 1493 0 R (HD.1141) 1494 0 R (HD.1142) 1495 0 R (HD.1143) 1496 0 R (HD.1144) 1497 0 R (HD.1145) 1498 0 R (HD.1146) 1499 0 R (HD.1147) 1500 0 R (HD.1148) 1501 0 R (HD.1149) 1502 0 R (HD.115) 321 0 R (HD.1150) 1503 0 R (HD.1151) 1504 0 R (HD.1152) 1505 0 R (HD.1153) 1506 0 R (HD.1154) 1507 0 R ] /Limits [ (HD.1126) (HD.1154) ] >>
+endobj
+11754 0 obj
+<< /Names [ (HD.1155) 1508 0 R (HD.1156) 1509 0 R (HD.1157) 1510 0 R (HD.1158) 1511 0 R (HD.1159) 1512 0 R (HD.116) 322 0 R (HD.1160) 1513 0 R (HD.1161) 1514 0 R (HD.1162) 1515 0 R (HD.1163) 1516 0 R (HD.1164) 1517 0 R (HD.1165) 1518 0 R (HD.1166) 1519 0 R (HD.1167) 1520 0 R (HD.1168) 1521 0 R (HD.1169) 1522 0 R (HD.117) 323 0 R (HD.1170) 1523 0 R (HD.1171) 1524 0 R (HD.1172) 1525 0 R (HD.1173) 1526 0 R (HD.1174) 1527 0 R (HD.1175) 1528 0 R (HD.1176) 1529 0 R (HD.1177) 1530 0 R (HD.1178) 1531 0 R (HD.1179) 1532 0 R (HD.118) 324 0 R (HD.1180) 1533 0 R (HD.1181) 1534 0 R (HD.1182) 1535 0 R (HD.1183) 1536 0 R ] /Limits [ (HD.1155) (HD.1183) ] >>
+endobj
+11755 0 obj
+<< /Names [ (HD.1184) 1537 0 R (HD.1185) 1538 0 R (HD.1186) 1539 0 R (HD.1187) 1544 0 R (HD.1188) 1545 0 R (HD.1189) 1546 0 R (HD.119) 325 0 R (HD.1190) 1547 0 R (HD.1191) 1548 0 R (HD.1192) 1549 0 R (HD.1193) 1550 0 R (HD.1194) 1551 0 R (HD.1195) 1552 0 R (HD.1196) 1553 0 R (HD.1197) 1554 0 R (HD.1198) 1555 0 R (HD.1199) 1556 0 R (HD.12) 200 0 R (HD.120) 326 0 R (HD.1200) 1557 0 R (HD.1201) 1558 0 R (HD.1202) 1559 0 R (HD.1203) 1560 0 R (HD.1204) 1561 0 R (HD.1205) 1562 0 R (HD.1206) 1563 0 R (HD.1207) 1564 0 R (HD.1208) 1565 0 R (HD.1209) 1566 0 R (HD.121) 327 0 R (HD.1210) 1567 0 R (HD.1211) 1572 0 R ] /Limits [ (HD.1184) (HD.1211) ] >>
+endobj
+11756 0 obj
+<< /Names [ (HD.1212) 1573 0 R (HD.1213) 1574 0 R (HD.1214) 1575 0 R (HD.1215) 1576 0 R (HD.1216) 1577 0 R (HD.1217) 1578 0 R (HD.1218) 1579 0 R (HD.1219) 1580 0 R (HD.122) 328 0 R (HD.1220) 1581 0 R (HD.1221) 1582 0 R (HD.1222) 1583 0 R (HD.1223) 1584 0 R (HD.1224) 1585 0 R (HD.1225) 1586 0 R (HD.1226) 1587 0 R (HD.1227) 1588 0 R (HD.1228) 1589 0 R (HD.1229) 1590 0 R (HD.123) 329 0 R (HD.1230) 1591 0 R (HD.1231) 1592 0 R (HD.1232) 1593 0 R (HD.1233) 1594 0 R (HD.1234) 1595 0 R (HD.1235) 1596 0 R (HD.1236) 1597 0 R (HD.1237) 1598 0 R (HD.1238) 1599 0 R (HD.1239) 1600 0 R (HD.124) 330 0 R (HD.1240) 1601 0 R ] /Limits [ (HD.1212) (HD.1240) ] >>
+endobj
+11757 0 obj
+<< /Names [ (HD.1241) 1602 0 R (HD.1242) 1603 0 R (HD.1243) 1604 0 R (HD.1244) 1605 0 R (HD.1245) 1606 0 R (HD.1246) 1607 0 R (HD.1247) 1608 0 R (HD.1248) 1609 0 R (HD.1249) 1610 0 R (HD.125) 331 0 R (HD.1250) 1611 0 R (HD.1251) 1612 0 R (HD.1252) 1613 0 R (HD.1253) 1614 0 R (HD.1254) 1615 0 R (HD.1255) 1616 0 R (HD.1256) 1621 0 R (HD.1257) 1622 0 R (HD.1258) 1623 0 R (HD.1259) 1624 0 R (HD.126) 332 0 R (HD.1260) 1625 0 R (HD.1261) 1626 0 R (HD.1262) 1627 0 R (HD.1263) 1628 0 R (HD.1264) 1629 0 R (HD.1265) 1630 0 R (HD.1266) 1631 0 R (HD.1267) 1632 0 R (HD.1268) 1633 0 R (HD.1269) 1634 0 R (HD.127) 333 0 R ] /Limits [ (HD.1241) (HD.127) ] >>
+endobj
+11758 0 obj
+<< /Names [ (HD.1270) 1635 0 R (HD.1271) 1636 0 R (HD.1272) 1637 0 R (HD.1273) 1638 0 R (HD.1274) 1639 0 R (HD.1275) 1640 0 R (HD.1276) 1641 0 R (HD.1277) 1642 0 R (HD.1278) 1643 0 R (HD.1279) 1644 0 R (HD.128) 334 0 R (HD.1280) 1645 0 R (HD.1281) 1646 0 R (HD.1282) 1647 0 R (HD.1283) 1648 0 R (HD.1284) 1649 0 R (HD.1285) 1650 0 R (HD.1286) 1651 0 R (HD.1287) 1652 0 R (HD.1288) 1653 0 R (HD.1289) 1654 0 R (HD.129) 335 0 R (HD.1290) 1655 0 R (HD.1291) 1656 0 R (HD.1292) 1657 0 R (HD.1293) 1658 0 R (HD.1294) 1659 0 R (HD.1295) 1660 0 R (HD.1296) 1661 0 R (HD.1297) 1662 0 R (HD.1298) 1663 0 R (HD.1299) 1664 0 R ] /Limits [ (HD.1270) (HD.1299) ] >>
+endobj
+11759 0 obj
+<< /Names [ (HD.13) 201 0 R (HD.130) 336 0 R (HD.1300) 1665 0 R (HD.1301) 1666 0 R (HD.1302) 1667 0 R (HD.1303) 1668 0 R (HD.1304) 1669 0 R (HD.1305) 1670 0 R (HD.1306) 1671 0 R (HD.1307) 1672 0 R (HD.1308) 1673 0 R (HD.1309) 1674 0 R (HD.131) 337 0 R (HD.1310) 1675 0 R (HD.1311) 1676 0 R (HD.1312) 1677 0 R (HD.1313) 1678 0 R (HD.1314) 1679 0 R (HD.1315) 1684 0 R (HD.1316) 1685 0 R (HD.1317) 1686 0 R (HD.1318) 1687 0 R (HD.1319) 1688 0 R (HD.132) 338 0 R (HD.1320) 1689 0 R (HD.1321) 1690 0 R (HD.1322) 1691 0 R (HD.1323) 1692 0 R (HD.1324) 1693 0 R (HD.1325) 1694 0 R (HD.1326) 1695 0 R (HD.1327) 1696 0 R ] /Limits [ (HD.13) (HD.1327) ] >>
+endobj
+11760 0 obj
+<< /Names [ (HD.1328) 1697 0 R (HD.1329) 1698 0 R (HD.133) 339 0 R (HD.1330) 1699 0 R (HD.1331) 1700 0 R (HD.1332) 1701 0 R (HD.1333) 1702 0 R (HD.1334) 1703 0 R (HD.1335) 1704 0 R (HD.1336) 1705 0 R (HD.1337) 1706 0 R (HD.1338) 1707 0 R (HD.1339) 1708 0 R (HD.134) 344 0 R (HD.1340) 1709 0 R (HD.1341) 1710 0 R (HD.1342) 1711 0 R (HD.1343) 1712 0 R (HD.1344) 1713 0 R (HD.1345) 1718 0 R (HD.1346) 1719 0 R (HD.1347) 1720 0 R (HD.1348) 1721 0 R (HD.1349) 1722 0 R (HD.135) 345 0 R (HD.1350) 1723 0 R (HD.1351) 1724 0 R (HD.1352) 1725 0 R (HD.1353) 1726 0 R (HD.1354) 1727 0 R (HD.1355) 1728 0 R (HD.1356) 1729 0 R ] /Limits [ (HD.1328) (HD.1356) ] >>
+endobj
+11761 0 obj
+<< /Names [ (HD.1357) 1730 0 R (HD.1358) 1731 0 R (HD.1359) 1732 0 R (HD.136) 346 0 R (HD.1360) 1733 0 R (HD.1361) 1734 0 R (HD.1362) 1735 0 R (HD.1363) 1736 0 R (HD.1364) 1737 0 R (HD.1365) 1738 0 R (HD.1366) 1739 0 R (HD.1367) 1740 0 R (HD.1368) 1741 0 R (HD.1369) 1742 0 R (HD.137) 347 0 R (HD.1370) 1743 0 R (HD.1371) 1744 0 R (HD.1372) 1745 0 R (HD.1373) 1746 0 R (HD.1374) 1747 0 R (HD.1375) 1748 0 R (HD.1376) 1749 0 R (HD.1377) 1750 0 R (HD.1378) 1751 0 R (HD.1379) 1752 0 R (HD.138) 348 0 R (HD.1380) 1753 0 R (HD.1381) 1754 0 R (HD.1382) 1755 0 R (HD.1383) 1756 0 R (HD.1384) 1757 0 R (HD.1385) 1758 0 R ] /Limits [ (HD.1357) (HD.1385) ] >>
+endobj
+11762 0 obj
+<< /Names [ (HD.1386) 1759 0 R (HD.1387) 1760 0 R (HD.1388) 1761 0 R (HD.1389) 1762 0 R (HD.139) 349 0 R (HD.1390) 1763 0 R (HD.1391) 1764 0 R (HD.1392) 1765 0 R (HD.1393) 1766 0 R (HD.1394) 1771 0 R (HD.1395) 1772 0 R (HD.1396) 1773 0 R (HD.1397) 1774 0 R (HD.1398) 1775 0 R (HD.1399) 1776 0 R (HD.14) 202 0 R (HD.140) 350 0 R (HD.1400) 1777 0 R (HD.1401) 1778 0 R (HD.1402) 1779 0 R (HD.1403) 1780 0 R (HD.1404) 1781 0 R (HD.1405) 1782 0 R (HD.1406) 1783 0 R (HD.1407) 1784 0 R (HD.1408) 1785 0 R (HD.1409) 1786 0 R (HD.141) 351 0 R (HD.1410) 1787 0 R (HD.1411) 1788 0 R (HD.1412) 1789 0 R (HD.1413) 1790 0 R ] /Limits [ (HD.1386) (HD.1413) ] >>
+endobj
+11763 0 obj
+<< /Names [ (HD.1414) 1791 0 R (HD.1415) 1792 0 R (HD.1416) 1793 0 R (HD.1417) 1794 0 R (HD.1418) 1795 0 R (HD.1419) 1796 0 R (HD.142) 352 0 R (HD.1420) 1797 0 R (HD.1421) 1798 0 R (HD.1422) 1799 0 R (HD.1423) 1800 0 R (HD.1424) 1801 0 R (HD.1425) 1802 0 R (HD.1426) 1803 0 R (HD.1427) 1804 0 R (HD.1428) 1805 0 R (HD.1429) 1806 0 R (HD.143) 353 0 R (HD.1430) 1807 0 R (HD.1431) 1808 0 R (HD.1432) 1815 0 R (HD.1433) 1816 0 R (HD.1434) 1817 0 R (HD.1435) 1818 0 R (HD.1436) 1819 0 R (HD.1437) 1820 0 R (HD.1438) 1821 0 R (HD.1439) 1822 0 R (HD.144) 354 0 R (HD.1440) 1823 0 R (HD.1441) 1824 0 R (HD.1442) 1825 0 R ] /Limits [ (HD.1414) (HD.1442) ] >>
+endobj
+11764 0 obj
+<< /Names [ (HD.1443) 1826 0 R (HD.1444) 1827 0 R (HD.1445) 1828 0 R (HD.1446) 1829 0 R (HD.1447) 1830 0 R (HD.1448) 1831 0 R (HD.1449) 1832 0 R (HD.145) 355 0 R (HD.1450) 1833 0 R (HD.1451) 1834 0 R (HD.1452) 1835 0 R (HD.1453) 1836 0 R (HD.1454) 1837 0 R (HD.1455) 1838 0 R (HD.1456) 1839 0 R (HD.1457) 1840 0 R (HD.1458) 1841 0 R (HD.1459) 1842 0 R (HD.146) 356 0 R (HD.1460) 1843 0 R (HD.1461) 1844 0 R (HD.1462) 1845 0 R (HD.1463) 1846 0 R (HD.1464) 1847 0 R (HD.1465) 1848 0 R (HD.1466) 1849 0 R (HD.1467) 1850 0 R (HD.1468) 1851 0 R (HD.1469) 1852 0 R (HD.147) 357 0 R (HD.1470) 1853 0 R (HD.1471) 1854 0 R ] /Limits [ (HD.1443) (HD.1471) ] >>
+endobj
+11765 0 obj
+<< /Names [ (HD.1472) 1855 0 R (HD.1473) 1860 0 R (HD.1474) 1861 0 R (HD.1475) 1862 0 R (HD.1476) 1863 0 R (HD.1477) 1864 0 R (HD.1478) 1865 0 R (HD.1479) 1866 0 R (HD.148) 358 0 R (HD.1480) 1867 0 R (HD.1481) 1868 0 R (HD.1482) 1869 0 R (HD.1483) 1870 0 R (HD.1484) 1871 0 R (HD.1485) 1872 0 R (HD.1486) 1873 0 R (HD.1487) 1874 0 R (HD.1488) 1875 0 R (HD.1489) 1876 0 R (HD.149) 359 0 R (HD.1490) 1877 0 R (HD.1491) 1878 0 R (HD.1492) 1879 0 R (HD.1493) 1880 0 R (HD.1494) 1881 0 R (HD.1495) 1882 0 R (HD.1496) 1883 0 R (HD.1497) 1884 0 R (HD.1498) 1885 0 R (HD.1499) 1886 0 R (HD.15) 203 0 R (HD.150) 360 0 R ] /Limits [ (HD.1472) (HD.150) ] >>
+endobj
+11766 0 obj
+<< /Names [ (HD.1500) 1887 0 R (HD.1501) 1888 0 R (HD.1502) 1889 0 R (HD.1503) 1890 0 R (HD.1504) 1891 0 R (HD.1505) 1892 0 R (HD.1506) 1893 0 R (HD.1507) 1894 0 R (HD.1508) 1895 0 R (HD.1509) 1896 0 R (HD.151) 361 0 R (HD.1510) 1897 0 R (HD.1511) 1898 0 R (HD.1512) 1899 0 R (HD.1513) 1900 0 R (HD.1514) 1901 0 R (HD.1515) 1902 0 R (HD.1516) 1903 0 R (HD.1517) 1904 0 R (HD.1518) 1905 0 R (HD.1519) 1906 0 R (HD.152) 362 0 R (HD.1520) 1907 0 R (HD.1521) 1908 0 R (HD.1522) 1909 0 R (HD.1523) 1910 0 R (HD.1524) 1917 0 R (HD.1525) 1918 0 R (HD.1526) 1919 0 R (HD.1527) 1920 0 R (HD.1528) 1921 0 R (HD.1529) 1922 0 R ] /Limits [ (HD.1500) (HD.1529) ] >>
+endobj
+11767 0 obj
+<< /Names [ (HD.153) 363 0 R (HD.1530) 1923 0 R (HD.1531) 1924 0 R (HD.1532) 1925 0 R (HD.1533) 1926 0 R (HD.1534) 1927 0 R (HD.1535) 1928 0 R (HD.1536) 1929 0 R (HD.1537) 1930 0 R (HD.1538) 1931 0 R (HD.1539) 1932 0 R (HD.154) 364 0 R (HD.1540) 1933 0 R (HD.1541) 1934 0 R (HD.1542) 1935 0 R (HD.1543) 1936 0 R (HD.1544) 1937 0 R (HD.1545) 1938 0 R (HD.1546) 1939 0 R (HD.1547) 1940 0 R (HD.1548) 1941 0 R (HD.1549) 1942 0 R (HD.155) 365 0 R (HD.1550) 1943 0 R (HD.1551) 1944 0 R (HD.1552) 1945 0 R (HD.1553) 1946 0 R (HD.1554) 1947 0 R (HD.1555) 1948 0 R (HD.1556) 1949 0 R (HD.1557) 1950 0 R (HD.1558) 1951 0 R ] /Limits [ (HD.153) (HD.1558) ] >>
+endobj
+11768 0 obj
+<< /Names [ (HD.1559) 1952 0 R (HD.156) 366 0 R (HD.1560) 1953 0 R (HD.1561) 1954 0 R (HD.1562) 1955 0 R (HD.1563) 1956 0 R (HD.1564) 1957 0 R (HD.1565) 1958 0 R (HD.1566) 1959 0 R (HD.1567) 1967 0 R (HD.1568) 1968 0 R (HD.1569) 1969 0 R (HD.157) 367 0 R (HD.1570) 1970 0 R (HD.1571) 1971 0 R (HD.1572) 1972 0 R (HD.1573) 1973 0 R (HD.1574) 1974 0 R (HD.1575) 1975 0 R (HD.1576) 1976 0 R (HD.1577) 1977 0 R (HD.1578) 1978 0 R (HD.1579) 1979 0 R (HD.158) 368 0 R (HD.1580) 1980 0 R (HD.1581) 1981 0 R (HD.1582) 1982 0 R (HD.1583) 1983 0 R (HD.1584) 1984 0 R (HD.1585) 1985 0 R (HD.1586) 1986 0 R (HD.1587) 1987 0 R ] /Limits [ (HD.1559) (HD.1587) ] >>
+endobj
+11769 0 obj
+<< /Names [ (HD.1588) 1988 0 R (HD.1589) 1989 0 R (HD.159) 369 0 R (HD.1590) 1990 0 R (HD.1591) 1991 0 R (HD.1592) 1992 0 R (HD.1593) 1993 0 R (HD.1594) 1994 0 R (HD.1595) 1995 0 R (HD.1596) 1996 0 R (HD.1597) 1997 0 R (HD.1598) 1998 0 R (HD.1599) 1999 0 R (HD.16) 211 0 R (HD.160) 370 0 R (HD.1600) 2000 0 R (HD.1601) 2001 0 R (HD.1602) 2002 0 R (HD.1603) 2003 0 R (HD.1604) 2004 0 R (HD.1605) 2005 0 R (HD.1606) 2010 0 R (HD.1607) 2011 0 R (HD.1608) 2012 0 R (HD.1609) 2013 0 R (HD.161) 371 0 R (HD.1610) 2014 0 R (HD.1611) 2015 0 R (HD.1612) 2016 0 R (HD.1613) 2017 0 R (HD.1614) 2018 0 R (HD.1615) 2019 0 R ] /Limits [ (HD.1588) (HD.1615) ] >>
+endobj
+11770 0 obj
+<< /Names [ (HD.1616) 2020 0 R (HD.1617) 2021 0 R (HD.1618) 2022 0 R (HD.1619) 2023 0 R (HD.162) 372 0 R (HD.1620) 2024 0 R (HD.1621) 2025 0 R (HD.1622) 2026 0 R (HD.1623) 2027 0 R (HD.1624) 2028 0 R (HD.1625) 2029 0 R (HD.1626) 2030 0 R (HD.1627) 2031 0 R (HD.1628) 2032 0 R (HD.1629) 2033 0 R (HD.163) 373 0 R (HD.1630) 2034 0 R (HD.1631) 2035 0 R (HD.1632) 2036 0 R (HD.1633) 2037 0 R (HD.1634) 2038 0 R (HD.1635) 2039 0 R (HD.1636) 2040 0 R (HD.1637) 2041 0 R (HD.1638) 2042 0 R (HD.1639) 2043 0 R (HD.164) 374 0 R (HD.1640) 2044 0 R (HD.1641) 2045 0 R (HD.1642) 2046 0 R (HD.1643) 2047 0 R (HD.1644) 2048 0 R ] /Limits [ (HD.1616) (HD.1644) ] >>
+endobj
+11771 0 obj
+<< /Names [ (HD.1645) 2049 0 R (HD.1646) 2050 0 R (HD.1647) 2051 0 R (HD.1648) 2052 0 R (HD.1649) 2053 0 R (HD.165) 375 0 R (HD.1650) 2054 0 R (HD.1651) 2055 0 R (HD.1652) 2056 0 R (HD.1653) 2057 0 R (HD.1654) 2058 0 R (HD.1655) 2059 0 R (HD.1656) 2060 0 R (HD.1657) 2065 0 R (HD.1658) 2066 0 R (HD.1659) 2067 0 R (HD.166) 376 0 R (HD.1660) 2068 0 R (HD.1661) 2069 0 R (HD.1662) 2070 0 R (HD.1663) 2071 0 R (HD.1664) 2072 0 R (HD.1665) 2073 0 R (HD.1666) 2074 0 R (HD.1667) 2075 0 R (HD.1668) 2076 0 R (HD.1669) 2077 0 R (HD.167) 377 0 R (HD.1670) 2078 0 R (HD.1671) 2079 0 R (HD.1672) 2080 0 R (HD.1673) 2081 0 R ] /Limits [ (HD.1645) (HD.1673) ] >>
+endobj
+11772 0 obj
+<< /Names [ (HD.1674) 2082 0 R (HD.1675) 2083 0 R (HD.1676) 2084 0 R (HD.1677) 2085 0 R (HD.1678) 2086 0 R (HD.1679) 2087 0 R (HD.168) 378 0 R (HD.1680) 2088 0 R (HD.1681) 2089 0 R (HD.1682) 2090 0 R (HD.1683) 2091 0 R (HD.1684) 2092 0 R (HD.1685) 2093 0 R (HD.1686) 2094 0 R (HD.1687) 2095 0 R (HD.1688) 2096 0 R (HD.1689) 2097 0 R (HD.169) 379 0 R (HD.1690) 2102 0 R (HD.1691) 2103 0 R (HD.1692) 2104 0 R (HD.1693) 2105 0 R (HD.1694) 2106 0 R (HD.1695) 2107 0 R (HD.1696) 2108 0 R (HD.1697) 2109 0 R (HD.1698) 2110 0 R (HD.1699) 2111 0 R (HD.17) 212 0 R (HD.170) 380 0 R (HD.1700) 2112 0 R (HD.1701) 2113 0 R ] /Limits [ (HD.1674) (HD.1701) ] >>
+endobj
+11773 0 obj
+<< /Names [ (HD.1702) 2114 0 R (HD.1703) 2115 0 R (HD.1704) 2116 0 R (HD.1705) 2117 0 R (HD.1706) 2118 0 R (HD.1707) 2119 0 R (HD.1708) 2120 0 R (HD.1709) 2121 0 R (HD.171) 381 0 R (HD.1710) 2122 0 R (HD.1711) 2123 0 R (HD.1712) 2124 0 R (HD.1713) 2125 0 R (HD.1714) 2126 0 R (HD.1715) 2127 0 R (HD.1716) 2128 0 R (HD.1717) 2129 0 R (HD.1718) 2130 0 R (HD.1719) 2135 0 R (HD.172) 382 0 R (HD.1720) 2136 0 R (HD.1721) 2137 0 R (HD.1722) 2138 0 R (HD.1723) 2139 0 R (HD.1724) 2140 0 R (HD.1725) 2141 0 R (HD.1726) 2142 0 R (HD.1727) 2143 0 R (HD.1728) 2144 0 R (HD.1729) 2145 0 R (HD.173) 383 0 R (HD.1730) 2146 0 R ] /Limits [ (HD.1702) (HD.1730) ] >>
+endobj
+11774 0 obj
+<< /Names [ (HD.1731) 2147 0 R (HD.1732) 2148 0 R (HD.1733) 2149 0 R (HD.1734) 2150 0 R (HD.1735) 2151 0 R (HD.1736) 2152 0 R (HD.1737) 2153 0 R (HD.1738) 2154 0 R (HD.1739) 2155 0 R (HD.174) 388 0 R (HD.1740) 2156 0 R (HD.1741) 2157 0 R (HD.1742) 2158 0 R (HD.1743) 2159 0 R (HD.1744) 2160 0 R (HD.1745) 2161 0 R (HD.1746) 2162 0 R (HD.1747) 2163 0 R (HD.1748) 2164 0 R (HD.1749) 2165 0 R (HD.175) 389 0 R (HD.1750) 2166 0 R (HD.1751) 2167 0 R (HD.1752) 2168 0 R (HD.1753) 2173 0 R (HD.1754) 2174 0 R (HD.1755) 2175 0 R (HD.1756) 2176 0 R (HD.1757) 2177 0 R (HD.1758) 2178 0 R (HD.1759) 2179 0 R (HD.176) 390 0 R ] /Limits [ (HD.1731) (HD.176) ] >>
+endobj
+11775 0 obj
+<< /Names [ (HD.1760) 2180 0 R (HD.1761) 2181 0 R (HD.1762) 2182 0 R (HD.1763) 2183 0 R (HD.1764) 2184 0 R (HD.1765) 2185 0 R (HD.1766) 2186 0 R (HD.1767) 2187 0 R (HD.1768) 2188 0 R (HD.1769) 2189 0 R (HD.177) 391 0 R (HD.1770) 2190 0 R (HD.1771) 2191 0 R (HD.1772) 2192 0 R (HD.1773) 2193 0 R (HD.1774) 2194 0 R (HD.1775) 2195 0 R (HD.1776) 2196 0 R (HD.1777) 2197 0 R (HD.1778) 2198 0 R (HD.1779) 2199 0 R (HD.178) 392 0 R (HD.1780) 2200 0 R (HD.1781) 2201 0 R (HD.1782) 2202 0 R (HD.1783) 2203 0 R (HD.1784) 2204 0 R (HD.1785) 2205 0 R (HD.1786) 2206 0 R (HD.1787) 2207 0 R (HD.1788) 2208 0 R (HD.1789) 2209 0 R ] /Limits [ (HD.1760) (HD.1789) ] >>
+endobj
+11776 0 obj
+<< /Names [ (HD.179) 393 0 R (HD.1790) 2210 0 R (HD.1791) 2211 0 R (HD.1792) 2216 0 R (HD.1793) 2217 0 R (HD.1794) 2218 0 R (HD.1795) 2219 0 R (HD.1796) 2220 0 R (HD.1797) 2221 0 R (HD.1798) 2222 0 R (HD.1799) 2223 0 R (HD.18) 213 0 R (HD.180) 394 0 R (HD.1800) 2224 0 R (HD.1801) 2225 0 R (HD.1802) 2226 0 R (HD.1803) 2227 0 R (HD.1804) 2228 0 R (HD.1805) 2229 0 R (HD.1806) 2230 0 R (HD.1807) 2231 0 R (HD.1808) 2232 0 R (HD.1809) 2233 0 R (HD.181) 395 0 R (HD.1810) 2234 0 R (HD.1811) 2235 0 R (HD.1812) 2236 0 R (HD.1813) 2237 0 R (HD.1814) 2238 0 R (HD.1815) 2239 0 R (HD.1816) 2240 0 R (HD.1817) 2241 0 R ] /Limits [ (HD.179) (HD.1817) ] >>
+endobj
+11777 0 obj
+<< /Names [ (HD.1818) 2242 0 R (HD.1819) 2243 0 R (HD.182) 396 0 R (HD.1820) 2244 0 R (HD.1821) 2245 0 R (HD.1822) 2246 0 R (HD.1823) 2247 0 R (HD.1824) 2248 0 R (HD.1825) 2249 0 R (HD.1826) 2250 0 R (HD.1827) 2251 0 R (HD.1828) 2252 0 R (HD.1829) 2253 0 R (HD.183) 397 0 R (HD.1830) 2259 0 R (HD.1831) 2260 0 R (HD.1832) 2261 0 R (HD.1833) 2262 0 R (HD.1834) 2263 0 R (HD.1835) 2264 0 R (HD.1836) 2265 0 R (HD.1837) 2266 0 R (HD.1838) 2267 0 R (HD.1839) 2268 0 R (HD.184) 398 0 R (HD.1840) 2269 0 R (HD.1841) 2270 0 R (HD.1842) 2271 0 R (HD.1843) 2272 0 R (HD.1844) 2273 0 R (HD.1845) 2274 0 R (HD.1846) 2275 0 R ] /Limits [ (HD.1818) (HD.1846) ] >>
+endobj
+11778 0 obj
+<< /Names [ (HD.1847) 2276 0 R (HD.1848) 2277 0 R (HD.1849) 2278 0 R (HD.185) 399 0 R (HD.1850) 2279 0 R (HD.1851) 2280 0 R (HD.1852) 2281 0 R (HD.1853) 2282 0 R (HD.1854) 2283 0 R (HD.1855) 2284 0 R (HD.1856) 2285 0 R (HD.1857) 2286 0 R (HD.1858) 2287 0 R (HD.1859) 2288 0 R (HD.186) 400 0 R (HD.1860) 2289 0 R (HD.1861) 2290 0 R (HD.1862) 2291 0 R (HD.1863) 2292 0 R (HD.1864) 2293 0 R (HD.1865) 2294 0 R (HD.1866) 2295 0 R (HD.1867) 2296 0 R (HD.1868) 2297 0 R (HD.1869) 2298 0 R (HD.187) 401 0 R (HD.1870) 2299 0 R (HD.1871) 2300 0 R (HD.1872) 2301 0 R (HD.1873) 2302 0 R (HD.1874) 2303 0 R (HD.1875) 2304 0 R ] /Limits [ (HD.1847) (HD.1875) ] >>
+endobj
+11779 0 obj
+<< /Names [ (HD.1876) 2305 0 R (HD.1877) 2306 0 R (HD.1878) 2307 0 R (HD.1879) 2308 0 R (HD.188) 402 0 R (HD.1880) 2309 0 R (HD.1881) 2310 0 R (HD.1882) 2316 0 R (HD.1883) 2317 0 R (HD.1884) 2318 0 R (HD.1885) 2319 0 R (HD.1886) 2320 0 R (HD.1887) 2321 0 R (HD.1888) 2322 0 R (HD.1889) 2323 0 R (HD.189) 403 0 R (HD.1890) 2324 0 R (HD.1891) 2325 0 R (HD.1892) 2326 0 R (HD.1893) 2327 0 R (HD.1894) 2328 0 R (HD.1895) 2329 0 R (HD.1896) 2330 0 R (HD.1897) 2331 0 R (HD.1898) 2332 0 R (HD.1899) 2333 0 R (HD.19) 214 0 R (HD.190) 404 0 R (HD.1900) 2334 0 R (HD.1901) 2335 0 R (HD.1902) 2336 0 R (HD.1903) 2337 0 R ] /Limits [ (HD.1876) (HD.1903) ] >>
+endobj
+11780 0 obj
+<< /Names [ (HD.1904) 2338 0 R (HD.1905) 2339 0 R (HD.1906) 2340 0 R (HD.1907) 2341 0 R (HD.1908) 2342 0 R (HD.1909) 2343 0 R (HD.191) 405 0 R (HD.1910) 2344 0 R (HD.1911) 2345 0 R (HD.1912) 2346 0 R (HD.1913) 2347 0 R (HD.1914) 2348 0 R (HD.1915) 2349 0 R (HD.1916) 2350 0 R (HD.1917) 2351 0 R (HD.1918) 2352 0 R (HD.1919) 2353 0 R (HD.192) 406 0 R (HD.1920) 2354 0 R (HD.1921) 2355 0 R (HD.1922) 2356 0 R (HD.1923) 2357 0 R (HD.1924) 2358 0 R (HD.1925) 2359 0 R (HD.1926) 2360 0 R (HD.1927) 2361 0 R (HD.1928) 2362 0 R (HD.1929) 2363 0 R (HD.193) 407 0 R (HD.1930) 2371 0 R (HD.1931) 2372 0 R (HD.1932) 2373 0 R ] /Limits [ (HD.1904) (HD.1932) ] >>
+endobj
+11781 0 obj
+<< /Names [ (HD.1933) 2374 0 R (HD.1934) 2375 0 R (HD.1935) 2376 0 R (HD.1936) 2377 0 R (HD.1937) 2378 0 R (HD.1938) 2379 0 R (HD.1939) 2380 0 R (HD.194) 408 0 R (HD.1940) 2381 0 R (HD.1941) 2382 0 R (HD.1942) 2383 0 R (HD.1943) 2384 0 R (HD.1944) 2385 0 R (HD.1945) 2386 0 R (HD.1946) 2387 0 R (HD.1947) 2388 0 R (HD.1948) 2389 0 R (HD.1949) 2390 0 R (HD.195) 409 0 R (HD.1950) 2391 0 R (HD.1951) 2392 0 R (HD.1952) 2393 0 R (HD.1953) 2394 0 R (HD.1954) 2395 0 R (HD.1955) 2396 0 R (HD.1956) 2397 0 R (HD.1957) 2398 0 R (HD.1958) 2399 0 R (HD.1959) 2400 0 R (HD.196) 410 0 R (HD.1960) 2401 0 R (HD.1961) 2402 0 R ] /Limits [ (HD.1933) (HD.1961) ] >>
+endobj
+11782 0 obj
+<< /Names [ (HD.1962) 2403 0 R (HD.1963) 2404 0 R (HD.1964) 2405 0 R (HD.1965) 2412 0 R (HD.1966) 2413 0 R (HD.1967) 2414 0 R (HD.1968) 2415 0 R (HD.1969) 2416 0 R (HD.197) 411 0 R (HD.1970) 2417 0 R (HD.1971) 2418 0 R (HD.1972) 2419 0 R (HD.1973) 2420 0 R (HD.1974) 2421 0 R (HD.1975) 2422 0 R (HD.1976) 2423 0 R (HD.1977) 2424 0 R (HD.1978) 2425 0 R (HD.1979) 2426 0 R (HD.198) 412 0 R (HD.1980) 2427 0 R (HD.1981) 2428 0 R (HD.1982) 2429 0 R (HD.1983) 2430 0 R (HD.1984) 2431 0 R (HD.1985) 2432 0 R (HD.1986) 2433 0 R (HD.1987) 2434 0 R (HD.1988) 2435 0 R (HD.1989) 2436 0 R (HD.199) 413 0 R (HD.1990) 2437 0 R ] /Limits [ (HD.1962) (HD.1990) ] >>
+endobj
+11783 0 obj
+<< /Names [ (HD.1991) 2438 0 R (HD.1992) 2439 0 R (HD.1993) 2440 0 R (HD.1994) 2441 0 R (HD.1995) 2442 0 R (HD.1996) 2443 0 R (HD.1997) 2444 0 R (HD.1998) 2445 0 R (HD.1999) 2446 0 R (HD.2) 190 0 R (HD.20) 215 0 R (HD.200) 414 0 R (HD.2000) 2447 0 R (HD.2001) 2448 0 R (HD.2002) 2449 0 R (HD.2003) 2450 0 R (HD.2004) 2451 0 R (HD.2005) 2452 0 R (HD.2006) 2453 0 R (HD.2007) 2454 0 R (HD.2008) 2460 0 R (HD.2009) 2461 0 R (HD.201) 415 0 R (HD.2010) 2462 0 R (HD.2011) 2463 0 R (HD.2012) 2464 0 R (HD.2013) 2465 0 R (HD.2014) 2466 0 R (HD.2015) 2467 0 R (HD.2016) 2468 0 R (HD.2017) 2469 0 R (HD.2018) 2470 0 R ] /Limits [ (HD.1991) (HD.2018) ] >>
+endobj
+11784 0 obj
+<< /Names [ (HD.2019) 2471 0 R (HD.202) 416 0 R (HD.2020) 2472 0 R (HD.2021) 2473 0 R (HD.2022) 2474 0 R (HD.2023) 2475 0 R (HD.2024) 2476 0 R (HD.2025) 2477 0 R (HD.2026) 2478 0 R (HD.2027) 2479 0 R (HD.2028) 2480 0 R (HD.2029) 2481 0 R (HD.203) 417 0 R (HD.2030) 2482 0 R (HD.2031) 2483 0 R (HD.2032) 2484 0 R (HD.2033) 2485 0 R (HD.2034) 2486 0 R (HD.2035) 2487 0 R (HD.2036) 2488 0 R (HD.2037) 2489 0 R (HD.2038) 2490 0 R (HD.2039) 2491 0 R (HD.204) 418 0 R (HD.2040) 2492 0 R (HD.2041) 2493 0 R (HD.2042) 2494 0 R (HD.2043) 2495 0 R (HD.2044) 2496 0 R (HD.2045) 2497 0 R (HD.2046) 2498 0 R (HD.2047) 2499 0 R ] /Limits [ (HD.2019) (HD.2047) ] >>
+endobj
+11785 0 obj
+<< /Names [ (HD.2048) 2500 0 R (HD.2049) 2501 0 R (HD.205) 419 0 R (HD.2050) 2502 0 R (HD.2051) 2503 0 R (HD.2052) 2504 0 R (HD.2053) 2505 0 R (HD.2054) 2506 0 R (HD.2055) 2507 0 R (HD.2056) 2516 0 R (HD.2057) 2517 0 R (HD.2058) 2518 0 R (HD.2059) 2519 0 R (HD.206) 420 0 R (HD.2060) 2520 0 R (HD.2061) 2521 0 R (HD.2062) 2522 0 R (HD.2063) 2523 0 R (HD.2064) 2524 0 R (HD.2065) 2525 0 R (HD.2066) 2526 0 R (HD.2067) 2527 0 R (HD.2068) 2528 0 R (HD.2069) 2529 0 R (HD.207) 421 0 R (HD.2070) 2530 0 R (HD.2071) 2531 0 R (HD.2072) 2532 0 R (HD.2073) 2533 0 R (HD.2074) 2534 0 R (HD.2075) 2535 0 R (HD.2076) 2536 0 R ] /Limits [ (HD.2048) (HD.2076) ] >>
+endobj
+11786 0 obj
+<< /Names [ (HD.2077) 2537 0 R (HD.2078) 2538 0 R (HD.2079) 2539 0 R (HD.208) 422 0 R (HD.2080) 2540 0 R (HD.2081) 2541 0 R (HD.2082) 2542 0 R (HD.2083) 2543 0 R (HD.2084) 2544 0 R (HD.2085) 2545 0 R (HD.2086) 2546 0 R (HD.2087) 2547 0 R (HD.2088) 2548 0 R (HD.2089) 2549 0 R (HD.209) 423 0 R (HD.2090) 2550 0 R (HD.2091) 2551 0 R (HD.2092) 2552 0 R (HD.2093) 2553 0 R (HD.2094) 2554 0 R (HD.2095) 2555 0 R (HD.2096) 2556 0 R (HD.2097) 2557 0 R (HD.2098) 2558 0 R (HD.2099) 2559 0 R (HD.21) 216 0 R (HD.210) 424 0 R (HD.2100) 2560 0 R (HD.2101) 2568 0 R (HD.2102) 2569 0 R (HD.2103) 2570 0 R (HD.2104) 2571 0 R ] /Limits [ (HD.2077) (HD.2104) ] >>
+endobj
+11787 0 obj
+<< /Names [ (HD.2105) 2572 0 R (HD.2106) 2573 0 R (HD.2107) 2574 0 R (HD.2108) 2575 0 R (HD.2109) 2576 0 R (HD.211) 425 0 R (HD.2110) 2577 0 R (HD.2111) 2578 0 R (HD.2112) 2579 0 R (HD.2113) 2580 0 R (HD.2114) 2581 0 R (HD.2115) 2582 0 R (HD.2116) 2583 0 R (HD.2117) 2584 0 R (HD.2118) 2585 0 R (HD.2119) 2586 0 R (HD.212) 426 0 R (HD.2120) 2587 0 R (HD.2121) 2588 0 R (HD.2122) 2589 0 R (HD.2123) 2590 0 R (HD.2124) 2591 0 R (HD.2125) 2592 0 R (HD.2126) 2593 0 R (HD.2127) 2594 0 R (HD.2128) 2595 0 R (HD.2129) 2596 0 R (HD.213) 427 0 R (HD.2130) 2597 0 R (HD.2131) 2598 0 R (HD.2132) 2599 0 R (HD.2133) 2600 0 R ] /Limits [ (HD.2105) (HD.2133) ] >>
+endobj
+11788 0 obj
+<< /Names [ (HD.2134) 2601 0 R (HD.2135) 2602 0 R (HD.2136) 2603 0 R (HD.2137) 2604 0 R (HD.2138) 2610 0 R (HD.2139) 2611 0 R (HD.214) 428 0 R (HD.2140) 2612 0 R (HD.2141) 2613 0 R (HD.2142) 2614 0 R (HD.2143) 2615 0 R (HD.2144) 2616 0 R (HD.2145) 2617 0 R (HD.2146) 2618 0 R (HD.2147) 2619 0 R (HD.2148) 2620 0 R (HD.2149) 2621 0 R (HD.215) 434 0 R (HD.2150) 2622 0 R (HD.2151) 2623 0 R (HD.2152) 2624 0 R (HD.2153) 2625 0 R (HD.2154) 2626 0 R (HD.2155) 2627 0 R (HD.2156) 2628 0 R (HD.2157) 2629 0 R (HD.2158) 2630 0 R (HD.2159) 2631 0 R (HD.216) 435 0 R (HD.2160) 2632 0 R (HD.2161) 2633 0 R (HD.2162) 2634 0 R ] /Limits [ (HD.2134) (HD.2162) ] >>
+endobj
+11789 0 obj
+<< /Names [ (HD.2163) 2635 0 R (HD.2164) 2636 0 R (HD.2165) 2637 0 R (HD.2166) 2638 0 R (HD.2167) 2639 0 R (HD.2168) 2640 0 R (HD.2169) 2641 0 R (HD.217) 436 0 R (HD.2170) 2642 0 R (HD.2171) 2643 0 R (HD.2172) 2644 0 R (HD.2173) 2645 0 R (HD.2174) 2646 0 R (HD.2175) 2647 0 R (HD.2176) 2648 0 R (HD.2177) 2649 0 R (HD.2178) 2650 0 R (HD.2179) 2651 0 R (HD.218) 437 0 R (HD.2180) 2652 0 R (HD.2181) 2653 0 R (HD.2182) 2659 0 R (HD.2183) 2660 0 R (HD.2184) 2661 0 R (HD.2185) 2662 0 R (HD.2186) 2663 0 R (HD.2187) 2664 0 R (HD.2188) 2665 0 R (HD.2189) 2666 0 R (HD.219) 438 0 R (HD.2190) 2667 0 R (HD.2191) 2668 0 R ] /Limits [ (HD.2163) (HD.2191) ] >>
+endobj
+11790 0 obj
+<< /Names [ (HD.2192) 2669 0 R (HD.2193) 2670 0 R (HD.2194) 2671 0 R (HD.2195) 2672 0 R (HD.2196) 2673 0 R (HD.2197) 2674 0 R (HD.2198) 2675 0 R (HD.2199) 2676 0 R (HD.22) 217 0 R (HD.220) 439 0 R (HD.2200) 2677 0 R (HD.2201) 2678 0 R (HD.2202) 2679 0 R (HD.2203) 2680 0 R (HD.2204) 2681 0 R (HD.2205) 2682 0 R (HD.2206) 2683 0 R (HD.2207) 2684 0 R (HD.2208) 2685 0 R (HD.2209) 2686 0 R (HD.221) 440 0 R (HD.2210) 2687 0 R (HD.2211) 2688 0 R (HD.2212) 2689 0 R (HD.2213) 2690 0 R (HD.2214) 2691 0 R (HD.2215) 2692 0 R (HD.2216) 2693 0 R (HD.2217) 2694 0 R (HD.2218) 2695 0 R (HD.2219) 2696 0 R (HD.222) 441 0 R ] /Limits [ (HD.2192) (HD.222) ] >>
+endobj
+11791 0 obj
+<< /Names [ (HD.2220) 2697 0 R (HD.2221) 2698 0 R (HD.2222) 2699 0 R (HD.2223) 2700 0 R (HD.2224) 2701 0 R (HD.2225) 2702 0 R (HD.2226) 2703 0 R (HD.2227) 2708 0 R (HD.2228) 2709 0 R (HD.2229) 2710 0 R (HD.223) 442 0 R (HD.2230) 2711 0 R (HD.2231) 2712 0 R (HD.2232) 2713 0 R (HD.2233) 2714 0 R (HD.2234) 2715 0 R (HD.2235) 2716 0 R (HD.2236) 2717 0 R (HD.2237) 2718 0 R (HD.2238) 2719 0 R (HD.2239) 2720 0 R (HD.224) 443 0 R (HD.2240) 2721 0 R (HD.2241) 2722 0 R (HD.2242) 2723 0 R (HD.2243) 2724 0 R (HD.2244) 2725 0 R (HD.2245) 2726 0 R (HD.2246) 2727 0 R (HD.2247) 2728 0 R (HD.2248) 2729 0 R (HD.2249) 2730 0 R ] /Limits [ (HD.2220) (HD.2249) ] >>
+endobj
+11792 0 obj
+<< /Names [ (HD.225) 444 0 R (HD.2250) 2731 0 R (HD.2251) 2732 0 R (HD.2252) 2733 0 R (HD.2253) 2734 0 R (HD.2254) 2735 0 R (HD.2255) 2736 0 R (HD.2256) 2737 0 R (HD.2257) 2738 0 R (HD.2258) 2739 0 R (HD.2259) 2740 0 R (HD.226) 445 0 R (HD.2260) 2741 0 R (HD.2261) 2742 0 R (HD.2262) 2743 0 R (HD.2263) 2744 0 R (HD.2264) 2745 0 R (HD.2265) 2746 0 R (HD.2266) 2747 0 R (HD.2267) 2748 0 R (HD.2268) 2749 0 R (HD.2269) 2750 0 R (HD.227) 446 0 R (HD.2270) 2751 0 R (HD.2271) 2752 0 R (HD.2272) 2753 0 R (HD.2273) 2754 0 R (HD.2274) 2755 0 R (HD.2275) 2756 0 R (HD.2276) 2757 0 R (HD.2277) 2765 0 R (HD.2278) 2766 0 R ] /Limits [ (HD.225) (HD.2278) ] >>
+endobj
+11793 0 obj
+<< /Names [ (HD.2279) 2767 0 R (HD.228) 447 0 R (HD.2280) 2768 0 R (HD.2281) 2769 0 R (HD.2282) 2770 0 R (HD.2283) 2771 0 R (HD.2284) 2772 0 R (HD.2285) 2773 0 R (HD.2286) 2774 0 R (HD.2287) 2775 0 R (HD.2288) 2776 0 R (HD.2289) 2777 0 R (HD.229) 448 0 R (HD.2290) 2778 0 R (HD.2291) 2779 0 R (HD.2292) 2780 0 R (HD.2293) 2781 0 R (HD.2294) 2782 0 R (HD.2295) 2783 0 R (HD.2296) 2784 0 R (HD.2297) 2785 0 R (HD.2298) 2786 0 R (HD.2299) 2787 0 R (HD.23) 218 0 R (HD.230) 449 0 R (HD.2300) 2788 0 R (HD.2301) 2789 0 R (HD.2302) 2790 0 R (HD.2303) 2791 0 R (HD.2304) 2792 0 R (HD.2305) 2793 0 R (HD.2306) 2794 0 R ] /Limits [ (HD.2279) (HD.2306) ] >>
+endobj
+11794 0 obj
+<< /Names [ (HD.2307) 2795 0 R (HD.2308) 2796 0 R (HD.2309) 2797 0 R (HD.231) 450 0 R (HD.2310) 2798 0 R (HD.2311) 2799 0 R (HD.2312) 2800 0 R (HD.2313) 2801 0 R (HD.2314) 2802 0 R (HD.2315) 2803 0 R (HD.2316) 2804 0 R (HD.2317) 2805 0 R (HD.2318) 2806 0 R (HD.2319) 2807 0 R (HD.232) 451 0 R (HD.2320) 2808 0 R (HD.2321) 2809 0 R (HD.2322) 2810 0 R (HD.2323) 2811 0 R (HD.2324) 2812 0 R (HD.2325) 2813 0 R (HD.2326) 2814 0 R (HD.2327) 2815 0 R (HD.2328) 2820 0 R (HD.2329) 2821 0 R (HD.233) 452 0 R (HD.2330) 2822 0 R (HD.2331) 2823 0 R (HD.2332) 2824 0 R (HD.2333) 2825 0 R (HD.2334) 2826 0 R (HD.2335) 2827 0 R ] /Limits [ (HD.2307) (HD.2335) ] >>
+endobj
+11795 0 obj
+<< /Names [ (HD.2336) 2828 0 R (HD.2337) 2829 0 R (HD.2338) 2830 0 R (HD.2339) 2831 0 R (HD.234) 453 0 R (HD.2340) 2832 0 R (HD.2341) 2833 0 R (HD.2342) 2834 0 R (HD.2343) 2835 0 R (HD.2344) 2836 0 R (HD.2345) 2837 0 R (HD.2346) 2838 0 R (HD.2347) 2839 0 R (HD.2348) 2840 0 R (HD.2349) 2841 0 R (HD.235) 454 0 R (HD.2350) 2842 0 R (HD.2351) 2843 0 R (HD.2352) 2844 0 R (HD.2353) 2845 0 R (HD.2354) 2846 0 R (HD.2355) 2847 0 R (HD.2356) 2848 0 R (HD.2357) 2849 0 R (HD.2358) 2850 0 R (HD.2359) 2851 0 R (HD.236) 455 0 R (HD.2360) 2852 0 R (HD.2361) 2853 0 R (HD.2362) 2854 0 R (HD.2363) 2855 0 R (HD.2364) 2856 0 R ] /Limits [ (HD.2336) (HD.2364) ] >>
+endobj
+11796 0 obj
+<< /Names [ (HD.2365) 2857 0 R (HD.2366) 2858 0 R (HD.2367) 2859 0 R (HD.2368) 2860 0 R (HD.2369) 2861 0 R (HD.237) 456 0 R (HD.2370) 2862 0 R (HD.2371) 2863 0 R (HD.2372) 2864 0 R (HD.2373) 2865 0 R (HD.2374) 2866 0 R (HD.2375) 2867 0 R (HD.2376) 2868 0 R (HD.2377) 2869 0 R (HD.2378) 2870 0 R (HD.2379) 2871 0 R (HD.238) 457 0 R (HD.2380) 2872 0 R (HD.2381) 2873 0 R (HD.2382) 2874 0 R (HD.2383) 2875 0 R (HD.2384) 2880 0 R (HD.2385) 2881 0 R (HD.2386) 2882 0 R (HD.2387) 2883 0 R (HD.2388) 2884 0 R (HD.2389) 2885 0 R (HD.239) 458 0 R (HD.2390) 2886 0 R (HD.2391) 2887 0 R (HD.2392) 2888 0 R (HD.2393) 2889 0 R ] /Limits [ (HD.2365) (HD.2393) ] >>
+endobj
+11797 0 obj
+<< /Names [ (HD.2394) 2890 0 R (HD.2395) 2891 0 R (HD.2396) 2892 0 R (HD.2397) 2893 0 R (HD.2398) 2894 0 R (HD.2399) 2895 0 R (HD.24) 219 0 R (HD.240) 459 0 R (HD.2400) 2896 0 R (HD.2401) 2897 0 R (HD.2402) 2898 0 R (HD.2403) 2899 0 R (HD.2404) 2900 0 R (HD.2405) 2901 0 R (HD.2406) 2902 0 R (HD.2407) 2903 0 R (HD.2408) 2904 0 R (HD.2409) 2905 0 R (HD.241) 460 0 R (HD.2410) 2906 0 R (HD.2411) 2907 0 R (HD.2412) 2908 0 R (HD.2413) 2909 0 R (HD.2414) 2910 0 R (HD.2415) 2911 0 R (HD.2416) 2912 0 R (HD.2417) 2913 0 R (HD.2418) 2914 0 R (HD.2419) 2915 0 R (HD.242) 461 0 R (HD.2420) 2916 0 R (HD.2421) 2917 0 R ] /Limits [ (HD.2394) (HD.2421) ] >>
+endobj
+11798 0 obj
+<< /Names [ (HD.2422) 2918 0 R (HD.2423) 2919 0 R (HD.2424) 2920 0 R (HD.2425) 2921 0 R (HD.2426) 2922 0 R (HD.2427) 2923 0 R (HD.2428) 2924 0 R (HD.2429) 2925 0 R (HD.243) 462 0 R (HD.2430) 2926 0 R (HD.2431) 2927 0 R (HD.2432) 2932 0 R (HD.2433) 2933 0 R (HD.2434) 2934 0 R (HD.2435) 2935 0 R (HD.2436) 2936 0 R (HD.2437) 2937 0 R (HD.2438) 2938 0 R (HD.2439) 2939 0 R (HD.244) 463 0 R (HD.2440) 2940 0 R (HD.2441) 2941 0 R (HD.2442) 2942 0 R (HD.2443) 2943 0 R (HD.2444) 2944 0 R (HD.2445) 2945 0 R (HD.2446) 2946 0 R (HD.2447) 2947 0 R (HD.2448) 2948 0 R (HD.2449) 2949 0 R (HD.245) 464 0 R (HD.2450) 2950 0 R ] /Limits [ (HD.2422) (HD.2450) ] >>
+endobj
+11799 0 obj
+<< /Names [ (HD.2451) 2951 0 R (HD.2452) 2952 0 R (HD.2453) 2953 0 R (HD.2454) 2954 0 R (HD.2455) 2955 0 R (HD.2456) 2956 0 R (HD.2457) 2957 0 R (HD.2458) 2958 0 R (HD.2459) 2959 0 R (HD.246) 465 0 R (HD.2460) 2960 0 R (HD.2461) 2961 0 R (HD.2462) 2962 0 R (HD.2463) 2963 0 R (HD.2464) 2964 0 R (HD.2465) 2965 0 R (HD.2466) 2970 0 R (HD.2467) 2971 0 R (HD.2468) 2972 0 R (HD.2469) 2973 0 R (HD.247) 466 0 R (HD.2470) 2974 0 R (HD.2471) 2975 0 R (HD.2472) 2976 0 R (HD.2473) 2977 0 R (HD.2474) 2978 0 R (HD.2475) 2979 0 R (HD.2476) 2980 0 R (HD.2477) 2981 0 R (HD.2478) 2982 0 R (HD.2479) 2983 0 R (HD.248) 467 0 R ] /Limits [ (HD.2451) (HD.248) ] >>
+endobj
+11800 0 obj
+<< /Names [ (HD.2480) 2984 0 R (HD.2481) 2985 0 R (HD.2482) 2986 0 R (HD.2483) 2987 0 R (HD.2484) 2988 0 R (HD.2485) 2989 0 R (HD.2486) 2990 0 R (HD.2487) 2991 0 R (HD.2488) 2992 0 R (HD.2489) 2993 0 R (HD.249) 468 0 R (HD.2490) 2994 0 R (HD.2491) 2995 0 R (HD.2492) 2996 0 R (HD.2493) 2997 0 R (HD.2494) 2998 0 R (HD.2495) 2999 0 R (HD.2496) 3000 0 R (HD.2497) 3001 0 R (HD.2498) 3002 0 R (HD.2499) 3003 0 R (HD.25) 220 0 R (HD.250) 469 0 R (HD.2500) 3004 0 R (HD.2501) 3005 0 R (HD.2502) 3006 0 R (HD.2503) 3007 0 R (HD.2504) 3008 0 R (HD.2505) 3009 0 R (HD.2506) 3010 0 R (HD.2507) 3011 0 R (HD.2508) 3012 0 R ] /Limits [ (HD.2480) (HD.2508) ] >>
+endobj
+11801 0 obj
+<< /Names [ (HD.2509) 3013 0 R (HD.251) 470 0 R (HD.2510) 3014 0 R (HD.2511) 3015 0 R (HD.2512) 3020 0 R (HD.2513) 3021 0 R (HD.2514) 3022 0 R (HD.2515) 3023 0 R (HD.2516) 3024 0 R (HD.2517) 3025 0 R (HD.2518) 3026 0 R (HD.2519) 3027 0 R (HD.252) 471 0 R (HD.2520) 3028 0 R (HD.2521) 3029 0 R (HD.2522) 3030 0 R (HD.2523) 3031 0 R (HD.2524) 3032 0 R (HD.2525) 3033 0 R (HD.2526) 3034 0 R (HD.2527) 3035 0 R (HD.2528) 3036 0 R (HD.2529) 3037 0 R (HD.253) 472 0 R (HD.2530) 3038 0 R (HD.2531) 3039 0 R (HD.2532) 3040 0 R (HD.2533) 3041 0 R (HD.2534) 3042 0 R (HD.2535) 3043 0 R (HD.2536) 3044 0 R (HD.2537) 3045 0 R ] /Limits [ (HD.2509) (HD.2537) ] >>
+endobj
+11802 0 obj
+<< /Names [ (HD.2538) 3046 0 R (HD.2539) 3047 0 R (HD.254) 474 0 R (HD.2540) 3048 0 R (HD.2541) 3049 0 R (HD.2542) 3050 0 R (HD.2543) 3051 0 R (HD.2544) 3052 0 R (HD.2545) 3053 0 R (HD.2546) 3054 0 R (HD.2547) 3055 0 R (HD.2548) 3056 0 R (HD.2549) 3057 0 R (HD.255) 475 0 R (HD.2550) 3058 0 R (HD.2551) 3059 0 R (HD.2552) 3060 0 R (HD.2553) 3061 0 R (HD.2554) 3062 0 R (HD.2555) 3063 0 R (HD.2556) 3064 0 R (HD.2557) 3065 0 R (HD.2558) 3066 0 R (HD.2559) 3071 0 R (HD.256) 476 0 R (HD.2560) 3072 0 R (HD.2561) 3073 0 R (HD.2562) 3074 0 R (HD.2563) 3075 0 R (HD.2564) 3076 0 R (HD.2565) 3077 0 R (HD.2566) 3078 0 R ] /Limits [ (HD.2538) (HD.2566) ] >>
+endobj
+11803 0 obj
+<< /Names [ (HD.2567) 3079 0 R (HD.2568) 3080 0 R (HD.2569) 3081 0 R (HD.257) 477 0 R (HD.2570) 3082 0 R (HD.2571) 3083 0 R (HD.2572) 3084 0 R (HD.2573) 3085 0 R (HD.2574) 3086 0 R (HD.2575) 3087 0 R (HD.2576) 3088 0 R (HD.2577) 3089 0 R (HD.2578) 3090 0 R (HD.2579) 3091 0 R (HD.258) 478 0 R (HD.2580) 3092 0 R (HD.2581) 3093 0 R (HD.2582) 3094 0 R (HD.2583) 3095 0 R (HD.2584) 3096 0 R (HD.2585) 3097 0 R (HD.2586) 3098 0 R (HD.2587) 3099 0 R (HD.2588) 3100 0 R (HD.2589) 3101 0 R (HD.259) 479 0 R (HD.2590) 3102 0 R (HD.2591) 3103 0 R (HD.2592) 3104 0 R (HD.2593) 3105 0 R (HD.2594) 3106 0 R (HD.2595) 3107 0 R ] /Limits [ (HD.2567) (HD.2595) ] >>
+endobj
+11804 0 obj
+<< /Names [ (HD.2596) 3108 0 R (HD.2597) 3109 0 R (HD.2598) 3110 0 R (HD.2599) 3111 0 R (HD.26) 221 0 R (HD.260) 487 0 R (HD.2600) 3112 0 R (HD.2601) 3113 0 R (HD.2602) 3114 0 R (HD.2603) 3115 0 R (HD.2604) 3116 0 R (HD.2605) 3117 0 R (HD.2606) 3118 0 R (HD.2607) 3119 0 R (HD.2608) 3120 0 R (HD.2609) 3121 0 R (HD.261) 488 0 R (HD.2610) 3126 0 R (HD.2611) 3127 0 R (HD.2612) 3128 0 R (HD.2613) 3129 0 R (HD.2614) 3130 0 R (HD.2615) 3131 0 R (HD.2616) 3132 0 R (HD.2617) 3133 0 R (HD.2618) 3134 0 R (HD.2619) 3135 0 R (HD.262) 489 0 R (HD.2620) 3136 0 R (HD.2621) 3137 0 R (HD.2622) 3138 0 R (HD.2623) 3139 0 R ] /Limits [ (HD.2596) (HD.2623) ] >>
+endobj
+11805 0 obj
+<< /Names [ (HD.2624) 3140 0 R (HD.2625) 3141 0 R (HD.2626) 3142 0 R (HD.2627) 3143 0 R (HD.2628) 3144 0 R (HD.2629) 3145 0 R (HD.263) 490 0 R (HD.2630) 3146 0 R (HD.2631) 3147 0 R (HD.2632) 3148 0 R (HD.2633) 3149 0 R (HD.2634) 3150 0 R (HD.2635) 3151 0 R (HD.2636) 3152 0 R (HD.2637) 3153 0 R (HD.2638) 3154 0 R (HD.2639) 3155 0 R (HD.264) 491 0 R (HD.2640) 3156 0 R (HD.2641) 3157 0 R (HD.2642) 3158 0 R (HD.2643) 3159 0 R (HD.2644) 3160 0 R (HD.2645) 3161 0 R (HD.2646) 3162 0 R (HD.2647) 3163 0 R (HD.2648) 3164 0 R (HD.2649) 3165 0 R (HD.265) 492 0 R (HD.2650) 3166 0 R (HD.2651) 3167 0 R (HD.2652) 3168 0 R ] /Limits [ (HD.2624) (HD.2652) ] >>
+endobj
+11806 0 obj
+<< /Names [ (HD.2653) 3169 0 R (HD.2654) 3170 0 R (HD.2655) 3171 0 R (HD.2656) 3172 0 R (HD.2657) 3173 0 R (HD.2658) 3174 0 R (HD.2659) 3175 0 R (HD.266) 493 0 R (HD.2660) 3176 0 R (HD.2661) 3177 0 R (HD.2662) 3178 0 R (HD.2663) 3183 0 R (HD.2664) 3184 0 R (HD.2665) 3185 0 R (HD.2666) 3186 0 R (HD.2667) 3187 0 R (HD.2668) 3188 0 R (HD.2669) 3189 0 R (HD.267) 494 0 R (HD.2670) 3190 0 R (HD.2671) 3191 0 R (HD.2672) 3192 0 R (HD.2673) 3193 0 R (HD.2674) 3194 0 R (HD.2675) 3195 0 R (HD.2676) 3196 0 R (HD.2677) 3197 0 R (HD.2678) 3198 0 R (HD.2679) 3199 0 R (HD.268) 495 0 R (HD.2680) 3200 0 R (HD.2681) 3201 0 R ] /Limits [ (HD.2653) (HD.2681) ] >>
+endobj
+11807 0 obj
+<< /Names [ (HD.2682) 3202 0 R (HD.2683) 3203 0 R (HD.2684) 3204 0 R (HD.2685) 3205 0 R (HD.2686) 3206 0 R (HD.2687) 3207 0 R (HD.2688) 3208 0 R (HD.2689) 3209 0 R (HD.269) 496 0 R (HD.2690) 3210 0 R (HD.2691) 3211 0 R (HD.2692) 3212 0 R (HD.2693) 3213 0 R (HD.2694) 3214 0 R (HD.2695) 3215 0 R (HD.2696) 3216 0 R (HD.2697) 3217 0 R (HD.2698) 3218 0 R (HD.2699) 3219 0 R (HD.27) 222 0 R (HD.270) 497 0 R (HD.2700) 3220 0 R (HD.2701) 3221 0 R (HD.2702) 3222 0 R (HD.2703) 3223 0 R (HD.2704) 3224 0 R (HD.2705) 3225 0 R (HD.2706) 3226 0 R (HD.2707) 3227 0 R (HD.2708) 3228 0 R (HD.2709) 3229 0 R (HD.271) 498 0 R ] /Limits [ (HD.2682) (HD.271) ] >>
+endobj
+11808 0 obj
+<< /Names [ (HD.2710) 3230 0 R (HD.2711) 3231 0 R (HD.2712) 3232 0 R (HD.2713) 3233 0 R (HD.2714) 3234 0 R (HD.2715) 3235 0 R (HD.2716) 3236 0 R (HD.2717) 3237 0 R (HD.2718) 3238 0 R (HD.2719) 3243 0 R (HD.272) 499 0 R (HD.2720) 3244 0 R (HD.2721) 3245 0 R (HD.2722) 3246 0 R (HD.2723) 3247 0 R (HD.2724) 3248 0 R (HD.2725) 3249 0 R (HD.2726) 3250 0 R (HD.2727) 3251 0 R (HD.2728) 3252 0 R (HD.2729) 3253 0 R (HD.273) 500 0 R (HD.2730) 3254 0 R (HD.2731) 3255 0 R (HD.2732) 3256 0 R (HD.2733) 3257 0 R (HD.2734) 3258 0 R (HD.2735) 3259 0 R (HD.2736) 3260 0 R (HD.2737) 3261 0 R (HD.2738) 3262 0 R (HD.2739) 3263 0 R ] /Limits [ (HD.2710) (HD.2739) ] >>
+endobj
+11809 0 obj
+<< /Names [ (HD.274) 501 0 R (HD.2740) 3264 0 R (HD.2741) 3265 0 R (HD.2742) 3266 0 R (HD.2743) 3267 0 R (HD.2744) 3268 0 R (HD.2745) 3269 0 R (HD.2746) 3270 0 R (HD.2747) 3271 0 R (HD.2748) 3272 0 R (HD.2749) 3273 0 R (HD.275) 502 0 R (HD.2750) 3274 0 R (HD.2751) 3275 0 R (HD.2752) 3276 0 R (HD.2753) 3277 0 R (HD.2754) 3278 0 R (HD.2755) 3279 0 R (HD.2756) 3280 0 R (HD.2757) 3281 0 R (HD.2758) 3282 0 R (HD.2759) 3283 0 R (HD.276) 503 0 R (HD.2760) 3284 0 R (HD.2761) 3285 0 R (HD.2762) 3286 0 R (HD.2763) 3287 0 R (HD.2764) 3288 0 R (HD.2765) 3289 0 R (HD.2766) 3290 0 R (HD.2767) 3291 0 R (HD.2768) 3292 0 R ] /Limits [ (HD.274) (HD.2768) ] >>
+endobj
+11810 0 obj
+<< /Names [ (HD.2769) 3293 0 R (HD.277) 504 0 R (HD.2770) 3294 0 R (HD.2771) 3295 0 R (HD.2772) 3296 0 R (HD.2773) 3297 0 R (HD.2774) 3303 0 R (HD.2775) 3304 0 R (HD.2776) 3305 0 R (HD.2777) 3306 0 R (HD.2778) 3307 0 R (HD.2779) 3308 0 R (HD.278) 505 0 R (HD.2780) 3309 0 R (HD.2781) 3310 0 R (HD.2782) 3311 0 R (HD.2783) 3312 0 R (HD.2784) 3313 0 R (HD.2785) 3314 0 R (HD.2786) 3315 0 R (HD.2787) 3316 0 R (HD.2788) 3317 0 R (HD.2789) 3318 0 R (HD.279) 506 0 R (HD.2790) 3319 0 R (HD.2791) 3320 0 R (HD.2792) 3321 0 R (HD.2793) 3322 0 R (HD.2794) 3323 0 R (HD.2795) 3324 0 R (HD.2796) 3325 0 R (HD.2797) 3326 0 R ] /Limits [ (HD.2769) (HD.2797) ] >>
+endobj
+11811 0 obj
+<< /Names [ (HD.2798) 3327 0 R (HD.2799) 3328 0 R (HD.28) 223 0 R (HD.280) 507 0 R (HD.2800) 3329 0 R (HD.2801) 3330 0 R (HD.2802) 3331 0 R (HD.2803) 3332 0 R (HD.2804) 3333 0 R (HD.2805) 3338 0 R (HD.2806) 3339 0 R (HD.2807) 3340 0 R (HD.2808) 3341 0 R (HD.2809) 3342 0 R (HD.281) 508 0 R (HD.2810) 3343 0 R (HD.2811) 3344 0 R (HD.2812) 3345 0 R (HD.2813) 3346 0 R (HD.2814) 3347 0 R (HD.2815) 3348 0 R (HD.2816) 3349 0 R (HD.2817) 3350 0 R (HD.2818) 3351 0 R (HD.2819) 3352 0 R (HD.282) 509 0 R (HD.2820) 3353 0 R (HD.2821) 3354 0 R (HD.2822) 3355 0 R (HD.2823) 3356 0 R (HD.2824) 3357 0 R (HD.2825) 3358 0 R ] /Limits [ (HD.2798) (HD.2825) ] >>
+endobj
+11812 0 obj
+<< /Names [ (HD.2826) 3359 0 R (HD.2827) 3360 0 R (HD.2828) 3361 0 R (HD.2829) 3362 0 R (HD.283) 510 0 R (HD.2830) 3363 0 R (HD.2831) 3364 0 R (HD.2832) 3365 0 R (HD.2833) 3366 0 R (HD.2834) 3367 0 R (HD.2835) 3368 0 R (HD.2836) 3369 0 R (HD.2837) 3370 0 R (HD.2838) 3371 0 R (HD.2839) 3372 0 R (HD.284) 511 0 R (HD.2840) 3373 0 R (HD.2841) 3374 0 R (HD.2842) 3375 0 R (HD.2843) 3376 0 R (HD.2844) 3377 0 R (HD.2845) 3378 0 R (HD.2846) 3379 0 R (HD.2847) 3380 0 R (HD.2848) 3385 0 R (HD.2849) 3386 0 R (HD.285) 512 0 R (HD.2850) 3387 0 R (HD.2851) 3388 0 R (HD.2852) 3389 0 R (HD.2853) 3390 0 R (HD.2854) 3391 0 R ] /Limits [ (HD.2826) (HD.2854) ] >>
+endobj
+11813 0 obj
+<< /Names [ (HD.2855) 3392 0 R (HD.2856) 3393 0 R (HD.2857) 3394 0 R (HD.2858) 3395 0 R (HD.2859) 3396 0 R (HD.286) 513 0 R (HD.2860) 3397 0 R (HD.2861) 3398 0 R (HD.2862) 3399 0 R (HD.2863) 3400 0 R (HD.2864) 3401 0 R (HD.2865) 3402 0 R (HD.2866) 3403 0 R (HD.2867) 3404 0 R (HD.2868) 3405 0 R (HD.2869) 3406 0 R (HD.287) 514 0 R (HD.2870) 3407 0 R (HD.2871) 3408 0 R (HD.2872) 3409 0 R (HD.2873) 3410 0 R (HD.2874) 3411 0 R (HD.2875) 3412 0 R (HD.2876) 3413 0 R (HD.2877) 3414 0 R (HD.2878) 3415 0 R (HD.2879) 3416 0 R (HD.288) 515 0 R (HD.2880) 3417 0 R (HD.2881) 3418 0 R (HD.2882) 3419 0 R (HD.2883) 3420 0 R ] /Limits [ (HD.2855) (HD.2883) ] >>
+endobj
+11814 0 obj
+<< /Names [ (HD.2884) 3421 0 R (HD.2885) 3422 0 R (HD.2886) 3423 0 R (HD.2887) 3424 0 R (HD.2888) 3425 0 R (HD.2889) 3430 0 R (HD.289) 516 0 R (HD.2890) 3431 0 R (HD.2891) 3432 0 R (HD.2892) 3433 0 R (HD.2893) 3434 0 R (HD.2894) 3435 0 R (HD.2895) 3436 0 R (HD.2896) 3437 0 R (HD.2897) 3438 0 R (HD.2898) 3439 0 R (HD.2899) 3440 0 R (HD.29) 224 0 R (HD.290) 517 0 R (HD.2900) 3441 0 R (HD.2901) 3442 0 R (HD.2902) 3443 0 R (HD.2903) 3444 0 R (HD.2904) 3445 0 R (HD.2905) 3446 0 R (HD.2906) 3447 0 R (HD.2907) 3448 0 R (HD.2908) 3449 0 R (HD.2909) 3450 0 R (HD.291) 518 0 R (HD.2910) 3451 0 R (HD.2911) 3452 0 R ] /Limits [ (HD.2884) (HD.2911) ] >>
+endobj
+11815 0 obj
+<< /Names [ (HD.2912) 3453 0 R (HD.2913) 3454 0 R (HD.2914) 3455 0 R (HD.2915) 3456 0 R (HD.2916) 3457 0 R (HD.2917) 3458 0 R (HD.2918) 3459 0 R (HD.2919) 3460 0 R (HD.292) 519 0 R (HD.2920) 3461 0 R (HD.2921) 3462 0 R (HD.2922) 3463 0 R (HD.2923) 3464 0 R (HD.2924) 3465 0 R (HD.2925) 3466 0 R (HD.2926) 3467 0 R (HD.2927) 3468 0 R (HD.2928) 3469 0 R (HD.2929) 3470 0 R (HD.293) 520 0 R (HD.2930) 3471 0 R (HD.2931) 3472 0 R (HD.2932) 3473 0 R (HD.2933) 3474 0 R (HD.2934) 3475 0 R (HD.2935) 3476 0 R (HD.2936) 3477 0 R (HD.2937) 3478 0 R (HD.2938) 3479 0 R (HD.2939) 3480 0 R (HD.294) 521 0 R (HD.2940) 3481 0 R ] /Limits [ (HD.2912) (HD.2940) ] >>
+endobj
+11816 0 obj
+<< /Names [ (HD.2941) 3486 0 R (HD.2942) 3487 0 R (HD.2943) 3488 0 R (HD.2944) 3489 0 R (HD.2945) 3490 0 R (HD.2946) 3491 0 R (HD.2947) 3492 0 R (HD.2948) 3493 0 R (HD.2949) 3494 0 R (HD.295) 522 0 R (HD.2950) 3495 0 R (HD.2951) 3496 0 R (HD.2952) 3497 0 R (HD.2953) 3498 0 R (HD.2954) 3499 0 R (HD.2955) 3500 0 R (HD.2956) 3501 0 R (HD.2957) 3502 0 R (HD.2958) 3503 0 R (HD.2959) 3504 0 R (HD.296) 523 0 R (HD.2960) 3505 0 R (HD.2961) 3506 0 R (HD.2962) 3507 0 R (HD.2963) 3508 0 R (HD.2964) 3509 0 R (HD.2965) 3510 0 R (HD.2966) 3511 0 R (HD.2967) 3512 0 R (HD.2968) 3513 0 R (HD.2969) 3514 0 R (HD.297) 524 0 R ] /Limits [ (HD.2941) (HD.297) ] >>
+endobj
+11817 0 obj
+<< /Names [ (HD.2970) 3515 0 R (HD.2971) 3516 0 R (HD.2972) 3517 0 R (HD.2973) 3518 0 R (HD.2974) 3519 0 R (HD.2975) 3520 0 R (HD.2976) 3521 0 R (HD.2977) 3522 0 R (HD.2978) 3523 0 R (HD.2979) 3524 0 R (HD.298) 525 0 R (HD.2980) 3525 0 R (HD.2981) 3526 0 R (HD.2982) 3527 0 R (HD.2983) 3528 0 R (HD.2984) 3529 0 R (HD.2985) 3530 0 R (HD.2986) 3531 0 R (HD.2987) 3532 0 R (HD.2988) 3533 0 R (HD.2989) 3534 0 R (HD.299) 526 0 R (HD.2990) 3535 0 R (HD.2991) 3540 0 R (HD.2992) 3541 0 R (HD.2993) 3542 0 R (HD.2994) 3543 0 R (HD.2995) 3544 0 R (HD.2996) 3545 0 R (HD.2997) 3546 0 R (HD.2998) 3547 0 R (HD.2999) 3548 0 R ] /Limits [ (HD.2970) (HD.2999) ] >>
+endobj
+11818 0 obj
+<< /Names [ (HD.3) 191 0 R (HD.30) 225 0 R (HD.300) 527 0 R (HD.3000) 3549 0 R (HD.3001) 3550 0 R (HD.3002) 3551 0 R (HD.3003) 3552 0 R (HD.3004) 3553 0 R (HD.3005) 3554 0 R (HD.3006) 3555 0 R (HD.3007) 3556 0 R (HD.3008) 3557 0 R (HD.3009) 3558 0 R (HD.301) 528 0 R (HD.3010) 3559 0 R (HD.3011) 3560 0 R (HD.3012) 3561 0 R (HD.3013) 3562 0 R (HD.3014) 3563 0 R (HD.3015) 3564 0 R (HD.3016) 3565 0 R (HD.3017) 3566 0 R (HD.3018) 3567 0 R (HD.3019) 3568 0 R (HD.302) 529 0 R (HD.3020) 3569 0 R (HD.3021) 3570 0 R (HD.3022) 3571 0 R (HD.3023) 3572 0 R (HD.3024) 3573 0 R (HD.3025) 3574 0 R (HD.3026) 3575 0 R ] /Limits [ (HD.3) (HD.3026) ] >>
+endobj
+11819 0 obj
+<< /Names [ (HD.3027) 3576 0 R (HD.3028) 3577 0 R (HD.3029) 3578 0 R (HD.303) 530 0 R (HD.3030) 3579 0 R (HD.3031) 3580 0 R (HD.3032) 3581 0 R (HD.3033) 3582 0 R (HD.3034) 3583 0 R (HD.3035) 3584 0 R (HD.3036) 3585 0 R (HD.3037) 3586 0 R (HD.3038) 3591 0 R (HD.3039) 3592 0 R (HD.304) 535 0 R (HD.3040) 3593 0 R (HD.3041) 3594 0 R (HD.3042) 3595 0 R (HD.3043) 3596 0 R (HD.3044) 3597 0 R (HD.3045) 3598 0 R (HD.3046) 3599 0 R (HD.3047) 3600 0 R (HD.3048) 3601 0 R (HD.3049) 3602 0 R (HD.305) 536 0 R (HD.3050) 3603 0 R (HD.3051) 3604 0 R (HD.3052) 3605 0 R (HD.3053) 3606 0 R (HD.3054) 3607 0 R (HD.3055) 3608 0 R ] /Limits [ (HD.3027) (HD.3055) ] >>
+endobj
+11820 0 obj
+<< /Names [ (HD.3056) 3609 0 R (HD.3057) 3610 0 R (HD.3058) 3611 0 R (HD.3059) 3612 0 R (HD.306) 537 0 R (HD.3060) 3613 0 R (HD.3061) 3614 0 R (HD.3062) 3615 0 R (HD.3063) 3616 0 R (HD.3064) 3617 0 R (HD.3065) 3618 0 R (HD.3066) 3619 0 R (HD.3067) 3620 0 R (HD.3068) 3621 0 R (HD.3069) 3622 0 R (HD.307) 538 0 R (HD.3070) 3623 0 R (HD.3071) 3624 0 R (HD.3072) 3625 0 R (HD.3073) 3626 0 R (HD.3074) 3627 0 R (HD.3075) 3628 0 R (HD.3076) 3629 0 R (HD.3077) 3630 0 R (HD.3078) 3631 0 R (HD.3079) 3632 0 R (HD.308) 539 0 R (HD.3080) 3633 0 R (HD.3081) 3634 0 R (HD.3082) 3635 0 R (HD.3083) 3636 0 R (HD.3084) 3641 0 R ] /Limits [ (HD.3056) (HD.3084) ] >>
+endobj
+11821 0 obj
+<< /Names [ (HD.3085) 3642 0 R (HD.3086) 3643 0 R (HD.3087) 3644 0 R (HD.3088) 3645 0 R (HD.3089) 3646 0 R (HD.309) 540 0 R (HD.3090) 3647 0 R (HD.3091) 3648 0 R (HD.3092) 3649 0 R (HD.3093) 3650 0 R (HD.3094) 3651 0 R (HD.3095) 3652 0 R (HD.3096) 3653 0 R (HD.3097) 3654 0 R (HD.3098) 3655 0 R (HD.3099) 3656 0 R (HD.31) 226 0 R (HD.310) 541 0 R (HD.3100) 3657 0 R (HD.3101) 3658 0 R (HD.3102) 3659 0 R (HD.3103) 3660 0 R (HD.3104) 3661 0 R (HD.3105) 3662 0 R (HD.3106) 3663 0 R (HD.3107) 3664 0 R (HD.3108) 3665 0 R (HD.3109) 3666 0 R (HD.311) 542 0 R (HD.3110) 3667 0 R (HD.3111) 3668 0 R (HD.3112) 3669 0 R ] /Limits [ (HD.3085) (HD.3112) ] >>
+endobj
+11822 0 obj
+<< /Names [ (HD.3113) 3670 0 R (HD.3114) 3671 0 R (HD.3115) 3672 0 R (HD.3116) 3673 0 R (HD.3117) 3674 0 R (HD.3118) 3675 0 R (HD.3119) 3676 0 R (HD.312) 543 0 R (HD.3120) 3677 0 R (HD.3121) 3678 0 R (HD.3122) 3679 0 R (HD.3123) 3680 0 R (HD.3124) 3681 0 R (HD.3125) 3686 0 R (HD.3126) 3687 0 R (HD.3127) 3688 0 R (HD.3128) 3689 0 R (HD.3129) 3690 0 R (HD.313) 544 0 R (HD.3130) 3691 0 R (HD.3131) 3692 0 R (HD.3132) 3693 0 R (HD.3133) 3694 0 R (HD.3134) 3695 0 R (HD.3135) 3696 0 R (HD.3136) 3697 0 R (HD.3137) 3698 0 R (HD.3138) 3699 0 R (HD.3139) 3700 0 R (HD.314) 545 0 R (HD.3140) 3701 0 R (HD.3141) 3702 0 R ] /Limits [ (HD.3113) (HD.3141) ] >>
+endobj
+11823 0 obj
+<< /Names [ (HD.3142) 3703 0 R (HD.3143) 3704 0 R (HD.3144) 3705 0 R (HD.3145) 3706 0 R (HD.3146) 3707 0 R (HD.3147) 3708 0 R (HD.3148) 3709 0 R (HD.3149) 3710 0 R (HD.315) 546 0 R (HD.3150) 3711 0 R (HD.3151) 3712 0 R (HD.3152) 3713 0 R (HD.3153) 3714 0 R (HD.3154) 3715 0 R (HD.3155) 3716 0 R (HD.3156) 3717 0 R (HD.3157) 3718 0 R (HD.3158) 3719 0 R (HD.3159) 3720 0 R (HD.316) 547 0 R (HD.3160) 3721 0 R (HD.3161) 3722 0 R (HD.3162) 3723 0 R (HD.3163) 3724 0 R (HD.3164) 3725 0 R (HD.3165) 3726 0 R (HD.3166) 3727 0 R (HD.3167) 3728 0 R (HD.3168) 3729 0 R (HD.3169) 3730 0 R (HD.317) 548 0 R (HD.3170) 3731 0 R ] /Limits [ (HD.3142) (HD.3170) ] >>
+endobj
+11824 0 obj
+<< /Names [ (HD.3171) 3736 0 R (HD.3172) 3737 0 R (HD.3173) 3738 0 R (HD.3174) 3739 0 R (HD.3175) 3740 0 R (HD.3176) 3741 0 R (HD.3177) 3742 0 R (HD.3178) 3743 0 R (HD.3179) 3744 0 R (HD.318) 549 0 R (HD.3180) 3745 0 R (HD.3181) 3746 0 R (HD.3182) 3747 0 R (HD.3183) 3748 0 R (HD.3184) 3749 0 R (HD.3185) 3750 0 R (HD.3186) 3751 0 R (HD.3187) 3752 0 R (HD.3188) 3753 0 R (HD.3189) 3754 0 R (HD.319) 550 0 R (HD.3190) 3755 0 R (HD.3191) 3756 0 R (HD.3192) 3757 0 R (HD.3193) 3758 0 R (HD.3194) 3759 0 R (HD.3195) 3760 0 R (HD.3196) 3761 0 R (HD.3197) 3762 0 R (HD.3198) 3763 0 R (HD.3199) 3764 0 R (HD.32) 227 0 R ] /Limits [ (HD.3171) (HD.32) ] >>
+endobj
+11825 0 obj
+<< /Names [ (HD.320) 551 0 R (HD.3200) 3765 0 R (HD.3201) 3766 0 R (HD.3202) 3767 0 R (HD.3203) 3768 0 R (HD.3204) 3769 0 R (HD.3205) 3770 0 R (HD.3206) 3771 0 R (HD.3207) 3772 0 R (HD.3208) 3773 0 R (HD.3209) 3774 0 R (HD.321) 552 0 R (HD.3210) 3775 0 R (HD.3211) 3776 0 R (HD.3212) 3777 0 R (HD.3213) 3778 0 R (HD.3214) 3779 0 R (HD.3215) 3780 0 R (HD.3216) 3781 0 R (HD.3217) 3782 0 R (HD.3218) 3783 0 R (HD.3219) 3789 0 R (HD.322) 553 0 R (HD.3220) 3790 0 R (HD.3221) 3791 0 R (HD.3222) 3792 0 R (HD.3223) 3793 0 R (HD.3224) 3794 0 R (HD.3225) 3795 0 R (HD.3226) 3796 0 R (HD.3227) 3797 0 R (HD.3228) 3798 0 R ] /Limits [ (HD.320) (HD.3228) ] >>
+endobj
+11826 0 obj
+<< /Names [ (HD.3229) 3799 0 R (HD.323) 554 0 R (HD.3230) 3800 0 R (HD.3231) 3801 0 R (HD.3232) 3802 0 R (HD.3233) 3803 0 R (HD.3234) 3804 0 R (HD.3235) 3805 0 R (HD.3236) 3806 0 R (HD.3237) 3807 0 R (HD.3238) 3808 0 R (HD.3239) 3809 0 R (HD.324) 555 0 R (HD.3240) 3810 0 R (HD.3241) 3811 0 R (HD.3242) 3812 0 R (HD.3243) 3813 0 R (HD.3244) 3814 0 R (HD.3245) 3815 0 R (HD.3246) 3816 0 R (HD.3247) 3817 0 R (HD.3248) 3818 0 R (HD.3249) 3819 0 R (HD.325) 557 0 R (HD.3250) 3820 0 R (HD.3251) 3821 0 R (HD.3252) 3822 0 R (HD.3253) 3823 0 R (HD.3254) 3824 0 R (HD.3255) 3825 0 R (HD.3256) 3826 0 R (HD.3257) 3827 0 R ] /Limits [ (HD.3229) (HD.3257) ] >>
+endobj
+11827 0 obj
+<< /Names [ (HD.3258) 3828 0 R (HD.3259) 3829 0 R (HD.326) 558 0 R (HD.3260) 3830 0 R (HD.3261) 3831 0 R (HD.3262) 3832 0 R (HD.3263) 3833 0 R (HD.3264) 3834 0 R (HD.3265) 3835 0 R (HD.3266) 3836 0 R (HD.3267) 3837 0 R (HD.3268) 3838 0 R (HD.3269) 3839 0 R (HD.327) 559 0 R (HD.3270) 3840 0 R (HD.3271) 3841 0 R (HD.3272) 3842 0 R (HD.3273) 3843 0 R (HD.3274) 3848 0 R (HD.3275) 3849 0 R (HD.3276) 3850 0 R (HD.3277) 3851 0 R (HD.3278) 3852 0 R (HD.3279) 3853 0 R (HD.328) 560 0 R (HD.3280) 3854 0 R (HD.3281) 3855 0 R (HD.3282) 3856 0 R (HD.3283) 3857 0 R (HD.3284) 3858 0 R (HD.3285) 3859 0 R (HD.3286) 3860 0 R ] /Limits [ (HD.3258) (HD.3286) ] >>
+endobj
+11828 0 obj
+<< /Names [ (HD.3287) 3861 0 R (HD.3288) 3862 0 R (HD.3289) 3863 0 R (HD.329) 561 0 R (HD.3290) 3864 0 R (HD.3291) 3865 0 R (HD.3292) 3866 0 R (HD.3293) 3867 0 R (HD.3294) 3868 0 R (HD.3295) 3869 0 R (HD.3296) 3870 0 R (HD.3297) 3871 0 R (HD.3298) 3872 0 R (HD.3299) 3873 0 R (HD.33) 228 0 R (HD.330) 562 0 R (HD.3300) 3874 0 R (HD.3301) 3875 0 R (HD.3302) 3876 0 R (HD.3303) 3877 0 R (HD.3304) 3878 0 R (HD.3305) 3879 0 R (HD.3306) 3880 0 R (HD.3307) 3881 0 R (HD.3308) 3882 0 R (HD.3309) 3883 0 R (HD.331) 567 0 R (HD.3310) 3884 0 R (HD.3311) 3885 0 R (HD.3312) 3886 0 R (HD.3313) 3887 0 R (HD.3314) 3892 0 R ] /Limits [ (HD.3287) (HD.3314) ] >>
+endobj
+11829 0 obj
+<< /Names [ (HD.3315) 3893 0 R (HD.3316) 3894 0 R (HD.3317) 3895 0 R (HD.3318) 3896 0 R (HD.3319) 3897 0 R (HD.332) 568 0 R (HD.3320) 3898 0 R (HD.3321) 3899 0 R (HD.3322) 3900 0 R (HD.3323) 3901 0 R (HD.3324) 3902 0 R (HD.3325) 3903 0 R (HD.3326) 3904 0 R (HD.3327) 3905 0 R (HD.3328) 3906 0 R (HD.3329) 3907 0 R (HD.333) 569 0 R (HD.3330) 3908 0 R (HD.3331) 3909 0 R (HD.3332) 3910 0 R (HD.3333) 3911 0 R (HD.3334) 3912 0 R (HD.3335) 3913 0 R (HD.3336) 3914 0 R (HD.3337) 3915 0 R (HD.3338) 3916 0 R (HD.3339) 3917 0 R (HD.334) 570 0 R (HD.3340) 3918 0 R (HD.3341) 3919 0 R (HD.3342) 3920 0 R (HD.3343) 3921 0 R ] /Limits [ (HD.3315) (HD.3343) ] >>
+endobj
+11830 0 obj
+<< /Names [ (HD.3344) 3922 0 R (HD.3345) 3923 0 R (HD.3346) 3924 0 R (HD.3347) 3929 0 R (HD.3348) 3930 0 R (HD.3349) 3931 0 R (HD.335) 571 0 R (HD.3350) 3932 0 R (HD.3351) 3933 0 R (HD.3352) 3934 0 R (HD.3353) 3935 0 R (HD.3354) 3936 0 R (HD.3355) 3937 0 R (HD.3356) 3938 0 R (HD.3357) 3939 0 R (HD.3358) 3940 0 R (HD.3359) 3941 0 R (HD.336) 572 0 R (HD.3360) 3942 0 R (HD.3361) 3943 0 R (HD.3362) 3944 0 R (HD.3363) 3945 0 R (HD.3364) 3946 0 R (HD.3365) 3947 0 R (HD.3366) 3948 0 R (HD.3367) 3949 0 R (HD.3368) 3950 0 R (HD.3369) 3951 0 R (HD.337) 573 0 R (HD.3370) 3952 0 R (HD.3371) 3953 0 R (HD.3372) 3954 0 R ] /Limits [ (HD.3344) (HD.3372) ] >>
+endobj
+11831 0 obj
+<< /Names [ (HD.3373) 3955 0 R (HD.3374) 3956 0 R (HD.3375) 3957 0 R (HD.3376) 3958 0 R (HD.3377) 3959 0 R (HD.3378) 3960 0 R (HD.3379) 3961 0 R (HD.338) 574 0 R (HD.3380) 3962 0 R (HD.3381) 3963 0 R (HD.3382) 3964 0 R (HD.3383) 3965 0 R (HD.3384) 3966 0 R (HD.3385) 3967 0 R (HD.3386) 3968 0 R (HD.3387) 3969 0 R (HD.3388) 3970 0 R (HD.3389) 3971 0 R (HD.339) 575 0 R (HD.3390) 3972 0 R (HD.3391) 3977 0 R (HD.3392) 3978 0 R (HD.3393) 3979 0 R (HD.3394) 3980 0 R (HD.3395) 3981 0 R (HD.3396) 3982 0 R (HD.3397) 3983 0 R (HD.3398) 3984 0 R (HD.3399) 3985 0 R (HD.34) 229 0 R (HD.340) 576 0 R (HD.3400) 3986 0 R ] /Limits [ (HD.3373) (HD.3400) ] >>
+endobj
+11832 0 obj
+<< /Names [ (HD.3401) 3987 0 R (HD.3402) 3988 0 R (HD.3403) 3989 0 R (HD.3404) 3990 0 R (HD.3405) 3991 0 R (HD.3406) 3992 0 R (HD.3407) 3993 0 R (HD.3408) 3994 0 R (HD.3409) 3995 0 R (HD.341) 577 0 R (HD.3410) 3996 0 R (HD.3411) 3997 0 R (HD.3412) 3998 0 R (HD.3413) 3999 0 R (HD.3414) 4000 0 R (HD.3415) 4001 0 R (HD.3416) 4002 0 R (HD.3417) 4003 0 R (HD.3418) 4004 0 R (HD.3419) 4005 0 R (HD.342) 578 0 R (HD.3420) 4006 0 R (HD.3421) 4007 0 R (HD.3422) 4008 0 R (HD.3423) 4009 0 R (HD.3424) 4010 0 R (HD.3425) 4011 0 R (HD.3426) 4012 0 R (HD.3427) 4013 0 R (HD.3428) 4014 0 R (HD.3429) 4015 0 R (HD.343) 579 0 R ] /Limits [ (HD.3401) (HD.343) ] >>
+endobj
+11833 0 obj
+<< /Names [ (HD.3430) 4016 0 R (HD.3431) 4017 0 R (HD.3432) 4018 0 R (HD.3433) 4019 0 R (HD.3434) 4020 0 R (HD.3435) 4021 0 R (HD.3436) 4022 0 R (HD.3437) 4023 0 R (HD.3438) 4024 0 R (HD.3439) 4025 0 R (HD.344) 580 0 R (HD.3440) 4026 0 R (HD.3441) 4027 0 R (HD.3442) 4028 0 R (HD.3443) 4033 0 R (HD.3444) 4034 0 R (HD.3445) 4035 0 R (HD.3446) 4036 0 R (HD.3447) 4037 0 R (HD.3448) 4038 0 R (HD.3449) 4039 0 R (HD.345) 581 0 R (HD.3450) 4040 0 R (HD.3451) 4041 0 R (HD.3452) 4042 0 R (HD.3453) 4043 0 R (HD.3454) 4044 0 R (HD.3455) 4045 0 R (HD.3456) 4046 0 R (HD.3457) 4047 0 R (HD.3458) 4048 0 R (HD.3459) 4049 0 R ] /Limits [ (HD.3430) (HD.3459) ] >>
+endobj
+11834 0 obj
+<< /Names [ (HD.346) 582 0 R (HD.3460) 4050 0 R (HD.3461) 4051 0 R (HD.3462) 4052 0 R (HD.3463) 4053 0 R (HD.3464) 4054 0 R (HD.3465) 4055 0 R (HD.3466) 4056 0 R (HD.3467) 4057 0 R (HD.3468) 4058 0 R (HD.3469) 4059 0 R (HD.347) 587 0 R (HD.3470) 4060 0 R (HD.3471) 4061 0 R (HD.3472) 4062 0 R (HD.3473) 4063 0 R (HD.3474) 4064 0 R (HD.3475) 4065 0 R (HD.3476) 4066 0 R (HD.3477) 4067 0 R (HD.3478) 4068 0 R (HD.3479) 4069 0 R (HD.348) 588 0 R (HD.3480) 4070 0 R (HD.3481) 4071 0 R (HD.3482) 4072 0 R (HD.3483) 4073 0 R (HD.3484) 4074 0 R (HD.3485) 4075 0 R (HD.3486) 4076 0 R (HD.3487) 4077 0 R (HD.3488) 4078 0 R ] /Limits [ (HD.346) (HD.3488) ] >>
+endobj
+11835 0 obj
+<< /Names [ (HD.3489) 4079 0 R (HD.349) 589 0 R (HD.3490) 4080 0 R (HD.3491) 4081 0 R (HD.3492) 4082 0 R (HD.3493) 4083 0 R (HD.3494) 4084 0 R (HD.3495) 4085 0 R (HD.3496) 4086 0 R (HD.3497) 4087 0 R (HD.3498) 4088 0 R (HD.3499) 4093 0 R (HD.35) 230 0 R (HD.350) 590 0 R (HD.3500) 4094 0 R (HD.3501) 4095 0 R (HD.3502) 4096 0 R (HD.3503) 4097 0 R (HD.3504) 4098 0 R (HD.3505) 4099 0 R (HD.3506) 4100 0 R (HD.3507) 4101 0 R (HD.3508) 4102 0 R (HD.3509) 4103 0 R (HD.351) 591 0 R (HD.3510) 4104 0 R (HD.3511) 4105 0 R (HD.3512) 4106 0 R (HD.3513) 4107 0 R (HD.3514) 4108 0 R (HD.3515) 4109 0 R (HD.3516) 4110 0 R ] /Limits [ (HD.3489) (HD.3516) ] >>
+endobj
+11836 0 obj
+<< /Names [ (HD.3517) 4111 0 R (HD.3518) 4112 0 R (HD.3519) 4113 0 R (HD.352) 592 0 R (HD.3520) 4114 0 R (HD.3521) 4115 0 R (HD.3522) 4116 0 R (HD.3523) 4117 0 R (HD.3524) 4118 0 R (HD.3525) 4119 0 R (HD.3526) 4120 0 R (HD.3527) 4121 0 R (HD.3528) 4122 0 R (HD.3529) 4123 0 R (HD.353) 593 0 R (HD.3530) 4124 0 R (HD.3531) 4125 0 R (HD.3532) 4126 0 R (HD.3533) 4127 0 R (HD.3534) 4128 0 R (HD.3535) 4129 0 R (HD.3536) 4130 0 R (HD.3537) 4131 0 R (HD.3538) 4132 0 R (HD.3539) 4133 0 R (HD.354) 594 0 R (HD.3540) 4134 0 R (HD.3541) 4135 0 R (HD.3542) 4136 0 R (HD.3543) 4137 0 R (HD.3544) 4138 0 R (HD.3545) 4139 0 R ] /Limits [ (HD.3517) (HD.3545) ] >>
+endobj
+11837 0 obj
+<< /Names [ (HD.3546) 4140 0 R (HD.3547) 4141 0 R (HD.3548) 4142 0 R (HD.3549) 4143 0 R (HD.355) 595 0 R (HD.3550) 4144 0 R (HD.3551) 4145 0 R (HD.3552) 4146 0 R (HD.3553) 4147 0 R (HD.3554) 4152 0 R (HD.3555) 4153 0 R (HD.3556) 4154 0 R (HD.3557) 4155 0 R (HD.3558) 4156 0 R (HD.3559) 4157 0 R (HD.356) 596 0 R (HD.3560) 4158 0 R (HD.3561) 4159 0 R (HD.3562) 4160 0 R (HD.3563) 4161 0 R (HD.3564) 4162 0 R (HD.3565) 4163 0 R (HD.3566) 4164 0 R (HD.3567) 4165 0 R (HD.3568) 4166 0 R (HD.3569) 4167 0 R (HD.357) 597 0 R (HD.3570) 4168 0 R (HD.3571) 4169 0 R (HD.3572) 4170 0 R (HD.3573) 4171 0 R (HD.3574) 4172 0 R ] /Limits [ (HD.3546) (HD.3574) ] >>
+endobj
+11838 0 obj
+<< /Names [ (HD.3575) 4173 0 R (HD.3576) 4174 0 R (HD.3577) 4175 0 R (HD.3578) 4176 0 R (HD.3579) 4177 0 R (HD.358) 598 0 R (HD.3580) 4178 0 R (HD.3581) 4179 0 R (HD.3582) 4180 0 R (HD.3583) 4181 0 R (HD.3584) 4182 0 R (HD.3585) 4183 0 R (HD.3586) 4184 0 R (HD.3587) 4185 0 R (HD.3588) 4186 0 R (HD.3589) 4187 0 R (HD.359) 599 0 R (HD.3590) 4188 0 R (HD.3591) 4189 0 R (HD.3592) 4190 0 R (HD.3593) 4191 0 R (HD.3594) 4192 0 R (HD.3595) 4193 0 R (HD.3596) 4194 0 R (HD.3597) 4195 0 R (HD.3598) 4196 0 R (HD.3599) 4197 0 R (HD.36) 231 0 R (HD.360) 600 0 R (HD.3600) 4198 0 R (HD.3601) 4199 0 R (HD.3602) 4200 0 R ] /Limits [ (HD.3575) (HD.3602) ] >>
+endobj
+11839 0 obj
+<< /Names [ (HD.3603) 4205 0 R (HD.3604) 4206 0 R (HD.3605) 4207 0 R (HD.3606) 4208 0 R (HD.3607) 4209 0 R (HD.3608) 4210 0 R (HD.3609) 4211 0 R (HD.361) 601 0 R (HD.3610) 4212 0 R (HD.3611) 4213 0 R (HD.3612) 4214 0 R (HD.3613) 4215 0 R (HD.3614) 4216 0 R (HD.3615) 4217 0 R (HD.3616) 4218 0 R (HD.3617) 4219 0 R (HD.3618) 4220 0 R (HD.3619) 4221 0 R (HD.362) 602 0 R (HD.3620) 4222 0 R (HD.3621) 4223 0 R (HD.3622) 4224 0 R (HD.3623) 4225 0 R (HD.3624) 4226 0 R (HD.3625) 4227 0 R (HD.3626) 4228 0 R (HD.3627) 4229 0 R (HD.3628) 4230 0 R (HD.3629) 4231 0 R (HD.363) 608 0 R (HD.3630) 4232 0 R (HD.3631) 4233 0 R ] /Limits [ (HD.3603) (HD.3631) ] >>
+endobj
+11840 0 obj
+<< /Names [ (HD.3632) 4234 0 R (HD.3633) 4235 0 R (HD.3634) 4236 0 R (HD.3635) 4237 0 R (HD.3636) 4238 0 R (HD.3637) 4239 0 R (HD.3638) 4240 0 R (HD.3639) 4241 0 R (HD.364) 609 0 R (HD.3640) 4242 0 R (HD.3641) 4243 0 R (HD.3642) 4244 0 R (HD.3643) 4245 0 R (HD.3644) 4246 0 R (HD.3645) 4247 0 R (HD.3646) 4248 0 R (HD.3647) 4249 0 R (HD.3648) 4250 0 R (HD.3649) 4251 0 R (HD.365) 610 0 R (HD.3650) 4252 0 R (HD.3651) 4253 0 R (HD.3652) 4258 0 R (HD.3653) 4259 0 R (HD.3654) 4260 0 R (HD.3655) 4261 0 R (HD.3656) 4262 0 R (HD.3657) 4263 0 R (HD.3658) 4264 0 R (HD.3659) 4265 0 R (HD.366) 611 0 R (HD.3660) 4266 0 R ] /Limits [ (HD.3632) (HD.3660) ] >>
+endobj
+11841 0 obj
+<< /Names [ (HD.3661) 4267 0 R (HD.3662) 4268 0 R (HD.3663) 4269 0 R (HD.3664) 4270 0 R (HD.3665) 4271 0 R (HD.3666) 4272 0 R (HD.3667) 4273 0 R (HD.3668) 4274 0 R (HD.3669) 4275 0 R (HD.367) 612 0 R (HD.3670) 4276 0 R (HD.3671) 4277 0 R (HD.3672) 4278 0 R (HD.3673) 4279 0 R (HD.3674) 4280 0 R (HD.3675) 4281 0 R (HD.3676) 4282 0 R (HD.3677) 4283 0 R (HD.3678) 4284 0 R (HD.3679) 4285 0 R (HD.368) 613 0 R (HD.3680) 4286 0 R (HD.3681) 4287 0 R (HD.3682) 4288 0 R (HD.3683) 4289 0 R (HD.3684) 4290 0 R (HD.3685) 4291 0 R (HD.3686) 4292 0 R (HD.3687) 4293 0 R (HD.3688) 4294 0 R (HD.3689) 4295 0 R (HD.369) 614 0 R ] /Limits [ (HD.3661) (HD.369) ] >>
+endobj
+11842 0 obj
+<< /Names [ (HD.3690) 4296 0 R (HD.3691) 4297 0 R (HD.3692) 4298 0 R (HD.3693) 4304 0 R (HD.3694) 4305 0 R (HD.3695) 4306 0 R (HD.3696) 4307 0 R (HD.3697) 4308 0 R (HD.3698) 4309 0 R (HD.3699) 4310 0 R (HD.37) 232 0 R (HD.370) 615 0 R (HD.3700) 4311 0 R (HD.3701) 4312 0 R (HD.3702) 4313 0 R (HD.3703) 4314 0 R (HD.3704) 4315 0 R (HD.3705) 4316 0 R (HD.3706) 4317 0 R (HD.3707) 4318 0 R (HD.3708) 4319 0 R (HD.3709) 4320 0 R (HD.371) 616 0 R (HD.3710) 4321 0 R (HD.3711) 4322 0 R (HD.3712) 4323 0 R (HD.3713) 4324 0 R (HD.3714) 4325 0 R (HD.3715) 4326 0 R (HD.3716) 4327 0 R (HD.3717) 4328 0 R (HD.3718) 4329 0 R ] /Limits [ (HD.3690) (HD.3718) ] >>
+endobj
+11843 0 obj
+<< /Names [ (HD.3719) 4330 0 R (HD.372) 617 0 R (HD.3720) 4331 0 R (HD.3721) 4332 0 R (HD.3722) 4333 0 R (HD.3723) 4334 0 R (HD.3724) 4335 0 R (HD.3725) 4336 0 R (HD.3726) 4337 0 R (HD.3727) 4338 0 R (HD.3728) 4339 0 R (HD.3729) 4340 0 R (HD.373) 618 0 R (HD.3730) 4341 0 R (HD.3731) 4342 0 R (HD.3732) 4343 0 R (HD.3733) 4344 0 R (HD.3734) 4345 0 R (HD.3735) 4346 0 R (HD.3736) 4347 0 R (HD.3737) 4348 0 R (HD.3738) 4349 0 R (HD.3739) 4350 0 R (HD.374) 619 0 R (HD.3740) 4351 0 R (HD.3741) 4352 0 R (HD.3742) 4353 0 R (HD.3743) 4354 0 R (HD.3744) 4355 0 R (HD.3745) 4356 0 R (HD.3746) 4357 0 R (HD.3747) 4358 0 R ] /Limits [ (HD.3719) (HD.3747) ] >>
+endobj
+11844 0 obj
+<< /Names [ (HD.3748) 4363 0 R (HD.3749) 4364 0 R (HD.375) 620 0 R (HD.3750) 4365 0 R (HD.3751) 4366 0 R (HD.3752) 4367 0 R (HD.3753) 4368 0 R (HD.3754) 4369 0 R (HD.3755) 4370 0 R (HD.3756) 4371 0 R (HD.3757) 4372 0 R (HD.3758) 4373 0 R (HD.3759) 4374 0 R (HD.376) 621 0 R (HD.3760) 4375 0 R (HD.3761) 4376 0 R (HD.3762) 4377 0 R (HD.3763) 4378 0 R (HD.3764) 4379 0 R (HD.3765) 4380 0 R (HD.3766) 4381 0 R (HD.3767) 4382 0 R (HD.3768) 4383 0 R (HD.3769) 4384 0 R (HD.377) 622 0 R (HD.3770) 4385 0 R (HD.3771) 4386 0 R (HD.3772) 4387 0 R (HD.3773) 4388 0 R (HD.3774) 4389 0 R (HD.3775) 4390 0 R (HD.3776) 4391 0 R ] /Limits [ (HD.3748) (HD.3776) ] >>
+endobj
+11845 0 obj
+<< /Names [ (HD.3777) 4392 0 R (HD.3778) 4393 0 R (HD.3779) 4394 0 R (HD.378) 623 0 R (HD.3780) 4395 0 R (HD.3781) 4396 0 R (HD.3782) 4397 0 R (HD.3783) 4398 0 R (HD.3784) 4399 0 R (HD.3785) 4400 0 R (HD.3786) 4401 0 R (HD.3787) 4402 0 R (HD.3788) 4403 0 R (HD.3789) 4404 0 R (HD.379) 624 0 R (HD.3790) 4405 0 R (HD.3791) 4406 0 R (HD.3792) 4407 0 R (HD.3793) 4408 0 R (HD.3794) 4409 0 R (HD.3795) 4410 0 R (HD.3796) 4411 0 R (HD.3797) 4412 0 R (HD.3798) 4413 0 R (HD.3799) 4414 0 R (HD.38) 233 0 R (HD.380) 625 0 R (HD.3800) 4415 0 R (HD.3801) 4416 0 R (HD.3802) 4421 0 R (HD.3803) 4422 0 R (HD.3804) 4423 0 R ] /Limits [ (HD.3777) (HD.3804) ] >>
+endobj
+11846 0 obj
+<< /Names [ (HD.3805) 4424 0 R (HD.3806) 4425 0 R (HD.3807) 4426 0 R (HD.3808) 4427 0 R (HD.3809) 4428 0 R (HD.381) 626 0 R (HD.3810) 4429 0 R (HD.3811) 4430 0 R (HD.3812) 4431 0 R (HD.3813) 4432 0 R (HD.3814) 4433 0 R (HD.3815) 4434 0 R (HD.3816) 4435 0 R (HD.3817) 4436 0 R (HD.3818) 4437 0 R (HD.3819) 4438 0 R (HD.382) 627 0 R (HD.3820) 4439 0 R (HD.3821) 4440 0 R (HD.3822) 4441 0 R (HD.3823) 4442 0 R (HD.3824) 4443 0 R (HD.3825) 4444 0 R (HD.3826) 4445 0 R (HD.3827) 4446 0 R (HD.3828) 4447 0 R (HD.3829) 4448 0 R (HD.383) 628 0 R (HD.3830) 4449 0 R (HD.3831) 4450 0 R (HD.3832) 4451 0 R (HD.3833) 4452 0 R ] /Limits [ (HD.3805) (HD.3833) ] >>
+endobj
+11847 0 obj
+<< /Names [ (HD.3834) 4453 0 R (HD.3835) 4454 0 R (HD.3836) 4455 0 R (HD.3837) 4456 0 R (HD.3838) 4457 0 R (HD.3839) 4458 0 R (HD.384) 629 0 R (HD.3840) 4459 0 R (HD.3841) 4460 0 R (HD.3842) 4461 0 R (HD.3843) 4462 0 R (HD.3844) 4463 0 R (HD.3845) 4464 0 R (HD.3846) 4465 0 R (HD.3847) 4470 0 R (HD.3848) 4471 0 R (HD.3849) 4472 0 R (HD.385) 630 0 R (HD.3850) 4473 0 R (HD.3851) 4474 0 R (HD.3852) 4475 0 R (HD.3853) 4476 0 R (HD.3854) 4477 0 R (HD.3855) 4478 0 R (HD.3856) 4479 0 R (HD.3857) 4480 0 R (HD.3858) 4481 0 R (HD.3859) 4482 0 R (HD.386) 635 0 R (HD.3860) 4483 0 R (HD.3861) 4484 0 R (HD.3862) 4485 0 R ] /Limits [ (HD.3834) (HD.3862) ] >>
+endobj
+11848 0 obj
+<< /Names [ (HD.3863) 4486 0 R (HD.3864) 4487 0 R (HD.3865) 4488 0 R (HD.3866) 4489 0 R (HD.3867) 4490 0 R (HD.3868) 4491 0 R (HD.3869) 4492 0 R (HD.387) 636 0 R (HD.3870) 4493 0 R (HD.3871) 4494 0 R (HD.3872) 4495 0 R (HD.3873) 4496 0 R (HD.3874) 4497 0 R (HD.3875) 4498 0 R (HD.3876) 4499 0 R (HD.3877) 4500 0 R (HD.3878) 4501 0 R (HD.3879) 4502 0 R (HD.388) 637 0 R (HD.3880) 4503 0 R (HD.3881) 4504 0 R (HD.3882) 4505 0 R (HD.3883) 4506 0 R (HD.3884) 4507 0 R (HD.3885) 4508 0 R (HD.3886) 4509 0 R (HD.3887) 4510 0 R (HD.3888) 4511 0 R (HD.3889) 4512 0 R (HD.389) 638 0 R (HD.3890) 4518 0 R (HD.3891) 4519 0 R ] /Limits [ (HD.3863) (HD.3891) ] >>
+endobj
+11849 0 obj
+<< /Names [ (HD.3892) 4520 0 R (HD.3893) 4521 0 R (HD.3894) 4522 0 R (HD.3895) 4523 0 R (HD.3896) 4524 0 R (HD.3897) 4525 0 R (HD.3898) 4526 0 R (HD.3899) 4527 0 R (HD.39) 234 0 R (HD.390) 639 0 R (HD.3900) 4528 0 R (HD.3901) 4529 0 R (HD.3902) 4530 0 R (HD.3903) 4531 0 R (HD.3904) 4532 0 R (HD.3905) 4533 0 R (HD.3906) 4534 0 R (HD.3907) 4535 0 R (HD.3908) 4536 0 R (HD.3909) 4537 0 R (HD.391) 640 0 R (HD.3910) 4538 0 R (HD.3911) 4539 0 R (HD.3912) 4540 0 R (HD.3913) 4541 0 R (HD.3914) 4542 0 R (HD.3915) 4543 0 R (HD.3916) 4544 0 R (HD.3917) 4546 0 R (HD.3918) 4547 0 R (HD.3919) 4548 0 R (HD.392) 641 0 R ] /Limits [ (HD.3892) (HD.392) ] >>
+endobj
+11850 0 obj
+<< /Names [ (HD.3920) 4549 0 R (HD.3921) 4550 0 R (HD.3922) 4551 0 R (HD.3923) 4552 0 R (HD.3924) 4553 0 R (HD.3925) 4554 0 R (HD.3926) 4555 0 R (HD.3927) 4556 0 R (HD.3928) 4557 0 R (HD.3929) 4558 0 R (HD.393) 642 0 R (HD.3930) 4559 0 R (HD.3931) 4560 0 R (HD.3932) 4561 0 R (HD.3933) 4562 0 R (HD.3934) 4563 0 R (HD.3935) 4570 0 R (HD.3936) 4571 0 R (HD.3937) 4572 0 R (HD.3938) 4573 0 R (HD.3939) 4574 0 R (HD.394) 643 0 R (HD.3940) 4575 0 R (HD.3941) 4576 0 R (HD.3942) 4577 0 R (HD.3943) 4578 0 R (HD.3944) 4579 0 R (HD.3945) 4580 0 R (HD.3946) 4581 0 R (HD.3947) 4582 0 R (HD.3948) 4583 0 R (HD.3949) 4584 0 R ] /Limits [ (HD.3920) (HD.3949) ] >>
+endobj
+11851 0 obj
+<< /Names [ (HD.395) 644 0 R (HD.3950) 4585 0 R (HD.3951) 4586 0 R (HD.3952) 4587 0 R (HD.3953) 4588 0 R (HD.3954) 4589 0 R (HD.3955) 4590 0 R (HD.3956) 4591 0 R (HD.3957) 4592 0 R (HD.3958) 4593 0 R (HD.3959) 4594 0 R (HD.396) 645 0 R (HD.3960) 4595 0 R (HD.3961) 4596 0 R (HD.3962) 4597 0 R (HD.3963) 4598 0 R (HD.3964) 4599 0 R (HD.3965) 4600 0 R (HD.3966) 4601 0 R (HD.3967) 4602 0 R (HD.3968) 4603 0 R (HD.3969) 4604 0 R (HD.397) 646 0 R (HD.3970) 4610 0 R (HD.3971) 4611 0 R (HD.3972) 4612 0 R (HD.3973) 4613 0 R (HD.3974) 4614 0 R (HD.3975) 4615 0 R (HD.3976) 4616 0 R (HD.3977) 4617 0 R (HD.3978) 4618 0 R ] /Limits [ (HD.395) (HD.3978) ] >>
+endobj
+11852 0 obj
+<< /Names [ (HD.3979) 4619 0 R (HD.398) 647 0 R (HD.3980) 4620 0 R (HD.3981) 4621 0 R (HD.3982) 4622 0 R (HD.3983) 4623 0 R (HD.3984) 4624 0 R (HD.3985) 4625 0 R (HD.3986) 4626 0 R (HD.3987) 4627 0 R (HD.3988) 4628 0 R (HD.3989) 4629 0 R (HD.399) 648 0 R (HD.3990) 4630 0 R (HD.3991) 4631 0 R (HD.3992) 4632 0 R (HD.3993) 4633 0 R (HD.3994) 4634 0 R (HD.3995) 4635 0 R (HD.3996) 4636 0 R (HD.3997) 4637 0 R (HD.3998) 4638 0 R (HD.3999) 4639 0 R (HD.4) 192 0 R (HD.40) 235 0 R (HD.400) 649 0 R (HD.4000) 4640 0 R (HD.4001) 4641 0 R (HD.4002) 4648 0 R (HD.4003) 4649 0 R (HD.4004) 4650 0 R (HD.4005) 4651 0 R ] /Limits [ (HD.3979) (HD.4005) ] >>
+endobj
+11853 0 obj
+<< /Names [ (HD.4006) 4652 0 R (HD.4007) 4653 0 R (HD.4008) 4654 0 R (HD.4009) 4655 0 R (HD.401) 650 0 R (HD.4010) 4656 0 R (HD.4011) 4657 0 R (HD.4012) 4658 0 R (HD.4013) 4659 0 R (HD.4014) 4660 0 R (HD.4015) 4661 0 R (HD.4016) 4662 0 R (HD.4017) 4663 0 R (HD.4018) 4664 0 R (HD.4019) 4665 0 R (HD.402) 651 0 R (HD.4020) 4666 0 R (HD.4021) 4667 0 R (HD.4022) 4668 0 R (HD.4023) 4669 0 R (HD.4024) 4670 0 R (HD.4025) 4671 0 R (HD.4026) 4672 0 R (HD.4027) 4673 0 R (HD.4028) 4674 0 R (HD.4029) 4675 0 R (HD.403) 652 0 R (HD.4030) 4676 0 R (HD.4031) 4677 0 R (HD.4032) 4678 0 R (HD.4033) 4679 0 R (HD.4034) 4680 0 R ] /Limits [ (HD.4006) (HD.4034) ] >>
+endobj
+11854 0 obj
+<< /Names [ (HD.4035) 4681 0 R (HD.4036) 4682 0 R (HD.4037) 4683 0 R (HD.4038) 4684 0 R (HD.4039) 4685 0 R (HD.404) 653 0 R (HD.4040) 4686 0 R (HD.4041) 4687 0 R (HD.4042) 4688 0 R (HD.4043) 4689 0 R (HD.4044) 4690 0 R (HD.4045) 4691 0 R (HD.4046) 4692 0 R (HD.4047) 4693 0 R (HD.4048) 4694 0 R (HD.4049) 4695 0 R (HD.405) 654 0 R (HD.4050) 4696 0 R (HD.4051) 4701 0 R (HD.4052) 4702 0 R (HD.4053) 4703 0 R (HD.4054) 4704 0 R (HD.4055) 4705 0 R (HD.4056) 4706 0 R (HD.4057) 4707 0 R (HD.4058) 4708 0 R (HD.4059) 4709 0 R (HD.406) 659 0 R (HD.4060) 4710 0 R (HD.4061) 4711 0 R (HD.4062) 4712 0 R (HD.4063) 4713 0 R ] /Limits [ (HD.4035) (HD.4063) ] >>
+endobj
+11855 0 obj
+<< /Names [ (HD.4064) 4714 0 R (HD.4065) 4715 0 R (HD.4066) 4716 0 R (HD.4067) 4717 0 R (HD.4068) 4718 0 R (HD.4069) 4719 0 R (HD.407) 661 0 R (HD.4070) 4720 0 R (HD.4071) 4721 0 R (HD.4072) 4722 0 R (HD.4073) 4723 0 R (HD.4074) 4724 0 R (HD.4075) 4725 0 R (HD.4076) 4726 0 R (HD.4077) 4727 0 R (HD.4078) 4728 0 R (HD.4079) 4729 0 R (HD.408) 663 0 R (HD.4080) 4730 0 R (HD.4081) 4731 0 R (HD.4082) 4732 0 R (HD.4083) 4733 0 R (HD.4084) 4734 0 R (HD.4085) 4735 0 R (HD.4086) 4736 0 R (HD.4087) 4737 0 R (HD.4088) 4738 0 R (HD.4089) 4739 0 R (HD.409) 664 0 R (HD.4090) 4740 0 R (HD.4091) 4741 0 R (HD.4092) 4742 0 R ] /Limits [ (HD.4064) (HD.4092) ] >>
+endobj
+11856 0 obj
+<< /Names [ (HD.4093) 4743 0 R (HD.4094) 4744 0 R (HD.4095) 4745 0 R (HD.4096) 4746 0 R (HD.4097) 4747 0 R (HD.4098) 4748 0 R (HD.4099) 4749 0 R (HD.41) 236 0 R (HD.410) 665 0 R (HD.4100) 4750 0 R (HD.4101) 4751 0 R (HD.4102) 4752 0 R (HD.4103) 4753 0 R (HD.4104) 4754 0 R (HD.4105) 4759 0 R (HD.4106) 4760 0 R (HD.4107) 4761 0 R (HD.4108) 4762 0 R (HD.4109) 4763 0 R (HD.411) 666 0 R (HD.4110) 4764 0 R (HD.4111) 4765 0 R (HD.4112) 4766 0 R (HD.4113) 4767 0 R (HD.4114) 4768 0 R (HD.4115) 4769 0 R (HD.4116) 4770 0 R (HD.4117) 4771 0 R (HD.4118) 4772 0 R (HD.4119) 4773 0 R (HD.412) 667 0 R (HD.4120) 4774 0 R ] /Limits [ (HD.4093) (HD.4120) ] >>
+endobj
+11857 0 obj
+<< /Names [ (HD.4121) 4775 0 R (HD.4122) 4776 0 R (HD.4123) 4777 0 R (HD.4124) 4778 0 R (HD.4125) 4779 0 R (HD.4126) 4780 0 R (HD.4127) 4781 0 R (HD.4128) 4782 0 R (HD.4129) 4788 0 R (HD.413) 669 0 R (HD.4130) 4789 0 R (HD.4131) 4790 0 R (HD.4132) 4791 0 R (HD.4133) 4792 0 R (HD.4134) 4793 0 R (HD.4135) 4794 0 R (HD.4136) 4795 0 R (HD.4137) 4796 0 R (HD.4138) 4797 0 R (HD.4139) 4798 0 R (HD.414) 670 0 R (HD.4140) 4799 0 R (HD.4141) 4800 0 R (HD.4142) 4801 0 R (HD.4143) 4802 0 R (HD.4144) 4803 0 R (HD.4145) 4804 0 R (HD.4146) 4805 0 R (HD.4147) 4806 0 R (HD.4148) 4807 0 R (HD.4149) 4808 0 R (HD.415) 671 0 R ] /Limits [ (HD.4121) (HD.415) ] >>
+endobj
+11858 0 obj
+<< /Names [ (HD.4150) 4809 0 R (HD.4151) 4810 0 R (HD.4152) 4811 0 R (HD.4153) 4812 0 R (HD.4154) 4813 0 R (HD.4155) 4814 0 R (HD.4156) 4815 0 R (HD.4157) 4816 0 R (HD.4158) 4817 0 R (HD.4159) 4818 0 R (HD.416) 672 0 R (HD.4160) 4819 0 R (HD.4161) 4820 0 R (HD.4162) 4821 0 R (HD.4163) 4822 0 R (HD.4164) 4823 0 R (HD.4165) 4824 0 R (HD.4166) 4825 0 R (HD.4167) 4826 0 R (HD.4168) 4827 0 R (HD.4169) 4828 0 R (HD.417) 673 0 R (HD.4170) 4829 0 R (HD.4171) 4830 0 R (HD.4172) 4831 0 R (HD.4173) 4832 0 R (HD.4174) 4833 0 R (HD.4175) 4834 0 R (HD.4176) 4835 0 R (HD.4177) 4836 0 R (HD.4178) 4837 0 R (HD.4179) 4838 0 R ] /Limits [ (HD.4150) (HD.4179) ] >>
+endobj
+11859 0 obj
+<< /Names [ (HD.418) 674 0 R (HD.4180) 4843 0 R (HD.4181) 4844 0 R (HD.4182) 4845 0 R (HD.4183) 4846 0 R (HD.4184) 4847 0 R (HD.4185) 4848 0 R (HD.4186) 4849 0 R (HD.4187) 4850 0 R (HD.4188) 4851 0 R (HD.4189) 4852 0 R (HD.419) 675 0 R (HD.4190) 4853 0 R (HD.4191) 4854 0 R (HD.4192) 4855 0 R (HD.4193) 4856 0 R (HD.4194) 4857 0 R (HD.4195) 4858 0 R (HD.4196) 4859 0 R (HD.4197) 4860 0 R (HD.4198) 4861 0 R (HD.4199) 4862 0 R (HD.42) 237 0 R (HD.420) 676 0 R (HD.4200) 4863 0 R (HD.4201) 4864 0 R (HD.4202) 4865 0 R (HD.4203) 4866 0 R (HD.4204) 4867 0 R (HD.4205) 4868 0 R (HD.4206) 4869 0 R (HD.4207) 4870 0 R ] /Limits [ (HD.418) (HD.4207) ] >>
+endobj
+11860 0 obj
+<< /Names [ (HD.4208) 4871 0 R (HD.4209) 4872 0 R (HD.421) 677 0 R (HD.4210) 4873 0 R (HD.4211) 4874 0 R (HD.4212) 4875 0 R (HD.4213) 4876 0 R (HD.4214) 4877 0 R (HD.4215) 4878 0 R (HD.4216) 4879 0 R (HD.4217) 4880 0 R (HD.4218) 4881 0 R (HD.4219) 4882 0 R (HD.422) 682 0 R (HD.4220) 4883 0 R (HD.4221) 4884 0 R (HD.4222) 4885 0 R (HD.4223) 4886 0 R (HD.4224) 4887 0 R (HD.4225) 4888 0 R (HD.4226) 4889 0 R (HD.4227) 4890 0 R (HD.4228) 4891 0 R (HD.4229) 4892 0 R (HD.423) 683 0 R (HD.4230) 4893 0 R (HD.4231) 4894 0 R (HD.4232) 4895 0 R (HD.4233) 4896 0 R (HD.4234) 4897 0 R (HD.4235) 4898 0 R (HD.4236) 4899 0 R ] /Limits [ (HD.4208) (HD.4236) ] >>
+endobj
+11861 0 obj
+<< /Names [ (HD.4237) 4900 0 R (HD.4238) 4901 0 R (HD.4239) 4902 0 R (HD.424) 684 0 R (HD.4240) 4903 0 R (HD.4241) 4908 0 R (HD.4242) 4909 0 R (HD.4243) 4910 0 R (HD.4244) 4911 0 R (HD.4245) 4912 0 R (HD.4246) 4913 0 R (HD.4247) 4914 0 R (HD.4248) 4915 0 R (HD.4249) 4916 0 R (HD.425) 685 0 R (HD.4250) 4917 0 R (HD.4251) 4918 0 R (HD.4252) 4919 0 R (HD.4253) 4920 0 R (HD.4254) 4921 0 R (HD.4255) 4922 0 R (HD.4256) 4923 0 R (HD.4257) 4924 0 R (HD.4258) 4925 0 R (HD.4259) 4926 0 R (HD.426) 686 0 R (HD.4260) 4927 0 R (HD.4261) 4928 0 R (HD.4262) 4929 0 R (HD.4263) 4930 0 R (HD.4264) 4931 0 R (HD.4265) 4932 0 R ] /Limits [ (HD.4237) (HD.4265) ] >>
+endobj
+11862 0 obj
+<< /Names [ (HD.4266) 4933 0 R (HD.4267) 4934 0 R (HD.4268) 4935 0 R (HD.4269) 4936 0 R (HD.427) 687 0 R (HD.4270) 4937 0 R (HD.4271) 4938 0 R (HD.4272) 4939 0 R (HD.4273) 4940 0 R (HD.4274) 4941 0 R (HD.4275) 4942 0 R (HD.4276) 4943 0 R (HD.4277) 4944 0 R (HD.4278) 4945 0 R (HD.4279) 4950 0 R (HD.428) 688 0 R (HD.4280) 4951 0 R (HD.4281) 4952 0 R (HD.4282) 4953 0 R (HD.4283) 4954 0 R (HD.4284) 4955 0 R (HD.4285) 4956 0 R (HD.4286) 4957 0 R (HD.4287) 4958 0 R (HD.4288) 4959 0 R (HD.4289) 4960 0 R (HD.429) 689 0 R (HD.4290) 4961 0 R (HD.4291) 4962 0 R (HD.4292) 4963 0 R (HD.4293) 4964 0 R (HD.4294) 4965 0 R ] /Limits [ (HD.4266) (HD.4294) ] >>
+endobj
+11863 0 obj
+<< /Names [ (HD.4295) 4966 0 R (HD.4296) 4967 0 R (HD.4297) 4968 0 R (HD.4298) 4969 0 R (HD.4299) 4970 0 R (HD.43) 238 0 R (HD.430) 690 0 R (HD.4300) 4971 0 R (HD.4301) 4972 0 R (HD.4302) 4973 0 R (HD.4303) 4974 0 R (HD.4304) 4975 0 R (HD.4305) 4976 0 R (HD.4306) 4977 0 R (HD.4307) 4978 0 R (HD.4308) 4979 0 R (HD.4309) 4980 0 R (HD.431) 691 0 R (HD.4310) 4981 0 R (HD.4311) 4982 0 R (HD.4312) 4983 0 R (HD.4313) 4984 0 R (HD.4314) 4985 0 R (HD.4315) 4986 0 R (HD.4316) 4987 0 R (HD.4317) 4988 0 R (HD.4318) 4989 0 R (HD.4319) 4990 0 R (HD.432) 692 0 R (HD.4320) 4991 0 R (HD.4321) 4992 0 R (HD.4322) 4993 0 R ] /Limits [ (HD.4295) (HD.4322) ] >>
+endobj
+11864 0 obj
+<< /Names [ (HD.4323) 4994 0 R (HD.4324) 4995 0 R (HD.4325) 4996 0 R (HD.4326) 4997 0 R (HD.4327) 4998 0 R (HD.4328) 4999 0 R (HD.4329) 5000 0 R (HD.433) 693 0 R (HD.4330) 5001 0 R (HD.4331) 5002 0 R (HD.4332) 5003 0 R (HD.4333) 5004 0 R (HD.4334) 5005 0 R (HD.4335) 5006 0 R (HD.4336) 5007 0 R (HD.4337) 5008 0 R (HD.4338) 5009 0 R (HD.4339) 5010 0 R (HD.434) 694 0 R (HD.4340) 5011 0 R (HD.4341) 5016 0 R (HD.4342) 5017 0 R (HD.4343) 5018 0 R (HD.4344) 5019 0 R (HD.4345) 5020 0 R (HD.4346) 5021 0 R (HD.4347) 5022 0 R (HD.4348) 5023 0 R (HD.4349) 5024 0 R (HD.435) 695 0 R (HD.4350) 5025 0 R (HD.4351) 5026 0 R ] /Limits [ (HD.4323) (HD.4351) ] >>
+endobj
+11865 0 obj
+<< /Names [ (HD.4352) 5027 0 R (HD.4353) 5028 0 R (HD.4354) 5029 0 R (HD.4355) 5030 0 R (HD.4356) 5031 0 R (HD.4357) 5032 0 R (HD.4358) 5033 0 R (HD.4359) 5034 0 R (HD.436) 696 0 R (HD.4360) 5035 0 R (HD.4361) 5036 0 R (HD.4362) 5037 0 R (HD.4363) 5038 0 R (HD.4364) 5039 0 R (HD.4365) 5040 0 R (HD.4366) 5041 0 R (HD.4367) 5042 0 R (HD.4368) 5043 0 R (HD.4369) 5044 0 R (HD.437) 697 0 R (HD.4370) 5045 0 R (HD.4371) 5046 0 R (HD.4372) 5047 0 R (HD.4373) 5048 0 R (HD.4374) 5049 0 R (HD.4375) 5050 0 R (HD.4376) 5051 0 R (HD.4377) 5052 0 R (HD.4378) 5053 0 R (HD.4379) 5054 0 R (HD.438) 702 0 R (HD.4380) 5055 0 R ] /Limits [ (HD.4352) (HD.4380) ] >>
+endobj
+11866 0 obj
+<< /Names [ (HD.4381) 5056 0 R (HD.4382) 5057 0 R (HD.4383) 5058 0 R (HD.4384) 5059 0 R (HD.4385) 5060 0 R (HD.4386) 5061 0 R (HD.4387) 5062 0 R (HD.4388) 5063 0 R (HD.4389) 5064 0 R (HD.439) 703 0 R (HD.4390) 5065 0 R (HD.4391) 5066 0 R (HD.4392) 5071 0 R (HD.4393) 5072 0 R (HD.4394) 5073 0 R (HD.4395) 5074 0 R (HD.4396) 5075 0 R (HD.4397) 5076 0 R (HD.4398) 5077 0 R (HD.4399) 5078 0 R (HD.44) 239 0 R (HD.440) 704 0 R (HD.4400) 5079 0 R (HD.4401) 5080 0 R (HD.4402) 5081 0 R (HD.4403) 5082 0 R (HD.4404) 5083 0 R (HD.4405) 5084 0 R (HD.4406) 5085 0 R (HD.4407) 5086 0 R (HD.4408) 5087 0 R (HD.4409) 5088 0 R ] /Limits [ (HD.4381) (HD.4409) ] >>
+endobj
+11867 0 obj
+<< /Names [ (HD.441) 705 0 R (HD.4410) 5089 0 R (HD.4411) 5090 0 R (HD.4412) 5091 0 R (HD.4413) 5092 0 R (HD.4414) 5093 0 R (HD.4415) 5094 0 R (HD.4416) 5095 0 R (HD.4417) 5096 0 R (HD.4418) 5097 0 R (HD.4419) 5098 0 R (HD.442) 706 0 R (HD.4420) 5099 0 R (HD.4421) 5100 0 R (HD.4422) 5101 0 R (HD.4423) 5102 0 R (HD.4424) 5103 0 R (HD.4425) 5104 0 R (HD.4426) 5105 0 R (HD.4427) 5106 0 R (HD.4428) 5107 0 R (HD.4429) 5108 0 R (HD.443) 707 0 R (HD.4430) 5113 0 R (HD.4431) 5114 0 R (HD.4432) 5115 0 R (HD.4433) 5116 0 R (HD.4434) 5117 0 R (HD.4435) 5118 0 R (HD.4436) 5119 0 R (HD.4437) 5120 0 R (HD.4438) 5121 0 R ] /Limits [ (HD.441) (HD.4438) ] >>
+endobj
+11868 0 obj
+<< /Names [ (HD.4439) 5122 0 R (HD.444) 708 0 R (HD.4440) 5123 0 R (HD.4441) 5124 0 R (HD.4442) 5125 0 R (HD.4443) 5126 0 R (HD.4444) 5127 0 R (HD.4445) 5128 0 R (HD.4446) 5129 0 R (HD.4447) 5130 0 R (HD.4448) 5131 0 R (HD.4449) 5132 0 R (HD.445) 709 0 R (HD.4450) 5133 0 R (HD.4451) 5134 0 R (HD.4452) 5135 0 R (HD.4453) 5136 0 R (HD.4454) 5137 0 R (HD.4455) 5138 0 R (HD.4456) 5139 0 R (HD.4457) 5140 0 R (HD.4458) 5141 0 R (HD.4459) 5142 0 R (HD.446) 710 0 R (HD.4460) 5143 0 R (HD.4461) 5144 0 R (HD.4462) 5145 0 R (HD.4463) 5146 0 R (HD.4464) 5147 0 R (HD.4465) 5148 0 R (HD.4466) 5149 0 R (HD.4467) 5150 0 R ] /Limits [ (HD.4439) (HD.4467) ] >>
+endobj
+11869 0 obj
+<< /Names [ (HD.4468) 5151 0 R (HD.4469) 5152 0 R (HD.447) 711 0 R (HD.4470) 5153 0 R (HD.4471) 5154 0 R (HD.4472) 5155 0 R (HD.4473) 5156 0 R (HD.4474) 5157 0 R (HD.4475) 5162 0 R (HD.4476) 5163 0 R (HD.4477) 5164 0 R (HD.4478) 5165 0 R (HD.4479) 5166 0 R (HD.448) 712 0 R (HD.4480) 5167 0 R (HD.4481) 5168 0 R (HD.4482) 5169 0 R (HD.4483) 5170 0 R (HD.4484) 5171 0 R (HD.4485) 5172 0 R (HD.4486) 5173 0 R (HD.4487) 5174 0 R (HD.4488) 5175 0 R (HD.4489) 5176 0 R (HD.449) 713 0 R (HD.4490) 5177 0 R (HD.4491) 5178 0 R (HD.4492) 5179 0 R (HD.4493) 5180 0 R (HD.4494) 5181 0 R (HD.4495) 5182 0 R (HD.4496) 5183 0 R ] /Limits [ (HD.4468) (HD.4496) ] >>
+endobj
+11870 0 obj
+<< /Names [ (HD.4497) 5184 0 R (HD.4498) 5185 0 R (HD.4499) 5186 0 R (HD.45) 240 0 R (HD.450) 714 0 R (HD.4500) 5187 0 R (HD.4501) 5188 0 R (HD.4502) 5189 0 R (HD.4503) 5190 0 R (HD.4504) 5191 0 R (HD.4505) 5192 0 R (HD.4506) 5193 0 R (HD.4507) 5194 0 R (HD.4508) 5195 0 R (HD.4509) 5196 0 R (HD.451) 715 0 R (HD.4510) 5197 0 R (HD.4511) 5198 0 R (HD.4512) 5199 0 R (HD.4513) 5200 0 R (HD.4514) 5201 0 R (HD.4515) 5202 0 R (HD.4516) 5203 0 R (HD.4517) 5204 0 R (HD.4518) 5205 0 R (HD.4519) 5206 0 R (HD.452) 716 0 R (HD.4520) 5207 0 R (HD.4521) 5208 0 R (HD.4522) 5209 0 R (HD.4523) 5210 0 R (HD.4524) 5211 0 R ] /Limits [ (HD.4497) (HD.4524) ] >>
+endobj
+11871 0 obj
+<< /Names [ (HD.4525) 5212 0 R (HD.4526) 5213 0 R (HD.4527) 5214 0 R (HD.4528) 5215 0 R (HD.4529) 5216 0 R (HD.453) 717 0 R (HD.4530) 5217 0 R (HD.4531) 5218 0 R (HD.4532) 5219 0 R (HD.4533) 5224 0 R (HD.4534) 5225 0 R (HD.4535) 5226 0 R (HD.4536) 5227 0 R (HD.4537) 5228 0 R (HD.4538) 5229 0 R (HD.4539) 5230 0 R (HD.454) 718 0 R (HD.4540) 5231 0 R (HD.4541) 5232 0 R (HD.4542) 5233 0 R (HD.4543) 5234 0 R (HD.4544) 5235 0 R (HD.4545) 5236 0 R (HD.4546) 5237 0 R (HD.4547) 5238 0 R (HD.4548) 5239 0 R (HD.4549) 5240 0 R (HD.455) 719 0 R (HD.4550) 5241 0 R (HD.4551) 5242 0 R (HD.4552) 5243 0 R (HD.4553) 5244 0 R ] /Limits [ (HD.4525) (HD.4553) ] >>
+endobj
+11872 0 obj
+<< /Names [ (HD.4554) 5245 0 R (HD.4555) 5246 0 R (HD.4556) 5247 0 R (HD.4557) 5248 0 R (HD.4558) 5249 0 R (HD.4559) 5250 0 R (HD.456) 720 0 R (HD.4560) 5251 0 R (HD.4561) 5252 0 R (HD.4562) 5253 0 R (HD.4563) 5254 0 R (HD.4564) 5255 0 R (HD.4565) 5256 0 R (HD.4566) 5257 0 R (HD.4567) 5258 0 R (HD.4568) 5259 0 R (HD.4569) 5260 0 R (HD.457) 721 0 R (HD.4570) 5261 0 R (HD.4571) 5262 0 R (HD.4572) 5263 0 R (HD.4573) 5264 0 R (HD.4574) 5269 0 R (HD.4575) 5270 0 R (HD.4576) 5271 0 R (HD.4577) 5272 0 R (HD.4578) 5273 0 R (HD.4579) 5274 0 R (HD.458) 722 0 R (HD.4580) 5275 0 R (HD.4581) 5276 0 R (HD.4582) 5277 0 R ] /Limits [ (HD.4554) (HD.4582) ] >>
+endobj
+11873 0 obj
+<< /Names [ (HD.4583) 5278 0 R (HD.4584) 5279 0 R (HD.4585) 5280 0 R (HD.4586) 5281 0 R (HD.4587) 5282 0 R (HD.4588) 5283 0 R (HD.4589) 5284 0 R (HD.459) 723 0 R (HD.4590) 5285 0 R (HD.4591) 5286 0 R (HD.4592) 5287 0 R (HD.4593) 5288 0 R (HD.4594) 5289 0 R (HD.4595) 5290 0 R (HD.4596) 5291 0 R (HD.4597) 5292 0 R (HD.4598) 5293 0 R (HD.4599) 5294 0 R (HD.46) 241 0 R (HD.460) 724 0 R (HD.4600) 5295 0 R (HD.4601) 5296 0 R (HD.4602) 5297 0 R (HD.4603) 5298 0 R (HD.4604) 5299 0 R (HD.4605) 5300 0 R (HD.4606) 5301 0 R (HD.4607) 5302 0 R (HD.4608) 5303 0 R (HD.4609) 5304 0 R (HD.461) 729 0 R (HD.4610) 5305 0 R ] /Limits [ (HD.4583) (HD.4610) ] >>
+endobj
+11874 0 obj
+<< /Names [ (HD.4611) 5306 0 R (HD.4612) 5307 0 R (HD.4613) 5308 0 R (HD.4614) 5309 0 R (HD.4615) 5310 0 R (HD.4616) 5311 0 R (HD.4617) 5312 0 R (HD.4618) 5313 0 R (HD.4619) 5314 0 R (HD.462) 730 0 R (HD.4620) 5320 0 R (HD.4621) 5321 0 R (HD.4622) 5322 0 R (HD.4623) 5323 0 R (HD.4624) 5324 0 R (HD.4625) 5325 0 R (HD.4626) 5326 0 R (HD.4627) 5327 0 R (HD.4628) 5328 0 R (HD.4629) 5329 0 R (HD.463) 731 0 R (HD.4630) 5330 0 R (HD.4631) 5331 0 R (HD.4632) 5332 0 R (HD.4633) 5333 0 R (HD.4634) 5334 0 R (HD.4635) 5335 0 R (HD.4636) 5336 0 R (HD.4637) 5337 0 R (HD.4638) 5338 0 R (HD.4639) 5339 0 R (HD.464) 732 0 R ] /Limits [ (HD.4611) (HD.464) ] >>
+endobj
+11875 0 obj
+<< /Names [ (HD.4640) 5340 0 R (HD.4641) 5341 0 R (HD.4642) 5342 0 R (HD.4643) 5343 0 R (HD.4644) 5344 0 R (HD.4645) 5345 0 R (HD.4646) 5346 0 R (HD.4647) 5347 0 R (HD.4648) 5348 0 R (HD.4649) 5349 0 R (HD.465) 733 0 R (HD.4650) 5350 0 R (HD.4651) 5351 0 R (HD.4652) 5352 0 R (HD.4653) 5353 0 R (HD.4654) 5354 0 R (HD.4655) 5355 0 R (HD.4656) 5356 0 R (HD.4657) 5357 0 R (HD.4658) 5358 0 R (HD.4659) 5363 0 R (HD.466) 734 0 R (HD.4660) 5364 0 R (HD.4661) 5365 0 R (HD.4662) 5366 0 R (HD.4663) 5367 0 R (HD.4664) 5368 0 R (HD.4665) 5369 0 R (HD.4666) 5370 0 R (HD.4667) 5371 0 R (HD.4668) 5372 0 R (HD.4669) 5373 0 R ] /Limits [ (HD.4640) (HD.4669) ] >>
+endobj
+11876 0 obj
+<< /Names [ (HD.467) 735 0 R (HD.4670) 5374 0 R (HD.4671) 5375 0 R (HD.4672) 5376 0 R (HD.4673) 5377 0 R (HD.4674) 5378 0 R (HD.4675) 5379 0 R (HD.4676) 5380 0 R (HD.4677) 5381 0 R (HD.4678) 5382 0 R (HD.4679) 5383 0 R (HD.468) 736 0 R (HD.4680) 5384 0 R (HD.4681) 5385 0 R (HD.4682) 5386 0 R (HD.4683) 5387 0 R (HD.4684) 5388 0 R (HD.4685) 5389 0 R (HD.4686) 5390 0 R (HD.4687) 5391 0 R (HD.4688) 5392 0 R (HD.4689) 5393 0 R (HD.469) 737 0 R (HD.4690) 5394 0 R (HD.4691) 5395 0 R (HD.4692) 5396 0 R (HD.4693) 5397 0 R (HD.4694) 5398 0 R (HD.4695) 5399 0 R (HD.4696) 5400 0 R (HD.4697) 5401 0 R (HD.4698) 5402 0 R ] /Limits [ (HD.467) (HD.4698) ] >>
+endobj
+11877 0 obj
+<< /Names [ (HD.4699) 5403 0 R (HD.47) 242 0 R (HD.470) 738 0 R (HD.4700) 5404 0 R (HD.4701) 5409 0 R (HD.4702) 5410 0 R (HD.4703) 5411 0 R (HD.4704) 5412 0 R (HD.4705) 5413 0 R (HD.4706) 5414 0 R (HD.4707) 5415 0 R (HD.4708) 5416 0 R (HD.4709) 5417 0 R (HD.471) 739 0 R (HD.4710) 5418 0 R (HD.4711) 5419 0 R (HD.4712) 5420 0 R (HD.4713) 5421 0 R (HD.4714) 5422 0 R (HD.4715) 5423 0 R (HD.4716) 5424 0 R (HD.4717) 5425 0 R (HD.4718) 5426 0 R (HD.4719) 5427 0 R (HD.472) 740 0 R (HD.4720) 5428 0 R (HD.4721) 5429 0 R (HD.4722) 5430 0 R (HD.4723) 5431 0 R (HD.4724) 5432 0 R (HD.4725) 5433 0 R (HD.4726) 5434 0 R ] /Limits [ (HD.4699) (HD.4726) ] >>
+endobj
+11878 0 obj
+<< /Names [ (HD.4727) 5435 0 R (HD.4728) 5436 0 R (HD.4729) 5437 0 R (HD.473) 741 0 R (HD.4730) 5438 0 R (HD.4731) 5439 0 R (HD.4732) 5440 0 R (HD.4733) 5441 0 R (HD.4734) 5442 0 R (HD.4735) 5447 0 R (HD.4736) 5448 0 R (HD.4737) 5449 0 R (HD.4738) 5450 0 R (HD.4739) 5451 0 R (HD.474) 742 0 R (HD.4740) 5452 0 R (HD.4741) 5453 0 R (HD.4742) 5454 0 R (HD.4743) 5455 0 R (HD.4744) 5456 0 R (HD.4745) 5457 0 R (HD.4746) 5458 0 R (HD.4747) 5459 0 R (HD.4748) 5460 0 R (HD.4749) 5461 0 R (HD.475) 743 0 R (HD.4750) 5462 0 R (HD.4751) 5463 0 R (HD.4752) 5464 0 R (HD.4753) 5465 0 R (HD.4754) 5466 0 R (HD.4755) 5467 0 R ] /Limits [ (HD.4727) (HD.4755) ] >>
+endobj
+11879 0 obj
+<< /Names [ (HD.4756) 5468 0 R (HD.4757) 5469 0 R (HD.4758) 5470 0 R (HD.4759) 5471 0 R (HD.476) 744 0 R (HD.4760) 5472 0 R (HD.4761) 5473 0 R (HD.4762) 5474 0 R (HD.4763) 5475 0 R (HD.4764) 5476 0 R (HD.4765) 5477 0 R (HD.4766) 5478 0 R (HD.4767) 5479 0 R (HD.4768) 5480 0 R (HD.4769) 5481 0 R (HD.477) 745 0 R (HD.4770) 5482 0 R (HD.4771) 5483 0 R (HD.4772) 5484 0 R (HD.4773) 5485 0 R (HD.4774) 5486 0 R (HD.4775) 5487 0 R (HD.4776) 5488 0 R (HD.4777) 5489 0 R (HD.4778) 5490 0 R (HD.4779) 5491 0 R (HD.478) 746 0 R (HD.4780) 5496 0 R (HD.4781) 5497 0 R (HD.4782) 5498 0 R (HD.4783) 5499 0 R (HD.4784) 5500 0 R ] /Limits [ (HD.4756) (HD.4784) ] >>
+endobj
+11880 0 obj
+<< /Names [ (HD.4785) 5501 0 R (HD.4786) 5502 0 R (HD.4787) 5503 0 R (HD.4788) 5504 0 R (HD.4789) 5505 0 R (HD.479) 747 0 R (HD.4790) 5506 0 R (HD.4791) 5507 0 R (HD.4792) 5508 0 R (HD.4793) 5509 0 R (HD.4794) 5510 0 R (HD.4795) 5511 0 R (HD.4796) 5512 0 R (HD.4797) 5513 0 R (HD.4798) 5514 0 R (HD.4799) 5515 0 R (HD.48) 243 0 R (HD.480) 748 0 R (HD.4800) 5516 0 R (HD.4801) 5517 0 R (HD.4802) 5518 0 R (HD.4803) 5519 0 R (HD.4804) 5520 0 R (HD.4805) 5521 0 R (HD.4806) 5522 0 R (HD.4807) 5523 0 R (HD.4808) 5524 0 R (HD.4809) 5525 0 R (HD.481) 750 0 R (HD.4810) 5526 0 R (HD.4811) 5527 0 R (HD.4812) 5528 0 R ] /Limits [ (HD.4785) (HD.4812) ] >>
+endobj
+11881 0 obj
+<< /Names [ (HD.4813) 5529 0 R (HD.4814) 5530 0 R (HD.4815) 5531 0 R (HD.4816) 5532 0 R (HD.4817) 5533 0 R (HD.4818) 5534 0 R (HD.4819) 5535 0 R (HD.482) 751 0 R (HD.4820) 5536 0 R (HD.4821) 5537 0 R (HD.4822) 5538 0 R (HD.4823) 5539 0 R (HD.4824) 5540 0 R (HD.4825) 5541 0 R (HD.4826) 5542 0 R (HD.4827) 5543 0 R (HD.4828) 5544 0 R (HD.4829) 5545 0 R (HD.483) 757 0 R (HD.4830) 5546 0 R (HD.4831) 5547 0 R (HD.4832) 5548 0 R (HD.4833) 5553 0 R (HD.4834) 5554 0 R (HD.4835) 5555 0 R (HD.4836) 5556 0 R (HD.4837) 5557 0 R (HD.4838) 5558 0 R (HD.4839) 5559 0 R (HD.484) 758 0 R (HD.4840) 5560 0 R (HD.4841) 5561 0 R ] /Limits [ (HD.4813) (HD.4841) ] >>
+endobj
+11882 0 obj
+<< /Names [ (HD.4842) 5562 0 R (HD.4843) 5563 0 R (HD.4844) 5564 0 R (HD.4845) 5565 0 R (HD.4846) 5566 0 R (HD.4847) 5567 0 R (HD.4848) 5568 0 R (HD.4849) 5569 0 R (HD.485) 759 0 R (HD.4850) 5570 0 R (HD.4851) 5571 0 R (HD.4852) 5572 0 R (HD.4853) 5573 0 R (HD.4854) 5574 0 R (HD.4855) 5575 0 R (HD.4856) 5576 0 R (HD.4857) 5577 0 R (HD.4858) 5578 0 R (HD.4859) 5579 0 R (HD.486) 760 0 R (HD.4860) 5580 0 R (HD.4861) 5581 0 R (HD.4862) 5582 0 R (HD.4863) 5583 0 R (HD.4864) 5584 0 R (HD.4865) 5585 0 R (HD.4866) 5586 0 R (HD.4867) 5587 0 R (HD.4868) 5588 0 R (HD.4869) 5589 0 R (HD.487) 761 0 R (HD.4870) 5590 0 R ] /Limits [ (HD.4842) (HD.4870) ] >>
+endobj
+11883 0 obj
+<< /Names [ (HD.4871) 5591 0 R (HD.4872) 5592 0 R (HD.4873) 5593 0 R (HD.4874) 5594 0 R (HD.4875) 5595 0 R (HD.4876) 5596 0 R (HD.4877) 5597 0 R (HD.4878) 5598 0 R (HD.4879) 5599 0 R (HD.488) 762 0 R (HD.4880) 5600 0 R (HD.4881) 5601 0 R (HD.4882) 5602 0 R (HD.4883) 5607 0 R (HD.4884) 5608 0 R (HD.4885) 5609 0 R (HD.4886) 5610 0 R (HD.4887) 5611 0 R (HD.4888) 5612 0 R (HD.4889) 5613 0 R (HD.489) 763 0 R (HD.4890) 5614 0 R (HD.4891) 5615 0 R (HD.4892) 5616 0 R (HD.4893) 5617 0 R (HD.4894) 5618 0 R (HD.4895) 5619 0 R (HD.4896) 5620 0 R (HD.4897) 5621 0 R (HD.4898) 5622 0 R (HD.4899) 5623 0 R (HD.49) 244 0 R ] /Limits [ (HD.4871) (HD.49) ] >>
+endobj
+11884 0 obj
+<< /Names [ (HD.490) 764 0 R (HD.4900) 5624 0 R (HD.4901) 5625 0 R (HD.4902) 5626 0 R (HD.4903) 5627 0 R (HD.4904) 5628 0 R (HD.4905) 5629 0 R (HD.4906) 5630 0 R (HD.4907) 5631 0 R (HD.4908) 5632 0 R (HD.4909) 5633 0 R (HD.491) 765 0 R (HD.4910) 5634 0 R (HD.4911) 5635 0 R (HD.4912) 5636 0 R (HD.4913) 5637 0 R (HD.4914) 5638 0 R (HD.4915) 5639 0 R (HD.4916) 5640 0 R (HD.4917) 5641 0 R (HD.4918) 5642 0 R (HD.4919) 5643 0 R (HD.492) 766 0 R (HD.4920) 5644 0 R (HD.4921) 5645 0 R (HD.4922) 5646 0 R (HD.4923) 5647 0 R (HD.4924) 5648 0 R (HD.4925) 5649 0 R (HD.4926) 5650 0 R (HD.4927) 5651 0 R (HD.4928) 5652 0 R ] /Limits [ (HD.490) (HD.4928) ] >>
+endobj
+11885 0 obj
+<< /Names [ (HD.4929) 5653 0 R (HD.493) 776 0 R (HD.4930) 5654 0 R (HD.4931) 5655 0 R (HD.4932) 5656 0 R (HD.4933) 5657 0 R (HD.4934) 5658 0 R (HD.4935) 5659 0 R (HD.4936) 5660 0 R (HD.4937) 5661 0 R (HD.4938) 5662 0 R (HD.4939) 5663 0 R (HD.494) 777 0 R (HD.4940) 5664 0 R (HD.4941) 5665 0 R (HD.4942) 5670 0 R (HD.4943) 5671 0 R (HD.4944) 5672 0 R (HD.4945) 5673 0 R (HD.4946) 5674 0 R (HD.4947) 5675 0 R (HD.4948) 5676 0 R (HD.4949) 5677 0 R (HD.495) 778 0 R (HD.4950) 5678 0 R (HD.4951) 5679 0 R (HD.4952) 5680 0 R (HD.4953) 5681 0 R (HD.4954) 5682 0 R (HD.4955) 5683 0 R (HD.4956) 5684 0 R (HD.4957) 5685 0 R ] /Limits [ (HD.4929) (HD.4957) ] >>
+endobj
+11886 0 obj
+<< /Names [ (HD.4958) 5686 0 R (HD.4959) 5687 0 R (HD.496) 779 0 R (HD.4960) 5688 0 R (HD.4961) 5689 0 R (HD.4962) 5690 0 R (HD.4963) 5691 0 R (HD.4964) 5692 0 R (HD.4965) 5693 0 R (HD.4966) 5694 0 R (HD.4967) 5695 0 R (HD.4968) 5696 0 R (HD.4969) 5697 0 R (HD.497) 780 0 R (HD.4970) 5698 0 R (HD.4971) 5699 0 R (HD.4972) 5700 0 R (HD.4973) 5701 0 R (HD.4974) 5702 0 R (HD.4975) 5703 0 R (HD.4976) 5704 0 R (HD.4977) 5705 0 R (HD.4978) 5706 0 R (HD.4979) 5707 0 R (HD.498) 781 0 R (HD.4980) 5708 0 R (HD.4981) 5709 0 R (HD.4982) 5710 0 R (HD.4983) 5711 0 R (HD.4984) 5712 0 R (HD.4985) 5713 0 R (HD.4986) 5714 0 R ] /Limits [ (HD.4958) (HD.4986) ] >>
+endobj
+11887 0 obj
+<< /Names [ (HD.4987) 5715 0 R (HD.4988) 5716 0 R (HD.4989) 5721 0 R (HD.499) 782 0 R (HD.4990) 5722 0 R (HD.4991) 5723 0 R (HD.4992) 5724 0 R (HD.4993) 5725 0 R (HD.4994) 5726 0 R (HD.4995) 5727 0 R (HD.4996) 5728 0 R (HD.4997) 5729 0 R (HD.4998) 5730 0 R (HD.4999) 5731 0 R (HD.5) 193 0 R (HD.50) 245 0 R (HD.500) 783 0 R (HD.5000) 5732 0 R (HD.5001) 5733 0 R (HD.5002) 5734 0 R (HD.5003) 5735 0 R (HD.5004) 5736 0 R (HD.5005) 5737 0 R (HD.5006) 5738 0 R (HD.5007) 5739 0 R (HD.5008) 5740 0 R (HD.5009) 5741 0 R (HD.501) 784 0 R (HD.5010) 5742 0 R (HD.5011) 5743 0 R (HD.5012) 5744 0 R (HD.5013) 5745 0 R ] /Limits [ (HD.4987) (HD.5013) ] >>
+endobj
+11888 0 obj
+<< /Names [ (HD.5014) 5746 0 R (HD.5015) 5747 0 R (HD.5016) 5748 0 R (HD.5017) 5749 0 R (HD.5018) 5750 0 R (HD.5019) 5751 0 R (HD.502) 785 0 R (HD.5020) 5752 0 R (HD.5021) 5753 0 R (HD.5022) 5754 0 R (HD.5023) 5755 0 R (HD.5024) 5756 0 R (HD.5025) 5757 0 R (HD.5026) 5758 0 R (HD.5027) 5759 0 R (HD.5028) 5760 0 R (HD.5029) 5761 0 R (HD.503) 786 0 R (HD.5030) 5762 0 R (HD.5031) 5763 0 R (HD.5032) 5764 0 R (HD.5033) 5765 0 R (HD.5034) 5766 0 R (HD.5035) 5767 0 R (HD.5036) 5768 0 R (HD.5037) 5769 0 R (HD.5038) 5770 0 R (HD.5039) 5771 0 R (HD.504) 787 0 R (HD.5040) 5772 0 R (HD.5041) 5773 0 R (HD.5042) 5774 0 R ] /Limits [ (HD.5014) (HD.5042) ] >>
+endobj
+11889 0 obj
+<< /Names [ (HD.5043) 5775 0 R (HD.5044) 5776 0 R (HD.5045) 5777 0 R (HD.5046) 5778 0 R (HD.5047) 5783 0 R (HD.5048) 5784 0 R (HD.5049) 5785 0 R (HD.505) 788 0 R (HD.5050) 5786 0 R (HD.5051) 5787 0 R (HD.5052) 5788 0 R (HD.5053) 5789 0 R (HD.5054) 5790 0 R (HD.5055) 5791 0 R (HD.5056) 5792 0 R (HD.5057) 5793 0 R (HD.5058) 5794 0 R (HD.5059) 5795 0 R (HD.506) 789 0 R (HD.5060) 5796 0 R (HD.5061) 5797 0 R (HD.5062) 5798 0 R (HD.5063) 5799 0 R (HD.5064) 5800 0 R (HD.5065) 5801 0 R (HD.5066) 5802 0 R (HD.5067) 5803 0 R (HD.5068) 5804 0 R (HD.5069) 5805 0 R (HD.507) 790 0 R (HD.5070) 5806 0 R (HD.5071) 5807 0 R ] /Limits [ (HD.5043) (HD.5071) ] >>
+endobj
+11890 0 obj
+<< /Names [ (HD.5072) 5808 0 R (HD.5073) 5809 0 R (HD.5074) 5810 0 R (HD.5075) 5811 0 R (HD.5076) 5812 0 R (HD.5077) 5813 0 R (HD.5078) 5814 0 R (HD.5079) 5815 0 R (HD.508) 791 0 R (HD.5080) 5816 0 R (HD.5081) 5817 0 R (HD.5082) 5818 0 R (HD.5083) 5819 0 R (HD.5084) 5820 0 R (HD.5085) 5821 0 R (HD.5086) 5822 0 R (HD.5087) 5823 0 R (HD.5088) 5824 0 R (HD.5089) 5825 0 R (HD.509) 792 0 R (HD.5090) 5826 0 R (HD.5091) 5827 0 R (HD.5092) 5828 0 R (HD.5093) 5829 0 R (HD.5094) 5830 0 R (HD.5095) 5831 0 R (HD.5096) 5832 0 R (HD.5097) 5833 0 R (HD.5098) 5834 0 R (HD.5099) 5835 0 R (HD.51) 246 0 R (HD.510) 793 0 R ] /Limits [ (HD.5072) (HD.510) ] >>
+endobj
+11891 0 obj
+<< /Names [ (HD.5100) 5836 0 R (HD.5101) 5837 0 R (HD.5102) 5838 0 R (HD.5103) 5839 0 R (HD.5104) 5840 0 R (HD.5105) 5846 0 R (HD.5106) 5847 0 R (HD.5107) 5848 0 R (HD.5108) 5849 0 R (HD.5109) 5850 0 R (HD.511) 794 0 R (HD.5110) 5851 0 R (HD.5111) 5852 0 R (HD.5112) 5853 0 R (HD.5113) 5854 0 R (HD.5114) 5855 0 R (HD.5115) 5856 0 R (HD.5116) 5857 0 R (HD.5117) 5858 0 R (HD.5118) 5859 0 R (HD.5119) 5860 0 R (HD.512) 795 0 R (HD.5120) 5861 0 R (HD.5121) 5862 0 R (HD.5122) 5863 0 R (HD.5123) 5864 0 R (HD.5124) 5865 0 R (HD.5125) 5866 0 R (HD.5126) 5867 0 R (HD.5127) 5868 0 R (HD.5128) 5869 0 R (HD.5129) 5870 0 R ] /Limits [ (HD.5100) (HD.5129) ] >>
+endobj
+11892 0 obj
+<< /Names [ (HD.513) 796 0 R (HD.5130) 5871 0 R (HD.5131) 5872 0 R (HD.5132) 5873 0 R (HD.5133) 5874 0 R (HD.5134) 5875 0 R (HD.5135) 5876 0 R (HD.5136) 5877 0 R (HD.5137) 5878 0 R (HD.5138) 5879 0 R (HD.5139) 5880 0 R (HD.514) 797 0 R (HD.5140) 5881 0 R (HD.5141) 5882 0 R (HD.5142) 5883 0 R (HD.5143) 5884 0 R (HD.5144) 5885 0 R (HD.5145) 5886 0 R (HD.5146) 5887 0 R (HD.5147) 5888 0 R (HD.5148) 5889 0 R (HD.5149) 5890 0 R (HD.515) 798 0 R (HD.5150) 5891 0 R (HD.5151) 5892 0 R (HD.5152) 5897 0 R (HD.5153) 5898 0 R (HD.5154) 5899 0 R (HD.5155) 5900 0 R (HD.5156) 5901 0 R (HD.5157) 5902 0 R (HD.5158) 5903 0 R ] /Limits [ (HD.513) (HD.5158) ] >>
+endobj
+11893 0 obj
+<< /Names [ (HD.5159) 5904 0 R (HD.516) 799 0 R (HD.5160) 5905 0 R (HD.5161) 5906 0 R (HD.5162) 5907 0 R (HD.5163) 5908 0 R (HD.5164) 5909 0 R (HD.5165) 5910 0 R (HD.5166) 5911 0 R (HD.5167) 5912 0 R (HD.5168) 5913 0 R (HD.5169) 5914 0 R (HD.517) 800 0 R (HD.5170) 5915 0 R (HD.5171) 5916 0 R (HD.5172) 5917 0 R (HD.5173) 5918 0 R (HD.5174) 5919 0 R (HD.5175) 5920 0 R (HD.5176) 5921 0 R (HD.5177) 5922 0 R (HD.5178) 5923 0 R (HD.5179) 5924 0 R (HD.518) 801 0 R (HD.5180) 5925 0 R (HD.5181) 5926 0 R (HD.5182) 5927 0 R (HD.5183) 5928 0 R (HD.5184) 5929 0 R (HD.5185) 5930 0 R (HD.5186) 5931 0 R (HD.5187) 5932 0 R ] /Limits [ (HD.5159) (HD.5187) ] >>
+endobj
+11894 0 obj
+<< /Names [ (HD.5188) 5933 0 R (HD.5189) 5934 0 R (HD.519) 802 0 R (HD.5190) 5935 0 R (HD.5191) 5936 0 R (HD.5192) 5937 0 R (HD.5193) 5938 0 R (HD.5194) 5939 0 R (HD.5195) 5940 0 R (HD.5196) 5941 0 R (HD.5197) 5942 0 R (HD.5198) 5943 0 R (HD.5199) 5944 0 R (HD.52) 247 0 R (HD.520) 803 0 R (HD.5200) 5945 0 R (HD.5201) 5946 0 R (HD.5202) 5947 0 R (HD.5203) 5948 0 R (HD.5204) 5949 0 R (HD.5205) 5950 0 R (HD.5206) 5951 0 R (HD.5207) 5952 0 R (HD.5208) 5953 0 R (HD.5209) 5954 0 R (HD.521) 804 0 R (HD.5210) 5955 0 R (HD.5211) 5960 0 R (HD.5212) 5961 0 R (HD.5213) 5962 0 R (HD.5214) 5963 0 R (HD.5215) 5964 0 R ] /Limits [ (HD.5188) (HD.5215) ] >>
+endobj
+11895 0 obj
+<< /Names [ (HD.5216) 5965 0 R (HD.5217) 5966 0 R (HD.5218) 5967 0 R (HD.5219) 5968 0 R (HD.522) 805 0 R (HD.5220) 5969 0 R (HD.5221) 5970 0 R (HD.5222) 5971 0 R (HD.5223) 5972 0 R (HD.5224) 5973 0 R (HD.5225) 5974 0 R (HD.5226) 5975 0 R (HD.5227) 5976 0 R (HD.5228) 5977 0 R (HD.5229) 5978 0 R (HD.523) 812 0 R (HD.5230) 5979 0 R (HD.5231) 5980 0 R (HD.5232) 5981 0 R (HD.5233) 5982 0 R (HD.5234) 5983 0 R (HD.5235) 5984 0 R (HD.5236) 5985 0 R (HD.5237) 5986 0 R (HD.5238) 5987 0 R (HD.5239) 5988 0 R (HD.524) 813 0 R (HD.5240) 5989 0 R (HD.5241) 5990 0 R (HD.5242) 5991 0 R (HD.5243) 5992 0 R (HD.5244) 5993 0 R ] /Limits [ (HD.5216) (HD.5244) ] >>
+endobj
+11896 0 obj
+<< /Names [ (HD.5245) 5994 0 R (HD.5246) 5995 0 R (HD.5247) 5996 0 R (HD.5248) 5997 0 R (HD.5249) 5998 0 R (HD.525) 814 0 R (HD.5250) 5999 0 R (HD.5251) 6000 0 R (HD.5252) 6001 0 R (HD.5253) 6002 0 R (HD.5254) 6003 0 R (HD.5255) 6004 0 R (HD.5256) 6005 0 R (HD.5257) 6006 0 R (HD.5258) 6007 0 R (HD.5259) 6008 0 R (HD.526) 815 0 R (HD.5260) 6009 0 R (HD.5261) 6010 0 R (HD.5262) 6011 0 R (HD.5263) 6016 0 R (HD.5264) 6017 0 R (HD.5265) 6018 0 R (HD.5266) 6019 0 R (HD.5267) 6020 0 R (HD.5268) 6021 0 R (HD.5269) 6022 0 R (HD.527) 816 0 R (HD.5270) 6023 0 R (HD.5271) 6024 0 R (HD.5272) 6025 0 R (HD.5273) 6026 0 R ] /Limits [ (HD.5245) (HD.5273) ] >>
+endobj
+11897 0 obj
+<< /Names [ (HD.5274) 6027 0 R (HD.5275) 6028 0 R (HD.5276) 6029 0 R (HD.5277) 6030 0 R (HD.5278) 6031 0 R (HD.5279) 6032 0 R (HD.528) 817 0 R (HD.5280) 6033 0 R (HD.5281) 6034 0 R (HD.5282) 6035 0 R (HD.5283) 6036 0 R (HD.5284) 6037 0 R (HD.5285) 6038 0 R (HD.5286) 6039 0 R (HD.5287) 6040 0 R (HD.5288) 6041 0 R (HD.5289) 6042 0 R (HD.529) 818 0 R (HD.5290) 6043 0 R (HD.5291) 6044 0 R (HD.5292) 6045 0 R (HD.5293) 6046 0 R (HD.5294) 6047 0 R (HD.5295) 6048 0 R (HD.5296) 6049 0 R (HD.5297) 6050 0 R (HD.5298) 6051 0 R (HD.5299) 6052 0 R (HD.53) 248 0 R (HD.530) 819 0 R (HD.5300) 6053 0 R (HD.5301) 6054 0 R ] /Limits [ (HD.5274) (HD.5301) ] >>
+endobj
+11898 0 obj
+<< /Names [ (HD.5302) 6055 0 R (HD.5303) 6056 0 R (HD.5304) 6057 0 R (HD.5305) 6058 0 R (HD.5306) 6059 0 R (HD.5307) 6060 0 R (HD.5308) 6061 0 R (HD.5309) 6062 0 R (HD.531) 820 0 R (HD.5310) 6063 0 R (HD.5311) 6069 0 R (HD.5312) 6070 0 R (HD.5313) 6071 0 R (HD.5314) 6072 0 R (HD.5315) 6073 0 R (HD.5316) 6074 0 R (HD.5317) 6075 0 R (HD.5318) 6076 0 R (HD.5319) 6077 0 R (HD.532) 821 0 R (HD.5320) 6078 0 R (HD.5321) 6079 0 R (HD.5322) 6080 0 R (HD.5323) 6081 0 R (HD.5324) 6082 0 R (HD.5325) 6083 0 R (HD.5326) 6084 0 R (HD.5327) 6085 0 R (HD.5328) 6086 0 R (HD.5329) 6087 0 R (HD.533) 822 0 R (HD.5330) 6088 0 R ] /Limits [ (HD.5302) (HD.5330) ] >>
+endobj
+11899 0 obj
+<< /Names [ (HD.5331) 6089 0 R (HD.5332) 6090 0 R (HD.5333) 6091 0 R (HD.5334) 6092 0 R (HD.5335) 6093 0 R (HD.5336) 6094 0 R (HD.5337) 6095 0 R (HD.5338) 6096 0 R (HD.5339) 6097 0 R (HD.534) 823 0 R (HD.5340) 6098 0 R (HD.5341) 6099 0 R (HD.5342) 6100 0 R (HD.5343) 6101 0 R (HD.5344) 6102 0 R (HD.5345) 6103 0 R (HD.5346) 6104 0 R (HD.5347) 6105 0 R (HD.5348) 6112 0 R (HD.5349) 6113 0 R (HD.535) 824 0 R (HD.5350) 6114 0 R (HD.5351) 6115 0 R (HD.5352) 6116 0 R (HD.5353) 6117 0 R (HD.5354) 6118 0 R (HD.5355) 6119 0 R (HD.5356) 6120 0 R (HD.5357) 6121 0 R (HD.5358) 6122 0 R (HD.5359) 6123 0 R (HD.536) 825 0 R ] /Limits [ (HD.5331) (HD.536) ] >>
+endobj
+11900 0 obj
+<< /Names [ (HD.5360) 6124 0 R (HD.5361) 6125 0 R (HD.5362) 6126 0 R (HD.5363) 6127 0 R (HD.5364) 6128 0 R (HD.5365) 6129 0 R (HD.5366) 6130 0 R (HD.5367) 6131 0 R (HD.5368) 6132 0 R (HD.5369) 6133 0 R (HD.537) 832 0 R (HD.5370) 6134 0 R (HD.5371) 6135 0 R (HD.5372) 6136 0 R (HD.5373) 6137 0 R (HD.5374) 6138 0 R (HD.5375) 6139 0 R (HD.5376) 6140 0 R (HD.5377) 6145 0 R (HD.5378) 6146 0 R (HD.5379) 6147 0 R (HD.538) 833 0 R (HD.5380) 6148 0 R (HD.5381) 6149 0 R (HD.5382) 6150 0 R (HD.5383) 6151 0 R (HD.5384) 6152 0 R (HD.5385) 6153 0 R (HD.5386) 6154 0 R (HD.5387) 6155 0 R (HD.5388) 6156 0 R (HD.5389) 6157 0 R ] /Limits [ (HD.5360) (HD.5389) ] >>
+endobj
+11901 0 obj
+<< /Names [ (HD.539) 834 0 R (HD.5390) 6158 0 R (HD.5391) 6159 0 R (HD.5392) 6160 0 R (HD.5393) 6161 0 R (HD.5394) 6162 0 R (HD.5395) 6163 0 R (HD.5396) 6164 0 R (HD.5397) 6165 0 R (HD.5398) 6166 0 R (HD.5399) 6167 0 R (HD.54) 249 0 R (HD.540) 835 0 R (HD.5400) 6168 0 R (HD.5401) 6169 0 R (HD.5402) 6170 0 R (HD.5403) 6171 0 R (HD.5404) 6172 0 R (HD.5405) 6173 0 R (HD.5406) 6174 0 R (HD.5407) 6175 0 R (HD.5408) 6176 0 R (HD.5409) 6177 0 R (HD.541) 836 0 R (HD.5410) 6178 0 R (HD.5411) 6179 0 R (HD.5412) 6180 0 R (HD.5413) 6181 0 R (HD.5414) 6182 0 R (HD.5415) 6183 0 R (HD.5416) 6184 0 R (HD.5417) 6185 0 R ] /Limits [ (HD.539) (HD.5417) ] >>
+endobj
+11902 0 obj
+<< /Names [ (HD.5418) 6186 0 R (HD.5419) 6187 0 R (HD.542) 837 0 R (HD.5420) 6188 0 R (HD.5421) 6189 0 R (HD.5422) 6190 0 R (HD.5423) 6191 0 R (HD.5424) 6192 0 R (HD.5425) 6193 0 R (HD.5426) 6194 0 R (HD.5427) 6195 0 R (HD.5428) 6200 0 R (HD.5429) 6201 0 R (HD.543) 838 0 R (HD.5430) 6202 0 R (HD.5431) 6203 0 R (HD.5432) 6204 0 R (HD.5433) 6205 0 R (HD.5434) 6206 0 R (HD.5435) 6207 0 R (HD.5436) 6208 0 R (HD.5437) 6209 0 R (HD.5438) 6210 0 R (HD.5439) 6211 0 R (HD.544) 839 0 R (HD.5440) 6212 0 R (HD.5441) 6213 0 R (HD.5442) 6214 0 R (HD.5443) 6215 0 R (HD.5444) 6216 0 R (HD.5445) 6217 0 R (HD.5446) 6218 0 R ] /Limits [ (HD.5418) (HD.5446) ] >>
+endobj
+11903 0 obj
+<< /Names [ (HD.5447) 6219 0 R (HD.5448) 6220 0 R (HD.5449) 6221 0 R (HD.545) 840 0 R (HD.5450) 6222 0 R (HD.5451) 6223 0 R (HD.5452) 6224 0 R (HD.5453) 6225 0 R (HD.5454) 6226 0 R (HD.5455) 6227 0 R (HD.5456) 6228 0 R (HD.5457) 6229 0 R (HD.5458) 6230 0 R (HD.5459) 6231 0 R (HD.546) 841 0 R (HD.5460) 6232 0 R (HD.5461) 6233 0 R (HD.5462) 6234 0 R (HD.5463) 6235 0 R (HD.5464) 6236 0 R (HD.5465) 6237 0 R (HD.5466) 6238 0 R (HD.5467) 6239 0 R (HD.5468) 6240 0 R (HD.5469) 6241 0 R (HD.547) 842 0 R (HD.5470) 6242 0 R (HD.5471) 6243 0 R (HD.5472) 6244 0 R (HD.5473) 6245 0 R (HD.5474) 6246 0 R (HD.5475) 6247 0 R ] /Limits [ (HD.5447) (HD.5475) ] >>
+endobj
+11904 0 obj
+<< /Names [ (HD.5476) 6248 0 R (HD.5477) 6249 0 R (HD.5478) 6250 0 R (HD.5479) 6251 0 R (HD.548) 843 0 R (HD.5480) 6252 0 R (HD.5481) 6253 0 R (HD.5482) 6254 0 R (HD.5483) 6255 0 R (HD.5484) 6260 0 R (HD.5485) 6261 0 R (HD.5486) 6262 0 R (HD.5487) 6263 0 R (HD.5488) 6264 0 R (HD.5489) 6265 0 R (HD.549) 844 0 R (HD.5490) 6266 0 R (HD.5491) 6267 0 R (HD.5492) 6268 0 R (HD.5493) 6269 0 R (HD.5494) 6270 0 R (HD.5495) 6271 0 R (HD.5496) 6272 0 R (HD.5497) 6273 0 R (HD.5498) 6274 0 R (HD.5499) 6275 0 R (HD.55) 250 0 R (HD.550) 845 0 R (HD.5500) 6276 0 R (HD.5501) 6277 0 R (HD.5502) 6278 0 R (HD.5503) 6279 0 R ] /Limits [ (HD.5476) (HD.5503) ] >>
+endobj
+11905 0 obj
+<< /Names [ (HD.5504) 6280 0 R (HD.5505) 6281 0 R (HD.5506) 6286 0 R (HD.5507) 6287 0 R (HD.5508) 6288 0 R (HD.5509) 6289 0 R (HD.551) 846 0 R (HD.5510) 6290 0 R (HD.5511) 6291 0 R (HD.5512) 6292 0 R (HD.5513) 6293 0 R (HD.5514) 6294 0 R (HD.5515) 6295 0 R (HD.5516) 6296 0 R (HD.5517) 6297 0 R (HD.5518) 6298 0 R (HD.5519) 6299 0 R (HD.552) 847 0 R (HD.5520) 6300 0 R (HD.5521) 6301 0 R (HD.5522) 6302 0 R (HD.5523) 6303 0 R (HD.5524) 6304 0 R (HD.5525) 6305 0 R (HD.5526) 6306 0 R (HD.5527) 6307 0 R (HD.5528) 6308 0 R (HD.5529) 6309 0 R (HD.553) 848 0 R (HD.5530) 6310 0 R (HD.5531) 6311 0 R (HD.5532) 6312 0 R ] /Limits [ (HD.5504) (HD.5532) ] >>
+endobj
+11906 0 obj
+<< /Names [ (HD.5533) 6313 0 R (HD.5534) 6314 0 R (HD.5535) 6315 0 R (HD.5536) 6316 0 R (HD.5537) 6317 0 R (HD.5538) 6318 0 R (HD.5539) 6319 0 R (HD.554) 849 0 R (HD.5540) 6320 0 R (HD.5541) 6321 0 R (HD.5542) 6322 0 R (HD.5543) 6323 0 R (HD.5544) 6324 0 R (HD.5545) 6325 0 R (HD.5546) 6326 0 R (HD.5547) 6327 0 R (HD.5548) 6328 0 R (HD.5549) 6329 0 R (HD.555) 850 0 R (HD.5550) 6330 0 R (HD.5551) 6331 0 R (HD.5552) 6332 0 R (HD.5553) 6333 0 R (HD.5554) 6339 0 R (HD.5555) 6340 0 R (HD.5556) 6341 0 R (HD.5557) 6342 0 R (HD.5558) 6343 0 R (HD.5559) 6344 0 R (HD.556) 851 0 R (HD.5560) 6345 0 R (HD.5561) 6346 0 R ] /Limits [ (HD.5533) (HD.5561) ] >>
+endobj
+11907 0 obj
+<< /Names [ (HD.5562) 6347 0 R (HD.5563) 6348 0 R (HD.5564) 6349 0 R (HD.5565) 6350 0 R (HD.5566) 6351 0 R (HD.5567) 6352 0 R (HD.5568) 6353 0 R (HD.5569) 6354 0 R (HD.557) 852 0 R (HD.5570) 6355 0 R (HD.5571) 6356 0 R (HD.5572) 6357 0 R (HD.5573) 6358 0 R (HD.5574) 6359 0 R (HD.5575) 6360 0 R (HD.5576) 6361 0 R (HD.5577) 6362 0 R (HD.5578) 6363 0 R (HD.5579) 6364 0 R (HD.558) 853 0 R (HD.5580) 6365 0 R (HD.5581) 6366 0 R (HD.5582) 6367 0 R (HD.5583) 6368 0 R (HD.5584) 6369 0 R (HD.5585) 6370 0 R (HD.5586) 6371 0 R (HD.5587) 6372 0 R (HD.5588) 6373 0 R (HD.5589) 6374 0 R (HD.559) 854 0 R (HD.5590) 6375 0 R ] /Limits [ (HD.5562) (HD.5590) ] >>
+endobj
+11908 0 obj
+<< /Names [ (HD.5591) 6376 0 R (HD.5592) 6377 0 R (HD.5593) 6378 0 R (HD.5594) 6379 0 R (HD.5595) 6380 0 R (HD.5596) 6381 0 R (HD.5597) 6382 0 R (HD.5598) 6383 0 R (HD.5599) 6384 0 R (HD.56) 251 0 R (HD.560) 855 0 R (HD.5600) 6389 0 R (HD.5601) 6390 0 R (HD.5602) 6391 0 R (HD.5603) 6392 0 R (HD.5604) 6393 0 R (HD.5605) 6394 0 R (HD.5606) 6395 0 R (HD.5607) 6396 0 R (HD.5608) 6397 0 R (HD.5609) 6398 0 R (HD.561) 856 0 R (HD.5610) 6399 0 R (HD.5611) 6400 0 R (HD.5612) 6401 0 R (HD.5613) 6402 0 R (HD.5614) 6403 0 R (HD.5615) 6404 0 R (HD.5616) 6405 0 R (HD.5617) 6406 0 R (HD.5618) 6407 0 R (HD.5619) 6408 0 R ] /Limits [ (HD.5591) (HD.5619) ] >>
+endobj
+11909 0 obj
+<< /Names [ (HD.562) 857 0 R (HD.5620) 6409 0 R (HD.5621) 6410 0 R (HD.5622) 6411 0 R (HD.5623) 6412 0 R (HD.5624) 6413 0 R (HD.5625) 6414 0 R (HD.5626) 6415 0 R (HD.5627) 6416 0 R (HD.5628) 6417 0 R (HD.5629) 6418 0 R (HD.563) 858 0 R (HD.5630) 6419 0 R (HD.5631) 6420 0 R (HD.5632) 6421 0 R (HD.5633) 6422 0 R (HD.5634) 6423 0 R (HD.5635) 6424 0 R (HD.5636) 6425 0 R (HD.5637) 6426 0 R (HD.5638) 6427 0 R (HD.5639) 6428 0 R (HD.564) 859 0 R (HD.5640) 6429 0 R (HD.5641) 6430 0 R (HD.5642) 6431 0 R (HD.5643) 6432 0 R (HD.5644) 6433 0 R (HD.5645) 6434 0 R (HD.5646) 6435 0 R (HD.5647) 6436 0 R (HD.5648) 6437 0 R ] /Limits [ (HD.562) (HD.5648) ] >>
+endobj
+11910 0 obj
+<< /Names [ (HD.5649) 6442 0 R (HD.565) 860 0 R (HD.5650) 6443 0 R (HD.5651) 6444 0 R (HD.5652) 6445 0 R (HD.5653) 6446 0 R (HD.5654) 6447 0 R (HD.5655) 6448 0 R (HD.5656) 6449 0 R (HD.5657) 6450 0 R (HD.5658) 6451 0 R (HD.5659) 6452 0 R (HD.566) 861 0 R (HD.5660) 6453 0 R (HD.5661) 6454 0 R (HD.5662) 6455 0 R (HD.5663) 6456 0 R (HD.5664) 6457 0 R (HD.5665) 6458 0 R (HD.5666) 6459 0 R (HD.5667) 6460 0 R (HD.5668) 6461 0 R (HD.5669) 6462 0 R (HD.567) 862 0 R (HD.5670) 6463 0 R (HD.5671) 6464 0 R (HD.5672) 6465 0 R (HD.5673) 6466 0 R (HD.5674) 6467 0 R (HD.5675) 6468 0 R (HD.5676) 6469 0 R (HD.5677) 6470 0 R ] /Limits [ (HD.5649) (HD.5677) ] >>
+endobj
+11911 0 obj
+<< /Names [ (HD.5678) 6471 0 R (HD.5679) 6472 0 R (HD.568) 863 0 R (HD.5680) 6473 0 R (HD.5681) 6474 0 R (HD.5682) 6475 0 R (HD.5683) 6476 0 R (HD.5684) 6477 0 R (HD.5685) 6478 0 R (HD.5686) 6479 0 R (HD.5687) 6480 0 R (HD.5688) 6481 0 R (HD.5689) 6486 0 R (HD.569) 864 0 R (HD.5690) 6487 0 R (HD.5691) 6488 0 R (HD.5692) 6489 0 R (HD.5693) 6490 0 R (HD.5694) 6491 0 R (HD.5695) 6492 0 R (HD.5696) 6493 0 R (HD.5697) 6494 0 R (HD.5698) 6495 0 R (HD.5699) 6496 0 R (HD.57) 252 0 R (HD.570) 865 0 R (HD.5700) 6497 0 R (HD.5701) 6498 0 R (HD.5702) 6499 0 R (HD.5703) 6500 0 R (HD.5704) 6501 0 R (HD.5705) 6502 0 R ] /Limits [ (HD.5678) (HD.5705) ] >>
+endobj
+11912 0 obj
+<< /Names [ (HD.5706) 6503 0 R (HD.5707) 6504 0 R (HD.5708) 6505 0 R (HD.5709) 6506 0 R (HD.571) 866 0 R (HD.5710) 6507 0 R (HD.5711) 6508 0 R (HD.5712) 6509 0 R (HD.5713) 6510 0 R (HD.5714) 6511 0 R (HD.5715) 6512 0 R (HD.5716) 6513 0 R (HD.5717) 6514 0 R (HD.5718) 6515 0 R (HD.5719) 6516 0 R (HD.572) 867 0 R (HD.5720) 6517 0 R (HD.5721) 6518 0 R (HD.5722) 6519 0 R (HD.5723) 6520 0 R (HD.5724) 6521 0 R (HD.5725) 6522 0 R (HD.5726) 6523 0 R (HD.5727) 6524 0 R (HD.5728) 6525 0 R (HD.5729) 6526 0 R (HD.573) 868 0 R (HD.5730) 6527 0 R (HD.5731) 6528 0 R (HD.5732) 6529 0 R (HD.5733) 6530 0 R (HD.5734) 6531 0 R ] /Limits [ (HD.5706) (HD.5734) ] >>
+endobj
+11913 0 obj
+<< /Names [ (HD.5735) 6532 0 R (HD.5736) 6533 0 R (HD.5737) 6534 0 R (HD.5738) 6535 0 R (HD.5739) 6540 0 R (HD.574) 869 0 R (HD.5740) 6541 0 R (HD.5741) 6542 0 R (HD.5742) 6543 0 R (HD.5743) 6544 0 R (HD.5744) 6545 0 R (HD.5745) 6546 0 R (HD.5746) 6547 0 R (HD.5747) 6548 0 R (HD.5748) 6549 0 R (HD.5749) 6550 0 R (HD.575) 870 0 R (HD.5750) 6551 0 R (HD.5751) 6552 0 R (HD.5752) 6553 0 R (HD.5753) 6554 0 R (HD.5754) 6555 0 R (HD.5755) 6556 0 R (HD.5756) 6557 0 R (HD.5757) 6558 0 R (HD.5758) 6559 0 R (HD.5759) 6560 0 R (HD.576) 876 0 R (HD.5760) 6561 0 R (HD.5761) 6562 0 R (HD.5762) 6563 0 R (HD.5763) 6564 0 R ] /Limits [ (HD.5735) (HD.5763) ] >>
+endobj
+11914 0 obj
+<< /Names [ (HD.5764) 6565 0 R (HD.5765) 6566 0 R (HD.5766) 6567 0 R (HD.5767) 6568 0 R (HD.5768) 6569 0 R (HD.5769) 6570 0 R (HD.577) 877 0 R (HD.5770) 6571 0 R (HD.5771) 6572 0 R (HD.5772) 6573 0 R (HD.5773) 6574 0 R (HD.5774) 6575 0 R (HD.5775) 6576 0 R (HD.5776) 6577 0 R (HD.5777) 6578 0 R (HD.5778) 6579 0 R (HD.5779) 6584 0 R (HD.578) 878 0 R (HD.5780) 6585 0 R (HD.5781) 6586 0 R (HD.5782) 6587 0 R (HD.5783) 6588 0 R (HD.5784) 6589 0 R (HD.5785) 6590 0 R (HD.5786) 6591 0 R (HD.5787) 6592 0 R (HD.5788) 6593 0 R (HD.5789) 6594 0 R (HD.579) 879 0 R (HD.5790) 6595 0 R (HD.5791) 6596 0 R (HD.5792) 6597 0 R ] /Limits [ (HD.5764) (HD.5792) ] >>
+endobj
+11915 0 obj
+<< /Names [ (HD.5793) 6598 0 R (HD.5794) 6599 0 R (HD.5795) 6600 0 R (HD.5796) 6601 0 R (HD.5797) 6602 0 R (HD.5798) 6603 0 R (HD.5799) 6604 0 R (HD.58) 253 0 R (HD.580) 880 0 R (HD.5800) 6605 0 R (HD.5801) 6606 0 R (HD.5802) 6607 0 R (HD.5803) 6608 0 R (HD.5804) 6609 0 R (HD.5805) 6610 0 R (HD.5806) 6611 0 R (HD.5807) 6612 0 R (HD.5808) 6613 0 R (HD.5809) 6614 0 R (HD.581) 881 0 R (HD.5810) 6615 0 R (HD.5811) 6616 0 R (HD.5812) 6617 0 R (HD.5813) 6618 0 R (HD.5814) 6619 0 R (HD.5815) 6620 0 R (HD.5816) 6621 0 R (HD.5817) 6622 0 R (HD.5818) 6623 0 R (HD.5819) 6624 0 R (HD.582) 882 0 R (HD.5820) 6625 0 R ] /Limits [ (HD.5793) (HD.5820) ] >>
+endobj
+11916 0 obj
+<< /Names [ (HD.5821) 6626 0 R (HD.5822) 6627 0 R (HD.5823) 6628 0 R (HD.5824) 6629 0 R (HD.5825) 6630 0 R (HD.5826) 6631 0 R (HD.5827) 6632 0 R (HD.5828) 6633 0 R (HD.5829) 6634 0 R (HD.583) 883 0 R (HD.5830) 6635 0 R (HD.5831) 6636 0 R (HD.5832) 6637 0 R (HD.5833) 6638 0 R (HD.5834) 6643 0 R (HD.5835) 6644 0 R (HD.5836) 6645 0 R (HD.5837) 6646 0 R (HD.5838) 6647 0 R (HD.5839) 6648 0 R (HD.584) 884 0 R (HD.5840) 6649 0 R (HD.5841) 6650 0 R (HD.5842) 6651 0 R (HD.5843) 6652 0 R (HD.5844) 6653 0 R (HD.5845) 6654 0 R (HD.5846) 6655 0 R (HD.5847) 6656 0 R (HD.5848) 6657 0 R (HD.5849) 6658 0 R (HD.585) 885 0 R ] /Limits [ (HD.5821) (HD.585) ] >>
+endobj
+11917 0 obj
+<< /Names [ (HD.5850) 6659 0 R (HD.5851) 6660 0 R (HD.5852) 6661 0 R (HD.5853) 6662 0 R (HD.5854) 6663 0 R (HD.5855) 6664 0 R (HD.5856) 6665 0 R (HD.5857) 6666 0 R (HD.5858) 6667 0 R (HD.5859) 6668 0 R (HD.586) 886 0 R (HD.5860) 6669 0 R (HD.5861) 6670 0 R (HD.5862) 6671 0 R (HD.5863) 6672 0 R (HD.5864) 6673 0 R (HD.5865) 6674 0 R (HD.5866) 6675 0 R (HD.5867) 6676 0 R (HD.5868) 6677 0 R (HD.5869) 6678 0 R (HD.587) 887 0 R (HD.5870) 6679 0 R (HD.5871) 6680 0 R (HD.5872) 6681 0 R (HD.5873) 6682 0 R (HD.5874) 6683 0 R (HD.5875) 6684 0 R (HD.5876) 6685 0 R (HD.5877) 6686 0 R (HD.5878) 6687 0 R (HD.5879) 6688 0 R ] /Limits [ (HD.5850) (HD.5879) ] >>
+endobj
+11918 0 obj
+<< /Names [ (HD.588) 888 0 R (HD.5880) 6689 0 R (HD.5881) 6690 0 R (HD.5882) 6691 0 R (HD.5883) 6692 0 R (HD.5884) 6693 0 R (HD.5885) 6698 0 R (HD.5886) 6699 0 R (HD.5887) 6700 0 R (HD.5888) 6701 0 R (HD.5889) 6702 0 R (HD.589) 889 0 R (HD.5890) 6703 0 R (HD.5891) 6704 0 R (HD.5892) 6705 0 R (HD.5893) 6706 0 R (HD.5894) 6707 0 R (HD.5895) 6708 0 R (HD.5896) 6709 0 R (HD.5897) 6710 0 R (HD.5898) 6711 0 R (HD.5899) 6712 0 R (HD.59) 258 0 R (HD.590) 890 0 R (HD.5900) 6713 0 R (HD.5901) 6714 0 R (HD.5902) 6715 0 R (HD.5903) 6716 0 R (HD.5904) 6717 0 R (HD.5905) 6718 0 R (HD.5906) 6719 0 R (HD.5907) 6720 0 R ] /Limits [ (HD.588) (HD.5907) ] >>
+endobj
+11919 0 obj
+<< /Names [ (HD.5908) 6721 0 R (HD.5909) 6722 0 R (HD.591) 891 0 R (HD.5910) 6723 0 R (HD.5911) 6724 0 R (HD.5912) 6725 0 R (HD.5913) 6726 0 R (HD.5914) 6727 0 R (HD.5915) 6728 0 R (HD.5916) 6729 0 R (HD.5917) 6730 0 R (HD.5918) 6731 0 R (HD.5919) 6732 0 R (HD.592) 892 0 R (HD.5920) 6733 0 R (HD.5921) 6734 0 R (HD.5922) 6735 0 R (HD.5923) 6736 0 R (HD.5924) 6737 0 R (HD.5925) 6738 0 R (HD.5926) 6739 0 R (HD.5927) 6740 0 R (HD.5928) 6741 0 R (HD.5929) 6742 0 R (HD.593) 893 0 R (HD.5930) 6747 0 R (HD.5931) 6748 0 R (HD.5932) 6749 0 R (HD.5933) 6750 0 R (HD.5934) 6751 0 R (HD.5935) 6752 0 R (HD.5936) 6753 0 R ] /Limits [ (HD.5908) (HD.5936) ] >>
+endobj
+11920 0 obj
+<< /Names [ (HD.5937) 6754 0 R (HD.5938) 6755 0 R (HD.5939) 6756 0 R (HD.594) 894 0 R (HD.5940) 6757 0 R (HD.5941) 6758 0 R (HD.5942) 6759 0 R (HD.5943) 6760 0 R (HD.5944) 6761 0 R (HD.5945) 6762 0 R (HD.5946) 6763 0 R (HD.5947) 6764 0 R (HD.5948) 6765 0 R (HD.5949) 6766 0 R (HD.595) 895 0 R (HD.5950) 6767 0 R (HD.5951) 6768 0 R (HD.5952) 6769 0 R (HD.5953) 6770 0 R (HD.5954) 6771 0 R (HD.5955) 6772 0 R (HD.5956) 6773 0 R (HD.5957) 6774 0 R (HD.5958) 6775 0 R (HD.5959) 6776 0 R (HD.596) 896 0 R (HD.5960) 6777 0 R (HD.5961) 6778 0 R (HD.5962) 6779 0 R (HD.5963) 6784 0 R (HD.5964) 6785 0 R (HD.5965) 6786 0 R ] /Limits [ (HD.5937) (HD.5965) ] >>
+endobj
+11921 0 obj
+<< /Names [ (HD.5966) 6787 0 R (HD.5967) 6788 0 R (HD.5968) 6789 0 R (HD.5969) 6790 0 R (HD.597) 897 0 R (HD.5970) 6791 0 R (HD.5971) 6792 0 R (HD.5972) 6793 0 R (HD.5973) 6794 0 R (HD.5974) 6795 0 R (HD.5975) 6796 0 R (HD.5976) 6797 0 R (HD.5977) 6798 0 R (HD.5978) 6799 0 R (HD.5979) 6800 0 R (HD.598) 898 0 R (HD.5980) 6801 0 R (HD.5981) 6802 0 R (HD.5982) 6803 0 R (HD.5983) 6804 0 R (HD.5984) 6805 0 R (HD.5985) 6806 0 R (HD.5986) 6807 0 R (HD.5987) 6808 0 R (HD.5988) 6809 0 R (HD.5989) 6810 0 R (HD.599) 899 0 R (HD.5990) 6811 0 R (HD.5991) 6812 0 R (HD.5992) 6813 0 R (HD.5993) 6814 0 R (HD.5994) 6815 0 R ] /Limits [ (HD.5966) (HD.5994) ] >>
+endobj
+11922 0 obj
+<< /Names [ (HD.5995) 6816 0 R (HD.5996) 6817 0 R (HD.5997) 6818 0 R (HD.5998) 6819 0 R (HD.5999) 6820 0 R (HD.6) 194 0 R (HD.60) 259 0 R (HD.600) 900 0 R (HD.6000) 6826 0 R (HD.6001) 6827 0 R (HD.6002) 6828 0 R (HD.6003) 6829 0 R (HD.6004) 6830 0 R (HD.6005) 6831 0 R (HD.6006) 6832 0 R (HD.6007) 6833 0 R (HD.6008) 6834 0 R (HD.6009) 6835 0 R (HD.601) 901 0 R (HD.6010) 6836 0 R (HD.6011) 6837 0 R (HD.6012) 6838 0 R (HD.6013) 6839 0 R (HD.6014) 6840 0 R (HD.6015) 6841 0 R (HD.6016) 6842 0 R (HD.6017) 6843 0 R (HD.6018) 6844 0 R (HD.6019) 6845 0 R (HD.602) 902 0 R (HD.6020) 6846 0 R (HD.6021) 6847 0 R ] /Limits [ (HD.5995) (HD.6021) ] >>
+endobj
+11923 0 obj
+<< /Names [ (HD.6022) 6848 0 R (HD.6023) 6849 0 R (HD.6024) 6850 0 R (HD.6025) 6851 0 R (HD.6026) 6852 0 R (HD.6027) 6853 0 R (HD.6028) 6854 0 R (HD.6029) 6855 0 R (HD.603) 903 0 R (HD.6030) 6856 0 R (HD.6031) 6857 0 R (HD.6032) 6858 0 R (HD.6033) 6859 0 R (HD.6034) 6860 0 R (HD.6035) 6861 0 R (HD.6036) 6862 0 R (HD.6037) 6867 0 R (HD.6038) 6868 0 R (HD.6039) 6869 0 R (HD.604) 904 0 R (HD.6040) 6870 0 R (HD.6041) 6871 0 R (HD.6042) 6872 0 R (HD.6043) 6873 0 R (HD.6044) 6874 0 R (HD.6045) 6875 0 R (HD.6046) 6876 0 R (HD.6047) 6877 0 R (HD.6048) 6878 0 R (HD.6049) 6879 0 R (HD.605) 905 0 R (HD.6050) 6880 0 R ] /Limits [ (HD.6022) (HD.6050) ] >>
+endobj
+11924 0 obj
+<< /Names [ (HD.6051) 6881 0 R (HD.6052) 6882 0 R (HD.6053) 6883 0 R (HD.6054) 6884 0 R (HD.6055) 6885 0 R (HD.6056) 6886 0 R (HD.6057) 6887 0 R (HD.6058) 6888 0 R (HD.6059) 6889 0 R (HD.606) 906 0 R (HD.6060) 6890 0 R (HD.6061) 6891 0 R (HD.6062) 6892 0 R (HD.6063) 6893 0 R (HD.6064) 6894 0 R (HD.6065) 6895 0 R (HD.6066) 6896 0 R (HD.6067) 6897 0 R (HD.6068) 6898 0 R (HD.6069) 6899 0 R (HD.607) 907 0 R (HD.6070) 6900 0 R (HD.6071) 6901 0 R (HD.6072) 6902 0 R (HD.6073) 6907 0 R (HD.6074) 6908 0 R (HD.6075) 6909 0 R (HD.6076) 6910 0 R (HD.6077) 6911 0 R (HD.6078) 6912 0 R (HD.6079) 6913 0 R (HD.608) 908 0 R ] /Limits [ (HD.6051) (HD.608) ] >>
+endobj
+11925 0 obj
+<< /Names [ (HD.6080) 6914 0 R (HD.6081) 6915 0 R (HD.6082) 6916 0 R (HD.6083) 6917 0 R (HD.6084) 6918 0 R (HD.6085) 6919 0 R (HD.6086) 6920 0 R (HD.6087) 6921 0 R (HD.6088) 6922 0 R (HD.6089) 6923 0 R (HD.609) 909 0 R (HD.6090) 6924 0 R (HD.6091) 6925 0 R (HD.6092) 6926 0 R (HD.6093) 6927 0 R (HD.6094) 6928 0 R (HD.6095) 6929 0 R (HD.6096) 6930 0 R (HD.6097) 6931 0 R (HD.6098) 6932 0 R (HD.6099) 6933 0 R (HD.61) 260 0 R (HD.610) 910 0 R (HD.6100) 6934 0 R (HD.6101) 6935 0 R (HD.6102) 6936 0 R (HD.6103) 6937 0 R (HD.6104) 6938 0 R (HD.6105) 6939 0 R (HD.6106) 6940 0 R (HD.6107) 6941 0 R (HD.6108) 6942 0 R ] /Limits [ (HD.6080) (HD.6108) ] >>
+endobj
+11926 0 obj
+<< /Names [ (HD.6109) 6943 0 R (HD.611) 911 0 R (HD.6110) 6944 0 R (HD.6111) 6945 0 R (HD.6112) 6946 0 R (HD.6113) 6947 0 R (HD.6114) 6948 0 R (HD.6115) 6949 0 R (HD.6116) 6954 0 R (HD.6117) 6955 0 R (HD.6118) 6956 0 R (HD.6119) 6957 0 R (HD.612) 912 0 R (HD.6120) 6958 0 R (HD.6121) 6959 0 R (HD.6122) 6960 0 R (HD.6123) 6961 0 R (HD.6124) 6962 0 R (HD.6125) 6963 0 R (HD.6126) 6964 0 R (HD.6127) 6965 0 R (HD.6128) 6966 0 R (HD.6129) 6967 0 R (HD.613) 913 0 R (HD.6130) 6968 0 R (HD.6131) 6969 0 R (HD.6132) 6970 0 R (HD.6133) 6971 0 R (HD.6134) 6972 0 R (HD.6135) 6973 0 R (HD.6136) 6974 0 R (HD.6137) 6975 0 R ] /Limits [ (HD.6109) (HD.6137) ] >>
+endobj
+11927 0 obj
+<< /Names [ (HD.6138) 6976 0 R (HD.6139) 6977 0 R (HD.614) 914 0 R (HD.6140) 6978 0 R (HD.6141) 6979 0 R (HD.6142) 6980 0 R (HD.6143) 6981 0 R (HD.6144) 6982 0 R (HD.6145) 6983 0 R (HD.6146) 6984 0 R (HD.6147) 6985 0 R (HD.6148) 6986 0 R (HD.6149) 6987 0 R (HD.615) 915 0 R (HD.6150) 6988 0 R (HD.6151) 6989 0 R (HD.6152) 6990 0 R (HD.6153) 6991 0 R (HD.6154) 6992 0 R (HD.6155) 6993 0 R (HD.6156) 6994 0 R (HD.6157) 6995 0 R (HD.6158) 6996 0 R (HD.6159) 6997 0 R (HD.616) 916 0 R (HD.6160) 6998 0 R (HD.6161) 6999 0 R (HD.6162) 7000 0 R (HD.6163) 7001 0 R (HD.6164) 7002 0 R (HD.6165) 7003 0 R (HD.6166) 7004 0 R ] /Limits [ (HD.6138) (HD.6166) ] >>
+endobj
+11928 0 obj
+<< /Names [ (HD.6167) 7005 0 R (HD.6168) 7006 0 R (HD.6169) 7007 0 R (HD.617) 917 0 R (HD.6170) 7008 0 R (HD.6171) 7009 0 R (HD.6172) 7010 0 R (HD.6173) 7015 0 R (HD.6174) 7016 0 R (HD.6175) 7017 0 R (HD.6176) 7018 0 R (HD.6177) 7019 0 R (HD.6178) 7020 0 R (HD.6179) 7021 0 R (HD.618) 918 0 R (HD.6180) 7022 0 R (HD.6181) 7023 0 R (HD.6182) 7024 0 R (HD.6183) 7025 0 R (HD.6184) 7026 0 R (HD.6185) 7027 0 R (HD.6186) 7028 0 R (HD.6187) 7029 0 R (HD.6188) 7030 0 R (HD.6189) 7031 0 R (HD.619) 919 0 R (HD.6190) 7032 0 R (HD.6191) 7033 0 R (HD.6192) 7034 0 R (HD.6193) 7035 0 R (HD.6194) 7036 0 R (HD.6195) 7037 0 R ] /Limits [ (HD.6167) (HD.6195) ] >>
+endobj
+11929 0 obj
+<< /Names [ (HD.6196) 7038 0 R (HD.6197) 7039 0 R (HD.6198) 7040 0 R (HD.6199) 7041 0 R (HD.62) 261 0 R (HD.620) 924 0 R (HD.6200) 7042 0 R (HD.6201) 7043 0 R (HD.6202) 7044 0 R (HD.6203) 7045 0 R (HD.6204) 7046 0 R (HD.6205) 7047 0 R (HD.6206) 7048 0 R (HD.6207) 7049 0 R (HD.6208) 7050 0 R (HD.6209) 7051 0 R (HD.621) 925 0 R (HD.6210) 7052 0 R (HD.6211) 7053 0 R (HD.6212) 7054 0 R (HD.6213) 7055 0 R (HD.6214) 7056 0 R (HD.6215) 7057 0 R (HD.6216) 7058 0 R (HD.6217) 7059 0 R (HD.6218) 7060 0 R (HD.6219) 7061 0 R (HD.622) 926 0 R (HD.6220) 7062 0 R (HD.6221) 7063 0 R (HD.6222) 7064 0 R (HD.6223) 7065 0 R ] /Limits [ (HD.6196) (HD.6223) ] >>
+endobj
+11930 0 obj
+<< /Names [ (HD.6224) 7066 0 R (HD.6225) 7067 0 R (HD.6226) 7068 0 R (HD.6227) 7069 0 R (HD.6228) 7070 0 R (HD.6229) 7071 0 R (HD.623) 927 0 R (HD.6230) 7072 0 R (HD.6231) 7077 0 R (HD.6232) 7078 0 R (HD.6233) 7079 0 R (HD.6234) 7080 0 R (HD.6235) 7081 0 R (HD.6236) 7082 0 R (HD.6237) 7083 0 R (HD.6238) 7084 0 R (HD.6239) 7085 0 R (HD.624) 928 0 R (HD.6240) 7086 0 R (HD.6241) 7087 0 R (HD.6242) 7088 0 R (HD.6243) 7089 0 R (HD.6244) 7090 0 R (HD.6245) 7091 0 R (HD.6246) 7092 0 R (HD.6247) 7093 0 R (HD.6248) 7094 0 R (HD.6249) 7095 0 R (HD.625) 929 0 R (HD.6250) 7096 0 R (HD.6251) 7097 0 R (HD.6252) 7098 0 R ] /Limits [ (HD.6224) (HD.6252) ] >>
+endobj
+11931 0 obj
+<< /Names [ (HD.6253) 7099 0 R (HD.6254) 7100 0 R (HD.6255) 7101 0 R (HD.6256) 7102 0 R (HD.6257) 7103 0 R (HD.6258) 7104 0 R (HD.6259) 7105 0 R (HD.626) 930 0 R (HD.6260) 7106 0 R (HD.6261) 7107 0 R (HD.6262) 7108 0 R (HD.6263) 7109 0 R (HD.6264) 7110 0 R (HD.6265) 7111 0 R (HD.6266) 7112 0 R (HD.6267) 7113 0 R (HD.6268) 7114 0 R (HD.6269) 7115 0 R (HD.627) 931 0 R (HD.6270) 7116 0 R (HD.6271) 7117 0 R (HD.6272) 7118 0 R (HD.6273) 7119 0 R (HD.6274) 7120 0 R (HD.6275) 7121 0 R (HD.6276) 7126 0 R (HD.6277) 7127 0 R (HD.6278) 7128 0 R (HD.6279) 7129 0 R (HD.628) 932 0 R (HD.6280) 7130 0 R (HD.6281) 7131 0 R ] /Limits [ (HD.6253) (HD.6281) ] >>
+endobj
+11932 0 obj
+<< /Names [ (HD.6282) 7132 0 R (HD.6283) 7133 0 R (HD.6284) 7134 0 R (HD.6285) 7135 0 R (HD.6286) 7136 0 R (HD.6287) 7137 0 R (HD.6288) 7138 0 R (HD.6289) 7139 0 R (HD.629) 933 0 R (HD.6290) 7140 0 R (HD.6291) 7141 0 R (HD.6292) 7142 0 R (HD.6293) 7143 0 R (HD.6294) 7144 0 R (HD.6295) 7145 0 R (HD.6296) 7146 0 R (HD.6297) 7147 0 R (HD.6298) 7148 0 R (HD.6299) 7149 0 R (HD.63) 262 0 R (HD.630) 934 0 R (HD.6300) 7150 0 R (HD.6301) 7151 0 R (HD.6302) 7152 0 R (HD.6303) 7153 0 R (HD.6304) 7154 0 R (HD.6305) 7155 0 R (HD.6306) 7156 0 R (HD.6307) 7157 0 R (HD.6308) 7158 0 R (HD.6309) 7159 0 R (HD.631) 935 0 R ] /Limits [ (HD.6282) (HD.631) ] >>
+endobj
+11933 0 obj
+<< /Names [ (HD.6310) 7160 0 R (HD.6311) 7161 0 R (HD.6312) 7162 0 R (HD.6313) 7163 0 R (HD.6314) 7164 0 R (HD.6315) 7165 0 R (HD.6316) 7166 0 R (HD.6317) 7167 0 R (HD.6318) 7168 0 R (HD.6319) 7169 0 R (HD.632) 936 0 R (HD.6320) 7170 0 R (HD.6321) 7171 0 R (HD.6322) 7172 0 R (HD.6323) 7173 0 R (HD.6324) 7174 0 R (HD.6325) 7175 0 R (HD.6326) 7176 0 R (HD.6327) 7177 0 R (HD.6328) 7182 0 R (HD.6329) 7183 0 R (HD.633) 937 0 R (HD.6330) 7184 0 R (HD.6331) 7185 0 R (HD.6332) 7186 0 R (HD.6333) 7187 0 R (HD.6334) 7188 0 R (HD.6335) 7189 0 R (HD.6336) 7190 0 R (HD.6337) 7191 0 R (HD.6338) 7192 0 R (HD.6339) 7193 0 R ] /Limits [ (HD.6310) (HD.6339) ] >>
+endobj
+11934 0 obj
+<< /Names [ (HD.634) 938 0 R (HD.6340) 7194 0 R (HD.6341) 7195 0 R (HD.6342) 7196 0 R (HD.6343) 7197 0 R (HD.6344) 7198 0 R (HD.6345) 7199 0 R (HD.6346) 7200 0 R (HD.6347) 7201 0 R (HD.6348) 7202 0 R (HD.6349) 7203 0 R (HD.635) 939 0 R (HD.6350) 7204 0 R (HD.6351) 7205 0 R (HD.6352) 7206 0 R (HD.6353) 7207 0 R (HD.6354) 7208 0 R (HD.6355) 7209 0 R (HD.6356) 7210 0 R (HD.6357) 7211 0 R (HD.6358) 7212 0 R (HD.6359) 7213 0 R (HD.636) 940 0 R (HD.6360) 7214 0 R (HD.6361) 7215 0 R (HD.6362) 7216 0 R (HD.6363) 7217 0 R (HD.6364) 7218 0 R (HD.6365) 7219 0 R (HD.6366) 7220 0 R (HD.6367) 7221 0 R (HD.6368) 7222 0 R ] /Limits [ (HD.634) (HD.6368) ] >>
+endobj
+11935 0 obj
+<< /Names [ (HD.6369) 7223 0 R (HD.637) 941 0 R (HD.6370) 7224 0 R (HD.6371) 7225 0 R (HD.6372) 7226 0 R (HD.6373) 7227 0 R (HD.6374) 7228 0 R (HD.6375) 7229 0 R (HD.6376) 7230 0 R (HD.6377) 7231 0 R (HD.6378) 7232 0 R (HD.6379) 7233 0 R (HD.638) 942 0 R (HD.6380) 7234 0 R (HD.6381) 7235 0 R (HD.6382) 7236 0 R (HD.6383) 7237 0 R (HD.6384) 7238 0 R (HD.6385) 7239 0 R (HD.6386) 7240 0 R (HD.6387) 7245 0 R (HD.6388) 7246 0 R (HD.6389) 7247 0 R (HD.639) 943 0 R (HD.6390) 7248 0 R (HD.6391) 7249 0 R (HD.6392) 7250 0 R (HD.6393) 7251 0 R (HD.6394) 7252 0 R (HD.6395) 7253 0 R (HD.6396) 7254 0 R (HD.6397) 7255 0 R ] /Limits [ (HD.6369) (HD.6397) ] >>
+endobj
+11936 0 obj
+<< /Names [ (HD.6398) 7256 0 R (HD.6399) 7257 0 R (HD.64) 263 0 R (HD.640) 944 0 R (HD.6400) 7258 0 R (HD.6401) 7259 0 R (HD.6402) 7260 0 R (HD.6403) 7261 0 R (HD.6404) 7262 0 R (HD.6405) 7263 0 R (HD.6406) 7264 0 R (HD.6407) 7265 0 R (HD.6408) 7266 0 R (HD.6409) 7267 0 R (HD.641) 945 0 R (HD.6410) 7268 0 R (HD.6411) 7269 0 R (HD.6412) 7270 0 R (HD.6413) 7271 0 R (HD.6414) 7272 0 R (HD.6415) 7273 0 R (HD.6416) 7274 0 R (HD.6417) 7275 0 R (HD.6418) 7276 0 R (HD.6419) 7277 0 R (HD.642) 946 0 R (HD.6420) 7278 0 R (HD.6421) 7279 0 R (HD.6422) 7280 0 R (HD.6423) 7281 0 R (HD.6424) 7282 0 R (HD.6425) 7283 0 R ] /Limits [ (HD.6398) (HD.6425) ] >>
+endobj
+11937 0 obj
+<< /Names [ (HD.6426) 7284 0 R (HD.6427) 7285 0 R (HD.6428) 7290 0 R (HD.6429) 7291 0 R (HD.643) 947 0 R (HD.6430) 7292 0 R (HD.6431) 7293 0 R (HD.6432) 7294 0 R (HD.6433) 7295 0 R (HD.6434) 7296 0 R (HD.6435) 7297 0 R (HD.6436) 7298 0 R (HD.6437) 7299 0 R (HD.6438) 7300 0 R (HD.6439) 7301 0 R (HD.644) 948 0 R (HD.6440) 7302 0 R (HD.6441) 7303 0 R (HD.6442) 7304 0 R (HD.6443) 7305 0 R (HD.6444) 7306 0 R (HD.6445) 7307 0 R (HD.6446) 7308 0 R (HD.6447) 7309 0 R (HD.6448) 7310 0 R (HD.6449) 7311 0 R (HD.645) 949 0 R (HD.6450) 7312 0 R (HD.6451) 7313 0 R (HD.6452) 7314 0 R (HD.6453) 7315 0 R (HD.6454) 7316 0 R ] /Limits [ (HD.6426) (HD.6454) ] >>
+endobj
+11938 0 obj
+<< /Names [ (HD.6455) 7317 0 R (HD.6456) 7318 0 R (HD.6457) 7319 0 R (HD.6458) 7320 0 R (HD.6459) 7321 0 R (HD.646) 950 0 R (HD.6460) 7322 0 R (HD.6461) 7323 0 R (HD.6462) 7324 0 R (HD.6463) 7325 0 R (HD.6464) 7326 0 R (HD.6465) 7327 0 R (HD.6466) 7328 0 R (HD.6467) 7329 0 R (HD.6468) 7330 0 R (HD.6469) 7331 0 R (HD.647) 951 0 R (HD.6470) 7332 0 R (HD.6471) 7333 0 R (HD.6472) 7334 0 R (HD.6473) 7335 0 R (HD.6474) 7336 0 R (HD.6475) 7342 0 R (HD.6476) 7343 0 R (HD.6477) 7344 0 R (HD.6478) 7345 0 R (HD.6479) 7346 0 R (HD.648) 952 0 R (HD.6480) 7347 0 R (HD.6481) 7348 0 R (HD.6482) 7349 0 R (HD.6483) 7350 0 R ] /Limits [ (HD.6455) (HD.6483) ] >>
+endobj
+11939 0 obj
+<< /Names [ (HD.6484) 7351 0 R (HD.6485) 7352 0 R (HD.6486) 7353 0 R (HD.6487) 7354 0 R (HD.6488) 7355 0 R (HD.6489) 7356 0 R (HD.649) 953 0 R (HD.6490) 7357 0 R (HD.6491) 7358 0 R (HD.6492) 7359 0 R (HD.6493) 7360 0 R (HD.6494) 7361 0 R (HD.6495) 7362 0 R (HD.6496) 7363 0 R (HD.6497) 7364 0 R (HD.6498) 7365 0 R (HD.6499) 7366 0 R (HD.65) 265 0 R (HD.650) 954 0 R (HD.6500) 7367 0 R (HD.6501) 7368 0 R (HD.6502) 7369 0 R (HD.6503) 7370 0 R (HD.6504) 7371 0 R (HD.6505) 7372 0 R (HD.6506) 7373 0 R (HD.6507) 7374 0 R (HD.6508) 7375 0 R (HD.6509) 7376 0 R (HD.651) 955 0 R (HD.6510) 7377 0 R (HD.6511) 7378 0 R ] /Limits [ (HD.6484) (HD.6511) ] >>
+endobj
+11940 0 obj
+<< /Names [ (HD.6512) 7379 0 R (HD.6513) 7380 0 R (HD.6514) 7381 0 R (HD.6515) 7382 0 R (HD.6516) 7383 0 R (HD.6517) 7384 0 R (HD.6518) 7385 0 R (HD.6519) 7386 0 R (HD.652) 956 0 R (HD.6520) 7387 0 R (HD.6521) 7392 0 R (HD.6522) 7393 0 R (HD.6523) 7394 0 R (HD.6524) 7395 0 R (HD.6525) 7396 0 R (HD.6526) 7397 0 R (HD.6527) 7398 0 R (HD.6528) 7399 0 R (HD.6529) 7400 0 R (HD.653) 957 0 R (HD.6530) 7401 0 R (HD.6531) 7402 0 R (HD.6532) 7403 0 R (HD.6533) 7404 0 R (HD.6534) 7405 0 R (HD.6535) 7406 0 R (HD.6536) 7407 0 R (HD.6537) 7408 0 R (HD.6538) 7409 0 R (HD.6539) 7410 0 R (HD.654) 958 0 R (HD.6540) 7411 0 R ] /Limits [ (HD.6512) (HD.6540) ] >>
+endobj
+11941 0 obj
+<< /Names [ (HD.6541) 7412 0 R (HD.6542) 7413 0 R (HD.6543) 7414 0 R (HD.6544) 7415 0 R (HD.6545) 7416 0 R (HD.6546) 7417 0 R (HD.6547) 7418 0 R (HD.6548) 7419 0 R (HD.6549) 7420 0 R (HD.655) 959 0 R (HD.6550) 7421 0 R (HD.6551) 7422 0 R (HD.6552) 7423 0 R (HD.6553) 7424 0 R (HD.6554) 7425 0 R (HD.6555) 7426 0 R (HD.6556) 7427 0 R (HD.6557) 7428 0 R (HD.6558) 7429 0 R (HD.6559) 7430 0 R (HD.656) 960 0 R (HD.6560) 7431 0 R (HD.6561) 7432 0 R (HD.6562) 7433 0 R (HD.6563) 7434 0 R (HD.6564) 7435 0 R (HD.6565) 7436 0 R (HD.6566) 7437 0 R (HD.6567) 7438 0 R (HD.6568) 7439 0 R (HD.6569) 7440 0 R (HD.657) 961 0 R ] /Limits [ (HD.6541) (HD.657) ] >>
+endobj
+11942 0 obj
+<< /Names [ (HD.6570) 7441 0 R (HD.6571) 7442 0 R (HD.6572) 7447 0 R (HD.6573) 7448 0 R (HD.6574) 7449 0 R (HD.6575) 7450 0 R (HD.6576) 7451 0 R (HD.6577) 7452 0 R (HD.6578) 7453 0 R (HD.6579) 7454 0 R (HD.658) 962 0 R (HD.6580) 7455 0 R (HD.6581) 7456 0 R (HD.6582) 7457 0 R (HD.6583) 7458 0 R (HD.6584) 7459 0 R (HD.6585) 7460 0 R (HD.6586) 7461 0 R (HD.6587) 7462 0 R (HD.6588) 7463 0 R (HD.6589) 7464 0 R (HD.659) 963 0 R (HD.6590) 7465 0 R (HD.6591) 7466 0 R (HD.6592) 7467 0 R (HD.6593) 7468 0 R (HD.6594) 7469 0 R (HD.6595) 7470 0 R (HD.6596) 7471 0 R (HD.6597) 7472 0 R (HD.6598) 7473 0 R (HD.6599) 7474 0 R ] /Limits [ (HD.6570) (HD.6599) ] >>
+endobj
+11943 0 obj
+<< /Names [ (HD.66) 266 0 R (HD.660) 968 0 R (HD.6600) 7475 0 R (HD.6601) 7476 0 R (HD.6602) 7477 0 R (HD.6603) 7478 0 R (HD.6604) 7479 0 R (HD.6605) 7480 0 R (HD.6606) 7481 0 R (HD.6607) 7482 0 R (HD.6608) 7483 0 R (HD.6609) 7484 0 R (HD.661) 969 0 R (HD.6610) 7485 0 R (HD.6611) 7486 0 R (HD.6612) 7487 0 R (HD.6613) 7492 0 R (HD.6614) 7493 0 R (HD.6615) 7494 0 R (HD.6616) 7495 0 R (HD.6617) 7496 0 R (HD.6618) 7497 0 R (HD.6619) 7498 0 R (HD.662) 970 0 R (HD.6620) 7499 0 R (HD.6621) 7500 0 R (HD.6622) 7501 0 R (HD.6623) 7502 0 R (HD.6624) 7503 0 R (HD.6625) 7504 0 R (HD.6626) 7505 0 R (HD.6627) 7506 0 R ] /Limits [ (HD.66) (HD.6627) ] >>
+endobj
+11944 0 obj
+<< /Names [ (HD.6628) 7507 0 R (HD.6629) 7508 0 R (HD.663) 971 0 R (HD.6630) 7509 0 R (HD.6631) 7510 0 R (HD.6632) 7511 0 R (HD.6633) 7512 0 R (HD.6634) 7513 0 R (HD.6635) 7514 0 R (HD.6636) 7515 0 R (HD.6637) 7516 0 R (HD.6638) 7517 0 R (HD.6639) 7518 0 R (HD.664) 972 0 R (HD.6640) 7519 0 R (HD.6641) 7520 0 R (HD.6642) 7521 0 R (HD.6643) 7522 0 R (HD.6644) 7523 0 R (HD.6645) 7524 0 R (HD.6646) 7525 0 R (HD.6647) 7526 0 R (HD.6648) 7527 0 R (HD.6649) 7528 0 R (HD.665) 973 0 R (HD.6650) 7529 0 R (HD.6651) 7530 0 R (HD.6652) 7531 0 R (HD.6653) 7532 0 R (HD.6654) 7533 0 R (HD.6655) 7534 0 R (HD.6656) 7535 0 R ] /Limits [ (HD.6628) (HD.6656) ] >>
+endobj
+11945 0 obj
+<< /Names [ (HD.6657) 7536 0 R (HD.6658) 7537 0 R (HD.6659) 7538 0 R (HD.666) 974 0 R (HD.6660) 7539 0 R (HD.6661) 7540 0 R (HD.6662) 7541 0 R (HD.6663) 7542 0 R (HD.6664) 7543 0 R (HD.6665) 7544 0 R (HD.6666) 7545 0 R (HD.6667) 7546 0 R (HD.6668) 7547 0 R (HD.6669) 7548 0 R (HD.667) 975 0 R (HD.6670) 7553 0 R (HD.6671) 7554 0 R (HD.6672) 7555 0 R (HD.6673) 7556 0 R (HD.6674) 7557 0 R (HD.6675) 7558 0 R (HD.6676) 7559 0 R (HD.6677) 7560 0 R (HD.6678) 7561 0 R (HD.6679) 7562 0 R (HD.668) 976 0 R (HD.6680) 7563 0 R (HD.6681) 7564 0 R (HD.6682) 7565 0 R (HD.6683) 7566 0 R (HD.6684) 7567 0 R (HD.6685) 7568 0 R ] /Limits [ (HD.6657) (HD.6685) ] >>
+endobj
+11946 0 obj
+<< /Names [ (HD.6686) 7569 0 R (HD.6687) 7570 0 R (HD.6688) 7571 0 R (HD.6689) 7572 0 R (HD.669) 977 0 R (HD.6690) 7573 0 R (HD.6691) 7574 0 R (HD.6692) 7575 0 R (HD.6693) 7576 0 R (HD.6694) 7577 0 R (HD.6695) 7578 0 R (HD.6696) 7579 0 R (HD.6697) 7580 0 R (HD.6698) 7581 0 R (HD.6699) 7582 0 R (HD.67) 267 0 R (HD.670) 978 0 R (HD.6700) 7583 0 R (HD.6701) 7584 0 R (HD.6702) 7585 0 R (HD.6703) 7586 0 R (HD.6704) 7587 0 R (HD.6705) 7588 0 R (HD.6706) 7589 0 R (HD.6707) 7590 0 R (HD.6708) 7591 0 R (HD.6709) 7592 0 R (HD.671) 979 0 R (HD.6710) 7593 0 R (HD.6711) 7594 0 R (HD.6712) 7595 0 R (HD.6713) 7596 0 R ] /Limits [ (HD.6686) (HD.6713) ] >>
+endobj
+11947 0 obj
+<< /Names [ (HD.6714) 7597 0 R (HD.6715) 7598 0 R (HD.6716) 7599 0 R (HD.6717) 7600 0 R (HD.6718) 7601 0 R (HD.6719) 7602 0 R (HD.672) 980 0 R (HD.6720) 7603 0 R (HD.6721) 7604 0 R (HD.6722) 7605 0 R (HD.6723) 7606 0 R (HD.6724) 7607 0 R (HD.6725) 7612 0 R (HD.6726) 7613 0 R (HD.6727) 7614 0 R (HD.6728) 7615 0 R (HD.6729) 7616 0 R (HD.673) 981 0 R (HD.6730) 7617 0 R (HD.6731) 7618 0 R (HD.6732) 7619 0 R (HD.6733) 7620 0 R (HD.6734) 7621 0 R (HD.6735) 7622 0 R (HD.6736) 7623 0 R (HD.6737) 7624 0 R (HD.6738) 7625 0 R (HD.6739) 7626 0 R (HD.674) 982 0 R (HD.6740) 7627 0 R (HD.6741) 7628 0 R (HD.6742) 7629 0 R ] /Limits [ (HD.6714) (HD.6742) ] >>
+endobj
+11948 0 obj
+<< /Names [ (HD.6743) 7630 0 R (HD.6744) 7631 0 R (HD.6745) 7632 0 R (HD.6746) 7633 0 R (HD.6747) 7634 0 R (HD.6748) 7635 0 R (HD.6749) 7636 0 R (HD.675) 983 0 R (HD.6750) 7637 0 R (HD.6751) 7638 0 R (HD.6752) 7639 0 R (HD.6753) 7640 0 R (HD.6754) 7641 0 R (HD.6755) 7642 0 R (HD.6756) 7643 0 R (HD.6757) 7648 0 R (HD.6758) 7649 0 R (HD.6759) 7650 0 R (HD.676) 984 0 R (HD.6760) 7651 0 R (HD.6761) 7652 0 R (HD.6762) 7653 0 R (HD.6763) 7654 0 R (HD.6764) 7655 0 R (HD.6765) 7656 0 R (HD.6766) 7657 0 R (HD.6767) 7658 0 R (HD.6768) 7659 0 R (HD.6769) 7660 0 R (HD.677) 985 0 R (HD.6770) 7661 0 R (HD.6771) 7662 0 R ] /Limits [ (HD.6743) (HD.6771) ] >>
+endobj
+11949 0 obj
+<< /Names [ (HD.6772) 7663 0 R (HD.6773) 7664 0 R (HD.6774) 7665 0 R (HD.6775) 7666 0 R (HD.6776) 7667 0 R (HD.6777) 7668 0 R (HD.6778) 7669 0 R (HD.6779) 7670 0 R (HD.678) 986 0 R (HD.6780) 7671 0 R (HD.6781) 7672 0 R (HD.6782) 7673 0 R (HD.6783) 7674 0 R (HD.6784) 7675 0 R (HD.6785) 7676 0 R (HD.6786) 7677 0 R (HD.6787) 7678 0 R (HD.6788) 7679 0 R (HD.6789) 7680 0 R (HD.679) 987 0 R (HD.6790) 7681 0 R (HD.6791) 7682 0 R (HD.6792) 7683 0 R (HD.6793) 7684 0 R (HD.6794) 7685 0 R (HD.6795) 7686 0 R (HD.6796) 7687 0 R (HD.6797) 7688 0 R (HD.6798) 7689 0 R (HD.6799) 7690 0 R (HD.68) 268 0 R (HD.680) 988 0 R ] /Limits [ (HD.6772) (HD.680) ] >>
+endobj
+11950 0 obj
+<< /Names [ (HD.6800) 7691 0 R (HD.6801) 7692 0 R (HD.6802) 7693 0 R (HD.6803) 7694 0 R (HD.6804) 7695 0 R (HD.6805) 7696 0 R (HD.6806) 7697 0 R (HD.6807) 7698 0 R (HD.6808) 7699 0 R (HD.6809) 7700 0 R (HD.681) 989 0 R (HD.6810) 7705 0 R (HD.6811) 7706 0 R (HD.6812) 7707 0 R (HD.6813) 7708 0 R (HD.6814) 7709 0 R (HD.6815) 7710 0 R (HD.6816) 7711 0 R (HD.6817) 7712 0 R (HD.6818) 7713 0 R (HD.6819) 7714 0 R (HD.682) 990 0 R (HD.6820) 7715 0 R (HD.6821) 7716 0 R (HD.6822) 7717 0 R (HD.6823) 7718 0 R (HD.6824) 7719 0 R (HD.6825) 7720 0 R (HD.6826) 7721 0 R (HD.6827) 7722 0 R (HD.6828) 7723 0 R (HD.6829) 7724 0 R ] /Limits [ (HD.6800) (HD.6829) ] >>
+endobj
+11951 0 obj
+<< /Names [ (HD.683) 991 0 R (HD.6830) 7725 0 R (HD.6831) 7726 0 R (HD.6832) 7727 0 R (HD.6833) 7728 0 R (HD.6834) 7729 0 R (HD.6835) 7730 0 R (HD.6836) 7731 0 R (HD.6837) 7732 0 R (HD.6838) 7733 0 R (HD.6839) 7734 0 R (HD.684) 992 0 R (HD.6840) 7735 0 R (HD.6841) 7736 0 R (HD.6842) 7737 0 R (HD.6843) 7738 0 R (HD.6844) 7739 0 R (HD.6845) 7740 0 R (HD.6846) 7741 0 R (HD.6847) 7742 0 R (HD.6848) 7743 0 R (HD.6849) 7744 0 R (HD.685) 993 0 R (HD.6850) 7745 0 R (HD.6851) 7746 0 R (HD.6852) 7747 0 R (HD.6853) 7748 0 R (HD.6854) 7753 0 R (HD.6855) 7754 0 R (HD.6856) 7755 0 R (HD.6857) 7756 0 R (HD.6858) 7757 0 R ] /Limits [ (HD.683) (HD.6858) ] >>
+endobj
+11952 0 obj
+<< /Names [ (HD.6859) 7758 0 R (HD.686) 994 0 R (HD.6860) 7759 0 R (HD.6861) 7760 0 R (HD.6862) 7761 0 R (HD.6863) 7762 0 R (HD.6864) 7763 0 R (HD.6865) 7764 0 R (HD.6866) 7765 0 R (HD.6867) 7766 0 R (HD.6868) 7767 0 R (HD.6869) 7768 0 R (HD.687) 995 0 R (HD.6870) 7769 0 R (HD.6871) 7770 0 R (HD.6872) 7771 0 R (HD.6873) 7772 0 R (HD.6874) 7773 0 R (HD.6875) 7774 0 R (HD.6876) 7775 0 R (HD.6877) 7776 0 R (HD.6878) 7777 0 R (HD.6879) 7778 0 R (HD.688) 996 0 R (HD.6880) 7779 0 R (HD.6881) 7780 0 R (HD.6882) 7781 0 R (HD.6883) 7782 0 R (HD.6884) 7783 0 R (HD.6885) 7784 0 R (HD.6886) 7785 0 R (HD.6887) 7786 0 R ] /Limits [ (HD.6859) (HD.6887) ] >>
+endobj
+11953 0 obj
+<< /Names [ (HD.6888) 7787 0 R (HD.6889) 7788 0 R (HD.689) 997 0 R (HD.6890) 7789 0 R (HD.6891) 7790 0 R (HD.6892) 7791 0 R (HD.6893) 7792 0 R (HD.6894) 7793 0 R (HD.6895) 7794 0 R (HD.6896) 7795 0 R (HD.6897) 7800 0 R (HD.6898) 7801 0 R (HD.6899) 7802 0 R (HD.69) 269 0 R (HD.690) 998 0 R (HD.6900) 7803 0 R (HD.6901) 7804 0 R (HD.6902) 7805 0 R (HD.6903) 7806 0 R (HD.6904) 7807 0 R (HD.6905) 7808 0 R (HD.6906) 7809 0 R (HD.6907) 7810 0 R (HD.6908) 7811 0 R (HD.6909) 7812 0 R (HD.691) 999 0 R (HD.6910) 7813 0 R (HD.6911) 7814 0 R (HD.6912) 7815 0 R (HD.6913) 7816 0 R (HD.6914) 7817 0 R (HD.6915) 7818 0 R ] /Limits [ (HD.6888) (HD.6915) ] >>
+endobj
+11954 0 obj
+<< /Names [ (HD.6916) 7819 0 R (HD.6917) 7820 0 R (HD.6918) 7821 0 R (HD.6919) 7822 0 R (HD.692) 1000 0 R (HD.6920) 7823 0 R (HD.6921) 7824 0 R (HD.6922) 7825 0 R (HD.6923) 7826 0 R (HD.6924) 7827 0 R (HD.6925) 7828 0 R (HD.6926) 7829 0 R (HD.6927) 7830 0 R (HD.6928) 7831 0 R (HD.6929) 7832 0 R (HD.693) 1001 0 R (HD.6930) 7833 0 R (HD.6931) 7840 0 R (HD.6932) 7841 0 R (HD.6933) 7842 0 R (HD.6934) 7843 0 R (HD.6935) 7844 0 R (HD.6936) 7845 0 R (HD.6937) 7846 0 R (HD.6938) 7847 0 R (HD.6939) 7848 0 R (HD.694) 1002 0 R (HD.6940) 7849 0 R (HD.6941) 7850 0 R (HD.6942) 7851 0 R (HD.6943) 7852 0 R (HD.6944) 7853 0 R ] /Limits [ (HD.6916) (HD.6944) ] >>
+endobj
+11955 0 obj
+<< /Names [ (HD.6945) 7854 0 R (HD.6946) 7855 0 R (HD.6947) 7856 0 R (HD.6948) 7857 0 R (HD.6949) 7858 0 R (HD.695) 1003 0 R (HD.6950) 7859 0 R (HD.6951) 7860 0 R (HD.6952) 7861 0 R (HD.6953) 7862 0 R (HD.6954) 7863 0 R (HD.6955) 7864 0 R (HD.6956) 7865 0 R (HD.6957) 7866 0 R (HD.6958) 7867 0 R (HD.6959) 7868 0 R (HD.696) 1004 0 R (HD.6960) 7869 0 R (HD.6961) 7870 0 R (HD.6962) 7871 0 R (HD.6963) 7872 0 R (HD.6964) 7873 0 R (HD.6965) 7874 0 R (HD.6966) 7875 0 R (HD.6967) 7876 0 R (HD.6968) 7877 0 R (HD.6969) 7878 0 R (HD.697) 1005 0 R (HD.6970) 7879 0 R (HD.6971) 7880 0 R (HD.6972) 7881 0 R (HD.6973) 7888 0 R ] /Limits [ (HD.6945) (HD.6973) ] >>
+endobj
+11956 0 obj
+<< /Names [ (HD.6974) 7889 0 R (HD.6975) 7890 0 R (HD.6976) 7891 0 R (HD.6977) 7892 0 R (HD.6978) 7893 0 R (HD.6979) 7894 0 R (HD.698) 1006 0 R (HD.6980) 7895 0 R (HD.6981) 7896 0 R (HD.6982) 7897 0 R (HD.6983) 7898 0 R (HD.6984) 7899 0 R (HD.6985) 7900 0 R (HD.6986) 7901 0 R (HD.6987) 7902 0 R (HD.6988) 7903 0 R (HD.6989) 7904 0 R (HD.699) 1007 0 R (HD.6990) 7905 0 R (HD.6991) 7906 0 R (HD.6992) 7907 0 R (HD.6993) 7908 0 R (HD.6994) 7909 0 R (HD.6995) 7910 0 R (HD.6996) 7911 0 R (HD.6997) 7912 0 R (HD.6998) 7913 0 R (HD.6999) 7914 0 R (HD.7) 195 0 R (HD.70) 270 0 R (HD.700) 1008 0 R (HD.7000) 7915 0 R ] /Limits [ (HD.6974) (HD.7000) ] >>
+endobj
+11957 0 obj
+<< /Names [ (HD.7001) 7916 0 R (HD.7002) 7917 0 R (HD.7003) 7918 0 R (HD.7004) 7919 0 R (HD.7005) 7920 0 R (HD.7006) 7921 0 R (HD.7007) 7922 0 R (HD.7008) 7923 0 R (HD.7009) 7924 0 R (HD.701) 1013 0 R (HD.7010) 7925 0 R (HD.7011) 7926 0 R (HD.7012) 7927 0 R (HD.7013) 7928 0 R (HD.7014) 7929 0 R (HD.7015) 7930 0 R (HD.7016) 7931 0 R (HD.7017) 7932 0 R (HD.7018) 7933 0 R (HD.7019) 7934 0 R (HD.702) 1014 0 R (HD.7020) 7935 0 R (HD.7021) 7936 0 R (HD.7022) 7937 0 R (HD.7023) 7938 0 R (HD.7024) 7939 0 R (HD.7025) 7940 0 R (HD.7026) 7941 0 R (HD.7027) 7942 0 R (HD.7028) 7947 0 R (HD.7029) 7948 0 R (HD.703) 1015 0 R ] /Limits [ (HD.7001) (HD.703) ] >>
+endobj
+11958 0 obj
+<< /Names [ (HD.7030) 7949 0 R (HD.7031) 7950 0 R (HD.7032) 7951 0 R (HD.7033) 7952 0 R (HD.7034) 7953 0 R (HD.7035) 7954 0 R (HD.7036) 7955 0 R (HD.7037) 7956 0 R (HD.7038) 7957 0 R (HD.7039) 7958 0 R (HD.704) 1016 0 R (HD.7040) 7959 0 R (HD.7041) 7960 0 R (HD.7042) 7961 0 R (HD.7043) 7962 0 R (HD.7044) 7963 0 R (HD.7045) 7964 0 R (HD.7046) 7965 0 R (HD.7047) 7966 0 R (HD.7048) 7967 0 R (HD.7049) 7968 0 R (HD.705) 1017 0 R (HD.7050) 7969 0 R (HD.7051) 7970 0 R (HD.7052) 7971 0 R (HD.7053) 7972 0 R (HD.7054) 7973 0 R (HD.7055) 7974 0 R (HD.7056) 7975 0 R (HD.7057) 7976 0 R (HD.7058) 7977 0 R (HD.7059) 7978 0 R ] /Limits [ (HD.7030) (HD.7059) ] >>
+endobj
+11959 0 obj
+<< /Names [ (HD.706) 1018 0 R (HD.7060) 7979 0 R (HD.7061) 7980 0 R (HD.7062) 7981 0 R (HD.7063) 7982 0 R (HD.7064) 7983 0 R (HD.7065) 7984 0 R (HD.7066) 7985 0 R (HD.7067) 7986 0 R (HD.7068) 7987 0 R (HD.7069) 7988 0 R (HD.707) 1019 0 R (HD.7070) 7989 0 R (HD.7071) 7994 0 R (HD.7072) 7995 0 R (HD.7073) 7996 0 R (HD.7074) 7997 0 R (HD.7075) 7998 0 R (HD.7076) 7999 0 R (HD.7077) 8000 0 R (HD.7078) 8001 0 R (HD.7079) 8002 0 R (HD.708) 1020 0 R (HD.7080) 8003 0 R (HD.7081) 8004 0 R (HD.7082) 8005 0 R (HD.7083) 8006 0 R (HD.7084) 8007 0 R (HD.7085) 8008 0 R (HD.7086) 8009 0 R (HD.7087) 8010 0 R (HD.7088) 8011 0 R ] /Limits [ (HD.706) (HD.7088) ] >>
+endobj
+11960 0 obj
+<< /Names [ (HD.7089) 8012 0 R (HD.709) 1021 0 R (HD.7090) 8013 0 R (HD.7091) 8014 0 R (HD.7092) 8015 0 R (HD.7093) 8016 0 R (HD.7094) 8017 0 R (HD.7095) 8018 0 R (HD.7096) 8019 0 R (HD.7097) 8020 0 R (HD.7098) 8021 0 R (HD.7099) 8022 0 R (HD.71) 271 0 R (HD.710) 1022 0 R (HD.7100) 8023 0 R (HD.7101) 8024 0 R (HD.7102) 8025 0 R (HD.7103) 8026 0 R (HD.7104) 8027 0 R (HD.7105) 8028 0 R (HD.7106) 8029 0 R (HD.7107) 8030 0 R (HD.7108) 8031 0 R (HD.7109) 8032 0 R (HD.711) 1023 0 R (HD.7110) 8033 0 R (HD.7111) 8034 0 R (HD.7112) 8035 0 R (HD.7113) 8036 0 R (HD.7114) 8037 0 R (HD.7115) 8038 0 R (HD.7116) 8039 0 R ] /Limits [ (HD.7089) (HD.7116) ] >>
+endobj
+11961 0 obj
+<< /Names [ (HD.7117) 8040 0 R (HD.7118) 8041 0 R (HD.7119) 8042 0 R (HD.712) 1024 0 R (HD.7120) 8043 0 R (HD.7121) 8048 0 R (HD.7122) 8049 0 R (HD.7123) 8050 0 R (HD.7124) 8051 0 R (HD.7125) 8052 0 R (HD.7126) 8053 0 R (HD.7127) 8054 0 R (HD.7128) 8055 0 R (HD.7129) 8056 0 R (HD.713) 1025 0 R (HD.7130) 8057 0 R (HD.7131) 8058 0 R (HD.7132) 8059 0 R (HD.7133) 8060 0 R (HD.7134) 8061 0 R (HD.7135) 8062 0 R (HD.7136) 8063 0 R (HD.7137) 8064 0 R (HD.7138) 8065 0 R (HD.7139) 8066 0 R (HD.714) 1026 0 R (HD.7140) 8067 0 R (HD.7141) 8068 0 R (HD.7142) 8069 0 R (HD.7143) 8070 0 R (HD.7144) 8071 0 R (HD.7145) 8072 0 R ] /Limits [ (HD.7117) (HD.7145) ] >>
+endobj
+11962 0 obj
+<< /Names [ (HD.7146) 8073 0 R (HD.7147) 8074 0 R (HD.7148) 8075 0 R (HD.7149) 8076 0 R (HD.715) 1027 0 R (HD.7150) 8077 0 R (HD.7151) 8078 0 R (HD.7152) 8079 0 R (HD.7153) 8080 0 R (HD.7154) 8085 0 R (HD.7155) 8086 0 R (HD.7156) 8087 0 R (HD.7157) 8088 0 R (HD.7158) 8089 0 R (HD.7159) 8090 0 R (HD.716) 1028 0 R (HD.7160) 8091 0 R (HD.7161) 8092 0 R (HD.7162) 8093 0 R (HD.7163) 8094 0 R (HD.7164) 8095 0 R (HD.7165) 8096 0 R (HD.7166) 8097 0 R (HD.7167) 8098 0 R (HD.7168) 8099 0 R (HD.7169) 8100 0 R (HD.717) 1029 0 R (HD.7170) 8101 0 R (HD.7171) 8102 0 R (HD.7172) 8103 0 R (HD.7173) 8104 0 R (HD.7174) 8105 0 R ] /Limits [ (HD.7146) (HD.7174) ] >>
+endobj
+11963 0 obj
+<< /Names [ (HD.7175) 8106 0 R (HD.7176) 8107 0 R (HD.7177) 8108 0 R (HD.7178) 8109 0 R (HD.7179) 8110 0 R (HD.718) 1030 0 R (HD.7180) 8111 0 R (HD.7181) 8112 0 R (HD.7182) 8113 0 R (HD.7183) 8114 0 R (HD.7184) 8115 0 R (HD.7185) 8116 0 R (HD.7186) 8117 0 R (HD.7187) 8122 0 R (HD.7188) 8123 0 R (HD.7189) 8124 0 R (HD.719) 1031 0 R (HD.7190) 8125 0 R (HD.7191) 8126 0 R (HD.7192) 8127 0 R (HD.7193) 8128 0 R (HD.7194) 8129 0 R (HD.7195) 8130 0 R (HD.7196) 8131 0 R (HD.7197) 8132 0 R (HD.7198) 8133 0 R (HD.7199) 8134 0 R (HD.72) 272 0 R (HD.720) 1032 0 R (HD.7200) 8135 0 R (HD.7201) 8136 0 R (HD.7202) 8137 0 R ] /Limits [ (HD.7175) (HD.7202) ] >>
+endobj
+11964 0 obj
+<< /Names [ (HD.7203) 8138 0 R (HD.7204) 8139 0 R (HD.7205) 8140 0 R (HD.7206) 8141 0 R (HD.7207) 8142 0 R (HD.7208) 8143 0 R (HD.7209) 8144 0 R (HD.721) 1033 0 R (HD.7210) 8145 0 R (HD.7211) 8146 0 R (HD.7212) 8147 0 R (HD.7213) 8148 0 R (HD.7214) 8153 0 R (HD.7215) 8154 0 R (HD.7216) 8155 0 R (HD.7217) 8156 0 R (HD.7218) 8157 0 R (HD.7219) 8158 0 R (HD.722) 1034 0 R (HD.7220) 8159 0 R (HD.7221) 8160 0 R (HD.7222) 8161 0 R (HD.7223) 8162 0 R (HD.7224) 8163 0 R (HD.7225) 8164 0 R (HD.7226) 8165 0 R (HD.7227) 8166 0 R (HD.7228) 8167 0 R (HD.7229) 8168 0 R (HD.723) 1035 0 R (HD.7230) 8169 0 R (HD.7231) 8170 0 R ] /Limits [ (HD.7203) (HD.7231) ] >>
+endobj
+11965 0 obj
+<< /Names [ (HD.7232) 8171 0 R (HD.7233) 8172 0 R (HD.7234) 8173 0 R (HD.7235) 8174 0 R (HD.7236) 8175 0 R (HD.7237) 8176 0 R (HD.7238) 8177 0 R (HD.7239) 8178 0 R (HD.724) 1036 0 R (HD.7240) 8179 0 R (HD.7241) 8180 0 R (HD.7242) 8181 0 R (HD.7243) 8182 0 R (HD.7244) 8183 0 R (HD.7245) 8184 0 R (HD.7246) 8185 0 R (HD.7247) 8186 0 R (HD.7248) 8187 0 R (HD.7249) 8188 0 R (HD.725) 1037 0 R (HD.7250) 8189 0 R (HD.7251) 8190 0 R (HD.7252) 8191 0 R (HD.7253) 8192 0 R (HD.7254) 8193 0 R (HD.7255) 8194 0 R (HD.7256) 8195 0 R (HD.7257) 8196 0 R (HD.7258) 8197 0 R (HD.7259) 8202 0 R (HD.726) 1038 0 R (HD.7260) 8203 0 R ] /Limits [ (HD.7232) (HD.7260) ] >>
+endobj
+11966 0 obj
+<< /Names [ (HD.7261) 8204 0 R (HD.7262) 8205 0 R (HD.7263) 8206 0 R (HD.7264) 8207 0 R (HD.7265) 8208 0 R (HD.7266) 8209 0 R (HD.7267) 8210 0 R (HD.7268) 8211 0 R (HD.7269) 8212 0 R (HD.727) 1039 0 R (HD.7270) 8213 0 R (HD.7271) 8214 0 R (HD.7272) 8215 0 R (HD.7273) 8216 0 R (HD.7274) 8217 0 R (HD.7275) 8218 0 R (HD.7276) 8219 0 R (HD.7277) 8220 0 R (HD.7278) 8221 0 R (HD.7279) 8222 0 R (HD.728) 1040 0 R (HD.7280) 8223 0 R (HD.7281) 8224 0 R (HD.7282) 8225 0 R (HD.7283) 8226 0 R (HD.7284) 8227 0 R (HD.7285) 8228 0 R (HD.7286) 8229 0 R (HD.7287) 8230 0 R (HD.7288) 8231 0 R (HD.7289) 8232 0 R (HD.729) 1041 0 R ] /Limits [ (HD.7261) (HD.729) ] >>
+endobj
+11967 0 obj
+<< /Names [ (HD.7290) 8233 0 R (HD.7291) 8234 0 R (HD.7292) 8235 0 R (HD.7293) 8236 0 R (HD.7294) 8237 0 R (HD.7295) 8238 0 R (HD.7296) 8239 0 R (HD.7297) 8240 0 R (HD.7298) 8241 0 R (HD.7299) 8242 0 R (HD.73) 273 0 R (HD.730) 1042 0 R (HD.7300) 8243 0 R (HD.7301) 8244 0 R (HD.7302) 8245 0 R (HD.7303) 8246 0 R (HD.7304) 8247 0 R (HD.7305) 8248 0 R (HD.7306) 8253 0 R (HD.7307) 8254 0 R (HD.7308) 8255 0 R (HD.7309) 8256 0 R (HD.731) 1043 0 R (HD.7310) 8257 0 R (HD.7311) 8258 0 R (HD.7312) 8259 0 R (HD.7313) 8260 0 R (HD.7314) 8261 0 R (HD.7315) 8262 0 R (HD.7316) 8263 0 R (HD.7317) 8264 0 R (HD.7318) 8265 0 R ] /Limits [ (HD.7290) (HD.7318) ] >>
+endobj
+11968 0 obj
+<< /Names [ (HD.7319) 8266 0 R (HD.732) 1044 0 R (HD.7320) 8267 0 R (HD.7321) 8268 0 R (HD.7322) 8269 0 R (HD.7323) 8270 0 R (HD.7324) 8271 0 R (HD.7325) 8272 0 R (HD.7326) 8273 0 R (HD.7327) 8274 0 R (HD.7328) 8275 0 R (HD.7329) 8276 0 R (HD.733) 1045 0 R (HD.7330) 8277 0 R (HD.7331) 8278 0 R (HD.7332) 8279 0 R (HD.7333) 8280 0 R (HD.7334) 8281 0 R (HD.7335) 8282 0 R (HD.7336) 8283 0 R (HD.7337) 8284 0 R (HD.7338) 8285 0 R (HD.7339) 8286 0 R (HD.734) 1046 0 R (HD.7340) 8287 0 R (HD.7341) 8288 0 R (HD.7342) 8289 0 R (HD.7343) 8290 0 R (HD.7344) 8291 0 R (HD.7345) 8292 0 R (HD.7346) 8293 0 R (HD.7347) 8294 0 R ] /Limits [ (HD.7319) (HD.7347) ] >>
+endobj
+11969 0 obj
+<< /Names [ (HD.7348) 8295 0 R (HD.7349) 8296 0 R (HD.735) 1047 0 R (HD.7350) 8297 0 R (HD.7351) 8298 0 R (HD.7352) 8299 0 R (HD.7353) 8300 0 R (HD.7354) 8301 0 R (HD.7355) 8302 0 R (HD.7356) 8303 0 R (HD.7357) 8309 0 R (HD.7358) 8310 0 R (HD.7359) 8311 0 R (HD.736) 1048 0 R (HD.7360) 8312 0 R (HD.7361) 8313 0 R (HD.7362) 8314 0 R (HD.7363) 8315 0 R (HD.7364) 8316 0 R (HD.7365) 8317 0 R (HD.7366) 8318 0 R (HD.7367) 8319 0 R (HD.7368) 8320 0 R (HD.7369) 8321 0 R (HD.737) 1049 0 R (HD.7370) 8322 0 R (HD.7371) 8323 0 R (HD.7372) 8324 0 R (HD.7373) 8325 0 R (HD.7374) 8326 0 R (HD.7375) 8327 0 R (HD.7376) 8328 0 R ] /Limits [ (HD.7348) (HD.7376) ] >>
+endobj
+11970 0 obj
+<< /Names [ (HD.7377) 8329 0 R (HD.7378) 8330 0 R (HD.7379) 8331 0 R (HD.738) 1050 0 R (HD.7380) 8332 0 R (HD.7381) 8333 0 R (HD.7382) 8334 0 R (HD.7383) 8335 0 R (HD.7384) 8336 0 R (HD.7385) 8337 0 R (HD.7386) 8338 0 R (HD.7387) 8339 0 R (HD.7388) 8340 0 R (HD.7389) 8341 0 R (HD.739) 1051 0 R (HD.7390) 8342 0 R (HD.7391) 8343 0 R (HD.7392) 8344 0 R (HD.7393) 8345 0 R (HD.7394) 8346 0 R (HD.7395) 8347 0 R (HD.7396) 8348 0 R (HD.7397) 8349 0 R (HD.7398) 8350 0 R (HD.7399) 8351 0 R (HD.74) 274 0 R (HD.740) 1052 0 R (HD.7400) 8352 0 R (HD.7401) 8353 0 R (HD.7402) 8354 0 R (HD.7403) 8359 0 R (HD.7404) 8360 0 R ] /Limits [ (HD.7377) (HD.7404) ] >>
+endobj
+11971 0 obj
+<< /Names [ (HD.7405) 8361 0 R (HD.7406) 8362 0 R (HD.7407) 8363 0 R (HD.7408) 8364 0 R (HD.7409) 8365 0 R (HD.741) 1053 0 R (HD.7410) 8366 0 R (HD.7411) 8367 0 R (HD.7412) 8368 0 R (HD.7413) 8369 0 R (HD.7414) 8370 0 R (HD.7415) 8371 0 R (HD.7416) 8372 0 R (HD.7417) 8373 0 R (HD.7418) 8374 0 R (HD.7419) 8375 0 R (HD.742) 1058 0 R (HD.7420) 8376 0 R (HD.7421) 8377 0 R (HD.7422) 8378 0 R (HD.7423) 8379 0 R (HD.7424) 8380 0 R (HD.7425) 8381 0 R (HD.7426) 8382 0 R (HD.7427) 8383 0 R (HD.7428) 8384 0 R (HD.7429) 8385 0 R (HD.743) 1059 0 R (HD.7430) 8386 0 R (HD.7431) 8387 0 R (HD.7432) 8388 0 R (HD.7433) 8389 0 R ] /Limits [ (HD.7405) (HD.7433) ] >>
+endobj
+11972 0 obj
+<< /Names [ (HD.7434) 8390 0 R (HD.7435) 8391 0 R (HD.7436) 8392 0 R (HD.7437) 8393 0 R (HD.7438) 8394 0 R (HD.7439) 8395 0 R (HD.744) 1060 0 R (HD.7440) 8396 0 R (HD.7441) 8397 0 R (HD.7442) 8398 0 R (HD.7443) 8399 0 R (HD.7444) 8400 0 R (HD.7445) 8401 0 R (HD.7446) 8402 0 R (HD.7447) 8403 0 R (HD.7448) 8404 0 R (HD.7449) 8405 0 R (HD.745) 1061 0 R (HD.7450) 8406 0 R (HD.7451) 8407 0 R (HD.7452) 8408 0 R (HD.7453) 8413 0 R (HD.7454) 8414 0 R (HD.7455) 8415 0 R (HD.7456) 8416 0 R (HD.7457) 8417 0 R (HD.7458) 8418 0 R (HD.7459) 8419 0 R (HD.746) 1062 0 R (HD.7460) 8420 0 R (HD.7461) 8421 0 R (HD.7462) 8422 0 R ] /Limits [ (HD.7434) (HD.7462) ] >>
+endobj
+11973 0 obj
+<< /Names [ (HD.7463) 8423 0 R (HD.7464) 8424 0 R (HD.7465) 8425 0 R (HD.7466) 8426 0 R (HD.7467) 8427 0 R (HD.7468) 8428 0 R (HD.7469) 8429 0 R (HD.747) 1063 0 R (HD.7470) 8430 0 R (HD.7471) 8431 0 R (HD.7472) 8432 0 R (HD.7473) 8433 0 R (HD.7474) 8434 0 R (HD.7475) 8435 0 R (HD.7476) 8436 0 R (HD.7477) 8437 0 R (HD.7478) 8438 0 R (HD.7479) 8439 0 R (HD.748) 1064 0 R (HD.7480) 8440 0 R (HD.7481) 8441 0 R (HD.7482) 8442 0 R (HD.7483) 8443 0 R (HD.7484) 8444 0 R (HD.7485) 8445 0 R (HD.7486) 8446 0 R (HD.7487) 8447 0 R (HD.7488) 8448 0 R (HD.7489) 8449 0 R (HD.749) 1065 0 R (HD.7490) 8450 0 R (HD.7491) 8451 0 R ] /Limits [ (HD.7463) (HD.7491) ] >>
+endobj
+11974 0 obj
+<< /Names [ (HD.7492) 8452 0 R (HD.7493) 8453 0 R (HD.7494) 8454 0 R (HD.7495) 8455 0 R (HD.7496) 8456 0 R (HD.7497) 8457 0 R (HD.7498) 8458 0 R (HD.7499) 8459 0 R (HD.75) 275 0 R (HD.750) 1066 0 R (HD.7500) 8460 0 R (HD.7501) 8461 0 R (HD.7502) 8462 0 R (HD.7503) 8463 0 R (HD.7504) 8464 0 R (HD.7505) 8465 0 R (HD.7506) 8466 0 R (HD.7507) 8467 0 R (HD.7508) 8468 0 R (HD.7509) 8469 0 R (HD.751) 1067 0 R (HD.7510) 8470 0 R (HD.7511) 8471 0 R (HD.7512) 8472 0 R (HD.7513) 8473 0 R (HD.7514) 8474 0 R (HD.7515) 8479 0 R (HD.7516) 8480 0 R (HD.7517) 8481 0 R (HD.7518) 8482 0 R (HD.7519) 8483 0 R (HD.752) 1068 0 R ] /Limits [ (HD.7492) (HD.752) ] >>
+endobj
+11975 0 obj
+<< /Names [ (HD.7520) 8484 0 R (HD.7521) 8485 0 R (HD.7522) 8486 0 R (HD.7523) 8487 0 R (HD.7524) 8488 0 R (HD.7525) 8489 0 R (HD.7526) 8490 0 R (HD.7527) 8491 0 R (HD.7528) 8492 0 R (HD.7529) 8493 0 R (HD.753) 1069 0 R (HD.7530) 8494 0 R (HD.7531) 8495 0 R (HD.7532) 8496 0 R (HD.7533) 8497 0 R (HD.7534) 8498 0 R (HD.7535) 8499 0 R (HD.7536) 8500 0 R (HD.7537) 8501 0 R (HD.7538) 8502 0 R (HD.7539) 8503 0 R (HD.754) 1070 0 R (HD.7540) 8504 0 R (HD.7541) 8505 0 R (HD.7542) 8506 0 R (HD.7543) 8507 0 R (HD.7544) 8508 0 R (HD.7545) 8509 0 R (HD.7546) 8510 0 R (HD.7547) 8511 0 R (HD.7548) 8512 0 R (HD.7549) 8513 0 R ] /Limits [ (HD.7520) (HD.7549) ] >>
+endobj
+11976 0 obj
+<< /Names [ (HD.755) 1071 0 R (HD.7550) 8514 0 R (HD.7551) 8515 0 R (HD.7552) 8516 0 R (HD.7553) 8517 0 R (HD.7554) 8518 0 R (HD.7555) 8519 0 R (HD.7556) 8520 0 R (HD.7557) 8521 0 R (HD.7558) 8522 0 R (HD.7559) 8523 0 R (HD.756) 1072 0 R (HD.7560) 8524 0 R (HD.7561) 8525 0 R (HD.7562) 8526 0 R (HD.7563) 8531 0 R (HD.7564) 8532 0 R (HD.7565) 8533 0 R (HD.7566) 8534 0 R (HD.7567) 8535 0 R (HD.7568) 8536 0 R (HD.7569) 8537 0 R (HD.757) 1073 0 R (HD.7570) 8538 0 R (HD.7571) 8539 0 R (HD.7572) 8540 0 R (HD.7573) 8541 0 R (HD.7574) 8542 0 R (HD.7575) 8543 0 R (HD.7576) 8544 0 R (HD.7577) 8545 0 R (HD.7578) 8546 0 R ] /Limits [ (HD.755) (HD.7578) ] >>
+endobj
+11977 0 obj
+<< /Names [ (HD.7579) 8547 0 R (HD.758) 1074 0 R (HD.7580) 8548 0 R (HD.7581) 8549 0 R (HD.7582) 8550 0 R (HD.7583) 8551 0 R (HD.7584) 8552 0 R (HD.7585) 8553 0 R (HD.7586) 8554 0 R (HD.7587) 8555 0 R (HD.7588) 8556 0 R (HD.7589) 8557 0 R (HD.759) 1075 0 R (HD.7590) 8558 0 R (HD.7591) 8559 0 R (HD.7592) 8560 0 R (HD.7593) 8561 0 R (HD.7594) 8562 0 R (HD.7595) 8563 0 R (HD.7596) 8564 0 R (HD.7597) 8565 0 R (HD.7598) 8566 0 R (HD.7599) 8567 0 R (HD.76) 276 0 R (HD.760) 1076 0 R (HD.7600) 8568 0 R (HD.7601) 8569 0 R (HD.7602) 8570 0 R (HD.7603) 8571 0 R (HD.7604) 8572 0 R (HD.7605) 8573 0 R (HD.7606) 8574 0 R ] /Limits [ (HD.7579) (HD.7606) ] >>
+endobj
+11978 0 obj
+<< /Names [ (HD.7607) 8575 0 R (HD.7608) 8576 0 R (HD.7609) 8577 0 R (HD.761) 1077 0 R (HD.7610) 8582 0 R (HD.7611) 8583 0 R (HD.7612) 8584 0 R (HD.7613) 8585 0 R (HD.7614) 8586 0 R (HD.7615) 8587 0 R (HD.7616) 8588 0 R (HD.7617) 8589 0 R (HD.7618) 8590 0 R (HD.7619) 8591 0 R (HD.762) 1078 0 R (HD.7620) 8592 0 R (HD.7621) 8593 0 R (HD.7622) 8594 0 R (HD.7623) 8595 0 R (HD.7624) 8596 0 R (HD.7625) 8597 0 R (HD.7626) 8598 0 R (HD.7627) 8599 0 R (HD.7628) 8600 0 R (HD.7629) 8601 0 R (HD.763) 1079 0 R (HD.7630) 8602 0 R (HD.7631) 8603 0 R (HD.7632) 8604 0 R (HD.7633) 8605 0 R (HD.7634) 8606 0 R (HD.7635) 8607 0 R ] /Limits [ (HD.7607) (HD.7635) ] >>
+endobj
+11979 0 obj
+<< /Names [ (HD.7636) 8608 0 R (HD.7637) 8609 0 R (HD.7638) 8610 0 R (HD.7639) 8611 0 R (HD.764) 1080 0 R (HD.7640) 8612 0 R (HD.7641) 8613 0 R (HD.7642) 8614 0 R (HD.7643) 8615 0 R (HD.7644) 8616 0 R (HD.7645) 8617 0 R (HD.7646) 8618 0 R (HD.7647) 8619 0 R (HD.7648) 8620 0 R (HD.7649) 8621 0 R (HD.765) 1081 0 R (HD.7650) 8622 0 R (HD.7651) 8623 0 R (HD.7652) 8624 0 R (HD.7653) 8625 0 R (HD.7654) 8626 0 R (HD.7655) 8627 0 R (HD.7656) 8628 0 R (HD.7657) 8629 0 R (HD.7658) 8630 0 R (HD.7659) 8631 0 R (HD.766) 1086 0 R (HD.7660) 8632 0 R (HD.7661) 8633 0 R (HD.7662) 8634 0 R (HD.7663) 8635 0 R (HD.7664) 8636 0 R ] /Limits [ (HD.7636) (HD.7664) ] >>
+endobj
+11980 0 obj
+<< /Names [ (HD.7665) 8637 0 R (HD.7666) 8638 0 R (HD.7667) 8639 0 R (HD.7668) 8640 0 R (HD.7669) 8641 0 R (HD.767) 1087 0 R (HD.7670) 8646 0 R (HD.7671) 8647 0 R (HD.7672) 8648 0 R (HD.7673) 8649 0 R (HD.7674) 8650 0 R (HD.7675) 8651 0 R (HD.7676) 8652 0 R (HD.7677) 8653 0 R (HD.7678) 8654 0 R (HD.7679) 8655 0 R (HD.768) 1088 0 R (HD.7680) 8656 0 R (HD.7681) 8657 0 R (HD.7682) 8658 0 R (HD.7683) 8659 0 R (HD.7684) 8660 0 R (HD.7685) 8661 0 R (HD.7686) 8662 0 R (HD.7687) 8663 0 R (HD.7688) 8664 0 R (HD.7689) 8665 0 R (HD.769) 1089 0 R (HD.7690) 8666 0 R (HD.7691) 8667 0 R (HD.7692) 8668 0 R (HD.7693) 8669 0 R ] /Limits [ (HD.7665) (HD.7693) ] >>
+endobj
+11981 0 obj
+<< /Names [ (HD.7694) 8670 0 R (HD.7695) 8671 0 R (HD.7696) 8672 0 R (HD.7697) 8673 0 R (HD.7698) 8674 0 R (HD.7699) 8675 0 R (HD.77) 277 0 R (HD.770) 1090 0 R (HD.7700) 8676 0 R (HD.7701) 8677 0 R (HD.7702) 8678 0 R (HD.7703) 8679 0 R (HD.7704) 8680 0 R (HD.7705) 8685 0 R (HD.7706) 8686 0 R (HD.7707) 8687 0 R (HD.7708) 8688 0 R (HD.7709) 8689 0 R (HD.771) 1091 0 R (HD.7710) 8690 0 R (HD.7711) 8691 0 R (HD.7712) 8692 0 R (HD.7713) 8693 0 R (HD.7714) 8694 0 R (HD.7715) 8695 0 R (HD.7716) 8696 0 R (HD.7717) 8697 0 R (HD.7718) 8698 0 R (HD.7719) 8699 0 R (HD.772) 1092 0 R (HD.7720) 8700 0 R (HD.7721) 8701 0 R ] /Limits [ (HD.7694) (HD.7721) ] >>
+endobj
+11982 0 obj
+<< /Names [ (HD.7722) 8702 0 R (HD.7723) 8703 0 R (HD.7724) 8704 0 R (HD.7725) 8705 0 R (HD.7726) 8706 0 R (HD.7727) 8707 0 R (HD.7728) 8708 0 R (HD.7729) 8709 0 R (HD.773) 1093 0 R (HD.7730) 8710 0 R (HD.7731) 8711 0 R (HD.7732) 8712 0 R (HD.7733) 8713 0 R (HD.7734) 8714 0 R (HD.7735) 8715 0 R (HD.7736) 8716 0 R (HD.7737) 8717 0 R (HD.7738) 8718 0 R (HD.7739) 8719 0 R (HD.774) 1094 0 R (HD.7740) 8720 0 R (HD.7741) 8721 0 R (HD.7742) 8722 0 R (HD.7743) 8723 0 R (HD.7744) 8724 0 R (HD.7745) 8725 0 R (HD.7746) 8726 0 R (HD.7747) 8727 0 R (HD.7748) 8728 0 R (HD.7749) 8729 0 R (HD.775) 1095 0 R (HD.7750) 8730 0 R ] /Limits [ (HD.7722) (HD.7750) ] >>
+endobj
+11983 0 obj
+<< /Names [ (HD.7751) 8731 0 R (HD.7752) 8736 0 R (HD.7753) 8737 0 R (HD.7754) 8738 0 R (HD.7755) 8739 0 R (HD.7756) 8740 0 R (HD.7757) 8741 0 R (HD.7758) 8742 0 R (HD.7759) 8743 0 R (HD.776) 1096 0 R (HD.7760) 8744 0 R (HD.7761) 8745 0 R (HD.7762) 8746 0 R (HD.7763) 8747 0 R (HD.7764) 8748 0 R (HD.7765) 8749 0 R (HD.7766) 8750 0 R (HD.7767) 8751 0 R (HD.7768) 8752 0 R (HD.7769) 8753 0 R (HD.777) 1097 0 R (HD.7770) 8754 0 R (HD.7771) 8755 0 R (HD.7772) 8756 0 R (HD.7773) 8757 0 R (HD.7774) 8758 0 R (HD.7775) 8759 0 R (HD.7776) 8760 0 R (HD.7777) 8761 0 R (HD.7778) 8762 0 R (HD.7779) 8763 0 R (HD.778) 1098 0 R ] /Limits [ (HD.7751) (HD.778) ] >>
+endobj
+11984 0 obj
+<< /Names [ (HD.7780) 8764 0 R (HD.7781) 8765 0 R (HD.7782) 8766 0 R (HD.7783) 8767 0 R (HD.7784) 8768 0 R (HD.7785) 8769 0 R (HD.7786) 8770 0 R (HD.7787) 8771 0 R (HD.7788) 8772 0 R (HD.7789) 8773 0 R (HD.779) 1099 0 R (HD.7790) 8774 0 R (HD.7791) 8775 0 R (HD.7792) 8776 0 R (HD.7793) 8777 0 R (HD.7794) 8778 0 R (HD.7795) 8779 0 R (HD.7796) 8780 0 R (HD.7797) 8781 0 R (HD.7798) 8782 0 R (HD.7799) 8783 0 R (HD.78) 278 0 R (HD.780) 1100 0 R (HD.7800) 8784 0 R (HD.7801) 8785 0 R (HD.7802) 8786 0 R (HD.7803) 8787 0 R (HD.7804) 8788 0 R (HD.7805) 8789 0 R (HD.7806) 8790 0 R (HD.7807) 8791 0 R (HD.7808) 8792 0 R ] /Limits [ (HD.7780) (HD.7808) ] >>
+endobj
+11985 0 obj
+<< /Names [ (HD.7809) 8793 0 R (HD.781) 1101 0 R (HD.7810) 8794 0 R (HD.7811) 8795 0 R (HD.7812) 8796 0 R (HD.7813) 8797 0 R (HD.7814) 8802 0 R (HD.7815) 8803 0 R (HD.7816) 8804 0 R (HD.7817) 8805 0 R (HD.7818) 8806 0 R (HD.7819) 8807 0 R (HD.782) 1102 0 R (HD.7820) 8808 0 R (HD.7821) 8809 0 R (HD.7822) 8810 0 R (HD.7823) 8811 0 R (HD.7824) 8812 0 R (HD.7825) 8813 0 R (HD.7826) 8814 0 R (HD.7827) 8815 0 R (HD.7828) 8816 0 R (HD.7829) 8817 0 R (HD.783) 1107 0 R (HD.7830) 8818 0 R (HD.7831) 8819 0 R (HD.7832) 8820 0 R (HD.7833) 8821 0 R (HD.7834) 8822 0 R (HD.7835) 8823 0 R (HD.7836) 8824 0 R (HD.7837) 8825 0 R ] /Limits [ (HD.7809) (HD.7837) ] >>
+endobj
+11986 0 obj
+<< /Names [ (HD.7838) 8826 0 R (HD.7839) 8827 0 R (HD.784) 1108 0 R (HD.7840) 8828 0 R (HD.7841) 8829 0 R (HD.7842) 8830 0 R (HD.7843) 8831 0 R (HD.7844) 8832 0 R (HD.7845) 8833 0 R (HD.7846) 8834 0 R (HD.7847) 8835 0 R (HD.7848) 8836 0 R (HD.7849) 8837 0 R (HD.785) 1109 0 R (HD.7850) 8838 0 R (HD.7851) 8839 0 R (HD.7852) 8840 0 R (HD.7853) 8841 0 R (HD.7854) 8842 0 R (HD.7855) 8843 0 R (HD.7856) 8844 0 R (HD.7857) 8845 0 R (HD.7858) 8846 0 R (HD.7859) 8847 0 R (HD.786) 1110 0 R (HD.7860) 8848 0 R (HD.7861) 8849 0 R (HD.7862) 8850 0 R (HD.7863) 8851 0 R (HD.7864) 8852 0 R (HD.7865) 8853 0 R (HD.7866) 8854 0 R ] /Limits [ (HD.7838) (HD.7866) ] >>
+endobj
+11987 0 obj
+<< /Names [ (HD.7867) 8855 0 R (HD.7868) 8856 0 R (HD.7869) 8857 0 R (HD.787) 1111 0 R (HD.7870) 8858 0 R (HD.7871) 8859 0 R (HD.7872) 8860 0 R (HD.7873) 8861 0 R (HD.7874) 8867 0 R (HD.7875) 8868 0 R (HD.7876) 8869 0 R (HD.7877) 8870 0 R (HD.7878) 8871 0 R (HD.7879) 8872 0 R (HD.788) 1112 0 R (HD.7880) 8873 0 R (HD.7881) 8874 0 R (HD.7882) 8875 0 R (HD.7883) 8876 0 R (HD.7884) 8877 0 R (HD.7885) 8878 0 R (HD.7886) 8879 0 R (HD.7887) 8880 0 R (HD.7888) 8881 0 R (HD.7889) 8882 0 R (HD.789) 1113 0 R (HD.7890) 8883 0 R (HD.7891) 8884 0 R (HD.7892) 8885 0 R (HD.7893) 8886 0 R (HD.7894) 8887 0 R (HD.7895) 8888 0 R ] /Limits [ (HD.7867) (HD.7895) ] >>
+endobj
+11988 0 obj
+<< /Names [ (HD.7896) 8889 0 R (HD.7897) 8890 0 R (HD.7898) 8891 0 R (HD.7899) 8892 0 R (HD.79) 279 0 R (HD.790) 1114 0 R (HD.7900) 8893 0 R (HD.7901) 8894 0 R (HD.7902) 8895 0 R (HD.7903) 8896 0 R (HD.7904) 8897 0 R (HD.7905) 8898 0 R (HD.7906) 8899 0 R (HD.7907) 8900 0 R (HD.7908) 8901 0 R (HD.7909) 8902 0 R (HD.791) 1115 0 R (HD.7910) 8903 0 R (HD.7911) 8904 0 R (HD.7912) 8905 0 R (HD.7913) 8906 0 R (HD.7914) 8907 0 R (HD.7915) 8908 0 R (HD.7916) 8909 0 R (HD.7917) 8910 0 R (HD.7918) 8911 0 R (HD.7919) 8912 0 R (HD.792) 1116 0 R (HD.7920) 8913 0 R (HD.7921) 8914 0 R (HD.7922) 8915 0 R (HD.7923) 8916 0 R ] /Limits [ (HD.7896) (HD.7923) ] >>
+endobj
+11989 0 obj
+<< /Names [ (HD.7924) 8917 0 R (HD.7925) 8922 0 R (HD.7926) 8923 0 R (HD.7927) 8924 0 R (HD.7928) 8925 0 R (HD.7929) 8926 0 R (HD.793) 1117 0 R (HD.7930) 8927 0 R (HD.7931) 8928 0 R (HD.7932) 8929 0 R (HD.7933) 8930 0 R (HD.7934) 8931 0 R (HD.7935) 8932 0 R (HD.7936) 8933 0 R (HD.7937) 8934 0 R (HD.7938) 8935 0 R (HD.7939) 8936 0 R (HD.794) 1118 0 R (HD.7940) 8937 0 R (HD.7941) 8938 0 R (HD.7942) 8939 0 R (HD.7943) 8940 0 R (HD.7944) 8941 0 R (HD.7945) 8942 0 R (HD.7946) 8943 0 R (HD.7947) 8944 0 R (HD.7948) 8945 0 R (HD.7949) 8946 0 R (HD.795) 1119 0 R (HD.7950) 8947 0 R (HD.7951) 8948 0 R (HD.7952) 8949 0 R ] /Limits [ (HD.7924) (HD.7952) ] >>
+endobj
+11990 0 obj
+<< /Names [ (HD.7953) 8950 0 R (HD.7954) 8951 0 R (HD.7955) 8952 0 R (HD.7956) 8953 0 R (HD.7957) 8954 0 R (HD.7958) 8955 0 R (HD.7959) 8956 0 R (HD.796) 1120 0 R (HD.7960) 8957 0 R (HD.7961) 8958 0 R (HD.7962) 8959 0 R (HD.7963) 8960 0 R (HD.7964) 8961 0 R (HD.7965) 8962 0 R (HD.7966) 8963 0 R (HD.7967) 8964 0 R (HD.7968) 8965 0 R (HD.7969) 8966 0 R (HD.797) 1121 0 R (HD.7970) 8967 0 R (HD.7971) 8968 0 R (HD.7972) 8969 0 R (HD.7973) 8970 0 R (HD.7974) 8971 0 R (HD.7975) 8972 0 R (HD.7976) 8973 0 R (HD.7977) 8974 0 R (HD.7978) 8975 0 R (HD.7979) 8976 0 R (HD.798) 1122 0 R (HD.7980) 8977 0 R (HD.7981) 8978 0 R ] /Limits [ (HD.7953) (HD.7981) ] >>
+endobj
+11991 0 obj
+<< /Names [ (HD.7982) 8979 0 R (HD.7983) 8984 0 R (HD.7984) 8985 0 R (HD.7985) 8986 0 R (HD.7986) 8987 0 R (HD.7987) 8988 0 R (HD.7988) 8989 0 R (HD.7989) 8990 0 R (HD.799) 1123 0 R (HD.7990) 8991 0 R (HD.7991) 8992 0 R (HD.7992) 8993 0 R (HD.7993) 8994 0 R (HD.7994) 8995 0 R (HD.7995) 8996 0 R (HD.7996) 8997 0 R (HD.7997) 8998 0 R (HD.7998) 8999 0 R (HD.7999) 9000 0 R (HD.8) 196 0 R (HD.80) 280 0 R (HD.800) 1124 0 R (HD.8000) 9001 0 R (HD.8001) 9002 0 R (HD.8002) 9003 0 R (HD.8003) 9004 0 R (HD.8004) 9005 0 R (HD.8005) 9006 0 R (HD.8006) 9007 0 R (HD.8007) 9008 0 R (HD.8008) 9009 0 R (HD.8009) 9010 0 R ] /Limits [ (HD.7982) (HD.8009) ] >>
+endobj
+11992 0 obj
+<< /Names [ (HD.801) 1125 0 R (HD.8010) 9011 0 R (HD.8011) 9012 0 R (HD.8012) 9013 0 R (HD.8013) 9014 0 R (HD.8014) 9015 0 R (HD.8015) 9016 0 R (HD.8016) 9017 0 R (HD.8017) 9018 0 R (HD.8018) 9019 0 R (HD.8019) 9020 0 R (HD.802) 1126 0 R (HD.8020) 9021 0 R (HD.8021) 9022 0 R (HD.8022) 9023 0 R (HD.8023) 9024 0 R (HD.8024) 9025 0 R (HD.8025) 9026 0 R (HD.8026) 9027 0 R (HD.8027) 9028 0 R (HD.8028) 9029 0 R (HD.8029) 9030 0 R (HD.803) 1127 0 R (HD.8030) 9031 0 R (HD.8031) 9032 0 R (HD.8032) 9033 0 R (HD.8033) 9034 0 R (HD.8034) 9035 0 R (HD.8035) 9036 0 R (HD.8036) 9037 0 R (HD.8037) 9038 0 R (HD.8038) 9039 0 R ] /Limits [ (HD.801) (HD.8038) ] >>
+endobj
+11993 0 obj
+<< /Names [ (HD.8039) 9044 0 R (HD.804) 1128 0 R (HD.8040) 9045 0 R (HD.8041) 9046 0 R (HD.8042) 9047 0 R (HD.8043) 9048 0 R (HD.8044) 9049 0 R (HD.8045) 9050 0 R (HD.8046) 9051 0 R (HD.8047) 9052 0 R (HD.8048) 9053 0 R (HD.8049) 9054 0 R (HD.805) 1129 0 R (HD.8050) 9055 0 R (HD.8051) 9056 0 R (HD.8052) 9057 0 R (HD.8053) 9058 0 R (HD.8054) 9059 0 R (HD.8055) 9060 0 R (HD.8056) 9061 0 R (HD.8057) 9062 0 R (HD.8058) 9063 0 R (HD.8059) 9064 0 R (HD.806) 1130 0 R (HD.8060) 9065 0 R (HD.8061) 9066 0 R (HD.8062) 9067 0 R (HD.8063) 9068 0 R (HD.8064) 9069 0 R (HD.8065) 9070 0 R (HD.8066) 9071 0 R (HD.8067) 9072 0 R ] /Limits [ (HD.8039) (HD.8067) ] >>
+endobj
+11994 0 obj
+<< /Names [ (HD.8068) 9073 0 R (HD.8069) 9074 0 R (HD.807) 1131 0 R (HD.8070) 9075 0 R (HD.8071) 9076 0 R (HD.8072) 9077 0 R (HD.8073) 9078 0 R (HD.8074) 9079 0 R (HD.8075) 9080 0 R (HD.8076) 9081 0 R (HD.8077) 9082 0 R (HD.8078) 9083 0 R (HD.8079) 9084 0 R (HD.808) 1132 0 R (HD.8080) 9085 0 R (HD.8081) 9086 0 R (HD.8082) 9087 0 R (HD.8083) 9088 0 R (HD.8084) 9089 0 R (HD.8085) 9090 0 R (HD.8086) 9091 0 R (HD.8087) 9092 0 R (HD.8088) 9093 0 R (HD.8089) 9094 0 R (HD.809) 1133 0 R (HD.8090) 9095 0 R (HD.8091) 9096 0 R (HD.8092) 9097 0 R (HD.8093) 9098 0 R (HD.8094) 9099 0 R (HD.8095) 9100 0 R (HD.8096) 9105 0 R ] /Limits [ (HD.8068) (HD.8096) ] >>
+endobj
+11995 0 obj
+<< /Names [ (HD.8097) 9106 0 R (HD.8098) 9107 0 R (HD.8099) 9108 0 R (HD.81) 281 0 R (HD.810) 1134 0 R (HD.8100) 9109 0 R (HD.8101) 9110 0 R (HD.8102) 9111 0 R (HD.8103) 9112 0 R (HD.8104) 9113 0 R (HD.8105) 9114 0 R (HD.8106) 9115 0 R (HD.8107) 9116 0 R (HD.8108) 9117 0 R (HD.8109) 9118 0 R (HD.811) 1135 0 R (HD.8110) 9119 0 R (HD.8111) 9120 0 R (HD.8112) 9121 0 R (HD.8113) 9122 0 R (HD.8114) 9123 0 R (HD.8115) 9124 0 R (HD.8116) 9125 0 R (HD.8117) 9126 0 R (HD.8118) 9127 0 R (HD.8119) 9128 0 R (HD.812) 1136 0 R (HD.8120) 9129 0 R (HD.8121) 9130 0 R (HD.8122) 9131 0 R (HD.8123) 9132 0 R (HD.8124) 9133 0 R ] /Limits [ (HD.8097) (HD.8124) ] >>
+endobj
+11996 0 obj
+<< /Names [ (HD.8125) 9134 0 R (HD.8126) 9135 0 R (HD.8127) 9136 0 R (HD.8128) 9137 0 R (HD.8129) 9138 0 R (HD.813) 1137 0 R (HD.8130) 9139 0 R (HD.8131) 9140 0 R (HD.8132) 9141 0 R (HD.8133) 9142 0 R (HD.8134) 9143 0 R (HD.8135) 9144 0 R (HD.8136) 9145 0 R (HD.8137) 9146 0 R (HD.8138) 9147 0 R (HD.8139) 9148 0 R (HD.814) 1138 0 R (HD.8140) 9149 0 R (HD.8141) 9150 0 R (HD.8142) 9151 0 R (HD.8143) 9152 0 R (HD.8144) 9153 0 R (HD.8145) 9154 0 R (HD.8146) 9155 0 R (HD.8147) 9156 0 R (HD.8148) 9157 0 R (HD.8149) 9158 0 R (HD.815) 1139 0 R (HD.8150) 9159 0 R (HD.8151) 9160 0 R (HD.8152) 9161 0 R (HD.8153) 9166 0 R ] /Limits [ (HD.8125) (HD.8153) ] >>
+endobj
+11997 0 obj
+<< /Names [ (HD.8154) 9167 0 R (HD.8155) 9168 0 R (HD.8156) 9169 0 R (HD.8157) 9170 0 R (HD.8158) 9171 0 R (HD.8159) 9172 0 R (HD.816) 1140 0 R (HD.8160) 9173 0 R (HD.8161) 9174 0 R (HD.8162) 9175 0 R (HD.8163) 9176 0 R (HD.8164) 9177 0 R (HD.8165) 9178 0 R (HD.8166) 9179 0 R (HD.8167) 9180 0 R (HD.8168) 9181 0 R (HD.8169) 9182 0 R (HD.817) 1141 0 R (HD.8170) 9183 0 R (HD.8171) 9184 0 R (HD.8172) 9185 0 R (HD.8173) 9186 0 R (HD.8174) 9187 0 R (HD.8175) 9188 0 R (HD.8176) 9189 0 R (HD.8177) 9190 0 R (HD.8178) 9191 0 R (HD.8179) 9192 0 R (HD.818) 1142 0 R (HD.8180) 9193 0 R (HD.8181) 9194 0 R (HD.8182) 9195 0 R ] /Limits [ (HD.8154) (HD.8182) ] >>
+endobj
+11998 0 obj
+<< /Names [ (HD.8183) 9196 0 R (HD.8184) 9197 0 R (HD.8185) 9198 0 R (HD.8186) 9199 0 R (HD.8187) 9200 0 R (HD.8188) 9201 0 R (HD.8189) 9202 0 R (HD.819) 1147 0 R (HD.8190) 9203 0 R (HD.8191) 9204 0 R (HD.8192) 9205 0 R (HD.8193) 9206 0 R (HD.8194) 9207 0 R (HD.8195) 9208 0 R (HD.8196) 9209 0 R (HD.8197) 9210 0 R (HD.8198) 9211 0 R (HD.8199) 9212 0 R (HD.82) 282 0 R (HD.820) 1148 0 R (HD.8200) 9213 0 R (HD.8201) 9214 0 R (HD.8202) 9215 0 R (HD.8203) 9216 0 R (HD.8204) 9217 0 R (HD.8205) 9218 0 R (HD.8206) 9219 0 R (HD.8207) 9224 0 R (HD.8208) 9225 0 R (HD.8209) 9226 0 R (HD.821) 1149 0 R (HD.8210) 9227 0 R ] /Limits [ (HD.8183) (HD.8210) ] >>
+endobj
+11999 0 obj
+<< /Names [ (HD.8211) 9228 0 R (HD.8212) 9229 0 R (HD.8213) 9230 0 R (HD.8214) 9231 0 R (HD.8215) 9232 0 R (HD.8216) 9233 0 R (HD.8217) 9234 0 R (HD.8218) 9235 0 R (HD.8219) 9236 0 R (HD.822) 1150 0 R (HD.8220) 9237 0 R (HD.8221) 9238 0 R (HD.8222) 9239 0 R (HD.8223) 9240 0 R (HD.8224) 9241 0 R (HD.8225) 9242 0 R (HD.8226) 9243 0 R (HD.8227) 9244 0 R (HD.8228) 9245 0 R (HD.8229) 9246 0 R (HD.823) 1151 0 R (HD.8230) 9247 0 R (HD.8231) 9248 0 R (HD.8232) 9249 0 R (HD.8233) 9250 0 R (HD.8234) 9251 0 R (HD.8235) 9252 0 R (HD.8236) 9253 0 R (HD.8237) 9254 0 R (HD.8238) 9255 0 R (HD.8239) 9256 0 R (HD.824) 1152 0 R ] /Limits [ (HD.8211) (HD.824) ] >>
+endobj
+12000 0 obj
+<< /Names [ (HD.8240) 9257 0 R (HD.8241) 9258 0 R (HD.8242) 9259 0 R (HD.8243) 9260 0 R (HD.8244) 9261 0 R (HD.8245) 9262 0 R (HD.8246) 9263 0 R (HD.8247) 9264 0 R (HD.8248) 9265 0 R (HD.8249) 9266 0 R (HD.825) 1153 0 R (HD.8250) 9267 0 R (HD.8251) 9272 0 R (HD.8252) 9273 0 R (HD.8253) 9274 0 R (HD.8254) 9275 0 R (HD.8255) 9276 0 R (HD.8256) 9277 0 R (HD.8257) 9278 0 R (HD.8258) 9279 0 R (HD.8259) 9280 0 R (HD.826) 1154 0 R (HD.8260) 9281 0 R (HD.8261) 9282 0 R (HD.8262) 9283 0 R (HD.8263) 9284 0 R (HD.8264) 9285 0 R (HD.8265) 9286 0 R (HD.8266) 9287 0 R (HD.8267) 9288 0 R (HD.8268) 9289 0 R (HD.8269) 9290 0 R ] /Limits [ (HD.8240) (HD.8269) ] >>
+endobj
+12001 0 obj
+<< /Names [ (HD.827) 1155 0 R (HD.8270) 9291 0 R (HD.8271) 9292 0 R (HD.8272) 9293 0 R (HD.8273) 9294 0 R (HD.8274) 9295 0 R (HD.8275) 9296 0 R (HD.8276) 9297 0 R (HD.8277) 9298 0 R (HD.8278) 9299 0 R (HD.8279) 9300 0 R (HD.828) 1156 0 R (HD.8280) 9301 0 R (HD.8281) 9302 0 R (HD.8282) 9303 0 R (HD.8283) 9304 0 R (HD.8284) 9305 0 R (HD.8285) 9306 0 R (HD.8286) 9307 0 R (HD.8287) 9308 0 R (HD.8288) 9309 0 R (HD.8289) 9310 0 R (HD.829) 1157 0 R (HD.8290) 9311 0 R (HD.8291) 9312 0 R (HD.8292) 9313 0 R (HD.8293) 9314 0 R (HD.8294) 9315 0 R (HD.8295) 9316 0 R (HD.8296) 9317 0 R (HD.8297) 9318 0 R (HD.8298) 9319 0 R ] /Limits [ (HD.827) (HD.8298) ] >>
+endobj
+12002 0 obj
+<< /Names [ (HD.8299) 9320 0 R (HD.83) 283 0 R (HD.830) 1158 0 R (HD.8300) 9321 0 R (HD.8301) 9322 0 R (HD.8302) 9327 0 R (HD.8303) 9328 0 R (HD.8304) 9329 0 R (HD.8305) 9330 0 R (HD.8306) 9331 0 R (HD.8307) 9332 0 R (HD.8308) 9333 0 R (HD.8309) 9334 0 R (HD.831) 1159 0 R (HD.8310) 9335 0 R (HD.8311) 9336 0 R (HD.8312) 9337 0 R (HD.8313) 9338 0 R (HD.8314) 9339 0 R (HD.8315) 9340 0 R (HD.8316) 9341 0 R (HD.8317) 9342 0 R (HD.8318) 9343 0 R (HD.8319) 9344 0 R (HD.832) 1160 0 R (HD.8320) 9345 0 R (HD.8321) 9346 0 R (HD.8322) 9347 0 R (HD.8323) 9348 0 R (HD.8324) 9349 0 R (HD.8325) 9350 0 R (HD.8326) 9351 0 R ] /Limits [ (HD.8299) (HD.8326) ] >>
+endobj
+12003 0 obj
+<< /Names [ (HD.8327) 9352 0 R (HD.8328) 9353 0 R (HD.8329) 9354 0 R (HD.833) 1161 0 R (HD.8330) 9355 0 R (HD.8331) 9356 0 R (HD.8332) 9357 0 R (HD.8333) 9358 0 R (HD.8334) 9359 0 R (HD.8335) 9360 0 R (HD.8336) 9361 0 R (HD.8337) 9362 0 R (HD.8338) 9363 0 R (HD.8339) 9364 0 R (HD.834) 1162 0 R (HD.8340) 9365 0 R (HD.8341) 9370 0 R (HD.8342) 9371 0 R (HD.8343) 9372 0 R (HD.8344) 9373 0 R (HD.8345) 9374 0 R (HD.8346) 9375 0 R (HD.8347) 9376 0 R (HD.8348) 9377 0 R (HD.8349) 9378 0 R (HD.835) 1163 0 R (HD.8350) 9379 0 R (HD.8351) 9380 0 R (HD.8352) 9381 0 R (HD.8353) 9382 0 R (HD.8354) 9383 0 R (HD.8355) 9384 0 R ] /Limits [ (HD.8327) (HD.8355) ] >>
+endobj
+12004 0 obj
+<< /Names [ (HD.8356) 9385 0 R (HD.8357) 9386 0 R (HD.8358) 9387 0 R (HD.8359) 9388 0 R (HD.836) 1164 0 R (HD.8360) 9389 0 R (HD.8361) 9390 0 R (HD.8362) 9391 0 R (HD.8363) 9392 0 R (HD.8364) 9393 0 R (HD.8365) 9394 0 R (HD.8366) 9395 0 R (HD.8367) 9396 0 R (HD.8368) 9397 0 R (HD.8369) 9398 0 R (HD.837) 1165 0 R (HD.8370) 9399 0 R (HD.8371) 9400 0 R (HD.8372) 9401 0 R (HD.8373) 9402 0 R (HD.8374) 9403 0 R (HD.8375) 9404 0 R (HD.8376) 9405 0 R (HD.8377) 9406 0 R (HD.8378) 9407 0 R (HD.8379) 9408 0 R (HD.838) 1166 0 R (HD.8380) 9409 0 R (HD.8381) 9410 0 R (HD.8382) 9411 0 R (HD.8383) 9412 0 R (HD.8384) 9413 0 R ] /Limits [ (HD.8356) (HD.8384) ] >>
+endobj
+12005 0 obj
+<< /Names [ (HD.8385) 9420 0 R (HD.8386) 9421 0 R (HD.8387) 9422 0 R (HD.8388) 9423 0 R (HD.8389) 9424 0 R (HD.839) 1167 0 R (HD.8390) 9425 0 R (HD.8391) 9426 0 R (HD.8392) 9427 0 R (HD.8393) 9428 0 R (HD.8394) 9429 0 R (HD.8395) 9430 0 R (HD.8396) 9431 0 R (HD.8397) 9432 0 R (HD.8398) 9433 0 R (HD.8399) 9434 0 R (HD.84) 284 0 R (HD.840) 1168 0 R (HD.8400) 9435 0 R (HD.8401) 9436 0 R (HD.8402) 9437 0 R (HD.8403) 9438 0 R (HD.8404) 9439 0 R (HD.8405) 9440 0 R (HD.8406) 9441 0 R (HD.8407) 9442 0 R (HD.8408) 9443 0 R (HD.8409) 9444 0 R (HD.841) 1169 0 R (HD.8410) 9445 0 R (HD.8411) 9446 0 R (HD.8412) 9447 0 R ] /Limits [ (HD.8385) (HD.8412) ] >>
+endobj
+12006 0 obj
+<< /Names [ (HD.8413) 9448 0 R (HD.8414) 9449 0 R (HD.8415) 9450 0 R (HD.8416) 9451 0 R (HD.8417) 9452 0 R (HD.8418) 9453 0 R (HD.8419) 9454 0 R (HD.842) 1170 0 R (HD.8420) 9455 0 R (HD.8421) 9456 0 R (HD.8422) 9462 0 R (HD.8423) 9463 0 R (HD.8424) 9464 0 R (HD.8425) 9465 0 R (HD.8426) 9466 0 R (HD.8427) 9467 0 R (HD.8428) 9468 0 R (HD.8429) 9469 0 R (HD.843) 1171 0 R (HD.8430) 9470 0 R (HD.8431) 9471 0 R (HD.8432) 9472 0 R (HD.8433) 9473 0 R (HD.8434) 9474 0 R (HD.8435) 9475 0 R (HD.8436) 9476 0 R (HD.8437) 9477 0 R (HD.8438) 9478 0 R (HD.8439) 9479 0 R (HD.844) 1172 0 R (HD.8440) 9480 0 R (HD.8441) 9481 0 R ] /Limits [ (HD.8413) (HD.8441) ] >>
+endobj
+12007 0 obj
+<< /Names [ (HD.8442) 9482 0 R (HD.8443) 9483 0 R (HD.8444) 9484 0 R (HD.8445) 9485 0 R (HD.8446) 9486 0 R (HD.8447) 9487 0 R (HD.8448) 9488 0 R (HD.8449) 9489 0 R (HD.845) 1173 0 R (HD.8450) 9490 0 R (HD.8451) 9491 0 R (HD.8452) 9492 0 R (HD.8453) 9493 0 R (HD.8454) 9494 0 R (HD.8455) 9495 0 R (HD.8456) 9496 0 R (HD.8457) 9497 0 R (HD.8458) 9498 0 R (HD.8459) 9499 0 R (HD.846) 1174 0 R (HD.8460) 9500 0 R (HD.8461) 9501 0 R (HD.8462) 9506 0 R (HD.8463) 9507 0 R (HD.8464) 9508 0 R (HD.8465) 9509 0 R (HD.8466) 9510 0 R (HD.8467) 9511 0 R (HD.8468) 9512 0 R (HD.8469) 9513 0 R (HD.847) 1175 0 R (HD.8470) 9514 0 R ] /Limits [ (HD.8442) (HD.8470) ] >>
+endobj
+12008 0 obj
+<< /Names [ (HD.8471) 9515 0 R (HD.8472) 9516 0 R (HD.8473) 9517 0 R (HD.8474) 9518 0 R (HD.8475) 9519 0 R (HD.8476) 9520 0 R (HD.8477) 9521 0 R (HD.8478) 9522 0 R (HD.8479) 9523 0 R (HD.848) 1176 0 R (HD.8480) 9524 0 R (HD.8481) 9525 0 R (HD.8482) 9526 0 R (HD.8483) 9527 0 R (HD.8484) 9528 0 R (HD.8485) 9529 0 R (HD.8486) 9530 0 R (HD.8487) 9531 0 R (HD.8488) 9532 0 R (HD.8489) 9533 0 R (HD.849) 1177 0 R (HD.8490) 9534 0 R (HD.8491) 9535 0 R (HD.8492) 9536 0 R (HD.8493) 9537 0 R (HD.8494) 9538 0 R (HD.8495) 9539 0 R (HD.8496) 9540 0 R (HD.8497) 9541 0 R (HD.8498) 9542 0 R (HD.8499) 9543 0 R (HD.85) 285 0 R ] /Limits [ (HD.8471) (HD.85) ] >>
+endobj
+12009 0 obj
+<< /Names [ (HD.850) 1178 0 R (HD.8500) 9544 0 R (HD.8501) 9545 0 R (HD.8502) 9546 0 R (HD.8503) 9547 0 R (HD.8504) 9548 0 R (HD.8505) 9549 0 R (HD.8506) 9550 0 R (HD.8507) 9551 0 R (HD.8508) 9552 0 R (HD.8509) 9553 0 R (HD.851) 1179 0 R (HD.8510) 9554 0 R (HD.8511) 9555 0 R (HD.8512) 9556 0 R (HD.8513) 9557 0 R (HD.8514) 9558 0 R (HD.8515) 9559 0 R (HD.8516) 9564 0 R (HD.8517) 9565 0 R (HD.8518) 9566 0 R (HD.8519) 9567 0 R (HD.852) 1180 0 R (HD.8520) 9568 0 R (HD.8521) 9569 0 R (HD.8522) 9570 0 R (HD.8523) 9571 0 R (HD.8524) 9572 0 R (HD.8525) 9573 0 R (HD.8526) 9574 0 R (HD.8527) 9575 0 R (HD.8528) 9576 0 R ] /Limits [ (HD.850) (HD.8528) ] >>
+endobj
+12010 0 obj
+<< /Names [ (HD.8529) 9577 0 R (HD.853) 1181 0 R (HD.8530) 9578 0 R (HD.8531) 9579 0 R (HD.8532) 9580 0 R (HD.8533) 9581 0 R (HD.8534) 9582 0 R (HD.8535) 9583 0 R (HD.8536) 9584 0 R (HD.8537) 9585 0 R (HD.8538) 9586 0 R (HD.8539) 9587 0 R (HD.854) 1182 0 R (HD.8540) 9588 0 R (HD.8541) 9589 0 R (HD.8542) 9590 0 R (HD.8543) 9591 0 R (HD.8544) 9592 0 R (HD.8545) 9593 0 R (HD.8546) 9594 0 R (HD.8547) 9595 0 R (HD.8548) 9596 0 R (HD.8549) 9597 0 R (HD.855) 1183 0 R (HD.8550) 9598 0 R (HD.8551) 9599 0 R (HD.8552) 9600 0 R (HD.8553) 9601 0 R (HD.8554) 9602 0 R (HD.8555) 9603 0 R (HD.8556) 9604 0 R (HD.8557) 9605 0 R ] /Limits [ (HD.8529) (HD.8557) ] >>
+endobj
+12011 0 obj
+<< /Names [ (HD.8558) 9606 0 R (HD.8559) 9607 0 R (HD.856) 1184 0 R (HD.8560) 9608 0 R (HD.8561) 9609 0 R (HD.8562) 9610 0 R (HD.8563) 9611 0 R (HD.8564) 9612 0 R (HD.8565) 9613 0 R (HD.8566) 9614 0 R (HD.8567) 9615 0 R (HD.8568) 9616 0 R (HD.8569) 9617 0 R (HD.857) 1185 0 R (HD.8570) 9618 0 R (HD.8571) 9623 0 R (HD.8572) 9624 0 R (HD.8573) 9625 0 R (HD.8574) 9626 0 R (HD.8575) 9627 0 R (HD.8576) 9628 0 R (HD.8577) 9629 0 R (HD.8578) 9630 0 R (HD.8579) 9631 0 R (HD.858) 1186 0 R (HD.8580) 9632 0 R (HD.8581) 9633 0 R (HD.8582) 9634 0 R (HD.8583) 9635 0 R (HD.8584) 9636 0 R (HD.8585) 9637 0 R (HD.8586) 9638 0 R ] /Limits [ (HD.8558) (HD.8586) ] >>
+endobj
+12012 0 obj
+<< /Names [ (HD.8587) 9639 0 R (HD.8588) 9640 0 R (HD.8589) 9641 0 R (HD.859) 1187 0 R (HD.8590) 9642 0 R (HD.8591) 9643 0 R (HD.8592) 9644 0 R (HD.8593) 9645 0 R (HD.8594) 9646 0 R (HD.8595) 9647 0 R (HD.8596) 9648 0 R (HD.8597) 9649 0 R (HD.8598) 9650 0 R (HD.8599) 9651 0 R (HD.86) 286 0 R (HD.860) 1188 0 R (HD.8600) 9652 0 R (HD.8601) 9653 0 R (HD.8602) 9654 0 R (HD.8603) 9655 0 R (HD.8604) 9656 0 R (HD.8605) 9657 0 R (HD.8606) 9658 0 R (HD.8607) 9659 0 R (HD.8608) 9660 0 R (HD.8609) 9661 0 R (HD.861) 1189 0 R (HD.8610) 9662 0 R (HD.8611) 9663 0 R (HD.8612) 9664 0 R (HD.8613) 9665 0 R (HD.8614) 9666 0 R ] /Limits [ (HD.8587) (HD.8614) ] >>
+endobj
+12013 0 obj
+<< /Names [ (HD.8615) 9671 0 R (HD.8616) 9672 0 R (HD.8617) 9673 0 R (HD.8618) 9674 0 R (HD.8619) 9675 0 R (HD.862) 1190 0 R (HD.8620) 9676 0 R (HD.8621) 9677 0 R (HD.8622) 9678 0 R (HD.8623) 9679 0 R (HD.8624) 9680 0 R (HD.8625) 9681 0 R (HD.8626) 9682 0 R (HD.8627) 9683 0 R (HD.8628) 9684 0 R (HD.8629) 9685 0 R (HD.863) 1191 0 R (HD.8630) 9686 0 R (HD.8631) 9687 0 R (HD.8632) 9688 0 R (HD.8633) 9689 0 R (HD.8634) 9690 0 R (HD.8635) 9691 0 R (HD.8636) 9692 0 R (HD.8637) 9693 0 R (HD.8638) 9694 0 R (HD.8639) 9695 0 R (HD.864) 1192 0 R (HD.8640) 9696 0 R (HD.8641) 9697 0 R (HD.8642) 9698 0 R (HD.8643) 9699 0 R ] /Limits [ (HD.8615) (HD.8643) ] >>
+endobj
+12014 0 obj
+<< /Names [ (HD.8644) 9700 0 R (HD.8645) 9701 0 R (HD.8646) 9702 0 R (HD.8647) 9703 0 R (HD.8648) 9704 0 R (HD.8649) 9705 0 R (HD.865) 1193 0 R (HD.8650) 9706 0 R (HD.8651) 9707 0 R (HD.8652) 9708 0 R (HD.8653) 9709 0 R (HD.8654) 9710 0 R (HD.8655) 9711 0 R (HD.8656) 9712 0 R (HD.8657) 9713 0 R (HD.8658) 9714 0 R (HD.8659) 9715 0 R (HD.866) 1194 0 R (HD.8660) 9716 0 R (HD.8661) 9717 0 R (HD.8662) 9718 0 R (HD.8663) 9719 0 R (HD.8664) 9720 0 R (HD.8665) 9721 0 R (HD.8666) 9722 0 R (HD.8667) 9723 0 R (HD.8668) 9724 0 R (HD.8669) 9725 0 R (HD.867) 1195 0 R (HD.8670) 9726 0 R (HD.8671) 9727 0 R (HD.8672) 9728 0 R ] /Limits [ (HD.8644) (HD.8672) ] >>
+endobj
+12015 0 obj
+<< /Names [ (HD.8673) 9729 0 R (HD.8674) 9734 0 R (HD.8675) 9735 0 R (HD.8676) 9736 0 R (HD.8677) 9737 0 R (HD.8678) 9738 0 R (HD.8679) 9739 0 R (HD.868) 1196 0 R (HD.8680) 9740 0 R (HD.8681) 9741 0 R (HD.8682) 9742 0 R (HD.8683) 9743 0 R (HD.8684) 9744 0 R (HD.8685) 9745 0 R (HD.8686) 9746 0 R (HD.8687) 9747 0 R (HD.8688) 9748 0 R (HD.8689) 9749 0 R (HD.869) 1201 0 R (HD.8690) 9750 0 R (HD.8691) 9751 0 R (HD.8692) 9752 0 R (HD.8693) 9753 0 R (HD.8694) 9754 0 R (HD.8695) 9755 0 R (HD.8696) 9756 0 R (HD.8697) 9757 0 R (HD.8698) 9758 0 R (HD.8699) 9759 0 R (HD.87) 287 0 R (HD.870) 1202 0 R (HD.8700) 9760 0 R ] /Limits [ (HD.8673) (HD.8700) ] >>
+endobj
+12016 0 obj
+<< /Names [ (HD.8701) 9761 0 R (HD.8702) 9762 0 R (HD.8703) 9763 0 R (HD.8704) 9764 0 R (HD.8705) 9765 0 R (HD.8706) 9766 0 R (HD.8707) 9767 0 R (HD.8708) 9768 0 R (HD.8709) 9769 0 R (HD.871) 1203 0 R (HD.8710) 9770 0 R (HD.8711) 9771 0 R (HD.8712) 9772 0 R (HD.8713) 9773 0 R (HD.8714) 9774 0 R (HD.8715) 9775 0 R (HD.8716) 9776 0 R (HD.8717) 9777 0 R (HD.8718) 9778 0 R (HD.8719) 9779 0 R (HD.872) 1204 0 R (HD.8720) 9780 0 R (HD.8721) 9781 0 R (HD.8722) 9782 0 R (HD.8723) 9787 0 R (HD.8724) 9788 0 R (HD.8725) 9789 0 R (HD.8726) 9790 0 R (HD.8727) 9791 0 R (HD.8728) 9792 0 R (HD.8729) 9793 0 R (HD.873) 1205 0 R ] /Limits [ (HD.8701) (HD.873) ] >>
+endobj
+12017 0 obj
+<< /Names [ (HD.8730) 9794 0 R (HD.8731) 9795 0 R (HD.8732) 9796 0 R (HD.8733) 9797 0 R (HD.8734) 9798 0 R (HD.8735) 9799 0 R (HD.8736) 9800 0 R (HD.8737) 9801 0 R (HD.8738) 9802 0 R (HD.8739) 9803 0 R (HD.874) 1206 0 R (HD.8740) 9804 0 R (HD.8741) 9805 0 R (HD.8742) 9806 0 R (HD.8743) 9807 0 R (HD.8744) 9808 0 R (HD.8745) 9809 0 R (HD.8746) 9810 0 R (HD.8747) 9811 0 R (HD.8748) 9812 0 R (HD.8749) 9813 0 R (HD.875) 1207 0 R (HD.8750) 9814 0 R (HD.8751) 9815 0 R (HD.8752) 9816 0 R (HD.8753) 9817 0 R (HD.8754) 9818 0 R (HD.8755) 9819 0 R (HD.8756) 9820 0 R (HD.8757) 9821 0 R (HD.8758) 9822 0 R (HD.8759) 9823 0 R ] /Limits [ (HD.8730) (HD.8759) ] >>
+endobj
+12018 0 obj
+<< /Names [ (HD.876) 1208 0 R (HD.8760) 9824 0 R (HD.8761) 9825 0 R (HD.8762) 9826 0 R (HD.8763) 9827 0 R (HD.8764) 9828 0 R (HD.8765) 9829 0 R (HD.8766) 9830 0 R (HD.8767) 9831 0 R (HD.8768) 9832 0 R (HD.8769) 9833 0 R (HD.877) 1209 0 R (HD.8770) 9834 0 R (HD.8771) 9835 0 R (HD.8772) 9836 0 R (HD.8773) 9837 0 R (HD.8774) 9842 0 R (HD.8775) 9843 0 R (HD.8776) 9844 0 R (HD.8777) 9845 0 R (HD.8778) 9846 0 R (HD.8779) 9847 0 R (HD.878) 1210 0 R (HD.8780) 9848 0 R (HD.8781) 9849 0 R (HD.8782) 9850 0 R (HD.8783) 9851 0 R (HD.8784) 9852 0 R (HD.8785) 9853 0 R (HD.8786) 9854 0 R (HD.8787) 9855 0 R (HD.8788) 9856 0 R ] /Limits [ (HD.876) (HD.8788) ] >>
+endobj
+12019 0 obj
+<< /Names [ (HD.8789) 9857 0 R (HD.879) 1211 0 R (HD.8790) 9858 0 R (HD.8791) 9859 0 R (HD.8792) 9860 0 R (HD.8793) 9861 0 R (HD.8794) 9862 0 R (HD.8795) 9863 0 R (HD.8796) 9864 0 R (HD.8797) 9865 0 R (HD.8798) 9866 0 R (HD.8799) 9867 0 R (HD.88) 288 0 R (HD.880) 1212 0 R (HD.8800) 9868 0 R (HD.8801) 9869 0 R (HD.8802) 9870 0 R (HD.8803) 9871 0 R (HD.8804) 9872 0 R (HD.8805) 9873 0 R (HD.8806) 9874 0 R (HD.8807) 9875 0 R (HD.8808) 9876 0 R (HD.8809) 9881 0 R (HD.881) 1213 0 R (HD.8810) 9882 0 R (HD.8811) 9883 0 R (HD.8812) 9884 0 R (HD.8813) 9885 0 R (HD.8814) 9886 0 R (HD.8815) 9887 0 R (HD.8816) 9888 0 R ] /Limits [ (HD.8789) (HD.8816) ] >>
+endobj
+12020 0 obj
+<< /Names [ (HD.8817) 9889 0 R (HD.8818) 9890 0 R (HD.8819) 9891 0 R (HD.882) 1214 0 R (HD.8820) 9892 0 R (HD.8821) 9893 0 R (HD.8822) 9894 0 R (HD.8823) 9895 0 R (HD.8824) 9896 0 R (HD.8825) 9897 0 R (HD.8826) 9898 0 R (HD.8827) 9899 0 R (HD.8828) 9900 0 R (HD.8829) 9901 0 R (HD.883) 1215 0 R (HD.8830) 9902 0 R (HD.8831) 9903 0 R (HD.8832) 9904 0 R (HD.8833) 9905 0 R (HD.8834) 9906 0 R (HD.8835) 9907 0 R (HD.8836) 9908 0 R (HD.8837) 9909 0 R (HD.8838) 9910 0 R (HD.8839) 9911 0 R (HD.884) 1216 0 R (HD.8840) 9912 0 R (HD.8841) 9913 0 R (HD.8842) 9914 0 R (HD.8843) 9915 0 R (HD.8844) 9916 0 R (HD.8845) 9917 0 R ] /Limits [ (HD.8817) (HD.8845) ] >>
+endobj
+12021 0 obj
+<< /Names [ (HD.8846) 9918 0 R (HD.8847) 9919 0 R (HD.8848) 9920 0 R (HD.8849) 9921 0 R (HD.885) 1217 0 R (HD.8850) 9922 0 R (HD.8851) 9923 0 R (HD.8852) 9924 0 R (HD.8853) 9925 0 R (HD.8854) 9926 0 R (HD.8855) 9932 0 R (HD.8856) 9933 0 R (HD.8857) 9934 0 R (HD.8858) 9935 0 R (HD.8859) 9936 0 R (HD.886) 1218 0 R (HD.8860) 9937 0 R (HD.8861) 9938 0 R (HD.8862) 9939 0 R (HD.8863) 9940 0 R (HD.8864) 9941 0 R (HD.8865) 9942 0 R (HD.8866) 9943 0 R (HD.8867) 9944 0 R (HD.8868) 9945 0 R (HD.8869) 9946 0 R (HD.887) 1219 0 R (HD.8870) 9947 0 R (HD.8871) 9948 0 R (HD.8872) 9949 0 R (HD.8873) 9950 0 R (HD.8874) 9951 0 R ] /Limits [ (HD.8846) (HD.8874) ] >>
+endobj
+12022 0 obj
+<< /Names [ (HD.8875) 9952 0 R (HD.8876) 9953 0 R (HD.8877) 9954 0 R (HD.8878) 9955 0 R (HD.8879) 9956 0 R (HD.888) 1220 0 R (HD.8880) 9957 0 R (HD.8881) 9958 0 R (HD.8882) 9959 0 R (HD.8883) 9960 0 R (HD.8884) 9961 0 R (HD.8885) 9962 0 R (HD.8886) 9963 0 R (HD.8887) 9964 0 R (HD.8888) 9965 0 R (HD.8889) 9966 0 R (HD.889) 1221 0 R (HD.8890) 9967 0 R (HD.8891) 9968 0 R (HD.8892) 9969 0 R (HD.8893) 9970 0 R (HD.8894) 9971 0 R (HD.8895) 9972 0 R (HD.8896) 9973 0 R (HD.8897) 9974 0 R (HD.8898) 9975 0 R (HD.8899) 9976 0 R (HD.89) 289 0 R (HD.890) 1222 0 R (HD.8900) 9977 0 R (HD.8901) 9978 0 R (HD.8902) 9979 0 R ] /Limits [ (HD.8875) (HD.8902) ] >>
+endobj
+12023 0 obj
+<< /Names [ (HD.8903) 9980 0 R (HD.8904) 9985 0 R (HD.8905) 9986 0 R (HD.8906) 9987 0 R (HD.8907) 9988 0 R (HD.8908) 9989 0 R (HD.8909) 9990 0 R (HD.891) 1223 0 R (HD.8910) 9991 0 R (HD.8911) 9992 0 R (HD.8912) 9993 0 R (HD.8913) 9994 0 R (HD.8914) 9995 0 R (HD.8915) 9996 0 R (HD.8916) 9997 0 R (HD.8917) 9998 0 R (HD.8918) 9999 0 R (HD.8919) 10000 0 R (HD.892) 1224 0 R (HD.8920) 10001 0 R (HD.8921) 10002 0 R (HD.8922) 10003 0 R (HD.8923) 10004 0 R (HD.8924) 10005 0 R (HD.8925) 10006 0 R (HD.8926) 10007 0 R (HD.8927) 10008 0 R (HD.8928) 10009 0 R (HD.8929) 10010 0 R (HD.893) 1225 0 R (HD.8930) 10011 0 R (HD.8931) 10012 0 R ] /Limits [ (HD.8903) (HD.8931) ] >>
+endobj
+12024 0 obj
+<< /Names [ (HD.8932) 10013 0 R (HD.8933) 10014 0 R (HD.8934) 10015 0 R (HD.8935) 10016 0 R (HD.8936) 10017 0 R (HD.8937) 10018 0 R (HD.8938) 10019 0 R (HD.8939) 10020 0 R (HD.894) 1226 0 R (HD.8940) 10021 0 R (HD.8941) 10022 0 R (HD.8942) 10023 0 R (HD.8943) 10024 0 R (HD.8944) 10025 0 R (HD.8945) 10026 0 R (HD.8946) 10027 0 R (HD.8947) 10028 0 R (HD.8948) 10029 0 R (HD.8949) 10030 0 R (HD.895) 1227 0 R (HD.8950) 10031 0 R (HD.8951) 10032 0 R (HD.8952) 10033 0 R (HD.8953) 10034 0 R (HD.8954) 10035 0 R (HD.8955) 10036 0 R (HD.8956) 10037 0 R (HD.8957) 10038 0 R (HD.8958) 10039 0 R (HD.8959) 10040 0 R (HD.896) 1228 0 R (HD.8960) 10041 0 R ] /Limits [ (HD.8932) (HD.8960) ] >>
+endobj
+12025 0 obj
+<< /Names [ (HD.8961) 10042 0 R (HD.8962) 10047 0 R (HD.8963) 10048 0 R (HD.8964) 10049 0 R (HD.8965) 10050 0 R (HD.8966) 10051 0 R (HD.8967) 10052 0 R (HD.8968) 10053 0 R (HD.8969) 10054 0 R (HD.897) 1229 0 R (HD.8970) 10055 0 R (HD.8971) 10056 0 R (HD.8972) 10057 0 R (HD.8973) 10058 0 R (HD.8974) 10059 0 R (HD.8975) 10060 0 R (HD.8976) 10061 0 R (HD.8977) 10062 0 R (HD.8978) 10063 0 R (HD.8979) 10064 0 R (HD.898) 1230 0 R (HD.8980) 10065 0 R (HD.8981) 10066 0 R (HD.8982) 10067 0 R (HD.8983) 10068 0 R (HD.8984) 10069 0 R (HD.8985) 10070 0 R (HD.8986) 10071 0 R (HD.8987) 10072 0 R (HD.8988) 10073 0 R (HD.8989) 10074 0 R (HD.899) 1231 0 R ] /Limits [ (HD.8961) (HD.899) ] >>
+endobj
+12026 0 obj
+<< /Names [ (HD.8990) 10075 0 R (HD.8991) 10076 0 R (HD.8992) 10077 0 R (HD.8993) 10078 0 R (HD.8994) 10079 0 R (HD.8995) 10080 0 R (HD.8996) 10081 0 R (HD.8997) 10082 0 R (HD.8998) 10083 0 R (HD.8999) 10084 0 R (HD.9) 197 0 R (HD.90) 290 0 R (HD.900) 1232 0 R (HD.9000) 10085 0 R (HD.9001) 10086 0 R (HD.9002) 10087 0 R (HD.9003) 10088 0 R (HD.9004) 10089 0 R (HD.9005) 10090 0 R (HD.9006) 10091 0 R (HD.9007) 10092 0 R (HD.9008) 10093 0 R (HD.9009) 10094 0 R (HD.901) 1233 0 R (HD.9010) 10095 0 R (HD.9011) 10096 0 R (HD.9012) 10097 0 R (HD.9013) 10098 0 R (HD.9014) 10099 0 R (HD.9015) 10100 0 R (HD.9016) 10101 0 R (HD.9017) 10102 0 R ] /Limits [ (HD.8990) (HD.9017) ] >>
+endobj
+12027 0 obj
+<< /Names [ (HD.9018) 10103 0 R (HD.9019) 10104 0 R (HD.902) 1234 0 R (HD.9020) 10105 0 R (HD.9021) 10110 0 R (HD.9022) 10111 0 R (HD.9023) 10112 0 R (HD.9024) 10113 0 R (HD.9025) 10114 0 R (HD.9026) 10115 0 R (HD.9027) 10116 0 R (HD.9028) 10117 0 R (HD.9029) 10118 0 R (HD.903) 1235 0 R (HD.9030) 10119 0 R (HD.9031) 10120 0 R (HD.9032) 10121 0 R (HD.9033) 10122 0 R (HD.9034) 10123 0 R (HD.9035) 10124 0 R (HD.9036) 10125 0 R (HD.9037) 10126 0 R (HD.9038) 10127 0 R (HD.9039) 10128 0 R (HD.904) 1236 0 R (HD.9040) 10129 0 R (HD.9041) 10130 0 R (HD.9042) 10131 0 R (HD.9043) 10132 0 R (HD.9044) 10133 0 R (HD.9045) 10134 0 R (HD.9046) 10135 0 R ] /Limits [ (HD.9018) (HD.9046) ] >>
+endobj
+12028 0 obj
+<< /Names [ (HD.9047) 10136 0 R (HD.9048) 10137 0 R (HD.9049) 10138 0 R (HD.905) 1237 0 R (HD.9050) 10139 0 R (HD.9051) 10140 0 R (HD.9052) 10141 0 R (HD.9053) 10142 0 R (HD.9054) 10143 0 R (HD.9055) 10144 0 R (HD.9056) 10145 0 R (HD.9057) 10146 0 R (HD.9058) 10147 0 R (HD.9059) 10148 0 R (HD.906) 1238 0 R (HD.9060) 10149 0 R (HD.9061) 10150 0 R (HD.9062) 10151 0 R (HD.9063) 10152 0 R (HD.9064) 10153 0 R (HD.9065) 10154 0 R (HD.9066) 10155 0 R (HD.9067) 10156 0 R (HD.9068) 10157 0 R (HD.9069) 10158 0 R (HD.907) 1239 0 R (HD.9070) 10159 0 R (HD.9071) 10160 0 R (HD.9072) 10161 0 R (HD.9073) 10162 0 R (HD.9074) 10163 0 R (HD.9075) 10164 0 R ] /Limits [ (HD.9047) (HD.9075) ] >>
+endobj
+12029 0 obj
+<< /Names [ (HD.9076) 10165 0 R (HD.9077) 10170 0 R (HD.9078) 10171 0 R (HD.9079) 10172 0 R (HD.908) 1240 0 R (HD.9080) 10173 0 R (HD.9081) 10174 0 R (HD.9082) 10175 0 R (HD.9083) 10176 0 R (HD.9084) 10177 0 R (HD.9085) 10178 0 R (HD.9086) 10179 0 R (HD.9087) 10180 0 R (HD.9088) 10181 0 R (HD.9089) 10182 0 R (HD.909) 1241 0 R (HD.9090) 10183 0 R (HD.9091) 10184 0 R (HD.9092) 10185 0 R (HD.9093) 10186 0 R (HD.9094) 10187 0 R (HD.9095) 10188 0 R (HD.9096) 10189 0 R (HD.9097) 10190 0 R (HD.9098) 10191 0 R (HD.9099) 10192 0 R (HD.91) 291 0 R (HD.910) 1242 0 R (HD.9100) 10193 0 R (HD.9101) 10194 0 R (HD.9102) 10195 0 R (HD.9103) 10196 0 R ] /Limits [ (HD.9076) (HD.9103) ] >>
+endobj
+12030 0 obj
+<< /Names [ (HD.9104) 10197 0 R (HD.9105) 10198 0 R (HD.9106) 10199 0 R (HD.9107) 10200 0 R (HD.9108) 10201 0 R (HD.9109) 10202 0 R (HD.911) 1243 0 R (HD.9110) 10203 0 R (HD.9111) 10204 0 R (HD.9112) 10205 0 R (HD.9113) 10206 0 R (HD.9114) 10207 0 R (HD.9115) 10208 0 R (HD.9116) 10209 0 R (HD.9117) 10210 0 R (HD.9118) 10211 0 R (HD.9119) 10212 0 R (HD.912) 1244 0 R (HD.9120) 10213 0 R (HD.9121) 10214 0 R (HD.9122) 10215 0 R (HD.9123) 10216 0 R (HD.9124) 10217 0 R (HD.9125) 10218 0 R (HD.9126) 10219 0 R (HD.9127) 10220 0 R (HD.9128) 10221 0 R (HD.9129) 10222 0 R (HD.913) 1245 0 R (HD.9130) 10223 0 R (HD.9131) 10224 0 R (HD.9132) 10225 0 R ] /Limits [ (HD.9104) (HD.9132) ] >>
+endobj
+12031 0 obj
+<< /Names [ (HD.9133) 10226 0 R (HD.9134) 10227 0 R (HD.9135) 10228 0 R (HD.9136) 10229 0 R (HD.9137) 10230 0 R (HD.9138) 10235 0 R (HD.9139) 10236 0 R (HD.914) 1246 0 R (HD.9140) 10237 0 R (HD.9141) 10238 0 R (HD.9142) 10239 0 R (HD.9143) 10240 0 R (HD.9144) 10241 0 R (HD.9145) 10242 0 R (HD.9146) 10243 0 R (HD.9147) 10244 0 R (HD.9148) 10245 0 R (HD.9149) 10246 0 R (HD.915) 1247 0 R (HD.9150) 10247 0 R (HD.9151) 10248 0 R (HD.9152) 10249 0 R (HD.9153) 10250 0 R (HD.9154) 10251 0 R (HD.9155) 10252 0 R (HD.9156) 10253 0 R (HD.9157) 10254 0 R (HD.9158) 10255 0 R (HD.9159) 10256 0 R (HD.916) 1248 0 R (HD.9160) 10257 0 R (HD.9161) 10258 0 R ] /Limits [ (HD.9133) (HD.9161) ] >>
+endobj
+12032 0 obj
+<< /Names [ (HD.9162) 10259 0 R (HD.9163) 10260 0 R (HD.9164) 10261 0 R (HD.9165) 10262 0 R (HD.9166) 10263 0 R (HD.9167) 10264 0 R (HD.9168) 10265 0 R (HD.9169) 10266 0 R (HD.917) 1249 0 R (HD.9170) 10267 0 R (HD.9171) 10268 0 R (HD.9172) 10269 0 R (HD.9173) 10270 0 R (HD.9174) 10271 0 R (HD.9175) 10272 0 R (HD.9176) 10273 0 R (HD.9177) 10274 0 R (HD.9178) 10275 0 R (HD.9179) 10276 0 R (HD.918) 1250 0 R (HD.9180) 10277 0 R (HD.9181) 10278 0 R (HD.9182) 10279 0 R (HD.9183) 10280 0 R (HD.9184) 10281 0 R (HD.9185) 10282 0 R (HD.9186) 10283 0 R (HD.9187) 10284 0 R (HD.9188) 10285 0 R (HD.9189) 10286 0 R (HD.919) 1251 0 R (HD.9190) 10287 0 R ] /Limits [ (HD.9162) (HD.9190) ] >>
+endobj
+12033 0 obj
+<< /Names [ (HD.9191) 10288 0 R (HD.9192) 10289 0 R (HD.9193) 10290 0 R (HD.9194) 10291 0 R (HD.9195) 10292 0 R (HD.9196) 10293 0 R (HD.9197) 10298 0 R (HD.9198) 10299 0 R (HD.9199) 10300 0 R (HD.92) 292 0 R (HD.920) 1252 0 R (HD.9200) 10301 0 R (HD.9201) 10302 0 R (HD.9202) 10303 0 R (HD.9203) 10304 0 R (HD.9204) 10305 0 R (HD.9205) 10306 0 R (HD.9206) 10307 0 R (HD.9207) 10308 0 R (HD.9208) 10309 0 R (HD.9209) 10310 0 R (HD.921) 1253 0 R (HD.9210) 10311 0 R (HD.9211) 10312 0 R (HD.9212) 10313 0 R (HD.9213) 10314 0 R (HD.9214) 10315 0 R (HD.9215) 10316 0 R (HD.9216) 10317 0 R (HD.9217) 10318 0 R (HD.9218) 10319 0 R (HD.9219) 10320 0 R ] /Limits [ (HD.9191) (HD.9219) ] >>
+endobj
+12034 0 obj
+<< /Names [ (HD.922) 1254 0 R (HD.9220) 10321 0 R (HD.9221) 10322 0 R (HD.9222) 10323 0 R (HD.9223) 10324 0 R (HD.9224) 10325 0 R (HD.9225) 10326 0 R (HD.9226) 10327 0 R (HD.9227) 10328 0 R (HD.9228) 10329 0 R (HD.9229) 10330 0 R (HD.923) 1255 0 R (HD.9230) 10331 0 R (HD.9231) 10332 0 R (HD.9232) 10333 0 R (HD.9233) 10334 0 R (HD.9234) 10335 0 R (HD.9235) 10336 0 R (HD.9236) 10337 0 R (HD.9237) 10338 0 R (HD.9238) 10339 0 R (HD.9239) 10340 0 R (HD.924) 1256 0 R (HD.9240) 10341 0 R (HD.9241) 10342 0 R (HD.9242) 10343 0 R (HD.9243) 10344 0 R (HD.9244) 10345 0 R (HD.9245) 10346 0 R (HD.9246) 10347 0 R (HD.9247) 10348 0 R (HD.9248) 10349 0 R ] /Limits [ (HD.922) (HD.9248) ] >>
+endobj
+12035 0 obj
+<< /Names [ (HD.9249) 10350 0 R (HD.925) 1257 0 R (HD.9250) 10351 0 R (HD.9251) 10352 0 R (HD.9252) 10353 0 R (HD.9253) 10354 0 R (HD.9254) 10355 0 R (HD.9255) 10356 0 R (HD.9256) 10357 0 R (HD.9257) 10358 0 R (HD.9258) 10359 0 R (HD.9259) 10360 0 R (HD.926) 1258 0 R (HD.9260) 10365 0 R (HD.9261) 10366 0 R (HD.9262) 10367 0 R (HD.9263) 10368 0 R (HD.9264) 10369 0 R (HD.9265) 10370 0 R (HD.9266) 10371 0 R (HD.9267) 10372 0 R (HD.9268) 10373 0 R (HD.9269) 10374 0 R (HD.927) 1263 0 R (HD.9270) 10375 0 R (HD.9271) 10376 0 R (HD.9272) 10377 0 R (HD.9273) 10378 0 R (HD.9274) 10379 0 R (HD.9275) 10380 0 R (HD.9276) 10381 0 R (HD.9277) 10382 0 R ] /Limits [ (HD.9249) (HD.9277) ] >>
+endobj
+12036 0 obj
+<< /Names [ (HD.9278) 10383 0 R (HD.9279) 10384 0 R (HD.928) 1264 0 R (HD.9280) 10385 0 R (HD.9281) 10386 0 R (HD.9282) 10387 0 R (HD.9283) 10388 0 R (HD.9284) 10389 0 R (HD.9285) 10390 0 R (HD.9286) 10391 0 R (HD.9287) 10392 0 R (HD.9288) 10393 0 R (HD.9289) 10394 0 R (HD.929) 1265 0 R (HD.9290) 10395 0 R (HD.9291) 10396 0 R (HD.9292) 10397 0 R (HD.9293) 10398 0 R (HD.9294) 10399 0 R (HD.9295) 10400 0 R (HD.9296) 10401 0 R (HD.9297) 10402 0 R (HD.9298) 10403 0 R (HD.9299) 10404 0 R (HD.93) 293 0 R (HD.930) 1266 0 R (HD.9300) 10405 0 R (HD.9301) 10406 0 R (HD.9302) 10407 0 R (HD.9303) 10408 0 R (HD.9304) 10409 0 R (HD.9305) 10410 0 R ] /Limits [ (HD.9278) (HD.9305) ] >>
+endobj
+12037 0 obj
+<< /Names [ (HD.9306) 10411 0 R (HD.9307) 10412 0 R (HD.9308) 10413 0 R (HD.9309) 10418 0 R (HD.931) 1267 0 R (HD.9310) 10419 0 R (HD.9311) 10420 0 R (HD.9312) 10421 0 R (HD.9313) 10422 0 R (HD.9314) 10423 0 R (HD.9315) 10424 0 R (HD.9316) 10425 0 R (HD.9317) 10426 0 R (HD.9318) 10427 0 R (HD.9319) 10428 0 R (HD.932) 1268 0 R (HD.9320) 10429 0 R (HD.9321) 10430 0 R (HD.9322) 10431 0 R (HD.9323) 10432 0 R (HD.9324) 10433 0 R (HD.9325) 10434 0 R (HD.9326) 10435 0 R (HD.9327) 10436 0 R (HD.9328) 10437 0 R (HD.9329) 10438 0 R (HD.933) 1269 0 R (HD.9330) 10439 0 R (HD.9331) 10440 0 R (HD.9332) 10441 0 R (HD.9333) 10442 0 R (HD.9334) 10443 0 R ] /Limits [ (HD.9306) (HD.9334) ] >>
+endobj
+12038 0 obj
+<< /Names [ (HD.9335) 10444 0 R (HD.9336) 10445 0 R (HD.9337) 10446 0 R (HD.9338) 10447 0 R (HD.9339) 10448 0 R (HD.934) 1270 0 R (HD.9340) 10449 0 R (HD.9341) 10450 0 R (HD.9342) 10451 0 R (HD.9343) 10452 0 R (HD.9344) 10453 0 R (HD.9345) 10454 0 R (HD.9346) 10455 0 R (HD.9347) 10456 0 R (HD.9348) 10457 0 R (HD.9349) 10458 0 R (HD.935) 1271 0 R (HD.9350) 10459 0 R (HD.9351) 10460 0 R (HD.9352) 10461 0 R (HD.9353) 10462 0 R (HD.9354) 10463 0 R (HD.9355) 10464 0 R (HD.9356) 10465 0 R (HD.9357) 10466 0 R (HD.9358) 10467 0 R (HD.9359) 10468 0 R (HD.936) 1272 0 R (HD.9360) 10469 0 R (HD.9361) 10470 0 R (HD.9362) 10471 0 R (HD.9363) 10472 0 R ] /Limits [ (HD.9335) (HD.9363) ] >>
+endobj
+12039 0 obj
+<< /Names [ (HD.9364) 10473 0 R (HD.9365) 10474 0 R (HD.9366) 10479 0 R (HD.9367) 10480 0 R (HD.9368) 10481 0 R (HD.9369) 10482 0 R (HD.937) 1273 0 R (HD.9370) 10483 0 R (HD.9371) 10484 0 R (HD.9372) 10485 0 R (HD.9373) 10486 0 R (HD.9374) 10487 0 R (HD.9375) 10488 0 R (HD.9376) 10489 0 R (HD.9377) 10490 0 R (HD.9378) 10491 0 R (HD.9379) 10492 0 R (HD.938) 1274 0 R (HD.9380) 10493 0 R (HD.9381) 10494 0 R (HD.9382) 10495 0 R (HD.9383) 10496 0 R (HD.9384) 10497 0 R (HD.9385) 10498 0 R (HD.9386) 10499 0 R (HD.9387) 10500 0 R (HD.9388) 10501 0 R (HD.9389) 10502 0 R (HD.939) 1275 0 R (HD.9390) 10503 0 R (HD.9391) 10504 0 R (HD.9392) 10505 0 R ] /Limits [ (HD.9364) (HD.9392) ] >>
+endobj
+12040 0 obj
+<< /Names [ (HD.9393) 10506 0 R (HD.9394) 10507 0 R (HD.9395) 10508 0 R (HD.9396) 10509 0 R (HD.9397) 10510 0 R (HD.9398) 10511 0 R (HD.9399) 10512 0 R (HD.94) 294 0 R (HD.940) 1276 0 R (HD.9400) 10513 0 R (HD.9401) 10514 0 R (HD.9402) 10515 0 R (HD.9403) 10516 0 R (HD.9404) 10522 0 R (HD.9405) 10523 0 R (HD.9406) 10524 0 R (HD.9407) 10525 0 R (HD.9408) 10526 0 R (HD.9409) 10527 0 R (HD.941) 1277 0 R (HD.9410) 10528 0 R (HD.9411) 10529 0 R (HD.9412) 10530 0 R (HD.9413) 10531 0 R (HD.9414) 10532 0 R (HD.9415) 10533 0 R (HD.9416) 10534 0 R (HD.9417) 10535 0 R (HD.9418) 10536 0 R (HD.9419) 10537 0 R (HD.942) 1278 0 R (HD.9420) 10538 0 R ] /Limits [ (HD.9393) (HD.9420) ] >>
+endobj
+12041 0 obj
+<< /Names [ (HD.9421) 10539 0 R (HD.9422) 10540 0 R (HD.9423) 10541 0 R (HD.9424) 10542 0 R (HD.9425) 10543 0 R (HD.9426) 10544 0 R (HD.9427) 10545 0 R (HD.9428) 10546 0 R (HD.9429) 10547 0 R (HD.943) 1279 0 R (HD.9430) 10548 0 R (HD.9431) 10549 0 R (HD.9432) 10550 0 R (HD.9433) 10551 0 R (HD.9434) 10552 0 R (HD.9435) 10553 0 R (HD.9436) 10554 0 R (HD.9437) 10555 0 R (HD.9438) 10556 0 R (HD.9439) 10557 0 R (HD.944) 1280 0 R (HD.9440) 10558 0 R (HD.9441) 10559 0 R (HD.9442) 10560 0 R (HD.9443) 10561 0 R (HD.9444) 10562 0 R (HD.9445) 10563 0 R (HD.9446) 10564 0 R (HD.9447) 10565 0 R (HD.9448) 10566 0 R (HD.9449) 10567 0 R (HD.945) 1281 0 R ] /Limits [ (HD.9421) (HD.945) ] >>
+endobj
+12042 0 obj
+<< /Names [ (HD.9450) 10568 0 R (HD.9451) 10569 0 R (HD.9452) 10570 0 R (HD.9453) 10571 0 R (HD.9454) 10572 0 R (HD.9455) 10573 0 R (HD.9456) 10574 0 R (HD.9457) 10575 0 R (HD.9458) 10576 0 R (HD.9459) 10577 0 R (HD.946) 1282 0 R (HD.9460) 10582 0 R (HD.9461) 10583 0 R (HD.9462) 10584 0 R (HD.9463) 10585 0 R (HD.9464) 10586 0 R (HD.9465) 10587 0 R (HD.9466) 10588 0 R (HD.9467) 10589 0 R (HD.9468) 10590 0 R (HD.9469) 10591 0 R (HD.947) 1283 0 R (HD.9470) 10592 0 R (HD.9471) 10593 0 R (HD.9472) 10594 0 R (HD.9473) 10595 0 R (HD.9474) 10596 0 R (HD.9475) 10597 0 R (HD.9476) 10598 0 R (HD.9477) 10599 0 R (HD.9478) 10600 0 R (HD.9479) 10601 0 R ] /Limits [ (HD.9450) (HD.9479) ] >>
+endobj
+12043 0 obj
+<< /Names [ (HD.948) 1284 0 R (HD.9480) 10602 0 R (HD.9481) 10603 0 R (HD.9482) 10604 0 R (HD.9483) 10605 0 R (HD.9484) 10606 0 R (HD.9485) 10607 0 R (HD.9486) 10608 0 R (HD.9487) 10609 0 R (HD.9488) 10610 0 R (HD.9489) 10611 0 R (HD.949) 1285 0 R (HD.9490) 10612 0 R (HD.9491) 10613 0 R (HD.9492) 10614 0 R (HD.9493) 10615 0 R (HD.9494) 10616 0 R (HD.9495) 10617 0 R (HD.9496) 10618 0 R (HD.9497) 10619 0 R (HD.9498) 10620 0 R (HD.9499) 10621 0 R (HD.95) 295 0 R (HD.950) 1286 0 R (HD.9500) 10622 0 R (HD.9501) 10623 0 R (HD.9502) 10624 0 R (HD.9503) 10625 0 R (HD.9504) 10626 0 R (HD.9505) 10627 0 R (HD.9506) 10628 0 R (HD.9507) 10629 0 R ] /Limits [ (HD.948) (HD.9507) ] >>
+endobj
+12044 0 obj
+<< /Names [ (HD.9508) 10630 0 R (HD.9509) 10631 0 R (HD.951) 1287 0 R (HD.9510) 10632 0 R (HD.9511) 10633 0 R (HD.9512) 10634 0 R (HD.9513) 10635 0 R (HD.9514) 10636 0 R (HD.9515) 10637 0 R (HD.9516) 10638 0 R (HD.9517) 10639 0 R (HD.9518) 10640 0 R (HD.9519) 10645 0 R (HD.952) 1288 0 R (HD.9520) 10646 0 R (HD.9521) 10647 0 R (HD.9522) 10648 0 R (HD.9523) 10649 0 R (HD.9524) 10650 0 R (HD.9525) 10651 0 R (HD.9526) 10652 0 R (HD.9527) 10653 0 R (HD.9528) 10654 0 R (HD.9529) 10655 0 R (HD.953) 1289 0 R (HD.9530) 10656 0 R (HD.9531) 10657 0 R (HD.9532) 10658 0 R (HD.9533) 10659 0 R (HD.9534) 10660 0 R (HD.9535) 10661 0 R (HD.9536) 10662 0 R ] /Limits [ (HD.9508) (HD.9536) ] >>
+endobj
+12045 0 obj
+<< /Names [ (HD.9537) 10663 0 R (HD.9538) 10664 0 R (HD.9539) 10665 0 R (HD.954) 1290 0 R (HD.9540) 10666 0 R (HD.9541) 10667 0 R (HD.9542) 10668 0 R (HD.9543) 10669 0 R (HD.9544) 10670 0 R (HD.9545) 10671 0 R (HD.9546) 10672 0 R (HD.9547) 10673 0 R (HD.9548) 10674 0 R (HD.9549) 10675 0 R (HD.955) 1291 0 R (HD.9550) 10676 0 R (HD.9551) 10677 0 R (HD.9552) 10678 0 R (HD.9553) 10679 0 R (HD.9554) 10680 0 R (HD.9555) 10681 0 R (HD.9556) 10682 0 R (HD.9557) 10683 0 R (HD.9558) 10684 0 R (HD.9559) 10685 0 R (HD.956) 1292 0 R (HD.9560) 10686 0 R (HD.9561) 10687 0 R (HD.9562) 10688 0 R (HD.9563) 10689 0 R (HD.9564) 10690 0 R (HD.9565) 10691 0 R ] /Limits [ (HD.9537) (HD.9565) ] >>
+endobj
+12046 0 obj
+<< /Names [ (HD.9566) 10692 0 R (HD.9567) 10693 0 R (HD.9568) 10694 0 R (HD.9569) 10695 0 R (HD.957) 1293 0 R (HD.9570) 10696 0 R (HD.9571) 10697 0 R (HD.9572) 10698 0 R (HD.9573) 10699 0 R (HD.9574) 10700 0 R (HD.9575) 10701 0 R (HD.9576) 10702 0 R (HD.9577) 10703 0 R (HD.9578) 10704 0 R (HD.9579) 10709 0 R (HD.958) 1294 0 R (HD.9580) 10710 0 R (HD.9581) 10711 0 R (HD.9582) 10712 0 R (HD.9583) 10713 0 R (HD.9584) 10714 0 R (HD.9585) 10715 0 R (HD.9586) 10716 0 R (HD.9587) 10717 0 R (HD.9588) 10718 0 R (HD.9589) 10719 0 R (HD.959) 1295 0 R (HD.9590) 10720 0 R (HD.9591) 10721 0 R (HD.9592) 10722 0 R (HD.9593) 10723 0 R (HD.9594) 10724 0 R ] /Limits [ (HD.9566) (HD.9594) ] >>
+endobj
+12047 0 obj
+<< /Names [ (HD.9595) 10725 0 R (HD.9596) 10726 0 R (HD.9597) 10727 0 R (HD.9598) 10728 0 R (HD.9599) 10729 0 R (HD.96) 296 0 R (HD.960) 1296 0 R (HD.9600) 10730 0 R (HD.9601) 10731 0 R (HD.9602) 10732 0 R (HD.9603) 10733 0 R (HD.9604) 10734 0 R (HD.9605) 10735 0 R (HD.9606) 10736 0 R (HD.9607) 10737 0 R (HD.9608) 10738 0 R (HD.9609) 10739 0 R (HD.961) 1297 0 R (HD.9610) 10740 0 R (HD.9611) 10741 0 R (HD.9612) 10742 0 R (HD.9613) 10743 0 R (HD.9614) 10744 0 R (HD.9615) 10745 0 R (HD.9616) 10746 0 R (HD.9617) 10747 0 R (HD.9618) 10748 0 R (HD.9619) 10749 0 R (HD.962) 1298 0 R (HD.9620) 10750 0 R (HD.9621) 10751 0 R (HD.9622) 10752 0 R ] /Limits [ (HD.9595) (HD.9622) ] >>
+endobj
+12048 0 obj
+<< /Names [ (HD.9623) 10753 0 R (HD.9624) 10754 0 R (HD.9625) 10755 0 R (HD.9626) 10756 0 R (HD.9627) 10757 0 R (HD.9628) 10758 0 R (HD.9629) 10759 0 R (HD.963) 1299 0 R (HD.9630) 10760 0 R (HD.9631) 10761 0 R (HD.9632) 10762 0 R (HD.9633) 10763 0 R (HD.9634) 10764 0 R (HD.9635) 10765 0 R (HD.9636) 10766 0 R (HD.9637) 10767 0 R (HD.9638) 10768 0 R (HD.9639) 10769 0 R (HD.964) 1300 0 R (HD.9640) 10774 0 R (HD.9641) 10775 0 R (HD.9642) 10776 0 R (HD.9643) 10777 0 R (HD.9644) 10778 0 R (HD.9645) 10779 0 R (HD.9646) 10780 0 R (HD.9647) 10781 0 R (HD.9648) 10782 0 R (HD.9649) 10783 0 R (HD.965) 1301 0 R (HD.9650) 10784 0 R (HD.9651) 10785 0 R ] /Limits [ (HD.9623) (HD.9651) ] >>
+endobj
+12049 0 obj
+<< /Names [ (HD.9652) 10786 0 R (HD.9653) 10787 0 R (HD.9654) 10788 0 R (HD.9655) 10789 0 R (HD.9656) 10790 0 R (HD.9657) 10791 0 R (HD.9658) 10792 0 R (HD.9659) 10793 0 R (HD.966) 1302 0 R (HD.9660) 10794 0 R (HD.9661) 10795 0 R (HD.9662) 10796 0 R (HD.9663) 10797 0 R (HD.9664) 10798 0 R (HD.9665) 10799 0 R (HD.9666) 10800 0 R (HD.9667) 10801 0 R (HD.9668) 10802 0 R (HD.9669) 10803 0 R (HD.967) 1303 0 R (HD.9670) 10804 0 R (HD.9671) 10805 0 R (HD.9672) 10806 0 R (HD.9673) 10807 0 R (HD.9674) 10808 0 R (HD.9675) 10809 0 R (HD.9676) 10810 0 R (HD.9677) 10811 0 R (HD.9678) 10812 0 R (HD.9679) 10813 0 R (HD.968) 1304 0 R (HD.9680) 10814 0 R ] /Limits [ (HD.9652) (HD.9680) ] >>
+endobj
+12050 0 obj
+<< /Names [ (HD.9681) 10815 0 R (HD.9682) 10816 0 R (HD.9683) 10817 0 R (HD.9684) 10818 0 R (HD.9685) 10819 0 R (HD.9686) 10820 0 R (HD.9687) 10821 0 R (HD.9688) 10822 0 R (HD.9689) 10823 0 R (HD.969) 1305 0 R (HD.9690) 10824 0 R (HD.9691) 10825 0 R (HD.9692) 10826 0 R (HD.9693) 10827 0 R (HD.9694) 10828 0 R (HD.9695) 10829 0 R (HD.9696) 10830 0 R (HD.9697) 10831 0 R (HD.9698) 10832 0 R (HD.9699) 10833 0 R (HD.97) 297 0 R (HD.970) 1306 0 R (HD.9700) 10838 0 R (HD.9701) 10839 0 R (HD.9702) 10840 0 R (HD.9703) 10841 0 R (HD.9704) 10842 0 R (HD.9705) 10843 0 R (HD.9706) 10844 0 R (HD.9707) 10845 0 R (HD.9708) 10846 0 R (HD.9709) 10847 0 R ] /Limits [ (HD.9681) (HD.9709) ] >>
+endobj
+12051 0 obj
+<< /Names [ (HD.971) 1307 0 R (HD.9710) 10848 0 R (HD.9711) 10849 0 R (HD.9712) 10850 0 R (HD.9713) 10851 0 R (HD.9714) 10852 0 R (HD.9715) 10853 0 R (HD.9716) 10854 0 R (HD.9717) 10855 0 R (HD.9718) 10856 0 R (HD.9719) 10857 0 R (HD.972) 1308 0 R (HD.9720) 10858 0 R (HD.9721) 10859 0 R (HD.9722) 10860 0 R (HD.9723) 10861 0 R (HD.9724) 10862 0 R (HD.9725) 10863 0 R (HD.9726) 10864 0 R (HD.9727) 10865 0 R (HD.9728) 10866 0 R (HD.9729) 10867 0 R (HD.973) 1309 0 R (HD.9730) 10868 0 R (HD.9731) 10869 0 R (HD.9732) 10870 0 R (HD.9733) 10871 0 R (HD.9734) 10872 0 R (HD.9735) 10873 0 R (HD.9736) 10874 0 R (HD.9737) 10875 0 R (HD.9738) 10876 0 R ] /Limits [ (HD.971) (HD.9738) ] >>
+endobj
+12052 0 obj
+<< /Names [ (HD.9739) 10877 0 R (HD.974) 1310 0 R (HD.9740) 10878 0 R (HD.9741) 10879 0 R (HD.9742) 10880 0 R (HD.9743) 10881 0 R (HD.9744) 10882 0 R (HD.9745) 10883 0 R (HD.9746) 10884 0 R (HD.9747) 10885 0 R (HD.9748) 10886 0 R (HD.9749) 10887 0 R (HD.975) 1311 0 R (HD.9750) 10888 0 R (HD.9751) 10889 0 R (HD.9752) 10890 0 R (HD.9753) 10891 0 R (HD.9754) 10892 0 R (HD.9755) 10893 0 R (HD.9756) 10894 0 R (HD.9757) 10895 0 R (HD.9758) 10896 0 R (HD.9759) 10897 0 R (HD.976) 1312 0 R (HD.9760) 10902 0 R (HD.9761) 10903 0 R (HD.9762) 10904 0 R (HD.9763) 10905 0 R (HD.9764) 10906 0 R (HD.9765) 10907 0 R (HD.9766) 10908 0 R (HD.9767) 10909 0 R ] /Limits [ (HD.9739) (HD.9767) ] >>
+endobj
+12053 0 obj
+<< /Names [ (HD.9768) 10910 0 R (HD.9769) 10911 0 R (HD.977) 1313 0 R (HD.9770) 10912 0 R (HD.9771) 10913 0 R (HD.9772) 10914 0 R (HD.9773) 10915 0 R (HD.9774) 10916 0 R (HD.9775) 10917 0 R (HD.9776) 10918 0 R (HD.9777) 10919 0 R (HD.9778) 10920 0 R (HD.9779) 10921 0 R (HD.978) 1314 0 R (HD.9780) 10922 0 R (HD.9781) 10923 0 R (HD.9782) 10924 0 R (HD.9783) 10925 0 R (HD.9784) 10926 0 R (HD.9785) 10927 0 R (HD.9786) 10928 0 R (HD.9787) 10929 0 R (HD.9788) 10930 0 R (HD.9789) 10931 0 R (HD.979) 1315 0 R (HD.9790) 10932 0 R (HD.9791) 10933 0 R (HD.9792) 10934 0 R (HD.9793) 10935 0 R (HD.9794) 10936 0 R (HD.9795) 10937 0 R (HD.9796) 10938 0 R ] /Limits [ (HD.9768) (HD.9796) ] >>
+endobj
+12054 0 obj
+<< /Names [ (HD.9797) 10939 0 R (HD.9798) 10940 0 R (HD.9799) 10941 0 R (HD.98) 298 0 R (HD.980) 1321 0 R (HD.9800) 10942 0 R (HD.9801) 10943 0 R (HD.9802) 10944 0 R (HD.9803) 10945 0 R (HD.9804) 10946 0 R (HD.9805) 10947 0 R (HD.9806) 10948 0 R (HD.9807) 10949 0 R (HD.9808) 10950 0 R (HD.9809) 10951 0 R (HD.981) 1322 0 R (HD.9810) 10952 0 R (HD.9811) 10953 0 R (HD.9812) 10954 0 R (HD.9813) 10955 0 R (HD.9814) 10956 0 R (HD.9815) 10957 0 R (HD.9816) 10958 0 R (HD.9817) 10959 0 R (HD.9818) 10960 0 R (HD.9819) 10961 0 R (HD.982) 1323 0 R (HD.9820) 10962 0 R (HD.9821) 10967 0 R (HD.9822) 10968 0 R (HD.9823) 10969 0 R (HD.9824) 10970 0 R ] /Limits [ (HD.9797) (HD.9824) ] >>
+endobj
+12055 0 obj
+<< /Names [ (HD.9825) 10971 0 R (HD.9826) 10972 0 R (HD.9827) 10973 0 R (HD.9828) 10974 0 R (HD.9829) 10975 0 R (HD.983) 1324 0 R (HD.9830) 10976 0 R (HD.9831) 10977 0 R (HD.9832) 10978 0 R (HD.9833) 10979 0 R (HD.9834) 10980 0 R (HD.9835) 10981 0 R (HD.9836) 10982 0 R (HD.9837) 10983 0 R (HD.9838) 10984 0 R (HD.9839) 10985 0 R (HD.984) 1325 0 R (HD.9840) 10986 0 R (HD.9841) 10987 0 R (HD.9842) 10988 0 R (HD.9843) 10989 0 R (HD.9844) 10990 0 R (HD.9845) 10991 0 R (HD.9846) 10992 0 R (HD.9847) 10993 0 R (HD.9848) 10994 0 R (HD.9849) 10995 0 R (HD.985) 1326 0 R (HD.9850) 10996 0 R (HD.9851) 10997 0 R (HD.9852) 10998 0 R (HD.9853) 10999 0 R ] /Limits [ (HD.9825) (HD.9853) ] >>
+endobj
+12056 0 obj
+<< /Names [ (HD.9854) 11000 0 R (HD.9855) 11001 0 R (HD.9856) 11002 0 R (HD.9857) 11003 0 R (HD.9858) 11004 0 R (HD.9859) 11005 0 R (HD.986) 1327 0 R (HD.9860) 11006 0 R (HD.9861) 11007 0 R (HD.9862) 11008 0 R (HD.9863) 11009 0 R (HD.9864) 11010 0 R (HD.9865) 11011 0 R (HD.9866) 11012 0 R (HD.9867) 11013 0 R (HD.9868) 11014 0 R (HD.9869) 11015 0 R (HD.987) 1328 0 R (HD.9870) 11016 0 R (HD.9871) 11017 0 R (HD.9872) 11018 0 R (HD.9873) 11019 0 R (HD.9874) 11020 0 R (HD.9875) 11021 0 R (HD.9876) 11022 0 R (HD.9877) 11023 0 R (HD.9878) 11024 0 R (HD.9879) 11025 0 R (HD.988) 1329 0 R (HD.9880) 11026 0 R (HD.9881) 11031 0 R (HD.9882) 11032 0 R ] /Limits [ (HD.9854) (HD.9882) ] >>
+endobj
+12057 0 obj
+<< /Names [ (HD.9883) 11033 0 R (HD.9884) 11034 0 R (HD.9885) 11035 0 R (HD.9886) 11036 0 R (HD.9887) 11037 0 R (HD.9888) 11038 0 R (HD.9889) 11039 0 R (HD.989) 1330 0 R (HD.9890) 11040 0 R (HD.9891) 11041 0 R (HD.9892) 11042 0 R (HD.9893) 11043 0 R (HD.9894) 11044 0 R (HD.9895) 11045 0 R (HD.9896) 11046 0 R (HD.9897) 11047 0 R (HD.9898) 11048 0 R (HD.9899) 11049 0 R (HD.99) 299 0 R (HD.990) 1331 0 R (HD.9900) 11050 0 R (HD.9901) 11051 0 R (HD.9902) 11052 0 R (HD.9903) 11053 0 R (HD.9904) 11054 0 R (HD.9905) 11055 0 R (HD.9906) 11056 0 R (HD.9907) 11057 0 R (HD.9908) 11058 0 R (HD.9909) 11059 0 R (HD.991) 1332 0 R (HD.9910) 11060 0 R ] /Limits [ (HD.9883) (HD.9910) ] >>
+endobj
+12058 0 obj
+<< /Names [ (HD.9911) 11061 0 R (HD.9912) 11062 0 R (HD.9913) 11063 0 R (HD.9914) 11064 0 R (HD.9915) 11065 0 R (HD.9916) 11066 0 R (HD.9917) 11067 0 R (HD.9918) 11068 0 R (HD.9919) 11069 0 R (HD.992) 1333 0 R (HD.9920) 11070 0 R (HD.9921) 11071 0 R (HD.9922) 11072 0 R (HD.9923) 11073 0 R (HD.9924) 11074 0 R (HD.9925) 11075 0 R (HD.9926) 11076 0 R (HD.9927) 11077 0 R (HD.9928) 11078 0 R (HD.9929) 11079 0 R (HD.993) 1334 0 R (HD.9930) 11080 0 R (HD.9931) 11081 0 R (HD.9932) 11082 0 R (HD.9933) 11083 0 R (HD.9934) 11084 0 R (HD.9935) 11085 0 R (HD.9936) 11086 0 R (HD.9937) 11087 0 R (HD.9938) 11088 0 R (HD.9939) 11089 0 R (HD.994) 1335 0 R ] /Limits [ (HD.9911) (HD.994) ] >>
+endobj
+12059 0 obj
+<< /Names [ (HD.9940) 11090 0 R (HD.9941) 11095 0 R (HD.9942) 11096 0 R (HD.9943) 11097 0 R (HD.9944) 11098 0 R (HD.9945) 11099 0 R (HD.9946) 11100 0 R (HD.9947) 11101 0 R (HD.9948) 11102 0 R (HD.9949) 11103 0 R (HD.995) 1336 0 R (HD.9950) 11104 0 R (HD.9951) 11105 0 R (HD.9952) 11106 0 R (HD.9953) 11107 0 R (HD.9954) 11108 0 R (HD.9955) 11109 0 R (HD.9956) 11110 0 R (HD.9957) 11111 0 R (HD.9958) 11112 0 R (HD.9959) 11113 0 R (HD.996) 1337 0 R (HD.9960) 11114 0 R (HD.9961) 11115 0 R (HD.9962) 11116 0 R (HD.9963) 11117 0 R (HD.9964) 11118 0 R (HD.9965) 11119 0 R (HD.9966) 11120 0 R (HD.9967) 11121 0 R (HD.9968) 11122 0 R (HD.9969) 11123 0 R ] /Limits [ (HD.9940) (HD.9969) ] >>
+endobj
+12060 0 obj
+<< /Names [ (HD.997) 1338 0 R (HD.9970) 11124 0 R (HD.9971) 11125 0 R (HD.9972) 11126 0 R (HD.9973) 11127 0 R (HD.9974) 11128 0 R (HD.9975) 11129 0 R (HD.9976) 11130 0 R (HD.9977) 11131 0 R (HD.9978) 11132 0 R (HD.9979) 11133 0 R (HD.998) 1339 0 R (HD.9980) 11134 0 R (HD.9981) 11135 0 R (HD.9982) 11136 0 R (HD.9983) 11137 0 R (HD.9984) 11138 0 R (HD.9985) 11139 0 R (HD.9986) 11140 0 R (HD.9987) 11141 0 R (HD.9988) 11142 0 R (HD.9989) 11143 0 R (HD.999) 1340 0 R (HD.9990) 11144 0 R (HD.9991) 11145 0 R (HD.9992) 11146 0 R (HD.9993) 11147 0 R (HD.9994) 11148 0 R (HD.9995) 11149 0 R (HD.9996) 11150 0 R (HD.9997) 11151 0 R (HD.9998) 11152 0 R ] /Limits [ (HD.997) (HD.9998) ] >>
+endobj
+12061 0 obj
+<< /Names [ (HD.9999) 11153 0 R (Hfootnote.1) 481 0 R (Hfootnote.10) 2758 0 R (Hfootnote.11) 4564 0 R (Hfootnote.12) 4642 0 R (Hfootnote.13) 6106 0 R (Hfootnote.14) 7882 0 R (Hfootnote.2) 767 0 R (Hfootnote.3) 826 0 R (Hfootnote.4) 1960 0 R (Hfootnote.5) 1961 0 R (Hfootnote.6) 2364 0 R (Hfootnote.7) 2406 0 R (Hfootnote.8) 2508 0 R (Hfootnote.9) 2561 0 R (page.1) 172 0 R (page.10) 566 0 R (page.100) 4700 0 R (page.101) 4758 0 R (page.102) 4787 0 R (page.103) 4842 0 R (page.104) 4907 0 R (page.105) 4949 0 R (page.106) 5015 0 R (page.107) 5070 0 R (page.108) 5112 0 R (page.109) 5161 0 R (page.11) 586 0 R (page.110) 5223 0 R (page.111) 5268 0 R (page.112) 5319 0 R (page.113) 5362 0 R ] /Limits [ (HD.9999) (page.113) ] >>
+endobj
+12062 0 obj
+<< /Names [ (page.114) 5408 0 R (page.115) 5446 0 R (page.116) 5495 0 R (page.117) 5552 0 R (page.118) 5606 0 R (page.119) 5669 0 R (page.12) 607 0 R (page.120) 5720 0 R (page.121) 5782 0 R (page.122) 5845 0 R (page.123) 5896 0 R (page.124) 5959 0 R (page.125) 6015 0 R (page.126) 6068 0 R (page.127) 6111 0 R (page.128) 6144 0 R (page.129) 6199 0 R (page.13) 634 0 R (page.130) 6259 0 R (page.131) 6285 0 R (page.132) 6338 0 R (page.133) 6388 0 R (page.134) 6441 0 R (page.135) 6485 0 R (page.136) 6539 0 R (page.137) 6583 0 R (page.138) 6642 0 R (page.139) 6697 0 R (page.14) 658 0 R (page.140) 6746 0 R (page.141) 6783 0 R (page.142) 6825 0 R ] /Limits [ (page.114) (page.142) ] >>
+endobj
+12063 0 obj
+<< /Names [ (page.143) 6866 0 R (page.144) 6906 0 R (page.145) 6953 0 R (page.146) 7014 0 R (page.147) 7076 0 R (page.148) 7125 0 R (page.149) 7181 0 R (page.15) 681 0 R (page.150) 7244 0 R (page.151) 7289 0 R (page.152) 7341 0 R (page.153) 7391 0 R (page.154) 7446 0 R (page.155) 7491 0 R (page.156) 7552 0 R (page.157) 7611 0 R (page.158) 7647 0 R (page.159) 7704 0 R (page.16) 701 0 R (page.160) 7752 0 R (page.161) 7799 0 R (page.162) 7839 0 R (page.163) 7887 0 R (page.164) 7946 0 R (page.165) 7993 0 R (page.166) 8047 0 R (page.167) 8084 0 R (page.168) 8121 0 R (page.169) 8152 0 R (page.17) 728 0 R (page.170) 8201 0 R (page.171) 8252 0 R ] /Limits [ (page.143) (page.171) ] >>
+endobj
+12064 0 obj
+<< /Names [ (page.172) 8308 0 R (page.173) 8358 0 R (page.174) 8412 0 R (page.175) 8478 0 R (page.176) 8530 0 R (page.177) 8581 0 R (page.178) 8645 0 R (page.179) 8684 0 R (page.18) 756 0 R (page.180) 8735 0 R (page.181) 8801 0 R (page.182) 8866 0 R (page.183) 8921 0 R (page.184) 8983 0 R (page.185) 9043 0 R (page.186) 9104 0 R (page.187) 9165 0 R (page.188) 9223 0 R (page.189) 9271 0 R (page.19) 775 0 R (page.190) 9326 0 R (page.191) 9369 0 R (page.192) 9419 0 R (page.193) 9461 0 R (page.194) 9505 0 R (page.195) 9563 0 R (page.196) 9622 0 R (page.197) 9670 0 R (page.198) 9733 0 R (page.199) 9786 0 R (page.2) 210 0 R (page.20) 810 0 R ] /Limits [ (page.172) (page.20) ] >>
+endobj
+12065 0 obj
+<< /Names [ (page.200) 9841 0 R (page.201) 9880 0 R (page.202) 9931 0 R (page.203) 9984 0 R (page.204) 10046 0 R (page.205) 10109 0 R (page.206) 10169 0 R (page.207) 10234 0 R (page.208) 10297 0 R (page.209) 10364 0 R (page.21) 831 0 R (page.210) 10417 0 R (page.211) 10478 0 R (page.212) 10521 0 R (page.213) 10581 0 R (page.214) 10644 0 R (page.215) 10708 0 R (page.216) 10773 0 R (page.217) 10837 0 R (page.218) 10901 0 R (page.219) 10966 0 R (page.22) 875 0 R (page.220) 11030 0 R (page.221) 11094 0 R (page.222) 11159 0 R (page.223) 11225 0 R (page.224) 11292 0 R (page.225) 11357 0 R (page.226) 11422 0 R (page.227) 11489 0 R (page.228) 11556 0 R (page.229) 11618 0 R ] /Limits [ (page.200) (page.229) ] >>
+endobj
+12066 0 obj
+<< /Names [ (page.23) 923 0 R (page.230) 11632 0 R (page.24) 967 0 R (page.25) 1012 0 R (page.26) 1057 0 R (page.27) 1085 0 R (page.28) 1106 0 R (page.29) 1146 0 R (page.3) 257 0 R (page.30) 1200 0 R (page.31) 1262 0 R (page.32) 1320 0 R (page.33) 1383 0 R (page.34) 1442 0 R (page.35) 1488 0 R (page.36) 1543 0 R (page.37) 1571 0 R (page.38) 1620 0 R (page.39) 1683 0 R (page.4) 304 0 R (page.40) 1717 0 R (page.41) 1770 0 R (page.42) 1814 0 R (page.43) 1859 0 R (page.44) 1916 0 R (page.45) 1966 0 R (page.46) 2009 0 R (page.47) 2064 0 R (page.48) 2101 0 R (page.49) 2134 0 R (page.5) 343 0 R (page.50) 2172 0 R ] /Limits [ (page.23) (page.50) ] >>
+endobj
+12067 0 obj
+<< /Names [ (page.51) 2215 0 R (page.52) 2258 0 R (page.53) 2315 0 R (page.54) 2370 0 R (page.55) 2411 0 R (page.56) 2459 0 R (page.57) 2515 0 R (page.58) 2567 0 R (page.59) 2609 0 R (page.6) 387 0 R (page.60) 2658 0 R (page.61) 2707 0 R (page.62) 2764 0 R (page.63) 2819 0 R (page.64) 2879 0 R (page.65) 2931 0 R (page.66) 2969 0 R (page.67) 3019 0 R (page.68) 3070 0 R (page.69) 3125 0 R (page.7) 433 0 R (page.70) 3182 0 R (page.71) 3242 0 R (page.72) 3302 0 R (page.73) 3337 0 R (page.74) 3384 0 R (page.75) 3429 0 R (page.76) 3485 0 R (page.77) 3539 0 R (page.78) 3590 0 R (page.79) 3640 0 R (page.8) 486 0 R ] /Limits [ (page.51) (page.8) ] >>
+endobj
+12068 0 obj
+<< /Names [ (page.80) 3685 0 R (page.81) 3735 0 R (page.82) 3788 0 R (page.83) 3847 0 R (page.84) 3891 0 R (page.85) 3928 0 R (page.86) 3976 0 R (page.87) 4032 0 R (page.88) 4092 0 R (page.89) 4151 0 R (page.9) 534 0 R (page.90) 4204 0 R (page.91) 4257 0 R (page.92) 4303 0 R (page.93) 4362 0 R (page.94) 4420 0 R (page.95) 4469 0 R (page.96) 4517 0 R (page.97) 4569 0 R (page.98) 4609 0 R (page.99) 4647 0 R (section.0.1) 5 0 R (section.0.10) 41 0 R (section.0.11) 45 0 R (section.0.12) 49 0 R (section.0.13) 53 0 R (section.0.14) 57 0 R (section.0.15) 61 0 R (section.0.16) 65 0 R (section.0.17) 69 0 R (section.0.18) 73 0 R (section.0.19) 77 0 R ] /Limits [ (page.80) (section.0.19) ] >>
+endobj
+12069 0 obj
+<< /Names [ (section.0.2) 9 0 R (section.0.20) 81 0 R (section.0.21) 85 0 R (section.0.22) 89 0 R (section.0.23) 93 0 R (section.0.24) 97 0 R (section.0.25) 101 0 R (section.0.26) 105 0 R (section.0.27) 109 0 R (section.0.28) 113 0 R (section.0.29) 117 0 R (section.0.3) 13 0 R (section.0.30) 121 0 R (section.0.31) 125 0 R (section.0.32) 129 0 R (section.0.33) 133 0 R (section.0.34) 137 0 R (section.0.35) 141 0 R (section.0.36) 145 0 R (section.0.37) 149 0 R (section.0.38) 153 0 R (section.0.39) 157 0 R (section.0.4) 17 0 R (section.0.40) 161 0 R (section.0.5) 21 0 R (section.0.6) 25 0 R (section.0.7) 29 0 R (section.0.8) 33 0 R (section.0.9) 37 0 R (toc1.1) 165 0 R ] /Limits [ (section.0.2) (toc1.1) ] >>
+endobj
+12070 0 obj
+<< /Kids [ 11736 0 R 11737 0 R 11738 0 R 11739 0 R 11740 0 R 11741 0 R 11742 0 R 11743 0 R 11744 0 R 11745 0 R 11746 0 R 11747 0 R 11748 0 R 11749 0 R 11750 0 R 11751 0 R 11752 0 R 11753 0 R 11754 0 R 11755 0 R 11756 0 R 11757 0 R 11758 0 R 11759 0 R 11760 0 R 11761 0 R 11762 0 R 11763 0 R 11764 0 R 11765 0 R 11766 0 R 11767 0 R ] /Limits [ (Doc-Start) (HD.1558) ] >>
+endobj
+12071 0 obj
+<< /Kids [ 11768 0 R 11769 0 R 11770 0 R 11771 0 R 11772 0 R 11773 0 R 11774 0 R 11775 0 R 11776 0 R 11777 0 R 11778 0 R 11779 0 R 11780 0 R 11781 0 R 11782 0 R 11783 0 R 11784 0 R 11785 0 R 11786 0 R 11787 0 R 11788 0 R 11789 0 R 11790 0 R 11791 0 R 11792 0 R 11793 0 R 11794 0 R 11795 0 R 11796 0 R 11797 0 R 11798 0 R 11799 0 R ] /Limits [ (HD.1559) (HD.248) ] >>
+endobj
+12072 0 obj
+<< /Kids [ 11800 0 R 11801 0 R 11802 0 R 11803 0 R 11804 0 R 11805 0 R 11806 0 R 11807 0 R 11808 0 R 11809 0 R 11810 0 R 11811 0 R 11812 0 R 11813 0 R 11814 0 R 11815 0 R 11816 0 R 11817 0 R 11818 0 R 11819 0 R 11820 0 R 11821 0 R 11822 0 R 11823 0 R 11824 0 R 11825 0 R 11826 0 R 11827 0 R 11828 0 R 11829 0 R 11830 0 R 11831 0 R ] /Limits [ (HD.2480) (HD.3400) ] >>
+endobj
+12073 0 obj
+<< /Kids [ 11832 0 R 11833 0 R 11834 0 R 11835 0 R 11836 0 R 11837 0 R 11838 0 R 11839 0 R 11840 0 R 11841 0 R 11842 0 R 11843 0 R 11844 0 R 11845 0 R 11846 0 R 11847 0 R 11848 0 R 11849 0 R 11850 0 R 11851 0 R 11852 0 R 11853 0 R 11854 0 R 11855 0 R 11856 0 R 11857 0 R 11858 0 R 11859 0 R 11860 0 R 11861 0 R 11862 0 R 11863 0 R ] /Limits [ (HD.3401) (HD.4322) ] >>
+endobj
+12074 0 obj
+<< /Kids [ 11864 0 R 11865 0 R 11866 0 R 11867 0 R 11868 0 R 11869 0 R 11870 0 R 11871 0 R 11872 0 R 11873 0 R 11874 0 R 11875 0 R 11876 0 R 11877 0 R 11878 0 R 11879 0 R 11880 0 R 11881 0 R 11882 0 R 11883 0 R 11884 0 R 11885 0 R 11886 0 R 11887 0 R 11888 0 R 11889 0 R 11890 0 R 11891 0 R 11892 0 R 11893 0 R 11894 0 R 11895 0 R ] /Limits [ (HD.4323) (HD.5244) ] >>
+endobj
+12075 0 obj
+<< /Kids [ 11896 0 R 11897 0 R 11898 0 R 11899 0 R 11900 0 R 11901 0 R 11902 0 R 11903 0 R 11904 0 R 11905 0 R 11906 0 R 11907 0 R 11908 0 R 11909 0 R 11910 0 R 11911 0 R 11912 0 R 11913 0 R 11914 0 R 11915 0 R 11916 0 R 11917 0 R 11918 0 R 11919 0 R 11920 0 R 11921 0 R 11922 0 R 11923 0 R 11924 0 R 11925 0 R 11926 0 R 11927 0 R ] /Limits [ (HD.5245) (HD.6166) ] >>
+endobj
+12076 0 obj
+<< /Kids [ 11928 0 R 11929 0 R 11930 0 R 11931 0 R 11932 0 R 11933 0 R 11934 0 R 11935 0 R 11936 0 R 11937 0 R 11938 0 R 11939 0 R 11940 0 R 11941 0 R 11942 0 R 11943 0 R 11944 0 R 11945 0 R 11946 0 R 11947 0 R 11948 0 R 11949 0 R 11950 0 R 11951 0 R 11952 0 R 11953 0 R 11954 0 R 11955 0 R 11956 0 R 11957 0 R 11958 0 R 11959 0 R ] /Limits [ (HD.6167) (HD.7088) ] >>
+endobj
+12077 0 obj
+<< /Kids [ 11960 0 R 11961 0 R 11962 0 R 11963 0 R 11964 0 R 11965 0 R 11966 0 R 11967 0 R 11968 0 R 11969 0 R 11970 0 R 11971 0 R 11972 0 R 11973 0 R 11974 0 R 11975 0 R 11976 0 R 11977 0 R 11978 0 R 11979 0 R 11980 0 R 11981 0 R 11982 0 R 11983 0 R 11984 0 R 11985 0 R 11986 0 R 11987 0 R 11988 0 R 11989 0 R 11990 0 R 11991 0 R ] /Limits [ (HD.7089) (HD.8009) ] >>
+endobj
+12078 0 obj
+<< /Kids [ 11992 0 R 11993 0 R 11994 0 R 11995 0 R 11996 0 R 11997 0 R 11998 0 R 11999 0 R 12000 0 R 12001 0 R 12002 0 R 12003 0 R 12004 0 R 12005 0 R 12006 0 R 12007 0 R 12008 0 R 12009 0 R 12010 0 R 12011 0 R 12012 0 R 12013 0 R 12014 0 R 12015 0 R 12016 0 R 12017 0 R 12018 0 R 12019 0 R 12020 0 R 12021 0 R 12022 0 R 12023 0 R ] /Limits [ (HD.801) (HD.8931) ] >>
+endobj
+12079 0 obj
+<< /Kids [ 12024 0 R 12025 0 R 12026 0 R 12027 0 R 12028 0 R 12029 0 R 12030 0 R 12031 0 R 12032 0 R 12033 0 R 12034 0 R 12035 0 R 12036 0 R 12037 0 R 12038 0 R 12039 0 R 12040 0 R 12041 0 R 12042 0 R 12043 0 R 12044 0 R 12045 0 R 12046 0 R 12047 0 R 12048 0 R 12049 0 R 12050 0 R 12051 0 R 12052 0 R 12053 0 R 12054 0 R 12055 0 R ] /Limits [ (HD.8932) (HD.9853) ] >>
+endobj
+12080 0 obj
+<< /Kids [ 12056 0 R 12057 0 R 12058 0 R 12059 0 R 12060 0 R 12061 0 R 12062 0 R 12063 0 R 12064 0 R 12065 0 R 12066 0 R 12067 0 R 12068 0 R 12069 0 R ] /Limits [ (HD.9854) (toc1.1) ] >>
+endobj
+12081 0 obj
+<< /Kids [ 12070 0 R 12071 0 R 12072 0 R 12073 0 R 12074 0 R 12075 0 R 12076 0 R 12077 0 R 12078 0 R 12079 0 R 12080 0 R ] /Limits [ (Doc-Start) (toc1.1) ] >>
+endobj
+12082 0 obj
+<< /Dests 12081 0 R >>
+endobj
+12083 0 obj
+<< /Type /Catalog /Pages 11734 0 R /Outlines 11735 0 R /Names 12082 0 R /PageMode/UseOutlines /OpenAction 168 0 R >>
+endobj
+12084 0 obj
+<< /Author(\376\377\000F\000.\000\040\000P\000a\000n\000t\000i\000g\000n\000y)/Title(\376\377\000T\000h\000e\000\040\000c\000o\000d\000e\000\040\000o\000f\000\040\000t\000h\000e\000\040\000p\000a\000c\000k\000a\000g\000e\000\040\000'\000n\000i\000c\000e\000m\000a\000t\000r\000i\000x\000')/Subject(\376\377\000A\000\040\000L\000a\000T\000e\000X\000\040\000p\000a\000c\000k\000a\000g\000e)/Creator(LaTeX with hyperref)/Keywords() /Producer (LuaTeX-1.18.1) /CreationDate (D:20240822114251+02'00') /ModDate (D:20240822114251+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.18.1 (MiKTeX 24.4)) >>
+endobj
+xref
+0 12085
+0000000000 65535 f
+0001309914 00000 n
+0001309968 00000 n
+0001309988 00000 n
+0000000020 00000 n
+0000012831 00000 n
+0001899433 00000 n
+0000000067 00000 n
+0000000355 00000 n
+0000019124 00000 n
+0001899345 00000 n
+0000000402 00000 n
+0000000511 00000 n
+0000027619 00000 n
+0001899255 00000 n
+0000000559 00000 n
+0000000693 00000 n
+0000028812 00000 n
+0001899165 00000 n
+0000000741 00000 n
+0000000890 00000 n
+0000055799 00000 n
+0001899075 00000 n
+0000000938 00000 n
+0000001029 00000 n
+0000101653 00000 n
+0001898985 00000 n
+0000001077 00000 n
+0000001247 00000 n
+0000128399 00000 n
+0001898895 00000 n
+0000001295 00000 n
+0000001546 00000 n
+0000133993 00000 n
+0001898805 00000 n
+0000001594 00000 n
+0000001693 00000 n
+0000193371 00000 n
+0001898715 00000 n
+0000001741 00000 n
+0000002028 00000 n
+0000268869 00000 n
+0001898625 00000 n
+0000002077 00000 n
+0000002204 00000 n
+0000291675 00000 n
+0001898535 00000 n
+0000002253 00000 n
+0000002496 00000 n
+0000321728 00000 n
+0001898445 00000 n
+0000002545 00000 n
+0000002799 00000 n
+0000410874 00000 n
+0001898355 00000 n
+0000002848 00000 n
+0000003066 00000 n
+0000509734 00000 n
+0001898265 00000 n
+0000003115 00000 n
+0000003407 00000 n
+0000518029 00000 n
+0001898175 00000 n
+0000003456 00000 n
+0000003769 00000 n
+0000524976 00000 n
+0001898085 00000 n
+0000003818 00000 n
+0000004054 00000 n
+0000561606 00000 n
+0001897995 00000 n
+0000004103 00000 n
+0000004281 00000 n
+0000636689 00000 n
+0001897905 00000 n
+0000004330 00000 n
+0000004713 00000 n
+0000666603 00000 n
+0001897815 00000 n
+0000004762 00000 n
+0000005061 00000 n
+0000700803 00000 n
+0001897725 00000 n
+0000005110 00000 n
+0000005384 00000 n
+0000710978 00000 n
+0001897635 00000 n
+0000005433 00000 n
+0000005593 00000 n
+0000726728 00000 n
+0001897545 00000 n
+0000005642 00000 n
+0000005868 00000 n
+0000792897 00000 n
+0001897455 00000 n
+0000005917 00000 n
+0000006140 00000 n
+0000880415 00000 n
+0001897364 00000 n
+0000006189 00000 n
+0000006326 00000 n
+0000892264 00000 n
+0001897270 00000 n
+0000006376 00000 n
+0000006600 00000 n
+0000898028 00000 n
+0001897175 00000 n
+0000006650 00000 n
+0000006778 00000 n
+0000924722 00000 n
+0001897080 00000 n
+0000006828 00000 n
+0000006928 00000 n
+0001059741 00000 n
+0001896985 00000 n
+0000006978 00000 n
+0000007253 00000 n
+0001063499 00000 n
+0001896890 00000 n
+0000007303 00000 n
+0000007433 00000 n
+0001070712 00000 n
+0001896795 00000 n
+0000007483 00000 n
+0000007756 00000 n
+0001071295 00000 n
+0001896700 00000 n
+0000007806 00000 n
+0000007962 00000 n
+0001081306 00000 n
+0001896605 00000 n
+0000008012 00000 n
+0000008178 00000 n
+0001082406 00000 n
+0001896510 00000 n
+0000008228 00000 n
+0000008437 00000 n
+0001091247 00000 n
+0001896415 00000 n
+0000008487 00000 n
+0000008653 00000 n
+0001138385 00000 n
+0001896320 00000 n
+0000008703 00000 n
+0000008963 00000 n
+0001156389 00000 n
+0001896225 00000 n
+0000009013 00000 n
+0000009191 00000 n
+0001166803 00000 n
+0001896130 00000 n
+0000009241 00000 n
+0000009427 00000 n
+0001181976 00000 n
+0001896035 00000 n
+0000009477 00000 n
+0000009747 00000 n
+0001191292 00000 n
+0001895940 00000 n
+0000009797 00000 n
+0000009993 00000 n
+0001192226 00000 n
+0001895845 00000 n
+0000010043 00000 n
+0000010247 00000 n
+0001307063 00000 n
+0001895764 00000 n
+0000010291 00000 n
+0000010360 00000 n
+0000012586 00000 n
+0000013834 00000 n
+0000010424 00000 n
+0000012707 00000 n
+0000012769 00000 n
+0001886521 00000 n
+0001888128 00000 n
+0001890109 00000 n
+0001886342 00000 n
+0001888838 00000 n
+0001885805 00000 n
+0001887232 00000 n
+0001888483 00000 n
+0001887588 00000 n
+0001889193 00000 n
+0001886163 00000 n
+0001887950 00000 n
+0001888660 00000 n
+0001885629 00000 n
+0000012891 00000 n
+0001888306 00000 n
+0000012954 00000 n
+0000013016 00000 n
+0000013079 00000 n
+0000013142 00000 n
+0000013205 00000 n
+0000013268 00000 n
+0000013331 00000 n
+0000013394 00000 n
+0000013457 00000 n
+0000013520 00000 n
+0000013583 00000 n
+0000013646 00000 n
+0000013709 00000 n
+0000013772 00000 n
+0001890291 00000 n
+0001887054 00000 n
+0001891363 00000 n
+0000019184 00000 n
+0000016238 00000 n
+0000014166 00000 n
+0000016359 00000 n
+0000016421 00000 n
+0000016484 00000 n
+0000016547 00000 n
+0000016610 00000 n
+0000016673 00000 n
+0000016736 00000 n
+0000016799 00000 n
+0000016862 00000 n
+0000016925 00000 n
+0000016987 00000 n
+0000017050 00000 n
+0000017113 00000 n
+0000017176 00000 n
+0000017239 00000 n
+0000017302 00000 n
+0000017365 00000 n
+0000017428 00000 n
+0000017491 00000 n
+0000017554 00000 n
+0000017616 00000 n
+0000017679 00000 n
+0000017742 00000 n
+0000017805 00000 n
+0000017868 00000 n
+0000017930 00000 n
+0000017993 00000 n
+0000018056 00000 n
+0000018119 00000 n
+0000018182 00000 n
+0000018245 00000 n
+0000018308 00000 n
+0000018371 00000 n
+0000018434 00000 n
+0000018495 00000 n
+0000018558 00000 n
+0000018621 00000 n
+0000018684 00000 n
+0000018747 00000 n
+0000018810 00000 n
+0000018873 00000 n
+0000018936 00000 n
+0000018999 00000 n
+0000019062 00000 n
+0000024635 00000 n
+0000021814 00000 n
+0000019347 00000 n
+0000021935 00000 n
+0000021997 00000 n
+0000022060 00000 n
+0000022123 00000 n
+0000022186 00000 n
+0000022249 00000 n
+0000022312 00000 n
+0001891187 00000 n
+0000022375 00000 n
+0000022438 00000 n
+0000022500 00000 n
+0000022563 00000 n
+0000022625 00000 n
+0000022688 00000 n
+0000022751 00000 n
+0000022814 00000 n
+0000022877 00000 n
+0000022940 00000 n
+0000023003 00000 n
+0000023066 00000 n
+0000023129 00000 n
+0000023192 00000 n
+0000023254 00000 n
+0000023317 00000 n
+0000023379 00000 n
+0000023442 00000 n
+0000023505 00000 n
+0000023568 00000 n
+0000023631 00000 n
+0000023694 00000 n
+0000023757 00000 n
+0000023820 00000 n
+0000023883 00000 n
+0000023944 00000 n
+0000024007 00000 n
+0000024070 00000 n
+0000024133 00000 n
+0000024196 00000 n
+0000024259 00000 n
+0000024322 00000 n
+0000024385 00000 n
+0000024448 00000 n
+0000024511 00000 n
+0000024573 00000 n
+0000029060 00000 n
+0000026681 00000 n
+0000024837 00000 n
+0000026802 00000 n
+0000026864 00000 n
+0000026927 00000 n
+0000026990 00000 n
+0000027053 00000 n
+0000027116 00000 n
+0000027179 00000 n
+0000027242 00000 n
+0000027305 00000 n
+0000027368 00000 n
+0000027430 00000 n
+0000027493 00000 n
+0000027556 00000 n
+0001887766 00000 n
+0001887410 00000 n
+0000027680 00000 n
+0000027743 00000 n
+0000027805 00000 n
+0000027868 00000 n
+0000027931 00000 n
+0000027994 00000 n
+0000028057 00000 n
+0000028120 00000 n
+0000028183 00000 n
+0000028246 00000 n
+0000028309 00000 n
+0000028371 00000 n
+0000028434 00000 n
+0000028497 00000 n
+0000028560 00000 n
+0000028623 00000 n
+0000028686 00000 n
+0000028749 00000 n
+0000028873 00000 n
+0000028936 00000 n
+0000028998 00000 n
+0000034571 00000 n
+0000031870 00000 n
+0000029262 00000 n
+0000031991 00000 n
+0000032053 00000 n
+0000032116 00000 n
+0000032179 00000 n
+0000032242 00000 n
+0000032305 00000 n
+0000032368 00000 n
+0000032431 00000 n
+0000032494 00000 n
+0000032557 00000 n
+0000032619 00000 n
+0000032682 00000 n
+0000032745 00000 n
+0000032808 00000 n
+0000032871 00000 n
+0000032934 00000 n
+0000032997 00000 n
+0000033060 00000 n
+0000033123 00000 n
+0000033186 00000 n
+0000033249 00000 n
+0000033312 00000 n
+0000033375 00000 n
+0000033438 00000 n
+0000033500 00000 n
+0000033563 00000 n
+0000033626 00000 n
+0000033689 00000 n
+0000033752 00000 n
+0000033815 00000 n
+0000033878 00000 n
+0000033941 00000 n
+0000034004 00000 n
+0000034067 00000 n
+0000034130 00000 n
+0000034193 00000 n
+0000034256 00000 n
+0000034319 00000 n
+0000034382 00000 n
+0000034445 00000 n
+0000034508 00000 n
+0000040320 00000 n
+0000037558 00000 n
+0000034760 00000 n
+0000037679 00000 n
+0000037741 00000 n
+0000037804 00000 n
+0000037866 00000 n
+0000037929 00000 n
+0000037992 00000 n
+0000038055 00000 n
+0000038118 00000 n
+0000038181 00000 n
+0000038244 00000 n
+0000038307 00000 n
+0000038370 00000 n
+0000038433 00000 n
+0000038496 00000 n
+0000038559 00000 n
+0000038622 00000 n
+0000038685 00000 n
+0000038748 00000 n
+0000038811 00000 n
+0000038874 00000 n
+0000038936 00000 n
+0000038999 00000 n
+0000039062 00000 n
+0000039125 00000 n
+0000039188 00000 n
+0000039251 00000 n
+0000039314 00000 n
+0000039377 00000 n
+0000039440 00000 n
+0000039503 00000 n
+0000039565 00000 n
+0000039628 00000 n
+0000039691 00000 n
+0000039754 00000 n
+0000039817 00000 n
+0000039880 00000 n
+0000039943 00000 n
+0000040006 00000 n
+0000040069 00000 n
+0000040132 00000 n
+0000040195 00000 n
+0000040258 00000 n
+0000043183 00000 n
+0000046293 00000 n
+0000043017 00000 n
+0000040496 00000 n
+0000043339 00000 n
+0000043401 00000 n
+0000043464 00000 n
+0000043527 00000 n
+0000043590 00000 n
+0000043653 00000 n
+0000043716 00000 n
+0000043779 00000 n
+0000043841 00000 n
+0000043904 00000 n
+0000043967 00000 n
+0000044030 00000 n
+0000044093 00000 n
+0000044156 00000 n
+0000044219 00000 n
+0000044282 00000 n
+0000044345 00000 n
+0000044408 00000 n
+0000044471 00000 n
+0000044533 00000 n
+0000044596 00000 n
+0000044659 00000 n
+0000044722 00000 n
+0000044785 00000 n
+0000044848 00000 n
+0000044911 00000 n
+0000044974 00000 n
+0000045037 00000 n
+0000045099 00000 n
+0000045162 00000 n
+0000045225 00000 n
+0000045287 00000 n
+0000045350 00000 n
+0000045413 00000 n
+0000045476 00000 n
+0000045539 00000 n
+0000045602 00000 n
+0000045665 00000 n
+0000045728 00000 n
+0000045791 00000 n
+0001886877 00000 n
+0000045853 00000 n
+0000045916 00000 n
+0000045979 00000 n
+0000046042 00000 n
+0000046105 00000 n
+0000046168 00000 n
+0001886700 00000 n
+0000046231 00000 n
+0000043154 00000 n
+0000051957 00000 n
+0000049010 00000 n
+0000046534 00000 n
+0000049131 00000 n
+0000049193 00000 n
+0000049256 00000 n
+0000049317 00000 n
+0000049380 00000 n
+0000049443 00000 n
+0000049506 00000 n
+0000049567 00000 n
+0000049630 00000 n
+0000049693 00000 n
+0000049756 00000 n
+0000049819 00000 n
+0000049882 00000 n
+0000049945 00000 n
+0000050008 00000 n
+0000050071 00000 n
+0000050133 00000 n
+0000050196 00000 n
+0000050259 00000 n
+0000050322 00000 n
+0000050385 00000 n
+0000050448 00000 n
+0000050511 00000 n
+0000050574 00000 n
+0000050637 00000 n
+0000050700 00000 n
+0000050763 00000 n
+0000050826 00000 n
+0000050889 00000 n
+0000050952 00000 n
+0000051015 00000 n
+0000051078 00000 n
+0000051141 00000 n
+0000051204 00000 n
+0000051267 00000 n
+0000051330 00000 n
+0000051393 00000 n
+0000051456 00000 n
+0000051519 00000 n
+0000051581 00000 n
+0000051644 00000 n
+0000051707 00000 n
+0000051770 00000 n
+0000051833 00000 n
+0000051895 00000 n
+0000056300 00000 n
+0000054357 00000 n
+0000052146 00000 n
+0000054478 00000 n
+0000054540 00000 n
+0000054603 00000 n
+0000054665 00000 n
+0000054728 00000 n
+0000054791 00000 n
+0000054854 00000 n
+0000054917 00000 n
+0000054980 00000 n
+0000055043 00000 n
+0000055106 00000 n
+0000055169 00000 n
+0000055232 00000 n
+0000055295 00000 n
+0000055358 00000 n
+0000055421 00000 n
+0000055484 00000 n
+0000055547 00000 n
+0000055610 00000 n
+0000055673 00000 n
+0000055736 00000 n
+0000055860 00000 n
+0001885980 00000 n
+0000055923 00000 n
+0000055986 00000 n
+0000056049 00000 n
+0000056112 00000 n
+0000056175 00000 n
+0000056237 00000 n
+0000060755 00000 n
+0000059566 00000 n
+0000056515 00000 n
+0000059687 00000 n
+0000059749 00000 n
+0000059812 00000 n
+0000059874 00000 n
+0000059937 00000 n
+0000060000 00000 n
+0000060063 00000 n
+0000060126 00000 n
+0000060189 00000 n
+0000060252 00000 n
+0000060315 00000 n
+0000060378 00000 n
+0000060441 00000 n
+0000060504 00000 n
+0000060567 00000 n
+0000060629 00000 n
+0000060692 00000 n
+0000064774 00000 n
+0000063586 00000 n
+0000060931 00000 n
+0000063707 00000 n
+0000063769 00000 n
+0000063832 00000 n
+0000063895 00000 n
+0000063958 00000 n
+0000064021 00000 n
+0000064084 00000 n
+0000064147 00000 n
+0000064209 00000 n
+0000064272 00000 n
+0000064335 00000 n
+0000064398 00000 n
+0000064460 00000 n
+0000064523 00000 n
+0000064586 00000 n
+0000064649 00000 n
+0000064712 00000 n
+0001891517 00000 n
+0000069185 00000 n
+0000067556 00000 n
+0000064963 00000 n
+0000067677 00000 n
+0000067739 00000 n
+0000067802 00000 n
+0000067865 00000 n
+0000067928 00000 n
+0000067991 00000 n
+0000068054 00000 n
+0000068117 00000 n
+0000068180 00000 n
+0000068243 00000 n
+0000068306 00000 n
+0000068369 00000 n
+0000068432 00000 n
+0000068495 00000 n
+0000068558 00000 n
+0000068621 00000 n
+0000068684 00000 n
+0000068747 00000 n
+0000068810 00000 n
+0000068873 00000 n
+0000068934 00000 n
+0000068997 00000 n
+0000069060 00000 n
+0000069123 00000 n
+0000073745 00000 n
+0000072306 00000 n
+0000069374 00000 n
+0000072427 00000 n
+0000072489 00000 n
+0000072552 00000 n
+0000072615 00000 n
+0000072678 00000 n
+0000072741 00000 n
+0000072804 00000 n
+0000072866 00000 n
+0000072929 00000 n
+0000072992 00000 n
+0000073055 00000 n
+0000073117 00000 n
+0000073180 00000 n
+0000073243 00000 n
+0000073306 00000 n
+0000073369 00000 n
+0000073432 00000 n
+0000073494 00000 n
+0000073557 00000 n
+0000073620 00000 n
+0000073683 00000 n
+0000078243 00000 n
+0000077054 00000 n
+0000073947 00000 n
+0000077175 00000 n
+0000077237 00000 n
+0001890653 00000 n
+0000077300 00000 n
+0001889740 00000 n
+0000077363 00000 n
+0000077426 00000 n
+0000077489 00000 n
+0000077552 00000 n
+0000077615 00000 n
+0001891007 00000 n
+0000077678 00000 n
+0000077740 00000 n
+0000077803 00000 n
+0000077866 00000 n
+0000077928 00000 n
+0000077991 00000 n
+0000078054 00000 n
+0000078117 00000 n
+0000078180 00000 n
+0000082950 00000 n
+0000081762 00000 n
+0000078471 00000 n
+0000081883 00000 n
+0000081945 00000 n
+0000082008 00000 n
+0000082071 00000 n
+0000082134 00000 n
+0000082197 00000 n
+0000082260 00000 n
+0000082323 00000 n
+0000082386 00000 n
+0000082449 00000 n
+0000082512 00000 n
+0000082575 00000 n
+0000082638 00000 n
+0000082699 00000 n
+0000082762 00000 n
+0000082824 00000 n
+0000082887 00000 n
+0000088123 00000 n
+0000086492 00000 n
+0000083139 00000 n
+0000086613 00000 n
+0000086675 00000 n
+0000086738 00000 n
+0000086801 00000 n
+0000086864 00000 n
+0000086927 00000 n
+0000086990 00000 n
+0000087053 00000 n
+0000087116 00000 n
+0000087179 00000 n
+0000087242 00000 n
+0000087305 00000 n
+0000087368 00000 n
+0000087431 00000 n
+0000087494 00000 n
+0000087557 00000 n
+0000087620 00000 n
+0000087683 00000 n
+0000087746 00000 n
+0000087809 00000 n
+0000087872 00000 n
+0000087935 00000 n
+0000087998 00000 n
+0000088061 00000 n
+0000092772 00000 n
+0000091207 00000 n
+0000088325 00000 n
+0000091328 00000 n
+0000091390 00000 n
+0000091452 00000 n
+0000091515 00000 n
+0000091578 00000 n
+0000091641 00000 n
+0000091704 00000 n
+0000091767 00000 n
+0000091830 00000 n
+0000091893 00000 n
+0000091956 00000 n
+0000092019 00000 n
+0000092082 00000 n
+0000092145 00000 n
+0000092208 00000 n
+0000092271 00000 n
+0000092334 00000 n
+0000092396 00000 n
+0000092459 00000 n
+0000092522 00000 n
+0000092585 00000 n
+0001885453 00000 n
+0000092648 00000 n
+0000092710 00000 n
+0000096097 00000 n
+0000097004 00000 n
+0000095931 00000 n
+0000092974 00000 n
+0000096252 00000 n
+0000096314 00000 n
+0000096376 00000 n
+0000096439 00000 n
+0000096502 00000 n
+0000096565 00000 n
+0000096628 00000 n
+0000096691 00000 n
+0000096753 00000 n
+0000096816 00000 n
+0000096879 00000 n
+0000096942 00000 n
+0001889016 00000 n
+0001890472 00000 n
+0001890830 00000 n
+0000096068 00000 n
+0000101714 00000 n
+0000099584 00000 n
+0000097297 00000 n
+0000099705 00000 n
+0000099767 00000 n
+0000099830 00000 n
+0000099893 00000 n
+0000099956 00000 n
+0000100019 00000 n
+0000100082 00000 n
+0000100145 00000 n
+0000100208 00000 n
+0000100271 00000 n
+0000100334 00000 n
+0000100397 00000 n
+0000100460 00000 n
+0000100522 00000 n
+0000100585 00000 n
+0000100648 00000 n
+0000100711 00000 n
+0000100774 00000 n
+0000100837 00000 n
+0000100900 00000 n
+0000100963 00000 n
+0000101026 00000 n
+0000101087 00000 n
+0000101150 00000 n
+0000101213 00000 n
+0000101276 00000 n
+0000101339 00000 n
+0000101402 00000 n
+0000101465 00000 n
+0000101528 00000 n
+0000101591 00000 n
+0000105524 00000 n
+0000106685 00000 n
+0000105358 00000 n
+0000101929 00000 n
+0000105680 00000 n
+0001889370 00000 n
+0000105742 00000 n
+0000105805 00000 n
+0000105867 00000 n
+0000105930 00000 n
+0000105993 00000 n
+0000106056 00000 n
+0000106119 00000 n
+0000106182 00000 n
+0000106245 00000 n
+0000106308 00000 n
+0000106371 00000 n
+0000106433 00000 n
+0000106496 00000 n
+0000106559 00000 n
+0000106622 00000 n
+0000105495 00000 n
+0000112393 00000 n
+0000109761 00000 n
+0000106978 00000 n
+0000109882 00000 n
+0000109944 00000 n
+0000110007 00000 n
+0000110070 00000 n
+0000110132 00000 n
+0000110195 00000 n
+0000110258 00000 n
+0000110321 00000 n
+0000110384 00000 n
+0000110447 00000 n
+0000110509 00000 n
+0000110572 00000 n
+0000110635 00000 n
+0000110698 00000 n
+0000110761 00000 n
+0000110824 00000 n
+0000110887 00000 n
+0000110950 00000 n
+0000111013 00000 n
+0000111074 00000 n
+0000111137 00000 n
+0000111200 00000 n
+0000111263 00000 n
+0000111326 00000 n
+0000111389 00000 n
+0000111452 00000 n
+0000111515 00000 n
+0000111578 00000 n
+0000111641 00000 n
+0000111704 00000 n
+0000111767 00000 n
+0000111829 00000 n
+0000111892 00000 n
+0000111955 00000 n
+0000112018 00000 n
+0000112081 00000 n
+0000112144 00000 n
+0000112207 00000 n
+0000112270 00000 n
+0000112332 00000 n
+0001891671 00000 n
+0000118038 00000 n
+0000115088 00000 n
+0000112569 00000 n
+0000115209 00000 n
+0000115271 00000 n
+0000115334 00000 n
+0000115397 00000 n
+0000115460 00000 n
+0000115523 00000 n
+0000115586 00000 n
+0000115649 00000 n
+0000115712 00000 n
+0000115775 00000 n
+0000115837 00000 n
+0000115900 00000 n
+0000115963 00000 n
+0000116026 00000 n
+0000116089 00000 n
+0000116152 00000 n
+0000116215 00000 n
+0000116278 00000 n
+0000116341 00000 n
+0000116404 00000 n
+0000116466 00000 n
+0000116529 00000 n
+0000116592 00000 n
+0000116655 00000 n
+0000116718 00000 n
+0000116781 00000 n
+0000116844 00000 n
+0000116907 00000 n
+0000116970 00000 n
+0000117033 00000 n
+0000117096 00000 n
+0000117159 00000 n
+0000117222 00000 n
+0000117285 00000 n
+0000117348 00000 n
+0000117411 00000 n
+0000117474 00000 n
+0000117537 00000 n
+0000117600 00000 n
+0000117662 00000 n
+0000117725 00000 n
+0000117788 00000 n
+0000117851 00000 n
+0000117914 00000 n
+0000117976 00000 n
+0000123699 00000 n
+0000121000 00000 n
+0000118214 00000 n
+0000121121 00000 n
+0000121183 00000 n
+0000121246 00000 n
+0000121309 00000 n
+0000121372 00000 n
+0000121435 00000 n
+0000121498 00000 n
+0000121561 00000 n
+0000121624 00000 n
+0000121687 00000 n
+0000121749 00000 n
+0000121812 00000 n
+0000121875 00000 n
+0000121938 00000 n
+0000122001 00000 n
+0000122064 00000 n
+0000122127 00000 n
+0000122190 00000 n
+0000122253 00000 n
+0000122316 00000 n
+0000122379 00000 n
+0000122442 00000 n
+0000122505 00000 n
+0000122568 00000 n
+0000122631 00000 n
+0000122694 00000 n
+0000122757 00000 n
+0000122819 00000 n
+0000122882 00000 n
+0000122945 00000 n
+0000123008 00000 n
+0000123071 00000 n
+0000123134 00000 n
+0000123197 00000 n
+0000123260 00000 n
+0000123323 00000 n
+0000123386 00000 n
+0000123449 00000 n
+0000123512 00000 n
+0000123575 00000 n
+0000123637 00000 n
+0000129158 00000 n
+0000126329 00000 n
+0000123888 00000 n
+0000126450 00000 n
+0000126512 00000 n
+0000126575 00000 n
+0000126638 00000 n
+0000126701 00000 n
+0000126764 00000 n
+0000126826 00000 n
+0000126889 00000 n
+0000126952 00000 n
+0000127015 00000 n
+0000127078 00000 n
+0000127141 00000 n
+0000127204 00000 n
+0000127267 00000 n
+0000127330 00000 n
+0000127393 00000 n
+0000127456 00000 n
+0000127519 00000 n
+0000127582 00000 n
+0000127644 00000 n
+0000127707 00000 n
+0000127770 00000 n
+0000127833 00000 n
+0000127896 00000 n
+0000127959 00000 n
+0000128022 00000 n
+0000128085 00000 n
+0000128148 00000 n
+0000128210 00000 n
+0000128273 00000 n
+0000128336 00000 n
+0000128459 00000 n
+0000128522 00000 n
+0000128585 00000 n
+0000128649 00000 n
+0000128713 00000 n
+0000128776 00000 n
+0000128840 00000 n
+0000128904 00000 n
+0000128968 00000 n
+0000129032 00000 n
+0000129095 00000 n
+0000134378 00000 n
+0000131470 00000 n
+0000129347 00000 n
+0000131594 00000 n
+0000131658 00000 n
+0000131723 00000 n
+0000131788 00000 n
+0000131853 00000 n
+0000131918 00000 n
+0000131983 00000 n
+0000132048 00000 n
+0000132113 00000 n
+0000132178 00000 n
+0000132242 00000 n
+0000132307 00000 n
+0000132372 00000 n
+0000132437 00000 n
+0000132502 00000 n
+0000132565 00000 n
+0000132630 00000 n
+0000132695 00000 n
+0000132760 00000 n
+0000132825 00000 n
+0000132890 00000 n
+0000132955 00000 n
+0000133020 00000 n
+0000133085 00000 n
+0000133149 00000 n
+0000133214 00000 n
+0000133279 00000 n
+0000133344 00000 n
+0000133409 00000 n
+0000133474 00000 n
+0000133539 00000 n
+0000133604 00000 n
+0000133669 00000 n
+0000133733 00000 n
+0000133798 00000 n
+0000133863 00000 n
+0000133928 00000 n
+0000134055 00000 n
+0000134119 00000 n
+0000134184 00000 n
+0000134249 00000 n
+0000134314 00000 n
+0000139164 00000 n
+0000137419 00000 n
+0000134568 00000 n
+0000137543 00000 n
+0000137607 00000 n
+0000137672 00000 n
+0000137737 00000 n
+0000137802 00000 n
+0000137867 00000 n
+0000137932 00000 n
+0000137997 00000 n
+0000138062 00000 n
+0000138127 00000 n
+0000138192 00000 n
+0000138257 00000 n
+0000138322 00000 n
+0000138387 00000 n
+0000138452 00000 n
+0000138517 00000 n
+0000138582 00000 n
+0000138647 00000 n
+0000138712 00000 n
+0000138777 00000 n
+0000138842 00000 n
+0000138907 00000 n
+0000138971 00000 n
+0000139036 00000 n
+0000139100 00000 n
+0000143290 00000 n
+0000141999 00000 n
+0000139341 00000 n
+0000142123 00000 n
+0000142187 00000 n
+0000142252 00000 n
+0000142317 00000 n
+0000142382 00000 n
+0000142447 00000 n
+0000142512 00000 n
+0000142576 00000 n
+0000142641 00000 n
+0000142706 00000 n
+0000142771 00000 n
+0000142836 00000 n
+0000142901 00000 n
+0000142966 00000 n
+0000143030 00000 n
+0000143095 00000 n
+0000143160 00000 n
+0000143225 00000 n
+0000148777 00000 n
+0000146255 00000 n
+0000143467 00000 n
+0000146379 00000 n
+0000146443 00000 n
+0000146508 00000 n
+0000146573 00000 n
+0000146638 00000 n
+0000146703 00000 n
+0000146768 00000 n
+0000146833 00000 n
+0000146898 00000 n
+0000146963 00000 n
+0000147028 00000 n
+0000147093 00000 n
+0000147158 00000 n
+0000147222 00000 n
+0000147287 00000 n
+0000147352 00000 n
+0000147417 00000 n
+0000147482 00000 n
+0000147547 00000 n
+0000147612 00000 n
+0000147677 00000 n
+0000147742 00000 n
+0000147807 00000 n
+0000147871 00000 n
+0000147936 00000 n
+0000148001 00000 n
+0000148066 00000 n
+0000148131 00000 n
+0000148196 00000 n
+0000148261 00000 n
+0000148326 00000 n
+0000148391 00000 n
+0000148454 00000 n
+0000148519 00000 n
+0000148584 00000 n
+0000148649 00000 n
+0000148713 00000 n
+0000154759 00000 n
+0000151329 00000 n
+0000148954 00000 n
+0000151453 00000 n
+0000151517 00000 n
+0000151582 00000 n
+0000151647 00000 n
+0000151712 00000 n
+0000151777 00000 n
+0000151842 00000 n
+0000151907 00000 n
+0000151972 00000 n
+0000152037 00000 n
+0000152101 00000 n
+0000152166 00000 n
+0000152231 00000 n
+0000152296 00000 n
+0000152361 00000 n
+0000152425 00000 n
+0000152490 00000 n
+0000152555 00000 n
+0000152620 00000 n
+0000152685 00000 n
+0000152750 00000 n
+0000152815 00000 n
+0000152879 00000 n
+0000152944 00000 n
+0000153009 00000 n
+0000153074 00000 n
+0000153139 00000 n
+0000153204 00000 n
+0000153269 00000 n
+0000153334 00000 n
+0000153398 00000 n
+0000153463 00000 n
+0000153528 00000 n
+0000153593 00000 n
+0000153658 00000 n
+0000153723 00000 n
+0000153788 00000 n
+0000153853 00000 n
+0000153918 00000 n
+0000153982 00000 n
+0000154047 00000 n
+0000154112 00000 n
+0000154177 00000 n
+0000154242 00000 n
+0000154307 00000 n
+0000154372 00000 n
+0000154437 00000 n
+0000154502 00000 n
+0000154566 00000 n
+0000154631 00000 n
+0000154695 00000 n
+0000160913 00000 n
+0000156963 00000 n
+0000154923 00000 n
+0000157087 00000 n
+0000157151 00000 n
+0000157216 00000 n
+0000157281 00000 n
+0000157346 00000 n
+0000157411 00000 n
+0000157476 00000 n
+0000157541 00000 n
+0000157606 00000 n
+0000157671 00000 n
+0000157735 00000 n
+0000157800 00000 n
+0000157865 00000 n
+0000157930 00000 n
+0000157995 00000 n
+0000158060 00000 n
+0000158125 00000 n
+0000158190 00000 n
+0000158255 00000 n
+0000158319 00000 n
+0000158384 00000 n
+0000158449 00000 n
+0000158514 00000 n
+0000158579 00000 n
+0000158644 00000 n
+0000158709 00000 n
+0000158774 00000 n
+0000158839 00000 n
+0000158902 00000 n
+0000158967 00000 n
+0000159032 00000 n
+0000159097 00000 n
+0000159162 00000 n
+0000159227 00000 n
+0000159292 00000 n
+0000159357 00000 n
+0000159422 00000 n
+0000159487 00000 n
+0000159552 00000 n
+0000159617 00000 n
+0000159682 00000 n
+0000159747 00000 n
+0000159811 00000 n
+0000159876 00000 n
+0000159941 00000 n
+0000160006 00000 n
+0000160071 00000 n
+0000160136 00000 n
+0000160201 00000 n
+0000160266 00000 n
+0000160331 00000 n
+0000160395 00000 n
+0000160460 00000 n
+0000160525 00000 n
+0000160590 00000 n
+0000160655 00000 n
+0000160720 00000 n
+0000160785 00000 n
+0000160849 00000 n
+0000166905 00000 n
+0000163278 00000 n
+0000161077 00000 n
+0000163403 00000 n
+0000163467 00000 n
+0000163532 00000 n
+0000163597 00000 n
+0000163662 00000 n
+0000163727 00000 n
+0000163792 00000 n
+0000163857 00000 n
+0000163922 00000 n
+0000163987 00000 n
+0000164051 00000 n
+0000164116 00000 n
+0000164181 00000 n
+0000164246 00000 n
+0000164311 00000 n
+0000164376 00000 n
+0000164441 00000 n
+0000164506 00000 n
+0000164571 00000 n
+0000164635 00000 n
+0000164700 00000 n
+0000164765 00000 n
+0000164830 00000 n
+0000164895 00000 n
+0000164960 00000 n
+0000165025 00000 n
+0000165090 00000 n
+0000165155 00000 n
+0000165220 00000 n
+0000165285 00000 n
+0000165350 00000 n
+0000165414 00000 n
+0000165479 00000 n
+0000165544 00000 n
+0000165609 00000 n
+0000165674 00000 n
+0000165739 00000 n
+0000165804 00000 n
+0000165869 00000 n
+0000165934 00000 n
+0000165999 00000 n
+0000166064 00000 n
+0000166129 00000 n
+0000166193 00000 n
+0000166258 00000 n
+0000166323 00000 n
+0000166388 00000 n
+0000166453 00000 n
+0000166518 00000 n
+0000166583 00000 n
+0000166647 00000 n
+0000166712 00000 n
+0000166777 00000 n
+0000166841 00000 n
+0001891831 00000 n
+0000172842 00000 n
+0000168826 00000 n
+0000167082 00000 n
+0000168951 00000 n
+0000169015 00000 n
+0000169080 00000 n
+0000169145 00000 n
+0000169210 00000 n
+0000169275 00000 n
+0000169340 00000 n
+0000169405 00000 n
+0000169470 00000 n
+0000169535 00000 n
+0000169600 00000 n
+0000169664 00000 n
+0000169729 00000 n
+0000169794 00000 n
+0000169859 00000 n
+0000169924 00000 n
+0000169989 00000 n
+0000170054 00000 n
+0000170119 00000 n
+0000170184 00000 n
+0000170248 00000 n
+0000170313 00000 n
+0000170378 00000 n
+0000170443 00000 n
+0000170508 00000 n
+0000170573 00000 n
+0000170638 00000 n
+0000170703 00000 n
+0000170768 00000 n
+0000170832 00000 n
+0000170897 00000 n
+0000170962 00000 n
+0000171027 00000 n
+0000171092 00000 n
+0000171157 00000 n
+0000171222 00000 n
+0000171287 00000 n
+0000171352 00000 n
+0000171416 00000 n
+0000171481 00000 n
+0000171546 00000 n
+0000171611 00000 n
+0000171676 00000 n
+0000171741 00000 n
+0000171806 00000 n
+0000171871 00000 n
+0000171936 00000 n
+0000171999 00000 n
+0000172064 00000 n
+0000172129 00000 n
+0000172194 00000 n
+0000172259 00000 n
+0000172324 00000 n
+0000172389 00000 n
+0000172454 00000 n
+0000172519 00000 n
+0000172584 00000 n
+0000172649 00000 n
+0000172714 00000 n
+0000172778 00000 n
+0000178553 00000 n
+0000174797 00000 n
+0000172993 00000 n
+0000174922 00000 n
+0000174986 00000 n
+0000175051 00000 n
+0000175116 00000 n
+0000175181 00000 n
+0000175246 00000 n
+0000175311 00000 n
+0000175376 00000 n
+0000175441 00000 n
+0000175506 00000 n
+0000175570 00000 n
+0000175635 00000 n
+0000175700 00000 n
+0000175765 00000 n
+0000175830 00000 n
+0000175895 00000 n
+0000175960 00000 n
+0000176025 00000 n
+0000176090 00000 n
+0000176154 00000 n
+0000176219 00000 n
+0000176284 00000 n
+0000176349 00000 n
+0000176414 00000 n
+0000176479 00000 n
+0000176544 00000 n
+0000176609 00000 n
+0000176674 00000 n
+0000176737 00000 n
+0000176802 00000 n
+0000176867 00000 n
+0000176932 00000 n
+0000176997 00000 n
+0000177062 00000 n
+0000177127 00000 n
+0000177192 00000 n
+0000177257 00000 n
+0000177321 00000 n
+0000177386 00000 n
+0000177451 00000 n
+0000177515 00000 n
+0000177580 00000 n
+0000177645 00000 n
+0000177710 00000 n
+0000177775 00000 n
+0000177840 00000 n
+0000177905 00000 n
+0000177970 00000 n
+0000178035 00000 n
+0000178099 00000 n
+0000178164 00000 n
+0000178229 00000 n
+0000178294 00000 n
+0000178359 00000 n
+0000178424 00000 n
+0000178489 00000 n
+0000184012 00000 n
+0000181096 00000 n
+0000178730 00000 n
+0000181221 00000 n
+0000181285 00000 n
+0000181350 00000 n
+0000181415 00000 n
+0000181480 00000 n
+0000181545 00000 n
+0000181609 00000 n
+0000181674 00000 n
+0000181739 00000 n
+0000181804 00000 n
+0000181869 00000 n
+0000181934 00000 n
+0000181999 00000 n
+0000182063 00000 n
+0000182128 00000 n
+0000182193 00000 n
+0000182258 00000 n
+0000182323 00000 n
+0000182388 00000 n
+0000182453 00000 n
+0000182518 00000 n
+0000182583 00000 n
+0000182648 00000 n
+0000182713 00000 n
+0000182778 00000 n
+0000182843 00000 n
+0000182908 00000 n
+0000182973 00000 n
+0000183038 00000 n
+0000183103 00000 n
+0000183168 00000 n
+0000183233 00000 n
+0000183298 00000 n
+0000183363 00000 n
+0000183428 00000 n
+0000183493 00000 n
+0000183558 00000 n
+0000183623 00000 n
+0000183688 00000 n
+0000183753 00000 n
+0000183817 00000 n
+0000183882 00000 n
+0000183947 00000 n
+0000189738 00000 n
+0000186240 00000 n
+0000184189 00000 n
+0000186365 00000 n
+0000186429 00000 n
+0000186493 00000 n
+0000186558 00000 n
+0000186623 00000 n
+0000186688 00000 n
+0000186752 00000 n
+0000186817 00000 n
+0000186882 00000 n
+0000186947 00000 n
+0000187012 00000 n
+0000187077 00000 n
+0000187142 00000 n
+0000187207 00000 n
+0000187272 00000 n
+0000187337 00000 n
+0000187402 00000 n
+0000187467 00000 n
+0000187532 00000 n
+0000187597 00000 n
+0000187662 00000 n
+0000187727 00000 n
+0000187792 00000 n
+0000187857 00000 n
+0000187922 00000 n
+0000187987 00000 n
+0000188052 00000 n
+0000188117 00000 n
+0000188182 00000 n
+0000188247 00000 n
+0000188312 00000 n
+0000188376 00000 n
+0000188441 00000 n
+0000188506 00000 n
+0000188571 00000 n
+0000188636 00000 n
+0000188701 00000 n
+0000188766 00000 n
+0000188831 00000 n
+0000188896 00000 n
+0000188961 00000 n
+0000189026 00000 n
+0000189091 00000 n
+0000189156 00000 n
+0000189221 00000 n
+0000189286 00000 n
+0000189350 00000 n
+0000189415 00000 n
+0000189480 00000 n
+0000189545 00000 n
+0000189610 00000 n
+0000189674 00000 n
+0000194278 00000 n
+0000192467 00000 n
+0000189902 00000 n
+0000192592 00000 n
+0000192656 00000 n
+0000192721 00000 n
+0000192786 00000 n
+0000192851 00000 n
+0000192916 00000 n
+0000192981 00000 n
+0000193046 00000 n
+0000193111 00000 n
+0000193176 00000 n
+0000193241 00000 n
+0000193306 00000 n
+0000193433 00000 n
+0000193498 00000 n
+0000193563 00000 n
+0000193628 00000 n
+0000193693 00000 n
+0000193758 00000 n
+0000193823 00000 n
+0000193888 00000 n
+0000193953 00000 n
+0000194018 00000 n
+0000194083 00000 n
+0000194148 00000 n
+0000194213 00000 n
+0000199756 00000 n
+0000196646 00000 n
+0000194494 00000 n
+0000196771 00000 n
+0000196835 00000 n
+0000196900 00000 n
+0000196965 00000 n
+0000197030 00000 n
+0000197095 00000 n
+0000197160 00000 n
+0000197225 00000 n
+0000197290 00000 n
+0000197355 00000 n
+0000197420 00000 n
+0000197485 00000 n
+0000197550 00000 n
+0000197615 00000 n
+0000197680 00000 n
+0000197744 00000 n
+0000197809 00000 n
+0000197874 00000 n
+0000197939 00000 n
+0000198004 00000 n
+0000198069 00000 n
+0000198134 00000 n
+0000198199 00000 n
+0000198264 00000 n
+0000198329 00000 n
+0000198394 00000 n
+0000198459 00000 n
+0000198524 00000 n
+0000198589 00000 n
+0000198654 00000 n
+0000198719 00000 n
+0000198784 00000 n
+0000198847 00000 n
+0000198912 00000 n
+0000198977 00000 n
+0000199042 00000 n
+0000199107 00000 n
+0000199172 00000 n
+0000199237 00000 n
+0000199302 00000 n
+0000199367 00000 n
+0000199431 00000 n
+0000199496 00000 n
+0000199561 00000 n
+0000199626 00000 n
+0000199691 00000 n
+0000205788 00000 n
+0000201772 00000 n
+0000199946 00000 n
+0000201897 00000 n
+0000201961 00000 n
+0000202026 00000 n
+0000202091 00000 n
+0000202156 00000 n
+0000202221 00000 n
+0000202286 00000 n
+0000202351 00000 n
+0000202415 00000 n
+0000202480 00000 n
+0000202545 00000 n
+0000202610 00000 n
+0000202675 00000 n
+0000202740 00000 n
+0000202805 00000 n
+0000202870 00000 n
+0000202935 00000 n
+0000202999 00000 n
+0000203064 00000 n
+0000203129 00000 n
+0000203194 00000 n
+0000203259 00000 n
+0000203324 00000 n
+0000203389 00000 n
+0000203454 00000 n
+0000203519 00000 n
+0000203584 00000 n
+0000203648 00000 n
+0000203713 00000 n
+0000203778 00000 n
+0000203843 00000 n
+0000203908 00000 n
+0000203973 00000 n
+0000204038 00000 n
+0000204103 00000 n
+0000204168 00000 n
+0000204232 00000 n
+0000204297 00000 n
+0000204362 00000 n
+0000204427 00000 n
+0000204492 00000 n
+0000204557 00000 n
+0000204622 00000 n
+0000204687 00000 n
+0000204752 00000 n
+0000204817 00000 n
+0000204882 00000 n
+0000204946 00000 n
+0000205011 00000 n
+0000205076 00000 n
+0000205141 00000 n
+0000205206 00000 n
+0000205271 00000 n
+0000205336 00000 n
+0000205401 00000 n
+0000205466 00000 n
+0000205530 00000 n
+0000205595 00000 n
+0000205660 00000 n
+0000205724 00000 n
+0000211091 00000 n
+0000208957 00000 n
+0000205952 00000 n
+0000209082 00000 n
+0000209146 00000 n
+0000209211 00000 n
+0000209276 00000 n
+0000209341 00000 n
+0000209406 00000 n
+0000209471 00000 n
+0000209536 00000 n
+0000209601 00000 n
+0000209666 00000 n
+0000209730 00000 n
+0000209795 00000 n
+0000209860 00000 n
+0000209925 00000 n
+0000209990 00000 n
+0000210055 00000 n
+0000210119 00000 n
+0000210184 00000 n
+0000210249 00000 n
+0000210314 00000 n
+0000210379 00000 n
+0000210444 00000 n
+0000210509 00000 n
+0000210574 00000 n
+0000210639 00000 n
+0000210703 00000 n
+0000210768 00000 n
+0000210833 00000 n
+0000210898 00000 n
+0000210963 00000 n
+0000211027 00000 n
+0000216704 00000 n
+0000213335 00000 n
+0000211307 00000 n
+0000213460 00000 n
+0000213524 00000 n
+0000213589 00000 n
+0000213654 00000 n
+0000213719 00000 n
+0000213784 00000 n
+0000213849 00000 n
+0000213914 00000 n
+0000213979 00000 n
+0000214044 00000 n
+0000214109 00000 n
+0000214174 00000 n
+0000214239 00000 n
+0000214304 00000 n
+0000214369 00000 n
+0000214434 00000 n
+0000214498 00000 n
+0000214563 00000 n
+0000214628 00000 n
+0000214693 00000 n
+0000214758 00000 n
+0000214823 00000 n
+0000214888 00000 n
+0000214953 00000 n
+0000215018 00000 n
+0000215082 00000 n
+0000215147 00000 n
+0000215212 00000 n
+0000215277 00000 n
+0000215342 00000 n
+0000215407 00000 n
+0000215472 00000 n
+0000215537 00000 n
+0000215602 00000 n
+0000215667 00000 n
+0000215732 00000 n
+0000215797 00000 n
+0000215861 00000 n
+0000215926 00000 n
+0000215991 00000 n
+0000216056 00000 n
+0000216121 00000 n
+0000216186 00000 n
+0000216251 00000 n
+0000216316 00000 n
+0000216381 00000 n
+0000216446 00000 n
+0000216511 00000 n
+0000216576 00000 n
+0000216640 00000 n
+0000223841 00000 n
+0000221187 00000 n
+0000216881 00000 n
+0000221312 00000 n
+0000221376 00000 n
+0000221441 00000 n
+0000221506 00000 n
+0000221571 00000 n
+0000221636 00000 n
+0000221701 00000 n
+0000221766 00000 n
+0000221831 00000 n
+0000221896 00000 n
+0000221961 00000 n
+0000222026 00000 n
+0000222090 00000 n
+0000222155 00000 n
+0000222220 00000 n
+0000222285 00000 n
+0000222350 00000 n
+0000222415 00000 n
+0000222480 00000 n
+0000222545 00000 n
+0000222610 00000 n
+0000222675 00000 n
+0000222740 00000 n
+0000222805 00000 n
+0000222869 00000 n
+0000222934 00000 n
+0000222999 00000 n
+0000223064 00000 n
+0000223129 00000 n
+0000223194 00000 n
+0000223259 00000 n
+0000223324 00000 n
+0000223389 00000 n
+0000223453 00000 n
+0000223518 00000 n
+0000223583 00000 n
+0000223648 00000 n
+0000223713 00000 n
+0000223776 00000 n
+0001889553 00000 n
+0001891996 00000 n
+0000229506 00000 n
+0000226658 00000 n
+0000224045 00000 n
+0000226783 00000 n
+0000226847 00000 n
+0000226912 00000 n
+0000226977 00000 n
+0000227042 00000 n
+0000227107 00000 n
+0000227172 00000 n
+0000227237 00000 n
+0000227301 00000 n
+0000227366 00000 n
+0000227431 00000 n
+0000227496 00000 n
+0000227561 00000 n
+0000227625 00000 n
+0000227690 00000 n
+0000227755 00000 n
+0000227820 00000 n
+0000227885 00000 n
+0000227950 00000 n
+0000228015 00000 n
+0000228080 00000 n
+0000228145 00000 n
+0000228210 00000 n
+0000228275 00000 n
+0000228340 00000 n
+0000228405 00000 n
+0000228469 00000 n
+0000228534 00000 n
+0000228598 00000 n
+0000228663 00000 n
+0000228728 00000 n
+0000228793 00000 n
+0000228858 00000 n
+0000228923 00000 n
+0000228988 00000 n
+0000229053 00000 n
+0000229118 00000 n
+0000229183 00000 n
+0000229248 00000 n
+0000229313 00000 n
+0000229378 00000 n
+0000229442 00000 n
+0000235238 00000 n
+0000231742 00000 n
+0000229683 00000 n
+0000231867 00000 n
+0000231931 00000 n
+0000231996 00000 n
+0000232061 00000 n
+0000232126 00000 n
+0000232191 00000 n
+0000232256 00000 n
+0000232321 00000 n
+0000232386 00000 n
+0000232451 00000 n
+0000232515 00000 n
+0000232580 00000 n
+0000232645 00000 n
+0000232710 00000 n
+0000232775 00000 n
+0000232840 00000 n
+0000232905 00000 n
+0000232970 00000 n
+0000233035 00000 n
+0000233099 00000 n
+0000233164 00000 n
+0000233229 00000 n
+0000233293 00000 n
+0000233358 00000 n
+0000233423 00000 n
+0000233488 00000 n
+0000233553 00000 n
+0000233618 00000 n
+0000233683 00000 n
+0000233748 00000 n
+0000233813 00000 n
+0000233877 00000 n
+0000233942 00000 n
+0000234007 00000 n
+0000234072 00000 n
+0000234137 00000 n
+0000234202 00000 n
+0000234267 00000 n
+0000234332 00000 n
+0000234397 00000 n
+0000234460 00000 n
+0000234525 00000 n
+0000234590 00000 n
+0000234655 00000 n
+0000234720 00000 n
+0000234785 00000 n
+0000234850 00000 n
+0000234915 00000 n
+0000234980 00000 n
+0000235043 00000 n
+0000235108 00000 n
+0000235173 00000 n
+0000238441 00000 n
+0000238598 00000 n
+0000241741 00000 n
+0000238259 00000 n
+0000235454 00000 n
+0000238755 00000 n
+0000238819 00000 n
+0000238884 00000 n
+0000238949 00000 n
+0000239014 00000 n
+0000239079 00000 n
+0000239144 00000 n
+0000239209 00000 n
+0000239274 00000 n
+0000239339 00000 n
+0000239404 00000 n
+0000239469 00000 n
+0000239534 00000 n
+0000239599 00000 n
+0000239664 00000 n
+0000239729 00000 n
+0000239794 00000 n
+0000239859 00000 n
+0000239924 00000 n
+0000239989 00000 n
+0000240054 00000 n
+0000240119 00000 n
+0000240184 00000 n
+0000240249 00000 n
+0000240314 00000 n
+0000240379 00000 n
+0000240444 00000 n
+0000240508 00000 n
+0000240573 00000 n
+0000240638 00000 n
+0000240703 00000 n
+0000240768 00000 n
+0000240833 00000 n
+0000240898 00000 n
+0000240963 00000 n
+0000241028 00000 n
+0000241093 00000 n
+0000241158 00000 n
+0000241223 00000 n
+0000241288 00000 n
+0000241353 00000 n
+0000241418 00000 n
+0000241482 00000 n
+0000241547 00000 n
+0000241612 00000 n
+0000241677 00000 n
+0000238401 00000 n
+0000247255 00000 n
+0000244537 00000 n
+0000241983 00000 n
+0000244662 00000 n
+0000244726 00000 n
+0000244791 00000 n
+0000244855 00000 n
+0000244920 00000 n
+0000244985 00000 n
+0000245050 00000 n
+0000245115 00000 n
+0000245180 00000 n
+0000245245 00000 n
+0000245310 00000 n
+0000245375 00000 n
+0000245440 00000 n
+0000245504 00000 n
+0000245569 00000 n
+0000245634 00000 n
+0000245699 00000 n
+0000245764 00000 n
+0000245829 00000 n
+0000245894 00000 n
+0000245958 00000 n
+0000246022 00000 n
+0000246087 00000 n
+0000246152 00000 n
+0000246217 00000 n
+0000246282 00000 n
+0000246347 00000 n
+0000246412 00000 n
+0000246477 00000 n
+0000246542 00000 n
+0000246607 00000 n
+0000246672 00000 n
+0000246737 00000 n
+0000246802 00000 n
+0000246867 00000 n
+0000246932 00000 n
+0000246997 00000 n
+0000247062 00000 n
+0000247127 00000 n
+0000247192 00000 n
+0000253509 00000 n
+0000250012 00000 n
+0000247445 00000 n
+0000250137 00000 n
+0000250201 00000 n
+0000250266 00000 n
+0000250330 00000 n
+0000250395 00000 n
+0000250460 00000 n
+0000250525 00000 n
+0000250590 00000 n
+0000250655 00000 n
+0000250720 00000 n
+0000250784 00000 n
+0000250849 00000 n
+0000250914 00000 n
+0000250979 00000 n
+0000251044 00000 n
+0000251109 00000 n
+0000251174 00000 n
+0000251239 00000 n
+0000251304 00000 n
+0000251369 00000 n
+0000251434 00000 n
+0000251499 00000 n
+0000251563 00000 n
+0000251628 00000 n
+0000251693 00000 n
+0000251758 00000 n
+0000251823 00000 n
+0000251888 00000 n
+0000251953 00000 n
+0000252018 00000 n
+0000252083 00000 n
+0000252147 00000 n
+0000252212 00000 n
+0000252277 00000 n
+0000252342 00000 n
+0000252407 00000 n
+0000252472 00000 n
+0000252537 00000 n
+0000252602 00000 n
+0000252667 00000 n
+0000252732 00000 n
+0000252797 00000 n
+0000252862 00000 n
+0000252927 00000 n
+0000252992 00000 n
+0000253057 00000 n
+0000253122 00000 n
+0000253187 00000 n
+0000253252 00000 n
+0000253317 00000 n
+0000253381 00000 n
+0000253446 00000 n
+0000258965 00000 n
+0000256634 00000 n
+0000253686 00000 n
+0000256759 00000 n
+0000256823 00000 n
+0000256888 00000 n
+0000256953 00000 n
+0000257018 00000 n
+0000257083 00000 n
+0000257148 00000 n
+0000257213 00000 n
+0000257278 00000 n
+0000257343 00000 n
+0000257408 00000 n
+0000257473 00000 n
+0000257538 00000 n
+0000257603 00000 n
+0000257668 00000 n
+0000257733 00000 n
+0000257798 00000 n
+0000257863 00000 n
+0000257928 00000 n
+0000257993 00000 n
+0000258058 00000 n
+0000258123 00000 n
+0000258188 00000 n
+0000258253 00000 n
+0000258318 00000 n
+0000258382 00000 n
+0000258447 00000 n
+0000258512 00000 n
+0000258577 00000 n
+0000258642 00000 n
+0000258707 00000 n
+0000258772 00000 n
+0000258837 00000 n
+0000258901 00000 n
+0000263917 00000 n
+0000261847 00000 n
+0000259168 00000 n
+0000261972 00000 n
+0000262036 00000 n
+0000262101 00000 n
+0000262166 00000 n
+0000262230 00000 n
+0000262295 00000 n
+0000262360 00000 n
+0000262425 00000 n
+0000262490 00000 n
+0000262555 00000 n
+0000262620 00000 n
+0000262685 00000 n
+0000262750 00000 n
+0000262815 00000 n
+0000262880 00000 n
+0000262945 00000 n
+0000263009 00000 n
+0000263074 00000 n
+0000263139 00000 n
+0000263204 00000 n
+0000263269 00000 n
+0000263334 00000 n
+0000263399 00000 n
+0000263464 00000 n
+0000263529 00000 n
+0000263594 00000 n
+0000263659 00000 n
+0000263724 00000 n
+0000263789 00000 n
+0000263854 00000 n
+0000268931 00000 n
+0000266473 00000 n
+0000264133 00000 n
+0000266598 00000 n
+0000266662 00000 n
+0000266727 00000 n
+0000266792 00000 n
+0000266857 00000 n
+0000266922 00000 n
+0000266987 00000 n
+0000267052 00000 n
+0000267117 00000 n
+0000267182 00000 n
+0000267247 00000 n
+0000267310 00000 n
+0000267375 00000 n
+0000267440 00000 n
+0000267505 00000 n
+0000267570 00000 n
+0000267635 00000 n
+0000267700 00000 n
+0000267764 00000 n
+0000267829 00000 n
+0000267894 00000 n
+0000267959 00000 n
+0000268024 00000 n
+0000268089 00000 n
+0000268154 00000 n
+0000268219 00000 n
+0000268284 00000 n
+0000268349 00000 n
+0000268414 00000 n
+0000268479 00000 n
+0000268544 00000 n
+0000268609 00000 n
+0000268674 00000 n
+0000268739 00000 n
+0000268804 00000 n
+0000274412 00000 n
+0000271692 00000 n
+0000269108 00000 n
+0000271817 00000 n
+0000271881 00000 n
+0000271946 00000 n
+0000272011 00000 n
+0000272075 00000 n
+0000272140 00000 n
+0000272205 00000 n
+0000272270 00000 n
+0000272335 00000 n
+0000272400 00000 n
+0000272465 00000 n
+0000272530 00000 n
+0000272595 00000 n
+0000272660 00000 n
+0000272725 00000 n
+0000272790 00000 n
+0000272855 00000 n
+0000272920 00000 n
+0000272985 00000 n
+0000273050 00000 n
+0000273115 00000 n
+0000273180 00000 n
+0000273245 00000 n
+0000273310 00000 n
+0000273375 00000 n
+0000273440 00000 n
+0000273505 00000 n
+0000273570 00000 n
+0000273635 00000 n
+0000273700 00000 n
+0000273765 00000 n
+0000273830 00000 n
+0000273895 00000 n
+0000273960 00000 n
+0000274024 00000 n
+0000274089 00000 n
+0000274154 00000 n
+0000274219 00000 n
+0000274284 00000 n
+0000274348 00000 n
+0000280173 00000 n
+0000277522 00000 n
+0000274602 00000 n
+0000277647 00000 n
+0000277711 00000 n
+0000277776 00000 n
+0000277841 00000 n
+0000277906 00000 n
+0000277971 00000 n
+0000278036 00000 n
+0000278101 00000 n
+0000278166 00000 n
+0000278231 00000 n
+0000278295 00000 n
+0000278360 00000 n
+0000278425 00000 n
+0000278490 00000 n
+0000278555 00000 n
+0000278620 00000 n
+0000278685 00000 n
+0000278750 00000 n
+0000278814 00000 n
+0000278879 00000 n
+0000278944 00000 n
+0000279008 00000 n
+0000279073 00000 n
+0000279138 00000 n
+0000279201 00000 n
+0000279266 00000 n
+0000279331 00000 n
+0000279396 00000 n
+0000279461 00000 n
+0000279526 00000 n
+0000279591 00000 n
+0000279656 00000 n
+0000279721 00000 n
+0000279786 00000 n
+0000279851 00000 n
+0000279916 00000 n
+0000279981 00000 n
+0000280046 00000 n
+0000280109 00000 n
+0001892161 00000 n
+0000286097 00000 n
+0000282533 00000 n
+0000280376 00000 n
+0000282658 00000 n
+0000282722 00000 n
+0000282787 00000 n
+0000282852 00000 n
+0000282917 00000 n
+0000282982 00000 n
+0000283047 00000 n
+0000283112 00000 n
+0000283177 00000 n
+0000283242 00000 n
+0000283307 00000 n
+0000283372 00000 n
+0000283437 00000 n
+0000283502 00000 n
+0000283567 00000 n
+0000283632 00000 n
+0000283697 00000 n
+0000283762 00000 n
+0000283825 00000 n
+0000283890 00000 n
+0000283955 00000 n
+0000284020 00000 n
+0000284085 00000 n
+0000284150 00000 n
+0000284215 00000 n
+0000284280 00000 n
+0000284345 00000 n
+0000284409 00000 n
+0000284474 00000 n
+0000284539 00000 n
+0000284604 00000 n
+0000284669 00000 n
+0000284734 00000 n
+0000284799 00000 n
+0000284864 00000 n
+0000284929 00000 n
+0000284993 00000 n
+0000285058 00000 n
+0000285123 00000 n
+0000285188 00000 n
+0000285253 00000 n
+0000285318 00000 n
+0000285383 00000 n
+0000285448 00000 n
+0000285513 00000 n
+0000285577 00000 n
+0000285642 00000 n
+0000285707 00000 n
+0000285772 00000 n
+0000285837 00000 n
+0000285902 00000 n
+0000285967 00000 n
+0000286032 00000 n
+0000288532 00000 n
+0000291996 00000 n
+0000288359 00000 n
+0000286261 00000 n
+0000288689 00000 n
+0000288753 00000 n
+0000288818 00000 n
+0000288883 00000 n
+0000288948 00000 n
+0000289013 00000 n
+0000289078 00000 n
+0000289143 00000 n
+0000289208 00000 n
+0000289273 00000 n
+0000289337 00000 n
+0000289402 00000 n
+0000289467 00000 n
+0000289532 00000 n
+0000289597 00000 n
+0000289662 00000 n
+0000289727 00000 n
+0000289792 00000 n
+0000289857 00000 n
+0000289922 00000 n
+0000289987 00000 n
+0000290052 00000 n
+0000290116 00000 n
+0000290181 00000 n
+0000290246 00000 n
+0000290311 00000 n
+0000290376 00000 n
+0000290441 00000 n
+0000290506 00000 n
+0000290571 00000 n
+0000290636 00000 n
+0000290701 00000 n
+0000290766 00000 n
+0000290831 00000 n
+0000290896 00000 n
+0000290960 00000 n
+0000291025 00000 n
+0000291090 00000 n
+0000291155 00000 n
+0000291220 00000 n
+0000291285 00000 n
+0000291350 00000 n
+0000291415 00000 n
+0000291480 00000 n
+0000291545 00000 n
+0000291610 00000 n
+0000291737 00000 n
+0000291802 00000 n
+0000291867 00000 n
+0000291932 00000 n
+0000288501 00000 n
+0000295467 00000 n
+0000298023 00000 n
+0000295294 00000 n
+0000292225 00000 n
+0000295623 00000 n
+0000295687 00000 n
+0000295752 00000 n
+0000295817 00000 n
+0000295882 00000 n
+0000295947 00000 n
+0000296012 00000 n
+0000296077 00000 n
+0000296142 00000 n
+0000296207 00000 n
+0000296272 00000 n
+0000296337 00000 n
+0000296401 00000 n
+0000296466 00000 n
+0000296531 00000 n
+0000296596 00000 n
+0000296661 00000 n
+0000296726 00000 n
+0000296791 00000 n
+0000296856 00000 n
+0000296921 00000 n
+0000296986 00000 n
+0000297051 00000 n
+0000297116 00000 n
+0000297181 00000 n
+0000297245 00000 n
+0000297310 00000 n
+0000297375 00000 n
+0000297440 00000 n
+0000297505 00000 n
+0000297570 00000 n
+0000297635 00000 n
+0000297700 00000 n
+0000297764 00000 n
+0000297829 00000 n
+0000297894 00000 n
+0000297959 00000 n
+0000295436 00000 n
+0000303821 00000 n
+0000300841 00000 n
+0000298278 00000 n
+0000300966 00000 n
+0000301030 00000 n
+0000301095 00000 n
+0000301160 00000 n
+0000301225 00000 n
+0000301290 00000 n
+0000301355 00000 n
+0000301420 00000 n
+0000301485 00000 n
+0000301550 00000 n
+0000301615 00000 n
+0000301680 00000 n
+0000301745 00000 n
+0000301810 00000 n
+0000301875 00000 n
+0000301940 00000 n
+0000302005 00000 n
+0000302070 00000 n
+0000302135 00000 n
+0000302200 00000 n
+0000302265 00000 n
+0000302330 00000 n
+0000302395 00000 n
+0000302460 00000 n
+0000302525 00000 n
+0000302590 00000 n
+0000302655 00000 n
+0000302720 00000 n
+0000302784 00000 n
+0000302849 00000 n
+0000302914 00000 n
+0000302979 00000 n
+0000303044 00000 n
+0000303109 00000 n
+0000303174 00000 n
+0000303239 00000 n
+0000303304 00000 n
+0000303368 00000 n
+0000303433 00000 n
+0000303498 00000 n
+0000303563 00000 n
+0000303628 00000 n
+0000303693 00000 n
+0000303757 00000 n
+0000306622 00000 n
+0000310021 00000 n
+0000306449 00000 n
+0000303985 00000 n
+0000306779 00000 n
+0000306843 00000 n
+0000306908 00000 n
+0000306973 00000 n
+0000307038 00000 n
+0000307103 00000 n
+0000307168 00000 n
+0000307233 00000 n
+0000307298 00000 n
+0000307362 00000 n
+0000307427 00000 n
+0000307492 00000 n
+0000307557 00000 n
+0000307622 00000 n
+0000307687 00000 n
+0000307752 00000 n
+0000307817 00000 n
+0000307882 00000 n
+0000307946 00000 n
+0000308011 00000 n
+0000308076 00000 n
+0000308141 00000 n
+0000308206 00000 n
+0000308271 00000 n
+0000308336 00000 n
+0000308401 00000 n
+0000308466 00000 n
+0000308530 00000 n
+0000308595 00000 n
+0000308660 00000 n
+0000308725 00000 n
+0000308789 00000 n
+0000308854 00000 n
+0000308919 00000 n
+0000308984 00000 n
+0000309049 00000 n
+0000309114 00000 n
+0000309179 00000 n
+0000309244 00000 n
+0000309309 00000 n
+0000309374 00000 n
+0000309438 00000 n
+0000309503 00000 n
+0000309567 00000 n
+0000309632 00000 n
+0000309697 00000 n
+0000309762 00000 n
+0000309827 00000 n
+0000309892 00000 n
+0000309957 00000 n
+0000306591 00000 n
+0000313173 00000 n
+0000313331 00000 n
+0000316537 00000 n
+0000312991 00000 n
+0000310263 00000 n
+0000313488 00000 n
+0000313552 00000 n
+0000313617 00000 n
+0000313682 00000 n
+0000313747 00000 n
+0000313812 00000 n
+0000313877 00000 n
+0000313942 00000 n
+0000314007 00000 n
+0000314072 00000 n
+0000314136 00000 n
+0000314201 00000 n
+0000314266 00000 n
+0000314331 00000 n
+0000314396 00000 n
+0000314461 00000 n
+0000314526 00000 n
+0000314591 00000 n
+0000314655 00000 n
+0000314720 00000 n
+0000314785 00000 n
+0000314850 00000 n
+0000314915 00000 n
+0000314980 00000 n
+0000315045 00000 n
+0000315110 00000 n
+0000315174 00000 n
+0000315239 00000 n
+0000315304 00000 n
+0000315369 00000 n
+0000315434 00000 n
+0000315499 00000 n
+0000315564 00000 n
+0000315629 00000 n
+0000315694 00000 n
+0000315759 00000 n
+0000315824 00000 n
+0000315889 00000 n
+0000315954 00000 n
+0000316019 00000 n
+0000316084 00000 n
+0000316149 00000 n
+0000316214 00000 n
+0000316278 00000 n
+0000316343 00000 n
+0000316408 00000 n
+0000316473 00000 n
+0000313133 00000 n
+0000319432 00000 n
+0000322113 00000 n
+0000319259 00000 n
+0000316818 00000 n
+0000319589 00000 n
+0000319653 00000 n
+0000319718 00000 n
+0000319783 00000 n
+0000319848 00000 n
+0000319913 00000 n
+0000319978 00000 n
+0000320043 00000 n
+0000320108 00000 n
+0000320173 00000 n
+0000320238 00000 n
+0000320303 00000 n
+0000320366 00000 n
+0000320431 00000 n
+0000320496 00000 n
+0000320561 00000 n
+0000320626 00000 n
+0000320691 00000 n
+0000320756 00000 n
+0000320821 00000 n
+0000320886 00000 n
+0000320950 00000 n
+0000321015 00000 n
+0000321080 00000 n
+0000321145 00000 n
+0000321210 00000 n
+0000321275 00000 n
+0000321340 00000 n
+0000321404 00000 n
+0000321469 00000 n
+0000321534 00000 n
+0000321599 00000 n
+0000321663 00000 n
+0000321790 00000 n
+0000321855 00000 n
+0000321920 00000 n
+0000321985 00000 n
+0000322049 00000 n
+0000319401 00000 n
+0000327623 00000 n
+0000324580 00000 n
+0000322303 00000 n
+0000324705 00000 n
+0000324769 00000 n
+0000324834 00000 n
+0000324899 00000 n
+0000324964 00000 n
+0000325029 00000 n
+0000325093 00000 n
+0000325158 00000 n
+0000325223 00000 n
+0000325287 00000 n
+0000325352 00000 n
+0000325417 00000 n
+0000325482 00000 n
+0000325547 00000 n
+0000325612 00000 n
+0000325677 00000 n
+0000325742 00000 n
+0000325807 00000 n
+0000325872 00000 n
+0000325937 00000 n
+0000326002 00000 n
+0000326067 00000 n
+0000326132 00000 n
+0000326197 00000 n
+0000326262 00000 n
+0000326327 00000 n
+0000326392 00000 n
+0000326457 00000 n
+0000326522 00000 n
+0000326587 00000 n
+0000326652 00000 n
+0000326717 00000 n
+0000326781 00000 n
+0000326846 00000 n
+0000326911 00000 n
+0000326976 00000 n
+0000327041 00000 n
+0000327106 00000 n
+0000327171 00000 n
+0000327236 00000 n
+0000327301 00000 n
+0000327365 00000 n
+0000327430 00000 n
+0000327495 00000 n
+0000327559 00000 n
+0000335493 00000 n
+0000333036 00000 n
+0000329929 00000 n
+0000327800 00000 n
+0000330054 00000 n
+0000330118 00000 n
+0000330183 00000 n
+0000330247 00000 n
+0000330312 00000 n
+0000330377 00000 n
+0000330442 00000 n
+0000330507 00000 n
+0000330572 00000 n
+0000330637 00000 n
+0000330702 00000 n
+0000330765 00000 n
+0000330830 00000 n
+0000330895 00000 n
+0000330960 00000 n
+0000331025 00000 n
+0000331090 00000 n
+0000331155 00000 n
+0000331220 00000 n
+0000331285 00000 n
+0000331349 00000 n
+0000331414 00000 n
+0000331479 00000 n
+0000331544 00000 n
+0000331609 00000 n
+0000331674 00000 n
+0000331739 00000 n
+0000331804 00000 n
+0000331869 00000 n
+0000331933 00000 n
+0000331998 00000 n
+0000332063 00000 n
+0000332128 00000 n
+0000332193 00000 n
+0000332258 00000 n
+0000332323 00000 n
+0000332388 00000 n
+0000332453 00000 n
+0000332517 00000 n
+0000332582 00000 n
+0000332647 00000 n
+0000332711 00000 n
+0000332776 00000 n
+0000332841 00000 n
+0000332906 00000 n
+0000332971 00000 n
+0000339021 00000 n
+0000335320 00000 n
+0000333200 00000 n
+0000335650 00000 n
+0000335714 00000 n
+0000335779 00000 n
+0000335844 00000 n
+0000335908 00000 n
+0000335973 00000 n
+0000336038 00000 n
+0000336103 00000 n
+0000336167 00000 n
+0000336232 00000 n
+0000336297 00000 n
+0000336362 00000 n
+0000336427 00000 n
+0000336492 00000 n
+0000336557 00000 n
+0000336622 00000 n
+0000336687 00000 n
+0000336752 00000 n
+0000336817 00000 n
+0000336882 00000 n
+0000336946 00000 n
+0000337011 00000 n
+0000337076 00000 n
+0000337141 00000 n
+0000337205 00000 n
+0000337270 00000 n
+0000337334 00000 n
+0000337399 00000 n
+0000337464 00000 n
+0000337529 00000 n
+0000337594 00000 n
+0000337659 00000 n
+0000337724 00000 n
+0000337789 00000 n
+0000337854 00000 n
+0000337918 00000 n
+0000337983 00000 n
+0000338048 00000 n
+0000338113 00000 n
+0000338178 00000 n
+0000338243 00000 n
+0000338308 00000 n
+0000338373 00000 n
+0000338438 00000 n
+0000338503 00000 n
+0000338568 00000 n
+0000338633 00000 n
+0000338697 00000 n
+0000338762 00000 n
+0000338827 00000 n
+0000338892 00000 n
+0000338957 00000 n
+0001892326 00000 n
+0000335462 00000 n
+0000344586 00000 n
+0000341092 00000 n
+0000339250 00000 n
+0000341217 00000 n
+0000341281 00000 n
+0000341346 00000 n
+0000341411 00000 n
+0000341476 00000 n
+0000341541 00000 n
+0000341605 00000 n
+0000341670 00000 n
+0000341735 00000 n
+0000341799 00000 n
+0000341864 00000 n
+0000341929 00000 n
+0000341994 00000 n
+0000342059 00000 n
+0000342124 00000 n
+0000342188 00000 n
+0000342253 00000 n
+0000342318 00000 n
+0000342383 00000 n
+0000342448 00000 n
+0000342513 00000 n
+0000342578 00000 n
+0000342641 00000 n
+0000342706 00000 n
+0000342771 00000 n
+0000342836 00000 n
+0000342901 00000 n
+0000342966 00000 n
+0000343031 00000 n
+0000343095 00000 n
+0000343160 00000 n
+0000343225 00000 n
+0000343290 00000 n
+0000343355 00000 n
+0000343420 00000 n
+0000343485 00000 n
+0000343550 00000 n
+0000343615 00000 n
+0000343679 00000 n
+0000343744 00000 n
+0000343809 00000 n
+0000343874 00000 n
+0000343939 00000 n
+0000344003 00000 n
+0000344068 00000 n
+0000344133 00000 n
+0000344198 00000 n
+0000344263 00000 n
+0000344328 00000 n
+0000344393 00000 n
+0000344458 00000 n
+0000344522 00000 n
+0000350486 00000 n
+0000346662 00000 n
+0000344750 00000 n
+0000346787 00000 n
+0000346851 00000 n
+0000346916 00000 n
+0000346981 00000 n
+0000347046 00000 n
+0000347111 00000 n
+0000347176 00000 n
+0000347241 00000 n
+0000347306 00000 n
+0000347371 00000 n
+0000347436 00000 n
+0000347501 00000 n
+0000347566 00000 n
+0000347631 00000 n
+0000347696 00000 n
+0000347761 00000 n
+0000347826 00000 n
+0000347891 00000 n
+0000347956 00000 n
+0000348020 00000 n
+0000348085 00000 n
+0000348150 00000 n
+0000348215 00000 n
+0000348280 00000 n
+0000348345 00000 n
+0000348410 00000 n
+0000348475 00000 n
+0000348540 00000 n
+0000348604 00000 n
+0000348669 00000 n
+0000348734 00000 n
+0000348799 00000 n
+0000348864 00000 n
+0000348929 00000 n
+0000348994 00000 n
+0000349059 00000 n
+0000349124 00000 n
+0000349188 00000 n
+0000349253 00000 n
+0000349318 00000 n
+0000349383 00000 n
+0000349448 00000 n
+0000349513 00000 n
+0000349578 00000 n
+0000349643 00000 n
+0000349708 00000 n
+0000349773 00000 n
+0000349838 00000 n
+0000349903 00000 n
+0000349968 00000 n
+0000350033 00000 n
+0000350098 00000 n
+0000350163 00000 n
+0000350228 00000 n
+0000350293 00000 n
+0000350358 00000 n
+0000350422 00000 n
+0000356383 00000 n
+0000353081 00000 n
+0000350663 00000 n
+0000353206 00000 n
+0000353270 00000 n
+0000353335 00000 n
+0000353400 00000 n
+0000353465 00000 n
+0000353530 00000 n
+0000353595 00000 n
+0000353660 00000 n
+0000353725 00000 n
+0000353789 00000 n
+0000353854 00000 n
+0000353919 00000 n
+0000353983 00000 n
+0000354048 00000 n
+0000354113 00000 n
+0000354178 00000 n
+0000354243 00000 n
+0000354308 00000 n
+0000354373 00000 n
+0000354438 00000 n
+0000354503 00000 n
+0000354567 00000 n
+0000354632 00000 n
+0000354697 00000 n
+0000354762 00000 n
+0000354827 00000 n
+0000354892 00000 n
+0000354957 00000 n
+0000355022 00000 n
+0000355087 00000 n
+0000355151 00000 n
+0000355216 00000 n
+0000355281 00000 n
+0000355346 00000 n
+0000355411 00000 n
+0000355476 00000 n
+0000355541 00000 n
+0000355606 00000 n
+0000355671 00000 n
+0000355735 00000 n
+0000355800 00000 n
+0000355865 00000 n
+0000355930 00000 n
+0000355995 00000 n
+0000356060 00000 n
+0000356125 00000 n
+0000356190 00000 n
+0000356255 00000 n
+0000356319 00000 n
+0000362166 00000 n
+0000359772 00000 n
+0000356560 00000 n
+0000359897 00000 n
+0000359961 00000 n
+0000360026 00000 n
+0000360091 00000 n
+0000360156 00000 n
+0000360221 00000 n
+0000360286 00000 n
+0000360351 00000 n
+0000360416 00000 n
+0000360481 00000 n
+0000360545 00000 n
+0000360610 00000 n
+0000360675 00000 n
+0000360740 00000 n
+0000360805 00000 n
+0000360870 00000 n
+0000360935 00000 n
+0000360999 00000 n
+0000361064 00000 n
+0000361129 00000 n
+0000361194 00000 n
+0000361259 00000 n
+0000361324 00000 n
+0000361389 00000 n
+0000361454 00000 n
+0000361519 00000 n
+0000361584 00000 n
+0000361648 00000 n
+0000361713 00000 n
+0000361778 00000 n
+0000361843 00000 n
+0000361908 00000 n
+0000361973 00000 n
+0000362038 00000 n
+0000362102 00000 n
+0000367873 00000 n
+0000364699 00000 n
+0000362356 00000 n
+0000364824 00000 n
+0000364888 00000 n
+0000364953 00000 n
+0000365018 00000 n
+0000365083 00000 n
+0000365148 00000 n
+0000365213 00000 n
+0000365278 00000 n
+0000365343 00000 n
+0000365408 00000 n
+0000365473 00000 n
+0000365538 00000 n
+0000365603 00000 n
+0000365668 00000 n
+0000365733 00000 n
+0000365797 00000 n
+0000365862 00000 n
+0000365927 00000 n
+0000365992 00000 n
+0000366057 00000 n
+0000366122 00000 n
+0000366187 00000 n
+0000366252 00000 n
+0000366317 00000 n
+0000366381 00000 n
+0000366446 00000 n
+0000366511 00000 n
+0000366576 00000 n
+0000366641 00000 n
+0000366706 00000 n
+0000366771 00000 n
+0000366836 00000 n
+0000366901 00000 n
+0000366966 00000 n
+0000367031 00000 n
+0000367096 00000 n
+0000367161 00000 n
+0000367226 00000 n
+0000367291 00000 n
+0000367356 00000 n
+0000367420 00000 n
+0000367485 00000 n
+0000367550 00000 n
+0000367615 00000 n
+0000367680 00000 n
+0000367745 00000 n
+0000367809 00000 n
+0000373559 00000 n
+0000370322 00000 n
+0000368050 00000 n
+0000370447 00000 n
+0000370511 00000 n
+0000370576 00000 n
+0000370640 00000 n
+0000370705 00000 n
+0000370770 00000 n
+0000370835 00000 n
+0000370900 00000 n
+0000370965 00000 n
+0000371030 00000 n
+0000371095 00000 n
+0000371160 00000 n
+0000371225 00000 n
+0000371290 00000 n
+0000371355 00000 n
+0000371419 00000 n
+0000371484 00000 n
+0000371549 00000 n
+0000371614 00000 n
+0000371679 00000 n
+0000371744 00000 n
+0000371809 00000 n
+0000371874 00000 n
+0000371939 00000 n
+0000372003 00000 n
+0000372068 00000 n
+0000372133 00000 n
+0000372198 00000 n
+0000372263 00000 n
+0000372328 00000 n
+0000372393 00000 n
+0000372458 00000 n
+0000372523 00000 n
+0000372588 00000 n
+0000372652 00000 n
+0000372717 00000 n
+0000372782 00000 n
+0000372847 00000 n
+0000372912 00000 n
+0000372977 00000 n
+0000373042 00000 n
+0000373107 00000 n
+0000373172 00000 n
+0000373237 00000 n
+0000373300 00000 n
+0000373365 00000 n
+0000373430 00000 n
+0000373495 00000 n
+0000379276 00000 n
+0000375779 00000 n
+0000373749 00000 n
+0000375904 00000 n
+0000375968 00000 n
+0000376033 00000 n
+0000376098 00000 n
+0000376163 00000 n
+0000376228 00000 n
+0000376293 00000 n
+0000376358 00000 n
+0000376422 00000 n
+0000376487 00000 n
+0000376552 00000 n
+0000376617 00000 n
+0000376682 00000 n
+0000376747 00000 n
+0000376812 00000 n
+0000376877 00000 n
+0000376942 00000 n
+0000377006 00000 n
+0000377071 00000 n
+0000377136 00000 n
+0000377201 00000 n
+0000377266 00000 n
+0000377331 00000 n
+0000377396 00000 n
+0000377460 00000 n
+0000377525 00000 n
+0000377590 00000 n
+0000377655 00000 n
+0000377720 00000 n
+0000377785 00000 n
+0000377850 00000 n
+0000377914 00000 n
+0000377979 00000 n
+0000378044 00000 n
+0000378109 00000 n
+0000378174 00000 n
+0000378239 00000 n
+0000378304 00000 n
+0000378369 00000 n
+0000378434 00000 n
+0000378499 00000 n
+0000378564 00000 n
+0000378629 00000 n
+0000378694 00000 n
+0000378759 00000 n
+0000378824 00000 n
+0000378889 00000 n
+0000378954 00000 n
+0000379018 00000 n
+0000379083 00000 n
+0000379148 00000 n
+0000379212 00000 n
+0000385071 00000 n
+0000381446 00000 n
+0000379453 00000 n
+0000381571 00000 n
+0000381635 00000 n
+0000381700 00000 n
+0000381765 00000 n
+0000381830 00000 n
+0000381895 00000 n
+0000381959 00000 n
+0000382024 00000 n
+0000382089 00000 n
+0000382154 00000 n
+0000382218 00000 n
+0000382283 00000 n
+0000382348 00000 n
+0000382413 00000 n
+0000382478 00000 n
+0000382543 00000 n
+0000382608 00000 n
+0000382673 00000 n
+0000382738 00000 n
+0000382802 00000 n
+0000382867 00000 n
+0000382932 00000 n
+0000382997 00000 n
+0000383062 00000 n
+0000383127 00000 n
+0000383192 00000 n
+0000383257 00000 n
+0000383321 00000 n
+0000383386 00000 n
+0000383451 00000 n
+0000383516 00000 n
+0000383581 00000 n
+0000383646 00000 n
+0000383711 00000 n
+0000383776 00000 n
+0000383841 00000 n
+0000383906 00000 n
+0000383970 00000 n
+0000384035 00000 n
+0000384100 00000 n
+0000384165 00000 n
+0000384229 00000 n
+0000384294 00000 n
+0000384359 00000 n
+0000384424 00000 n
+0000384489 00000 n
+0000384554 00000 n
+0000384619 00000 n
+0000384684 00000 n
+0000384749 00000 n
+0000384813 00000 n
+0000384878 00000 n
+0000384943 00000 n
+0000385007 00000 n
+0000391084 00000 n
+0000387261 00000 n
+0000385248 00000 n
+0000387386 00000 n
+0000387450 00000 n
+0000387515 00000 n
+0000387580 00000 n
+0000387645 00000 n
+0000387710 00000 n
+0000387775 00000 n
+0000387840 00000 n
+0000387905 00000 n
+0000387970 00000 n
+0000388035 00000 n
+0000388100 00000 n
+0000388165 00000 n
+0000388230 00000 n
+0000388295 00000 n
+0000388359 00000 n
+0000388424 00000 n
+0000388489 00000 n
+0000388554 00000 n
+0000388619 00000 n
+0000388684 00000 n
+0000388749 00000 n
+0000388814 00000 n
+0000388879 00000 n
+0000388944 00000 n
+0000389008 00000 n
+0000389073 00000 n
+0000389138 00000 n
+0000389203 00000 n
+0000389268 00000 n
+0000389333 00000 n
+0000389398 00000 n
+0000389463 00000 n
+0000389528 00000 n
+0000389592 00000 n
+0000389657 00000 n
+0000389722 00000 n
+0000389787 00000 n
+0000389852 00000 n
+0000389917 00000 n
+0000389982 00000 n
+0000390047 00000 n
+0000390112 00000 n
+0000390177 00000 n
+0000390242 00000 n
+0000390307 00000 n
+0000390372 00000 n
+0000390437 00000 n
+0000390502 00000 n
+0000390567 00000 n
+0000390632 00000 n
+0000390696 00000 n
+0000390761 00000 n
+0000390826 00000 n
+0000390891 00000 n
+0000390956 00000 n
+0000391020 00000 n
+0000397008 00000 n
+0000393251 00000 n
+0000391248 00000 n
+0000393376 00000 n
+0000393440 00000 n
+0000393505 00000 n
+0000393570 00000 n
+0000393635 00000 n
+0000393700 00000 n
+0000393765 00000 n
+0000393829 00000 n
+0000393894 00000 n
+0000393958 00000 n
+0000394023 00000 n
+0000394088 00000 n
+0000394153 00000 n
+0000394218 00000 n
+0000394283 00000 n
+0000394348 00000 n
+0000394413 00000 n
+0000394478 00000 n
+0000394542 00000 n
+0000394607 00000 n
+0000394672 00000 n
+0000394737 00000 n
+0000394802 00000 n
+0000394867 00000 n
+0000394932 00000 n
+0000394997 00000 n
+0000395062 00000 n
+0000395127 00000 n
+0000395192 00000 n
+0000395257 00000 n
+0000395322 00000 n
+0000395387 00000 n
+0000395452 00000 n
+0000395517 00000 n
+0000395582 00000 n
+0000395647 00000 n
+0000395712 00000 n
+0000395776 00000 n
+0000395841 00000 n
+0000395906 00000 n
+0000395971 00000 n
+0000396036 00000 n
+0000396101 00000 n
+0000396166 00000 n
+0000396231 00000 n
+0000396296 00000 n
+0000396361 00000 n
+0000396426 00000 n
+0000396491 00000 n
+0000396556 00000 n
+0000396620 00000 n
+0000396685 00000 n
+0000396750 00000 n
+0000396815 00000 n
+0000396880 00000 n
+0000396944 00000 n
+0001892491 00000 n
+0000402341 00000 n
+0000400138 00000 n
+0000397172 00000 n
+0000400263 00000 n
+0000400327 00000 n
+0000400392 00000 n
+0000400457 00000 n
+0000400522 00000 n
+0000400587 00000 n
+0000400652 00000 n
+0000400717 00000 n
+0000400782 00000 n
+0000400847 00000 n
+0000400912 00000 n
+0000400977 00000 n
+0000401042 00000 n
+0000401107 00000 n
+0000401172 00000 n
+0000401237 00000 n
+0000401302 00000 n
+0000401366 00000 n
+0000401431 00000 n
+0000401496 00000 n
+0000401561 00000 n
+0000401626 00000 n
+0000401691 00000 n
+0000401756 00000 n
+0000401821 00000 n
+0000401886 00000 n
+0000401951 00000 n
+0000402016 00000 n
+0000402081 00000 n
+0000402146 00000 n
+0000402211 00000 n
+0000402276 00000 n
+0000407912 00000 n
+0000404934 00000 n
+0000402544 00000 n
+0000405059 00000 n
+0000405123 00000 n
+0000405188 00000 n
+0000405252 00000 n
+0000405317 00000 n
+0000405382 00000 n
+0000405447 00000 n
+0000405512 00000 n
+0000405577 00000 n
+0000405642 00000 n
+0000405707 00000 n
+0000405772 00000 n
+0000405836 00000 n
+0000405901 00000 n
+0000405966 00000 n
+0000406031 00000 n
+0000406096 00000 n
+0000406161 00000 n
+0000406226 00000 n
+0000406291 00000 n
+0000406355 00000 n
+0000406420 00000 n
+0000406485 00000 n
+0000406550 00000 n
+0000406615 00000 n
+0000406680 00000 n
+0000406745 00000 n
+0000406810 00000 n
+0000406875 00000 n
+0000406939 00000 n
+0000407004 00000 n
+0000407069 00000 n
+0000407134 00000 n
+0000407199 00000 n
+0000407264 00000 n
+0000407329 00000 n
+0000407394 00000 n
+0000407459 00000 n
+0000407524 00000 n
+0000407588 00000 n
+0000407653 00000 n
+0000407718 00000 n
+0000407783 00000 n
+0000407848 00000 n
+0000413272 00000 n
+0000410361 00000 n
+0000408076 00000 n
+0000410486 00000 n
+0000410550 00000 n
+0000410615 00000 n
+0000410680 00000 n
+0000410745 00000 n
+0000410809 00000 n
+0000410936 00000 n
+0000411001 00000 n
+0000411066 00000 n
+0000411131 00000 n
+0000411196 00000 n
+0000411261 00000 n
+0000411325 00000 n
+0000411390 00000 n
+0000411455 00000 n
+0000411520 00000 n
+0000411585 00000 n
+0000411650 00000 n
+0000411715 00000 n
+0000411780 00000 n
+0000411845 00000 n
+0000411910 00000 n
+0000411975 00000 n
+0000412040 00000 n
+0000412105 00000 n
+0000412170 00000 n
+0000412235 00000 n
+0000412300 00000 n
+0000412365 00000 n
+0000412430 00000 n
+0000412495 00000 n
+0000412560 00000 n
+0000412625 00000 n
+0000412690 00000 n
+0000412755 00000 n
+0000412820 00000 n
+0000412884 00000 n
+0000412949 00000 n
+0000413014 00000 n
+0000413079 00000 n
+0000413144 00000 n
+0000413208 00000 n
+0000419024 00000 n
+0000415463 00000 n
+0000413475 00000 n
+0000415588 00000 n
+0000415652 00000 n
+0000415717 00000 n
+0000415782 00000 n
+0000415847 00000 n
+0000415912 00000 n
+0000415977 00000 n
+0000416042 00000 n
+0000416105 00000 n
+0000416170 00000 n
+0000416235 00000 n
+0000416300 00000 n
+0000416365 00000 n
+0000416430 00000 n
+0000416495 00000 n
+0000416560 00000 n
+0000416625 00000 n
+0000416690 00000 n
+0000416755 00000 n
+0000416820 00000 n
+0000416885 00000 n
+0000416948 00000 n
+0000417013 00000 n
+0000417078 00000 n
+0000417143 00000 n
+0000417208 00000 n
+0000417273 00000 n
+0000417338 00000 n
+0000417402 00000 n
+0000417467 00000 n
+0000417532 00000 n
+0000417597 00000 n
+0000417662 00000 n
+0000417727 00000 n
+0000417792 00000 n
+0000417857 00000 n
+0000417922 00000 n
+0000417987 00000 n
+0000418052 00000 n
+0000418117 00000 n
+0000418182 00000 n
+0000418247 00000 n
+0000418312 00000 n
+0000418377 00000 n
+0000418442 00000 n
+0000418507 00000 n
+0000418572 00000 n
+0000418636 00000 n
+0000418701 00000 n
+0000418766 00000 n
+0000418831 00000 n
+0000418896 00000 n
+0000418960 00000 n
+0000424165 00000 n
+0000420733 00000 n
+0000419201 00000 n
+0000420858 00000 n
+0000420922 00000 n
+0000420987 00000 n
+0000421052 00000 n
+0000421117 00000 n
+0000421182 00000 n
+0000421247 00000 n
+0000421312 00000 n
+0000421377 00000 n
+0000421442 00000 n
+0000421507 00000 n
+0000421572 00000 n
+0000421637 00000 n
+0000421702 00000 n
+0000421767 00000 n
+0000421832 00000 n
+0000421897 00000 n
+0000421962 00000 n
+0000422027 00000 n
+0000422092 00000 n
+0000422157 00000 n
+0000422222 00000 n
+0000422287 00000 n
+0000422352 00000 n
+0000422417 00000 n
+0000422482 00000 n
+0000422545 00000 n
+0000422610 00000 n
+0000422675 00000 n
+0000422740 00000 n
+0000422805 00000 n
+0000422870 00000 n
+0000422935 00000 n
+0000423000 00000 n
+0000423065 00000 n
+0000423129 00000 n
+0000423194 00000 n
+0000423259 00000 n
+0000423324 00000 n
+0000423389 00000 n
+0000423454 00000 n
+0000423519 00000 n
+0000423584 00000 n
+0000423648 00000 n
+0000423713 00000 n
+0000423777 00000 n
+0000423842 00000 n
+0000423907 00000 n
+0000423972 00000 n
+0000424037 00000 n
+0000424101 00000 n
+0000429852 00000 n
+0000426613 00000 n
+0000424329 00000 n
+0000426738 00000 n
+0000426802 00000 n
+0000426867 00000 n
+0000426932 00000 n
+0000426997 00000 n
+0000427062 00000 n
+0000427127 00000 n
+0000427192 00000 n
+0000427257 00000 n
+0000427322 00000 n
+0000427386 00000 n
+0000427451 00000 n
+0000427516 00000 n
+0000427581 00000 n
+0000427646 00000 n
+0000427711 00000 n
+0000427776 00000 n
+0000427840 00000 n
+0000427905 00000 n
+0000427970 00000 n
+0000428035 00000 n
+0000428100 00000 n
+0000428165 00000 n
+0000428230 00000 n
+0000428295 00000 n
+0000428360 00000 n
+0000428425 00000 n
+0000428490 00000 n
+0000428554 00000 n
+0000428619 00000 n
+0000428684 00000 n
+0000428749 00000 n
+0000428814 00000 n
+0000428879 00000 n
+0000428944 00000 n
+0000429009 00000 n
+0000429074 00000 n
+0000429139 00000 n
+0000429204 00000 n
+0000429269 00000 n
+0000429334 00000 n
+0000429399 00000 n
+0000429464 00000 n
+0000429529 00000 n
+0000429594 00000 n
+0000429659 00000 n
+0000429724 00000 n
+0000429788 00000 n
+0000435523 00000 n
+0000432349 00000 n
+0000430029 00000 n
+0000432474 00000 n
+0000432538 00000 n
+0000432603 00000 n
+0000432668 00000 n
+0000432733 00000 n
+0000432798 00000 n
+0000432863 00000 n
+0000432928 00000 n
+0000432993 00000 n
+0000433058 00000 n
+0000433122 00000 n
+0000433187 00000 n
+0000433252 00000 n
+0000433317 00000 n
+0000433382 00000 n
+0000433447 00000 n
+0000433512 00000 n
+0000433577 00000 n
+0000433642 00000 n
+0000433706 00000 n
+0000433771 00000 n
+0000433836 00000 n
+0000433901 00000 n
+0000433966 00000 n
+0000434031 00000 n
+0000434096 00000 n
+0000434161 00000 n
+0000434226 00000 n
+0000434291 00000 n
+0000434356 00000 n
+0000434421 00000 n
+0000434485 00000 n
+0000434550 00000 n
+0000434615 00000 n
+0000434679 00000 n
+0000434744 00000 n
+0000434809 00000 n
+0000434874 00000 n
+0000434939 00000 n
+0000435004 00000 n
+0000435069 00000 n
+0000435133 00000 n
+0000435198 00000 n
+0000435263 00000 n
+0000435328 00000 n
+0000435393 00000 n
+0000435458 00000 n
+0000440998 00000 n
+0000438149 00000 n
+0000435713 00000 n
+0000438274 00000 n
+0000438338 00000 n
+0000438403 00000 n
+0000438468 00000 n
+0000438533 00000 n
+0000438598 00000 n
+0000438663 00000 n
+0000438728 00000 n
+0000438792 00000 n
+0000438857 00000 n
+0000438922 00000 n
+0000438987 00000 n
+0000439052 00000 n
+0000439117 00000 n
+0000439182 00000 n
+0000439246 00000 n
+0000439311 00000 n
+0000439376 00000 n
+0000439441 00000 n
+0000439506 00000 n
+0000439571 00000 n
+0000439636 00000 n
+0000439701 00000 n
+0000439766 00000 n
+0000439831 00000 n
+0000439895 00000 n
+0000439960 00000 n
+0000440025 00000 n
+0000440090 00000 n
+0000440155 00000 n
+0000440219 00000 n
+0000440284 00000 n
+0000440349 00000 n
+0000440414 00000 n
+0000440479 00000 n
+0000440544 00000 n
+0000440609 00000 n
+0000440674 00000 n
+0000440739 00000 n
+0000440804 00000 n
+0000440869 00000 n
+0000440934 00000 n
+0000446986 00000 n
+0000443812 00000 n
+0000441175 00000 n
+0000443937 00000 n
+0000444001 00000 n
+0000444066 00000 n
+0000444131 00000 n
+0000444196 00000 n
+0000444261 00000 n
+0000444326 00000 n
+0000444391 00000 n
+0000444455 00000 n
+0000444520 00000 n
+0000444585 00000 n
+0000444649 00000 n
+0000444714 00000 n
+0000444779 00000 n
+0000444844 00000 n
+0000444909 00000 n
+0000444974 00000 n
+0000445039 00000 n
+0000445104 00000 n
+0000445169 00000 n
+0000445234 00000 n
+0000445298 00000 n
+0000445363 00000 n
+0000445428 00000 n
+0000445493 00000 n
+0000445558 00000 n
+0000445623 00000 n
+0000445688 00000 n
+0000445753 00000 n
+0000445818 00000 n
+0000445883 00000 n
+0000445948 00000 n
+0000446013 00000 n
+0000446078 00000 n
+0000446143 00000 n
+0000446208 00000 n
+0000446273 00000 n
+0000446338 00000 n
+0000446403 00000 n
+0000446468 00000 n
+0000446533 00000 n
+0000446598 00000 n
+0000446663 00000 n
+0000446728 00000 n
+0000446793 00000 n
+0000446858 00000 n
+0000446922 00000 n
+0000453001 00000 n
+0000449697 00000 n
+0000447163 00000 n
+0000449822 00000 n
+0000449886 00000 n
+0000449951 00000 n
+0000450016 00000 n
+0000450081 00000 n
+0000450146 00000 n
+0000450211 00000 n
+0000450276 00000 n
+0000450341 00000 n
+0000450406 00000 n
+0000450470 00000 n
+0000450535 00000 n
+0000450600 00000 n
+0000450665 00000 n
+0000450730 00000 n
+0000450795 00000 n
+0000450860 00000 n
+0000450925 00000 n
+0000450990 00000 n
+0000451055 00000 n
+0000451120 00000 n
+0000451185 00000 n
+0000451249 00000 n
+0000451314 00000 n
+0000451379 00000 n
+0000451444 00000 n
+0000451509 00000 n
+0000451574 00000 n
+0000451639 00000 n
+0000451704 00000 n
+0000451769 00000 n
+0000451834 00000 n
+0000451899 00000 n
+0000451963 00000 n
+0000452028 00000 n
+0000452093 00000 n
+0000452158 00000 n
+0000452223 00000 n
+0000452288 00000 n
+0000452353 00000 n
+0000452418 00000 n
+0000452483 00000 n
+0000452548 00000 n
+0000452613 00000 n
+0000452678 00000 n
+0000452743 00000 n
+0000452808 00000 n
+0000452873 00000 n
+0000452937 00000 n
+0001892656 00000 n
+0000458966 00000 n
+0000455210 00000 n
+0000453178 00000 n
+0000455335 00000 n
+0000455399 00000 n
+0000455464 00000 n
+0000455528 00000 n
+0000455593 00000 n
+0000455658 00000 n
+0000455723 00000 n
+0000455788 00000 n
+0000455853 00000 n
+0000455918 00000 n
+0000455983 00000 n
+0000456048 00000 n
+0000456112 00000 n
+0000456177 00000 n
+0000456242 00000 n
+0000456307 00000 n
+0000456372 00000 n
+0000456437 00000 n
+0000456502 00000 n
+0000456567 00000 n
+0000456632 00000 n
+0000456696 00000 n
+0000456761 00000 n
+0000456826 00000 n
+0000456891 00000 n
+0000456956 00000 n
+0000457021 00000 n
+0000457086 00000 n
+0000457151 00000 n
+0000457216 00000 n
+0000457280 00000 n
+0000457345 00000 n
+0000457410 00000 n
+0000457475 00000 n
+0000457540 00000 n
+0000457605 00000 n
+0000457670 00000 n
+0000457735 00000 n
+0000457799 00000 n
+0000457864 00000 n
+0000457929 00000 n
+0000457994 00000 n
+0000458059 00000 n
+0000458124 00000 n
+0000458189 00000 n
+0000458254 00000 n
+0000458319 00000 n
+0000458384 00000 n
+0000458449 00000 n
+0000458514 00000 n
+0000458578 00000 n
+0000458643 00000 n
+0000458708 00000 n
+0000458773 00000 n
+0000458838 00000 n
+0000458902 00000 n
+0000464519 00000 n
+0000461735 00000 n
+0000459130 00000 n
+0000461860 00000 n
+0000461924 00000 n
+0000461989 00000 n
+0000462054 00000 n
+0000462119 00000 n
+0000462184 00000 n
+0000462249 00000 n
+0000462314 00000 n
+0000462379 00000 n
+0000462444 00000 n
+0000462508 00000 n
+0000462573 00000 n
+0000462638 00000 n
+0000462703 00000 n
+0000462768 00000 n
+0000462833 00000 n
+0000462898 00000 n
+0000462963 00000 n
+0000463028 00000 n
+0000463093 00000 n
+0000463156 00000 n
+0000463221 00000 n
+0000463286 00000 n
+0000463351 00000 n
+0000463416 00000 n
+0000463481 00000 n
+0000463546 00000 n
+0000463611 00000 n
+0000463676 00000 n
+0000463741 00000 n
+0000463806 00000 n
+0000463871 00000 n
+0000463936 00000 n
+0000464001 00000 n
+0000464066 00000 n
+0000464131 00000 n
+0000464196 00000 n
+0000464261 00000 n
+0000464326 00000 n
+0000464391 00000 n
+0000464455 00000 n
+0000470112 00000 n
+0000467783 00000 n
+0000464696 00000 n
+0000467908 00000 n
+0000467972 00000 n
+0000468037 00000 n
+0000468102 00000 n
+0000468167 00000 n
+0000468232 00000 n
+0000468296 00000 n
+0000468361 00000 n
+0000468426 00000 n
+0000468490 00000 n
+0000468555 00000 n
+0000468620 00000 n
+0000468685 00000 n
+0000468750 00000 n
+0000468815 00000 n
+0000468880 00000 n
+0000468945 00000 n
+0000469009 00000 n
+0000469074 00000 n
+0000469139 00000 n
+0000469203 00000 n
+0000469268 00000 n
+0000469333 00000 n
+0000469397 00000 n
+0000469462 00000 n
+0000469527 00000 n
+0000469592 00000 n
+0000469657 00000 n
+0000469722 00000 n
+0000469787 00000 n
+0000469852 00000 n
+0000469917 00000 n
+0000469982 00000 n
+0000470047 00000 n
+0000475880 00000 n
+0000472837 00000 n
+0000470315 00000 n
+0000472962 00000 n
+0000473026 00000 n
+0000473091 00000 n
+0000473156 00000 n
+0000473221 00000 n
+0000473286 00000 n
+0000473351 00000 n
+0000473416 00000 n
+0000473481 00000 n
+0000473546 00000 n
+0000473611 00000 n
+0000473676 00000 n
+0000473741 00000 n
+0000473806 00000 n
+0000473870 00000 n
+0000473935 00000 n
+0000474000 00000 n
+0000474065 00000 n
+0000474130 00000 n
+0000474195 00000 n
+0000474260 00000 n
+0000474325 00000 n
+0000474390 00000 n
+0000474454 00000 n
+0000474519 00000 n
+0000474584 00000 n
+0000474649 00000 n
+0000474714 00000 n
+0000474779 00000 n
+0000474844 00000 n
+0000474909 00000 n
+0000474973 00000 n
+0000475038 00000 n
+0000475103 00000 n
+0000475168 00000 n
+0000475233 00000 n
+0000475298 00000 n
+0000475363 00000 n
+0000475428 00000 n
+0000475492 00000 n
+0000475557 00000 n
+0000475622 00000 n
+0000475687 00000 n
+0000475752 00000 n
+0000475816 00000 n
+0000481762 00000 n
+0000478200 00000 n
+0000476057 00000 n
+0000478325 00000 n
+0000478389 00000 n
+0000478454 00000 n
+0000478519 00000 n
+0000478584 00000 n
+0000478649 00000 n
+0000478714 00000 n
+0000478779 00000 n
+0000478844 00000 n
+0000478909 00000 n
+0000478974 00000 n
+0000479039 00000 n
+0000479104 00000 n
+0000479169 00000 n
+0000479234 00000 n
+0000479299 00000 n
+0000479364 00000 n
+0000479429 00000 n
+0000479494 00000 n
+0000479558 00000 n
+0000479623 00000 n
+0000479688 00000 n
+0000479753 00000 n
+0000479818 00000 n
+0000479883 00000 n
+0000479948 00000 n
+0000480013 00000 n
+0000480078 00000 n
+0000480142 00000 n
+0000480207 00000 n
+0000480272 00000 n
+0000480337 00000 n
+0000480402 00000 n
+0000480467 00000 n
+0000480532 00000 n
+0000480597 00000 n
+0000480662 00000 n
+0000480727 00000 n
+0000480791 00000 n
+0000480856 00000 n
+0000480921 00000 n
+0000480986 00000 n
+0000481051 00000 n
+0000481116 00000 n
+0000481181 00000 n
+0000481246 00000 n
+0000481311 00000 n
+0000481375 00000 n
+0000481440 00000 n
+0000481505 00000 n
+0000481570 00000 n
+0000481635 00000 n
+0000481699 00000 n
+0000487591 00000 n
+0000483766 00000 n
+0000481939 00000 n
+0000483891 00000 n
+0000483955 00000 n
+0000484020 00000 n
+0000484085 00000 n
+0000484150 00000 n
+0000484215 00000 n
+0000484280 00000 n
+0000484345 00000 n
+0000484410 00000 n
+0000484475 00000 n
+0000484539 00000 n
+0000484604 00000 n
+0000484669 00000 n
+0000484734 00000 n
+0000484799 00000 n
+0000484864 00000 n
+0000484929 00000 n
+0000484994 00000 n
+0000485059 00000 n
+0000485123 00000 n
+0000485188 00000 n
+0000485253 00000 n
+0000485318 00000 n
+0000485383 00000 n
+0000485448 00000 n
+0000485513 00000 n
+0000485578 00000 n
+0000485643 00000 n
+0000485708 00000 n
+0000485773 00000 n
+0000485838 00000 n
+0000485903 00000 n
+0000485968 00000 n
+0000486033 00000 n
+0000486098 00000 n
+0000486163 00000 n
+0000486228 00000 n
+0000486293 00000 n
+0000486357 00000 n
+0000486422 00000 n
+0000486487 00000 n
+0000486552 00000 n
+0000486617 00000 n
+0000486682 00000 n
+0000486747 00000 n
+0000486812 00000 n
+0000486877 00000 n
+0000486942 00000 n
+0000487007 00000 n
+0000487071 00000 n
+0000487136 00000 n
+0000487201 00000 n
+0000487266 00000 n
+0000487331 00000 n
+0000487396 00000 n
+0000487461 00000 n
+0000487526 00000 n
+0000493499 00000 n
+0000489745 00000 n
+0000487755 00000 n
+0000489870 00000 n
+0000489934 00000 n
+0000489999 00000 n
+0000490064 00000 n
+0000490129 00000 n
+0000490194 00000 n
+0000490259 00000 n
+0000490324 00000 n
+0000490389 00000 n
+0000490454 00000 n
+0000490518 00000 n
+0000490583 00000 n
+0000490648 00000 n
+0000490713 00000 n
+0000490778 00000 n
+0000490843 00000 n
+0000490908 00000 n
+0000490973 00000 n
+0000491038 00000 n
+0000491102 00000 n
+0000491167 00000 n
+0000491232 00000 n
+0000491296 00000 n
+0000491361 00000 n
+0000491426 00000 n
+0000491491 00000 n
+0000491556 00000 n
+0000491621 00000 n
+0000491686 00000 n
+0000491751 00000 n
+0000491816 00000 n
+0000491879 00000 n
+0000491944 00000 n
+0000492009 00000 n
+0000492074 00000 n
+0000492139 00000 n
+0000492204 00000 n
+0000492269 00000 n
+0000492334 00000 n
+0000492399 00000 n
+0000492463 00000 n
+0000492528 00000 n
+0000492593 00000 n
+0000492658 00000 n
+0000492723 00000 n
+0000492788 00000 n
+0000492853 00000 n
+0000492918 00000 n
+0000492983 00000 n
+0000493047 00000 n
+0000493112 00000 n
+0000493177 00000 n
+0000493242 00000 n
+0000493307 00000 n
+0000493371 00000 n
+0000493435 00000 n
+0000499194 00000 n
+0000495827 00000 n
+0000493663 00000 n
+0000495952 00000 n
+0000496016 00000 n
+0000496081 00000 n
+0000496146 00000 n
+0000496211 00000 n
+0000496276 00000 n
+0000496341 00000 n
+0000496406 00000 n
+0000496471 00000 n
+0000496536 00000 n
+0000496600 00000 n
+0000496665 00000 n
+0000496730 00000 n
+0000496795 00000 n
+0000496860 00000 n
+0000496925 00000 n
+0000496990 00000 n
+0000497055 00000 n
+0000497120 00000 n
+0000497184 00000 n
+0000497249 00000 n
+0000497314 00000 n
+0000497379 00000 n
+0000497444 00000 n
+0000497509 00000 n
+0000497574 00000 n
+0000497638 00000 n
+0000497703 00000 n
+0000497768 00000 n
+0000497833 00000 n
+0000497898 00000 n
+0000497963 00000 n
+0000498028 00000 n
+0000498093 00000 n
+0000498158 00000 n
+0000498223 00000 n
+0000498288 00000 n
+0000498353 00000 n
+0000498417 00000 n
+0000498482 00000 n
+0000498547 00000 n
+0000498612 00000 n
+0000498677 00000 n
+0000498742 00000 n
+0000498807 00000 n
+0000498872 00000 n
+0000498936 00000 n
+0000499001 00000 n
+0000499066 00000 n
+0000499130 00000 n
+0000504980 00000 n
+0000501613 00000 n
+0000499358 00000 n
+0000501738 00000 n
+0000501802 00000 n
+0000501867 00000 n
+0000501932 00000 n
+0000501997 00000 n
+0000502062 00000 n
+0000502126 00000 n
+0000502190 00000 n
+0000502255 00000 n
+0000502320 00000 n
+0000502385 00000 n
+0000502450 00000 n
+0000502515 00000 n
+0000502580 00000 n
+0000502645 00000 n
+0000502710 00000 n
+0000502774 00000 n
+0000502839 00000 n
+0000502904 00000 n
+0000502969 00000 n
+0000503034 00000 n
+0000503099 00000 n
+0000503164 00000 n
+0000503229 00000 n
+0000503294 00000 n
+0000503359 00000 n
+0000503424 00000 n
+0000503489 00000 n
+0000503554 00000 n
+0000503618 00000 n
+0000503683 00000 n
+0000503748 00000 n
+0000503813 00000 n
+0000503878 00000 n
+0000503943 00000 n
+0000504008 00000 n
+0000504073 00000 n
+0000504138 00000 n
+0000504203 00000 n
+0000504268 00000 n
+0000504333 00000 n
+0000504398 00000 n
+0000504463 00000 n
+0000504528 00000 n
+0000504592 00000 n
+0000504657 00000 n
+0000504722 00000 n
+0000504787 00000 n
+0000504852 00000 n
+0000504916 00000 n
+0000509796 00000 n
+0000506884 00000 n
+0000505144 00000 n
+0000507009 00000 n
+0000507073 00000 n
+0000507138 00000 n
+0000507202 00000 n
+0000507267 00000 n
+0000507332 00000 n
+0000507396 00000 n
+0000507461 00000 n
+0000507526 00000 n
+0000507591 00000 n
+0000507656 00000 n
+0000507721 00000 n
+0000507786 00000 n
+0000507851 00000 n
+0000507916 00000 n
+0000507980 00000 n
+0000508045 00000 n
+0000508110 00000 n
+0000508175 00000 n
+0000508240 00000 n
+0000508305 00000 n
+0000508370 00000 n
+0000508435 00000 n
+0000508500 00000 n
+0000508565 00000 n
+0000508630 00000 n
+0000508695 00000 n
+0000508760 00000 n
+0000508825 00000 n
+0000508890 00000 n
+0000508955 00000 n
+0000509020 00000 n
+0000509085 00000 n
+0000509150 00000 n
+0000509214 00000 n
+0000509279 00000 n
+0000509344 00000 n
+0000509409 00000 n
+0000509474 00000 n
+0000509539 00000 n
+0000509604 00000 n
+0000509669 00000 n
+0001892821 00000 n
+0000515558 00000 n
+0000511801 00000 n
+0000509960 00000 n
+0000511926 00000 n
+0000511990 00000 n
+0000512055 00000 n
+0000512120 00000 n
+0000512185 00000 n
+0000512250 00000 n
+0000512315 00000 n
+0000512378 00000 n
+0000512443 00000 n
+0000512508 00000 n
+0000512573 00000 n
+0000512638 00000 n
+0000512703 00000 n
+0000512768 00000 n
+0000512833 00000 n
+0000512898 00000 n
+0000512963 00000 n
+0000513028 00000 n
+0000513093 00000 n
+0000513158 00000 n
+0000513223 00000 n
+0000513288 00000 n
+0000513352 00000 n
+0000513417 00000 n
+0000513482 00000 n
+0000513547 00000 n
+0000513612 00000 n
+0000513677 00000 n
+0000513742 00000 n
+0000513807 00000 n
+0000513872 00000 n
+0000513937 00000 n
+0000514001 00000 n
+0000514066 00000 n
+0000514131 00000 n
+0000514196 00000 n
+0000514261 00000 n
+0000514326 00000 n
+0000514391 00000 n
+0000514456 00000 n
+0000514521 00000 n
+0000514586 00000 n
+0000514650 00000 n
+0000514715 00000 n
+0000514780 00000 n
+0000514845 00000 n
+0000514910 00000 n
+0000514975 00000 n
+0000515040 00000 n
+0000515105 00000 n
+0000515170 00000 n
+0000515234 00000 n
+0000515299 00000 n
+0000515364 00000 n
+0000515429 00000 n
+0000515494 00000 n
+0000521463 00000 n
+0000517710 00000 n
+0000515748 00000 n
+0000517835 00000 n
+0000517899 00000 n
+0000517964 00000 n
+0000518091 00000 n
+0000518156 00000 n
+0000518221 00000 n
+0000518286 00000 n
+0000518351 00000 n
+0000518416 00000 n
+0000518481 00000 n
+0000518546 00000 n
+0000518610 00000 n
+0000518675 00000 n
+0000518740 00000 n
+0000518805 00000 n
+0000518870 00000 n
+0000518935 00000 n
+0000519000 00000 n
+0000519065 00000 n
+0000519130 00000 n
+0000519194 00000 n
+0000519259 00000 n
+0000519324 00000 n
+0000519389 00000 n
+0000519454 00000 n
+0000519519 00000 n
+0000519584 00000 n
+0000519649 00000 n
+0000519714 00000 n
+0000519778 00000 n
+0000519843 00000 n
+0000519908 00000 n
+0000519973 00000 n
+0000520038 00000 n
+0000520103 00000 n
+0000520168 00000 n
+0000520233 00000 n
+0000520298 00000 n
+0000520362 00000 n
+0000520427 00000 n
+0000520492 00000 n
+0000520557 00000 n
+0000520622 00000 n
+0000520687 00000 n
+0000520752 00000 n
+0000520817 00000 n
+0000520881 00000 n
+0000520946 00000 n
+0000521011 00000 n
+0000521075 00000 n
+0000521140 00000 n
+0000521205 00000 n
+0000521270 00000 n
+0000521335 00000 n
+0000521399 00000 n
+0000526918 00000 n
+0000523747 00000 n
+0000521666 00000 n
+0000523872 00000 n
+0000523936 00000 n
+0000524001 00000 n
+0000524066 00000 n
+0000524131 00000 n
+0000524196 00000 n
+0000524261 00000 n
+0000524326 00000 n
+0000524391 00000 n
+0000524456 00000 n
+0000524521 00000 n
+0000524586 00000 n
+0000524651 00000 n
+0000524716 00000 n
+0000524781 00000 n
+0000524846 00000 n
+0000524911 00000 n
+0000525038 00000 n
+0000525103 00000 n
+0000525168 00000 n
+0000525233 00000 n
+0000525297 00000 n
+0000525362 00000 n
+0000525427 00000 n
+0000525492 00000 n
+0000525557 00000 n
+0000525622 00000 n
+0000525687 00000 n
+0000525752 00000 n
+0000525817 00000 n
+0000525881 00000 n
+0000525946 00000 n
+0000526011 00000 n
+0000526076 00000 n
+0000526141 00000 n
+0000526206 00000 n
+0000526271 00000 n
+0000526336 00000 n
+0000526401 00000 n
+0000526464 00000 n
+0000526529 00000 n
+0000526594 00000 n
+0000526659 00000 n
+0000526724 00000 n
+0000526789 00000 n
+0000526854 00000 n
+0000532639 00000 n
+0000529662 00000 n
+0000527121 00000 n
+0000529787 00000 n
+0000529851 00000 n
+0000529916 00000 n
+0000529981 00000 n
+0000530045 00000 n
+0000530110 00000 n
+0000530174 00000 n
+0000530239 00000 n
+0000530304 00000 n
+0000530369 00000 n
+0000530434 00000 n
+0000530499 00000 n
+0000530564 00000 n
+0000530629 00000 n
+0000530694 00000 n
+0000530759 00000 n
+0000530823 00000 n
+0000530888 00000 n
+0000530953 00000 n
+0000531018 00000 n
+0000531083 00000 n
+0000531148 00000 n
+0000531213 00000 n
+0000531277 00000 n
+0000531342 00000 n
+0000531407 00000 n
+0000531472 00000 n
+0000531537 00000 n
+0000531602 00000 n
+0000531667 00000 n
+0000531732 00000 n
+0000531797 00000 n
+0000531861 00000 n
+0000531926 00000 n
+0000531991 00000 n
+0000532056 00000 n
+0000532121 00000 n
+0000532186 00000 n
+0000532251 00000 n
+0000532316 00000 n
+0000532381 00000 n
+0000532446 00000 n
+0000532511 00000 n
+0000532575 00000 n
+0000535592 00000 n
+0000538798 00000 n
+0000535419 00000 n
+0000532803 00000 n
+0000535750 00000 n
+0000535814 00000 n
+0000535879 00000 n
+0000535944 00000 n
+0000536009 00000 n
+0000536074 00000 n
+0000536139 00000 n
+0000536204 00000 n
+0000536269 00000 n
+0000536334 00000 n
+0000536398 00000 n
+0000536463 00000 n
+0000536528 00000 n
+0000536593 00000 n
+0000536658 00000 n
+0000536723 00000 n
+0000536788 00000 n
+0000536853 00000 n
+0000536918 00000 n
+0000536982 00000 n
+0000537047 00000 n
+0000537112 00000 n
+0000537177 00000 n
+0000537242 00000 n
+0000537307 00000 n
+0000537372 00000 n
+0000537437 00000 n
+0000537502 00000 n
+0001889924 00000 n
+0000537567 00000 n
+0000537630 00000 n
+0000537695 00000 n
+0000537760 00000 n
+0000537825 00000 n
+0000537890 00000 n
+0000537955 00000 n
+0000538020 00000 n
+0000538085 00000 n
+0000538150 00000 n
+0000538215 00000 n
+0000538279 00000 n
+0000538344 00000 n
+0000538409 00000 n
+0000538474 00000 n
+0000538539 00000 n
+0000538604 00000 n
+0000538669 00000 n
+0000538734 00000 n
+0000535561 00000 n
+0000544128 00000 n
+0000541666 00000 n
+0000539041 00000 n
+0000541791 00000 n
+0000541855 00000 n
+0000541920 00000 n
+0000541985 00000 n
+0000542050 00000 n
+0000542115 00000 n
+0000542180 00000 n
+0000542245 00000 n
+0000542310 00000 n
+0000542375 00000 n
+0000542440 00000 n
+0000542505 00000 n
+0000542570 00000 n
+0000542635 00000 n
+0000542700 00000 n
+0000542765 00000 n
+0000542830 00000 n
+0000542895 00000 n
+0000542960 00000 n
+0000543025 00000 n
+0000543089 00000 n
+0000543154 00000 n
+0000543219 00000 n
+0000543284 00000 n
+0000543349 00000 n
+0000543414 00000 n
+0000543479 00000 n
+0000543544 00000 n
+0000543609 00000 n
+0000543673 00000 n
+0000543738 00000 n
+0000543803 00000 n
+0000543868 00000 n
+0000543933 00000 n
+0000543998 00000 n
+0000544063 00000 n
+0000547626 00000 n
+0000549988 00000 n
+0000547453 00000 n
+0000544318 00000 n
+0000547783 00000 n
+0000547847 00000 n
+0000547912 00000 n
+0000547977 00000 n
+0000548042 00000 n
+0000548107 00000 n
+0000548172 00000 n
+0000548237 00000 n
+0000548300 00000 n
+0000548365 00000 n
+0000548430 00000 n
+0000548495 00000 n
+0000548560 00000 n
+0000548625 00000 n
+0000548690 00000 n
+0000548755 00000 n
+0000548820 00000 n
+0000548885 00000 n
+0000548950 00000 n
+0000549015 00000 n
+0000549080 00000 n
+0000549145 00000 n
+0000549210 00000 n
+0000549275 00000 n
+0000549340 00000 n
+0000549405 00000 n
+0000549470 00000 n
+0000549535 00000 n
+0000549600 00000 n
+0000549665 00000 n
+0000549730 00000 n
+0000549795 00000 n
+0000549859 00000 n
+0000549924 00000 n
+0000547595 00000 n
+0000555700 00000 n
+0000552334 00000 n
+0000550243 00000 n
+0000552459 00000 n
+0000552523 00000 n
+0000552588 00000 n
+0000552653 00000 n
+0000552718 00000 n
+0000552783 00000 n
+0000552848 00000 n
+0000552913 00000 n
+0000552978 00000 n
+0000553043 00000 n
+0000553108 00000 n
+0000553172 00000 n
+0000553237 00000 n
+0000553302 00000 n
+0000553367 00000 n
+0000553432 00000 n
+0000553497 00000 n
+0000553562 00000 n
+0000553627 00000 n
+0000553692 00000 n
+0000553756 00000 n
+0000553821 00000 n
+0000553886 00000 n
+0000553951 00000 n
+0000554016 00000 n
+0000554080 00000 n
+0000554145 00000 n
+0000554210 00000 n
+0000554275 00000 n
+0000554340 00000 n
+0000554405 00000 n
+0000554469 00000 n
+0000554534 00000 n
+0000554599 00000 n
+0000554664 00000 n
+0000554729 00000 n
+0000554794 00000 n
+0000554859 00000 n
+0000554924 00000 n
+0000554989 00000 n
+0000555053 00000 n
+0000555118 00000 n
+0000555182 00000 n
+0000555247 00000 n
+0000555312 00000 n
+0000555377 00000 n
+0000555442 00000 n
+0000555507 00000 n
+0000555572 00000 n
+0000555636 00000 n
+0000561667 00000 n
+0000557915 00000 n
+0000555890 00000 n
+0000558040 00000 n
+0000558104 00000 n
+0000558169 00000 n
+0000558234 00000 n
+0000558299 00000 n
+0000558364 00000 n
+0000558429 00000 n
+0000558494 00000 n
+0000558559 00000 n
+0000558624 00000 n
+0000558688 00000 n
+0000558753 00000 n
+0000558818 00000 n
+0000558883 00000 n
+0000558948 00000 n
+0000559013 00000 n
+0000559078 00000 n
+0000559142 00000 n
+0000559207 00000 n
+0000559272 00000 n
+0000559337 00000 n
+0000559402 00000 n
+0000559467 00000 n
+0000559532 00000 n
+0000559597 00000 n
+0000559662 00000 n
+0000559726 00000 n
+0000559791 00000 n
+0000559856 00000 n
+0000559921 00000 n
+0000559986 00000 n
+0000560051 00000 n
+0000560116 00000 n
+0000560181 00000 n
+0000560246 00000 n
+0000560310 00000 n
+0000560375 00000 n
+0000560440 00000 n
+0000560505 00000 n
+0000560570 00000 n
+0000560635 00000 n
+0000560700 00000 n
+0000560765 00000 n
+0000560830 00000 n
+0000560894 00000 n
+0000560959 00000 n
+0000561024 00000 n
+0000561089 00000 n
+0000561154 00000 n
+0000561219 00000 n
+0000561284 00000 n
+0000561349 00000 n
+0000561414 00000 n
+0000561477 00000 n
+0000561542 00000 n
+0000567678 00000 n
+0000565935 00000 n
+0000561831 00000 n
+0000566060 00000 n
+0000566124 00000 n
+0000566189 00000 n
+0000566254 00000 n
+0000566319 00000 n
+0000566382 00000 n
+0000566447 00000 n
+0000566512 00000 n
+0000566577 00000 n
+0000566642 00000 n
+0000566707 00000 n
+0000566772 00000 n
+0000566836 00000 n
+0000566901 00000 n
+0000566966 00000 n
+0000567031 00000 n
+0000567096 00000 n
+0000567161 00000 n
+0000567226 00000 n
+0000567290 00000 n
+0000567355 00000 n
+0000567420 00000 n
+0000567485 00000 n
+0000567550 00000 n
+0000567614 00000 n
+0001892986 00000 n
+0000573464 00000 n
+0000569968 00000 n
+0000567921 00000 n
+0000570093 00000 n
+0000570157 00000 n
+0000570222 00000 n
+0000570287 00000 n
+0000570352 00000 n
+0000570417 00000 n
+0000570482 00000 n
+0000570547 00000 n
+0000570612 00000 n
+0000570677 00000 n
+0000570741 00000 n
+0000570806 00000 n
+0000570871 00000 n
+0000570936 00000 n
+0000571001 00000 n
+0000571066 00000 n
+0000571131 00000 n
+0000571196 00000 n
+0000571261 00000 n
+0000571326 00000 n
+0000571391 00000 n
+0000571456 00000 n
+0000571519 00000 n
+0000571584 00000 n
+0000571649 00000 n
+0000571714 00000 n
+0000571779 00000 n
+0000571844 00000 n
+0000571909 00000 n
+0000571974 00000 n
+0000572039 00000 n
+0000572103 00000 n
+0000572168 00000 n
+0000572233 00000 n
+0000572298 00000 n
+0000572363 00000 n
+0000572428 00000 n
+0000572493 00000 n
+0000572558 00000 n
+0000572623 00000 n
+0000572687 00000 n
+0000572752 00000 n
+0000572817 00000 n
+0000572881 00000 n
+0000572946 00000 n
+0000573011 00000 n
+0000573076 00000 n
+0000573141 00000 n
+0000573206 00000 n
+0000573271 00000 n
+0000573336 00000 n
+0000573401 00000 n
+0000579293 00000 n
+0000575148 00000 n
+0000573641 00000 n
+0000575273 00000 n
+0000575337 00000 n
+0000575402 00000 n
+0000575466 00000 n
+0000575531 00000 n
+0000575596 00000 n
+0000575661 00000 n
+0000575726 00000 n
+0000575791 00000 n
+0000575856 00000 n
+0000575921 00000 n
+0000575986 00000 n
+0000576050 00000 n
+0000576115 00000 n
+0000576180 00000 n
+0000576245 00000 n
+0000576310 00000 n
+0000576375 00000 n
+0000576440 00000 n
+0000576505 00000 n
+0000576570 00000 n
+0000576634 00000 n
+0000576699 00000 n
+0000576764 00000 n
+0000576829 00000 n
+0000576894 00000 n
+0000576959 00000 n
+0000577024 00000 n
+0000577089 00000 n
+0000577154 00000 n
+0000577218 00000 n
+0000577283 00000 n
+0000577348 00000 n
+0000577413 00000 n
+0000577478 00000 n
+0000577543 00000 n
+0000577608 00000 n
+0000577673 00000 n
+0000577738 00000 n
+0000577803 00000 n
+0000577867 00000 n
+0000577932 00000 n
+0000577997 00000 n
+0000578062 00000 n
+0000578127 00000 n
+0000578192 00000 n
+0000578257 00000 n
+0000578322 00000 n
+0000578387 00000 n
+0000578451 00000 n
+0000578516 00000 n
+0000578581 00000 n
+0000578646 00000 n
+0000578711 00000 n
+0000578776 00000 n
+0000578841 00000 n
+0000578906 00000 n
+0000578971 00000 n
+0000579035 00000 n
+0000579100 00000 n
+0000579165 00000 n
+0000579229 00000 n
+0000585134 00000 n
+0000582482 00000 n
+0000579457 00000 n
+0000582607 00000 n
+0000582671 00000 n
+0000582736 00000 n
+0000582801 00000 n
+0000582866 00000 n
+0000582931 00000 n
+0000582996 00000 n
+0000583061 00000 n
+0000583126 00000 n
+0000583191 00000 n
+0000583256 00000 n
+0000583321 00000 n
+0000583386 00000 n
+0000583451 00000 n
+0000583516 00000 n
+0000583580 00000 n
+0000583645 00000 n
+0000583710 00000 n
+0000583775 00000 n
+0000583840 00000 n
+0000583905 00000 n
+0000583970 00000 n
+0000584035 00000 n
+0000584100 00000 n
+0000584165 00000 n
+0000584230 00000 n
+0000584294 00000 n
+0000584359 00000 n
+0000584424 00000 n
+0000584489 00000 n
+0000584554 00000 n
+0000584619 00000 n
+0000584684 00000 n
+0000584748 00000 n
+0000584811 00000 n
+0000584876 00000 n
+0000584941 00000 n
+0000585006 00000 n
+0000585070 00000 n
+0000591024 00000 n
+0000586813 00000 n
+0000585324 00000 n
+0000586938 00000 n
+0000587002 00000 n
+0000587067 00000 n
+0000587132 00000 n
+0000587197 00000 n
+0000587262 00000 n
+0000587327 00000 n
+0000587392 00000 n
+0000587457 00000 n
+0000587522 00000 n
+0000587586 00000 n
+0000587651 00000 n
+0000587716 00000 n
+0000587781 00000 n
+0000587846 00000 n
+0000587911 00000 n
+0000587976 00000 n
+0000588041 00000 n
+0000588106 00000 n
+0000588171 00000 n
+0000588236 00000 n
+0000588301 00000 n
+0000588366 00000 n
+0000588431 00000 n
+0000588496 00000 n
+0000588561 00000 n
+0000588625 00000 n
+0000588690 00000 n
+0000588755 00000 n
+0000588820 00000 n
+0000588885 00000 n
+0000588950 00000 n
+0000589015 00000 n
+0000589080 00000 n
+0000589145 00000 n
+0000589209 00000 n
+0000589274 00000 n
+0000589339 00000 n
+0000589404 00000 n
+0000589469 00000 n
+0000589534 00000 n
+0000589599 00000 n
+0000589664 00000 n
+0000589729 00000 n
+0000589793 00000 n
+0000589858 00000 n
+0000589923 00000 n
+0000589988 00000 n
+0000590053 00000 n
+0000590118 00000 n
+0000590183 00000 n
+0000590248 00000 n
+0000590313 00000 n
+0000590378 00000 n
+0000590442 00000 n
+0000590507 00000 n
+0000590572 00000 n
+0000590637 00000 n
+0000590702 00000 n
+0000590767 00000 n
+0000590832 00000 n
+0000590897 00000 n
+0000590961 00000 n
+0000596864 00000 n
+0000593373 00000 n
+0000591175 00000 n
+0000593498 00000 n
+0000593562 00000 n
+0000593627 00000 n
+0000593692 00000 n
+0000593757 00000 n
+0000593822 00000 n
+0000593886 00000 n
+0000593951 00000 n
+0000594016 00000 n
+0000594081 00000 n
+0000594146 00000 n
+0000594211 00000 n
+0000594276 00000 n
+0000594341 00000 n
+0000594404 00000 n
+0000594469 00000 n
+0000594534 00000 n
+0000594599 00000 n
+0000594664 00000 n
+0000594729 00000 n
+0000594794 00000 n
+0000594859 00000 n
+0000594924 00000 n
+0000594988 00000 n
+0000595053 00000 n
+0000595118 00000 n
+0000595183 00000 n
+0000595248 00000 n
+0000595312 00000 n
+0000595377 00000 n
+0000595442 00000 n
+0000595507 00000 n
+0000595572 00000 n
+0000595637 00000 n
+0000595702 00000 n
+0000595767 00000 n
+0000595831 00000 n
+0000595896 00000 n
+0000595961 00000 n
+0000596026 00000 n
+0000596091 00000 n
+0000596152 00000 n
+0000596217 00000 n
+0000596282 00000 n
+0000596347 00000 n
+0000596412 00000 n
+0000596476 00000 n
+0000596541 00000 n
+0000596606 00000 n
+0000596671 00000 n
+0000596736 00000 n
+0000596800 00000 n
+0000601768 00000 n
+0000599116 00000 n
+0000597028 00000 n
+0000599241 00000 n
+0000599305 00000 n
+0000599370 00000 n
+0000599435 00000 n
+0000599500 00000 n
+0000599564 00000 n
+0000599629 00000 n
+0000599694 00000 n
+0000599759 00000 n
+0000599824 00000 n
+0000599889 00000 n
+0000599954 00000 n
+0000600019 00000 n
+0000600084 00000 n
+0000600147 00000 n
+0000600212 00000 n
+0000600277 00000 n
+0000600342 00000 n
+0000600407 00000 n
+0000600472 00000 n
+0000600537 00000 n
+0000600602 00000 n
+0000600667 00000 n
+0000600732 00000 n
+0000600797 00000 n
+0000600862 00000 n
+0000600926 00000 n
+0000600991 00000 n
+0000601056 00000 n
+0000601121 00000 n
+0000601186 00000 n
+0000601251 00000 n
+0000601316 00000 n
+0000601380 00000 n
+0000601445 00000 n
+0000601510 00000 n
+0000601575 00000 n
+0000601640 00000 n
+0000601704 00000 n
+0000607082 00000 n
+0000603975 00000 n
+0000601945 00000 n
+0000604100 00000 n
+0000604164 00000 n
+0000604229 00000 n
+0000604294 00000 n
+0000604359 00000 n
+0000604424 00000 n
+0000604488 00000 n
+0000604553 00000 n
+0000604618 00000 n
+0000604683 00000 n
+0000604747 00000 n
+0000604812 00000 n
+0000604877 00000 n
+0000604942 00000 n
+0000605007 00000 n
+0000605072 00000 n
+0000605137 00000 n
+0000605202 00000 n
+0000605267 00000 n
+0000605332 00000 n
+0000605397 00000 n
+0000605462 00000 n
+0000605527 00000 n
+0000605591 00000 n
+0000605656 00000 n
+0000605721 00000 n
+0000605786 00000 n
+0000605851 00000 n
+0000605916 00000 n
+0000605981 00000 n
+0000606046 00000 n
+0000606111 00000 n
+0000606175 00000 n
+0000606240 00000 n
+0000606305 00000 n
+0000606370 00000 n
+0000606435 00000 n
+0000606500 00000 n
+0000606565 00000 n
+0000606630 00000 n
+0000606695 00000 n
+0000606759 00000 n
+0000606824 00000 n
+0000606889 00000 n
+0000606954 00000 n
+0000607018 00000 n
+0000613158 00000 n
+0000609208 00000 n
+0000607259 00000 n
+0000609333 00000 n
+0000609397 00000 n
+0000609462 00000 n
+0000609527 00000 n
+0000609592 00000 n
+0000609657 00000 n
+0000609722 00000 n
+0000609787 00000 n
+0000609852 00000 n
+0000609917 00000 n
+0000609981 00000 n
+0000610046 00000 n
+0000610111 00000 n
+0000610176 00000 n
+0000610241 00000 n
+0000610306 00000 n
+0000610371 00000 n
+0000610436 00000 n
+0000610501 00000 n
+0000610565 00000 n
+0000610630 00000 n
+0000610695 00000 n
+0000610760 00000 n
+0000610825 00000 n
+0000610890 00000 n
+0000610955 00000 n
+0000611020 00000 n
+0000611085 00000 n
+0000611150 00000 n
+0000611215 00000 n
+0000611280 00000 n
+0000611345 00000 n
+0000611409 00000 n
+0000611474 00000 n
+0000611539 00000 n
+0000611604 00000 n
+0000611669 00000 n
+0000611734 00000 n
+0000611799 00000 n
+0000611864 00000 n
+0000611929 00000 n
+0000611992 00000 n
+0000612057 00000 n
+0000612122 00000 n
+0000612187 00000 n
+0000612252 00000 n
+0000612317 00000 n
+0000612382 00000 n
+0000612447 00000 n
+0000612512 00000 n
+0000612577 00000 n
+0000612641 00000 n
+0000612706 00000 n
+0000612770 00000 n
+0000612835 00000 n
+0000612900 00000 n
+0000612965 00000 n
+0000613030 00000 n
+0000613094 00000 n
+0000617966 00000 n
+0000615117 00000 n
+0000613309 00000 n
+0000615242 00000 n
+0000615306 00000 n
+0000615371 00000 n
+0000615436 00000 n
+0000615501 00000 n
+0000615566 00000 n
+0000615631 00000 n
+0000615696 00000 n
+0000615761 00000 n
+0000615826 00000 n
+0000615891 00000 n
+0000615956 00000 n
+0000616021 00000 n
+0000616086 00000 n
+0000616151 00000 n
+0000616216 00000 n
+0000616281 00000 n
+0000616346 00000 n
+0000616410 00000 n
+0000616475 00000 n
+0000616540 00000 n
+0000616605 00000 n
+0000616670 00000 n
+0000616735 00000 n
+0000616800 00000 n
+0000616865 00000 n
+0000616930 00000 n
+0000616994 00000 n
+0000617059 00000 n
+0000617124 00000 n
+0000617189 00000 n
+0000617254 00000 n
+0000617319 00000 n
+0000617384 00000 n
+0000617449 00000 n
+0000617514 00000 n
+0000617578 00000 n
+0000617643 00000 n
+0000617708 00000 n
+0000617773 00000 n
+0000617838 00000 n
+0000617902 00000 n
+0000623585 00000 n
+0000620413 00000 n
+0000618169 00000 n
+0000620538 00000 n
+0000620602 00000 n
+0000620667 00000 n
+0000620731 00000 n
+0000620796 00000 n
+0000620861 00000 n
+0000620926 00000 n
+0000620991 00000 n
+0000621056 00000 n
+0000621121 00000 n
+0000621186 00000 n
+0000621251 00000 n
+0000621315 00000 n
+0000621380 00000 n
+0000621445 00000 n
+0000621509 00000 n
+0000621574 00000 n
+0000621639 00000 n
+0000621704 00000 n
+0000621769 00000 n
+0000621834 00000 n
+0000621899 00000 n
+0000621964 00000 n
+0000622029 00000 n
+0000622094 00000 n
+0000622159 00000 n
+0000622224 00000 n
+0000622289 00000 n
+0000622354 00000 n
+0000622419 00000 n
+0000622484 00000 n
+0000622547 00000 n
+0000622612 00000 n
+0000622677 00000 n
+0000622742 00000 n
+0000622807 00000 n
+0000622872 00000 n
+0000622937 00000 n
+0000623002 00000 n
+0000623067 00000 n
+0000623132 00000 n
+0000623197 00000 n
+0000623262 00000 n
+0000623327 00000 n
+0000623392 00000 n
+0000623457 00000 n
+0000623521 00000 n
+0001893151 00000 n
+0000628590 00000 n
+0000625870 00000 n
+0000623762 00000 n
+0000625995 00000 n
+0000626059 00000 n
+0000626124 00000 n
+0000626189 00000 n
+0000626254 00000 n
+0000626319 00000 n
+0000626384 00000 n
+0000626449 00000 n
+0000626514 00000 n
+0000626579 00000 n
+0000626644 00000 n
+0000626709 00000 n
+0000626774 00000 n
+0000626838 00000 n
+0000626903 00000 n
+0000626968 00000 n
+0000627033 00000 n
+0000627098 00000 n
+0000627163 00000 n
+0000627228 00000 n
+0000627293 00000 n
+0000627358 00000 n
+0000627423 00000 n
+0000627488 00000 n
+0000627553 00000 n
+0000627618 00000 n
+0000627683 00000 n
+0000627748 00000 n
+0000627813 00000 n
+0000627878 00000 n
+0000627943 00000 n
+0000628008 00000 n
+0000628073 00000 n
+0000628138 00000 n
+0000628202 00000 n
+0000628267 00000 n
+0000628332 00000 n
+0000628397 00000 n
+0000628462 00000 n
+0000628526 00000 n
+0000633581 00000 n
+0000630669 00000 n
+0000628794 00000 n
+0000630794 00000 n
+0000630858 00000 n
+0000630923 00000 n
+0000630988 00000 n
+0000631053 00000 n
+0000631118 00000 n
+0000631183 00000 n
+0000631248 00000 n
+0000631312 00000 n
+0000631377 00000 n
+0000631442 00000 n
+0000631507 00000 n
+0000631572 00000 n
+0000631637 00000 n
+0000631702 00000 n
+0000631766 00000 n
+0000631831 00000 n
+0000631896 00000 n
+0000631961 00000 n
+0000632026 00000 n
+0000632091 00000 n
+0000632156 00000 n
+0000632221 00000 n
+0000632286 00000 n
+0000632351 00000 n
+0000632415 00000 n
+0000632480 00000 n
+0000632545 00000 n
+0000632610 00000 n
+0000632675 00000 n
+0000632740 00000 n
+0000632805 00000 n
+0000632870 00000 n
+0000632935 00000 n
+0000632999 00000 n
+0000633064 00000 n
+0000633129 00000 n
+0000633194 00000 n
+0000633259 00000 n
+0000633324 00000 n
+0000633389 00000 n
+0000633454 00000 n
+0000633518 00000 n
+0000637983 00000 n
+0000635526 00000 n
+0000633758 00000 n
+0000635651 00000 n
+0000635715 00000 n
+0000635780 00000 n
+0000635845 00000 n
+0000635910 00000 n
+0000635975 00000 n
+0000636040 00000 n
+0000636105 00000 n
+0000636170 00000 n
+0000636235 00000 n
+0000636299 00000 n
+0000636364 00000 n
+0000636429 00000 n
+0000636494 00000 n
+0000636559 00000 n
+0000636624 00000 n
+0000636751 00000 n
+0000636816 00000 n
+0000636880 00000 n
+0000636945 00000 n
+0000637010 00000 n
+0000637075 00000 n
+0000637140 00000 n
+0000637205 00000 n
+0000637270 00000 n
+0000637335 00000 n
+0000637400 00000 n
+0000637465 00000 n
+0000637530 00000 n
+0000637595 00000 n
+0000637660 00000 n
+0000637725 00000 n
+0000637790 00000 n
+0000637855 00000 n
+0000637919 00000 n
+0000643733 00000 n
+0000640626 00000 n
+0000638186 00000 n
+0000640751 00000 n
+0000640815 00000 n
+0000640880 00000 n
+0000640945 00000 n
+0000641010 00000 n
+0000641075 00000 n
+0000641140 00000 n
+0000641205 00000 n
+0000641270 00000 n
+0000641335 00000 n
+0000641400 00000 n
+0000641465 00000 n
+0000641528 00000 n
+0000641593 00000 n
+0000641658 00000 n
+0000641723 00000 n
+0000641788 00000 n
+0000641853 00000 n
+0000641918 00000 n
+0000641983 00000 n
+0000642048 00000 n
+0000642113 00000 n
+0000642178 00000 n
+0000642243 00000 n
+0000642308 00000 n
+0000642373 00000 n
+0000642437 00000 n
+0000642502 00000 n
+0000642567 00000 n
+0000642632 00000 n
+0000642696 00000 n
+0000642761 00000 n
+0000642826 00000 n
+0000642891 00000 n
+0000642956 00000 n
+0000643021 00000 n
+0000643086 00000 n
+0000643151 00000 n
+0000643216 00000 n
+0000643280 00000 n
+0000643345 00000 n
+0000643410 00000 n
+0000643475 00000 n
+0000643540 00000 n
+0000643605 00000 n
+0000643669 00000 n
+0000649609 00000 n
+0000645982 00000 n
+0000643910 00000 n
+0000646107 00000 n
+0000646171 00000 n
+0000646236 00000 n
+0000646301 00000 n
+0000646366 00000 n
+0000646431 00000 n
+0000646496 00000 n
+0000646561 00000 n
+0000646626 00000 n
+0000646691 00000 n
+0000646755 00000 n
+0000646820 00000 n
+0000646885 00000 n
+0000646950 00000 n
+0000647015 00000 n
+0000647080 00000 n
+0000647145 00000 n
+0000647209 00000 n
+0000647274 00000 n
+0000647339 00000 n
+0000647404 00000 n
+0000647469 00000 n
+0000647534 00000 n
+0000647599 00000 n
+0000647664 00000 n
+0000647729 00000 n
+0000647794 00000 n
+0000647858 00000 n
+0000647923 00000 n
+0000647988 00000 n
+0000648053 00000 n
+0000648118 00000 n
+0000648183 00000 n
+0000648248 00000 n
+0000648313 00000 n
+0000648378 00000 n
+0000648442 00000 n
+0000648507 00000 n
+0000648572 00000 n
+0000648637 00000 n
+0000648702 00000 n
+0000648767 00000 n
+0000648832 00000 n
+0000648897 00000 n
+0000648962 00000 n
+0000649026 00000 n
+0000649091 00000 n
+0000649156 00000 n
+0000649221 00000 n
+0000649286 00000 n
+0000649351 00000 n
+0000649416 00000 n
+0000649479 00000 n
+0000649544 00000 n
+0000655116 00000 n
+0000651684 00000 n
+0000649812 00000 n
+0000651809 00000 n
+0000651873 00000 n
+0000651938 00000 n
+0000652003 00000 n
+0000652068 00000 n
+0000652133 00000 n
+0000652198 00000 n
+0000652263 00000 n
+0000652328 00000 n
+0000652393 00000 n
+0000652457 00000 n
+0000652522 00000 n
+0000652587 00000 n
+0000652652 00000 n
+0000652717 00000 n
+0000652782 00000 n
+0000652847 00000 n
+0000652911 00000 n
+0000652976 00000 n
+0000653041 00000 n
+0000653106 00000 n
+0000653171 00000 n
+0000653236 00000 n
+0000653301 00000 n
+0000653366 00000 n
+0000653431 00000 n
+0000653496 00000 n
+0000653560 00000 n
+0000653625 00000 n
+0000653689 00000 n
+0000653753 00000 n
+0000653818 00000 n
+0000653883 00000 n
+0000653948 00000 n
+0000654013 00000 n
+0000654077 00000 n
+0000654142 00000 n
+0000654207 00000 n
+0000654272 00000 n
+0000654337 00000 n
+0000654402 00000 n
+0000654467 00000 n
+0000654532 00000 n
+0000654597 00000 n
+0000654662 00000 n
+0000654727 00000 n
+0000654792 00000 n
+0000654857 00000 n
+0000654922 00000 n
+0000654986 00000 n
+0000655051 00000 n
+0000661069 00000 n
+0000657052 00000 n
+0000655280 00000 n
+0000657177 00000 n
+0000657241 00000 n
+0000657306 00000 n
+0000657371 00000 n
+0000657436 00000 n
+0000657500 00000 n
+0000657565 00000 n
+0000657630 00000 n
+0000657695 00000 n
+0000657760 00000 n
+0000657825 00000 n
+0000657890 00000 n
+0000657955 00000 n
+0000658020 00000 n
+0000658085 00000 n
+0000658150 00000 n
+0000658215 00000 n
+0000658280 00000 n
+0000658345 00000 n
+0000658410 00000 n
+0000658475 00000 n
+0000658540 00000 n
+0000658605 00000 n
+0000658670 00000 n
+0000658734 00000 n
+0000658799 00000 n
+0000658864 00000 n
+0000658929 00000 n
+0000658994 00000 n
+0000659059 00000 n
+0000659124 00000 n
+0000659189 00000 n
+0000659254 00000 n
+0000659319 00000 n
+0000659384 00000 n
+0000659449 00000 n
+0000659514 00000 n
+0000659579 00000 n
+0000659644 00000 n
+0000659709 00000 n
+0000659773 00000 n
+0000659838 00000 n
+0000659903 00000 n
+0000659968 00000 n
+0000660033 00000 n
+0000660098 00000 n
+0000660163 00000 n
+0000660228 00000 n
+0000660293 00000 n
+0000660357 00000 n
+0000660422 00000 n
+0000660487 00000 n
+0000660552 00000 n
+0000660617 00000 n
+0000660682 00000 n
+0000660747 00000 n
+0000660812 00000 n
+0000660877 00000 n
+0000660941 00000 n
+0000661005 00000 n
+0000666665 00000 n
+0000663365 00000 n
+0000661233 00000 n
+0000663490 00000 n
+0000663554 00000 n
+0000663619 00000 n
+0000663684 00000 n
+0000663749 00000 n
+0000663814 00000 n
+0000663879 00000 n
+0000663944 00000 n
+0000664009 00000 n
+0000664074 00000 n
+0000664138 00000 n
+0000664203 00000 n
+0000664268 00000 n
+0000664333 00000 n
+0000664398 00000 n
+0000664463 00000 n
+0000664528 00000 n
+0000664593 00000 n
+0000664658 00000 n
+0000664722 00000 n
+0000664787 00000 n
+0000664852 00000 n
+0000664917 00000 n
+0000664982 00000 n
+0000665047 00000 n
+0000665112 00000 n
+0000665177 00000 n
+0000665242 00000 n
+0000665305 00000 n
+0000665370 00000 n
+0000665435 00000 n
+0000665500 00000 n
+0000665565 00000 n
+0000665630 00000 n
+0000665695 00000 n
+0000665760 00000 n
+0000665825 00000 n
+0000665889 00000 n
+0000665954 00000 n
+0000666019 00000 n
+0000666084 00000 n
+0000666149 00000 n
+0000666214 00000 n
+0000666279 00000 n
+0000666344 00000 n
+0000666409 00000 n
+0000666473 00000 n
+0000666538 00000 n
+0000672359 00000 n
+0000668406 00000 n
+0000666881 00000 n
+0000668531 00000 n
+0000668595 00000 n
+0000668660 00000 n
+0000668725 00000 n
+0000668790 00000 n
+0000668855 00000 n
+0000668920 00000 n
+0000668985 00000 n
+0000669050 00000 n
+0000669115 00000 n
+0000669179 00000 n
+0000669244 00000 n
+0000669309 00000 n
+0000669374 00000 n
+0000669439 00000 n
+0000669504 00000 n
+0000669569 00000 n
+0000669634 00000 n
+0000669699 00000 n
+0000669763 00000 n
+0000669828 00000 n
+0000669893 00000 n
+0000669958 00000 n
+0000670023 00000 n
+0000670088 00000 n
+0000670152 00000 n
+0000670217 00000 n
+0000670282 00000 n
+0000670347 00000 n
+0000670412 00000 n
+0000670477 00000 n
+0000670542 00000 n
+0000670607 00000 n
+0000670672 00000 n
+0000670736 00000 n
+0000670801 00000 n
+0000670866 00000 n
+0000670931 00000 n
+0000670996 00000 n
+0000671061 00000 n
+0000671126 00000 n
+0000671191 00000 n
+0000671256 00000 n
+0000671321 00000 n
+0000671386 00000 n
+0000671451 00000 n
+0000671516 00000 n
+0000671581 00000 n
+0000671646 00000 n
+0000671710 00000 n
+0000671775 00000 n
+0000671840 00000 n
+0000671905 00000 n
+0000671970 00000 n
+0000672035 00000 n
+0000672100 00000 n
+0000672165 00000 n
+0000672230 00000 n
+0000672294 00000 n
+0000678185 00000 n
+0000674233 00000 n
+0000672510 00000 n
+0000674358 00000 n
+0000674422 00000 n
+0000674487 00000 n
+0000674552 00000 n
+0000674617 00000 n
+0000674682 00000 n
+0000674747 00000 n
+0000674812 00000 n
+0000674877 00000 n
+0000674942 00000 n
+0000675006 00000 n
+0000675071 00000 n
+0000675136 00000 n
+0000675201 00000 n
+0000675266 00000 n
+0000675331 00000 n
+0000675396 00000 n
+0000675461 00000 n
+0000675526 00000 n
+0000675590 00000 n
+0000675655 00000 n
+0000675720 00000 n
+0000675785 00000 n
+0000675850 00000 n
+0000675915 00000 n
+0000675980 00000 n
+0000676045 00000 n
+0000676110 00000 n
+0000676175 00000 n
+0000676240 00000 n
+0000676304 00000 n
+0000676369 00000 n
+0000676434 00000 n
+0000676499 00000 n
+0000676564 00000 n
+0000676629 00000 n
+0000676694 00000 n
+0000676759 00000 n
+0000676824 00000 n
+0000676888 00000 n
+0000676953 00000 n
+0000677018 00000 n
+0000677083 00000 n
+0000677148 00000 n
+0000677213 00000 n
+0000677278 00000 n
+0000677343 00000 n
+0000677408 00000 n
+0000677472 00000 n
+0000677537 00000 n
+0000677602 00000 n
+0000677667 00000 n
+0000677732 00000 n
+0000677797 00000 n
+0000677862 00000 n
+0000677927 00000 n
+0000677992 00000 n
+0000678057 00000 n
+0000678121 00000 n
+0001893316 00000 n
+0000684036 00000 n
+0000680798 00000 n
+0000678349 00000 n
+0000680923 00000 n
+0000680987 00000 n
+0000681052 00000 n
+0000681117 00000 n
+0000681181 00000 n
+0000681246 00000 n
+0000681311 00000 n
+0000681376 00000 n
+0000681441 00000 n
+0000681505 00000 n
+0000681570 00000 n
+0000681635 00000 n
+0000681700 00000 n
+0000681765 00000 n
+0000681830 00000 n
+0000681895 00000 n
+0000681960 00000 n
+0000682025 00000 n
+0000682089 00000 n
+0000682154 00000 n
+0000682219 00000 n
+0000682284 00000 n
+0000682349 00000 n
+0000682414 00000 n
+0000682479 00000 n
+0000682544 00000 n
+0000682609 00000 n
+0000682674 00000 n
+0000682739 00000 n
+0000682804 00000 n
+0000682869 00000 n
+0000682934 00000 n
+0000682999 00000 n
+0000683064 00000 n
+0000683129 00000 n
+0000683194 00000 n
+0000683259 00000 n
+0000683324 00000 n
+0000683389 00000 n
+0000683454 00000 n
+0000683519 00000 n
+0000683584 00000 n
+0000683648 00000 n
+0000683713 00000 n
+0000683778 00000 n
+0000683843 00000 n
+0000683908 00000 n
+0000683972 00000 n
+0000689829 00000 n
+0000685811 00000 n
+0000684213 00000 n
+0000685936 00000 n
+0000686000 00000 n
+0000686065 00000 n
+0000686130 00000 n
+0000686195 00000 n
+0000686260 00000 n
+0000686325 00000 n
+0000686390 00000 n
+0000686455 00000 n
+0000686520 00000 n
+0000686585 00000 n
+0000686650 00000 n
+0000686715 00000 n
+0000686780 00000 n
+0000686844 00000 n
+0000686909 00000 n
+0000686974 00000 n
+0000687039 00000 n
+0000687104 00000 n
+0000687169 00000 n
+0000687234 00000 n
+0000687299 00000 n
+0000687364 00000 n
+0000687428 00000 n
+0000687493 00000 n
+0000687558 00000 n
+0000687623 00000 n
+0000687688 00000 n
+0000687753 00000 n
+0000687818 00000 n
+0000687883 00000 n
+0000687948 00000 n
+0000688013 00000 n
+0000688078 00000 n
+0000688143 00000 n
+0000688208 00000 n
+0000688273 00000 n
+0000688338 00000 n
+0000688403 00000 n
+0000688468 00000 n
+0000688533 00000 n
+0000688598 00000 n
+0000688662 00000 n
+0000688727 00000 n
+0000688792 00000 n
+0000688857 00000 n
+0000688922 00000 n
+0000688987 00000 n
+0000689052 00000 n
+0000689117 00000 n
+0000689182 00000 n
+0000689247 00000 n
+0000689312 00000 n
+0000689377 00000 n
+0000689441 00000 n
+0000689506 00000 n
+0000689571 00000 n
+0000689636 00000 n
+0000689701 00000 n
+0000689765 00000 n
+0000695478 00000 n
+0000691917 00000 n
+0000689980 00000 n
+0000692042 00000 n
+0000692106 00000 n
+0000692171 00000 n
+0000692236 00000 n
+0000692301 00000 n
+0000692366 00000 n
+0000692431 00000 n
+0000692496 00000 n
+0000692560 00000 n
+0000692625 00000 n
+0000692690 00000 n
+0000692755 00000 n
+0000692820 00000 n
+0000692885 00000 n
+0000692950 00000 n
+0000693015 00000 n
+0000693080 00000 n
+0000693144 00000 n
+0000693209 00000 n
+0000693274 00000 n
+0000693339 00000 n
+0000693404 00000 n
+0000693469 00000 n
+0000693534 00000 n
+0000693599 00000 n
+0000693664 00000 n
+0000693728 00000 n
+0000693793 00000 n
+0000693858 00000 n
+0000693923 00000 n
+0000693988 00000 n
+0000694053 00000 n
+0000694118 00000 n
+0000694183 00000 n
+0000694247 00000 n
+0000694312 00000 n
+0000694377 00000 n
+0000694442 00000 n
+0000694507 00000 n
+0000694572 00000 n
+0000694637 00000 n
+0000694701 00000 n
+0000694766 00000 n
+0000694831 00000 n
+0000694896 00000 n
+0000694961 00000 n
+0000695026 00000 n
+0000695091 00000 n
+0000695156 00000 n
+0000695221 00000 n
+0000695285 00000 n
+0000695350 00000 n
+0000695414 00000 n
+0000700864 00000 n
+0000697500 00000 n
+0000695642 00000 n
+0000697625 00000 n
+0000697689 00000 n
+0000697754 00000 n
+0000697819 00000 n
+0000697884 00000 n
+0000697949 00000 n
+0000698014 00000 n
+0000698079 00000 n
+0000698144 00000 n
+0000698209 00000 n
+0000698273 00000 n
+0000698338 00000 n
+0000698403 00000 n
+0000698468 00000 n
+0000698533 00000 n
+0000698598 00000 n
+0000698663 00000 n
+0000698728 00000 n
+0000698793 00000 n
+0000698857 00000 n
+0000698922 00000 n
+0000698987 00000 n
+0000699052 00000 n
+0000699117 00000 n
+0000699182 00000 n
+0000699247 00000 n
+0000699312 00000 n
+0000699377 00000 n
+0000699442 00000 n
+0000699506 00000 n
+0000699571 00000 n
+0000699636 00000 n
+0000699701 00000 n
+0000699766 00000 n
+0000699831 00000 n
+0000699896 00000 n
+0000699961 00000 n
+0000700026 00000 n
+0000700091 00000 n
+0000700156 00000 n
+0000700220 00000 n
+0000700285 00000 n
+0000700350 00000 n
+0000700415 00000 n
+0000700480 00000 n
+0000700543 00000 n
+0000700608 00000 n
+0000700673 00000 n
+0000700738 00000 n
+0000703973 00000 n
+0000706660 00000 n
+0000703800 00000 n
+0000701028 00000 n
+0000704130 00000 n
+0000704194 00000 n
+0000704259 00000 n
+0000704324 00000 n
+0000704389 00000 n
+0000704454 00000 n
+0000704519 00000 n
+0000704584 00000 n
+0000704649 00000 n
+0000704714 00000 n
+0000704779 00000 n
+0000704843 00000 n
+0000704908 00000 n
+0000704973 00000 n
+0000705038 00000 n
+0000705103 00000 n
+0000705168 00000 n
+0000705233 00000 n
+0000705298 00000 n
+0000705363 00000 n
+0000705426 00000 n
+0000705491 00000 n
+0000705556 00000 n
+0000705621 00000 n
+0000705686 00000 n
+0000705751 00000 n
+0000705816 00000 n
+0000705881 00000 n
+0000705946 00000 n
+0000706011 00000 n
+0000706076 00000 n
+0000706140 00000 n
+0000706205 00000 n
+0000706270 00000 n
+0000706335 00000 n
+0000706400 00000 n
+0000706465 00000 n
+0000706530 00000 n
+0000706595 00000 n
+0000703942 00000 n
+0000711622 00000 n
+0000709491 00000 n
+0000706928 00000 n
+0000709616 00000 n
+0000709680 00000 n
+0000709745 00000 n
+0000709810 00000 n
+0000709875 00000 n
+0000709940 00000 n
+0000710004 00000 n
+0000710069 00000 n
+0000710134 00000 n
+0000710199 00000 n
+0000710264 00000 n
+0000710329 00000 n
+0000710394 00000 n
+0000710458 00000 n
+0000710523 00000 n
+0000710588 00000 n
+0000710653 00000 n
+0000710718 00000 n
+0000710783 00000 n
+0000710848 00000 n
+0000710913 00000 n
+0000711040 00000 n
+0000711105 00000 n
+0000711169 00000 n
+0000711234 00000 n
+0000711299 00000 n
+0000711364 00000 n
+0000711429 00000 n
+0000711494 00000 n
+0000711558 00000 n
+0000717306 00000 n
+0000713813 00000 n
+0000711812 00000 n
+0000713938 00000 n
+0000714002 00000 n
+0000714067 00000 n
+0000714131 00000 n
+0000714196 00000 n
+0000714261 00000 n
+0000714326 00000 n
+0000714391 00000 n
+0000714456 00000 n
+0000714521 00000 n
+0000714585 00000 n
+0000714650 00000 n
+0000714715 00000 n
+0000714780 00000 n
+0000714845 00000 n
+0000714910 00000 n
+0000714975 00000 n
+0000715040 00000 n
+0000715105 00000 n
+0000715169 00000 n
+0000715234 00000 n
+0000715299 00000 n
+0000715364 00000 n
+0000715429 00000 n
+0000715494 00000 n
+0000715559 00000 n
+0000715624 00000 n
+0000715689 00000 n
+0000715753 00000 n
+0000715818 00000 n
+0000715883 00000 n
+0000715948 00000 n
+0000716013 00000 n
+0000716078 00000 n
+0000716143 00000 n
+0000716207 00000 n
+0000716272 00000 n
+0000716337 00000 n
+0000716402 00000 n
+0000716467 00000 n
+0000716530 00000 n
+0000716595 00000 n
+0000716660 00000 n
+0000716725 00000 n
+0000716790 00000 n
+0000716854 00000 n
+0000716919 00000 n
+0000716984 00000 n
+0000717048 00000 n
+0000717113 00000 n
+0000717178 00000 n
+0000717242 00000 n
+0000723086 00000 n
+0000719261 00000 n
+0000717483 00000 n
+0000719386 00000 n
+0000719450 00000 n
+0000719515 00000 n
+0000719580 00000 n
+0000719645 00000 n
+0000719710 00000 n
+0000719775 00000 n
+0000719840 00000 n
+0000719905 00000 n
+0000719970 00000 n
+0000720035 00000 n
+0000720100 00000 n
+0000720165 00000 n
+0000720230 00000 n
+0000720295 00000 n
+0000720360 00000 n
+0000720425 00000 n
+0000720490 00000 n
+0000720555 00000 n
+0000720620 00000 n
+0000720685 00000 n
+0000720749 00000 n
+0000720814 00000 n
+0000720879 00000 n
+0000720944 00000 n
+0000721009 00000 n
+0000721074 00000 n
+0000721139 00000 n
+0000721204 00000 n
+0000721269 00000 n
+0000721334 00000 n
+0000721399 00000 n
+0000721464 00000 n
+0000721529 00000 n
+0000721594 00000 n
+0000721659 00000 n
+0000721724 00000 n
+0000721789 00000 n
+0000721854 00000 n
+0000721919 00000 n
+0000721984 00000 n
+0000722049 00000 n
+0000722114 00000 n
+0000722179 00000 n
+0000722244 00000 n
+0000722309 00000 n
+0000722374 00000 n
+0000722439 00000 n
+0000722504 00000 n
+0000722569 00000 n
+0000722634 00000 n
+0000722698 00000 n
+0000722763 00000 n
+0000722828 00000 n
+0000722893 00000 n
+0000722958 00000 n
+0000723022 00000 n
+0000728150 00000 n
+0000726474 00000 n
+0000723250 00000 n
+0000726599 00000 n
+0000726663 00000 n
+0000726790 00000 n
+0000726855 00000 n
+0000726920 00000 n
+0000726985 00000 n
+0000727050 00000 n
+0000727115 00000 n
+0000727180 00000 n
+0000727245 00000 n
+0000727309 00000 n
+0000727374 00000 n
+0000727438 00000 n
+0000727503 00000 n
+0000727568 00000 n
+0000727633 00000 n
+0000727698 00000 n
+0000727763 00000 n
+0000727828 00000 n
+0000727892 00000 n
+0000727957 00000 n
+0000728022 00000 n
+0000728086 00000 n
+0000734093 00000 n
+0000730792 00000 n
+0000728405 00000 n
+0000730917 00000 n
+0000730981 00000 n
+0000731046 00000 n
+0000731111 00000 n
+0000731176 00000 n
+0000731241 00000 n
+0000731306 00000 n
+0000731371 00000 n
+0000731436 00000 n
+0000731501 00000 n
+0000731566 00000 n
+0000731629 00000 n
+0000731694 00000 n
+0000731759 00000 n
+0000731824 00000 n
+0000731889 00000 n
+0000731954 00000 n
+0000732019 00000 n
+0000732084 00000 n
+0000732149 00000 n
+0000732213 00000 n
+0000732278 00000 n
+0000732343 00000 n
+0000732408 00000 n
+0000732473 00000 n
+0000732538 00000 n
+0000732603 00000 n
+0000732668 00000 n
+0000732733 00000 n
+0000732797 00000 n
+0000732862 00000 n
+0000732927 00000 n
+0000732992 00000 n
+0000733057 00000 n
+0000733122 00000 n
+0000733187 00000 n
+0000733252 00000 n
+0000733317 00000 n
+0000733381 00000 n
+0000733446 00000 n
+0000733511 00000 n
+0000733576 00000 n
+0000733641 00000 n
+0000733705 00000 n
+0000733770 00000 n
+0000733835 00000 n
+0000733900 00000 n
+0000733965 00000 n
+0000734029 00000 n
+0001893481 00000 n
+0000739450 00000 n
+0000736277 00000 n
+0000734296 00000 n
+0000736402 00000 n
+0000736466 00000 n
+0000736531 00000 n
+0000736596 00000 n
+0000736661 00000 n
+0000736726 00000 n
+0000736791 00000 n
+0000736856 00000 n
+0000736921 00000 n
+0000736986 00000 n
+0000737050 00000 n
+0000737115 00000 n
+0000737180 00000 n
+0000737245 00000 n
+0000737310 00000 n
+0000737375 00000 n
+0000737440 00000 n
+0000737505 00000 n
+0000737570 00000 n
+0000737635 00000 n
+0000737700 00000 n
+0000737765 00000 n
+0000737830 00000 n
+0000737895 00000 n
+0000737959 00000 n
+0000738024 00000 n
+0000738089 00000 n
+0000738154 00000 n
+0000738219 00000 n
+0000738284 00000 n
+0000738349 00000 n
+0000738414 00000 n
+0000738478 00000 n
+0000738543 00000 n
+0000738608 00000 n
+0000738673 00000 n
+0000738738 00000 n
+0000738803 00000 n
+0000738868 00000 n
+0000738933 00000 n
+0000738998 00000 n
+0000739063 00000 n
+0000739128 00000 n
+0000739193 00000 n
+0000739257 00000 n
+0000739322 00000 n
+0000739386 00000 n
+0000744599 00000 n
+0000741230 00000 n
+0000739614 00000 n
+0000741355 00000 n
+0000741419 00000 n
+0000741484 00000 n
+0000741549 00000 n
+0000741614 00000 n
+0000741679 00000 n
+0000741744 00000 n
+0000741809 00000 n
+0000741874 00000 n
+0000741939 00000 n
+0000742004 00000 n
+0000742069 00000 n
+0000742134 00000 n
+0000742199 00000 n
+0000742264 00000 n
+0000742329 00000 n
+0000742394 00000 n
+0000742459 00000 n
+0000742524 00000 n
+0000742588 00000 n
+0000742653 00000 n
+0000742718 00000 n
+0000742783 00000 n
+0000742848 00000 n
+0000742913 00000 n
+0000742978 00000 n
+0000743043 00000 n
+0000743108 00000 n
+0000743173 00000 n
+0000743238 00000 n
+0000743303 00000 n
+0000743368 00000 n
+0000743433 00000 n
+0000743497 00000 n
+0000743562 00000 n
+0000743627 00000 n
+0000743692 00000 n
+0000743757 00000 n
+0000743821 00000 n
+0000743886 00000 n
+0000743951 00000 n
+0000744016 00000 n
+0000744081 00000 n
+0000744146 00000 n
+0000744211 00000 n
+0000744276 00000 n
+0000744341 00000 n
+0000744406 00000 n
+0000744471 00000 n
+0000744535 00000 n
+0000749952 00000 n
+0000747166 00000 n
+0000744763 00000 n
+0000747291 00000 n
+0000747355 00000 n
+0000747420 00000 n
+0000747485 00000 n
+0000747550 00000 n
+0000747615 00000 n
+0000747680 00000 n
+0000747745 00000 n
+0000747810 00000 n
+0000747875 00000 n
+0000747939 00000 n
+0000748004 00000 n
+0000748069 00000 n
+0000748134 00000 n
+0000748199 00000 n
+0000748264 00000 n
+0000748329 00000 n
+0000748394 00000 n
+0000748459 00000 n
+0000748523 00000 n
+0000748588 00000 n
+0000748653 00000 n
+0000748718 00000 n
+0000748783 00000 n
+0000748847 00000 n
+0000748912 00000 n
+0000748977 00000 n
+0000749042 00000 n
+0000749107 00000 n
+0000749172 00000 n
+0000749237 00000 n
+0000749302 00000 n
+0000749367 00000 n
+0000749432 00000 n
+0000749497 00000 n
+0000749562 00000 n
+0000749627 00000 n
+0000749692 00000 n
+0000749757 00000 n
+0000749822 00000 n
+0000749887 00000 n
+0000755912 00000 n
+0000752480 00000 n
+0000750155 00000 n
+0000752605 00000 n
+0000752669 00000 n
+0000752734 00000 n
+0000752798 00000 n
+0000752863 00000 n
+0000752928 00000 n
+0000752993 00000 n
+0000753058 00000 n
+0000753123 00000 n
+0000753188 00000 n
+0000753253 00000 n
+0000753318 00000 n
+0000753383 00000 n
+0000753448 00000 n
+0000753513 00000 n
+0000753578 00000 n
+0000753643 00000 n
+0000753708 00000 n
+0000753773 00000 n
+0000753838 00000 n
+0000753903 00000 n
+0000753968 00000 n
+0000754033 00000 n
+0000754098 00000 n
+0000754163 00000 n
+0000754228 00000 n
+0000754293 00000 n
+0000754358 00000 n
+0000754423 00000 n
+0000754487 00000 n
+0000754552 00000 n
+0000754617 00000 n
+0000754681 00000 n
+0000754746 00000 n
+0000754811 00000 n
+0000754876 00000 n
+0000754941 00000 n
+0000755006 00000 n
+0000755071 00000 n
+0000755136 00000 n
+0000755201 00000 n
+0000755265 00000 n
+0000755330 00000 n
+0000755395 00000 n
+0000755460 00000 n
+0000755525 00000 n
+0000755590 00000 n
+0000755655 00000 n
+0000755720 00000 n
+0000755785 00000 n
+0000755848 00000 n
+0000761298 00000 n
+0000758515 00000 n
+0000756089 00000 n
+0000758640 00000 n
+0000758704 00000 n
+0000758769 00000 n
+0000758834 00000 n
+0000758899 00000 n
+0000758964 00000 n
+0000759029 00000 n
+0000759094 00000 n
+0000759159 00000 n
+0000759224 00000 n
+0000759289 00000 n
+0000759354 00000 n
+0000759419 00000 n
+0000759484 00000 n
+0000759549 00000 n
+0000759613 00000 n
+0000759678 00000 n
+0000759743 00000 n
+0000759807 00000 n
+0000759872 00000 n
+0000759937 00000 n
+0000760002 00000 n
+0000760067 00000 n
+0000760132 00000 n
+0000760197 00000 n
+0000760262 00000 n
+0000760327 00000 n
+0000760392 00000 n
+0000760457 00000 n
+0000760522 00000 n
+0000760585 00000 n
+0000760650 00000 n
+0000760715 00000 n
+0000760780 00000 n
+0000760845 00000 n
+0000760910 00000 n
+0000760975 00000 n
+0000761040 00000 n
+0000761105 00000 n
+0000761170 00000 n
+0000761234 00000 n
+0000767087 00000 n
+0000763334 00000 n
+0000761488 00000 n
+0000763459 00000 n
+0000763523 00000 n
+0000763588 00000 n
+0000763653 00000 n
+0000763718 00000 n
+0000763783 00000 n
+0000763848 00000 n
+0000763913 00000 n
+0000763978 00000 n
+0000764043 00000 n
+0000764107 00000 n
+0000764172 00000 n
+0000764235 00000 n
+0000764300 00000 n
+0000764365 00000 n
+0000764429 00000 n
+0000764494 00000 n
+0000764559 00000 n
+0000764624 00000 n
+0000764689 00000 n
+0000764754 00000 n
+0000764819 00000 n
+0000764884 00000 n
+0000764949 00000 n
+0000765013 00000 n
+0000765078 00000 n
+0000765143 00000 n
+0000765208 00000 n
+0000765273 00000 n
+0000765338 00000 n
+0000765403 00000 n
+0000765468 00000 n
+0000765533 00000 n
+0000765597 00000 n
+0000765662 00000 n
+0000765727 00000 n
+0000765791 00000 n
+0000765856 00000 n
+0000765921 00000 n
+0000765986 00000 n
+0000766051 00000 n
+0000766116 00000 n
+0000766181 00000 n
+0000766246 00000 n
+0000766311 00000 n
+0000766376 00000 n
+0000766441 00000 n
+0000766505 00000 n
+0000766570 00000 n
+0000766635 00000 n
+0000766700 00000 n
+0000766765 00000 n
+0000766830 00000 n
+0000766895 00000 n
+0000766960 00000 n
+0000767024 00000 n
+0000772796 00000 n
+0000769297 00000 n
+0000767264 00000 n
+0000769422 00000 n
+0000769486 00000 n
+0000769551 00000 n
+0000769616 00000 n
+0000769681 00000 n
+0000769746 00000 n
+0000769811 00000 n
+0000769876 00000 n
+0000769941 00000 n
+0000770006 00000 n
+0000770071 00000 n
+0000770136 00000 n
+0000770200 00000 n
+0000770265 00000 n
+0000770330 00000 n
+0000770395 00000 n
+0000770460 00000 n
+0000770525 00000 n
+0000770590 00000 n
+0000770655 00000 n
+0000770720 00000 n
+0000770785 00000 n
+0000770850 00000 n
+0000770915 00000 n
+0000770980 00000 n
+0000771045 00000 n
+0000771110 00000 n
+0000771175 00000 n
+0000771240 00000 n
+0000771305 00000 n
+0000771370 00000 n
+0000771434 00000 n
+0000771499 00000 n
+0000771563 00000 n
+0000771628 00000 n
+0000771693 00000 n
+0000771758 00000 n
+0000771823 00000 n
+0000771888 00000 n
+0000771953 00000 n
+0000772018 00000 n
+0000772083 00000 n
+0000772148 00000 n
+0000772212 00000 n
+0000772277 00000 n
+0000772342 00000 n
+0000772407 00000 n
+0000772472 00000 n
+0000772537 00000 n
+0000772602 00000 n
+0000772667 00000 n
+0000772732 00000 n
+0000778547 00000 n
+0000775440 00000 n
+0000772973 00000 n
+0000775565 00000 n
+0000775629 00000 n
+0000775694 00000 n
+0000775759 00000 n
+0000775824 00000 n
+0000775889 00000 n
+0000775954 00000 n
+0000776019 00000 n
+0000776084 00000 n
+0000776149 00000 n
+0000776213 00000 n
+0000776278 00000 n
+0000776343 00000 n
+0000776408 00000 n
+0000776473 00000 n
+0000776538 00000 n
+0000776603 00000 n
+0000776668 00000 n
+0000776731 00000 n
+0000776796 00000 n
+0000776861 00000 n
+0000776926 00000 n
+0000776991 00000 n
+0000777056 00000 n
+0000777121 00000 n
+0000777186 00000 n
+0000777251 00000 n
+0000777315 00000 n
+0000777380 00000 n
+0000777445 00000 n
+0000777510 00000 n
+0000777575 00000 n
+0000777640 00000 n
+0000777705 00000 n
+0000777770 00000 n
+0000777835 00000 n
+0000777899 00000 n
+0000777964 00000 n
+0000778029 00000 n
+0000778093 00000 n
+0000778158 00000 n
+0000778223 00000 n
+0000778288 00000 n
+0000778353 00000 n
+0000778418 00000 n
+0000778483 00000 n
+0000783852 00000 n
+0000781522 00000 n
+0000778724 00000 n
+0000781647 00000 n
+0000781711 00000 n
+0000781776 00000 n
+0000781840 00000 n
+0000781905 00000 n
+0000781970 00000 n
+0000782035 00000 n
+0000782100 00000 n
+0000782165 00000 n
+0000782230 00000 n
+0000782295 00000 n
+0000782360 00000 n
+0000782424 00000 n
+0000782489 00000 n
+0000782554 00000 n
+0000782619 00000 n
+0000782684 00000 n
+0000782749 00000 n
+0000782814 00000 n
+0000782879 00000 n
+0000782944 00000 n
+0000783009 00000 n
+0000783074 00000 n
+0000783139 00000 n
+0000783203 00000 n
+0000783268 00000 n
+0000783333 00000 n
+0000783398 00000 n
+0000783463 00000 n
+0000783528 00000 n
+0000783593 00000 n
+0000783657 00000 n
+0000783722 00000 n
+0000783787 00000 n
+0000789037 00000 n
+0000786449 00000 n
+0000784029 00000 n
+0000786574 00000 n
+0000786638 00000 n
+0000786703 00000 n
+0000786768 00000 n
+0000786833 00000 n
+0000786898 00000 n
+0000786963 00000 n
+0000787028 00000 n
+0000787093 00000 n
+0000787158 00000 n
+0000787222 00000 n
+0000787287 00000 n
+0000787352 00000 n
+0000787417 00000 n
+0000787482 00000 n
+0000787547 00000 n
+0000787612 00000 n
+0000787677 00000 n
+0000787741 00000 n
+0000787806 00000 n
+0000787871 00000 n
+0000787936 00000 n
+0000788001 00000 n
+0000788066 00000 n
+0000788131 00000 n
+0000788195 00000 n
+0000788260 00000 n
+0000788325 00000 n
+0000788389 00000 n
+0000788454 00000 n
+0000788519 00000 n
+0000788584 00000 n
+0000788649 00000 n
+0000788714 00000 n
+0000788779 00000 n
+0000788844 00000 n
+0000788907 00000 n
+0000788972 00000 n
+0001893646 00000 n
+0000794255 00000 n
+0000791604 00000 n
+0000789227 00000 n
+0000791729 00000 n
+0000791793 00000 n
+0000791858 00000 n
+0000791923 00000 n
+0000791988 00000 n
+0000792053 00000 n
+0000792118 00000 n
+0000792183 00000 n
+0000792248 00000 n
+0000792313 00000 n
+0000792377 00000 n
+0000792442 00000 n
+0000792507 00000 n
+0000792572 00000 n
+0000792637 00000 n
+0000792702 00000 n
+0000792767 00000 n
+0000792832 00000 n
+0000792959 00000 n
+0000793024 00000 n
+0000793087 00000 n
+0000793152 00000 n
+0000793217 00000 n
+0000793282 00000 n
+0000793347 00000 n
+0000793412 00000 n
+0000793477 00000 n
+0000793542 00000 n
+0000793607 00000 n
+0000793672 00000 n
+0000793737 00000 n
+0000793802 00000 n
+0000793867 00000 n
+0000793932 00000 n
+0000793997 00000 n
+0000794062 00000 n
+0000794127 00000 n
+0000794191 00000 n
+0000800042 00000 n
+0000797516 00000 n
+0000794471 00000 n
+0000797641 00000 n
+0000797705 00000 n
+0000797770 00000 n
+0000797835 00000 n
+0000797900 00000 n
+0000797965 00000 n
+0000798030 00000 n
+0000798095 00000 n
+0000798160 00000 n
+0000798225 00000 n
+0000798290 00000 n
+0000798355 00000 n
+0000798420 00000 n
+0000798485 00000 n
+0000798550 00000 n
+0000798614 00000 n
+0000798679 00000 n
+0000798744 00000 n
+0000798809 00000 n
+0000798874 00000 n
+0000798939 00000 n
+0000799004 00000 n
+0000799069 00000 n
+0000799134 00000 n
+0000799199 00000 n
+0000799264 00000 n
+0000799329 00000 n
+0000799394 00000 n
+0000799459 00000 n
+0000799524 00000 n
+0000799589 00000 n
+0000799654 00000 n
+0000799719 00000 n
+0000799784 00000 n
+0000799849 00000 n
+0000799914 00000 n
+0000799978 00000 n
+0000805806 00000 n
+0000802827 00000 n
+0000800271 00000 n
+0000802952 00000 n
+0000803016 00000 n
+0000803081 00000 n
+0000803146 00000 n
+0000803211 00000 n
+0000803276 00000 n
+0000803341 00000 n
+0000803406 00000 n
+0000803471 00000 n
+0000803536 00000 n
+0000803601 00000 n
+0000803666 00000 n
+0000803731 00000 n
+0000803796 00000 n
+0000803861 00000 n
+0000803926 00000 n
+0000803991 00000 n
+0000804056 00000 n
+0000804121 00000 n
+0000804186 00000 n
+0000804250 00000 n
+0000804315 00000 n
+0000804380 00000 n
+0000804445 00000 n
+0000804510 00000 n
+0000804575 00000 n
+0000804640 00000 n
+0000804705 00000 n
+0000804770 00000 n
+0000804835 00000 n
+0000804900 00000 n
+0000804965 00000 n
+0000805030 00000 n
+0000805095 00000 n
+0000805160 00000 n
+0000805224 00000 n
+0000805289 00000 n
+0000805354 00000 n
+0000805419 00000 n
+0000805484 00000 n
+0000805549 00000 n
+0000805614 00000 n
+0000805679 00000 n
+0000805743 00000 n
+0000811580 00000 n
+0000807694 00000 n
+0000805996 00000 n
+0000807819 00000 n
+0000807883 00000 n
+0000807948 00000 n
+0000808013 00000 n
+0000808078 00000 n
+0000808143 00000 n
+0000808208 00000 n
+0000808273 00000 n
+0000808338 00000 n
+0000808403 00000 n
+0000808468 00000 n
+0000808533 00000 n
+0000808598 00000 n
+0000808663 00000 n
+0000808726 00000 n
+0000808791 00000 n
+0000808856 00000 n
+0000808921 00000 n
+0000808986 00000 n
+0000809051 00000 n
+0000809116 00000 n
+0000809181 00000 n
+0000809246 00000 n
+0000809311 00000 n
+0000809376 00000 n
+0000809441 00000 n
+0000809506 00000 n
+0000809571 00000 n
+0000809636 00000 n
+0000809701 00000 n
+0000809766 00000 n
+0000809830 00000 n
+0000809895 00000 n
+0000809960 00000 n
+0000810025 00000 n
+0000810090 00000 n
+0000810155 00000 n
+0000810220 00000 n
+0000810285 00000 n
+0000810350 00000 n
+0000810414 00000 n
+0000810479 00000 n
+0000810544 00000 n
+0000810609 00000 n
+0000810674 00000 n
+0000810739 00000 n
+0000810804 00000 n
+0000810869 00000 n
+0000810934 00000 n
+0000810998 00000 n
+0000811063 00000 n
+0000811128 00000 n
+0000811193 00000 n
+0000811258 00000 n
+0000811323 00000 n
+0000811388 00000 n
+0000811453 00000 n
+0000811517 00000 n
+0000817504 00000 n
+0000813554 00000 n
+0000811744 00000 n
+0000813679 00000 n
+0000813743 00000 n
+0000813808 00000 n
+0000813873 00000 n
+0000813938 00000 n
+0000814003 00000 n
+0000814068 00000 n
+0000814133 00000 n
+0000814198 00000 n
+0000814263 00000 n
+0000814327 00000 n
+0000814392 00000 n
+0000814457 00000 n
+0000814522 00000 n
+0000814587 00000 n
+0000814652 00000 n
+0000814717 00000 n
+0000814782 00000 n
+0000814847 00000 n
+0000814911 00000 n
+0000814976 00000 n
+0000815041 00000 n
+0000815106 00000 n
+0000815171 00000 n
+0000815236 00000 n
+0000815301 00000 n
+0000815366 00000 n
+0000815431 00000 n
+0000815494 00000 n
+0000815559 00000 n
+0000815624 00000 n
+0000815689 00000 n
+0000815754 00000 n
+0000815819 00000 n
+0000815884 00000 n
+0000815949 00000 n
+0000816014 00000 n
+0000816078 00000 n
+0000816143 00000 n
+0000816208 00000 n
+0000816273 00000 n
+0000816338 00000 n
+0000816403 00000 n
+0000816468 00000 n
+0000816532 00000 n
+0000816597 00000 n
+0000816662 00000 n
+0000816727 00000 n
+0000816792 00000 n
+0000816857 00000 n
+0000816922 00000 n
+0000816987 00000 n
+0000817052 00000 n
+0000817116 00000 n
+0000817181 00000 n
+0000817246 00000 n
+0000817311 00000 n
+0000817376 00000 n
+0000817440 00000 n
+0000823114 00000 n
+0000820004 00000 n
+0000817668 00000 n
+0000820129 00000 n
+0000820193 00000 n
+0000820258 00000 n
+0000820323 00000 n
+0000820388 00000 n
+0000820453 00000 n
+0000820518 00000 n
+0000820583 00000 n
+0000820647 00000 n
+0000820712 00000 n
+0000820777 00000 n
+0000820842 00000 n
+0000820907 00000 n
+0000820972 00000 n
+0000821037 00000 n
+0000821102 00000 n
+0000821167 00000 n
+0000821231 00000 n
+0000821296 00000 n
+0000821361 00000 n
+0000821425 00000 n
+0000821490 00000 n
+0000821555 00000 n
+0000821620 00000 n
+0000821685 00000 n
+0000821750 00000 n
+0000821815 00000 n
+0000821880 00000 n
+0000821945 00000 n
+0000822009 00000 n
+0000822074 00000 n
+0000822139 00000 n
+0000822204 00000 n
+0000822269 00000 n
+0000822334 00000 n
+0000822399 00000 n
+0000822464 00000 n
+0000822529 00000 n
+0000822594 00000 n
+0000822659 00000 n
+0000822724 00000 n
+0000822789 00000 n
+0000822854 00000 n
+0000822919 00000 n
+0000822984 00000 n
+0000823049 00000 n
+0000829100 00000 n
+0000825541 00000 n
+0000823317 00000 n
+0000825666 00000 n
+0000825730 00000 n
+0000825795 00000 n
+0000825859 00000 n
+0000825924 00000 n
+0000825989 00000 n
+0000826054 00000 n
+0000826119 00000 n
+0000826184 00000 n
+0000826249 00000 n
+0000826314 00000 n
+0000826377 00000 n
+0000826442 00000 n
+0000826507 00000 n
+0000826572 00000 n
+0000826637 00000 n
+0000826702 00000 n
+0000826767 00000 n
+0000826830 00000 n
+0000826895 00000 n
+0000826960 00000 n
+0000827025 00000 n
+0000827090 00000 n
+0000827155 00000 n
+0000827220 00000 n
+0000827285 00000 n
+0000827350 00000 n
+0000827414 00000 n
+0000827479 00000 n
+0000827544 00000 n
+0000827609 00000 n
+0000827674 00000 n
+0000827739 00000 n
+0000827804 00000 n
+0000827869 00000 n
+0000827934 00000 n
+0000827999 00000 n
+0000828064 00000 n
+0000828129 00000 n
+0000828194 00000 n
+0000828259 00000 n
+0000828323 00000 n
+0000828388 00000 n
+0000828453 00000 n
+0000828518 00000 n
+0000828583 00000 n
+0000828648 00000 n
+0000828713 00000 n
+0000828778 00000 n
+0000828843 00000 n
+0000828907 00000 n
+0000828972 00000 n
+0000829036 00000 n
+0000835067 00000 n
+0000831050 00000 n
+0000829264 00000 n
+0000831175 00000 n
+0000831239 00000 n
+0000831304 00000 n
+0000831369 00000 n
+0000831434 00000 n
+0000831499 00000 n
+0000831564 00000 n
+0000831629 00000 n
+0000831693 00000 n
+0000831758 00000 n
+0000831823 00000 n
+0000831888 00000 n
+0000831953 00000 n
+0000832018 00000 n
+0000832083 00000 n
+0000832148 00000 n
+0000832213 00000 n
+0000832277 00000 n
+0000832342 00000 n
+0000832407 00000 n
+0000832472 00000 n
+0000832537 00000 n
+0000832602 00000 n
+0000832667 00000 n
+0000832732 00000 n
+0000832797 00000 n
+0000832861 00000 n
+0000832926 00000 n
+0000832991 00000 n
+0000833056 00000 n
+0000833121 00000 n
+0000833186 00000 n
+0000833251 00000 n
+0000833316 00000 n
+0000833381 00000 n
+0000833445 00000 n
+0000833510 00000 n
+0000833575 00000 n
+0000833640 00000 n
+0000833705 00000 n
+0000833770 00000 n
+0000833835 00000 n
+0000833900 00000 n
+0000833965 00000 n
+0000834030 00000 n
+0000834095 00000 n
+0000834160 00000 n
+0000834225 00000 n
+0000834290 00000 n
+0000834355 00000 n
+0000834420 00000 n
+0000834485 00000 n
+0000834550 00000 n
+0000834615 00000 n
+0000834679 00000 n
+0000834744 00000 n
+0000834809 00000 n
+0000834874 00000 n
+0000834939 00000 n
+0000835003 00000 n
+0000842785 00000 n
+0000839937 00000 n
+0000835231 00000 n
+0000840062 00000 n
+0000840126 00000 n
+0000840191 00000 n
+0000840256 00000 n
+0000840321 00000 n
+0000840386 00000 n
+0000840451 00000 n
+0000840516 00000 n
+0000840581 00000 n
+0000840646 00000 n
+0000840710 00000 n
+0000840775 00000 n
+0000840840 00000 n
+0000840905 00000 n
+0000840970 00000 n
+0000841035 00000 n
+0000841100 00000 n
+0000841165 00000 n
+0000841230 00000 n
+0000841295 00000 n
+0000841360 00000 n
+0000841425 00000 n
+0000841490 00000 n
+0000841555 00000 n
+0000841620 00000 n
+0000841683 00000 n
+0000841748 00000 n
+0000841813 00000 n
+0000841878 00000 n
+0000841943 00000 n
+0000842008 00000 n
+0000842073 00000 n
+0000842138 00000 n
+0000842203 00000 n
+0000842268 00000 n
+0000842333 00000 n
+0000842397 00000 n
+0000842462 00000 n
+0000842527 00000 n
+0000842592 00000 n
+0000842657 00000 n
+0000842721 00000 n
+0000848733 00000 n
+0000845494 00000 n
+0000842989 00000 n
+0000845619 00000 n
+0000845683 00000 n
+0000845748 00000 n
+0000845813 00000 n
+0000845878 00000 n
+0000845943 00000 n
+0000846008 00000 n
+0000846073 00000 n
+0000846138 00000 n
+0000846203 00000 n
+0000846268 00000 n
+0000846333 00000 n
+0000846398 00000 n
+0000846463 00000 n
+0000846528 00000 n
+0000846592 00000 n
+0000846657 00000 n
+0000846722 00000 n
+0000846787 00000 n
+0000846852 00000 n
+0000846917 00000 n
+0000846982 00000 n
+0000847047 00000 n
+0000847112 00000 n
+0000847177 00000 n
+0000847242 00000 n
+0000847307 00000 n
+0000847372 00000 n
+0000847437 00000 n
+0000847502 00000 n
+0000847567 00000 n
+0000847632 00000 n
+0000847696 00000 n
+0000847761 00000 n
+0000847826 00000 n
+0000847891 00000 n
+0000847956 00000 n
+0000848021 00000 n
+0000848086 00000 n
+0000848151 00000 n
+0000848216 00000 n
+0000848281 00000 n
+0000848345 00000 n
+0000848410 00000 n
+0000848475 00000 n
+0000848540 00000 n
+0000848605 00000 n
+0000848669 00000 n
+0001893811 00000 n
+0000854276 00000 n
+0000851103 00000 n
+0000848923 00000 n
+0000851228 00000 n
+0000851292 00000 n
+0000851357 00000 n
+0000851422 00000 n
+0000851487 00000 n
+0000851552 00000 n
+0000851617 00000 n
+0000851682 00000 n
+0000851747 00000 n
+0000851812 00000 n
+0000851877 00000 n
+0000851942 00000 n
+0000852006 00000 n
+0000852071 00000 n
+0000852136 00000 n
+0000852201 00000 n
+0000852266 00000 n
+0000852331 00000 n
+0000852396 00000 n
+0000852461 00000 n
+0000852526 00000 n
+0000852591 00000 n
+0000852656 00000 n
+0000852721 00000 n
+0000852786 00000 n
+0000852851 00000 n
+0000852916 00000 n
+0000852980 00000 n
+0000853044 00000 n
+0000853109 00000 n
+0000853174 00000 n
+0000853239 00000 n
+0000853304 00000 n
+0000853369 00000 n
+0000853434 00000 n
+0000853499 00000 n
+0000853564 00000 n
+0000853629 00000 n
+0000853693 00000 n
+0000853758 00000 n
+0000853823 00000 n
+0000853888 00000 n
+0000853953 00000 n
+0000854018 00000 n
+0000854083 00000 n
+0000854148 00000 n
+0000854212 00000 n
+0000860285 00000 n
+0000856788 00000 n
+0000854466 00000 n
+0000856913 00000 n
+0000856977 00000 n
+0000857042 00000 n
+0000857106 00000 n
+0000857171 00000 n
+0000857236 00000 n
+0000857301 00000 n
+0000857366 00000 n
+0000857431 00000 n
+0000857496 00000 n
+0000857561 00000 n
+0000857626 00000 n
+0000857691 00000 n
+0000857754 00000 n
+0000857819 00000 n
+0000857884 00000 n
+0000857949 00000 n
+0000858014 00000 n
+0000858079 00000 n
+0000858144 00000 n
+0000858209 00000 n
+0000858274 00000 n
+0000858339 00000 n
+0000858404 00000 n
+0000858469 00000 n
+0000858534 00000 n
+0000858599 00000 n
+0000858664 00000 n
+0000858728 00000 n
+0000858793 00000 n
+0000858858 00000 n
+0000858923 00000 n
+0000858988 00000 n
+0000859053 00000 n
+0000859118 00000 n
+0000859183 00000 n
+0000859248 00000 n
+0000859313 00000 n
+0000859378 00000 n
+0000859443 00000 n
+0000859508 00000 n
+0000859573 00000 n
+0000859638 00000 n
+0000859703 00000 n
+0000859768 00000 n
+0000859833 00000 n
+0000859897 00000 n
+0000859962 00000 n
+0000860027 00000 n
+0000860092 00000 n
+0000860157 00000 n
+0000860221 00000 n
+0000865845 00000 n
+0000862998 00000 n
+0000860449 00000 n
+0000863123 00000 n
+0000863187 00000 n
+0000863252 00000 n
+0000863317 00000 n
+0000863382 00000 n
+0000863447 00000 n
+0000863512 00000 n
+0000863577 00000 n
+0000863641 00000 n
+0000863706 00000 n
+0000863771 00000 n
+0000863836 00000 n
+0000863901 00000 n
+0000863965 00000 n
+0000864030 00000 n
+0000864095 00000 n
+0000864160 00000 n
+0000864225 00000 n
+0000864290 00000 n
+0000864355 00000 n
+0000864420 00000 n
+0000864485 00000 n
+0000864550 00000 n
+0000864615 00000 n
+0000864680 00000 n
+0000864745 00000 n
+0000864809 00000 n
+0000864874 00000 n
+0000864939 00000 n
+0000865004 00000 n
+0000865069 00000 n
+0000865133 00000 n
+0000865198 00000 n
+0000865263 00000 n
+0000865328 00000 n
+0000865393 00000 n
+0000865458 00000 n
+0000865523 00000 n
+0000865588 00000 n
+0000865653 00000 n
+0000865717 00000 n
+0000865781 00000 n
+0000871819 00000 n
+0000867933 00000 n
+0000866022 00000 n
+0000868058 00000 n
+0000868122 00000 n
+0000868187 00000 n
+0000868251 00000 n
+0000868316 00000 n
+0000868381 00000 n
+0000868446 00000 n
+0000868511 00000 n
+0000868576 00000 n
+0000868641 00000 n
+0000868706 00000 n
+0000868771 00000 n
+0000868835 00000 n
+0000868900 00000 n
+0000868965 00000 n
+0000869030 00000 n
+0000869095 00000 n
+0000869160 00000 n
+0000869225 00000 n
+0000869290 00000 n
+0000869355 00000 n
+0000869420 00000 n
+0000869485 00000 n
+0000869550 00000 n
+0000869615 00000 n
+0000869680 00000 n
+0000869745 00000 n
+0000869810 00000 n
+0000869875 00000 n
+0000869940 00000 n
+0000870005 00000 n
+0000870070 00000 n
+0000870134 00000 n
+0000870199 00000 n
+0000870264 00000 n
+0000870329 00000 n
+0000870394 00000 n
+0000870459 00000 n
+0000870524 00000 n
+0000870589 00000 n
+0000870654 00000 n
+0000870719 00000 n
+0000870783 00000 n
+0000870848 00000 n
+0000870913 00000 n
+0000870978 00000 n
+0000871043 00000 n
+0000871107 00000 n
+0000871172 00000 n
+0000871237 00000 n
+0000871302 00000 n
+0000871367 00000 n
+0000871432 00000 n
+0000871497 00000 n
+0000871562 00000 n
+0000871627 00000 n
+0000871691 00000 n
+0000871755 00000 n
+0000877523 00000 n
+0000873767 00000 n
+0000871996 00000 n
+0000873892 00000 n
+0000873956 00000 n
+0000874021 00000 n
+0000874085 00000 n
+0000874150 00000 n
+0000874215 00000 n
+0000874280 00000 n
+0000874345 00000 n
+0000874410 00000 n
+0000874475 00000 n
+0000874540 00000 n
+0000874605 00000 n
+0000874669 00000 n
+0000874734 00000 n
+0000874799 00000 n
+0000874864 00000 n
+0000874929 00000 n
+0000874994 00000 n
+0000875059 00000 n
+0000875124 00000 n
+0000875189 00000 n
+0000875254 00000 n
+0000875319 00000 n
+0000875384 00000 n
+0000875449 00000 n
+0000875514 00000 n
+0000875579 00000 n
+0000875644 00000 n
+0000875709 00000 n
+0000875774 00000 n
+0000875839 00000 n
+0000875904 00000 n
+0000875969 00000 n
+0000876034 00000 n
+0000876098 00000 n
+0000876163 00000 n
+0000876228 00000 n
+0000876293 00000 n
+0000876358 00000 n
+0000876423 00000 n
+0000876488 00000 n
+0000876553 00000 n
+0000876618 00000 n
+0000876681 00000 n
+0000876746 00000 n
+0000876811 00000 n
+0000876876 00000 n
+0000876941 00000 n
+0000877006 00000 n
+0000877071 00000 n
+0000877136 00000 n
+0000877201 00000 n
+0000877266 00000 n
+0000877330 00000 n
+0000877395 00000 n
+0000877459 00000 n
+0000882355 00000 n
+0000880031 00000 n
+0000877700 00000 n
+0000880156 00000 n
+0000880220 00000 n
+0000880285 00000 n
+0000880350 00000 n
+0000880476 00000 n
+0000880541 00000 n
+0000880606 00000 n
+0000880671 00000 n
+0000880736 00000 n
+0000880799 00000 n
+0000880864 00000 n
+0000880929 00000 n
+0000880994 00000 n
+0000881059 00000 n
+0000881124 00000 n
+0000881189 00000 n
+0000881254 00000 n
+0000881319 00000 n
+0000881383 00000 n
+0000881448 00000 n
+0000881513 00000 n
+0000881578 00000 n
+0000881643 00000 n
+0000881708 00000 n
+0000881773 00000 n
+0000881838 00000 n
+0000881903 00000 n
+0000881968 00000 n
+0000882033 00000 n
+0000882097 00000 n
+0000882162 00000 n
+0000882227 00000 n
+0000882291 00000 n
+0000888052 00000 n
+0000884426 00000 n
+0000882545 00000 n
+0000884551 00000 n
+0000884615 00000 n
+0000884680 00000 n
+0000884745 00000 n
+0000884810 00000 n
+0000884875 00000 n
+0000884940 00000 n
+0000885005 00000 n
+0000885069 00000 n
+0000885134 00000 n
+0000885199 00000 n
+0000885264 00000 n
+0000885329 00000 n
+0000885394 00000 n
+0000885459 00000 n
+0000885524 00000 n
+0000885589 00000 n
+0000885653 00000 n
+0000885718 00000 n
+0000885783 00000 n
+0000885847 00000 n
+0000885912 00000 n
+0000885977 00000 n
+0000886042 00000 n
+0000886107 00000 n
+0000886172 00000 n
+0000886237 00000 n
+0000886302 00000 n
+0000886367 00000 n
+0000886431 00000 n
+0000886496 00000 n
+0000886561 00000 n
+0000886626 00000 n
+0000886691 00000 n
+0000886756 00000 n
+0000886821 00000 n
+0000886886 00000 n
+0000886951 00000 n
+0000887016 00000 n
+0000887081 00000 n
+0000887146 00000 n
+0000887211 00000 n
+0000887276 00000 n
+0000887340 00000 n
+0000887405 00000 n
+0000887470 00000 n
+0000887535 00000 n
+0000887600 00000 n
+0000887665 00000 n
+0000887730 00000 n
+0000887795 00000 n
+0000887860 00000 n
+0000887924 00000 n
+0000887988 00000 n
+0000893234 00000 n
+0000890128 00000 n
+0000888229 00000 n
+0000890253 00000 n
+0000890317 00000 n
+0000890382 00000 n
+0000890447 00000 n
+0000890512 00000 n
+0000890577 00000 n
+0000890642 00000 n
+0000890707 00000 n
+0000890772 00000 n
+0000890837 00000 n
+0000890902 00000 n
+0000890967 00000 n
+0000891032 00000 n
+0000891097 00000 n
+0000891162 00000 n
+0000891227 00000 n
+0000891292 00000 n
+0000891356 00000 n
+0000891420 00000 n
+0000891485 00000 n
+0000891550 00000 n
+0000891615 00000 n
+0000891680 00000 n
+0000891745 00000 n
+0000891810 00000 n
+0000891875 00000 n
+0000891940 00000 n
+0000892004 00000 n
+0000892069 00000 n
+0000892134 00000 n
+0000892199 00000 n
+0000892327 00000 n
+0000892392 00000 n
+0000892456 00000 n
+0000892521 00000 n
+0000892586 00000 n
+0000892651 00000 n
+0000892716 00000 n
+0000892781 00000 n
+0000892846 00000 n
+0000892911 00000 n
+0000892976 00000 n
+0000893041 00000 n
+0000893106 00000 n
+0000893170 00000 n
+0000898738 00000 n
+0000895696 00000 n
+0000893411 00000 n
+0000895821 00000 n
+0000895885 00000 n
+0000895950 00000 n
+0000896015 00000 n
+0000896080 00000 n
+0000896145 00000 n
+0000896210 00000 n
+0000896275 00000 n
+0000896340 00000 n
+0000896405 00000 n
+0000896469 00000 n
+0000896534 00000 n
+0000896599 00000 n
+0000896664 00000 n
+0000896729 00000 n
+0000896794 00000 n
+0000896859 00000 n
+0000896924 00000 n
+0000896989 00000 n
+0000897054 00000 n
+0000897119 00000 n
+0000897184 00000 n
+0000897249 00000 n
+0000897314 00000 n
+0000897379 00000 n
+0000897444 00000 n
+0000897509 00000 n
+0000897573 00000 n
+0000897638 00000 n
+0000897703 00000 n
+0000897768 00000 n
+0000897833 00000 n
+0000897898 00000 n
+0000897963 00000 n
+0000898091 00000 n
+0000898156 00000 n
+0000898221 00000 n
+0000898286 00000 n
+0000898350 00000 n
+0000898415 00000 n
+0000898480 00000 n
+0000898545 00000 n
+0000898610 00000 n
+0000898674 00000 n
+0000904257 00000 n
+0000901863 00000 n
+0000898928 00000 n
+0000901988 00000 n
+0000902052 00000 n
+0000902117 00000 n
+0000902182 00000 n
+0000902247 00000 n
+0000902312 00000 n
+0000902377 00000 n
+0000902442 00000 n
+0000902506 00000 n
+0000902571 00000 n
+0000902636 00000 n
+0000902701 00000 n
+0000902766 00000 n
+0000902831 00000 n
+0000902896 00000 n
+0000902961 00000 n
+0000903026 00000 n
+0000903089 00000 n
+0000903154 00000 n
+0000903219 00000 n
+0000903283 00000 n
+0000903348 00000 n
+0000903413 00000 n
+0000903478 00000 n
+0000903543 00000 n
+0000903608 00000 n
+0000903673 00000 n
+0000903738 00000 n
+0000903803 00000 n
+0000903868 00000 n
+0000903933 00000 n
+0000903998 00000 n
+0000904063 00000 n
+0000904128 00000 n
+0000904192 00000 n
+0001893976 00000 n
+0000907035 00000 n
+0000910046 00000 n
+0000906862 00000 n
+0000904447 00000 n
+0000907193 00000 n
+0000907257 00000 n
+0000907322 00000 n
+0000907386 00000 n
+0000907451 00000 n
+0000907516 00000 n
+0000907581 00000 n
+0000907646 00000 n
+0000907711 00000 n
+0000907776 00000 n
+0000907841 00000 n
+0000907906 00000 n
+0000907970 00000 n
+0000908035 00000 n
+0000908100 00000 n
+0000908165 00000 n
+0000908230 00000 n
+0000908295 00000 n
+0000908360 00000 n
+0000908424 00000 n
+0000908489 00000 n
+0000908554 00000 n
+0000908619 00000 n
+0000908684 00000 n
+0000908749 00000 n
+0000908814 00000 n
+0000908879 00000 n
+0000908944 00000 n
+0000909009 00000 n
+0000909074 00000 n
+0000909139 00000 n
+0000909204 00000 n
+0000909269 00000 n
+0000909334 00000 n
+0000909398 00000 n
+0000909463 00000 n
+0000909528 00000 n
+0000909593 00000 n
+0000909658 00000 n
+0000909723 00000 n
+0000909788 00000 n
+0000909853 00000 n
+0000909918 00000 n
+0000909982 00000 n
+0000907004 00000 n
+0000916071 00000 n
+0000912314 00000 n
+0000910275 00000 n
+0000912439 00000 n
+0000912503 00000 n
+0000912568 00000 n
+0000912633 00000 n
+0000912698 00000 n
+0000912763 00000 n
+0000912828 00000 n
+0000912893 00000 n
+0000912958 00000 n
+0000913023 00000 n
+0000913087 00000 n
+0000913152 00000 n
+0000913217 00000 n
+0000913282 00000 n
+0000913346 00000 n
+0000913411 00000 n
+0000913476 00000 n
+0000913541 00000 n
+0000913606 00000 n
+0000913671 00000 n
+0000913736 00000 n
+0000913801 00000 n
+0000913866 00000 n
+0000913931 00000 n
+0000913996 00000 n
+0000914060 00000 n
+0000914125 00000 n
+0000914190 00000 n
+0000914255 00000 n
+0000914320 00000 n
+0000914385 00000 n
+0000914449 00000 n
+0000914514 00000 n
+0000914579 00000 n
+0000914644 00000 n
+0000914709 00000 n
+0000914774 00000 n
+0000914839 00000 n
+0000914904 00000 n
+0000914969 00000 n
+0000915034 00000 n
+0000915099 00000 n
+0000915164 00000 n
+0000915229 00000 n
+0000915294 00000 n
+0000915359 00000 n
+0000915424 00000 n
+0000915489 00000 n
+0000915554 00000 n
+0000915619 00000 n
+0000915683 00000 n
+0000915748 00000 n
+0000915813 00000 n
+0000915878 00000 n
+0000915943 00000 n
+0000916007 00000 n
+0000921851 00000 n
+0000918871 00000 n
+0000916248 00000 n
+0000918996 00000 n
+0000919060 00000 n
+0000919125 00000 n
+0000919190 00000 n
+0000919255 00000 n
+0000919320 00000 n
+0000919385 00000 n
+0000919450 00000 n
+0000919515 00000 n
+0000919580 00000 n
+0000919645 00000 n
+0000919709 00000 n
+0000919774 00000 n
+0000919839 00000 n
+0000919904 00000 n
+0000919969 00000 n
+0000920034 00000 n
+0000920099 00000 n
+0000920164 00000 n
+0000920229 00000 n
+0000920294 00000 n
+0000920359 00000 n
+0000920424 00000 n
+0000920489 00000 n
+0000920554 00000 n
+0000920619 00000 n
+0000920684 00000 n
+0000920749 00000 n
+0000920814 00000 n
+0000920879 00000 n
+0000920944 00000 n
+0000921009 00000 n
+0000921074 00000 n
+0000921139 00000 n
+0000921204 00000 n
+0000921269 00000 n
+0000921334 00000 n
+0000921399 00000 n
+0000921464 00000 n
+0000921529 00000 n
+0000921594 00000 n
+0000921659 00000 n
+0000921724 00000 n
+0000921788 00000 n
+0000927380 00000 n
+0000923884 00000 n
+0000922041 00000 n
+0000924009 00000 n
+0000924073 00000 n
+0000924138 00000 n
+0000924203 00000 n
+0000924268 00000 n
+0000924333 00000 n
+0000924398 00000 n
+0000924463 00000 n
+0000924528 00000 n
+0000924593 00000 n
+0000924657 00000 n
+0000924785 00000 n
+0000924850 00000 n
+0000924915 00000 n
+0000924980 00000 n
+0000925045 00000 n
+0000925110 00000 n
+0000925174 00000 n
+0000925239 00000 n
+0000925304 00000 n
+0000925369 00000 n
+0000925434 00000 n
+0000925499 00000 n
+0000925564 00000 n
+0000925629 00000 n
+0000925694 00000 n
+0000925758 00000 n
+0000925823 00000 n
+0000925888 00000 n
+0000925953 00000 n
+0000926018 00000 n
+0000926083 00000 n
+0000926148 00000 n
+0000926213 00000 n
+0000926278 00000 n
+0000926343 00000 n
+0000926408 00000 n
+0000926473 00000 n
+0000926538 00000 n
+0000926603 00000 n
+0000926668 00000 n
+0000926733 00000 n
+0000926798 00000 n
+0000926863 00000 n
+0000926928 00000 n
+0000926992 00000 n
+0000927057 00000 n
+0000927122 00000 n
+0000927187 00000 n
+0000927252 00000 n
+0000927316 00000 n
+0000932932 00000 n
+0000930603 00000 n
+0000927557 00000 n
+0000930728 00000 n
+0000930792 00000 n
+0000930857 00000 n
+0000930922 00000 n
+0000930986 00000 n
+0000931051 00000 n
+0000931116 00000 n
+0000931181 00000 n
+0000931246 00000 n
+0000931311 00000 n
+0000931376 00000 n
+0000931441 00000 n
+0000931506 00000 n
+0000931570 00000 n
+0000931635 00000 n
+0000931700 00000 n
+0000931765 00000 n
+0000931830 00000 n
+0000931894 00000 n
+0000931959 00000 n
+0000932024 00000 n
+0000932088 00000 n
+0000932153 00000 n
+0000932218 00000 n
+0000932283 00000 n
+0000932348 00000 n
+0000932413 00000 n
+0000932478 00000 n
+0000932543 00000 n
+0000932608 00000 n
+0000932673 00000 n
+0000932738 00000 n
+0000932802 00000 n
+0000932867 00000 n
+0000938786 00000 n
+0000936455 00000 n
+0000933148 00000 n
+0000936580 00000 n
+0000936644 00000 n
+0000936709 00000 n
+0000936774 00000 n
+0000936839 00000 n
+0000936904 00000 n
+0000936969 00000 n
+0000937034 00000 n
+0000937099 00000 n
+0000937164 00000 n
+0000937229 00000 n
+0000937294 00000 n
+0000937359 00000 n
+0000937424 00000 n
+0000937489 00000 n
+0000937554 00000 n
+0000937618 00000 n
+0000937683 00000 n
+0000937748 00000 n
+0000937813 00000 n
+0000937878 00000 n
+0000937943 00000 n
+0000938008 00000 n
+0000938073 00000 n
+0000938138 00000 n
+0000938203 00000 n
+0000938268 00000 n
+0000938332 00000 n
+0000938397 00000 n
+0000938462 00000 n
+0000938527 00000 n
+0000938592 00000 n
+0000938657 00000 n
+0000938722 00000 n
+0000943663 00000 n
+0000941721 00000 n
+0000939002 00000 n
+0000941846 00000 n
+0000941910 00000 n
+0000941975 00000 n
+0000942040 00000 n
+0000942105 00000 n
+0000942170 00000 n
+0000942235 00000 n
+0000942300 00000 n
+0000942365 00000 n
+0000942430 00000 n
+0000942494 00000 n
+0000942559 00000 n
+0000942624 00000 n
+0000942689 00000 n
+0000942754 00000 n
+0000942819 00000 n
+0000942884 00000 n
+0000942949 00000 n
+0000943014 00000 n
+0000943079 00000 n
+0000943144 00000 n
+0000943209 00000 n
+0000943274 00000 n
+0000943339 00000 n
+0000943404 00000 n
+0000943469 00000 n
+0000943534 00000 n
+0000943598 00000 n
+0000949417 00000 n
+0000946312 00000 n
+0000943853 00000 n
+0000946437 00000 n
+0000946501 00000 n
+0000946566 00000 n
+0000946631 00000 n
+0000946696 00000 n
+0000946761 00000 n
+0000946826 00000 n
+0000946891 00000 n
+0000946956 00000 n
+0000947021 00000 n
+0000947085 00000 n
+0000947150 00000 n
+0000947215 00000 n
+0000947280 00000 n
+0000947343 00000 n
+0000947408 00000 n
+0000947473 00000 n
+0000947538 00000 n
+0000947603 00000 n
+0000947668 00000 n
+0000947733 00000 n
+0000947798 00000 n
+0000947863 00000 n
+0000947927 00000 n
+0000947992 00000 n
+0000948057 00000 n
+0000948121 00000 n
+0000948186 00000 n
+0000948251 00000 n
+0000948316 00000 n
+0000948381 00000 n
+0000948446 00000 n
+0000948511 00000 n
+0000948576 00000 n
+0000948641 00000 n
+0000948705 00000 n
+0000948770 00000 n
+0000948835 00000 n
+0000948900 00000 n
+0000948965 00000 n
+0000949030 00000 n
+0000949095 00000 n
+0000949160 00000 n
+0000949225 00000 n
+0000949290 00000 n
+0000949354 00000 n
+0000955004 00000 n
+0000951765 00000 n
+0000949620 00000 n
+0000951890 00000 n
+0000951954 00000 n
+0000952019 00000 n
+0000952084 00000 n
+0000952149 00000 n
+0000952214 00000 n
+0000952279 00000 n
+0000952344 00000 n
+0000952408 00000 n
+0000952473 00000 n
+0000952538 00000 n
+0000952603 00000 n
+0000952668 00000 n
+0000952733 00000 n
+0000952798 00000 n
+0000952863 00000 n
+0000952928 00000 n
+0000952993 00000 n
+0000953058 00000 n
+0000953123 00000 n
+0000953188 00000 n
+0000953253 00000 n
+0000953317 00000 n
+0000953382 00000 n
+0000953447 00000 n
+0000953512 00000 n
+0000953577 00000 n
+0000953642 00000 n
+0000953707 00000 n
+0000953772 00000 n
+0000953837 00000 n
+0000953902 00000 n
+0000953967 00000 n
+0000954032 00000 n
+0000954097 00000 n
+0000954162 00000 n
+0000954227 00000 n
+0000954292 00000 n
+0000954357 00000 n
+0000954422 00000 n
+0000954487 00000 n
+0000954552 00000 n
+0000954616 00000 n
+0000954681 00000 n
+0000954746 00000 n
+0000954811 00000 n
+0000954876 00000 n
+0000954940 00000 n
+0000960691 00000 n
+0000957192 00000 n
+0000955168 00000 n
+0000957317 00000 n
+0000957381 00000 n
+0000957446 00000 n
+0000957511 00000 n
+0000957576 00000 n
+0000957641 00000 n
+0000957706 00000 n
+0000957771 00000 n
+0000957836 00000 n
+0000957901 00000 n
+0000957966 00000 n
+0000958031 00000 n
+0000958096 00000 n
+0000958161 00000 n
+0000958226 00000 n
+0000958291 00000 n
+0000958356 00000 n
+0000958421 00000 n
+0000958486 00000 n
+0000958551 00000 n
+0000958615 00000 n
+0000958680 00000 n
+0000958745 00000 n
+0000958810 00000 n
+0000958875 00000 n
+0000958940 00000 n
+0000959005 00000 n
+0000959070 00000 n
+0000959135 00000 n
+0000959200 00000 n
+0000959265 00000 n
+0000959330 00000 n
+0000959395 00000 n
+0000959460 00000 n
+0000959524 00000 n
+0000959589 00000 n
+0000959654 00000 n
+0000959719 00000 n
+0000959784 00000 n
+0000959849 00000 n
+0000959914 00000 n
+0000959979 00000 n
+0000960044 00000 n
+0000960109 00000 n
+0000960174 00000 n
+0000960239 00000 n
+0000960304 00000 n
+0000960369 00000 n
+0000960433 00000 n
+0000960498 00000 n
+0000960563 00000 n
+0000960627 00000 n
+0001894141 00000 n
+0000966596 00000 n
+0000963422 00000 n
+0000960868 00000 n
+0000963547 00000 n
+0000963611 00000 n
+0000963676 00000 n
+0000963741 00000 n
+0000963806 00000 n
+0000963871 00000 n
+0000963936 00000 n
+0000964001 00000 n
+0000964066 00000 n
+0000964131 00000 n
+0000964195 00000 n
+0000964260 00000 n
+0000964325 00000 n
+0000964390 00000 n
+0000964455 00000 n
+0000964520 00000 n
+0000964585 00000 n
+0000964650 00000 n
+0000964715 00000 n
+0000964779 00000 n
+0000964844 00000 n
+0000964909 00000 n
+0000964974 00000 n
+0000965039 00000 n
+0000965104 00000 n
+0000965169 00000 n
+0000965234 00000 n
+0000965298 00000 n
+0000965363 00000 n
+0000965428 00000 n
+0000965493 00000 n
+0000965558 00000 n
+0000965623 00000 n
+0000965688 00000 n
+0000965753 00000 n
+0000965818 00000 n
+0000965883 00000 n
+0000965948 00000 n
+0000966013 00000 n
+0000966078 00000 n
+0000966143 00000 n
+0000966208 00000 n
+0000966272 00000 n
+0000966337 00000 n
+0000966402 00000 n
+0000966467 00000 n
+0000966532 00000 n
+0000972145 00000 n
+0000968714 00000 n
+0000966799 00000 n
+0000968839 00000 n
+0000968903 00000 n
+0000968968 00000 n
+0000969033 00000 n
+0000969097 00000 n
+0000969162 00000 n
+0000969227 00000 n
+0000969292 00000 n
+0000969357 00000 n
+0000969422 00000 n
+0000969487 00000 n
+0000969552 00000 n
+0000969617 00000 n
+0000969681 00000 n
+0000969746 00000 n
+0000969811 00000 n
+0000969876 00000 n
+0000969941 00000 n
+0000970006 00000 n
+0000970071 00000 n
+0000970136 00000 n
+0000970201 00000 n
+0000970264 00000 n
+0000970329 00000 n
+0000970394 00000 n
+0000970458 00000 n
+0000970523 00000 n
+0000970588 00000 n
+0000970653 00000 n
+0000970718 00000 n
+0000970783 00000 n
+0000970848 00000 n
+0000970913 00000 n
+0000970978 00000 n
+0000971043 00000 n
+0000971108 00000 n
+0000971173 00000 n
+0000971238 00000 n
+0000971302 00000 n
+0000971367 00000 n
+0000971432 00000 n
+0000971497 00000 n
+0000971562 00000 n
+0000971627 00000 n
+0000971692 00000 n
+0000971757 00000 n
+0000971822 00000 n
+0000971887 00000 n
+0000971952 00000 n
+0000972017 00000 n
+0000972081 00000 n
+0000978336 00000 n
+0000974126 00000 n
+0000972335 00000 n
+0000974251 00000 n
+0000974315 00000 n
+0000974380 00000 n
+0000974445 00000 n
+0000974510 00000 n
+0000974575 00000 n
+0000974640 00000 n
+0000974705 00000 n
+0000974770 00000 n
+0000974835 00000 n
+0000974899 00000 n
+0000974964 00000 n
+0000975029 00000 n
+0000975094 00000 n
+0000975159 00000 n
+0000975224 00000 n
+0000975289 00000 n
+0000975354 00000 n
+0000975419 00000 n
+0000975483 00000 n
+0000975548 00000 n
+0000975613 00000 n
+0000975678 00000 n
+0000975743 00000 n
+0000975808 00000 n
+0000975873 00000 n
+0000975938 00000 n
+0000976003 00000 n
+0000976066 00000 n
+0000976131 00000 n
+0000976196 00000 n
+0000976261 00000 n
+0000976326 00000 n
+0000976391 00000 n
+0000976456 00000 n
+0000976521 00000 n
+0000976586 00000 n
+0000976651 00000 n
+0000976716 00000 n
+0000976781 00000 n
+0000976846 00000 n
+0000976911 00000 n
+0000976975 00000 n
+0000977040 00000 n
+0000977105 00000 n
+0000977170 00000 n
+0000977235 00000 n
+0000977300 00000 n
+0000977365 00000 n
+0000977430 00000 n
+0000977495 00000 n
+0000977559 00000 n
+0000977624 00000 n
+0000977689 00000 n
+0000977754 00000 n
+0000977819 00000 n
+0000977884 00000 n
+0000977949 00000 n
+0000978014 00000 n
+0000978079 00000 n
+0000978143 00000 n
+0000978208 00000 n
+0000978272 00000 n
+0000984244 00000 n
+0000980942 00000 n
+0000978500 00000 n
+0000981067 00000 n
+0000981131 00000 n
+0000981196 00000 n
+0000981261 00000 n
+0000981326 00000 n
+0000981391 00000 n
+0000981456 00000 n
+0000981521 00000 n
+0000981585 00000 n
+0000981650 00000 n
+0000981715 00000 n
+0000981780 00000 n
+0000981845 00000 n
+0000981910 00000 n
+0000981975 00000 n
+0000982040 00000 n
+0000982105 00000 n
+0000982169 00000 n
+0000982234 00000 n
+0000982299 00000 n
+0000982364 00000 n
+0000982429 00000 n
+0000982494 00000 n
+0000982559 00000 n
+0000982624 00000 n
+0000982689 00000 n
+0000982754 00000 n
+0000982818 00000 n
+0000982883 00000 n
+0000982948 00000 n
+0000983013 00000 n
+0000983078 00000 n
+0000983143 00000 n
+0000983208 00000 n
+0000983273 00000 n
+0000983338 00000 n
+0000983402 00000 n
+0000983467 00000 n
+0000983532 00000 n
+0000983597 00000 n
+0000983662 00000 n
+0000983727 00000 n
+0000983792 00000 n
+0000983857 00000 n
+0000983922 00000 n
+0000983986 00000 n
+0000984051 00000 n
+0000984116 00000 n
+0000984180 00000 n
+0000989840 00000 n
+0000986601 00000 n
+0000984421 00000 n
+0000986726 00000 n
+0000986790 00000 n
+0000986855 00000 n
+0000986920 00000 n
+0000986985 00000 n
+0000987049 00000 n
+0000987114 00000 n
+0000987178 00000 n
+0000987243 00000 n
+0000987308 00000 n
+0000987373 00000 n
+0000987438 00000 n
+0000987503 00000 n
+0000987568 00000 n
+0000987633 00000 n
+0000987698 00000 n
+0000987763 00000 n
+0000987828 00000 n
+0000987893 00000 n
+0000987958 00000 n
+0000988023 00000 n
+0000988088 00000 n
+0000988153 00000 n
+0000988218 00000 n
+0000988283 00000 n
+0000988347 00000 n
+0000988412 00000 n
+0000988477 00000 n
+0000988542 00000 n
+0000988607 00000 n
+0000988672 00000 n
+0000988737 00000 n
+0000988802 00000 n
+0000988867 00000 n
+0000988931 00000 n
+0000988996 00000 n
+0000989061 00000 n
+0000989126 00000 n
+0000989191 00000 n
+0000989256 00000 n
+0000989321 00000 n
+0000989386 00000 n
+0000989451 00000 n
+0000989516 00000 n
+0000989581 00000 n
+0000989646 00000 n
+0000989711 00000 n
+0000989776 00000 n
+0000995631 00000 n
+0000991549 00000 n
+0000990017 00000 n
+0000991674 00000 n
+0000991738 00000 n
+0000991803 00000 n
+0000991868 00000 n
+0000991933 00000 n
+0000991998 00000 n
+0000992063 00000 n
+0000992128 00000 n
+0000992193 00000 n
+0000992257 00000 n
+0000992322 00000 n
+0000992387 00000 n
+0000992452 00000 n
+0000992517 00000 n
+0000992582 00000 n
+0000992647 00000 n
+0000992712 00000 n
+0000992777 00000 n
+0000992841 00000 n
+0000992906 00000 n
+0000992971 00000 n
+0000993036 00000 n
+0000993100 00000 n
+0000993165 00000 n
+0000993230 00000 n
+0000993295 00000 n
+0000993360 00000 n
+0000993425 00000 n
+0000993490 00000 n
+0000993555 00000 n
+0000993620 00000 n
+0000993685 00000 n
+0000993750 00000 n
+0000993815 00000 n
+0000993880 00000 n
+0000993945 00000 n
+0000994010 00000 n
+0000994075 00000 n
+0000994140 00000 n
+0000994205 00000 n
+0000994270 00000 n
+0000994334 00000 n
+0000994399 00000 n
+0000994464 00000 n
+0000994529 00000 n
+0000994594 00000 n
+0000994659 00000 n
+0000994724 00000 n
+0000994789 00000 n
+0000994854 00000 n
+0000994919 00000 n
+0000994984 00000 n
+0000995049 00000 n
+0000995114 00000 n
+0000995178 00000 n
+0000995243 00000 n
+0000995308 00000 n
+0000995373 00000 n
+0000995438 00000 n
+0000995503 00000 n
+0000995567 00000 n
+0001001145 00000 n
+0000998684 00000 n
+0000995795 00000 n
+0000998809 00000 n
+0000998873 00000 n
+0000998938 00000 n
+0000999003 00000 n
+0000999068 00000 n
+0000999133 00000 n
+0000999198 00000 n
+0000999263 00000 n
+0000999328 00000 n
+0000999393 00000 n
+0000999457 00000 n
+0000999522 00000 n
+0000999587 00000 n
+0000999652 00000 n
+0000999717 00000 n
+0000999782 00000 n
+0000999847 00000 n
+0000999911 00000 n
+0000999976 00000 n
+0001000041 00000 n
+0001000106 00000 n
+0001000171 00000 n
+0001000236 00000 n
+0001000301 00000 n
+0001000366 00000 n
+0001000431 00000 n
+0001000496 00000 n
+0001000561 00000 n
+0001000626 00000 n
+0001000690 00000 n
+0001000755 00000 n
+0001000820 00000 n
+0001000885 00000 n
+0001000950 00000 n
+0001001015 00000 n
+0001001080 00000 n
+0001007078 00000 n
+0001003840 00000 n
+0001001322 00000 n
+0001003965 00000 n
+0001004029 00000 n
+0001004094 00000 n
+0001004159 00000 n
+0001004224 00000 n
+0001004289 00000 n
+0001004353 00000 n
+0001004418 00000 n
+0001004483 00000 n
+0001004548 00000 n
+0001004613 00000 n
+0001004678 00000 n
+0001004743 00000 n
+0001004807 00000 n
+0001004872 00000 n
+0001004937 00000 n
+0001005002 00000 n
+0001005067 00000 n
+0001005132 00000 n
+0001005197 00000 n
+0001005262 00000 n
+0001005327 00000 n
+0001005392 00000 n
+0001005457 00000 n
+0001005522 00000 n
+0001005587 00000 n
+0001005652 00000 n
+0001005717 00000 n
+0001005782 00000 n
+0001005847 00000 n
+0001005911 00000 n
+0001005976 00000 n
+0001006041 00000 n
+0001006106 00000 n
+0001006171 00000 n
+0001006236 00000 n
+0001006301 00000 n
+0001006366 00000 n
+0001006431 00000 n
+0001006495 00000 n
+0001006560 00000 n
+0001006625 00000 n
+0001006690 00000 n
+0001006755 00000 n
+0001006820 00000 n
+0001006885 00000 n
+0001006950 00000 n
+0001007014 00000 n
+0001013174 00000 n
+0001008964 00000 n
+0001007268 00000 n
+0001009089 00000 n
+0001009153 00000 n
+0001009218 00000 n
+0001009283 00000 n
+0001009348 00000 n
+0001009413 00000 n
+0001009478 00000 n
+0001009543 00000 n
+0001009608 00000 n
+0001009673 00000 n
+0001009737 00000 n
+0001009802 00000 n
+0001009867 00000 n
+0001009932 00000 n
+0001009995 00000 n
+0001010060 00000 n
+0001010125 00000 n
+0001010190 00000 n
+0001010255 00000 n
+0001010320 00000 n
+0001010385 00000 n
+0001010450 00000 n
+0001010515 00000 n
+0001010580 00000 n
+0001010645 00000 n
+0001010710 00000 n
+0001010775 00000 n
+0001010840 00000 n
+0001010905 00000 n
+0001010970 00000 n
+0001011035 00000 n
+0001011100 00000 n
+0001011165 00000 n
+0001011229 00000 n
+0001011294 00000 n
+0001011359 00000 n
+0001011424 00000 n
+0001011489 00000 n
+0001011554 00000 n
+0001011619 00000 n
+0001011684 00000 n
+0001011749 00000 n
+0001011813 00000 n
+0001011878 00000 n
+0001011943 00000 n
+0001012008 00000 n
+0001012073 00000 n
+0001012138 00000 n
+0001012203 00000 n
+0001012268 00000 n
+0001012333 00000 n
+0001012397 00000 n
+0001012462 00000 n
+0001012527 00000 n
+0001012592 00000 n
+0001012657 00000 n
+0001012722 00000 n
+0001012787 00000 n
+0001012852 00000 n
+0001012917 00000 n
+0001012981 00000 n
+0001013046 00000 n
+0001013110 00000 n
+0001019209 00000 n
+0001015130 00000 n
+0001013325 00000 n
+0001015255 00000 n
+0001015319 00000 n
+0001015384 00000 n
+0001015449 00000 n
+0001015514 00000 n
+0001015579 00000 n
+0001015644 00000 n
+0001015709 00000 n
+0001015774 00000 n
+0001015839 00000 n
+0001015903 00000 n
+0001015968 00000 n
+0001016033 00000 n
+0001016098 00000 n
+0001016163 00000 n
+0001016228 00000 n
+0001016293 00000 n
+0001016358 00000 n
+0001016423 00000 n
+0001016487 00000 n
+0001016552 00000 n
+0001016617 00000 n
+0001016682 00000 n
+0001016747 00000 n
+0001016812 00000 n
+0001016877 00000 n
+0001016942 00000 n
+0001017007 00000 n
+0001017070 00000 n
+0001017135 00000 n
+0001017200 00000 n
+0001017265 00000 n
+0001017330 00000 n
+0001017394 00000 n
+0001017459 00000 n
+0001017524 00000 n
+0001017589 00000 n
+0001017654 00000 n
+0001017719 00000 n
+0001017784 00000 n
+0001017849 00000 n
+0001017914 00000 n
+0001017979 00000 n
+0001018044 00000 n
+0001018107 00000 n
+0001018172 00000 n
+0001018237 00000 n
+0001018302 00000 n
+0001018367 00000 n
+0001018432 00000 n
+0001018497 00000 n
+0001018562 00000 n
+0001018627 00000 n
+0001018691 00000 n
+0001018756 00000 n
+0001018821 00000 n
+0001018886 00000 n
+0001018951 00000 n
+0001019016 00000 n
+0001019081 00000 n
+0001019145 00000 n
+0001894306 00000 n
+0001024783 00000 n
+0001021287 00000 n
+0001019373 00000 n
+0001021412 00000 n
+0001021476 00000 n
+0001021541 00000 n
+0001021606 00000 n
+0001021671 00000 n
+0001021736 00000 n
+0001021801 00000 n
+0001021866 00000 n
+0001021931 00000 n
+0001021996 00000 n
+0001022061 00000 n
+0001022126 00000 n
+0001022189 00000 n
+0001022254 00000 n
+0001022319 00000 n
+0001022383 00000 n
+0001022448 00000 n
+0001022513 00000 n
+0001022577 00000 n
+0001022642 00000 n
+0001022707 00000 n
+0001022772 00000 n
+0001022837 00000 n
+0001022902 00000 n
+0001022967 00000 n
+0001023032 00000 n
+0001023097 00000 n
+0001023161 00000 n
+0001023226 00000 n
+0001023291 00000 n
+0001023356 00000 n
+0001023421 00000 n
+0001023486 00000 n
+0001023551 00000 n
+0001023616 00000 n
+0001023681 00000 n
+0001023746 00000 n
+0001023811 00000 n
+0001023876 00000 n
+0001023941 00000 n
+0001024006 00000 n
+0001024071 00000 n
+0001024136 00000 n
+0001024201 00000 n
+0001024266 00000 n
+0001024331 00000 n
+0001024395 00000 n
+0001024460 00000 n
+0001024525 00000 n
+0001024590 00000 n
+0001024655 00000 n
+0001024719 00000 n
+0001030648 00000 n
+0001026696 00000 n
+0001024960 00000 n
+0001026821 00000 n
+0001026885 00000 n
+0001026950 00000 n
+0001027015 00000 n
+0001027080 00000 n
+0001027145 00000 n
+0001027210 00000 n
+0001027275 00000 n
+0001027340 00000 n
+0001027405 00000 n
+0001027469 00000 n
+0001027534 00000 n
+0001027599 00000 n
+0001027664 00000 n
+0001027729 00000 n
+0001027794 00000 n
+0001027859 00000 n
+0001027924 00000 n
+0001027989 00000 n
+0001028054 00000 n
+0001028119 00000 n
+0001028184 00000 n
+0001028248 00000 n
+0001028313 00000 n
+0001028378 00000 n
+0001028443 00000 n
+0001028508 00000 n
+0001028573 00000 n
+0001028638 00000 n
+0001028703 00000 n
+0001028768 00000 n
+0001028832 00000 n
+0001028897 00000 n
+0001028962 00000 n
+0001029026 00000 n
+0001029091 00000 n
+0001029156 00000 n
+0001029221 00000 n
+0001029286 00000 n
+0001029351 00000 n
+0001029416 00000 n
+0001029481 00000 n
+0001029546 00000 n
+0001029611 00000 n
+0001029676 00000 n
+0001029741 00000 n
+0001029806 00000 n
+0001029871 00000 n
+0001029935 00000 n
+0001030000 00000 n
+0001030065 00000 n
+0001030130 00000 n
+0001030195 00000 n
+0001030260 00000 n
+0001030325 00000 n
+0001030390 00000 n
+0001030455 00000 n
+0001030520 00000 n
+0001030584 00000 n
+0001036719 00000 n
+0001032898 00000 n
+0001030825 00000 n
+0001033023 00000 n
+0001033087 00000 n
+0001033152 00000 n
+0001033217 00000 n
+0001033282 00000 n
+0001033347 00000 n
+0001033412 00000 n
+0001033477 00000 n
+0001033542 00000 n
+0001033607 00000 n
+0001033671 00000 n
+0001033736 00000 n
+0001033801 00000 n
+0001033866 00000 n
+0001033931 00000 n
+0001033996 00000 n
+0001034061 00000 n
+0001034125 00000 n
+0001034190 00000 n
+0001034254 00000 n
+0001034319 00000 n
+0001034384 00000 n
+0001034449 00000 n
+0001034514 00000 n
+0001034579 00000 n
+0001034644 00000 n
+0001034709 00000 n
+0001034774 00000 n
+0001034838 00000 n
+0001034903 00000 n
+0001034968 00000 n
+0001035033 00000 n
+0001035097 00000 n
+0001035162 00000 n
+0001035227 00000 n
+0001035292 00000 n
+0001035357 00000 n
+0001035422 00000 n
+0001035487 00000 n
+0001035552 00000 n
+0001035617 00000 n
+0001035682 00000 n
+0001035747 00000 n
+0001035812 00000 n
+0001035877 00000 n
+0001035942 00000 n
+0001036007 00000 n
+0001036072 00000 n
+0001036137 00000 n
+0001036202 00000 n
+0001036267 00000 n
+0001036331 00000 n
+0001036396 00000 n
+0001036461 00000 n
+0001036526 00000 n
+0001036591 00000 n
+0001036655 00000 n
+0001042795 00000 n
+0001038909 00000 n
+0001036896 00000 n
+0001039034 00000 n
+0001039098 00000 n
+0001039163 00000 n
+0001039228 00000 n
+0001039293 00000 n
+0001039358 00000 n
+0001039423 00000 n
+0001039488 00000 n
+0001039553 00000 n
+0001039618 00000 n
+0001039682 00000 n
+0001039747 00000 n
+0001039812 00000 n
+0001039877 00000 n
+0001039942 00000 n
+0001040007 00000 n
+0001040072 00000 n
+0001040137 00000 n
+0001040202 00000 n
+0001040267 00000 n
+0001040332 00000 n
+0001040396 00000 n
+0001040461 00000 n
+0001040526 00000 n
+0001040591 00000 n
+0001040656 00000 n
+0001040721 00000 n
+0001040786 00000 n
+0001040851 00000 n
+0001040915 00000 n
+0001040980 00000 n
+0001041045 00000 n
+0001041110 00000 n
+0001041175 00000 n
+0001041240 00000 n
+0001041305 00000 n
+0001041370 00000 n
+0001041435 00000 n
+0001041499 00000 n
+0001041564 00000 n
+0001041629 00000 n
+0001041694 00000 n
+0001041759 00000 n
+0001041824 00000 n
+0001041889 00000 n
+0001041954 00000 n
+0001042019 00000 n
+0001042083 00000 n
+0001042148 00000 n
+0001042213 00000 n
+0001042278 00000 n
+0001042343 00000 n
+0001042408 00000 n
+0001042473 00000 n
+0001042538 00000 n
+0001042603 00000 n
+0001042667 00000 n
+0001042731 00000 n
+0001048826 00000 n
+0001044939 00000 n
+0001042972 00000 n
+0001045064 00000 n
+0001045128 00000 n
+0001045193 00000 n
+0001045258 00000 n
+0001045323 00000 n
+0001045388 00000 n
+0001045453 00000 n
+0001045518 00000 n
+0001045583 00000 n
+0001045648 00000 n
+0001045712 00000 n
+0001045777 00000 n
+0001045842 00000 n
+0001045907 00000 n
+0001045972 00000 n
+0001046037 00000 n
+0001046102 00000 n
+0001046166 00000 n
+0001046231 00000 n
+0001046296 00000 n
+0001046361 00000 n
+0001046426 00000 n
+0001046491 00000 n
+0001046556 00000 n
+0001046621 00000 n
+0001046686 00000 n
+0001046750 00000 n
+0001046815 00000 n
+0001046880 00000 n
+0001046945 00000 n
+0001047010 00000 n
+0001047075 00000 n
+0001047140 00000 n
+0001047205 00000 n
+0001047270 00000 n
+0001047335 00000 n
+0001047400 00000 n
+0001047464 00000 n
+0001047529 00000 n
+0001047594 00000 n
+0001047659 00000 n
+0001047724 00000 n
+0001047789 00000 n
+0001047854 00000 n
+0001047919 00000 n
+0001047984 00000 n
+0001048049 00000 n
+0001048113 00000 n
+0001048178 00000 n
+0001048243 00000 n
+0001048308 00000 n
+0001048373 00000 n
+0001048438 00000 n
+0001048503 00000 n
+0001048568 00000 n
+0001048633 00000 n
+0001048697 00000 n
+0001048762 00000 n
+0001054647 00000 n
+0001050955 00000 n
+0001049003 00000 n
+0001051080 00000 n
+0001051144 00000 n
+0001051209 00000 n
+0001051274 00000 n
+0001051339 00000 n
+0001051404 00000 n
+0001051469 00000 n
+0001051534 00000 n
+0001051599 00000 n
+0001051664 00000 n
+0001051728 00000 n
+0001051793 00000 n
+0001051858 00000 n
+0001051923 00000 n
+0001051988 00000 n
+0001052053 00000 n
+0001052118 00000 n
+0001052182 00000 n
+0001052247 00000 n
+0001052312 00000 n
+0001052377 00000 n
+0001052442 00000 n
+0001052507 00000 n
+0001052572 00000 n
+0001052637 00000 n
+0001052702 00000 n
+0001052766 00000 n
+0001052831 00000 n
+0001052896 00000 n
+0001052961 00000 n
+0001053026 00000 n
+0001053091 00000 n
+0001053156 00000 n
+0001053221 00000 n
+0001053286 00000 n
+0001053351 00000 n
+0001053416 00000 n
+0001053481 00000 n
+0001053546 00000 n
+0001053611 00000 n
+0001053675 00000 n
+0001053740 00000 n
+0001053805 00000 n
+0001053870 00000 n
+0001053935 00000 n
+0001054000 00000 n
+0001054065 00000 n
+0001054130 00000 n
+0001054195 00000 n
+0001054259 00000 n
+0001054324 00000 n
+0001054389 00000 n
+0001054454 00000 n
+0001054519 00000 n
+0001054583 00000 n
+0001060257 00000 n
+0001057150 00000 n
+0001054811 00000 n
+0001057275 00000 n
+0001057339 00000 n
+0001057404 00000 n
+0001057469 00000 n
+0001057534 00000 n
+0001057599 00000 n
+0001057664 00000 n
+0001057729 00000 n
+0001057793 00000 n
+0001057858 00000 n
+0001057923 00000 n
+0001057988 00000 n
+0001058053 00000 n
+0001058118 00000 n
+0001058183 00000 n
+0001058248 00000 n
+0001058313 00000 n
+0001058377 00000 n
+0001058442 00000 n
+0001058507 00000 n
+0001058572 00000 n
+0001058637 00000 n
+0001058702 00000 n
+0001058767 00000 n
+0001058832 00000 n
+0001058897 00000 n
+0001058962 00000 n
+0001059027 00000 n
+0001059092 00000 n
+0001059157 00000 n
+0001059222 00000 n
+0001059287 00000 n
+0001059352 00000 n
+0001059417 00000 n
+0001059481 00000 n
+0001059546 00000 n
+0001059611 00000 n
+0001059676 00000 n
+0001059804 00000 n
+0001059869 00000 n
+0001059934 00000 n
+0001059999 00000 n
+0001060064 00000 n
+0001060129 00000 n
+0001060193 00000 n
+0001066157 00000 n
+0001062596 00000 n
+0001060447 00000 n
+0001062721 00000 n
+0001062785 00000 n
+0001062850 00000 n
+0001062915 00000 n
+0001062980 00000 n
+0001063045 00000 n
+0001063110 00000 n
+0001063175 00000 n
+0001063240 00000 n
+0001063305 00000 n
+0001063369 00000 n
+0001063434 00000 n
+0001063562 00000 n
+0001063627 00000 n
+0001063692 00000 n
+0001063757 00000 n
+0001063821 00000 n
+0001063886 00000 n
+0001063951 00000 n
+0001064016 00000 n
+0001064081 00000 n
+0001064146 00000 n
+0001064211 00000 n
+0001064276 00000 n
+0001064341 00000 n
+0001064405 00000 n
+0001064470 00000 n
+0001064535 00000 n
+0001064600 00000 n
+0001064665 00000 n
+0001064730 00000 n
+0001064795 00000 n
+0001064860 00000 n
+0001064925 00000 n
+0001064990 00000 n
+0001065055 00000 n
+0001065120 00000 n
+0001065185 00000 n
+0001065250 00000 n
+0001065315 00000 n
+0001065380 00000 n
+0001065445 00000 n
+0001065509 00000 n
+0001065574 00000 n
+0001065639 00000 n
+0001065704 00000 n
+0001065769 00000 n
+0001065834 00000 n
+0001065899 00000 n
+0001065964 00000 n
+0001066029 00000 n
+0001066093 00000 n
+0001071358 00000 n
+0001068511 00000 n
+0001066334 00000 n
+0001068636 00000 n
+0001068700 00000 n
+0001068765 00000 n
+0001068830 00000 n
+0001068895 00000 n
+0001068960 00000 n
+0001069025 00000 n
+0001069090 00000 n
+0001069155 00000 n
+0001069220 00000 n
+0001069284 00000 n
+0001069349 00000 n
+0001069414 00000 n
+0001069479 00000 n
+0001069544 00000 n
+0001069609 00000 n
+0001069674 00000 n
+0001069737 00000 n
+0001069802 00000 n
+0001069867 00000 n
+0001069932 00000 n
+0001069997 00000 n
+0001070062 00000 n
+0001070127 00000 n
+0001070192 00000 n
+0001070257 00000 n
+0001070322 00000 n
+0001070387 00000 n
+0001070452 00000 n
+0001070517 00000 n
+0001070582 00000 n
+0001070647 00000 n
+0001070775 00000 n
+0001070840 00000 n
+0001070905 00000 n
+0001070970 00000 n
+0001071035 00000 n
+0001071100 00000 n
+0001071165 00000 n
+0001071230 00000 n
+0001077015 00000 n
+0001073972 00000 n
+0001071548 00000 n
+0001074097 00000 n
+0001074161 00000 n
+0001074226 00000 n
+0001074291 00000 n
+0001074356 00000 n
+0001074421 00000 n
+0001074486 00000 n
+0001074551 00000 n
+0001074616 00000 n
+0001074681 00000 n
+0001074745 00000 n
+0001074810 00000 n
+0001074875 00000 n
+0001074940 00000 n
+0001075005 00000 n
+0001075070 00000 n
+0001075135 00000 n
+0001075200 00000 n
+0001075265 00000 n
+0001075330 00000 n
+0001075395 00000 n
+0001075460 00000 n
+0001075525 00000 n
+0001075590 00000 n
+0001075655 00000 n
+0001075720 00000 n
+0001075785 00000 n
+0001075850 00000 n
+0001075914 00000 n
+0001075979 00000 n
+0001076044 00000 n
+0001076109 00000 n
+0001076174 00000 n
+0001076239 00000 n
+0001076304 00000 n
+0001076369 00000 n
+0001076434 00000 n
+0001076498 00000 n
+0001076563 00000 n
+0001076628 00000 n
+0001076693 00000 n
+0001076758 00000 n
+0001076823 00000 n
+0001076888 00000 n
+0001076951 00000 n
+0001894471 00000 n
+0001079722 00000 n
+0001082467 00000 n
+0001079549 00000 n
+0001077192 00000 n
+0001079879 00000 n
+0001079943 00000 n
+0001080008 00000 n
+0001080073 00000 n
+0001080138 00000 n
+0001080203 00000 n
+0001080268 00000 n
+0001080333 00000 n
+0001080398 00000 n
+0001080463 00000 n
+0001080527 00000 n
+0001080592 00000 n
+0001080657 00000 n
+0001080722 00000 n
+0001080787 00000 n
+0001080852 00000 n
+0001080917 00000 n
+0001080982 00000 n
+0001081047 00000 n
+0001081111 00000 n
+0001081176 00000 n
+0001081241 00000 n
+0001081369 00000 n
+0001081434 00000 n
+0001081499 00000 n
+0001081564 00000 n
+0001081629 00000 n
+0001081694 00000 n
+0001081759 00000 n
+0001081824 00000 n
+0001081888 00000 n
+0001081953 00000 n
+0001082018 00000 n
+0001082083 00000 n
+0001082148 00000 n
+0001082213 00000 n
+0001082278 00000 n
+0001082342 00000 n
+0001079691 00000 n
+0001088215 00000 n
+0001085432 00000 n
+0001082670 00000 n
+0001085557 00000 n
+0001085621 00000 n
+0001085686 00000 n
+0001085751 00000 n
+0001085816 00000 n
+0001085881 00000 n
+0001085946 00000 n
+0001086011 00000 n
+0001086075 00000 n
+0001086140 00000 n
+0001086205 00000 n
+0001086270 00000 n
+0001086335 00000 n
+0001086399 00000 n
+0001086464 00000 n
+0001086529 00000 n
+0001086594 00000 n
+0001086659 00000 n
+0001086724 00000 n
+0001086789 00000 n
+0001086854 00000 n
+0001086919 00000 n
+0001086983 00000 n
+0001087048 00000 n
+0001087113 00000 n
+0001087178 00000 n
+0001087243 00000 n
+0001087308 00000 n
+0001087373 00000 n
+0001087438 00000 n
+0001087503 00000 n
+0001087568 00000 n
+0001087633 00000 n
+0001087697 00000 n
+0001087762 00000 n
+0001087827 00000 n
+0001087892 00000 n
+0001087957 00000 n
+0001088022 00000 n
+0001088087 00000 n
+0001088151 00000 n
+0001093837 00000 n
+0001090084 00000 n
+0001088431 00000 n
+0001090209 00000 n
+0001090273 00000 n
+0001090338 00000 n
+0001090403 00000 n
+0001090468 00000 n
+0001090533 00000 n
+0001090598 00000 n
+0001090663 00000 n
+0001090728 00000 n
+0001090793 00000 n
+0001090857 00000 n
+0001090922 00000 n
+0001090987 00000 n
+0001091052 00000 n
+0001091117 00000 n
+0001091182 00000 n
+0001091308 00000 n
+0001091373 00000 n
+0001091438 00000 n
+0001091503 00000 n
+0001091568 00000 n
+0001091632 00000 n
+0001091697 00000 n
+0001091762 00000 n
+0001091827 00000 n
+0001091892 00000 n
+0001091957 00000 n
+0001092022 00000 n
+0001092087 00000 n
+0001092152 00000 n
+0001092216 00000 n
+0001092281 00000 n
+0001092346 00000 n
+0001092411 00000 n
+0001092476 00000 n
+0001092541 00000 n
+0001092606 00000 n
+0001092671 00000 n
+0001092736 00000 n
+0001092800 00000 n
+0001092865 00000 n
+0001092930 00000 n
+0001092995 00000 n
+0001093060 00000 n
+0001093125 00000 n
+0001093190 00000 n
+0001093255 00000 n
+0001093319 00000 n
+0001093384 00000 n
+0001093449 00000 n
+0001093514 00000 n
+0001093579 00000 n
+0001093644 00000 n
+0001093709 00000 n
+0001093773 00000 n
+0001099741 00000 n
+0001095981 00000 n
+0001094014 00000 n
+0001096106 00000 n
+0001096170 00000 n
+0001096235 00000 n
+0001096300 00000 n
+0001096365 00000 n
+0001096430 00000 n
+0001096495 00000 n
+0001096560 00000 n
+0001096625 00000 n
+0001096690 00000 n
+0001096754 00000 n
+0001096819 00000 n
+0001096884 00000 n
+0001096949 00000 n
+0001097014 00000 n
+0001097079 00000 n
+0001097144 00000 n
+0001097209 00000 n
+0001097274 00000 n
+0001097338 00000 n
+0001097403 00000 n
+0001097468 00000 n
+0001097533 00000 n
+0001097598 00000 n
+0001097663 00000 n
+0001097728 00000 n
+0001097793 00000 n
+0001097858 00000 n
+0001097923 00000 n
+0001097988 00000 n
+0001098053 00000 n
+0001098117 00000 n
+0001098182 00000 n
+0001098247 00000 n
+0001098312 00000 n
+0001098377 00000 n
+0001098442 00000 n
+0001098507 00000 n
+0001098572 00000 n
+0001098637 00000 n
+0001098702 00000 n
+0001098766 00000 n
+0001098831 00000 n
+0001098896 00000 n
+0001098961 00000 n
+0001099026 00000 n
+0001099091 00000 n
+0001099156 00000 n
+0001099221 00000 n
+0001099286 00000 n
+0001099351 00000 n
+0001099416 00000 n
+0001099481 00000 n
+0001099546 00000 n
+0001099611 00000 n
+0001099676 00000 n
+0001105211 00000 n
+0001102168 00000 n
+0001099918 00000 n
+0001102293 00000 n
+0001102357 00000 n
+0001102422 00000 n
+0001102487 00000 n
+0001102552 00000 n
+0001102617 00000 n
+0001102682 00000 n
+0001102747 00000 n
+0001102812 00000 n
+0001102877 00000 n
+0001102941 00000 n
+0001103006 00000 n
+0001103071 00000 n
+0001103136 00000 n
+0001103201 00000 n
+0001103266 00000 n
+0001103331 00000 n
+0001103396 00000 n
+0001103461 00000 n
+0001103526 00000 n
+0001103591 00000 n
+0001103656 00000 n
+0001103720 00000 n
+0001103785 00000 n
+0001103850 00000 n
+0001103915 00000 n
+0001103980 00000 n
+0001104045 00000 n
+0001104110 00000 n
+0001104175 00000 n
+0001104240 00000 n
+0001104304 00000 n
+0001104369 00000 n
+0001104434 00000 n
+0001104499 00000 n
+0001104564 00000 n
+0001104629 00000 n
+0001104694 00000 n
+0001104759 00000 n
+0001104823 00000 n
+0001104888 00000 n
+0001104953 00000 n
+0001105018 00000 n
+0001105083 00000 n
+0001105147 00000 n
+0001111362 00000 n
+0001107346 00000 n
+0001105401 00000 n
+0001107471 00000 n
+0001107535 00000 n
+0001107600 00000 n
+0001107665 00000 n
+0001107730 00000 n
+0001107795 00000 n
+0001107860 00000 n
+0001107925 00000 n
+0001107990 00000 n
+0001108055 00000 n
+0001108120 00000 n
+0001108185 00000 n
+0001108249 00000 n
+0001108314 00000 n
+0001108379 00000 n
+0001108444 00000 n
+0001108509 00000 n
+0001108574 00000 n
+0001108639 00000 n
+0001108704 00000 n
+0001108769 00000 n
+0001108833 00000 n
+0001108898 00000 n
+0001108963 00000 n
+0001109028 00000 n
+0001109093 00000 n
+0001109158 00000 n
+0001109223 00000 n
+0001109288 00000 n
+0001109353 00000 n
+0001109417 00000 n
+0001109482 00000 n
+0001109547 00000 n
+0001109612 00000 n
+0001109677 00000 n
+0001109742 00000 n
+0001109807 00000 n
+0001109872 00000 n
+0001109936 00000 n
+0001110001 00000 n
+0001110066 00000 n
+0001110131 00000 n
+0001110196 00000 n
+0001110261 00000 n
+0001110326 00000 n
+0001110391 00000 n
+0001110456 00000 n
+0001110520 00000 n
+0001110585 00000 n
+0001110650 00000 n
+0001110715 00000 n
+0001110780 00000 n
+0001110845 00000 n
+0001110910 00000 n
+0001110975 00000 n
+0001111040 00000 n
+0001111104 00000 n
+0001111169 00000 n
+0001111234 00000 n
+0001111298 00000 n
+0001117116 00000 n
+0001113749 00000 n
+0001111526 00000 n
+0001113874 00000 n
+0001113938 00000 n
+0001114003 00000 n
+0001114068 00000 n
+0001114133 00000 n
+0001114198 00000 n
+0001114263 00000 n
+0001114328 00000 n
+0001114393 00000 n
+0001114458 00000 n
+0001114522 00000 n
+0001114587 00000 n
+0001114652 00000 n
+0001114717 00000 n
+0001114782 00000 n
+0001114847 00000 n
+0001114912 00000 n
+0001114976 00000 n
+0001115041 00000 n
+0001115106 00000 n
+0001115170 00000 n
+0001115235 00000 n
+0001115300 00000 n
+0001115365 00000 n
+0001115430 00000 n
+0001115495 00000 n
+0001115560 00000 n
+0001115625 00000 n
+0001115690 00000 n
+0001115755 00000 n
+0001115820 00000 n
+0001115884 00000 n
+0001115949 00000 n
+0001116014 00000 n
+0001116079 00000 n
+0001116144 00000 n
+0001116207 00000 n
+0001116272 00000 n
+0001116337 00000 n
+0001116402 00000 n
+0001116467 00000 n
+0001116532 00000 n
+0001116597 00000 n
+0001116662 00000 n
+0001116727 00000 n
+0001116791 00000 n
+0001116856 00000 n
+0001116921 00000 n
+0001116986 00000 n
+0001117051 00000 n
+0001122933 00000 n
+0001119438 00000 n
+0001117280 00000 n
+0001119563 00000 n
+0001119627 00000 n
+0001119692 00000 n
+0001119757 00000 n
+0001119822 00000 n
+0001119887 00000 n
+0001119952 00000 n
+0001120017 00000 n
+0001120082 00000 n
+0001120147 00000 n
+0001120211 00000 n
+0001120276 00000 n
+0001120341 00000 n
+0001120406 00000 n
+0001120471 00000 n
+0001120534 00000 n
+0001120599 00000 n
+0001120664 00000 n
+0001120729 00000 n
+0001120794 00000 n
+0001120859 00000 n
+0001120924 00000 n
+0001120989 00000 n
+0001121054 00000 n
+0001121119 00000 n
+0001121184 00000 n
+0001121248 00000 n
+0001121313 00000 n
+0001121378 00000 n
+0001121443 00000 n
+0001121508 00000 n
+0001121573 00000 n
+0001121638 00000 n
+0001121703 00000 n
+0001121768 00000 n
+0001121832 00000 n
+0001121897 00000 n
+0001121962 00000 n
+0001122027 00000 n
+0001122092 00000 n
+0001122156 00000 n
+0001122221 00000 n
+0001122286 00000 n
+0001122351 00000 n
+0001122416 00000 n
+0001122481 00000 n
+0001122546 00000 n
+0001122611 00000 n
+0001122676 00000 n
+0001122741 00000 n
+0001122805 00000 n
+0001122869 00000 n
+0001128307 00000 n
+0001125845 00000 n
+0001123110 00000 n
+0001125970 00000 n
+0001126034 00000 n
+0001126099 00000 n
+0001126164 00000 n
+0001126229 00000 n
+0001126294 00000 n
+0001126359 00000 n
+0001126424 00000 n
+0001126489 00000 n
+0001126554 00000 n
+0001126618 00000 n
+0001126683 00000 n
+0001126748 00000 n
+0001126813 00000 n
+0001126878 00000 n
+0001126943 00000 n
+0001127008 00000 n
+0001127073 00000 n
+0001127138 00000 n
+0001127203 00000 n
+0001127268 00000 n
+0001127333 00000 n
+0001127398 00000 n
+0001127463 00000 n
+0001127527 00000 n
+0001127592 00000 n
+0001127657 00000 n
+0001127722 00000 n
+0001127787 00000 n
+0001127852 00000 n
+0001127917 00000 n
+0001127982 00000 n
+0001128047 00000 n
+0001128112 00000 n
+0001128177 00000 n
+0001128242 00000 n
+0001134246 00000 n
+0001131072 00000 n
+0001128497 00000 n
+0001131197 00000 n
+0001131261 00000 n
+0001131326 00000 n
+0001131391 00000 n
+0001131456 00000 n
+0001131521 00000 n
+0001131585 00000 n
+0001131650 00000 n
+0001131715 00000 n
+0001131780 00000 n
+0001131845 00000 n
+0001131910 00000 n
+0001131975 00000 n
+0001132040 00000 n
+0001132104 00000 n
+0001132169 00000 n
+0001132234 00000 n
+0001132299 00000 n
+0001132364 00000 n
+0001132429 00000 n
+0001132494 00000 n
+0001132559 00000 n
+0001132624 00000 n
+0001132689 00000 n
+0001132754 00000 n
+0001132819 00000 n
+0001132884 00000 n
+0001132949 00000 n
+0001133014 00000 n
+0001133079 00000 n
+0001133144 00000 n
+0001133209 00000 n
+0001133274 00000 n
+0001133339 00000 n
+0001133404 00000 n
+0001133469 00000 n
+0001133534 00000 n
+0001133599 00000 n
+0001133664 00000 n
+0001133729 00000 n
+0001133794 00000 n
+0001133858 00000 n
+0001133923 00000 n
+0001133988 00000 n
+0001134053 00000 n
+0001134118 00000 n
+0001134182 00000 n
+0001894636 00000 n
+0001139808 00000 n
+0001136382 00000 n
+0001134423 00000 n
+0001136507 00000 n
+0001136571 00000 n
+0001136636 00000 n
+0001136701 00000 n
+0001136766 00000 n
+0001136831 00000 n
+0001136896 00000 n
+0001136960 00000 n
+0001137025 00000 n
+0001137090 00000 n
+0001137155 00000 n
+0001137220 00000 n
+0001137285 00000 n
+0001137350 00000 n
+0001137415 00000 n
+0001137480 00000 n
+0001137541 00000 n
+0001137606 00000 n
+0001137671 00000 n
+0001137736 00000 n
+0001137801 00000 n
+0001137866 00000 n
+0001137931 00000 n
+0001137996 00000 n
+0001138061 00000 n
+0001138125 00000 n
+0001138190 00000 n
+0001138255 00000 n
+0001138320 00000 n
+0001138448 00000 n
+0001138512 00000 n
+0001138577 00000 n
+0001138642 00000 n
+0001138707 00000 n
+0001138772 00000 n
+0001138836 00000 n
+0001138901 00000 n
+0001138966 00000 n
+0001139031 00000 n
+0001139096 00000 n
+0001139161 00000 n
+0001139226 00000 n
+0001139291 00000 n
+0001139356 00000 n
+0001139420 00000 n
+0001139485 00000 n
+0001139550 00000 n
+0001139615 00000 n
+0001139680 00000 n
+0001139744 00000 n
+0001146236 00000 n
+0001142241 00000 n
+0001139985 00000 n
+0001142366 00000 n
+0001142430 00000 n
+0001142495 00000 n
+0001142560 00000 n
+0001142625 00000 n
+0001142690 00000 n
+0001142755 00000 n
+0001142820 00000 n
+0001142885 00000 n
+0001142950 00000 n
+0001143014 00000 n
+0001143079 00000 n
+0001143144 00000 n
+0001143209 00000 n
+0001143274 00000 n
+0001143339 00000 n
+0001143403 00000 n
+0001143469 00000 n
+0001143535 00000 n
+0001143601 00000 n
+0001143667 00000 n
+0001143733 00000 n
+0001143799 00000 n
+0001143865 00000 n
+0001143931 00000 n
+0001143996 00000 n
+0001144062 00000 n
+0001144128 00000 n
+0001144194 00000 n
+0001144260 00000 n
+0001144326 00000 n
+0001144392 00000 n
+0001144458 00000 n
+0001144524 00000 n
+0001144589 00000 n
+0001144655 00000 n
+0001144721 00000 n
+0001144787 00000 n
+0001144853 00000 n
+0001144919 00000 n
+0001144985 00000 n
+0001145051 00000 n
+0001145117 00000 n
+0001145183 00000 n
+0001145249 00000 n
+0001145315 00000 n
+0001145381 00000 n
+0001145447 00000 n
+0001145513 00000 n
+0001145579 00000 n
+0001145645 00000 n
+0001145711 00000 n
+0001145777 00000 n
+0001145842 00000 n
+0001145908 00000 n
+0001145974 00000 n
+0001146040 00000 n
+0001146106 00000 n
+0001146171 00000 n
+0001152239 00000 n
+0001148099 00000 n
+0001146426 00000 n
+0001148227 00000 n
+0001148293 00000 n
+0001148360 00000 n
+0001148427 00000 n
+0001148494 00000 n
+0001148561 00000 n
+0001148628 00000 n
+0001148695 00000 n
+0001148762 00000 n
+0001148829 00000 n
+0001148895 00000 n
+0001148962 00000 n
+0001149029 00000 n
+0001149096 00000 n
+0001149163 00000 n
+0001149230 00000 n
+0001149297 00000 n
+0001149364 00000 n
+0001149431 00000 n
+0001149497 00000 n
+0001149564 00000 n
+0001149631 00000 n
+0001149698 00000 n
+0001149765 00000 n
+0001149832 00000 n
+0001149899 00000 n
+0001149966 00000 n
+0001150033 00000 n
+0001150099 00000 n
+0001150166 00000 n
+0001150233 00000 n
+0001150300 00000 n
+0001150367 00000 n
+0001150434 00000 n
+0001150501 00000 n
+0001150568 00000 n
+0001150635 00000 n
+0001150701 00000 n
+0001150768 00000 n
+0001150835 00000 n
+0001150902 00000 n
+0001150969 00000 n
+0001151036 00000 n
+0001151103 00000 n
+0001151170 00000 n
+0001151237 00000 n
+0001151303 00000 n
+0001151370 00000 n
+0001151437 00000 n
+0001151504 00000 n
+0001151571 00000 n
+0001151638 00000 n
+0001151705 00000 n
+0001151772 00000 n
+0001151839 00000 n
+0001151906 00000 n
+0001151973 00000 n
+0001152040 00000 n
+0001152107 00000 n
+0001152173 00000 n
+0001157923 00000 n
+0001153921 00000 n
+0001152391 00000 n
+0001154049 00000 n
+0001154115 00000 n
+0001154182 00000 n
+0001154249 00000 n
+0001154316 00000 n
+0001154383 00000 n
+0001154450 00000 n
+0001154517 00000 n
+0001154584 00000 n
+0001154651 00000 n
+0001154717 00000 n
+0001154784 00000 n
+0001154851 00000 n
+0001154918 00000 n
+0001154985 00000 n
+0001155052 00000 n
+0001155119 00000 n
+0001155186 00000 n
+0001155253 00000 n
+0001155319 00000 n
+0001155386 00000 n
+0001155453 00000 n
+0001155520 00000 n
+0001155587 00000 n
+0001155654 00000 n
+0001155721 00000 n
+0001155788 00000 n
+0001155855 00000 n
+0001155920 00000 n
+0001155987 00000 n
+0001156054 00000 n
+0001156121 00000 n
+0001156188 00000 n
+0001156255 00000 n
+0001156322 00000 n
+0001156453 00000 n
+0001156520 00000 n
+0001156587 00000 n
+0001156654 00000 n
+0001156721 00000 n
+0001156788 00000 n
+0001156855 00000 n
+0001156922 00000 n
+0001156988 00000 n
+0001157055 00000 n
+0001157122 00000 n
+0001157189 00000 n
+0001157256 00000 n
+0001157323 00000 n
+0001157390 00000 n
+0001157457 00000 n
+0001157524 00000 n
+0001157590 00000 n
+0001157657 00000 n
+0001157724 00000 n
+0001157791 00000 n
+0001157857 00000 n
+0001164161 00000 n
+0001159889 00000 n
+0001158088 00000 n
+0001160017 00000 n
+0001160083 00000 n
+0001160150 00000 n
+0001160217 00000 n
+0001160284 00000 n
+0001160351 00000 n
+0001160418 00000 n
+0001160485 00000 n
+0001160552 00000 n
+0001160619 00000 n
+0001160686 00000 n
+0001160752 00000 n
+0001160819 00000 n
+0001160886 00000 n
+0001160953 00000 n
+0001161020 00000 n
+0001161087 00000 n
+0001161154 00000 n
+0001161221 00000 n
+0001161288 00000 n
+0001161354 00000 n
+0001161421 00000 n
+0001161488 00000 n
+0001161555 00000 n
+0001161622 00000 n
+0001161689 00000 n
+0001161756 00000 n
+0001161823 00000 n
+0001161890 00000 n
+0001161956 00000 n
+0001162023 00000 n
+0001162090 00000 n
+0001162157 00000 n
+0001162224 00000 n
+0001162291 00000 n
+0001162358 00000 n
+0001162425 00000 n
+0001162492 00000 n
+0001162558 00000 n
+0001162625 00000 n
+0001162692 00000 n
+0001162759 00000 n
+0001162826 00000 n
+0001162893 00000 n
+0001162960 00000 n
+0001163027 00000 n
+0001163094 00000 n
+0001163161 00000 n
+0001163227 00000 n
+0001163294 00000 n
+0001163361 00000 n
+0001163428 00000 n
+0001163495 00000 n
+0001163562 00000 n
+0001163629 00000 n
+0001163696 00000 n
+0001163763 00000 n
+0001163828 00000 n
+0001163895 00000 n
+0001163962 00000 n
+0001164029 00000 n
+0001164095 00000 n
+0001170208 00000 n
+0001166007 00000 n
+0001164339 00000 n
+0001166135 00000 n
+0001166201 00000 n
+0001166268 00000 n
+0001166335 00000 n
+0001166402 00000 n
+0001166469 00000 n
+0001166536 00000 n
+0001166603 00000 n
+0001166670 00000 n
+0001166737 00000 n
+0001166867 00000 n
+0001166934 00000 n
+0001167001 00000 n
+0001167068 00000 n
+0001167134 00000 n
+0001167201 00000 n
+0001167268 00000 n
+0001167335 00000 n
+0001167402 00000 n
+0001167469 00000 n
+0001167536 00000 n
+0001167603 00000 n
+0001167670 00000 n
+0001167736 00000 n
+0001167803 00000 n
+0001167870 00000 n
+0001167937 00000 n
+0001168004 00000 n
+0001168071 00000 n
+0001168138 00000 n
+0001168205 00000 n
+0001168272 00000 n
+0001168337 00000 n
+0001168404 00000 n
+0001168471 00000 n
+0001168538 00000 n
+0001168605 00000 n
+0001168672 00000 n
+0001168739 00000 n
+0001168806 00000 n
+0001168873 00000 n
+0001168940 00000 n
+0001169006 00000 n
+0001169073 00000 n
+0001169140 00000 n
+0001169207 00000 n
+0001169274 00000 n
+0001169341 00000 n
+0001169408 00000 n
+0001169475 00000 n
+0001169542 00000 n
+0001169608 00000 n
+0001169675 00000 n
+0001169742 00000 n
+0001169809 00000 n
+0001169876 00000 n
+0001169943 00000 n
+0001170010 00000 n
+0001170077 00000 n
+0001170143 00000 n
+0001176409 00000 n
+0001172003 00000 n
+0001170373 00000 n
+0001172131 00000 n
+0001172197 00000 n
+0001172264 00000 n
+0001172331 00000 n
+0001172398 00000 n
+0001172465 00000 n
+0001172532 00000 n
+0001172599 00000 n
+0001172666 00000 n
+0001172733 00000 n
+0001172799 00000 n
+0001172866 00000 n
+0001172933 00000 n
+0001173000 00000 n
+0001173067 00000 n
+0001173134 00000 n
+0001173201 00000 n
+0001173268 00000 n
+0001173335 00000 n
+0001173402 00000 n
+0001173468 00000 n
+0001173535 00000 n
+0001173602 00000 n
+0001173669 00000 n
+0001173736 00000 n
+0001173803 00000 n
+0001173870 00000 n
+0001173937 00000 n
+0001174004 00000 n
+0001174070 00000 n
+0001174137 00000 n
+0001174204 00000 n
+0001174271 00000 n
+0001174338 00000 n
+0001174405 00000 n
+0001174472 00000 n
+0001174539 00000 n
+0001174606 00000 n
+0001174672 00000 n
+0001174739 00000 n
+0001174806 00000 n
+0001174873 00000 n
+0001174940 00000 n
+0001175007 00000 n
+0001175074 00000 n
+0001175141 00000 n
+0001175208 00000 n
+0001175273 00000 n
+0001175340 00000 n
+0001175407 00000 n
+0001175474 00000 n
+0001175541 00000 n
+0001175608 00000 n
+0001175675 00000 n
+0001175742 00000 n
+0001175809 00000 n
+0001175875 00000 n
+0001175942 00000 n
+0001176009 00000 n
+0001176076 00000 n
+0001176143 00000 n
+0001176210 00000 n
+0001176277 00000 n
+0001176343 00000 n
+0001182173 00000 n
+0001178639 00000 n
+0001176561 00000 n
+0001178767 00000 n
+0001178833 00000 n
+0001178900 00000 n
+0001178967 00000 n
+0001179034 00000 n
+0001179101 00000 n
+0001179168 00000 n
+0001179235 00000 n
+0001179302 00000 n
+0001179369 00000 n
+0001179435 00000 n
+0001179502 00000 n
+0001179569 00000 n
+0001179636 00000 n
+0001179703 00000 n
+0001179770 00000 n
+0001179837 00000 n
+0001179904 00000 n
+0001179971 00000 n
+0001180037 00000 n
+0001180104 00000 n
+0001180171 00000 n
+0001180238 00000 n
+0001180305 00000 n
+0001180372 00000 n
+0001180439 00000 n
+0001180506 00000 n
+0001180573 00000 n
+0001180638 00000 n
+0001180705 00000 n
+0001180772 00000 n
+0001180839 00000 n
+0001180906 00000 n
+0001180973 00000 n
+0001181040 00000 n
+0001181107 00000 n
+0001181174 00000 n
+0001181240 00000 n
+0001181307 00000 n
+0001181374 00000 n
+0001181441 00000 n
+0001181508 00000 n
+0001181575 00000 n
+0001181642 00000 n
+0001181709 00000 n
+0001181776 00000 n
+0001181842 00000 n
+0001181909 00000 n
+0001182040 00000 n
+0001182107 00000 n
+0001188381 00000 n
+0001184375 00000 n
+0001182351 00000 n
+0001184503 00000 n
+0001184569 00000 n
+0001184636 00000 n
+0001184703 00000 n
+0001184770 00000 n
+0001184837 00000 n
+0001184904 00000 n
+0001184971 00000 n
+0001185038 00000 n
+0001185105 00000 n
+0001185171 00000 n
+0001185238 00000 n
+0001185305 00000 n
+0001185372 00000 n
+0001185439 00000 n
+0001185506 00000 n
+0001185573 00000 n
+0001185640 00000 n
+0001185707 00000 n
+0001185774 00000 n
+0001185841 00000 n
+0001185908 00000 n
+0001185975 00000 n
+0001186042 00000 n
+0001186108 00000 n
+0001186175 00000 n
+0001186242 00000 n
+0001186309 00000 n
+0001186376 00000 n
+0001186443 00000 n
+0001186510 00000 n
+0001186577 00000 n
+0001186644 00000 n
+0001186711 00000 n
+0001186778 00000 n
+0001186845 00000 n
+0001186912 00000 n
+0001186979 00000 n
+0001187046 00000 n
+0001187113 00000 n
+0001187180 00000 n
+0001187247 00000 n
+0001187314 00000 n
+0001187381 00000 n
+0001187448 00000 n
+0001187514 00000 n
+0001187581 00000 n
+0001187648 00000 n
+0001187715 00000 n
+0001187781 00000 n
+0001187848 00000 n
+0001187915 00000 n
+0001187981 00000 n
+0001188048 00000 n
+0001188115 00000 n
+0001188182 00000 n
+0001188249 00000 n
+0001188315 00000 n
+0001193227 00000 n
+0001190361 00000 n
+0001188559 00000 n
+0001190490 00000 n
+0001190556 00000 n
+0001190623 00000 n
+0001190690 00000 n
+0001190757 00000 n
+0001190824 00000 n
+0001190891 00000 n
+0001190958 00000 n
+0001191025 00000 n
+0001191092 00000 n
+0001191158 00000 n
+0001191225 00000 n
+0001191356 00000 n
+0001191423 00000 n
+0001191490 00000 n
+0001191557 00000 n
+0001191624 00000 n
+0001191691 00000 n
+0001191758 00000 n
+0001191825 00000 n
+0001191892 00000 n
+0001191959 00000 n
+0001192026 00000 n
+0001192093 00000 n
+0001192159 00000 n
+0001192290 00000 n
+0001192357 00000 n
+0001192424 00000 n
+0001192491 00000 n
+0001192558 00000 n
+0001192625 00000 n
+0001192692 00000 n
+0001192759 00000 n
+0001192825 00000 n
+0001192892 00000 n
+0001192959 00000 n
+0001193026 00000 n
+0001193093 00000 n
+0001193160 00000 n
+0001894808 00000 n
+0001199783 00000 n
+0001195845 00000 n
+0001193431 00000 n
+0001195974 00000 n
+0001196040 00000 n
+0001196107 00000 n
+0001196174 00000 n
+0001196241 00000 n
+0001196308 00000 n
+0001196375 00000 n
+0001196442 00000 n
+0001196509 00000 n
+0001196576 00000 n
+0001196643 00000 n
+0001196710 00000 n
+0001196777 00000 n
+0001196844 00000 n
+0001196909 00000 n
+0001196976 00000 n
+0001197043 00000 n
+0001197110 00000 n
+0001197177 00000 n
+0001197244 00000 n
+0001197311 00000 n
+0001197378 00000 n
+0001197445 00000 n
+0001197512 00000 n
+0001197579 00000 n
+0001197645 00000 n
+0001197712 00000 n
+0001197779 00000 n
+0001197846 00000 n
+0001197913 00000 n
+0001197980 00000 n
+0001198047 00000 n
+0001198114 00000 n
+0001198181 00000 n
+0001198248 00000 n
+0001198315 00000 n
+0001198381 00000 n
+0001198447 00000 n
+0001198514 00000 n
+0001198581 00000 n
+0001198648 00000 n
+0001198715 00000 n
+0001198782 00000 n
+0001198849 00000 n
+0001198916 00000 n
+0001198983 00000 n
+0001199050 00000 n
+0001199116 00000 n
+0001199183 00000 n
+0001199250 00000 n
+0001199317 00000 n
+0001199384 00000 n
+0001199451 00000 n
+0001199518 00000 n
+0001199585 00000 n
+0001199652 00000 n
+0001199718 00000 n
+0001205971 00000 n
+0001201830 00000 n
+0001199974 00000 n
+0001201959 00000 n
+0001202025 00000 n
+0001202092 00000 n
+0001202159 00000 n
+0001202226 00000 n
+0001202293 00000 n
+0001202360 00000 n
+0001202427 00000 n
+0001202494 00000 n
+0001202560 00000 n
+0001202627 00000 n
+0001202694 00000 n
+0001202761 00000 n
+0001202828 00000 n
+0001202895 00000 n
+0001202962 00000 n
+0001203029 00000 n
+0001203096 00000 n
+0001203163 00000 n
+0001203229 00000 n
+0001203296 00000 n
+0001203363 00000 n
+0001203430 00000 n
+0001203497 00000 n
+0001203564 00000 n
+0001203631 00000 n
+0001203698 00000 n
+0001203765 00000 n
+0001203832 00000 n
+0001203898 00000 n
+0001203965 00000 n
+0001204032 00000 n
+0001204099 00000 n
+0001204166 00000 n
+0001204233 00000 n
+0001204300 00000 n
+0001204367 00000 n
+0001204434 00000 n
+0001204501 00000 n
+0001204568 00000 n
+0001204635 00000 n
+0001204701 00000 n
+0001204768 00000 n
+0001204835 00000 n
+0001204902 00000 n
+0001204969 00000 n
+0001205036 00000 n
+0001205103 00000 n
+0001205170 00000 n
+0001205237 00000 n
+0001205304 00000 n
+0001205371 00000 n
+0001205437 00000 n
+0001205504 00000 n
+0001205571 00000 n
+0001205638 00000 n
+0001205705 00000 n
+0001205772 00000 n
+0001205839 00000 n
+0001205905 00000 n
+0001212489 00000 n
+0001208280 00000 n
+0001206136 00000 n
+0001208409 00000 n
+0001208475 00000 n
+0001208542 00000 n
+0001208609 00000 n
+0001208676 00000 n
+0001208743 00000 n
+0001208810 00000 n
+0001208877 00000 n
+0001208944 00000 n
+0001209011 00000 n
+0001209078 00000 n
+0001209145 00000 n
+0001209212 00000 n
+0001209279 00000 n
+0001209346 00000 n
+0001209413 00000 n
+0001209480 00000 n
+0001209547 00000 n
+0001209614 00000 n
+0001209681 00000 n
+0001209748 00000 n
+0001209815 00000 n
+0001209882 00000 n
+0001209949 00000 n
+0001210016 00000 n
+0001210083 00000 n
+0001210150 00000 n
+0001210217 00000 n
+0001210284 00000 n
+0001210351 00000 n
+0001210418 00000 n
+0001210485 00000 n
+0001210552 00000 n
+0001210619 00000 n
+0001210686 00000 n
+0001210753 00000 n
+0001210820 00000 n
+0001210887 00000 n
+0001210954 00000 n
+0001211021 00000 n
+0001211087 00000 n
+0001211154 00000 n
+0001211221 00000 n
+0001211288 00000 n
+0001211355 00000 n
+0001211422 00000 n
+0001211488 00000 n
+0001211555 00000 n
+0001211622 00000 n
+0001211689 00000 n
+0001211756 00000 n
+0001211823 00000 n
+0001211889 00000 n
+0001211956 00000 n
+0001212023 00000 n
+0001212090 00000 n
+0001212157 00000 n
+0001212224 00000 n
+0001212290 00000 n
+0001212357 00000 n
+0001212423 00000 n
+0001219209 00000 n
+0001214936 00000 n
+0001212654 00000 n
+0001215065 00000 n
+0001215131 00000 n
+0001215198 00000 n
+0001215265 00000 n
+0001215332 00000 n
+0001215399 00000 n
+0001215466 00000 n
+0001215533 00000 n
+0001215600 00000 n
+0001215667 00000 n
+0001215733 00000 n
+0001215800 00000 n
+0001215867 00000 n
+0001215934 00000 n
+0001216001 00000 n
+0001216068 00000 n
+0001216135 00000 n
+0001216202 00000 n
+0001216269 00000 n
+0001216336 00000 n
+0001216402 00000 n
+0001216469 00000 n
+0001216536 00000 n
+0001216603 00000 n
+0001216670 00000 n
+0001216737 00000 n
+0001216804 00000 n
+0001216871 00000 n
+0001216938 00000 n
+0001217004 00000 n
+0001217071 00000 n
+0001217138 00000 n
+0001217205 00000 n
+0001217272 00000 n
+0001217339 00000 n
+0001217406 00000 n
+0001217473 00000 n
+0001217540 00000 n
+0001217607 00000 n
+0001217673 00000 n
+0001217740 00000 n
+0001217807 00000 n
+0001217874 00000 n
+0001217941 00000 n
+0001218008 00000 n
+0001218075 00000 n
+0001218142 00000 n
+0001218209 00000 n
+0001218276 00000 n
+0001218343 00000 n
+0001218410 00000 n
+0001218476 00000 n
+0001218542 00000 n
+0001218609 00000 n
+0001218676 00000 n
+0001218743 00000 n
+0001218810 00000 n
+0001218877 00000 n
+0001218944 00000 n
+0001219011 00000 n
+0001219078 00000 n
+0001219144 00000 n
+0001226298 00000 n
+0001222092 00000 n
+0001219374 00000 n
+0001222221 00000 n
+0001222287 00000 n
+0001222354 00000 n
+0001222421 00000 n
+0001222488 00000 n
+0001222555 00000 n
+0001222622 00000 n
+0001222689 00000 n
+0001222756 00000 n
+0001222823 00000 n
+0001222890 00000 n
+0001222957 00000 n
+0001223023 00000 n
+0001223090 00000 n
+0001223157 00000 n
+0001223224 00000 n
+0001223291 00000 n
+0001223358 00000 n
+0001223425 00000 n
+0001223492 00000 n
+0001223559 00000 n
+0001223626 00000 n
+0001223692 00000 n
+0001223759 00000 n
+0001223826 00000 n
+0001223893 00000 n
+0001223960 00000 n
+0001224027 00000 n
+0001224094 00000 n
+0001224161 00000 n
+0001224228 00000 n
+0001224295 00000 n
+0001224362 00000 n
+0001224428 00000 n
+0001224495 00000 n
+0001224562 00000 n
+0001224629 00000 n
+0001224696 00000 n
+0001224763 00000 n
+0001224830 00000 n
+0001224897 00000 n
+0001224964 00000 n
+0001225031 00000 n
+0001225097 00000 n
+0001225163 00000 n
+0001225230 00000 n
+0001225297 00000 n
+0001225364 00000 n
+0001225431 00000 n
+0001225498 00000 n
+0001225565 00000 n
+0001225632 00000 n
+0001225699 00000 n
+0001225766 00000 n
+0001225833 00000 n
+0001225900 00000 n
+0001225965 00000 n
+0001226032 00000 n
+0001226099 00000 n
+0001226166 00000 n
+0001226232 00000 n
+0001232921 00000 n
+0001228713 00000 n
+0001226463 00000 n
+0001228842 00000 n
+0001228908 00000 n
+0001228975 00000 n
+0001229042 00000 n
+0001229109 00000 n
+0001229176 00000 n
+0001229243 00000 n
+0001229310 00000 n
+0001229377 00000 n
+0001229444 00000 n
+0001229511 00000 n
+0001229578 00000 n
+0001229644 00000 n
+0001229711 00000 n
+0001229778 00000 n
+0001229845 00000 n
+0001229912 00000 n
+0001229979 00000 n
+0001230046 00000 n
+0001230113 00000 n
+0001230180 00000 n
+0001230247 00000 n
+0001230313 00000 n
+0001230380 00000 n
+0001230447 00000 n
+0001230514 00000 n
+0001230581 00000 n
+0001230648 00000 n
+0001230715 00000 n
+0001230782 00000 n
+0001230849 00000 n
+0001230915 00000 n
+0001230982 00000 n
+0001231048 00000 n
+0001231115 00000 n
+0001231182 00000 n
+0001231249 00000 n
+0001231316 00000 n
+0001231383 00000 n
+0001231450 00000 n
+0001231517 00000 n
+0001231584 00000 n
+0001231651 00000 n
+0001231717 00000 n
+0001231784 00000 n
+0001231851 00000 n
+0001231918 00000 n
+0001231985 00000 n
+0001232052 00000 n
+0001232119 00000 n
+0001232186 00000 n
+0001232253 00000 n
+0001232320 00000 n
+0001232387 00000 n
+0001232454 00000 n
+0001232521 00000 n
+0001232588 00000 n
+0001232655 00000 n
+0001232722 00000 n
+0001232789 00000 n
+0001232855 00000 n
+0001239563 00000 n
+0001235290 00000 n
+0001233086 00000 n
+0001235419 00000 n
+0001235485 00000 n
+0001235552 00000 n
+0001235619 00000 n
+0001235686 00000 n
+0001235753 00000 n
+0001235819 00000 n
+0001235886 00000 n
+0001235953 00000 n
+0001236020 00000 n
+0001236087 00000 n
+0001236154 00000 n
+0001236221 00000 n
+0001236288 00000 n
+0001236355 00000 n
+0001236422 00000 n
+0001236489 00000 n
+0001236556 00000 n
+0001236623 00000 n
+0001236690 00000 n
+0001236756 00000 n
+0001236823 00000 n
+0001236890 00000 n
+0001236957 00000 n
+0001237024 00000 n
+0001237090 00000 n
+0001237157 00000 n
+0001237224 00000 n
+0001237291 00000 n
+0001237358 00000 n
+0001237425 00000 n
+0001237492 00000 n
+0001237559 00000 n
+0001237626 00000 n
+0001237693 00000 n
+0001237760 00000 n
+0001237827 00000 n
+0001237894 00000 n
+0001237961 00000 n
+0001238028 00000 n
+0001238094 00000 n
+0001238161 00000 n
+0001238228 00000 n
+0001238295 00000 n
+0001238362 00000 n
+0001238428 00000 n
+0001238495 00000 n
+0001238562 00000 n
+0001238629 00000 n
+0001238696 00000 n
+0001238762 00000 n
+0001238829 00000 n
+0001238896 00000 n
+0001238963 00000 n
+0001239030 00000 n
+0001239097 00000 n
+0001239163 00000 n
+0001239230 00000 n
+0001239297 00000 n
+0001239364 00000 n
+0001239431 00000 n
+0001239497 00000 n
+0001245938 00000 n
+0001241729 00000 n
+0001239728 00000 n
+0001241858 00000 n
+0001241924 00000 n
+0001241991 00000 n
+0001242058 00000 n
+0001242125 00000 n
+0001242192 00000 n
+0001242259 00000 n
+0001242326 00000 n
+0001242393 00000 n
+0001242460 00000 n
+0001242527 00000 n
+0001242593 00000 n
+0001242660 00000 n
+0001242727 00000 n
+0001242794 00000 n
+0001242861 00000 n
+0001242928 00000 n
+0001242995 00000 n
+0001243062 00000 n
+0001243129 00000 n
+0001243196 00000 n
+0001243263 00000 n
+0001243329 00000 n
+0001243396 00000 n
+0001243463 00000 n
+0001243530 00000 n
+0001243597 00000 n
+0001243664 00000 n
+0001243731 00000 n
+0001243798 00000 n
+0001243865 00000 n
+0001243932 00000 n
+0001243999 00000 n
+0001244065 00000 n
+0001244132 00000 n
+0001244199 00000 n
+0001244266 00000 n
+0001244333 00000 n
+0001244400 00000 n
+0001244467 00000 n
+0001244534 00000 n
+0001244601 00000 n
+0001244668 00000 n
+0001244735 00000 n
+0001244801 00000 n
+0001244868 00000 n
+0001244935 00000 n
+0001245002 00000 n
+0001245069 00000 n
+0001245136 00000 n
+0001245203 00000 n
+0001245270 00000 n
+0001245337 00000 n
+0001245404 00000 n
+0001245471 00000 n
+0001245538 00000 n
+0001245605 00000 n
+0001245672 00000 n
+0001245739 00000 n
+0001245806 00000 n
+0001245872 00000 n
+0001252416 00000 n
+0001248209 00000 n
+0001246103 00000 n
+0001248338 00000 n
+0001248404 00000 n
+0001248471 00000 n
+0001248538 00000 n
+0001248605 00000 n
+0001248672 00000 n
+0001248739 00000 n
+0001248806 00000 n
+0001248873 00000 n
+0001248940 00000 n
+0001249007 00000 n
+0001249073 00000 n
+0001249140 00000 n
+0001249207 00000 n
+0001249274 00000 n
+0001249341 00000 n
+0001249408 00000 n
+0001249475 00000 n
+0001249542 00000 n
+0001249609 00000 n
+0001249676 00000 n
+0001249742 00000 n
+0001249809 00000 n
+0001249876 00000 n
+0001249943 00000 n
+0001250010 00000 n
+0001250077 00000 n
+0001250144 00000 n
+0001250211 00000 n
+0001250278 00000 n
+0001250345 00000 n
+0001250411 00000 n
+0001250478 00000 n
+0001250544 00000 n
+0001250611 00000 n
+0001250678 00000 n
+0001250745 00000 n
+0001250812 00000 n
+0001250879 00000 n
+0001250946 00000 n
+0001251013 00000 n
+0001251080 00000 n
+0001251147 00000 n
+0001251213 00000 n
+0001251280 00000 n
+0001251347 00000 n
+0001251414 00000 n
+0001251481 00000 n
+0001251548 00000 n
+0001251615 00000 n
+0001251682 00000 n
+0001251749 00000 n
+0001251816 00000 n
+0001251882 00000 n
+0001251949 00000 n
+0001252016 00000 n
+0001252083 00000 n
+0001252150 00000 n
+0001252217 00000 n
+0001252284 00000 n
+0001252350 00000 n
+0001259056 00000 n
+0001254848 00000 n
+0001252581 00000 n
+0001254977 00000 n
+0001255043 00000 n
+0001255110 00000 n
+0001255177 00000 n
+0001255244 00000 n
+0001255311 00000 n
+0001255378 00000 n
+0001255445 00000 n
+0001255512 00000 n
+0001255579 00000 n
+0001255646 00000 n
+0001255712 00000 n
+0001255779 00000 n
+0001255846 00000 n
+0001255913 00000 n
+0001255980 00000 n
+0001256047 00000 n
+0001256114 00000 n
+0001256181 00000 n
+0001256248 00000 n
+0001256315 00000 n
+0001256381 00000 n
+0001256448 00000 n
+0001256515 00000 n
+0001256582 00000 n
+0001256649 00000 n
+0001256716 00000 n
+0001256783 00000 n
+0001256850 00000 n
+0001256917 00000 n
+0001256984 00000 n
+0001257050 00000 n
+0001257117 00000 n
+0001257183 00000 n
+0001257250 00000 n
+0001257317 00000 n
+0001257384 00000 n
+0001257451 00000 n
+0001257518 00000 n
+0001257585 00000 n
+0001257652 00000 n
+0001257719 00000 n
+0001257786 00000 n
+0001257852 00000 n
+0001257919 00000 n
+0001257986 00000 n
+0001258053 00000 n
+0001258120 00000 n
+0001258187 00000 n
+0001258254 00000 n
+0001258321 00000 n
+0001258388 00000 n
+0001258455 00000 n
+0001258522 00000 n
+0001258589 00000 n
+0001258656 00000 n
+0001258723 00000 n
+0001258790 00000 n
+0001258857 00000 n
+0001258924 00000 n
+0001258990 00000 n
+0001894984 00000 n
+0001265311 00000 n
+0001260971 00000 n
+0001259221 00000 n
+0001261100 00000 n
+0001261166 00000 n
+0001261233 00000 n
+0001261300 00000 n
+0001261367 00000 n
+0001261434 00000 n
+0001261501 00000 n
+0001261568 00000 n
+0001261635 00000 n
+0001261702 00000 n
+0001261768 00000 n
+0001261835 00000 n
+0001261902 00000 n
+0001261969 00000 n
+0001262036 00000 n
+0001262103 00000 n
+0001262170 00000 n
+0001262237 00000 n
+0001262304 00000 n
+0001262371 00000 n
+0001262437 00000 n
+0001262504 00000 n
+0001262571 00000 n
+0001262638 00000 n
+0001262705 00000 n
+0001262772 00000 n
+0001262839 00000 n
+0001262906 00000 n
+0001262973 00000 n
+0001263040 00000 n
+0001263106 00000 n
+0001263173 00000 n
+0001263240 00000 n
+0001263307 00000 n
+0001263374 00000 n
+0001263441 00000 n
+0001263508 00000 n
+0001263575 00000 n
+0001263642 00000 n
+0001263708 00000 n
+0001263775 00000 n
+0001263841 00000 n
+0001263908 00000 n
+0001263975 00000 n
+0001264042 00000 n
+0001264109 00000 n
+0001264176 00000 n
+0001264243 00000 n
+0001264310 00000 n
+0001264377 00000 n
+0001264443 00000 n
+0001264510 00000 n
+0001264577 00000 n
+0001264644 00000 n
+0001264711 00000 n
+0001264778 00000 n
+0001264845 00000 n
+0001264912 00000 n
+0001264979 00000 n
+0001265046 00000 n
+0001265112 00000 n
+0001265179 00000 n
+0001265245 00000 n
+0001271885 00000 n
+0001267474 00000 n
+0001265476 00000 n
+0001267603 00000 n
+0001267669 00000 n
+0001267736 00000 n
+0001267803 00000 n
+0001267870 00000 n
+0001267937 00000 n
+0001268004 00000 n
+0001268071 00000 n
+0001268138 00000 n
+0001268205 00000 n
+0001268271 00000 n
+0001268338 00000 n
+0001268405 00000 n
+0001268472 00000 n
+0001268539 00000 n
+0001268606 00000 n
+0001268673 00000 n
+0001268740 00000 n
+0001268807 00000 n
+0001268874 00000 n
+0001268941 00000 n
+0001269008 00000 n
+0001269075 00000 n
+0001269142 00000 n
+0001269209 00000 n
+0001269276 00000 n
+0001269343 00000 n
+0001269410 00000 n
+0001269477 00000 n
+0001269544 00000 n
+0001269611 00000 n
+0001269678 00000 n
+0001269745 00000 n
+0001269812 00000 n
+0001269879 00000 n
+0001269946 00000 n
+0001270013 00000 n
+0001270080 00000 n
+0001270147 00000 n
+0001270213 00000 n
+0001270280 00000 n
+0001270347 00000 n
+0001270414 00000 n
+0001270481 00000 n
+0001270548 00000 n
+0001270615 00000 n
+0001270682 00000 n
+0001270749 00000 n
+0001270816 00000 n
+0001270883 00000 n
+0001270950 00000 n
+0001271017 00000 n
+0001271084 00000 n
+0001271151 00000 n
+0001271218 00000 n
+0001271285 00000 n
+0001271352 00000 n
+0001271419 00000 n
+0001271485 00000 n
+0001271552 00000 n
+0001271619 00000 n
+0001271686 00000 n
+0001271753 00000 n
+0001271819 00000 n
+0001278172 00000 n
+0001273901 00000 n
+0001272050 00000 n
+0001274030 00000 n
+0001274096 00000 n
+0001274163 00000 n
+0001274230 00000 n
+0001274297 00000 n
+0001274364 00000 n
+0001274431 00000 n
+0001274498 00000 n
+0001274565 00000 n
+0001274632 00000 n
+0001274698 00000 n
+0001274765 00000 n
+0001274832 00000 n
+0001274899 00000 n
+0001274966 00000 n
+0001275033 00000 n
+0001275100 00000 n
+0001275167 00000 n
+0001275234 00000 n
+0001275300 00000 n
+0001275367 00000 n
+0001275434 00000 n
+0001275501 00000 n
+0001275568 00000 n
+0001275635 00000 n
+0001275702 00000 n
+0001275769 00000 n
+0001275836 00000 n
+0001275901 00000 n
+0001275968 00000 n
+0001276035 00000 n
+0001276102 00000 n
+0001276169 00000 n
+0001276236 00000 n
+0001276303 00000 n
+0001276370 00000 n
+0001276437 00000 n
+0001276503 00000 n
+0001276570 00000 n
+0001276637 00000 n
+0001276704 00000 n
+0001276771 00000 n
+0001276838 00000 n
+0001276905 00000 n
+0001276972 00000 n
+0001277039 00000 n
+0001277105 00000 n
+0001277172 00000 n
+0001277239 00000 n
+0001277306 00000 n
+0001277373 00000 n
+0001277440 00000 n
+0001277507 00000 n
+0001277574 00000 n
+0001277641 00000 n
+0001277707 00000 n
+0001277774 00000 n
+0001277839 00000 n
+0001277906 00000 n
+0001277973 00000 n
+0001278040 00000 n
+0001278106 00000 n
+0001284455 00000 n
+0001280182 00000 n
+0001278350 00000 n
+0001280311 00000 n
+0001280377 00000 n
+0001280444 00000 n
+0001280511 00000 n
+0001280578 00000 n
+0001280645 00000 n
+0001280712 00000 n
+0001280779 00000 n
+0001280846 00000 n
+0001280913 00000 n
+0001280979 00000 n
+0001281046 00000 n
+0001281113 00000 n
+0001281180 00000 n
+0001281247 00000 n
+0001281314 00000 n
+0001281381 00000 n
+0001281448 00000 n
+0001281515 00000 n
+0001281581 00000 n
+0001281648 00000 n
+0001281715 00000 n
+0001281782 00000 n
+0001281849 00000 n
+0001281916 00000 n
+0001281983 00000 n
+0001282050 00000 n
+0001282117 00000 n
+0001282182 00000 n
+0001282249 00000 n
+0001282316 00000 n
+0001282383 00000 n
+0001282450 00000 n
+0001282517 00000 n
+0001282584 00000 n
+0001282651 00000 n
+0001282718 00000 n
+0001282784 00000 n
+0001282851 00000 n
+0001282918 00000 n
+0001282985 00000 n
+0001283052 00000 n
+0001283119 00000 n
+0001283186 00000 n
+0001283253 00000 n
+0001283320 00000 n
+0001283386 00000 n
+0001283453 00000 n
+0001283520 00000 n
+0001283587 00000 n
+0001283654 00000 n
+0001283721 00000 n
+0001283788 00000 n
+0001283855 00000 n
+0001283922 00000 n
+0001283989 00000 n
+0001284055 00000 n
+0001284122 00000 n
+0001284189 00000 n
+0001284256 00000 n
+0001284323 00000 n
+0001284389 00000 n
+0001290649 00000 n
+0001286243 00000 n
+0001284633 00000 n
+0001286372 00000 n
+0001286438 00000 n
+0001286505 00000 n
+0001286572 00000 n
+0001286639 00000 n
+0001286706 00000 n
+0001286773 00000 n
+0001286840 00000 n
+0001286907 00000 n
+0001286974 00000 n
+0001287040 00000 n
+0001287107 00000 n
+0001287174 00000 n
+0001287241 00000 n
+0001287308 00000 n
+0001287375 00000 n
+0001287442 00000 n
+0001287509 00000 n
+0001287576 00000 n
+0001287642 00000 n
+0001287709 00000 n
+0001287776 00000 n
+0001287843 00000 n
+0001287910 00000 n
+0001287977 00000 n
+0001288044 00000 n
+0001288111 00000 n
+0001288178 00000 n
+0001288243 00000 n
+0001288310 00000 n
+0001288377 00000 n
+0001288444 00000 n
+0001288511 00000 n
+0001288578 00000 n
+0001288645 00000 n
+0001288712 00000 n
+0001288779 00000 n
+0001288845 00000 n
+0001288912 00000 n
+0001288979 00000 n
+0001289046 00000 n
+0001289113 00000 n
+0001289180 00000 n
+0001289247 00000 n
+0001289314 00000 n
+0001289381 00000 n
+0001289447 00000 n
+0001289514 00000 n
+0001289581 00000 n
+0001289648 00000 n
+0001289715 00000 n
+0001289782 00000 n
+0001289849 00000 n
+0001289916 00000 n
+0001289983 00000 n
+0001290049 00000 n
+0001290116 00000 n
+0001290183 00000 n
+0001290250 00000 n
+0001290317 00000 n
+0001290384 00000 n
+0001290451 00000 n
+0001290518 00000 n
+0001290583 00000 n
+0001297034 00000 n
+0001292627 00000 n
+0001290814 00000 n
+0001292756 00000 n
+0001292822 00000 n
+0001292889 00000 n
+0001292956 00000 n
+0001293023 00000 n
+0001293090 00000 n
+0001293157 00000 n
+0001293224 00000 n
+0001293291 00000 n
+0001293358 00000 n
+0001293424 00000 n
+0001293491 00000 n
+0001293558 00000 n
+0001293625 00000 n
+0001293692 00000 n
+0001293759 00000 n
+0001293826 00000 n
+0001293893 00000 n
+0001293960 00000 n
+0001294026 00000 n
+0001294093 00000 n
+0001294160 00000 n
+0001294227 00000 n
+0001294294 00000 n
+0001294361 00000 n
+0001294428 00000 n
+0001294495 00000 n
+0001294562 00000 n
+0001294627 00000 n
+0001294694 00000 n
+0001294761 00000 n
+0001294828 00000 n
+0001294895 00000 n
+0001294962 00000 n
+0001295029 00000 n
+0001295096 00000 n
+0001295163 00000 n
+0001295229 00000 n
+0001295296 00000 n
+0001295363 00000 n
+0001295430 00000 n
+0001295497 00000 n
+0001295564 00000 n
+0001295631 00000 n
+0001295698 00000 n
+0001295765 00000 n
+0001295831 00000 n
+0001295898 00000 n
+0001295965 00000 n
+0001296032 00000 n
+0001296099 00000 n
+0001296166 00000 n
+0001296233 00000 n
+0001296300 00000 n
+0001296367 00000 n
+0001296433 00000 n
+0001296500 00000 n
+0001296567 00000 n
+0001296634 00000 n
+0001296701 00000 n
+0001296768 00000 n
+0001296835 00000 n
+0001296902 00000 n
+0001296968 00000 n
+0001300334 00000 n
+0001298333 00000 n
+0001297199 00000 n
+0001298462 00000 n
+0001298528 00000 n
+0001298595 00000 n
+0001298662 00000 n
+0001298729 00000 n
+0001298796 00000 n
+0001298863 00000 n
+0001298930 00000 n
+0001298997 00000 n
+0001299064 00000 n
+0001299131 00000 n
+0001299197 00000 n
+0001299264 00000 n
+0001299331 00000 n
+0001299398 00000 n
+0001299465 00000 n
+0001299532 00000 n
+0001299599 00000 n
+0001299666 00000 n
+0001299733 00000 n
+0001299800 00000 n
+0001299866 00000 n
+0001299932 00000 n
+0001299999 00000 n
+0001300066 00000 n
+0001300133 00000 n
+0001300200 00000 n
+0001300267 00000 n
+0001302278 00000 n
+0001302434 00000 n
+0001302591 00000 n
+0001302748 00000 n
+0001302904 00000 n
+0001303061 00000 n
+0001303218 00000 n
+0001303375 00000 n
+0001303532 00000 n
+0001303689 00000 n
+0001303847 00000 n
+0001304005 00000 n
+0001304163 00000 n
+0001304319 00000 n
+0001304476 00000 n
+0001304634 00000 n
+0001304792 00000 n
+0001304950 00000 n
+0001305108 00000 n
+0001305266 00000 n
+0001305424 00000 n
+0001305581 00000 n
+0001305738 00000 n
+0001305895 00000 n
+0001306052 00000 n
+0001306210 00000 n
+0001306368 00000 n
+0001306526 00000 n
+0001306684 00000 n
+0001306842 00000 n
+0001308131 00000 n
+0001307127 00000 n
+0001301808 00000 n
+0001300499 00000 n
+0001306997 00000 n
+0001301955 00000 n
+0001308289 00000 n
+0001308447 00000 n
+0001308605 00000 n
+0001308763 00000 n
+0001308921 00000 n
+0001309079 00000 n
+0001309235 00000 n
+0001309393 00000 n
+0001309551 00000 n
+0001309775 00000 n
+0001307861 00000 n
+0001307279 00000 n
+0001309709 00000 n
+0001308008 00000 n
+0001885016 00000 n
+0001310041 00000 n
+0001884836 00000 n
+0001310075 00000 n
+0001884181 00000 n
+0001310157 00000 n
+0001885223 00000 n
+0001310255 00000 n
+0001885140 00000 n
+0001310289 00000 n
+0001310317 00000 n
+0001310663 00000 n
+0001885349 00000 n
+0001311101 00000 n
+0001311129 00000 n
+0001311319 00000 n
+0001311475 00000 n
+0001311567 00000 n
+0001311649 00000 n
+0001311731 00000 n
+0001312055 00000 n
+0001312325 00000 n
+0001312467 00000 n
+0001312907 00000 n
+0001312935 00000 n
+0001313179 00000 n
+0001313603 00000 n
+0001313977 00000 n
+0001314297 00000 n
+0001314829 00000 n
+0001315219 00000 n
+0001315267 00000 n
+0001315373 00000 n
+0001315657 00000 n
+0001315811 00000 n
+0001316041 00000 n
+0001316269 00000 n
+0001316305 00000 n
+0001316411 00000 n
+0001348445 00000 n
+0001316547 00000 n
+0001378931 00000 n
+0001348949 00000 n
+0001402092 00000 n
+0001379414 00000 n
+0001423126 00000 n
+0001402346 00000 n
+0001426612 00000 n
+0001423387 00000 n
+0001432409 00000 n
+0001426968 00000 n
+0001435787 00000 n
+0001432698 00000 n
+0001472524 00000 n
+0001436032 00000 n
+0001495401 00000 n
+0001473208 00000 n
+0001518791 00000 n
+0001495702 00000 n
+0001541666 00000 n
+0001519063 00000 n
+0001564254 00000 n
+0001541961 00000 n
+0001594868 00000 n
+0001564549 00000 n
+0001621049 00000 n
+0001595343 00000 n
+0001639639 00000 n
+0001621406 00000 n
+0001647828 00000 n
+0001639987 00000 n
+0001676269 00000 n
+0001648073 00000 n
+0001695707 00000 n
+0001676603 00000 n
+0001710328 00000 n
+0001696050 00000 n
+0001724972 00000 n
+0001710590 00000 n
+0001738800 00000 n
+0001725293 00000 n
+0001742002 00000 n
+0001739061 00000 n
+0001744766 00000 n
+0001742265 00000 n
+0001747772 00000 n
+0001745020 00000 n
+0001780837 00000 n
+0001748020 00000 n
+0001801230 00000 n
+0001781513 00000 n
+0001826445 00000 n
+0001801512 00000 n
+0001859185 00000 n
+0001826878 00000 n
+0001883899 00000 n
+0001859933 00000 n
+0001895160 00000 n
+0001895324 00000 n
+0001895491 00000 n
+0001895596 00000 n
+0001895686 00000 n
+0001899507 00000 n
+0001900228 00000 n
+0001900964 00000 n
+0001901700 00000 n
+0001902432 00000 n
+0001903167 00000 n
+0001903905 00000 n
+0001904640 00000 n
+0001905372 00000 n
+0001906108 00000 n
+0001906844 00000 n
+0001907576 00000 n
+0001908312 00000 n
+0001909048 00000 n
+0001909780 00000 n
+0001910454 00000 n
+0001911124 00000 n
+0001911791 00000 n
+0001912461 00000 n
+0001913131 00000 n
+0001913798 00000 n
+0001914468 00000 n
+0001915137 00000 n
+0001915809 00000 n
+0001916474 00000 n
+0001917144 00000 n
+0001917814 00000 n
+0001918481 00000 n
+0001919151 00000 n
+0001919821 00000 n
+0001920487 00000 n
+0001921159 00000 n
+0001921828 00000 n
+0001922498 00000 n
+0001923165 00000 n
+0001923835 00000 n
+0001924505 00000 n
+0001925172 00000 n
+0001925842 00000 n
+0001926511 00000 n
+0001927183 00000 n
+0001927849 00000 n
+0001928519 00000 n
+0001929189 00000 n
+0001929856 00000 n
+0001930526 00000 n
+0001931196 00000 n
+0001931866 00000 n
+0001932531 00000 n
+0001933201 00000 n
+0001933871 00000 n
+0001934538 00000 n
+0001935208 00000 n
+0001935878 00000 n
+0001936548 00000 n
+0001937214 00000 n
+0001937886 00000 n
+0001938555 00000 n
+0001939222 00000 n
+0001939892 00000 n
+0001940562 00000 n
+0001941232 00000 n
+0001941899 00000 n
+0001942569 00000 n
+0001943238 00000 n
+0001943907 00000 n
+0001944577 00000 n
+0001945247 00000 n
+0001945917 00000 n
+0001946584 00000 n
+0001947254 00000 n
+0001947924 00000 n
+0001948590 00000 n
+0001949262 00000 n
+0001949931 00000 n
+0001950601 00000 n
+0001951268 00000 n
+0001951938 00000 n
+0001952608 00000 n
+0001953275 00000 n
+0001953945 00000 n
+0001954614 00000 n
+0001955286 00000 n
+0001955946 00000 n
+0001956616 00000 n
+0001957286 00000 n
+0001957953 00000 n
+0001958623 00000 n
+0001959293 00000 n
+0001959960 00000 n
+0001960629 00000 n
+0001961299 00000 n
+0001961969 00000 n
+0001962636 00000 n
+0001963306 00000 n
+0001963976 00000 n
+0001964643 00000 n
+0001965312 00000 n
+0001965984 00000 n
+0001966653 00000 n
+0001967320 00000 n
+0001967990 00000 n
+0001968660 00000 n
+0001969327 00000 n
+0001969997 00000 n
+0001970667 00000 n
+0001971336 00000 n
+0001972005 00000 n
+0001972675 00000 n
+0001973345 00000 n
+0001974012 00000 n
+0001974682 00000 n
+0001975352 00000 n
+0001976022 00000 n
+0001976688 00000 n
+0001977360 00000 n
+0001978029 00000 n
+0001978692 00000 n
+0001979362 00000 n
+0001980032 00000 n
+0001980702 00000 n
+0001981369 00000 n
+0001982038 00000 n
+0001982710 00000 n
+0001983376 00000 n
+0001984046 00000 n
+0001984716 00000 n
+0001985386 00000 n
+0001986053 00000 n
+0001986723 00000 n
+0001987393 00000 n
+0001988062 00000 n
+0001988731 00000 n
+0001989401 00000 n
+0001990071 00000 n
+0001990738 00000 n
+0001991408 00000 n
+0001992078 00000 n
+0001992745 00000 n
+0001993414 00000 n
+0001994086 00000 n
+0001994755 00000 n
+0001995422 00000 n
+0001996092 00000 n
+0001996762 00000 n
+0001997429 00000 n
+0001998099 00000 n
+0001998769 00000 n
+0001999436 00000 n
+0002000105 00000 n
+0002000775 00000 n
+0002001445 00000 n
+0002002108 00000 n
+0002002778 00000 n
+0002003448 00000 n
+0002004114 00000 n
+0002004786 00000 n
+0002005455 00000 n
+0002006125 00000 n
+0002006792 00000 n
+0002007462 00000 n
+0002008132 00000 n
+0002008799 00000 n
+0002009469 00000 n
+0002010138 00000 n
+0002010810 00000 n
+0002011476 00000 n
+0002012146 00000 n
+0002012816 00000 n
+0002013483 00000 n
+0002014153 00000 n
+0002014823 00000 n
+0002015493 00000 n
+0002016162 00000 n
+0002016831 00000 n
+0002017501 00000 n
+0002018168 00000 n
+0002018838 00000 n
+0002019508 00000 n
+0002020178 00000 n
+0002020845 00000 n
+0002021514 00000 n
+0002022186 00000 n
+0002022852 00000 n
+0002023522 00000 n
+0002024192 00000 n
+0002024862 00000 n
+0002025525 00000 n
+0002026195 00000 n
+0002026864 00000 n
+0002027533 00000 n
+0002028203 00000 n
+0002028873 00000 n
+0002029543 00000 n
+0002030210 00000 n
+0002030880 00000 n
+0002031550 00000 n
+0002032216 00000 n
+0002032888 00000 n
+0002033557 00000 n
+0002034227 00000 n
+0002034894 00000 n
+0002035564 00000 n
+0002036234 00000 n
+0002036901 00000 n
+0002037571 00000 n
+0002038240 00000 n
+0002038912 00000 n
+0002039577 00000 n
+0002040247 00000 n
+0002040917 00000 n
+0002041584 00000 n
+0002042254 00000 n
+0002042924 00000 n
+0002043590 00000 n
+0002044262 00000 n
+0002044931 00000 n
+0002045601 00000 n
+0002046268 00000 n
+0002046941 00000 n
+0002047614 00000 n
+0002048280 00000 n
+0002048952 00000 n
+0002049626 00000 n
+0002050298 00000 n
+0002050968 00000 n
+0002051641 00000 n
+0002052314 00000 n
+0002052984 00000 n
+0002053657 00000 n
+0002054330 00000 n
+0002055002 00000 n
+0002055673 00000 n
+0002056346 00000 n
+0002057019 00000 n
+0002057689 00000 n
+0002058362 00000 n
+0002059035 00000 n
+0002059708 00000 n
+0002060377 00000 n
+0002061051 00000 n
+0002061723 00000 n
+0002062393 00000 n
+0002063066 00000 n
+0002063739 00000 n
+0002064412 00000 n
+0002065082 00000 n
+0002065755 00000 n
+0002066427 00000 n
+0002067098 00000 n
+0002067771 00000 n
+0002068444 00000 n
+0002069117 00000 n
+0002069787 00000 n
+0002070460 00000 n
+0002071133 00000 n
+0002071800 00000 n
+0002072472 00000 n
+0002073145 00000 n
+0002073818 00000 n
+0002074488 00000 n
+0002075161 00000 n
+0002075834 00000 n
+0002076504 00000 n
+0002077176 00000 n
+0002077850 00000 n
+0002078522 00000 n
+0002079192 00000 n
+0002079865 00000 n
+0002080538 00000 n
+0002081208 00000 n
+0002081881 00000 n
+0002082554 00000 n
+0002083223 00000 n
+0002083895 00000 n
+0002084568 00000 n
+0002085241 00000 n
+0002085911 00000 n
+0002086584 00000 n
+0002087257 00000 n
+0002087927 00000 n
+0002088599 00000 n
+0002089273 00000 n
+0002089945 00000 n
+0002090615 00000 n
+0002091288 00000 n
+0002091961 00000 n
+0002092631 00000 n
+0002093317 00000 n
+0002094019 00000 n
+0002094720 00000 n
+0002095415 00000 n
+0002096117 00000 n
+0002096819 00000 n
+0002097517 00000 n
+0002098219 00000 n
+0002098921 00000 n
+0002099623 00000 n
+0002100323 00000 n
+0002101024 00000 n
+0002101726 00000 n
+0002102424 00000 n
+0002103126 00000 n
+0002103828 00000 n
+0002104530 00000 n
+0002105228 00000 n
+0002105929 00000 n
+0002106633 00000 n
+0002107330 00000 n
+0002108032 00000 n
+0002108734 00000 n
+0002109436 00000 n
+0002110134 00000 n
+0002110836 00000 n
+0002111538 00000 n
+0002112238 00000 n
+0002112939 00000 n
+0002113641 00000 n
+0002114343 00000 n
+0002115041 00000 n
+0002115743 00000 n
+0002116445 00000 n
+0002117143 00000 n
+0002117844 00000 n
+0002118548 00000 n
+0002119249 00000 n
+0002119995 00000 n
+0002120699 00000 n
+0002121403 00000 n
+0002122103 00000 n
+0002122835 00000 n
+0002123505 00000 n
+0002124174 00000 n
+0002124884 00000 n
+0002125617 00000 n
+0002126006 00000 n
+0002126392 00000 n
+0002126779 00000 n
+0002127166 00000 n
+0002127553 00000 n
+0002127940 00000 n
+0002128327 00000 n
+0002128714 00000 n
+0002129100 00000 n
+0002129487 00000 n
+0002129693 00000 n
+0002129871 00000 n
+0002129913 00000 n
+0002130049 00000 n
+trailer
+<< /Size 12085 /Root 12083 0 R /Info 12084 0 R /ID [ <98F62B4A9AC68BA1D34CCE3C0BBC1EE2> <98F62B4A9AC68BA1D34CCE3C0BBC1EE2> ] >>
+startxref
+2130683
+%%EOF
diff --git a/macros/latex/contrib/nicematrix/nicematrix-french.pdf b/macros/latex/contrib/nicematrix/nicematrix-french.pdf
index f5ec63ad3a..3b6a3171cd 100644
--- a/macros/latex/contrib/nicematrix/nicematrix-french.pdf
+++ b/macros/latex/contrib/nicematrix/nicematrix-french.pdf
@@ -71,2137 +71,2219 @@ endobj
endobj
44 0 obj
-<< /S /GoTo /D (section.5) >>
+<< /S /GoTo /D (subsection.4.7) >>
endobj
47 0 obj
-(\376\377\000L\000e\000s\000\040\000f\000i\000l\000e\000t\000s\000\040\000h\000o\000r\000i\000z\000o\000n\000t\000a\000u\000x\000\040\000e\000t\000\040\000v\000e\000r\000t\000i\000c\000a\000u\000x)
+(\376\377\000\134\000\134\000\040\000e\000t\000\040\000\046\000\040\000d\000a\000n\000s\000\040\000l\000e\000s\000\040\000b\000l\000o\000c\000s)
endobj
48 0 obj
-<< /S /GoTo /D (subsection.5.1) >>
+<< /S /GoTo /D (section.5) >>
endobj
51 0 obj
-(\376\377\000Q\000u\000e\000l\000q\000u\000e\000s\000\040\000d\000i\000f\000f\000\351\000r\000e\000n\000c\000e\000s\000\040\000a\000v\000e\000c\000\040\000l\000e\000s\000\040\000e\000n\000v\000i\000r\000o\000n\000n\000e\000m\000e\000n\000t\000s\000\040\000c\000l\000a\000s\000s\000i\000q\000u\000e\000s)
+(\376\377\000L\000e\000s\000\040\000f\000i\000l\000e\000t\000s\000\040\000h\000o\000r\000i\000z\000o\000n\000t\000a\000u\000x\000\040\000e\000t\000\040\000v\000e\000r\000t\000i\000c\000a\000u\000x)
endobj
52 0 obj
-<< /S /GoTo /D (subsubsection.5.1.1) >>
+<< /S /GoTo /D (subsection.5.1) >>
endobj
55 0 obj
-(\376\377\000L\000e\000s\000\040\000f\000i\000l\000e\000t\000s\000\040\000v\000e\000r\000t\000i\000c\000a\000u\000x)
+(\376\377\000Q\000u\000e\000l\000q\000u\000e\000s\000\040\000d\000i\000f\000f\000\351\000r\000e\000n\000c\000e\000s\000\040\000a\000v\000e\000c\000\040\000l\000e\000s\000\040\000e\000n\000v\000i\000r\000o\000n\000n\000e\000m\000e\000n\000t\000s\000\040\000c\000l\000a\000s\000s\000i\000q\000u\000e\000s)
endobj
56 0 obj
-<< /S /GoTo /D (subsubsection.5.1.2) >>
+<< /S /GoTo /D (subsubsection.5.1.1) >>
endobj
59 0 obj
-(\376\377\000L\000a\000\040\000c\000o\000m\000m\000a\000n\000d\000e\000\040\000\134\000c\000l\000i\000n\000e)
+(\376\377\000L\000e\000s\000\040\000f\000i\000l\000e\000t\000s\000\040\000v\000e\000r\000t\000i\000c\000a\000u\000x)
endobj
60 0 obj
-<< /S /GoTo /D (subsection.5.2) >>
+<< /S /GoTo /D (subsubsection.5.1.2) >>
endobj
63 0 obj
-(\376\377\000L\000'\000\351\000p\000a\000i\000s\000s\000e\000u\000r\000\040\000e\000t\000\040\000l\000a\000\040\000c\000o\000u\000l\000e\000u\000r\000\040\000d\000e\000s\000\040\000f\000i\000l\000e\000t\000s)
+(\376\377\000L\000a\000\040\000c\000o\000m\000m\000a\000n\000d\000e\000\040\000\134\000c\000l\000i\000n\000e)
endobj
64 0 obj
-<< /S /GoTo /D (subsection.5.3) >>
+<< /S /GoTo /D (subsection.5.2) >>
endobj
67 0 obj
-(\376\377\000L\000e\000s\000\040\000o\000u\000t\000i\000l\000s\000\040\000d\000e\000\040\000n\000i\000c\000e\000m\000a\000t\000r\000i\000x\000\040\000p\000o\000u\000r\000\040\000t\000r\000a\000c\000e\000r\000\040\000d\000e\000s\000\040\000f\000i\000l\000e\000t\000s)
+(\376\377\000L\000'\000\351\000p\000a\000i\000s\000s\000e\000u\000r\000\040\000e\000t\000\040\000l\000a\000\040\000c\000o\000u\000l\000e\000u\000r\000\040\000d\000e\000s\000\040\000f\000i\000l\000e\000t\000s)
endobj
68 0 obj
-<< /S /GoTo /D (subsubsection.5.3.1) >>
+<< /S /GoTo /D (subsection.5.3) >>
endobj
71 0 obj
-(\376\377\000L\000e\000s\000\040\000c\000l\000\351\000s\000\040\000h\000l\000i\000n\000e\000s\000\040\000e\000t\000\040\000v\000l\000i\000n\000e\000s)
+(\376\377\000L\000e\000s\000\040\000o\000u\000t\000i\000l\000s\000\040\000d\000e\000\040\000n\000i\000c\000e\000m\000a\000t\000r\000i\000x\000\040\000p\000o\000u\000r\000\040\000t\000r\000a\000c\000e\000r\000\040\000d\000e\000s\000\040\000f\000i\000l\000e\000t\000s)
endobj
72 0 obj
-<< /S /GoTo /D (subsubsection.5.3.2) >>
+<< /S /GoTo /D (subsubsection.5.3.1) >>
endobj
75 0 obj
-(\376\377\000L\000e\000s\000\040\000c\000l\000\351\000s\000\040\000h\000v\000l\000i\000n\000e\000s\000\040\000e\000t\000\040\000h\000v\000l\000i\000n\000e\000s\000-\000e\000x\000c\000e\000p\000t\000-\000b\000o\000r\000d\000e\000r\000s)
+(\376\377\000L\000e\000s\000\040\000c\000l\000\351\000s\000\040\000h\000l\000i\000n\000e\000s\000\040\000e\000t\000\040\000v\000l\000i\000n\000e\000s)
endobj
76 0 obj
-<< /S /GoTo /D (subsubsection.5.3.3) >>
+<< /S /GoTo /D (subsubsection.5.3.2) >>
endobj
79 0 obj
-(\376\377\000L\000e\000s\000\040\000c\000o\000i\000n\000s\000\040\000\050\000v\000i\000d\000e\000s\000\051)
+(\376\377\000L\000e\000s\000\040\000c\000l\000\351\000s\000\040\000h\000v\000l\000i\000n\000e\000s\000\040\000e\000t\000\040\000h\000v\000l\000i\000n\000e\000s\000-\000e\000x\000c\000e\000p\000t\000-\000b\000o\000r\000d\000e\000r\000s)
endobj
80 0 obj
-<< /S /GoTo /D (subsubsection.5.3.4) >>
+<< /S /GoTo /D (subsubsection.5.3.3) >>
endobj
83 0 obj
-(\376\377\000L\000a\000\040\000c\000o\000m\000m\000a\000n\000d\000e\000\040\000\134\000d\000i\000a\000g\000b\000o\000x)
+(\376\377\000L\000e\000s\000\040\000c\000o\000i\000n\000s\000\040\000\050\000v\000i\000d\000e\000s\000\051)
endobj
84 0 obj
-<< /S /GoTo /D (subsubsection.5.3.5) >>
+<< /S /GoTo /D (subsubsection.5.3.4) >>
endobj
87 0 obj
-(\376\377\000C\000o\000m\000m\000a\000n\000d\000e\000s\000\040\000p\000o\000u\000r\000\040\000f\000i\000l\000e\000t\000s\000\040\000p\000e\000r\000s\000o\000n\000n\000a\000l\000i\000s\000\351\000s)
+(\376\377\000L\000a\000\040\000c\000o\000m\000m\000a\000n\000d\000e\000\040\000\134\000d\000i\000a\000g\000b\000o\000x)
endobj
88 0 obj
-<< /S /GoTo /D (section.6) >>
+<< /S /GoTo /D (subsubsection.5.3.5) >>
endobj
91 0 obj
-(\376\377\000L\000e\000s\000\040\000c\000o\000u\000l\000e\000u\000r\000s\000\040\000d\000e\000\040\000f\000o\000n\000d\000\040\000d\000e\000s\000\040\000r\000a\000n\000g\000\351\000e\000s\000\040\000e\000t\000\040\000d\000e\000s\000\040\000c\000o\000l\000o\000n\000n\000e\000s)
+(\376\377\000C\000o\000m\000m\000a\000n\000d\000e\000s\000\040\000p\000o\000u\000r\000\040\000f\000i\000l\000e\000t\000s\000\040\000p\000e\000r\000s\000o\000n\000n\000a\000l\000i\000s\000\351\000s)
endobj
92 0 obj
-<< /S /GoTo /D (subsection.6.1) >>
+<< /S /GoTo /D (section.6) >>
endobj
95 0 obj
-(\376\377\000U\000t\000i\000l\000i\000s\000a\000t\000i\000o\000n\000\040\000d\000e\000\040\000c\000o\000l\000o\000r\000t\000b\000l)
+(\376\377\000L\000e\000s\000\040\000c\000o\000u\000l\000e\000u\000r\000s\000\040\000d\000e\000\040\000f\000o\000n\000d\000\040\000d\000e\000s\000\040\000r\000a\000n\000g\000\351\000e\000s\000\040\000e\000t\000\040\000d\000e\000s\000\040\000c\000o\000l\000o\000n\000n\000e\000s)
endobj
96 0 obj
-<< /S /GoTo /D (subsection.6.2) >>
+<< /S /GoTo /D (subsection.6.1) >>
endobj
99 0 obj
-(\376\377\000L\000e\000s\000\040\000o\000u\000t\000i\000l\000s\000\040\000d\000e\000\040\000n\000i\000c\000e\000m\000a\000t\000r\000i\000x\000\040\000d\000a\000n\000s\000\040\000l\000e\000\040\000\134\000C\000o\000d\000e\000B\000e\000f\000o\000r\000e)
+(\376\377\000U\000t\000i\000l\000i\000s\000a\000t\000i\000o\000n\000\040\000d\000e\000\040\000c\000o\000l\000o\000r\000t\000b\000l)
endobj
100 0 obj
-<< /S /GoTo /D (subsection.6.3) >>
+<< /S /GoTo /D (subsection.6.2) >>
endobj
103 0 obj
-(\376\377\000O\000u\000t\000i\000l\000s\000\040\000d\000e\000\040\000c\000o\000l\000o\000r\000i\000a\000g\000e\000\040\000e\000n\000\040\000t\000a\000b\000l\000e\000a\000u)
+(\376\377\000L\000e\000s\000\040\000o\000u\000t\000i\000l\000s\000\040\000d\000e\000\040\000n\000i\000c\000e\000m\000a\000t\000r\000i\000x\000\040\000d\000a\000n\000s\000\040\000l\000e\000\040\000\134\000C\000o\000d\000e\000B\000e\000f\000o\000r\000e)
endobj
104 0 obj
-<< /S /GoTo /D (subsection.6.4) >>
+<< /S /GoTo /D (subsection.6.3) >>
endobj
107 0 obj
-(\376\377\000L\000a\000\040\000c\000o\000u\000l\000e\000u\000r\000\040\000s\000p\000\351\000c\000i\000a\000l\000\040\000\253\000n\000o\000c\000o\000l\000o\000r\000\273)
+(\376\377\000O\000u\000t\000i\000l\000s\000\040\000d\000e\000\040\000c\000o\000l\000o\000r\000i\000a\000g\000e\000\040\000e\000n\000\040\000t\000a\000b\000l\000e\000a\000u)
endobj
108 0 obj
-<< /S /GoTo /D (section.7) >>
+<< /S /GoTo /D (subsection.6.4) >>
endobj
111 0 obj
-(\376\377\000L\000a\000\040\000c\000o\000m\000m\000a\000n\000d\000e\000\040\000\134\000R\000o\000w\000S\000t\000y\000l\000e)
+(\376\377\000L\000a\000\040\000c\000o\000u\000l\000e\000u\000r\000\040\000s\000p\000\351\000c\000i\000a\000l\000\040\000\253\000n\000o\000c\000o\000l\000o\000r\000\273)
endobj
112 0 obj
-<< /S /GoTo /D (section.8) >>
+<< /S /GoTo /D (section.7) >>
endobj
115 0 obj
-(\376\377\000L\000a\000\040\000l\000a\000r\000g\000e\000u\000r\000\040\000d\000e\000s\000\040\000c\000o\000l\000o\000n\000n\000e\000s)
+(\376\377\000L\000a\000\040\000c\000o\000m\000m\000a\000n\000d\000e\000\040\000\134\000R\000o\000w\000S\000t\000y\000l\000e)
endobj
116 0 obj
-<< /S /GoTo /D (subsection.8.1) >>
+<< /S /GoTo /D (section.8) >>
endobj
119 0 obj
-(\376\377\000T\000e\000c\000h\000n\000i\000q\000u\000e\000s\000\040\000d\000e\000\040\000b\000a\000s\000e)
+(\376\377\000L\000a\000\040\000l\000a\000r\000g\000e\000u\000r\000\040\000d\000e\000s\000\040\000c\000o\000l\000o\000n\000n\000e\000s)
endobj
120 0 obj
-<< /S /GoTo /D (subsection.8.2) >>
+<< /S /GoTo /D (subsection.8.1) >>
endobj
123 0 obj
-(\376\377\000L\000e\000s\000\040\000c\000o\000l\000o\000n\000n\000e\000s\000\040\000X)
+(\376\377\000T\000e\000c\000h\000n\000i\000q\000u\000e\000s\000\040\000d\000e\000\040\000b\000a\000s\000e)
endobj
124 0 obj
-<< /S /GoTo /D (subsection.8.3) >>
+<< /S /GoTo /D (subsection.8.2) >>
endobj
127 0 obj
-(\376\377\000L\000e\000s\000\040\000c\000o\000l\000o\000n\000n\000e\000s\000\040\000V\000\040\000d\000e\000\040\000v\000a\000r\000w\000i\000d\000t\000h)
+(\376\377\000L\000e\000s\000\040\000c\000o\000l\000o\000n\000n\000e\000s\000\040\000X)
endobj
128 0 obj
-<< /S /GoTo /D (section.9) >>
+<< /S /GoTo /D (subsection.8.3) >>
endobj
131 0 obj
-(\376\377\000L\000e\000s\000\040\000r\000a\000n\000g\000\351\000e\000s\000\040\000e\000t\000\040\000c\000o\000l\000o\000n\000n\000e\000s\000\040\000e\000x\000t\000\351\000r\000i\000e\000u\000r\000e\000s)
+(\376\377\000L\000e\000s\000\040\000c\000o\000l\000o\000n\000n\000e\000s\000\040\000V\000\040\000d\000e\000\040\000v\000a\000r\000w\000i\000d\000t\000h)
endobj
132 0 obj
-<< /S /GoTo /D (section.10) >>
+<< /S /GoTo /D (section.9) >>
endobj
135 0 obj
-(\376\377\000L\000e\000s\000\040\000l\000i\000g\000n\000e\000s\000\040\000e\000n\000\040\000p\000o\000i\000n\000t\000i\000l\000l\000\351\000s\000\040\000c\000o\000n\000t\000i\000n\000u\000e\000s)
+(\376\377\000L\000e\000s\000\040\000r\000a\000n\000g\000\351\000e\000s\000\040\000e\000t\000\040\000c\000o\000l\000o\000n\000n\000e\000s\000\040\000e\000x\000t\000\351\000r\000i\000e\000u\000r\000e\000s)
endobj
136 0 obj
-<< /S /GoTo /D (subsection.10.1) >>
+<< /S /GoTo /D (section.10) >>
endobj
139 0 obj
-(\376\377\000L\000'\000o\000p\000t\000i\000o\000n\000\040\000n\000u\000l\000l\000i\000f\000y\000-\000d\000o\000t\000s)
+(\376\377\000L\000e\000s\000\040\000l\000i\000g\000n\000e\000s\000\040\000e\000n\000\040\000p\000o\000i\000n\000t\000i\000l\000l\000\351\000s\000\040\000c\000o\000n\000t\000i\000n\000u\000e\000s)
endobj
140 0 obj
-<< /S /GoTo /D (subsection.10.2) >>
+<< /S /GoTo /D (subsection.10.1) >>
endobj
143 0 obj
-(\376\377\000L\000e\000s\000\040\000c\000o\000m\000m\000a\000n\000d\000e\000s\000\040\000\134\000H\000d\000o\000t\000s\000f\000o\000r\000\040\000e\000t\000\040\000\134\000V\000d\000o\000t\000s\000f\000o\000r)
+(\376\377\000L\000'\000o\000p\000t\000i\000o\000n\000\040\000n\000u\000l\000l\000i\000f\000y\000-\000d\000o\000t\000s)
endobj
144 0 obj
-<< /S /GoTo /D (subsection.10.3) >>
+<< /S /GoTo /D (subsection.10.2) >>
endobj
147 0 obj
-(\376\377\000C\000o\000m\000m\000e\000n\000t\000\040\000c\000r\000\351\000e\000r\000\040\000l\000e\000s\000\040\000l\000i\000g\000n\000e\000s\000\040\000e\000n\000\040\000p\000o\000i\000n\000t\000i\000l\000l\000\351\000s\000\040\000d\000e\000\040\000m\000a\000n\000i\000\350\000r\000e\000\040\000t\000r\000a\000n\000s\000p\000a\000r\000e\000n\000t\000e)
+(\376\377\000L\000e\000s\000\040\000c\000o\000m\000m\000a\000n\000d\000e\000s\000\040\000\134\000H\000d\000o\000t\000s\000f\000o\000r\000\040\000e\000t\000\040\000\134\000V\000d\000o\000t\000s\000f\000o\000r)
endobj
148 0 obj
-<< /S /GoTo /D (subsection.10.4) >>
+<< /S /GoTo /D (subsection.10.3) >>
endobj
151 0 obj
-(\376\377\000L\000e\000s\000\040\000l\000a\000b\000e\000l\000s\000\040\000d\000e\000s\000\040\000l\000i\000g\000n\000e\000s\000\040\000e\000n\000\040\000p\000o\000i\000n\000t\000i\000l\000l\000\351\000s)
+(\376\377\000C\000o\000m\000m\000e\000n\000t\000\040\000c\000r\000\351\000e\000r\000\040\000l\000e\000s\000\040\000l\000i\000g\000n\000e\000s\000\040\000e\000n\000\040\000p\000o\000i\000n\000t\000i\000l\000l\000\351\000s\000\040\000d\000e\000\040\000m\000a\000n\000i\000\350\000r\000e\000\040\000t\000r\000a\000n\000s\000p\000a\000r\000e\000n\000t\000e)
endobj
152 0 obj
-<< /S /GoTo /D (subsection.10.5) >>
+<< /S /GoTo /D (subsection.10.4) >>
endobj
155 0 obj
-(\376\377\000P\000e\000r\000s\000o\000n\000n\000a\000l\000i\000s\000a\000t\000i\000o\000n\000\040\000d\000e\000s\000\040\000l\000i\000g\000n\000e\000s\000\040\000e\000n\000\040\000p\000o\000i\000n\000t\000i\000l\000l\000\351\000s)
+(\376\377\000L\000e\000s\000\040\000l\000a\000b\000e\000l\000s\000\040\000d\000e\000s\000\040\000l\000i\000g\000n\000e\000s\000\040\000e\000n\000\040\000p\000o\000i\000n\000t\000i\000l\000l\000\351\000s)
endobj
156 0 obj
-<< /S /GoTo /D (subsection.10.6) >>
+<< /S /GoTo /D (subsection.10.5) >>
endobj
159 0 obj
-(\376\377\000L\000e\000s\000\040\000l\000i\000g\000n\000e\000s\000\040\000p\000o\000i\000n\000t\000i\000l\000l\000\351\000e\000s\000\040\000e\000t\000\040\000l\000e\000s\000\040\000f\000i\000l\000e\000t\000s)
+(\376\377\000P\000e\000r\000s\000o\000n\000n\000a\000l\000i\000s\000a\000t\000i\000o\000n\000\040\000d\000e\000s\000\040\000l\000i\000g\000n\000e\000s\000\040\000e\000n\000\040\000p\000o\000i\000n\000t\000i\000l\000l\000\351\000s)
endobj
160 0 obj
-<< /S /GoTo /D (section.11) >>
+<< /S /GoTo /D (subsection.10.6) >>
endobj
163 0 obj
-(\376\377\000D\000\351\000l\000i\000m\000i\000t\000e\000u\000r\000s\000\040\000d\000a\000n\000s\000\040\000l\000e\000\040\000p\000r\000\351\000a\000m\000b\000u\000l\000e\000\040\000d\000e\000\040\000l\000'\000e\000n\000v\000i\000r\000o\000n\000n\000e\000m\000e\000n\000t)
+(\376\377\000L\000e\000s\000\040\000l\000i\000g\000n\000e\000s\000\040\000p\000o\000i\000n\000t\000i\000l\000l\000\351\000e\000s\000\040\000e\000t\000\040\000l\000e\000s\000\040\000f\000i\000l\000e\000t\000s)
endobj
164 0 obj
-<< /S /GoTo /D (section.12) >>
+<< /S /GoTo /D (section.11) >>
endobj
167 0 obj
-(\376\377\000L\000e\000\040\000\134\000C\000o\000d\000e\000A\000f\000t\000e\000r)
+(\376\377\000D\000\351\000l\000i\000m\000i\000t\000e\000u\000r\000s\000\040\000d\000a\000n\000s\000\040\000l\000e\000\040\000p\000r\000\351\000a\000m\000b\000u\000l\000e\000\040\000d\000e\000\040\000l\000'\000e\000n\000v\000i\000r\000o\000n\000n\000e\000m\000e\000n\000t)
endobj
168 0 obj
-<< /S /GoTo /D (subsection.12.1) >>
+<< /S /GoTo /D (section.12) >>
endobj
171 0 obj
-(\376\377\000L\000a\000\040\000c\000o\000m\000m\000a\000n\000d\000e\000\040\000\134\000l\000i\000n\000e\000\040\000d\000a\000n\000s\000\040\000l\000e\000\040\000\134\000C\000o\000d\000e\000A\000f\000t\000e\000r)
+(\376\377\000L\000e\000\040\000\134\000C\000o\000d\000e\000A\000f\000t\000e\000r)
endobj
172 0 obj
-<< /S /GoTo /D (subsection.12.2) >>
+<< /S /GoTo /D (subsection.12.1) >>
endobj
175 0 obj
-(\376\377\000L\000a\000\040\000c\000o\000m\000m\000a\000n\000d\000e\000\040\000\134\000S\000u\000b\000M\000a\000t\000r\000i\000x\000\040\000d\000a\000n\000s\000\040\000l\000e\000\040\000\134\000C\000o\000d\000e\000A\000f\000t\000e\000r\000\040\000\050\000e\000t\000\040\000l\000e\000\040\000\134\000C\000o\000d\000e\000B\000e\000f\000o\000r\000e\000\051)
+(\376\377\000L\000a\000\040\000c\000o\000m\000m\000a\000n\000d\000e\000\040\000\134\000l\000i\000n\000e\000\040\000d\000a\000n\000s\000\040\000l\000e\000\040\000\134\000C\000o\000d\000e\000A\000f\000t\000e\000r)
endobj
176 0 obj
-<< /S /GoTo /D (subsection.12.3) >>
+<< /S /GoTo /D (subsection.12.2) >>
endobj
179 0 obj
-(\376\377\000L\000e\000s\000\040\000c\000o\000m\000m\000a\000n\000d\000e\000s\000\040\000\134\000O\000v\000e\000r\000B\000r\000a\000c\000e\000\040\000e\000t\000\040\000\134\000U\000n\000d\000e\000r\000B\000r\000a\000c\000e\000\040\000d\000a\000n\000s\000\040\000l\000e\000\040\000\134\000C\000o\000d\000e\000A\000f\000t\000e\000r)
+(\376\377\000L\000a\000\040\000c\000o\000m\000m\000a\000n\000d\000e\000\040\000\134\000S\000u\000b\000M\000a\000t\000r\000i\000x\000\040\000d\000a\000n\000s\000\040\000l\000e\000\040\000\134\000C\000o\000d\000e\000A\000f\000t\000e\000r\000\040\000\050\000e\000t\000\040\000l\000e\000\040\000\134\000C\000o\000d\000e\000B\000e\000f\000o\000r\000e\000\051)
endobj
180 0 obj
-<< /S /GoTo /D (subsection.12.4) >>
+<< /S /GoTo /D (subsection.12.3) >>
endobj
183 0 obj
-(\376\377\000L\000a\000\040\000c\000o\000m\000m\000a\000n\000d\000e\000\040\000\134\000T\000i\000k\000z\000E\000v\000e\000r\000y\000C\000e\000l\000l\000\040\000d\000a\000n\000s\000\040\000l\000e\000\040\000\134\000C\000o\000d\000e\000A\000f\000t\000e\000r)
+(\376\377\000L\000e\000s\000\040\000c\000o\000m\000m\000a\000n\000d\000e\000s\000\040\000\134\000O\000v\000e\000r\000B\000r\000a\000c\000e\000\040\000e\000t\000\040\000\134\000U\000n\000d\000e\000r\000B\000r\000a\000c\000e\000\040\000d\000a\000n\000s\000\040\000l\000e\000\040\000\134\000C\000o\000d\000e\000A\000f\000t\000e\000r)
endobj
184 0 obj
-<< /S /GoTo /D (section.13) >>
+<< /S /GoTo /D (subsection.12.4) >>
endobj
187 0 obj
-(\376\377\000L\000e\000s\000\040\000l\000\351\000g\000e\000n\000d\000e\000s\000\040\000e\000t\000\040\000l\000e\000s\000\040\000n\000o\000t\000e\000s\000\040\000d\000a\000n\000s\000\040\000l\000e\000s\000\040\000t\000a\000b\000l\000e\000a\000u\000x)
+(\376\377\000L\000a\000\040\000c\000o\000m\000m\000a\000n\000d\000e\000\040\000\134\000T\000i\000k\000z\000E\000v\000e\000r\000y\000C\000e\000l\000l\000\040\000d\000a\000n\000s\000\040\000l\000e\000\040\000\134\000C\000o\000d\000e\000A\000f\000t\000e\000r)
endobj
188 0 obj
-<< /S /GoTo /D (subsection.13.1) >>
+<< /S /GoTo /D (section.13) >>
endobj
191 0 obj
-(\376\377\000L\000a\000\040\000l\000\351\000g\000e\000n\000d\000e\000s\000\040\000d\000e\000s\000\040\000t\000a\000b\000l\000e\000a\000u\000x)
+(\376\377\000L\000e\000s\000\040\000l\000\351\000g\000e\000n\000d\000e\000s\000\040\000e\000t\000\040\000l\000e\000s\000\040\000n\000o\000t\000e\000s\000\040\000d\000a\000n\000s\000\040\000l\000e\000s\000\040\000t\000a\000b\000l\000e\000a\000u\000x)
endobj
192 0 obj
-<< /S /GoTo /D (subsection.13.2) >>
+<< /S /GoTo /D (subsection.13.1) >>
endobj
195 0 obj
-(\376\377\000L\000e\000s\000\040\000n\000o\000t\000e\000s\000\040\000d\000e\000\040\000p\000i\000e\000d\000\040\000d\000e\000\040\000p\000a\000g\000e)
+(\376\377\000L\000a\000\040\000l\000\351\000g\000e\000n\000d\000e\000s\000\040\000d\000e\000s\000\040\000t\000a\000b\000l\000e\000a\000u\000x)
endobj
196 0 obj
-<< /S /GoTo /D (subsection.13.3) >>
+<< /S /GoTo /D (subsection.13.2) >>
endobj
199 0 obj
-(\376\377\000L\000e\000s\000\040\000n\000o\000t\000e\000s\000\040\000d\000e\000\040\000t\000a\000b\000l\000e\000a\000u\000x)
+(\376\377\000L\000e\000s\000\040\000n\000o\000t\000e\000s\000\040\000d\000e\000\040\000p\000i\000e\000d\000\040\000d\000e\000\040\000p\000a\000g\000e)
endobj
200 0 obj
-<< /S /GoTo /D (subsection.13.4) >>
+<< /S /GoTo /D (subsection.13.3) >>
endobj
203 0 obj
-(\376\377\000P\000e\000r\000s\000o\000n\000n\000a\000l\000i\000s\000a\000t\000i\000o\000n\000\040\000d\000e\000s\000\040\000n\000o\000t\000e\000s\000\040\000d\000e\000\040\000t\000a\000b\000l\000e\000a\000u)
+(\376\377\000L\000e\000s\000\040\000n\000o\000t\000e\000s\000\040\000d\000e\000\040\000t\000a\000b\000l\000e\000a\000u\000x)
endobj
204 0 obj
-<< /S /GoTo /D (subsection.13.5) >>
+<< /S /GoTo /D (subsection.13.4) >>
endobj
207 0 obj
-(\376\377\000U\000t\000i\000l\000i\000s\000a\000t\000i\000o\000n\000\040\000d\000e\000\040\000\173\000N\000i\000c\000e\000T\000a\000b\000u\000l\000a\000r\000\175\000\040\000a\000v\000e\000c\000\040\000t\000h\000r\000e\000e\000p\000a\000r\000t\000t\000a\000b\000l\000e)
+(\376\377\000P\000e\000r\000s\000o\000n\000n\000a\000l\000i\000s\000a\000t\000i\000o\000n\000\040\000d\000e\000s\000\040\000n\000o\000t\000e\000s\000\040\000d\000e\000\040\000t\000a\000b\000l\000e\000a\000u)
endobj
208 0 obj
-<< /S /GoTo /D (section.14) >>
+<< /S /GoTo /D (subsection.13.5) >>
endobj
211 0 obj
-(\376\377\000A\000u\000t\000r\000e\000s\000\040\000f\000o\000n\000c\000t\000i\000o\000n\000n\000a\000l\000i\000t\000\351\000s)
+(\376\377\000U\000t\000i\000l\000i\000s\000a\000t\000i\000o\000n\000\040\000d\000e\000\040\000\173\000N\000i\000c\000e\000T\000a\000b\000u\000l\000a\000r\000\175\000\040\000a\000v\000e\000c\000\040\000t\000h\000r\000e\000e\000p\000a\000r\000t\000t\000a\000b\000l\000e)
endobj
212 0 obj
-<< /S /GoTo /D (subsection.14.1) >>
+<< /S /GoTo /D (section.14) >>
endobj
215 0 obj
-(\376\377\000L\000a\000\040\000c\000l\000\351\000\040\000r\000o\000u\000n\000d\000e\000d\000-\000c\000o\000r\000n\000e\000r\000s)
+(\376\377\000A\000u\000t\000r\000e\000s\000\040\000f\000o\000n\000c\000t\000i\000o\000n\000n\000a\000l\000i\000t\000\351\000s)
endobj
216 0 obj
-<< /S /GoTo /D (subsection.14.2) >>
+<< /S /GoTo /D (subsection.14.1) >>
endobj
219 0 obj
-(\376\377\000C\000o\000m\000m\000a\000n\000d\000e\000\040\000\134\000S\000h\000o\000w\000C\000e\000l\000l\000N\000a\000m\000e\000s)
+(\376\377\000L\000a\000\040\000c\000l\000\351\000\040\000r\000o\000u\000n\000d\000e\000d\000-\000c\000o\000r\000n\000e\000r\000s)
endobj
220 0 obj
-<< /S /GoTo /D (subsection.14.3) >>
+<< /S /GoTo /D (subsection.14.2) >>
endobj
223 0 obj
-(\376\377\000U\000t\000i\000l\000i\000s\000a\000t\000i\000o\000n\000\040\000d\000u\000\040\000t\000y\000p\000e\000\040\000d\000e\000\040\000c\000o\000l\000o\000n\000n\000e\000\040\000S\000\040\000d\000e\000\040\000s\000i\000u\000n\000i\000t\000x)
+(\376\377\000C\000o\000m\000m\000a\000n\000d\000e\000\040\000\134\000S\000h\000o\000w\000C\000e\000l\000l\000N\000a\000m\000e\000s)
endobj
224 0 obj
-<< /S /GoTo /D (subsection.14.4) >>
+<< /S /GoTo /D (subsection.14.3) >>
endobj
227 0 obj
-(\376\377\000T\000y\000p\000e\000\040\000d\000e\000\040\000c\000o\000l\000o\000n\000n\000e\000\040\000p\000a\000r\000\040\000d\000\351\000f\000a\000u\000t\000\040\000d\000a\000n\000s\000\040\000\173\000N\000i\000c\000e\000M\000a\000t\000r\000i\000x\000\175)
+(\376\377\000U\000t\000i\000l\000i\000s\000a\000t\000i\000o\000n\000\040\000d\000u\000\040\000t\000y\000p\000e\000\040\000d\000e\000\040\000c\000o\000l\000o\000n\000n\000e\000\040\000S\000\040\000d\000e\000\040\000s\000i\000u\000n\000i\000t\000x)
endobj
228 0 obj
-<< /S /GoTo /D (subsection.14.5) >>
+<< /S /GoTo /D (subsection.14.4) >>
endobj
231 0 obj
-(\376\377\000L\000a\000\040\000c\000o\000m\000m\000a\000n\000d\000e\000\040\000\134\000r\000o\000t\000a\000t\000e)
+(\376\377\000T\000y\000p\000e\000\040\000d\000e\000\040\000c\000o\000l\000o\000n\000n\000e\000\040\000p\000a\000r\000\040\000d\000\351\000f\000a\000u\000t\000\040\000d\000a\000n\000s\000\040\000\173\000N\000i\000c\000e\000M\000a\000t\000r\000i\000x\000\175)
endobj
232 0 obj
-<< /S /GoTo /D (subsection.14.6) >>
+<< /S /GoTo /D (subsection.14.5) >>
endobj
235 0 obj
-(\376\377\000L\000'\000o\000p\000t\000i\000o\000n\000\040\000s\000m\000a\000l\000l)
+(\376\377\000L\000a\000\040\000c\000o\000m\000m\000a\000n\000d\000e\000\040\000\134\000r\000o\000t\000a\000t\000e)
endobj
236 0 obj
-<< /S /GoTo /D (subsection.14.7) >>
+<< /S /GoTo /D (subsection.14.6) >>
endobj
239 0 obj
-(\376\377\000L\000e\000s\000\040\000c\000o\000m\000p\000t\000e\000u\000r\000s\000\040\000i\000R\000o\000w\000\040\000e\000t\000\040\000j\000C\000o\000l)
+(\376\377\000L\000'\000o\000p\000t\000i\000o\000n\000\040\000s\000m\000a\000l\000l)
endobj
240 0 obj
-<< /S /GoTo /D (subsection.14.8) >>
+<< /S /GoTo /D (subsection.14.7) >>
endobj
243 0 obj
-(\376\377\000L\000'\000o\000p\000t\000i\000o\000n\000\040\000l\000i\000g\000h\000t\000-\000s\000y\000n\000t\000a\000x)
+(\376\377\000L\000e\000s\000\040\000c\000o\000m\000p\000t\000e\000u\000r\000s\000\040\000i\000R\000o\000w\000\040\000e\000t\000\040\000j\000C\000o\000l)
endobj
244 0 obj
-<< /S /GoTo /D (subsection.14.9) >>
+<< /S /GoTo /D (subsection.14.8) >>
endobj
247 0 obj
-(\376\377\000C\000o\000u\000l\000e\000u\000r\000\040\000d\000e\000s\000\040\000d\000\351\000l\000i\000m\000i\000t\000e\000u\000r\000s)
+(\376\377\000L\000'\000o\000p\000t\000i\000o\000n\000\040\000l\000i\000g\000h\000t\000-\000s\000y\000n\000t\000a\000x)
endobj
248 0 obj
-<< /S /GoTo /D (subsection.14.10) >>
+<< /S /GoTo /D (subsection.14.9) >>
endobj
251 0 obj
-(\376\377\000L\000'\000e\000n\000v\000i\000r\000o\000n\000n\000e\000m\000e\000n\000t\000\040\000\173\000N\000i\000c\000e\000A\000r\000r\000a\000y\000W\000i\000t\000h\000D\000e\000l\000i\000m\000s\000\175)
+(\376\377\000C\000o\000u\000l\000e\000u\000r\000\040\000d\000e\000s\000\040\000d\000\351\000l\000i\000m\000i\000t\000e\000u\000r\000s)
endobj
252 0 obj
-<< /S /GoTo /D (subsection.14.11) >>
+<< /S /GoTo /D (subsection.14.10) >>
endobj
255 0 obj
-(\376\377\000L\000a\000\040\000c\000o\000m\000m\000a\000n\000d\000e\000\040\000\134\000O\000n\000l\000y\000M\000a\000i\000n\000N\000i\000c\000e\000M\000a\000t\000r\000i\000x)
+(\376\377\000L\000'\000e\000n\000v\000i\000r\000o\000n\000n\000e\000m\000e\000n\000t\000\040\000\173\000N\000i\000c\000e\000A\000r\000r\000a\000y\000W\000i\000t\000h\000D\000e\000l\000i\000m\000s\000\175)
endobj
256 0 obj
-<< /S /GoTo /D (section.15) >>
+<< /S /GoTo /D (subsection.14.11) >>
endobj
259 0 obj
-(\376\377\000U\000t\000i\000l\000i\000s\000a\000t\000i\000o\000n\000\040\000d\000e\000\040\000T\000i\000k\000Z\000\040\000a\000v\000e\000c\000\040\000n\000i\000c\000e\000m\000a\000t\000r\000i\000x)
+(\376\377\000L\000a\000\040\000c\000o\000m\000m\000a\000n\000d\000e\000\040\000\134\000O\000n\000l\000y\000M\000a\000i\000n\000N\000i\000c\000e\000M\000a\000t\000r\000i\000x)
endobj
260 0 obj
-<< /S /GoTo /D (subsection.15.1) >>
+<< /S /GoTo /D (section.15) >>
endobj
263 0 obj
-(\376\377\000L\000e\000s\000\040\000n\001\123\000u\000d\000s\000\040\000c\000o\000r\000r\000e\000s\000p\000o\000n\000d\000a\000n\000t\000\040\000a\000u\000x\000\040\000c\000o\000n\000t\000e\000n\000u\000s\000\040\000d\000e\000s\000\040\000c\000a\000s\000e\000s)
+(\376\377\000U\000t\000i\000l\000i\000s\000a\000t\000i\000o\000n\000\040\000d\000e\000\040\000T\000i\000k\000Z\000\040\000a\000v\000e\000c\000\040\000n\000i\000c\000e\000m\000a\000t\000r\000i\000x)
endobj
264 0 obj
-<< /S /GoTo /D (subsubsection.15.1.1) >>
+<< /S /GoTo /D (subsection.15.1) >>
endobj
267 0 obj
-(\376\377\000L\000a\000\040\000c\000l\000\351\000\040\000p\000g\000f\000-\000n\000o\000d\000e\000-\000c\000o\000d\000e)
+(\376\377\000L\000e\000s\000\040\000n\001\123\000u\000d\000s\000\040\000c\000o\000r\000r\000e\000s\000p\000o\000n\000d\000a\000n\000t\000\040\000a\000u\000x\000\040\000c\000o\000n\000t\000e\000n\000u\000s\000\040\000d\000e\000s\000\040\000c\000a\000s\000e\000s)
endobj
268 0 obj
-<< /S /GoTo /D (subsubsection.15.1.2) >>
+<< /S /GoTo /D (subsubsection.15.1.1) >>
endobj
271 0 obj
-(\376\377\000L\000e\000s\000\040\000c\000o\000l\000o\000n\000n\000e\000s\000\040\000V\000\040\000d\000e\000\040\000v\000a\000r\000w\000i\000d\000t\000h)
+(\376\377\000L\000a\000\040\000c\000l\000\351\000\040\000p\000g\000f\000-\000n\000o\000d\000e\000-\000c\000o\000d\000e)
endobj
272 0 obj
-<< /S /GoTo /D (subsection.15.2) >>
+<< /S /GoTo /D (subsubsection.15.1.2) >>
endobj
275 0 obj
-(\376\377\000L\000e\000s\000\040\000\253\000n\001\123\000u\000d\000s\000\040\000m\000o\000y\000e\000n\000s\000\273\000\040\000e\000t\000\040\000l\000e\000s\000\040\000\253\000n\001\123\000u\000d\000s\000\040\000l\000a\000r\000g\000e\000s\000\273)
+(\376\377\000L\000e\000s\000\040\000c\000o\000l\000o\000n\000n\000e\000s\000\040\000V\000\040\000d\000e\000\040\000v\000a\000r\000w\000i\000d\000t\000h)
endobj
276 0 obj
-<< /S /GoTo /D (subsection.15.3) >>
+<< /S /GoTo /D (subsection.15.2) >>
endobj
279 0 obj
-(\376\377\000L\000e\000s\000\040\000n\001\123\000u\000d\000s\000\040\000i\000n\000d\000i\000q\000u\000a\000n\000t\000\040\000l\000a\000\040\000p\000o\000s\000i\000t\000i\000o\000n\000\040\000d\000e\000s\000\040\000f\000i\000l\000e\000t\000s)
+(\376\377\000L\000e\000s\000\040\000\253\000n\001\123\000u\000d\000s\000\040\000m\000o\000y\000e\000n\000s\000\273\000\040\000e\000t\000\040\000l\000e\000s\000\040\000\253\000n\001\123\000u\000d\000s\000\040\000l\000a\000r\000g\000e\000s\000\273)
endobj
280 0 obj
-<< /S /GoTo /D (subsection.15.4) >>
+<< /S /GoTo /D (subsection.15.3) >>
endobj
283 0 obj
-(\376\377\000L\000e\000s\000\040\000n\001\123\000u\000d\000s\000\040\000c\000o\000r\000r\000e\000s\000p\000o\000n\000d\000a\000n\000t\000\040\000a\000u\000x\000\040\000c\000o\000m\000m\000a\000n\000d\000e\000s\000\040\000\134\000S\000u\000b\000M\000a\000t\000r\000i\000x)
+(\376\377\000L\000e\000s\000\040\000n\001\123\000u\000d\000s\000\040\000i\000n\000d\000i\000q\000u\000a\000n\000t\000\040\000l\000a\000\040\000p\000o\000s\000i\000t\000i\000o\000n\000\040\000d\000e\000s\000\040\000f\000i\000l\000e\000t\000s)
endobj
284 0 obj
-<< /S /GoTo /D (section.16) >>
+<< /S /GoTo /D (subsection.15.4) >>
endobj
287 0 obj
-(\376\377\000A\000P\000I\000\040\000p\000o\000u\000r\000\040\000l\000e\000s\000\040\000d\000\351\000v\000e\000l\000o\000p\000p\000e\000u\000r\000s)
+(\376\377\000L\000e\000s\000\040\000n\001\123\000u\000d\000s\000\040\000c\000o\000r\000r\000e\000s\000p\000o\000n\000d\000a\000n\000t\000\040\000a\000u\000x\000\040\000c\000o\000m\000m\000a\000n\000d\000e\000s\000\040\000\134\000S\000u\000b\000M\000a\000t\000r\000i\000x)
endobj
288 0 obj
-<< /S /GoTo /D (section.17) >>
+<< /S /GoTo /D (section.16) >>
endobj
291 0 obj
-(\376\377\000R\000e\000m\000a\000r\000q\000u\000e\000s\000\040\000t\000e\000c\000h\000n\000i\000q\000u\000e\000s)
+(\376\377\000A\000P\000I\000\040\000p\000o\000u\000r\000\040\000l\000e\000s\000\040\000d\000\351\000v\000e\000l\000o\000p\000p\000e\000u\000r\000s)
endobj
292 0 obj
-<< /S /GoTo /D (subsection.17.1) >>
+<< /S /GoTo /D (section.17) >>
endobj
295 0 obj
-(\376\377\000L\000i\000g\000n\000e\000s\000\040\000d\000i\000a\000g\000o\000n\000a\000l\000e\000s)
+(\376\377\000R\000e\000m\000a\000r\000q\000u\000e\000s\000\040\000t\000e\000c\000h\000n\000i\000q\000u\000e\000s)
endobj
296 0 obj
-<< /S /GoTo /D (subsection.17.2) >>
+<< /S /GoTo /D (subsection.17.1) >>
endobj
299 0 obj
-(\376\377\000L\000e\000s\000\040\000c\000a\000s\000e\000s\000\040\000\253\000v\000i\000d\000e\000s\000\273)
+(\376\377\000L\000i\000g\000n\000e\000s\000\040\000d\000i\000a\000g\000o\000n\000a\000l\000e\000s)
endobj
300 0 obj
-<< /S /GoTo /D (subsection.17.3) >>
+<< /S /GoTo /D (subsection.17.2) >>
endobj
303 0 obj
-(\376\377\000L\000'\000o\000p\000t\000i\000o\000n\000\040\000e\000x\000t\000e\000r\000i\000o\000r\000-\000a\000r\000r\000a\000y\000c\000o\000l\000s\000e\000p)
+(\376\377\000L\000e\000s\000\040\000c\000a\000s\000e\000s\000\040\000\253\000v\000i\000d\000e\000s\000\273)
endobj
304 0 obj
-<< /S /GoTo /D (subsection.17.4) >>
+<< /S /GoTo /D (subsection.17.3) >>
endobj
307 0 obj
-(\376\377\000I\000n\000c\000o\000m\000p\000a\000t\000i\000b\000i\000l\000i\000t\000\351\000s)
+(\376\377\000L\000'\000o\000p\000t\000i\000o\000n\000\040\000e\000x\000t\000e\000r\000i\000o\000r\000-\000a\000r\000r\000a\000y\000c\000o\000l\000s\000e\000p)
endobj
308 0 obj
-<< /S /GoTo /D (section.18) >>
+<< /S /GoTo /D (subsection.17.4) >>
endobj
311 0 obj
-(\376\377\000E\000x\000e\000m\000p\000l\000e\000s)
+(\376\377\000I\000n\000c\000o\000m\000p\000a\000t\000i\000b\000i\000l\000i\000t\000\351\000s)
endobj
312 0 obj
-<< /S /GoTo /D (subsection.18.1) >>
+<< /S /GoTo /D (section.18) >>
endobj
315 0 obj
-(\376\377\000U\000t\000i\000l\000i\000s\000a\000t\000i\000o\000n\000\040\000d\000e\000\040\000l\000a\000\040\000c\000l\000\351\000\040\000\253\000t\000i\000k\000z\000\273\000\040\000d\000e\000\040\000l\000a\000\040\000c\000o\000m\000m\000a\000n\000d\000e\000\040\000\134\000B\000l\000o\000c\000k)
+(\376\377\000E\000x\000e\000m\000p\000l\000e\000s)
endobj
316 0 obj
-<< /S /GoTo /D (subsection.18.2) >>
+<< /S /GoTo /D (subsection.18.1) >>
endobj
319 0 obj
-(\376\377\000U\000t\000i\000l\000i\000s\000a\000t\000i\000o\000n\000\040\000a\000v\000e\000c\000\040\000t\000c\000o\000l\000o\000r\000b\000o\000x)
+(\376\377\000U\000t\000i\000l\000i\000s\000a\000t\000i\000o\000n\000\040\000d\000e\000\040\000l\000a\000\040\000c\000l\000\351\000\040\000\253\000t\000i\000k\000z\000\273\000\040\000d\000e\000\040\000l\000a\000\040\000c\000o\000m\000m\000a\000n\000d\000e\000\040\000\134\000B\000l\000o\000c\000k)
endobj
320 0 obj
-<< /S /GoTo /D (subsection.18.3) >>
+<< /S /GoTo /D (subsection.18.2) >>
endobj
323 0 obj
-(\376\377\000N\000o\000t\000e\000s\000\040\000d\000a\000n\000s\000\040\000l\000e\000s\000\040\000t\000a\000b\000l\000e\000a\000u\000x)
+(\376\377\000U\000t\000i\000l\000i\000s\000a\000t\000i\000o\000n\000\040\000a\000v\000e\000c\000\040\000t\000c\000o\000l\000o\000r\000b\000o\000x)
endobj
324 0 obj
-<< /S /GoTo /D (subsection.18.4) >>
+<< /S /GoTo /D (subsection.18.3) >>
endobj
327 0 obj
-(\376\377\000L\000i\000g\000n\000e\000s\000\040\000e\000n\000\040\000p\000o\000i\000n\000t\000i\000l\000l\000\351\000s)
+(\376\377\000N\000o\000t\000e\000s\000\040\000d\000a\000n\000s\000\040\000l\000e\000s\000\040\000t\000a\000b\000l\000e\000a\000u\000x)
endobj
328 0 obj
-<< /S /GoTo /D (subsection.18.5) >>
+<< /S /GoTo /D (subsection.18.4) >>
endobj
331 0 obj
-(\376\377\000D\000e\000s\000\040\000l\000i\000g\000n\000e\000s\000\040\000p\000o\000i\000n\000t\000i\000l\000l\000\351\000e\000s\000\040\000q\000u\000i\000\040\000n\000e\000\040\000s\000o\000n\000t\000\040\000p\000l\000u\000s\000\040\000p\000o\000i\000n\000t\000i\000l\000l\000\351\000e\000s)
+(\376\377\000L\000i\000g\000n\000e\000s\000\040\000e\000n\000\040\000p\000o\000i\000n\000t\000i\000l\000l\000\351\000s)
endobj
332 0 obj
-<< /S /GoTo /D (subsection.18.6) >>
+<< /S /GoTo /D (subsection.18.5) >>
endobj
335 0 obj
-(\376\377\000L\000i\000g\000n\000e\000s\000\040\000e\000n\000\040\000t\000i\000r\000e\000t\000\351\000s)
+(\376\377\000D\000e\000s\000\040\000l\000i\000g\000n\000e\000s\000\040\000p\000o\000i\000n\000t\000i\000l\000l\000\351\000e\000s\000\040\000q\000u\000i\000\040\000n\000e\000\040\000s\000o\000n\000t\000\040\000p\000l\000u\000s\000\040\000p\000o\000i\000n\000t\000i\000l\000l\000\351\000e\000s)
endobj
336 0 obj
-<< /S /GoTo /D (subsection.18.7) >>
+<< /S /GoTo /D (subsection.18.6) >>
endobj
339 0 obj
-(\376\377\000E\000m\000p\000i\000l\000e\000m\000e\000n\000t\000s\000\040\000d\000e\000\040\000m\000a\000t\000r\000i\000c\000e\000s)
+(\376\377\000L\000i\000g\000n\000e\000s\000\040\000e\000n\000\040\000t\000i\000r\000e\000t\000\351\000s)
endobj
340 0 obj
-<< /S /GoTo /D (subsection.18.8) >>
+<< /S /GoTo /D (subsection.18.7) >>
endobj
343 0 obj
-(\376\377\000C\000o\000m\000m\000e\000n\000t\000\040\000s\000u\000r\000l\000i\000g\000n\000e\000r\000\040\000l\000e\000s\000\040\000c\000a\000s\000e\000s\000\040\000d\000'\000u\000n\000e\000\040\000m\000a\000t\000r\000i\000c\000e)
+(\376\377\000E\000m\000p\000i\000l\000e\000m\000e\000n\000t\000s\000\040\000d\000e\000\040\000m\000a\000t\000r\000i\000c\000e\000s)
endobj
344 0 obj
-<< /S /GoTo /D (subsection.18.9) >>
+<< /S /GoTo /D (subsection.18.8) >>
endobj
347 0 obj
-(\376\377\000U\000t\000i\000l\000i\000s\000a\000t\000i\000o\000n\000\040\000d\000e\000\040\000\134\000S\000u\000b\000M\000a\000t\000r\000i\000x\000\040\000d\000a\000n\000s\000\040\000l\000e\000\040\000\134\000C\000o\000d\000e\000B\000e\000f\000o\000r\000e)
+(\376\377\000C\000o\000m\000m\000e\000n\000t\000\040\000s\000u\000r\000l\000i\000g\000n\000e\000r\000\040\000l\000e\000s\000\040\000c\000a\000s\000e\000s\000\040\000d\000'\000u\000n\000e\000\040\000m\000a\000t\000r\000i\000c\000e)
endobj
348 0 obj
-<< /S /GoTo /D (subsection.18.10) >>
+<< /S /GoTo /D (subsection.18.9) >>
endobj
351 0 obj
-(\376\377\000U\000n\000\040\000t\000a\000b\000l\000e\000a\000u\000\040\000t\000r\000i\000a\000n\000g\000u\000l\000a\000i\000r\000e)
+(\376\377\000U\000t\000i\000l\000i\000s\000a\000t\000i\000o\000n\000\040\000d\000e\000\040\000\134\000S\000u\000b\000M\000a\000t\000r\000i\000x\000\040\000d\000a\000n\000s\000\040\000l\000e\000\040\000\134\000C\000o\000d\000e\000B\000e\000f\000o\000r\000e)
endobj
352 0 obj
-<< /S /GoTo /D (section*.2) >>
+<< /S /GoTo /D (subsection.18.10) >>
endobj
355 0 obj
-(\376\377\000I\000n\000d\000e\000x)
+(\376\377\000U\000n\000\040\000t\000a\000b\000l\000e\000a\000u\000\040\000t\000r\000i\000a\000n\000g\000u\000l\000a\000i\000r\000e)
endobj
356 0 obj
-<< /S /GoTo /D [ 357 0 R /Fit ] >>
+<< /S /GoTo /D (section*.2) >>
endobj
-360 0 obj
-<< /Filter /FlateDecode /Length 10176 >>
-stream
-x}I%~;J  Td(4RukF1#i ̒009if\nn2On?d/fotg׿1!ΘIg?+χM*pC,~j@k[CAv1-:ǭz.n!Eښ)7qy ovS7<j?)hZNdR=4A[iTF{+]N2Qq)lPImճ T_ech o6ukPne)
-=CoLެ%x'z&8 й2<1en-zO+K4Zi+t!ow^r'۱jT oaXB|veլykV
-OAOIS_@Ply0Ҧ Gn'CKnvtR朻c.,wW7Y:o_nxky'HOˍۅ{{)js c;݀6響%QƆ(¬v_"Ķ
-r{4'g
-Uc!ƹ:)%aސ; ^.)r2Ryј8Ku?4Ҿ ffy
-fmJXC=T'`K[d𤄶- =- Z3`+f‚KtMY讥z7@3<yFb(aSI*< _ %@E&6`FڢO LAŖye%(q4$b
-P:PF|vÄM<"Q%wVb8Yw Խd1B&,Ok$D&4NVW8=is1n3hPA l[R9T} 
-lHVٹC#TX/;\UD{qJU+viFvI-^P)9Dy#EP$*,cAWlӌH[\!st#H*B.)N[ d: xlԬH\[:
-<L0iajWo;*Wj-s01Ol5FrqDJє5ˆ xDViZ |G{dPY
-b^*1D#V olbI
-ǡS*LL1U,TW<Ql[-jPt/EGUQï'/suz4uDLaU$+h$:*zu QAv9b!SKdS &$h: O5HJPa~Ƚ;@!yB(k421m.8nx\JkVDAK".i6H7䴨N!!OQӝj5e4 xDV*Jjb!B>'!y6SR407A6 %5ִW-(UW24v4/f qA|2 ćgݜKcTRp)!) 9y`[WBGC"N@0q
+359 0 obj
+(\376\377\000I\000n\000d\000e\000x)
-ux2
-A#óD{KSÌuf-965g)EкZȥ> !&Ճ4ڒ̨}!q{JG
-Ykz9c7Ab3DHa0DEڛWoRXaZ)H\!`P"f\'DP*~wK fTtx B, P~[P( hL=^QFyeRFԾ3c&-IwejmB.ηZky(9
-!%TTwLoz«1ː\~r4#jҘ4a Y ٧1J(Tb,'TvHPi\&6  P^cFS;"}1Ps$n/}%TgP)3eU&=qHP(&taq4a4FvJH2(rTk-Ȉ:`+ 8P{Tgbq2!#DrDR#1kHۻ*" UD|9؄3  :
-I>^ 5:KPUgTa\(>lX1&E M(*ye;aC r%pLANc9(rkc)PNec;)Z8bœIE4L%qDL&DEl8(-Sl),R`L(O≅L]<|\`Px(Fx1iBFQNZ l3sV
-Y9%kh0nflBrdݷZ46:q䴨U؈y=#Y;g)+
-U(xa3V -HKV=64! cYFc6D.J@]RV]L z|1H˜qገ#Ymc&I9J\*
-ٔS$j秬H@Ψ LѠ(С~ٛ7QH BQTűӬVc)6Ld-6J$']mG<TS R
-0I3o*JQHgp2mR/8_F"Mn a;GׂfFr U\AKe U %I4:ai3aQ6]+ N'TK .A#*J48i쳨}}vޮ% HDj134T(FT8&M(pǬvFl[]]k N'Tq .B&^(aLhjEU ky53O
-U a*fd
-QT(qLQ KY ۧ7xV5 O 38TL|\QˆQ
-KbwEELFst-kf(ӟPT ̸PZQ4A&> O3o,mvk4 T|/c*[_<W6f2,NEAQ4U؉-vi]p:vDx{N4UU"{Zɳ^N ^$^ԉ2aH
-*E%D/'JaސȽsQ {ר-vT qAj+ebUMDj`5gJ$#kU"{Bh?<pY6܄@"
-V`8iXO4&g"RXbjH8ZPk S u[5M\XD&Kdv 2TX?$q\,gjzQBӘh
-(M&Dx'J(ΈrZG((=pk(SeG]5[X0D&pLd
-Y/bMCc3T(
-QH]&=D'1vk~gO+ʕ>O30q3 !0nr1&!?\3t@~<{y}4##krvķK/ĝol
->’4(iH/#ͥ,t,j~djkl5[toķ0xN
-/J¡ЏJ+\v}Zjeby~U3è<D]xʨMsu%e}<*Y"~kf|kL%bV:r.:ùO*wLg5ZZgUs${#/&NI.`e}Jko*@[$zY:-|Sז8[RNnena 5o:g
-ގKƫ#>0I`v*UdܕoX> xIyuBm'oV%(0Q3OF0ZZu}Uc ohɉ,4xZTGVa91;6.$
-I^l%fޥ"M*٩ueZSJ 6Ho24ܗ궲.ȤΏ܆4
-z1;fFߣ8xsk=#%T:ޖm@AVA=ywb9oͱev?i!^X0+U]#9I# x蔏YI >麳;ťAɮu n #.?܋uM~r4(~zXbV3)2:]%IMُma
-|;:^ܧ05ޚ;//[<+ ]Hn®F̂R=*I._~=:{M܆/
-kjb.ױOwy.Wku>g ])ςUN-M.u )M1;EJ)q5ǰ;:9 [+gX
-i3ۥ1nު!?n^77Se_oʝTt]/d
+endobj
+360 0 obj
+<< /S /GoTo /D [ 361 0 R /Fit ] >>
+endobj
+364 0 obj
+<< /Filter /FlateDecode /Length 10261 >>
+stream
+x}͏%7;E
+5as9b[1}j5z}mѨxV [G/n 5z]cd&}oVI|L:?6ĸU -|kwHi q<MJK#l׵4Ĥ>0'19# vߎ^>ZLE
+B퇿~6ۅ{{)Zj fm7/uI?:$0dUt-J5fDJ`'ާ?n EWo5BB(W0B3 U0;3X&GXXj={HRUzo3Trcb?#p*(O
+kq8TXBFcȾ(| d#
+K!c5Ĉ z x]{omZ
+
+;
+D ;aeK5&w4rx2}Ɛ3L0` )̇@NtiOt䧳|>-|ebeL{;LkX1e6@
+Ub!ƹF7$o3H`ї)+9C<O!+2X-H)9h}AfT&YmYC=T'`K[d𸄴<)w4@eb3a %bWRa6 fYyFb(aʵ 
+KMb[0Z[Tvu-k>%L
+ Đ->l+ QD!!cuXT)"4K7lZ}-XTqOP9S (4SraBW0,8S \IRhF6pzҖc04Vk
+_ l[5)RT=,
+S.N!wLpTT)FiV$V3Y3UP "+#VNA3>y.8]bi+&'ˀ##TPY#YS8
+SԌR]M2NXc T!Y?GRtIpB$Ɉ+#:Dbo]d;x W33LZXEዏCI[ `bVl5FrqD)jFөQiG$j,w˩%tA0u/"p+ S,ȦCUa*LL1-=l[)jPd/Y،T_6_$n
+ 2Hꈘ}U(/#R$q4Y W`6$nc T 2Y?GVb0XJ$dV5]v*${wX8B PhJIĴ0r)Y-b=$ @:4DL>EALw(a7#8Pw# -x9 g:%E|LH/a 69H0(t!mp1DڐH&x}$@=dˀ$BD9 ƨ*RBrSAr慂 lJ^"
+i z>4(_0F(|FMKi0}SA&c6dBĴ*P3|9paaLJGC"1.LQ0~ H_6f1Fy3Ԟj[;w\#ErbR3@d36&W)nHok+kM9KDzQ:7%xPؖP"#Z
+ux>
+OA#C_%ߟSbgN:ACKBْ<@%2+\j,BIіw{<ZZqd[B^(*РL/y&
+MQ"F[sI#B rUډ6d<QATYŷ?/P` y&Xh{∍!E&j6DϤO6IqDzGIY8VLDm2pBH@@U! 2d*_
+ &M5D Kq$>^ Ȍ9*'TsJ%KLaYfUEO3")I$;S;Mj8<7]#i;of$PPASk-Ȉ2`+ 8P{T5_1^ (dH(wmQ5]jq
+D|?؄3*# 2
+A%oT+M6D.B Cukn 2@`|1H&I"GOid^Y
+d耟b&-ccFNL&)dSf'ئg,kq"'
+R *%N B\
+Lg(T0RYehIIh|
+8vFr ]AKeƅ*Hu7I
+ALiT1mHyV4
+OӛY2ϳPD0R"MGR;,mj%8ld i;oגF01}AxLjH7I
+ALiT1#{65`v,B_/UIHjMV4ل_CӥP?+T5P"V&I!#Û)]j4>8}oתF0 uz3ky
+*E_+W0Hd2%MwYąMcFst-k4O
+ _*4.TFVIRpgJcZδO2Nߦ۵0}qSQdo}4sp(&jX{bHIEɥ&Bdݬ ,v:'/kG&z9H+XD2AI$[,g
+)Y7$r.|3jp<E!.Hz(^%R+E ]%  u#gp
+^E^85M%dX eVu!ߡFbШ+ըiŠԊP)K *a(
+Hq],gj
+@X'(q셐ӊ&drESiZ)*u"#F(;ԨyŠЊH)pL
+'Q/,qu[V)ͻװ>xU1l{<fE3h^cnc*>)7mWz+y?+~6H 9=y1h-C܊kZƫ|Yz;m<kh-i;s9]ѣ,EכoKvL[Tf<p-z0=TMu]WL!XLdz)x(-/xJh 7巔]A=c_~/7<ٞ no?, _4gn~`|S!ej[5-#DѾAq<<npQPZ?]6uu&}۠tx†G_܊cCMBᨇ}y~¿DM|&Itv_9'F$~#-@uى{~U|`b^T|U\`S {0[8pxV}(xk
+^';@`
+iƾ$(=e?]<\&ZpAt'W
+|oҶɃrNz9{K/@P./
+Pa!.<
+A ϓZ?dvi×/fMMr$2ìNo8UVLfլ"\*ìrwUL\`x6ξx FG\]iMyV3 5㵅@5ޝoBF^O]Gܛt^A7v<ƺOPدw.16GD1vK~ĘC5 (q\`a%fLkyF6gdy.\ÙbD ?^<?ޛ|=Zcd? q+N% f|GCOTLg+X*z۝ `v㐤*),\*)+UpmuR䤴 e? A9Bh~WO^4>oa~ߊ|>4wG.OB̏vsh mh<THد^Ah0,MpGnow >ھpEz h{hG:.@9ɏ&/χ_yZi7׵5<#ܸN V7}UNHuw*w#  N5- {men/}
+;j] m&^vӔ!mH9jR<69M CqŌ,6?oGLLĔS06r*JџW)2 ڀ <}V|x @XE%ZԃC60)2^S;OE[S>
+nOY+5Ki׶ThN4>령ꈅ(飄_? (mzn%}k
+movtY 漛|#+uQǘlp#~9`9 {+ppLg3Ew42ZaC3#*I}Ne fiWl:|Ef?eXv}fl6UӚ/7[< [ǵeYXȮ;J<>]ܮGbxB@<gQ1yzCXffKd]xvs[puYW3׵DqPdz,[4~Wpfuå8YiYD|{\'ތtxy R*
+tkX;&!Ԣ
+99Fb99^<FΛ'dXt1<Z dn/^ow!Emv[,V<nKk6Nxu0@]ؼڌ.XփT,qqO•Us]}m5,oQr"$)D+)*HA{a2Pr{H ZG.d Glɶؽ:~2?;[k~ZM7-yYSgڜ!fTfs'Ĩc'2H;U0P _q 5tˤ?_GFXь0iz"srcs ŬTt>pLCO[ٞtYk(xǃWWZ3,q]aݑ;=#o:-NC@QVAt;
+pl95pq8&ߝU{bsw9ۖ<q79z/g y҃'v5 }fk.lxXĶw/VrO84>5|jwy.z5@
+[?!Hk6N s-+ȓ(ۧa6]̹—pWL5NIOp[mmġJQ U݀y|ίr1gK'-*Sd.Ϸ݇O,'CN
endstream
endobj
-357 0 obj
-<< /Type /Page /Contents 360 0 R /Resources 359 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 390 0 R /Annots 391 0 R >>
+361 0 obj
+<< /Type /Page /Contents 364 0 R /Resources 363 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 394 0 R /Annots 395 0 R >>
endobj
-391 0 obj
-[ 358 0 R ]
+395 0 obj
+[ 362 0 R ]
endobj
-358 0 obj
-<< /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [ 78.374 76.495 499.819 87.952 ]
- /Subtype/Link/A<</Type/Action/S/URI/URI(https:www.tug.org/svn/texlive/trunk/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty)>>
+362 0 obj
+<< /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [ 78.374 76.495 306.319 87.952 ]
+ /Subtype/Link/A<</Type/Action/S/URI/URI(https://github.com/fpantigny/nicematrix/releases)>>
>>
endobj
-361 0 obj
-<< /D [ 357 0 R /XYZ 78.37 808.885 null ] >>
+365 0 obj
+<< /D [ 361 0 R /XYZ 78.37 808.885 null ] >>
endobj
-362 0 obj
-<< /D [ 357 0 R /XYZ 79.37 771.024 null ] >>
+366 0 obj
+<< /D [ 361 0 R /XYZ 79.37 771.024 null ] >>
endobj
-359 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F16 363 0 R /F17 364 0 R /F30 365 0 R /F39 366 0 R /F48 367 0 R /F47 368 0 R /F49 369 0 R /F50 370 0 R /F29 371 0 R /F52 372 0 R /F41 373 0 R /F42 374 0 R /F23 375 0 R /F51 376 0 R /F15 377 0 R /F20 378 0 R /F55 379 0 R /F56 380 0 R /F57 381 0 R /F58 382 0 R /F65 383 0 R /F66 384 0 R /F67 385 0 R /F45 386 0 R /F40 387 0 R /F46 388 0 R /F59 389 0 R >> /ProcSet [ /PDF /Text ] >>
+363 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F28 367 0 R /F29 368 0 R /F38 369 0 R /F47 370 0 R /F52 371 0 R /F51 372 0 R /F53 373 0 R /F54 374 0 R /F25 375 0 R /F20 376 0 R /F18 377 0 R /F21 378 0 R /F19 379 0 R /F17 380 0 R /F15 381 0 R /F16 382 0 R /F55 383 0 R /F56 384 0 R /F57 385 0 R /F58 386 0 R /F64 387 0 R /F65 388 0 R /F66 389 0 R /F49 390 0 R /F48 391 0 R /F50 392 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-396 0 obj
-<< /Filter /FlateDecode /Length 4030 >>
+400 0 obj
+<< /Filter /FlateDecode /Length 4028 >>
stream
x5hgR0u`h
-XG7a ( /PvJtBO|}$R? [#,FY" [~_~yT_\籌2bGKCj,zU0^R·by1vvx~o˯46qjd~W<w tcjqi\M ‰tm&8 _
+XG7a ( /PvJtBO|}$R? [#,FY" [~_~yT_\籌2bGKCj,zU0^R·by1vvx~o˯46qjd~W<w tcjqi\M ‰tm&8 _
'O)e&X
P+yiPL~̦D+F5l>`ъPj10A3v%Uow3̶^Ak<b[ֈiG= 'l~Bـ!ną iDn&"R~7;
dp6ɞV p,~5sɡuPK
o^CЊ,M$HSl  +ؙRGpS/Xx[i@qa8m
`>{ 1ڶz9T/Qr,&`[y-bZżHVo9o]kYSa!&Ƹ~+ljS1}(فpG%
-Rn}!6jV0dCDo$Xڵ@$?M " T} uw] c\tM%,ʳZ.G|6pI`"!n۱A#p"ayGL%Ԁ>XzˆA/鍡DC*Яm#AEBh В(pr}öU@ح˶ٕk 끔#iyy3Y;2OJ[yp9p=[?Q&'Z[!,^((8⌰j by_YڬW\D(^ MPFFQ* 1#5<=a(^gLjgu^IF_Ev=} XźGMc3„{]kQ3.p+l.LF)1tާpϨ~S.l.!D@zХ' i:Z} \|LȜNd]
-%:,G̚cojQ* ,,U'[1B,*RaKS^n$Pֆ-KZgK%nUf4akD!0BGDa"+W0zlr@n/u]@^A)MKu!8"edo<3~Υ8vc%Z+ պ.۞.`z?y$5f27m# ҦM Yv3EY]~ P&٧]]fnUD,>5Y8?:2 dl_!'|5J6[E}n3@1H0KB:ʍۭ3kʥkϢlc܄r̗s,hD!6^ZwcT)^r Pm'  e2
-QDiҖ81W6ny0%eZM}Ka5]j`7aM#lJ&r=: ou*9sbD^L߅yQ1lj9@k%ˎc542
-zJ=nMzZJ, % >`aE~wRl j~^5ZikC.ĥ
-:RDbV^
-ǯˤ%]㷤< &ɉ2Lo#LG wA 8Ea t
-=ʰG,#niԠ t.&e3 E3h/oìsX ?n3
+Rn}!6jV0dCDo$Xڵ@$?M " T} uw] c\tM%,ʳZ.G|6pI`"!n۱A#p"ayGL%Ԁ>XzˆA/鍡DC*Яm#AEBh В(pr}öU@ح˶ٕk 끔#iyy3Y;2OJ[yp9p=[?Q&'Z[!,^((8⌰j c&[zE MŀЄ
+m7S8gT)j8,\d)KeNu2
+p[59"zrK uY65&߄ YU 1oYX݉ի.IO(c+0i'XT
+TH@ [}"jJ0il-"׈BtUoaRú%DVq%aT= Αj^꺪b.%;E%S29L1 BpD"Fxf{K3qJp %W:1u#]=U]kX#dvW!C"Hkd" nFAMHO]f4;GLO*xq979)_X
+|Hkp~Tue*DC^2OZ1k8Jmfb<a3t1[g <(UcהK5E>" %l/X8IB<m⅋4Ǩ2S02 I<.RۖONne
+P'8U-oqhUc:d3&mZaJ2jv*ošGԕ*M|6ztT> s8ň2ߙ\ 2磌cضs!JdVkhe"zNݚZxޕXN1 +AJ@\=|ÊvR@j"&څ\F1Kun}%ŬeA_׋IK[{!oI xLe)F<px-ݳ |^V LȔL6*"]@҂w Sd!_~7 0"`?_#{3B]>~q#,z%XJ$uXqIJ,:`9gT2`&EI Z(+ ^^'Q& } L͸/rΠf_ ra!6"?n3
m'dH:LyM=#疘7KT XcYH[`Ub- .o5uR`t~XwG@|q 2847p#)3XPnw^WH(+
_23p)azdpv ⴭˍ!Z!nҙ!ƴI,]kCu2ޭ7pm۵e5 *{P|%$Z
-ס 6-zaXz;ˆPBN:]ׅZ4}R`HG mp&WaDztIX ȿQCH[DBdή3!T^C=Kr&veQ_
-1/[4%Aݔi} LCc4_41T@'7ƻN P"t#19UJ9Pk(=Yk2AOUxV.#vZ))Ytm4gGA͢i\|\{Z IH{;:jsIj}0)*p'dKX|}e2a–Ziwg꛵[@#܁xzHLSCL􇚝;U2a܏9A: aJr~kR)}ECf\I4?@CW
-3sP*[Zp
-Ju01 ryL,
-)z:-̮kN/=9$&!-`"F5F<hcx.ʰG,ze~-AdEoeT5jZEX:VTMc(a͊>p7@M$v_=yQL}JyTC4h'"qqb³&ܫyiƪG<j"? W||@x,MKl:K?
-ms@o<E
-⭈cy킻sy>G:pa'tec:eHZ;Ҙn]5~1p-X1+_ސM<LfƂGBӸdgJoM9HЀ1wFqF\~$&&B>p0jd\n3)}ln[*d56U4m7q31IvKm tWLˡZјIDaF .g(V`u JhxZ]5ؚ<_m!Ĕr8%2vTB,IFv
-6i^R
+ס 6-zaXz;ˆPBN:]ׅZ4}CE9b-o0@?nˀ#L4%
+D +ܤ OZ@nFBB\l? tt Svv0, (Y6(+TSI\|yآ) $5Oclgd2w`ԥqj?i&ǎ0uLq/ {͎ə}uPaWZFκ0\ zN:v-wJGNʦn9v> 4<r_mMګq7āWOywf'tԴy,Ԑ5R."^%dslL&80\_K/]9,W}=h;OijPsJ]21'UBgغ?L 7tBxM]J"hHl+gh
+
+xl~^"Lsu{:o6Xgb~lZѱZ
+"}卙C0 v jgJoM9HЀ1wFqF\~$&&B>p0jd\n3)}ln[*d56U4m7ut4&inIm $/b9T73I(l¨EB>!w
+D7t>tozZ2T[G+@4Ҡ~9rWVFڎB%)Ȯ\C=^
endstream
endobj
-395 0 obj
-<< /Type /Page /Contents 396 0 R /Resources 394 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 390 0 R /Annots 401 0 R >>
+399 0 obj
+<< /Type /Page /Contents 400 0 R /Resources 398 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 394 0 R /Annots 405 0 R >>
endobj
-401 0 obj
-[ 393 0 R 392 0 R ]
+405 0 obj
+[ 397 0 R 396 0 R ]
endobj
-393 0 obj
+397 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 189.926 133.102 201.881 145.058 ]/A << /S /GoTo /D (section.7) >> >>
endobj
-392 0 obj
+396 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 317.374 85.96 327.831 97.417 ]/A << /S /GoTo /D (subsection.8.2) >> >>
endobj
-397 0 obj
-<< /D [ 395 0 R /XYZ 78.37 808.885 null ] >>
+401 0 obj
+<< /D [ 399 0 R /XYZ 78.37 808.885 null ] >>
endobj
5 0 obj
-<< /D [ 395 0 R /XYZ 79.37 771.024 null ] >>
+<< /D [ 399 0 R /XYZ 79.37 771.024 null ] >>
endobj
9 0 obj
-<< /D [ 395 0 R /XYZ 79.37 443.151 null ] >>
+<< /D [ 399 0 R /XYZ 79.37 443.151 null ] >>
endobj
-394 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F69 398 0 R /F15 377 0 R /F55 379 0 R /F56 380 0 R /F58 382 0 R /F67 385 0 R /F70 399 0 R /F65 383 0 R /F29 371 0 R /F51 376 0 R /F26 400 0 R /F20 378 0 R /F40 387 0 R /F59 389 0 R /F46 388 0 R >> /ProcSet [ /PDF /Text ] >>
+398 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F68 402 0 R /F15 381 0 R /F55 383 0 R /F56 384 0 R /F58 386 0 R /F66 389 0 R /F69 403 0 R /F64 387 0 R /F25 375 0 R /F17 380 0 R /F22 404 0 R /F16 382 0 R /F48 391 0 R /F59 393 0 R /F50 392 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-404 0 obj
-<< /Filter /FlateDecode /Length 5116 >>
-stream
-x]K$ׯ
-)qx{_22Id,m# U%liTmo
-o(^66
-,é
-KRExL_xk`~Gܚ_^|;sshN@za0v&|s@c34F.~rSd4 F/ b>bBI;Ήp4g<"y3Q7K͚ڟ練
--'K+R\,aIPhsp#c1Ț9L9:KO!2Btsfc{9kGļߘ7Oe7QÍxVt$mona'*۰YYCqa㛨
-wTΝ@t-(`Xpݶe%\1˱>Idr65NαL4dnWZޅd]%ʱ0ڠ#~_QV?Eb)UBɂ~+ aLՒS/RmXMެoG f+v$ѯ5u"qy[vz-m\DHXl!iP[axN8NIN[F^ [ih#'5 C40뒽7:Cz^ɁlLHSG,hs~8
-&p0$
-;m L^a6\9dGf0UsYBRԱB#KcK4Vu?z]]bǙRwgH䖆uǥT7TJF//j=wBmuhΠ`1%bk?d
-)5=Β☑tRԏ㻷c
-S^JJA3$7DQ4za|[JGުD ~= Ci
-S?hms"8vPrω銀EKNLXuBwrvc$L5qwW˛S@X
-4X P0Y
-WD}QKK!_JgOb4:G3^Tp<ieJ
-a1O.%cW`I.$UZ#=銕Δ;LB91d8#   ֥u_dOoGb0V52 %Y(1!s LlJ[T1>?u9AXҥb($VEgu v`gM [عLp&tL~])S;b5ۦty. N@|%QV8A2Ӈ@N:7@Y$!д?A0/F6tazǁʇs>[ӁUȝE>\7{ƙ6Uwbӿn-Jon7 I
-C)vv9d#ZNs#R~!{bBPyܜ)AnN M
-<l(C(!:IdWN^ND eu\fNpITe\CO|ڸ4vEߴ)l#3j
- Zx ^îo9dO??\\V#3q'|"( (2~팿&sb4ݽ/+}eSӥ3G*9`:qq6u!
-y0ؿlY|!9n"dhQv7
-k[iw1ox3%X}6Fʥ6y=B5ĭ(Xpw6@uko!W`Yt`ޡƟ('K /YF)ˑxGIC0KW#',
-,YY
-l\j5i:O.MoTL9P,0L4؝ 8K 0%&]!ST[
-E;}W(m!E;71⌾HM>X8ۗ8qp9{p9x^ o'[ṪΣ!5qvr}t쇬
-VH(,]9,l˷ӫ??&`^WPjr~rT|
+408 0 obj
+<< /Filter /FlateDecode /Length 5118 >>
+stream
+x]K$ׯ ~
+r%i)tp\ ϣ ߣQ<W ±U}Qa9B.?h ߃daעӁFc`Q.
+~C <phxD.-FNnm`?]vV|K`8Ɖ)TaIԑk`~Gܚ_^|;sshN@za0v&|<9VX|l2Du]fV*h0_5^ b1OspD|8ZX_2Ff,dݹ:)}oћ5?S/goӡ4
+K8t^zdm: `/Jjg&%nvƚ5Z&hM*F$uE-&б儗VvFkeKvGkf$ M(9Ț9L9:KO!72Btsfc{9k٣^bo?CM<m7bQoފΟo| navq6+;<nB6l|Unv۹w.b,4 $R+d94v>>9A&^aSDCVp]x&"-1<T&*8M⌲ٱؤxJ5u JjxSK[Աmɛ lŎ$WV?.o\N%p۶E-Dqv%NKp HEoy;Vz>)u C40뒽47:$ē)&-XШpL`*I_=70y\vp;7TeɟKjNJRi:^:DnU/InNޕ%z)500{{wDnO\w\JͰ!R)m|D v3ɿA:cKӍrJDSj:p#U%1#[[VG0N~޽K(URR
+7%>0F)n%B*%xIJ җj&ym_O`&(55zTFRb%%ҌK!
+OI 4|S!%JY5& l6mT9]3iCk2SPPt#Pa
+R:{rst;E(H ǓVt `u5x0mL9ǨCZeG7+y_RHe#\;Qjuqy-:dŦRFkl]~}
+v'WlZ,80 NZV Qy3j'Sغ<W/]os,R;MRXBYBEY]D~5n
+ҦqBH+\TɇI%@+bK}%[@ ,_ >/:۽{oWY_f )W,WJˑh"rEP:EsGl4whL?o4!T ya!DS60<tz>!Y6. 7RM
+0rS+pɧ8Z
+O-ŀO#%A̺ w5 5+=7
+t٩ؽEJvg2b6<fXaH4Kƭ\"5dOorI$6
+cͷI8 P6 XBV\];c aŖ@1}윉<9X3{kz&`3xGL'Fo0i{_q(OyN<+;8=ԅ$z)B[P Qfm=kc_6ž?QYy.$ ,־
+E;w}azs#D냅SZx'.g/
+ )bs"tVzSqyc ыځʟS/)G'
endstream
endobj
-403 0 obj
-<< /Type /Page /Contents 404 0 R /Resources 402 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 390 0 R >>
+407 0 obj
+<< /Type /Page /Contents 408 0 R /Resources 406 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 394 0 R >>
endobj
-405 0 obj
-<< /D [ 403 0 R /XYZ 78.37 808.885 null ] >>
+409 0 obj
+<< /D [ 407 0 R /XYZ 78.37 808.885 null ] >>
endobj
13 0 obj
-<< /D [ 403 0 R /XYZ 79.37 771.024 null ] >>
+<< /D [ 407 0 R /XYZ 79.37 771.024 null ] >>
endobj
-407 0 obj
-<< /D [ 403 0 R /XYZ 337.806 486.345 null ] >>
+411 0 obj
+<< /D [ 407 0 R /XYZ 337.806 486.345 null ] >>
endobj
-408 0 obj
-<< /D [ 403 0 R /XYZ 337.806 474.894 null ] >>
+412 0 obj
+<< /D [ 407 0 R /XYZ 337.806 474.894 null ] >>
endobj
-409 0 obj
-<< /D [ 403 0 R /XYZ 337.806 317.011 null ] >>
+413 0 obj
+<< /D [ 407 0 R /XYZ 337.806 317.011 null ] >>
endobj
-410 0 obj
-<< /D [ 403 0 R /XYZ 337.806 305.56 null ] >>
+414 0 obj
+<< /D [ 407 0 R /XYZ 337.806 305.56 null ] >>
endobj
-402 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F69 398 0 R /F15 377 0 R /F55 379 0 R /F56 380 0 R /F23 375 0 R /F20 378 0 R /F29 371 0 R /F51 376 0 R /F54 406 0 R /F52 372 0 R /F41 373 0 R /F26 400 0 R /F65 383 0 R /F57 381 0 R >> /ProcSet [ /PDF /Text ] >>
+406 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F68 402 0 R /F15 381 0 R /F55 383 0 R /F56 384 0 R /F19 379 0 R /F16 382 0 R /F25 375 0 R /F17 380 0 R /F26 410 0 R /F20 376 0 R /F18 377 0 R /F22 404 0 R /F64 387 0 R /F57 385 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-417 0 obj
-<< /Filter /FlateDecode /Length 5479 >>
-stream
-x=ˎ$78ڇt9 xO`N}^ԋBY=ve2(/Q
-_$OHj' "Woj\>E?ϭyŕB>xhpó J4a%@$.1'kV GJy!EYXc+QL#Wg^_'2 .qN93IU+ӨXھDxr7mgP0*ken΅p¥rZ7\T6A%$f.7+cWF[k͇$@R*'G[T
-XDP!㩃 1B
-q3u`-ꢹU`]H& 'NLtO"W䑡X=E Oa#i,H$eUWǸHЌSk$EKj֞'ljתNuyB#ڬpf:c*V%^!YC0G#kaM C
-$= boln{ !ТmOWʵ(jk#@ѝѥjUo2N[Ll ?l57 dz-,lSf2R@ٱY<Y&ANY5Aj&R<=4x}쎵`Muk006e^kO”d=Qk5 `TU8i*oq8rɴFA2gѽ e,)*q-TUi8 I\_diG>8^aUݶjU{0 y%#IגꦠJJRw CŔ SEصNٵte^S> H
-5d0(ê&\m F EIt}c͟+ CSg< -^kMP/o߸Y5{ smڜJŝn^_i/xv&Z!h5vP}Vok7:N%=H
-nBRaL+ ͖mvu_J]uaM]- X_r;Q3=}a+IeU$ny(_Wm
-ÿ&(򬰨kL}AJ 9ҙ31oV^ZmCت}uRAR=:]i۵ƪc^һ[oh!Pk}vpQ/>CU˞7ח~Tq/aybN}Ϲλ߹)ՖzCJI?~fHq ݪ^"$9?-ORjZC%l#HHqZM[
-zNsk3@ ɸ4*ٻz#T̿$m\a_- kBd|<k؂}ҰD-ZC<C3yI
-٘JeoWcC e!Z}&栓Ws[wćsסwN 3cJH4P}G;0;YV0Qc@3N 뱴ƻu|cFWib\Av>_|K)#%' ,xcC.IMWaT2\uS69
-]wPx²W;f0I괘4dT H-+.>S@h"8Nw-M@[{v}Kr$ F#]RO羝%fQJF@F!$(cf@_Y9ݖ j ȗoᮡX('g7Q܎0$5WYCtVs*W
-G,9J:18BJ yԫIJmu
-`,8w%W UPX%rT{A-jVWU* 5*AQ#3!%
-C62}uz@R
-& {L̰b79Ԁ$QFSEZE!<M>kdp?3 &aAG
-n$k(O£a%PM'~BRݪY!+>URcؕ۔$Ҍ [S
-StW2mO5BӱrVBv\VڍX7p[1W5S*5d|nC8
-1%n85R*FO*XD Ð\,x!QyXMN̨y:ymzX:2c޴X \_[gֻhcAe.NF~'
-:Z'!3{(>f[R_;( 2ܤ{]VaNPl-
-ϳAUό0 ;dLpln;eEQ.BDM_y﴾QntNQᥳwjpSA0WQ 3fĽ@ ^FtWϨZ]YPysw9r2~r\ǔjܗ*ur\<Ʉ5A`N# XeZW5h8Y V1ߦ?\0x:k؂}ҰDY[DUb+eŸŸ'+GŸǢ׷x_qœ0Sr|S٪$ ][ո; ύj\L
-'qu^e~;(<wAn5.'k㚷G1Q(}>qŸbG1Q(}>qŸbG1?n*-!_r D+*}T`2t5Qܺ az!oqj'+Υ26jj5uIWK_ٔhMq;+\f#W)v56??4/@}Ib%avR\{7=uun N7iP_r[t(zk[s^g<Nʏ\2ڑ\7FGVx@~{lRrSUī?aF
-uo)pdv֧&E;G7]lf1,񜦧Zfj/iuYϦ90-GvYA
-Rj-\Y`Et3Gpi.e]~s<Q|Oeps~^9ոR=oXNH 럚,: 6t歡AA%X$654@0 G1J8}o^Pv;{mrcF:s<+S0;} b[veѝ"ϾYHO[#:7C
-Ա֔iXWz:)[nrg#F/tQA>%<3(_Z~gV=F%-gCů2X+{_sg)vp[=s- `=HʵxnRQ)nUIh\CXxEw7~1{( ˗͝xc 9]B'[P \n:
-;aFŹN).X7LjlU?z0ZFm{ ~C%b([YK:?1vi{mi4)= ~b8vwE*_ɰ%A^vH?paTp!g;CwsդMlo4]Vڳt'5V6;}KxR M5W-rRГn VGwM4l`ykSۓ*a[&] GWG!_^uwzv?d o*ZH LK1_~
+421 0 obj
+<< /Filter /FlateDecode /Length 5798 >>
+stream
+x=ˎ$9n8*VPhkr}[k7)"2;3SAQ|$]ӓ>/_xuafƩ/OE.>/ކx|u:~˗[
++\}#PC ԇg-( A+Db%=H3ArJ?H58O6Ĩv( Uq>
+!?q4r??&$J5:̄&WLcZZ%ݤ!Ke^?(AT¨ܮ.% "&9^uŧJ;R nL-JIT3oWƮ Iךω$N(
+*BHQT!ᩁ Lq3u-T5܂q"0ҮakUDM&2B'+XP>/Ÿ{Ktsش~av$*UȫcT S:k$AKjV'jn*,̭`;vfkF|T|™>H}U2FMK пg
+FLB* <,b]MT~ܬzNX',LWD(Kd}6k#5
+ PW\UiVUnXS#t6 jlXIlC
+YrUXpyNIץ5j!/
+Sj9+CQj% `WU8*_ph8rɸzAŘ"f^ctE,)*q-TUi0\Q1jIӎt*q<PmF]`W2 {-An+xchW0DLIi
+nӷ}w48Y0.n^_ϖjn4تkmR®Y}給 ^xW{)i7gr݋ӓgⶤ9ADQ+2>j'y* )~fie-TEVԥl*9CTpz` !ZlM 5#).P7P-LpڕAQi%tƧ/,hse|\,+5yEk6U2eϥO#RcEggV^mNΪB8p:1&J̤;fdlzÃݕߪ3:6ޮ0r֞]l}RtkyW!#O#]{ֆŵ66ז;Л*U+N]0٘?9ZtGĜbU,
+xGj{'Iٙ(8}`DȤ;fZ,u*\dol![8,oۆUڰ5.; _"X*8B;Y]AeҟێVa&`5uyTk<t9VwgZ֎I@Aڟty+%-;-W}{0U2н$(i˥3pk`Ry&.U[l:GQT)ϺgFbI|hm, Ji\Ƒ#}Ūf5Z:#ZQmm 0lsyj)-50b`zl&02(5YCvBစWBNJRL
+3P}#L֢^,HLTlLD
+2ﴉ'| 8Uv
+9$( "3cedyJ)H̷;)rC7|W11<_!.dqUD#Y^jTJS cc5$PPn8/r"N^i
++Tח,\2QP0`hCbn̋HJ8j؈qjA++qtIw->(-,haƹ ,87
+3DA}ΨL|MхC :4*܀HJTJ,FblLCasDҰ0<۔ɼX(4g@@jʚX)1EwjKA+?ryTT/'a⩃6U-?":<iʬ^{떿.O,5gH('/QhC(9Sі=5eT_Yrw  >ї>C%弦:{[>2lͰL&+xv8e%v7IH#H.:L"xPȟf'dҒ oJ.ٿ-חbyickZ-nnHLSQ48ipBGJtm/,G+* ߛ8 mbH+'z#ԍ8XQsW54 b*>LQZPԈ-8̎V~50٣.1 8YvCCšrPD{^610W9ּiv}rLퟪqdNy|3G߱BsILgn0;da-P PUIcw϶$nrnY ;[hPE##t(Sin=&X4s1}=F/dJĪ
+wja<Ni܅d3e+s@(G܆.:ݷNGxw'jk~ &muW ]+iƵÄ^Tۃ`p^#?3:udX>,pGb5HC-'KS`~u/d
+}.Y&㿂='vs/D
+LJ}K /tWfS_?jqF.-#ǙFA6f,8[jٺ]X;ϳ=v7[9iuÛu#[}d>uٺlG#[}d>uٺlG#[3[-U%:&{o- PL5SeFq|qy< U;9_p*ե&Qn5W%UlPlaW!$ZS䉞
+5ICIgT/"f]s a;]B1r/}!ʈydڭ2ΜtʍQx𨭌Du)mٝ}[G<d:6g.)?o9رx|H l g6#.Kezɥ\2iRi!NFsܔ0Ҿ1fpf#ޯB»W6#q>zFJ4ёo0{PʁǙ꿕 `Yfsm9Pk?å|i.XcSg.9t
+8ڤ&{[ު2Ї[7@lx#Up<"]O7&ۼYO{zmn+[}uh-p^z<Ҷt1;\K W7#&Em_;K)hfjBd?6rM:]twٗ;|Y7vpZ1xkPl.-^ib.Zn4-,/9$@upRëf*7F-}ߣm԰j?7O9ov9Gl_vs|FZuN4JO6Wؗ ̅yJʅ :_k ފ3|9l5>L^ߚ/IO0x*tQ`'CNo~]xACqAmc:SRKu^]z⤄~'݀v:/Wdg^(aDk!/lp;-fۯmRdtO u$I$yxeq{TCӪ…O!WM ]W6n\2 lqW:SLH"c4O)Wrw]cv
+LlSP03xKgw >2{Ԧ1 6 Vi(bibc]_Sl& Ʉr?PR`wLDfdY~24{)BY)zfu 5wl' {nxF bx2WyOG#:4NgueG&:;<jbr)m>LȢ)yp 4
endstream
endobj
-416 0 obj
-<< /Type /Page /Contents 417 0 R /Resources 415 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 390 0 R /Annots 420 0 R >>
-endobj
420 0 obj
-[ 411 0 R 412 0 R ]
+<< /Type /Page /Contents 421 0 R /Resources 419 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 394 0 R /Annots 424 0 R >>
endobj
-411 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 233.018 77.446 250.058 88.903 ]/A << /S /GoTo /D (subsection.14.5) >> >>
+424 0 obj
+[ 415 0 R 416 0 R 417 0 R 418 0 R ]
endobj
-412 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 263.113 77.446 273.57 88.903 ]/A << /S /GoTo /D (subsection.14.5) >> >>
+415 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 233.018 85.96 250.058 97.417 ]/A << /S /GoTo /D (subsection.14.5) >> >>
+endobj
+416 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 263.113 85.96 273.57 97.417 ]/A << /S /GoTo /D (subsection.14.5) >> >>
+endobj
+417 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 410.999 67.03 417.223 78.488 ]/A << /S /GoTo /D (section.5) >> >>
endobj
418 0 obj
-<< /D [ 416 0 R /XYZ 78.37 808.885 null ] >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 427.927 67.03 438.384 78.488 ]/A << /S /GoTo /D (section.5) >> >>
+endobj
+422 0 obj
+<< /D [ 420 0 R /XYZ 78.37 808.885 null ] >>
endobj
17 0 obj
-<< /D [ 416 0 R /XYZ 79.37 771.024 null ] >>
+<< /D [ 420 0 R /XYZ 79.37 771.024 null ] >>
endobj
21 0 obj
-<< /D [ 416 0 R /XYZ 79.37 734.627 null ] >>
+<< /D [ 420 0 R /XYZ 79.37 734.627 null ] >>
endobj
-415 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F69 398 0 R /F15 377 0 R /F55 379 0 R /F56 380 0 R /F58 382 0 R /F23 375 0 R /F29 371 0 R /F20 378 0 R /F57 381 0 R /F21 419 0 R /F65 383 0 R /F40 387 0 R /F59 389 0 R /F46 388 0 R >> /ProcSet [ /PDF /Text ] >>
+419 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F68 402 0 R /F15 381 0 R /F55 383 0 R /F56 384 0 R /F58 386 0 R /F19 379 0 R /F25 375 0 R /F16 382 0 R /F57 385 0 R /F32 423 0 R /F64 387 0 R /F48 391 0 R /F59 393 0 R /F50 392 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-432 0 obj
-<< /Filter /FlateDecode /Length 5033 >>
-stream
-xڵ\9$;Wk<
- tVv>5ce>cٿA:"2ꪈPPEH"/~/+{":_>u Qc.)!7_~ާJO%)鯿 1fZ"&j|ށz} 寿I[^~Ǘ?DMT ͽppkXF\;8b s^HyS^Z|~Z[a,ON_kBwKxn။=%LmueU~{xɦi"^ dS~tژrǪJZ\'7r
-,vZ9wzaꀢZ
-0Nia7f.Ku2%Pdp̵*U]$I-UccObzjNNrgcj'6MݰrlTeZׇ2i?lܼ\uf^ HX(NX=oGh 21+=Q4
-|[@yƫOzaI3
-7~!WިhhϲY8?*k_ ?'7KWj"UcCo4z-tA4NjvO$#t'1%(P]
-Uu)
-0[+
-IG*?02=4L=ʪb:!¬fC,^bA2;y,;(׫ Hޗ1״?!״$`pyl0mEȾGO0u 'dsY5Q_eGޞ q)#όQ A&T^
-
-#Z
-9fNkڀeaZk>bn/(bhjޙo 0@ۀKveXA'4&%װRYNa#ggn~h-O":bdF}z Ӽ۳V^mv&Sw|_*ph>4T.Dv:.Cwؐ[sOXZ'.Rr-R ~Z*1nƭ'7k\'P=LʷsqTqU:^ɨaGnyytVۙz[#Y(d~ ۱FtK\Y0XCwX)f6ܑ\l=32P-V35V\lX ~߯ASbWy"̝ v1n0_vL
-kQ0:8ܳ~C}Z 2HecWnxɷ:SnDPW NZFα-HjRn[u?i='$ 8tL9k!K&0{gi?(!5M:J##~zG
--sg.\qnxʠUmLpG^1T:=.S_CT9t>A"`81-ډr9P;T&LRRI-wۥ<zm
-P_cIO(Qe<q[ xr ܻۻG4>jU^JNbVZs廇6P}3Pyh iíy!.!"J(v6$;XHʬ)ox}InuAgtцV?M@gYs?4ΨkxrVl3kզav#<ȶqZFZZaZ/[`c."#R)=*T{ᥨs`I;˝~b8,篸\h><wBiN=4(j.-
-,Ӝnvh(=(S䔱bN( EmxJe4s ө#^$h-ԑg|jV/͉7rz'_z69L󭂥]N`_Clyܜ2G̕%d;uzgq!NJayS˦R4fAnFg&Du>sİS|I-P@;C.&xvyNrՕoבI¹Wւv_I7! 7{w}ٶTi@MԴ/g<(2.쁗{Q .aS 0S`o*ZtaDIM=t;%q \ 4\qQzmmlSmvϦ?V}Gf΅;a.4|3,wytߋSytZXLx`Y9nXwP9+'6=IVhEww&,|)g7[.f|=Ǿo#' >ΕϿ3APuY8 H+2r: +:2;uB&9_onr/Oy"z* %/CO'WM H`st(&6.;=ۑms?]@(ծq)h8エɿ!:F7n?
-/u$<NF&6zR%P"(-%4%4i)OOۡdPGxvHLq HMjs],lFnL1/G@ڨL}AMs)"wOpfQ(MPeÇ1{#U svsjYumж ~bvV&Xgd-_; HFJg#ڢIkY@ArVE>ӳnRgAܯa#<^vxeq43;:5zf0w|`毧o;~kht
-SА|c7!^]ι1cķ5HUwv>͆3q1~&[[iR *a,9ntz3 6+/a4r!j mftyӁx(& ى OO\Y 9L\ݐ.,KZlb^PM=si$>JTN8IG7
-TV+! 1
+436 0 obj
+<< /Filter /FlateDecode /Length 4652 >>
+stream
+xڵ$-߯D]jhT%G*oRd[lv7xy+ow
+gE,`nFXq;HT&i5+H4 #4P v7'f~/w
+Q?s&@04^ ~u ~Jc0ffvՕygJiyMU9Vi{LJ:Ë+D\!9tz4P BUVz(rY~Ve~F(I6n{U{Q:"UgQi@
+ %6-麴\2ƸWt(+TP ˮN+)]tq$K GZ- 'ݴUqQh|!FL< t:P!ڙ6/,-Zil֥='QH8P6r|כ7U֊|0j[8TAB܉^T_@CWwTYT9@|sZFG;]FJ+3q~RQؾ>
+?'7NW#+wšp.IwYO"'^9aNK^ygJ"JaOMu+tTխ+/P |W;l1@K3k9 P~t󒒇ٜFXzZMʗ˭ͦ T*By@%ߥ'
+%oG8e^v40U$n90u[65y^fwɎ$Ө̉#$s']֊ (Z,1"|Ǒdž+piLJZ%o)IyUiQjorC<~鑊O8F=QqA@Xf*;mNeMZPw5OhIH)8BhN;Yp°2Ϻ-3 D;o#m[*7
+`Y6FS=g
+J7B826LWRUAlc,J ;K[4d<4w!$nǗɯWo,1״?!״`-07|lW6p g N0mu 'dqYQU_Ȯʘ':8>2ieD4i21McZkAH]-8YύFiޢ]En칱r~= RȒs=73F
+i&MP(*teŲu0BH_;ój*1,q Aj 7p's,Z蠗[CQZPL
+e|2iBmrr0<.(^6%EA W8E': I͌o!NnžXCL>#eqoff;-.WߣXrwחh͌oOiHT,M1ND69%Lj~CB
+ƅFjYY+9='11ͫm>T@!٤ʲCˊ4煀V'{憡ߚg3o1޳Ji."-G<<"U
+7 <9 x|_v|uu܇gNqׄe e԰#?Gnn:|Oh  vf:V Xk]x=q ga8`.&/VԳTbYŌeإ(Qbudž
+)u~⓰ E`?sޅ-f]_4DY8^hT1
+ UxZؖ$㶳⠠d7zw($,C鲭C(+Km7!Op ?۾dԐQkm1e$pQ6YUƲJM{Z*{U3\q;:hCMd&?Ar$׮hYCT<a힓ޭ
+³ ui%£[ɭ5j5L^x)d8iI_*W29\] cVw~
+#Ȏ@ڹ:s#2߳=f[*= }`Mls#4nDsG'=>b2yaP` b‚6 JYڷn;ite#i׏H%QnK>[oMa 
+gLƿڀ_YP@^Cor<3ѓNLEwX91NLW~WH/,TS⨝wQ!IxҘV, Ϫ/Lghxg^V<G ,,M,RorUObU^h]4iU `d=e'Wk+#ѿ߄M]&-02>ycz gwipyBofoq=۸ahr}wTE걋C#9Mw!Ie5sҼ2^klǹD+Ȼ~WITpWՅ$W͇e⎟!mSrLa:X )s0P8;G)ҞiOrhk^a٩TК0pεD%e,x.<^;;jc1nǂ⻼}<NS;v KE1s۱ {t)bM+n- 0|i^}1" *H8 e3O`f0])CQ[䞔5z#JE#9t,u(Y,nqlm49Xa|JlĪU\D@y-,K?p_n?ѻuOx3 Y*=F?24{ m/v_RP&
+? ??.#ˇqJO?L /5.J{[CzfMmRGmyIOq34<7#{c1$jG9gleu˶/>V9QlOG&5T/sߚ{S}s-yX.֔ s=Ob8Ə]0 ?! BF;Q䕮fm1Ƈ; S-q8@3Z\u3T~EȒt„a(qLٹU٢_ࣝo*}n}4^r ƴ3 "5? .VԈCuܝǴפj ӱTmqˮ_{
+M#tz
endstream
endobj
-431 0 obj
-<< /Type /Page /Contents 432 0 R /Resources 430 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 390 0 R /Annots 435 0 R >>
-endobj
435 0 obj
-[ 421 0 R 422 0 R 423 0 R 424 0 R 425 0 R 426 0 R 427 0 R 428 0 R 429 0 R 413 0 R 414 0 R ]
-endobj
-421 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 328.934 580.721 340.889 592.676 ]/A << /S /GoTo /D (subsection.18.6) >> >>
+<< /Type /Page /Contents 436 0 R /Resources 434 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 394 0 R /Annots 439 0 R >>
endobj
-422 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 214.424 530.024 226.379 540.903 ]/A << /S /GoTo /D (subsection.18.1) >> >>
-endobj
-423 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 302.553 419.259 314.508 431.214 ]/A << /S /GoTo /D (section.12) >> >>
-endobj
-424 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 136.536 363.781 143.51 377.297 ]/A << /S /GoTo /D (section.5) >> >>
+439 0 obj
+[ 425 0 R 426 0 R 427 0 R 428 0 R 429 0 R 430 0 R 431 0 R 432 0 R 433 0 R ]
endobj
425 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 156.461 363.781 163.435 377.297 ]/A << /S /GoTo /D (section.5) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 328.934 597.971 340.889 609.926 ]/A << /S /GoTo /D (subsection.18.6) >> >>
endobj
426 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 247.43 351.334 267.136 362.293 ]/A << /S /GoTo /D (subsection.18.1) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 214.424 547.672 226.379 558.551 ]/A << /S /GoTo /D (subsection.18.1) >> >>
endobj
427 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 294.474 351.334 306.429 362.293 ]/A << /S /GoTo /D (subsection.18.1) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 302.553 438.368 314.508 450.323 ]/A << /S /GoTo /D (section.12) >> >>
endobj
428 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 95.809 309.877 110.533 321.832 ]/A << /S /GoTo /D (subsection.4.5) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 136.536 383.688 143.51 397.204 ]/A << /S /GoTo /D (section.5) >> >>
endobj
429 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 123.485 309.877 130.459 321.832 ]/A << /S /GoTo /D (subsection.4.5) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 156.461 383.688 168.416 397.204 ]/A << /S /GoTo /D (section.5) >> >>
endobj
-413 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 410.999 115.689 417.223 127.146 ]/A << /S /GoTo /D (section.5) >> >>
+430 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 247.43 371.44 267.136 382.399 ]/A << /S /GoTo /D (subsection.18.1) >> >>
endobj
-414 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 427.927 115.689 434.152 127.146 ]/A << /S /GoTo /D (section.5) >> >>
+431 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 294.474 371.44 306.429 382.399 ]/A << /S /GoTo /D (subsection.18.1) >> >>
+endobj
+432 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 95.809 330.582 110.533 342.537 ]/A << /S /GoTo /D (subsection.4.5) >> >>
endobj
433 0 obj
-<< /D [ 431 0 R /XYZ 78.37 808.885 null ] >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 123.485 330.582 130.459 342.537 ]/A << /S /GoTo /D (subsection.4.5) >> >>
endobj
-430 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 377 0 R /F56 380 0 R /F58 382 0 R /F55 379 0 R /F66 384 0 R /F65 383 0 R /F67 385 0 R /F20 378 0 R /F40 387 0 R /F46 388 0 R /F59 389 0 R /F72 434 0 R >> /ProcSet [ /PDF /Text ] >>
+437 0 obj
+<< /D [ 435 0 R /XYZ 78.37 808.885 null ] >>
endobj
-445 0 obj
-<< /Filter /FlateDecode /Length 4590 >>
-stream
-xɎ%>_Q?Jځ
-_] Ӛ[$FdPE~
-7ԱKiS
-4=nBv itKz&uϛYBK"y+В9fpCA~ gkP{[
-e-GZN_!\V4A.7lV& Kmi<BD?E>*'lL0z=٘AsD(\~b~o 7=H'ed"SP*yqRxW+y F lKܫ^t6^/JQn_<'
-'nZPՠD'{*7V`}!V`D;=:H[ZHЕ]=&Ƕ;~Lg1fqj6a"bτt( uC"jڂGГGZn^o׾6W
-2&x*I)=Ph8Pw꒺3斲/K=q͸ymME9(v~T_T:i%M_lZXA.f
-&tSm%F`r'ة[ƞmKhc*J-Bd[l"ܮjvfztA(Z.3KeY{qmNl[u<lQ2Gu.n턏*t(}a}4Ts(lF2PM6WKV}C6n[\#`3] OJ%TrKE>-j9W\oCո4")TTǁM>R_`op
-4BVgwK>r*rc(хT] S [YNEZŃ>"iy+$e`j
-_"lÙu T/As\`sQ]'fuo`_p0^78mkVǓZqdS]hM\gybrYQ®.`292!P$ DG1WT!٬;
+434 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F56 384 0 R /F58 386 0 R /F55 383 0 R /F65 388 0 R /F64 387 0 R /F16 382 0 R /F66 389 0 R /F48 391 0 R /F71 438 0 R /F50 392 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+449 0 obj
+<< /Filter /FlateDecode /Length 5237 >>
+stream
+x=ێ\Jhp]߂<"
+@M0|?_n + A6 ᑾD9I?c7}%*`R9k4hsğ2vO~_͇Y诸۲@8ϔQFސM홐aJl4KumDq\EܼF!"5T)}$Vڀ##B1`([⢴ piZ=B)W[@ѵ)s󏮕V(H)O;<b[YeI S\l,8AIc9mPԳQ
+[@S;,G뢎kd/J+f9, > INQI|^@dП:\P7is;f ;e8+ifN9иAY@mV`ւeVm( sPDzi˅EpQ9-`R AJJ٢Cx3[wV#Am=-yD(\\pn$YM?*NJV՞`JaZ]Ӽ\\"#Ada[TwM#b/f
+|XxT7{}A)&:æ`[gzW3tC!h۩o$N1cJ_ Vg<o` q ^R3'þR3 pa颇zsCϘzH-ē@n4'BG[!/^A^8[^>n VY Ygd6y)Bd ɰ->Uos-2״"Aa"l9>1 vgV_O[W|CcZ8PB~Uf69 1ފM3c!40o<BI֞Z}k*m#(2L
+ku]Mm""Ej-Z8K'UKyhn;J%j$.OY2Y#X#<G¶z&xEFcz/xk#E:4l"kTY4g//Odz)Ӛai<r`(!$C+GR:&*C1顄)6W337)bAa4BM+jjo(>#'gNI8׭(Qhy!""}nB҈6%*Wf9]刐x#VQ% ,Z絗;':Bawrl*@Bq3-Yڃ
+eZP˙_IIh biYg;IYց,B!m $b즥457A/۽;=<ݻTq!g{Y}wPn@04G*ĞHH3r$ކ#aO2Yqte
+t'*y=`' 1%)b豴C]յekݚOҨӣΠ\u;1闭OٻO ]j⻭{GG11iD57~[|yntÖakKBqnI<ޫo=KN *3rK5IT TC#!k[>
+ׇ ;ܷM hkǘcf_9t *lÓרSn?W~џ)
+yi5{hgrGg XD=b]#rdDkDĺMм3'*VSMѩr;A,dyyR\FÂN3pSgnOn[3X򽳁CG,DuZL\gGd>nJ6 wlK$itɫ0ގлzkwnG@Jo5t/_'KXlީb ]I%@vY/zϻkTQpaoga|| '&>9#]FZ5z.(J_wN i<1U~o
+.3GkrƱJ)pOnY/,N^3!؞ء6.1 Ha ӲdSin$egU# oZla
+"zAo#xO/|MڛX_i뻱B!ZU{R: Mlʣ>%  jƗfDt|}j:+xZjno->Rhk[i9Fu05A&&ry _%qﮗҽfU(URַ9\es_β5 9gtCnU[*Euw_K{3aY5qdY>콫7_и+<>^ͅ'΄W-" |
+Ƙ)~[ HUBch~
+{w 'qGg"C3iw&j?g&ָaN3r 5^'0AI8Aݤn,f
+Z J@N<y! .NsvOw1aB$LdvS3Q?1R(p3Q'Bu [(ԟc*|(WÏ P
+jToh 31
+[wQЫqú]]R-=c!5텓r=ĿDħ)F|BqhA .m̄H ̄;5':f4_]]<m*֐RkTD$}LX>tQ*4i7!SjuTL
+};aѦp>KGD?ed61q؏ȉH ^i{_FTIXIR! ݍ”p+k^Y2PuCjkQ1ըLIk9siAEfI_er()Aƹw:Q
+ꋠS9-"
+8K-[.epYE%b
+T@q/_VCouhǢ %4#NP耩Ř`'W_Pl_3ހ uaw/ 3CoitAHqeA/k}V>>VMFU鶬B'e!t(GqxS3:֛}CN#gÛzj uYin?2pQ!)hNg39C<QQk5+ՕP3)RB[`ʹ/։)#E6Q!VYҘ˜?;
+vjZj>:C.*{' ]/Y!)Uv+c_ȠɰYv%:1 y"EzyjSޞc/[#ı2i~X:j]]OnP֑ˮ~1: Ξ,Pv숹UZiR9Z­`
+8(MC̀~eTtCYUDtșW*֭25
+;T,ϜME>;KD>N5y<wZm^ }UZ Ngj/FyQB..0!V N"_K0^`Ef-N$sqOe8uC]<2`XOwy{O*mWᵜwxHz4m e=%
endstream
endobj
-444 0 obj
-<< /Type /Page /Contents 445 0 R /Resources 443 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 390 0 R /Annots 447 0 R >>
+448 0 obj
+<< /Type /Page /Contents 449 0 R /Resources 447 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 394 0 R /Annots 451 0 R >>
endobj
-447 0 obj
-[ 436 0 R 437 0 R 438 0 R 439 0 R 440 0 R 441 0 R ]
+451 0 obj
+[ 440 0 R 441 0 R 442 0 R 443 0 R 444 0 R 445 0 R 446 0 R ]
endobj
-436 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.84 509.22 131.564 521.176 ]/A << /S /GoTo /D (subsection.4.5) >> >>
+440 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 169.731 565.42 184.456 576.369 ]/A << /S /GoTo /D (subsection.4.5) >> >>
endobj
-437 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 144.516 509.22 151.49 521.176 ]/A << /S /GoTo /D (subsection.4.5) >> >>
+441 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 197.408 565.42 204.381 576.369 ]/A << /S /GoTo /D (subsection.4.5) >> >>
endobj
-438 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 284.581 224.577 299.305 236.532 ]/A << /S /GoTo /D (subsection.4.6) >> >>
+442 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 284.581 280.218 299.305 292.173 ]/A << /S /GoTo /D (subsection.4.6) >> >>
endobj
-439 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 315.026 224.577 322 236.532 ]/A << /S /GoTo /D (subsection.4.6) >> >>
+443 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 315.026 280.218 322 292.173 ]/A << /S /GoTo /D (subsection.4.6) >> >>
endobj
-440 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 320.625 96.423 335.35 108.378 ]/A << /S /GoTo /D (subsection.4.5) >> >>
+444 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 320.625 152.064 335.35 164.019 ]/A << /S /GoTo /D (subsection.4.5) >> >>
endobj
-441 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 348.302 96.423 355.276 108.378 ]/A << /S /GoTo /D (subsection.4.5) >> >>
+445 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 348.302 152.064 355.276 164.019 ]/A << /S /GoTo /D (subsection.4.5) >> >>
endobj
446 0 obj
-<< /D [ 444 0 R /XYZ 78.37 808.885 null ] >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 323.989 67.047 334.446 78.504 ]/A << /S /GoTo /D (subsection.6.3) >> >>
+endobj
+450 0 obj
+<< /D [ 448 0 R /XYZ 78.37 808.885 null ] >>
endobj
25 0 obj
-<< /D [ 444 0 R /XYZ 79.37 636.284 null ] >>
+<< /D [ 448 0 R /XYZ 79.37 703.88 null ] >>
endobj
29 0 obj
-<< /D [ 444 0 R /XYZ 79.37 295.232 null ] >>
+<< /D [ 448 0 R /XYZ 79.37 350.873 null ] >>
endobj
33 0 obj
-<< /D [ 444 0 R /XYZ 79.37 206.251 null ] >>
+<< /D [ 448 0 R /XYZ 79.37 261.892 null ] >>
endobj
-443 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 380 0 R /F15 377 0 R /F16 363 0 R /F69 398 0 R /F57 381 0 R >> /ProcSet [ /PDF /Text ] >>
+447 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F28 367 0 R /F68 402 0 R /F56 384 0 R /F57 385 0 R /F58 386 0 R /F48 391 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-450 0 obj
-<< /Filter /FlateDecode /Length 5953 >>
-stream
-x]Id7ׯc!P@is*o>y`4HI(=jqzE~D-M~ /-䵷_~[Ls ^ o(z|/?D:Z:)}t7]Ga>  >@~R?*lO_ 3[c4=
-Sw;<#U|[ (0Vpۛk`MiƇT@֫8%k
-
-[A"ҝ]IO/Ω
--* 6ʩ{cک5m$J)0=cIP1Ͱ^Ϲ~_~6$\#\yܘˉ "ny?C/v+gwv׻h ,O_ ƊZPe\*<Ԭ6wҁ:fhNsl#3]gTs ΚBbJR8UӦ<QFH;aDXZ+ѡA CoW P69< joY{0ks,sCZ
-|*|z)m?xFl] |ǒSBD ?oBXc+4АJ~3բZ?뵰`+Ĺ\HJ\;[ ~%9#.Bo | Sq$U.!r;G,}F9uC3 Lݱ\o\C/^(o>!f7 閩(@ wۇ}|;x&¿ Y
-vJIԜP [r'ɡSʇ&hUbg6Qh *A(|!rR(NCz}B9D`ah P&aR"xlEjH "60f.7Ibxs&;ӗc,Dny@ŗZ Jn;}"
-.X##n@hfZc!']m#*6*O kfZ* *핟'HxV@[
-Ol8 Od%a۴yݏ,A=j~KiM 8ilB3Pz7֥4"'d/eQKE((:(xf@bSWa0uMZwy;XXPG}ϯxˈZn.h
-CW2_0u{>.6S1u`u6請`r.[ &R7`
-QAOZasn$Vٵ$*mPx5"ou*YOߥo
-S%O0ԮSu0u99iUs&J UM;U'HK)%:t€%Hv HJ yZC6Ǧ:+]qwiЩRTR
-f%AZq6&J 0\6Y@ƑuzjWsʷzLL 'NjᢇCCr8r2M0AW>4:IJ5XjSqlʳ9NLN,W:$PydoJZspRmK0ØGXih<F[W;`E䤤JP044,690u3d'Ls${5N(IJ5Xjӊqlڳ9PLN,W:$Py6XJZYF0 8J (a a0XTOZu]^
-8i|`~6ۣcrgA`-zF6H&
-[JTt*:nr$M/ꅎ_v|fDdPRQ-Tʼ!ֵe06^(ۉyq*Ae#Lm
-N`D(j[(y
-9am= *:$%΁vb7O< q!S~!(8sׂ=D
-^4#`u#qu#wmupĥW};DjH/niȵKw8ul/<eP$BR+%]\Ҁlr~/Z+D땴1 )bڜ7Ɍ]+:l'`<)מae#61{| _*ΟhyK=6Zu)/[i!2swK\ݩ%Aߝ:76zG_[޹ܑ5f\Θ٣ۖwZ&ԯ**wiHot΁iK ?8wWֵH.]]]%ܣ ?DNԫÑ[$^6 /^#Aŧ;܎wBkZkbB*A;:7NDNML#L0W`!9
-
-Zo011PW@OxB&cq/ 3k ~K 'Q 2.޼gʴlnERa+0l796qI< Ma 56Ŝi*6} mƹG)X\pg_j R.`TrncpA
-C;R# <;^L;y'󁭓NRqܡ߯?9z_9sT'H_A?rO"9H0ip!yWN&GoRvJuT 'm:ܟt'
-棷1N:y Wjr/NNGGN~!R:"}?wv NzS~!yWN&Gop䯣g8s
-=;%8&I>:8 YWsSYޭ*l/,Z5~CO>|_Hh=i~|Wc4蝍Ն*G ot\;a$}o}/pv8`HwȌG/#sf {vjQ/Rchn-T>uWOnqO
+454 0 obj
+<< /Filter /FlateDecode /Length 5834 >>
+stream
+x]Kd'ׯȥ{y?RI7}}-yV+ϸGH
+>Y.%r=-
+D
+[4$+O͢HVrj1ڌ5NR@z!ҙXFrq\ҁ2y@=
+Ɇ* 2ǻ%]TcD9<h`#ŗj \?Ѩw, D>
+<O72c Oʺ(=W`Q<} ɹ-ՃZdBeK֤_*<j7/4%0hy ]<c6t_\@>Z k ]M4j
+3a*5Egÿye/ڛ$}-ͩ&Jj^ʑ^k6_nҨC"N{ (^72=2QmSuI2I\a7nֹxƨ?"w Bm
+EKc#=JLT KFŴDc[Eh -oTmO ^$'fW;vDfymSȥuN]S{"."f$v+~
+*^e_wt7}哋NCjDxμ99Q'_fupzc5{\YԽdòj [O6,~aUg꬛@vδĖ|6B|݆,>hhjȉzF \IE53OOć!DM;I I6͌\ؚ0x!Éf*DDhԵE󒗳nu|w,&wo@#yn9LUl%S[;dz$7
+QNo
+Lr VK5
+SZj8V[z2),W:h<5T`P]_sG``$OKVq(Drc#bKJ0ǕЄQ+OEwE$E8/d A4
+9=ó[@ܖeVQjRY(Ȳs-JM=[RY$/@uB$OSm
+ yLM+xoky,Zpdʹb=>d
+
+#;wY31Lc,U?aױLmH.HqCgf1H9_)ʫCD][V,V}i\^K9! s ,IkS)BMKyY7AR)X]%fUjPбY[OwpY*ŁoBD$
+)$B+ }];!QeX&0x ܣ 0/%%9_jFkDSU& 5 قW~Mn~)G±ZrSd+8`ȅ*?r\S{eܻ̾揊^xp]droEl(oC@6Kd%)\Jf{w
+YqێݺFe?TGXe%*1qFW>P.9[xXB|Z鶮 < &ztwCȥYƿeZۥ;^,Xl/jkj-hN V[Ƕ㧽EnFKˌy1m̛^l|:9lNf!xY<oSޗI~S~#oИyt^J/>ꮍ;ŝY}D7;7mv?sy\;Cm07}&jG^j[ީ쁼*z\׾zokɞ>y}/A=y_
+]Qx*z9.abMߜ(
+պu'T0Kk<{-
+vW-GwTt+2Ϻgz
+Iw1Tr];`q#ޞ-JpWJ-2/}䉜rG
+t̸+0g=\|=B
+'Q Oc2;;%0 ]btO\O`07ȷ`v1ӺWLm[FutGW򱑯z0Fb(1SQȉ{ScplE'
+2=똡## {3)Fz:2O"9H@RÎweOaRmFsC
+qxs;O
+<UFɻ*JI<]|>C-U"FZGwUgf*a\JBYu/^>f%Zu<WBR\+X: 2;<dE[ڨEkj~@fzZG.y:o!x)]h+^+yyn&0\^֬7{b֚"gx;)̷6ulϰBMjKY3wxX}
++)-T:W?h9_y9`lN3rK߻RjL秕g3o0gʣَ` W źf)_CL*g߮ _C8]}33QZTt^uQ#^3'
+n噴/Tײ=쳇zgA ,2p*@ x#tcRi+1Vdw32ҝ*ڍ]@{i6Lg{a\ۯm
endstream
endobj
-449 0 obj
-<< /Type /Page /Contents 450 0 R /Resources 448 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 390 0 R /Annots 452 0 R >>
-endobj
-452 0 obj
-[ 442 0 R ]
-endobj
-442 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 323.989 76.495 334.446 87.952 ]/A << /S /GoTo /D (subsection.6.3) >> >>
+453 0 obj
+<< /Type /Page /Contents 454 0 R /Resources 452 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 394 0 R >>
endobj
-451 0 obj
-<< /D [ 449 0 R /XYZ 78.37 808.885 null ] >>
+455 0 obj
+<< /D [ 453 0 R /XYZ 78.37 808.885 null ] >>
endobj
37 0 obj
-<< /D [ 449 0 R /XYZ 79.37 568.541 null ] >>
+<< /D [ 453 0 R /XYZ 79.37 616.605 null ] >>
endobj
-448 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 377 0 R /F56 380 0 R /F58 382 0 R /F69 398 0 R /F29 371 0 R /F20 378 0 R /F21 419 0 R /F57 381 0 R /F40 387 0 R /F59 389 0 R >> /ProcSet [ /PDF /Text ] >>
+452 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 384 0 R /F15 381 0 R /F58 386 0 R /F68 402 0 R /F25 375 0 R /F16 382 0 R /F32 423 0 R /F57 385 0 R /F48 391 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-455 0 obj
-<< /Filter /FlateDecode /Length 4717 >>
-stream
-x]Ɏ$9rW$4
-ȨhuJMs)≠N!@(0l;iAD_L-8͵\ 8"b4#To?QnQ_~y 7ih@zW _KS<_ßn5t]jTc 4p% mwJSOD9&i[-Εs: D(ć LvѼ## ISk`~e.aT'K+@
-^
-iBtTe,c:$" H#B 4jMiRef<(RilURE%[Ɔw,ܕYz9I,$Nt_Ҝ
-YKƱ{/=}[⽞{3,iHi׮BxPaP_c⅟r9Len;D91x}QM}m7Ɠtq<^|LZސO _7MUxmK!qT|_W{LQǻe/&W** ϕ%o|2i/D"A[roԄ2 xj5Y۲en.Klo_1:Hb0?> W.zw4%D  皜{lF2lcIL7RFX#ᔮ&~Is|
-<?"y~ost x˸ޙ
-AX/Q_%ayw!B#' ?;jHbCgJL!i|PH&QLh8 @Ǚ0
-aEI3MOʦt <? qIΓ\*b?A_RD _5AC`<y'ȏy @=A<A WA $z$N߀䑂1L(M^ʟgƓ_'9%oo| &u
-/A4A)H_! !x/_Dc =) sH*$A<*F?JPޚo!Pr7|@w5n/G|N[2n/?n?A
--C{A~ȣc =F A$1HO 
-01zmEWc=l OJ?Js wyP ng7cb <:@i{Ϫ轧4 nTnPP=Uٱzt0-Ha5FpZ~th"W
- F#N>|\yB*c]5_.iTgrEqOoճRrL5:*m11 xt 긽ۭ[J}(~X:hHmH
-֙XK# 'Ne`L4uGʹ0S%kl Kk!؇)U(&m٪4bW
-u^iGso:jh]~e;Q;rd[%c@
-x4q?.0AGJC!@ igG[WX7V5f䪞_RѢTvd1.D;wٵt'{+QopHq| ƔLGJA*HLs15 cITmd]0\ 6xwoeV|=&.[RpkḀ̊rMJI$w}ϋn8노5Uআ41 .RVIѡLq UcKH!1 nV<;L[yCOeg7ه9ٵ!Ohh^@❵ wX=]B5?.؁B@  b]PWòn!̖g/DhxQ͆oԕ>qD޾I`Z^+jCQn;o* Em{!
-sJx
-3~5(ۤˣTX%33|,=(]6cIbfWN9.<CcOTt_a/_{(CִC"X9PdcX!@CbUޠLkD+~X.sjRr9tK}z8"f`'sK~ʼƎYAG}[AD
-30->'a:?82w$Vs0{((} D~ yȘ~Asll>u<%̞9u@P-K<t8F Xj|sD;<f?.y t 1$ojHx.NO,$3EYzXaAviJ8pM̅+saDqN2(>u0.#Hyr 93k2Eu!`bZ5w
- ˯SE*KZ5.O-΂p ןЗnRWz
-2*⊊gsgS:BYSK7>ZNq+@۟i֘f}xA1! lҟU}f$ь3sL&5
-$ub~Yb=Pl=(J0/}qӨ~ i;Nlkz_FCDi ҿ,If#ehp<g$j󟯜"LB6@ tG:
+458 0 obj
+<< /Filter /FlateDecode /Length 5026 >>
+stream
+x]IoWtPOOOs'}ϫ}aY9EZz[˗/?<]??.bToBeSaI_<bL9\ cFbߏ^{1&=Sy( *p,K?BuW/O6T*$M} ydbp^!t-v>]nDW( 1g
+w_r"u$Kn
+_~ e
+BG;0Ue:T$ zL{0 eZk'QaeS
+Ǡy]'@>z<irhɿg{(Gmv&myNC8u::]'N~
+kS{N {ss'G$O9|c'?Ip}H<C&G4'-uQN~>C;wS$=
+\&޹%>(yஓ$;)P_䏃rɇ5
+D5m Sf[@RA +B̄* dQaÐ2X HnItÅ1ۤ'\fWg-j%}<]δ\`]5\d<y
+XEo]>zM]}+`26iKbϑx3k۞iVBÓy3ܶ '~ݮv>|5 h#¨P7^ƹ#>fw`Dd^&*^5ELE`=v?J
+`D[[:ۥ4SV40杏aircn kpM !fFk޼#¾Vgt]=lpQqF<ƍ=eu>TJ|dLNe~ ?m:.漋i+ ʊ4nz){)OyXl|D($$5'A:-]CRlﻹB
+7p܍eO-Xw%B$! OJ^t I/NKJ['xnaQJ%TG[
+ZTK6T2w5i֨H,ƎqL2J+SO,YK!r8O3<Ye Fi7>y$(D*ى
+my6?1Fh(AZE1Esdq<i|k
+ fm5^{F M.+ =m [ni6B吔XbPtJ= e?KTl܉$#Htr) LQڅ,<lU,euS؁0K8o3;qMT+.SYrrgrڞJfӁz
+^D\֪.F@tئ45`4rHjl @M%FqںK /I:P^EIn%_t3I9bZ-5..t6 &վ  [# 6:ǰZNvCt(^rb7muJtdKchƆvF@2ƷJk-P-מЧh^ L>D-΋vcv4/
+CV;A_ʹ\m+Gj#VZ.^q52 0
+=>GBZA )8[kJ^anuÓ- ^]oe3} +R"M,VcYB9Y@8"
+Qjܩ$MJA!xad!sXiK#o%{cD]pWU7=U~- 5+YU_J] l<+r!I3#q\w-:)s?)kwcg&RK8qNY0RmBqLM5RŊ0tTRiCN9up7FӐv̀kp@`98*Sɘu2v2QezY?t鹆h\|&sW7ZEAr `MUޑ=DaoH鐆SX*FqO@M:ڞzƹWwzU4]q!hm ^Clk'Q<y@hET~1Nfd֩T߮BݐFgyȩأ} oS{1;0P8hT:U!%0%F+=5Fv-.){FPy4>-TUZ{0D>SS^ٳxi8ߑVt]h&Pӽu"6MYLނŜA>yzF"*[]0(ҕ&|pp:@ڕ 3NbIcRrT*7>ċFmswbB4tNp|㴟ִZ$p{ݵ*;RfA|$aUI0eHKC6p{u`iVcH"1//!khc
+r)mo:|/apzࢩQ<GDpѦ .hQR?E͓Oc ~(C*ZLTFz,FfHm{nYUSם!4☯*t a]N{Pux2՟8GJ!爱>UX~a#$͜)vͷya9'CٞU$@W9.}ç/tD8k
+綊s/|`Wfb)\Z Q
+ZH|Fiɘ[#+&
+'Nbr7eIk:/xv kF
+
+B]6AKewWEd4nz" aYި\1xt&]P~'ͦ$d|*NqX"L;rG8R{0)l˃"wlBUJL?pmvٖ>3s,]0(@BGDG7y{ ΥFm ޼%z pb{T/|Z/kЌ̆m[뭌{C RTj󛎹>rnӱ̮ i .Oɣ%:v S(z]/`Jfcn?]#JvFH] reg8an/j EYN?EߓGaø(*
+Gd&ue;\p~p ~$:el͋
+=Ն8Sv^ٍ\]Ɗő$duvES0X3k
endstream
endobj
-454 0 obj
-<< /Type /Page /Contents 455 0 R /Resources 453 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 390 0 R >>
+457 0 obj
+<< /Type /Page /Contents 458 0 R /Resources 456 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 394 0 R >>
endobj
-456 0 obj
-<< /D [ 454 0 R /XYZ 78.37 808.885 null ] >>
+459 0 obj
+<< /D [ 457 0 R /XYZ 78.37 808.885 null ] >>
endobj
41 0 obj
-<< /D [ 454 0 R /XYZ 79.37 443.755 null ] >>
+<< /D [ 457 0 R /XYZ 79.37 429.973 null ] >>
endobj
-453 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 377 0 R /F56 380 0 R /F69 398 0 R /F58 382 0 R /F16 363 0 R /F40 387 0 R /F59 389 0 R >> /ProcSet [ /PDF /Text ] >>
+456 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 384 0 R /F15 381 0 R /F66 389 0 R /F68 402 0 R /F58 386 0 R /F28 367 0 R /F48 391 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
462 0 obj
-<< /Filter /FlateDecode /Length 4048 >>
-stream
-x]Ks7WGJU&Uޓ7rJ6>lU%~Lwk$3 $
-xqp}mQb(&;4=a#}QFf氂8cG8zF/:IhD=dEM{9m Cs= 2٩Fy)XD$K}-ۜQR.>Gypmdkd2A]/uqRF{TW<b:M |^n<ټ\cᢞ"ͺ6OϹ95aQi~r
-MX
-&EE؍9pb.Rٴq_w*&">z}MavƱ%AQ{oŚdj[Ǖ)
-O6@oB yd"7aVIi Rm#!)!nTL4g
-_oC7RX!>wK7b2}cc̰4Y]0<c|
-myO&5._%ZJe U֌X~ `CK7^'{qFq-GZ~F4M6z *)0yʙ\5C _]]_vZx5lH$ӯvhYfWE;4hr``'QN]PZ-\֊+aaَuTsX(aWa֡KXG<Ehزpka|يeu|= [u$MXG.C*wu@!XGޅuTM:u`BU:njnaa]c Z#܅u PFvP:.jbwgމu"!bX[uX:"!ܰ\@$Z3͑\c9HHGB/0z;ґNt(Z؍t k"n?fPHۅtqC:nH yP.WC:Ok_D:z~CY@Hx\鐎ՑiPGW:RD)vXt\ rQ1!]>bC:*騘Et'Q1h󭑊t|=`]t$MHGt(ꈺ\SzQ5u{# .qԑx7Qai aH/96ot !5lk[ s$]0G9#GVt2iҪ"+$Jn,FvU8FGV퍎qmF 7{91\T;OBj>F8$콹qQ&a8SK'd
-p~"aK{!&b XO~) @*/`.ՂTwjg)[nb1Wp$Tui*c2M
-FS@)>r Lemsu%R{H.8"<FrscM8] Z@]]׺cӾᬖĔr"ս.PzD=;J*YgBh5Orzܾlőp!``$U}i\F1S/$ˣ>S)yBG1NʄjPMTB бE7uODZ}s[J>!V KgBs9^U=FRxL}4m lT@ ;%sL6R%@PdQr#)ЬTrJUW)W_ʟwYό )Dc+qxzRԭfz7{Wrpu
-?WX74?TyX8-Xxx8.E0
-Fz1\K9v|'2*Z?t^V h v!#a*ŹD;n#] =h};b>㏪SHkS\ m`y\
-W*98'T"'THJuJ*l=m"r&d99Ue|n>kNJڨ32ޙ]钰T̖ SU]Ȟp̸>
-kǜ:L5cN }ߠKUek,anQv8w0].f8f \C@$_  ?}zZ J?RƋ9z-^/NKqF`9hjp&;cccNN"3agVCpDIupr,7v5QϷ0mxNex!3\(<Q沊OV@(dl}._6+'n8Wo7!?(y ltcڿio(*j%wZ8X:aQ-pmB旊%D1-6Q0*6H)/=P' F9ᛏLDCa5@aKdGCfBǣ6BLal r*m⽾`'Jw_$Wz$uR`YC.!19"}% }P꾔QijAlT2& ʚaBgS%-OהmDcx1.+U$o;sj 3I%b7 Nö;k띈+֛oKz9X8vm[83Qe/9;| Oc7^Rk{2PT++`c3جG:9m*[jOs5y>q^c[e2ꊇų+A$,k`Ҷ8@~%SYpzSsl={WV% ؍-$\Ý#FRyg}Qb99p[_ ^,km%\jTR;M)uvT*QŘ|<%?Y0X/) QnE.1$W&| ON cu|&(0[l(ݛ{J3ыT¥eC/ [D/T*#ry#$%Źwc(l[ t;r٩+
-O(
-KN;gsn
-ƜV) ^m<
-Bӿ8&|!ttzܿR'&\[oE<YmY
-@gmQx1Ywe,O\&? 
+<< /Filter /FlateDecode /Length 4965 >>
+stream
+x˒_?0 ߏ*<R>%Re_Ivn$@
+@B^m_
+bl L+T$#in'(kaz5Z1)m7ĶE`
+Zb(f#qwe\ CI
+b5 Kb6ਉf_[=R̤j3_NJܜf<Umwxm Aww$GhTԍ1\eܱw~&ˍr_μ;$~Gn 3P=G-ųf
++$%d0Lb<2>{zkYa,N|qþ
+ vO)Rq}銂:;t:3/]-x`^qZ~BYbB+9zx͂>4K3y:w#!Z(j-,bD(~ O SB!CC!DRQPr0FBr5B4A0jB*@l7a!Z D9
+y-Pa­ TTȫ N@Qn B^ O3h OB>!z$~Ӂ4D3s0C@B>A@HH ČB7QPG!@HP D!(ʃ
+T]}c@!~ȃ@;a6IpFu
+y}Έ&[A4XkAT$AuD%p
+T]Ճ0B :AJgo )"#̎@U1Ϸb P ۍGR 9G. z1_l]'kAVHQ5^ Rq$31 ՂAނ oA?R79
+ۆl';i⌰AKvH!i!X=Eتrȩ
+HZ|(K?|1hzJ,4V)_5"]+_HSp{oEHn{vu҉JqEh4=7!bR#44wJalYA; s5Ķ-5pCY|ٜu.Ja _(ЊEµKvD`aUK[)hâQ#1"iYシrg$!˞+; _ˮ>+DԌ3me>a&վ<K{b-嫩Uj85J˦wEqܲVM-*V\3\IwP .>R
+txBw4#ǢڮvInVG ?K=gCε4ˮE- 1, *P;e~(tZ٘r̰qj
+Vw֥_]}hgoj"ow\sQNQB ])p=EKóPa~QJi˂j41@ {]Zr-uܭjV}0SHn^X1#l_n˵|iIhJ]wa?ܵ\/}:ؗ'(@#: iGR-O[b;[-8l PH$Qo'\KuK3غXrjYlߦkl\ȴUks6y(Ӗxx Jasan<BpwB29A>I`vq :]VϳZ?W}qV+_莲:AgC3Y}f;EOTeP-z&ߙp|gCS4`X%.g;KGuC=$ԾtY" XE?)D4|[sZ=%hN=m<aHpU
+%{+%#4[ji[.1: +=Mh排I kMwԕHđRo}2`(Ӈ T-Wմx]%RzC^vbL dM%0Cz8sy~nƁ1w1ޠ{: e+.
+{JC tAhtHGmչqyȳGh;LShV"=R_8ǾF
+|~]# 9m6 7-ulM#lÚ5oϯ_|#Ys_+%†?[3`'qw<7
+\.k%z/hLhC*튭<`!KߪZ&Ϊ\I 6I1oJPHBX;0:K ʌٌEn^A|3hRe)U=LGt[z33K#-#rP&p2
+j⧜~XRNyD8Lմͭl;g;n}lPoȢB/&n5!I亜ڎ^>6d'Nr܋n
endstream
endobj
461 0 obj
-<< /Type /Page /Contents 462 0 R /Resources 460 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 390 0 R /Annots 464 0 R >>
-endobj
-464 0 obj
-[ 457 0 R 458 0 R 459 0 R ]
-endobj
-457 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 506.052 160.136 513.026 172.092 ]/A << /S /GoTo /D (section.4) >> >>
-endobj
-458 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 400.205 148.181 412.16 160.136 ]/A << /S /GoTo /D (subsubsection.5.3.3) >> >>
-endobj
-459 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 386.259 136.226 398.215 148.181 ]/A << /S /GoTo /D (section.9) >> >>
+<< /Type /Page /Contents 462 0 R /Resources 460 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 394 0 R >>
endobj
463 0 obj
<< /D [ 461 0 R /XYZ 78.37 808.885 null ] >>
endobj
45 0 obj
-<< /D [ 461 0 R /XYZ 79.37 422.814 null ] >>
-endobj
-49 0 obj
-<< /D [ 461 0 R /XYZ 79.37 326.258 null ] >>
-endobj
-53 0 obj
-<< /D [ 461 0 R /XYZ 79.37 301.471 null ] >>
+<< /D [ 461 0 R /XYZ 79.37 431.402 null ] >>
endobj
460 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 380 0 R /F16 363 0 R /F15 377 0 R /F69 398 0 R /F55 379 0 R /F67 385 0 R >> /ProcSet [ /PDF /Text ] >>
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 384 0 R /F28 367 0 R /F15 381 0 R /F68 402 0 R /F66 389 0 R /F55 383 0 R /F58 386 0 R /F57 385 0 R /F48 391 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-467 0 obj
-<< /Filter /FlateDecode /Length 4726 >>
-stream
-x]Id cr(Y rOpN!c \CJUs詪(J(>i83.7l>=}s7X˧_񋸸8+O/?\qΥ?$8_ooyK|'/!>}-qbt?V"gNM&U̶
-HLL4ź$ :7Dň<EC>%S^u:3?lrL@m0u
-mKÌoÿQߤs}W(f|y)29S<I>LI vN T.O// [~ˀ~ ~ߣHɭ5Аp
-q *άRmJ|mЮ~s6U0 -)G*Ry"'jͿSu? øw' L &Iyl)`PZTfF 4e|2y70P/@^
-P۾>q r2y
-NԬnv \o!ByQhQdHg7m3>c.<ӹ.gMܭi0=*g|㧽u<k(Kk PhNJgે*=L]\ua0t:- P*'Yҗēc䖞Ym)KOB-S"$XҼ2 FNvHpSb(W3tJ"Bݼ5@8c+\U2X<^O:F:Oޚil¿p!n-4S7z
-mCaG`4c@l.EmIv5-]J 2L;F[f!
-g?(;Z/ A5RDHnFyqzqՈAgW`%}Sctt)m&
-ݽnBW
- ō)!8Fk |2|qvA 5j.4B2K_KY:T=-i&-:D 8^6ͻwB
-ny+` RB]"Oԛk"ְZ%)2V?H;KeiA'E:`e=T-KIZر&Ch4EugaF?$*:
-JD
-B6O x&7guH5pwJa. l.fu@oL ;P0~fbaquG|P`AiibqmgQm'w:kJ~J@c쬻՜:pW:Քtp쮶tU9tp6t<^`΁Ȓ/g
-p~8/
-{ |E9W.zeO)BTJGL[`NxCTxKXX\6)T}5Pb
-+v0>i2:\1 fIj e+JE6dnFJP:rzWcB 9L7/B>dTfhossPQ3X޴l@m bԀ]j2:sˡe*+\y_l _ L{PHylR™gr-+˻A** 1S0t-A`X$73jOMsXZGR5Cl{i'RLX JR
-GA?.%Y^BQ W>B  ㉛*p85sWd3{D,WwvKfeŀ-{\٫nEn M?Iwz[w ]!̢0{Oͩ]1% ݏo#P|Kcx6w}FLڀ`]`۽dIk`$M爨|?c rMV:YVB$n,d'a<bQNo Gуb ~O$-
-z.ADb5cTg\5F^71 tˬ8AiN@{eęܗr*Q+yQzm3TB K
-jūՃZ-:u<-;j ypj 2J'xm$^uИY7^HmWaݷILG$OoZL*ţ Fl*Nv(B,8 r+w'xi"M4;W<^Czbk"~lXm>*Iו)<3_o5-+{S$L=wSqPDTr
-W8~9
-kgz)9ۡ>2oh&79WX{.e~ aNqD
-O
-ʩwSC^
-qX8 -TryK"@_&j^ʘ"X㥓As=djlW5QU)y!W 67$цoaқE>=Ud6bÖNȿ|p[F: Q96ۖ2m̗%h(}j9){nTMa>jLu3jUsNiʮhn"
-bݑʲ?z`a`hsIr"
+469 0 obj
+<< /Filter /FlateDecode /Length 5083 >>
+stream
+x=ˎ$<ڇ~
+m|yfvs0BӖgM*,LHpTs'G<)h)M2\fgGjKS;z&ԝXY)oEoEJsg cwLۦSEUwв fQ>q.ƭԑl]g6fXSٰ#+ >]18 xÍF^r6 kqˌ1#yD%=TɃJ^=OTk9ohfvMWT(ڽ5u| ­ϚtD;zc/MާhƳ_we W?ų̆²
+Uv2.q,̩ _uώʀ_[\.yއ%_T*ʰn|{p?"0x__/fI{{y׌|SDS
+24la@@_3 Pm"9: >(X72
+R,4jH`Nk
+\1B
+hhbK)#^)DN,0gL[b!JQ9> >(e=T@d"R3֌RbtӊM ȽB)LX4g2~{WaA8J@P a 8
+gZ K&e5nV7QbJ$6/`цbF]ҡw2< mFL):pFO-:ĶA7692Ը!]4]$uV}NtƚŁ˹fpw.mhaW@+ M &o[spi^X٣ק=v?C|2-ƭ|Zl<eJi
+k3hRN,6/GL\"] 2jZ25qsa=ia1%&<PGs5kHGVv~FC\lᬂi>JFQ!Ȓ)02EW)4SdcZWuS VۻD>z@>~'vJ5oE>:#zHG_`|o{wy[ƄEgF<􌷭ʱnLѪTiE6ؾVpo˂x+[F9Pz/zZ^ʼnv@EvL*veQVV˹%"8R% u5u뚎eqtcOp0 (m҄ [a(Nڑ-9gA6}WQ\5|ձr|_u`F]hEwƮPkr%=r":ΕjE[~jr|D„ĺ>4RN:
+3^&]ZtkEیadW6ʷ"NY}4zRlYYq~k!rUn=-
+ӱ$i1$?9!yϣ
+PS# ?G&
+?"#з&?ozz4v$/cY1 x>E=! M$Z~Z
+}.VMjYu>0[ujY( 'dS C|4NbNietR7\|=}>?N
+=
+xNN^~ iG'Gwc"ÉLzs$upk:89A+K^F7+n 6hH|4fϜ#`T #VX:;_"l.&k&=,d9ٓ52Aɪ~H߿t%* T?ߺ1hZ K,H{黈|<!I,i'JYfzK ^QIxü$9S$ixȎ4Vtӛ-Ll%"\`dM~Ƿ1?M-͞_Lf]P_.=;۟}w/o]8p^.(}\<oxkJY &h$W Dқ
+TLP6@e=۞eDu|vR"Nk,'v>WH6)7",Y5ПCz`Ř0V
+oC
+\/w3
+טwjZS/
+
+yh{BYi)> )௛
+Gͻ҅$O9Oҽi"toU/x@[coC U6<}SiǦ SzRMn^
+/>ʫ]lh*i Ϻr34^94</E 6vP˛Y'=Lu1SWA?v2̜
+83hPU9;
+KÈNj;Q,31ދ`)Є^| gL
+4Ur"1_+mnD˨dݐ8sPm߽H(vB,\CK5Vׂk0+[Ѷgkhf siwz*"b I^Y{bmﬔITɨWt5c>–ڀ`<Z̡{|4VnU:ٸUi eMO,F3/;?tz2 %[O<Yv:5
+^Di۹Y4{X_ 韟&]wk%Ö"=3OqZ]c^Z~ <sN~l݃=2h%c翥n52\0ms tF;z 'N6~̛rOʍwLb9AcvÍ
endstream
endobj
-466 0 obj
-<< /Type /Page /Contents 467 0 R /Resources 465 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 390 0 R >>
-endobj
468 0 obj
-<< /D [ 466 0 R /XYZ 78.37 808.885 null ] >>
+<< /Type /Page /Contents 469 0 R /Resources 467 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 394 0 R /Annots 471 0 R >>
endobj
-57 0 obj
-<< /D [ 466 0 R /XYZ 79.37 638.682 null ] >>
+471 0 obj
+[ 464 0 R 465 0 R 466 0 R ]
endobj
-61 0 obj
-<< /D [ 466 0 R /XYZ 79.37 355.305 null ] >>
+464 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 506.052 333.048 513.026 345.003 ]/A << /S /GoTo /D (section.4) >> >>
endobj
465 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 380 0 R /F23 375 0 R /F20 378 0 R /F15 377 0 R /F55 379 0 R /F67 385 0 R /F74 469 0 R /F69 398 0 R >> /ProcSet [ /PDF /Text ] >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 400.205 321.093 412.16 333.048 ]/A << /S /GoTo /D (subsubsection.5.3.3) >> >>
endobj
-477 0 obj
-<< /Filter /FlateDecode /Length 4704 >>
-stream
-xˎ$>_QG0D"3nނ$c8~7Rz (K|ćO.$ _b=vF0nKǹ?OxJVbKVYZO_7(G=_`5aQ)>wVUᛠ]4 6uJaoi`oѿ x 5aL 7%]=[)J<KO%dHj`縺G0@؍aCޜd2$1e|yS;Xɵ6Z[
- V) (
-dh i<f:2ma) C[ſ7o8Tw5b~V37LA
-V:zؙDM[$9@^voP+Ul_$aZv۞X` LP{鋱HN@ <ʰ!i(3ť
-Հi)mҕu}ԭcJU) q֨ul<'PޔWi8VF"OʫjՖ`S.SfW
-)a
-Dn-O٢}OK
-87q!}V@)"߉l(lGHf
-vQqq)%̙h+\4_sV3
-{Dd/$+;_knEw'vf7m]r.
-) )2\-Y8Oܭ0ݮs6ѮDR%@wmD7Vq& xfӛ-3b38"8cJ>̘*1nPcxwz۴5a!~9'PK1ȄO6 D>1qUVڀNSXH
-@3e!]1"#G
-tI6+Lũ:|?£N5J Tl8>-t> Ҍ>Ƭ^-wn f!Um*~AYmGdk#ufm3AZh7͒|FUM=y߹>VU{bc$\QJ%c֑AI)lirʜC52I&LޝNw3dK+51&8J"LʞzbPILO7$HגIu8)mP#qIb^ƔC֐4`HҤ׽J~߬zl&Sk#FH܊r$eX#znp/za|"~kPJljkR5Odq|GbWobW;
-Tz6丧8I:SuNԳQ*׾mI@V6.%l_ӷqL;8jbE?|hGk䁋!u2jߒ 2a@K?v>@0_rvr=*i-ɄAK @iI˽o~!d:g3D
-.ôtqX8I2*V~pǨ`?Cw
-Cvpꩇp_ըEcZ{
-=U7N8)mӌ#÷N3\>|4t9"<KSޜpn?='qv핽p⠆CED7=qV;m\m[OSlJ߮6hkDI #>TR +W2Q걺r\U&ܰ #e(XuF0r$D!]Fܝ5W~WR"Z=,j1
-"M%Y6XP
-=ś2:fKNjҺYihѮe&<u}~ 9'F&=P5kL u=dU8h@5S/ឩ_~L~NC|C:_PcA~HoK=1FAU6^ޔ9u ?܏# [ uDWʾ9uB&|P/)s ݅={s}'sO\g\ܼp-% a%)̣-~B{ɩEO֛ź[$8lYI4C3?zZMyes&}߿I 8fJ蝜on˴ӯ-O/@@*#r<%(z9!x瀠T{:0dNn耒Ю0*dzuh\TK0Dg@PQ>=E!2%Ǜa5I-okMiir[ 3j?vu
-=#K.tԒ0VRQ"zQȡZSy$q-*8_ Ոqe<C5X\%`gA=RgsSڢ)n Z;xh1HN<
-mw#~%[ْI/FqX#G]+"Wr[Ϸ-oʯtLrQqnռXKlv9?G􇢨U"'.i`?DVj4!
-WMVXr:Z|#=u-uX8@l Yn͒}A߿ݵH /9P|6h7vװʐmo{fQ;.^FN
-endstream
+466 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 386.259 309.138 398.215 321.093 ]/A << /S /GoTo /D (section.9) >> >>
endobj
-476 0 obj
-<< /Type /Page /Contents 477 0 R /Resources 475 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 480 0 R /Annots 481 0 R >>
+470 0 obj
+<< /D [ 468 0 R /XYZ 78.37 808.885 null ] >>
endobj
-481 0 obj
-[ 470 0 R 471 0 R 472 0 R 473 0 R 474 0 R ]
+49 0 obj
+<< /D [ 468 0 R /XYZ 79.37 598.057 null ] >>
endobj
-470 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 410.79 627.315 417.764 639.556 ]/A << /S /GoTo /D (section.4) >> >>
+53 0 obj
+<< /D [ 468 0 R /XYZ 79.37 499.17 null ] >>
endobj
-471 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 212.75 601.687 224.705 612.636 ]/A << /S /GoTo /D (section.10) >> >>
+57 0 obj
+<< /D [ 468 0 R /XYZ 79.37 474.383 null ] >>
endobj
-472 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 420.112 586.296 432.068 597.245 ]/A << /S /GoTo /D (subsubsection.5.3.3) >> >>
+61 0 obj
+<< /D [ 468 0 R /XYZ 79.37 129.534 null ] >>
endobj
-473 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 307.126 570.787 319.081 581.855 ]/A << /S /GoTo /D (section.9) >> >>
+467 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F56 384 0 R /F68 402 0 R /F55 383 0 R /F66 389 0 R /F19 379 0 R /F16 382 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-474 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 492.082 519.65 504.037 531.822 ]/A << /S /GoTo /D (subsubsection.5.3.5) >> >>
+476 0 obj
+<< /Filter /FlateDecode /Length 4372 >>
+stream
+x<ˎ]H u}] dVF LtPy]=rΑ(K$u7~內/zӠ/^Ǥ-_?qg\?~
+ s.@~9 9#$v *= {xd- wa# <NaĦ1.P\p~q zy EhW
+90B  XVLd>>23 AR1u^*)a=NL o[_`{ܿvn:RSf{$L9S^_6!Q!9sL1Hqϼc*Fu2D:QꟃYqY8ƅDF,(8y_^ DCϵpv7M+j‹_kxjҾEuGYIHqT>"L2Ӡj%< dBug93iHfߪ0
+朼mKcъL2.]eWAzkZoꌐ\#ɘYc%V$Iϱ(F0KE6޷OU˗mbYzYX"?d wbxbpru/z#Әa.F'<T>e R5N+ULޮT V0qx߿C%+gvC P<[<aP$doϘGvqQ+KS|G6'2
+(RE? bU㟼+.ٳarqZ1y\H4a%C a&_9h;%OX2u#f#*fn8rmd@ o7-&6Hgo/|5>^c=g*-'hQpc0;_ş!E6ԩ)y%4 85dr?6b2'y,gy<
+ɉR
+&>IHb5F%S`JŻN+k ( ,z=0Vuj&piT 2FjMi9pJÇJ_rlހXKb=e/}ZS-"\u'%&pe34y2-ߒr2W$1>=<v|wrfyWW?;՝f \Uu[vv|żvrHe͖:
+jG&# :')5^*b]+,%`JӻFD8/c-u0Aِ޷';@+:HHɽYP{WGWZy*f=u2TXA1"lNSڮ!\ݕ/_8yAg:34m84v SqhahšmAznX}U@7qt٧<ɔ.v8đMf=Hxm'|U]kȽvXPWyGuoFiTbSk74|9ǛȌ9񓌝L92e'xOQ`9'5L7 W=?>Ksֶ=0 ߴ!>9yVG$7:Vн$,ѬS@zS;|5,s?;DCݴ"s-)2`%iȚIVaws~Kc 1rFAE8ɔr0O$|(R[3dY
+7G(ЁD8l]_/;ƖMS
+RuIc#1ٜroUԳg<dr
+NJ>0M^ {f4upo0Dk^%zZ*T00?ii箶;bC*fڪgu0iIn=7zܞ ?B3aݓP[in=7CMYiH:PT}Z4)?^"aô8|
+k
+춻~{@o xVocYw@4sfų:}<͙4|F~b{
++aO$%1qohUPl%_?gI{rGH[&5[+Nu˼ڔ{ho{|ztr}ёZ=f
+`li'OA24я*?Ym.3$3w@-t
+(@ϢW?F:
+|Oi!ܪw2V.7 [ھ
+mlx_a*]|+]ـ|Yn.>̖n:+?lP3OP{\BJ{V@4
+ƕOq{`]3;Rt:Yٲ.m W{WiliX?`m.kR|l0ګv"4oN{S/;3<S7LAg1cpǸC@30~8Wgy3h/bYiMd|MRlӥw}
+Y /#wK 4ORiqΡIkݷm8cFTSm_) L Qj!;6d߹(b^IKOOtmʀ|=)W%|Э n{¡o57̕LL o"DcRRvW<8>.=Ή;Q
+6޸)CIQ-xk^!#9H1'\wa#W6krx>t3WhZ3ۜۯz"J_wdf/5:*
+endstream
endobj
-478 0 obj
-<< /D [ 476 0 R /XYZ 78.37 808.885 null ] >>
+475 0 obj
+<< /Type /Page /Contents 476 0 R /Resources 474 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 479 0 R /Annots 480 0 R >>
+endobj
+480 0 obj
+[ 472 0 R ]
+endobj
+472 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 410.788 109.87 417.762 122.041 ]/A << /S /GoTo /D (section.4) >> >>
+endobj
+477 0 obj
+<< /D [ 475 0 R /XYZ 78.37 808.885 null ] >>
endobj
65 0 obj
-<< /D [ 476 0 R /XYZ 79.37 771.024 null ] >>
+<< /D [ 475 0 R /XYZ 79.37 546.329 null ] >>
endobj
69 0 obj
-<< /D [ 476 0 R /XYZ 79.37 385.476 null ] >>
+<< /D [ 475 0 R /XYZ 79.37 254.904 null ] >>
endobj
-475 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F69 398 0 R /F15 377 0 R /F55 379 0 R /F56 380 0 R /F67 385 0 R /F58 382 0 R /F65 383 0 R /F29 371 0 R /F20 378 0 R /F40 387 0 R /F59 389 0 R /F46 388 0 R /F72 434 0 R /F33 479 0 R >> /ProcSet [ /PDF /Text ] >>
+474 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F56 384 0 R /F55 383 0 R /F74 478 0 R /F68 402 0 R /F66 389 0 R /F58 386 0 R /F48 391 0 R /F59 393 0 R /F50 392 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-490 0 obj
-<< /Filter /FlateDecode /Length 6159 >>
-stream
-x=˒不<zIΩ=7_ MRRʬv՝
-4%\Kx<3
-"TFrHzdo[xB4dtbH%Sڄ?viQ~k}&;d%L]D2%2 Csm{u`$~7T>D¿SFh6Mӷ}SU0x57%`N2 o/
-
-'h/+5b,8MRsӵ0Le/ڽ\S{9ט㿃~j'3rswg錏ܼ 02}
-7nhG܂n-Kgv-mV*ou ~>NF-d hS z]
-*
-puŠu&Q kd&oEQkG㼧Lu/h?H<߽xt>aCw"(8L8}42.diyn{Y
-F$9ރ`k5oL1,,j0 sdd'8F2<O1 3.]I׵T Wn~sR|&qb!yl<2"}cjCTSkf *ZF#qXѓtYluI\KN)i;1+,=sT?o6+]I
-|A(s*5M597>W:KɇH7Gƶ^2`Rkc2qidWwtQw^d+b[u{MHq^\`/ה ɃlQI.(G/rhqq\ swҴ<#O:1oɅ!1e"SK>n7IUru/ۺ%ku*^:Wh.@,F@I6NMX_s1VֹҒ(7b*u:Cڑs rla {pCűIxhֲ;v`O( Xya0J<* M}<)Ican?}MKMR60#-CYrX(2Mne3fVv+bRhUHT?Q º9)%VJcǺ蔧pgVL݀VhuCPTꈶ8\PBUuQq|!$-qr~23J,;8wQDr֕%Љ䆚'i=|bćZʡ
-*A*" w+Q&) @G/nA}Ou!ȃ6* uԈZI_l V`:C ^ 4W9Nߚ[@nq-/@ׅbo*LD=~爊 nO*basڧ wL"nuVb%&e䗶aqMuxta텱 o.06%oaTC
-Zc26@~Dc0hb1<֭Ġh<d` QzSQ7lu=)p-6 n3rC-Vfvi?~Vw?g1Kє&+` *+%g20HʑD![ZTTQtyY.1?&<Iy,ܸΩߕߣ] g.]JN'- woɉRl!.,Ҏcꪦ0؛N{sZ://6Sf`r0`;5q)X0\o骚`4uG* j-+o'RJ󓼁WW %4Jް&JW#LLPvFVmxBM. Lq 2J3%Ifw /Xw%dOk}xg2%/!&EO*;81QI^-`_4F)KM8II<rBռlff]khz:1cBPTw zűL( xYs$M 72c,Lsmqu4~nJ9{PJ|Zvru,n垭{|}3VeݻWegQ2]{i`G,'Kh g2Hz NyvqK!MIΛ6*nm&M0IW5fZʒvI9aܬ&Lllj o(Ueᾞ1ZFQ.$MK䧣^I:B[8Bb&Z3 ?T67 ab&1B[mQÍH j|-{F{g*0S.` Pė\J'-y^ށHT>ÛxcGͺ͸pxPUH* G 2Ih
-oJizC[6̣0xMoIJ|Dpӏ˽jA!&fr%*J[Rȇ
-9F7o%Qjβ(YG͝֌?_a ]99fakH8L(۲xїٶNa^z*I.Gh@^]›כ:'`Q`ps&RMb ^t!Gf4:DGa=h%f/ԥ| ^3\XۥMű]Y
-,zVo07i
-2 tlCaU|䊬L6h'~jx$ҤB^i@/*?ײrw1pۯP}ටSf ۥ%h-dȜfY'\/Iv,N.yUk)}
-BVgYb1Jڐ
- i9}iga(u#"'oڼڪsl c]f+T$YxOз! <L"0ViDytO)<dѴ :xltOANYJW
-\cڝ>gX:lEyKW?Aҡitmd ״ :2EN¢j~.Dyt;×?BO1 woUz<a kI 6~DeO7#<ciR |Z=S ;9$2-ṝМ OANhNɧLˠCxn'4'Se!uB_ pV~ Ey'T?A)2 itd|ʴ :vBs2H>eZs;9$2-WBag-p[9$:-- AA]7@383 ]u9+Gn`e`g /˧8mZ===)fV,δ[Pո#V-A  H©Ԕw2RY,B#p8_UÛސΗ)bLL;3 CQb!8g;w0'pݛQ)hGssİ{<9%`f$uD͘-;&_ZtG^FZ/W>N;aLb]?xڦ2zWe[D7C[eVCLzY\ÏFCV\S(]?0!
-VÍǶ')Yfƃ'U[-{Lњpm- #)\ ]Hm5V2Lls۶=V:4M%y$SRi*|Z1Eȶ6%$Wb=W%n5cXٖfȄf/5[HX\kfӔgBlΟ lmW(⯔e};8ǭ% ӗt-[>nQP?zU}2Y/y߹JAI_MT vq:.~2lj5R־OWv}rP)FXo9*#}evCFd)qEiX':#3|$B~K W)X߿3' B]u|3ҡ>Ty`awe8CFԇLj2,3,983뾵^E]C+\,=E%/fU[[Nʁ&~>JވИPN0,_hD,fGV}pTW+i*R38NםrXT@t_`>7z3غaüc]
-5j4mN8]4PꡮGU rfN*9 Ry2Q\I.s Y"}+4]^f
-
-*Z9ZԮ j]M0jt#͸_|j #&e1}&GY ^axRֈ6eUrO75kR3QI ^I`#hM@j/p*GL@(ofy+Ơc%o E_5<]Vr]
+486 0 obj
+<< /Filter /FlateDecode /Length 5330 >>
+stream
+x=ɮ$7<ڇ KӀTuk=\f!K)"]ω9%"(J(R(]za?\]4hy? p'Pb4_.8OA=q:h703*wEZjkH髒*ho/`>{*MQ)=au;=UַkR
+jro͕S)}ZQd%ax-†=ؗLo߉^;L?poAi
+R%
+fn0Q7<=#g:$LͅimL&j4\l5fsF F
+\~h2ϓVʀgyaslQDK/(Rгf*Fl~ZRzw358N&:},u>Z@TXú+kx=z[OĿD<]\Q9ݪmu Z6nÆ֨a.*%'#X^ψksQ^@pԤ/~ ܏-]>çK.rAu9Z&u_
+??LK(`/W4qlxx΢ʴ
+,HqJR 'eCz\fg3gQY^n@<Ag%pu۹ pc,Hӱ+p+,8=,;rOn
+X'-R
+rKbk)xUw s,xM%swmr`ڽlbp!rE|^qqp{󯑴q^[ Wض-!<+|!5 ` ,&C@XMz|' ř2Bqd=3Y鍥'MмӦZ/pT8J7[rV'|M+d"<
+oa}tq'a1zmV (ԛ:`m8J<b#qf_6Oɑ *NIjoDmٮl94pDU[ּW2˵k}~SpK?mϏ7r\}6q==HPK{=8-M|Q<j~ ΣLgd7_81I_I1=?*5% M߰o& a<DB'Vh !03[m{OОU5`}'\=@0Jnȇ5;৤pMA#xCX 8I0~Gu/W+QtCZ%>F|f2n\#xC^%+-=Wf>Q3Lffd9jw3Sp`ffd8j*Ocfƨ&~̜pòߘ
+Wk43 zŤSS ̼ 43G]3NAtC9GA#xC9.X9i HoR@~((8Fg509ڍfQ;J)&>Iw$R
+ck.aaX40K:DEa?:-E;BNf gpDzEqpDz ܡ1jMCV^C1|ሳƝ_>;8w~6pg_..C$*ki6›>FKnJk{DOHSm1wK9iowV>EW:@Y3LLKMOl&ͱ5< +v3hFY&.:~Q
+ur̎4U6\-*6uTcP0@?WeF1{:,ڬ)10hgģ'R 3rN
+
+nӳf} +@Jb+C!Y =& ,hf& qdn8hWiJ%J
+ u&Ϗa kdF_< qϸ総!c_2"oCVy~0;c
+w~f*wD>(ps8([W[ʥB,-1R/z()][$`-婾m<m g<} ۰̧e0)UX
+g0؜ P&p!gvGEmgIZH@SS)%r\
+$63v͜%Zkce?]K^M4ˡ)ı$.p % 0筕BMfpQXR:W]e1*m+wb8)jOF޸[NSs[S_"WɖӥS͵Z*Y%Jq
+f].ޕc&̮=r.$ֶWkIht:^s"ar :odʨé[^CVkV\`uf9T)Q&[]=R{}<n8;1yhIhjr ;/բ8%_"ʱK_1jVgQ#3ts<mW 'f)LT6μukQ+LD`15Ke%e}b.\U%D#g/`P%6oF]sl敬PCj7ͱ[qoe+Ö{WJ:
+af2|Kbq$QO ;2.h:u=1|P r[E
+VHw)YW \󮒐vn.7oXI/%gW6B9ݦ(ѮKLR
endstream
endobj
+485 0 obj
+<< /Type /Page /Contents 486 0 R /Resources 484 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 479 0 R /Annots 489 0 R >>
+endobj
489 0 obj
-<< /Type /Page /Contents 490 0 R /Resources 488 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 480 0 R /Annots 492 0 R >>
+[ 473 0 R 481 0 R 482 0 R 483 0 R ]
endobj
-492 0 obj
-[ 482 0 R 483 0 R 484 0 R 485 0 R 486 0 R 487 0 R ]
+473 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 212.75 746.177 224.705 757.126 ]/A << /S /GoTo /D (section.10) >> >>
+endobj
+481 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 420.112 730.786 432.068 741.735 ]/A << /S /GoTo /D (subsubsection.5.3.3) >> >>
endobj
482 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 368.217 472.929 387.923 483.878 ]/A << /S /GoTo /D (subsection.14.1) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 307.126 715.277 319.081 726.345 ]/A << /S /GoTo /D (section.9) >> >>
endobj
483 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 403.644 472.929 415.599 483.878 ]/A << /S /GoTo /D (subsection.14.1) >> >>
-endobj
-484 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 266.008 431.086 277.963 441.925 ]/A << /S /GoTo /D (subsection.18.2) >> >>
-endobj
-485 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 273.956 89.437 284.413 100.894 ]/A << /S /GoTo /D (subsection.17.2) >> >>
-endobj
-486 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 497.51 81.266 514.551 91.43 ]/A << /S /GoTo /D (subsection.14.1) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 492.084 664.14 504.039 676.395 ]/A << /S /GoTo /D (subsubsection.5.3.5) >> >>
endobj
487 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 88.249 70.508 98.706 81.965 ]/A << /S /GoTo /D (subsection.14.1) >> >>
-endobj
-491 0 obj
-<< /D [ 489 0 R /XYZ 78.37 808.885 null ] >>
+<< /D [ 485 0 R /XYZ 78.37 808.885 null ] >>
endobj
73 0 obj
-<< /D [ 489 0 R /XYZ 79.37 682.847 null ] >>
+<< /D [ 485 0 R /XYZ 79.37 529.966 null ] >>
endobj
77 0 obj
-<< /D [ 489 0 R /XYZ 79.37 412.149 null ] >>
+<< /D [ 485 0 R /XYZ 79.37 241.685 null ] >>
endobj
-488 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 380 0 R /F23 375 0 R /F20 378 0 R /F67 385 0 R /F15 377 0 R /F16 363 0 R /F55 379 0 R /F57 381 0 R /F58 382 0 R /F26 400 0 R /F40 387 0 R /F59 389 0 R >> /ProcSet [ /PDF /Text ] >>
+484 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F56 384 0 R /F55 383 0 R /F64 387 0 R /F58 386 0 R /F66 389 0 R /F25 375 0 R /F16 382 0 R /F19 379 0 R /F48 391 0 R /F59 393 0 R /F71 438 0 R /F41 488 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-497 0 obj
-<< /Filter /FlateDecode /Length 5297 >>
-stream
-x]K丑ׯq4@k
-`jgU=7 $NYsa-ػ
-3G,;Dq :xcq4AOAYPwu:ΉsrkW|-QKlhEq+0H>4AL7A"a :G' c+ F^[^Vyc<QH|.'}rqJ0^xC2o}z c)<3AǠSxg $>AprΡ }S?3@N߈?34 #)<3AL1{ M&t
-= a'Q z7}N>՚(Ƹ7ʎro1;Dt
-ͽc$*ƠS8xY+NGqċG|G
-Kx*I3)#Is|7ҢnQ/%px [ "N -WlRfwWQ-z|uhU
-|XR<0q IV?/zbju1nEm4(!&z+m!Wz¿;d;ފng[DC-kvv( 8f9f2,Ш@_֚c,Z302UG 17)
-_)&<z'5=QܵKq^`3VII\V5~q뚏/crg {2VƁgTL7^w9ӯpg_;ө/z^/gҥl(hs8*QD%)>"xbK|4n?MY%
-Ї`'!PX;@l5?O7L<.H| $a?(  C7D7
-'dh0Fݢ_Q˖ Eݣü71+
-@ Ν
-yIv'O. )0g>{v$B'kFW!,
-,0WKaOa+l©F6L@Z ]IQT~CQU$rs@/J
-0MR 47pW=M|^{3UL劇Rvέ>k뎔%x%ME0 :. 'ͬfK+xN`n`]TG2D|sUt,8{sf8WϩY(zmq?vB-)2fVsPkkj%
-z,Ű.m9u(s,B5k"#P#kjnP9ݗRGJב?v̋xo+w$Q| /|~_.<\X^D UHכT֤HHt5V3
-WL`'xE47^v_|OI<I'~X_Z^
-
-wkè@x>{x3^3F~_|f纡,p gf OkCO"nLF\J _IRf=J]?`5QFh0;_ݻ5@JgaߜsKV+,+{+]؞G6>!y1FV/gF,,U:܁E .o{+{9r"5S$" UYoF #Q|rDn7[ݿ")WĮQnyuJ)#p?}
-OJYCJKQ\I
-YneJۦ|.&r"fk̴2m#Tt9ͦk
-@fTa1t p38_0]>i;,/'d8
-e4UB鿿M>}n
-
- |~a: •*RY !vQ@*Q9(4%f/-msŻ_Ӝ$$Il깗k[eV3ڦtc U݃:KCK?[ND݇ 2$98^\
-._JRSWA~i6?عߥ[F@J)!ØjRg 7:gPi2i'dwn9QNc' [ZA,2Lc~*61h(…>ͻx# kҏw *r0ͺ*+S/}!tͼ/2oa~y^c^fF7Զf^7c\2sy'^x̻d]kwyך޵+piwy/n>ʻVhFֶٰ+v^"'8ܰj̗n*ߥ
+498 0 obj
+<< /Filter /FlateDecode /Length 6100 >>
+stream
+x]KWq}(@RO =wZƗgYɬj*+"H~ F ~⧯ƿO$c2sqOP}=ENyDX0tLY3>mވτ*w~SԷ,4Y (/œVZ}J_ ?r΍%J~jI~d֛mC;&<B2nr${\{PtUtI=:IKx\L#3FO0 O&ŗ7꒠R2}G+H B{hHl`f*P5^./[BjYr1#
+unP6/cYύ۪ ô7Ϲ񎲹a1pTq2adyޤSʫS{=ǯX
+~JoY7T%Rҁ
+sdn]Mw1?s{Tk`>ZZ!&-K_jT#_řB63ћBaz#
+vB,Z
+:q]kL9D,LVcS1ZNyR*@^m69)WXlKLFs 8(ƭF}FlVv
+wur$D%CKliA RyEy١ Rw:зԇѻijCe/,b:_(;elm>=|:*EX6 8JjB%+[pZX猯uU
+I1hKel,]Yx :%Wnp uk7OkZays)3E nQFO$f#4^0 >PLp@We,4!E#/E
+'ZwrC!H 忠.Z^r8bZ8;y1>mȢJ5پP)
+j+&s,iW @kyVw<0|^ὺ5no'US0;m07aOrIP'A0!tΟ}rgn<WܟaJ37a 3 Z6n<ȗA1ǘ记MG(Xylۄ7-^3x~7,/m'_5Y*1L*p~>%?hvJ܃@
+&[Kw }K 'E$ o@D(P3
+`ƺݎ^ u578F~C-r9Hq4.7GMx!>Q0a\x&/ .!*Lc1:0(hƁg<oMU, ݬeykgN҉tUf-]tM[9 Mc00<ài w hX W>i5y,=X`{iP>2<0Ui FĠ:9 O``xn'4A) 0(>eṝŧLc000)Y'PNh
+Sf1 aP|4s;9 O``xn'4A) 0(>eV'腯aY -pxbP1aP 4Ó.g@;PONĿOį,;$f
+Kf1|u>z4O|Hds;_2gK1aP|4s;) /`dxqmo[L;k{'s/tmŔNc00ܸ:?cqY*fS
+z&߈g5P#?˧Bf<^Ï {<V`"|)  =A<6l>ucu?ˇ'l3!^uS<f`<'OHmH# \Vc|Tq\ph&_=7oJPsΜSt Ϭ;f{݊9%YύwQ+>ȇQTsrŒ=ؑrYwCu[Y|ι[-Üy|y|i4qgcDaÔpLr Ҡ27N'%5dc-KoLvy)R׷ MKr7C..=Ep4Ӣ2d%lo cPӷ;yv)TcTw*|A]]M^5yw˅қz3AWc:OFZ˜6SIg@A)K?l^_kKh) kظ-9MF..IpgIblnΫQT/Վ&(G-lX$֦v{E7V[Ⱥz7.[\|[hǂn]&HmԩK ՙ\Zn2p,ekviT4,Opf};7=KaCKK%R+m+Sxz$w(p
+!^k@ea1E]f\82}0U_oh#Vͬ@[p9<Dž` ΰEcMYZdS+ٗ41^*ύ="f/W.қE3Uƶ`y.WnҺE*rnQ% CkL"/b˷gW*{.۵z]
endstream
endobj
-496 0 obj
-<< /Type /Page /Contents 497 0 R /Resources 495 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 480 0 R /Annots 499 0 R >>
+497 0 obj
+<< /Type /Page /Contents 498 0 R /Resources 496 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 479 0 R /Annots 500 0 R >>
endobj
-499 0 obj
-[ 493 0 R 494 0 R ]
+500 0 obj
+[ 490 0 R 491 0 R 492 0 R 493 0 R 494 0 R 495 0 R ]
+endobj
+490 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 368.217 679.377 387.923 690.326 ]/A << /S /GoTo /D (subsection.14.1) >> >>
+endobj
+491 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 403.644 679.377 415.599 690.326 ]/A << /S /GoTo /D (subsection.14.1) >> >>
+endobj
+492 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 266.008 637.534 277.963 648.373 ]/A << /S /GoTo /D (subsection.18.2) >> >>
endobj
493 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 312.415 421.78 324.37 433.736 ]/A << /S /GoTo /D (subsection.6.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 273.956 86.169 284.413 97.626 ]/A << /S /GoTo /D (subsection.17.2) >> >>
endobj
494 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 279.848 409.825 291.804 421.78 ]/A << /S /GoTo /D (subsection.12.4) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 497.51 77.998 514.551 88.162 ]/A << /S /GoTo /D (subsection.14.1) >> >>
endobj
-498 0 obj
-<< /D [ 496 0 R /XYZ 78.37 808.885 null ] >>
+495 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 88.249 67.24 98.706 78.697 ]/A << /S /GoTo /D (subsection.14.1) >> >>
endobj
-81 0 obj
-<< /D [ 496 0 R /XYZ 79.37 396.866 null ] >>
+499 0 obj
+<< /D [ 497 0 R /XYZ 78.37 808.885 null ] >>
endobj
-85 0 obj
-<< /D [ 496 0 R /XYZ 79.37 231.614 null ] >>
+81 0 obj
+<< /D [ 497 0 R /XYZ 79.37 618.598 null ] >>
endobj
-495 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 380 0 R /F15 377 0 R /F23 375 0 R /F67 385 0 R /F55 379 0 R /F65 383 0 R >> /ProcSet [ /PDF /Text ] >>
+496 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F28 367 0 R /F56 384 0 R /F55 383 0 R /F66 389 0 R /F57 385 0 R /F58 386 0 R /F16 382 0 R /F22 404 0 R /F48 391 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-502 0 obj
-<< /Filter /FlateDecode /Length 4332 >>
-stream
-x\K$ ϯsE`mi>9/ޔJU]co;zP$T/ _}ӟoB/yF-~~_"b`b`܈Յs^\͹Kx}V\b 2u-߹?}h3
-6ȇVN2}Ih]
-Mծ,Sm~)T^{)-J-%Hd:^Y+OC8-0`{kUa{yeMO|hoQ_S ǟvuF)Vji@ XXɒcs"+բ,-y+{if40 mE{4ܚy2\ q:4k]AE1v6&%g,?}~
-q\ P o_~~؏G~hqa܌ v=a<s~I栂`fNm\5ɸl~vKAjƵ:Z |jJUYSCpLZv(*l˘Yl 8f앆bXíXK7$
-G=S4;)=6j{M}w@
-z %MVJyAIh~ؖGл)G/)昤a5p'1P$ؗgDo'a5čcXu5"gcMRw'ލeU|XwmS BbhI{V+ JP-^ӼchF1[6YѴŮBO@NHz iұt] ETSC"Of>6AXRVUF:;-$cGڽC72j/Gp<'/L*CP󳨇}xYso/ō*Y7x:pI={*IԅP0F4+]ѨŹkp{1%=Fftfv}Vw_2uk4rHfRْVퟰaP
-R]҉Gm67_/_g 5F[+(1Q"޼-£*t䳱9t[:8ŗL>!NqڢyfÇ7׼ʑiſ ra7l_sHa0CA쿿o~p۞µG3U=I%՚]v%H|Teʋno`8-
- v82vYiZF0m`s~]?˜v>iSb)GmJz8̦
-_wMt0 `jN9w
-.]8wf୽:h/i7SG)
-(P
-]iRw=9݃)|-1
-<W RXP0gwA4 8HS~Tm8HiDŽ=G'A]jTlcRJ}Y:Ī
-9=Qs|euru_@ΰc.Ff)T?qc:+~/>NtLb
- Wj_ݨiʹ%W+u}n}?&3(ϴ͐fh Lb<
-' ]LCkOl؆6h&9.#o"qI5Z_>XLsuG9g?2BiOtO~_ LJ:} !g]`:md1>ݟvMpp!*su H<<Z]3ʒGU
-M"M\]=ٿ^eχܻ5+ܦԺZ<<h%/ITh?<|{ˬ_@\Zt,G#h鸺ͫv&z17
-Eo8HS tWcFo`D h#rֲwc*_TJnm%1ۣLtHh3nMmWl4Kl tpaJi rCwǁPL:3YrO -؋|"
-߹i(”"jgn>7~ۑ{Uҷѣ)x3)MuCa(
-_+rY3Vƹ4%P$U$Qwu5k#55i,ث٪./a0܎ !6\wp* :CFnBǏc01Jk;!ƴ {w
-RXI7 7 B~MP{+XkI/!\W0sg&_N<Fb͂Üf!<(X >y R 7#ٖL é{mEr2#]sݿ]ڙ^-Rjpr=K+}zpKLneI7Ĵ'ɑDE|,J۴Z^ߧx3UK~J]`RvԷ!_Ciկe2;G @mDįi˩6(tv^_Pnz8mX˙#'nڑ%;IQic^)3LSȁuԶ
-Kn63haG"S.OBd;A.
+505 0 obj
+<< /Filter /FlateDecode /Length 5320 >>
+stream
+x]K\WԲ€շYt{`
+z_yGHQ7i}n[jCc]Y&>!Ϯoc8s: Ħ}bm&]D]r۲T%r=+W2f9@QM02kTJÌ֔V܎Ōc{)jQZa}`-W!0}^1'Ue]qi/kZ*r&k/:t`gV\>Dj00/o>^j9 'rm/(Oߟ~$FIZ<'A*GAapj [J
+pt2< N@YK̺ocq1GNԅX= m'8~y ezWѧ
+yy/SV]۶iFS^~I(-MLc/uyFKR rF>}w$mMl
+V -zk[.xl*Z
+7'kz)C%s p
+81kv#P Ngm(@*x1MNvfŁ1۰l )?fzS-E628u3BlFHM x<njEa[l2^% >X) -C$**YZ74PrA^ @e dc,S B3m q
+3ߖp=pg`Ƒ1w&$ `X3'<3g ,tw*Xk 4J=݂B~[ӝ䏫rFs>
+T@ iPГ*k7}
+R>iY$_i!"21"9]l
+
+mf rq30kOl >u{9]98tnytz_#kBIdI vgCrRS=ԯ7w/lzVS=ԯaȵV@&RyWn֛;^"Bb I&6ϯ*!gI
+&mC:&P; P =L)=ԯ<TߘS@&yl)ls'؞E3y=sz0ܩ%jҺ+
+OfO!"MJ?>o"YM3<\?D sZr
+UIԧ֏Ō8Iˌ3's<E%Vl^Xfs7Tt͍}j]G8Qsx϶{F C]GJCV/8ї7cr m
+o^OydZ#*Q)Fs?uԺJH'*]\'͠3ͪ-"nPDJ UrxV8/܍dBNКsA^iY9|pi;%M!4.ᣙUQr\^7aܭ%v9R(id;VuBJ٭ud'eCWr]"T>\ˠ%,NW 虯b`by 3j#Y\gZ[.6c_}9ǚadA%ެ˗fX%i-˂ZzN[]jC$eۡ-\9J>ު-ydEl"x{M֞%h`RSWmRJ- 0 iҕ0}2ZYy雳$M4դD>.TUAKԻMR2'>I rKվ\)nKM]emZvK
+5!('e#5t=fh̺CA $+!L%Bw87Pב
+WP[iISӊ\(j" 67-eF?R?[^<IsIJ}{D|ְ~@.wzrzVZqvi
+Yyr821#E ћ!ǂ+AݑPVG'WBC-47*ZMGm{<iLv9ar{Ե~T<t
+`Xx5()~T:5] Xbߺ[-Y
+G{[gFI?'gY)H r[&T>.WM$)mɮwgRrgghHCnΗB`){/ ~G5KgXկ+>Unw y`tD)hS?Kc&OY;ӝ9&TOܺkY q:9ɐ7 OzzޭXMg׮ߕ_pER|w1Ӄn03f7<=[Ru?“r|''hIs{Ol9rjPcY-hiڬ% 2$ X/fu3݀u":[ɄQ 7 r~z[}zRL?i:|(0LZ0)W
+
+\FD4nWltNX̆"߷6‚94-O? 5
endstream
endobj
-501 0 obj
-<< /Type /Page /Contents 502 0 R /Resources 500 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 480 0 R >>
+504 0 obj
+<< /Type /Page /Contents 505 0 R /Resources 503 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 479 0 R /Annots 507 0 R >>
endobj
-503 0 obj
-<< /D [ 501 0 R /XYZ 78.37 808.885 null ] >>
+507 0 obj
+[ 501 0 R 502 0 R ]
endobj
-500 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 377 0 R /F56 380 0 R /F23 375 0 R /F58 382 0 R /F57 381 0 R /F55 379 0 R /F20 378 0 R /F66 384 0 R /F65 383 0 R /F40 387 0 R /F59 389 0 R >> /ProcSet [ /PDF /Text ] >>
+501 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 312.415 625.868 324.37 637.823 ]/A << /S /GoTo /D (subsection.6.2) >> >>
endobj
-507 0 obj
-<< /Filter /FlateDecode /Length 5896 >>
-stream
-x]K$ϯ}h0vZ6= MI k-H2dfVeԪ`0d0dIY_>Y~*돟򭙖}ɁRn%;chm~<
-Vkn]m`Z0Ǭ ݾ#;.d|*&zKϿ| r۴o釛
-&w{&vT2)?((m`
-hXuҾ;+LdBjW!y;skGicMe>‡L\,
-%%2jmGku~g>BЏ#ן{u[޸srVA_3*xXuzJ٣q<A ~&[x>ĄCd3 ''U{#RMV9 lVeJOt&hJ-Yd.bD{F3 qЊ7O-_!Cbuaҕf'jiVnQjImHk̕W<{d7:l*!R\Wɭml+
-gN2oyAubC"7pB}at.y:Zc
-ԓww/{NyIkKmNͳ7-`ݶ7gc՛}m@= "дƵ|h.4F֑Ҵ'đKPn2ǡiA^ꊞV4$Tj=@w=2LZz_?iGoX1Iq/ V(b {jmDA]5.HFE$ĩ}7('%Q+O:ⲬCЫ"Y
-@oz{~~EĴd{|5Z8Ϳ~`l9Mq䰏Z(z|Cyɚ#4cj?4$w*v3*%mp8@7p<ĥ5dȻ{3Uîw-B=_x
-~-
-_g
-j[&Fi}X@n"i˺kۮb_ pҞ}M}4;Q򅋮/
-Ki&܊Z-k;"X8gCS$tXc8LLr[a&:׉< ɩyS9($2:M9beGL:A;ĢҚE8I@B51&bWAFI$$d1+ W - d! ͵6
-t/τDTWXx'O]Q <"ږ#!a C LSD~1!+o*▙R7e9HB,D@B@dorT7mMv4opθx[Wyl'2Z`jz/lea>JM
-UŐѢb5ŨH3Do)\
-kҁDn 4H`0q–Gj+"F F1dUs#iŁA[,<Gr;-xAWCE71+FD T;H)CkLWc״_[ҢOpȬs
-࡝\\:!Ԅt+8^b'ۤV ѳ 3"e0b!KNہ"CQ,
-|g⥞K Ik ܢXU|(j1
-%R$B [b\Rjs6H0>S19wb~CN.r)au
-%ʵ,]0)xzAxpbvZ˃{W|s6q>% >?i׷@Gt' o|@5@_7Wa\GtvE=a6A=$|w^'7tWkBj*ܘ@NGHW= T :n ]/ټr$CB4bK Suc_b3,oxͻ
-endstream
+502 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 279.848 613.913 291.804 625.868 ]/A << /S /GoTo /D (subsection.12.4) >> >>
endobj
506 0 obj
-<< /Type /Page /Contents 507 0 R /Resources 505 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 480 0 R /Annots 509 0 R >>
+<< /D [ 504 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+85 0 obj
+<< /D [ 504 0 R /XYZ 79.37 601.029 null ] >>
+endobj
+89 0 obj
+<< /D [ 504 0 R /XYZ 79.37 436.2 null ] >>
+endobj
+503 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 384 0 R /F15 381 0 R /F19 379 0 R /F66 389 0 R /F55 383 0 R /F64 387 0 R /F58 386 0 R /F57 385 0 R /F48 391 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+510 0 obj
+<< /Filter /FlateDecode /Length 4149 >>
+stream
+x\I7̡ h <-)3!q2HTk;C("OD/,|/ z|I#gV,?-?<q!^mRKD05מsKzsutV6_qy?X"8SڟY~~WH{hjdjSWrntz^ٹ'-Jw~jjЪ3Ja >KU@)Ԟ[.nUְod~'r*|,3W+ c Zc%4oXuSt5:0mm5R o6UF U%\\?1D??su
+YFL%1"Bq݊2xr+꩝y% Ң:j!Qk"e/QV(
+*$u*0=Oo.?)pÔZHBZK1
+6@P RNOè-3Ɗ+72L괅/Fih+[.I-?5HP6Yq/YJYmN>B}lhï`_7,S0x;KjTk><)&uaV{hڶ12":[B!L+?5:r`͡,Y[Ҳȩ|<>rs+ <2ʔlJ-$!ܩ V֐6h1B|vn*ÙdmZ?{*C)&r;m(,TծE4 ްRj_ZaV0T|ŻIM j R8V_${N'Uy&kRu}>p@*CraLtaLt]6 p+AtkꅬtuϺdHRI<*E+]ԙk!S.wF 31YCU|@-N:I1|ʹth
+ҳF_Ys,R4801"c ~ő= :ܣ>vC1*x{ֺ(yblVJoX%RBB"c<~ .SEߖ!@ f,@%;lz̥3|ڔ|υ:R OTSl+/i&ݓBhDݫ'I  ǂ{/}WF:Lo#{OX{م+`F2wz|T}ey:keކH#WU˄* @YPOR $Y+z{NUU܁2T!$emcZ_`Ac";-L>l} 2moQіϊ eE#ǏW
+ܳ+U( ,Dek%!D5.6QNɪb +yRB9eC5HA^*e\uQK~T%ؽ:Ge X)Z:%
+9?Ĩu0
+ 2u]=FAb!F])T4&ZžvP 0-ӈ6Í8crT$N;*T׷
+Ƭﳴ ۥc)]u||;,m6Rĩ.e|NLJs[5%Y1S{4咠|w֊;qhQL-*iשWn3Ezz+Z)#S)${u]&LsƩO
+ (%ҤpH}`thVƹ9ᜆ0~D?hü 痜4^%9&΢
+^;z5F12 ݒPxȏ"%"DsaaAH&4n
+e
+ȼѲuB0aίh J~y48N ᰃuLwIc+oTU{ -OJPR靍m3 =xq0Jk焑{a4jS}+ys
+@,ԥ"loY
+'!n]>ƒ3fu4DŅ\<fO2Ų^t(`iCb\ڛG ʧJ>ac>i&cZEOlϖ (~P28JExl=33fY_:4PN{*x6,[ e5Tr [~ނl\|o.[O[ziy ątOp\/!!|x9@Pq~Lb5d6ϓv\yKvrʗJ
+Oe/,5Q@!;ڮI7LDo햀0V|ts҂w(W2ߧćt1Opn{ If'[6ljf`.j^+sa^%6zjW2=Ǵ5Q [)ڶPV
+OQq'kmYi:~t>v̓J5[Ϊj 0moJ U]΄VPCF}6Mrū>/.;tZ .[pSu~,zA]p۴k6쨪Xb;x{9ti)v9e*QU&L'knlR{pv0a}kfE HӯVD\uGɏB2Hfuiޅ?>)̗
+endstream
endobj
509 0 obj
-[ 504 0 R ]
+<< /Type /Page /Contents 510 0 R /Resources 508 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 479 0 R >>
endobj
-504 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 138.738 432.776 150.693 444.732 ]/A << /S /GoTo /D (section.10) >> >>
+511 0 obj
+<< /D [ 509 0 R /XYZ 78.37 808.885 null ] >>
endobj
508 0 obj
-<< /D [ 506 0 R /XYZ 78.37 808.885 null ] >>
-endobj
-505 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 380 0 R /F15 377 0 R /F57 381 0 R /F55 379 0 R /F58 382 0 R /F29 371 0 R /F20 378 0 R /F40 387 0 R /F59 389 0 R >> /ProcSet [ /PDF /Text ] >>
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F56 384 0 R /F16 382 0 R /F55 383 0 R /F57 385 0 R /F65 388 0 R /F64 387 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-513 0 obj
-<< /Filter /FlateDecode /Length 4840 >>
-stream
-x=ˎ$9n<z`}o=6`9zP"Ȫ3SAQ$E%fE^~~*\~tKko/
-xC0߿h HKI
-L׆b7&$2!ʤiu!pjV_u?4}Hnh)M+ 79SU2>g^:6]+t{T7ӖBE$]Y__(q']A|>^k@_<v@M^~ylЗ(O'i 6`0_\**>(dљ-7eJnܛ23`ib_+D  =
-}أ6O0{+<
-qIBUn)& 2$Q$y0cA`Pt4s8cq( `[[rDEpIBU6): 2i
-|PD`pCD#I C
-{׮7xӷve<n ~2ΩW+ [n|JLXU(~DrN մ[ezG|1o2k&pue+ۂ)BN?[nmb `
-wd dur_#y)gD'Ƽ#_NuE*OU?=zqO/ Z(sqK C
-~%fLHʻR;vZ&SAa
-9="ӭ#cY%@yxn5FI+DL">˝)mJwJqH:W)y5uT@%!9VUq<z;b/]%T.3b&h_wTu1XevC{i.wt#c穮QiO%S#WL5ĺ67|ލe:#̉za&읁6䤿皂!hRtҵ*LÉSIp9UU:rkv[plWVE8wuDqRޮ3$+Cg+W&i'GҀSl,DSrܧb5H66E픤[Y5[Uc8[r>0XNUxJ4XSgPz*8=Pu:dmV;׆sN0jrhd 7\*k%=)a?Wly
-׹^ua!YDz<l)`:~xqն UWqD]0E"[wš1VD 6}j$ eХ>đ w"fHt`n627|VqUw (]^y2>n7J\^~ST^EHE<ՒhH\fz*"(e6aZSI5@*zѩ#L[NNmXjsvs6Wb C x`uL`-vM@4 ']:܂8Sp73Zt^>"ByǑ%=~b<dg{73!aV 9[v̀<k[+}hЀ11f ij1}uȺ7 l'S]vٙ=]P`*T80H&+˴@n64A?Lͽ 6.]Ȗ&F]_y}I!YGrC~X~-bo
-ǹIf `qwFigOY/ٞO*Zb ];ZxH,.\w4¤Eי-2Ғ⯇-)ӬgW )'Ut`ahMrm(֣j5w "{}1JDi?3*Ἒ1=3-eߠ=uG߮sQn%M|#}á1;IR~bTN5o|E7<)-rwһnF k/!wWHe%^(37R/=z1
-{7FQͪ.syo)ȊZ{o!{:[ᎉvZ
-
-Rk8U2w˹4.i =Pm8ǥ
- ӑĄ1לNQ9,y׶}Eh}U^(>Mae!_y_^;M&_g$sS',+|'ޤK5rbI5]wZ$C/=%YTܓM UU&`}TZVL\7ZwvZH j_S֏px8ƻyo?v@Vs凞Í[pHwL"5O<`¸`(x9*8ϿJ?oC<K |6`F1ުggi44,%Kn*^WB}=k #Ѳ[eeD_хCߎ .@꣍ϸqɽ T7]tb&6o(F::psz8N,V%O|2o3i _7@(_p_Ζ/+V^ cpqa5g&1[#i6ԟߴ¬P>I)sYVy奙~h)/s[' egqO㮲•KUG;}OYRuArYX75G;A.Gp~]9/jrE CQ%#h<45
-c;H.ڃk?};NMZiS1R&&~ nj"^([*lK:ɣ"=ÍUS9mޭbyסNZxE,*lW*~
+515 0 obj
+<< /Filter /FlateDecode /Length 5974 >>
+stream
+x]K$7rϯs~
+u&QM).]yѮ\
+|K^d+G}fk<o.*H?wCn ;*{^+~mrPLf+l b.Ly{ߊ"y|~yyH;-{Y,=å}OOt\.2ͥyMe_
+6
+Fa8l6q:iO{RS*CӖS>̓qo#A >"d-<QqTiF]y#!8|t_!%sbGGh6Œ_IPVx 5ylջ{rp.F^мw:Lc=K /0 τ(7| X
+1L
+!T\nR~z݂uq N$ÖC89 ~O[/$ShòlG'.X^ş[y(%jc.W~ xR-ZW-}[M8(o܏&>1UG2-s|k;o. O9O)ڏV6m3H |h&lK/Yvߎ
+6,O!=(eu-SFfnVh<ag~װ:r!WpZvK?-PaVt
+u֍|+>+c?1O`c s4!KirRŸru '}mY 0>Йy+ԁ'Ջ):^ %Phh!8Ze0@[?QE¤ͣ%'sOl~(3uVfQjQ]kdCN5JJDayԯ:7'U,6ٵRfXnPP?r1r}yMW-ԗ`?K蒇c+jL!zcezO69hmЭy6 
+lr4rѾWH E[GJ~G.A|gJ?#WŠTR_F 5Rt#+%?ĸv^n
+CŢvVC ٠B̕Vvdń Ox6ë)3
+l.8!)Zn;?!ͥ<iTOOk m1ӯJyXi惯JORxy%0_r}-[X(\,<^6Wddm緷E'Z iR92-zwS ,ؘV٬͉W˒lՌZ1|(']P9Rc
+ـP4USDwTjTD"\!H)"'N A9ʑ|C)
+hi[4[n3%LD@B@"Ui R[ ]@hB:A s )Y7i%SD"Dp@`CjS<KC^A<W%wBraJÃ$Ṽ7KUj0UQ bT&RJo2#"w-ncpb$fM1ib|˓ZC{b
+ !w$$=3TIi wERÃ`$2 :9beGL:Ӂl8/Q{J
+
+5J"4p
+UŐѢb5ŨH3Do)\
+4̍8'Tr,ږ)nX*`ؚ@Z'n;Qd bnVPݱt/# x'n@XC reZ$܈5,jn;80hs XVPB=ҁD85@js*hD`IH92TƄp8vM (-J:0 :m]eM1xj{(ղ/UwO-bDX#Z53(21+kAXp0m01r6čc+Ƭ-DCBB-W8ŽiX$Z
+!A;tS%+0^b'뤖!ѳ 3"e0b!KNہ"CQ,
+Tw03[kVZ1耥E*ddlMAU"މb fd
+|gK I ܢ|#%$hn @D
+&`։N+ bnQPTu\ca֦eGtϦX$U҉M2@ SC Cp /Iz:W<Arcd1`Q! -1LO^)9G`ޓûqq4uV+|\Xz@ʲzz7<n7$6+.;ګv_k_'ڕ'A^o/ݸ߹
+^n{Av^=|IuEixb{sc"VE#> 7ڶFqW-!|>x2q/{~KzvQ
+kw"1Ħu[.;_#0\L\ea߳Y=9i'-*^tj. 6q >}~
endstream
endobj
+514 0 obj
+<< /Type /Page /Contents 515 0 R /Resources 513 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 479 0 R /Annots 517 0 R >>
+endobj
+517 0 obj
+[ 512 0 R ]
+endobj
512 0 obj
-<< /Type /Page /Contents 513 0 R /Resources 511 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 480 0 R >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 138.738 438.716 150.693 450.671 ]/A << /S /GoTo /D (section.10) >> >>
endobj
-514 0 obj
-<< /D [ 512 0 R /XYZ 78.37 808.885 null ] >>
+516 0 obj
+<< /D [ 514 0 R /XYZ 78.37 808.885 null ] >>
endobj
-89 0 obj
-<< /D [ 512 0 R /XYZ 79.37 675.694 null ] >>
+513 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 384 0 R /F15 381 0 R /F57 385 0 R /F55 383 0 R /F58 386 0 R /F25 375 0 R /F16 382 0 R /F48 391 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+521 0 obj
+<< /Filter /FlateDecode /Length 4804 >>
+stream
+x<ˎ$7<уzVvu=7cN _A""#+SAQ$E%f?/㓤¦OOoOYw":O
+E]x˷?I)W)+9)->/eL_ ¿(S |>_6oiiZͤ}(:{}BA.Һ>OZ(AZ!u{(`{EH+:;
+`]FO_ak|A!Ns_.
+c4|r0:DC_L 1r H^ļf_FJ\cS2
+m<)4N! RP[FʂPP(`2 zM_tN:a9ı8c `M[M[LEh`*lrLeLLBm P4s8Icq)
+:DrQ:٪u`Kb|I.;"ª 2"F)=#FFp/ֆʲ`*jD bp ¶p;f[
+hxT*)1:xxbQ<de{HcuQ@8,L:צQF Hg)1yb5*s s8gy8#P`pC`%<`_.lWV+> k2P_攫Ϣ+Zn"D;IMhb^Xм[&zG|!m2K"p$27K[L7sʅth0Zӽ:Tryei*eo3AJ}pj*H1
+qv81p y#3uzPR?3ͪ+yZ3OUZiSGNک`N7q\I,S[1K$mK٘]6Եg_Z_Ǟ@1AOph>Q'E0CS}sˆR5}$+c>P<F3= +DfdKjHZrwQXz CxCV(טwaҰ#:HϱE/=P e6li: D} z-'} kͧkA5Ww2_6L@0°&86B'!ʦL{m 3f6hH1.4aSA8 h
+!OBG{B]Bw$H9E6eVQ*LF,ֱX; Fr[`$ Vi b BE;2=vH;,(BB`ɛr޵
+3_3cYhSgO
+|=_6VMԦ9l >aCZ(rZ= 9Rkyb4z{Ŵ3-s4=Z]ԮQfLHJ;vZy&sAQ
+#ӭ#SY$ymx5FI+DC|DL kL)mBwJʧ~X:W9OyUuT@%19VUq<z;c/m%T*3ch'h_wu1Xfv yv<ӣUF(ګNO)ˌ\254y3w ?'yd0Yhks.PN+QSh0v,E.]PeN5r$s%!"[5V^^#e{%(ڿZ.A9+#jt,:B-D|rEfGq' q;ņr^:%,;0I%=LI:5T(1QI( 'KԩjOg`BI]5eS` CEZ+,\ғY6Z}]Ȯ9ܰ)2Nm}~ƺd8s2nCe/yؚס'0 UVB\juxlyG 09Ac-o$THk4@m.HY:@R4 NHF܉r-_c%Ҏ0Y#JqJk)uv#97I۪^qLfhz2װ=j6bZSЬ
+khTCs
+M;Ɩ kjL UKrEwόQ"H`Q Ԍ/zu}:U^ƍu2䝰_O<;t#$z*Tb\t]"w.F`Zў6ZRwT-BI9maoӍ߻1
+jV6wIvKV{ ޗ
+7LB
+yℹמ"% QsT3v^6H¼b
+"4M7Q<е G:AQ[n?VŒ[5ʼncZhKa̷]ow8r
+͟{0/5R{ֲzd9:!uf?.*~Wp8Fi?v`_ udw#RF_VǬ6y޳
+^WBy*zր S\Pk,ru} SBaŔK/˘$Ƚ) ;F97K]p*ͻ+ZpVoF-J{ VVp(R[<i|;oe*ʜ)ڡѡŔwr,Ȝ^s0{
+endstream
+endobj
+520 0 obj
+<< /Type /Page /Contents 521 0 R /Resources 519 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 479 0 R >>
+endobj
+522 0 obj
+<< /D [ 520 0 R /XYZ 78.37 808.885 null ] >>
endobj
93 0 obj
-<< /D [ 512 0 R /XYZ 79.37 638.301 null ] >>
+<< /D [ 520 0 R /XYZ 79.37 675.694 null ] >>
endobj
97 0 obj
-<< /D [ 512 0 R /XYZ 79.37 340.527 null ] >>
+<< /D [ 520 0 R /XYZ 79.37 638.301 null ] >>
endobj
-511 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 380 0 R /F29 371 0 R /F20 378 0 R /F69 398 0 R /F15 377 0 R /F55 379 0 R /F66 384 0 R /F58 382 0 R /F74 469 0 R /F65 383 0 R /F40 387 0 R /F59 389 0 R >> /ProcSet [ /PDF /Text ] >>
+101 0 obj
+<< /D [ 520 0 R /XYZ 79.37 340.527 null ] >>
endobj
-522 0 obj
-<< /Filter /FlateDecode /Length 4988 >>
-stream
-x]K$ ϯ}hE0Xdz۽s7'$6
- R(y_ [{je/Z^‡DGk]G
-s" ?pW-cT]xb3-ADpK950Q(>Ж0~MFnMI͑eu9 a Ю1:DaBlbTeo!jqM -a-uhPL;.Nap%4h{#RxE
-4- 7>]:K%ke;IdϭCتVo3Dds NnA󒕙XCg]1:ڐE+ .|_DRkկDZ>ؒzŃoZ=2$)l.s
-4!{[ezJ rC(ۤ
-.-kSc-zJCWT`^XзUzIkDF,P1BCFn4
-KkLN٠~ QNQEI_c9WRx$K^xZ7 ,.%x_Ķ/}DQ]SZ9N< _pK&qb:v@UdL*_Ev$n4E]l5 W9,0(NUkq╵r1jfF'%ͱ /?1YDi+iu' ܂8im.] rc:XY /݂$kAM!OG䥶CfKozT@0c7%0K.v`E,uGԌXR J뵜eyJD:F:) &Wp͵vK]`7*5NenOFe;1j9bӔ$,OLP{S9wX*HWLX }(/r"YmR&!#_#זX,]e1^wG:D4} 'p:,e1Yʡ\k}.ptkveˊr
-L??&btl^bt9i])[nBZ>lLKr?4RDÈ(#aOOd|,cY{O?=}2u]5}?,ʏ*\u\\_[ Gj,S-Lj"1N> U AzW%\ž.GKnkE`̽/9l*nit +:SM2).|,p \kCJZ5K\b ͲJ~JB_Xr1KP(}7B+NE<l+vET_i\b1zq!4ĥ}<еcJH^qF+Mܑ `(S 2.AS>+}"KJMGAv8_ &%snoҴ;esjA.F3-BvY9Nģ@cTc`nv9TF2zAN4j澮A"̶qf\L8FAJ^uR{9v2ƾ91eɐ e
-3=ݍAK>zn 6j?Qr1:5_T@Ig.2h A^I^\k!q,4a! My)dCAm 1=./.!HsV4YAG H9sdW%%4*=Ѥ_evP0GiAƤ~8yjP 18: GէԠ\3>~wZ We : X*W ԝKWʿ+ѷA ̪=fZN t,yq(O(1}ʏ-Xc NhH%h'AEP7\I ?tʪ{@C Ej5-1Pl!ay`+'@ $twx4uWͯ-fͅ]"pn"HXA_AjH
-@4}
-O~MI~t YwsEg eۙ?ׁdf<ķꨶ{uԬe><(4-!Zmy*cC4ewKN|o Ok )8R%oAV>
-[|cl@}ňd _ʺis4LC-gnҷ!QCޱɋY(ERipjN]xE~7M#_˶nYoXn(uGVtKq})V_oA>Վl=p;jf8t$#WQ#G-Z(T}?T<P`+:0i0%uAAHH{EHќ|EH%^0l+;DL87 wFU5HHP0}^TʮEB%dwEUׁ@&A%/SMY ClIOB<s"H!5gR
-<")h:=̣;ЎD}#H'H1-sI'/ !T>› wF'E_Jgꪟ&AZ1\ & (љ+M<V?<c^I+ΒzX[&݁ptP]"v`ӓt5OkZB1*-/*5ArpK}ͷ<,S.; t!@KJ6խ( 9O6s)}?fX_A|.5讓oUXs&9y= LtяWAro&/)^vFC=4K:XCDQ ~t{Vr[0Y]6𑉲Bm3h3J>cwCٜ!qJP6s$Ʋ;>vioho޻`6xrba|oL*S8sմYBEwI)}]]_ ^; ?xƄ2M*]j^U,q(KW{/^\,?
-1ec, z턗#N)N8*jN^<*U\nL=3Ejޥl]D?7uK;=* !,2:֣ -(\ ܍Vlx(+u]2 Dgxe''D3X^xmgKAҡ q2b_Άvfc&|^u/ewUEy$ގ1^kX[C+ qM6ŖXԖD=x~3YS{A\0˂M#`Vn_V=zN;օֵ⳪m)mOe gf&SlsRך0inQMNዚ@;7fow=V}jmV9Ms?1"Y
-teӋDޤI/2I^酔pVrca^Vw 0}Xv ?d|zlψEs~)9 yt!!-E_mG2_<|$Qר+?~|=szO0jhgߧA0},g1x)vKp8/^-;
-ܞF $/`Wz S~MOJ.SP&gPGߔ8$`r,,oY[%x۝?vwcj9E7%#صU8TX/3wexQZ
-uX J_X"_J!OL ZA})Q]Tx%,VhurK򝢱__o"b:8
-x]FmqJv
-]>PܤP5xr-6y3}{J9K8*^ B/mt-vF
-endstream
+519 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 384 0 R /F25 375 0 R /F16 382 0 R /F68 402 0 R /F15 381 0 R /F55 383 0 R /F65 388 0 R /F58 386 0 R /F74 478 0 R /F64 387 0 R /F48 391 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-521 0 obj
-<< /Type /Page /Contents 522 0 R /Resources 520 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 480 0 R /Annots 524 0 R >>
+530 0 obj
+<< /Filter /FlateDecode /Length 5003 >>
+stream
+x]K$ ϯ}hE0Xdz{gd{oONl$p.!JU1zw$H}%=r4gN8͵<}zb'0'>}>H)@RHWJT}~^{8j)vJ)34<ࢯZbpWAg~ ADpS950Q(>Ж0~MFnMI͑eu9 a Ю1:DaBlbTeo!jqM -a%ب-uhPL@;:.NVp%@=(G{j 0"ι:U2-
+.ESd-zZCKV4ԡwO6ΉYB¡Jcө=RaiAϨꄩ ׂ;+Fyl?9;sQHƼpot,.%_LĶ/D]SZ9NdL_ \LŖu쀪6/*H + TUll!Jhl#.6RZ`^ 2TU
+n'_Yvf֡o۠<m%%%$"^_\=H+<I-IC\g2$fsc:XY /=UiI),C6cKmB\H1ynZ*)al!4 \ŠX֩I/%>+=a\].[s\"69Nf1ɾ܄h_5{֡R#[K$Zva`}\@vr\Ŧ)Al 5z`ݛZ\EbĒc&`^&GsL v[ME8NBFFY,XBx&U;!![FKmB-(X0FDlҭ;ؑ-*28Xyut oB)7i!-ulm6&%9ÿ?|zT!*cD[v>83F÷-0YYXG:u g# QIj&Fa5(ۥ꼙#''-K޹=]Ld78Zu9;=eSH4pK{NxיjIywISeys]䪕^ RZ'YsMe4*n+~R }Mcciq\5?~ ^ ;󰲭9KR}ECcqeq!ϑ^euUP{H+M-ri+t<RŬ"(Ǹ[)6ȐC8`PmJ'ce=0}^T1&,ׇr 'q xhJB[ޔiw ,w㙖| q=,l'Ru*YCn mӮUGZ=ʼnf]Mו$lWlEh;q㖕())
+G'8@7(.e͗c'cZS
+Q朌P&޳aA̯n},QE)_Q>:5)|H_؞\ e,`DlUᵾk7&RN刺Ñ$Vf3kB}}#w9񺣦*tXmD}9Ȯ)9JvȪĀXGAf 1B!X^bZ ><1pq;: GaNgȳ} ̀9hCT5~q7A|ucSccp_A"8K X* O}*poC{WS}ZN ea<n qP:cFo[۬LttBC,A8#` , Bq׮O~>eMʽKr4Ф&ⰳ%FB:{S]V;/QJY0(œכw'y. t2IbSy'.DE=fG$ٍZ mV
+j&햆d#uM[v[F^ի-H0R>L'nZ]W?fklk9$NoY[]7{ -Wjo>3-H@[\[`ro#7] DǛ>E(
+|[֗_[z7t$}k7+<p،܀ (GeCB`0NjEZ([T}OTF`+:
+&"{#M._#hQ bDf?վQhp-&* LAok P8ko/T Q}%
+|X|U\Ǽa\GhnTO:zשؿY\gN>&L
+u:??S Sۅvd{;c-tgR.
+ю+׵$ZC"Ij
+h$Os*,.]7*h4v,t=kׄUD~LiIc^kJy&]f']<hθmw&ܪl;-*gz8a%Ҋ,p^ &Rm+o&`MIDO4$Tǹ[yȭbKs.dnsmX4("BRI[s<L Gx7}sl aD7x=}m ɇq]DҞ qWσ VTح}lI˾
+Y'3xӸQq uX'3U+K @d12D^Ђ:@Kܧ+!b
+OCR_zpp')_5`B|٥[ r;SRU ho xu+1r1ྶvi^Ԭ;>G*WRB5
+}̶2cnl_
+X^x]RHlmGrJv
+} MATtWnR*Lo|}{JvpHYR{1H
+5%
+endstream
endobj
-524 0 obj
-[ 515 0 R 516 0 R 517 0 R 518 0 R 510 0 R ]
+529 0 obj
+<< /Type /Page /Contents 530 0 R /Resources 528 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 479 0 R /Annots 532 0 R >>
endobj
-515 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 291.425 694.371 303.38 705.32 ]/A << /S /GoTo /D (subsubsection.5.3.3) >> >>
+532 0 obj
+[ 523 0 R 524 0 R 525 0 R 526 0 R 518 0 R ]
endobj
-516 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 494.426 677.873 514.132 689.828 ]/A << /S /GoTo /D (subsection.14.1) >> >>
+523 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 291.425 705.765 303.38 716.714 ]/A << /S /GoTo /D (subsubsection.5.3.3) >> >>
endobj
-517 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 90 665.918 101.955 677.873 ]/A << /S /GoTo /D (subsection.14.1) >> >>
+524 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 494.426 688.705 514.132 700.66 ]/A << /S /GoTo /D (subsection.14.1) >> >>
endobj
-518 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 354.42 272.601 366.375 284.556 ]/A << /S /GoTo /D (section.9) >> >>
+525 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 90 676.75 101.955 688.705 ]/A << /S /GoTo /D (subsection.14.1) >> >>
endobj
-510 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 307.993 84.779 318.45 96.236 ]/A << /S /GoTo /D (subsection.15.3) >> >>
+526 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 354.42 275.63 366.375 287.585 ]/A << /S /GoTo /D (section.9) >> >>
endobj
-523 0 obj
-<< /D [ 521 0 R /XYZ 78.37 808.885 null ] >>
+518 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 307.993 85.96 318.45 97.417 ]/A << /S /GoTo /D (subsection.15.3) >> >>
endobj
-520 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 377 0 R /F56 380 0 R /F58 382 0 R /F55 379 0 R /F74 469 0 R /F23 375 0 R /F29 371 0 R /F20 378 0 R /F26 400 0 R /F40 387 0 R /F59 389 0 R /F66 384 0 R >> /ProcSet [ /PDF /Text ] >>
+531 0 obj
+<< /D [ 529 0 R /XYZ 78.37 808.885 null ] >>
endobj
528 0 obj
-<< /Filter /FlateDecode /Length 4758 >>
-stream
-x]ˎWh9^ x 8ߝEF
-}b`b NHtWn+Jd[ 9o SVٛLd RثCJ^i>i,e=OYG$= dOJ4}{{-LpHLB > l)#+9ŭ(J W @2HoUP::4\+Mܖl}H5Lt@%quʾ ڶ
-K
-V]^;k&^{t
-6?C/ܯAFlkߵOFl{H3@*}
-g3V,h$aַ-t,q]ߚ%t9Y=KOX¨r2$ȩPcէR{UYA9uTOa1pJ?xT궲b'ȥ8{Z8BsjJ+qL&ϊ˕V%t)V%%t)VXegZ+ZNCXjQ},afGl_ﮖL$5Ijp0(5I*ˋBǛdzř"
-͟o>')Ilp{*cP.&7PYnp,Wp\|у2n[VkljQ WofJMy= ֏l+<+j'S۴sjnmHPFKb.nl H}7_<^wrĺ.M
-ͯHITм5dL*-l?{|B
-Z͟x؝n-L4R2.9Nƽ8e\֗3M7PեUMڶV0]; +V> Ê$<"2+f򫈬hZ4j)dbD=#bkr"3{zI3<3L#}>GΖ*"FP{4V-bn>Q]kL=r֚* ͝1/UnWRJX~La%W>7m>|Rw.*_|L=OgsB/t^OIIpT*sЕmԙ];
-s?5[)xL9FHޙ$'LCBTܶ1q*^b'l8flC5CɻX)͞U:ܿMMЕ+ @\T sjKj4z焄Wȁ- JxҚ
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F56 384 0 R /F58 386 0 R /F55 383 0 R /F74 478 0 R /F19 379 0 R /F25 375 0 R /F16 382 0 R /F22 404 0 R /F48 391 0 R /F59 393 0 R /F65 388 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+536 0 obj
+<< /Filter /FlateDecode /Length 4763 >>
+stream
+x]ˎWh9^ 1ߝEF
+}c`)V
+GgO>BC(K,W1d0vM.`lUi?: n^G)U/US}ekǞbMq|Z-bHzPvXCDv2\ζʷk^KhjaB #}ԃT9D֒ꙤЗ+v&lOwzhrq4OEѐ2Em8QK6
+-av+v$
+~Y\NP̨
+J(ƞjWG5 qUCU_*R~</A䯓_*+f_*kI\w){3F
+~e? w"r3cA}X %,=8_3 (@\Nm.ki٨K淹N%d;V@],1Lе]>恮Jp
+l:9؈y ^)O%D}@A
+L
+U!u
+5b0X%'
+5`?X/s_:bXKO*:sEt9ZwSe)>
+\ A+h۳D%I{/W+&q@NBUJ!npsuTg_8%<:>lXgXVhΞK4a\i%["K()gKӥZ T`XjjE: auAY
+!͎*iI_ﮖL$5Ijp0(5I*ˋBǛdzř"
+͟o>')Ilp{*cP.&7PYnp,Wp\|у2n[VkljQ WofJMy= 6l~+<+j'S۴sjnmHPFKb.nl H}7_<^wrĺ.M
+ͯHITм5dL*-lŸ=dko!3bCSYQYQTh*5hl$[Ny]~+B`z\
+쥅d=g IrWYRžb1ma?U<V&U0ؕE0 @DʻTdB#L˰4y.YhYA^/y(C'> c9ٽDIy暌mn$7Gӝ<E<jXt֪Nk3~
+vE]2޵Z#Ug x֤Q˗TEUTưrXȮw XJWHU4rDZ-E;p4R[a2\=6$N׎fCrU[("Md!Cq0ϒnt\%qO<NHu]&c)nfX'K{2.Kϛ|(*&m[+pѮxq+aEMVDfUDVXar 2v1R5J=ˤ?LU&Oߑ>KfQngKV#rB\Bkm+Ntg f
+*|y9ʊ6qJ̮
+{w= +>0m GʥI{)|~*y*4fP.VJg/o־0Е+ @\T sjKj4z焄Wȁ- JxҚ
:>e.1xۂ*l55V6OʋVMhx_jmF,i>
-%MTۙ=nrU냂_ݬH41,c_e^5HVzUO!𑥕jm8<8dJ]h`8|x[2yѷ48KPN9<:0\SQ9v3wZ
-#f eJ>xGDTwM
-7`mիAs*V3U RyDpqYT4/a7D7}Xh\Wx)W9>(t(W)nwvރ&=I-M4:rOW͉F\sB;%D@tߣԩ=p/go' LSY[-+{Y}r4͸eUfTuC{ϡ2)6O
-"ugY {mnyJTۏklm΀OH2wB]Aֈ -[4T{4b4cI8&ֵo7v]a sQ'pP,F::n]x7d|@Gog湰p*0{d)xÊr,P?T'&Mb}ӘlNQ4aGw]ڣK4B_i*|TCݽ]\2XH]K}]0jOE[.Q/$41%68]SgRBOzR IG?a!JLdZ)~?ϷK~a_6=EJTe(2z
-]kbc'~W71Btp?*ٜjɣT}V۬${(ӔM;?\{r*Ҽu7W6'6i36BkL&
-t|佹nd /a2j#?
+%MTۙ=nrU냂_ݬH4OcXP%k4 *B=ᑥjm8|" q<c=LZBi/;p,eoi
+es
+Ήc
+ӳT=ZLόV؈QlĪ|wsn'ߞ@?rYc#*E!8xrF٦
+f1Btp?=Uy%N YmTrQh)v4?\{r*Ҽu7W6Olflx
+YLV|佹nd /a2P5a% 
endstream
endobj
-527 0 obj
-<< /Type /Page /Contents 528 0 R /Resources 526 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 480 0 R /Annots 530 0 R >>
+535 0 obj
+<< /Type /Page /Contents 536 0 R /Resources 534 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 479 0 R /Annots 538 0 R >>
endobj
-530 0 obj
-[ 519 0 R 525 0 R ]
+538 0 obj
+[ 527 0 R 533 0 R ]
endobj
-519 0 obj
+527 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 477.218 757.574 489.173 769.529 ]/A << /S /GoTo /D (subsection.14.4) >> >>
endobj
-525 0 obj
+533 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 298.08 212.267 305.054 224.222 ]/A << /S /GoTo /D (section.4) >> >>
endobj
-529 0 obj
-<< /D [ 527 0 R /XYZ 78.37 808.885 null ] >>
-endobj
-526 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 377 0 R /F56 380 0 R /F55 379 0 R /F23 375 0 R /F51 376 0 R /F57 381 0 R /F65 383 0 R /F58 382 0 R /F40 387 0 R >> /ProcSet [ /PDF /Text ] >>
+537 0 obj
+<< /D [ 535 0 R /XYZ 78.37 808.885 null ] >>
endobj
534 0 obj
-<< /Filter /FlateDecode /Length 5016 >>
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F56 384 0 R /F55 383 0 R /F19 379 0 R /F17 380 0 R /F57 385 0 R /F64 387 0 R /F58 386 0 R /F48 391 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+542 0 obj
+<< /Filter /FlateDecode /Length 5028 >>
stream
x]KW8a`r]Urg7@fIzIU/hTHO:巅¿? =WGZ.~Ā.laTnb4#-߾/}K
ϔJ_; 1<𽶔?z 42>)& -x>I}e]ITJ_7&ߖ& %i(P 4*r$F^
KM~v6ڠ[|F}ԓ Ew)>k(S+ IkWlk_Yi+ds^tnn ʺ+mQ<ԗW@u>L-kAB"iMR ^BIJOڤfkdL[G|o/*EAgY͌! 4 Ck*z={{eZjEo?|LZY͔ )Dƞ,5P+ɈUo/J<;oӚvFF#Yj'ƕ&D8-(4'E;d,_ xj~Y{9xd=P>D /_=ץ
rW_;m ȷ8s#wz7;Gswˇ~)AufR~䮘wsI(>JH*//̻򥅜^_[ʿ;|K|M ,*N D6 RCeйSā.9DK]rkn]82}K(a- s==zM9$ =d%W3"Ձ8Μ$UZc05I:5i *RfauÚ5H IIb|UDU01pp9̅8;8q|{00w
-©uHd)V[բK*ٸKr^vI0TN"#ľ; o%Iw>OjDwbuj:T@f2l~FSw;AD%M_Gղ?>6l(GVGa|70{meLz&gFd\/zc)VY՚uȖZ8Yb:ɩ;n*"%LJPu;PB$uH:ѩ+juU-Y!iT(OIvV'am7䳔(31D+>kG=1R'O]<RlE[4<RNV9ՂKn*j<+7q[ Cff&肫F@h-_RTS^,!nkGh50 !GjC-y=,/^OBrӾ/Qnf:5sZ_ g(ㆲ0 )P~?-ncͭpSrђлQLYXmyQBOhIZ5yH9 ciل#Lɡ=9_7  쒁S1O܂|ovGJ~%M8%3q_M+\+̬µp
-,\_olS"?SW .x#-\>TtN$Lb@OIJopeŽz*렼'7xPYn~qOnpFIn~qOX-/nɭv[ʨܷ->f*-M=8!5L| cjd fKe8e &Rp~bX&
-#VְIIX$Uz=T* ,$R MW{E~
-ˈ JMpwż+"(0ʷ*5]_w;K(>I@@W̻a&a(00./̻%̲(0-?]!rÉs DXz쯟8D@hԸœHpfH4Ⲯ+ah->P <)Du[/nZw$J~$OcՎi}O5pwx 6u.qҎ<R:rRwx&Að ?#ʩ3GD} z_PU:J3H
-x#Fi<w/`> ǔ|U cA"}[k
-~!&v}<d1 /\+B5-/38>m:sڌ"Ϸ0ȡkQ2JDn~TƤ[RAUw)+-iW FzqKr!>ߪl uw(E;w7PAO+0OcBN?Xw, T U2+Këڬ
-SH҂q<S#Fraշg OR߸}|i)RфL9%qK
- #lم[2aziĻGt4 #OWQcH5knQ^o&S58w4@K񗠣 37OCP߅"?9Ëyx
-TT?jgXXbk:`١Fuªd[`q :9F|`\,{w&/a1o<]ɧ䇸~+>r8:>-m2c8m=+QHy~>C&\ AGHՄG `Ǧ>/Aޫc'<[rÑDpN;!ە
-o o|Ch!'0=+]
-WEyWk |cayyWÙ=&0&b9 W[xDGJ"s 4)%x>}V}G<öI9b⩡+%@G(L,k~r0:^H= (yr` ÏQl$DE>C|-s<Q B+UZcROӷ{J¬ ?ЉH`|z)OLxU3`QfpQ+TF`?qz"'l0i+iZݍn!oQaT@n ?=5x'd)ޘav<&Gn`ɉ;=!#Cr3r\٤ az]_s>E >7'fYVڙ5ja9V9qZU)!T#?(#hmb ֣7G^-}iZ!…FdLLB`"v3D 儙IY|M7.I.-Z3\p={jbbܖ C¹-^a4O|3TuI=V[Ɯ/:a5)4n)Q }J>%2[+q{n'I5^ҍ-]JNWͻ㲀YKj|8|wVef^ WyQ[K̄ˤ
-_,п=w_=@s˧!TJh+,ˁiaf.h0qFֻ
-8+ݝ|4 >#ۊMD,0~Prx0Ibr],Qӏmm#-ܚ_[k5(a۪>e%`_]5dT%&vWNc
-ѣ9^ &BZzR'WU91
-r6Z!^ҩfEѹeINO-FX G65ۚi
-|X)J(2QQRz㷲tY5yk02!?2IA!<$ & J=UX#@n*kTcHM]aNUFI>IO*o9Ulrw2-\g9Y׮U<M&mDL`Z))KEem-{^.m2aY^5kQJd®A
+©uHd)V[բK*ٸKr^vI0TN"#ľ; o%Iw>OjDwbuj:T@f2l~FSw;AD%M_Gղ?>6l(GVGa|70{meLz&gFd\/zc)VY՚uȖZ8Yb:ɩ;n*"%LJPu;PB$uH:ѩ+juU-Y!iT(OIvV'am7䳔(31D+>kG=1R'O]<RlE[4<RNV9ՂKn*j<+7q[ Cff&肫F@h-_RTS^,!%岵#4LTt0 $
+DjC-yo=m,/^Brex.Gyh+k'4,V0v8P~?"5 [rƺ2.6墙!..ٹR /aԔ8D m!|܀O1D}>bSuc:[0?P.YQxc8Qzrg=2c/ۂگɸY3g+N6E̴q6-pJ\0 J@6+p}avOVHȗ_O_5Du0T<sR9+2ыZ<>Qh~USjOBe=!R&=jܹQ7%ۭn)rJCdjd痷d7P[0Jy/ 7DMj5N0rSw7u Tb=bFcyrt%Y5֮RSIg&JhD FRqI4gw1k36_/5ɹ;oWA&x1 Yښ#hMn.!6EԒpkMGKzJpa\%L
+{*ɤ̎`1!te0)|dH|XҌޢ0Na,aMwcoqtilo஘W^FQj+]FEyWUi ¼+YEwO:"&bޕ3 EyWPYvQ~aޕ/a%ECgl<g?)Ӹy?$C\IW$BD3C4Q9E&u%_ ; AnNs~qWB&Q
+TGO<Q_;,ەi'PֹI;H]˩KWt߹UPwK&n(Δeq/}W(Ͱn"yeǰ|LV==R
+6ƌMJ8fH"n_ ̂9VB`]0 ~0`_qxS@|h8Erf\M\%3&at5$6NŸad#_X;ׄ6ƇYdv:y6J56!7@^rz J} xP #̍౷/_i*.[ӳ{
+6h]ƟZ}epݸtk^ Cp4QV5WVLW0qp3m"sdz8µ($Q2&Oۣp}8?e6-hsZ.Cu0e~#4t1۟o?3TmsU~ل|Kwڕ -c>^Rk켺Ϸ*R EzqGl]7ʺFvMD9T:/r}
+z /ke푈-52ķbedLJF<|R6”&ҮF\#p(yr:9O@<7ؔ=EHKM<&f)[3Cdhڼ/x`)X_?}mF?܁^)ᑒSwp
+*M*%"hP_ x=-&VXaFj ӃMO&=iyRN{\u
+H~4R1q
+Ξ o*Dh!'0=+]
+WEyW^k |cayyWÙ=&0&bS? @~m)Rp}_ \P[[ d&iIuc
+W31 !$ f&dQX7%_$nJkUΜrm5Qq[. Z+ dpx5c<
+Lt̆դ^ҸMD'\jk](ll _$l^xI7t59]5vEf/QگKMkZyPyi{6\Fn-2,nlC
+$ڽF5ԕ Ye
endstream
endobj
-533 0 obj
-<< /Type /Page /Contents 534 0 R /Resources 532 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 480 0 R /Annots 536 0 R >>
+541 0 obj
+<< /Type /Page /Contents 542 0 R /Resources 540 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 479 0 R /Annots 544 0 R >>
endobj
-536 0 obj
-[ 531 0 R ]
+544 0 obj
+[ 539 0 R ]
endobj
-531 0 obj
+539 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 144.916 111.883 155.373 123.34 ]/A << /S /GoTo /D (subsection.14.7) >> >>
endobj
-535 0 obj
-<< /D [ 533 0 R /XYZ 78.37 808.885 null ] >>
-endobj
-532 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 380 0 R /F15 377 0 R /F55 379 0 R /F58 382 0 R /F40 387 0 R /F59 389 0 R >> /ProcSet [ /PDF /Text ] >>
+543 0 obj
+<< /D [ 541 0 R /XYZ 78.37 808.885 null ] >>
endobj
540 0 obj
-<< /Filter /FlateDecode /Length 5241 >>
-stream
-x]K#9ϯz?":&bLDian'
-F2τ>Zj79śqe}`ֵ/Ԟ9ǜT՚QsvXig%=m "f9{hQڠA6Mf $d>5#<6{cA6YĞ++ܰd3V{BR~Pkp #\\ç_@$ 7^6W[huZ%ƺhM0C24%jwߍUPLY N)ٯڝ} ojԽퟔW{ǤR^`"w폗 e:K#k_!0HFCłA8OP, JiӗZLŴ
-R<8^K1=*=Wl8ckWŴϯ8>X 4 :ހ,:>XKKwNGHNY_̍. -{ȭ٭1J.
-01+p*9\d Cכat@ctCN sT\ìūtҿ uL
-}8 à?"iNaPī4^z60zn9^,@qďg8u@(Uzw>!4]q(Cؑ2=IǼq  ūYi^S5wPH^`@9z`d*W֮Whpgmz`28pr&9VE:颅1O\gk\ >)]'Eː;sU?li.yqpS\ jqIs2 w5yk 4\ٍݝ8Xf[ 3vq!<#&?_SWO٤N)R`_}]/ӫU[n@tQ_ݶ:"]۱%K
-rg.zWJkp|ީZ\ӀV m*a;$t:)
-YVv6~Po F}VFhGon\ҮM^^*Zݶ6?RM7unLTVek*4X6*Zk+u^Y*lc 1XlDHjɉT)ӷhUnp*hnq'|xֶŗmF&=}@5m(810jW?_ؖμ:%mQ
- *!^߇`
-#c00概A;.z3fD`,,"cb@vJZv'1DUfi'{'*_ 4AP'#U)9ϼu8k
-D+p#S{ @d¹4 TR8u27v05D):h(! *g
-;5nNAPWd7@
-HTȸt S+Xij)һ[pCBYLA#d7@
-N<4j!CN}AtEp`g=SZKMIv(~K|͡} )wgJIAԩ7ί_COd o6(YFFk>Eݯ
-04j! TUTghAvUo긷@+">͝45x何G3=*~4ApeX4 457b#[
-oBLEEzދN]i:B@ǫ0HA-6%HC+nz;!=,*&PVQi8K Xܷ0wQkV#SxMFA
-
-TΩAJM6҂i\q\E:} -{u !ʚIYP
-ChLȚP剉H*awoUx]UH6,5:GU&nV]*Ԩs3}p.P[u
-ޤYj3A?x}Jz߹Co[`&6YtcQTz)pzv+zn<_+9\Tuh&h^pѢraf-E-ud6V!boHDR+(Ct2,Dל\\q!5\0Ϗ3J8:0Gć^K-Gdw VLz$*R*e$ZJn]g8"}Znt]K)oWo%MxRG׶q`>+M6MXGmř0Kl=6-_.ZUj%itR^Ke
-
-;r[n JzKTqM5_T5OĠ# ß&BPTiUCKz ~g׈q>띑1(]*3gv<"ca8:?N,d"iޣN*?Ox3T*M&a̟hT!C=aP'd “])\îJIX; ;"EAv(q 3/6q ' kI<ex }y GnYLA#d7@
-N<4j!C|A'GVxk+ULڙ?oAPs!BpKàR S'_5S8KR`So11(lDzeJZ;?4j9! ԟUThrBvpjb8"E|eNF Gá+C-,Ԙ
-&bPɹ+<Z[=VSq&v[i:B@ǫ0HA-(D8phuq(+C-܀N}"NXI$j}>ZDO'Q듨I$jFZ;N]V/TNy&ҢZ c̴dQZ#=td-K.1V6a 3-hcOު<3pBpo IlJfցM*HiLSxb+*W%)4 5f+9μ}
-X&좷AHPv2O-!"„kHY{6igz oDȚz;\I=EіR xHrv[KFٝV:J>xn=K€yGJv/ʩ?O6I6k.
-endstream
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 384 0 R /F15 381 0 R /F55 383 0 R /F58 386 0 R /F48 391 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-539 0 obj
-<< /Type /Page /Contents 540 0 R /Resources 538 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 480 0 R /Annots 542 0 R >>
+548 0 obj
+<< /Filter /FlateDecode /Length 5277 >>
+stream
+x]I$;ϯ#x_HSk$8=℀<$ ;FnY=UiNg~řo>.v_?[`Jo_IIn
+O?>s.5)Ε;^ 鳼O[Ϲ$oAF ʥttÙpnNg2Mǣe%)tŚu/Is @o5["䱭Բ֒XĖž^2!'YIΆl3cz{-*YF帓K3&OfhJÌFqvy bWX,ek\0jvXuڔuO9*"F摨ٱb sW܆;6f`(؞ 䅝gY҂ySdd%ib5j/%DWϨ=^dKsVk=0(Fl
+LEG8 r\SE cH !upI.Ze妺h=䪹hNnspU\ jyp\ o©&7Z1C%"4W
+hwؾP<؇Lڝ2/9O:@
+INA@uܦ:xEu|=TsBx,Y4W]*(Lq5A`B
+RC@
+}^anDAP1_V7 .@ Ɛ1 Hx c1~뮋^Q;_dq f@
+yR;3{_o˶
+x/HDdqFF
+|3o.q1c%>HG8p/,N
+gx/΃GUeǴjl7>LON,On}2=9w'wuxHyU>h|W3C~v(;ZG>zIOGDEYLEc2FC2FCmF/0. O;юL )Tu'&Q*Zđ*yܛ}:mobf'YiOB4J(Q :Pj%({JqIBZ"JQ)z2jhA冪ګa^X_eת-LNy0ۓoQ'KM4a>7.ütR2kD|۔('\&S)Q @UH@qhäwit U&亲0 FwVw;ZHwtb>{)c|{/Kp5-6Y1r^ [قv:ƽ"5@fZ` KR[?rv+z&=˟9+^Teh | /q"^L:2R+Z7I!:Z-\q!5\Bxf#9&va1)/?L
+pz..3*b\aQAϨ7ֱFiFOfTh͸˨?(;.2*$?n$"@$;B2˅?G2)
+ phF2*LS$ɨG9NydTrx-ڝɨP=G2)h]:,xoɁ9%Fxk`
+w{ݶHŽ\ۂf6p.I[*#I7i2ckg71}֪D8`u<HMcv[{,0gl= {<,1elrF18v[c~^0T"Mfl_>"eb1B:AB]2JYɌz @dµ4 TR`l-a5ĉEڙn (Q4B@Uv4 J
+WE#+dlf}yEڙnAPr!BpKàR K'_%3^8Z%APs) ¥7dqr6
+XDŽ2i2ckgA)'#
+ RNn.G غh8C8`K3q(X[D 897bwelv=6$LkmƯ[I/u?J@T]I
+endstream
endobj
-542 0 obj
-[ 537 0 R ]
+547 0 obj
+<< /Type /Page /Contents 548 0 R /Resources 546 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 550 0 R /Annots 551 0 R >>
endobj
-537 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 261.027 345.178 272.982 357.133 ]/A << /S /GoTo /D (section.9) >> >>
+551 0 obj
+[ 545 0 R ]
endobj
-541 0 obj
-<< /D [ 539 0 R /XYZ 78.37 808.885 null ] >>
+545 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 261.027 362.899 272.982 374.854 ]/A << /S /GoTo /D (section.9) >> >>
endobj
-538 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 380 0 R /F15 377 0 R /F57 381 0 R /F20 378 0 R /F55 379 0 R >> /ProcSet [ /PDF /Text ] >>
+549 0 obj
+<< /D [ 547 0 R /XYZ 78.37 808.885 null ] >>
endobj
546 0 obj
-<< /Filter /FlateDecode /Length 5078 >>
-stream
-x]K$ϯ|hb0ԴZ>y-ޕ
-{BG]gA54q4_q<A:ǜT+֙"[ZΚȖؿ1δrgrZÜC 1庆t-/k5yѣG-ڑЉ
-U4H 捧vV~gJHF! He=.\<Fz9=}^nAh,r͜%v߫}{Jxw6A3!ƹOVsPQ}uo%⭲Fپ~_Gr_[k_nǙoB&ϿvA}pr̛-Q1jo`eR8ʷXzyX/g) !QޠDT.B`2 I_o$Hh_{)&*eu}&#!4_fU9FuR"LMTGHjB<ךijB[z#ڿ;
-$<t +0~3)-M
-äFFɳu (Hd Vn"/epNc\)>D~;|o :=69 j^+1d!uDUk@YcT4?QM>T;n@*0)%Jþ"ЯP"$LHx##
-!B\z+:I3*1.3[|)KE MO}L83~ PʄU JHc@`
-Jɦ2C[(+
-1n"ƽDo
-
-*a48T)T1r7bgu3mFpE4^QE)#w Yor)jWa.;_+qeУP׀." OeUC%Xt}^]Wo .I
-8*SsO}[~ ;uMђ2}Ae %:6kEKU 743´.!6Еw;򋛗},w GhSo c5;!#L2!f 2 f )|-PCI#o.¬\9E-U5C]!BxhW$Ɔ Eˎ7eÇ
-E=-@Ti_T:#s% mz]qn(U|%WZZ'儡?% ;ICezcKz%e8gZJܷHN\/Fphhnvr(C8]-i
-΁}zRJ}O}:(SWUy?_v;#)O u>A2呁K
->M
-Ui|u5xh[i,@.qf;Bf-8Ő;XLfaɁk>G=8H8%$dA!2o=0֦l!MjS WZ+Z8Tc >J{>LGd-g *I<VCO.J!ݱf57S D<؝<Ӟyp.[]0r5Je<i<S߿7;w$CPe6LIab s'o n(e9f[ǜov %S%[N1@,% kEM8}
-'ŹM0xUf']Qs\{JôHO8i#{艂zQwғ^ʅĮ%cGYՄdG$')9+^ʶ
-k6>R?39y(j l}MUKLe'eu_eUJ%z: hkQWtԘFڪ9 1cۼ@Q6)9iڗԆd}:T芵=NT*uq1%4rW!@:yO ט>|nwLQ>̒8秛!rj),ia"Ny\̮nB]LS[΄q<:< )SU6H\Ojԁnr]~2f K #қ(:V߀v8..ѕBX c/w:zDl"U,&߶ϳ+*/1 ./6<8&h\
-ycGʎ.K'c*6(;z)/}q1F:HƂ?M{2Y7K\x%`B.YzT
-s[GIJZ9IBS'^RP]}҆2el';z/piMm*K9m=,@Ǥ1 ],rcPN޻J?E(cwWs)*-LQX* ZBmːtɜjm߃m)^U_/kj0,|1Kȏ$4ݲ/,Ǜ,}3\'vWM8^)ʍמOJ2I9W͐i26j~2˘qg;TeZ7Q6UwR}a-'iO^oz]Wn<}vmb# IWʉ〨/߷[{36x^o}{7/+!jCY/V߽"X9 nL
-Bd0uW_Rvq"ZL^>K{ 98 &5ywJ۰&X=ۈ{{Y_;s]z9jgwBw76ʙ I-Dg{_wmzK|l[^mۧ*Noo6֎TuQO1TC& ݺ*0Zf@SFM,|*˦VMJiFdAKba6@)(6 qY%5obkKbFHr%'g20^mԧ\_MyN#]#XNvQC
-G'5(0X!?la܏\V)c[3nnq Iy?Am)[ו V]9iJ/`)ҿm~b SF "/=?WhOFHGq$-W^z=笘t;|$ 져w^fanXН~Chf^nr[R2FiY&SnO_]}XВnKڪ՜tGM{A :)8'KG
-endstream
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 384 0 R /F15 381 0 R /F57 385 0 R /F16 382 0 R /F55 383 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-545 0 obj
-<< /Type /Page /Contents 546 0 R /Resources 544 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 548 0 R /Annots 549 0 R >>
+555 0 obj
+<< /Filter /FlateDecode /Length 5272 >>
+stream
+x]K9rWq\ @V/>ɫbOk
+/DuyCܯgاocXaFG2F'2:LeHÙ3,!ϭ#G.U,ِ8< yf.̺t DGی=!8دLȌxbcN~Lxɫ"\8k:#[>cd~8Ӗ5i s?6$̐WkN7b?fX=y:^;:Q!#QitDt\?zyh%Sލvg]GHe=.\,Fz9-}^nAh,rl͜%­WW4('mfC(9swȭ2l "K}[u:j_r;΄xmD_l2ɮt~=};+τcTmQX-Qe5erdkNI\E ퟿ rAD i ,!3Y篑˭헞t .;Jd]g_ _y= Wp&#;o@?Sⁿ
+P
+äFFɳu (Hd V`n"oepFc\)>D~|O+=65 joTbB
+3րv(i~5 o:݀*T`R.K}EߥDIFF`FC9m $30of%de=gN3s>(.4_j#W4gTc,3+u@>mo& ~]ՙBZjHe*`$1 o0|.ŵ pJ* An>@^v!zܓ &_Y[^A5 aGs.aeįsYR/u4Qb d֥qM:?<I~cɠd,Y7
+OOƯo#@~{
+ɼ23.L0_YCW.Üw
+OKXr俰IYIfx`_GhdžM_ $9ּUX٥MHb'(\ `y hYf.NS|*s57>>ו@/ 7!6nD;
+HnnI;vÓRxAuf? N(ܻY4؇lO|4HkLb7l{glXi؏tvow !]}JD5DT,mF2Ճru*On6Ξ35ƙ~'̅f9C%"֨6 b<\W65\Dg@,|@KZT5]<XON<=ĺAiv |4G鲽Rxgj>l
+v16_gkdrXX]Vm&
+)+ A)!JyK;K!ܦ/lh:dgFm
+mq.huT?l¨3E6{,Dh
+'~`pWx[ޣ@܊\}w05O3竩F|>6 r,@θgױ^Lj+8;F_L3fa9n>G=88!Hޓp881==W6H_aT.TLKuV+kLL)|1"~'IL6%L4Ŝ>r#"/Ǣ
+RQIy1jr`ZkV@¨x[0ꂨ4
+(v'FgvK3vZC:\}o@oϺ7O%C; q2B<$ϘS7z^C㈭WXl;܅Dk-wԧ>9YzLnRԶyl[ގ5Ҫ#5Q`ɍo&
+ xnHMz)n2"t܎}gӶޡ鍒E?$4 O{nBl+mڴ ᆂTw}XPpmMUKۨe'e^e5N%z: hkQWtԘFڪ9 MDc\WJڃo}UKrVjC">*te=H*u6q|+zAr(k @t>h(c`I M9DND0{Ny fחn<]S[΄qo<:< E*0X.x-@Xʥ{qx!Ry^%Cn
+Y]ɖP={Sي
+T]L*ϳ+*!z/w=<}{ Ga<kulS
+'7Z^1ten9>:_5D )1S%ӽ2vACRu4ӴtRnb2hemx{~we50G~^1#PiF~ yn/^exoحnS=d_rawhnh;B8'|[+f1I='CM$iXf Iԯ=כ^5ym{Ome|.`'Eo@B8
+xsP7[ۏ:ce"a_wC¥b#w;k N+&Gfv@*|?)᯾N!<E6r>Hboj@֖ SΚ^ĝ7"4yFKҳ)uv'4{cdr!0`_n'B<"isz!J&k+1y6(5*زUы)40Ȝ/|*"(%$Z!!N,Mlm1\g
+/<4+FyZZMkczƣit„ 2~QxaؠK+
+ew .+ ve,tfk4#Z&8۸zKCyA K|: džpD#=
+2$Ssl=;%.7M:.͇2Hf(x USF3S7J02{2F?zƑ2\yn;Vz)хS~eP.(қFt?i4xF̻ɝ\<E!iJ bE<`h%m5 m4x7I ,'/=VƎ[dX?缿XD#uŲד0H(
+endstream
endobj
-549 0 obj
-[ 543 0 R ]
+554 0 obj
+<< /Type /Page /Contents 555 0 R /Resources 553 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 550 0 R /Annots 557 0 R >>
endobj
-543 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 139.975 87.384 150.432 98.841 ]/A << /S /GoTo /D (section.7) >> >>
+557 0 obj
+[ 552 0 R ]
endobj
-547 0 obj
-<< /D [ 545 0 R /XYZ 78.37 808.885 null ] >>
+552 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 139.975 89.875 150.432 101.332 ]/A << /S /GoTo /D (section.7) >> >>
endobj
-101 0 obj
-<< /D [ 545 0 R /XYZ 79.37 505.126 null ] >>
+556 0 obj
+<< /D [ 554 0 R /XYZ 78.37 808.885 null ] >>
endobj
-544 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 380 0 R /F15 377 0 R /F20 378 0 R /F23 375 0 R /F55 379 0 R /F69 398 0 R /F58 382 0 R /F57 381 0 R /F40 387 0 R /F59 389 0 R /F72 434 0 R /F46 388 0 R /F33 479 0 R >> /ProcSet [ /PDF /Text ] >>
+105 0 obj
+<< /D [ 554 0 R /XYZ 79.37 505.126 null ] >>
endobj
553 0 obj
-<< /Filter /FlateDecode /Length 4587 >>
-stream
-xڵˮ$n?_Q?pBhi VXq lk*]83ն8c;Nqf~'<}ջK`JϿ}
-,.wZ/HLX)ͥ?/c }YV'gl<)h&;G=ԞdBx m-,I$dMyPGwvÅZڿe#>f1#~_W b3އ+b -ULP0.E;@ z_
-+9"4B%3|/}:X#З'|sDA ȼ`]*z8TEjM5 !
--nn.eΡ6%ޚj5 UQ@,2 7[v3$Cf3HyX2Z2i5(>8)dDR]^CWΤ9KJ`%qaS
- 39zyZ2k0x/1:˧Fgʞ0oϴ?y+fFߖgw;Bis L}cuپ!0氌2( Y=l6Pm\1Q AB*SeFO'|;p&C(ĩ8X]yT`F t-n} z.S0&.12(Rֻzs3 JKf+ ŽBA?*>J)3Q/92ܪiSFHD7Z1
-~]If!7}/Ыp^TN lR[~ۻcz8yX@|PW/r){JlO6m2QA>0TRϷawLޞ%Ljq xƟ@`h=0}g3KC3`%xəvgO32KCO3l&e8y0_*jO2'9|H+r`Y/kXVT|$'|ci>'Ϥ 3mi& &u(u ,j>xNƬEgݖrn,xQbMcSgs{Y|н`||[QMy3IXgznV!=7cҗHϣx-M8dLL a 2}I-LܣF.oUT
-&X.Y!ۊotE !(slz6o,{lH4=)oa|~I G`ҵ׀T=c7Aae\9G1myU!S{haU5h xGIPa%w:-m|T'=^4?NJ •c"${*ٔRըƁg6d<OZ' 6GU]!20{H|v‡Tko84XD#/a|+>uZѼ9 vN'Ux7
-a&D.}=TBBi7rs
-ثU>rA^]fDj-[,=͎8\c)_jNԊTTQh:$zE1Ka>_V΄4negȯotˎ,&v,ѹʰ<0t;oǮpa9'D,G
-jV:#wu9q[gcCt`V1*,픜
--;BJ~&S{NE yJH浽H!O[l 7)}1"<a"fЇ
-3휰K
-C]wzqDrNH# BpG^=SD6?U{`.8&@BqM$C|z"<kg}~  fr2~ LiHf?V+-6h7[/ЫކK N:U:<[2 L:z3%y:gɞ;Ǡ1^Lbhw:4!!Lbr'Si{iT!R\7B4lo&(<ъESXym<ц> gZy\[>d5Yy_A d<sUI (ׇPNeG>|2j9ΏXևQj [hO>}vN߫F{mڹtyNW]2]W{rCr -X:lhG ehm骇4XxD|3 X@n%܆zOa]l`"PRXQ, qn2_RoDRYvɚ4"|t)Dh%LtreY2[PCB;΁70W3䔦7]\ow~kFy^X~ڐCyGȠw-ȌML>-]8XpRf[wa$CJNt=i,p?T+c85U+Ye{ >iXڞf<uevSAŠc|P^_u7fKپdoz&rbx vwpI25\ojoU6k#CX5lJ
-{1
-')v-vfg)sHj±{ǕɳXQs%;e2uHU@?['ͤӯ3ȥ'w7死r'O=\I ^1c:\Ѹf@|Hڮ&ĺf^>7qހ;IKw3A.oʑeKp y 6ReKF (t\tr.E(5V7k|Oq)͇#`|XVULVUQ7*eL;WғE0L` hT1֟tw4Æ܉{MA r;0HnۍۦNa
-Mm%TlmKMnBoAQkm4\: ( =Q߿"-PN/+oA4JKTwXO*a5mhUݦ:h1˒n3[Ǜek8:&A|h)YM j()J݉{nId5 A;p8~\:V0}}WL
-aP (B&;fҹ Zum!m X`Ǘa}#VԪ%H+E4^3(֊1n ͠}pZT-R}k/v/НiwAAk#fk.ZmVl!!6,LS9u jNUEeLhL v/Jòni9xzPJPZ
-endstream
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 384 0 R /F15 381 0 R /F16 382 0 R /F19 379 0 R /F55 383 0 R /F68 402 0 R /F58 386 0 R /F57 385 0 R /F48 391 0 R /F59 393 0 R /F71 438 0 R /F50 392 0 R /F41 488 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-552 0 obj
-<< /Type /Page /Contents 553 0 R /Resources 551 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 548 0 R /Annots 555 0 R >>
+561 0 obj
+<< /Filter /FlateDecode /Length 4500 >>
+stream
+xڵˎ#7_"z$s[䰙
+/Z& ~h2lt.wngZWOL*yj㩑_oKNJnKhqkO @I{ Q jOH+I|P0׈֚Ѯ㟗w2w]?O_^L.Д5OsiP0z.ELʣןtʐ]ad`NPVFc%{л=B_E[ {oOˏ6<9Zl8*h~Ы5JV5X3ޜ 2a!4I\ tىvq`^T.fS:
+ML"dw"PiŕaC0A2h1)ݒ!
+I9-xvJ&I"Ƿ+"++}r8ՙ4l%UxM~nS%@xbap(D'YheEb 5mk&kf-JhXtLmi 6R3'x欗K(ZsOZx2G= P$IO3 [:|K3̩7kG4o)\ Lۀ7od}-i:Oh5SxGofX۷cJo1->
+nybn=ABͨq6LpWB|P,;/ecafn=ƛQ>)3ظo 8%ܞ
+VF3tmY? Ė0>i tā)evK(U۬77࠴5sQ\+_v2(P,F-ޮ)2\+iS؋Θx WƯ)a:/ibe8ݳ˘^ e`t K A8e@[;2nO[fNd^8q [1;>_ ih]d1z2;ߟ~Gٸ8Ec);fh20.FĽVqH'kE0t((`DkA)hf@#/iA*mQz=E ;&)K:!Z?yRry.T!%&/m ˙D3BGaג*|鱌S23<I<R\%-jK&o`Dh]NV3)_Z<̓.+mVzr[VfCʞT<B SYB\ ;兆X5,TJG6^aYQX`-v
+
+E9ϒ}lMd2Pf/oBpy ͼ$%Wҏ <LA~ibN JjωuS ?
++<*j"K$H
+!؏!|QFleڪ Rȡ?gq #_͂S?v9)RԷt2dXf%cj6\6|#TooxQ-]۸~mZxoz+v7 {moIk5_r2}$.ϥ=CrC]NfLF{ن4NΥq)ǩmߜ ^U 7nI(uv|G Yu+㊎ x\2amLUV).:
+~|ip{{5=գ]noj!>%hf)}ړ+z~EҧL9u~E׆9NүSx"Ǔ+z0lw#R@'PJeVkBrEEdw5Jv+voH^-ETGpѰIf\2\=N_m8_֗ۺ6Vj'uNlx5J]6{ZGew~Uom?%wHރgihxO-^@:|
+|݁]
+U;8T+
+U˴'<D Mi5`I?8ъ g-J ./IwUR^n/ F8?./?tG|rTD r^Mqը[n>D9%-=r!Q;mCߖG(wx yfKv-%<_8;4([ XߋZOkj)<u#?!A @zy?Űz #5FLb{2K#FJ2M慰cj)<Ǎi7o!0{_D/禨t U%56+jlMM7l4D0vM}o#{MN~{"; "`gZewށͦcl=k?ƢLg~G{[pM
+D㠾}l:ˆe_N&J.Gm(A/8"U$F> -b
+endstream
endobj
-555 0 obj
-[ 550 0 R ]
+560 0 obj
+<< /Type /Page /Contents 561 0 R /Resources 559 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 550 0 R /Annots 563 0 R >>
endobj
-550 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 408.097 105.828 415.071 117.783 ]/A << /S /GoTo /D (section.2) >> >>
+563 0 obj
+[ 558 0 R ]
endobj
-554 0 obj
-<< /D [ 552 0 R /XYZ 78.37 808.885 null ] >>
+558 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 408.097 111.228 415.071 123.183 ]/A << /S /GoTo /D (section.2) >> >>
endobj
-105 0 obj
-<< /D [ 552 0 R /XYZ 79.37 377.683 null ] >>
+562 0 obj
+<< /D [ 560 0 R /XYZ 78.37 808.885 null ] >>
endobj
109 0 obj
-<< /D [ 552 0 R /XYZ 79.37 241.638 null ] >>
+<< /D [ 560 0 R /XYZ 79.37 368.079 null ] >>
endobj
-551 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 380 0 R /F15 377 0 R /F67 385 0 R /F58 382 0 R /F69 398 0 R /F55 379 0 R /F65 383 0 R /F40 387 0 R /F72 434 0 R >> /ProcSet [ /PDF /Text ] >>
+113 0 obj
+<< /D [ 560 0 R /XYZ 79.37 247.038 null ] >>
endobj
-560 0 obj
-<< /Filter /FlateDecode /Length 5527 >>
-stream
-x]Idm!iQ.DOcMI "}ܗfVCugA#
-T=qo^BnR]Z{Y-ȵ
- ؞9`,)Xð>epH=Z-,B+V7',R" (|kutFg$dF,P:s<`G?\H2l_ϭƩ.Z2D,b#y.n-
-7y &3aLb2< cJDU@
-wD>"PpF}L{IBAH$CB-{9pv.D5}qKiڷ"̮݊䙺V_vgTy?I"1 F,=zҀ $6U&o`sմ
-zDؼ6QM۫ՠ5?_$nk MN mkzAvQ\4C1RkWx>s̭pq܄bF3Ez Vo ~o|2-ht[.t1nڸ9q@R}* }B/oshDoCӻbZN^YEUPcɞ(OZѰ<yh cvm;p h㯩+I!L
-g Ųm#_jJaWϪ@Y|ͪF"Z6ۦ$.qkqm"2$&Զ&gWEޒ^wNen1f4Mɔё܁%TV!풄-]Emvd!mH.*BUZa̮Ja @lǹTq@wS=!Tخ y.a0jGpl]w\M`.0Bd(6S SaZVFQ|oqH;pcJQ0'J ɿ{iMM6f=n~ ܞZ?&D-( 9NJ&5( nW\+8/YfB>#9(ڤItoVDeׄ 0Bsj_]=]>mޥjvKVUUF%$O&θ[:[e~z4`Q(Њd΃\f`xgC~2v#˫ҖI;۾LD*fڦ<qKJ*L .|څM:) ,gӷ %:{\~PA?_wH=hWqy teqedV^Vb:\OLz4Ip"?4dڙ4XzTSR%,Ϣ:3`izJf}Kن&kUD"M/O]qYuL W1ݹIy;FL=gپ`|Ӂ'UBx1AYLɣPd
-_d=g4[ܣgՔNZ(8|y};JjND%CTxJkZ()թZtJ<:ylJq.
-+QoyaҀ鹗1bI)lm"݄^-۸X5IcJ=HJ&
-23۔KHR#
-1NsoU|N|5 JK6ANٴ
-Ҟn6j+~(S݊Ťɪ[܂kDPxtww8ü,Ώcd,oAB|pgUorT3ئȥ*9sx.q.ǚB tq3/cu'r
-Z0Ѭ$_3gꀕDϜN<E((
+559 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 384 0 R /F15 381 0 R /F58 386 0 R /F68 402 0 R /F55 383 0 R /F64 387 0 R /F48 391 0 R /F71 438 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+568 0 obj
+<< /Filter /FlateDecode /Length 5529 >>
+stream
+x]Idm!iQ.DOcMI "}ܗfVCugA#
+qg|w*C{@9tSxo$Cc~xpSǥ2@?c.S@+צ(JyG8>Z̈H#gQaK/~u`]R"W 3~O
+ =}OMWuCQ2᤿Wg&,zT9;; ӨOW%*A ioǍ&Իd0MM6m_Fnz#JsVT/`ZêQaT#
+V0m5R.֡C Њh% K|z
+n"-bu݁m0ũ 66ؑC+Lyqx$#W,skqjL*QKHz[-醂=MG5Lz{D>`bn Oar˜'AF$"2yBqsc$  IgaI<-wma.ib3v+gO޷[}#-ϟR噳0&|$63peI3[T}DaVu'Qr<U|Bxp
+<k؎-8z`3XLrP.y59>赖|J DpxEk&3"8w<Px#ڐTM?;EB9
+GֽE7Ug+OaD77mV
+P=b%0 79q=Dq5D ]ڎcK] &Rט[ 2G(?m4s8Ez Vo ~o|2-ht[.t1nڸ9q@R}* }B/oshDoCӻbZN^YEUPcɞ(OZѰ<yh cvm;p h㯩+I!L
+g Ųm#_jJaWϪ@Y|ͪF"Z6ۦ$.QVMTdЄVJA[
+*]P˲h؎3dX"ڙ eW\QJk25W)l=c1M8j16#n*'0$u %,RZ.^K.l\ Rf}1S}]6L 3(JS1-NItnL)D5!w/Iӆl/3;CCǤHE!XѤ4!҃m3Ak1psqa@U%ˌCgġ:aBE5N@PWVRhTc˧sۻԝ{C_m.|Ɋսȣ$wVt8,Տ^F
+ZCly,Û/:lOܮ@;bdyU2agۗ3uёhz=Yr`28=LTq'cI W%Iܢ%TVqZ4l6D~Sg4q"G-*.=Ax>Lp Y JwB+i֞IOc&N䇦U P; WjcJdYt]g{&,MoYɬ"c)d~ͰPx@+8iu<5>?*;WZ;)wgH,o:B<&4)yL>@a\RKg
+Wiʹ>C %:CNG'3p qW)rk-<<n3gSk):TGq+DL,-%-lBBQV>/O sʢ /8[͚4}{eZOEaS0-c"X#P0=9A,)qc^>żMЫEzcV 5)b[ޕ^ [)ܶ\`VvX^98wrpcTj`B:RKQ) %t9eQ]%~,(KҮ
+58oUdjGg{agzDgo .8Ygx9eNT|uP6\}H6ԉ[o׉׶pAq&‰=zbeeYNiOZN7{ f nb[dc-nzk"(<Nj;aPaZN@12^ !d>87S9p* nlyM9[8VcK!p8i癗Rjhy9
*8
-Wsfe AK|- Ixb8V^)l̜&C6TGz`t/ EK?OڌŮSWz+&Ym"/m3=c6P˩&5cb#tzx)sܶ3~Hz<:'Efᦟ <eZsog]k椚8G%n%_>g8BYfnMw,<Bijl^cp~<
-KKZ4Vᑕ*qpK7Y满%
-蜢UT}R|i1Mjd.W]beکV:Ew-Ɯ7NF&&&3_D\>NENn,^6)[ { _xyhӋ}̙Ɔi6Mnki[ M^b5%R(ɷF^ @=+ogTgISNk\7^O íG5? 3\/q&
+WsC{`F˺YqTKqhGz-61shI`rk-<nCz$0J&jKwP|4y(X:uǍ\ݱn2u &rjf:<f ejrZ~<;x.+{>r=_YjNg2-m;ch9GgȣyRdnS8;vֵfN;p]Zx&s*d5ht"Σ*f멆p5:
+\9 N2qInl2L[.o ҆KN+`sSz nLyy$5RjZ{" CA8xs F \ӻ!z,lF`+r`I\z8>F*SDk^mJvw䭹e{\:mW|W>*"M> j ;C&aںpOF$nZlo,F<e_ROz<ch%Gk0'̒[<qܜ I\X!ϜHp\ jq=e${N2?%G?Q_'#}s.Eċ]cxrBm=W[=@Cx*![~T!g^O~RJG^YXt`Q
+@ Sf/g$s$~Y:6V"4bxz 7}$Jxբt_A%Kaq؍ 혓z'Mвqg/)ҲJa jzR(-[HE#5z
+K 'B\Ӳ~z롬ea &B"G~097`t病ݪi"Al=Lxڈ K&+V/C Gq3aUxN~J0 ]p{i9y!N:yhߐ|`_ K i[H:}kG+\ktÅVWBdsle9Tڼ/1@d<j:I&䴄Ѽ0xN "ә98
+ HCkl
+[8Mx{E=QFcSu`v[R; %,0Ec
+XlUfQ6$Ey6]%mSL%'ߨRi
+Ѧ+Di4Ƈ=ehmc -Z"g!ڪntJ4{YI&0rO-Ө}خNjpze m+?U]hF $C]澣tSP(ɡ_[@lh&+)'l|fl*3e#[ qu8w#T⥿:ghۦ3U#_eLl-ceX~EY75EvժNݛ`˺1g`dMzKfR|Μ(4,4Y4l2D3A|Z.53 l$KIӶNA8Fi1+xѯj;Qo DɟS쁺{tW^ΖΈV )̹B7/ 4fs3AKC;+mf_pv'
endstream
endobj
-559 0 obj
-<< /Type /Page /Contents 560 0 R /Resources 558 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 548 0 R /Annots 562 0 R >>
+567 0 obj
+<< /Type /Page /Contents 568 0 R /Resources 566 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 550 0 R /Annots 570 0 R >>
endobj
-562 0 obj
-[ 556 0 R 557 0 R ]
+570 0 obj
+[ 564 0 R 565 0 R ]
endobj
-556 0 obj
+564 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 253.318 608.534 265.273 619.413 ]/A << /S /GoTo /D (subsection.14.5) >> >>
endobj
-557 0 obj
+565 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 387.188 387.244 399.143 399.199 ]/A << /S /GoTo /D (section.9) >> >>
endobj
-561 0 obj
-<< /D [ 559 0 R /XYZ 78.37 808.885 null ] >>
-endobj
-113 0 obj
-<< /D [ 559 0 R /XYZ 79.37 581.869 null ] >>
+569 0 obj
+<< /D [ 567 0 R /XYZ 78.37 808.885 null ] >>
endobj
117 0 obj
-<< /D [ 559 0 R /XYZ 79.37 542.025 null ] >>
+<< /D [ 567 0 R /XYZ 79.37 581.869 null ] >>
endobj
-558 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 377 0 R /F56 380 0 R /F58 382 0 R /F55 379 0 R /F69 398 0 R /F57 381 0 R /F29 371 0 R /F20 378 0 R /F26 400 0 R /F40 387 0 R /F59 389 0 R >> /ProcSet [ /PDF /Text ] >>
+121 0 obj
+<< /D [ 567 0 R /XYZ 79.37 542.025 null ] >>
endobj
566 0 obj
-<< /Filter /FlateDecode /Length 4580 >>
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F56 384 0 R /F58 386 0 R /F55 383 0 R /F68 402 0 R /F57 385 0 R /F25 375 0 R /F16 382 0 R /F22 404 0 R /F48 391 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+574 0 obj
+<< /Filter /FlateDecode /Length 4586 >>
stream
-x<ɎdI8!w3_ 9pFaF?jCfDgnΙׅ߾pϘQ ~K?___~uWӠ^Dx%.14o\}r)?s.v;Cp+gJ~:,=ZS3n s} }<<,A:&k@8K=40&v>oӏ>e ߯}/(l5wL2w+.n :M{=s.՘0qx4i4V,hKD "GK7_@`N2÷/o/atV]~y˗Ki&4S
-=&S:" q u|Nt=y_K?pw Cl"`>s?S-8jigIe᱖V\"3ZZ<SKgdMZZ@VDl H[=X ߢWI?O1g Wo1$U_ІQa44x [gk+,㖗axƞBx0[
-ȹ
-x'0o9AնmH/UP$Kx`Vq#L^y-Cݯmmm!
-Ӱ BH6xvoK/Ó?\SOݮ]gkhsYj)%3c_OvA*Vf~AO]]\[)B^+lhcN򇇕> *ҍބ9?1>b3wW)yxuB/ ~ȜARȊbCZYfW5÷ZH#Ps^S) Pz4#"Cҍ~giZoqQ$O@>OHJGPe!d&o=ƷYФ2I]ʱw}• GT/Q>i{
+x<Ɏcq
+C2#r 4͡
+ )YPkGNA-1
+W^O-o+$S3AU+طchÇ
ģB%h-npՏMWZ+". 4
D*V\wT~Oe'O.t>]TN0ԙTxGI0Rʒm}:~f5̘Җq{
-u}ON)2+̙"'̛GJJ]َʼ=E5|_@|ZOg6?d9t*L*fv[fJ{J/j.s$ C"B.p
-
-,W㨫Np'R2͸q !mq>x HF410ǃ=Cr*_^kq>%\ߧ[]|ݯ+AIUWQ[]ĆMFCa[A8MR7fK eOr l8&9)&կ[\Ѧ^KQNsL2|yN2DADʥBDf).Rh>Mm:J-H@MzZtZ?~NP =lfx#aG4I{V2ۛK$tH.NW((hʷ,,Mz81DaXIf6ĞjEBO[)Ī6F̘Z^خ)ۧPdö8HǨ6ћ%f D݆ ЍA#]}pBk$N3#+R~1TomZJ";
-b;YJҙ̼ j:.r1lQӘz깐F+`Vƾ RmT_2+>k5 2UOQߡn͚/7V'̣SUPr18\Dϋ; 8t|+sV6uDM qա~w 2E\R-_ZYNm #6U6xhl覈e+r@
-ivغqֶ"ö-$ ga g(6t3}2eRsz'TW)}ucglrfqw… v
-@z--*"BC)m%qG շ ȸVidSMd v -M[»jݎ_c-,4iPP}"vYLm1@ yyP!d3@o'`6鈿=+="mg\̆n,Cr[ovl
-\J"wLKBټgem)j1r$rz5
->s[/ OO=KlY>h.ki}Q"}i|1[nޭ(y{A{V}caWf}I61`/΂I
-m|\{`!S`6MR9K3J+qz+k*19ѿU:{o+Kfx^a)Q3<p@<etkL-^Gm.r[>]tKyŒyѝrqc1)W
-cSc\Lc9ቐ'#MNR(Hl䳈""y'jU>
-U
-ÝHsΊ̭0.̸>E G-wgsK57d_6恳sXA<p[9[$#P%+xY۬zMdOdޖ|ԩMҫM4*f%`:h6qujt0q֫J*~i&5T-
-t.p}
-$q8-GƾM; osm
+u}ON)2+̙asͣPM\ e%%lXe["G` /Oyn3wf:Ny|/ƓN3T-^]a3fCF
+V'nl"`
+91D,bXIf6ĞjEBO[)Ī6F̘Z^خ)ۧPdö8HǨ6ћ%flD ЍA#]}pBk$N3#+R~1TomJR;
+;YJҙ,j:."r1lQz깐F+jbVƾ RmW_2+>k5 2UOQߡn/7V'̣SUPr18\Dюϋ; 8t|+sV65\M!qա.~w 2E\R-_ZYNm &6U6xhl覈e+rF
+ivغqֶ"ö-* ga4 *i(6t3}JeXjO/j$} ~d쬞jB,ڽ>YJ8[v`=)
+ Gd
+ )d E4BT& ZšMsz85%[(5s\Dh`C?m# ;Vя:;@UDF%ؕ3Fo1]db+bH1tpw fӓۣr#ޖ}flX.q
+2Dq!
+.N;lPߪоU_-zʹ*[[H6,֥#
+!GX9NaӫUpädޚaxPާ|$a]b˂hHsTXX+KLrnEYދ+ $4I ZqlObUh0# 0Zi4^ڑPZc՛Yf!%ΉFbVaf$AkK<<<k8##hS6IwD"mnԥI'̘h/I{rľ>W
+S胅\Lc9ቘ'#MNR(Hl䳈 ""yjU>
+
+zCO z {&x<WEswfzyO zO F|Arݴ V:I/9N=9s+}(Rez徸u4m F&&;`" Ji~tz&7}Qj<aʹ{J+:I~p Un\wPꀺaݡuI@.ufIDye Bt{ij$gï.w6&gKзe i=jxN1~B>s Dk";qiL87O{\$`5?rKwwjԗUU3'1Kϱl'@LNZǨڶČWt4qrIs4b2\_">6χІdSMFSSh<}֢GN Z80Zo/?p og2Qo_\;Q!;ɐP.ZF#*2PbT]ZR%7Ut<C23M7s<U;_[a+]qa~,+0Z.(jˊ5lbS8m[Mg&,>'A)Ws
+!4+ID[H݇dK&W³\W[<Ȝ;2MPmɼ>(TMW$|1>iU
+xBK&=t 1l|<`d~T.6MNk()[T] 
+i+;ޯ5xzL ,7cATu#2$ yBetc'}A+KW
+UӀ zBo9-^znL'*)t,6׽%9x*00eqH W'n. o:?zQ^ORltؘI Xe sU;qWj:Sk1n3V\
endstream
endobj
-565 0 obj
-<< /Type /Page /Contents 566 0 R /Resources 564 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 548 0 R /Annots 568 0 R >>
+573 0 obj
+<< /Type /Page /Contents 574 0 R /Resources 572 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 550 0 R /Annots 576 0 R >>
endobj
-568 0 obj
-[ 563 0 R ]
+576 0 obj
+[ 571 0 R ]
endobj
-563 0 obj
+571 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 254.992 607.586 261.965 619.542 ]/A << /S /GoTo /D (section.4) >> >>
endobj
-567 0 obj
-<< /D [ 565 0 R /XYZ 78.37 808.885 null ] >>
+575 0 obj
+<< /D [ 573 0 R /XYZ 78.37 808.885 null ] >>
endobj
-121 0 obj
-<< /D [ 565 0 R /XYZ 79.37 460.244 null ] >>
+125 0 obj
+<< /D [ 573 0 R /XYZ 79.37 460.244 null ] >>
endobj
-564 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 380 0 R /F29 371 0 R /F23 375 0 R /F20 378 0 R /F15 377 0 R /F58 382 0 R /F26 400 0 R /F69 398 0 R /F55 379 0 R /F40 387 0 R /F59 389 0 R /F46 388 0 R /F72 434 0 R >> /ProcSet [ /PDF /Text ] >>
+572 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 384 0 R /F25 375 0 R /F19 379 0 R /F16 382 0 R /F15 381 0 R /F58 386 0 R /F22 404 0 R /F68 402 0 R /F55 383 0 R /F48 391 0 R /F59 393 0 R /F50 392 0 R /F71 438 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-574 0 obj
-<< /Filter /FlateDecode /Length 3554 >>
-stream
-x72_ѡ MV=o$XXkG[gF64Mb],O _W|0q&c >9Ѩ03tVM^3|<b$6a}ŸuNM<iyz.&K<`qM1A1y/o89o//<~s>~~$ MvMw~ 淊W~SHh\Je ", tPQ]K]zMBl+KçUaW! CZSa I*Htİrԝ%t^FPܨUC!Yd\Kjհ
-5KNZFZe6|
-1>.=!Zm
-cf%(&!Èd]n9hZh9Ik˸,17Wdu&n7Β&d7j`H"ҷ2nxJ{".2&E+~TϷ@ݚOIä%Exޢ+R÷HS
-L̖. 7C+,۵Y)Dg3T)i5yMM,94RP P(0𻶉G$&`Bsdd~"wv2dU,yJZ.
-G(Q ? X0ѲR!'1@Pt s9hSvMƶ%d-{jpz}^y7-`5ffi??~Y*wzh̒4{
-1n4:k_-H|rKKm~j P5E}K
-b,R#$(_O(edIYדf*N$[ǿUݣTYaokMfRtqײ') &Zղ3@K2=&D&צ ~E-*ZB꩎I۱ǼOL\lf-
-οJ_~??M!5t܏<9EyL?|8
-Rqڇ?׆0 ~ dÝzÈM̾ 07zC0
-70Ff6NA !4n[4
-z,;T菭zD 7)kbYyrb}GH&Y ʁ#*"*"g\`RN\5&ulsfxGޮK+0^z!9/e{t_Ͽ W~6]y?胀KJ+x~}zd_#NG7݉ ?oϝ
-KcHJ+Mѝ촓/uwy|}|$ྎZ "|S1+o-ұ8vJuӇxWJ+Jxޏ+]qp{K AOKmcO误Y12vF7<٪Q*fAȣ:V2^7S r]0ĉ|"Ls{baS86L8/1~,sK<t Ly?μԩd/j_$ij޸ 8\'wuB'qCit/Ϗ FkK
-A
-/?x~q隷AZC[tlp$7,_
-Sp۲@y(KMdm39 Zą$Ypvfם?<D%4Sz. ?7ugeHK,u }:\;2_?arLPd>"Ƨ lU`WslqA%)R2RDm7L0fX.VˮX9]5.]6g(eWØ%8Ek
-InŹPY>m0j<eė=m6Hvju'j6?֦nI͵V/DZC,el[muEm_ D_C FR!,Tke֮UuMt[ >fXBx01<GSTDCt:r1 9ыE
-% 냥qr<z
+582 0 obj
+<< /Filter /FlateDecode /Length 3553 >>
+stream
+xɮahX
+S~?}}f$MwX?&>W7$ gܸ8ח'p&UL/2O3ith{xL>:'&:EP=[AQ)(a\|jri8}{#8<u#"Os ̿\|_яK߮N<RVxˏsJ Bi¸ACyox unߵԅD!?}Y&~E >"0aISa I*Htİrԝ%t^FX(nԪ,2Z5,@T̔3d#ń{s9Ksȥ'\-\%vLC%Om5kSĺ80n!>'񁸻PL8t BkƝ\~u$%sFTPȜp^@FjP幗:s.d:<M-3˪mJaJ?aqz2F =}x}mz~A*e[Ko4-/܊a=2[C/oޭզ0fvA1 FI&E` 0Gt2%Fқ+2[:UlLg1M3F@5ȣ%(Iъ-Pfgh:[[-5$F0$n:NL\閦(6b493AK(LO(F9QHIф@G,ҧfsC&fKP
+.vm.}2љ"UtZdE^ļt`:inV94RPm(]##X? f,d?'K(tqG%fS
+TrYwP8jGnyM1bE$CN>b@"rH욌m!=K)[0S5-LzU޴՘hDemHkxwxu2K)M?`mV~Ŷ 1pL kdˋX[3>%ҒzQ,`aZB+L9!loG¬1$gH RZiEG
+MN{/^Z Jq3]\m`^KJ/r ~hKG 4GeڊV\DG1LaU@eP[1B̒,)zdJekI9sĿU(UvV5zr H\H:k &Zղ3@#HahulkS{?g -{!xTP v,c'&C6
+nq
+?B_F~BjNur\M?|8挘QX10*](lq@8j7׆T{ GLZ&)Cml8
+HjÑ2UT>W )߆1~ 'aV%ddÝAa&Pf#M0Z/>AV)MH`e
+]$iSd%f)-
+)h,_M}F6qi&n_]qy
+!,0֝^6E<fJHLc֣ARO]ɺ(rc Vf_n}]*eV]hj=B}adbf㔵jewb<i9e}G Cm:rHǽʵʭHY& aO0r)VRMۺy][NVjdRO<#oץORLT$9/= d_$W~6]y
+
+ H vP̱|v=4P=VF>bĻVJ:Q&_10(Hj -zSӪࢶݻщ)=m?5mGfjcG"Rj.S&o]E6m^dbgNqR9+Y)XzF^8>t3naVWWj8E U/pn%VjUzN鵾kK; 쎪߸G5_GH&c(ldgZ|
+;ZO84=W;=BBV.K(`OnI,62B3)ocL?hu$ɂ5\%$.sicSwV\NǏ⒎q;Ǝ Bu;+'lS G]a͵^sjڀ-n~[=h"%b$l:`aN5 epbwոtlLQ|ˮ(1;q{,8;EBdTګרp1yRLj/ ;e{Avnju'j6?֞nI͵V/DZA,el[m@BЛOqS/} 0^ fZ+v3-nBXE w@m[e%-C ӱyt1EM\a:@JȮ1+G3`Qю^m(TrXp>X(R4)xX
endstream
endobj
-573 0 obj
-<< /Type /Page /Contents 574 0 R /Resources 572 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 548 0 R /Annots 576 0 R >>
+581 0 obj
+<< /Type /Page /Contents 582 0 R /Resources 580 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 550 0 R /Annots 584 0 R >>
endobj
-576 0 obj
-[ 569 0 R 570 0 R 571 0 R ]
+584 0 obj
+[ 577 0 R 578 0 R 579 0 R ]
endobj
-569 0 obj
+577 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 396.302 135.32 408.257 146.388 ]/A << /S /GoTo /D (subsubsection.15.1.2) >> >>
endobj
-570 0 obj
+578 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 201.96 105.613 216.685 116.492 ]/A << /S /GoTo /D (subsection.8.2) >> >>
endobj
-571 0 obj
+579 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 232.406 105.613 244.361 116.492 ]/A << /S /GoTo /D (subsection.8.2) >> >>
endobj
-575 0 obj
-<< /D [ 573 0 R /XYZ 78.37 808.885 null ] >>
+583 0 obj
+<< /D [ 581 0 R /XYZ 78.37 808.885 null ] >>
endobj
-125 0 obj
-<< /D [ 573 0 R /XYZ 79.37 678.801 null ] >>
+129 0 obj
+<< /D [ 581 0 R /XYZ 79.37 678.801 null ] >>
endobj
-572 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 377 0 R /F69 398 0 R /F56 380 0 R /F55 379 0 R /F57 381 0 R /F26 400 0 R /F65 383 0 R >> /ProcSet [ /PDF /Text ] >>
+580 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F68 402 0 R /F56 384 0 R /F55 383 0 R /F57 385 0 R /F22 404 0 R /F64 387 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-582 0 obj
-<< /Filter /FlateDecode /Length 6934 >>
-stream
-x]Id9nׯc!h_D ps0z060n}oj"5 
-E~HQO!OjO| b]0Io1/6ޢO󯷿<+~ǑW+lWQ)k
-(A)7wUי~^g+5g:׽}O-/96,6a 1n`ꭹg߱TZs̛v,żo>~S4NDwh΂b <[3YW!vDP{0i.8L}N75<aY*
-[ >@M
- ʡ*V(H(W5 ve؎}BW2/JtGުbG+W,g=]%*j81\YbX'-F2ڪre#ܙיӾ5U%Ct2<$M- bJHR7TJ窃ffgpr6*bRöciZC(ömYtirjfnh]ި-w??b; (`{9ٌ*c_R\`mͷ/=9b0eLKUd 0V̒p)3 *2w7a!,YxIئ}Xu_`Pȡjɵ܆3 9 t:Me8%seMCbL#Aĵv<mbxVVD-ّGߐT
-k|瑶l9Sp[v;<T<g6ڽִ?'^y9)<G:m,w o$u)]x</<[voiwzU^.r fl>7Wqѐ'7?NRwfwzͷt޵g3mbb}{_jXYTެL䂽 nD9[U+o~xaQuZxbTKe(cXbʷ_~ V-js>O7-9SZlP O~7n_~5I*ܓa6ggvܸ;sKuԓO@|y4ANQA>(#0V4V0kb]r_̂G`=.9 ,>8sS]*6N0ug,?Ύ=vh"3; ]uы2f"`<M!kb~ <D  3׈%bA #*bĒ;#fvX#fŬ2 L"@fa qsj#z5u:#AE A[xJ0%zKK
-\.EIf<|\s 1L
-tN<F2vaqHꭎ(%07 iF0a$m4uef`>6Y44vgH,E
-Zm{D)ho%<O5rCmH9$q2{6rHKH$y=ID∄NA\tB "Ð&ڄ`eIl"oL_ʹz`Zja L4KNa D-z .Ԝu|+e)`HLU>$ )2I1%+04YaD)7EYdDRii=m,ؖL@]%!IIuH7DR  zb@);)b:@BAk3eeRO-(gH(6e,IP(Z$r5(%Pq47eH@a. 9"eD֡"d!= ԜLBCHh IvH j3;[YAF蝖lMxQABGN3 Tr#c) Rk?KTfnBY/=lI4~6(0(o@NT4A4~-#4S| &HAEkHȐz@i+k(D)sܧvkbY$ 6Jb|ia)(-$5(MV%61J#*`r!}*0h XNP>%cX2 D4d i'2c#
+590 0 obj
+<< /Filter /FlateDecode /Length 6935 >>
+stream
+x]Ke7nKgQz?B#U} dcĻ,
+401@h&pUS4u)EK5(->l:ϋ~rd bChf~fzBj;dB®rj1ʬ6G<wUM]|DЕ̋odJFYk.cW|FIeʃ48)Nl eցƉ{Fwu~oMUIP] ,ISj jj+ Rǹꠙ JŬ쨱XZdP'=
+m{~oZڧg$Co!?Q_qslU 'Q}KkB6=GL&iI0*
+ߙUs#7ynͨeN^Z9}yԪaE7]9{A܈r"b)U+o~xaQuZxbTse(cXbʷ_ V-js>7-9SZlP O~7nۏݚqXAFH3ED]y\nܝ0-'9F]DXW[!~u"`}0 NBs{M,سCOu<;ם_<x ̟;;rWءaG
+rIvIe3_]Qpx?{d$Z4uNjq*0h /D" aߩ@XyDÝ2ldJ]a9x=ȴd`,!ie`l
+qLj͎x,2gq!q4#
+6fdmg||fqIc$cw9Q!y38 F`#FFSWlAPf&f3*l%0@SNcw6DYRնGtVQ#<t F$+C'Wm)[_ԸD;K׃4A$,HT:E7 rh= iM V6$6!h4LU_ʹz`Zja L4KNa D-z .Ԝu|+e)`HLU>$ )2I1%+04YaD)7EYdDRii=m,ؖL@]%!IIuH7DR  zb@);)b:@BAk3eeRO-(gH(6e,IP(Z$r5(%Pq47eH@a. 9"eD֡"d!= ԜLBCHh IvH j3;[YAF蝖lMxQABKN3 Tr#c) Rk?KTfnBY7=lI6~6(0(o@NT4A4~-#4S| &HAEkHȐz@i+k(D)sܧvkbY$ 6Jb|ia)(-$5(MV%61J#*`r!}*0h XNP>%cX2 D4d i'2c#
v@
dd~FCd+I#hcR(ne/#2ނQO
>])S5@^ /)ti ,G$14ڍaqd15+!$V✇E
- @[Bܧ1Ҩd$)Xu#cJY686!QV":B(D2O2IF ݔ\^`Ht┕cJPA춐(2Ȱn,@i+S;2Rθ}*hǁd1aBAlSQ&$Tı
+ @[Bܧ1Ҩd$)Xu#cJY686!QV":B(D2O2IF ݔ\^`Ht┕cJPA춐(2Ȱn,@i+S;2Rθ}*hǁd1aBAlSQ&$Tı
::J6eP,VUexlTrJGPGVsVP2]*(Kd1}*!4:#S9j5Ș}{G$GRVS< 3
3P^G% *'AhI-=u!z/KNT1mFGVeJLö-Y)*uZGI%̞ vl~^M@a1)96

"Tb*E2M5eB$! Z` E%+ۉ"׶J/l~
'$Y[:D
- wl|'\Y[U;Dڀ$a,XQfvȵs<B.,jS @%WR $RڭbqdhX$tl"J\= X%,,;XKN8a);w*IFX$#`*DkyDj]2YFE@* ,,l%XXJ6%h$D,de; yB+]2% ,*sGV "&hd,VY(rm\>y&?uc%.y"EtclӫynCæ_F1Cgs$I3
-`^榳[<m(|!{e'yx&|ve8bO =|86k!LCƑZ,V $J7o\4ܜ/5KGם[:10I{vuw:!9]Wctqv!母
-̀Im1yx3x:CvJO22C?Y*^`sCa57r|+W hwA3ݏc1_Nw>(Rb֨ sD W>[7r9Rox'*ŵ
-'3]E>qFp$z⛯=#I
--?m:3A@Qֱ 4\OH{()p}漻pȼJ|Qt3Gw/2-i{[Mx=[gt{lM ;yu9䞍> .ǣogʴ֛YDt|gG n!yEX}NH/YArvK9D"@39m8)2@P/^{CͳcV^mfu]^{ y ><\xtV9<B2-nf+ E<W%2(O2Cm!OfE(.B\t2y4n9ސ$m?92<߼c> ?<~<B^ktOdz 䇑[Ș,\YL]{PO !䝹YZڜ
-(IKSO}rFnnk -G5qja|ɧE9'/HC4tVHBżt~(ЖpZ8Ԡɔ✝g
-/nZ5r?]dC}]8riQDZ- u~*szyi7߾({ FJ/>Zۉ [E#ԚZ"T뀏k#y涬[s{Տ\irhk\ˍ4T1='ǁdPio~ay
-"*,tߝG8Q|S jzgg&LJx >"- !OYaIÅ*6z/_tXdѹfTA?sv/5ThjԢ)EtJ.15hmN(/TkaIii=F{LW(} 8dʻ|^Ϸ^4\n2zr Vn-Lz|f!$_)?L7NWq:isL)`YRO'[>X7}5f;V8~1cs!ZiΟo>& s67$n>%F3?}
-Cz'f\Ik Wz'@δ\['B- ts,As⠟2? \{pIJHKec^}# ϤOZPvuxj3 ^[T9Ew
-\$7Ճk/ O.vo[^< r!{6V&"-;^&.kj So=hiJ~t.Jj;sUk0dh]4$?h–4h;e07-r|
-nV/Ğ#fr/_ƜVN..k'k*p[s[9J5dfQGZSumBeɪm=w4T.);ymR({ [;o~w`
-z_}F<w:%|:_J0;z?j| {x3 &q; c|bU^#qɲCҦyMrފ)nk\~+^5oq=p6d6bJ;M}ĴmQ,;kdW/.im/˻GJ&q>G,c˷8ZڶN\=M] e5q.R~wQo]#p],9q>./*ڏ{3 q mY]+)"lR6G]Q>Dxmqݔ87鸅ԛV6l)Zػ>ziw.];acS=2W<w~Nocx x缅D o! 7 yi9Sp[!~@(UG;/ϟn?+0tynnqQ]K[=n=lsZp5񋄭8wMP[kaZ̃a6Vw+AJc@- ?F1B??Ou^Dxt7\+[i{S3&3L[g_vpbbTK
-A=C_=m6fR; ~㒧tJ_ix^84Lg[XVLVocb`Z_y༻CE&TUet{v,R?asF sd(sL"'~%
+ wl|'\Y[U;Dڀ$a,XQfvȵs<B.,jS @%WR $RڭbqdhX$tl"J\= X%,,;XKN8a);w*IFX$#`*DkyDj]2YFE@* ,,l%XXJ6%h$D,de; yB+]2% ,*sGV "&hd,VY(rm\>y&?m%.y"EtclӫynCæ_F1Cgs$I3
+`^榳x8QB=Nq#Mz 5p%\A dW{MplB'# XNۭ;1I 6oHli9_jn֯;t@c`̍>{=t;Br4~@ uCԳ_w9ڔc*HKgu픞+e'e~:T疇jnWfǎc|Q*ĬQX|nrGN!Tk߽/Og<}V]I7_{BG<W[>~tf4\G.Qͭci2g՟>3fQR›|;BCywy@*g_$/eZăz{$.ٚv
+ st!G=}]G>67Δi74aR\B3;!)ߠNf=.nL
+pQ&Ljr&]U@9
+P]~ 6Bvs+}z~X4xGou;*!ؕS K>-9yC"Х9mPeB$ (C*ƑO<>tN4>3e\OXm_Xx|3uOnJ. n$ouՖHÌRpW?mmSto5BQ.ӷǪfeV
+Ǯv↩;/w~GF|fH:;d-^#hW/z#&ULq g>*G`in7K}?]Ǘ`/y}f2_Ut1ھ  ~3;/ކϢ'{+.>H%GqImiGVnhcXipjNK7V~1蟷
+`ŕ +3R69_Dү7\Kf z|1h9ڃPlUx[6vqICkWʮ.S-v;{k~p*絨R?ҁzpEܱam['Wndf*]du%&L%]rD +j{& n?ж*M+om"v璱4da
+A=C_=m6jR; ~㒧tJ_i/x^84Lg[/XVLVocb`Z_y༻CE&TUet{v,}U?7ʗ?6j-&%@`9Yv+a<
endstream
endobj
-581 0 obj
-<< /Type /Page /Contents 582 0 R /Resources 580 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 548 0 R /Annots 584 0 R >>
+589 0 obj
+<< /Type /Page /Contents 590 0 R /Resources 588 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 550 0 R /Annots 592 0 R >>
endobj
-584 0 obj
-[ 577 0 R 579 0 R 578 0 R ]
+592 0 obj
+[ 585 0 R 587 0 R 586 0 R ]
endobj
-577 0 obj
+585 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 402.528 481.923 414.484 492.921 ]/A << /S /GoTo /D (section.10) >> >>
endobj
-579 0 obj
+587 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 332.029 340.922 343.984 352.877 ]/A << /S /GoTo /D (subsection.14.8) >> >>
endobj
-578 0 obj
+586 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 330.524 67.03 340.981 78.488 ]/A << /S /GoTo /D (subsection.12.2) >> >>
endobj
-583 0 obj
-<< /D [ 581 0 R /XYZ 78.37 808.885 null ] >>
+591 0 obj
+<< /D [ 589 0 R /XYZ 78.37 808.885 null ] >>
endobj
-129 0 obj
-<< /D [ 581 0 R /XYZ 79.37 771.024 null ] >>
+133 0 obj
+<< /D [ 589 0 R /XYZ 79.37 771.024 null ] >>
endobj
-580 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F69 398 0 R /F15 377 0 R /F55 379 0 R /F56 380 0 R /F20 378 0 R /F29 371 0 R /F23 375 0 R /F51 376 0 R /F58 382 0 R /F65 383 0 R /F40 387 0 R /F59 389 0 R >> /ProcSet [ /PDF /Text ] >>
+588 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F68 402 0 R /F15 381 0 R /F55 383 0 R /F56 384 0 R /F16 382 0 R /F25 375 0 R /F19 379 0 R /F17 380 0 R /F58 386 0 R /F64 387 0 R /F48 391 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-592 0 obj
-<< /Filter /FlateDecode /Length 11369 >>
-stream
-x}K&^[v/n:&0uU.xŠ
- /[[JCdGˏai0>.Ͽ?ĘOysKRHh'ANo&Nw8H@]! d"l; ;߆z Rd
-#2x*է/05Kl/HaM}b1֭9,S P_LK;'7-B-Kfc~];kS%-iy2/MW9LQ6S Qn2=MSqx3NOu 9(@e(C 4Qy[+珷~ҏ`K.wP7_ܳ!yjCJ)8$?ِe3bdÐ|Io)$?E9l8{_'# QH6=/WKVS5+'׆~ۋVqGBsd*2=NERsLc cS%aTe(Sq*zB*z4J/FȐ8>4# XI+K^z)? ְ~"'N:W|z)C\}{yϳJ!mݟދ<N+/'wypܼ޻P E`<0}Zlޣq V|wߣRQ|\ߣ 0ur ΓR1lQWѥkR5@1fz^&. zfz^Ɨ.Ź[b~y)_ɣ=:VpڭGw0Ҝbx[q}o{C}hAd_m+.UV%beq{Fodj͛IFOGa+p %m  O;$[x219dԶANԶR O%HYZ9e!AgːaA3cJ?Y^
-'߼2\@Ik6Sq!f
-">kSQBB/jaXQXeS8r5E`ICF1oiO1(N@1ʭjN;7!-qҡ WJ2
-||Ԝ.9mnPooZcD ܪḘXe9yr!$( te-/ m=K!e5Ex D1\nT"ΉEVeRp[k9 !4c3%e|lDj@S"20Nn~BDVD\ ؒdHaVQUɒSQ$-HV51(*`dnJeS8@g^
-Af,10ugI8hj8D ^niE&,V"Fdbgg\F@@Pjp:^u5+ - y>Q̻/j<DѢcҪEEEmQi! !tIj0\Xӽ*`sNc,Ѭ(!`c[5wZa5hQ&k BBzX">nOrAHhZ1KjV9ӰREL
-XX=_^ECc_Pê0ʼn2$HAC {X0'%&RS Q^!)gs"IM)odidԪ<b_+ʅ n*ԪT3jZbB&&iݐ%jUD&*Ӳµ1!bN3@%BVuԑ֤YZLĤ0 QV5k幰2KDEϵ剋FJe“(1)u͓5 [1hw> J'*$*՛ڤ)pIA/QQՀZZVr#ȸT PgjT[2ʈ'0e 5UMpR.PIwGLF[UVD&%%LdMK$PT52xV'*.x.-K\ZQjZ&LDL2uMrTT5 2yľV +T2*"5T.dQaU~&LńLL
-Һ!KժHL׊ײBtRRŪU56eBO\$Wk
-^(pjSçra
-XJue)-&\bRK)Sk
-"_+c WwYX.TQQk5G2E01)p)&k8 Z^(B򎘘TzREŮ֜6D“(6'إaCUX\a!DЏd}!?폜Q#U\ZqL/^0L߾K57yy[wM bmr^s;}i.eD{4[D8n.עw,}gHY݉}o|?L')¿ ^rYٿ. qp$[ űd3Lm7ms(i?mKe
-: WFl0Kq yv;~:&!~:乧"؇y Cڻ{7Y9$u/B^w}~7tXGu`kJ2b,S@FOaGmCy{7?G3",(pV\p`^NIzjoG_a]3dIE6Wrq6> 7'J~z
-;#xQ(IŭSK~-ŁGƧGFP;5iXu+P>;
-EsTC^_C[lG97⓾5\Q4ad5F?lO=>' ݳ1'B2u3:Ncs0眲t wj<G*-lvdCjN<=Cf躔!j(:r2;]cEqL}1~xc[@2z(WpJ“bLEV^$=HfdMtze7tO k^['m5SJӸ!noVDw KLyS5?KgA5Ꝓ^{e%ij:Ap؝ٻGPG94|
-LftO3>291YuA XRd=o4tؙIҘLle;hi*\ f1oL53%:<CtYOŸ wﶢ(e"׾rԩY
-!d9h{TCjtfaΝ$
-K|[9E'>a~6> 32.2(~^0C`ӿt:8[J81Fզ
-ߓ`SÏPLET\K;.!o9qPQr{kwM(Z)M$|-xrs,W჏6
-) -=3\R-( {=AvopxӻcV3souu,,FKtb$4Mu
-S9@%Kož=u@<:P\zuEH/Ɩg[ +wip9zI;?
-~`] U]JEUD*"PѕZ컧XǖP~&mޅ#ɵAG]rly\`QYj/WL~D^S/22/+0Nx&# Z^<
-k^+ԣpRJ)Ds|{w.*R۷iO8f`1-Web 1Ǣ켔>S4VZJJytOimJۆ)'@Tv
-2=psD{dU$\, ܘhrtFYaY
-#3鈭W3n͑psx%j,hn1p,¥˽FamqwO@\އ D:]ȡI!)PBƆ;T'/{P-dn\>jLer2(#D{k[M+ }Rw7쓚!Vt@hlҐPB߆)d8/ `^7b-gZ: $:؞W>3]ˋwυ2犋\1>* ] ̒^Z*" 79diěm᤭Mux&j
-4u@Ij+
-~{\d*|.`ƺƜ2f:}+[ }?xV_w5F,0p7e v,f=GĘJ(L@h?oJsmlrca{NcOuj?`);+5WeLIF!2.FFnDs+
-v*3AƎ5C?HS8
-i$KVc4Ja*cHL7G*X:6OX>D0YD05,/Zw|YSvJ65cЍMl瀓NnS `鮥:۫h}M .=[qc bnT¾v8B}q_
-'
-y,'B(뇭)p"R"&\iT8aDg8VVr(8KR#8G[8%璽Ui9)NXhF')lStx,.`2t
-˳+bL(bMܦ"QR.z9ѥt-%Nn<[ZHi[Jv22FpI {FJ=9$NMs.cǀWtWke!eTRÝ&  "ܢ<9F cYet_ZS2X㗔+ s9 +"%8bm"FsIp0vRH(DtS:6iI0=do<QS"E
-K [#ܨ"}>YA%
-PZ:QALĐ*<Xcp"R#&\iT8aHg3T[*
->ܛ|~)%آ:R`2zLFseM),e4l
-;xڞ"@04X==))F(ҮG)RXp!F-(M Bppw҉G<^OQ- H!PFӣvr걨E6KBFJ?9A0? 羂_G Dvs~jŔ̐ Y4u*X+kJ4Zײ4쵿`.l])O[tEYT8 h]K X 7QI~7k-hEo)FI ܮԊ =ʨϵ2:|)xpp_GAdBO*>6zU5%vts {@ZyBG6 :l =U |
-?_3XQRB1kaYQØxev}A>{wO:ATӱ=Q=;Ğ!>كG'}|O<n
-7Mr8ZܙlI{ztKwλ:Plm+ֿW
-o4BoP|doOF?|! i9Cf6 T9<y4s~*.)3[ul$5{m6=o$\:oN lnyP] ӾxӮN4큉gx{^5k(i A
- ܶw1[-Tp2M)׃vIr 9>ws 3@c7+2jh:FL:?KWgꚲ7s\n@mΙLq6cOGgqm߇x3gxx{lzpK>s:BXx[<3D@\2'71F|}!^?c흾`:r`J,f8J)^Dɩ]SOdy>"Byuc':J6lDj%uTN#pzz;N;LqN^wzIw=&-X$^;v{ss<N) pck&<{_K{{snɏ?ioe=6g<GIs=mY~f<<r_>}"^k<yӋ3УKævPdw}rCflN.]뻧\uW6L?f/T@n┦غm:N7L1EX<vȫ<̶)TO{J<
+600 0 obj
+<< /Filter /FlateDecode /Length 11375 >>
+stream
+x}K&^[v/n:&0uU.xŠ
+ Aе[4I]'f+2$ WmU7Po@L,OH  xŽ~l)g'!n9{::ށtz
+DpEƠ}A2zd0UO36_`,8h3k*Y/HaF7b[sYBDq@X<? =nj_r$?k|mj K0GZ+9&7;2=G:^`&ñ钰e<x<OƧHh2=^<*?S_
+?;_
+؍~&R-< ޘ2mij$-$)c#K 7,$hl9Uf̤D8s$n-+i)$HeZc4\Yb"`k 5,0k3mvLbl0M|r@ɛC"KRd`lB=rFNSrk!Tib;pt;AYjlM쀴f F+Ya G|@Ll`3aNBV)" CP\XaBpti- )UWG?ܯXL!M"3a]2A*r5R5+KJ"ÙΡM@Fq)- Yx+t94G#-"["D6C9SC H4&2` -O̢9LW<=0QĬD؊dHB 2KF33e#JtiNc
+v5]'%dj$
+#J733 hA~sp0}ɘAvBa!KJÊ!-8Ba)-
+ p g(B2JYa8p&y6#CŤVGKo:P
+pV`.5(i%rR2Q[!Re%-$lLW G&$e1N:9*_BF >' TfX9QB+{5px+l29oT.$Nlͮ'z)zH/Z81N5-)XdmE:iQ&
+ԥnU_=pcfE հBi=%,REd%^ H Y>@2cev?!#EiQB.9լHpaMkD*{2+Bzl}BVA ,P( CJ82ȘĚ9)6 'MbT O9NJ/*ҪКnJIw& VwjRj@d}(Vκ#&dTi[ȢbPRͨMj"K Ļ!KժLUek;bBFŜfJ,*#I)Ia@$PV5k幰2KDEϵ剋FJe“(1)ŻIԚ쭘jtaj;bEEOZMmROZLĤ' TT5 2yľV'2.TYL2 LdĹJ)Y<"_օ* Ո?U~ UԊ2HѤ rqkHEU#!Gk%kxQ2вEU6e”Od$3kT#]XQp!
+SJ6e,-&dbR, T
+ 1b_+^
+҉ K FKVuԴڤ UF<q)_yT@EU!kPB1զO5Z\mQSZLĤ)Sk
+"_+c WwYX.TQQk5G2E01)s͔
+5 iR-/P!yGLLQesibWkΊXT"IK $1jU"WkmQ57Ya~jO#*.8SoGo%<v-׻Ŧo WG1}6s/>d N4~_;}ϻne:q\̯EKYΐ$6߾OS;ƙ
+#ǽP岲 ];9.j9%
+7}Icgcgڙn?)Q>)iqbsqt<'
+`&{x;v^QuzMB80ummsK#؇y CڻG7Y9$u/B^w}~5tXGu`kx%}E1)j #ԦQPqo gHxFe?YŠB?IB h+k>UJ!N0~cx|7o
+ 1]t9MAgpq'9Sna &s>H3afKC0d _gNfwhr0a_|P~?
+I"怜pfE{ЍTI?~z
+ذxgIP34z~/̽245$8ѻGPg94|
+r|3UOg#Μ?H~ʈ:P,\{
+KLM$Ri̊ſY~pxC
+puڬ󂀧r_M[ݻ)K9HkbUԉQ
+ߓ`SÏPLE +wxU]Rްs1:N<^QRIrU[~Xu5m
+N{A)1b;<_2us{Sc !w5_.n+;ƗײUwGW*=^=dS_J;Zz9!ZPz!Al[[(/7@=>3UVwZzoBA(F0pm۴L]~
+`-5}
+ڬGSrc1 <nVj-Ғ>?sy& qZ
+eIlH5OgĽ\_"INvZ(.bhMK MtKhvϽހ^z{E/N;Y
+^յ6UߵNO[oyT~"%(!{ïh{> Aw7pg18ő,pIVb䫧cY7j(鸾ÝO|z^Vvy}ФZ pfmb+ 
+=Ӵ#&5wWTXW龫>sk|agb[p~o' nQ;R}a9 N>iZ=WK"65odp*v5jcg/{r~Njqʃyo79?-z!L|0ے= ûOkr0}>Mؗ>?;l:t|=t@–<~Ly|rS`>c>(S{\`:o-?ʉv]9s=^ gv2(3ǞV͵嚾m?0mNO]/5=#n.7.6}~Lqdg&*/T YFW?,wR?wU Xt6ߕ
+gʘ㛍q-ry^ OG_>:aB{tT'g?)Py@tv&yoP8^|eMSMb˳-;4_=ܤzϟr
+\cad:ޝ
+]Y(8X47LK-UYXḇg76j2*XK)$DQVk2yIew `kf< ཎD8ks,~-5p<IK"ˍ(2 1w{`WpkB ͊|c 7gsS`QJÒKD{-k$2(E>;\i
+~3,Ȱc'jmEï'ms75|6C 16uz`會A=WM ",,hʼnWcQwkyBs\5ڃ"R#
+[9e2qiA S$\i, ܘn9Cjq:,`,MJU
+'%wjH\4w$Q#bJIKCnYl %j$2EF +1@d ϺR\'>w[s:LYrDQ9_KnRvܩ6"KVdpbn{D[ixRU;EYzDQ9%~-=mkE֭wYίɖUX\ :&~^xj߈V
+;'5CC,[hlҐy! SO1P$׍XKᙖglόpb]s"WLO
+ݟ$}W
+-H., x--%IXGd0MS\?sy R%|lXA՘wN/C%mE_fA&ݒhi=% PbEdB9fo}wUocGK [s[TS4wTOi܉^*cJ2 0C˸ʦ2~W%636VlU`g 5kvq.
+peBiF\*pXԲ_.b53d%iS2]S'X6Ѥ a.c\.qe
+J-nΰ+;L`%B
+Q./.E-S Wp<R8&ٗ7Ȫ
+4xHx~ Ԃ;HtqrtE8
+
+4V|EasQ?K V_dVhN)~@ֆ޴r |Div86B
+K [٧"ΌQR.z9ѥt-%N;[ZHi[Jv22Fp٥##%P'
+&1MRc+:U52[*)NX℄M\8Div e%pfY-(V.!w,KJIĕhr6SEb#%pRy@(̰]
+).-)&"G#*sJHa)ak*R86Q᳙$Q  ܮĤ9I x H b˳5 '"%0bm F:=9RaPK)@L~
+K3c2yΕ5%RѰ5L>'%"=҉CZM
+Xv,) V^kf8Va-MOHCg3T0v2=]K Dla
+iwe4l{9%R5BN-( Bppw҉G<^OQ- H!QFӢvr꾨E6SEb#%pJ Y=s_
+k믣`9|?bPyf Y4Bu*X+kJ4kY_`s0e6Ds
+7=@V4]QoR0f ~T_͚p%9%R()asn8@0/ѣ
+\+c҉'Z u?.O&4;hW]u^[S"aGK'1Ǡ٭&G=:XNfKfBn[x(PnJ!A!S]b86*
+8uj)k;<|0(5_EX$h#H`^(._5|VJ~n;Xz++nau-)GI jEAx"`S}Z:eK@b\5 D ɚcУcW#Axi*" W2Si@I-xle~ȸRɓ5%R()Aasf(>7!'  C u:xRx@b믍s,R()asf8@V0#^Ge"~@_пOwv3MӃ{GP::Utlh3pώ0GOI;,S:Mӽg<w$:o7҃C@ƾ;_z۰E~_
+?/o5-u?
endstream
endobj
-591 0 obj
-<< /Type /Page /Contents 592 0 R /Resources 590 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 548 0 R /Annots 595 0 R >>
+599 0 obj
+<< /Type /Page /Contents 600 0 R /Resources 598 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 550 0 R /Annots 603 0 R >>
endobj
-595 0 obj
-[ 585 0 R 586 0 R 587 0 R 588 0 R 589 0 R ]
+603 0 obj
+[ 593 0 R 594 0 R 595 0 R 596 0 R 597 0 R ]
endobj
-585 0 obj
+593 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 425.532 553.81 437.487 565.765 ]/A << /S /GoTo /D (subsubsection.5.3.5) >> >>
endobj
-586 0 obj
+594 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 378.344 499.119 390.299 511.074 ]/A << /S /GoTo /D (section.8) >> >>
endobj
-587 0 obj
+595 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 198.474 435.908 210.429 447.864 ]/A << /S /GoTo /D (subsection.12.2) >> >>
endobj
-588 0 obj
+596 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 458.926 88.775 469.383 100.232 ]/A << /S /GoTo /D (subsection.17.2) >> >>
endobj
-589 0 obj
+597 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 328.62 69.846 339.076 81.303 ]/A << /S /GoTo /D (subsection.10.5) >> >>
endobj
-593 0 obj
-<< /D [ 591 0 R /XYZ 78.37 808.885 null ] >>
+601 0 obj
+<< /D [ 599 0 R /XYZ 78.37 808.885 null ] >>
endobj
-133 0 obj
-<< /D [ 591 0 R /XYZ 79.37 408.994 null ] >>
+137 0 obj
+<< /D [ 599 0 R /XYZ 79.37 408.994 null ] >>
endobj
-590 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 380 0 R /F29 371 0 R /F23 375 0 R /F51 376 0 R /F57 381 0 R /F15 377 0 R /F55 379 0 R /F69 398 0 R /F58 382 0 R /F52 372 0 R /F40 387 0 R /F59 389 0 R /F46 388 0 R /F75 594 0 R >> /ProcSet [ /PDF /Text ] >>
+598 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 384 0 R /F25 375 0 R /F19 379 0 R /F17 380 0 R /F57 385 0 R /F15 381 0 R /F55 383 0 R /F68 402 0 R /F58 386 0 R /F20 376 0 R /F48 391 0 R /F59 393 0 R /F50 392 0 R /F75 602 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-599 0 obj
+607 0 obj
<< /Filter /FlateDecode /Length 10103 >>
stream
-x]M$WQ:t:MFNۣvXݼ>͆׻6'_0I
-;쑡/Ft_br?SH&YɤJBR KHՐ;RJV:p!3 dZ-f.a%AHS&".@Dk8vbJ
-Ѓ]K"h)cVplǘ،9
-M%3)ci1k(ECfZS]#QcW"-*.6ڙAAMXKgRSSI. ?]:) ̀1,Nf$8T\lnA:Τ ~0i;c ̓V CMCU!)*$CIA
-oڱv4q >-B$u/
-lvWY5N?`_<IsNȪ>GWU_!uQf6{g>Mov! [[Fe{ԫ=d5̈ܕuj*f}QG^s1U[o8MM(B[ͿV+vo|ttʷb
-\gmC<lN1fPĵyGRPW{G5ռWU,ng;ktݰϛ߼)P&K9|7{>:-O>&+ٲ];H"o'~SS*J;|Z47;<xWV9ˌx-._-8 ͽv{ѹ*v5WY],IR7K#]/x<m"L9{ Z.gK'b9d '9O$m!fKSqY#32S= P2a!
-,D\T`!?Q|R@aDKۄx8sKLzuGOzt8GەOrQi|Ai4-
-$znTrSɑPuGG58Ujnu&<?R9hZ#;j5'"<E q7'D/$
-HxA -PWmx&h\MsYy۷"9f}Īb29"%GG hh(0/g
-[RpE"C?2/B"ƞK;Q2L6Ԅ
-3x@ܨT9A~ P2
-EED 'w 3viP7 he92a"A{3yk1RsSa; |$I6j7E)I P`s I=Ff.c;bFę<" Phe) A K>$ۄQ&$ʔ' 009aQ{{cs;bI>}bmPo-%*(&+R"@k3y2r!yq$> }H6jcI)M d`
-|4IHe8.'Ɵ/hcY+|^^~S"@v5ulGj| stz5y׋uO)/o~IRw-.{{Y=K~)kqyXy -q2`7˽ @m0P~P%R%*dgH\ۧ
- <p1U6iN ב(#6w(Ra'. ]C5+CuӒ}
-WAXcgֿT¯a맙(.A>={,8Eܽn$[SZG>5KN穕@ =<,7|yDʠ FS%,:9nChA@0R4J=k뽯_u;9&<L|R
-{
-[W>aХZGh
-zcΝ]A>is,{r<bKZ9/biѝ, zRYԧx;#/mqlI8gX6cw;
-3{-kRJb7a\Lbcmy_[oٻ[c.l R.]{gAgSvam |ok_`5_Ieļݍ{Uz(_/Cn(+uKUpN'*D}K
-.'*DohK}i.>elyܸu>SڀvքWv>sC9ݾKmӮKO89z'7ɮ4DxhO j-1 7QI&mEH.TK;4_ۥXsX+,zbbvx戈\o.ޥ\-bŹQEA@E(Rq1w;
-2KչXtj VMDElJkP΁Z ^MgB%,lu쓫TK 2skWPa!zZs,b1T5-]W1JCA9`(ְwNWXŮxTQP9a!;JLݜ֨ߡ]DEd9&b)WwUWXӮxTQP9iY;-D:~v@#HM@8:fc,oWַkRb;RUů&UE8HF&z]u(* 9}+e/ lF&TUP(k'r=J=;.EayB>LCBݑlnyKb
-$cdbJq.p`[u0c0b4z4z4z4z4z4z4z4z4"@}Ayx[-bx@Q9iҖU5N+d
-5C
-5C-:_uu$9?H2ɩ2RIx2!fCR4.T %
- ۵44dECG[RAEr4>T ܄{%
-$V"׺<L4(bD*PԚȋj
-YH|( ,B>̫*%C7Ud3r@E; heēE`0ќRA,"C{;ӛ ޫK8o'}¨^;&UT0A4LUU8bq{~G1"[si$
-Qmϥ  nO ;TWheJJT{ITU#w!?vLf
-pc$R
- 5@D̀?v<
-&5
-G,po:Bcw
-]^4k
-l2ОJ!1$'*
-&v|mZUA}{Ȼ bw.stK|`82_ЅV`.unw ^`Jd5uҜv{n튜H' .8[RAEZ.y?}<}~@-SA&c?Cy]qz<ޗɔ\#
- (tɿ%\Yk] nj-_u[ #ۿ|DOҷ:vS5Ef~=
-{/vjU>ěX}3wP[mcX\1vjDXN:/
-VcQ
+x]M$WQ:t:MFNۣvXݼ>͆׻6'_0I
+bXW0b\.ŅutL+Fˎr3f^_e]NM\2́45tTx<ɇ8O|4 Kݪ%CN)~E.IE۵%GLYSsNe.;{SCv1>Ҹ,{d(&]v ez2iг-$D:R5$頼D.\H%FK#CnIkdzҔ <ź } @J^]7,@5FFL3X%q;!> q!4M y$nzE42(ڄr~Xl3(ۓ>U-hEc ;0#ED#3(u pgEӖ 90/r' 9!iYa;Ÿ @") (d8JX7K3Ee}c2A%E9|Pj
+te}lFG($JqM9exfd#0yrԪ`m<U֧< "{#%L0}KͥLl
+L<13E(P)A-v&*al)Bį́b JAj N 쓛P<L) vgBYSj&-[ODi+u_B$mH$EMdڸݽlS"aJODtʢ-*
+.6KU\Xt_O Rkt2Ih~ F1 j5Ai:Ef48U\ln3FU肴%ifHZ@8Ę-1&66dN·tb LXlZJQƐh!a
+ÞӁ?ߎ==ɗw+p~
++TN'l޽O~oAXyynGsc[Ѳz8h;(DRү@fweU^Z?54zstQ2_oݎhmW~cHY!ȾhGUeTmNsL]Ì]YGb|1GS6~][>"d1u;.oe)١mWH>L|+ڠU{&>D znE\x~y+y5wt_S{(]իv{cy=LιvK7) K8" eĝw3zc2m-ߵS}p!v28E=ç%IzO~Өnswm3x8'RRNR./;`ib]}u)UB!-u+;}Ǯ|Zx1&„ٰ"z־~R)+O~)ޏ;1쾰4Ia־
+15mǖ}*1zZ29
+EYp5A޶gҎ9E\͑}+j6G*&#>(RrT*pԜVȎCr}"j״:k*\%suG[*jXP%+^$2T ((k.b카c!e(dcKMLy!i0HhDʍJ
+1.cs~>|QМ пwPM{xW%'ڿ*2_[maV
+[|
+k:ܽ|.ϚSa?n[ _%}MAe,ưu%ߧ"ִOGסS3t:x'`y jYƱҮF)FTv
+v%o7
+MU3W'}:>GhzQEK_~ -r|^6
+.D\T`>Q%D3]]sriCo;ŧm=ߖV1'vBCӚʶ9'v6x=yڵzIG3?G/:Ցc %5S&*ڤ
+傊~ u@kkEbkUE[=@T0o:1\ ŻE,9W<(\+.洠\ *
+ 6û琈\~޵\,5֠TK\/2Z.J^`άǢlr1x2s5BT1-6CQ[9`(V!c);kX.@T)h}Mi9{J90TkL!P}rRu_bZ\gV} 1 65Y8<oXk$]aP5@*Պs1et(_P#Ps;31' u""v.j*
+j5'"dGi"u;K(,=D  v.j*
+j5"kѣ:|`]PڮUyGl*w@
+!X,q\դʰ}٤]EU$g:c%ד^5YÈD*jeDVGwU|QES`==O@ЈiHUy>;̀t1MtOaILDw " _L6@<Lw nfs#CTTTTTTTTT_3:H9~EL(2j1"QڲjƩz]  }u̔'JXe-7rPJw5_G$dD| m` $gK͒hL7f%[-8T
+F)dq;P#񩢀Ps; `Q"*x.mpHBD%fGr" SQeFD, \hhWk;ܜ`
+a d+[UokD P#R"T1$mR k960$qY|Ӫ]{]PZ%@HZyP@cRn@_\y4>s@L_i_Y[>`U1҆M(3*U0bM!ہOۡզEhGCy5v|QuHFlr^hx' ls=x &S5EbbTd(boyz31r{s)? OUkѤʔ#
+&5@
+G,p(Bd~.U
+ H8R!Rc"C!21<
+إm7x[i̳W7&n09_m9N]`qd/c$?\~y6ZMM~N>xxc/S_'Su2%ȭo)JF1]/{xnK}V<90/=~__|]iTMuwO1Bދm(c?&֮"rcot6֬z WuݤV˴3:noIO;Js{pwY1^qV~yp{3L(yS0344lv5Hn[ی?6şn&Z.kaI\aɁ+Pc<[zdWlq&dykZ.UVҳwdȿ5ueJ[cD]4]{˔ix=z=滶uCcm_7]gg4 vnS7+mdw#de=wrA'sFl#Y@}L{LlܽArh=k9.oPB+X{OW ķ{93Ւν Qr}IX:zk; oiu[*!W[&S DG\
endstream
endobj
-598 0 obj
-<< /Type /Page /Contents 599 0 R /Resources 597 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 548 0 R /Annots 601 0 R >>
+606 0 obj
+<< /Type /Page /Contents 607 0 R /Resources 605 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 550 0 R /Annots 609 0 R >>
endobj
-601 0 obj
-[ 596 0 R ]
+609 0 obj
+[ 604 0 R ]
endobj
-596 0 obj
+604 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 207.697 90.241 218.154 101.698 ]/A << /S /GoTo /D (section.8) >> >>
endobj
-600 0 obj
-<< /D [ 598 0 R /XYZ 78.37 808.885 null ] >>
+608 0 obj
+<< /D [ 606 0 R /XYZ 78.37 808.885 null ] >>
endobj
-137 0 obj
-<< /D [ 598 0 R /XYZ 79.37 276.233 null ] >>
+141 0 obj
+<< /D [ 606 0 R /XYZ 79.37 276.233 null ] >>
endobj
-597 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 380 0 R /F29 371 0 R /F20 378 0 R /F15 377 0 R /F55 379 0 R /F58 382 0 R /F69 398 0 R /F23 375 0 R /F40 387 0 R /F46 388 0 R /F59 389 0 R >> /ProcSet [ /PDF /Text ] >>
+605 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 384 0 R /F25 375 0 R /F16 382 0 R /F15 381 0 R /F55 383 0 R /F58 386 0 R /F68 402 0 R /F19 379 0 R /F48 391 0 R /F50 392 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-604 0 obj
-<< /Filter /FlateDecode /Length 8678 >>
-stream
-x]˒嶑+(DOtԎ&<~i"|d@^խ <@$@\ 7T.uɥpXp2{u]IO??gx[2&[??vn.%}jmؗ309jØcr}^3]..10yt^R'Oip^[|+<1ԜC</J.C "[ KqiU'}gc}iû »~i]C:tw@ֻ)i\њFqM\N|?+ڤ%H#}|xr1o=_^ZOq/?8̦}=hm >g=3G3?\Cf9-[GNp;)DVlڏ}awG[8]q tM:ˆ7ڵ|^svbC9 V0bW ,lۭsHaa OX8#ZXvzZ'Pi(]Ó} \;_>-ޑ'&'Q:];bOV;a/L܇'KtYF+uf|sq_ڇNc7H-\vS;H,.ޞr>OwOAR,)}>)S*U;LS~PuIήˏ?} eEW(|oHYjTN\q>]K #q<Hcx'^dj&o-K
-4|(6=?ذc'#~
-ɶ:qq|! :N6:'\
-G`XxnȠT
-@3m3Yan\aH4UdU8MLqkGBn3S
-P #kGUƔ&O#K`MiKMBXcҮHG!6x;?"N[ LLNKIpDO\,[KYS&E[@'; K(0BD}=4 ][OܘN` #\ M
-'݁ʏ@%blR9v0`J&UTjv.r L6 7b8N0sIP;vnӣ("RJJx,VȢI1NX#kR~ &E[ E@ ''~ Am5D8p <v0Mx|m+#59/= L!6 7be8AKIP;vn("d9k±>K Bfg|{8֜,2
-%сNۀ%na!YOfkG&(N0Մ7,} LK6 ;be<QKIP;vnӣ("tŐCaF0#9~ɹ\r p d.`ڤapőPH,Q pkр
-+`iDLK6 7be4!KOum(RKJpTv`eLLLL9l8N@S71AKa!2ckGUx0N7`.L~1Y 6)n*h(@V57;
-EK((ϡr89B,VW򴚧kX {XHYcen(`8@Fn8;1p΍FX0B'c+1XS L+t V{XCcT;l<NPs=82 K(0B֎LP%`jVO9|^c)#V#cMx;="WvHh,T2@y1vDX}W+VRmRܰUp8P~G$ QHSJ)LEo
-lm'X+;+ }HR8enp$cv57v0t oGQDsaoTS6oGpM
-'فNOD۠%rz6
-' VzY2r?0x&SÓ\`bQJ(5)<&Ǥvt *=#U8?^v['Zh}tMTe!2QͅU" E5?a(8l(c%K ]WX *
-UǼ#)d;挠Gʽ(2iHk#cU:#aM軏We>#9( $&u+툺GnXyGCh 1DU+fHIH~C_lBKoM8ao}h)qlRD:GD]NJlLMGH31;PяmU k:,krvc >zWKwE)]"l
-L4[tmR/
-'݁NP%͗eИ%C]L5qj`B~=Mj[un݁NP D5
-v%pJ8w}`1IR-9SMJVhq8qq~6%ŗ¢hsFAnկP[fC~KеIV_ȭ5;phD@Q.8Wɖtl%Rʈ')RIa- /vxbmnױI*&'&nw|qڱ&$kR`ll$Jx`m%Ǥ4]"Nfʢ!PZ֛đH TbFP(CJ*eq@ EMe ]GqBpUvQ'; nK&Fg˺Yn1CѲɧn͸jpaV)٠R&E[@'( Cm=
-/Vb#R8,K̒&hARh[IM
-ÉT$MÕjI&C"rl%bDgtf_ 8, xm R&%bpőaH ^GQDJn^ӧg)U30cX^~ֱIV45;iBG9EɺrJU1˸)L &AXC
-ALJVgq8Qqq܋G!6xI("bki+PPs]+}΍:(nȨk-
-l>[IE0bńqh55=lRDR赴3Ѕ; ۞8 PI֓REq=-P2,,DaqZ&59a! so~KQ#l?'fWr2cB`t563y:+w*Fi5ҳR860jcОƧȝ΂˃C՛;j&f;rEɻi#u)+:_>NTRÕ$ws57]b:!T}@,t\rԧYUn+#q5vUK>4񱷷nA>ՇZ;[yތk[#w礶]etzXr
-7qKThY>H>6 Yx}ITk{\a 񩭕i-|sd`
-<J=ܼF͆ło^a92Αwo<(v諨L:țv> 1D3`
-oYg7Pˆ(&zݭm"]uiG;y8wOk&kpӾuY?&ǽ
-а{j΀Iy)swFG8sdC2z+Sq
-
-֒G e 3ߐG2wmd18_a{%bÞ
-+hbW^yq~X%?ӹ%;VJ}~/79ycnppݘMiկ+j7>&pb#b-mpR^771_u WǽYJk );{+eӋj
-,#+zUmv({$dg;d5{p}W2Lo
-8ZjTĢ `PZĭ.&D
-W"l1p(-j6(/RH3BZU+r#C
-P8c+ū6$YdJ6(-%Ҍ`
-Z,B JK(u4#$:3T_0%y
-NߨeW{=95EAFA(8Ai1A㖚xd(lʆ2R[
-M A #0 \pNFyK-_}R7W:>ܨfY3lV^-άNS{$:cWbծ$R[ze+@N{HgJu cq`
-m
-pOGWzշ.Ձ~tuWt{R^ab|zU l*7Z4YV9~ -F0D\?RmE' AgiWO\H{% f(jm~~w
-D6kvd" i-b&&
-I=@i"8'9Ќ3~vզx`#Jku`<ƒb)Śe@&ɞBjm n-qjG3^PH%obN B9I57z%i"\MP$AI dP^FK !!
--BZ4y׺-bPS!l=E@%n-s 4`#$ydX0z`1C* `W^rUH,L8{=%Z:ЀU`v!Ҙl>~i&SL% -6(X
-K(w 5!$.
+612 0 obj
+<< /Filter /FlateDecode /Length 8696 >>
+stream
+x]˒嶑+(DOtU&<~i"|d@^խ <@$@\ 7TKLRo,8|.^~xcsƤ  3|[2&[??vn.%6309jØcr}^3]..10yy9sn\qֽnSZltp<4=
+Cv{i9{?C
+h%OpY/~n5,ťWӯlݟg_ ?7{~u AY ~~pyšGkV=ĿI4qI
+|8ĥ
+}c]cO ~sY
+?./R{Z,>7W.Ol05H$.O8Rbcw8x;y>b"~o˒B< J;`Y>{įK{(>BL 9$`;
+vr-7d[k游MqCZ'U H`#0,͊_p}lfdP}RK6晬XH 0u_L**XOG8Q!7)I(K]q摵PUc^aŧ%&4%q &!IH1piWS$ #Ðp F'gk&GQ$8f'.ݭ۬) jnwԎ%z! jŭ'n'0& [  ~m1
+
+']͍$; `f)%|l%<+dŤ 'v,̑5ehG?c" djt? 6X"d8UVZ;w&k<6ΕYK2 Ǡ]͎$; `p5Jx`ZsХL!T3]3=WkvFE  g'Am7
+dhK j{Ti>P}%L2 Ǩ]M$; `pbHFB0ZK BǑ{.92I0mRUp8pH($ QP qmhQԊn"@r%L2 ǐ] :AX ~|l%8*c;0i&R[ M
+'فNOD۠%r\PӱSV*<EtyWRz&L7l4M sIGۢ%nECP9[h!+I@yZӵ
+=,˱7l0K s7vt lF#Q,|,F)qc!1M
+'݁NP%z!ck&Y0t+LB>/1II+pZHڱ& F+;{h$4*c ü;vr+G6)n*`8@vn(?# lJ($ˋ)ck&7`J6r̕ņ>$)2 7be81KIP;v:܄ӣ("}NLJxӷ
+Oj~*`)_Jv{&[@'~ Bm9E=c+=,XpMn<
+r]l.C0GdǚJ~rcRM;v:*/;Гz-?^'gYATsv
++Jثv_Hպ-Vh1H#w1H
+َ9#lǑr/
+LZa8H6>XvyU7HXUYO0Ńt@,ʴ:I]J;c۵ֻ;h:H̤l0QESk3
+D$/6!y&Aao}h)qlRD:GD]NJlLMGH31;PяmU k:,krvc >zWKwE)]"l
+{X]ݱq1 v;( c~?Cu5)+)* 0H/*XaFdu֯@Z[DM6HI`(
+;1Ђv|Ewy5@eΙhڤ$_l<NPs=82 K/Fgc#1K6 =.!k⌕+czL9l
+Nz98
+6%j%Jx+걕$Z qcn[esGq"pv:mBK/E
+"ΖulG[ beO!ݚq*@;
+'݁NP%z_5_F"
+uqX %MTI,DFq3l;H(?g+ՌM
+"`EJ鮏;L*qXۖALJVA1;0 #ÐpDSܼO[ z1,Sf*8` ư4ý\(cb hjv ~6%ru%㱕Yb֗qS.L&Z`fKڋpv'( CmKQD4/Vc*)`g1W0ZudQܐQKZ(Mpnڱ#hČ¡4o!JUz}0
+N`fsɕLJ Vѯq8QqG!6xI\#' .:SϺL⾊>l"PmTS ֿ0fsM㰊p
+l>[IE0bńqh55=lRDR赴3Ѕ; ۞8 PI֓REq=%]Є²~<1ٶ ]ñu/KQ_q9CiYLQ|"$ZV9sq?$yѧLB},}:%1,nIi5ҳ#%?TYvq|QBβϾyj5F;rE;_uG*::n"q;UBہp&x.i>$WVE'ۊHvՓ+(^>4񱷷A >jb;[yތKs[#w礶]%t4\_?!ׯxsD Qi᜕wIM57xՙ0Z9x k(s{%PI<~-e[_,Gpu`J!G(.WW/4y^U/-%ۑ7sqpbbywOoK/Q%Q6UEӔ6^G׵tc_s,dDQ:cnBޏ`L?][׹}T,^<-7spIoֶw
+<*ܼF͆ło$^a993Α(v諨LXț>1F3`
+owg7Pˆ(|m"]ui;
+לq)}0Q9"Fi7/aw. } .pJϟm]`U}eݻoy&/aP2x<{8tgy%'Y)-!| _,|rU$&C&7I
+>vO_ZO i֟˹Ӻ&e|Pk/o
+>Ov}p=G
+H_]|ۺ]1qAdeI.%z$%`#[bpeg
+%"I^LPi 9\[$ˏ-ՖvkK#
+;wFR3~k\p)ɦ\br-5PbQtQ0P(I-tPbsH@"C
+I% VJ
+6ݿVIux_LKVR2uEE@%&n1!A{81.d(I
+;k5b
+Pɏ-6$Y!dJR!QjHpi4b1! `G6P2z&a`SPEAF@&٠ך9Q_HdD-DU#L/nr "dQ0P(ċRH3B(8C5 YGI4}ZF:pד\QNYdJRvkK#!;niMGƎ&l-#K@.zޔ 1
+ 1$nDraɞa'u{sCij(ZejaguJE#a%jDv=Ջ,hm-:-@]
+PW?ۯݯ3%xǺM1jY
+pOGWzշ.Ձ~tuWt{R^ab|zU o*7Z4W YV9~Ĺ -FD\?RmTEA/oiWO\H{% f<)jm>w
+Dkvd" i-b&&
+I=@i"8'9Ќ3~զx`#Jku`<ƒb)Śe@&ɞBjm n-qjG3^PH%obN B9I57z%i"\MP$AI dP^FK !!
+-BZ4y׺-bPS!l=E@%n-s 4`#$ydX0z`1C* `W^rUH,L8{=%Z:ЀU`vӘl>~'i&SL% -6(X
+K(w 5!$.
+Nb20uДڃ谴2:R6J{n#}'|iKM㶳Ys!H;nmnWvDc VRVOgDJ<.rbVuh~.u ع-n'7-W&'{M̩Hߦ!2'*̷c6ZjE3OQP7RVxFH%F~wl>kq̀]`IvҮ OFBE!v[\OO{u^9F+YgܦąV7OL yo3yĖK
+?oO쁢bGKI>^se^bY[}
+XR
endstream
endobj
-603 0 obj
-<< /Type /Page /Contents 604 0 R /Resources 602 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 548 0 R >>
+611 0 obj
+<< /Type /Page /Contents 612 0 R /Resources 610 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 550 0 R >>
endobj
-605 0 obj
-<< /D [ 603 0 R /XYZ 78.37 808.885 null ] >>
+613 0 obj
+<< /D [ 611 0 R /XYZ 78.37 808.885 null ] >>
endobj
-141 0 obj
-<< /D [ 603 0 R /XYZ 79.37 460.075 null ] >>
+145 0 obj
+<< /D [ 611 0 R /XYZ 79.37 460.075 null ] >>
endobj
-602 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 380 0 R /F23 375 0 R /F20 378 0 R /F29 371 0 R /F15 377 0 R /F55 379 0 R /F69 398 0 R /F57 381 0 R /F58 382 0 R /F40 387 0 R /F46 388 0 R /F59 389 0 R >> /ProcSet [ /PDF /Text ] >>
+610 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 384 0 R /F19 379 0 R /F16 382 0 R /F25 375 0 R /F15 381 0 R /F55 383 0 R /F66 389 0 R /F68 402 0 R /F57 385 0 R /F58 386 0 R /F48 391 0 R /F50 392 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-609 0 obj
-<< /Filter /FlateDecode /Length 22480 >>
+617 0 obj
+<< /Filter /FlateDecode /Length 22481 >>
stream
xݽO$%xO;O
R)ѭBl5O׌=GDFJF]/I:<>ߟ? 㼝5[jQ_~##|Ǒq|οП?_]xae2ğ+7aBky1:P9;sɓs+/8IӗTˏ%eʑaӳXNrHuD-^)z=I~ #sߏ2kYg:v/:v_BU_U<)o~k0tH?ڎFMI+._*(+*:>RɹzN.)yu;PhjT+X^FkԆ?Z?clL񷏭R;p|yo{qKga\u
-9jwo5*)ȭDx^Gծj\ڸJJa_3/9~ꚋsgQk{*^nU,[r=z}ߎ+[;\6hs\??_7o7˲Uo9}|Iʳo~5z
-qǝX⭷~|}OT3$wOٺmLY*c-)pPn9o"w5;mu)ӊzzuȷ=uF,K~|XNW{|؜g=8ۑgBOǣ!O;C<fKomjyo-y*#ܵ=[j3Dc|xޝ@G)ƃOwˬTPy<ikH(zgnOCV{>IxK6!!Q[G!ގr>9nGOCh~ y.o ݠy.帅3= F=!
-uW3s]RG-x Zt =ڪy)̄3R} ~J..pKq;lm6ӏzy;sN jՑ7N:uި:1[Kyk ֣Sub\^u2Т/ߟwY^:[ձRsq/jSoU/,|-­lbNVe *'SS^;󝪜Jv~G++3qq L=>kA=5L_iżvg]r7IޫrjU7r&6wrSs֨wjrN:;j2w{8߬əR;S|&AM~\J
-q+ό\P‹5{wjvyPTߨwqBrq˗}븴e<YW7 ߷'ݽD/%P5]F'%Nx]N8UŽSo.ɷr> ynf_ַ=m&<탣˯ws]>8=YjyH5;5a/bީ9%?:=(alŪ|:{_N7ztǝ{{4f#oT^Qý޴L'|;JvPgZ4ZvlrޑMHW;Z}@;ӛB|&K5;!wjry}&s7`̽z9rY3l8ߩTȋ3zF
+9N 5; f fԔVN<ak~ɣojnZtm\ww_0/ߙ ~u|wwճ(Gmڵu=yGNkec{/7{*eS{yF9_cVo\yuBw9M~׷eYԪ>K$\oٷ~n=GO~,[|t?{*l]Oo6]1uf ooqb(ݜ7Ol ;򶺔iE=|[hu#Q0|XNW{|؜g=8ۑgBOǣ!O;C<fKomjyo-y*#ܵ=[j3Dc|xFG*4ξ?az[/S}B=<>z!9= 9X<$i.ۄDmaz;<=< Q@8R-T秿Q.t織4$𞆤FK! D1mX
+=Z
+Q ^>zYPǗpQ_1R?>?, _?&ռTFj_J&ڙcLggD5sw( KBLwK#q;["_z@U1R gojVa\Aa]hvw,bulA^wZ+uUժ#oTHuꂽQubGna\h],/V}9՗ )׷*Dk>閎zFw
+1WQVߩ)Sf/yUNNUN%J;LF8Hv^UyA絠NN4ib^_YX.U$U}U9|k|*KU9s;U9BBߩ9QkT;59B5H߫əR;S|&AM~\J
+q+ό\P‹5{wjvyPTߨwqBrq˗}븴e<YW7 ߷'ݽD/%P5]F'%Nx]N8UŽSo.ɷr> ynf_ַ=m&<탣˯ws]>8=YjyH5;5a/bީ9%?:=(alŪ|:{_N7ztǝ{{4f#oT^Qý޴L'|;JvPgZ4ZvlrޑMHW;Z}@;ӛB|&K5;!wjry}&s7`̽z9rY3l8ߩTȋ3zF
+Ezټ^#=bK9G# z7F帶GG7@~@X%{5&wjr{5'ީ<)/ƟWeMF[-2`+C7nK:w?[k۝7<nu7qcensxRKPڻGKwjWNyx^4o-sgn EVd?'W/sgQ/`{]|oΡ~@c+s V;%Ł^@), |}8L<,7~3 4 xbo o#^ҁ~RJ+Sީ2fzN:mZu
+~[>_#*>%5UU_U!UՃQ|U z_U=
WUBG!UՃA~U(z_U=
-WUB𫪲Ub"?=/>DU텇=<r d 8M.~wJMu(e_~w@W]-7׵_=Y<ɾK7,V/ZtseEqk?|\ɽ2qwޟz#YBu {hj)ɰuS-.k>(eƲ4eA,]0)}%BGTӥZ%4G;Oq)Pi CYJ t */*Pe~Ԩ| /aј`
-04VsuKQ^Y( ]!5'E!&7-?GXe0F/E{4IT1@xѭF$4w <UAj@X;yMf 5([_ ]!IPP|^Fi.tʋp5
-4%]RZB{gz =7J+MQV3PbBWohX]TŔnV䯞W KuݽJ 0(SJp@Kfi.t ʋv5 d+~cTtF knBX*G b^B{lU.4VPp1
-E%!={4`⽌^hS^"T#U
-괆>;%rq
-vG,{K~2ގRl@ݻM1+MQ=BT6*66^r*PR<rHP & T1@xѽȏDw?/gK1#Uo)f \bͦLl
-
-mNe'P2"F`k=5@0 EJz`9\9k}<-ңov\H uM}阁@ij40G#{Tw}9|oTlѸ/zЏcH,F
-f@fܕ=l
-Y&+%๤ұ"!o/Ă.%XpYK"P7dqMM:d A qh|]I;>\dgZ'+uk,BrKG pU`&md!e)Ճ}T|@Y謐m嗎0t `g%ml]Rګ ?h.
-u%$Z7t<bns@kn@:HQ^}-%p("qN[`YhDWF nX:K4pY˹Y$kPWIq3NW_nsFk pQ!)ńNO^`霃KS D:11P[<ݎ;~`(u%)Q6KGԱ7QVGW`+ ]}duksg rH\ǒ]mfA:
-*7hjn(>28ܝf UJyQ~u'c}WH*<INAG>fީo<x?dJjwb)j"Z2&S&\3>
-ޚxwVXA֢i bsB*‹hE=w `m{!msxrDgӫd<CЎCzj}'rjt-kԵ"gVɴUR!(.b/X[H@[e\E*6P*ܐ <%HZt r;x6F-raC9d6U2mPl!=JxQ|hoC\o9m~JX?SO0Kzհ1xcC[HtrC,@}W
-]F.(+vZ3`Y.t9
-B@Ei^WTWsV-hsA]d_}C~5J=<E|;I_٠%, IgC:fZ@#f+g,WUJUmz.s/("bE{V)U4[GsB{9^GۃKmz/5Ϝv܃(`wjT
-n% i>q,xF\#Be#M`w Cbǩp^-1jcB0jUҫ1Co A&bkTF '`ִ,͐JcECiZ1«]mam0 m5Bi]mjecB0*Uҋ;=046
-A3}.t
-`P(q(o#LIԅ.Ar~j]ID;O;t)i˽,UmknIw}Zl.+$P*&,҂%QW@[:B…6u9h+}loCؙR= v(AC٢l./o^RmǮlV`+ ]]BYJcxJyohԋL`,~2cp6M499@R\+(56c17zr ^9B(HTƋl 2(Ԛ?$s]8HF1^\FJ' .\q$U$4h-
-b{C *u
-srPТٺ!WwzepH'#zQ gs<bhZa~%{MƹW
-j"6RQh G
-snK=ʧTRH)VA>ו= SC*CfJA *sQ*sKC  z~sC=qC=BQOQ݅8c4h- ' 5 [\т}W.T(E8h 5il;<|EkcfJsf|xXQ-3GPkgljEÜƃJRP`+ U=J+W@YR x[?иQ%
-;4b 2[\ -PDJFrB,
-9]Y (e*㌸+u
-S3 yޯ1+GXO~fu2 1>#4h-Nک*qת1f
-^)%/%cv^^`=2=Ihwbsg7jW'=L Hk-c{L%+hu.s@U.zu#9 E'2o^vN
-TƦS-A k7lJ]T⹅PtrC?2c-]ϕJBAR^Y@"nR錩>
-l(\yCl\m@`<Rvg{ IBkHr,W v&&Nvb:ԤG^Qg %^sAYrfwn~AcN ̼/=hΠYP{.<@ Hʝ @t^//(`J xj. J״u2 x0:4۱m4˕k=ҭcw<+W ًp&E]vx&vAUob:j
-wv㤜Wq] sP^4vJfr{81 (q.t"l qzCqwke4P0V\+W
-KHA0!t!ք5?cqR;)S: #>Cm!F.*%~ ϱ0{>gz 뉀[}XŪ" rIT|ך.FXN^ &D8a3ױР U z92G7Ƙ+ʹKW]9x.~r=% u,b q,%$-19Ӂ0NOzhO~ss]ISګjE?i)|ya`z"x~Ky %ܧԴRct$OH@ qŀ5{FL@%@rPTtUIg?|H|D4ıu%Bi`3a~#=w7[Ȋ@t5$F`UX2grZ"_~ R| <FK`:y8Q﵆=~#J`8[mJ9( 0d-*(KX4X\^W}RM?.y\yI_d@
-d>I-,-PP;0
-}3ӿ⥄Y]9y,p \ןg>2<'3I`8Jb5E_.b(r|ut/cjw[A8xu:VQw^!:gr
-ޅCWۑ|2Ro&j9& luJOP(v ? ExQ,˕+!j|oأbn[/:dUMhbi P vp`A
-z\BQfIٳ+
-PivY҈J|L08xu{*o!iDXVR5N0By+&Bu<;=(}#(zQ%Ew->"3P x!ֱ:E?j8Z(JA{4!PUEMQ'>fҞU?-We}F^*?xt>Q/t)&߆^>z>26 /'Lm/
-<$1,^g
-0JaPD]jW<]Q?#o|*wUܧ;Cϴn_T 2tҝU(`܅䕊BK~~<UW+
-[BXZ?*AR~-[%(/,򊃻9aQVGh@KmV/g]/*Vlk)U ^tiBC81zK.wUx\:0SJ0@KVi.t ʋvZe+܏1'(M؂ jݓ7bO} {B)EMҙx+d9BjƋl !5 ѥB{SM?=uݹjX)m|!d6N[%h*.z+jF!Uc,@=寔$6^$[st
-hk$M_zHؚ!(jrDKMdڴH1&!T>c<iS}O4`93Z.c jP^kR1`DGz~=D_UyCx)I1o4-BeH憁KmRetSWQsP/Aq-jݜw 0GQӣtZuh2׾%V1f/<cѥWVvr㑷o>BiDgl2{ U=F\%.ze ĸΎM$X7ggR$s8DHBFf~wf8g\JCQâIgf@εxtLJi!(Ret
-F,E %Bw|:ܐǰJT.s,I2σ2M
-"7'<RlX
-E[47Rʴ &:1]Bt܉Efn\_
-"'s>?!-]<㏙V\3J xphfe<l-T E?`h `<>?|Z
-wh>B7gDj>X2M#M1gH pw؞⢎7GL5
-U2"Q0^  Fk !6hB<ų'Ly#VҁX fbʫ2;WJ{tPճ3
-ifnIcQL.M̢¥ޗ#<AEeS]Cί ZH0G uc4 LBx2FneIƁEvQ,!y
-m0oNyf.rM$
-UY\f6kt7:#tl= Չ4{3RY.*Ղgo
-~c=߸SqQǿ_!+LRg#2^??ZϚ"_?*}gb*qY&+(4 w VUԵ֎WQ
-P wV&kYª~pPZ{Gg/nc6X^Rs޺:/'7]ՊVV̻(=k&Wۄg"yW*;|SEc|5΁kWw8ǡ)J'"w8̧to@>'Wa ~l͕~<0PnQx}V/r9kPtKyN '閎r|VF)+?%>^@m~Vy/[ڛg>1dp,bCOl(<w>L*ifa_' ] :,]OhJ~ޭ#2~=z ؗo?EF zI;$r?>ݵ&}vk]g^ɜz5^1Sp<y>3qkT-xߋor87y\Fj}v(_j7/ 3&'gm]8ixo߉Y>ߝsxٍBE[^v7墮&[2 ࿕o?2)w7ϵIJy0mӻ#EHc512lS!~7Pk=Z,6ۭAeTJ>@y-|Kt@L
-&SC*%i|OAԉ(ɿ<9FerPxpJ>M 6C5
-N.|k|5oshsosƵJ ;Q8wD{v숼ngtPwk7NhPZ3Hku y'C8n9hSk>TL9~Y!',(RDV"ق#'ӎlBt쓉k>Lpu){4=9|Y+dv%Ō
-J 9}^v/Xk֞~&x|ݛ7i
-y|+ cN (gI 'z/'ߏyVָ>˗o}-/y.<8qV>~ƼoC~~{>K'ZW!<ܝ '1v;LGCxm|#xiiHXkCխ>Bc契F QiZ&nh)KYIC,ީ7|xF?bF׏IIcǗ&][G:#v~r{W۟w٥B|Ox>9E޽E-*><P?'7+sGa4k5lB)k5 uix{1E嫾˸js{k?(YIW+&~E&~ ~km0_/ vMOM0^˾yA|シSsC3V^ߋ;l$kݵ[WW˹x_;ƇG ؽ.bsWgXnGnOx׉ׅ_ʍs<N2-u]nǿїpj?ƝSsyj/4PO^{K3V!^xCTCA6fZES>d ;+xgqAvk<2^=_cnCH핗+B8@TgLhW GK$BR7]}T:{;~=i&Jch݈īwĮRrX)X\̋'wyrz8#NO*A6e!<1BE E̍h[qOvLMX-L)nRߤ
--#U(KoQ*A6M{ZhRF\;d&æHcdB2APHlW[r_>/oVq)U?
-mR1\UEWHB3aE^ŘGQ!Dza+7^chq؛2TaX#^ܹkcyx2TO풦`!*ʍ0){3)JirXb>]y,4
-E%4~#_V[_r5>m<MͲuy'oKa]uuLd[LKIifH6e=~ULT8dxu-JrNѱ-HJufp#:P6^câL"Uܗ_xs~U+ŖQl{K*)4K|ptz{z-W gř!ۥ^Nn7R30+~tyc0pE6ԭ|B-$WaU"Az,LcGc Xo9bI.ۃ nqGvPMsS+Z0E!(^V[cMjr]EDkcڏrP+|tB누#
-@`h.U d5SЅ||Wr
-"UbPcukPMԵ}P:[|`@\9AИe?v1K]00.R\a4xV~wE]w
-ʕc:3Zi͐gO! M!)v]hinsӛVnElQ``
-IZEkᏱѭ».X$-]di6&(hwid:N3s2!#5ɠ]oqS@N"
-, EwC#QcL8r*yG|y+=涅RwQ6^C0q?l>g꒦Fud%ҪXz}x9bX>BvA)Ȕ]hzwՂr# Hϥ"S
-R`3wCEQ^O(J,Y wͣQƖy:91rs遜xO ?3*Cf fĚKN}P֤J$qA=? sԵ3(#enX3dG0zR+!ϹC'x/PfV4/Ϧ${MG%
-k|`К9rF:feByfnT͉.dM"4 4EmtJQmy6kS=pLyM+К 8<Iܱ4J-lcz/a Y L(is S-<ˆ1zMM@kJ#5,֞rC:u9'U3J7bVzʄ"VJs!-7F]Z ^2uLbК86;oMh;USysUo/lj
-] bt^aP1`׸$oIkw`;F
-˘ a@njS F8FfrcR5 )j)Qf"-j^ @js[`OU4tYjp<4Jl\=]*U@ӡlb01Eg瀩6{SǛH[ODКkȅ;:Bfj)9W/LXBddq(d]%H_^sV2['VQ'VXL(К}8"Ӹ49FŴq9tW`$aZe,]T]c(F%6^璪lh98S uDτ4OWh'1@`"n>q
-Sͯ>f]:Jq1TrKU]Z'QŀCP$x(9Z䭲7<Sy.gQ(Ir7M FKc@yy)x.1gnaJHgZ]wdjN%k茥gq*.jfR~}·9aKOb連Co55fT獦K]ZH ~!-/19+`!&FLXvh*v]^y7ۑ M;M٩Uq%RhA1(r= .Fw+OsFc>(>FEOva[xrMۣ<1U} 8St
-=3ZG@atb1#xV,!;
-<ƛ"_BXWZB!3PUctEs,A *mk&T
-@U1*j"oӈ}@BR:͚+.%L!FQtXuHv^F4k%Ru&l۪oQ
-5$!NU $TS9%'FBʘc( s( 3
-@Sc|W60M` x4*`;LRt$N"z IQStE,C!Fwl cndf4e>tQϲDp+\2Gi*J1
- M 45wnc dVҞ"Wwc6^a(/V( 6]Fp҄%.ma9sQ7ks|t:PГ?e4 |2؄ʷ'KSAnc~3x⭸kq8Aͧe\r
-!b(U 6Y&J*چ"*HݸwH,{
-]>4ciν`%}I?U7nQ<kE!!ӗ:]UED
+WUB𫪲Ub"?=/>DU텇=<r d 8M.~wJMu(e_~w@Wң$^&Muxcce?okҍ1K˺.ݸ\DjQ{Z/=br{ǯ,HcPEmjG2s]|T 8Jfr,;@hаKLJ_!:tVI -':Sn
+?rBk=9F'ARx-$yBƋr
+T'᤟/5j=Kc4&<;XhP .?L5:F*UPV8:i%1nʗU(
+- V]tߟjܭsPBM k$BU ^DI =Eahyy[8%`(+ݙe%Qn,[LO`UFϐSr$@Gp9VņPz,~F R)%8{4QUA@yѮf,pяxLYlk)6mt]%$,u*%``(+ݙe%(/,0_(Q5
+9|,iw/ZB[kֈS
+,ZwJHQl 4!~c,¨i)Z)NQorsݿ` L)MD]dWbBWHMf ftQȮ Ma+BK@V K(M"U ^tQ& vC/O`uPڣ(N^ӰEC ׿@EןE}T)עQ ]j"\M`Ib5?EWԨõ>PY bChϹR1`Sf怕̲D!TEЕVe#t
+gbnhFT,UEM>pjͲM׶<
+T=- U ^to6=#&.R̀H՛ap
+vG,{)>S):F+@قl6A Q‹ݦ~9xK4٩A[¦lG&,ө ᏇTwIFL%\ГH]KM=Ԡ՞𞸰)Ց 4Kdn{GS~Y
+m0d͘k3]<^O[AKP𶸰EzSЀF",ޢEnb7cZ%Pe}/8:Cv:<
+]/O og% O w͛?4mT/p&,4rP [b͡{NX<K(P CJ"zBS> N5{xOEBS>tI 6-2ZO 3h3 CQ^=={hN/xZ%vƛ@4*>8RgiǪ{:f_:f n, zp1 H)]Gt3c4cXqG:Q'%*@l bLGV(C,9 \
+nA%<N7k`q bz,PU@6
+@d8C8xywec5,Rul8P&"`
+6.l avMGV*#,; \n{ v|C&U@i @c((Nܵ_z
+BD
+bM.'wd-3\E煬9܍жC
+ORS(Yw*ޏݭwʇ8Ty$~9x5:6Ug8xdgjlFC؜CJ"ZiQ];X^Ah`\u)¦*4P(㐞8!t l]Kg#uHC6m8U2mTl!A!JKX l
+/#h@at^ }#\ JX>5Նi
+@Umt
+Ýs4r@:fB#ղ
+l&Yi>\Z|>,:ch~: V7f]vbl. BEQ^-ޏ Go{Gl>ew |
+g<7jq~J6ls0;8wOIݍ=@a3jq$q>xICګwȆpHӷr2Bǐq*-WKdbaؼaZje w{|CX7UC 5m
+]}riF qiU+
+]Cy.X|
+9# 2
+,,F.¥`I|/PpƦs]jxJvTOF2epGx( ۵|[DZ+.J~%B hP0^h@^<>&:j˅ 3teEN@(-
+JvL\}W
+"[}b0
+>I4\<ι?RѭW!6K'WܴE6>I E˵XPBǧJ%\y!(EnhH%7^zD_.: ^6:C;}3ϧ,ZVekq,*l%MTZBdlgR}&RJUueϼԐʐYR}\dl=
+&\R(7+jg<H(_Fu<AFu<G*fGwc' ełIGC W`+ U5Jy.N!1ZB dێ>/_؟Fܯ3+@Tlf;!ۨ%`pZ0'Ǵ.}BUR)e4.hjmTF:¨b3Wj/Cj} -k9Q\.%?Y)p>W+O 5=FyQF({;)lE]vYcʧiѼ^㈴pUF7-*@fJE@]}tWr
+"uJ8#J
+9^Yj0]8JԃvCyIrᕋu'n^r7pTR:~*4E:Z񁽶55IZE3Ut䎩+кv%(n];@
+FPOWؐ k9-a}>:s+@cw'h9.0Q6wRw#*'Y M2L>B!
+IZE<بiy ,VϙDբe.S)} 1ONPgjng i$\ Kl
+t\V*L"Z鑷3S e .ՃIi+IT1@x-a',;Jr }{_0VV Rqp4-8JVj@Ib3-Inp𕧅J(W,I>_S WڔKzgr{O)&흵w9:РYoit<s7ٺ(BCp
+9Z] \90P-^HHщ[ױ6=S=&a8GidPx R&xn<:%`t\aL|<XKs%Pj+Tj:cO!eΒ~6X|[ ,RS };MIzFfٺ@>J'؀
+u+? RtѫpEʖB+J5=$$Wސ=?:$9~ 2]cnBRdКyn>9,=H BS]/=(h5W-Cל|Pe@_yИ3K3h;5g*rrrg.Pd
+)R 5mL?C7 aA4vlA`m۸;bt
+ٹvIAx>΢_-+LC6Q!
+zrW;ځ((sS</h o1x΅boamC_wJfᄩsrm\;Ҡt(`܅O
+-{!}ChBb<%bSaOy̥YhTL
+ם.NF~۳p Fe
+cm"Z(uϵ!'8)gUxypdW+A!`Yb B7J &<]1B/6C\>iZ3%:ʄ
+: 0
+:p,Gig5p K3剖RL$]5azuAyϘ+
+}ky_s,̞Yqz" m/d2uH7\/)8_k{嵦8+0?7ȭ `u,4>pmFälpzQ 51& ~bEr+EW^ 88y`a\c C;/HF <IK
+$ (Yi>"B$G
+/5sjkw8 0!U-cm?@uއW^WEp0q|'?`ad&(w 5Ԇ9Bcx)aVjCN%z C7>٪<EvωL`NqRfM"K(._3]XZxV!^ݩ·UݤEHY-@PJJpTY e|ӲbOa«bY|r
+,{ `Avz:|v%뼁^H-6;s2>_A-
+Uf?,[?DX[ߪu^C8z0㳉t
+P"f)N0Jʆ^d &f]eO )Bq:@9xuu,NQ#ǽO?yl>JĬuRDP8 M5w.@Q;wԉOpgOnjY^>
+N)j[)BU P^Ç - 㛈V]+=RvH R)%8{4QEF!}<DEuψ]`oN~3( 6]Fitg%
+w0y,aDZ>Vx41Ja_KVi.t ʋv5 d+ncXPRU#KY U.4ZsJ@:}`"/x ğkn: 4!N) ” ҽU ]>VY
+#r ,ʨs
+v>YZ"[|BEj|@MíDt"Tӏxn?~]wVJ~M(SV.d Z0^Zŀ<F!(j"` P϶=x+%@`FL1p@6/V)BMMxD]j9cQ}Q%q=,/CUѩd+,NEEL! =FEş(h^7ښ:)Ixӗf93RFø%66$R~3z.5ant;8OTl̀-B`&GLXh2T Qxb/`.j}{pUб8^JnR@MP`-9aRlT1TCT,mPxKZ7gx?q-Q(r= oUK!Ϙctᕕw]xiśP820CUѩj+1p0^E1cS)!u6(&;ٙ3N(&0RfYD{0{0F$R"2iǰhҙЮs-%cZ3
+&Tj$KA]4_67d1dFf`!%`h"LM|,1PEe"'Q1 ]'XK:CTT \Bx2FoeKa5_&67d1d`!%`KM\,1PEes&a%0]UK:#'T \Bx2FEI!Hާ6/d1d|f` %`hKM\,1PEeS%a/ ^SO2#ď'LtR6UnŢEa(Lnrș蒤s/&\SC:d!:5R N@¢H煼k(BddE&r P{ %FThv&
+ܧ:I]Bd4Ep\6DcV*آiXLlw@GD[@B $
+
+5e?1*8 8\S0sS0|(|,!,lfIY]g
+Uea ǟ~"o%g?哈oBw_}Ѓ_~n'HxQӿ_.Pnn5_~J?}Ip +//$"B}#1/.O\H`#_H  en2L"߇d 篡|Tn%uu(KYOYG .~֯0I9ȔRS{9,T2j?kn|X
+٦f%|@z,߅3?[UQ[;f^iDyFW2 
+U"nLct/^l`,z#/_7Q)T15JX,Gn8c w'nݳkyȘO<ws-?ӛ/%H!ޒ^Dp-?h3ތ_W2?F\u\~2FjwS*@%ܩ[mg >> ACa^kY~a@㻍Tf`MzJqJx2
+ZȪtU+Z[2TYmC\m_#iNZNs#8^U|{/I\nq}GqG4҉#)[;~~w[s$̤,p!jrp:^\zN}8;5{z'>=beSljg+Q~,?%>^eq||<[ |dqOrVy 9'yR4^h60tIxߏ#jazS<5vŞzÎw:&n`wFA-w&|uttڭeyK'sxL-õ.}@?=Q{7]~/
+uIC7/TFRy A5:!>n'2ό{?W~K7T̯ o gw.rHkD/u5ݒ
+NDqM1*6*|tSzeOTtM|y
+fq,ٕf0+=·6=c2vKGx߁ LZbIX{Euo_L~wНjx.Ϝ.);N,ށ"{>Lw>notκ3˃ViLOV~Un:e9]6n־vCq|k.lx*\6H:5|z'% ޟ|?YY|/_m˜ߔ<>| [~Ko58m[Ckuކc$ 8f֮:~h/ϝ~57< kyHrGQc4Ѩ<y-?ͅ+$?e58iśU/_oa_,8Z?16iۤkB}js9bIwX,Kwy]-SS ^./i߂c'qO|э=FCQaVf,4OjVþPigqSY_˺˪j/詖^9Wk1)54!xkWkכo5o7ood/La0 7.x;/9G>4/>fuǖy[p$`wAG`gA~r7>
+93Yi]Z@WBdr
+&4:uްܥ2y ӓJMd,Ϲf~PQE*zaQ+s#Vܓn%iejʴLxj
+ ? -%$3 [y1@ԭP#\
+= "]#oc F EzJm4PQnIٛIVO#%UJ̛dQ//.!_ elc^nk<ygrOcd'۞/Ze^uHJc4E)OB-bj$;;kV*&sNmAR3ѹаԅeѮr£w0Z)܎
+隣7$@Q lb78#;&-"A^_ /F˭p&B"5 e~Po9N>=CuJ‘yMx4]*zYsnQZB>g+9SBu*zV^(BwñR5- Or&Z6M(Uh@`
+>ȊY h̲d;$.DfiHXTp40h<F]w
+ʕc:cZi͐mO! M!)v]hitӛVnER``
+IZEkᏱѭ/X$-]di6&(hwid:3s2!#5ɠ]qS@Q"
+, cq:40;ƄQ-+g/Xžǘxlcn[(Uqwau9*s.iZ(j]LV"ۀJ*+xA׷މ#Ɖ#9~ogLyX݅[wG(|]-(w<i\*2 9s<1TEĒ5Py< nl\s )g;@aȚȉwİ3?2d.`IydQQKy X
+3+ ĕfgg=J _wЃ\R4l3+c[5@J=T?$vL@YALh<BM6k|+ sLN{sbAk pdX[
+@k!~+oZe \"l2a YơEv,s /Ʀ |eRz>Zo{X-GXmc1@kZL]>FVht&R w6j_W?xK7XxK=<v>d\ճ;;
+[L aU^ Nh oSCUѩf+ͱ1p0]P)VTmǨM# I<7k",[\42EMҙb)9#YJ0V{!JV=FJ-xV͛mJ`Gȼ1TrK 蕹uFn3_w~/<rLynr7&X|MY\HY-tXB0B8btW6PEOGM>(^8Ck(0ގ }*cl}4a4|X(HSM]ې4%Ѩ8?E0Kuӭ;E7=:B&EMҩv+M !PU /L~gҔW^b G=fu rgHa (
+G,M 5wGALXRUD%ŵϒ6r~7qm+O
+=hƼk3N QG|-N>Ȭ>V8ώ;|{l\k?헹%?Od抻.w͛5~[.Z4^0Wג?p *Ĩ}xHNKq?ɮ?* "DwB~"
endstream
endobj
-608 0 obj
-<< /Type /Page /Contents 609 0 R /Resources 607 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 548 0 R >>
+616 0 obj
+<< /Type /Page /Contents 617 0 R /Resources 615 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 619 0 R >>
endobj
-610 0 obj
-<< /D [ 608 0 R /XYZ 78.37 808.885 null ] >>
+618 0 obj
+<< /D [ 616 0 R /XYZ 78.37 808.885 null ] >>
endobj
-145 0 obj
-<< /D [ 608 0 R /XYZ 79.37 400.5 null ] >>
+149 0 obj
+<< /D [ 616 0 R /XYZ 79.37 400.5 null ] >>
endobj
-607 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 377 0 R /F55 379 0 R /F56 380 0 R /F50 370 0 R /F29 371 0 R /F23 375 0 R /F20 378 0 R /F51 376 0 R /F52 372 0 R /F69 398 0 R /F58 382 0 R /F40 387 0 R /F59 389 0 R >> /ProcSet [ /PDF /Text ] >>
+615 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F55 383 0 R /F56 384 0 R /F54 374 0 R /F25 375 0 R /F19 379 0 R /F16 382 0 R /F17 380 0 R /F20 376 0 R /F68 402 0 R /F58 386 0 R /F48 391 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-616 0 obj
-<< /Filter /FlateDecode /Length 5489 >>
+625 0 obj
+<< /Filter /FlateDecode /Length 5486 >>
stream
-x=M7w:]0{2`O,
+x=M7w:]0{2`O,
H.'<
-0t ɷe4<!7Ws%$,} qptoB7aesx;;(ux0mm%E't"9`L'N
-иH8IF֛oĐ<|a{S+ GI?tS{cҭN* %voaBJ r5@@UE,$1٩[S$[b3ʃ` 8{Qt<B,NY7Rp%
-H)L͝'-٠<өp=4]# vK
-9{O+fyr'$LJLv2|χ 7ـ :~nYHf֗,@Y\"Gt`rK%#.yr܊"o]Xz*dzUs-~s͆aw}c^>g
+0t ɷe4<!7Ws%$,} qptoB7aesx;;(ux0mm%E't"9`LHAO*И| '# $qpj(V7߈!y !W0Ƥ[hUJ4K#"R"j%{ bYH"cSH
+$fNpnxXn:J$$^R>h51>2y;7OZAyS{hTG4 ZٗN%*v ڞ#_cm2H~ihÿ`:OS{C5eԚ,s{CR|i@(ˆ.zWݎìkz?GSܕB\Qc >s!^tim
+Dh^/6 J~Cc& @[Q4:X/e\aWFM13\Qƅ/{s$AH[)8'&2dI|pW6P?6YH%he6
+9{O+fyr'$LrtN&\]m=k
~
;(,`0¼ü~u>C89'\\H]}<13XҧFm*A!:ܗXʧJ:pn |FqwmOM}[>YzgZ]a] YjD '.Xyhmia(]cWAB[FBRNv Th A6gʔ¬8aq-@)l@0oIC|(i!LF="
c@B[R\AAh]d A6y2rհG!NL@PAdPV6H$1KVTf m
@@ -2215,1344 +2297,1313 @@ Hǜkp!K&3DX5Hn163'Hk-YU2#+4NMa*B CfT8a)^
ʭ
JG0vh%Df^ӁpM }F`k#T;y2v"2$HfrBJΌrB!$7Y(A^ET f]4MfȏXU* dg:M cLUehZrf,t u c -qĢ@cєh& X.DZ؂1~y2 oa`%G 4G28β֓ 2@
+
-aʏ`+ar1'hO2C%a!P՘1 F6.e$}1k`/Yxr=Vwg\Kډ[$}A6
-=қW\XW
-m2\)EFawY)8tXm3-İ_B⤍fE$?d٥"IWpeq5ZE$w<*"UnXm X\)yVo!
-&tƃ"T2ڹV=.jH '.yXCrK֐ZmO5>WCx5$ @֐\7@WC5$&:ι.kH(?/
-{(,(Ң^ fʨ陼Ľ=!1!1o5$o5$o5$o5$o5$o5$o5$o5$o5$o5$o5$o5$o5$o5$o5$o5$5$B+)_SC~N%T$JP.PQV뮝gq% A 'yX|2[@nM~9lwKi
-ێ{|MqkB5#XۆfJw73I~vw(^^,eÁtƽ G<=c:uc\ڿ9+.';ҕу9-8k'_4x/6!wa{IZ)i~VR'`.6\;IуE`$0iDze37:P8-MqV>TiC7NSk
-)7KEZq~Ef>Sa&4<>h
-AWX=O#]p_o ięYe +lgkv-j5i躺g[հQwushPZ|}カ ~GUo|5t[X,(q΢,4*Q*~u=l?h#^GGk9.TQXKjU:}UG :k.z#'EZHHENv=/0hДՃU"kk8;_[?ǎ9m
-]; ߣ~kGwҌ%{نл8݂اg,nVr>ݿ76V
-Uݟ`:jO>zV<FT#׀olnKgYTPCq\9,0h5/Gݚ[7Êx웎m`̴g|,6lWAskLٱg_ϰz0oR
-8ǷK뼜CFv^v:LsbJ5
+aʏ`+ar1'hO2C%a!P՘1 F6.e$}1k`/Yxr=Vwg\Kډ[$}A6
+%3V
+,"11F?nGE$0! 7%Q9Dιc<xPDjCW;׶ʳ\ VCrTԳs%kHwI_CW2ɹFjHﷆ3jH_D^9WCEy I]AQ~EPZ߫!Q}ՐאG5$5$歆䭆䭆䭆䭆䭆䭆䭆䭆䭆䭆䭆䭆䭆䭆䭆_$@(x%kjHD J*jݵ,ĵV>(>!t>U|q$Ovp ٭q59q)Maq 5=zzMh8&t$]tجCf&oŋu݋l8NٸwߑgLTc _1g4yx^20zp9gmW#>Lx/VrZ:e3/J,ƝK^~')zF9H5WZl`zFRU
+).BjGב4{i\pj _w x;
+xRa @F.5MGBΖ&R}58K\ҽkHKЕLRz~҄.#=b ;&sètL+~V_RwhI#]
+YzJ<"Eh[>;륌tewѭqiw<J},eq\oSGW{NΘ?N
+ ăFR{FNǁV5pQN3/HV<26[kvuu5^aNhѠ Vs{mNjjX^QEY,iUUzܭ0~FZzW,s\X7ժt|ŏzu֌?]qF~+O.۱"j{,_'7`Р)իMGET=c=pES Vpw5~4msW,w GI8;>J /wqOa*X\}|-ol.ƘwV1eZ%Dw{{,RwQ|+!R49(1ƭs|@" _O Lr4|,,8zC k`z,4ijM9\bP_??UaJ;ɲ{W>xJh58U F3ÿT<(&=Vsd/naB)h֌_qLaKڸ{~RNE0p?l?}N5XH<dĵ6ӏ$Rtd0p7^?/Ⱦf([GxG%b 2T1@f$o;崝zym$]; =i誋gv˗ݽ~;̲6~H_k/>oU5 Мt*J~,Gwt_ љmo _"B?H군^/ABU-X૧N哏^%O-(>r5`[7Y
endstream
endobj
-615 0 obj
-<< /Type /Page /Contents 616 0 R /Resources 614 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 618 0 R /Annots 619 0 R >>
+624 0 obj
+<< /Type /Page /Contents 625 0 R /Resources 623 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 619 0 R /Annots 627 0 R >>
endobj
-619 0 obj
-[ 606 0 R 611 0 R 612 0 R 613 0 R ]
+627 0 obj
+[ 614 0 R 620 0 R 621 0 R 622 0 R ]
endobj
-606 0 obj
+614 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 314.182 725.076 326.138 737.031 ]/A << /S /GoTo /D (subsection.12.1) >> >>
endobj
-611 0 obj
+620 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 246.444 662.311 258.399 674.266 ]/A << /S /GoTo /D (subsection.18.5) >> >>
endobj
-612 0 obj
+621 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 368.723 426.788 380.678 438.743 ]/A << /S /GoTo /D (subsection.12.1) >> >>
endobj
-613 0 obj
+622 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 174.195 98.189 186.15 109.258 ]/A << /S /GoTo /D (section.9) >> >>
endobj
-617 0 obj
-<< /D [ 615 0 R /XYZ 78.37 808.885 null ] >>
-endobj
-149 0 obj
-<< /D [ 615 0 R /XYZ 79.37 771.024 null ] >>
+626 0 obj
+<< /D [ 624 0 R /XYZ 78.37 808.885 null ] >>
endobj
153 0 obj
-<< /D [ 615 0 R /XYZ 79.37 473.533 null ] >>
+<< /D [ 624 0 R /XYZ 79.37 771.024 null ] >>
endobj
-614 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F69 398 0 R /F15 377 0 R /F56 380 0 R /F55 379 0 R /F57 381 0 R /F29 371 0 R /F20 378 0 R /F52 372 0 R /F58 382 0 R /F65 383 0 R /F23 375 0 R >> /ProcSet [ /PDF /Text ] >>
+157 0 obj
+<< /D [ 624 0 R /XYZ 79.37 473.533 null ] >>
endobj
-624 0 obj
-<< /Filter /FlateDecode /Length 7267 >>
-stream
-x=M%mh1ۀsZxo '
-Zϴ ԾJPZ巡vY!~d6oDRk$,t^fhQf @ez̴1"Q2˲2:eFoB#})˲j%jϞy>ئE iʨX2V׊ &I(&eT۪{պ
-Hَ}V2_.޼HDz Cfc CvfJBÄx$ORlhDˬ?A9,y5 F`WvCW#k%&]f*[Q.V)/OL}SS/^\xҧl^Uٕ9Nמ7N 7gr,h~bݡ׳U*r{Ev핖ɲd"x]#2՜!v&cڭy@&wZ즙moyU3b[J+ru)<ϫ5y^ |_Za#Ǣ>~3U^zZH*@GD]|}f>и}b_\UM~Je}YضGؑNs1B%umCD7#z6ECSҷi nݟZX"kw\@-i<P`JBPv(
-|Y =SW%~RU)d(Eb;*[o
-?-k&
- x`
-,G"MF,0ϟ*+>:~EqLĠYf6P}FäT†9ew]FzƦpW׹|Ĕ>!-pߵD<$Z~^F]]Fs\Oˌ1#{gb&zu $%ngJ<OVY#bc7z -;
-oAX^3h!I~r UԂ:n,ꂨu~H[!?!K2z\J)^HUi*9#_0[G$l-j 贁
-Tt h/[*3I[.oh\ZGݫ-O}׾hv]qW'}-p`#TTF;%F-xI-JXţ,LYL<7bie+ŗg)TjYzz}+أs{GslJIw/,G1cl 7r;9VJα vu
-;G&cƿx:} OdA|Ki{@GmzHv8ә9ҿ}cKz~׼wԊ/c@|>[sF\
-NaT |aĤ *9Q9G$:a|:AɦcZkT~N RoƗJVn <I o W{mŠU}?v+9\-&X^xb*4gA;&`fp߃v^Fauٯ= Q~ؤ(ZM\f}<sHpoJ}AVg'sp4> uG`bj᭎&
-1=-S>i!
-~R&9A_6ukЁ$C^ _~o?\.{v_ !6?+
->oGơixZ<Ɋw"LN'>E0o"~k~i<AJXH M{MlE%a}8T蓋H}nϾqg|}? }~ %] MEZ6
->oh5Ԋ}NFXN ۑkG9|Dx遝o:h+DZ+8ƓT5<6vuA=vORw@I;I2aySۘ3d*@Jfv?" fKu wz}'S=꧷Nm jask
-[YX:zR2,α:ñ!3Ӷzfsg6gM>^t Dl Rx,JgWrF5UصUaᅵ>@Yhˏ#vlxu]v,M+?xEc1Oe_NU23d/waUkGNRgb%텠O~f`y8:Wаi'*-r&_4ϼ#i:, {Iǵd7L[ q'c4Ȓ^8i*;Jj-V^}X)哰aá> <D5e
-Kls˺jK*eプtƞꚗKY˥7Zjea:oR \lm^Z ϕV:P!&
-#!zm <Hk%0yn#3.'i{6WVkZZ{9׃6[4)A8x'[b )k9aL伱/־{bSS$5)XLqoMNik{߱ŃK9=3D澬a~5ѨA+u 1VQmXY:7+GipN"5逍ߎ5aG@|L\0FDx42.F6+)ੲ-E#acP(N#5逍厎hA4I8aIUZt@ޤ07Tշ J.0ȣ Mo( 0^f{[ɍZYtN7ٛed}w,֤UA03:\[Fh`M;*j`gЖ ݠH-@:XP<a ѕu-Mq3LeC$ǬJX
-.F'Шq]F %sѕ6V{H(7lW9 x<@ѕ޲d [
-[;KL
-:BZX B3aM\F8:}AHY$IHo[)4'h :%a(%uJd19 +qbtr%p^5"*nkʀMzp8f ,(̇% O( Wc>A9r9 m"10}*4y7p-o&!< OzP<yrd1! #qBjTrYpvY<2ist Y$$+Ki&Д0|DIm\H;}AHʹ$IP/s%?π(֕E'NDzPkῆ{XPoky88r:J/;|g?EØ 9h>+HoFxݔ9i5EJL4AEv)en$=oO fB2ꔜY躮Km9b{__ZDGP\U>HE_ıם׳a L#$Ɓny#yے{+e)1iF>YlfJT uU@e!ЗC {k
-j>e<5XzS8dJ8԰ ew;:(CޱѩE;Jդj{=)'kR+WPM('k!WH C
-nW&na]ɭ4%0eyuϘKDrV -gKfKvcNУcd5Զ{ CU7[Kya>e'3Zoby"yo&
-/1;|-t<1SP] N^m 1NW;Wݝ{Z]#ͬu+^
-%|WΌUkS>fcyˬkۮDܨaQTi"X۝Ýt*Ռd~&焃֖&=梴*\B7w"r2 +p^r*h w $M[uPX v
-z]S
+623 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F68 402 0 R /F15 381 0 R /F56 384 0 R /F55 383 0 R /F57 385 0 R /F25 375 0 R /F16 382 0 R /F20 376 0 R /F58 386 0 R /F64 387 0 R /F19 379 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+632 0 obj
+<< /Filter /FlateDecode /Length 7271 >>
+stream
+x=M$n}|>t=}Ew<^N K~HI(!dz(")JE?.Q~~7i/qN9shN.ˏ_/?aZ ǫ6
+Z Zo ?tWRE}@HVEpKSn݌r)=V#
+(q(I2j X/"OfJ%,ѿiYiJ*oJ#}T%ɲh%jifO߰=!,sn¥+<+?oU`ʭ(L\p\PI"GMѽb]]Vk^/|"SO:(~HL$TP;7
+7Ϡj<Ga S,HqR[Q E&WkBM!⣵E+u(
+OfYT 7螏$9Y4f]gY4@v=黽!@өv12t=9Z'#E
+Z:#O-8cI(Y4WA 抔#Rg~NsZ$ݵ4fi3ʟ",KJԔƆ ϑIӞE@Dz xu|`jݍHNm>tQ?4H5mB
+ǣ%xihȫٸX`~iVoy5V)hYo&jd"87^/mO;>Ug, Ε䉤{.x5]rqyƺŢ?]}-S]zE^w{e{,4lvVU~W;XW`~AwkInj;B34/l[]5ϳCRbdY-sHyZ+sZT:gT5[ Z[ m&^?qcܘqԒ@R8"m2r@ qU4&O/܉=tNM-k"S) KۦM$vΩAY-̬!&NsSzy]${Ey E.ҺM&e)=7d
+|Y=QWū~bU'ȿEb;
+kW)n|]=4aĀ~. D#/ t)-rQY{R~|F.^aR?.~%4F9->Җz4^Pdf)j;POM3+Z 'R׿JĒ sg࣭sh:\NLG5N *[ah :]';T6 L#F/"/T#6ڶ
+Sȿ+&|># GN͵7ͱ H)T^Jny[ J@Bda5).R`79RJk&8j ~ {{,҈TG6vf-ժtBcl܌!=*4&/-5-.κרoێ_ZGݳ-O)}hkv^qf'}5p`#TZ{7J4=`w4k hDZGYVūz2E9ҙ
+}co\lQWϦ /RԠ18VW1{Q綎앐0ﮞ_$Y|-c0>އc|vpc"d{vg&>OGexh{G!<⦅m1}I>{w}zsh-y<fO6O_y:gS3Y`߂?iѽrڌհ8L*!nzBJAdʑ v.d>-^5G*L)RDj_;oJfA^!xZ_1o]sXL@1SMIP|*o
+Ԁb·WM*s9%:q 8Aگyze}'.QN
+1?I\I+;INR I;I
+$lT1>ƹ\ Hr[~FqrmhO`}/A{d5p{^7 Oz|چ
+惴q>/ neg$TL#e,wR@clB)I0|T:j*elV׀?Ώ(piSN
+{jE%<mZqM96fEy}93`Q#F;{U{ׂ'N_Ź7}=y+URFbd"TP=˧O`(2L 1-@FH
+HU+LHqfՒNoj[,dCm,}L?ȡ}?dB;@ٸLxRܪhVwfS~aSj<[:{}\ز v-*@?yazq"^Ǫض>b62>8QڡbE:F
+8뾉f?YH <h!i"l!}򊏾m""_a_+z-ˡ} ̈iZ",~ʜX>L T$>خҧyIfoU/=5-KQ!Z*iaHyބZDc)۽{2b핕ee(]ԁCI.pS0M]*aV !SI)Dx˹ M8Q(/$8A''T}Z4UzYm::g{7M$%,! pT
+A]kѵ3=Y32ha[0!OS-}'Ou>.jk~ UF1GcF~K[;(~P
++VB̝+ƙ ]5:`Ro5'z4oCǚҰ\ .D.xԋ2.J63)-E#`wcZKN#5i冎hN4q< tri`-B52:Je*~ltoւ\"G".+֐d1 '"L7-th`nB57b62XIc`nhtQvTTB#vP A Z:4yx =7JfX+~H`sV6Nó6$m2 A)KS0.J &K&"(gP.r6yۿikX7u@mG)Ř9[q䠍KBVt)fkJ੧:WtBi[q謠sDi6V0N
+ uC1
+4qF⨡k;!5"(gP&!qUpBoV)'%1 [)~$ܐԵ= AryTTP+ N4@` 0Y,F076.(J\56x'Fg\$(D+Ol9D<N4&ёƄԵ9 R+oddKS6f\
+=ƈI=JjBTxowBjt6P%\qNxI$?X S]a]^tq
+!0,
+s֫#3PFW x~P0LDد AK߬"| ze6࿼NtEZS+EEVmluae`7RZJObؿ} K,ϣѥEx] ֗řLT
+8JR:z扞z7@K]*:S3϶+2;
+J0<WߣG^ PޫZpjw%0I]Y1BpԻ)q}4vrص}Uxwl2L?Y`xeWrW*W˱dY&V9ͯrj̾tm7:YF1"kO [j0<mL%Rt儊u&.JGT+/K~H BLr8YYnƮF_M}MQ)gSƗ*:5^s)k*Ew <vW^^[jQ[ys 5rQ&\rKrCwZʥ4kв^x DIfʬIM^'}g\IjEfBf>I0PRݘHN(|WeV#g9Ƒ:"}X;rjKonX3+dwT)R:Ȯ%)WWWše`.C: ^=NYnܐ(ET/-TH> 厮TCA|V]A^j"Gv\صy ^1Ctc#D#Ϫkwa=S{DD1o<Sz=g RƷ b1CӒ=^UL^X7[}iLҋ`bA"0 2YE15OB*x=.,{lkg޵-D-l41R0t+gG3MOFb띁xm&3E).K69_n~"LC] [toC$/BujpǼBQݜJ־n葽bV6]]{>+q)O4yuאwn԰4)8FmF@ArD2F^lO֚&="yˋ| R~@!vn@IULp:츗ma8j]I]WU]꫍jߨ񸁽!!
endstream
endobj
-623 0 obj
-<< /Type /Page /Contents 624 0 R /Resources 622 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 618 0 R /Annots 627 0 R >>
+631 0 obj
+<< /Type /Page /Contents 632 0 R /Resources 630 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 619 0 R /Annots 635 0 R >>
endobj
-627 0 obj
-[ 620 0 R 621 0 R ]
+635 0 obj
+[ 628 0 R 629 0 R ]
endobj
-620 0 obj
+628 0 obj
<< /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [ 78.374 84.682 416.581 96.139 ]
/Subtype/Link/A<</Type/Action/S/URI/URI(https://tex.stackexchange.com/questions/52848/tikz-line-with-large-dots)>>
>>
endobj
-621 0 obj
+629 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 324.371 75.217 334.828 86.674 ]/A << /S /GoTo /D (subsection.12.1) >> >>
endobj
-625 0 obj
-<< /D [ 623 0 R /XYZ 78.37 808.885 null ] >>
+633 0 obj
+<< /D [ 631 0 R /XYZ 78.37 808.885 null ] >>
endobj
-157 0 obj
-<< /D [ 623 0 R /XYZ 79.37 336.159 null ] >>
+161 0 obj
+<< /D [ 631 0 R /XYZ 79.37 336.159 null ] >>
endobj
-622 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 377 0 R /F56 380 0 R /F20 378 0 R /F23 375 0 R /F58 382 0 R /F67 385 0 R /F77 626 0 R /F57 381 0 R /F55 379 0 R /F29 371 0 R /F69 398 0 R /F21 419 0 R /F40 387 0 R /F59 389 0 R /F66 384 0 R /F50 370 0 R >> /ProcSet [ /PDF /Text ] >>
+630 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F56 384 0 R /F16 382 0 R /F19 379 0 R /F58 386 0 R /F66 389 0 R /F77 634 0 R /F57 385 0 R /F55 383 0 R /F25 375 0 R /F68 402 0 R /F32 423 0 R /F48 391 0 R /F59 393 0 R /F65 388 0 R /F54 374 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-636 0 obj
-<< /Filter /FlateDecode /Length 4962 >>
-stream
-x]I#9nׯб*&澌k^c_*\YvD?
-9{ۋ`V-5r5'Сwy R_BQV;?L]qk9k”˰n?a y\qǾYFDjXySz4:81Q7>/AVb84k?L}*`>C9Ă95\ Ċ؇8NzjO_&Z#~EZ;?<C̛ST:'DdJ} C։H`Fy5"R%[=[5Fm7ڍӒt^@]b2IJ<G`9gh'MA s"
-S)k ֹБ<̋ES2b[0=UQvޡ*rq*7
-e)a}P({.γ>; 9D](jjlt\~ >-'e {H)g3cs#OL+ggu*1G q%rc~
-ڟfœ2z/zMOi' ?=.>>+J#Ŋ:rO[ES#>Z>
-"~QJOqDž5u^/Zi|
-=A' >
-iME $iiTrbCh9DRKVOD U8tW[9\1࣎['J[ܰ0PAD"*"m(.ҼʭZbF_=ze
-9vw$Hc#W wH᯾u_/˃uxXV3^+\Zmh˷G/]%Q 5]2F!newk?O?׷8uFGg~vmN{* =Ơg!h?բeX4 eLLI45P(Ct܁~'yVQǃEY? C%l{qߗ_/x_.WKL,׊,K+]+s*uyc+NNjI O*֛x?l
-VYi4r>ٿ*_r)(MJᘿi GNؽm
-qH&;Ҧt>aFˁlVU"Z^FDO+qi
-KPӤyy&YbLSb抈+~L q}08{cN
-n4q)Ҕtp7Tp9S@4[SL ykezFnM{$M:dN ʮd ´Pj{shGKm l>sUmD)N^k1en|^ԏ8N-hzB+/ F1u5~P?0(x>~lBɮ@ ?M spxXk>a7~Gڳͱ&ӭN&J<5]V?*vvMx24K'`3<Ӣ) A=398ɩݞa]bwe'1gn>+ -n>cueí-nOk԰aʞyй ۴]%u@мS)s-5(ם
-DTҩҁSP;TFqTζNeS8fe8C5#b}yi. XY_J
-e~M{N_yo]_̻gL\9]GxVr^?R
-s
-g#f2d dNlvLN P3gjD~3!1+l翮eW,4UgOآ @^u G;>c?P?̙VX
-ӜDO$YQM"4NHP9%{9Q$5r
-P, D|@m "E !E搢scǓ`⃢S`:":zbb@3!}K X޼f"f&Ldшs
-MPu@#D=3ɾ~f}M$s -FFL4wAp*XRgH&H&I33/E
-VHn{c$fJk5\?nյ][{>-yyW5Q#2{]f.4/j++"ubjp{/Bn˹2ޢFc1ҏrTTpᰐ=\ǿ*`A{ngq^0SU2I |Kc<ںڭwTA']Aao$I4%~PqqҮA:EVku?%<Kmh𺉪q9NJǭnBGT}O|No;1k?a,φ&UfLjvm3RnXF}0d_?I.s͹}pN%yR|xp+.BtҗD}5=˾f#&~eEah m$0./Lϗm7
-{Z7cu{nu
-<`mQNWRq~qá3 \h a3Oxf߮77)"<A gP\ wWQ:5yjQT><fD+~-"مQ*l96ǬGÊt+B',sŻ=(Z3TׂRvef
+644 0 obj
+<< /Filter /FlateDecode /Length 4956 >>
+stream
+x]K[WhiWJlV,l\U^:LW?
+\WJY_H΅wa^-QҀag#W4plV!je9B)j:S4\ގ'uqh+C|Q6dzPKO#IΌ!΍D?1ΞIG3 Ǖ f <)jORx-#5N^?]ZPb4N *\+ȥ?mOւh(F)=?Qyhm)@ ( ER6=%HQ͒wmesTIU/m[ <sj:R!6VWI]msqRLj:nq(Qo=rCm Zh2zQ@ K[ȍ,[z8kˌRܵ r͉r$ Hb!(܍$Ʊ8G@\Q`_}޿#^ Wtµm7Ռe,m[!sޣB鈮eǿsم.2F!newk?O?׷8uFGg~vmNyO1=AhV;M$hG4sM@$h$hi$wI>Aa?h}{E ۞]%kj
+F\0L=`9='sITNS*.8Ю8K+˂choR
+/JSr@n8osD"kxS vo6)ی{ҰRo/ANc0jx]RT#.
+ùCqi.tl["3+]h͇Yp'vͨNbȪYg5v~ 1= 2$ /"0Wn|VُY ,MY7T BIr0'VEuDN۹{8#jC ("dp N+ussh+i˹+?}Z#ܕ:W0N.lS`v&`ʯӎ̽$G&=&L9]eAy1ף暀-'L)~o%~n܄+wi%Y|7}[wxea}cx7MpUckI7VoHl!lѵy<aU6$y"e0=q:1QSh֢0ERA}/.HLˌ&)Q%y!10S?I<<V)1ո*SEՠ6ّ6, x;6]l `зB >5Ҩ@& $P|^KwU`*&+c4 5f3WD\cf ƉuTp3w̯x8=iĔwOk\{6p1ˁ٪*&a}Vg0dGZU39 NZ ,N@( uI^zD7tۂ?}6<uUQJeך0.sZ~4ȱtT-lAgZ~1gE D9kg#xwB(53ᇩaoϼ`~tY{xTC97;lLKGLx;GC3F
+DTҫܩTt*C;SٔgPȳX_osqFH8$,VV|5/|O?Ʀܶ$dD)EvWbHqJ%mAvSidw?Eע.9Mef8\F )Σ* _W[ 2TLS%6<"j̾4pŞjtɕ=,m[JUN8hI?
+:t~1ŒRoM:B\T
+ 1Wʃ
+K%o7mI 1Ia4~,DGrxÞܝ,JM헾L :[[^K/T|,N:T3Ms_N b|HNi Jt(DPqFrVӜD$YQM"4NHP9%{9Q$5r
+P D|@m "E !E搢scǓ`ⓢS`:":zbb@3!ALsK,
+X߼f"f&Ldшs
+MPu@#D=3ɾ~f}M$s -FFL4wAp*XRgH&H&I33/E
+VHn{c$fJk5\?n][|>-y񁸉W5Q#2{.^f.4/j++"ubjp{/Bn˹2ޢFc9ҏrڔTpᰐ=\ȿ*`A{ngq^0SUW2I |Sk<ۺ-e]}:5>
+#'HYw.sv_ )-z`K)9i_XjCMTMqR=nuT{VшDs~bsƒlxoRe쫆oWж?)ew>C䒟_:ל(jg2Gg⢋*LG}0}ITWa<bWV恶Aú22ؙ̔|v#_yS;V'QU~(맞0:3
+Uى06jޏh?zsޜ"}bqEp~ŨS]NiNS`>ތhE668
+Z5FhwXrEzTEzx%VjT\PαR?|?U=a;CT$OzM7î
endstream
endobj
-635 0 obj
-<< /Type /Page /Contents 636 0 R /Resources 634 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 618 0 R /Annots 639 0 R >>
+643 0 obj
+<< /Type /Page /Contents 644 0 R /Resources 642 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 619 0 R /Annots 647 0 R >>
endobj
-639 0 obj
-[ 628 0 R 629 0 R 630 0 R 631 0 R 632 0 R ]
+647 0 obj
+[ 636 0 R 637 0 R 638 0 R 639 0 R 640 0 R ]
endobj
-628 0 obj
+636 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 448.38 524.299 473.068 536.254 ]/A << /S /GoTo /D (subsection.14.10) >> >>
endobj
-629 0 obj
+637 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 489.233 524.299 501.188 536.254 ]/A << /S /GoTo /D (subsection.14.10) >> >>
endobj
-630 0 obj
+638 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 178.598 512.343 190.553 524.299 ]/A << /S /GoTo /D (section.9) >> >>
endobj
-631 0 obj
+639 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 205.148 128.799 224.855 139.638 ]/A << /S /GoTo /D (subsection.12.2) >> >>
endobj
-632 0 obj
+640 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 240.576 128.799 252.531 139.638 ]/A << /S /GoTo /D (subsection.12.2) >> >>
endobj
-637 0 obj
-<< /D [ 635 0 R /XYZ 78.37 808.885 null ] >>
+645 0 obj
+<< /D [ 643 0 R /XYZ 78.37 808.885 null ] >>
endobj
-161 0 obj
-<< /D [ 635 0 R /XYZ 79.37 771.024 null ] >>
+165 0 obj
+<< /D [ 643 0 R /XYZ 79.37 771.024 null ] >>
endobj
-634 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F69 398 0 R /F15 377 0 R /F56 380 0 R /F58 382 0 R /F29 371 0 R /F20 378 0 R /F52 372 0 R /F41 373 0 R /F53 638 0 R /F51 376 0 R /F23 375 0 R /F26 400 0 R /F40 387 0 R /F46 388 0 R /F59 389 0 R >> /ProcSet [ /PDF /Text ] >>
+642 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F68 402 0 R /F15 381 0 R /F56 384 0 R /F58 386 0 R /F25 375 0 R /F16 382 0 R /F20 376 0 R /F18 377 0 R /F23 646 0 R /F17 380 0 R /F19 379 0 R /F22 404 0 R /F48 391 0 R /F50 392 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-645 0 obj
+653 0 obj
<< /Filter /FlateDecode /Length 16844 >>
stream
-x}ˎ,7^_EF9$ ԭ[Uak*
->QIeG)BEE?tZ_M=4m_&ž>V+p%^(^?Qgbj#ZÛS7"[jBE  Kg2/2x%wZ_}4r%!َHǬqwaսܭ5_}
-|F#f1ݓ6B :
-<8T~m8>n~wF? Ԑw8|-i ?o]57vae@V##]VYؔ~ꟗ[8aT* 5E.`WgeX+=DлWƩ\Rs{h_)>S[=ǽ^p%-i]c;1QGtzk qcʗF<Xy}|:valT̫o?ԩAxjfk|st*gjGVw-K N+ZO5^İ rtA۾ Y ڽTvxgp\S>Vuz8+ۮખ\g
-}a/B>XKjZ3%_*"eyMG<IK?׾*$KKΉ5zQIK V͕%9tz#@%a\Gev_/3uj!ƖH"B|}G!VR w4ln~1}Q+$k:PcV?@\W8 :"M,ٿ>Gw%3غD$ˮ:;upâ%reXJGVjκF
-oc^vgK2YK.O-=:L߭~(D[Itr.I;% p!5A;vB ]sȻƿE@Ch'?=vM^8i7]s'/3
-nՍ|un4S WY{I [)]v!ۃ>xF>eHz̽v29A)NɕsuL΃P>"ca8kQAs)5v'6>~i+|s157'kyXګ\IgMxV6A5 $
-߯OG3wpdAe.$\XiKm=_Zxs :Qy'IPSHj 'Mxsk"XB+؎= иPن']1DʦccI(~#%Ϩn)][MODOZdܣŢxlONuR
-}V=[_m$cJLGw]€ҟ?=}xy!C &ݟr
-_9</V"?EJNp6xh/^*6 ^7L
-4};gh~xs{
-O4f~-ֵ<sFOۄʟxlP336 4[[uyh097{HyܼWOq?X[,_٦)G=ݹ/ ѧ+'"6wQprֿZ?xoV2d:[o$]_$O<>m8B>(GS'9 Z~+d*BhG飙^oNH^uaN/ aA3
--?\CXfz5t;32_ _hljYOw !}Jo:R{0V oh=7ֿ]g}B>>ݥ)4~K߿ۓV^?_Y]73Y/Y3㗻ϥ/5'㝏Oڟ&z|:XRBtkݫu&8z{d&8z{dbO7b~JEËdR]B_h$ ͮ;os=|K7<aorodj=y\F7%v9X.lhMGqĢ\=RG| r+ ֖bV}>KQT@?Unq)Uy ;kǸ\S!R'(]H~+j~_1LVupFw
-rWyua +rZ1CaN|OѰ{ l58;}0HVqppFoBimkAgZ .ff񋫝.]QM*(7]K8*VkAEl0EWA9 cXP#w5?Լ5A.VETY2 \8q6縺RY03c3mv% q~='H]
-(px' FT`47+D6![;z@ɕKBfLBEB3!`YTA3604(Tk+ w3.J (Ъau(wU( w(WU44$}!'у<K[1]*
-dF\=.P/zUq(jh%.e s>pw#=C[}P/Z5H|OybK*bi|euf(t^(ﺺ:Hn#*v:1/=U$Ix*r]u;A=Lj9PSh;USJxo::yǸtu*ʀG + ALvBkܐ#GD/.S?/E C-S\ StS@yTkxB/֌
-t1
-4˝0w_ÆV]?P;.!u,@(=3\\ RgX
-WW~ZN
-R|M}} '\.(ãthg.kDE.ꃚZ % r!̘a\\~-zE!'. e*(3GcYu;U4RrR.9`
-+m<DC%'N|eNU>fDVR
-ys5FWDɑjU'4h%-VOH:s]<56aO;Ck͡1&^7We"*g@S^*ufjEOh:2ꉠD&(QۈuD*sNA
-Xrʎi4ythQwFZ]
-%Cup~aƃfY SmRQ;c< uw+
-I@
-Yx`(,ݙeŤlT3x2ﰳf,PҦiK0 `e.E
- 蛯cd8y3'ȼpftu'ZCi'xfSE ď/BJg}[eqM=R
-Π9 TjHw QV|~LwZ=+М7qg;UG
-~4b WwR`#1k:Χ[V$KF
-4#^?_Yb#!Tne"(f
-uqoi\M%BCK"%ߴ \hdz$ȒYlɡ`Iy]Mc
-I"%h6+@,TP3?u5C-NG ihDm>eH
-=:yC7j=þ3fKm,NQ&n82vaB`D݉IbpUüS4jWԣ@F$2Kޫq EDTuaF- <?Wp6:MR;FѻTXlqhZ-R!Qgg@Yg~A='4r!\c%X7ۊ  \MBl.++Iմ't0بq 9$ oHīl>Ә+sǚ;D'aQ0\-Xw6SR5l.+̛Ї pq( +v@WS%.OU,$$>69kNB`p~j}GŕBPV# _Vޱrg|f4㙱Jd|PL/0og8~
-&o*{ > AjIj 
-~ho,R` L<
-]*B(JL_zI w{qF[y0<W^\=Q>i*#[.m>\L_-UJP)ih?|0*1oLttf SBL4
-Zhg[^jbbG|`V*Qx7tcN(e}z;{<J<U7+]B=EWWRx ʵӗy ZDn3 sSej6G_tBcCo$9#-4F<;!S;Pobځg/sVѧ+m[ Uq @7]8 .
-1>8 ιPƫwk[j0;>f,23CFJAyCJCX-U0)vƷNǍ*t@/ljn/HWBߵP,p1P/Z.(<{oa#^R`r L yN zBNMGrx>cOkݝ@LaKzrDiۢHp
-6cq;s
-H$ǘlj׹EIJB?]Ċsfc#X4,J%=<SnCFr@yЏ8qGP=I͸gOU&`x>4f3#8>qat|8@ʕ]
-j8PC-ᄆXߠ2F [UHF>> -4~4Ց|Gm!)ƘR'rlP0W;UUx48R j8WJo61sL&v<^nSSvDl{>撓R`R t1w
-&TYaUI5Ç􌡔| o\I!fxH4)@hO:6g;$'R` LiT5="8816AϽ23@Ę7-#+b#Xp[ڇMbltIǠk'e,7)qJbӃ 0AL1Snj~*~Cj,x< cV)
-J_͑05J(&Pʊ癏R<ۅp>2s5OGP
-1u U( L<qW8w.?aAGlH<^8ڱJP|~2: 2xGE/BY$O!J(F'2ֺ f6ƽ PrW4D0U*ZUBsŠ# lGш1,5ͳK@*4E, t1;,;(-TI) m}s,X0k6KP,U, L<qAi*nbOP'G(g {7EZXRr肁R-siE)s 9u,8 wh\`t><]#r6 GP(R J<,I\jy /jkREzHEYW RKJ_@I\'BUXzVQ,>=㉱#߾,[es(((w@^ ^uTm -6FDlJ!:y\]:*;b m[:DK2rRoJE,<4$Vއ* Ckz8C5gy?(}K'FPO SPȣ0w'"!nӀQǒ\b mCwu\{pȣQwZ]
-C[)BJ)g+
-*󥌭PƢCܝ T;u[ETxpY, |D۰Laհ ͝BGk-wG4CaN|E cBRɇU˲Dț~aWYϪ+]f2y U>NY[(; (!(lwBgzϯ-ejI7@E3ZgvTE`4"ypt9 ʥNv_@EmzS,̗jh8i_,2&?I)Q]αld49SW*q YuK
-?iBXf)yV
-9|ݪa|z%#Rq繴p HYh98-W@b ܿ+@}0 )WxܣE^_WQ1Á54E0 ,<K7'dJ).[EksUK'T_ƭ!nj!l.
-.^jTezUn'C])twMQ4YF VvQDA. i؛ duM'Yz^M
-5Dؘ̄K
-G,L546L|_$'Вc/R
-X. 6fRQ)  ۉK۫$t.Hc]"fJ
-*eyIWӱz4 d2hKeoLv漯ojrxri஋ΫL捦4.3
-`e.E
-w&/s} ss{"\@_ :0+WVԥ̢ fɕ LH.|w\GbGoCțUb%:PvS:ADw8 jv m  [+obE
-tp20o'2 <@!b腡9jnnm>&;b7i 4ʝNQ}%s7XDn#MDV&BG/d^7Pm5u(P Ki/ZgfH=Ot3@y@]]?9*t1
-Re\@s{z/P s{FvJL\e6\}acPy&8&2
-pk5H&s/!oyӝBRV'< :9=3%6],z4 r厏:ƻ˻W>cB{*P?nv-89?E1gGy9 #s9mq{M}b>c2&=g?'Ezx< Sk{
-4WԊYDA ̈́9 }>+#8war2'M3~A}c2HI*c3OjaF#"33&j&BC2hrhw[Hm&Jy$/»XrGHqByOz1W8%
-rqrXf\FN&U7w`K3~.4δ1~#.`R{'CFBC4'>SR
-GiJ(<(n#BP&H)Pq{np$D!Qe7N=F>mBY_[(UC}(T&-
-DP-y_'V 1l\ y؄
-֣D8azhJy8Dl>/7񍿠g.m/)gUD>ȳC/porwEczO u5̱(v^:߇-R`DhF\9HHp8N(3sRPX~ .i0hSՂ[M6mi@T .H4Sc.OM %$:O~ -|k??_ s& w&v<=x˿~O_~Vÿ/_q~gN<pO _#x/g 27F.)Q>hȵy?rل@!4Iޏ얹r{]?TO`βFΝԫcwJ(x~7Y\sX&t(ަgqڮ[edWdEѲ,aQEnö+ZgEiV'4RKA$i;5i)py_g&ˢ@۝\unˁUߠ.SFM#|R<Z+1"8. w]ҝUyJ7;/>zn˅rsomtS- XI \aҽF޼[Үbµ:k$]Wg}=Zr<)bˬ7ᾷ6jICKR>^.RmDSf.î꘡dh0U޿S<2Jm(,2=- -7{Z>~4yCN>ޭZKz@5C{`6E >qZx-Ou{'Yb:}5}<=mE!]M5DaH#;S~4|¯QZs>0>Hw%A%0 7ɧ8?
+x}ˎ$9==6I Q،̞SƜbQOJRU4wfQ 5ISfqqcOk_~_w)ʥz]~ǑqQbv b9x %O>ҟ/ƿ>Jin|2ͥKs|⾒Ğݏq|2ΗϣolyLT: Ssܯ:LVkH={0*8b
+>QIeG)?BEE?tZoM=8m_&ž: 9V,JQ~ԮGJ'^'/o_$!
+_c̻'m@t$yp=-p|{~>!pnZ\~8ߺ'kn^[ˀ''w tYeaSz["?+R ?])r9*h?#,ZM &޽6N墿CzK"Q<n+lݡ:ߠs][/UӺ*_y`Y؅yjWS1O
+Iҽsbzn~bϷ;q4Q>*$'BN^U$| ׿&qNM#RģTo(Cj펆M<ͯ\Yor3J|Dm^jQ\j=;
+'A5SI%]Dw[7vdٵ_#Q<<,Y*W
+/RM=՜ulc^vgK2YWK.O-=:L_~(D[Itr.Io;% p!5AvD ]sȻƿE@Ch'?>vMV8i7]s'/3
+ SMpwmԵ;X
+MvLE`=]솪6<_Q*e%TV=ƿڧown5==ekAs՗Y/>;_9H* [i~}+1qywa@O>YsƼwʡdOq9R_V+"%{'V8<dj/MvS&OiFeQ~@x>i3Q?=e3?k{Ŏ9#~ڧm W<oNod-rm4ۈțʽSɏWfnޫ'}PM-IOlS䔣W[pzoՕpi89Ha~sK[5+\{0-wMnn'sec6!˺݈Dԩ7wYw-i2B`ye!7#{LYWc7OOxygz:F0]hG wgEYv~Ιys^xf~2si?/szYgiޘn&۔ d2#~/Vý(<X,pw}qmLikg>L)epsoL<lFMd p0ߥ&>+/jl<٭N+Igz|dk2nwj|޳vkxYo<=#yj/ݽ?ùxwaTG}&Wa.Na\pEaM&}17ω}mF-m1z]&wA$ RA1ǁ?-VJaz5JFcʛ\|hrhЄno/?x˧\H^tBOq]Fvwy@$}f֔Q-o\uk|{|/bݕ*(Zw$i
+:FM|G#M]|0ZA)4] 5=.\s h ;=sSFR6׌W ZA 2
+]iTek,/v(7'Fw06ģt-XYA] 2J\w H7N`C$rոIR| XA3Q~Ld`6[,pK ďpە0?.zO?
+-z25wrI<@o7NdQ͔ڨѠP4 Qb+\+%@2jhBU~Σ4<:ߡ\Vqp@wߓ<pܻrFrPs,Unt*q@U!~آ-*bjl$M m)Acǿlhu y͟NP?i,vĒAkI vחՙ!yW긶"zP)9]48x)"IOhMEKWxsߨ3Dؑ aW;yͰrŝByR xqԉ gtjUQ<\ipG]dzZ[9"zqѧ})
+whhjbB
+R|M}} '\.(ãthg,kDE.ꃚZ % 6B1O;7gGչ>vu[RCN\JGT}TZ 1[QfH ?ƲN!)w^h\s,W  ;#8U!_eZ» HQ*.^!So'GUl@Xej< "̡wDxo(ǑxJ^k94yꠤyT/,HV9S%O{ԙYf <  ʨ'iDF#PIMwgSt
+P"u>c#DsO9t? 
+KޠYK .!?;ZZ4n䧻.l\f3@3m'kM
+<SHdEF7dj1w*W_@&J)c-lR0g'Rq hS#JB!Vܳmڄ+%Aţ!cp(jtԝrq4@3TW2&Cɇycە|H]9pfirQWJ؊De,63TDU4}TS;caLHL<74ڜm
+TCcc%_DN Jm,hR{kG_r]qgX^AY" hԗBQ!  ;ڸM֖OF޺v֌EJ"Pu3mY]f2
+o2뛁XJ_ ƟB`'A(oԏ!yZ_'Nݜf 2
+$rq%8kxzV]Q6<cra\GLoFzԍ
+t}'|9&_B)6q FCc0Qgh׾+k>h&=[)UЈ3^I坍\OoY/Q)Hߎx4f"P
+C6OYl6S3=xu)HFhZqGoT{VP;`+E**k!-]Up0w''yn {iDCi"oT¨~G)l$\_p'NKhd1FDm/3. bҘ6wW^評 ,kVlh5\I{O;U;n WM*35̥aR&C.iHRZLg,U=_鱺<W2SS\"6Jk%B+j[a^c],Y;w^C<gIMk-@a.^ۜ[o1 eq{Cr(}W*i3+%9$,;AIXF||4o'K]&’KK"%ߴ@S%.OE0t|K5BXCH MEt [h.g*iE[i!NO+D%9-4Ki|TyK,DtfВH+{7-TǝY,i jF%TJ`(Ao*j 4R]M p14$m!Kё'jɚH37 G~\M@%ATOFjK-H$OfWGxK#o*!0 7 ZiE/N.D$=A`K-K"o30UbKp}$J_M t1U;XwTY*%9,4KiT
+Y:OQR3}xZܠ a3"5OJ`4,L7q yFymܢ`=g$'If2h x$NJ\O"Q#}loq\
+zԱx=:B7;EݢW)ܢ-#>%%e OUr]MLJ^uy)oP艀4`Չ=!Vm1KO| x]bhgw7yt10o 3 NOrݘjlQNʥ4Z,'ŝԕY^kȮ/:@%❥ K5lH`2VD7p&~٧5 mJ-B6ޥbTTGشl
+ <S?k: ]9 r+rǾ5e(VGLpH|
+*x"jFV )O-,WOOJ}FV"e 6q./ª%c4C4ҟWy>Ífj7&o:zf SBL4
+Zhg[^jbbG|`V*Qx7tcN(e}z;{<J<U7+]B=EWWRx ʵӗy ZDf#:3
+j*
+ۍRpw%jI3tX<nU!Z~=?NGE,(w<}AG_87 ` ξgi'GzrDa{ sg`l[tBN o]rj‡(=$OL Oƻ{X#<`\ 'JOGz܇wV`o3'*p3WHBqi.ʦy L)Xd*[5M:g;6MǢZ384h-gwܓ+Xq1\㉶@χ,|y7.NϖcH
+4@}Di(gj(ڣOe^b7ccM
+<ѭ!>;Fr@%[/i)u"o3 sS@ UpBCU̍oP[P*$qjg HszcHylP0W;UUx48R j 8WJo61uL&&syܦ<8o6u(]|N%'tb: -.7:HZJ[Xl.3\Ƹ({ENJ s35<!i@Z zxL.
+'*U'0#,|0(ͶkG;U
+OFT/hE( rd7]B 1
+0R@_
+_u0RseR Y\-`EX>x1OXm]H(TT
+1uiXVb: 3wZJz>a+Q9?Ňg<1velVkN#*x:hM)D'/KGEPv~T,pKvPuI
+GOôPv,.~K$ mL U7@E3Zćv:[04()/'E$S*|ΤUcK uLax`+Eȴ1T;l6* sw;A2 $K
+Oc[Dwl}rc|-R(jtԝbq4<$ۉcTL\ A36lVi䖁!%-c3@LRV$
+c20o'r2
+H]c)C,qgt GZ&y5>Xk< NW2&D_
+OyXScW}V?[ySQȨ;.H|jىL@p}t}G U ƱW 5L!djtԝqrQ  ' sw+gy:|
+G2 g(%fjƩ[)(jlěQBi48S
+U1"A[ʑ ё1YN7x) 5E@LRV(Jcѡ`Nd``*Н:ϭ"*l<Z,>"mIh0jXlN!PGQȣ0w'"1!|P)eY" +go.3i<*s\DIܝNy  x6;F 3n=2_M$͛BFFe-wF3;`v" 0JYGe_8U@JRGX'Ly/
+Q%P9v eyy-K)?
+/axǡ
+f Uh{ͭNȂ{
+:W+sKEffiY
+x~"Ky+@ܚ"k
+\%PՀxI2z-L"DުZ~/JVD 7VP6Ms^/5vϲt*& (,Kfd+;("@  EMY}
+`Rw&goXhɊ1җeM)YFSYFR3sXᨔ U]}
+z8 ޫ
+wf/ozzXH6rUM&Y_M0`cf.U
+ `  ;ߗ>
+)Pq ~AxA~ۜ2
+0PO߷SW=oŊm;cC'
+6baN|E BGü3S
+F<T' gM_I<&] ihh~$t9/U7gFV+ۈwvBKDEh
+Usܬo+}wj9C"ЎwKBT9x? *Ȝѡo;W5&o_6dA`a(;Z b[ynt;U4 ƻ<悥NdtLMW'6˭M\N.%AءP^>)O,unly/&"e&Ə5QG̙Q sN|ąfH<mN[^}?FpsXjأ̩ pϼeaIOԚ,+Ay""z(Q9=C3a$v"9||Aw
+<N]\ I{d|Poe&)̇
+Nzˍsg'!*q1Ymt8@bFz/F2Q.h<o
+*xFgAܝ::k,eSUE>4}:;4'CƠaj}S2J*Z2yiTXF3>3f֧S;Hf4}Cb  yqR2;/Ű2O|c) qYb*[4Dw*8 \A=7!@y5srnިGVD Nt"*
+hNKft㙹L )$rW#=3X` Huq
+<h}c]zHG?LMi5g7tL_{Kf噻h@>O;; [7]>vXspŠj] s2N4bxK+Z"4S#b.ϜE$$dj]d'TT9S)? ?A4}a4)KzjA&6O4 }
+l|uq1'z&Ip'Ϗ_?9qEܞzO0*0 Y/(݅7O)^~Ǒ_o?˩ 7?r虓'.J^u CðeXFh)ꃆ\G&}B
+·\D]z?f̕#Sr|"s7
+t^u7SBq{$?m_?#`ճ`^5l?z*="^kZn]UD˲2E2W ۮhǩw<[H鶊3>.=X֔}{ѯ֯r7w#"?owre~.~HV]~L5IhxĈ,DӫrWܩW^{DKw>c
+eb|맿>^+<c $
+o8$Ŵw'7Eܸ~ݍ&}WqAz-|(w@~{|jl ?Y
endstream
endobj
-644 0 obj
-<< /Type /Page /Contents 645 0 R /Resources 643 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 618 0 R /Annots 647 0 R >>
+652 0 obj
+<< /Type /Page /Contents 653 0 R /Resources 651 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 619 0 R /Annots 655 0 R >>
endobj
-647 0 obj
-[ 633 0 R 640 0 R 641 0 R 642 0 R ]
+655 0 obj
+[ 641 0 R 648 0 R 649 0 R 650 0 R ]
endobj
-633 0 obj
+641 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 154.725 723.678 166.68 734.627 ]/A << /S /GoTo /D (subsection.6.2) >> >>
endobj
-640 0 obj
+648 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 358.772 639.872 370.728 650.941 ]/A << /S /GoTo /D (section.15) >> >>
endobj
-641 0 obj
+649 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 306.379 485.652 318.334 497.607 ]/A << /S /GoTo /D (subsection.10.5) >> >>
endobj
-642 0 obj
+650 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 385.311 334.678 397.266 346.633 ]/A << /S /GoTo /D (subsection.17.1) >> >>
endobj
-646 0 obj
-<< /D [ 644 0 R /XYZ 78.37 808.885 null ] >>
-endobj
-165 0 obj
-<< /D [ 644 0 R /XYZ 79.37 771.024 null ] >>
+654 0 obj
+<< /D [ 652 0 R /XYZ 78.37 808.885 null ] >>
endobj
169 0 obj
-<< /D [ 644 0 R /XYZ 79.37 591.439 null ] >>
+<< /D [ 652 0 R /XYZ 79.37 771.024 null ] >>
endobj
173 0 obj
-<< /D [ 644 0 R /XYZ 79.37 161.114 null ] >>
-endobj
-643 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F69 398 0 R /F15 377 0 R /F56 380 0 R /F57 381 0 R /F58 382 0 R /F55 379 0 R /F23 375 0 R /F29 371 0 R /F20 378 0 R /F40 387 0 R /F59 389 0 R >> /ProcSet [ /PDF /Text ] >>
+<< /D [ 652 0 R /XYZ 79.37 591.439 null ] >>
endobj
-652 0 obj
-<< /Filter /FlateDecode /Length 5680 >>
-stream
-x=Mdmu9`HWi9>$\ׇӫwl,zD(O'z|S'GZ/艝#BьPN_>3eۯ.30pc:h*-e𗒔j?o.z-A^+ڗo.S.~}o_b_Q?<҃/gn?#t.}Q$67Wn P,ƱnN#[pQxgt1FuI!'$~+r?"_ݔ SHJ@q]҆@E+ݗw/@@7Gsh&Gy[\y^c>4I5$,؜1CԴ1f!IHƽ
-ۢɂ],zmY
-4ձ-XCo7=ZAB׶_35-?/BB@Wv(]M$Л/`c*/._X](2N0v[yVEŝe- BL$XC_R}/zЩ1{"vbhiS,dy9Ji[}O9wٙbH#T,Sjkݍ^)]lR9Dap m{UzrI
-(氹 45n1ky
-&WH&YWfۊ>
-{Q|uۭEu--:{k06/$az{36-RJ"ʖ,H ~eKA`O&
-yKQw7аK78lDpp{}Upf'AKH(% O2~~[tCz]A |
- Z=RVإc@u|ץ| (. .a|J ,jn<xÀn }
-&HK'F9 FMEdǹ/E8/UsL /~T^@`^jȎ/ٌ,nfZ-⍔/dǮy``i=g\NBaK 9HMʄLu< tҮf-.8/ԋcEzR#sMIB.#~ HMj2\nUǣ2u/`an5AѦXPmκAvDַjnz[|S
-2d;hk5Lm 3.I]3ywq+ m:}nJN: pXl/KRyr%C;iۏ*"t7Xs߫yFp v _'y=|`Mh+6c> ^?z^C3{
-:S8/絹ݼ"f}ʩܪ _+?8^@yDPf*,
-a_bI*D/X<CZeb-|滄o7Jҟ'įaD8$:y M%߹U=j7R5-o.kmK0"/G1aW5N2 7 ݖaeX1ӫZTS~US@ЂUU ?m^HR5&f@o-UЋ3^Kp5`1HX=&\5l X렋.\@!>Ak4Liuh~0Оk>Y\ǖҴ?/fClY;:Q&
-B3#+ "iW؁.'V.|YdVA afޓS|xg'#"H@ā^ȹyPɻmQn']7?rbE-aϸp.TX#1]XrH<z
-7xy]
-h-\ C 燖ĨGwZI<Ti>L3`|Rcu\\[%?4J)ULƎk -qrؓ1-X>8q$c#SE0I#/3,U
-re`dtOR<`C:# ޼[*)s\g(VS{V23B1%mGY*eTWdRZ(6 :X>5k~o0e 2tG>HM_]<~ %~W
-3}
-endstream
+177 0 obj
+<< /D [ 652 0 R /XYZ 79.37 161.114 null ] >>
endobj
651 0 obj
-<< /Type /Page /Contents 652 0 R /Resources 650 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 618 0 R /Annots 654 0 R >>
-endobj
-654 0 obj
-[ 648 0 R 649 0 R ]
-endobj
-648 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 380.656 487.577 392.611 499.532 ]/A << /S /GoTo /D (section.11) >> >>
-endobj
-649 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 409.423 487.577 421.378 499.532 ]/A << /S /GoTo /D (section.11) >> >>
-endobj
-653 0 obj
-<< /D [ 651 0 R /XYZ 78.37 808.885 null ] >>
-endobj
-650 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 377 0 R /F56 380 0 R /F23 375 0 R /F65 383 0 R /F58 382 0 R /F57 381 0 R /F20 378 0 R /F29 371 0 R /F52 372 0 R /F40 387 0 R /F59 389 0 R >> /ProcSet [ /PDF /Text ] >>
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F68 402 0 R /F15 381 0 R /F56 384 0 R /F57 385 0 R /F58 386 0 R /F55 383 0 R /F19 379 0 R /F25 375 0 R /F16 382 0 R /F48 391 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
660 0 obj
-<< /Filter /FlateDecode /Length 4634 >>
-stream
-xɮbr }h4;!Q
-hw@d"89Jb; 
-LbA٣)Jq@tlXQDl4Oz}eYZDtw)^S2O CllqYULA@)f_n/٬mѢp7,!Y-U1CʴBsu*ւh!ʭ zq@]JEMfRp.v w:UU뵚A7#NʹS ~}z v靌3XQc!BT
-ۃm QV^# #umաj4[+Hqȋ4ɅU Y7="K|;V rwեf򸆯qСQZ{_lp[ola_`/Hq]\~h;pk U7&z IZ
-˱>/&G^jUx<1a󭬦[L1|ׅztn6xzJ@kЏ.齃p;ƃNnUr;']F6DT8p
-|HrܙX
-X1J0;'gLzb [Da͆i%J:%'
-ex% !TUC7]!
-weaI4]o7^蕂0o;<VJךU~i-T޶הB;2ٚ+أo/"/z/|c L
-ӿOONeӅ8%QVhn \`ǖEhFZtڧg)8P&OgeDx88v !S΁þ"k(8O)
-
-Z¨L<:Ks$vð]+꨺Rzڦ.j>+!G߲L&}$z߯䕜ÉWկ&ĘS‚ggˤx$bT(eS&$.kJ$죊* &jyfak噅i37ݒ}d9(%G?HpM
-J{pr‡A\9[9qĬ!nV+ڿŦeI,s-ifv4^qY8EYf2W_ky0e^cue{p8ə u/ 3J%=R*i%L'/i>TSH
-hVU@Sؐ{uk\V\hs]cn UXgM/kWզ38%;HˈQb4_1;{I+v~þ11ZoӕNjFq-]/UN2Qe nF<L}t6D|?1ppJ u/~IX&Fbq V
-GX΄; R",Knͷ#E
-(NtwX ? 1c j- *v=ffa1 ߷ƿE֫=|s'lf:~jyiIz>Sr98kߗ"{:coFgň.YZl1^e/ؑ)QB87zmҽ*!TۗOJZM^Y&kMEkiv4٥x7޴rmP|i|rA&a]k 7+٦')% Ot[B\WԎx#XqFsY,={;+Μ=b'J% <v骡E3!VY'\J/յk6`TxĞG5 ػ2LlB+321G6N9Cͷ U׹TK
-¿+.-w:;PNӎ^Svldti+i*[ZH{ԍ3_iaOXPkJW58y
-*K Ӈ^b M=loEhp@tjY"c=ֺ 6. X_ `'\*vGx0כ戃s,'0Dq7nB
-nkTj"k7
-h\ D@up ]sߤTݦs)p,ßǝFMUߖJ|#H%a
- ϗ!L,: WR/|`J4SܴD~h:tYc|;r4ً?ioM/>
+<< /Filter /FlateDecode /Length 5822 >>
+stream
+x=ˎ$9n<h49pv`z~~I=)"B3.,5]IQERI }x#|_ 8H)/~>sam͔cLW8c' ~D0
+ă-~HƧw/O-%ñ|AW G8Bc{r^U[uTBኮVR3WRdjHS^_<1fQ=hZّg#Ve-V~_V,}YoV=۟׋j+55!"NAH19fw`ϏArw$mEH$bSrWimAFH&W
+9yjvzh+9)&NsElm-i~$n.V^
+hwjƧly@G0Z&R+_P@pcu
+p*w"<AV*{COtV}U"L2p[T(͘}cJ()أ,2pke08ƋE*=:-t7lv]S{h1df7xMwa9Qs&E鈠D/qCNcVAWDf uTp-pq X|F;Ћ5UA6kXdߔcj~iw1pҐNm+4lEeW@$,!ޒSQ3=~?ɂ+:FL{Y]6ǥnhem٣c@3Ėͨ:(9@XKao~$8 (fx&2b^j4;ν
+K=f#t[g_A@Ƅ-cPi"H .R1iD83.o3C?eQ\ gB.s8b9/[h=IVt<eS*hd7ي!0) & ;1ۀI[4 3 q);"Xzqf3Qr-}Se(F{#MIֹ7W"<!buhU
+Vjt_:g:fne³g F0zL.
+6Z/kZ5~$FX/Ū^2vk?27$ NcP^V()4Kgps%1ZZ+By[#I0' v=04_񫱽f5)mߙU=]og4&US=D稢gn;Zo4Sv?S?K"(gvj&6ѩE #쩙*wl[s{_9Z47_8g|y:Ѽ Y}Mv>n
+4%J9poc t~qhI eFѰʗhϴ4[QC2DRߪ{#L,;nqӇ/
+|%p2?]"օsUL.hW '5%=<g7IBGaHf ' AKIyH
+ؐmS%7{=5Oq޿m_;CË<ճ:X}tFZ
+I݁M* 4"cCYEʙuʓ+/\W]Y<CZ#cˑ*|yv |r O:wfd
+/}Z-ok8+cf=fSotnʁcy ׽^P[&cjo23`(d\N(__.Gkm=R |lAd:…|\Nm1H\s$`gw1jDL?-/":tk[I-1Ky+ui]QbbPp~chOI
+Uۄ7 lvn}f] (r32ӂ`[#;tZ ]xKr~V)Y+i 4ELZsY
+8%XJF΅E`-0[0QWh(C\đ/V7dWwOO2bFSG8yk
+Gؼà惶XAisPGh~\1_hD.Q!lp27*pVϠy<S6pk:~7͢1P[ z^CFDzӎ2e+E/2+zaPKFk
+¬R{e"k.W+Sɵ+86dTSFVEK{Z`kUѯmzp% fx`iFMG20ki_ =岺CImM}Y?6Z*u,9?Q RK<8amR/5؄{FՅ~&^?> C5>Š~ؽݷuŴbll 5FiW:oyfkd9Ɵ<^H۽e-^ +wBEiT7wgiH*j'a9`
+Nrk+ ^|Q^qBȪwp./qы.5/B}=o!
endstream
endobj
659 0 obj
-<< /Type /Page /Contents 660 0 R /Resources 658 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 618 0 R /Annots 662 0 R >>
+<< /Type /Page /Contents 660 0 R /Resources 658 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 619 0 R /Annots 662 0 R >>
endobj
662 0 obj
-[ 655 0 R 656 0 R 657 0 R ]
-endobj
-655 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 402.269 316.805 414.224 327.754 ]/A << /S /GoTo /D (subsection.15.4) >> >>
+[ 656 0 R 657 0 R ]
endobj
656 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 178.2 245.074 197.906 255.913 ]/A << /S /GoTo /D (subsection.18.9) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 380.656 502.863 392.611 514.818 ]/A << /S /GoTo /D (section.11) >> >>
endobj
657 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 210.857 245.074 222.812 255.913 ]/A << /S /GoTo /D (subsection.18.9) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 409.423 502.863 421.378 514.818 ]/A << /S /GoTo /D (section.11) >> >>
endobj
661 0 obj
<< /D [ 659 0 R /XYZ 78.37 808.885 null ] >>
endobj
658 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 377 0 R /F56 380 0 R /F55 379 0 R /F51 376 0 R /F23 375 0 R /F20 378 0 R /F29 371 0 R >> /ProcSet [ /PDF /Text ] >>
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F56 384 0 R /F19 379 0 R /F64 387 0 R /F58 386 0 R /F57 385 0 R /F16 382 0 R /F25 375 0 R /F20 376 0 R /F48 391 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-666 0 obj
-<< /Filter /FlateDecode /Length 4950 >>
-stream
-xɮbah 䍞FsRI
-0~aK}cзJ#[ny,=\=D<~OTM^RT?tIWRIl/[Oq3rSCRP0fsdK^=ȷ m9V[q<\ߞawHl :K9٭Q^m}1{{+ oK I W@M`3mL/zn4/iXFX
-$zJ=g.դ\)jQK*H cY =XN z)V~V`88:aS2CߗOUc(RYpKRt<d!*QV)4*Ndo
-Pa15~G}IzLF$
-7CQע˸]v.i yH尧G-zL+'%nsMH6/ytJ]Gn]6/kF0F4gz?k+!wG9GxB o3G+,y]JȪ$G d\Bwrrgw]۾V)Bh*)3&t1y*M-=8-I.ka7fHaS&-吝otq{ &zە;6YuU <e4GQ@~Tel~Na=<SX-%n VcY,%Ս2bJUΒ˚DOMBm>)$h>r
-\@lc
-pm uPy";S9(8BJ[ a5 gᇞ5bi^7OZO(?׭OOѢZi ,-ceO4_f4?!0?b+L'؞FhE! _XY/1k^띰IZNXzf507nFE!OQ!|} dni4 =/oa=Ag~sÂdDŽXOM89 g<p@ 8C F,1i.fO:m򳢰*K{븜Tf;0βqy_:㻥6B8zis<܊5/PC:5D\@k:‘3 ylw^? S[Uağ&Lɮ_f9 5D}4:;-%#Bbjcp>t 7cP3_C]>83+ O_~$C>HjM0pN{o_ 7͔X3v{ikf(.ĵYB)fgc.mW05M,F%Nu: jHL>ma}9kj_ Y:ߞNB;mRbbBlrzZHw} Ґί *<ǧf}&Օ(Gԓ*ۃ8JѡwCmrC),KQX,AgkKt4EA#d]))cej+C3!Ϥ<Kn]o#~K
-E5iu;q}&63'S1;a9A)yQms!AM!k5xI,1Դ~7ޗ{n-aԶͦ#\le0 ZLAvou?زX>WWHq(vSWbMt#yX(Yl83 iSz#=8A`*O[_#׍yG㳸5X:qCJM-{cJ5Zͪ΢0.#TOY'md
-ۙjEI?3X2,Jf\>B" Ӽ$Pϯ#|F;.)ќ/؞(*jY؟,aU$GYR3T,:qzA̰o M3LZl9GS)ګ^BɊ1H81}KYƞp6`I^}it!$07")`RIq:ÂE"ղyzQ`hϨN_e WRΰel 6;蒌0%]\sGs-.ӡmvǥeX|eLd</7(qZ*q'JpڭOXqʻaL[it`
-6fuc!~;j},
-!
-4f?$ص0F4Pf!ׂPS3\n]3H{B9KA<?p
- _|]\R3(Ω05zDPD<EyGTS T9KVm{gv ȅW0>|pЛs$꓇h:F*nf겺-`5:簯nyK5tv>#9BpfÀ=1ի7lvfůh ` 㷛ԗEܳ%'VmC+^0zô%{T)t͛SĞ\AmfνĞ\P?XҎ"{rWx'Fn\c {mw"M8؄e.>͠y \D2ݖ.kG)ߟ)m`iVVy}ro}[{xcX)^' a#edZ~s h$vȁc著=F9"sX]YecβvӍ-Mڀ~{h|9 23,BOߦ,BғIE\TKE,2~&~+j(nj˽Mm܈Tf%p;bīhuژWi @!қ_Go;DX1!H{s򽐴qq%j2^0[+N_ZW;I3y_LYAfeu&tS=!OEb4Xy"^-ktk6ʥo})lcYE6.h^Gy'Iv~2
+668 0 obj
+<< /Filter /FlateDecode /Length 4826 >>
+stream
+xˎ_1,h5;!Q
+O+&Ɋ~j/ V bH:+)L{jݙ6qm#=[5T XKɃK6j)Yp%DvI 'hXXtI3&Nfx `~b6dĜTy4
+u ,qXXsDmesxV]/a/1O![,Y=-|v}%θA"n: EsI,[X~0kiwCūC+#0TrV9
+xE,L6 -&V ^ZTn6\$$eʼ o3KiZmZkljѢ~w%B~wklA6<v5j` ZnW:p'Gv~
+G $`4lܙXXs`762 8/l]6>[JtKg
+ÿNOu%OgF1;J(„>U ̲\KOOS,鬩
+R$= vg8͡cMۜLsLN;aͭVmgbbɢsŭ,D[,Ý7L%&Ʃcsb 
+e) ZWx`DKErb`1M @=r
+8^>~
+5Q쟩-Z"\}A$0QUe(7 A#_F;G[nT1Cc\օcYi8};# ,86!5[
+QY:ͺͥ!s)]{J%#RKQOqvC;~AK*NvIbv!Rgupqix~+h-Ij187B#~I92xtzJRO!=1!I=P?<jݑ$
+1Amm$YjaJ8Kpw6"yxe2 8, 9~el`V n4i6\EhqV~mU6G[JUN]g?h̐o-iڱV*m}bt%xZ+ڊh 8+{awkΗxuJT5ݟ
+Ʒ ZG6zVa2
+ nsVi,7U[oއڪl8Z.]/0wzAv#J.obC`vMns6눾=bnD;CᲘs=6i37є
+v[K%Ͷ\i?cŶh.|Pa֪vXt0znKT-@P4v렳ӆE3YզeHIUj"N52bͯWLx^eNl. * UM59JkziE;Lqyhn;'qS0i%`1^*nݳ q} CFrDR;&R24J u/>n^\ZF ɞ{XŅ\ڃ3EXꗶ#/W} GPNoXJA[gPåmm@FL5oqyvvn 6jzy! 3U6o*߹ hgSXcOgY$ѕi{,-͉W *jcِQЉK ܺmY*;ܾpM/5g^Y=׳kiv419n<Hh[K['~ԘXda 7P,rͲf3 (kkX弖gs}/c,y:3_Cq\R2>yn*ا\
+v&-rTBʙ3gC?["Y^SĹm퉝Tslч4 'ncB_`)u T2o gL|U ?\u~KlCaKˎд+/2$
+'k`IZh jR`J8Nf+^%&IpevY2+羸\Y}k{ O*(2b
+&c<mgM&A&֛-N% #aQX:5adӋ;A/45cJ"~$cg7[8]@ɚPDn'j, ?-?Z2ױ⡝A<o#+[n㮺7|A( 3BLD?Th`
+u̠osܕ4%rPC8XMFEY$UeЗ+J j_jJS[ csm.n|Qܔ VHluPڤa_ff#:GTxDT,}vAP@t#~[Tz^ !!e# [/Ɣ#;ʛ?1mԅ/Ы1nB_JS͇N#GɕHв9Pp/z wj:86C;Jo0#ԁt6ԠC4PYNlmdQ s
+ZTwWWP*!ȧNCqrPvkr `dwmiBW dx0l~p^/7%i
+oo#VQ=+^~dZ2.C$}
+B9!U=,$br/lWEM_?fwiT bv*X"v%cN0^a+a; kev/m
endstream
endobj
-665 0 obj
-<< /Type /Page /Contents 666 0 R /Resources 664 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 618 0 R /Annots 668 0 R >>
+667 0 obj
+<< /Type /Page /Contents 668 0 R /Resources 666 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 619 0 R /Annots 670 0 R >>
endobj
-668 0 obj
-[ 663 0 R ]
+670 0 obj
+[ 663 0 R 664 0 R 665 0 R ]
endobj
663 0 obj
-<< /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [ 161.072 86.225 357.742 97.682 ]
- /Subtype/Link/A<</Type/Action/S/URI/URI(https://tex.stackexchange.com/questions/685755)>>
- >>
-endobj
-667 0 obj
-<< /D [ 665 0 R /XYZ 78.37 808.885 null ] >>
-endobj
-177 0 obj
-<< /D [ 665 0 R /XYZ 79.37 420.104 null ] >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 402.269 349.38 414.224 360.329 ]/A << /S /GoTo /D (subsection.15.4) >> >>
endobj
664 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F57 381 0 R /F15 377 0 R /F56 380 0 R /F58 382 0 R /F26 400 0 R /F20 378 0 R /F29 371 0 R /F69 398 0 R /F23 375 0 R /F55 379 0 R /F66 384 0 R /F65 383 0 R /F40 387 0 R /F59 389 0 R /F72 434 0 R >> /ProcSet [ /PDF /Text ] >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 178.2 279.028 197.906 289.868 ]/A << /S /GoTo /D (subsection.18.9) >> >>
endobj
-675 0 obj
-<< /Filter /FlateDecode /Length 4682 >>
-stream
-x]K9rWs( _@CJ$XO .`ŀ|*AU`0s/y9}o\,^E]|Z닳JH._E*u_?ϿII'ח?(~r/#^HcWB*i,D/礴Kߤ4>4fxO5iaGen6l[q{VO;Z<; FV-;^ydC#W 4r%
-nGkTeӈ<S :oiuEYokgFMcۭkE+'_>U;MlCm.~+Tkm_
-lP*dyM1Q֪X]ǫ8H>G=W"Q=TtQ$gVS-<KkSykTG TiIqGڹreNEj ͔=u]&q
-Ueb#T05 ff_(Qi)(NM~{2FyT4Lr)e\S 4RSH+ <[,5 {G.led/Ź pyh+A>M3F/TkO4m6@,Frh6 b6(t{-3SKRJg.6O<[("Q怼9w^t2. Sȭs8 BX3aB!Ot\ !au9o.9ܹucs60T0Q&a`=5ErE>#Xhs38\Xe$EB۫]^ۢӶME_5- WrQu*>miVd'Ҕհ6ɔn- #)B۷u (o=Qgbza(7ȹe?{bұ;?n%K֛m6` .jƼ6k(d~~; mo4hZY\{:PaYQҒ_"H_7VJ{"žobKԥ7|ˇ/69.WO.ާ_;j%-?K4FJv!3.u) qԕW󠰁8'e)['1ɇ'婢':)}&w?Qo4}#%Hr|?
-Es]PSjxu쁪,iAssLj✻qFs2{~v)ιk[֗$<
-THwB膴XړCz][Y[L]/mAQoVa_~Ȃ@ecuu>8pqh?
-ñۆ RX{,k*μp׶r"'cȴgiM"ve{+?U֥`W5R7:Y[)(Y|ʠJB|2'jay5wD
-3Na![X&ȃxUwO쥜EOx7jQ/woxh>mL'+U1P Q(SDvwtֺ%h2 4
-Um>PV L1OMZ[^㺾ǂ/Yl};8PTJMM\aNy*Ƿ[C&C)sYFYO[uq,3} Q0E QQ}.^@ίpuRidzai
- i
-O`hD6%Fu^4>0 oUK((ŒaTZݐ-kyW eu~H*kg4w./I
-u>qw' oE%C m>E4yd˦.Gmt@ݩIۑ3[)S t<U6.km.#H`#d{@ygHn-v.o6M_NϙʬǴ%x5S'@|ӴP47f(
-e${_F)%qK5}݅%@3zfĽ=nPPK$#-<ͭrC& A4P;FQeb@rycOraS"2j,e޼J:-,5<#Fu[ A /6A?N6>W\<.)5=5ݓ;q}ս<Yq
-0RXg>x!j5 v35[*b:{GVtm:ѯt
-rttNExQ-'u\*RVV
-r;aP1<(<q(ÃJ
-x\'"@{X;}zȬ81s@h/ lu wޡ
-endstream
+665 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 210.857 279.028 222.812 289.868 ]/A << /S /GoTo /D (subsection.18.9) >> >>
endobj
-674 0 obj
-<< /Type /Page /Contents 675 0 R /Resources 673 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 618 0 R /Annots 677 0 R >>
+669 0 obj
+<< /D [ 667 0 R /XYZ 78.37 808.885 null ] >>
endobj
-677 0 obj
-[ 669 0 R 670 0 R ]
+666 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F56 384 0 R /F55 383 0 R /F17 380 0 R /F19 379 0 R /F16 382 0 R /F25 375 0 R /F57 385 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-669 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 155.393 468.202 167.348 480.157 ]/A << /S /GoTo /D (section.9) >> >>
+674 0 obj
+<< /Filter /FlateDecode /Length 5087 >>
+stream
+xˎ#_},2ZY&{KrJb#S7nf-$Zbb'z_>O߽c=qDьPN~<RsTK+`ޟ%s0J8vn oF?'8>/LpJHQz$ CZ>} 2Tz$C-R e0ւpz :=%Ts$UH3ahe7i-1V-yG:K]rmE+0Ә$`WEB p%\֓zK<&ڼ-D^ӨKԤ-4̈/.5Bi^8GhZ<W-Y)'LuęWIXO9{v D {2Ë(`7U/@BꉁoCb/΢"07akiG1to_sFMaS.}o^5//9=qrpdi2n@B,=Y6{1iQ˱idF$_g[15]#x:/K\u#쑵5Gڸ)dœd(|9wG(T11Ajy𿝚X#V q Hڥ,[QZ^!+>&!뾮bb))]mmvnCŤqUT4B QX<Wsu=8-rsI..7AsLez42̏2R1$%kSBILAgZW1b)e#-k*cCz~ZJX,#a)v^j,KDz:HX,CaYCh]
+g)d.DifAm@"㻟N
+BVYN!s>VD" /"ͥfrM@Q%׏ Y3"[P͋&`*AK nPQ
+’b(.1ƒ,D|E>,NXbX[h) uPi3S78BZbіM a7>7)j'̵7߼ HH"x\cM`R\A
+7\ֆisn/%NɉR㥍N9i&w]˧}TL߰$إɯid JJ޺ogxNZC`O/5˽uFMqJخt^ܪT-t֝fEjv{vJ xf9֚ ؊V
+ P S~QY(u?P[cPG"iey+"=yoﻬ,5žv[v Vz;qY>'-f
+Tl\?OXdзIzZT&mЂϹ]'tPAhW!%F
+6)P<_&ݞؽxm?GJ/W^N?sk6Լ ClOy}F"dZRlp$nĢ/hh0 hhCNR cqҧ:K]-Md>@VI3^i᪭ %{BϤ\krĥh_ L#|Kd^nqᛍyxT(էdua\ΐxNV[`?Y~_6H9V/
+>ͪ΢0.#TOY'mdۙjEt6 bEn&GPdaE?HڂǸ;>SaC ڶ6f EYW 2 +Ib0tdήRS VTz5Aa]?fhJqPӱ Vk|uLa%$l1^o1X;D.-75AL&#LV@RrPv"Aa5P6=gtN2;梹3< 2֟XG1ܫZkym{Iszǥ=+)vlS-WBC,@)̓/~OU) (.y1D`5>
+e
++rǕeohZKKmbA2=-[B4?<Ώ;Dl_ܝVl]xG:
+endstream
endobj
-670 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 498.301 468.202 510.257 480.157 ]/A << /S /GoTo /D (subsubsection.5.3.3) >> >>
+673 0 obj
+<< /Type /Page /Contents 674 0 R /Resources 672 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 619 0 R /Annots 676 0 R >>
endobj
676 0 obj
-<< /D [ 674 0 R /XYZ 78.37 808.885 null ] >>
+[ 671 0 R ]
endobj
-181 0 obj
-<< /D [ 674 0 R /XYZ 79.37 553.861 null ] >>
+671 0 obj
+<< /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [ 161.072 67.03 357.742 78.488 ]
+ /Subtype/Link/A<</Type/Action/S/URI/URI(https://tex.stackexchange.com/questions/685755)>>
+ >>
endobj
-185 0 obj
-<< /D [ 674 0 R /XYZ 79.37 160.457 null ] >>
+675 0 obj
+<< /D [ 673 0 R /XYZ 78.37 808.885 null ] >>
endobj
-189 0 obj
-<< /D [ 674 0 R /XYZ 79.37 120.953 null ] >>
+181 0 obj
+<< /D [ 673 0 R /XYZ 79.37 456.079 null ] >>
endobj
-673 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 377 0 R /F56 380 0 R /F29 371 0 R /F20 378 0 R /F23 375 0 R /F69 398 0 R /F67 385 0 R /F65 383 0 R /F55 379 0 R >> /ProcSet [ /PDF /Text ] >>
+672 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F56 384 0 R /F57 385 0 R /F58 386 0 R /F22 404 0 R /F16 382 0 R /F25 375 0 R /F68 402 0 R /F19 379 0 R /F55 383 0 R /F65 388 0 R /F64 387 0 R /F48 391 0 R /F59 393 0 R /F71 438 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-684 0 obj
-<< /Filter /FlateDecode /Length 3410 >>
-stream
-x#1  v`S"Gwx֨,} ?\ VZ}o^8+ߗ]9׎O 38oɹߥ Fj{˫.?-aqV$}ݷ"x&qO΍nXKbD\
-M'lM=?)%-E-q*|p_SKX7G|P^3F>yg.LUq}u>o%ӛ0Q&'}x'g ˉ{{tlr}=32J j{o^*OJ1rtbHitT 
-ӝ'n4_g4|Q3պ
-F 崳3'qYFJ)5_Y흍1ۑ(;@A;E=JEjHZQYLǨI{W3Ŷ
->CޣFڋ|P#{HI$o1Cqu`j٦RKh<YWޝ2Fd1YPn;aW>Yp&7'-^7ST޼gz#s<NMy'%?I}MK W(wW}k+~V{B+4yY]S/Y QE8b_z8L
-u9?c<)|LzU(ß?}Woxcܕ3LM/zŔ$1 5#$nB2*<dԎ@iJB䙼#Y)ahΖ,hkPma5BhX@=VQhYrb@LM
-Ey7PPΉN&`KǪqEeVba䩢$C 2q'\z5ny Ib.K NN{0/
-7g$iے[̟kb
-޻CnfbA Uy{ǛC)ɨwMr{f~w j5" Rim e?Fpm&l><o-Wm+Sx-(xcgq]KNXhB7oxVKex}6NI!c=z(5vP#ܲ3a?#a3iFQ>Gˆ{Hwa4 ]88E$bƙ55CC#;So*a\w Pg?̩7Uo;'tEG_ȄL
-fM~rnչvD?bnJ2aG򼁡id^ p >?l՜,ܗX2«>21p,TQR m!ך6xl:H/ѾK.1zm}cCP͌`yz#B!YH?iUc`$=:2;S?D޺O蝱PMRhA2GY
-µءѶ xlox2RpՋ ٰWo<"C8.`W(Rx1D:N4"Hhcw8aTfD4tD[\]\[z.(`['sos6ć.4^^F}]F _::)2 *pSB '.<3"1B:UY%mJRO7FjiPܱ
-gӵ &ձuM,[;sp_
-^Kξ۞I7
-M_@%Cj/p`1Ŀtb_Gg󎇧~~L鑥h47U4_Uӓ:_9MsWP
-z:xi5a}04֞5 #.WQy%uzč<
-NOfRBzFu&Ky^eĔN`OHlJ|\IF iVp4II;6pۺ*Pf? @G9pX큿akC!Xz3kf?O~:Mtyӵ4'ϋA3X;HL2Pi'sD-uLURpNz?!-)K͈5Ws#{w&MwfW/
-&#V ⩜K]sT-t_Jz6< pbՑx7щ5e/q񻥵.0/\/6;)MWZӶ]TWAj˃euɔN߰uP^c8#pEtMF*Q)j iN&?Al똎t )fퟜ!u!~{Qz>M*6Ⓢ(uDP"/4٧WWWdy1IVDC8_jtj"0_Yx!{[_8\xDŽWclG@x  B~^zf!@Ai U$ЯXu|
+681 0 obj
+<< /Filter /FlateDecode /Length 5301 >>
+stream
+x]ˏ$m_QЊ`7i99q7K<zKRUό>N(jB}/\0x@XGьP͖??<Q_ ~/fNJY2X| FS"9[ߖ?}2Tz$$
+XRR)՜RJĿ -0D+s/_o
+
+!ɌK=UOC]Q_jx.)mkM OaYmZJG-|qQ|i"yzӒ`},TW@giOv_ulZy ΂Ӓ) $Vi"yΊӒ) acF 9-<ges-Z\"ݤrIyhRU*cV[VoY"pJؤn3ΈjajBǺR[ǝrŒ'lO5ojr`'ŎUs͎3(
+KiZQ9j"h7e9;=9E10Gshg};_a[O8f2hg\.Q #Usr%`Nw<p0VNOw8 :`bkL ޏG=h>O\nJ䥃}*c)g}IF a Ö)NWQ3?}Bk
+mni 6|W*̋gqI5i3[g!X5Pž6[ʀ8oS궦70\߆h~pyٷ$k@A?6RTB{x-q
+BD <` Aq/]6nh0M 2FkC '1yrL0vJa >Z£֡cRR}$6!;u+ma s0x
+ӶoY~|i&uUrI<M
+A+pcM6&&Tcg,r ;;5Bk0ڡ`5'a*3ŒGD<h[kZYz߆(]DeHVxNiH(h뽲S$a- +,EÉSY:1I91URLhz]T0oC<?L>k0aL):@3 kNӚ@rJyҹu
+d QVg2[NLڊeH%z(}8bKd>ʵ%%˞Ǽxގ[ka-<ؘ\Olj6x7>pm[=1KqJ0.$O?,[~Aŭt!,;V-_jWrq7[⽿5 +}jH6i&Pq3p:x4+'f>ZOU7i.cI.u灭6~DcQӛPu,M[@չ]쎚R55JZ#sK9w$~I1Ax]KoHah2k+?ϛᔣ d6Ԟ3VrmyD}sSgB&1w2RK ^d^ ~6^[BɴG\ĭeٓ!%7W&h3<;j*RW]sGlwOԪ3r$3r{JQۚL|Fp2u
+ֳfybWpvS;@EYFNbw!"dR.
+$ɉCP,J$Ju3exaԝE_Co5~`zwGDOmiSJYΡ4QMޭ`D8=RV x䖳}]h:X`b0O$tR[iv?V\qNy_3l1QMpP̳Wud"9R;-GoJhw bdsvhNv ݺ~Mg
+) HuK3Dܷq"܀vj2Y ȻW .F}FoT֯)K~+ui2PEݜfUsH5`ݩְyXxMbv [ʼn ,v.RK}ݣRAv^,T(+ Z/
+ <WAx.wʒrU\?-E_d@l;0oWK>v=*O`c
+&fLk,\=J4JFl+2gr͛ Km6y^ yy2~{3NTCq*e,<T#<雨 ?aGoP
+6Jw!aՔS6ËQ| 9QV-m%aN.KhS{^K{: qΉz%G߮J]1`+Őpκw#1}km9`W/j?*+m9mGuV;v8ЎQV)Ӝp8ZbpXh#:WFGLXb凄IXT3+a{Ͽ>}2FHӖKlUh+WZgN``tD&1=t;V1ȂT i "ye;V1Ȃ0'$bX҃DfؐA|D^1*\
+Ã>Rzq'l
+ E*`޻=GY"u`{_m,5^<r@u]nw"EA#_mMe }c'<h<Q''Z[#]Sx{s$`bޞ֏x{>3bHcU֞Λ\=`p Rwgp+,pH[ zU%ݼb!lzm,z @ iA9s}QVM>7vo)}ȟaiUniFFn]pD+ !|xr޷œlwMz6 ,;P
+kiC{Ԁl6 w옛)s܂yuqfHAWۮBƼ}LeHpxov>]p&MA" Puw]8X%!Ӡ0= Շݝ2rgz,b?yc69I "yF0|`Sff1HFYߺI㎴'];>=6bd#yn_a}
+d1;91 :lK02\ ciaF8<ƸVa{W{se \`kǘ{աc-\xOsCsE¥a[)AmJ+SRzXX#j{_&Wby\ZKhPԋQ^8~#Ai%]geGKqQȬ?(l,uj1&(ye?.'ΆͪǸZꇒߥrz..\:ؿӝ].yP^eѼZ ^0JG//[wD՝WGݷF㽶hZ:
endstream
endobj
-683 0 obj
-<< /Type /Page /Contents 684 0 R /Resources 682 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 618 0 R /Annots 686 0 R >>
-endobj
-686 0 obj
-[ 671 0 R 672 0 R 678 0 R 679 0 R 680 0 R 681 0 R ]
+680 0 obj
+<< /Type /Page /Contents 681 0 R /Resources 679 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 619 0 R /Annots 683 0 R >>
endobj
-671 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 205.306 733.664 212.28 745.619 ]/A << /S /GoTo /D (section.9) >> >>
+683 0 obj
+[ 677 0 R 678 0 R ]
endobj
-672 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 228.048 733.664 240.003 745.619 ]/A << /S /GoTo /D (section.9) >> >>
+677 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 501.071 549.852 513.026 561.807 ]/A << /S /GoTo /D (section.9) >> >>
endobj
678 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 124.899 653.245 131.873 664.403 ]/A << /S /GoTo /D (table.caption.1) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 429.774 537.897 441.729 549.852 ]/A << /S /GoTo /D (subsubsection.5.3.3) >> >>
endobj
-679 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 147.594 653.245 159.549 664.403 ]/A << /S /GoTo /D (table.caption.1) >> >>
+682 0 obj
+<< /D [ 680 0 R /XYZ 78.37 808.885 null ] >>
endobj
-680 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 410.528 363.024 417.502 374.979 ]/A << /S /GoTo /D (section.9) >> >>
+185 0 obj
+<< /D [ 680 0 R /XYZ 79.37 620.507 null ] >>
endobj
-681 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 434.1 363.024 446.055 374.979 ]/A << /S /GoTo /D (section.9) >> >>
+679 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F56 384 0 R /F25 375 0 R /F16 382 0 R /F19 379 0 R /F68 402 0 R /F64 387 0 R /F55 383 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-685 0 obj
-<< /D [ 683 0 R /XYZ 78.37 808.885 null ] >>
+692 0 obj
+<< /Filter /FlateDecode /Length 3665 >>
+stream
+x$-߯X=; v`SDQ3U%Q$ER4ooՅ7e6~JzQhmƫ~ۻt?/W2L0^J'&Hy|J W><E:AIc K#Uqyfz|.f"HhGgȿy
+.POzeT6sq "dGZ[Bܢ2ݲ㌊G6g] m)jK!
+'0E\+jo5A$lӭt;J&bވY/BԜu`oz$g'b1HE} -OˆHsN1W;;
+Ucg5l^ #*aIHV9^,=^XlQܚfHXw6jn_1 Q_"XX :=YHZR[ci*
+P_tғd
+vͳҠRCkqgA&t娠&n_e+ݟ0Z8~=&szwU!)vGi_-?vyi'/0%0 Id餧?P;0 Uei(}>XYvcJ ;:It^'ЬgMO,>?d] 3b
+An`f3VGׄCwnطcw=j= OȀJ&*rʃx$AP}!6CNF8 ,<b{|9OD`n fdq"w)Uq07c]aab{S*-y G',UK_
+R|Z_a&`iwwmU j-%K;m;UT<Zn=+?9'|6RrXgEooM#S2g]7P?F
+v¶q\$;Fv#*oxJ|, ^&w):®Ow&A[KJ85MǦ$2:Z5^"ys<M0WaCTD:iORr4Mqw6gecW6!sS=kd8)bZօ\B19iҔE|iye+PAX9ӻCZE]/D *~AK/6I0kSxRt}h]N蕒}{&FlWFw(7ﴹnxغTG6ԛ <]`<nbtA=AikIǜr^(4>+@Rkyvn$K(6ѿzѿθѿ?Yd',LƤXFVVf6w.oK}aOb)'է-+NKLr]Mm#r#Ǚ[w{^6^+<2{u]`9jd9r*
+}NOm6F/LҼ*W%%޿0I@[/ 蒵}S*!b
+endstream
endobj
-193 0 obj
-<< /D [ 683 0 R /XYZ 79.37 620.254 null ] >>
+691 0 obj
+<< /Type /Page /Contents 692 0 R /Resources 690 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 619 0 R /Annots 694 0 R >>
endobj
-197 0 obj
-<< /D [ 683 0 R /XYZ 79.37 422.869 null ] >>
+694 0 obj
+[ 684 0 R 685 0 R 686 0 R 687 0 R 688 0 R 689 0 R ]
endobj
-682 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 377 0 R /F56 380 0 R /F55 379 0 R /F69 398 0 R >> /ProcSet [ /PDF /Text ] >>
+684 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 205.306 649.028 212.28 660.983 ]/A << /S /GoTo /D (section.9) >> >>
endobj
-692 0 obj
-<< /Filter /FlateDecode /Length 4636 >>
-stream
-xڽ\Ɏ$ WF
-4`=7PTV]ET?//ீE\D[}qN0.߾~V_8S/_sa%//aw|c`lnjv_;, =|: Ʉ5~!aRGoe=^]/mz/?῁+ُ_g?~ss#?\GaGf=#+,g Vx/{ l>(-~~e$2fbnsFk;DqˬgϜ 8WEyUXl%+t 5<8hI:/V: ekikH=~G8b_{H#mʈ0HRZ7T^dGIIk݅e)
-[T^i2;+&>fKͤD&$QG%љ9 xe |$޳r@N1%;3mvəUO, i~@
-@*>`ߌ
-q3۪o|/BI~ KYMHˤ v9و_+8\9A; Sd+`LZ> ʆ}O ` nCiKsK#zx;Z8Vo,:S|T8T5rȪ#/}P%&.yPq4tL]&#
-/JozFk+=iBo{5 !{ftY]߲K`CocpazNž JRC}_i6*;1L,λ)D}}ʧRf\
-Tcߏ7(;J#WIp!<0':cfa
-i!46$s p 2@g6@EٔpE dtl(wViK )!@/!LJ
-d@߿yYf>5Ny?J+rzE97TD79dw5(a,?>1"x=R369O17K2*u[u͚W8lI] yZM$c;5ݹOW`RTn+|y\~LRik/r+۹9%KO1S=;"+B1~v;|8qUিc5<2x+hL
-QxW'(q7`+nys*+0.`>}LJ77:$n2$}hjԵF]wFlOaS_:=0-|JMw>ADq#@3g flfiX`$;*--NդYIJrO7M˃6Q^oHD׺ - Zfe!!myJ|4m-ұp_{?$źW<AGrV+ΜN<1Of 2 Ak[8#
-za+3 6iu0T̹SS'Tj: 2cOfMߴ]OMwOW8 }^@.`L$019F!#(e>kcU72{)T1؎ZCE][_AܫsV %6M7섹|"|p*OsB,2q1.QM;I0Q)@k¹0u!eg7 i3v&)`)~
- *4gjhRdSqwA?qI,.wbCN9͌MSG 3!H"v)x::NnRNj27kC*kcTZx'叧;:úB9Ji„W^V24\gRCK2[k!j~`2h*UT1bB3@)"eL˹sw pg 4 ZpԱ6Cvv
-(R|mifϢ;GywV$[.RG7⺐6jbq5/CQ9Ku\4بf%ܩj͛ά̛f1P5\c(׳u5x'[$S~()I96,y_)sex!
-x;1
-҄CiVw ^i~<n~lUo
-i9 hc0vx^IyOQ3?fn&~Z\ЎYƶ sKoqQh 'h^d5u}Taz^qk8]I=om3
-Q?Nk~„и 7/X>=7p䀞c anڢfd(nfx3q|<<JOjeUokv{<._0VLWJځJWUǏT[1
-
-endstream
+685 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 228.048 649.028 240.003 660.983 ]/A << /S /GoTo /D (section.9) >> >>
endobj
-691 0 obj
-<< /Type /Page /Contents 692 0 R /Resources 690 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 618 0 R /Annots 699 0 R >>
+686 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 124.899 568.61 131.873 579.768 ]/A << /S /GoTo /D (table.caption.1) >> >>
endobj
-699 0 obj
-[ 688 0 R 689 0 R ]
+687 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 147.594 568.61 159.549 579.768 ]/A << /S /GoTo /D (table.caption.1) >> >>
endobj
688 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 154.915 234.862 161.889 245.811 ]/A << /S /GoTo /D (table.caption.1) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 410.528 278.388 417.502 290.343 ]/A << /S /GoTo /D (section.9) >> >>
endobj
689 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 178.741 234.862 190.696 245.811 ]/A << /S /GoTo /D (table.caption.1) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 434.1 278.388 446.055 290.343 ]/A << /S /GoTo /D (section.9) >> >>
endobj
693 0 obj
<< /D [ 691 0 R /XYZ 78.37 808.885 null ] >>
endobj
-694 0 obj
-<< /D [ 691 0 R /XYZ 230.167 742.105 null ] >>
+189 0 obj
+<< /D [ 691 0 R /XYZ 79.37 771.024 null ] >>
endobj
-696 0 obj
-<< /D [ 691 0 R /XYZ 235.836 730.056 null ] >>
+193 0 obj
+<< /D [ 691 0 R /XYZ 79.37 734.627 null ] >>
endobj
-697 0 obj
-<< /D [ 691 0 R /XYZ 198.864 697.254 null ] >>
+197 0 obj
+<< /D [ 691 0 R /XYZ 79.37 535.618 null ] >>
endobj
-698 0 obj
-<< /D [ 691 0 R /XYZ 198.864 677.06 null ] >>
+201 0 obj
+<< /D [ 691 0 R /XYZ 79.37 338.234 null ] >>
endobj
690 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F67 385 0 R /F15 377 0 R /F79 695 0 R /F56 380 0 R /F55 379 0 R /F57 381 0 R /F58 382 0 R /F50 370 0 R /F40 387 0 R /F59 389 0 R >> /ProcSet [ /PDF /Text ] >>
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F68 402 0 R /F15 381 0 R /F56 384 0 R /F55 383 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-702 0 obj
-<< /Filter /FlateDecode /Length 3096 >>
-stream
-x\K 19FP蠫4H{ 9$`NOelcSU6%HH,\0gqexH'Dx!2EI$+R1O{I)e|pA-?c XԌhAHKyK𙱨FD؞|`~Ufڶy^"_w9-q{&
-Q*Jo_n,2v5&>:Y"8/-nYYaU΁
-na
-0c#]gSZ
-4 {紥@s,@Ky:,C08gʼn\(Up`C3hӗ)|ϫߛ>=YW~ǧz3S\dU̎ӕ""H<܂J9c58[^"MtdB
-I&Qj5l(/+DR
-*yRPlW͐4g(/+>!i퓐 k C(QX}LkakD3_-fsO%IzEʩV3hлSG X0̑޲/Ay@(Fm!̟Rq{t$f/}{
-VɓȀ@ذYd"yLUĨPyjbvR s
-B!մUZ;F}R
-n789!<,D~o@Bzp$⺵G
-d5,E|Ih)(H\Xw}޼cΤO cbb^} /l#uQb.7Fn~^?|0!c4IyæfcPFEtXXJ}c27P{j&>w[ϙ&qdJM\z>7~/f״
-\a,:v}/H蚀jz= 3 *A $ڝul`ky'ީ+jaԾ7 QNLOG1BYΔ; C(wA
-v6{
-<S -
+700 0 obj
+<< /Filter /FlateDecode /Length 4564 >>
+stream
+xڽ\Ɏ$W4} Luȧ&$C>2%KU|L2H#^l^/|㯀E\D[}qN0.?yV?]R/志/|v9xXK|"_~ g.8hc;f/hg!X0p6u ngkBZâaRGe=^]/m^ V³-qsι(?~ìmd?BɸWgy^Ź߯_F"_j&8xihͼ{RJZ3|sbJ(;mv嗮ᾼ9IW?qE.XgaZ9qagkyLpq^{HD6sSeD]$)Q*_u/2ãŲ,L;m@k*CHj$0&9V˼rSlxҳUƨB~U)!0CV4qGpŤ;R3)“Ȥ]{Q tfN}û&^zYM,,\ SLIy<Arf[C?سPZ,*\&P(a H
+P9B6 ͨ]=a?
+x[yWbE}5GȰ]!୑]iY`P,!k+:'#0(dr I+20ǀApS
+/E7x
+\]tg H9VRZ
+'܏^*tًJv.GNɒ~q
+{o}|@0 19
+zزFPD mmr<0~@_=@P2 Q'9MX [W
+h0_t[߱~%;*:ڠ<ܐ=N]Qhr!~¨\;l8\7μy9SV|@_0JZ &%DL(==CbZr
+^R5-s=&iQڮ˴iHW`P߳:L-)9FD#j4<Drx f;YlW9}0<sΓx
+EO.)ĸEβzėkt!G(_=p(տRFq'fe0Lqc4NJɬ#7Pw pSA6GuI.~^3gg|2-'94|?˝x)oˎhߺyt: 9EbiX)xzqܤ,:tԵcn6#cJKvI^r0nCzs'T%'G7ÄW' dzm1w<] -͞X43bN+.v]ؖšIJWRQbB3@)
+aՁ'L4o}Ag=>a1)< %"
endstream
endobj
-701 0 obj
-<< /Type /Page /Contents 702 0 R /Resources 700 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 710 0 R >>
+699 0 obj
+<< /Type /Page /Contents 700 0 R /Resources 698 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 707 0 R /Annots 708 0 R >>
endobj
-703 0 obj
-<< /D [ 701 0 R /XYZ 78.37 808.885 null ] >>
+708 0 obj
+[ 696 0 R 697 0 R ]
endobj
-687 0 obj
-<< /D [ 701 0 R /XYZ 79.37 598.045 null ] >>
+696 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 154.915 246.818 161.889 257.766 ]/A << /S /GoTo /D (table.caption.1) >> >>
+endobj
+697 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 178.741 246.818 190.696 257.766 ]/A << /S /GoTo /D (table.caption.1) >> >>
+endobj
+701 0 obj
+<< /D [ 699 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+702 0 obj
+<< /D [ 699 0 R /XYZ 230.167 742.105 null ] >>
endobj
704 0 obj
-<< /D [ 701 0 R /XYZ 316.728 517.227 null ] >>
+<< /D [ 699 0 R /XYZ 235.836 730.056 null ] >>
endobj
705 0 obj
-<< /D [ 701 0 R /XYZ 365.552 505.178 null ] >>
+<< /D [ 699 0 R /XYZ 198.864 697.254 null ] >>
endobj
706 0 obj
-<< /D [ 701 0 R /XYZ 207.228 436.785 null ] >>
+<< /D [ 699 0 R /XYZ 198.864 677.06 null ] >>
endobj
-707 0 obj
-<< /D [ 701 0 R /XYZ 207.228 414.817 null ] >>
+698 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F66 389 0 R /F15 381 0 R /F79 703 0 R /F56 384 0 R /F55 383 0 R /F57 385 0 R /F58 386 0 R /F54 374 0 R /F48 391 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-708 0 obj
-<< /D [ 701 0 R /XYZ 207.228 401.039 null ] >>
+711 0 obj
+<< /Filter /FlateDecode /Length 3068 >>
+stream
+x\Ko$ W19X06A|[iL9T#
+اlD;E5 ]yuTaG=_"^un8O~K-nȈkC<6G͹JlLH:xm%,ԕsX}5F-?h p
+3<P
+?a=ѷXߧ=|3&|x`4|nP?䰛U[6@&6DI}M#i{z=MLfC=0ú(6wcU4"yFި&2]'242Z+22r'2ubD!l?}eHiDEt@)$f*ю J78ߐKVvo~L~߀߈[֭]?R
+f~d Ft?dP%O`|!IewL+VJ@!۵"F-DB@w&`%-k f KXy#c
+O:0NJrd`BK;mLߊ_n뤢nh%vLjcF ĉu h>c&4yfBR[
+1@ݏsf@R¸\iv0$SQ$pF*\&.o>"uAW̢,j]{/ll
+h@XXVXj}cX2[k e}vħ@o8 ԑ*oÖky=%xke
+Jܕ&{Wm6@9
+uekZjqH6]H'DC(#T>ե;N\QQ+!B)IKOEB-\(x{]0hpꪪ!qί eXl!|/4`xm6/2G-'ⅴjj iQHB _p36.mväHSiƥm׻f ǘcǶi7^6~Si5t
+ut^BŠh@ESYꤕ nUGaT7y36QOvj-!dҲey,kf\' kԶAb d&1zREN{E gU (%ƾ<J&-q"¶Y*SK-ᴩ5sϕtf0Kq*FVezw<=Dqf4)
+*eVckӐּ]qd-$],zSb_}8<So04HҺay;3ܩ&{JW֜؜=vzTn],JCشdQV)l$V!qn!a{wH
+OjKFJ6N'މe^kyŸ^Z`$* Oo ?/${5a64H:c,%_/5^a>=X@}') r fߍC1%AOh':t}m>{)ˀw-\z}*Ė-p=HeA6 Z~]
+endstream
endobj
-709 0 obj
-<< /D [ 701 0 R /XYZ 207.228 378.952 null ] >>
+710 0 obj
+<< /Type /Page /Contents 711 0 R /Resources 709 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 707 0 R >>
endobj
-201 0 obj
-<< /D [ 701 0 R /XYZ 79.37 331.043 null ] >>
+712 0 obj
+<< /D [ 710 0 R /XYZ 78.37 808.885 null ] >>
endobj
-700 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F50 370 0 R /F66 384 0 R /F15 377 0 R /F56 380 0 R /F52 372 0 R /F79 695 0 R /F58 382 0 R /F69 398 0 R /F65 383 0 R >> /ProcSet [ /PDF /Text ] >>
+695 0 obj
+<< /D [ 710 0 R /XYZ 79.37 619.348 null ] >>
endobj
-715 0 obj
-<< /Filter /FlateDecode /Length 3486 >>
-stream
-x\ˎ ++Q  vwA*zQU]mO,hJ$")j0o~߿}[=7/ڿ7Y%Uo?w);Ҩ=O]=~Rjmy,#pe, e gGx:xi 1~ǡ$=͇z^(W24Vi/xW9`. hH+ګ4x暾 `y9do/Qh ih:-ev$,ԧy(nٚ-Y?ʼhJjJ,LS-UkCǭo"M77J?3Uwy}D9ݴʸH۶(ĬQq`0Fv00/–ŏ-,MPދB5)mfʉd/
-ͼu}75s<O JFD&.R;w_;nxdv}UML1cdi1=u%F%%0>ʦHz릷4fF\Eh ^
-~ouށ&zҔm
- š 8i-@ܚ;ו`D˿LOTr
-wcm-Q$m2%HcaVzF.UpEKҝr vauZX Q[6@h,TÓ҇p-k =U*IJ-4ס@n2PH0ѩ4?9
-ۢ$_:65T3[*\ ?hWhˬo)YqGT/T2@;pL,e>OC@`}E7uOtje cA>{!-Ex~4mK0QǽjנlխP
---H~D&ֵmͨ&MF7vTIMy WzS@wXbX;VV TiÔ/f_ +:PqӬ? '3gXb1,-‹X蠈F`'<`dѿ O4{{4?T6v@23O7ZWN]
--csX^ì.V7%3vPh3*vxGggA@!1/f{:<
-' J@U$"+\SLVR~,\r]Ws fHEa}eOFF8SnrZ{ :즬t1fr=[mX<E B?06[ACAxX"^9 VʅA|9yR
-nXUapSvޯRwINˍWzGP~hw>2'pB9A!⮐|jBF+5x\Rw
-endstream
+713 0 obj
+<< /D [ 710 0 R /XYZ 257.051 538.53 null ] >>
endobj
714 0 obj
-<< /Type /Page /Contents 715 0 R /Resources 713 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 710 0 R /Annots 717 0 R >>
+<< /D [ 710 0 R /XYZ 316.728 538.53 null ] >>
+endobj
+715 0 obj
+<< /D [ 710 0 R /XYZ 365.552 526.481 null ] >>
+endobj
+716 0 obj
+<< /D [ 710 0 R /XYZ 304.972 514.526 null ] >>
endobj
717 0 obj
-[ 711 0 R 712 0 R ]
+<< /D [ 710 0 R /XYZ 207.228 458.088 null ] >>
endobj
-711 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 507.158 110.852 514.132 122.807 ]/A << /S /GoTo /D (table.caption.1) >> >>
+718 0 obj
+<< /D [ 710 0 R /XYZ 207.228 436.121 null ] >>
endobj
-712 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 114.907 98.897 126.862 110.852 ]/A << /S /GoTo /D (table.caption.1) >> >>
+719 0 obj
+<< /D [ 710 0 R /XYZ 207.228 422.342 null ] >>
endobj
-716 0 obj
-<< /D [ 714 0 R /XYZ 78.37 808.885 null ] >>
+720 0 obj
+<< /D [ 710 0 R /XYZ 207.228 400.255 null ] >>
endobj
-713 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F50 370 0 R /F15 377 0 R /F56 380 0 R /F55 379 0 R /F57 381 0 R >> /ProcSet [ /PDF /Text ] >>
+205 0 obj
+<< /D [ 710 0 R /XYZ 79.37 351.467 null ] >>
+endobj
+709 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F54 374 0 R /F65 388 0 R /F15 381 0 R /F56 384 0 R /F20 376 0 R /F79 703 0 R /F58 386 0 R /F68 402 0 R /F64 387 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
725 0 obj
-<< /Filter /FlateDecode /Length 3525 >>
-stream
-xڽ[͎ )`ڽނS%>׏(SU;qTERG%/o{闇 g._I.[ZwJH._]Jno~O4FKT_>MGúJD.UR .gphcҵew=g eb13DzF*hCs$$A#7\-+>ho௴:zsԻ̎8QjH5e޳3lע
-_5MM2Ea4uaظpú+)<-J"YU4\xN2eKv™Fna#wPVGwSuŁHךY}ZzW/A4ovQЀpj3w7:|ݽ":Sݒ"LA4or',`ZtA:ڨ9(ا&D#U0R.}iJE|Eb)+FQZ$%{'hRi;f _
-,.JuD3D)Bߕ F+VD( W}Mg9>Ao|lCJҵJ; 6yU@dW@ svVytgiy~ϒ[%0Y@NT8BOA
-`eZJQ]]i!W>5*k)>'mn$9X [F5w4ӂc!k6sd˚Zx
-ZᴙhGӹVHxFA%.+7˘󅑛aY{ɟ&.$l#)z7[[NV1rDkX*.i>ޑAYF%Sޮ2ΎkVR]D|[+<yԵѹiV"PwǮ g/AÝ!<֢/Vw
-t6aZ^LM%4X,n[YqEH}ƄKy%܌j|#6*oǝUT&-<Z$W2?E^OX^৔Bњ[g5jϑ6R/J5[ŀ"ڧx_*־ߡᙉ12zqlfKa.^8ƙ ק,F9ĭy!9Ie#T1\Ƞ+~6I)\s(m:/hl$v#!Q~>5{/uO?4!b$Z'A5<bz^DŪY!cN:C|LhN%җJEjR֪mLi@SbMTHA)/_[">4E&${~uCI`T4 +CO#=;mUPꬼTӠ
-K̍7\t`
- { rtJD=-e׏|n~d?YVKl6rLTL݃)co?GtZR[5B$M*vQt 1ZDS P}ʒO <]]#q':և-痴XL5?^aa[(i^gގ'C9s riaZ,>
-3/Z*B kFZ?oĝ4Ywљ HO5]INLMuάMa =/ōNŘSflB1#'B,^w/)FLeҏs<T~Rm;*5[7u++D N6ՠ`cf&_:&~Ζ#0ٱiA}3s͚08"{k&:kKOtǍA]1:ӓj7l}Ydvb H[Q:x3Wintz^oNZ3%%Xt3m6l-{zm h3m'yWFT
- XAu_8w6 0}ip}ga<?;fk<)J:Gv&SPى,]ӿ:[,Qߺ{4KO뙍WJ݆j@n}\75cK:^$UQ&AA݃?0oOF)$ZaN"_ϵ?Wj^9FI,mS'[2<Co-?F$h* i߫b~Ю[k8:k" zn/ǾR`Yy<ϟ"D@܇#jA6WUGf T[ˏjjбEV3<&X6J;fxGΦ~?RPZ o3+~B4Ey#}oK ߁(
+<< /Filter /FlateDecode /Length 3471 >>
+stream
+x\ɒ)IELLZ#|}_͖,U]--|h
+F
+7ٳۏ/< y?H7vo*!z񯷿Ki'H鬔Pk,?7?xF
+%xi =e;%1}i>{+fn:tCV撟<mev% Jiᡴ}uiYi[c`ձ;MBc,Ч$,ԋiֶd<y ѼjVFZ R>n݆l,6J?3Mwy}D9۴ */<Pm$
+pnj-1+T0pݡKi- D!bhX^*Ii3SN'wQHh8/[בf9s{[I"ZDmLt 2;{Z>xl1麒NH#TwԎ geSl
+#uuSZ1|kZ%5j%zTY`3}&^,on^usA*-ɸ͈q5j'i,9h;QIǫsObV.zu$ڿI<B$!X@
+hcDyףS{C:D
+X;cGFPIx4|8f cƵgEY
+r}0 0D H'z!CLj|sֶK{CԒ|IWtq[ K2G#uSL KN3L} 8~S&3lU8`{jyytjOO[iBB_QG -f75TI "\7FrFaL{ yY0&`͝"T.NckV#IN"rz <Yc%Jj/mVJU&q5rVB
+۱AC><bSFh[V `Zn@nb}ͰS'nW#XUᲘ~?Dm:!S b=;Xg~[Q:)i8ST/'\@sqPL!Ahδ\Ǿ_0ױLÄ=@&Xa.2F!Bm3"HbǚC`S0 %P٣94`4֏3
+7Gor566zO E^"[hYvy \r|[R\GOPķk.{Љvv笊]--'pqc0e2mUipV?3,=ʂ/bnNXuubl1ԯan+_`=/ȴ j#LDߒzR_WY=Z6FŒ+@;ecPkg`zэp6mD~g` Rvb׶=6&r@p0VGjʻgS¸1t:X3rpa*o3/O +:]<ςL?[H?Az8h^@{E47?coZM8Ùjsg LSͺVBtOyW
+/a~0], ےYQDփ*DGgZG]1l/=g
+rg=>0Dუjʻ<kغ^
+Ϣv .OΤhqrEd= =:,1g#9xqP>;z&vxBÑ=2qsk_w';J[th|=ZSV8~*OBf^iDHث(4*Ἒ3rՔwF!o[Zw
+r^]s|}y<>e5J9yznӜɔ!iП`y.i~HV<*'XK~<i<VHJ׹&T:H~kӡr4_f9w[(皖G>r9_8'$d> x~T^刺rG;>J2q3\,;rz|Ton
+'Po$";+ħ~8ɢ 'sͥ
endstream
endobj
724 0 obj
-<< /Type /Page /Contents 725 0 R /Resources 723 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 710 0 R /Annots 727 0 R >>
+<< /Type /Page /Contents 725 0 R /Resources 723 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 707 0 R /Annots 727 0 R >>
endobj
727 0 obj
-[ 718 0 R 719 0 R 720 0 R 721 0 R 722 0 R ]
+[ 721 0 R 722 0 R ]
endobj
-718 0 obj
+721 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 507.158 120.711 514.132 132.666 ]/A << /S /GoTo /D (table.caption.1) >> >>
+endobj
+722 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 114.907 108.756 126.862 120.711 ]/A << /S /GoTo /D (table.caption.1) >> >>
+endobj
+726 0 obj
+<< /D [ 724 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+723 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F54 374 0 R /F15 381 0 R /F56 384 0 R /F55 383 0 R /F57 385 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+735 0 obj
+<< /Filter /FlateDecode /Length 3526 >>
+stream
+xڽ[ˮ +W h\=x7U&^dߏ(nqRII]Or}CK3oyQ-;%So/_R?VߧJR/ou
+n&#úJ4]JtAJ \?>sƤk8{x$-^Db&h͉x)U*m0 ,h|Jc>R#̮] \Q:nWG|D)#p5oa+"&]0A(]q4
+NK
+מފJl)q&y:JHy!X!ͿmZŃ8C'D%2CPMqHv7_8>!}NP&9λ8 eNA`hT[i',<*Hz044Wx <?ZOЮRmJmږ) ACS6]I5mdTΪrX$e…8S$h'YJtx/&8[|i
+l5tg6UW[*Xp7ygqG+ZFzۍAn6^Ѐpjfgև"6yGu=.{+nE}>%Yh?NX8ٵutPsBE?pNMJ`)*͞ѡ_.lsED^_Gn3IUi7H($cq[e&N=C*]Y}>[Hih4ٸ.2ig3s_,'HM8m(]WPZ0HC^l,F89OCGt Yjf_$ Vrq3uD?; ~S  fϠ`]rJF/D-7\\mfĞ4+1[΂
+=6K47xIMjսudez[~Uʸ za7nN\M"8L1u$>%4%Su{B[Bzu "u`<M"&={rVYK'1͡Ґ!V1 ?zܹ. 빯A8MQZډy/&]TT+W__%E`oV*H)-x{)mPVH{pei~T\ ')R{hqﬔ݃DҸ0A,]!-ۼrLvCSm6+CҴ h">֤H3*Bm'!c VfեzYYp^sBfS~"V we{;k`+8u 8B͜!~tŲ"²V8mԣ\K$ɖ<#'Md拏eH~ʊvKO `O9c5
+!s դǭe5wj0XK^_["U X RBI[E=:x$ uu]OF{|wݪYz!A!7\4`
+@xh</,q^G me}GVȓ~Mh%c.{GGq<=g:%"~قkGv>u }WXOb2G쥻8K[*3co?%:_ɭ`&vvT:: ZDOSr>en|Ӈev/Fh`A1t+vuI/[/HVk~&SFQ>Xkގ9ˆ[uߔd40s. B.!5\?nĝ۴XW f R˓X;kW}SޗDSZ 0vݙ5{;a־;
+[<X ѱ:5Iv-3rL2Ŋx2;˖-vJ?qW=JDn^j` !#{Fccd&t_*Mxm~ɖ=ưرiC}3c08"{k&oy֖n!ғ.wWcv'Uod',‘&^!Š11@ft\gC{q:ٝo*y&%X43m5woʊL=)ܖ;(ʐvq"x}fxVc|AFE)M魶Eu L)&ϚBo"|h{PTg 
+w:25v[{deT HVw $K#*&[7rz/Ifq!{l/Vjm1ιxz I-A}3U[ Ӑk}姹F.Zœ<K߯fռ-1hsRXUOdF)yH/2{[~0 5JTgW=
+J+aƿ.R]F~(oS޿/q.>d
+@m+èh L=|f^5S'gZ9@i:09- +.`pEhLR`u_3i֋t,c\)vwsL]]Latq}Z-tkZ^e#Kn~$?NNrP6r\i
+j,H>#@/4p?(#Tgd?-zlP
+t㲕oL}୚/rSJLӮoMR8[lʚcaG4Z̞㫦M&
+ȸˉi
+endstream
+endobj
+734 0 obj
+<< /Type /Page /Contents 735 0 R /Resources 733 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 707 0 R /Annots 737 0 R >>
+endobj
+737 0 obj
+[ 728 0 R 729 0 R 730 0 R 731 0 R 732 0 R ]
+endobj
+728 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 369.124 508.381 381.079 519.22 ]/A << /S /GoTo /D (subsection.18.3) >> >>
endobj
-719 0 obj
+729 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 351.241 357.472 370.947 369.427 ]/A << /S /GoTo /D (subsection.13.1) >> >>
endobj
-720 0 obj
+730 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 386.668 357.472 398.623 369.427 ]/A << /S /GoTo /D (subsection.13.1) >> >>
endobj
-721 0 obj
+731 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 310.412 244.527 332.887 256.482 ]/A << /S /GoTo /D (subsubsection.5.3.3) >> >>
endobj
-722 0 obj
+732 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 348.609 244.527 360.564 256.482 ]/A << /S /GoTo /D (subsubsection.5.3.3) >> >>
endobj
-726 0 obj
-<< /D [ 724 0 R /XYZ 78.37 808.885 null ] >>
-endobj
-205 0 obj
-<< /D [ 724 0 R /XYZ 79.37 490.054 null ] >>
+736 0 obj
+<< /D [ 734 0 R /XYZ 78.37 808.885 null ] >>
endobj
209 0 obj
-<< /D [ 724 0 R /XYZ 79.37 330.558 null ] >>
+<< /D [ 734 0 R /XYZ 79.37 490.054 null ] >>
endobj
213 0 obj
-<< /D [ 724 0 R /XYZ 79.37 291.272 null ] >>
+<< /D [ 734 0 R /XYZ 79.37 330.558 null ] >>
endobj
-723 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 377 0 R /F56 380 0 R /F55 379 0 R /F65 383 0 R /F69 398 0 R /F58 382 0 R /F40 387 0 R /F59 389 0 R >> /ProcSet [ /PDF /Text ] >>
+217 0 obj
+<< /D [ 734 0 R /XYZ 79.37 291.272 null ] >>
endobj
-730 0 obj
-<< /Filter /FlateDecode /Length 8481 >>
+733 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F56 384 0 R /F55 383 0 R /F64 387 0 R /F68 402 0 R /F58 386 0 R /F48 391 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+740 0 obj
+<< /Filter /FlateDecode /Length 8477 >>
stream
x]K$qW<tF9&6Q|Z>X>86LZ6I[zg״+$}x?*1_~̗3>o^M,m拹er钢h.|yyK컫<>3JWtIb_AI)& /U#,%1Fd)fb')/l2U/MYtsc;ϽJ
vrf͗>J<Ե7ϓ] [66 ҶJ#^٧)ݒ/7dR\#91ZssIyUڏu=`>[bI;X:rzSZ9Z%rݡS0Մ)
=8- t%;؈ze$mL9/0*4 ΢1-u Y@5^|iJ&0} Iz1A\{`{c)Z# ?#!t1'&.Ը7Z
-++f@!f =f 3f^7jaT|!ny=CoДїhZt80'7cU~DO$q,n9ZCp8疲5U~,7/yc<a%rvo<}ВrZx}%1h/|sUiAqQ`XKFbJ)ܬ%,}8@Qj^~
-_J/&@>$mSwW[m4z;g&};F-8 l~Z\7{?dR<',˛@m~ jpHe>+Nn문HW%@q . !T =K:%NCܟo;[N e*uuR^m1,CMGv냅,T9εO=nB/ebo?wfq|; l<ȩNiJwjtc:@!SJsf*y;U^;V0A>Pu-0A_4i"^_nZk^@}>)iYxϰ@qstϪ&s3܂ru, pFL)8̔S("[4O{ ͋2=_XFߺ@i4gşURy$,/|O 11nV[)-c"%q:2\fBVc.u1iu -z[Eu\:/do*J?_Ͻu.sm4_0;{y$ ކUvW0<?_|?09v>MyIoK |oMޯ{>q!L`n=6iߺIdr
-APN9&?rJ=7ȃe+xk{MVwywosHm
-pmKQodf3PnSfsU'msod`VhoA&w6S3a6S^9N+twH[ TDZ@ҙh>x5EMUU;;__SC: IˉM ;sSs'!0Ov,a8w̢i V5cOnu jʦ>?
-Yn!>*ǃ%TxspzK{ăuf %󕏖
-wٚ<M䠦Z*>M%U3Χ"<Ú2_e2ON2խGo?KYf7lK?nӭ79n Ж_pR׍gL[~w6^v>#M 7)|S鰫Ƿ21lc<h~;V y,w#u؋!H_xoF, wE(uXlI{ڷO80^ǯqF=%s7eZe=mvgoį/|&wGnwdվ[n`/ֺTM#ww[fu3į۶q*9?uJ|u2`VlnAf}d{}7큾 \l1wGm|Mz;m,˴p쮘wam{ؐ0~ؿŴ:^9y-.XGo9Mfsf;%}DI +m3zln}TƟ"ڋ1Mew7T8tNaw|⌼ iZ:)Putx;.,z Xua<kۚN_ջR!ѵ>X
-e\3az_ZpysGz^uwܹY]ȣ?);GwkE:λc2O~Y~
-]aU"]EjCWR7V}o7#TvknYudZWw`\=خėgKIϹkwv0lG
-VQ2{ 8 KKd!I:NDMyOF+NDYooh#p1[#Ckb (;FD"3,IeF Q0di7r cJ0E׎iY.&jg+,yub2 d+P\8ÜI:"DM&K#U  R[궮82I4Z
-o9C@E0= e$I*d1&iLb*M1,I3#
-Y[A]18Ԃ
-d0ꑁ#\zL91GKP!h8\ը#)5LrP1Łw 5&bP:ES"x lU=Vcdk"fG Θ!jULD>J 6 vL"25b Įb%l#ԓ62H!%.y#lGOBV#pU=w}Hyyxa{zbFX-qHKw;0;wؑHmyz$<ȨŜ`ms<Hz8" s++zሶ;99n/XV0[\$8k3{(J!+",!ZSmKRʎ5qu|IEAAF%mR`FAO+%4Aiјm7|tZ~5%R()asakZ"Gl
- )/&K<K
-sYzr*HG1hW#AVxi*"
-ns=07CCD)z9AjzAV05^GUD|d
-oQi >sŕ+&膪E6'9ߎO1Cmh()k})f,C=h{['kJQRB2e1AVh),x J|r= b1xwsUB-nak Yr܈{ZAmFU4þnTNf ~17ɺΚH7"$0lK s7(* dnQF? sÈxa`RqE1wmT-mx|5=Vddnѣ*"f|jWJx,~v
-?7cBZQR5AVxeTP^&]aC95aia>J?̺ai c̒&GԊ`5ڤbaK ~Q]0AK[9FE%%,lN
-)#g3SvUF6uGKa|FgL.]LYT&sȃJ1B2D5ߖd*onyCyosm6n)5LPYT/%(c!=3xbl51(ZDؠ%FjR1VS7K+D(a6-~ +m80b)(tSwVQ$Cڜ /ZZ5,*f;T)(#vZRSaQ=30I+B3ʜ)fak s̰w 4S+Č(TG=+mP<>n Zc(KŌ‹nJZ$hi#䪘ChVPi,*,~#v}S_3"o%3Rj(b|it"E6,lrrfhDI(s~҆DPײ85pb߱B^/Vɚ +ZZ5˙*R7R
-eFJ]
-Mwłf\di}Y&RRBd$>HװBOOw
-=O{xUi-MLSՉ2ePkZUp5q1B] iffY4ת<&E֑ńLL
-{G8*'\c=+<32+xBޓkJ+mRdNܐ)̀]ժL댁6ߓ
-6i>0EJmQdSZLĤ;OT
- )a _{OzͺE 2%s͓rS45JF>FJh+\4i&?PEJK mRdUZLĤ w\ZUp@YR@3@35C=U,RRBdyR>jY܀=YBh&+ha|牗Z$ڤ4UIa@rG#q3{REkUUEYG.1)%*qTTJ>l:J~l|SJ_ ^'7^!A`vF?NIJ12۫΍w?Fm\ނ}cCx2|kym#/m{VvζaxFJi;rbKlz%7{6A@~T0ɷ:eό0s.Gy:v3ũr"V!aoAX,7()d}S:l߉﷈7"t=6tY„&7֤7\M|̈́ڦJHK'P-3nuސ17g8VG}ˮāXʱ"'K2^Qzv[g4w K3yȯ!Dʑܐkaw6:<IwZLv(0,췞&mbf)d:5Z=]+wjo[2-{bI7 FW|SʡuK;.3=މ0No:$0eEQͭ]_J6~+GӐ`J<dQ;GS@]cM EVQ)X/z>Ku5ԇ0Q;o37NaOfUN{hNB \՟{P̥,w6xQ=unslsC?BjhT!~wݳ{6о+l;x8߈WVE[95ΟU]<UnaI_;ΜOo5O +a0@—(iU [o7äa1<3) ܴOp'G\IQߪzގ@<0RϿIgChV wkοE޾9>)-p*mQV7ᣟCU'C%DARH?nRs*=uCz>!,N".z},|2r
-8濳/dN\;oaD^zauz12 GCvbt7P`t?0[&+Ok u`y$+zZި5᧾jUr|lJ\<zIy*]qVvf62!++ϭhъzg1aD~b)̲!73~ǜg]vdvǀF;Poz1T%Ծն[ئ<nGKEo-w6ɚZ﫬 8vƕ8w #s|̘p O^ըЫ/_dYƇ
+++f@!f =f 3f^7jaT|!ny=CoДїhZt80'7cU~DO$q,n9ZCp8疲5U~,7/yc<a%rvo<}ВrZx}%1h/|sUiAqQ`XKFbJ)ܬ%,}8@Qj^~
+=2N3e*HbV.oB%tLcW ѷn'i?PZ.YgUT % zL=䒧EĖp wW|
+YIxŤm.LmYs?뼸-0Bx\+ ~=J==v|Xj{2{NW?]ϳ˜X0<G=7}%V?/A&/6!*:zĝ(3Sؤ}S'͓+ft{@;尚4p")3zl3 w6uҦZݵݽ!q); @Cgx
+󝄟e[0~oؖ~ܦ[Qor 7=-z.ǥ.*ϘP/QY 97l rw'`+ڤp#[k;.~|+!gxwBUApG=gjC‘* ߌ>X'@HPj/ޣHqpa
+ȏ_8~&{J`oʴ{>%&hߺ_ _RMvݔ7pd}3n_u#<热GnVf_mV:s~^eX&eb֭2l݂[7b;,hn}d7/BcQSݡ~ߡ^ۂ+c{YiIE2dۼHE!aiu^/C[\ڵX]֡orvJc;Ww1f 4wS^NH/yc^yoLߕ7u謝x!y~4dupV`f3%X
+NA$=Pxok &K9}VJػDwNp*:s}jUJlyehnZ|qfwirk VܖݍsB8<e-*<UI[vuUQq^{\I]Z]S5i~f}vk]asї<c_{IĞ}Ro,>Ziܑ}zr:4;}Y%;مӻ܇DU)E? Li ΫU2ꪔҪlSK"3")qs^pT=izlV3U*~EQXZP
+9ס[ҫlGjӡzO r rƓts@Ɨfb") JΆ" lI". /χ`6Fʴ%$aċbO..&T}m,P/|#kaVs2C-. :N^+DR(E%%`ʐ$''S#'[7E7qL4{D
+P1f#Pc`2#IG 4؄ 1QkǴ,^Ut5CtjԼj1W^.cbΊ$&N۪Rla~-u[W M$ U*K$5 tTKmu(Eq7Y! a<#Ruq2S$zIʹc&Mi1VUئu$EQPmA2vpDcv n@IaS.=RĨc.uk4HjkVP9X@Z
+ɚG1G"W)<Z؆ c
+窇N15B]EY#g̃
+[C5*HG%l⁅s;1lb}CI[]< AJFģ !Jdj[>X<tp<==1Q#8fUDVdd;H z$6xH<ˆE= QdbNd06~9e$_=Za=pDk+QJ-.Q\5= Rg{d)QͶe)Heǚ:ou$T]n k#ƒ6XX'ؕ شh̶TH>:?Arښ)nа9Lv԰{ZA-#6 G%d9e,=9 lz
+\^̭“5%R()asaDO k+D<FJƧv >D1{r<Ώ9q* 7Zа5,jn= ڀq* a_Jp Y7*o'?\zd]gM$%9ӎN2K(‚K
+*MExRb-X)0(sɤmdeN3J5̹jf;VSTbFY`*#&ݕ6(N7-e1aȥҊb}E7%-fkYrÜwJ!4S+4SLB㾩OZŒhA`)5V1OejEIx9WM 9Z34$N9sM`T]i"kYw8XmBdM-`L)k)
+(MĠ"
+Ra`=3AoN^ȡE$6(drqԴ%,*8(%RZgX "#^l':nZ$hi2窙aC`ST*]!nRp4/y1SUr2D%m`\5/ fiI({Lz_T1Ͻ1xg(@zZ.n5UiMr7-^/ Pw]$$k``ͻbAFp
+%Y\W6%?\6)/O M0OY ;_&IW˻w6.oA>1r<[S /nES<㶑]¶=+k;Qg[0 Q<Xô91%f==WڂD *
+P_w2עV/NDl?ŕ#ivv0%
+`Ȇ 1Y٢݃1TAL/c~ 7o-{<C)Oђ}j]M$;r*#:Nyݸq%NEu;v))$3>ȓW5*'YƇm
endstream
endobj
-729 0 obj
-<< /Type /Page /Contents 730 0 R /Resources 728 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 710 0 R >>
-endobj
-731 0 obj
-<< /D [ 729 0 R /XYZ 78.37 808.885 null ] >>
+739 0 obj
+<< /Type /Page /Contents 740 0 R /Resources 738 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 707 0 R >>
endobj
-217 0 obj
-<< /D [ 729 0 R /XYZ 79.37 616.209 null ] >>
+741 0 obj
+<< /D [ 739 0 R /XYZ 78.37 808.885 null ] >>
endobj
221 0 obj
-<< /D [ 729 0 R /XYZ 79.37 446.032 null ] >>
+<< /D [ 739 0 R /XYZ 79.37 616.209 null ] >>
endobj
225 0 obj
-<< /D [ 729 0 R /XYZ 79.37 260.473 null ] >>
+<< /D [ 739 0 R /XYZ 79.37 446.032 null ] >>
endobj
-728 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 377 0 R /F55 379 0 R /F56 380 0 R /F69 398 0 R /F23 375 0 R /F66 384 0 R /F70 399 0 R /F29 371 0 R /F51 376 0 R /F52 372 0 R /F20 378 0 R /F57 381 0 R /F26 400 0 R >> /ProcSet [ /PDF /Text ] >>
+229 0 obj
+<< /D [ 739 0 R /XYZ 79.37 260.473 null ] >>
endobj
-735 0 obj
-<< /Filter /FlateDecode /Length 5116 >>
-stream
-x]Ko$WA
-?yM*zVӻzzӳ46[5z }Qc')cklnc3clhRnCs2<87 tŌB竚d`8 x6kj=ie/fi8@T¥{QWl0˺i%Z#48׃[!64Vl!O'Å/ߋV!=/Ʀ'^?YqUr <3gR6P+f=6ӦԩmLI هސV<.*Kֻ
-y.j8țv!<Nz_se%"N"bիM[A+%]-s}3Ih{?K/{CWU{r{uSb 9{EO*&ap$ >꾦/\{53]<S6 @ÖBOZ
-`SXL$8W+ؘ'3y&ί`M]C9
-0}=L^)@n*~
-ii+M4'
-؊yXCs4j
-Z5 vPCAlnP:Zz;Pc
-(>*zC)
-(.*:A)p+ TE0(F͐'0W/ ͏_ +a׋7G v>h!!Jpt@OclE8Kg:դ皷֌[?6;:Eҁ]<9ֹ\}nk3,rG\HOêp]-X<*B0S7p#€R%4݈>+nJyjEv$%=9\P) ~)OVx\#u!ǩOxR>yoK916=b)l
-N L]ok0ȼRzoi F B Vz$'wH0+@p fuo1.pIvp`=8>+ qo]0g t*2]0Co]0]e6vyنA%l31{|9o`z ό?QWU',h:9
-
-a3y%΁XM}nc"vsy|d́;nFNz<~iLp; ӘPw_;5
-8NTI1'읆-ɿg$,cL=vFx_4&v8T|KiLo;x'A$||kQӫ/2%(4];ꗄSt8+Y t":vQ(ݡrЎ# 8^dB=rgXD3^2@y͸$,un/ٿ=3}㨰w^3~)}eVʉ>ן[
-6j}cOiM|;xH[nSRCn?rB\ a Lj-~]3cٺFW-u]T;ІoK\yF,Ư4x[iߪbL8lL OOMzlt9Q.FQdqMeLlBdu߳8!~m 'C@u l_Mfk
-[N}=lcz2{qw K{+ck4O9 jG>.}fǦ ,Sl|ͣ%i \$B, 'M|~َ\wêRҩd ̢ϭ`7pAh)_.j'/݋d[r \餿Ti
-9*/v8eWT;;VHdt|<;V~$uە~[V
-vLd3o3I& D#0:ouV3qO]Z}&]&Z7Z~[mSI'C;dex=^,3hg"`W58I:їkT0kn_Y睗|sw I!7k)' \ Sa7eHѻy{yq9E޽,+|%N>9K9g2G$Eލy1bD<o8t#:rf(ˢfc3iF3lҚ٠ZWeN_ISMaOQ`GYE~lշ6s6 _gg 9[#3c63L\vOSldz6F-rY+o{O_&-hӨ <bB[~,,^VΨ4AB|)|1Rq,uN\@ςpVoa6#PYCcBok
-7U*#>Se1g&+7- P
-+a!Xz nFj#,+iMs/S(|jqľ8
-֌ζAFp+3m&xQu:۾lĨ֡p
-_&w*8 ޱs(0&ow(02SPv(0&ݩ(ؔ~+yqy|n, PP]q Zh, wcmShgn[ aY<6!0eMOI{x߲9tfqɜ l-u& /Nrg
-([Вc$ja&RdAYW?G'>z TQ`3l+`ƛ;) ^JɆ/(tLcb O ŻU2撥`X$2b$~rm2 ҧQ".Ow_x 1D4a ˕og6cg!J
-~t^CV~DI!Rl}/}
-0jп/;x+Md[h'R~cbp[wƨMrn =mj<ܟ s̩s=~3f)[
-J1h8w5sJ)gMd}'CVCڴ-88g,"GqyRKVKS…۶آ9Ly(|mHD[> dx'uͶW)k+;z_j
-DŽ*K(jQ+O{s^s{,_NU8FgjdUufysLUgL 27$lS8jiI^H)Rffu]}J)/2"ƖQ:dn?4K_I/?)Ƶ"׸:{缭'asчg i*AbSetNQJ)?yRlM,a+'+g&'+II 9B621Ow#3ӾZqfZ:跈wֈܙ nl˙+Ryt6R
+738 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F55 383 0 R /F56 384 0 R /F68 402 0 R /F19 379 0 R /F65 388 0 R /F69 403 0 R /F25 375 0 R /F17 380 0 R /F20 376 0 R /F16 382 0 R /F57 385 0 R /F22 404 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+745 0 obj
+<< /Filter /FlateDecode /Length 5113 >>
+stream
+x]Ko$ Wq3{<^` sKrS~H=(J qWSHQ%}T~/wz~cN/| LYӗ97s̫0iۂq.>~(g O#> ʙJsny!Q@I)`՝kΌ~j@5(5<pZKO|_ēMO݉CȒE.(ș֊53'|ef-R\1Us3J1qiIet0Yo:
+?yM*zVӻzzӳ46[5z }Qc')cklnc3clhRnCs2<87 tŌB竚d`8 x6kj=ie/fi8@T¥{QWl0˺i%Z#48׃[!64Vl!O'Å/ߋV!=/Ʀ'^?YqUr+Β3)3h-_3qS6FlCoB+y%o]th7i_JljҙNts{K;Kyge`3g@e!6_SV́"y3)k&]_3zG.ākic0%'@j?W^{bVz.Cg2',9̏Y|<#(zr!SP&eu҇OԍկC=ZS]=?oخ_:斠77voVoS8'Ы0#(34[U*2&t')iyRN Z)}S׹h*Pĥ D &uM9⬤P_~@((Qe3}r,x1]4rbBߡy!jX3ONSZYt.J?$VY|F1S6nnfowyD[IJEpE$+%ĪWdWJ,Zw fКNAݗ_ ^=~r2vTL*LIL}j}M[_.1ak)fxl.$a"-Pp6Hp*V1OfBM_a]9V5iss`azXRT@C. + W
+P
+hO(
+q#tMrUڿu8?#o\}zzD' *%/8
+OskDBB.8O*_'~`)6f4[TV>-@e97hxZ4@
+bI0)]4c?ޏDZYs 2j>dCXSiU qXya WXC 8ArABaJ`dI00e$$J G`&Xfp
+]\bKI ç3r!JDFilBC͵<VW\ZQ:a9-1芢`ºv-R&'
+QD\~/@u۶g?pcZn0!Vk@NҁgYpE=G
+XX:5lY56h8S{,|P@u=J3mZa^:G%,wgg
+LgG}j#P5oJa~Bvm?)„hFǼ>tp&0+yZ˹oܶ]FS1s˷m*I"dh ^e _C쪦'iR[}q9r
+f-+=oNݳ! 6sm89DAc<a56ҹ1z4`/ .ȻeQ$)'v)Lհhۻ1ov3F nD״ZleYll<#{6v&hM_WZ3[+xʶ#8
+(ȯm#6f&쌒A2gk~ff0|_]i}xVf(E.rro=x%bܖ}ZYLhw/e˪9W5fa2H9=?=Eځ/F*<>\r"e6|‰kY04*-f+zhB^Q-u q̊a<<Oي/UWD]IG0Gڸ[
+7U*#>Se1g&+7- P
++aP ^*ZtHW#TkIXڴ9WGl)q>t8b_kFg[qvmfڙih<꨺cm_6kbTPkP
+lJ
+8< R>7h?Fc|8h-$h[NMmu2Riӊ/fthÔ5=%}"Й%s.cԙ$'8ɝ) ' oY@K={HZ>g]v"01bRE=T^MTobdT.x)% 0Ӆ3}m*5<V˜K _ca4[撄dmZfßri-4L~JF=~m/ф1/WQ/1N()
+zUYi%H ɿ0)A^K/6m ,K cL}Q xm]I6ɹ5\7Ios.V05.Θild967gun.k
+p;qFYGu-(_H9ӻ T-~fUY?ʦ`0^* (ܽ8ω:(Ap 7O% Ye\}:9J-[-Mk?ZdnbD2A+# o"oԿ$὞8f=c6::p_~+Ϊ,:Ϋi_D<>̡zʲ|z:U(A͒WJyMF2%V5"f25\TےMy%y!UHu*$[Fe밓},}nzs&}|B,_
+,wS(#qxN!0[[>Me'M9F*4IIe4_l''&
+Ȁ<kE Lj ̚iIΊ/"F$$71o8s|E4^VB`p%
endstream
endobj
-734 0 obj
-<< /Type /Page /Contents 735 0 R /Resources 733 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 710 0 R /Annots 738 0 R >>
+744 0 obj
+<< /Type /Page /Contents 745 0 R /Resources 743 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 707 0 R /Annots 748 0 R >>
endobj
-738 0 obj
-[ 732 0 R ]
+748 0 obj
+[ 742 0 R ]
endobj
-732 0 obj
+742 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 272.438 67.03 282.895 78.488 ]/A << /S /GoTo /D (section.7) >> >>
endobj
-736 0 obj
-<< /D [ 734 0 R /XYZ 78.37 808.885 null ] >>
-endobj
-229 0 obj
-<< /D [ 734 0 R /XYZ 79.37 771.024 null ] >>
+746 0 obj
+<< /D [ 744 0 R /XYZ 78.37 808.885 null ] >>
endobj
233 0 obj
-<< /D [ 734 0 R /XYZ 79.37 353.704 null ] >>
+<< /D [ 744 0 R /XYZ 79.37 771.024 null ] >>
endobj
-733 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F69 398 0 R /F15 377 0 R /F56 380 0 R /F55 379 0 R /F58 382 0 R /F23 375 0 R /F20 378 0 R /F29 371 0 R /F52 372 0 R /F41 373 0 R /F51 376 0 R /F53 638 0 R /F42 374 0 R /F43 737 0 R /F40 387 0 R /F59 389 0 R >> /ProcSet [ /PDF /Text ] >>
+237 0 obj
+<< /D [ 744 0 R /XYZ 79.37 353.704 null ] >>
endobj
-746 0 obj
-<< /Filter /FlateDecode /Length 5030 >>
-stream
-x]9d9W9k}@3A6`m0KZ}RGJ)=m0jԑ>T/o_>EK`J/_A ~R`܊˗.|B>jy$\3@͵\IέtqnOW d3JlX}owGzZ3;ZNƆ7$cgRr;/u36h9s@ia4S2-X5*Ofݚ֘J'fyĿc瑑L#e! 3>dSm;|tT >yfg5KXSJi )Y0/o69wvl,cJ*ΤTxY*8S& $sQlJ쩎3fGs9;򧫰v_B3h REE&aBpeœ>Il)ҫ[D,:ԲGOG1dYjunQ9MFkk PT.6(fJ|βɓO pHC|dyfgs&*0[xA޴]60XK7R
-#D6of'JP;}L ]!h>]("/[oQ^8$QIy˴U!@DsjXSawf^0 *x.BePW2{F2I1mbC6÷ '/f-<ZMвh#Z)ƉC?k<~4jkL"MoXmj SXb-dIOX8o v| ڔ:PF8)#G)}+m
-9Rpt`Q( OCl@z>!
-x jGYxs ˔ ^ܡ0uȚ~&Dt@6<r/T.opwCn/8:kutS$)c*e]ag89j.azSnR``Bbm+Ϥgc "ʛY,Evb\.ZFNW3C`1'.MQr !UZ|F?4:h'B_<77 \_d
-&&<ӶD9ZۙQ֧ki#dۮ; ck2$SD? M=z| qn3Ea%d-W :vct_ p+yEC ҩ':kٟ71X뉙]c fvaӰf>
-N0XC7ClPɜαסs[sl͌UOþNaNq*M.][FY]V?V)*:X=YXp,Jl|f-#cZg){Vkf^ldS46l-l B:N.K& @ٛoq"{_" Fm6r뷼I#AcXcz VVZ.jTrqu#~gVvAaٵs:QUaJmк9gRomZڲyg&!0iuGlWTxsPwtgny΀:ctZ{~R'hI?-vRwqMP1N&Kԥ~;υm՝f\fT9-JJ烞}2ZTt[0NIpĽ賄 z֞
-˱=#znϢ,S[P' Roz".,rHovԊU|8#a~va`%]/(LPn~HҨdV@w&Z%u,\o.|KsYrLAG I0r?5+ .HU{ɸST C'>$
-
-y'
-g>T|̄Į`J+1/𕻒O֢R3F[]f:L (S3?c=Rd(_tw(*dZ̞ڶϠ%VfE64ioOv,eW]\z^F9j}D`"~ƹ )a 4
-޺\
-'U5}k. ƂJt9E6[ϙ-L/>fUc)lbkI/)MM "q+5.HPM9e˱=љ]1+䪆x"*kב5 Iogq>,}Ӗ93vS. `"Wp]*y#n<ԭڪҠXk# τ[7 =y<F w=.M<q Բ8^&^|)n;z@-- >#S<Y4(O%G.ifE,>|_/_34 \jWŅgԒ(<' fb6]w^I
-OFgEr ߪnPZO .˳#:ZvWE5̔fZA)2
+743 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F68 402 0 R /F15 381 0 R /F56 384 0 R /F55 383 0 R /F58 386 0 R /F19 379 0 R /F16 382 0 R /F25 375 0 R /F20 376 0 R /F18 377 0 R /F17 380 0 R /F23 646 0 R /F21 378 0 R /F24 747 0 R /F48 391 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+756 0 obj
+<< /Filter /FlateDecode /Length 5029 >>
+stream
+x]9d9W9k}@3A6`m0KZ}RGJ)=m0jԑ>T/o_>EK`J/_A ~R`܊˗.|B>jy$\3@͵\IέtqnOW d3JlX}owGzZ3;ZNƆ7$cgRr;/u36h9s@ia4S2-X5*Ofݚ֘J'fyĿc瑑L#e! 3>dSm;|tT >yXR8ߔaZBJFaN7[,KbdyG3U!-:|Jf=Δ C<ɜ~ۺm;){LќbΎ*W <xEQ oyؽa0'>
+ uh^7G k5 E$
+oqyOZ"ϱHӛ;A[wT0lq
+s":u o{TSt*7I;ES
+!_C%, OUI.
++js\0-(ܤ-4D4bm+d⇶gcZDy`9q<&>;Ÿcjf,%׹)J.2\JPYF-DRgߡҢ& F~gH=4]iS
+5^fԆi%׎ fq*Af#?T <7T&
+&BuHi$6uůw쵪`b23mLe}Fq@9J@] ]?,C2uQJԣ<j]9]JMr,iG=Jyy9?Ҙ^4tNn j{ys,3!م+?p`fV1 kֱ A5t36Ț(^i|~<%< viN[4웯Va ) ?qbeeոQe
+(VO9.no#f39zp>/Y޲3=豆W<xi;":"M)lM-[K@8[PS
+NUKt~Y=kOp؞C=Igq[z=XxOn3iOOS{D~]X>吾fpm5#ثpF W<,ݸk 0oɷ_UB:n׀~Ç.o/ `*xsÏ]Ȃg
+Z?ZHàܠ_ `|p5 W@*^KƝu-/,HDo:PFS?,
+@aN
+`-z.
+8x8MFb5x奭i֙xnÒ3D|vdk6V(΂,rg{%k>"10_m,>s0500P;u fA-ۃm ~0;0 w++={Nʽ݅Uva=&
+S@g_»'>޺vHbTaͶ!u"ozQuE%zћS'&IXRzQv7,V]j i v7ݵg"_p u: >ㆱ5E%-@EY$sp%XKcÏ(".E[X{;5$
+fVbͥLzu\JwתeytI'
+3B
+9R:s(2֏EbB>˟^įI #HrqoS:$pWN
+ (lD `SIt!A
+,,n(hIJA3JIǕR). Ǖr9PRcL8 R1 !~ZiqT<e#[xwR^/O^
+byZ/dG ӿgȌ*sY@ia@Գ !Ȥ!~!ZlBqT<LZb2W ^*؜ B dKe#[yZ/'!]]wʀŨ8hE>6"X5eκrcr
+0R11 SGKոF}q(k|%4\Fl`2 ifr01h&ker^rgF?)l:؛qPaXTu|>ޭWc 0]2*EM~e' W?8 v7h]^vˆ fn$jKΛ_"Gٍ ¼5Ef'P<kO+RcX>5Yew>-3^<շT6*s4ȁ'%oF~۟ˍ߫xџ8OcMcVNj򙔦?[,fv2(tT,Y4> Ɨ*5tn=g2a^P%VKk;%45-no@Sߣ6 AAP4ؖ-DgwǬ%>_yvS_GN,$wMO[N@Ψ[Mm$}\aOw -P,jvH:c$t'<n9h<2C}&4Z
+eDR{x֦ś.r
endstream
endobj
-745 0 obj
-<< /Type /Page /Contents 746 0 R /Resources 744 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 710 0 R /Annots 749 0 R >>
+755 0 obj
+<< /Type /Page /Contents 756 0 R /Resources 754 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 707 0 R /Annots 759 0 R >>
endobj
-749 0 obj
-[ 739 0 R 740 0 R 741 0 R 742 0 R 743 0 R ]
+759 0 obj
+[ 749 0 R 750 0 R 751 0 R 752 0 R 753 0 R ]
endobj
-739 0 obj
+749 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 230.065 666.125 242.02 678.08 ]/A << /S /GoTo /D (section.11) >> >>
endobj
-740 0 obj
+750 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 257.741 666.125 269.696 678.08 ]/A << /S /GoTo /D (section.11) >> >>
endobj
-741 0 obj
+751 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 205.692 551.065 217.647 563.02 ]/A << /S /GoTo /D (subsection.6.2) >> >>
endobj
-742 0 obj
+752 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 355.086 551.065 367.041 563.02 ]/A << /S /GoTo /D (section.12) >> >>
endobj
-743 0 obj
+753 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 318.024 539.109 329.979 551.065 ]/A << /S /GoTo /D (section.9) >> >>
endobj
-747 0 obj
-<< /D [ 745 0 R /XYZ 78.37 808.885 null ] >>
-endobj
-237 0 obj
-<< /D [ 745 0 R /XYZ 79.37 647.799 null ] >>
+757 0 obj
+<< /D [ 755 0 R /XYZ 78.37 808.885 null ] >>
endobj
241 0 obj
-<< /D [ 745 0 R /XYZ 79.37 197.296 null ] >>
+<< /D [ 755 0 R /XYZ 79.37 647.799 null ] >>
endobj
-744 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 377 0 R /F56 380 0 R /F20 378 0 R /F23 375 0 R /F55 379 0 R /F69 398 0 R /F58 382 0 R /F29 371 0 R /F82 748 0 R /F51 376 0 R /F52 372 0 R /F40 387 0 R /F59 389 0 R >> /ProcSet [ /PDF /Text ] >>
+245 0 obj
+<< /D [ 755 0 R /XYZ 79.37 197.296 null ] >>
endobj
-755 0 obj
-<< /Filter /FlateDecode /Length 4407 >>
-stream
-x˒#>_R~TMkdYO!qbM! jif7[{
-8o͉y3|fŲQ
-%! UP'4fjT$>9^* *5p%
-<bv;_&v wkޞD]?)E~u PN3v zĄjLY\,CZ,Ae$M Dg 8TD/ZGL JEbO311ৈ&Y'?N̷tRu̼̒4~fo C,iVx$$U>sQ^pl_ 6Ƚm22gfy,:G2:ʀzA+*᷿~~xJ`݌p(!Rʒ4 hJ>lyEtW |ӅL{%є64޶9#sdo<VUm1{bE0ÉzWI{սe1"nt&j/c&˔zᝥ_`UG{N"\KcGqF#ݛQHGwD™t846k2B<Bȱb?\N!|$Lj1 zD s`'>'_&i`A$\ FkO%cN.HsVO|9)%S!;W6>ͅhg6=܊(9]ݓ&jsLs7.Je)~ &1 GXYIqJ ۦ!E=Z9Aѷ,”gu܍N+M7QLq :%NI!DMlXp&GM4ưM!D=-eN;j4,nF(>3ҍhȖR|_+hvv 4{ZoK?䛞li OIQ1ү*,J"#aL
-t`vB?
-0*حa+f > pÂYpg5j }[P %J0,Hihn20is(
-}
-wOdqtzO"}{I#@=R> ]/A >]{]6|SVI}1Nw]1^U) a T>WI+ך|$8I<KbTXV9HCyбJ2fD/D'b9޷M%ǂn&
-羻_V(u%>rt65o*mureʉB*qn6FJ+8Q|<DrؙdgF&O5vu 9 N/fȦAa;ȈDq̓jBe6﮻# .ltN܍N#-th -)' nIU2R+.^eg %>ƯO4\liZf|WB1ϫ\3ySUQ{.FsH~p4r΃^dkAKX|WoZ~@0ۙoܯH&6^Lʌ%B KƚX
-CE^U TCԬ>IqZU5[Q}giV?s5>^ܩf:r]U:f'iWlOFQ5%>\S[i̽bY}*eimXpQ{.
-n
-۠|+ULplH2Mɞ}~bה@攮
-%D\/hR2`wWXRu%Tb+V#_}Cvv8[ږbWCh|?sBdu3&+~R oboOޗ |<wLnE%3ġ~dQO!HӸzcPhJ ^?*Ǧ.~kTFʄ:GZVAVש_i*J-$A܇MʟU5z/l1cM5F 85I=&*K;\|v|quc|Y/d^F56? IUeԚuLxzttn!yD,8-{=:nS
+754 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F56 384 0 R /F16 382 0 R /F19 379 0 R /F55 383 0 R /F68 402 0 R /F58 386 0 R /F25 375 0 R /F82 758 0 R /F17 380 0 R /F20 376 0 R /F48 391 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+765 0 obj
+<< /Filter /FlateDecode /Length 4323 >>
+stream
+xˎ>_GA
+}*B 珧) ULNjSr <+g ?&27eR
+P Ťq]0=ڶ_Eϰs@}3 l%'s ;gum&-5-
+R{lM$Gr[ ۳b{:8eq8G1أɺCPĬM;KD9hN!|a;MROؽ`ll툽 z ,bw;,&m.Pu@St<'쾖9s= .v;u>?+N
+XK@sY(/,}bhr1ܭ;Y8\onZc䏡NydQU/~(sV4'\1ɩ4t{o,c&M(Os˓9&2坆e(bHa^QUH0ZJ6).3B}͓ODJ)!^S|kb-KbSakU St_z!b[,ZPJM)!뀆ЕC~i!c0(IJXnYHP2GJd76T0ObQʸBS*ɷ**WER]~bт2&cɲZIQ3[e`YQ
+6@#Vecej5F7n6" b3PF.=B23tZwk"I>% 5I\Y\<C2{HD $:I*! Ba\ ^Fj!NբuNnzmURhmRNe_dhNj,tZF9_W&ngLE㕓_P݋ug%]`?,m˵8$i-2U.J<ua% OGM[7o:d+Y.@rSt.~_8st5cJg׌j- tUXJ%f斕5PDE紒vj0vݘa$
+I T/8PȂ8E%uF̸LB $}44V%}F䟺f/AF]J9`߸''/L+00ƣ<+S,[l
+sث
+x62!+/$j¾l5yu#Fqδ>r1I}%VMr Ō#>ٮK\ ֽ:>1uv#.(6=fmʶT~6."{ *{
+V&L?0C|FV<!ʉ 2wvE2i;YVx(̐dFؠe t6<yl ֔>I9)_&b~'Qu_ư
+攑 %1Dܡ#}WI`ғdvIPHYDVձH9E;$a!f2-tH[>$c21XWT#@Q}?cvl&_ѦI`T R><%f6(\M#èp&@e
+܎)OyV&_N-Q+p?쳋g^\Y~ `h>&1YCL$ o׎;Y+YD Vv(x#
+Cݸ8¾Yd2@ة :H]P:DBPâ8}ဳphIT.$~rj3irt{q์$3fSY>j<A6ʶBn92\LeDXO=U6BJJŹ0LL0rZʝ戱#RsBl!t}{fPAR\
+^&h/bQn7(F؜X Iљ)hD,>zf\poa=*9fT¿׬ `eʳ`RTX$r'ue$!*U8"TOS]:5ն!{А
+>??mEk PGdZ\:UYN⷗t; y1Wa>F]A}S4>vt7ѡ6W5
+CQGHe3)NJIOj%jTu,4푷|x$G9ҜH^KRE
+t T|&ONI,;Ďץ,8_f(_iEې&vֱxׅS,0<+68R,CJeG){ƇN$WU3̟5H5qQ4mARhzQKcOGB͵O\NҸԜKG \irtRv<)==[RCs'܅|B8I}貅8w[yV/hjZ-|x9UST>~OAZ.h#Ēv8?6259Ozn*O*l|
+HΝ]F1"˩%n'/ISo;k0>qSȯfLhCݫBmФi2pBTCfPXows_P'҄zN#tü\dYIjJhY&53\36ʿ4E3}ʼ2f fpw$m7ͬrlp(nblr(~̎ޘ}>};JO˃?vg:7,gd9C BY*eZL;r~ad]X; =ױ]
+rgN#ehX{`?-#_5?LV$(jSOh3I闚zZ5Tļzc-C|/:졐\g;Zv6M@e78Xx
+OwBFnrr8M-.Dvw%m"R]7~kƲuk-ʅq,x2'8*Z KsIkVl]wW͞]z`s,!j4-R*!W-PfM:Sv0}gi_>B&rJUnv52F/CiAF>c|I8D){̢eo`Lw|0vhf[5z5$4/hap1;Rj.%+Sy ^?{N=X ~ĚI<3|~8B0/cs"/K:q^ԎB
+Dy_ۛ6!3`Kyc815{c
+ i s۽#=\<Ƿ~Q[+s`66xr+4+Qy3h<|ӫqfpeW.(ϳ1]x! m/gHԘ1ry{: ռ)d \< /MC\_oV.|#&#d|v#%
+9z@>
+IL]
endstream
endobj
-754 0 obj
-<< /Type /Page /Contents 755 0 R /Resources 753 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 710 0 R /Annots 757 0 R >>
+764 0 obj
+<< /Type /Page /Contents 765 0 R /Resources 763 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 707 0 R /Annots 767 0 R >>
endobj
-757 0 obj
-[ 750 0 R 751 0 R 752 0 R ]
+767 0 obj
+[ 760 0 R 761 0 R 762 0 R ]
endobj
-750 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 417.687 466.68 429.642 478.635 ]/A << /S /GoTo /D (subsection.12.2) >> >>
+760 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 417.687 468.035 429.642 479.99 ]/A << /S /GoTo /D (subsection.12.2) >> >>
endobj
-751 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 427.973 454.725 439.928 466.68 ]/A << /S /GoTo /D (section.11) >> >>
+761 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 427.973 456.08 439.928 468.035 ]/A << /S /GoTo /D (section.11) >> >>
endobj
-752 0 obj
-<< /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [ 233.622 195.298 434.369 206.486 ]
+762 0 obj
+<< /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [ 233.622 196.653 434.369 207.841 ]
/Subtype/Link/A<</Type/Action/S/URI/URI(tex.stackexchange.com/questions/488566)>>
>>
endobj
-756 0 obj
-<< /D [ 754 0 R /XYZ 78.37 808.885 null ] >>
-endobj
-245 0 obj
-<< /D [ 754 0 R /XYZ 79.37 587.905 null ] >>
+766 0 obj
+<< /D [ 764 0 R /XYZ 78.37 808.885 null ] >>
endobj
249 0 obj
-<< /D [ 754 0 R /XYZ 79.37 436.398 null ] >>
+<< /D [ 764 0 R /XYZ 79.37 589.26 null ] >>
endobj
253 0 obj
-<< /D [ 754 0 R /XYZ 79.37 265.743 null ] >>
+<< /D [ 764 0 R /XYZ 79.37 437.753 null ] >>
endobj
-753 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 380 0 R /F29 371 0 R /F23 375 0 R /F20 378 0 R /F15 377 0 R /F58 382 0 R /F67 385 0 R /F69 398 0 R /F55 379 0 R /F40 387 0 R /F59 389 0 R >> /ProcSet [ /PDF /Text ] >>
+257 0 obj
+<< /D [ 764 0 R /XYZ 79.37 267.098 null ] >>
endobj
-764 0 obj
-<< /Filter /FlateDecode /Length 4970 >>
-stream
-x=Ɏ\w}EE(V*U xN f32Ч .AFgT%"+Oy/.ޔ8}w
-_ț(y/RZR6W2>_`Gʧ?Ş[O[/87W'T}|~zY>5;5卹pΛB%/
-6h9FxWuR,3o6.gzJiX`9,0:",a
-M,}8BK6X$P'/$Q +C{iQ.?Hd8+,v[ i,E3h
-ޙ#e42 b#|`l73_RdكZVIz- e3_/QvʄP}/dV@WӚ u aiB GCumQk}R7ݫ5L*-JlF"*9nYqS3VheT^b&~cׇ'wN
-mS 4spZ2cFK$$øqEAɤBv;ÅGd9[j j&)B֌b:vԻC5fJ^Z w:T)L_vlWT}Ud )$IKD^E^x{R!"+aAG#B6}yfO"tbql! ͎ka}0W-h:VŠI:&mn $czF|
-8A57*rK)|d^"_1IWG ֕$P
-2M1+4FҾi>tR9xQ$ <:g}|oV?(5D02~Hp A @cgk1x`=eoPάu]f;Pؗo "*h G {1gݗ-߳sw@ʪ^)^isQdJXu '':p{d.eͽ!~F!k}
-e[0/!ƣ`&Pq j@bA<7 TvfWđJXyyR^:ogB̈́'A#x"PǪN~u~(Feo.Fdʄy|.aeU^:3lĦbټ
-ڴ<Ŗw-XLߟvC˲ } . @0&%UVoԘߘ"mB% ziҭ,yTXěBzO|&Lԣ|C4TS>ia<{6zu6xzn>-+G*1I0^;@4O"
-16Luc|7?XЏNq̨S^ܻeFU&NZ&^J;gJ3i>[ob?g ,d3z:! qkAg.K~?rR&fڲsOY E8P˗wpnD[["u{
-˝жOVF?OIX!̇A݊ҜZgRB0ͭq5?+1 ⻎i=菍$.sWѯ.Sx? k$-eICh%Τ6~v *<}{&io&i'SI{5~ג WmΤg~vz@?Hڛƞ$"<uvI.d'bt5քft˥*P:wLq1.qf:t}}FN `nA8_7tԺN# b
-RTg=Am990~&<4\Lc[JxGO:U-O>Rm
-=F/Ȁ]͚Fw5I$6uԿ -ս\j}-k~;L/ϲ&o{a~m>5y=I \˥ײ&l+i?˚i웤]Cd5y=~Y0N(u٦ײ&l+i?˚i웤]Cd5y=eMxbdpY=͚zY4kr"AA
-Mm/
-f٭:b2v3Y%C;mʽ*T7`^uehrP1'21plsAkftNvE}g$ ر:;dO5kJߟn=B(gSbߍyT(f%v+PTY<,z|ΪK|^t¦GԶ FFv5/]nů)hn܊:43%_upBڣ),[C8cKy-xqYIN. B
- TrFi@VZhGڞ)yru{w"K fy>EQ'dv'GLiT:Yƃde`zYjK#zӅ=
-RrW5*$ښۥ47a^u>\exkV[exkW8#x5eEzj+[WgKaknZ'oW/ę&Z;dE S%0|0*D"L\uBkcle9l濄2|NC
-|>Opx_zQ1d 4T.*5G~ikw2S˛_j
-_jiS•'[~.OWy-:߳,ݾFlV+ߔ ˸@em"_=ִ\KX[U惉\4.
-4G@-/Us&nUbD{SAK6u|HjqZ\q5F0Oiy1&Vjk
-,.YKPF߸~{o~1/ɢ1^ȼ݄^I" gzCR@
+763 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 384 0 R /F25 375 0 R /F19 379 0 R /F16 382 0 R /F15 381 0 R /F58 386 0 R /F68 402 0 R /F55 383 0 R /F48 391 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+774 0 obj
+<< /Filter /FlateDecode /Length 4965 >>
+stream
+x=ˎ]9n{]v/J#QoPdewYudx^C=(Q::+B'=GHOQҕ/yO/.ܔ8}
+_ț(yRZR}sA핌"l:O4фOVӃ{ >I==UO/˧p{yc}<y3QDV@L憲'υ&a80Nrl.l+yΦ؛ho[YDߟ^ftX MO/ޢYpO*fLP/P2( <_=m9AL^U@f:#aw#7B] 7'r\ Ja216-R% 0SB<ݒD DeE'v~zXt8?M3s|6iB,2h
+]X`$/l"l1FBLӺu\T<-Y&aL-B Q;eU oЊ6o+aDC:רݢ0!䣑6hݾqޠ>u@82OthD/uEUrڲYpgFe!).P9M Lz:j9)4K@;Ы,f9u*>883W3^y4?z9lM.% ᤚ8
+p5DՋzw(@6]Z; nVINZx.8g@h7bΓ"a3 4ib%gI5XZ$
+)28-` M\  =0،d3QIcS!4L܁v{GUѡ.bmpZ!3zς#ix8dˉ@"unZ({ުJ iZp]SQ LOzUސoVU4&Zq1)-x&&]8|3dRT~ SԲ& >JƊ8a 7.lK)0h*UQtDo0c]RR%7l&IDJfJCKHW|>0+S-_n0):{FPƠI[ţ|xl "6M0w1kYG#뵙٘B0 a鞵k7S]mh6ںqssBCKkbC|+̐xC=Q>V)z\;,^ƟsQlqKF[u$':p{d󷮴e"!}F!k}e0O!c`&TՀ0edx,)&$: V:^Ҫ*!;7P>Ý Aa~<Vh_+^H?t:8eY3 >?\*Lɔ 3|.oqM*^:#lԥR ~
+ ϜۭIu7O|Z);E@#_}r8 _ng!FW;Xk%Yۭ@w?9r4V'y۽rȢ3|æyMx,3w>YėƜvإ}h.IdY_]ש? {,gChau9U5p홖gꛚ]#TN hSQji մD5iɯ㙦ӴKuwc<q'Kxb0cT5Q9*7q Lꢘb0q/Ce܂p%޿|h]'Ȩ!$I]\z_.>7B1gJ
+EkӢM"% ~5Uy8gUwM}ӴkpO&gju֋V[_0WӮ_V5y7MF>jz_
+)~_geZD,j
+D2#*uh-fS XHX$T,tMi+
+#@"=$kif
++8RpPdd"Ky]7#uϜ|Y it3EHoL-Q3o9v af&9O,FC.7Pk@ұnv)Ih=>աlSB ܎}w1Fn"옓ʍŽD1SzQ*̦w$6 lI='=]D ٓ!o #wpHsD[s@SyԆ,̫瞛c\=o|_ks ޚͧ3=3[Wg:Kj=y8^$<޲S[IWh 2Wrˉ,
+3NfğWC"oڬnvoi?2̼Mc
+0op|_ec| :ʨ|-)mxsua`CU_|ꍦ'>ؗڷ{"mII[ʓ-ߖ֑,߳}MvY6 5mJ,\%֭h~叩Ħp5lM-M[2qsZ\J
endstream
endobj
-763 0 obj
-<< /Type /Page /Contents 764 0 R /Resources 762 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 710 0 R /Annots 766 0 R >>
+773 0 obj
+<< /Type /Page /Contents 774 0 R /Resources 772 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 707 0 R /Annots 776 0 R >>
endobj
-766 0 obj
-[ 758 0 R 759 0 R 760 0 R 761 0 R ]
+776 0 obj
+[ 768 0 R 769 0 R 770 0 R 771 0 R ]
endobj
-758 0 obj
+768 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 256.857 85.96 267.313 97.417 ]/A << /S /GoTo /D (section.10) >> >>
endobj
-759 0 obj
+769 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 419.713 85.96 430.17 97.417 ]/A << /S /GoTo /D (subsubsection.5.3.3) >> >>
endobj
-760 0 obj
+770 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 247.372 67.03 253.597 78.488 ]/A << /S /GoTo /D (section.9) >> >>
endobj
-761 0 obj
+771 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 266.652 67.03 277.109 78.488 ]/A << /S /GoTo /D (section.9) >> >>
endobj
-765 0 obj
-<< /D [ 763 0 R /XYZ 78.37 808.885 null ] >>
-endobj
-257 0 obj
-<< /D [ 763 0 R /XYZ 79.37 771.024 null ] >>
+775 0 obj
+<< /D [ 773 0 R /XYZ 78.37 808.885 null ] >>
endobj
261 0 obj
-<< /D [ 763 0 R /XYZ 79.37 734.627 null ] >>
+<< /D [ 773 0 R /XYZ 79.37 771.024 null ] >>
endobj
-762 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F69 398 0 R /F15 377 0 R /F55 379 0 R /F58 382 0 R /F67 385 0 R /F56 380 0 R /F23 375 0 R /F65 383 0 R /F66 384 0 R /F29 371 0 R /F20 378 0 R /F40 387 0 R /F46 388 0 R /F72 434 0 R >> /ProcSet [ /PDF /Text ] >>
+265 0 obj
+<< /D [ 773 0 R /XYZ 79.37 734.627 null ] >>
endobj
772 0 obj
-<< /Filter /FlateDecode /Length 4202 >>
-stream
-xM$9> !q'MsC`E ÉJUW8*ql_IF^vݯ/QD\>.`N_9wnA^ sR/Ia|wlB`/ݧK3"u"Fy
-.Woa"}~&,?eA0R^KFZZkJ_#h pԾ^xPe /Gnd<-
-5
-&_z(V(UӨ!.4Ϫ(
-%5."Hg2֗HK%iU'4? 1V
-,E[Q3iޓ0o媅 ޅ)']h>B;Ѕ\AXmO˫}^b_~9+;_n(d]M( xQvAfp7
-g3
-|tM朼ȁӺIbZ
-B|^\W%PU0L WmP'a_V:9jX pjTX3]:Fp^@
-Vk4{A0#]1 uyٔ <I6O n_PqeZBCi)j)ݛ/~z5!ү7n LA%WwLoKT!ē~oBxLfRJF&ivhfz
-Nµ
-ᥐ6ĦWqe$B#lpf^Ҭ N@T$DF&%&iPVU$@m2_4U@4V{"x@ 'gT2Ke%,"Sm8Q6Qgvb2bZ?1aQ(̽Cf;YX7B붬p~)VA \,5[$Q
-\(3'n)<á`># &gfDWVָ2CA
-RݙW;:4=)NCy{J[(;)c_>V:Z>e2~~UKXKEȝ^,e%4y*p1%7[pyJ2.]H
-%wF=NP|qL{寏o~^ґK`=ÍQUVDŽ{5O ^lļX~ × ,%ɈuV5IZY0bF2NރyV=,X)Xf jh]M/̲x?YOϐD5|dhr0˜d]5Ge~jj{<a3,'!GV%ܓUلONRIL?
-S{: &)
-f&bI=㴴!~
-3tNV"1=@ϑ-Pnj5Xh5~_Z#,йr>",&Vydn5 ҪC烈tOFFx3ֹ偗Cn('j
-14;'eoZL QâW0 E杗nf
-ќȩY+Y)<Y5'%+OF&m.Ι'gAw/AԖX+|мY;oQJM66U<>:5KxI7nh\NomW(׼5ib7nI}I_LR)K HÚ5F= 8ѐ7o.Sd`&XMY4m7SD=+wk3|h̭S^|cZNy0=es[tZydc@ml~> u$ېWmG~P0 W=q崀` ߞM WG鳻#>`5gwF(wKoX'2K/ ݢ咉4[l
-ե4/! Hl 2uI!^A4zT*ԝŽ|r֓зJy*X
-ΡF
-h996op[+θ|H{WaeJ
-p+eKq$`+Eo`e*j4z+һ*Ik\qf'HI'>*dmU g(5?sfQU]z?X<늝1Mb2(6Nt8IR<}6]~:rHh|<kfsmӍ.qȷ: E1AX스=G7XP۱xtt;VYU'dT.x1 =:u| =BT/'^Dxk(_ٺج|~ qM-N0i5ۻ˷pRCmx(tMEuSZy0}AE
-gbS[G]y,-*ii,\R$h a.fl&W߶!VU
-{rLv]uO=cVeA;_E,|SZyՉ-??+|W
-{u \Ra6vK߆_бmk2l ͕6{ɞD17
-ڞKb1exoC \z+~z=+OR \z*Cр
-4PӣS9q5i)L,JKkXbMfIt
-Z 8\{Z+!jؙNò(\Zm;+!u 52-Y҅
-O%$I2MI1!Y:wn0\L\ZJf13TkP̫Ez\v ESgW#'t F .eqmi-
-:S ѿ"mtQJ c-I=Pte0SǍm}.R{H"bJmiڄ*tږYɫXviL_952OGYn|mz,u3\czsZ5Fc p"Ll&ɻ>
-]\68I~ީϞ;;ثj}w=uo_P9>g2vܮ%|e$ۍw~Uxt@D9kJ>LIc~H^bd[l22NכO[S-=q/<:7zzp\]T BWٿG7- 1
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F68 402 0 R /F15 381 0 R /F55 383 0 R /F58 386 0 R /F66 389 0 R /F56 384 0 R /F19 379 0 R /F64 387 0 R /F65 388 0 R /F25 375 0 R /F16 382 0 R /F48 391 0 R /F50 392 0 R /F59 393 0 R /F71 438 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+782 0 obj
+<< /Filter /FlateDecode /Length 4197 >>
+stream
+xM$9> !q'msC`E ÉJUWϾpxU؎"/~ï`/QD\.`N_9wnA^ ͗e1^ w?|9 ^}ˇϗgD r 8D<!#
+W
+#72\_QYʯe=J@F?*hiFEgUbWPGt*B Q +e O(4
+7VpEr?BJǓ.sOB.q UO
+l>/h?wш ڜ/dm&pލ(Ag鉠w3B[>n:&wsN^@ li$1VDgVk>/aW(D*t t 6V(7ᯫahtc5jj\ kd5*.Q s#A8e/ }L+~iŏ ϑ׆:Q<WlJ$]QS/ (2Mշ4
+iClJ>pWFK"48Hg^/ͪDEKKhdRb uLmUN*o.]O*] $N7n5=
+|$ *|xޭJfi^Edm'J& P1Pdo` 涘O ht
+}{B, K%IW)<I@
+Op(X
+-lf%dʮEs$Q;B?=NP|qL{t3XiOpc|Te1^M~ӂ1:_a=jeK q2bfDңVV-y*ѼLӫ$'kEU, Va
+VYf>Z52Gb 6^OS3$(='Q_
+eH+=kg7n@irڄ㵯1g ytu9x("Lc >fU|x7N?Nc`E%eT_)KXP(浺3Tc>q٩ulKg v5܁O71xW>zMG
+3tNV"1=@ϑ-Pnj5Xhi?/]9Ocvr<TN2d7iUӈ! A\X#Y#\c!7x5ktN[vtmlGo4lCDe39)LIJjjMM14tWuh7-a+pdԅ"KO7F3hΉvଈܕYJ^}na#z˶FL󠻗 jˈc>h,ηZ(SEEB`~DIn*
+֥n$e7OPFH7~5oiMlM[joD,kfTʒ&f̈́QO$xd0q;c4[ kDcVqs>QH
+&+e>q3fj&<sjߘq:Ly]Vh"g<Є{b-ggst<Gu]0ey6Uۑ)ce#՞n8rZ@\ɊoϦX㫣ݎBJ[3;t#7,U]ۓEl^XwG?tnQr[g-HR[RhחPچ$`6TIܺp joo=*yB[NaG9Ƀ?[Z%<w,
+y}/XD tU*mN׻ <.׽J]b2b 8!!</tU
+8ְp̒R;p깼P ?dյ0WB2^3eQ$*"AێwVB#$fkeZO JHZeZb0Bt.af~k;=̜cf֠x;WOd[&JxϮFN`oS\[
+h p+Ǟ0*D<zxZej)E
+_Q6䈍(KƤĞQ(2|)T6>NDc=J$1\_]4
+mBipj{fWemKجU,ݴso'ˣI,Ac76=:yvi9-EW~s8w6zyXNF$?ghRա_mu^կ`W8l{=;_g0vm(+# nvcu|&&9_S*iJww"yI'dd77Zz<_xtnQ6ɻḦۻݩMoR[߽ct4$_"Yn~VSͪ}wK1S5 d{~W^bZX_b-D |wB='fb0+Ŝ9,-ʤU}Qru@!j_#^dH'+Zv6e)U|yG`!ZsY
endstream
endobj
-771 0 obj
-<< /Type /Page /Contents 772 0 R /Resources 770 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 710 0 R /Annots 774 0 R >>
+781 0 obj
+<< /Type /Page /Contents 782 0 R /Resources 780 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 707 0 R /Annots 784 0 R >>
endobj
-774 0 obj
-[ 767 0 R 768 0 R 769 0 R ]
+784 0 obj
+[ 777 0 R 778 0 R 779 0 R ]
endobj
-767 0 obj
+777 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 273.502 521.07 298.19 531.91 ]/A << /S /GoTo /D (subsection.18.10) >> >>
endobj
-768 0 obj
+778 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 313.911 521.07 325.866 531.91 ]/A << /S /GoTo /D (subsection.18.10) >> >>
endobj
-769 0 obj
+779 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 486.065 147.626 498.02 158.575 ]/A << /S /GoTo /D (subsection.15.3) >> >>
endobj
-773 0 obj
-<< /D [ 771 0 R /XYZ 78.37 808.885 null ] >>
-endobj
-265 0 obj
-<< /D [ 771 0 R /XYZ 79.37 508.112 null ] >>
+783 0 obj
+<< /D [ 781 0 R /XYZ 78.37 808.885 null ] >>
endobj
269 0 obj
-<< /D [ 771 0 R /XYZ 79.37 415.636 null ] >>
+<< /D [ 781 0 R /XYZ 79.37 508.112 null ] >>
endobj
273 0 obj
-<< /D [ 771 0 R /XYZ 79.37 129.3 null ] >>
+<< /D [ 781 0 R /XYZ 79.37 415.636 null ] >>
endobj
-770 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F29 371 0 R /F23 375 0 R /F20 378 0 R /F15 377 0 R /F56 380 0 R /F67 385 0 R /F55 379 0 R /F69 398 0 R /F57 381 0 R >> /ProcSet [ /PDF /Text ] >>
+277 0 obj
+<< /D [ 781 0 R /XYZ 79.37 129.3 null ] >>
endobj
-779 0 obj
-<< /Filter /FlateDecode /Length 6917 >>
-stream
-x]KWe
-+J/(JкTļO.ᯱȰcYC?q1j.ԓ}Qkʟ~=`(aL(x;1xEggD 9oClq '$]] cKS=0f#%05D'X[aU+eVGC?#`9]i !{!@j|ʦ_u[x)eJxRK=銷wކvhBl7zϽ7#.Ҿe=sX+`gpmWPcQcI
-?psNAJ>EmRAIlCKEi$۽ݢ$^EC_1)q
-[0P
-, Q(" RQD€."(] ܃Yatbח$=%#O bExؖJAlJFlKFLn b[Vb++qqԫ _,:G Υ0*,&A+Sa;z%/EˏYIqTL1&5rwZ6x.ruraG-uOo#(,r/ċ d+Zr/E˽`٪y\Kr)Tj#*ТZ +Y^zX9xj{5G-[U/꩝UtU_{U~
-wҴB7P:n(kxK5_+pϹ
-so+1޴[zP)_9QM,,X:@g
-8%j{mo@'uc
-N#@Qr?(agɒ'쨏ړQ\œ\<9g@O@ WLfbLkv,xKԄ!OܠoT'*^euFSJ`0H\4MB̢үAjOT5$.-줜*eoQ>Y<5?[DŸHt%I~-1Jx%_b)SJ̤96
-siȬS~(p&yjv5V*[,.̭ƿ+<rف* f31=eը
-FZUVs2 PcyLcRd}$[\GBsawX-+ ^2 M9UmO8]ƌU~4kGgt̴う
-P.
-A,+lq
-C2
-+n9eg`su{Pvb=&:G ?^l)?8G69CcG Cxb.C8
-29!ΨcMs]߳3+~1JnZIS_2bR.w+Ķ$&V
-b;V2b3_2bJBg` b[Vb++CX$@9A} &+Tx žf؄nͪsA\GDT,Sz`INRуSӃo҃-zp
-k`lAB Ӱ2%/@v*Gsrpl` A"78G-wqROBלQ^sj"|0"TxSi~E
-7"kLFde
-K| uw5S']+kc5(q*mQ6Nv DmD{vr{dɷ (zP%ϵg|vr`&ḮЎ X@v DYOEt\zKczK; G,&<I$I[(y60=P{(5OZga h2]M , ?`;K\X4q9X3],U9Vr-m \?uLDVbqC_2AFoTKDA_D8ϴ2Y@pT/Hb0 3z˞ JoEze -Ԓ9l,E/2!1PBc{(*]Yu<\gmp`{Ɗ|f#
-=_R%S>Ζ/)Ġ5|ɘq/ypt7mrׂGAXt.l_w gRGC`IHW5t"5[#~{J$.5 ԅ G&ks .dEJ >@ 2$JW=PdY5WOEJ =M*fP1aefUQ1t쉲3*ft R%RlGs+eϩ)D>`i>Sd#,MgP1aae#tPsyҕM.Vn
-JϬ@כVԗɎEO۲X)XɈ|ɈZKX e%!6R۱˨ঠƸk\ u҈Zv٘HfU2fMƌZvɘu6fƌJؘ9Z.1SK21Z.1o1=>fw -{.7cq2S\dfIĈۣd*'&'3jĵK>dVDcP;Rf^>>d
-O?Q2D^)E)c
-\N4Qs!I5NQ_8YTW^tI[7,:#e뜄 i8rQ+j|+wrQ*?$,1jR~g*}kJ*y
-ZcShN:]܊upb-o; `,ڟ?ٔPbyÑNDJ[5t$|(WcȟαX63®rW<[
-:' <\$9.GQ-rpkJ!\ hmi &qkwbYVQVnϹ$ʰL4mN, }ۊ92'Z qՇ3uCTL۳sO%SCMBDQ'Vie]uل/[,kTq&xih)(0> K1 ak̓Wgy*~y=UKӟ8BwN)fMXKc,>Y(+o1܃ERpUTt xP8U: KuH`&&ʄ`gT!2ʟ6)+vvVVibGɴ{?5+nv5TRA_d} xR=';4>28}.n1cl*FPCl!s]e<jbksPviknv5@R;y9cxK]W@p7),~Jq.:] df}{.z%Z٫^q툔 xKqO8S2EE"i<ʾp]D`.Q߾4q51f(%NAJwgϾ-m3߷Ik}O԰5u`kKwH.y<_=$5|&PN? o.?/t? n7#;0 `żcS"?N猖U fH£JxPTU_K^6#>H)7nTOL~U6+
-VC_ 1WB|0o7/h:1&;/-HJRlfp%76BrʤlaROgQLh/Uq,SIćG@=pxPgьGcˉ1:8Nˆmc{v_=
-(aOn7U_5ݼucAˋڒ;IowSE=fը.uNzNGm _=C,{l+y{:?tZ߉"w TxhgE-m[j7o4Jf'hAq_Z{~gO{'6 Þ8Ί]BXJ׽?vp` I:$JDIY\t:4OS{2Keu(|6]!;YX h:;ätQ)?Be[IT~/_']qSb`׹e[(Xy|W5sZޥ@92Hw{yzQ[~
+780 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F25 375 0 R /F19 379 0 R /F16 382 0 R /F15 381 0 R /F56 384 0 R /F66 389 0 R /F55 383 0 R /F68 402 0 R /F57 385 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+789 0 obj
+<< /Filter /FlateDecode /Length 6926 >>
+stream
+x]KWe
++J/(JкTļO.ᯱȰcYC?q1j.ԓ}Qkʟ~=`(aL(x;1xEggD 9oClq '$]] cKS=0f#%05D'X[aU+ea'g|)JK!>/1R ;P6cb;O)VZģz_MW}_F6CbCe{qw-y\+z؀L.*>ؑ ?60 7dC[t-ކ/䙤6D;\J2%*څIf I kL;^.u_Dp#|N[TBj-ZeT13йlL蠌pKhho'DCy{~ppĀA>!~ 6ޒ^(:^OZ4-];<h|Ͷ\c \-QxGYxK QEvO^PQhtmD<lW_[9ٖFĘgydjJF잝UV칑S?d,5҄Bax#r-͉
+b;V2b3_2b~ ͊MĊ-+ ؎Xo_LXAw 3D4%WP+.l1}e 1Z-~4g܃ zyȰQUG%/Yu敪h@9\U0*=^ޥ^e[R*⩡<WԒr8/r7< ü0|/1|%X%[^Smռ$BKr橝9j|W͸hzʯ{(~SMxzR¤akͱ[֜(zC7~Xxady
+ K6AXw iMQ6A8j٬:H5~pI@D%_2/Av*=89=&=8j٢PF)T;8)9}r%PIUo1ܶjEnpj{1Zrsrq999 K`E`E 'wc
+=_R%~-_RAOkqs!idU] aeo`uҹ Ej}`'R`5xïm!jklEj>F`I\kJԅ G&ҵ{ .dҕ&|*<eI{*&H$kҕzT(;bرmTQvFcM'Ψ-*&tJ_
+JEF{TL=bHآbb%[P܂Lfi:d ƆA\+\ܦYat7$/1 X e%!6R۱0r"<AlJBlb c%#[Q1MAq׸A61-̈d u151Bl w1s\cdԲGhĖnjZ)Z.2c;%db2K\bdb;ܕCn"%36MJ&F%3Ll蛜̨&'/ZAHy6oH:)?FU4z5HKJ;d.
+\5r%iR'B~kv:E}<hdBRr>x嵯Iike^|wx'a"XմxO@;h+?$L1jR~gjִOU~r*9ۉQ=fl`nL8ۖo; `
++[ +`n,݂2N
+G*^$? _xI LD*(Xq<DAS<f0Ė4bj]|
+9Z,~(vbFАf]C%uEG??
+g>,#pC>^C"w{":ۍ;Ʀg{>|K!KG.U˽\Ӟ[lxkO[s1σYS\zSIaS{]wZ&#;Dvi{-^}5[(hGTގ(N(/M^:D{¡^) L-IQN2e_p
+7SMǃ:87 ^㠃9/d_oðѣvs^E=M/]͋Pg? Z^ԖM|RGQ%hjyp'=͚!==:uh-Z^wm;zt*iS Iݿz-L5~7|p~T_ҦIY[-h? :^kRifa5.dVV<R-vH1&T"26HECM4'Xv0J}QRgBFd@;֩IGuh 5oerxɽ(=]N1\җyobiĠ}*6>.} a'INr/WRG
endstream
endobj
-778 0 obj
-<< /Type /Page /Contents 779 0 R /Resources 777 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 710 0 R /Annots 781 0 R >>
+788 0 obj
+<< /Type /Page /Contents 789 0 R /Resources 787 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 791 0 R /Annots 792 0 R >>
endobj
-781 0 obj
-[ 775 0 R ]
+792 0 obj
+[ 785 0 R ]
endobj
-775 0 obj
+785 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 88.249 121.109 98.706 132.566 ]/A << /S /GoTo /D (section.9) >> >>
endobj
-780 0 obj
-<< /D [ 778 0 R /XYZ 78.37 808.885 null ] >>
+790 0 obj
+<< /D [ 788 0 R /XYZ 78.37 808.885 null ] >>
endobj
-777 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 377 0 R /F56 380 0 R /F58 382 0 R /F55 379 0 R /F29 371 0 R /F23 375 0 R /F20 378 0 R /F67 385 0 R /F30 365 0 R /F40 387 0 R /F59 389 0 R >> /ProcSet [ /PDF /Text ] >>
+787 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F56 384 0 R /F58 386 0 R /F55 383 0 R /F25 375 0 R /F19 379 0 R /F16 382 0 R /F66 389 0 R /F38 369 0 R /F48 391 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-785 0 obj
-<< /Filter /FlateDecode /Length 6978 >>
-stream
-x=ێdqh!h 2zl"9WT,ޚ3فl,fg]7"O"t>_? s ,Xi?_iJ/ȹ|\K#FOH
-fTPB,d! $ ʁ xP
-x-~88j^2D1RA  itiQ3xًHՄ={38E":1OJwo7`=sQΩO+4F|s#J;[wI9C lՁ ,{'Nм'’w? Zl`>3{ %X{
-.ٛHApzsV^ ]s=`[sݝwBh-lFmb\=KSWqځUhuݩthEw=mީv.f-?%~
-}.ȓʪ:åkK). .UcF
-N(Qu)k
-zoΚp`%
-^ɋQ3m"z/CydvȵRyilI.)ǧZ!{Ą>S(p3 A8a]B/(Kw^ȵP9$x6qf sf3W!uNDL'|6Uh'~1 i
-l4Ѭ4Nl5{#: |u}'˻5r76HMfUrd/wJz2ܫŬU;'k6m
-ڪ~NQϸ'dԍD+r*޺vN'[QL Îw&f 3a0 f_-5 7 f1kʵkҾ^J"fsPVa=϶&R%8MTߪ Z5mk-f8TV ֲO)}/4( 3IimmYItW[~6Co4ˬ6K#$G噾$1Hg0/7^1 <G7׾BW<FS25͡b6`Ja0WL-S3Ez[v즊%k*<?n,xPnzXGr+US@D>'!>x?bq2}f+3m 5=4if:AUdJ<TB?f5LBf3+ zipYknS8){TShT;ٰރKbf똘,m2QU2 X 'N| [;aFE(L`;Z*]O2VS7t#č0?!V gQ
-泼EeaQrĎVT#U?cjv~Xwn-iYq" Yn@1,B0RЄAШd+
-HB/Iʧl%(U1 tG v-ӕ`v&]ፂw̃• ׍0R3Hj֓1jNuҪ<VG!auLqGٰ%7Z߽f;k>Yw姼\L~{|ꠙll ?h)a(O>nw~t=ty,L/jK.O+}8GM؇uyZyx̦~Tؐ9%y}j=O˅>=>L+TZҋsM6AL4i\Ċ"8wܭ<4f 㦟-䚍c's_V)cY7ʹ
-<,82qs}-/ ޛpn fOK>
-~X7g ZR޺8$JD0`' ~w~o8ӗ>~wxuX[AX7P*f@cbZ4&,LQZ
-! qD-[[-0B ~k6%l'%3Mo9|͆i]^*%}I;"vY*Ei^&%nr\I *L[o(~C`PC,TJzU`oCGcWz;ij}l`7ԟjUTj$
-}KeIb*2Zo0jXQT)5Z^oتȥDL+uyBjrh(J]7>AY+jGwU*=MMZ"5XE?t4hG3(/mYe=S otw|"aM3[U0V+aR"6P
-SJF^ӒI!.X][AU ,5J8u}FN=6
-/~_ErrO\d!%nvjߺꅢxZ.a ÔD;ZW<_r{)QKM8)w3:n/&rIT[OlWb{w<U΢滮\a;lh εaOu
-t6]xu6u{&xةAUą\ք.5fc
- õn h2ܜ׀[\ZMM99ܻ
-m0mI6NYosiIjfd<7}ʢg1+`Iwq۩ncavĴuzw[v I@hw 1ة][֨&Ըb҃˅Vq ۋ:u/04K[  :PQ9' Ij# Za{c"/ HB[>e8X# d3ՂG!R2,Erh3tc<=*HdxxWlRSj/D>+8
-*E(RI  SD* +De\[=92j$ƈ>–aiqf3t.xz]1p7+^9l1K5̀nlzԄpIU}ˆ5ˌ5竤[QI
-Wn:Mt7R"<2iЉ
-. 9gr tz[$&z"Ez/eH,2Cg`J ;,-:Y؛JN .M:7 f1IiD
+796 0 obj
+<< /Filter /FlateDecode /Length 5733 >>
+stream
+x]K$7rϯȣFQ|?jw綻CwK#H&dx
+ZAhMU&" "#iohoZqk| taqDH%wJ%?
+)U >?ip]}76{zϏ wgOWs+H}Wڶ_}0Yc<==.
+@F# #74F(tU&4RLr=4k_[bmTgRr̓gLo~Y_D8ߖe$u
+7pih4\^IyCc(CqI;\U!ԠS
+H
+Qp|8՘:<{SsDd
+cȯ-1̞EPu=
+NnQN'7819}>λ><1؝}lf/l`NU QeM͓&E%;s Q_z[s͍ 8߶țQؽۇ z
+0N}XN݃[wiwvѩԛ ;ptP|tMhO=2Q"XŠqq|}/K4l5ž^J:@c{+OnS^JGI;5;˛?OS?-m~Հ45QSָvxM%o7Q&I͚xz ]P.S ۥkdccފ*T-_)]9KCܻ!%@K5:'*e]H`x,B?]{nƫ5@ZsӁ;ɱ?ռu6CJƭChU($} &al =E(xy< d]!CderjkN'sUSm ao:u]u:ֆܩvչ^iJ =YK>8} bp`Urv
+.]9rF3!} А<Bt 4
+٣2E\\=X!d,#R%#M^W$ގRX[ը-c&VƝj^AkO] -Vjc'ĸ6*7 BZbmqU0m- km`EO>6IcfGg%ʭEd~'̱IC|ր8T'N rf%^Z}: J 8|äpK`L|SJw=WﯹBoFsCF ƪ&P#
+xФU݆c9D]ɧނJT#WOQKUz@ %.C ct '$ֱnЏ-$Uc9Q0ɫ6elP|[/x #Scy<<>&["|NktBzҵ D
+$3bZt0m RleNk^o[6^_L7.e)Dk5u5!ķ)>Ĩ!Gʟq܏yǃ`L)B)>Q)}Ѕ
+MŨZZ.o֧հˀ`ڣM;%h
+^W%Rz}b^Zœ %?7%r?K׋e[$v†:\-2F뗛
+o15
+&d=fzlr~Hsb|w6lDUumuf?#ԬfuDZ/\Iߍnkbf?[ZК24: BJRV*
endstream
endobj
-784 0 obj
-<< /Type /Page /Contents 785 0 R /Resources 783 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 788 0 R /Annots 789 0 R >>
+795 0 obj
+<< /Type /Page /Contents 796 0 R /Resources 794 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 791 0 R /Annots 798 0 R >>
endobj
-789 0 obj
-[ 776 0 R 782 0 R ]
+798 0 obj
+[ 786 0 R 793 0 R ]
endobj
-776 0 obj
+786 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 256.944 734.5 268.899 746.455 ]/A << /S /GoTo /D (subsection.6.2) >> >>
endobj
-782 0 obj
+793 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 90 592.245 101.955 604.2 ]/A << /S /GoTo /D (subsection.6.2) >> >>
endobj
-786 0 obj
-<< /D [ 784 0 R /XYZ 78.37 808.885 null ] >>
+797 0 obj
+<< /D [ 795 0 R /XYZ 78.37 808.885 null ] >>
endobj
-277 0 obj
-<< /D [ 784 0 R /XYZ 79.37 195.368 null ] >>
+281 0 obj
+<< /D [ 795 0 R /XYZ 79.37 188.613 null ] >>
endobj
-783 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 377 0 R /F56 380 0 R /F30 365 0 R /F23 375 0 R /F51 376 0 R /F26 400 0 R /F20 378 0 R /F52 372 0 R /F53 638 0 R /F69 398 0 R /F55 379 0 R /F76 787 0 R >> /ProcSet [ /PDF /Text ] >>
+794 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F56 384 0 R /F38 369 0 R /F19 379 0 R /F17 380 0 R /F22 404 0 R /F16 382 0 R /F20 376 0 R /F23 646 0 R /F68 402 0 R /F55 383 0 R /F66 389 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-793 0 obj
-<< /Filter /FlateDecode /Length 4782 >>
-stream
-x]K$qȣt(0kz{:=7I ޵A`;J>.1鮬H`D0 姅.?7L-8͵\> 8"b4#T(E/B I?Ï5^RSj*D)e?/ܾbX[Txc򧏿eP.$mSl&x_o$x QڑH~}ύW9)igTXyIK$RO%]"&F^߶ZsԆ Ĺ9hD2 hLԇJGիh,ؼj4v_桶
-/0tA ʵMæu{P w[<Vt,g>N>fқcDw#DV8
-0ArD~irf/ Ҩ|}(f4Ը7zJu\_K_;iv}5[qkZ\r u[ 4H֤Lʷ.he6ŀdx= Q}:]jL{'{u>%t8YA )jz1zЋ0"܊rD)x/ k%S&9v~N7^ѝߛ19۽qF(bVף63v1cov6yF+ܷ1o-Mmuҍ^Q5D/j#ry)w,C*j!%D營 ~ jru V.)%Q.H xSρi箘C<g0HRbR~⮘;YԖ(jgo[Jl殘{ADG抷.,0'(*>g[+^>(/>]1w{ {\v!Q^ 7'<Vߖ;<bUo+pO =miy0 :*`J`bœCZ{W׻}p Qp#q o
-7D7DV=G$1N~Rb,:'j)
-s/KHszZbl*!53 ]_Rm_@
-_͉NߢBEelrf-$Oa36ۓts`U=dBšZvTJr }U
-ܘ\=Ic&v.zYE\?$|CK9#iIf!a1W@
-JeruRJ!ls.(ŏ
-rk+smXk{%ԼkJZF*(Uu̵CoB}\(^{{Ww^`'䒖䣒S5Q
-d+KnZ'o늎3:7!|\WkK| շ#!?`_͉06;B')FpMf)xmPlo7Ok&K xֱFrBя^Geǒ4-p<+Oei~6:3t9D{i@^--xDBJRώ
-~[3^5?cF&]k[’nÝlɕbkS]yunђHy>.)/un+'䢒vOh#}^ )vx`0?KmPgz 9,?މwIzѩ (<5/\&):JE]j'?%ӵrf*kQkON4aړ z 6V>4K ;$^pD+gͪP5[cՇbg¿5wAb#?i)D3ȃ-yиj1K?{fW~韨k~9ޖņ;v۬hXS?S wY5fȖ^Cߒ0 =4 *C$Ftck$Ա"A媖?& ?TH Bl'8 !Zy ^Rzinu;q ᮨ3p$VZNyҷ`W~aH%^X
-@nRٳbCv|(2ukgɇyorPgRݹ9͑HtO'jiKJXE?@"o/QW"A:
+802 0 obj
+<< /Filter /FlateDecode /Length 6278 >>
+stream
+x=I9nw9}Ƽ98-IڃI >vۤz >KER$EQF嗅.?;Kp 7b1i(Ϊw]}Z
+ LjKr"~G@_'
+&/dQw/UD>1_=l^Mu[[ \h+QzxN4 o}Kn u\I鹃Ttr%ʌ+'wODSw%)6Q`,s||Dp}A8@0X3
+~0Nþ#2 q;a;`fl=>%
+m t+@)_Fb|uy/C@MPsEƙTQ5HaU*x]u;mR5z^sk9[?4%i)was#RQ/Y!\jG2D*`jmHT{B S$aɺX30KS[ 5K|fẤ0AqމPUn0 210@e8`ЪcB켮Q:>v r^u
+aD B1FJ*
+c|Xև2cb(4B5yۑbՠP 8HT{B &)5Ǣ/fLւ'٭0~{ BZ+:;3'v|;}Ľdy7PU
+FeN)8.ČXf-0e~1mc |&R;B̢e9|p`%A*Zhz6 l<˯E6ZF_@!Ό6'y0_ r^# 3_8pjm0JM)m
+b 0`$HlZ;ZÞ㌩`N$(J%>X
+9T-I1S#%2H%Q酋FëY$F`щ*9=N8юDkQKw*K]͡@"!+ୱMxC,iTRaUd+Z UC
+3N)Be :54!x8$.eb-Eh1̀W2ʍJBD,`T:e_
+4PQe&W3Q}LTr/*3 :3ItA,퀩
+*3#^i2f, ;WpEa.kBu>̥`HA<S3*p z k:yYk⵬k~Q+'7 J3 :pءx r1[k\oJT6qx!"3"6R_-@S77j-AUI+-
+HV:u
+s᭎K"xktӶ*iÉ?:>|Rol4X'_uQxa/`=18ITpÙn"pShp34
+Чͼp34~4NM p34~mS5UDq6Ё5h@A@}[_8Ɓz|4uD]n ;nZtW7nZvLi5 p{x@?5Ёp > zW/1ގ) C~_MQ"Rt
+eEX(H[a
+{Ow@x]m)Fy#\2 C]SRW`9
+%aB^
+SLu5{Ľ:L,RK_
+OlTH)9Prɹha/&>*ɭhOyU"8)#cH+erT2 i~1RP8C{ȅfĔ{[馦0r]l z+|jLa|X?*ʗ"DcE}n
+H9Qk=0;|g_G}M>1}͘}߷?yZ~vk |͘pk}asqM55A[5GFS_s * 7
+85
+5w1lTQRL.Sy%a{R+ O3eͤ6ԓڇ~R+5DRu]jA å JwD~߁oKH<0/}E໭#Q3foo(¥\8
+Y]9&᱿T^w *Z1BSY
+ۇdl{kMRٮ2@%#NIa.ؾJs7H_>Uul.+<, C,B~ / FUcB^H<cb/ HJ%1?DhKf+Oe8j%goiOd泖Po wK<gr3~*s26H=eki,f|sl?_V 'ܿPn_'xEF|KlYX3T55x=}Cpl^+1<=@!sǼbNH<lE-?
+ingZpxxI]AG;
+[Pο|[ -|zƉT♉4 XYM|?!$ήo콽?Bswp670q7hOL~9^" _9?Bgk%}?3$}ng~f񿁟?B7Oݙٔ%AskȚ xjzaP…;
+ur&MH(]kϤezm6H6RͭN e6%õW5єͿu_(|>6^
+nG[ b]peirD$ʼ%VxBk|@͘ox ZϿ}+<b8h0NE';
+ay8c(]QW %e<5T W8(Pj'[>!n
+o8o?}_oyQqT,iE!G,uf/~^6jF%3qZ>X1.uv$cV2 Q>:-2ϓ/xeVL U"i"Mޥ|,03xCb?Cm
endstream
endobj
-792 0 obj
-<< /Type /Page /Contents 793 0 R /Resources 791 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 788 0 R /Annots 795 0 R >>
+801 0 obj
+<< /Type /Page /Contents 802 0 R /Resources 800 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 791 0 R /Annots 805 0 R >>
endobj
-795 0 obj
-[ 790 0 R ]
+805 0 obj
+[ 799 0 R ]
endobj
-790 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 414.633 270.794 426.588 281.674 ]/A << /S /GoTo /D (subsection.12.2) >> >>
+799 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 414.633 215.502 426.588 226.381 ]/A << /S /GoTo /D (subsection.12.2) >> >>
endobj
-794 0 obj
-<< /D [ 792 0 R /XYZ 78.37 808.885 null ] >>
+803 0 obj
+<< /D [ 801 0 R /XYZ 78.37 808.885 null ] >>
endobj
-281 0 obj
-<< /D [ 792 0 R /XYZ 79.37 305.026 null ] >>
+285 0 obj
+<< /D [ 801 0 R /XYZ 79.37 249.733 null ] >>
endobj
-791 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 377 0 R /F55 379 0 R /F66 384 0 R /F56 380 0 R /F23 375 0 R /F20 378 0 R /F29 371 0 R /F69 398 0 R /F74 469 0 R >> /ProcSet [ /PDF /Text ] >>
+800 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F76 804 0 R /F55 383 0 R /F65 388 0 R /F56 384 0 R /F19 379 0 R /F16 382 0 R /F25 375 0 R /F68 402 0 R /F74 478 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-799 0 obj
-<< /Filter /FlateDecode /Length 3559 >>
-stream
-xˎ$>_Q?в`i>9/(QGWLlzDRߔT+_|~ׇ^|Zz|A\0a .
-G)һ?~ x%+u$#U.&8$a/
-h=GҐRA" CQB\getd$n,L;ad^|Ou2u>Wn2ZXVԟ }TXfAmkiŷ \}&@0Tt P+ͤ m$>%CMuevxz<Uq"_RDk")Ok@5CWii,Ø%%'EJ]``o*HZC& .Y3(mTćߛeC6
-C;-L3 '+~0Fw¢ =u¦w`q#3mOՓ O:+őW2/yzZx,>\
-Ѐ_wzA22/V~[ R(WK :رc!$ue%q )YzM㡊A% a 2PB+5@мh~SD+Bzjp^ "w4:ֆB]+;S7&W)Kw?Bx1?jhͲ=Z['i除ɥ(!}HMUY}cpv%-YJ
- m9Ky:Kyz/EgЪO7BMB[M2υGcHI \ e
-WABYt/Q y1[n=
-JdgLLRw%r+d*w
-D4qQ1Ӽ0'P+|tp8;o{z>%nſd~1p9uؙbdž+*[SV
-f]H71|hplG4
-dsyUSd 7R(xu4}m&)v`~ImIlhL3smg!nġ8nJ&jܚ${uJ!~SLՃ)nǽeV oW>wTq< X-Ug(7lN'ZniVRԙr7C#9gY]Xm# Ph(tZSZiH7:$Yv $_BN
-MGaAG"NUv^Ȗ>9w
-+/v>eֽI^%JV=M/2ƕZ~vxI/]M1A#7y?^3 0fN/:輔J'ܸhdqq"p 4`3$2{]3ƙ;,b,r:GkepwpzR64Jsw7 +N w;Pil|Q!>`W{5`+^|g!vtwhEww&ZP%jbxhgaA9 (Knτ /)9ϲ-mJY Ū+8s|X>M{O hiNιO`)Mp1/#["TE5c8ؙ4SBiC
- `.?}{mK1aeX.
-brL)ÿ-~YV!kZ#T6GL߁(NHž8N4O`HJVx. 9(l\~m/`5
-_`#V.F^~:TC`? 5HruI7ƒ|r"p0w3~;c2$tAyp>^<)淵-ld굒-EuZ2|vܕDd [Z2NK&7N2:Y$۹OJ3IJle+)]F@aΫƍUԨWݜpc'ӑ+sB*؊V { =+v t"r㶒OZ+mFX}~t %M,xU}h4@+ykB(kH
-(lߕĀ:
-s|kJCoNGYn
+809 0 obj
+<< /Filter /FlateDecode /Length 3561 >>
+stream
+xˎ7>_Q?Њ``-)a(QGWLtH⛒re˧9~}EYaן E-! ࢰA-_-?<J鴔޽FL"Vo
+(IC6JipMO@"wG
+qe2Z&ё[H^{0턑OzN
+'YWŋLt|&JG{4c]Ijæ G c
+6Ɛ5UL믪셲!7 Vbk{*Δϙ6dK`nWT j|(q$n t\x\{!ueƀJLj>Ttk. !)n+C#}CQniqOO(qz'b)tlj)#Js3v@~r<AdO{ib^MVf%^
+5ֱA u){'FSDO| >uڃ H^A׼fw&9Hd&X*k֡"8{룣zcegfRn,4F8hz0X"Wr2н?˸CH
+3͆ T d2vefkDiNHj$漷zs,W՚2Br$mpQeJ)PN}ea7~`֛$kHq-\ؼ=z΢駨YpQmT_ݎ;2, x~..k(F%w&sR$352=gZ䣃yӹ`-t+m [u˩&hHTs86\VٚV0뺇G5Cc;Z&6c 3³c \@>oI6W5iت <IƐܮ{#rPH3p)ܷ[;Vnbo 6CڒИ3gl+3XC܈CqܔZ!MԸ5I>봕C$]3UCQbޖeZ%]QŹ7`T9V{RܰY:OjU:׺ZI;Rg jyduQb4+^@iMjq"pPd%|s
+u;)47y!`;sQ:WQ
+"f[{![|_2e5w poR8<?yu҉0lpReD
+ǭkZ^n .M͝}
+fo-3ռ]T&fD5E%~O pXΡ?@ul+X@{}"N7]g5[H6n(Pkؽ9RKK}?K7N"qo-q޿^$_ciZa VA3 F&c ~sT99>Gk0)
+PM: %ړRaPiYOMAHy,hO|i'IfO-ݖ7tFųg!08a75ddl} z~6QXpg^X*y*[q7nlWj!N%tC?4artL>>0lUxj^l{OO4t j88R*M쏞p㢑ʼnS$X̃3]~txgopq 9I"iTVFs(1'd/82
+LCqmZJ^aF؃i^aAV׀S{ ,fߡIݙhA쪉 GE[{Cv,M9{>N B/첦_*f>) f=~4vDa6=5QC9Q:NV>rZݧ4M.Hv|(oodRc`gF|N 5]v p)W҃ *
+c];;"Nh8V<!+Y7 qKSRC$(~ZZz?P }?0x"%%iXth8 _EKV13[ 0zDWҷ {Ӓ1"J*iTI2YpW2I2l5k8t</2X4Cg%Cdn=)')tQ<^l d97VQ^ vsoOG M`+Z+{
+Jek4tt|κ
+5ЉʍJn?mkta= .7@WUOt s
+Bo")DƲ}W(s/uO( 9)
+ezMLfD./E&%"O#լxhFN ( C,?!KGr}+楡NA,{;IWԆ~]DC94YEn-ԇߥy!:!U[UiNK≯mdۃWRݚ%ij9GTa$ޞ`Vr
+'
endstream
endobj
-798 0 obj
-<< /Type /Page /Contents 799 0 R /Resources 797 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 788 0 R /Annots 801 0 R >>
+808 0 obj
+<< /Type /Page /Contents 809 0 R /Resources 807 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 791 0 R /Annots 811 0 R >>
endobj
-801 0 obj
-[ 796 0 R ]
+811 0 obj
+[ 806 0 R ]
endobj
-796 0 obj
+806 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 414.424 267.823 426.379 279.778 ]/A << /S /GoTo /D (subsection.14.7) >> >>
endobj
-800 0 obj
-<< /D [ 798 0 R /XYZ 78.37 808.885 null ] >>
-endobj
-285 0 obj
-<< /D [ 798 0 R /XYZ 79.37 771.024 null ] >>
+810 0 obj
+<< /D [ 808 0 R /XYZ 78.37 808.885 null ] >>
endobj
-797 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F69 398 0 R /F15 377 0 R /F55 379 0 R /F58 382 0 R /F56 380 0 R /F57 381 0 R /F65 383 0 R /F40 387 0 R /F59 389 0 R >> /ProcSet [ /PDF /Text ] >>
+289 0 obj
+<< /D [ 808 0 R /XYZ 79.37 771.024 null ] >>
endobj
807 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F68 402 0 R /F15 381 0 R /F55 383 0 R /F58 386 0 R /F56 384 0 R /F57 385 0 R /F64 387 0 R /F48 391 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+817 0 obj
<< /Filter /FlateDecode /Length 12532 >>
stream
-x}[%z`t nxjZ%`4X-.C6`=w#dsԌ'T}d{/O߹otT˟?RKHտ\Ε_OS{׏vn\F94v+%|k _#L ©Û/%tP"etzJJ}ER)5
-I#@K`=N>KugiX}Pî8[{Tm}*w$#o6q_)oc#AMzW8e کӔJ=|A$2%LE[p@OHowͬB˯W]gxDqS>APƑGo< v{Ꮮ竭4IϷ' P҈\żW7Pr?BK:9P`-6Q/_i ގ r3?]n/5\RzWIp0Q=3Ӹzi8^iH2Zg6_۔k})cI0S3w"$r=!C=2N1?ܗE.| cj#1SJ.2%#u1Bj̤'DZH9G͌a䧬]4qԪ̾嫬k`0O5ݍǶ3"F^$KIz=uGc9|c@9[kkV839珩2V*h'?!F
-=?v'Y^υ!_FxW.NYiSà9jHhο낳LYٵyܚMa x }װx^-&WG񐘉B҃D) fn{871PgA(0UHկɅ. JNooY5S\LH!_|\t㙻á!SF>>4cYr?{c)0pkϭ^ݽ1{O+"7yҐ5[>-+L\#c Wf0`&w H^Wpbضڪ뭎+<Wp]eGtg.S~nUe|;ДniYןz4]mZ>Zng~vzӱyo>w
-o/ߗ~|41|jG,FH/Wd?BOT0>jPP1N '{;lVa|;!ϹD +φ/ſK?O*$>=hѱ+=.>?>r:V)hLoU,.#\?IVz;ZOk~P>jsU蘖G{ukz'i1ezPB,!d<9lo!!^QC~6"Dê?hHllۓ}@,>c=Ϗ o/A73i"U =~-$a'|O nvB8UUB/wDL!|GwDl!|Opjx(Bݜ_"ao_*˵Jm?iWPqĄ1liΰ.xЂbnIZnz=m,K ݏO]ܸJ!2֒K~ 8w<$5zǖ^*Xcj3Y ׍:xCvz'?D*4_dwj<
-TobdoZLbl bW(b'wTq aJ3 Q dpI'XCJ&
-%_Z3{؀elHv&Ә" A7[;\+1vSQYº<VSUga(;JY1r^U1rVL7b) #G-ㄕLANhIp %/V
-,GmXQ QT> Xp
-2\Ňb\Ǻ`kf@UZoʇ%Y08S>-YVTR2Y3446.B}Q9K.U؃a"p\\jk)Ym"ܖp9ZƬ 1r3vVh*l4*(ZQ׊
- 8>E+Ityr=Wm Yn;L}sɘ{*gBmh97FlxBi@A儶Vad\
-x\h}bP'8#UY   {i6G^!q|Y\m&l(zBƐ"I8sxg' Ld8s3LcF ԠBSUEnH loXN]x8:TTz'oɷE0@%+& #]km@:z&4>Wf
-&?ƁSHrۉFcŨLy<3
-N>VprvR|I
-Pҙ$:E,qX DFDs9mpܳ*;9ީAԝ& (`~Q
-Y>ʀBA=v 2m*!Q]vNMdD9yx@{VB-GlaZ6>
-A
-v yQL᪺ YnhwQ}h
-mA(T,Ɔb8E~
- 3';RvrGs`˄ǘ=m6>XRmnp*1*arՇź`ܜTI(<-YZMB`6/-Tz>G?ǗP> Aı:wj y!sLF ӣEkxd4BtfVr
-נ%GVbϳ`N'A \4,FPM!zPQ"
-uGih12I,+w z;9N9 ej;-Tl@3sqK\$5"5C_H |cKF
-
-aT ߓ$MGVV=khz"~/Bi9+8ltC$
-d
-e\ɪ@dNVa^68`CmSz":M
-AAQ
-5u:OJH[ytY,~< DVD{nX:,ǓjW >i!TNce{ 7XI \
- 7T
-m7ӘDL&|<@ &NhH,iΆQy: @g4O
-Aتeתf:І3%hN F!O G3j$(Zh\-p WnfT={΄AI/.Ej+-*-F堆ae`Tœuغ8jE% r]On4]ŽdT|8Bn*]tA~i0d|ZqSE\:Ynhg:^+Ǹ;
-w,A(Tt4hn]Q%7-wf5}ıF!]韕 -Z8c1iJ8h1X4XʕV} d3Q gӠ쒛 T)Z%B (G^,
-Vrc",vzr4 xI@(<_rh7*~fGQ]uPg_0D@w}1D3 xPPI[C<9uQg j4S<.əZABfw}Twt쵂wۆ3;^+U5<[MfT!OKnĿ)ALmhԌŤ!˹G9`^,jA>_!9h3&GQ gӠŬ͍g8vVGi(3 |7Վt' [DOF>س#/;ML_d3
-bd]nO1`н&Qq6i%oܭ1iJ6{| <vWU<YIaKUոɓqS5҈L>|'iÒ1VAh7$'ejK>i Q))*CݺcR:KDmXIM
-(m3IRXR3|5nӤnNAF<٘4%]<9,ՆX)-SCeIT*4I؍]$@=fݼk8&߮,1yB2 QI}i;`5`&O
-kdr&@LSPQ}%S6&M hG0X%/S]yޏoxmL3eQ) 0MFPus1͔EI_n~~Ogp="NJì&N-a*J_Jo({SWN?Ahi[^ԭj>D#A0rK~ xiA0lƎCY(oow ]p8.SG7:E)~`\"\ߍ?pU&BO]&ϑ.MIj"Gǟ\{)b !!d|{if~-H \w~<?^lKSl#L/mۻwDL!|OwDl!|X?~r_?|_?|_?|_?+HSB-,x/v8^p!Sco)Ox׈ajʠaM
-=yIA۞6TcP~͒b⺨#'5t` XW?<{{H0 $ f: ]0qL=Xh 2_D Ug5E f*8NАOhHĨw!CC?f RVyFdO`Ryҋ*w3S= eymRGf&AT6񁓔N$qނ
-3H^2ަܨeUfWs:T!EVH՚H]7+8#mP ( KxyOpfytdc$x!ak 
-kX1$vD#`6mC+eU'N*Tjev4
-9@eN+kԕh
-f?+8ڶh|dbҀ=E¡΍# |B[
-k]e!ӘMaQi1έЛ֛0ةqTQk<G^ R1?%8a  E4?a
-*벫Fņin-hF>a$b\0a0!7Ur
-Tdc~
-(5]3 QwW_oJM"0e! =74aO,zz5 L 1^[[YoUǐmXl2"<3SQs*K|!ra_F<tj _GG:${j-
-$~Q5Z)
-M((QSIl髏TV2h]O'
-( V#b2(&<GӢ \dg*1=JI*0 /`BʆA`QgG,,)xEWU}GѼa Ay2ŦS)&e[MPzBl_Z9 DRw]ڐB~
-gpo*r7oT)Ba0m87XKgr̊jQ_"KpI{,D=l x/-؁@ =|M+V
-ޯUUEn(`-*M`,
-u29bcBK 4tBc ZEfGM\"6 wb@dVqVTui{3fa T)Z)n5 uOU
-
-єxYAYG
-5;9L:*1M
-B :]DAnNuR+e Cm* $??n7L:m`)N?T">J2!A":XK]T*&ֹ© jN4cqԊj*6Yg&W<Rچsی‡牃t2r=
-B݉G VBdX0R$O|P%WӂqsqRE5Uy[dc҄}7
-CvCcR6ʎYjdEߍ׍ aDs=V])E2Mo݈x|}-y dI&<&XPjXD%\Um!,`q^XX-]Y{:2v:.b5$KD8YSDbAZ
-a(L̄A5v0,"tou@aRcbUHxG#6^IV lRXK1zfFEH`3Ԟ@BMY(4آsa:s-O)*-`VOѰGZC?2A:3aL 5*ס~$;stTLE[hu-kĸéq@<|2XX ^{#BÁ"gk%id nIҺ.iNwR1\U*oGL923H@/B"n>b+BlhLDXnľ"D,rC)g3f䖊i<hOuw
- N:|7 ϥq -vxxMAgU +3ޱVp;FITcj'J!HuPabpKHDS,qX DFDsCmj>枭U玽SA;+1JMQ}7ACF,Y>ʨȖ&U02|y+ +$Ue2-'ڠUeH;Fը@lGΩ@ԝB̘H4cj܋vjq<b Z==
-A
-1*Uu"ܖ>
-ѻŬB۲*(Q=XyԄb8#ME⛻>I{F*RvrGs`pMMKQ0N1wUqsS%MZMBƋD
-sZapo0'%ǂqOisLF ӣEkxd4Btc\06nZ*\U`K: g8&L+!FPM!zM"O#>0LbD#־fH^u&'26s3cǮ]>8v}p.:݋Nӽt/:݋Nӽt/:݋Nӽt/:݋Nӽt/:݋Nӽt/:݋Nӽt/:|M7cpY #ѐ<_V^ycQì$%)Q")곜OUvorBSW
-
-Dҳb oL$,Iŧ3Wk`w7ļɢ1?ȇs,<DD \|-=s^tg{o\Z6W`mm{>pJX:#x4xc7IIUVNn^<{{W{oJx!FQ< `"N>1N(Yx k*lǪs#pC[$.|- &P>h̜;}KǸ8 ̉\N1s#_L?fJ>sb 1,:Zj}&mLwNgp>f$1ޘa<
-f;Quuꭝ@yxIlRˊ
-ݏzh5M[BWú/9ufn"^,v{SpG6ɴG.~}>i{,U"ą^i!.VBºIpk.d2L0J(=VjG}%^o)YU ۝r)%@ze8S(k}u
-!@qEm\T/bK"g}fYoe2sK5݁zo^߿OaS}<chNq Bi_0BٙTEd͗uZ, G,:.kKr]?W |ExX9)Q\:ޤX ޚ`9c,J:-6ޯ)dZL5 ^|1R~NZ^veȘS?ݯ}8˾_GBnu[I7a윾O!ΟPOzz[*7|c7EO7,|Q<c|Mگ_S¯[oo~N)R+g6zwO/߆O(G:I:sW`c2(us!سYNi+̝mOHrU|LUHioŀ3ĿE(v6.[뻦9"("[R}fVشȵJx[ԣD`?NZ);k)<WV~OJ=ZA>wAk.oM^ 
+x}[%z`t 0nkZ%`4X-.C6`=w#dsԌ'T}d{/O߹otT˟?RKHտ޹+
+͹ҫsh
+-_%vaMA)G`5Ns?zξ[X' T?ߞ,|>BJ#sN2_eSC-@SOF|;z`Hoez;j<2Rhtrgw_J G}^%8^1Q(NKcmJE:Rަ^cNsOǷϟBux+B"?#}nAZVLj^^WWrI˺|]fғX$͜ˆ#f0S.8jUFfUV]ʎ^B50g`omFϧc#e%KBOј?qPo3AGZLc꠵L~~q=jス9DȰDB]Ƀs~skp58,Ӯ@lw!0hZbe o/,SVvv.fS.lB_?j5<^|GF0gi|<$f"gе%QʂY.F=,HeTwsju<p:#Z- Ft*i)+E;}/xnƄphFȄ/񔑏awִ\F^X
+:'l/$ܚs={}wo3i4d<3{!zm&Ui.[rܑf3q0vX;G$/P8?l[/zJ>_6?ẹ"ְnإum;5Cw,WaRm<<m?SMGV,NS{:/G`hF3z쯏
+<%_/?5;}N˧vҟnUOF?O/i=aA XP iykͷq[GDpl"\ ᯡB@"Ӄ&J-m?>2q\"=U=nM4m6ک69^iW=lPQ}vq\LC]PG!BɓC6BP!N1V'-H4Gp#ƶ=ݧ$:?v x t3O/Aߞ>&?J{\l|Lvb7: ]Z"ᎈ)B-B^.o"%\6qGLh-?ͦ  -+憟ÚƲAP%xp(͍$O+ka+c-䗀3pǙC\^wl [556Un;јpݨ1kWwS9ABEvs`ssa(͚@J+.'$fx6%1,"U]9JF6%"!==C]S۱:I\2m鰂j30f#l(ħR*ВX)'7od +a˘&U,bjR-٨8@o&0JRBsUVź` i. ^``IH&FY\,Ɩ 6~!-=[~rGw064 K Bd|5.dPܮ |9q_Q)~>L#)&蜷
+
+rmBbuML>jY]>*LvLhIi`ykA?*7eq10s) 4;OhMxU6b܀չ.C+Fs3PvUYz*]F)ؚET"W-IȾ$ #b]5I*ibOY UHz8A' ]fdiJOO
+ʨ!k֮@Kj;ŻgN"2Oh6;\N2f͈*53p)d3S`#zFZ3c9Uw
+9l\+/6qU
+fGgتNLjކÇ61c"Te<mNJjy
+r/'
+[/ 0 |?$S3uӊ iEc 28Z4q
+-t4&a옕-NɊ4;Dܫ
+r'4
+* R]qoe;݈x|&#y dn43 JLk9vMU$D# JC}F'A:r B/-#Vեv´"xMvVdU)PNd LPfv0,<mu@!FPG@K2G#%oMr3RLE0qȠz'_1+8ce{sa:s-}3ݎUZZj7 .wGP&`
+m'gaz^D ̼%AErHiQi0kĸéF6
+Gl
+>o1| xz*><y+ +$Ue2-'ZUkC(1Y
+D)TɌDs`\"ZBôm|8pB'*Uu"ܖ>
+B۲*(Q=XN d!=q #ދfOڳw 1{D{m|\TUbTŒu9&FQx
+[dlDA~*=@QܟK(s \X;5<T9Eņڢx<Z2!^_ M+9QkВ#tfvcYo It}#} (bi:棴h$Ոfg'2[*6й% OQF/Dx@>%#0^_hdO]PaQ̇L ¦#+F^54=jMx?4On6:P!Rtk^
+0VSފri щ! D)T=d&xtà(K@ƚ:N%-A ټB|T,
+?DPm"v=7,]UIx+*1=TɋDsm礄Z.
+Ia쒌`ͭe@d277n԰=[ ;3 UwW_f0&x-q qh*"|\W1-'#>oacFiLlRaF> ]k '4$|4{\gè<NF3[RF' lղkh3YM Bth𙎒kv'ƆC#jdfHxh5F~-4.8ǂ+R@3=g g̤"#rP0LY~20*aŇź`l]UǮ'7_.a2*>!7i.uMؠA ?n|42>J-и)"N.V,e3x/L|cv;
+JmVn:P4 t.(GPSC ϊ܌;X>nT[HsF͐ծqVu4@_EOAF%x vv,qUuz\J>Zm2ə3ibvtOfVf}`/
+}MN'3Ɂkc pT Z쨃Vðx1D`oE%=P 8|Ĥ'!l[zmÓ9L5QOKfo*8#PmP%3&(aQ ؖaGz*[f` 5Ug j<SF=.ZAC՝`4Xv}mjԹ
+0T)^-g0&a}T c_gj-ۄ"6{~f j8S-fLNJr4Br4Xn_ښ@sN~U6!M3Q6V63
+T)Vc1IϦthc-^,
+WKK,fƥ*gjɸ)TwZdiD&u>4av 4_Tp2
+^5ݥE4I֨T]LMa!n]1N ݇%"OD$y|&MfN$)qiR7F΁KlLخB\`PjԔۖ$*WdXHӤJIƮIJ Vn5 o<NumX$Hƴ^0'52U9m)Ѩs)os4#,)e
+ǀKmж\ 2̨&SM#(X}{ູטfJ/a? ?'C38%aVG 0Hz/E)+yޟAh| 4޴-Ig/V~5 "ߑ V%?@4y 6cG!,7ỆSiD8b|HD?#Ns"?~.|.]Fx8]\p']EK]&$w5#=~avGmM=4_3?s$Z?h~.ѻOn~S/A6^nf%)B6AR]
+;"'a
+;",\~ ?p/~/~/~/~W)@q;^Td/ )|'Vzk05eP&Ȟɠmϋj
+HZ1(fI~Y1q]TF^:VnQz+sb==N$xG[BP.Zb[ _|rOS̄ªN鳚 3~q'hl'4G$yAbT;ZY !!cN)|xH'l<\wE;뙩Yٞ@lնE#3 *IJ'O8noAiȉJM k oSn2*S
++P9fv"+jM
+$ԮSUj%DZ W'8<e:@ 1wku<ʐAb[5vPzeu0۲*huxsd*5x؈\2T;[Am
+VMUMƸ`D~5#ׇTUX0LuHlE"0KuUb44# Q0Xa1.0*9Q{xH1?z/vE6c*x;Y_+2yj\/YeA3q:6
+"<ީ Lb<
+UgǗG6f|$(Ej (DFRB#86Ui@؝P܈aQjG$|%qK!w,w 4A}7>*4!3fS{֮@ZBZ;ū7M& 2ݐΰ'=g&KD℘YD-¬cHrۉw׍6,JrV@nX)TɌѨ9
+%R9{#H]:n#TNKUGmQgav45+SUCfr?
+(T&)I#R-8}*
+ݙ^m]±)$VAjcDrCREԄsZlL4&QG))Q=šLH0L#숅%
+ӢG q 1AzSbS}hwMbd+6*8Cn !1G~ 񉩁do-X9v /Lm4 R逕)xk\ b7F)ϑLޙg/~拟g/~拟g/~拟g/~拟g/~拟g/~拟?.?ِ"W~<>Y`3l:f 9}mLGxaEWGXE
+A>Üvuc*@װbWcͿj6wF8>XǃD= % N{ݗ&|\h`U=g}=jV-A\ȩZg!{S(FzeneI#q |x>Bfl[<e스12moPV~((7󳨌ۯ9|I*c~X5
+2C>.3y$oʘ~xX?C4yviMZϢ2.?8<*ۣ2A$dZ<9~Lo9s,OxsM`cs3!{q{ؔɋ;"#bJ{#bK߻\ Ko^_|__|__|__|_ſ
+AAu(3+lQ^J.ʤ{.)2\m-%@dVEmTR7j4f?rOf%siBȊ zVv&/q[U1~t\)UCbv(SI:wb2fyޢ{*gBmhMVi'F{9 Yq0 |'&y]EJ1 z DQىF7T\anhL
+F1+7Wm[4q3r'40hY"TC_ %o1IDGb1 J9kӸ䔕-D}"V"БE#; E+`:r|
+ 6hK:M
+ 6c)F,ب l!HH1+8ce{[t3LgEQb VjD ;  ,)Eh c˜M8Q ̼%Aޙ{8b(BSk\#-N=܎ :Njp+tߘ9X.M {l`0vsHMz}pMs䕊jP828(`Rϑ&A2z v`^bCe"* vX%E!b
+H9E0 7'7#TL!E{|VӸS6p&jWc`>гȩS&O϶}bP'8#UYir&|[>`sǧ5<}JW#2Āk@p!",F8sldd8s3LcF,;UEnH loXN]x8]m
+<w
+D)XɍQjA
+ l[?é4aB̎^Y7j
+lŞQ|Ŵh9a]'p6C39i$!t\>8v}pcǮv>8v^tE{^tE{^tE{^tE{^tE{^tE{FtlZ(`,wJ9Tf]d%)EHNMQ}68|:NH|:o%REVX'ڕcxcא&d6 fH N,>Zq$MU%A>SKDĨ[ gBS*<E|~G9ieixֆ[жXHiC9G7&|4_hg}idųP vN OUq6F _E4 !173rܟcT/>Xu{"e/>PV? _ :?4Ar Kfi~cE]DŽ|d]'Mߘ/[×هҡv(u 1)֮ZbI}{{5ӝ߇9I7f}Nԡ75};{~"zk'P@A8^lc D$c~h!հKN_΋n/}`
+&ůџ_o1VC7mzEJ$Zp.x% L%g?L%AE1n%u@_I/v:}aU"-vgeJ;iI?^N&J+iz.kBe9P\=hl˼XgĒYzG[Lһ}MFFweWuSlڸSA\>P6?yv&UvQ&YGe|]ǻ2ڒ/y׏,UG'_y"5VεwJ7)>&Xcb+G;#G
+o͂oӫVũA=2Okβ~m)hP8~bB]V>xs;S'ԓn^ޖ _hDMk9D-~, _o:FX<}T+[+:8翦e3|٨Moݿ+`}!t{:v埿NnR{G\X J\q3Tc"g91<3wNo{,F`ʷjGJ~+%-G9`wZ5Aْ5#P vǦEݽVJ8ͦ%*pҲOYkN:T׷ *I\kyо5y<Oo t?Yk
endstream
endobj
-806 0 obj
-<< /Type /Page /Contents 807 0 R /Resources 805 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 788 0 R /Annots 809 0 R >>
+816 0 obj
+<< /Type /Page /Contents 817 0 R /Resources 815 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 791 0 R /Annots 819 0 R >>
endobj
-809 0 obj
-[ 802 0 R ]
+819 0 obj
+[ 812 0 R ]
endobj
-802 0 obj
+812 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 363.495 251.269 375.45 263.224 ]/A << /S /GoTo /D (subsubsection.5.3.3) >> >>
endobj
-808 0 obj
-<< /D [ 806 0 R /XYZ 78.37 808.885 null ] >>
-endobj
-289 0 obj
-<< /D [ 806 0 R /XYZ 79.37 771.024 null ] >>
+818 0 obj
+<< /D [ 816 0 R /XYZ 78.37 808.885 null ] >>
endobj
293 0 obj
-<< /D [ 806 0 R /XYZ 79.37 693.277 null ] >>
+<< /D [ 816 0 R /XYZ 79.37 771.024 null ] >>
endobj
297 0 obj
-<< /D [ 806 0 R /XYZ 79.37 298.711 null ] >>
+<< /D [ 816 0 R /XYZ 79.37 693.277 null ] >>
endobj
-805 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F69 398 0 R /F15 377 0 R /F55 379 0 R /F58 382 0 R /F56 380 0 R /F23 375 0 R /F20 378 0 R /F29 371 0 R /F40 387 0 R /F59 389 0 R >> /ProcSet [ /PDF /Text ] >>
-endobj
-816 0 obj
-<< /Filter /FlateDecode /Length 4647 >>
-stream
-x<ˎc
-@J(Юjn0 jM"~%q]EM:y79MKс3_M.!
-;%S_\"m> V~-~*);~wm">1AJ e\%}/i-=!(.ǿ=ݬ n,‚
-'>cD,; 5 ˲TcΌL1ZXE)Z*ݐz"ޒxWOg᮳ę?KcLfm{W7sߋ5Bp_qQ6C0
-3`bgƭ:)wVlAoe%T&+kЕ\t ^~/?MJOMhKusɖГ̨2Z14lMT1YCq7:<,
-0У0ɩTӥ1O\!Y-xgRB.'xmVrן)8~PDo
-3Ca*Ϋ|{Yyޭ첇scPžQ?q'\6guO<J|F00V`aFvŠr4&˰mBUl;ܥ '1فApWVGrabqH gN$]7- )Rp$Ǒ.Id;q Z;VX똱Vӂj9y؎ 7N&ÌRz ;2 5ƽĝK۳$F1Uj ,?(g:A\c.4?ܼi'L"va־U0A 5g>pc[ 6TC&Z Y +#:b֝%xrwTnzh0||?o6T&8RbeʳZ9r9[21 H~yLL6Ȧ4Ls^' ؟n4~=:ed!\㩫Ջ1xYY6C <|
- <+l깭-P>vP#
-J Oo͌| ~bέu kK\E|R<57r)1,MFUL^JÝ2Vft)>1v*p+q(γ|eB]? ^x־bʋɢRHbTͬnTVTEED*f~'KE+4FK_.ɂ `G%>[sw-(V
-d5.Y9;y+QqM\5_ܻQ5B`&u#ؘGX'>l^JޞFM>4`S=(Ώr] mbHz$6)rw~LM-gScx`Zӵ]1 aa.;Ѭ1*S ©j4*.Q3qاAVr71EyO*%WZ*q:徹 |x9Ryʓ>›X:<1W֚Ώ7
-}ihMB"h3X铬
-)t H~թX?㯉S
-}Dl2 lLҖ<k{(CIJOcnW; xL[YqOРDfRmG2wʘ<˺ ӢV$@W^xݛ8Pפ)Rk}IE !r._~׵IN-Ԩif&!AGc2t#V%}/~Q:^)!o/ҞXV2qGVrU¦
--fUf; fH/cf\y$S@suδXtkE~
->`׷ls⃹;>;~>RpW*Ny*o2ELCbt;%*GTy/2 e_K=DUE+*UYPTBٰ%dZXO6MYƚgΜ [_/,*p_4`q;un
-T`è7.0M5$pzpU88p|NLx3&CK؞Jj„O{ց$bd.pԙޥ!R#y֌:s4cP==Zėf!3t6| ՄN=1
-u-RJo|acbrL4d4M_'7(Y7RZ~ks.H:T/wD*]W:ѢlI#'ii|(PƏ*ъ6#P<5RQ-]ȥfQh7n7#rOصщ(gu |s>wxZg㡖hcETSP4Q^1gG|1֩ҶY&\MQ$4 )l;AtmHuǔ(:wɯشϬ!eTl &-!}kTl0pZc`{*'ֻ{Hu:%lSka)=BVJp-W 5q<]~vZ`(-د0vSn _kVR#bWd_\è;έ28V7>
-endstream
+301 0 obj
+<< /D [ 816 0 R /XYZ 79.37 298.711 null ] >>
endobj
815 0 obj
-<< /Type /Page /Contents 816 0 R /Resources 814 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 788 0 R /Annots 819 0 R >>
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F68 402 0 R /F15 381 0 R /F55 383 0 R /F58 386 0 R /F56 384 0 R /F19 379 0 R /F16 382 0 R /F25 375 0 R /F48 391 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-819 0 obj
-[ 811 0 R 803 0 R 804 0 R 810 0 R ]
+826 0 obj
+<< /Filter /FlateDecode /Length 4502 >>
+stream
+xnd_hj .k܂-S9P\$jw$>ɧ>ɧ__>Ev Sҩ?Y*uyz$4[ZCt/ D 8qJї2/4F蛋w^/sBu}ifA=5J?HVY %GZUYϲFp*wUɉM*'7iһ
+zYXxpeWzsi4Baj)F*NN7.- 8"Y눗R3ϰh+۪=:pp_4H9!m;t*7
+!.%mB#Qe!xeixf4RŤ9A''{X4^
+V$[%)# <G *KIv9z'Ufϵ
+%=s>M =<4 o;:UhxdG;8b 0~2'5J .|4y 玧U"Pq^
+"c<=@Ҳ'^Ҝ,òRQ Vɳ4LLr*,Fftyn1D ~r>h #'$<
+DBܙe ~`DBh[T&D~WJq,hӃȼw R5g8;16Wu(ݴBsb+Ao<<3NK<m2?t
+OQ#ӀQ`xn˻Iܙ%!j[s|Ulu
+J`58@}]tѩv(,M5gZe3t
+҄KۢB'- w8,Ʌ<,__k!F
+(3 +TU;>[i5CwTVxg ̒GN¹0C5<D;ùy!tx2 <"Ը/m82+9{%6ѸChM Tͭ] mbiH|}cMQd4))gPsw ~x0OM .g Sex`dn8c@\V1,144Sjյ ~1x\8_nz4zOdˋRr<7灐G"TTÅ2rֲgxXEݮ٭# sa^qCKDkfrU@]1G*WJj7ñ*;b}_(Bk=C K ow3XoC %ևy_ѺvYs^o4CYQݨ݁tA]6@g
+ԳtZ@r
+'ڨ|Jk wklP <AK2y 7 r+u餀~.%ƫ"giw|sݑݲnUszxiV(:oo<loMϪ )tlL[cuT2m2*VfSӕrXI῿0s-Ǟ2PxUڶ!mv" ]+k쳜g;J՗>GNyIӭwjued. mS:O5ܔe;!CFm 'ȇwio(t!0IȌh&/FFyxOZ1X+.ā2^ !Gi6](<)HrS9Ѯv?FjFL@筚DG~3hț̝7 y!^j}7sJiz#ǗΛЖжb$AEZ%]B 5XEhsMm4[ͳm]DG`,^(@~]J-} {bk|wZl#3Z_aU ?xe£[bXm槺ʮ#$#n^9诸۩#u'~:SKE(UR߂M/{,Mo,+"w}+ݼz5aץ_=tR#}n="΢]OFSB7H A  +S%KqZAhw8[q.)YkX oK8`H!.OK4qǶZݛxG^,&oHoo8w ep?y8Siݿ;"KŠnEIB_RJzs o΁rd902J/LYT)%aAR!yFaYճFR~7Z]v⾅rzkBBg׬= aMv&jtm]um٪kYo\` 57wi cpZ/3}}8\8ɘ qcb{*HGaƧ@E ; O+A`>sc8
+9 X`AcA|>Xg)K/Wn6XH3g-v96tg<*37B9 3Si7cdR+VGK\ri͑ Z8gR<RIu-
+endstream
endobj
-811 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 229.069 182.009 241.024 193.964 ]/A << /S /GoTo /D (subsubsection.5.3.3) >> >>
+825 0 obj
+<< /Type /Page /Contents 826 0 R /Resources 824 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 791 0 R /Annots 829 0 R >>
endobj
-803 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 434.303 148.634 444.76 160.091 ]/A << /S /GoTo /D (subsection.8.3) >> >>
+829 0 obj
+[ 813 0 R 814 0 R 820 0 R ]
endobj
-804 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 202.628 139.169 213.085 150.626 ]/A << /S /GoTo /D (subsection.8.2) >> >>
+813 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 434.303 163.448 444.76 174.905 ]/A << /S /GoTo /D (subsection.8.3) >> >>
endobj
-810 0 obj
-<< /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [ 117.993 82.382 482.208 93.839 ]
+814 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 202.628 153.984 213.085 165.441 ]/A << /S /GoTo /D (subsection.8.2) >> >>
+endobj
+820 0 obj
+<< /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [ 117.993 97.196 482.208 108.654 ]
/Subtype/Link/A<</Type/Action/S/URI/URI(https://tex.stackexchange.com/questions/528975/error-loading-tikz-in-ieeeaccess-class)>>
>>
endobj
-817 0 obj
-<< /D [ 815 0 R /XYZ 78.37 808.885 null ] >>
-endobj
-301 0 obj
-<< /D [ 815 0 R /XYZ 79.37 591.896 null ] >>
+827 0 obj
+<< /D [ 825 0 R /XYZ 78.37 808.885 null ] >>
endobj
305 0 obj
-<< /D [ 815 0 R /XYZ 79.37 418.093 null ] >>
+<< /D [ 825 0 R /XYZ 79.37 591.896 null ] >>
endobj
-814 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 377 0 R /F56 380 0 R /F58 382 0 R /F55 379 0 R /F69 398 0 R /F57 381 0 R /F40 387 0 R /F59 389 0 R /F46 388 0 R /F72 434 0 R /F88 818 0 R >> /ProcSet [ /PDF /Text ] >>
+309 0 obj
+<< /D [ 825 0 R /XYZ 79.37 418.093 null ] >>
endobj
-820 0 obj
+824 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F56 384 0 R /F58 386 0 R /F55 383 0 R /F68 402 0 R /F57 385 0 R /F48 391 0 R /F59 393 0 R /F50 392 0 R /F71 438 0 R /F88 828 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+830 0 obj
<< /Type /Pattern /PatternType 1 /PaintType 2 /TilingType 1 /BBox [-0.99628 -0.99628 3.9851 3.9851] /XStep 2.98883 /YStep 2.98883 /Matrix [1.0 0.0 0.0 1.0 0.0 0.0] /Resources <</Pattern<<>>>> /Filter /FlateDecode /Length 45 >>
stream
x+T030U(2 8LXX) @`@
endstream
endobj
-821 0 obj
+831 0 obj
<< /Type /Pattern /PatternType 1 /PaintType 2 /TilingType 1 /BBox [-0.99628 -0.99628 3.9851 3.9851] /XStep 2.98883 /YStep 2.98883 /Matrix [1.0 0.0 0.0 1.0 0.0 0.0] /Resources <</Pattern<<>>>> /Filter /FlateDecode /Length 53 >>
stream
x+T030U(2 ,-,,r ,,Lt–fF
@@ -3562,1944 +3613,1975 @@ x+T030U(2 ,-,,r ,,Lt–fF
endstream
endobj
-822 0 obj
-<< /Type /XObject /Subtype /Form /FormType 1 /BBox [ 0 0 100 100 ] /Matrix [ 1 0 0 1 0 0 ] /Resources 823 0 R /Filter /FlateDecode /Length 15 >>
+832 0 obj
+<< /Type /XObject /Subtype /Form /FormType 1 /BBox [ 0 0 100 100 ] /Matrix [ 1 0 0 1 0 0 ] /Resources 833 0 R /Filter /FlateDecode /Length 15 >>
stream
xP(
endstream
endobj
-823 0 obj
+833 0 obj
<< /Shading << /Sh << /ShadingType 3 /ColorSpace /DeviceRGB /Domain [0.0 50.00064] /Coords [50.00064 50.00064 0.0 50.00064 50.00064 50.00064] /Function << /FunctionType 3 /Domain [0.0 50.00064] /Functions [ << /FunctionType 2 /Domain [0.0 50.00064] /C0 [1 1 1] /C1 [1 0.5 0.5] /N 1 >> << /FunctionType 2 /Domain [0.0 50.00064] /C0 [1 0.5 0.5] /C1 [1 0.5 0.5] /N 1 >> ] /Bounds [ 25.00032] /Encode [0 1 0 1] >> /Extend [true false] >> >> /ProcSet [ /PDF ] >>
endobj
-824 0 obj
+834 0 obj
<< /Type /Pattern /PatternType 1 /PaintType 2 /TilingType 1 /BBox [0.0 0.0 8.50403 8.50403] /XStep 8.50403 /YStep 8.50403 /Matrix [1.0 0.0 0.0 1.0 0.0 0.0] /Resources <</Pattern<<>>>> /Filter /FlateDecode /Length 79 >>
stream
x=0W Y".RRҿ^( U b1H<ܪY`2rir:"B,Yr߻qB
endstream
endobj
-825 0 obj
-<< /Type /XObject /Subtype /Form /FormType 1 /BBox [ 0 0 100 100 ] /Matrix [ 1 0 0 1 0 0 ] /Resources 826 0 R /Filter /FlateDecode /Length 15 >>
+835 0 obj
+<< /Type /XObject /Subtype /Form /FormType 1 /BBox [ 0 0 100 100 ] /Matrix [ 1 0 0 1 0 0 ] /Resources 836 0 R /Filter /FlateDecode /Length 15 >>
stream
xP(
endstream
endobj
-826 0 obj
+836 0 obj
<< /Shading << /Sh << /ShadingType 2 /ColorSpace /DeviceRGB /Domain [0.0 100.00128] /Coords [0 0.0 0 100.00128] /Function << /FunctionType 3 /Domain [0.0 100.00128] /Functions [ << /FunctionType 2 /Domain [0.0 100.00128] /C0 [1 1 1] /C1 [1 1 1] /N 1 >> << /FunctionType 2 /Domain [0.0 100.00128] /C0 [1 1 1] /C1 [0.75 0.75 1] /N 1 >> << /FunctionType 2 /Domain [0.0 100.00128] /C0 [0.75 0.75 1] /C1 [0.5 0.5 1] /N 1 >> << /FunctionType 2 /Domain [0.0 100.00128] /C0 [0.5 0.5 1] /C1 [0.5 0.5 1] /N 1 >> ] /Bounds [ 25.00032 50.00064 75.00096] /Encode [0 1 0 1 0 1 0 1] >> /Extend [false false] >> >> /ProcSet [ /PDF ] >>
endobj
-831 0 obj
-<< /Filter /FlateDecode /Length 4697 >>
-stream
-x]KWhX@
-pN`(Dr,;@~&=3k fEVb_K_&:}AOLM8͵|df2P)R#).gQ ~VCLρ?E^ZRHyjf)P6ʹNg4Q2)P0uGn-?UT\IŒ:7ۇ@[{IKRX5V,?)42 YJI4s=UZ5f“>)I^=_k@:ձC.E
-<=AM\
- A%:: W*OpE*ni7oi|ʲXS
-6i+rWT_~F,KuڼO80Eb@ݓZ<Yd#k^'=[Y5ަr@zo(A]e @ Y5<ȋź>j*YlXѝu=&1,{] RY
-dԯ8JaTm S6j͐]! tcc*t/
-NgYF h]R47µː=z&EӸȡm%zS{ ]sN/2?')0IaUaX")."+-܃; Q˸(qیKCNV{Wɮs8V(%7tʼnX簚aW-XVv1WwߎsdcPT(%
--0$@J5\(Ib ~Q_-1Pk]f=&;ޑ:ޘ+N%JB6v628'Oxmhw}9jZ|5"Y(q*׫1L=1=zқIZ|3_n$_狺IYv=(=5<*M::"0yĩ?_Y"s?VN~b}4G݊3R
-`X多sS3WX|Pjh 8e `L J.k[[ZSGz[s<ۈKvCJD: ?/:VO}|KcB)9Sܘ ętX3p{NtTZ
-}off?g^)*D[MW,nF%cݶBjG54ǦR9}\jE54r0b+)YШv)$Z`aLZ0&N \.TzmB_fV "s˚//~9(JVP'sQ֪w4Xr+xM ,1tQ# }R0
-zӮ`jW(shc]4$1rڮwR\t\&%Ҹ/XmY`BUyr
-SEmǏu5,F/fu +uA8ŴOAhO[0fĪbD|yi)7`IV6Mw=; ͟=Fظ0IݴUS:#NjE ]mvoE6V*TvSr7q)Q|BzQ=j*B9/l)ݮ :?ySN]z>#/Pfaۏn+G
-]V~7aƍHLS@GwU>22pļU> ֙Ahap6
-a;&3PLiWao_H5€ጀ8=Lg ^)jzǴVOKO4فXJ]oZ@ ~ X]I&eja{?]!?ݥ ;'JgPh{$?e.č){ CW*m_B_n)#-,Rn9ZaU]nb)@ݿ?Uq@;*^=0~њPzP*F]{⩡[J&p~DVُLUAŞܛzOmko[Rڮ+Ltwնp+[{*xjbH;yGs{3WËױ.jmpsx
-w jE>;x=sю2n|aW%M֋I>3$>DKX}: U Y8'3ݜpZ! 95zqJ*ԛ7ڔt-Չ$_pO?ËW `/~ P{yŻ*hQy K:Q).}wlڻG*(C$]O7:<נՈM.3¬\.S`cw3|դzȂ_VѿKN 1-8MYj\7ddSxɻKa)EC@tq|
+841 0 obj
+<< /Filter /FlateDecode /Length 4234 >>
+stream
+x\Y~_)X@p ȃd[@O.sh6Ѓ fMU$)Qo x>>9184rtaqDhFfǗGJ[J;j
+!/i/ /9<q O}YPK3OOԧ+4dŶL1e.rhh-вF.<%OYf>Ṡ<Ɩ4)pAj )CJDiS9QZTli^
+¸-7t:8n,ݱ0Uc$Pu*xQИ1D+=\ @ܨ%xW4; 4&XL`bE<u_LL?^)󦣚Ô
+}'3=QCm۾Ť(E7~Ji&F3U$mJ2x_6Icu
+b >-ƁVi]c?UEcƬ]ic#8L.>z=;p fP0J]3c?[<> b͏`.NBs?HI4sQ?芳Bid7e'H}\ UZg[$X&EV-ϣb2}l-jj t9)sۆ=
+PV+UЊ!{jEE<O'[ WބS}@%[uڼ8>\y5X}żtGij$'bagTAlU Y<U# ܮ8 OT͝!ng4-MjxViŭ&!݅YMP> vd M4]5\)a`;]+ 0z^0pڎ)*za5DF8! 2 &%>M
+N\kQ처QKIuhShSۗnC!l譑e>cp#iq㐡D :4_U$gAxu*U Yqk]O(!/`t#D*ȅ7$Zg#)q='
+VBQ:ϿI|N}TX#5lp"jdTaLQ5a:d uL0_`|e9{MwY+a
+WLI +vVߟ_B 7--?4&Z l!tR:kj9kcͲ
+F+5<}on%W_ , RZ
+jE!j&k  Y}O B:ZS67\]r33}e̷пBUڨ(禴 vRF> (~BJ܀$Ŀ/ߕQǿgv@oQ˟ϿOΤ ރ˪>M_P>|G7`Pdʨܗ:MFYw|{prГW2mZ܂bVSw~Bg9Pb/QϷ6
+"ft}޾j9,9nGu=_ܸ BӞŨ%e7yppTF 3 :l4IѼ,7x82O+{f{A]C;ub|p d-`d֩J<c5{܊Wqw@Ewk-1Ѧp~%l=Ch48ķh  $IQuwcqJ.GSn7vZ_l\֍!nhK|-]ԭA14BUiu Fn<)
+aE ֒\g꟮<}ݳnB>}n_
+{k]kT 2K4?JL:!\2+ JGc!~: TP!2u|]QLG'vQ^z+s\v}'<,kHt+ֿ /_^q1={
+KA"kU7% iS"I>^zP_k)ڈv[P|L\4uWs?()q<Xi!8j Tec*n*!E̝=-\xU0t]o;=M1բzܺ"*ݝ9lE ~@ZDW!fc@UoSf^?O_>*_yS`7Mۄ|hҘIAL΋c? ~λ-i/!&8]xSE~,SDN䮍k9e?^pad,gM3 ڽC@Ѿ$s‘{E<4h ӭxNS@r|䉡Qd Y((K|.n%ϊZ~:wZ '~?.a]
+QX9!|nd2[/.1ʤo;Sr\1bU8\ WJvql*(c]{l\ni4$ WREAG*M@6Xw:t}bjbTr/PR@i3.yKPo<l;06ԇ[DbrN5Ṻ<u3 _n;Ǫdj^\;Wy%tD-m%2'l%t
endstream
endobj
-830 0 obj
-<< /Type /Page /Contents 831 0 R /Resources 829 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 788 0 R /Annots 833 0 R >>
-endobj
-833 0 obj
-[ 812 0 R 813 0 R 827 0 R 828 0 R ]
-endobj
-812 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 393.199 721.708 415.675 733.664 ]/A << /S /GoTo /D (subsubsection.5.3.5) >> >>
-endobj
-813 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 432.088 721.708 444.043 733.664 ]/A << /S /GoTo /D (subsubsection.5.3.5) >> >>
-endobj
-827 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 463.299 74.11 469.523 85.567 ]/A << /S /GoTo /D (section.5) >> >>
-endobj
-828 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 480.227 74.11 486.452 85.567 ]/A << /S /GoTo /D (section.5) >> >>
-endobj
-832 0 obj
-<< /D [ 830 0 R /XYZ 78.37 808.885 null ] >>
+840 0 obj
+<< /Type /Page /Contents 841 0 R /Resources 839 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 791 0 R /Annots 843 0 R >>
endobj
-309 0 obj
-<< /D [ 830 0 R /XYZ 79.37 652.951 null ] >>
+843 0 obj
+[ 821 0 R 822 0 R 823 0 R 837 0 R 838 0 R ]
endobj
-313 0 obj
-<< /D [ 830 0 R /XYZ 79.37 613.666 null ] >>
+821 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 229.069 727.686 241.024 739.641 ]/A << /S /GoTo /D (subsubsection.5.3.3) >> >>
endobj
-829 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 377 0 R /F55 379 0 R /F56 380 0 R /F69 398 0 R /F58 382 0 R /F50 370 0 R /F40 387 0 R /F46 388 0 R /F66 384 0 R /F59 389 0 R >> /XObject << /Fm1 822 0 R /Fm2 825 0 R >> /ProcSet [ /PDF /Text ] >>
+822 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 393.199 673.888 415.675 685.843 ]/A << /S /GoTo /D (subsubsection.5.3.5) >> >>
endobj
-838 0 obj
-<< /Filter /FlateDecode /Length 3078 >>
-stream
-xڵˎ>_Q?вD mY{X8ij:zT{=ݥ)S$wr>|xsuqRJDk>~~PFNjQh?ytj2() ;?}Uᔲ'Ji Gqt>қ'q[s I8[UMU).VF)ǂBNFӨd2A&|Juu$[F?h)6p
-{Rÿ6%Kڡ `|.+1X8nm7);m0L2d $d UqL2WyFec]ߧhB]sG"#Jlm/irS~bma2mIl=TKoB$) =t\q$ldqs)pG'j#+#:Q\ks7eL6su=ٔSX90Y16Q5Pvxc_o:
-3SJ6L\7D-=an$^(q<Bѯ9p&/
-.]ȼ%~ o-g$֒m:#A9ӖHh|fx<,gܤQ}{S&tFc<[t8mU?JٻBU">PÚ:7MqGh?=Vst><1wSnD`?<,G/} 4ONF$%?b}A_3f
-6xc}P p^߇* JT[HD"H|\"ԿÇ$C5-Q^+.60nĂb1XY!S$3WGuq5 | &2 {R<U%ziS)coAhW>k4:NN:kofyUKT0">t^OSQQJ[@[gЫLND5=
-̀?^f#~\9*6T>ߧwC/3}Hp?]**+\ 8ӷ%㪛hTWW&F-\@0a(~hfT⮃DĤQ uoKuv=l,2r
-Hkk:
-MaFoFDA24Y)w
-endstream
+823 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 432.088 673.888 444.043 685.843 ]/A << /S /GoTo /D (subsubsection.5.3.5) >> >>
endobj
837 0 obj
-<< /Type /Page /Contents 838 0 R /Resources 836 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 788 0 R /Annots 840 0 R >>
-endobj
-840 0 obj
-[ 834 0 R 835 0 R ]
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 463.299 69.726 469.523 81.183 ]/A << /S /GoTo /D (section.5) >> >>
endobj
-834 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 450.259 200.734 462.215 211.613 ]/A << /S /GoTo /D (section.13) >> >>
+838 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 480.227 69.726 490.684 81.183 ]/A << /S /GoTo /D (section.5) >> >>
endobj
-835 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 475.166 200.734 487.121 211.613 ]/A << /S /GoTo /D (section.13) >> >>
+842 0 obj
+<< /D [ 840 0 R /XYZ 78.37 808.885 null ] >>
endobj
-839 0 obj
-<< /D [ 837 0 R /XYZ 78.37 808.885 null ] >>
+313 0 obj
+<< /D [ 840 0 R /XYZ 79.37 605.131 null ] >>
endobj
317 0 obj
-<< /D [ 837 0 R /XYZ 79.37 771.024 null ] >>
-endobj
-321 0 obj
-<< /D [ 837 0 R /XYZ 79.37 238.154 null ] >>
+<< /D [ 840 0 R /XYZ 79.37 565.845 null ] >>
endobj
-836 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F69 398 0 R /F15 377 0 R /F56 380 0 R /F55 379 0 R /F67 385 0 R /F58 382 0 R /F40 387 0 R >> /ProcSet [ /PDF /Text ] >>
+839 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F55 383 0 R /F56 384 0 R /F68 402 0 R /F58 386 0 R /F54 374 0 R /F48 391 0 R /F50 392 0 R /F65 388 0 R /F59 393 0 R >> /XObject << /Fm1 832 0 R /Fm2 835 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-843 0 obj
-<< /Filter /FlateDecode /Length 3327 >>
-stream
-xڽ[Ko$W19
-Ҏ $d"94],>֋E6g ?>+'϶oO?\OE\\`][q Rs-߁s^o?<u`[SC%\ r~Soo}|_|'~9s$ ]ۿQVa6.+L !r0/%ёQ3tcڞ8|)e-3zi!e}F<wdd˴;Ǝ|f
-~nKԏ2=3v8fo>tkCߠe#h;bB=SAc4; #nw0pڛhL'VFʫy-im窢 Nc-!kFD9"m-dU(~d 2h'N71Ay+DD[e2\
-II`i
-$%7uK[2K y:`km<
-Ӡd,jcNSFt Ie"K9ˑ 42{u#މ7xIh4LOϣaib`"*n:&ו-rGr-F\m68MMuPx :tnh:y(߱&so<P'Yg$ȝ7L/u$֌NqGZJ ɷ{!ft`45rXy8nc_53ȝ$.SnʘS,Pe "bB N(ԖYA(HRbKO{@[
-i/LU3& %SR( WSS$~V1֧qf)qFCMct\,ZBaNePäj~(uvz$flP(˂#y§s$JEs,7G].XN,Ts{f~syFx'-T<++ފ# V$4S O5w$̈́Al$k =c`>k{
-h°zGiNDETD_Zـxs[[^&pG=jedb #wf78}&RO!½gkSEה|jB2aBt9TiU{ϤٍC~=qD,f)V=y>ˊ|oXN>k;FFݷbR(+hhL: XE<p14h)9&ܟ]xm aI򜭗YV|{Ǵ𛵗1FԊJW2׻bN|!G-v9,֖njXC6hR]n 7 PW~HI $Z<}^cyuܪU햮q U
-C.Ϋ =:#BĿ.KbĶO'ǚ՘?.SۡupE?TLȽ~,:(iܿm꓈(SQCshf qE.3z+sQ7]B?$C5~kA+';d
-/doHhL1h 6-%S?X@J}~2[f](i_?v/_ŕ/O<}xYsz #
-#>~򷧯74OkτZ0xV.EԌWkZzV #ӛ^BlYJf.
-
-C1,dTW@m]
-d?Җc!$Kbvt y9{N)gn![
-j{J}
-WN hV@U9'K8>~m紦}-=XqYOʷz$ލ'mp ~{U*<ء?HGcfF˧GDErKI㰓-v;}d mއHɧ'V-C&“."Z& H*[K;QG~84)Lxh<:
-C03H)>6׼#~ n&{rU6
-xJȰ|sO
+848 0 obj
+<< /Filter /FlateDecode /Length 3554 >>
+stream
+xڵ\ێ7}(Y`$~ ] {Uc RyDJ^>|+@)-׻?q]8a9v-8f7e?ڧa"
+Q7O`BuCh@Z21!Ʒ7_R33a~é\y;řRJ&52nr÷w_bOo/Ӏ?NT{ЃC^ZFɌ3
+i]sBE;0+ w#q
+$~;QA :5CoMJBr.[*z9aVӛ)M8<DCHqR3؃kc84D-,E֐}Mc0*)YMz!1$,Dʜk;cJpk
+ 6YS<ǰMD1rp¨fnշo<$ߌMߩZף+K=",:->Z[XJkz*%Tq+=YT'sKBG3WyEtH9/f*Cq3 ^=i?zKBs7ڕ/R0K}.M߷4А+, bTLc 0rA|; &ѝ˜;G.2YZꘚ7` ?Z{rS_WkPQ5*ٔ &T$Pe3i$<¸YW2K{~s k氦;v [g[1gW
+h֘|FVTbʿc4pf HVi*x}';6i
+
+#SX]:
+ 0 AzIyQUӖPuL,:8w.Ɯt+#ɴ{H('׾O1 ~:W#jd:O9eHi\ڜ6
+q~m"Қ6fz.XLJDuL}]C \L +E `i2w&Um+7]_`Az aYWrK`nB^CK}:Rv!'Žsa
+,@*~8`⽝|ػECp_T.
+j)Xpa
+k%Zn=?"ԏeg
+i9{j%2:qN);mG|p!nmu+&a@3OTeiAyCqM_{n! c„wHsniڜɜ43[ҍ~,Wot8A;k5Tvi??iFkæi~
+FdsD|hGzRĪU-b|5su!
+KNhM7/:anIFZș;sB:PHU+uS+N^q0#(IA~킇ߎS B%
+ mq]
endstream
endobj
-842 0 obj
-<< /Type /Page /Contents 843 0 R /Resources 841 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 788 0 R >>
+847 0 obj
+<< /Type /Page /Contents 848 0 R /Resources 846 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 791 0 R /Annots 850 0 R >>
+endobj
+850 0 obj
+[ 844 0 R 845 0 R ]
endobj
844 0 obj
-<< /D [ 842 0 R /XYZ 78.37 808.885 null ] >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 450.259 143.155 462.215 154.034 ]/A << /S /GoTo /D (section.13) >> >>
endobj
845 0 obj
-<< /D [ 842 0 R /XYZ 196.679 252.834 null ] >>
-endobj
-846 0 obj
-<< /D [ 842 0 R /XYZ 196.679 232.64 null ] >>
-endobj
-325 0 obj
-<< /D [ 842 0 R /XYZ 79.37 185.93 null ] >>
-endobj
-841 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 380 0 R /F15 377 0 R /F55 379 0 R /F67 385 0 R /F52 372 0 R /F69 398 0 R >> /ProcSet [ /PDF /Text ] >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 475.166 143.155 487.121 154.034 ]/A << /S /GoTo /D (section.13) >> >>
endobj
849 0 obj
-<< /Filter /FlateDecode /Length 19536 >>
-stream
-x}M-7r^E]'I!LԀ1aОpO ﭺjyq.dF-Eo./7`_~HZ9o]/[(/%ەO?+G{JFw?ӟp};pmO]|t3=q\\rF\{s<}/n% Inu/k/t~o][i{\N|.~hujXo5j>Uɷ?lWn-֏2|dꭵr#XnWc#nWΞNJ\]#ͻ]pqv^~o/t34_Vy?^E+5z.__~N?o? q{륞wk-}?ź?V4C5\BO.μ ʼ9ܗ]2w'D h4< XO&F{W-9h]4 yw kZ>ݫi`Wb^6 Q{s^hICܧ45\7J)|"i.Fbt#3QIpFҜN?3> <zk''<x\ <W"c97|oAO%mj`]R)Ok6kvn喨 s4a-vxJ3MQ'}8<\Ś>=V'L'?A6wk_h֡g5sٿ;|$fMAѭCkӭ^|N?}5J&r%&9<sX?3i+M[4j3WB4{UL̍bB<3P'CĀpbO?s=\Y-.mrwC 6|V.!/%dzw yYV.!/%d5zw yYV.!/w%dzw yYV.!/%dp 94h#>9J](UtĔu]ƞk/SYyxgb1r,u]=QJd׾7r}{\nIQo$+7fqQ_׮K|j^}i_%Ӝ\XH5v]LnzSm^ޢɘglxL;@Yn5szLφS (54[U fT;`SM*0B&_0$Fd~B߂mBS(mܧNwqt.P(Z* %xl:hMLd| fu PnB=OY'!x
-i
-
-"S!oR4FǡK:)⎔IncΔUj2#5Z
-p)Rx C=~T54yܗ
-W]~Ta GnsnX3/Xnr*2v_.`!+"Jo) :fBV4Єv ~F5T^2Ljfh8ڴŏM<;
-dAâ;=8wd-72bE9jXP é@= $D$ϳSHkMt)JW@4W2` '?DnGbN(ato-UJ:P"6[ ef=+I(P=WQn0FѶUWLSdZ+E0ɔh4/3TX*]۔Bd<#?z ´xq)6B*ئ2]/Jĺs+ r<,^Xb@Y(OJ‹zK?9f Y
-]"n7(mGMXfLTlMWBy}H~j8@DO"T۔ZKEUi/1eT3 + <c?źJgԮE˳6~uYT
-v_9*&2]
-,JĆMBfPY.&*s}E~'6Fb*
-)}=xgtž[k͛B1+1
-
-S:k|9] 6=vAJԈ-xцfHI;R@([z=G^\c@ִVK.+~}AJg.\>L1 <cWتB|Ip5pR}p0%d`.s {Fs1VG#R64&_}aQPs+Pc:2["xS/wµMքJӨb'1w4sJw\a]ϪF0HYENP
-cePHαҝ|5 %4Pev
-%p>.W8W"}%nQ\_[rcU*
-4!|ϟp5x7W8_ lص6 4VSc'M@ʅL3_TПJ`oųyTS#`QQ
-%x4F`rG^aW.~+shk䉕FQkgR-+|͜^) 03WͦvF U& WY5ژv+%BbVɜ>hųj,+OЖp@Z4|^
-;ސce!
-(e^ʴc)Ko3udN_j?(9~)m^K(O x t
-٘LKa~f"][ǒ/}b'2VB\Θ0kvR1.+\(w/Hoqf˻`oTT#v A2d1j̏)J9rWyzk _,XTH7C Xw.W+;d+nsfg;Q=rQ
-yA>U]@EBH^zάsO<7EF;i;[r ȶV( 7:^9mx4$`ۣUq4T~kTTf#X-x
-_Zk00UnAv!t
-$~Gt6^Ugz^ LYY`r˼]j/$H91l B BvׅSxvȼrN$Ŵ90@
-2B&/#@S_,xs\ K,,-&r%X֐St
- ZE]_,:*.@e=XB)v_(%'2kT^~frrnƵ-##:\H t
-~-9y9Xh DC nm<@Jű>&ze_L(ͤѐءnt
-h_浳#);z=%姈S//w{~ZITtKi"l24kG^Q[dkNNgnHE(WKdFF.b%=6#ѸHoQrRD\+#}^d?3-FSFsgP#TH*s g;JDλNx
-A$R[w|;LuJk,Kg(Pցw bց$BU6xwl158heA9D8J_Z 2!ry !`÷O@Rp1%뉘r0@y/ٴZUbA):,Ȗ^\ã
-?
-xL@ 4ښS(%4ھ
-d
->l6ڣȠ?|3W֓:B [>ԃ
-4J&US)7=?_5%NR-У(u '*) ,Ǫ
-L9UPڔsjmqܣo9̖s)"gG9&5n@Fjaª
-lEJR*&mM1ĮТ{*xtXS(؏MkxMׯ;ocg) T(f+:T4sZ8f޷g0˷`Új4J}sAޮPeӾ[T$K+*ti bsESxxs)ĩGGAǦ8}DA)s:^[!B![a-GDp}"|xWVx[ JHO2])|ϣinNwoZjêzc,Ȋh-0#&hK?6c * F ,wt~`/ .WB AL R`3x }usoT?n5^TEpw7" #rB!
-5-R_Ii[IՄB
-@M'IJG'*d
-@p&l{{UA
-" ?#\CPAP|*Pu
-._BB 71N2P#޽
-!U8KP
-@(gS˫6δ*+dC!Sa GE)ҝJa葱@?Ue&_T{{ɇ _ ~yn- */0Jj8BCSQجփKO*0h%M_L6­. m ̃(*茶#1eL7BGSG ݍ?e2Z{l{]ƼJnt փf2oMΩzuAb*:li7[[Ƈ[RX1,Pl!ڣ;8VԶVvxdSȡ䰦@RNLZ^3gҿYh
-a
-Qɱi" }Z UERC [Rt
- NѮ,{ZG`0dbKEpVs2k
-1  #} a02@@SEٮ`*pTiZ/j?0jڊc<E 邆+aPڒ>#wmfRSdgV`RM }9MgAciҏښxTVG l X"8ۂԘQ 1N\LJC_T(hP/R"`-
-GpFcޑ,HYU?ޜx}P,U- pJAUk6).6+cA6KhvNyH4xCێeSx19*4UP۰ť?#vΛP*VU_sвWn\3%#
-n+x֡
->*hc4^Y ki>A"x(XY &l+|
-n,hE)HhVi
-sAЀv`A+sO]DZ)ҟ,j L!55*pAóf H\ÂX^Ӳ!I#atґ%daX؂d XhL{erb53-t
-M)pTuޗ4daM~)MK?8,B-3.t3j#V
-J󷶼'*+anaD!(y1f&M Á7|Y|eqK֯`M1@!<k_69f=?3rm7?/Ծ,XQb)6.(px̔)#G{%&LJҟrj
-cLe) 30h*u.HXwn*bFZ_7<sLQ5xr|1h?~;7J?i,Ǡ %bQ10 > %ѷJk3JfSEGBm rXNQsd!T$Dl62ܿz2HӏHT03`Q3d[3cjcjmJK߾PkNf*g騉 M ߡ`M1<" i$Rgғ(Tn砚1z-n,TԠ #bùľ'PO]\ S]c-%d#jl6IOMv?wkUKY3غ
-VfmT
-ira6Gf1+IwXAL_FMƖƽR˲0ScMG "6|)!)yӹa.!#g{Q~|?/?Ne Еv =gǒB;erM _31 ^wːtPnAw^hv/JbuQy 3 lPN0w1H}ǀm*+`ChP~.ςjW +0cq)8T 9+\Yupt
-[#x >U[8PCtG6wU๩^sPDS(M亊w F5[
-"å%
-YYPÚtg.w%b;X.w-
-jA0j+ ãѥq oK ޿QL?wEy\tș
-ߴEʃj.ӣgxhn8!quZDl2fѤ:b<2{_ye qDDEz`fR2<A.A^/>$cTHb sn}+ۺ|{lM^y?.P#^t FB,$A)[ id v
-\8Qzoe&Uj+dChc.4.YuPØtg<"cⵟ2NE}ӍY|Q6[AIތ6@q.ɘ('!IRv[Dln26b: ǛJ|k6] TBˤ)}Axw\J8\`h/NVŬTt)( 6[xLס<.˘J@Jy'CGx<a KҭSqUM,5`&Vێ#u `Xhwb?źJۨ|™m3TޭXog;3)f2Rމ*7/6)̍&Ji}LbӣڄKg9R;|ϓtaalSIM!t4O&I}ޤPmIJΤwb?źJQ=K|T*6JL!~a4Pw E%e^S\5äbPhggy_Jr ҷ2Vl"M3\ 6n"8xEM$4PNԧJHѬlc+ImH+fZKEi݊_g^k0V obФ!Wy^.^ߙ 5_͗\_ _վ8)$姟_ו|]o_C{nzXbr"Cly;˹4XsGEǟygeOP/1wbx 1bG{(geظ/=iz7]] e\??i>N˰c3_kvk#yٯ#~i߶u;tSĿ=O>Mp}l$%jᩴ;`'^x V݋ﵝ Q7O,Hf1e;gJiLz/~O{]X?}B?}B.T~AM_q|,3vZ4O_!ƯC|iԟ>Q}nԐN{u;!4Af>? k̈<ٰp̆G2͇?\֩EoFV_ph}ׄƖ .N5[[2rMx M xsO'k6ⲔiBo-cw#h,?͕? nטb݅r^m}7ވE\ۿx.id0?jx:idƇ|*|uSfϟ]=?n}7 ~=@oO/aنavZ/n{f _N aυ/sff_Χ߭f'y܍?:`S W|4X2
-Ls
-q u޻%y xLo =U3 jZB?4pǽiM뻇~i?^ɶiggٺsN_=烙vfNjImqn'—i7\2Ma?;|6ZZo;o|0
-R헺_
-~nݙ@<wϞΖ-Cm";]Xk} ?Ƈ..H@ KB'.JGY]!_Ȏ@]*_;:? B4F^{?1;_ bzKuez^@oF1f/#]{> P[V
-h6D.AK#%V?N 2O=C{&n~`ecR^=9Шlj<P ގsa“H̤ՋhnWnV:_U0o>d
-k BSilчD!2| AS
-.h6F.AO_Er3v,ue"<=Ĺ/=-{Kzsn?w˙:MH<["ltUhlڌ[6)(gЇH|Pn'g6*U><(ήQ gȧlUdhBDjQL3S PJ'~anu\76I6g~xf./A4;\Z,>{Q-; F-c=GjPm 3[0#k?6c2+M^ݾbg2Fhwe[]sgD7<Zs?a#ڠy4Zq*/:籶~,CCxu ǹ픁 q|j?DH) {!4[8.@Ƶ`V#0],3CGK _8$z+[𦹂mR((72y=8zylkb@By~u_'`(H $4hQ"6[<y!WӱR-;?&'4>JO.9!\P>ї~9 ynBt$Eƹ_.;g5R3M q;](]_ފ[Ah޲ЄVOJW{*ùf|.{*S!ZJpn%z"O3)JW?BV dUK GwIGv8hŧUԉl2-; })$~7x/̇DZ0A"=Pa#;8=-Z6rDp߻T%\2r9>;st׏/&ؚgz$Ns`窝^a5&.)ф]7z$A&~_Pi`n[wT8u{o[cGHV7>SoI,خ.)ф]7~ZϩZݸ5vݖ LXpui~kۼ(7{"$齕TC .%5 r^.E` 6)ĢGz- 75wm&,4R87QX]qy:_z@ )cFdSH܎N77u1ׂFc)X֥EXWBoOHP[Aqlz$)$4][Lq:/0!RN}Rٶeq IADŽT> c% |ǭ[zEzs ezRBy
-/Koh@i,I:\6}i@o~2ug2|A| ɋ2eIPp l TuZ񦫹 _ RozhP!+ݱQ fW#RH<KMg4*hhܲӘk R>fF)Œ&#X/ ^I@&5v=wSҳXvA戴VVDʳy6zl',ȟ=5a|rY
-dZ0T4{^ϤUqi -̄zffxG^#d\^rϏ$TsYc7 K
-t %Q6Wtԓ/E^t
-I KPj yxc&׏$JP!Þ6AWoMY=EWb*6t*IqPcXtG{kTw!hh/XWqw*dR]0$
-"õ~z:V̤T##=Zh2 qJ.yQ,tB6].6@[Z&`/]*O?W-EȢc>R`䆼~ȋ;p$~<ؘm&,^<
-4֊T3i&^أ2c!_-ٜ|ʛ)e-o`ͅRSf54L5 <bׇU U" 4̉B*5dzgLyӢli1PܛTj5&e=W %Lxw[i ;:4tEmpi&c8P"n$I5`捍Ucd
-4tkľ 2aE˕S%J~7%͔DLol5~C;)#G򬋼K.B<2ot;V7Mݸ7gR9MP"rpg~ Wm\fRm>ȸF+ Xf%G=oW7C<!`x͋QphZ'᝸E(൙84Z]\װ0WC ex
->20r ƚfًlxUwdP SH)u
-i?fLm)AQvI)겜F\\Vx0bԸkTh glT,NU޳
-ġ1ikcv4ֈd
-ʬ֩0PY5vH7>/ &y89Ny| gvP}NgJv<  q1Y$eqA@i4vAqCYB ^~Qju_wƘWe] q pт V7m/BJzH!3CͿb>!B#/)״yپCN.fph F5h]뮂nԇ_!B[jA#pMyJrmyw?V75Be)V n`+멂 %xw"I=1寲 -lKpYftCX%45+^EJ]j|x;fW;Zrq[]Uqqт V`0ƐACr誼;K+FC!Kw}#4o2
-qYY۵ǰ7Mdc!X_/@36`U k5 Wpݬ4RGVK@85[+oɍ- C ,-%nZ ]PvtX^cxEOUR?}f f_Q
-PJV˱iMWq,GíyKsk/DLcs}ʏ Ms~7CvpvD?2+xG7.P񺒿ߕ]C` \
-evNϧg0`gvfa`豭vD0"
-endstream
+<< /D [ 847 0 R /XYZ 78.37 808.885 null ] >>
endobj
-848 0 obj
-<< /Type /Page /Contents 849 0 R /Resources 847 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 788 0 R >>
-endobj
-850 0 obj
-<< /D [ 848 0 R /XYZ 78.37 808.885 null ] >>
+321 0 obj
+<< /D [ 847 0 R /XYZ 79.37 714.242 null ] >>
endobj
-329 0 obj
-<< /D [ 848 0 R /XYZ 79.37 305.806 null ] >>
+325 0 obj
+<< /D [ 847 0 R /XYZ 79.37 180.575 null ] >>
endobj
-847 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 380 0 R /F29 371 0 R /F23 375 0 R /F51 376 0 R /F52 372 0 R /F15 377 0 R /F20 378 0 R /F41 373 0 R /F53 638 0 R /F42 374 0 R /F69 398 0 R /F50 370 0 R >> /ProcSet [ /PDF /Text ] >>
+846 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F68 402 0 R /F56 384 0 R /F55 383 0 R /F66 389 0 R /F58 386 0 R /F48 391 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
853 0 obj
-<< /Filter /FlateDecode /Length 5979 >>
-stream
-x]I6r`dc_"Vu&bnm&ϩl9Bsw&@<>TH*߇ܘHL8?OQ)`O|$gOf~m? dBɄxXE(˄ћ΄[a !<Rl"$Zm!en9o lL-=L)Lp)_[[ʹܺnxF2mB[CƿE?5 ͤ
-BEϼ`Lݫ޹{UApÍT`ވ7tvjf޺!S ? ݌^UeZ_ F <j!5b5}gܿk!r5v5ppZV.k?d-x +4.y}6ux8 Nۡ$X sF{O8]`Sk}OݽNڡ\WCK dV9/\Gg=0ng6ͅgE_Gu6^X7=2̄3{X^~%8k>_p[yʝI;p- Q-lhwa3;C?GZpLg ]PXPڱXȉp+"?B M<|E|Uʽ`A&IXxבm{`'p 'cE%Z6@G޾$D?`V2|^i9|u룇g֙rX</v:]iV|@%;vYiW}Aeub]iV~@ڥ{s.܁? H}1$`j.%3oj`xj;^n;_:03^rmڸĤ53\ܡS&Թsms"%g0,εqϝZwyn:o.3<y榥eKQ!ֹmmU>K~x綵iz=[z綵iY:z綵闡fr{ /QV欳I4S&AP!= NoӇIF䈳 @Q_̟Fn)mB* feΝ\ '+(Gw  +ӿ&
-u;"L,s:9ƟZř<kIPM9RDe/s| s)Dtj93©QT{$B݉t%틔Q
-V,gS=ЫNhXM§ЧvSsSPV.IS¹erTہDITod;W©e;Qb8kIv3̉V0tL+#|,-I\hI>H4%>!Sl *ۊc!%Ժp-G{MY'5z6ƜrhߙCbs/L{ ν!;y crRMב-q%u5Sm,X,ZN YܯֲT,dD{gEhcPayc{qVa
-n+*#[BFyqאd"$Yc02)7چ ^]%%mJG ;\XL4U\@) ⦆q QRgэEK-.pr4Ǥp -j dJ,-J)e%f7ᓰF,ўYX"!KE-sa0D {K"Ь1a$.
-" BXWRRU3B.bl86$R2UXB?VV8YS8X^<U_p.p\>nL
-D!,wVSn탷nUL(]˱ԸR` {ܼH& N:.dIni29aZ}po1zُĩ(P'pRtre\@4҈9 BHrLS6
-,Z42)it*6˾h5VHlA8C`lH0kDza 8)$#74b_)iadqm"T0y3!!+DHIG([= {([:%'a1K`=UeEVI^bęL!D2!KKJP5&q#OTfh pόlU^>!Ә!nx!Fz+QP9 j6U"f:bU($2,TApgpe~N[DzJf*ݘ2->%7)ƝJx70VJ.ͺ
-m$ZƍO8ɠKN\;Y-tN E'L -j+2VjB\lXVZ[W*t9|F5LB
-'SҝJbyc9y[\]AU15yܐmERרl4M4H@!=ƶ ,R Fc êLXB
-ʺV8pREV++쩖o<&X ½
-=ȴ
-y?i іKgA3|}L; t@r?δg=ӦL]<f,fX/i̧9fvs
-k˚εmigKμ8MMڶGh7r.MM8u7MMKˎT,6`֖/=7:9?UX+uZ6έ|N&\k|X`-sc
-
-=ַ>yww&*{9tClY7M+inE>sTaX,I*%q.yjZ⥂/U>q?p!b]VVVɢvA\oSm_hjţ%sW}!ղUITE#jtP(\d"R] HEށPﮨ[G@ZF`&0,VȠV(̂Eu  E #KmقsrAᆯY2)]R
-漽r2|kƁyg/R蜡,I-JgP&uBAoC~T,
-cPW|F(/;!Pb;a;a.
-iN خ$v`s[M)^R:^ݵ"꽼X޸Xy8[s5Kzk!_ֻ5뽕jwzk[)^SzQo%Q陋elbLc}l*?ϭ%AnATD^ԕC%^zNS"A^OmSwYhmT
-<=4U,.@=h[^S}H`v@5%k}KŘ?C'.AJ";M?~R<މѧ9}pcF7Np7jeGz`|el8Jr5TL+՛|_ϵ$C~C"Y&h0PlC*`Q
-<[s"xu*
-doRv˺TAu뮋0z,wH
-ёT S8-{̊U-OVJn*w |IʷMUkˊC+ym)/%9nb`tBSktWSm=o~mYzY+LNC}ߨ.|
+<< /Filter /FlateDecode /Length 3594 >>
+stream
+xڽn%crF\vHs 9$OJJIEwQ͗.|waV/ _SnqV0nsߞ$WE/k(ߕD(9[Fl27x_y"4{@3*r=!aM6pm`Cz\#%Ґ}Y߆4ktHĜ]f5kY8 Rer=di.7ގ- ^!EmbB.v3g0# (RlC(׺eKu>)Ah,GE2Ǩ&wwKd'd ڷ22B)\|%F
+%UWƔ ȃStBHd^t,᜙h߯gۭNV"j`fvvm#Z>[8߀S&8kEy"7(߅Ng̐= eL0[׎M"GWWq'Ut<+u$#_PZێdSV;Y8s*tQrZf2 Ǝx&<0ݽR\*nG[gmo(z(xjZWܽe#+}j-u<yzoп'HO~Oȹ<&Qؽ<[)2 n %oX#:5܌ۮ>I=(+#ʒ_@GRs@Ydhˆ> ]~m"V3 ]Pr5ڷ9br!L'*=&Jip{B[DuLEYIL񈯈<kYQqqau0`H4#}A$W`U(͘)d~Yw̺D9'nU5(0),3f=Q4ЊIpu JoDfIK]^.Oµ0<5bK,Me"J9zY+.L@_7 =nF?3:uJ\X=ߕ (T̛FB˶8MuuPp :JI2dg*>ke騕;$ȿC-dn)#&HhJ KHaaP" F؟@f*C8} 7|Oy+kϩRo<U ꀁ^A\*),sNv<Ju J-_%Ԩy&QN// V3>1J<@j
+-H\i~IB?+COm)vaQR=r)Ss-װ"aW]I+7"!1MM#
+Պ39g>QRlqvK`Y9?n˾ʵ?9D=Wk?$b^R|`)]8oP%j
+k";dͧ<w‚0u ^/e9Jwnw{hЇ&o2¢f9߾?X
+A {H2 {, $gi hZ0|߿}/f]I!& ~ kmmKfN
+pDΊElN_ڕv2"B0&^L,x;DgҋA3}
+1^Ҩ ndz;"u 
+cA`HDĶ,Sed@׬MIӻN%)a^
+o @j 26/, v u=P
+let ZS ¹E zKbA֪=[S0c%iÞA!)7dҐ5J}=ݳ'f4vi"$άaV;A(yw[ ~| t-<{j22a2RqG֨2/K OW / ZsK>r)}>igT\Uaƞ[ǴYTV}_!Y&\)T;\ztਸ਼MjAUKuv_QT~ΟJ֡+Ȏ anyi))T0{ȣ(^f 4Cƛb`<׍Bp ƀ "6f5]UlH[=ibSu/BRqCc\G;\pǓUH4xBM]-.8sq3ߠju롦91gF}N@vr &pFhݷm(]3^wX j(^S\ yS1O2 |.Ȝ`y9N݆>v0A.InC>֑=^ކ3J~A'|ҼQvw6G~Ia&=vb UU>n)F؎D/:nV*AJ]/:xY8LmCJK 6
+iwxde;0a_ }܀LѕK:m[(E/7b6%8Pa1:BlRt[v>>Xfd;mFWR8`uڦ&4uxpa\$ -hS˴Ļ/?3b#Lr(WO:2_&^ܭIDo $4⾂6\r~4M;4cBɕ~ zA"
+Ks8_DR g<6Kx;.`qKv2W_H^HO?D/;m F /Cן|Ѧ{vVb7`g D
endstream
endobj
852 0 obj
-<< /Type /Page /Contents 853 0 R /Resources 851 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 788 0 R >>
+<< /Type /Page /Contents 853 0 R /Resources 851 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 791 0 R >>
endobj
854 0 obj
<< /D [ 852 0 R /XYZ 78.37 808.885 null ] >>
endobj
-851 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F29 371 0 R /F20 378 0 R /F26 400 0 R /F23 375 0 R /F53 638 0 R /F15 377 0 R /F58 382 0 R /F56 380 0 R /F51 376 0 R /F40 387 0 R /F46 388 0 R >> /ProcSet [ /PDF /Text ] >>
-endobj
-857 0 obj
-<< /Filter /FlateDecode /Length 3106 >>
-stream
-x\Ko#W1{,k4 9 6HS~Knʞ`ԭz}UEi5/\g!ZXg.ƍX-?\R_RdW`> ǃcR'2>|AᇳЋgހQ++δp>s.>%A(q\M I?j*~DiSGKe[DZ$T\=*ȃcrL/L>fz]xqA"HZ˼P$RF)d ס;Dμ Uz:<,{oo#66)(8Ke!RcCcrlm 9t)9-b<ENo/5FXBc a!i) gqiR6؏X$b`ԪMN!sra}dY8 )ݣ(짜*g@Fh*t-i.da rƧ q8UKc 4\!ʢ<Dcvsm<@Dx`Zv7+N=jW]G_1i_|.~㘑n*W:<9X=m$bz.>qWYsqOgȼ 0k~ߒ.lxm~^˭./4׀3'tͼyj71gc/sQmc+./_ZUDi&^8U'Sk^!Nb 9?p|W$,l(r$$sN'?G c^
- gX{DbK]<|]
-bg˃<0u+&Qz$A
-1Tbfdi[i컭4svn;T9T;Z*;4SK?RuOc@}ߕfT;0PҘJqOl;S@}ϕf>Վ9]W9T;Zv\Gf
--~[i _]iS+͜v9`J 5ԓʾJ3jGUaqL䂫^i3]렢wZTҔci?A3Rwys
-H}וf?Վܭ4*͜vPfǝ;~
-I5A+$ORAkF3Y"HǴַ%*8"c 3ΌZ\ܘ]Fhs<T֕X\o9uc΁ Y 8bqn/1~Z\ϬI~Fg{,F[<8scYLl|kbRZ,^FJ䅌Z@L
-ݽY^"ﭼ]{[" X3 G*ppaZWS\|T}h.a 1nKR00Jz|Mˡt)>_A:FWtj=.UOt0Pqͨ ND=@@y8m#zp>w&<'}:NЫ
->&t:eOb4>m;L՝>wTPb;x7;բR^Kdoop~ҚYC!bSπ&1fo*A&r/sׅ g2~1khѩ3h{-@w@%-s’)i7!MBQ!ʉ4p:IHCRY-|I@E&_v
-}j`){@np ϛpeό
-7h<|~~;
-endstream
+855 0 obj
+<< /D [ 852 0 R /XYZ 227.982 315.525 null ] >>
endobj
856 0 obj
-<< /Type /Page /Contents 857 0 R /Resources 855 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 859 0 R >>
+<< /D [ 852 0 R /XYZ 233.651 303.57 null ] >>
endobj
-858 0 obj
-<< /D [ 856 0 R /XYZ 78.37 808.885 null ] >>
+857 0 obj
+<< /D [ 852 0 R /XYZ 196.679 270.767 null ] >>
endobj
-333 0 obj
-<< /D [ 856 0 R /XYZ 79.37 771.024 null ] >>
+858 0 obj
+<< /D [ 852 0 R /XYZ 196.679 250.573 null ] >>
endobj
-337 0 obj
-<< /D [ 856 0 R /XYZ 79.37 499.028 null ] >>
+329 0 obj
+<< /D [ 852 0 R /XYZ 79.37 203.863 null ] >>
endobj
-855 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F69 398 0 R /F15 377 0 R /F56 380 0 R /F29 371 0 R /F20 378 0 R /F26 400 0 R /F50 370 0 R >> /ProcSet [ /PDF /Text ] >>
+851 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F56 384 0 R /F58 386 0 R /F55 383 0 R /F66 389 0 R /F20 376 0 R /F68 402 0 R /F48 391 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-862 0 obj
-<< /Filter /FlateDecode /Length 3320 >>
-stream
-x\K$ ϯ0ZE p|doNNCK~WT]U-5G)QQRIdޫg߼i99A7}0`^! L>N?>Ii旖wV{Nfz|LJ &~^>+e C/9 g~m>ӟ~ݒ
-tNЃΉLi4BSA'l 7I`?*z !ZE/ʗwCY.W={Y]3M|~meQ >F B8[KC%3w[yS~<(C`X.ĉ-tGUmBJxD<oR(+$!Yh(@ t¸4.=9R|a&ȃgu!駏Llh zMO3
-j%B }uRwkݣߵ{=#"H߈a&+u#FB5c䨅t>[ نkɈH{Fd'D}I`D
->l@ܕm uMkP)Qd?lRIQ6$Gjqh*m<pV`~1y'BU%2CX|NqrZ!h9Rji}]B橉?6
-t/A[^u0P$gMɉc[kt---[HlDHYkkXrZdY1i, Ixm ZlsXN)=Bc*w3`H4G¡iecٜӁh u 5JܖˎFf,/tC/Lodj|_ԁ[0ArB(Wصk,v-˺1_sy║V+1*e-1_uF$ ˣ—p7q+xӎLސAJ# q[/l)Q[7sD]1Y uvte*,![8U\XuV+Kݞڛ]~[F
-qݥZ zd{ O;%R}CR-bwHUI!ֱK';M:^R.omzdiغSw"@{ZklvMf욷$-{Lx-Lm2%MM⟧A;6h)dnRl•z69s'SԘ5#plXiB|OiP{?F$}=4 O4b&#Df/7M#]y39FnFwܠer\k)qnkm< WY_Zy? 9/990'r`|く=)p= 6Sej(0a@ {9;5%'/Ʌ4&i_$! 4aO x͝gSLTGA;C׼P!5n3xTvT1؆S(>kìnT, C z@d_0 j^P~)-l2j_yK0t$N KO0 s(9ܻlĐ[ekaίM0I ΟyO0vI bٙWaʶ˟.O
-F}rZhnۖ؃mXPp˹;2l;ܶ);2an:Q'@[fd牸}$y"FBy䗧1rT A<Ε:}YR=Cku&T,OB="8<t|Y_j/fW o&Pƪ' KT<*>{yB%~k`"QZ$a-K#p }. Uˮƛ6^`JEMu+;jiW@|7ʖ5ٕ_-ϒUƋ~O6dV
-ǀҗ-M֭nrn#?<Y6m~RV6,/9sƬcJA!جD ٧*"Y$w~H-O&S1f,usu
- \w/m/Wلo ΊWH4KɛR;k=f6#ȬtVq%9𜅯$qTUq+u5*d$+uy9/sJ/<ݫZ^, a9~5zJq2[6!V5PPkf1 Z-uͶmeRZMI\P[{FB]lŜSxbZj
-Xka.꼸bq^ [*eX;^GoW^ <Zt.5e+# UJBr}a .|*=,S*rs@hs5b2CbUԨ\ŮKܟ#)\>Z{V+[|n*Gj}ei/P\S*g|g58TݒɶGgy% ҝW6[!Uo,pzm
-a}XAVZ'wТT7 j6` 8ת6B=tAX;5j6&w`C
+861 0 obj
+<< /Filter /FlateDecode /Length 19506 >>
+stream
+xM$9%x_Y+IQ{)lf@[+BROH3w 33*)T%{z_~O_ÿ[s|o?82[iPJv+_ܟ+R?o<~f7?WlwweCn n;¹k}w:t~W(w+q}{=nϮ{Owү׳>op$8dnNM3\B]/?6W_==\glXqXz5|jJY|Ov>*{jr%Ϯ|f=uvx5~fq#+/v|/]R>mڕZWW??kW^ 36{oot44Vz?~^W釯o7"5ПcWLK=5v˵ݽѧq\\W׊.)oJKh$BhZ?h2o9e.ʽVB' w򫢉|(Z48h]4 漻t |W4r_ՙ2?ݧz5ܫ_M;b~Irtx7uxLSU~ߨĻ+g}Ms~7*%OPg#+QIpկF31/ <-/>j=OiL+'^x\gϕH(ݚG=~JP~fy;j6jdnj<u}EQmǁ45{q@ܧ~qV/_tkWn=ҭ9dsz[J ŽLJgOAb:_;nzf}뾖ƫN|5J&r%RMw_ 7+)DRgNW;dbn$⩁2㣩|©^RxpW辸(>%s"9l)X}Y>|>zV>E^V<EV"ՇOGOç꣧jSd))Z}yY}Y>|,V?E^V=EVϞ"F5<J{q6pD]EwYJ/L
+8kon왼RWEym]@1ѠBTj絷u~{~կko⍽4Zd\/r+Hw߾H<.]Wn>֨^y/M/Jιֱ#]L,'N{r2W2 rw( BPc;]O *^̆RkrFX)&jQz/GR#2з`PTcJCAci 17(9
+!S!/R4FǡK:)⎔IncΔUj2#5Z
+dAC Cxy
+AB}tpA4L^T .ƴ`jx'O(FJ0l^{Ųcq%r"=r bXfZHwhۅ<[# F 4 ƣ.L.8ґ]ALT F-;)vAʳ
+=h>a< >;Z<Znr*2v_.`!+"J) ?utM4h *ȱkԩ[q&bQ3 yq4Zm#j9NYmpư`m@5Yˍ{!ēXQN}*
+0y8DPѐyv^t
+y)q=e~3S*}y6 58; H +M;H "͖YTCJĆw_L6~ bE3 eQ*=ӃzB 1#-m[u4UMeb_ LFb:t9lS
+MW&ft@
+)LW
+i2,йbV)c:#SCFpeRi鄬Jp.l Fш&,e3&*i+@<>Dz&GP F'ZRMWlSj.%b&Vdj\X$&**]{O gmuYT
+?q?sғUMeX XP͠@^mb
+H(O=}^WPAzlahJ1+@0n"8P+r
+&G*+Iw}脂p<C.-CR8\!a\3W%)yT\LK )JĆyk=^Fo >/ ]POLXU6,yG 庩UU'J)i`Vh*,ʅMT4ЏT4^7p.&2(T$4|U¾Հ>ũʘ#B÷yFꦵd fS G(iRWsU@l&$E0DH9
+dZPQ2=փ_ZsPx[kތYT
+dD)ym3DU$5ʋZ8,CHFr)+WHPBuYf/Y#0M#a[H4PZdP2
+\il Xzccih,e=m3-(- Z>w`\ &WV)DG*$O$GN D<oaiyu-Rr4B226wR\ &G; 0nThB%"iGj x7W8_ lص6 4U*)i'M@ʅL3_T졯J`ųyTS#`QQ
+%x4FfrG^?æW.~+shk䉕FQkgR-+|͜^) 03WϦvF U& WY5ژv+{ rTQdSVlYm'hK8 q-
+g>t?oHձ`rl2 [ub2/eڱr%ؙ:2/JgDzR*7JŰ@p<.%^6 !,3_߳Tc-l}p1 4h2-qYwwmK0XI Fsij;cJÔJĻ\p޽!Ǚ/φSS)U, Uʏ!K/
+>[<vѪ8
+@?5**3ݑ@[,|tc}g@
+ ډ;\ᢣ٩3v":
+QbɟE6D҂>Kp;Uԅ%΢
+4 \+
+aۃi Pxb[ҽ_""ÿFo,_P.\խeZ2!Å@כ%_@4Kj0?@08GFҢ8gߟ^ٗ5O&f.`4d4mv!@VQCFhYDGgLCTGSd FWhW;J⇢4I:?]_D0 43#@v o@ijpR
+>;4Ev*h K_yu<h^}?D,
+q#yg1l4K;U~kCN:~
+h_浳#);z=%姈Ҫw{~ZITtKi"l24k%?Q[dkNNgnHE({؟ Ȍ\TJt{6#ѸHo(`FsQ)".畊Ƒ>/.˩@qhq K~*xmJ3_]'
+U
+2k9j;ܖSXOǷ˹@-!e<"kA$Zr/FɋX/PւXQa)'&m-]JX ⸈xl fkA3dSE!e0ѥ1?
+ Zna1bM)m%P-X oHhoP TJQb%ޚaJSZcAX=CbM)` Ʋyij fAƩGG=UE+# ! P#np~(C![b-G6|ۊ$ # 6_u=Sf! RZB=^˻J,>E2c؋;k}x4 4*\,
+hփ1~ڰbK!"6Z`>0 G`uH* ҏX3
+GK@D:`/ .WB AL R`3x *=OVlq/KUqWQx-]?N+'@ @x_ dZ^9t))
+NJjN&2 pu[S
+RWɄB 
+Q;V Sa 5Egݫ?Pl}P#qWp502`(5@5-F#T83;,:QC Nx
++TEpRB?P>/A/<_.
+
+c6
+; T
+@(wS˫6δ*+dC!Sa GE)ҝJahXF
+?Ue&_T{{ɇ _ ~yn- */0Jj8BCSQܬփV'J/&Va6?b PAS_2e&j!ã uMu2V=c^w^A3}7&T\ 1h64gÛ-Cb-erju+j[q|井q.]8n}7l
+9thXʉw[q5K9n}?r.-@SSȏJMfOx<X7.¿̖20 h8EAZ+?-D1[aM5>8 Z)ڕe/Z[u l#R,Vrc)06j~ Z/τ@hc3Ѐ(%~ g uS
+V,Vvl^ð"[`k;1GfXy8_i`b\zhxXqȁ74Qxr{,ږXMmf\6v \dh3?(ٶA@[ڢ}QK$E<?t7ҀӸ6RI`FX0Rah(muG1ĢVmfB]cH xj{
+S/C 4U$
+XG%F,npxq$U}v\1h+J(1 BiKҒ8˻d3^A)Qh3+0QM }9MgAciҏښxTVG l ?+cY"8ۂԘQ 1N\L
+4S CĒ*6`KQxUEZ.pFc>,HYU/oN<žO(zS- pJAUk6)\l,+Dz ^b%4C<Ju!my@Q 19*4UP۰ť?#vΛP*VU_s|вW:fJF*VCVF P}.*hc4^Y ki>}^ _G <ۊW,HAJ`.*?)&-
+GʦVn՞: 5M[ kQ
+"8ڰU~s]XW@*X
+ hw
++XxP\{"?hJ-~" 3,tԨ Ϧ~00F#
+p.ƲM+
+`(l M rf^<\3e0h
+^ I"!}P!0TX0SR炔u"k0h y{~8XS)# Wع(ʓ$(}0-'Y)AS)zAJĢc`T}zCJ'o3%2t$g{̦ԏBm rXNQsd!T$Dl62ܿz2HӏHT03`Q3d[3cjcjmJK߾PkNf*g騉 M ߡ`M1<" i$Rgғ(Tn砚1Z[d*jReJb(yçr.2o56$R'&;huϬOl]+ 36h*4H0njnzRPVa#|O;Kp Zr㗡QwE8%yaĹqԲ,TXQi ߦ(aJCJtnlX 9h^c_~?N+K7Zg#wD$g(5>chAKxG!A*
+[#x >U[8PCtG6U๩^sPDS(M亊w F5[
+"å%~b?.S.h8#P3C6uz~_EiBV5\Q+݂į27T;W +jp8Aό, O%?eTȳ 5Ek W4.:[(N!#10&.!xk6POM(+u2
+dQ-HZyj_.:ug+<hM3CBi)p9HG0\2,Cz!4y-2ꊮo"4tD>:F|s?v=MޭE WJ ku}Uۨ~ڠ7xy
+AU05sf218PcV6DUCEVx(d1ä;bݕy-F~JÏL`eF+Z%Zxsi_0uPʂ֤;#=ty(^KrIoWW bQ3 X
+r\rR!#1O#]VuKn{lMn?uBFe/_# dq=IP&*f:ݥyNԫpI|ڨ
+Y~6X7'˯@V40&!c!x@qSQto:bVe"_MV~P7ͭB02<#?z" RJ>a׼OD&hI !v3p'f3IS`Jhb>ez,NK '  mŒtɪj.w+oIts. f2R>*O%҆toTdlKMA4𾉕ňE]?.&&O6*p&d湫827bL0)w+VEc1{g;ŬXTRb=S%F0&\ׂRSP@) 6obqI }z@P`bl>Uz"\Wj'y4C.,m*)޷?C$ |ٛJ-BSəAXU>'z%i!R-S_ ]oBZ$8W0&h&p>\.©oi H "W2 HG
+ƻyvB}AxflA"Lb.ĩɰ3`*jdA-]'*-r:PqLoʸ,Cz4Zy(hcU>Y;g+ 5 ;=!Fݑ vee@iH]/i^Α tٚ5>!p 2|ʾl4ugCtz:h^8[ tm:Q<Rj&@x֚?X.h6F.AO ZK~GY]!_Ȏ@]*_(:?A4F^{?:_ bzKu'\3z^@oF1f/#]'{>] PV
+h6D.AK#OVq\N 2O=CGƚn~<`ec$\z`@'L`xC1x q+EBT#2V/=]A{TH3})&
+9PȎwExkRoF~{])f#`4$~"34^eBTBvzX>X
+.h6F.AO_Er3c,ue"<=y,'zsn?v˙:MH<["FtUhlٌ[6)(gЇH|Pn'g6*׳-ήQ gȧlUlD~4M"5(&)(Y//i.`qؤ<kOiv<Z,>{Q-; F(c}GjPmʶߋ ֏-R< p
+t
+dACh8q2X3kF`bYg؇Lw>!uW.i`Th*
+,JĆMLeBPw6)$gXU|
+,oK{JmLBS%bûS[>E@r5K +2\,3slIpB[EToAPE_ \gD Qґg_#:&H
+`Ep4a׍9H J1MlmB`
+nMb+pZvdu8ĂXMuzN-&lM`@S7oTLsfODVm[iz}F%866;ܺYR3!\p-
+1ǂQ`
+(V ('#]O)pnݨeq<ly8h^ZLj1V#)$n
+ҢU|+WQp\uӷ$Uጠ86Zk`vrr֮@&8
+CDQxξr)hl2uJA~qoe+~˜t Hiv^>/f|bZ7/`ԏS*Vy BE'ZCؔuUfHwrYR{8#4/Ձ[mmƬX yYVrHyFEwF|Q+Z1_&#+@xm ۽o0fGj!pT]Hܝ}g`(hh/=)
+wϣ/Ґϕ3ʫFݑP)$祊O^l3~z}v4niLµ)
+dR\04Y. %*NL @ïvoqJtWdORNJךj$xV M޸?a?N\%?6 |䴋 侎ϭw\l ~_4],=#jHn!22I3g}b663Fĺk 7;h*.炙l,!!܃>bTc|`*9x򁅾)blb>x1N}g|f`BP=#+2̌?
+MhZZJx4m$ {4Sf,%S3Oy3lRX0Pj 1GXP.}YgNX&/RgƨU$]p;cʣWLgx@gpoRmh5֘_Ȗ0m Gx;h} 7å$Cʺ->d$l76VMPA*Э&ntʄZQ.iV*qg.mnr1M :e`Ԥc \PZy$\6ەy":e w&+n ?7wNܜI[7C <Rg`5^i8qi J, 㒢q4`M kL[ D]} p_an7/FMk¡jibf<
+i?fLZ)AQvI)겜F\\Vx0bԸkTh g*!@?X*=GEx-z`jkcv4ֈd
+a'v~U
+hwd7(/dŏޜ8XnKӦhYhuC\\ jM h Pؿ|
+l>w%5jFJUTLW7 ~?e3;y,4%u!# evJOf0`Gvfd?b`d豭v#C0"0/`YQ֣`P§ p[bß[_g/HiŻ2)8G~a5]{("5[F?ΡkMnh<";"UaW(yPQm̳}i9q?emkcmѫʣ[dosf0ǁɈj˯Ŀ̳_lu$=kƒ >+6'> ; ^
+۷$1=QWEetoaN=/twv`|^~@Ǯ2;ɵގ )վ0o;DG#)c?S?W|Qk -k
+^mqq)i
+'YZ R_S
+ ޟ{~Ѳ~p/?>8gHc~׼ǹj_{{%kf(wzO& _O|g?mjr"+)o|o(϶}O[!@SWןǂ
endstream
endobj
-861 0 obj
-<< /Type /Page /Contents 862 0 R /Resources 860 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 859 0 R >>
+860 0 obj
+<< /Type /Page /Contents 861 0 R /Resources 859 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 791 0 R >>
endobj
-863 0 obj
-<< /D [ 861 0 R /XYZ 78.37 808.885 null ] >>
+862 0 obj
+<< /D [ 860 0 R /XYZ 78.37 808.885 null ] >>
endobj
-860 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F50 370 0 R /F29 371 0 R /F20 378 0 R /F26 400 0 R /F52 372 0 R /F41 373 0 R /F53 638 0 R /F51 376 0 R /F15 377 0 R /F56 380 0 R >> /ProcSet [ /PDF /Text ] >>
+333 0 obj
+<< /D [ 860 0 R /XYZ 79.37 290.692 null ] >>
endobj
-866 0 obj
-<< /Filter /FlateDecode /Length 5035 >>
-stream
-x]ͯ#9n{Z}
-S[b,((~(Â*`xD8.{y˧Kfc/Wx.a\hgܠ=u$0,
-0
-]kƎ5gXL,q/"$)vSQ"ND
-˅A!6N5EK:0zʜR
-.ܹ_dm$kZ
-R7v)Q~G]̇/j5x\23 H
-_M5 L
-EDE3ȅ>eGkbm%s
-a lQtdMd MJG G0D
- /D R~D˿t"tkឈ.Ŝ.j}іi>n@u5;'? ?zT;@j HJn {Xu&V[\u4*^t:(ph@5ĭ3?W^'d\ VZAWz^&Vϕ9|Ros5ʏbiy\k cPTSG_
-1upj8 RLȉ]J(*,lUjy^w$@U{ݙ[鰦2ծ
-ʠjvF]\;"5+P`婮Lve;DAWF$B<!7rrnK[wq͟ C*ZepuzV?AzKUJ >owJGO }g'؍N7^o'n<Kc෨MrtKq+ Cvv$=7r=7ZOF<i`>w7(Kp4Q4[Rn
-
-V{$B 롢*Gͺ d2f
-驪rlҎ󘨶鍟¤r<<c
-&-KOmxۄo^D)$41/,v'f{p8Vyl6Bi6KS,Cw(ߟs$"Sˀ-z?wXRz@ hߗ0@&C=aՑB_&;,kQG/S~~Lm:R<f ?+E‹y\xlNK}L/'5|nJ.iiך`Gu']'[^mgo;nF/ӲLk!ݶ,뵖u(crT?[>`gz@ռ£3#O U:lQr_$9Wzcflf+cz
-w-y7۞g5ky͏K~$k?W}5bXjfsK3 hгp4u S*~*ng
-b7w>a>A8F<mf%٪_F>/z89*أre%FA:ySj}JQbE-PjܷWc8edIIk\M`*R-ܞCN[Ù7ktچ Ծ _[mzƿԷP]vXZ/4e!_hQsEgX(5%Y@fk~Q6 I;VCLa8l-' ZM;F~; bP,ZD@У_)x
-ooakƨa+lCav6cHlj
-zK
- ]v똥p/"5e#WVW
-n[bFmͬ)#t:r5RIBݱbqL_ U?v<A'j|!y8<@W\>lOv<tH^0=d8
-:
-I숤@v }dS,շzl,0a0\}=B*$2Tڣp`_|<0@ŧxYǓw|ݗQd(ar KXn؅%\r buBi9!#f 9Q~Q̹FO:+wlڎgݢ?(a4]s5ۼ߷vsU?<2m[g':GO?,
-endstream
+859 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 384 0 R /F25 375 0 R /F19 379 0 R /F17 380 0 R /F20 376 0 R /F15 381 0 R /F16 382 0 R /F18 377 0 R /F23 646 0 R /F21 378 0 R /F68 402 0 R /F54 374 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
865 0 obj
-<< /Type /Page /Contents 866 0 R /Resources 864 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 859 0 R >>
-endobj
-867 0 obj
-<< /D [ 865 0 R /XYZ 78.37 808.885 null ] >>
+<< /Filter /FlateDecode /Length 6089 >>
+stream
+x]K丑dD
+δRL
+c%!a֧UqPI1[x\[pj8żڔb&l"~ScXz IP,M=cM`!l]8Ŧ"0Mh. Q}m
+L7}×,gϔÍ$w o;W06ȃ_۔~T["i\g N(Ƕ.DU ώi.Sx76??[TtQ֐5!(wU3;WC_^Uq* CEHζlшWtvjϿgѺ4[cs{pB7WvyVhYq0$A*t {[HXj<z˹b#k\uM/\WSCj+4ٵ]vmpqWfV!^+(`3; Cߐ`dҺ1pr8#\0BY@^ 'u7\Wpgc07gF}6p kykҟ_r<3n7Vl>nz1<0ȯJ`l؋ 'v~7W!V2KiW%i6ee<^ '΅v<^$4tAz#'/:rj|f2K,8&Xfm~oxF<Uʽ`AM#s۪fqJO 1ҋfAKlP7o ~'& !- f!ko>Mof}:\Ү|Z > ͊:ds R| E+vYi}A+v
+]i~@şkf
+]i~ )~gLzvtx'cF\5 Z3n=k;Ӄt0ogݪ{n;=wIrfCsmsAt#t.m;ސ&䭗47--;2[c1M;ސ.h4;M;ڂP Lmkӎqyր<;M ͟ga*͟
+2iTnTeFj3 9.W;eL~"5#N3mȋf@'э6+z]R>UrR9 C%`eBmνB"ܻNf`ղ=,N^K2_!jʑIaD3>_Dt3d3QU-rF8T5Bj/!T;3‘$}r>8R1JAۊlprzi tqzq$f%))
+LAG+)G X^LCH@p7Н+EiPղ(1$t;N+F:>e$4 &d_UR$1vL mE˱lj]fj9Zl*B8Ѩyֳ6CUO3}fKp9#oU%7hp!=ZRW3%qj~%ԼE k-KłLNǬ|V6gK2${)dǙM2n 1mChTîԶRɣuukF h1aY]0na2C8hzC%nS.~EmlP%s0eXIQ25%,"|ֈ%c:k@Kd1di2eB1pr6 (a/A`
+d\!k' 4~hoaLƠS/vaEVI^bęL!D2!KKJP5&q#OTfh pόlU^>!Ә!x!F(!
+iQY-b#VB"sBWfתn1.bwajvL˴
+g(8ie[zEmSjAM JsJ.gψ[D{LZI,/,'O|K+>#&OH* f H5:x"!EPjHxlޒaXsK^AY
+'RNjje[=m\c[%9 (^/p/
+]ISu+B7u]hݪ{/F"#v&mGPBفT4 ;2~H ZP葆)~f;z`@U%O,r/zHh=vdf|65*}sK0{l627Y¼<RTۺ F}ߪ̗ĖqTF0*(j;fiBّe|
+& 8{*%45WZO[')=׏Чt@@Q~>}L68pHp1;/Q3|}1Ymo=dZo*9i3x-δcSC;ӎ9r:3<δcSCgڔibVi3x,V'δcSC;ӎ9r:3<δcSCiݍ96!N f ˴3;δc9}L;d?%!;3;sڔiu`X0i3x,V'δcSC;ӎ9r:3<δcSCZ=yA{Ji<dxnWDVk1+yXtҬ^4+W5H{yn,;1ɂ}ܵIhR5~gn:׶!{@rz' ǛsmD {r.MM82o=45--;Rx
+
+^AkW Z5H{2Q`:饉n4?4ѿ&&x-siX Oka,&~Yµzf9ZHJ `U{RHؓu{e׊ai㲻bAޚ[KXo%^ \TB[*L"ebOֳz+zTF.(dc`R/ T}hZK&鍃<z&J*USo>&
+:IorFk{KM5 1C3ZCƻ5j>^Q f'wTYK6A<g:SɠqŃH1vG_V*:;1 E9>1V @'| X}Vz`|Ql8JϹ>Sj
++@&gOybdE: *mZXC,!UA;z"65$n+] **gKZە3.RA..zIZ*RDGVR'|V&Oaqb[,[<奔Ho*w wIʷMUkˊ]+ye)/%9nb`tBSktWSm=o~eYzY+LN+UNʤn}b
+endstream
endobj
864 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F29 371 0 R /F20 378 0 R /F26 400 0 R /F52 372 0 R /F41 373 0 R /F53 638 0 R /F51 376 0 R /F15 377 0 R /F56 380 0 R >> /ProcSet [ /PDF /Text ] >>
+<< /Type /Page /Contents 865 0 R /Resources 863 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 867 0 R >>
+endobj
+866 0 obj
+<< /D [ 864 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+863 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F54 374 0 R /F25 375 0 R /F16 382 0 R /F22 404 0 R /F19 379 0 R /F23 646 0 R /F15 381 0 R /F58 386 0 R /F56 384 0 R /F17 380 0 R /F48 391 0 R /F50 392 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
870 0 obj
-<< /Filter /FlateDecode /Length 3906 >>
+<< /Filter /FlateDecode /Length 3124 >>
stream
-x]K ϯܲX0L{8-i!q%?TIRj{ CS$E~") ]~x맧?|`jqiO ޠ [#,F3B5[>}^RRRBo/pJX\ih
- $6 
-5g
-6 t OPhaxrCh*rް#ya?"EVr~)aˌWɻs4Th%Ž"]ܻ9Jfc4v I9'J(/Iz6sܛt"՝n"R#STJ9W?WcV(c3;t`K=zٛ-׸gaf!JЎ'&jP 6X f &k-ϡ&` F+&c D"y+}
-tWݰeKZLXSfgW)'^KD@"y8JoFTcL6M6-qR{9Q+sͰПM{kslj4OȦy&My5la;Y8
-AUJ^l.W%|A#U%98.Xs*ڕ 22Rcs,#JMc-9;ꧽ gڪ~ L<ɼ
-@E}z@J8
-eM
-knkvvq"ydH^
-7 wmIm$6tmv>$[e,q8gwEߵh@a=LCI#'hY*{$OvH$6FZ?2Z׍ih`AVm;
-h~\@#ɠv m`pZ. -8.};!jxm:/8WÏw{~|&'c0"Ǥ&1{` ho=O;` xLp3~VCKuϓ3'׽OyYyJ-'(wy6ٔ ~כAQž06)Xw| p@Û#RՈ
+x\K# c`DA#x4HvArH&C=WrLmW>]"_ޏ-B0?~XϤ]<[~ȹΥwǹя>vBhfl,B#?x<H?+u+㓬Y(:pz0j`řϜO(q\MҎ R؃V;&I?%{,\N$E‘۞*5bV;'@}pZE7l
+)]3~9}3͜;0Hihr14YT3H3'?H5'h۫Ls1-~qi _4s;os
+*=y5='™4}Ӝp0HAOb8Sni>A7Bsik3SGf9-~yin;0͜;ZLs^ϝ;~
+>6JX4ލAjQ Q%R[`8X?]@iͬ-͐ 1ĩA3ת*D+n35 a3UhK8@W `@%-s’+TJ񛐦$$Ԧp:ibICIjljk^|IEE&_v
+7u`j
endstream
endobj
869 0 obj
-<< /Type /Page /Contents 870 0 R /Resources 868 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 859 0 R >>
+<< /Type /Page /Contents 870 0 R /Resources 868 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 867 0 R >>
endobj
871 0 obj
<< /D [ 869 0 R /XYZ 78.37 808.885 null ] >>
endobj
+337 0 obj
+<< /D [ 869 0 R /XYZ 79.37 771.024 null ] >>
+endobj
+341 0 obj
+<< /D [ 869 0 R /XYZ 79.37 499.028 null ] >>
+endobj
868 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 377 0 R /F56 380 0 R /F20 378 0 R /F26 400 0 R /F52 372 0 R /F41 373 0 R /F53 638 0 R /F51 376 0 R /F29 371 0 R >> /ProcSet [ /PDF /Text ] >>
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F68 402 0 R /F15 381 0 R /F56 384 0 R /F25 375 0 R /F16 382 0 R /F22 404 0 R /F54 374 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-875 0 obj
-<< /Filter /FlateDecode /Length 4928 >>
-stream
-x]K WQ>LGVv4W9'ź|H9Re_>@lkw%Mh5 |
-b3*4 1{CIf't\a׷2BuL~4 >EEкى) 2^zL®g $j$
-
-jǎ ]<=igu/X.!:_7im9}?sv0>,1)_~ܣ 2ym -FMZ?ubaUၡT:i ysWH1 =0\"!O Wp;cΐŽuvrl[i
-ZmPG TLL+N:_0XRQ_ʋ<,,EB@
-B&M(L=ļɔĈbjpN!2] ,dͲrUI/|%#,b6Ͱ d]kR
-y$tY%(&]z{w{rd|',6pع1 ++@ISI3=)_L%B%B.
-0+R5M]SeB{](ZUO>8VX5oVݘ]*A`zk$Siu΁ݙ1sw8oDFQZRҟ#Wέ|e|髼aPS*͹hjD&c^z؎52u8Xue6E6;׏"(;
-b -L t˭$Lc}Fm''x?b/ҋEWg]C[Ӷx9aGI-> _JˎJkVby;$o\?b/UBznH0uj`'˭=I`g[GB$>K<x[
-{R NT ӕO:BR%F"YNvɏ3}ZVRX"4$?
-MZm3BqT,`#jˮur6|7Ab'vÄ1ca5"VZL 3x[HSV]kÏ\~xF.[ҺG/ﳹ
-Mx~K"^6K$KEm[.|W4TZuf,F0"
-a8*h+CG&nKb,
-%7LIj<salaz uU 64VJ6Գ~_54$mզ'Fum+K#o_W_Ԅ۬HR5P0f'M
-u+ :C(4̤
-Ot[\4$)7K}_f(g<qtƺNvԸm-X.;p\[lUb’c|Դ>TC:KmfwX-s'n< `pQxg15qM+712y%/B22g'+L/<y@dYrF ޱ2
-f]6k.G( v
-qv3Y5:LU(Ys7W7ʏ57gE2V~ ]G˪,xt$*lW \faH尰($SS5:,4
+874 0 obj
+<< /Filter /FlateDecode /Length 3332 >>
+stream
+xM+bz "Xt6ڽ=hH/ff,M$ER$EjEq'N{/(,sZ Ob2k1O?>qnڤw{&xxk3e^>ϟN~̗3<O6ωgAǴB?e~ϗȓg^\&>h3ǠykaˁHm|g:Sآ5Zt5<CMB\25N1&\1eg/˼Kcc"t XO`ENhY3%C{\ts a)aQ ٨`"5_
+eĔWX 4~\ѦX,wA
+Ƀi]>I2r1 QW Qw1 3#D:oPg̏]d{os ,QNOw-h(ӿ53Z0Lyf4%‚TrBQ5mp6g /&prAM: =R T8B5Z (CլKN4!*י$d19ѸK`ƽKCdW#HىRYkD 2\VdȜذ( Zd+CMZjXĐ+qNڬ 1ĚEfA׼}ެebl&Պ7Y
+rDږK_(i R{%}LqQn PSb Gnl\UXU ʺ
+K>_RyJ}ֲϗ}>_mBpݗsKk;Y [ʹqGސ)4EE 8m$vh0H'X-Q>[I7컒8 Ue;_mϔ]
+Ǣ\`7Rrmg{R%~/GwHYi=-WɩOG`DhrqO :3R'uMۇb1M%uJj1 }5pP^<L2m&JONP Ӹހ)"
+C%wGr#ɧ٨ľG ݗ`rFӑ`Z,V9SG3̡H}Vno <a505Ck 3i3Bv;$aLU4ut"
+T7' ضLٖ)I[~6eƦN%EB#tfAh|HB:? փD.Oa4 h;!'L2<~"tj= 3TnY~arIE<RB)t"^\\t9+1Lj8Zx57 RA;NK#%/OK/i˥ǔ^s/7uƽnA$*TZ4;rWz
+.\0Iy$tg_7w=2<o
+*z Hf%h
+߲e#!B4o 4nTufc67Z:L42%
+ ϵ FK,:ʆsFr@:BmɬL{iyi t5s=Kaf0\5.zs~ym+If D |VNr5m<y^LύLqcIɏ޾]02"~[M^~^H0["yYSzJ +^rW;\j+J+rs-X+t5O`-
+(\WZ@ŭH#crprAeq ]&_tgSb'o
+Ÿ􌗿e:Sa,b6<^Љ.|(ֺ0"m*M)NnxOV㒧`<Yd۳Z(R
+;~NeZE՝N) 3(Bpc3?6g<عzi6h=/^.א-zi2u+[!g6G=;5VUH8M},yk~r̃DtvIx=fyY W13ʳ <-Sr`wj,5|K.QLZ5|Ȅ hv(.$׽ecۅĈ/g^\1K9RtpFn3Gw8#tW(݇+iE(u9%;o@C7 TH'al|aptڼh}Sfpt{zSF9sw̩ҏ*h̩-"
+0ҝZ 6f pƘ
endstream
endobj
-874 0 obj
-<< /Type /Page /Contents 875 0 R /Resources 873 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 859 0 R /Annots 877 0 R >>
+873 0 obj
+<< /Type /Page /Contents 874 0 R /Resources 872 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 867 0 R >>
endobj
-877 0 obj
-[ 872 0 R ]
+875 0 obj
+<< /D [ 873 0 R /XYZ 78.37 808.885 null ] >>
endobj
872 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 276.144 74.213 286.601 85.67 ]/A << /S /GoTo /D (subsubsection.5.1.2) >> >>
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F54 374 0 R /F25 375 0 R /F16 382 0 R /F22 404 0 R /F20 376 0 R /F18 377 0 R /F23 646 0 R /F17 380 0 R /F15 381 0 R /F56 384 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-876 0 obj
-<< /D [ 874 0 R /XYZ 78.37 808.885 null ] >>
+878 0 obj
+<< /Filter /FlateDecode /Length 5140 >>
+stream
+x]Kc_Ѱ[d65SY,&g3?#u*6
+Yt߲MR'(^z_h{w.8͵| XGc(@??˟( Ա֥0&)aBQEGcF@K&rv` /Kᬺϗ,_N\@w2fu
+
+[:pLϘ=,PIJjI]>II;v#&'\EBTR a'E
+EDE3ȅ>eGkbm%s
+aAآȚ8<EBa3*=`O
+#'u7bkf2oD=]&
+9e]& +-|Dkv#O`#@JAw*8L8iU.P5juP4(j[E1glmF?'jT"ֲo5zp5z:xQ~DmK:XkXeW|::"Te_WɾWbgEN5TBQaa{*WӍ3է&ZO7J5Av]y3k+ۧcco*<2m*
+tJxd?N 3oej|34R^ 7=GCM%f-dD5lLt*3R/U%,L)qm>ħ̒_e\ U&A |I|em$CYu-G,Un];\WKQF WUU3:eY]+Oue"+C}\W&2ڧ%qFp: 5t_غh~7XJW-u@ ҷ( _Rrx7J~TS>zZxO<S<nt?čriL}5I]|?ydhڎَO<V!VF V' 41{#Fe &* R 6B0P&Ղyi*SE~f-Qf^%.}D/ DŽW"TBg:Ů~-U[l`j@9cx<}֋)c'`?e-}Zlgb}!sd~S| D-=P
+
+V{$B 롢*Gͺ d2f
+驪rlҎ󘨶¤r<<c
+&-Kmxۄo^D)$41/,v'f{p8Vyl6Bi6JS,Cw(ߟ<8&ID? r;[6F+
+/?aM{@q#Ie6찬EL^81頺cBHi<??nwyHx: g)<@t{=f/~mSi>"E:<Zl{d{K˿mm-(gZ ۡy-=v|r^=Ce3~̞A^կ vY+<J>
+1p]eU,ENPCi}7fvh1,=gmq{-O!w<yM>^{lph~d_#?kワ^)ba/%,ף+s@>o97L*uI._'̇:Lj{?Qϋsտ m QЃ|uAT/j4gmRTt}~ "To"mt3՘6dY}7MRT]5Ǽ?+wan
+:Oy!y[-ǭ
+t⚶=Y8)Q
+ KAJ' C5fOL&cԒ9VuͳKm洉:~M> (%CY_첑G++
+*X澀\6yiJJ.1)dTxߊ9W5$aJuGcGq79꧿ ګ~,yRʐy<_
+|5=dHlj
+\),j
+;WGHwfB(,
+ם")VɎם`1zy읷/^uȚ9;%zgiïNYudVd+9;/ˋaɡT?|k6"ӎ{~ŀ(J*~D4qrd$
+ m Ĥ[o]p1'CߵW_}ݵYPzvq|i]J:ȨBȐ'&
+
+LRBKR@;"(оN;YpbztH`:8!f 8 "Rp'6`n5Qlp߃Я!7[I ŦoHJ̢cap,C
+[%بu 툤v@RB.):J׃TP]6K_.*
+5D0wN3jPyT$V);uvBٔgwh_k
+endstream
endobj
-341 0 obj
-<< /D [ 874 0 R /XYZ 79.37 771.024 null ] >>
+877 0 obj
+<< /Type /Page /Contents 878 0 R /Resources 876 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 867 0 R >>
endobj
-873 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F69 398 0 R /F15 377 0 R /F56 380 0 R /F58 382 0 R /F29 371 0 R /F23 375 0 R /F51 376 0 R /F57 381 0 R /F55 379 0 R /F66 384 0 R /F40 387 0 R /F59 389 0 R >> /ProcSet [ /PDF /Text ] >>
+879 0 obj
+<< /D [ 877 0 R /XYZ 78.37 808.885 null ] >>
endobj
-880 0 obj
-<< /Filter /FlateDecode /Length 5615 >>
-stream
-x]K9rWqFo ؾmჷY;dGZ`2yr]ff  ×w%Mko/_~yiKH `Ӥf/-F<[m \h؏廀:‡NpMf}&y=NbMY(t=|ֱxE4*{9 cKdRGz.{$
-&Eel&\ oјus9[~;JdlkћE̤mW> F >IGN\ǖ(+>rIɼ6m p Y7z06t>T/թȧ/l7qRA_}`%sCAMt]War665GkIZ;3EANAUZVM^d(|K X.JO֙cEd?/x@ݰPܘ'
-1
->qe%ehmUy:rKII,fۗO6tmFMi.R2wLﰝh >+w{YKIެKi"0T#;v-r6 ;qTZ=w)B`X╰3~bȽ?{Zq1pc \œ36Gk~mO<r?01(rњ;vσgW#]cJHnRA? ph!qcyb\F'[0\qybf\ fohOJ^p+j^W4+gCIǃwXU%_zkr;jLz$9< 3)ڠ}#=pFcJN*T3h/B\A[#\DtJ["Zx`~DZD $7]ψZ|I-=Zi8fW9E&ޚT$`X#R48o.7
-͐׾&&H"7J2rCI>RbƖwuj FI.%2L
-^3&]G|SǤI4us+sl" RwoMT*a&S)s &)q1_*$AxX]va%#An-
-5֩5h$'f`$YTԠu+c)#Jˍ XXL4݄Z3#-%N` ̋ȩH , 6y6F;L%I$GP)Vעf]zAax)=B)'ٺa`ZlqqywEW%J親QŮw0qF
-J Dڸd#IeV5
-)<4e(-!X`U)[ a[sT1]veP[b \ 갍p("H!&YQ\sR47i6b { mMf{d+W"Jˆ Xe6ر֜'UccgbFB(Hu .ب6U"҈j.!d#I؋eܟV5
-nv)/Ꝓ+WZ6F@j8H6&s>57io65"@EIͪuFjF(HU,v !$9O~+b53dׁ:dýBVN?&u-W0R3.Pb I] E4[)]ەl vl]+Rk0ZܹpK_1FRk<M̊4M@n{pڥֈJmw"^c}b{
-FjB *8b6+C .
-4qK
-vJ#ŗ )mld<H/Ob}v=~-iǞ kCkk[~5>x_[?7~}\E w6ꂶZ
-w]t] >4ABxD?9UQDM+Fm(:#[>j^s~5#JcpI^™)w;)N{_}-a>Ȳ
-TXv=6+J)U`94PdoY@V'Є`q >X;2
-rhUZ,dduUvpk̈́g%AW>VM'`!_;Z S7+Nܩ/.4k9RgX*c k3dm}̯r&PR6d(6QLI5Ja؆ /Xq_%bk&j7YkN)z~⪳s µ)mX-,Mq{`_/7 ->췠(Ҙ=7'؛͑)}xoMA -f1ssuo=Mao[8ܛ
-.$NlIYOk*Y*f3qVF smh8EyFY0'Qڴ|)9<Zk>c *E"I0GHZHZVYb%6$ >qh4c(74aN5WDžc_6F{qrAo
-5T
-J:kNiIsN![:PGuN ^ : SCB6<qeƱJ
-e
-VƸ.:W&QSV.VZ]XlYẜBu;BWf=P 5@ɦ Oښ'gErZi3ph*;9Mی\/ge%غA%Ik*(vW"9U9z%BP+V!޽ҊZM$3MHSx̊-^"
-+;fwo-APϲ$
-\)\)d[|8jsO_Iז,J;kSWZ&23pv=_]yqcJ}} ,`Upx
-?ܼq{tYx { S?/$` މ샩w"0<5<4%3sWU6L}9iyípܽ;΃S۾{7 S>~0 C&`К
-؆/[Oz>74n;LJQ?ɨ&
-ڎ?ǿ?i7ؗUo; !1j=<)fSqqX|h{'Q\˼ݙ?]AK I4z[[/GLJZ-onɔ5p{;g{8Nʔ毕qe [N۝uQșN7zNx;vһA
-endstream
+876 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F25 375 0 R /F16 382 0 R /F22 404 0 R /F20 376 0 R /F18 377 0 R /F23 646 0 R /F17 380 0 R /F15 381 0 R /F56 384 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-879 0 obj
-<< /Type /Page /Contents 880 0 R /Resources 878 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 859 0 R >>
+882 0 obj
+<< /Filter /FlateDecode /Length 4349 >>
+stream
+x]K$ ϯl
+ W6@vlԏ9Q[ʳ%-8j3 8VuHf"~cԏ[,ŭ)ew~3z0v
+jBm
+©/?q.p__W ⼕YGk׎Zgkvl}ZvnѬ\wbOnMiD`2[FK%k֘<mDz16i=os=z%N?2 ":@}[db<".Ӳ~&lI`HSX:xzzV|p=xh>~l3=!JWxr}վH3:R%Vw(ýޘ^C3y5=TmsFurg{Êw+kN<^˻obP1=5|<6>9or}#F}Ez4em؛:`b}q#/7u|Bͳٳğr(EϹt8ri|^+UЖPVur_w4VJBٺ׈"??S~I:kuycf#N]B\Nup!KE޹s X4,o/0?=vo/6RYuߗG6+~+AOwׂxʿtY$-.UXI8w^#y#r7C
+jP 6X ՁgDH Z"?-mpӎ6X
+[}W/[ +HvJ?ƭ׃k1UcOq_&?׎u>'iK[-W3[ꯔ\fD3ƁԦu }^ 0pNT_K~3-&\k"9AmGjl< ?qӼA`4/7KyӼ ٚ8Ii`4p9xK
+##k+
+|5=vyD
+|#HL d
+y 
+$ $E9Q
+2v}l|JB;b@86Wز敤]vDQ`; )}A [#5C\
+շJhQB;Im]StH+q. Ww
+rwcxEص :M΍eusW ܲ}"Jw`N EwNigr
+Ni?z񷃖S)=9,*;G,Eأ۔=
+e:MBB|e `廴Jo̩pb{,Ӓ(G_)ww!1$⊷
+n5n|j+My Oֻgʞu'X\]nڽ8B|o7C d{(qoV$+I<#J)6֯O{wƖ/G*?-5]VMOK=څ*@30Z] ` ]&^מ% kuh\$..w$^^&4/Kf븙1h_Ev7gm%nU.(\p繽*;Lu}铇)]ʷ-߸~ӍDlc*Nn$;b;ʩ ME/,@'xVuX='[vC/||ZK|#Ů0^Mgɸ7ٟ>Mmd $) FE~Vr/rw뚑ROr^f2«5Ђ@s=ƜZcgxBU֊)|KvHb2UD5]Vk^-r̜'[HwlbE8h$*fwchr#afFͭ0ഽ
+endstream
endobj
881 0 obj
-<< /D [ 879 0 R /XYZ 78.37 808.885 null ] >>
+<< /Type /Page /Contents 882 0 R /Resources 880 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 867 0 R >>
+endobj
+883 0 obj
+<< /D [ 881 0 R /XYZ 78.37 808.885 null ] >>
endobj
345 0 obj
-<< /D [ 879 0 R /XYZ 79.37 144.873 null ] >>
+<< /D [ 881 0 R /XYZ 79.37 175.338 null ] >>
endobj
-878 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 380 0 R /F29 371 0 R /F20 378 0 R /F15 377 0 R /F23 375 0 R /F51 376 0 R /F69 398 0 R >> /ProcSet [ /PDF /Text ] >>
+880 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F56 384 0 R /F16 382 0 R /F22 404 0 R /F20 376 0 R /F18 377 0 R /F23 646 0 R /F17 380 0 R /F25 375 0 R /F68 402 0 R /F58 386 0 R /F48 391 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-884 0 obj
-<< /Filter /FlateDecode /Length 10368 >>
-stream
-x}ˎ%9ݾ"Ex;$P(Ij'h1JZj`fߗF;F{V5ΈF×9ew/ŵ%^rs{wBV|9L۷jz?/w`΂/٥Fϟ~?bBPsCe<«ԶX+ms5<«ضY6Gi(yKGi(wy.=>( m;nK[ڟl^.3uԨl1?5Ga(xO<
-ywܓPvNvԬ%-'ukİlPחQǿdge_/W58wf.zW-|YC[B1x4^UK_Q3N<gý~׭Q|k-:!e_gH[}FpY+1E/ejqֻjװS&?4?|R7ɡ KÅU )lSJBzg HgoO ^Z _-U^iֲۡ7^;kt㌍m%0(7b/+Mh]+@-4>QىRomoC=/9hRſh0d"0ူuЧ^z3j0Q̿,y gO4>h/3Q/@E yײ +.ŗ2_B"' hI$lZ)WRԳD)!'X03猳(!E&'"A|;8A'Yr?)7_X.q,1~w77c.lo@^ɶpfe>ŭP?$lp_uӀF25{YS}?|LɷVo^_ǯDOꂷE
-eftEl(/?z~ULjƳW=-Wo9O\>=i9m'>)D7ۉʶs4s>dh^5)7M>u46Rm"`zj(|H4ODK<â gDr^D"7eRњ"rS%U͕̍geOf҃2gdTn7KHSy9MQo1=(eʵG^DJ?2J\mF)`qO}q=b+P{WiӋ'Z[kXz?h.f_{d8BHO'OwE<
-V&/Eۮ ˸?S
-(K-j%cVLMw?66N/ X$?ʾj!ܯ=˾j{\>}§dKgce_/]5d,>ʾj_&Odg?JW-xRzz OcEg/f;j{(Ecas|05#]zo/ECm+,?(E׶l^)),={L(EkO/(}A[*nSt9JK]MUBDPȧ^_ 5 %E=e4 +h8Cz[x3.
-
-dD1tfi\ӏ&Mԡ(H2UgJ*'VAr%'deA
-dC 'N|WyPZԏjXb$A Kk M>ŨH4n&
-J
-/4ϗjZiMv)b*5W
-@<M
-[8Nbus|=_xqARo|G9E!qV#q0`)\3!LP<xx2C'pޕ>|{wpF8ϴVnX0n1Òǡոa 1Rn:)Q^pgoq]Cj`(2?zݫd-kV2~<V/*+%p{! i(k |'hs \tC V":>en)ڙbthԦ۳gPc!.6E{|YkZ+fS_;֚tb:M&,n*OR$f]Ice8t‚8Lm.u1^E"Mف
-wuXDK4>PĬT`: 3XתOU<;.o`nK)f2"D|/PEӣ&Ȧ;<>tC̲; q*آ
-wuX}*p\R' |jklJM<s?ku
-oR
-cJ N! ʱs
-)ss|RHQ\itBA
->I}"<\
-5 ˥K!k<n[{ ˥P \
-Hz{9R=p)Q|S5 9 cQøUǰJol{^*rt`Ԧ۳ݐ(QNPOc$|Ի6L'Hg֭=E:>7_trȸ  |E8vS_ q}
- $)\u3"q`aխloԑ9 AU80Ff…p вmaeJҋ"tjtb0)ӑy 7
-
-%8_ Tnj`l$8pL.uʂ1^\vC;~ .FSzۤhm`rSX!u9+6TM<?KvS3\ Dg+l6gl`^CxL@Q'*j*#)qzBeV4 ˵6
-
-q|g(6 v*
-N_Rw*Ρi h kh7AT
-.{43{qqCHAtQw֋hh8iyd̬3zϧ挹|shx($r@/\)k4ASWl=QHr1Օh3geC`z=#qƊz(z(($ĕ3iO'&Y|=esdSVGT ńp2#ĄfzlcGX-P( ˾E71F B\)S"/V6k1$- L
-&ٹΣ&3@#AOPE,4YV L3\\<e88`Ҝ:1s
-5C])z
+887 0 obj
+<< /Filter /FlateDecode /Length 4281 >>
+stream
+x\I[7xA hӲ
+q4h
+G8fRX`kBډ,JQ\2 cޛA(z<_*N3^u!>B [CXebX! 1%t*KJxCτwEmR\c<.FACTytf3Ԟ9V )%q1uwbjev=(X/,2o* L5?C|,:&'^K#8/cNIx& E R(Oa " ,!MQnTAY+dYu{P
+X~aMc[Tżx煃1܋VQ(֏W:r
+s&IMP֊.~Ɵ
+#
+؃lڸr^2/[
+BJ>h'_'DR֫/B
+WiCg2]LD˖oU]VEt!ު_!!*+$Vi%2+hnMdSNc֏A9/&K6p<\Zp*SaVΙr~<TGh?I,lisXwXB/sɸOkzK6[ NF+fo*-V< kMδdRke;w.Z}/\[0]Iy:"_=rsqXr<qKwő˧Xm ESY&Ǿo?_ig1nq >-j ݀! i9F>GB6dKە>2zFc \dt5 }'^2 j(1x:;DzW7g[|<uaz eU$m ڊuT%TUɐTw%.^Z߅&wzg-!s"U)VR.'#;<luNTZ
+Wf#ݶk,բ;X޸YVĸ_[@br9UuD_fI -JCpo-SbWMTK"5%8Pbt?Jfv 도$1aϝ$9+.';,0Y/ {53l q=JW!V
+0.|#DHɄ*|$t[6u>MKĎ,~\UWuIVwӟ* BY"¦3& 0@/I𝰴9 @S#$>qTV<J݇n uQ1ɢ0t
+#ƓnN.3TS8/XMOsN,֗O= Mf/*Gn{qtcR5}5j+Wwܻ0}fx+`^iV'w7jBOt(j>,^R <JNhѣNn(~`l](gij42dXΛ>,y?N6bj=,I7 e!hCNpum#r·H׈<v6^|
+zѐ0/(qjӫ3 x y9֫ؼyh N
-L3{@5$V3rq[s=0Is.ݨL u )d$xqr\ep34U9}<fqwrFp|6i1-)c`"cͧ4HH`YC~ܻO|Px*M&Lo")+(!X4Vc*Y)Ri-2gŽS]6:$~Qh*'1uOb
-OrQEڍb*+)uz@3PjSOzÝ!G;9ةՌ&/#|EeS\)WBCiX׳
-S8Յp+Uwpn~5PV
-pOUp/+3zVA3P ~:w qՂ<:OLb']L2Χ[Q8ŕz-4+kz=0Cz Pgb ?~@B~&ɷ W
-jO~Uj.NZ$Hf6MJ?Tw;aԊ;)rvc0nDWj1f@|2l: C>tFttVӶV
-lOTh+*+yV@DCjMwi:vU|_O%65l_C 5SoE`Rg h S.>4h*~i%VAMq^A
-10^/T!=({ C>SFA1]٥X7 RT`x0SgD8Co
-ԯJV2oRxS,t~FøQ&5un`@^G
-^+?@@ тg}RK8T{2;:^tqȶҚU 0m@nzTr#jz?JCx|J=.JF=ܧx_ӚBOA5z)4F ܞE!=ԇE~
->9[J{V@ ꀏqmfW:ZeOnA
-RhV7 /p{a>Wa&4"|L5/5| D`dRRg3Ej( uAB ? ݢ7v%;yshA3z!4Dk=03P]|rtɬ#voreU>.D~X4VUV,T ȁ8ʻ]\xF)%5ǯ֟j+?J@F6 /p{afmHknpQ`!$KɈFCLxS rPA 硓ajWjރ-؏^K2JW[~ !2<YIF J5U6L\儤@ϗf!߃]SA9%(MKg\ь?L
-+'gF#-[)F@Gȅ/\V0HId7e" IPn%T#E'%p7CŨJE]Ydz޴k,j KkyX3%_2^b JK=*}(QA+qQ
-I$>]?'3'~C.˅VDT;*'}(T٨3q9v@~ut
-/~Z[Zm?ށ|-VNQkF$Z*Y4BFF۽oA0I鸻/ͼtiXR f dRXYG%uL46qQ
-Iً̯+x炁cۏuOAI0[߬q+Y)=
-%P
-1PAg+y"tpJ녏8
-(oƩ0n
- $/O.[Jρx+1oUƹHn
-rMa_{DpUe(vynǍǤFzg Jӵ Je0A<I?]Hڅҿs|8jǾHҺL3ybC|c3$ֹ-2Mxh#ds]2
-wׄ_ ]T5Bԑ(`>ۥUeO#䕛y^OGF};H ӵ Կa0AOD]?5FC$w4=D!&74=D!+{g"&4=>&4;>хcy||AAW/)oM$B~R{~/ʕBݢGv+GGaоUlAV\oG0zRw9{6~wdFYn~B~[q?͇Gl,3:ەDʈSD!Q4\s푺Vݧ\:==bQsbTZW#TA[V4^4>`=Gچ_ˬhXO˫v\=8nяݓ/Ez!<Yo+|ܳvY oʍ{Dtc{^
-WBJ+28f0@)oWM.^_Of*O요]W݇3͡H'T,=c˘nN먃C%B8J5`]D2my 'Ư>ck}}^nR˿wC^p5-u5vCG4+exJ~N}O-pYzuyek+w_=x[>kokٷ|#F4x@}K/ҫnRc]-7m{|rO_,[Cwvyweg0W~*wHa7wCޖ]coN%swrg|vG;/:Gݑߏ.k[)GUwf9+4ͩ]'m=|;9
-ź.yܽcn/m>ox6V8nN.鼻a[ +}YRε~F>wnVMhñ{8E$;dGby4⇱8_7^:|?V㷃Xc8ֺ|kݒq 8d0׷%H?~\b݅-M?"ʝ7ե"RC{{̈z1WkM2fILMw_]WQ4z17|KJTqdsR-NK gC*k,ЁM݋ Olro,ZB8h{w6\ Cq~4WV*2&?~ŔdV>oO/mBqmPRKN臮ĠA{K}mZq{4G=c:ކs>kZY.<pՓr~ zux"+ؗ1D!؟_̯Y~<!ډ85&QpIn]xhKJkJ!IU6916 xSoMorc'oX_y+pfIF*pūw<"7C(r4#VIϗ:}U%ǖE?ښؒqTŏhhЖ*ZW-__%Z;!a غ)z sP[s*SMC:[p`lsͶM?ɤ[-M[]tGwM
+A̪}ˏyfNlpI ;S]~8Z<]u-j^kI$|YhIanCKCXdWpq| &ʝ>37qt śwvVMk[EߟO0xHx{e*.lY@8lx8f@;U ě(2aA)J|7z:V wgZ>hKK6h F2
+(x^ift9T0tlQ@T%BM*ak U]Sb2,s yBh/f;ZWSE劂
+ -C/2ts4,N#(vX8/u8H7UDٳhzip8oGeU4 px<KxDՙY[`IۋMP*B-ƹLT-1PJuQ9z|J1ڂ]2ْ֣BZnmd;Cub,8 IKNĭu)!)-.衐u ڞ7Yͷ|0GOuq=O(K?Rz?
+Z[7p8%T.jUB5BRVR 7*B9]NC[
+J 8C9PtGS%&6HӣD諶H\BB߿[n6AtB[Bl ZP yW928ecY]ۢ9fz]IU^U𢡊 s@J#co_ 뇜nJ3li<iI
+_C)Ǩ:t% vC6]gRh@DzeUBUN
+37}y ?0o3Ox|? HyNC|?ӏ6d:6Vy39:`eR<MwtcÒ"NfFUnU!MG@#-pɖoi*\`bi^ɲ2W l9FmYf6
endstream
endobj
-883 0 obj
-<< /Type /Page /Contents 884 0 R /Resources 882 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 859 0 R >>
-endobj
-885 0 obj
-<< /D [ 883 0 R /XYZ 78.37 808.885 null ] >>
+886 0 obj
+<< /Type /Page /Contents 887 0 R /Resources 885 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 867 0 R /Annots 889 0 R >>
endobj
-349 0 obj
-<< /D [ 883 0 R /XYZ 79.37 251.543 null ] >>
+889 0 obj
+[ 884 0 R ]
endobj
-882 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F52 372 0 R /F42 374 0 R /F23 375 0 R /F51 376 0 R /F29 371 0 R /F56 380 0 R /F59 389 0 R /F69 398 0 R /F15 377 0 R >> /ProcSet [ /PDF /Text ] >>
+884 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 276.144 71.991 286.601 83.449 ]/A << /S /GoTo /D (subsubsection.5.1.2) >> >>
endobj
888 0 obj
-<< /Filter /FlateDecode /Length 2111 >>
-stream
-x\K4o !ͰJ{ⴂ0H>G؝@8\R/w'Ù>w~.7<^gvƍ^ߺ
-_OkK#ip/)Lps wȄ-Oa Ɣ捲f!ۨ`ʁMgeg2l LXsK4^=u~!396Kczhr傁k{Iizl\&A(9a꫱esCet7hj{ג)[f`u[zj)D KaScѥdYHbюIl ^GvU>]\8?=tCϱHg2<܇]1e@*ޢK73<h/_*^r`^F](S|5i!rKНf2\F۳J gN;ĶrKХa
-}0 iгrKYkXZ14 9
-I7¢s-I'mV2גH
-
-[{=7N_峓lz[TN>qIQ >q[kg~6{gCpⒷ!,y`S(KF2h
-?&̙ea)m h( i8B1kEK #i =e;)1^ lg4r tns~5&
-5+y̤ fKdzf<g
-t51Y"~q)y6fz4X61;[$q6^7ei?]T͙1ϛ}ӽH7ᎬA27
-hMFW3 3үMBH(LYq= 3LhլdqGzc*ڙq08eFL #&VU9Ys5ڬj,]L')x2dqr
-'JjcsPX 3z9'L<9L e$Azpsr0W3f&9ŎIWNZ0WfG=w<0i}'v2\wz!-`/g1k'pSYX7&8 '&b7?To MEm=SJoEo2?QZ^8.qu,NI7=nUḺXN<ev
-;:vi*3oP%3Y0T5c׊yajSkkMD Y|Fr#Jms+'-K' lT2393hP;?h.<e`JnI|ە={o$ 
-_n7 ޸%ܓd9-?#_gELoL@%tk .HZ!һz-3s齎ϼoDJr_hGO%͏*eЦ0 m#~V m~|kB{]˪K-6Z6O;>~TaV']mttVɚ-}ΔtR}.)*Gsнuji <QuMoѝ!,dž?'>`lDO}1$ԀN+7OQr= CW1ђҝ3rއΙ\m8vN)Ɯw6cl%>?gFC@α )̰J0S5a5awr f_ k?=g޺;Υ;
-endstream
+<< /D [ 886 0 R /XYZ 78.37 808.885 null ] >>
endobj
-887 0 obj
-<< /Type /Page /Contents 888 0 R /Resources 886 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 859 0 R >>
-endobj
-889 0 obj
-<< /D [ 887 0 R /XYZ 78.37 808.885 null ] >>
-endobj
-886 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 380 0 R /F15 377 0 R >> /ProcSet [ /PDF /Text ] >>
+885 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 384 0 R /F25 375 0 R /F19 379 0 R /F17 380 0 R /F15 381 0 R /F57 385 0 R /F58 386 0 R /F55 383 0 R /F65 388 0 R /F48 391 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-1007 0 obj
-<< /Filter /FlateDecode /Length 3241 >>
-stream
-x\n;+DQ/0:lgVۡTRDEDZMR$E>ߛd_pS(4Z7Eoț 9-MJTRjsF-`bMJl,Ԓ>> |>]J+W"2c
--;l#ߐ~O01Vh5ŒKtR 3۔&\qNOjMqMZ(i6py= J#: ǟhx{;.XtD{]er.Yݤ>&h
- kli ;c[l&&B[1|Hyl)o L)# N9:&A$^=e[P {K.jT6g9buE6
-x#} ?-YnITXbnEWBXM{ VJ2Q
-UJ:"ٹ $Biqnj| ȧ_+|rK+t\kḁ*#򠌄M,~d QQ9&J)aIS@p8PBb Gtc9PX1}1UoĻƬsx) j!tp2@ >lY텄rM<wKĖ-ZH nH:8۱}"w:/R{dGG-#
-3-
-oeC)k߲unt!<p %U*᷎ |L^魪m ]kw%9D+_P!qΥxZ|C;'„2V{"<)S'8Z#Bqiil;rAڠ )T)!y5 @IG %_3h94FP_ٯ6I%Ejdlژ G-<#SJ*:}A'XfɁr,q@58@ I>ͩN
-mcέbJEp/tGE0󔆀S}51囔f{,@."-G>{5
- Cu\-.};@lP<
-uػ-A[1R]B}0K 6cdl %W#eAc,N nuv ~ (6 >+PQVNmBqTN)Q傟wT]َ_L6??JJ>Aۗ~ ը,+ "xu6bG fJX8e.> 0Dn_ Tj_^M"CI@ݩgDXb-Z-UX!ܳ߆qjr)a-
-
-vIJݺ,)Uƭ]36WQG˸ SXZv [ڃP:J|ݝ-}Vl@iD%2N9D| !ؑH{XP:mcM/)߁hN'<UNX;҂jSO =poRK@z˩*ԤUXX˞CZ18l|_=|K_
-%_(,'\CrPoBMP/#U.1(p:}J Hj|zo<e<\F֎7Gk2Hz=LVw&[^,i۸RTw[DtQ-R9¦6V5yT$ U/ؽ+"
-Ȩ?/Gk*V+4eAfO@-Vmhr]ؗ*CqMn2[!ᨤ⊱jVWAXi]q7NXi)Y 6x}GO?yFP+ GaՆA;uuK)h\vʣ -4a"(`P>Fq(HEkdEh]MWF:Ga `Ȭ{Q2e:#1:{~L3ziX[;MM@% `AHX-#B\TQ\DF
-i%>\ZMw+&3Fj4qSR%פ*_'֔S`#[ssޯ5TN:Fbꬎs7oo쬪̏9JlNmGKu>ϥFұ7GDx_&Rbt2-N{n;w܅[edޏ9k|"Qs7\S2` f[LO yJU`\"lbNCGA`Fȟ</ܑ9@e:vv8UЙnCws- irǡqz8?j3jasq{6:+ ^ =ox "zѧ,tgjXm~ <=͍\?vvd;NO^L3J\X
-s2)U+FKh_WBq\NS@k Z9sj}}z񬸎\"_TjΚl׭gP
- OkLvǩ?$ˇ6u9VXr
-OdUk` fe4ȸ{J
-B G}W%f]~ ԜHraG9:Df'8u24le1h1TVw{43JC_F+8] ]6qߊ䃰a,=MPE1wͲ =BiTJrMZ>
+892 0 obj
+<< /Filter /FlateDecode /Length 5487 >>
+stream
+x]KInϯF
+OY|Rkf!U1Pς\
+4e_|wF΍6,!%3=(ƌt*8[n[J`,ʥDo.͘qevE7J GH y܁P*2 rKL/ttoFaww\-񖧅u/$yW]uIqxM (*먵$Cj<cpKچHIBJZ+tB`WGp`]OU{*ٺ0aRؠ
+ը wO]"B@:Lq`%Zho^%l.[k &*jᕮH]1NQu<cW; !בR!*ըvW]"BBA:Rq j<cbӆbH~IBvJR^&ltYC@n$&Z<ͫ
+\1>{_0m&U:yYpdECTL;!UaY]%I+ZށJK\̕kKXE)mx;݇XM` _ <ЪԖr'R)
+oB$R1+ Osr<jSڐpx p!kܱ# NwG kv^GlmJ @J THW"vǠyX 'Z.ckb̥nJW$!lX#
+Zzd&'W z=@lSJH2
+TFZ
+E* f;Jn8<tK~|C_B,3J /+cM]^D^3Iik5j+݆M|W Th}.ڡH'޿{#D#+zJyq8%TdzOIVS?UKO",aZE4jkpZ8jӨFR# $m*o <y?Zx%zF)-._^F\L7f5lj 5yӬ~Rc I& oMv5ƁYWOScZMr6`P"M0Y?Э8HFӰK˩8ca2/x><;Z>Z.Ly6:q6o"6_忲K}Ѡ:1T}XÇ*7ަ\c(-f'J~}ÚMM
+|FvYYkMåI\"r 2&w^OBdo;M2> ^D,D_HX-g{)A7R_GaDz1QkGYMK;)]?ҼܻbGNqACŃ2$&c4.{kX5R\5࢏k(YRBĘlR :* NL v2m'̫^6:d=B4ZD2$cxR!=bclm5L餵̵M I$$/2V~-ҬcB.wy !X0,J!aC4 9Hv^Tf\;֮Ba]V:#Wqr^Vsx؁wĿi`Ϝj`ӧ:\ʏlEIdJfnʅ<1*Ϗ4pȋEqaïoKۧ` F$1X,-IHeyl&w9Ƨ\bX>αU>'86Iq9lLgư`4gi/%(G<JOOCY$m ߈x PmDaMy{ټȘ@. FQg~*51ito,! WG.(cp9۾|?}>if`4`g4oyLgj"xgZ$AdUpee(*ؔ-]ǰm|t\=x>~|_o5vzgQZ%\4`L>qj' \+t;lp>u)bOpQL`[z<N*LJw_pٞEd}ƎWN7
+N7_J`^ yJ9ӷMRԼZxjH-6[ˊ⟚co*&@avUԧ(
+U<VI֓^m-ifٕ.H{FR.ю#,>1u=KJ[$ˎ cyFy1ks;Ԟ1K݅~< {-Gs8[Xl=sMwt?Wu1{:;4y\e<Ձyz ^i7CƮ
+Ǹ}w;<Mq'N7ƵqG7~Hצ qWTצ
+}6->(7׶i ^7ѷiHK2?oӤ5Wۄַ)6MLrqSoun:0ӗ?Z޹{os3s3޹tntnaݶ̶I%CsZ۬@Xʊ{ifhd8
+Y?yWGi㼤49/?˥Q(/Fy2
+(KP^1Fy-i9du)/x?/Fi֏F\By6J^؞1(N4fc2-"
endstream
endobj
-1006 0 obj
-<< /Type /Page /Contents 1007 0 R /Resources 1005 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 859 0 R /Annots 1009 0 R >>
+891 0 obj
+<< /Type /Page /Contents 892 0 R /Resources 890 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 867 0 R >>
endobj
-1009 0 obj
-[ 890 0 R 891 0 R 892 0 R 893 0 R 894 0 R 895 0 R 896 0 R 897 0 R 898 0 R 899 0 R 900 0 R 901 0 R 902 0 R 903 0 R 904 0 R 905 0 R 906 0 R 907 0 R 908 0 R 909 0 R 910 0 R 911 0 R 912 0 R 913 0 R 914 0 R 915 0 R 916 0 R 917 0 R 918 0 R 919 0 R 920 0 R 921 0 R 922 0 R 923 0 R 924 0 R 925 0 R 926 0 R 927 0 R 928 0 R 929 0 R 930 0 R 931 0 R 932 0 R 933 0 R 934 0 R 935 0 R 936 0 R 937 0 R 938 0 R 939 0 R 940 0 R 941 0 R 942 0 R 943 0 R 944 0 R 945 0 R 946 0 R 947 0 R 948 0 R 949 0 R 950 0 R 951 0 R 952 0 R 953 0 R 954 0 R 955 0 R 956 0 R 957 0 R 958 0 R 959 0 R 960 0 R 961 0 R 962 0 R 963 0 R 964 0 R 965 0 R 966 0 R 967 0 R 968 0 R 969 0 R 970 0 R 971 0 R 972 0 R 973 0 R 974 0 R 975 0 R 976 0 R 977 0 R 978 0 R 979 0 R 980 0 R 981 0 R 982 0 R 983 0 R 984 0 R 985 0 R 986 0 R 987 0 R 988 0 R 989 0 R 990 0 R 991 0 R 992 0 R 993 0 R 994 0 R 995 0 R 996 0 R 997 0 R 998 0 R 999 0 R 1000 0 R 1001 0 R 1002 0 R ]
+893 0 obj
+<< /D [ 891 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+349 0 obj
+<< /D [ 891 0 R /XYZ 79.37 252.469 null ] >>
endobj
890 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 276.152 681.312 288.107 693.267 ]/A << /S /GoTo /D (page.17) >> >>
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 384 0 R /F25 375 0 R /F16 382 0 R /F15 381 0 R /F19 379 0 R /F17 380 0 R /F68 402 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-891 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 162.917 669.576 174.872 680.754 ]/A << /S /GoTo /D (page.10) >> >>
+896 0 obj
+<< /Filter /FlateDecode /Length 10373 >>
+stream
+x}M-7^.=N~ KO^mO;"``ޒng0Uu*sdf?~s7ʖ\JoFV[h5,Yp]|mQǛ KC5nٗQ
+Sb?Q
+cےg}\/-öW-HKj4^ܺ-miu{Y(eS:b=(Qp/>
+C;u=PP^lQʮJ CY_o72~s6ʾijp<X\ʫ5oZB#be𛖾f}4F'x$>Q.[ne7zko=:!efH[cFٯpY+1E/ejqևjװS&?4|i;PɅץZ6
+z)r!}Qq J^ֳA/*4 k;]t5k s YqFϿrNuz^CRQ|jj1KP&FxHbav{_D7ánZAT7 fB_Lf;9VC
+Dl /\mƍ.oKI.n)qd ۟4*~ȝOoyk%P?qڋX Ъ )%eldjzSW1^\}<~>r|崝hжl'nmkhDb}?G;QsմB4a89TDK 驉Bآ)<-wO6_nyMÝ!Deȿܕyiyjs%si+%)%%+yҪbitm[Lm/.JrQ>.όR6k} 9Ҁ*G /||<GL
+>#~4
+-Z-(n3b񕊙Gl#tژGG] S41EoUI.s|c|sbh.,=\|d9Jmg 4I#5wrˬ--#b.ևpDF|-C^k8Bl|Bf5I͆+նQW="wGiMΏm9[mi˷[Cr_Fg6iҪTod^magG
+-_G筲ݛ(ia)vy^\ȃtHmV_w7RkzZả7"ph)ʾGׇfhuh|PHp4 j|7K[5g%sٗ$|eu,V`5owRoʍ#ه-'QOMnxwic͖xBDOgV/guI@k=~Aw¢T
+6i\n [+_|%PUZMoɘd|8fEӝG'gύMo>w;ɏoZt8i<W
+dQ;e(1:Pob'UEFg!y䒽[,ضKU^OO% 2DE<htU4P #13Ks~|l4h"E!7Ep(E턮:SWjT <9
+P.4?!+ mzRk("Тp|&Fq Fi%l}ֆYC5<6!#1q<?WME9BYN(3EzFv,ф6Ą2h8IS۩ii.lB3Bf[[0B)^!݄Qv4ww&+ЗP ;
++!B (?&zʃkqtͼukfM
+ՉIK h/-hvrANNZNbQvnBRQSra<EW #9qwʃBТ~TÒ+&< Z5]Zoj(F.@q3 PPRxygFPJVn2ͨ3gL}T2W
+dR,0bnfXBzB3yEiT*#:aP(Cu%Be8U;*~zD[Q*`&$Zy?6#h5`Yyȉߓ< +Wqr& c.+NX ҕ|rx;)ոf[
+!w7ʧs΄0A0E ݞTYzW6q?rXm.Yc¸Uǰ
+K&n#T1
+Hm=pVDuk{ɿUui6Ȁu59Zag[d`dw94Jc/{YBq3<Op5[{ t%jg .ҡ1Rn:C)n燸xVC2yqRfh|Nqg~b[kNӉ6QGv;ih<Iד
+7
+jz=Kp:f|LDW&6evC6!G459 ce^/Ժ .FӔzsڤhm`BCX&u3To3z:Z\I6e8UXb&=_EMjr.Qh3-*!uy&wUI$hl ﹿzIcr WE,4%bEDkDNՈEں;%fHEYeG.I ho1 UE&4^2[i(a!}YtggU韖xFwr]P+kܖRjeLE
+K[A~"*r˥+5p{|)tW/ ek@"r\3Ƣq`aؖbHUWMg.#Q3<Hwm0<Op5[{ t|yoq٩lL<p>e ;H W;R&fE
+Vê[ߎ5^#Ssxp`Y @ec˔0yEՌW=`SX#uTo&9x=Kp@"y <IN)!q:1H]՛ bcd5%P:v\&",lIv)Ӊ䦰CrWP;Nm*%py4fj3AVLmӉԣNTP T0FR,fˬipŗ˵6
+
+q|g(6 v*
+N_Rw*Ρi h kh7AT
+.{43{qqCHAtQw֋hh8iyd̬3zϧ挹|shv<L9D `
+0=҂E8cY==J
+QִЇC,jU>E2d9j)H#MihbB`QRBbB3[=Yz6b,(z~e_բ՘qRCAa!hLW+GQaAd&\Qdّ" SM+@MUF.Vk}f0ie՘9I⡮Q=
+JhV5 3zVa
+@ >6NDž!:#NX|:x[Ս`vicrSA6'AuBhF4l<+ !5&pc|ҋ4l*>؂']jbw!MXKA뷢iXh׳S4vks?x^v`܂ rp ꦸRT`xM*L
+?ą!)j# ӘRv\)WBC0AX׳
+"7Wa+7HxM)<|)[ }?^#K`a\揃 Ty ךR:T y#wLF xhXy۳
+>ѥ~ GDo/8ddCiͪ6a 7=
+P 5BI^ Kv>%Kx%SNd튯iM!է@PMcn"LݐC"?
++'gF#-[)F@Gȅ/\zV0HId7e" IPn%T#E'%p7CŨJE]Ydz޴k,j KkyX3%_2^b JK=*}(QA+qQ
+I$>]?'3'~C.˅VDT;*'}(T٨3q9v@~utz
+/~Z[Zm?ށ|-VNQkF$Z*Y4BFF۽oA0I鸻/ͼtiXR f dRXYG%uL46qQ
+Iً̯+x炁cۏuOAI0[߬q+Y)=
+%P
+1PAg+y"tJ녏8
+(oƩ0n
+ $/O?.[Jρx+1oUƹHn
+z,~0>|Y;u,_ ʍ{Dtc{w(>~v8zP}o);[WVsxQ[zݾƟluFre׎qwŘц~0xG?Ec.f e=k
+n{p/LC^oc:U,%_Kk,k ӣX-jDZ<맆ua6f.s-WuƴCX~
+R<^nm/q?a%p! cFsLBv49w,ˮIoХz}:c:tL:?IaѿJ:hJ<T"/ڋHHt]H-?/+~O?dpX?ۧԭs"?umK{w]yG+exZeYs%~͎K_ack\9m-= qAU<|ʠҥ/ҫ%?~!vHu=l:G>aɽԇ>}Moa?AT=_|? q|X y_vi?:;|ZvH<_KNLuG?&nVݙ=v栮`7vdxR*6ӻq-}yֽkf%Idbλp>|qb%e\ YP췻oTKp}oՄ=ϹSDCv)G#~[wCyㅬ÷c5=~;}5 c}˷N-i_!;x/E+j;g.<l׵mRQ}.E({dFԋ׍%]}6l>Ԑ1Ozd"Sork廤XRVU$mAvZlPf=rU^cрh*^]xgGodqnV©UߵG݇ÄJXʍc7ܠ vW3iuy.$yz{0g^rB?uN' [h˽Oޟ*9'H8q=6^zrIᆫmЫ\ξ숹$
+|3g7|Nlq1KJt/\ǻG]RUZS29_OZoC#mqxwp(YϾ&.7殸ힷl mh$hrPzc!r8"GC^=/zu<J'[UylYTP* -^@Gu{^Ȍ'm2z ue2N̐0uEk9m2?4='l~/O&[li22L|N􇟾
+!
+endstream
endobj
-892 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 162.917 657.621 174.872 668.799 ]/A << /S /GoTo /D (page.10) >> >>
+895 0 obj
+<< /Type /Page /Contents 896 0 R /Resources 894 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 867 0 R >>
endobj
-893 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 229.268 633.491 241.223 645.446 ]/A << /S /GoTo /D (page.24) >> >>
+897 0 obj
+<< /D [ 895 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+353 0 obj
+<< /D [ 895 0 R /XYZ 79.37 251.543 null ] >>
endobj
894 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 245.318 633.491 257.492 645.446 ]/A << /S /GoTo /D (page.62) >> >>
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F20 376 0 R /F21 378 0 R /F19 379 0 R /F17 380 0 R /F25 375 0 R /F56 384 0 R /F59 393 0 R /F68 402 0 R /F15 381 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-895 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 162.917 622.104 174.872 632.933 ]/A << /S /GoTo /D (page.46) >> >>
+900 0 obj
+<< /Filter /FlateDecode /Length 2111 >>
+stream
+x\Ɏ6+b3 0I4%`OqD-8JnYtc6Rs/ǿ/< b;m:ϼBLk;@s-s xt6U nnQ?cŏ ?˜rӼQ 6d5~C9̛lL29knf뵵QY?3uעn/$by&OfIc]MՖ\0pMt9)M_ 6kߤ8<6'L}54lxh.&Us4]-}Z2eڼxӌLsyK<Z-%ԛ0a)L|
+rr 6 C" IL"91e4KhǜNY.Yn}CCkow v+}`S^T,AXҫ|5~fB#W?k{f ƒeZF\t @j`;lÙa6\tiz+B6\RZ#:VL 'Bw.
+MN  cL
+J1o{0Ʌ -WBR(썰\KGED "䢤j)쵤%mdh$UaA`1(8%9-m[qe!]5sBJUpvgb
+8i
+bܨ^MCЄ9,,y`U %!ָ: vC(fBqi!u5-<!4 sC??%v b8+F"`W}[A|-xnoD!Ӹq%)3:>d53Yp3
+'bx,^ Q83^1,^ Q8O1]MLȟab\j^x=1D^8<MGwG7IWMYoO713Asfft/3ҪM#ef<MB33#q}dqŒ}S3R?o%
+SVjt :E5+YƑ^Jvfy`$3 NQ=7 oUNp6 K7IJ`(ޠL53Y0\‰T13zŒl f$
+endstream
endobj
-896 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 246.752 587.663 253.726 599.618 ]/A << /S /GoTo /D (page.3) >> >>
+899 0 obj
+<< /Type /Page /Contents 900 0 R /Resources 898 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 867 0 R >>
endobj
-897 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 168.147 576.276 180.102 587.105 ]/A << /S /GoTo /D (page.46) >> >>
+901 0 obj
+<< /D [ 899 0 R /XYZ 78.37 808.885 null ] >>
endobj
898 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 168.147 564.321 180.102 575.15 ]/A << /S /GoTo /D (page.46) >> >>
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 384 0 R /F15 381 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-899 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 169.104 551.798 181.059 563.753 ]/A << /S /GoTo /D (page.33) >> >>
+1018 0 obj
+<< /Filter /FlateDecode /Length 3289 >>
+stream
+x\͎# SF+Q0hk{ &5T%QrpHHQo?iǛAe@-$e-X_?FC᮵?wjDߒJ<֤aUpXy<Q\,koDd܍]%UH5$jz** vwiy ;?7VA9Z
+}y.3r:7I&db}8YW,lRk\gQ7 . j
+n#y|*LX[exd-|R"r7
+KfvV{VcYV%*s]8Be8w`ʒ#UZɞζ0^Y' ri\jfĔKInj-(0ݜ
+qO-0i Ӟ8ZlW^?/&c> Y ljbu-]P7u)CZTΦ&1&Y86
+;VՃ[TDۓ{X_e>*ddg
+jnsnZBQʔ.(qdh~4"i&FL)d n1(m+-3j$/Q `VJrbQfIrg:SY lGYƟ˶D<Nَ]YOuq.gCB쨈4sc4[#:g{d*Z 99칭$YP~؛V %{fMdWM!UNITMIxfJ!>m d[ܼ}Qܶ:qU÷ @mRG1%yݭBe}*->2f6Dz<j>▄3(R#g
+N9k:mNC(Fm$T$L-U@^,UB,NOX]QSUI&ªu_!e
+g̊/l<m]/aa0:48¶*ۊ
+LV9ɍfՒQWnPY hoJ}2z
+Th!ߕ6˪:/?+"* Wԟm
+txT.(0 mmGT_6ˆqhڮ햭dSTNgU_5Be*൧-:>)6x}Q9rUl߮nXYg6(8
+zWg|7O!2S.*pY`1r}k2X{,eFאQNb3yQ.mu"2ֳ}ˀ̇N2>abQPSH_+VbZ;1A K r9a謍J)l= 5@{BL~Sr=^'P&& KCӖo*&ѼM$jp[vlU,K5lec=O`[O%>M.nY>ܴ<a\k-ȣHt>ΥF
+ߌG>r *aUb%!O@J.#L -ʲS97=_59kpBh%7'Rƒpoh!_h_* L4LkV0O֌^1Ѓ6 Imwk/-7ʜ E0Z8UйnLITE>Q'vQ A5'G5l}eQ2aA5!瑖G#\r2|./)ц`>G_"9r_]ʯg'e)KN8|M:z߹Ľd0@sJ
+endstream
endobj
-900 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 115.843 540.41 122.817 551.24 ]/A << /S /GoTo /D (page.4) >> >>
+1017 0 obj
+<< /Type /Page /Contents 1018 0 R /Resources 1016 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 867 0 R /Annots 1020 0 R >>
endobj
-901 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 201.472 528.455 208.446 539.285 ]/A << /S /GoTo /D (page.4) >> >>
+1020 0 obj
+[ 902 0 R 903 0 R 904 0 R 905 0 R 906 0 R 907 0 R 908 0 R 909 0 R 910 0 R 911 0 R 912 0 R 913 0 R 914 0 R 915 0 R 916 0 R 917 0 R 918 0 R 919 0 R 920 0 R 921 0 R 922 0 R 923 0 R 924 0 R 925 0 R 926 0 R 927 0 R 928 0 R 929 0 R 930 0 R 931 0 R 932 0 R 933 0 R 934 0 R 935 0 R 936 0 R 937 0 R 938 0 R 939 0 R 940 0 R 941 0 R 942 0 R 943 0 R 944 0 R 945 0 R 946 0 R 947 0 R 948 0 R 949 0 R 950 0 R 951 0 R 952 0 R 953 0 R 954 0 R 955 0 R 956 0 R 957 0 R 958 0 R 959 0 R 960 0 R 961 0 R 962 0 R 963 0 R 964 0 R 965 0 R 966 0 R 967 0 R 968 0 R 969 0 R 970 0 R 971 0 R 972 0 R 973 0 R 974 0 R 975 0 R 976 0 R 977 0 R 978 0 R 979 0 R 980 0 R 981 0 R 982 0 R 983 0 R 984 0 R 985 0 R 986 0 R 987 0 R 988 0 R 989 0 R 990 0 R 991 0 R 992 0 R 993 0 R 994 0 R 995 0 R 996 0 R 997 0 R 998 0 R 999 0 R 1000 0 R 1001 0 R 1002 0 R 1003 0 R 1004 0 R 1005 0 R 1006 0 R 1007 0 R 1008 0 R 1009 0 R 1010 0 R 1011 0 R 1012 0 R 1013 0 R ]
endobj
902 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 211.435 528.455 218.409 539.285 ]/A << /S /GoTo /D (page.9) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 134.055 681.88 141.029 692.928 ]/A << /S /GoTo /D (page.9) >> >>
endobj
903 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 147.226 516.151 154.2 527.329 ]/A << /S /GoTo /D (page.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 173.716 648.583 180.69 659.422 ]/A << /S /GoTo /D (page.9) >> >>
endobj
904 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 147.226 504.196 154.2 515.374 ]/A << /S /GoTo /D (page.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 276.152 636.07 288.107 648.025 ]/A << /S /GoTo /D (page.18) >> >>
endobj
905 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 152.456 492.59 159.43 503.419 ]/A << /S /GoTo /D (page.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 162.917 624.334 174.872 635.512 ]/A << /S /GoTo /D (page.11) >> >>
endobj
906 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 152.456 480.635 159.43 491.464 ]/A << /S /GoTo /D (page.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 162.917 612.379 174.872 623.557 ]/A << /S /GoTo /D (page.11) >> >>
endobj
907 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 189.926 456.156 201.881 468.111 ]/A << /S /GoTo /D (page.23) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 229.268 588.249 241.223 600.204 ]/A << /S /GoTo /D (page.25) >> >>
endobj
908 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 174.165 444.201 181.139 456.156 ]/A << /S /GoTo /D (page.9) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 245.318 588.249 257.492 600.204 ]/A << /S /GoTo /D (page.63) >> >>
endobj
909 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 187.624 432.246 194.598 444.201 ]/A << /S /GoTo /D (page.5) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 162.917 576.862 174.872 587.691 ]/A << /S /GoTo /D (page.47) >> >>
endobj
910 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 233.032 420.291 244.987 432.246 ]/A << /S /GoTo /D (page.41) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 246.752 543.007 253.726 554.962 ]/A << /S /GoTo /D (page.3) >> >>
endobj
911 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 223.848 386.418 235.804 398.373 ]/A << /S /GoTo /D (page.38) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 168.147 531.62 180.102 542.449 ]/A << /S /GoTo /D (page.47) >> >>
endobj
912 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 144.795 375.021 156.75 385.86 ]/A << /S /GoTo /D (page.38) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 168.147 519.665 180.102 530.494 ]/A << /S /GoTo /D (page.47) >> >>
endobj
913 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 236.479 362.507 248.434 374.463 ]/A << /S /GoTo /D (page.13) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 169.104 507.142 181.059 519.097 ]/A << /S /GoTo /D (page.34) >> >>
endobj
914 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 115.843 351.12 127.799 361.95 ]/A << /S /GoTo /D (page.27) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 115.843 495.754 122.817 506.584 ]/A << /S /GoTo /D (page.4) >> >>
endobj
915 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 147.226 339.165 159.181 349.994 ]/A << /S /GoTo /D (page.15) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 201.472 483.799 208.446 494.629 ]/A << /S /GoTo /D (page.4) >> >>
endobj
916 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 184.406 327.2 191.38 338.039 ]/A << /S /GoTo /D (page.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 211.435 483.799 223.39 494.629 ]/A << /S /GoTo /D (page.10) >> >>
endobj
917 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 195.475 327.2 207.43 338.039 ]/A << /S /GoTo /D (page.22) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 147.226 471.495 154.2 482.674 ]/A << /S /GoTo /D (page.2) >> >>
endobj
918 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 153.183 315.245 160.157 326.084 ]/A << /S /GoTo /D (page.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 147.226 459.54 154.2 470.718 ]/A << /S /GoTo /D (page.2) >> >>
endobj
919 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 164.252 315.245 176.207 326.084 ]/A << /S /GoTo /D (page.22) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 152.456 447.934 159.43 458.763 ]/A << /S /GoTo /D (page.2) >> >>
endobj
920 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 166.972 303.29 173.946 314.129 ]/A << /S /GoTo /D (page.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 152.456 435.979 159.43 446.808 ]/A << /S /GoTo /D (page.2) >> >>
endobj
921 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 178.04 303.29 189.995 314.129 ]/A << /S /GoTo /D (page.22) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 189.926 411.5 201.881 423.456 ]/A << /S /GoTo /D (page.24) >> >>
endobj
922 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 226.12 279.389 238.075 290.219 ]/A << /S /GoTo /D (page.17) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 174.165 399.545 186.12 411.5 ]/A << /S /GoTo /D (page.10) >> >>
endobj
923 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 199.579 267.434 211.535 278.263 ]/A << /S /GoTo /D (page.21) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 187.624 387.59 194.598 399.545 ]/A << /S /GoTo /D (page.5) >> >>
endobj
924 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 172.481 254.911 179.455 266.866 ]/A << /S /GoTo /D (page.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 233.032 375.635 244.987 387.59 ]/A << /S /GoTo /D (page.42) >> >>
endobj
925 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 233.871 231.001 245.826 242.956 ]/A << /S /GoTo /D (page.17) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 223.848 342.348 235.804 354.303 ]/A << /S /GoTo /D (page.40) >> >>
endobj
926 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 249.921 231.001 262.095 242.956 ]/A << /S /GoTo /D (page.67) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 144.795 330.951 156.75 341.79 ]/A << /S /GoTo /D (page.40) >> >>
endobj
927 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 219.465 219.045 231.42 231.001 ]/A << /S /GoTo /D (page.10) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 236.479 318.438 248.434 330.393 ]/A << /S /GoTo /D (page.14) >> >>
endobj
928 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 195.694 207.09 207.649 219.045 ]/A << /S /GoTo /D (page.36) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 115.843 307.05 127.799 317.88 ]/A << /S /GoTo /D (page.28) >> >>
endobj
929 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 127.659 195.703 139.614 206.642 ]/A << /S /GoTo /D (page.34) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 147.226 295.095 159.181 305.925 ]/A << /S /GoTo /D (page.16) >> >>
endobj
930 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 221.238 171.783 233.193 182.662 ]/A << /S /GoTo /D (page.16) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 184.406 283.13 191.38 293.969 ]/A << /S /GoTo /D (page.2) >> >>
endobj
931 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 192.594 159.838 204.549 170.707 ]/A << /S /GoTo /D (page.41) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 195.475 283.13 207.43 293.969 ]/A << /S /GoTo /D (page.23) >> >>
endobj
932 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 155.415 147.882 167.37 158.821 ]/A << /S /GoTo /D (page.26) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 153.183 271.175 160.157 282.014 ]/A << /S /GoTo /D (page.2) >> >>
endobj
933 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 159.041 135.917 170.997 146.866 ]/A << /S /GoTo /D (page.26) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 164.252 271.175 176.207 282.014 ]/A << /S /GoTo /D (page.23) >> >>
endobj
934 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 175.091 135.917 187.266 146.866 ]/A << /S /GoTo /D (page.45) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 166.972 259.22 173.946 270.059 ]/A << /S /GoTo /D (page.2) >> >>
endobj
935 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 191.36 135.917 203.535 146.866 ]/A << /S /GoTo /D (page.60) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 178.04 259.22 189.995 270.059 ]/A << /S /GoTo /D (page.23) >> >>
endobj
936 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 153.721 123.962 165.677 134.911 ]/A << /S /GoTo /D (page.26) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 226.12 235.319 238.075 246.149 ]/A << /S /GoTo /D (page.18) >> >>
endobj
937 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 169.771 123.962 181.946 134.911 ]/A << /S /GoTo /D (page.45) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 199.579 223.364 211.535 234.194 ]/A << /S /GoTo /D (page.22) >> >>
endobj
938 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 186.04 123.962 198.215 134.911 ]/A << /S /GoTo /D (page.59) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 172.481 210.841 179.455 222.796 ]/A << /S /GoTo /D (page.2) >> >>
endobj
939 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 202.847 123.962 215.021 134.911 ]/A << /S /GoTo /D (page.60) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 233.871 186.931 245.826 198.886 ]/A << /S /GoTo /D (page.18) >> >>
endobj
940 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 157.348 112.007 169.303 122.956 ]/A << /S /GoTo /D (page.26) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 249.921 186.931 262.095 198.886 ]/A << /S /GoTo /D (page.68) >> >>
endobj
941 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 173.398 112.007 185.572 122.956 ]/A << /S /GoTo /D (page.45) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 219.465 174.976 231.42 186.931 ]/A << /S /GoTo /D (page.10) >> >>
endobj
942 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 136.765 100.062 148.72 110.891 ]/A << /S /GoTo /D (page.34) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 195.694 163.021 207.649 174.976 ]/A << /S /GoTo /D (page.37) >> >>
endobj
943 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 151.709 100.062 163.664 110.891 ]/A << /S /GoTo /D (page.38) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 127.659 151.633 139.614 162.572 ]/A << /S /GoTo /D (page.35) >> >>
endobj
944 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 167.759 100.062 179.933 110.891 ]/A << /S /GoTo /D (page.66) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 221.238 127.713 233.193 138.592 ]/A << /S /GoTo /D (page.17) >> >>
endobj
945 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 176.456 87.758 188.411 98.936 ]/A << /S /GoTo /D (page.16) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 192.594 115.768 204.549 126.637 ]/A << /S /GoTo /D (page.42) >> >>
endobj
946 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 192.506 87.758 204.68 98.936 ]/A << /S /GoTo /D (page.66) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 155.415 103.813 167.37 114.752 ]/A << /S /GoTo /D (page.27) >> >>
endobj
947 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 209.313 87.758 221.487 98.936 ]/A << /S /GoTo /D (page.67) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 159.041 91.847 170.997 102.796 ]/A << /S /GoTo /D (page.27) >> >>
endobj
948 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 169.572 75.583 181.527 87.539 ]/A << /S /GoTo /D (page.12) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 175.091 91.847 187.266 102.796 ]/A << /S /GoTo /D (page.46) >> >>
endobj
949 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 185.622 75.583 197.796 87.539 ]/A << /S /GoTo /D (page.67) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 191.36 91.847 203.535 102.796 ]/A << /S /GoTo /D (page.61) >> >>
endobj
950 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 383.585 681.87 390.559 692.709 ]/A << /S /GoTo /D (page.5) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 153.721 79.892 165.677 90.841 ]/A << /S /GoTo /D (page.27) >> >>
endobj
951 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 397.703 669.915 409.658 680.754 ]/A << /S /GoTo /D (page.43) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 169.771 79.892 181.946 90.841 ]/A << /S /GoTo /D (page.46) >> >>
endobj
952 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 387.232 646.014 394.206 656.884 ]/A << /S /GoTo /D (page.4) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 186.04 79.892 198.215 90.841 ]/A << /S /GoTo /D (page.60) >> >>
endobj
953 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 480.622 634.059 492.577 644.928 ]/A << /S /GoTo /D (page.37) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 202.847 79.892 215.021 90.841 ]/A << /S /GoTo /D (page.61) >> >>
endobj
954 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 402.923 621.755 414.878 632.973 ]/A << /S /GoTo /D (page.23) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 157.348 67.937 169.303 78.886 ]/A << /S /GoTo /D (page.27) >> >>
endobj
955 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 421.272 610.149 433.227 621.018 ]/A << /S /GoTo /D (page.14) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 173.398 67.937 185.572 78.886 ]/A << /S /GoTo /D (page.46) >> >>
endobj
956 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 452.079 598.064 464.034 609.063 ]/A << /S /GoTo /D (page.31) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 360.014 693.835 371.969 704.664 ]/A << /S /GoTo /D (page.35) >> >>
endobj
957 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 467.072 586.229 479.028 597.108 ]/A << /S /GoTo /D (page.47) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 374.958 693.835 386.913 704.664 ]/A << /S /GoTo /D (page.39) >> >>
endobj
958 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 357.055 574.283 369.01 585.113 ]/A << /S /GoTo /D (page.21) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 391.008 693.835 403.182 704.664 ]/A << /S /GoTo /D (page.67) >> >>
endobj
959 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 373.105 574.283 385.279 585.113 ]/A << /S /GoTo /D (page.65) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 399.705 681.531 411.66 692.709 ]/A << /S /GoTo /D (page.17) >> >>
endobj
960 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 390.539 561.76 402.495 573.715 ]/A << /S /GoTo /D (page.16) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 415.755 681.531 427.929 692.709 ]/A << /S /GoTo /D (page.67) >> >>
endobj
961 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 490.644 549.805 502.599 561.76 ]/A << /S /GoTo /D (page.18) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 432.562 681.531 444.736 692.709 ]/A << /S /GoTo /D (page.68) >> >>
endobj
962 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 379.381 514.508 391.336 525.058 ]/A << /S /GoTo /D (page.21) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 392.821 669.357 404.776 681.312 ]/A << /S /GoTo /D (page.13) >> >>
endobj
963 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 449.369 502.552 461.324 513.382 ]/A << /S /GoTo /D (page.17) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 408.871 669.357 421.045 681.312 ]/A << /S /GoTo /D (page.68) >> >>
endobj
964 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 465.419 502.552 477.593 513.382 ]/A << /S /GoTo /D (page.56) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 383.585 646.004 390.559 656.844 ]/A << /S /GoTo /D (page.5) >> >>
endobj
965 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 489.229 490.029 501.185 501.984 ]/A << /S /GoTo /D (page.44) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 397.703 634.049 409.658 644.889 ]/A << /S /GoTo /D (page.44) >> >>
endobj
966 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 371.421 478.642 383.376 489.471 ]/A << /S /GoTo /D (page.23) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 387.232 610.149 394.206 621.018 ]/A << /S /GoTo /D (page.4) >> >>
endobj
967 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 455.305 466.119 467.26 478.074 ]/A << /S /GoTo /D (page.13) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 480.622 598.194 492.577 609.063 ]/A << /S /GoTo /D (page.38) >> >>
endobj
968 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 451.481 454.164 463.436 466.119 ]/A << /S /GoTo /D (page.12) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 402.923 585.89 414.878 597.108 ]/A << /S /GoTo /D (page.24) >> >>
endobj
969 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 467.531 454.164 479.705 466.119 ]/A << /S /GoTo /D (page.20) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 421.272 574.283 433.227 585.153 ]/A << /S /GoTo /D (page.14) >> >>
endobj
970 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 423.018 430.811 434.973 441.76 ]/A << /S /GoTo /D (page.16) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 452.079 562.199 464.034 573.197 ]/A << /S /GoTo /D (page.32) >> >>
endobj
971 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 446.28 418.866 458.236 429.735 ]/A << /S /GoTo /D (page.47) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 467.072 550.363 479.028 561.242 ]/A << /S /GoTo /D (page.48) >> >>
endobj
972 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 365.374 406.911 377.329 417.85 ]/A << /S /GoTo /D (page.10) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 357.055 538.418 369.01 549.247 ]/A << /S /GoTo /D (page.22) >> >>
endobj
973 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 476.268 394.388 488.223 406.343 ]/A << /S /GoTo /D (page.51) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 373.105 538.418 385.279 549.247 ]/A << /S /GoTo /D (page.66) >> >>
endobj
974 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 492.318 394.388 504.492 406.343 ]/A << /S /GoTo /D (page.66) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 390.539 525.895 402.495 537.85 ]/A << /S /GoTo /D (page.17) >> >>
endobj
975 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 387.511 383.001 399.466 393.83 ]/A << /S /GoTo /D (page.49) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 490.644 513.94 502.599 525.895 ]/A << /S /GoTo /D (page.19) >> >>
endobj
976 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 386.126 370.916 398.081 381.875 ]/A << /S /GoTo /D (page.49) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 379.381 478.642 391.336 489.192 ]/A << /S /GoTo /D (page.22) >> >>
endobj
977 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 399.934 359.09 411.889 369.92 ]/A << /S /GoTo /D (page.49) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 449.369 466.687 461.324 477.516 ]/A << /S /GoTo /D (page.18) >> >>
endobj
978 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 415.984 359.09 428.158 369.92 ]/A << /S /GoTo /D (page.66) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 465.419 466.687 477.593 477.516 ]/A << /S /GoTo /D (page.57) >> >>
endobj
979 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 470.241 346.567 482.415 358.522 ]/A << /S /GoTo /D (page.53) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 489.229 454.164 501.185 466.119 ]/A << /S /GoTo /D (page.45) >> >>
endobj
980 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 357.573 335.18 369.528 346.009 ]/A << /S /GoTo /D (page.13) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 371.421 442.776 383.376 453.606 ]/A << /S /GoTo /D (page.24) >> >>
endobj
981 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 372.517 335.18 384.472 346.009 ]/A << /S /GoTo /D (page.16) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 455.305 430.253 467.26 442.209 ]/A << /S /GoTo /D (page.14) >> >>
endobj
982 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 339.092 301.307 352.542 312.136 ]/A << /S /GoTo /D (page.27) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 451.481 418.298 463.436 430.253 ]/A << /S /GoTo /D (page.13) >> >>
endobj
983 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 356.637 301.307 368.592 312.136 ]/A << /S /GoTo /D (page.54) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 467.531 418.298 479.705 430.253 ]/A << /S /GoTo /D (page.21) >> >>
endobj
984 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 372.686 301.307 384.861 312.136 ]/A << /S /GoTo /D (page.59) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 423.018 394.946 434.973 405.895 ]/A << /S /GoTo /D (page.17) >> >>
endobj
985 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 500.497 288.784 512.452 300.739 ]/A << /S /GoTo /D (page.19) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 446.28 383.001 458.236 393.87 ]/A << /S /GoTo /D (page.48) >> >>
endobj
986 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 442.823 264.874 454.779 276.829 ]/A << /S /GoTo /D (page.35) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 365.374 371.045 377.329 381.984 ]/A << /S /GoTo /D (page.11) >> >>
endobj
987 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 468.876 252.918 480.831 264.874 ]/A << /S /GoTo /D (page.47) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 476.268 358.522 488.223 370.478 ]/A << /S /GoTo /D (page.52) >> >>
endobj
988 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 389.354 240.963 401.309 252.918 ]/A << /S /GoTo /D (page.62) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 492.318 358.522 504.492 370.478 ]/A << /S /GoTo /D (page.67) >> >>
endobj
989 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 446.071 229.566 458.026 240.445 ]/A << /S /GoTo /D (page.33) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 387.511 347.135 399.466 357.965 ]/A << /S /GoTo /D (page.50) >> >>
endobj
990 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 481.476 217.053 493.432 229.008 ]/A << /S /GoTo /D (page.41) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 386.126 335.05 398.081 346.009 ]/A << /S /GoTo /D (page.50) >> >>
endobj
991 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 349.553 205.307 361.508 216.495 ]/A << /S /GoTo /D (page.13) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 399.934 323.225 411.889 334.054 ]/A << /S /GoTo /D (page.50) >> >>
endobj
992 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 441.476 193.143 453.432 205.098 ]/A << /S /GoTo /D (page.15) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 415.984 323.225 428.158 334.054 ]/A << /S /GoTo /D (page.67) >> >>
endobj
993 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 399.715 181.187 406.689 193.143 ]/A << /S /GoTo /D (page.4) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 470.241 310.702 482.415 322.657 ]/A << /S /GoTo /D (page.54) >> >>
endobj
994 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 410.784 181.187 422.958 193.143 ]/A << /S /GoTo /D (page.65) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 357.573 299.314 369.528 310.144 ]/A << /S /GoTo /D (page.14) >> >>
endobj
995 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 471.825 169.232 483.78 181.187 ]/A << /S /GoTo /D (page.54) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 372.517 299.314 384.472 310.144 ]/A << /S /GoTo /D (page.17) >> >>
endobj
996 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 447.336 135.359 459.292 147.314 ]/A << /S /GoTo /D (page.38) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 339.092 267.317 352.542 278.146 ]/A << /S /GoTo /D (page.28) >> >>
endobj
997 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 479.725 123.404 491.68 135.359 ]/A << /S /GoTo /D (page.47) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 356.637 267.317 368.592 278.146 ]/A << /S /GoTo /D (page.55) >> >>
endobj
998 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 414.201 99.494 426.156 111.449 ]/A << /S /GoTo /D (page.39) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 372.686 267.317 384.861 278.146 ]/A << /S /GoTo /D (page.60) >> >>
endobj
999 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 430.25 99.494 442.425 111.449 ]/A << /S /GoTo /D (page.57) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 500.497 254.794 512.452 266.749 ]/A << /S /GoTo /D (page.20) >> >>
endobj
1000 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 472.61 87.539 484.565 99.494 ]/A << /S /GoTo /D (page.41) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 442.823 230.884 454.779 242.839 ]/A << /S /GoTo /D (page.36) >> >>
endobj
1001 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 488.659 87.539 500.834 99.494 ]/A << /S /GoTo /D (page.57) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 468.876 218.928 480.831 230.884 ]/A << /S /GoTo /D (page.48) >> >>
endobj
1002 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 495.334 75.583 507.29 87.539 ]/A << /S /GoTo /D (page.41) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 389.354 206.973 401.309 218.928 ]/A << /S /GoTo /D (page.63) >> >>
endobj
-1008 0 obj
-<< /D [ 1006 0 R /XYZ 78.37 808.885 null ] >>
+1003 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 446.071 195.576 458.026 206.455 ]/A << /S /GoTo /D (page.34) >> >>
endobj
-353 0 obj
-<< /D [ 1006 0 R /XYZ 79.37 706.717 null ] >>
+1004 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 481.476 183.063 493.432 195.018 ]/A << /S /GoTo /D (page.42) >> >>
endobj
1005 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F69 398 0 R /F67 385 0 R /F56 380 0 R /F15 377 0 R /F57 381 0 R /F55 379 0 R >> /ProcSet [ /PDF /Text ] >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 349.553 171.317 361.508 182.505 ]/A << /S /GoTo /D (page.14) >> >>
endobj
-1113 0 obj
-<< /Filter /FlateDecode /Length 3273 >>
-stream
-x\ɮ WZ x@U׽]moCɲZ]K,u.E[^}}ۏ/e.A /M yQvgV]~? C)mXRJOO\/p[~]k㟿Υ #)l9^H +c9 _*_Ǝ:pA
-~5凪X͠9ec[bʨ#{-ҵ[ݪ(+v0
-F` ?n
-dNjy@f
-=< n 'D}.;u
-C 봃`w8Ny)88Z0 t}e |iJrp6:dSb5#0ؔ4t,٤N0ZoN`LQ+ STg\-1'6=?\nH=
-85y7`֧G*,*̵@u>zLAx=F~w+@"#2˝'PW,WF1r@r#_0`W[l5^t/d+z[,iVƠ/@.RA=.6L׵פRBANIϮόim( F}Z*Qr$o@nq4fFhIy'@Md6A#g,/'j|团pۊa<鎊tF2<?Mo_) ZZ7/g,7St]+iRpqZ0\
-֔.mGB%tݟlhyb5Z2GЄ=yď ;T.JG:B 4AOnBNKSWgdN<]"?[aZR|Ŭ,>+hrIە\S2knU[h JW¦7T bѭn6%zAXec@d(+
-|dB_Pm ">QLݚԙ8
-+L)-+2Z6ɎR=½HkMspS>sr .
-B{VhS8+#4.Si }ғj}`TdM06>m:pSEfm+.y;!6uNt ռ/pR:#',t iK1JIWb-a٩LJ7ֵA
-pHu>k?g̖tb6 D`"ujk[9yvKn8ءZ
--3^h`F\g qNrdЌPyCS!?,IqvqzTRP~Z}~RRΉa ȟ+xMN@yOX28rKxQ_z"UgFb_mwˬl85rn+%:ihltߣ2pP*2ϱ8Z;%,4$qm⠠C9/FamnI {L(f9Y=nHwStwA^`:G,/nNlRSi54o%s4 xh#V0|u½da{vWg#]j[J2S0@7-hb6IQ9j83 @%(u~ܝF)9@X^2
-(i^a2<SS%?߬f&uѡrBɳ:<;G2
-oN#Vf +ڰix3`j,;7(HiW (m[mk"񸱴5&k 4Hjph"Rؽ
->EW
-endstream
-endobj
-1112 0 obj
-<< /Type /Page /Contents 1113 0 R /Resources 1111 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 859 0 R /Annots 1115 0 R >>
+1006 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 441.476 159.153 453.432 171.108 ]/A << /S /GoTo /D (page.16) >> >>
endobj
-1115 0 obj
-[ 1003 0 R 1004 0 R 1010 0 R 1011 0 R 1012 0 R 1013 0 R 1014 0 R 1015 0 R 1016 0 R 1017 0 R 1018 0 R 1019 0 R 1020 0 R 1021 0 R 1022 0 R 1023 0 R 1024 0 R 1025 0 R 1026 0 R 1027 0 R 1028 0 R 1029 0 R 1030 0 R 1031 0 R 1032 0 R 1033 0 R 1034 0 R 1035 0 R 1036 0 R 1037 0 R 1038 0 R 1039 0 R 1040 0 R 1041 0 R 1042 0 R 1043 0 R 1044 0 R 1045 0 R 1046 0 R 1047 0 R 1048 0 R 1049 0 R 1050 0 R 1051 0 R 1052 0 R 1053 0 R 1054 0 R 1055 0 R 1056 0 R 1057 0 R 1058 0 R 1059 0 R 1060 0 R 1061 0 R 1062 0 R 1063 0 R 1064 0 R 1065 0 R 1066 0 R 1067 0 R 1068 0 R 1069 0 R 1070 0 R 1071 0 R 1072 0 R 1073 0 R 1074 0 R 1075 0 R 1076 0 R 1077 0 R 1078 0 R 1079 0 R 1080 0 R 1081 0 R 1082 0 R 1083 0 R 1084 0 R 1085 0 R 1086 0 R 1087 0 R 1088 0 R 1089 0 R 1090 0 R 1091 0 R 1092 0 R 1093 0 R 1094 0 R 1095 0 R 1096 0 R 1097 0 R 1098 0 R 1099 0 R 1100 0 R 1101 0 R 1102 0 R 1103 0 R 1104 0 R 1105 0 R 1106 0 R 1107 0 R 1108 0 R 1109 0 R ]
+1007 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 399.715 147.197 406.689 159.153 ]/A << /S /GoTo /D (page.4) >> >>
endobj
-1003 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 170.14 758.022 182.095 768.971 ]/A << /S /GoTo /D (page.55) >> >>
+1008 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 410.784 147.197 422.958 159.153 ]/A << /S /GoTo /D (page.65) >> >>
endobj
-1004 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 228.66 745.619 240.615 757.574 ]/A << /S /GoTo /D (page.35) >> >>
+1009 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 471.825 135.242 483.78 147.197 ]/A << /S /GoTo /D (page.55) >> >>
endobj
1010 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 158.135 734.102 170.09 745.17 ]/A << /S /GoTo /D (page.50) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 447.336 103.245 459.292 115.2 ]/A << /S /GoTo /D (page.39) >> >>
endobj
1011 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 164.81 722.147 176.765 733.106 ]/A << /S /GoTo /D (page.50) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 479.725 91.29 491.68 103.245 ]/A << /S /GoTo /D (page.48) >> >>
endobj
1012 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 202.279 688.403 209.253 699.233 ]/A << /S /GoTo /D (page.9) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 414.201 67.379 426.156 79.334 ]/A << /S /GoTo /D (page.40) >> >>
endobj
1013 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 212.242 688.403 224.197 699.233 ]/A << /S /GoTo /D (page.16) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 430.25 67.379 442.425 79.334 ]/A << /S /GoTo /D (page.58) >> >>
endobj
-1014 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 166.205 675.88 173.178 687.835 ]/A << /S /GoTo /D (page.4) >> >>
+1019 0 obj
+<< /D [ 1017 0 R /XYZ 78.37 808.885 null ] >>
endobj
-1015 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 117.198 664.493 129.153 675.432 ]/A << /S /GoTo /D (page.26) >> >>
+357 0 obj
+<< /D [ 1017 0 R /XYZ 79.37 706.717 null ] >>
endobj
1016 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 120.825 652.528 132.78 663.477 ]/A << /S /GoTo /D (page.26) >> >>
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F68 402 0 R /F66 389 0 R /F15 381 0 R /F56 384 0 R /F57 385 0 R /F55 383 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-1017 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 136.875 652.528 149.049 663.477 ]/A << /S /GoTo /D (page.45) >> >>
+1127 0 obj
+<< /Filter /FlateDecode /Length 3263 >>
+stream
+x\Ɏ$7W
+I "rtЮX(%,&&ˏoݔ}":)!ԛ7Nۿ~h)5=[?<C׼1XKOP Mo)o/enߵs&Nwѱqt?DYɊ [icS-AJ絴\K35dg/,CCS.ua%˓d&ysz'i}
+ W-k_+͸+煉ML ~dcUIi)>pK.uLX~7-*p7x`nn'uVF݀gY̚I
+zޢIᶫ*WߒVQ*G;Ieq_> <ohouD%^h8%FܩVWt֧4岧/ jF*{-z]z_+yX[ޜDdF(]-'~';]\ Y2 ̡*0[%P:Yo4-(.Y.mM܋i ב<kzzx:^:,"΍w_($m ]-]@O
+$IMa{LXtI.xF>;RwY)ёlñ(%_g4#pwZ$,:O#tP퐒?cp^w|_٢Z
+Xy\BY C4A ߸[ *v d,dMx߂ <$[m40W!jhUn1?ղe'_`R>@j#lְm 0 7wN*Vo(u;9
+
+|huɻWZw4 YAT f< >ZFZpƁ_T,Ntk0֘#
+S˽9a*sN7O30J;7FuڗHHηq'|AgM0p@riŒM" ձt|Zc6=DƛA:4Y)P9)7ũ]|kD:(+DVrmVJۨ(3KqsH'JW+:M-kDVY,?qJze8/*hBDžlaMS̰#gL06&!i0&C2Lz/2Qn;Ҵ4ϾBϻk(yֹDZ3$r⒚0X5F@3rka[KOpdA .g՝P:IMC@8m9=J7Cz@6vrہYe2ȄyKTZ~Spo@3xdzwn)cNAx㸮<gC^ dBSZ@
+?k:j\rS}ԝ&l6ĭaK=oKpzXs뀛A`9ǔlneNE>8~?`3t_Gm ^8˙ G)+uDh~[}%lqRMeKJwS16Ov+t/1T_T`XSz9r)^lv&JƮ|>]AdVIr`S;هrT1c]
+MP{ y_N9%70pZ*RԅD̕l18~
+fy(YML^yУR@)<&_IӑX
+`ݺ-uqq\Gċt=|&o8Om0+2{[bOYyG`=½0F0bឭ
+endstream
endobj
-1018 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 171.305 640.015 183.261 651.97 ]/A << /S /GoTo /D (page.39) >> >>
+1126 0 obj
+<< /Type /Page /Contents 1127 0 R /Resources 1125 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1129 0 R /Annots 1130 0 R >>
endobj
-1019 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 143.131 628.06 155.086 640.015 ]/A << /S /GoTo /D (page.39) >> >>
+1130 0 obj
+[ 1014 0 R 1015 0 R 1021 0 R 1022 0 R 1023 0 R 1024 0 R 1025 0 R 1026 0 R 1027 0 R 1028 0 R 1029 0 R 1030 0 R 1031 0 R 1032 0 R 1033 0 R 1034 0 R 1035 0 R 1036 0 R 1037 0 R 1038 0 R 1039 0 R 1040 0 R 1041 0 R 1042 0 R 1043 0 R 1044 0 R 1045 0 R 1046 0 R 1047 0 R 1048 0 R 1049 0 R 1050 0 R 1051 0 R 1052 0 R 1053 0 R 1054 0 R 1055 0 R 1056 0 R 1057 0 R 1058 0 R 1059 0 R 1060 0 R 1061 0 R 1062 0 R 1063 0 R 1064 0 R 1065 0 R 1066 0 R 1067 0 R 1068 0 R 1069 0 R 1070 0 R 1071 0 R 1072 0 R 1073 0 R 1074 0 R 1075 0 R 1076 0 R 1077 0 R 1078 0 R 1079 0 R 1080 0 R 1081 0 R 1082 0 R 1083 0 R 1084 0 R 1085 0 R 1086 0 R 1087 0 R 1088 0 R 1089 0 R 1090 0 R 1091 0 R 1092 0 R 1093 0 R 1094 0 R 1095 0 R 1096 0 R 1097 0 R 1098 0 R 1099 0 R 1100 0 R 1101 0 R 1102 0 R 1103 0 R 1104 0 R 1105 0 R 1106 0 R 1107 0 R 1108 0 R 1109 0 R 1110 0 R 1111 0 R 1112 0 R 1113 0 R 1114 0 R 1115 0 R 1116 0 R 1117 0 R 1118 0 R 1119 0 R 1120 0 R ]
endobj
-1020 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 194.309 616.104 206.264 628.06 ]/A << /S /GoTo /D (page.39) >> >>
+1014 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 249.361 757.574 261.316 769.529 ]/A << /S /GoTo /D (page.42) >> >>
+endobj
+1015 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 265.411 757.574 277.585 769.529 ]/A << /S /GoTo /D (page.58) >> >>
endobj
1021 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 167.799 604.149 179.754 616.104 ]/A << /S /GoTo /D (page.39) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 272.085 745.619 284.041 757.574 ]/A << /S /GoTo /D (page.42) >> >>
endobj
1022 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 225.681 570.486 237.637 581.674 ]/A << /S /GoTo /D (page.53) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 170.14 734.112 182.095 745.061 ]/A << /S /GoTo /D (page.56) >> >>
endobj
1023 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 230.912 558.53 242.867 569.718 ]/A << /S /GoTo /D (page.53) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 228.66 721.708 240.615 733.664 ]/A << /S /GoTo /D (page.36) >> >>
endobj
1024 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 131.535 525.016 143.49 535.845 ]/A << /S /GoTo /D (page.29) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 158.135 710.192 170.09 721.26 ]/A << /S /GoTo /D (page.51) >> >>
endobj
1025 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 147.226 513.061 159.181 523.89 ]/A << /S /GoTo /D (page.15) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 164.81 698.236 176.765 709.195 ]/A << /S /GoTo /D (page.51) >> >>
endobj
1026 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 177.721 488.583 189.896 500.538 ]/A << /S /GoTo /D (page.65) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 202.279 665.027 214.234 675.857 ]/A << /S /GoTo /D (page.10) >> >>
endobj
1027 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 115.843 477.195 127.799 488.025 ]/A << /S /GoTo /D (page.11) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 217.223 665.027 229.178 675.857 ]/A << /S /GoTo /D (page.17) >> >>
endobj
1028 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 163.983 453.285 170.957 464.154 ]/A << /S /GoTo /D (page.5) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 166.205 652.504 173.178 664.459 ]/A << /S /GoTo /D (page.4) >> >>
endobj
1029 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 184.904 441.33 196.86 452.199 ]/A << /S /GoTo /D (page.36) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 117.198 641.117 129.153 652.056 ]/A << /S /GoTo /D (page.27) >> >>
endobj
1030 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 221.238 429.365 233.193 440.244 ]/A << /S /GoTo /D (page.11) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 120.825 629.152 132.78 640.101 ]/A << /S /GoTo /D (page.27) >> >>
endobj
1031 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 118.224 407.168 130.18 416.015 ]/A << /S /GoTo /D (page.31) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 136.875 629.152 149.049 640.101 ]/A << /S /GoTo /D (page.46) >> >>
endobj
1032 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 121.074 393.22 133.029 404.339 ]/A << /S /GoTo /D (page.28) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 171.305 616.639 183.261 628.594 ]/A << /S /GoTo /D (page.40) >> >>
endobj
1033 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 163.983 369.599 170.957 380.468 ]/A << /S /GoTo /D (page.5) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 143.131 604.683 155.086 616.639 ]/A << /S /GoTo /D (page.40) >> >>
endobj
1034 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 184.904 357.644 196.86 368.513 ]/A << /S /GoTo /D (page.36) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 194.309 592.728 206.264 604.683 ]/A << /S /GoTo /D (page.40) >> >>
endobj
1035 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 221.238 345.679 233.193 356.558 ]/A << /S /GoTo /D (page.12) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 167.799 580.773 179.754 592.728 ]/A << /S /GoTo /D (page.40) >> >>
endobj
1036 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 181.487 333.723 193.442 344.563 ]/A << /S /GoTo /D (page.12) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 225.681 547.644 237.637 558.832 ]/A << /S /GoTo /D (page.54) >> >>
endobj
1037 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 197.537 333.723 209.711 344.563 ]/A << /S /GoTo /D (page.57) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 230.912 535.688 242.867 546.876 ]/A << /S /GoTo /D (page.54) >> >>
endobj
1038 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 121.074 299.86 134.523 310.69 ]/A << /S /GoTo /D (page.27) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 131.535 502.708 143.49 513.538 ]/A << /S /GoTo /D (page.30) >> >>
endobj
1039 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 138.618 299.86 150.573 310.69 ]/A << /S /GoTo /D (page.54) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 147.226 490.753 159.181 501.582 ]/A << /S /GoTo /D (page.16) >> >>
endobj
1040 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 154.538 287.895 166.493 298.774 ]/A << /S /GoTo /D (page.55) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 177.721 466.275 189.896 478.23 ]/A << /S /GoTo /D (page.66) >> >>
endobj
1041 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 240.207 275.382 252.162 287.337 ]/A << /S /GoTo /D (page.31) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 115.843 454.888 127.799 465.717 ]/A << /S /GoTo /D (page.11) >> >>
endobj
1042 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 191.3 263.427 203.256 275.382 ]/A << /S /GoTo /D (page.46) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 163.983 430.977 170.957 441.846 ]/A << /S /GoTo /D (page.4) >> >>
endobj
1043 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 187.295 229.554 199.251 241.509 ]/A << /S /GoTo /D (page.46) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 184.904 419.022 196.86 429.891 ]/A << /S /GoTo /D (page.37) >> >>
endobj
1044 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 212.501 195.681 224.456 207.636 ]/A << /S /GoTo /D (page.38) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 221.238 407.057 233.193 417.936 ]/A << /S /GoTo /D (page.12) >> >>
endobj
1045 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 233.61 183.726 245.565 195.681 ]/A << /S /GoTo /D (page.41) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 118.224 384.86 130.18 393.707 ]/A << /S /GoTo /D (page.32) >> >>
endobj
1046 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 251.861 171.771 263.816 183.726 ]/A << /S /GoTo /D (page.41) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 121.074 370.912 133.029 382.031 ]/A << /S /GoTo /D (page.29) >> >>
endobj
1047 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 189.716 160.304 201.672 171.213 ]/A << /S /GoTo /D (page.23) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 163.983 347.291 170.957 358.16 ]/A << /S /GoTo /D (page.4) >> >>
endobj
1048 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 204.66 160.304 216.616 171.213 ]/A << /S /GoTo /D (page.25) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 184.904 335.336 196.86 346.205 ]/A << /S /GoTo /D (page.37) >> >>
endobj
1049 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 115.505 148.418 127.46 159.258 ]/A << /S /GoTo /D (page.26) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 221.238 323.371 233.193 334.25 ]/A << /S /GoTo /D (page.12) >> >>
endobj
1050 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 131.554 148.418 143.729 159.258 ]/A << /S /GoTo /D (page.45) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 181.487 311.416 193.442 322.255 ]/A << /S /GoTo /D (page.12) >> >>
endobj
1051 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 147.823 148.418 159.998 159.258 ]/A << /S /GoTo /D (page.59) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 197.537 311.416 209.711 322.255 ]/A << /S /GoTo /D (page.58) >> >>
endobj
1052 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 119.131 136.463 131.086 147.302 ]/A << /S /GoTo /D (page.26) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 121.074 278.087 134.523 288.916 ]/A << /S /GoTo /D (page.28) >> >>
endobj
1053 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 135.181 136.463 147.355 147.302 ]/A << /S /GoTo /D (page.45) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 138.618 278.087 150.573 288.916 ]/A << /S /GoTo /D (page.55) >> >>
endobj
1054 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 115.843 124.518 127.799 135.347 ]/A << /S /GoTo /D (page.27) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 154.538 266.122 166.493 277.001 ]/A << /S /GoTo /D (page.56) >> >>
endobj
1055 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 211.116 88.642 223.071 99.522 ]/A << /S /GoTo /D (page.33) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 240.207 253.609 252.162 265.564 ]/A << /S /GoTo /D (page.32) >> >>
endobj
1056 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 132.371 76.568 144.327 87.636 ]/A << /S /GoTo /D (page.50) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 191.3 241.653 203.256 253.609 ]/A << /S /GoTo /D (page.47) >> >>
endobj
1057 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 408.97 745.619 420.925 757.574 ]/A << /S /GoTo /D (page.37) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 187.295 208.315 199.251 220.27 ]/A << /S /GoTo /D (page.47) >> >>
endobj
1058 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 441.15 733.664 453.105 745.619 ]/A << /S /GoTo /D (page.35) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 212.501 174.976 224.456 186.931 ]/A << /S /GoTo /D (page.40) >> >>
endobj
1059 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 415.386 722.197 427.341 733.205 ]/A << /S /GoTo /D (page.38) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 233.61 163.021 245.565 174.976 ]/A << /S /GoTo /D (page.42) >> >>
endobj
1060 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 436.515 709.753 448.47 721.708 ]/A << /S /GoTo /D (page.13) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 251.861 151.065 263.816 163.021 ]/A << /S /GoTo /D (page.42) >> >>
endobj
1061 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 359.247 698.236 371.202 709.195 ]/A << /S /GoTo /D (page.46) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 189.716 139.598 201.672 150.507 ]/A << /S /GoTo /D (page.24) >> >>
endobj
1062 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 403.81 686.281 415.765 697.24 ]/A << /S /GoTo /D (page.47) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 204.66 139.598 216.616 150.507 ]/A << /S /GoTo /D (page.26) >> >>
endobj
1063 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 461.434 661.933 473.389 673.888 ]/A << /S /GoTo /D (page.34) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 115.505 127.713 127.46 138.552 ]/A << /S /GoTo /D (page.27) >> >>
endobj
1064 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 482.016 649.977 493.972 661.933 ]/A << /S /GoTo /D (page.31) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 131.554 127.713 143.729 138.552 ]/A << /S /GoTo /D (page.46) >> >>
endobj
1065 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 498.066 649.977 510.241 661.933 ]/A << /S /GoTo /D (page.59) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 147.823 127.713 159.998 138.552 ]/A << /S /GoTo /D (page.60) >> >>
endobj
1066 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 422.111 638.022 429.085 649.977 ]/A << /S /GoTo /D (page.5) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 119.131 115.758 131.086 126.597 ]/A << /S /GoTo /D (page.27) >> >>
endobj
1067 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 398.51 604.149 410.465 616.104 ]/A << /S /GoTo /D (page.27) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 135.181 115.758 147.355 126.597 ]/A << /S /GoTo /D (page.46) >> >>
endobj
1068 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 474.542 592.194 486.498 604.149 ]/A << /S /GoTo /D (page.62) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 115.843 103.813 127.799 114.642 ]/A << /S /GoTo /D (page.28) >> >>
endobj
1069 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 463.344 580.239 475.3 592.194 ]/A << /S /GoTo /D (page.14) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 211.116 67.937 223.071 78.816 ]/A << /S /GoTo /D (page.34) >> >>
endobj
1070 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 387.232 534.979 394.206 545.848 ]/A << /S /GoTo /D (page.5) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 355.62 758.012 367.576 769.081 ]/A << /S /GoTo /D (page.51) >> >>
endobj
1071 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 408.153 523.024 420.109 533.893 ]/A << /S /GoTo /D (page.52) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 408.97 733.664 420.925 745.619 ]/A << /S /GoTo /D (page.38) >> >>
endobj
1072 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 444.487 511.058 456.442 521.938 ]/A << /S /GoTo /D (page.48) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 441.15 721.708 453.105 733.664 ]/A << /S /GoTo /D (page.36) >> >>
endobj
1073 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 427.909 498.545 439.864 510.5 ]/A << /S /GoTo /D (page.22) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 415.386 710.241 427.341 721.25 ]/A << /S /GoTo /D (page.40) >> >>
endobj
1074 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 365.244 486.809 372.218 497.987 ]/A << /S /GoTo /D (page.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 436.515 697.798 448.47 709.753 ]/A << /S /GoTo /D (page.14) >> >>
endobj
1075 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 417.548 474.854 429.503 486.032 ]/A << /S /GoTo /D (page.47) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 359.247 686.281 371.202 697.24 ]/A << /S /GoTo /D (page.47) >> >>
endobj
1076 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 370.475 463.248 377.449 474.077 ]/A << /S /GoTo /D (page.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 403.81 674.326 415.765 685.285 ]/A << /S /GoTo /D (page.48) >> >>
endobj
1077 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 396.627 451.293 408.582 462.122 ]/A << /S /GoTo /D (page.24) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 461.434 649.977 473.389 661.933 ]/A << /S /GoTo /D (page.35) >> >>
endobj
1078 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 412.676 451.293 424.851 462.122 ]/A << /S /GoTo /D (page.61) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 482.016 638.022 493.972 649.977 ]/A << /S /GoTo /D (page.32) >> >>
endobj
1079 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 401.857 439.337 413.812 450.167 ]/A << /S /GoTo /D (page.48) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 498.066 638.022 510.241 649.977 ]/A << /S /GoTo /D (page.60) >> >>
endobj
1080 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 401.857 427.093 408.831 438.212 ]/A << /S /GoTo /D (page.1) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 422.111 626.067 429.085 638.022 ]/A << /S /GoTo /D (page.5) >> >>
endobj
1081 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 375.705 415.427 382.679 426.256 ]/A << /S /GoTo /D (page.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 398.51 592.194 410.465 604.149 ]/A << /S /GoTo /D (page.28) >> >>
endobj
1082 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 380.935 403.472 387.909 414.301 ]/A << /S /GoTo /D (page.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 474.542 580.239 486.498 592.194 ]/A << /S /GoTo /D (page.63) >> >>
endobj
1083 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 380.935 391.517 392.891 402.346 ]/A << /S /GoTo /D (page.24) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 463.344 568.284 475.3 580.239 ]/A << /S /GoTo /D (page.14) >> >>
endobj
1084 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 363.939 379.562 375.894 390.391 ]/A << /S /GoTo /D (page.48) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 387.232 523.024 394.206 533.893 ]/A << /S /GoTo /D (page.5) >> >>
endobj
1085 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 339.571 367.606 351.526 378.436 ]/A << /S /GoTo /D (page.22) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 408.153 511.068 420.109 521.938 ]/A << /S /GoTo /D (page.53) >> >>
endobj
1086 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 398.719 355.083 410.674 367.038 ]/A << /S /GoTo /D (page.48) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 444.487 499.103 456.442 509.982 ]/A << /S /GoTo /D (page.49) >> >>
endobj
1087 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 413.663 355.083 425.618 367.038 ]/A << /S /GoTo /D (page.52) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 427.909 486.59 439.864 498.545 ]/A << /S /GoTo /D (page.23) >> >>
endobj
1088 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 466.714 343.128 478.669 355.083 ]/A << /S /GoTo /D (page.38) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 365.244 474.854 372.218 486.032 ]/A << /S /GoTo /D (page.2) >> >>
endobj
1089 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 426.654 331.741 438.609 342.57 ]/A << /S /GoTo /D (page.39) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 417.548 462.899 429.503 474.077 ]/A << /S /GoTo /D (page.48) >> >>
endobj
1090 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 441.598 331.741 453.553 342.57 ]/A << /S /GoTo /D (page.43) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 370.475 451.293 377.449 462.122 ]/A << /S /GoTo /D (page.2) >> >>
endobj
1091 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 457.648 331.741 469.822 342.57 ]/A << /S /GoTo /D (page.57) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 396.627 439.337 408.582 450.167 ]/A << /S /GoTo /D (page.25) >> >>
endobj
1092 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 354.783 319.437 366.739 330.615 ]/A << /S /GoTo /D (page.12) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 412.676 439.337 424.851 450.167 ]/A << /S /GoTo /D (page.62) >> >>
endobj
1093 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 383.546 295.307 395.501 307.263 ]/A << /S /GoTo /D (page.40) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 401.857 427.382 413.812 438.212 ]/A << /S /GoTo /D (page.49) >> >>
endobj
1094 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 399.595 295.307 411.77 307.263 ]/A << /S /GoTo /D (page.57) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 401.857 415.138 408.831 426.256 ]/A << /S /GoTo /D (page.1) >> >>
endobj
1095 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 356.766 283.801 368.721 294.859 ]/A << /S /GoTo /D (page.28) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 375.705 403.472 382.679 414.301 ]/A << /S /GoTo /D (page.2) >> >>
endobj
1096 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 407.087 249.699 419.043 260.877 ]/A << /S /GoTo /D (page.47) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 380.935 391.517 387.909 402.346 ]/A << /S /GoTo /D (page.2) >> >>
endobj
1097 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 455.854 225.569 462.828 237.524 ]/A << /S /GoTo /D (page.4) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 380.935 379.562 392.891 390.391 ]/A << /S /GoTo /D (page.25) >> >>
endobj
1098 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 420.089 201.659 432.044 213.614 ]/A << /S /GoTo /D (page.17) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 363.939 367.606 375.894 378.436 ]/A << /S /GoTo /D (page.49) >> >>
endobj
1099 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 434.983 177.748 446.938 189.703 ]/A << /S /GoTo /D (page.37) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 339.571 355.651 351.526 366.481 ]/A << /S /GoTo /D (page.23) >> >>
endobj
1100 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 427.22 143.875 439.175 155.831 ]/A << /S /GoTo /D (page.41) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 398.719 343.128 410.674 355.083 ]/A << /S /GoTo /D (page.49) >> >>
endobj
1101 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 376.98 132.359 388.935 143.317 ]/A << /S /GoTo /D (page.54) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 413.663 343.128 425.618 355.083 ]/A << /S /GoTo /D (page.53) >> >>
endobj
1102 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 391.396 120.244 403.351 131.362 ]/A << /S /GoTo /D (page.46) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 466.714 331.173 478.669 343.128 ]/A << /S /GoTo /D (page.39) >> >>
endobj
1103 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 368.323 108.448 380.278 119.517 ]/A << /S /GoTo /D (page.49) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 426.654 319.786 438.609 330.615 ]/A << /S /GoTo /D (page.40) >> >>
endobj
1104 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 384.373 108.448 396.547 119.517 ]/A << /S /GoTo /D (page.67) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 441.598 319.786 453.553 330.615 ]/A << /S /GoTo /D (page.44) >> >>
endobj
1105 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 370.475 96.274 377.449 107.452 ]/A << /S /GoTo /D (page.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 457.648 319.786 469.822 330.615 ]/A << /S /GoTo /D (page.58) >> >>
endobj
1106 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 375.705 84.378 382.679 95.497 ]/A << /S /GoTo /D (page.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 354.783 307.482 366.739 318.66 ]/A << /S /GoTo /D (page.13) >> >>
endobj
1107 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 425.588 72.154 437.543 84.099 ]/A << /S /GoTo /D (page.27) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 383.546 283.352 395.501 295.307 ]/A << /S /GoTo /D (page.41) >> >>
endobj
1108 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 440.532 72.154 452.487 84.099 ]/A << /S /GoTo /D (page.32) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 399.595 283.352 411.77 295.307 ]/A << /S /GoTo /D (page.58) >> >>
endobj
1109 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 456.582 72.154 468.756 84.099 ]/A << /S /GoTo /D (page.58) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 356.766 271.845 368.721 282.904 ]/A << /S /GoTo /D (page.29) >> >>
endobj
-1114 0 obj
-<< /D [ 1112 0 R /XYZ 78.37 808.885 null ] >>
+1110 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 407.087 237.743 419.043 248.921 ]/A << /S /GoTo /D (page.48) >> >>
endobj
1111 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 377 0 R /F56 380 0 R /F67 385 0 R /F57 381 0 R /F55 379 0 R >> /ProcSet [ /PDF /Text ] >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 455.854 213.614 462.828 225.569 ]/A << /S /GoTo /D (page.4) >> >>
endobj
-1205 0 obj
-<< /Filter /FlateDecode /Length 3155 >>
-stream
-x\ˎ$W\#@Z,o{2! lkŨ;+E<N̟_@w "F7EM87JHT_R?Qv ¸ J))CJ'c"EKOK?QY/]M$ɟ6#! *}֟~謹͍ʮҰhF#h$}S%>K<B)|@έX2Q/
-h{M"'<Gk/ 5 M˧qEHQH: 7W]UZ7*qf^e޼E$jX]jFbDY.`ñ33%Lzߩgr@S%0\*iZxa089:c@].oI`-92~uB`ɶbok<7,mve.rCz3Z8z(&3~d.Sf] $,Y|`qz/6&VR;ϗ%O5.ΗʡpUzƌ2Tds`]T O2*q$fZL2Zf+<"I=kd'AG&s.G( N4ȁa> ,ˇM1z7 Sn
-|c-@JkA' G)9\9nop8QkCt&j7Gl :dƕy}X
-*UĆ.He8
-QPG SouW?g7ύw\8w`Q8N]P$)?N
-U'A£USj6!VbFĬZE !m :[ŁVî(BR&HZgF៬O*5b^e+0gk|.7T|2 u
-'7]3v}G2⤌P
-[N U.MӔ>T
-vOT-")rZĵwx4/P6G_??3p4?Z7S>nrg-ጭ޺s`G U;<G\2a .IŖ -tz\?v0^mS\mSIb?F<$( {3邹xG@qCn8ZeXWyoF5&
-endstream
+1112 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 420.089 189.703 432.044 201.659 ]/A << /S /GoTo /D (page.18) >> >>
endobj
-1204 0 obj
-<< /Type /Page /Contents 1205 0 R /Resources 1203 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1207 0 R /Annots 1208 0 R >>
+1113 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 434.983 165.793 446.938 177.748 ]/A << /S /GoTo /D (page.38) >> >>
endobj
-1208 0 obj
-[ 1110 0 R 1116 0 R 1117 0 R 1118 0 R 1119 0 R 1120 0 R 1121 0 R 1122 0 R 1123 0 R 1124 0 R 1125 0 R 1126 0 R 1127 0 R 1128 0 R 1129 0 R 1130 0 R 1131 0 R 1132 0 R 1133 0 R 1134 0 R 1135 0 R 1136 0 R 1137 0 R 1138 0 R 1139 0 R 1140 0 R 1141 0 R 1142 0 R 1143 0 R 1144 0 R 1145 0 R 1146 0 R 1147 0 R 1148 0 R 1149 0 R 1150 0 R 1151 0 R 1152 0 R 1153 0 R 1154 0 R 1155 0 R 1156 0 R 1157 0 R 1158 0 R 1159 0 R 1160 0 R 1161 0 R 1162 0 R 1163 0 R 1164 0 R 1165 0 R 1166 0 R 1167 0 R 1168 0 R 1169 0 R 1170 0 R 1171 0 R 1172 0 R 1173 0 R 1174 0 R 1175 0 R 1176 0 R 1177 0 R 1178 0 R 1179 0 R 1180 0 R 1181 0 R 1182 0 R 1183 0 R 1184 0 R 1185 0 R 1186 0 R 1187 0 R 1188 0 R 1189 0 R 1190 0 R 1191 0 R 1192 0 R 1193 0 R 1194 0 R 1195 0 R 1196 0 R 1197 0 R 1198 0 R 1199 0 R 1200 0 R 1201 0 R 1202 0 R ]
+1114 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 427.22 131.92 439.175 143.875 ]/A << /S /GoTo /D (page.42) >> >>
endobj
-1110 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 246.633 745.619 258.588 757.574 ]/A << /S /GoTo /D (page.31) >> >>
+1115 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 376.98 120.403 388.935 131.362 ]/A << /S /GoTo /D (page.55) >> >>
endobj
1116 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 118.224 723.98 130.18 732.926 ]/A << /S /GoTo /D (page.17) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 391.396 108.289 403.351 119.407 ]/A << /S /GoTo /D (page.47) >> >>
endobj
1117 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 131.584 710.321 143.54 721.151 ]/A << /S /GoTo /D (page.30) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 368.323 96.493 380.278 107.562 ]/A << /S /GoTo /D (page.50) >> >>
endobj
1118 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 142.354 698.366 154.309 708.916 ]/A << /S /GoTo /D (page.30) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 384.373 96.493 396.547 107.562 ]/A << /S /GoTo /D (page.68) >> >>
endobj
1119 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 272.018 685.843 283.973 697.798 ]/A << /S /GoTo /D (page.19) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 370.475 84.319 377.449 95.497 ]/A << /S /GoTo /D (page.2) >> >>
endobj
1120 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 241.682 673.888 248.655 685.843 ]/A << /S /GoTo /D (page.5) >> >>
-endobj
-1121 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 185.721 649.977 197.677 661.933 ]/A << /S /GoTo /D (page.18) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 375.705 72.423 382.679 83.542 ]/A << /S /GoTo /D (page.2) >> >>
endobj
-1122 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 280.187 638.022 292.142 649.977 ]/A << /S /GoTo /D (page.18) >> >>
+1128 0 obj
+<< /D [ 1126 0 R /XYZ 78.37 808.885 null ] >>
endobj
-1123 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 211.116 602.715 223.071 613.594 ]/A << /S /GoTo /D (page.33) >> >>
+1125 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F57 385 0 R /F56 384 0 R /F66 389 0 R /F55 383 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-1124 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 139.046 590.64 151.002 601.599 ]/A << /S /GoTo /D (page.50) >> >>
+1220 0 obj
+<< /Filter /FlateDecode /Length 3263 >>
+stream
+x\͒+ ޟ . !*5U3׷*KeAd1-$!O?o|D"Y|3
+͓Qn>W5ZS߇qُ }͟7W[&Z;c;>̝q#LbDEb
+]m[:j#+pNT%RN/yôD0SMԮP!{_vƹ3dlNlrw:g)$7
+֧<:[3*%gCݙ=Kή
+? IV|>3|[ HGIyYPэ^1K1$k#nI,@:b `58ȸ<ٸ\(Z(cc1'#z S#plUZ+NH
+7/3Ayl\JB[y
+L:8xA!ڗ0>_+-@VR~(tiP:w4 I@I<a6]p:.DT̒ Q8x;ڮ`Qmw3 ZWEzbOwy˽ G <9FïQnRBoΞ<(kV[%æjN8w@UTU*OX[+EjCi8k7y!Zu6S
+k^5TO
+87{ZdSEOFIpK4ox5]jg&}2p٣z pumZQdI4WkJX1VQ͉"gJ"6g+e#K;ns@ Jl9m=P|
+ L@jJX蹆s*+]=SC@
+da3ۗ3L-qBK/7 }12
+L=tBGݦ)hdl~?\h_ =`mхa"
+؎c<T1unqC4"4а }\bscE(]j4.a㳽w4ǩ8>7vBo荤~mzh$5[\x9x :Goyck~|'*_9"4"pz\2zxb#^̲wʅPڧ)܏ NUX
+r.J!p|0ddLU]C=˥XrSdO)gĜAQM
+endstream
endobj
-1125 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 185.721 566.291 197.677 578.246 ]/A << /S /GoTo /D (page.37) >> >>
+1219 0 obj
+<< /Type /Page /Contents 1220 0 R /Resources 1218 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1129 0 R /Annots 1222 0 R >>
endobj
-1126 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 224.576 554.336 236.531 566.291 ]/A << /S /GoTo /D (page.35) >> >>
+1222 0 obj
+[ 1121 0 R 1122 0 R 1123 0 R 1124 0 R 1131 0 R 1132 0 R 1133 0 R 1134 0 R 1135 0 R 1136 0 R 1137 0 R 1138 0 R 1139 0 R 1140 0 R 1141 0 R 1142 0 R 1143 0 R 1144 0 R 1145 0 R 1146 0 R 1147 0 R 1148 0 R 1149 0 R 1150 0 R 1151 0 R 1152 0 R 1153 0 R 1154 0 R 1155 0 R 1156 0 R 1157 0 R 1158 0 R 1159 0 R 1160 0 R 1161 0 R 1162 0 R 1163 0 R 1164 0 R 1165 0 R 1166 0 R 1167 0 R 1168 0 R 1169 0 R 1170 0 R 1171 0 R 1172 0 R 1173 0 R 1174 0 R 1175 0 R 1176 0 R 1177 0 R 1178 0 R 1179 0 R 1180 0 R 1181 0 R 1182 0 R 1183 0 R 1184 0 R 1185 0 R 1186 0 R 1187 0 R 1188 0 R 1189 0 R 1190 0 R 1191 0 R 1192 0 R 1193 0 R 1194 0 R 1195 0 R 1196 0 R 1197 0 R 1198 0 R 1199 0 R 1200 0 R 1201 0 R 1202 0 R 1203 0 R 1204 0 R 1205 0 R 1206 0 R 1207 0 R 1208 0 R 1209 0 R 1210 0 R 1211 0 R 1212 0 R 1213 0 R 1214 0 R 1215 0 R 1216 0 R 1217 0 R ]
endobj
-1127 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 121.074 542.949 133.248 553.778 ]/A << /S /GoTo /D (page.21) >> >>
+1121 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 202.339 757.584 214.294 769.529 ]/A << /S /GoTo /D (page.28) >> >>
endobj
-1128 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 137.343 542.949 149.517 553.778 ]/A << /S /GoTo /D (page.23) >> >>
+1122 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 217.283 757.584 229.238 769.529 ]/A << /S /GoTo /D (page.33) >> >>
endobj
-1129 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 153.612 542.949 165.567 553.778 ]/A << /S /GoTo /D (page.45) >> >>
+1123 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 233.333 757.584 245.507 769.529 ]/A << /S /GoTo /D (page.59) >> >>
endobj
-1130 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 163.983 519.038 170.957 529.908 ]/A << /S /GoTo /D (page.5) >> >>
+1124 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 246.633 723.701 258.588 735.656 ]/A << /S /GoTo /D (page.32) >> >>
endobj
1131 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 200.596 507.083 212.551 517.953 ]/A << /S /GoTo /D (page.43) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 118.224 702.062 130.18 710.909 ]/A << /S /GoTo /D (page.18) >> >>
endobj
1132 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 226.12 483.173 238.075 494.002 ]/A << /S /GoTo /D (page.17) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 131.584 688.403 143.54 699.233 ]/A << /S /GoTo /D (page.31) >> >>
endobj
1133 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 242.17 483.173 254.344 494.002 ]/A << /S /GoTo /D (page.57) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 142.354 676.448 154.309 686.999 ]/A << /S /GoTo /D (page.31) >> >>
endobj
1134 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 199.579 471.218 211.535 482.047 ]/A << /S /GoTo /D (page.21) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 272.018 663.925 283.973 675.88 ]/A << /S /GoTo /D (page.20) >> >>
endobj
1135 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 215.629 471.218 227.804 482.047 ]/A << /S /GoTo /D (page.65) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 241.682 651.97 248.655 663.925 ]/A << /S /GoTo /D (page.5) >> >>
endobj
1136 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 207.4 458.695 219.355 470.65 ]/A << /S /GoTo /D (page.23) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 185.721 628.06 197.677 640.015 ]/A << /S /GoTo /D (page.19) >> >>
endobj
1137 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 269.567 446.74 281.522 458.695 ]/A << /S /GoTo /D (page.17) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 280.187 616.104 292.142 628.06 ]/A << /S /GoTo /D (page.19) >> >>
endobj
1138 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 118.224 425.101 130.18 434.047 ]/A << /S /GoTo /D (page.17) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 211.116 580.797 223.071 591.676 ]/A << /S /GoTo /D (page.34) >> >>
endobj
1139 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 131.535 411.093 143.49 422.271 ]/A << /S /GoTo /D (page.22) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 139.046 568.722 151.002 579.681 ]/A << /S /GoTo /D (page.51) >> >>
endobj
1140 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 232.944 398.919 244.899 410.874 ]/A << /S /GoTo /D (page.10) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 185.721 544.373 197.677 556.329 ]/A << /S /GoTo /D (page.38) >> >>
endobj
1141 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 248.994 398.919 261.168 410.874 ]/A << /S /GoTo /D (page.57) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 224.576 532.418 236.531 544.373 ]/A << /S /GoTo /D (page.36) >> >>
endobj
1142 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 204.611 365.046 216.785 377.001 ]/A << /S /GoTo /D (page.21) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 121.074 521.021 133.248 531.86 ]/A << /S /GoTo /D (page.21) >> >>
endobj
1143 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 220.88 365.046 232.835 377.001 ]/A << /S /GoTo /D (page.44) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 137.343 521.021 149.517 531.86 ]/A << /S /GoTo /D (page.24) >> >>
endobj
1144 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 228.26 353.091 240.215 365.046 ]/A << /S /GoTo /D (page.14) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 153.612 521.021 165.567 531.86 ]/A << /S /GoTo /D (page.46) >> >>
endobj
1145 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 142.115 341.694 154.07 352.533 ]/A << /S /GoTo /D (page.38) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 163.983 497.121 170.957 507.99 ]/A << /S /GoTo /D (page.5) >> >>
endobj
1146 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 252.162 329.18 264.117 341.136 ]/A << /S /GoTo /D (page.31) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 200.596 485.166 212.551 496.035 ]/A << /S /GoTo /D (page.44) >> >>
endobj
1147 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 270.982 317.225 282.937 329.18 ]/A << /S /GoTo /D (page.31) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 226.12 461.255 238.075 472.085 ]/A << /S /GoTo /D (page.18) >> >>
endobj
1148 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 276.043 305.27 287.998 317.225 ]/A << /S /GoTo /D (page.31) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 242.17 461.255 254.344 472.085 ]/A << /S /GoTo /D (page.58) >> >>
endobj
1149 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 211.734 281.36 223.689 293.315 ]/A << /S /GoTo /D (page.44) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 199.579 449.3 211.535 460.129 ]/A << /S /GoTo /D (page.22) >> >>
endobj
1150 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 163.335 269.405 175.29 281.36 ]/A << /S /GoTo /D (page.44) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 215.629 449.3 227.804 460.129 ]/A << /S /GoTo /D (page.66) >> >>
endobj
1151 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 193.811 257.449 205.766 269.405 ]/A << /S /GoTo /D (page.35) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 207.4 436.777 219.355 448.732 ]/A << /S /GoTo /D (page.24) >> >>
endobj
1152 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 235.126 245.494 247.081 257.449 ]/A << /S /GoTo /D (page.45) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 269.567 424.822 281.522 436.777 ]/A << /S /GoTo /D (page.18) >> >>
endobj
1153 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 281.698 233.539 293.653 245.494 ]/A << /S /GoTo /D (page.45) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 118.224 403.183 130.18 412.03 ]/A << /S /GoTo /D (page.18) >> >>
endobj
1154 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 145.99 222.152 157.946 232.981 ]/A << /S /GoTo /D (page.10) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 131.535 389.175 143.49 400.354 ]/A << /S /GoTo /D (page.23) >> >>
endobj
1155 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 204.539 209.629 216.494 221.584 ]/A << /S /GoTo /D (page.41) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 232.944 377.001 244.899 388.956 ]/A << /S /GoTo /D (page.11) >> >>
endobj
1156 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 220.589 209.629 232.763 221.584 ]/A << /S /GoTo /D (page.57) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 248.994 377.001 261.168 388.956 ]/A << /S /GoTo /D (page.58) >> >>
endobj
1157 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 118.224 187.99 130.18 196.946 ]/A << /S /GoTo /D (page.34) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 204.611 343.128 216.785 355.083 ]/A << /S /GoTo /D (page.22) >> >>
endobj
1158 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 211.734 161.808 225.183 173.763 ]/A << /S /GoTo /D (page.34) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 220.88 343.128 232.835 355.083 ]/A << /S /GoTo /D (page.45) >> >>
endobj
1159 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 229.278 161.808 241.233 173.763 ]/A << /S /GoTo /D (page.52) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 228.26 331.173 240.215 343.128 ]/A << /S /GoTo /D (page.14) >> >>
endobj
1160 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 245.328 161.808 257.502 173.763 ]/A << /S /GoTo /D (page.63) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 142.115 319.776 154.07 330.615 ]/A << /S /GoTo /D (page.40) >> >>
endobj
1161 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 261.597 161.808 273.771 173.763 ]/A << /S /GoTo /D (page.66) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 252.162 307.263 264.117 319.218 ]/A << /S /GoTo /D (page.32) >> >>
endobj
1162 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 211.734 137.898 225.183 149.853 ]/A << /S /GoTo /D (page.38) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 270.982 295.307 282.937 307.263 ]/A << /S /GoTo /D (page.32) >> >>
endobj
1163 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 147.226 104.593 159.181 115.422 ]/A << /S /GoTo /D (page.39) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 276.043 283.352 287.998 295.307 ]/A << /S /GoTo /D (page.32) >> >>
endobj
1164 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 163.276 104.593 175.45 115.422 ]/A << /S /GoTo /D (page.57) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 211.734 259.442 223.689 271.397 ]/A << /S /GoTo /D (page.45) >> >>
endobj
1165 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 242.15 92.07 254.105 104.025 ]/A << /S /GoTo /D (page.40) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 163.335 247.487 175.29 259.442 ]/A << /S /GoTo /D (page.45) >> >>
endobj
1166 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 152.456 80.682 164.411 91.512 ]/A << /S /GoTo /D (page.40) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 193.811 235.532 205.766 247.487 ]/A << /S /GoTo /D (page.36) >> >>
endobj
1167 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 169.851 68.159 181.806 80.114 ]/A << /S /GoTo /D (page.24) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 235.126 223.576 247.081 235.532 ]/A << /S /GoTo /D (page.46) >> >>
endobj
1168 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 397.732 757.574 409.907 769.529 ]/A << /S /GoTo /D (page.57) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 281.698 211.621 293.653 223.576 ]/A << /S /GoTo /D (page.46) >> >>
endobj
1169 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 417.528 745.619 429.483 757.574 ]/A << /S /GoTo /D (page.43) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 145.99 200.234 157.946 211.063 ]/A << /S /GoTo /D (page.11) >> >>
endobj
1170 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 452.109 733.664 464.064 745.619 ]/A << /S /GoTo /D (page.48) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 204.539 187.711 216.494 199.666 ]/A << /S /GoTo /D (page.42) >> >>
endobj
1171 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 387.232 710.321 394.206 721.19 ]/A << /S /GoTo /D (page.5) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 220.589 187.711 232.763 199.666 ]/A << /S /GoTo /D (page.58) >> >>
endobj
1172 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 398.3 710.321 410.475 721.19 ]/A << /S /GoTo /D (page.56) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 118.224 166.072 130.18 174.919 ]/A << /S /GoTo /D (page.35) >> >>
endobj
1173 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 452.714 698.366 459.688 709.235 ]/A << /S /GoTo /D (page.5) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 211.734 139.89 225.183 151.845 ]/A << /S /GoTo /D (page.35) >> >>
endobj
1174 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 463.783 698.366 475.957 709.235 ]/A << /S /GoTo /D (page.61) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 229.278 139.89 241.233 151.845 ]/A << /S /GoTo /D (page.53) >> >>
endobj
1175 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 421.272 686.411 433.227 697.28 ]/A << /S /GoTo /D (page.14) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 245.328 139.89 257.502 151.845 ]/A << /S /GoTo /D (page.64) >> >>
endobj
1176 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 461.96 673.888 473.915 685.843 ]/A << /S /GoTo /D (page.14) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 261.597 139.89 273.771 151.845 ]/A << /S /GoTo /D (page.67) >> >>
endobj
1177 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 428.587 661.933 435.561 673.888 ]/A << /S /GoTo /D (page.5) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 147.226 106.585 159.181 117.415 ]/A << /S /GoTo /D (page.40) >> >>
endobj
1178 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 439.655 661.933 451.83 673.888 ]/A << /S /GoTo /D (page.56) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 163.276 106.585 175.45 117.415 ]/A << /S /GoTo /D (page.58) >> >>
endobj
1179 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 434.983 616.104 446.938 628.06 ]/A << /S /GoTo /D (page.37) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 242.15 94.062 254.105 106.017 ]/A << /S /GoTo /D (page.41) >> >>
endobj
1180 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 440.253 582.232 452.208 594.187 ]/A << /S /GoTo /D (page.25) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 152.456 82.675 164.411 93.504 ]/A << /S /GoTo /D (page.41) >> >>
endobj
1181 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 456.303 582.232 468.258 594.187 ]/A << /S /GoTo /D (page.49) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 169.851 70.152 181.806 82.107 ]/A << /S /GoTo /D (page.25) >> >>
endobj
1182 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 418.495 570.276 425.468 582.232 ]/A << /S /GoTo /D (page.8) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 397.732 757.574 409.907 769.529 ]/A << /S /GoTo /D (page.58) >> >>
endobj
1183 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 395.112 558.321 407.067 570.276 ]/A << /S /GoTo /D (page.25) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 417.528 745.619 429.483 757.574 ]/A << /S /GoTo /D (page.44) >> >>
endobj
1184 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 411.162 558.321 423.117 570.276 ]/A << /S /GoTo /D (page.49) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 452.109 733.664 464.064 745.619 ]/A << /S /GoTo /D (page.49) >> >>
endobj
1185 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 391.396 546.934 403.351 557.763 ]/A << /S /GoTo /D (page.46) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 434.983 709.753 448.432 721.708 ]/A << /S /GoTo /D (page.39) >> >>
endobj
1186 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 391.396 534.979 403.351 545.808 ]/A << /S /GoTo /D (page.46) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 387.232 686.411 394.206 697.28 ]/A << /S /GoTo /D (page.5) >> >>
endobj
1187 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 339.092 523.024 351.048 533.853 ]/A << /S /GoTo /D (page.27) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 398.3 686.411 410.475 697.28 ]/A << /S /GoTo /D (page.57) >> >>
endobj
1188 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 354.783 511.068 366.739 521.898 ]/A << /S /GoTo /D (page.29) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 452.714 674.456 459.688 685.325 ]/A << /S /GoTo /D (page.5) >> >>
endobj
1189 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 387.232 487.158 394.206 498.027 ]/A << /S /GoTo /D (page.5) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 463.783 674.456 475.957 685.325 ]/A << /S /GoTo /D (page.62) >> >>
endobj
1190 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 408.153 475.203 420.109 486.072 ]/A << /S /GoTo /D (page.36) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 421.272 662.501 433.227 673.37 ]/A << /S /GoTo /D (page.15) >> >>
endobj
1191 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 444.487 463.238 456.442 474.117 ]/A << /S /GoTo /D (page.11) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 461.96 649.977 473.915 661.933 ]/A << /S /GoTo /D (page.15) >> >>
endobj
1192 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 394.754 451.293 406.709 462.122 ]/A << /S /GoTo /D (page.64) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 428.587 638.022 435.561 649.977 ]/A << /S /GoTo /D (page.5) >> >>
endobj
1193 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 370.475 438.989 377.449 450.167 ]/A << /S /GoTo /D (page.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 439.655 638.022 451.83 649.977 ]/A << /S /GoTo /D (page.57) >> >>
endobj
1194 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 370.475 427.033 377.449 438.212 ]/A << /S /GoTo /D (page.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 434.983 592.194 446.938 604.149 ]/A << /S /GoTo /D (page.38) >> >>
endobj
1195 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 375.705 415.427 382.679 426.256 ]/A << /S /GoTo /D (page.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 440.253 558.321 452.208 570.276 ]/A << /S /GoTo /D (page.26) >> >>
endobj
1196 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 375.705 403.472 382.679 414.301 ]/A << /S /GoTo /D (page.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 456.303 558.321 468.258 570.276 ]/A << /S /GoTo /D (page.50) >> >>
endobj
1197 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 423.845 357.644 435.8 368.513 ]/A << /S /GoTo /D (page.24) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 418.495 546.366 425.468 558.321 ]/A << /S /GoTo /D (page.8) >> >>
endobj
1198 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 413.661 345.689 425.616 356.558 ]/A << /S /GoTo /D (page.10) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 395.112 534.411 407.067 546.366 ]/A << /S /GoTo /D (page.26) >> >>
endobj
1199 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 388.059 311.248 400.014 323.203 ]/A << /S /GoTo /D (page.24) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 411.162 534.411 423.117 546.366 ]/A << /S /GoTo /D (page.50) >> >>
endobj
1200 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 406.798 299.293 418.754 311.248 ]/A << /S /GoTo /D (page.27) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 391.396 523.024 403.351 533.853 ]/A << /S /GoTo /D (page.47) >> >>
endobj
1201 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 423.715 287.337 435.67 299.293 ]/A << /S /GoTo /D (page.35) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 391.396 511.068 403.351 521.898 ]/A << /S /GoTo /D (page.47) >> >>
endobj
1202 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 496.183 253.464 508.138 265.42 ]/A << /S /GoTo /D (page.37) >> >>
-endobj
-1206 0 obj
-<< /D [ 1204 0 R /XYZ 78.37 808.885 null ] >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 339.092 499.113 351.048 509.943 ]/A << /S /GoTo /D (page.28) >> >>
endobj
1203 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F67 385 0 R /F15 377 0 R /F56 380 0 R /F55 379 0 R /F57 381 0 R >> /ProcSet [ /PDF /Text ] >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 354.783 487.158 366.739 497.987 ]/A << /S /GoTo /D (page.30) >> >>
endobj
-1249 0 obj
-<< /Filter /FlateDecode /Length 2418 >>
-stream
-x\n#;W( ݾ]g7j;zJUtr;tතu)b_s?~ǝE Hpy7qіI}0?9ˋnϺ?ι'+&f&n{|Ewz-Eep &KA6L f>50uFlInqG[
-!eR辡nDV, B#~jY؟̵}s8_MaT^E }x%4U\~nJw=>6nvw+P}$^QAcQ-#,$AэTz-Gc-orIp C6ם@Ʈfq/+'P?U4"ǀP,ė~dbNHBܹK* KPН9(B2mlDBJf {7-M=_Y{aZC \^ґl, T]+9^uڍc.PUj`G|7U/[Num/"竃Bb19XmTI!TB4{UM-VB9fs=Tr"B۰GeBg:7\'
-Գn3$36D@V(v޳ir:A–q ab/Jt6ҋ^ar}'TK\1-Hȉ z*6(є9sR3:JTߛ|n_Dꋐ79+mGk{=
-Qvؓe
-{SW~ ӚSmJ
-M;jS6af2iD5)ڼm/77WX+͌]xP3 .<lTz
-%|N]
-f\2@]t\Aȼ ~8
-B{88QPv+kJ7]!E%[E>v*ІME{A-394i}%`;wz)--@xIџg>xsx1MSmWj;/6 $ODcn+^|wp`38.Ei
-}zJEagԑL!`֡Ze
-{kdmsmXs.CBfsTez3eHچ.}*kJ"TdU+|kAhΔu\o}%aN+;a=gefޒ
-K~hg.|dOLZNpC<p
-<Žk"厛Fr//jFrzk?9+(\<? KQnh$Lu7<t7Mn> KmO0R+S ]3C
-endstream
+1204 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 387.232 463.248 394.206 474.117 ]/A << /S /GoTo /D (page.4) >> >>
endobj
-1248 0 obj
-<< /Type /Page /Contents 1249 0 R /Resources 1247 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1207 0 R /Annots 1251 0 R >>
+1205 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 408.153 451.293 420.109 462.162 ]/A << /S /GoTo /D (page.36) >> >>
endobj
-1251 0 obj
-[ 1209 0 R 1210 0 R 1211 0 R 1212 0 R 1213 0 R 1214 0 R 1215 0 R 1216 0 R 1217 0 R 1218 0 R 1219 0 R 1220 0 R 1221 0 R 1222 0 R 1223 0 R 1224 0 R 1225 0 R 1226 0 R 1227 0 R 1228 0 R 1229 0 R 1230 0 R 1231 0 R 1232 0 R 1233 0 R 1234 0 R 1235 0 R 1236 0 R 1237 0 R 1238 0 R 1239 0 R 1240 0 R 1241 0 R 1242 0 R 1243 0 R 1244 0 R 1245 0 R ]
+1206 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 444.487 439.327 456.442 450.207 ]/A << /S /GoTo /D (page.12) >> >>
+endobj
+1207 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 394.754 427.382 406.709 438.212 ]/A << /S /GoTo /D (page.64) >> >>
+endobj
+1208 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 370.475 415.078 377.449 426.256 ]/A << /S /GoTo /D (page.2) >> >>
endobj
1209 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 594.319 289.293 603.285 ]/A << /S /GoTo /D (section.1) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 370.475 403.123 377.449 414.301 ]/A << /S /GoTo /D (page.2) >> >>
endobj
1210 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 570.458 265.951 581.467 ]/A << /S /GoTo /D (section.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 375.705 391.517 382.679 402.346 ]/A << /S /GoTo /D (page.2) >> >>
endobj
1211 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 550.433 168.606 559.549 ]/A << /S /GoTo /D (section.3) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 375.705 379.562 382.679 390.391 ]/A << /S /GoTo /D (page.2) >> >>
endobj
1212 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 528.565 140.999 537.532 ]/A << /S /GoTo /D (section.4) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 423.845 333.733 435.8 344.603 ]/A << /S /GoTo /D (page.25) >> >>
endobj
1213 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 514.617 175.639 525.686 ]/A << /S /GoTo /D (subsection.4.1) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 413.661 321.778 425.616 332.647 ]/A << /S /GoTo /D (page.11) >> >>
endobj
1214 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 504.495 228.102 513.621 ]/A << /S /GoTo /D (subsection.4.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 388.059 287.337 400.014 299.293 ]/A << /S /GoTo /D (page.25) >> >>
endobj
1215 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 490.707 223.699 501.706 ]/A << /S /GoTo /D (subsection.4.3) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 406.798 275.382 418.754 287.337 ]/A << /S /GoTo /D (page.28) >> >>
endobj
1216 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 480.585 213.198 489.711 ]/A << /S /GoTo /D (subsection.4.4) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 423.715 263.427 435.67 275.382 ]/A << /S /GoTo /D (page.36) >> >>
endobj
1217 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 468.63 333.089 477.756 ]/A << /S /GoTo /D (subsection.4.5) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 496.183 229.554 508.138 241.509 ]/A << /S /GoTo /D (page.38) >> >>
endobj
-1218 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 456.675 321.731 465.801 ]/A << /S /GoTo /D (subsection.4.6) >> >>
+1221 0 obj
+<< /D [ 1219 0 R /XYZ 78.37 808.885 null ] >>
endobj
-1219 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 434.867 266.419 443.943 ]/A << /S /GoTo /D (section.5) >> >>
+1218 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F66 389 0 R /F15 381 0 R /F57 385 0 R /F56 384 0 R /F55 383 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-1220 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 421.088 366.075 432.037 ]/A << /S /GoTo /D (subsection.5.1) >> >>
+1263 0 obj
+<< /Filter /FlateDecode /Length 2417 >>
+stream
+x\K6 WXUX`yoEZew٤,&%QGh?~ϟ^2.~4,C#.^|\,ORO}q%<=Hp\ [&>OpC?T84hL4T䡭n;L:lIni@-U ͠?LSfW !HJ;Ӓ4:)>'I 8kX\u6(0VI mvZG6rRfK6Z\¼EdCO%]V @A'cKH=Ջۺ@2DW$dH
+}#%%- "U[a6Ռ雖ᾞrZٲr`vQwjWIbFQ2q]eeR Mq<4 2 N`޲k1!VEːhp2o(- ʼFtVߗom58ʫ:>h2*oG@7J${{: kLjѫ~2*hm5*edT{OBjwt=hѺf+\jf\I
+ρw V# ɸ|M 7rJF]^h Y(NઓJ;!]R$JnϹ5@ !qb֣/BJf݀^̗4kg"^MKz5*h/}y[R޳õ֭d= 7JMrPnsIdDR;b s[T" }upPbfSi )G9?
+ٔفl, a<f3HEo+'"kTz)tIεp%
+pk_6( QL
+S9Vs7;
+~s3?Zb.f\PغJFG=:YmP:o)֩oF{8.+hǒKiCqOJKi'i'1e)[E>&79=hOcF!TSQ,Ti*3
+Nįsąf
+vhNa<ïWnXMg p hۮv^njkۤ̒O;1jmHolGۥDTз9Z~3{خH6'3<1ÙZ2sk6̙2L)cYmz*2-HZotuU?s* r8k//j-)ŏ9SqcZw*[*P!%2+Z^
+ =5k u>@@Nn&bMU'_EGH
+@%zgNI㰲ÇHs`bPlgYw^[:g1:YV-QB([D$ζc!1HgR@һ (݃S%ء:oM㤲Ȇzq=S0rJ~A)׬`JG?Xsk /e_FA^oc^u@n$L=nP~B</XW=nI|(Y歡bȤy5,5WXл
+09s&Dt×O
+endstream
endobj
-1221 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 410.847 232.008 420.082 ]/A << /S /GoTo /D (subsubsection.5.1.1) >> >>
+1262 0 obj
+<< /Type /Page /Contents 1263 0 R /Resources 1261 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1129 0 R /Annots 1265 0 R >>
endobj
-1222 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 396.62 239.34 408.575 ]/A << /S /GoTo /D (subsubsection.5.1.2) >> >>
+1265 0 obj
+[ 1223 0 R 1224 0 R 1225 0 R 1226 0 R 1227 0 R 1228 0 R 1229 0 R 1230 0 R 1231 0 R 1232 0 R 1233 0 R 1234 0 R 1235 0 R 1236 0 R 1237 0 R 1238 0 R 1239 0 R 1240 0 R 1241 0 R 1242 0 R 1243 0 R 1244 0 R 1245 0 R 1246 0 R 1247 0 R 1248 0 R 1249 0 R 1250 0 R 1251 0 R 1252 0 R 1253 0 R 1254 0 R 1255 0 R 1256 0 R 1257 0 R 1258 0 R 1259 0 R ]
endobj
1223 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 385.223 272.267 396.172 ]/A << /S /GoTo /D (subsection.5.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 594.319 289.293 603.285 ]/A << /S /GoTo /D (section.1) >> >>
endobj
1224 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 373.268 323.246 384.216 ]/A << /S /GoTo /D (subsection.5.3) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 570.458 265.951 581.467 ]/A << /S /GoTo /D (section.2) >> >>
endobj
1225 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 363.026 251.445 372.192 ]/A << /S /GoTo /D (subsubsection.5.3.1) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 550.433 168.606 559.549 ]/A << /S /GoTo /D (section.3) >> >>
endobj
1226 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 349.357 328.765 360.236 ]/A << /S /GoTo /D (subsubsection.5.3.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 528.565 140.999 537.532 ]/A << /S /GoTo /D (section.4) >> >>
endobj
1227 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 336.844 222.623 348.799 ]/A << /S /GoTo /D (subsubsection.5.3.3) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 514.617 175.639 525.686 ]/A << /S /GoTo /D (subsection.4.1) >> >>
endobj
1228 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 324.889 253.467 336.844 ]/A << /S /GoTo /D (subsubsection.5.3.4) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 504.495 228.102 513.621 ]/A << /S /GoTo /D (subsection.4.2) >> >>
endobj
1229 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 313.492 310.942 324.441 ]/A << /S /GoTo /D (subsubsection.5.3.5) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 490.707 223.699 501.706 ]/A << /S /GoTo /D (subsection.4.3) >> >>
endobj
1230 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 291.504 338.927 302.513 ]/A << /S /GoTo /D (section.6) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 480.585 213.198 489.711 ]/A << /S /GoTo /D (subsection.4.4) >> >>
endobj
1231 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 281.332 220.77 290.458 ]/A << /S /GoTo /D (subsection.6.1) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 468.63 333.089 477.756 ]/A << /S /GoTo /D (subsection.4.5) >> >>
endobj
1232 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 267.106 322.16 279.061 ]/A << /S /GoTo /D (subsection.6.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 456.675 321.731 465.801 ]/A << /S /GoTo /D (subsection.4.6) >> >>
endobj
1233 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 255.589 255.35 266.657 ]/A << /S /GoTo /D (subsection.6.3) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 442.448 220.82 454.403 ]/A << /S /GoTo /D (subsection.4.7) >> >>
endobj
1234 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 243.753 255.298 254.632 ]/A << /S /GoTo /D (subsection.6.4) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 422.911 266.419 431.987 ]/A << /S /GoTo /D (section.5) >> >>
endobj
1235 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 221.278 221.856 233.233 ]/A << /S /GoTo /D (section.7) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 409.133 366.075 420.082 ]/A << /S /GoTo /D (subsection.5.1) >> >>
endobj
1236 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 199.848 213.129 210.757 ]/A << /S /GoTo /D (section.8) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 398.891 232.008 408.127 ]/A << /S /GoTo /D (subsubsection.5.1.1) >> >>
endobj
1237 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 187.962 208.596 198.802 ]/A << /S /GoTo /D (subsection.8.1) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 384.665 239.34 396.62 ]/A << /S /GoTo /D (subsubsection.5.1.2) >> >>
endobj
1238 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 177.721 190.464 186.847 ]/A << /S /GoTo /D (subsection.8.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 373.268 272.267 384.216 ]/A << /S /GoTo /D (subsection.5.2) >> >>
endobj
1239 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 165.766 245.567 174.891 ]/A << /S /GoTo /D (subsection.8.3) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 361.312 323.246 372.261 ]/A << /S /GoTo /D (subsection.5.3) >> >>
endobj
1240 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 142.065 271.599 153.073 ]/A << /S /GoTo /D (section.9) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 351.071 251.445 360.236 ]/A << /S /GoTo /D (subsubsection.5.3.1) >> >>
endobj
1241 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 120.147 259.166 131.155 ]/A << /S /GoTo /D (section.10) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 337.402 328.765 348.281 ]/A << /S /GoTo /D (subsubsection.5.3.2) >> >>
endobj
1242 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 108.152 214.254 119.21 ]/A << /S /GoTo /D (subsection.10.1) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 324.889 222.623 336.844 ]/A << /S /GoTo /D (subsubsection.5.3.3) >> >>
endobj
1243 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 95.748 296.347 107.703 ]/A << /S /GoTo /D (subsection.10.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 312.934 253.467 324.889 ]/A << /S /GoTo /D (subsubsection.5.3.4) >> >>
endobj
1244 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 84.231 398.942 95.3 ]/A << /S /GoTo /D (subsection.10.3) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 301.537 310.942 312.485 ]/A << /S /GoTo /D (subsubsection.5.3.5) >> >>
endobj
1245 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 72.276 268.67 83.275 ]/A << /S /GoTo /D (subsection.10.4) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 279.549 338.927 290.558 ]/A << /S /GoTo /D (section.6) >> >>
endobj
-1250 0 obj
-<< /D [ 1248 0 R /XYZ 78.37 808.885 null ] >>
+1246 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 269.377 220.77 278.503 ]/A << /S /GoTo /D (subsection.6.1) >> >>
endobj
1247 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F69 398 0 R /F15 377 0 R /F56 380 0 R /F55 379 0 R /F66 384 0 R /F50 370 0 R /F67 385 0 R >> /ProcSet [ /PDF /Text ] >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 255.15 322.16 267.106 ]/A << /S /GoTo /D (subsection.6.2) >> >>
endobj
-1304 0 obj
-<< /Filter /FlateDecode /Length 2270 >>
-stream
-x\r6 ߯%
-p5бA|VkP
-uX>wLYf\vzwZr2ҪO)FWhTWk:/w&PyPkgP31{}wUr]+Dg=UG%5[9ml OxG`8hi^nUbKSp\`H=,&xyUL" ӏ9SD4)Z $,,]+wTS4; Ca$&r3/h[5JI86ëX ]aXtʩ u!}@w,H֥
-)XUDŽwȉ1\raoO1$`ǶQQ7|]F
-eUkѶ-Žwq
-3 kRwERjR8=“O\F=kLY*;0DLtՆ16AɍW33|85٨|n%!}Sӵju99urAK_L^onX {lS= 5nUFkmzFfa`VOU(C UjWumjlTZWp)TK^˰,s..K܏˼@/}ڶ' -
-
-w.fo8Xks;ԴLZyǻE# 2qKUkcNf 5&f9ۈ)v=eXZ&eFD5%m*cRO>11-@ U^'h5.SYP$ rʭ*Jk&)iGf;mkw[V'ZSV 3_/xsC@^F.m,imWnӎs׷6m!֠be k{v>d^-+б`p-PZ#ioƟb.򩪾nob_g`nTW5^EZvn?
- 77oAכ"Őb˯Z[^i{6aVqSy֏}RKZ5}z<ywK)ַ/iQmJ
-ofK
-6[3$
-endstream
+1248 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 243.634 255.35 254.702 ]/A << /S /GoTo /D (subsection.6.3) >> >>
endobj
-1303 0 obj
-<< /Type /Page /Contents 1304 0 R /Resources 1302 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1207 0 R /Annots 1306 0 R >>
+1249 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 231.798 255.298 242.677 ]/A << /S /GoTo /D (subsection.6.4) >> >>
endobj
-1306 0 obj
-[ 1246 0 R 1252 0 R 1253 0 R 1254 0 R 1255 0 R 1256 0 R 1257 0 R 1258 0 R 1259 0 R 1260 0 R 1261 0 R 1262 0 R 1263 0 R 1264 0 R 1265 0 R 1266 0 R 1267 0 R 1268 0 R 1269 0 R 1270 0 R 1271 0 R 1272 0 R 1273 0 R 1274 0 R 1275 0 R 1276 0 R 1277 0 R 1278 0 R 1279 0 R 1280 0 R 1281 0 R 1282 0 R 1283 0 R 1284 0 R 1285 0 R 1286 0 R 1287 0 R 1288 0 R 1289 0 R 1290 0 R 1291 0 R 1292 0 R 1293 0 R 1294 0 R 1295 0 R 1296 0 R 1297 0 R 1298 0 R 1299 0 R 1300 0 R 1301 0 R ]
+1250 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 209.322 221.856 221.278 ]/A << /S /GoTo /D (section.7) >> >>
endobj
-1246 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 758.012 297.502 769.011 ]/A << /S /GoTo /D (subsection.10.5) >> >>
+1251 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 187.893 213.129 198.802 ]/A << /S /GoTo /D (section.8) >> >>
endobj
1252 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 746.057 264.506 757.126 ]/A << /S /GoTo /D (subsection.10.6) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 176.007 208.596 186.847 ]/A << /S /GoTo /D (subsection.8.1) >> >>
endobj
1253 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 724.259 348.591 735.198 ]/A << /S /GoTo /D (section.11) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 165.766 190.464 174.891 ]/A << /S /GoTo /D (subsection.8.2) >> >>
endobj
1254 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 701.783 169.522 713.738 ]/A << /S /GoTo /D (section.12) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 153.811 245.567 162.936 ]/A << /S /GoTo /D (subsection.8.3) >> >>
endobj
1255 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 689.828 297.263 701.783 ]/A << /S /GoTo /D (subsection.12.1) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 130.109 271.599 141.118 ]/A << /S /GoTo /D (section.9) >> >>
endobj
1256 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 677.873 416.735 689.828 ]/A << /S /GoTo /D (subsection.12.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 108.192 259.166 119.2 ]/A << /S /GoTo /D (section.10) >> >>
endobj
1257 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 665.918 406.484 677.873 ]/A << /S /GoTo /D (subsection.12.3) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 96.197 214.254 107.255 ]/A << /S /GoTo /D (subsection.10.1) >> >>
endobj
1258 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 653.963 343.918 665.918 ]/A << /S /GoTo /D (subsection.12.4) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 83.793 296.347 95.748 ]/A << /S /GoTo /D (subsection.10.2) >> >>
endobj
1259 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 632.533 308.152 643.542 ]/A << /S /GoTo /D (section.13) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 72.276 398.942 83.345 ]/A << /S /GoTo /D (subsection.10.3) >> >>
endobj
-1260 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 620.528 233.642 631.527 ]/A << /S /GoTo /D (subsection.13.1) >> >>
+1264 0 obj
+<< /D [ 1262 0 R /XYZ 78.37 808.885 null ] >>
endobj
1261 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 608.573 237.228 619.532 ]/A << /S /GoTo /D (subsection.13.2) >> >>
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F68 402 0 R /F15 381 0 R /F56 384 0 R /F55 383 0 R /F65 388 0 R /F54 374 0 R /F66 389 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-1262 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 598.451 219.804 607.576 ]/A << /S /GoTo /D (subsection.13.3) >> >>
+1319 0 obj
+<< /Filter /FlateDecode /Length 2288 >>
+stream
+x\n8 +I=
+h~*[Nמ)_I\2}xsd6hT0^x
+Σ1 U$л[` >6C%[p:Lߑ{a2
+WƑjT/ݙ)!H_~W+G,O6^(9iٳ8u9Ve|$b{k!/
+ yvKj64l]տWT::iCI<L$߂|V@VE'xG25+Sc;i:30hn@|\'EĖ;?jCq~&Qf}]%9t}g7[&R?sjTr\%ƶ0wj
+A[XcF\  c %lgʮ˔uG~_ɿ+dS
+Q/$%v*[yLx';5CL
+vl;lA
+f (W|]F
+eUѶ-Ž19'`vU0~4ivE0 R*6Ugv$Ԯҡ&dUn,qͳKܕ5P2J x&K'Ԑ.^0gSͺ c
+e5
+i Qa_X9i
+[B KII[,OS /o%!aVqјHMqDWmjܸ<Ӯ?ɇSJ}Mp! Eӵju99nvrAK_L^սb#,Y٦-{./Aj1ܲ N"X0%lBQj8Ԯ"yT)Bk%_nB.DA;Z_'9Ƒy1wY~\ڧM{H'YY`ͭP2jm`)r|2g2qʗDƶ87_
+lT9ӆ "qxU_6e]Ol3 &e-jJ<Tl%Ƃ nϽ}Ec$ нFBפj6ZMH ϩOS[
+x{%f *m&5#ȶ- j9
+ʄ/melu"熀<]X@ڮo@ش!+б^2@K;t Dȁ?p5PZbV(ZX.\3>SU}QľԿv4iF/)@ apr-j?ʰAfqZ[O``1>~i)?$4?;geF#J"3Z6]I֬7ށqo7_Ek!7avH׎mzpEEDzΡ栤vXGٹW Owbz
+endstream
endobj
-1263 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 586.496 288.586 595.621 ]/A << /S /GoTo /D (subsection.13.4) >> >>
+1318 0 obj
+<< /Type /Page /Contents 1319 0 R /Resources 1317 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1129 0 R /Annots 1321 0 R >>
endobj
-1264 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 572.269 337.881 584.224 ]/A << /S /GoTo /D (subsection.13.5) >> >>
+1321 0 obj
+[ 1260 0 R 1266 0 R 1267 0 R 1268 0 R 1269 0 R 1270 0 R 1271 0 R 1272 0 R 1273 0 R 1274 0 R 1275 0 R 1276 0 R 1277 0 R 1278 0 R 1279 0 R 1280 0 R 1281 0 R 1282 0 R 1283 0 R 1284 0 R 1285 0 R 1286 0 R 1287 0 R 1288 0 R 1289 0 R 1290 0 R 1291 0 R 1292 0 R 1293 0 R 1294 0 R 1295 0 R 1296 0 R 1297 0 R 1298 0 R 1299 0 R 1300 0 R 1301 0 R 1302 0 R 1303 0 R 1304 0 R 1305 0 R 1306 0 R 1307 0 R 1308 0 R 1309 0 R 1310 0 R 1311 0 R 1312 0 R 1313 0 R 1314 0 R 1315 0 R ]
endobj
-1265 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 552.732 205.706 561.848 ]/A << /S /GoTo /D (section.14) >> >>
+1260 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 758.012 268.67 769.011 ]/A << /S /GoTo /D (subsection.10.4) >> >>
endobj
1266 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 540.667 224.546 549.833 ]/A << /S /GoTo /D (subsection.14.1) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 746.057 297.502 757.056 ]/A << /S /GoTo /D (subsection.10.5) >> >>
endobj
1267 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 526.441 251.983 538.396 ]/A << /S /GoTo /D (subsection.14.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 734.102 264.506 745.17 ]/A << /S /GoTo /D (subsection.10.6) >> >>
endobj
1268 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 514.934 312.127 525.992 ]/A << /S /GoTo /D (subsection.14.3) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 712.304 348.591 723.243 ]/A << /S /GoTo /D (section.11) >> >>
endobj
1269 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 502.53 330.937 514.486 ]/A << /S /GoTo /D (subsection.14.4) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 689.828 169.522 701.783 ]/A << /S /GoTo /D (section.12) >> >>
endobj
1270 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 490.575 220.551 502.53 ]/A << /S /GoTo /D (subsection.14.5) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 677.873 297.263 689.828 ]/A << /S /GoTo /D (subsection.12.1) >> >>
endobj
1271 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 479.178 187.943 490.017 ]/A << /S /GoTo /D (subsection.14.6) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 665.918 416.735 677.873 ]/A << /S /GoTo /D (subsection.12.2) >> >>
endobj
1272 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 467.113 246.244 478.172 ]/A << /S /GoTo /D (subsection.14.7) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 653.963 406.484 665.918 ]/A << /S /GoTo /D (subsection.12.3) >> >>
endobj
1273 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 455.148 216.735 466.107 ]/A << /S /GoTo /D (subsection.14.8) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 642.007 343.918 653.963 ]/A << /S /GoTo /D (subsection.12.4) >> >>
endobj
1274 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 445.026 228.312 454.261 ]/A << /S /GoTo /D (subsection.14.9) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 620.578 308.152 631.586 ]/A << /S /GoTo /D (section.13) >> >>
endobj
1275 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 430.799 307.993 442.755 ]/A << /S /GoTo /D (subsection.14.10) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 608.573 233.642 619.571 ]/A << /S /GoTo /D (subsection.13.1) >> >>
endobj
1276 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 418.844 287.271 430.799 ]/A << /S /GoTo /D (subsection.14.11) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 596.618 237.228 607.576 ]/A << /S /GoTo /D (subsection.13.2) >> >>
endobj
1277 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 399.307 273.731 408.324 ]/A << /S /GoTo /D (section.15) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 586.496 219.804 595.621 ]/A << /S /GoTo /D (subsection.13.3) >> >>
endobj
1278 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 385.529 338.568 396.368 ]/A << /S /GoTo /D (subsection.15.1) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 574.54 288.586 583.666 ]/A << /S /GoTo /D (subsection.13.4) >> >>
endobj
1279 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 373.454 240.177 384.523 ]/A << /S /GoTo /D (subsubsection.15.1.1) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 560.314 337.881 572.269 ]/A << /S /GoTo /D (subsection.13.5) >> >>
endobj
1280 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 363.332 270.474 372.458 ]/A << /S /GoTo /D (subsubsection.15.1.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 540.827 205.706 549.893 ]/A << /S /GoTo /D (section.14) >> >>
endobj
1281 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 349.544 325.314 360.503 ]/A << /S /GoTo /D (subsection.15.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 528.822 224.546 537.878 ]/A << /S /GoTo /D (subsection.14.1) >> >>
endobj
1282 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 337.708 306.339 348.657 ]/A << /S /GoTo /D (subsection.15.3) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 514.486 251.983 526.441 ]/A << /S /GoTo /D (subsection.14.2) >> >>
endobj
1283 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 325.195 363.933 337.151 ]/A << /S /GoTo /D (subsection.15.4) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 502.979 312.127 514.037 ]/A << /S /GoTo /D (subsection.14.3) >> >>
endobj
1284 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 303.835 229.457 314.774 ]/A << /S /GoTo /D (section.16) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 490.575 330.937 502.53 ]/A << /S /GoTo /D (subsection.14.4) >> >>
endobj
1285 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 281.918 207.569 292.757 ]/A << /S /GoTo /D (section.17) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 478.62 220.551 490.575 ]/A << /S /GoTo /D (subsection.14.5) >> >>
endobj
1286 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 269.843 201.273 280.802 ]/A << /S /GoTo /D (subsection.17.1) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 467.223 187.943 478.062 ]/A << /S /GoTo /D (subsection.14.6) >> >>
endobj
1287 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 259.721 206.392 268.847 ]/A << /S /GoTo /D (subsection.17.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 455.158 246.244 466.217 ]/A << /S /GoTo /D (subsection.14.7) >> >>
endobj
1288 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 245.943 250.877 256.892 ]/A << /S /GoTo /D (subsection.17.3) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 443.193 216.735 454.152 ]/A << /S /GoTo /D (subsection.14.8) >> >>
endobj
1289 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 234.097 195.276 244.976 ]/A << /S /GoTo /D (subsection.17.4) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 433.071 228.312 442.306 ]/A << /S /GoTo /D (subsection.14.9) >> >>
endobj
1290 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 212.179 143.002 223.019 ]/A << /S /GoTo /D (section.18) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 418.844 307.993 430.799 ]/A << /S /GoTo /D (subsection.14.10) >> >>
endobj
1291 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 199.666 353.181 211.621 ]/A << /S /GoTo /D (subsection.18.1) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 406.889 287.271 418.844 ]/A << /S /GoTo /D (subsection.14.11) >> >>
endobj
1292 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 189.982 236.81 199.108 ]/A << /S /GoTo /D (subsection.18.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 387.352 273.731 396.368 ]/A << /S /GoTo /D (section.15) >> >>
endobj
1293 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 178.027 228.302 187.153 ]/A << /S /GoTo /D (subsection.18.3) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 373.574 338.568 384.413 ]/A << /S /GoTo /D (subsection.15.1) >> >>
endobj
1294 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 164.239 209.024 175.238 ]/A << /S /GoTo /D (subsection.18.4) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 361.499 240.177 372.568 ]/A << /S /GoTo /D (subsubsection.15.1.1) >> >>
endobj
1295 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 152.284 335.709 163.283 ]/A << /S /GoTo /D (subsection.18.5) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 351.377 270.474 360.503 ]/A << /S /GoTo /D (subsubsection.15.1.2) >> >>
endobj
1296 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 140.329 196.86 151.327 ]/A << /S /GoTo /D (subsection.18.6) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 337.589 325.314 348.548 ]/A << /S /GoTo /D (subsection.15.2) >> >>
endobj
1297 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 128.493 234.767 139.332 ]/A << /S /GoTo /D (subsection.18.7) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 325.753 306.339 336.702 ]/A << /S /GoTo /D (subsection.15.3) >> >>
endobj
1298 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 116.418 311.161 127.487 ]/A << /S /GoTo /D (subsection.18.8) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 313.24 363.933 325.195 ]/A << /S /GoTo /D (subsection.15.4) >> >>
endobj
1299 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 104.025 331.415 115.98 ]/A << /S /GoTo /D (subsection.18.9) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 291.88 229.457 302.819 ]/A << /S /GoTo /D (section.16) >> >>
endobj
1300 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 92.508 227.395 103.467 ]/A << /S /GoTo /D (subsection.18.10) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 269.963 207.569 280.802 ]/A << /S /GoTo /D (section.17) >> >>
endobj
1301 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 72.533 108.74 81.549 ]/A << /S /GoTo /D (section*.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 257.888 201.273 268.847 ]/A << /S /GoTo /D (subsection.17.1) >> >>
+endobj
+1302 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 247.766 206.392 256.892 ]/A << /S /GoTo /D (subsection.17.2) >> >>
+endobj
+1303 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 233.987 250.877 244.936 ]/A << /S /GoTo /D (subsection.17.3) >> >>
+endobj
+1304 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 222.142 195.276 233.021 ]/A << /S /GoTo /D (subsection.17.4) >> >>
endobj
1305 0 obj
-<< /D [ 1303 0 R /XYZ 78.37 808.885 null ] >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 200.224 143.002 211.063 ]/A << /S /GoTo /D (section.18) >> >>
endobj
-1302 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 377 0 R /F67 385 0 R >> /ProcSet [ /PDF /Text ] >>
+1306 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 187.711 353.181 199.666 ]/A << /S /GoTo /D (subsection.18.1) >> >>
+endobj
+1307 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 178.027 236.81 187.153 ]/A << /S /GoTo /D (subsection.18.2) >> >>
+endobj
+1308 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 166.072 228.302 175.198 ]/A << /S /GoTo /D (subsection.18.3) >> >>
+endobj
+1309 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 152.284 209.024 163.283 ]/A << /S /GoTo /D (subsection.18.4) >> >>
+endobj
+1310 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 140.329 335.709 151.327 ]/A << /S /GoTo /D (subsection.18.5) >> >>
+endobj
+1311 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 128.373 196.86 139.372 ]/A << /S /GoTo /D (subsection.18.6) >> >>
+endobj
+1312 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 116.538 234.767 127.377 ]/A << /S /GoTo /D (subsection.18.7) >> >>
+endobj
+1313 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 104.463 311.161 115.532 ]/A << /S /GoTo /D (subsection.18.8) >> >>
+endobj
+1314 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 92.07 331.415 104.025 ]/A << /S /GoTo /D (subsection.18.9) >> >>
+endobj
+1315 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 80.553 227.395 91.512 ]/A << /S /GoTo /D (subsection.18.10) >> >>
+endobj
+1320 0 obj
+<< /D [ 1318 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+1317 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F66 389 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+1324 0 obj
+<< /Filter /FlateDecode /Length 122 >>
+stream
+xm̱
+1>_1?ldB"X[*0 <cS3[~ :BQ\RA1?pYȬ#"YzH^gyl_姦?;z ~$@
+endstream
+endobj
+1323 0 obj
+<< /Type /Page /Contents 1324 0 R /Resources 1322 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1129 0 R /Annots 1326 0 R >>
+endobj
+1326 0 obj
+[ 1316 0 R ]
+endobj
+1316 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 759.955 108.74 768.971 ]/A << /S /GoTo /D (section*.2) >> >>
+endobj
+1325 0 obj
+<< /D [ 1323 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+1322 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F66 389 0 R /F15 381 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
1 0 obj
<< /pgf@ca0.75 << /ca 0.75 >> /pgf@CA0.4 << /CA 0.4 >> /pgf@ca0.4 << /ca 0.4 >> /pgf@bmMultiply<< /BM /Multiply>> /pgf@ca1.0 << /ca 1.0 >>>>
endobj
2 0 obj
-<< /pgfpat5 820 0 R /pgfpat4 821 0 R /pgfpat10 824 0 R>>
+<< /pgfpat5 830 0 R /pgfpat4 831 0 R /pgfpat10 834 0 R>>
endobj
3 0 obj
<< /pgfprgb [/Pattern /DeviceRGB] >>
endobj
-1307 0 obj
+1327 0 obj
[ 28 [ 510 ] 96 [ 363 ] 118 [ 490 ] ]
endobj
-1309 0 obj
+1329 0 obj
<< /Filter /FlateDecode /Length 17 >>
stream
xc```&
endstream
endobj
-1310 0 obj
+1330 0 obj
<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 692 >>
stream
xcd`aa`ddr N+O,,MIyP#C,9?Xy~s0aS  K,t~L;74G$0GAA5/<"-6300q/,L(Q0200
@@ -5512,10 +5594,10 @@ Nz
>XOoOOo_O߄=<<;WLrxxJ
endstream
endobj
-1308 0 obj
-<< /Type /FontDescriptor /FontName /TZAQYL+LMSans8-Oblique /Flags 4 /FontBBox [ -486 -314 1548 1154 ] /Ascent 1154 /CapHeight 694 /Descent -314 /ItalicAngle -12 /StemV 98 /XHeight 444 /FontFile3 1310 0 R /CIDSet 1309 0 R >>
+1328 0 obj
+<< /Type /FontDescriptor /FontName /TZAQYL+LMSans8-Oblique /Flags 4 /FontBBox [ -486 -314 1548 1154 ] /Ascent 1154 /CapHeight 694 /Descent -314 /ItalicAngle -12 /StemV 98 /XHeight 444 /FontFile3 1330 0 R /CIDSet 1329 0 R >>
endobj
-1311 0 obj
+1331 0 obj
<< /Filter /FlateDecode /Length 374 >>
stream
x}RMo@x=Y45!b7}Md.pwwM[< t7ްOa5C/Zt9jȑl9V,
@@ -5525,23 +5607,23 @@ y@ws$壷9wNF IpCPB }Jy"yr^IKDЙ\_r&
rndfA~
endstream
endobj
-818 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /TZAQYL+LMSans8-Oblique /DescendantFonts [ 1312 0 R ] /ToUnicode 1311 0 R >>
+828 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /TZAQYL+LMSans8-Oblique /DescendantFonts [ 1332 0 R ] /ToUnicode 1331 0 R >>
endobj
-1312 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /TZAQYL+LMSans8-Oblique /FontDescriptor 1308 0 R /W 1307 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1332 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /TZAQYL+LMSans8-Oblique /FontDescriptor 1328 0 R /W 1327 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1313 0 obj
+1333 0 obj
[ 56 [ 681 681 ] 82 [ 681 ] 88 [ 403 ] 106 [ 681 681 ] ]
endobj
-1315 0 obj
+1335 0 obj
<< /Filter /FlateDecode /Length 18 >>
stream
xc`

endstream
endobj
-1316 0 obj
+1336 0 obj
<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 1129 >>
stream
xuT{LSW[W@N½G2A ^DŽU{io[z(Pp
@@ -5556,10 +5638,10 @@ xuT{LSW[W@N½G2A ^DŽU{io[z(Pp
sn> <TQZPt@ UQ=R]E&ni,lAC#bdČjnpu,;T7>6<4N=$Z#yB<R eD E*yHa)ݤ1^MZN?|@˰veFb&u!}^w@x Q3%Ib4^A_>>:Xk kPT%J@i~ Ρ{(;> Qd"\4-*ۤQ2{[ F:Ј폾u1B}O jkq \5|[P6?}uxzK2iC惾ELm 9cBO"{lz2|Bh4zGo塞.OgW;Ge_
endstream
endobj
-1314 0 obj
-<< /Type /FontDescriptor /FontName /GOIBMZ+LMRoman5-Regular /Flags 4 /FontBBox [ -566 -303 1772 1126 ] /Ascent 1126 /CapHeight 683 /Descent -303 /ItalicAngle 0 /StemV 134 /XHeight 431 /FontFile3 1316 0 R /CIDSet 1315 0 R >>
+1334 0 obj
+<< /Type /FontDescriptor /FontName /GOIBMZ+LMRoman5-Regular /Flags 4 /FontBBox [ -566 -303 1772 1126 ] /Ascent 1126 /CapHeight 683 /Descent -303 /ItalicAngle 0 /StemV 134 /XHeight 431 /FontFile3 1336 0 R /CIDSet 1335 0 R >>
endobj
-1317 0 obj
+1337 0 obj
<< /Filter /FlateDecode /Length 387 >>
stream
x}Rj0+^xI` YYHB)9s*%#ۇ} /4ovM<7J67[e%t6zȐl5t5tg<iq*aتM]bց?M:]}y﫝,21vxjΙSuYf K1l& 3aEK[9L]'a:*ST5%cʼź*.N}QkMY$ 0uk:+|3~4ˣ5KY:T2ʌ ICJ
@@ -5567,28 +5649,28 @@ x}Rj0+^xI` YYHB)9s*%#ۇ} /4ovM<7J67[e%t
rhah⸁CS-f_&[ QJg`jFo[UTq{ ,r}
endstream
endobj
-787 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /GOIBMZ+LMRoman5-Regular /DescendantFonts [ 1318 0 R ] /ToUnicode 1317 0 R >>
+804 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /GOIBMZ+LMRoman5-Regular /DescendantFonts [ 1338 0 R ] /ToUnicode 1337 0 R >>
endobj
-1318 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /GOIBMZ+LMRoman5-Regular /FontDescriptor 1314 0 R /W 1313 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1338 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /GOIBMZ+LMRoman5-Regular /FontDescriptor 1334 0 R /W 1333 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1319 0 obj
+1339 0 obj
[575 575 575 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 559 638.9 511.1 638.9 ]
endobj
-1320 0 obj
+1340 0 obj
[1083.3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1361.1 ]
endobj
-1321 0 obj
+1341 0 obj
[ 28 [ 603 ] 35 [ 544 ] 43 [ 544 ] 47 [ 603 ] ]
endobj
-1323 0 obj
+1343 0 obj
<< /Filter /FlateDecode /Length 14 >>
stream
xc``
endstream
endobj
-1324 0 obj
+1344 0 obj
<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 900 >>
stream
xڵSoL[U]<t}dmbhAf P(d+}mx{v –@2q5,C~G>D_Yh9sﹹ990AkO4_7 N:
@@ -5603,36 +5685,36 @@ WZVRV
1mb7aKuO[&,ڗ:E["aS4c &8dxgxV6-:'T(Ed|<>a)Z9?'Uؚ
endstream
endobj
-1322 0 obj
-<< /Type /FontDescriptor /FontName /BWIYUD+LMRoman7-Italic /Flags 4 /FontBBox [ -528 -292 1571 1123 ] /Ascent 1123 /CapHeight 683 /Descent -292 /ItalicAngle -15 /StemV 123 /XHeight 431 /FontFile3 1324 0 R /CIDSet 1323 0 R >>
+1342 0 obj
+<< /Type /FontDescriptor /FontName /BWIYUD+LMRoman7-Italic /Flags 4 /FontBBox [ -528 -292 1571 1123 ] /Ascent 1123 /CapHeight 683 /Descent -292 /ItalicAngle -15 /StemV 123 /XHeight 431 /FontFile3 1344 0 R /CIDSet 1343 0 R >>
endobj
-1325 0 obj
+1345 0 obj
<< /Filter /FlateDecode /Length 375 >>
stream
x}R]k0}ϯ{6U@0uBa~`cM.`* BJOι7瞴ɣg XF3fˢ"\DiVychr4НeL
ӳLSñUM(M΁?G6^[U)Lq,h'ɊՁ%> ;Z(9O)/TƫI|qk $wI2
endstream
endobj
-695 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /BWIYUD+LMRoman7-Italic /DescendantFonts [ 1326 0 R ] /ToUnicode 1325 0 R >>
+703 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /BWIYUD+LMRoman7-Italic /DescendantFonts [ 1346 0 R ] /ToUnicode 1345 0 R >>
endobj
-1326 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /BWIYUD+LMRoman7-Italic /FontDescriptor 1322 0 R /W 1321 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1346 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /BWIYUD+LMRoman7-Italic /FontDescriptor 1342 0 R /W 1341 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1327 0 obj
+1347 0 obj
[892.9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1138.9 0 585.3 ]
endobj
-1328 0 obj
+1348 0 obj
[ 47 [ 525 ] 50 [ 525 ] 64 [ 525 ] 66 [ 525 ] 72 [ 525 ] 77 [ 525 ] 81 [ 525 ] 98 [ 525 ] 102 [ 525 ] 105 [ 525 ] 116 [ 525 ] 118 [ 525 ] ]
endobj
-1330 0 obj
+1350 0 obj
<< /Filter /FlateDecode /Length 21 >>
stream
xc`

endstream
endobj
-1331 0 obj
+1351 0 obj
<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 1486 >>
stream
xmU{LG%ʉr9ݚj!A⣩Qx==#Z-w CSV5$֤Uk5ZlS5SuV&Mdv3oeǢ1Ǔ
@@ -5651,10 +5733,10 @@ sƭw¸Om-åu^
T;,;T(w ;h 4
endstream
endobj
-1329 0 obj
-<< /Type /FontDescriptor /FontName /MSSSGB+LMMonoLt10-Bold /Flags 4 /FontBBox [ -454 -308 734 1039 ] /Ascent 1039 /CapHeight 611 /Descent -308 /ItalicAngle 0 /StemV 175 /XHeight 431 /FontFile3 1331 0 R /CIDSet 1330 0 R >>
+1349 0 obj
+<< /Type /FontDescriptor /FontName /MSSSGB+LMMonoLt10-Bold /Flags 4 /FontBBox [ -454 -308 734 1039 ] /Ascent 1039 /CapHeight 611 /Descent -308 /ItalicAngle 0 /StemV 175 /XHeight 431 /FontFile3 1351 0 R /CIDSet 1350 0 R >>
endobj
-1332 0 obj
+1352 0 obj
<< /Filter /FlateDecode /Length 420 >>
stream
x}Ok0@zp-;mڔ`$bhRe4
@@ -5663,22 +5745,22 @@ b!~%’]ތGO|{0rV`-L6F j(Qjֈ
aa>>׸1iCU<o3޶g
endstream
endobj
-626 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /MSSSGB+LMMonoLt10-Bold /DescendantFonts [ 1333 0 R ] /ToUnicode 1332 0 R >>
+634 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /MSSSGB+LMMonoLt10-Bold /DescendantFonts [ 1353 0 R ] /ToUnicode 1352 0 R >>
endobj
-1333 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /MSSSGB+LMMonoLt10-Bold /FontDescriptor 1329 0 R /W 1328 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1353 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /MSSSGB+LMMonoLt10-Bold /FontDescriptor 1349 0 R /W 1348 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1334 0 obj
+1354 0 obj
[ 47 [ 590 ] 81 [ 531 ] 98 [ 419 ] 105 [ 413 ] 116 [ 561 ] ]
endobj
-1336 0 obj
+1356 0 obj
<< /Filter /FlateDecode /Length 19 >>
stream
xc`
endstream
endobj
-1337 0 obj
+1357 0 obj
<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 1167 >>
stream
x}TmLe^-+]lqShq ls RPG6Zz#"/\{/0a8`
@@ -5693,10 +5775,10 @@ _eR}&:q5d ub cly}xϱ3L7_kNGWg?v
#h}^
endstream
endobj
-1335 0 obj
-<< /Type /FontDescriptor /FontName /JIXNST+LMRomanSlant8-Regular /Flags 4 /FontBBox [ -483 -292 1526 1125 ] /Ascent 1125 /CapHeight 683 /Descent -292 /ItalicAngle -10 /StemV 98 /XHeight 431 /FontFile3 1337 0 R /CIDSet 1336 0 R >>
+1355 0 obj
+<< /Type /FontDescriptor /FontName /JIXNST+LMRomanSlant8-Regular /Flags 4 /FontBBox [ -483 -292 1526 1125 ] /Ascent 1125 /CapHeight 683 /Descent -292 /ItalicAngle -10 /StemV 98 /XHeight 431 /FontFile3 1357 0 R /CIDSet 1356 0 R >>
endobj
-1338 0 obj
+1358 0 obj
<< /Filter /FlateDecode /Length 388 >>
stream
xڍR]k0}ϯ{6tN鄎ĖkM.&%MKR0Џ{9'<l>V :+IT.P "GVlb .e,Yr,Y^slY^$ցn=o4XT$Ϥ;<yZSar6X
@@ -5705,25 +5787,25 @@ s˭1=Ct8VePgdnWJNñ~
δ3\9N#ƃ< =z5A Ӿ<Fx?)q^ݳZkkL m*U=z}+j
endstream
endobj
-594 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /JIXNST+LMRomanSlant8-Regular /DescendantFonts [ 1339 0 R ] /ToUnicode 1338 0 R >>
+602 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /JIXNST+LMRomanSlant8-Regular /DescendantFonts [ 1359 0 R ] /ToUnicode 1358 0 R >>
endobj
-1339 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /JIXNST+LMRomanSlant8-Regular /FontDescriptor 1335 0 R /W 1334 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1359 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /JIXNST+LMRomanSlant8-Regular /FontDescriptor 1355 0 R /W 1354 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1340 0 obj
+1360 0 obj
[361.7 429.7 0 0 0 644.7 ]
endobj
-1341 0 obj
+1361 0 obj
[ 28 [ 525 ] 35 [ 525 ] 43 [ 525 ] 47 [ 525 ] 50 [ 525 ] 55 [ 525 ] 64 [ 525 ] 66 [ 525 ] 72 [ 525 ] 74 [ 525 525 525 525 ] 81 [ 525 ] 84 [ 525 ] 96 [ 525 ] 98 [ 525 ] 103 [ 525 ] 105 [ 525 ] 109 [ 525 ] 112 [ 525 ] 494 [ 525 ] ]
endobj
-1343 0 obj
+1363 0 obj
<< /Filter /FlateDecode /Length 27 >>
stream
xc``TdXǃaKI
endstream
endobj
-1344 0 obj
+1364 0 obj
<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 2421 >>
stream
xڍW Tgf50h}mU]bEe}VI$07Q <APTX6XOϮu;;S=;ə7
@@ -5740,32 +5822,32 @@ W
CH wu[uE,>>X*uŃibR2z@yRsa)d.($Ge1Հf4ca$Sg~lW/BU٫J]|+ ;rZhwgʪ+Q(_YE
endstream
endobj
-1342 0 obj
-<< /Type /FontDescriptor /FontName /SFCWXS+LMMonoSlant10-Regular /Flags 4 /FontBBox [ -477 -316 786 1016 ] /Ascent 1016 /CapHeight 611 /Descent -316 /ItalicAngle -10 /StemV 175 /XHeight 431 /FontFile3 1344 0 R /CIDSet 1343 0 R >>
+1362 0 obj
+<< /Type /FontDescriptor /FontName /SFCWXS+LMMonoSlant10-Regular /Flags 4 /FontBBox [ -477 -316 786 1016 ] /Ascent 1016 /CapHeight 611 /Descent -316 /ItalicAngle -10 /StemV 175 /XHeight 431 /FontFile3 1364 0 R /CIDSet 1363 0 R >>
endobj
-1345 0 obj
+1365 0 obj
<< /Filter /FlateDecode /Length 471 >>
stream
xڍMo0
!Rz'M!$HH*nĞd- @+V"xw>=,U'WCG!u,; @+2/wÝ7Yo3\<dy*_UpJWMpڄԹXP+!$ Z=Rj?uh*Dsg*''G3"$&O9ЖꬃD6sѫ`BWAgnDnV9\ox01ε9Z] qЌl {e(񗝢h+c 6I9b+$B*֞V )EJ<'CH9ғMH;!=HSJ=%=̞b &mQR(&im<l>cOگ?IwRVvs^<i^.!
endstream
endobj
-469 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /SFCWXS+LMMonoSlant10-Regular /DescendantFonts [ 1346 0 R ] /ToUnicode 1345 0 R >>
+478 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /SFCWXS+LMMonoSlant10-Regular /DescendantFonts [ 1366 0 R ] /ToUnicode 1365 0 R >>
endobj
-1346 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /SFCWXS+LMMonoSlant10-Regular /FontDescriptor 1342 0 R /W 1341 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1366 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /SFCWXS+LMMonoSlant10-Regular /FontDescriptor 1362 0 R /W 1361 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1347 0 obj
+1367 0 obj
[ 28 [ 549 ] 35 [ 494 ] 40 [ 329 329 ] 43 [ 494 ] 45 [ 329 ] 47 [ 549 ] 50 [ 494 ] 55 [ 329 ] 59 [ 494 ] 63 [ 549 ] 66 [ 329 ] 70 [ 494 ] 72 [ 274 ] 75 [ 878 ] 77 [ 603 ] 81 [ 549 ] 84 [ 549 439 439 ] 88 [ 329 ] 96 [ 453 ] 98 [ 439 ] 104 [ 768 357 ] 109 [ 576 ] 112 [ 494 ] 114 [ 713 ] 116 [ 495 ] 118 [ 521 ] 251 [ 494 ] 502 [ 329 ] ]
endobj
-1349 0 obj
+1369 0 obj
<< /Filter /FlateDecode /Length 31 >>
stream
xc``(4ůaU h@/`
endstream
endobj
-1350 0 obj
+1370 0 obj
<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 3600 >>
stream
xڵX tW-!`$TA:!C`:$$a3` "o-[%Kd[TmKf[b$ 0d2I:C:t: 3t~bzdC9JJ*}}wPL `0ڴg]¶u]PVҒDqZ~nFm\r!r&8`=;슍fçbG_>AwqcD:v!Ğ
@@ -5781,42 +5863,42 @@ N Nu|U5ÏCM{E7.UgG'igWW_1GK lO ?Mt= =Kl
nn. ^:{:0IrFٜNU[f _-4UWѻLMvꕉlh!*@Ksvt?kbA/3qr] T5)Kc'S“L [-Vawܱ,V63v
endstream
endobj
-1348 0 obj
-<< /Type /FontDescriptor /FontName /HXCEOC+LMRoman8-Italic /Flags 4 /FontBBox [ -489 -292 1472 1124 ] /Ascent 1124 /CapHeight 683 /Descent -292 /ItalicAngle -15 /StemV 110 /XHeight 431 /FontFile3 1350 0 R /CIDSet 1349 0 R >>
+1368 0 obj
+<< /Type /FontDescriptor /FontName /HXCEOC+LMRoman8-Italic /Flags 4 /FontBBox [ -489 -292 1472 1124 ] /Ascent 1124 /CapHeight 683 /Descent -292 /ItalicAngle -15 /StemV 110 /XHeight 431 /FontFile3 1370 0 R /CIDSet 1369 0 R >>
endobj
-1351 0 obj
+1371 0 obj
<< /Filter /FlateDecode /Length 512 >>
stream
x}M@ރs`l%K3NltHC
נ%hZsSP[`hBP @6K q C["P^`@Y
endstream
endobj
-434 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /HXCEOC+LMRoman8-Italic /DescendantFonts [ 1352 0 R ] /ToUnicode 1351 0 R >>
+438 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /HXCEOC+LMRoman8-Italic /DescendantFonts [ 1372 0 R ] /ToUnicode 1371 0 R >>
endobj
-1352 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /HXCEOC+LMRoman8-Italic /FontDescriptor 1348 0 R /W 1347 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1372 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /HXCEOC+LMRoman8-Italic /FontDescriptor 1368 0 R /W 1367 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1353 0 obj
+1373 0 obj
[734 ]
endobj
-1354 0 obj
+1374 0 obj
[1123 ]
endobj
-1355 0 obj
+1375 0 obj
[777.8 0 777.8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 388.9 388.9 ]
endobj
-1356 0 obj
+1376 0 obj
[ 28 [ 525 ] 43 [ 489 ] 50 [ 511 ] 64 [ 367 ] 66 [ 256 ] 75 [ 867 ] 77 [ 561 ] 82 [ 550 ] 96 [ 372 ] 105 [ 404 550 550 ] 116 [ 500 ] ]
endobj
-1358 0 obj
+1378 0 obj
<< /Filter /FlateDecode /Length 23 >>
stream
xc```P`X P

endstream
endobj
-1359 0 obj
+1379 0 obj
<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 1716 >>
stream
xڍU pEUM,@+v70 X6e -ǀqL!`VK>eKeZ?K1`[4@
@@ -5828,10 +5910,10 @@ NIcO>ܷuecM·:tZ"K 4Hp'L4)v(*(8G:z<9
3##g< AjSS
endstream
endobj
-1357 0 obj
-<< /Type /FontDescriptor /FontName /QJUVUX+LMSans10-Bold /Flags 4 /FontBBox [ -460 -297 1761 1134 ] /Ascent 1134 /CapHeight 694 /Descent -297 /ItalicAngle 0 /StemV 102 /XHeight 458 /FontFile3 1359 0 R /CIDSet 1358 0 R >>
+1377 0 obj
+<< /Type /FontDescriptor /FontName /QJUVUX+LMSans10-Bold /Flags 4 /FontBBox [ -460 -297 1761 1134 ] /Ascent 1134 /CapHeight 694 /Descent -297 /ItalicAngle 0 /StemV 102 /XHeight 458 /FontFile3 1379 0 R /CIDSet 1378 0 R >>
endobj
-1360 0 obj
+1380 0 obj
<< /Filter /FlateDecode /Length 422 >>
stream
x}Kk0stZA04I .O[GX2ȿ[(9gFgƚ{.i6e^5-M&+#u(Qj{ ֈ;.UUw̅^:nZN?k^>eۄG %k8 ImאrZ.MkY<xUZ!!l|^ 
@@ -5839,83 +5921,90 @@ x}Kk0stZA04I .O[GX2ȿ[(9gFgƚ{.i6e^5-M
և! PTa$M%Vzl9'g/SfK co,]#gI)]e<hmsrftŒ\DWDgD7g3#eN~t,zkݎK[TAc_w2
endstream
endobj
-399 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /QJUVUX+LMSans10-Bold /DescendantFonts [ 1361 0 R ] /ToUnicode 1360 0 R >>
+403 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /QJUVUX+LMSans10-Bold /DescendantFonts [ 1381 0 R ] /ToUnicode 1380 0 R >>
endobj
-1361 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /QJUVUX+LMSans10-Bold /FontDescriptor 1357 0 R /W 1356 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1381 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /QJUVUX+LMSans10-Bold /FontDescriptor 1377 0 R /W 1376 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1362 0 obj
-[ 27 [ 850 547 ] 34 [ 800 625 575 ] 38 [ 575 575 ] 42 [ 813 500 ] 46 [ 862 625 ] 49 [ 738 513 563 ] 55 [ 344 563 563 ] 59 [ 563 ] 62 [ 880 625 375 419 313 ] 68 [ 344 ] 70 [ 594 676 313 ] 74 [ 1067 938 880 625 563 ] 80 [ 845 563 563 769 625 438 438 ] 88 [ 313 ] 90 [ 845 594 ] 95 [ 839 460 625 444 ] 100 [ 563 563 ] 104 [ 782 438 563 563 865 625 ] 111 [ 850 594 1162 813 850 594 ] 118 [ 594 688 500 563 656 ] 125 [ 625 ] 251 [ 513 ] 277 [ 513 ] 319 [ 625 625 ] 446 [ 875 ] 502 [ 313 ] ]
+1382 0 obj
+[ 27 [ 850 547 875 ] 34 [ 800 625 575 ] 38 [ 575 575 ] 42 [ 813 500 ] 46 [ 862 625 ] 49 [ 738 513 563 ] 55 [ 344 563 563 ] 59 [ 563 ] 62 [ 880 625 375 419 313 ] 68 [ 344 ] 70 [ 594 676 313 ] 74 [ 1067 938 880 625 563 ] 80 [ 845 563 563 769 625 438 438 ] 88 [ 313 ] 90 [ 845 594 ] 95 [ 839 460 625 444 ] 100 [ 563 563 ] 104 [ 782 438 563 563 865 625 ] 111 [ 850 594 1162 813 850 594 ] 118 [ 594 688 500 563 656 ] 125 [ 625 ] 251 [ 513 ] 277 [ 513 ] 319 [ 625 625 ] 446 [ 875 ] 502 [ 313 ] ]
endobj
-1364 0 obj
+1384 0 obj
<< /Filter /FlateDecode /Length 40 >>
stream
-xc``6.z߿o~€
-X@4c8
+xc``6.z߿o~€
+X@4c8
endstream
endobj
-1365 0 obj
-<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 7313 >>
-stream
-xzw\T׺afa{ރޢbW v@z6t3kfHb1Xr5=D9o xNr{=\D.z<k!)Hdyӂ- ƭ\.8-h;>Y"(d )aHz 0/bcݵ7l"BQ"ԟ|5- %? S \l3{Q"ʎb)d;'O0xwtOɓo:CDr]aJ U#U_ [2KE 6fro228_Izxyz(#<<C>%+•+}wyy*'LP*<=>gN=18{y&lR@Ca,Mp\z.^xbxT+8T6-o <=yxGS䃥SCapj$5K&R);Ի4j:5EͥQ"ʑZB-S+*j5DQzjrP[+FS'CR~?@Rn*
-¨pJEERQT4CSX^Ye2K謩X[]F9VCcWHJJ5ia}{>}e}cc7Q6F'{ܟ^ؾbIBRܱ{YAA44-g ^;!wTf*u!UdfaG<2qE&; դGX*5i3ef6Uwճu707#>CS<Y<<f~FZ_t@o8&4:aѶDjEU2VPY .bg'}[St]C}ԊB.߸U׎ywNl5as^\ƵIP57Aońi[܍'~
-6?#lhB+ LC&<C8=mQ<+}1y]k++H7I<్N lKgx!?y˗u=:#EB.Vhu\W*6>612MN~'ɉbK
-X^)8Yj7-$,@y $fjз ]?΀]si.3(y* U>i60 EZaiGT4^ @x:Up°i_if
-G`/cHihA(SIx$: 6X >$ӋQRVNRw/b㏟vyM:j4Z>33!.q;S[u>s6`Xi<I0
-44}R$A. Qx
-
-O`[.f) kł ؙU/j;ʈ,:]ÞδVhWn. ,@~}T}?x>=vo6Cٖc3alsbuFQI'CyOfhpOr9ALȏr(%A$S,48\m#g#H!Ĥ4j3Ҹ!T[Y<B YNKچ;[f7dG`[|1/I0H%c#U&iSj3*l2Q{.\k%Jku}/ZZ4o솺5=8,帉sg)7PGKqdapJ_˸.ŬY G;'8fQ0Fֵ8Œ"w|R+aw1E'&Ư]i}4{yTx 3Rf,k59\\RrT>V9GPcG-P' 嶉+@6[<dWrk*@*eVޏѱ|ce&99S۷$:oLVbxBG=z]AWRdj}&^^+K>JTj^~2yEo4ɕaa
-.y\J&OWZX̅<K< ܙh 2 YzifzfF*ڷÞcۑTNGMEO@׿9ng-×>E<H$n$leO]ogv4Ӛ %fHĻ.TᲥ߽"3Bz
-yW'ؚ3=Gls1y~D}h %K;dg^%]wwݺ\GuKJo~Qmtp?pXG
-o3
-vK}>C;䷠pBHRj)3PMP]O {SHohڋ7<nG:d)`aB&H2 %x؃₢,KH$bC>wfdeh4<^GWZ}{LW](.+*-~x|~n
-i<1)`^V4ͼLYGQ=Sc \*I%Y#’_P8GwgI-q!YLruu zڨVoҪdJqjA*W%YK*jC28Mt6 '
-a$.!3BJcP-f^GWt8}]X~1KWp|_?g^s0ٶ|` \Lq,C0|i&.^J<9;LTU515!~1;qyAM
-
-9<bqiѽ?oAtf]b'.ԯcdՇ;Qrpꬁ
-ġ89
-{coPbM)9P8}#u|eǞ[|bxpwfyEF12hȂ PV
-I
-gp]{wS0/x` MÓ8)%f,L$ #'4l;HF8rǬK.?mc֬#j[B/0W0PC;<b
-W
-GEVy!rxHxtuxɓoᷫ8i+*dDqڤdu*t,6o
--5m+7OQVI]Wll.`d
-WEHV2yDGjiN_J@jz/?i! DA5+a !
-oΆ5'ߣ*YtyGoMӠ8.#315=SZ |z1-=|4ԍ;\V= iu1o{գ=ܾJӨ=o ^B&RΖN{1z5)H$~%d(/XX&!!!6IꄥS0KP^mIqn.W\ZP֟`,, !4=($|LDw(}#Wwqu'OsmG.нgFlnƻ.i®O9d)¥ρ/@cN1"t^oDw34k'Ӓ_3HH}$'k \%@، ݥax4+=i3ܚ_(NmAWk88
-!:vjHD=#ԪHIaXqU$Z[j=+[6]V绠kK<7;}l
-صŰ}9Bxk_m#Ș@&:'$4}NKi)y\kmvm6#w-((*<8
-i ],_Чh E6pI a!|W]N~͸Fb 7v,ks><_ T_ Og3})cR8,ƃ`qqnMq=jhU`1 ŗA5 ũ<&&R a^.Q}rƾ;grɒ KH5Mfkk7M2|Inv6GNvi$dB"Kc蹥6Z0ɒdtދC͑&gr,Coz~^20?!#dS(+„j z$|i22aN;Y<Z<H,{"<~|օՋX<ax`8
-6vsV)P\;swwk}Ei^y49ŲM\S,`3@`mF(j/flES>SP$ᖯd5Qz`uywllNes ,~…{hK
+1385 0 obj
+<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 7547 >>
+stream
+xzy|6PJ%3)K7EDARJI&'It_hK)- -)mDvYTVE\r}ޓ{|vI3{ND=%\6/XiŠk"¼ç4͈P_۝łBpC0 CG=ed0HpA䵟 rA8vsM(BԷ@rɗ&O:}AĮĨKS<:Kd2!!A
+p_ŲɊoEēA
+@PEb"6/*Z+zdźhE|DT UĆE)bׯ]Q4IS=eJLl䈨)dLоASlMXֺI+.XEcbQ
+_[H/F FP#Q;5OM&SSiK j&5CNAͣSoR )j1ZF-VP+(Oj5ZKS(/j3A))oʇ@*
+BP*vQTMPqT<@%RIT*E2y/vek<{*z&g]}xx I+=ΔΔ\5z,
+vò}2|?_|bmH=T=^bHn'qM $fXKV2D ͋ElR{5Mבұ~47^
+\\N*DƵ>F!GS%:۴Inrn;s\8\/@
+jC(sm-vșݚ\w6&3Z1YN_ށ4ʧo[v?RzoI3C6N| 8G*+lJBɹ `X`唅qSwFˬFk9GJxr5y 1G"p%=ӡ7ϝ
+_Ui Ǽ;Sk;;ޒyTuۏV/{
+>Cӭ)]ʶ/]Ifg0GJ{1AUa|caۙW@#m?qOzf+<vS
+^ux<.9<`䧺}lElLsx[K1w/eiG w8wuA)82
+D`x8ܚI+sEȗ-qZ}}cGl;Zm ݚ.?YC͌:y`d]xP#dZ]N93quVNyi xa?&S
+ S؊ݶǰ, |.dYyNJ(?2KJPqi%) hEWGGҢNBW5(u-}(.8 LHS(IV[昷LcKFTL`x.rƽIyH& fťľ .Qf:DKxmΥgƯ{.Rb ޽JKMS ɕxx :]w:$Ȫu)HMe^h-x84p+<${z-|ވC8݀ ܼkL<ƑpӀQlYta18 $(=YUp YLaEx&i5-%>Xw. cEXi<)0it Y$IF# %Qx(8<ؓ<3fI`%a:1p+-pI4xɃA>LޛI ٦A!)v˄/\,t.v6vGGx#F=WZ
+Nes"mah-5d[ז&˿:;cOSaL8Ce8C?;Rg&:*|e߆RX!+^ww3OSڰ]MnrX)cO}phL擨\a-q|iDI~}'/{esD-ԭOl{MlJF{ɝz>BI⮯@j'~ ,0{~桤 7>HxOt*S^)R3;[֛+8Š0h awD+MN3;d(9G3T&T2vԞѱK TPJᘋmVel)y
+'N@%z]I1WQfn}&
+N^`kF M. yl/̧QUb%,"i? MOr| # mңqy5Oͧw)%XQ=J8qX̭{}Qh%OJH +9{utʘ5r K`̾/W7Gq{,G/Q;.Wʋu\%;Վpoړ_*x61cʉʃc=d+,Tc׀U \wzLlu
+5n]]ք+P
+ ZȆࠨ®'vjdVXj-6wu15RNͧr
+<B]GqIY
+KȵHC`fٞ\˰XPҌNb5]y(9]UVY^_TWf^Q&)rFOt{.PwT wRב`d
+⭡V ^co(|@:<g -qsiʟc\ǽa6]"YAt\qVA%e,"K^j&1^&-njC C4˅:{~
+ӫ’Zu6%.t=e;N0DY)zeˑ}Ch}ȷۻo]}r9;a-qI6<^} ;˫by]n'ŢEBE41sQZo4Mzoic==#hqiV[h!T-g^Ct{9}n] WX~g1[U1[UY2p^kow\p8m 3c `wed̍cyhyV.^
+<54*k.kw5D'Xt'2{P!1;
+XM\P:\vي[Ccmϰw*7V#w"VnS8
+2`GbI0 f<9X"haWkwET-rҘ<˩ IN٬A!؎e|O=&6NĿTvtP?dz}E@.T 0ⱛR4O0,֑+&av"SH>FM
+^!;Ny"RYG6Eea/PC<zr=Q!':^8]㤸g#;g>`PކW\YN//S (L/&DW\ax{-(Ce[^+<`1A@f}9*ED/ xf*bNjs2T`ԣ}%r[Q0Ɏ 19bs:71sI(0;a 30,12#LIӪ3O66]&s0]0sL'e<Jy,[O-0OQ8w_kG$C>,=#"w||Fk<FmYdJ9)C;yMͻ Ze9+a/Cޟ0Su)y#_#'; ;ClpQgZ0|`3wzOe!{ ܘOɪ3 i ڬ4-)'4.]uQ&}*LR`ͦkʟWr=bS uR)pG[U|K]"_|:8#󮶞a[ɲuxH`a'Oz)]]?Qoc-yx04י0XS \:+)QcJjl4U`/6s塝p ■|E_<>Zt[u\ik:dhEE)Yy NY\x|c-1oH;7y[5Gxɕqa1\8cOB=*t:c WZj,olnn>%xmy o":|/ 〗4p>
+חH*=)EQz.MWWl HrY9yҪ
+yn #"5~6^f硬\yR!͝=e;rTRÁ-XE~,هcy{Oy[_?!T< ރ C!;/.3%]9xbw;98(>ƮX<~ ֔к|Su죶y nXqg M<II;UY #Nu_=xWt_\ 3?)16XyhG!ć=^>\gÇwiƄ=~c^ߚ;/4Ǹw4K칁X9l 3RY\*اNF,Lz{q.*фL@~lXihu8hVU%C𳸼0~uU0*.k4ȇ}EOiBH4;fņFH^ { F}N[UM+?bA}47NʾDZXk|2<t|1L= wF# ث}2~
+ Yl7oX-NX[_[C𣸦H_xujӵO42OZ/'o4nn:?c'+F{mGs iRCvIt<WiYLFlA0 I=/ehw1j*qzCa j4<W>`mGP6}:ƅB\Iydj؛ٽ5 ޫ;]6R{q+GL" ">+m.C7T`w٘>a;j/T΃dlϴX=XdK.E4 JPqyS7HA䩭#B𣆟>n, [i>a*^C`q*+k&ы-HWP`VM$sHr6 VQ )=ՠ*:yy<1p-,ܳ7VӰgt*5<G5t{\"6W
+ռ^RvXn }7vs$x+
+ϳN J9sZm3HKbw0JZ\L0m>q=+0`D'0IϨGL͐zN8a32 f ^L;S%"H$jtYY-o;jɒI}HT&Tkdc"Y' 5uVe2NI wG!u|TcrWNkEl빔 ~Km wuopwMua;W$TV
+ INn^yu%&/WkK:ΐ
+X#OxI$Z1hܒo|.r IVNN_yE"̕fqFIA@ϷyT?ÉNk$#}r+=cwxZyh|7čU+[/d˿
endstream
endobj
-1363 0 obj
-<< /Type /FontDescriptor /FontName /CSWAZA+LMRoman12-Bold /Flags 4 /FontBBox [ -476 -289 1577 1137 ] /Ascent 1137 /CapHeight 686 /Descent -289 /ItalicAngle 0 /StemV 104 /XHeight 444 /FontFile3 1365 0 R /CIDSet 1364 0 R >>
+1383 0 obj
+<< /Type /FontDescriptor /FontName /ZCFLPY+LMRoman12-Bold /Flags 4 /FontBBox [ -476 -289 1577 1137 ] /Ascent 1137 /CapHeight 686 /Descent -289 /ItalicAngle 0 /StemV 104 /XHeight 444 /FontFile3 1385 0 R /CIDSet 1384 0 R >>
endobj
-1366 0 obj
-<< /Filter /FlateDecode /Length 676 >>
+1386 0 obj
+<< /Filter /FlateDecode /Length 682 >>
stream
-x}[k0+e[RSBA`{! ˾5$t ,a -26.ta1a4eDww<_Fu5=k[.ymY!v|VϷ?EeS>8gvUtKc.nX(ô]Ug$q,'.>6*[>䈧LWeO~'g?t9&6ڸ`׷!ڴtFR29%tʴ9ΛɰZh_n;p=49Ė6]/M&8)42VOp
-ݯU'͖8?Зa8M 4 9_yiSl;kSuk*,ʰڥMS;,_U4.
+x}[k0+e[Ҧ@n@/!)5$t&),a -2tm4qs[xk`Q瓱1k{f.gbe%ly<ksͺ43~>ϋuSv>8g>r\ݍPiό?%I>XZ=On]4$}lxUnI$#2]=QYI洲:p]^hjV*tsWÒh2a]ad_|]/:qi Ks-kmfWvg&; k'8*?3W(Ir> 4$R(M2d$H)d tDKrP( H"hɾOB0(s];U<CNZF B''$ȡ,K9I":2"JU$Tg.3/@)3
+xjE$p[])uT Պ
+L2Ee.LAKWВ5% k*"hɨ
+d
+Lt"DZ$""/
endstream
endobj
-398 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /CSWAZA+LMRoman12-Bold /DescendantFonts [ 1367 0 R ] /ToUnicode 1366 0 R >>
+402 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /ZCFLPY+LMRoman12-Bold /DescendantFonts [ 1387 0 R ] /ToUnicode 1386 0 R >>
endobj
-1367 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /CSWAZA+LMRoman12-Bold /FontDescriptor 1363 0 R /W 1362 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1387 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /ZCFLPY+LMRoman12-Bold /FontDescriptor 1383 0 R /W 1382 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1368 0 obj
+1388 0 obj
[ 27 [ 531 531 531 ] 32 [ 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 ] 49 [ 531 531 531 531 531 ] 55 [ 531 531 531 ] 59 [ 531 ] 61 [ 531 531 531 531 ] 66 [ 531 ] 68 [ 531 ] 70 [ 531 531 531 531 531 531 531 531 531 ] 80 [ 531 531 531 ] 84 [ 531 531 531 ] 88 [ 531 ] 91 [ 531 ] 95 [ 531 531 531 531 531 531 531 531 531 531 531 531 531 ] 109 [ 531 531 531 531 531 531 531 531 ] 118 [ 531 ] 120 [ 531 ] ]
endobj
-1370 0 obj
+1390 0 obj
<< /Filter /FlateDecode /Length 25 >>
stream
xc``&

endstream
endobj
-1371 0 obj
+1391 0 obj
<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 6684 >>
stream
xڍz \ĐITc1wuV[m"]p)Rwְ@a_nl{EUgݢM۾c/oB~ ޙw=lڙ<<rٛd1~JۭUv*t$c0R#Ot_rt݁o>K5_0 x1y(ǩ/.p| #x $1+ׯ7e"*^sqy}smt_@"V*J̑z̑z*bWr,/"HzɶHcT2JTD^#
@@ -5938,10 +6027,10 @@ svO֛-5rRtnS8(U[ftF\cs
Ut\PYKJwvB1H( H+WqAR2H5~-۟yei xg4n@K*:8:hq_Z}cGyNoL:;q
endstream
endobj
-1369 0 obj
-<< /Type /FontDescriptor /FontName /BAKNBK+LMMono8-Regular /Flags 4 /FontBBox [ -456 -320 743 1014 ] /Ascent 1014 /CapHeight 611 /Descent -320 /ItalicAngle 0 /StemV 177 /XHeight 431 /FontFile3 1371 0 R /CIDSet 1370 0 R >>
+1389 0 obj
+<< /Type /FontDescriptor /FontName /BAKNBK+LMMono8-Regular /Flags 4 /FontBBox [ -456 -320 743 1014 ] /Ascent 1014 /CapHeight 611 /Descent -320 /ItalicAngle 0 /StemV 177 /XHeight 431 /FontFile3 1391 0 R /CIDSet 1390 0 R >>
endobj
-1372 0 obj
+1392 0 obj
<< /Filter /FlateDecode /Length 673 >>
stream
x}Kk0E!]q,YjK@A٦1$EH:'-ZU)W?^m,of6?mjQ秣gk [\V{b0_-VU_ͫ*?
@@ -5951,22 +6040,22 @@ x}Kk0E!]q,YjK@A٦1$EH:'-ZU)W?^m,of6
I(($*#1]vNUЩZZBKj BePm2 <<Sˠit7$tB4)i-nECmjj<S|[< yJjIeHh$#A#eH0]?q@N0%TOƏͮ0>Ä򳩬DŽmW0/#<,ޣ
endstream
endobj
-389 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /BAKNBK+LMMono8-Regular /DescendantFonts [ 1373 0 R ] /ToUnicode 1372 0 R >>
+393 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /BAKNBK+LMMono8-Regular /DescendantFonts [ 1393 0 R ] /ToUnicode 1392 0 R >>
endobj
-1373 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /BAKNBK+LMMono8-Regular /FontDescriptor 1369 0 R /W 1368 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1393 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /BAKNBK+LMMono8-Regular /FontDescriptor 1389 0 R /W 1388 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1374 0 obj
+1394 0 obj
[ 28 [ 510 ] 35 [ 549 ] 43 [ 472 ] 47 [ 549 ] 50 [ 472 ] 63 [ 549 354 ] 66 [ 253 ] 70 [ 519 ] 72 [ 253 ] 75 [ 844 ] 77 [ 549 ] 81 [ 531 ] 84 [ 549 ] 88 [ 295 ] 96 [ 363 ] 98 [ 407 ] 105 [ 384 ] 109 [ 549 ] 112 [ 490 ] 114 [ 726 ] 116 [ 490 ] 118 [ 490 ] ]
endobj
-1376 0 obj
+1396 0 obj
<< /Filter /FlateDecode /Length 23 >>
stream
xc``T`\4ţa*
endstream
endobj
-1377 0 obj
+1397 0 obj
<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 1825 >>
stream
xmU}TWC23,--% ~`AFH &"H5`˩,JY+ǮG .Zp`Y{T{a nOߙy3{w$" fY|u.!huD3,Fg+Nf%%'ů$M2Z|ӏt9! &Ltmo
@@ -5978,10 +6067,10 @@ C(ŢhJ@kmDP*2(ّKDY|=K׉D yx^^$Zɇ=f0C
`=d(#p
endstream
endobj
-1375 0 obj
-<< /Type /FontDescriptor /FontName /QQGJDO+LMSans8-Regular /Flags 4 /FontBBox [ -446 -314 1510 1154 ] /Ascent 1154 /CapHeight 694 /Descent -314 /ItalicAngle 0 /StemV 98 /XHeight 444 /FontFile3 1377 0 R /CIDSet 1376 0 R >>
+1395 0 obj
+<< /Type /FontDescriptor /FontName /QQGJDO+LMSans8-Regular /Flags 4 /FontBBox [ -446 -314 1510 1154 ] /Ascent 1154 /CapHeight 694 /Descent -314 /ItalicAngle 0 /StemV 98 /XHeight 444 /FontFile3 1397 0 R /CIDSet 1396 0 R >>
endobj
-1378 0 obj
+1398 0 obj
<< /Filter /FlateDecode /Length 466 >>
stream
x}Mo0
@@ -5990,22 +6079,22 @@ x}Mo0
_k;eo{?vqr7
endstream
endobj
-388 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /QQGJDO+LMSans8-Regular /DescendantFonts [ 1379 0 R ] /ToUnicode 1378 0 R >>
+392 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /QQGJDO+LMSans8-Regular /DescendantFonts [ 1399 0 R ] /ToUnicode 1398 0 R >>
endobj
-1379 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /QQGJDO+LMSans8-Regular /FontDescriptor 1375 0 R /W 1374 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1399 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /QQGJDO+LMSans8-Regular /FontDescriptor 1395 0 R /W 1394 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1380 0 obj
+1400 0 obj
[ 27 [ 796 531 ] 34 [ 752 590 ] 42 [ 767 472 295 295 811 590 ] 49 [ 723 472 531 ] 54 [ 693 325 531 531 834 531 ] 63 [ 590 354 383 295 ] 68 [ 325 ] 70 [ 561 664 295 ] 75 [ 885 796 590 531 ] 80 [ 826 531 531 723 590 413 413 ] 88 [ 295 ] 90 [ 826 561 ] 95 [ 782 414 590 419 ] 100 [ 531 531 531 ] 104 [ 767 413 531 531 ] 109 [ 590 ] 111 [ 796 561 ] 115 [ 796 561 ] 118 [ 561 649 472 531 620 885 ] 125 [ 590 590 ] 168 [ 531 ] 251 [ 472 ] 257 [ 472 ] 277 [ 472 ] 319 [ 590 590 ] 343 [ 295 ] 428 [ 531 ] 446 [ 826 ] 502 [ 295 ] 575 [ 590 ] 589 [ 590 ] ]
endobj
-1382 0 obj
+1402 0 obj
<< /Filter /FlateDecode /Length 54 >>
stream
xc``0/z޿
endstream
endobj
-1383 0 obj
+1403 0 obj
<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 7732 >>
stream
xڽz xUvuBwEh*갃 Kd
@@ -6044,10 +6133,10 @@ S&p*|o5:|;G|#apXN:6csJUFBe2`hEASE٨Μ}+Lmyf
<Qv* U%<@t _t2_T'̭?(H]A7qbǟ C<EQ3 ԊKAYTP+__<d=41t9g&}^>`ȳ~k)"
endstream
endobj
-1381 0 obj
-<< /Type /FontDescriptor /FontName /OPWHQU+LMRoman8-Regular /Flags 4 /FontBBox [ -456 -292 1497 1125 ] /Ascent 1125 /CapHeight 683 /Descent -292 /ItalicAngle 0 /StemV 98 /XHeight 431 /FontFile3 1383 0 R /CIDSet 1382 0 R >>
+1401 0 obj
+<< /Type /FontDescriptor /FontName /OPWHQU+LMRoman8-Regular /Flags 4 /FontBBox [ -456 -292 1497 1125 ] /Ascent 1125 /CapHeight 683 /Descent -292 /ItalicAngle 0 /StemV 98 /XHeight 431 /FontFile3 1403 0 R /CIDSet 1402 0 R >>
endobj
-1384 0 obj
+1404 0 obj
<< /Filter /FlateDecode /Length 712 >>
stream
x}[o0+ڇ;RDl^^İ_gjHEh}a|٫C_pXvղ{m'k]vҷZzZL3vZ4\B\v/?>~y|m _+So͸dv}|<0q9 p&MN7{ޝ@DnW{k;>ޯ̦ S6a^M0yk7fˮ?hcևi`6c֣r]Uf<~۱,, jk=telu0&3 8ڀӿJ_eMy"f$(be؋A"%@KOvSs 9P,P]z| H;Dҹ{U
@@ -6056,23 +6145,23 @@ DH *$ Rv"eD MLAP I"NY$g1P (DPRxfxNE~m
tKpBKDТkxie :ܕjʹwJ+e}N>Zpx{ BkϙDA<I_Xd»*^9qEY"~gGn_u{;MΝ~~f=o5д?
endstream
endobj
-387 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /OPWHQU+LMRoman8-Regular /DescendantFonts [ 1385 0 R ] /ToUnicode 1384 0 R >>
+391 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /OPWHQU+LMRoman8-Regular /DescendantFonts [ 1405 0 R ] /ToUnicode 1404 0 R >>
endobj
-1385 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /OPWHQU+LMRoman8-Regular /FontDescriptor 1381 0 R /W 1380 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1405 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /OPWHQU+LMRoman8-Regular /FontDescriptor 1401 0 R /W 1400 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1386 0 obj
+1406 0 obj
[ 187 [ 611 ] ]
endobj
-1388 0 obj
+1408 0 obj
<< /Filter /FlateDecode /Length 12 >>
stream
xc`

endstream
endobj
-1389 0 obj
+1409 0 obj
<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 620 >>
stream
xuR]O`n$8*86DF-&z'
@@ -6081,33 +6170,33 @@ xuR]O`n$8*86DF-&z'
Ezsw`#[mrϪ'[Hmr~3S)~ȻxY-toX} vN^%-5{KZ?,sT[-Z𕢶{6:D u
endstream
endobj
-1387 0 obj
-<< /Type /FontDescriptor /FontName /TMHZDF+LMRoman6-Regular /Flags 4 /FontBBox [ -515 -298 1647 1125 ] /Ascent 1125 /CapHeight 683 /Descent -298 /ItalicAngle 0 /StemV 117 /XHeight 431 /FontFile3 1389 0 R /CIDSet 1388 0 R >>
+1407 0 obj
+<< /Type /FontDescriptor /FontName /TMHZDF+LMRoman6-Regular /Flags 4 /FontBBox [ -515 -298 1647 1125 ] /Ascent 1125 /CapHeight 683 /Descent -298 /ItalicAngle 0 /StemV 117 /XHeight 431 /FontFile3 1409 0 R /CIDSet 1408 0 R >>
endobj
-1390 0 obj
+1410 0 obj
<< /Filter /FlateDecode /Length 362 >>
stream
x}_k0)
`"ڮLXQ{4Kbmaoι7<|d '譶yC&]BQm$PtS̘SAmZbb{޷Y;`Uu2`TR, A`^[ڞ%3*,8 #`s垴6Qo5֩($cμժw3CEiیƓuMS偀$ 0,h.|{^מc D`*MNQD⍹уT 1П\9˥Es2ܺhùvJzCp\%F6 .!
endstream
endobj
-386 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /TMHZDF+LMRoman6-Regular /DescendantFonts [ 1391 0 R ] /ToUnicode 1390 0 R >>
+390 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /TMHZDF+LMRoman6-Regular /DescendantFonts [ 1411 0 R ] /ToUnicode 1410 0 R >>
endobj
-1391 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /TMHZDF+LMRoman6-Regular /FontDescriptor 1387 0 R /W 1386 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1411 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /TMHZDF+LMRoman6-Regular /FontDescriptor 1407 0 R /W 1406 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1392 0 obj
+1412 0 obj
[ 27 [ 869 559 ] 34 [ 818 639 575 ] 42 [ 831 511 ] 45 [ 319 882 639 ] 49 [ 756 527 575 ] 54 [ 724 351 575 575 904 575 ] 62 [ 900 639 383 436 319 594 ] 70 [ 607 692 319 ] 74 [ 1092 958 900 639 575 ] 80 [ 864 575 575 786 639 447 447 ] 88 [ 319 ] 91 [ 607 ] 95 [ 863 474 639 454 ] 100 [ 575 575 575 ] 104 [ 800 447 575 575 885 639 ] 111 [ 869 607 1189 831 869 607 869 607 703 511 575 671 ] 125 [ 639 ] 251 [ 527 ] 283 [ 1150 ] 446 [ 894 ] 502 [ 319 ] ]
endobj
-1394 0 obj
+1414 0 obj
<< /Filter /FlateDecode /Length 34 >>
stream
xc``0/y߿€
0A)
endstream
endobj
-1395 0 obj
+1415 0 obj
<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 7229 >>
stream
xڵzw\W0;hq-;8`/(bA5vQQ@AA
@@ -6154,31 +6243,31 @@ rxCʼ[/\oOOnyXo@ۚ#b'qnj(U><Յ|ZUP(痭=_
yY?r
endstream
endobj
-1393 0 obj
-<< /Type /FontDescriptor /FontName /CWYYJT+LMRoman10-Bold /Flags 4 /FontBBox [ -486 -295 1607 1133 ] /Ascent 1133 /CapHeight 686 /Descent -295 /ItalicAngle 0 /StemV 106 /XHeight 444 /FontFile3 1395 0 R /CIDSet 1394 0 R >>
+1413 0 obj
+<< /Type /FontDescriptor /FontName /CWYYJT+LMRoman10-Bold /Flags 4 /FontBBox [ -486 -295 1607 1133 ] /Ascent 1133 /CapHeight 686 /Descent -295 /ItalicAngle 0 /StemV 106 /XHeight 444 /FontFile3 1415 0 R /CIDSet 1414 0 R >>
endobj
-1396 0 obj
+1416 0 obj
<< /Filter /FlateDecode /Length 672 >>
stream
x}[o1WHvW(y+w<k Ucƞ3ǓI*jk쉳OV0uSGެ*NGc7cїh>X=L-G%~K{KuqcO?._s1v7?MӖ}a}0zZ}om'}Q+nH$zQ2]QYIv渴*Yۮ9ŏQѦ)qOX`ƣшis;o6GvѲ;wvb} K'[Tڴ0M4t.(2V8]W^BşM/J&"dhH!FSwJY2A d1BuI3H"S2I @:t2@@9G3H'tct :s8C$"eTU9~J"P]@g
endstream
endobj
-385 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /CWYYJT+LMRoman10-Bold /DescendantFonts [ 1397 0 R ] /ToUnicode 1396 0 R >>
+389 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /CWYYJT+LMRoman10-Bold /DescendantFonts [ 1417 0 R ] /ToUnicode 1416 0 R >>
endobj
-1397 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /CWYYJT+LMRoman10-Bold /FontDescriptor 1393 0 R /W 1392 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1417 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /CWYYJT+LMRoman10-Bold /FontDescriptor 1413 0 R /W 1412 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1398 0 obj
+1418 0 obj
[ 28 [ 613 ] 35 [ 580 ] 47 [ 624 ] 50 [ 558 ] 55 [ 536 ] 59 [ 641 ] 72 [ 513 ] 77 [ 613 ] 82 [ 553 ] 84 [ 558 ] 98 [ 458 ] 104 [ 786 ] 112 [ 613 ] ]
endobj
-1400 0 obj
+1420 0 obj
<< /Filter /FlateDecode /Length 23 >>
stream
xc```T`h`Phh
endstream
endobj
-1401 0 obj
+1421 0 obj
<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 1852 >>
stream
x}UP]43Y ?1D@b
@@ -6191,10 +6280,10 @@ Cأ-ܙo  fn @b B> ߇6'Q0N-ͺ*jq
C?Uks> n=Sߗ]{Uduk4ZAa 0ǰ nwpWB>_`:׍k78L <A¯‘:t@9[v?ӍN4?tn@g@Q[Lh$<xL{״0Q/o^L=S+= #L<B 묯j-nOb)׉x|? CT3: ~;EՕ.%+XʧZ> pJv3^ !N^[;.Di>Ȝ^ԏ+>n7PeЙ^/n
endstream
endobj
-1399 0 obj
-<< /Type /FontDescriptor /FontName /EYRPLG+LMRomanCaps10-Regular /Flags 4 /FontBBox [ -496 -290 1501 1100 ] /Ascent 1100 /CapHeight 683 /Descent -290 /ItalicAngle 0 /StemV 106 /XHeight 514 /FontFile3 1401 0 R /CIDSet 1400 0 R >>
+1419 0 obj
+<< /Type /FontDescriptor /FontName /EYRPLG+LMRomanCaps10-Regular /Flags 4 /FontBBox [ -496 -290 1501 1100 ] /Ascent 1100 /CapHeight 683 /Descent -290 /ItalicAngle 0 /StemV 106 /XHeight 514 /FontFile3 1421 0 R /CIDSet 1420 0 R >>
endobj
-1402 0 obj
+1422 0 obj
<< /Filter /FlateDecode /Length 430 >>
stream
xڍM0C {Z,ub؏i
@@ -6203,22 +6292,22 @@ b!&ޅRB 6~<|v}Qa|[6D9F'Z#ôVVWZ\ߢ
RF)O_J [.!vUkVU {:~h
endstream
endobj
-384 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /EYRPLG+LMRomanCaps10-Regular /DescendantFonts [ 1403 0 R ] /ToUnicode 1402 0 R >>
+388 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /EYRPLG+LMRomanCaps10-Regular /DescendantFonts [ 1423 0 R ] /ToUnicode 1422 0 R >>
endobj
-1403 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /EYRPLG+LMRomanCaps10-Regular /FontDescriptor 1399 0 R /W 1398 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1423 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /EYRPLG+LMRomanCaps10-Regular /FontDescriptor 1419 0 R /W 1418 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1404 0 obj
+1424 0 obj
[ 28 [ 500 ] 35 [ 556 ] 43 [ 444 ] 45 [ 278 ] 47 [ 556 ] 50 [ 444 ] 52 [ 778 ] 55 [ 306 ] 59 [ 500 ] 63 [ 556 333 ] 66 [ 278 ] 71 [ 625 278 ] 75 [ 833 750 556 ] 81 [ 500 ] 84 [ 556 ] 88 [ 278 ] 91 [ 528 ] 96 [ 392 ] 98 [ 394 ] 104 [ 722 389 ] 109 [ 556 ] 112 [ 528 ] 115 [ 750 528 ] 125 [ 556 ] 251 [ 444 ] 257 [ 444 ] 277 [ 444 ] 502 [ 278 ] ]
endobj
-1406 0 obj
+1426 0 obj
<< /Filter /FlateDecode /Length 35 >>
stream
xc``\8c‚#3XP2`
endstream
endobj
-1407 0 obj
+1427 0 obj
<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 3950 >>
stream
xX TSW>NT9M[vQ[Z:Q(jWx(
@@ -6241,31 +6330,31 @@ Qm!5;~DM1S=RH$K#aF@ l~ P4dFf,u@{gȮY
ijYZA+|}l7MҮ%A٠n>u5f˛AANb֠5
endstream
endobj
-1405 0 obj
-<< /Type /FontDescriptor /FontName /ZSUCQN+LMRomanSlant10-Regular /Flags 4 /FontBBox [ -457 -290 1446 1127 ] /Ascent 1127 /CapHeight 683 /Descent -290 /ItalicAngle -10 /StemV 93 /XHeight 431 /FontFile3 1407 0 R /CIDSet 1406 0 R >>
+1425 0 obj
+<< /Type /FontDescriptor /FontName /ZSUCQN+LMRomanSlant10-Regular /Flags 4 /FontBBox [ -457 -290 1446 1127 ] /Ascent 1127 /CapHeight 683 /Descent -290 /ItalicAngle -10 /StemV 93 /XHeight 431 /FontFile3 1427 0 R /CIDSet 1426 0 R >>
endobj
-1408 0 obj
+1428 0 obj
<< /Filter /FlateDecode /Length 531 >>
stream
xڍKo@Y8I,%KH I1B-ǂߙ9c"UUT$1a=wEs$7lO}3v%k:ٺ)ǚ#$h޻i`tjS[Y^FASֿ^\ɏ}+~۹__M]R\kpQ5T4?F>1s~H6wV7[L*):+(3Q%Y<]_<5jYuJS*3BZN0A'unWڐPj~G {_6(+䙜2'lW9'J*n䥪瑗hz!?e5(F,ٞ1vy0r|K,ٞTG@sz6=cAY _"(K%PrMNKl^/1{lXl ysl yKHϽO<i$zoY]\uz*I;62osMoE
endstream
endobj
-383 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /ZSUCQN+LMRomanSlant10-Regular /DescendantFonts [ 1409 0 R ] /ToUnicode 1408 0 R >>
+387 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /ZSUCQN+LMRomanSlant10-Regular /DescendantFonts [ 1429 0 R ] /ToUnicode 1428 0 R >>
endobj
-1409 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /ZSUCQN+LMRomanSlant10-Regular /FontDescriptor 1405 0 R /W 1404 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1429 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /ZSUCQN+LMRomanSlant10-Regular /FontDescriptor 1425 0 R /W 1424 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1410 0 obj
+1430 0 obj
[ 28 [ 569 ] 45 [ 323 ] 47 [ 631 ] 50 [ 508 569 ] 55 [ 354 569 569 ] 59 [ 569 ] 66 [ 323 ] 75 [ 939 ] 78 [ 569 ] 81 [ 569 569 ] 98 [ 453 ] 100 [ 569 569 ] 106 [ 569 569 ] 121 [ 569 ] ]
endobj
-1412 0 obj
+1432 0 obj
<< /Filter /FlateDecode /Length 24 >>
stream
xc````5 c
endstream
endobj
-1413 0 obj
+1433 0 obj
<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 2882 >>
stream
x}V TGa`zTDm5ݦ=DkQcQ a8fd@e9f@DD9JtM< M\]1զ|/{ަ_uwU}UٙH${ǚ뵱
@@ -6280,10 +6369,10 @@ x}V TGa`zTDm5ݦ=DkQcQ a8fd@e9f@DD9JtM< M\
'ѸXfݯ6f,r,G4r ݅,ȦI.x"^[ǤӰ(>f!BS˼x3< #'"vЈzxAیf
endstream
endobj
-1411 0 obj
-<< /Type /FontDescriptor /FontName /PTDKAL+LMRoman7-Regular /Flags 4 /FontBBox [ -483 -292 1562 1124 ] /Ascent 1124 /CapHeight 683 /Descent -292 /ItalicAngle 0 /StemV 108 /XHeight 431 /FontFile3 1413 0 R /CIDSet 1412 0 R >>
+1431 0 obj
+<< /Type /FontDescriptor /FontName /PTDKAL+LMRoman7-Regular /Flags 4 /FontBBox [ -483 -292 1562 1124 ] /Ascent 1124 /CapHeight 683 /Descent -292 /ItalicAngle 0 /StemV 108 /XHeight 431 /FontFile3 1433 0 R /CIDSet 1432 0 R >>
endobj
-1414 0 obj
+1434 0 obj
<< /Filter /FlateDecode /Length 455 >>
stream
x}n0y
@@ -6291,22 +6380,22 @@ wDiBhRPm%bGNqT].R_ΙLnp tj nɤTlh@
4AGJHjsԼwyFgh{>"yDz:cVHXb9R"PL\GlDN\lRs'&dk,٠9Hwis.Ur* 
endstream
endobj
-382 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /PTDKAL+LMRoman7-Regular /DescendantFonts [ 1415 0 R ] /ToUnicode 1414 0 R >>
+386 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /PTDKAL+LMRoman7-Regular /DescendantFonts [ 1435 0 R ] /ToUnicode 1434 0 R >>
endobj
-1415 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /PTDKAL+LMRoman7-Regular /FontDescriptor 1411 0 R /W 1410 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1435 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /PTDKAL+LMRoman7-Regular /FontDescriptor 1431 0 R /W 1430 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1416 0 obj
+1436 0 obj
[ 27 [ 743 511 ] 35 [ 460 ] 42 [ 716 460 ] 45 [ 307 755 511 ] 49 [ 678 460 511 ] 55 [ 307 511 511 ] 59 [ 460 ] 63 [ 511 358 ] 66 [ 307 ] 72 [ 256 ] 74 [ 897 818 743 562 511 ] 81 [ 511 511 678 511 ] 91 [ 460 ] 95 [ 729 422 562 409 ] 100 [ 511 511 ] 104 [ 716 332 511 511 ] 109 [ 537 ] 112 [ 460 ] 114 [ 664 ] 116 [ 464 ] 118 [ 486 ] 121 [ 511 ] 168 [ 511 ] 251 [ 460 ] 257 [ 460 ] 277 [ 460 ] ]
endobj
-1418 0 obj
+1438 0 obj
<< /Filter /FlateDecode /Length 34 >>
stream
xc``0/`_/@X
endstream
endobj
-1419 0 obj
+1439 0 obj
<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 6083 >>
stream
xY xSe>!PD9rNDDPVY*;elvB4mt˾ϾvoӽPZe"880
@@ -6338,32 +6427,32 @@ L AFeée*O&3bO~/07Yku~
)\n) 98lrkK:C->tT]yRQqb4p^o
endstream
endobj
-1417 0 obj
-<< /Type /FontDescriptor /FontName /HOLXNQ+LMRoman10-Italic /Flags 4 /FontBBox [ -458 -290 1386 1125 ] /Ascent 1125 /CapHeight 683 /Descent -290 /ItalicAngle -15 /StemV 102 /XHeight 431 /FontFile3 1419 0 R /CIDSet 1418 0 R >>
+1437 0 obj
+<< /Type /FontDescriptor /FontName /HOLXNQ+LMRoman10-Italic /Flags 4 /FontBBox [ -458 -290 1386 1125 ] /Ascent 1125 /CapHeight 683 /Descent -290 /ItalicAngle -15 /StemV 102 /XHeight 431 /FontFile3 1439 0 R /CIDSet 1438 0 R >>
endobj
-1420 0 obj
+1440 0 obj
<< /Filter /FlateDecode /Length 579 >>
stream
x}Oo0=8B(-R ]@^ClHĉpۯ7ijZ<{x; Q<r]}k ._VuqR
)jں8ȞFoTq 9-zR}J6>w}}yU<nZ.7e o̶-ۮ9Le]3-d\*Ҫdw<ߢQÇ{jε3^ۭɮ-ՅQkJN2!ϺhWMղ㽑̷akBHgC)OH%9N@- gCqz 2
endstream
endobj
-381 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /HOLXNQ+LMRoman10-Italic /DescendantFonts [ 1421 0 R ] /ToUnicode 1420 0 R >>
+385 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /HOLXNQ+LMRoman10-Italic /DescendantFonts [ 1441 0 R ] /ToUnicode 1440 0 R >>
endobj
-1421 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /HOLXNQ+LMRoman10-Italic /FontDescriptor 1417 0 R /W 1416 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1441 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /HOLXNQ+LMRoman10-Italic /FontDescriptor 1437 0 R /W 1436 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1422 0 obj
+1442 0 obj
[ 27 [ 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 ] 61 [ 525 525 525 525 525 525 525 525 ] 70 [ 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 ] 91 [ 525 ] 95 [ 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 ] 120 [ 525 525 ] 245 [ 525 525 ] 252 [ 525 ] 272 [ 525 ] ]
endobj
-1424 0 obj
+1444 0 obj
<< /Filter /FlateDecode /Length 33 >>
stream
xc``_
endstream
endobj
-1425 0 obj
+1445 0 obj
<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 8030 >>
stream
xڽz\WאּD *(3Ěcb((,3{cWlAq$kMLbMs} y .s̜<gV@bˎrptJߘ?gWLn*75E${EcY
@@ -6408,10 +6497,10 @@ MU|\hk!y\&bVf QN^)T6+HLYׅǃ"ƒ|v,
Ct?LCDpƦjYMD<7ťr=?;)ZVM41Yl^W1Yq,+VT̨&n&ggHsZZE1t+AX鿘yLV,, <ӗXQڑQK?Y٦U9iiM_/2t
endstream
endobj
-1423 0 obj
-<< /Type /FontDescriptor /FontName /RXYETB+LMMono10-Regular /Flags 4 /FontBBox [ -451 -316 731 1016 ] /Ascent 1016 /CapHeight 611 /Descent -316 /ItalicAngle 0 /StemV 175 /XHeight 431 /FontFile3 1425 0 R /CIDSet 1424 0 R >>
+1443 0 obj
+<< /Type /FontDescriptor /FontName /RXYETB+LMMono10-Regular /Flags 4 /FontBBox [ -451 -316 731 1016 ] /Ascent 1016 /CapHeight 611 /Descent -316 /ItalicAngle 0 /StemV 175 /XHeight 431 /FontFile3 1445 0 R /CIDSet 1444 0 R >>
endobj
-1426 0 obj
+1446 0 obj
<< /Filter /FlateDecode /Length 738 >>
stream
x}[k@+f/
@@ -6422,22 +6511,22 @@ sAs hvb֓ $sҏO) HҏD? !Oނ'L/Eu%+gH~ςG
F#d0JF@02$IT^H|jYUK_]KL/E%4,CN3oӒS %,aNó6)q^ s0' +8=9- RK&>h%.zCK?ҏ}@-?[$YA˓%sq FY$șNqCqLwOm/xy}/M ox.@V4
endstream
endobj
-380 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /RXYETB+LMMono10-Regular /DescendantFonts [ 1427 0 R ] /ToUnicode 1426 0 R >>
+384 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /RXYETB+LMMono10-Regular /DescendantFonts [ 1447 0 R ] /ToUnicode 1446 0 R >>
endobj
-1427 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /RXYETB+LMMono10-Regular /FontDescriptor 1423 0 R /W 1422 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1447 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /RXYETB+LMMono10-Regular /FontDescriptor 1443 0 R /W 1442 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1428 0 obj
+1448 0 obj
[ 28 [ 481 ] 35 [ 517 ] 43 [ 444 ] 47 [ 517 ] 50 [ 444 ] 55 [ 306 ] 57 [ 500 ] 59 [ 500 ] 63 [ 517 333 278 239 ] 68 [ 267 ] 70 [ 489 ] 72 [ 239 ] 75 [ 794 ] 77 [ 517 ] 81 [ 500 500 ] 84 [ 517 ] 96 [ 342 ] 98 [ 383 ] 101 [ 500 ] 105 [ 361 500 500 ] 109 [ 517 ] 111 [ 667 461 ] 114 [ 683 ] 116 [ 461 ] 118 [ 461 ] 120 [ 435 ] 125 [ 536 536 ] ]
endobj
-1430 0 obj
+1450 0 obj
<< /Filter /FlateDecode /Length 24 >>
stream
xc``T |5%aI6
endstream
endobj
-1431 0 obj
+1451 0 obj
<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 2827 >>
stream
xuV TW1 h@%&RFgjk
@@ -6455,181 +6544,195 @@ m׫&IcT щqRm4T!MKUR:mZr껎u4CHNNUJӒbU:>A% iҥ5
ʊKJm)
endstream
endobj
-1429 0 obj
-<< /Type /FontDescriptor /FontName /JZYRJQ+LMSans10-Regular /Flags 4 /FontBBox [ -420 -309 1431 1154 ] /Ascent 1154 /CapHeight 694 /Descent -309 /ItalicAngle 0 /StemV 93 /XHeight 444 /FontFile3 1431 0 R /CIDSet 1430 0 R >>
+1449 0 obj
+<< /Type /FontDescriptor /FontName /JZYRJQ+LMSans10-Regular /Flags 4 /FontBBox [ -420 -309 1431 1154 ] /Ascent 1154 /CapHeight 694 /Descent -309 /ItalicAngle 0 /StemV 93 /XHeight 444 /FontFile3 1451 0 R /CIDSet 1450 0 R >>
endobj
-1432 0 obj
+1452 0 obj
<< /Filter /FlateDecode /Length 527 >>
stream
x}O0=dqwW(@bS@U[ }m?[$xc&|䞳5YE <HuoDdm؇ ul+Uuw&yYR*uK}pK?—_?/¯Bt8 r{j[uGDf(senZ=sn,득 F^%Ke;+<b&>˓\ڎN+锍Lũ FZԁ ?hr69xeLޔ6'b#;Jh]>vf{iŎ#.kImS u`jL.+ Hɿv{I&>T.-iYP 4vĠ HRУg*<8sG9?|Oc3(@s%>AP&DL'M1FLhI|h,T' .?mzM,nO ~{6\<kmV]v+Eכԍ=
ޗ=
endstream
endobj
-379 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /JZYRJQ+LMSans10-Regular /DescendantFonts [ 1433 0 R ] /ToUnicode 1432 0 R >>
+383 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /JZYRJQ+LMSans10-Regular /DescendantFonts [ 1453 0 R ] /ToUnicode 1452 0 R >>
endobj
-1433 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /JZYRJQ+LMSans10-Regular /FontDescriptor 1429 0 R /W 1428 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1453 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /JZYRJQ+LMSans10-Regular /FontDescriptor 1449 0 R /W 1448 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1434 0 obj
+1454 0 obj
[388.9 388.9 0 777.8 0 0 0 0 500 500 500 500 500 500 500 500 500 500 0 0 0 777.8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 277.8 0 277.8 0 0 0 0 0 444.4 0 0 0 0 0 277.8 0 0 0 0 555.6 500 0 0 0 394.4 ]
endobj
-1435 0 obj
-[ 27 [ 750 500 ] 34 [ 708 556 500 ] 38 [ 500 500 ] 42 [ 722 444 278 278 764 556 ] 49 [ 681 444 500 ] 53 [ 278 653 306 500 500 785 500 ] 62 [ 750 556 333 361 278 514 306 778 528 625 278 ] 74 [ 917 833 750 556 500 ] 80 [ 778 500 500 681 556 389 389 ] 88 [ 278 778 778 528 ] 95 [ 736 392 556 394 278 500 500 500 ] 104 [ 722 389 500 500 750 556 ] 111 [ 750 528 1028 722 750 528 750 528 611 444 500 583 833 ] 125 [ 556 556 ] 144 [ 500 ] 167 [ 750 500 ] 207 [ 444 ] 234 [ 375 ] 250 [ 681 444 ] 257 [ 444 ] 277 [ 444 ] 283 [ 1000 500 ] 319 [ 556 556 ] 343 [ 278 ] 428 [ 500 ] 446 [ 778 ] 502 [ 278 ] 575 [ 556 ] 589 [ 556 ] ]
+1455 0 obj
+[ 27 [ 750 500 778 ] 34 [ 708 556 500 ] 38 [ 500 500 ] 42 [ 722 444 278 278 764 556 ] 49 [ 681 444 500 ] 53 [ 278 653 306 500 500 785 500 ] 62 [ 750 556 333 361 278 514 306 778 528 625 278 ] 74 [ 917 833 750 556 500 ] 80 [ 778 500 500 681 556 389 389 ] 88 [ 278 778 778 528 ] 95 [ 736 392 556 394 278 500 500 500 ] 104 [ 722 389 500 500 750 556 ] 111 [ 750 528 1028 722 750 528 750 528 611 444 500 583 833 ] 125 [ 556 556 ] 144 [ 500 ] 167 [ 750 500 ] 207 [ 444 ] 234 [ 375 ] 250 [ 681 444 ] 257 [ 444 ] 277 [ 444 ] 283 [ 1000 500 ] 319 [ 556 556 ] 343 [ 278 ] 428 [ 500 ] 446 [ 778 ] 502 [ 278 ] 575 [ 556 ] 589 [ 556 ] ]
endobj
-1437 0 obj
+1457 0 obj
<< /Filter /FlateDecode /Length 60 >>
stream
-xc``/߿
+xc``/߿
 , ^X
-8 &#
+8 &#
endstream
endobj
-1438 0 obj
-<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 9131 >>
-stream
-x{t׺hDs!3{ - ; "WlEV*r/&{s$@bBB( 9d~Yo$9!w]h{#1@Ŝ-l@ ǬY\  7
-9'{4pOOh
-sr tZ2iXQU?AN^nNN6:Iý|‚!#: w
-wyx{y:I<œ"|:] 8(iWPӘ1NN^^N!!3Λ'|\@M㬟`uc-psp '%. t +(/"hl
-v`롯r;HEovo8r8X6&h3f#d3>%[XT/0yTrԷF}
- ̇ |TLx
-.>J
-qj:))ٽʻ(X y3{/,%Sf$J&{)nJS
-n&΀]ץtRu.z+i{X'*_
-$FmRhLZD0&&&"c8MP)Yy~3-?j&?^a,ReYpR+ $5Kq
-q<
- CAx4e>]te,L"@L
-}ۃobyK])2(AlE|/" Pa͑_@ubC
-@jI"
-j
-J+{Qw&#|Ǐ#(#O"ۧ<vOonӟ"lk7L^ZZG÷~LOenP4%9jMa2˶):
-+gw56;2 tjFH%Ry9% 0IgAWi
-L,yIU^ `]GM#.8z}:Nz wuc]ÉVGqDp0s5|ـ
-–( {Ck
-x 7g@+
-yƆ0PfZ042E;JWS]Vıj|:+J^\{ g2k.]48aPk\yF`BXWJΠՄ?/;v!J||i!SiU#^}ϏlWt/W>bBukeӍ/
-Ail"y9YU-ۡK<;РRb~븟%U~RZAjK\ٱ/?#7q^'kVI$b J۴v=C/g|Xr`/waI0__hvŭ"ZEEnp&|7I8F[umu=yҴKʘ Oq 2*YJ%7s~_ puWfBBh5@{T\RRJ*1^
-ybTg$g'$R :5X3IB틶6K-ǽXD…Zd1j4b^L,jyK9**>*@sx]W<?#.o l]CE*c:F<*Fye=Cd<ƘOO;a\- ?d"rg<p=g4y_Qa̼Y*l#UkLyͲ <{1caA5LJB҃fB:&EP w7&F30[[ݬ6 V\c'']AϣK/\qMOy P6Ge [NMecN<A~f
-d&F3jDju[Ԩ0\QG5L:da
-|tDue2˕YjJe+j|MEx
-<iBDb6"D$J0^'Π[Cgu- [NrS{8?h|9+r%PİFfyH7rdJIB,sB7/G3pMWHضE 8|5~uhϠ:X/%QQ  *䳐KKKAI>a_J(A]15/㩧ྦྷqFR&'IrANIR3r@WzkخK,ن>pG}!#]?)?h)U
-)1@AMY} j+ez\#m<O!WK^5Rk<^~CD}ۏBՖ5F-|-1?&X'lhW|~"xfǍXgg}Kw `HT53_FoN9C<p;u%U< AkFuX5kWf_X$V%ŋ!7f$Y !\ԀR>W!*۞#8{[RP:gk<}S< ?im2S ZFJ vMu6φ,y3Zp'KBNWH.zj)'PWO ?4i3 tH/a6<V'2k@4N;>fkPM[ZZ-. ٱiԠY3O(/9@j  Ր2g̗|ichǛ%CP!r}$ksuYnYⵆEygʖ{.}B$&6T 1Q*Jq;I#Ek} l]hx1yݨ:ncTw<ZR~6I5F۾2>b{csWbNLA)3aRSuJ/> ݨB.O"+Qa7tr7A =Dl?B%9Qd F_oH5ZF
-EP<<  )ևY--^x@uO
-N/Ja@A1Vp>Fx@.+.zFk%4UMηv ~SpYWL2/][r:l1'{fgdF(R4E5"ת]ꤷr &
-b#n<g<|9ù꒴SHiHC܉M>gĵG!27EJr3{?Β?Ѻ Zv2PS!"\j.v2)۟@yw%S 譨 a~0EPE!q(*bt {` [ Cf5d u r/G=^@eܩ'K-ʉ,I
-ΩݽpEescKA+
- S"pV O:⨸49|ƌ͠
-
-K5 )ȭmUzA l] T[_e*^[iT
-9[K+5?cgTr5C*; fٕ!4"Nl)rMGeh1<¥Se&~[f-&>͒=2if3': `\̎%ߐfualV%2CGF\&P/|cd lN`)MH
-,~w%n~mzrnXwAڌ -^:L>J[Դ\lPsMvsVv<8K]m<=J6m1K؜`2d1Ӎk7FĖ$֮rR1MAkCHa,P73ŒC1~7nI2*!kªeHN N<h" (x}?},H!U*'\mL(eU8jGeBIyyaus&4DnǠnoޛHLpgQ'o%(JW^6hH hI۶+c2Vjd)7b+(tH
-&O5~'|B*|w !wp%V[?|ys̮l".)Y$g^? Gu
-{Ba-ףP)ؿ"{b^  hJ^<d!Y F9w΋4DZ%ճ$C9ּ WdMlp v1Wb,;>q1ӈd`6Z)|rйԙ=E@qn IJbكn#8l}[\ f._>sօ7pKƣ:}'Nw>u?D G!=<@Q[*R
- A}# 9Z+))) 2R әQaL_Xwb'2
-88%1'%]Vfء^<^EE `mD4뵽n|%]PJPj6pKU*RE)5JЌ)bFZQ^W뒒[ $ZNe^r3XVhJdY
+1458 0 obj
+<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 9343 >>
+stream
+x{XW쬍(13hl{{oK,[" FbI%XsvQk3O>fc KVnXhk]Ǝ[fys!ן
+bX,ciX%V}'-'%- iVBaq Żn'NOlVڜ?:(QNO-FOwv׭ۉݽc;qA칶v H=u> K
+%?+}&ovgZ!o G[>:Œ`YwA4#?uA"R<tktzؔaG/4<|D'FY8jѢƶ5 &3-JC˨(sSUtR"b6pT ~ABMa
+&[eqD'H\T:/Y$Ax2v3,xthW}_n"㹨uĚ0Oq [&]4xl*BO]uI`ʢԚmvC5}8֋ب\\("eӞ]j>P1Cut=D^ȻâOIH͈yNjj3R3l2_3Khtoϥ4ӯ&xD>? aJ\6Y aue}|>!!>yo毘5}^8f0i[h#5gV]={ҙZ6L4]ωvpl?{jh.mш:lɴ LmY3uouy0m9VS"qָ5?pߊ ^b֍cl{ӹ/,\&vH<-z+wQoS@VͶ*L&<'"#`G-`Qx_ld$d h31vzݓ0u z2jXXWQY[x 3B&WKA=W$9p/4P_dlf۞xD~ӦhgPNHTHO?Gr.gJnD1
+ 2uln|#JpPȭB%
+m&
+e-Ǿ2pPPQyI/d^RsHK.du$dx'qT$W1xn}
+ZƠ%l(+ea"Q2d
+HHf66NUh"\;•p3B1o2y\o7<raWIv"P&r3*hi~>8Nt"ڻuSТʊ]jzFz=
+Őݲ[h`+WBJ˃Ãë˫tOOّ
+Fr9'&$40.?/=ht*jH˹u |JVY
+fӨRxjĚ`Qh,`3)GI xv+Q{¹FA=&jI*y3$қwGAsEF(}DWa]JP~~ߴ~hKJ+[?0 ʣBn.lbKcYx3xܙ1CujLk&Jyo|dǖU> q߶Kp1mɜNwxS|0>F
+X[x9 '4
+MoIWg1=A8ba@{(HbP¯Ȍ:C1u %IPćQQ;K{`gMFς+#(#[&=WnS_ lK77T^RRM>7]’1J&)jsb섹o(&
+y=[կ nިMgB-ukeՍ/64AkDrB<-*\ɒ!^'^[Rf>O`RkwI^#H]#Ym~zHn<[-Y%QΓ #xm+1zӺ 9@fɁsvU|o3K9V| &hwSj1\19j, joK& '#7,n'&.K
+wˊ{x1*"Ǵø]nScCc1㍩
+D`dRa3Y-Z[e~'ȫ]O8־W;4C
+1),
+n;3o64с D:вngl@ph'i(?lڠ4yt״]usD4|Qf|Sq^#'xngcpnuYJwP?l_ KLY*w{^TrS+ݞߝK5mEW\Dhf@(Dg˔u4V+$R5jOBFA灌b;B^2;U];riRق/dX]ӣG# ޕ@#">9ɅqspM}m.46-c 5CU|il`no?;d vcKlL=8z: 3Gwɭ:/FYX)& ~q~)l% 'ȥh& 7wBcB30OGGGw0~<eY0č Y
+uG=!_ΰOx`6%S Ό9h\z0 .Q d~C{.l XIYWoCfbPrgr`
+k$eVDI60ȒɉjQBo }9%1 ;Np8ٗkӳyLŰ1??H@`NK7FkTc S0y̐So"d@,WHJkN]X.ӛfy
+
+r^򶡝cxKH<`z> _42h;AƏA%1p&.?d+=we ?wW&C53<a۳eK|'IxHJQ3>1acO178}Z~MG$0w2 ȱkv:ͱtHM SK{'Cn<%E,[")7^0| !fWQA-_=$9)r%,}_< >oj&C ZFJKwL9Ֆ6φ pNeSKN.aP/3"YꋓnOhS:#
+E%P< Kc5-`vofUzy|9s.nVxTp03E^`?1ACR,Nd?~ƃT@ɲ ylz.{OpYPg-0ԫ_n$B{AQ4kpREP|d,
+sd @JTxz.'_
+'_sp.?8'',R-z19Eco#[=nQ+iIVRv,iSYʧ;`e2
+8BD]4jgR4w.JԵ0[Q\p=~0NPE! 2׉p-a3SԊǭ: /$&lY4wqdc7r38ʋUX+ldnY5RCi$(u\]A%+*9Eu=
+(UDh@G\KS9}%}Z,ٛ8U̷ȌT<*.p`k?eA6ETNa`
+˼BΖRr)cUͅ/oX9#D͐vggZPّ!4",Nl,rMEh <¥Q&kf-">ϔ {e1SBG: "Wc}`ve`{V&0GF\멊zP/|cX l5 ^&oFh֬4PQ@&Ϝ)g|n~☦fMkXbcG4"p dPrŴ9duNXQ[6Ȁ:ڞJղL\/~R: Ape.IHL."hYK&]Wȯszq=DCUuǓ6Je:{"KK51
+L~w%So|mj+jn(7aOiGO~S~j[ԔlHcmc +;.fP_g昡l:0k9eniF5#$u>׭vT2ABHa,P73Œ@1rЁn*I2*>kv&1x@!Bxzʑh% (x -?l[tBC9 WT E.1qSɃc)Ⲳ]_#p-DD7"߼78ƢwOtx£(iNlQ*Ï~V/m8W^cdKe҂xoBvIxZ;m(ԕWz")RHw
+F`݀>fK,=|s+ *$Elb(Pμ{%Ώ8.95[9Ev}4NB#Ф8B 9v-N#/#<$h t{Tj p>Z^$\5QxBfA_ @XN绣e In#l6>B;/c#{*eŲ+7l/ܴWp*Fɍg\b欋+n|s7{oGggG'O~gN|kwHBQDJ'$&+,zE™0eekssh='WGW>Jn((fL&W0YG@[<+#ӐC#L{G1A{3"Ka0(
+}߸;?Xв?޲|xt{9%^xc*oܮuh&[߆Zlڱm
+:}` + k 律3ϢhP~6/>]eM!+U?!e Y!,_,̏6٦"h6X:r:.7
+Pr>[>$/;=h
+?eLBB'y_X7NlJ+#+3faK`K`k
+b%9!6ruWH,҃ ð?<c'5r
+a!(b:tjrQX8C]ԨKצtt}U#I
endstream
endobj
-1436 0 obj
-<< /Type /FontDescriptor /FontName /NAKQCK+LMRoman10-Regular /Flags 4 /FontBBox [ -430 -290 1417 1127 ] /Ascent 1127 /CapHeight 683 /Descent -290 /ItalicAngle 0 /StemV 93 /XHeight 431 /FontFile3 1438 0 R /CIDSet 1437 0 R >>
+1456 0 obj
+<< /Type /FontDescriptor /FontName /TINWNG+LMRoman10-Regular /Flags 4 /FontBBox [ -430 -290 1417 1127 ] /Ascent 1127 /CapHeight 683 /Descent -290 /ItalicAngle 0 /StemV 93 /XHeight 431 /FontFile3 1458 0 R /CIDSet 1457 0 R >>
endobj
-1439 0 obj
-<< /Filter /FlateDecode /Length 795 >>
+1459 0 obj
+<< /Filter /FlateDecode /Length 798 >>
stream
-xڅ]o0+J%NbT)DB[?Vi41,$(~i*眼o.i~A|7o]irVxra6M}sM9V<ߓv]7)}qnӯ߳oOovpfͲq3SaٰݾnG!0tmor )T WuSuT+>z큌DU[n]ZiyjX ]zN^]0|*Z~&MZw0LDeWnorkŰO`^p4Ίȳ䲭~,ml6‰gئk<ĪM8;z8]0O' "Ecē@ړ hJK B=MB8<E3ǺT`(S $@
-{Q A&=`wX Hz JBTG U@TMI$HW!A <h<$,MjVjOr$8LCRA!F
-O`H|EC
-PB)xP
-ME {o̤<b<t]I~}NW<RhP'!.shb
-:sߗ2[,{/YhDܳD<[h/\ ) lU_" 
+xڅMo@C@!cWH j{%B-95R<ޏwfr͇Dx7fݬ)N{Sw cJS^Fm}:{u;2ߓf[շ)}q2?{_ׁ?x7n~٪vvf
+;,>n=VM,G탬.fߛ<zC
+ËMU-Պ^{Vxy>vf?77\t?x׶4mUo-"NZ ߛLDi6vob7b'0/h՝?hu>: hJs< Ӯ6"ƹx.c.F׺7
+v#ߏԑ"Qbf0;)H9S@ v@H% VŠ@Q1 NE $'E_ueb=z z Q'Q'(QIT=Q5 c$#]EH#YIH>@H^(2 qEJx &=  !+@uɇ'A<hH}S!3T'u­NPЩItFԂ%:K!kM@(@bS3k<Hy6IpIy1t\Oڹzv{' :q_H!E2P<2̠aJ5GVsH {3C?A)Ƚ5qNA:3חAc\aO%䞹%G|w(Nmk wi; \CsW_w!^^s7 c
endstream
endobj
-377 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /NAKQCK+LMRoman10-Regular /DescendantFonts [ 1440 0 R ] /ToUnicode 1439 0 R >>
+381 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /TINWNG+LMRoman10-Regular /DescendantFonts [ 1460 0 R ] /ToUnicode 1459 0 R >>
endobj
-1440 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /NAKQCK+LMRoman10-Regular /FontDescriptor 1436 0 R /W 1435 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1460 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /TINWNG+LMRoman10-Regular /FontDescriptor 1456 0 R /W 1455 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1441 0 obj
+1461 0 obj
[446.4 446.4 0 877 0 0 0 0 569.4 569.4 569.4 569.4 569.4 569.4 569.4 569.4 569.4 569.4 ]
endobj
-1442 0 obj
+1462 0 obj
[500 0 0 0 0 0 0 0 0 0 0 0 277.8 277.8 0 0 0 0 0 750 758.5 714.7 827.9 0 0 0 0 439.6 0 0 680.6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 528.6 429.2 432.8 520.5 465.6 489.6 0 576.2 344.5 411.8 520.6 298.4 878 600.2 0 503.1 0 451.2 0 0 572.5 0 0 571.5 490.3 465 ]
endobj
-1443 0 obj
+1463 0 obj
[955.6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 533.6 588.2 0 0 0 880.8 ]
endobj
-1444 0 obj
+1464 0 obj
[1027.8 0 0 0 0 0 680.6 680.6 680.6 680.6 ]
endobj
-1445 0 obj
+1465 0 obj
[339.3 0 0 0 585.3 0 0 0 819.4 0 0 0 0 0 0 0 0 783.7 0 0 0 0 0 0 0 674.8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 542 0 0 0 404.2 472.7 607.3 0 0 706.2 0 588.9 523.6 0 0 0 0 0 0 647.8 ]
endobj
-1446 0 obj
+1466 0 obj
[333.3 0 0 0 0 0 736.1 736.1 527.8 527.8 0 0 0 0 750 750 0 0 0 0 791.7 791.7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 875 875 666.7 666.7 666.7 666.7 666.7 666.7 888.9 888.9 888.9 888.9 0 0 888.9 666.7 875 875 875 875 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 555.6 0 0 0 0 0 0 0 0 0 0 0 0 0 472.2 472.2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 666.7 666.7 450 450 450 450 ]
endobj
-1447 0 obj
-[ 28 [ 525 525 525 ] 32 [ 525 525 525 525 525 ] 38 [ 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 ] 59 [ 525 ] 62 [ 525 525 525 ] 66 [ 525 525 525 ] 70 [ 525 525 525 ] 74 [ 525 525 525 525 525 ] 80 [ 525 525 525 525 525 525 525 525 525 525 ] 91 [ 525 ] 96 [ 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 ] 116 [ 525 ] 118 [ 525 ] 120 [ 525 525 ] 163 [ 525 ] 246 [ 525 ] 272 [ 525 ] 314 [ 525 525 ] 439 [ 525 ] 494 [ 525 ] ]
+1467 0 obj
+[ 28 [ 525 525 525 ] 32 [ 525 525 525 525 525 ] 38 [ 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 ] 59 [ 525 ] 62 [ 525 525 525 ] 66 [ 525 525 525 ] 70 [ 525 525 525 ] 74 [ 525 525 525 525 525 ] 80 [ 525 525 525 525 525 525 525 525 525 525 ] 91 [ 525 ] 96 [ 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 ] 116 [ 525 ] 118 [ 525 ] 120 [ 525 525 ] 163 [ 525 ] 246 [ 525 ] 272 [ 525 ] 439 [ 525 ] 494 [ 525 ] ]
endobj
-1449 0 obj
-<< /Filter /FlateDecode /Length 43 >>
+1469 0 obj
+<< /Filter /FlateDecode /Length 40 >>
stream
-xc``_ `& n
+xc``_ `& n`Pi
endstream
endobj
-1450 0 obj
-<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 7450 >>
-stream
-xڽzXSJ\=7u{Q'.=Xa$$M {q *ZqPhۨ:kھyO:<B=~9~?&x<ސWl[n5k2I^j?@ӥ{Hp n8ƊXmxhƛ?{-lFumbB؋CoXgN<u%rEHJ2}M%'K\}U!q,Y3YVHe7D)("Q+JW\P?YG)}%@U)e@[*Yad\qʔRɤIR*xT9S^^S<=)~SLMZv+,]adUJ)xHU>~bp<oMC*SB3A
-*pI
-N԰يRp(V/_@;f+{|u\?v3횠79n繋ܛ՛b%ҥ eܘ" 1 Ӌcr7VA$NfԈLA ۶mdOUl3 rkƦ
-n4,D+|k(N`]MWw~.'V8^23<@NaTN<ZM"Y/Id0?n7JѐDcyO5[\u%$sm3mÒAvʰ5Rr6oh8,aLc9{bt>+{2c`p<FYi1i4؁lg 5ص'wEϹ`1OF
-Ga4 Lb3i
-% dl/RE1%]5N4cc8ZV^h
-ya+ #{,udᱡK]TïpSJ&1BBvZ3pT- Ep)v(8+_׳AxϬ-s9ϣ;<x(fd ^"*IS BJ:M˩ /0[,Spp<{wu{/t'G=8 C60S?%!ycIHMip.ђvsz/1&%jM40 dD8v#Nτ(Q9 9]ʭMaz>f՟ ?]]=- p9%4Me~ NUO"W-/0ZR~Z[,* ӹ,9>EXES#[S*~1uԆN4p^
->1:)4lⴴLpX~}u˜fo.<fl}rr0V*֔ˣsC>heOn8Nn tpf>]7qIA R#&e
-+V +dN3K_A ^0޵.4G2v%#MEc28+w9\n6Кn-@8N[_&)iʐr<X#_ye׫O
-Dw߂Ӿ.W#=fj֚H4,k\ٍ@':{n<~{ {W5Ugiwdb~1H#3`ԟue4fw@ګ{tiv|[O5cs׎WX/XZP_i.Ùuw?qB+"#%qu &}h]tL΢JT ]>i p^zA2K%<FfչЙVJN/OvT$MAEm(T6E Yh==z; &wU{t2FU^ B친ϠvsXe0^ j{9bi^B1喷j|bl '$ۡQ7GjM<$iA_V5 (ICZmRA(QQZ|23؝4’xfDA-"nE1p< Z;w QH@äE2&g$!nQo?wk޼o"NRE-wtGj&H#e
-.G,j9,jT@*?eN_v?gor6D919;Y{Gq]oK1q~@|ğ4 @^K8
-9e;ug{5g,Rͧ?G}qO2JǙ f@ݖOc`k1q8YiL^L1 Q!V\`6Q1
-լu37MNȟxy"XvϱI/fL`#&`b ps<^ ˎ͊ÚyQA]}6~B]\|t8&=oς3_=!2_ !}R3-/<t7
-SjQRaWexc"cASJ x }\]{;T}-,]Ҕlovٰ=Pv=T",LJ*1[0 {ܠ=ECGOL\2fphvT_
-'GZh<_}wE{-k(Ng\]pg+-/*+Jȉ
-ӹ$EmGg
- )u.m^e֊KFN1RIr':O"ք τ- c;
-ȭdJ9돦dw1_KB="/Z:D |7ZR7wIN@<҃T};MbJ4#LnBb<E=1}-rT5sw3M1t
-IbEGeӰ mhO[0Ns:ສ#@yIXP&3yi9baX1Y :pOLdŬjn eČChyH½>_T&1bڌPk5ȏPR%cq{Pj
-]@ʼn:{W")
-/*lMB6mƎ bO‚9ܒq~fm6fɩL)iɅvhǕ/$#
+1470 0 obj
+<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 7293 >>
+stream
+xڽz TSWJznj:Ou#N(HBB0<hŁZEkZ[kc_kϵNk#!zr=g=&x<ް+XxGGYl R/kJ=n4k7ǁ>cI6<4ꊍutMz(e ğ} t6:،1}1f,!CaHw<gΘ2mڬ2yhR2cڴLs$KH\}ej5C0E8EVH$nRoW?OSIURH J`dBJAR?B!QxH$JodM
+9 fC
+( (O;kLk4/ X˜; ZS65l#ARj j ׹5jm {y"TՀ٤F*b
+*d"=;՟
+oݩ;uA|9֊6Oޔ&D{zE {=O>zHV8ϲy,}F2J:OQȼA* z{<S|
+c.#Z/u_Q46ذ8qH~xIfjrr*%~BP\c`dT'*M|ME6`I~A1^[5ĖS~CѡldP*OG= z
+6EX(4 G28
+mI%kRL0APiRd}~i17B`_!띮a
+:4Dԥ m!]T_؆`19[gU/
+v
+]Ok>tuIINx-g"?3,ePă;
+㬨fj_Ogϭ- sOU9ϣ;=zV˛$
+n jCcUbM~hqg)|9fa
+N@#
+Zb[܄q:]د24) oѰlbv<x
+Ytx{ ^@*WK0-53H\\sYz|ۇog lu>U;ߊQ\OmtB|f.QigvyZ Vb pØŸ(K<B=Q*C2 eN eCLU ^t_ dPLXܵNWvzFCXb{3u 0| Xqir l~v 5%e?
+NACؓ
+f!C,~>޵(\7-6$N R,XS^9vM|=dlfϟʮs@t!d̈́v`&l69,2Νۘ<V86]s;{ti-c 7ݾ{m¹T ^ @>63huGFyCl_y V
+^.Rg\RtZA:KtIϤ|锎leLTdʚs0y?Pldˑ\Pp9׷CCʷgy8#X zP|)0@8WqsX͂.S{:Ƒ+̋,6v3.'o]yrix)]\`4`ꌢ9?z=%-N%虤 >WRS2cye,_7}KQקg铒rFq$0DO:=?=V-lFbt5d$;-0&t M d
+q|m$,HhP?ƩWYٳQHcH!_({aKvEG U{b<A'ۛxL\"  ʒ
+xxN~|Gk
+$@1^=0BpT<l=dKvHڊ<?_XjK]
+\y gf!ο-a!e&~l]a{
+ \Iw=zQtQܒ^5 g^'0U^Ä'%3"Ľh UP/#J\
+Ƕ~Wh[P # C`ڗJ~$ КLZ#&GzDjG/<փG;nwoau*jM8mΟLU̯F9B=XQHNYW&M3hN>vzFMw1i VoзuS'yv
+%O`U` G3HHXdlmt}T16ZE(cTEwFO7gd8/ Upy ߗXGeT0_@g>[~+軼xǝ v:!iz)j7GŴ)ZPB;mn %!3ܫ `D_W^˞ x=x D0G,ɍp(L 莐VO;a~SmAFDr
+r`VE#6ѓ'R8-HJ
+Hwe֐0{]I,ts1_JT?`TNyNar
+^ fIi=~z/IՕ
+SRJabAwex1y]rx \뙵9.v0>Zx2-.#q{f8XXXMcf%аܺt{u›Ud JM2vzE>p J/tM[,jy4Gj6ÎM*ăbv6FK5d[9:)&pa{~׺W2h̒d
+8KW|ߜ
+ͱ4fN4;FKRԁ@6*\v$|lGC^Dx@[fq%47o<i(W?g~F^s ٝ /:pe%Uq頺׏y"<ĝB5N\D#m˶ٰ)'L6))B+ե
+g`8/)9
+]󦻜,7e3ǡraW~DHΛ#~^RUXWKKe
+۪N_w}}/N.&&Fc
+#!?PkB[o5|}ӑN@$IH6 |؂1Ӂו1KJ6)MMcBMc͆h3õ8( _ɊY<M
+uD}?cث?ܼyuzNoac+rl/)WT''ʈРb]n2SgUQٟRmGEĪ|UiZNK
+#sÔqjmuj5zNLn#X!P:3{]+`1+Si=Vl@UYkuy9FZ{}6d9S,wusϵ_?Bc0<|PF{TI LJdccr+ j
+*~
+
endstream
endobj
-1448 0 obj
-<< /Type /FontDescriptor /FontName /YTHZRQ+LMMono9-Regular /Flags 4 /FontBBox [ -451 -318 734 1016 ] /Ascent 1016 /CapHeight 611 /Descent -318 /ItalicAngle 0 /StemV 175 /XHeight 431 /FontFile3 1450 0 R /CIDSet 1449 0 R >>
+1468 0 obj
+<< /Type /FontDescriptor /FontName /XGWGCA+LMMono9-Regular /Flags 4 /FontBBox [ -451 -318 734 1016 ] /Ascent 1016 /CapHeight 611 /Descent -318 /ItalicAngle 0 /StemV 175 /XHeight 431 /FontFile3 1470 0 R /CIDSet 1469 0 R >>
endobj
-1451 0 obj
-<< /Filter /FlateDecode /Length 727 >>
+1471 0 obj
+<< /Filter /FlateDecode /Length 718 >>
stream
-x}Ko@Rp=!$FEj j#@-ز͂ߙ9Dh#13s<\_^Lj&?nh0XhldLij^ںXW[yeé4]7̾[|v1?__k[W?mC?"B>.IAny}hH"zWٲ%ͫҌU]o+ ]s| ҴݳݖiaI4\eh{_nN!K5´[7ELx&v@^\?JPth(S<e ֦4H@(q$2@zҠ;im):p 2@A@# #EGGʸD$O A8Մ?NɑjGAT #t
-$!SABRP(k@ʈZA5 b B92P-q$Tk"J%<d2)!t3OATP&qi"z)(x"e^I+(DȚS? YKSZwHh䏈A&D5D5n
-GS䒃8siyr@7BJ)Os(K+L(?~ũm <LK?'+kާ}S7TxeX[
+x}Ko0EvįR!$B>TnibHDIXtQg*QasN&U͇M-goN]iMMy:Z7<Y[߳)7v`׋ro^peכv_?[BvfYq8}aۥ<z}/Y,v}ݸ{r1Id]t:rV@GS89=ݮI&6~QM2z*nϮlNm{At*}>Oۣe}]z8#?Gέey r˦}-mu{L||&+7MZ8 weBl qie\Hs@Y$A9( $
+@##MGGʄB$(O"AՄ?AɑjGAT$ctJ$!SAF$RP(k@ʈĝZArB2SPpT"J<r!tsU`OCPp4"zi(x&e^Ik(3DZP? Y+w(h1䏈A!D55D n
+G3RV8WsYEc͊:xP`au~Vq'bmp*O7)* J
endstream
endobj
-370 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /YTHZRQ+LMMono9-Regular /DescendantFonts [ 1452 0 R ] /ToUnicode 1451 0 R >>
+374 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /XGWGCA+LMMono9-Regular /DescendantFonts [ 1472 0 R ] /ToUnicode 1471 0 R >>
endobj
-1452 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /YTHZRQ+LMMono9-Regular /FontDescriptor 1448 0 R /W 1447 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1472 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /XGWGCA+LMMono9-Regular /FontDescriptor 1468 0 R /W 1467 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1453 0 obj
+1473 0 obj
[ 28 [ 494 ] 43 [ 457 ] 50 [ 457 ] 63 [ 531 ] 66 [ 245 ] 75 [ 816 ] 77 [ 531 ] 96 [ 351 ] 98 [ 394 ] 105 [ 371 ] 116 [ 474 ] 118 [ 474 ] ]
endobj
-1455 0 obj
+1475 0 obj
<< /Filter /FlateDecode /Length 23 >>
stream
xc```P`Ta`X
endstream
endobj
-1456 0 obj
+1476 0 obj
<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 1234 >>
stream
xmLWQ`j-:OFKЉ ?c2[{A'eTY@nSadςc1Iej=b//{#@h( br,Cn|Vv)OXY+&>j4MЬĆHCdZqc1ɩ
@@ -6639,10 +6742,10 @@ xmLWQ`j-:OFKЉ ?c2[{A'eTY@nSadςc
7bdxo;ts:<0n${z;[ZhoG6z|t?J
endstream
endobj
-1454 0 obj
-<< /Type /FontDescriptor /FontName /VPHLPO+LMSans9-Regular /Flags 4 /FontBBox [ -433 -313 1466 1155 ] /Ascent 1155 /CapHeight 694 /Descent -313 /ItalicAngle 0 /StemV 95 /XHeight 444 /FontFile3 1456 0 R /CIDSet 1455 0 R >>
+1474 0 obj
+<< /Type /FontDescriptor /FontName /VPHLPO+LMSans9-Regular /Flags 4 /FontBBox [ -433 -313 1466 1155 ] /Ascent 1155 /CapHeight 694 /Descent -313 /ItalicAngle 0 /StemV 95 /XHeight 444 /FontFile3 1476 0 R /CIDSet 1475 0 R >>
endobj
-1457 0 obj
+1477 0 obj
<< /Filter /FlateDecode /Length 419 >>
stream
x}N0~âRY8)UH@+R!}ڱؑ, H3rrn{t-?1pxtV`|-k6*D9DZ#
@@ -6652,22 +6755,22 @@ u0=z0a6 4
bXk֊Zow4~~mjWolhf_Xg
endstream
endobj
-369 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /VPHLPO+LMSans9-Regular /DescendantFonts [ 1458 0 R ] /ToUnicode 1457 0 R >>
+373 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /VPHLPO+LMSans9-Regular /DescendantFonts [ 1478 0 R ] /ToUnicode 1477 0 R >>
endobj
-1458 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /VPHLPO+LMSans9-Regular /FontDescriptor 1454 0 R /W 1453 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1478 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /VPHLPO+LMSans9-Regular /FontDescriptor 1474 0 R /W 1473 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1459 0 obj
+1479 0 obj
[ 28 [ 514 ] 43 [ 457 ] 45 [ 286 ] 47 [ 571 ] 50 [ 457 ] 55 [ 314 ] 64 [ 343 ] 66 [ 286 ] 71 [ 642 286 ] 75 [ 856 ] 77 [ 571 ] 81 [ 514 ] 84 [ 571 ] 88 [ 286 ] 91 [ 542 ] 96 [ 402 ] 98 [ 405 ] 104 [ 742 400 ] 109 [ 571 ] 112 [ 542 ] 115 [ 771 542 ] 251 [ 457 ] 502 [ 286 ] ]
endobj
-1461 0 obj
+1481 0 obj
<< /Filter /FlateDecode /Length 31 >>
stream
xc```UdX8c‚#3Ѐ
endstream
endobj
-1462 0 obj
+1482 0 obj
<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 2880 >>
stream
xڵW{TWA7cgV)bU*T(j C$Hx#o ZCA)j-]ڭ[מc'97̝/+1@0uÛWlX9{Ee,#<x<%[!S-oq
@@ -6687,10 +6790,10 @@ y›lz<A/TmζN>rwaD)E~h)xMsvŊ
+/M<LAwD:C~twZڂViuUu Ae'jT/xlX=@$Ahh5hGp]]FCX}}5Pml{jl`(]6S ΀z}˵Fy!?b j-:+ݘgCOQMeyyL.iC7uɹ,ǎ2&
endstream
endobj
-1460 0 obj
-<< /Type /FontDescriptor /FontName /WDPLWN+LMRoman9-Regular /Flags 4 /FontBBox [ -443 -292 1454 1128 ] /Ascent 1128 /CapHeight 683 /Descent -292 /ItalicAngle 0 /StemV 95 /XHeight 431 /FontFile3 1462 0 R /CIDSet 1461 0 R >>
+1480 0 obj
+<< /Type /FontDescriptor /FontName /WDPLWN+LMRoman9-Regular /Flags 4 /FontBBox [ -443 -292 1454 1128 ] /Ascent 1128 /CapHeight 683 /Descent -292 /ItalicAngle 0 /StemV 95 /XHeight 431 /FontFile3 1482 0 R /CIDSet 1481 0 R >>
endobj
-1463 0 obj
+1483 0 obj
<< /Filter /FlateDecode /Length 488 >>
stream
x}n0~
@@ -6699,22 +6802,22 @@ x}n0~
Χ)%`cHvi"`-S7fvk?Q)vAo|p';e[A
endstream
endobj
-368 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /WDPLWN+LMRoman9-Regular /DescendantFonts [ 1464 0 R ] /ToUnicode 1463 0 R >>
+372 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /WDPLWN+LMRoman9-Regular /DescendantFonts [ 1484 0 R ] /ToUnicode 1483 0 R >>
endobj
-1464 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /WDPLWN+LMRoman9-Regular /FontDescriptor 1460 0 R /W 1459 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1484 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /WDPLWN+LMRoman9-Regular /FontDescriptor 1480 0 R /W 1479 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1465 0 obj
+1485 0 obj
[ 75 [ 986 ] 95 [ 887 ] 98 [ 467 ] 109 [ 657 ] 251 [ 543 ] ]
endobj
-1467 0 obj
+1487 0 obj
<< /Filter /FlateDecode /Length 20 >>
stream
xc`Ft
endstream
endobj
-1468 0 obj
+1488 0 obj
<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 1088 >>
stream
xڅTmLSWJ/wQ*ҋhA]@Eatc&vFRt{k%JAriP HcKh4MLlfes&\9ĬY%K&=<oL82yE_R5m{8)I@JIZJäDGIL,C)dMRAdZg_=dF$;H
@@ -6725,10 +6828,10 @@ W-`glZzPV':x`vpN;Y,<pqF5 8m&]Y
y{{`,$(׍u^FfHJU}lķZ9z__njM OH(rCm?'`UYdH&r$}._W_w.Izt#_aT
endstream
endobj
-1466 0 obj
-<< /Type /FontDescriptor /FontName /TZPLIV+LMRoman9-Bold /Flags 4 /FontBBox [ -501 -299 1649 1136 ] /Ascent 1136 /CapHeight 686 /Descent -299 /ItalicAngle 0 /StemV 110 /XHeight 444 /FontFile3 1468 0 R /CIDSet 1467 0 R >>
+1486 0 obj
+<< /Type /FontDescriptor /FontName /TZPLIV+LMRoman9-Bold /Flags 4 /FontBBox [ -501 -299 1649 1136 ] /Ascent 1136 /CapHeight 686 /Descent -299 /ItalicAngle 0 /StemV 110 /XHeight 444 /FontFile3 1488 0 R /CIDSet 1487 0 R >>
endobj
-1469 0 obj
+1489 0 obj
<< /Filter /FlateDecode /Length 381 >>
stream
x}R]@}_q!sa/*b7:#>wf̂EVP<s\N'WW}
@@ -6736,23 +6839,23 @@ G,TzmNgX,wyS8hNXBw-#)ʞGF.Mȗľg߇Mt6ۣb9*(S
܀ B(9ARj$_+~7GBڼd
endstream
endobj
-367 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /TZPLIV+LMRoman9-Bold /DescendantFonts [ 1470 0 R ] /ToUnicode 1469 0 R >>
+371 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /TZPLIV+LMRoman9-Bold /DescendantFonts [ 1490 0 R ] /ToUnicode 1489 0 R >>
endobj
-1470 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /TZPLIV+LMRoman9-Bold /FontDescriptor 1466 0 R /W 1465 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1490 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /TZPLIV+LMRoman9-Bold /FontDescriptor 1486 0 R /W 1485 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1471 0 obj
+1491 0 obj
[ 28 [ 515 ] 33 [ 515 ] 47 [ 515 ] 55 [ 515 ] 59 [ 515 ] 66 [ 515 ] 77 [ 515 ] 81 [ 515 ] 84 [ 515 ] 88 [ 515 ] 96 [ 515 ] 105 [ 515 ] 114 [ 515 ] 118 [ 515 ] ]
endobj
-1473 0 obj
+1493 0 obj
<< /Filter /FlateDecode /Length 23 >>
stream
xc``p`dP`hhpP
D)
endstream
endobj
-1474 0 obj
+1494 0 obj
<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 1845 >>
stream
xuV}TW!@5ʚiZ3K- _EAE%1LBD<u
@@ -6767,79 +6870,77 @@ oRWɧ<| ƠP"{nPq%e}Gܮ(WȗN)QuoYUO&Pn^
g48ԂE>*`zK@E%1άxh@,+&p_(N(/?=u0ݕLDB0O>`R Fon0km(V׮Җ ֐F"3DgϷ^?@%xSEV!6¶M:GӞ`x#qNf4e'_%#l|ZQuJeq?HR@8(fu\o!du8iw6s;YpoۚiPH&Ng y[j;rgRsJcOt~w@[fk9RM
endstream
endobj
-1472 0 obj
-<< /Type /FontDescriptor /FontName /CKBVSC+LMMono12-Regular /Flags 4 /FontBBox [ -444 -311 715 1019 ] /Ascent 1019 /CapHeight 611 /Descent -311 /ItalicAngle 0 /StemV 172 /XHeight 431 /FontFile3 1474 0 R /CIDSet 1473 0 R >>
+1492 0 obj
+<< /Type /FontDescriptor /FontName /CKBVSC+LMMono12-Regular /Flags 4 /FontBBox [ -444 -311 715 1019 ] /Ascent 1019 /CapHeight 611 /Descent -311 /ItalicAngle 0 /StemV 172 /XHeight 431 /FontFile3 1494 0 R /CIDSet 1493 0 R >>
endobj
-1475 0 obj
+1495 0 obj
<< /Filter /FlateDecode /Length 428 >>
stream
x}]O0+`Dpf!q%Df,[֞&%.m{&F%pk z:=A[2,5P3
endstream
endobj
-366 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /CKBVSC+LMMono12-Regular /DescendantFonts [ 1476 0 R ] /ToUnicode 1475 0 R >>
+370 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /CKBVSC+LMMono12-Regular /DescendantFonts [ 1496 0 R ] /ToUnicode 1495 0 R >>
endobj
-1476 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /CKBVSC+LMMono12-Regular /FontDescriptor 1472 0 R /W 1471 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1496 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /CKBVSC+LMMono12-Regular /FontDescriptor 1492 0 R /W 1491 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1477 0 obj
-[ 28 [ 490 ] 35 [ 544 ] 43 [ 435 ] 47 [ 544 ] 50 [ 435 ] 54 [ 639 299 ] 57 [ 490 ] 59 [ 490 ] 63 [ 544 ] 66 [ 272 ] 72 [ 272 ] 75 [ 816 ] 77 [ 544 ] 81 [ 490 ] 83 [ 666 544 ] 88 [ 272 ] 96 [ 381 ] 98 [ 386 ] 105 [ 381 490 490 ] 109 [ 544 ] 112 [ 517 ] 116 [ 517 ] 118 [ 517 ] 121 [ 490 ] 187 [ 489 ] 257 [ 435 ] ]
+1497 0 obj
+[ 28 [ 490 ] 35 [ 544 ] 43 [ 435 ] 47 [ 544 ] 50 [ 435 ] 54 [ 639 299 ] 57 [ 490 ] 59 [ 490 ] 63 [ 544 ] 66 [ 272 ] 75 [ 816 ] 77 [ 544 ] 81 [ 490 ] 83 [ 666 544 ] 88 [ 272 ] 96 [ 381 ] 98 [ 386 ] 105 [ 381 ] 107 [ 490 ] 109 [ 544 ] 116 [ 517 ] 118 [ 517 ] 121 [ 490 ] 187 [ 489 ] 257 [ 435 ] 575 [ 544 ] ]
endobj
-1479 0 obj
-<< /Filter /FlateDecode /Length 31 >>
+1499 0 obj
+<< /Filter /FlateDecode /Length 35 >>
stream
-xc``TTѰˁ4
+xc``TThX
endstream
endobj
-1480 0 obj
-<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 3575 >>
-stream
-xڭX X皞cL<zT"Ҫ .ȅ
-7]}sF>{/CN#>لnTuRph?M'FYw"Cv]_M
-N˪;-ϛ&& KaCdKdJL 1G,?b2&P9Yy6ٷNsP:*a(k 1R-{LhΤ;@q=cQl XN1h}FP>l [N^gf\`)4eȕH"|Y8 .{\VʎLn/::ˎP
-ʃJLz 倁q>~z<(+pTN'X麟Xpбv+W04$֑OH%|yjki;M\WIUgsN;-Z!h}䀕frau 3`
-MeDz2qP1#sZS(@Ӟ'}#ps!%N*fyC< 7I\hqZLSt2= )'` +S+TÀfFҰI˃KoO}ŇFA#ߑ
-҃PRZZq
-GN-5U9rչII3*ƩOL,\"1Q;(M HrX77r-D˗?
-6Uki1[ 】-澬+0
-3%a3
-fئkI7KGkĜ5!6vWPط yCYOܿ3a F8s/F6m}'s=2Tx}i}UĽ˟h6vmzO)lrCAA*m%N]ƎgRlH#.oh{k.ij
-"F 03rKwWiuVωP
-_ e)9~~`nht]68Npɕ/Zl yr^8 :{w88B J) >d'y}Rǥ_˸9hj
-.җ^Ý:~zv̻qHg1CH~/ľ{ᅂO|ω}?;j-S!> CY=kG<
-GЗ ';튝R">ON/p' d5Sm;AX<
-n25%z< =,|!F-bZ!B=o[@a1i,ؗ]ffeUk608>O{NЖRZ\dosy2 i,**Pb~@m`L䒍2Y^6Bvš95FȖUQn,Z
-13|e?
-t%jR_F
-gO&rƸZ@C?оL.Vlΰ(5:owL<{f68bgs]u^`*Ϋ(KKlE؃G~8τޙnOܥ.qeG{fZ[Apq_JsԆ]5lӾ:,B^bas:CWDMeQge
-tw L3ȥϞD2Ev= z`9W"5۱mĆ)Ea=3ʂ:WWTgOGx`x sgDzXz"7y#09~ yD׀zp=iL*N'89_*M*UU>т˝VWB}3^mݧz215IaցsxUA}ZFNGbc#"wRKb\}ƬlmCA]u6եwƉfTezQr{)xvyVj-";tr mř[M{N7Џw):RE*JԕVSa
+1500 0 obj
+<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 3310 >>
+stream
+xڭW Xg ͐LܵzVmm+T
+zA@B@ \HBBBu
+"Ok?=3=}s! y2?0eZ*I. \}}I/ ݟԩxit4B&IW*qؔ2A))ժe*TRj IjNJr*Y,V-j2T(FmnP*42Z&J24QI[*y@Fd:߆#"7ؾ_&(Ux&6)E@~#BJMYm)4I,; ?G#2d%
+y y Bd+Dv"1H$#@3<G 3wExq C|-X# o k/_8kӖM?pGfθO}0rD'>wa͌ⷒmj^70Ȟh>0C:$Ա3A%Rj?- Z^{wwyr:wˏQ'da]q}g,B<olfaҠs\ X"SS$GQ& A@߯.EMw}c>*L))oQA'(oamKk=A]Hʇ7 }k|f.)
+ggqR[, /Ko;+yIeO1YɃs>.8sC`C,1jGJ!N!tTs}-{VQ.h
+Wa "<+I@3^4l 77bQ9{+Qϑ׫g?E T uht
+h^Sͅdq*_kl9-6[+a"iF8K>_ ݨTM% D#Sr11;S!%GM-bfu¨ vBS1
+M*`8ztjzŞ$b=U
+(&HplK
+F>xe>S(煈sۓAW6XV\1@1(v6^M!GusD(0Yۙ.CЦ]VFZJWN[ _}=>rd/LTC!(@ ?/9O}ct1t<N>x@% "{<a1i_@1T#I[{3eDBmXA,t v$wDz; <i
+=Q{B.43mpql['?,GM{ FUmYvz kR imt3({kO\'|\LaCT)tUj[fKI\dݩJ͞/I:cV*2 Rb4X(VbaOdu):9j (-'M9i`knnleevh> N#IFאM`;xȫO*pv+*Lm~ٖRL3" ?Q)8PҦsJ<F{ВR Š0,fڊ2gYQ,6ўD<:7z/\Y4 ׉i]p {uH4D
+60G8`Za|q`Hb>c,WW_#oqF<|+`+$ilE{"[nƐ}K782B_8lot(͠|1rjܺnLl@Pn`D'?A2(;i>Cѕ^{ywOA2]ndzP[DSPtKQVJр2Xs#ң؟µtsU=c Xj`j|CܼՇš*UFr+U;AؽÜ椠' KWbJE\[qY@CōVVU]@~|TФBdI+}LaXqf븂;:&fδBnG5,<\Tl$c+|VPp,4}M" E) \8o0ffɢL;@oy/ޚِEbFhSp-FptxC㰚SHxM2Q| q"S@)Í[X_Tܷ @}s4w(T/ zdg&avˤ [WKզax%/f0:1T8z.4sj:U]=ۂV-uKMx1Gכ dbzRa1# x]qSFV^Ob3#[pykRgbڠSnؖOOo1fTm5Qj/\j#{ۏtqpFFlj>{A?:({E:Jت6B~\A5Ӄ.{$]®lCn
endstream
endobj
-1478 0 obj
-<< /Type /FontDescriptor /FontName /WUMFPP+LMRoman12-Regular /Flags 4 /FontBBox [ -422 -280 1394 1127 ] /Ascent 1127 /CapHeight 683 /Descent -280 /ItalicAngle 0 /StemV 91 /XHeight 431 /FontFile3 1480 0 R /CIDSet 1479 0 R >>
+1498 0 obj
+<< /Type /FontDescriptor /FontName /LUWVAH+LMRoman12-Regular /Flags 4 /FontBBox [ -422 -280 1394 1127 ] /Ascent 1127 /CapHeight 683 /Descent -280 /ItalicAngle 0 /StemV 91 /XHeight 431 /FontFile3 1500 0 R /CIDSet 1499 0 R >>
endobj
-1481 0 obj
-<< /Filter /FlateDecode /Length 504 >>
+1501 0 obj
+<< /Filter /FlateDecode /Length 498 >>
stream
-xڅߏ0+z&KC( ɹktH%7ٜ9 gLɷ_ry?~dT~-[o2Yjh@
+xڅMo0=qHh"-Rlk#'98ZH<;3ؓя}arOZ
+sZU} {hH޴БjJVVàh g!%3|>=T]ʘ;8RԦDw1( [a
+n$?6Tml%`$$-9ZAUV9-[yR|N"Y:wA9h!d|ˤ5Dh6R@"{[n<õhRڦ@ ɼ0<
+!MRG)ØG53$_shk> yiq4
+$t=HG#y)Ηb Kg>Sx%vpw@ΞOݗ
+c6z2r7b/nTfs{!$|mxTKEa*0
endstream
endobj
-365 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /WUMFPP+LMRoman12-Regular /DescendantFonts [ 1482 0 R ] /ToUnicode 1481 0 R >>
+369 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /LUWVAH+LMRoman12-Regular /DescendantFonts [ 1502 0 R ] /ToUnicode 1501 0 R >>
endobj
-1482 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /WUMFPP+LMRoman12-Regular /FontDescriptor 1478 0 R /W 1477 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1502 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /LUWVAH+LMRoman12-Regular /FontDescriptor 1498 0 R /W 1497 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1483 0 obj
+1503 0 obj
[ 28 [ 451 ] 43 [ 418 ] 50 [ 418 ] 66 [ 223 ] 75 [ 745 ] 77 [ 484 ] 96 [ 320 ] 105 [ 340 ] 116 [ 432 ] ]
endobj
-1485 0 obj
+1505 0 obj
<< /Filter /FlateDecode /Length 23 >>
stream
xc```P`Pa`hp
endstream
endobj
-1486 0 obj
+1506 0 obj
<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 1024 >>
stream
xuS}LEnY>G[tao(EQ&r irq[]zZ"[%+56m ^(H$!%1?gw1&{&Kz@DVCU弪zOHVhAʕJnfl
@@ -6849,10 +6950,10 @@ xuS}LEnY>G[tao(EQ&r irq[]zZ"[%+56m ^(
CoV< }>q%N鉴4=Z^d
endstream
endobj
-1484 0 obj
-<< /Type /FontDescriptor /FontName /YLODNZ+LMSans17-Regular /Flags 4 /FontBBox [ -395 -305 1355 1159 ] /Ascent 1159 /CapHeight 694 /Descent -305 /ItalicAngle 0 /StemV 87 /XHeight 431 /FontFile3 1486 0 R /CIDSet 1485 0 R >>
+1504 0 obj
+<< /Type /FontDescriptor /FontName /YLODNZ+LMSans17-Regular /Flags 4 /FontBBox [ -395 -305 1355 1159 ] /Ascent 1159 /CapHeight 694 /Descent -305 /ItalicAngle 0 /StemV 87 /XHeight 431 /FontFile3 1506 0 R /CIDSet 1505 0 R >>
endobj
-1487 0 obj
+1507 0 obj
<< /Filter /FlateDecode /Length 404 >>
stream
x}]K0+6s2
@@ -6860,22 +6961,22 @@ nU(MKf`MJ^ߛv8 xzޓyK<p`|Mkj`*֖(5"GW{xъp
*'Zq(K8thSL=RGđy9K-în90jmr;"aMTeNC2-m7 =
endstream
endobj
-364 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /YLODNZ+LMSans17-Regular /DescendantFonts [ 1488 0 R ] /ToUnicode 1487 0 R >>
+368 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /YLODNZ+LMSans17-Regular /DescendantFonts [ 1508 0 R ] /ToUnicode 1507 0 R >>
endobj
-1488 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /YLODNZ+LMSans17-Regular /FontDescriptor 1484 0 R /W 1483 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1508 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /YLODNZ+LMSans17-Regular /FontDescriptor 1504 0 R /W 1503 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1489 0 obj
+1509 0 obj
[ 28 [ 459 ] 46 [ 707 ] 50 [ 406 ] 66 [ 250 ] 68 [ 276 ] 71 [ 576 250 ] 77 [ 511 ] 81 [ 459 ] 91 [ 485 ] 96 [ 354 ] 98 [ 359 ] 105 [ 354 ] 108 [ 693 511 ] 116 [ 485 ] 126 [ 499 ] 277 [ 406 ] 502 [ 250 ] ]
endobj
-1491 0 obj
+1511 0 obj
<< /Filter /FlateDecode /Length 31 >>
stream
xc````R`lqXĀXp&
endstream
endobj
-1492 0 obj
+1512 0 obj
<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 2260 >>
stream
xڭ{TWgcDwFV h TD"Ay Q$$@ (b0(⫂RhmS[k]V[{=w V;ܹ}8&c8KHIX>wj\
@@ -6893,22 +6994,22 @@ M.Y9b+8xZ3b䕋>Ec%2 ypKzCWˣB} , ñ1~0<W
?lV!C/Kt1!<vnN.<5^+_
endstream
endobj
-1490 0 obj
-<< /Type /FontDescriptor /FontName /LNWNPA+LMRoman17-Regular /Flags 4 /FontBBox [ -400 -286 1338 1125 ] /Ascent 1125 /CapHeight 683 /Descent -286 /ItalicAngle 0 /StemV 83 /XHeight 431 /FontFile3 1492 0 R /CIDSet 1491 0 R >>
+1510 0 obj
+<< /Type /FontDescriptor /FontName /LNWNPA+LMRoman17-Regular /Flags 4 /FontBBox [ -400 -286 1338 1125 ] /Ascent 1125 /CapHeight 683 /Descent -286 /ItalicAngle 0 /StemV 83 /XHeight 431 /FontFile3 1512 0 R /CIDSet 1511 0 R >>
endobj
-1493 0 obj
+1513 0 obj
<< /Filter /FlateDecode /Length 460 >>
stream
xڅn0<)=Pl@SEH)I$6+'YKFy=JF_C䑒=43hyWj
endstream
endobj
-363 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /LNWNPA+LMRoman17-Regular /DescendantFonts [ 1494 0 R ] /ToUnicode 1493 0 R >>
+367 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /LNWNPA+LMRoman17-Regular /DescendantFonts [ 1514 0 R ] /ToUnicode 1513 0 R >>
endobj
-1494 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /LNWNPA+LMRoman17-Regular /FontDescriptor 1490 0 R /W 1489 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1514 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /LNWNPA+LMRoman17-Regular /FontDescriptor 1510 0 R /W 1509 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1496 0 obj
+1516 0 obj
<< /Length1 1484 /Length2 8131 /Length3 0 /Filter /FlateDecode /Length 9124 >>
stream
xڍTm6NHt,) ] .²tJH#]J4" HwwS9w3sM\LtZ2`Di
@@ -6950,10 +7051,10 @@ Mt%ŕTMHtwX:n҅O| ҙi,l59k#E~L.pz/'w/
*2;nYK/G-^䙗;%{F!zd[
endstream
endobj
-1495 0 obj
-<< /Type /FontDescriptor /FontName /XEMCLW+CMBX10 /Flags 4 /FontBBox [ -56 -250 1164 750 ] /Ascent 694 /CapHeight 686 /Descent -194 /ItalicAngle 0 /StemV 114 /XHeight 444 /CharSet( /a /b /c /d /one /three /two) /FontFile 1496 0 R >>
+1515 0 obj
+<< /Type /FontDescriptor /FontName /XEMCLW+CMBX10 /Flags 4 /FontBBox [ -56 -250 1164 750 ] /Ascent 694 /CapHeight 686 /Descent -194 /ItalicAngle 0 /StemV 114 /XHeight 444 /CharSet( /a /b /c /d /one /three /two) /FontFile 1516 0 R >>
endobj
-1498 0 obj
+1518 0 obj
<< /Length1 2319 /Length2 9802 /Length3 0 /Filter /FlateDecode /Length 11051 >>
stream
xڍTZ6Lt# 1t*]Jw
@@ -7005,10 +7106,10 @@ l1(fP@weKg}PYۈE[n(#3%[$Bf~΍Nd\zmM0 Y],9Ca0- ub
3H vrH
endstream
endobj
-1497 0 obj
-<< /Type /FontDescriptor /FontName /CFYTDH+CMEX10 /Flags 4 /FontBBox [ -24 -2960 1454 772 ] /Ascent 40 /CapHeight 0 /Descent -600 /ItalicAngle 0 /StemV 47 /XHeight 431 /CharSet( /arrowbt /arrowtp /arrowvertex /braceex /bracehtipdownleft /bracehtipdownright /bracehtipupleft /bracehtipupright /braceleftbigg /braceleftbt /bracelefttp /bracerightbigg /bracerightbt /bracerighttp /bracketleftBig /bracketleftbigg /bracketleftbt /bracketleftex /bracketlefttp /bracketrightBig /bracketrightbigg /bracketrightbt /bracketrightex /bracketrighttp /integraldisplay /parenleftBigg /parenleftbigg /parenleftbt /parenleftex /parenlefttp /parenrightBigg /parenrightbigg /parenrightbt /parenrightex /parenrighttp /vextendsingle) /FontFile 1498 0 R >>
+1517 0 obj
+<< /Type /FontDescriptor /FontName /CFYTDH+CMEX10 /Flags 4 /FontBBox [ -24 -2960 1454 772 ] /Ascent 40 /CapHeight 0 /Descent -600 /ItalicAngle 0 /StemV 47 /XHeight 431 /CharSet( /arrowbt /arrowtp /arrowvertex /braceex /bracehtipdownleft /bracehtipdownright /bracehtipupleft /bracehtipupright /braceleftbigg /braceleftbt /bracelefttp /bracerightbigg /bracerightbt /bracerighttp /bracketleftBig /bracketleftbigg /bracketleftbt /bracketleftex /bracketlefttp /bracketrightBig /bracketrightbigg /bracketrightbt /bracketrightex /bracketrighttp /integraldisplay /parenleftBigg /parenleftbigg /parenleftbt /parenleftex /parenlefttp /parenrightBigg /parenrightbigg /parenrightbt /parenrightex /parenrighttp /vextendsingle) /FontFile 1518 0 R >>
endobj
-1500 0 obj
+1520 0 obj
<< /Length1 1396 /Length2 5867 /Length3 0 /Filter /FlateDecode /Length 6812 >>
stream
xڍTTTk&FPAf@II)!f`:% @B$$DSCR@R@i$;9޵]֞=<]@P"T( X$ TV1
@@ -7041,10 +7142,10 @@ mNվ˘jB5̞cvqc~O\Y)O
ݟ~wb@ ݤmπnsA6&wSlYD]+"@?|9mo]fjǾ{sŸܦ}}rIRBR+譜yScC>gamʁt!eU p/k UQSb3Z Wзo.uY&h) @X`0rEC:s,17v TN
endstream
endobj
-1499 0 obj
-<< /Type /FontDescriptor /FontName /VMQSYC+CMEX7 /Flags 4 /FontBBox [ -12 -2951 1627 770 ] /Ascent 49 /CapHeight 0 /Descent -600 /ItalicAngle 0 /StemV 80 /XHeight 431 /CharSet( /radicalbig) /FontFile 1500 0 R >>
+1519 0 obj
+<< /Type /FontDescriptor /FontName /VMQSYC+CMEX7 /Flags 4 /FontBBox [ -12 -2951 1627 770 ] /Ascent 49 /CapHeight 0 /Descent -600 /ItalicAngle 0 /StemV 80 /XHeight 431 /CharSet( /radicalbig) /FontFile 1520 0 R >>
endobj
-1502 0 obj
+1522 0 obj
<< /Length1 1830 /Length2 11276 /Length3 0 /Filter /FlateDecode /Length 12424 >>
stream
xڍT[-kqS'-- @ )V-VSHhq>zsɞ׷;&9,q
@@ -7087,10 +7188,10 @@ t둭Jc_WP5jbep/wUd22>3}֟Bn9MmGvX-i1@?BDVlt[~_
|UƶO3n0&hWA:fBh;2bVF:u(o7Ȕ?xs4ŹNgX%%F}J34G_1˵-{
endstream
endobj
-1501 0 obj
-<< /Type /FontDescriptor /FontName /CEORQM+CMMI10 /Flags 4 /FontBBox [ -32 -250 1048 750 ] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 72 /XHeight 431 /CharSet( /A /B /C /D /I /L /a /b /c /comma /d /e /f /h /i /j /k /l /m /n /p /period /r /triangleright /u /x /y /z) /FontFile 1502 0 R >>
+1521 0 obj
+<< /Type /FontDescriptor /FontName /CEORQM+CMMI10 /Flags 4 /FontBBox [ -32 -250 1048 750 ] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 72 /XHeight 431 /CharSet( /A /B /C /D /I /L /a /b /c /comma /d /e /f /h /i /j /k /l /m /n /p /period /r /triangleright /u /x /y /z) /FontFile 1522 0 R >>
endobj
-1504 0 obj
+1524 0 obj
<< /Length1 1415 /Length2 6063 /Length3 0 /Filter /FlateDecode /Length 7021 >>
stream
xڍuTk-Xh
@@ -7120,10 +7221,10 @@ OB+F|72{ .2xcZrL_7-_5Km-܁CEMXo]Y1nfɫt/
bUyLq@jƚm#<՗aVY G<^P4~0-)gV2+ \]"X,p aqה-TW'qY'D#_Ē_w"9FuKK
endstream
endobj
-1503 0 obj
-<< /Type /FontDescriptor /FontName /JZMBET+CMMI12 /Flags 4 /FontBBox [ -31 -250 1026 750 ] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 65 /XHeight 431 /CharSet( /A) /FontFile 1504 0 R >>
+1523 0 obj
+<< /Type /FontDescriptor /FontName /JZMBET+CMMI12 /Flags 4 /FontBBox [ -31 -250 1026 750 ] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 65 /XHeight 431 /CharSet( /A) /FontFile 1524 0 R >>
endobj
-1506 0 obj
+1526 0 obj
<< /Length1 1451 /Length2 6812 /Length3 0 /Filter /FlateDecode /Length 7785 >>
stream
xڍtTk.)]D`A!ASIiICFwZY羞^Fzm=N[5XspEr*
@@ -7157,10 +7258,10 @@ y[f!i;7W%mIJ ﭓ71v(oT(}6u4/^%O8Ϩu(6g
a e|L1iR]ez[
endstream
endobj
-1505 0 obj
-<< /Type /FontDescriptor /FontName /IUHNPC+CMMI5 /Flags 4 /FontBBox [ 37 -250 1349 750 ] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 90 /XHeight 431 /CharSet( /L /i /j /n) /FontFile 1506 0 R >>
+1525 0 obj
+<< /Type /FontDescriptor /FontName /IUHNPC+CMMI5 /Flags 4 /FontBBox [ 37 -250 1349 750 ] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 90 /XHeight 431 /CharSet( /L /i /j /n) /FontFile 1526 0 R >>
endobj
-1508 0 obj
+1528 0 obj
<< /Length1 1589 /Length2 8523 /Length3 0 /Filter /FlateDecode /Length 9572 >>
stream
xڍTT.LCH "! 0PC!%)-!!%%ֺwZgγ}}jb&6FiPPx`c`accGաp+ȟft&jW= Iq
@@ -7204,10 +7305,10 @@ Sziq`Rky5zX-
_G)JxУ<g|eBy"7t*<
endstream
endobj
-1507 0 obj
-<< /Type /FontDescriptor /FontName /WUDPRN+CMMI7 /Flags 4 /FontBBox [ -1 -250 1171 750 ] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 81 /XHeight 431 /CharSet( /C /L /T /comma /e /i /j /k /n /p /q /star /x) /FontFile 1508 0 R >>
+1527 0 obj
+<< /Type /FontDescriptor /FontName /WUDPRN+CMMI7 /Flags 4 /FontBBox [ -1 -250 1171 750 ] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 81 /XHeight 431 /CharSet( /C /L /T /comma /e /i /j /k /n /p /q /star /x) /FontFile 1528 0 R >>
endobj
-1510 0 obj
+1530 0 obj
<< /Length1 1438 /Length2 6548 /Length3 0 /Filter /FlateDecode /Length 7523 >>
stream
xڍt4kׯ"ZD0zF5`0!z[H$DDoD#Ir{޻ֽkϳ=6f]>y{-LA
@@ -7244,10 +7345,10 @@ wt/ְj@884}?em\9P?{6jx)*NaqIuoŀ31&
*INS+$3z t$x g6./)~s_2oϒlAS"F!XzP%i3UsLWsOLۈklm܏f(]zj Y2
endstream
endobj
-1509 0 obj
-<< /Type /FontDescriptor /FontName /TEYYDJ+CMMI8 /Flags 4 /FontBBox [ -24 -250 1110 750 ] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 78 /XHeight 431 /CharSet( /i /j /n) /FontFile 1510 0 R >>
+1529 0 obj
+<< /Type /FontDescriptor /FontName /TEYYDJ+CMMI8 /Flags 4 /FontBBox [ -24 -250 1110 750 ] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 78 /XHeight 431 /CharSet( /i /j /n) /FontFile 1530 0 R >>
endobj
-1512 0 obj
+1532 0 obj
<< /Length1 1744 /Length2 11235 /Length3 0 /Filter /FlateDecode /Length 12356 >>
stream
xڍP.k;wwwwwg!0 w@pBpw
@@ -7294,10 +7395,10 @@ ttoΎфtč!e웩I]8NG'
o獧{{m1` 8>`9X;;FVqvt$3CY(n3@}"ZWkgcQ͞*EkFY<lc ?v0.+Q2SbMXw`Pi.zN o| Ի)n9`VOi{40ơ
endstream
endobj
-1511 0 obj
-<< /Type /FontDescriptor /FontName /IHIWXH+CMR10 /Flags 4 /FontBBox [ -40 -250 1009 750 ] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle 0 /StemV 69 /XHeight 431 /CharSet( /bracketleft /bracketright /c /eight /equal /five /four /i /n /nine /o /one /parenleft /parenright /plus /s /seven /six /three /two /zero) /FontFile 1512 0 R >>
+1531 0 obj
+<< /Type /FontDescriptor /FontName /IHIWXH+CMR10 /Flags 4 /FontBBox [ -40 -250 1009 750 ] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle 0 /StemV 69 /XHeight 431 /CharSet( /bracketleft /bracketright /c /eight /equal /five /four /i /n /nine /o /one /parenleft /parenright /plus /s /seven /six /three /two /zero) /FontFile 1532 0 R >>
endobj
-1514 0 obj
+1534 0 obj
<< /Length1 1447 /Length2 6556 /Length3 0 /Filter /FlateDecode /Length 7538 >>
stream
xڍVT\%Kph%CbfI%iP@@$nQJ.7zoZ3{kؙu a '<
@@ -7332,10 +7433,10 @@ eO:[1bo_9ͣh[puK}ks 7\GU0Ǟ6Г?ﱿWy$4kw}zK
2h&ji/,
endstream
endobj
-1513 0 obj
-<< /Type /FontDescriptor /FontName /CPMJUS+CMR5 /Flags 4 /FontBBox [ -10 -250 1304 750 ] /Ascent 694 /CapHeight 680 /Descent -194 /ItalicAngle 0 /StemV 89 /XHeight 431 /CharSet( /four /one /plus /three /two) /FontFile 1514 0 R >>
+1533 0 obj
+<< /Type /FontDescriptor /FontName /CPMJUS+CMR5 /Flags 4 /FontBBox [ -10 -250 1304 750 ] /Ascent 694 /CapHeight 680 /Descent -194 /ItalicAngle 0 /StemV 89 /XHeight 431 /CharSet( /four /one /plus /three /two) /FontFile 1534 0 R >>
endobj
-1516 0 obj
+1536 0 obj
<< /Length1 1595 /Length2 7817 /Length3 0 /Filter /FlateDecode /Length 8871 >>
stream
xڍT6t
@@ -7373,10 +7474,10 @@ Y<Qj8e^z 7r-\
.+g!~ŜI #PAiМ'WXϟf'_}xbK$yv[IoRʢTYiGU$ݡsZ,U+hQ
endstream
endobj
-1515 0 obj
-<< /Type /FontDescriptor /FontName /IZMGNT+CMR7 /Flags 4 /FontBBox [ -27 -250 1122 750 ] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle 0 /StemV 79 /XHeight 431 /CharSet( /eight /five /four /nine /one /parenleft /parenright /plus /seven /six /three /two /zero) /FontFile 1516 0 R >>
+1535 0 obj
+<< /Type /FontDescriptor /FontName /IZMGNT+CMR7 /Flags 4 /FontBBox [ -27 -250 1122 750 ] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle 0 /StemV 79 /XHeight 431 /CharSet( /eight /five /four /nine /one /parenleft /parenright /plus /seven /six /three /two /zero) /FontFile 1536 0 R >>
endobj
-1518 0 obj
+1538 0 obj
<< /Length1 1500 /Length2 6516 /Length3 0 /Filter /FlateDecode /Length 7522 >>
stream
xڍxTڲ6"J5 &*IMj $ґ ޕ*IU@tAs=zoe${f+@PU$
@@ -7419,10 +7520,10 @@ BH'渆m|{m/{.xoH2nE -.w}y'*7.^WeNߚFsU%ϏS
;J!ujE%msCzzFeq0x~ǠAJ/]j z8{FqKeI*1HoA(N{&dY __޴T'EQz
endstream
endobj
-1517 0 obj
-<< /Type /FontDescriptor /FontName /VGMPAA+CMSY10 /Flags 4 /FontBBox [ -29 -960 1116 775 ] /Ascent 750 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 40 /XHeight 431 /CharSet( /angbracketleft /angbracketright /arrowleft /minus /multiply) /FontFile 1518 0 R >>
+1537 0 obj
+<< /Type /FontDescriptor /FontName /VGMPAA+CMSY10 /Flags 4 /FontBBox [ -29 -960 1116 775 ] /Ascent 750 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 40 /XHeight 431 /CharSet( /angbracketleft /angbracketright /arrowleft /minus /multiply) /FontFile 1538 0 R >>
endobj
-1520 0 obj
+1540 0 obj
<< /Length1 1414 /Length2 6167 /Length3 0 /Filter /FlateDecode /Length 7134 >>
stream
xڍvTTk6(HK7FBADjc`bP:A@:SBRZ@:T@ios5kus=uy8!Jp-BeCS
@@ -7453,10 +7554,10 @@ n<Ȧ
.7z ^XEi[S<p15*;Aջ<d*+w]`ӷ3I4e:dz펢4)AwTiw||/KKj-Tf bS(Tq#z%I`uk9K^e[ZwʣzI|U|˄&eVJ6Sgߪa^4ǵ+ wN\EVةzew`wؓ/:71ἠP@᣸Ft7^HXfM[vU:x'?ibi ZM}&Od@9fcHMFKlpUe]:AE)(xȘkmD@~ F0ANǞEiXQRm9l%i;mFo1j 1^{WG 7HO ]ȉ")UjzlL?o
endstream
endobj
-1519 0 obj
-<< /Type /FontDescriptor /FontName /UZBPXA+CMSY5 /Flags 4 /FontBBox [ 21 -944 1448 791 ] /Ascent 750 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 56 /XHeight 431 /CharSet( /arrowleft /minus) /FontFile 1520 0 R >>
+1539 0 obj
+<< /Type /FontDescriptor /FontName /UZBPXA+CMSY5 /Flags 4 /FontBBox [ 21 -944 1448 791 ] /Ascent 750 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 56 /XHeight 431 /CharSet( /arrowleft /minus) /FontFile 1540 0 R >>
endobj
-1522 0 obj
+1542 0 obj
<< /Length1 1435 /Length2 6179 /Length3 0 /Filter /FlateDecode /Length 7153 >>
stream
xڍtT[.(0 ! ҂030 ݍ%* R-Hw7"|ugYxeP%
@@ -7485,317 +7586,320 @@ d"`tUe>!%_lkhCgKOnW~yң@᪘+>1#1VGp.ArrfSb
;jjIZxٱ1INzfݪy1M3"}~]\耆n>s5RQܶ nzp~Fqkqܲ='8~*}
endstream
endobj
-1521 0 obj
-<< /Type /FontDescriptor /FontName /QYJPQA+CMSY7 /Flags 4 /FontBBox [ -15 -951 1251 782 ] /Ascent 750 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 49 /XHeight 431 /CharSet( /arrowleft /arrowup /minus) /FontFile 1522 0 R >>
+1541 0 obj
+<< /Type /FontDescriptor /FontName /QYJPQA+CMSY7 /Flags 4 /FontBBox [ -15 -951 1251 782 ] /Ascent 750 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 49 /XHeight 431 /CharSet( /arrowleft /arrowup /minus) /FontFile 1542 0 R >>
endobj
-748 0 obj
-<< /Type /Font /Subtype /Type1 /BaseFont /XEMCLW+CMBX10 /FontDescriptor 1495 0 R /FirstChar 49 /LastChar 100 /Widths 1319 0 R >>
+758 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /XEMCLW+CMBX10 /FontDescriptor 1515 0 R /FirstChar 49 /LastChar 100 /Widths 1339 0 R >>
endobj
-371 0 obj
-<< /Type /Font /Subtype /Type1 /BaseFont /CFYTDH+CMEX10 /FontDescriptor 1497 0 R /FirstChar 12 /LastChar 125 /Widths 1446 0 R >>
+375 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /CFYTDH+CMEX10 /FontDescriptor 1517 0 R /FirstChar 12 /LastChar 125 /Widths 1466 0 R >>
endobj
-406 0 obj
-<< /Type /Font /Subtype /Type1 /BaseFont /VMQSYC+CMEX7 /FontDescriptor 1499 0 R /FirstChar 112 /LastChar 112 /Widths 1354 0 R >>
+410 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /VMQSYC+CMEX7 /FontDescriptor 1519 0 R /FirstChar 112 /LastChar 112 /Widths 1374 0 R >>
endobj
-375 0 obj
-<< /Type /Font /Subtype /Type1 /BaseFont /CEORQM+CMMI10 /FontDescriptor 1501 0 R /FirstChar 46 /LastChar 122 /Widths 1442 0 R >>
+379 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /CEORQM+CMMI10 /FontDescriptor 1521 0 R /FirstChar 46 /LastChar 122 /Widths 1462 0 R >>
endobj
-419 0 obj
-<< /Type /Font /Subtype /Type1 /BaseFont /JZMBET+CMMI12 /FontDescriptor 1503 0 R /FirstChar 65 /LastChar 65 /Widths 1353 0 R >>
+423 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /JZMBET+CMMI12 /FontDescriptor 1523 0 R /FirstChar 65 /LastChar 65 /Widths 1373 0 R >>
endobj
-374 0 obj
-<< /Type /Font /Subtype /Type1 /BaseFont /IUHNPC+CMMI5 /FontDescriptor 1505 0 R /FirstChar 76 /LastChar 110 /Widths 1443 0 R >>
+378 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /IUHNPC+CMMI5 /FontDescriptor 1525 0 R /FirstChar 76 /LastChar 110 /Widths 1463 0 R >>
endobj
-372 0 obj
-<< /Type /Font /Subtype /Type1 /BaseFont /WUDPRN+CMMI7 /FontDescriptor 1507 0 R /FirstChar 59 /LastChar 120 /Widths 1445 0 R >>
+376 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /WUDPRN+CMMI7 /FontDescriptor 1527 0 R /FirstChar 59 /LastChar 120 /Widths 1465 0 R >>
endobj
-479 0 obj
-<< /Type /Font /Subtype /Type1 /BaseFont /TEYYDJ+CMMI8 /FontDescriptor 1509 0 R /FirstChar 105 /LastChar 110 /Widths 1340 0 R >>
+488 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /TEYYDJ+CMMI8 /FontDescriptor 1529 0 R /FirstChar 105 /LastChar 110 /Widths 1360 0 R >>
endobj
-378 0 obj
-<< /Type /Font /Subtype /Type1 /BaseFont /IHIWXH+CMR10 /FontDescriptor 1511 0 R /FirstChar 40 /LastChar 115 /Widths 1434 0 R >>
+382 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /IHIWXH+CMR10 /FontDescriptor 1531 0 R /FirstChar 40 /LastChar 115 /Widths 1454 0 R >>
endobj
-373 0 obj
-<< /Type /Font /Subtype /Type1 /BaseFont /CPMJUS+CMR5 /FontDescriptor 1513 0 R /FirstChar 43 /LastChar 52 /Widths 1444 0 R >>
+377 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /CPMJUS+CMR5 /FontDescriptor 1533 0 R /FirstChar 43 /LastChar 52 /Widths 1464 0 R >>
endobj
-376 0 obj
-<< /Type /Font /Subtype /Type1 /BaseFont /IZMGNT+CMR7 /FontDescriptor 1515 0 R /FirstChar 40 /LastChar 57 /Widths 1441 0 R >>
+380 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /IZMGNT+CMR7 /FontDescriptor 1535 0 R /FirstChar 40 /LastChar 57 /Widths 1461 0 R >>
endobj
-400 0 obj
-<< /Type /Font /Subtype /Type1 /BaseFont /VGMPAA+CMSY10 /FontDescriptor 1517 0 R /FirstChar 0 /LastChar 105 /Widths 1355 0 R >>
+404 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /VGMPAA+CMSY10 /FontDescriptor 1537 0 R /FirstChar 0 /LastChar 105 /Widths 1375 0 R >>
endobj
-737 0 obj
-<< /Type /Font /Subtype /Type1 /BaseFont /UZBPXA+CMSY5 /FontDescriptor 1519 0 R /FirstChar 0 /LastChar 32 /Widths 1320 0 R >>
+747 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /UZBPXA+CMSY5 /FontDescriptor 1539 0 R /FirstChar 0 /LastChar 32 /Widths 1340 0 R >>
endobj
-638 0 obj
-<< /Type /Font /Subtype /Type1 /BaseFont /QYJPQA+CMSY7 /FontDescriptor 1521 0 R /FirstChar 0 /LastChar 34 /Widths 1327 0 R >>
+646 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /QYJPQA+CMSY7 /FontDescriptor 1541 0 R /FirstChar 0 /LastChar 34 /Widths 1347 0 R >>
endobj
-390 0 obj
-<< /Type /Pages /Parent 1523 0 R /Count 10 /Kids [ 357 0 R 395 0 R 403 0 R 416 0 R 431 0 R 444 0 R 449 0 R 454 0 R 461 0 R 466 0 R ] >>
+394 0 obj
+<< /Type /Pages /Parent 1543 0 R /Count 10 /Kids [ 361 0 R 399 0 R 407 0 R 420 0 R 435 0 R 448 0 R 453 0 R 457 0 R 461 0 R 468 0 R ] >>
endobj
-480 0 obj
-<< /Type /Pages /Parent 1523 0 R /Count 10 /Kids [ 476 0 R 489 0 R 496 0 R 501 0 R 506 0 R 512 0 R 521 0 R 527 0 R 533 0 R 539 0 R ] >>
+479 0 obj
+<< /Type /Pages /Parent 1543 0 R /Count 10 /Kids [ 475 0 R 485 0 R 497 0 R 504 0 R 509 0 R 514 0 R 520 0 R 529 0 R 535 0 R 541 0 R ] >>
endobj
-548 0 obj
-<< /Type /Pages /Parent 1523 0 R /Count 10 /Kids [ 545 0 R 552 0 R 559 0 R 565 0 R 573 0 R 581 0 R 591 0 R 598 0 R 603 0 R 608 0 R ] >>
+550 0 obj
+<< /Type /Pages /Parent 1543 0 R /Count 10 /Kids [ 547 0 R 554 0 R 560 0 R 567 0 R 573 0 R 581 0 R 589 0 R 599 0 R 606 0 R 611 0 R ] >>
endobj
-618 0 obj
-<< /Type /Pages /Parent 1523 0 R /Count 10 /Kids [ 615 0 R 623 0 R 635 0 R 644 0 R 651 0 R 659 0 R 665 0 R 674 0 R 683 0 R 691 0 R ] >>
+619 0 obj
+<< /Type /Pages /Parent 1543 0 R /Count 10 /Kids [ 616 0 R 624 0 R 631 0 R 643 0 R 652 0 R 659 0 R 667 0 R 673 0 R 680 0 R 691 0 R ] >>
endobj
-710 0 obj
-<< /Type /Pages /Parent 1523 0 R /Count 10 /Kids [ 701 0 R 714 0 R 724 0 R 729 0 R 734 0 R 745 0 R 754 0 R 763 0 R 771 0 R 778 0 R ] >>
+707 0 obj
+<< /Type /Pages /Parent 1543 0 R /Count 10 /Kids [ 699 0 R 710 0 R 724 0 R 734 0 R 739 0 R 744 0 R 755 0 R 764 0 R 773 0 R 781 0 R ] >>
endobj
-788 0 obj
-<< /Type /Pages /Parent 1523 0 R /Count 10 /Kids [ 784 0 R 792 0 R 798 0 R 806 0 R 815 0 R 830 0 R 837 0 R 842 0 R 848 0 R 852 0 R ] >>
+791 0 obj
+<< /Type /Pages /Parent 1543 0 R /Count 10 /Kids [ 788 0 R 795 0 R 801 0 R 808 0 R 816 0 R 825 0 R 840 0 R 847 0 R 852 0 R 860 0 R ] >>
endobj
-859 0 obj
-<< /Type /Pages /Parent 1523 0 R /Count 10 /Kids [ 856 0 R 861 0 R 865 0 R 869 0 R 874 0 R 879 0 R 883 0 R 887 0 R 1006 0 R 1112 0 R ] >>
+867 0 obj
+<< /Type /Pages /Parent 1543 0 R /Count 10 /Kids [ 864 0 R 869 0 R 873 0 R 877 0 R 881 0 R 886 0 R 891 0 R 895 0 R 899 0 R 1017 0 R ] >>
endobj
-1207 0 obj
-<< /Type /Pages /Parent 1523 0 R /Count 3 /Kids [ 1204 0 R 1248 0 R 1303 0 R ] >>
+1129 0 obj
+<< /Type /Pages /Parent 1543 0 R /Count 5 /Kids [ 1126 0 R 1219 0 R 1262 0 R 1318 0 R 1323 0 R ] >>
endobj
-1523 0 obj
-<< /Type /Pages /Count 73 /Kids [ 390 0 R 480 0 R 548 0 R 618 0 R 710 0 R 788 0 R 859 0 R 1207 0 R ] >>
+1543 0 obj
+<< /Type /Pages /Count 75 /Kids [ 394 0 R 479 0 R 550 0 R 619 0 R 707 0 R 791 0 R 867 0 R 1129 0 R ] >>
endobj
-1524 0 obj
-<< /Type /Outlines /First 6 0 R /Last 354 0 R /Count 19 >>
+1544 0 obj
+<< /Type /Outlines /First 6 0 R /Last 358 0 R /Count 19 >>
+endobj
+358 0 obj
+<< /Title 359 0 R /A 356 0 R /Parent 1544 0 R /Prev 314 0 R >>
endobj
354 0 obj
-<< /Title 355 0 R /A 352 0 R /Parent 1524 0 R /Prev 310 0 R >>
+<< /Title 355 0 R /A 352 0 R /Parent 314 0 R /Prev 350 0 R >>
endobj
350 0 obj
-<< /Title 351 0 R /A 348 0 R /Parent 310 0 R /Prev 346 0 R >>
+<< /Title 351 0 R /A 348 0 R /Parent 314 0 R /Prev 346 0 R /Next 354 0 R >>
endobj
346 0 obj
-<< /Title 347 0 R /A 344 0 R /Parent 310 0 R /Prev 342 0 R /Next 350 0 R >>
+<< /Title 347 0 R /A 344 0 R /Parent 314 0 R /Prev 342 0 R /Next 350 0 R >>
endobj
342 0 obj
-<< /Title 343 0 R /A 340 0 R /Parent 310 0 R /Prev 338 0 R /Next 346 0 R >>
+<< /Title 343 0 R /A 340 0 R /Parent 314 0 R /Prev 338 0 R /Next 346 0 R >>
endobj
338 0 obj
-<< /Title 339 0 R /A 336 0 R /Parent 310 0 R /Prev 334 0 R /Next 342 0 R >>
+<< /Title 339 0 R /A 336 0 R /Parent 314 0 R /Prev 334 0 R /Next 342 0 R >>
endobj
334 0 obj
-<< /Title 335 0 R /A 332 0 R /Parent 310 0 R /Prev 330 0 R /Next 338 0 R >>
+<< /Title 335 0 R /A 332 0 R /Parent 314 0 R /Prev 330 0 R /Next 338 0 R >>
endobj
330 0 obj
-<< /Title 331 0 R /A 328 0 R /Parent 310 0 R /Prev 326 0 R /Next 334 0 R >>
+<< /Title 331 0 R /A 328 0 R /Parent 314 0 R /Prev 326 0 R /Next 334 0 R >>
endobj
326 0 obj
-<< /Title 327 0 R /A 324 0 R /Parent 310 0 R /Prev 322 0 R /Next 330 0 R >>
+<< /Title 327 0 R /A 324 0 R /Parent 314 0 R /Prev 322 0 R /Next 330 0 R >>
endobj
322 0 obj
-<< /Title 323 0 R /A 320 0 R /Parent 310 0 R /Prev 318 0 R /Next 326 0 R >>
+<< /Title 323 0 R /A 320 0 R /Parent 314 0 R /Prev 318 0 R /Next 326 0 R >>
endobj
318 0 obj
-<< /Title 319 0 R /A 316 0 R /Parent 310 0 R /Prev 314 0 R /Next 322 0 R >>
+<< /Title 319 0 R /A 316 0 R /Parent 314 0 R /Next 322 0 R >>
endobj
314 0 obj
-<< /Title 315 0 R /A 312 0 R /Parent 310 0 R /Next 318 0 R >>
+<< /Title 315 0 R /A 312 0 R /Parent 1544 0 R /Prev 294 0 R /Next 358 0 R /First 318 0 R /Last 354 0 R /Count -10 >>
endobj
310 0 obj
-<< /Title 311 0 R /A 308 0 R /Parent 1524 0 R /Prev 290 0 R /Next 354 0 R /First 314 0 R /Last 350 0 R /Count -10 >>
+<< /Title 311 0 R /A 308 0 R /Parent 294 0 R /Prev 306 0 R >>
endobj
306 0 obj
-<< /Title 307 0 R /A 304 0 R /Parent 290 0 R /Prev 302 0 R >>
+<< /Title 307 0 R /A 304 0 R /Parent 294 0 R /Prev 302 0 R /Next 310 0 R >>
endobj
302 0 obj
-<< /Title 303 0 R /A 300 0 R /Parent 290 0 R /Prev 298 0 R /Next 306 0 R >>
+<< /Title 303 0 R /A 300 0 R /Parent 294 0 R /Prev 298 0 R /Next 306 0 R >>
endobj
298 0 obj
-<< /Title 299 0 R /A 296 0 R /Parent 290 0 R /Prev 294 0 R /Next 302 0 R >>
+<< /Title 299 0 R /A 296 0 R /Parent 294 0 R /Next 302 0 R >>
endobj
294 0 obj
-<< /Title 295 0 R /A 292 0 R /Parent 290 0 R /Next 298 0 R >>
+<< /Title 295 0 R /A 292 0 R /Parent 1544 0 R /Prev 290 0 R /Next 314 0 R /First 298 0 R /Last 310 0 R /Count -4 >>
endobj
290 0 obj
-<< /Title 291 0 R /A 288 0 R /Parent 1524 0 R /Prev 286 0 R /Next 310 0 R /First 294 0 R /Last 306 0 R /Count -4 >>
+<< /Title 291 0 R /A 288 0 R /Parent 1544 0 R /Prev 262 0 R /Next 294 0 R >>
endobj
286 0 obj
-<< /Title 287 0 R /A 284 0 R /Parent 1524 0 R /Prev 258 0 R /Next 290 0 R >>
+<< /Title 287 0 R /A 284 0 R /Parent 262 0 R /Prev 282 0 R >>
endobj
282 0 obj
-<< /Title 283 0 R /A 280 0 R /Parent 258 0 R /Prev 278 0 R >>
+<< /Title 283 0 R /A 280 0 R /Parent 262 0 R /Prev 278 0 R /Next 286 0 R >>
endobj
278 0 obj
-<< /Title 279 0 R /A 276 0 R /Parent 258 0 R /Prev 274 0 R /Next 282 0 R >>
+<< /Title 279 0 R /A 276 0 R /Parent 262 0 R /Prev 266 0 R /Next 282 0 R >>
endobj
274 0 obj
-<< /Title 275 0 R /A 272 0 R /Parent 258 0 R /Prev 262 0 R /Next 278 0 R >>
+<< /Title 275 0 R /A 272 0 R /Parent 266 0 R /Prev 270 0 R >>
endobj
270 0 obj
-<< /Title 271 0 R /A 268 0 R /Parent 262 0 R /Prev 266 0 R >>
+<< /Title 271 0 R /A 268 0 R /Parent 266 0 R /Next 274 0 R >>
endobj
266 0 obj
-<< /Title 267 0 R /A 264 0 R /Parent 262 0 R /Next 270 0 R >>
+<< /Title 267 0 R /A 264 0 R /Parent 262 0 R /Next 278 0 R /First 270 0 R /Last 274 0 R /Count -2 >>
endobj
262 0 obj
-<< /Title 263 0 R /A 260 0 R /Parent 258 0 R /Next 274 0 R /First 266 0 R /Last 270 0 R /Count -2 >>
+<< /Title 263 0 R /A 260 0 R /Parent 1544 0 R /Prev 214 0 R /Next 290 0 R /First 266 0 R /Last 286 0 R /Count -4 >>
endobj
258 0 obj
-<< /Title 259 0 R /A 256 0 R /Parent 1524 0 R /Prev 210 0 R /Next 286 0 R /First 262 0 R /Last 282 0 R /Count -4 >>
+<< /Title 259 0 R /A 256 0 R /Parent 214 0 R /Prev 254 0 R >>
endobj
254 0 obj
-<< /Title 255 0 R /A 252 0 R /Parent 210 0 R /Prev 250 0 R >>
+<< /Title 255 0 R /A 252 0 R /Parent 214 0 R /Prev 250 0 R /Next 258 0 R >>
endobj
250 0 obj
-<< /Title 251 0 R /A 248 0 R /Parent 210 0 R /Prev 246 0 R /Next 254 0 R >>
+<< /Title 251 0 R /A 248 0 R /Parent 214 0 R /Prev 246 0 R /Next 254 0 R >>
endobj
246 0 obj
-<< /Title 247 0 R /A 244 0 R /Parent 210 0 R /Prev 242 0 R /Next 250 0 R >>
+<< /Title 247 0 R /A 244 0 R /Parent 214 0 R /Prev 242 0 R /Next 250 0 R >>
endobj
242 0 obj
-<< /Title 243 0 R /A 240 0 R /Parent 210 0 R /Prev 238 0 R /Next 246 0 R >>
+<< /Title 243 0 R /A 240 0 R /Parent 214 0 R /Prev 238 0 R /Next 246 0 R >>
endobj
238 0 obj
-<< /Title 239 0 R /A 236 0 R /Parent 210 0 R /Prev 234 0 R /Next 242 0 R >>
+<< /Title 239 0 R /A 236 0 R /Parent 214 0 R /Prev 234 0 R /Next 242 0 R >>
endobj
234 0 obj
-<< /Title 235 0 R /A 232 0 R /Parent 210 0 R /Prev 230 0 R /Next 238 0 R >>
+<< /Title 235 0 R /A 232 0 R /Parent 214 0 R /Prev 230 0 R /Next 238 0 R >>
endobj
230 0 obj
-<< /Title 231 0 R /A 228 0 R /Parent 210 0 R /Prev 226 0 R /Next 234 0 R >>
+<< /Title 231 0 R /A 228 0 R /Parent 214 0 R /Prev 226 0 R /Next 234 0 R >>
endobj
226 0 obj
-<< /Title 227 0 R /A 224 0 R /Parent 210 0 R /Prev 222 0 R /Next 230 0 R >>
+<< /Title 227 0 R /A 224 0 R /Parent 214 0 R /Prev 222 0 R /Next 230 0 R >>
endobj
222 0 obj
-<< /Title 223 0 R /A 220 0 R /Parent 210 0 R /Prev 218 0 R /Next 226 0 R >>
+<< /Title 223 0 R /A 220 0 R /Parent 214 0 R /Prev 218 0 R /Next 226 0 R >>
endobj
218 0 obj
-<< /Title 219 0 R /A 216 0 R /Parent 210 0 R /Prev 214 0 R /Next 222 0 R >>
+<< /Title 219 0 R /A 216 0 R /Parent 214 0 R /Next 222 0 R >>
endobj
214 0 obj
-<< /Title 215 0 R /A 212 0 R /Parent 210 0 R /Next 218 0 R >>
+<< /Title 215 0 R /A 212 0 R /Parent 1544 0 R /Prev 190 0 R /Next 262 0 R /First 218 0 R /Last 258 0 R /Count -11 >>
endobj
210 0 obj
-<< /Title 211 0 R /A 208 0 R /Parent 1524 0 R /Prev 186 0 R /Next 258 0 R /First 214 0 R /Last 254 0 R /Count -11 >>
+<< /Title 211 0 R /A 208 0 R /Parent 190 0 R /Prev 206 0 R >>
endobj
206 0 obj
-<< /Title 207 0 R /A 204 0 R /Parent 186 0 R /Prev 202 0 R >>
+<< /Title 207 0 R /A 204 0 R /Parent 190 0 R /Prev 202 0 R /Next 210 0 R >>
endobj
202 0 obj
-<< /Title 203 0 R /A 200 0 R /Parent 186 0 R /Prev 198 0 R /Next 206 0 R >>
+<< /Title 203 0 R /A 200 0 R /Parent 190 0 R /Prev 198 0 R /Next 206 0 R >>
endobj
198 0 obj
-<< /Title 199 0 R /A 196 0 R /Parent 186 0 R /Prev 194 0 R /Next 202 0 R >>
+<< /Title 199 0 R /A 196 0 R /Parent 190 0 R /Prev 194 0 R /Next 202 0 R >>
endobj
194 0 obj
-<< /Title 195 0 R /A 192 0 R /Parent 186 0 R /Prev 190 0 R /Next 198 0 R >>
+<< /Title 195 0 R /A 192 0 R /Parent 190 0 R /Next 198 0 R >>
endobj
190 0 obj
-<< /Title 191 0 R /A 188 0 R /Parent 186 0 R /Next 194 0 R >>
+<< /Title 191 0 R /A 188 0 R /Parent 1544 0 R /Prev 170 0 R /Next 214 0 R /First 194 0 R /Last 210 0 R /Count -5 >>
endobj
186 0 obj
-<< /Title 187 0 R /A 184 0 R /Parent 1524 0 R /Prev 166 0 R /Next 210 0 R /First 190 0 R /Last 206 0 R /Count -5 >>
+<< /Title 187 0 R /A 184 0 R /Parent 170 0 R /Prev 182 0 R >>
endobj
182 0 obj
-<< /Title 183 0 R /A 180 0 R /Parent 166 0 R /Prev 178 0 R >>
+<< /Title 183 0 R /A 180 0 R /Parent 170 0 R /Prev 178 0 R /Next 186 0 R >>
endobj
178 0 obj
-<< /Title 179 0 R /A 176 0 R /Parent 166 0 R /Prev 174 0 R /Next 182 0 R >>
+<< /Title 179 0 R /A 176 0 R /Parent 170 0 R /Prev 174 0 R /Next 182 0 R >>
endobj
174 0 obj
-<< /Title 175 0 R /A 172 0 R /Parent 166 0 R /Prev 170 0 R /Next 178 0 R >>
+<< /Title 175 0 R /A 172 0 R /Parent 170 0 R /Next 178 0 R >>
endobj
170 0 obj
-<< /Title 171 0 R /A 168 0 R /Parent 166 0 R /Next 174 0 R >>
+<< /Title 171 0 R /A 168 0 R /Parent 1544 0 R /Prev 166 0 R /Next 190 0 R /First 174 0 R /Last 186 0 R /Count -4 >>
endobj
166 0 obj
-<< /Title 167 0 R /A 164 0 R /Parent 1524 0 R /Prev 162 0 R /Next 186 0 R /First 170 0 R /Last 182 0 R /Count -4 >>
+<< /Title 167 0 R /A 164 0 R /Parent 1544 0 R /Prev 138 0 R /Next 170 0 R >>
endobj
162 0 obj
-<< /Title 163 0 R /A 160 0 R /Parent 1524 0 R /Prev 134 0 R /Next 166 0 R >>
+<< /Title 163 0 R /A 160 0 R /Parent 138 0 R /Prev 158 0 R >>
endobj
158 0 obj
-<< /Title 159 0 R /A 156 0 R /Parent 134 0 R /Prev 154 0 R >>
+<< /Title 159 0 R /A 156 0 R /Parent 138 0 R /Prev 154 0 R /Next 162 0 R >>
endobj
154 0 obj
-<< /Title 155 0 R /A 152 0 R /Parent 134 0 R /Prev 150 0 R /Next 158 0 R >>
+<< /Title 155 0 R /A 152 0 R /Parent 138 0 R /Prev 150 0 R /Next 158 0 R >>
endobj
150 0 obj
-<< /Title 151 0 R /A 148 0 R /Parent 134 0 R /Prev 146 0 R /Next 154 0 R >>
+<< /Title 151 0 R /A 148 0 R /Parent 138 0 R /Prev 146 0 R /Next 154 0 R >>
endobj
146 0 obj
-<< /Title 147 0 R /A 144 0 R /Parent 134 0 R /Prev 142 0 R /Next 150 0 R >>
+<< /Title 147 0 R /A 144 0 R /Parent 138 0 R /Prev 142 0 R /Next 150 0 R >>
endobj
142 0 obj
-<< /Title 143 0 R /A 140 0 R /Parent 134 0 R /Prev 138 0 R /Next 146 0 R >>
+<< /Title 143 0 R /A 140 0 R /Parent 138 0 R /Next 146 0 R >>
endobj
138 0 obj
-<< /Title 139 0 R /A 136 0 R /Parent 134 0 R /Next 142 0 R >>
+<< /Title 139 0 R /A 136 0 R /Parent 1544 0 R /Prev 134 0 R /Next 166 0 R /First 142 0 R /Last 162 0 R /Count -6 >>
endobj
134 0 obj
-<< /Title 135 0 R /A 132 0 R /Parent 1524 0 R /Prev 130 0 R /Next 162 0 R /First 138 0 R /Last 158 0 R /Count -6 >>
+<< /Title 135 0 R /A 132 0 R /Parent 1544 0 R /Prev 118 0 R /Next 138 0 R >>
endobj
130 0 obj
-<< /Title 131 0 R /A 128 0 R /Parent 1524 0 R /Prev 114 0 R /Next 134 0 R >>
+<< /Title 131 0 R /A 128 0 R /Parent 118 0 R /Prev 126 0 R >>
endobj
126 0 obj
-<< /Title 127 0 R /A 124 0 R /Parent 114 0 R /Prev 122 0 R >>
+<< /Title 127 0 R /A 124 0 R /Parent 118 0 R /Prev 122 0 R /Next 130 0 R >>
endobj
122 0 obj
-<< /Title 123 0 R /A 120 0 R /Parent 114 0 R /Prev 118 0 R /Next 126 0 R >>
+<< /Title 123 0 R /A 120 0 R /Parent 118 0 R /Next 126 0 R >>
endobj
118 0 obj
-<< /Title 119 0 R /A 116 0 R /Parent 114 0 R /Next 122 0 R >>
+<< /Title 119 0 R /A 116 0 R /Parent 1544 0 R /Prev 114 0 R /Next 134 0 R /First 122 0 R /Last 130 0 R /Count -3 >>
endobj
114 0 obj
-<< /Title 115 0 R /A 112 0 R /Parent 1524 0 R /Prev 110 0 R /Next 130 0 R /First 118 0 R /Last 126 0 R /Count -3 >>
+<< /Title 115 0 R /A 112 0 R /Parent 1544 0 R /Prev 94 0 R /Next 118 0 R >>
endobj
110 0 obj
-<< /Title 111 0 R /A 108 0 R /Parent 1524 0 R /Prev 90 0 R /Next 114 0 R >>
+<< /Title 111 0 R /A 108 0 R /Parent 94 0 R /Prev 106 0 R >>
endobj
106 0 obj
-<< /Title 107 0 R /A 104 0 R /Parent 90 0 R /Prev 102 0 R >>
+<< /Title 107 0 R /A 104 0 R /Parent 94 0 R /Prev 102 0 R /Next 110 0 R >>
endobj
102 0 obj
-<< /Title 103 0 R /A 100 0 R /Parent 90 0 R /Prev 98 0 R /Next 106 0 R >>
+<< /Title 103 0 R /A 100 0 R /Parent 94 0 R /Prev 98 0 R /Next 106 0 R >>
endobj
98 0 obj
-<< /Title 99 0 R /A 96 0 R /Parent 90 0 R /Prev 94 0 R /Next 102 0 R >>
+<< /Title 99 0 R /A 96 0 R /Parent 94 0 R /Next 102 0 R >>
endobj
94 0 obj
-<< /Title 95 0 R /A 92 0 R /Parent 90 0 R /Next 98 0 R >>
+<< /Title 95 0 R /A 92 0 R /Parent 1544 0 R /Prev 50 0 R /Next 114 0 R /First 98 0 R /Last 110 0 R /Count -4 >>
endobj
90 0 obj
-<< /Title 91 0 R /A 88 0 R /Parent 1524 0 R /Prev 46 0 R /Next 110 0 R /First 94 0 R /Last 106 0 R /Count -4 >>
+<< /Title 91 0 R /A 88 0 R /Parent 70 0 R /Prev 86 0 R >>
endobj
86 0 obj
-<< /Title 87 0 R /A 84 0 R /Parent 66 0 R /Prev 82 0 R >>
+<< /Title 87 0 R /A 84 0 R /Parent 70 0 R /Prev 82 0 R /Next 90 0 R >>
endobj
82 0 obj
-<< /Title 83 0 R /A 80 0 R /Parent 66 0 R /Prev 78 0 R /Next 86 0 R >>
+<< /Title 83 0 R /A 80 0 R /Parent 70 0 R /Prev 78 0 R /Next 86 0 R >>
endobj
78 0 obj
-<< /Title 79 0 R /A 76 0 R /Parent 66 0 R /Prev 74 0 R /Next 82 0 R >>
+<< /Title 79 0 R /A 76 0 R /Parent 70 0 R /Prev 74 0 R /Next 82 0 R >>
endobj
74 0 obj
-<< /Title 75 0 R /A 72 0 R /Parent 66 0 R /Prev 70 0 R /Next 78 0 R >>
+<< /Title 75 0 R /A 72 0 R /Parent 70 0 R /Next 78 0 R >>
endobj
70 0 obj
-<< /Title 71 0 R /A 68 0 R /Parent 66 0 R /Next 74 0 R >>
+<< /Title 71 0 R /A 68 0 R /Parent 50 0 R /Prev 66 0 R /First 74 0 R /Last 90 0 R /Count -5 >>
endobj
66 0 obj
-<< /Title 67 0 R /A 64 0 R /Parent 46 0 R /Prev 62 0 R /First 70 0 R /Last 86 0 R /Count -5 >>
+<< /Title 67 0 R /A 64 0 R /Parent 50 0 R /Prev 54 0 R /Next 70 0 R >>
endobj
62 0 obj
-<< /Title 63 0 R /A 60 0 R /Parent 46 0 R /Prev 50 0 R /Next 66 0 R >>
+<< /Title 63 0 R /A 60 0 R /Parent 54 0 R /Prev 58 0 R >>
endobj
58 0 obj
-<< /Title 59 0 R /A 56 0 R /Parent 50 0 R /Prev 54 0 R >>
+<< /Title 59 0 R /A 56 0 R /Parent 54 0 R /Next 62 0 R >>
endobj
54 0 obj
-<< /Title 55 0 R /A 52 0 R /Parent 50 0 R /Next 58 0 R >>
+<< /Title 55 0 R /A 52 0 R /Parent 50 0 R /Next 66 0 R /First 58 0 R /Last 62 0 R /Count -2 >>
endobj
50 0 obj
-<< /Title 51 0 R /A 48 0 R /Parent 46 0 R /Next 62 0 R /First 54 0 R /Last 58 0 R /Count -2 >>
+<< /Title 51 0 R /A 48 0 R /Parent 1544 0 R /Prev 18 0 R /Next 94 0 R /First 54 0 R /Last 70 0 R /Count -3 >>
endobj
46 0 obj
-<< /Title 47 0 R /A 44 0 R /Parent 1524 0 R /Prev 18 0 R /Next 90 0 R /First 50 0 R /Last 66 0 R /Count -3 >>
+<< /Title 47 0 R /A 44 0 R /Parent 18 0 R /Prev 42 0 R >>
endobj
42 0 obj
-<< /Title 43 0 R /A 40 0 R /Parent 18 0 R /Prev 38 0 R >>
+<< /Title 43 0 R /A 40 0 R /Parent 18 0 R /Prev 38 0 R /Next 46 0 R >>
endobj
38 0 obj
<< /Title 39 0 R /A 36 0 R /Parent 18 0 R /Prev 34 0 R /Next 42 0 R >>
@@ -7813,1586 +7917,1606 @@ endobj
<< /Title 23 0 R /A 20 0 R /Parent 18 0 R /Next 26 0 R >>
endobj
18 0 obj
-<< /Title 19 0 R /A 16 0 R /Parent 1524 0 R /Prev 14 0 R /Next 46 0 R /First 22 0 R /Last 42 0 R /Count -6 >>
+<< /Title 19 0 R /A 16 0 R /Parent 1544 0 R /Prev 14 0 R /Next 50 0 R /First 22 0 R /Last 46 0 R /Count -7 >>
endobj
14 0 obj
-<< /Title 15 0 R /A 12 0 R /Parent 1524 0 R /Prev 10 0 R /Next 18 0 R >>
+<< /Title 15 0 R /A 12 0 R /Parent 1544 0 R /Prev 10 0 R /Next 18 0 R >>
endobj
10 0 obj
-<< /Title 11 0 R /A 8 0 R /Parent 1524 0 R /Prev 6 0 R /Next 14 0 R >>
+<< /Title 11 0 R /A 8 0 R /Parent 1544 0 R /Prev 6 0 R /Next 14 0 R >>
endobj
6 0 obj
-<< /Title 7 0 R /A 4 0 R /Parent 1524 0 R /Next 10 0 R >>
+<< /Title 7 0 R /A 4 0 R /Parent 1544 0 R /Next 10 0 R >>
endobj
-1525 0 obj
-<< /Names [ (Doc-Start) 362 0 R (Item.1) 407 0 R (Item.10) 709 0 R (Item.11) 845 0 R (Item.12) 846 0 R (Item.2) 408 0 R (Item.3) 409 0 R (Item.4) 410 0 R (Item.5) 697 0 R (Item.6) 698 0 R (Item.7) 706 0 R (Item.8) 707 0 R (Item.9) 708 0 R (page.1) 361 0 R (page.10) 468 0 R (page.11) 478 0 R (page.12) 491 0 R (page.13) 498 0 R (page.14) 503 0 R (page.15) 508 0 R (page.16) 514 0 R (page.17) 523 0 R (page.18) 529 0 R (page.19) 535 0 R (page.2) 397 0 R (page.20) 541 0 R (page.21) 547 0 R (page.22) 554 0 R (page.23) 561 0 R (page.24) 567 0 R (page.25) 575 0 R (page.26) 583 0 R ] /Limits [ (Doc-Start) (page.26) ] >>
+1545 0 obj
+<< /Names [ (Doc-Start) 366 0 R (Item.1) 411 0 R (Item.10) 720 0 R (Item.11) 857 0 R (Item.12) 858 0 R (Item.2) 412 0 R (Item.3) 413 0 R (Item.4) 414 0 R (Item.5) 705 0 R (Item.6) 706 0 R (Item.7) 717 0 R (Item.8) 718 0 R (Item.9) 719 0 R (page.1) 365 0 R (page.10) 470 0 R (page.11) 477 0 R (page.12) 487 0 R (page.13) 499 0 R (page.14) 506 0 R (page.15) 511 0 R (page.16) 516 0 R (page.17) 522 0 R (page.18) 531 0 R (page.19) 537 0 R (page.2) 401 0 R (page.20) 543 0 R (page.21) 549 0 R (page.22) 556 0 R (page.23) 562 0 R (page.24) 569 0 R (page.25) 575 0 R (page.26) 583 0 R ] /Limits [ (Doc-Start) (page.26) ] >>
endobj
-1526 0 obj
-<< /Names [ (page.27) 593 0 R (page.28) 600 0 R (page.29) 605 0 R (page.3) 405 0 R (page.30) 610 0 R (page.31) 617 0 R (page.32) 625 0 R (page.33) 637 0 R (page.34) 646 0 R (page.35) 653 0 R (page.36) 661 0 R (page.37) 667 0 R (page.38) 676 0 R (page.39) 685 0 R (page.4) 418 0 R (page.40) 693 0 R (page.41) 703 0 R (page.42) 716 0 R (page.43) 726 0 R (page.44) 731 0 R (page.45) 736 0 R (page.46) 747 0 R (page.47) 756 0 R (page.48) 765 0 R (page.49) 773 0 R (page.5) 433 0 R (page.50) 780 0 R (page.51) 786 0 R (page.52) 794 0 R (page.53) 800 0 R (page.54) 808 0 R (page.55) 817 0 R ] /Limits [ (page.27) (page.55) ] >>
+1546 0 obj
+<< /Names [ (page.27) 591 0 R (page.28) 601 0 R (page.29) 608 0 R (page.3) 409 0 R (page.30) 613 0 R (page.31) 618 0 R (page.32) 626 0 R (page.33) 633 0 R (page.34) 645 0 R (page.35) 654 0 R (page.36) 661 0 R (page.37) 669 0 R (page.38) 675 0 R (page.39) 682 0 R (page.4) 422 0 R (page.40) 693 0 R (page.41) 701 0 R (page.42) 712 0 R (page.43) 726 0 R (page.44) 736 0 R (page.45) 741 0 R (page.46) 746 0 R (page.47) 757 0 R (page.48) 766 0 R (page.49) 775 0 R (page.5) 437 0 R (page.50) 783 0 R (page.51) 790 0 R (page.52) 797 0 R (page.53) 803 0 R (page.54) 810 0 R (page.55) 818 0 R ] /Limits [ (page.27) (page.55) ] >>
endobj
-1527 0 obj
-<< /Names [ (page.56) 832 0 R (page.57) 839 0 R (page.58) 844 0 R (page.59) 850 0 R (page.6) 446 0 R (page.60) 854 0 R (page.61) 858 0 R (page.62) 863 0 R (page.63) 867 0 R (page.64) 871 0 R (page.65) 876 0 R (page.66) 881 0 R (page.67) 885 0 R (page.68) 889 0 R (page.69) 1008 0 R (page.7) 451 0 R (page.70) 1114 0 R (page.71) 1206 0 R (page.72) 1250 0 R (page.73) 1305 0 R (page.8) 456 0 R (page.9) 463 0 R (section*.2) 353 0 R (section.1) 5 0 R (section.10) 133 0 R (section.11) 161 0 R (section.12) 165 0 R (section.13) 185 0 R (section.14) 209 0 R (section.15) 257 0 R (section.16) 285 0 R (section.17) 289 0 R ] /Limits [ (page.56) (section.17) ] >>
+1547 0 obj
+<< /Names [ (page.56) 827 0 R (page.57) 842 0 R (page.58) 849 0 R (page.59) 854 0 R (page.6) 450 0 R (page.60) 862 0 R (page.61) 866 0 R (page.62) 871 0 R (page.63) 875 0 R (page.64) 879 0 R (page.65) 883 0 R (page.66) 888 0 R (page.67) 893 0 R (page.68) 897 0 R (page.69) 901 0 R (page.7) 455 0 R (page.70) 1019 0 R (page.71) 1128 0 R (page.72) 1221 0 R (page.73) 1264 0 R (page.74) 1320 0 R (page.75) 1325 0 R (page.8) 459 0 R (page.9) 463 0 R (section*.2) 357 0 R (section.1) 5 0 R (section.10) 137 0 R (section.11) 165 0 R (section.12) 169 0 R (section.13) 189 0 R (section.14) 213 0 R (section.15) 261 0 R ] /Limits [ (page.56) (section.15) ] >>
endobj
-1528 0 obj
-<< /Names [ (section.18) 309 0 R (section.2) 9 0 R (section.3) 13 0 R (section.4) 17 0 R (section.5) 45 0 R (section.6) 89 0 R (section.7) 109 0 R (section.8) 113 0 R (section.9) 129 0 R (subsection.10.1) 137 0 R (subsection.10.2) 141 0 R (subsection.10.3) 145 0 R (subsection.10.4) 149 0 R (subsection.10.5) 153 0 R (subsection.10.6) 157 0 R (subsection.12.1) 169 0 R (subsection.12.2) 173 0 R (subsection.12.3) 177 0 R (subsection.12.4) 181 0 R (subsection.13.1) 189 0 R (subsection.13.2) 193 0 R (subsection.13.3) 197 0 R (subsection.13.4) 201 0 R (subsection.13.5) 205 0 R (subsection.14.1) 213 0 R (subsection.14.10) 249 0 R (subsection.14.11) 253 0 R (subsection.14.2) 217 0 R (subsection.14.3) 221 0 R (subsection.14.4) 225 0 R (subsection.14.5) 229 0 R (subsection.14.6) 233 0 R ] /Limits [ (section.18) (subsection.14.6) ] >>
+1548 0 obj
+<< /Names [ (section.16) 289 0 R (section.17) 293 0 R (section.18) 313 0 R (section.2) 9 0 R (section.3) 13 0 R (section.4) 17 0 R (section.5) 49 0 R (section.6) 93 0 R (section.7) 113 0 R (section.8) 117 0 R (section.9) 133 0 R (subsection.10.1) 141 0 R (subsection.10.2) 145 0 R (subsection.10.3) 149 0 R (subsection.10.4) 153 0 R (subsection.10.5) 157 0 R (subsection.10.6) 161 0 R (subsection.12.1) 173 0 R (subsection.12.2) 177 0 R (subsection.12.3) 181 0 R (subsection.12.4) 185 0 R (subsection.13.1) 193 0 R (subsection.13.2) 197 0 R (subsection.13.3) 201 0 R (subsection.13.4) 205 0 R (subsection.13.5) 209 0 R (subsection.14.1) 217 0 R (subsection.14.10) 253 0 R (subsection.14.11) 257 0 R (subsection.14.2) 221 0 R (subsection.14.3) 225 0 R (subsection.14.4) 229 0 R ] /Limits [ (section.16) (subsection.14.4) ] >>
endobj
-1529 0 obj
-<< /Names [ (subsection.14.7) 237 0 R (subsection.14.8) 241 0 R (subsection.14.9) 245 0 R (subsection.15.1) 261 0 R (subsection.15.2) 273 0 R (subsection.15.3) 277 0 R (subsection.15.4) 281 0 R (subsection.17.1) 293 0 R (subsection.17.2) 297 0 R (subsection.17.3) 301 0 R (subsection.17.4) 305 0 R (subsection.18.1) 313 0 R (subsection.18.10) 349 0 R (subsection.18.2) 317 0 R (subsection.18.3) 321 0 R (subsection.18.4) 325 0 R (subsection.18.5) 329 0 R (subsection.18.6) 333 0 R (subsection.18.7) 337 0 R (subsection.18.8) 341 0 R (subsection.18.9) 345 0 R (subsection.4.1) 21 0 R (subsection.4.2) 25 0 R (subsection.4.3) 29 0 R (subsection.4.4) 33 0 R (subsection.4.5) 37 0 R (subsection.4.6) 41 0 R (subsection.5.1) 49 0 R (subsection.5.2) 61 0 R (subsection.5.3) 65 0 R (subsection.6.1) 93 0 R (subsection.6.2) 97 0 R ] /Limits [ (subsection.14.7) (subsection.6.2) ] >>
+1549 0 obj
+<< /Names [ (subsection.14.5) 233 0 R (subsection.14.6) 237 0 R (subsection.14.7) 241 0 R (subsection.14.8) 245 0 R (subsection.14.9) 249 0 R (subsection.15.1) 265 0 R (subsection.15.2) 277 0 R (subsection.15.3) 281 0 R (subsection.15.4) 285 0 R (subsection.17.1) 297 0 R (subsection.17.2) 301 0 R (subsection.17.3) 305 0 R (subsection.17.4) 309 0 R (subsection.18.1) 317 0 R (subsection.18.10) 353 0 R (subsection.18.2) 321 0 R (subsection.18.3) 325 0 R (subsection.18.4) 329 0 R (subsection.18.5) 333 0 R (subsection.18.6) 337 0 R (subsection.18.7) 341 0 R (subsection.18.8) 345 0 R (subsection.18.9) 349 0 R (subsection.4.1) 21 0 R (subsection.4.2) 25 0 R (subsection.4.3) 29 0 R (subsection.4.4) 33 0 R (subsection.4.5) 37 0 R (subsection.4.6) 41 0 R (subsection.4.7) 45 0 R (subsection.5.1) 53 0 R (subsection.5.2) 65 0 R ] /Limits [ (subsection.14.5) (subsection.5.2) ] >>
endobj
-1530 0 obj
-<< /Names [ (subsection.6.3) 101 0 R (subsection.6.4) 105 0 R (subsection.8.1) 117 0 R (subsection.8.2) 121 0 R (subsection.8.3) 125 0 R (subsubsection.15.1.1) 265 0 R (subsubsection.15.1.2) 269 0 R (subsubsection.5.1.1) 53 0 R (subsubsection.5.1.2) 57 0 R (subsubsection.5.3.1) 69 0 R (subsubsection.5.3.2) 73 0 R (subsubsection.5.3.3) 77 0 R (subsubsection.5.3.4) 81 0 R (subsubsection.5.3.5) 85 0 R (table.caption.1) 687 0 R (tabularnote.1) 694 0 R (tabularnote.2) 696 0 R (tabularnote.3) 704 0 R (tabularnote.4) 705 0 R ] /Limits [ (subsection.6.3) (tabularnote.4) ] >>
+1550 0 obj
+<< /Names [ (subsection.5.3) 69 0 R (subsection.6.1) 97 0 R (subsection.6.2) 101 0 R (subsection.6.3) 105 0 R (subsection.6.4) 109 0 R (subsection.8.1) 121 0 R (subsection.8.2) 125 0 R (subsection.8.3) 129 0 R (subsubsection.15.1.1) 269 0 R (subsubsection.15.1.2) 273 0 R (subsubsection.5.1.1) 57 0 R (subsubsection.5.1.2) 61 0 R (subsubsection.5.3.1) 73 0 R (subsubsection.5.3.2) 77 0 R (subsubsection.5.3.3) 81 0 R (subsubsection.5.3.4) 85 0 R (subsubsection.5.3.5) 89 0 R (table.caption.1) 695 0 R (tabularnote.1) 702 0 R (tabularnote.2) 704 0 R (tabularnote.3) 713 0 R (tabularnote.4) 714 0 R (tabularnote.5) 715 0 R (tabularnote.6) 716 0 R (tabularnote.7) 855 0 R (tabularnote.8) 856 0 R ] /Limits [ (subsection.5.3) (tabularnote.8) ] >>
endobj
-1531 0 obj
-<< /Kids [ 1525 0 R 1526 0 R 1527 0 R 1528 0 R 1529 0 R 1530 0 R ] /Limits [ (Doc-Start) (tabularnote.4) ] >>
+1551 0 obj
+<< /Kids [ 1545 0 R 1546 0 R 1547 0 R 1548 0 R 1549 0 R 1550 0 R ] /Limits [ (Doc-Start) (tabularnote.8) ] >>
endobj
-1532 0 obj
-<< /Dests 1531 0 R >>
+1552 0 obj
+<< /Dests 1551 0 R >>
endobj
-1533 0 obj
-<< /Type /Catalog /Pages 1523 0 R /Outlines 1524 0 R /Names 1532 0 R /PageMode/UseOutlines /OpenAction 356 0 R >>
+1553 0 obj
+<< /Type /Catalog /Pages 1543 0 R /Outlines 1544 0 R /Names 1552 0 R /PageMode/UseOutlines /OpenAction 360 0 R >>
endobj
-1534 0 obj
-<< /Author(\376\377\000F\000.\000\040\000P\000a\000n\000t\000i\000g\000n\000y)/Title(\376\377\000L\040\031\000e\000x\000t\000e\000n\000s\000i\000o\000n\000\040\000n\000i\000c\000e\000m\000a\000t\000r\000i\000x)/Subject(\376\377\000U\000n\000e\000\040\000e\000x\000t\000e\000n\000s\000i\000o\000n\000\040\000L\000a\000T\000e\000X)/Creator(LaTeX with hyperref)/Keywords() /Producer (LuaTeX-1.18.1) /CreationDate (D:20240423141121+02'00') /ModDate (D:20240423141121+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.18.1 (MiKTeX 24.3.31)) >>
+1554 0 obj
+<< /Author(\376\377\000F\000.\000\040\000P\000a\000n\000t\000i\000g\000n\000y)/Title(\376\377\000L\040\031\000e\000x\000t\000e\000n\000s\000i\000o\000n\000\040\000n\000i\000c\000e\000m\000a\000t\000r\000i\000x)/Subject(\376\377\000U\000n\000e\000\040\000e\000x\000t\000e\000n\000s\000i\000o\000n\000\040\000L\000a\000T\000e\000X)/Creator(LaTeX with hyperref)/Keywords() /Producer (LuaTeX-1.18.1) /CreationDate (D:20240822114151+02'00') /ModDate (D:20240822114151+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.18.1 (MiKTeX 24.4)) >>
endobj
xref
-0 1535
+0 1555
0000000000 65535 f
-0000577916 00000 n
-0000578072 00000 n
-0000578144 00000 n
+0000588871 00000 n
+0000589027 00000 n
+0000589099 00000 n
0000000020 00000 n
-0000037642 00000 n
-0000869220 00000 n
+0000037899 00000 n
+0000880288 00000 n
0000000065 00000 n
0000000289 00000 n
-0000037702 00000 n
-0000869133 00000 n
+0000037959 00000 n
+0000880201 00000 n
0000000334 00000 n
0000000552 00000 n
-0000043449 00000 n
-0000869044 00000 n
+0000043708 00000 n
+0000880112 00000 n
0000000598 00000 n
0000000710 00000 n
-0000050170 00000 n
-0000868918 00000 n
+0000051064 00000 n
+0000879986 00000 n
0000000756 00000 n
0000000832 00000 n
-0000050231 00000 n
-0000868844 00000 n
+0000051125 00000 n
+0000879912 00000 n
0000000883 00000 n
0000000975 00000 n
-0000063884 00000 n
-0000868757 00000 n
+0000064887 00000 n
+0000879825 00000 n
0000001026 00000 n
0000001170 00000 n
-0000063945 00000 n
-0000868670 00000 n
+0000064947 00000 n
+0000879738 00000 n
0000001221 00000 n
0000001363 00000 n
-0000064006 00000 n
-0000868583 00000 n
+0000065008 00000 n
+0000879651 00000 n
0000001414 00000 n
0000001543 00000 n
-0000070663 00000 n
-0000868496 00000 n
+0000071383 00000 n
+0000879564 00000 n
0000001594 00000 n
0000001867 00000 n
-0000075947 00000 n
-0000868422 00000 n
+0000076976 00000 n
+0000879477 00000 n
0000001918 00000 n
0000002181 00000 n
-0000081055 00000 n
-0000868296 00000 n
-0000002227 00000 n
-0000002442 00000 n
-0000081116 00000 n
-0000868185 00000 n
-0000002493 00000 n
-0000002814 00000 n
-0000081177 00000 n
-0000868111 00000 n
-0000002870 00000 n
-0000003004 00000 n
-0000086418 00000 n
-0000868037 00000 n
-0000003060 00000 n
-0000003187 00000 n
-0000086479 00000 n
-0000867950 00000 n
-0000003238 00000 n
-0000003464 00000 n
-0000092589 00000 n
-0000867839 00000 n
-0000003515 00000 n
-0000003799 00000 n
-0000092650 00000 n
-0000867765 00000 n
-0000003855 00000 n
-0000004023 00000 n
-0000100464 00000 n
-0000867678 00000 n
-0000004079 00000 n
-0000004332 00000 n
-0000100525 00000 n
-0000867591 00000 n
-0000004388 00000 n
-0000004513 00000 n
-0000106784 00000 n
-0000867504 00000 n
-0000004569 00000 n
-0000004706 00000 n
-0000106845 00000 n
-0000867430 00000 n
-0000004762 00000 n
-0000004977 00000 n
-0000123640 00000 n
-0000867302 00000 n
-0000005023 00000 n
-0000005318 00000 n
-0000123701 00000 n
-0000867228 00000 n
-0000005369 00000 n
-0000005518 00000 n
-0000123762 00000 n
-0000867140 00000 n
-0000005569 00000 n
-0000005838 00000 n
-0000153186 00000 n
-0000867049 00000 n
-0000005890 00000 n
-0000006081 00000 n
-0000158579 00000 n
-0000866971 00000 n
-0000006133 00000 n
-0000006320 00000 n
-0000158641 00000 n
-0000866878 00000 n
-0000006367 00000 n
-0000006510 00000 n
-0000165090 00000 n
-0000866745 00000 n
-0000006557 00000 n
-0000006710 00000 n
-0000165152 00000 n
-0000866666 00000 n
-0000006762 00000 n
-0000006887 00000 n
-0000170512 00000 n
-0000866573 00000 n
-0000006939 00000 n
-0000007044 00000 n
-0000175215 00000 n
-0000866494 00000 n
-0000007096 00000 n
-0000007267 00000 n
-0000183211 00000 n
-0000866400 00000 n
-0000007314 00000 n
-0000007536 00000 n
-0000196044 00000 n
-0000866267 00000 n
-0000007584 00000 n
-0000007798 00000 n
-0000206965 00000 n
-0000866188 00000 n
-0000007851 00000 n
-0000007988 00000 n
-0000216224 00000 n
-0000866095 00000 n
-0000008041 00000 n
-0000008268 00000 n
-0000239298 00000 n
-0000866002 00000 n
-0000008321 00000 n
-0000008693 00000 n
-0000246093 00000 n
-0000865909 00000 n
-0000008746 00000 n
-0000008968 00000 n
-0000246155 00000 n
-0000865816 00000 n
-0000009021 00000 n
-0000009270 00000 n
-0000254434 00000 n
-0000865737 00000 n
-0000009323 00000 n
-0000009550 00000 n
-0000260914 00000 n
-0000865643 00000 n
-0000009598 00000 n
-0000009888 00000 n
-0000279093 00000 n
-0000865510 00000 n
-0000009936 00000 n
-0000010036 00000 n
-0000279155 00000 n
-0000865431 00000 n
-0000010089 00000 n
-0000010319 00000 n
-0000279217 00000 n
-0000865338 00000 n
-0000010372 00000 n
-0000010745 00000 n
-0000297191 00000 n
-0000865245 00000 n
-0000010798 00000 n
-0000011147 00000 n
-0000302877 00000 n
-0000865166 00000 n
-0000011200 00000 n
-0000011475 00000 n
-0000302939 00000 n
-0000865033 00000 n
-0000011523 00000 n
-0000011791 00000 n
-0000303001 00000 n
-0000864954 00000 n
-0000011844 00000 n
-0000012005 00000 n
-0000307984 00000 n
-0000864861 00000 n
-0000012058 00000 n
-0000012227 00000 n
-0000308046 00000 n
-0000864768 00000 n
-0000012280 00000 n
-0000012423 00000 n
-0000317848 00000 n
-0000864675 00000 n
-0000012476 00000 n
-0000012702 00000 n
-0000327111 00000 n
-0000864596 00000 n
-0000012755 00000 n
-0000013042 00000 n
-0000327173 00000 n
-0000864462 00000 n
-0000013090 00000 n
-0000013235 00000 n
-0000327235 00000 n
-0000864383 00000 n
-0000013288 00000 n
-0000013436 00000 n
-0000336258 00000 n
-0000864290 00000 n
-0000013489 00000 n
-0000013639 00000 n
-0000336320 00000 n
-0000864197 00000 n
-0000013692 00000 n
-0000013957 00000 n
-0000336382 00000 n
-0000864104 00000 n
-0000014010 00000 n
-0000014286 00000 n
-0000342301 00000 n
-0000864011 00000 n
-0000014339 00000 n
-0000014472 00000 n
-0000342363 00000 n
-0000863918 00000 n
-0000014525 00000 n
-0000014627 00000 n
-0000348889 00000 n
-0000863825 00000 n
-0000014680 00000 n
-0000014851 00000 n
-0000348951 00000 n
-0000863732 00000 n
-0000014904 00000 n
-0000015041 00000 n
-0000354529 00000 n
-0000863639 00000 n
-0000015094 00000 n
-0000015247 00000 n
-0000354591 00000 n
-0000863546 00000 n
-0000015301 00000 n
-0000015524 00000 n
-0000354653 00000 n
-0000863467 00000 n
-0000015578 00000 n
-0000015771 00000 n
-0000360887 00000 n
-0000863334 00000 n
-0000015819 00000 n
-0000016035 00000 n
-0000360949 00000 n
-0000863216 00000 n
-0000016088 00000 n
-0000016368 00000 n
-0000366308 00000 n
-0000863137 00000 n
-0000016426 00000 n
-0000016564 00000 n
-0000366370 00000 n
-0000863058 00000 n
-0000016622 00000 n
-0000016793 00000 n
-0000366432 00000 n
-0000862965 00000 n
-0000016846 00000 n
-0000017111 00000 n
-0000381958 00000 n
-0000862872 00000 n
-0000017164 00000 n
-0000017424 00000 n
-0000387539 00000 n
-0000862793 00000 n
-0000017477 00000 n
-0000017767 00000 n
-0000391858 00000 n
-0000862699 00000 n
-0000017815 00000 n
-0000017981 00000 n
-0000405153 00000 n
-0000862566 00000 n
-0000018029 00000 n
-0000018161 00000 n
-0000405215 00000 n
-0000862487 00000 n
-0000018214 00000 n
-0000018331 00000 n
-0000405277 00000 n
-0000862394 00000 n
-0000018384 00000 n
-0000018510 00000 n
-0000411277 00000 n
-0000862301 00000 n
-0000018563 00000 n
-0000018740 00000 n
-0000411339 00000 n
-0000862222 00000 n
-0000018793 00000 n
-0000018905 00000 n
-0000419832 00000 n
-0000862088 00000 n
-0000018953 00000 n
-0000019022 00000 n
-0000419894 00000 n
-0000862009 00000 n
-0000019075 00000 n
-0000019390 00000 n
-0000423944 00000 n
-0000861916 00000 n
-0000019443 00000 n
-0000019608 00000 n
-0000424006 00000 n
-0000861823 00000 n
-0000019661 00000 n
-0000019814 00000 n
-0000427989 00000 n
-0000861730 00000 n
-0000019867 00000 n
-0000020005 00000 n
-0000448040 00000 n
-0000861637 00000 n
-0000020058 00000 n
-0000020369 00000 n
-0000458238 00000 n
-0000861544 00000 n
-0000020422 00000 n
-0000020545 00000 n
-0000458300 00000 n
-0000861451 00000 n
-0000020598 00000 n
-0000020748 00000 n
-0000477716 00000 n
-0000861358 00000 n
-0000020801 00000 n
-0000021050 00000 n
-0000483925 00000 n
-0000861265 00000 n
-0000021103 00000 n
-0000021378 00000 n
-0000494822 00000 n
-0000861186 00000 n
-0000021432 00000 n
-0000021582 00000 n
-0000519176 00000 n
-0000861106 00000 n
-0000021630 00000 n
-0000021684 00000 n
-0000031994 00000 n
-0000032160 00000 n
-0000032522 00000 n
-0000021736 00000 n
-0000032398 00000 n
+0000082482 00000 n
+0000879403 00000 n
+0000002232 00000 n
+0000002394 00000 n
+0000088664 00000 n
+0000879277 00000 n
+0000002440 00000 n
+0000002655 00000 n
+0000088725 00000 n
+0000879166 00000 n
+0000002706 00000 n
+0000003027 00000 n
+0000088785 00000 n
+0000879092 00000 n
+0000003083 00000 n
+0000003217 00000 n
+0000088846 00000 n
+0000879018 00000 n
+0000003273 00000 n
+0000003400 00000 n
+0000093944 00000 n
+0000878931 00000 n
+0000003451 00000 n
+0000003677 00000 n
+0000094005 00000 n
+0000878820 00000 n
+0000003728 00000 n
+0000004012 00000 n
+0000100606 00000 n
+0000878746 00000 n
+0000004068 00000 n
+0000004236 00000 n
+0000100667 00000 n
+0000878659 00000 n
+0000004292 00000 n
+0000004545 00000 n
+0000108408 00000 n
+0000878572 00000 n
+0000004601 00000 n
+0000004726 00000 n
+0000114679 00000 n
+0000878485 00000 n
+0000004782 00000 n
+0000004919 00000 n
+0000114740 00000 n
+0000878411 00000 n
+0000004975 00000 n
+0000005190 00000 n
+0000131392 00000 n
+0000878283 00000 n
+0000005236 00000 n
+0000005531 00000 n
+0000131453 00000 n
+0000878208 00000 n
+0000005582 00000 n
+0000005731 00000 n
+0000131514 00000 n
+0000878117 00000 n
+0000005783 00000 n
+0000006053 00000 n
+0000161186 00000 n
+0000878025 00000 n
+0000006105 00000 n
+0000006296 00000 n
+0000166492 00000 n
+0000877947 00000 n
+0000006348 00000 n
+0000006535 00000 n
+0000166554 00000 n
+0000877854 00000 n
+0000006582 00000 n
+0000006725 00000 n
+0000172992 00000 n
+0000877721 00000 n
+0000006772 00000 n
+0000006925 00000 n
+0000173054 00000 n
+0000877642 00000 n
+0000006977 00000 n
+0000007102 00000 n
+0000178420 00000 n
+0000877549 00000 n
+0000007154 00000 n
+0000007259 00000 n
+0000183122 00000 n
+0000877470 00000 n
+0000007311 00000 n
+0000007482 00000 n
+0000191119 00000 n
+0000877376 00000 n
+0000007529 00000 n
+0000007751 00000 n
+0000203958 00000 n
+0000877243 00000 n
+0000007799 00000 n
+0000008013 00000 n
+0000214879 00000 n
+0000877164 00000 n
+0000008066 00000 n
+0000008203 00000 n
+0000224156 00000 n
+0000877071 00000 n
+0000008256 00000 n
+0000008483 00000 n
+0000247244 00000 n
+0000876978 00000 n
+0000008536 00000 n
+0000008908 00000 n
+0000254036 00000 n
+0000876885 00000 n
+0000008961 00000 n
+0000009183 00000 n
+0000254098 00000 n
+0000876792 00000 n
+0000009236 00000 n
+0000009485 00000 n
+0000262381 00000 n
+0000876713 00000 n
+0000009538 00000 n
+0000009765 00000 n
+0000268855 00000 n
+0000876619 00000 n
+0000009813 00000 n
+0000010103 00000 n
+0000287034 00000 n
+0000876486 00000 n
+0000010151 00000 n
+0000010251 00000 n
+0000287096 00000 n
+0000876407 00000 n
+0000010304 00000 n
+0000010534 00000 n
+0000287158 00000 n
+0000876314 00000 n
+0000010587 00000 n
+0000010960 00000 n
+0000305614 00000 n
+0000876221 00000 n
+0000011013 00000 n
+0000011362 00000 n
+0000311919 00000 n
+0000876142 00000 n
+0000011415 00000 n
+0000011690 00000 n
+0000317142 00000 n
+0000876009 00000 n
+0000011738 00000 n
+0000012006 00000 n
+0000317204 00000 n
+0000875930 00000 n
+0000012059 00000 n
+0000012220 00000 n
+0000317266 00000 n
+0000875837 00000 n
+0000012273 00000 n
+0000012442 00000 n
+0000317328 00000 n
+0000875744 00000 n
+0000012495 00000 n
+0000012638 00000 n
+0000327156 00000 n
+0000875651 00000 n
+0000012691 00000 n
+0000012917 00000 n
+0000336406 00000 n
+0000875572 00000 n
+0000012970 00000 n
+0000013257 00000 n
+0000336468 00000 n
+0000875438 00000 n
+0000013305 00000 n
+0000013450 00000 n
+0000336530 00000 n
+0000875359 00000 n
+0000013503 00000 n
+0000013651 00000 n
+0000345549 00000 n
+0000875266 00000 n
+0000013704 00000 n
+0000013854 00000 n
+0000345611 00000 n
+0000875173 00000 n
+0000013907 00000 n
+0000014172 00000 n
+0000345673 00000 n
+0000875080 00000 n
+0000014225 00000 n
+0000014501 00000 n
+0000351589 00000 n
+0000874987 00000 n
+0000014554 00000 n
+0000014687 00000 n
+0000351651 00000 n
+0000874894 00000 n
+0000014740 00000 n
+0000014842 00000 n
+0000358176 00000 n
+0000874801 00000 n
+0000014895 00000 n
+0000015066 00000 n
+0000358238 00000 n
+0000874708 00000 n
+0000015119 00000 n
+0000015256 00000 n
+0000363732 00000 n
+0000874615 00000 n
+0000015309 00000 n
+0000015462 00000 n
+0000363793 00000 n
+0000874522 00000 n
+0000015516 00000 n
+0000015739 00000 n
+0000363855 00000 n
+0000874443 00000 n
+0000015793 00000 n
+0000015986 00000 n
+0000370071 00000 n
+0000874310 00000 n
+0000016034 00000 n
+0000016250 00000 n
+0000370133 00000 n
+0000874192 00000 n
+0000016303 00000 n
+0000016583 00000 n
+0000375500 00000 n
+0000874113 00000 n
+0000016641 00000 n
+0000016779 00000 n
+0000375562 00000 n
+0000874034 00000 n
+0000016837 00000 n
+0000017008 00000 n
+0000375624 00000 n
+0000873941 00000 n
+0000017061 00000 n
+0000017326 00000 n
+0000389914 00000 n
+0000873848 00000 n
+0000017379 00000 n
+0000017639 00000 n
+0000396991 00000 n
+0000873769 00000 n
+0000017692 00000 n
+0000017982 00000 n
+0000401325 00000 n
+0000873675 00000 n
+0000018030 00000 n
+0000018196 00000 n
+0000414620 00000 n
+0000873542 00000 n
+0000018244 00000 n
+0000018376 00000 n
+0000414682 00000 n
+0000873463 00000 n
+0000018429 00000 n
+0000018546 00000 n
+0000414744 00000 n
+0000873370 00000 n
+0000018599 00000 n
+0000018725 00000 n
+0000420428 00000 n
+0000873277 00000 n
+0000018778 00000 n
+0000018955 00000 n
+0000420490 00000 n
+0000873198 00000 n
+0000019008 00000 n
+0000019120 00000 n
+0000428694 00000 n
+0000873064 00000 n
+0000019168 00000 n
+0000019237 00000 n
+0000428756 00000 n
+0000872985 00000 n
+0000019290 00000 n
+0000019605 00000 n
+0000433282 00000 n
+0000872892 00000 n
+0000019658 00000 n
+0000019823 00000 n
+0000433344 00000 n
+0000872799 00000 n
+0000019876 00000 n
+0000020029 00000 n
+0000437722 00000 n
+0000872706 00000 n
+0000020082 00000 n
+0000020220 00000 n
+0000457770 00000 n
+0000872613 00000 n
+0000020273 00000 n
+0000020584 00000 n
+0000468109 00000 n
+0000872520 00000 n
+0000020637 00000 n
+0000020760 00000 n
+0000468171 00000 n
+0000872427 00000 n
+0000020813 00000 n
+0000020963 00000 n
+0000482520 00000 n
+0000872334 00000 n
+0000021016 00000 n
+0000021265 00000 n
+0000493621 00000 n
+0000872241 00000 n
+0000021318 00000 n
+0000021593 00000 n
+0000504523 00000 n
+0000872162 00000 n
+0000021647 00000 n
+0000021797 00000 n
+0000528786 00000 n
+0000872082 00000 n
+0000021845 00000 n
+0000021899 00000 n
+0000032294 00000 n
0000032460 00000 n
-0000729539 00000 n
-0000725687 00000 n
-0000723234 00000 n
-0000717914 00000 n
-0000714568 00000 n
-0000712125 00000 n
-0000707558 00000 n
-0000704851 00000 n
-0000857852 00000 n
-0000858580 00000 n
-0000859016 00000 n
-0000858435 00000 n
-0000858144 00000 n
-0000859159 00000 n
-0000694127 00000 n
-0000858871 00000 n
-0000682391 00000 n
-0000677776 00000 n
-0000667641 00000 n
-0000659653 00000 n
-0000655199 00000 n
-0000649425 00000 n
-0000646074 00000 n
-0000636795 00000 n
-0000634889 00000 n
-0000624951 00000 n
-0000621489 00000 n
-0000859733 00000 n
-0000032131 00000 n
-0000037424 00000 n
-0000037270 00000 n
-0000037762 00000 n
-0000037096 00000 n
-0000032984 00000 n
-0000037580 00000 n
-0000612795 00000 n
-0000603392 00000 n
-0000859302 00000 n
-0000037233 00000 n
-0000043765 00000 n
-0000043266 00000 n
-0000038068 00000 n
-0000043387 00000 n
-0000857998 00000 n
-0000043510 00000 n
-0000043574 00000 n
-0000043638 00000 n
-0000043702 00000 n
-0000049793 00000 n
-0000049951 00000 n
-0000057364 00000 n
-0000057518 00000 n
-0000050292 00000 n
-0000049619 00000 n
-0000044058 00000 n
-0000050108 00000 n
-0000858290 00000 n
-0000049756 00000 n
-0000055946 00000 n
-0000056106 00000 n
-0000056266 00000 n
-0000056421 00000 n
-0000056574 00000 n
-0000056728 00000 n
-0000056887 00000 n
-0000057047 00000 n
-0000057205 00000 n
-0000057734 00000 n
-0000055700 00000 n
-0000050585 00000 n
-0000057672 00000 n
-0000599902 00000 n
-0000055837 00000 n
-0000062879 00000 n
-0000063036 00000 n
-0000063193 00000 n
-0000063352 00000 n
+0000032781 00000 n
+0000021951 00000 n
+0000032657 00000 n
+0000032719 00000 n
+0000740498 00000 n
+0000736646 00000 n
+0000734193 00000 n
+0000729147 00000 n
+0000725801 00000 n
+0000723358 00000 n
+0000718791 00000 n
+0000716084 00000 n
+0000868811 00000 n
+0000869539 00000 n
+0000869975 00000 n
+0000869394 00000 n
+0000869103 00000 n
+0000870118 00000 n
+0000705545 00000 n
+0000869830 00000 n
+0000693590 00000 n
+0000688975 00000 n
+0000678840 00000 n
+0000670852 00000 n
+0000666398 00000 n
+0000660624 00000 n
+0000657273 00000 n
+0000647994 00000 n
+0000646088 00000 n
+0000636150 00000 n
+0000632688 00000 n
+0000870692 00000 n
+0000032431 00000 n
+0000037681 00000 n
+0000037527 00000 n
+0000038019 00000 n
+0000037353 00000 n
+0000033243 00000 n
+0000037837 00000 n
+0000623994 00000 n
+0000614347 00000 n
+0000870261 00000 n
+0000037490 00000 n
+0000044024 00000 n
+0000043525 00000 n
+0000038325 00000 n
+0000043646 00000 n
+0000868957 00000 n
+0000043769 00000 n
+0000043833 00000 n
+0000043897 00000 n
+0000043961 00000 n
+0000050387 00000 n
+0000050544 00000 n
+0000050700 00000 n
+0000050851 00000 n
+0000051186 00000 n
+0000050197 00000 n
+0000044317 00000 n
+0000051002 00000 n
+0000869249 00000 n
+0000050334 00000 n
+0000056443 00000 n
+0000056603 00000 n
+0000056763 00000 n
+0000056918 00000 n
+0000057071 00000 n
+0000057225 00000 n
+0000057383 00000 n
+0000057542 00000 n
+0000057700 00000 n
+0000057921 00000 n
+0000056213 00000 n
+0000051479 00000 n
+0000057859 00000 n
+0000610857 00000 n
+0000056350 00000 n
+0000063721 00000 n
+0000063879 00000 n
+0000064037 00000 n
+0000064196 00000 n
+0000064351 00000 n
+0000064509 00000 n
+0000064668 00000 n
+0000065069 00000 n
0000063507 00000 n
-0000063664 00000 n
-0000070444 00000 n
-0000064067 00000 n
-0000062673 00000 n
-0000058001 00000 n
-0000063822 00000 n
-0000062810 00000 n
-0000070724 00000 n
-0000070278 00000 n
-0000064243 00000 n
-0000070601 00000 n
-0000070415 00000 n
-0000076008 00000 n
-0000075764 00000 n
-0000070965 00000 n
-0000075885 00000 n
-0000080522 00000 n
-0000080676 00000 n
-0000080839 00000 n
-0000081238 00000 n
-0000080340 00000 n
-0000076210 00000 n
-0000080993 00000 n
-0000080477 00000 n
-0000086540 00000 n
-0000086235 00000 n
-0000081427 00000 n
-0000086356 00000 n
-0000594516 00000 n
-0000091739 00000 n
-0000091892 00000 n
-0000092046 00000 n
-0000092210 00000 n
-0000092364 00000 n
-0000092711 00000 n
-0000091541 00000 n
-0000086755 00000 n
-0000092527 00000 n
-0000858725 00000 n
-0000859886 00000 n
-0000091678 00000 n
-0000099451 00000 n
-0000099611 00000 n
-0000099771 00000 n
-0000099931 00000 n
-0000100090 00000 n
-0000100246 00000 n
-0000100586 00000 n
-0000099245 00000 n
-0000093004 00000 n
-0000100402 00000 n
-0000099382 00000 n
-0000106406 00000 n
-0000106563 00000 n
-0000106906 00000 n
-0000106232 00000 n
-0000100853 00000 n
-0000106722 00000 n
-0000106369 00000 n
-0000111692 00000 n
-0000111509 00000 n
-0000107095 00000 n
-0000111630 00000 n
-0000118090 00000 n
-0000118307 00000 n
-0000117924 00000 n
-0000111946 00000 n
-0000118245 00000 n
-0000118061 00000 n
-0000129988 00000 n
-0000123823 00000 n
-0000123457 00000 n
-0000118535 00000 n
-0000123578 00000 n
-0000129358 00000 n
-0000129520 00000 n
-0000129680 00000 n
-0000129835 00000 n
-0000135488 00000 n
-0000130207 00000 n
-0000129160 00000 n
-0000124090 00000 n
-0000130145 00000 n
-0000129297 00000 n
-0000135648 00000 n
-0000135863 00000 n
-0000135314 00000 n
-0000130474 00000 n
-0000135801 00000 n
-0000135451 00000 n
-0000141355 00000 n
-0000141576 00000 n
-0000141189 00000 n
-0000136091 00000 n
-0000141514 00000 n
-0000141326 00000 n
-0000147254 00000 n
-0000147470 00000 n
-0000147088 00000 n
-0000141765 00000 n
-0000147408 00000 n
-0000147225 00000 n
-0000152972 00000 n
-0000153248 00000 n
-0000152806 00000 n
-0000147646 00000 n
-0000153124 00000 n
-0000860039 00000 n
-0000152943 00000 n
-0000158363 00000 n
-0000158703 00000 n
-0000158197 00000 n
-0000153528 00000 n
-0000158517 00000 n
-0000158334 00000 n
-0000164714 00000 n
-0000164874 00000 n
-0000165214 00000 n
-0000164540 00000 n
-0000158931 00000 n
-0000165028 00000 n
-0000164677 00000 n
-0000170296 00000 n
-0000170574 00000 n
-0000170130 00000 n
-0000165468 00000 n
-0000170450 00000 n
-0000170267 00000 n
-0000174672 00000 n
-0000174836 00000 n
-0000174994 00000 n
-0000175277 00000 n
-0000174490 00000 n
-0000170854 00000 n
-0000175153 00000 n
-0000174627 00000 n
-0000182677 00000 n
-0000182992 00000 n
-0000182832 00000 n
-0000183273 00000 n
-0000182495 00000 n
-0000175479 00000 n
-0000183149 00000 n
-0000182632 00000 n
-0000195189 00000 n
-0000195352 00000 n
-0000195506 00000 n
-0000195666 00000 n
-0000195825 00000 n
-0000196106 00000 n
-0000194991 00000 n
-0000183540 00000 n
-0000195982 00000 n
-0000590410 00000 n
-0000195128 00000 n
-0000206750 00000 n
-0000207027 00000 n
-0000206584 00000 n
-0000196399 00000 n
-0000206903 00000 n
-0000206721 00000 n
-0000216286 00000 n
-0000216041 00000 n
-0000207281 00000 n
-0000216162 00000 n
-0000245399 00000 n
-0000239358 00000 n
-0000239115 00000 n
-0000216553 00000 n
-0000239236 00000 n
-0000245559 00000 n
-0000245719 00000 n
-0000245879 00000 n
-0000246217 00000 n
-0000245209 00000 n
-0000239638 00000 n
-0000246031 00000 n
-0000860192 00000 n
-0000245346 00000 n
-0000253994 00000 n
-0000254214 00000 n
-0000254496 00000 n
-0000253820 00000 n
-0000246471 00000 n
-0000254372 00000 n
-0000587875 00000 n
-0000253957 00000 n
-0000260057 00000 n
-0000260217 00000 n
-0000260378 00000 n
-0000260532 00000 n
-0000260692 00000 n
-0000278398 00000 n
-0000260976 00000 n
-0000259859 00000 n
-0000254815 00000 n
-0000260852 00000 n
-0000859590 00000 n
-0000259996 00000 n
-0000278556 00000 n
-0000278711 00000 n
-0000278871 00000 n
-0000279279 00000 n
-0000278208 00000 n
-0000261282 00000 n
-0000279031 00000 n
-0000278345 00000 n
-0000285469 00000 n
-0000285624 00000 n
-0000285841 00000 n
-0000285295 00000 n
-0000279533 00000 n
-0000285779 00000 n
-0000285432 00000 n
-0000290993 00000 n
-0000291153 00000 n
-0000291311 00000 n
-0000291533 00000 n
-0000290811 00000 n
-0000286095 00000 n
-0000291471 00000 n
-0000290948 00000 n
-0000296933 00000 n
-0000297253 00000 n
-0000296767 00000 n
-0000291735 00000 n
-0000297129 00000 n
-0000296904 00000 n
-0000302497 00000 n
-0000302651 00000 n
-0000306989 00000 n
-0000307142 00000 n
-0000303063 00000 n
-0000302323 00000 n
-0000297559 00000 n
-0000302815 00000 n
-0000302460 00000 n
-0000307296 00000 n
-0000307456 00000 n
-0000307616 00000 n
-0000307770 00000 n
-0000308108 00000 n
-0000306783 00000 n
-0000303291 00000 n
-0000307922 00000 n
-0000306920 00000 n
-0000317402 00000 n
-0000313163 00000 n
-0000313323 00000 n
-0000313800 00000 n
-0000312989 00000 n
-0000308271 00000 n
-0000313483 00000 n
-0000313545 00000 n
-0000584812 00000 n
-0000313609 00000 n
-0000313673 00000 n
-0000313737 00000 n
-0000313126 00000 n
-0000317910 00000 n
-0000317219 00000 n
-0000314041 00000 n
-0000317340 00000 n
-0000317464 00000 n
-0000317528 00000 n
-0000317592 00000 n
-0000317656 00000 n
-0000317720 00000 n
-0000317784 00000 n
-0000860345 00000 n
-0000321880 00000 n
-0000322040 00000 n
-0000322261 00000 n
-0000321706 00000 n
-0000318138 00000 n
+0000058188 00000 n
+0000064825 00000 n
+0000063644 00000 n
+0000071444 00000 n
+0000071200 00000 n
+0000065284 00000 n
+0000071321 00000 n
+0000077037 00000 n
+0000076793 00000 n
+0000071685 00000 n
+0000076914 00000 n
+0000082543 00000 n
+0000082299 00000 n
+0000077252 00000 n
+0000082420 00000 n
+0000088131 00000 n
+0000088285 00000 n
+0000088448 00000 n
+0000088907 00000 n
+0000087949 00000 n
+0000082784 00000 n
+0000088602 00000 n
+0000088086 00000 n
+0000093729 00000 n
+0000099909 00000 n
+0000094066 00000 n
+0000093563 00000 n
+0000089109 00000 n
+0000093882 00000 n
+0000605471 00000 n
+0000870845 00000 n
+0000093700 00000 n
+0000100063 00000 n
+0000100227 00000 n
+0000100381 00000 n
+0000100728 00000 n
+0000099719 00000 n
+0000094307 00000 n
+0000100544 00000 n
+0000869684 00000 n
+0000099856 00000 n
+0000107396 00000 n
+0000107556 00000 n
+0000107716 00000 n
+0000107876 00000 n
+0000108034 00000 n
+0000108191 00000 n
+0000108469 00000 n
+0000107190 00000 n
+0000101008 00000 n
+0000108346 00000 n
+0000107327 00000 n
+0000114299 00000 n
+0000114457 00000 n
+0000114799 00000 n
+0000114125 00000 n
+0000108723 00000 n
+0000114617 00000 n
+0000114262 00000 n
+0000119454 00000 n
+0000119271 00000 n
+0000115040 00000 n
+0000119392 00000 n
+0000125878 00000 n
+0000126095 00000 n
+0000125712 00000 n
+0000119656 00000 n
+0000126033 00000 n
+0000125849 00000 n
+0000137741 00000 n
+0000131576 00000 n
+0000131209 00000 n
+0000126323 00000 n
+0000131330 00000 n
+0000137113 00000 n
+0000137276 00000 n
+0000137435 00000 n
+0000137589 00000 n
+0000143245 00000 n
+0000137959 00000 n
+0000136915 00000 n
+0000131830 00000 n
+0000137897 00000 n
+0000137052 00000 n
+0000143405 00000 n
+0000143620 00000 n
+0000143071 00000 n
+0000138226 00000 n
+0000143558 00000 n
+0000143208 00000 n
+0000149124 00000 n
+0000149345 00000 n
+0000148958 00000 n
+0000143848 00000 n
+0000149283 00000 n
+0000149095 00000 n
+0000155059 00000 n
+0000155275 00000 n
+0000154893 00000 n
+0000149534 00000 n
+0000155213 00000 n
+0000870998 00000 n
+0000155030 00000 n
+0000160971 00000 n
+0000161248 00000 n
+0000160805 00000 n
+0000155451 00000 n
+0000161124 00000 n
+0000160942 00000 n
+0000166276 00000 n
+0000166616 00000 n
+0000166110 00000 n
+0000161528 00000 n
+0000166430 00000 n
+0000166247 00000 n
+0000172616 00000 n
+0000172776 00000 n
+0000173116 00000 n
+0000172442 00000 n
+0000166831 00000 n
+0000172930 00000 n
+0000172579 00000 n
+0000178204 00000 n
+0000178482 00000 n
+0000178038 00000 n
+0000173370 00000 n
+0000178358 00000 n
+0000178175 00000 n
+0000182579 00000 n
+0000182743 00000 n
+0000182901 00000 n
+0000183184 00000 n
+0000182397 00000 n
+0000178762 00000 n
+0000183060 00000 n
+0000182534 00000 n
+0000190585 00000 n
+0000190900 00000 n
+0000190740 00000 n
+0000191181 00000 n
+0000190403 00000 n
+0000183386 00000 n
+0000191057 00000 n
+0000190540 00000 n
+0000203103 00000 n
+0000203266 00000 n
+0000203420 00000 n
+0000203580 00000 n
+0000203739 00000 n
+0000204020 00000 n
+0000202905 00000 n
+0000191448 00000 n
+0000203896 00000 n
+0000601365 00000 n
+0000203042 00000 n
+0000214664 00000 n
+0000214941 00000 n
+0000214498 00000 n
+0000204313 00000 n
+0000214817 00000 n
+0000214635 00000 n
+0000224218 00000 n
+0000223973 00000 n
+0000215195 00000 n
+0000224094 00000 n
+0000253342 00000 n
+0000247304 00000 n
+0000247061 00000 n
+0000224498 00000 n
+0000247182 00000 n
+0000871151 00000 n
+0000253502 00000 n
+0000253662 00000 n
+0000253822 00000 n
+0000254160 00000 n
+0000253152 00000 n
+0000247584 00000 n
+0000253974 00000 n
+0000253289 00000 n
+0000261941 00000 n
+0000262161 00000 n
+0000262443 00000 n
+0000261767 00000 n
+0000254414 00000 n
+0000262319 00000 n
+0000598830 00000 n
+0000261904 00000 n
+0000267998 00000 n
+0000268158 00000 n
+0000268319 00000 n
+0000268473 00000 n
+0000268633 00000 n
+0000286339 00000 n
+0000268917 00000 n
+0000267800 00000 n
+0000262762 00000 n
+0000268793 00000 n
+0000870549 00000 n
+0000267937 00000 n
+0000286497 00000 n
+0000286652 00000 n
+0000286812 00000 n
+0000287220 00000 n
+0000286149 00000 n
+0000269223 00000 n
+0000286972 00000 n
+0000286286 00000 n
+0000293552 00000 n
+0000293707 00000 n
+0000293924 00000 n
+0000293378 00000 n
+0000287474 00000 n
+0000293862 00000 n
+0000293515 00000 n
+0000299268 00000 n
+0000299427 00000 n
+0000299585 00000 n
+0000299807 00000 n
+0000299086 00000 n
+0000294178 00000 n
+0000299745 00000 n
+0000299223 00000 n
+0000305357 00000 n
+0000305676 00000 n
+0000305191 00000 n
+0000300022 00000 n
+0000305552 00000 n
+0000305328 00000 n
+0000311539 00000 n
+0000311693 00000 n
+0000311981 00000 n
+0000311365 00000 n
+0000305982 00000 n
+0000311857 00000 n
+0000311502 00000 n
+0000316149 00000 n
+0000316302 00000 n
+0000316456 00000 n
+0000316615 00000 n
+0000316774 00000 n
+0000316928 00000 n
+0000317390 00000 n
+0000315943 00000 n
+0000312196 00000 n
+0000317080 00000 n
+0000316080 00000 n
+0000326584 00000 n
+0000322373 00000 n
+0000322533 00000 n
+0000323010 00000 n
0000322199 00000 n
-0000321843 00000 n
-0000326242 00000 n
+0000317553 00000 n
+0000322693 00000 n
+0000322755 00000 n
+0000595767 00000 n
+0000322819 00000 n
+0000322883 00000 n
+0000322947 00000 n
+0000871304 00000 n
+0000322336 00000 n
+0000327218 00000 n
0000326401 00000 n
-0000326561 00000 n
-0000326721 00000 n
-0000326885 00000 n
-0000327297 00000 n
-0000326044 00000 n
-0000322437 00000 n
-0000327049 00000 n
-0000326181 00000 n
-0000336444 00000 n
-0000336075 00000 n
-0000327512 00000 n
-0000336196 00000 n
-0000342088 00000 n
-0000342425 00000 n
-0000341922 00000 n
-0000336724 00000 n
-0000342239 00000 n
-0000859447 00000 n
-0000342059 00000 n
-0000348054 00000 n
-0000348207 00000 n
-0000348361 00000 n
-0000348519 00000 n
-0000348673 00000 n
-0000349013 00000 n
-0000347856 00000 n
-0000342744 00000 n
-0000348827 00000 n
-0000857706 00000 n
-0000347993 00000 n
-0000353964 00000 n
-0000354123 00000 n
-0000354277 00000 n
-0000354715 00000 n
-0000353782 00000 n
-0000349293 00000 n
-0000354467 00000 n
-0000353919 00000 n
-0000360211 00000 n
-0000360363 00000 n
-0000360523 00000 n
-0000360674 00000 n
-0000361011 00000 n
-0000360021 00000 n
-0000354969 00000 n
-0000360825 00000 n
-0000360158 00000 n
-0000365770 00000 n
-0000365928 00000 n
-0000366087 00000 n
-0000366492 00000 n
-0000365588 00000 n
-0000361304 00000 n
-0000366246 00000 n
-0000365725 00000 n
-0000373885 00000 n
-0000381587 00000 n
-0000374099 00000 n
-0000373719 00000 n
-0000366720 00000 n
-0000374037 00000 n
-0000373856 00000 n
-0000381744 00000 n
-0000382020 00000 n
-0000381413 00000 n
-0000374353 00000 n
-0000381896 00000 n
-0000582336 00000 n
-0000860498 00000 n
-0000381550 00000 n
-0000387317 00000 n
-0000387601 00000 n
-0000387151 00000 n
-0000382287 00000 n
-0000387477 00000 n
-0000387288 00000 n
-0000391636 00000 n
-0000391920 00000 n
-0000391470 00000 n
-0000387829 00000 n
-0000391796 00000 n
-0000391607 00000 n
-0000404928 00000 n
-0000410663 00000 n
-0000410821 00000 n
-0000405339 00000 n
-0000404762 00000 n
-0000392148 00000 n
-0000405091 00000 n
-0000404899 00000 n
-0000410980 00000 n
-0000410499 00000 n
-0000419140 00000 n
-0000419304 00000 n
-0000411401 00000 n
-0000410309 00000 n
-0000405580 00000 n
-0000411215 00000 n
-0000579851 00000 n
-0000410446 00000 n
-0000411655 00000 n
-0000411973 00000 n
-0000412299 00000 n
-0000412503 00000 n
-0000412981 00000 n
-0000413325 00000 n
-0000413529 00000 n
-0000419468 00000 n
-0000419619 00000 n
-0000419956 00000 n
-0000418950 00000 n
-0000414171 00000 n
-0000419770 00000 n
-0000419087 00000 n
-0000423572 00000 n
-0000423727 00000 n
-0000424068 00000 n
-0000423398 00000 n
-0000420238 00000 n
-0000423882 00000 n
-0000423535 00000 n
-0000428050 00000 n
-0000427679 00000 n
-0000424270 00000 n
-0000427800 00000 n
-0000427862 00000 n
-0000427926 00000 n
-0000448102 00000 n
-0000447857 00000 n
-0000428239 00000 n
-0000447978 00000 n
-0000454613 00000 n
-0000454430 00000 n
-0000448369 00000 n
-0000454551 00000 n
-0000458362 00000 n
-0000458055 00000 n
-0000454867 00000 n
-0000458176 00000 n
-0000860651 00000 n
-0000462149 00000 n
-0000461966 00000 n
-0000458564 00000 n
-0000462087 00000 n
-0000467690 00000 n
-0000467507 00000 n
-0000462390 00000 n
-0000467628 00000 n
-0000472089 00000 n
-0000471906 00000 n
-0000467918 00000 n
-0000472027 00000 n
-0000477493 00000 n
-0000477778 00000 n
-0000477327 00000 n
-0000472317 00000 n
-0000477654 00000 n
-0000477464 00000 n
-0000483987 00000 n
-0000483742 00000 n
-0000478045 00000 n
-0000483863 00000 n
-0000494884 00000 n
-0000494639 00000 n
-0000484189 00000 n
-0000494760 00000 n
-0000497488 00000 n
-0000497305 00000 n
-0000495112 00000 n
-0000497426 00000 n
-0000502019 00000 n
-0000502171 00000 n
-0000502323 00000 n
-0000502475 00000 n
-0000502627 00000 n
-0000502779 00000 n
-0000502931 00000 n
-0000503082 00000 n
-0000503234 00000 n
-0000503385 00000 n
-0000503537 00000 n
-0000503686 00000 n
-0000503837 00000 n
-0000503988 00000 n
-0000504137 00000 n
-0000504286 00000 n
-0000504435 00000 n
+0000323251 00000 n
+0000326522 00000 n
+0000326646 00000 n
+0000326709 00000 n
+0000326772 00000 n
+0000326836 00000 n
+0000326900 00000 n
+0000326964 00000 n
+0000327028 00000 n
+0000327092 00000 n
+0000331173 00000 n
+0000331333 00000 n
+0000331555 00000 n
+0000330999 00000 n
+0000327446 00000 n
+0000331493 00000 n
+0000331136 00000 n
+0000335537 00000 n
+0000335696 00000 n
+0000335856 00000 n
+0000336016 00000 n
+0000336180 00000 n
+0000336592 00000 n
+0000335339 00000 n
+0000331731 00000 n
+0000336344 00000 n
+0000335476 00000 n
+0000345735 00000 n
+0000345366 00000 n
+0000336807 00000 n
+0000345487 00000 n
+0000351376 00000 n
+0000351713 00000 n
+0000351210 00000 n
+0000346015 00000 n
+0000351527 00000 n
+0000870406 00000 n
+0000351347 00000 n
+0000357341 00000 n
+0000357494 00000 n
+0000357648 00000 n
+0000357806 00000 n
+0000357960 00000 n
+0000358300 00000 n
+0000357143 00000 n
+0000352032 00000 n
+0000358114 00000 n
+0000868665 00000 n
+0000357280 00000 n
+0000363167 00000 n
+0000363326 00000 n
+0000363480 00000 n
+0000363917 00000 n
+0000362985 00000 n
+0000358580 00000 n
+0000363670 00000 n
+0000363122 00000 n
+0000369395 00000 n
+0000369547 00000 n
+0000369707 00000 n
+0000369858 00000 n
+0000370195 00000 n
+0000369205 00000 n
+0000364158 00000 n
+0000370009 00000 n
+0000369342 00000 n
+0000374962 00000 n
+0000375120 00000 n
+0000375279 00000 n
+0000375684 00000 n
+0000374780 00000 n
+0000370501 00000 n
+0000375438 00000 n
+0000374917 00000 n
+0000383086 00000 n
+0000389543 00000 n
+0000383300 00000 n
+0000382920 00000 n
+0000375912 00000 n
+0000383238 00000 n
+0000871457 00000 n
+0000383057 00000 n
+0000389700 00000 n
+0000389976 00000 n
+0000389369 00000 n
+0000383554 00000 n
+0000389852 00000 n
+0000389506 00000 n
+0000396769 00000 n
+0000397053 00000 n
+0000396603 00000 n
+0000390243 00000 n
+0000396929 00000 n
+0000593291 00000 n
+0000396740 00000 n
+0000401103 00000 n
+0000401387 00000 n
+0000400937 00000 n
+0000397294 00000 n
+0000401263 00000 n
+0000401074 00000 n
+0000414395 00000 n
+0000419813 00000 n
+0000419971 00000 n
+0000414806 00000 n
+0000414229 00000 n
+0000401615 00000 n
+0000414558 00000 n
+0000414366 00000 n
+0000420130 00000 n
+0000427836 00000 n
+0000428000 00000 n
+0000428164 00000 n
+0000420552 00000 n
+0000419631 00000 n
+0000415047 00000 n
+0000420366 00000 n
+0000590806 00000 n
+0000419768 00000 n
+0000420806 00000 n
+0000421124 00000 n
+0000421450 00000 n
+0000421654 00000 n
+0000422132 00000 n
+0000422476 00000 n
+0000422680 00000 n
+0000428328 00000 n
+0000428480 00000 n
+0000428818 00000 n
+0000427638 00000 n
+0000423322 00000 n
+0000428632 00000 n
+0000427775 00000 n
+0000432910 00000 n
+0000433065 00000 n
+0000433406 00000 n
+0000432736 00000 n
+0000429100 00000 n
+0000433220 00000 n
+0000432873 00000 n
+0000437784 00000 n
+0000437284 00000 n
+0000433608 00000 n
+0000437405 00000 n
+0000437467 00000 n
+0000437531 00000 n
+0000437594 00000 n
+0000437658 00000 n
+0000457832 00000 n
+0000457587 00000 n
+0000437999 00000 n
+0000457708 00000 n
+0000464453 00000 n
+0000464270 00000 n
+0000458099 00000 n
+0000464391 00000 n
+0000871610 00000 n
+0000468233 00000 n
+0000467926 00000 n
+0000464720 00000 n
+0000468047 00000 n
+0000472032 00000 n
+0000471849 00000 n
+0000468435 00000 n
+0000471970 00000 n
+0000477678 00000 n
+0000477495 00000 n
+0000472273 00000 n
+0000477616 00000 n
+0000482582 00000 n
+0000482337 00000 n
+0000477906 00000 n
+0000482458 00000 n
+0000487391 00000 n
+0000487615 00000 n
+0000487225 00000 n
+0000482862 00000 n
+0000487553 00000 n
+0000487362 00000 n
+0000493683 00000 n
+0000493438 00000 n
+0000487869 00000 n
+0000493559 00000 n
0000504585 00000 n
-0000504737 00000 n
-0000504888 00000 n
-0000505039 00000 n
-0000505191 00000 n
-0000505343 00000 n
-0000505493 00000 n
-0000505645 00000 n
-0000505795 00000 n
-0000505947 00000 n
-0000506095 00000 n
-0000506244 00000 n
-0000506395 00000 n
-0000506547 00000 n
-0000506697 00000 n
-0000506847 00000 n
-0000506998 00000 n
-0000507150 00000 n
-0000507301 00000 n
-0000507453 00000 n
-0000507605 00000 n
-0000507756 00000 n
-0000507907 00000 n
-0000508059 00000 n
-0000508211 00000 n
-0000508363 00000 n
-0000508514 00000 n
-0000508666 00000 n
-0000508818 00000 n
-0000508969 00000 n
-0000509121 00000 n
-0000509273 00000 n
-0000509424 00000 n
-0000509576 00000 n
-0000509728 00000 n
-0000509880 00000 n
-0000510031 00000 n
-0000510183 00000 n
-0000510335 00000 n
-0000510485 00000 n
-0000510634 00000 n
-0000510784 00000 n
-0000510934 00000 n
-0000511084 00000 n
-0000511234 00000 n
-0000511386 00000 n
-0000511537 00000 n
-0000511689 00000 n
-0000511841 00000 n
-0000511993 00000 n
-0000512145 00000 n
-0000512297 00000 n
-0000512448 00000 n
-0000512600 00000 n
-0000512751 00000 n
-0000512902 00000 n
-0000513054 00000 n
-0000513206 00000 n
-0000513358 00000 n
-0000513510 00000 n
-0000513662 00000 n
-0000513813 00000 n
-0000513965 00000 n
-0000514117 00000 n
-0000514268 00000 n
-0000514419 00000 n
-0000514570 00000 n
-0000514722 00000 n
-0000514874 00000 n
-0000515025 00000 n
-0000515177 00000 n
-0000515327 00000 n
-0000515477 00000 n
-0000515629 00000 n
-0000515780 00000 n
-0000515931 00000 n
-0000516083 00000 n
-0000516235 00000 n
-0000516387 00000 n
-0000516539 00000 n
-0000516691 00000 n
-0000516843 00000 n
-0000516995 00000 n
-0000517147 00000 n
-0000517299 00000 n
-0000517451 00000 n
-0000517603 00000 n
-0000517754 00000 n
-0000517906 00000 n
-0000518057 00000 n
-0000518209 00000 n
-0000518360 00000 n
-0000518511 00000 n
-0000518661 00000 n
-0000518811 00000 n
-0000518962 00000 n
-0000523866 00000 n
-0000524018 00000 n
-0000519239 00000 n
-0000500949 00000 n
-0000497625 00000 n
-0000519112 00000 n
-0000501090 00000 n
-0000524170 00000 n
-0000524321 00000 n
-0000524473 00000 n
-0000524625 00000 n
-0000524778 00000 n
-0000524929 00000 n
-0000525082 00000 n
-0000525234 00000 n
-0000525387 00000 n
-0000525539 00000 n
-0000525691 00000 n
-0000525843 00000 n
-0000525996 00000 n
-0000526149 00000 n
-0000526301 00000 n
-0000526453 00000 n
-0000526605 00000 n
-0000526758 00000 n
-0000526911 00000 n
-0000527063 00000 n
-0000527214 00000 n
-0000527367 00000 n
-0000527519 00000 n
-0000527671 00000 n
-0000527823 00000 n
-0000527975 00000 n
-0000528128 00000 n
-0000528281 00000 n
-0000528434 00000 n
-0000528585 00000 n
-0000528736 00000 n
-0000528889 00000 n
-0000529042 00000 n
-0000529193 00000 n
-0000529346 00000 n
-0000529499 00000 n
-0000529651 00000 n
-0000529804 00000 n
-0000529957 00000 n
-0000530109 00000 n
-0000530261 00000 n
-0000530414 00000 n
-0000530567 00000 n
-0000530720 00000 n
-0000530873 00000 n
-0000531026 00000 n
-0000531177 00000 n
-0000531328 00000 n
-0000531480 00000 n
-0000531632 00000 n
-0000531785 00000 n
-0000531937 00000 n
-0000532090 00000 n
-0000532241 00000 n
-0000532394 00000 n
-0000532547 00000 n
-0000532700 00000 n
-0000532852 00000 n
-0000533004 00000 n
-0000533157 00000 n
-0000533308 00000 n
-0000533460 00000 n
-0000533613 00000 n
-0000533766 00000 n
-0000533917 00000 n
-0000534069 00000 n
-0000534222 00000 n
-0000534374 00000 n
-0000534527 00000 n
-0000534680 00000 n
-0000534833 00000 n
-0000534985 00000 n
-0000535137 00000 n
-0000535289 00000 n
-0000535442 00000 n
-0000535595 00000 n
-0000535748 00000 n
-0000535901 00000 n
-0000536054 00000 n
-0000536207 00000 n
-0000536359 00000 n
-0000536511 00000 n
-0000536663 00000 n
-0000536816 00000 n
-0000536969 00000 n
-0000537121 00000 n
-0000537274 00000 n
-0000537427 00000 n
-0000537579 00000 n
-0000537732 00000 n
-0000537885 00000 n
-0000538037 00000 n
-0000538189 00000 n
-0000538342 00000 n
-0000538495 00000 n
-0000538648 00000 n
-0000538799 00000 n
-0000538949 00000 n
-0000539100 00000 n
-0000539251 00000 n
-0000543837 00000 n
-0000539466 00000 n
-0000522785 00000 n
-0000519429 00000 n
-0000539402 00000 n
-0000522926 00000 n
-0000543990 00000 n
-0000544141 00000 n
-0000544293 00000 n
-0000544446 00000 n
-0000544599 00000 n
-0000544751 00000 n
-0000544904 00000 n
-0000545057 00000 n
-0000545210 00000 n
-0000545362 00000 n
-0000545515 00000 n
-0000545668 00000 n
-0000545821 00000 n
-0000545974 00000 n
-0000546127 00000 n
-0000546279 00000 n
-0000546432 00000 n
-0000546584 00000 n
-0000546736 00000 n
-0000546889 00000 n
-0000547042 00000 n
+0000504340 00000 n
+0000493885 00000 n
+0000504461 00000 n
+0000507189 00000 n
+0000507006 00000 n
+0000504813 00000 n
+0000507127 00000 n
+0000511771 00000 n
+0000511921 00000 n
+0000512071 00000 n
+0000512222 00000 n
+0000512374 00000 n
+0000512526 00000 n
+0000512678 00000 n
+0000512830 00000 n
+0000512982 00000 n
+0000513133 00000 n
+0000513284 00000 n
+0000513436 00000 n
+0000513588 00000 n
+0000513739 00000 n
+0000513890 00000 n
+0000514041 00000 n
+0000514190 00000 n
+0000514338 00000 n
+0000514488 00000 n
+0000514638 00000 n
+0000514788 00000 n
+0000514937 00000 n
+0000515087 00000 n
+0000515238 00000 n
+0000515390 00000 n
+0000515540 00000 n
+0000515692 00000 n
+0000515842 00000 n
+0000515994 00000 n
+0000516143 00000 n
+0000516293 00000 n
+0000516444 00000 n
+0000516596 00000 n
+0000516746 00000 n
+0000516896 00000 n
+0000517047 00000 n
+0000517199 00000 n
+0000517350 00000 n
+0000517502 00000 n
+0000517654 00000 n
+0000517805 00000 n
+0000517957 00000 n
+0000518109 00000 n
+0000518261 00000 n
+0000518413 00000 n
+0000518564 00000 n
+0000518715 00000 n
+0000518866 00000 n
+0000519016 00000 n
+0000519166 00000 n
+0000519316 00000 n
+0000519465 00000 n
+0000519615 00000 n
+0000519765 00000 n
+0000519915 00000 n
+0000520067 00000 n
+0000520219 00000 n
+0000520371 00000 n
+0000520522 00000 n
+0000520674 00000 n
+0000520826 00000 n
+0000520978 00000 n
+0000521130 00000 n
+0000521281 00000 n
+0000521433 00000 n
+0000521584 00000 n
+0000521736 00000 n
+0000521887 00000 n
+0000522039 00000 n
+0000522191 00000 n
+0000522343 00000 n
+0000522494 00000 n
+0000522646 00000 n
+0000522797 00000 n
+0000522948 00000 n
+0000523100 00000 n
+0000523252 00000 n
+0000523404 00000 n
+0000523556 00000 n
+0000523708 00000 n
+0000523859 00000 n
+0000524011 00000 n
+0000524163 00000 n
+0000524315 00000 n
+0000524465 00000 n
+0000524617 00000 n
+0000524769 00000 n
+0000524921 00000 n
+0000525073 00000 n
+0000525224 00000 n
+0000525376 00000 n
+0000525528 00000 n
+0000525680 00000 n
+0000525832 00000 n
+0000525984 00000 n
+0000526136 00000 n
+0000526288 00000 n
+0000526440 00000 n
+0000526592 00000 n
+0000526745 00000 n
+0000526898 00000 n
+0000527051 00000 n
+0000527204 00000 n
+0000527357 00000 n
+0000527510 00000 n
+0000527663 00000 n
+0000527815 00000 n
+0000527968 00000 n
+0000528120 00000 n
+0000528271 00000 n
+0000528421 00000 n
+0000528572 00000 n
+0000533467 00000 n
+0000533620 00000 n
+0000528849 00000 n
+0000510698 00000 n
+0000507326 00000 n
+0000528722 00000 n
+0000510839 00000 n
+0000533773 00000 n
+0000533926 00000 n
+0000534078 00000 n
+0000534230 00000 n
+0000534381 00000 n
+0000534533 00000 n
+0000534686 00000 n
+0000534839 00000 n
+0000534991 00000 n
+0000535144 00000 n
+0000535296 00000 n
+0000535449 00000 n
+0000535602 00000 n
+0000535755 00000 n
+0000535908 00000 n
+0000536061 00000 n
+0000536214 00000 n
+0000536367 00000 n
+0000536519 00000 n
+0000536672 00000 n
+0000536824 00000 n
+0000536977 00000 n
+0000537129 00000 n
+0000537281 00000 n
+0000537434 00000 n
+0000537585 00000 n
+0000537738 00000 n
+0000537889 00000 n
+0000538041 00000 n
+0000538193 00000 n
+0000538346 00000 n
+0000538499 00000 n
+0000538652 00000 n
+0000538805 00000 n
+0000538958 00000 n
+0000539111 00000 n
+0000539262 00000 n
+0000539414 00000 n
+0000539567 00000 n
+0000539719 00000 n
+0000539872 00000 n
+0000540025 00000 n
+0000540177 00000 n
+0000540329 00000 n
+0000540482 00000 n
+0000540635 00000 n
+0000540788 00000 n
+0000540941 00000 n
+0000541094 00000 n
+0000541245 00000 n
+0000541397 00000 n
+0000541549 00000 n
+0000541701 00000 n
+0000541853 00000 n
+0000542005 00000 n
+0000542157 00000 n
+0000542309 00000 n
+0000542462 00000 n
+0000542615 00000 n
+0000542768 00000 n
+0000542920 00000 n
+0000543072 00000 n
+0000543225 00000 n
+0000543376 00000 n
+0000543528 00000 n
+0000543681 00000 n
+0000543834 00000 n
+0000543986 00000 n
+0000544138 00000 n
+0000544291 00000 n
+0000544443 00000 n
+0000544596 00000 n
+0000544749 00000 n
+0000544902 00000 n
+0000545054 00000 n
+0000545206 00000 n
+0000545358 00000 n
+0000545511 00000 n
+0000545664 00000 n
+0000545817 00000 n
+0000545970 00000 n
+0000546123 00000 n
+0000546276 00000 n
+0000546429 00000 n
+0000546582 00000 n
+0000546735 00000 n
+0000546887 00000 n
+0000547040 00000 n
0000547192 00000 n
-0000547344 00000 n
-0000547496 00000 n
-0000547648 00000 n
-0000547801 00000 n
-0000547954 00000 n
+0000547345 00000 n
+0000547498 00000 n
+0000547650 00000 n
+0000547803 00000 n
+0000547956 00000 n
0000548107 00000 n
0000548259 00000 n
-0000548411 00000 n
-0000548563 00000 n
-0000548715 00000 n
-0000548867 00000 n
-0000549019 00000 n
-0000549171 00000 n
-0000549322 00000 n
-0000549475 00000 n
-0000549628 00000 n
-0000549781 00000 n
-0000549933 00000 n
-0000550086 00000 n
-0000550239 00000 n
-0000550390 00000 n
-0000550543 00000 n
-0000550696 00000 n
-0000550849 00000 n
-0000551002 00000 n
-0000551155 00000 n
-0000551308 00000 n
-0000551460 00000 n
-0000551610 00000 n
-0000551761 00000 n
-0000551912 00000 n
-0000552065 00000 n
-0000552218 00000 n
-0000552371 00000 n
-0000552522 00000 n
-0000552672 00000 n
-0000552824 00000 n
-0000552977 00000 n
-0000553129 00000 n
-0000553281 00000 n
-0000553433 00000 n
-0000553585 00000 n
-0000553737 00000 n
-0000553890 00000 n
-0000554043 00000 n
-0000554195 00000 n
-0000554348 00000 n
-0000554501 00000 n
-0000554654 00000 n
+0000548412 00000 n
+0000548564 00000 n
+0000548716 00000 n
+0000548866 00000 n
+0000553586 00000 n
+0000553739 00000 n
+0000553892 00000 n
+0000554045 00000 n
+0000549080 00000 n
+0000532385 00000 n
+0000529039 00000 n
+0000549016 00000 n
+0000871764 00000 n
+0000532527 00000 n
+0000554198 00000 n
+0000554350 00000 n
+0000554502 00000 n
+0000554655 00000 n
0000554807 00000 n
-0000554960 00000 n
-0000555113 00000 n
-0000555265 00000 n
-0000555418 00000 n
-0000555571 00000 n
-0000555724 00000 n
-0000555876 00000 n
-0000556028 00000 n
-0000556180 00000 n
-0000556332 00000 n
-0000556483 00000 n
-0000556636 00000 n
-0000556789 00000 n
-0000556942 00000 n
-0000557094 00000 n
-0000557310 00000 n
-0000542881 00000 n
-0000539643 00000 n
-0000557246 00000 n
-0000860806 00000 n
-0000543023 00000 n
-0000560485 00000 n
-0000560639 00000 n
-0000560793 00000 n
-0000560947 00000 n
-0000561101 00000 n
-0000561260 00000 n
-0000561419 00000 n
-0000561578 00000 n
-0000561737 00000 n
-0000561895 00000 n
-0000562054 00000 n
-0000562208 00000 n
-0000562367 00000 n
-0000562532 00000 n
-0000562695 00000 n
-0000562854 00000 n
-0000563013 00000 n
-0000563178 00000 n
-0000563343 00000 n
-0000563508 00000 n
-0000563673 00000 n
-0000563838 00000 n
-0000563992 00000 n
-0000564150 00000 n
-0000564308 00000 n
-0000564466 00000 n
-0000564625 00000 n
-0000564779 00000 n
-0000564933 00000 n
-0000565092 00000 n
-0000565251 00000 n
-0000565410 00000 n
-0000565564 00000 n
-0000565719 00000 n
-0000565878 00000 n
-0000566037 00000 n
-0000566193 00000 n
-0000569593 00000 n
-0000566414 00000 n
-0000559988 00000 n
-0000557487 00000 n
-0000566350 00000 n
-0000560130 00000 n
-0000569753 00000 n
-0000569913 00000 n
-0000570068 00000 n
-0000570223 00000 n
-0000570383 00000 n
-0000570543 00000 n
-0000570703 00000 n
-0000570863 00000 n
-0000571018 00000 n
-0000571178 00000 n
-0000571338 00000 n
-0000571498 00000 n
-0000571658 00000 n
-0000571818 00000 n
-0000571973 00000 n
-0000572133 00000 n
-0000572293 00000 n
-0000572453 00000 n
-0000572612 00000 n
-0000572771 00000 n
-0000572931 00000 n
-0000573091 00000 n
-0000573251 00000 n
-0000573411 00000 n
-0000573572 00000 n
-0000573733 00000 n
-0000573888 00000 n
-0000574048 00000 n
-0000574214 00000 n
-0000574380 00000 n
-0000574540 00000 n
-0000574700 00000 n
-0000574860 00000 n
-0000575015 00000 n
-0000575170 00000 n
-0000575330 00000 n
-0000575490 00000 n
-0000575650 00000 n
-0000575810 00000 n
-0000575965 00000 n
-0000576125 00000 n
-0000576284 00000 n
-0000576444 00000 n
-0000576604 00000 n
-0000576764 00000 n
-0000576923 00000 n
-0000577083 00000 n
-0000577243 00000 n
-0000577402 00000 n
-0000577562 00000 n
-0000577778 00000 n
-0000568970 00000 n
-0000566617 00000 n
-0000577714 00000 n
-0000569112 00000 n
-0000578197 00000 n
-0000579152 00000 n
-0000578253 00000 n
-0000578353 00000 n
-0000579394 00000 n
-0000580008 00000 n
-0000580212 00000 n
-0000581624 00000 n
-0000580287 00000 n
-0000580388 00000 n
-0000581866 00000 n
-0000582494 00000 n
-0000582699 00000 n
-0000582844 00000 n
-0000582941 00000 n
-0000584111 00000 n
-0000583007 00000 n
-0000583104 00000 n
-0000584354 00000 n
-0000584969 00000 n
-0000585173 00000 n
-0000585277 00000 n
-0000587132 00000 n
-0000585435 00000 n
-0000585539 00000 n
-0000587372 00000 n
-0000588032 00000 n
-0000588236 00000 n
-0000589691 00000 n
-0000588315 00000 n
-0000588417 00000 n
-0000589939 00000 n
-0000590573 00000 n
-0000590783 00000 n
-0000590828 00000 n
-0000593714 00000 n
-0000591076 00000 n
-0000591186 00000 n
+0000554958 00000 n
+0000555110 00000 n
+0000555262 00000 n
+0000555415 00000 n
+0000555568 00000 n
+0000555721 00000 n
+0000555874 00000 n
+0000556026 00000 n
+0000556178 00000 n
+0000556330 00000 n
+0000556481 00000 n
+0000556634 00000 n
+0000556786 00000 n
+0000556938 00000 n
+0000557089 00000 n
+0000557240 00000 n
+0000557391 00000 n
+0000557544 00000 n
+0000557695 00000 n
+0000557847 00000 n
+0000558000 00000 n
+0000558153 00000 n
+0000558306 00000 n
+0000558458 00000 n
+0000558610 00000 n
+0000558762 00000 n
+0000558915 00000 n
+0000559068 00000 n
+0000559221 00000 n
+0000559374 00000 n
+0000559526 00000 n
+0000559679 00000 n
+0000559832 00000 n
+0000559985 00000 n
+0000560137 00000 n
+0000560290 00000 n
+0000560443 00000 n
+0000560595 00000 n
+0000560747 00000 n
+0000560899 00000 n
+0000561051 00000 n
+0000561203 00000 n
+0000561356 00000 n
+0000561508 00000 n
+0000561659 00000 n
+0000561810 00000 n
+0000561961 00000 n
+0000562114 00000 n
+0000562267 00000 n
+0000562420 00000 n
+0000562573 00000 n
+0000562724 00000 n
+0000562874 00000 n
+0000563026 00000 n
+0000563179 00000 n
+0000563331 00000 n
+0000563483 00000 n
+0000563635 00000 n
+0000563787 00000 n
+0000563940 00000 n
+0000564093 00000 n
+0000564246 00000 n
+0000564398 00000 n
+0000564551 00000 n
+0000564704 00000 n
+0000564857 00000 n
+0000565010 00000 n
+0000565163 00000 n
+0000565316 00000 n
+0000565468 00000 n
+0000565621 00000 n
+0000565774 00000 n
+0000565927 00000 n
+0000566079 00000 n
+0000566231 00000 n
+0000566383 00000 n
+0000566535 00000 n
+0000566686 00000 n
+0000566839 00000 n
+0000566992 00000 n
+0000567145 00000 n
+0000567297 00000 n
+0000567514 00000 n
+0000552603 00000 n
+0000549257 00000 n
+0000567450 00000 n
+0000552745 00000 n
+0000570688 00000 n
+0000570842 00000 n
+0000570996 00000 n
+0000571150 00000 n
+0000571304 00000 n
+0000571463 00000 n
+0000571622 00000 n
+0000571781 00000 n
+0000571940 00000 n
+0000572098 00000 n
+0000572257 00000 n
+0000572415 00000 n
+0000572569 00000 n
+0000572728 00000 n
+0000572893 00000 n
+0000573056 00000 n
+0000573215 00000 n
+0000573374 00000 n
+0000573539 00000 n
+0000573704 00000 n
+0000573869 00000 n
+0000574034 00000 n
+0000574199 00000 n
+0000574353 00000 n
+0000574511 00000 n
+0000574668 00000 n
+0000574826 00000 n
+0000574985 00000 n
+0000575139 00000 n
+0000575293 00000 n
+0000575452 00000 n
+0000575611 00000 n
+0000575770 00000 n
+0000575924 00000 n
+0000576077 00000 n
+0000576236 00000 n
+0000576394 00000 n
+0000579813 00000 n
+0000576616 00000 n
+0000570191 00000 n
+0000567691 00000 n
+0000576552 00000 n
+0000570333 00000 n
+0000579972 00000 n
+0000580132 00000 n
+0000580291 00000 n
+0000580446 00000 n
+0000580601 00000 n
+0000580761 00000 n
+0000580921 00000 n
+0000581081 00000 n
+0000581241 00000 n
+0000581396 00000 n
+0000581556 00000 n
+0000581716 00000 n
+0000581876 00000 n
+0000582035 00000 n
+0000582195 00000 n
+0000582350 00000 n
+0000582510 00000 n
+0000582670 00000 n
+0000582830 00000 n
+0000582989 00000 n
+0000583148 00000 n
+0000583308 00000 n
+0000583468 00000 n
+0000583628 00000 n
+0000583788 00000 n
+0000583949 00000 n
+0000584110 00000 n
+0000584265 00000 n
+0000584425 00000 n
+0000584591 00000 n
+0000584757 00000 n
+0000584917 00000 n
+0000585077 00000 n
+0000585236 00000 n
+0000585390 00000 n
+0000585545 00000 n
+0000585705 00000 n
+0000585865 00000 n
+0000586025 00000 n
+0000586185 00000 n
+0000586340 00000 n
+0000586500 00000 n
+0000586659 00000 n
+0000586819 00000 n
+0000586979 00000 n
+0000587139 00000 n
+0000587298 00000 n
+0000587458 00000 n
+0000587618 00000 n
+0000587776 00000 n
+0000588515 00000 n
+0000587999 00000 n
+0000579190 00000 n
+0000576819 00000 n
+0000587935 00000 n
+0000579332 00000 n
+0000588733 00000 n
+0000588342 00000 n
+0000588137 00000 n
+0000588669 00000 n
+0000588484 00000 n
+0000589152 00000 n
+0000590107 00000 n
+0000589208 00000 n
+0000589308 00000 n
+0000590349 00000 n
+0000590963 00000 n
+0000591167 00000 n
+0000592579 00000 n
+0000591242 00000 n
+0000591343 00000 n
+0000592821 00000 n
+0000593449 00000 n
+0000593654 00000 n
+0000593799 00000 n
+0000593896 00000 n
+0000595066 00000 n
0000593962 00000 n
-0000594679 00000 n
-0000594889 00000 n
-0000599064 00000 n
-0000595243 00000 n
-0000595357 00000 n
-0000599307 00000 n
-0000600059 00000 n
-0000600263 00000 n
-0000600288 00000 n
-0000600314 00000 n
-0000600566 00000 n
-0000602648 00000 n
-0000600719 00000 n
-0000600825 00000 n
-0000602887 00000 n
-0000603547 00000 n
-0000603749 00000 n
-0000611796 00000 n
-0000604253 00000 n
-0000604376 00000 n
-0000612036 00000 n
-0000612951 00000 n
-0000613154 00000 n
-0000620493 00000 n
-0000613594 00000 n
-0000613702 00000 n
-0000620733 00000 n
-0000621646 00000 n
-0000621850 00000 n
-0000624162 00000 n
-0000622124 00000 n
-0000622230 00000 n
-0000624402 00000 n
-0000625108 00000 n
-0000625312 00000 n
-0000633853 00000 n
-0000625877 00000 n
-0000626014 00000 n
-0000634094 00000 n
-0000635047 00000 n
-0000635252 00000 n
-0000636108 00000 n
-0000635286 00000 n
-0000635381 00000 n
-0000636350 00000 n
-0000636953 00000 n
-0000637158 00000 n
-0000645079 00000 n
-0000637626 00000 n
-0000637743 00000 n
-0000645319 00000 n
-0000646230 00000 n
-0000646433 00000 n
-0000648665 00000 n
-0000646600 00000 n
-0000646706 00000 n
-0000648912 00000 n
-0000649588 00000 n
-0000649798 00000 n
-0000654336 00000 n
-0000650161 00000 n
-0000650279 00000 n
-0000654585 00000 n
-0000655363 00000 n
-0000655574 00000 n
-0000658873 00000 n
-0000655777 00000 n
-0000655884 00000 n
-0000659115 00000 n
-0000659811 00000 n
-0000660016 00000 n
-0000666735 00000 n
-0000660428 00000 n
-0000660545 00000 n
-0000666979 00000 n
-0000667799 00000 n
-0000668004 00000 n
-0000676714 00000 n
-0000668461 00000 n
-0000668577 00000 n
-0000676955 00000 n
+0000594059 00000 n
+0000595309 00000 n
+0000595924 00000 n
+0000596128 00000 n
+0000596232 00000 n
+0000598087 00000 n
+0000596390 00000 n
+0000596494 00000 n
+0000598327 00000 n
+0000598987 00000 n
+0000599191 00000 n
+0000600646 00000 n
+0000599270 00000 n
+0000599372 00000 n
+0000600894 00000 n
+0000601528 00000 n
+0000601738 00000 n
+0000601783 00000 n
+0000604669 00000 n
+0000602031 00000 n
+0000602141 00000 n
+0000604917 00000 n
+0000605634 00000 n
+0000605844 00000 n
+0000610019 00000 n
+0000606198 00000 n
+0000606312 00000 n
+0000610262 00000 n
+0000611014 00000 n
+0000611218 00000 n
+0000611243 00000 n
+0000611269 00000 n
+0000611521 00000 n
+0000613603 00000 n
+0000611674 00000 n
+0000611780 00000 n
+0000613842 00000 n
+0000614502 00000 n
+0000614704 00000 n
+0000622989 00000 n
+0000615212 00000 n
+0000615335 00000 n
+0000623229 00000 n
+0000624150 00000 n
+0000624353 00000 n
+0000631692 00000 n
+0000624793 00000 n
+0000624901 00000 n
+0000631932 00000 n
+0000632845 00000 n
+0000633049 00000 n
+0000635361 00000 n
+0000633323 00000 n
+0000633429 00000 n
+0000635601 00000 n
+0000636307 00000 n
+0000636511 00000 n
+0000645052 00000 n
+0000637076 00000 n
+0000637213 00000 n
+0000645293 00000 n
+0000646246 00000 n
+0000646451 00000 n
+0000647307 00000 n
+0000646485 00000 n
+0000646580 00000 n
+0000647549 00000 n
+0000648152 00000 n
+0000648357 00000 n
+0000656278 00000 n
+0000648825 00000 n
+0000648942 00000 n
+0000656518 00000 n
+0000657429 00000 n
+0000657632 00000 n
+0000659864 00000 n
+0000657799 00000 n
+0000657905 00000 n
+0000660111 00000 n
+0000660787 00000 n
+0000660997 00000 n
+0000665535 00000 n
+0000661360 00000 n
+0000661478 00000 n
+0000665784 00000 n
+0000666562 00000 n
+0000666773 00000 n
+0000670072 00000 n
+0000666976 00000 n
+0000667083 00000 n
+0000670314 00000 n
+0000671010 00000 n
+0000671215 00000 n
0000677934 00000 n
-0000678139 00000 n
-0000681540 00000 n
-0000678499 00000 n
-0000678606 00000 n
-0000681781 00000 n
-0000682549 00000 n
-0000682754 00000 n
-0000682989 00000 n
-0000693007 00000 n
-0000683626 00000 n
-0000683769 00000 n
-0000693249 00000 n
-0000694286 00000 n
-0000694492 00000 n
-0000694599 00000 n
-0000694878 00000 n
-0000694985 00000 n
-0000695047 00000 n
-0000695242 00000 n
-0000695611 00000 n
-0000703801 00000 n
-0000696118 00000 n
-0000696244 00000 n
-0000704041 00000 n
-0000705008 00000 n
-0000705212 00000 n
-0000706816 00000 n
-0000705369 00000 n
-0000705475 00000 n
-0000707056 00000 n
-0000707715 00000 n
-0000707919 00000 n
-0000711313 00000 n
-0000708212 00000 n
-0000708326 00000 n
-0000711554 00000 n
-0000712283 00000 n
-0000712488 00000 n
-0000713865 00000 n
-0000712567 00000 n
-0000712670 00000 n
-0000714104 00000 n
-0000714723 00000 n
-0000714925 00000 n
-0000717162 00000 n
-0000715104 00000 n
-0000715210 00000 n
-0000717403 00000 n
-0000718072 00000 n
-0000718277 00000 n
-0000722405 00000 n
-0000718609 00000 n
-0000718723 00000 n
-0000722647 00000 n
-0000723393 00000 n
-0000723599 00000 n
-0000724959 00000 n
-0000723722 00000 n
-0000723828 00000 n
-0000725200 00000 n
-0000725845 00000 n
-0000726050 00000 n
-0000728754 00000 n
-0000726273 00000 n
-0000726387 00000 n
-0000728996 00000 n
-0000729698 00000 n
-0000739150 00000 n
-0000729904 00000 n
-0000750574 00000 n
-0000739401 00000 n
-0000758262 00000 n
-0000751328 00000 n
-0000771039 00000 n
-0000758492 00000 n
-0000778510 00000 n
-0000771367 00000 n
-0000786643 00000 n
-0000778736 00000 n
-0000796570 00000 n
-0000786876 00000 n
-0000804482 00000 n
-0000796837 00000 n
-0000817192 00000 n
-0000804713 00000 n
-0000825210 00000 n
-0000817550 00000 n
-0000834451 00000 n
-0000825458 00000 n
-0000842403 00000 n
-0000834759 00000 n
-0000849943 00000 n
-0000842687 00000 n
-0000857457 00000 n
-0000850182 00000 n
-0000860906 00000 n
-0000861029 00000 n
-0000869293 00000 n
-0000869929 00000 n
-0000870569 00000 n
-0000871243 00000 n
-0000872096 00000 n
-0000872989 00000 n
-0000873581 00000 n
-0000873709 00000 n
-0000873749 00000 n
-0000873881 00000 n
+0000671627 00000 n
+0000671744 00000 n
+0000678178 00000 n
+0000678998 00000 n
+0000679203 00000 n
+0000687913 00000 n
+0000679660 00000 n
+0000679776 00000 n
+0000688154 00000 n
+0000689133 00000 n
+0000689338 00000 n
+0000692739 00000 n
+0000689698 00000 n
+0000689805 00000 n
+0000692980 00000 n
+0000693748 00000 n
+0000693953 00000 n
+0000694188 00000 n
+0000704422 00000 n
+0000694829 00000 n
+0000694972 00000 n
+0000704664 00000 n
+0000705704 00000 n
+0000705910 00000 n
+0000706017 00000 n
+0000706296 00000 n
+0000706403 00000 n
+0000706465 00000 n
+0000706660 00000 n
+0000707029 00000 n
+0000715043 00000 n
+0000707520 00000 n
+0000707643 00000 n
+0000715283 00000 n
+0000716241 00000 n
+0000716445 00000 n
+0000718049 00000 n
+0000716602 00000 n
+0000716708 00000 n
+0000718289 00000 n
+0000718948 00000 n
+0000719152 00000 n
+0000722546 00000 n
+0000719445 00000 n
+0000719559 00000 n
+0000722787 00000 n
+0000723516 00000 n
+0000723721 00000 n
+0000725098 00000 n
+0000723800 00000 n
+0000723903 00000 n
+0000725337 00000 n
+0000725956 00000 n
+0000726158 00000 n
+0000728395 00000 n
+0000726337 00000 n
+0000726443 00000 n
+0000728636 00000 n
+0000729305 00000 n
+0000729510 00000 n
+0000733370 00000 n
+0000729835 00000 n
+0000729953 00000 n
+0000733612 00000 n
+0000734352 00000 n
+0000734558 00000 n
+0000735918 00000 n
+0000734681 00000 n
+0000734787 00000 n
+0000736159 00000 n
+0000736804 00000 n
+0000737009 00000 n
+0000739713 00000 n
+0000737232 00000 n
+0000737346 00000 n
+0000739955 00000 n
+0000740657 00000 n
+0000750109 00000 n
+0000740863 00000 n
+0000761533 00000 n
+0000750360 00000 n
+0000769221 00000 n
+0000762287 00000 n
+0000781998 00000 n
+0000769451 00000 n
+0000789469 00000 n
+0000782326 00000 n
+0000797602 00000 n
+0000789695 00000 n
+0000807529 00000 n
+0000797835 00000 n
+0000815441 00000 n
+0000807796 00000 n
+0000828151 00000 n
+0000815672 00000 n
+0000836169 00000 n
+0000828509 00000 n
+0000845410 00000 n
+0000836417 00000 n
+0000853362 00000 n
+0000845718 00000 n
+0000860902 00000 n
+0000853646 00000 n
+0000868416 00000 n
+0000861141 00000 n
+0000871882 00000 n
+0000872005 00000 n
+0000880361 00000 n
+0000880997 00000 n
+0000881637 00000 n
+0000882306 00000 n
+0000883149 00000 n
+0000884046 00000 n
+0000884807 00000 n
+0000884935 00000 n
+0000884975 00000 n
+0000885107 00000 n
trailer
-<< /Size 1535 /Root 1533 0 R /Info 1534 0 R /ID [ <48D60F482EB7B3E72753E06407165887> <48D60F482EB7B3E72753E06407165887> ] >>
+<< /Size 1555 /Root 1553 0 R /Info 1554 0 R /ID [ <CFF0FB724450D6A313418D5C4093D31A> <CFF0FB724450D6A313418D5C4093D31A> ] >>
startxref
-874458
+885681
%%EOF
diff --git a/macros/latex/contrib/nicematrix/nicematrix-french.tex b/macros/latex/contrib/nicematrix/nicematrix-french.tex
index 4d8cafd6e8..0d1488da6d 100644
--- a/macros/latex/contrib/nicematrix/nicematrix-french.tex
+++ b/macros/latex/contrib/nicematrix/nicematrix-french.tex
@@ -129,8 +129,9 @@
\begin{abstract}
-L'extension LaTeX \pkg{nicematrix} fournit de nouveaux environnements similaires aux environnements classiques
-|{tabular}|, |{array}| et |{matrix}| de \pkg{array} et \pkg{amsmath} mais avec des fonctionnalités plus étendues.
+L'extension LaTeX \pkg{nicematrix} fournit de nouveaux environnements similaires
+aux environnements classiques |{tabular}|, |{array}| et |{matrix}| de
+\pkg{array} et \pkg{amsmath} mais avec des fonctionnalités plus étendues.
\end{abstract}
@@ -167,8 +168,9 @@ spécial & 12 & 12 & 0.5 & 70 \\
\vspace{1cm}
-L'extension \pkg{nicematrix} est entièrement contenue dans le fichier |nicematrix.sty|. Ce fichier peut être placé
-dans le répertoire courant ou dans une arborescence |texmf|. Le mieux reste néanmoins d'installer \pkg{nicematrix}
+L'extension \pkg{nicematrix} est entièrement contenue dans le fichier
+|nicematrix.sty|. Ce fichier peut être placé dans le répertoire courant ou dans
+une arborescence |texmf|. Le mieux reste néanmoins d'installer \pkg{nicematrix}
avec une distribution TeX comme MiKTeX, TeX~Live ou MacTeX.
\medskip
@@ -176,8 +178,8 @@ avec une distribution TeX comme MiKTeX, TeX~Live ou MacTeX.
Overleaf) vous pouvez télécharger le fichier |nicematrix.sty| dans le dossier de
votre projet pour bénéficier de la dernière version de
\pkg{nicematrix}.\footnote{La dernière version de |nicematrix.sty| peut
- être téléchargée sur le serveur \textsc{svn} de TeXLive : \newline \small
- \url{https:www.tug.org/svn/texlive/trunk/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty}}
+ être téléchargée sur le dépôt Github de \pkg{nicematrix} : \newline \small
+ \url{https://github.com/fpantigny/nicematrix/releases}}
\medskip
Cette extension peut être utilisée avec |xelatex|, |lualatex| et |pdflatex| mais
@@ -200,8 +202,9 @@ utiliser pour développer de nouvelles fonctionnalités. Comme toujours avec
\textsc{pgf}, les coordonnées de ces nœuds sont écrites dans le fichier |aux|
pour être utilisées à la compilation suivante. C'est pourquoi l'utilisation de
\pkg{nicematrix} nécessite \textbf{plusieurs compilations
- successives}.\footnote{Si vous utilisez Overleaf, Overleaf effectue
- automatiquement un nombre de compilations suffisant.}
+ successives}\footnote{Si vous utilisez Overleaf, Overleaf effectue
+ automatiquement un nombre de compilations suffisant.}. L'utilisateur ne doit
+pas utiliser la commande |\nofiles| (qui bloque l'écriture du fichier |aux|).
\medskip
La plupart des fonctionnalités de \pkg{nicematrix} sont accessibles sans avoir à
@@ -516,10 +519,11 @@ Si cet argument est laissé blanc, la valeur par défaut est |1-1|. Si le nombre
de rangées n'est pas indiqué, ou bien est égal à |*|, le bloc s'étend jusqu'à la
dernière rangée (idem pour les colonnes).
-\item Le deuxième argument est le contenu du bloc. On peut utiliser |\\| dans ce
-contenu pour avoir un contenu sur plusieurs lignes. Dans |{NiceTabular}|,
-|{NiceTabular*}| et |{NiceTabularX}|, le contenu est composé en mode texte
-tandis que, dans les autres environnements, il est composé en mode mathématique.
+\item Le deuxième argument est le contenu du bloc.
+
+Dans |{NiceTabular}|, |{NiceTabular*}| et |{NiceTabularX}|, le contenu est
+composé en mode texte tandis que, dans les autres environnements, il est composé
+en mode mathématique.
\end{itemize}
\interitem
@@ -641,12 +645,12 @@ options la valeur de cette clé |tikz| (qui doit donc être une liste de clés T
applicables à un chemin de TikZ). Pour des exemples d'utilisation de cette clé
|tikz|, voir p.~\pageref{tikz-key-examples}.
-\colorbox{yellow!50}{\textbf{Nouveau 6.24}}\enskip En fait, dans la liste des
-clés fournies à |tikz|, on peut mettre une clé \Definition{offset}. Cette clé
-n'est pas fournie par TikZ mais par \pkg{nicematrix}. Elle réduit le rectangle
-correspondant au bloc par une marge (horizontalement et verticalement) égale à
-la valeur (passée à |offset|). C'est ce rectangle réduit qui sera le chemin
-exécuté par TikZ avec comme options les autres clés passées à la clé |tikz|.
+En fait, dans la liste des clés fournies à |tikz|, on peut mettre une clé
+\Definition{offset}. Cette clé n'est pas fournie par TikZ mais par
+\pkg{nicematrix}. Elle réduit le rectangle correspondant au bloc par une marge
+(horizontalement et verticalement) égale à la valeur (passée à |offset|). C'est
+ce rectangle réduit qui sera le chemin exécuté par TikZ avec comme options les
+autres clés passées à la clé |tikz|.
\end{itemize}
@@ -725,10 +729,11 @@ Dans les colonnes à largeur fixée (|p{...}|, |b{...}|, |m{...}|, |w{...}{...}|
|W{...}{...}|, |V{...}| et~|X|), le contenu du bloc est mis en forme comme un
paragraphe de cette largeur.
-\item La spécification d'alignement horizontal donnée par le type de
-colonne (|c|, |r| ou |l|) est prise en compte pour le bloc (mais le bloc peut
-avoir sa propre spécification d'alignement horizontal :
-cf.~\ref{horizontal-bloc} p.~\pageref{horizontal-bloc}).
+\item La spécification d'alignement horizontal donnée par le type de colonne
+(|c|, |r| ou |l|) est prise en compte pour le bloc. Pour un bloc dans une
+colonne de type |p{...}| (sans option à |p|), c'est un alignement |c| qui est
+retenu. Le bloc peut bien sûr avoir sa propre spécification d'alignement
+horizontal : cf.~\ref{horizontal-bloc} p.~\pageref{horizontal-bloc}.
\item Les spécifications de fontes imposées à une colonne via la construction
|>{...}| dans le préambule du tableau sont prises en compte pour les
@@ -836,8 +841,9 @@ défaut de ce premier argument obligatoire est |1-1|.}.
\label{horizontal-bloc}
-La commande |\Block| admet les clés |l|, |c| et |r| pour la position horizontale
-du contenu du bloc (calé à gauche, centré ou bien calé à droite).
+La commande |\Block| admet les clés \Definition{l}, \Definition{c} et
+\Definition{r} pour la position horizontale du contenu du bloc (calé à gauche,
+centré ou bien calé à droite).
\medskip
\begin{Code}[width=10.6cm]
@@ -899,7 +905,8 @@ Rang & \Block{1-3}{Premier groupe} & & & \Block{1-3}{Deuxième groupe} \\
\medskip
Pour avoir un positionnement horizontal du contenu du bloc qui s'appuie sur les
limites des colonnes du tableau LaTeX (et non sur le contenu de ces colonnes),
-il faut utiliser les clés |L|, |R| et |C| de la commande |\Block|.
+il faut utiliser les clés \Definition{L}, \Definition{R} et \Definition{C} de la
+commande |\Block|.
\medskip
Voici le même exemple avec la clé |C| pour le premier bloc.
@@ -935,6 +942,16 @@ Rang & \Block[C]{1-3}{Premier groupe} & & & \Block{1-3}{Deuxième groupe} \\
\end{NiceTabular}
\end{center}
+\bigskip
+\colorbox{yellow!50}{\bfseries Nouveau 6.28}\par\nobreak
+
+\smallskip
+La commande |\Block| accepte aussi la clé |p|. Avec cette clé, le contenu du
+bloc est composé comme un paragraphe (de manière similaire à une colonne
+standard de type |p|). Cette clé peut s'utiliser en conjonction avec les clés
+|l|, |c| ou |r| et, alors, le paragraphe est composé avec |\raggedright|,
+|\centering| ou |\raggedleft|. Avec la clé |j|, le paragraphe est composé de
+manière justifiée.
\subsection{Positionnement vertical du contenu des blocs}
@@ -962,7 +979,8 @@ impliquées dans le bloc.
Il n'y a pas de marge verticale. Néanmoins, le contenu du bloc est (toujours)
composé en interne dans une |{minipage}|, un |{tabular}| ou un |{array}|, ce qui
-fait qu'il y a souvent déjà une marge.
+fait qu'il y a souvent déjà une marge. Si besoin est, on peut toujours ajouter
+un |\strut|.
\item Avec la clé \Definition{B}, le contenu du bloc est calé vers le bas.
\end{itemize}
@@ -1063,6 +1081,90 @@ text & text \\
\end{scope}
+
+\subsection{\textbackslash\textbackslash\ et \& dans les blocs}
+
+\index{ampersand-in-blocks}
+\index{\&-in-blocks}
+
+\colorbox{yellow!50}{\bfseries Nouveau 6.28}\par\nobreak
+
+\medskip
+L'extension \pkg{nicematrix} offre la possibilité d'utiliser directement |\\| et
+|&| dans le contenu d'un bloc (dans le but de formater son contenu) mais il y a
+quelques restrictions.
+
+\begin{itemize}
+\item On ne doit pas utiliser à la fois |&| et |\\| dans le même bloc.
+
+\item Pour |\\|, il n'y a pas d'autres restrictions. On peut utiliser
+|\\| dans un bloc pour composer du texte sur plusieurs lignes.
+
+\item Pour pouvoir utiliser |&|, la clé |ampersand-in-blocks| (alias:
+|&-in-blocks|) doit avoir été activée\footnote{Si ce n'est pas le cas,
+ l'utilisation de |&| dans l'argument principal de la commande |\Block|
+ provoquera une erreur : |! Extra alignment tab has been changed to \cr| de
+ TeX.}. Le bloc est alors divisé en sous-blocs comme illustré ci-dessous.
+Attention toutefois : quand |ampersand-in-blocks| est utilisée, l'argument
+(principal) de la commande |\Block| est découpé syntaxiquement au niveau des
+esperluettes |&|, celles entre accolades sont masquées mais pas celles dans un
+environnement.\footnote{On ne peut donc pas écrire :
+ |\Block[ampersand-in-blocks]{}{\begin{array}{cc}1&2\end{array}}|. Bien sûr, on
+ peut le faire sans la clé |ampersand-in-blocks|.}
+\end{itemize}
+
+\bigskip
+L'esperluette |&| permet de diviser horizontalement un bloc en sous-blocs \emph{de même taille}.
+
+\medskip
+\begin{Code}[width=85mm]
+\begin{NiceTabular}{ll}%
+ [hvlines,ampersand-in-blocks]
+ & les cinq premiers entiers naturels \\
+3 & \Block{un&deux&trois} \\
+4 & \Block{un&deux&trois& quatre} \\
+5 & \Block{un&deux&trois&quatre&cinq} \\
+\end{NiceTabular}
+\end{Code}
+%
+\begin{NiceTabular}{ll}%
+ [hvlines,ampersand-in-blocks]
+ & les cinq premiers entiers naturels \\
+3 & \Block{}{un & deux & trois} \\
+4 & \Block{}{un& deux & trois & quatre} \\
+5 & \Block{}{un & deux & trois & quatre & cinq} \\
+\end{NiceTabular}
+
+\medskip
+Comme on le voit, le bloc (qui était ici mono-case) a été divisé en sous-cases
+de même taille. Dans le cas présent, on aurait peut-être préféré le codage
+suivant :
+
+\medskip
+\begin{Code}[width=85mm]
+\begin{NiceTabular}{lccccc}%
+ [hvlines,ampersand-in-blocks]
+ & \Block{1-5}{les cinq premiers
+ entiers naturels} \\
+3 & \Block{1-5}{un & deux & trois} \\
+4 & \Block{1-5}{un& deux & trois & quatre} \\
+5 & un & deux & trois & quatre & cinq \\
+\end{NiceTabular}
+\end{Code}
+%
+\begin{NiceTabular}{lccccc}%
+ [hvlines,ampersand-in-blocks]
+ & \Block{1-5}{les cinq premiers entiers naturels} \\
+3 & \Block{1-5}{un & deux & trois} \\
+4 & \Block{1-5}{un& deux & trois & quatre} \\
+5 & un & deux & trois & quatre & cinq \\
+\end{NiceTabular}
+
+\medskip
+Dans ce codage, il s'agit de blocs de taille |1-5| qui sont coupés en trois et
+quatre sous-blocs.
+
+
\index{Blocs@\textbf{Blocs dans les tableaux}|)}
\section{Les filets horizontaux et verticaux}
@@ -1308,14 +1410,14 @@ p.~\pageref{custom-line}.\footnote{Remarque technique. Si l'utilisateur définit
une commande par-dessus la commande |\Hline|, il doit veiller à ce qu'elle
soit \emph{développable} au sens de TeX (en utilisant
|\NewExpandableDocumentCommand| de LaTeX3, |\newcommand| de LaTeX ou même
- |\def| de TeX). Exemple : |\newcommand{\RedLine}{\Hline[color=red]}|}
+ |\def| de TeX). Exemple : |\NewDocumentCommand{\RedLine}{}{\Hline[color=red]}|}
De même que la commande |\Hline|, le specificateur «\verb+|+» admet entre crochets
des options qui caractérisent le filet à tracer.
\medskip
\begin{Code}[width=10cm]
-\begin{NiceTabular}{|c|\emph{[color=blue]}c|}
+\begin{NiceTabular}{| c | \emph{[color=blue]} c |}
\Hline
a & b \\
\emph{\Hline[color=red]}
@@ -1643,7 +1745,8 @@ d'un environnement ;
\item la clé \Definition{color} fixe la couleur des filets ;
\item la clé \Definition{sep-color} fixe la couleur entre deux filets consécutifs (n'a
-d'intérêt que dans le cas où la clé |multiplicity| est utilisée).
+d'intérêt que dans le cas où la clé |multiplicity| est utilisée). Le nom de
+cette clé est inspirée par la commande |\doublerulesepcolor| de \pkg{colortbl}.
\end{itemize}
\medskip
@@ -1680,6 +1783,51 @@ Produit C & 5 & 4 & 1 \\
\end{center}
+\bigskip
+La clé |sep-color| avec la valeur |white| peut être en particulier utile en cas
+de filet double au-dessus d'une case colorée (pour éviter que la couleur ne
+s'applique aussi entre les deux filets).
+
+
+\begin{scope}
+\NiceMatrixOptions
+ {
+ custom-line =
+ {
+ command = DoubleRule ,
+ multiplicity = 2 ,
+ sep-color = white
+ }
+ }
+
+
+\begin{Code}[width=10cm]
+\NiceMatrixOptions
+ {
+ custom-line =
+ {
+ command = DoubleRule ,
+ multiplicity = 2 ,
+ \emph{sep-color = white}
+ }
+ }
+
+\begin{NiceTabular}{ccc}[color-inside]
+un & deux & trois \\
+\emph{\DoubleRule}
+quatre & \cellcolor{yellow} cinq & six \\
+\end{NiceTabular}
+\end{Code}
+\begin{NiceTabular}{ccc}[color-inside]
+un & deux & trois \\
+\DoubleRule
+quatre & \cellcolor{yellow} cinq & six \\
+\end{NiceTabular}
+
+\end{scope}
+
+
+\bigskip
\item \emph{Deuxième possibilité}\par\nobreak
\index{tikzz@tikz!clé de «custom-line»}
@@ -1691,7 +1839,7 @@ directement avec TikZ en utilisant comme paramètres la valeur de la clé |tikz|
qui doit être une liste de couples \textsl{clé=valeur} applicables à un chemin
TikZ.
-Par défaut aucune réservation de place n'est faite pour le filet qui sera tracé
+Par défaut, aucune réservation de place n'est faite pour le filet qui sera tracé
avec TikZ. On peut demander une réservation (horizontale pour un filet vertical
et verticale pour un filet horizontal) avec la clé |total-width| qui est donc en
quelque sorte la largeur du filet qui sera tracé (cette largeur n'est \emph{pas}
@@ -1736,7 +1884,7 @@ sept & huit & neuf
\end{center}
\medskip
-\item \emph{Troisième possibilité} : la clé |dotted|\par\nobreak
+\item \emph{Troisième possibilité} : la clé \Definition{dotted}\par\nobreak
\label{dotted}
\index{dotted (clé de «custom-line»)}
\indexcommand{hdottedline}
@@ -1753,15 +1901,14 @@ composantes de la matrice par |\Cdots|, |\Vdots|, etc. (voir
p.~\pageref{Cdots}).
\medskip
-L'extension \pkg{nicematrix} prédéfinit en fait les commandes |\hdottedline| et
-|\cdottedline| et la lettre «|:|» pour ces filets en
-pointillés.\footnote{Néanmoins, l'utilisateur peut écraser ces définitions de
+L'extension \pkg{nicematrix} prédéfinit en fait les commandes \Definition{hdottedline} et
+\Definition{cdottedline} et la lettre «|:|» pour ces filets en pointillés.\footnote{Néanmoins, l'utilisateur peut écraser ces définitions de
|\hdottedline|, |\cdottedline| et de «|:|» avec |custom-line| s'il le souhaite
(par exemple pour les remplacer par des lignes en tiretés).}
\smallskip
\begin{Code}
-% présent dans nicematrix.sty
+\emph{% présent dans nicematrix.sty}
\NiceMatrixOptions
{
custom-line =
@@ -1901,9 +2048,9 @@ peut placer le contenu de ce |code-before| entre les mots-clés |\CodeBefore| et
\smallskip
L'argument optionnel entre crochets est une liste de couples \textsl{clé=valeur}
-qui seront présentées au fur et à mesure. \footnote{Les clés disponibles sont
+qui seront présentées au fur et à mesure (les clés disponibles sont
\texttt{create-cell-nodes}, \texttt{sub-matrix} (et ses sous-clés) et
- \texttt{delimiters/color}.}
+ \texttt{delimiters/color}).
\smallskip
De nouvelles commandes sont disponibles dans ce |\CodeBefore|: |\cellcolor|,
@@ -1912,6 +2059,9 @@ De nouvelles commandes sont disponibles dans ce |\CodeBefore|: |\cellcolor|,
|\CodeBefore|, des nœuds PGF-TikZ de la forme \verb+(i-|j)+ correspondant à la
position des filets éventuels sont également accessibles : cf.
p.~\pageref{nodes-i}.}
+
+Les noms de certaines de ces commandes sont inspirés des noms des commandes de \pkg{colortbl}.
+
\label{code-before}
\index{cellcolor@\texttt{\textbackslash cellcolor}!commande du
\texttt{\textbackslash CodeBefore}}
@@ -1928,7 +2078,7 @@ De nouvelles commandes sont disponibles dans ce |\CodeBefore|: |\cellcolor|,
\index{arraycolor@\texttt{\textbackslash arraycolor} (commande du \texttt{\textbackslash
CodeBefore)}}
-Les noms de certaines de ces commandes sont inspirés des noms des commandes de \pkg{colortbl}.
+
\medskip
Ces commandes ne colorient pas les cases qui se trouvent dans les «coins» si la
@@ -2466,18 +2616,21 @@ celle proposée par \pkg{colortbl} (même si \pkg{colortbl} n'est pas chargé).
doit pour cela utiliser la clé |color-inside|\footnote{Il existe un alias pour
cette clé : \texttt{colortbl-like}.} dans l'environnement
concerné.\footnote{Pour le moment, cette clé n'est \emph{pas} disponible dans
- |\NiceMatrixOptions|.}
+ |\NiceMatrixOptions|.}o
On a alors accès aux commandes suivantes (les trois premières sont inspirées par
\pkg{colortbl} mais sont indépendantes de \pkg{colortbl}) :
\begin{itemize}
-\item \DefinitionCommande{cellcolor} qui colorie la case courante\footnote{Néanmoins, cette
+\item \DefinitionCommande{cellcolor} qui colorie la case courante\footnote{Cette
commande |\cellcolor| supprimera les espaces qui la suivent, ce que ne fait
- pas la commande |\cellcolor| de \pkg{colortbl}.} ;
+ pas la commande |\cellcolor| de \pkg{colortbl}. De plus, si on définit une
+ fonction au-dessus de |\cellcolor|, il faudra une fonction protégée au sens de
+TeX (alors que si c'était la commande |\cellcolor| de \pkg{colortbl}, il
+faudrait une fonction \emph{fully expandable}).} ;
\item \DefinitionCommande{rowcolor} à utiliser dans une case et qui colorie le
reste de la rangée;\footnote{Si vous souhaitez une commande pour colorier les
$n$~rangées suivantes, considérez la commande |\RowStyle| et sa clé
- |rowcolor|, p.~\pageref{RowStyle}}
+ |rowcolor|, p.~\pageref{RowStyle}.}
\item \DefinitionCommande{columncolor} à utiliser dans le préambule du tableau
de la même manière que la commande éponyme de \pkg{colortbl} (néanmoins,
contrairement à la commande |\columncolor| de \pkg{colortbl}, celle de
@@ -2527,12 +2680,11 @@ Dupont & Chantal & 15 janvier 1998 \\
\end{center}
\bigskip
-\colorbox{yellow!50}{\textbf{Nouveau 6.25}}\enskip Chaque utilisation de
-|\rowlistcolors| (et de |\rowcolors| qui en est un cas particulier) met un
-terme aux éventuels schémas\footnote{On a écrit \emph{schémas} au pluriel car on
- peut avoir plusieurs schémas en cours s'ils portent sur des colonnes
- différentes.} de coloriage en cours qui auraient été spécifiés par une
-commande |\rowlistcolors| précédente.
+Chaque utilisation de |\rowlistcolors| (et de |\rowcolors| qui en est un cas
+particulier) met un terme aux éventuels schémas\footnote{On a écrit
+ \emph{schémas} au pluriel car on peut avoir plusieurs schémas en cours s'ils
+ portent sur des colonnes différentes.} de coloriage en cours qui auraient été
+spécifiés par une commande |\rowlistcolors| précédente.
En particulier, on peut engager un coloriage des rangées avec
|\rowlistcolors{...}| et l'arrêter par un |\rowlistcolors{}| avec argument vide.
@@ -2567,10 +2719,9 @@ sept \\
\index{nocolor}
-\colorbox{yellow!50}{\textbf{Nouveau 6.26}}\enskip L'extension \pkg{nicematrix}
-propose la couleur spéciale |nocolor| utilisable dans toutes les commandes de
-coloriage fournies par \pkg{nicematrix} (dans le |\CodeBefore| ou bien dans le
-tableau proprement dit).
+L'extension \pkg{nicematrix} propose la couleur spéciale |nocolor| utilisable
+dans toutes les commandes de coloriage fournies par \pkg{nicematrix} (dans le
+|\CodeBefore| ou bien dans le tableau proprement dit).
Les cases marquées par cette couleur ne seront pas coloriées, quelles que soient
les autres commandes de coloriage qui auraient pu s'appliquer à ces cases.
@@ -2767,7 +2918,7 @@ $\begin{array}{c}
\end{bNiceMatrix} \\ \\
\begin{bNiceMatrix}
1 & 1245345 \\ 345 & 2
-\end{bNiceMatrix}
+\end{bNiceMatrix} \\
\end{array}$
\emph{\end{NiceMatrixBlock}}
\end{Code}
@@ -2778,8 +2929,8 @@ $\begin{array}{c}
\end{bNiceMatrix} \\ \\
\begin{bNiceMatrix}
1 & 1245345 \\ 345 & 2
-\end{bNiceMatrix}
-\end{array}$
+\end{bNiceMatrix} \\
+\end{array}$
\end{NiceMatrixBlock}
@@ -2989,8 +3140,9 @@ première colonne et une colonne |l| pour la dernière.\footnote{Si on souhaite
considérer la commande |\SubMatrix| disponible dans le |\CodeAfter| et le
|\CodeBefore| (cf. p.~\pageref{sub-matrix}).}
-\item On peut se demander comment \pkg{nicematrix} détermine le nombre de rangées et de colonnes nécessaires à la
-composition de la «dernière rangée» et de la «dernière colonne».
+\item On peut se demander comment \pkg{nicematrix} détermine le nombre de
+rangées et de colonnes nécessaires à la composition de la «dernière rangée» et
+de la «dernière colonne».
\begin{itemize}
\item Dans le cas d'un environnement avec préambule, comme |{NiceTabular}| ou
@@ -3308,8 +3460,8 @@ L'option |nullify-dots| «smashe» les instructions |\Ldots| (et ses variantes)
horizontalement mais aussi verticalement.
\medskip
-Attention : la clé |nullify-dots| a un nom qui peut prêter à confusion ; elle
-n'implique pas que la ligne en pointillés ne sera pas tracée !
+\textbf{Attention} : la clé |nullify-dots| a un nom qui peut prêter à confusion ;
+elle n'implique pas que la ligne en pointillés ne sera pas tracée !
\subsection{Les commandes \textbackslash Hdotsfor et \textbackslash Vdotsfor}
@@ -3448,8 +3600,8 @@ Avec cette option, l'environnement |{matrix}| est redéfini et se comporte comme
\end{itemize}
\medskip
-Par conséquent, avec les options |renew-dots| et |renew-matrix|, un code classique donne directement
-le résultat fourni par \pkg{nicematrix}.\par\nobreak
+Par conséquent, avec les options |renew-dots| et |renew-matrix|, un code
+classique donne directement le résultat fourni par \pkg{nicematrix}.\par\nobreak
\medskip
\begin{scope}
@@ -4250,11 +4402,11 @@ Les commandes |\OverBrace| et |\UnderBrace| acceptent en fait un premier
argument optionnel (entre crochets) pour une liste de couples
\textsl{clé=valeur}. Les clés disponibles sont les suivantes :
\begin{itemize}
-\item \Definition{left-shorten} et \Definition{right-shorten} qui ne prennent pas de valeur ; quand
-|left-shorten| est utilisée, l'abscisse de l'extrémité de gauche de l'accolade
-est calculée à partir du contenu du sous-tableau concerné alors que, sinon,
-c'est la position du filet vertical éventuel qui est utilisée (de même pour
-|right-shorten|) ;
+\item \Definition{left-shorten} et \Definition{right-shorten} qui ne prennent
+pas de valeur ; quand |left-shorten| est utilisée, l'abscisse de l'extrémité de
+gauche de l'accolade est calculée à partir du contenu du sous-tableau concerné
+alors que, sinon, c'est la position du filet vertical éventuel qui est utilisée
+(de même pour |right-shorten|) ;
\item \Definition{shorten}, qui est la conjonction des clés |left-shorten| et |right-shorten| ;
@@ -4284,23 +4436,23 @@ $\begin{pNiceMatrix}
\subsection{La commande \textbackslash TikzEveryCell dans le \textbackslash CodeAfter}
-\index{SubMatrix@\texttt{\textbackslash TikzEveryCell} (commande du
+\index{tikzeverycell@\texttt{\textbackslash TikzEveryCell} (commande du
\texttt{\textbackslash CodeAfter}\newline et du
\texttt{\textbackslash CodeBefore})|textbf}
\label{TikzEveryCell}
\index{empty (clé de \texttt{\textbackslash TikzEveryCell})}
\index{non empty (clé de \texttt{\textbackslash TikzEveryCell})}
-\colorbox{yellow!50}{\textbf{Nouveau 6.24}}\enskip La commande |\TikzEveryCell|
-exécute avec TikZ le chemin rectangulaire qui correspond à chaque case du
-tableau, avec comme paramètres TikZ l'argument de |\TikzEveryCell|. Cet argument
-doit être une liste de couples \textsl{clé=valeur} applicables à un chemin TikZ.
-En fait, cette commande s'applique à chaque case du tableau, exceptées celles
-situées dans les rangées et colonnes extérieures (cf.~p.~\pageref{exterior}) et
-celles situées dans les coins vides (quand la clé |corners| est utilisée:
-cf.~p.~\pageref{corners}). Elle s'applique en fait aussi à chaque bloc (sauf
-ceux qui ont la clé |transparent|) et ne s'applique pas aux cases individuelles
-situées dans ces blocs.
+La commande |\TikzEveryCell| exécute avec TikZ le chemin rectangulaire qui
+correspond à chaque case du tableau, avec comme paramètres TikZ l'argument de
+|\TikzEveryCell|. Cet argument doit être une liste de couples
+\textsl{clé=valeur} applicables à un chemin TikZ. En fait, cette commande
+s'applique à chaque case du tableau, exceptées celles situées dans les rangées
+et colonnes extérieures (cf.~p.~\pageref{exterior}) et celles situées dans les
+coins vides (quand la clé |corners| est utilisée: cf.~p.~\pageref{corners}).
+Elle s'applique en fait aussi à chaque bloc (sauf ceux qui ont la clé
+|transparent|) et ne s'applique pas aux cases individuelles situées dans ces
+blocs.
\medskip
En fait, dans la liste des clés passée en argument on peut mettre une clé
@@ -4339,7 +4491,8 @@ l'argument de |\TikzEveryCell|.
\bigskip
-La commande |\TikzEveryCell| possède deux clés :
+La commande |\TikzEveryCell| possède deux clés, utilisables en argument
+optionnel, entre crochets.
\begin{itemize}
\item avec la clé \Definition{empty}, la commande ne s'applique qu'aux cases
vides ;
@@ -4347,6 +4500,35 @@ vides ;
cases non vides.
\end{itemize}
+\medskip
+\begin{Code}[width=9cm]
+\renewcommand{\arraystretch}{1.4}
+\begin{NiceTabular}{cccccc}[hvlines]
+ P & O & U & R & V & U \\
+ O & & & E & I & \\
+ M & O & R & F & A & L \\
+ E & T & A & L & & E \\
+ L & A & S & E & R & S \\
+ O & & E & X & I & T
+\CodeAfter
+ \emph{\TikzEveryCell[empty]{fill=gray,draw}}
+\end{NiceTabular}
+\end{Code}
+\begin{scope}
+\renewcommand{\arraystretch}{1.4}
+\begin{NiceTabular}{cccccc}[hvlines]
+ P & O & U & R & V & U \\
+ O & & & E & I & \\
+ M & O & R & F & A & L \\
+ E & T & A & L & & E \\
+ L & A & S & E & R & S \\
+ O & & E & X & I & T
+\CodeAfter
+ \TikzEveryCell[empty]{fill=gray,draw}
+\end{NiceTabular}
+\end{scope}
+
+
\medskip
La commande |\TikzEveryCell| est en fait aussi disponible dans le |\CodeBefore|.
@@ -4452,6 +4634,7 @@ En fait, cette commande n'est disponible que si l'extension \pkg{enumitem} a ét
chargée (avant ou après \pkg{nicematrix}). Les notes sont en effet composées en
fin de tableau selon un type de liste défini par l'extension \pkg{enumitem}.
+\medskip
\begin{Code}
\begin{NiceTabular}{@{}llr@{}}
\toprule \RowStyle{\bfseries}
@@ -4498,12 +4681,10 @@ de l'environnement |{NiceTabular}|.
séparés par une virgule (comme avec l'option |multiple| de \pkg{footmisc} pour
les notes de pied de page).
-\item Si une commande |\tabularnote{...}| se trouve exactement à la fin d'une case
-(sans aucun espace après), l'appel de note est composé en débordement vers la
-droite (cela peut permettre de mieux conserver l'alignement des contenus d'une
-colonne). Depuis la version 6.20a, ce comportement n'a lieu que si le mode
-l'alignement de la case est |c| ou |r| (alignement horizontal centré ou en
-butée à droite).
+\item Si une commande |\tabularnote{...}| se trouve exactement à la fin d'une
+case (sans aucun espace après) et que le mode d'alignement de la colonne est |c|
+ou~|r|, l'appel de note est composé en débordement vers la droite (cela peut
+permettre de mieux conserver l'alignement des contenus d'une colonne).
\item Si la clé |notes/para| est utilisée, les notes sont composées à la fin du
tableau en un seul paragraphe.
@@ -4565,7 +4746,7 @@ Barrère & Bertrand & 86\\
Nightingale\emph{\tabularnote{Souvent considérée comme la première infirmière.}%
\tabularnote{Surnommée «la Dame à la Lampe».}}
& Florence\emph{\tabularnote{Cette note est commune à deux appels de notes.}} & 90 \\
-Schœlcher & Victor & 89\emph{\tabularnote{L’appel de note déborde à droite.}} \\
+Schœlcher & Victor & 89\emph{\tabularnote{L’appel de note déborde à droite.}}\\
Touchet & Marie\emph{\tabularnote{Cette note est commune à deux appels de notes.}} & 89 \\
Wallis & John & 87 \\
\bottomrule
@@ -4889,8 +5070,9 @@ semi-transparent pour estomper le tableau (attention : certains lecteurs de
\index{S (les colonnes S de \pkg{siunitx})}
\index{siunitx@\pkg{siunitx} (extension)}
-Si l'extension \pkg{siunitx} est chargée (avant ou après \pkg{nicematrix}), il est possible d'utiliser les colonnes
-de type |S| de \pkg{siunitx} dans les environnements de \pkg{nicematrix}. L'implémentation n'utilise explicitement
+Si l'extension \pkg{siunitx} est chargée (avant ou après \pkg{nicematrix}), il
+est possible d'utiliser les colonnes de type |S| de \pkg{siunitx} dans les
+environnements de \pkg{nicematrix}. L'implémentation n'utilise explicitement
aucune macro privée de \pkg{siunitx}.
\medskip
@@ -4952,8 +5134,9 @@ de la préfixer par |matrix|, ce qui fait que son nom devient |matrix/columns-ty
\label{rotate}
\index{rotate@\texttt{\textbackslash rotate}}
-Utilisée au début d'une case, la commande |\rotate| (fournie par \pkg{nicematrix}) compose le contenu après une
-rotation de 90° dans le sens direct.
+Utilisée au début d'une case, la commande |\rotate| (fournie par
+\pkg{nicematrix}) compose le contenu après une rotation de 90° dans le sens
+direct.
Dans l'exemple suivant, on l'utilise dans le |code-for-first-row|.\footnote{On
peut aussi l'utiliser dans |\RowStyle| (cf. p.~\pageref{RowStyle}).}
@@ -5055,7 +5238,8 @@ $\begin{bNiceArray}{cccc|c}[\emph{small},
\end{bNiceArray}$
\end{Code}
%
-\[\begin{bNiceArray}{cccc|c}[small, last-col, code-for-last-col = \scriptscriptstyle, columns-width=3mm]
+\[\begin{bNiceArray}{cccc|c}%
+ [small, last-col, code-for-last-col = \scriptscriptstyle, columns-width=3mm]
1 & -2 & 3 & 4 & 5 \\
0 & 3 & 2 & 1 & 2 & L_2 \gets 2 L_1 - L_2 \\
0 & 1 & 1 & 2 & 3 & L_3 \gets L_1 + L_3
@@ -5209,12 +5393,11 @@ dans les cases du tableau.\footnote{La raison en est que lorsque l'option |light
\medskip
\index{light-syntax-expanded}
-\colorbox{yellow!50}{\textbf{Nouveau 6.27}}\enskip La clé
-|light-syntax-expanded| a le même comportement que la clé |light-syntax| mais
-avec cette différence que le corps de l'environnement est complètement développé
-(au sens de TeX\footnote{Plus précisément, il s'agit d'une expansion de type |e|
-de L3.}) avant découpe en lignes (mais après l'extraction de l'éventuel
-|\CodeAfter|).
+La clé |light-syntax-expanded| a le même comportement que la clé |light-syntax|
+mais avec cette différence que le corps de l'environnement est complètement
+développé (au sens de TeX\footnote{Plus précisément, il s'agit d'une expansion
+ de type |e| de L3.}) avant découpe en lignes (mais après l'extraction de
+l'éventuel |\CodeAfter|).
\subsection{Couleur des délimiteurs}
@@ -5319,7 +5502,7 @@ lignes pointillées (cf.~p.~\pageref{Cdots}) et la détermination des «coins»
\medskip
Comme la création de ces nœuds requiert du temps et de la mémoire, il est
possible de la désactiver ponctuellement avec la clé |no-cell-nodes| pour
-accéler les compilations.
+accélerer les compilations.
\medskip
Tous les nœuds du document doivent avoir des noms deux à deux distincts et le
@@ -5339,16 +5522,16 @@ environnements (pour LaTeX, il s'agit d'une commande — complètement développ
\smallskip
\index{name!clé pour un environnement}
-Il est néanmoins recommandé de passer plutôt par la clé |name|\footnote{Depuis
- la version 6.20a, la valeur passée à cette clé est \emph{développée}, au sens
- de TeX.}. Celle-ci permet de donner un nom à l'environnement. Une fois
-l'environnement nommé, les nœuds sont accessibles à travers les noms
-«\textsl{nom}-$i$-$j$» où \textsl{nom} est le nom donné au tableau et $i$ et $j$
-les numéros de rangée et de colonne de la case considérée. On peut les utiliser
-avec \textsc{pgf} mais l'utilisateur final préférera sans doute utiliser TikZ
-(qui est une sur-couche de \textsc{pgf}). Il faut néanmoins se souvenir que
-\pkg{nicematrix} ne charge pas TikZ par défaut. Dans les exemples qui suivent,
-on suppose que TikZ a été chargé par l'utilisateur.
+Il est néanmoins recommandé de passer plutôt par la clé |name|\footnote{La
+ valeur passée à la clé |name| est \emph{développée}, au sens de TeX.}.
+Celle-ci permet de donner un nom à l'environnement. Une fois l'environnement
+nommé, les nœuds sont accessibles à travers les noms «\textsl{nom}-$i$-$j$» où
+\textsl{nom} est le nom donné au tableau et $i$ et $j$ les numéros de rangée et
+de colonne de la case considérée. On peut les utiliser avec \textsc{pgf} mais
+l'utilisateur final préférera sans doute utiliser TikZ (qui est une sur-couche
+de \textsc{pgf}). Il faut néanmoins se souvenir que \pkg{nicematrix} ne charge
+pas TikZ par défaut. Dans les exemples qui suivent, on suppose que TikZ a été
+chargé par l'utilisateur.
\medskip
\begin{Code}[width=11cm]
@@ -5774,9 +5957,14 @@ L'extension \pkg{nicematrix} crée un nœud PGF-TikZ nommé simplement $i$ (pré
du préfixe habituel) à l'intersection du filet horizontal de numéro $i$ et du
filet vertical de numéro~$i$ (ou plutôt la position potentielle de ces filets
car ils ne sont peut-être pas tracés). Le dernier nœud a aussi un alias nommé
-simplement |last|. Il existe aussi un nœud nommé $i$|.5| à mi-chemin entre le
-nœud $i$ et le nœud $i+1$.
+simplement |last|.
+\smallskip
+\colorbox{yellow!50}{\textbf{Modification 6.28}}\enskip Il existe aussi des nœuds nommés
+$i$|.1|, $i$|.2|, ... , $i$|.9| intermédiaires entre le nœud~$i$ et le
+nœud~$i+1$ (avant la version 6.28, seul le nœud $i$|.5| existait).
+
+\smallskip
Ces nœuds sont accessibles dans le
|\CodeAfter| mais aussi dans le |\CodeBefore|.
@@ -6193,10 +6381,18 @@ environnements de l'extension \pkg{nicematrix} ne sont pas affectés).
\medskip
L'extension \pkg{nicematrix} n'est pas compatible avec la classe \cls{ieeeaccess}
-(car cette classe n'est pas compatible avec PGF-TikZ).\footnote{Voir
- \url{https://tex.stackexchange.com/questions/528975/error-loading-tikz-in-ieeeaccess-class}}
+car cette classe n'est pas compatible avec PGF-TikZ. Il existe néanmoins une
+parade simple qui consiste à écrire:\footnote{Voir
+ \url{https://tex.stackexchange.com/questions/528975/error-loading-tikz-in-ieeeaccess-class}}\par\nobreak
+
+\begin{Code}
+\let\TeXyear\year
+\documentclass{IEEEaccess}
+\let\year\TeXyear
+\end{Code}
\medskip
+% l'information suivante est toujours d'actualité le 23 avril 2024
Pour pouvoir utiliser \pkg{nicematrix} avec la classe \cls{aastex631} (de
l'\emph{American Astronomical Society}), on doit ajouter dans le préambule du
fichier les lignes suivantes :
@@ -6780,7 +6976,7 @@ avec l'environnement |{NiceMatrixBlock}| et l'option |auto-columns-width|.
last-col, code-for-last-col = \color{blue}\scriptstyle,
vlines = 5 ,
matrix/columns-type = r ,
- no-cell-nodes
+ no-cell-nodes % facultatif
}
\setlength{\extrarowheight}{1mm}
\end{NiceMatrixBlock}
@@ -6882,7 +7078,7 @@ avec leur largeur maximale grâce à la clé booléenne |delimiters/max-width|.
last-col, code-for-last-col = \color{blue}\scriptstyle,
vlines = 5 ,
matrix/columns-type = r ,
- no-cell-nodes
+ no-cell-nodes % facultatif
}
\setlength{\extrarowheight}{1mm}
@@ -7093,7 +7289,7 @@ la commande |\Block| est laissé vide, le bloc est considéré comme mono-case.}
\label{exemple-CodeAfter}
\begin{Code}
-$\begin{pNiceArray}{>{\strut}cccc}[margin,rules/color=blue]
+$\begin{pNiceArray}{>{\strut}cccc}[margin,rules/color=blue,no-cell-nodes]
\emph{\Block[draw]{}{a_{11}}} & a_{12} & a_{13} & a_{14} \\
a_{21} & \emph{\Block[draw]{}{a_{22}}} & a_{23} & a_{24} \\
a_{31} & a_{32} & \emph{\Block[draw]{}{a_{33}}} & a_{34} \\
@@ -7101,7 +7297,7 @@ a_{41} & a_{42} & a_{43} & \emph{\Block[draw]{}{a_{44}}} \\
\end{pNiceArray}$
\end{Code}
%
-\[\begin{pNiceArray}{>{\strut}cccc}[margin,rules/color=blue]
+\[\begin{pNiceArray}{>{\strut}cccc}[margin,rules/color=blue,no-cell-nodes]
\Block[draw]{}{a_{11}} & a_{12} & a_{13} & a_{14} \\
a_{21} & \Block[draw]{}{a_{22}} & a_{23} & a_{24} \\
a_{31} & a_{32} & \Block[draw]{}{a_{33}} & a_{34} \\
@@ -7126,7 +7322,8 @@ Il est possible de colorier une rangée avec |\rowcolor| dans le |\CodeBefore|
\index{rowcolor@\texttt{\textbackslash rowcolor}!commande en tableau|textit}
\begin{Code}
-\begin{pNiceArray}{>{\strut}cccc}[margin, extra-margin=2pt,color-inside]
+\begin{pNiceArray}{>{\strut}cccc}% <-- % obligatoire
+ [margin, extra-margin=2pt,color-inside,no-cell-nodes]
\emph{\rowcolor{red!15}}A_{11} & A_{12} & A_{13} & A_{14} \\
A_{21} & \emph{\rowcolor{red!15}}A_{22} & A_{23} & A_{24} \\
A_{31} & A_{32} & \emph{\rowcolor{red!15}}A_{33} & A_{34} \\
@@ -7136,7 +7333,7 @@ Il est possible de colorier une rangée avec |\rowcolor| dans le |\CodeBefore|
-\[\begin{pNiceArray}{>{\strut}cccc}[margin, extra-margin=2pt,color-inside]
+\[\begin{pNiceArray}{>{\strut}cccc}[margin, extra-margin=2pt,color-inside,no-cell-nodes]
\rowcolor{red!15}A_{11} & A_{12} & A_{13} & A_{14} \\
A_{21} & \rowcolor{red!15}A_{22} & A_{23} & A_{24} \\
A_{31} & A_{32} & \rowcolor{red!15}A_{33} & A_{34} \\
@@ -7470,6 +7667,3 @@ TeXLive sont disponibles sur le serveur \textsc{svn} de TeXLive :
% End:
-
-
-
diff --git a/macros/latex/contrib/nicematrix/nicematrix.pdf b/macros/latex/contrib/nicematrix/nicematrix.pdf
index 7029ce1ed6..ae48ae0133 100644
--- a/macros/latex/contrib/nicematrix/nicematrix.pdf
+++ b/macros/latex/contrib/nicematrix/nicematrix.pdf
@@ -71,1913 +71,1979 @@ endobj
endobj
44 0 obj
-<< /S /GoTo /D (section.5) >>
+<< /S /GoTo /D (subsection.4.7) >>
endobj
47 0 obj
-(\376\377\000T\000h\000e\000\040\000r\000u\000l\000e\000s)
+(\376\377\000\134\000\134\000\040\000a\000n\000d\000\040\000\046\000\040\000i\000n\000\040\000t\000h\000e\000\040\000b\000l\000o\000c\000k\000s)
endobj
48 0 obj
-<< /S /GoTo /D (subsection.5.1) >>
+<< /S /GoTo /D (section.5) >>
endobj
51 0 obj
-(\376\377\000S\000o\000m\000e\000\040\000d\000i\000f\000f\000e\000r\000e\000n\000c\000e\000s\000\040\000w\000i\000t\000h\000\040\000t\000h\000e\000\040\000c\000l\000a\000s\000s\000i\000c\000a\000l\000\040\000e\000n\000v\000i\000r\000o\000n\000m\000e\000n\000t\000s)
+(\376\377\000T\000h\000e\000\040\000r\000u\000l\000e\000s)
endobj
52 0 obj
-<< /S /GoTo /D (subsubsection.5.1.1) >>
+<< /S /GoTo /D (subsection.5.1) >>
endobj
55 0 obj
-(\376\377\000T\000h\000e\000\040\000v\000e\000r\000t\000i\000c\000a\000l\000\040\000r\000u\000l\000e\000s)
+(\376\377\000S\000o\000m\000e\000\040\000d\000i\000f\000f\000e\000r\000e\000n\000c\000e\000s\000\040\000w\000i\000t\000h\000\040\000t\000h\000e\000\040\000c\000l\000a\000s\000s\000i\000c\000a\000l\000\040\000e\000n\000v\000i\000r\000o\000n\000m\000e\000n\000t\000s)
endobj
56 0 obj
-<< /S /GoTo /D (subsubsection.5.1.2) >>
+<< /S /GoTo /D (subsubsection.5.1.1) >>
endobj
59 0 obj
-(\376\377\000T\000h\000e\000\040\000c\000o\000m\000m\000a\000n\000d\000\040\000\134\000c\000l\000i\000n\000e)
+(\376\377\000T\000h\000e\000\040\000v\000e\000r\000t\000i\000c\000a\000l\000\040\000r\000u\000l\000e\000s)
endobj
60 0 obj
-<< /S /GoTo /D (subsection.5.2) >>
+<< /S /GoTo /D (subsubsection.5.1.2) >>
endobj
63 0 obj
-(\376\377\000T\000h\000e\000\040\000t\000h\000i\000c\000k\000n\000e\000s\000s\000\040\000a\000n\000d\000\040\000t\000h\000e\000\040\000c\000o\000l\000o\000r\000\040\000o\000f\000\040\000t\000h\000e\000\040\000r\000u\000l\000e\000s)
+(\376\377\000T\000h\000e\000\040\000c\000o\000m\000m\000a\000n\000d\000\040\000\134\000c\000l\000i\000n\000e)
endobj
64 0 obj
-<< /S /GoTo /D (subsection.5.3) >>
+<< /S /GoTo /D (subsection.5.2) >>
endobj
67 0 obj
-(\376\377\000T\000h\000e\000\040\000t\000o\000o\000l\000s\000\040\000o\000f\000\040\000n\000i\000c\000e\000m\000a\000t\000r\000i\000x\000\040\000f\000o\000r\000\040\000t\000h\000e\000\040\000r\000u\000l\000e\000s)
+(\376\377\000T\000h\000e\000\040\000t\000h\000i\000c\000k\000n\000e\000s\000s\000\040\000a\000n\000d\000\040\000t\000h\000e\000\040\000c\000o\000l\000o\000r\000\040\000o\000f\000\040\000t\000h\000e\000\040\000r\000u\000l\000e\000s)
endobj
68 0 obj
-<< /S /GoTo /D (subsubsection.5.3.1) >>
+<< /S /GoTo /D (subsection.5.3) >>
endobj
71 0 obj
-(\376\377\000T\000h\000e\000\040\000k\000e\000y\000s\000\040\000h\000l\000i\000n\000e\000s\000\040\000a\000n\000d\000\040\000v\000l\000i\000n\000e\000s)
+(\376\377\000T\000h\000e\000\040\000t\000o\000o\000l\000s\000\040\000o\000f\000\040\000n\000i\000c\000e\000m\000a\000t\000r\000i\000x\000\040\000f\000o\000r\000\040\000t\000h\000e\000\040\000r\000u\000l\000e\000s)
endobj
72 0 obj
-<< /S /GoTo /D (subsubsection.5.3.2) >>
+<< /S /GoTo /D (subsubsection.5.3.1) >>
endobj
75 0 obj
-(\376\377\000T\000h\000e\000\040\000k\000e\000y\000s\000\040\000h\000v\000l\000i\000n\000e\000s\000\040\000a\000n\000d\000\040\000h\000v\000l\000i\000n\000e\000s\000-\000e\000x\000c\000e\000p\000t\000-\000b\000o\000r\000d\000e\000r\000s)
+(\376\377\000T\000h\000e\000\040\000k\000e\000y\000s\000\040\000h\000l\000i\000n\000e\000s\000\040\000a\000n\000d\000\040\000v\000l\000i\000n\000e\000s)
endobj
76 0 obj
-<< /S /GoTo /D (subsubsection.5.3.3) >>
+<< /S /GoTo /D (subsubsection.5.3.2) >>
endobj
79 0 obj
-(\376\377\000T\000h\000e\000\040\000\050\000e\000m\000p\000t\000y\000\051\000\040\000c\000o\000r\000n\000e\000r\000s)
+(\376\377\000T\000h\000e\000\040\000k\000e\000y\000s\000\040\000h\000v\000l\000i\000n\000e\000s\000\040\000a\000n\000d\000\040\000h\000v\000l\000i\000n\000e\000s\000-\000e\000x\000c\000e\000p\000t\000-\000b\000o\000r\000d\000e\000r\000s)
endobj
80 0 obj
-<< /S /GoTo /D (subsubsection.5.3.4) >>
+<< /S /GoTo /D (subsubsection.5.3.3) >>
endobj
83 0 obj
-(\376\377\000T\000h\000e\000\040\000c\000o\000m\000m\000a\000n\000d\000\040\000\134\000d\000i\000a\000g\000b\000o\000x)
+(\376\377\000T\000h\000e\000\040\000\050\000e\000m\000p\000t\000y\000\051\000\040\000c\000o\000r\000n\000e\000r\000s)
endobj
84 0 obj
-<< /S /GoTo /D (subsubsection.5.3.5) >>
+<< /S /GoTo /D (subsubsection.5.3.4) >>
endobj
87 0 obj
-(\376\377\000C\000o\000m\000m\000a\000n\000d\000s\000\040\000f\000o\000r\000\040\000c\000u\000s\000t\000o\000m\000i\000z\000e\000d\000\040\000r\000u\000l\000e\000s)
+(\376\377\000T\000h\000e\000\040\000c\000o\000m\000m\000a\000n\000d\000\040\000\134\000d\000i\000a\000g\000b\000o\000x)
endobj
88 0 obj
-<< /S /GoTo /D (section.6) >>
+<< /S /GoTo /D (subsubsection.5.3.5) >>
endobj
91 0 obj
-(\376\377\000T\000h\000e\000\040\000c\000o\000l\000o\000r\000\040\000o\000f\000\040\000t\000h\000e\000\040\000b\000a\000c\000k\000g\000r\000o\000u\000n\000d\000\040\000o\000f\000\040\000t\000h\000e\000\040\000r\000o\000w\000s\000\040\000a\000n\000d\000\040\000c\000o\000l\000u\000m\000n\000s)
+(\376\377\000C\000o\000m\000m\000a\000n\000d\000s\000\040\000f\000o\000r\000\040\000c\000u\000s\000t\000o\000m\000i\000z\000e\000d\000\040\000r\000u\000l\000e\000s)
endobj
92 0 obj
-<< /S /GoTo /D (subsection.6.1) >>
+<< /S /GoTo /D (section.6) >>
endobj
95 0 obj
-(\376\377\000U\000s\000e\000\040\000o\000f\000\040\000c\000o\000l\000o\000r\000t\000b\000l)
+(\376\377\000T\000h\000e\000\040\000c\000o\000l\000o\000r\000\040\000o\000f\000\040\000t\000h\000e\000\040\000b\000a\000c\000k\000g\000r\000o\000u\000n\000d\000\040\000o\000f\000\040\000t\000h\000e\000\040\000r\000o\000w\000s\000\040\000a\000n\000d\000\040\000c\000o\000l\000u\000m\000n\000s)
endobj
96 0 obj
-<< /S /GoTo /D (subsection.6.2) >>
+<< /S /GoTo /D (subsection.6.1) >>
endobj
99 0 obj
-(\376\377\000T\000h\000e\000\040\000t\000o\000o\000l\000s\000\040\000o\000f\000\040\000n\000i\000c\000e\000m\000a\000t\000r\000i\000x\000\040\000i\000n\000\040\000t\000h\000e\000\040\000\134\000C\000o\000d\000e\000B\000e\000f\000o\000r\000e)
+(\376\377\000U\000s\000e\000\040\000o\000f\000\040\000c\000o\000l\000o\000r\000t\000b\000l)
endobj
100 0 obj
-<< /S /GoTo /D (subsection.6.3) >>
+<< /S /GoTo /D (subsection.6.2) >>
endobj
103 0 obj
-(\376\377\000C\000o\000l\000o\000r\000\040\000t\000o\000o\000l\000s\000\040\000t\000o\000\040\000b\000e\000\040\000u\000s\000e\000d\000\040\000i\000n\000s\000i\000d\000e\000\040\000t\000h\000e\000\040\000t\000a\000b\000u\000l\000a\000r)
+(\376\377\000T\000h\000e\000\040\000t\000o\000o\000l\000s\000\040\000o\000f\000\040\000n\000i\000c\000e\000m\000a\000t\000r\000i\000x\000\040\000i\000n\000\040\000t\000h\000e\000\040\000\134\000C\000o\000d\000e\000B\000e\000f\000o\000r\000e)
endobj
104 0 obj
-<< /S /GoTo /D (subsection.6.4) >>
+<< /S /GoTo /D (subsection.6.3) >>
endobj
107 0 obj
-(\376\377\000T\000h\000e\000\040\000s\000p\000e\000c\000i\000a\000l\000\040\000c\000o\000l\000o\000r\000\040\000`\000`\000n\000o\000c\000o\000l\000o\000r\000'\000')
+(\376\377\000C\000o\000l\000o\000r\000\040\000t\000o\000o\000l\000s\000\040\000t\000o\000\040\000b\000e\000\040\000u\000s\000e\000d\000\040\000i\000n\000s\000i\000d\000e\000\040\000t\000h\000e\000\040\000t\000a\000b\000u\000l\000a\000r)
endobj
108 0 obj
-<< /S /GoTo /D (section.7) >>
+<< /S /GoTo /D (subsection.6.4) >>
endobj
111 0 obj
-(\376\377\000T\000h\000e\000\040\000c\000o\000m\000m\000a\000n\000d\000\040\000\134\000R\000o\000w\000S\000t\000y\000l\000e)
+(\376\377\000T\000h\000e\000\040\000s\000p\000e\000c\000i\000a\000l\000\040\000c\000o\000l\000o\000r\000\040\000`\000`\000n\000o\000c\000o\000l\000o\000r\000'\000')
endobj
112 0 obj
-<< /S /GoTo /D (section.8) >>
+<< /S /GoTo /D (section.7) >>
endobj
115 0 obj
-(\376\377\000T\000h\000e\000\040\000w\000i\000d\000t\000h\000\040\000o\000f\000\040\000t\000h\000e\000\040\000c\000o\000l\000u\000m\000n\000s)
+(\376\377\000T\000h\000e\000\040\000c\000o\000m\000m\000a\000n\000d\000\040\000\134\000R\000o\000w\000S\000t\000y\000l\000e)
endobj
116 0 obj
-<< /S /GoTo /D (subsection.8.1) >>
+<< /S /GoTo /D (section.8) >>
endobj
119 0 obj
-(\376\377\000B\000a\000s\000i\000c\000\040\000t\000o\000o\000l\000s)
+(\376\377\000T\000h\000e\000\040\000w\000i\000d\000t\000h\000\040\000o\000f\000\040\000t\000h\000e\000\040\000c\000o\000l\000u\000m\000n\000s)
endobj
120 0 obj
-<< /S /GoTo /D (subsection.8.2) >>
+<< /S /GoTo /D (subsection.8.1) >>
endobj
123 0 obj
-(\376\377\000T\000h\000e\000\040\000c\000o\000l\000u\000m\000n\000s\000\040\000X)
+(\376\377\000B\000a\000s\000i\000c\000\040\000t\000o\000o\000l\000s)
endobj
124 0 obj
-<< /S /GoTo /D (subsection.8.3) >>
+<< /S /GoTo /D (subsection.8.2) >>
endobj
127 0 obj
-(\376\377\000T\000h\000e\000\040\000c\000o\000l\000u\000m\000n\000s\000\040\000V\000\040\000o\000f\000\040\000v\000a\000r\000w\000i\000d\000t\000h)
+(\376\377\000T\000h\000e\000\040\000c\000o\000l\000u\000m\000n\000s\000\040\000X)
endobj
128 0 obj
-<< /S /GoTo /D (section.9) >>
+<< /S /GoTo /D (subsection.8.3) >>
endobj
131 0 obj
-(\376\377\000T\000h\000e\000\040\000e\000x\000t\000e\000r\000i\000o\000r\000\040\000r\000o\000w\000s\000\040\000a\000n\000d\000\040\000c\000o\000l\000u\000m\000n\000s)
+(\376\377\000T\000h\000e\000\040\000c\000o\000l\000u\000m\000n\000s\000\040\000V\000\040\000o\000f\000\040\000v\000a\000r\000w\000i\000d\000t\000h)
endobj
132 0 obj
-<< /S /GoTo /D (section.10) >>
+<< /S /GoTo /D (section.9) >>
endobj
135 0 obj
-(\376\377\000T\000h\000e\000\040\000c\000o\000n\000t\000i\000n\000u\000o\000u\000s\000\040\000d\000o\000t\000t\000e\000d\000\040\000l\000i\000n\000e\000s)
+(\376\377\000T\000h\000e\000\040\000e\000x\000t\000e\000r\000i\000o\000r\000\040\000r\000o\000w\000s\000\040\000a\000n\000d\000\040\000c\000o\000l\000u\000m\000n\000s)
endobj
136 0 obj
-<< /S /GoTo /D (subsection.10.1) >>
+<< /S /GoTo /D (section.10) >>
endobj
139 0 obj
-(\376\377\000T\000h\000e\000\040\000o\000p\000t\000i\000o\000n\000\040\000n\000u\000l\000l\000i\000f\000y\000-\000d\000o\000t\000s)
+(\376\377\000T\000h\000e\000\040\000c\000o\000n\000t\000i\000n\000u\000o\000u\000s\000\040\000d\000o\000t\000t\000e\000d\000\040\000l\000i\000n\000e\000s)
endobj
140 0 obj
-<< /S /GoTo /D (subsection.10.2) >>
+<< /S /GoTo /D (subsection.10.1) >>
endobj
143 0 obj
-(\376\377\000T\000h\000e\000\040\000c\000o\000m\000m\000a\000n\000d\000s\000\040\000\134\000H\000d\000o\000t\000s\000f\000o\000r\000\040\000a\000n\000d\000\040\000\134\000V\000d\000o\000t\000s\000f\000o\000r)
+(\376\377\000T\000h\000e\000\040\000o\000p\000t\000i\000o\000n\000\040\000n\000u\000l\000l\000i\000f\000y\000-\000d\000o\000t\000s)
endobj
144 0 obj
-<< /S /GoTo /D (subsection.10.3) >>
+<< /S /GoTo /D (subsection.10.2) >>
endobj
147 0 obj
-(\376\377\000H\000o\000w\000\040\000t\000o\000\040\000g\000e\000n\000e\000r\000a\000t\000e\000\040\000t\000h\000e\000\040\000c\000o\000n\000t\000i\000n\000u\000o\000u\000s\000\040\000d\000o\000t\000t\000e\000d\000\040\000l\000i\000n\000e\000s\000\040\000t\000r\000a\000n\000s\000p\000a\000r\000e\000n\000t\000l\000y)
+(\376\377\000T\000h\000e\000\040\000c\000o\000m\000m\000a\000n\000d\000s\000\040\000\134\000H\000d\000o\000t\000s\000f\000o\000r\000\040\000a\000n\000d\000\040\000\134\000V\000d\000o\000t\000s\000f\000o\000r)
endobj
148 0 obj
-<< /S /GoTo /D (subsection.10.4) >>
+<< /S /GoTo /D (subsection.10.3) >>
endobj
151 0 obj
-(\376\377\000T\000h\000e\000\040\000l\000a\000b\000e\000l\000s\000\040\000o\000f\000\040\000t\000h\000e\000\040\000d\000o\000t\000t\000e\000d\000\040\000l\000i\000n\000e\000s)
+(\376\377\000H\000o\000w\000\040\000t\000o\000\040\000g\000e\000n\000e\000r\000a\000t\000e\000\040\000t\000h\000e\000\040\000c\000o\000n\000t\000i\000n\000u\000o\000u\000s\000\040\000d\000o\000t\000t\000e\000d\000\040\000l\000i\000n\000e\000s\000\040\000t\000r\000a\000n\000s\000p\000a\000r\000e\000n\000t\000l\000y)
endobj
152 0 obj
-<< /S /GoTo /D (subsection.10.5) >>
+<< /S /GoTo /D (subsection.10.4) >>
endobj
155 0 obj
-(\376\377\000C\000u\000s\000t\000o\000m\000i\000s\000a\000t\000i\000o\000n\000\040\000o\000f\000\040\000t\000h\000e\000\040\000d\000o\000t\000t\000e\000d\000\040\000l\000i\000n\000e\000s)
+(\376\377\000T\000h\000e\000\040\000l\000a\000b\000e\000l\000s\000\040\000o\000f\000\040\000t\000h\000e\000\040\000d\000o\000t\000t\000e\000d\000\040\000l\000i\000n\000e\000s)
endobj
156 0 obj
-<< /S /GoTo /D (subsection.10.6) >>
+<< /S /GoTo /D (subsection.10.5) >>
endobj
159 0 obj
-(\376\377\000T\000h\000e\000\040\000d\000o\000t\000t\000e\000d\000\040\000l\000i\000n\000e\000s\000\040\000a\000n\000d\000\040\000t\000h\000e\000\040\000r\000u\000l\000e\000s)
+(\376\377\000C\000u\000s\000t\000o\000m\000i\000s\000a\000t\000i\000o\000n\000\040\000o\000f\000\040\000t\000h\000e\000\040\000d\000o\000t\000t\000e\000d\000\040\000l\000i\000n\000e\000s)
endobj
160 0 obj
-<< /S /GoTo /D (section.11) >>
+<< /S /GoTo /D (subsection.10.6) >>
endobj
163 0 obj
-(\376\377\000D\000e\000l\000i\000m\000i\000t\000e\000r\000s\000\040\000i\000n\000\040\000t\000h\000e\000\040\000p\000r\000e\000a\000m\000b\000l\000e\000\040\000o\000f\000\040\000t\000h\000e\000\040\000e\000n\000v\000i\000r\000o\000n\000m\000e\000n\000t)
+(\376\377\000T\000h\000e\000\040\000d\000o\000t\000t\000e\000d\000\040\000l\000i\000n\000e\000s\000\040\000a\000n\000d\000\040\000t\000h\000e\000\040\000r\000u\000l\000e\000s)
endobj
164 0 obj
-<< /S /GoTo /D (section.12) >>
+<< /S /GoTo /D (section.11) >>
endobj
167 0 obj
-(\376\377\000T\000h\000e\000\040\000\134\000C\000o\000d\000e\000A\000f\000t\000e\000r)
+(\376\377\000D\000e\000l\000i\000m\000i\000t\000e\000r\000s\000\040\000i\000n\000\040\000t\000h\000e\000\040\000p\000r\000e\000a\000m\000b\000l\000e\000\040\000o\000f\000\040\000t\000h\000e\000\040\000e\000n\000v\000i\000r\000o\000n\000m\000e\000n\000t)
endobj
168 0 obj
-<< /S /GoTo /D (subsection.12.1) >>
+<< /S /GoTo /D (section.12) >>
endobj
171 0 obj
-(\376\377\000T\000h\000e\000\040\000c\000o\000m\000m\000a\000n\000d\000\040\000\134\000l\000i\000n\000e\000\040\000i\000n\000\040\000t\000h\000e\000\040\000\134\000C\000o\000d\000e\000A\000f\000t\000e\000r)
+(\376\377\000T\000h\000e\000\040\000\134\000C\000o\000d\000e\000A\000f\000t\000e\000r)
endobj
172 0 obj
-<< /S /GoTo /D (subsection.12.2) >>
+<< /S /GoTo /D (subsection.12.1) >>
endobj
175 0 obj
-(\376\377\000T\000h\000e\000\040\000c\000o\000m\000m\000a\000n\000d\000\040\000\134\000S\000u\000b\000M\000a\000t\000r\000i\000x\000\040\000i\000n\000\040\000t\000h\000e\000\040\000\134\000C\000o\000d\000e\000A\000f\000t\000e\000r\000\040\000\050\000a\000n\000d\000\040\000t\000h\000e\000\040\000\134\000C\000o\000d\000e\000B\000e\000f\000o\000r\000e\000\051)
+(\376\377\000T\000h\000e\000\040\000c\000o\000m\000m\000a\000n\000d\000\040\000\134\000l\000i\000n\000e\000\040\000i\000n\000\040\000t\000h\000e\000\040\000\134\000C\000o\000d\000e\000A\000f\000t\000e\000r)
endobj
176 0 obj
-<< /S /GoTo /D (subsection.12.3) >>
+<< /S /GoTo /D (subsection.12.2) >>
endobj
179 0 obj
-(\376\377\000T\000h\000e\000\040\000c\000o\000m\000m\000a\000n\000d\000s\000\040\000\134\000O\000v\000e\000r\000B\000r\000a\000c\000e\000\040\000a\000n\000d\000\040\000\134\000U\000n\000d\000e\000r\000B\000r\000a\000c\000e\000\040\000i\000n\000\040\000t\000h\000e\000\040\000\134\000C\000o\000d\000e\000A\000f\000t\000e\000r)
+(\376\377\000T\000h\000e\000\040\000c\000o\000m\000m\000a\000n\000d\000\040\000\134\000S\000u\000b\000M\000a\000t\000r\000i\000x\000\040\000i\000n\000\040\000t\000h\000e\000\040\000\134\000C\000o\000d\000e\000A\000f\000t\000e\000r\000\040\000\050\000a\000n\000d\000\040\000t\000h\000e\000\040\000\134\000C\000o\000d\000e\000B\000e\000f\000o\000r\000e\000\051)
endobj
180 0 obj
-<< /S /GoTo /D (subsection.12.4) >>
+<< /S /GoTo /D (subsection.12.3) >>
endobj
183 0 obj
-(\376\377\000T\000h\000e\000\040\000c\000o\000m\000m\000a\000n\000d\000\040\000\134\000T\000i\000k\000z\000E\000v\000e\000r\000y\000C\000e\000l\000l\000\040\000i\000n\000\040\000t\000h\000e\000\040\000\134\000C\000o\000d\000e\000A\000f\000t\000e\000r)
+(\376\377\000T\000h\000e\000\040\000c\000o\000m\000m\000a\000n\000d\000s\000\040\000\134\000O\000v\000e\000r\000B\000r\000a\000c\000e\000\040\000a\000n\000d\000\040\000\134\000U\000n\000d\000e\000r\000B\000r\000a\000c\000e\000\040\000i\000n\000\040\000t\000h\000e\000\040\000\134\000C\000o\000d\000e\000A\000f\000t\000e\000r)
endobj
184 0 obj
-<< /S /GoTo /D (section.13) >>
+<< /S /GoTo /D (subsection.12.4) >>
endobj
187 0 obj
-(\376\377\000C\000a\000p\000t\000i\000o\000n\000s\000\040\000a\000n\000d\000\040\000n\000o\000t\000e\000s\000\040\000i\000n\000\040\000t\000h\000e\000\040\000t\000a\000b\000u\000l\000a\000r\000s)
+(\376\377\000T\000h\000e\000\040\000c\000o\000m\000m\000a\000n\000d\000\040\000\134\000T\000i\000k\000z\000E\000v\000e\000r\000y\000C\000e\000l\000l\000\040\000i\000n\000\040\000t\000h\000e\000\040\000\134\000C\000o\000d\000e\000A\000f\000t\000e\000r)
endobj
188 0 obj
-<< /S /GoTo /D (subsection.13.1) >>
+<< /S /GoTo /D (section.13) >>
endobj
191 0 obj
-(\376\377\000C\000a\000p\000t\000i\000o\000n\000\040\000o\000f\000\040\000a\000\040\000t\000a\000b\000u\000l\000a\000r)
+(\376\377\000C\000a\000p\000t\000i\000o\000n\000s\000\040\000a\000n\000d\000\040\000n\000o\000t\000e\000s\000\040\000i\000n\000\040\000t\000h\000e\000\040\000t\000a\000b\000u\000l\000a\000r\000s)
endobj
192 0 obj
-<< /S /GoTo /D (subsection.13.2) >>
+<< /S /GoTo /D (subsection.13.1) >>
endobj
195 0 obj
-(\376\377\000T\000h\000e\000\040\000f\000o\000o\000t\000n\000o\000t\000e\000s)
+(\376\377\000C\000a\000p\000t\000i\000o\000n\000\040\000o\000f\000\040\000a\000\040\000t\000a\000b\000u\000l\000a\000r)
endobj
196 0 obj
-<< /S /GoTo /D (subsection.13.3) >>
+<< /S /GoTo /D (subsection.13.2) >>
endobj
199 0 obj
-(\376\377\000T\000h\000e\000\040\000n\000o\000t\000e\000s\000\040\000o\000f\000\040\000t\000a\000b\000u\000l\000a\000r)
+(\376\377\000T\000h\000e\000\040\000f\000o\000o\000t\000n\000o\000t\000e\000s)
endobj
200 0 obj
-<< /S /GoTo /D (subsection.13.4) >>
+<< /S /GoTo /D (subsection.13.3) >>
endobj
203 0 obj
-(\376\377\000C\000u\000s\000t\000o\000m\000i\000s\000a\000t\000i\000o\000n\000\040\000o\000f\000\040\000t\000h\000e\000\040\000t\000a\000b\000u\000l\000a\000r\000\040\000n\000o\000t\000e\000s)
+(\376\377\000T\000h\000e\000\040\000n\000o\000t\000e\000s\000\040\000o\000f\000\040\000t\000a\000b\000u\000l\000a\000r)
endobj
204 0 obj
-<< /S /GoTo /D (subsection.13.5) >>
+<< /S /GoTo /D (subsection.13.4) >>
endobj
207 0 obj
-(\376\377\000U\000s\000e\000\040\000o\000f\000\040\000\173\000N\000i\000c\000e\000T\000a\000b\000u\000l\000a\000r\000\175\000\040\000w\000i\000t\000h\000\040\000t\000h\000r\000e\000e\000p\000a\000r\000t\000t\000a\000b\000l\000e)
+(\376\377\000C\000u\000s\000t\000o\000m\000i\000s\000a\000t\000i\000o\000n\000\040\000o\000f\000\040\000t\000h\000e\000\040\000t\000a\000b\000u\000l\000a\000r\000\040\000n\000o\000t\000e\000s)
endobj
208 0 obj
-<< /S /GoTo /D (section.14) >>
+<< /S /GoTo /D (subsection.13.5) >>
endobj
211 0 obj
-(\376\377\000O\000t\000h\000e\000r\000\040\000f\000e\000a\000t\000u\000r\000e\000s)
+(\376\377\000U\000s\000e\000\040\000o\000f\000\040\000\173\000N\000i\000c\000e\000T\000a\000b\000u\000l\000a\000r\000\175\000\040\000w\000i\000t\000h\000\040\000t\000h\000r\000e\000e\000p\000a\000r\000t\000t\000a\000b\000l\000e)
endobj
212 0 obj
-<< /S /GoTo /D (subsection.14.1) >>
+<< /S /GoTo /D (section.14) >>
endobj
215 0 obj
-(\376\377\000T\000h\000e\000\040\000k\000e\000y\000\040\000r\000o\000u\000n\000d\000e\000d\000-\000c\000o\000r\000n\000e\000r\000s)
+(\376\377\000O\000t\000h\000e\000r\000\040\000f\000e\000a\000t\000u\000r\000e\000s)
endobj
216 0 obj
-<< /S /GoTo /D (subsection.14.2) >>
+<< /S /GoTo /D (subsection.14.1) >>
endobj
219 0 obj
-(\376\377\000C\000o\000m\000m\000a\000n\000d\000\040\000\134\000S\000h\000o\000w\000C\000e\000l\000l\000N\000a\000m\000e\000s)
+(\376\377\000T\000h\000e\000\040\000k\000e\000y\000\040\000r\000o\000u\000n\000d\000e\000d\000-\000c\000o\000r\000n\000e\000r\000s)
endobj
220 0 obj
-<< /S /GoTo /D (subsection.14.3) >>
+<< /S /GoTo /D (subsection.14.2) >>
endobj
223 0 obj
-(\376\377\000U\000s\000e\000\040\000o\000f\000\040\000t\000h\000e\000\040\000c\000o\000l\000u\000m\000n\000\040\000t\000y\000p\000e\000\040\000S\000\040\000o\000f\000\040\000s\000i\000u\000n\000i\000t\000x)
+(\376\377\000C\000o\000m\000m\000a\000n\000d\000\040\000\134\000S\000h\000o\000w\000C\000e\000l\000l\000N\000a\000m\000e\000s)
endobj
224 0 obj
-<< /S /GoTo /D (subsection.14.4) >>
+<< /S /GoTo /D (subsection.14.3) >>
endobj
227 0 obj
-(\376\377\000D\000e\000f\000a\000u\000l\000t\000\040\000c\000o\000l\000u\000m\000n\000\040\000t\000y\000p\000e\000\040\000i\000n\000\040\000\173\000N\000i\000c\000e\000M\000a\000t\000r\000i\000x\000\175)
+(\376\377\000U\000s\000e\000\040\000o\000f\000\040\000t\000h\000e\000\040\000c\000o\000l\000u\000m\000n\000\040\000t\000y\000p\000e\000\040\000S\000\040\000o\000f\000\040\000s\000i\000u\000n\000i\000t\000x)
endobj
228 0 obj
-<< /S /GoTo /D (subsection.14.5) >>
+<< /S /GoTo /D (subsection.14.4) >>
endobj
231 0 obj
-(\376\377\000T\000h\000e\000\040\000c\000o\000m\000m\000a\000n\000d\000\040\000\134\000r\000o\000t\000a\000t\000e)
+(\376\377\000D\000e\000f\000a\000u\000l\000t\000\040\000c\000o\000l\000u\000m\000n\000\040\000t\000y\000p\000e\000\040\000i\000n\000\040\000\173\000N\000i\000c\000e\000M\000a\000t\000r\000i\000x\000\175)
endobj
232 0 obj
-<< /S /GoTo /D (subsection.14.6) >>
+<< /S /GoTo /D (subsection.14.5) >>
endobj
235 0 obj
-(\376\377\000T\000h\000e\000\040\000o\000p\000t\000i\000o\000n\000\040\000s\000m\000a\000l\000l)
+(\376\377\000T\000h\000e\000\040\000c\000o\000m\000m\000a\000n\000d\000\040\000\134\000r\000o\000t\000a\000t\000e)
endobj
236 0 obj
-<< /S /GoTo /D (subsection.14.7) >>
+<< /S /GoTo /D (subsection.14.6) >>
endobj
239 0 obj
-(\376\377\000T\000h\000e\000\040\000c\000o\000u\000n\000t\000e\000r\000s\000\040\000i\000R\000o\000w\000\040\000a\000n\000d\000\040\000j\000C\000o\000l)
+(\376\377\000T\000h\000e\000\040\000o\000p\000t\000i\000o\000n\000\040\000s\000m\000a\000l\000l)
endobj
240 0 obj
-<< /S /GoTo /D (subsection.14.8) >>
+<< /S /GoTo /D (subsection.14.7) >>
endobj
243 0 obj
-(\376\377\000T\000h\000e\000\040\000k\000e\000y\000\040\000l\000i\000g\000h\000t\000-\000s\000y\000n\000t\000a\000x)
+(\376\377\000T\000h\000e\000\040\000c\000o\000u\000n\000t\000e\000r\000s\000\040\000i\000R\000o\000w\000\040\000a\000n\000d\000\040\000j\000C\000o\000l)
endobj
244 0 obj
-<< /S /GoTo /D (subsection.14.9) >>
+<< /S /GoTo /D (subsection.14.8) >>
endobj
247 0 obj
-(\376\377\000C\000o\000l\000o\000r\000\040\000o\000f\000\040\000t\000h\000e\000\040\000d\000e\000l\000i\000m\000i\000t\000e\000r\000s)
+(\376\377\000T\000h\000e\000\040\000k\000e\000y\000\040\000l\000i\000g\000h\000t\000-\000s\000y\000n\000t\000a\000x)
endobj
248 0 obj
-<< /S /GoTo /D (subsection.14.10) >>
+<< /S /GoTo /D (subsection.14.9) >>
endobj
251 0 obj
-(\376\377\000T\000h\000e\000\040\000e\000n\000v\000i\000r\000o\000n\000m\000e\000n\000t\000\040\000\173\000N\000i\000c\000e\000A\000r\000r\000a\000y\000W\000i\000t\000h\000D\000e\000l\000i\000m\000s\000\175)
+(\376\377\000C\000o\000l\000o\000r\000\040\000o\000f\000\040\000t\000h\000e\000\040\000d\000e\000l\000i\000m\000i\000t\000e\000r\000s)
endobj
252 0 obj
-<< /S /GoTo /D (subsection.14.11) >>
+<< /S /GoTo /D (subsection.14.10) >>
endobj
255 0 obj
-(\376\377\000T\000h\000e\000\040\000c\000o\000m\000m\000a\000n\000d\000\040\000\134\000O\000n\000l\000y\000M\000a\000i\000n\000N\000i\000c\000e\000M\000a\000t\000r\000i\000x)
+(\376\377\000T\000h\000e\000\040\000e\000n\000v\000i\000r\000o\000n\000m\000e\000n\000t\000\040\000\173\000N\000i\000c\000e\000A\000r\000r\000a\000y\000W\000i\000t\000h\000D\000e\000l\000i\000m\000s\000\175)
endobj
256 0 obj
-<< /S /GoTo /D (section.15) >>
+<< /S /GoTo /D (subsection.14.11) >>
endobj
259 0 obj
-(\376\377\000U\000s\000e\000\040\000o\000f\000\040\000T\000i\000k\000Z\000\040\000w\000i\000t\000h\000\040\000n\000i\000c\000e\000m\000a\000t\000r\000i\000x)
+(\376\377\000T\000h\000e\000\040\000c\000o\000m\000m\000a\000n\000d\000\040\000\134\000O\000n\000l\000y\000M\000a\000i\000n\000N\000i\000c\000e\000M\000a\000t\000r\000i\000x)
endobj
260 0 obj
-<< /S /GoTo /D (subsection.15.1) >>
+<< /S /GoTo /D (section.15) >>
endobj
263 0 obj
-(\376\377\000T\000h\000e\000\040\000n\000o\000d\000e\000s\000\040\000c\000o\000r\000r\000e\000s\000p\000o\000n\000d\000i\000n\000g\000\040\000t\000o\000\040\000t\000h\000e\000\040\000c\000o\000n\000t\000e\000n\000t\000s\000\040\000o\000f\000\040\000t\000h\000e\000\040\000c\000e\000l\000l\000s)
+(\376\377\000U\000s\000e\000\040\000o\000f\000\040\000T\000i\000k\000Z\000\040\000w\000i\000t\000h\000\040\000n\000i\000c\000e\000m\000a\000t\000r\000i\000x)
endobj
264 0 obj
-<< /S /GoTo /D (subsubsection.15.1.1) >>
+<< /S /GoTo /D (subsection.15.1) >>
endobj
267 0 obj
-(\376\377\000T\000h\000e\000\040\000k\000e\000y\000\040\000p\000g\000f\000-\000n\000o\000d\000e\000-\000c\000o\000d\000e)
+(\376\377\000T\000h\000e\000\040\000n\000o\000d\000e\000s\000\040\000c\000o\000r\000r\000e\000s\000p\000o\000n\000d\000i\000n\000g\000\040\000t\000o\000\040\000t\000h\000e\000\040\000c\000o\000n\000t\000e\000n\000t\000s\000\040\000o\000f\000\040\000t\000h\000e\000\040\000c\000e\000l\000l\000s)
endobj
268 0 obj
-<< /S /GoTo /D (subsubsection.15.1.2) >>
+<< /S /GoTo /D (subsubsection.15.1.1) >>
endobj
271 0 obj
-(\376\377\000T\000h\000e\000\040\000c\000o\000l\000u\000m\000n\000s\000\040\000V\000\040\000o\000f\000\040\000v\000a\000r\000w\000i\000d\000t\000h)
+(\376\377\000T\000h\000e\000\040\000k\000e\000y\000\040\000p\000g\000f\000-\000n\000o\000d\000e\000-\000c\000o\000d\000e)
endobj
272 0 obj
-<< /S /GoTo /D (subsection.15.2) >>
+<< /S /GoTo /D (subsubsection.15.1.2) >>
endobj
275 0 obj
-(\376\377\000T\000h\000e\000\040\000m\000e\000d\000i\000u\000m\000\040\000n\000o\000d\000e\000s\000\040\000a\000n\000d\000\040\000t\000h\000e\000\040\000l\000a\000r\000g\000e\000\040\000n\000o\000d\000e\000s)
+(\376\377\000T\000h\000e\000\040\000c\000o\000l\000u\000m\000n\000s\000\040\000V\000\040\000o\000f\000\040\000v\000a\000r\000w\000i\000d\000t\000h)
endobj
276 0 obj
-<< /S /GoTo /D (subsection.15.3) >>
+<< /S /GoTo /D (subsection.15.2) >>
endobj
279 0 obj
-(\376\377\000T\000h\000e\000\040\000n\000o\000d\000e\000s\000\040\000w\000h\000i\000c\000h\000\040\000i\000n\000d\000i\000c\000a\000t\000e\000\040\000t\000h\000e\000\040\000p\000o\000s\000i\000t\000i\000o\000n\000\040\000o\000f\000\040\000t\000h\000e\000\040\000r\000u\000l\000e\000s)
+(\376\377\000T\000h\000e\000\040\000m\000e\000d\000i\000u\000m\000\040\000n\000o\000d\000e\000s\000\040\000a\000n\000d\000\040\000t\000h\000e\000\040\000l\000a\000r\000g\000e\000\040\000n\000o\000d\000e\000s)
endobj
280 0 obj
-<< /S /GoTo /D (subsection.15.4) >>
+<< /S /GoTo /D (subsection.15.3) >>
endobj
283 0 obj
-(\376\377\000T\000h\000e\000\040\000n\000o\000d\000e\000s\000\040\000c\000o\000r\000r\000e\000s\000p\000o\000n\000d\000i\000n\000g\000\040\000t\000o\000\040\000t\000h\000e\000\040\000c\000o\000m\000m\000a\000n\000d\000\040\000\134\000S\000u\000b\000M\000a\000t\000r\000i\000x)
+(\376\377\000T\000h\000e\000\040\000n\000o\000d\000e\000s\000\040\000w\000h\000i\000c\000h\000\040\000i\000n\000d\000i\000c\000a\000t\000e\000\040\000t\000h\000e\000\040\000p\000o\000s\000i\000t\000i\000o\000n\000\040\000o\000f\000\040\000t\000h\000e\000\040\000r\000u\000l\000e\000s)
endobj
284 0 obj
-<< /S /GoTo /D (section.16) >>
+<< /S /GoTo /D (subsection.15.4) >>
endobj
287 0 obj
-(\376\377\000A\000P\000I\000\040\000f\000o\000r\000\040\000t\000h\000e\000\040\000d\000e\000v\000e\000l\000o\000p\000e\000r\000s)
+(\376\377\000T\000h\000e\000\040\000n\000o\000d\000e\000s\000\040\000c\000o\000r\000r\000e\000s\000p\000o\000n\000d\000i\000n\000g\000\040\000t\000o\000\040\000t\000h\000e\000\040\000c\000o\000m\000m\000a\000n\000d\000\040\000\134\000S\000u\000b\000M\000a\000t\000r\000i\000x)
endobj
288 0 obj
-<< /S /GoTo /D (section.17) >>
+<< /S /GoTo /D (section.16) >>
endobj
291 0 obj
-(\376\377\000T\000e\000c\000h\000n\000i\000c\000a\000l\000\040\000r\000e\000m\000a\000r\000k\000s)
+(\376\377\000A\000P\000I\000\040\000f\000o\000r\000\040\000t\000h\000e\000\040\000d\000e\000v\000e\000l\000o\000p\000e\000r\000s)
endobj
292 0 obj
-<< /S /GoTo /D (subsection.17.1) >>
+<< /S /GoTo /D (section.17) >>
endobj
295 0 obj
-(\376\377\000D\000i\000a\000g\000o\000n\000a\000l\000\040\000l\000i\000n\000e\000s)
+(\376\377\000T\000e\000c\000h\000n\000i\000c\000a\000l\000\040\000r\000e\000m\000a\000r\000k\000s)
endobj
296 0 obj
-<< /S /GoTo /D (subsection.17.2) >>
+<< /S /GoTo /D (subsection.17.1) >>
endobj
299 0 obj
-(\376\377\000T\000h\000e\000\040\000e\000m\000p\000t\000y\000\040\000c\000e\000l\000l\000s)
+(\376\377\000D\000i\000a\000g\000o\000n\000a\000l\000\040\000l\000i\000n\000e\000s)
endobj
300 0 obj
-<< /S /GoTo /D (subsection.17.3) >>
+<< /S /GoTo /D (subsection.17.2) >>
endobj
303 0 obj
-(\376\377\000T\000h\000e\000\040\000o\000p\000t\000i\000o\000n\000\040\000e\000x\000t\000e\000r\000i\000o\000r\000-\000a\000r\000r\000a\000y\000c\000o\000l\000s\000e\000p)
+(\376\377\000T\000h\000e\000\040\000e\000m\000p\000t\000y\000\040\000c\000e\000l\000l\000s)
endobj
304 0 obj
-<< /S /GoTo /D (subsection.17.4) >>
+<< /S /GoTo /D (subsection.17.3) >>
endobj
307 0 obj
-(\376\377\000I\000n\000c\000o\000m\000p\000a\000t\000i\000b\000i\000l\000i\000t\000i\000e\000s)
+(\376\377\000T\000h\000e\000\040\000o\000p\000t\000i\000o\000n\000\040\000e\000x\000t\000e\000r\000i\000o\000r\000-\000a\000r\000r\000a\000y\000c\000o\000l\000s\000e\000p)
endobj
308 0 obj
-<< /S /GoTo /D (section.18) >>
+<< /S /GoTo /D (subsection.17.4) >>
endobj
311 0 obj
-(\376\377\000E\000x\000a\000m\000p\000l\000e\000s)
+(\376\377\000I\000n\000c\000o\000m\000p\000a\000t\000i\000b\000i\000l\000i\000t\000i\000e\000s)
endobj
312 0 obj
-<< /S /GoTo /D (subsection.18.1) >>
+<< /S /GoTo /D (section.18) >>
endobj
315 0 obj
-(\376\377\000U\000t\000i\000l\000i\000s\000a\000t\000i\000o\000n\000\040\000o\000f\000\040\000t\000h\000e\000\040\000k\000e\000y\000\040\000'\000t\000i\000k\000z\000'\000\040\000o\000f\000\040\000t\000h\000e\000\040\000c\000o\000m\000m\000a\000n\000d\000\040\000\134\000B\000l\000o\000c\000k)
+(\376\377\000E\000x\000a\000m\000p\000l\000e\000s)
endobj
316 0 obj
-<< /S /GoTo /D (subsection.18.2) >>
+<< /S /GoTo /D (subsection.18.1) >>
endobj
319 0 obj
-(\376\377\000U\000s\000e\000\040\000w\000i\000t\000h\000\040\000t\000c\000o\000l\000o\000r\000b\000o\000x)
+(\376\377\000U\000t\000i\000l\000i\000s\000a\000t\000i\000o\000n\000\040\000o\000f\000\040\000t\000h\000e\000\040\000k\000e\000y\000\040\000'\000t\000i\000k\000z\000'\000\040\000o\000f\000\040\000t\000h\000e\000\040\000c\000o\000m\000m\000a\000n\000d\000\040\000\134\000B\000l\000o\000c\000k)
endobj
320 0 obj
-<< /S /GoTo /D (subsection.18.3) >>
+<< /S /GoTo /D (subsection.18.2) >>
endobj
323 0 obj
-(\376\377\000N\000o\000t\000e\000s\000\040\000i\000n\000\040\000t\000h\000e\000\040\000t\000a\000b\000u\000l\000a\000r\000s)
+(\376\377\000U\000s\000e\000\040\000w\000i\000t\000h\000\040\000t\000c\000o\000l\000o\000r\000b\000o\000x)
endobj
324 0 obj
-<< /S /GoTo /D (subsection.18.4) >>
+<< /S /GoTo /D (subsection.18.3) >>
endobj
327 0 obj
-(\376\377\000D\000o\000t\000t\000e\000d\000\040\000l\000i\000n\000e\000s)
+(\376\377\000N\000o\000t\000e\000s\000\040\000i\000n\000\040\000t\000h\000e\000\040\000t\000a\000b\000u\000l\000a\000r\000s)
endobj
328 0 obj
-<< /S /GoTo /D (subsection.18.5) >>
+<< /S /GoTo /D (subsection.18.4) >>
endobj
331 0 obj
-(\376\377\000D\000o\000t\000t\000e\000d\000\040\000l\000i\000n\000e\000s\000\040\000w\000h\000i\000c\000h\000\040\000a\000r\000e\000\040\000n\000o\000\040\000l\000o\000n\000g\000e\000r\000\040\000d\000o\000t\000t\000e\000d)
+(\376\377\000D\000o\000t\000t\000e\000d\000\040\000l\000i\000n\000e\000s)
endobj
332 0 obj
-<< /S /GoTo /D (subsection.18.6) >>
+<< /S /GoTo /D (subsection.18.5) >>
endobj
335 0 obj
-(\376\377\000D\000a\000s\000h\000e\000d\000\040\000r\000u\000l\000e\000s)
+(\376\377\000D\000o\000t\000t\000e\000d\000\040\000l\000i\000n\000e\000s\000\040\000w\000h\000i\000c\000h\000\040\000a\000r\000e\000\040\000n\000o\000\040\000l\000o\000n\000g\000e\000r\000\040\000d\000o\000t\000t\000e\000d)
endobj
336 0 obj
-<< /S /GoTo /D (subsection.18.7) >>
+<< /S /GoTo /D (subsection.18.6) >>
endobj
339 0 obj
-(\376\377\000S\000t\000a\000c\000k\000s\000\040\000o\000f\000\040\000m\000a\000t\000r\000i\000c\000e\000s)
+(\376\377\000D\000a\000s\000h\000e\000d\000\040\000r\000u\000l\000e\000s)
endobj
340 0 obj
-<< /S /GoTo /D (subsection.18.8) >>
+<< /S /GoTo /D (subsection.18.7) >>
endobj
343 0 obj
-(\376\377\000H\000o\000w\000\040\000t\000o\000\040\000h\000i\000g\000h\000l\000i\000g\000h\000t\000\040\000c\000e\000l\000l\000s\000\040\000o\000f\000\040\000a\000\040\000m\000a\000t\000r\000i\000x)
+(\376\377\000S\000t\000a\000c\000k\000s\000\040\000o\000f\000\040\000m\000a\000t\000r\000i\000c\000e\000s)
endobj
344 0 obj
-<< /S /GoTo /D (subsection.18.9) >>
+<< /S /GoTo /D (subsection.18.8) >>
endobj
347 0 obj
-(\376\377\000U\000t\000i\000l\000i\000s\000a\000t\000i\000o\000n\000\040\000o\000f\000\040\000\134\000S\000u\000b\000M\000a\000t\000r\000i\000x\000\040\000i\000n\000\040\000t\000h\000e\000\040\000\134\000C\000o\000d\000e\000B\000e\000f\000o\000r\000e)
+(\376\377\000H\000o\000w\000\040\000t\000o\000\040\000h\000i\000g\000h\000l\000i\000g\000h\000t\000\040\000c\000e\000l\000l\000s\000\040\000o\000f\000\040\000a\000\040\000m\000a\000t\000r\000i\000x)
endobj
348 0 obj
-<< /S /GoTo /D (subsection.18.10) >>
+<< /S /GoTo /D (subsection.18.9) >>
endobj
351 0 obj
-(\376\377\000A\000\040\000t\000r\000i\000a\000n\000g\000u\000l\000a\000r\000\040\000t\000a\000b\000u\000l\000a\000r)
+(\376\377\000U\000t\000i\000l\000i\000s\000a\000t\000i\000o\000n\000\040\000o\000f\000\040\000\134\000S\000u\000b\000M\000a\000t\000r\000i\000x\000\040\000i\000n\000\040\000t\000h\000e\000\040\000\134\000C\000o\000d\000e\000B\000e\000f\000o\000r\000e)
endobj
352 0 obj
-<< /S /GoTo /D (section.19) >>
+<< /S /GoTo /D (subsection.18.10) >>
endobj
355 0 obj
-(\376\377\000H\000i\000s\000t\000o\000r\000y)
+(\376\377\000A\000\040\000t\000r\000i\000a\000n\000g\000u\000l\000a\000r\000\040\000t\000a\000b\000u\000l\000a\000r)
endobj
356 0 obj
-<< /S /GoTo /D (section*.2) >>
+<< /S /GoTo /D (section.19) >>
endobj
359 0 obj
-(\376\377\000I\000n\000d\000e\000x)
+(\376\377\000H\000i\000s\000t\000o\000r\000y)
endobj
360 0 obj
-<< /S /GoTo /D [ 361 0 R /Fit ] >>
+<< /S /GoTo /D (section*.2) >>
+endobj
+363 0 obj
+(\376\377\000I\000n\000d\000e\000x)
+
endobj
364 0 obj
-<< /Filter /FlateDecode /Length 9998 >>
-stream
-x}I%=;Jpq_**} }hLi#etEf-sȪ -I3#N7/̃Omټ9C 17{s6mٔ[Xn?׏Ƥb ܧoPb0h{Rݿ6PI>TMrNDk*3o9 ٭:\~"~}m˔7_ $o%%y'?v[MA3KD&CO460e=EX@4J}T\Rt[L7 ~
-?Ӑ4Xe1BFmXC|*cf_]]t9ӡhfS^-xjHB
-̟E2[yHs$> ?,y>R.kX*<u&hyQ3|2$.͎^@4nfzF-溅Gs8ݜ$z6JpiSI}o p;Sl!4wZиoD B*B|=#Scs
--AyFc AFud Wa[]ruRJE[2rH,R%ԸAe)ru ˟R\~~0K-Z~
-m
-f̔e3ź3w٢:fOFZX62gW!#' s85g8x
-_Ì؟GKaxj0c|5g㰍1z .qrokqL` -O,lN/9Z}ar=''w=eݪf]1
-2#mpH*Am#Wl}J3K륶D5VSV>TzDm¨ q;ə# R@n-6H3<czIwel5<, )H6(`ڑDJ=LJei3>3k{ɴ}ȥP5F/bAQF ; VCXy ;OHAD[XA# Rm0O@Alr-P vsH{{ bRMSHzi{wxNe<0
-]ubk&qL1O=
-{>?K-R͖habтڦphY[))h3CPFe诬D4DՕrQJHnG$jqn``Sʼnj{e Lh(%BW6aa6YqX \~&Mh(F1pzҖc0f*+& ,- ֽQL!*@Ǡa Tj Z)fXQEv`'q ;VC $ f^8Ezgx`SXVoKaTn;xO+b5i`rqe :\W"Fg}ŤDz\:<i' b~Ƚ;4*_X`D@`@Iƕ:t+mJ4:
- mDN6i6rF$ @u$R<Y-Wb0y<E¿K
-bsXͳF0aH@E T[Mx"|4.G$`M h| kp0AFD kl hĢVmH^i$ ld}$@=dˀ$Bvs.QyKUB@䘂慂 WlJ^"
-i z>4(_0F|FMKi0}SA&c6dBĴP3|9paBJGC"1.(?FVIa0*HUF!
-<dNe+Zkh6&53 4 >kF<_crDz[[E\oJ\Y%; dFQBc[Chj
-i
-+\j"BiR=H-Ɍw{4y
-U#!z1d$;25ƶg!
-N PFG SqXI&=IፈcEG ԌI[GT(;+3x0.\p 6J`X"m&laq2띰!OFv8J&à'ER1ޝ
-c*%yNք<"nE(̙*NR9JQHhHd.tY.fB2N?"
-voDqm;ȟiqLDbxX) E%oXj52l_$jpQ/TϨ
-d%
-iBFQNZ 38K(ϺrKaaz'zyPJ&zFBE #
-) _$&HSA31[CѵBWbPR0Bb:EcwXj'p>aT i;o׊f A|:`KH$ vwD,j58bfd߆kI301Q|AyL *%I4:ai1aQ<VWךf€S }Ab`*J40}i/kոq¦v.E͌
-*E%D/'JaސȽs᳎Q {ר-vT qAj+ebUMDj`5gJ$#kU"{Bh?<pY6܄@"
-V`8iZO4&g"RXbjH8ZPk S u[5M\X&D&Kdv 2TX?$q\,gjzNQBӜh
-(M&Dx'J(ΈrZg((=pk(SeG]5[X0&D&pLd
-~=~6j߯oO'W+T^8_ZUPh GEO*["_qy7Oe 'O͖i}W _ ;/6X W19؉XOG`Yba<^~kuu:@9E`w2_2/`Ӗ
-
-Uz؉O> _<e+OBaN-8s]2s=ɨ{ָ-
-[&0bM'Ccs.<'FzhZ#]z1[$K@sbikPƘUM0xupfI˫MPr+%L4LJEԝ8~%V⯼2Z@yX(Wnr1&!οr gk
- >Apm}t}P[m'k8St>zhZ]z1M_Ol'~Z?}Aû.6ben,#Lt_$ /UlQ :Kf]CĘM5 (s\`a'KpPkF7htlj]3t@~y~98EP=Eu12^Q酸 4(`0~|@gfi<O~XSZ_MվV}}ّ;J}_F;|.[X9G͵aGp-4^%5F{=Tv |{i*Lu[7cT`GnwaԎޝS/{ӻ ˥s
- o/m1=
-ùNBO>ڳ24SdT aˣ,,'&nѹsd6VkF m~U KZVSV]{ v.
-(f}ڸ\sG@qL*Хٚ6>bݥnW5u(ϔm74@Td#e!ɨ2eJp 1!*ަ 绦 giIm@uS 7\&骪=,W fZ(cu.Y;G* W}͛և9Uze{?渂ej;5 88{𛩋L`,lFR>h2I ߂;
-~px#y!s2" !<Xp _K~א,>f[ŻVb)<UBU9HJ{[HT$^\]~S)w"= S: e%z߂68z=qE{%4[&UkF{$lڂo4;%uuσyfK!B1d'~m ʳE b>9tr~E H5X|s>z ?I5R}.aR]ضӰJչjts[hdӭ/tLIi Ч\R~itce
-YZzF`HMޅ-gx(Ë/
-.KMy| zD&Ņ% SIlO&j<]=}#fx؀Ow!򃪑Wic x|.Yxz]|ޏݞ{=icbb7`:%FzXjJˑN\zqx.ao-q!CQ
-̫˾^/xneLݏSc82IPABڱ\ӸNx @]4c~qx?{<EbeX`YM (夒8N>>V>|<oNs>qD:<<;eUM)ұq!W̽Bo?(̴ڽ
+<< /S /GoTo /D [ 365 0 R /Fit ] >>
+endobj
+368 0 obj
+<< /Filter /FlateDecode /Length 10089 >>
+stream
+x}I%=;Jpq_**} }hLi#etEfU*hGHo7s?gWn6on?_ޜM[6m?1???^?~7TRxSӪ$?"QE
+L[CVcyR$ѯ{櫽ͻD\6nBx?)hzII!|ڠ-崁y, ,Wdb\ͷݖj%꭫'sokM:9[jJ`"
+B{gniZrݏ=ڜnn"MFFM?HBA%O^E3?$Ls3!8#*͂LV:+
+iz 9>['|u TФ\ 1un04wMX`J;[lgo.t(EBt3vSR̘)G6. f1l1˘ g0u+5fEu̞l~'d`BFO@pj΀Q(>6@-k8CxgFX`bp,Zc0q?C-[rEwW k1C:v1hY`gFA5̈ z&1Wpz6۸.g+8F@D܀Ģqܧ&NSr:^Yp'\..V5뺎8JM ӯ00Ds
+`32M|figb^O:𠌔%Aa69L25Y;7HILv2mgf~"ֵBsuR>H3J¨!y{w@A~ 9od )(1q2h Rp9h}A ((MvRN*an{P`q/Alݓ]i
+I/miL\КX!6\nBp-ջ".)3Gae_-
+,K]vA1u/"HU+YT7E^6K1$mp)h*+(5(:jꈗ"(WF۹s=:"h*u4ZcD`MASqh:¨ q;w1`E)%)Op}I4'J$GW]bej?IVk |{kєĴ0r)Y-b= @Ӣ:4DL>MDALwyHѰ&lZ}(wOQbe<̳IM/a 9H0(tmX۪ +DaQ qtC3n%1*o)\hSмPO+QD!!AO' Q84K7#8
+VC.ZP0
+Kx'|5+T'FFގ }:h|N; Z -r
+mfkRDu壵Kmc@$BH!Mi%#QBn& ֳrn.+كVg≐a,m,
+^ ʅl 7A3BZ-I6Jΰ8qNؐ}#a(@%->3@JTr0
+r* u URk<TXY`nj$bz
+iBGQ'N 6Ok$mԌ$SP
+*(wJeoւ# i9WJu+O(2B$WH*50b3jR-PA׃M8
+2
+1yFo
+*cB#4$ ?,Nf<lfdH_*PwFP$o:<xuĈY M(*k;
+r%xPµ+ JHb
+38K1#1ڤ'48:q\#iT(
+|g%zFoE=] nAKsR ҄7,N\f6d)H[Gdᤈ[j9ƛûsb[aLrd</Iњ_-9Z偛i>XJ:G #
+) L.…٬qPh?[)SYl5XPP ?
+U _*f\QT(qLQKY'ʷ!mZL0p?7\2\Lp PQ☤HcEGӌېv-ifF?&/T3(D1R1iFQ3,M<f4l0gCZLp?/T7T Lp2RE cFS/"e6Nؔ_Cӥ<BWjPS)0#CUbZEc҄oXj'h>Ⱦ۵`lBeov RdkF"vWX+5.b0*kY3#@*Pݠb`ƅHՊǤ E4N}}cik]aPu >O82sei&(j;N"5kWN'N(uډꜼC$r\=2yˉ4!ЋK:B&LIAEX)w|.|3jp<E!.HzL)HM&Ldv 2TC$r\g<ՆUDX4G3M뉦dLD
+}K V>G5CC~dAp T +V>ӤhD~)ҮR
+$u#_ P2 8J?qBhM䖈Y[=UNEGne? Rq +FӄhD) ҮR
+vD}u##g`(C ؋T,hBJQ+'΋ 'Q/"qu{.mQS;mWR3FgUv<3EkUU[i#?ZƋ|fܒ0OL4Zƫ|Jˊ}Zƫ|aJ.j|*NҘ+zthbϿvӿ5`)PۿdzbuȄۥdgiB5?D1ӾqB[).J>nQ{iDy/¿ n(p?𓺀2\~cͰ~5f|S%ejxKe QhڎI&' GM,߳;S+9xEP~ɕA>W'o>nQ'+{%_V,s{b\|IStv_iWp F= >ihLv/ӑ4XF|ϩ_d@]yν"PNg
+'*@&W'HOŞމ
+¾4!]
+g#?S
+ׯ3P=}:ɟ0voW~У}w?7yb{Tt^z9;K/P\_=%9kApܔgYpP]xq6}Δ/&}@C
+bԻX~O+$1_3Iߟ2^ty2{ ׇ LԞ
+ZUSfwTۊq,p[;;rG)'hGI qˊT?=⹖:l8JtJ?Ma̦w
+l"p^?XPb o_t1r6OCLmof*ٍ3~*[_) p[r:2շ%gT҂3btYvXx8`n99 9X>A^U)7!Ry8c=zjz:}cOj<*A A轊44sv
+FvƶYaW 7[nw8eRz׺ǡUϭ갻OI܎c%.crN7Č=>gv] &~pZ%Kw\u'yU>G!Af_9/Y7 hIy/[ٲމk '|~g l^G=Fjϟu? YPGh6I קIn5Q yx޴.}9ڱd~;&[pm3{&z =(EՒg&ns#&y[~&D(Qh'Vv 똨svA ."[Y=?HQCЙds m7Zץubǧ7*<L21}n硫C7|-,М$.a"~+}4vÛp5kSS+ZCx,Gwe\vCk%L1􉭪Ἧ,S,K&7o^AjxR!
+ o/m1=DùNBO>S64SdT aˣ,,WĊ'&nѹsd6VkF m~U KZVWV]{ v.
+(f}ڸ\sG@qL*Ё).me$?Kܮj뺯Q)Vomi©Ӈs)BQeHi?ʻc4CU5wMg)BUφ2hۀ@jAnMUU{XKY@vg˵Q\\eNw
+r% 97W'sf:JqvcokAp%px VY.p|і^
+ G( -g}K++Yaj7Z;Up4#a|ّX&/{{3[ b';k[' .̞E=S% -֌:bCO04q&SOKI7ycN*V&!mUMy0۷Y&-W5@r9~J%~6MެV,$^ i2O jwFuTj7tq@ٷ<jvi͋T^2/UՂwV\^;fFk8:Lǜ?ʨq^xf)XdihY 7y{EO; /ξP$ոƤqhC{H:2zۗ͛`굮']靻ו!=\LN"e eɿٽw9m1a[vm͉a{Ÿ8jpҔu6sp\u^
+)c(A]P4V)<q]U. Ԯ=ܶah_5}5[*g3u46IFUѪjF<xм+_7HΞ-ֺZ#`vX%mx4WF<?:JMYwxYaٶR]ZgUʨ#
+v)ZLJs^=#TEG6^$/3TBx*k%
+;kzxm3tzdݷD*j3#mlkICV3'dY/1YXw-ݪ-To}::OxCYP28y`F:K:'S
endstream
endobj
-361 0 obj
-<< /Type /Page /Contents 364 0 R /Resources 363 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 394 0 R /Annots 395 0 R >>
+365 0 obj
+<< /Type /Page /Contents 368 0 R /Resources 367 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 398 0 R /Annots 399 0 R >>
endobj
-395 0 obj
-[ 362 0 R ]
+399 0 obj
+[ 366 0 R ]
endobj
-362 0 obj
-<< /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [ 78.374 76.659 499.819 88.116 ]
- /Subtype/Link/A<</Type/Action/S/URI/URI(https:www.tug.org/svn/texlive/trunk/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty)>>
+366 0 obj
+<< /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [ 78.374 76.658 306.319 88.115 ]
+ /Subtype/Link/A<</Type/Action/S/URI/URI(https://github.com/fpantigny/nicematrix/releases)>>
>>
endobj
-365 0 obj
-<< /D [ 361 0 R /XYZ 78.37 808.885 null ] >>
+369 0 obj
+<< /D [ 365 0 R /XYZ 78.37 808.885 null ] >>
endobj
-366 0 obj
-<< /D [ 361 0 R /XYZ 79.37 771.024 null ] >>
+370 0 obj
+<< /D [ 365 0 R /XYZ 79.37 771.024 null ] >>
endobj
-363 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F16 367 0 R /F17 368 0 R /F30 369 0 R /F39 370 0 R /F48 371 0 R /F47 372 0 R /F49 373 0 R /F50 374 0 R /F29 375 0 R /F52 376 0 R /F41 377 0 R /F42 378 0 R /F23 379 0 R /F51 380 0 R /F15 381 0 R /F20 382 0 R /F55 383 0 R /F56 384 0 R /F57 385 0 R /F58 386 0 R /F65 387 0 R /F66 388 0 R /F67 389 0 R /F45 390 0 R /F40 391 0 R /F46 392 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
+367 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F28 371 0 R /F29 372 0 R /F38 373 0 R /F47 374 0 R /F52 375 0 R /F51 376 0 R /F53 377 0 R /F54 378 0 R /F25 379 0 R /F20 380 0 R /F18 381 0 R /F21 382 0 R /F19 383 0 R /F17 384 0 R /F15 385 0 R /F16 386 0 R /F55 387 0 R /F56 388 0 R /F57 389 0 R /F58 390 0 R /F64 391 0 R /F65 392 0 R /F66 393 0 R /F49 394 0 R /F48 395 0 R /F50 396 0 R /F59 397 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-400 0 obj
-<< /Filter /FlateDecode /Length 3881 >>
+404 0 obj
+<< /Filter /FlateDecode /Length 3883 >>
stream
-xɎ\>_ѹɇ nInOC
+xɎ\>_ѹɇ nInOC
ۈ}-mF? ,i;Q2v$i&Òr-{ٶbD׉1dydf"<S㌹?l2VHAfVZo,=e60'l]<LK~
-("HH38< zŴ}^nt >oxάpp 3qD5ru̢pyL+dV?o_ \p])4zAx烸pR4I!'c>3slHxR{P$9|C=s$?[A]QCimL̂eJ`[*c|[wnFm5tS"FbnFꟕӶG,qg^KѠf ED`LJU7]SP"ްY[TtOAn o"PU9+t8My%*Z
-kEEQAXQ$Aʄ,-l)LZi#ŔjnVcFYWvMFja56EjVŜ9$>!ٖz&KSU5Lcs;6E5b0$F)]
-mtxr<ɬ٬ɇ`lx
-T+3Z J?vvVA ́$cUC14ItyߟW^"\clVSL h[ï, %u
-c vNcKPApPkېo: '0L 
-OK>hQ>Mw`OK2
-L&%97f_*kC3YG x|f9˴"d/hbjcO3y;
-X(
-xǷ#iѡRF!_
-nFw2BRG046/&mO>
-/yUM<R1 MsU)g0 bVhgyĈən0Hw)ϚrW0-}mƨiF뷚e(hHj4PLOKACl`U|. BGY)03%/ LuyhˎC[ig.U<ChŰ=!q#OY4uU'?vU-*5
-z:flіrG
-BS90bX3p@z)F'QTm>?_BfF(^]zT)6V7k,_7jdbKT{Rz꼜cRAbu I=!PFi
-R.cU1Cg/(whw*n_Ѕ<ўjͷ֓Tl3XQ,3wbZQVv0&ur<ygjV0iuQOFO\>^*%<0̇#u>{{ɪ%.bQڔ[Gu?0bblg&(J͏γe^JGJR0qp>헒iSc[:>dcuzUךR>S<W+L/$Be$_ϗpK\^\j`_\^)?I2f`]i%B[IpWa1kU$P
-U͙hYgVO*4J˙VZJ֜_Fua[dq̠uYS:-> ݗWYDyՓ˫aB^0w+ o?F1vZzM?^jS)RKe^V[os~YLg-*eN *M*^ujZY<ꂁ?-"خ0stL!Y.bo_-[cֽ_z``29ik-}o!yaټwImDbxA,RR6&c
-WBIRM^2Ukk[w\)6VyNZ}oScJO pNЛM(jZ?-X+79kg]=TZ ڭ'.aX-S$X0Ls7BC]idBkhߕmq_.tKb*NR+ΤonB+J$Vn1*SGF-OVhL&<:SX'<RQPK|B.A4f;0:cd<`2͎A:ODJ* hjM]PMS D8"pJ5oy1iUl⧱!oَ_DN05h>́u#o7G QbefApZ.XVic`!K#`;,,3,k%sIs@
+("HH38< zŴ}^nt >oxάpp 3qD5ru̢pyL+dV?o_ \p])4zAx烸pR4I!'c>3slHxR{P$9|C=s$?[A]QCimL̂eJ`[*c|[wnFm5tS"FbnFꟕӶG,qgZ0K(J$$eR⭺욂R5?ݢB+H|栘^U r,|CXp1_^y
+BK>.n;"eE9262E/Cj"~~qQ˜# O( OU#K9kRr4"ڵ9ߺaQtMj{o5\I,zћ-9B͐x5qF]&k26刬 nVX+*
+-" OW&deo5?jC,gԪO)T˼vs0Ϻ5k22L~5ڰR"rh5bXluLSBYuZ۱ Ys^awZVʮJ֛1<~5
+g/viSNM h'>:X Đ7izنE_91^EαBPWgDsdU:QE}Tՠ}o7X%OffL>dH0fMƈ!}{(ίp>V['5ZRH^= *M1Fsw8IP#{T I}t9"rUfcM_+uȦZ&)<ZެgH53oSZbxWjJ(Wn$j*T%\IˋjcbRIE~`d
+Kڔ<_߆}?7Сf8aZS8}ZtdGAi}k"qsA/R7C2vj)uI=dQt}{W|w3*LE1ߗ|{;KLdڇ/FŒ`
+ju|J}*˺gR.\2PRH+_,|=~oTuOů
+=.p?OԒIe~=v*Tc}or*TNFJU3|w*eIpȳڈ?6*QW5J.7/FSVh4Te^["#&gn??h #]+uܦT<k8N^
+BAT"cjΖYI"uфCm2=-E y҂Uڠ݉=SbagHK^, *RЖR\2yЊa{CFh2Ke4NEZUj,u"-
+r|j˄ρN;_/DNoٟ{# ! G`DHk R//\OJ<Ƅ}LAs&'K!~6ITzݷGT1nq<L[9YjjO)=v6$ac;͞JCo6P/ \"DhZ!];;*!JHn8q)`87^nR'hG'970`*J#]Glwr_ESwZqt&};vsrNw^Q%RuIV.מ<j5jyME e*7љb:`?
+^{Ur ¦7߁ѮAsfx TetB}-*$UH7Ԉ?ݛ:<I$?phEj bJOcC8>߲ < $+akb|lOo-Fln J|nDm6
+4r
endstream
endobj
-399 0 obj
-<< /Type /Page /Contents 400 0 R /Resources 398 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 394 0 R /Annots 405 0 R >>
+403 0 obj
+<< /Type /Page /Contents 404 0 R /Resources 402 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 398 0 R /Annots 409 0 R >>
endobj
-405 0 obj
-[ 396 0 R ]
+409 0 obj
+[ 400 0 R ]
endobj
-396 0 obj
+400 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 246.081 100.065 256.538 111.522 ]/A << /S /GoTo /D (subsection.8.2) >> >>
endobj
-401 0 obj
-<< /D [ 399 0 R /XYZ 78.37 808.885 null ] >>
+405 0 obj
+<< /D [ 403 0 R /XYZ 78.37 808.885 null ] >>
endobj
5 0 obj
-<< /D [ 399 0 R /XYZ 79.37 771.024 null ] >>
+<< /D [ 403 0 R /XYZ 79.37 771.024 null ] >>
endobj
9 0 obj
-<< /D [ 399 0 R /XYZ 79.37 428.769 null ] >>
+<< /D [ 403 0 R /XYZ 79.37 428.769 null ] >>
endobj
-398 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F69 402 0 R /F15 381 0 R /F55 383 0 R /F56 384 0 R /F58 386 0 R /F66 388 0 R /F70 403 0 R /F65 387 0 R /F29 375 0 R /F51 380 0 R /F26 404 0 R /F20 382 0 R /F45 390 0 R /F40 391 0 R /F59 393 0 R /F46 392 0 R >> /ProcSet [ /PDF /Text ] >>
+402 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F68 406 0 R /F15 385 0 R /F55 387 0 R /F56 388 0 R /F58 390 0 R /F65 392 0 R /F69 407 0 R /F64 391 0 R /F25 379 0 R /F17 384 0 R /F22 408 0 R /F16 386 0 R /F49 394 0 R /F48 395 0 R /F59 397 0 R /F50 396 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-408 0 obj
-<< /Filter /FlateDecode /Length 4404 >>
+412 0 obj
+<< /Filter /FlateDecode /Length 4403 >>
stream
x]ͯ أ`\8/@{2[S:HERߟ3g?/;KR$E8zDž^~|EW=1y*P@/-#TOP*R/r)*1
J
-Gx HQddt4OQ{-ыH~Qj$EA-R֊s~Z? {5ҁǫ*Ӿ/^VO<㟰ۤuP}E>^Б[ u7%$:Y]7 jzGO*v|@WM-vgi`R]|SzWZI'e/L.RNujKkxfm@mx{-go(+a
-yLʜ[Z)C) c8\D13 .<
-`E(,ˆR|n؃q~o4)ӷLoDL5@ez ֽ, Na\q IJrqV$ޅDCFTԡaNB7o">L[8BG<'%B, T(76仁qrCyojjbҾ̾sMJYHmo`a09H7?n SXN57L/_=L=ony7vw'+%g*4_\F 㽊AT6! U@T;(LcEp3GZ^9 2k$iCHG'wg-}gTMa3)OZ My=}3YU? z/8#?yۯ}R)0
-ٲPaLT|zu.~p|x8FT`ʧ!_ojUPq8(q6 xqBa*+2c Lw'59F
-˧Kծ \iڢ?
-G -2/>Ŵ,aIZzXy:A:v`jaZ߰=JeYb8f<y
--7
-)Xz9kCI |/2Z9.&cJP?h (mo^#)0@c^%cفvcU <&8[IA PZޭ6l‚'b%@-@%Z'uxQN-l#] %¢U+!Ma4":wDoԐ8c0=,ǘ)^h-8~ LIq Q :q<M.3 ‹A4w86iu?Õxz+Z"u*R7gм0%drMԭ +ՍqŀCjv&%ow[ڧPY/uKwZj-5Z(64whEL
-
- zXy*Vi8Dag0fߧEh5>9h;9'^s\`}N҂BGkfz,.:g.zfUP"=hK(dKһ)\JԳm(c\Ŭ&vV;JZr4Yj0I +J׆D%XM7 JO`'CXҦWU)-5J7ݠTӲC^r 9ژJ51Zh;DZVo__anC}Di1>&c7반JK}m3S eX]?t&mkԭ(+SEU]x;~96%>f=nS쫓/$1jOyvl.^ =[WueuYekd)o(Mmh+MGU?(;w*+~J* g
-8OH#ey"!
-Z=^!H347/`r9pI Wap8
- ug)@ O5du<cept ZTuFY  p)/"r L
-*B+.ܨ{s%QQ΍uyq!*tyq!*|^^t@$op
-ဗGPB)Tӎ9{Ęb#JFk 
-"}φ?X6p\X6ѝXvfXŲ<y.X=#e#;nNX=#e#;6l&9.7|lLkȴ'4οgd_)Gԯ?@O79~(Fdb>P^~Va/|A2>>^|؂dƌm/?@RK`.B#|Љ+ʫ$r!ENq%ZwHG#<}ˇcN 3bu'TM8fN1f0 ƔW&qgkSM(Swosk1i9b.; !vY74ct^}P ST{aT 04o᎒
-F-X|߁OߪلE{*x|D:xN6;.bZU kϦbVe^$cT P$E#u}ܟV1
+Gx HQddt4OQ{-ыH~Qj$EA-R֊s~Z? {5ҁǫ*Ӿ/^VO<㟰ۤuP}E>^Б[ u7%$:Y]7 jzGO*v|@WM-vgi`R]|Sw_uݓ2&
+Fo):5Y3ʈ|6U<h7U0
+v7A8YDXk}7|A0ݔh&XO}Aۺ%ra" @9+Nq!7i_B.Π1`*Drûcshh
+:4
+&劣wiw~Zz֫Ke:`0ޫ?DoPDp1H1V7s3;q*z+F6?ytp2{J}wrwJF9b ߔ737Yc
+n1t\8zobʘ . B,,?|,T$0/^~Au~x05˫_/>\251^+NyK
+ʕ&- ӭB
+VOkԣ8
+֠^}pZxzrPR"ߋ VKɘTå2ZJ<H%L<PW $rXvyկ.n7`
+W
+:4 ]Y /jK͚a
+JV$eIíjlv7 kx01l7/
+lJE$X;=W1 E >Vp'M֪)LRŠҵ!9{I.V͂$)UUzJ 5MťҬ: "w@7&մаW\*fC*u|N6&RMjL4[{WذP_+bcz:,nR3pƒl_[5L@%nBoDV*]>IZ*u뾿ks;㔪cCqU_N8pɪϻYjf. IbޢC"E1|CUr]|]qmnf)Je#wJ|ӑi4ʎᝊJz)ƨy3
+iPʽ 7<\~TTx0sc!*eCx^t@$op
+?5$C; ~^t@$op
+ဗGw8QEDy|u
+ƴc޶1vXňQhp;嚯D} AQqgKgP$Xs@JGv@Y,9 'C; / |CL<(HK/z 78F=(G߳Dz2 ,<xt'7ly7-wl
+#ǭ*#Ӂ NخVՂ(ڳťnW9X" 6) sCD_x,Uiw ,YŔ=dIt
+צkƍNߤtvT57E7cNg|@V'gë^,YRT/ص
endstream
endobj
-407 0 obj
-<< /Type /Page /Contents 408 0 R /Resources 406 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 394 0 R /Annots 416 0 R >>
+411 0 obj
+<< /Type /Page /Contents 412 0 R /Resources 410 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 398 0 R /Annots 420 0 R >>
endobj
-416 0 obj
-[ 397 0 R ]
+420 0 obj
+[ 401 0 R ]
endobj
-397 0 obj
+401 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 208.645 745.619 220.601 757.574 ]/A << /S /GoTo /D (section.7) >> >>
endobj
-409 0 obj
-<< /D [ 407 0 R /XYZ 78.37 808.885 null ] >>
+413 0 obj
+<< /D [ 411 0 R /XYZ 78.37 808.885 null ] >>
endobj
13 0 obj
-<< /D [ 407 0 R /XYZ 79.37 706.75 null ] >>
+<< /D [ 411 0 R /XYZ 79.37 706.75 null ] >>
endobj
-411 0 obj
-<< /D [ 407 0 R /XYZ 337.806 432.326 null ] >>
+415 0 obj
+<< /D [ 411 0 R /XYZ 337.806 432.326 null ] >>
endobj
-412 0 obj
-<< /D [ 407 0 R /XYZ 337.806 418.607 null ] >>
+416 0 obj
+<< /D [ 411 0 R /XYZ 337.806 418.607 null ] >>
endobj
-413 0 obj
-<< /D [ 407 0 R /XYZ 337.806 273.495 null ] >>
+417 0 obj
+<< /D [ 411 0 R /XYZ 337.806 273.495 null ] >>
endobj
-414 0 obj
-<< /D [ 407 0 R /XYZ 337.806 259.776 null ] >>
+418 0 obj
+<< /D [ 411 0 R /XYZ 337.806 259.776 null ] >>
endobj
-406 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F56 384 0 R /F55 383 0 R /F69 402 0 R /F23 379 0 R /F20 382 0 R /F29 375 0 R /F51 380 0 R /F54 410 0 R /F52 376 0 R /F41 377 0 R /F26 404 0 R /F58 386 0 R /F65 387 0 R /F57 385 0 R /F45 390 0 R /F40 391 0 R /F46 392 0 R /F71 415 0 R >> /ProcSet [ /PDF /Text ] >>
+410 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 385 0 R /F56 388 0 R /F55 387 0 R /F68 406 0 R /F19 383 0 R /F16 386 0 R /F25 379 0 R /F17 384 0 R /F26 414 0 R /F20 380 0 R /F18 381 0 R /F22 408 0 R /F58 390 0 R /F64 391 0 R /F57 389 0 R /F49 394 0 R /F48 395 0 R /F50 396 0 R /F70 419 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-421 0 obj
-<< /Filter /FlateDecode /Length 5840 >>
-stream
-x]K9ׯc!c^fO63I=)YvCUJ")#b.yF=}~Ë,\> H\ŅEryBh!|AE?ؠ`mV/M=%9EDO4ǰ_? u QtGV)x%qO"pV%17Qn# Yf:0P# ԌITSW>-پJ0; v p+[ȍl~oOָ\Gu$p?b&b]7_,ۗɯs@Ëҳ\Kꧏ?SW"] ,=-s#fV/_~4Dp.{ytL0ectF[I_iD-]e>X0$me~Q&k%hzEW/rq{AKΦQK┼;E]dhV=Cd+Yl;3 
-[yA& yfQob7
-*g؏4h^#&rUegL;S%^0[ ЙzF3uc$V_9&TiPe `Dq;TԽL׆*<poR8mLi;TYJ|bW66hd) g+?h73y^ZR>( 6z֜6@&?izm
-~7<Wǫa0;_@vg/`kef$wzV Nm}9;woxPsk9U1
-@&#WzUmePx&zsٍVb\0t%[Ћ>KC\f^QV.=3[$5<=  h F$5<4ɐ+qV=IX*Ix\q6HHA,E
-#Th|`UGTeT*"z;B33*oH[g?d]/LxFUHx2+DQs40*: ޜN4SS)=q-F&4=79rrQ@0AͭDE~'|8|<u6+L/bә+kͤKq5q"wȎT^"QU#O<Pd8<> .kMקIg}닏`~;h=&wKP5ș3A#+9 ~+1uR [G.y7LsZk;ڋ Rqjmoq<P}t'T;)3S5
-mEc77&b
-3#+4qa(9hL{t.aze f|_JYUn?J"'hJ+UE;ʨc\2+&S@,'&{F=դ/oiZ葧)&[z%ǁ@ǃV˩.i.njoZN uí8͡OGY&^©r:@` phGNuB+󁥞OPeOFħt~r?V%N5ⴝe˺;FuxL=5Y`ww :
-s*w:T>[M("/ g7qRV;]$܈k$;!%cr[څֵ][jRx7%=]y1_ pǽ
-4K`ٍ{ ?쒆QMіPpcZXXk]*諺ApC`hkU`WŷY!( 2v+3{M̂;o_z.1iXp
-=-aiה9ŇFۅ!+ŏEt"47yT_ԕ)prEyo
-&Jݾst(ATDΤp9aoX*#Z0S7f/'-)Q `™\n`J3*u#YjX udcq#hUO\u8-$<susnPu%fm%, mug!j}^[Y
-xÖ,)Q 21b Yp H1n7 '6vڙ%Q0֍k6hilȪRӠhNnh!b-5rCg F4lZC9 WZ:;4*v46a3`%eǠBһ#^QY2`g s
-1( lU}
-AL߰BPqV#u[Sr<`HL*@YHG;BKϽKkXDZ_8G\Z9 ^ھ$ًX4Ϧj&)6N ^SwC$Ho&gwB;Pv,y[3Skm:5M6xg&''4H\jSg5>a5m!URi`%:QP3z8j%Zublpn&fl4+:AԢPn(7kdڏ΄G_edy[3SkmJ5M:vg&%,4+J- Ӛu2t[H2,#`&l:9zXj&Zblpn'&g#m4+ͳ:Ip򤎻Vk
-7#T \T9
-7/FIV1ojVMʭ)lDEqtקZw-i*aPly'=VZVc՞ lMry6TT3 9;E+0껄
-::RJːiǒ5C֦UشowjrrҢOcҼ+UMqXt]lJr٦H[[Rkm*5M6xg*flT+Fw֬dѫkzIr .b]VZRcӽ έEry6TT1owT QR)خ|]+k#7{f9L*~}ؓ"(Ee =*FՊ1]0]eμ|ѻ
-7(Pu/(Tr -z",3&PscS(8҆JXB*U
-ԣNR/3 $V5]Gs hh7栽"=ġfP C౶U ]e\0tKMt!a\W˜i2x9)TAh^Wث6P~DyQ y@2k=`#h߆:"J7_/컷>Cl߱:iVpfѢLJ 82H_~n
+425 0 obj
+<< /Filter /FlateDecode /Length 5973 >>
+stream
+x]K9Wq1zP/[Xkٓ1 E izR
+E26@TRIIEy'?{ [o$iwqVn /^^-? ?,^
+a7szS%z}vOW6D}*RfJ*DJboFa_$`u l`G&yEU!|N-ɗj]u]<!0ȭ!+ rGȍl~oVOQ{\GuK.!7a?ba/]SN4C 36ܔKO~Xe4?~nDl2J/(_.Q$o:xs˻tՌL0c7tF[IߌDmSeqsYaNI$P"L[
+Qj_mKkAlKκQ %qJMj E Z 钭dl*+EKTu үt}mgNnVhŻ+ԚhzKۣLJ?h
+{cQ0Z:T`?{٤kno`^V.%c ԢL_Μ<4|ObL_f^tSl.v
+fZ|ߞ*AzAg{N'I_^?UiQWe `DUԽLouUQQWEۥlLU^J}i=F;4Jl
+aZg&_^6eFΆ;_Μ Z۝Qg7oͲ2l֜
+Lޝu@gTXopp8pM'ި'
+9IJ;q-|㜂);S9?0 g G|y۝ݬ ӈHzmu?a/;ewzmu pO4sk9Uu8窵槥9zG , лlR+/⬶2([wyr#TݣdK'lFgɡ{U缐k>= >=إFb?Xz;<"p(C;g`Ȕ$>GryD?hѻ~•@'rqdߗ֟DzHRF3
+?.KeRIo7 v'K!O98W){gE:>|Ef5B“Y/F3 C%{~ID=7byHOjq@zl(V|DE~;|(t<s6
+Z*6 %Z37nT&ȝ(@K$J@JDm~}8ӟ=$l=i쓏u}#wM$ζ5+N惛Eq+1pR ҫ-<SLXYth3U*#_qZ4Ϋ["Uσ7UB2NuD[Cn(̌>fMw G+gʍUv)6Z't"8~M3.ukdc>FbV|H՗<ri)nsUMT <o:Z=zp*ґ
+[T^ hmd Cȉ'cJecs)N/n>Yd9_h1{wqwVU㰌͒Hj͒IJWj8$ʮ2ؽ@􊭁tA&cA_^V&9#O%C$ 0*: o;7Z-.|
+#*h1Fԇ>Eebz-jw g
+CY7OS裔yku1lΒS@]YWtwzy_% މe<̥dw%-1ތ]$T֥pJdrgv~lA:Ckŋ[ LͶEq)-MqG T{fmh,ꞡˡ:Az6'%綪ػ5Q9P3
+EE<*ʻ%Cs )t b>ΐn?\{P
+ՎԋxLi%-@׫ &.[8zޔ?
+C>=G$<5;#-ȈN!fkA;@l;c]sk;g(
+j'4mUxz@FFb允5\+%JLʿ9/T6ƘЂ E\ڧ3nqr9j.UV4=YM
+A"3ѝ%PfCI\=-QҰiTevktvhdUimLgAqlJ`}7nsI?,YU)) vUN39=ၵXJ:c4O4(8)T*0^@RWjopku*SĠZ +#1qC:R\Xx]J&9|R%^lMry6UT3 v)YwPXt5e0q5t@fXp)B9۱eL86[㝙48j#q=0rVSvai։bWݺMi`%,6(H tyY+:1Uu8RQ6mǝLN jS^(wRZ3v3 ˼`@IuG᲎26Ǧ|mRSmǝLLj6˄=)::M$Ca0[iHR ,[Y5+J1Uy86}˝NR$yR਴hKb.J FQRi̋jaӨrkv;59iQq)]l
+¼آ~
+:-)^2r+Rc
+B<bP%C<zaMrbej :$"!"&OIif!d)5֡YY%N#U# x[@pSFmapRTSF9֑x_ 4.]A t'7t9ԭ"_s<;=02 Gfhhe.4 G#c^;!htjƀ 2
+y=.hHԪz!GOV۵գ2\:mӷxpv=VkPUSQtĺSA<'Z
+,䓰[n>4.c[vt
+LWx%,Yޏg>J.2, Uv#!dvҍuP[517Ȼ1W{޲p7Ui-}?|p`Z
+q,oe9wJ%=?}k
+Oo3:Ef$ nB~=! ]
+,RǢrxQd
+ёn]Ǟ*v_bgt .հ{A)}/M(ziU0r2HCCo>EJI%G[)V[)mZ
endstream
endobj
-420 0 obj
-<< /Type /Page /Contents 421 0 R /Resources 419 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 394 0 R /Annots 424 0 R >>
-endobj
424 0 obj
-[ 417 0 R 418 0 R ]
+<< /Type /Page /Contents 425 0 R /Resources 423 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 398 0 R /Annots 428 0 R >>
endobj
-417 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 230.89 83.773 247.93 95.23 ]/A << /S /GoTo /D (subsection.14.5) >> >>
+428 0 obj
+[ 421 0 R 422 0 R ]
endobj
-418 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 260.985 83.773 271.442 95.23 ]/A << /S /GoTo /D (subsection.14.5) >> >>
+421 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 230.89 67.03 247.93 78.488 ]/A << /S /GoTo /D (subsection.14.5) >> >>
endobj
422 0 obj
-<< /D [ 420 0 R /XYZ 78.37 808.885 null ] >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 260.985 67.03 271.442 78.488 ]/A << /S /GoTo /D (subsection.14.5) >> >>
+endobj
+426 0 obj
+<< /D [ 424 0 R /XYZ 78.37 808.885 null ] >>
endobj
17 0 obj
-<< /D [ 420 0 R /XYZ 79.37 656.936 null ] >>
+<< /D [ 424 0 R /XYZ 79.37 657.502 null ] >>
endobj
21 0 obj
-<< /D [ 420 0 R /XYZ 79.37 619.544 null ] >>
+<< /D [ 424 0 R /XYZ 79.37 620.11 null ] >>
endobj
-419 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 384 0 R /F23 379 0 R /F20 382 0 R /F29 375 0 R /F69 402 0 R /F15 381 0 R /F55 383 0 R /F58 386 0 R /F74 423 0 R /F45 390 0 R /F40 391 0 R /F59 393 0 R /F46 392 0 R >> /ProcSet [ /PDF /Text ] >>
+423 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 388 0 R /F19 383 0 R /F16 386 0 R /F25 379 0 R /F68 406 0 R /F15 385 0 R /F55 387 0 R /F58 390 0 R /F73 427 0 R /F64 391 0 R /F49 394 0 R /F48 395 0 R /F59 397 0 R /F50 396 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-438 0 obj
-<< /Filter /FlateDecode /Length 4829 >>
-stream
-xڽ$-߯V70Xf{
-{Y—2T\ߣ? y υ3p c<˅EZH#`R:@u֞֘$:ZsUQK9FmJaAƬ#[H:#Cv0UNGȜl!Y`mI>vޚyмYQd)OuM':<+yyĎ'#NƱł*NjtUoy3o.%-9.e*Olh2=5*ństãa~*m-JzM2rFY6kp/Zꪐpq~b&f(r,8rE)*W)U4U+r%zl(TYɖL,[ҧ"[ҧll|b ^-Ir hw)E½0 )z$< PߩWvb\ LYC x^|YdH \=3÷RVIu3m`<ŇiW%C>L5g +F:;8&+wY4{Y?b _?|^
-#Z
-LI?̝~9ѵXJ=rMg[Jhc; 8in솥S9׻@ׅ-$LN0Ey]J;Ghg8p'3?B03&
-E{fA2V6 84
-"{˗w.պ'Zƺљ.RnvOc.P%ѕXbs)%8WR@# 6{Ѕ ĕLiޢx~;[I4Vx70D- ӜX fqK^/U 4
-E0Ur$ @{=xq"f`0!8-FfB4d]sEBTL~VEB"$Z-Vdݢ AG?>u!zV%k)B? =72-"m6~%5;J}t 4tEj';Nq4gmx|Ztbsξ"S$4EQ~L+,O;9Ǵ[f)׎aGiy s}}ܕd~֊3]JM!G2nQDaXRڴ˪ jﰈPZ1i9!HX5Eؑ TJva}hJ\O(q9@w zX䑔Dש-=UGqIԽm.$;/qc%2,ɷ4n+OV$`0ZyF"a҃*ѿ{#H1jw[z|Ƶ5;=\źfB$ѓfHc7A3An&<>
-]7Pʾ$ShY
-JzױɄ;dN8YLB6+"v%WCPBaڥ"zH7$:9.'RDŽ׫]mR
-QeYɴK4H*ʤ3D'ԋ WR~/Kʵ!tH*RzZbNmX$IXr o9ީB p$ 5w:-nf;
-6E 2wBiZ)J+=1`,ɱk)]gKޫhR\Q|xĭo[qLuaLY3 i?FіpY
-'MeҘ/Q\[%&@Olћ{C'+B:9ǵM>>F,CGFwj)!g ~ P8כ/((ݡ^;z0]/%~ [/d@FvcF2iYrֿk,l
-('vS/ŔYX}i|oC5+(P{5
-ƕp2VǠڵI:`ײ;,~- f[]]:%zlW]%͔k͕E'Z]{Ec*da{/>w4}%h"Z;D
+442 0 obj
+<< /Filter /FlateDecode /Length 4756 >>
+stream
+x\9+&q ,ae Go`'.ūHY,"7~>߾}!3o۷|L+}F0n߾poekǷ\>|,'|%<ܚD@ o:)djˬ)
+ <^uȇx2H8s3PVIݢ"$Qq7@T <9ɵXIJeos˕喚[ޕb"$.#q*լ \;^S*fQy` ׅ3@fp?j> WmKxxOLiDCH\I>@jfgJwoA0|
+ql>Zfq`ycEIb|tE
+"
+o-Y5kb%FS֒%VbK
+i^uY.2Wmqn_:GgvM幆<ifO_CB$_XJ0BK.Mw&fRB&$r'x”10M0M82BXyY0-yCdW7čk6t+J1aBؑ[
+y-YV;P={O슧 *..K,$N>4Gvaoce@JE{f!B2V684
+zƻu28"}b+f<!* <l(zk0=RЬ>,V«z/zƓ!t/Ln=s'A%-zce8YItYJYeRiɆ 
+G\[.ms=<iSz^HyklEW #cU-M WBTο]lo( ]m+4SüA*a$ӈzx}ީ V1n:2Ym`7JC+C-˻4:ƑL]U]g+Ąs
+nw٢SuMJGX[#0Լs9R(MFfd-L2?!|ZCLtk,ETD $YvuH :ٟ:&^hula|"Q2-$bdt4M?S%;c b3:~ZDuyk3H9K/Yͤi1sp}{2FWh L=r&/C&1dH[ayZe~nN,]kC9]{*A%9㮤 V{lsdӔlQDyYVifb4f2 $G貂c:c<[s՜7kyØHЊ+uz$YV\zQӡKKP;G*fs>TǨDƕg3f+ךgimVݜMvzLkuF/ ɦ Dz(Icx F#*XdWvɉޮTgg 8xlY"<Sh! s jppSZ2>
+Yu7jJ{_oA%ThwIej F!䖛S:- xf9cg}8/AfCd.a58h2\8~vWF7I/浤4AN+У'.H2A涺\myfV4UhP7+ϫvOЦC4ҍ^F/J'Ÿ^ԡ\
+6
+ߡ1ך-
+mYOToGjwy)HZ--f"(fMf
endstream
endobj
-437 0 obj
-<< /Type /Page /Contents 438 0 R /Resources 436 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 394 0 R /Annots 440 0 R >>
-endobj
-440 0 obj
-[ 427 0 R 428 0 R 429 0 R 430 0 R 431 0 R 432 0 R 433 0 R 425 0 R 426 0 R ]
-endobj
-427 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 406.344 413.325 418.299 425.28 ]/A << /S /GoTo /D (subsection.18.6) >> >>
-endobj
-428 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 193.163 277.374 205.119 288.323 ]/A << /S /GoTo /D (subsection.18.1) >> >>
-endobj
-429 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 464.884 216.062 476.84 228.018 ]/A << /S /GoTo /D (section.12) >> >>
+441 0 obj
+<< /Type /Page /Contents 442 0 R /Resources 440 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 398 0 R /Annots 444 0 R >>
endobj
-430 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 509.928 164.595 516.902 176.55 ]/A << /S /GoTo /D (section.5) >> >>
+444 0 obj
+[ 431 0 R 432 0 R 433 0 R 434 0 R 435 0 R 436 0 R 437 0 R 438 0 R 439 0 R 429 0 R 430 0 R ]
endobj
431 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 115.889 151.853 122.863 164.595 ]/A << /S /GoTo /D (section.5) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 406.344 466.187 418.299 478.142 ]/A << /S /GoTo /D (subsection.18.6) >> >>
endobj
432 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 136.257 141.123 155.963 152.191 ]/A << /S /GoTo /D (subsection.18.1) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 193.163 344.789 205.119 355.738 ]/A << /S /GoTo /D (subsection.18.1) >> >>
endobj
433 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 193.533 141.123 205.489 152.191 ]/A << /S /GoTo /D (subsection.18.1) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 464.884 287.206 476.84 299.161 ]/A << /S /GoTo /D (section.12) >> >>
endobj
-425 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 341.348 86.285 347.573 97.742 ]/A << /S /GoTo /D (section.5) >> >>
-endobj
-426 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 358.276 86.285 364.501 97.742 ]/A << /S /GoTo /D (section.5) >> >>
+434 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 509.928 236.981 516.902 248.936 ]/A << /S /GoTo /D (section.5) >> >>
endobj
-439 0 obj
-<< /D [ 437 0 R /XYZ 78.37 808.885 null ] >>
+435 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 115.649 224.238 127.604 236.981 ]/A << /S /GoTo /D (section.5) >> >>
endobj
436 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F56 384 0 R /F65 387 0 R /F58 386 0 R /F55 383 0 R /F67 389 0 R /F66 388 0 R /F20 382 0 R /F45 390 0 R /F40 391 0 R /F46 392 0 R /F59 393 0 R /F71 415 0 R >> /ProcSet [ /PDF /Text ] >>
-endobj
-447 0 obj
-<< /Filter /FlateDecode /Length 4698 >>
-stream
-xˎhEY`so6 {[wx@ [ERIQo~x˻?< =y 5};$&뙴5q#/ߦ?=qn
-XB'RG .^6CQA\M W;<aБ a|
-i,k(W.uKPn
-T*s'PӉ$HNO-6`,8{$|\2{R:C$QD ж@6նCچ2ᬹ:$E!V2k1E <[oT?dzJeRDe8uȨdFǖlD;ӷ~a^p0uXa(ԋWQ F%/7c\j켢%^IgG'B$Sp{[rN}O/!_Ӻ,rϢ>c'M:w nΉ0vӝ @w4PMkifS #&iޥo&09{?IiyeeFE^-$>0&8duo+%%{ZR"̇&^[
-硄SO'黯4Ṻ'ʅd˙FMTK<KjeƲ|u&ZߦHUc?ka;C
-5xDzE!\MC o_ݰHYO KE=Ca·cKZøe_,VJM#8&{TH(MIZ0Hf. f»fΟ]8C`;.`$p`Š.Xu.Wu=jsu"[KdC=м+s!i^͓y kDg6"S9P}xaL1]GN/QY,w=0nۻLh-?LF47x _oԱB >2, }@$ e
-K@H{|Bnp{XL'[Dnpߧr6/R3MSL6B-37ϔQFNȥBv㶢4~I˜@(ѹItC"+ݴzcB(8"%|mۀaX&.M!s3UKWjyUm.)Q{-$W
-_<J ~ArH2+(ѿLef+I#`19{P,c΃sQLPZ28z1^8<&8,4h@
-}}Yrf̞Jzs߹"`f:
-Svb&v lҙM7)3(׮tR1g<mG9BI\QT96tސ 9^9O#@#Xn^Sz-fwdJUhӥB24.Yn+U7E<ٔ=-) M2P3-909Kv=1[ԔL=)E |GVT'Z
-QTE\ F7y #jjB74Xƃϰ(bԧ[𕅚Rg~Nϫ!yc)R9 @: DtFlE1QKeT~ `@zǎE<@!N\
-(`HNcX'*&1ǑFasLP/F}ۑ*.y133ݗ̢+R: 쀩";>E]e;[疂܋ܽj]NplzE6ԋ-]|hٍP|*@nK̸1axIśLP. >H"(TSDѕj<2% YXuo
-&zՕ̴Ey3[+
-;KJikw:ǧrU,_i*WW!vcOuZY=.LhMh\3BR7L^F/~HioK+}ئ`(@.Hj= PbKu${4Pwq" %i='9l52
-;%ʫSzڱku5I^,9JX`u<J {uKQTXfdSX ,;цe:I]. @݂r.)`n"}Bt+kÞ߯=n.rT[07U{>ψ⤥'1U--Mƣ
-.]epj掺5
-
-;B'+_|<?ѹ2H,>46.tf/c䮸QyОN_Ś
-%XfJ%X^y
-jK:&R}{>VճֱTdW+aHɧQJO=JtYRk%ԴmzH[rMG~DTC>kb՞@ @⾫*y%W&kC MǗĖВm?EjύEHh/l4g 3t7^G97{4 Iՙ(rܰ2T2`+r6V_uiXh QEKs R: #=a<2ۍ8\Tey+EPY3m  h3X´"}YOf BMzZ$tjD+xOx1"݊baOdsf]^&ޝə*Az^k屧EJhV;#AR|0}Z{V-ڎÃ(4Z1C}}E1H9<5K_'w
-endstream
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 136.257 213.509 155.963 224.577 ]/A << /S /GoTo /D (subsection.18.1) >> >>
endobj
-446 0 obj
-<< /Type /Page /Contents 447 0 R /Resources 445 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 394 0 R /Annots 449 0 R >>
-endobj
-449 0 obj
-[ 434 0 R 435 0 R 441 0 R 442 0 R 443 0 R 444 0 R ]
+437 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 193.533 213.509 205.489 224.577 ]/A << /S /GoTo /D (subsection.18.1) >> >>
endobj
-434 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 471.161 758.022 485.886 769.081 ]/A << /S /GoTo /D (subsection.4.5) >> >>
+438 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 471.161 181.622 485.886 192.68 ]/A << /S /GoTo /D (subsection.4.5) >> >>
endobj
-435 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 498.837 758.022 505.811 769.081 ]/A << /S /GoTo /D (subsection.4.5) >> >>
+439 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 498.837 181.622 505.811 192.68 ]/A << /S /GoTo /D (subsection.4.5) >> >>
endobj
-441 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 502.177 372.415 516.902 384.37 ]/A << /S /GoTo /D (subsection.4.5) >> >>
+429 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 341.348 86.285 347.573 97.742 ]/A << /S /GoTo /D (section.5) >> >>
endobj
-442 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 114.907 360.46 121.881 372.415 ]/A << /S /GoTo /D (subsection.4.5) >> >>
+430 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 358.276 86.285 368.733 97.742 ]/A << /S /GoTo /D (section.5) >> >>
endobj
443 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 67.379 93.099 79.334 ]/A << /S /GoTo /D (subsection.4.6) >> >>
+<< /D [ 441 0 R /XYZ 78.37 808.885 null ] >>
endobj
-444 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 108.82 67.379 115.794 79.334 ]/A << /S /GoTo /D (subsection.4.6) >> >>
+440 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 385 0 R /F56 388 0 R /F58 390 0 R /F55 387 0 R /F66 393 0 R /F64 391 0 R /F16 386 0 R /F65 392 0 R /F49 394 0 R /F48 395 0 R /F50 396 0 R /F59 397 0 R /F70 419 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-448 0 obj
-<< /D [ 446 0 R /XYZ 78.37 808.885 null ] >>
+451 0 obj
+<< /Filter /FlateDecode /Length 4546 >>
+stream
+x=َH''~ 4A$//}; p8sTqIQ,ׅ/?ۇ߽x |7"뙴5q#o??\ <zSx ~ _sM0.~[yFW\wZE,ūiD.c)~J'p+w ]INJr'3ddiMI4 /ҝ0sᘢ!SF r~:\N |"=Mt"̧|=\+7$H l[h
+󹇉1ɸ/3Mȃ+w$k$߇<; [~6cIwjM>֗ y)FgוaVdf>`}~ < 䂴c[4YQF*9G5> jџ#mږfk`Ɗ9TXAp!CG_5sڙ[}gor*MlƠ=702
+[mВIkqDoi IVf@޺#%8?rg(H֠1a] kp0ې/Y%~LJ.awzer& Zי6yf=ˏu$!@_j, }W"  =gkrS"iu#"7xKqvoef=oeG V2|x2rA) uY.~_>H˜@zQƥh8$8ƺzE3eDGD5`2yB0 YrUtգuW*Bʡ^Ir rUhO;,
+joKŸ )ޏ}g<w1T@q\v:B qg3jż6 q yR\i}ÀR0gGuLJ^#0&8ApA%@ThqV'|PʜTo)e$0hɤ+vV$V<ќJJ@dL3I3e ?R=4] _ù:o
+}9|Y
+r Jx>ދj=u0 ;ܜ]75#)Ef2-Ȧ 5z37 !~Oc4>m2+-(mqLpF ^f{^ ^퟊Y=}UB2wWF3O4W|J뫎Hkռ_.0dF =򴒗Q6`
+R>HFF0{slpܫkA*wse{/N+~fN_y'^ʳݟklkcm>֎T] 7]@yd g.SGv8l6\<@˸kvǁ+&P8$܁1V3:bV<u~7ix@2[@h=K~`DJWP!>}I:,d"ťwK|kҳ[}ΰDe
+Nք؄;]LiΏ1˗bb#=k8=KoU19U*eyH->oOS<ۯѸډZ- %UF+THbPJ`P 2.I#HW6 =z dchj)OUzQt'aVt4tՠc\X| ˮh*ƒTQqS%JkkZ_+Đ?Z9O|V-h *?z#\%Q)*l+$b䴷<n!3TbBCbPIOldFqU򴉇3.KהFAV UEs,g#VpvjI ªq /Ϻ\%q@_<& aLMdR5&a W\{_+UNN%/Brk\дjL\-.}y祩JXM.Oy}V1',*QcIajq^D<wU
+Ayo겯U= ՞ߡe_1_a =S&=tFe16Uf 5հڍ&a,9tsNPrQʱ\劀\\Y 0&1wFȵHNa~p.T@$(39-
+z h1;X$4Cws\l%[Mf26ĠNzMgar.3|lIh"Rt%uC#t]ưYQ'od;4(M>ɷ q`q` ܺMcwZv3)Z1܉^Pb߮׮>Wͣ> A1-'lJiR鹖
+Җb&jly@?okyKD;O6mi.Bj `k3N[+VY
+۶^s~^ȋ9<\
+wI^o(
+˩QX틘 P!lvsZM}ry;2beW{ɖ;ŲV.pb4N qa(^.} MbҸVB@czP:&
+ѫ2T7jw(pY
+ܲ;)C6NQg9ݼSʶV;ш[%TH -ԛI%f|C&Ӄ5fUb035\IķuB -P[dUQK K+rk
+EՒurӛ=>=:VNP轓k(^3b5Zy~oѶ ܫ(p9!n;\"(uXg
+endstream
endobj
-25 0 obj
-<< /D [ 446 0 R /XYZ 79.37 495.051 null ] >>
+450 0 obj
+<< /Type /Page /Contents 451 0 R /Resources 449 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 398 0 R /Annots 453 0 R >>
endobj
-29 0 obj
-<< /D [ 446 0 R /XYZ 79.37 138.034 null ] >>
+453 0 obj
+[ 445 0 R 446 0 R 447 0 R 448 0 R ]
endobj
445 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F66 388 0 R /F56 384 0 R /F55 383 0 R /F16 367 0 R /F69 402 0 R >> /ProcSet [ /PDF /Text ] >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 166.932 400.538 181.657 411.606 ]/A << /S /GoTo /D (subsection.4.5) >> >>
endobj
-452 0 obj
-<< /Filter /FlateDecode /Length 5122 >>
-stream
-x\K$}(YhrjjS}3|Ŭ%"%EDFfO>dUOEI 6ANo_>ݧM)SaO䦶 [JH/߶}$)]ΧQ2
-\cwO/&8(7[/7?RR(,}:w$`p*6a sULɅб[ߙ¨ RSRfcK-Q$gk%#
-
- ީ8ۜG;6G-=ްx4MwJy; 춲:UY.׆ЧlCa+~p 1IZzr'g.]Bw |>S
-ʕ;p^
- \2*WWЀ+Fj6.]߿& wHE-'):c%|a3QI& ^@M[9!\Vö3;QjVKLNkjgcs y_͊qĔe!b QwL}p7ʙ
-';V[11qP} l+a!BRqT]pف
-D )en(#"=5>
-k]2wy.:0(fAt-`>>zkyngwvw$#H!
-i7
-.m]bAQa/( ύ}nq1BF%TŮy_y 4Xh'އoԼeeUٙN/۰ʌ9}TRhkAUP;9Zb~ڹ`C띲ױ /b\7ޑY%̧HO_P"R:;:<+=ݽ>ozPg-u|0rG;i/[iixe(m{9ch'9''u'x7R|3_[gL{6^B_;`.C.Q[N~E=,ᔄ34WafR=7|i,ݒ![᠞ԓ/ۍd&7܀k@]J[B<ivrY_hyܲj(5'(qP)s\c(n~4ciwpgthݙ]76tgvLUٝm=ԥ!^G[iÙO߅ܷ h
-endstream
+446 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 194.608 400.538 201.582 411.606 ]/A << /S /GoTo /D (subsection.4.5) >> >>
endobj
-451 0 obj
-<< /Type /Page /Contents 452 0 R /Resources 450 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 394 0 R >>
+447 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 98.416 93.099 110.371 ]/A << /S /GoTo /D (subsection.4.6) >> >>
endobj
-453 0 obj
-<< /D [ 451 0 R /XYZ 78.37 808.885 null ] >>
+448 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 108.82 98.416 115.794 110.371 ]/A << /S /GoTo /D (subsection.4.6) >> >>
endobj
-33 0 obj
-<< /D [ 451 0 R /XYZ 79.37 771.024 null ] >>
+452 0 obj
+<< /D [ 450 0 R /XYZ 78.37 808.885 null ] >>
endobj
-37 0 obj
-<< /D [ 451 0 R /XYZ 79.37 450.173 null ] >>
+25 0 obj
+<< /D [ 450 0 R /XYZ 79.37 552.448 null ] >>
endobj
-450 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F69 402 0 R /F15 381 0 R /F56 384 0 R /F58 386 0 R /F29 375 0 R /F20 382 0 R /F74 423 0 R /F57 385 0 R /F45 390 0 R /F40 391 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
+29 0 obj
+<< /D [ 450 0 R /XYZ 79.37 169.071 null ] >>
+endobj
+449 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 385 0 R /F56 388 0 R /F55 387 0 R /F28 371 0 R /F68 406 0 R /F65 392 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
456 0 obj
-<< /Filter /FlateDecode /Length 4276 >>
-stream
-x]ˮ6+.0
-F*Ԋð[4%^O',q:L]\0OMҟ>_~yKz}T~~맟KK?~&~c|DY}'KvRJױk¹9>KC(;',uyWf yB}b aA`e1g1p J0x?`Yfa
-YA_̡/AXR
- C0A`lžA2E@G8L/6 ;#$Q
-BK F6vW;cPDf#*xhnAy%)vp<)<nG[0<Lq1
-Q;ฯ4ϛ3<Kw X™|I@
-CD<cwH(<"=AS,1pfV~oA(D2-Q{:cH!iJNfK,nԛqdڊ
-ؑ$ (> G6nGBg䧮j7x$z!g\^f<6#AIPLZ]l_<,a>h?959=QA bxhnGv[8P^%θm Zj
- M%dǔOKҺhi皈EG-T?
-Mv5^U ?Az?5egq7pT{8D\ dokL,͵~5Ϊu̟w~4iǦj58j F
-b4;hwS-¦1 XS-׮81}OX`l)20(yjѮn 
-sm_Ok<~y-W[_sL{}(-ۙQ\bW+32>m2_^L~ݜ?)_}[x3J.ўoِW܏{'m{| *s07n߯[V;865|9>y쥾ٙ_5^© %_ $V,NW p KYs=:и!KJ4=CH \
-,|$Cp@bpa@)D{)<R
-
-Yan CI7,>a7,pǦQ,Cn$MiA08aɣmE'S96"! 3-Afs؀6L N 6"AI3EAt8 ʝ7PKpŸ:+C$T< yƘ<@4=>8H"QOay":@[<LAu8 ʽyJ鹓u8O<o8OM(
-M/18a<LcPʍ<$l 8QX: T@4=,(y*'s='dBS-z=Q^bp<y(Ǡ=yI$ dp<ϣ)4=*߂qdOp{<
-Bs%{8O'{N-g$Zn9%Ībwfq/|T MՃ}iݐR1R17YN0?M*W1bS1êA8Xejc|:*`ԌzϏfYfZ;'39a6J̯PDykq6\i <n~kjފx>Vs`:!HA}tGi=<,HRR,
-*rMW$V%,շ<TzO´%^>ߒd9HJ*5Y,4Z{0ˉ+=h{DAW٦jwpwɆr:ڡ1C />~HӠgIO`kUXO~U=/-O6S5YU[.QlEH^Ԙqmt:`i⠳6sˌ#2rOzkrZXH eyTn S0)W5gWz3mD_GH
- csIZ;Xqx3.\4Y6 ͟P<ǭĻp( F{jJ+k1ևi-nIȔ"]>nu.G@7ğaHVZstTU8UE^53%ݡ]3(,.F'נr:3gdMpYmJnQ1ʈzuG4<D3Vu6=2\co6|*J8C6ٱ iY')1r=(L~՚\=dPJKlxxk7x/:ehYI7ə ұnT KƛMe%`m
+<< /Filter /FlateDecode /Length 5199 >>
+stream
+xˎЊ00dķ ''
+2jijLJ8.|Wy~ ;n
+ ROVe05Wil/[G#
+(4g^|<1~pŋeŋ0Ixc΁{AAAs 7ĿE5Iv 2VA7A:+}/}Rؗ׊;.jSYGx'@H,51w8 goe~6 u)Hic12=$Fp3샯8S7PGG#~oj4+kY,wF;6^ʤYU89,IBᬉH#ev6'6uhFQ 9暄.^HD7s2hJD=x~Awot<
+)
+ػ yds3y+a_9
+ă]} pU>(yJ+ݨF]wgAnxgѶk
+};JhtIWAl'#NwVq3EΊx-BYeg\-|s֤'"ǧ'r[>6sl5ŃxaMgI֔39=)'ͭ~ڽ4jIIxk;mᦱK\8~:W>Mi?SDU7S_SSBiΤ n-ǿǟ߰v}e F ,eBR[^~lS$,Pֳ6ݹy^EA"]0"f<"f"Xe2ωP~qqIXm'XHkdۙ ubGqؼep:k#pq}{:Ƿ%5Ngs7%xoM*1Hqmwɛ̏szwڽhw,sK/5cHiSEm 4qU5o
+|ttt[OLأpZ6H3{){2uxLzbz.~Ye!/7$ #L(3TA[v?q %U b@mp,&a-2Niaqs1#5-lROy`7!0vo;;ag]흠Mq* \Ue vzյ6þ3bE]:3g6<zҩzdPA', |D燗 }$+B4՘;@
+.yHOūpV~N{G|p!ƚD='z䟰D=y{}>w'Y*Dc_SDDr|ͥ-5ݼ
+A}ZZac|@GtS?
+lwPXhq.@'F{ElaU.W[iz JpQA[MbJ&~ڴ(k)hw4-5֋s%Tbt
+B/Ɣ˳Q"ͥ r gljι['AڶC%3Rs+^+srHJim(p3IÕ^JUV"@Q'>&b 북F" ѨM.zPq4Z`
+(c篁Fp*.k렖;%| 9|9:mA'օj&)glIDj&OKx7%6*`C*v2(} zp@RZ
+-ZN"7G Z!
+f2Ƅ9z0!Z6AFHM%" D\r& Q\njb"u}|@LOE&4 ^&Iu51hQ³ιJEA(R 2y5؃6`qpRs oaVaFL09ԁ$QFSED!MG\
+b55 ;F"(IEIz|PQ<Dr) Ub`&l| +&-AMtjR"HK%"NZlvL\n*6l%h `^.J5i@x9ֵĠ$Q$٩s%'GmEA_ODc x|ltU[Lp˻?n3+;$
+j͇QmM$+CY99 ejMfIz+1IgdyNimGJFpX%ۓH.o5c6 U*z,mu)xAQM| o^-1jc6u 'Z9Q*4-I"kcѫZqFYSE\`ɥ5)8UV) l-g"be@-igs/i7zglNeW7g0Aͳ&jҺZdQoو#@/^ gez)ċ!MFKܶ^&+$׶;/1|!>M4%7pEBPziR
++V[T-3Q3c :p^~.ѳ okջnm[5/LfZqNUk;_- 57VDfMt`<oFk{ˠۨuX9$D bzp~3)Uu:QV[|Q|eeHn$b::&?t[Fadg؇˶#dtOL*JuoK;ϕJAv[*&5^kTgc:,bCQRzEk_ r ]n$j\/}6ʡh{aXenmY%̧HOQ ^*s|:}io볝XS
+dGNfXHwXaUhgw;dm7XW^9.A&?h9BXANT_mCW1i];,H⇓g`oAh)
+z~ gw #.28cC)$S"chi fgg^8&B՞}+2 }>Yf.v7W˥:sY3I
endstream
endobj
455 0 obj
-<< /Type /Page /Contents 456 0 R /Resources 454 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 394 0 R >>
+<< /Type /Page /Contents 456 0 R /Resources 454 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 398 0 R >>
endobj
457 0 obj
<< /D [ 455 0 R /XYZ 78.37 808.885 null ] >>
endobj
-41 0 obj
-<< /D [ 455 0 R /XYZ 79.37 334.862 null ] >>
+33 0 obj
+<< /D [ 455 0 R /XYZ 79.37 771.024 null ] >>
+endobj
+37 0 obj
+<< /D [ 455 0 R /XYZ 79.37 451.007 null ] >>
endobj
454 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F56 384 0 R /F69 402 0 R /F58 386 0 R /F55 383 0 R /F45 390 0 R /F40 391 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F68 406 0 R /F15 385 0 R /F56 388 0 R /F58 390 0 R /F25 379 0 R /F16 386 0 R /F73 427 0 R /F57 389 0 R /F49 394 0 R /F48 395 0 R /F59 397 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
460 0 obj
-<< /Filter /FlateDecode /Length 3138 >>
-stream
-x]KoW!X|
-Յ3we wż&SKXP}+fa7}ot0A+ax`\p9p0hH19sFdN eBl\wcxZ{]Qe @ 묤zR yD)ztRe
->Ŏ1؛?v 2v9E,N~?9M.䅺XqՊm~ez_ P28ʟ~"/;5G`.`!
-nw^ x9;@ EwB}r:k羯p=ppvf̼-v-5砻x@}w3L95gZȞA]xTHI)tp0O_ss>V<͑Ǘ ovLJblYO
-DL>^k0[e~bn0c:H&p Tx'Fz0`Zdgu.Y
-.Xz:}ヷo[X j c9߀.gLyb%߇dL>(KJ] tL
-o8i+4ĥN{uM
-^ IKt%#@Gżt/.5aQ1D&Φy ť3<Jw^KaQg9Bƽ0G!tt'9 rZ&/]0G 0?F!f'QaJ+aT9
-Jgҁ?Af'QJE:weD:H ݋t jҡtH3d"j%·'Jb畅N(iJ~NT&/tc%X=uKxzZ:T֡::~<zyah{:[;uzOU H},@b\x}uCcB^бձ@bp%#O먘װ(ztLkH湽݇tTkX&'"*U\:Tǖ:B,XG!t[:2֡9PwacKG:?<]ۉunRwlXF-^t:֡A
-!xrBq}O_ @ܕ0h>b^8@3} Gżr`Nc] P> b^oН{x;#D?ZU/B8*np D8
-uQ:vs$5hUF8*u‘)^#Sߘ4F7K½?ZUJ7we>r[9mi/sPڹ#*/:rTF1zql80805ю#Q=Ì#*xBv@[82@gylã YLy:L!T$VUڍw6bq%aTuxr4L\߲N8SF}L9<S|nȚ$>3.柒BblZB[9^$He4Υ ּxV)>[g ik/4`fM4K'! JX‰cƅÚL9籦17QK-;#!I@5G$E#]*y0vtTu3s:5)TD<k]TeWTD+Uܷ\F5i#r`Auށ&wyH⪯A/}CӨ`SJ~@RM5ki2mf*J:kCNoL;
-
-Dza$Tk%
-l,$קmaXxa*gn0iU4k #92ްorr*'A, >ծ} 0=a֏zrjX81D?͑ry&$}]շRˉ{Xhk92W4Fx9S?q)wy:.+N-c2Gdܕȭ Bjk|Xt=%'Jzjw->L?BDuaN,!/16E/Zx<Ua7*ӂ׻7
+<< /Filter /FlateDecode /Length 4498 >>
+stream
+x]ˎ+ 5JvWNE
+YA_̡/AXR
+ C0A`lžA2E@G8L/6 ; H\9
+yR9i%,``Ai h˯ү2M(FD#LjbTؖc9XM ;D.=R[ ,=Dql)
+Nv;9+8͙8Kw 0sK1
+LjUBWѣ:ǐ\#,~؇Cv0]g鄾p{Aq:,a50<|V[v_cv$(I|Ovo!B}@-#! 3@SW7xC$0+x%O@1i>w}qd Oq>7G_߰0
+b;(!a[ mWuqK
+ЋmAM9`[BvL^*6m0 ~\誅ͭ
+Mv5^U _{>T=ܼF T!9>3O&8<B,z^ . oPL6T,)i~5N߯_+RH`¢5x*)ŦOKOi 0՞>-'ƷC;X{*[~ߩo<eKѮn  XzߩROK7x'aep":N!nŎyEkHӸ6+jo6hɚ;۶YD{n|Hs|7Ues>LC,k%/gx
+Ub<Ec 5w&7ˈ5qMKǿs]&A E5V)uɍo^n0 ey0"y7pQd]+iK{Iud3{˟w?Eg<Fr%`k|Ir+\4zY][VA+: {mYmJ^֏qǶ^6cM
+cxs?x xa=/Z "~7Mm)ȁX_X_`L8[<Y,5D}E
+.M> Z_ .;>XA,+7߻ ۺ)90,aA<-&yh86 %*衪OVf jtDDuI!_~kZohkPmR9ˆz^IOf
+yُgeK#
+kG7.D6Ŕ8Gōw_j|9
+^%Z3ŮV>4#Ť|9S0/7o\+u=߲sx 77N/+˟x!iҮs07_lു ccYbd3bN}G|j-{Y^̯//}ȏ %B+H#M|ӆg=sw 4׆иOqmTM}\B F>µQ5\H
+frwoFmT?^Y8G݋%O@snv"! 3-AnlH{qd &x|ݽHPLQgA^*Y|CUp'ɟCXodOh( Jn18N1<Ǡ 8ʍqI -AplPqH sLp'PqJApqJ s'#8Oqp%z=UQ0bpcy(9LAq<ǀ`86x8B8N-<'9΂r8B *hRO!4%ܢIQUqA -Y9Ƙ<\ǁ<+}@1 zc(DJ`f8ʷ8Prg8 ʽ<
+c8Or|g+刼;Ùa[DVX6,co™QU=؄F6 p7pfoʙS,)[sf3MwΌ=gߟ ׿ֆ4bY9})v
+Layחn@Rhhٚ
+tKqcNnV6t%*[:pD*/b,4Jf±$A[8BDDl@` A_ P업܈ʊ_*)cmGBj<sR))?U<hn'史׈%,3DUȼ.yXCu-m$w*BOx&>UWdieA^!ٴ9SQ ו7\kSvdaQRϋBne(ߌJomRђUJƙ)M]S҈HIJL.D-)ɡJN1KҴK*r=uQh_ߦd݆GB&[28źxoc+ʺmYHRb-R5ۂY!?ƵOI #9G8Fe[Ϥt:X%SJ;1IIKppZCg5woHǴ?nAG4q&H%88Ш:?,)L}@qCK7g%}?Fםy):a
+b%Ozʾb QjZTC15m>t UEezڕ+Z!FӷCѱ։}\ _HD:vK]Q] kt\=@ mSw | qUzFA Rb5{*NAK-լn&l%uiPcKZy$HKmV-Q0¤"wmX+<F ݗeGiq?/:#"tYJVW wLCI
+̅lkի"o r\}=Ca@: b`{4 u>W$o8gvi׮ějXS|+ )7ׯX%r-)P_ˍm #Hտ,oLoi
+r?
+XJF]b퓡uXts "kg/q2i` /V;-o
endstream
endobj
459 0 obj
-<< /Type /Page /Contents 460 0 R /Resources 458 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 394 0 R >>
+<< /Type /Page /Contents 460 0 R /Resources 458 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 398 0 R >>
endobj
461 0 obj
<< /D [ 459 0 R /XYZ 78.37 808.885 null ] >>
endobj
-45 0 obj
-<< /D [ 459 0 R /XYZ 79.37 268.603 null ] >>
-endobj
-49 0 obj
-<< /D [ 459 0 R /XYZ 79.37 177.586 null ] >>
-endobj
-53 0 obj
-<< /D [ 459 0 R /XYZ 79.37 152.789 null ] >>
+41 0 obj
+<< /D [ 459 0 R /XYZ 79.37 249.044 null ] >>
endobj
458 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F56 384 0 R /F16 367 0 R /F69 402 0 R /F55 383 0 R /F66 388 0 R >> /ProcSet [ /PDF /Text ] >>
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 385 0 R /F56 388 0 R /F65 392 0 R /F68 406 0 R /F58 390 0 R /F49 394 0 R /F48 395 0 R /F59 397 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-467 0 obj
-<< /Filter /FlateDecode /Length 4536 >>
-stream
-x]Kﯘc|,ƀsCb9$
-\S|{ٵFS,*U((u7NXJ>ĐI[I+F;}|B)pJ9Jo~p +C){҈t(27ҡ.~ R=c/DHd*лz{ ߊ\}EoNQC<9K4' rlخZ3]&[FF@)]ѓV-v]~Ҧzfl}T0ZO:aNZZb: 8yj[#O9=%3%
- >O6Ă?yci"OgC2w+̖DQaB}SS`Pe9tɅ;&A"OԻ}mWn{T%`I
-u$4WQv)9 GnZcth K ;)PsmP
-s.Fziuw~*Ț{fX.$yY}p"Xi5.Yhy;__hEZ8,Tk\ x#yļ_QG~x7tW/F$c#6ffQ09mA 0HDMYiE.I2JQ?qlT.|RPi7S4uvesXb<9r&ZL tJ 4R6;#N`NC3bqsB"=ߥǖEc˥fDZ}8RK-0 vA@]1}yԣVAm#E3SSqH$^GJd`qzۓ K}鼣<d7F埜A)ʿ;
-Λy;筅-v۠TZ(1oa7)f
-WI8zк8џyt|tеK)D䖢^,9Wnt .B
-*;`"lWQ|oa;d' !+cWzׅl-8oÿ{~Gx{ %
-v
-.lpcO<T<x7
-ߊzy#g}}Y[loWiOnW-u[I=l2
-I8C3~_&4hZ*'*3 gݍI5Lr3'2O3b/ވ.tZV1 [uVEgC()eCmbr
-hL>m q0EaM~SʭurJF#a7Y]hʁ#.#Pڃ$:WpM\Af,i€?ٗv\>ܕj9d(D㱛cg' rT3`CIIy fK<v|saPշҮ bԥ+wڦ>o7d!{Rvnbh<5Q/n"-,'Y7&F3*i>֥dtr$-9؜xC7KjS0r2BWg%JZTJ8t޵tqhn.JɥK=bzo.6rMD9^YZ0L_v\o@۳*KIIt mSURmBM ˁwc]4ix\9;8wb[>Ю,}NJ\o6M^SV)I|ݲZQF>)W3l%AҪ4ioLC8v&fwzܛ wܺkmp]#\KE_׶} wssΈv +81KGys14GߴqIwc#ӿv;wP"Ɩ 3C9P|Wkr[Q"DR.Dr:D.?P(j*:aV.mZrR/f=aDA&Wf|[ vi&z2.}FڝHy_{:=ܬ0Oo/;ِ@*["06r'8{Sl1{INuC9pTMQ,˿N /oyt%4|DW׽ipSGN#
-PX V@<'z=ĔKkY'=]ΐtф%ơ9s,Õ\B&9h\
-w,~,*s{-B}v60sC+{wװU;Qoím:w\/)=gxiBJ{ iګ;ܣPC+M t=9\ ǺjAh2̤­-t#|3܄Du7#nץpX1un5[ӑP*ɕD {>ݭ pGy0I@{@ /d
-.I .5ۗ{݅M2iZ8+6 -h ߊK1˜҆Tn눛d'r}ٿ`w76̳۫epC",n8=@9yC
-w^">RyXPzHM
+464 0 obj
+<< /Filter /FlateDecode /Length 3604 >>
+stream
+x]K$ ϯ?ЊDǀ}doANFCK~HK]U]鞝]a_"EEk5ħx//BOyFM{JOƍ>~Ƃ+\s._>+2}w>O?~~vk4MV[f~DX Q&&Q?5iί6K w)\bGaI'zNp^W<sIu稖׹%vD*G>)<G{O!0]3He!>}^"j2dCDYKGċ'Yh_9ji(c+TE可I/3=t'8<s>BZ@Ckh,i i-&- P묞88darE` /U8pb,s 'IZ/h#GgV%+E &-ġ&dZ<D"UP&nJث뒁)$(L[f<gVB5XW nI'Ѕљ* sr+RI혰crY&_?ճ?QYHt1VHW$03A&uzJ 36)H%jI1j8ˏuIKx1m(oE>*bBz8UH[1LsT5ZpsՖ{)!sc][Pr:Ñ̼[3;HgOg:NJ:ә*z&d/jkm.O,JcJxV @uҫ+ #{*-mfm< Rةu<Z.8NzLPǘ:x^dfLٕTmR?ty_l# d k>k}^i˫8~N
+t=f`;huN,贾Z^Ss+l4iBk5A*RW<Ӑq[M.M8̾ :a?T-Y:hɶ^^VG]{|Yu!KZt'd޺ O\5B~c߄ѪM v-S Oq?? ErL>xsT&\|O,fͦy~0'`D9mOu,S:_ shg@Y^FflcRҴ*=:-fL1aß]z\D7my$f4c >x&~~ FHc\ObNuCoæ?Q74 ƔOgJcbS
+11CNS% ?dž:G=U; .rNB:)x~:p~f v#'ƫùxJ: 4L?OOK<'˔΢q0዆"U^? O])E抎E,~Hg>Y1f7]늋RܱSEV)} w9лlt4Ҙ 3sn
+4G } gF Zf; fܛ te; pSd{3D9:; A|e`x Q5c(H]AL54k0r)3S4ī nnR(K%F`= ;& 7 MC0aq~C0HDV!`' [ Mw#0A] ʐn^$7 9 Q3#`' [ MW٧|H= bnAw
+0PORzi@ (1 Svb 0tw\IDb 0*a Rz|wb t~1}͇WA*x"a b
+BW,īHS~UQ5`n
+"dΊ KWA~wWA199oiN9" K&jxUxUE,0澿Z3-X"Nf;3ہ `i~+o!^APL_j@RCA
+*oM"A ^$7 i8.$dVn=4]A"Bkؽ[ MwE_4}A#ɭ@ Gn>r\yELv_ef6Ah~UqE
+k K@k 59@9@G zZ
+X zUwQ)R,WlJuʓ+M]<ON
+<C6%9#]7@9
+%!v5
+TJ"Ezl3CժkA42%D4Zҩ~REWe~Ϋ n@@}p7|%
endstream
endobj
-466 0 obj
-<< /Type /Page /Contents 467 0 R /Resources 465 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 394 0 R /Annots 470 0 R >>
+463 0 obj
+<< /Type /Page /Contents 464 0 R /Resources 462 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 398 0 R >>
endobj
-470 0 obj
-[ 462 0 R 463 0 R 464 0 R ]
+465 0 obj
+<< /D [ 463 0 R /XYZ 78.37 808.885 null ] >>
endobj
-462 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 456.12 684.847 463.094 696.802 ]/A << /S /GoTo /D (section.4) >> >>
+45 0 obj
+<< /D [ 463 0 R /XYZ 79.37 195.497 null ] >>
endobj
-463 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 262.842 672.892 274.797 684.847 ]/A << /S /GoTo /D (subsubsection.5.3.3) >> >>
+462 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 385 0 R /F56 388 0 R /F55 387 0 R /F28 371 0 R /F68 406 0 R /F65 392 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-464 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 222.364 660.936 234.319 672.892 ]/A << /S /GoTo /D (section.9) >> >>
+471 0 obj
+<< /Filter /FlateDecode /Length 5444 >>
+stream
+x]K\W(h`ʕ`ʈwAV nI*zsm hJER$%Q~Ǎ~o~yX۷$~ `܊۷_>sŽ tRkϗRf9s%3b ib]pɰP<3׺Y9f\뢢D>'I
+ϼV بXL;~
+kZ ϮmJBمm|?cˮ-H&_y`,<el-^z ^Qt1
+`#câٯl,8M
+YHXHZ#Oڣ5l/Vdtݩdrp#CTC[--3wY.i͍V ӢF0i֤Fs߷'GOj}dC1tkGf]Ȟ~aFl(XrEiPBe:џQH aߗ6޾e)txW3V4`Km'Z^R1a.C5zJ7T83YT`}q0+Rr~V1
+zzO/ );ZE۫:&_K5-j3Nq#RgL$mї7RY!-|S]G-]I2Ha:y3N~'@xPfb'ی㼕KL&JO$@Lw<h*^PNזy+ljK"R:kPW\ e3ME3E4q!^sa ޔ0_,-^P)mOkʽ3&Γ;5Qôrpy,qJҦQ}(%A%Hyrw7H}k2g"\簦LyEÅ z~R.+I##RiJ&^B~<ֺ 2@|hz*/3֥4|v:.vqGǴ>Uc)rM᪾5!}P,e?emȊR0-KOo@-RCXR>Y9릙P_7@ d{%Q]iǔ7XQnV!/%\CKv/^@˨g\qc`nޓ_i'ЊwrO}h VS߈O_yW3yQwۄav{k&W2WC$Ftuʡwͺ:S׹MyW~OarSg0hG~B' v
+ߖ}sbGV%!~t`ևK5dVZÿK=kr!}Q~} skǼ0
+߆b_O^7yXbɑ܃
+g& H02;H䅺 ҏB<uT r )y4գ&rbҘR(hZ|2 ap2p(Y5mERmM˪펑 pյ(PYw2/d@0B:^߆ҤP[A9߅k,V] 7S1څ{}BfLAFZ@U_2wW| f ԣAò[YW55iV&&t=Ѱ]
+YbY2h26$6&{.FHpbc(dxmEoCin
+p 7oGV^[ܨ5#{+%^@z+9-g, AiMJ7i)6.XƜUXuh .+iwqsqˑNWi[H2Ѥ}3٧,xھLN워*ɆM1@6wFƹi56(l!I K&n2g{c>Wu|c+ x>.qW|XMOJz*2gb}b%GTvخ*hQ*Y\[g"L?V$>/-_%~Yh1Xw<U(yiV=|#M$p0 H
+NUYE Hy•xFZ
+ETdS%U %pm@<Cgp*
+͒W$z,E({)!ta&͈q/'DAV5LN~y>qr21P<qP<q2s ^ J3#ř Mh 4,[.ىޘ7NAH:Op]<1^\bGD*uxlȑOJZJ=~fhLwá|imPɉųYjqUnvH Nc!(u[_'ܵt #RDPi#+P'CHj߫4 YCw&*ĬsHFFE$7S`i2º䱷0.&":D;,pPYw/,~CP\ԡ6&f<p
+ [YuZ3pB=NAsD2n}eǻ,POPI6o!0`fy<iferbq8yY- K>m/; '`[aJ"#mĺE%LdG*[6Z͔qb21̟Nv%ˬC26 e+5{)g>eDgƺ:k3 'cb2A(\J/r>X}b/c,:}6,U?^< 鄮V$c@k;ŧ(`]S pvJ%<*Kx{=‡  i0X_BiXzr8"z|RC1Ub}>7aaiD,mݛ{ь+C)0l;*ЩVR'TL]
+\OaQYǹr5tre~2. HXIɵwr *4wf%Ej5:Rc%׽ Gph<vT7fF'8IcF|^>`>#MC97%隃3V崏!= ]=uz
+z8B&B9Ҷ
+ffgz̰ZiJ~  `b PN{m3/ڮZ#b^F f#xd}ߋjeX k"tG^kWyF}a8""p>WzO)]K%sU Z4E2tPAL]".>m5`AULTٵ]))dU`ktmG\)06/lnrwNk;d[GgO*^_Beחi񫣢n7}bkw^(+<Jwx狎Ѿ#fsVV-[֓ @ *ޚt2ќyK%~mi`A녤/v>M|-xBF(lY9j=HRW%ʉce_Zl{k6hjlFLHE(2@6,^kő{8:$]H"1v*TjTiG[F-Nv75S3u&ҔP&`@rH-0rؿoW1 Lr/=7JXhKí Z4Ѥl]{>vCP
+Jݹ!NZK DP.(]_{he0RZ>LˮпFIŰ<_=* "*]fb\h^l(2nowy<{QAxTܿ:/SwȠaL"L7ԉwp
+endstream
endobj
-468 0 obj
-<< /D [ 466 0 R /XYZ 78.37 808.885 null ] >>
+470 0 obj
+<< /Type /Page /Contents 471 0 R /Resources 469 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 398 0 R /Annots 473 0 R >>
endobj
-57 0 obj
-<< /D [ 466 0 R /XYZ 79.37 452.879 null ] >>
+473 0 obj
+[ 466 0 R 467 0 R 468 0 R ]
endobj
-61 0 obj
-<< /D [ 466 0 R /XYZ 79.37 181.387 null ] >>
+466 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 456.12 153.094 463.094 165.05 ]/A << /S /GoTo /D (section.4) >> >>
endobj
-465 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 384 0 R /F15 381 0 R /F55 383 0 R /F23 379 0 R /F20 382 0 R /F66 388 0 R /F78 469 0 R /F69 402 0 R >> /ProcSet [ /PDF /Text ] >>
+467 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 262.842 141.139 274.797 153.094 ]/A << /S /GoTo /D (subsubsection.5.3.3) >> >>
endobj
-478 0 obj
-<< /Filter /FlateDecode /Length 4234 >>
-stream
-xˮ[m?`q<0]`VStm
-~%J:XM.k#Q$ER?O酗//?݄9/^8;9+Wε}*ɹo5?8ƥX
-qx;^!IRHU5,#.!cC9s0g,||8WY8S
- #Ւb]2kԥjjcqsFY8*8R*%7%DQntcr=&DhO /gVQnG
- Q:;K R;%]#M_t iFK!A ax$*D2d4]?xWZD8
-Μi@;|% A_OBuӯ/+2 }t}Dp(i6LF_ORYyU
-Ǿ7*cʫU!!*L$C ,b!ecdAAbUMc-X6+,ori vGaɯ+7ɷU[ Ysw=}- !Լ[a[ D-s 83Gm`
-]u'ZmRڏW;xMo rp' łud{n? fU@g9x飼|[\֙U{fTd
-$moH5SAQR Uq Xs(ȕG'RdLO"Gj/*xS88X^J[[nAob69\mئ3+0 v yV(z0śTfaKnm$ ƏSj&.[IĖ
-ӳL⊻F-!n$RW\u=B0}Av`+rgY91 gҟD tCzVH8
-G~mHW!p7k&L1M5Rv-SԒ.#098J:yiYb.fk+^`i%20e8:S ^וmQ1x `f-6,?ժk*BcH=VOm"mEs#h [H+6k1a;ɺ%UAH5h!Ӳf>Lµj=##M
-|t&bQq3NJ
-AW`
-17] 3@s ZI+lHfXhejI3apױE^Ό[~LfM_^a-9pa$Xpp*R9og-MmN r8:Dy,n6;_M>xK>@"kwPޠ4hUTI(¥(--E1^s)r$XNkcmZWdNHRZlGr#OFt>Uw,r`%$,/Ojx`#^@LTDR]jհ:8WuhI0/~tL[ͲC}\qMlo wPKT ifo5[g{<i -ERKRȧR.Ib54;.C=@O9$zJ,cUd9utݓl>' 쾦=YpD0-ȟ&>u+;0:Uz"sf'E`K{+$zшÊư;NVۓ \ ېÀ߽eNzB`looobBٝ' t˾K)ֺᨊ
-c{{qzFwlm9 {1c0(&Gj; 4<Qku9➣7Dd=׆ zKF+MQ)rR=uÑWzg=bSd5EK$\L)
-͖Ou2)"b< oyly頡Ebx:}rXЌR| MFCMTcOLNAaŭ.;5J DZK
-6 .t
-$}\C,x|@- >0}*$xMte\ F"zpIS)Ԍ\r2(aܧI?+% xYݼgGV#eg4mߴ}_H E\>Z-Ɔ05c}R* y=QJ뢣][{
-*y1(gd#AYs|17h˫o Jw O8 \2,_P~gכ $XPKF?- ;Ɲ-*]ʛ >y Ǭ2Ë,(HOYS&-^V 8j`XgvEcyKݞeHi[ݓD=;pNswY ><
-36V*ƊJ:E8Lv!dc]6DT d橅jB6t樊 !hXI~=ȆH@BCjHER6gZ 8IT+dFtU5\yC8E*:;m5G7\<8[A{o a<wo1FW*N* cS-bJ<81H@6r;-m܎uKh(ֿPCNG)Lqovrl.v2CuXY!ТGnm,9. s9]̅_R7qҢX26jnqzTrfOnꪔ S{AO뭛;̜݈
-endstream
+468 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 222.364 129.184 234.319 141.139 ]/A << /S /GoTo /D (section.9) >> >>
endobj
-477 0 obj
-<< /Type /Page /Contents 478 0 R /Resources 476 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 480 0 R /Annots 481 0 R >>
+472 0 obj
+<< /D [ 470 0 R /XYZ 78.37 808.885 null ] >>
endobj
-481 0 obj
-[ 471 0 R 472 0 R 473 0 R 474 0 R 475 0 R ]
+49 0 obj
+<< /D [ 470 0 R /XYZ 79.37 419.332 null ] >>
endobj
-471 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 383.227 409.823 390.201 422.174 ]/A << /S /GoTo /D (section.4) >> >>
+53 0 obj
+<< /D [ 470 0 R /XYZ 79.37 327.868 null ] >>
endobj
-472 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 174.175 381.479 186.13 393.435 ]/A << /S /GoTo /D (section.10) >> >>
+57 0 obj
+<< /D [ 470 0 R /XYZ 79.37 303.071 null ] >>
endobj
-473 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 402.977 361.554 414.932 373.509 ]/A << /S /GoTo /D (subsubsection.5.3.3) >> >>
+469 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 385 0 R /F56 388 0 R /F58 390 0 R /F57 389 0 R /F68 406 0 R /F55 387 0 R /F65 392 0 R /F49 394 0 R /F48 395 0 R /F59 397 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-474 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 286.882 342.187 298.837 353.026 ]/A << /S /GoTo /D (section.9) >> >>
+476 0 obj
+<< /Filter /FlateDecode /Length 4679 >>
+stream
+x]K] ϯvq`
+y=&Ѳe3(lM-KSҁu,o0Z 1l0 H7KkM<,dg2_=6qt7<h>yDom[&)ki8I݀Λ!8QNaJ'kank̋^^m6pc"8FKY#l /TiGRoVxkA$U׿gpԶZ'cЄRVO_<}ly0ǝ!)ZQB ~CӘ2K,=t\] @B=+o&91\ߗHKd*A RX-:>9 }~2ˠu9ZtQC>p [-'N߼_<\ul|/k(h4~T}Dp9՗??~/lK8.\{yx9y~?ɃBϗPpx>
+w+c0Tb
+xO{%6 ?NFJSQ}5*
+~gzY`\5?3 ?ƘC9Jt6MXhSjzm?
+QKTy֩4Ep7?M kSq;/Sܙ(݄-IGS7qL`6ia<}W?o/YIyN-5i1hS^'=p5(VA>#
+P9@ZDeNExVҁHp259Td .|^D$diOv%۟d!f04ۧ0L
+e=LT>ʽ|Z
+Lژ 2(5`0=L^O)|2WÛMrKFiJ|g8t}2WaSW}xO6bq+J:R4m')$DdT7 $<s
+&Y)ksV:4Lc1uKӥ.!_4:d-^n1^uf{Td!R"0䠍:qh[E.+T72:dz$ooHS d[
+oF:}ֽnђRy] [s^Jʧyҥ%-Qn-RK k_#1bwzoXHLoPN,H-3Qޠ@*MlȗwU`ɊjP&/ӭ7<p0H+{HIkȥ6ɡ›ĻE?%:4oוCѼM{+_S0zK a6k.8eo[6B]Ue+ VXP֫HG:N?@^2([*G1^CGU#"qfCw /J\Uhҕ<?74;+0GիƩXyz}^?:J׶W%9(xI:(E:$1eŨapb`S-/~{jUMǣDSK\@P/3oշdDH8t#%s9B[H3 !V;!J#%xۮ:!ЏyXƜ[ɫB~3;Fvm^tsQ89>ho.o9S,/^xwʹ>g:ᗹ3VOoh
+@!I"gb7scAxe0P9v|D0|
+ĿuInڣl+-+-ۮwUe 9 1pW;|[j
+}jo]a]`0z`gv(BҀ@thZߤe V´/jY+IM-Znslx--q#,9Ŷ)} wj~*rF*|2N >mNpkGubcNs9.EX>*|Ɛۚ3e|uw+B$8?@FTDR1ՎhL&JP,}&OYEQq/b_qHrhj!>3 WH
+$j-'.ut6#p YM[AU
+jvZ\;pmW8qg_LB+,[BO%טs{}zzVLT1
+:Ic֭L{R(j#*bҤ:c*ViVk4c9_jcXE7lJ(W&>6ʟe!dSX9NfQG,,&ㄗ`mv E.EI۫D <opEM]Xs[%{^~i*\΂Uo`_m5l+|soߤlחC4GND5E1ŦaM1TmPv\[7mÆHsM2*f"iY,fl
+X%[_,
+endstream
endobj
475 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 405.876 286.286 417.831 298.567 ]/A << /S /GoTo /D (subsubsection.5.3.5) >> >>
+<< /Type /Page /Contents 476 0 R /Resources 474 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 479 0 R >>
endobj
-479 0 obj
-<< /D [ 477 0 R /XYZ 78.37 808.885 null ] >>
+477 0 obj
+<< /D [ 475 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+61 0 obj
+<< /D [ 475 0 R /XYZ 79.37 576.53 null ] >>
endobj
65 0 obj
-<< /D [ 477 0 R /XYZ 79.37 584.727 null ] >>
+<< /D [ 475 0 R /XYZ 79.37 306.505 null ] >>
endobj
-476 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F56 384 0 R /F55 383 0 R /F69 402 0 R /F66 388 0 R /F58 386 0 R /F65 387 0 R /F45 390 0 R /F40 391 0 R /F59 393 0 R /F46 392 0 R >> /ProcSet [ /PDF /Text ] >>
+474 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 385 0 R /F55 387 0 R /F56 388 0 R /F19 383 0 R /F16 386 0 R /F65 392 0 R /F78 478 0 R /F68 406 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-488 0 obj
-<< /Filter /FlateDecode /Length 5799 >>
-stream
-x]Ko$9rWqP lWk4$o{X>`{emzd$3>*+||]}yE#Ns-/_za0]|Ra)U?㗟 \1NQUXO~ O'^/9R_'t?0Dk5Q(#7ڍqN8e>[1e
-sjtߔhbBv8pI3ߞ fq G zj j35V{[|cͣl% 
-36~ϑv66yIxbhmP˲hh#M_s]7 :BU.h{䓂jKj8/vi1dyOM5M֛gyzQvniVu.Q6w {aUBMDȾ53T0K*dt.`+yIJ/q3m,$E46qСN.6~kv9:y̼tuGpAHjQ*\{ZSb tl6p0q-ɼ[ICXn@4G٤H4}.ZަbKxT!y!ݹ;t$ F{
-Wk?9+p\}p0[a8FLLžo5c_ &{@RC8?Qw5VBiyXQN/ Qt3y\Q/WDWGNy|O|Lw.a}?wU_! kah&ʚ3a~0_LFH<d
-cfQ}7|`K=GF]Q~?)aB˔)X43s\R=Frp .z2T7L韃Endڗ2~= pot?GV 0sڧ*bN1fN7Za?f U8aM
-ȷ*!N -1\GpkO~WuEeD{ t}'.&:@i*ze_{0:3̺$u޻Ey֩h)8KG̒b֢Yީ*ofE9ީl{b\XpCP\R޴<(];8twyxvx]y.k3҄n 9`vFk|õ(#pMg[ 9v", Lntpм☂6s+ہe:n q"& ؚP0hNZE|aQKsoC*(׸*~L [5TK9)RG+Gh[A3h% e<Q?6|3&f2Ϧl5$ʱJ\mlԄST2{uThB|1 !clDo-(j89/@SE`lh"q3UT쪋F|}t#Sƍwig0~ %vܩ-9-QAUy , g8fC`"q>90MKp/[mYԦG۳ *
-BRx ؒ3J"T#'cxqwKoܷ
-
-VB饼)PwaFm7-MgoAy7֓g갋mo=G{o7
-(i޲z1)$҂Q]XZb!4PJ_ZKb
- dL^R|T~ q~]Z\HU]י³|khXfda[ŷmQmg~OB/虗1 yyz>ֱô]żG`|:eO~n54Tme yWlrgJi*rgfLTX
-n5v9LkKYo>YV`P x/] {NP@D(b<=39Ӕ!F-yxP$z1%$2[-s*
-]'S
-L)\DIXJfv&n%St- vG2~T5.%#DI|UBJQVCz (s 7r̕ne
-Mޚ|*O~9dTD Y_hv'^mՎޮRG0q >0]t$G }kg3qR5lM`>uyԧvB]iF4ڨIo3?̓Ny<i78l}IisϪaި/QVv{pAfcs]H09s⛴ `Ćf"
-fi
-o3pHZ0bboQB`x oN$c,ܒu:SoVya
-qU[ 0w5giʪ"f9IwrK3J,;8i7gLL{i
-h"
-/AJbª[RҬtJ Z8ȳ&8ںsh&q?gG14赖}G
-^ )M!ߢa XmQ5ZB4q$7q̶ڷgA>6چ^
--H¿׶>~m*߾6OB.fKc⇮QH
-@6w,IE/SfJ6Զu!YjvMY ?E>ywsϥx4
-Oً567j,;d(l!G
-4`Z^;ǒe' U&i^д*O4hOh?Ge#x}*)}JίTD:ݶ_/F^[jj~1ԒKG'4FE!0*V/1q*2%ls^(@$?ƭH"̿TetYA*%M
- YĿȺd wJ -+j%%IiBݮ`m^(Op_vdZ~,E+QPsg:  w[5!旃+~mY ݸǦE튌-|+xmq1${Ie8okءu4v߶}մ[v&oJ|<9#e.y5U/˺"gG8;r4\SGN`/[EooJ&TJ]b՜++v;oYnKHdWA8t89g~n9? /Vrx3Y][]ygئڵycw@TB)/IJ"^sVvu6ȢgtSvX;Q)O5d; fIь-W.Ae 籗ы0T)w' ubŬ5uNIмcB;Y6bCnl|XiKtavu?3
+487 0 obj
+<< /Filter /FlateDecode /Length 4600 >>
+stream
+xˎ$>_eb H \ԻT=A]EQ$EEi |x÷7.8͵|.a.F3B5|t-UX?Q|7y8^waOo 0FƧ0(.m|cv<bWSgpaH<aKJ鵉£$s)R.ߢL" _&a^F! 4E`x3OηQ,J"'%%;%8i!Ȃïi1 $qqK*q ;B48q=ElQ'Fd]&pZcFz)CHGTXPCE3#Ses$0,3%Df\uZB 9*G!i[^*E0U\s*x[S_&b қ9G M c,%<BGV?jkm%OӘt!FL_"A{֝ub NM(m t5OvP̐hl8SD+3 לPC%aƒ%-d;yo64PnL= uBFW:0CLG;CebFE nFA5u'sfAn=4(60S]R!ʚuR;-j{e. ^\A1b#iͪГiXkϕ&5LK둫}e𐱮<бn4vT˧8+DӐ!՚aqCk:9M&海 .@N%á(lZQ?v/5X#f΂)JVŠg > S>^%o:v -5~7~!n qiPpScޠFd^D"0
+IhxkGG˕XЈ!x6R5ƥ*\c*}MRM0P7 'WV4kʤ:-CZIN Ċ*APM%kA,Yvfڤ_Oe3i cI]"j&z6.:T>zb>7Od׌`l3
+s$$zԜE? Au40/JeĨivaBo?3!{+4<V mZS0kwM}%ZѢKcfVvսo$#ukNr68Mݘls~hKJ<@xMWWЏӁGGTNbדሣ?=1eQJZ>l ! \F8,s J%Sڥh킧jRc:|3Ϩ)!ڼsIw"&0e/I$ʀUng(X?0wnIaZ-GK)!*⦷g\{ݱNC&D_ ʾϑU)sSx{T1k$ۢy6r֫.g%DSqWrC=<*? 8 ïgK8'yG([ z*czHƲU"3!n<dVLqc]Hfzo-"`
+sPlf$=U>I Ki䆎CXl|on0Cd& :i&HtIGɶ1_LL|+ W}x zBAY?lo=ݜd hkt%yY_`uO |O4m
+a,+Bѱ`A_Gf7ٞٵʱaFe0VCP<Vg(~a_*K|a%Q~~Ԝ$¢N&$٧28t$߷N}]FO>=giU#=J\ ߗ_&#'<$4.) a<mԛ)iѵ @)PÞS"}zN a%P/f.f6pӵ]:bŝjM0lXpz|z.D6T]<%@\-1,7D:}|g˧K&1p/L ة Epκ)C/ff SŲx'.6E5EtrLS.;
+w3օQ8K |`6[P8ټ)\ݠv&5(ܚP:nC[^-7
+BߧXP8 e&܏WLsO29Iq!lʐ8ڥح7O[. l;ļmf͊T (ݬ2FNiTjȭWrp]x)_tV%FeS],M =iNVv!#ͪS39#oǒ)Vגԛc
+m;-m6omtr hm']<pD1W&1<8%
+Nоs:';<é2F]׃t] N
+b+ NSZ2.$E8S+8%8T[ݪ=$MO t[mq-+aqOyK,u)}!.&?MŠ[4@=*Խ3yhV5>G|5 W'`%C>ZS@,h];be9@K"Sӆ' ֣ڎfh^c<Z oRl> Dh%QuJSw)NֿCUfv %`kud֧蒹g5UЮo$Ywd{C D#No ԋ&y<
+m:#_ :s}ίE)!Vj=ݟT>Zk5BϪ)m\W%d
+hVr?1ffxܠW3?Qx4)wQ~!0J?m⢹]Q[e} Nb~vuq~^u ~V԰%܃V)B`RUߞ_,RYچB=Ԋ'0r5em} Ys ΰIhy RuZk]XQ4)j4N<D'[R_-t{9;P E5`pBDbjC@Q|j}sdSd0RuKeܤ߶х&
+bt-mP4D~vJ1hv.KoQA ]y ۉ+ _R[9ޜMOVը1-uX;QW:q]2޺X!.4˙0}{edJ
+JT_bݤO]9^w55PWc!6YіUǸ6TG;5q7/m>ڎnjp QB}<DÑT?
endstream
endobj
-487 0 obj
-<< /Type /Page /Contents 488 0 R /Resources 486 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 480 0 R /Annots 491 0 R >>
+486 0 obj
+<< /Type /Page /Contents 487 0 R /Resources 485 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 479 0 R /Annots 490 0 R >>
endobj
-491 0 obj
-[ 482 0 R 483 0 R 484 0 R 485 0 R ]
+490 0 obj
+[ 480 0 R 481 0 R 482 0 R 483 0 R 484 0 R ]
+endobj
+480 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 383.227 542.814 390.201 555.095 ]/A << /S /GoTo /D (section.4) >> >>
+endobj
+481 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 174.175 514.471 186.13 526.426 ]/A << /S /GoTo /D (section.10) >> >>
endobj
482 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 456.048 271.858 475.754 282.916 ]/A << /S /GoTo /D (subsection.14.1) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 402.977 494.545 414.932 506.501 ]/A << /S /GoTo /D (subsubsection.5.3.3) >> >>
endobj
483 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 491.475 271.858 503.43 282.916 ]/A << /S /GoTo /D (subsection.14.1) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 286.882 475.178 298.837 486.017 ]/A << /S /GoTo /D (section.9) >> >>
endobj
484 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 164.202 224.147 176.157 234.986 ]/A << /S /GoTo /D (subsection.18.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 405.876 419.278 417.831 431.642 ]/A << /S /GoTo /D (subsubsection.5.3.5) >> >>
endobj
-485 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 158.601 81.696 169.058 93.153 ]/A << /S /GoTo /D (subsection.17.2) >> >>
-endobj
-489 0 obj
-<< /D [ 487 0 R /XYZ 78.37 808.885 null ] >>
+488 0 obj
+<< /D [ 486 0 R /XYZ 78.37 808.885 null ] >>
endobj
69 0 obj
-<< /D [ 487 0 R /XYZ 79.37 771.024 null ] >>
+<< /D [ 486 0 R /XYZ 79.37 717.718 null ] >>
endobj
73 0 obj
-<< /D [ 487 0 R /XYZ 79.37 499.967 null ] >>
+<< /D [ 486 0 R /XYZ 79.37 279.235 null ] >>
endobj
-77 0 obj
-<< /D [ 487 0 R /XYZ 79.37 211.188 null ] >>
-endobj
-486 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F66 388 0 R /F15 381 0 R /F56 384 0 R /F58 386 0 R /F29 375 0 R /F20 382 0 R /F23 379 0 R /F16 367 0 R /F57 385 0 R /F45 390 0 R /F40 391 0 R /F33 490 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
+485 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 385 0 R /F56 388 0 R /F55 387 0 R /F68 406 0 R /F65 392 0 R /F58 390 0 R /F64 391 0 R /F25 379 0 R /F16 386 0 R /F49 394 0 R /F48 395 0 R /F59 397 0 R /F50 396 0 R /F41 489 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-498 0 obj
-<< /Filter /FlateDecode /Length 5207 >>
-stream
-x]K>4,x 8M9$ 流d[-QY=bWɏУ'>~*X/'1[1}2Ĺs#>J;yrNjZ4.^JhZx F`s T퓠$ġX)9 _9Q#d隫H!24H)uxqHkT-?EHЃ2g_oNgˋa֨^|u ޯhen4u#MYTqq"E<INjRjF(m]BHXǬ
-8$q$ю9z/ `=gAt,fI'iD2lH QEҊ&zc굚m啒:v-OgѓΪPr_|jr*pX4HoLREPf]~#,˚`| FjG1rG%dƅccg/]'2Z2aS'+Qg >*]R\KZlilV,cic\V|/UQmqEnx *xUύ Lr3ˇO-b
-LVI%
-Sҡ4pϟ|Paw‰3Na |%z0cmNa `Q̕.b bb
-'-YL6Qo(MjgKh+0DN9Iz{{%ԁ_A}K 2΀
--Ipe ը-39Qo1]0
-v]#[ +aO}~$YycxzOD=qIUw739RWMjfyuQꉝb!bܙDDiQ7 [ҌKa$c҇q.vVeKdWJLR1w&eK0QWV7a.q^
-k'MhQg9҅rX
-u%PIZ>+q+rݛ۵/P`,a0!$~R?.^5aZa?dXe*t>)CN}$5:)Ǐ%tSO4R fEQR11Ց[4--#)?,ʂȾb<rcì$TA5>V-0ۜ7\ՂZ,x=%iƕʈAX['jQ!RWuK`U4zR6©?=<fbE
-097T.Sgmӟ$gntvx-)}n;C(2:9
-URN C bW\#|&ᷪD4_35bIjU<A͕|uء
-0~%^V˪%\VlC,$7: `L87ޣf:ΦoRK͎PZ/RPLo(ǼRL3˷<މ0WRo)ԴZޛpbq:0qZybN^~ʀ8Q  3?^pY1U·Y*<o߱XF<=QoAWI
-_,F<(VG#~q ScLU:Sc]ŏa- u܊F ?W5i7kR)յL=kUYum ;-];
-dqƭMߪg)nG-S[[Vk [|-k;􋵍͟gavX8@9D4y%On$)~iğ nN<}r7
-hKnKv$mIOtʪJ*
-vMP](8f6`qİi:[ۜZyÀSk&ỳ+JnS6bb
-Z4w7׹hr5{!"gh+|~mF/pY|S:f¢|b{:͠cR0KY40۬h)Qxef2g凫$R@@ \27( Lj+Q?^GȟZwCI<5tگSyMmf\}+c&J&_\]ګE
+499 0 obj
+<< /Filter /FlateDecode /Length 6106 >>
+stream
+x]Iߡ8ܗ"\j"ޜdf0ƚ,~
+gl$a}fdzH~LDdo2#
+}MJ^5RyR祹_5!p0)-mF5sCT&߲Tk{|OѤK:0mO@ ձ74\ tY\1 Wb-jӤ4R*T%i
+i(e֠š[sˌ55#^kp}!oulvR
+΄]<lԷ`na޻̚zݏm߁kGn<sz2GS@omR@)iN|t_N\CoNuzSeq3tкi&ə
+~fQaUg)IJzUVтA!d22<yF~0ٽ_,bv@(
+F6Yԅ8M1s׻ Hۭ4ԃZ鈩úCȴ|R{BG}Fq<(pY3zxT9<\wL>?4 ?OOp^C{RO2΢}zfz; yki^x<Cտgzo ))_2ǜ̜%sO:_2ǜ̜%sODQvϦYyZ!wy u^3=b߬<k3l(LyfN9'Og/cNByfN9'Og/cNB}0?3)A>
+ؽs)f';6V";8&;K]mߺN^iU~>$Ag/^|G*ޮ~zaɏd(R}RLU>q`Ulq~Z;"=wj^'<MHz>i}e ޽K0|{`RQAJ^9X=+
+JUt\pd-E\ogR;C y>C򔬐 Qo/L`3,M\3$Qr
+$-^e"UDy8BSQB#ż>!2 f!~qDVnG\Ffr(9f2vZM!(-Ƶs0r= ;PLpL>o3ui#:C 䌢v *9 nI30}߿Y*5Se6t 6QvƔ\\J#XUuiݴ-@) eb[S8(~"X΃X
+4Gym#<,8M}t6ř6QlvDjisd8̐^Rưιv i0|AT"c]׷22.p沃gnud'4Zu<} U'cmҽPAGvW{s!N^.:=d'ǽrzA}k~Q}(a"ql&z5$mA)lSblQhg!x VRN$S,bn>Cu:Dh^y|blJN'̥MKuRF2#)PB3RC3Dqὀz[bpKun`w,||BWa ǚ[ 2eO02V˷Iڳ秴̋ÞXvs&*D϶Y:MnK& ^۶0=~/L 4SBD^뢱&r]ێIxԼm Q8[9rbN֑qFb*L !vT;2[Gͨɒ[KH]W7+ƁDN{W9`L)3mLN1n׈#hN{
+9Xm ۫Hv½D#Z6`C6or%%ۈNY0>%4D <",Vgrkʧyi:zISNXP& %"Zω\Mmz5"c*n&s}ךLњ8 }w WtժG@UxC6j3 О
+
+4\G+brisu^K;xx O
+u>+4`2'zli!y"^5;',wP؍%5be1P69c읶}PA1ĜsV4c":r'`X
+.Z )}4Z_Op#S7Kdjq|=
+o/##9UX~e}.~
+sCBOzL^쿙WB׾$/'6e9jvv[-"'O;?Kc:8B)f`7Sbr%/ ,^t!iՆOK09pI:NTe
+4fDf&2ę~8Y- |C6p׮?ek&Yz؃(
+g`WׁlOQX6fgћ1Ӓ:-7J|'pwT>I? g3-kgx`k*bv1+cy
+RLc~s)y2sǻ%]&:&nI)Iov-[ͬ {r6Iw>kIcVx ,(pj4~y& [O6
+%2W_N2 $KJ9}|́3hRAM-C!/Q 0B`/a0[wď<y1 kLF)3ymp0o4~ xmm@u٠̣ixE 5~qTN睮5EODѓPOGNFIdyt66 ;m` IU |aGK?17ҋesGq{\d&/7 Nr p4iB>m6Ih%Lۀ0<wA)6 ϝlPrʴ s'92mp4 CIH<s~6 e$?qA)6 ϝlPrʴ s'92mIh%Lۀ0<wA)6 =gD`on4*J05Hܱw
+ycxi uHipR}@*zݘyiY=CNoWG,D< e*uq DhymΕ~8ZNPf=7^"kXg쒝YύǰlPa7l/r++-+q `z/*VQr7/~*Bli2-ak\]Ld ),R^s8x^V~h+ibUUCHL՚W\FCH֨Z\?8kIP0xl;qr]mn<jqzD@db4[ckiN*.b\rVX#ڪ2Նm|ǖ:_u$T*f{l Mu L6[lkHl3.^~!k7)C'4~~/_8;:
+;݂=6 '?a4\OU,pR:'',QrYJO CrFZ|I.g#ڗbS,D IR:VWxz<AWzEN!.!\дäCW1.衢QQ0|2вCj(cPJvry |Uʡn@t_+Qz/Ђ`6,օzH_X92:߶a8r!}bc!RzOUy<lGvL9N1]_jf4i(`0l1PtZ-*>%+gW<O}|)R,˚Vg:V$I4msGxa p(֗,)Hw׉
endstream
endobj
-497 0 obj
-<< /Type /Page /Contents 498 0 R /Resources 496 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 480 0 R /Annots 500 0 R >>
-endobj
-500 0 obj
-[ 494 0 R 495 0 R 492 0 R 493 0 R ]
+498 0 obj
+<< /Type /Page /Contents 499 0 R /Resources 497 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 479 0 R /Annots 501 0 R >>
endobj
-494 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 429.173 233.701 441.128 245.656 ]/A << /S /GoTo /D (subsection.6.2) >> >>
+501 0 obj
+[ 491 0 R 492 0 R 493 0 R 494 0 R ]
endobj
-495 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 401.358 221.746 413.313 233.701 ]/A << /S /GoTo /D (subsection.12.4) >> >>
+491 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 456.048 411.848 475.754 422.907 ]/A << /S /GoTo /D (subsection.14.1) >> >>
endobj
492 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 497.51 115.666 514.551 126.072 ]/A << /S /GoTo /D (subsection.14.1) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 491.475 411.848 503.43 422.907 ]/A << /S /GoTo /D (subsection.14.1) >> >>
endobj
493 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 88.249 104.988 98.706 116.445 ]/A << /S /GoTo /D (subsection.14.1) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 164.202 364.137 176.157 374.976 ]/A << /S /GoTo /D (subsection.18.2) >> >>
endobj
-499 0 obj
-<< /D [ 497 0 R /XYZ 78.37 808.885 null ] >>
+494 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 158.601 69.924 169.058 81.381 ]/A << /S /GoTo /D (subsection.17.2) >> >>
+endobj
+500 0 obj
+<< /D [ 498 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+77 0 obj
+<< /D [ 498 0 R /XYZ 79.37 639.958 null ] >>
endobj
81 0 obj
-<< /D [ 497 0 R /XYZ 79.37 197.28 null ] >>
+<< /D [ 498 0 R /XYZ 79.37 351.178 null ] >>
endobj
-496 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F55 383 0 R /F56 384 0 R /F20 382 0 R /F26 404 0 R /F58 386 0 R /F23 379 0 R /F66 388 0 R /F45 390 0 R /F40 391 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
+497 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 385 0 R /F56 388 0 R /F19 383 0 R /F16 386 0 R /F65 392 0 R /F28 371 0 R /F57 389 0 R /F58 390 0 R /F55 387 0 R /F22 408 0 R /F49 394 0 R /F48 395 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-503 0 obj
-<< /Filter /FlateDecode /Length 4574 >>
-stream
-xˎ_G4`!pNu3|%HbߧHj{Ūb^nQoowpқ#Ns-c
-[ݻw8i<s|1
-qm_zf#RM)byn<g2R>H=Zd`t?6=@ug=?=%2q% 5=WD_Oc(ߟ2EђOm\"s{IШZP(G(sw_6
-[/ޘAV|escRsg '+榃>in]@kvI
-ۓ0TU# [XuC  QbY1 :>dz2`+_cO
-`-_@oۡ_nhJ&
-w5-C:Ԋ} 6)+~h#PW߷nVIgal2x,Q/x3_?_XIhc 67ցl {y<q"w<{!w<|Yț{+m/2( gf&; QZ_m@p#-iXIPg󄏆gM'aVrȫ|jK@cЛ'gcBI)aATVQ[4xN"(Վ'B ஒoAbƖn$bȠ0cmzoYx%vZ:98nCspV`HhJw49FWSxs,!-ǨälӾ>R_)Z\Yn4noPQ0#4 pQ7\`:=&
-|&hTXJ'UŎI#: 44s"G>4J37 Gq1pE"p\͙[5r]Fn/.C30xΔҷa- }t1n;1V7Lp"[﹔a?
-B_1y RQ/>"/"}aŸQvVaȇj׳7#yӅ sFW;C)AoIW9UUe`-D&EO鱍]9¸O!ڔ()n2^i & .4pJ֒O65^lj[#= M<?܅EyzysÑV+u/?YВE4yTsjSs@̃
-E<XMۉUKf}( UdP H@d? LX?2<t*"d҄ äeZf[&2Azk(Snc̎ڨf=15F 1qDgFQߎbKva\o [{F11s(2A`QT4DFLc 3((s}aڎEba Of(Y
-("YVJ}
-ٌ<'5 pКIN.M[Pe?O3]ΙM'zI2PBl>d:j;5ڑJy0OWo;(m$~5Ap`9Ub'|ҩ6ULZʔ9NڐC$r[k1M.Z6c.L_j2b:wH*C
-Ar9K|ߕb$#\Ũn)fFMPz3:LK%&[R U*$UWWd)A|Gt,"-D7f#i!{SKfxwHA;عFDYcǦrezWz /;HfTU_ Ob#av*"
-u"8t 3Bk.Yb3{#
-&ߟ2\*U뻯!gKsE:[ES9=C[ Q QbIcBp+iBvlgYqe3—73^%@Ef%oZӍ+H9ns5B6-pܞHxANc~` gh"&Edjc4KLpg/-t+ɥ
-fۺ*RSʑrT':DJO
-mY,RX\\:% vW[[SDB^VXR VײP5ap{&Ԕhz;R$8Y|Y {߷I90=G<=>~+7@ЮfԀR  es{<MK=f[yqKP/|#Uw0Q,o^
-op:/HHl3$LD G p~$`5E3g^&?$5tc CP??OjFfhJ|;mj6u57hGE%)D[NMvG׌6&v;z i͈= Ip
-Iľ+{"mܙUC;t[⪸v8bfʅ
-W m-RY Eʔ|,gNG6I'3N8dCj6~Η } UZ9Sv+͋_kgc1llbc!&S5rs/n$Gw:鷬ﴤ8.ӕwF.=vNjcNs&=lr|r'rONlfK/)CjNDX˔T1PM.-+
+506 0 obj
+<< /Filter /FlateDecode /Length 5225 >>
+stream
+x]K$ ϯ}hY0X`g'c9-7{zKRUO;F3ݭ&)EH9_>=|\?|A'6Gfj6}2}Haw!(jZSy tFwЏK0)t?Q7M kIgU4K
+IN4H3.r.#V^}g`1N,2\# CۋMmDkJT2"z|}*x>π:J'1h~_5}%ƥD.]!V:p2.*ikqp)K *|)[N-- d#~-LB! } 8QxB1zF5m="zm){ѝ-{W_wt>~)Q$
+IMY\O𳧏sGz_fɥ'5pO7PNm^b_&^ڞ{K;ڿ_K\͒'g_[Bª \
+&g^HȅY9_y? ۗ)7nx:;+|?DR&R5/F=8Q)F*zaX*a?hoqHL ,n)w'j$>ymo'O AO8ؼ>=:=|Fb^glhvB}!bC _ )Y%. bE?$yΓh WvV1XG$hֈ GboDt#<Q#1#\ D*>A$Ǡc8zә7A$Ǡc89̹7̥/M*uH=tE(m
+\t {tD>Ap 0?5S(["EHp-]9N5_Seΐi55g3@Z>Fh{ 
+Sgx/(FVRx;"
+0({LvdN6lL<$;^
+o'[lEPR/ BH8&9fV2afc2/1 NG@µ7c?%RX!-0j¼eԋ#tnezQ!VtnJv8δsUR]5R:,77C2N<Od,ggzam_5*k ϭ24Wi^i,gKWd6c=`=6{/!jC7r+GMF6`ԪdUmc]%梟rz%T?Ӕo\ZB3vm&b :!ۧ
+TwXDUyJb+6U &}ڬb.SՆT̲DG&<89\}DGyJ!uhv{Ηv;9Lh akX;ΪVo>;B\r_f
+~vJЄ+R\TMWFٞg.wYLfRw)Ɖ;ߪX;#eP<Xk4fzH-CF.PmYæ,b[ѡ(pE&L|<C_ק $awi`HΰR_4r!7Snkj}) ֑z"~ kf`mTo
+ -Ꮌͳ7ᡕޛ[@ Nt$lA"gnJv$Bf'Juz+ɐV\
+Xa9Ŕ#IC\>ۏiBk}Wg *E(hvg G=KKlSg O3ljaW8Z
+lk˹Js6|f
+_V</srRBiGf{w#%3ZI2CF93xaZsj\Ma)\U/d;VV̓<j/Rtz =:<H4O'h}! O5JUPxƢzEzCN{ipRgK=%ܯ]+֡4ѱ` z939h_vAtWiNǗ{Qw9ୄ4Fzװ%?-wޝDTcޟbX\]@nR^}%ծ$AWj5^߀EZb:p2 F8tX́DSGFsZvC"O_aQ
+Qg?6Mc>s0zȹ )bNբNToRogk%JfNS%n;%G){tSקM^JMG ^zSG;&XܶR.du@dJ9?$DINdWW;<5QApsp7Wgfb3Owk`1UgI#%gjm{3_p}ib>cfeUQ[?5ַӉ()ݕFAS*^eUO&z9xU݃Aڨ VyQTMeq.|{*U}2vNi1d`%IcƏc^>^z*m Eo O-+=ѥR\!?-Vs*)=Zc`N.URSJo[WXG:UHTtZ<]Қ`[5/M|4=pSK2deǰn‡Gk<g:.:F
+19g/e?n%20ݧ',+31:b{bʊ+c]u*aUNMleU'=]@zjڦj1.bVU!Jzh]XHp\e
endstream
endobj
+505 0 obj
+<< /Type /Page /Contents 506 0 R /Resources 504 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 479 0 R /Annots 508 0 R >>
+endobj
+508 0 obj
+[ 502 0 R 503 0 R 495 0 R 496 0 R ]
+endobj
502 0 obj
-<< /Type /Page /Contents 503 0 R /Resources 501 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 480 0 R >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 429.173 406.451 441.128 418.406 ]/A << /S /GoTo /D (subsection.6.2) >> >>
endobj
-504 0 obj
-<< /D [ 502 0 R /XYZ 78.37 808.885 null ] >>
+503 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 401.358 394.496 413.313 406.451 ]/A << /S /GoTo /D (subsection.12.4) >> >>
+endobj
+495 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 497.51 105.14 514.551 115.547 ]/A << /S /GoTo /D (subsection.14.1) >> >>
+endobj
+496 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 88.249 94.462 98.706 105.919 ]/A << /S /GoTo /D (subsection.14.1) >> >>
+endobj
+507 0 obj
+<< /D [ 505 0 R /XYZ 78.37 808.885 null ] >>
endobj
85 0 obj
-<< /D [ 502 0 R /XYZ 79.37 654.722 null ] >>
+<< /D [ 505 0 R /XYZ 79.37 370.03 null ] >>
endobj
-501 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 384 0 R /F23 379 0 R /F15 381 0 R /F66 388 0 R /F65 387 0 R /F55 383 0 R /F58 386 0 R /F57 385 0 R /F20 382 0 R /F45 390 0 R /F40 391 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
+89 0 obj
+<< /D [ 505 0 R /XYZ 79.37 204.438 null ] >>
endobj
-508 0 obj
-<< /Filter /FlateDecode /Length 3951 >>
-stream
-x\K?04Y|4ZX7C'!Q
-fG Pkw~ĀC[M=
-2C NKi:A&2iP^3U?QyR.GU+6?yu9=V%91:Ac12 !wI4b8ir 3uvfW >#h{B/PzZӚi :u-^QRe?{PiGzH
-JzMRGuJc3[YmN)ҏ(pKi\ nDmıғgy:t,IpD#HeqQuw0r(|Wz)ԋp&|c{KL|+#9(|ڗ磻iCi7(զ]%&U)Ie`5|&3wSY[f.|fU<@61ی\Էf :yoGI]vs7~9:&D{:B1jVř^U芦ݞB]Ft^H<-YD֕V9IG;sab}鵬٫'5vx͚Ώ4omE%m ts]nLպ]tx8~NHQm6[Ӳ,Y(G \\זD<>Ko
-^:H{-ѺL%WhGZ9򜹆RsLٍM7Fm V(SY[neZ$|>'-Aa;pnkOlKuRҲ١( m杺۩uħ[4o_ D,.Qd.$ EVttz\sVG\Q6KeUy %=ZOr8rROZzUJS V;L6y˶JŤ3m1X|>"{)^p-7̆W0pgĔ5c"umO5iKPS}뼆Uz/d<i$+:]?!jm<6":F,;8>}[USUw!8wGh\y|2؟Q9|tM;=v>dZVk;UZ ®u 릣LXDe oɨ R#Z[=SEKUe'ZcDM|bTں#-QƷ&hUCIs[}Ã!}۴L*1הy;~+a) M/.#xTgބoZ
-f$T(}8:n'?x1O|p~{wjي7=4)˸ȍ;$FV~):́8Djﵠ@a+6 T)1\`9CeAZ$а^>8]L#W"B< Jܟ>J2.0%vJdѼ5H=~e100
-bڝ"+yfI(m,OkJ캵or GV MLT{f2[.h)vtQzqrM#Z7iKZVsǰ}RW"Hu nZh;#?*ۖTUcK\?(d7rxvawaԨ)v:n[[zIP'4̉T$21|pqV'=ĢkMhsj. URl&09 N}u46B
-yӚ -*8fލKmAj9P2gr~$E)]c~.]k}Sgx!w AgUUfJWO$۔u=(/ef+.1opBUC\Pʓ0*%^*Nh ŌyQr˸N}F ,A)-woƺ2Yd c:l,kH)]9vٌ1xXô4C!QaE=B/ܨhbäws;׻ WuMYL(ս:԰My橊R }/j 'x[UfUOQ~P˾6)mȶ7Ont\ۡM]#E3; IŔOmfةJCAAs]wB)ۭSy嶭[C>N6 $o7R3 :Q #n:vխRqsvY[ @T+誢.<ɟ|qc@Gs(:7n~Fi413m*  NJ2+ppҵUJשN,.%ެʝR]-թvPV{
-endstream
+504 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 385 0 R /F56 388 0 R /F58 390 0 R /F55 387 0 R /F19 383 0 R /F65 392 0 R /F64 391 0 R /F49 394 0 R /F48 395 0 R /F59 397 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-507 0 obj
-<< /Type /Page /Contents 508 0 R /Resources 506 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 480 0 R /Annots 510 0 R >>
+511 0 obj
+<< /Filter /FlateDecode /Length 3972 >>
+stream
+x\Ɏ$WQ>MFpXst-.}5+3Gˡ+3$ |ćO}ӠO8TZ\>~|{Xpv+};Rpnt9ǧ_*ə6p10cç'
+4)ȵk簔 _ pf%<?32RI7ܚ4,L
+AMR|{
+0qQ"}" mS4Ė*x-lQ8f4*prbkп-!2&TT$}
+5N$Q NJ<Yı'G$.50$(;H.{ sA)`,oc.( G.K@9d-2 
+kӸiՀ"4
+Z|"QQn4;uUV3ȗL) 񂘈}
+;` 텬`ahzjſr7.^B`[X!%EVQF iv
+6Ș+ĻcZm}Ц2emxYN.fI3 2gx1em.>6Y~xO
+s41jynĜs?>TV\l5gewg)(̻ȼoM6E
+{5jyZECd3U(k@OMURIǡ![,~Mub`Ķ+djtȡa0ʣ< *^&ƶZ "\,73„BzƎ塯NU( *)_uc Q7͜}p(ʗH ^)+"5-18qzsSIW,D|hN*(}.gD\)5TW֤/9-J])2%6*CȀ@Z~F8(|YwצC(5*]eXv%&νWw*i%N9R$$=3[Q&>iKcTfX6(S`UK5Ӷ/uM69Tԡ-˻+Z2)Ȭ7һ,,<Y0/*b3ihzaUyRv&NS A?R
+?JZ_*AMJ z<mv'<]y.=iR'nQhܑ$Ŵ4:ҟQvC۬3CM;I6mJnR:PzP/05@!|G%f4.0:E""Gu$(N l0' FP?-͒$l-l#-Z''Ar= u?Ih@% m 1zvr.q=, D
+k8舖ml*Z[DZZ2'>)SKm(VӔpm{·
+S(vz\y*/u/99 &id>dfn%z+B<H?7F[FmF8ڸikxrq%-+vu$QI~jSz.x>8b밗)sj]o11ˬ/:z]ҹ.9~4o+9PD8c5ZˤrTݯr6/RN ԋ!ͧ!8] VGZr)݂hf?iʐnPfBK4r) KEaF3ű8lU9X,{B_(R\Ur^F呞,E]cZ(h(T#Id,Vz@Yװһ,>4D;x
+)QҞi#g9g8,H12Y@eR[sz5Ǣvg93*h^\˿5Le: ᛀ&PY 6AΗvqMk+jM,Ā:pyrӋv#^djwh
+i꺼W ٚm]`ZpJ.k_}LlzDangUH^4oZ/
+wZĨ/w1JaHӨC*
+.H'c6Ș3y us! uHHG7:i4 3ɝJ'T7C#D]kHzz1ED:q9MJ0=f_
+m wW -"vvnzO';Nzi>vAޚywdj?}?;?xC}Hܰxs
+ǑVf~Y2~ = wd{lb|6ǭ *!rdaz6VotK`/ͺTJNc<*'
+endstream
endobj
510 0 obj
-[ 505 0 R ]
+<< /Type /Page /Contents 511 0 R /Resources 509 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 479 0 R >>
endobj
-505 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 300.561 155.143 312.516 167.098 ]/A << /S /GoTo /D (section.10) >> >>
+512 0 obj
+<< /D [ 510 0 R /XYZ 78.37 808.885 null ] >>
endobj
509 0 obj
-<< /D [ 507 0 R /XYZ 78.37 808.885 null ] >>
-endobj
-506 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 384 0 R /F15 381 0 R /F57 385 0 R /F65 387 0 R /F55 383 0 R /F58 386 0 R /F45 390 0 R /F40 391 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 385 0 R /F56 388 0 R /F55 387 0 R /F19 383 0 R /F58 390 0 R /F57 389 0 R /F65 392 0 R /F16 386 0 R /F49 394 0 R /F48 395 0 R /F59 397 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-513 0 obj
-<< /Filter /FlateDecode /Length 6710 >>
-stream
-x]ˎ%7rWr@aUj
-Ѿ^X%ل8;n7^ϑSw)g@SPA7kG8[jqq?'֜Y}&@GZ4i Gȶ r옶PI}#d?EW2@37Yzs{0|C.30gnm0\/30gnt1@Qtb )RpЮw/C1 -ͤ"5|r\:ցXEzxk{Z50f<,}.%مl'r[8nLGr?ClꃌgŶ{MG'zy sf{}5 ZwѶZ)vQtSnYQ/?KҲU3J
-DtCBevH C;' 9mH6  SD=x'JʒH 28E:i$(^
-WS9U[3 v+fm)(HHC4 R~1! 5RHg>HrqE7C
-/.+eڥ{sIxS<aV|- "a
-w:qgBb"Bز*F3,&ߛA3i2E,GB@$ X&++8bB|W2-'2^T%3M |3 i9H|,D@B@dmr7-MvNs8g\,Ɏq+0'2`Ȫz2
-N0+xWm)#RA3:iŁA[ҮXS)r
-4v̍8'Tr,ږ)nX*`ؚ@R'n;Qd bnVPB\:ȗ@:7 iۡ ^O-nD`CR57V,
-!A=t]2`{ gld2$=z"aF F1d)Us#މ"cs;2]d(bJ xI^8#Kͣ"/
-`˖DAZ )P9r1snEXZAJ6$R5+(v
-C
-5PS<JW)B⧳r!2Jh9^9zF_Ҟ>M7tͨ o7<+l,㞞+[Jz/h[}(>t'|Gv>A_v aсPa`Ut݄.:E/:)O-UW(k,gڐKIUKtn1Hrܾ/rS-|f-77Ƥq߃ϣ[5خK. {,σ[fӻ#nT;+Ox}îT\'ܓ w27Iܚܙ-{kk须anݝ4q TH{|'{zĵCܿ<Az' C w/O!|ۡދ ~g<xwP8^6k?ryMЕeq^RCy8'(7^ϑS{y9g@SpB7kG]p0~9޴\w &G({h&Ьڭ zteޚpR{k9ք & [.20gޚ8BFx/>׮mHW&Z(0{Z<&g<?|G1mSJ\ܟ|=SxxV]l,n:xdXK 'cMf)Lh ޕ&4ن$>&oVC=U#ax
-@8ܤ$iE%Iq^?{Ua3.Gİ!S"EN͙~r(*D31Z鎘C
-*6tE Tns$hW,I)xI
-R^I&FZ\tx˄Ue؈ 2I&6Dm
-@dbCPĂ^f«B.V7FML܌r=r{_vR V5)0UfE-J 5R'fZ53$ If^[ ҕ
-
-^2vf&ܥDwX4"X:R>x3bIv,yъ6rH
-^25ae35JP+J˞)S|AYuhMFLw<iJve]{XW^ B׭ >$g2$^b i%#GBĠo>of}^?j_"<rb[njQ_9;VSS\hO&wmq'B
-5>E}
-GiGbT"[Ef
-Ͼeңc"'}A\/hXN xRxj܆v,AÃ<&oMjstfm_%4ID]#:]x%4шU;۽,9Djwx۳ymoMD[,t%"n9LʎU}0 q<Ǫ܇
-[fӌt
-*u@; \1}4ZڷU]j_Uiuў|EѻO1,'GRf-T扢#ZC2TS 8~I41fyL.+=JfbȽR CՉRnI !Y$nr\=hX4nH,LuW$ݢߦ.3&Oo^R5px:b
-#BjP_NET ܐ%b0ϒQ1ãG =Dڴ%NKp;e,\<sVGC ֧&F F<pBt4"u@3}xtRB?-qmQx;<ޅV;vLO!-^XǼIneBOF̳_4}HvC‡w(]L:ҬeVGw2۴-r~Jih *b/3A$e
+516 0 obj
+<< /Filter /FlateDecode /Length 3639 >>
+stream
+x\K7ϯ?ЊD@1-)a d/U5Uqӭ(IQ"ƷOO<yE3oOMl+nƍؾ|~yǹq|[ypn_<YT<!
+qw뎤zj—$q6~ ƿC<G
+O2jmIg J&AXZFRfq6ݬ\ V
+/J?؞~ʚ1D#4s`{znӍIYZh_>ϪQ=œr88qfL=}{;e^LwU1,9E&O`221)0=b"p%g%O.(v&*7]QUni4䳶ǝ@:f/heC}B-2!Zh$}|J=$JXd5V#Qh}`M.yGe4|XVwh&plU:e{a?w Q'WB6
+#עV{jxnL<VAFi
+Ssm<&Y -nOR.{_e_Q!=ZYԮt"IP$\bU>y@:r|iޡs8N w*`qF]ƞGt%y4"k0Lr@)@3ȡǒ1K.W~*Jjhc(i]W\pŒҗ._^^i6'NC5X\7[+=sœRH x@ק[\=vGæD:)gF{ePNZW
+ŪYBݓCo;L#Reԙ7*
+~d
+~c3廚 mea}OL[k߼y-T
endstream
endobj
-512 0 obj
-<< /Type /Page /Contents 513 0 R /Resources 511 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 480 0 R >>
+515 0 obj
+<< /Type /Page /Contents 516 0 R /Resources 514 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 479 0 R /Annots 518 0 R >>
endobj
-514 0 obj
-<< /D [ 512 0 R /XYZ 78.37 808.885 null ] >>
+518 0 obj
+[ 513 0 R ]
endobj
-89 0 obj
-<< /D [ 512 0 R /XYZ 79.37 382.758 null ] >>
+513 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 300.561 104.314 312.516 116.269 ]/A << /S /GoTo /D (section.10) >> >>
endobj
-93 0 obj
-<< /D [ 512 0 R /XYZ 79.37 345.365 null ] >>
+517 0 obj
+<< /D [ 515 0 R /XYZ 78.37 808.885 null ] >>
endobj
-511 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 384 0 R /F78 469 0 R /F15 381 0 R /F29 375 0 R /F20 382 0 R /F69 402 0 R /F55 383 0 R /F67 389 0 R /F66 388 0 R >> /ProcSet [ /PDF /Text ] >>
+514 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 385 0 R /F56 388 0 R /F57 389 0 R /F64 391 0 R /F55 387 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
521 0 obj
-<< /Filter /FlateDecode /Length 4700 >>
-stream
-xڵ<ɮ$q9ڀB~ z\7'm̌@RʇDDI%mOo|{w7!ZۯoMl3e7kFl߾oĹќk'1- {wojz'hLoOɹҚZ<ځ%ϗfxJ* ؍ݻЛgH gZ""YZBguoF2cdIfA Wmd
-UF ۙMy*H >4~O8=mFSLIJEdM2 k$L@+mX;1&}$Bd"DTbOlqK__T-eꔹ4e e˱R*ST,3w{F$f49gNhMnUpąlbz=?jFaWpoԮ`5+{{RUD.L &_SؕvI-f$`ZnJcYzh +W"/m+ZPt/(2'J)GKSLi
-Q޿/٤W~%A\򢗬7uP*sw5^+[G@Y AVKmyă[&<Ή4u7xy7`+ΌPWxq{f!YU\`ZMǬeɳZuRB39@o52b<'"9!pdr~ke Te@9#-A6h8=1QOLm bPŝV"TdC^kB)SL=Jg*AX}
-tY/#8J7;>BlB\d\1cFYi XT+SI)^bxiXAF1`D0]5Jp,
-If8ge$i-<.$@"Nz+I)Wx wb
-z`H/SgrWC/ʺvAO^0EL Ezz-ze:'K
-:zy&E3+
-W8[ vKVتsÚ:9kCf0G16au,3( %Xq΍PJ@t|!3>r8UKL&eVv_vԀc'[_vF
-{io(lƾa|a
-O6 SjbQdsgo]JCl+jAnNEj,3
-FxDUN%&r#\˯e 㜂4%K8tIw"@6V|vSg6{|m^jNp͋n>k w~zN#6.}ظt~k698i?1N+u^{a'T ȁ Հ+e`bZdw4OeSJi:
-EgN/pa] HaA}??g ǥtdx#が×z(Qa[rg`oC
-%2Z5QXJ I4m簤Mi 0KP]hr2kQpWXBq]krOChrYd=sWU&;9 R+ԋͮ~fp#{S@&RTLD)
-V5<_kFseg+? 4GHZ0
->n:l?vo[ߔj9g<ƤhuoB2Mx+ `AjhG^!zd%
-gBi)tۯ[B]ĨoORƞ$xPV6QE$eSqSԸfQwUkEfA8=s=R?HȧʹKR>h޶)/N O!6{A˼Z&GeyO 愚Qܺ,Gzv- ~U 4rv_=?m_W6)i# U03Jg.(1AfjI%x R<r<.~ʵkG{c/k N) @i\aԸG5^U9dy<};V~Ρ7L9>e:}Юה!iĞu
-HQNÕ`(dAu@skEЩkYf~"97[߷? 5dC,xAEŇ\]
-(Fۏ ^~x'V|ζF} {؍AP? ?~ 85Z6KkF}
- 
-vݑk|;o[5µl{&˂xξ?ۺhϘ*\JmxTr:KFQSȷ=5 QV*gkÖMY(Ju{M>Wjy7w֏o7twEu<t vc}{ɼ X
-3/hPRD<\AuQK1[ 'lq8z
- ;l/̺COuҞ(EeR[ժgNB[0we<35`h5BWְ5۞\Oqu`~ѥp2gteRs p1ZdaQ81:[ ۩_5A*Q/5U?-h7cef`S^
-
+<< /Filter /FlateDecode /Length 6720 >>
+stream
+x]ˎ9r+rfQi@AJj 0^5ܻ@{3 3޼BUQ8d0ɇΌ>x[M./{gfoք|n&/jL 11͘T?xl3渳 n[aX>͘Zv?'G;eN,+s=A}M$ukB[Pzm4/~g-W '-wX2To~ 꺌+;D׵GF;k{гnZps`V Bkۜwx-Q3,c+CݬI܃hd~+YbM~\g0l=G^0&us釽v!D営}7f, nˎYN>:b^kQ+3/|DG cr8cHyx_Do)՗?}aP듡{JѦ,m|)>c dԧyK=ͥjSoՐ?ڇ6oY)|L}Lǽ%}t\b6[0jw.Uwl!g}ÐP/D`׺I[;IF!:A\{@`b#&n%z-{Ff޽vFդƊ
+ljJʚBRvtZ
+ ir ЅKrt̥%{2q9MR !HL̵`Gd?$ky
+ |]4}R˃>89xfoƉK?o›K}:ɟ(GDcmYe`,0<Ἁ_bU\?Ϳ#Y~-`7_
+Z땁)V{dX_uկ~;}֦d'-0U-[ wrJIs7;0Vzn*0 db67\I7(O+~{?w?n/&r0F꿋(Ì?ۭ\#K`cʍ&G] ]2X>͇S헁)53>~.o5\z)YB!o%_ޕ5p
+}=n"Sj)uKPYA~6-@a+9uh7*z ?K??z
+0~2^?¦F_oV ٽ^C}oygm3Ѥ}6!~iWva>? ];wY}O773 \vVܞ 6_an! ;d> 
+^f` Ikgpн
+m& nnPfAk.V>.
+DtCBevH C;' 9uD6 fM z,Nj1%,$d!Rqudc5HP+Pr&$ ~|vL
+8r)1eJ$28M9beGL@Mҙp\\Q'"@SnJE,D`#x`X&#+xCM$NЕTIbm\J FĔH$$d1RqrJ)u tg>HMAK.5Ť z-Oj %$
+! +deE6hP+~3ЇܙS-$ 2cI-@Z" 1H*N3AN)X⻀N p
+Ki&
+ZJ5i;"X8gCS$tXc8LLr[a*3!y0deAb {#$ْ2JH !A C $SJ-VfpĄ.#C*Y}5S[aRV6ީ $2Givtadx`3΄DC I:
+4ԅ ޞ }K/2<aI-CWFI$$ dARq ro#&wo/2p!e?2`B6 {[$lUQ
+\*( 1D*N@NMVVpĄ.lL8I4֨;V4œ10LVㅒ,! >`AVx]]JH [:753,&pNj('+ ,GDN b[aV?+
+1 &=0.ypoɘޝ("HH(rJ)u
+^D
+t_Ɲ a˪,%>d(7EQgd$ bTfb%򛬬 ]"24@7i9H|,D@B@(nz5}R:i~9גz"
+5νnմ ZG^Z$̈5,jn;Qd bnV EΥo!դF/% qZF?$[JaakKa v`EXeg" -fgy9]ՊIF,-R K%dk rN;
+!4w2s%OZgS,sYSQ & p)M!qT8D z:W<^c$9^L=;vDa!C`K tWJmxΦv
+ŅQi|hu(qT+-xwE_#E]Lű_ݢRL'}En-wqww+EU\hLW6鲇ǝ
+ >]) <_)r`exLeH_\KEq1([ c٨ж, +o+{PVOgc u!*-5En>2vKkKJ\k-˚G
+&{WGS+K{Λ5kxHHUk&/쒕+^vGLi=8Y߿vj2\ȫ%$0,%?j]qKV^vRv-gy3
+?ނ_Z=7;ix'Hrv%zr=Rz{KBz}< x7^@1Dj)dj_C8$_26Pgg_:*37{O۰ʎ
+Yg6&/͸m!mЃ;@rrZѭ%5uƕt8:ۧ9ayӭc gSMmv=n)ݝ& XQ\ MKi{>W^hOIl5K+:wX^>@fURĨU/_|MBz5^%wwy]zYGC gotjE|VI4nw@~ϲl8܄cY9oX n}/љ-:Q+q$U2G\q [xKcX<f}XTY3Yhm-*DjӍټ&Y"= _>OƜe2M1;7uY}6~պUǻ57HpoR
+| q¯}"?xbڏUu
+g}0Og8Jux6aEBb 6n77OeNjlSMZ&
endstream
endobj
520 0 obj
-<< /Type /Page /Contents 521 0 R /Resources 519 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 480 0 R /Annots 523 0 R >>
-endobj
-523 0 obj
-[ 516 0 R 517 0 R 518 0 R 515 0 R ]
-endobj
-516 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 193.353 470.815 205.308 481.764 ]/A << /S /GoTo /D (subsubsection.5.3.3) >> >>
-endobj
-517 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 497.196 452.486 516.902 464.441 ]/A << /S /GoTo /D (subsection.14.1) >> >>
-endobj
-518 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 130.947 440.531 142.902 452.486 ]/A << /S /GoTo /D (subsection.14.1) >> >>
-endobj
-515 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 184.002 76.658 194.459 88.115 ]/A << /S /GoTo /D (subsection.15.3) >> >>
+<< /Type /Page /Contents 521 0 R /Resources 519 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 479 0 R >>
endobj
522 0 obj
<< /D [ 520 0 R /XYZ 78.37 808.885 null ] >>
endobj
+93 0 obj
+<< /D [ 520 0 R /XYZ 79.37 347.258 null ] >>
+endobj
97 0 obj
-<< /D [ 520 0 R /XYZ 79.37 771.024 null ] >>
+<< /D [ 520 0 R /XYZ 79.37 309.865 null ] >>
endobj
519 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F69 402 0 R /F15 381 0 R /F55 383 0 R /F67 389 0 R /F58 386 0 R /F56 384 0 R /F78 469 0 R /F65 387 0 R /F23 379 0 R /F45 390 0 R /F40 391 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 385 0 R /F55 387 0 R /F56 388 0 R /F58 390 0 R /F78 478 0 R /F25 379 0 R /F16 386 0 R /F68 406 0 R /F66 393 0 R /F65 392 0 R /F49 394 0 R /F48 395 0 R /F59 397 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-528 0 obj
-<< /Filter /FlateDecode /Length 4671 >>
-stream
-x]I%7rׯch hJ%`|Ll<H[F}Gp's#_V o}%%H&]~] ޿S#Ns-/0xA8FTьP͖/-̟ͧSkKxƍ~T1J=+ġdc_^^iJb!Ɗ^DJ0F[~yXZB3CA\BY(#@s%/ 5]*fbv8tQcЦ3qNyx[8!w(ʣ_'ʒ:4<+&k0AiµF-iѭr#j"-Э>'![#idabጉ0YIP0ۊ<)V/-Ș۱#g<4)?/އXv_p7 fdSCHۘ,GP/)0H-MAiY2`m7W&Β95~ʉ2cÌ<[1vbwv)tDC(xmAScWicgL[_vѬE$m!%:{ _ɠmZCs6|W$*Օd@sdKf
-:/@⩡:j 9ɺ _ւ(fPH~ͳT9OtoMs/_)B]1]
-<ݸ9!͍3>4 : ':GV3cn7 a yٷŠuq{ C{mfX{3F'7{Gi&:RLfqs'3LB;$?+59I5Dor-9a0=zP n)[a]ffD,p2k'0Q8 DQ̸Ț9΍)1
-_iy xä(B.R?_!If|$1s>5HqFf9-mQVxN&<4HiZ9Yv@a4NGS1#L}::2 ~*}\@dVƥ?.]! (EsV Dz*HOZO+%
-Co'ĀqSr݀NHS)zfJK 9ށIUaZaT\XŃw3>91f)_ѓ&u'j6EL'-U=H cpsi=GQ>{Cx--.,w;&w@K'w9ɹbL9y8q4- 4&딪uZz>JaD^9H$i1'"ѳ ʣqb4̦t^ƝY s"` @qfRBtB~䮘{Ith3]1O<U!]?`Č/m]8hwQpa
-J[y, 9$; ]_2V|WOR;RwX/ۂl+B
-@L
-zXf0bZmWUDyg(5(jP+ &yodD: C6J{]oC0eb0ltAXe146qH{RnVy>
-2w1={
-Ƈ R8
-e/z1̢֐ zAZ=rz1!Ȳ֘ 1z +RI7%~Yۓ-ֵi&.[(
-$O>mnPE-ٝőVxp;z+l ғ[)篂г2Jdv'v-N+\++ͬµP6+pjUi ok6doid̔KR%ݥ/KR ɖxIfŚ-TOVK$$\lOe J5rs5Yn^%\ox%o5F֖oKrkp(zMx)SkKu ƺ>o0p?Ԏ^AQ7wp^whGf`l?.kLK{;=z{7pH֍4>uue_02R378!w@lȼ0r?ڼxAQ˞fj6RirkSUY^*i" Ql>hqq5\1ĩ4"πuRw.ƒ|37
+529 0 obj
+<< /Filter /FlateDecode /Length 4319 >>
+stream
+xڵnx ܒ
+Wa[󏭰on6lJoi\/Όkߖo칍s<Oqkg[:|t`[<WB0[!m9J),B; O+üt#tn@WA!tscy,a{BOwcWLd^hʕ2yXh`fʨ$
+3 u/P}%M]0!s$w
+RxEu~[{H})<>;\@8ZZȘ>
+{=4Y7xI2tI=kDEQU(U경BPof]mZU;ֹ745
+wg-L:wA0H[H5U 􌰒)="$R56c9tXTͰZ=n7.˽Uc@ٓ(+цtYփ̂1Q]
+V`vr{
+F] k#t4?Z54'RQ#ȴ4@jw)ךgcZhg'*sH|B+u0QWz0z+rgMlF{% ֤ XMtٵGhHŵ.!tI&sDSKjZQK]Gj.!rD@'dUt
+*HrBWQq~|SfX"e0*GlyΣ
+a|5L5I!Y;NJfWnA߇=JGO`ONΎ^lU(ɔX9j-ٚ@3ƠIF\-L?풪pWBuR377x`D./v~/-;EYDM,ZW8 i?oݟ " L #q혲f%[Vױ h9LL0-arnprŰ2!חMI0R=>cA3x Id<DvmF2 N\Aq&TG.zL \*}.4AwJm2zky%AWDɣcTTU@aWB%|t+g]cy1qJ'X=Cx3M`Q?G.`}yψP_`% [/"JN,JE̺ IUh}V+` e@.j-5Ӽ~5
+c
+Gq
+>#۳L[sσV\`RxU}IfɥyV6YyQ
+a܉q#9β#c#co66B~fO\3byl?c勗eP rޏ.X39] Q^xSNËJh~&;ԡ)U%aeTR0Mu%u38U'MU7al'N|A l }R`Ns%a/Z/4IJݵ"f/{ld
+xY:}(tKh#Cn)v׾]`qewC@<P;W5Ev|kVT$͊)DܛeVvk}kgbEm]7"p|Y
+[ _6ߊ 6g/|ã)w
+C~wZ%"ϯܖ[**F ɂgj</8/=4FʡvtǘEY#2V%ޒi\Nvw)l mn2kinK3wChB
+LKZ~?zγS!3CKӿIe>
+??4iw8ͬu8(@(b'&gB7cxj&xY*Ii#|bxns
+BRAߛ9#~J&Jz18GTDY1*Wւat&w|I:IMw'܈:>v֨έczy'![I V!mG*%
++b۶5zMn}vEپi>@B$&z_X1X(цZC3`͸rT3z#'(D%KL7HD;{I'7J7Ek
+ؐ'.(ػ&&cytKX{<Yq7&_({ A[w[潛V0~|%-'CK9k<z͐{F˓juz*^j~ 2W>ˮXE=R8Hp7_pO%]LEδb6~75wՠ1P~(XkW!>VUG8^KzF\O7^LXVh{ C9[5B(1t=8|)I{zS]s`rW?|ghZc[} [+K9.דr#z1i0c!<5<'EȬڿ\HzV䭤UtN&Ado [Hh(Դ$
endstream
endobj
-527 0 obj
-<< /Type /Page /Contents 528 0 R /Resources 526 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 480 0 R /Annots 530 0 R >>
+528 0 obj
+<< /Type /Page /Contents 529 0 R /Resources 527 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 479 0 R /Annots 531 0 R >>
endobj
-530 0 obj
-[ 524 0 R 525 0 R ]
+531 0 obj
+[ 524 0 R 525 0 R 526 0 R 523 0 R ]
endobj
524 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 449.232 593.689 461.187 605.644 ]/A << /S /GoTo /D (section.9) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 193.353 367.571 205.308 378.52 ]/A << /S /GoTo /D (subsubsection.5.3.3) >> >>
endobj
525 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 415.669 408.443 427.624 420.398 ]/A << /S /GoTo /D (subsection.14.4) >> >>
-endobj
-529 0 obj
-<< /D [ 527 0 R /XYZ 78.37 808.885 null ] >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 497.196 349.19 516.902 361.146 ]/A << /S /GoTo /D (subsection.14.1) >> >>
endobj
526 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F56 384 0 R /F29 375 0 R /F20 382 0 R /F26 404 0 R /F55 383 0 R /F23 379 0 R /F51 380 0 R >> /ProcSet [ /PDF /Text ] >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 130.947 337.235 142.902 349.19 ]/A << /S /GoTo /D (subsection.14.1) >> >>
endobj
-534 0 obj
-<< /Filter /FlateDecode /Length 5051 >>
-stream
-x=n%qw~;ڇ}
-f5x6/<#3=kZeu5Ie
- K5I# (0#0iMːf _}
-%IK)' P(/I%Q"OBN"Qr]ylUX$ֿ?Ɓ a.jS%.uuWW<z[,_x)43]ߍi o1aSf܁ + 5¯[Ŕ
- 8JvaN%\xU9y=KeA;KKkXB*anAm
-X $5 f
-P[E*"\.&Gu?pbF0LL6rxb1 E1xf4^#z胒Iu^^g@<pI w^yE0`%Z6"z2(qB5.LB+}…ju+ͫT@p(^)H˧k +
->tN%bGF&.3P:/J2 B?0yƷU7<IǫzϻE)nuݜ8j%
-R$qeOD+C"TRm/|pץ/K9MqLb^^'jU7:uX,Ux>n[?`1]kS)sR8,~ Bz#ڱd03WDM5ˍV3Z2@r:n%SXa9]ԑU/Pq&bXSȗ`]J~㊶ph׺ƢHzD؀Gv{ ݡVr R` vbYE!css22c N͉yrLYKaC,d;; 2O
-vmm*_aL`Be|;3!@/}a*80hjX!Chv8S4DFُ
-K4UNuY+2mD).OnrXB| _kyQMV Տ<S\M#Z;jmբG+='_g 8HU#
-k SNX42;+ɐn+G&ӧBeCA+a)XіJ8x0E:uKO2́!rr*h 罀o',
-BR)LCR7ڸ(D+ϊƒxSD&6vS*"Eٳk`mu-&*V.ꤱ׬koBQ+ R*6A$K]# ^
-`a@/DvƟXQ3Ұ-b,d+4[Ss-)hrhr. mm{Q<J^T'
-ga ˳+`2Y8;A'ѬXԥxyJ.lNs [y%[*Bl
-"ɽj?W;#V a_My+eT/$ %3O{ƒ5DVlBBVAU`/7?K8y۸p݁T;%r A3ç=Z-n1X@ g ]9@~02G
-p"<nct_ O_WkE'U&'`n=#^&{ :1?,1Xr-nwƉPrOʸ;$a]rv˚=D5z|CfadY{ѲfLI8sne7R,O/2mtRr2(
-5Qixj8lVi6Ie'5#«U:t@-t[J$G5!IBC,` 3RGYVh`pyeΊ$XoHwb@Kj nhhΣd41@F#*jU8z5U2]NF;9$%vz?iQD;uQV qfR'eš^V b졲8G8J(CI"~A䎈 W 0xg0^-`Uh)qa$I<$ U]!\$ô6<љ O_D BC3GVvL[h19G$\-mJD."'7o})fޝɀ
-ͪlM*!nUϩݪ3GìZ"<AWkYDD_`W3o>8
-x;׾Հ<,\bRqjP9K,;-̏iiKvWg1dsbF~!HdA3s:nfP6Ga5|0ÉzqpExA2<nC\Dž3 ;+vY.vji-NAfK|LhʅC?qtȗ;W|eBRVo`q#VS͐[=?{0?R!g&;nLۼ}\od" z/C RL2G+y FWӏ(ۜ`te ^Zsֹ.rC!V'z!(}skO;C 0g#,`=Bȅ<o~/`
-tG[l?aRicMnxlz>C LsjlɍG3ûჂ6mn]oUv1CF%AD@~ATn/aE:5}tװzÂ4.\뵐Ҹ/\lTa]3߯6`sm%.v B+˲I^HV@oe eO_-C#OO-8|<Pw- 8chq Q|DzA dN[ROǗ<G"wr(y 3Ջi]bZU?ߥE+P5gj&-kZַQ$< :.A%۩Ҟ6-y*
-endstream
+523 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 184.002 87.621 194.459 99.078 ]/A << /S /GoTo /D (subsection.15.3) >> >>
endobj
-533 0 obj
-<< /Type /Page /Contents 534 0 R /Resources 532 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 480 0 R /Annots 536 0 R >>
+530 0 obj
+<< /D [ 528 0 R /XYZ 78.37 808.885 null ] >>
endobj
-536 0 obj
-[ 531 0 R ]
+101 0 obj
+<< /D [ 528 0 R /XYZ 79.37 669.948 null ] >>
endobj
-531 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 485.826 516.478 492.8 528.433 ]/A << /S /GoTo /D (section.4) >> >>
+527 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F65 392 0 R /F15 385 0 R /F56 388 0 R /F55 387 0 R /F68 406 0 R /F66 393 0 R /F58 390 0 R /F78 478 0 R /F64 391 0 R /F19 383 0 R /F49 394 0 R /F48 395 0 R /F59 397 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-535 0 obj
-<< /D [ 533 0 R /XYZ 78.37 808.885 null ] >>
+536 0 obj
+<< /Filter /FlateDecode /Length 4860 >>
+stream
+x]I9rWQ}(<Vk`|n{ \-BVV5'*3#䗌,J/
+7[ܻ}oJ_qkyB.J͈d.B)
+Wsm)e?y 22^(&l=oW/{{h}3)JVLb-hssm}̅ք!ҹdMxIJWKuO&sesS<_~J!GOS<PXbM5k3,uC+d)_05z;&}CkBy}Ѻ\H"ׄ‚0Em&[iA6)Hylb(3v~ ^˯>?]4Pᬺevu/W,R1!|~?_xBƺUjHNYFm.Sbz._7}Й/ rN\%1WƉP,`b`0+qF+*Bq^KFt w*Q-VrּZC55B}R|a8_*߼1ּ%(նUʬ9
+e~9WlTၛx΍
+=1ƈ^ODa xZƠyo~g C[v]Tә F;]
+{k`GC5Pŀˡxν=+fb { v H y\z\YC> m#sBx
+)@'zB>p_Љ^765f E t`3!yͪeDaDm'LjQ5k_Scˇ7pa.n2lƫS<3_
+~d6o[=CuԬ63*4|Z܇vЛ)XfU-D+įܸb*>8&TSO!/ߡ뒘vjir XI{a ?-ۇk1{
+wqGw44=*#e-.P~ `,@zn:Ŝ[oC
+ 'M'-%.%H$Ý$1- J䧫.S>t7Iw+$SJdL9E,Q#oDf˃fQ%d#ļԙ vLA|}+F NKU2pK/p~^I9-r7^ SĪgi9 rWe&":TX'Lm!UCEIw5$e@T0"]DFB>.b=xʼn5&E]ԝ8ʑ1-"&o4XKb nDn*El z;Jc
+0Q PcRW\E|
+UXn3I5IF(k~/wX"J
+5mt4e1К44;
+Qf5usA@<4'z0f
+[%wd~MAOJL$yB{6y ]}&RAj-^kxQfrIJ`&Xp
+endstream
endobj
-532 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F56 384 0 R /F57 385 0 R /F55 383 0 R /F23 379 0 R /F65 387 0 R /F66 388 0 R /F58 386 0 R /F45 390 0 R /F40 391 0 R >> /ProcSet [ /PDF /Text ] >>
+535 0 obj
+<< /Type /Page /Contents 536 0 R /Resources 534 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 479 0 R /Annots 538 0 R >>
endobj
-541 0 obj
-<< /Filter /FlateDecode /Length 5113 >>
-stream
-x]O中(_ Low{J9L}h*˖\5"*HJHJOo<2Wo__~r=y0j O3d goӟ>?/Dgń5q,'^/BOm_|;~Ÿxp՛0ojRPxKRK1sͪ$y &%k%h*\$M\cIfi\l P/w---Q̣NORI)S$:9 `5M3ϿN|Y ,[K!nXmJVvV
-/aV׋⢰$N޲sOQ;R?boYygس,:Ֆ(U˯ݶMn$jQבbQgO$id"~mǶ ﱖyFd>O'+ȩމ_jiչ.M4߁™,n@Z5/ pE`LqauOoIײ ,7mcLzP)iC֞OZGF)l=E,uw۪+<~j:0cuݙr`XL@ha!2;);QgJ:(~UR+YBb"j%r8FS֋P{2Hsh.m¶H'a2| Sa?h !.'+&!%!9lJs0I}k/i 0diu?YWJW97xƶk@ZoҡDiGh24ocg\Zd][S혲.t
-66IS)Rʡ@TL-+'O6w G%fuo%/-KhυG*Az(M{,ntEӞn/[ B<8ƁD Ei3d}(e<"0)3G1jF N)PaKmc̜.ztpW~e*j /tFOsSܔ/l3sSR˳Mڰٝfn7 LÀ+Ϝ_\
-v;a.Z-XjIG4(w-_ŽSpZy$-U2匷cEe*C ^\C0!$˝PfPcXn.CwI~`![a-z109yDD 2h N[逋
-0Ť[%K3OaDGKfݔV̺)=¹)ƌ.ȓq[n33dXjʙ˝[7T2a;dy\l:n/jjj&=vуi "]`wLee@sk6l7L@ \v
-]0gcw\炁C3I?Á ؁{
-b|F<-]0Ety! A(,3C:&ǝD(B;*2ȣ薂 Fc'`#BÖ,Gm9 ̍9 A(<%G ?&À-9!;̹~lJ0O0(ȁQ"'e<+i{c|BۭD^@71a@c:8{fR/U+5í
-o?
-7N>yMܩb跂>DxDn$Jҷ7=ctauy#
-_Ly _0X[~;wpӇHpGq
-0F"'abxg"}*Z;p0`s9c8E%cuW Omq}* VAs>T[À ~*d'pYvx]1<hkܮOEfP1<O6.ʰY {_Tg!ḿSRqiOyT x:UUP1<>y' >̠u-T O|T@tT3>P,6ᩃo
-(U~X3<uRK{fxjS; BͿϧ?%m1ǟ>pVAT3?}: *6(qv
-:
-i< fP1<xܧZk;؝TL=waZ+[xzxx|=`E;;ȇf귇ǘܧb{cC:uȻLjoCg3+H?X`14(Cz)eVJ[)e<E\K mf5f%r^2k%0&hx!JO J g}⾎f>țYo1AN*&G&d+ |5byzI!E3UbyO/</=Ѿً}$<ؘfyhdvwhf)< ƒiLGwUG*]qNҬ/wBO)_^t)>ѵÔNt[Y{]oeEw uc3ozS2|c0J/ʇ2̓3Y>KK0AwEk+'1;jfV53&| F9i#ͫrf*?wR6PL$,2RJJ7DE$QLk:WQ/c^J/Hjwɫ^Uj`[u+])dGUشe*-2@ZJ[JYm@?RO8p"h[+OxV_^.Fo >n7!CZ6T:9YV&EA!)-[M-UkubV{GMs3"WRbcR4jq[Ҷm$$Y C@2a0#䉊lz'ԪHVPf5JQ?B6K2} 9yT-Rc2c\-cMYoIK)Zưb߿#)$5^ٲ[nzuݣ2N+^?;qͤ>͌!
-endstream
+538 0 obj
+[ 532 0 R 533 0 R ]
endobj
-540 0 obj
-<< /Type /Page /Contents 541 0 R /Resources 539 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 480 0 R /Annots 543 0 R >>
+532 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 449.232 490.841 461.187 502.796 ]/A << /S /GoTo /D (section.9) >> >>
endobj
-543 0 obj
-[ 537 0 R ]
+533 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 415.669 316.919 427.624 328.874 ]/A << /S /GoTo /D (subsection.14.4) >> >>
endobj
537 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 166.619 67.03 177.076 78.488 ]/A << /S /GoTo /D (subsection.14.7) >> >>
+<< /D [ 535 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+534 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 388 0 R /F15 385 0 R /F25 379 0 R /F16 386 0 R /F22 408 0 R /F55 387 0 R /F19 383 0 R /F17 384 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
542 0 obj
-<< /D [ 540 0 R /XYZ 78.37 808.885 null ] >>
+<< /Filter /FlateDecode /Length 5218 >>
+stream
+x=Ɏw};Cw@ uu5sX7'`Ɩſdn̪><^>F=0iƍx|G X;6s$¹/#~K<aۇd3jˬ?@?C&{}#l7ڦ}jV{2iuN[i~A=c>HTk
+xE| dUiiM*AŤL(
+ۢҚ -6m&咛D! HoԋkIIO|3g#
+)M2LZIU)3!t%P.h<R1a_ͷaƞ|-2z =KӼnĪݪ&
+P͓͐&ݚ(LCd2U6QMO+5E O&L.u$ '~Rcץ!=L}0q)0yRR_[K ZwuR*asqɢ" 5ݳZH&r=nr<T=I/)%$0P2S&ZU$9Ct3>_ՀXQb>Ⱥ*4@K\hZ@Ózw`r5w"Y35ݚ%%¦595ܷd=D.#oS^["m"YX8'$遗+eNHXRjxЏ 2Fp2V" 
+WdplmekTDp*h tM1um]n#Y O~)xȤOKL%nca&C}9dj~
++=+$^\p3rjٖw,K}a(Lɲ
+hɇHNNi45q}xkz'ςf]ȯ*] S ~UIpX*VRv[6crec7A.+\=rIFV]>PHGIF㷜
+ʂJhBTo+$ z_V4$oHn,Q !Vj}v:Hh%thى`Q0/YFT;oˎ0[nٷ0j _+$xTm0HԎ0W/N`UG=e,K$ZQ)Z ~b;J  ĸ
+Jq#Fݒc<v.g\O$gq%bG͌?_JpunT:I H60S$
+$y_n2s8* E:fŬ: y&|3: 18TE綛(Wm}:?B=e0ɴ3LZCss)y}KV>)ø ?EV[<z5#px##y r(Ɍgbމ0T"3HzkPOf :<F wJ%pBRޖBZчDi[5;ZB*
+f4q8C%
+b}X;:mKfGKè+sӦ)yI*@")4oCEfރ
++3$q3t(]fEI Mizg 0;izz~vx
+
+;`l6'S~ Nƻ#F~'L8M??j<{yaZ Ĵ){aZ ԒYt#x$[LJ$.w>>*R8dO8+( ;̄|$V½FӅ=QЍe=$\_ k4jJrVfWEFtl%U[-ܝx[뉞@/phVm:o؀=鞿Vd{k~t^kS=~0updH2 3M~'ؖ6=
+t2ݥNvTU9ex/0<`@UßM3 /=Ex ?p+&v ؍SWMR1j/AWw!%$JF1l,x%R7$W㒴!q$+C(ゞ\v PX{ܦ3MaWZQϝS:c'sq~ϵ0ˣS::5H!'ߥ7ߗ
+sO[>"x
++>ܘx9>wI<z3܎zƼޣlًRYQ0K<|N_
+V&T:mb
+2snbBi4 q|#HҔ+{;~;
+ך+.̐`>~ 5LrF '0ۑf%6)ѠѯkxV pLT*.}ʼnt2ilD)S4
+X!UO/-/c᡿XBԞfpZ62 {죂tډnҳ]_o)|$&-Qd@~Qti//oa%㦐5ԏk/BpoBn
+endstream
+endobj
+541 0 obj
+<< /Type /Page /Contents 542 0 R /Resources 540 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 479 0 R /Annots 544 0 R >>
+endobj
+544 0 obj
+[ 539 0 R ]
endobj
539 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F55 383 0 R /F56 384 0 R /F58 386 0 R /F57 385 0 R /F45 390 0 R /F40 391 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 485.826 484.38 492.8 496.336 ]/A << /S /GoTo /D (section.4) >> >>
endobj
-546 0 obj
-<< /Filter /FlateDecode /Length 5970 >>
-stream
-x]˒+j9($Pjzz"t+ [o&ŬZh+
-}W
-ӮPȱM 4ОMPB$ nx
-gl c'NcՍyqş:R-Rz8S2+ʗ8W-Oӥuzr!m8OPۡ^ $d[A+IUmS
-PN,qƄI2:17ALtR~BE&zm-b0˕
-r%mtA 1Dkطpa69Tq;'XD]l1mL5y .t%`5SFAvITˀ/jH:PGE|w#m7Ji1o) 鷵)uj_֡J\enP-h?w$J2I0SY\@΁Fn:}iWJ%^,Fre-ZJV&}IZ9b ܒ!BRXǜ^:BRJ-E(j>TLec ou)bꔓh[TSYB.:Ky׺F!/b}
-5ϷffH]EA,p)V0za.uBjhxCʀkS^~Y&L}:y %e]Ff`nP \黱G1"Q6Q
-u\~[ukB%sַsd=/1Ǥ{?n 8#18w˗w]PKƴ\ζh+Wb7_j/_Kڍ>n^qA50IIQc!bN\+u~nGǒsոޝѾ 'FyOPr5v<B4U?i?i7]!|2u ˿~i?Vr5B ZZǝnD]\-/KŖx,GrUU3 j!5|$W. TWp5fHvJi{r$XR$r X;s (` Bz)h^ PoR+~Z4wѫA);-@ }9O
-rmX Jp5uوXVqcM/YIc
-(KŸ yLųtYoEk7 c Nc `P8Z9 $sۄ`PXB@Ȥ-@ <Y-F(M0 q<A0l0* o;1A1p
-Ϙ5 u$>0k@)igWak敮u
-WoA3p\#+oexPx[W"sENNĜcq枈sq0s9&!H
-O c0(u0==.FN$}zAgQĴۄyM[I|
-3 .JuNv3C҇9gϔr
-Op `"nBL9wD`Px;AΣ=۷GμST:S?Y OgQDѣmr?I!ƨg\Nz&&T0d: oV
-x1~3Wt 2[=f998L ^}x W(N׫#*!k>hLo\}z+e~9[I|gcE'L;/,zr!ruE;avV2CRePh^y!0%^@[N4G;pB˼r\hUOF^Zi[A2,nJkCo^gKS{Ʊ)PD/s)})iԍa9ӭwٰqQILW+;!$_I@0aWPJw 8Oa#4
-
-15Dn)a=RZU^;jގ>游s Uo %7Q=qfI\$nnWDx)<϶GڍhSt$^y~nG
-3 F.0ibxۻؗ`!:ecxDAA͞ԬcL
-3@`
-3 A SS0aY*$ICn[{s:5`ϞH|)OeO'+DyPA߲N~@/F {Ε~g(k hdzKdz{RA@&õәT&jys)-חƢ!Z->Q;k3㘣o6Le׬>Ra{ť&REqmݴpƜ^18I+b%;TrKޱÎI){LbܕA729.N.sBG_kv͓~~lҥ; kԑ>kܗofZ^1qW%]u'}xݏVs浨~Z{W&_-u(TA
-pNz߿%俚{~$]Ɍ큒#Gh^/} ))VaڊQkDۓ͓Jr@g -m}%x\!ʃq$)X|YH|oJVGo7Q+3 7qP~O}3:r(1 T1RU5,
-kQv a&+so'W:;TCN Q>n͋5u%5,*Bnc;[ĵ,<-Ѽ)T̑I6,\Vhmۅm;#9ӳB$y5r7qM jd惓8/=L_Ff~
-kFt<Ihe&ɚ+D&Mx ZRXi#SPGFAJJL3z12#\j:w{M(&T.;'Zq/f?iVǹpgP|>fK2C& }t,nzB#gX*nPK,ܥrD . ZU)O\oW*_^ y<~C*ՒIA,^ 8SV<;&Cf1qWu,k_XD\eĹu;6-x&,>`[~)eo ۤ
-endstream
+543 0 obj
+<< /D [ 541 0 R /XYZ 78.37 808.885 null ] >>
endobj
-545 0 obj
-<< /Type /Page /Contents 546 0 R /Resources 544 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 548 0 R /Annots 549 0 R >>
+540 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 385 0 R /F56 388 0 R /F55 387 0 R /F57 389 0 R /F19 383 0 R /F64 391 0 R /F65 392 0 R /F58 390 0 R /F49 394 0 R /F48 395 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
549 0 obj
-[ 538 0 R ]
+<< /Filter /FlateDecode /Length 5204 >>
+stream
+x=ˎ丑
+@|?F]SfOwLJu_(Qʜ܁URFx1 CtB?ۧ?384r'?Ѕ-%b4#Tϟ)O?3* 7֖Rƅ(5~q| ᵧw)5n+k
+Њ7##rƉ`d pm"5Zyd؞a4
+lۧ_r'ebOQ30F?wז`-n/8'~<%DQՈbFN#݊&4I6<iҷעg^^H*#g:+,<LXᦴ+ʠ#Gdeu
+3aВ0J<|n{
+o4/l 60M ĔY:k&eCp pLmXC$O ͥ4j
+?FNm`j`l:ԏ%EiJ'JgQ7ՈhHգOnd')^iW`sƮFCV'
+eb n+A/U6 W|{oQU+Q趕wʻJ<඙*xr5C;ECnGDCE) 8ޱMN\0CQ܈&5ˉy_( aKs_ӹ6y+^Go¢#J;'Ƭ⎡”R^Se!Ty*z6]) S!5+':w@ By`4&Sp7lo'{=L̬xžl QOؗɱ4(bLJM3Iy,; (.#9BH?.[8-;-[rSrĀ:EGT=׎:h%*N>N 򐾀</%= +M<-^_,@:O
+o\ ]|q[nKs9,5= X[@ Jva}7y{{°keh0nUAΜke~ԗQ0Ʌ2E͵Fw\Y P%By,F YkAnMdF;OxDQh^sJ
+选swF (Nz
+\^\P7)[.gM6:Yqnq..۔aaB`~s6C) ,z0Bs;_~*aػiWR1񏲫<`zD-2Wo)uwtA+ys1
+^#=J^khGPhyy@.y y+w};*BV.+KDrv3ڔص3{E@Zc\-&~?А\CJ2/JIIz߁Ev-ljNՖ^jj(;e Q
+Ħ>Iq2) '6 H;RjHlJ!/&6%cz_LlBD2Ll
+?zbX0hPPRKl"1L!?Jr\иAbΦ"v</q__j Rʫ/C H @j3I<e2dPgLF7RĹUF.3oN7C?"V$}ݠ Ȁi7# iX 3o&ҭ1kxHg07s.kΥsŧ°56ݤ<bOҹt}")/s3sf
+}&L#x>NLsܫ`Y]١%D}=HNJsݹt<ΕW!aa*'Ǥs{\9#\w.뮊\_Pp/ېHD8W
+W7#Bť|>7ҹt}t.ĦB c  @G໓ӹ\\rϗs].⇋g;ĀIE0)^1T'ٲpLZuTl~YaF/<hj~&Mk9ZH &r<[{> Gr6u xgϧEQ\jS.g?30&\<Fmc>9,E}6 SJN&^3t=3i85VO~jَ;;9[ g:+մ*NV"f>sS&}t˃L1u~QBKj Q%
+Uc&; # a ,xf<e*d0ɭPHU0hǍKms}x]ګrbH̐GZ(u u~|GQx8m1YGw ؤq5hעWìj쟀IVQw\zOEQU s (r@a{"fG+7}yr}K#;DFanud}_s%YYx08M-±<{6`W}R:BϞ>o+>N'.=f+䞾,sXI#vWhٍ
+l#BqL(s|eCB92E
+ԙԸ}5nIY!<w;ǃNC8au\Nf܎^Pb5}hwOmvs,HVԲ`,x&Ai5z9ǂVanR6č@Ї iY0x,x&3ǃGՠCxj3ǂGY!<)GW# ~-|ŬЇzvs,He/Vᩝ /mY0~#<bAZ#<wa)o0 zêLק gc|yn< D3"ڴ/
+ЦkǷqv lo);dNH=^jlaڒxb, 6;_olnB!w/B)ڮ޳Wj0蹳ND/؏1 骟_8l>
+}NzS*wR(
+X៻.ДV"S(jz}UyI _zeVlzg@vfG,^ v9Jcnl^jl}M3mEs/M)
+endstream
endobj
-538 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 303.589 745.619 315.545 757.574 ]/A << /S /GoTo /D (section.9) >> >>
+548 0 obj
+<< /Type /Page /Contents 549 0 R /Resources 547 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 551 0 R /Annots 552 0 R >>
endobj
-547 0 obj
-<< /D [ 545 0 R /XYZ 78.37 808.885 null ] >>
+552 0 obj
+[ 546 0 R 545 0 R ]
endobj
-101 0 obj
-<< /D [ 545 0 R /XYZ 79.37 191.651 null ] >>
+546 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 303.589 119.497 315.545 131.452 ]/A << /S /GoTo /D (section.9) >> >>
endobj
-544 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F56 384 0 R /F57 385 0 R /F20 382 0 R /F55 383 0 R /F23 379 0 R /F69 402 0 R /F58 386 0 R /F45 390 0 R /F40 391 0 R /F59 393 0 R /F71 415 0 R >> /ProcSet [ /PDF /Text ] >>
+545 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 166.619 67.03 177.076 78.488 ]/A << /S /GoTo /D (subsection.14.7) >> >>
endobj
-553 0 obj
-<< /Filter /FlateDecode /Length 4830 >>
-stream
-x$1߯&opV'@NLP$[lI]7~fg,]d˗_|‡/(7`?E,^0b`܈ˏ8ʾ g$b`be_OY`¹-|HjAKPz\}"~wL6D(΋q4ȏh7)廭qcK"~rKUۧȀ+R-y+n5RX2pJ0S-ef+{{,DT"0ZY'x/_)b܈ HԺ,A4>©ѻ#@Z[hEX%`"YQЀ=I;$!POf+U~t&+`! 9 s|4
-3ΰԦNjK(!AƖo )
-g$ D˶M !yv\zjMkS?jeUƜ(k
-;:RQWIUb@|Fݶ_-YVn(@"Gd{LDq} @BjIPFJ"3i$ +yd`"3*!{Ҟu<OM O iVP6xtj:?}m7CD!0nSh(fY)nX)~y
-暁5?z)b/ŦEIbc9}v&Yzn;>MVĞ"Ha[#)|"d(!
-6zVB[!HcQW6$A ~z(ym//=g ] z&q8ekphܞ7+oݏ<r$L&yyǮ=M z(U>c8@a4OlwA%  dnJJh]N*vЪvM)/LIa'խ#RA|: +C-"=svh}Os:XYB?K,ޘ;e79N vEߌČNc6`gDyl}\+ӈ5%#
-q3)n+\M
-$qJxdy-
--3A;mWZT?TgVcWUme=R.+&y]Xi!ls#~YJ۰pF=^0% -2e:N7.Kv=%u}Y$ܒ)N}!-gҫLJ(혒>s1c*aƑ
-eNb YB"]vgX7y>I
- KϿйi GNcMkܐ:s |.DU)s۰A1}k_}GzL ׯKo^b bȃSaT9)I!KܧoRĺP #_a9
-L Ge^W(g ޏ?[P(q|mS]ƔI&H!F5eLE@r5.A@CzSqAv%
-80+ۢ"i,ɝwZ旕<Kj\Rrڦ S=q'آ`սcZy8VcF<go Ht0d5C:q[tv0˺^cN-H{ Vml[T0>,Y4Ϙ
-ɾiseekK7խ~DZ'DxXi`otʞE,)4];
-l*53{P˥bʘ;P…;K|$R,{}7ȥ5QT{*S?PY
-`ҵr`{ |)V;F|ݯ( 4Ӈ:?[& Dɖ[@*A{LstQ
-[X?j ̻Jw6%@7T3jE Ǵ&dQ W'E vyS| gnIm]j<ZaO3kۜŵ J̇* k;$Z34A$tgc͇} |bT*[=.Kx$\V$n
-[k)ANߠˑVhž[u̵<
-43knBAlz=Q2-9"Ž!8:T\&GE:|FtlO#muht*#7# 'r5K~ZK[c-ifE)p`EXizV߄lO:lb~WJl334[).31e0ا ?Gq</ת۰qPVxϴϠ!^A,셥X¶d3\;o$3PdCrFJ4&_tsӸrCy-\
-_ ~<OeLWq
-y
-_pvt  v~BC-Utv 3چtPJCsƄYig ~'f.XhMn̚,S|1f5̢ûd<^ES9t lSCyN+TНtuO<0[ڡ `>/3/U VN<6ͯ3@2þbz v<_
-K,/lu2!]kM.rs.z|1Q1w܆+H[:nåb9i&
-*pƏ|D68 1t}ݠh@]>:Hgsz(c\>:(0tǀ!exypVaz{`l*`
-b-#Ul bUdžcA͚% jiwgB-Bjfh1wsdVp\Kp'{cBSQ>ܮ$^1 G7pr,#>6w.m:ؾWQ4YZ6umܲn]a<ŗ Ҽ, ^/#O>DE-YP2zRgnK]\Q&f}F/zO@cتET`5Q1]/O8O%X$#Ozl{RD#"Y:*폿 Z-%F¥‡d +ݟWSipǺK&+P@WP[ey(FT|m{b xڒz-;Rz6SzUwO߮6z Q+.nu3K#GAT)|B
-3c&RY
-endstream
+550 0 obj
+<< /D [ 548 0 R /XYZ 78.37 808.885 null ] >>
endobj
-552 0 obj
-<< /Type /Page /Contents 553 0 R /Resources 551 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 548 0 R /Annots 555 0 R >>
+547 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 385 0 R /F55 387 0 R /F56 388 0 R /F58 390 0 R /F57 389 0 R /F49 394 0 R /F48 395 0 R /F59 397 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+556 0 obj
+<< /Filter /FlateDecode /Length 6070 >>
+stream
+x]KW8shF"D{"fOZޙZ_7oPU
+!bnP2{^I`>[22JJ
+"ҦB:FzZt}p]F3k7]ty2rDǸa,^L.6@0RP`7I!6/~M erI0BЮB|Ɣ̇x(Z#kA<&b| <]K~\3|3e UJzj!k~?%}!w0+ )" y<w%ZHGݢL^5y 2m4dT R,n:W2N{8"Xb1S&gIZsX9w0Zvc5qE8\w4Ag %
+?/ xk &dH׾krlˏ%,d(V(y}L(pyҼu kvy3$-߂mpV B՗F% /JLi !׆q$W23EJxY
+\cHϮr(?ι99?ܾlz47??oNsU'Fo̬ܺ=i}(;;JXbddu2
+7q~7}9/x>֐c⽍?0..Bq/// i .-\#ŠP]ZxtVARه*,H1zh?jWʝ}(fP(B5IRA' 8C])yo>j])a)$֨kvgFƀ}-ڏڕ2|Kw'o/:a~TrՌۋ9;"
+<HvJ =.%X>Ik*
+[vԼEH57 A!A0 PRD zř6(GeDAQ\i x?.<P D, Uh;Q'aW($(oOeSx[V"sE Abg: وpw
+qs
+3IjBQWkֹ~'9?JI?Pʙ JO@+fQz#ߚ
+ .Τ(}z#Wx;Aʠ-)wGʹs$:C9Rm!ؿ+<t杂 (I t6
+1o3(#ebD/1z?srB0Qv!x3A*'a)|#[ 'LA+RCM[$RY@hTXfDqObŧsc."tfq>_w
+] H嵅`BHxT^àSxz<A*}K:ǮS8u qK+s8;z~l(>]#zoٓ7=B' k5Cu: cd3 exQ٢SS1.)<-OEN5񇕨\<&4jgB&4;}OxGYY?y_qCAnIπzOwu;ӇݘSP'zyAN a* ^ᥙ,yyۭ05:|>>PE4cLrNIo:Zo:5CoG\xWPIU!?nYo|M淳Dw̗vg}3aYt~ԓ>΢oK;2.a^V԰6DO!8ATaZOB|(<5X%OԪIsκ9}WFYl/r3^)։HfX"֎ϧxH٧v:PjɬPD/qI|*t?ٰ,^DW+8vqH'm,r F!o#`
+/a
+ 8yJ~4z3>u9MlxVCh$Q=~1Hވ6=r깖Pڲc= |aq ثI[zQՇāH-e#Vvy)J7WcuWwtlT@|"a*>$Ng3Fboќĸi 6m׾w޺% c/b}=p)+z0v?pYl@B͕-IϙU2\t\{ F*E%ֹPR KD^pj?jWʽ}8o66vPAEvۗZ`"}PQR޵Wh(W1z8R$*mD2;fp;HXX6;^kR3y͔t1,$8ΓVR !ZV~ x/Q<ܨ2+_ khZ|
+Q- ']
+^w/Bpbeex<2X*@s4А'(,qFw<`px_gI(4ţܢxN v>R94$¦ʪ] ?)TolEsz SMC;Oc jg.|'aY>s|9 ODX#X$_7]W 82yH`խOG&ט$~{t@y
+~MvVJ;/3_~ׯ
+YOW2Wj5+֯
+V,IAѹ<y4tB^rTji [RHբ
+ŭ |nXA%
+>pVTJc; 7E=$Ed*sE8/*CLw
+zT47Mz$0my(ޞ$ Wa a)Moݮs6x?hLR>PX>mМ}<dro&O:]֝nƠc\INf9j>eOI7ѤڥwؙX^ƠU{Y髑cAV|\Oֆ!}cox%q4"r$#Ƞ:x9c rwGS
+eX5Ayׁ!xKa9!NٛP?Bv d`/ITVaP ZӠA19wؿC /(@)ѩ(_#`a6@HsUǎYхhK>wޭkufĆ**ktHkNa1 OtJH8`
+es,ek3[m'jfcLq
+ wDsjV -<p@E&"13̯PRl]mm3~b>JCU`}#Iw[l^ mU''|gH]5YJva~:=ΓcJWVⓐ/ΤD=E<d8詚a|lY+\I+(uؕ`K_KiVטkK|AܣQ.LC5k%9mr_E1p@&ﱿ7w@jg7Vc)hT;bZն'S"|Is{>L²g&rhx'| Vs T>#%|ۃsg;h6s
+S^\uOͿ6+\KGF†ͿSa.5 æ9։9}+ Y]zd.frGlPܣh-,>#"]Hט8٣+uCzQ?V _ % [|nΖS\KW2V{W=\1on0r%KZEr0A'\Eycb2ÊW7ϥ^$K܎Бg Aچo-Nv0PI.1X6My⧎E~:U% hu+I5<'R U,r'$.ifA9\/'y$]JLQ'KpR{X\q
+)m-Ӷ#k7.V❟/Zuk.E,"nd{KqH7CMX }_P+$[[mIUx}
+endstream
endobj
555 0 obj
-[ 550 0 R ]
+<< /Type /Page /Contents 556 0 R /Resources 554 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 551 0 R >>
endobj
-550 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 88.249 105.214 98.706 116.671 ]/A << /S /GoTo /D (section.7) >> >>
+557 0 obj
+<< /D [ 555 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+105 0 obj
+<< /D [ 555 0 R /XYZ 79.37 215.562 null ] >>
endobj
554 0 obj
-<< /D [ 552 0 R /XYZ 78.37 808.885 null ] >>
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 385 0 R /F57 389 0 R /F16 386 0 R /F56 388 0 R /F55 387 0 R /F19 383 0 R /F68 406 0 R /F58 390 0 R /F49 394 0 R /F48 395 0 R /F59 397 0 R /F70 419 0 R /F50 396 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-551 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F56 384 0 R /F58 386 0 R /F55 383 0 R /F66 388 0 R /F45 390 0 R /F40 391 0 R /F46 392 0 R /F33 490 0 R /F59 393 0 R /F71 415 0 R >> /ProcSet [ /PDF /Text ] >>
+560 0 obj
+<< /Filter /FlateDecode /Length 4876 >>
+stream
+x=ɮ$qR־
+0~,8 6Yc -"i
+kP1e_1f@_=txP={ t[t299=H9IM\Ċڜ*u7A
+m oM)gֶ',L
+:BСt~BHŧ&.!ӅsC/@SҖ,v 4:˿N~)wDwӧ"K5H-j,R/G<Qc
+a LA_k֓Y\ҩno& q$$iy7^7͛Pa:']jSlĥ1 qԔc#+*tY)/}DanR>8?$~ʓv?N,pLt?6k<;[t i7#+tˑԫ%ɛQ}r-EpDl`ϼc.l2R[*5b97̅wpH,tI
+;άFU% 9=ܹ=㙭Ive&αK<|ʶ8R<79jqzK2': 0cZD:5fm'0gx(ҨhpHr~M)M4Me%67S8@T+8&KsUNrd?U*VzJ,
+pЦ2ծj+Xt-2x>s'߲QczhiIq}4ƵA2J1V/
+z@G\0KGxJI<U8F* yZ>@Z<뚻lh"ɻNDyf'ESѨZFԧu}K6d >ȫueD`C`7)· ! [2% aRz+mɫSN͓'rxں%u[imqgVB][xlz"ҧg-2 n8)|L+O,3WAhlT]6-\*uW̻[x8.q}򴌳_wj4=k}|i 9pZ0䣄{G!ni"%ҳ'\ii-ʟRW5ɦChiysjCi_gIp2m_+6n@xPz 0qWY+S'moqW<\%ȕ>-ϭ>- ګg
+A@i_cv6~> FOz~`ꀻ:pw1"#YqB\9%:)3%Y0tF`eh$mi.mdGC{u hgGE)XT9W5gw.&!^#Gm~2R((TՄXN 9MXMʼn<<Ϸ
+w
+0#X7J%]RRI qPEU8,c%zy"a7auaR` |=vcZi4Zqgғ.x+Y
+K(xNnL[L0ˮfDn dS)G;;r9'"BM
+RH'ɒS,4-7U
+QTW|twUZS0B>d[KFaauC-huws\ WpK
+^WHX\d浤xT9SUHW<0[aP+#TbR=2rMKO.i)σ] 򔾰hy~CҗX4kooSZQru~Cҏno/(|jI⸤&$UqmG2e$0FZ,B<L|6̈Eb</cpa9{~" wr@_^avU}} ^WoJ1B16ı]A]ː*";!v5>タDjG~ū \X}~g_b<R0qX[ 4>˿'0Ƒ${_V+ uC(n|=}˞t⅞LJC)ǝKA ze@_gk 9s(^WY\=b/wҁW ӊvW~.x, LC'JK)y1޼JF4ſ'vO69 ڞ-0սڌhCfAqAbV0 u2!\[&eEbnUWe)mxPߡ[b=YPw7̗mO@8DX _tBfr
+"~ԧ,r9AX]^bJq58?5ūtM;q̲B 2~]e0Mj1
+.(^pJQwFeA"_uQ*
+endstream
+endobj
+559 0 obj
+<< /Type /Page /Contents 560 0 R /Resources 558 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 551 0 R /Annots 562 0 R >>
+endobj
+562 0 obj
+[ 553 0 R ]
+endobj
+553 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 88.249 110.128 98.706 121.585 ]/A << /S /GoTo /D (section.7) >> >>
endobj
561 0 obj
-<< /Filter /FlateDecode /Length 4632 >>
-stream
-x\K$ ϯ?Z`mOfxoONCK~H_UbvIJHQE~v_>i1FRl_}b ff3gJTYJ{YNao_n(|AOSJ;6SIi xOd%#
-Va_> $b/<D+1NۿA35zsieD(M"A6] lVT;}27fM2h lTeiԎ #>Ԗӛ)'ރP(y>.A5B 2&Jo%GG*Ss[KL+$Ƚ+m>lI%q  4
-\
-Cbm{y
-c gnmr}O ?hm6YA&ZfQj\IMjHV(SAI^KC^BhQɯ&;/rIU5y'LJ-'^j~Z}' }ť׃'77z#DMD,Q?n{C"5s-'V4Σ5>,(\+Ӹ(\)8Մ;Hzk$Z i2Z3ᛄmnP"iC& { MҊj;ɢU6CP(5f-Tg+;2#Ɖz)pvyDYG{cq; ?к"K~/9 qi_r0
- rQnZ?SЩdI0|+dWZ.:!}ż.:Ce(]zq޽;FT@MɝjS7Wvf/MINXS&;*hv,g2jubϯ -i^|Y6O -D0P<f᭿ =iq5r9w}<~;uX(`ONʩ=hx)pOh|~'iOv8'COie|zm_i71UvecL~ ~o1,D~nf[s/ q#E(h(.4nQ&G/IyQ,f⪷J5(5#RqcqA6{3\R"
-Kvο-)!H=q](fxUaꔂrȻM^ڽ~bۤՉ7IayJ 05vJ+ 5Eܵ4C+c|翯xjiaV=uGzjP)`kȡAsa?-3n{U.EC#}AjӮz7GMq ֔qK
- 0U1$NDCj
-Tl?AxI͙*Vs6@^`Rr,i)O6r }|t6=ZJiѮ)e,4[*)Ps߈㕴!w91su/+5ס>UP⽫-& mc&B$1m*l)(o4jB@f^O1d#w YG=Ԛk# ^"u36<cw?WCS<R$wReࡸ5hm36:t !\W秲jcMIv
-q<ְa;mݻϟ;mA3|pNg%k޳s=;Pƚ̋]#Ͳ Kc V8N , Q?6 yjY8 <Nn(LKQ2u`oǭ
-rW?v)D
-[ EvA4'%a{$DO3|/1?a>hB!4m:B𵆁)@;DnroӸ&`@X^Arvo?Ç'j$;u!].,
-&h;壼U8#y< ?jߴ#H5>CtQs"B!^ow;afP O9>mbi2q<nQ{<ĂUHA類t#$#؈ˀDϧt6r}
-kҾ5Ɂ33Pbͮ&oad
-ֺ@#oa}45Z0*)66O1ʥJ=|S'$UAlG^4t-Ipu 7ږC4qxӤo7P GUT{V^7X-"6Z~nqSȭoޮ!AYvJ{n+nӥdtO,k'QAfK[0^j梤tA6WJ+RP0A.yA]T w,uKy~~WñO7LuO
-j·\ wE4fW+{P]\PJ)1&/I ^ը]T[|r2-JGUiO[Dqh*n>4 lzPaMiob;P=SmR\- Z\%UDy?L@;rRS%c9~L_
-Zgk\J%Xq5혶&$2cS)Kh4Ѷ}K5SKS\jhU<,W\&p&lamf
-8LQJ/u_"A M޹ [yzwN]([]ʰ԰9^ORn׹ t(yySԋϵW-j%vj`Dkͺ(z'HDљM51+݋
-mrɗ>ٯmꏙ$2Y+V佝t- N&ps E KJ_sy
-sw 6x٫AYc,Q؋c5s~A %RX!O}=E̅O!p0鿅$4~zLd
-endstream
+<< /D [ 559 0 R /XYZ 78.37 808.885 null ] >>
endobj
-560 0 obj
-<< /Type /Page /Contents 561 0 R /Resources 559 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 548 0 R /Annots 563 0 R >>
+558 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 385 0 R /F56 388 0 R /F58 390 0 R /F55 387 0 R /F48 395 0 R /F59 397 0 R /F50 396 0 R /F70 419 0 R /F49 394 0 R /F41 489 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-563 0 obj
-[ 556 0 R 557 0 R ]
+568 0 obj
+<< /Filter /FlateDecode /Length 4562 >>
+stream
+x<ˎ$7~
+޾Ld ]-`ՋjΌK^!E[n,[0Rѹ=u[7w̿HDD#=<LMlYQW,bTqǼ+ .uL鉚3I8N"BZ|+tH n|EO
+dB3z(v{ Q#ԉ=a+'(yoG4U(tJZɌV@ k+BNP;:&SLܒRӠ7Q&<P<i"%j(5X+Y9 M_g&!NiRZ:D!yBi4[;JMcͤe څ@ozFmauIw'|.<q1"5FK4?l~A8h$iY1IIv¤bխToGiԤXH:H#)$L:?Q˪8LTP>(_iE=~&0zԻ=DA;F\khB#E38Z;@-&-QLlTYm7h sAMSW@x2Sd6l'BB
+aZqϡvC(D}g,vb:dҁ2ƧOJQJF{
+u]Gr"Id:D޺, V7Y JK ʐ_t㖀M:W;V %PQA_[*]7Lp5> ZkIEmQJMZF)&6{jT7qg$WOTaȒg¥ T҄^%Щ'\RA$<+avщ(' IghbBwH#O3M 1 B71IY"\av#t{~u'/f8 H |{q97_!6<_zmdϯ+ GޣE`e.gˬ=DajVIHB2#6#jNGjL2ka}
+<~tX(IcrzI~>'ԂA#u88>a"ءM,;#1 j7bKE.# 1h9Nk]~跤e .p$<X\}sypv~\-jr&au2W4i
+2
+'yW)8܏ȷ*M "{b[ՅIZ2,W`Mid?Gh6y0]_g<V⤧{Om0 ^BAFozOޅ&ɍ]2ANAfRv9b%Pw0ոnKܽR'!Dal&42H?7*rO:-"%jAl YgM~R3/^j(Cq-svaWJA)X"I'*R;8Y[@d՝lJ@`(9V'UIGR.am˺שtٸ똮W)fRm@q!+41āZhӦ+}יZbǾk$zW_GF-҅Z@|Zb7cD5DlD)ӜϏ1PQ, LGKfGJ u͞ŦxK{yu0mߋP$㷨'(A^$X6jۣP&RmsKA0=6;U\c#-+#_
+ ,Di޻{C+m7%˪|םH7¼X#<x-\4+O[)
+ Jv9X5v̘s.8ØUb~nWǽG7\s!ڃOW_SE]fV6PJSMĘkvz F-BUGݙGv32VDͦ~ġZh @ H4v"'0qw-۴̈ecj[qq[K#YBh9 EߏT({g<SwJ$ǍxΗ^
+#Xhˢy rgJBƻfU1h t|>cd~|7<ZkK5'bɝ6+́Ȑlz3---,'(a3T9 Jdxz B!Um;fy1,@ 19Sri teKX bbyAjY^6b 6\/0`XV
+3YLsQ 1b!A,tf{"X<m>(.
+CdxaW" g⪹h}},@wn;)%θ Pk{7xDֽ",YQ
+딚/9'4{/o?L!:VjPgG=C襕Ƚ@N<0R{sO7O2/0X+,!җJXѥ
+'KX( B{CI(̦yVPBN(,e
++᪮K,R[5KlEJe%Ry:IŤp2e.J\AJ%41 3W2;5sX ])z1Hr|!qK+bKs=R{Yxc#>iSIĦ}?nQq&&]+hlRϢmQ9YFZݱxm//^ x0ݍmI烶-@-zyxW jy,vmX/O2'
+endstream
endobj
-556 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 433.094 502.851 440.068 514.806 ]/A << /S /GoTo /D (section.2) >> >>
+567 0 obj
+<< /Type /Page /Contents 568 0 R /Resources 566 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 551 0 R /Annots 570 0 R >>
endobj
-557 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 249.881 321.362 261.836 332.201 ]/A << /S /GoTo /D (subsection.14.5) >> >>
+570 0 obj
+[ 563 0 R 564 0 R ]
endobj
-562 0 obj
-<< /D [ 560 0 R /XYZ 78.37 808.885 null ] >>
+563 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 433.094 505.9 440.068 517.855 ]/A << /S /GoTo /D (section.2) >> >>
endobj
-105 0 obj
-<< /D [ 560 0 R /XYZ 79.37 771.024 null ] >>
+564 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 249.881 324.41 261.836 335.25 ]/A << /S /GoTo /D (subsection.14.5) >> >>
+endobj
+569 0 obj
+<< /D [ 567 0 R /XYZ 78.37 808.885 null ] >>
endobj
109 0 obj
-<< /D [ 560 0 R /XYZ 79.37 659.686 null ] >>
+<< /D [ 567 0 R /XYZ 79.37 771.024 null ] >>
endobj
113 0 obj
-<< /D [ 560 0 R /XYZ 79.37 294.448 null ] >>
+<< /D [ 567 0 R /XYZ 79.37 662.735 null ] >>
endobj
117 0 obj
-<< /D [ 560 0 R /XYZ 79.37 254.604 null ] >>
+<< /D [ 567 0 R /XYZ 79.37 297.496 null ] >>
endobj
-559 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F69 402 0 R /F66 388 0 R /F15 381 0 R /F55 383 0 R /F56 384 0 R /F65 387 0 R /F58 386 0 R /F45 390 0 R /F40 391 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
+121 0 obj
+<< /D [ 567 0 R /XYZ 79.37 257.653 null ] >>
endobj
-567 0 obj
-<< /Filter /FlateDecode /Length 4404 >>
+566 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F68 406 0 R /F15 385 0 R /F55 387 0 R /F56 388 0 R /F64 391 0 R /F58 390 0 R /F49 394 0 R /F48 395 0 R /F59 397 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+574 0 obj
+<< /Filter /FlateDecode /Length 4400 >>
stream
-x]K W1> $RTzrNؕʧ
-`ں saf'M>caRy[aP
-q].uL,ld_E^J7y沖)W-
- Ңq ϼ娍E3MFWqvg(:nC~e\ћLC[,[~"piԔBo&4?,_,fPqOcZ_ww^.4pV]{y˻Obidjh;]J06ZQCA O\BMA](X
-%S~":#y_=Q묣ƺ2~T 7*@
+x]K W1> $RTzrNؕʧ
+%Sa2"y_=Q묣ƺ2~T 7*@
g[- *_H}
-dndcH
-6uWljk\-JuW1ƍ8ߙ8RwՇ5TH#'9<QjO0C}\%dVY $FHm6WFDԓ7Mv
-Rz+FbiyKo@>QalN@\.iO4;']{?YÕĭٮy$cS-L/p]iv֬^Bk)SɋIҞ;]wbR-6:%?MYܶ.? LHƕ.侩PqB6a;IOy Ob64IaH/J@yôDb\,RP2 R
-z~evݿدVx6G,&p)L鵘`&o} *#po 4JR
-;₊`pA[\PY
-~\:[- @Asraou#1$(swZۆFيei"vAXGƏ@SԭcT3dsVQ6"Q' ww'GۗI1j#F#P~G`?Z~~86CmN4|j`;`3wz_Y*a-%aCqn L$~Δ;+av`!Ʋ 8<Œ\cl$JC?\8D.S9Hd
-3p 'H}<es
-R (ӡ.G~Q ˗QupPGVxd=3hZh"P;>ϟuTZĉZF*mFB'bTI4\<(TG&
-^n`(Te[8a%.U11WX[D(_l
-Jdݰ8M.#*E%ջ$8äGt&Er)B>YШٗJ4v>բCK(Ε\י`0byVڙק r\x޸4>MdVQ߷-uz[;Xsƞe[Msf<턵yijꕲ)[m0ggm5u}1iWrTjs$6dBT( )/g'Xf-Zs[XZO)ӝL$ vQYJ[*@٬[ LzESJ𱕇ڈyAm[⇝ >o23-~$oGTAWA|4gYM 1k2c}GE;V߿7Hި`;Q?^Z-8H9E^Z|gnv/ͿL/{A]0Ȑ4nxg3Ʃ:w8-RU%>Yܒ)ftN>萩P[Jx4]£pm3rfkrzMq;C_8r6'V-fڥJE{&=hQxF/^K峾1\]DS҃#t8X8s'qÃ9%No`4u{4k´ҵ&hͩ\!53NSs+[ [By%^Z{mH-Ydj>ߗ gүOV((YՊ-[7ѡ/oU 5"!}=xH9sJV\UΚa'JT㫰U~A{^p"g@י<ek9P2BaóXwCІ㍃%k
-'@;(egv!lBN8n9oClC3ttF8}KĔ;Vs;iuX?
-%D6z>B(?&?7s|>JI\輱i+xeWaOwp"'깳q)ߵP%+M5C4 a_m[hK}"Y[oN\s =<N@es%v>b͝aB`s1XZO䘆g(H2*ZikVRLhn\4}vEG\4# , T&[~t'*RY!+ѱn8y$OGcO?;nwNɑnw(_bfn;o{]d^W}^wxsEk/aN$)9@np*-
-7E_,Sط]:* &C԰?W5{ ڄpLrm$oaC
-o| ?xhiꪠƃQWnw/.l?Pd<M&Y6ץsƀҏHBOV}ɥcݳ}X'0 @wJS5xM32ύ[=*#.6Npί J%t me=H{L>
+dnd!*
+Ɗ:+65׵jwS@ȈTL*X
+B@ 'bB2ye{^
+W.ȢQCO!.n-,veϛ}&W+{I;\ %ȑX0ag%-?X$ck.,q'&ْkc\ml܍8j\Y:rL:*d$F.lCӛ J+8'q1L+Jt(2[-)Û
+ZI
+ÜZu/
+8GH}Nr%ץN*OU0k챦9G͵UY}7&s#Ǹ*لm_u7 )jRX?DeBk͇le ɦ~aSU
+kζܙ{ h{92fC j"#<6P!tF:[/#Lκi͓fJYŒe +<UC q@Uy`/5iseq-OήVصH.%˘ =lҝ"\4\
+!lBtc͢ЎtJKLA8.^B-a\5Xzo:^ڝ#6d]g F5aoqk:{D` {hEh*ub
+Zb4ɓ0b` :[־.m}(.: *[Ke *@k\g
+zQ
+] RY#u+v >(hn_.۵`n?{Nkې`
+F:$uABN|R^qhR<")FM{H}
+lSSۦohɟO-8llNRO+ \6b2L{ .ڭv}ߡ^߯AÙr~g8.,Xvڃ'Xv5vL C\`kȠu*x]a.)l.DA!0s`:Pȏs 0a9vH`TۊqQUXLgr~MR-QbgN*]<p_q\U˒8P(>QhUz] ja?K~_Bp(DM 8r2}*&k߻xQ
+\[z%G%p6KhH&YMڈr
+]:d>1ԖM(\L)©nknZܧ^}1Na(͉a v߮.Cў oZ1}.ы׹R}a x?WєG}Hlsw> q= f+8I`N}>7qi <!͚0t-!}s85WH͌|
+[Z{7,rxS& ѩ(#,6<e
+|7m(?8ѝ_ 3 d7@"y0Z u#T, p+^(ʘ>"_U:}EH|]ߣy3 [c!{S'Wbk76s!ș:ۂ͹BG:z#ƭ?̇(Qbʣ|y :eyrhHG=g!~rT@G>U~@DO_4t4Rcy2ۂ0ħ;8f9 P߾ؔh{&! SZ2@ȯ->
+-N^g9*Cql29rX[rj{ f@2b2!]G3xe,z-eH(rL|$4|$^u G+|)&\E7.H;#ĎQ.ǑukƆ)+
+pevwԊq), X7<'# ?۝@rġ?vvA3Y^-置zU_oњ m)1)E>0 NX%@eJTs
+ W!j،~
+&k kyM:*%lүKyݙGq^'ɻgd.;e-aA&p5ZM?n˯jBܛfd+ZzU2U/.a%ʙ?St$w
+Vr:I|)c
endstream
endobj
-566 0 obj
-<< /Type /Page /Contents 567 0 R /Resources 565 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 548 0 R /Annots 569 0 R >>
+573 0 obj
+<< /Type /Page /Contents 574 0 R /Resources 572 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 551 0 R /Annots 576 0 R >>
endobj
-569 0 obj
-[ 558 0 R 564 0 R ]
+576 0 obj
+[ 565 0 R 571 0 R ]
endobj
-558 0 obj
+565 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 243.425 745.619 255.38 757.574 ]/A << /S /GoTo /D (section.9) >> >>
endobj
-564 0 obj
+571 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 396.68 333.295 403.654 345.25 ]/A << /S /GoTo /D (section.4) >> >>
endobj
-568 0 obj
-<< /D [ 566 0 R /XYZ 78.37 808.885 null ] >>
-endobj
-121 0 obj
-<< /D [ 566 0 R /XYZ 79.37 185.953 null ] >>
+575 0 obj
+<< /D [ 573 0 R /XYZ 78.37 808.885 null ] >>
endobj
-565 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F55 383 0 R /F57 385 0 R /F56 384 0 R /F29 375 0 R /F20 382 0 R /F26 404 0 R /F58 386 0 R /F23 379 0 R /F69 402 0 R /F45 390 0 R /F40 391 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
+125 0 obj
+<< /D [ 573 0 R /XYZ 79.37 185.953 null ] >>
endobj
572 0 obj
-<< /Filter /FlateDecode /Length 4087 >>
-stream
-xɎd_eځ
-2<>g /dZL+kpeGUnJ<O<姑u~> [
-==Ɇ?]bm޽M_7 o9Hx\KV%$eZ4Dj<J']Ԟ(If g$Gxl^5s>Yvh{:?X,{::D_HzhYI=q#n+pӸS7B.6hMSӉ,|AI _׭<Z8+M2Srkꎳ 'p8<Ot;yF:y:yXQR<q.}f op6Pj"!rnҮ)pT2gCո-*5j(W =U= \a%̌[Z?dM;i孨#E','3%Cp5<: (|ṯ"n%8P#()wwA];Ǽq:R%/Nc
-mE%/цSV_BWy`^$&n (@'\;&`GF}$P
-geOEJL(h1 sjUШtA˘YqaD 4ZΙ#z16SI_NˑtNl~d>~hÙ2Z} ʭ9Y#Ybւ JҀoK ћF|{Goq՚
-TuU2A̎zM+A^%uŸqqqcFEr@K蕏ZI#iI<:n0)5LiAkڼQ@3.17m
-.$1ؙCc
-<R2C͢ C2^,i,pcG֊iD,MaWɹd]X=.OqI 1/7
-D=z_i=`#U`7 qS-%r׀lv^ xǫCbLM&?BZf&˧:+oIq;UwҽicY]"6ge?Si;^Xv!MOʖ\-Xwghhfm1:ƔmJ`DHx^]*h#aB2T;ɏ'r͚IV4#}/5-$L[_uuR+}Rg#MR-OBHx5ER
-iFRu-cJJ->VNS%~Dw[in
-"Dž!N.mn'=*eR|U'%ԝa nn?906RZ#6]*5:3=lyQoѕ[x#mvq%h>xU!<,.
-vK F&e C[9#1\1ѽq_uZa.-.6\Z|$~{FfɟZpOϿ/ſ^#QYry
-Y6ij"4
-FSL8!z}jjӫQ?Ghj0M-P, ¢tZh7xWM=|4%M=bzM hEe~|uuCH U-C'Z(9YjFfN_#Дj #5ޘ֢LPČyAB^냫y|]x̞E|9hڗiîl薑GKz̞6Pwϰ?u)sibx=^Iow<7 HQgFA<ah{VQ%MqLF;{rTt!Y#<վys9\ȋu%;DhHqM0}o*;Yӂ7;mT+ A=[y6u/(3šQ2R3Jt݄ykktxEGgohU,'(a2TzǘR6w *fPi-eVoX) r
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 385 0 R /F55 387 0 R /F57 389 0 R /F56 388 0 R /F25 379 0 R /F16 386 0 R /F22 408 0 R /F58 390 0 R /F19 383 0 R /F68 406 0 R /F49 394 0 R /F48 395 0 R /F59 397 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+579 0 obj
+<< /Filter /FlateDecode /Length 4096 >>
+stream
+xɎ%_QGϡeځFyii>9Hb$~H[-I=^=HoO߾},7`wجgnƍؾ~~y83OO8}\
+3xQ( <_ f[pL]nxn,ch{C
+-af܂q$mک Nc.oEE):a<~/p4iA1_Ӥ>,p,Ɓ
+Մ GIc3ť85+Б.yq99%<>3)GTJrB<[$Rb;6HcgDL5Y]TmR]5`v^{eAZ.=wV
+],GX7 zқ Q\rs֎Uprx6eƠPZBBq̒˫!*ľؠr:K{+9 R,<QvJdq1^ * FhILLQaiOBvLA/  2H
+Ό˞#pfQtcDS,Qr1(2HOAh!?ֵ3'FdcBsclcI_Nˑ4"đn}73cKe$ 2 ncc\|؅VnJfPLx%HFo;Џ@ߢ4n&
+P9)JB6쭝 feҏ K]0,Y:Id'zw?x$a|!A_.{%}4y M<@y(ˬG\5=,Z
+(j6$'4SP}|k"28!Hp!4{DMy$PwD+ @Yj
+ze΍P($U'FH8B_ 5ΆcGU9ÜR+Ѩnm[.Zg)뫥?qCR3nJ1=[ZΔ91[ \ou"7ґ%ԫ3%'xsU^8)٤k8sh@fe4 G g>L}I}I:gD֤Kv@^O9?1|N&D~H<ϰ VA m:)RiطF7biluqIJfO%;diPgJ|Bs[dήHja+ jW=Ǯ]LN/ QoE{Og9|h$9oS~vdžh<;{ve+ bm{Ǭ'Y -}ٟG}G`ƿo߶wfW,-ϣF~> mNX~ahPt)آʶu9ԌuA/,e'
+p_FN 7_f5rH:VKE=mW9F[dO>Jr)W {@^ZMp3QGPC͢ ],i,pcG֊iD,MaWɹdڙ˷{qI 1/7
+}?X(*θM5Ou̯MwRRNMZ;)_4qV}G٥0<O% aڦT]aX]MR{J#ƌ }L0w,9]sx:rim>Ʌ`h7
+J]㴽u=N6wr^`KG\rS6pҏ
+m4#pz~lcLpWﺭҴB7uY UǶQV U†R騊U'՝a n->9X#6|RZ#6J]5w:=l2؉
+rK F&e C[9#|)*vڅQg<XmX6KS.ΥŇk9@׻?\0K%Fׂ+ zm8~|e
+|$o
+q?/hLejW뷥ᄤV94%fڦf ,H=EZ\Ek3DdA\DBLveC>]8d8F}lWLhg~t]ʨXm$'w:n}o<y 3*6%xCDS3$ǔzm?3'wxOH'`\5SL;WÅHP{3=OD0Fd{oҝi6}GNǕ>n㭼@Χ6y8ҙ(#FJ()Q3ծݿI7HЋpv ?/+X27XjX}A>|Pi-eV/X) jrx$5Uuv,[8\ժi&-_s5 VGzjXI05.Ўw7M0{!_.6pHJzRHPRf uoj
+Ϫ~~7&et$%Ah̸뎷OtRH415?D=:4[̯mH >HG'.\-/9(TG"WuL΁
endstream
endobj
-571 0 obj
-<< /Type /Page /Contents 572 0 R /Resources 570 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 548 0 R >>
+578 0 obj
+<< /Type /Page /Contents 579 0 R /Resources 577 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 551 0 R >>
endobj
-573 0 obj
-<< /D [ 571 0 R /XYZ 78.37 808.885 null ] >>
+580 0 obj
+<< /D [ 578 0 R /XYZ 78.37 808.885 null ] >>
endobj
-125 0 obj
-<< /D [ 571 0 R /XYZ 79.37 432.887 null ] >>
+129 0 obj
+<< /D [ 578 0 R /XYZ 79.37 432.884 null ] >>
endobj
-570 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F56 384 0 R /F55 383 0 R /F58 386 0 R /F20 382 0 R /F69 402 0 R /F57 385 0 R /F26 404 0 R /F65 387 0 R /F45 390 0 R /F40 391 0 R /F46 392 0 R /F71 415 0 R >> /ProcSet [ /PDF /Text ] >>
+577 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 385 0 R /F56 388 0 R /F55 387 0 R /F58 390 0 R /F16 386 0 R /F68 406 0 R /F57 389 0 R /F22 408 0 R /F64 391 0 R /F49 394 0 R /F48 395 0 R /F50 396 0 R /F70 419 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-581 0 obj
-<< /Filter /FlateDecode /Length 6103 >>
-stream
-x]I%7rxGp_F]j/f`e`N.W4e hUU`|_ &S=?~P#/9?탆C?b^l|Ġ_Q(|zZkA2JQR{'ojvf:jY Sx
-%u94-\3RO`wQ%Ѻo-ݓ[?..ɯ C8DQa>Br"-Kdʅ|xKҫ`4;l+'NmYi/'Omx)ݦ`֒aa`sۖs|B0ZtmWC8l3%*f…
-2 ASn{@ևI]9IŌȳ>3Y X?qqr >>yWk->}njR>{ŕhoЅ~7#v'G
-@hYc)|
-]8>npM@C&Rt'1/aqѪZ&ɌSč@Q{.`S7#OS.v$SVpFN̫qǗ!sᨆ'9ve! lNleZ?1_ڊQܱݍ.)nk~ ,Xj5:dqõ\Av&oy,DZ-n?Yݙ tH~]r1C, /L![3/=͉~_*g]60[=|*t=10w70/꫔m==WVD_#)+\zKNWI(q(/J!CƠHj봟[?k2CQ=hśV٢VrbZAN8Ň8 97Zi\Œ[pS2 *մkK)v{/WάiKhۯYg8=%H!C1}؊鎻lv&$W뗲?!t__aBM_mdw6!kv䄬[6 ݴ:kg=ʌڮ^$70qWB~$؅??aZLH ʍЗŒ}P"nݍ0"vڦl!6.%;uԻf6ykLm7}j(m ܁٧9Iۂz<_TO)m!T_xMśnWrM[ \Mgj4ot\ӛ}h}>ܕy̎GỉNx\u| U tlYaMIRE w|]u#;q>p6791q$}i' :u|}rp4?ǵ-<ea\n IDLޮ#avk-<lSﻗ{*Pߞ~OUE0˹j#tSiC<߸?<#r|Ekcw:jWR_b8_.[էz:5qeO5PgBޅ8r8&yYT.{7(0f,cJώgAQ/A \ؾtS "T.s&t=0'
-nf <Í%IzW3no=7ٛ;n^ck7qs`teQ:e4n8xܼFj7Hqs |ܼh_?n%!$7ڣxf77𞗄.RִƮel6kwfd,3~5PemFN{26IwHf$4ۼ!~%u
-ʁO3|rWNvmXsspyj FW= A=hFH/_hm*ߝ_RVT0:/ʔ^HK:MO[BI 4id]6C(, J .cjȓZ4uOjq*0xA&Qm4T l~ze]2j -M`WlPN 0L
-
-DaQO hr6%SLwGt
-ʗC9>`Oz(tj ]#9fXa($̍"ŐсN*4۹F pv_h rd~FXW*&# `GHc@9Ȋ[EzQ&"[ʚ}i"K@Tߤ! D9!bzasەR`N4*(E+D4Фɲ\Ή3zTLG=# GH c@9Ȋ`aYlHy_р{%HyƗUWeKbjV2CI5VXq&U!KLAIwR}
-37j]eRw6G""2Ǡ݁r 4‹L+mW2-3ݔʡ !Jv@┕}JH!X&%3T$hm3#
-JQNݕ"oJ<" 3Jrn2y4G"A"2Ǩ݁r 4‹LPjeN% ʲJntJezʁQn*E!E<dPsvP*nn#
-"YLz_xf Gz@M?*f͑RC5;CVxa8D&ђZe)Z{f_^FC^E˒p,QU"˰ -bolV?jQ&kR)0,JmW̰{=7ŤĚSZd@#.6'vSj2JF>#%T ?VwU5[*b#.mɔpTd82nWTa](bojM+RiD))EXlsSTehr |.`'J3.,%|&U[u*MlJd,vU%N4>#+T GXJ,d L$D,Tehr}.n'Vz'e\X>JXNTaI:u4*)F\lsU(
-hq|.uGJ.'|,G@XJ,D K$ܸ䉽 qODVbjjG(b&
-bBFզ`Jȑ,,`frAIbs^4,y>JUװx"]1²SZr KQUI TI1"c
+588 0 obj
+<< /Filter /FlateDecode /Length 6107 >>
+stream
+x]I%7rxGp_F]j/f`e`N.W4e hUU`|_ &S=?~P#/9?탆C?b^l|Ġ_Q(|zZkA2JQR{'ojvf:jY Sx
+!`< TG;$}J"$fH7B¥% \`4"7E|sY>s\b>u7.l7.P w dʍ8ٴ]kmkHćvKpqOց?Y~)]It>gÈfv<Йɝv(zdP5L@WY4۔*uV]rʐY|3Z{{F\BIUeTR,R aPVJzS)G}*/lpgYkf`GG(岘GJ/ž?"\.TNђcd[ۺ02ﶉƮ1oM"o zm!e+P=>MWKr'^̸'.+.L/YjlpRSbnDhk5)6@-x6 apW`<9 UvQ26=_DeCy}EJzjƚ54s-6v7!pT[z? 8XP7)`t.@wI]I'M[f߆'T0;Ϩh?ɭt@WW]x}^Y] ߨ@\!9{jV \Fc2M
+OfB>v<%U0iu ·Ͷ9Y\ߴ]~eFzؔ KPnS0k0R̰q[0C9m˹ŇM>[Wb}f|!l3u )rϽq ä.Oq$bF^RFk~YhWG,8C9R<z֫M ֖LgcF)լQ\h+1]xw?=iw| Ԫ<-+UO>§9 pRP"G#d򢃞e44'xs/3/Υbn7n'vݫ!`('z\jI2q#P"tv '&b4ӄ~lTI,ƃ6S0*vCa8I]
+
+5^mU
+a1J<cȐ1(RkZ:gڬPTO}$E~&}Vp!*mDͺVxW0c'lL|J5-)$#gżS^3EyR,%dVw@DO RG h㮴(-3-wX0~T_ʪj8w
+gн~~ E"46~q܁ڄّnY$tj07묁beNW+!?SYܰ͟N-f  ʍЗŒ}P"nݍ0"vڦ6.%;uԻ>6ykL7v|j(m ܁٧9I}z<_;TO)T_xśnWr[ \MwgᇶtðKF[6i5cv<T=jMgNt:s>nZc
+g>OҗZ.:gs-G>⮋܉pܟq)a_s'K;]m\|s[>9m) p7Ljմ&bvꈰxݚqf9[TeGE-
+TƷSU[=re%']SpgK{ywu;%ٿqkzyF>Mv{#uPGJ8)7࠼$r L$0ڨ>50nn@.̸~ά-q78.đ3uΞ0K
+SFf<ټ(ds4L7Hd3vlnPK$+7bm7Ԟ71և90v:n2KѨv27we<n^# G9v>n7jJ_\BKBo<YxKB)kcײYf}e5;l32vm{?c~26#e=Geu;l3vmhEҺKB[AA+pA$jxo.>8Cȁ9{r*w~7w h甪V *-MVnOJ*r;*bƎܦyަa}.vBUyOt:'pMgK 'Kg_+'6Q y,_JW~B8<y.GW= A=hFH/_hm*ߝ_RVT0:/ʔ^HK:MO[BI 4id]6C(, J .cjȓZ4uOjq*0xA&Qm4T l~ze]2j -M`WlPN 0L
+#S  ?:,GCI%!&=ݐ)IԢL^B#_c5^N[ Dd"I %$ŲXflLkt h`4@*Gcқ,fd2BI !pbYOh2 %PGt
+j- !>Y@ $n -t &0́2=dG rZ!LBv2D?5'$$d6JBfK6+a2^Ӓ)_4,opEn/H.q5!jkIj\=͙r3]<nc@c3N(8(@NR`4~-#5pE#<ԯ*daM5BhCff=G
+-6XNt=iG"I_%j1>4S0TsFH ZcԪ#E [[EnQACrt(I@N͠Aq$!,둓2 BC25:pCIE€V`;7Ҩ`UK 0O#lOhkJŤ{ģ9!)!s!YQ@s+H0D|KY/x@bc JԂ!=c`4'DLv<lPsvP* 4F@w0Y9~Cy[`gs$)!s!YQ,R#L2 >m)K;yDIr:],{15R9BLJf;F
++yؤ
+/#GD0ZR,Es{h+}YreC5:*SZd=EmJPG:dM*5F4=!X~~&XsJ,b&>5>nJMFȧ"u]1BPnזf@%S,bE>-nꀲ[@>'X튙* TTQ)U{E*-H2%1|nz` MD Vtbƅ%ujNI \I1"c
+V$eYR$1 Zd G*&7
+Vb& KRI֙#YT措ML5d,vU%N4>+~^qǭO7@B}g֩M =$N^ЎRG{2_0C#nb+Y`6*m.AF~Kyy¤:k4/f<kmE_pz[JoR!mh0gW5[oWI ز׏8_i>Un_ۡbٹ3SNO |R8~eCyh
+cî|P98<%=r9VT߀Mn^hǏxċ]>rG6BD Oh
+=]3Eō&5KAW5iM2tttjNJonbn 0Fy_9-
endstream
endobj
-580 0 obj
-<< /Type /Page /Contents 581 0 R /Resources 579 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 548 0 R /Annots 583 0 R >>
+587 0 obj
+<< /Type /Page /Contents 588 0 R /Resources 586 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 551 0 R /Annots 590 0 R >>
endobj
-583 0 obj
-[ 574 0 R 575 0 R 576 0 R 577 0 R ]
+590 0 obj
+[ 581 0 R 582 0 R 583 0 R 584 0 R ]
endobj
-574 0 obj
+581 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 222.812 543.437 234.767 554.386 ]/A << /S /GoTo /D (subsubsection.15.1.2) >> >>
endobj
-575 0 obj
+582 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 242.658 507.571 257.383 518.411 ]/A << /S /GoTo /D (subsection.8.2) >> >>
endobj
-576 0 obj
+583 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 273.104 507.571 285.059 518.411 ]/A << /S /GoTo /D (subsection.8.2) >> >>
endobj
-577 0 obj
+584 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 350.065 151.966 362.02 162.806 ]/A << /S /GoTo /D (section.10) >> >>
endobj
-582 0 obj
-<< /D [ 580 0 R /XYZ 78.37 808.885 null ] >>
+589 0 obj
+<< /D [ 587 0 R /XYZ 78.37 808.885 null ] >>
endobj
-129 0 obj
-<< /D [ 580 0 R /XYZ 79.37 432.717 null ] >>
+133 0 obj
+<< /D [ 587 0 R /XYZ 79.37 432.717 null ] >>
endobj
-579 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F55 383 0 R /F56 384 0 R /F69 402 0 R /F20 382 0 R /F29 375 0 R /F23 379 0 R /F51 380 0 R >> /ProcSet [ /PDF /Text ] >>
+586 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 385 0 R /F55 387 0 R /F56 388 0 R /F68 406 0 R /F16 386 0 R /F25 379 0 R /F19 383 0 R /F17 384 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-590 0 obj
-<< /Filter /FlateDecode /Length 6715 >>
-stream
-x]K$7rϯt(o&S;  h/>A棲z[{+:#`f狾|A_| r_/\ʦtI(/<iǫ]F똵vVkg'wX~ihFfڗf6¿/?}zc5wk=֒m}vbmm՗.B)}^zoU=H!D:9Βyp%T
-ZXX vjS\
-DXݔ`'v]w/cBqԬXsj,۫$}d/s`Ag3rT͚[\Hf7w\W"X_v1YaIǜTr3g`YFXskI?d:heέuU{I P?d32=葾ڶͲN{^Xlٻ.Lr)̊18>:
-ؼdžZd,K&B_jC+8ݺ^25݈; ?,6YɃV]ꪬ(P?G!S4Ї"&@8~nJKqޘ#t0 1?,*ơV3nre9t<sTry3]*77FTHqEHqy3bMe )耸N큑QgsTS[[*3*ڝXv%xҞ6"Y6[UO0|LoMCkX J JֳK؈ԅHt7Yckgj[iex(?uU3L*9=6[wWJehis騂1{ cu^$Ip"vgVz؋<)pprN32<<L:FG^\$Uy* ٪᳜UdW &ĸ:/^EִtRӇ[R۝;j]:15U47#l=5~3m-h:&}l'8oGq׶tWQNjpaE3#ھ[:ܞNg^,<Wpjga~Y-:)HX[>ЕAx*Jhq,PJ[xnXܜW<{Tx ^YWG&y/<cpf<C \ᠷ](N^H,r+"V9-ߥosCTNͥf[*a' 鲯rDEm[dkWFqx*"lB+a ʶl<Chn On6d_C=l/1A/CYxppkU0NW=W}Ah#ޞ
-; ,|{=${{ĮNJV-~decA>[ ́<ZN BO xmtg
-dZ\>?yߨ嗵o=TKP޶x˶
-@oj8o|"B8T6/~
-u6PNhwwRT7׆ԆG]y;$!^1Û/2>i[E>!^y_qW6^0C>:mJQˉ%*-UȠ^i8o7rv*R{rtoye]">uoJ-i2Ѻт>6Z X5+㬳d޺Xcm]f&@Q5ddslNbӋ4`zG6
-UCgz{AI0Q~ V
-O,OQ64v&þG2H`wH64]qB! N6d& 0HP42(69nGV#Hafc\0qQ4# YdAWI sFy_iH>a&꽎hp$1%` Hues^ ַY2 g3HQaM=%$=|>aXH6$UY`8|(M*ف$4`7hH*v\aC;|C Dc%M!
-v’p:žz'Q&2Khdh׹`˸)`ȒL[>DX֒ ,Tb &Hed&QO'+8hF&&Ya$f(`_2uN &HEŁDŽ9]uTAG+(IE=I#ؕL7 hB)c*z:}q@;CrAY %!"d=%ԡL(B
- deN Ih!24"IK:
-o9W8b!:`0]%6D "Ϙk];-I rABA+z+
-`hnY6)n
-@,N*{]a &($%ı5Hb1KĐ{R+#l fkvh%^H!Y?U.!"!cz!HQVXa9q"JIN^CbTAI'R C^%'ֈ!1v]Ҳ#$Q62`C\ Ҧ/n$!DdR'+
-`hnƊAʧҎ_#&UFq6z(V#K/R؁1KJZ9ڌ"L2F]["`z7%Xj`"X~H )abv'u7B~@fHI qHAƊ͚I## ]EZFE,Y"XŽ^U
-^bDŜd
-
-rl5(e I";T 7YSAkS:Q%݁qa(c7QժN+SiOMB#nCVH\ɎtP}w ` Y"tTm4)e ȄIb@.&vbk1""R2DRWiRYR$3dR\`)/`buTm54)eL I/zT GYUA+s<QqjSrb
- Xu(e))F\lsSd8lqF>W#'T1;0*A%¢vlJUR$@K97OD bd
-+S͑*,vfA!bA94R\AޛwG{2jcRr^|^tay{0\v獗{W"s} ;/&utc0O}qk#+pxk
-as"F6-ssD{)BWuje7GoqHiNĦ?Ճ4xW ߊ,9F2++"9vޖͰW!diz7'
-t)v<A e6 8jNNޓe䳝fu3^pQ94o&;+{ o5엧^j}a:oq#=5>Q2\Yvi"@H3erniuѬ.֌OvVz9r]4dVE2ʳ9K)eq
-JQ
-00s^_jXnU/P+xkE[} ]hysOĔf:Ʃ~cu;y=}K:?Iht='ü]m:5ݴ/V^ť V
-PTOcY/ KnSߞ#m&ywԸ(:#o&o^齉 v/B<!X()(l;ᵵ yn!&
+597 0 obj
+<< /Filter /FlateDecode /Length 6652 >>
+stream
+x]I%7rxGPi hKE `Ȑ xd@swp̽9H]/*Hz>wݿjK&ǧ_izVn11>bЋ
+ǟ+݇'ZF)gwoP.5J0P3PsQ~^"}xrtiJQƵ9*R;kdQ'ǕCTA>Mc elD0}XA26?‡p/Ny!ꣶYXZ>)TQF%K+Wae\^
+8@NmG٩Y2(ivQ}٨ƾmrn}Dohۚ9>;O88];0{q!5FAL?XQ񺏣-v1`T)b83 ♉p5iLfԹo?Kn4ڶmv+k$$8tgXPk5UJ,YGӪzO1'}g,ζc
+="6 g]OzIpxf=>CEWS}2SW\7檔qvu(՞n6OKpnk~{,Jׇ$
+N6"႓7%8[)8/·QN}zXW[_-hqpF}֐; rWq]EVOrON$Ymh
+̘QM㔽蝒ޭnzͫy#7j_ \O`;=nmE7J>kT}4 7q=` $V9NO\F(l쒽$~&].+W^#tYԶGqe%YVi
+|
+dx8
+~ z~Vݷ쌛/ !Fjovi@'0HiKQ/N[υ5I]
+?
+iO{l4X`-]_
+̪v3bf0g첐Ѵ&T*hhE?5 4ÍYYF? ]Z67扮LJ/ʃ[b{:,(aǺp5Ju;QJ<J>_mY"7(5 vv%(\njԀy? J] c 0J GGs(Ν4P=Z.?u
+{ꒅ>_KY㾃Xw#bg.y%_ o`.y%//]کK4L5v7LKOί牾;a] Evh+]Ga(; E}Md(cFh<hCua]߈xu/>}ewX_n[c]ߊkuc]-
+sKP/Fg+wsyXN_v<v7l_{`oXjZ<YwbEY6|fEYq~BbC%픾xBu >D}?SX|F$ Cx$;)Ի|dj=}(#|N2V,͙ 6@ P6/k*YAq_ils=Y9N"&DSJvIe3̎4lI ǓQ%ENpZ@pR0h ?l4{)OZ!(;e64f-x=ȴ#^ꇤ;CRvD/G‰`7䆍HV4((Hi\ÞY+|rtҴc$c0R\#YG`:D xͰa4#06e p3~%0@SNr6DYͣHչGtV^#<, F$+C'WmQB5RA
+ ": *_jJ94&+Hg 4~9.bP3!8vk8ui
+jtfBɛ$Ap&=(O4 dBIh^J2[mNghDd"L$IHi-ȠB8U]!6 Kg&R'}*8(F&Ԙ$IL!Pd0/ L߰T_\x ShEUG&ZttԃJ8Sp<
+aDH"ATUbBInmpHql*W}1Ɋ )k0x*E~4HL al+:`B10 Ͷ"0B&abq
+Fa<#JTV"%2!K* BkvBk2ZED
+n~*GXY[M+EJC5]B$/fP EU؃WU VdW|!'XJ&dE<)98[>W#&T1aTJ
+FÊ${t
+Zӗղȕ?n1$v4A=:ϵ_Ajey.
+dҴ/]2frv;R;TeB;{gJ
endstream
endobj
-589 0 obj
-<< /Type /Page /Contents 590 0 R /Resources 588 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 548 0 R /Annots 592 0 R >>
+596 0 obj
+<< /Type /Page /Contents 597 0 R /Resources 595 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 551 0 R /Annots 599 0 R >>
endobj
-592 0 obj
-[ 584 0 R 585 0 R 586 0 R 578 0 R ]
+599 0 obj
+[ 591 0 R 592 0 R 593 0 R 585 0 R ]
endobj
-584 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 297.669 666.568 309.624 678.524 ]/A << /S /GoTo /D (subsection.14.8) >> >>
+591 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 297.669 665.918 309.624 677.873 ]/A << /S /GoTo /D (subsection.14.8) >> >>
endobj
-585 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 156.581 182.934 168.536 194.889 ]/A << /S /GoTo /D (subsubsection.5.3.5) >> >>
+592 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 156.581 210.286 168.536 222.241 ]/A << /S /GoTo /D (subsubsection.5.3.5) >> >>
endobj
-586 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 378.058 119.607 390.013 131.562 ]/A << /S /GoTo /D (section.8) >> >>
+593 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 378.058 146.525 390.013 158.481 ]/A << /S /GoTo /D (section.8) >> >>
endobj
-578 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 297.743 67.03 308.2 78.488 ]/A << /S /GoTo /D (subsection.12.2) >> >>
+585 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 297.743 93.889 308.2 105.346 ]/A << /S /GoTo /D (subsection.12.2) >> >>
endobj
-591 0 obj
-<< /D [ 589 0 R /XYZ 78.37 808.885 null ] >>
+598 0 obj
+<< /D [ 596 0 R /XYZ 78.37 808.885 null ] >>
endobj
-588 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F56 384 0 R /F58 386 0 R /F55 383 0 R /F66 388 0 R /F65 387 0 R /F29 375 0 R /F23 379 0 R /F51 380 0 R /F57 385 0 R /F45 390 0 R /F40 391 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
+595 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 385 0 R /F56 388 0 R /F58 390 0 R /F55 387 0 R /F65 392 0 R /F64 391 0 R /F25 379 0 R /F19 383 0 R /F17 384 0 R /F57 389 0 R /F49 394 0 R /F48 395 0 R /F59 397 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-597 0 obj
-<< /Filter /FlateDecode /Length 11689 >>
-stream
-x}ˎ,徾""]7(T
-fkqսj@3fvH%4
-Ⱥ'̍va ?n˿_o>\ۑ}?nK1Jv۞O?}]/z=n:jF&W>a~GWlwkFؚdU}dDJbV!H|O+8p\y9Ρ>SD U<_ܿ+&?H>EWZ*31G\rC۴8}jߤ
-npdc9UxlnRUV̇q8 ,H/=z $Qe>I]ܵ)q(Q}ά*8kH{ F_EAꋩc^u!-)jp6sqTB[3~1[bf>u쇷q%ޕmZ71_VBXYp#v~ .My[*y(ʐ'Uh侜ޅ-ǸzNiRhc[<3z<89uisG"Hn5!Y+S6|bg9PnI^zsh
-e? I5lW}x |ֻ jlZ/-P9, #͖qîXܬWKw|;ߺޱ _^yqA#Cū]Nq_[C5on^[GM7-S°FCeYj:KvX\_VR*OԱ_,쐶4|TsT\ުwW߿V~^\>ufGWhx*8?R'ځvБ8%sң
-2 B%PMY[(}Co^84m$'gpkL<co?ܺ/[OƢkk65
-ftTc0=iyn9Sb}DbrC微.쟊OZ(utBAy-"),tzDF8= Ho[X3\ccw/axnŴH~[2oӳtNje4<2ŠGUmq+xv/6OrvժW}6ϕv[o8q(1fjɮ<:.nH<Yؑg) gGW<id= 4;̹^ q8k'3VGzex~ކ)7OȲ6#Kۨ 4]GVf^x"]hX <H-z\yT&{]|VUy uJ4iK<OrDS\)Q/~<|J2X}
-{^wͣ ߨ,ww/?3< g:WOԧugSzGofX+=s]oHG|crfE5F&z.򵅧*&4BEJCIcCX"u!L~'*[u4?}[:pPG?oanGu7s*Ylo`6[4@,BsFh׫1q=#w94RUk"J<X%*W [!ʷ#\y"խPkvVQ뭆QoaK<]'"6UR{~|-L0g*QsEJG楀s_:?%T
-boyl5/q7ME'Vϛ0J&jVʙ gddF6iif/l4`gKԉg5ku߶oI߷̚џ;\?ATvz.8 M o1`s"M*q\?d_Ba9 LʵNT NT LMPZB1{+'qD]xIc藾ٵ}dS}ͮ]|HI7]+3՚X"Qq^xnZ^z\k~ x%Z]R_JR"\䅖^1DM3:lXNVTA]LS,Uq r+_./4YRqB9 %SA)˝gi҆*!(WY3TΥC֊R ͠4H
-d!hOX@,`ዻU;PbjE!xhqkB6h8X;z<~e;%l
-0w''y.n)A^ s -͝ 4h +Az.4 MO?DA&Q̂W+UK2O^K RwoLYg%NAGpP f&*%JW$ zXI4\'_
-B'Q͡Ds 4VФ qw"JsGc?Nh"X]
-;oML5S;˓6Pa`dF͔:Q=)s +
-Cs=,
- jκDnCa0EPh [ٞTzrSJVqLbجd:O. ѬiaXa eS#d.ORSnP]ul lTZCaxS*Mb֭آ"Eqy}Zxg E*01U~f&ӡҰ^,Գ c4
-sG,#,(?vP:0LfqPY;YHiXgAC%g'y RuB (͒\ph ;slG X{.fnX}[*P>)t%" L <'Ԉ3C*ج*{pi> Ept8&"? T`Rhj<=Uhz| 'uWbޟr+eDU?iE4,ehQ
- [iu80ey:,UxxUl L<4LJu"8T'Jlj25r~ UQ[_{KyO+ibxl MD2@hDfA8t+n*9s$7.0RYn&GQO+8$%e=`6N0Λń#PO'H [4?j33;oESWHBvy$@|Lb{VSraCKjrzSq -H *Т۷BEɊHBSM|8o
-0aN E3222]nP\!WLBec/G UQh
-J-r\hmkGffi:GxxiЂQWI5U}4k̹#4brZ#~fHu.7FR
-M&;T3P ,)YRk"@q@)+I;Jϙ+  sw;A2 ;Njb>É. ǎyjaxP4~28?yD.7o{%w>aEKjg\ݙLp.=m.l34R65e.;Z
-`-XiԬin#Bq@U7{a -1)p/HH?
-I$w?M.|o_򲹽\TQX=jp)M;P\
-^ວr" (]=x Mpy}Am[S_޸;tKGD!iGvK yK@q@=ϻ,_{#63!
-5M44<
-veŞ'),1Mls»@ F a)4fDnN,E`};I`iZxq%((8SDAaW+HCW7'2a;E=GDގke4Cʨbiҕvl(*&PEc39y0xDŽ!^˷L 2N5jߨ{Y:m0BMM4~si3f%fm9*! 7S+?]LfFBz] KiP/u\hk[(lX@#qg+UIW#hC}T8 o* /mz^uT;Nhh4݉NM^+swR6֑7 Ta dW]ud :;%Ţ8 vbkЉOPs'6*D fKԹgToU|F2
-qe|I x;Qaiӑr2n|b#7IBIdXy)N!)k+
-BW7Ä de`/n"Q@ BEa-wRFCAA|-<EgWP-2¼Sx@;zh&w
-2
-ugI P pw+Ső ?x 8~l=C=#aͻw=>r)F9ՎgJX=@Oy%!:N3j}'bF^_D̸󲍠Gg0{j"閯X*? +rUVֿ1mVa$zf y'r6|D+=}X1SnjL &QUt_?WLg2ʽzxZ͖6.NOu{Uk~Zj1jm/uDWՃѕ^QzҼP>;AiŖGri2b38=O;DixH7~ͫ_:ܩ_f׮;Qrܜ۸wjW٥g~Q_˻_r=.+N:>/VY/͍|(={\>L1kHt`МʔF#aX@jl)~/ұkV09
-P_[6sqS >F dzijqI{ e}c
- :i og>s{Thd24{ODޑkQMP6gH2iKhGo;fePyIЀ/你mإ
-
-jjްT`6+EptnJ{@-{J L̀pu
-жP}Nۣkj19$ \fG'_"RRQ8xPtd  ;Q݈4|FQI^B'%7ʼGec+<*bΔXpf݉mDTץ;􁲸e,4`f~"$ C[-tEbC;$V x4|^n[]}.םPc( o$ ,&LZ(gKܝw4XA%,7QeJoX l4aF"JI@:3Z褌Kܝ24?2;>OdQK[:Y@uAC)W+E(KYN>g9D\xo=ct DdmaXSJI@:3Z褌Kܝ2T5Fk͇pvRpn[d= m4]"KFn7VыGbSˉM#dhd3u<H u؛uQw60i;1(l TC$3ܝi"Bi \E$Tj`e"i`LuX< uHEy60i;/(l TC$3ܝi" }`!%c)rIg4a]":!<GoeN%L{gAt4|
-8onO]-ymzQ;Xsڢq+swt/bb;J}R_U>Ƌ5Oz xm{ނ {Xx5e/Onm;z}ZvY7?y}6K*;B%SA_z_m٥]Ֆf7?fbI}'s~06xIզ-ƺ{&·,|5pvR?=m+-O.3O.KZ
- Z?/
-ML5; g~m}Xh{FL4zrr?, Dpcu9E WsD/g4gJťmzRJ\0X٨GK$u[%oTWRKąIj
-rW*ؖ;jRI:C5
-EFk`]p@N\b+( uLGZ҂3Ce`NTWah+) V.4`m&툇;]*iJ \ab{Zc+4(o|`V{͇yh ksP/w=|e>T sy"}Z Ǹ9+!X&_li20)}σ{|<[2S).OZ*as
-0%`jdekNeAbelP8;0BtIN)+. P pw滪\:.WWM{(k E򉟉 4ބP+@w
-NkȚ3݇E]j8>;@E3Z$[ڱJƄ6"< +ܬL$}\3Xwl2*s\TF3A|-<8^p̯
-N;0g¡.pί5;Gko
-ʹߋ@y
-ȩm!Bi2hEϣ=;@E3Z$y[ځJTW#8Rqv4
-_8ug\TC|@^%B$zyؑBեY̳]U O=B&Fg)vFCA cLS^px~3O+WjnX8op6MT^4I޵bBA+u1KYx4k=+lg1S
-`e.E
-`R&
-_$# JsMgtB0yzDDXIKH s^gx?d|F27@KBG@#TZ6JdApAw+e1xҔk>ӄٴ&%bJ \
-(0ؘ3uH"9XhI%s_4S oJE,>0meNCf-4/
- L546L|,,>*$G/:<Me. 6^R[ᨓ ;^''?)MN2MuB t2؈KoNwA|,H
-V>wէ[ tu!T¥ϽRzSWGOVn"xJԨCQNN.DE*tg_mcW}I[?zӲ$'YurFru|or/a1q! U3IiVŤq0([{Z»<uv~x|,Zm;s)~gk-w{j×LJ7\w&ԁ)̸ަ#;u8!^̾{mމr҃{xqMTa:Kzf)Xv1=.;L*R#DuRw|t#oޡI-*+yje@Od[\_?x|Ƹ:z$E|2K)7 ©f/
-ϯ~[T܊ѲZ MFGyrϧ޳x>M
-Zcg!I
+604 0 obj
+<< /Filter /FlateDecode /Length 11692 >>
+stream
+x}M$EC8@Sܴ`Za{
+j*_=ѝ?|/w؎sbӭd߾ߗO׋KYC;}odB?~c;iؾӿ+[g޻5w_ldU}dvC
+ ?rQfrQ{bMPzKdRG_>ROѕJ#W^#WrmZn>HoRSSfk7x챜*L<6g)*
++øY-H/=z $Qe>I]ܵ)q(Q~ά*8kH{ F_EAꋩc^u!-)jp6sqTB[3~1[bf>u쇷q%ޕmZ'ۘ/~+!,c?~7b?<n-z^xeH*J[4r_NmaO–c\=4)Z1-hE Kr#iRx$rF)|zsq 1{[(%ar9 m2Uކ$ݚW>dQC~ֻ jlZ/-P9, #͖qîXܬWKw|;ߺޱ _^yqA#Cū]Nq_[C5on^[GM7-S°FCeYj:KvX\_VR*OԱ_,쐶4|TsT\ުwW_+?S/y.:3ã+4<tQ QyRşmyL Sog)yXI;H9Q`
+3iͭQd,zn?piK]0_#5x
+bC3)w/*-+hw fS2`KE~Y=A0w9y<U LOhZ޴[4APu;(bq ~P9aȡe- ]^~#U#t7ޭzu1u;0a<7 b~wjyW
+/[uîDw2]bC >'OD1~Uk܊>ip݋S9g]UG.s#L^z-'N^e6Lm<ٕGZ| ';l=Js' ffq|"#>}td*\lP0\|yB~Q YfdirUt`7*׌Ы=[ kR`pbxxq?;>)$ү=.<~*H콮^VUy uJx%~D7rDS\)Q/~<|J/Wu'dJ#36c
+gGF~P6QYq=p;_~gݏyUoivg_՟hO(oOM/|vV+}=s>S.SH7z#>Ar25Bά(rw$PMT؄FHYyh3xlB}KN;^1~ɏUG/ڏzw5QS u}nfvTw{:_fn#l=(%Yhb( }1qY;0nBoV.RAJJҺbMDg˵$\*a 4W^1R]qO5W+R
+YfgjETun/ri^(WGbtoh V]bLe>VvH@(ڼ|uNԱV$
+bZRlVr~},OUFXLX??P2V+<7@4OR\(?5{'%H6zIolkbFY
+=[N$<_jm*%fuo 5t~}v]p.^)' bh*AD_T(&e*T\[T LT NTd
+u*'b{bؘHplޅ'4֍~]7&_6kǥov;EM
+9z\.y?K3etsobZOu-k?.iRBRj1"/m!j)MԹĜfܞfw
+bǥ
+ ep`KGxf$+]B% ԣ2Jz1
+4+1S;KCRӤ /UCQ@6f4݉IK!\чAWi LʀQ~M2BОꑱH&Yw',w`ՊC(=
+lfmpFw
+rgyVwT K*؎1CaN|O\
+AݮS\ѝZ;A&iЬFW']h@@L/V"#e~}˥#K5A] K APۏDA&AL7W+UKo;g9T(I#HB` $hֹNNCTiҁVI0Dv
+4~D~v޼ԙ ktP/w'mաR:#Ȭ)uuzRZc ·=W5zYA)ԊuC=`, q=is Ę%N[Yt\K5Y^. 6F\J|e;BwSMhQ
+ =H
+^tMH{Nu4ZbNfYkA</9'8#|TLKzX>Pf
+V4ԩjN 2afB\ҋ$!ȼD,TIP* (T(A01Cemrgy#(Oۧq`Qh [҂H 7<4Kr SY3T^,ϱ7lbcl?hLBе8/E"yNg.TWUY%0U0)}qLJE~tx˕I{tN@?NSWlLMsX/}?iE4,ehQ
+ [iu80<\Ey_*<*6J\&:PeJlj25r~ UI[?|VLAZ׉dj(63,f͂p&WdU(MsH
+ O'"kelNQ}.\(s}+R1Q#( 4KFvp%9T4d~᭾8i}"c푙pN,$/ Z0*s>Jf9wFLNkگ<b %(]
+L5 X@ -s6U
+BS'Xh#DP [_,"ܷ;+! ^踰:̏WUȨ=m"1Pog"
+/!}(D4V^RP< J\Q>Ns'8j^[/hw^2
+hlbOH
+Rm"vhK!a{)(lԛBAM4~sit xE(uYT*mnt
++Q**6k&Ef6#zqsf)3t
+5M44͉-Ч{EF;bOC?~9 EQeބ hdf3W7'"Q0}t4{-EӸYBylwp )0QOgXXbE0BLǞB"PoÀiX2!eTS14J;D@EzZ(Ȣш_x<ZI
+6[&&F9P~ uf} 3X.L3L#B!^gRcK*|;1+Hz|fgJU8q2<iÛJB6~)ƀW
+HA[|kG
+?T}hipʑz ~z0ݎr)F9ՎgJX=@O$!:N3i'bF^_D̸󲍠Gg0{j"閯X*? +rUVֿ1mVa$zf y76ç6|D+=}X)o5?1SúI(}*
+:Խ݂窵X?Wm~?\KyGt.x6DԶ4o%or4b ZbX4FTǞv4<?U//}kӝ 9nm\k;+3/u/ꕿlHiaaqVKs#Jχ?^2Oģ*S گ=]v|.<?4g2(?7s> h8"CC_4<ӯ" ++fn#{PĬSs@/(ڂ/6-LI 4qު%m5nt2V
+j3u)[tmxhCb@3a`fN
+4bvBٜ "Nʤ-ţmWi,XSACe'e@~_{A#M۰KlOTܝ[x2u\)`TGKjy؛jXjwO+;ŰIA'E%|0Ս֋
+}QNTR# Yݬ b"X4 ttZz;OF'WRHbnV2 +S`uݡ>SNO
+825(5ӸՉ"5m-M>PaW,l0UW`W ԕZ"qd%#mU56R/EGkj19$ \fG'_"RRQ8xPtd  ;Q݈4|FQI^B'eV2f1Mf
+&O :3%l2/qwj)hsdx"},nm$ p9b{CddTx3cNHlh'R4Fm…?s e!0S~2㍤ar5Ĝ)]+exUyqNANXxTPyQIFf4.r T3#Nhph݉(NM-
+~DhkQwNVG-Pu
+}(t( wg@2ƸP&2qpI`4=""!<XGneH$)xg-t{
+y(D( wg "CXHXe\tMeGNbQ[٨E Ff;^Y @^Y'g62̛0bA"P vf&
+OHڙ5>@v\f׮%K_lM/\0g\X.X:~Ev/^.L]sk<9:?>
+sğ$?/i(TgA팶4sFw
+FuK D\(oV q%m)!,S>'\3 X^tA&5"33j%pIxZDh օO* 4T P]htq(-83TDuP]h"I)N!\OhҎxӥV..
+KԬL]MNCz8Q[v\R6ns6ns6ecH\ͱbSu%bVC4i*¬uw"r)ɒ9ٗC ё&;ͦ\̻,@5DrݙΚs$~>M$_4\ '~&&B=hm*JiwFak_/oYzh8h@ƄHv{|R{ :ehe<F
+̆9X@&)k+
+]' kA>(
+1
+_'$U?-MӁ޳RϦ}.3
+TCcc"BJr~$/#T1`e.:Y`8Șur2xKN$Sٴ<P'@'TV8a!Qy"$`QjLdN:@KCL'TZ6ʤ101og˔eRz3X4fƿ'ub:}]ewݽc'2/wي϶WsOwZ6c{S<^w{]TY{!2%O9ǻ+?ޝ<@LQg7nfM
+4R~n핦k V8[;h<`{>Ij_ﳇ5;kÛp; CjRf\goQwyvr/cf߽MuaD9=|[J8&_CS#=Uz ;s1=.;L*R#DuRw|t#oѾI-*+yje@Od[\_?x|Ƹ:zFޝdRn܋S͌__K-J]թte]{'HӰQ:Ow6&n4lRXXjJ
endstream
endobj
-596 0 obj
-<< /Type /Page /Contents 597 0 R /Resources 595 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 548 0 R /Annots 600 0 R >>
+603 0 obj
+<< /Type /Page /Contents 604 0 R /Resources 602 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 551 0 R /Annots 607 0 R >>
endobj
-600 0 obj
-[ 587 0 R 593 0 R 594 0 R ]
+607 0 obj
+[ 594 0 R 600 0 R 601 0 R ]
endobj
-587 0 obj
+594 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 158.992 722.266 170.947 733.106 ]/A << /S /GoTo /D (subsection.12.2) >> >>
endobj
-593 0 obj
+600 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 337.833 111.814 348.29 123.493 ]/A << /S /GoTo /D (subsection.17.2) >> >>
endobj
-594 0 obj
+601 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 252.903 92.662 263.36 104.119 ]/A << /S /GoTo /D (subsection.10.5) >> >>
endobj
-598 0 obj
-<< /D [ 596 0 R /XYZ 78.37 808.885 null ] >>
+605 0 obj
+<< /D [ 603 0 R /XYZ 78.37 808.885 null ] >>
endobj
-133 0 obj
-<< /D [ 596 0 R /XYZ 79.37 695.352 null ] >>
+137 0 obj
+<< /D [ 603 0 R /XYZ 79.37 695.352 null ] >>
endobj
-595 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F56 384 0 R /F69 402 0 R /F55 383 0 R /F58 386 0 R /F29 375 0 R /F23 379 0 R /F51 380 0 R /F52 376 0 R /F20 382 0 R /F45 390 0 R /F40 391 0 R /F59 393 0 R /F46 392 0 R /F79 599 0 R >> /ProcSet [ /PDF /Text ] >>
+602 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 385 0 R /F56 388 0 R /F68 406 0 R /F55 387 0 R /F58 390 0 R /F25 379 0 R /F19 383 0 R /F17 384 0 R /F20 380 0 R /F16 386 0 R /F49 394 0 R /F48 395 0 R /F59 397 0 R /F50 396 0 R /F79 606 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-604 0 obj
-<< /Filter /FlateDecode /Length 11911 >>
-stream
-x}ϓ%7n]ECɍ^ELOa&<7Oژ=_ I
-_SsOԎɍ{m[>֐/:><RgT۳}kn->τ<ٷ[eysӃow螪Ĵ\J6h[sᮊ/[ 龊R C?V*Qrj*/?__|9+^^^^r{"O,|WS~ml?Ko^J/%-67oP탪;H٢MocÊ?͹Kþ=J?F8ƿZ?~/rig^ehѫhR)ee 4< "7=D>jlCQWdҤRӳ'.xڥSX~hby4
-N
-LW0_t~yZM?%Od<5eծl;%9WthlqWpVi IJ=w|<:9:_~Z-xzXRr44PTcBݧYУzZH s4$]}"s't "\8UnzHkIs Np/%CQQ ~%֓ـЃ?ͤj@t4;sPKVE4c
-d":T3D+2PEDayFU4̝\p6xfx'jV¾;tSD398P9I3=&0B5"K:M,xO&m&||#-<M~8hj3{(8yL݇:l@j=L@8Ǹ>s4pЁ4r/ΊliRfdBŮ.ufMlT<c?qR8#@[{ ŵKJsG]Ӑ8ej*z M[8OS5p~:a3)ɤ]
-THH,SFejmڜFvRWP mЀlaڦFjj #:>5 @/51jz[CKL,a 'RfL`43I[C$.B-Lj숹5Dm⵩tX l&aXHLZxM<Q%}Y,oaїz)yP ,HSUjH#/m#4uJo5uPq6$*`JՈKad(@m US* IaJc-mc2uL
-L19їELJGd4v12U sg+;k̕rl.aD M{l[p"꺼'&U_QsCs תLJ|sJT܅vE4 #"ҁD5
-=
-EvASTfw`K Z*x8N%#jK( =4e7aWieFeX2ċz4
-<\Es 2nLx̜vs;  n[a
-ȡm)D®e
-фD>Q́QQsY۝QQ0k+X o]K8)L/~ iV,5P9ì"9* 5w+
-GMP` 8hxKL$KY<'O&6`fR[)F
-)G<=GSsBsu~Ǝ=8m6$s~ɉTNKgLZbn[C #bՂg
-Y ]COǸ2X5JǢ+x|Ջ;{{<f1ϹLZ%zɷ{I7jw|8[>f n3GˢZߜW)jYvÚ\Q=<`穇x?wZ{xZ?=)\yZ?SMhuEVfl~_:֛Z3'9;W~0Mz.子2A?sQTiQ#;/10oܟ__%wacO3-)<띉Zk _\Z&Q$PHiUoޭ)_3R/+OS^h5GAPW%aI}G#b.&@֕Iwk*8FјܶrVT?]=B}wVX=iUE[pp~޺5E~4Oh?֭l~ ?H .ឭ
+611 0 obj
+<< /Filter /FlateDecode /Length 11914 >>
+stream
+x}ϓ%7n]ECɍ^ELOO;>)<7Oژ=_ I
+_SsOԎɍ{m[>֐/:><RgT۳}kn->τ<٧[eysӃow螪Ĵ\J6h[sᮊ/[ 龊R CUjT^~雿rA#Vh57^^^r{"O,|WS~ml?Ko^J/%-6oE]O e6پs }k{{
+Z8A[x  LHMaD@z4F0ST \V|+7`c(czI%}P
+PHH,Au`fDЕLI5X52'124(՜0B̜FS.]*"aweg2[ͥ·:ic} .Q@""8CD]Dc+*R@bnhDZR]/`BʛЮFAT0܂WR
+̝v Aqti!^KשdD͡t e=, MLԈР KWxQPq 0|XkB"P7\y!i"7HhDƍIS.c0s'Dr8 BA9 8PصL>q0w<99*54j0k9 *vfm+
+{r L-&ƇhZBLELFw
+_3%#Hr gtA0uZDb&;4$'H
+x]e,TH}G,$G#<_8j- 822]FI,hn,8f>4#4<2aV 42
+ L
+~h7UИ3uP"1 K0՗ 8hDJ XS*Rd@k+u2sq񀤁> }Hj_cIM Vd`RƁ)pS ;_W$ %#J
+( O@UYnIO&6\fR[ȓ ;^'3P#xdI12L*|kx7EШuBwX
+f[Vc߭1 fbc{,!GqcTyy,\cѕU<u>ѝۃ=3ޘg~-Q[=ФOcԭ37eQ-qmqLgobw{m|,;a\`K<yp?wZ{xZ?=)\yZ?SMhuEVfl~_:֛Z3'9;W~0Mz.子2A?sQTiQ#;/10oܟ__%wacO3-)<띉Zk _\Z&Q$PHiUoޭ)_3R/+OS^h5GAPW%aI}G#b.&@֕Iwk*8FјܶrVT?]=B}wVX=iUE[pp~޺5E~4Oh?֭l~ ?H .ឭ
Ki* oUpI48K2
W*0C_ }3*8C$j#ɖ<5GF犟K_ڥJ[.=Yf\j׮5f7/ʳUfvE=]a/ ScG#S?8„-=<c}1q&n>P1nWhDqr6T?֦8kvEcy8;/-"S #ں6x𘢢6s s(jΎHkQju;=sp1H@nGtZ񀢠s S&CjnF`*{rrPWkzp kCáHXpVcv|Z[Y{ 뉙[LM(a=H15kLb'UhgŔCuԊq%&TkiSV!8|@67< B99-Vp5PM`MdFka=d(05j@bMjg՘F*fu%悃dJX"6<͜l6JÜv **ĂDm"# Cں6xL𘢢6s {lu;mg:mUG٘Ol؎lzCۀT 4۞I#B1i93i̺b?quJeNng1y"rRgL0(/dUNF WSV^5D Sh`33O@TZh
M(qTŀEQ3HMV *_M2@[ ☭y[,B7VkZKZo~[j-VkgSRu "CE(QYZ]
@@ -1990,96 +2056,101 @@ C(VkI1Pq8R>0
MG
ܚFI0`pAolȊZ*d˶BJ̪}MH2b2ڞX27Muc"D
[h$ʐYR&
-"0id|DE̅\K!}@dKaHv4fվ&QT1AnmO$jp K`1qiy{.ι@'9-e\4K:JL%K)W
-%%UzQ\W^Du7N/o$k.ViIJrAA!>wխclխHO G.Pu}BFU ri/YXkťfRy.|vWL^xF{/7 4~F}od
-j2EZ}T?w#]U4.Ov姚S<v۾JM?}4abSdo\CN!Ƴ{1}R@s rRT$Go%
-^#qJV c
-s|z쥏F-YOwm\Ȥ~U13M?s~4BD*~<OԖRz{G<xGKj!-_oU+ލ'1/s3\mo_Tnly cEt۱36{X; aoZZU2E*DSW4g_X]G@uU%t^dӧ*n9ử}UBoG?..3~(9:0'E{
-Sd?S+5q}5o>RĪaU-
-q浗xz.^K* $POcǕrbmw`~q^Xey\ze9=ǥW^kiReΕzT!uPrL9zN^"'CK3ّٱsפZ~1޺\>%UL*L5Ժ(* 0y.% Y [؏O[_ԡ41ܑ':7GIfMT`=ML@&O)dwAµtTK
-z9+A =is&vSQṕQQsZ۝QQq0s'B1"*ݯڥPV] 7F70YBpR ;q#bPc'B 8s0${aXfQm^_\p4CqcR ܘ8`^)
-`}r-<GȊ KiaqZ )TЈ5,NԨs Pc@BjtgmpԔy?*`bb_(2nLp̜vs 3w+! _cw{
-OqP{./:sMfk"rDh`ԖAF'n;ST fV$B
-ht! K\7Onb㤨*a(2vLx̜vs 3w+
-5
-9XttGO\*J?ڲ %iqK8QkY[En=U4jV(@CBQHeHZMa|Abܨ-Nܨw80j$)\KQG
-|~Š,;I踦ZLQQsZ۝QMQa^nWJ]KXp,T2[i#͹L9=&U<fNQ[H9[aF
-TC
-gv(ߚ^nZ=QQsZQLOAZ!Ǡ(,Yydr?qYxr5觝嶹R'c&RڶOmr&UPq @k T#SM+:6K`9t? 9gIYf)lܞnvFНr2&ݔ1y
-8NxɄtHFx[gۓ3J1l1P H]>>I9nƌ BaK?>3}7(<)db?Krbәԥrm]ruu葜T%cPd}#i? #;h s:^Sz틳ws$ s7RGޯ-tZE?Fw!wz$ZHw$|;N?[:UȄ^r'{=wdS{)S6?W65'qW2x{ʳzH/:ZVڏ]_-۵%)x7ӴEWLvC8ק7c`i$G7N6::"QNk`b6E,Y,[$L6ˣCE}'K{~<Kv/qQDuxK۞~$/:I{~8Ir/% :E{V~<C;k5xERf2x>?;'?<:<2Ͱr}+7uOL.G/q!Yl`VJ G-.z^O9Sc(VhodG3CRc #}GǥWO^ecssΙn:grW@w.\T5 9ErԖW _f>@ڐa0Yi) I]$$`IH'0.#
-1BpnJJ[,IHK]wׅERã ;ѣ0s'`>Eﮅ R|`{hiy[҅2 .[o9*ŌaF9)
-
-j
-bq۵TRuwskid.o]WޙT1NERKRswN Z hmA+ZhRCU%,u3S:nz" Go6aRZovF3=aNhXtZ*iC\ArהnuMBiM/׽>
-b2 I, I۝RAT0܂WҐ
-=
-)JǕMsm5тA)m%3RXǏ
-6kZ Yo{ZYԕM|XU-O^}{>sWeV4
-=Eu\2r^- 圬Ge囍Al5bg(˭ϫ"E׏V,M#"iꠗZ\i2$wS"jĥ6xls_^u8FMK_O/d7s@L/rM[5zoXb}2/\‘QV`1 4Mݸkcpg*vVrG%EOl~8 Vj6G^(le˔wq@;Misq?+fw׷@`lLDsd+(4QZgO>TlNv<e~.C9(w$.{BOk=b{[Oeo.ѹ}`_}ۡ*r;t$kxrx?p'Y̚ |(6MvO)I.hrwvxr>:3!F-ovQ{FT݇:}W&_>գ`~q]s)yDŽ,pAA_}9_HzLfꉗOȳa SW(~AVr`nk\Rğ8p[
-/y+Cr裯8]CG$48
-i&nE 6X]'D
+"0id|DE̅\K!}@dKaHv4fվ&QT1AnmO$jp K`1qi{.ι@'9-e\4K:JL%K)W
+%%UzQ\W^Du7N/o$k.ViIJrAA!>wխclխHO G.Pu}BFU ri/YXkťfRy.|vWL^xF{/7 4~F}odr^MHnt&9.Tv{'!4t۷7^ٿ|g7o۟2Ll}kh=)$xv]}=0ftvQ
+hAN
+vb{ 'f(>[ҠXRP^ :)@Q ~q YI$MlܟT.ܘ4n$;@qSxQ~㨴k *s5s}\kں;2L~9ԣbIw>927N6KUi-'Ff|vcd#sI\r8F㍑roK'ҌR~o(ydmY2 s~t<N҇r}VhרL
+pOpɾ`<+wSa݋r47NiX
+1ܸ9a6?cBaΕOUȣ%in|mq+*fzSGyΏF([cBIW^xohU<>|I-d%|@>ջDy tnXK*ޏ-<OqaLq3(.y;|f~^v|g!m=uBuBkyJ(?]%h*+@.kLqT%-0| xs=_'qY%tў?D|# ВOP>HPK׷ OP;'
+h?O|^_
+z eaC}K
+>R7R%R
+̝Je
+=
+18dZ:(eaEfnhzu#v0~s EƍI 3.rcaNx*"˵T8!+&$.YnVk10SRC# 4:QΙB0c'B1
+ݪ=;q:SS-ey8~ȸ11s
+EvAT0 0@Z*x<ǡC޾L_G5VQ[YQLQ1X nV(ҁD4xJH2/'nr<}Z811sEzAT0 0@ݮP.^PBXy8¥lj*3`(rTjhԜav'rASfm+
+Xc9j=D6j/m/59*58j@K7)vB+c!ҽcҁ&u>q*)h˂E/e
+9GiX#I<ʖe"i%7Rp8qB 6:qޡr
++Ҳ$iHbj13"`GGjmwG4EaNx
+B]P63)@dT9Em"= *hn+ 8[]
+N)w,;L}R7*50j k7 3Bb
+GhyɃ(I\OL(c$'68y)NL]*zߦ%Wz_ǁiOX8E<fR="0#k?e8'X/ܾ8{7L8~:g|#uBJKUa nt
+ 7N5~ZG·s^uLX%xwS~G6wBZ?eSʦ?Sʟ__Oyv]PBWBK|7$f㺈iڮzhF6 ,MWfI7[GG>Ivz ̝C溺h=k?yҦ{yTPzOdiڏgi;e}<β?JP^vi/E}P_'i/'iWZEA{~מ_hʏghY>Tvx'x~C}hUlu[gg_"=#QGVofE2s;<]>>JvH7~₸\I\p?gJv7
+Mufa^#SJv`v6WB:JC«llN|n9_Ls6[~_tr}y؅J!T2Hu^|W;*rڬ”ݧH_270+m8%!k
+9ҰҖK Z*TGł8D`I@"ilmJ'@Y*|*5gYW0s'`x(<FE?9$*>5y[Hs"HbY7eɉ v*
+Qf V>{h,H֛=DMT`2%U5:.M&x߶HQ҂ah]>M`gτQ5M5j"2sNu2A4&|:-|7&k깰efE{d8IlJ+8:q 9&^7l]04~<l뿑KLסӋ+4://} +Xi}o]#Y\X_
+]=#e@iRo]e5r3Eo;Dl"=ۧ6}$V+n5w_#%oT]Q˻8|s68M>]=]"1͑ĮJukT>'K 2Ry}z27 [rq1mzbx̱|;xW\=;}agqؽ-Ǝ}2ط\޾PP\9܏n ]:5ϼK9ϼgnf>&MW$ 49NJt;<evnu {W ʙp#7;|iqCx>+}]^iч?|f.9fcuen8lgxVqx/˾՜/OX$=aqtu3_Lꁊ<k9C?Nzuwk%. VHw5.k2$Er#I<tsjS0ҷT"(H &CokT\
endstream
endobj
-603 0 obj
-<< /Type /Page /Contents 604 0 R /Resources 602 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 548 0 R /Annots 606 0 R >>
+610 0 obj
+<< /Type /Page /Contents 611 0 R /Resources 609 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 551 0 R /Annots 613 0 R >>
endobj
-606 0 obj
-[ 601 0 R ]
+613 0 obj
+[ 608 0 R ]
endobj
-601 0 obj
+608 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 213.396 67.03 223.852 78.488 ]/A << /S /GoTo /D (section.8) >> >>
endobj
-605 0 obj
-<< /D [ 603 0 R /XYZ 78.37 808.885 null ] >>
-endobj
-137 0 obj
-<< /D [ 603 0 R /XYZ 79.37 520.772 null ] >>
+612 0 obj
+<< /D [ 610 0 R /XYZ 78.37 808.885 null ] >>
endobj
-602 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 384 0 R /F29 375 0 R /F20 382 0 R /F15 381 0 R /F58 386 0 R /F55 383 0 R /F69 402 0 R /F23 379 0 R /F45 390 0 R /F40 391 0 R /F46 392 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
+141 0 obj
+<< /D [ 610 0 R /XYZ 79.37 520.772 null ] >>
endobj
609 0 obj
-<< /Filter /FlateDecode /Length 19742 >>
-stream
-xM%7%ׯx˪ŻvdRԬ]M-Q=
-]cF̎ѯwoR0?s.NI_߶a[zp;J !loZ _{mk{߶_K b]/tA?V_&l[2 L8EUt_%?oiY?q;j y`w=15BCVQJTyqj^L͛rJ'x -ɿ|I)[.ee+S|_˭+/#Q7<xG-33u=C+R%oˈ )6sއSm_rD2OW#zr/TJM.\mQQS(8e_z/kNre[kVgHєLZWX͹ZeEΎ5O.FVMPG=8މ@,?rhzN\[>HW5V!nT;0[ݬqa!j=no4BnEVҎH U}SNgiANyV/#64㸕|Dα3.ݷ|%j#el6Erޮ -mywpxĕ9덚ڕn9˧^-+=J/Vjur+ZG|b^A\oy>^m8Ahr<r,lzee'D(:fueMS ]{n?h>ᚻmȖsWVyY1؋QߐG,|s̟[9tyXeu4B^槦cJ?ty~Y't,ǿ{^yT=7j:ewyNt۸{ה҈ſ%k+^DG^~Brw%mBۃSԐRn /Cqێ8$C+Dx:O[o?緮T:~f]Ax{ۃw7? &?Bq{`L'kv'܍
-?3}]0owtgKߥUYf3 ]D$z3/ XK]Yf3\D?o{mb&ԿƶPWO63֘4=߶=%_lwMԵ>gs5͘SA?c9A|X sȃ =sH|ؾlwc[>gs1ǍSD7߳>g4hl6 'yc=sH|ؾlklۧS]hT{KO?q65g.|?g.B`Oe閶BQr6?y?K{t5/|+y)Psyy^n.yJ9~F=|Kn{gqE?zNn1רv_}U @y̓(^`i%_oKVoq!y
-W)!憂ATnH^5R7Usg]""޶I +Q!=̘;4BeBg Iˢ$ucZ*gN3@HG6{4;A1@]!
-dok@QPIiߪ"ݨWw׺JC@S!TTJtHb&ժQ 1 =랮"%Bwߐ&
-Q-%츥=pb(*Jjh&a#yZ5NC@h&HEEmV[j&opa1n3 T)!IFjCLiMc@@q7na5Sn9 LRZ"!yaT\Vy
-dg^_kbFe HBVc/}{tQ1 bf(hdEIƴ*;T
- h`@hT^hN&y*oz٫3!w7v/:'^PVD 7m *8ÏՆem,OraQ֦c/.}\ZړM]2.W;O՚;ۈTwVrWo'n8W:הya|ӅE}_/~ x^V;&n%dL[{-ɔ{piա?/<-5ߎٺB#HJv󛖝zy9kYg@ .2-[׎c)\/̅+HKj}mÐp?YdZx'įyA/HK!Q$ }N; O0Ý O0Ý O0Ý }݀_3.(Dž/#)=ٮuckK?o׿g]
-tNH^6rG*P0*?p;w fZP^@}Qc;XaY!?L, М4JVUɛf=J-cՔHHiGm\oak@ИB)!IaH<Y2fٛj9&o}kD"5gG7j՘3ia2R3C0ݨb P޶xM*4ԐbvfxPnP{򸯄5C1ULR D34/ #S(KL ew>P6VUx i#_GmZ n5@,{a2R3B򲰑9mb%#=!\wgae j6*!2DmPLW&' ȩPi߂&Gnc:ρхcRBe9! &):+$/ ܍jQ(^
-C P/"x|z7G!St #xC0ZTm[/C-ϋlR`0$Qw0\H8ajik&>Q7=l|X Jq u8O}ul,~%qp5WCμ_rR/%%}J#3]BzYJ2R|~Vwow oWkW{O8 c}~wֿvQ7j៭:BՉNݯN50k)kU'-|+?wQ:KձTsv{.||b}ȿqΈ1DŜBU3SRSRyoBUjVFf: =iF\вEO](-];k՗OPNU:w|>KU|]U!~<[%񕪜)4d~XK}&7+jrŚ3a鸨 f'ό\P“5{wjvǟ?yd >1C/uy:_?'ݽԏ8<? p~KwgwKwnNd4^vk<Aj;{ZLxGH;+|{yH 5+5a-n1Sxp|/qչ샗_vwUSIz/+^~<k}H 'ƥxp7<=Sq|F孔hw2K*^^^N;#.g;e*?5͝NoM8d &s7JMqy&s7㕚̽^zMμ /L7[ގWj2zKU Io,|[Z TTeF%~|Ӽ<r |G/qAmuG|>{DzԬq+>HS߻5w'}[NU>w"ɽo2'T ti^Ss~Vw|S@K+A/t_,nm
-k0G~ B Ṣ=Ry"
-l<]#=VK9V=JEN/<^YPSԯY]|N*KUG"|lU8ypg*3[aۏ밥tNu J.UϤj/)oϔk:_q-;j~-w7pʁ{؟$;*s wR'i+}^e^?tOꕥp[*WKCB]sC!ܝT`W =Uqv44_%O'D[[zu@W=9 Z
-z|IzwS=d|4@u)4>²> YGHOk3?_u|AZ%/Uk%=_uR잯:hzTV?9hzV/56=U|ցZGNkTu|֡K[{bHZ.9!C]'t;]I=u5{K=ui/LGSf:z6KKSW.OtIzf:z>FW/0W/ënf~
-]T!"wQ].Eu.BpE
-]T!*vQ].u<ClO^=~\nuPo_bk╽R{E!JWvJb^d׾
-rv1 e+Vv*gHGpfņPz,~F R)%8{4QUA@yҮf,p}pt"j=U~}00`Sf怕̲D]'bBW/kTuB'9JZfZq5b K)A<!R
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 388 0 R /F25 379 0 R /F16 386 0 R /F15 385 0 R /F58 390 0 R /F55 387 0 R /F68 406 0 R /F19 383 0 R /F65 392 0 R /F49 394 0 R /F48 395 0 R /F50 396 0 R /F59 397 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+616 0 obj
+<< /Filter /FlateDecode /Length 19743 >>
+stream
+xM%9r%_]91TTV
+;P0BkH1ȬTRd0?s.NI_߶a[KB_֎[joVۯVⶵܷ~~B(X +]~şS+/D- ?&Ee/z7OG,~ 5|DŽJUK̻ٚ{dhs!?V%<S8i5/M9ޓCVA_ڤ-I>Vӕ]͗<Σʖg^eą?uÏ)aa/9"+ؑK}=FZ*Zo&|gr2߯?5'53hJd`&_,fQrO\wuV?U'#돦a#N H]D}Krw9[='yHn-dw7Jn8ˍuz7[Q#RjBUߔYtqkh}SUˈu=f8n%-s 35w~-jl7Dхeƿ|?k@~K[^)qe.jNi>?hzve;>i?y[pJK=ZznʯVn-+=ma>.~Wx~^_}@owP=n;d3 [rY JY]Y~?ZOmn'A[o\+]<z謏}Emo#|s̟[9tyXeu4B^槦cJ?tyY,{:ϞsWUMZ!~@z}^yo#o56Ğ54"ho,uZW=wl_\݀~{055#|ܶ#?6s
+Q4Sm閷F"+:퇿YvPmzD=( ?-Í?DvVr0e5ᢻѣ%Lg &aB=uʗp?^_Kѫpg@4`. H,if3 _DPȭpg@4`~ހn1SL4.omF;llgs1?it{տmM{JyM{ـk}j1ǏX sȃ = 5c{6@  }ـ6P}[cۧk?olg}
+~w#P+KqayeRvhtJIfƴ3L /W@H>*A@[΍x&%k
+S&C URL-ݐ0jnLi(
+m!t*hvPcBP7 0/SB0Bs°1=Ȧ߄\"!QV"0ҾUEQ.lu; `BL ,L7UbL{&=]SEK # %!MΣZJqK{ QPU(*M FFjN?MN |x((ͷBM$Q#cfF%"*S*%:C$1 j(NÛT;ưn}>jr
+l_^YcP4ɜ:/$-ԍiU(v
+Un#)V~"V_?o)ES
+ hk){c@Xfaɐ^ܼn`jK:P #ϞEčȋRiη-~IyCT"ݍԃ$g!`&@L蜐0lTNaT8=~w`SAͪ!bJ[S* *vB0Y9iD:1B7{P&>[)Ҏڜ-;Q,{1R3B°8R9yd̲7s= Ln6VDjΎ
+?-oD 1g
+ Sm{
+I1Th! ܠг?q_ !jb@Tfh^6rG*P
+@gea#s#rK^%G1?c3{BR)P!*A~ mUBdڠfLOC$) y#S'ˡ4{L Lҏ܄pt u,'0 ǸsB0 L&R
+tVH^&բP0"j(UTr6Ν+X ۏrv:6|¼5o<\80~UDPuku+ᲿiF瞏pZl'7F^ =YYrBnwN>"ɭP㱈t, Tmʫw_?nH~dƋ룉s*)+F|<vq9=(#;mdݛq~1?ݩ_tdb(K]6)%41\P(89ȩwZ\ϫ:UqޑᑧvV~pMR5Xqok۩o] J:Xal{bl<;73̋B<nwG5oT?<~5R!˥xnqm ;HC]f;r.
+G w$oJVUjOgW?l2RF,?Ri<Q؇5+[<杌1<D2[<߹|۹FY/wMh<>[0WTm=\#k hu?PACpFuor2/=wP,g_]Nt_Cwuoy?+
+ [xG|G!"zhznQx^d8!7^B8!gs#Y\G%<FBa5/+1ե<ձḚp5WCμ_rR/vM(H[t =we)K=YaY߽]v߅F7jܿ]_mk>7mFYmF!ިH U'Rv;u^:<5#EWNL<V-|+?wQ:KձTsv{.||b}ȟ[XHOgbNVe *V_)C^ʼ7z*|^r+bxG_[
+]2C_Q/;B f_}=-&<샣w^}p>ݽ<[s$}p}I)Rs\K/
+j}$N^/q_O̵>[y$ʓxqRyכR)8RyxVW;l%BBw_yhrΝޑ wⳝ޲?[}@Nogg~u7&jPry&8vѼPJM^/{&gކykr-o+5{%ԋ|]7`>}sU{wv||2[#IA
+lFzl~Y/,?׎,.O`~
+D*#>*<3R-W0uy޺`%gR7ng5{/8T喂G8pG=OQ;GDq)OWʾR2:'yL}- ᥇!Oxxw!|Z wW~
+C ?;ѯ 'Cxɓ-: «-=$2>B^ Ĕ_aY|#:FzZ j㒗:JzVKvj4=ՏGMX4=Uq}^z#뵎U^:tzb饊-=_e$rkcל NPk:Gӝώʹmo3N=
+]T!"wQ].Eu.BpUYwQb!'}byTwx|hv?}c@jwK/˵v^ҫwxet%dZN/kK
+&(bI! <V@kXTݟVaGhKz;=c  2ؔ9`;,Q:9EЕx{;X3$~ V#lbC(=w?#f) ʔҽY( <iW@]r `QFX|>8:on*a?z޾J e)3JsJwfY.t
+ʓv1 e+5z!%NEvChk1tJa _KNI)jp6&0GfiXdFMkuNjMauz~-U
+5`5xfWzN^U
(8OȾxgBUhofB< W@XRh5?EWԨ͵>PY nbC.R1`Sf怕̲D!TIЕ
2to&B <iW@GUBEWn԰ U2&h;̳zCXJ*MQ~+YeBUԒ6Ńψ&a/sp: ';R*CT_YFL&%TڼzVj۷ "!Pu
-OPZقx0P
+OPZقx0P
 Ja&AV1-n8 ݴRUZ
F@fܕ=l
>U\~茐kq +*hB,
Sֳ  [8m5" qbHNJ)i H}t] Յuꏬ%|BY輐5qcږ{ahN+[fB0jRҳՔ7.t"Kt Ah Y `EeբsC"j%x,tuF7,o% (Mi>VZ.rGh5.K\ӵ.XQ:Z:F57 g$MҞ}8\-+p.itV:7Y)%A qh`}|!t)ɂ*]%on& ,ooD5/ $M&sH'>:Y講d:[:R8Be+4o% (KI+4Wwd#\Ggh\me.x.tk
-]ܸ+,s5shZsrpAҔij,a|FYܐuLG Zj4ZprY.ؤ)هZ"Y
+]ܸ+,s5shZsrpAҔij,a|FYܐuLG Zj4ZprY.ؤ)هZ"Y
UНd}oUB:u ǐǭT1ov]"t ?Qc
CURON]Xݷ}-B}zp_(UƨETssF -FPU'g{OX{=Õ*<
RS(Qw*>[O1U5Jy~r
-ݩRHrl۷5hcj[uӞJ_gjlFC؜CJ$ZiQ];X^Ah`\u!¦*4P(㐞8!;=t l:]Kg#uH]6m8U2mTl!A!JJ>Yt6V
-7 .bN<i?uߕ{=0rN#JLW1o %`toy
+7 .bN<i?uߕ{=0rN#JLW1o %`toy
/#3+,w&*F޹'z=V)U4[|(Q{s_GۃS-zO5n?Y=p'\ M=(QH,=<#3Tq-bWo.\HKq>RU*$[c
]3q.tZ
ؼa.)<BblP /Ak
130tR2W
-ZϞfGTܙ *"X9`Em 'JqT.1?Og|G<G/T(݅8c4h- ƛM`E 13YPU'%@~8=hs?Aܯ+@Tld'!Ǩ%`pZ0&q.}BUR)e| '4֫DF:wpaXF>{K+!} -k9^\=]K
+ZϞfGTܙ *"X9`Em 'JqT.1?Og|G<G/T(݅8c4h- ƛM`E 13YPU'%@~8=hs?Aܯ+@Tld'!Ǩ%`pZ0&q.}BUR)e| '4֫DF:wpaXF>{K+!} -k9^\=]K
D%If+r*-h#-U:5׋|GDD8ѝUF7M*@FJE7ޠd=,fW@#ݙ;I=ΈR,
Ol ~XzhG
--ն `_4ӫ԰-@z*4bB:US&b0LTMU4@ .85Dtr*:x[廝O 'H#<H]Xedh;U4f^ol; Kw$Q*`2/@OW]=gA
+-ն `_4ӫ԰-@z*4bB:US&b0LTMU4@ .85Dtr*:x[廝O 'H#<H]Xedh;U4f^ol; Kw$Q*`2/@OW]=gA
ZJVxhuNc<@U7Nz 9 E'2^qN C7 
-&Θv=2fIH?jKfU-:9&}IzFFz`G7<O\f~"W )!<O-VjzLI\@>h#ɹ
)/FMz%+z>{P5'oE+g;-~&xl4̧҃ k 2\ܑ @B
@@ -2087,7 +2158,7 @@ FxB;tMR!0VF8 pc۸;bt
RZ]blm/>c[ Ӿ*r;=R)ah~HujE#o+#w .} G)WzK2?_(Q1}[X}`(uJ(\=0uNV繍{G].\>Pp D%t/㾠|BТ<%brRrKu+G'-
\6^Olg.TD $*+§JDC#nq/
}|8n`r*qI0@ (|\yd BJ &<]1B/CSwkP0VX+.
-bdME69^le9o]xA8:>pLk-:3"8r[<FSO} T! C0JSڳjE||أ_sŚWAG2H&' 0ŭ6K|,kZY ) iyIbM]P@y)?dNԦ#Dx\Tc^K}!`|)/o|%UE@咨 }C^+5 Sg9yvZ ՇnVa4Lʖ HR^Cc~g.Vt**]B^te}_+=| zKj_ľľh
+bdME69^le9o]xA8:>pLk-:3"8r[<FSO} T! C0JSڳjE||أ?sŚWAG2H&' 0ŭ6K|,kZY ) iyIbM]P@y)?dNԦ#Dx\Tc^K}!`|)/o|%UE@咨 }C^+5 Sg9yvZ ՇnVa4Lʖ HR^Cc~g.Vt**]B^te}_+=| zKj_ľľh
\!U)]Ui55?h}>D(Է6
^K*5[Jso[ӑ*^kXJ+ ~ VެPA@a!%+]DhQFy7^Rmrmo,ec2r~C+/+"8r o@փ `bd&(W 5Ԇ9Bcx)aTjCNcu= BhGF"ۂDp$0 TRRFM'"K(*_3]K_Zx]+(I:g{l*o()Q!f3.iOˊ>&Cϊe!+ |]2EPKGd;`6k]fv<{NƧ+(b@a<6ݑeg8xvˇov^C{0o96
ŮgCO!Vsw%:;DvQ1nK/ඇuxWMhbi P vp`A
@@ -2105,271 +2176,280 @@ PE2 ЉKt
['4o!`~3e@c5,g&&W3$o;Q[lqQݛ--KyG\c[EY>:a eE(a<#@xc%1hBg0Ղ>[IgBc5',ge&K(/eVwtWJkt{\黢BZ}_h-<|#0sC0 P6YBtgٸ+:_|}T$.r~ލ5j a`S1v+M$5Lbq)͋ƯTDorM86bm6}VIQC`d &fҝe
kKXDnoڳ[Jq<h؄e^F,GC),ڎWRssD@"u%>,B~f.9xFQeM%Iw-hdC"h#XD%>;BW1hl܊E,A DX,BV7ݮᩈI&o!jbo1*aжa撃0`P6YBtgٰgIY]g
Yi+XP$w4G0ęR2m:,? EuxV|yp^
-U6W6JGlu* B<E'HCMPef_~}!п~NCЗ4>~_?F}c=o5̷L4
-/OPAoӓ?BJG6Ou[]MƟȭr] ?_z'hLڶFY[.7Ługɢ˂%<
-,aXO<_:Yɨ_U3Fq{|׵4W7帗iU=4R")L|ğdg_?/X&cZe=T<VpГBF jK(o|Xv9_Ḣ#˯?
+U6W6JGlu* B<E'HCMPef_~C?~NCЗ4>~_{ooG /j$oi<_~~je5ʖSo?R_: w^w7="u-|}<3m9fR9/ŁuEeHdF0
+,xdJ/B,d/ܪt#8s`=ZU+P^r(U)THx0YJ~i|:@aԏu
+kawQPXAO26従?PȱHs;>J8'"/(
endstream
endobj
-608 0 obj
-<< /Type /Page /Contents 609 0 R /Resources 607 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 548 0 R >>
+615 0 obj
+<< /Type /Page /Contents 616 0 R /Resources 614 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 618 0 R >>
endobj
-610 0 obj
-<< /D [ 608 0 R /XYZ 78.37 808.885 null ] >>
+617 0 obj
+<< /D [ 615 0 R /XYZ 78.37 808.885 null ] >>
endobj
-141 0 obj
-<< /D [ 608 0 R /XYZ 79.37 771.024 null ] >>
+145 0 obj
+<< /D [ 615 0 R /XYZ 79.37 771.024 null ] >>
endobj
-607 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F69 402 0 R /F15 381 0 R /F56 384 0 R /F55 383 0 R /F29 375 0 R /F20 382 0 R /F58 386 0 R /F50 374 0 R /F23 379 0 R /F51 380 0 R /F52 376 0 R /F45 390 0 R /F40 391 0 R /F46 392 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
+614 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F68 406 0 R /F15 385 0 R /F56 388 0 R /F55 387 0 R /F25 379 0 R /F16 386 0 R /F58 390 0 R /F54 378 0 R /F19 383 0 R /F17 384 0 R /F20 380 0 R /F49 394 0 R /F48 395 0 R /F50 396 0 R /F59 397 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-616 0 obj
+624 0 obj
<< /Filter /FlateDecode /Length 9837 >>
stream
x]K%qW`]ƀ
-ϝ|Esϛ79՛[ۏ?}c7fon>rIϷ?}0&:cr1ۏ6n. ~~~J/
+ϝ|Esϛ79[ۏ?}c7fon>rIϷ?}0&:cr1ۏ6n. ~~~J/
@@N]SY#`)S'i߆<HI>kGHS(MSNU[jr):- hk狞m@>4.`Eono'?Ѕ0Ag
;TvGW?b
-Cu;)P!OޛIsML)!l?}M|yƮl1y~YF-jTnkwQ##g};˽x733ayiy=ޥO}BV[ٞ+^=^uOѡKTT#z޽v9T qS9/6mɌ9!R9It?6ao4y6$c 49utlq[aUN&??s]—Ըr=\Uz eV/qn7` Z=>2grbg3lr^SY=>6\JkGc~hA .8 ҩ=a͈^C4>nf~ }(> xd
-=N y(,gz?vglb S4irP/POၜ7,;w)ǧZܓڇ}qEHe^}]|9so;N,O*g}O<zbފc˙>LBi29jwZAb
+Cu;)P!OޛIsML)!l?}M|yƮl1y~YF-jTnkwQ##g};˽x733ayiy=ޥO}BV[ٞ+^=^uOѡKTT#z޽v9T qS9/6mɌ9!R9It?6ao4y6$c 49utlq[aUN&??s]—Ըr=\Uz eV/qn7` Z= z&-xKw6cM./&l.:Ci3ͥ}1n9_$Hܐҍ!ZaیU:DjJf6wЇ3ݾ7ݎGJG-5ؽ]bGsG4YoΆC??'-|CmB>Sx4MwZz3;m exB$S(0\JjpO2P/K@@=v}V+(򤐆Nmi3ֱz ڏ>ygo|
+/Ϡ 1:8KcgJ1E3z-܎aa҃#;Up;W aZ( F*AE8T}7Ύ_$HOPg㱿N0N6Ѷk)C\#\]9BE\
"{=#{$P}FR<~Rm$`Q
-ؔ7cozO󍯰훿ܾ&1V \n;!@G3w=KeK9 g16'ޠ5C~X͆H _fyn\4/پ'ֿ$X; >-`6n0=
-JW2l`%h<Q_3~!>eRU'̋d)yLsAvi0è!u2,'  V%piC"Y:`S*^@kSvBc
-}jũM,ȘRoo cDHf ~ue4]8V4:cj-0\ۢ$cj 4Οϋ5E5mԤ`]<;T sMz .3Zް0flԥRہzZ[׸'tb3[M{ b
-`1LT
-hrDUԥN cPQ9ʼ]X-\ql:tʊU;<K져14CMAM yLBQ̠Ӆ֐ b'ƪX fQMfٲ>Y12Cu3 ]䍼b
-:ZQUF/4Fy+̆',D6ÓLNPDݸ΂B&lI7[OJ#~&0Ŧ#[_̖{ ܹL
-'g7) 2"X}aZ9Fi%Aa1V+MH
-1Oi%vq0!~21B'ű
-̦s胺eXo
-bR@izMH
-7uKxV<uj/iraڻΡ# .w.eQZzJ{;졉-IPYBw.I:cR wfD0Mʼn,e 
-]V>,eҎ'Lԥ>sǭ Z%-B'60ԝc}~0:/iOaMHjn-HY`K,nUwWSal2Bcns{% YIfhBZq]X=hf2,;Hͺ8 {k,m5|*XC(|_jb¨UO7ut:7/#J[חSdf3P>%t`( (Į1ɸ604<ȑ%Œ8ba.]wSܠ[WTB޺¤ S&Q|38
-[cX#2<o&49 :Fh*<eE?`6 Km/7 429(uuI7E5"N;C/r
-ڢ25z NV 
-c`
-%۶/WK0 Ҵ4PIC榠.k7 ]oI[זTTCf3]"6B8d;43@>
-T+&GPTy)gbpSPKmZLh vYg\޺]?SF0srO
-s/Pv~FM"XM-~Q[לHf7Kxu(=
-ƀA/u5,aiºsB
-]na)XM 6WIch$:)Ff͇vK>zs 75M1,2;[RcM8f.E>R`ጽuYOM˝'mN&``xH ::>;laVt԰M8(D<@
-]AĊ6ym2x<&v)c};ʌH.
-g(;|K4Ue䒂{a=[ O1@/c; m@
-婐&\sTPM В0;E0At*Bd>(o-R.u; O1L
-(qPA]tkPPMqXNb "";b9cSjf`RncBD+=ڔ!D|8&C:1XMY1Agׂ
-piCdޟ+&9n.,0͒zұMX-!:}NЋa_' è7 = MZNb`-pO%|2k4@Bq@ vEA *,YbqTf.(=z$v ^e䒂{9@Tƈ#0hX%{
+ؔ7cozO󍯰훿ܾ&1V \n;!@G3w=KeK9 {Dۜd{vD |ma5"3~rtdB7ޞX`0X{ٸX0TbjҸk=쥿F}0rj?|ZdKSq@((_eʰaD}SKW0/O0͙٥pש賰6pO4xZ 
+}wLµC)Z;P1վ]c
+R@=cwSfwNek:BrǽlK1n0@RI&*49f"*n
+R'1 e^ m.a
+V]x86te*%avPݡ Jᦠ&t<&(fBjkHehrЉk1sacUm (&lrɺI.oFJm1`-*#BE żGfa`"Iw &'(n\gb!~ 6-'%mP bj/f=
+\M&
+'t3^@~Pt0[\]rl~L# N0dhv&${ۀX예4eu?XfSw9A27iq1Ps) 4=hv&${ԥ@s tel4B9z0\y;2`(B-ʽdlDʖ GX
+
+M>jPW~_!a/5U1a{M* Xj:Pv×N %K)aڙQv(@LAd0jbW\{dqh\VP aF sqhSPKm
+)n+Z*!o]an)T(>Y D +Z`tdXǂ@;|mڄ&1gAP-Bq,b@C妸F&%.馨Yig(E1T-O`!w3]c6f{n0$a8R0z4Tj;q#`
+#L^&Y-lo7uԖP 3<`oT޺];M-`VejSή`=  0F@P;
+
+~T0F޺]AlVNlT ΁}A x
+ k"C+P &țZb&f`qA@Y"1 Vr6D|W
+b@ ͼc3묖[W't涳}3xNnpZ!t?%,]NjCasjz®Ϩ a`#^d~뢩0򚝃/5{뚓X,4cq ~}\~tG0襮c:l5v^XX`[H -,벩*Izd3Ug5T,WRNRtzBGãqcXƒ)&P&ҴygKXj ֌ba֥G
+,;IabBcd l>\`ϡCۙS
+S[CAv&{@V+k/f9Bڡx0䰹ǞO/|PB&̄)4;uvxSo];Z,!t@ 2eDeBvWO'Ӗv!zT!: !F qv
+b[[ To[;Z*!$Sdl4)g r
+격1Z`6&XA( v{G u?Eʥa䩝
+j)nI,A$TbZ,gbcYm0t S^m_rlSh^rT5'„uH'벩s? 0Z0!tX:m1ۛsT=%ƀY[R:IK%2DЉz1Kq`Cxka8UDIˉR WcⰄoT\<Fp}
+}E4'`Hjƙ0)H#G Ev(( aWarp
+5ފ6]o`z&Ċf 囁1<Na4]Ac%⃀)^%c
+1Sq0m樝!b`'V{v;{y5W(GvQ⼘\1A9e)pv>3Pg=CA!fe8Ok Yjejoˌ :/bqIk0Ր8Ga6\QPv+j(/n[Q6vk]\02.t%ѐfR3؉,v k'daU^F%V.d VhMI,ʥiZ&,/47s0Zj爂v;{l]3Aͳa+ OêֆMǐh
+ WNk9HI%ͥ#OwVPh?W*Y{S|/a?C~A``q[y^|DxK\W( Z8iZM+*n^_V ㎕[X'>b`XM n$6xt|NJk,r⎮]ir Gt5m7GL7N=lF>_K&h{A_xHw 'ιpo?s9;M \;h3T?脹`0\Boaw
+Խ4LCb1ÑWFqDǏVS1~흊2GtXOmp/)|g<Uh(vwL5BɅ
+s{iJNKt|B5n߃҆-
+Bx<'EX {0u?>A*s.zvPHbvh54AB]; hJ;$&T;1Żr6@k^WΞt3)x$z?hx}w?bUw{gFzby?Ezo
+\W?p/ W􇿪1$߻Al1k"2gFyw~n6du
+{lkk!+|?w 뻘6cgHy־M<;wX =^M'$]s%@8w?wIoH¾?c
+!ZЬ ˥uU,d%2 U]A!Tf0 f8V,I`ckwhvJՅB}y, =Ǹ}~?&^QRہZ߾vJtehk
-0Ce(cx*_=|GmT+S{]fdyKZ9kݰYj爂[!Vc0Eytz5 Eǀx_q+0r@ŘN,fgX;!&2-p%cB l
-LbT.7Oۨ2a|$t#"W;GԄdgʘ@`wnS~^axzVE 6h:|D
-ߘ(J'?qXNvXOkK[SklBhJ*:E͖İHG!x&0q؜ $0}"t KO
-)lb.[
-I^Zw`6cnL~+`T^=bDo֋*Hib`7lI"dCf^9⍀_dM,T$S Hoi$KO
-)
-0Vn["FVd4MR/㫯(SM8{W_-
-rve !ej܄tvճW=*GjVܕ/olK/ϺrzP`gUHu]ArOw-i.PôREc?R(ߛç|x Y 4 'k]B9o5ƹHsjZWA`t3mw:Isʅoq$y԰#p*V]w`diewtVNJsm._>i8ebqj5Z2D۫JGSl=ue{q݁lZBAA'c` ø@UeuܥaԼ:6l|۵~ F8~İkT1>~zO}*nxYN="@FC]G6|l=f%rO.ԇWxsKS¼uZ +/}ts6oQ9g,N7wB,fpXXvakaRi;WwHˢB!qݢ׸ ua4c3s*=b쐬GS
-`]@ze^%n8{ͤ>ٓg ;G)VMajmcN  f`iH _~Te}Q Ƹ83E80t=\슈^jkm  .6]čf' 0cavL
-xE}mdf K_#ߊ jWo>w,v%%񠊻<_m=Ə
-<`|W?U{uxpH}K++o1.{fxgvoCVW>߽wv8{`zai!}Qҿrsi3^]z6j{,Ts]ͰStBbU?HJ]sI3p* $=d-OU׶vyRbg%ca}NMď*O+, n.[oL?e>=;\5ʿJkɲמSq^{&~5u=)%]FOa/e7<f|q1:3ۮj
-Lإװd7dE.I7`shY6=} s{[ikc 1.nLZsVelO3sG (%6zn͊݀\j;Pk^5B\Z.CPBe٫`xlŒt6vfJZ](ߗǸø}a2NA].+JaJN\F1*3^v2F9ĀœUн${Yb 9ZA
-t uXj;Pc
-bW
-}2B_znvlxZ 8hm슆*SoUͩCGPc@5 Rtui5.SR6WSw+%!GiBR_s[ er@[`*C}2gYGxJa( N&Ȓgvr-0?{SVZ,!Ԓd3},Q^j*'o[EŀU2L|j8-~&p h 7HjP}¬iG,Էi&Tf4Ǯ^lǷf[+`
-XC[ jK9TJ.sīƝUDF[&cjP*@`PJK$sbEDeb0X,nkA#{a%HH3X`.i.k4X`6 `}+ }@ߥ3<lUռ5bfɶ4aV4uv ;i* QۮЉ l5Uj K |ˁ
-DG:5X˄X
-X>ZnXNX, 'dVåfؤ\ڈԫs +V S %g3i.Dž%c$Z MtjsPlkD3FYO!V2˝)W\?ES0w=U_%ӫ~ y8֔
-va;: ŝ^Rq-썼5kz
-acmq-)cf,e)X]ncVq
+2e(c#,L 8[<Y
++mOn1P*%ƻi٫[Mʠ[)5`+v],#%0mg|˦ Zʮh(@0uV?ۜ:|5_`m.EW7&^"95,js? |gR"y&$5N
+C7aB-IA6l^;c7 ~Xͭ:!X:rp&<@UT X)7'jBpc .̪n{"O}fB5aF}
+V{|h
+qX
+}? okF~ >'~
+% Y&`F}9%킖!eWJ1j52KaZ/VN¢PH5;% 2CU9ǎ@hYjq^Idii2VY6uaiX +zM2~!V4IT," ffd8"qVtM1vN:뢺FU f I vXѷ"!Ї
+]Z1^Uͻ^ *flaA^oEsPJmZC/Ґ VSڰD
+픤9
+L5}+z1@X<l-WKX8aŀ4Z!`H8 ,˞xhwI
+KwI2.khwJs+c&k{2o/=[??(#5a˟ű9n>50䀇;[>+.sLI>^珳(uD'$z?!Z2:0xIOt_Qt/OH))))))))))))))))))js% 7ZK0&Ѫ( Qf LMė@ɪ@Ix
+rW[X/\NeأNnH>ڣN#\j:T~!G,w
+oy9]{N(>*CϣzRe2roٱ" =R\2bX{G8g)b Z;4OΨTl҉t_KV Ÿv/<^Q̜9hЈ%2D` o[aUǓ
endstream
endobj
-615 0 obj
-<< /Type /Page /Contents 616 0 R /Resources 614 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 618 0 R /Annots 619 0 R >>
+623 0 obj
+<< /Type /Page /Contents 624 0 R /Resources 622 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 618 0 R /Annots 626 0 R >>
endobj
-619 0 obj
-[ 611 0 R 612 0 R ]
+626 0 obj
+[ 619 0 R 620 0 R ]
endobj
-611 0 obj
+619 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 326.699 386.919 338.654 398.874 ]/A << /S /GoTo /D (subsection.12.1) >> >>
endobj
-612 0 obj
+620 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 162.817 327.143 174.772 339.098 ]/A << /S /GoTo /D (subsection.18.5) >> >>
endobj
-617 0 obj
-<< /D [ 615 0 R /XYZ 78.37 808.885 null ] >>
-endobj
-145 0 obj
-<< /D [ 615 0 R /XYZ 79.37 771.024 null ] >>
+625 0 obj
+<< /D [ 623 0 R /XYZ 78.37 808.885 null ] >>
endobj
149 0 obj
-<< /D [ 615 0 R /XYZ 79.37 433.664 null ] >>
+<< /D [ 623 0 R /XYZ 79.37 771.024 null ] >>
endobj
-614 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F69 402 0 R /F15 381 0 R /F55 383 0 R /F56 384 0 R /F58 386 0 R /F29 375 0 R /F20 382 0 R /F52 376 0 R /F45 390 0 R /F40 391 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
+153 0 obj
+<< /D [ 623 0 R /XYZ 79.37 433.664 null ] >>
endobj
-624 0 obj
-<< /Filter /FlateDecode /Length 3997 >>
-stream
-x\Io%W}F )sp."Y{yO-hd|U~|Ʒw6!X0FOMl.06gVl߾opn$.oϹE0Lq¹}s}:~^3/r Q#|OxW5}S;VFxf ,Xibњ3#<n}C3#af3r\tɼ8N|f](`JKa.7vZ$AM3W|}Y^1O/+-W}Եc{͔4=<!AM2@͟!/Z{ ВxF+yM+.8AqWgn]^p);5ΏhAÆc`v
-tl'Hqx0LK%+T/EXW`
-~_@Iqv8 vົ{˾7ytpǫА;j\0zod[P#8Ō.$WVYP<Lq|1;SR@>1ׁʉ36a+G-l.[0BYw YwpQYwt+?7JҶ׳(JtAVD,X-4Z`v!^x^ ZA]"ڶ19goOԜI#,$lo
- #zγRRޗ4?/܍8Uo
-qXPz3vHD2onh.y5]P:f9@%Il再\<|Ln
-boޫ@;~o'S(1"G5Kwop N6@|\]<~v7 ~B
-tuIWτSzjD#X_20y캎
-W犺Y~SܰF #n"Qok.$n{wK0Z
+622 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F68 406 0 R /F15 385 0 R /F55 387 0 R /F56 388 0 R /F58 390 0 R /F25 379 0 R /F16 386 0 R /F20 380 0 R /F49 394 0 R /F48 395 0 R /F59 397 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+631 0 obj
+<< /Filter /FlateDecode /Length 3995 >>
+stream
+x\Io%W}~ )sp.).E^ޓ| 0u7Yb-_'>}{MnǓ;| LY۷o/ɹ s~s8! v(ܾL`s}/z>+g^'S|FÏ+=?碌2^û9[cebwaV/93# ;48j_NqRhGSB\J sJ% j혾
+w};+ar_FKhY!(/vjAg^N=C$#J^ӊ< =hNt\=+z+vU|k3e'>Ҟwڸcq>(qHx> mWE`&F'nY'O$.`6V?sȭJ?#l;,q8JqFxVlII-ۍ݋qΏd%JhA;WFM߅AI3+Ubh\fa&m42FOwik
+*=f.I0*O9O Tw-n00F(/{xXf
+o
+Q!f; CASG.b3Rp2gܣ GWYKU(δ ,'  Miì LL >t?^
+EA߃Vy ' n*|;~1VJq뼝D#HfɆ^<htg5~c 92<'HEy`~E\4 %\y4'0ר1dlڇ_rtD UWKH츤 )B5Dwy(4Dr <!؋-i?~Bjc0\VpS
+tlgqx0 J&*B,
+VO ӗ8 
+vAʗܽcîYw3u܋/%Uy &1j/;t]V-@}/WtI$p(QЏ
+~_@Iqv8 uw}oZeuBC~pu<mY@%ZN3"<~b>7 \AZGgup/fg $ٙ2GqyTN [A?zoAfsŚOڇ-O򼃋j43k5XW^a,QVG3d_Ϣ0m6 s
+Dr+Enn[iQ`v!^x^,ZW.DtwZ09g!jSoOԜI#,$ln
+ #vγR}% wcpNM Ihjj)j{[Jl949]nNS]/gHw
+)?xU㑪#3N(ҏμBҦZJ#*&$SV<G
+SF$ˌYn/Â
+Bz̀ޢ(n
+-^#
+'$b  (,_dn(+TfJA1`{Sxm9|*J%(Qt>sx0?7GSlQ >-s]<Ӗ~< n2m+W ;\<}{t_ӯ/߿G) `jo?gD|&N=bq_UIp1d5gC*d`ZJA~:5:ЖA1+ D@lr7 ݠ[Ҵ2E.3aEk&=+#7z"lbtcp{(iɹYpԓKj9FVEhUi!Wrz L=44qꋺxZ/%=ټ i8UE|j[g}h0-J[.nt'F8
+v"wdmh) 2XBb`^]^N-vyDyA*yF 
+ݩ'_vwE~
+q+w$^vDЁ!UNADhZ<<.T.xDNj?8{m7jee_n}NN53+OMHtEl搋 1 
+ji9ymEw.%}%5`
+T'"G7L*gՔ[qم˃W2 ui.ׅ Yr
+F,uw^_xí Ӣ0ў|L8E4u  sn|
+kV/taFn"MoK.$nhzcj
+Z
endstream
endobj
-623 0 obj
-<< /Type /Page /Contents 624 0 R /Resources 622 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 618 0 R /Annots 627 0 R >>
+630 0 obj
+<< /Type /Page /Contents 631 0 R /Resources 629 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 618 0 R /Annots 634 0 R >>
endobj
-627 0 obj
-[ 613 0 R 620 0 R 621 0 R ]
+634 0 obj
+[ 621 0 R 627 0 R 628 0 R ]
endobj
-613 0 obj
+621 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 384.21 725.076 396.165 737.031 ]/A << /S /GoTo /D (subsection.12.1) >> >>
endobj
-620 0 obj
+627 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 449.821 351.038 461.776 361.987 ]/A << /S /GoTo /D (section.9) >> >>
endobj
-621 0 obj
-<< /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [ 78.374 71.409 416.581 82.866 ]
+628 0 obj
+<< /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [ 78.374 71.415 416.581 82.872 ]
/Subtype/Link/A<</Type/Action/S/URI/URI(https://tex.stackexchange.com/questions/52848/tikz-line-with-large-dots)>>
>>
endobj
-625 0 obj
-<< /D [ 623 0 R /XYZ 78.37 808.885 null ] >>
+632 0 obj
+<< /D [ 630 0 R /XYZ 78.37 808.885 null ] >>
endobj
-153 0 obj
-<< /D [ 623 0 R /XYZ 79.37 771.024 null ] >>
+157 0 obj
+<< /D [ 630 0 R /XYZ 79.37 771.024 null ] >>
endobj
-622 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F69 402 0 R /F15 381 0 R /F56 384 0 R /F65 387 0 R /F58 386 0 R /F66 388 0 R /F81 626 0 R /F45 390 0 R /F40 391 0 R /F59 393 0 R /F67 389 0 R /F50 374 0 R >> /ProcSet [ /PDF /Text ] >>
+629 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F68 406 0 R /F15 385 0 R /F56 388 0 R /F64 391 0 R /F58 390 0 R /F65 392 0 R /F81 633 0 R /F49 394 0 R /F48 395 0 R /F59 397 0 R /F66 393 0 R /F54 378 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-631 0 obj
-<< /Filter /FlateDecode /Length 6161 >>
-stream
-x=ˎ$7<z(4e{jL <^x|_R%JndRI#ȐE\~z˗I{Ktʙ˗?$|!.;'/_^~yHyp^' B HE>Y
-=OeQ]%q~O9Q8##hn^H<JE<y+nL-6xMb]B|n դɑT OR@4>ȼ(!S :2\ubfڃ6WƝPqp[o_ՙ9KcŠS[f ZOYSGH}ZsaW#L/m"]!7y FqìA?
-[kDp4z2b2x&6[X[1NdսyPDKZkLzغ
-y7?lUȚ20,aX%|8ƾԏX, ?mr[Xn:"oFqrD.P4;)WFa3qo'Pk[ghIb=+mJ-Y~xg5E8  6"ُ|-}8>}^`_ɭd#2=J7O2Ս{ٖ[ž>2Nٖ̓[puQ8G-Zo?۲Gqo[yĚ9t7ukv<JNteX!roŊbcFy@,"EQaź7Q"]En܊?GB-Eauf1ק?/Ο.I<󥝂/1F
-v!_\
-P;jx<lDN7Kp"lv;(W=vmG"70l.= A]$egݢ=8>6b<nOOfQ}/BN䟻YAj}E0+w
-m/pHs(X<A8,񆟯(MejRH?|l1NUvŽQ7P1
-?FBaǨ(u~Q5kp=Ԩ6lJkk(sK+[Xq:s ,`Q. rbH84)àdY]\֖m~^y5_+fYa$<z
-R2y#N~ tWT\|w_^_
-ޝ2ֽ"*|>)}Ă9}5"})xn*>2uS> -'6Wvd\
-b^UMa*LZc]*bZX 4۽ߎ5- RO
--Muڐ.1f XT GwTBIm: D
-SbIrT(\=Z.ˬV0ӂg+U#;dBq꒒o_p4,#wS +_l;yC+zŌ u,`+_-2vďJݭn
-.=6
-lR˿
-X gW:) )+S_;:oW'g\G=԰7t/G_+fGkU#K6>P{x@EɑA;)y\̵Y*+bsS %quaU.,RJUI^ܿ Üy^j_Zzf8L̔]a/uSYˣkBȤg,s:ц:vpq ƊsN(Ҋ bgdY.L쟭drG-[{>'}`#p<6PVF²oBR3ͻ.k},U&"aXhMu^IYq`L >ⵢT a* jl,ܬ*oUkYsQUST¤DTм`Dc(`!!`
- z0"بOd t  ̩\33` AJ$tOgCI>g퇳\ֶ4攺wXR%Dw}[3@}{lLC~pF׌ou"k3ͽ ͂]o$hl"w3
-O؇ !Ie'9$}ù :3\xiy*58N rE4H}kjXy.mM4&Cn;?}=`4{`1ɊZi`Vs3i9|]ϹG%{|ʈYQcXw֊~-70x -<9qp4mU<N ]iNvL[u5ٳy6@ba1 ɨp2 47-ʘ^R->-m[`%AVqF`0;d6Tq;5 62rD j(静`HpWј`JTh?q8z|+s uVs +!Vy9Jzb%PȤ r+̴
-S+,#h5Ü2T52
-` jPi8*]a5V VZ H$Wb=ut> z7v&Qz݉ ÎZ+^}kv,$CIFI:MJ"VtT)&I ֹfSZv@ 6H;$WTbu)YQ;) ɵ(N7V0Μfy%;0:XcZ$RDos-569fBuD6UkօMhI Do0i/G-I̔j@ WX=Iq-q( (6[睖 KI$W8ݪIx] U*!t!`!18f
-W<6SS-25U3Wc6 J$NiC6a]m
-As9ˇrNCx%cKN|}x\N/paR!m\KTXj>72y6snץ3'YZ>zuڜR y~p\< nuY`]^0j!CynFA(Ɍ92d UBF;njaÌٛK>$8= ?Lmnw4#Iȴ|-w$Ro&rI_>)^,KLƷfz-WC4!gfF̘7qin$Zˈ<|:
-j^m=,㙁qV.fZyE傍xfV7
-XB;]2]؈K2Lvn5D=R{D|=nl⋘S-SU%+njTb1#%Ϥ!evt&Q5Oiɫpq"+iZbMy)aq鶰Y"Z"|li tFCj7mdu8>Q5#C=k~-Urv_J⚨v:]_]KpL^.(oc{Wؗޣxҁ3`^[RFxt:9X ql'PoVc͑D)~Δj (xs|gk)$qqZnV-BD_.uy>3ZVumW-օd0}[Ӥ<C-jf%ӧ&U_1I^fr{,P^:Fק_~+r˿Wp-tĿ.x= 7+W>ڔk4ܤ
-ډ  F|yA+ʾȮM*gV{KW$wuP]*g+RYвś6MvGwqA'Э BaW =QK(DZ}:'t]UxP.MƃIwViVYabzmxj8>>v6.kO^W_ne T֝E53|z[dtsC7AH6*I-ϵVvÃ`K!~i3D5#6`HaHRÇ
+638 0 obj
+<< /Filter /FlateDecode /Length 6163 >>
+stream
+x=ˎ9wE{(r=[==Y`i~II("2"+m4rU2)z^w~^rwyq\/_/?? a$j/ON^
+o$|"~Kx
+7%I\9~1&x1e<â=k)ST呴RxG ۹Ӱӈ LV6{K[HGiHM21A?
+5k=Kkث7
+v\Q]|ұ4A d3yw*_mhePbF^>p~֚0Q:* =Cٸb2x&6[X[1NdսyPehPzۺ
+83 6a+!>:b4ubϽەClL($o~Fhn ðʹJޏfq>}X, ?nr[i j@"oFqrD.P4;)W,q|I ֙=UK6Ji,
+?foYg>a,"xG>moԾL}v0|]pQI<}ڗnζ,ɽ-psއ ~sƹXEu[cQ6x4ۖ;*ƚS@yL./`u=yN*U\&,u"gu,Va(bNhXg"EGQGE}JI((̡µ΀巯>$ŠFGX?w/|A^x7R]6 ʰ%SoM;_ւ1AaM/6!'E>:u@y.QxiaOH/uSza z'7GT߮
+Z37y_l#WWXK=]ZЏ?bWf5|Vta+x"Hoθ7
+ & W׮jGt+w
+؎2B@JV@A?8a|͝6yo3iA"[a>`ڟhZߟֹ 8k
+P;jxiWf .~UW*}k>F F6k'&{lu IDq+D$hD]`kaw'cPبɰ(!'wo;ڀ}b5>'# P;i89\9Q,L i`xW 2\Ä#눘j 1N(Uv'~@aG((un ~R?G5YSV/G na/hf~ia.-NsKkk;Nw8@9wizmmc(Wj9z1L\(@YEW%Q.Mkχ~^y%˻+fYaaXE
+|0u1\?"Iykkؒj 9V1^`lBxTϙ=eA( xK
+ sbiЉUDpT{GEԖ@1%f:d+J卂:;ޣU2M<Ϫ k\,@^0Xe=-YvFɄ"h%)7%0s4,#wSV +_n{xC+zŌ
+u5vx_;G^gܪ7R\6|y+Jހݜ+3#Vj {GUcYscգjtw DZJȑqoT8+kBUdWX*ŋ#U3VU`zKT%{q6 s2z+?Joq3 Stbօ]ooa/
+ #LfDDծ/K[9䢀A#bzKC
+J|z$s2«jLl}_6&\롽Fyl4e_ZBV]5>Yrˋg,Me^KYqIbTV:!Z;qW2 <MWc ׭z~<qEI=Q
+b"]^"Tȼ`_9ZByH".F\g z."ʅ tsXT* ƙT ;H[T.B'TD&,2#Ax kږfޜR7(W*d`)JxtcѾg)r蚱]dlr<gtVfA'qU[]҇'cwc
+ 9uB3 txi/y*E)' 8_q&kܚ(14d^iۚSjL2vV6Dj:s[
+Zwkۊ—~7P"z c<qOfʔa[|!nM kL9:8[Z^k1OFa2djiZ[1 ܥZ|H[3E1` J|U%ɭB"N`"vmY*7lk0mX8hU2ŤcF SZ ]EcR+QƕLj췚H^1 1P υ`2uK^5 IAFiWi
+jO%W 8Zr ԫ!V9Qjb!y+>d饡5(訕Vb[ Wp@DRV2 ;tK|)ch#ECk|QQS1r\M# ̉ .~xT::*)PB0+aPz$H$"RBv3؜ɭaAc~xa[a
+g0dca@ *S,ui[NJ&hK VZ H$Wb=ut> w&YI;?%PqIxdq=q(I(6[睢II$W8ݪ4܄6`10u.+[z;H+CIFI:ZrRTItiLgkm7-9,Ql0J"5M9RccV (tQQGi ۃ m"I|с ;%8K>PCVO`\KJB5MygCRɕ(Nb^Hhbl]Xb N9; % AL`̕xMB"(mڐ m"vFXEU8lCzX@\G H5rMsdC"ɕؤ$NvBoBLz0 7h`uݠ#uCK$驃*=+QDr%yQTGM* 8
+X;]2؈riLvIj5D 漧dм-&5B |z5)e.*7)\ۑ^gDaԲKokbEvUz8V+iZLJbM})aRrNYž3]zIspiRic3.# CY˫%
+zc|[湿޺ ~Ehh3^ /.Z"
+tz"cL=Q 2xenZnZ4a jL9G)˜p7;X=28-tfw
+ǯ& x-eKdW'ռ3EUõ;TnJ{)
+b[]~fO ?ty;)C>XؕKy԰Veru្S|okYTՋi8CPx0JA#R OLLBXO K\p-Xu[ݱj\Pߋ[s==ސiiS\w ڄUz%{ rlb> @mʅaRtfs- h´YJ
+}{+Cx
endstream
endobj
-630 0 obj
-<< /Type /Page /Contents 631 0 R /Resources 629 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 618 0 R /Annots 633 0 R >>
-endobj
-633 0 obj
-[ 628 0 R ]
+637 0 obj
+<< /Type /Page /Contents 638 0 R /Resources 636 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 618 0 R /Annots 640 0 R >>
endobj
-628 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 334.246 76.718 344.703 88.397 ]/A << /S /GoTo /D (subsection.12.1) >> >>
+640 0 obj
+[ 635 0 R ]
endobj
-632 0 obj
-<< /D [ 630 0 R /XYZ 78.37 808.885 null ] >>
+635 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 334.246 76.658 344.703 88.278 ]/A << /S /GoTo /D (subsection.12.1) >> >>
endobj
-157 0 obj
-<< /D [ 630 0 R /XYZ 79.37 473.185 null ] >>
+639 0 obj
+<< /D [ 637 0 R /XYZ 78.37 808.885 null ] >>
endobj
161 0 obj
-<< /D [ 630 0 R /XYZ 79.37 295.178 null ] >>
+<< /D [ 637 0 R /XYZ 79.37 473.14 null ] >>
endobj
-629 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F56 384 0 R /F57 385 0 R /F55 383 0 R /F67 389 0 R /F29 375 0 R /F23 379 0 R /F20 382 0 R /F69 402 0 R /F58 386 0 R /F74 423 0 R /F45 390 0 R /F40 391 0 R /F59 393 0 R /F71 415 0 R /F46 392 0 R >> /ProcSet [ /PDF /Text ] >>
+165 0 obj
+<< /D [ 637 0 R /XYZ 79.37 295.105 null ] >>
endobj
-643 0 obj
-<< /Filter /FlateDecode /Length 5463 >>
-stream
-x]K$mϯn("pFHLxNtpH^uĞo$L&<h;U#
-
-[PSa¶@
-feoĤd8R;11jh&hkSlĎێ]:vX[=qNk70.4@<,!X%x{tA.zE}kKnuzߩ4zFa cҰHh .nM,.}9'&{9vuBh!:ћDMo|}I?ÐI&Qq$qs\4SpmvNb]A=B/Ldl|`gY3!ʗANSzg'_-87.ǿo9WCT_8W.~o^ \ސJ6"=ӷ)h (7ع {(2V0<zۈ434٬JJq,4.B3 f]ҬS5D?_Hy4lhE`,f<aau])CxƤ ZVAF#Sh ])[}&-A L
-ЭLB'VVIl` v0Ӵi<ҞX 9D#|dTD<^Xv'[f7؏)BԴ.{+ܙfsE5{n;
-;eO;)1
-m.UdH
-[<^CD4y^$"&=5.d@Nj}OY1T@Vȷ#Z)ک
-A,aAЁ+>wzNZ)SX7uld
- y5yΛs=-kdH hv-U1wtttOwf70< ;=N-Ln:ܩ׭7eY {PNWQJFhTʂ-qc)vp80v*3MA C `"9O$ ѝؖ('-tAu2[  S46uv8|l&m+,G;\A$Ti([Я+<i썟S:2[JVBWVBƵJ&>}te'먃p2kSp1hL5j^ ĿU}b*;@Umw?}?ձ2kQKZnxZ!eg*p]
-ڿAj2<^WaH<$BGaMU1E#K)W~:h)
-f
- ?oϒuWV*da"J^1L AG*^w =]N}ZA2vє~`$%fBU3>z۔LaKK
-w~nzSܭ0mff;O.,)=Sխ=̉))<ʼnjFzLHKJl ]'ǵW>Md,x@ePk_:0zQ'^lb?iKl)JvO{OS9K]
-|K
-c53q`KiX
-ޛ|.nKdԩd9UVl~fGu8]%,T rr_;_5 ^'S)Dq/Ђ:g9I㉔$Nd{I3~=k-z[TXzYKhY`lb
-,?!HeiʪSx{gFT`BR0wPe$ `ewطy#W 0i.fer}Y@OcƂ8CkùQ-)=|Rc=" k%y8-@#:-P@Jc}TwP_-B]6hq1ܟJHuUBSVj%7mgf>`NO$z+`F
-4ʂh JE,A̤f{|W:(+hn疖+ɕfhzN&8&.X
-CP?wu>v*b[h@NhB i.' pFA@ ,RhnAE"ZBnK>LG@#m׊x4o*tt4q5 Vfm\gִ@Uas~UXjnx9D^aA=oh[N/g~@Ed]_PջrPN6']&e9]!楋^F&g-f馨dhoZV4\rm~}qnd|̠\ǃF[[٭A–I$hC,dMA+wosfCƛs1R}L,~r",aP&Pd'-,0%Y5xDGs݈sT[FԄxv능8DJ m}[խ.E›v'
-T]&Xfܳҁ7o=x[ضseH8Y/4efA,4!Tz&CT;=u+O <0k0<U(^iIਯ+>-&=P a'DFʒ>/f}O\IM5TTrt
-!R/UtNTIITeP'!sj SYɈ]S7A,=ܠ!˾[j_
-TU8{f7pF9_) /N|f x
- ϢI ̶=jJ֚z[iU
-ucwZ-=+zR/9Gv
-jێi[Zlr̚
->_-tvR6S Ra#} i97<+Y
-x\M遡Ifqr}/dڝ
+636 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 385 0 R /F56 388 0 R /F57 389 0 R /F55 387 0 R /F66 393 0 R /F25 379 0 R /F19 383 0 R /F16 386 0 R /F68 406 0 R /F58 390 0 R /F73 427 0 R /F49 394 0 R /F48 395 0 R /F59 397 0 R /F70 419 0 R /F50 396 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+650 0 obj
+<< /Filter /FlateDecode /Length 5466 >>
+stream
+x]K$mϯl(|woOo˄$^GJd2K]>
+G
+H @\x%&s5`EFQjGϭsSB2܄eN܄"C7IĔb8R;11jhɯM hkbnbm.T|?pCЭ8K'˂b!/4@<,!XP
+Bp<ItZPRkۻWpzߩ4zFa2=ǖaׯQјA%\#ݚ~]b]zNM9vuBhe2*yћDMo|}I?.!Lqs`\9 O)r6;'AIk.~S &F~x>0b&0[ڇ(_FDž=q\S|W_7eT_8W.o^ .~.ߐ
+Sjs+EzNߺԓ1Nv?Kmz5h2|3WH33桚PiVi<oLB`CaCb}uQƑ8O%4Zi300sil\vw
+m';2<ff0)[-!F#&N*(MS5Œ>1Zy=5}W S%"bFº;aު5܎(=~@駴
+Q6[﹯pg1q;mpݺDڵBEר]nK4<:j]Kgc"P&ҍy4IiXϜEq|{f{l-<mJjѵz"kyi'%PdH
+[<^w/Ģ1 (}ߋj0ߤGƥA)+
+(jvDk7eRv*7_x&}Y93t K/]k:0y_ǶI>1^oƦ1ϹsieJ~}i6$]K(F&d)'ĩ FS0Knɳo5A9w_W6\G+we?PE:g քǍժL#pɴ۵
+lOWy-ovV2!ѕ
+1%4
+u?(xΫ>CO)=Cn ͶGܲ[^H8s&q}ӳ\T]7Cޘ`F~k2ܥفvh%[mIkH<v5$$]!Z h7G&ҵKvzh
+oӐeAlu$ɳMۋx.'%U/BZF\-Fw6(}N(UEpMۍN
+W$Vى<Smϸw_~,z нs3e~ G_%Q`D~2oWC6y &k2ff^üu. t,ꑋ]I KGV\kV@|vQ<|*z@ҕ|4F9=A;89 x9hH4z2AFVI<5>!ZTߞ|Ҽz
+)o? o|BI?B:
+=Dg
+tY~9ًߚ`H
+#¸h͌pWΟ`6P|` MNH>G{_ HRBF~4"I-r!
+wTeR#m׊x0o*tu4q6Ԍ<EКi{ B0{*, ;wW Tug$RR0 ~X]bC~bV һ%ekTvf5#GWv(vFxfWzbѳ" tSa2w-k|x W
+>_-vR6UW R2#}90Hr n'ݓyVTqM
+})Cf
endstream
endobj
-642 0 obj
-<< /Type /Page /Contents 643 0 R /Resources 641 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 618 0 R /Annots 646 0 R >>
+649 0 obj
+<< /Type /Page /Contents 650 0 R /Resources 648 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 618 0 R /Annots 653 0 R >>
endobj
-646 0 obj
-[ 634 0 R 635 0 R 636 0 R 637 0 R 638 0 R 640 0 R 639 0 R ]
+653 0 obj
+[ 641 0 R 642 0 R 643 0 R 644 0 R 645 0 R 647 0 R 646 0 R ]
endobj
-634 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 147.325 693.209 172.013 705.164 ]/A << /S /GoTo /D (subsection.14.10) >> >>
+641 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 147.325 693.214 172.013 705.17 ]/A << /S /GoTo /D (subsection.14.10) >> >>
endobj
-635 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 187.734 693.209 199.689 705.164 ]/A << /S /GoTo /D (subsection.14.10) >> >>
+642 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 187.734 693.214 199.689 705.17 ]/A << /S /GoTo /D (subsection.14.10) >> >>
endobj
-636 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 334.733 693.209 346.688 705.164 ]/A << /S /GoTo /D (section.9) >> >>
+643 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 334.733 693.214 346.688 705.17 ]/A << /S /GoTo /D (section.9) >> >>
endobj
-637 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 215.091 333.515 234.797 345.47 ]/A << /S /GoTo /D (subsection.12.2) >> >>
+644 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 215.091 333.568 234.797 345.523 ]/A << /S /GoTo /D (subsection.12.2) >> >>
endobj
-638 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 250.518 333.515 262.474 345.47 ]/A << /S /GoTo /D (subsection.12.2) >> >>
+645 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 250.518 333.568 262.474 345.523 ]/A << /S /GoTo /D (subsection.12.2) >> >>
endobj
-640 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 360.107 176.759 372.063 187.828 ]/A << /S /GoTo /D (section.15) >> >>
+647 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 360.107 176.817 372.063 187.885 ]/A << /S /GoTo /D (section.15) >> >>
endobj
-639 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 261.702 86.122 272.159 97.742 ]/A << /S /GoTo /D (subsection.6.2) >> >>
+646 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 261.702 86.122 272.159 97.802 ]/A << /S /GoTo /D (subsection.6.2) >> >>
endobj
-644 0 obj
-<< /D [ 642 0 R /XYZ 78.37 808.885 null ] >>
+651 0 obj
+<< /D [ 649 0 R /XYZ 78.37 808.885 null ] >>
endobj
-165 0 obj
-<< /D [ 642 0 R /XYZ 79.37 307.345 null ] >>
+169 0 obj
+<< /D [ 649 0 R /XYZ 79.37 307.399 null ] >>
endobj
-641 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F29 375 0 R /F20 382 0 R /F52 376 0 R /F41 377 0 R /F53 645 0 R /F51 380 0 R /F15 381 0 R /F56 384 0 R /F58 386 0 R /F23 379 0 R /F26 404 0 R /F57 385 0 R /F69 402 0 R /F55 383 0 R /F45 390 0 R /F40 391 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
+648 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F25 379 0 R /F16 386 0 R /F20 380 0 R /F18 381 0 R /F23 652 0 R /F17 384 0 R /F15 385 0 R /F56 388 0 R /F58 390 0 R /F19 383 0 R /F22 408 0 R /F57 389 0 R /F68 406 0 R /F55 387 0 R /F49 394 0 R /F48 395 0 R /F59 397 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-651 0 obj
-<< /Filter /FlateDecode /Length 16490 >>
+658 0 obj
+<< /Filter /FlateDecode /Length 16492 >>
stream
-x}M$9r~E5q~@]]&J-`NkFӳtuV27{N';y\r\~~vqRr/qqҮ\Jv#Ͽ^H8YV_rs~a 7?G2W¿E$~];-o q BP%ͥKsA<ջT;Tyw1]3A;Jtq,} l:0ք-(oO5{ pKbA_Ss;jw 1E\+?%Bߓ<-ڈiڮ*C׋:$ү*{_)3\X{]IWޕ$X@'v,[Nx?#^B_e n5t)GflJSK٭pGR {֟ܯr)އM^w,|z}X%.L?y_] ;x</'klk9>ĽnG7i=uj܂**4*IH
-S}Ýf'5#ZDzI6'Rs\6T{>Y=jkI>j Қ ^f4(ydekm7=S {n%ٴ]tZΞQUhimH,ip|<Z=7Rb} ̹s)_kwf)|1h )K;0]*[+.?{v!qGiU׻iEia*^-W]{ɚީ-\S'O_^ʧ7aenrz f4ҵLY`CiJW<NyZQs7~F9P{Q/rޟnƧGiTyhMV"&^&Ν^уwJ2XfZ`îI?̢ɿC\5!eP9ڑNťkYQ3`ᛥ"qnrgic!q}SOS;
-S/v8*jgsm]{|Ey?>~{,)Ns7zDWn{UF좛|Iķ,=pPgL=;xLlj6L[LLKH&n[=ʃ ^)7[&Іɗ&^kMԄrv&(-g0⼄(kr_.$ğ.] t˧|.6j>5ՋWcX+aexZo]kJ\Yci.]VE՚|?ِ{੅p< E
+x}M$9r~E5q~@]]&J-`NkFӳtuV27{N';y\r\~~zqRr/qqҮ\Jv#Ͽ^H8YV_rs~a 7?G2W¿E$~];-o q BP%ͥKsA<ջT;Tyw1]3A;Jtq,} l:0ք-(oO5{ pKbA_Ss;jw 1E\+?%Bߓ<-ڈiڮ*C׋:$ү*{_)3\X{]IWޕ$X@'v,[Nx?#^B_e n5t)GflJSK٭pGR {֟ܯr)އM^w,<c0ó'u%񼜔rrr ߤDQq NsҫШ$j#y*0LYTBwRPPh &O7W؜H-_sKSdrx咯%m 7 Jk6$/[ziNHږߘ~GL2S﹅gӒv!k9{GW#m1]󼪧knHqܓu&|31|M%7ǨV%8>,CwlAX^ʢzGs2ۅh]GU_UѣaX{$_v%k^{rM͟<}}^~×{o+xIκ/K2EW daY+u_8njkGߦǟ-h,f||F0d(bukR{u=x:},SefP֘9,=̅;h>]B^=Z\6?sY+k&8~6&rٗ;4[ڨ0b7JxRѫf}Yq_{6~moXTgq`,x-xM2?^q~}G}6We.ȗDO|i{pDS~x//qb?ꃄ 1 V)ӣ<r!1jRm|of_kOM(GiG~nB
+#KRV_/_?BBՠ;ZM|˧?_k^@^}?6o^uxF۵&Kɥa~0vbݕ?`X[}S ~@ؾW
:E5NpW.qZA.VjKX?&V0O,p ?5'Ȣhc+a!8S]IS.7t .eFrN-v$GEnjMfV(ΐ|1WBky8<;OiyōhnVzS m0CL$P:BfLBEB3.7nCR'fJA]mTwahPxv;JL˵cʨVwrWeW=Gix|D}%+*Nn{Rj=1Ccr+KVԈE
b[EZLxdAЖr9vVG$1%j<1/M)ıD?=`Gm}Y2

@@ -2381,1165 +2461,1153 @@ V.߁RDn# U )9w:lw4S̃<J"C;8\6.D$&0L48NmLob
!sy.Z!-SƔUn񹻧\X++c:
X4lhI~t(6<&ZnTKov`fx-&dPJ7x$%̕6aqyf80P>RIm#By{.4Kقqi\xNIeN@z4@|SncVX]ͪ_Jp hiq(v>unOw]r
*uHTb3Ce`NTe<@1*dNXSܔ<] @ Gk-wGDIm|aRGȘV(1<F'Y <40j|&E@E3Z.cPwg"Q!~\}\28F$ -8*K͋KFr=O3UBsɃ_'4$L0d݉p #Ӄ x<
-4H53&Lpfǰ=L߄DyHNRRad3_F,H.L[tFG8KI*j*H0-k:n3m4vKL'P8a1g/"'Э->]ZjcKR4l+(?C@$RV(*dၡ0wg–QRɈ[ƚCIBnusi2"
-OܹƇo󲏕Zh E˯VibE3߯U4ewm:o}4fw٩i
-?}+[MTL'g
-R6O;VQ|:-^U#3T sJQ~稵
-Q̼^
-
-$}!8?e2z5&K*)GVM5ŕzﺎDVMCa$N$Og =Q( +)**ms(x荏yC[ϴbFb.ϴO2=$QX~Xpۤ2SS\&obXF/IMTy&v6gm0?K{MnuW2SS\"6Jk%B+j[a^c],Yw^ޞC<gIs70
-$5c7/)7`qlϥ.|aIͥ%VoZR'":ʚb!,ɡ
-mp[rh-|ӂ\L'py} Kfe%%u7R%D8Y>]Zi/*d,U
-aI-K"o30U%`oBͲP|*b, ܞ8+@5CRHz7!%\pI ÒoBQVg&ϭ^K^L +"h<*t1˔@4) a8Au)ftu8egKL\KےK
- 4L E*ɡ4 4fpp2$IO4Pa䧮
-gugf`DiBebe!|wuNs|RӔKPH_74_jBO*:Q[p c[+bW+FrGՉ7[cx]M,tqS-u=o=2 =Q2oZRZEY-ĤUA@aHFM\<!aatMzY,'ŝbM>p9eB Fv`=f5j\QMr_I]%U踆T" T#Q]+}E KdqAm}ZCЦb)ѝa]*+,JEuMV|٨3V Jo3}H.ޱ oGMqUSۊ  \MBl.++IjZgfl߉P7UexiLbc}0ji؈_;)U}^\6JM\u8GR'*U<bo g}LjFyw30_Z߁sq(TUH}sr\Y" xf"SK?1ήZ1ePOPW\X0p(X.VCsx#h͸g`
-\剶ȄP§U9ATZ_eO>TDX<ݣ؈3Rʃ!4EBPohWpn3bo!
-1>8 ιPƫwk[j0;>f,23CFJAy{CJ.CX-U0)vƷNǍ*t@/ hf/ŏ&}y'wKp=+\L8=*ԋ''Zװ-\>Se.wޢrAxr|1%;IX pGǎz'b#Ȼ1(1
-@jcLsQ65\`JƢ$%Sڮnb93ر,or?'Dmqh(Z(1'' V`q1\㉶@χ'Rwy8.FςYA xsO.,-g4ni4݋[G A]pKp?
-BU=?e.qP:|8d 
-0S_K_@T w h*yX>/H|$fێ㵋C@*z4Z"XN2.lM=<$.1p](>粤75O@Iu-wUICS.OU% z.=G~] Fiqَ(y4|t%` \V"NBdVfԶ>|G9M,^5Lkyեb(L]Z*
-J\CΠ@@71'K\
-A@[\\0P`e.(q.awښ%
- PIQޔYxh8I T@ȯ7qH>=C]1r|w
->FscOw%~ s@ Gk-wGDIm|E cB4OzN>5îu9#U:~i*\#><*s\4CaN|<H QoʎD_1JhQwFY]np@g+U<ddJ_ؘl#.) |J2m U:N9[hJܝNy 'RSؖ⎭M.| 2o
-CP(-5m}U⽨J1T;em<* sw+g"Wl=FO1㈔Ram}Y}0]Ñ9@E3Z";y 栖qՆ;es^3~>M!FQ#h#rPg'" 0 yI&Uw-0T24c1+kmCȴ1;6 NWά2 t>e@PuK ̮ՌS:SQ؈7,.hpfىHcDL@ʕ#=F'>#(0TcڳoR*k(42
-*󥌭PƢCܝʉT;u[ETxpY,$(dWa',a4w
-:ugE ;y J?F'[-!oN^E_id=V~+wIC1T;em< Nwʃd@~Oć 0b{qkq<P jGҼ)(jdԝQrm$>l*
-0s.!L"t#{ip}?
-/axW*4=Vcd=+Jɹ "3T4N,
-F *\% .OzC.Z5W~)6- ܪᢩZ|"WoUj86^ͻq_[Q7Á51,E7 L<{WOP!Gխ]2+7 Wd=p:@(Ep%
-e}xI֦T#b F\*{+e(nRAo}{UCW.)w]'^eetfKL&P8a1g&,?/#h %+h) 1`#f.:Y`'\ݙ ꡋOIJW.!:jW!@&J u(4Ј3}E|SCI֜,$o":6r7D t2ؘK
-G,L06L|__%'@_הWtI{5+1S
-`e.E
-G,L06L|_2_%Ǩ]7d{5G@&TV8ʤQQQog,'?'']ʤkh*K1 `#f.2A`(lߙI"O`%HAoBp  6^QkɨvļIoktj.\2G
-`Rw&xҵl ԫR>.3
-7Rʲ6 ,h*14ئkͥNZ8la1gR>9>ק:=I𾊽/2p ùra5@]ڪ,zY]m\$*Ort\w.fUX~췎hs1NjG93<q/6c3CFj{ꊿXF364 ۉLqЀvq/s;#D#o;za(cyN4[ιMZCw
-t1
-*\SD}q#04Fj(Ctgx8P0_Dޅ@4z[G^fB| %ͫ9w<) r!̘asܢɡm"x+%_;hǛ ': bb " =\ (mar?9T5g@sUjtU-x8ӺrH.0GƇ]/*O>hRO}<n#YYOPwFc?7Q~^czFg2oEU*G~kK+Mo|(GH`C @=rͳNgcn96{|V<N$Qއ QL Z7[
-t8YbWmYpcJuǒsޚOgy$wH4L/~7@FREX3o=
-#+mD<3C !Nlmf}:Ex**Q? qʻmiK7$h g^!eI);zR˼(c'<+МR!w;[%V{Ȏ
-;JC~g[1KOc }ظ> 4*Z3'Z~iNdΠ
-LO'" 0<d<}!2[`׎z2Hi
-/%%rmp=We$?j6j/L7OkRX~TRi<{AZFC1_~]U|gR
-્'p+ޑsYm/~=exo<fȣA=z%)u"|GsS|%A+W
-MϷo_G:~{^eتSe|á gj5M~˦S-K=>ƿP>Jz70^o/)xJ*\Gr 붉Y۽:2j,HMRݯzD*"CnN2q|869n'sܞ1NۥK5a6t/޸xP>]_E[S-Vxmնkp .oS3U7Wf)Ɏ'2G$\}x ~zz=i.k'xiV~2&'3 _yr $eJCtYg6r
+4H53&Lpfǰ=L߄DyHNRRad3_F,H.L[tFG8KI*j*H0-k:n3m4vKL'P8a1g/"'Э->]ZjcKR4l+(?C@$RV(*dၡ0wg–QRɈ[ƚCIBnusi2"
+Y.@KR|.x~}ǟy27o֤oqL[/K^olB?}]˝7pi|6/XYЩߊPjE/V4ZEY6~oЦ!Oo 4
+~, 4
+~a?/~%֫M#;4}kX[|>^e*Tze&8-L`ǻLpƻiZd [Wj?6>Ҽ.7mǾp>/}kwkN߱Ӕ\p)~W̏-] bv\{К>\ln[oG#~go܆>W]c_w?/+TVrXW)XS"pp\%gg8+cwB\_g' WU,0U%bQ"lXEw` &t|~ltBD8$2Sm.ݥ <+?=dZLx} un󴣱j׾RZ52C%n
+K 4زDs9SI+M ь&t|^!*ɡoI9]M\f&3;4DZKia.JG<:dI
+ uk7r-RIbYM-18,|in \Z
+ 1,&eu{ܞo:U
+Y:OQR3}xZܡ a3"5OJ`4,L7q yFymܣ`=g$'If2h x$NJ\O"Q#}lq\
+zԱ]xE=:B7;ERW)ܣ# >%6%e OUr]MLJ^uyo~P艀4`Չ#[mv1KOWޤwQMrr^)6Jǘ\fޞ9,\ T̀;q>i@ n ݓjlQFe4Z,'ŝԕY^kȮ/:@%❠ K5lH`2W۰Dwp&~٧5 mJ-B6ޥbTTGdl
+ <S?k:K]9 r.+FpǾQ5eQXՔ*tkKFrd.ɮ> }iFX %x!^e^GT]!,;': ኍh9R%`t\a4>\e_C)] ~*!uyb-P%#)aVpAǤvhtw' Ih?Ū8W
+BZ78Z}?(H%g*A)25
+6q./ª%ishWy>sfj7:k,2,SwrǵYV`ڰXb8XcT@޽%
+%˕.IIe뢫a)<wrځiIrƇT-u"̄ک25WzR:!d-R|@#FϕGl7Fr@~Vc&S6C-vx٪8e8뇣OҡS샳Pezסۼi"83d:=":Rbg|餱xB@"z~@9vXPnFyG_8mw
+}Azg߳ŴQУBhx|R﭅9{ Kق3L0U6r-:!' 9~.#J]r |d{{)6bi# p X/\(-:A݇7V`LܙP@
+$84eS|o,JR2A&V|3&cQJ-Bځ̡Sq⎠{` vq<hL|M?|/,'ugG q|h,qo
+72rFFӽ5p u<
+ƙZʻ SbSB2>OtkjHOΠQ\;G x"-N6љP0W;UԀ~?ڢJNhȡ=t;V&(a
+h!? _3wru$Qj9j[Hq1f`ԉf#:4NU1 ̾GvyxǦfjv\sL&v<^nSSvDl{>撓R`R t1w
+&TYaUI5ÇPJk>7D3l0kLS?O<
+4aksaArr!,% v (˝6L_#H>z'0"hWfyf#
+y&v$\3E,L)k'2q~x u 2e48i3Q(#|*Ř-pjFsG~n
+DX
+&jtYgUGO
+1u U( L<qW8w.?aAGb;^8ڱJP|1: 2xGE/BY$O!J(FXiyCrcW݅s.KjiqsX PrW4D0U*ZUBrZcXX|ו;a2QxGch[GW]Rl̥)`/bY$.OaAi*O&OM\`eMmKG{DcEYX]*b) %(bi`; J T tC}
+/>ĥD9[؛)haiK n 6Z[RbopYpBAӁ "Ƈ'k>B),alιyT RxK/:i`t9̲ )q,'",'V._wTTT
+1uiXVb: 3wZJz>na+Q9?Ňg<uelVkN#*x:hM)D'/KCEPv~+pKvPuI
+Ei,:4݉ L@SUDO BBvuv)̲:HsQwZ]
+ #Ǿk e&|$͛BFFe-wF3;`v" 0JY<Fe^?U@JRGX'Ly/
+.|kP6+_nټ1Eu38[BXtpxϳKz+r|tQݪa|~%#Rq\p HYh98-W 1ԅd?[6
+x~n"Ky+@ܚ"k
+\%PՀxI2z-L"DުZ~/í!nj!l.
+.^jTezUn'C])twMQ4YF VvQDA. i؛ duM'Yz^M
+5Dؘ̄K
+G,L546L|_$'Вc/R
+X. 6fRQ)  ۉK۫$t.Hc]"fJ
+*eyIWӱz4 d2hKeoLv漯ojrxri஋ΫL捦4.3
+`e.E
+w&/s} ss{"\@_ :0+WVԥ̢ fɕ LH//OO~k !oV{~ƾ?CNM?vޙS>n>93d:/`o{޾!)m;cC'
+<N]\ I{d|Poe&)̇
+1+Jۈrx;1 Rp
+#7\n<; Qx6Ʃcgt[H9k}
+*ܖuX<Q׏|,i)8itv hNrAzd:/Ue<FӨ0bF3>3f֧S;Hf4}Cb  yqR2;/Ű2O|c) qYb*[4Dw*8 \A=7!@y5srnިEVD Nt"*
+hNKft㙹L )$rS#=3X` Huq
+<h}c]zHG?LMi5g7tL_%P3EB]BZ
+H٧y|^c`~h98bP D9ր
+j<=xr~A4q% C@M3u1eqX/|^-(dD@ႍ4N35>\R" Nq'G?.V> yQ~O0*0 E/(݅t6]~?P#~T㛟 3]Ɗxv#~O+ԂN~A<3Jðʍ%R0%5oaG\L.pJ%KRkOv\9j=.Q:ǧBxzhҗS0㹂;%wFcj?}=8<<ez2r?ߊ@5%)u_UUWl:eۋ%vO\vrv^"acP) Lo̪.D'|[E<t"w'^O_N~?",`rQx%<ZuETvaVr;A6/#>&uݲ7㧻M^s|"`aT2Zvk;PGe{B-?e2Vl4Nv+'9c폥^{2e|Yk}LKѲPF ìR! >\iP%&|R2N\YFrp˔>}_DwiI%yB}$>AX/yGC僥U")k4]z79>xA`١|=sF0#p/Y|z/?!kf?;7|>;?Td=On?xY^H=0@/0S j#|<]p"!uֺՔh_
+/%%rmp=We$?Z6W ~abqxZRzO_g 7/8zg^Gr<6 KrdɺF!#[,Z#i>GjOiOb6$_gņd>G/HY/?irN<\=ɛI
+܏[^U쨴 ui޽
+&^rG~v~+Cm"wVvK)=T^?'F8,QPeSL\h;M@N:gSv)eRMw ݋Ż7.O׿u?)wVT}Ks`^[.<;۹{dwʌװԴ4Ż1d\bĖk//W0S!OOo'my6O3ժO_jrHڕJ(? ԏ^
endstream
endobj
-650 0 obj
-<< /Type /Page /Contents 651 0 R /Resources 649 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 618 0 R /Annots 653 0 R >>
+657 0 obj
+<< /Type /Page /Contents 658 0 R /Resources 656 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 618 0 R /Annots 660 0 R >>
endobj
-653 0 obj
-[ 647 0 R 648 0 R ]
+660 0 obj
+[ 654 0 R 655 0 R ]
endobj
-647 0 obj
+654 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 249.532 641.39 261.487 653.345 ]/A << /S /GoTo /D (subsection.10.5) >> >>
endobj
-648 0 obj
+655 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 319.111 477.953 331.066 489.908 ]/A << /S /GoTo /D (subsection.17.1) >> >>
endobj
-652 0 obj
-<< /D [ 650 0 R /XYZ 78.37 808.885 null ] >>
-endobj
-169 0 obj
-<< /D [ 650 0 R /XYZ 79.37 771.024 null ] >>
+659 0 obj
+<< /D [ 657 0 R /XYZ 78.37 808.885 null ] >>
endobj
173 0 obj
-<< /D [ 650 0 R /XYZ 79.37 304.388 null ] >>
+<< /D [ 657 0 R /XYZ 79.37 771.024 null ] >>
endobj
-649 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F69 402 0 R /F15 381 0 R /F56 384 0 R /F23 379 0 R /F29 375 0 R /F20 382 0 R /F65 387 0 R /F58 386 0 R /F45 390 0 R /F40 391 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
+177 0 obj
+<< /D [ 657 0 R /XYZ 79.37 304.388 null ] >>
endobj
-658 0 obj
-<< /Filter /FlateDecode /Length 5403 >>
-stream
-x=˒$m:"wDdž7B>MxnZE.dVՌ;C?* D
-cp Q×"R8
-YQVEy
-K)(:W@QkE#YQ`yW2 d[^; 7vJ@Oҋ}CS9H0/*s+NĉM|
-(٭&' :v-DD.-j-'9ZK&1Dտ054
-:'=E9=vM&ao ّf|
-|ډ*+`YuW} qe1p"mt-vkR܆wUlmG͈h/H:h$HFF>JKcGg"ts|ncx&`k$FFĉmҤ5لҎIi
-pn8~Oz2KHXnZt}zUJ"W} & <#@&/Aqr^.5߉Ɔ\#JӧE'u$T'a޵&B~GOpO~B?;)M?:{gmnpMbزЋd5$GW
-@z?Tc
-v݆a $Q8\ÇAifM7YPe57bH/LZvrw[Icܲ(1O(ӨcnQ{JЇpk6=v"Xw*bv
-bB!Tg$9m AB ĿͧADa|A \]ӟ)qnF-/(wF_v"䇫<Aƶs5VL
- /
-~(5 /
-~}aѮG7c=tvj>W]\]*!f{+"5B%QtҠ 'F<+
-A:L*ar:~{J;)ػ`'y$ L'K;/o>bx>J'ǟW$xx[O8\@t
-JsZ%
-HD4ZI;¸~sl}2҂/O
-qf=/P*Ff=HWwA/7ۙ(_{ k)=E]ho#H-H-I.=!
-4d"ʅ'taZXR9gVDʜɴ;ݫWl 1x™ Qb.Jk1vdwx7q?Ol)꤫ S/-X)T';Tw7Ox2Y!U!ku [ɄMr?2L
-lB$G2>zӣe?'1բ X9xtoB)śfW)~p>
-6CQPft
- 7=S{dMJƤԤ_3ij=SMY&-rU
-D^b鵴oq;pO-iL I̡en{YT>De8]CpA@#nLG3A}`Av6;BȌw&D` ypqQ]Vi z/"zw p՛J+'vl)W-y!Oʞg,+x+lQK{\*fA$2"Kq eynZҟRS^h۝}i3O>7V)KT]ji̭AP͕d4Ӎ5ŢB1DɠrkIѧzR_9mcĖ\{i'ZQ' T}*`)SQZЋd.>#^p~O>\;>Ae88W!fʞ<ӢJqgM|ikXJ[a⻮V=0w`\=W-I7<?3cP8woDDU+덛aWމoF޲S;rޕpQ}M8?ν8@p yЭwa'\A@ZڞH$#I-5sla C;C
-M !rM?GG4i{~)N/S"l6IKy CE,!_ }o\ﰡT >w#F稷J.
-
-~9%& iuHv6;yA;QOVK= uuMbϹa~h')MWR  3hWjxNxQm88zT:7avaZW9xMm8n+Wb>cz KT4xKz'%7YMVBhS]_4sG*%񪵌rIUƆ3&K0zV:݄ +gfMݜ_.bF>/BAMOh9ضVN aN[[)UId$KrOkUP~Rv?*G%ֲSKue>VZrestNhkrfp籾:Hwa՜OGnJV~Pø;=4gla
-DW[LZ8rC _ 5,i<al19gIC3csj~/QҙY
-C18Quѿ[-K]v6mw!B)S-&}3z AI Dp&0/$ zƾA2Q{]\RWsunZϤByZDZ<ZejA bvG&UgN;OimdC>?JOc:2mDS!wg|$~ ,18m_8}#-g#ق=idK7GNRa53
-tbNXv<X5цꀓEUuSNjkQ+La`9rJFjq+X''r޹?CZ/GH
+656 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F68 406 0 R /F15 385 0 R /F56 388 0 R /F19 383 0 R /F25 379 0 R /F16 386 0 R /F64 391 0 R /F58 390 0 R /F49 394 0 R /F48 395 0 R /F59 397 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+665 0 obj
+<< /Filter /FlateDecode /Length 5375 >>
+stream
+x˲d7m?_KhV鹹 Ua߲}OߞeIeYmzB/߾O~O~za0]>pR*)+w>/ __ooWۆ_\m"~%cT@?K@\byHrg
+}@ X6
+؇φ{cc? yfHDώ0.;ueg gQg@ɭ'ab4u&aTc>~,T?|}c(QS)e(xy(N܄7졪i(>B5&԰sV̱W9!ʂ$Y<){XyME6Fy=Ē0be<:"pdy#ρC*zkx\=eU#M"츈߀J- ƗI0lŭmo89aDŽ,1^c<Lj*6U Կ
+j4 k! rIl #ӬlE.o/#0,Um K-$YmB'?:vV\wzo"
+ Ѷ5E# /qQ v6ɞ0v`o<(J/ bmHs6KM~$ SF%\ /:({̘b(r;[g*Ϗ~dg$" T-;nĥTێK7Ip^k=QmXxXרKrhԬPYVmGi"@N<d=~a#%XˬHChsbNZG`=5Uuh4}21wJO'ubE(V4,~9ie1
+y ͧjC('d!~x
+P઼qA[reu[#FmMW:3-VmX@?8ё~#%pLx.VO_Թ03P 5@קEgu$HgX|ne#goZu?#GJ?#]y6߻i ?:5e{!yn-NN*N&>A/v' 
+hpDI$/sE8x?'E&%4SvUdk- Xd& Hd,-x$$!$;fE(r] |G; \;+T; ȮvVD#&̵SYiEK{ʙAv̕3S΂x$(nVYF*7NbK3J戼`: !+)?8,Yۃׁ6,V42!)JWĊH)Qh(l_zhDF΂OyĤ:)Ϙ&'Z+JdsT 8*̱uUJX&J
+tmXOV30'vÁ5;R3EKzu
+*axәJO=U5N\%ujjOGUM0%$od"vZ1?PF}o׶;,9PO
+NLbTBS-601 ̀f 0MOw'"S
+T~'HY@_@.0Vi105`ʭN8*4մO5jՀ7j{S Co2O5SH
+̢k)Yf'쨯00
+]fF'KinR_C$Dz3M RZo77cN"zF{o ޵R=kI^n]Kg\BC ɽ9FX-SD>ǖ֊DDAӉt-B|$8La22Rˁ4
+g)x=Km)N7hlkb=DÕ!V-f ]Aߖ_%clVIIΟDW
+Jy_|Tĸg>y񅎲^$$?fHzQSCv3Oz&'ŌD;!T{/ 9k:Pb״mk4UM`6sXWUKeMs8kr;Ϗ0v_:Go_ٛۤ;|7a߬.ve+㮫7=s7PN{~HK5_w/`еV#8KsnDǤ=EO}0a>.BuaV*B3rMCnoOy3FTln}4 0hWM%Fz<Uʝ />_inPPfULv
+X>n˜ٮ̍ȼAлGPou7 \rtYmE҈2;
+1%}Y̓a ^ `zu.'# shm?y *⣦Nx ucOn%wn14/tB uzxٶ=QC>lP?d  ak8=y>A[ aFq/Ɠ>$`ʔ!$o̞x`:~UVÞIS~K/S&yYGlN | G⭚lvrM}n ݼqubt}h?GľmDF'0a~a6ro *]~ m-<W-g#c--)Sx[hwpv`D!ر3|x:I[Ky*Q5/.xH5e8$C8r_FZϥ|~.͠"b8RBܿ {ƾ@FPd߱:]v[f88M7jڃgRFu{85bz-{5tZC(.:3SO4T~l]e8noRxne18]g]ݷcb[g#PGxI['Vy5ΫM3A5"Ո:pF?l+hpL0`ܩsx V;({i6{^Vw;:xNɇw[Yؚ
endstream
endobj
-657 0 obj
-<< /Type /Page /Contents 658 0 R /Resources 656 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 618 0 R /Annots 660 0 R >>
+664 0 obj
+<< /Type /Page /Contents 665 0 R /Resources 663 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 618 0 R /Annots 667 0 R >>
endobj
-660 0 obj
-[ 654 0 R 655 0 R ]
+667 0 obj
+[ 661 0 R 662 0 R ]
endobj
-654 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 246.713 590.495 258.668 602.451 ]/A << /S /GoTo /D (section.11) >> >>
+661 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 246.713 601.312 258.668 613.267 ]/A << /S /GoTo /D (section.11) >> >>
endobj
-655 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 274.389 590.495 286.344 602.451 ]/A << /S /GoTo /D (section.11) >> >>
+662 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 274.389 601.312 286.344 613.267 ]/A << /S /GoTo /D (section.11) >> >>
endobj
-659 0 obj
-<< /D [ 657 0 R /XYZ 78.37 808.885 null ] >>
+666 0 obj
+<< /D [ 664 0 R /XYZ 78.37 808.885 null ] >>
endobj
-656 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F56 384 0 R /F57 385 0 R /F20 382 0 R /F23 379 0 R /F29 375 0 R /F52 376 0 R /F55 383 0 R >> /ProcSet [ /PDF /Text ] >>
+663 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 385 0 R /F56 388 0 R /F57 389 0 R /F16 386 0 R /F19 383 0 R /F25 379 0 R /F20 380 0 R /F55 387 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-666 0 obj
-<< /Filter /FlateDecode /Length 4393 >>
-stream
-x]I_ѹ
- ^OhM"J&h>|{L~(^lN^#7R]pE6@6ʝ?o;&vk%䥌h/ڦsᷦ>:&f^9N>tA~h*:n}M^ŽcWkKQWX&j?/_L+ t!1qŒ\~yO _8.OY>,˅Q𳍄"Lhs, Ԍi bH*
-[4qF@o|% qH$xþE>w$J!;kJ E@7_>Lu-<o;KU.&Zsn("ԽjW3E7f4]X}#.zOOzv<ИqE})K]s:} Cg߾w_Ǎ1 `U?nh[ճ!$Yՙ!;[
-BpX.)k;µD:zKX`&Dje䏱Ɏ`ʄd2J{U"ӕUU4'
-OFq ~͕KOϊ'==+ˆUÉ|'LK1cT0aD~\SoF=aRf W(iԭݴՙɜ7m6d. }Z>L+`mw|YsYSAزuQք0J{Q( ;g8%nסMfɤ9!riFL%=٤'Ѕ;-"tĈzM/5oea،hM/m:xN-/3'$$ʓƀOna*3jӷEc!'0/ beXw1ɍĦW*i2¶2ZRҰ~IkVHRmUWKu͍4x׬:l3vx"7GL{2Vl+ݣH ޢ,q2R"_e}+A~zPNȕpG6rR4܎\]Ha4úP!γTLÄg3^!'L!D-K}8<gbs
- '^K1wFzi^cC.hz-4qv4MWEz"̱2q _ XB#`_q` ~Wpx@_Uq^e!aX{Λt<u|CW*[ q9m<#VO{7N$,IpZ}ѥyQ~d21q
-t asܴlf6X a7LF_,V1+ &O ^lxR`G)=*Sxhc$X\),6;5lFF] r)$Z\)GƒI8aŅktxGׅ7F2`1ڸZC[Bc#n1mi̴H<)AB +,N$D 녈 WB{x]qkAZQ)SHv)SR,nfS6dGF<J{U*s dٍ $+HQ@rprؔbD|hm9P^)UO(k,Ұ!Wv WluxNDRi" IP2U I"X /S`Cm/+%f<"N3xbfe`h-W,no c0$m2jhSg]+=_E!hZ7`F&J~Mv.T"H8"
-Mk9иVT} Ӓ&=6[ -"
-Qع5A(PM0)k{ȉ^iN^Dpj/؄&\ljǥ9&0*Kk~ и4~D}Ri\g\q?vdKb8FXej[3(ϙIs %`ɠo)xYƙzR=)@8"<\Ϲo^8fE,ou]sK~\x2D1y+<w+y,,uII]aӕz${*!ړyguЎ͛9iUĵ륊P9Hqw$k"^x)E|353Nҵn{Mك,`;SK31P9f;!\mq&03"1q8e@"y"? Y{]`QKcn$y5"ʀJ vtf$qNΣY[op#9$:`\zQYp[wҜet QVI5VhcM>wmĀBS2-T d"u^l6 "Z)TZwbGB/;J'>^O)<=ܑzA+"z,{̜@sqsc 5B
-nFYS 9RW_Tp/;2
-бFVc՗ҸqV Cb?;HXO#¹o[Xi`XCŜ
-VLm 3ة-sIm1`@ȇs5ux(ippG/>_;‡ h#{&4k~i=PO5PI'C.aiWe-ՠM' mT̍ .{A$0IT/35LP ԱbX)VkF%խi[c݆qQG_/vrs5l*c,@њm1qwVBpJ) CsM}IHB8amͭN>y}L*$כ
-Mm9OI 82l DX-%
-ǝڬޥ;\Nu;"6@^0<0+Hl0Ԕbmߡ?#N
-ɍ6Ϋ:u1XkhUSEoi˝^tLIG*u3RYYY/<<(Жf}dڶPl،24QM]mU߶SXRx-~b%v'z#߯K{vf-m:,$:{# +)V|f6 V;s${>5jbaj5lqLvH+X%$&*G;={(sA8А7\vmb67{Q& LѼyY7era(9N~NNjsKg3)[|em{q<XvU&}Cu]Afxu켝8t> CTNRyVM~^<z$&5rǸݶmz[ձ\˸\vF.ß\?o1VUaU!- XzFf !V| 'eڐaЎ.fu *FFJeʫv6 d43cL:˙ V>fD#q¦մWT bӐSa=X5n"Ta1-Ma_̉l,)R
-0~
+673 0 obj
+<< /Filter /FlateDecode /Length 4405 >>
+stream
+x]M Wlo U%Qa7odԷ46A{hSfFI&;CQ$ERg/7ox4}ysO\<Fu7E\g`/Ors_@ƹ¿U-ox9|޳EHK4#o HoxGUZ>|̋2ÿGZ5}$3U#^wV& )/hK-[m 5Ӫ؀/m@?'ovvvk!ҽ3P#/
+<3v3 /mާ1Q~ 4ZWB<_^fԿJxmo4=VЎ#|z.gBߜſXoI2a凟| 7@ ӗ^åbp
+N~h&*p"R ҧO)*V*LquZ8A0_ +fR!Ѣ`/ėd3էbRkxG|{ ZDj_|\:2ˍ˚5&[s5rLIwHsYK;;3s4¡'@}\}Guv |x]cvcxϸ7uh3u߾<H ﱎ+;\@i 2~$^(M'[yW'{L ˤ|4Wƅ?p\.igDbD7G Yp{aRuM6&#gZ%1]XE[H'q|\syҺӳ"FNL}>a:&=Ō\Ä3u sIYpJ / ^l{i3iSxh-a4wGO^n͚kΚV,eM\A '%lr4q/̬9I04r#RnhtT1P'qϦh/vPLqAD6=Òvܒ܌NMm;5
+y3ON-3'&ʓOiaʅ=NЋ"uk% (=J`N**\N1,"l%qU~8F pҚU(/" Qn5e_jwZ<Lk<ӂ" &;0D&KBml&l6'ywjwJ͜J|ئVcuI;X<Lzc6b@N*Vc}Y/#1bȺF۰iǻoà
+s.}s(,~f2
+XNm:)gD-cgͯ1WBjƉjˀ
+e &
+$(GIp9a˕
+-Oi[ ?/\W}?Eqhj ēC[dGrbT>I{M
+&s9r2ѳ$IH9SA R3@&_R2),T㔩0zr\l\h2)Z=*ik9PyҏsoTVwPç')5s9S9H*-3[w(m5P^(t OV# q- vǐrT !~<iGC[ǪBVC@7{ܙCr2٠B "X" ~^s@# t߀{pc@h5i"HUNStmxp 1x
+5DITM&v? =*^ByDCA9&<|\CfXnщ<R•PpsFRu$i]g\0dxJT6d`9.f^^2Q0w
+pɠ[ eARtRaD?3GrCHL\3o<@ˤrq[!,l,GQ)}pIP]PrҖ#]Ȳ璣-K~VOB n/W=ͣw&LMjTKfxE356VAӭ~}M@\phL̺#T]NQ!c'8.Pޖi!<ʙt{|'vThƥ7WjwuM%UD qnjżWc^Mёq2ygu)}ilh, -;NcJ҆ig԰85
+WdK>9@Fk:S;E Oxeh}Ie*١TZ z;
+M쾃N|V6ӳNԫ>4bUv#LF̞XÉH8 >A
+ U\AUm"[ U쬈UU9@4TSf kֶN -S@\WuU>b6AqZ[Z; wd*YwAzZj_K=VTiFvdZԇ8 B}m]{V+;AJʉa5=JhҩII=dzZfw9ȝrRǧfw+؈WZ E~X52p%]W*}>\oh&&Ý; |GiuRV6\3WcqP5Qd9],Q}[.(j Bk}c`4VpYw
+cJ9+ W=fI4af$p_A[ m6
+R X1Ct
endstream
endobj
-665 0 obj
-<< /Type /Page /Contents 666 0 R /Resources 664 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 618 0 R /Annots 668 0 R >>
+672 0 obj
+<< /Type /Page /Contents 673 0 R /Resources 671 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 618 0 R /Annots 675 0 R >>
endobj
-668 0 obj
-[ 661 0 R 662 0 R 663 0 R ]
+675 0 obj
+[ 668 0 R 669 0 R 670 0 R ]
endobj
-661 0 obj
+668 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 247.659 468.618 259.614 480.573 ]/A << /S /GoTo /D (subsection.15.4) >> >>
endobj
-662 0 obj
+669 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 187.923 257.918 207.629 268.757 ]/A << /S /GoTo /D (subsection.18.9) >> >>
endobj
-663 0 obj
+670 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 220.581 257.918 232.536 268.757 ]/A << /S /GoTo /D (subsection.18.9) >> >>
endobj
-667 0 obj
-<< /D [ 665 0 R /XYZ 78.37 808.885 null ] >>
+674 0 obj
+<< /D [ 672 0 R /XYZ 78.37 808.885 null ] >>
endobj
-664 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 384 0 R /F51 380 0 R /F23 379 0 R /F20 382 0 R /F29 375 0 R /F15 381 0 R /F55 383 0 R /F57 385 0 R /F58 386 0 R /F45 390 0 R /F40 391 0 R /F59 393 0 R /F71 415 0 R >> /ProcSet [ /PDF /Text ] >>
+671 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 388 0 R /F17 384 0 R /F19 383 0 R /F16 386 0 R /F25 379 0 R /F15 385 0 R /F55 387 0 R /F57 389 0 R /F58 390 0 R /F49 394 0 R /F48 395 0 R /F59 397 0 R /F70 419 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-672 0 obj
-<< /Filter /FlateDecode /Length 4649 >>
-stream
-xˎ񮯘upNus|rb#S7n4HѰŪb.r)QO wvwJqky@NaNF3B5;}ڄq=owjK}j8\w钎0k5GרM?baSYFfU q[sQb̘?5?XG`=$G/#i(v`M^3Kc;~ Y:CQ <m")S"~ml5m_Ϲ
-@WUPóԖKEZYƔx$1A ǙB(0nU?( z D!0QFqPHHc$-C=&zQj, cYF##ԠBT^iT3_&WR ci_VjKF:_K^KAg&>/#!Ep)$5\D7
-c+wX
-+TQF$'P ִ̄žC1bC8ǐǮҷ 1 pk
-\fطtp3E%P,eR\ĺ&T>ze,B gQytèLFf
-/ E',_ K{V GclY~\liX>!b@ ꋱR35xv[}0JkԊ^úb>7748lpg'*ab8u
-\F G"Qi.fO:D)eiCzD9RŭΒ_٦@n'h!xʩOX+.5?N-*Jka.k'ޅj+H;kaC>u 뉡ܵ )km hck-C l9͕Q%z7`JsB5vԔg|\d韒Ė8IPSlSgˌ:E13Pl0+@P
-<6J0WUێyztSD(⼽iNQ
-5G]al,` '=잜q)cCQY/-Se
-'~"Mql)dh|-Y5|DTmfBhۇi$mp?Q9nt6RaYe}
-p蒳F%ehi+ztf&u*]iB<Thu hR6BYk*s6 'b|DX ř}?Q +v`Y=ޛC$C )
-/lCjPλ/7ďWwrF22i><SIiԓB#o0ӃȞ#|׷[F*0K=ft;n!1e(4Gc \{x`i9[zY;Vec_撶D۬hcs 1;bfdO҅]Q]?f,6}0g]H= 2))tzmm'#L™$Ǒ;kN%<] ȫWKߚmDJTD ]ǝZd@ӓ]= -2FZ4)wRϵ˔ ;գM6U>b2:եӺ.*I}t%lzY.pcƣ,ڌ;fvEFU74hpuYh_^d]%^1ᡩ\-eăIKhLqЮ]䳰}ԑsPbb?Oj`YYm +<*/ؾD
-Nƽ*o_u" 'BSK%*yﵳ|l܆7F.+H61$]2dZUWwl+[|㲭ƷA_GD+V^ҡ3F憉K{!;[B\U"h;(8 jUu ɯ96.Q°ʶ=d꓀H%N'Z8_nC(S
-ւȔ:kxf#ڴwyw.@o%oZO( U @oě S2[lM@J6-J`#hRJb@o%sZG s3 m#Ig1 dLԛIs %藬R +Gg8#[-z\:p9u0[ٖ/ZC}),'03Wa]0K<szͱf
-sZc~3#(NJ6Oc|6"1N-&n% m
-]h8;SE0!3_|]F*rn[6fS0ͥZa틞tUKtھOKU@ߜrW*JxKDʷ_\4URF,Ξ4qFڵrBbǹ-WomD%E<2Q;׼xa_RiҎ[i
-8c} yuW۳ ^¹4
-<_(y%{,O}NQC#V]u:-"O; 8tKdy4۪BXz_2_Su?xI:&`V& SOt( \ +
-xReGG^J/ѿ5m߄T;S)jXA~paRmA6
-@;*zv~g뚓F
-dW])AMmܫˆa*Z*h*/9_TE<@}Y#OU6PTז z zA-1BnQMl)i`u' jqDчNtLS#LBUE9H5.&ê*E5U)P RL($TUK*Cf9O`lgx)Kċ;׿z<oa^{Xs!˱:F(9$IJՠ \_PwAI%L3eU}~'UY,'zaޏR
-5|D+4m]_Y+PLh؁q+?~'B$雴c JOU([Bu7[ GK?'!5Xu5ݨ?cܟm$?(t u@P6|K9Gϰ_#޴%xY[3uܞ>R*q?B,
+679 0 obj
+<< /Filter /FlateDecode /Length 4600 >>
+stream
+x]Kﯘuz 8'ź9>9`_ S7n4@pŪ ^J~?]]>>|?>0 'v2s2/)&~[mRNq}Y.咎0?k5'רM,2F^fU ~?> p᳦#>\T(1qj>1sXz6(|5ÿ!젚S/އP#?B^x&ҘB<%V=@kl(ST0J
+&t.ewUۥ/要 eoY^" zhdUGp8GKІbq{`9NBּ"xVAV
+z)bf9QOπDg6\%*}^ QM֌a Ssl0mH>@OPI
+@S
+5s1~K|߹fN=jn9 5s
+xk PBwŎ=ϹkYqb,
+k1Q5kX7 O_?ZE (?׭>nh,\V m*CҜ4x+9b"j;bρZ zhΑiXDǬDT0f Bt5p$o4fGZ]{.FDsHɘ0Qk9c. hni V5 "7Ю'7 N$&ͺI
+AzCˇ9%IS1HRAǩhSc -Cl9uQz7pJsBvgV%\0ҋ1.dAd5 k3FqjʻQIjm |'RHsr^+ W<t}G1{i'x0_!TCLeݏQ`݄cKvNar !f䚜M,^ \`ڸ} KFJhC*pc1
+*tSpCĐߦ8bs,z oc8^G֣#00 HXҲ Xa,UJXhJeS{#2)Pbq}/pg0FX@ZfxoϘ
+]tOn{qFCz4)ǤmR&Gpt#.z?02d/f+H9t{ Avي5R”~5I 5(] [vr-3V}%K}_6-ff,'d/2]Q]8,6ctS5CZigI+ɰW6v(f$8q_ +>ɀz)D&DNpL4ĵpɪEsf&sWOB˱6'y⒀;UZ咡 ;ݣM7z&d ['\oࢅWSWRfw(c[`WRmDF+7huumJ,}[A+&33Dp ]*>v
+l/ Z 3YrSu-a+7ؗH{e[^]~'`25q x)D- ry?|j=DHٜҷ;E{RF(|Д`%Wm*ݲojO.<C^pPDwtl漸}GFKF
+lCuyb5Wj9Z9XX`\Ty֘@KL5_w+_ԉxK|!m+ՏpxfٴbyGK})_Rk&O<z{t
+pJUz%e 
+zf&?>F<6s/)py
+#/wd꣫\1xf^rDSٞ8
+3 @pS/ O^4Rw;S N}/.fsvKgO.qNOh3W?<uH#UI@
+i;/UMV~*J")=״[ٯ?|VES=Kϩ'Q%ٓ&|_sm&RAfl>i8h$k7y%Uz/dK`'zγU/V@<] ž]h=j;)>!J>Xyg)"W~8D]/]
+>N~~3basXZ©HS )'С{dT/Ua.Z9y
+w4^n5d c)YJ`P[>pb.Uí>[paB[ĚT|*P1TR^j T%Z[FmTUh~ZKYUx>%>Eɹ`ՒKEv.)EtyTW\eCƱ'9LIIeahY4.0{[ 3ۣ
+v)Bھ_,Y_ 7 9!:nܰT1֏0k =HFڥm3|ύ57q XTkdILl߇_dx}-n3y󕼗bpmːC/ X|&IyJY_1b{Gb1A{񕭢K̈́9/?8)\-oTm:E([nI:;<M>kDx/ͥ8Vp}nĀ1N@CLK᷎?lM9eB?\ razɏ|)g}⟽"֫U;k`S?Qv`
endstream
endobj
-671 0 obj
-<< /Type /Page /Contents 672 0 R /Resources 670 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 618 0 R /Annots 674 0 R >>
+678 0 obj
+<< /Type /Page /Contents 679 0 R /Resources 677 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 618 0 R /Annots 681 0 R >>
endobj
-674 0 obj
-[ 669 0 R ]
+681 0 obj
+[ 676 0 R ]
endobj
-669 0 obj
-<< /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [ 111.059 85.34 307.73 96.959 ]
+676 0 obj
+<< /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [ 111.059 109.25 307.73 120.87 ]
/Subtype/Link/A<</Type/Action/S/URI/URI(https://tex.stackexchange.com/questions/685755)>>
>>
endobj
-673 0 obj
-<< /D [ 671 0 R /XYZ 78.37 808.885 null ] >>
+680 0 obj
+<< /D [ 678 0 R /XYZ 78.37 808.885 null ] >>
endobj
-177 0 obj
-<< /D [ 671 0 R /XYZ 79.37 533.569 null ] >>
+181 0 obj
+<< /D [ 678 0 R /XYZ 79.37 545.524 null ] >>
endobj
-670 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 384 0 R /F26 404 0 R /F20 382 0 R /F29 375 0 R /F15 381 0 R /F57 385 0 R /F69 402 0 R /F23 379 0 R /F55 383 0 R /F67 389 0 R /F58 386 0 R /F65 387 0 R /F45 390 0 R /F40 391 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
+677 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 388 0 R /F22 408 0 R /F16 386 0 R /F25 379 0 R /F15 385 0 R /F57 389 0 R /F68 406 0 R /F19 383 0 R /F55 387 0 R /F66 393 0 R /F58 390 0 R /F64 391 0 R /F49 394 0 R /F48 395 0 R /F59 397 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-683 0 obj
-<< /Filter /FlateDecode /Length 4662 >>
-stream
-xˎ>_Q졵zP/aY 9 ["
-V7`Ou JIA<3ַ\yؿd3pg;np2Ph8ڡL2^<cyz]p \.W$TK->-SFДZ.V #$*'ؠ)]N]-,K:J.o"Lk}T
-/7
-.8*|nWkd7oCDŽЭ%
-.zz/~
-KОٰ) {]541i<
-FbDN m )z &ފ^;L4d ՞hQeը}s0 nagkœlmzRCX&\b9nKn{HsZ=4  8lal^ EhaƿM43`Bv*z矗^8rڨ;!giGsfg}5Pδprg]1eu`!݅<`sT_yP$Gz
-Kn'K{h}OZ ~o2:=RF5N4.u+;c[{x\ Z$)qwtN/-]o~硼PCE|x(?ns3P2ƐFoL\dm2Qq٦OQjV>]ӓwh i-:8BY4>Hv-zG0{Xۦk\I냻' J9EF.U:0ghkq7}ՊJ zwo,^֔@/"5>=gbu=`-}]H4>#>]'剪yv+~{GqQq(!=A^+Ű4[ee)Qv 3a~3 '
-@I㒀Ό6tB؉p?ˠM6 #R%# C$)JhL .U $!q ň<&[n9fGɣSD"q5)& QƕUG5v"CcX V_E\͝/#^ pofOc7pgn{(T+ҳ{<ˌ7EWg?9Ey5EOi-ZwusNrش<{[b#kJs]'ɪ:@QN }bWK$Za*t/]D #
-`6y+L6Tu<ЄJ/\VʂODSxI3[ +Yi7C"筚""8tvԦs&x&_hBE.S%p9UAWi0j+RжC/;֘젦d J ?Mg*(̉R.w BPY\a"o$[WV9ͣ[588Қ0 3ӒƑy6`U嬙7_v̹Qlb+' ,m+L+WT~s*I=ۜsי9mfəcEoc^Fn46P^֋.dMIlXMYzJ1,Si5<ՕMKl8bxBr1)ROI/$]=uN;/dL)5u4\^k,ϭ6zkŋ-pMI6vUoxfgnSt`ʫq1j\nJk>X7j;֣f`.<?aI =)C<2h`kb')i*W`3cI]v
-z荚~ε9l^j}\qa"t\[EcnK3mlȍ3eJDOv6)[#6PūzCnZMx2ӝ9rg$[f=Ĵ-3Wy8Gy5{)P^`?I7N8L<ziNlL%Lj.$q ^o͹n0W0!,** 1mpx9%fqj6$1\rqh>X4IJ젢z:^u,Voxnsy i˨C-J#JI x -UIqTKWOh >"Оug
-favh+of(CS}=s{.3wZcN/gNĭ%!tUl#yˉ8Rfu8ᧉ3Q%ІP=2(Bv|'hkaznmQ"G.Uc;ԁ'˨:uBFfHMb@J+ z8Y&`W[˻ iZٍn(R@eV@P k8<::W>td%{'A9*%P<7F z^.pqYTP|814NrH n0(Z Vq'l Ā NIX@KnJ]C#
-eosm|#Ԣbq@rAl3W/jnGm^ՏyZ"j۫.Nww_= C0q[Rq_eO[dü+׹\p_Xa^t<bvB@^)Rw#7*>w,7L(ms0KՒ<
-hIU3@]9ȕwvm(堥RVQ >"r!eJ gB#2կO^{TVhz|כh}=!֫|N˓m@07Rzpca`
-vS^)V[AkSTX7WPTS_cDc!kZ9nyj%|6{gf& <DU[;6L"DW3CsQ4֎ϻ[{ДBSF~(邾Cz0
-JeMI5 n1~-ʊ?$k7v;VZ ', Q Y3#t˪Bgnj[uwuk3z l=P4rͥ*mZ駐v bNə|+'bN}Ba0\U/Hsk? #t*]҆sN f6ҽu;,,NT4Iw""ʫ.!*둋kfx_[flwpS7bt߹h4Ffq^įn^өRn~kvzc 19kTQ F'F_(žhju2E'ƭG8J?D"[BdɦzM ,AsJ?!t3C0939ybu4IJA\J%GRqO$ӡംLQAÝl7 B>}5^C‡d
+686 0 obj
+<< /Filter /FlateDecode /Length 5116 >>
+stream
+x]I$;nȣ PhS}4L6|1忛C)PݙJ>Q$ROﯟV߾
+2?k7=K9Ch*>˺֕A]s$4hݍ g8.-_"pBYǴ'g΀R_o-
+혲f&bdGEި[B:Tƨ{6d9.J-*C\lKe8XK9\.U}$m}Af)rA.\l_4#`f{na 2wRkPs&řO݀@7}ۧosL;y{Jd-Z0(?%N ZU*Yu;%8Dw gڈ] rWK |ǽF{.]u3Lv^nv'~_b|O^{ !z#꽖=f={ fI7Lvnv'!.I2>BcJrc1L(ñʑkI:9ғ`7b?i 0XL#{v\LOF@Py^u/Q})9T
+P{
+p؍F~.(B,#:dX1CE /Zt֭r)~NxnΗ+NbTBJ<-gxxpH-2 ˃@ َY )Zw9qGlP6<31GkL흓I3'"+P$: 6*/<0
+*sEJ"N"UVbf;R>Yp
+*tqd!_񳟳 < .46wCA= r ^½n,If;uү%ɜ-diDQYٚ\jv3YdIDC_H+@=H{Njbkݰ9^z523ew3]zj|m9vEMȵ,T/-M:Lz<Ԣ8(}2uQԉ~4ιTbRҷ5ʕQclۺ聖I4_ӛ/,SL)jKjm@MaWt$ׂj+}:vƴclcS
+qXcf^FC-qEhF+VL~ZH-$8pI~ ;3f ּNUk;
+*TE2[!%S$W٨D4֡?!)_*:[4었.,*|g[
+v2xF+x*GMSN.21XmȮO{Lbҵ K.,8S%/qd ex+QFk{5T$qKSH"&KSɬ"xmo=`G&(EX6m pA(+lvX؃/0N8j2wr-i)-f@,iUoVKKǒɕyW\ţF$Qݾ>iǂۀVڝrXR+󩛋޵GQMF)\ 'm,Sy?mv>IeKǪҁ$(E{zٕF>qL8_4b{W:u&NB!l9.en|>ڼqU,$)Yb6̜#yp,v0+ȪWD-{e%w6eMX,ެ]匲 uam{q7dHK@{Yd*E|^iwY';ȉj\Rڋ*ǐѯ,I†/@j M@~砣$?7X6T?(+HY&i|hv/h-rtaKrbQ[3nf^-s%=ryg39
+9ŦQ2}TL҇WO|`^ ɪ9t42:uV\Ο7R`?1Y1=dR,O㽗zYÔCr d\*uM9¬k3%&6- Q> '7/O[*# MVm* DSP(ahD`gX ~Ve3:4v
+ePP(z+_'kW f+lХ,`bˉtTVZL\Wܧs,g{a/ل,]^لLԘ?N-[0Ͷ[_Qyh<9$Ru8B4+VךHi'rc3h,ąTwWlBJSL11/ۮu+Qm
+ (1&8'7!cݣRPAn Q,\(+ ^IEs*nВ~a'SiXH\^
+WA
+zPaUgKIJӆ>wyFN"%0AFb4wE(kLXMb܉KJjEbFq_/1f|Nb|ԯ⣫vw\QߵoˁQ/x+PUܔvږro׊qYˡC~v:ЏQ,b)[/G㷄噀cL74&R\W8p\G\aq͡O<M|L 3a#`g'-$4H0 6a#FF6.xg$萝 S v,@1Oc Aqu;A&'_c
+o1
+>ԔԔxM3cU3/0^YAPlO} ]C0(W]Yj/&4a)/zj^^ .>}LMPv6*X!PVn=p+.D+P ௸?r L}Сw8A&'X
+*8oàlZM r!Goݬ
+
+.{IT} riGyށKLwoMzd]a[?6/\ǘF 0-_ct:&]
+dFPׂkϜWRƵ1ƭ ۻ>,ǘ'Dϼ><,J.{qXֵ1N҇wv)Q6daak~m}#ǥYETdByQ:htĂS7񣧸(dUvQqq.~/Jزgf5ŭ1ygԻċn"0"f~"˸6OR62.^XtHKŵy7Os/W˶}Ʒz;w+|X ]15*UF-
endstream
endobj
-682 0 obj
-<< /Type /Page /Contents 683 0 R /Resources 681 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 618 0 R /Annots 685 0 R >>
-endobj
685 0 obj
-[ 675 0 R 676 0 R 677 0 R 678 0 R ]
+<< /Type /Page /Contents 686 0 R /Resources 684 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 618 0 R /Annots 688 0 R >>
endobj
-675 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 423.843 591.898 435.798 603.853 ]/A << /S /GoTo /D (section.9) >> >>
+688 0 obj
+[ 682 0 R 683 0 R ]
endobj
-676 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 313.091 579.943 325.046 591.898 ]/A << /S /GoTo /D (subsubsection.5.3.3) >> >>
+682 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 363.496 594.869 375.451 606.824 ]/A << /S /GoTo /D (section.9) >> >>
endobj
-677 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 402.649 132.953 409.623 144.908 ]/A << /S /GoTo /D (section.9) >> >>
+683 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 247.126 582.914 259.081 594.869 ]/A << /S /GoTo /D (subsubsection.5.3.3) >> >>
endobj
-678 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 425.96 132.953 437.915 144.908 ]/A << /S /GoTo /D (section.9) >> >>
+687 0 obj
+<< /D [ 685 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+185 0 obj
+<< /D [ 685 0 R /XYZ 79.37 665.524 null ] >>
endobj
684 0 obj
-<< /D [ 682 0 R /XYZ 78.37 808.885 null ] >>
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 388 0 R /F25 379 0 R /F16 386 0 R /F19 383 0 R /F68 406 0 R /F15 385 0 R /F64 391 0 R /F55 387 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-181 0 obj
-<< /D [ 682 0 R /XYZ 79.37 665.602 null ] >>
+697 0 obj
+<< /Filter /FlateDecode /Length 3558 >>
+stream
+xڽI$ޯFvP@eg
+h7|V ˓+ {$е_=O<o\mxBQO vA;Hiǿ]B30m/i7iq7`}Ι`a؏W!Gk["6TmV
+mWb<Chݥ 1z<%6p-ODkl)at^7oy$v-<11$ڢ7\<BuE%=Ώ(\n0l&3Tpybm"^1sLf"JDԻ[%dce@0Y 8ڼBU4բh#V]|&ez;U*eV&)z?漣yQQnD=`oM4:-40Hu+ɱ)Y Oˑ&oDg.ןaaʈ Z#햸nDM)O~Ayu6GAY$k0S}]MtJ<ZbJd`Vw@)7l){hUq +00
+,$ɷmGI|
+A.%UBh
+6JPGȴ"r@ɾ'ƉTNw?3^wz0f#+< >Sah%?qu"ץ7[Zב~V>Q-$&Yjc# >nVo>qBZ7f<W]/@wܕveкMhĀ\4z" c ynjGYM9YsʫZeb4-[Dχ-l|LXPE^
+E-Yz(.!)H=ݵ2Fgd7 !Y6k/=WLqD15_?c!C٣5D^33r ͹\vMy8JO}_Zm+ʮeR1'f 1Clܮr(.sCd.AԢ"ͻ̉OhqK|Fl_z9 `Х2Nio)_ڪʁ:a[e]JÁ,R%KƻyE*xĿ
+`gS\HǙn={@ rEEKOH ֶ.R$7JUrQ
+Q]gJӋB]gښ^BgMO6PdF林koH†m
+~k>)ˍcV^d8J$鿺x[&K<mL xKs}|4@.}d(en|aV__6cˍxڟya<
+>,H2I!!Pr6W[#0[#,f̲y itet$7JO{?9?sQv=#t|unٻg16>{iz]C-o/Ge~@wХ<=@ǘ)|4t>#ԳJ / +}܋bb@Ru?j@Qzꉌõ N/+I.2U\ -j粖5&f%Sn#*O4\?惑onR ٴN/z* ˸{e3tRŲübi!"~NZV@+歡(XDP%UH~CJ*#;&\xU!Ar
+f4ov%[6~mӬ3=d
+r?B._'Ho%w4vhs LD>3ry,$ӓ6ޱIJQяaC1?P"D
+! Rd~{d﷤b_ gj&!!ydmϳ%9L{@m$  ë̓ɪ/BڐNk֊5uڰ4s|)$aOΔZaBqY6.[ZSQ2\=˛(n>;)0X>VHwF%sۜ-q*JP8t[Sb6 hɗe7pT_Mgf)tue#ù};O}'DC [\3
+9枻1 m{_&jaݴn\d,^%K=3"5 Kh[d[.d|#i2UtBmCz,CͽE#Ns
+^e-wPS^6n#B0-ڰˊܽWoi{n<s;趋Vq<42khIڞY4fĶI{?~/ȑf
+endstream
endobj
-185 0 obj
-<< /D [ 682 0 R /XYZ 79.37 248.911 null ] >>
+696 0 obj
+<< /Type /Page /Contents 697 0 R /Resources 695 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 699 0 R /Annots 700 0 R >>
endobj
-189 0 obj
-<< /D [ 682 0 R /XYZ 79.37 209.406 null ] >>
+700 0 obj
+[ 689 0 R 690 0 R 691 0 R 692 0 R 693 0 R 694 0 R ]
endobj
-681 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 384 0 R /F29 375 0 R /F20 382 0 R /F23 379 0 R /F69 402 0 R /F66 388 0 R /F15 381 0 R /F65 387 0 R /F55 383 0 R >> /ProcSet [ /PDF /Text ] >>
+689 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 402.649 657.994 409.623 669.95 ]/A << /S /GoTo /D (section.9) >> >>
endobj
690 0 obj
-<< /Filter /FlateDecode /Length 4075 >>
-stream
-xڽˎ#7_hE@t {܂vgK=w=lOrp]%Q7Y/O/<~}&3o/b=b`܈o_8~\BJ)Ϲ9HΕkh_gk{_Z +U5 ق~&L孽;8m_fE)eF5a0
-k(H ښR$-vqZ38;PN#J}`O84kep#jt'wqi>q.] R{x$
-@uh'FZY]d,nqk{>½-&8`XV`G@9.9sV
-|".8=B."uFY*~WXWo4\' Lϫәeg)IfM<
-3㜎fV?1( #W}snW(_4(%Q{gNSi< cj3(!(SX<~ ;+}&xNS!c6c> =d6kfF\A1vNmD;h{
--HLS,S&*P qi-mJ"nEB/URxn<gJBo"$rɘ3½^)Ju.o-=o2y5_tt/(pl|LX?r@axJ;t;d2Y*ͤ#1cHz^<T#`֊K{O661ΠuꭊFIvxORs
-c۵'!lVxͼr#%ZhҶ|ګ z2Sfuj(((Q[=[J@qRK/ [`ptM#g29w3]n )ݗ0 a dk npV(]s?f xk*YkKTdPZA+E>619i
-$5&&?R@{1 qhBg
-{%:}6f{mg)iiθh}1tHa}M݌ Ϯ{zӷ t̛l0ŐRcIRoauz=;zLE -lqhd՗nUd*.AzBfB[ʞ9#Ggՙ @F{1B_,{ij%?Rb[rtSqD'jT!
- CA->F$17 c])Rߵ6[S)~Y>[U`FmJ(JX~Sdh~ޣhƕNXfA{Q,<Roƕ6~1h#cy*6AhYGGoVPFOooG疋t
-$Ьp=B{ ~H,mz+O.]-e-1E{t}O)wȤuRUQeO}9l#ȳd3ӯy֓LWjzƖ') *IyNG32/^|~h7qG T;S15Ja5\)GtO^ζ!uRtnۙm&B x9˔1R-G^׌RS1KO`-פ=ھvn4WmnJ%>ifh@3'sdo{H#qN+W`ԜeoY2Y,\hL<&e"9q4%-ae7FO4Iul;Ԇw
-
-8c[G3𢱚W>٨l
-H(<}ȣKtJ%psb75P?뚇XPwrf9OVF>NہYSD=:ZPԡ pT\WBM4,0iӅiPByW3#4 YGoFQ*7e4 B1<\x*[)Z<NѶ@P9,)jvJ
-4rr@O2x')DG
-ɡZ-5Tâ=%/FH
-ܧ0;F;a!|(9ړ
-FAjp]ľYz؇:GxR̛t\HHfsԏ 1,h@9aʓ䗼()s'%?<7HV/|鬫@[Sl :fW/0`O)QHi{<5]͂?G >iץ#&OS<L"-ξL)wbRhQ3SB[_ 0ױFQ$V2Ƿ!V4EɔF]1WKs*ta29Ih%Z9JWI~Qogk~4H6$m(e_ʄJ4-F&y#F+881)WU!#CPL֝ɝ3_[B͙`2wohV:|-S{Ȩ _ʤ p̂^\ek+2; tt|lO
-!s@'ʉ5IդJ+ey$"ݥ2q@*=
-i8 n<zD8^id~Xmo0>:viak9r
-endstream
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 425.96 657.994 437.915 669.95 ]/A << /S /GoTo /D (section.9) >> >>
endobj
-689 0 obj
-<< /Type /Page /Contents 690 0 R /Resources 688 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 618 0 R /Annots 697 0 R >>
-endobj
-697 0 obj
-[ 679 0 R 680 0 R 686 0 R 687 0 R ]
+691 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 120.984 577.576 127.958 588.804 ]/A << /S /GoTo /D (table.caption.1) >> >>
endobj
-679 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 120.984 757.853 127.958 769.081 ]/A << /S /GoTo /D (table.caption.1) >> >>
+692 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 143.679 577.576 155.634 588.804 ]/A << /S /GoTo /D (table.caption.1) >> >>
endobj
-680 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 143.679 757.853 155.634 769.081 ]/A << /S /GoTo /D (table.caption.1) >> >>
+693 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 434.871 287.354 441.844 299.31 ]/A << /S /GoTo /D (section.9) >> >>
endobj
-686 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 434.871 467.631 441.844 479.586 ]/A << /S /GoTo /D (section.9) >> >>
+694 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 457.583 287.354 469.538 299.31 ]/A << /S /GoTo /D (section.9) >> >>
endobj
-687 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 457.583 467.631 469.538 479.586 ]/A << /S /GoTo /D (section.9) >> >>
+698 0 obj
+<< /D [ 696 0 R /XYZ 78.37 808.885 null ] >>
endobj
-691 0 obj
-<< /D [ 689 0 R /XYZ 78.37 808.885 null ] >>
+189 0 obj
+<< /D [ 696 0 R /XYZ 79.37 771.024 null ] >>
endobj
193 0 obj
-<< /D [ 689 0 R /XYZ 79.37 724.862 null ] >>
+<< /D [ 696 0 R /XYZ 79.37 734.627 null ] >>
endobj
197 0 obj
-<< /D [ 689 0 R /XYZ 79.37 527.477 null ] >>
+<< /D [ 696 0 R /XYZ 79.37 544.585 null ] >>
endobj
-692 0 obj
-<< /D [ 689 0 R /XYZ 226.44 223.171 null ] >>
-endobj
-694 0 obj
-<< /D [ 689 0 R /XYZ 232.109 211.122 null ] >>
+201 0 obj
+<< /D [ 696 0 R /XYZ 79.37 347.2 null ] >>
endobj
695 0 obj
-<< /D [ 689 0 R /XYZ 195.137 178.32 null ] >>
-endobj
-696 0 obj
-<< /D [ 689 0 R /XYZ 195.137 168.148 null ] >>
-endobj
-688 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F56 384 0 R /F55 383 0 R /F69 402 0 R /F66 388 0 R /F83 693 0 R /F57 385 0 R >> /ProcSet [ /PDF /Text ] >>
-endobj
-703 0 obj
-<< /Filter /FlateDecode /Length 3784 >>
-stream
-x1W,dh #ٰ{G}"G;6rnȺϖ"/"?|WEtڙˏ|QB^%*axt˯/R~JW%%ן/~W)-37|~[rN mt@р#$ʿ,ii h\m?S ga !9M%;\YuSW=* ۨ!O^:)e7-7P 3O𝎉7\`*QtQ0~"A:93%fM=&oU|"^fɪ$zSy״Ӿl%!irfvG,Pᚙj6OF'&PtrV FR{zյ ^(%&*zOM8qȗhW٬&Ҋ6rA
-U*Y\v+3utkB-7,LH+A5+֒t5=*3TOol~y<ŠVeBE۬0g[:;kjW@.
-ݼ^l5*{YaJ;bq6œ4]&LVɆ1p/vԽcm_Q)-Ӧi(>RictpH kE̴"cijĸk"lA(0' &(@U~N qA*nDPF
-r9OBfsuw<DKƝtǸ7W\XF1ÌOt7dxavWΟvߵ1v[KqXkFoUw.Ѯ6KE: 
-q!e>R |bSЖ}fɇ< V~P:3 #<
-^OM#m{ϫәYQBٰ4rc-5j EaTgo5zaj>
-<n%þ#{fi{6!>Z
-֡TYIAiItOxѽl&cS܍V0_v b/60ЌIXg0Q<XfC&CwQ\"G}Hq:~andRdy[DakS<tP4ԟg'i2TMcd[|9+ C3:U搪jOjeR{mKh4Sw 鹠c; ~[-,a =sҏ`4W Kܫ f3t. a`ЎgY[1 }rK~[C l0diJ@d6rm
-34;̲Zv;t?Y72=%7Tןl{ 1zCL)k
-2ejiZ{=noT?TK$[>k@ ʸw}a&oY<hY:
-MdgH?y QoB˥}  yg`
-b}n2-bK%Ax?HĎ^/WcEFvͳ{F Oi_Ójࡢ m sͶtPA zkӍ}wrW0V55 >K7cOƎhGeӓFTu:=+rt*INf'Gs~vڧ1g[V 3[G噍"8:ƸU,&BϓCZU<1!5؀0]Vx\j'19<i?wI<H]̙<v3^>>f2U^Yktcwi5X| wBY6.:J< &iii,`|Aԃ,+/SsZ+~u|E#/Gł?g"FVo7|w"s!y{0xSi߿/ݤ!hCUT3`ML'/(_̩yrs^ oھX 7|Uz{s}}'oSL UvXæ}T@SMҼh8}7es7qIĈwv6i"񀥁07MϬf+8 [Y 3
-T
-endstream
-endobj
-702 0 obj
-<< /Type /Page /Contents 703 0 R /Resources 701 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 705 0 R /Annots 706 0 R >>
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F68 406 0 R /F15 385 0 R /F56 388 0 R /F55 387 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
706 0 obj
-[ 699 0 R 700 0 R ]
+<< /Filter /FlateDecode /Length 4566 >>
+stream
+xڽ\Ɏ$W4} |xnN2e@'K%3Y-j+  ?_&n"&9'o_~AR//}~巗c |'|vcnyl߿|``iX
+<{kBòaZC؞_/Ȱg6_ޭ_3Ks`8>Eyι[$a>&a|rL d6,p#?ǫ+W>0c>4N?+e(.JSRN;rJGN* ;{ĩ(Q/s%lb+mTsuVaE +
+D"'%P1U9EU^`G1H[wn`TeZAÜ]Pf:U< AjEZe.J!'%쬹CV4q'X{};
+ZrlNN\Qt~7 \s!?a J3J?A}O3CfBBiM<(/U3,y *@k+0
+Nha`m灷?x j>[ d!'Lr`4H
+or*Щ߲ٷf!`a"'0A{N/
+gOG4.?CVh~ms˄vJk4?g6UܸR\U_3U_@?[,:YߣR"dŠj{{}Щ4KF>`,9A.EjAδ&M u 0ױ A*,@|h}`B͌H>/J@ƶ'-bjJh"cSDW6 k`l (5Ԙ0X"t}@- W7䪱HŞJ~ܗ4wZWrʕqeǧU+;A9F\moU3e&7`sח`us\t|6v}} YVpҙH/kO2cDvȁ dx^}u7̉I \%s26zuZ]wCO1ES9If D-(_^;ŁV}|yDF){*
+j[|%Pį+*usP# GkFnpTprd :p;Yp_qmQg[Hy| КH2!x!
+!.3>^RJN]VB0h*=WGBaW-bˏb'svY{ ~Mrə?1OFs`3c:}-[#QFp[]Td!)$'ET̃<@
+18Ptdx~*"O[f|>-Ėif.'s/su'Q6U<u]wW+f2
+)$i4[[~]ݷĕ[xʌhۢR9F1!vљ<70QFe6mz[ŇiQTGDּ mq:IUwqJґP:sg]F?ƿs)
+!|z2Y0Jߓ( |n5O29E:3`¢R !|4/c4ʞ[B@]U7.:˱8(oG"H=j q\ǹn͔wւJBbeÐeD'J]zvf[=mfkx+8`Є{3-ڼoRX$mP]D~HssiyLsեzآ9(-%h,*O[QSO(MN~L~jz3E6DK3=K'I*|p8ɔQ
+D`E
++_Gr+)N!PS!0>Ӱ"dсZGA-8$4X24Oղ$ISq[&^\X.WfְʤNA/9b"lَĶ`nHyÃ'Vn0U$+Mdjʺk+fŽ#VngC.j]!HzW s^.f8 NV81YIosC4yPzړ^k=@֩V{B#(L1.,wPQ+ɤbŸpî=swzo/v8Wg-[M)3~.F;P
+0r oP!X9/?+9V kQ*tgEH!C>
+3?4P^wO5/$/@|NuS' 
+
+)L"g &"rN~*sR)"'Hf\T7J.e`
+'cI<,8dV `d8:$*%[C33Ma[wfX6zXx:VOSͰN* <SAD JLlw遛qSg!zn;9QрNAO@X񓁹c!IDz&.o<3ۏtόwWS.kaFn>v4QȌL-J/]%.u تOrʹŔsI<5[vL$%N*rd$icYjILuJ5e ]}AOFۙB$3c>G9=' ,ۖ[팇b}]:?Xr3u5JV:?bIzOI˼5?r}!Ȁ;9J\ WAJbz"Lnx\_]Bō/ QSUxKud$/eMI Gg{q>yo?lʞ9ȩL\^Y!Ǝ%)K!JO4\Z{f´e˓5jnq!& o
+ԝxu%nfx6wEd+=Ļܿڕ.S0 d`9Don`n^7B(){m @lH́*DTSGOOyȡi͈ wk1n^ޒzhp|mL
+ІzC]CS.)Iؚs8r3
+SƜR ,dY͍nW@ 9
+%%πaVYS~NUc%)煁@1ߝzk"ʘkbͷYZ_*NoOe
+jNR²._5q'ƶ J9!m[7y'/uŲ;]{hjѽnJ<w>0p?{D7
+#N7jL ?%Z@tl
+endstream
endobj
-699 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 318.818 365.604 325.792 376.553 ]/A << /S /GoTo /D (table.caption.1) >> >>
+705 0 obj
+<< /Type /Page /Contents 706 0 R /Resources 704 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 699 0 R /Annots 713 0 R >>
endobj
-700 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 342 365.604 353.955 376.553 ]/A << /S /GoTo /D (table.caption.1) >> >>
+713 0 obj
+[ 702 0 R 703 0 R ]
endobj
-704 0 obj
-<< /D [ 702 0 R /XYZ 78.37 808.885 null ] >>
+702 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 318.818 197.79 325.792 208.738 ]/A << /S /GoTo /D (table.caption.1) >> >>
endobj
-701 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F56 384 0 R /F55 383 0 R /F57 385 0 R /F58 386 0 R /F50 374 0 R /F45 390 0 R /F40 391 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
+703 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 342 197.79 353.955 208.738 ]/A << /S /GoTo /D (table.caption.1) >> >>
endobj
-709 0 obj
-<< /Filter /FlateDecode /Length 2710 >>
-stream
-x[;6W( =m&3ٸKnU|Zfw@3jH?_)J߅ߟ(]х-a-__)5RJj <RP@N־Np%^/ҷ(a6\Spὼ=t|TpIQ%xЋ~*im7ͨ n Qs3tgjq0.\z\8D:hgZŊ羕 *l(Ekz^5IFң:/U2ԃq% ,ke8/n
-}Y[ [Vf8jO Pl>(H_jq<V߿JEkJ,Xwp;J&-m2<o=NF$1'a2L;ޟto*3,
- Ŝ)0kL0=1l@dt+'#9촆 C)Qw2R+٬i
-5J0 u5E @dLfZuf隥g#Sf9ĦYvҵ( zY`xnQtZ *忥Dj>]@$0x-~px3g 7J'c<pdŧ
-sZc
-j{V^90-s.n( DI̦+UYҲsи%}7gxVڭl̊Smrk7, :9 -naQf?aw%aj4sݻ{=8 -2ijx{Jcm#hc|4:tpe977f7Dyކly*2FGla%
-ȗb1Dϥ7*] -N"eDͥ"v/Lpnp]X `߶cOͫ3t$@|_Cohq{-i ׶]"̙
-|R-cw!d-:Aut?%Ps}@\$0G Kٷv.L=.eay^sXmTޱZRJ*QG+,V25Zz;9rp֚U4 8: ,Y6Ҹ<U"zWW_}6Fe?eT7'üĚtةŎ z̍\wb 1h7I{ɝl)m-e " h3l]6*_'͒<߀cU:酜ƺx}lxZM$f3HO9l+1Ze2,WC-焺w[YO} h6Yy$F>`Pgk{@8J:‘#Jj
-L|~5}5֗B4-=
-8%5,DvI[8<DXsV}JE m9}TŶ+J; HN[#iδC]`4:ZxMCLY9xØS=J.g}ĔɣjKokx2rf]&m#q:h[m!B0 I/4^#<E. G(s~+k6Yz:iRT47\ރ"JUT#H fG$ &WkbH)>$}8:W@̕U|Փ\6e;U/BtЗu.9>4;@ aS- ('BvhYE&%TCqrˌ]anV;0,xP|R ‚6:C (qWf 4+ ^_Um}9ϥ>S ![8֊VJ
-)6atQ-NȮ<, F$[(C4W HHN2Ԙ^5.;Lkn(tczHCTq'!)b1,w+y&)_pC 4. 릢>V7W 3ՖP4BCa֝G''!&<_r
-endstream
+707 0 obj
+<< /D [ 705 0 R /XYZ 78.37 808.885 null ] >>
endobj
708 0 obj
-<< /Type /Page /Contents 709 0 R /Resources 707 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 705 0 R >>
+<< /D [ 705 0 R /XYZ 226.44 742.105 null ] >>
endobj
710 0 obj
-<< /D [ 708 0 R /XYZ 78.37 808.885 null ] >>
-endobj
-698 0 obj
-<< /D [ 708 0 R /XYZ 79.37 712.61 null ] >>
+<< /D [ 705 0 R /XYZ 232.109 730.056 null ] >>
endobj
711 0 obj
-<< /D [ 708 0 R /XYZ 311.994 631.792 null ] >>
+<< /D [ 705 0 R /XYZ 195.137 697.254 null ] >>
endobj
712 0 obj
-<< /D [ 708 0 R /XYZ 368.632 619.743 null ] >>
+<< /D [ 705 0 R /XYZ 195.137 687.082 null ] >>
endobj
-713 0 obj
-<< /D [ 708 0 R /XYZ 202.495 551.085 null ] >>
+704 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F65 392 0 R /F15 385 0 R /F83 709 0 R /F56 388 0 R /F57 389 0 R /F55 387 0 R /F58 390 0 R /F54 378 0 R /F49 394 0 R /F48 395 0 R /F59 397 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-714 0 obj
-<< /D [ 708 0 R /XYZ 202.495 539.021 null ] >>
+716 0 obj
+<< /Filter /FlateDecode /Length 2992 >>
+stream
+x\K ϯcrY؜|~ԥ P*R"?EL~(uӇ!V)0ߞэmЛVPŶ__(Uz|q-)wB){Tw$ÿW|_%Je}ښۿgJ>8olWp~\IF,h(<Q[[I,5#suhJJ34N'wAD'9M粀%LtdOedqd/2ttlvrY71yОRA]I'[
+mNBq[{VqR|?<ox2>*T+faak\ߎVp@"] 8^D7JT,4^D@v}!`0$:T) 8٬.xfFi D_I{GU5-4|az#dDh8;;j> Cx .E|dڽf|)XE=>e97!aOėvB<2]4Su&
+wop{Z egaWMQ HY&+Vҳ$qnkj?8yΌo;3y'N%;M >7#+
+~ǂ)P_<}ݐS׃=g{ٿt \ (FoxT33Fԇd-8Ѹ̤w皜|_C+S/8R4ѐ&P|q¥d'p1$&0E"$T]TERJ#:R> / $B6k3~:;rdt5tUvN.. <kAF2 Ce2hP-Db,T1qVjj2Gcށe$ꝱfHޡ5DE 26 Q&{0HrU`yL(MEQ )HaP|RX&q>]x~(*!R{K s)sA_'TR >'X)Q7i .fˆz9 NC\k,jU}k3apNqjN
+f58E.Zɪ%s(tE 2{;uN9~mX>!26x0[`z4
+ovÙ4ug1Q#GǼr|#"81NiJ|lu1YyApf-0O]wDd둹v О]~#oam Z4sҭpDg,\Z OkgcFY42JOH'C@1aRÉ>hK5R$z^uE/ecoYZ֑5!? /S!- 5ף-(7);rZr+ڄ&AMAu?. 6KFa+Y6 Re=oO4ūej5cRsI PH.q" UɬO۳}MFNl.NpuflmzyO:
+'f ,#Rȍ K4o.&sCJZ__-.x£{U%FGngb#"2+y&AK~߉gEQmZgT4_gUhg*GRML<Ӱ\,:BTA>*-4]Tp"]ȑg[PΞK)]/Vϒ. 汽TxZnۘnxocCyڃ b.@@Uf+@pv 2"Q~30A=#Qذ'c=j%  yҗugVz-oTVepr^Y5慞gמiΰÝ(s( F5QQ%*ڧ;&1/BM$tb)*
+oTF|7>GWUt%@#ޓ߆4ȈBQ%%s
+endstream
endobj
715 0 obj
-<< /D [ 708 0 R /XYZ 202.495 527.065 null ] >>
+<< /Type /Page /Contents 716 0 R /Resources 714 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 699 0 R >>
endobj
-716 0 obj
-<< /D [ 708 0 R /XYZ 202.495 515.11 null ] >>
+717 0 obj
+<< /D [ 715 0 R /XYZ 78.37 808.885 null ] >>
endobj
-201 0 obj
-<< /D [ 708 0 R /XYZ 79.37 469.822 null ] >>
+701 0 obj
+<< /D [ 715 0 R /XYZ 79.37 556.015 null ] >>
endobj
-707 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F50 374 0 R /F15 381 0 R /F56 384 0 R /F52 376 0 R /F83 693 0 R /F58 386 0 R /F69 402 0 R /F65 387 0 R >> /ProcSet [ /PDF /Text ] >>
+718 0 obj
+<< /D [ 715 0 R /XYZ 252.318 475.197 null ] >>
endobj
-721 0 obj
-<< /Filter /FlateDecode /Length 3595 >>
-stream
-x\\ jjԚrԎM$ݚ7p M}
-3G*UjXB顏Z&mdgAۛLHxk1-,⻮Pm*diM6{=hil_>N\~~"F'JpcVڼիYΨ)~lF25OZD [+\h~"3Zj Ed>q~T ;9nʧ4(7s[/]g>>G;=*浼{Hg@=Qzx(~]J'H0-&ӄ=?$
--P©ɬ]KkLj5%DS*W.i[2m3eS<X0-ɖj5>D&=Cq:qru&̩*4__܃ Dü(rMw۲t(b|?R!ur:ѠvettgJH{Fіjhi֭7` ~F7֥SQ^G(ʑmV$4Ϻ4Фj&*12_]K2G[m=CFYemoq ΄I{]IԱO߃)vTimPׁ[<| zis͑VB
-CCr ^D3e!$1"$"OcGz6SaM )ʋY5RNfn$˽f;8)s=wj
-@ug[L*E<ٴ38a=At5h @i(a;ѓImk8sˏJSyYdd&
-5V6 J1kAo TLe0W,ɢ)1~h<᳍MpĝS(~6"Uᅥ9E(T q&G59 6Kze¹yzX@2i&`#~>` 
-Taj*koGD~bJ;WR6Tca*a &/!HO_+ q)^9U 4==te濽_4J& az4Ŏs;oct)OKÖ !\Z!tc7˜^YU$k)
-DX<L{ϪG8ɼʨZY# pa7PAiTX
-*VP!)@pY: 2(%%ب"TVѬ:IVaj. ZVYW`ΏN~*Rs h Tn%v1?Aŗ7.$k(gfUBf7J; `M xf^4\S)a.WU7Vg)ÂYj;'yp#
-_@UR la|[maEe2UTSJ/˼+vjyzAg{I(͟t Z0P04venҧC+`u XWikX7wlE0 }jǤ-m[HЮ<<*lRešCos[,\ma ܷoo3JyN}NKWp:k^ΰkEZ_(tM*p*&> N:wRV/Cp0-2&*SWw8R3i[8ۆܰ3AWp{Mn 6{7ӝ<zWsi"fF!-\f% kJy5o 7@Mc,jW.8J]>VaLkB-@S
-8cgC#)c <%8r =<p3EXYFJĉi-X t3 鸽Os3;ط+<9zoÙg)tؼqzY̋pZDEdY堮f N`[MZEr)cS4&`u> A,w\ؗE`RшҏJD5K[{a;tdosvL43Sڜ:cr1GpSI3}O,!XnTV[yP]7N/guZi Ze/3Ё_Pqꎎ
-t$B)##'K[1!͵M -o\Pt=t 8 蘮Pv
-L49r,dk~Z HV=+ܙ(=ʤ6jkfRyy;ROEt acaÝBXƃ<?;Ğj"Tn0lMUtho8kRW vdho?Lwi_(%*MEg?(1 aǣ!,ZEި0W
-URcX 0e+cZ/2A"URpʹtio#HvOEFKBV찱 ZNgpFޞՍԕ]7%=,o`+[Ywۑnpyհ p\[z}`nk
-`?9 p/Ľ\~Zh:|ULJIB|{*Egʘ]t)f%:wU\)Fh202"
-endstream
+719 0 obj
+<< /D [ 715 0 R /XYZ 311.994 475.197 null ] >>
endobj
720 0 obj
-<< /Type /Page /Contents 721 0 R /Resources 719 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 705 0 R /Annots 723 0 R >>
+<< /D [ 715 0 R /XYZ 368.632 463.148 null ] >>
+endobj
+721 0 obj
+<< /D [ 715 0 R /XYZ 300.238 451.193 null ] >>
+endobj
+722 0 obj
+<< /D [ 715 0 R /XYZ 202.495 394.49 null ] >>
endobj
723 0 obj
-[ 717 0 R 718 0 R ]
+<< /D [ 715 0 R /XYZ 202.495 382.425 null ] >>
endobj
-717 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 476.105 185.837 483.078 197.792 ]/A << /S /GoTo /D (table.caption.1) >> >>
+724 0 obj
+<< /D [ 715 0 R /XYZ 202.495 370.47 null ] >>
endobj
-718 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 498.301 185.837 510.257 197.792 ]/A << /S /GoTo /D (table.caption.1) >> >>
+725 0 obj
+<< /D [ 715 0 R /XYZ 202.495 358.515 null ] >>
endobj
-722 0 obj
-<< /D [ 720 0 R /XYZ 78.37 808.885 null ] >>
+205 0 obj
+<< /D [ 715 0 R /XYZ 79.37 311.93 null ] >>
endobj
-719 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F56 384 0 R /F55 383 0 R /F57 385 0 R /F65 387 0 R >> /ProcSet [ /PDF /Text ] >>
+714 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F54 378 0 R /F15 385 0 R /F56 388 0 R /F20 380 0 R /F83 709 0 R /F58 390 0 R /F68 406 0 R /F64 391 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-731 0 obj
-<< /Filter /FlateDecode /Length 3043 >>
+730 0 obj
+<< /Filter /FlateDecode /Length 2655 >>
stream
-xڽ[n7)ZBm@ 4!P ]n$R/˯O|=7?OqikF\~\~rjxɂ֎\=G>S`p̳0¹5q_ڬn1 wε/|ńùqHw~W6ᑗDu}l4Sv))k-#pvnrZG+2*)h<YcҒ_9X ) B,ӉL + SZN;\}<2MRڍ. ią2ͧ8/PI2waH@dI^ #GH5(aXPHŢ4J1ai@ԛ$Y ˟h5߭Yޭ0iGz),}[kI\X&.;gG222N:rFlQq2r"p$QGsq~2H߮-I|QerqRu\ O+FAT
-=CE*ZѴݡ-sxzv9BVfk?KPȢ-.8PWC`t5ہ"1]7t ַ'J/ :ߴ|@}BE]8hOl@NCRGfsA&;NvA!gcQa9_(Kcp@b9C/8ӏ5ga)6x9zL{3Qgһ[G2PZyZ%Z?|dV ӭs}TvqM:ZP )(`y>I==DRqM'HA0-;3t19IwmX ˸UB.F }ƑM+3 کUN횳mX'AKG (re/om[T(pŌEml sRT g=fm<m"".]VRz ~2Ό2,:d9Sɣa/B0 *T/a f\h^@ou+$hܳ붍ɲzڄҏ>W#upg n#eC2%\3"[3!C<Rt5l1eɠ)fd}!ř1n<&voa74xTD徟`28YގSN0')cfgyG@fwՎc]PYe4-: <0l1;<,nk^}A\v!
-=;wܳ2c8ܩ,JN2ҫn;_#R1Hnp. @~ڭ7KtwMNO`,˥$b<9HVJgn^3̠'F<[)Ǽ=$<{Xm-+֖Sn̛Fѽ5\՞ܛ8r&?V1Pn|b_v/0[Lƪ=ONFԨ-cs~|MBzb@2UL%G}&TJ
-mUv;~nqW<~G@y WOk7λ#uX(
-~j̸܎'٭zq4¬Z[?VM6R)%U һA4룜Ġ҅jbQT?z+rHport(/'驉K 27|!bnuM]虱|NަRkN_ru;!R5>nYu˴yuҖ)YoTR/-'m'?H MsUB
-\yngUy6/;)`7vӚ,% +곆dr^&c.t(D&\{ߋ*ZHb hiBi>V? iڰlTݑӞmŗ߱0(,Ӈ3OA8ƧS_ZhP{NV5d-Z1NO1BO`D| (@~" OJ0
-ᠺYy
-de%Ʒ
-oq/Gԉr<X_Pz%uݙ:2Hyє$gQ0˿~<~eʻ_q揋w?ҟadC,'cur_EY0ǰ )!*7ҝ+pg)۲ק‘V',ov!I̭Z $uMzY^5+ɤQHCn ށ|p=kY
-Q~k)o+ס :5G},jGXp9.W 1/Rj
-Z JXV;Z:OtyPN "NT/{pI# FLZ%pݍ a\+Tla
+x[ˎc WF# (4̺wA*^^ߪtzDQuxH_7yM ?ݿtso*47u a,ݬ!᤺}RII_ 绔oR7YS~i;|ǷHHB:##o@8*ʋrQ 7 :4wYT0od0_i&<[4 G᱗Y,˚м|Ҏ_/d$[D
+TV&Z,~csCZE=z8ֲe$JߣN&v8^=oZh6#UgƈƏ5}f<18&L~[
+ͩ UنF)L=~*}ao.n:}=vP3J{mZ/9_kp wj ֌5Jh7<R[Ǫ|J3[;6WU$+ ٙBpl"Uxy"yod meq{iО:f\~,nd"ڀoh7Ss+;Ȁ:~@Csohvm~gT'!@aroZNJ/LJ`mф/t-_]ĠvXk`$Z?jOsa07bO&U^%U֮|+ctcD
+&tNs+!mD_R[xMc}$ft/l}yABE֭+GZ+>#۲zI]Pڳ[#2L1]}i2=Y6ψ
+H{b̽cCLXe1"yF>I)KJH(eRu$Xe (Ѧ,sJ6dYhvzJxs[Lj9p[Ag+֩ ޤ4-a¤EftTE$+“h꬐ᱬuw^f@#!pջRz CgV-Y oKe!`t]42>]b=>w xWFܪrf
+pdzo۲dGӪ
+\)؜Fm2v=i*8"E25ջX:SVLNSsC[Ż錌vdʙ0;,&#]fx<NAl߽򴆁<ٽz@zm~O;>pOoWj!ڱ4pmđkǕ$Pyj?O?db+i{itKor+u^{É-?9*Mܑm;J˳Wf _$\~[mnP
+\FmfڶZ9)JJw61J=GٙF7kBһ"aKg9&>sFԆV@G^!9Yd~>s
endstream
endobj
-730 0 obj
-<< /Type /Page /Contents 731 0 R /Resources 729 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 705 0 R /Annots 733 0 R >>
+729 0 obj
+<< /Type /Page /Contents 730 0 R /Resources 728 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 699 0 R >>
endobj
-733 0 obj
-[ 724 0 R 725 0 R 726 0 R 727 0 R 728 0 R ]
+731 0 obj
+<< /D [ 729 0 R /XYZ 78.37 808.885 null ] >>
endobj
-724 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 343.619 566.849 355.574 577.798 ]/A << /S /GoTo /D (subsection.18.3) >> >>
+728 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F54 378 0 R /F15 385 0 R /F56 388 0 R /F55 387 0 R /F57 389 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-725 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 429.706 415.94 449.413 427.895 ]/A << /S /GoTo /D (subsection.13.1) >> >>
+739 0 obj
+<< /Filter /FlateDecode /Length 3182 >>
+stream
+x[Ɏ+CR n5 KfV/Zf&X^,dʗȗ׷?ʼ,X|o*>/%(aм8_*_he%QsKKiT|hݞ­7:dx ˦}F43=ogӈ}-%ްomy߶.[j~:-8Vyi}d:{MaFB0+%p+xcJۙyb8v6&f$SDkDݫMY]1VMU(SF
+psH杭F2n-kdεFC̒FQL)/v7iYGm&CDrzȤ#I75OoNAA7p"wwz.LLMb
+Sng"(FwvNGۘ߄EΦkoB}JHS:qpN`wsFA^(ud?JP=HSB Fմ1df;{<Y(`Dˆ"Zsӌesgô!Ig B3]jg2hȅ9)ӑߍeQfN 2=SOyjΛw5X^Rc`2A BcڋU ҙy'Ne^bγ @<+}?eQ׍hR"*C2:UaY+Fa"3Gc,S@gӚO:ՐWXM
+'Cortg]R9R*ʧ<*^a?3_ViUS.bc|Ւ7j@>!4Ew.Q7Ii^&#h؛ =D!
+K%q!>+fZ̤T|H/d?~޺ O: 5œźI%Y0_-s"'tM~U eiS)DS;d͢D?uԼH{?Lm-#y>mNJaRuyF
+ &RíV/7ېNͰ=M-*G~
+M&CPG=9>?ΩhY6O\J()U3}I
+qhZ)o1;NQ6Ǟ7xoYA?lˬ)W\ϞoQrYnGCXS +T>{ %%zvhc뎂D5Sn"kl[p2fXw~,t%>a2a#7넴3p:rthf?!qCyہa4yIHIԒW⦮2^:)oc\/0Q?DWg3V_\VxyUJ.R_GmLFzM*xec@b,G3o@yn51?%ֿԸ7mD
+.Vz hJ@h G9z5!{c6{ǣ-uj4l_}'LZ2DP*
+ D}YDrL4S-Y?;ץ\s.}qZ#7éNCq=/r~R#8Iή^ f<Nꠅ
+:}! ,,.dJNJC[O$]) ^U, 6D*YqO5#v-$Ű<$ imkr 5D|I> L,;'
+~U!UxƶZN%T׉u]xd;xKԭ8l3,I >Y{!:۱=0,Y$Z'9!;8ޕ`vxģ#蜳 |Bۤ&dNuKc -NO>
+r5XƂgO}qH!g"l<^-jTRh _HKN@հJ =" ^8mHT~ǭM)PҎlĞorEӝ"O S_'ȍC9ϑ.ϓu 5#$:{84].kŻ˥661!:II<IK[.=X:g}JvF't\hmLrM0wAUtk]v-YZ&N&uJ!$}؄35_mgg`K}C_.2^?
+~zA/B~n- A
+endstream
+endobj
+738 0 obj
+<< /Type /Page /Contents 739 0 R /Resources 737 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 699 0 R /Annots 741 0 R >>
+endobj
+741 0 obj
+[ 726 0 R 727 0 R 732 0 R 733 0 R 734 0 R 735 0 R 736 0 R ]
endobj
726 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 465.134 415.94 477.089 427.895 ]/A << /S /GoTo /D (subsection.13.1) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 476.105 689.828 483.078 701.783 ]/A << /S /GoTo /D (table.caption.1) >> >>
endobj
727 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 328.914 302.996 351.39 314.951 ]/A << /S /GoTo /D (subsubsection.5.3.3) >> >>
-endobj
-728 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 367.111 302.996 379.066 314.951 ]/A << /S /GoTo /D (subsubsection.5.3.3) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 498.301 689.828 510.257 701.783 ]/A << /S /GoTo /D (table.caption.1) >> >>
endobj
732 0 obj
-<< /D [ 730 0 R /XYZ 78.37 808.885 null ] >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 343.619 357.634 355.574 368.583 ]/A << /S /GoTo /D (subsection.18.3) >> >>
endobj
-205 0 obj
-<< /D [ 730 0 R /XYZ 79.37 548.523 null ] >>
+733 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 429.706 206.725 449.413 218.68 ]/A << /S /GoTo /D (subsection.13.1) >> >>
+endobj
+734 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 465.134 206.725 477.089 218.68 ]/A << /S /GoTo /D (subsection.13.1) >> >>
+endobj
+735 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 328.914 93.78 351.39 105.735 ]/A << /S /GoTo /D (subsubsection.5.3.3) >> >>
+endobj
+736 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 367.111 93.78 379.066 105.735 ]/A << /S /GoTo /D (subsubsection.5.3.3) >> >>
+endobj
+740 0 obj
+<< /D [ 738 0 R /XYZ 78.37 808.885 null ] >>
endobj
209 0 obj
-<< /D [ 730 0 R /XYZ 79.37 389.026 null ] >>
+<< /D [ 738 0 R /XYZ 79.37 339.307 null ] >>
endobj
213 0 obj
-<< /D [ 730 0 R /XYZ 79.37 349.74 null ] >>
+<< /D [ 738 0 R /XYZ 79.37 179.811 null ] >>
endobj
-729 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F56 384 0 R /F55 383 0 R /F65 387 0 R /F69 402 0 R /F58 386 0 R /F45 390 0 R /F40 391 0 R /F71 415 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
+217 0 obj
+<< /D [ 738 0 R /XYZ 79.37 140.525 null ] >>
endobj
-736 0 obj
-<< /Filter /FlateDecode /Length 8392 >>
-stream
-x}K%Grޞ,ũCh4˞ (BhأY?Y̪:%= 7ndd|_ixfJ7ӭ.5n?%s\o9%O1.ow͘
-u 1P^)󟍁6gl%G
-B7|\;%;O~۷&V ~[+'9H_\o۱O).9KK(?i: o{Du}Nz?qv^1HM^u/~(íiC=;K&$h~6UGI%Z5Z%ۺdhlbkhV(|K rgi Z<d[t".xDh"HbbJ^IRb:[6//xXVK7g,e):RRÒbvUe "Y$QL$a`?? Vk/7?`2Snn`[苻}
-ݓf7HXV~B(8.i+nڤ|4:nC
-M?bwOrjv~P(?@tk
-uDaEeB"d ]1$Umޞ$X9h;iGz
-&`tHsB:
-19dMh?zo7]Kô1G#
-#Vb~{-CVGS6dsc~.03m6
-k>?\`!}X> IY%m#n|򵃡6f^u{:{HEwwur:Sqsig@zfSƸV(ͱzx;[ =tPЪwk
-d?~0x֯0ٵh^<;ζC~w߇Nb4ᔯp|Jv~,BK'u絉ͦOO% f/Iz AVٸ[n,XGO꤭mbqL<n
-a\= [qfՃC
-
-Anݻ7U ht
-`,0Xqϙ W!)3tG^lW?,m *}&__Ҷ⧔ԼV:sTQGWےdHwd?hChen6%}㯑Ug{>7'Nx҅_ K&O⟴ϴw RڞM+1X,-zU'u9٤uMZ' =ڄ`vvO@R ƯtV󈧅,T$ħ*^*՗<
-Pbga_ETy p7IE<]oHt5MO{Mc  `.ƊIvnB pJڥp]rʯ=Ng 8_ l:H#nbebb\YD$XFHB$L.X
-Pʐa|Y}펱-mP'|okaNsbZA hIs,*@_a-*C L(7C]7hZwC=XI4ZC]@i6"-<D3#@ 4Û؅ ,`ڱtQuP3Dg-q‚5Zq@Vz=gEQҌmS)00oIZ':cS&&Ck5I(G=w0%/Jpά@zb7;n{䴛$z+d1&5Ӂ<(NUt$EmnQ$@MHyλfH( &)Ss,cCXDrUxX7J=T}y4z(xŜ}`k<pzaC [3 1{><bp<5=0 Q#b$zQ>h)X8G=cZL.v+a9EؕG)qɳ}`K<p~zbyNf|EC Ӄ5ªlHCZx\H$iEFSG"-탇#X#EF-H#-㇘QFÑ83GqoOԄ B%:0(7_z[A1Y+sJfӲz$&%ї(
-
-6,i5
-zC)\ێd̮UH>z1ZeM7JJh؜@lj= ڄBҎ
-. ֑a]b9%rs Z숃` ^)mVZJx<zG~0KJ/, Xa!;haǴ'Ѣ
-xƯp,P@T LTSCN#- f՝)pcԒGEmvzQEDXLK O^[մj+qFFHѣ jwԊ CMxeTP^?v<ܧ4jD̶8*=ѣD%%<lNPsq5nnQFP^6C!e' $)DkGn@Z}`nZ$h)as!ac#N8c)1Kq<gP1.^*“5%R()asaDO kD:_ҎuOK*#9'8 P-hC\57VdbmB۹F x4C<bэ*VZ8KlꨘDq#Bö2g:pމ@6`eTXsX`?(Uݏx\02bmT-x|5=Vddnӣ*"5XJx9cj
-iT1s@-R()asaEQ sD2*D8|',CaG
-K6y>AaMۮQm~\"
-iEw9%ZiY
-KxSb"nJ]'; T*T8c)A?!Qaq!<2!֍ztD",1ZPŽ[ڠ$RECiǁaSX`AT, %D%`H̵9%^t#䪘C6Pi,*Ƴ; +5m?2
-GdU1#)5MmOYT8h2
- ^]!e;@m5V^!̺ejEI;x9WM 9Z74$N9sP1ᡴ
-=s ԕ9%^ak s̰wJ! *M}E#!hlRpb*.nG^ 한)EI;ƀ9W {j[q+,QZ@m ËiȆՀVY6)2}X\^ I6, FUI&
-Młf\Odi٦.RRBd<$>HHO
-=OGxUi-MLS5;2ePkZUp-y1BC iffY4ת<&E6ńLL
-@8*'b#+<>32+xB>kJ+mRdAܑ)̀]ժLn댉>?
->i>1EJmQdSZLĤOT )a _HFu]-L5;.eK'hjdq|ZLP,hʯL~ZڤI!@rG3y2sC1#㥀ffY}m1jGX40 xX|db{^LLP,<@/5*-HIi1!€>%jU)&g2fb
-?-&h1kmRdUZLĤQQU((e)}xW!>x=hj/QL79HנoaSg;2{įCĜPmRautcG1E_Bu[$q)Z"uzTzN;Oa1 {0unS' a^VG{mV%P/\M<O|Ҭa2hUo5U#\0?{ԧJm*%r:|j+Ƈ"ψޑ1o`4eçHc4qϯ0wYzVbb}dzx"j;LR ڛIY Lȯe" ^l{χW``Z!\[(O,SZ9G +=0I=G
-#+r]c_~Y;G EsAe x-~erw3T^FJe5xPn Ev¼Li<o;4o?ʫ`GM'y]kBY Ta8R:=_ϓp(T#_2&z|**psoG)9݅mX'<BеC*yg,zs#&l#4u{2?@s?՛sypT瓲f}crlX(/ ע`O`w}viϝ[o]ܟ/̝Ժm
-"#CO{ DyZ9sjko<D E~A|%`:q
-endstream
+737 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 385 0 R /F55 387 0 R /F56 388 0 R /F64 391 0 R /F68 406 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-735 0 obj
-<< /Type /Page /Contents 736 0 R /Resources 734 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 705 0 R >>
+744 0 obj
+<< /Filter /FlateDecode /Length 8371 >>
+stream
+x]K7rW8=7Z#g d1EēE~Hփs]9Ff KnXWY^/?^˷oo~фKYJ_ፁ_sIeq钢Yh.|uy]Gc]m MoQ)!Y4&.Ʌu]?5c?6kٗ׶) ڠt}NyΓiKkR7衎uDeV(R,03£FcZu&=TA]#نN^A`>v4 /MZ>W⧎b4խ3gn- go^~K;C9u. a29s[mЬ~t|;}ĥ$K ]n~rR5
+ 6h`avynonR"зih+sީ畧IzwZ瘾֐E5uIV\j޿_yں@,.<LZ"z՝&^T҇NnwM$d?wJaz npngӝndf?{-t5֕Bvezs{K\3-KOԸļ<lQG[L09ֽL_)T ?ym>o?0Ĺ"[ҚR
+)Ne4dE.跧?uHvQeK[Y Ի.;ű>
+ik*Æ*Ÿ@w)ybJ=@%<cuMhpɌ0Wde.x!5ȅ|`'.K1 y3V:\ UȏjOI5` Sm'x?7LѰV'9
+ T4<:>v .UFy(?5 !OchRB'cy4Yhoc,c+t~,ӣr\Wthgowک@Yq?K$X+g{IR уk*{V{ *z岓=hؚ^K~fuO{U66y?_[??o1b-域2[qˬQb!Yq BWce!:>kcAh5u)Ow\w\w|֨/zR=[S7̵'
+n*nZX!c]A`,CPB0i{1Dx#,`
+?]9ϖ1O`{އ8Xln̏P^f`6
+R~3s[͗@Y=@f,.}I[a22=UhoJa5 GC&efQ0)
+]IY^჌`oT9v`k1 5:`b9E,ó,u;:iO`m*81^QEMM>0x[ܲrN3}og:ƫW_cԗ|rweڈRg=į X,]{bj8C|8uwxמɻ?ϲ0eW_'xW&ߟR
+4R\ѻmmmO^V5y)눏|p;ŏ;{˚G]^s*GOo{ub.ɷn"}!N񋇍.lsZM mM@,-ϱ{響'XjЕG^xa֑r x:G WbUBOh]2 %0boׇ1}Ad/X<a_|6 X v#kf]p3H 폄);i1<ihgƋYmtfSÄ`TX<ͨNڕj-0?PZ` |uwkhen6-g3`{v
+s^Er>i7hHZKX
+K  (yg;
+T uU; ~lFV\I2DM.l;ƔfaEMn.zg+,hu ⽀g$&NۦSa%~&}[w pơLM֪@%P:`%|{Jxpά9ԳA=\ VI 1JfҒ6Ũ$Ȍ(*dmuÌ|C2vZpDkN%AAYHH.x^pH^^q_ mkHj6P-eq5ja_(j^MĠ^u(2^1Dha_.)\^z; uCzf!\1/*lM/= C"^}/lQ?V#Ddj8]JW'}mve>BJlG$)a_9.\^+F{`5"8D*[,됖:v5^`VwZ9'35,HK!
+#J$xDQ9%HK!xzr$jEA6x7=X!8&%ŵݮ(Uߌ<CP2D^0#$-`]]^}j.wEQPlgIT,XQ0J Tl*yJN9wzD%%4lN S5cbmBKMa!%œCiG`<cNeHH]ٌ:HG1hW#A6x)SFͰR`y0 #=/
+| \@ ;i@mq-ʨ9~cieY ~@ṭb9%nsZ􈃢` N6˚]pRqV,z"č ӌNۊbX+AQ-R()asa"s^G"׊?<v<x jDDfcQ"E6'^M8ȊF7K(h/̡ =' $cFn@Z\; 7ZJ`؜@zn?G-*XJ`%'̼Ty
+x ^̽Ó5%R()asaDO kD<T/~J;
+
+͇bAFQf뉬֏5 v*6''QT5D=oFB8>3,zG8ת&E2 5YQ*8XP,(L P=EV6),-&dbRQQ8YPP8rW p@>{J;mRdAܑ)̀]ժLnIW5|
+'h{Ui-l`J R)
+##!G
+>#Qc5۾B[&jw\$×5OM((P,()MV6)*-&`bRQ*8}ޠp~(fd P?faESJJ؜5OGV v;=DEb6
+=#OЪ!&EĄLL
+R@8UۘI4~LTcTm{mRdUZLĤQQU((V)xU/ hP)._6q"mW[LV=+7?q
+ʳGI胛M[ecUj -'o_ E>IoVu˛>n:by{C_A/珗>ϗv~wmd&CJ@r#C+ Az3(/ Ob=w]%<num7:fږuY%t!'i9g ^ZY3~7eXd
+Ss[}54u&b;> OVo[dǟLϻgճ
+?խ/uukzs3{Q}$t:q&G35s?~o5ü\io ߋ{ջOGx/un/-dus! ڭw\]t}7X`,* J/FUcݭޘu5hV. $ް~gJa j
+endstream
endobj
-737 0 obj
-<< /D [ 735 0 R /XYZ 78.37 808.885 null ] >>
+743 0 obj
+<< /Type /Page /Contents 744 0 R /Resources 742 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 699 0 R >>
endobj
-217 0 obj
-<< /D [ 735 0 R /XYZ 79.37 629.659 null ] >>
+745 0 obj
+<< /D [ 743 0 R /XYZ 78.37 808.885 null ] >>
endobj
221 0 obj
-<< /D [ 735 0 R /XYZ 79.37 459.482 null ] >>
+<< /D [ 743 0 R /XYZ 79.37 496.936 null ] >>
endobj
225 0 obj
-<< /D [ 735 0 R /XYZ 79.37 275.636 null ] >>
+<< /D [ 743 0 R /XYZ 79.37 326.76 null ] >>
endobj
-734 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 384 0 R /F15 381 0 R /F69 402 0 R /F23 379 0 R /F67 389 0 R /F70 403 0 R /F55 383 0 R /F29 375 0 R /F51 380 0 R /F52 376 0 R /F20 382 0 R /F26 404 0 R >> /ProcSet [ /PDF /Text ] >>
+742 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 385 0 R /F56 388 0 R /F58 390 0 R /F55 387 0 R /F68 406 0 R /F19 383 0 R /F66 393 0 R /F69 407 0 R /F25 379 0 R /F17 384 0 R /F20 380 0 R /F16 386 0 R /F49 394 0 R /F48 395 0 R /F70 419 0 R /F59 397 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-741 0 obj
-<< /Filter /FlateDecode /Length 4819 >>
-stream
-x]Ko$WF04`Ʋ 8,7'x*fwGZI1|HW,_9tBoh~xգv c)w [#,F3B5[>~Z~xG
->~JS>/(x¯ T^Ë} 1KHHGvA!,GGZ(fGK 9{n᳸V%a LX@%/Pgā;PU{n᳉PΨٷoĦGpˈƺ'
-}ذT/]]? !<k#/< 1$(
-)tHDaDA;AmbZ_g!rQq\v Aηs57:o&(0j{i> udϣp3,ZU5ibKLk|{ԀvP5*hj}y2gȋ]eqV7{9O@pTDhqa߄%bbc|K^6rTDBīuTN*w~DZ]>gDmg7W'˧(k?Ǟ{AE}x
-L?z2e8R-_NIA1%q$R@~A E"ں '/J
-. 1zݯ `v@!
-wra)ɈlA[N?K2j'!;4rlN7FQ<IݪѐeG|WejƂ7I`
-S*PQhYL@P8V _U`f&;5^S
-ot̞BζU(VU)\Uxԇ\etr0ri8nW'b1'`Q
-)&6­+0,YQ7k&*?Dkb{+<]lL/gƮo t )0򨡴)\$HtD0$nLßL_FMo',Oi:?8gQ?{p
-qll
-04ndBMƥ-o',MaOqYZ!?htc@:MEwcN_: (%s?#\w˟]L"}?MW-u^zcM vAl1АR~hspj =sLyI!zd1iNa=8h.U=c(#02UUHOa]a7SځxiiQ:GoeH1H8.vSjE)e l;&A\:Ѵ,vLI{65"(#(pQ;C%T2Wl68Je=僚&QÃ^GO4lI
-T%,D"T5ah_X0ʁ^r
-%`olEqRL.$=*eg?/iAAI/=HOe
-ɗ~Q"CM[NU˕Tw~eajMex0ni}XJ8ބczR?![鏜Z9~ɡ-5c!uHIO_iiEN4!%
-S\YF9<~n9 p>y^Gd\䍞We̞
-ƭʶZYEe<0}|~UQSf#th#Jk:In|b%jAH/F>|JSF>cL0,Y}L=#;q&fyLdd[ߑ ,R`i_34$}= @es6xxҫ>5A(m5f9/tGpnذD3ӦڤvE&>dOq2FλLooz.K
- v 
-١@ νώo
-LϝN ;
--$[QB\&Cj2=E͘nW'k:cagJvZp = = +<!NwxʔPz ѣ>Bqiܻ9:]]A4Ĺ3J%q6Z~97V)~GVg3=.} <B s'xWx}Q?- &eC+裝{+lA3^/ Pȯ=``b(ZN*z>D$7YC ]C;}b&Ttz!B=V7鲞53C(TEb<e?@lSlCz+9w;
+749 0 obj
+<< /Filter /FlateDecode /Length 4722 >>
+stream
+x=˒$:J
+*P2Y7W[B 1o{ T|"3o3-\&/c  1NXAME!>
+xz(UauG=z1 ʭ0<K
+r=~8ّ9͌qgdbQ]Iè0MP<\AIP[K֖GeFLCvOooqF`O{(38a.$Ǩuk>.3*̳p2W[,IwZ̳"h p>6`_,gƚM4&1 6͐" R8+1DѸf$*HVۚW/]II9k03E:eQǕ[]6PzU_Qj%+B5]j\VU*
+SJi-<ᒅ1aLׁd鞙Ȕ]XAi3ZDy(B7GB0E/Q ř.N8ִ}1)a3.Ed`@ggJKAHC*iw#_DQw,K1%ŒͱFm6-q -a$Olqi8ϥEb޺~<>_aq Z[D9~ȅ̺mF
+eSE`g
+'x P77f4)5o8WT̶!AVkM2XC+n_5ǃFaڙi6;wv6xfl\EX+:<N<P 5lh1(]_ł
+=SV>(< +,|53gb6[-z_[ HI]2̇=Pys۷ \$cx͐$MW׊Yq ax:Ur?IAExc#Y8{㤬ݵGJnW'19ud׈U D^mHϕkL8H|2К 9#): ȟcP$1q4a/%g|BqCȾH,x}Ewh\!v)Wcr i瘕r$r{Aq1Aw%BtgН[X?<`
+ 6~Y Gp,|=W`iEKDZx6m=­' >SQ䯍-Tq7G^
+
+Hv bo CwG dو+ WoAAp%%3YJ
+\ԛE [Y_zQvQ#xѲI~MΈ Q78sg2Чc#@6F b [ůg0:&v ;ѫBp70M|jPj[q|g\0V eFr G. > ^.Ad~+E5L\9򓭩GicϦ俁a?0L5 wQƭoKRO5z.lUnԻ#IKsgKSSi.uإI8ØU6LU=#ǯT(afǥJb0>[3}s2}\41>^>j2gn33H'Wd҇ AIfO0yn=vDo&} +tռ]Zu,㨄|Os4_ S|̬Qy_ p>oJ>:48kcM* 7(ϹPy\<^>7E#vd ?mF $#R#*M_*cͱ|eApJ./R%XPdPځiĘI!6 3zue](*I!u+QP5/A-uH?մ2|f@ ʓH*0?Jm5\M$瓤"M>I:y_$r*a?8Z+"SU]4ɅlUxy 1I +
+ O;Aco R:+Zdы)eQ$1Ґ{<IUrl
++=Zhj{)!<H#}Y:LSeS%<Qy0u9?Rxk@,EX9|p+aضkf
+`~[ä+yW0):Og+VtT.Y\WzvF $E%R=)&<:"<=<{adpΨ4Q
+_2ZM&(ӝ7 ȡ󦇀뺉JWyk.zCJ;qm$2R}f"Jl^ޥ$. ./q)><T&Fe^xiU]&8,Y6g+
+#in{ ;u%Í[UniK+hZ#UOWnx?+'G-,H#?k|Z78q{uGw>MM] CEIrMf\yS[7L-FsT =IGw;Ҍs;҆n|H+Kz`=+s\)z9flpA?Y[48v7E\L]bVѾK:;'U$wT
+Sy}*a<gr!n@U:DYd㭮SUN3$|^;<_CßpYf>G$35zk.hcMUw
+prZa.0cJ˦FL#blG]ٌfhXMn\{/c `V),:%51mEyM#*#zz
+Ӻ&ezU@!
endstream
endobj
-740 0 obj
-<< /Type /Page /Contents 741 0 R /Resources 739 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 705 0 R /Annots 744 0 R >>
+748 0 obj
+<< /Type /Page /Contents 749 0 R /Resources 747 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 699 0 R /Annots 751 0 R >>
endobj
-744 0 obj
-[ 738 0 R ]
+751 0 obj
+[ 746 0 R ]
endobj
-738 0 obj
+746 0 obj
<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 240.709 67.03 251.166 78.65 ]/A << /S /GoTo /D (section.7) >> >>
endobj
-742 0 obj
-<< /D [ 740 0 R /XYZ 78.37 808.885 null ] >>
+750 0 obj
+<< /D [ 748 0 R /XYZ 78.37 808.885 null ] >>
endobj
229 0 obj
-<< /D [ 740 0 R /XYZ 79.37 771.024 null ] >>
+<< /D [ 748 0 R /XYZ 79.37 771.024 null ] >>
endobj
233 0 obj
-<< /D [ 740 0 R /XYZ 79.37 326.887 null ] >>
+<< /D [ 748 0 R /XYZ 79.37 600.398 null ] >>
endobj
-739 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F69 402 0 R /F15 381 0 R /F55 383 0 R /F56 384 0 R /F58 386 0 R /F23 379 0 R /F20 382 0 R /F29 375 0 R /F52 376 0 R /F41 377 0 R /F51 380 0 R /F53 645 0 R /F42 378 0 R /F43 743 0 R /F57 385 0 R /F45 390 0 R /F40 391 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
+237 0 obj
+<< /D [ 748 0 R /XYZ 79.37 160.523 null ] >>
endobj
-752 0 obj
-<< /Filter /FlateDecode /Length 4623 >>
-stream
-x]KWQ: $/lGI9|arNx^Uj ZJ$|@% ~Ǎ~xw{UӠ=7q3Is3Z0Ϸ??sss>߆_>x 5%en`}Ҽ+}`wL@;UNa>"F
-ʹwz/0Nf؞[Ay'\ /rAP Jyd%M%v}>Yk 8x5`9aSdL̳sB2)l;}j"M,#n^~|9isd>1!bJ4bzψeZM4= șT- H ؿ'dv0gY& ̄e.sؐJd 3;fF˱9N*29Շ
-0gU L{?!v~#xp}y+iN͊yxΩۥ~ViOc&
-7Mm %K@>_x"I$-lU
-T
-Q/5EA+&"q\NG˻2ea7'7ֿ+h6vΒ<B}AG[ VAsqC9"j9HqBxy2[ODlӬ\lF -0̸eBjZ{+:RWЖ0˞?Ij;~,Ŷk40^ts/N%=KHwp- Du%Oh'߷}_:>?v^{4;"hM/Cm)S Ц} I<}ۖǥE74 3G3[}gqbml;F0ޚpbNU#oZd)e5/笕6}2}-m6kj~U[Xce6vfOJf~i5_- s0&Y`dߟo5'ɳh ~jxygH͸MleDݫpӬZfɻ;æI/i?ɧUJQn!Q_n0rq鬺ݿn~mkI欸=Y&z#A~K?|'~ߝ7LgjNޫ-ԉ8(fh繀? BYK&,<&#X>Sq+}5Qz
-}mYZe0k(hZK cl'ւcݑ[%3u->]t]>Q›3ln_ZפOԵ X/K[Uc5[NClew'#k՟gF|%o5P K1ֳzt, Dj@lK>j
-B7rdf%`E(Bx]߉7OXZL0hp ն1Rr:7]7{>c[xO.dA/[ZtÚ4;}uV ORY'ꛅ3޹:1qML(D;"T;/0W2xVڐoMƨ8})p8(ܫ0}1W
- m}qmațk?(ϮrL Ʃ_8Q)4 Vh6/יLV8B=㗿Fj`K؞o|p1GY'"`v3<Zy+CSߝÙKSxιass-g^;jribG)n7hH7UUc&{!fݿϕ Mk{m~Lhc/ɧ8ܣmvd"v2 <6^sA@krчK:glT?=6K#
+747 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F68 406 0 R /F15 385 0 R /F56 388 0 R /F25 379 0 R /F16 386 0 R /F19 383 0 R /F22 408 0 R /F55 387 0 R /F58 390 0 R /F20 380 0 R /F18 381 0 R /F49 394 0 R /F48 395 0 R /F59 397 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+759 0 obj
+<< /Filter /FlateDecode /Length 4933 >>
+stream
+xn$裍@4ߏ@1bxo 'A|流櫻#i-0;b^*E.];¿߯>}uUzqi;@taqDhFfO
+J)?\Sa ;p&?5}7@Q@dg~5S˹"^=~OĹ cP8#Z [4R0s/~~ 5»1Es_U „gh/#d'օdh1Xs,Gr3<kG\kwSF<2AL,*@%ا- juI6ո1YCCKg^sEDGMh^!O—b)=B+Lʻ}ZVkۏ7J<ϯ}PՕQlR8N/减!J!CӧуloLr/tr~mVbđ)0Ae˽ֆpa*(!xb_2.%@1vs+B({+
+ WhO @;#
+{H;l1;dJeaTu,]FB®5aeJ,DCZ"yǂNHO*02C')^p gT%y s扲Q. 53B5ᨯF܀X]3wsR۴E,B\Poޘp dBԡ}"
+}߀ n` ^1a20䆰4ε4 ̋X]G S,L%cm
+RމRjI(Baf;Ҧ'խGң:0
+8%A<l?b+`lM,&? gj"͗J:o*"W@}0U%YH"Hw
+aMU%\!,Q8ʮ:[J]p"$vN2 4a
+ #ۿwK6HI
+4fY=4VztLvJbK0_xX#I
+uĴu5gDH)T4O7 ưz]mYk |D kQƧeXK1a'N[3 -  g$*ܰfj5f6VC 1ƴ; ͖l/oًKܫ=JHM&Pq ~! 8g!kӅu
+}ؗ3DS`LMշz7'5!Vji$8vqN
+b,(X|A Ĩ|LXg FtyN%kZDVGpKstI,*k.@){{~1agEez(8I%.hkrsZe~Z^aKBGE"z'$58X\_
+רq5Y56lO^q81 )QҹRZB!-/Ґ=-Fnx`u7H$0/ZV
+G?,*dOk#Ӏ*eOkq@⎕ gS?BcLeb+%c 2x#-J橑Ty~uT
+u蔜sNqtD&OI2RAd]#d.Cz<lBWdf5qPz99 S[_$g|{0c_ It"eK2,<cr1&y
+Y?lHPwhnh,z{B(t},b$z
endstream
endobj
-751 0 obj
-<< /Type /Page /Contents 752 0 R /Resources 750 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 705 0 R /Annots 755 0 R >>
+758 0 obj
+<< /Type /Page /Contents 759 0 R /Resources 757 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 699 0 R /Annots 763 0 R >>
endobj
-755 0 obj
-[ 745 0 R 746 0 R 747 0 R 748 0 R 749 0 R ]
+763 0 obj
+[ 752 0 R 753 0 R 754 0 R 755 0 R 756 0 R ]
endobj
-745 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 173.089 598.172 185.044 610.127 ]/A << /S /GoTo /D (section.11) >> >>
+752 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 173.089 443.154 185.044 455.109 ]/A << /S /GoTo /D (section.11) >> >>
endobj
-746 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 200.765 598.172 212.72 610.127 ]/A << /S /GoTo /D (section.11) >> >>
+753 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 200.765 443.154 212.72 455.109 ]/A << /S /GoTo /D (section.11) >> >>
endobj
-747 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 199.48 483.111 211.435 495.066 ]/A << /S /GoTo /D (subsection.6.2) >> >>
+754 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 199.48 328.201 211.435 340.156 ]/A << /S /GoTo /D (subsection.6.2) >> >>
endobj
-748 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 350.719 483.111 362.675 495.066 ]/A << /S /GoTo /D (section.12) >> >>
+755 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 350.719 328.201 362.675 340.156 ]/A << /S /GoTo /D (section.12) >> >>
endobj
-749 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 312.828 471.156 324.783 483.111 ]/A << /S /GoTo /D (section.9) >> >>
+756 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 312.828 316.245 324.783 328.201 ]/A << /S /GoTo /D (section.9) >> >>
endobj
-753 0 obj
-<< /D [ 751 0 R /XYZ 78.37 808.885 null ] >>
+760 0 obj
+<< /D [ 758 0 R /XYZ 78.37 808.885 null ] >>
endobj
-237 0 obj
-<< /D [ 751 0 R /XYZ 79.37 579.845 null ] >>
+241 0 obj
+<< /D [ 758 0 R /XYZ 79.37 424.935 null ] >>
endobj
-750 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 384 0 R /F15 381 0 R /F55 383 0 R /F20 382 0 R /F23 379 0 R /F69 402 0 R /F58 386 0 R /F29 375 0 R /F86 754 0 R /F51 380 0 R /F52 376 0 R /F45 390 0 R /F40 391 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
+757 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 388 0 R /F25 379 0 R /F17 384 0 R /F23 652 0 R /F21 382 0 R /F18 381 0 R /F24 761 0 R /F15 385 0 R /F57 389 0 R /F55 387 0 R /F16 386 0 R /F19 383 0 R /F68 406 0 R /F58 390 0 R /F86 762 0 R /F49 394 0 R /F48 395 0 R /F59 397 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-761 0 obj
-<< /Filter /FlateDecode /Length 4674 >>
-stream
-xɒ\U[ՔRjUIn' F$
-O8>E8|0 p!=_3|,3o !nH Lq46=00{fpa
-asG^BTo}J2!!o Lq)n{ZpVY)'*/*嘄/)\؛LY[Sg  3.^*]4N< ~W@ ~1mT!+ 7-Ί¯T| a3! (DHBd TX+`  ۚqk<<%t
-&IQV(*u fV02v9uNj"B3ɶاb Z!VpqEV);hzBϫ{Z=Z^؉[J܍bSHvx<k-;-YXNbšt%[ը68lÒoL'HgV*dnb$zf-1=l6 ͪÓj&T"j#M>j*rmSO-7Yq^5y&Ѽ8=QRcl8'(nd,[pH?xc h3(s~ _TG,!Y#Ҽ1N 7 M|JkUsZkP| [xvL&g@ǴIS
-vu g"_1xF4^JXqK\Hy/ջK;y:ytiܠxB(򉺜~KUEsD$X)2xkiʳD6ߍ KJC
-xǀ?1`P^0Ǿ7iˏ*mW4fYjeFe#mqiS  r
-cz" +*w(zQ?XYq;
-E}+ v3c8sjW)rN3m?vݢ  BNXmR#&֝2Q 6G^rD%5~vEdTzrT%$0c4PtB%NZ.!rkB\w,8jdۃW ?!,5dJ6u'5x$~O3pp=#̫Jy%SH}@>-Ncm~vb*@ԹkY%hnC`ו+nVNpϠ@x69vi'UBHF_㷒Q
-S%nM
-HqԭR'ۉCNSϣ wN;ɣ'ɒi/Ȳ%EZ3;y׻~'nzJhǼ4{2O_c.ƙij7 4+fh[BO5b۲p
-̍8J5}Db!P1"1[\ish-Eb/dsRxMU
-%Js㵞e Olg7'=vI_3[T"qPT"ne]J,s<z4|Vv墓 qwNj<?fJv/ +.?@å+?P. ТP 0PM"9Y`tMnQ#K9PjX/9GIS;q䄁'2vt"D:&
-\Kd%^-,׏swELY@TO
-h0+2x
-yø㬸0T?LJ{T
-+![IF]GzyziGmb@_.Bin[Q3sm^JKwl/ãq&slk_H Ģ;my
-M_2<ݗHD9ų Qֺ3JV#Qid/|vEەl10sJf"ù|X|s?D+oҴG:4jZX́-h:0"#rOzZQ['M|Ǭ=?{=73ıTzP/'xaikԎYĿ8e6ֺ
-nxs{p7&:J@a{AN\*@ݩlP~a>7aNsFvB
- ?#!awaO!H͉T F0arTׯ)*~<jQ aD oS:.r\IJ@6:&fdr ًfMr
-?5ڻwUIX&b b&_ JMX{C^8=#G6MU%QMo9s6
+768 0 obj
+<< /Filter /FlateDecode /Length 4718 >>
+stream
+x]K9WqD 0gdz۲X=.,dRUm13]OI_z~"%`՗y% ~rgV\ps9W/#oJ[F>qn)/3<!}GؾK;(ߘm7c['
+(sTiY<x^wܕ>sS-Gz*||}H(O(r0-J(<H;_zԁ nOd^`afBpξu0s
+˂xəHϔ@(jfw`cקyoGh]&HxN-MO8Cv:HsCL:<i+!\᛫"/=3IC~+}?{
+,r{3kO Rr - F[,r65D]66/ihS:)J;vp0TN_4U4@L"Jf+s" :{ibc0{2#-3<O`K7_^xyR4 ^^dV<0?Wvp`<SI%.W<Q,7/{ l
+^[/
+FrY/(ͤ>aEeb]/ & ^BL2s3! ͐IIB&%2˟o\SK 6j!s]-5d G!sW/Q\K 6'RB yB/9dR!^><d9d:P!3>2dNw+͐IIB&%2˟o\SK 6j!s]-5dLJq;d3
+Kz^J<2O% G!^ioFx[ן=+dqسWg=6I%=r.fy2g]ͷ,ZcyJ`T͉h}P0`6 ֻΔJ:ɈdZw׻ΤݒKo#CVȕh$$ ƀ'n2P@,ylcfs5(0iG.)"aȩƥ9ōxZ`S{4
+Vt,$l7h=E6कl]B"zc/pSh$:Mu!!WIO[
+&h3ͬYn^ZGqq7;5Sd֛apB
+z bz
+ O`mVæ20-kK6^6 jisoVmDmGiI@
+kz}TȪ`]0R/=;+ nUimQ|y'r-.Fc9j 뫔peh0r"3ו@sOooD(R1o_yi},6|Zi7rM$0(y'[6퉎]~aU ܔiiK\BpwkIMy'$-oiQ3@iT?ޝu@(P>A!uVxf<g`
+gx2U\mqڈvʱ^TיZ(?שu%ygO{ ZDT 5?@I*>7Wf44?%!}rBԠM?2MgwJ%wZkf`G>(4/3O`}c10oҰi;Ot4GJ/9FM=aKְSKOKh,H?zކKv#m,3GewB{PJގP c
+e+UuJ?Ka#-SGC+_1<P8I)enp􉱠:9ا7wMC T.ǕJ^_Ͼ]ܣv G0j30kτFkQaCKi
+yҡ0a s+V$;ЉY~u|P_oB )d-t%
+Mq'Q
+'xr~*^ukLu>ꏭ٧AfvI@'Ez\iR%TgR%mj= 'ϣwDka0Vܶްɂxk>JrwKfԆ!r/Uʹ4Q=*M])HňUn,IO<-B|)8J@veq, +
+%9t6'"OcHɌN9 c8[ݲA71fݶ@;;H/R1ڷA$/ȣ*Q8)v@6JAvi^j``e[(99:]uHlqm^c׶HZ#.AUh|089@J[gi䎅ϓ
+=A3-ulxei~InBKɼ)r -Uآ`ZBr 8V֧A
+jAwЊqEw EqS ċh5dd
+}F~GfSF\=[55fsX&.3q2ݔpxz@+I+ʺ~Dsƍwb lt0Uާ$+y@`$,7=$9OErt\:Ѭ©FeW AJR84Y^ va[a^T˗\kʘ^mB*ۭaƫ3n!;%%8Bt=\0ỊFwsŒa~17#taZ"RM.ZG O*I+ű. {Y4YN%gΔ嫅u`.O Q/w =5~$@\H
endstream
endobj
-760 0 obj
-<< /Type /Page /Contents 761 0 R /Resources 759 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 705 0 R /Annots 763 0 R >>
-endobj
-763 0 obj
-[ 756 0 R 757 0 R ]
+767 0 obj
+<< /Type /Page /Contents 768 0 R /Resources 766 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 699 0 R /Annots 770 0 R >>
endobj
-756 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 448.589 386.19 460.544 398.145 ]/A << /S /GoTo /D (subsection.12.2) >> >>
+770 0 obj
+[ 764 0 R 765 0 R ]
endobj
-757 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 456.974 374.235 468.929 386.19 ]/A << /S /GoTo /D (section.11) >> >>
+764 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 448.589 259.701 460.544 271.656 ]/A << /S /GoTo /D (subsection.12.2) >> >>
endobj
-762 0 obj
-<< /D [ 760 0 R /XYZ 78.37 808.885 null ] >>
+765 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 456.974 247.746 468.929 259.701 ]/A << /S /GoTo /D (section.11) >> >>
endobj
-241 0 obj
-<< /D [ 760 0 R /XYZ 79.37 771.024 null ] >>
+769 0 obj
+<< /D [ 767 0 R /XYZ 78.37 808.885 null ] >>
endobj
245 0 obj
-<< /D [ 760 0 R /XYZ 79.37 505.243 null ] >>
+<< /D [ 767 0 R /XYZ 79.37 650.929 null ] >>
endobj
249 0 obj
-<< /D [ 760 0 R /XYZ 79.37 356.374 null ] >>
+<< /D [ 767 0 R /XYZ 79.37 380.916 null ] >>
endobj
253 0 obj
-<< /D [ 760 0 R /XYZ 79.37 187.266 null ] >>
+<< /D [ 767 0 R /XYZ 79.37 229.419 null ] >>
endobj
-759 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F69 402 0 R /F15 381 0 R /F56 384 0 R /F55 383 0 R /F29 375 0 R /F23 379 0 R /F20 382 0 R /F58 386 0 R /F66 388 0 R /F45 390 0 R /F40 391 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
+766 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 385 0 R /F19 383 0 R /F56 388 0 R /F16 386 0 R /F25 379 0 R /F17 384 0 R /F20 380 0 R /F68 406 0 R /F55 387 0 R /F58 390 0 R /F49 394 0 R /F48 395 0 R /F59 397 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-770 0 obj
-<< /Filter /FlateDecode /Length 4865 >>
-stream
-x=Ɏ$:J4VM ; <7'{ǀN\ 2KFFC>TW&XYA/~-ۗ~PBG;%S/_ozR*)|z:}S?HiMԧ6!=_6PڥO?=O= 6Kj?Ba
-
-
-c-c&П+Etp?
-ro"!·*y_i,= "vY
-w3Gl{"$?rI;5JpB°!4W-ОW8ܱ&Qū0/7r!3zxൈZmfYd2o#`ؿq^-=
-S6QXX;ygܧ<-kWq[i s&FTWLk%'{]68 KhX o}k3"YGarj;h
-ueƌ2;G6D0+#%4ͱug"rrTyGmK ^hvsUكǷ-@s_Vqq0℻FWȭ4 q
-N7s#&J›`VSX fdP "[2:@㞚yA
-gg4eHK%8&Z@YݭW!o+=M1lQlYzCdF=
-,?y;'ivʌS1p<~B (Gcj3ojʘ+bWOle W Ebc
-K|l.:W.S@ ?r&iR᪤TWҮ_o$=C$$;~w*iFo[V[gTSIc_I~8 }kp㩤Ku9-߄c? v4`&<8&IN  U`~FFIGp.nuFF !1W\z/q>7<VL
-㒿% ~M<"iul'>ܒgѤlcуᤒBS.21.$YK'g[kGkom@ĞF}0 !?=SIͩ*mfMm_jkͪJ)$Qy]q XXGVN
--9/kA ࣩ~8Q>f-4wۂU]|(\X9^q<6kPOwr9=9{0\):̕}+))XOYe7yؓYUb.'fҘ zSذ3 4\aF0`ags^x _M4K2
- B_hV 'xK}Ial|jƑfVf9mRH<o֟›A>`ĊJ~ռC:sP~$
-ūy<_|7TF_$ߚx4pep}TcFI Öf@VK3`<ϐgP@X yzS4ЌcVh3hX`di<4נ<+<. hY ^ ~NWB{mwI zv<ڥZ^!DgwkY>aCq> W#q񨥜bRVj_6:ɓYΕ%Gareq'xe5.6̫mu¡dϽF;{K<j>WjåS)^w3ȫeugpwoJYȷh銁.~P~,'Mӵ[O&ϳ,LV3> -o_ rT?|.7£` R ț~cb@-dȫEˮ'ymX>)O'i?ywiYCK~ ʭOKjj2l_Ci;7Y "r:^uLjM
-4y
-FZtG} .̖wt40鶳f F3:7|\-KtݣhYOovvsM'k+
-?`/`٩M7͠Wl$'Z\DH\
+776 0 obj
+<< /Filter /FlateDecode /Length 4740 >>
+stream
+xɎd>_QGP$j
+]s rr} CjO z=)")JÙ-|g}3oQy'_zb`J\>~9pΥ?9W<jD#^ȅL
+Ы: 4< |g xyA V<F4BKRo/ ҕgJcl&q@6 < Vp/<sҦ_,Sޗqk,yo3M'5Ӫ|܀O3jo~ f)'/"Gq~ a9ZeEꕒWq)1|)* ل
+C-f$z~qZ/C[^k32"-(=:7-?mN9r%3eIa&sFɘ@;Nv黖]KE8mKQ7'4bO qwə@P(^}!sa?)Oo'όx7a_1BIDz2}!"2@2%[ҞмVhO9Ui+OC,q5ڍAM:\vkYPȷ*4({rQ.B 4GᩢT-/[,a+/Y'm -*/Cg*Yb/`I9<nD I1>kDžHɤ1dQc^L܋dmtI
+TQܤ
+Ksr,9v2#v؊fkF궊u2ŊC: E! fQ84܌sLhBWPo K*8Jx*BIv`@t=E5IvI۬kR!.LHRIĒߓ5/ qE/6Ħ–~QaKOo{qxquFy Bq"+W7Atan얗ɝh!d<)+QznqǑIȃnt<z=Zn(\i+ݍ ߵ|`#4M]KTuW}G_H7a.x7ԧ/B4P-Z;N[w4CR D]+ ب)$=nb:Q(֒7[64
+5cʝ
+s9u/z,Zmҕlb$[#_Ģo1.6)8\͖z<eYqN<*krF]~onr(a6jQ83zz5Y -O%p)4i!P}
+Hek.\3٪,XEs#9qE#4•"57m+ם
+vgrh ꮕz犢kl}@Xv a<Om X$[+%i² `_޽!Y`xCi9 LbHy ʯ:< =ǖa@8O߾z~`lN;wn3 ]6gO./4ͽeMeHV2=ִsg#M{WM;G~J9Դ4=e裫8z7iCwGv;~i31M{#k6!P{qC(ݻ碿P
+ eM
+4
+ Q}PC[AY @q$"peD"ۚ?.x{UM&"xk;eH%P׼nKnit3IM~\_2q\eka[9(ا<Y%Cv
+8=AzdUņ<o =J).aBV<9_iNٖ֭$O[e m
+4,&rSΪ Cp}0'5xͩzAoKz&mYzlk;"vjm?`sxm(ߝ-[9d:\BTA\NnexGb܉ؾM9Iµ
+r]-r]wW];w^t`pKQ8zcwj<ºqÓbx۰VlX+!:{VڈI[NOVJYڀm!4}9s CI_i޺*"q"R{o|]0^C)gJ3FOH]{Ts_*.*9huCt+
endstream
endobj
-769 0 obj
-<< /Type /Page /Contents 770 0 R /Resources 768 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 705 0 R /Annots 772 0 R >>
+775 0 obj
+<< /Type /Page /Contents 776 0 R /Resources 774 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 699 0 R /Annots 778 0 R >>
endobj
-772 0 obj
-[ 758 0 R 764 0 R 765 0 R 766 0 R 767 0 R ]
+778 0 obj
+[ 771 0 R 772 0 R 773 0 R ]
endobj
-758 0 obj
-<< /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [ 226.429 757.783 427.176 769.081 ]
+771 0 obj
+<< /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [ 226.429 607.034 427.176 618.331 ]
/Subtype/Link/A<</Type/Action/S/URI/URI(tex.stackexchange.com/questions/488566)>>
>>
endobj
-764 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 192.498 86.351 202.955 97.808 ]/A << /S /GoTo /D (section.10) >> >>
-endobj
-765 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 373.619 86.351 384.076 97.808 ]/A << /S /GoTo /D (subsubsection.5.3.3) >> >>
-endobj
-766 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 219.883 67.03 226.108 78.716 ]/A << /S /GoTo /D (section.9) >> >>
+772 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 192.498 87.644 202.955 99.101 ]/A << /S /GoTo /D (section.10) >> >>
endobj
-767 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 239.163 67.03 249.62 78.716 ]/A << /S /GoTo /D (section.9) >> >>
+773 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 373.619 87.644 384.076 99.101 ]/A << /S /GoTo /D (subsubsection.5.3.3) >> >>
endobj
-771 0 obj
-<< /D [ 769 0 R /XYZ 78.37 808.885 null ] >>
+777 0 obj
+<< /D [ 775 0 R /XYZ 78.37 808.885 null ] >>
endobj
257 0 obj
-<< /D [ 769 0 R /XYZ 79.37 731.106 null ] >>
+<< /D [ 775 0 R /XYZ 79.37 677.479 null ] >>
endobj
261 0 obj
-<< /D [ 769 0 R /XYZ 79.37 691.611 null ] >>
+<< /D [ 775 0 R /XYZ 79.37 580.12 null ] >>
endobj
-768 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F56 384 0 R /F69 402 0 R /F55 383 0 R /F58 386 0 R /F66 388 0 R /F23 379 0 R /F65 387 0 R /F67 389 0 R /F29 375 0 R /F20 382 0 R /F45 390 0 R /F40 391 0 R /F46 392 0 R /F71 415 0 R >> /ProcSet [ /PDF /Text ] >>
+265 0 obj
+<< /D [ 775 0 R /XYZ 79.37 540.625 null ] >>
endobj
-778 0 obj
-<< /Filter /FlateDecode /Length 3984 >>
-stream
-xˎ$>_QA+l{{ rH8K~?ԃztxsn(HJZc7/~C%/
-;wJH?.~(}iR~Z&P>V}w!̽Ac7RЦ`vhx(4(S)˹׽qQ(9YA3JX8[mi0'3SmÇ|#*
-#
-ʰ|˿4ol/R_˧Zn@8><B
-2Jj"}y~ItG8ÿR.&Q8^(g 4g5KD>T.7%
- NL@mȭ Sp*En aBlŪo
-x5ąR᪊P
-8aKAEYåQ!=3=Y
-nh@1߻PBϹ
-|΅v? q*IM%.Ko:A# z 剷/w#3ta܍ &w
-PYTQN-bei]-Lr 퇊2DSK*y*꽱 V+J_U]S-Y7Y50+k[$f8lp.CI ^hCFa+M%vn/<qh4`  c0uT#
-++H;-"<qVͩ5%x'RM8C࿆bhr^հ۪#gd[`UI@z$1:K.ji(1NU(/M1ͳYZ) Oul0{Zƒ!UmhE
-NXeg,Ōe'`aw}19sl #dr2ºmTbd#}GEc굆+},s{Ϛ18QURu6P>K[`
-9sNZ{]R}7XE})旌z힭x
-l +*!blkCPhYe +y_Tp-D>q˽'SoYǝqږuǮZGYeu5Q7'[S0S+a'R fĀ2m%rd
-]54ǝGTΛ~&N3t\f&b*<"eA
-ekزSUVsLZ?H5$|м~֩Vi+A∬Uъ*wK8+UuximꍰBf@w*L}6w.]<{~
-e϶1ȧ[,>^~0_wкPv)'Tѩ|^KױJErGD^NJ݌z)/KiY=R u[W5g
-լ^Q E[FiQC\^LzID9
-<\ûPUD3нڪm-vVR+Y+ܛ<+Җᮮ $`%UBª܋%oBu?%<J>OH(I.ssKhj=\utD~aHNJMg$LD:+(bwÈ} 5s'hq< 3̹]̍ }:rj^46Ϯױ.e(V.
-/jt?cF C%0QG1\hKag2NSk9P*["DYM=lAXftpcx6|a]ƙp-Lf#A~:O7{\aF9!
- [0S$(yU>UӢr'\Ȱv6 +n=k(V-cnohx
-0~['Y*\ É*=r/3lZZ?УOwfʃRRRl] Nmڨ%lWLmMbֲo+JZR1oVg57vC%)V,|BS~%mQbޱwi}zvV3ֳ# 0cXXsXxtţ~zȃ囅=WZֵuof.y,]q.I%9;6ʸIbM'dRZ ${Y7ֽ"B<b\_01Փ
-kzd r1r_E7*ہµFy]duuDE ޮ!^
-oz9Ն8@.l gTV0=qDZP }k0=%1B Aa%.LSRXU`MP\$fT0<7ZFmRPq{Pʤ.aA ^_}$[K}UQX3囊 dBO`Sqx] |4LLO
-T~rчǬG 0:/A
-̓Nдz~Vn@wvPXڱ&|SÅ;SI;cd7-LwU- 3Z}Ź_>;7w"Mv(w^na[љLu>Nò9%\r;;+!]e?G$iJOwo sv8J47pM * =u)w7VMm|xދ-sO4SVli~+{ kPh`vDe
-)*#['$U*晇7&Tڊ|YapxyzgWY
-QJ
-B:j5l M| Y]Ձ2վ}#sMUy
-endstream
+774 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 388 0 R /F25 379 0 R /F16 386 0 R /F68 406 0 R /F15 385 0 R /F55 387 0 R /F58 390 0 R /F65 392 0 R /F19 383 0 R /F64 391 0 R /F66 393 0 R /F49 394 0 R /F48 395 0 R /F50 396 0 R /F59 397 0 R /F70 419 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-777 0 obj
-<< /Type /Page /Contents 778 0 R /Resources 776 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 705 0 R /Annots 780 0 R >>
+785 0 obj
+<< /Filter /FlateDecode /Length 4357 >>
+stream
+xɎ%>_QGAAspN!6?NT[ςׯJ(I|ew/x}͓ЋgހQ۟_|XϤ]}ȹ|/9O?!i3$g(\#LP8726<C(r9`hm!a&?hHcRU~ _>h,"S^B=6ҍ'8a=>.D3H`Ig$V3_=(hXh| W*&0ցr6+H<ȍ
+D$ D))"Oe nYnا">_#7yRM30[2vOSG Ф-n4}Cږos}&h9J ~I2$glϺDUu#zݸqxոc263!|y=}U8<n n0?xpg t]{) FfyGZj; : EJ*US֤8-!$Uc $⺔O37O0ՑeCyTB1_SKQ,JM|)H9w_-$-oˋ,/,MI3<;"nkk@ZFMKU*.<5yl)KH*5e!af?+YSn99{)qWwZ'
+`_14ޚSQ˞]zh8Zec|ηYfV.tG. =P CJh!{Ͽ*0f7؏t+LC@t(J\FC<XBɭ1ˑ0*)GT2qK<4Q7F̢9(|JsLZ9`jvBCeBKD֍0FFfpazZfĊJU HFd8ky?ɒوHoI{}\.] Vg~70oKI
+ik(X5h]^䡸,r B1e0HtpS1hsHk41uy%ü) _;:(@ULs8Bss*A*s:>M$),7A+'6QCm.YwtF.l:W7AG[n|N4ȿ'us^E#ӪD1)S,rs'WG ]ȑH:sW0Ri& ėH$T l9}6* #S/dT芟LxnjJI'I䞛I ),L06`^Q5:y/AR1n0'JU_HA+Xa;0}\5g|eBޘ(e@bX愝#<-Oiƙ9#-Ax(Mq([!~eؓHF%er(9dIprFF|S%Cu8BۖTR VvŇakiF&x"eiPJ3bq7K~KmqJS TuƑ#|wxF% xڵVKldet+o G bg)E2rPeQfXt6}xstz<N˹M^*ONPQg2rV?s͉GTK^)Zd( `
+~:G3dS8%WRq̬N6N3\bC;Ƶ] LuNxlʭ&]mW T>7֚4t
+oF(}lٸn}; Dz4s~'&P^Y 2/5ZzlɁ%
+)7BKa3[kB ^E6jE,RH *ke!E titD@`#i4:gQq GGxR-|t@C%l
+{K ,^u212%2]cXN(K1jp2{`4(:`*/\Ma )6 Bx黃W 3A:$R7[ ;/š(xkl{14N{C9hpOU
+W&64712 V 1:C~\B4M
+VG!`=uf(ϱ|2Z fp*V͙NyՓyƩ+^ېUd;<L@<:^NOkqZ.K`\jX佄;wNo<[z.omn(:uk͐gpohE;n|x םfBtIgҍxU'UXZ=zhVX9Qn:QmqBmm-5Z+VD.(𜡨@͠`5ʸl|@v%xءF #[rM$DWτȢ5 S?>qŠ 8^3@AЭEw<ɐkJ?wrA&RT帀oio%rVQӸGE!*{o~\Xᚆ[OH/s,I\pDנJ)]ˠ'h?#bzb=Oybۮ>@X[yr1OՎ/*(kQn=<Ca~zUP$ ,=s[,7G+~,iDŋZ6fkx$uEõPJ[A3W1Oۯcڊטk
+\L+.ҝ[`Mݢr&jwϕvӺnHkwr9kKIϴ#֖RY4X9 Gnʚ%B
+;n3b$Q4s^G x7jWvn6#+ Ouc\(k,ȱW|#H_6]U;v<ȵ1 vnI5 NCLD}%PIIVDIO$<E89O5Nӂ'ӂQ
+R<
+!FZ UI8Z e?X_E*B/?xꏕ_4JT"L^ 8].VD5V䅼}mرUT&1filj4axKi҉$`LEqP#ɏ`1œ
+endstream
endobj
-780 0 obj
-[ 773 0 R 774 0 R 775 0 R ]
+784 0 obj
+<< /Type /Page /Contents 785 0 R /Resources 783 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 787 0 R /Annots 788 0 R >>
endobj
-773 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 248.048 509.115 272.735 520.064 ]/A << /S /GoTo /D (subsection.18.10) >> >>
+788 0 obj
+[ 781 0 R 782 0 R 779 0 R 780 0 R ]
endobj
-774 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 288.456 509.115 300.411 520.064 ]/A << /S /GoTo /D (subsection.18.10) >> >>
+781 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 248.048 350.433 272.735 361.382 ]/A << /S /GoTo /D (subsection.18.10) >> >>
endobj
-775 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 136.765 107.237 148.72 119.193 ]/A << /S /GoTo /D (subsection.15.3) >> >>
+782 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 288.456 350.433 300.411 361.382 ]/A << /S /GoTo /D (subsection.18.10) >> >>
endobj
779 0 obj
-<< /D [ 777 0 R /XYZ 78.37 808.885 null ] >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 219.883 75.964 226.108 87.584 ]/A << /S /GoTo /D (section.9) >> >>
endobj
-265 0 obj
-<< /D [ 777 0 R /XYZ 79.37 496.156 null ] >>
+780 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 239.163 75.964 249.62 87.584 ]/A << /S /GoTo /D (section.9) >> >>
endobj
-269 0 obj
-<< /D [ 777 0 R /XYZ 79.37 403.681 null ] >>
+786 0 obj
+<< /D [ 784 0 R /XYZ 78.37 808.885 null ] >>
endobj
-776 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F29 375 0 R /F23 379 0 R /F20 382 0 R /F56 384 0 R /F66 388 0 R /F55 383 0 R /F69 402 0 R >> /ProcSet [ /PDF /Text ] >>
+269 0 obj
+<< /D [ 784 0 R /XYZ 79.37 337.475 null ] >>
endobj
-784 0 obj
-<< /Filter /FlateDecode /Length 6971 >>
-stream
-x]KWea~
-{ηݸQ([t#(84jd/^LtiW#F
-DS;].yA۠q ڇ&Tp#Kd+)&rvh#"
-F\ 5AFٟS.>F&\N a
-nJ)Z^1a5=&^쓮=CBUB~:$eD
-qB݉2WK)0m h0AQ.
-y%}5bfKliD|}R8[؆aGvFrR
-ͻ.NKˠ[ .Ez(wBPϛ^qΔloO@c#J81bhP =Z,?E^߆ΈcA{~萼ֵJ+x1ILn^Im>2BGBhSM /E]+[J֗hٟǏ?U=%_ljדK>s؃?h??*U"uE QzjX쑸6ܙS1ϝékuE @)
-ЎvI3> I`XWC^Bܓ|k$ @B4„Į( NK  m&=wTf??k\ᄺU# Amr0Js#^ D]̃LʼnfzU
-R0G$-c>;B<ؒ䱁)c#[DŽijǖ$ Hkؼ{QMs?}d`I-8^!*,h&TX-.nSg,\>WbFzC)i(C)@HwWu䲨;9w/P\@weQ/6Bxᒙ,EKVRS<˒9Vb)T4ϑQn%@Zndkαrx{#%KdsȥQ}5VYQ(w]ٴ>7@w"'<7B_};dUX0'zP\RZe{{X]|);ܡ1 noc䍻궱;}YݤԴǶ[
-篓Xo`–cMy\72
-S!y,KQ<˩⩣i\-YR}%y 8n)X:q>z ZN<(ǀ%XPYN^x
-%Kb)-a^#&WQu՚{UI4FNIC|/z۷{譄#,.'ǧީԱw &u9l݆d/u
-4+ny5CY&a*Ɲc)eǤ:JIOSw#7 _YdKTP*S{!}?&ZU<*|aIך`s޹cKp+<E[ý
-S(%seCJgNtK?a5NB>Fs>s/*yV`[ަ# D~BC+,S.c
-'6Zq}vZұ^Hg(e7DdX]:3I1/7v:V1"i/aXF&Xm c=)p}e;yDMyk#2
-
-šŠ|OsW}B;fP
-5!}
-K-@
-Pu
-vvvnq۔\kֵ=c<fpX Za/ -푺_Ŝ?mF/?T?*ҶJ)w f }퐠#;9zRexrpn<s#7Ñ6
-%9<=3^6.G$EZͻkgTxs,~eZ3ZJ6PBg<Ł] ;ĕm~4D; ,_C(M0[}X]X}8۸a3J 98Dbm߾`a}{Ar1Ax#t}2WH\h[\'t3~w,+#\E]uFَ- EOpH;uFKpSܥ KaJViOkHXub.K\*4]\c2Pr.*(GR|1F/JIC[ǸӮz<$%yl xlEJȖ1A@,z<$%yl xlEJX+u;m|$rYvdqn#;#Ud&Fe]vd ڙ"3ZRNI#9Z.;c?Ewb;K\wb?,Ë!Lr&#n ߙSU'v8G.7 Y-
-w's}jatpW ]H5Jpԇ[a
-F?jxMݤ_V(݊O"B\_
-69&U0b'NgsAGO;C.7w{)`7z :]G/Db.^f ʧG/6OF#:zεk\ss9$ct&wO1i?t?Sb$Ҡ:h0>]&F%Z٫^~hGT'+z.ge8k 5Y?]?|}*f/|Є),k9t<3~hǻ?-s> k|k45"q͟qC_Ϸ~Z"K0Ϗoq!I͖y~z&μ? OM5pea/ß1[+4 $+IӻH< i 33Ru
-(k7\@+xs<a4SVO0,Bڧj\uJ~`gT(/Z nvKWάμ.Wx[Z5 K^[ɤsnW_.'wbz_$exבsC?ɯxWMr6buÊrõR]q77%`:zHo$w7!)B\BVq%m[ڻ8-`ϻv")АOnVt48n:\ͅj ls{c[U JOe.R/w4O(%Bu 6$jU^8r޽)OђZ@2W- a)%W!`ZnM3e4NoɗGj,_Gz.RK'<s[^O7Ցd];ح` ݄Egό y3]9URR_QON6DV< ?]n*y0nE l=vgbIR[Y;xull.Iia60Rz}셽# :P?/H1[ULZKS-K3p+5&\5ӥr3#uҊ)}|3'%}$ [&3}` ۠
-endstream
+273 0 obj
+<< /D [ 784 0 R /XYZ 79.37 244.999 null ] >>
endobj
783 0 obj
-<< /Type /Page /Contents 784 0 R /Resources 782 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 786 0 R /Annots 787 0 R >>
-endobj
-787 0 obj
-[ 781 0 R ]
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 385 0 R /F56 388 0 R /F19 383 0 R /F25 379 0 R /F16 386 0 R /F58 390 0 R /F65 392 0 R /F55 387 0 R /F49 394 0 R /F48 395 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-781 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 475.907 101.177 486.364 112.797 ]/A << /S /GoTo /D (section.9) >> >>
-endobj
-785 0 obj
-<< /D [ 783 0 R /XYZ 78.37 808.885 null ] >>
+793 0 obj
+<< /Filter /FlateDecode /Length 6829 >>
+stream
+x]K$ϯE~
+[\j>T5t E_oIRr,
+'n_AF8_` **U[o/mLMX+p(⭻&.@E ܍P:lnj 56 ..d쨛H.xBHhSm2To P脁Ob'X+QCź 9vi-UI|*.VF?߰
+dg'_RPq-L^UѰ&C8MHIK.-VL^L%w,TGi0A ғ214yI;*:G "T#H*w/ b
+lg@.cqH4. ic[)*L6N ‰KhKfm6r!٣a ٜ t:CG2 _XcPI LI)_d(:]Il·J j٘#JwR44T26I%VMvh
+Jkz%'gd=QN@6+< bȨhA
+wܲaŤGÎR&m|aJ &M,d*[ٗ1)Y,Ϲ-+YN2eyr)gia͕,c.U9WN f~r2ezɕlzNSө34b^w#Kks :ޅ(wݿ.5=ҋԀW0rXQ_FK_cv&}s5]!Ld8џ!d2??
+Pa=Ќs 9&4P6$^iWWS] 3fWC!x>](muxnƈwf^x^7 3h"=6XP煻xY3=S%@jͶR1O]9ΙtlZƞac؜K9Z؜1g}793
+s'bSZ(b-%b3Zrzr8s"V;Bh)ђ#jva1-k-<EB ?۩
+>\Bd|ۚ#K5dU7^XyZ+*_$,6٢BVewx|,Vb.-`[X鰬חC:x^`" +j-by{UhsB4 oGz:* V h5v@֕rxOA9f Uts;U< [3]>W!qWB9aV5{ZBZMj!/9bn+̝Miuh#f>#V;Bh)ђ#jj0>jjOV[\:N-VHMlVIӅ\
+O=\&Qq(@,]̪̪ĬRTUJs*6$e
+Jr `S|dJ?
+8zXN*6f[ *ZԨ,^:Qo
+E3Lp'Cv&OSexM)z.?Cv"92a
+ى)x$74 X/&Teڍd'zw|KMjAPx5ZKԷ\
+s'bSZ(b-%b3Zrz䈅3XaDlJ EDlFKXCvYA;#I2 t
+;%alg2gt$dܙ"Z9|'fex'$eIrߙQ|'f%''bA<)[."<S3?ČCxr 3Iy+{>xB=̱vڳw(ixX+xrkCA.xrQI~bHs2\t!q~6XBy!܉ryE B<W,=ASfO%أ)ю,y`c#kwO[{Κc Yst!:]G;2"=o9?Ru6 vv)3`Su)T*rva3v`Tg:Tgb:1>3zsPЌڑO1Q3I#¦)]TgfѢ:Au#r P5:9w()J9wN%ECT6;w*)~<)]t:t&/ ŀ@#,bx`O_J-SVk3*f"r9f#F80Ve|k N*EVW9AQ:z7
+N|,!'=7񕫣C9$A0ƶ
+i ITт
+X4 z)1kARrIᪧNgHњ1&@k?6F35.E}ZPtZM-B;u :Z7CEī+ù]}?ܵ
+endstream
endobj
-273 0 obj
-<< /D [ 783 0 R /XYZ 79.37 771.024 null ] >>
+792 0 obj
+<< /Type /Page /Contents 793 0 R /Resources 791 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 787 0 R /Annots 795 0 R >>
endobj
-782 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F69 402 0 R /F15 381 0 R /F55 383 0 R /F56 384 0 R /F58 386 0 R /F29 375 0 R /F23 379 0 R /F20 382 0 R /F66 388 0 R /F30 369 0 R /F45 390 0 R /F40 391 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
+795 0 obj
+[ 789 0 R 790 0 R ]
endobj
-791 0 obj
-<< /Filter /FlateDecode /Length 6891 >>
-stream
-x=Ɏdq<HR ЭI:mȀz`aA2=5IhTW%36 _ t߼~Q[`Jo?N&n.0nN&/?\~$疧 q;Bb ǿ>r.N:'΍\PH"ņDX  $"Mnԑ')wᷣcҀCn(F_}4v@%֌r̺?R%I2q%c:68 ^\X
-R}py>a7#}Y(pq~n۟on~c!O`015im݅fJ[_(H
-JWHUh!=d! $ ʁQ0ߠ@.pl+g[ Wx+(tQ`ۏ¯vJҍF=il{R}R@Μmߝ;3ژj=cgXB1#ݍob-SϚiV ; Cd+ &'pZU[e诈ez"izg2jѺ b29zh j]YhVA\Tqyu\/~\.h`haU9A;M n05Wh^ ^Mó7Sds\̭VzZ7NcZi7*M)L:4הS:4V|}tͻzRp[6w? ZDH_N Qy$p 8;s+^/\\=oHqHܝvi9u=XVN݃I+]tQjlzk/PWǧ{ 7a8X xQ -++QY EW?I=+@TU'`>L+k-)oz!+֌/7ڙeIg/eK>?D5j;ETǨTN!^'.ю)懨''^ZՖԂ>cS#_k3?͋4a,>iOik\Qr1HK(p 11-'Ǽ*J|*J)K, `A-mUKBt*-`~U1˱ KI=ؠBula:u
-R];unN-izԹA^;uN2cS]:e8~RGwO5tAÍ%#u\qהTP7tt<h>u
-Md
-&k 79TCL8}QKN0*aÀ0!BA!:4xⳮ ͣ
-e.ȋʪ;ں¥kK%..UcF
-.(Qu)kbbgM7q qWaԌvqǃw@ċD:!H?W*6{x
-)k#;V1a?D@x)V8zX+G4]W|"r/TN Mmt0ܖ܅`օf3h6fMhWٞij&~Dt22j5A{O4r76HMfSrd/wIz2ܫlU'k6؏m
-D? %WXP^/tNCmS?gm 2Nyu^9o[;m(&pY;B 0H
-^?*`߫O՝b3$!O֫8oح:vޚ[?f7vO n_?o7_:y
-~O*`߯O׭q8ZgLf ֫4oح*vޚ[?f6uO lԮW?o6_*y
-^?*`߫Opԫ+^ݿre`#ɹ(s *0EI.Lī%z*sfSG^JXZ5}ެ=Jzv1/N#ׂm`U\F㛟y0׈3W˛VFmG+E+S`"8V^TwLXup2Áo'(j$z-.R\Â=X1ГE97ϯ2
-8٘峷) ҃? >.[u\}g[^|dڋO>H]|8oxu:;Luֶ솶S*vb7ok<l{Ehu"7s+Iگ;$ <=Zu D-a\:9
- H4urzfôszSx[Q
-j|CL0L+`WJiC%+$ TzE!,PlwJ4MjY*W҄0Պ۷S$ |~A;5"sZXTi>񊝞ZE[zkL~aR)`(e x- :oi].u:rl ]o79ŤP1mm">i.ӈ%Sc^s XVeS'YtZ2jA^
-_E}lTbE}.fX" Q RTjyvYlkI#K`Y*Xd;ww}1kX`^XMWMEQ2 vNwMVx=S{GHYֲѮw37A^*}Tߥ:Hw7ە޿ach>Iq=]'E_
-ϩN:f ]R^*݌tֲMl:*%Ɂ ÊA: eW!P.Rk'tIwn..aTMzvA?!B?`Wk_Qs
-"wi]M_)M,+;ŮĭAXZ**_F
-Ϣ)nh3tǧc<#
-o>Y$^J(ozxѰPjF3 4k`Gk4k䖛[%%`K,La?F$Ԯs"zx5sdH0Bȣ1 1p=(sW說GLeZh2~zԄCW@\lhQ̈O
-*)' '5ET+EGNjV
-b@āAF*Xou
-n 9ig3u K:S~-5Z&IqȌ{LH-Ju,]a؛=vÍdv0%v 6doveS.$i
-endstream
+789 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 136.765 617.317 148.72 629.272 ]/A << /S /GoTo /D (subsection.15.3) >> >>
endobj
790 0 obj
-<< /Type /Page /Contents 791 0 R /Resources 789 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 786 0 R /Annots 794 0 R >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 475.907 95.653 486.364 107.338 ]/A << /S /GoTo /D (section.9) >> >>
endobj
794 0 obj
-[ 788 0 R ]
-endobj
-788 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 480.406 604.2 492.361 616.155 ]/A << /S /GoTo /D (subsection.6.2) >> >>
-endobj
-792 0 obj
-<< /D [ 790 0 R /XYZ 78.37 808.885 null ] >>
+<< /D [ 792 0 R /XYZ 78.37 808.885 null ] >>
endobj
277 0 obj
-<< /D [ 790 0 R /XYZ 79.37 199.572 null ] >>
+<< /D [ 792 0 R /XYZ 79.37 599.397 null ] >>
endobj
-789 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F56 384 0 R /F30 369 0 R /F23 379 0 R /F51 380 0 R /F26 404 0 R /F20 382 0 R /F52 376 0 R /F53 645 0 R /F69 402 0 R /F55 383 0 R /F80 793 0 R >> /ProcSet [ /PDF /Text ] >>
+791 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 388 0 R /F68 406 0 R /F15 385 0 R /F55 387 0 R /F58 390 0 R /F25 379 0 R /F19 383 0 R /F16 386 0 R /F49 394 0 R /F48 395 0 R /F59 397 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-798 0 obj
-<< /Filter /FlateDecode /Length 4814 >>
-stream
-x]K$qϯȣu(kZ ֞Z]0G&|z˃lwgF 駉O߾3z/$&rq+_s-8WEy9Q:$>3 X\D[9^3H/6
-R7O_ .m±x8"om3re6=Ė.e(%9%fSٌͤOIb ,"JN
-{-+'nC,Xi.=hcήo{6YܘCq,)\®V8^naSLcOCj# -7``wRa ֧.x
-' l0\gz;jHSR|`^^ V84$:V%U'}j%jaWG Ś]HCpiBTE:kٰ2tje2^kN.M~,eޢ7ɠzzu<N~{&T){22ѻuWa~Ew^L]_ ϶xI1!0#Ѭ^sݮV}p<w}lΪ>Oۺx783.a⪝պYYcI%O:l*f SLa,sA
-jo8h3w>\Lgc35+N:
-kzb]8_;/r̛_=t, `)P0zR?2~>ʎhO VFBw:nt.:>\>4 r$pz Z9A2C8+n|':b (&d+=L'[7g^~Y .o
-fe_(*̙",@Oy
-@=;8 dς7d`|iu9/u%@!ȦS;ҲHC9KD$ wn8vjeRihR0pa*ޤA lNwj7%! -y`6χ~IyBAɁo{uYs]gۿ y>>S?Y Oԍ3!W
-TMV?73
-Y1ɨ索j+&.8fis-jp?^~!?kgZ̜t: g֙_̻?>H=xW[!LtDr!^Ԟ2HL<MZ)0?Qs4_dpcd`b!PYa*x:weӽT; D#B`:stc☑ԉSc"f\ jҒ=cQÙ꣆GײGo%Й\p!_iu-jW[zv.ꪉCҥNwrEcz`* hlI/%XZM\2ux ޹7 i+[fǦje(,<k[ JX2} .Gc-g< \tD5)~+O2m}G|mfVa#JCZ}W|֧Y3R,\vT+Oyzb,[43b:)OOdԲ +-YYz]<{O[
-+VW=ssl:
-S~\?K{gUV$VXpa$6}$m/H`({K@W`$/¸q_d'itSѓIPu̓c}]{$qxCj`_S! r?oGN?#L[hҙ"P6gZRݛ@P!d:z:%xxo:3v*sGc:!t;Vpz46 UKNs^8!^GE 7(6svHn[uv!xCh}v!3ǃ{Nd+h0?:Y ut7t -Uu<B2mԝ d?˩B]{kKP;S8; a@%52MGyD<zܓ&2D"A`?]GM>D
-UO.
-6
-Ao??}w?¼`Gނׂz]}pӯ:}qڸ8'l4uZ#EYܢ[_.tǤ0ftE.w~YWOl#!TxYF2] ǜ,]sxcP8
+799 0 obj
+<< /Filter /FlateDecode /Length 5255 >>
+stream
+x]K7ȣ}(WX-mv Z1`?7d2YQAVwU1"dFF゗8~g)/~~ ^Ȣ bjQ ,G)Ř7n}1y]QcÏ49&4dݛx={2Jd>]7-Ab?YHU
+XϬ3ڍ{n28P=E ns)!s~Ccd_:khG2Zh?-9)'"e;[7YZoAh,.x0VݧjT3s$oV;6q:FW<?̳2rʙe VV&}b?ߥS̛ODlV[tOO-k Qq먜˹ZΌf;n'Mz4""ah0s"b,ҳ<nUy'9&8{vӄ}r<+sl-LVc vi@ Y$06!
+ى#ehB{2O;֑Z# :B$~R`O
+k@v|(*OŠ'OkGxϼ i$:9[.7vMk{Iļ= y
+4y NtMQC82 s 80RJx"ӧ_~qa1$: ZpFDa*
+iC&a
+)q =p*F:Ŕ6\CxhW/GRacW
+=z-hfy;3Aj> ƥ;J\v5(VAEgH8iB,ىL![ :qݵsƦOk
+p~=6ϼz1{o1|~Jj7 og`G+7ڙvՐdsՍ w hdk Ov2pN9%U[ >qѭ:H{N9HŠ?b?2 E(p{
+a?V鏧d:PId %W…se$LEx#z8ӰŸtqy98hɎߗLs&gX^.dH_ĵĵ!kGi<}wXwoyalXHMI瞉9GԘp/~gןN4~,;#e{^4㶔;ۃ!j ۂ5w<>vgk(Iڿ#e02`Jj8nD ͐8eʜܑ vjQXBA~IOi csj` {ܴ
+Ig+Vwi5Z7Nw1Ϥmw yk'R-wWOs%vYk)65qɌ <Z0M`cxgs\8{Յas3wfs&._qW@B3N >7%"S+H Q䌀PWBtdz)2i9#DD)XE9\40C0'Gꂸ5AH9dbRJ>֜@}$%!&0l,D!VH?%%F)1=0
+FEP[ZΆo7բ2exCkT-,wV2KfeZ5֢@עdy\2J\v5(ӵ({Y- :qݵ9[]X8|u(<Nsg)@5)mt>gQR։flM
+v;f l
+{
+ćuP(L
+ "~xYVSo„|zh;I&%Xj!Ze-K Rf̬.&@vHmiV ?,ݭ Ȋ; k+L !҃ZgF%E'TFirPyg倫>X; N!HJ]cJgp1p/CZc=@3iqf)Mm6kxdowU5 ɲӖ2V7産Tę<+J+.[(h47g`?pMd3@aGkOR*MXkH|vވR_lt0F
+rwڕn0wp:F*9k:aE-ݭZ]XcyG(u@B]k,@-D񧭿0[߬6°?d>ϗ?v6Vҹo]_^Xo ^g> cMsGré&5K½\wOHaT)Pq)6qg[ғ~Z1}/>{CS.Οx m盻N/h%馪TՏu|i_o+?g7xNl8d1HLOmP$>GS{>́>o_Ij4fKg^̚kr}>Gߧy̫ZE~o\
+E>N~:bULTzX6f,pu¹~knnZ5o񑴌s݋)Zϯ+Zщ42D0Iks`Թ/BV+Uā_'bY<,>B_/ 10~NJ948~{)#d_S ٱڌOђ8asw
+3&~y[.U{5߾!\[{5!.Qޫ_SEx(Gby5,ѧ3P׈X,~I19NkZXWPe䱹K1?: XZl#Ifo/þk.YnJ.E1j'kd. X]?n
+M -M '&ma8?6_ אz qD?3_ L
+%
+^lZ+v*m;CiLh49NT0xPp#!{pY6$Tx$ +(hKIB,11a rlx P6BʐEBy/bv0Y;zN {Ȅjt.yyϧAC^G?LɁ$8u(oϏo6PIߗ<w%4";M|b5i.Txw ] 9Lrp0;sW5^ p8-6
endstream
endobj
-797 0 obj
-<< /Type /Page /Contents 798 0 R /Resources 796 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 786 0 R /Annots 800 0 R >>
+798 0 obj
+<< /Type /Page /Contents 799 0 R /Resources 797 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 787 0 R /Annots 801 0 R >>
endobj
-800 0 obj
-[ 795 0 R ]
+801 0 obj
+[ 796 0 R ]
endobj
-795 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 422.205 276.623 434.16 287.462 ]/A << /S /GoTo /D (subsection.12.2) >> >>
+796 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 480.406 444.023 492.361 455.978 ]/A << /S /GoTo /D (subsection.6.2) >> >>
endobj
-799 0 obj
-<< /D [ 797 0 R /XYZ 78.37 808.885 null ] >>
+800 0 obj
+<< /D [ 798 0 R /XYZ 78.37 808.885 null ] >>
endobj
-281 0 obj
-<< /D [ 797 0 R /XYZ 79.37 310.854 null ] >>
+797 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F65 392 0 R /F15 385 0 R /F56 388 0 R /F38 373 0 R /F19 383 0 R /F17 384 0 R /F22 408 0 R /F16 386 0 R /F20 380 0 R /F23 652 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-796 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F55 383 0 R /F67 389 0 R /F56 384 0 R /F23 379 0 R /F20 382 0 R /F29 375 0 R /F69 402 0 R /F78 469 0 R >> /ProcSet [ /PDF /Text ] >>
+805 0 obj
+<< /Filter /FlateDecode /Length 6072 >>
+stream
+x]IoW1q/!DHNN| r22e`rOw!KX,w;~t c);Ѕ-a-,@
+ G?s^1E50ga'Ȇ'
+׆ 㽧ϙ x
+U2 c|ʤI4A,:3S#Ns-pJJCTE@enPQ>GOJPD9ݗ0%PNYA:wFά"J>gs\ 6쇬J hefH(~*a7:}SS礔)%"Qwna((5Y7R/Tc3YLϣŋhIU5i'ڪ8VEp=hDDI CTRoUɦl[2r$%4.'s#c L 2h[K=r^vr10 Y.#V3KFCY;86TEbt^d@2m* iiqug}fkj=-7O7OuUz+R }UR[SAAjK/~.}㳤MvO &5_,C>WŜ('U{uV!޸-J;lπaTTxӶl& -dKm
+:=AG}"x>0E(KO?~H[hl39AiTǝBn(D(e8bJۓ~VuC^5!}!v@ &#X/X1X5 iP kع5{ױ FuC~{N/ p)fG"}%k5/C͘MUq$
+uJldWQlRq߆E@/vՆ'X鍮2 7aJ/klpJԃ3r3
+ȫ&"RѕnY~݅s;0JdMjI4qHІsk,ϱ/+YJM|xCu q%l4iT
+J|v(S箯/͉Fh]@1%6KzR#yù(u,76-.}$)a<B&i9X|^7S
+He_89]9i' *B|
+@WtDY3mb F0D>i%<5iÄ& 5Guq;+-V/"ZiHٯ4Fj}7H"1
+4&C/S
+%!RW/'T3K[ªRTNxzZ%z^s9k%[O;FeZd
+0j,sZ*=dTK%nɺ0kSRi?
+0qw  .a>SFUib,
+!&P\RnU;d˫RB*22DJV'0ں̔Yl._r[)t˛*Q WTK؎0fv,5'dڳZnNI?=48" \[Ƞᣣ\CJ$],%>WB\(7*U"cIH*3aۺ؜9HUDȼ
+M,:;ى70Q 0dLh$ODiE,Nj;
+3UvXn2>}Ydϰ,k$*q1B=<Ib5M&(#yF)܄1v1^E׋8@\{_C XqYlv ۴3,iviV|j8<F9+
+E>lBies4i z2tX+8KAL
+Pkj
+;rΊ+FKuV]1d)=+~䮘%@ 8/(ɝrJ
+MMGtzіo\g :t8hk-޻mOےTbӾݐDY:C ϹFQig{%
+^ S~MQ#RxD򹎰>GpB鷸FGɈ}
+!j
+!j>8C#9RQ#`aı-ESbz[l䓢fH>z|cFLu=-_< @$ z3Q
+s;>3geN%gR_@`Y5^'~5粎Y*B}ai[XCiNy & b15y =Pݵ 4][xRnH[qGWJ A"GE#U!
+" r鴘x[L`~7z0kT\?UX4)1iվ *o"^aevHekPo\:V]#yS`M"K{XAzp2mO\ _NZ-o0>ݓT=,Oi+0Ni(҉
+
+{l7| \jfoV\m~Ϥ/glV6V6W68V.|@F.1)-=ey81ʪg&N ĉrzgG7&.W(>pfe^4}aͪJz1b6>bGZ Vq>XlʏE"?ZpvV v0Lw&.#qg_b( B^Ppgl3!  ! *x)H!w;-6/N;ʲc#B⃯}U%5bl="IcԭU'"`|iخxY i>hӐ6]y<0Vbz*p\ћ#{TXﶝ>Øb ok߅qt}Ff] WAC6젒Pg_!2W/5ppLοt| ޅCik0ZnjXO0?1}/
+endstream
endobj
804 0 obj
-<< /Filter /FlateDecode /Length 3541 >>
-stream
-xˎ7>_Q?ЊDm {Ʒ &H.KJ^#ɡ*&\~]IN/O\\8X\~6㳔tO_(^(j$-Q.[G<"<闔^9mBg BDw7e(g6VhYr[RkڙAb?wq&\Ai[y  e׌Kt3oiWA`Œh% VeZ}lsuW.Vduυ2?_gVx<d~d\OG& [dE<!hs/N4”5D:؞OFIMAD媐 )!
-)33>lxTx.H۔4g:>՘ K0dU3fb@1r?ƪW2c-׏w+l5:g#! O1 18<`/F 'V<gZ%{wI#B}%XtfiJHɣlٞ&V䩛f;T A"853u/J}G׏NG7aW7û"μ
-+2yI_fرG nYw + }k,覡GA
-k> :qŻzS!
-gԯz&MqG\fVE><K6ؓƼ$8A uOnJXrf V8f8ՀiҦ=qң]
-?39HϘ)f
-7SXicz# 3^mo2KYI8c-DW"ܰJ ^xRR#|CA e/`b>4LG0DB('oa?RT9_~*Ӟr4"JΕ.x9G}|)\٬"cpTOa:<Z$) $o\)*KB `:p .4(aP$»Pוk3J}٨A)f}TDcKtir re2|4nkI3LQ#
-@ivX%Rװ+Ep::U]syz}JYO
-a;\tX}uv5rNoOO`5EҜYƞ].}6ks;7#CS~mYRP6R6>!s[:VE47fv;D- ̲3;eA1e5h~Ak&l)v7 X8Ɛٿl;~WFy7[yI!b/*0+zsW@cPjo f8&A/7f/x=cM]΂*Znd3MW,ĶNSE\ )=l Nw?RX_
-Km|ӝb
-.3S{\m NV: sI3zX+8G2
-/; 1
-k8ov8矏iNgs*FeOVYk3AV=_!9n8'aU늼Ap3r2+
-WqGqYϳy J+)<npZפ^NhԊҷ_33AڗcOPcew:
-+N {l
-&a p3..vSJ2ä;+9m/@͇=pcĥڬBH6;ڄ 9Glw|
-V\ xt]>v.CR#+ߜqǵRãkh ϐ-n^S+4L2>Jj%7uN$]{  1ΫO]}Θ(,!]7ϒSY{av5F;D_ƅFEʸ?- cau!dN墨UaSO_@
-&Sj~/1݇nZ!CE 2OwXxEJIiqrڄzufk&,{ye|ʃ?~]@gUnXԸ^omAՉ=A&]ҁT- <e%@yUz;J0߶h%!E
-iLJooe®%OHmm~}G::-~-g1Ӝ)g.g&$gݬ9cp3ue'9g
-,w|:U ʌN(;kAb+h[q0^C[{W=38Cr }yk BR/uENs%COL]fsG^ 9C5RL> 1^ MKLJm盅\Q<=t`-OOPTLX:8|C2&c
-ϽS)I
-endstream
+<< /Type /Page /Contents 805 0 R /Resources 803 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 787 0 R /Annots 808 0 R >>
endobj
-803 0 obj
-<< /Type /Page /Contents 804 0 R /Resources 802 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 786 0 R /Annots 806 0 R >>
+808 0 obj
+[ 802 0 R ]
endobj
-806 0 obj
-[ 801 0 R ]
+802 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 422.205 95.352 434.16 106.192 ]/A << /S /GoTo /D (subsection.12.2) >> >>
endobj
-801 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 436.381 260.195 448.337 272.15 ]/A << /S /GoTo /D (subsection.14.7) >> >>
+806 0 obj
+<< /D [ 804 0 R /XYZ 78.37 808.885 null ] >>
endobj
-805 0 obj
-<< /D [ 803 0 R /XYZ 78.37 808.885 null ] >>
+281 0 obj
+<< /D [ 804 0 R /XYZ 79.37 771.024 null ] >>
endobj
285 0 obj
-<< /D [ 803 0 R /XYZ 79.37 771.024 null ] >>
+<< /D [ 804 0 R /XYZ 79.37 129.584 null ] >>
endobj
-802 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F69 402 0 R /F15 381 0 R /F55 383 0 R /F58 386 0 R /F56 384 0 R /F57 385 0 R /F65 387 0 R /F45 390 0 R /F40 391 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
+803 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F68 406 0 R /F15 385 0 R /F55 387 0 R /F19 383 0 R /F56 388 0 R /F65 392 0 R /F16 386 0 R /F80 807 0 R /F66 393 0 R /F25 379 0 R /F78 478 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
812 0 obj
-<< /Filter /FlateDecode /Length 12542 >>
-stream
-x}K$7]"Xd4@[XJIsɁv]-Чkf4ճn?^F?/_/>]c*˯yKX/5ko޹+ӿS{ׯРO=#4 ǟ8>?œ?K[!/{@fKJn(XeXAJh?POc6OC!W^ݿyd"|ވ?OR5|ޣ &9@v'|ųqĢp {d]snɣ3-H6N=\y<p>t!ap?]1z TJ&lq=kR Ϸ/l O
-w^o%kwy~}ȭ2#[d#v=0f7j__qJ)m&\`\ 6/S|?5 {:/G Kws#=܁әMV2u뗯j6!ܹg؜Ԟq?1w K*M&Pûk&b`3^o X]cErRvqxD~H bݟ/?](p}ۿ_~5!}i`F:|_*b0g~24 /'\^pa5Йq0Y`ǜ" zoG9$9
-;`X%W]
-~~> P.P`'z\|~d:өf2Wa\ߞX) `k"-nzZZ8˱COZP7qG^]cS_ex-=;|X#6yr
-I/g"4fbf 1a%'Ԟhյkߨ٨RdXNUT%l(pu8fņjbB;LY0u) -I1Q7!P
-hPFkW%5 Nݳs'b4^['Ys3fSA53RMQV`#zFZ3c9Uw9xN*Z3lUcD oCb9bE2xFE1
-NFcV1r3vVh*l4*(ZQ׊
- 8>%W"$_zL)vysטN
-M=3Cd6<!o r@[B2 +\
-;&ZY
-6eϬ rZl&f€0#DiXpUBm@;PeF Jbߒ%f}LE0u:dP{ _1+8ce{sa:s-ⓙ fpb03ܱA )ENTaz.f^Ւ oᐊӢh `<׈q SN6o@+ZqkAȹ|5µoŚ {܌09~Q=
-RӜ oᕊjPLL9$3&dǃ9@@ b=UP3QsNȸ<M{pᖊi<C$Ciܩ桀0DOQ6vx*$*xur@rMMѰ#:a*EEj`XOM0D3L{ ǧ5<΅f†B.PW< 21Dµ9wvND9a3bPRdX ݩ G:9mu{C587g zP+9 }Lx.сSHrۉFcbAgLL A+8cux9;VI>֟"FW{8T
-X:3BNb{YrzeaN4h>枭Uކ
-D!XɍQj\Pq (Դ`| x"VVH $hkOT d
-6eTD JfL$
-JWQ 3>,JE!lɒjyiS
- S^54=jMx?478P!R
-dUeaNVa^6 щ!mCz":M
-AAQ
-5qR(!}ly@+G%`$j3аm'sUaO«]er(CH4pNJТ(:ZzJH86mA!>9!.Z 4r[FFUQ ۳+*8Puxec8*l+X-n
-w,A(Tt4hݺ @KL o&<+ZrCwf5nT[HsF͐ծqVu4@_E?J81X4XʕV} d3Q gӠ쒛 T!Z%W}`/
-}MN'3Ɂkc pT Z쨃Vðx1D`JJzpIOCRUO2E47XD<M.@B̘8Lԇ3G%b["l]ã#.VLr&Lug:h9 UwWcD`[QK6Ԩs{!4{<Ykٌ:izڵQUpJc1&.Ax -EXہt B&3P: x]2#Y9
-Aumqj=8$襈TBwQIJf;em»`aZכ,QtFfjfFT;ī% $"ެG%@:{
-r DYZ{>ф7&$~ l ۪nBEg<nFvmzAaCrc ǀ =m$m
-[3ID5NcvLBf!DCwt쵂wۆ3;^+U5<[MfT!OKnĿ)ALmhԌŤ!˹G9`^,jA:_ 9h3&GQ gӠŬ͍g8vVGi(3 |7Վt' [4xwسXq_v<;fD
-búܞbRDeR/Th=psjƤ)MifTJ/ko؆ ;pb&O
-k\rM"LuǨNFd]>Is<XC!zo|IRMO(˸+xt}$XR3v1mS4=4RUu Ǥ:-tv> jߓ 6Q):8-fƥ*gjܦIݜ;.y1iJ`
--sysXA-׫ RSn[2ʒ\!`Uh M3*U'&IC#(Xu{̺ypL6<]#Xb8eAcٓ"*wkxLTLR7FKlLќ` K^܃)"uy m˵`)ȌJI1n2e4շ{i׋"}~CC E؀SxWN-32i耑* 
-h-Ôo1LM!֤'oe2qsQMYjC5*_VL\U{HFlaT
-"هCB&2 GY!B-w1ŭL5A滛3Cpp(4AL 2Y]`%e0!d#2sȋ75*]"|I=3+ _Vڶ(bda'f2" 'LR:~Gf `iH\ QM9eU0*T BʕT!'VH՚H\oVpF 2WQ9@ZT#y$\bD c/ӑ,@8Zc'CB
-kX1$vD#ܕliC+eU'*Tjeev4
-f?+8ڶhmdbҀ= Ѕ4y# |22ֺʴ!5zS15CQia+[FXoQ ,6x\JU|.vސ
- $޶+a
- O<SaLbwB5-râl 0H$& JtK!w,w 0A}W:qO_K
-o |!3аm'
- S+!ykW )Z;ī3M&' =7+4 !j@(;I/b*q߷
-ު!m'J/mXl2"û)fcUP%3F
-c}F,55+%f6Q5Z)
-M((QS9kQVt3J]±)ӡ$VAjcDrCR~ji:"{xbڣB ӎ@P&h ƒvv%
-upL4"Q( Q;5b)#4hDt}ЃkIR̎. E)mf!rߛ1+eTnJq,d{"RPCȢB<E KH+D(ӽ!Caj30m'ZbkMEXCfyԌ@TB&P
-vA+8Pu[J-31A,FbHx@:B_'d+`(юTLssS#.N?4cqԊj*6Yg&Jh|^9mƈmYy"Q)C܃ ԝx`)4 gFGD!vմ`\TQEUÖ<٘4!06>
-7oVoh|c
-wbo͊f5'$iGPHi u5-\TQ<d=XS5
-G +}
-pgL#~Xn*=RL({~vTlX
-LFx~1ΐ"Dnn{fL&%hBs|bj`([< Ȇh4nI V*OQ11.pƗLWXvJj)9 OB擐$d> OB擐$d> OB擐$d> OB擐$d> OB擐$d> OB擐$d> 2I'1BA
-|Ϝa#XCސVD6{[̼:R2Ձ,(°?#lSYu ,am2n3Wh7=3.b(Q|R@[~G 7UCc>w-±4Ltۻp"ҫE# _|xlk7lCiiIɓ?1p86X{IE
-)#~;\k\;>؟c.᧘oEwߕ8~ӴjIY
-;"#b
-<Ʋ{a2z"1>yO1>yO1>yO1>yy/PfV8(P!
-V .{.)29\m-%@ìp )R:јD8{*7Pmh-KkjEvdpžZQڛ =H+1~t\)UCbv (SJ:wd
-6ET΄&d_O =r@[# 0 |'' <."Z[=ىFGp 0d94&a옕-N}\Vtv\ #͝um#XtЗikFkl5昬o#h5Aᔕ-D}2V"БM#'; E+ ^0 f븈k!Y] n8֚5E$xeϬ *!d LP)g"rNV
-"wB‡ ?1zY'Y]Iaf, ! 2= {8fgLlpa~̵F؂UZ ?5#(٨Sh 1a|p_yWK1W79b(BSk\#-N= `ӱx:noIVei7# nq0S=HNlӜ oᕊjP9828(`Rϑy&A2+$kl/ܥ .LvX%E@"7pLuƞ lbPǧo:;U"63! PxE6mxuD)VT }|\# Zf{ ǧ5<}ZW#2Ām@p!gz!%\sʏS62B ӘK ]lF""7 loXN]x8"80@%+& "a/__Pg:i%(
-DN:LH:.h1V.FtfK]38VwW55JM"[FW{8Tq]W"xG DI,u db9a20M'{'. .{Vb;NM (5YGcf("k^ěԴ`|`20-'ю2%Q5*0 TD JfL$|5EZ ;8i~<ʀpbn91UFxWMh嶌v+41fu EkW nD`-SB7wx/YN3R ;56^,F67W8Ubf,W}X O41Cj5 |!b*IkA?> sx94 \,6_7I yih12M-Zǣ%1c즕5h}_Yl[
-~Siˆxu9DTS`.BQZ4Zl:aa'p6CpI(S1hC@78?<v~xcI{Ꞵ'I{Ꞵ'I{Ꞵ'I{Ꞵ'I{Ꞵ'I{Ꞵ'I7Bkxz%֍խi^ݺV!L4Z_o! iaTEETl\A [^ 4mgidC\n52Anx4"Q rB!~4D7%.ŸKmrfXLAw;J٫ e6yׄ,h(ngB$vxXn;]؍Wav}ڕDEI=b7-* ٨5B}T]S)@{=V{td|<_4?Gt_{{S{쭯x<t'˫/05{|Ken9m*.Y_ ty
-HSA%#F;S;%"+?6J 'C'x}7MO > D8_Vp4H惙(sylW;vsrX0FO}9u|cKt}?ħSRHa^\pLZ _` "Rxթw.a𵬰kIݖρMic@$ szVP=
-1߿֝CAjd6ظ" +PI[P
-+>AXo^c"= 8:?q2㍩A6Q[w>(“`=JhYͅb1?_i%x䥸)2&\S;>yf^IKY|}M\(1Ud0S^%|%;Kd8U;^fS*PD<D6?o9b? B$Ǘ'h b.O<ZsotiPM{;9h.9]W|i~EaSjYMc m̜\@DJn\VK n#$hE^,iDd ?QS1rw2q1Cj0g= |IÍa&. F>qջ]Ma*$5
+<< /Filter /FlateDecode /Length 3887 >>
+stream
+xˎ$>_Qв`09,7Ǘ8N#R*Uuk ۳]EQ|w _xgWaV/}/bq)8+byas9WWȧ F</20/3B:gΝo88Qd,8-=!c*gRK\r#9pGF*ƈ79BnI78N1IQY ~
+ė_~^r7l)TZzS }KrWu`C:ܰ%atj%_D#T" D(I+ԀAJ0TA ta"=xDֿGm9ZDhRE06!q؄#]qL̟_ml<˕FU^H2VL˯ :2:p:^Xm*h@MX '_&/ ayZ6}9-+]~=ġ0RdlϮr>RYf, 0o߷N b?xI9oHq<
+9@
+ ;2-Ž-u^ap&0a dNJs A #U7"a(t~Ͱs^vйa'rzX َ4z򷳝Ntr;nmi^(r{!xmZ_|^)R cO~G b1 P,i% 3sc'C0Ky
+t6o0nD5B՜8ʽHK=ܛ,c1Y,άRwjֺy67XXZz&'u0@/'3A;O,'%)Ó0w.&>s̫0og&Vs:u6}W];Ǽ@qOT3S3Ҋ Ǔ<SsMB>z56X5UO+<]w* J3u$Ce{<A|x>&)/sf @΂Sవ[1蓒󮀵Io&Y@V:'޸xk&!|m̾=j1 M&Q 5;ġ9<$|͟U
+t-VnC&v,7e%F!^6mEMjnڜF]SƦ-aZD7T(WFzI-ICHz>9eZUQ&+e`o8 =c%yfi}{&\u}7N85 z:;5vETG<T*ure񽒍ek}?ž&Ig6Bo^Q j+|'y~OlY&e!n
+V<Jʴ(]J]L7Aڶo*okE;O{zZd5df=6.k\ BqL|dI+S6yUn +Q>.~2sCnO4nu,
+K3'_WsU3 7+M3JS6y4krB[ocMKˣ'p4l?d۽96+
+:(ԗ>^%Ǧl=3gIU0h\A ҸR9
+M]@JXY瑼ހǽU!O5}߆DaDfŽs7
+2(Bۈ>$uieY5K 4Mnt+MXж\Qb&č% Fl“QĈƓ\$Hi&* _{Vi+u](o1 q`WLb@Vi=qg4 mŏ"/R.C1K#%={R3#5RNd[*^>ѝחIQ&+oCdu%dYluao,C\28&}EB^ nȀ-UVu*(TGJz,0INkXu'7vyUՠʄͬx43y$7zˌ6emfٸGq&ӭy*HKF&`\
+Se
+nhk3$e\4ur-^Ĵ)4KQPoh_ MD7)`%2~Nyr$D2 Tx!n-c5:FC_ЖŃ{}Mw20K<ݘvKSdLHL圦zj6!%hn[WNz^3/ͳ5o_GL2prr5":Kk1.ZaTh"0JnOT]/ ވ-*A+ƃ>J$^Wf(Y_(׿GQi'/[cBKuS4@@'XnK$U꫐&gwƢb/o2i
+/U?@쀭a/zx:2A暽D=:U:.`A.PIQ"y*殭+RR2CCS_sG?x>߾X^ rlgqf>eX.w{p0S]^#AZ: K*㥤5u(~7ijtk^y豿-o<-Hyħ+O 4D^:y|$%(-r|׀ , ^L($XF,4mCᥖ\U!LJ/$mK
+dL
endstream
endobj
811 0 obj
-<< /Type /Page /Contents 812 0 R /Resources 810 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 786 0 R /Annots 814 0 R >>
+<< /Type /Page /Contents 812 0 R /Resources 810 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 787 0 R /Annots 814 0 R >>
endobj
814 0 obj
-[ 807 0 R ]
+[ 809 0 R ]
endobj
-807 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 253.045 239.124 265.001 251.079 ]/A << /S /GoTo /D (subsubsection.5.3.3) >> >>
+809 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 436.381 112.733 448.337 124.688 ]/A << /S /GoTo /D (subsection.14.7) >> >>
endobj
813 0 obj
<< /D [ 811 0 R /XYZ 78.37 808.885 null ] >>
endobj
289 0 obj
-<< /D [ 811 0 R /XYZ 79.37 771.024 null ] >>
-endobj
-293 0 obj
-<< /D [ 811 0 R /XYZ 79.37 695.22 null ] >>
-endobj
-297 0 obj
-<< /D [ 811 0 R /XYZ 79.37 288.23 null ] >>
+<< /D [ 811 0 R /XYZ 79.37 624.557 null ] >>
endobj
810 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F69 402 0 R /F15 381 0 R /F55 383 0 R /F58 386 0 R /F56 384 0 R /F23 379 0 R /F20 382 0 R /F29 375 0 R /F45 390 0 R /F40 391 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 385 0 R /F78 478 0 R /F56 388 0 R /F25 379 0 R /F16 386 0 R /F68 406 0 R /F55 387 0 R /F58 390 0 R /F57 389 0 R /F64 391 0 R /F49 394 0 R /F48 395 0 R /F59 397 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-821 0 obj
-<< /Filter /FlateDecode /Length 4519 >>
-stream
-x\Ɏ+
-'71k
-1M!Δ 'yn@w4y&ۨTpMtK/5l6jah<kabLyr@Fhh+TKN"8u
-2dvq贷2V^b8з:,%:α'L OZpR'w=UR&]Mr1nY9+d43x$|R\tVx M3eue|zrh5/@E"kb~BqYWyEV)vB;9w{:RE&͑[]P!M:R;4Q):N mz#rgPBP9O4&3?syN
-8+]֙w:Y[t+GϜ3fxf{5T.~T~S>eCE3iӵziKJmN"
-X6⥺`sO J8Qd_Rnr7 ضpی{
-58 xx|qh;6~hPg]JQ.AT# qoΑ -91ЃhS^ŢL&98R>",12A.phLj7Ttt4H:yTU5(k3.Amݖ6lL_ œP  w;u@\c;IJ
-Ij C* LmG%dB5֡%pզw9Fk+c5{Β3^fp͵,pQ-x6D gLgfi{2os_j3Z[Oz/9hacOM[VCpQ˙.-_b[$ 3D1 uG4Pu)צanCIqlz1h}9W]A_0R@x9Ɉd<Kw{<c]DXgjE`H>Lf\DDHYyybhU7KkcH2.e0E_ȅeQvufGKbpnGt%*~%Ndb܋Df7R]{LAjz3rG<Ge(tO>mi @դ4}0c*IA@ɟ Am~Q(3
-(6x
-Fy`ipl>]?>m19d˵JvTwWO,ɊTJ(jԴY"]V`}Glj s 1D;ѽ@~<<[69W/ #caO`ϼ؈K'`*00`.|VvGyXI6ى^Gu|nYnm Hឣ{+nX*KVM)kIوHQGaߖ 獸pWpx#zc-%Oq\:ձ e^eTUU9q㲲-Yy6=]ڨ$mYuiH-7z|s# 4/ru1/P+
-Ey-|–
-24e CÚ&bRYeO34Kd7NgAqPͣfm8_?/]"干̇d0}-2 ٽ[@<]%Y_X2jRe~q\FuDW*>EVlؖ_SFff,~)IUy3q+_QъHvelp -
-DUDWq{s*)Z5D-,DӋ$hMpxs{:(ԗ.Ij{zHڍ4} Eeܮc-V0='ejj)bMy_^gUA҂=GU LSW $_i6(˱'WMuY\=F|/e^oL
- S҇mONDLCϭ)Aͅ 3g<)
-?])Zh?װWS7vn@B-mrc^ӛ^5tVYA#e$^#T e/,z)2zt& aG8XH{̼ƘI<rTw m\SN.jQ5n7am`Em9)lrU6Abzsh+z-A_SˎBcWd3v6]BnsX :q[qE^ "?Ew0u6;jJVkTX`~SvVȽ
- 6J7' -~&/zs6}f']r#*{Pam\ s0DD g}蛏Wn ߍ
+818 0 obj
+<< /Filter /FlateDecode /Length 13146 >>
+stream
+x}K$Gޝ3*jf:#`_ffnY#w6MV}en^Ž;?|^~;p/#֗Z/s'+5hBd51\SߪV>ÿ>t= %ȅ?;2#DˍhR<RM
+6,h!?_J»ku=K›D裖wh<RJP m=輠5//ac3O/Z8уp#:J+!b*5 Z_>I8o/ty{ &fP $2}R:RŠյ7yS2ߥOO{[wg&~efZ9zwgŷ\ ffSeDsL>jhguI{3#[f>\Үp˒씥Woq&8CC$Fk^c@Gk"0֫lmDtz zG d_Wa#9ݛ߲s]k<#_t
+
+ǫg>P# bzq>e?gWU!H0ɴ}e0+ -)
+!ǷKЈHtzϺ-~Oӛ跊;iOo}ukpM:)pqZ{Tge:? 33߃%UݯnNO%]\:gzHv>CYvqsV7%jrZ2tBx!)9Ccs~Cb=| J/6-^04<@֗sK MKvL`J5VBY@+xRשuy Vr{)P"U 14K拎kK cɞlo3[Ӻ5)͝u/QYYkI|lBU;,R XGDK}]rp0쓪#HMM2-f8m ?_DFZ
+\/Vpt~JfMDZ-rY-}&8?瘟m~ Nά&I@//}CS8ܣa>\Q|?
+zXu%Cwe8hh%|@[ pX}=WZT:VUΗrİa.tT㋑s^> ?́UL= {jsCK ,pNxV,q~֜_Uy0bZJ=+wԠCU*ߥۥ%.g%۫_hEC=+ A~d?#z6@d[\9Dog&WN$e堧 @Zv~疭gL ;̝s\ɛPn;vdh0?ش<Z\犕ucy?}Ӽ謹WOw|DQXn(z7z~qǴ=td7<bE3  `lR#5 s"k<߽] s)aNm8oz` T#;0/}mG,BHlo,GT# Mu6\SﯞX}'i ~SG
+UEwᯡ>햎1\~=rˈ?^2ֶיm4n&q+e+^WT h?T=ocMw{r:XkרB0Y?R,wV!~
+-EBK*jUj&ZHtJ0pDC_ڝ}z :m.]В  #6- yM F'6٦C/SGlue9E@+"f |E;a/LmmX|𶀔}9'd,iwet_CѨ[P(( v9zJ!
+B_
+%ݗ2@5
+y;3XIAlhX ^]އ?D*x΁PA ;@i
+,Ȓ+6TM {K6*^dl_UAl.T=WE[x{*.Z KЂ[-X`FpC&FxDO7%_fhiRP=&\dJ3 UA%x{dP |9q_Q)~>4#k%I:^ϰ
+
+rmBbuML>ljY]>*4ȶLhIi`yk\^, v-$@f[ j3аn@\*p[+JZ
+xOٹ_(Pk^J.n
+fhUbb{K y}qmITR_ &I%M)K6!_Z-<4Zbf `%'Ԟو:*EE.8@跃QTeZ}:byUY1!\,ʃul) -I1Q7!P
+hPFkW%5 Nԝݳs%+b'4^ޖu57SlF<Ud\3G^\Se&b'kT53V#PuPOl]_ ?_R5;*8VuZGVu`*]ԺuFe<mNJj]NerS*>$(Ƶ ʈjTņ-Yx$ *gqy'%ˊJ@9Y&+Bcρ׮B3Su]D07.T]#9R 4rYFZs&8YAއ T)ZIY0Ѩnp
+m32eПQ-CjIpHiQi0k8æj'5c7@ Vjp8Z ׂs5»oŚwh$cz#-쥦9Aއ+U$C7C Qϱ q5!p$6Gl
+ Hglnxef saF~70Ë!!aB""<rfhƌRRdX GS.];9mu{C.5 P^Wǁv3LsEBbN4B+/F<̔ϴ+38VwcDH˶N(tCD WX帛CgFI^h^uhͽbKs֪@aNM (5YGDr'4""m.e@ܠY#ceݞp 2LrɉqDAJL֨@]vNMdD90y@sVXBôV?2 F0f yZ<᪺ \NBŨ/],;jۃPL/ڽP1^kHY^i (e'; 1{D{m\\T-1*X*ib%KVITz>0G8?wʌɧGa'1--FEkd4F<b\06nZ*\Y3HfqY0o I$ױ}PM!zѾ(biqGiha XՈAzFNBA˖ h㗱=N` 'IRF1"5/D
+)AzlH!)_h[$0%YYCӥ܄yCsa\A:
+F")00k%8o< LU b
+XB4CT+A2|22 kك5V1J* AcE
+iW ޱdUPPm{hB,ݺЯ @2n&\+ZrC;8f56ql-QtFfjfg8mVwg,& A_F%x4:kƹK<*qz\J>Zm2ə3ibvtOf%Yu,
+raWo_G9[F Ňq}f/u(:Qu3jkӣ C՝╡ $0zZnqlw/ Lf&LudFrC)Edr(
+0T)^`L"uT 4o
+@I}
+q LT4iwɍ74KXL2^ :
+UP;ܰ aNw7^Em yɓLָT _<7EPQNFd<Is<Q]U!7$'|kK>i Q))*CٺcR-tKD,і=}O6)lRrZ$IaKUոM95w\dcҔtJwk`0ՆX)-SCeIT*4I؍]$@=fk8&ݡ-Xb؄֥Acٓ"*;`;`&O
+kdr&@LSPQ}%S6&M ns4-,&e
+cۥFږwy4S
+B 6x$fo ?s+G<%؝8zXDIqV_6*xSjM3^_C~0>pG.z`hd[+]WNmnW[ەvEvE>vko
+9*ҏT![*d|\44=]T'zߟI|Ww~{owA6wA3N~e$|x xEČؑ53"bGWyB[ I$~? O'A I$~? O'Ay
+!R\hrRtS^#")[Õ~kR`ؓ[ z=EQ4u0Zz+/:` >ENdxó  HY!.ZbK :S_|w9ѧ)fBaU(4ACK2 Y^Y#C6"TI^+/(R`:4<wEܬlO 6~YAvjۢTʑ ʈ@OtBdq-i VI !v-D6h,ӭ2EQve~]IrdTIufg!wIuPW/'Zs4d|5J@@(V!e'dZFծ@\TA;ū#SIDF$sRhl\n/븰I4\e}x3`fӢA
+(-Ze4 F"t!Q^`h c\TB_WFFo0>eSZ)1ֹ¹qUU4BLhOszJUjNwpkwlv'!!qHlE"*Q12ͥH@!*Kr>,
+J`TOI6W2{
+ 7n" } zEGR%lBbU>z h$l-ѰMG;3SC¨(|yPB ;̀8HJxO 81dhXB=4z:h{[(EaHL<J;w wyէNkJⶠGYU].;Qnh8avڒaSzi*5pǖ4<i\f
+U2c4jp
+% ra^{#ȞZUl!oQGx Ϩ3t%1fmDфDԬ@73
+UF+BfP"G
+B- V#b 2 &\iQdTLcU{U60l`Bb0npg7hXR{Uկ2
+c;G1*^1ӆ \hx2ŦS)&[M0L_ZڑԝG~cHmHA!߸U \P@T*&y8fyQǨw%vx=D=ތf ù+ -u"ff 0H)'QpiJZU%Xfh‹xqcQ'TL#U{U㐲FJ@ "Q>Bk $)B̎ . E)mf"rlUG^ތYA,r3vVBqO^
+)qa!.@Z "F_p!ZAC 4rىX]SuzЭYFއ;#5#UP%1F
+1Ka쨪 &tqj30eV`ð6<כv87g QYff;d<0qc
+¸:a ɓ(]ry5-'UTcQ%O6&MH/;:/.Ag0DxcGq\(L)G@6b5Э\)+aL ƦK+Ѩ=pa]MJ`liiU{nHG߰POƔ8.]ޅӢk4NHl 3[Ѝu5-\TQ<=XS|6
+K +}
+qmӈ_/$֛G Oo7 \\ញgڨ )K4BgdRRh6[hWL C21yFCTcM+dɧѨOLL8WOKUzqݴh<Gn3!zgJO'AI$h~4? O'AI$h~4? O'AI$h~4? ~ Ϥʊ4xuN'^c4XfB<0Ȕ>\{& yCbXEZo3~@K/VŬG
+Mihwԩ*7t߰䇵M Le K~wb1Ek&-R@[)-"H#vUCmT%a.Cq폡p"қE#3 _xlc٦Ҍ#cݝ4Kxaxt_o{n pvs[iM⾭5ݦ154Kc.Gc,wͿ]ߥC { qЊK8h"rКƸ4kho
+9<l]B,HEBUH#-ߗh Bc@D>iOy |]_ HcAc //@_1kf |X_Ac8@c ,O'Ib$1~?I$O'Ib$1~?I$^0̬0qP?Fa|+ȨWZ%T+3﹤$ .r6 B7PʞuU1+ TnNZ?,Ԋȸӎ'{Y(kMnqR| &JK R\1$fUXFOJչ#1+ M묢d'F{9@YI2ޚ,rX iz@ ht CCcR6ʎYjԳq5r'4wuRT`qpUóLCwؒ7j 21SDGv1J9kȑᔕ-D=+hH%푐煊բ"/JPND
+<Z븈U<.EM.7@i͚"l
+ħh3+Sʆ=0o&`
+6c)FTبYlhA $L1+8ce{[t34gEܦHQ 3 |J#(q
+
+
+].;uu0}ZB
+Ĵwsr(5Tl]BW?rAD0(G>5
+U2c"mNJ 8i5 q-4Lkp+iDPpƐWA0e+4.NB˲*(Q=XbjB1YGCqƈ{x}gYiȇPNv4 [56^/,F6W8UbZ,W}X O41SzKY
+ZЏ*3n0'K]Q#Tڢx\Z2!c\06nZ*\ʪtfRN`N bvr &]iqGiha\(F,3h }ᤑPsІ}n4cϯ=:cϯ=:ձ'Sɩ}r>9uON'Sɩ}r>9uON'Sɩ}r>9uON'T
+
+-Ԭ1R'?hi<*Yo\[ݕO҆zޞ |>"}km'MKj+CK_GHuoj\ӛmlY{9uI}6ޚ~۞NuKt~vڈOd armZկrJ
+6ӃJkuV5Ee0lΎx^/H[$h?w7a
endstream
endobj
+817 0 obj
+<< /Type /Page /Contents 818 0 R /Resources 816 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 787 0 R /Annots 820 0 R >>
+endobj
820 0 obj
-<< /Type /Page /Contents 821 0 R /Resources 819 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 786 0 R /Annots 824 0 R >>
+[ 815 0 R ]
endobj
-824 0 obj
-[ 816 0 R 808 0 R 809 0 R 815 0 R ]
+815 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 253.045 100.634 265.001 112.589 ]/A << /S /GoTo /D (subsubsection.5.3.3) >> >>
+endobj
+819 0 obj
+<< /D [ 817 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+293 0 obj
+<< /D [ 817 0 R /XYZ 79.37 627.392 null ] >>
+endobj
+297 0 obj
+<< /D [ 817 0 R /XYZ 79.37 550.977 null ] >>
+endobj
+301 0 obj
+<< /D [ 817 0 R /XYZ 79.37 149.74 null ] >>
endobj
816 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 245.069 167.799 257.024 179.755 ]/A << /S /GoTo /D (subsubsection.5.3.3) >> >>
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 385 0 R /F56 388 0 R /F68 406 0 R /F55 387 0 R /F58 390 0 R /F19 383 0 R /F16 386 0 R /F25 379 0 R /F49 394 0 R /F48 395 0 R /F59 397 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-808 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 383.119 134.196 393.576 145.882 ]/A << /S /GoTo /D (subsection.8.3) >> >>
+826 0 obj
+<< /Filter /FlateDecode /Length 4312 >>
+stream
+xڵ\Iod hj ]o9%H.CNJ^=5Ui!)HQ/~/|o7e_N;x/
+_0;%S/?xUJCJt^Fg?;)}5 z7_.8`}R_j uvMؓԓFp'Qh:jK:kķqf[$:^9t^9Ҹ7af"qy?P
+k]V֤qU9lt2)R0|
+W7qoYZo7vM|kν,`Q
+䉿9T&ai/ XA4>v{ip0Դ|hE맴k4 JHH3o"<ښm6j\ߴe lu߸Ō'eN[(ifRM.9N
+c6u8ѣDV96 sgoΉ Vdi.:{NkDHTm<fjD2=i = VrmCf/Y7hcwkeNwb&: 6Gq&3cqEZ
+z|4,jb5@5ѡ_zUzl0k_Z~dDS3~
+gLgnu/xB{CF^}x*<J<^Az"p~э3h GݳsUM9|n6 Ɩd)˷vVcl,<r$^Z-͵@9!_ I9i<Q{)ceX=D+Pݣ!Zm3,25X/g;q#hfS[y׭(
+oaLOQ;\$DdS=dJ6"K?{?:;j / R8uh2s,S[kJ84N:JlқXiX6ɼ3M$+w0KR)%HQJ1Ț0SHbf+}-|`y'e=zQ,N*ڲ" WÔCnphseYp/tJdw{%N8Dd۞ڦrFnyݏ{pk EuH>*ରvR$&~Q
+0vk֡%Ag.gh;oe,n2>,TEHyl\ѯ3-31`i{2/sg5ˏ}Z{Yɽa"нŏQjWDZti|+%f:?i4hEz2*)OY5 `z(OJH7'ֳLA\ mNaPi0:g掂"n9鈗sEkaJAZ;-94E`H1PW.(mGkGH٩yfXIUe;[U".\=XpU
+< S:%+h1ȡ[<$:ӎ%Gb:VqO
+5®Enz{Z):o2LncVf5 }7E:X&x XxZ0|QwB$Pz0PLg zYr"d<bq7K AhtƜ&_9\)(Mi,+Ώ;B˕¥
+GRQLH4Xelֲ:=oK kgF] Ҷ{cry>{TӉtq I6葿펏gHK{hZ yl y;ư'"x sF`^\&Y9k6r>yZdQX3>pu3{nnu;D/m&fzLdU~ʷ~Tf5P i{N=r݈Y*pfөU憟lTKI፽m';
+`fqv'B)5,؆[8pv},EcO=B׀ᇆe՞e2xu{ﺲMsN1='2hmʐH&C9 ϡe:ޏz{Σ,PƊh<Y%J=B9_gm Ĺ۸{ >pN<U*n:>QpҡO͌Q!s͓tK!:wfxj>rgur(
+No]C,:u1]j+s`!y6+}i M-53Q[G^vtr-N{w*z#JGͣRe}JO(˛U|}nM!YYҊZvXm~s
+}X8H8y#a1WZx|=LMg\lc.Y}*?~~,d/?71/ :|߿_/0 |>S
+ /q@~iW; ZUmEpzc(Cq1w(1 1S
+4腅!°f8<hntʅ^_dKn^]6wz) %yl>qWvRei jm`
+t*ATm]ݶMNudu蹎(鴎`1U1]=9E
+ 0K̈y`D"^[7qV+r1➈{}
+F?V`9H
+e`.-`VU`9̔sr%f9\K:Hsk ]\Lmm)a- _YVj@ܪ"eP6S;J{I(Y&jZt[K '^̨~RI!{3lLg7wX°"^6ձ
+iL4>TtJeFYй;05& ~<gh
+ao4Gk}M9\~_FaAe mkjzm|zChsZ0h՞m 7`RȔA`;^'!N'՟)?
+^ 3D⧃cO7qDVE5eލ!!pz\ae%&*sT0ZFk,YT^OKAm.dÊ9 s[~Ila!21 ;]U`rݶNrxTrpKm$+4mXA޶[f,sL޵ipM;^K,94Vރ c'{kRcȧ]-J 7z |oCgSv> 󽦑ݘ$*{*C?C` 4.yނ΄R$kbNw{Ћ
+endstream
endobj
-809 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 117.643 124.503 128.099 136.189 ]/A << /S /GoTo /D (subsection.8.2) >> >>
+825 0 obj
+<< /Type /Page /Contents 826 0 R /Resources 824 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 787 0 R /Annots 829 0 R >>
endobj
-815 0 obj
-<< /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [ 107.768 67.03 471.982 78.716 ]
- /Subtype/Link/A<</Type/Action/S/URI/URI(https://tex.stackexchange.com/questions/528975/error-loading-tikz-in-ieeeaccess-class)>>
- >>
+829 0 obj
+[ 821 0 R 822 0 R 823 0 R ]
+endobj
+821 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 383.119 135.089 393.576 146.775 ]/A << /S /GoTo /D (subsection.8.3) >> >>
endobj
822 0 obj
-<< /D [ 820 0 R /XYZ 78.37 808.885 null ] >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 117.643 125.396 128.099 137.081 ]/A << /S /GoTo /D (subsection.8.2) >> >>
endobj
-301 0 obj
-<< /D [ 820 0 R /XYZ 79.37 591.94 null ] >>
+823 0 obj
+<< /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [ 107.768 67.923 471.982 79.609 ]
+ /Subtype/Link/A<</Type/Action/S/URI/URI(https://tex.stackexchange.com/questions/528975/error-loading-tikz-in-ieeeaccess-class)>>
+ >>
+endobj
+827 0 obj
+<< /D [ 825 0 R /XYZ 78.37 808.885 null ] >>
endobj
305 0 obj
-<< /D [ 820 0 R /XYZ 79.37 430.206 null ] >>
+<< /D [ 825 0 R /XYZ 79.37 450.769 null ] >>
endobj
-819 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F56 384 0 R /F58 386 0 R /F55 383 0 R /F69 402 0 R /F57 385 0 R /F45 390 0 R /F40 391 0 R /F59 393 0 R /F46 392 0 R /F71 415 0 R /F92 823 0 R >> /ProcSet [ /PDF /Text ] >>
+309 0 obj
+<< /D [ 825 0 R /XYZ 79.37 288.921 null ] >>
endobj
-825 0 obj
+824 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 385 0 R /F56 388 0 R /F58 390 0 R /F55 387 0 R /F68 406 0 R /F57 389 0 R /F49 394 0 R /F48 395 0 R /F59 397 0 R /F50 396 0 R /F70 419 0 R /F92 828 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+833 0 obj
<< /Type /Pattern /PatternType 1 /PaintType 2 /TilingType 1 /BBox [-0.99628 -0.99628 3.9851 3.9851] /XStep 2.98883 /YStep 2.98883 /Matrix [1.0 0.0 0.0 1.0 0.0 0.0] /Resources <</Pattern<<>>>> /Filter /FlateDecode /Length 45 >>
stream
x+T030U(2 8LXX) @`@
endstream
endobj
-826 0 obj
+834 0 obj
<< /Type /Pattern /PatternType 1 /PaintType 2 /TilingType 1 /BBox [-0.99628 -0.99628 3.9851 3.9851] /XStep 2.98883 /YStep 2.98883 /Matrix [1.0 0.0 0.0 1.0 0.0 0.0] /Resources <</Pattern<<>>>> /Filter /FlateDecode /Length 53 >>
stream
x+T030U(2 ,-,,r ,,Lt–fF
@@ -3549,2123 +3617,2072 @@ x+T030U(2 ,-,,r ,,Lt–fF
endstream
endobj
-827 0 obj
-<< /Type /XObject /Subtype /Form /FormType 1 /BBox [ 0 0 100 100 ] /Matrix [ 1 0 0 1 0 0 ] /Resources 828 0 R /Filter /FlateDecode /Length 15 >>
+835 0 obj
+<< /Type /XObject /Subtype /Form /FormType 1 /BBox [ 0 0 100 100 ] /Matrix [ 1 0 0 1 0 0 ] /Resources 836 0 R /Filter /FlateDecode /Length 15 >>
stream
xP(
endstream
endobj
-828 0 obj
+836 0 obj
<< /Shading << /Sh << /ShadingType 3 /ColorSpace /DeviceRGB /Domain [0.0 50.00064] /Coords [50.00064 50.00064 0.0 50.00064 50.00064 50.00064] /Function << /FunctionType 3 /Domain [0.0 50.00064] /Functions [ << /FunctionType 2 /Domain [0.0 50.00064] /C0 [1 1 1] /C1 [1 0.5 0.5] /N 1 >> << /FunctionType 2 /Domain [0.0 50.00064] /C0 [1 0.5 0.5] /C1 [1 0.5 0.5] /N 1 >> ] /Bounds [ 25.00032] /Encode [0 1 0 1] >> /Extend [true false] >> >> /ProcSet [ /PDF ] >>
endobj
-829 0 obj
+837 0 obj
<< /Type /Pattern /PatternType 1 /PaintType 2 /TilingType 1 /BBox [0.0 0.0 8.50403 8.50403] /XStep 8.50403 /YStep 8.50403 /Matrix [1.0 0.0 0.0 1.0 0.0 0.0] /Resources <</Pattern<<>>>> /Filter /FlateDecode /Length 79 >>
stream
x=0W Y".RRҿ^( U b1H<ܪY`2rir:"B,Yr߻qB
endstream
endobj
-830 0 obj
-<< /Type /XObject /Subtype /Form /FormType 1 /BBox [ 0 0 100 100 ] /Matrix [ 1 0 0 1 0 0 ] /Resources 831 0 R /Filter /FlateDecode /Length 15 >>
+838 0 obj
+<< /Type /XObject /Subtype /Form /FormType 1 /BBox [ 0 0 100 100 ] /Matrix [ 1 0 0 1 0 0 ] /Resources 839 0 R /Filter /FlateDecode /Length 15 >>
stream
xP(
endstream
endobj
-831 0 obj
+839 0 obj
<< /Shading << /Sh << /ShadingType 2 /ColorSpace /DeviceRGB /Domain [0.0 100.00128] /Coords [0 0.0 0 100.00128] /Function << /FunctionType 3 /Domain [0.0 100.00128] /Functions [ << /FunctionType 2 /Domain [0.0 100.00128] /C0 [1 1 1] /C1 [1 1 1] /N 1 >> << /FunctionType 2 /Domain [0.0 100.00128] /C0 [1 1 1] /C1 [0.75 0.75 1] /N 1 >> << /FunctionType 2 /Domain [0.0 100.00128] /C0 [0.75 0.75 1] /C1 [0.5 0.5 1] /N 1 >> << /FunctionType 2 /Domain [0.0 100.00128] /C0 [0.5 0.5 1] /C1 [0.5 0.5 1] /N 1 >> ] /Bounds [ 25.00032 50.00064 75.00096] /Encode [0 1 0 1 0 1 0 1] >> /Extend [false false] >> >> /ProcSet [ /PDF ] >>
endobj
-836 0 obj
-<< /Filter /FlateDecode /Length 4619 >>
-stream
-x]IWx x8'%r0|H&Dr,;~oݯgA޼l*~U&+>z\O [#,F3B5[>|^~T[J|E:)JRRn9>Kŝ5IJH)@Q;Hyvf-1z un8VM)Vny)aloH,6<PXFxz& *]!{{˱(&r\oM2KV=Uۋ'-bxGgF;IGu4}>k\
-+9T<0&DiEaN5.*v
-@(Qb7^uY[! b)RWuC72faOhf+֑?z
-8٣NھVYrE)ndL.ϭiHwqeb~iDeo\җ#_C5
-z;om1f5{##6A%28A_݇z՗[|^9U-,ɉH141}U u + 1ڗXmis
- V'BޑQStߦ:- ,X0
-`^wSTnn NuL.e]җor}Iağ|~yu3e69+ԧKy/meK3E^ܐ~ig}-U5M%yl_h_&ϗqz2b? j9 ј j.O1U,2 ؗquse^ώQ5[DW10Դ?\Sf
-.uDSH}t$
-~)8?Ug'Dknp eJT1omW}
-b*.F@x!/JoZ1RnPM{ F۷o*bT%c
-
-NK~X2;%wi|d:"d*n8'UU^`&QT]­@*&i;L!83G
-HI.eLۿ41j8慢tt?E?1C|Ϗ<mrs,hG!GVO/e;%†@#K^rю20wWbѺW܅I':sXG%~:(UDx9/d9ikN;CރhԧGXrj9IlmJ:ٖ,7@آ
+844 0 obj
+<< /Filter /FlateDecode /Length 4231 >>
+stream
+x\Yo7~ׯ?04D(@Ɉ}"1V6,UiI?X3lX,~Mׅ.(ws݃ҋ#Ns-0DGYfj||Z~KpJ~ Qi)W 7ϵAp`?XدЗ~ /C*~Os*20_R>H
+CzQ o"f\hόKǜ׻6D<Ӽ; co$<| rahϵVG8W繓L|,)QG(-$jޅQ* %Rq$,w7{JJ 0ւrhe>Ev?e%շYgDj #5l1~ޔ 2C>=ofWE0
+~ w'1/kg\56qfJ;NhUC`ӳe+{ )3hjg( xE%*=kʀCo|Fw6(cG#7Rak0^ď+b]2 -߽
+G.mBGW$=(TnCeP|}rfJJTsP ?Lw%zH9qYF*jhy9` XOI*$ReT 5ەf)xfb(Gz|I-oL9~.g|r=AȮ _,Jciu
+WpǏN@+ w㬝$87hcèdrLvEV O>63[ 򲾜cF_ Nkrqtf` jQA4u=uo0%K&0~3wfGR٬ >tO[/ R;;$p6H{u[7G|SJH;,-/9by;zha{|[0{}K
+eck#!k t%@.'Q6|*(ڼ eDCdEHp\صn&9B)i2s`% dw%Ey.Ƿ%M|DL4=mN[&RUFˏrM
+fo-w-g Un`+6*Qb74Ȳq-df/p%`ֵ#_{e@ˢGY
+)wPq/P#j>;4XZkWi
+*' l;
+XMԊAk66o.*hY5I.ME)q_
+?2 Q\R U[yq&^p]mĩI3*`{QIki~*蠊܃fyƦu8,2) K4/jňP<@ʶPzAgx@ GRӿB8J{dί#`jzPnxYОY_GA mY"0mQA x Ľ^+k#L.>VR] 쬨2"Fo .ڢfyޏ4!OãVg0WNkTӟIRƫ RAxL #cFdRvcq~Us v;bR[%q"NR^WO}!6E~oAh=pnDˏ`O0A 5_q_ۏ]`B/O7_eQ˟FqtBa/Db?>l\PךpjhvSl]5nsƈ[J+ɧUkxR_C)8'@ዣb1} .e⬐QRf0@A,S(PkCR+VXX6=%~?V|X&RFBhDfvUXRifsSU:#e?U܀$ſ9_&2 w
+?*"IG*eEj&u/(U"2N~axijW ueB$SmZ܂bV=r-V3DT޻<8GitfLDQ[a̯Ye^ >k鳯53e%73{e}B+9.d^%%5vuYWHev>S}R<cڶD77D1v\ǡN|+ƽ[^ɁG@"J^tJOIH\$\P pͱ_/Yk
+۰d| <:&pV%nVqRNeV.zZ'H; WHa"1{,xOI UhǗғi  eN8HE8Ho[P9uN6RuKK)pD7_jl.);deS;8yi$j h 
+Wp>j[]_::/uOPO|dR3lyCPxeT7ͤp
+"ʭXi(Ы9^,n%JVڥiF~3 U#/s1ɰpRߟ7ΧU:4^v%IBS<2]AjnI{]\㒈|պS͝&}s>&
endstream
endobj
-835 0 obj
-<< /Type /Page /Contents 836 0 R /Resources 834 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 786 0 R /Annots 838 0 R >>
+843 0 obj
+<< /Type /Page /Contents 844 0 R /Resources 842 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 787 0 R /Annots 846 0 R >>
endobj
-838 0 obj
-[ 817 0 R 818 0 R 832 0 R 833 0 R ]
+846 0 obj
+[ 830 0 R 831 0 R 832 0 R 840 0 R 841 0 R ]
endobj
-817 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 118.533 721.708 141.009 733.664 ]/A << /S /GoTo /D (subsubsection.5.3.5) >> >>
+830 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 245.069 599.012 257.024 610.967 ]/A << /S /GoTo /D (subsubsection.5.3.3) >> >>
endobj
-818 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 156.73 721.708 168.685 733.664 ]/A << /S /GoTo /D (subsubsection.5.3.5) >> >>
+831 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 142.772 539.729 165.248 551.684 ]/A << /S /GoTo /D (subsubsection.5.3.5) >> >>
endobj
832 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 442.409 91.586 448.634 103.271 ]/A << /S /GoTo /D (section.5) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 180.969 539.729 192.924 551.684 ]/A << /S /GoTo /D (subsubsection.5.3.5) >> >>
endobj
-833 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 459.337 91.586 465.562 103.271 ]/A << /S /GoTo /D (section.5) >> >>
+840 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 442.409 67.03 448.634 78.65 ]/A << /S /GoTo /D (section.5) >> >>
endobj
-837 0 obj
-<< /D [ 835 0 R /XYZ 78.37 808.885 null ] >>
+841 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 459.337 67.03 469.794 78.65 ]/A << /S /GoTo /D (section.5) >> >>
endobj
-309 0 obj
-<< /D [ 835 0 R /XYZ 79.37 670.884 null ] >>
+845 0 obj
+<< /D [ 843 0 R /XYZ 78.37 808.885 null ] >>
endobj
313 0 obj
-<< /D [ 835 0 R /XYZ 79.37 631.598 null ] >>
+<< /D [ 843 0 R /XYZ 79.37 489.504 null ] >>
endobj
-834 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F55 383 0 R /F56 384 0 R /F69 402 0 R /F58 386 0 R /F50 374 0 R /F45 390 0 R /F40 391 0 R /F46 392 0 R /F67 389 0 R /F59 393 0 R >> /XObject << /Fm1 827 0 R /Fm2 830 0 R >> /ProcSet [ /PDF /Text ] >>
-endobj
-843 0 obj
-<< /Filter /FlateDecode /Length 3013 >>
-stream
-xڵ[͎ S ,=-pb:}(T]*"?%qy˻;9|_>ܽzvqQJDk_>|SF.jQ_SB:| Rw]StJYH=x- ~\gn'} IlHIzVv":Dz#U$@f) Q
-jz#Jb,V&{gYɪ`VM I,<) "AmQӐ7U'?'l> gF7Ӧt!Wfbv+)QR厔[S{ᡙ[z+FxobWA?aȇ 6«=yRx0mp8!Ce\LNRF5$v^flU߲ۦ-sjdӄs:C-(WmLȗ$$ilaIR</Gm2lv3UrjRf"`f> 0lRfpd
-M>M#dCwRZ kGrRxg!l ]nפČð,oas v>uF8eǾC|F4<)}!s0Hgo~fB+twN ΈElG,RoѐgNBAgOʼR(|Gp,[M72Ţ}Y +
-@$ƾGpacǻCi'|4GPnjc7'}m"xb0A~ .a7ؒ]<=jl/ÀP]Lj+k^PvW<6m8L6p
-+.MqMD7Ce
-+l26bRORxaҴǩGޢhr^ْ1ULKɼmGI#M#a[uK([)s
-H5E 7Pu AOȄI =3wE/w ClS(69\70fa`1iFY!饔SfݔNAnB^ӕ}GAA9=@€)+'SŌdkENՌ3{ x܃ 0G^|~qf½* cO=)K zoھ? Ns#6w:֠Bt:3uG~_E: pNm#Qǽ/1}iw <|CodPRh22%g\<UBj
-FYg4|Wj(]ҚsUn 行_m 23gɚ:=re$BH%WBu7֮Mx6kfE۩P2.xR ?\toSd$·%Jr]zv\wY_`@ĭ-]j-{jrDHRj."mlgpؒS/fAkJhh@pO=L_IlЮ>)x"(kEh0X 6#\~7 ^^lM
-MAY/E}&>~/-UYy[r&O4Z=L)%`+ `Tʑ Vftr䄑x3vWè |o2a<
-endstream
+317 0 obj
+<< /D [ 843 0 R /XYZ 79.37 450.218 null ] >>
endobj
842 0 obj
-<< /Type /Page /Contents 843 0 R /Resources 841 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 786 0 R /Annots 845 0 R >>
-endobj
-845 0 obj
-[ 839 0 R 840 0 R ]
-endobj
-839 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 111.629 188.779 123.584 199.339 ]/A << /S /GoTo /D (section.13) >> >>
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 388 0 R /F15 385 0 R /F55 387 0 R /F57 389 0 R /F68 406 0 R /F58 390 0 R /F54 378 0 R /F49 394 0 R /F48 395 0 R /F50 396 0 R /F66 393 0 R /F59 397 0 R >> /XObject << /Fm1 835 0 R /Fm2 838 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-840 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 136.536 188.779 148.491 199.339 ]/A << /S /GoTo /D (section.13) >> >>
+851 0 obj
+<< /Filter /FlateDecode /Length 3259 >>
+stream
+xڵ]oݿb$0qk}M
+49\sKJFulvGCR$EJHKa/?IE㧻>}S$5(SB:5|6z/%h)5QJ ~߻ z˜|!1R=Gn;) PxyxаDK{lI43.y,7L4<7,%9,~guYG`v"7r{
+oIA+TĿ!9Gd|0͗4,qڠ`k˯~xc
+OcsStK C6
+
+
+TsG0XGBE=96j@ |){x}`eb<d>\xHځy\V`Poâ\md2|}S] V#ɼHI<tq4BEemW'Fk-bc.0"pmN77<p: HW7z9@0[- 0WzgF=:S,se4b,y$T:uҵ{#F6-i{4鸥xe(iȹr)6Mt2?-raX!õf+tL/z;u҈tZgEwR CwjMXLGgf1UԢÞҾ7עDs3ͻubpd%_`Pƽ]N0Ms 楢tyciyC8[P+/ogȤ{1~m&o;e֣s緟4ӐM;bO7uʃN]G^-Rt_2/?B2޳nib#QCH
+endstream
endobj
-844 0 obj
-<< /D [ 842 0 R /XYZ 78.37 808.885 null ] >>
+850 0 obj
+<< /Type /Page /Contents 851 0 R /Resources 849 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 787 0 R >>
endobj
-317 0 obj
-<< /D [ 842 0 R /XYZ 79.37 771.024 null ] >>
+852 0 obj
+<< /D [ 850 0 R /XYZ 78.37 808.885 null ] >>
endobj
321 0 obj
-<< /D [ 842 0 R /XYZ 79.37 238.154 null ] >>
-endobj
-841 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F69 402 0 R /F15 381 0 R /F56 384 0 R /F55 383 0 R /F66 388 0 R /F58 386 0 R /F45 390 0 R /F40 391 0 R >> /ProcSet [ /PDF /Text ] >>
-endobj
-848 0 obj
-<< /Filter /FlateDecode /Length 3034 >>
-stream
-xڽ[K$ ϯcrhY0`Ƴm9 7'!
-ƭ|rs9Ws.9<1?x?2u`V>JB?' 2-=#5=xxLใOq\Μ8./ZVauN ~gB"a^^Jȵ%:1aDۿ+3B9wY-eB/j3Q(v#~/ kd7^~63
-H(YUbÊE9g2HPi2k>Pt0u4E RIqS[BemuֿѫDSh
-Pdܢ\7Jۓ;iAl|&~o cw>56*bq lTpFՐid>ş2Sg=|e.X*[K4(G=(, \ږcW([QH
-
-jma>QLL9'e{&'$p;1&qw%)Q`֖?F2cKhҤhaPܯI40M"x(#QSsqI{~:=6 EYODbM,Q0gC/}k''<'>u]&۔fzh
-ܺd&?Y;@Br`"eZ@ orgS݁m$ [u; 䳄i-S™h@'X=Ԭ(
-Ff%`K0wnNa
-P;1Ѱ=XG_vAfEyzkd! 7fEC"~x
-D,ula<v9}ȭK%&jF٥{O!_K
-{OKʯ |Tn$jށgzPU|u E~.!
-EGߎ:D~<쩾Cא;<!lK[g_Aa }l_jRgq?G
-endstream
-endobj
-847 0 obj
-<< /Type /Page /Contents 848 0 R /Resources 846 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 786 0 R >>
+<< /D [ 850 0 R /XYZ 79.37 592.847 null ] >>
endobj
849 0 obj
-<< /D [ 847 0 R /XYZ 78.37 808.885 null ] >>
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 388 0 R /F15 385 0 R /F68 406 0 R /F55 387 0 R /F65 392 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-850 0 obj
-<< /D [ 847 0 R /XYZ 195.137 237.821 null ] >>
+855 0 obj
+<< /Filter /FlateDecode /Length 3683 >>
+stream
+xڽ\;$WthC
+@
+NgGMsߚae:vߩ +HOV^IF) <(ؗr՘*+էVMw}"҃(IόUU
+
+W*pg2 ]Ln FH][[)̄qjw$;ewԏ|j^n-öAAJWƦ
+*&GAfx -^vyJ3C  ur{tl똑ӡ UuòeNKdy"wj1&9f@xBVg hfy6c@* 5 6I*&x͔qQz])v, 1l7,N\H^*뢵_z4'"`,JR1>DqdEwl
+y:784qm#G^W8O!uAoCl
+Q4La<ʦEIučh} 9A)7#"?gs&X&L.Vn٪T$v'/0Ҏ$ն7$xOp"Od*YLH 1Fh]a?Ky.m+ gB
+ S7X8N:DJUCaLYnA A
+leSInD8-5o$&%g=\4B2Xvggvde0﷦kImҩni%~6V3k^y* O#USb,Zboe֦r۟}6%]Ҭ\x]b3Z@Czd{\oT*Lѡ۵XKX&`zN%Xa;FGQ8cbv{n6[ZҘ8GGJXlƓ
+i%}/'EKr\lS
+Q)Ibb)˙%P΃pDMqZ֔6n$+q6>VsҀ>JBG {kgr yFDs R4*$ oS?T r\̌GP'(hU𽶠:*f-
+}$<h]MQ
+ 62(}$_mΠZGu7;4
+3tq<<}M1<j8dsk.bb2)|RDZ~F:YJF |PW?o$6tPZBW[ł, Z(|{@UI6+$Y=D&zŬhİ 'AHqϮ/_g+:ўQW_?|g퓚|#_?\2_Zl=ocoV}ldT
+@]!mTdaؽ]H6-Nw07~\mJҵYSY惟&b89$9G[-T+7RHקؿ`!p)!):/+[Stems_!N 'Lr 澗c:9cUQǾycP&]z^jמ27˜zP: Ϭk>emhQ
+<>EXשS X;fE%#Op*p0AE(
+
+endstream
endobj
-851 0 obj
-<< /D [ 847 0 R /XYZ 195.137 227.649 null ] >>
+854 0 obj
+<< /Type /Page /Contents 855 0 R /Resources 853 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 787 0 R /Annots 861 0 R >>
endobj
-846 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 384 0 R /F15 381 0 R /F55 383 0 R /F66 388 0 R /F52 376 0 R >> /ProcSet [ /PDF /Text ] >>
+861 0 obj
+[ 847 0 R 848 0 R ]
endobj
-854 0 obj
-<< /Filter /FlateDecode /Length 19637 >>
-stream
-xM,%_qE$ $F/SO@a6䮻PbTI3##QwW!3?F;A'oo۟͹{Kɕ_[iPJv+_p]_WJn?_U:B']Wn@DPm$HHyM]zk}{rU<o|=1BPŢ᳷滠Oh/i`aĚc e/~;9?&4(K?OC{bL$/U8x s0ey؊hGFon5gepp?oJw+]9? 6Ssm??m.緥}Y 5GIc{cn. uzowK]?7CS >zQ jX$-iwI̠M6ww͙qcЇ4?ޒ%jT]]OC>4e͏.@'8wKo9~=>j^H\6tMޏ9{ ?ԷG2s_1EudwvTa+uo!|fU)f뽕էs+J4b*&JGgV sʗ S+ӧ͢ʕOuѐt}C_g튍?r}֮X)!l+§Vt놽] )8z}mo??rjzo?y=S*y^*+/XSndsjݽvNsnG4.S'F#B @s W-4(怚X9Jk_-D/&FhGzq/;E@n }({˽ƾ^M#=e\i^HO;j?s~I3sًv><9rS/41\7h4pKh+?QHl
-!}6l_h
-W?Q°үK[H_y׌:z_u\㟍:̑K~4 hC){Ku5
-$%%{<PS™dϳ3i,vxI2IQ}:<A tSqN}b_Pgz'W:u(@Qܫ~8t<Q|
-L5Ũt E䗣d з`PTcJCAc 17j
-deC 
-dUCVD~C}{r-8U$.e€CtkҥA4:XՑLwLLpsRۖb@p9hWJn{~ѩ@qh8#XtGSnђ6( ]YqF
-ɴLWra})h^Lg"T )+xF~JD^iD+8+mJ-D;By. {b+f23<"?z( /5pC/lGBMK'dUZ+ta[4FF4a+1QM#4]
-!39 N87:Uʭίئ2]
-,JĆMJ~Ɉ/B?`Xh3SǪ Ԯϥʳ6~uYT
-vGsғUMeX XߞW3xl MW@By~Xl>"
-ғgDÎWYT
-MEE|񃑊+ۤZPJ=ܔOs^8BbDhB<OYHݴ֚sP`3Mq
-BUzu-oݛ}ӂ#ȵjIX$Ŕ]z!SK[h-=|kI-FԹ\0eHoym;P؎UE
-jFhC3"oN.򥛗:?@ϑiaè5R*6
-_ߐƙ@ &φ.S H(U+%
-4w4sJw\a(ez ݳ`nߕ_!pO "9U^PO#B2;~ |
-QLAsUF+mlp+ >H}׉06 _m5ӴebAC"WxqZ0zL!<W%|" N8/Mbյ8Jє
-%p>.W8yPjoHI#s}%nyLva"W *ЄKDoka~
-ka D1u*\嬒60|"ĩ\84Ek
->[<gL58<\G*Oa%wU6=~^z闹2gFXiq& r
->[<vѪ8
-@?5**3ݑ@[,|\-<}^[=罞yEw\АcW:V(}wW ;h % :TT"e:
-3:UZ!BҗP#-/'~z7иzttHxW***\-y-S3jaNU5Y}1rwb1ƻ n ("RXPo"^Qe >Kp;Uԅ%΢
-4 \+
-aۃi Pxyyb[ҽ_""ÿFj/g(V}\2=2!Å@כ%_@4Kj0y^L!PkWe@ʄBL<M0 yFH;U761z}::0&TAQz^UR;//^(J럤*M
-&rYИ u^;ыt748)^x흍[f";bi4%<s<h^}9FY Fzg8chh-Nw^(v(t
-h_浳#);z=%姈S//w{~ZITtKi"l24kG^Q[dkNNgnHE('ѢXn~gHm4.(i"g0\sJEHY xkT84ԸUҥ
-9~6\%ș/߁*yYA?Ɛ u^(ހocR@G dG o3z-[k}E/o$dB [b G]Sh8 <DШGq--ASE)2M)&>`ʸWB#XR lJuR6B>c!Rvƻ`Ě΀ Q bUrk+Ax)gkM-bM)m!$- < f AF{GD*"xP L{y|oJ,xkلB Zdl8e "ց69V%G{-D!^. Q"%㋣d1 txXʉw[ Bpjyq\D<6Z `q
-Q "2҉״‚[rX-AS@Js[ B(T Vz7u(Jk
-AxK<vY TT#ĪUk(}[j-#D,PXQ恄 ߶"?I{HW]OĔ"dG{1ȦDߖP jOa1@ M
-W* @8L@ @z~X
-lEJR*&mM1ĮТ{*xtXS(؏Mk%Է3JR_|nXS@S)
-9[`x?V3FRMЖ~lU8
-@@X&/͂
-11h6:H~U2~𫐋[>[=ƽ/U\]e?Di Ȃ?v`Y9ݬ
-@p&l{{UA
-" ?#\CPAP|*Pu
-._BB 71N2P#޽
-!U8KP
-\>M2O#L[ab.;Ӫ"꒝ L1ȦHwj
-?(Gu4R!T},3iK>LR_w wkI^Py!XVRñ2RgfT_{Rq(@+ibn&p)~o8o#
-]FJ,րc0&*[oB64A@[ȔP(h]I ai!eWO,̖lÐ.PZ`+B磕қwg0SbL1\%=5؋Cvuh&آl[np>_kW-bmf܋@6VF LõEEz-C H]{ljBiLJ.4{Lm1ú
-S/C 4U$
-XG%F,npxq$Ua?Tc,VQ.bH4c] 1]A[`T(4řTspsYXoZcd3$[zkE~<V
-GpFc>,HYU?ޜx}P,U- pJAUk6).6+cA6KhvAyH4xCێeSx19*4UP۰ť?#vΛP*VU_s|вWn\3%#
-n+x֡
->*hc4^Y .{qOЫ$򋐑hb[񊵝)Ⱥ@iV̇
-x m+h+Q飕z'><(!jgS=VZ6l,|
- hw
-+X2EШ"ɢ,XQb4<j>JqI\0,hAKeA5-Rџ4r&
-?UPw=WY ct ~'
-Aɋ1,ȶ0ql^q/[~3/h
-^1A!]-o%ym7hda
-e*7~u7]C[FJ-L556Hmr(7MƆ˻`Pq:Fzo?\o7.cHo,詨=;)+hJq,{h]t ZEc߶{U{zhli` u4<AOF
-L[>l@V5\+BïUÔxwх~TCYqptg<|O:oY"Ȫ+hSHqȤlb*d1ڤ;ݵyM"Gi"UT1¨يW..WxYm~4]FY]pFtg05mr8N=m8jV_+G8v5&˯@V4&!C!8_wq(Y@KʨgjԋIh\tP
-CBFcaL3]'B<l`>P>V:dʣ+j[j"]tD+V
-YyPtg<Rb@s:a2*dYCh5Zd]D# i t|unC~@r{[!pnA(Q
-dAC nҝ<`kԷuf218PcV6DU"+(d1ä;bݕy=_ ~#5L`eF+Z%Zxsi_0uPʂ֤;#=ty(^KrIoWW bQ3 X
-r\rR!#1O#]VuKn{lMnΟsBFe/_# dyM-U4uKD.W=P7|y2b*dQ!4Zmxf oO_:haL3CBpϱ@qSQto:bVe"_MV~P7ͭB02<#?z" RJ}®y+M&&BBgxSOxfU`Jhb>ez,NK '  mŒtɪj.w+oIt:tbS H)~Lw'taiC~*
-Rlx}bĢZzxl MW@AXU WO8w2_AmSS`û+MCc1{g;ŬXTRb=S%F0&\ׂRSP@) 6obqI }z@P`bl>Uz"\Wj'y4C.,m*)޷?C$ |ٛJ-BSəAXU>'z⒴J{Y)/7Y$kjfTl
-MW4L8 BIY.?TַB4Mi+M$zG
-}?o/{.y.  S*y_s ^{:.n@“.AtϺktGÝ!ۙ& Pƌa I ly3ۈVz6OM7c.jGL,c;>௞ 8/G7/`śR΋ԧٌNi}"^ xnwHٖ4~,?&{z9Xw_`5q?/{c"=O߬ ß/Y>5/~]gU/ſ[gM~ߟ'+_o/{
-a3avZ,n<̾ ?o:̾ ?0R:pn0?,ɯ SOw6oG%47
-]c5>$|pKRſy v|$z\"W=n[TԴ}ia{ӮOwR2mӞϲu5;=8y'5 ^Ԧ^ _߬'—i
-Wޤc&'c:
-_,^c&c&cmڋc&c:61qO{}L/|Зۼ7p[!ӥjb8_L ᭔wb1W_*_}qiߢwz1iR ;_vYW"~tk6|gm\G'I
-]'WaJr^?IIyㅄ\. KJ ]4v=IFxmgy2wAxk˗h>AUp-7\z/pxkXיj/pzl/p g& |^>1_Bh,8 n)~dȦskol[/r+org7q]j絷u~Hh7tcnq2%s<}z^.ݸskWy// \5NtY>V4!iYC8R
-Bw9 7H4Bw^h,6.nDGgLTGR
-4 nl;s/׼`}x
-dY\}´KgaLC=CGM7/tO:X}QĺFirR񎎮#1D$T{ cog B ( >"F+B;A-08pԟ F 4 =~<Bcwt flA"Lb.ĩƻɰ3|*jdA-]'*.r:PqLEߛq1
-dYhPќNs|vW +jBw{B#|!A6o׌Asb( AY2 çl_AzZ
-~}ݙ,<7Ζ-Cm";]{Ok- ?%.wo?@ KB'.
-h6D.AK#/V?N 2O=CGn~C`ec+\z`@'L`xC1x'qkJBT#2V/=]A{THgSL
- VJO-H}[Xۏ&I$;=%^G+T}KF u\776ǻ~oD./A4;\k:,>{Q-; Fc)cGjPmߋ O-RϘ< p
-t
-IDlxԎ]PR]Me )cU<˻p҃eD|#y3D/lTFEn]Pr\MJ W4 @V+=CpoAlE_ X%Iqӟ1 `H܎kX73%yVq; 4a;CΕ
->~8w>\/aU
-Y}RFFs+э ?ͤ+]Wu.U ,1a<#߅z&I=Bğ#4YLS'ɴ4ŦDb3"zhiYbx}D ׇ#$W#mhڔKR}p܏]?```k8_]~-vziH`blh
-4u#4kgltm}4x4o٭&@vԏ=h@i,I.:x4qm?dں3\ >֞f>KM2Ou(t8[E*:@
-
-px\
-/ 0Ґ؏3ʫFݑP)$祊^l3~z}v4niLµ)
-lN[NItMiЩr لf`@fB=Y@3<~d//sY./hG*%T Qs&Wbˣ@&CJ؎@T*0s= [~K oQW2*ԱAL: @ëhi:Wɗ"G/\~¤Ʉ%d{{^k5o@'hjkkWknInaO\ +Ş+W1:Ȥ`1,#=5*h
-x#]HZ߸K>y*NL @ïvoc9@+2\cLkM5a<B^&_o\ޟDB'd3e(9bd54Rym/@[5$7C^AWF#if4}TtXwm3fq]-:d` +OSrGxh2aR @óɋ8} ~9
-A`03F,-x$~&ؘά&m_E~;P^،wL +Bc>dT&=8)*RoOCy2[RT:L J'yzdYF+,%#AvܙLJp
-ke1lƻjwiK ,*x46͘IXe#aDk̚;Σ;=tt57SUsAF0i6LtQap3L!J<"W59/c\ 5vb/}${z5cɍ,pGel
-4֊T3i&^أ2c!_-ٜ|ʛ)e-o`ͅRSf54L5 <bׇU U" 4̉B*5dzgLyӢli1PܛTj5&e=W %Lctw[i ;%4tEmpi&c8P"n$I5`捍Ucd}
-4tkľ 2aE˕S7%J~7%͔DLol5~C;)#G򬋼K.B<2ot;V7Mݸ7gR9MP"rpg~ Wm\fRm>ȸF+ Xf%G=oW7C<!`x͋QphZ'ჸE(൙84Z6+a]aǯ<@&|Jea(.Lȍ5tC .+죫2 J5`ɠ>
-RK8͘R R|#Re9.`3Ũq/רj#8 v*!@?X*=GEx-zMQ
-OsJ8Syi(m u͢%) Jx 2rxOa7gp;2V[5Ƽ-nkXmi{UC AjO)L]6X]Mr
-uF6K@XM0As
-Xw5-p>֮@B.V k1m
-@>W&l×./\)/e[ a 8
-߷oܻ2DJ fߓߏjݖf)5:~LF+|(ϯ~c[A }?>O6L4(d(RxIXc"U?}OǯXxm[I{*<~uM׸Yo};>3xso1= _\koO^~Ckާvm !>3 BÈ6GE#<먷ߛMa}0'z-%”E4ǚ?NyGWnJy
-ez?Y?lܟC6>icmZѶUG 0_b(pwKyu1j˯Ŀ̳_5s;Ƶ<oOh:ȼ 1"moIc{tͣC -^r˗*CB })`x^~i+CG}Zvlxί[Wx$w{ ww@tGջc;,\iNR5sc/?@ϖf
-endstream
+847 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 111.629 725.634 123.584 736.304 ]/A << /S /GoTo /D (section.13) >> >>
endobj
-853 0 obj
-<< /Type /Page /Contents 854 0 R /Resources 852 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 786 0 R >>
+848 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 136.536 725.634 148.491 736.304 ]/A << /S /GoTo /D (section.13) >> >>
endobj
-855 0 obj
-<< /D [ 853 0 R /XYZ 78.37 808.885 null ] >>
+856 0 obj
+<< /D [ 854 0 R /XYZ 78.37 808.885 null ] >>
endobj
325 0 obj
-<< /D [ 853 0 R /XYZ 79.37 771.024 null ] >>
-endobj
-329 0 obj
-<< /D [ 853 0 R /XYZ 79.37 178.379 null ] >>
+<< /D [ 854 0 R /XYZ 79.37 771.024 null ] >>
endobj
-852 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F69 402 0 R /F15 381 0 R /F56 384 0 R /F29 375 0 R /F23 379 0 R /F51 380 0 R /F52 376 0 R /F20 382 0 R /F41 377 0 R /F53 645 0 R /F42 378 0 R /F50 374 0 R >> /ProcSet [ /PDF /Text ] >>
+857 0 obj
+<< /D [ 854 0 R /XYZ 226.44 238.125 null ] >>
endobj
858 0 obj
-<< /Filter /FlateDecode /Length 5519 >>
-stream
-xˎ>_!D
-4VKC)8~PMLC[VˌaB`񸎡X{ޱ.`= gXpn}j5d: nCBzWmab[J3vŕ ~I;j\1?~1 i&;LϟLbpFoL>NN4{8
-`?͖ì0"n$_c ;#G7ߵs2p^5cobni6LND'<2Caq=C׆4cg+CDR5JBxZa7t"2?7R.L'p}>etnVv9
-0\0kܪF]C ׈kϸPY\c+ v;@V<iQC;YK6^
-&{Ŝoؕ
-vE663:a_ɯ fg۷uv[5Xl,kPFZT\׌NWƵ>0NNizpfS}ms5Åk`u[3uxl~l^7Ly{3ȯ
-̙ J脽_{UǸJS( V (gP lF'+a?DZpU
-đw*'7hyCՉedYp
-ʉ $>"c;"[-mnԛ
-NPGIy>T7 Vf'cE- 
-t?"8YqR'e^SZ$ )`m2ь9>MENDEn":W3©QTaZP^t%AL(+ $:Eg0~KsSPV.I%sR{nTDITodWF©eWTpג3^~0ieO;L;|U
-K`K|NCH
-)-P⸭h9PM,
-%f㓰F,YDC&Z/*7iàD { "1a$ " BXWPR_\`B*)p"/`d2yPp=gճ bNxayT[\~ab\12*jZ q[aϙoU1 w-
-Jq*)vB#@$8@$KvKI ꋀo&'XXH\$zr
-MT
-R5&q#OTfh pόlTY>!Ә!%F(!
-5fX̔
- /0It+@Iݬ\El"vfǴL0Ʋ+PøSi9؀]IZ)H0My!P[q_z dgPs$ {N-j5X^}`ܸ6-ՖEՇ6pT7.%)H0+XC1S2[&X&5+jk%q\2n|,],pAU\Ϻhs
-W(o0 ,j+2VՄxذ,<SW(L9|F5LB8gEm$Z%0z|>7y܀m"8kT6DQ&$ ՀuZ[*Xa$<`(2Mnb +(ZIZY9gO|@m`{ua5O
-,j
-%[ #љBѡ# *
-/Ll0 ao4eJ酏_a.GO_aA^VWRe|,sBont݊]wdݪЛ=A.a8"\¢"ivb(?¢j=Ұ g
-<ueע4;1zfѓΌ O)a3?[VE,B1KXu+2uɺU/b8*UJ}bQى1DivfeRƖSؕ)?E4ۏ2gN07Wea.ˤllZ`Gw3Tߦ{ {Ůpĉ':e|I-vO~7Gpl'Ol!! #_۾x2qv(5@
-:YT꩕Z1[g6疎薙8
-i.8}ؕrqEJ=Z Xpǰ@oyʯ݄x
->x)}5-l!+M6 4<5D[gXkm23EpzjSM',h{NjJS&* R/M c*{xԉZ="N1.ńv6h)sgvrwXSEL!cK7{jl0t5;mKo[ڳCҙzoU:KmHKh7q9Õk8X=m9ǻ)h٭[WB4* -^V;
-f;6x'EGQLj"-l:6_ϨﱟN*Ni'f vV fbK^7oeOV}av3.Pv@Ft@})}J;=è{_IQ3&4jXc6#_hKδcSþL;
--.ϭcL5-?K4ċa~'xok
-F4'
-endstream
-endobj
-857 0 obj
-<< /Type /Page /Contents 858 0 R /Resources 856 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 860 0 R >>
+<< /D [ 854 0 R /XYZ 232.109 226.17 null ] >>
endobj
859 0 obj
-<< /D [ 857 0 R /XYZ 78.37 808.885 null ] >>
+<< /D [ 854 0 R /XYZ 195.137 193.367 null ] >>
endobj
-856 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F50 374 0 R /F29 375 0 R /F20 382 0 R /F26 404 0 R /F23 379 0 R /F53 645 0 R /F15 381 0 R /F56 384 0 R /F58 386 0 R /F51 380 0 R /F57 385 0 R /F45 390 0 R /F40 391 0 R /F46 392 0 R >> /ProcSet [ /PDF /Text ] >>
+860 0 obj
+<< /D [ 854 0 R /XYZ 195.137 183.195 null ] >>
endobj
-863 0 obj
-<< /Filter /FlateDecode /Length 4166 >>
-stream
-x]Kϯ1> pNɉ$
-MHD0_rbR/(?
-0pLE>1 s6 xZ k&)`
-:tQǟw=bx@(
-ў`!HW!0[ ONr]Vvh)UoMw^,L;9As4IJ
-?::4N)S6҆ZjLHI& e4Ӛzc\ |2Dzg&_ Ŧ
-q*OV@0(0[(@ \/h˯ 3JEt
-Ч$1x玴41voiu'J1o<10-6'41v玴4`)`@:ҒI
-Zq"{Z`7y+NEVɤTqd4z  ګ QG xf;ed%6-_B4VI՟0Fx WtPj?3`s9;7WED]i̍L%4ќ\t3aVF3cBjO9~W`*}3D!WsηqYXf&KpZs ZuM.hl{g<tﺖ{[ &zMNBӆ+8ٓN_p8 =o*˷2sLR1,Nxfe[JܚEC]C{Ҏ\)Fs|~ARK_ _YɰV8n.}.Q[J*tpɮG.<RRqL#͒}*2mNbI19RIzpIՋN-eԵ]J"w-Zf.2ìeҫ}ˆF%i ,LέcRJYN>%*eS*6!{MgIg.p܎ j6Y4c*W(UUNȼB< 7jlZ]91DYhlJ%f 8s))5->eD\q gkZYdknMN>5N<֪k*Ъ4l^u-FZgc{7k fao&X`Opu2vU>GOfgb"!hӗ>uwN\,#G<юþO<j[75 lkwC]xwm]o_K[Tamxb佬W|s 6\JX\!mB<\EUx@W!0.UHw#kV y
-6QZAtҴ4fe}!_ w3Ͷ44ND9/pԙ'*`@4)x`Qij3 M|43 M~n7lLC^~io441wD;L^iy3SK5MA3M}LCsM2 s|fu&+o?<`DT0c.gHO$ _7M~L8$NO4`¡)`@KO)= &F&>&B4҆&>I;HSg;zn9_ W4p{9Wng AL3i Iv$ٗS4H/N0kƠ?O]HcBsE'~b9*[9'i#e,;Ux*w\zfkRmj^
-4G+O*N^EeQ0 ndq.PkX\TL.
-T=zBە[iam%=wg(͸> aFYV/ FfJKkf@[*&sJlӔOXDW@au@[҉:[)S@:+/OR^
-d?I/PT q;ӭ,ϧ_̪ `꾕ZNXg0ρ"
-:b%XQ; +L,_I0(M-o?ZlZJ,DV<) ܯb33)A( CmFj^E+S^ӊQhݘ aǯHn֠fug3x%h/~}5 mЎ(B;VrWzTM|IBy]\1bk=OJϓ<6Nl:ͳ,EJW127 cd
-Wgh^ibص"iGI cՂqD"ז xz%>mѱOXv%ٱ+=ry;μz:H'V-&5mEs[,e)Wpif%u2l X/
-V˼[%}&6+y-
-oX
-f];Kjadk9c^*T?yO%3lMQiJ^[k:6Ր%cjeJt@n٣cmJgwS&297lm56jjh}ďIZ6
+853 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F68 406 0 R /F15 385 0 R /F55 387 0 R /F58 390 0 R /F56 388 0 R /F65 392 0 R /F20 380 0 R /F49 394 0 R /F48 395 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+864 0 obj
+<< /Filter /FlateDecode /Length 19632 >>
+stream
+xM,9%_q]v~@!z
+hhSPff@j5_f$x7nt*%u#+g~vN߮pm=7-%W~zsoCy+ݯ~u%]!п+~7Kw "w]?BI"!7w[s|дxݓ}1?2Oߤ8/5B|I蟟 [u_%c(m}ɩ]6AYp
+kL$$q~9fC)VD?5BsX!̐?/{}kUW*>_f^
+IWi`۰៚%md lcis>-md9=wMۃsKwwo5_{^s1ϿB_@hIԋZPŲ yh#@3MbmG /k>+Qr?ojwq|+۾?m~t>)ƹ^˱}U=? UQB:;~g=o~'t4ٓ_='4F.#~'I{[܈_꺷>*?JSof %1}f#3@gԈ9~`݅ fQJʧhH>pvFI̟Z9J>kW~qS+uޮ?^F_ CTh5퇿u)J /_? RB7~`95 ^S{Dp 9z{u̩iT3P%_i$[\{iP5,%s Z(׉Fi_M̍hCт^mw4PLT˗{5}^M#=e\i^HO;jS9Nf;~v٩eD4BPIO4{L6ΐ>v6D4R(aIW̥-/<jkFB=Z{:l.f׳Q9w_Fy(e5~iRFDddOjJ84yu}&=/I7)J
+Mb[nW\|Lџ3i6-;U117}r@ %GZnRwxpW趸(\.Wr׍C5|n>Z7V׍ue׍GjằZ}n>Z7V׍GjằZ}n>Z7׍GjằZ}n>Y7;9'X^pr3y<8Z_e;;u@zۺxg=z^_ۺxc<v/Ǖzƛ<MuF<.]Wn>ѓ@&{_׮KҤMC盞~P2M(ko Ǝ+:[tД; %``9
+
+dAC Cxy
+ASK[@r@32D t
+r_#IۅjpWQ{&AHl Fe&a*?#ƍ;)vAʳ
+=h>a< }vhQ˅RB}2lW+M3P
+YiPC#]'2Tc רS)Ljfh8ڴŏM<;
+dAâ;=8d-72bE9.7i`ꊋ|TRAKFCJ"y)$~絊&eT+hl jpBw+0>l"7#1'07[–*f%S (ޭJqz2qE3 $EvF}LꁞK'7!TLh۪+m2-\xdJ4ә*i,.mJ
+s2R=фWaZ<JiF)N
+`Rt(έP&?^Xb@Y(OJ‹z ?9f Y
+]"n7(mGMXfLTlMWBy}LBNr+)L}Ҁ_b2bKP$&*B1kis jebV,0Ura݊EpLW.(a YS(k54p n3dalk.%b&V :k|3BPb=V%z.ȯ(ѰbV,0Ura݊E0
+6TX Xg'Цb +.9ҭN*a}^~5o 7&H>_Li7FF.O8[d̼f ɵPYtGؒ*`D(#J1r.w4Q* a!p!?aa&,/>/oo_3P*6M H &g;F 6rU
+x$ȋ9tS]>1Q'}71~l M\oдr1T)].W17t\g.ll1Հ]°P^t][h|ߴ+rZV% c1e׿^4ZK}-ZA Q0u.+Lz0ě1kAgG"#hUiѣ/Ќ.e<|',sdZh50jMkh r<7q&>,峡3vJ*4N+$N3aK2]>/<cΎGlx+iLâW0ﳡtd(E, Uq.5^k% WXFͥ?޴M3܆].W7?-'#'Jٸll#i$uĬ"'wEW,CHFr}Po(r̎_~@ó\=`O7GaFUZ
+vFG"rxQJc,#J/Rbcu"GFc)li4mYFoXz^\kLSF)U( FI(H9N D<aiyu-Rr4B226wR\_[rcU*
+4!|ZvǻZeîdL]F
+W9 +'H6q*N0̈́~QC*S N)E!$F)(lkzվM_^heYb'VEijI!#`÷\5szt4̜^+>ۉ+%V &_e8jc \ M͏Zm&sbϪm<A[kV<y+IxCg)(gت Ax)ӎ.aԑ9}!~LDy-rt[ ?1-4vF/ׂHc
+R{.ll18]bPZ+wZcF 4S^s0Xn\V.lowW,炽϶v)ģ{$4}r=bGC닄 Ypx
+nvOwvmAí\;P ho@#恝l{**|Lw?K )4>zV``ygb-h.4JHC l"U!x%3;=ഷHb/kwy%S_IhrFc*6yDpxvȼrN$Ŵ90@
+˯@ͳha,!B3A z:V}n%Hy'ˉ^($4f)$^畊ʟ
+qDGcg DGSd{MV_F,XB J,߆ԛȵW`YCzO)4kuhxnkgB`ET<f^^|tȟQyʅz׶LhȻp!5)$~o*c Ww6 5E+
+nh /#Efhz.Vۃh3R z(W~.*ER8E3Zt9}4w6 5.;BatiB=W r&KwDa
+`'E^VP?:1*G$hx*
+A$R[w|;LuJk,Kg(Pցw bց$BR6xwl158heA9D8J_Z 2!ry !`÷O@Rp1`3U1 `^ i!5%ĂStX!-1柇GSB•JSz"-
+4J&US)7=?_5%NR-У(u p
+ΔsFcUbZ* K(pm9m8Qз f9c3죜cDn/uiarB1[сRw[Ap +(޹J35T-cSEn
+@xХ@
+Z4K姗
+pC(@QL
+̚.͎U!qE+8)c9PQanM)$I\ɰ
+0\ ^
+~$3egS˫6δ*+dC!Sa GE)ҝJa葱@>1ULڿ0AvkZRA#T^`=p, ԣY1B=՗T
+`*=Jl[ \@1@QTO}Gb<o, ʃ5 &<6dZ9y:l{e(SrTt٬ o9c"XʡFBGwqmǭVvL)PVrXQa)'&m-ǭ׌,L6˹`M!La<"?*96Mo[?Ա#n\-5e`(@pl8nZ+/SB-Ⱖ PnaEV-euveً:b&ۈ X
+4 - a\qmtlО:EDR+! -|l^{@mlef;5 +stoՙf;-ƥ{GxJEx'mTY,ylunSih8`<n"CyfmChG.=%HNR@H%bK)]}0i ҏx G.A
+4 Ml+2=T8JA>ZDuXogcվd. (0 ؊hfhY4,ԅS WIO ]) (ۖ<\ZsX@['"US/pcQQrCd F3fdE(ZcP F^.6S9@[;b(İ.p4֏}BC̦TMfVQIb"ùܵ6^IFal;. %x XWh>',-q9byWl+(=8
+Mvqf/մxt0,X9ٌG5aEpZ/Ҋ->AKi(0[ΕTOK3
+:k;K,b.zXCEܪQD%$8 R6uVU7'b'K=x`BܪRx՚
+
+XmpM1uxPb%: Ðm `Ԩ^oLl;Ji6l*uqibψm*t+gUgl'1lU"[LɈ[Ŋ5u(hVχ
+`/,؃b5AlW`@{pVliF짯G~"d?ZVbmgA
+.PUh3i`[
+bzpԯlh^<
+BZT( - [ 1+?
+kB]%
+~b(=u4jH-~" 3,tԨ Ϧ~00F#r8 ZRcYG{M&Tz'
+R"֝J~p7Y[b | fj]
+g2q.FOhomyOUV¸߉BPbF) -Lo\▬_L bBx׾lrz~fHWK@njuI^}M-Y)R.l8750 ˙]P
+}=.)ASGJM)i ??p3Ƙ
+RfaT\Tp ޿!#ooЏy
+fldgȶfJ$|dž=@/׷%ڔ}֜,TXQc)֝FS2#C7sL b<ByDXIΤ'Q40A5 c([*oYAK)AFĆsSW(}O f˹@ZJ8ȸGlH%J~
+0֪>f>u,T۠ ĻIAmXus=!S{c W {/hʍ_FMƖƽR˲0ScMG "6|)! )yӹa.!#g{Q_+K7z**tώ%wD$g(5>chAKxG!A*
+ZFc<2)A|X
+q6hwmsS&Qu(A0j*DKK^V[dMѩ@V4(!c xw\?믢4SE}[!+nA27{+ 5Iw{P] gF'~2*dYCh5~y+-PjwC5X紐&:Z$~<ڟH:ъBV4&!C!Xr8nzl
+yF~<ÁuE7HfAg:uy
+*mTEYmPtg<xݳLL!#2Ԙ g!xվ
+?{;5
+i0Xwek@uC#H %:XYъV$,p5L5H]JŒw\5[ՂaLV*@GK/Aޖ,14~R1<=)m{3i ; 6 J]GpBZ^ d$Iuxd2b1:ĉq&D4Rdx4\<&.>$cTHb samR<vg\ejċnAHC(E|$(er b3lr<Q 'U r^$
+Ympt Vy~W j\s,PiA-T7(Uh%`ӹըhs*sLtE9)H§k
+'fs $h8T^xr#fp-ئX&僰O »R C<$w*fZKEi݊ fwXTRb=S% $]Xڐmb)(7rv^BФ|)cUFĝ<wGFPl:4n
+}S<XޙN1+1AXTIp('Lw}I`n6PJ X\g~%&X:ۃOAו  hP `Jj
++-7Ik&lKTr&|)cUb䯏^$-#R`Ve
+ M(z(,#&ۄBͤ<>ǂPRO8-2 diAJfw@Ǒ.@ˤ(m">UzGfe_IzlC⏄7_1+2]
+,J V:ZZx %.˘&PɫVvB~Μz
+%pӇV=͖}㖍.}g< [/濫3<#Ѳ"|}v|]w6Fw].Tz3yٯ#~i?u7}s 7o?5u=O]јuJ{
+g A<~/}=iVsobUU IQ\g]QC:M#ΐ}OdY(\cFφ|y3ۈVz6OM7c.jGL,c;>௞Qiqst?V +տI}ͨ줯z/ m;Ab+>>1da$b݅r~m0¿{/?_ G /?_ ~9|jr_
+)Ϫ^__>w~ěh?OWV47_O߬_o/Y.䒓׆iлy}-|81χo:̾ z})~8_~}pwd)V
+W(vHڇ:^KM'Wd,US#/>^+=U=/5-{_h޴듦AԴd۴3l] 9A}_=߃rkڴ~qR[ܿIez-<LS_ &u77>Qt<eژ^^ӿ4ӿ4m^ӿ4ӱi{cz~yx<U+^
+M .Wibb_L oܽs_s/ui}moI[-}#/Enl^]oK[_ _z%rYzG?k·_x֦9υ6-1erÔB| q|]\—ڕxfi6yߕGzζdQ>(⫏/MM/ T};}>B|[(oa_ְ3;__>1L ' }b/p ZZYZ{q,C
+R"?My_WҝnhvkoǑМ7r/p+ord/J2/+7R1yv]qpw<l|u__[xk.|2hCPyӲ‡*s%ŏq@Kz)rg!oh(:VYl\\׉ց6Pi@ܼ/w^y"
+ 5EPwku> i}
+^1  \{0$/ |1- o^x&uA1,3uQ "$Xbi]G<
+bA3HwA久8Q"^}DW ww[laq*??Ah&-={<
+ƛyB}AقE
+\
+S#ʍwag }U 1Ȃ[4OT(]t<:r'7bȪ 5Ekԣ9Vѯ@V40uGޭ/p!(/JCl}r1P4w.>[e.AOپ3Y:yn|=
+4/-[Ev()[6~K@]<n~,FP4# çхzOl/]x<x,Ch<T?TNu~Ճhܽ~u4S!Ř 'G "b^G|O|V=@>=wؙB5l\tF _>Bv1u˝@Ve\{$5XǼW&ȁF=NbN3 ה7 Fe&^D{pr驂7x!c
+hԣD;!gl+d
+=q+ئ2
+JmWXď4э|0noR]mw5ވ]_iv<tY|@ZHw8Zϙ&Rۇv-v"ݿ[0#1y
+A
+MEE𾉕}"Ǚ˻`X3SǪx> w=XˈDFf^6&@݊)-}" %jh96$89խVzdwނي/*C67!J:"7F?c&.o@gJjŭ v4oAhvD+#n}p}_ƫB;č VA~IW\ Xb8xF L>zÉ?s/F(>hNdiiM!8
+}f>-D,&Ҳ
+)
+dy97;..ζ-CK؎P4H
+$z/loX.)8)
+{b&?ΑO̕Ksm <{Ewƣ>:+By
+/zi@~T2ug2|έ=|ț2e!Pp l Tub񦫹 _ ROz'`P!+ݱ/ fW#RH<KMƽg *hhܲӘk R>fF)Œ&#qX/ ^I@&5v=wSҳXvA戴VVDʳy6zX&,_5a|蔫Y
+dZ0T4{^Sqi -̄zffxG^_\^rϏ$TsYc7 K
+t %Q6Wtԓ/E^t
+I KPj yxc&O$JP!Þ6AWoMY=EWb*6t*IqPcXtG{kTG4ֿq|6U
+T %:_rJtWdRNJךj$xV M޸?a?\%/j{NfPrpkr_;i6ҥ~_4],=#jHn뇼Ȼ G]0i̓of0&x[t.Ɇ=#!F5V 2A |܏ē-eLQä %>gqd<s 6+2YafX5[QH5M*ɱ1Y/0.L\ vt",W·|ɨFϓ;Lzq6STt5/6hd~˷5<,tTPqN`
+ɲ6NVXJG*9!\3lYѕR/4c2aw+<(
+@ZUט), .C#5 v\Gwz2j>o悌
+al3gh'BJyD:1j  <s^b+@j^IjƒYJw1j~ 1f0ThBϫ5xgL6MBG3eBZ9597Sf[([5 kh(j@@yĮE6?>AVi3Kԙ1jUj6vW/Θy'E ʳ <b\3764kLzzAdKd#AvKu[i4c>ڄRMq닡DleI2j6 & ~ ciֈ}L7 :seJ틖+nԵK
++nܙKr)?79C20jR 1v.SG(Yy$\6ەy":e w&+n q'nΤ-r򛊡Dl30\4ڸ4}qIQ8Ẅ́5JR ׭{"ޮ>roy/B07̛&5fH41NqPk3q
+*4qR15>DD%F֫r2qqY]>@#P#g@Q^QF4q,2ZUBP~TJ{:^[(5M^F$h)Ģt+^qkt-3AȎXתP?E}J0_hCAj\ѰWf[m
+
+8޿ %(RTxެ44予DTQ5hP#^H%-<Gg<$kkmMb K^
+T<ukTNtH n'vx
+z{BvVCF莰92' G΃FQQPG<P^A@01(sέ
+#!X;d5K͠qm2=E% !V$2ႡL@ G4dhLCTGm4Щ):CљqQFZc8fdh)gI+(Zf¤:BgmԠ!0P^' 8A[1X\_%>T| 甬qd .P0'EKR1A6H
+hwd7(i/KoJweV%jy)ZZ
+0 p.)F7h1^.VrԇU8D1׸zީԒ[s2 rkXmҭ1*DWY
endstream
endobj
-862 0 obj
-<< /Type /Page /Contents 863 0 R /Resources 861 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 860 0 R >>
+863 0 obj
+<< /Type /Page /Contents 864 0 R /Resources 862 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 866 0 R >>
endobj
-864 0 obj
-<< /D [ 862 0 R /XYZ 78.37 808.885 null ] >>
+865 0 obj
+<< /D [ 863 0 R /XYZ 78.37 808.885 null ] >>
endobj
-333 0 obj
-<< /D [ 862 0 R /XYZ 79.37 598.595 null ] >>
+329 0 obj
+<< /D [ 863 0 R /XYZ 79.37 771.024 null ] >>
endobj
-337 0 obj
-<< /D [ 862 0 R /XYZ 79.37 325.802 null ] >>
+333 0 obj
+<< /D [ 863 0 R /XYZ 79.37 178.379 null ] >>
endobj
-861 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 384 0 R /F29 375 0 R /F20 382 0 R /F51 380 0 R /F69 402 0 R /F15 381 0 R /F26 404 0 R /F50 374 0 R >> /ProcSet [ /PDF /Text ] >>
+862 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F68 406 0 R /F15 385 0 R /F56 388 0 R /F25 379 0 R /F19 383 0 R /F17 384 0 R /F20 380 0 R /F16 386 0 R /F18 381 0 R /F23 652 0 R /F21 382 0 R /F54 378 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-867 0 obj
-<< /Filter /FlateDecode /Length 3140 >>
-stream
-xM+bz "Qbu6@k 9@z/i,5:9xLR$ER$=\w轸w~{U1ot$&뙴5q#O?87s!K֧s_K=LpH.x/k=->/ gh .o u 9G:Wg"=WXK:iKC<ydW# nZ|p9/{!/ƭ{IﲱInZvz밮O6R^Cx"C7-ybR<Do\~^C0uУڐe\Wc%Mqʭ)2oIJ8VObykfMq 0%Ż7`3pL{
- [
-a[fiP϶բavLsy?_u٥WD
-vd϶[9j%sK-[̃"6\k Y~{jL|Xש53$0-K̼g~
-~"Qeb/)'-f~ьW2JSxnCH߂0؄ t L f /1AAbOM裂ԌNO3=|f4 I\c!`餜a I<3x"2 i?*
-_h W'p>Z|=jݣ)~\h h3pLnPڨPT.PqעER)8~5l)uv;Ȅ6xJl$gA$՗H߷NV}LR=%#a.΂GjmQfBʃ{BGK,py:
-XG=0 | mVaktp@T(oG!EI$1+A@pKa15@ xW @)HAz E)͜bLloIAA[ IO<5iqXh? ;i'ӌ) ;I'SF]Qt> 3#D K<'P-|>䤢KSy7HEͫ?MwLMNuz+oǁ݄Rz,lB`nq8pu8
-Kۃ>_Qy36 +}~k+Ķ&V:LcvpFѹJL0Z3 x}cCBnTXFU1ݵ%s} e:z`WTƜ2WgնbvKn{ GG%Źq{;]am K]#:߷vg#HXŌq#hIqv4XIGMeEi7%m Tִ=mCTUm(kMR@H-fMewPO %D?;I~ݔP&jc8;nJv
-o3:A`͵ n?;AzO'UX{;Av~S|Tw*^'EEzNΏj1Z$.d'h\.2:~F\.2:Xir\7:|=V)36WzH@\O1#rWyhxP@\$<g;iy^XG CQZù¤amޛFӂ|RN"'ޛFӂg_|/;iS8~RP8F<VLSq3R
-3R^h+8g̮,#G;~E cͳ=g4aц*4 5K43i[  
+869 0 obj
+<< /Filter /FlateDecode /Length 5530 >>
+stream
+xˎ>_!
+gkô|6
+&jft¾ҮvpW4pJXu87:pfѡ!ה!u 8=0n|q̕qR4<n? XpF~Uw`lp--WB'cȯB8W8`==2
+eR[ XSY=<,w{}>,{o4=(J㳁lla4{>(J볅R}60}-fg@i~P vg @i d4̖}4)Z Om˴s%q7y!* L;W➻ '&QGuϴs%+wTL;W➻$9v=wT%GUϤsxx;<yI3i8;5LL[I;ް\)f!ޙv!Im# sPL[I;
+A3m%84}`&5*ie: ;Wej3 R0MߓBcāE͢3~1NmV} ԏ䚥r9wrIUD`N\zZU2;"
+t?"8YvR'e^SZ$ )&uL4e/DwSb.33QU-+pj:n!TW"(g3]AIhr>8S1JAlpry47H@6TO@Vq~n
+BwS%הprYj 2*x?(),JKQZ8U,jZBb9k&r>e$n4 &wxX
+_K`K|OCH
+_)-P⸬h9PM,
+WUF0#`/8SVסz%5C 3qUD|Â-հ$8VT>y^ȅ5 #Yj1aY]0na2C8ZXPo!B`O)sLz_`Q[
+Jj&94WYL y+%Y%`j9\`s
+ ˋ*WS
+{>x ek9VP+TI/+ d,i-M&'5L/M2FO0\8H
+!YZR Uc8DeVp AEB@1)Gb]"*@AfX̔
+# /It+@Iݬ\El"vfǴL0aIC0qt8^"JEY`D"{ 1 TcL\:1$eX&sҜlQ%0,AEK`eQDq!)ļM0\! U , s`GXCEt F3uk2fj8B|B&r ԤfEm$ZƍO8ɠKN\;Y-tN E 'L5Ѹ^`Q[Zt&čeeᙺB˙3⨡g  t'=+jk%<-. @xnĹ۸DRרl0M0H@='`[ ,R F#y aUM,{e]+@Y8bV++쩖o<&gm^a-
+2"qX
+YjafsKn̗3ʹ >9&x|LocX<iBjmKHr)m9dk[-hx*7pM!Ѵ`W\ f3Epz*SM7vYƇBTXQ:$\!At+U,d,Xeo^#ڀ:QG)|w)& YE?-Ns>< Ú1e&W
+~Ԇh6.k^/98T$S9X`jqm``C{@s(8p?x>=NX 5AFY〧kKn?߭ÿZQYzb-cVH E&yEQx^Ab"۪yj% ,`{,)ӁU)Ŭa<0R czbKr7oexZ}(; :>
+[yczUGkHYAx.*q/ۋ2a,m.'_]Dld髺\frˑWu"kbEw9?a]N^hHD<i<$ÂR=zd7O0
+K%V"<ZS'`>9#a"aXDϐ4>a ֋& 6y@?k:\ 80wX!:M.t>BS_<ߣg-7M1s1($֔q09u)xAB_"޿*.'0宿 p AR(Q51֟:瘆`DY7|L2^&1EUG˪$Y5zlhAN-t`,M.7ɍiIk/ML9=3L@۸?
endstream
endobj
-866 0 obj
-<< /Type /Page /Contents 867 0 R /Resources 865 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 860 0 R >>
-endobj
868 0 obj
-<< /D [ 866 0 R /XYZ 78.37 808.885 null ] >>
-endobj
-865 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F50 374 0 R /F29 375 0 R /F20 382 0 R /F26 404 0 R /F52 376 0 R /F41 377 0 R /F53 645 0 R /F51 380 0 R /F15 381 0 R /F56 384 0 R >> /ProcSet [ /PDF /Text ] >>
-endobj
-871 0 obj
-<< /Filter /FlateDecode /Length 3007 >>
-stream
-xˎ>_0&Y,> Ӟ]/-ɀ}H6s流TSjJ/{ToVU_'I$Wr"X ~˓" 9nrV iRZGmH^3LvB{??yJ“<#|Xl~' zE*^G_{)5i^GXAފY!3GpX/+CZQ15ZSVhk$*dn:L<R[S{'
-k }) {zمO>@(BTEo),_ӧiFSHj(%a,WB0]aeZl] tTA.QXlqF~PLZs^wѿ-#zIЄ#Z,}F} veFb-Pe-Z4~> l_o ^MM_# blzvYj(ƎXAXuZÕx
-mE @:ɫ#0G B Z5/2!/`P@$Q˞C;#^hK.ٛ3u?Ts uHl)HlTIBDՎ~O:o=ڍҧY ZQX!0({Y%o=nRPWiE%:F9c]R)Jk}pF1? m"p
-\!5ٟ$&1j'1( Ma)1q=FcS4-2!<`[Ծl7WW}u_QH gn mn(/DK횎~pN `@e򱞆R5X0Td ɘo <'C~̯#odSћcJ×ȎնNu!Uᛁ7dLeM>X C,ୱXcTatnong~
-;b  ClDs [u񁋾:Ӂ`o uSzItC<n*<M
-6P3jh5W8i5mk Ա"GȁV?ҷ'2<7Lf
- mZKp
-<LW4. ò2l3sl]6E_U1ںeɴ'?cK
- ݻW4`㎯yw[w_G헕GfNVձB"syKi$%zXɥm`^Ž16dh M.S8<9g%w|&B[ o+lxi]#M*h[B/;B}k_X^
-MBI5O_ǷD5d
-endstream
+<< /Type /Page /Contents 869 0 R /Resources 867 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 866 0 R >>
endobj
870 0 obj
-<< /Type /Page /Contents 871 0 R /Resources 869 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 860 0 R >>
-endobj
-872 0 obj
-<< /D [ 870 0 R /XYZ 78.37 808.885 null ] >>
+<< /D [ 868 0 R /XYZ 78.37 808.885 null ] >>
endobj
-869 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F50 374 0 R /F29 375 0 R /F20 382 0 R /F26 404 0 R /F52 376 0 R /F41 377 0 R /F53 645 0 R /F51 380 0 R /F15 381 0 R /F56 384 0 R >> /ProcSet [ /PDF /Text ] >>
+867 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F54 378 0 R /F25 379 0 R /F16 386 0 R /F22 408 0 R /F19 383 0 R /F23 652 0 R /F15 385 0 R /F56 388 0 R /F58 390 0 R /F17 384 0 R /F57 389 0 R /F49 394 0 R /F48 395 0 R /F50 396 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-875 0 obj
-<< /Filter /FlateDecode /Length 3868 >>
-stream
-x]Ko$ WTn 
-F\C DΖDz {Ӵc`1Bj0Mo랯i>IL*}Tda;Iq`ZY-3~w
-7DW{7K)¬|4B`O4ݍ3i
-?PNK!v(9cVƘ覡bJ7[g];Pb\fMV :5eTJԴz *jNܭQ`(ķY_(u"FϬ
-0sz#No֕\7(%lߺ 4D{vjJ'_E_b^
-Q83a b1eI(fQ~%KNiul)KKe8ɺDz!$P#$ XIa?[R rJ~;9̏ ' S~W%9U%MV@ 9bURUtIpR:bQ}6/_TPdU՗.W%A#V%92
-HՔ9W5$i:KŏZk k`9h|5@=OO|<_#p|<#?ϹMv<sx0>opy
-FmT8E+Dh_FՂf<0M'_w 5HQM9\I:^'0O[I|hucqO ]'^LzЍv ^Ƕ;/M:t'w{I7<aQ,NQ.q9xe05.L"pl6uҽۼ+*Z'BwY Wϊ޵L= )qB
-;R?rB?
-s* "F=~98 rjj/KhۂEݬ/8DuUo|X6ۼ<Dus474ƨ%5 LVAoW< o3oF{iIxG腫ȓE~+K
-&O
-
-_ ,/_ZY +75Ajn5[^jf)KP1*ʕ
-yII#7ڸLyu>'wy~QP<pZH@$uA?nëh^x}C@k~{ct*ڤ\8io?a. teR\)U{)el~I\;VkѬZ$=}Z(z-=)WcjF<zrҀ`l/ǣ ^ϯ -:{jű)B׼6:+͵׍xѻ㏌4UTzM͝T3-{6h2dK K{J9^_Kފ!HiFzrT}>{+^m#= xr}ƕLj=\-w֘^A3ؘ[wo|L+5@yIx=[4:2/X¿OSO )W1h”WO^X׽S@>o)6Pm~W{w WpbAriѽ:u>~jk'[;;LË{<O.|U^n0ljԮY#vakS`+v¥)AsP/Z5sJMKZ;5tYcsDbgwyf'sIF^̮\z\
+873 0 obj
+<< /Filter /FlateDecode /Length 4188 >>
+stream
+x]Kϯ1> pNɉ$
+F
+2TdGr"
+Ꞷ"m|HK>w)
+B;xo=➳L2)RGSo%Ѫ6x,4l
+otcCo8S{׵+J0ѻ|nEw¤p=6\AΞ|w.@筶gN8Y_~SYeX21`u2ƃ5+*48W
+^=,Bؓv(JT6( K-S.~gl.|6%<p n3h6r0< ?Hǝ
+nq|,~,U E:g ><,yާQnKH$/͑*N
+jq$~bFܩE"]۫e)J
+Z)r\߂zϬeFw\f-^탗X64(q uHk``
+&vnÔre:IPLTĦLeI!TlC1^]@`JUl24c߫RxB8
+. %ypW8wj@ jiz*K%D7*pg.4忦ǿ+:,aR+뗌4J&dOMҴ|:>C
+.8ͻ8iĀWT}.ֺȫB9rlfl 5W d1p Nծ) C^L`_4$mZ
+=3Ys6vyB;+ ԗ|v^^? %5>Ћ69f!P~ޒ[Q _qrAS#9 H9ϫ- 9@}e 
+9Q<LkZX>Ө`SeN{}LC_^93 !_4ϓih>s!/D3 Q[IƃzM;f>sA?P:cLD4o`7g~$ϝih
+AS@L^iy3SK5M&fs @2 s|fu&|byVv`,])]N1)4gHO$ /w鉆iFs'00PKO)= BMLOi >&B4xiC?PBԙsG_f2 M;zLsXgƀ|yr>m!aǼA¾$>u!ǤA$>u~ >uv!tсBBCX?x+$-uwsx
+aak
+q6Hǵ7HǵHǵ7Hǵ7HǵHǵ/h[Sԣ!nao`95qR@s[vu8ȁݒe98Зc31e#VfybԔeh9p{`G[u䭭AO^WzpטBYcD.Ga_vEkuFPFV
+G+O
+'"*(VH2KE,~6,k"_nOUvVڮzXj[x+Y2҇A=(Šv^ =(߃@ܸiփ`hK!f.~P>Y}bٛr k*,"u({[:
+Ve^*MERd?I+c*{jz |̬4!SBV*:en7s- ŦAAi az"eۯn[9s9_?ZE0hj
+x&t?
+O=2^;WJjVW?Sdi5ˈ8lm7X8v&{@lY^x->be,˨h_Mf|B3
+#z{9
+56qgz7iXJ6WM5J苫he~1V*~J[Z6Y"'Mh284lQ@Z ۱V޵8"wkR6;8(fJX}ۿuD9g^8r .cU~E20IHn[\Qi+w%\8YjYIݰ p[B3VKB+eڭ>`
+[OmY7,pwm:{R]0'F=^J_wsoc.
+-kkk9hf aC_5\ʍY[ߖ+^<3A/S@)QMndKAiIˎ0e|Ml,<M-"D(B1}ֺP %P !P 5p-GVf]ׄ㢁Liad7.#B'yرUmrm.o ZC)c-λerzTJ)eJTN>MֵؘFop*ߜul EJ+M"ApV
endstream
endobj
+872 0 obj
+<< /Type /Page /Contents 873 0 R /Resources 871 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 866 0 R >>
+endobj
874 0 obj
-<< /Type /Page /Contents 875 0 R /Resources 873 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 860 0 R >>
+<< /D [ 872 0 R /XYZ 78.37 808.885 null ] >>
endobj
-876 0 obj
-<< /D [ 874 0 R /XYZ 78.37 808.885 null ] >>
+337 0 obj
+<< /D [ 872 0 R /XYZ 79.37 598.595 null ] >>
endobj
-873 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F20 382 0 R /F26 404 0 R /F52 376 0 R /F41 377 0 R /F53 645 0 R /F51 380 0 R /F29 375 0 R /F15 381 0 R /F56 384 0 R >> /ProcSet [ /PDF /Text ] >>
+341 0 obj
+<< /D [ 872 0 R /XYZ 79.37 325.802 null ] >>
endobj
-880 0 obj
-<< /Filter /FlateDecode /Length 6350 >>
-stream
-x]K$mϯ(P#bb;ukoڃؽ#dI7w0U
-3ٗ 'ZB6
-G%$e2*VEyp%)*ɹy_LWԁDkW3ؔ1(՟MRsu,'F%u%7Gg&i/ș =ҫ7y2gOw>8??Ϲ'Mخv2?g8=`|2j's
-H6锓bWV7
-Mu&]lMO6t,66pnXa㷹ݦ Lmxrm}ݽZӭ\靶iքblsL.[SSڧ(!~ŶG3o!Bpor{MiN3S#&{ksG\ZSKmʟOoL]&bT3e3[jr)#qh?;W^j;m2p<myiygcقR)3lO
-!G6waŻ]+~
-7u6):So
-?`[Y>q9`p榸#?R)~Z!٫mQ|L`(M;iK|TbOwxK?
-MbIO7V5 4a7({nE|.49GSFfڅq RR$-
-Բ#H
-OE-;I!)ij"A72FzT8t\-÷"(Ys?ޢ^ԘXA uḹ(;`@ҁ{zk)p`اSMٮpt#(K}G)k
-Bomz^Nkl-QZ}Fo)$L.VRuFk-[
-pp Iqtln+fYx.=v~N~4c}z_Hk,s65W#`̈C,/@&(Ȫ
-~vW_0 ӰgA+aA;}9W¼-6k9qJu
-:9F\88:x B O *Ewu&!L^¡W$h|JІ^o+ATlJx+A!)z7& +hDle%M0psI].I?܅]6ĸ@)$n7uIsEXrIbCEBb[5CYb8f3G:7<.g~OG*,Cߘ/%κ% <@`mޘ%Xnqar-PK* KA*nl(7cj쭡FTke[dk (yXeT>$?p6)CQ:Umąq-ãi$wl !MŁW`69Qkul4Da]#Q~.\e׌DEij1J[>!kG7+zl^'ͱ:P|aC F x\G}b_5C\4A&m|m1R
--{O?~~ehaji.G;cs NAlf_kIю8DTn \?HBb~od ><}'uV@u}Č].ѐ*p9CCIjkfOT ]n_I^m^Ȗ
-<VYI|u^81IV'?aךpDDcWNg'IeqIeأde|ɲ3HCOc"{ b*U4I <?XgfDD3 3'ZjgH29Y"xL(/%HwMhaf@ІM f̹N$[G$<cAxEwj rI_Si|eLunUD~NɼBGj# 1`3t~b=/-[~ EJEDD%G9$.=Z &
--W SqVXk5B[@l!ql!р <9^VxX)SS[=M[=F[GBTXlbU@.HUׇ2̛PQ{~28B1Q
-nrViWu7$!;$FS3MfPd7qku,c-Q›zy+_}(
-
--ZsEۓ~Bxm>(%NpQ \
+871 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 388 0 R /F25 379 0 R /F16 386 0 R /F17 384 0 R /F68 406 0 R /F15 385 0 R /F22 408 0 R /F54 378 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+877 0 obj
+<< /Filter /FlateDecode /Length 3162 >>
+stream
+x\͎$ STnc-K~ /-ɀ}p6s뇔*ZUCOTIGu/Ŀ=Hk sןIM>
+wJH׏?t^J>j)}RJg2?~J.kpLs|9o?'{3t敽yt*zG8&Wx+Bk[cq wIw?Ӑs3uX \[ ;tr
+jNFE/:$?`${.sy'&fΕ>DS_';}ލcJwxU^:,˒PD3:N ꋧ\7a|rJp:
+k
+FK {Ii@zuN
+gooh!J%6nӳ VxZ"H~koQ"~K RDm>ׯ\*"_\L:5m-ړbX=˪Lkܼ3yAD&2\
+msbzkx:E@:$O~MhN3=|f6L(I)% s!dq&\օP'N:.ƣAmx~\3(2-W꤃߽q܈]Vt8p˼mD]foBp`Ѱ RdC@e#*62 j.mhPaȅu-F0 AkA2MG`h5~djwt"CJ<eE#Fg@&NrA[Hr/2!FCk 9lp#'0-ϙ?4z8v
+A;e@gģ~¯54~XyXY?Lf̻[R.9Ou5G6tB9 j\(bsPf]X? e/1Ktr1&jNpf<-sc
+,
+DmMShomF>T<Au8z+Є_34qfߖwTmKblBFTf¼OU0r=|P$ iOV6,X?$X}!\_t V6/[cN\ 8]fՉ>HEu虺tyx K!vE射v
+ƁSYg7?nMM7Os>oWٝ&Rwk 𨸷o51
+6zJߒY㢋je39HC^T>@<d$b]f$9keJx%!+-b)Kы+M;t4y`uf[;zϤ렿ӰSRI; ksE׭P'Yϲ%sj'p!TBc/7c!V+ 8ȚHY_nu~ZO!x)2;kx-uJ/,bl:wG巒GN[UĂXP.K}68!Ú44 j/=*=nӃ᪯l D'6,wlڟ!>tzos]Zو D+u/#lܲw,U7{dpNۂ^VqY@-wol܏%r[]\˔wS&6M.m$^u/M83c*HEn(AtΧA\Wߜ_"@\r y-,Q@ɞ9bPsǽ-I!_9N1gr:?7475EKzO=pJ߿>I
endstream
endobj
-879 0 obj
-<< /Type /Page /Contents 880 0 R /Resources 878 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 860 0 R /Annots 882 0 R >>
+876 0 obj
+<< /Type /Page /Contents 877 0 R /Resources 875 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 866 0 R >>
endobj
-882 0 obj
-[ 877 0 R ]
+878 0 obj
+<< /D [ 876 0 R /XYZ 78.37 808.885 null ] >>
endobj
-877 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 258.666 75.503 269.123 87.182 ]/A << /S /GoTo /D (subsubsection.5.1.2) >> >>
+875 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F54 378 0 R /F25 379 0 R /F16 386 0 R /F22 408 0 R /F20 380 0 R /F18 381 0 R /F23 652 0 R /F17 384 0 R /F15 385 0 R /F56 388 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
881 0 obj
-<< /D [ 879 0 R /XYZ 78.37 808.885 null ] >>
+<< /Filter /FlateDecode /Length 2924 >>
+stream
+xˎ>_0&Y|A=;\6[l
+&;%Sot?/H) _ow-0|:}?yZ)̓<[<cla'D z2]JA`F"4+~ÏCx|9#2?Q^hm IRx+?OkJ ܞ3BeXH"ѭ~
+DHL\4K~6`D>C\R =DfB Bc>EȊI/ONhd `NO>O3BGRE)% c!gaWgkg褂I\1Jg[ N&
+Lއm
+$urزF/ڡk&|މ釶l}ܟA *
+eA[ eA^SIÒ (J,!.J urd]T)Hފk}pA1?m"p
+DX;@Ed:(Їg:WDZ$`\5''Ea!maѨ7UNZ3~)Ie0p=:|{d̒t*HQeL<zI\_PD xkeSQ ㎴iD+̾:1`ꯏ35[:񂛛D WvMGz@r?L(wDžiT2ZTOPUw)Wu  Uud7Tb'Jݘ_)8GD+1Ȧ|>"/Ցm Nx b1x(|sKAn4XΔը=rK1F vCe,xKS=U99xk,؏
+x98i*_) .tw:M왗5wM۝^5AH(2J8ޭ6xXZL0@ } m kh5qe-уyq>jp@ VcE@"bHC&?Oټf27ky`?o5`|@Λku 5oq2;0z&5>cJP,c~2@ܜ9h7rMRE-Sù"`e.Gӌ{YoSJ`RH أ jƽ,kx*E#<JΨkڴǸ(TԠ/ gI}Dr贙/Tn@Qb>hۧaqi&V8L3 4O3ki& %H*Ϥ p`#koCU9W(l/T_ne2s/#p/SP72So7g̊+B_+|7iD[eTnήH
+Q?#-W=k18CFQ.H*d8 :8Jd\;s,?ь4v)S %Ao4(~L/i]_Q" 3Ã/tMLB0$+a+6#wMqs]u^C__O",_i^:"k<?MV8I>sC6|' D_kJUe3d”UUfZ[xqo?x%Ji*h@ho(kѧ˞IH_ʸRf?MS\Ji%=nMa hdkW
+b)Y-۷{ wZ#X6;vyCU\f3=l`^*{37+t3<C[rP مl-G3G[fj^=Wl՝YQҽzv2h/ k}s+t`
+8nvxMކ|ZMu3n^q4c?2Z ^qˈ~Ja^yYb}~ӏt[vp.nSq>fqSfoڽ{A߮מ>;~u+L@ɪ:VH F_/\u)(#mJJV&߁-VxCHJ7 As.[ZA
+endstream
endobj
-341 0 obj
-<< /D [ 879 0 R /XYZ 79.37 539.971 null ] >>
+880 0 obj
+<< /Type /Page /Contents 881 0 R /Resources 879 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 866 0 R >>
endobj
-878 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F20 382 0 R /F26 404 0 R /F52 376 0 R /F41 377 0 R /F53 645 0 R /F51 380 0 R /F29 375 0 R /F69 402 0 R /F15 381 0 R /F56 384 0 R /F58 386 0 R /F23 379 0 R /F57 385 0 R /F55 383 0 R /F45 390 0 R /F40 391 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
+882 0 obj
+<< /D [ 880 0 R /XYZ 78.37 808.885 null ] >>
+endobj
+879 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F54 378 0 R /F25 379 0 R /F16 386 0 R /F22 408 0 R /F20 380 0 R /F18 381 0 R /F23 652 0 R /F17 384 0 R /F15 385 0 R /F56 388 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
885 0 obj
-<< /Filter /FlateDecode /Length 5085 >>
-stream
-x]K$9nȣ4ښZ>.v/&%̚~ŏbRT?_OT^%4\P}y^TЗϿ\R'`|>9(()Y T|dxZD?XP45qDkh^?H\ۅFEN.k~^Pʖ&Щ(mS5HE MAOMT!PS EK qI_;FoE@Cڋ!Zk(Hz͊?b^BH0
- r3W(;WlӐ
-
-ƪ{KƗ>A}gM*?52DcfuY/>P[PjmË߼EKviγ=M^[ k,Ue)˨l׼4k
-s 8ߥdvoHnKԖ1)qHUЮdÐj+V^Q'2%l$7DǫQ&[=mW
-/?]b{pD#E5_c2KHkL19_kX927{.lkrDj x۪e\,K~hAht&D Ӟ).:{{KNY<(1qVm c
-ccx6cX|b,bX%O]LrJt§/U_w⟾ S-v=u=X25-?k-t1qq:G_#7缊w~q+}ECs*v{ g "+~Mk[ƕ|Ⱦ We{)}l^gŦ~B04=)n?1Amq bUp4lyf݊w ZI
-L_nRL&T\(M/pϯzsj-{X
-~*c"Hr ::A u).)
-#Z MXWATp?_\U>} GCWR]wUD'-?5\S1YY* +,CKVMMfT-3
-N7a6&7ǥ&PaMpHvkmkVv.R#w f6H| V<~Pg+~kpfZ.7}q}~Sg}-9kd\\_;)urB]:?XX J Les1In#H$f?OR񋂩ܩ0k 103~kzm%51NCs1Z^$/)dҝ֔[urou 2)$yMr&t+Ջ }
-B ~[[ZqpFHU禠dd$n.% G@h j
-JFAVx<B(g1n8 ezGzZDV%ʐ;.SjC&8E"֢G i\$j8pSH9Ipl5)KQDĆE1RQl]y5cemah)ä<7X2lg4%uF'aR5^iN&xs9m΁ ӚTVEn Al X5X֕'Q393)Q e`ʢRm) H(HTGJ=!$)Ofs.9?
-Nv4NUҫɝI[NMfxs`S2!l%%);.S9:Pz BI6RD|+2QN^&+ ^2ڋǤ!
-FJB ~ TYbiH&#m!J6@V`;X.!sl)s`yuǤnImx8ݻ1@V`<Ze="AiN<6`+ 0Lj[iNp
-v S`J_ƒ0tb¢oQklB}9
-?_6Kr6uyQURJ E*y.|0K/J0G>
-J- +1rIJIU[d.
-YU/RbzSAѺWg JPKad]O`u Nym.fOۂͅTn]R6zY =$JJx-
-uU3aAkk%}wmː˦55;qSnm=ז֫. 5ؐ@pK(;RYoX` $nj{jK&UP6];O:vY1e|{xrpSw)MC#]Xh9FSz4ayh|4q``h6XM9[|br?L\剳ߪd[u saυu! ⮈+I#y7$5X<0Oد25ġɍ(h̼fIj> sc,p2 +*qphq0ij[>7B9#Wo@A*Ow;ħs! p2>$ݏӦ·+6K<
-Bd>~]g'W9dħ(m~ om<luIፔbm'si>qٜI8Z6g޹RgW6Oz?xߤEXfэc~4'6ul+vѿ7-)®Mo-\xxT
+<< /Filter /FlateDecode /Length 3866 >>
+stream
+x]K Wtn 
+<Qro?>q
+"G.B !n
+쑼Cؚ1j
+[{)аq=āXlj
+7F`70K)¬|4B`O4=3i
+%4DvAÔ%pAYҿ˺Dz!$R#, ?VRُ~:4ߤGA!?c%Hlj%ÒUIfUIU%(a TTiUm.XlW%-UI
+*KQtz䤍KL
+j+ښYSF t~RI񣶺cGq79꧿ ګ~,yH|g'>oϗK|'
+\N9`QЭ ת[1'*k1A~@8N;(#znŝ8~=7e|^B"1E֘o+GJi ɚm8IBaֵlEJ(֭T"Ol=69A?{]il8#uiֵTݵZi<V2[k]NYC9̞g }a>RWOjSC%_9ׅt8Zan~qX' ) LcnXMK`ܟy@
+~ >^3s+VGkfn^@S"aQxdfFT다D5^vdfF6'"eGkˆeg޾lH:1e;@0=$y kc*GƁ\x!;@Ϸ>6u
+pdgO%bf
+p
+ 3/m!ӎ_}yMb,'F?&F(xn}0~ 7Vv%UF(2TYߑK`۽ @~DW-I|h@򇍤,"wݾ2GO֩\
+p]Νvız=BT.
+*fٸ%r!*U+T ;\84l=iFU|:+lЫ@%5
+/JT]2pKvQT =P1ֺ󋎆 %q:\ድ 'oqlȕk
+CE,rpwP6)W6 }};_X?|9r((P 5ϻ7W4\iG
+ɧY͏`dG忂HNek&+n6 ?bx)Ur:Iނ+a) btJzm˴ןV'0o6tmow l7x4(mT;mnxD%Y`Q,MQ)qCvMq58Huqj6]<(*EFco9./.F{+)&B׻샎@nwk {R㘄TFmw~M
+ }( i24Eҍ{s
+p[ rjj/KdEۢ% ͗v&ç:Vqcd܂[٧1E}+>h(f*t4b4<\_R6xL>,wRN| 7VL61;h#w?Y*aV@ojXf)&f)KPA*
+wc,yR0=kuMt^s"z[5AцCD"ȋq_ED˔o:ʐ<?cvW&hL>Ĺ׍_O¦Ky+y6KH.ڱVn")q4[_Bɛh]Ps$7ɻhșۚK#&/z=eTfϫ"Cz`+ 6ף6.%N?2W9bs#P߂,;gZ<8ɞ8<r^=CB'>6[}`gzpA(&}%{ut!Vwޘ^C3lʊ=Tmsurg{VTS<ǭo"Hߧq{ȁyOxk{˜g4aJkpO/%,)gh
+ (h+N|IXI9Rs^OVt?5y-﷝rŽT'
+UTl*oZwrDj׭P;ĸ9ϻrr` 3ǹA`tg]Ö9Fc:l9EJe3L;Uae'3t{0ld#7gv%Qi?r1/
endstream
endobj
884 0 obj
-<< /Type /Page /Contents 885 0 R /Resources 883 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 860 0 R >>
+<< /Type /Page /Contents 885 0 R /Resources 883 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 866 0 R >>
endobj
886 0 obj
<< /D [ 884 0 R /XYZ 78.37 808.885 null ] >>
endobj
883 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F55 383 0 R /F67 389 0 R /F56 384 0 R /F29 375 0 R /F20 382 0 R /F23 379 0 R /F51 380 0 R >> /ProcSet [ /PDF /Text ] >>
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F16 386 0 R /F22 408 0 R /F20 380 0 R /F18 381 0 R /F23 652 0 R /F17 384 0 R /F25 379 0 R /F15 385 0 R /F56 388 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-889 0 obj
-<< /Filter /FlateDecode /Length 11642 >>
-stream
-x}M%7ݾ[vø9oQT hŸn{Հg8dfwﭪf
-(FB)H0y
-Ӱx@S3[zأ
-$l4RnKP˗zw))ڢ V=ꊟ-g+~c5ݽ?ʍ.͐j[|Qnyf\|ݢsoDmE}ۘ/ӝ٭qp:5>!󁼫eoя4~>ҧid5/R⼎L%lJKfQƎOh̋دv1\|u5v;Mx><5g_A)-:Sϗ8s^?6cؼ7cآ4<DDP+5o]@0.J%d;וZ\)Ҋw59fq&ƻ6@l1oҟg1u<_O
-Ɩ4[*D/?QͺgjuK]x'RRCp|ً޴郀cTA+=^cЋS4^kEc0B/(y^q! տОkKɻ?ky=E_]6L]|gֹeZ3-\a]uN<%NWc"񃮧wEIٛ^jlOJ{(xpg>xIkz}{hJ&F`䭩yO~HmPGÛM罸7w''ހMUZ7krź2<<ћ |֭öR m)%e&\oe{|MzaZE}U"8l&<Yl> ʭ$|h-CG[KSc\װ!&gk\YJqt\k[bmkխLW.kݺL(ݿm7co@m]hFo"J7ˊJ-&Уl"&7=яB]ˏXc-?pD)l頝*5ZzvhW7G:Y׻ie:.fPD- ev# g{dx/7yl똽%4ehdzRC@>|먱_M9ÏmO& 4>ld>ֲ߱P6O|J.w/~rs«_`Y)KC?d¸g率ͣ䟺^‹;gojQ-]i܂gw/ e%4sjJrytvI0][ e!xrmV^B6qneoZtC9?,fLO޴i nG]$Zᛖ>"^z % <MKFl{5Z(|–~BFX^.=ֲg5Zz5ԥϳoZB/Jb^ kf^7o*`( ǻir٢` u ߇녵Eݳ}^xoErpeGy- CP{[wD,&?SفRoem| F%R %; ,B(P`=ϭtGGYNS+R5Nl{o'-ͷ>LQbPqyNtm%E޺_.MVQV%-95P ݄ Lv
-Ն[]3UrK͟,I bwG-v3,q9րcJ[ͳǫڟJ°wp|S;+ cB6柯$Xy<,}+yo!ag]H
-œ'`ڣtWV3㦝Ag9>E(a;s&Ut9r'LSW._CǗz)pQ.߳u3%^r}WY?#]
-NZAx 3%ElQ|R;5?u{/&E* ޵+A\M=BjCw4iRTn֊!=R=/Nexփ"wgD-"ߙVyzнٗ"?S ;y11|KƮ+\4ٟtNG^Qiz> V^OiގGXsٛ^G[<]$;g{ٛ>,&/?{/{‡}tg>=뷕iî_|nOmeoZx)婽'71mƼ#'ZtKS<Ju&Mmel) G(jeχ7J ӳǏZKZQ&He-!Q71^P%|n%K4dXM)_Փ"ZNA<͐)ri X@³mq ԓߌ-g SILV uֲVኲCʠageN5w3V>AkW=l*v28SUWhRf2 BuUB>2wh ݣ@2j'ՙ"I>{Xtv`VEzg!y䔽|2hܭV5A6P\ NTnF]Ǧ`MLp6\E97#+ȩAQM.
-4vBW)*Tq<9 P&4?Y4 B ̩|V.zcG&U?QJ;Qgc!e؀&I&AH-WI[@~Q1;PLV ;0.ф 6Āfeа3@o Ճ2~Sҵ;9]{XK]M4m
->GZτ<Ҙ HeJ3o.zb!w]!tz&߽dh wJ}8<
-4˃;cyԩڑYa6( WeN5 x"fA[ prRb&e&F HꝔ#+~k
-4@N<e$ŊI&O./]^jQ2݀@@AIœRt?ЃVvwriF9c
-JMt Yw
-GF.~0mըNsڮ$d㽶9ko!V^g|d]1ɮ{)OsO<]@ͬŕR㔦D>V)sk79ˢ^f =r~,y@S5I W:XgcӎX
-4X`uͰN50FҘR*#$ 5 V ooԕ _
-4)AȮ\oFmrȘ#hV ;ku7 wKC֣< mhG ;=B2--?t]3?j7||h>bٍ~rf5[k<};kz]1G30@E Tm4ݛܸ_0A 6[[ pdqF5Ap`ԆۣG.%[Nhꇥ  ZUC)^%+qgUP?\%cnO$fW(=wo'3qynqWcv`a DobthԆۣGP:8!<2qpu̻)g,9ǰ:oyhx Kkg7 )z@TI3 i f7%8v!& aԥUP4A`ףG.ՙF
-Ħk:?iN Xـ#.T G#iJ=sڠ86)f axԥPP4A`ףGlx#:?
-<8s۽KؔΦ-_EڧԖ?2ns ]P? 6eh^HP_c;wIc+)\TP]#bȓX|n\wC #Lz=p/ƜMBl MD>%ŻXftGGU.W:V,VXJYTP(2n4?-B)i*]ȑyY4G8znp-*pW
-]~:}X`PjQsUxQ<VgįOfаWw
-IųN ՕSpHjf)#N(Ȳ^"B?P[!&nr+4٭-VR]n<Z|9V=p(i>T, H$|,*d,jLnl1ymqOti|9U:0FjQ.$
-Sޔ{ăIVńytqWcv`a"I:>/+u-G]6yG|Ǡ@"M@6#enH1UŰoy9p`Q@eb.St7L7ffv3;Ls
-t.uނIbce^o.ՙFlIN)N]`CXf"uST?o+#(jwe"H`R6(ζM`rSX!u9+6TM<?Jv)4MAVyڔdu 5uڧY Bc$%Nhj,G=0Fc?) +D Nϭ(g]Ԫei7pǷaXV^m
-UUmlʑg0Pz>v4żO(((TĕU00Dۑ<@j(ϛ.QQOyK/fe0nV&pwg[vy Ax%*|v>wwl&y klL P3)Q$P ;yg;R3+h!J)q1G_Nm= +7AT
-d
-Pʼ'hgmLM7o硬~6v:npzQ   qw;n4'1a0˞KRod:Z"FHsVڣ$Lf9~;C$`ZӂEɊz(z(($ĕ#awOS^Ѯ
-5Zg$GKAX4 F9JeIi70t
-x`.i֢y2F B\)SqDS3 ^\eS҂
-h 8ݺ-- l
- O=m޻)`ƒzTI1:=
- MPj胿zuÝ!G#9mMٛO謌AMq^A aN㝌z=0Cz swqaoڛ4&`]riu ^U ace^*p=_:C~;k/կ,S)ݓ.-(JQ,; 3zTa@ $r~~0swsN-nU?M1Mů^
-!Li`;hσ
-%jr*u,-P¬; 3zTa@ w^7:OX;V0F0wմ>թ :U!I4l<* !5y>>yM*Xݛ<5k澆j6`.AMz=J0DCnjvwwo8yO̾]='*)+h!ij ̆pH
-|awqa۲]tE`m$\rtaLwvyO RT0 NLU&zCvWyה3ez,λ~CgQ;&7!lJ-kS8<k
-^3Acn"+B~{T{ G|bΏh{dUA5PQU' X(>4t_'w!Yv (pbX$ll^Lsp1>
-A <P7*QQGI$|tt
-/>p{-g^mg!?y6;@&zTZ$-;ux,!#US֖{pEͤq>]vKJfV0L!iOȤRJ^F a
-lo
-#wZ#~uT'kE$
-/bԷ8z$ :E ۞VҥWs)Fz:K\ i+^vB*q ;kY
-};4.NW07E|0]_HL #ހP>7xL0%drA!NDWé0*4JR2H|h@g+5.]z?!%Zg)yd2K
-%P
-1PAg+"t$wJy9*ԭ0R|p0Ep RT"zibّ Y.|p=>9ĶÕ| #Ѝ ؞@Kq^EHL Y.v,5I
-Pj@bZWTy.ģZv+}NeiP+Q$ЪA) R̈́ ZyHb|}.x?vϾ>Y*}*ƱHn
-co?CpS|O}ɛi<}773_1A<7A/LP+s);k1ԐmϴcXﴓuN0E=,"?ϲME^x9lOwMxw5FP`&nV=7t]y^/0& ( a_aNuVZI ar9H QA2L0;Hi+5i>۽\HԾ!r &#d\arw3҆݋#>Ր~h)Ly!5Bo{%WuV7*{OhamX/C<k۽\<ݾ[O>zK(M~;pK~>gdzY9f~o~l̏d[iĸP3F Q#ν  ל=t8&l!U'ZbAhyW*M ڟ`;z4GGHٱL:צwq `A?5O6E v;VoIح Kرl>(73k˿7{܉jL;Q
+890 0 obj
+<< /Filter /FlateDecode /Length 6087 >>
+stream
+x]I%ׯxsa PH\j\7g t_%BRHCU.DbPJv.?~`+م_s Wb [ї?~l]>e[+`̥|7y#|ߥvjs}Zg8xߟa_6my_q?~*CrWKk
+ӳyqVR
+u8Xqn:@.<fog^3Mw tK ;%ygk{'Kw<
+XL\hEuRRGb7fRcgBm൴fYnLj["&6[kk?.+m%ik;<&'
+UTYBim^((ʯ)Bi}mdyMxr[%mm|.?uZq]T\V+Ϋj]YQ09ꟖԆ~*j$qY=mW^F6?MW+3<^ )z 1^S_"0YKjY"7|Q]L*ф{ݘ[7cVzṋt.-JO׍n0{z5]xbnl k5OIىeCٍ7޾l&9-{H|$y, Ό -:$m7/8ʝEI6mGx`rxt}+BnˇUpnws7NRCxYԽgx&.h[# #|ny}L[G"بV8 w,s*Xio0<@zN5n&+WҸ$q$qG$q?8Wk[^< `@pA/ܲ? G`SPm߰5،hHaNvǪ]ooFni;bL\/*~fff%(<)B6+h"x[\Χa5Z ?|p8n1wӜ3&MW`ͯIVY \
+%VJtSu:%U< )ӹS)5x CMlPq|5P42yӿQ}`|_}=lv,/*Bp?Z7ӵDE  '1-:P}{ši$xJ;oO1<]s5>S HTϬR5OlߩG)jXmCv,~/W]WOWe 8Uh:Nؤ]zfiYSVCA
+W
+>&,ieuDBơşeTi5߫,Q8cX'F)FyE ֤%Ҧ2"nsyخ%lK 9@Pc?Fn\` t Nn2$
+E*!AR;AZoZ5 %0o†%o?ɝ+l86F)o7w-Vw9U-F8-'Y~A1 ?29|qvQU h(>SӦLщWGo2L#'Q5xdĠd©<Ez1^S'|:h-lN
+W8Eb>F2"fy< |A,nQ%dp
+~*KރC_
+mNu#uc]+o*~݂/̼LԢ rHĒMEaq1PUiuӞ`
+dWKJv G}49H,S ]3KҬJEݯ^<3=M@Ⱥrv哽B#'@`!K{JPsDܓ4w4Ǯi{p@iV#*>f$d2n]xud "eLhCآe"`ٓYȊҼ
+LF3S%x$J8^7% fAc,J8^7޶)*p44r^WFaxĺr9tx d!+6>_{~
+>Qd2Y=Q>rG
+gHu&GV5  vcNj [ yzDԉd>UX Q45ϹeVDЯ ]p
+H0j1Ӕ+%DrpQB|7Z2<?^,_Jp3;<*olI
+ANH[Eoma`!z
+I\ > , xфmXCIU4O+G
+e4 S MBaW=^zd@O=Ua|6Cg
+Tvq:Κɋp`9,,{h#Ҋ䙺h8xر}423LZаH V姴_EjQC_ C*WI]%Qϸ
+|1 0UaBfujL ]f*0|V`PןHL }+aV_!0Waƾ"= 4S]%Qϸ
+V%L ]*aVW!0UaƮ"_2 !sd#|&xh6LRf$e: )=ϰp'XgGgRY >&Qr6 ^z3 K"LkpȾȺr/~.ap /jpG.A HAopŻoRewR>vy .'
+>/,B{JϠyʑbʑ&z]~>D/;vϗk}:ytcT4<1pxFֱ7^fx`Dh3GTpt$ KwM )>69sOz({+?n)H^zגv! kUTGF:&WaGumr)wNOW,seRm p
endstream
endobj
-888 0 obj
-<< /Type /Page /Contents 889 0 R /Resources 887 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 860 0 R >>
+889 0 obj
+<< /Type /Page /Contents 890 0 R /Resources 888 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 866 0 R /Annots 892 0 R >>
endobj
-890 0 obj
-<< /D [ 888 0 R /XYZ 78.37 808.885 null ] >>
+892 0 obj
+[ 887 0 R ]
+endobj
+887 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 258.666 67.03 269.123 78.65 ]/A << /S /GoTo /D (subsubsection.5.1.2) >> >>
+endobj
+891 0 obj
+<< /D [ 889 0 R /XYZ 78.37 808.885 null ] >>
endobj
345 0 obj
-<< /D [ 888 0 R /XYZ 79.37 639.272 null ] >>
+<< /D [ 889 0 R /XYZ 79.37 540.346 null ] >>
endobj
-887 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 384 0 R /F29 375 0 R /F23 379 0 R /F20 382 0 R /F51 380 0 R /F69 402 0 R /F15 381 0 R /F52 376 0 R /F42 378 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
+888 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F16 386 0 R /F22 408 0 R /F20 380 0 R /F18 381 0 R /F23 652 0 R /F17 384 0 R /F25 379 0 R /F68 406 0 R /F15 385 0 R /F56 388 0 R /F58 390 0 R /F19 383 0 R /F57 389 0 R /F55 387 0 R /F49 394 0 R /F48 395 0 R /F59 397 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+895 0 obj
+<< /Filter /FlateDecode /Length 5044 >>
+stream
+x]K$F~
+?l,P4 qhDh^~D\ՌBN.k@=/(eh&Щ(hmSuHE MAϟ\ C EKՅ$WEM~y]^
+4h򫵶̳͒9޼+he,D(\tD\\曆TU(6Vۋ_t Y8i6Y9cdi@BhA
+jz/~/ߦ\4Szn53#~: xaS6ėQkٮEi<,pLJ|a[܎ h꜔<*ZWu0yym4'CV^I]hh]UiyÒ fCǛho<F\wpy4$ (kzz1Mo<)4C뜮gΣѣbBKN{yUhѨ7U_Hq?s i9eLĀ1maB \eb1؏Ϊ;^.fd[5ɼU?rZ_O
+O=VkytUj+T9Ė~L)|xSDf]r
+!,ǧx!b^agm_|=5וj[(/q)}㐣^E9;brkՐR=sWT T\Gk#5cg7;Lw9hDWf iD3V|f͇5FaS }ak\W3^8v->^%7(X.لcڳ=%=l߷{SJ,Uذ1׹E7%2Wq=|{-v.Kĝ7deۮKEӴ}SKZrQ?dk~
+ctثY'PqXJӒ /Kr@&YW<3i1>4O~ԇh1$*),jF|k@3fP_/MP
+jq9?x2P>9Q})ɛ4pm]mK&%[ ٴhqaIrML$Tf_ _"=8*;@9A$'HU(9%Jz*c"HPҹ g
+Yˆ"He֕@h _.Sn d.0UgbO|(BjhZ¿_W4;[}L?ɪ,ϱߟ\a
+ ,
+`=(4nXQ4tzdYwI9/
+oB&b!țz{s؉Jn6u70~۰x-[mN'sg!XS5LUlUi}3Xhgs?1(?rY(Ɲ }2u?ns
+`as*4DsNPܭj=0,ҍpe;.O<a<(1l-2 23~zcͨ0.Cs#F^y$YEIwOP֭Vgp
+.灚2?A>
+)9ˤWm'5ƔR Um,SJ]8
+$nG
+0!Tc ;( vPF@JT%p;W$ *aq5JFAVx=BhwRV}jUEFZ=@Ƥ/]QoaaQ uF6H~S L%@xgi[-2$A%<,f{@0H
+/GeG"K7ڍ=,ZNDygEuJ8Tr|Sr:j-4e(㒍'Q3ƹK\v GF%O:dEY"Jw 6,F6uIԌqVɶi p)HHTIo4$WM:-as!6\&5 ^)(@(7ذ֍'Q3ƹ2ةP U
+Jm)!H(HTGJa'Q3ƹK\v ;FK:j*U
+jNkH delSgv\}Tv*[GIjUF崋N$$#%C0FƓ\o^3P_'˂{KF{Q4\HTw@%fQvl2Rm eW1; \v +.c8&uHjVlZkV;J&H1J`X#f1d"
+{vȓIl0Ůocٓi*ft#ύ+e:DIm[\<{ g1h
+vsߩ^1+KBXJ7tE\coqEݭ",(z1&r)!'ί{O'ޛd˱v'-"lC}]Vv}ܲgށtgrݺ7 Fu=#dM<X;ih1x>K`{ʝE;Ojh1xi@ס73ی>rmc}[W:|X@On>,`wAzlxtCcÆPУ
+5&Mx!Hd 8S/Hغ~yɒI/7<k6
+׾S8j5m04wnq>?ZuW~ |VB,7;qWnc=7&իE <
+endstream
+endobj
+894 0 obj
+<< /Type /Page /Contents 895 0 R /Resources 893 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 866 0 R >>
+endobj
+896 0 obj
+<< /D [ 894 0 R /XYZ 78.37 808.885 null ] >>
endobj
893 0 obj
-<< /Filter /FlateDecode /Length 2911 >>
-stream
-x\͎S%
-@@+,osB|G=amL:]3o(δp%7D;~Z$Hh
--Dk$-H(Pi hVQ!u#F%(-guS&fy\7C&^YE
-P挙N~O`++VdKG}b(fF{X/~`&g7p><FGIMufb<@@IW˕7be^`|V4$#vҺB Mb")w'B%̬FC-9P7UQWXNaũZ:K Y}bfWd :jh3Rywh!(ސԐ*:{\$ vRKlݳhJf)tޚDN&ΔI4-.Ɋo<1v0\m0i3LےlY{I&p?韪#pCpKabSp?vQg4cE)KƖf:Y-黯kj.ӑt<LkSB ҝc`$ykC8eZ߬Xi,uP2Q*M$Oq-c,SWd57R0t3y%-^9ȼΥNzT~(k3ʋPw͋TC!,|=v<" O6>Kԇe"0b>`4_]SB.:Ow"F^I:-v;oݵ>%ycs1u[[om"c;WqZ5qrV?՚dne]¼/5dM] :Lx!K5۵ TN⦕dV%kci[X֖Fhy~sʹaQ՞3y-܎}SnCJo}Vmh;Y?U.vI K_P?{g
-vl_S)c/唶<f5ʅZThǜ gfAL?{K14@z(~)c"ӿL]̯7La퇠i-~vrҡK@
-af831[@n$>L<yF
-01IzNy!ƥ%)cfN3O?G1(ܳM
-+n1\7%?]4L.̘nt-3ҪM#e&̼mMaf4F&I3oMqu0/AgmLOaZ 8[SpgX1 {ff$00)i6]PX I~uK ܥ8
-;[R͎ $ޱ\.,,en&\7f$sy+|OwXT/JoI<KeNR{]$޺x;Wpuq$޳6.^fGn3𬓿e;lb-0x/O{` ђ\vN󝲾f$=VvJϘ |N^딎3;Ǹ3i瑴Z6LTKf.+Auz$[rLf(e cbQ9i)G7In?nEafx7.gty~?VCwq" h"FüoNуx1
-=~%<7KJ!#EjyFWy<7=>^'hw>o%չv-1}cTa+):Taܜ\uo}lO3%TQBXb9M/7
-pi8āׄ9 ),ǒУȶ6迾6ކ
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 385 0 R /F55 387 0 R /F66 393 0 R /F56 388 0 R /F25 379 0 R /F16 386 0 R /F19 383 0 R /F17 384 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+899 0 obj
+<< /Filter /FlateDecode /Length 11610 >>
+stream
+x}K%7޾Yv89|?0*Uk
+o2m!dً>T_nO.|TC*E?b>!S5O.i+-^#̢G}loE佻Y(;^
+_אf#;F³0"+FZMxTZ>o#{b$Y j?dlKD*7ۅ .oBA-.2ZfU GQdӦEnj?e[PkvyQzW*:
+u{)n%_EfQLF)ĉ _A ˷9
+1k?^Zy9$;gSV׍N$6CݱCN
+ʍ6mߩ7jt%מ V QNNTr}rg9Cx^#Е|~(A |~$r5E c~ݥI}tWOA9ȟE/AP\@-}jFa,MHoO[L^Z;UxrfeFG`KQ'^N+GR u|΢8(:K~#Y~"tl#
+C>i]GiQxd ]]GiQxCn7]{Q.f]#b얣(X8 1`̺e|"MVFaQvmQP_h(m_^¢ٻ"
+#Bov:;8KF2,?][m^9 p,c{F0Զqc0- s٣GzQ]؛;TNI# j0=|o
+zk>syQ nx<RI(ͅ@X~?\ެa^kC
+u=ήxxћҿ6cBjk~HwJTH*K7j[!t8K^e`LI|as
+?<]rCLL;bȿpjr{{?I1]Wf8T'W:Ky]?,"bUO۳b;hwhq5na%m"y.3ߞ,_HPCs˩K֠IH/.|ɡ?ud=nǣjmDP'mVa,p
+v`Ɨ <%Ifހ,W*a0?0MA9Y%3Jq"`k ԕP<J# H9,H1zW9C";hVXi., ww ]J_A)OOD IF*xQ6$=UVH"ER1 s%~\JF$d )GpKzA t9g Si@sȁ9kf`R2+C>bejZ3~IJ
+Vv)=X+U̠  1E8Hk 3?/giaxAB?6n3 W
+`dnźfXXkΚ&*]> I1RWxHEuZdBQ+3BQ` s;+5',x|cE
+D[$7a%#OfG*ln^M\@/txY/4=(=V6㳅vb
+EB ީͶX(Z_|]Kb6b 9V**, D&XixG6@n}{(_tX$\xą2J#y4  WℲ6y3wJ~" O}bJ8Rƭl EAcY{RДz*'JPfHe'@+r ?YpM+6Yv@#,[)pN*Kh잇=u d=JLȤʹ/ʨeMւt3Vn))F۔84-ŵƮJ JZ@)dG衫*1@;PFL6)&9VU`
+ejZS'5z|"+aV6F'b>lÔY4Pf4['蘦|زiThS&SaD* _D5)س㵯dO8.l>-gV|U^Jm6yҤ3vV2 6Ǿ&D 4Լԯ[b`FUWl!KlRz Y" ouwBI(dlzO $tϽ8 e$[hMJY]ӄu5WIO$'W,T Hcߓu
+^jt\X4WJ`R*_zETW
+6Rh
+Vm݇e)p+-KWVWS,2Cf<B$09TO[ AWIR e݇:-ýH*r
+Wꄲ6y89C{ytx_zUh3aX…:<fY}XãȦ !òSG8ʸ= {Nɛ7x^nH
+e݇E|BGp eY8 Nl[ax!/"tW=蔉0bGl㖨^9PfTꞂ5㖰CT
+etDbDlC^7P=ǯS bODb:MZSNn,8&g&<eU$L);F6%$h%,A2פx ȁJԮpU(KPdtOgKTK0MvrZ!MF|Rp"5Xj>z|E b/Қj[Y!50xCeNTKQpOMlmA;PMᱝS@S  =<^*FQ
+bJI 6%am8PJ6) G|ͽi2 sBH)W3[z$AVS>Rc^%jS\xwKZ11 ɜ zLsz֫AvxfaM~ht@xR DZzL5DX|]mM\cEz$f% ƝKO x+f=.oܔqD>&#1;R:𰹉Rq s; Fͅߺ=W8"BY+ON*vi6+kS$R31Yc=@VD@X@D:(&|!!d߫y k17R:హܰRq s;s`Tid\'.G.Q<^5;%"B/^bIQ9(ti+E$INUj<uc13@1r,`g$Viab,|@):*tLp}X!TyF㙐)Cb# (DҔ* Ms200FLQA>I5-ix:ѣbLLHz~>gE7RäD:!tP)FJ5*B1VcԊQg-jTEr"L
+&9KNf!Z""- 3²Bi SƞHs> 30.٘9QX|@ !DBɉP#ԊqL1[Ø& "ZO5%6XHfB2aAAԚޚHsj>s0-٘yQrXl
+Ibx M^3Č}l
+̅pA'ʌY <ItTO:RNs/O,S9O#iV
+%q,glUp.h_LꞅI'NRWb‡/Gw\+kE:O}_(CaBO|*!\PBwb;2MrߡJ>L者bvZz1=E|B![L 5W)2ga' d8ux.'x :`v[ İj5!( mB>Q&W _.b{4 Mr&\w-ct£ջ#-<`}M$gSؤפJ`=4MZ3R>%X/Xcv(ȳn/A.̲PrV&eelZ=`a'I"{XܥlW Vĵ/Qןʰ葯8!glUp.(ℿJ= D7 ROS2FܟvrȖiAgLF>sյCF Xp WBZdaw &i >jHH[̸= s}% ~bijx?QdG o0N6V  $miY+ʄJ s Ij`_ۥ'IY܌ \IpS\( l]YTK6Y(Xr
+*{+0'a&I~Qm.bl2.7Aet06Pr
+*{ 0'a&M~<\KZb 4w @TӢZbH;, 9V ၢmʪ mdWB@їK9ahQ% +pƮG3ngWB |lU(΄Jp {f"I~IR>1 ffVv.,0$ %m,ت`b:Yc_.VL8AAx)'6 Ғ
+_KuM=Gkw7FM) 9V ၢMx 0'afmk\'"MdI@
+K gƙ7iNʘ0!ɀ[NJE\0"f#'\r%2~4~GLK)ӊ웴'eLOT/4 /YѰ=pI8\t%&dw ] J!-EvBo6Ɵ X̘#*?I82q$0)"+@BDz]HaeOjU_"戥07%KEVe(lrHDv_ |)^f Jִ+llk2CI -2|[1^JUB#M) )鲻d/UxCB5E(vӝ'e̔OX/L /YѰ=p:v#A Jx%%\x Zk`fxObNM,fLls݊P3q$18W &ES{엔
+%[,g(0+\`J ϜrBBAe
+?[1 䪩b$753QGV#(
+{>x$#tf)Lyd
+iGaB9VӬ
+!U"|ƀKM P˕B;"#SBE=PrV_ŞV/Ja d_UYcn:ê [ [B>
+Q?%<%mQIb7_LOX.m^Eq:Tmvُ4+-3BJ4p-4|IT;K93ա=Yn8컒k_ ]tS<JK'Bau3[Ob8lk}
+Lh@SOXwTEx;ڴgm5xݷJ\2I3i(S$ik=%/7/
+c[s੽yHV%*iV
+[B>!
+Q?%<%5熱D5yOI-x_fK}-W>
+_^7yk">+9h>c;"MN%EutॊO\MR(p[Tg]u쓩|O}-[{"C]qo5`Rw!?SܟHTߪπ|>jggZś#B NJi7gR3@K׳ۍԣS1cTB2kg]ȹ뵕\p|<fɀFn疩ݍ'6tOŗEuE6"DC"?Q?6\Qs Uk|<F͉VA|АaA3UT94r5hV^& |>bH|İ鈙*#fV3b#XcMV$r+"~Hh˧qZ2thL=&D( lUan6xLG x#Gc\%,$??ÿr2}4]Ϩ@/sN]g@sC7*N:\V$}Q2 \-Ue#e=j6os0gi@ʵs I§̗lϲC-w"8ZvoJa4`9\?ߨ%z*|5f<UoʕC?#{iPjz.|¿BQ>sq66 ǟaun1ytq;Kj {O|6mSWk?pXZ9}T?&|'j<Ď5am
+bLG<Uڗ0|ľ> _W6_µ//sJas 5"#?Q-q{Sֽn۾4{s-/yr7ʺ'!=@};4Gm]?O!TrO>x-g{o:ǑM`?Pߦe37sQꀐpQg8j/oc{!$cKŷ)N?l}Ń}k~+v+G{m\$9?hψ -dg{jңՙ-?Q0\t׾0>?WMeܸ˼N4䑂#B(}zd/7ײWMe4~αzC[qqݚ!\ *`2Gvz
endstream
endobj
-892 0 obj
-<< /Type /Page /Contents 893 0 R /Resources 891 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 860 0 R >>
+898 0 obj
+<< /Type /Page /Contents 899 0 R /Resources 897 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 866 0 R >>
endobj
-894 0 obj
-<< /D [ 892 0 R /XYZ 78.37 808.885 null ] >>
+900 0 obj
+<< /D [ 898 0 R /XYZ 78.37 808.885 null ] >>
endobj
349 0 obj
-<< /D [ 892 0 R /XYZ 79.37 771.024 null ] >>
-endobj
-891 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F69 402 0 R /F15 381 0 R /F56 384 0 R >> /ProcSet [ /PDF /Text ] >>
+<< /D [ 898 0 R /XYZ 79.37 663.183 null ] >>
endobj
897 0 obj
-<< /Filter /FlateDecode /Length 2041 >>
-stream
-xZˎ+'W.
-(@,#e=(dߦx?w㑓<f]uh~O$
-Ǜ8Ǥ9m238W?/Z l?imBqtoιp' q@ywNqD_~Şӓ>R7;?WyizZٰ%8$0'(f}+p [uw3)8 i"
-npEdzBRTڢV~Na%/~WdQ_:#`(49&n\7#G \I)׈䮖HI($Y %t\b8΅ bkCFlu~īPAF. nq]';C=#<7]9Z p[[_gƔO9X)Y,:c!0:7)Knqr&+P'=9W3>ϡ^
-
-%2gLlz0ˑV!֕ u8*<X tnD^y]UȰ/H|k$VyH俠[e sŽB[9ɸ_(}1Bh+lZ6%_+IF3c?=X6Y>㡹h!uۃ .Qeצ-xuYR sz8B$Z~KLOq)
-1<sZA\INc\zuW^W2 ʃ"gZW/d><9ιx<YпS,,檄3<JnH7iuTʒq^##ɵ] cm:qOp
-\0
-R~>ڷewMw4J ̂ϛ8J@"8Q鵊9>:cK03xZE:3^f)~"h&OTY"H$x%4-XU&x#l|轉rF3iU]X$UM5P}Iw %ݷz4Y?ܖq1+?XIRGk\BѰu
-+^Tn(&XK&2YrN7C퍰ґ0a O%:C0ZBVy;Bk_XfLoEWGwnTA(0POMr
-fǢw)wXEBzv,
-F6ed1SD;r> >I,Lۡ*j~~ ?;
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F56 388 0 R /F25 379 0 R /F19 383 0 R /F16 386 0 R /F17 384 0 R /F68 406 0 R /F15 385 0 R /F20 380 0 R /F21 382 0 R /F59 397 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+903 0 obj
+<< /Filter /FlateDecode /Length 2908 >>
+stream
+x\͒S*Tv=[6[*'WC/ytE֊"/>xݻqk-W$&뙴5q#/_ϹΥģ߭Ǘ ^WYZߌ\!Ǐ{6<* ouݻГgހQ+Pi JPo, !w
+τ?wls;}Neq*=Y[=kgWI&%/}
+<CҞ)ر}MOYSu+(~ԢB; LX=3 b/XY9C_?M非=m4g`~a
+k? OA󴰛]* pps >i7=><* GFCwIapzRnt;tCr;
+tj-iBly <)7=UDǵUcLc=*7KtLy28ƭ8>'F6տBbbejO!Mahša3")-p0patvͬ9}&a)Eah]7SRsII
+6r
+J{npֿƋ:]b;\ \9nh A?;],>~q{@h`XNjz4校>,\JXDZPi`;ٸv ikr*J;iwEgciV$6[I<K{-;a e${f<>{U(3I|N
+f3ռt6LfWx܉
+O naf83)$a^:qb$>NLpY8<ŌprV7)pݔ
+tu3 Z2cNuӵHW7l,3U7
+f&wHY75
+}FMüY3=ak1JHoULqfy`$3LQ56jwկ*Bq
+Ksv6;܃|fwxN|>rT:;q/϶cF~pQËbj0qbxGOM7?MaMrS(e2V&,=;K{u.;v3{ \.AvxȺx,³Nг~p㉿?e34FK^r9;o7?XE)=cc''%;;yS:sϬQ,nGZk39S-[FpFlAp1٢pۋ.Tg#ËGh $='I3
+Hх QLYʼnL|HUn&;9G90^3+|h/) 9YR_y|Wh{ķOs{,}Ta[,=R^Rn0ctPvRnmtps:N:sս=}ΔtRW~^bD aU)`:bïn
+ءBo~'ڋotK{%]´fL͂ $嚰Wwy<o1?[j07`Eqm/8
endstream
endobj
-896 0 obj
-<< /Type /Page /Contents 897 0 R /Resources 895 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 860 0 R >>
+902 0 obj
+<< /Type /Page /Contents 903 0 R /Resources 901 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 866 0 R >>
endobj
-898 0 obj
-<< /D [ 896 0 R /XYZ 78.37 808.885 null ] >>
+904 0 obj
+<< /D [ 902 0 R /XYZ 78.37 808.885 null ] >>
endobj
353 0 obj
-<< /D [ 896 0 R /XYZ 79.37 771.024 null ] >>
-endobj
-895 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F69 402 0 R /F15 381 0 R /F56 384 0 R /F67 389 0 R /F50 374 0 R /F55 383 0 R /F57 385 0 R >> /ProcSet [ /PDF /Text ] >>
+<< /D [ 902 0 R /XYZ 79.37 771.024 null ] >>
endobj
901 0 obj
-<< /Filter /FlateDecode /Length 2255 >>
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F68 406 0 R /F15 385 0 R /F56 388 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+907 0 obj
+<< /Filter /FlateDecode /Length 2209 >>
stream
-xn37SCrH Xi*fxsI.mT_/<~~Gw9|"qLA8翗?qo;suW
-6J=qqi?txDQ[gt"%=e3Lҵ9wIB \Ri pAT# k𵁟 `炄Ѩ;k4b-Z2j RPX r1K'AQ( g#աӣ |"GΝbFy*~ pu Dy `sv mLex?B% w;AY6~jf.-Z9('afz^0#$#%}s,zzl}chj/?,/8A=5%7_p_|Ί};$9&cV^Dߍic>hЪf;hG-/0iK5Y?Z㱥YΤÞ?ig|?u0} dfl}jݡR%dL5]_`jC%KB7u\mt,J+pX+΋5tl2ߕِ]GSOn3a}N,]'8_Lm`ADbJCg mnɜɍ8Lh t ccmˁRTMz1P
-Q?v)R \ׇ[jjK0'umd =U=ߠ06dS ̱] `0Jk.D2'}KA dVseTr=fXQYVh19N1
-Ro svj{s0_)+8쥞"eYr\xmT*G&܌HZB\q2E=lyV!y
--6vQd6q f5,`fsԆOtᅱYz6m܆hc  cm=Bɧ>nytae*`OޱL0#Zʕfᘰ'<̲Ia|q$%Rឩ}}[t>|9嶬?LK#I3upu+vQ҈{R\M|fXI1Ogj-ؿ͡',v ;B,H ]\$c)99Y#L;ެڎ'7/JrC<h,TimJtmʹ-6$+r~Q4h.?o!Bifly{lNڝ-aζ5*[B%\ҜSOL }]p?g}H94H$.͉}4cD T"# lbJMHnDz}F &ǑIL+9@9$~cw<2ؔ"?2 IrvY
-~݋f}۸5<6&tU<rr~`}F2c)Ӎ$hP&a}sev=i;
-> jj;Hyۖë݆@x-cIEfJn}Zapxum K;x 69>R`y1JB; ߷GA&wUwoA3j]-tA7VHM]f2XR[Y$vX)M}2Ep23[ҜǙBеFީ1t2,
+x[n$W @,tލj;L\rk(م '寋~^?~qtQ(4Z|?ȋ8/8C|}UJR⯷}(+M/lx&H䏻2/;VBӻ^PL&%\G ~GXlO'Êv&޷g;~)$Iݓ4(K8+[F~s_{d.DgZIv<`"hTepOý:))7,ykjVYeJ&ߌOAewU}F2“vWP@@f@]^֝koAKPK,$x!j,TCg+F:L'OA{ ^ϼb
+d `PŦ6:?<QsH;=|r"Ja@ <;쵁HhM)za9<gt@5[?1yvVU"*VP 
+[\@acIV9XϠR\J?>*%u9 MLeX=Jq=$٢52odmM6+->2؉Gф0;?'pXjѡ@#5s")!;P/P`N.AӋW͢1z,ت[o#`MRaԪ\^z`
+e6,m0;^W<<HIVhvL.1hޚ޷cM.O% ]׿_HNxEAQ2bPsn/#|+sGvmZ+#keҐ]0ڞN{]pRp&IZ-}3z V#О K%`j
+cIgK 'իqꃇ-Q^7YSœaȖӑerfvtftY-)/-P2\m͔ GR
+[%׵ĚBrXrG܇~f8@HGjy=Vh #qy} y< 1;v
+v\1=±.Cڇx#YބSk+oȿӆɃn6OuL[.%`⠧/
endstream
endobj
-900 0 obj
-<< /Type /Page /Contents 901 0 R /Resources 899 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 903 0 R >>
+906 0 obj
+<< /Type /Page /Contents 907 0 R /Resources 905 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 909 0 R >>
endobj
-902 0 obj
-<< /D [ 900 0 R /XYZ 78.37 808.885 null ] >>
+908 0 obj
+<< /D [ 906 0 R /XYZ 78.37 808.885 null ] >>
endobj
-899 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F69 402 0 R /F15 381 0 R /F56 384 0 R /F55 383 0 R >> /ProcSet [ /PDF /Text ] >>
+357 0 obj
+<< /D [ 906 0 R /XYZ 79.37 771.024 null ] >>
endobj
-906 0 obj
-<< /Filter /FlateDecode /Length 2376 >>
+905 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F68 406 0 R /F15 385 0 R /F56 388 0 R /F66 393 0 R /F54 378 0 R /F55 387 0 R /F57 389 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+912 0 obj
+<< /Filter /FlateDecode /Length 2147 >>
stream
-x[n#9SZ+ۓ`}R%U=lQGJї^o~|ϻcT /B(?_7]kCk+@k w<{[!_r'x^2UthG,ʚPŢ@LO+—wu{T r$]fi\9%MϷ Qyi2,[7p0ZI}VZeʹ+_ Ko<`Y>o=b[~^nY^"QBmX4! {5&f+_ Vs&k QP
-!Ђc;Y{Uo+,}AoNQѨ$g+:%4ˆٺ <A5=U|{ rmGysyv*2k92+tk񽊻|yy~Y=;K+m8cvq)(].R32H4/{ɤԲ#\[%
-dn5> |1:/9$Vy\[ֵKJuO4pqrj!jY]K /;j@O/uK)۵Z,j"wr}җj,ֹdD;NaZ5 8L m.<-OGC難 lL2{j~Uv 8{^UWBj݀8V@^IX!lt!
-dCXg%t片#7
-f"{|.>[ЌVoȝy'[F|ַ׮É_Bnt )VdÙHRf}JJx5fur3ZT>|a"#ET@fsDI%<!OxxgvH@ht Ɓ
-5ywwrc ! lorWwmapWV!u|2Ɋ?Vi= M<֩MעP/KrvS}ȅ%Dvug}H
-r"jrq !Q20BVY/Bm"LR1gf50ʹ? &{!J곈
-&í8 \}L_E8 jzL;*_
-C‡M7G2v2bFqfB\I >R+&h~0Q* TFa.`B'Zp;n~z?H*
-I =h@R3ȝ+A(O'CT g͓Zz6#lqdxyf* WaWBv~tX0>;]n߉]}Xd9($xzNnF³XF^Ȕ{0Rp4fO 4Lp/idCq~DhgϠ0*"Ij'angBj%C׎ĕ|?9;eؤRv7=pg=<he7#?3JϾjAҢm{B4qgAw(6{TA)5tPVߵX
-[aƳ Y./ٷOԀPhA-<WjqN~^\E??ڿpe)]h4.pPU
+xZˎ+'SB3lUR@_²ݗUs?^d~*wEyQvJHT/ޤRw)͍~_R"Oh~5vZŏN;(#!KOx'_e&c|-^ɧ%f!*̉h+ŸB⊢RA8F8a"f5k2K<KK5#w'b־ե`Y]c8:zNZ}O8
+HLQ--fd[}`U"+d
+S]"yZc⇮r㣾*gla]3Hj|'R#nkxp]G+ILT3^H*;S' uuМ%L!ʟ&y~,Ӯ4EEI?y4J(ќy 'b6+tښ?e@?Q3;V{w<'W\]ڭ͖_zLkpZH5y`iZfK3_):w3gX a\-FVEqKݫ":+z&\SGV(j6(4fz"\cI
+^K:rpk(LՇQɼeqӼ:2,P4ЌY.[It+ ukOAj\p\FAc<D>KXRp^^
+R@.s˜oȩ|J%̀}UWp׏'mk`<$oO` K=SbU&n)bY
+ڋ+0HsYn9 @/ig'QZx5шd\zal\S&8#AuEo,hw =i0?RW`"Q%G{[A}/'Y'9UPad,=PWvZ6vza)FS,g|u83$G|94Drܦ^kOz6>l/  z\1y$>9uxн
+p)w[KXlfi4HVbY&n8eʺ+ibeliLM;-X<݌gq#wq{M}twL6mk43r Ӎ!OF*``ה8Z-bs 0†gjzz};0]08`'rC êPfAw_޷@5An wcCQc"fXc@X۲j?j<u|RlY4HC <h-&2ؾTyMn7QbWJՆ/qe,y<v3qBvcqGey7T]DӾ/ئ}}Aw_lzTמ7p2=_τ
+홋ć6ocq}xOy(o  p6c˚1R*lL*ݨ2%|L~,BO]R'o8omޟD. AI #ڬ5ZZf
+^4i1f.(Ajkޑ`mv@${EūǢf')=;$;IWf"7(ď69pK!>њJ@d&~wo|7J0B3R@woMAp֏'fvs]@22*HaAP:aJ}VOg:NNmDiؓ#̓
+NI @f͸ճؑUM3}N[b{'ŠX[nir+DCF5Q<1P.O\#[$ԒF'ĖvZ"L+u8deޒLz\x oP+k ?
endstream
endobj
-905 0 obj
-<< /Type /Page /Contents 906 0 R /Resources 904 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 903 0 R >>
-endobj
-907 0 obj
-<< /D [ 905 0 R /XYZ 78.37 808.885 null ] >>
+911 0 obj
+<< /Type /Page /Contents 912 0 R /Resources 910 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 909 0 R >>
endobj
-904 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F69 402 0 R /F15 381 0 R /F56 384 0 R /F55 383 0 R >> /ProcSet [ /PDF /Text ] >>
+913 0 obj
+<< /D [ 911 0 R /XYZ 78.37 808.885 null ] >>
endobj
910 0 obj
-<< /Filter /FlateDecode /Length 2649 >>
-stream
-x[9+&|/MVv473S.@fίrO߾Mo7q3-?pss5|GH{ x)G>oh ѷQ"nFKO43{˿A2
-usir"L E?#7GEgp(.J%IDcys&D̕MO'
-eA_|J0x0Ju % Y1͉p&
-G)C5BqOwz
-޹eC93\RW{rf? rVyX|#JVJ#5OvzR Փ2d`2%Ȉf@pdlߗ)egc&;v.YkvV* +E[hj-XAMꘄm2w%xbZT= D*MqtPE7szSr3Pm{}
-VdgyNm΀tGC$>`۩c
-tP ЃIeiA: NDwoke!eَ0KKa?Eʼdi7mZPuo<Kb7ãFSyLWLZ,Uxb %
-#ˆ[Q[ eyN9O'sjFJ'X_``mYgI:d-ymR ;dLD`gpɕ )n{047`T>nF#)ǔ>41m<jatGy4^#RAUPF͙5Q;>j ۼ }byʁVR^6PFfUsvwP+iG.4{[@qaꨜEf{;Pb"u8ٻ><r f8o5 LQ۬Y=¡l
-DS
-G: pǬ+MkN4W)#;|FU !·q[}4
-.cN>|ԣr'󣛐 O۳H]׉K?U>2[UvYb=u_ur%7u: `
-k{uJWS 3 6I
-Cr ar}ĶSAW=.l0\2;#ߙ6x{k|d}EU! u?hMn7@.x߻raK2$8K?#X;Pt/$,ȿ-ُTUaJv@B. ly6"Pt!?!2SfR8hoQC|cHZѣY.?rCz3olwΫlB3ñVN_†Y`rY0e*f:^uS'Ap"-AEj:Mw.Α#3o翏8a5.+q[]%Oδ!JJ6({FTK[dH5ȾS~?^_
-4Ds7=jfa!N%E*wБqH fnА4qWFggkԦiڤyzB]Jl7ۘN7Z]Y1_o
-endstream
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F68 406 0 R /F15 385 0 R /F56 388 0 R /F55 387 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-909 0 obj
-<< /Type /Page /Contents 910 0 R /Resources 908 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 903 0 R >>
+916 0 obj
+<< /Filter /FlateDecode /Length 2276 >>
+stream
+x[n$)S 4AdYruGڳo& T&Uvk|(L/
+ =]\&' _]eztß0$Me 7z:ˏ:YkduqqVg-pJw-fg4Yd 6w]`X6eNLLZX=3:f+k؝H%0*A'Нqb5ޓATUCY+Fd1St'M$a$>kz&5]м~.9sEd}CN"y#o>O:S"Y4qOnR,Țb8[`5I/rWb{5z鈇K9uÒ|RJeY_^Ih(fJ]BֆN,jv$f@X=rwME)B~Hwd!d}~%+'jZ^%:PhK\"p,CNo mP6gxG ѯ`IB zʋ)0$elN )[:jqQ\M>+H+ҵ$b?
+ McK3M8b;wqK.'X ` ڭ }*3i _=^VfkA /I☉By(-{rE{h #n/40E
+;F!6L˸!P̮]I(NtbHnku絰N5 ֪uM4:hi7"8L
+JOn]6F-jm-7WwpSȦ殷<*.;$d
+מb`SPqK)@?W!T|Q84!,s%4/5ǩCn7:ʫ5LyK&>˛WBp;#v'\-քYϮ} +˺BI Ѵ=*B",ؼYY3QOm"RLOtz ԑV2":&lhdh3x9&(X=<Axxk&f(Q]C<X@7yw}焥~ݭn* [kśA4IjK_h ݊d$"[)[x[p! e|a)mWۆcoiW/vy&}N‚zRFes0[S`ꞁZsBBhP^gv1k ҩ~B^ZW>=e
+g\~jrB*SGz(*=o\u
+0`@ M4a͚{{iK6mL)SmFcw"5{KwA\TmmCWKEr t#Cn%gG'"Sύ-%R8U0{ > ߽ie{x$7fgZ)@uam
+endstream
endobj
-911 0 obj
-<< /D [ 909 0 R /XYZ 78.37 808.885 null ] >>
+915 0 obj
+<< /Type /Page /Contents 916 0 R /Resources 914 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 909 0 R >>
endobj
-908 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F69 402 0 R /F15 381 0 R /F56 384 0 R /F55 383 0 R /F23 379 0 R >> /ProcSet [ /PDF /Text ] >>
+917 0 obj
+<< /D [ 915 0 R /XYZ 78.37 808.885 null ] >>
endobj
914 0 obj
-<< /Filter /FlateDecode /Length 2517 >>
-stream
-x[n$9WF (pVVgs>_%*6\ ۑ!;)Y?OnJ`rS􍼩 BJHno.%JRR~v&7</w/YࣾdHQyNX{zJYT&1DI)s "X!JảjŹ^3왩E]bI"f#M^3EQr|¹>تKO(] _hXH.p@n]#j
-Y*+uҀ'l|ZČ^TD=mq$?F"Ogf[ГѲ9Tӛa_&C"R!LOFŭ-/,۬FFV;NJnL~'A S.>IJ6AyRuC(Y5UDbF6B(F.sF(ϓ[
-X8P*DQ5O `~MJ,q.u?ðih6}sMFōև@ːJtœwJ
-IᯭA
-\(DƆOp(dz[RzNʝIg)S']+A>-ۑ]?EhERR#
-G8Q:"(л->`q71 R+Xl5sETm
- og5#E6b-@7z:4cj?6R ZsYkԳr"V>Vh:nwINTúF+
-2(L0]ܭwdK{6<g'1*M}8@ -_u4aT~{%['WƦ0 ӍkC(GpO!iϜ 
-\pz|<@QK
-}e:XӽWmru6EbwᵑT[Gxv銒[l^_Q),`׭A
-i;<$e~i<PCLDJ*fYuN *J߻9%GluAA@:3Dk+G5Zf.[hm_%Zzr i Ã?wHkJ T ~b(?߾ 7
-
-endstream
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F68 406 0 R /F15 385 0 R /F56 388 0 R /F55 387 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-913 0 obj
-<< /Type /Page /Contents 914 0 R /Resources 912 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 903 0 R >>
+920 0 obj
+<< /Filter /FlateDecode /Length 2279 >>
+stream
+xn:_h>+;̹oΜ*Rb$@,־2C=)%17n.t7gV)MJ|H~I> ןL\K5vڞŏ~˝X[
+@;Կ2tbw<3pK
+<p09ZN]2IA3U;0*~U![E "o*Z]!օkuK52YP FiCTps)+lժ+3ctt&k#eO0\=D_&= G{F͉wqJF7p;;uM_?Y#RESZ9*zmHs-HX4pf6EHήM9rUx\zc"=@Nv.E 0(RaI ,718HASx ͐xN-p&pIDb$9͉-T
+ߟ4Gn40ށR6S%z^ĤWºP2p.JdZ3z;H+Hخt)gh/ UAXL) u8͉H
+iNv}UCG) ]1qeR0TO { /e1 8OBa׉m.RYTk;0<$<Q^`xɤi~"ڎTB)ԽH<6_oKǭV~ƝKΪN;=uE${Ҏs߭~'s!{ҔG.s灹.!0o1&i
+K]&֔ȇ7T. 4(+2oq4{hs%j ˾K%$Pkzb)UjPc©V¸?
+D`GENzŠ RِFg'~~v`'g#ziB <?*bZݔaeouwVU
+Cg%uv#&Gj}:=<w!?u1jH! 5 z-Hƌ>$hisf[r8
+,Q^ b0*Cо <yj\
+H1L2z;@$ΤNM2*?vZ~
+oI{wzG]Q &" k6h(1)A^X!t?G6֒NTR{aqw[F|’NP&-ݪ
+endstream
endobj
-915 0 obj
-<< /D [ 913 0 R /XYZ 78.37 808.885 null ] >>
+919 0 obj
+<< /Type /Page /Contents 920 0 R /Resources 918 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 909 0 R >>
endobj
-912 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F69 402 0 R /F15 381 0 R /F56 384 0 R /F55 383 0 R /F57 385 0 R /F65 387 0 R >> /ProcSet [ /PDF /Text ] >>
+921 0 obj
+<< /D [ 919 0 R /XYZ 78.37 808.885 null ] >>
endobj
918 0 obj
-<< /Filter /FlateDecode /Length 2440 >>
-stream
-x[n, S E
-+}4ZR Nw?iWKs"(կ#V[70j
-KX%cC,N6'@~D;~kLU);:c䱑=?J@)P9SCKq}U90w\f:y<Lr'2 ',)E6i8 Xo+M XB-M.ڻh82#m~{
-qu]AؠY'cXd֡(Y5+>WiήfX{t8J\z
-jPUzKTlLBs;bX(u9M~PNoVqN3`g*#
-|!_
-m6s\g"%xJF%R+quimJ}%֑%Vmzg)Ew_5mQ~OhFAu'C𬨨uVQNm}-N|¸1DPB/*]7
-濴ǡJPSK:N42 ' Z̢V XtڸN;):XJ<ey8)+u>̓
-l|LɗGHɖ][Sl++ALa zGpO>x'3M</EGV oc}1)tm B!OvSb2BBn9"[WZ~npO#;$"Wb
-E.1cmzF)/T _Xrsr.w j%5h+PN&*r\e+g|6--B2 Nfiu?s7 8Ӝ:
-feb聿q=e&M]p ù( op;oyUwO
-ճ;+ 5'h06~VsmO%٭:QܵђF>(̾[ <>`+.(gW\NǍ08lt'01(V :kH@8,,a@2T{0gfV+0ӼBw(~{m?<)Nh;C3OEھ;U!`yZ+nn</pֹe鄖dM<s E[5ւ֌M<z&6)j,U}5nъ͠5ewt EPS.z`|0Ju+剖y`e5m>{8NggiQqI#; Y \o? tHyvxZa27jS)ox5B?11\~CA
-
-endstream
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F68 406 0 R /F15 385 0 R /F56 388 0 R /F55 387 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-917 0 obj
-<< /Type /Page /Contents 918 0 R /Resources 916 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 903 0 R >>
+924 0 obj
+<< /Filter /FlateDecode /Length 2265 >>
+stream
+x[Ko#9q0Z^@@n/s0U8i NU"/&?]^ke/o%Q/H R]JCJ+@JGȿKkC펑ViF_ p^-}9sۿYF/^x6D$)rED҉k"^7;GMmh*%JJ6жv9V@?SﴰH-A͚]
+0&KO9G{@cf%WFJ~"PG3'U[MV1ٿ#%ωRiWYnt6ƕ /`j5"do#;-% |' ge" z4˱%)+pVWפoxa1$#͠[k=kˍէ_I/+*[6,/E45*m׍VL)
+VFʘAU] [;3jftuʊDja>\S=
+Y-^]o&f0oǮ7{qg mCaol*pp-0ƒB,*t[*tTc3׮
+70j\Ӟ_s+qR1z(B'@_ ]8W?/>)h(nez3`,p3)G7MCY3,I
+`08zU!|kZtom=~CŒ6Ԩ~odhCUsYO)y.5a
+ZDf'
+Qmό=_7clэR%M-/#d\67[5 ē_u0~\rP!;
+endstream
endobj
-919 0 obj
-<< /D [ 917 0 R /XYZ 78.37 808.885 null ] >>
+923 0 obj
+<< /Type /Page /Contents 924 0 R /Resources 922 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 909 0 R >>
endobj
-916 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F69 402 0 R /F15 381 0 R /F56 384 0 R /F67 389 0 R /F55 383 0 R >> /ProcSet [ /PDF /Text ] >>
+925 0 obj
+<< /D [ 923 0 R /XYZ 78.37 808.885 null ] >>
endobj
922 0 obj
-<< /Filter /FlateDecode /Length 3281 >>
-stream
-x5WL&/`0Zc2é ~bUH b|7녿 Ow^`N)a^~7EǤy1Z0ˏsƹ|\|޾J
-I{ 6V?7-)ԍ5V[~oo7Qǜ 3%l&QHL$o+#'4vӖD-5dD^! Z9 pq
-%W*gfڮvA3GZG<$&?1*f!F0Nӣ
-5p]YK/ψxqͪlib_aV9WX;8kCđi&Q{]xl=|b._HG"[t DX jJDWRa#QVŠIA{ ‰qNQ^'f-A ܾJ^%&BoĻn0 5aQ/5hQWFjL;~^
-ݛ
-E^+ϛGSF
-NWk82M/xL%x"C.N*MBÞ>ӎ}
-qg5vGwG,5ZǞȍ*EӶ[V``ݚ.q%7mE&kx=j$>mݷz]e3ÓDž 43u[b&̐ *b=Rkx,䎒.Zz 9˶[ߡlPO
-vV"Uq).vU^J~ l!m߄taMXDfsOt2blE^Yo=N"hזIRt,ZAzFfη-dY+<E <R VhRpЄZ1%BS>̹~!4BSeWVG#I% Gqq,6 6Ȝ:zLb,sƯ@+ոE?i쨅5M5Ն!uՊG E.cn74pӳ̒ x|U
-8dԸQ|w>1a_涷mcXSXN:3}ѶpΌOb[4?,gB~r|m#%yk#I “g}k'`Y;a*sƿrYڏy Oy~$|Fd1${K \e Jr-Tq[ Sy8X+E1ϓr{ߙA(7+ⓣ)soy~x#5kfq*# 73DV_ZP 5[8EH-L]hҌRvB)^FqL
-߶h \[)ضV6[HvoS%1b_,G5u|#5bXoW>sQdɏSI%Vq [ں˪,^Uyw &W.\L^'LydBd"g>kt+< Bh0%3ꯥW:xV]Bjɜ&Z^q/ؿ;`j6{ ,nG&6
-a;?.LVqiFr$1\JELwvzR1d >GKF0K
-g3Eݭx׎Q][O HC٣7Q4 y!z} .De8Æ⢷f{}q5GO€Oz{7r6p 5ũlK`f`Ϛw95QI 3g,Ǐ/
-endstream
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F68 406 0 R /F15 385 0 R /F56 388 0 R /F19 383 0 R /F55 387 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-921 0 obj
-<< /Type /Page /Contents 922 0 R /Resources 920 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 903 0 R >>
+928 0 obj
+<< /Filter /FlateDecode /Length 1441 >>
+stream
+xYˎ6 WF(]Ϯ]%,9g0nFۢ×/p˻ UV_/E_|T_
+|s
+?
+6z??~gݴD:Q@Yjd3
+Үyu{5
+\wyx/mqv\x/4*j3,v'q2P8j̤ٙ #cz%_'a"Fpr$_BtrQX6k<4褑~wNhZTǕh2sVׅ>oJwXc(s (ꢐcd)O`_̠92BMF>I`GI'Id )
+~Vp|g,4{1v'&bv;Yl)OY%9b(򺔣H%2h)k$jc-=5Ok^Wn KXe[*´QC +)y*9mҺ+l'?)Cڗ^j
+ Fy
+~9QCN~Ԃ0dl-Xzyrj[=0 L'9[C=Ǩ7n\UJ~{~$JNS6X'yvfvFNGaj/AHK0qt4z
+(OvZC
+ĩGTydȒci)XVhUFӜP9 >Q7gIPDZ=N])"۱f[ZN0~l9вL dD2'Hҗ^$ό"EO4|xb"ȰƂᘡUSƊ yk@0KBlC&h'=]hr)JzWOK3Qz
+endstream
endobj
-923 0 obj
-<< /D [ 921 0 R /XYZ 78.37 808.885 null ] >>
+927 0 obj
+<< /Type /Page /Contents 928 0 R /Resources 926 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 909 0 R >>
endobj
-920 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F69 402 0 R /F15 381 0 R /F56 384 0 R /F55 383 0 R /F67 389 0 R /F57 385 0 R /F23 379 0 R >> /ProcSet [ /PDF /Text ] >>
+929 0 obj
+<< /D [ 927 0 R /XYZ 78.37 808.885 null ] >>
endobj
926 0 obj
-<< /Filter /FlateDecode /Length 2570 >>
-stream
-xɎ>_0Mw`4:oA)Fr;wq)D%[94["w?^d~~Et?/
-_E->
-N-,"Z_Z7ғw)n}O]y_Ͽ"0Dj2FœV
-;n΃+Q$ZgNy^YO Q=oM.̸TRqae*4W
-3 0HyVhH5Gў5˽oj~^*VZGzB}&r5')vn4 _Ꝿe7ە{MB-^_Rr„t,cxxVY͹7mB+h:Fn5m0F!7fQ?f&[?y5w j.yF
-)khj$-r۬w0n?r5
-&p.^ElPg ub sDZGT@Gǜ69*rijj2AG}$oH
- 7A
-6DJᐟ6E)9s}l"݌|]zO]0o&5=k>sYgMu1ra{kEtk!M+{?#Q 20 ,ʠpˉ`86Wfh> 𭭟p̓
-MZyPҨ8oWfo·TEmkɯfY7(!Mv
-+//ϯD7?/Ҿ-zg/c,VRQF =控ǍW7Ji6c13٬ ~^jk}|:RD]iRM
-]RG ݵ 63M嫪<;*V?$=&¡'6r U/
-endstream
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F68 406 0 R /F15 385 0 R /F56 388 0 R /F57 389 0 R /F64 391 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-925 0 obj
-<< /Type /Page /Contents 926 0 R /Resources 924 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 903 0 R >>
+1047 0 obj
+<< /Filter /FlateDecode /Length 3256 >>
+stream
+x\K# ϯXDR/`@{z &RRIWUݞnHȏeyMMv~wS$ ~7Mݬho!%)R"Hi?Y1)}0TRh&w3)S3LxCot`PSIBHX3Q?H=~8#0gʏJ
+ 1("VB+(2&S'onz~b؂rZ
+fsmNW
+ck~=`|nghQDz_GFjpGCibkqO/svpn\xcq4u,^3(wo1uΫARC50HrϤ",Bnb[-V9KAʵ"i=Zemi>rV8.p:cl !wl&rhLj)e^/`tViYΖ4$1]W"8Ja.5^+9D}Ǿ8N:3֜./a F=2 BE]m(C n\xw
+gUfX^I#,>o8.\ В80rD+(Ngk*= kK47ʐQYfu 3R|n#T #ERZD`bt&}:jk.:;Z0$IDg*FDfsi%O1YBiTՑl0(AT{[8tlfu줃\ jTZmCjsaݕY1_؈)SNŋ|-| >QGK{JG*u+iŃ \A-Թ$ ozULphesw7Po|Cuo} =(LcvT:keec?fee_hwE
+.Oh;;i/u0T7#:J\js;!5 JQa
+اRˬav.ac3Ӄ|ۤRlI ΜEȨ-`D{}oSMCRaOyA&b-R3^
+d
+*!A qA}/VeJwY;C! gZ`BUGVq`WZ)s'Aouv87wt
+GwgE]7 W~Oo{%Q/-vWL;:0T$Kߕ@!# < cFJ!\>{]_d(8g~& f:{._y{0W=rnǎ5ext^aM%U^N-(j~)}OyXm&#n\QsLlNztmZ
+endstream
endobj
-927 0 obj
-<< /D [ 925 0 R /XYZ 78.37 808.885 null ] >>
+1046 0 obj
+<< /Type /Page /Contents 1047 0 R /Resources 1045 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 909 0 R /Annots 1049 0 R >>
endobj
-924 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F56 384 0 R /F55 383 0 R /F69 402 0 R /F58 386 0 R /F45 390 0 R /F40 391 0 R /F59 393 0 R >> /ProcSet [ /PDF /Text ] >>
+1049 0 obj
+[ 930 0 R 931 0 R 932 0 R 933 0 R 934 0 R 935 0 R 936 0 R 937 0 R 938 0 R 939 0 R 940 0 R 941 0 R 942 0 R 943 0 R 944 0 R 945 0 R 946 0 R 947 0 R 948 0 R 949 0 R 950 0 R 951 0 R 952 0 R 953 0 R 954 0 R 955 0 R 956 0 R 957 0 R 958 0 R 959 0 R 960 0 R 961 0 R 962 0 R 963 0 R 964 0 R 965 0 R 966 0 R 967 0 R 968 0 R 969 0 R 970 0 R 971 0 R 972 0 R 973 0 R 974 0 R 975 0 R 976 0 R 977 0 R 978 0 R 979 0 R 980 0 R 981 0 R 982 0 R 983 0 R 984 0 R 985 0 R 986 0 R 987 0 R 988 0 R 989 0 R 990 0 R 991 0 R 992 0 R 993 0 R 994 0 R 995 0 R 996 0 R 997 0 R 998 0 R 999 0 R 1000 0 R 1001 0 R 1002 0 R 1003 0 R 1004 0 R 1005 0 R 1006 0 R 1007 0 R 1008 0 R 1009 0 R 1010 0 R 1011 0 R 1012 0 R 1013 0 R 1014 0 R 1015 0 R 1016 0 R 1017 0 R 1018 0 R 1019 0 R 1020 0 R 1021 0 R 1022 0 R 1023 0 R 1024 0 R 1025 0 R 1026 0 R 1027 0 R 1028 0 R 1029 0 R 1030 0 R 1031 0 R 1032 0 R 1033 0 R 1034 0 R 1035 0 R 1036 0 R 1037 0 R 1038 0 R 1039 0 R 1040 0 R 1041 0 R ]
endobj
930 0 obj
-<< /Filter /FlateDecode /Length 4275 >>
-stream
-x\K$ ϯ}hE`#Ef`l< ~%JCcE~(RE\'Y^?>E)U~_wJHwRW){) tr&
-_^Z[{q21_cr8 Wי]_~=Et̆zF
-g 2. ׄt޽\QcꕾkF__s/sMLdq'!-#Dy2DlI*E:بdSe&n~+'},up\ˇO f(/T|)1?o@n$g$2` 4'%qio
-%Oedʡ+iyo[^I{_pni^8niFo%=oT%JVƹ^H1hQ* u{TVRUϿBz5$ibT @J &zH*pױe<9=fcSԫ<ھZEVܳ V(8ӌƻy0+}SZ:𵅖~h!RW6O8<+*`Y
-(#׳yNߧ]:ɝB;u
-uwḍ2 "b0q܎E@ FV{:p4e̩I\ʺoekK`ݽ.\p>V?lwxb`qh}
-')u+6 d(Բ"BB(Xɉ k;c
-F̩E"YȾNue>.%>Kv-?YL]X
-%;0vcx(Ρ'r+ݼaQϽzV]q^Z|CȒ]ǭyѮLGevj+GSH0ImB6q3qz[W6VNaY>}j1^B0E;ҋ֘8r[ ?SBcu2+[NrL4(L{u.EA& pful;'P,6i~MZteXZ]o݌3ExFރ3,-7O[N-; "jEFVfMFv
-Tur餔i8y}c0fAL9N=rn$46Bϙ/!͡L_'|O3uyaځ\t/
-7켿box
-N0Sn3-CPJ@Ptxt$@I@c|;OT3ƲjT eoXjryZҞ]LFW. 殥t&]χd]{^Z׉s*UIۮ?1ֵk#yIqmP/*`yhV%\slJdIkMJ_LM;ص&7e& cETǭr¦\g7}Y7[@1jXZk8<Fr1i6;;T&凌tCi>jmadMjRu&sP`E{^s\%N쨩:r/ BI-*5gLGW1L;VG6YQˀG'#=;RFH@ͳeըԎ^Eq)
-Q.5cjbaLKd]Pok'Yx?{ڿ蹳Bz"Oii/T"|lpbBk}.jD~蕽* heE5N`)ͦ^T %EfOVhoau{mUj [nswJ;Z؆\UT:ܥ"&.G`3ʾʃPi rU-jK0 ,痈p% v JItw*/&U?ض6Ĺ܆n{I=DV#[LkנlCvJ!Y} Ŗk#czW@K5T7]/nqј)}poXwg}<ݾj#Zl[݌ ]UY]/h+l5 ?K~)?İ3=
-@הΜhv.5+^2#x~Uz<7UNhI-}tۻĥ/*-xT^*Ry@A^\j(c_ﱺ0K'DP\13^l]uvtUQcOEn<+O!
-KdRᐼ7N6vKz,uzg
-XN֩uNJB?]ްyceɗ&qjGzn<=CXÆίPi͏)$@4-j~h)13URŪ)ն9W5@<[E*#]p[-/s&z=
-endstream
-endobj
-929 0 obj
-<< /Type /Page /Contents 930 0 R /Resources 928 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 903 0 R >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 134.055 681.88 141.029 692.928 ]/A << /S /GoTo /D (page.9) >> >>
endobj
931 0 obj
-<< /D [ 929 0 R /XYZ 78.37 808.885 null ] >>
-endobj
-928 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F69 402 0 R /F15 381 0 R /F56 384 0 R /F55 383 0 R /F29 375 0 R /F23 379 0 R /F52 376 0 R /F73 932 0 R /F58 386 0 R /F45 390 0 R /F40 391 0 R /F59 393 0 R /F46 392 0 R >> /ProcSet [ /PDF /Text ] >>
-endobj
-935 0 obj
-<< /Filter /FlateDecode /Length 1129 >>
-stream
-xXn8 +P$Aqjuku4ʒ,Y^LP,q}|  ߞ ?6 Z`v'-O`Ѓ V`g
-N,e )ʠ{Y]=)cZ],N$TvLV\;Zbl l}"Xf&o9; $ҌʈœWɳoäAEoS`h#'XA^K<)R
--Hӏgȸ 83>jZ)DZ'IxY|ļΣ!;5|u5.I;i<#xL2 Ao6al L)6m/abe1-Z|fd3*JX6¾_0^m^٠UѰ1JAͅ^ҒLMQO99><^eFbh<1bd 3 \ ۜ:|WoL/#VKl(><3ehbk{~W]N J};O))\VEJ+ #/ ,ㅁ+@E裡e^ dv/|! ~sVa9嵵SǓ*!)?uVW:uPFU gJSn'չy]x/r@h.^_vr[z2u᱀ M~;Dpc=O9~*:X/3j0]ח8|,|<o}E
-endstream
-endobj
-934 0 obj
-<< /Type /Page /Contents 935 0 R /Resources 933 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 903 0 R >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 173.716 648.583 180.69 659.422 ]/A << /S /GoTo /D (page.9) >> >>
endobj
-936 0 obj
-<< /D [ 934 0 R /XYZ 78.37 808.885 null ] >>
+932 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 268.68 636.07 280.635 648.025 ]/A << /S /GoTo /D (page.18) >> >>
endobj
933 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F69 402 0 R /F15 381 0 R /F56 384 0 R /F55 383 0 R >> /ProcSet [ /PDF /Text ] >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 162.917 624.334 174.872 635.512 ]/A << /S /GoTo /D (page.11) >> >>
endobj
-1060 0 obj
-<< /Filter /FlateDecode /Length 3301 >>
-stream
-x\͒#)S QjoĞӾu$$2={]?I˷ɷ|?6)-P[x/>o͡ƾۿJ|H w)tۿRND`H+хh)w)?oGMJϻ23JK
-l`svI%ݹ(a&#o][IKSphEp5<>0RqxJhMl6]Q`vԍy.k;qb'Q(i"g]wzYU#my'ytnQG1}'٨MPB.51<
-3BbB/2Z͉ Э$wQmjؖ<*efLL(3!Yo%>'BdIJ5ž D&喝GycW9m۴{A`Z'QikX1ŝNs3v2z T3RJXS9}3uG9O_ZmQn_G`dLJy
-Z+q} }./e8
-ht\o3"ظs32>asBVvWI)~+ǫѫi`ָBB5Wel*pگ "pn Dr>7EˁS}r>l^FY hZ-xKӏsb,^3imij4<[*+H"RB m7_g*bN
-4؇-EKMo%g)hfy'FNy23M;2YkԸ
-|ZB*kNC2@
-oZ14=Z5r:(as+ AF
-^X -쯛_2Jv3P<f\ h볧b 5+m׭u[0-vhpFtTGKRϞse)NKL?`53YnUtg!|P KhSf<7sDpqɖ*\EKb%a$Fs1Gq*{UG1
-T#gtұ֪k=A;TH}Қ+|5y:ipB丹Wpf{a|ϦC:c'A<؄zǭ9t e2=zrFfV(9+JG;Fi _!I'R,ԷioK2w>{J挰!0,0bj<گOU
-Val҃rm+u@=ߔioJ̦:qPFNWcvF؞;Xdiv+cHVQEn5%,|؈X5xIB!9ߋN1h8齮wTPSQ-r 2i2(5
-$
-9):d aij e.:Lm5&ؿ0H螏
-0?gB{;3=v;4N.MHl=WIWoa;xMx԰wW"~-牨He4IjUHo<>@TBN^N)on̛D@l~:닚h=~`!^eМе
-endstream
+934 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 162.917 612.379 174.872 623.557 ]/A << /S /GoTo /D (page.11) >> >>
endobj
-1059 0 obj
-<< /Type /Page /Contents 1060 0 R /Resources 1058 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 903 0 R /Annots 1062 0 R >>
+935 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 229.268 588.249 241.442 600.204 ]/A << /S /GoTo /D (page.64) >> >>
endobj
-1062 0 obj
-[ 937 0 R 938 0 R 939 0 R 940 0 R 941 0 R 942 0 R 943 0 R 944 0 R 945 0 R 946 0 R 947 0 R 948 0 R 949 0 R 950 0 R 951 0 R 952 0 R 953 0 R 954 0 R 955 0 R 956 0 R 957 0 R 958 0 R 959 0 R 960 0 R 961 0 R 962 0 R 963 0 R 964 0 R 965 0 R 966 0 R 967 0 R 968 0 R 969 0 R 970 0 R 971 0 R 972 0 R 973 0 R 974 0 R 975 0 R 976 0 R 977 0 R 978 0 R 979 0 R 980 0 R 981 0 R 982 0 R 983 0 R 984 0 R 985 0 R 986 0 R 987 0 R 988 0 R 989 0 R 990 0 R 991 0 R 992 0 R 993 0 R 994 0 R 995 0 R 996 0 R 997 0 R 998 0 R 999 0 R 1000 0 R 1001 0 R 1002 0 R 1003 0 R 1004 0 R 1005 0 R 1006 0 R 1007 0 R 1008 0 R 1009 0 R 1010 0 R 1011 0 R 1012 0 R 1013 0 R 1014 0 R 1015 0 R 1016 0 R 1017 0 R 1018 0 R 1019 0 R 1020 0 R 1021 0 R 1022 0 R 1023 0 R 1024 0 R 1025 0 R 1026 0 R 1027 0 R 1028 0 R 1029 0 R 1030 0 R 1031 0 R 1032 0 R 1033 0 R 1034 0 R 1035 0 R 1036 0 R 1037 0 R 1038 0 R 1039 0 R 1040 0 R 1041 0 R 1042 0 R 1043 0 R 1044 0 R 1045 0 R 1046 0 R 1047 0 R 1048 0 R 1049 0 R 1050 0 R 1051 0 R 1052 0 R 1053 0 R 1054 0 R 1055 0 R ]
+936 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 230.384 576.294 242.339 588.249 ]/A << /S /GoTo /D (page.25) >> >>
endobj
937 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 268.68 693.267 280.635 705.222 ]/A << /S /GoTo /D (page.17) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 162.917 564.907 174.872 575.736 ]/A << /S /GoTo /D (page.48) >> >>
endobj
938 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 162.917 681.531 174.872 692.709 ]/A << /S /GoTo /D (page.10) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 230.972 531.052 237.946 543.007 ]/A << /S /GoTo /D (page.3) >> >>
endobj
939 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 162.917 669.576 174.872 680.754 ]/A << /S /GoTo /D (page.10) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 168.147 519.665 180.102 530.494 ]/A << /S /GoTo /D (page.48) >> >>
endobj
940 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 229.268 645.446 241.442 657.402 ]/A << /S /GoTo /D (page.63) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 168.147 507.71 180.102 518.539 ]/A << /S /GoTo /D (page.48) >> >>
endobj
941 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 230.384 633.491 242.339 645.446 ]/A << /S /GoTo /D (page.24) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 162.678 495.187 174.633 507.142 ]/A << /S /GoTo /D (page.34) >> >>
endobj
942 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 162.917 622.104 174.872 632.933 ]/A << /S /GoTo /D (page.47) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 115.843 483.799 122.817 494.629 ]/A << /S /GoTo /D (page.4) >> >>
endobj
943 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 230.972 599.618 237.946 611.573 ]/A << /S /GoTo /D (page.3) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 194.987 471.844 201.96 482.674 ]/A << /S /GoTo /D (page.4) >> >>
endobj
944 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 168.147 588.231 180.102 599.06 ]/A << /S /GoTo /D (page.47) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 204.949 471.844 216.904 482.674 ]/A << /S /GoTo /D (page.10) >> >>
endobj
945 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 168.147 576.276 180.102 587.105 ]/A << /S /GoTo /D (page.47) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 191.041 447.366 202.997 459.321 ]/A << /S /GoTo /D (page.24) >> >>
endobj
946 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 162.678 563.753 174.633 575.708 ]/A << /S /GoTo /D (page.33) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 167.739 435.411 179.694 447.366 ]/A << /S /GoTo /D (page.11) >> >>
endobj
947 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 115.843 552.366 122.817 563.195 ]/A << /S /GoTo /D (page.4) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 188.74 423.456 195.714 435.411 ]/A << /S /GoTo /D (page.5) >> >>
endobj
948 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 194.987 540.41 201.96 551.24 ]/A << /S /GoTo /D (page.4) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 220.481 411.5 232.436 423.456 ]/A << /S /GoTo /D (page.43) >> >>
endobj
949 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 204.949 540.41 211.923 551.24 ]/A << /S /GoTo /D (page.9) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 206.414 378.771 218.369 389.671 ]/A << /S /GoTo /D (page.41) >> >>
endobj
950 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 191.041 515.932 202.997 527.887 ]/A << /S /GoTo /D (page.23) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 224.964 366.258 236.919 378.214 ]/A << /S /GoTo /D (page.41) >> >>
endobj
951 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 167.739 503.977 179.694 515.932 ]/A << /S /GoTo /D (page.10) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 144.795 354.861 156.75 365.701 ]/A << /S /GoTo /D (page.41) >> >>
endobj
952 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 188.74 492.022 195.714 503.977 ]/A << /S /GoTo /D (page.5) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 230.613 342.348 242.568 354.303 ]/A << /S /GoTo /D (page.14) >> >>
endobj
953 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 220.481 480.067 232.436 492.022 ]/A << /S /GoTo /D (page.42) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 115.843 330.961 127.799 341.79 ]/A << /S /GoTo /D (page.29) >> >>
endobj
954 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 206.414 458.707 218.369 469.606 ]/A << /S /GoTo /D (page.39) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 147.226 319.006 159.181 329.835 ]/A << /S /GoTo /D (page.16) >> >>
endobj
955 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 224.964 446.194 236.919 458.149 ]/A << /S /GoTo /D (page.39) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 184.406 307.04 191.38 317.88 ]/A << /S /GoTo /D (page.2) >> >>
endobj
956 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 144.795 434.796 156.75 445.636 ]/A << /S /GoTo /D (page.39) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 195.475 307.04 207.43 317.88 ]/A << /S /GoTo /D (page.24) >> >>
endobj
957 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 230.613 422.283 242.568 434.239 ]/A << /S /GoTo /D (page.14) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 153.183 295.085 160.157 305.925 ]/A << /S /GoTo /D (page.2) >> >>
endobj
958 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 115.843 410.896 127.799 421.725 ]/A << /S /GoTo /D (page.28) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 164.252 295.085 176.207 305.925 ]/A << /S /GoTo /D (page.24) >> >>
endobj
959 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 147.226 398.941 159.181 409.77 ]/A << /S /GoTo /D (page.15) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 166.972 283.13 173.946 293.969 ]/A << /S /GoTo /D (page.2) >> >>
endobj
960 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 184.406 386.976 191.38 397.815 ]/A << /S /GoTo /D (page.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 178.04 283.13 189.995 293.969 ]/A << /S /GoTo /D (page.24) >> >>
endobj
961 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 195.475 386.976 207.43 397.815 ]/A << /S /GoTo /D (page.23) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 192.984 259.23 204.939 270.059 ]/A << /S /GoTo /D (page.22) >> >>
endobj
962 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 153.183 375.021 160.157 385.86 ]/A << /S /GoTo /D (page.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 218.648 247.275 230.603 258.214 ]/A << /S /GoTo /D (page.18) >> >>
endobj
963 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 164.252 375.021 176.207 385.86 ]/A << /S /GoTo /D (page.23) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 166.055 234.752 173.029 246.707 ]/A << /S /GoTo /D (page.2) >> >>
endobj
964 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 166.972 363.065 173.946 373.905 ]/A << /S /GoTo /D (page.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 233.871 210.841 245.826 222.796 ]/A << /S /GoTo /D (page.18) >> >>
endobj
965 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 178.04 363.065 189.995 373.905 ]/A << /S /GoTo /D (page.23) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 249.921 210.841 262.095 222.796 ]/A << /S /GoTo /D (page.70) >> >>
endobj
966 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 192.984 339.165 204.939 349.994 ]/A << /S /GoTo /D (page.21) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 201.761 198.886 213.716 210.841 ]/A << /S /GoTo /D (page.11) >> >>
endobj
967 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 218.648 327.21 230.603 338.149 ]/A << /S /GoTo /D (page.17) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 196.81 186.931 208.765 198.886 ]/A << /S /GoTo /D (page.37) >> >>
endobj
968 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 166.055 314.687 173.029 326.642 ]/A << /S /GoTo /D (page.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 127.659 175.544 139.614 186.483 ]/A << /S /GoTo /D (page.35) >> >>
endobj
969 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 233.871 290.776 245.826 302.732 ]/A << /S /GoTo /D (page.17) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 205.457 151.514 217.413 162.572 ]/A << /S /GoTo /D (page.18) >> >>
endobj
970 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 249.921 290.776 262.095 302.732 ]/A << /S /GoTo /D (page.69) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 180.87 139.559 192.825 150.617 ]/A << /S /GoTo /D (page.43) >> >>
endobj
971 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 201.761 278.821 213.716 290.776 ]/A << /S /GoTo /D (page.10) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 155.415 127.723 167.37 138.662 ]/A << /S /GoTo /D (page.28) >> >>
endobj
972 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 196.81 266.866 208.765 278.821 ]/A << /S /GoTo /D (page.36) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 159.041 115.758 170.997 126.707 ]/A << /S /GoTo /D (page.28) >> >>
endobj
973 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 127.659 255.479 139.614 266.418 ]/A << /S /GoTo /D (page.34) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 175.091 115.758 187.266 126.707 ]/A << /S /GoTo /D (page.47) >> >>
endobj
974 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 205.457 231.449 217.413 242.507 ]/A << /S /GoTo /D (page.17) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 191.36 115.758 203.535 126.707 ]/A << /S /GoTo /D (page.62) >> >>
endobj
975 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 180.87 219.494 192.825 230.552 ]/A << /S /GoTo /D (page.42) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 153.721 103.803 165.677 114.752 ]/A << /S /GoTo /D (page.28) >> >>
endobj
976 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 155.415 207.658 167.37 218.597 ]/A << /S /GoTo /D (page.27) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 169.771 103.803 181.946 114.752 ]/A << /S /GoTo /D (page.47) >> >>
endobj
977 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 159.041 195.693 170.997 206.642 ]/A << /S /GoTo /D (page.27) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 186.04 103.803 198.215 114.752 ]/A << /S /GoTo /D (page.61) >> >>
endobj
978 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 175.091 195.693 187.266 206.642 ]/A << /S /GoTo /D (page.46) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 202.847 103.803 215.021 114.752 ]/A << /S /GoTo /D (page.62) >> >>
endobj
979 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 191.36 195.693 203.535 206.642 ]/A << /S /GoTo /D (page.61) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 157.348 91.847 169.303 102.796 ]/A << /S /GoTo /D (page.28) >> >>
endobj
980 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 153.721 183.738 165.677 194.687 ]/A << /S /GoTo /D (page.27) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 173.398 91.847 185.572 102.796 ]/A << /S /GoTo /D (page.47) >> >>
endobj
981 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 169.771 183.738 181.946 194.687 ]/A << /S /GoTo /D (page.46) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 136.765 79.902 148.72 90.732 ]/A << /S /GoTo /D (page.35) >> >>
endobj
982 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 186.04 183.738 198.215 194.687 ]/A << /S /GoTo /D (page.60) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 151.709 79.902 163.664 90.732 ]/A << /S /GoTo /D (page.40) >> >>
endobj
983 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 202.847 183.738 215.021 194.687 ]/A << /S /GoTo /D (page.61) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 167.759 79.902 179.933 90.732 ]/A << /S /GoTo /D (page.69) >> >>
endobj
984 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 157.348 171.783 169.303 182.732 ]/A << /S /GoTo /D (page.27) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 176.456 67.598 188.411 78.776 ]/A << /S /GoTo /D (page.18) >> >>
endobj
985 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 173.398 171.783 185.572 182.732 ]/A << /S /GoTo /D (page.46) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 192.506 67.598 204.68 78.776 ]/A << /S /GoTo /D (page.68) >> >>
endobj
986 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 136.765 159.838 148.72 170.667 ]/A << /S /GoTo /D (page.34) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 207.779 67.598 219.953 78.776 ]/A << /S /GoTo /D (page.70) >> >>
endobj
987 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 151.709 159.838 163.664 170.667 ]/A << /S /GoTo /D (page.39) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 471.167 681.88 483.122 692.819 ]/A << /S /GoTo /D (page.49) >> >>
endobj
988 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 167.759 159.838 179.933 170.667 ]/A << /S /GoTo /D (page.68) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 430.141 669.805 442.096 680.864 ]/A << /S /GoTo /D (page.33) >> >>
endobj
989 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 176.456 147.534 188.411 158.712 ]/A << /S /GoTo /D (page.17) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 388.348 657.85 395.321 668.908 ]/A << /S /GoTo /D (page.5) >> >>
endobj
990 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 192.506 147.534 204.68 158.712 ]/A << /S /GoTo /D (page.67) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 489.498 645.895 501.453 656.953 ]/A << /S /GoTo /D (page.39) >> >>
endobj
991 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 207.779 147.534 219.953 158.712 ]/A << /S /GoTo /D (page.69) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 404.039 633.71 415.994 644.998 ]/A << /S /GoTo /D (page.24) >> >>
endobj
992 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 247.918 123.972 259.873 134.911 ]/A << /S /GoTo /D (page.48) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 416.233 621.984 428.188 633.043 ]/A << /S /GoTo /D (page.15) >> >>
endobj
993 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 206.892 111.897 218.847 122.956 ]/A << /S /GoTo /D (page.32) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 357.055 610.149 369.01 620.978 ]/A << /S /GoTo /D (page.22) >> >>
endobj
994 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 165.099 99.942 172.073 111.001 ]/A << /S /GoTo /D (page.5) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 373.105 610.149 385.279 620.978 ]/A << /S /GoTo /D (page.67) >> >>
endobj
995 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 266.249 87.987 278.205 99.045 ]/A << /S /GoTo /D (page.38) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 384.114 597.626 396.069 609.581 ]/A << /S /GoTo /D (page.17) >> >>
endobj
996 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 180.79 75.803 192.745 87.09 ]/A << /S /GoTo /D (page.23) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 374.45 574.283 386.405 585.222 ]/A << /S /GoTo /D (page.17) >> >>
endobj
997 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 416.233 693.715 428.188 704.774 ]/A << /S /GoTo /D (page.14) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 467.262 562.328 479.217 573.267 ]/A << /S /GoTo /D (page.49) >> >>
endobj
998 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 357.055 681.88 369.01 692.709 ]/A << /S /GoTo /D (page.21) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 376.701 550.373 388.656 561.312 ]/A << /S /GoTo /D (page.11) >> >>
endobj
999 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 373.105 681.88 385.279 692.709 ]/A << /S /GoTo /D (page.66) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 488.711 537.85 500.666 549.805 ]/A << /S /GoTo /D (page.20) >> >>
endobj
1000 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 384.114 669.357 396.069 681.312 ]/A << /S /GoTo /D (page.16) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 341.473 504.475 353.429 513.103 ]/A << /S /GoTo /D (page.22) >> >>
endobj
1001 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 374.45 646.014 386.405 656.953 ]/A << /S /GoTo /D (page.16) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 441.897 490.597 453.852 501.536 ]/A << /S /GoTo /D (page.18) >> >>
endobj
1002 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 467.262 634.059 479.217 644.998 ]/A << /S /GoTo /D (page.48) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 457.947 490.597 470.121 501.536 ]/A << /S /GoTo /D (page.58) >> >>
endobj
1003 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 376.701 622.104 388.656 633.043 ]/A << /S /GoTo /D (page.10) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 490.345 478.074 502.3 490.029 ]/A << /S /GoTo /D (page.47) >> >>
endobj
1004 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 488.711 609.581 500.666 621.536 ]/A << /S /GoTo /D (page.19) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 371.421 466.687 383.376 477.516 ]/A << /S /GoTo /D (page.24) >> >>
endobj
1005 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 341.473 576.206 353.429 584.834 ]/A << /S /GoTo /D (page.21) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 449.439 454.164 461.394 466.119 ]/A << /S /GoTo /D (page.14) >> >>
endobj
1006 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 441.897 562.328 453.852 573.267 ]/A << /S /GoTo /D (page.17) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 447.048 442.209 459.003 454.164 ]/A << /S /GoTo /D (page.13) >> >>
endobj
1007 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 457.947 562.328 470.121 573.267 ]/A << /S /GoTo /D (page.57) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 463.097 442.209 475.272 454.164 ]/A << /S /GoTo /D (page.21) >> >>
endobj
1008 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 490.345 549.805 502.3 561.76 ]/A << /S /GoTo /D (page.45) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 374.161 418.866 381.135 429.805 ]/A << /S /GoTo /D (page.5) >> >>
endobj
1009 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 371.421 538.418 383.376 549.247 ]/A << /S /GoTo /D (page.23) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 382.779 406.911 394.734 417.85 ]/A << /S /GoTo /D (page.45) >> >>
endobj
1010 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 449.439 525.895 461.394 537.85 ]/A << /S /GoTo /D (page.14) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 410.206 394.388 422.161 406.343 ]/A << /S /GoTo /D (page.13) >> >>
endobj
1011 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 447.048 513.94 459.003 525.895 ]/A << /S /GoTo /D (page.12) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 426.255 394.388 438.43 406.343 ]/A << /S /GoTo /D (page.70) >> >>
endobj
1012 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 463.097 513.94 475.272 525.895 ]/A << /S /GoTo /D (page.20) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 483.747 382.433 495.703 394.388 ]/A << /S /GoTo /D (page.53) >> >>
endobj
1013 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 374.161 490.597 381.135 501.536 ]/A << /S /GoTo /D (page.5) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 501.669 382.433 513.843 394.388 ]/A << /S /GoTo /D (page.68) >> >>
endobj
1014 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 382.779 478.642 394.734 489.581 ]/A << /S /GoTo /D (page.44) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 341.473 372.749 353.648 381.596 ]/A << /S /GoTo /D (page.69) >> >>
endobj
1015 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 410.206 466.119 422.161 478.074 ]/A << /S /GoTo /D (page.12) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 387.511 359.09 399.466 369.92 ]/A << /S /GoTo /D (page.52) >> >>
endobj
1016 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 426.255 466.119 438.43 478.074 ]/A << /S /GoTo /D (page.69) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 386.126 347.006 398.081 357.965 ]/A << /S /GoTo /D (page.52) >> >>
endobj
1017 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 483.747 454.164 495.703 466.119 ]/A << /S /GoTo /D (page.52) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 399.934 335.18 411.889 346.009 ]/A << /S /GoTo /D (page.52) >> >>
endobj
1018 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 501.669 454.164 513.843 466.119 ]/A << /S /GoTo /D (page.67) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 415.984 335.18 428.158 346.009 ]/A << /S /GoTo /D (page.68) >> >>
endobj
1019 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 341.473 444.48 353.648 453.327 ]/A << /S /GoTo /D (page.68) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 461.334 322.657 473.508 334.612 ]/A << /S /GoTo /D (page.55) >> >>
endobj
1020 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 387.511 430.821 399.466 441.651 ]/A << /S /GoTo /D (page.51) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 357.573 311.27 369.528 322.099 ]/A << /S /GoTo /D (page.14) >> >>
endobj
1021 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 386.126 418.737 398.081 429.696 ]/A << /S /GoTo /D (page.51) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 372.517 311.27 384.472 322.099 ]/A << /S /GoTo /D (page.17) >> >>
endobj
1022 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 399.934 406.911 411.889 417.74 ]/A << /S /GoTo /D (page.51) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 339.092 277.397 352.542 288.226 ]/A << /S /GoTo /D (page.29) >> >>
endobj
1023 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 415.984 406.911 428.158 417.74 ]/A << /S /GoTo /D (page.67) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 356.637 277.397 368.592 288.226 ]/A << /S /GoTo /D (page.56) >> >>
endobj
1024 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 461.334 394.388 473.508 406.343 ]/A << /S /GoTo /D (page.54) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 372.686 277.397 384.861 288.226 ]/A << /S /GoTo /D (page.61) >> >>
endobj
1025 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 357.573 383.001 369.528 393.83 ]/A << /S /GoTo /D (page.14) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 494.141 264.874 506.096 276.829 ]/A << /S /GoTo /D (page.21) >> >>
endobj
1026 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 372.517 383.001 384.472 393.83 ]/A << /S /GoTo /D (page.16) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 450.046 240.963 462.001 252.918 ]/A << /S /GoTo /D (page.49) >> >>
endobj
1027 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 339.092 361.669 352.542 372.498 ]/A << /S /GoTo /D (page.28) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 442.823 229.008 454.779 240.963 ]/A << /S /GoTo /D (page.37) >> >>
endobj
1028 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 356.637 361.669 368.592 372.498 ]/A << /S /GoTo /D (page.55) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 389.354 217.053 401.309 229.008 ]/A << /S /GoTo /D (page.64) >> >>
endobj
1029 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 372.686 361.669 384.861 372.498 ]/A << /S /GoTo /D (page.60) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 426.036 205.656 437.991 216.495 ]/A << /S /GoTo /D (page.34) >> >>
endobj
1030 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 494.141 349.146 506.096 361.101 ]/A << /S /GoTo /D (page.20) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 468.925 193.143 480.881 205.098 ]/A << /S /GoTo /D (page.43) >> >>
endobj
1031 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 450.046 325.236 462.001 337.191 ]/A << /S /GoTo /D (page.48) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 349.553 181.397 361.508 192.585 ]/A << /S /GoTo /D (page.14) >> >>
endobj
1032 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 442.823 313.28 454.779 325.236 ]/A << /S /GoTo /D (page.36) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 369.06 169.8 381.015 180.63 ]/A << /S /GoTo /D (page.29) >> >>
endobj
1033 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 389.354 301.325 401.309 313.28 ]/A << /S /GoTo /D (page.63) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 384.004 169.8 395.959 180.63 ]/A << /S /GoTo /D (page.34) >> >>
endobj
1034 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 426.036 289.928 437.991 300.767 ]/A << /S /GoTo /D (page.33) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 400.054 169.8 412.228 180.63 ]/A << /S /GoTo /D (page.61) >> >>
endobj
1035 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 468.925 277.415 480.881 289.37 ]/A << /S /GoTo /D (page.42) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 435.61 157.277 447.566 169.232 ]/A << /S /GoTo /D (page.16) >> >>
endobj
1036 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 349.553 265.669 361.508 276.857 ]/A << /S /GoTo /D (page.13) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 400.831 145.322 407.805 157.277 ]/A << /S /GoTo /D (page.5) >> >>
endobj
1037 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 369.06 254.072 381.015 264.902 ]/A << /S /GoTo /D (page.28) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 411.899 145.322 424.074 157.277 ]/A << /S /GoTo /D (page.67) >> >>
endobj
1038 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 384.004 254.072 395.959 264.902 ]/A << /S /GoTo /D (page.33) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 448.452 111.449 460.407 123.404 ]/A << /S /GoTo /D (page.40) >> >>
endobj
1039 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 400.054 254.072 412.228 264.902 ]/A << /S /GoTo /D (page.60) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 487.456 99.494 499.411 111.449 ]/A << /S /GoTo /D (page.49) >> >>
endobj
1040 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 435.61 241.549 447.566 253.505 ]/A << /S /GoTo /D (page.15) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 414.201 75.583 426.156 87.539 ]/A << /S /GoTo /D (page.41) >> >>
endobj
1041 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 400.831 229.594 407.805 241.549 ]/A << /S /GoTo /D (page.5) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 430.25 75.583 442.425 87.539 ]/A << /S /GoTo /D (page.60) >> >>
endobj
-1042 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 411.899 229.594 424.074 241.549 ]/A << /S /GoTo /D (page.66) >> >>
-endobj
-1043 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 448.452 208.263 460.407 220.218 ]/A << /S /GoTo /D (page.39) >> >>
+1048 0 obj
+<< /D [ 1046 0 R /XYZ 78.37 808.885 null ] >>
endobj
-1044 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 487.456 196.307 499.411 208.263 ]/A << /S /GoTo /D (page.48) >> >>
+361 0 obj
+<< /D [ 1046 0 R /XYZ 79.37 706.717 null ] >>
endobj
1045 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 414.201 172.397 426.156 184.352 ]/A << /S /GoTo /D (page.40) >> >>
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F68 406 0 R /F65 392 0 R /F15 385 0 R /F56 388 0 R /F57 389 0 R /F55 387 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-1046 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 430.25 172.397 442.425 184.352 ]/A << /S /GoTo /D (page.58) >> >>
+1151 0 obj
+<< /Filter /FlateDecode /Length 3225 >>
+stream
+x\I W Ue*gR&\Av758{,i K}㷿}׷?B<F7YϔY#7?ɹM:y3>}^sc Y˷J)|GjT7o |ǦW~ﱽOBGi.{
+?5;ʦL6sP f}V3絲/_(+MY&twj|-73eO޷Idm zƅI'3i8P|C%;11L{ҁphGRr%_Q0rbt>Sv,w{!7rFm|?f9. l[1 ~ke d}lZwHü`-Rn'*+[S(%nrKFkڶFϔZlcl<^k^TO㬠gHݫLCʡYi(`9T&.u4w9 ZΔ*<^z5nQ&8V'pf=BmjqEAj|L{
+]"V1kTa(Ir!<qܵDğ*Yk
+GVEtᝥV-
+tx-J-@Ի[nLx> @"6şD z
+ـ|xsf8wFCuMj˵:NjZ%㘑
+zbKR{- ,Nvr\ۓAn 3ˆpo:~hZI~ gA%_s>1g%8"̂le϶oݛ+*<&mGN=
+RDjBM"|sƗݦ/Iw|m] y_W]@2ԝ?i
+skU%9:pbEb@O?F) @R=#we!2qRV Yɴ?б7Cu~)t0\pY-Vゖ5tv8oY`4K_ [䀕.I 1
+"?޾@*GNtR;S -s M0,s/D%LZm'`?P!DZ^I7plD@TÈA
+s&lFjJ}} 5?8ȕM^7B\\1B
+Eq9nUn͛ xe8W^;Xu~KV3z8<jlc{s,ދ<K%~s'tz0岠p
+B/<FbųmkGEnBۣ,$Me u\if<j"p/`|05cm0Tq0c.|årCE+ @X`. wUg{)GL#D\XM
+'8;7 i2/NoU' `&vlfaX9`x1j9״m`|vnH!
+ӮA)_֙;ԌOvUqsDʎ3s CO{wQU00j/U-Yos掬,aLn,5%"t220F99Y'.^yiK%w-6ד^
+`EY~X{.Y0Y+a-o(R[qG
+sƙE;jؼU釔y}łؽH߹`! TL- @yd_:k=5e!gSFfB|t0>ZBݒ\ӹЋ
+xjS~ޣA{ʡydóP@Svu% ^SǸqO7#U讘Ҩ;5sŽxn#?
+VȇPf-kyZ05 {;kj\.zۊGw(C'@;IV
+-eY 5pnS__FR|
+endstream
endobj
-1047 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 460.059 160.442 472.014 172.397 ]/A << /S /GoTo /D (page.42) >> >>
+1150 0 obj
+<< /Type /Page /Contents 1151 0 R /Resources 1149 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 909 0 R /Annots 1153 0 R >>
endobj
-1048 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 476.109 160.442 488.283 172.397 ]/A << /S /GoTo /D (page.58) >> >>
+1153 0 obj
+[ 1042 0 R 1043 0 R 1044 0 R 1050 0 R 1051 0 R 1052 0 R 1053 0 R 1054 0 R 1055 0 R 1056 0 R 1057 0 R 1058 0 R 1059 0 R 1060 0 R 1061 0 R 1062 0 R 1063 0 R 1064 0 R 1065 0 R 1066 0 R 1067 0 R 1068 0 R 1069 0 R 1070 0 R 1071 0 R 1072 0 R 1073 0 R 1074 0 R 1075 0 R 1076 0 R 1077 0 R 1078 0 R 1079 0 R 1080 0 R 1081 0 R 1082 0 R 1083 0 R 1084 0 R 1085 0 R 1086 0 R 1087 0 R 1088 0 R 1089 0 R 1090 0 R 1091 0 R 1092 0 R 1093 0 R 1094 0 R 1095 0 R 1096 0 R 1097 0 R 1098 0 R 1099 0 R 1100 0 R 1101 0 R 1102 0 R 1103 0 R 1104 0 R 1105 0 R 1106 0 R 1107 0 R 1108 0 R 1109 0 R 1110 0 R 1111 0 R 1112 0 R 1113 0 R 1114 0 R 1115 0 R 1116 0 R 1117 0 R 1118 0 R 1119 0 R 1120 0 R 1121 0 R 1122 0 R 1123 0 R 1124 0 R 1125 0 R 1126 0 R 1127 0 R 1128 0 R 1129 0 R 1130 0 R 1131 0 R 1132 0 R 1133 0 R 1134 0 R 1135 0 R 1136 0 R 1137 0 R 1138 0 R 1139 0 R 1140 0 R 1141 0 R 1142 0 R 1143 0 R 1144 0 R ]
endobj
-1049 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 482.784 148.487 494.739 160.442 ]/A << /S /GoTo /D (page.42) >> >>
+1042 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 236.81 757.574 248.765 769.529 ]/A << /S /GoTo /D (page.43) >> >>
+endobj
+1043 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 252.86 757.574 265.034 769.529 ]/A << /S /GoTo /D (page.60) >> >>
+endobj
+1044 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 259.535 745.619 271.49 757.574 ]/A << /S /GoTo /D (page.43) >> >>
endobj
1050 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 393.389 136.98 405.344 147.929 ]/A << /S /GoTo /D (page.56) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 170.14 734.112 182.095 745.061 ]/A << /S /GoTo /D (page.57) >> >>
endobj
1051 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 453.025 124.576 464.98 136.532 ]/A << /S /GoTo /D (page.36) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 229.776 721.708 241.731 733.664 ]/A << /S /GoTo /D (page.37) >> >>
endobj
1052 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 381.384 113.06 393.339 124.128 ]/A << /S /GoTo /D (page.51) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 158.135 710.192 170.09 721.26 ]/A << /S /GoTo /D (page.52) >> >>
endobj
1053 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 388.059 101.104 400.014 112.063 ]/A << /S /GoTo /D (page.51) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 164.81 698.236 176.765 709.195 ]/A << /S /GoTo /D (page.52) >> >>
endobj
1054 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 390.569 79.334 397.543 91.29 ]/A << /S /GoTo /D (page.5) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 167.32 663.925 174.294 675.88 ]/A << /S /GoTo /D (page.5) >> >>
endobj
1055 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 340.447 67.947 352.402 78.886 ]/A << /S /GoTo /D (page.26) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 117.198 652.538 129.153 663.477 ]/A << /S /GoTo /D (page.27) >> >>
endobj
-1061 0 obj
-<< /D [ 1059 0 R /XYZ 78.37 808.885 null ] >>
+1056 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 120.825 640.573 132.78 651.522 ]/A << /S /GoTo /D (page.27) >> >>
endobj
-357 0 obj
-<< /D [ 1059 0 R /XYZ 79.37 706.717 null ] >>
+1057 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 136.875 640.573 149.049 651.522 ]/A << /S /GoTo /D (page.47) >> >>
endobj
1058 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F69 402 0 R /F56 384 0 R /F15 381 0 R /F57 385 0 R /F55 383 0 R /F66 388 0 R >> /ProcSet [ /PDF /Text ] >>
-endobj
-1178 0 obj
-<< /Filter /FlateDecode /Length 3540 >>
-stream
-xIW& PM }2KUCUUl7/2~eނ,E7Y%Uo?ߥtRZI?@?AJk751a2nIi'SG4bJ=-dT&[Cf\)'X#UC]kPs۳p!bʨg #h7HOF` ~>2J1i8Q
-9;
-)=W\`(s ^êMנ M=)ee8<K L+GC0$ޓS~]oڃz`(S,qoK!<&bq 4<%(z=AMYnG狯%#Џ@JZQE d ̯Dy!%@cdwg\b/%@1jJqDRPVι//􅀃T+p8BQ8 J^\Ĭ[S5#R GU%w~0T䠩҈Juh Y8k~Rb<Pq g|ӌ|EZJbv"dêwU<#lVpFzj)]Y$:&):SQBl6Cd4'Q] $d6eAuܻB UWCϳ >pҕkOHLtfȑक~BYi:Ib3L' ></EBPh`-Yx#q0MƁAv&
-fh5c8{*3o iRx@K#13c+ju@"bOXlyu8UĜ% z.lHU 1lɧ]e9G-2hTO:sm2Jį
-Կ"iй@Sgl2EYζ4t c_$\DI4]"ȿ/vؤeEb1Y!]N
- )֋Mwc
-n):"0Lo*^ulmݑ0.ZXJU B֓:<(tsh=#!^1qCglvPGn5C:ӸuT;~R[?529Q?-x6?\ 78 'U02lToIp~'PAsGkJuh~ۻ؛C ŏ Ge<8 '#>ȡ*F-a Ry.ar>^t+Q<f WNuz)]x! |PlIx6j<{<6 B˃2^؉Otǽ|y;V4־!M73NQ_4Xd4}(!ͦ9&iYiʞCm*O*QrצsӗWDUW$OD7tVuL5tV`KE~ֵHN[SD:e:9ib'?K|ަ{iPAR?}0Ʌ NT>&
-(t
-eMv ‰g>NFx7?G'ކ ˸y\m"O퍲ӶtN滲Fs~8M\F9?s`[x! Z*Wt69i<o;7m%)YM8ԧÊ|T7Ze#3}!3}Rs_]w)gp'_#iG ә!ݯ''t/Iy Ʃ'x0\a4%`c.ǧ FO㩜d%+:֡xzE/!E&
-!^\IJa"^/V4ԇ'z19#KVX*^ KjѺN_F
-endstream
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 164.88 628.06 176.835 640.015 ]/A << /S /GoTo /D (page.41) >> >>
endobj
-1177 0 obj
-<< /Type /Page /Contents 1178 0 R /Resources 1176 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1180 0 R /Annots 1181 0 R >>
+1059 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 146.18 616.104 158.135 628.06 ]/A << /S /GoTo /D (page.41) >> >>
endobj
-1181 0 obj
-[ 1056 0 R 1057 0 R 1063 0 R 1064 0 R 1065 0 R 1066 0 R 1067 0 R 1068 0 R 1069 0 R 1070 0 R 1071 0 R 1072 0 R 1073 0 R 1074 0 R 1075 0 R 1076 0 R 1077 0 R 1078 0 R 1079 0 R 1080 0 R 1081 0 R 1082 0 R 1083 0 R 1084 0 R 1085 0 R 1086 0 R 1087 0 R 1088 0 R 1089 0 R 1090 0 R 1091 0 R 1092 0 R 1093 0 R 1094 0 R 1095 0 R 1096 0 R 1097 0 R 1098 0 R 1099 0 R 1100 0 R 1101 0 R 1102 0 R 1103 0 R 1104 0 R 1105 0 R 1106 0 R 1107 0 R 1108 0 R 1109 0 R 1110 0 R 1111 0 R 1112 0 R 1113 0 R 1114 0 R 1115 0 R 1116 0 R 1117 0 R 1118 0 R 1119 0 R 1120 0 R 1121 0 R 1122 0 R 1123 0 R 1124 0 R 1125 0 R 1126 0 R 1127 0 R 1128 0 R 1129 0 R 1130 0 R 1131 0 R 1132 0 R 1133 0 R 1134 0 R 1135 0 R 1136 0 R 1137 0 R 1138 0 R 1139 0 R 1140 0 R 1141 0 R 1142 0 R 1143 0 R 1144 0 R 1145 0 R 1146 0 R 1147 0 R 1148 0 R 1149 0 R 1150 0 R 1151 0 R 1152 0 R 1153 0 R 1154 0 R 1155 0 R 1156 0 R 1157 0 R 1158 0 R 1159 0 R 1160 0 R 1161 0 R 1162 0 R 1163 0 R 1164 0 R 1165 0 R 1166 0 R 1167 0 R 1168 0 R 1169 0 R 1170 0 R 1171 0 R 1172 0 R 1173 0 R ]
+1060 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 187.883 604.149 199.838 616.104 ]/A << /S /GoTo /D (page.41) >> >>
endobj
-1056 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 120.825 758.132 132.78 769.081 ]/A << /S /GoTo /D (page.26) >> >>
+1061 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 170.847 592.194 182.802 604.149 ]/A << /S /GoTo /D (page.41) >> >>
endobj
-1057 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 136.875 758.132 149.049 769.081 ]/A << /S /GoTo /D (page.46) >> >>
+1062 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 131.535 558.889 143.49 569.718 ]/A << /S /GoTo /D (page.31) >> >>
endobj
1063 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 164.88 745.619 176.835 757.574 ]/A << /S /GoTo /D (page.40) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 147.226 546.934 159.181 557.763 ]/A << /S /GoTo /D (page.16) >> >>
endobj
1064 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 146.18 733.664 158.135 745.619 ]/A << /S /GoTo /D (page.40) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 177.721 522.456 189.896 534.411 ]/A << /S /GoTo /D (page.68) >> >>
endobj
1065 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 187.883 721.708 199.838 733.664 ]/A << /S /GoTo /D (page.40) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 115.843 511.068 127.799 521.898 ]/A << /S /GoTo /D (page.12) >> >>
endobj
1066 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 170.847 709.753 182.802 721.708 ]/A << /S /GoTo /D (page.40) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 205.457 487.038 217.413 498.097 ]/A << /S /GoTo /D (page.12) >> >>
endobj
1067 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 131.535 688.938 143.49 699.767 ]/A << /S /GoTo /D (page.30) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 165.099 475.083 172.073 486.142 ]/A << /S /GoTo /D (page.5) >> >>
endobj
1068 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 147.226 676.982 159.181 687.812 ]/A << /S /GoTo /D (page.15) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 186.02 463.128 197.975 474.187 ]/A << /S /GoTo /D (page.37) >> >>
endobj
1069 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 177.721 652.504 189.896 664.459 ]/A << /S /GoTo /D (page.67) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 269.527 450.725 281.482 462.68 ]/A << /S /GoTo /D (page.33) >> >>
endobj
1070 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 115.843 641.117 127.799 651.946 ]/A << /S /GoTo /D (page.11) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 121.074 439.048 133.029 450.167 ]/A << /S /GoTo /D (page.30) >> >>
endobj
1071 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 205.457 617.087 217.413 628.145 ]/A << /S /GoTo /D (page.12) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 205.457 415.307 217.413 426.366 ]/A << /S /GoTo /D (page.13) >> >>
endobj
1072 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 165.099 605.132 172.073 616.19 ]/A << /S /GoTo /D (page.5) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 165.099 403.352 172.073 414.411 ]/A << /S /GoTo /D (page.5) >> >>
endobj
1073 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 186.02 593.177 197.975 604.235 ]/A << /S /GoTo /D (page.36) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 186.02 391.397 197.975 402.456 ]/A << /S /GoTo /D (page.37) >> >>
endobj
1074 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 269.527 580.773 281.482 592.728 ]/A << /S /GoTo /D (page.32) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 181.487 379.552 193.442 390.391 ]/A << /S /GoTo /D (page.13) >> >>
endobj
1075 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 121.074 569.097 133.029 580.215 ]/A << /S /GoTo /D (page.29) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 197.537 379.552 209.711 390.391 ]/A << /S /GoTo /D (page.59) >> >>
endobj
1076 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 205.457 545.356 217.413 556.414 ]/A << /S /GoTo /D (page.12) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 121.074 345.689 134.523 356.518 ]/A << /S /GoTo /D (page.29) >> >>
endobj
1077 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 165.099 533.401 172.073 544.459 ]/A << /S /GoTo /D (page.5) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 138.618 345.689 150.573 356.518 ]/A << /S /GoTo /D (page.56) >> >>
endobj
1078 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 186.02 521.446 197.975 532.504 ]/A << /S /GoTo /D (page.36) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 157.308 333.723 169.263 344.563 ]/A << /S /GoTo /D (page.57) >> >>
endobj
1079 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 181.487 509.6 193.442 520.439 ]/A << /S /GoTo /D (page.12) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 218.269 321.21 230.224 333.166 ]/A << /S /GoTo /D (page.33) >> >>
endobj
1080 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 197.537 509.6 209.711 520.439 ]/A << /S /GoTo /D (page.58) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 182.723 309.255 194.678 321.21 ]/A << /S /GoTo /D (page.48) >> >>
endobj
1081 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 121.074 488.226 134.523 499.056 ]/A << /S /GoTo /D (page.28) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 178.718 275.382 190.673 287.337 ]/A << /S /GoTo /D (page.48) >> >>
endobj
1082 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 138.618 488.226 150.573 499.056 ]/A << /S /GoTo /D (page.55) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 213.617 241.509 225.572 253.464 ]/A << /S /GoTo /D (page.41) >> >>
endobj
1083 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 157.308 476.261 169.263 487.101 ]/A << /S /GoTo /D (page.56) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 221.059 229.554 233.014 241.509 ]/A << /S /GoTo /D (page.43) >> >>
endobj
1084 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 218.269 463.748 230.224 475.703 ]/A << /S /GoTo /D (page.32) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 239.31 217.599 251.266 229.554 ]/A << /S /GoTo /D (page.43) >> >>
endobj
1085 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 182.723 451.793 194.678 463.748 ]/A << /S /GoTo /D (page.47) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 115.505 206.202 127.46 217.041 ]/A << /S /GoTo /D (page.27) >> >>
endobj
1086 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 178.718 430.409 190.673 442.365 ]/A << /S /GoTo /D (page.47) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 131.554 206.202 143.729 217.041 ]/A << /S /GoTo /D (page.47) >> >>
endobj
1087 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 213.617 409.026 225.572 420.981 ]/A << /S /GoTo /D (page.39) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 147.823 206.202 159.998 217.041 ]/A << /S /GoTo /D (page.61) >> >>
endobj
1088 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 221.059 397.071 233.014 409.026 ]/A << /S /GoTo /D (page.42) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 119.131 194.246 131.086 205.086 ]/A << /S /GoTo /D (page.27) >> >>
endobj
1089 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 239.31 385.115 251.266 397.071 ]/A << /S /GoTo /D (page.42) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 135.181 194.246 147.355 205.086 ]/A << /S /GoTo /D (page.47) >> >>
endobj
1090 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 115.505 373.718 127.46 384.557 ]/A << /S /GoTo /D (page.26) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 115.843 182.301 127.799 193.131 ]/A << /S /GoTo /D (page.29) >> >>
endobj
1091 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 131.554 373.718 143.729 384.557 ]/A << /S /GoTo /D (page.46) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 242.638 158.381 254.593 169.22 ]/A << /S /GoTo /D (page.34) >> >>
endobj
1092 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 147.823 373.718 159.998 384.557 ]/A << /S /GoTo /D (page.60) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 132.371 146.306 144.327 157.375 ]/A << /S /GoTo /D (page.52) >> >>
endobj
1093 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 119.131 361.763 131.086 372.602 ]/A << /S /GoTo /D (page.26) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 185.721 121.958 197.677 133.913 ]/A << /S /GoTo /D (page.39) >> >>
endobj
1094 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 135.181 361.763 147.355 372.602 ]/A << /S /GoTo /D (page.46) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 219.016 110.002 230.972 121.958 ]/A << /S /GoTo /D (page.37) >> >>
endobj
1095 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 115.843 349.818 127.799 360.647 ]/A << /S /GoTo /D (page.28) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 207.4 98.047 219.355 110.002 ]/A << /S /GoTo /D (page.14) >> >>
endobj
1096 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 242.638 325.897 254.593 336.737 ]/A << /S /GoTo /D (page.33) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 135.998 86.53 147.953 97.489 ]/A << /S /GoTo /D (page.49) >> >>
endobj
1097 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 132.371 313.823 144.327 324.891 ]/A << /S /GoTo /D (page.51) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 180.561 74.575 192.516 85.534 ]/A << /S /GoTo /D (page.49) >> >>
endobj
1098 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 185.721 289.474 197.677 301.429 ]/A << /S /GoTo /D (page.38) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 453.962 757.574 465.917 769.529 ]/A << /S /GoTo /D (page.36) >> >>
endobj
1099 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 219.016 277.519 230.972 289.474 ]/A << /S /GoTo /D (page.36) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 460.079 745.619 472.034 757.574 ]/A << /S /GoTo /D (page.33) >> >>
endobj
1100 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 207.4 265.564 219.355 277.519 ]/A << /S /GoTo /D (page.14) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 476.128 745.619 488.303 757.574 ]/A << /S /GoTo /D (page.61) >> >>
endobj
1101 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 135.998 254.047 147.953 265.006 ]/A << /S /GoTo /D (page.48) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 423.227 733.664 430.201 745.619 ]/A << /S /GoTo /D (page.5) >> >>
endobj
1102 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 180.561 242.092 192.516 253.051 ]/A << /S /GoTo /D (page.48) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 392.084 687.835 404.039 699.791 ]/A << /S /GoTo /D (page.29) >> >>
endobj
1103 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 230.713 229.698 242.668 241.653 ]/A << /S /GoTo /D (page.35) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 461.991 675.88 473.947 687.835 ]/A << /S /GoTo /D (page.64) >> >>
endobj
1104 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 236.83 217.743 248.785 229.698 ]/A << /S /GoTo /D (page.32) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 457.478 663.925 469.434 675.88 ]/A << /S /GoTo /D (page.15) >> >>
endobj
1105 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 252.88 217.743 265.054 229.698 ]/A << /S /GoTo /D (page.60) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 428.706 618.545 440.661 629.604 ]/A << /S /GoTo /D (page.50) >> >>
endobj
1106 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 199.978 205.788 206.952 217.743 ]/A << /S /GoTo /D (page.5) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 388.348 606.59 395.321 617.649 ]/A << /S /GoTo /D (page.5) >> >>
endobj
1107 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 168.835 172.449 180.79 184.404 ]/A << /S /GoTo /D (page.28) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 409.269 594.635 421.224 605.694 ]/A << /S /GoTo /D (page.54) >> >>
endobj
1108 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 238.743 160.494 250.698 172.449 ]/A << /S /GoTo /D (page.63) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 429.025 582.232 440.98 594.187 ]/A << /S /GoTo /D (page.24) >> >>
endobj
1109 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 234.229 148.539 246.185 160.494 ]/A << /S /GoTo /D (page.14) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 417.548 570.496 429.503 581.674 ]/A << /S /GoTo /D (page.49) >> >>
endobj
1110 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 205.457 115.648 217.413 126.707 ]/A << /S /GoTo /D (page.49) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 396.627 558.889 408.582 569.718 ]/A << /S /GoTo /D (page.25) >> >>
endobj
1111 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 165.099 103.693 172.073 114.752 ]/A << /S /GoTo /D (page.5) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 412.676 558.889 424.851 569.718 ]/A << /S /GoTo /D (page.63) >> >>
endobj
1112 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 186.02 91.738 197.975 102.796 ]/A << /S /GoTo /D (page.53) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 401.857 546.645 408.831 557.763 ]/A << /S /GoTo /D (page.1) >> >>
endobj
1113 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 205.776 79.334 217.731 91.29 ]/A << /S /GoTo /D (page.23) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 380.935 534.979 392.891 545.808 ]/A << /S /GoTo /D (page.25) >> >>
endobj
1114 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 194.299 67.598 206.254 78.776 ]/A << /S /GoTo /D (page.48) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 363.939 523.024 375.894 533.853 ]/A << /S /GoTo /D (page.50) >> >>
endobj
1115 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 396.627 758.142 408.582 768.971 ]/A << /S /GoTo /D (page.24) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 339.571 511.068 351.526 521.898 ]/A << /S /GoTo /D (page.24) >> >>
endobj
1116 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 412.676 758.142 424.851 768.971 ]/A << /S /GoTo /D (page.62) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 409.698 498.545 421.653 510.5 ]/A << /S /GoTo /D (page.50) >> >>
endobj
1117 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 401.857 745.898 408.831 757.016 ]/A << /S /GoTo /D (page.1) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 424.642 498.545 436.597 510.5 ]/A << /S /GoTo /D (page.55) >> >>
endobj
1118 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 380.935 734.232 392.891 745.061 ]/A << /S /GoTo /D (page.24) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 467.83 486.59 479.785 498.545 ]/A << /S /GoTo /D (page.40) >> >>
endobj
1119 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 363.939 722.276 375.894 733.106 ]/A << /S /GoTo /D (page.49) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 414.44 475.203 426.395 486.032 ]/A << /S /GoTo /D (page.41) >> >>
endobj
1120 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 339.571 710.321 351.526 721.151 ]/A << /S /GoTo /D (page.23) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 429.384 475.203 441.339 486.032 ]/A << /S /GoTo /D (page.45) >> >>
endobj
1121 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 409.698 697.798 421.653 709.753 ]/A << /S /GoTo /D (page.49) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 445.434 475.203 457.608 486.032 ]/A << /S /GoTo /D (page.60) >> >>
endobj
1122 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 424.642 697.798 436.597 709.753 ]/A << /S /GoTo /D (page.53) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 354.783 462.899 366.739 474.077 ]/A << /S /GoTo /D (page.57) >> >>
endobj
1123 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 467.83 685.843 479.785 697.798 ]/A << /S /GoTo /D (page.39) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 383.028 438.769 395.202 450.725 ]/A << /S /GoTo /D (page.60) >> >>
endobj
1124 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 414.44 674.456 426.395 685.285 ]/A << /S /GoTo /D (page.40) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 356.766 427.263 368.721 438.321 ]/A << /S /GoTo /D (page.30) >> >>
endobj
1125 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 429.384 674.456 441.339 685.285 ]/A << /S /GoTo /D (page.44) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 407.087 393.161 419.043 404.339 ]/A << /S /GoTo /D (page.50) >> >>
endobj
1126 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 445.434 674.456 457.608 685.285 ]/A << /S /GoTo /D (page.58) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 411.043 380.986 418.016 392.941 ]/A << /S /GoTo /D (page.5) >> >>
endobj
1127 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 354.783 662.152 366.739 673.33 ]/A << /S /GoTo /D (page.56) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 420.089 357.076 432.044 369.031 ]/A << /S /GoTo /D (page.18) >> >>
endobj
1128 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 383.028 638.022 395.202 649.977 ]/A << /S /GoTo /D (page.58) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 428.348 333.166 440.303 345.121 ]/A << /S /GoTo /D (page.39) >> >>
endobj
1129 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 356.766 626.515 368.721 637.574 ]/A << /S /GoTo /D (page.29) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 414.669 299.293 426.624 311.248 ]/A << /S /GoTo /D (page.43) >> >>
endobj
1130 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 407.087 604.368 419.043 615.547 ]/A << /S /GoTo /D (page.48) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 376.98 287.776 388.935 298.735 ]/A << /S /GoTo /D (page.56) >> >>
endobj
1131 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 411.043 592.194 418.016 604.149 ]/A << /S /GoTo /D (page.5) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 391.396 275.661 403.351 286.779 ]/A << /S /GoTo /D (page.48) >> >>
endobj
1132 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 420.089 568.284 432.044 580.239 ]/A << /S /GoTo /D (page.17) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 368.323 263.865 380.278 274.934 ]/A << /S /GoTo /D (page.51) >> >>
endobj
1133 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 428.348 544.373 440.303 556.329 ]/A << /S /GoTo /D (page.38) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 384.373 263.865 396.547 274.934 ]/A << /S /GoTo /D (page.70) >> >>
endobj
1134 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 414.669 522.456 426.624 534.411 ]/A << /S /GoTo /D (page.42) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 447.944 229.554 459.899 241.509 ]/A << /S /GoTo /D (page.33) >> >>
endobj
1135 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 376.98 510.939 388.935 521.898 ]/A << /S /GoTo /D (page.55) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 466.395 217.599 478.35 229.554 ]/A << /S /GoTo /D (page.18) >> >>
endobj
1136 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 391.396 498.824 403.351 509.943 ]/A << /S /GoTo /D (page.47) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 354.833 206.212 366.788 217.041 ]/A << /S /GoTo /D (page.32) >> >>
endobj
1137 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 368.323 487.029 380.278 498.097 ]/A << /S /GoTo /D (page.50) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 365.603 194.256 377.558 204.807 ]/A << /S /GoTo /D (page.32) >> >>
endobj
1138 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 384.373 487.029 396.547 498.097 ]/A << /S /GoTo /D (page.69) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 488.911 181.733 500.866 193.689 ]/A << /S /GoTo /D (page.21) >> >>
endobj
1139 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 447.944 464.672 459.899 476.628 ]/A << /S /GoTo /D (page.32) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 466.046 169.778 473.02 181.733 ]/A << /S /GoTo /D (page.5) >> >>
endobj
1140 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 466.395 452.717 478.35 464.672 ]/A << /S /GoTo /D (page.17) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 408.97 145.868 420.925 157.823 ]/A << /S /GoTo /D (page.20) >> >>
endobj
1141 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 354.833 441.33 366.788 452.159 ]/A << /S /GoTo /D (page.31) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 501.503 133.913 513.458 145.868 ]/A << /S /GoTo /D (page.20) >> >>
endobj
1142 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 365.603 429.375 377.558 439.925 ]/A << /S /GoTo /D (page.31) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 465.887 110.56 477.842 121.4 ]/A << /S /GoTo /D (page.34) >> >>
endobj
1143 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 488.911 416.852 500.866 428.807 ]/A << /S /GoTo /D (page.20) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 362.295 98.486 374.25 109.444 ]/A << /S /GoTo /D (page.52) >> >>
endobj
1144 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 466.046 404.897 473.02 416.852 ]/A << /S /GoTo /D (page.5) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 408.97 74.137 420.925 86.092 ]/A << /S /GoTo /D (page.39) >> >>
endobj
-1145 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 408.97 380.986 420.925 392.941 ]/A << /S /GoTo /D (page.19) >> >>
+1152 0 obj
+<< /D [ 1150 0 R /XYZ 78.37 808.885 null ] >>
endobj
-1146 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 501.503 369.031 513.458 380.986 ]/A << /S /GoTo /D (page.19) >> >>
+1149 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 385 0 R /F57 389 0 R /F56 388 0 R /F65 392 0 R /F55 387 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-1147 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 465.887 345.679 477.842 356.518 ]/A << /S /GoTo /D (page.33) >> >>
+1229 0 obj
+<< /Filter /FlateDecode /Length 2624 >>
+stream
+x[r,)߯h$G:bMvf5m$ *g܅]vf!$Ǒ
+@Ȏ{?xv:10O{abvưP1F.&H?A}}/.m@
+I| <r +[xYbekzYwoYTI"3(N*hYA,g\|`ُRUg
+eX
+b)E\~9R>V)=B@ʧvI%-MtRm)C񦗃C'uϝ8-QEHyK{/d)+&
+뀔S_Qҁ, EdS<! zӚ
+jc.3# ZY9|hY~RF#G14m;GIqnr]v_N]lJNF)ǟ`Ah7jTʇH"l{HElFI.k@%hpEF_ 'TTM(2:xٱFNj8}b-ƂWɔ#?zdR]{Λԓ`93/{)N#+XN|ҩD >'Fʰj+,BU* )*? %e[j.UF'|pTu2Y8Ne7k,uٞ\"J
+@HK}w%±k ,#\-Ϻ(/4MwxMeqFgr^PȺn=Cglˑ6JcMDrFo#ĀBIsla
+endstream
endobj
-1148 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 362.295 333.604 374.25 344.563 ]/A << /S /GoTo /D (page.51) >> >>
+1228 0 obj
+<< /Type /Page /Contents 1229 0 R /Resources 1227 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 909 0 R /Annots 1231 0 R >>
endobj
-1149 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 408.97 309.255 420.925 321.21 ]/A << /S /GoTo /D (page.38) >> >>
+1231 0 obj
+[ 1145 0 R 1146 0 R 1147 0 R 1148 0 R 1154 0 R 1155 0 R 1156 0 R 1157 0 R 1158 0 R 1159 0 R 1160 0 R 1161 0 R 1162 0 R 1163 0 R 1164 0 R 1165 0 R 1166 0 R 1167 0 R 1168 0 R 1169 0 R 1170 0 R 1171 0 R 1172 0 R 1173 0 R 1174 0 R 1175 0 R 1176 0 R 1177 0 R 1178 0 R 1179 0 R 1180 0 R 1181 0 R 1182 0 R 1183 0 R 1184 0 R 1185 0 R 1186 0 R 1187 0 R 1188 0 R 1189 0 R 1190 0 R 1191 0 R 1192 0 R 1193 0 R 1194 0 R 1195 0 R 1196 0 R 1197 0 R 1198 0 R 1199 0 R 1200 0 R 1201 0 R 1202 0 R 1203 0 R 1204 0 R 1205 0 R 1206 0 R 1207 0 R 1208 0 R 1209 0 R 1210 0 R 1211 0 R 1212 0 R 1213 0 R 1214 0 R 1215 0 R 1216 0 R 1217 0 R 1218 0 R 1219 0 R 1220 0 R 1221 0 R 1222 0 R 1223 0 R 1224 0 R 1225 0 R 1226 0 R ]
endobj
-1150 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 448.94 297.3 460.896 309.255 ]/A << /S /GoTo /D (page.36) >> >>
+1145 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 225.691 757.574 237.647 769.529 ]/A << /S /GoTo /D (page.37) >> >>
endobj
-1151 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 344.323 285.913 356.497 296.742 ]/A << /S /GoTo /D (page.21) >> >>
+1146 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 121.074 746.177 133.248 757.016 ]/A << /S /GoTo /D (page.22) >> >>
endobj
-1152 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 360.592 285.913 372.766 296.742 ]/A << /S /GoTo /D (page.23) >> >>
+1147 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 137.343 746.177 149.517 757.016 ]/A << /S /GoTo /D (page.24) >> >>
endobj
-1153 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 376.861 285.913 388.816 296.742 ]/A << /S /GoTo /D (page.46) >> >>
+1148 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 153.612 746.177 165.567 757.016 ]/A << /S /GoTo /D (page.47) >> >>
endobj
1154 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 388.348 261.883 395.321 272.941 ]/A << /S /GoTo /D (page.5) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 165.099 722.157 172.073 733.215 ]/A << /S /GoTo /D (page.5) >> >>
endobj
1155 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 424.96 249.928 436.916 260.986 ]/A << /S /GoTo /D (page.44) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 201.711 710.202 213.667 721.26 ]/A << /S /GoTo /D (page.45) >> >>
endobj
1156 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 416.233 226.137 428.188 236.966 ]/A << /S /GoTo /D (page.21) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 192.984 686.411 204.939 697.24 ]/A << /S /GoTo /D (page.22) >> >>
endobj
1157 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 432.283 226.137 444.457 236.966 ]/A << /S /GoTo /D (page.66) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 209.034 686.411 221.208 697.24 ]/A << /S /GoTo /D (page.67) >> >>
endobj
1158 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 441.897 214.182 453.852 225.121 ]/A << /S /GoTo /D (page.17) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 218.648 674.456 230.603 685.395 ]/A << /S /GoTo /D (page.18) >> >>
endobj
1159 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 457.947 214.182 470.121 225.121 ]/A << /S /GoTo /D (page.58) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 234.698 674.456 246.872 685.395 ]/A << /S /GoTo /D (page.59) >> >>
endobj
1160 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 431.765 201.659 443.72 213.614 ]/A << /S /GoTo /D (page.23) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 208.516 661.933 220.471 673.888 ]/A << /S /GoTo /D (page.24) >> >>
endobj
1161 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 485.344 189.703 497.299 201.659 ]/A << /S /GoTo /D (page.17) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 262.095 649.977 274.05 661.933 ]/A << /S /GoTo /D (page.18) >> >>
endobj
1162 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 504.947 177.748 516.902 189.703 ]/A << /S /GoTo /D (page.17) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 281.698 638.022 293.653 649.977 ]/A << /S /GoTo /D (page.18) >> >>
endobj
1163 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 354.783 166.012 366.739 177.19 ]/A << /S /GoTo /D (page.23) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 131.535 626.286 143.49 637.464 ]/A << /S /GoTo /D (page.24) >> >>
endobj
1164 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 413.115 154.406 420.089 165.235 ]/A << /S /GoTo /D (page.9) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 189.866 614.68 201.821 625.509 ]/A << /S /GoTo /D (page.10) >> >>
endobj
1165 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 423.077 154.406 435.033 165.235 ]/A << /S /GoTo /D (page.16) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 204.81 614.68 216.765 625.509 ]/A << /S /GoTo /D (page.17) >> >>
endobj
1166 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 440.412 141.883 452.368 153.838 ]/A << /S /GoTo /D (page.10) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 217.163 602.157 229.119 614.112 ]/A << /S /GoTo /D (page.11) >> >>
endobj
1167 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 456.462 141.883 468.637 153.838 ]/A << /S /GoTo /D (page.58) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 233.213 602.157 245.388 614.112 ]/A << /S /GoTo /D (page.59) >> >>
endobj
1168 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 427.541 119.965 439.715 131.92 ]/A << /S /GoTo /D (page.21) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 204.292 568.284 216.466 580.239 ]/A << /S /GoTo /D (page.22) >> >>
endobj
1169 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 443.81 119.965 455.765 131.92 ]/A << /S /GoTo /D (page.45) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 220.561 568.284 232.516 580.239 ]/A << /S /GoTo /D (page.46) >> >>
endobj
1170 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 445.643 108.01 457.598 119.965 ]/A << /S /GoTo /D (page.14) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 222.394 556.329 234.349 568.284 ]/A << /S /GoTo /D (page.15) >> >>
endobj
1171 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 365.364 96.613 377.319 107.452 ]/A << /S /GoTo /D (page.39) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 142.115 544.931 154.07 555.771 ]/A << /S /GoTo /D (page.41) >> >>
endobj
1172 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 453.473 84.099 465.429 96.055 ]/A << /S /GoTo /D (page.32) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 230.224 532.418 242.18 544.373 ]/A << /S /GoTo /D (page.33) >> >>
endobj
1173 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 472.293 72.144 484.248 84.099 ]/A << /S /GoTo /D (page.32) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 249.044 520.463 260.999 532.418 ]/A << /S /GoTo /D (page.33) >> >>
endobj
-1179 0 obj
-<< /D [ 1177 0 R /XYZ 78.37 808.885 null ] >>
+1174 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 254.105 508.508 266.06 520.463 ]/A << /S /GoTo /D (page.33) >> >>
+endobj
+1175 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 205.099 484.598 217.054 496.553 ]/A << /S /GoTo /D (page.46) >> >>
endobj
1176 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F57 385 0 R /F55 383 0 R /F56 384 0 R /F66 388 0 R >> /ProcSet [ /PDF /Text ] >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 156.909 472.642 168.865 484.598 ]/A << /S /GoTo /D (page.46) >> >>
endobj
-1235 0 obj
-<< /Filter /FlateDecode /Length 1925 >>
-stream
-xڵZ͎6 SVI6MVڞץ,ɶhEv2CĎ'GE_|x|Ut7 wߵv5ݵ5"ss^FD|=]Bʫg&zθ)Ydx?׏>bkN9X|Is(_sڋ~\Zf-IRLRokOUC?z$˓gKᚣ_#+0BHW`XY9 ((gb>.1жJmP3T+GYVA7XrV,o6<CHK+mM^sESɡv ;̐3;L@jUx c^d^lWr;5k{^kPթ2+x>aZgSuޖZIo׬X?F@sh]ϡwb\ $yiUHRj+HP?A҇GM1kU{a 2D52**u5᪀F9 Fw u:Sw)J)ZR53%7Lr\9
-H(Z; d7FnM3
-=J9M'zAy $bBfPn4^Z0"k!`牨28HiEN@B  Z;AU,l sX:=͔VD%29]?#fHt$fC jm' 3aqwbw/rMFv>V]2P+ŭb.No[6ݬvɭT4CdKQ<5@ZS7]j>. N)"8Z+m ;0K7!(PaÍ'c2q̤uHj^#)cbװx&e5b+#zx1 wYa 1E`Ɣb*$=Sdq|JH|xޯǔxtLK]δVo6?vi,*,AZ:Fl_->0Ȣk*=%Y *mA’WJ>ze'yR49))=5|?j!#.8QJ?oLc z֟4l(E}&o7 /jWQ[C9te9W٬Ħ3x8#^ ּş!k<ڡAUwTM+꦳|PrT~JJ(8($ T9š)ugpb0RΣ#kg|yw1~'>8DN9k6 /،Fevp)͂#/<pϹNc6RN\S| +M<`>*${5<]1o[zXط4izN`'%Ы <GZy!YbH?
-iʔ(V7WaBt>Fڵ]Eu`;\( [j<#*ǗIzehQDxВԘ"`u41"Ba*]'lAO$meuxgyif3>do
-endstream
+1177 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 194.927 460.687 206.882 472.642 ]/A << /S /GoTo /D (page.37) >> >>
endobj
-1234 0 obj
-<< /Type /Page /Contents 1235 0 R /Resources 1233 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1180 0 R /Annots 1237 0 R >>
+1178 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 219.345 448.732 231.3 460.687 ]/A << /S /GoTo /D (page.47) >> >>
endobj
-1237 0 obj
-[ 1174 0 R 1175 0 R 1182 0 R 1183 0 R 1184 0 R 1185 0 R 1186 0 R 1187 0 R 1188 0 R 1189 0 R 1190 0 R 1191 0 R 1192 0 R 1193 0 R 1194 0 R 1195 0 R 1196 0 R 1197 0 R 1198 0 R 1199 0 R 1200 0 R 1201 0 R 1202 0 R 1203 0 R 1204 0 R 1205 0 R 1206 0 R 1207 0 R 1208 0 R 1209 0 R 1210 0 R 1211 0 R 1212 0 R 1213 0 R 1214 0 R 1215 0 R 1216 0 R 1217 0 R 1218 0 R 1219 0 R 1220 0 R 1221 0 R 1222 0 R 1223 0 R 1224 0 R 1225 0 R 1226 0 R 1227 0 R 1228 0 R 1229 0 R 1230 0 R 1231 0 R 1232 0 R ]
+1179 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 270.155 436.777 282.11 448.732 ]/A << /S /GoTo /D (page.47) >> >>
endobj
-1174 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 254.105 757.574 266.06 769.529 ]/A << /S /GoTo /D (page.32) >> >>
+1180 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 145.99 425.39 157.946 436.219 ]/A << /S /GoTo /D (page.11) >> >>
endobj
-1175 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 205.099 733.664 217.054 745.619 ]/A << /S /GoTo /D (page.45) >> >>
+1181 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 191.988 412.867 203.943 424.822 ]/A << /S /GoTo /D (page.43) >> >>
endobj
1182 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 156.909 721.708 168.865 733.664 ]/A << /S /GoTo /D (page.45) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 208.038 412.867 220.212 424.822 ]/A << /S /GoTo /D (page.60) >> >>
endobj
1183 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 194.927 709.753 206.882 721.708 ]/A << /S /GoTo /D (page.36) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 281.698 400.911 293.653 412.867 ]/A << /S /GoTo /D (page.35) >> >>
endobj
1184 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 219.345 697.798 231.3 709.753 ]/A << /S /GoTo /D (page.46) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 205.099 377.001 218.548 388.956 ]/A << /S /GoTo /D (page.36) >> >>
endobj
1185 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 270.155 685.843 282.11 697.798 ]/A << /S /GoTo /D (page.46) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 222.643 377.001 234.598 388.956 ]/A << /S /GoTo /D (page.54) >> >>
endobj
1186 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 145.99 674.456 157.946 685.285 ]/A << /S /GoTo /D (page.10) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 238.693 377.001 250.867 388.956 ]/A << /S /GoTo /D (page.65) >> >>
endobj
1187 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 191.988 661.933 203.943 673.888 ]/A << /S /GoTo /D (page.42) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 254.962 377.001 267.136 388.956 ]/A << /S /GoTo /D (page.69) >> >>
endobj
1188 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 208.038 661.933 220.212 673.888 ]/A << /S /GoTo /D (page.58) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 147.226 343.696 159.181 354.525 ]/A << /S /GoTo /D (page.41) >> >>
endobj
1189 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 281.698 649.977 293.653 661.933 ]/A << /S /GoTo /D (page.34) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 163.276 343.696 175.45 354.525 ]/A << /S /GoTo /D (page.60) >> >>
endobj
1190 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 205.099 626.067 218.548 638.022 ]/A << /S /GoTo /D (page.35) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 152.456 331.741 164.411 342.57 ]/A << /S /GoTo /D (page.42) >> >>
endobj
1191 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 222.643 626.067 234.598 638.022 ]/A << /S /GoTo /D (page.53) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 243.266 319.218 255.221 331.173 ]/A << /S /GoTo /D (page.42) >> >>
endobj
1192 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 238.693 626.067 250.867 638.022 ]/A << /S /GoTo /D (page.64) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 163.425 307.263 175.38 319.218 ]/A << /S /GoTo /D (page.25) >> >>
endobj
1193 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 254.962 626.067 267.136 638.022 ]/A << /S /GoTo /D (page.68) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 168.058 295.307 180.232 307.263 ]/A << /S /GoTo /D (page.59) >> >>
endobj
1194 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 205.099 602.157 218.548 614.112 ]/A << /S /GoTo /D (page.39) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 187.853 283.352 199.809 295.307 ]/A << /S /GoTo /D (page.45) >> >>
endobj
1195 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 147.226 580.807 159.181 591.636 ]/A << /S /GoTo /D (page.40) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 229.706 271.397 241.662 283.352 ]/A << /S /GoTo /D (page.50) >> >>
endobj
1196 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 163.276 580.807 175.45 591.636 ]/A << /S /GoTo /D (page.58) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 205.099 247.487 218.548 259.442 ]/A << /S /GoTo /D (page.40) >> >>
endobj
1197 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 152.456 568.852 164.411 579.681 ]/A << /S /GoTo /D (page.41) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 165.099 224.025 172.073 235.083 ]/A << /S /GoTo /D (page.5) >> >>
endobj
1198 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 243.266 556.329 255.221 568.284 ]/A << /S /GoTo /D (page.41) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 176.167 224.025 188.342 235.083 ]/A << /S /GoTo /D (page.58) >> >>
endobj
1199 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 163.425 544.373 175.38 556.329 ]/A << /S /GoTo /D (page.24) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 223.599 212.07 230.573 223.128 ]/A << /S /GoTo /D (page.5) >> >>
endobj
1200 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 168.058 532.418 180.232 544.373 ]/A << /S /GoTo /D (page.58) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 234.668 212.07 246.842 223.128 ]/A << /S /GoTo /D (page.63) >> >>
endobj
1201 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 187.853 520.463 199.809 532.418 ]/A << /S /GoTo /D (page.44) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 192.984 200.114 204.939 211.173 ]/A << /S /GoTo /D (page.16) >> >>
endobj
1202 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 229.706 508.508 241.662 520.463 ]/A << /S /GoTo /D (page.49) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 232.845 187.711 244.8 199.666 ]/A << /S /GoTo /D (page.16) >> >>
endobj
1203 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 165.099 485.046 172.073 496.104 ]/A << /S /GoTo /D (page.5) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 206.454 175.756 213.427 187.711 ]/A << /S /GoTo /D (page.5) >> >>
endobj
1204 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 176.167 485.046 188.342 496.104 ]/A << /S /GoTo /D (page.57) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 217.522 175.756 229.696 187.711 ]/A << /S /GoTo /D (page.58) >> >>
endobj
1205 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 223.599 473.091 230.573 484.149 ]/A << /S /GoTo /D (page.5) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 205.099 129.928 217.054 141.883 ]/A << /S /GoTo /D (page.39) >> >>
endobj
1206 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 234.668 473.091 246.842 484.149 ]/A << /S /GoTo /D (page.62) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 216.685 96.055 228.64 108.01 ]/A << /S /GoTo /D (page.26) >> >>
endobj
1207 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 192.984 461.136 204.939 472.194 ]/A << /S /GoTo /D (page.15) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 232.735 96.055 244.69 108.01 ]/A << /S /GoTo /D (page.51) >> >>
endobj
1208 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 232.845 448.732 244.8 460.687 ]/A << /S /GoTo /D (page.15) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 191.131 84.099 198.105 96.055 ]/A << /S /GoTo /D (page.8) >> >>
endobj
1209 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 206.454 436.777 213.427 448.732 ]/A << /S /GoTo /D (page.5) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 165.437 72.144 177.393 84.099 ]/A << /S /GoTo /D (page.26) >> >>
endobj
1210 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 217.522 436.777 229.696 448.732 ]/A << /S /GoTo /D (page.57) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 181.487 72.144 193.442 84.099 ]/A << /S /GoTo /D (page.51) >> >>
endobj
1211 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 205.099 402.904 217.054 414.859 ]/A << /S /GoTo /D (page.38) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 391.396 758.142 403.351 768.971 ]/A << /S /GoTo /D (page.48) >> >>
endobj
1212 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 216.685 380.986 228.64 392.941 ]/A << /S /GoTo /D (page.25) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 391.396 746.187 403.351 757.016 ]/A << /S /GoTo /D (page.48) >> >>
endobj
1213 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 232.735 380.986 244.69 392.941 ]/A << /S /GoTo /D (page.50) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 339.092 734.232 351.048 745.061 ]/A << /S /GoTo /D (page.29) >> >>
endobj
1214 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 191.131 369.031 198.105 380.986 ]/A << /S /GoTo /D (page.8) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 354.783 722.276 366.739 733.106 ]/A << /S /GoTo /D (page.31) >> >>
endobj
1215 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 165.437 357.076 177.393 369.031 ]/A << /S /GoTo /D (page.25) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 428.706 698.246 440.661 709.305 ]/A << /S /GoTo /D (page.12) >> >>
endobj
1216 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 181.487 357.076 193.442 369.031 ]/A << /S /GoTo /D (page.50) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 388.348 686.291 395.321 697.35 ]/A << /S /GoTo /D (page.5) >> >>
endobj
1217 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 168.147 345.689 180.102 356.518 ]/A << /S /GoTo /D (page.47) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 409.269 674.336 421.224 685.395 ]/A << /S /GoTo /D (page.37) >> >>
endobj
1218 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 168.147 333.733 180.102 344.563 ]/A << /S /GoTo /D (page.47) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 394.754 662.501 406.709 673.33 ]/A << /S /GoTo /D (page.66) >> >>
endobj
1219 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 115.843 321.778 127.799 332.608 ]/A << /S /GoTo /D (page.28) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 424.96 616.553 436.916 627.611 ]/A << /S /GoTo /D (page.25) >> >>
endobj
1220 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 131.535 309.823 143.49 320.652 ]/A << /S /GoTo /D (page.30) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 401.937 604.598 413.892 615.656 ]/A << /S /GoTo /D (page.11) >> >>
endobj
1221 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 205.457 285.793 217.413 296.852 ]/A << /S /GoTo /D (page.12) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 417.458 592.762 429.414 603.651 ]/A << /S /GoTo /D (page.24) >> >>
endobj
1222 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 165.099 273.838 172.073 284.897 ]/A << /S /GoTo /D (page.5) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 432.402 592.762 444.358 603.651 ]/A << /S /GoTo /D (page.27) >> >>
endobj
1223 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 186.02 261.883 197.975 272.941 ]/A << /S /GoTo /D (page.36) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 389.673 558.321 401.628 570.276 ]/A << /S /GoTo /D (page.25) >> >>
endobj
1224 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 171.505 250.047 183.46 260.877 ]/A << /S /GoTo /D (page.65) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 409.219 546.366 421.175 558.321 ]/A << /S /GoTo /D (page.29) >> >>
endobj
1225 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 201.711 216.055 213.667 227.113 ]/A << /S /GoTo /D (page.24) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 424.831 534.411 436.786 546.366 ]/A << /S /GoTo /D (page.37) >> >>
endobj
1226 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 178.688 204.099 190.643 215.158 ]/A << /S /GoTo /D (page.10) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 504.947 500.538 516.902 512.493 ]/A << /S /GoTo /D (page.39) >> >>
endobj
-1227 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 194.21 192.264 206.165 203.153 ]/A << /S /GoTo /D (page.23) >> >>
+1230 0 obj
+<< /D [ 1228 0 R /XYZ 78.37 808.885 null ] >>
endobj
-1228 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 209.153 192.264 221.109 203.153 ]/A << /S /GoTo /D (page.26) >> >>
+1227 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 385 0 R /F56 388 0 R /F57 389 0 R /F65 392 0 R /F55 387 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-1229 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 166.424 169.778 178.379 181.733 ]/A << /S /GoTo /D (page.24) >> >>
+1281 0 obj
+<< /Filter /FlateDecode /Length 2020 >>
+stream
+x\n#7W!00 V} rMNkdS<`HdZO'^/~*sĐ^$$N2'/Ùs)8'#,?+xO?<Yf( q y\ O-H?q#^O:>yﲼ&!B?^\Vw#uVZLh+qlD8>%>L'j
+dYw#I/{ʣ: ZD E1=w%f;]'w԰odRtݶY[:@RhT@SS%W!8}FL |r&WHKJ~X0#mwGSS)6svM8R
+-wa#xzHFYlצ)<Gd1 JR)%"U"BC5%\׹mvfk r82?/T<(UtVUbA465b|Z(0<
+fB>p [ȗ R2T*T++QZ>a A8.:ӞG-4.<v$Y4Pٛ{7Ξz
+AcBĄPmϒ^aC~nbN=;J
+rH7&dXs@1P{\f_ȨյuϑL^HqS;dc5FBavq;$=&zS#aC7" \kM>
+ԛ!tI)>mZΨ%A0;҅<gG҆\m!OXCg"tbPc[ti]FY]%6c fơƈ+^g
+quOÿ+KB]vdIdO,E4 *'^ TLW3CbW' ˍ(IF(4B
+endstream
endobj
-1230 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 185.97 157.823 197.926 169.778 ]/A << /S /GoTo /D (page.28) >> >>
+1280 0 obj
+<< /Type /Page /Contents 1281 0 R /Resources 1279 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 909 0 R /Annots 1283 0 R >>
endobj
-1231 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 201.582 145.868 213.537 157.823 ]/A << /S /GoTo /D (page.36) >> >>
+1283 0 obj
+[ 1232 0 R 1233 0 R 1234 0 R 1235 0 R 1236 0 R 1237 0 R 1238 0 R 1239 0 R 1240 0 R 1241 0 R 1242 0 R 1243 0 R 1244 0 R 1245 0 R 1246 0 R 1247 0 R 1248 0 R 1249 0 R 1250 0 R 1251 0 R 1252 0 R 1253 0 R 1254 0 R 1255 0 R 1256 0 R 1257 0 R 1258 0 R 1259 0 R 1260 0 R 1261 0 R 1262 0 R 1263 0 R 1264 0 R 1265 0 R 1266 0 R 1267 0 R 1268 0 R 1269 0 R 1270 0 R 1271 0 R 1272 0 R 1273 0 R 1274 0 R 1275 0 R 1276 0 R 1277 0 R ]
endobj
1232 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 281.698 123.95 293.653 135.905 ]/A << /S /GoTo /D (page.38) >> >>
-endobj
-1236 0 obj
-<< /D [ 1234 0 R /XYZ 78.37 808.885 null ] >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 736.093 264.366 747.062 ]/A << /S /GoTo /D (section.1) >> >>
endobj
1233 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F56 384 0 R /F55 383 0 R /F57 385 0 R /F66 388 0 R >> /ProcSet [ /PDF /Text ] >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 714.245 277.846 725.085 ]/A << /S /GoTo /D (section.2) >> >>
endobj
-1287 0 obj
-<< /Filter /FlateDecode /Length 2031 >>
-stream
-x\n6+aə `q+mWm&%Q|^k؎%33<?鷋A I'qЖ>h%}K9_Pr0?`U3,Z-q%<[~FQ_:>y4&!B?^\Vw#uV6[Lh+q׬D8>)>L'j
-˘?,1yHݑyP`/Y]奄A']~ b^T IzHt9U(D*4EDR@cHux_Ki/U+ ~>_JU!4IH)6KTtQ\=H캯j}, ZC=kgioZ}RJ8(NKw3ΰ!Of;[_JG} L[y@aX;+p o=^f\
-%4cN'&Ҡ96;.nkfʏ6oGU|=@:;c=d*仆pa0LiT}Pc]<F Gzz` 1'U``87(|<9!qkHD;YwoݘYR G+{ë8j!G-} 0'yxΤ ӷ4Fznxa w]LK%~n#4 
-cvIcLj:ŧmus"SHS5 ს-OraM|!eta.I=0%<xM/ֽ3v9A(NLD-g4}ؘ[ )a 殆R)\l`$2LeI%=hZYU^ Lg3#Ť)6"#rȠ)^3|`P
-/<8ǵ
-@ά]py=?[1M\P+:l bqq#dھxU3$ ˜$zƚPg);ތޏaq5P\+)-7+a;賊|]Xv ?XݴӯnUmMKRhdP(S]
-J94i?M
-.?mA)R7Aؚn|z@L23IHVĮgM,.#)R*$"=|wnR$cmk7B[ISnc2hFP
-endstream
+1234 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 692.268 267.116 703.227 ]/A << /S /GoTo /D (section.3) >> >>
endobj
-1286 0 obj
-<< /Type /Page /Contents 1287 0 R /Resources 1285 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1180 0 R /Annots 1289 0 R >>
+1235 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 672.283 149.647 681.249 ]/A << /S /GoTo /D (section.4) >> >>
endobj
-1289 0 obj
-[ 1238 0 R 1239 0 R 1240 0 R 1241 0 R 1242 0 R 1243 0 R 1244 0 R 1245 0 R 1246 0 R 1247 0 R 1248 0 R 1249 0 R 1250 0 R 1251 0 R 1252 0 R 1253 0 R 1254 0 R 1255 0 R 1256 0 R 1257 0 R 1258 0 R 1259 0 R 1260 0 R 1261 0 R 1262 0 R 1263 0 R 1264 0 R 1265 0 R 1266 0 R 1267 0 R 1268 0 R 1269 0 R 1270 0 R 1271 0 R 1272 0 R 1273 0 R 1274 0 R 1275 0 R 1276 0 R 1277 0 R 1278 0 R 1279 0 R 1280 0 R 1281 0 R 1282 0 R 1283 0 R ]
+1236 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 660.168 180.132 669.403 ]/A << /S /GoTo /D (subsection.4.1) >> >>
+endobj
+1237 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 648.213 234.558 657.339 ]/A << /S /GoTo /D (subsection.4.2) >> >>
endobj
1238 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 736.093 264.366 747.062 ]/A << /S /GoTo /D (section.1) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 636.258 218.807 645.383 ]/A << /S /GoTo /D (subsection.4.3) >> >>
endobj
1239 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 714.245 277.846 725.085 ]/A << /S /GoTo /D (section.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 624.303 217.393 633.428 ]/A << /S /GoTo /D (subsection.4.4) >> >>
endobj
1240 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 692.268 267.116 703.227 ]/A << /S /GoTo /D (section.3) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 610.634 327.31 621.583 ]/A << /S /GoTo /D (subsection.4.5) >> >>
endobj
1241 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 672.283 149.647 681.249 ]/A << /S /GoTo /D (section.4) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 598.679 315.684 609.628 ]/A << /S /GoTo /D (subsection.4.6) >> >>
endobj
1242 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 660.168 180.132 669.403 ]/A << /S /GoTo /D (subsection.4.1) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 586.166 224.606 598.121 ]/A << /S /GoTo /D (subsection.4.7) >> >>
endobj
1243 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 648.213 234.558 657.339 ]/A << /S /GoTo /D (subsection.4.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 566.629 142.752 575.645 ]/A << /S /GoTo /D (section.5) >> >>
endobj
1244 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 636.258 218.807 645.383 ]/A << /S /GoTo /D (subsection.4.3) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 554.564 336.317 563.799 ]/A << /S /GoTo /D (subsection.5.1) >> >>
endobj
1245 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 624.303 217.393 633.428 ]/A << /S /GoTo /D (subsection.4.4) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 542.609 226.588 551.735 ]/A << /S /GoTo /D (subsubsection.5.1.1) >> >>
endobj
1246 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 610.634 327.31 621.583 ]/A << /S /GoTo /D (subsection.4.5) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 528.382 240.865 540.337 ]/A << /S /GoTo /D (subsubsection.5.1.2) >> >>
endobj
1247 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 598.679 315.684 609.628 ]/A << /S /GoTo /D (subsection.4.6) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 518.699 298.369 527.934 ]/A << /S /GoTo /D (subsection.5.2) >> >>
endobj
1248 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 578.584 142.752 587.6 ]/A << /S /GoTo /D (section.5) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 506.743 283.684 515.979 ]/A << /S /GoTo /D (subsection.5.3) >> >>
endobj
1249 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 566.519 336.317 575.755 ]/A << /S /GoTo /D (subsection.5.1) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 492.965 264.835 503.914 ]/A << /S /GoTo /D (subsubsection.5.3.1) >> >>
endobj
1250 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 554.564 226.588 563.69 ]/A << /S /GoTo /D (subsubsection.5.1.1) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 481.01 342.155 491.959 ]/A << /S /GoTo /D (subsubsection.5.3.2) >> >>
endobj
1251 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 540.337 240.865 552.293 ]/A << /S /GoTo /D (subsubsection.5.1.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 468.606 239.868 480.562 ]/A << /S /GoTo /D (subsubsection.5.3.3) >> >>
endobj
1252 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 530.654 298.369 539.889 ]/A << /S /GoTo /D (subsection.5.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 456.651 254.992 468.606 ]/A << /S /GoTo /D (subsubsection.5.3.4) >> >>
endobj
1253 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 518.699 283.684 527.934 ]/A << /S /GoTo /D (subsection.5.3) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 446.968 289.512 456.203 ]/A << /S /GoTo /D (subsubsection.5.3.5) >> >>
endobj
1254 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 504.92 264.835 515.869 ]/A << /S /GoTo /D (subsubsection.5.3.1) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 423.266 364.342 434.235 ]/A << /S /GoTo /D (section.6) >> >>
endobj
1255 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 492.965 342.155 503.914 ]/A << /S /GoTo /D (subsubsection.5.3.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 413.095 188.929 422.33 ]/A << /S /GoTo /D (subsection.6.1) >> >>
endobj
1256 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 480.562 239.868 492.517 ]/A << /S /GoTo /D (subsubsection.5.3.3) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 398.868 314.728 410.823 ]/A << /S /GoTo /D (subsection.6.2) >> >>
endobj
1257 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 468.606 254.992 480.562 ]/A << /S /GoTo /D (subsubsection.5.3.4) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 389.184 301.985 398.42 ]/A << /S /GoTo /D (subsection.6.3) >> >>
endobj
1258 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 458.923 289.512 468.158 ]/A << /S /GoTo /D (subsubsection.5.3.5) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 375.515 243.744 386.355 ]/A << /S /GoTo /D (subsection.6.4) >> >>
endobj
1259 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 435.222 364.342 446.19 ]/A << /S /GoTo /D (section.6) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 353.04 223.729 364.995 ]/A << /S /GoTo /D (section.7) >> >>
endobj
1260 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 425.05 188.929 434.285 ]/A << /S /GoTo /D (subsection.6.1) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 333.503 224.894 342.579 ]/A << /S /GoTo /D (section.8) >> >>
endobj
1261 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 410.823 314.728 422.778 ]/A << /S /GoTo /D (subsection.6.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 321.438 172.481 330.564 ]/A << /S /GoTo /D (subsection.8.1) >> >>
endobj
1262 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 401.139 301.985 410.375 ]/A << /S /GoTo /D (subsection.6.3) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 309.483 191.938 318.609 ]/A << /S /GoTo /D (subsection.8.2) >> >>
endobj
1263 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 387.471 243.744 398.31 ]/A << /S /GoTo /D (subsection.6.4) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 297.528 245.109 306.763 ]/A << /S /GoTo /D (subsection.8.3) >> >>
endobj
1264 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 364.995 223.729 376.95 ]/A << /S /GoTo /D (section.7) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 275.72 251.545 284.736 ]/A << /S /GoTo /D (section.9) >> >>
endobj
1265 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 345.458 224.894 354.534 ]/A << /S /GoTo /D (section.8) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 253.802 234.987 262.818 ]/A << /S /GoTo /D (section.10) >> >>
endobj
1266 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 333.393 172.481 342.519 ]/A << /S /GoTo /D (subsection.8.1) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 239.914 225.731 250.973 ]/A << /S /GoTo /D (subsection.10.1) >> >>
endobj
1267 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 321.438 191.938 330.564 ]/A << /S /GoTo /D (subsection.8.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 227.511 302.264 239.466 ]/A << /S /GoTo /D (subsection.10.2) >> >>
endobj
1268 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 309.483 245.109 318.718 ]/A << /S /GoTo /D (subsection.8.3) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 215.994 379.495 226.953 ]/A << /S /GoTo /D (subsection.10.3) >> >>
endobj
1269 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 287.675 251.545 296.691 ]/A << /S /GoTo /D (section.9) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 205.872 253.158 215.107 ]/A << /S /GoTo /D (subsection.10.4) >> >>
endobj
1270 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 265.757 234.987 274.773 ]/A << /S /GoTo /D (section.10) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 193.916 270.653 203.152 ]/A << /S /GoTo /D (subsection.10.5) >> >>
endobj
1271 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 251.869 225.731 262.928 ]/A << /S /GoTo /D (subsection.10.1) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 181.961 257.064 191.087 ]/A << /S /GoTo /D (subsection.10.6) >> >>
endobj
1272 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 239.466 302.264 251.421 ]/A << /S /GoTo /D (subsection.10.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 158.33 329.741 169.229 ]/A << /S /GoTo /D (section.11) >> >>
endobj
1273 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 227.949 379.495 238.908 ]/A << /S /GoTo /D (subsection.10.3) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 135.854 176.964 147.809 ]/A << /S /GoTo /D (section.12) >> >>
endobj
1274 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 217.827 253.158 227.062 ]/A << /S /GoTo /D (subsection.10.4) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 123.899 293.756 135.854 ]/A << /S /GoTo /D (subsection.12.1) >> >>
endobj
1275 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 205.872 270.653 215.107 ]/A << /S /GoTo /D (subsection.10.5) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 111.944 427.634 123.899 ]/A << /S /GoTo /D (subsection.12.2) >> >>
endobj
1276 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 193.916 257.064 203.042 ]/A << /S /GoTo /D (subsection.10.6) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 99.989 407.37 111.944 ]/A << /S /GoTo /D (subsection.12.3) >> >>
endobj
1277 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 170.285 329.741 181.184 ]/A << /S /GoTo /D (section.11) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 88.034 340.411 99.989 ]/A << /S /GoTo /D (subsection.12.4) >> >>
endobj
-1278 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 147.809 176.964 159.765 ]/A << /S /GoTo /D (section.12) >> >>
+1282 0 obj
+<< /D [ 1280 0 R /XYZ 78.37 808.885 null ] >>
endobj
1279 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 135.854 293.756 147.809 ]/A << /S /GoTo /D (subsection.12.1) >> >>
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F68 406 0 R /F65 392 0 R /F15 385 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-1280 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 123.899 427.634 135.854 ]/A << /S /GoTo /D (subsection.12.2) >> >>
+1329 0 obj
+<< /Filter /FlateDecode /Length 1922 >>
+stream
+x\n6+a!9$@ή]%RNn--Y33g<sdy=vF{" 9}.|҂xV-xR=Ž& RU9nC<|sC[t?`VL{zx6|hB<NZ?)Z3A( W.p
+qԠc5?R"M,tmZ8"ߞEzA#NŭM5β{kNB.D(m}FYsz522}.ڍ6g|wZV8;I*ʾIeiy:@&٧^ ˂l^Q^ /*Z3,k H!d*P_SPq!5&9C.O
+BO4@&k]U%_W -cp/@.H+r8 X& .U7 ~[
+vF%S9ݭ]q.aW-X`j<o
+`+?X "*:EJjR.PKaxo@M1Ztft-l{3oiNjs67lx/ŅE#KU&V_ʒK7=3(v| &d\EqINcy !c'j1"e u`Fbmk}ZYv/MxbP F0ٚ3P.nߢ V8xaѲ;l4.zC(T2Ц%6\1:|D[\-2= ~ޒET._jiav[PMm/Hk"G3ۅV+_{Yq3Y
+pFXA
+.}n sUKr6I5Y~{lU#k-{LU8ViLRw_#vih5*e6]G }19iߚ x~ڑ웞`KsPӾ7yhj%KZ"i
+ǡ+I>Reg%P}749;A9q -OeREXDdƴtj}JEzRxd}C7vJRm52rZѧ6Oĭ7
+A(=)KUe;"i~*wNUi%>˕ЊF'#^rꏀm7)E#EpmՉ0\?
+endstream
endobj
-1281 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 111.944 407.37 123.899 ]/A << /S /GoTo /D (subsection.12.3) >> >>
+1328 0 obj
+<< /Type /Page /Contents 1329 0 R /Resources 1327 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1331 0 R /Annots 1332 0 R >>
endobj
-1282 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 99.989 340.411 111.944 ]/A << /S /GoTo /D (subsection.12.4) >> >>
+1332 0 obj
+[ 1278 0 R 1284 0 R 1285 0 R 1286 0 R 1287 0 R 1288 0 R 1289 0 R 1290 0 R 1291 0 R 1292 0 R 1293 0 R 1294 0 R 1295 0 R 1296 0 R 1297 0 R 1298 0 R 1299 0 R 1300 0 R 1301 0 R 1302 0 R 1303 0 R 1304 0 R 1305 0 R 1306 0 R 1307 0 R 1308 0 R 1309 0 R 1310 0 R 1311 0 R 1312 0 R 1313 0 R 1314 0 R 1315 0 R 1316 0 R 1317 0 R 1318 0 R 1319 0 R 1320 0 R 1321 0 R 1322 0 R 1323 0 R 1324 0 R 1325 0 R 1326 0 R ]
endobj
-1283 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 78.629 269.836 89.498 ]/A << /S /GoTo /D (section.13) >> >>
+1278 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 758.132 269.836 769.001 ]/A << /S /GoTo /D (section.13) >> >>
endobj
-1288 0 obj
-<< /D [ 1286 0 R /XYZ 78.37 808.885 null ] >>
+1284 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 746.177 214.633 757.126 ]/A << /S /GoTo /D (subsection.13.1) >> >>
endobj
1285 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F69 402 0 R /F66 388 0 R /F15 381 0 R >> /ProcSet [ /PDF /Text ] >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 735.935 185.582 745.17 ]/A << /S /GoTo /D (subsection.13.2) >> >>
endobj
-1334 0 obj
-<< /Filter /FlateDecode /Length 1890 >>
-stream
-x\n8+aU\@9\gNaqi;vw`X,{*Y<,X{ArvA TzҪ4 }Ϟ
-
-R2 15Rc"C (dͼO'%ȻaJ`ç NH.o܅69]=qThүK_Ki,
-ί]û{^tꬒ]H>uuMYҙ=nP
-EG{Aj}CJJjJG]NCYj,Q@-Щ:/2eO9Ok݆߬\\R9T3W:˴ү ޏJę|0BkWL""IV_ I0JkvI_Xx̯5?ʲ6u6-{1MxB|E͠0\dj@ŸE#&M
-?DZъN ú.g5r6B[pOIu5Bxo&.wÂ| Fk**t$"e<焾uwINPKaqLROHUwҜ:sHgtZYˎRD%\"\c{^X}q1ʹ>X
-E??.`~p~vPk1lȼ.ZLJαnlb*9u75X
-^6dmH)^OVE_ƁV/v]F#rZ-^1a
-K]Ȗ~sS,hs[$(% ${Q%IS9 tIv\V @*j?YyaF5ukNK\x x]D
-endstream
+1286 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 723.98 214.673 733.215 ]/A << /S /GoTo /D (subsection.13.3) >> >>
endobj
-1333 0 obj
-<< /Type /Page /Contents 1334 0 R /Resources 1332 0 R /MediaBox [ 0 0 595.276 841.89 ] /Parent 1180 0 R /Annots 1336 0 R >>
+1287 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 712.025 277.328 721.26 ]/A << /S /GoTo /D (subsection.13.4) >> >>
endobj
-1336 0 obj
-[ 1284 0 R 1290 0 R 1291 0 R 1292 0 R 1293 0 R 1294 0 R 1295 0 R 1296 0 R 1297 0 R 1298 0 R 1299 0 R 1300 0 R 1301 0 R 1302 0 R 1303 0 R 1304 0 R 1305 0 R 1306 0 R 1307 0 R 1308 0 R 1309 0 R 1310 0 R 1311 0 R 1312 0 R 1313 0 R 1314 0 R 1315 0 R 1316 0 R 1317 0 R 1318 0 R 1319 0 R 1320 0 R 1321 0 R 1322 0 R 1323 0 R 1324 0 R 1325 0 R 1326 0 R 1327 0 R 1328 0 R 1329 0 R 1330 0 R 1331 0 R ]
+1288 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 697.798 306.887 709.753 ]/A << /S /GoTo /D (subsection.13.5) >> >>
endobj
-1284 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 758.132 214.633 769.081 ]/A << /S /GoTo /D (subsection.13.1) >> >>
+1289 0 obj
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 678.261 168.157 687.337 ]/A << /S /GoTo /D (section.14) >> >>
endobj
1290 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 747.89 185.582 757.126 ]/A << /S /GoTo /D (subsection.13.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 664.373 233.542 675.322 ]/A << /S /GoTo /D (subsection.14.1) >> >>
endobj
1291 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 735.935 214.673 745.17 ]/A << /S /GoTo /D (subsection.13.3) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 651.97 247.559 663.925 ]/A << /S /GoTo /D (subsection.14.2) >> >>
endobj
1292 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 723.98 277.328 733.215 ]/A << /S /GoTo /D (subsection.13.4) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 640.463 280.008 651.522 ]/A << /S /GoTo /D (subsection.14.3) >> >>
endobj
1293 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 709.753 306.887 721.708 ]/A << /S /GoTo /D (subsection.13.5) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 628.06 288.655 640.015 ]/A << /S /GoTo /D (subsection.14.4) >> >>
endobj
1294 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 690.217 168.157 699.293 ]/A << /S /GoTo /D (section.14) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 616.104 222.075 628.06 ]/A << /S /GoTo /D (subsection.14.5) >> >>
endobj
1295 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 676.329 233.542 687.278 ]/A << /S /GoTo /D (subsection.14.1) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 604.707 199.42 615.547 ]/A << /S /GoTo /D (subsection.14.6) >> >>
endobj
1296 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 663.925 247.559 675.88 ]/A << /S /GoTo /D (subsection.14.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 592.642 248.008 603.701 ]/A << /S /GoTo /D (subsection.14.7) >> >>
endobj
1297 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 652.418 280.008 663.477 ]/A << /S /GoTo /D (subsection.14.3) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 580.677 215.191 591.636 ]/A << /S /GoTo /D (subsection.14.8) >> >>
endobj
1298 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 640.015 288.655 651.97 ]/A << /S /GoTo /D (subsection.14.4) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 570.555 223.549 579.791 ]/A << /S /GoTo /D (subsection.14.9) >> >>
endobj
1299 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 628.06 222.075 640.015 ]/A << /S /GoTo /D (subsection.14.5) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 556.329 309.507 568.284 ]/A << /S /GoTo /D (subsection.14.10) >> >>
endobj
1300 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 616.662 199.42 627.502 ]/A << /S /GoTo /D (subsection.14.6) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 544.373 288.795 556.329 ]/A << /S /GoTo /D (subsection.14.11) >> >>
endobj
1301 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 604.598 248.008 615.656 ]/A << /S /GoTo /D (subsection.14.7) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 524.837 238.264 533.913 ]/A << /S /GoTo /D (section.15) >> >>
endobj
1302 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 592.633 215.191 603.591 ]/A << /S /GoTo /D (subsection.14.8) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 510.939 353.213 522.007 ]/A << /S /GoTo /D (subsection.15.1) >> >>
endobj
1303 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 582.51 223.549 591.746 ]/A << /S /GoTo /D (subsection.14.9) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 498.984 249.173 510.052 ]/A << /S /GoTo /D (subsubsection.15.1.1) >> >>
endobj
1304 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 568.284 309.507 580.239 ]/A << /S /GoTo /D (subsection.14.10) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 488.862 270.015 498.097 ]/A << /S /GoTo /D (subsubsection.15.1.2) >> >>
endobj
1305 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 556.329 288.795 568.284 ]/A << /S /GoTo /D (subsection.14.11) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 475.073 297.462 486.032 ]/A << /S /GoTo /D (subsection.15.2) >> >>
endobj
1306 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 536.792 238.264 545.868 ]/A << /S /GoTo /D (section.15) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 463.238 344.018 474.187 ]/A << /S /GoTo /D (subsection.15.3) >> >>
endobj
1307 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 522.894 353.213 533.963 ]/A << /S /GoTo /D (subsection.15.1) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 450.725 363.963 462.68 ]/A << /S /GoTo /D (subsection.15.4) >> >>
endobj
1308 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 510.939 249.173 522.007 ]/A << /S /GoTo /D (subsubsection.15.1.1) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 429.365 210.289 440.264 ]/A << /S /GoTo /D (section.16) >> >>
endobj
1309 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 116.232 500.817 270.015 510.052 ]/A << /S /GoTo /D (subsubsection.15.1.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 409.27 186.289 418.286 ]/A << /S /GoTo /D (section.17) >> >>
endobj
1310 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 487.029 297.462 497.987 ]/A << /S /GoTo /D (subsection.15.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 395.372 186.558 406.331 ]/A << /S /GoTo /D (subsection.17.1) >> >>
endobj
1311 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 475.193 344.018 486.142 ]/A << /S /GoTo /D (subsection.15.3) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 383.427 194.419 394.376 ]/A << /S /GoTo /D (subsection.17.2) >> >>
endobj
1312 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 462.68 363.963 474.635 ]/A << /S /GoTo /D (subsection.15.4) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 371.472 262.354 382.421 ]/A << /S /GoTo /D (subsection.17.3) >> >>
endobj
1313 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 441.32 210.289 452.219 ]/A << /S /GoTo /D (section.16) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 359.626 198.045 370.466 ]/A << /S /GoTo /D (subsection.17.4) >> >>
endobj
1314 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 421.225 186.289 430.241 ]/A << /S /GoTo /D (section.17) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 337.708 143.32 348.548 ]/A << /S /GoTo /D (section.18) >> >>
endobj
1315 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 407.327 186.558 418.286 ]/A << /S /GoTo /D (subsection.17.1) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 325.195 349.268 337.151 ]/A << /S /GoTo /D (subsection.18.1) >> >>
endobj
1316 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 395.382 194.419 406.331 ]/A << /S /GoTo /D (subsection.17.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 315.512 207.749 324.637 ]/A << /S /GoTo /D (subsection.18.2) >> >>
endobj
1317 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 383.427 262.354 394.376 ]/A << /S /GoTo /D (subsection.17.3) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 303.557 217.492 312.682 ]/A << /S /GoTo /D (subsection.18.3) >> >>
endobj
1318 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 371.581 198.045 382.421 ]/A << /S /GoTo /D (subsection.17.4) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 291.601 178.249 300.727 ]/A << /S /GoTo /D (subsection.18.4) >> >>
endobj
1319 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 349.664 143.32 360.503 ]/A << /S /GoTo /D (section.18) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 277.813 298.688 288.772 ]/A << /S /GoTo /D (subsection.18.5) >> >>
endobj
1320 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 337.151 349.268 349.106 ]/A << /S /GoTo /D (subsection.18.1) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 267.691 181.099 276.817 ]/A << /S /GoTo /D (subsection.18.6) >> >>
endobj
1321 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 327.467 207.749 336.593 ]/A << /S /GoTo /D (subsection.18.2) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 255.736 204.192 264.971 ]/A << /S /GoTo /D (subsection.18.7) >> >>
endobj
1322 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 315.512 217.492 324.637 ]/A << /S /GoTo /D (subsection.18.3) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 241.948 272.227 253.016 ]/A << /S /GoTo /D (subsection.18.8) >> >>
endobj
1323 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 303.557 178.249 312.682 ]/A << /S /GoTo /D (subsection.18.4) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 229.554 324.451 241.509 ]/A << /S /GoTo /D (subsection.18.9) >> >>
endobj
1324 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 289.768 298.688 300.727 ]/A << /S /GoTo /D (subsection.18.5) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 218.037 214.145 229.215 ]/A << /S /GoTo /D (subsection.18.10) >> >>
endobj
1325 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 279.646 181.099 288.772 ]/A << /S /GoTo /D (subsection.18.6) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 196.179 132.929 206.999 ]/A << /S /GoTo /D (section.19) >> >>
endobj
1326 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 267.691 204.192 276.926 ]/A << /S /GoTo /D (subsection.18.7) >> >>
-endobj
-1327 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 253.903 272.227 264.971 ]/A << /S /GoTo /D (subsection.18.8) >> >>
-endobj
-1328 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 241.509 324.451 253.464 ]/A << /S /GoTo /D (subsection.18.9) >> >>
-endobj
-1329 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 93.318 229.992 214.145 241.17 ]/A << /S /GoTo /D (subsection.18.10) >> >>
+<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 176.144 108.74 185.161 ]/A << /S /GoTo /D (section*.2) >> >>
endobj
1330 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 208.134 132.929 218.954 ]/A << /S /GoTo /D (section.19) >> >>
-endobj
-1331 0 obj
-<< /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [ 78.374 188.099 108.74 197.116 ]/A << /S /GoTo /D (section*.2) >> >>
-endobj
-1335 0 obj
-<< /D [ 1333 0 R /XYZ 78.37 808.885 null ] >>
+<< /D [ 1328 0 R /XYZ 78.37 808.885 null ] >>
endobj
-1332 0 obj
-<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F15 381 0 R /F66 388 0 R >> /ProcSet [ /PDF /Text ] >>
+1327 0 obj
+<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font << /F65 392 0 R /F15 385 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
1 0 obj
<< /pgf@ca0.75 << /ca 0.75 >> /pgf@CA0.4 << /CA 0.4 >> /pgf@ca0.4 << /ca 0.4 >> /pgf@bmMultiply<< /BM /Multiply>> /pgf@ca1.0 << /ca 1.0 >>>>
endobj
2 0 obj
-<< /pgfpat5 825 0 R /pgfpat4 826 0 R /pgfpat10 829 0 R>>
+<< /pgfpat5 833 0 R /pgfpat4 834 0 R /pgfpat10 837 0 R>>
endobj
3 0 obj
<< /pgfprgb [/Pattern /DeviceRGB] >>
endobj
-1337 0 obj
-[489.6 ]
-endobj
-1338 0 obj
+1333 0 obj
[ 28 [ 510 ] 96 [ 363 ] 118 [ 490 ] ]
endobj
-1340 0 obj
+1335 0 obj
<< /Filter /FlateDecode /Length 17 >>
stream
xc```&
endstream
endobj
-1341 0 obj
+1336 0 obj
<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 692 >>
stream
xcd`aa`ddr N+O,,MIyP#C,9?Xy~s0aS  K,t~L;74G$0GAA5/<"-6300q/,L(Q0200
@@ -5678,10 +5695,10 @@ Nz
>XOoOOo_O߄=<<;WLrxxJ
endstream
endobj
-1339 0 obj
-<< /Type /FontDescriptor /FontName /TZAQYL+LMSans8-Oblique /Flags 4 /FontBBox [ -486 -314 1548 1154 ] /Ascent 1154 /CapHeight 694 /Descent -314 /ItalicAngle -12 /StemV 98 /XHeight 444 /FontFile3 1341 0 R /CIDSet 1340 0 R >>
+1334 0 obj
+<< /Type /FontDescriptor /FontName /TZAQYL+LMSans8-Oblique /Flags 4 /FontBBox [ -486 -314 1548 1154 ] /Ascent 1154 /CapHeight 694 /Descent -314 /ItalicAngle -12 /StemV 98 /XHeight 444 /FontFile3 1336 0 R /CIDSet 1335 0 R >>
endobj
-1342 0 obj
+1337 0 obj
<< /Filter /FlateDecode /Length 374 >>
stream
x}RMo@x=Y45!b7}Md.pwwM[< t7ްOa5C/Zt9jȑl9V,
@@ -5691,23 +5708,23 @@ y@ws$壷9wNF IpCPB }Jy"yr^IKDЙ\_r&
rndfA~
endstream
endobj
-823 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /TZAQYL+LMSans8-Oblique /DescendantFonts [ 1343 0 R ] /ToUnicode 1342 0 R >>
+828 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /TZAQYL+LMSans8-Oblique /DescendantFonts [ 1338 0 R ] /ToUnicode 1337 0 R >>
endobj
-1343 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /TZAQYL+LMSans8-Oblique /FontDescriptor 1339 0 R /W 1338 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1338 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /TZAQYL+LMSans8-Oblique /FontDescriptor 1334 0 R /W 1333 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1344 0 obj
+1339 0 obj
[ 56 [ 681 681 ] 82 [ 681 ] 88 [ 403 ] 106 [ 681 681 ] ]
endobj
-1346 0 obj
+1341 0 obj
<< /Filter /FlateDecode /Length 18 >>
stream
xc`

endstream
endobj
-1347 0 obj
+1342 0 obj
<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 1129 >>
stream
xuT{LSW[W@N½G2A ^DŽU{io[z(Pp
@@ -5722,10 +5739,10 @@ xuT{LSW[W@N½G2A ^DŽU{io[z(Pp
sn> <TQZPt@ UQ=R]E&ni,lAC#bdČjnpu,;T7>6<4N=$Z#yB<R eD E*yHa)ݤ1^MZN?|@˰veFb&u!}^w@x Q3%Ib4^A_>>:Xk kPT%J@i~ Ρ{(;> Qd"\4-*ۤQ2{[ F:Ј폾u1B}O jkq \5|[P6?}uxzK2iC惾ELm 9cBO"{lz2|Bh4zGo塞.OgW;Ge_
endstream
endobj
-1345 0 obj
-<< /Type /FontDescriptor /FontName /GOIBMZ+LMRoman5-Regular /Flags 4 /FontBBox [ -566 -303 1772 1126 ] /Ascent 1126 /CapHeight 683 /Descent -303 /ItalicAngle 0 /StemV 134 /XHeight 431 /FontFile3 1347 0 R /CIDSet 1346 0 R >>
+1340 0 obj
+<< /Type /FontDescriptor /FontName /GOIBMZ+LMRoman5-Regular /Flags 4 /FontBBox [ -566 -303 1772 1126 ] /Ascent 1126 /CapHeight 683 /Descent -303 /ItalicAngle 0 /StemV 134 /XHeight 431 /FontFile3 1342 0 R /CIDSet 1341 0 R >>
endobj
-1348 0 obj
+1343 0 obj
<< /Filter /FlateDecode /Length 387 >>
stream
x}Rj0+^xI` YYHB)9s*%#ۇ} /4ovM<7J67[e%t6zȐl5t5tg<iq*aتM]bց?M:]}y﫝,21vxjΙSuYf K1l& 3aEK[9L]'a:*ST5%cʼź*.N}QkMY$ 0uk:+|3~4ˣ5KY:T2ʌ ICJ
@@ -5733,28 +5750,28 @@ x}Rj0+^xI` YYHB)9s*%#ۇ} /4ovM<7J67[e%t
rhah⸁CS-f_&[ QJg`jFo[UTq{ ,r}
endstream
endobj
-793 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /GOIBMZ+LMRoman5-Regular /DescendantFonts [ 1349 0 R ] /ToUnicode 1348 0 R >>
+807 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /GOIBMZ+LMRoman5-Regular /DescendantFonts [ 1344 0 R ] /ToUnicode 1343 0 R >>
endobj
-1349 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /GOIBMZ+LMRoman5-Regular /FontDescriptor 1345 0 R /W 1344 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1344 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /GOIBMZ+LMRoman5-Regular /FontDescriptor 1340 0 R /W 1339 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1350 0 obj
+1345 0 obj
[575 575 575 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 559 638.9 511.1 638.9 ]
endobj
-1351 0 obj
+1346 0 obj
[1083.3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1361.1 ]
endobj
-1352 0 obj
+1347 0 obj
[ 28 [ 603 ] 35 [ 544 ] 43 [ 544 ] 47 [ 603 ] ]
endobj
-1354 0 obj
+1349 0 obj
<< /Filter /FlateDecode /Length 14 >>
stream
xc``
endstream
endobj
-1355 0 obj
+1350 0 obj
<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 900 >>
stream
xڵSoL[U]<t}dmbhAf P(d+}mx{v –@2q5,C~G>D_Yh9sﹹ990AkO4_7 N:
@@ -5769,36 +5786,36 @@ WZVRV
1mb7aKuO[&,ڗ:E["aS4c &8dxgxV6-:'T(Ed|<>a)Z9?'Uؚ
endstream
endobj
-1353 0 obj
-<< /Type /FontDescriptor /FontName /BWIYUD+LMRoman7-Italic /Flags 4 /FontBBox [ -528 -292 1571 1123 ] /Ascent 1123 /CapHeight 683 /Descent -292 /ItalicAngle -15 /StemV 123 /XHeight 431 /FontFile3 1355 0 R /CIDSet 1354 0 R >>
+1348 0 obj
+<< /Type /FontDescriptor /FontName /BWIYUD+LMRoman7-Italic /Flags 4 /FontBBox [ -528 -292 1571 1123 ] /Ascent 1123 /CapHeight 683 /Descent -292 /ItalicAngle -15 /StemV 123 /XHeight 431 /FontFile3 1350 0 R /CIDSet 1349 0 R >>
endobj
-1356 0 obj
+1351 0 obj
<< /Filter /FlateDecode /Length 375 >>
stream
x}R]k0}ϯ{6U@0uBa~`cM.`* BJOι7瞴ɣg XF3fˢ"\DiVychr4НeL
ӳLSñUM(M΁?G6^[U)Lq,h'ɊՁ%> ;Z(9O)/TƫI|qk $wI2
endstream
endobj
-693 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /BWIYUD+LMRoman7-Italic /DescendantFonts [ 1357 0 R ] /ToUnicode 1356 0 R >>
+709 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /BWIYUD+LMRoman7-Italic /DescendantFonts [ 1352 0 R ] /ToUnicode 1351 0 R >>
endobj
-1357 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /BWIYUD+LMRoman7-Italic /FontDescriptor 1353 0 R /W 1352 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1352 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /BWIYUD+LMRoman7-Italic /FontDescriptor 1348 0 R /W 1347 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1358 0 obj
+1353 0 obj
[892.9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1138.9 0 585.3 ]
endobj
-1359 0 obj
+1354 0 obj
[ 47 [ 525 ] 50 [ 525 ] 64 [ 525 ] 66 [ 525 ] 72 [ 525 ] 77 [ 525 ] 81 [ 525 ] 98 [ 525 ] 102 [ 525 ] 105 [ 525 ] 116 [ 525 ] 118 [ 525 ] ]
endobj
-1361 0 obj
+1356 0 obj
<< /Filter /FlateDecode /Length 21 >>
stream
xc`

endstream
endobj
-1362 0 obj
+1357 0 obj
<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 1486 >>
stream
xmU{LG%ʉr9ݚj!A⣩Qx==#Z-w CSV5$֤Uk5ZlS5SuV&Mdv3oeǢ1Ǔ
@@ -5817,10 +5834,10 @@ sƭw¸Om-åu^
T;,;T(w ;h 4
endstream
endobj
-1360 0 obj
-<< /Type /FontDescriptor /FontName /MSSSGB+LMMonoLt10-Bold /Flags 4 /FontBBox [ -454 -308 734 1039 ] /Ascent 1039 /CapHeight 611 /Descent -308 /ItalicAngle 0 /StemV 175 /XHeight 431 /FontFile3 1362 0 R /CIDSet 1361 0 R >>
+1355 0 obj
+<< /Type /FontDescriptor /FontName /MSSSGB+LMMonoLt10-Bold /Flags 4 /FontBBox [ -454 -308 734 1039 ] /Ascent 1039 /CapHeight 611 /Descent -308 /ItalicAngle 0 /StemV 175 /XHeight 431 /FontFile3 1357 0 R /CIDSet 1356 0 R >>
endobj
-1363 0 obj
+1358 0 obj
<< /Filter /FlateDecode /Length 420 >>
stream
x}Ok0@zp-;mڔ`$bhRe4
@@ -5829,22 +5846,22 @@ b!~%’]ތGO|{0rV`-L6F j(Qjֈ
aa>>׸1iCU<o3޶g
endstream
endobj
-626 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /MSSSGB+LMMonoLt10-Bold /DescendantFonts [ 1364 0 R ] /ToUnicode 1363 0 R >>
+633 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /MSSSGB+LMMonoLt10-Bold /DescendantFonts [ 1359 0 R ] /ToUnicode 1358 0 R >>
endobj
-1364 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /MSSSGB+LMMonoLt10-Bold /FontDescriptor 1360 0 R /W 1359 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1359 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /MSSSGB+LMMonoLt10-Bold /FontDescriptor 1355 0 R /W 1354 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1365 0 obj
+1360 0 obj
[ 47 [ 590 ] 81 [ 531 ] 98 [ 419 ] 105 [ 413 ] 116 [ 561 ] ]
endobj
-1367 0 obj
+1362 0 obj
<< /Filter /FlateDecode /Length 19 >>
stream
xc`
endstream
endobj
-1368 0 obj
+1363 0 obj
<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 1167 >>
stream
x}TmLe^-+]lqShq ls RPG6Zz#"/\{/0a8`
@@ -5859,10 +5876,10 @@ _eR}&:q5d ub cly}xϱ3L7_kNGWg?v
#h}^
endstream
endobj
-1366 0 obj
-<< /Type /FontDescriptor /FontName /JIXNST+LMRomanSlant8-Regular /Flags 4 /FontBBox [ -483 -292 1526 1125 ] /Ascent 1125 /CapHeight 683 /Descent -292 /ItalicAngle -10 /StemV 98 /XHeight 431 /FontFile3 1368 0 R /CIDSet 1367 0 R >>
+1361 0 obj
+<< /Type /FontDescriptor /FontName /JIXNST+LMRomanSlant8-Regular /Flags 4 /FontBBox [ -483 -292 1526 1125 ] /Ascent 1125 /CapHeight 683 /Descent -292 /ItalicAngle -10 /StemV 98 /XHeight 431 /FontFile3 1363 0 R /CIDSet 1362 0 R >>
endobj
-1369 0 obj
+1364 0 obj
<< /Filter /FlateDecode /Length 388 >>
stream
xڍR]k0}ϯ{6tN鄎ĖkM.&%MKR0Џ{9'<l>V :+IT.P "GVlb .e,Yr,Y^slY^$ցn=o4XT$Ϥ;<yZSar6X
@@ -5871,25 +5888,25 @@ s˭1=Ct8VePgdnWJNñ~
δ3\9N#ƃ< =z5A Ӿ<Fx?)q^ݳZkkL m*U=z}+j
endstream
endobj
-599 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /JIXNST+LMRomanSlant8-Regular /DescendantFonts [ 1370 0 R ] /ToUnicode 1369 0 R >>
+606 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /JIXNST+LMRomanSlant8-Regular /DescendantFonts [ 1365 0 R ] /ToUnicode 1364 0 R >>
endobj
-1370 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /JIXNST+LMRomanSlant8-Regular /FontDescriptor 1366 0 R /W 1365 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1365 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /JIXNST+LMRomanSlant8-Regular /FontDescriptor 1361 0 R /W 1360 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1371 0 obj
+1366 0 obj
[361.7 429.7 0 0 0 644.7 ]
endobj
-1372 0 obj
+1367 0 obj
[ 28 [ 525 ] 35 [ 525 ] 43 [ 525 ] 47 [ 525 ] 50 [ 525 ] 55 [ 525 ] 63 [ 525 525 ] 66 [ 525 ] 72 [ 525 ] 74 [ 525 525 525 525 ] 81 [ 525 ] 84 [ 525 ] 88 [ 525 ] 96 [ 525 ] 98 [ 525 ] 103 [ 525 ] 105 [ 525 ] 109 [ 525 ] 112 [ 525 ] 116 [ 525 ] 118 [ 525 ] ]
endobj
-1374 0 obj
+1369 0 obj
<< /Filter /FlateDecode /Length 23 >>
stream
xc``Td\ǣaK
endstream
endobj
-1375 0 obj
+1370 0 obj
<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 2668 >>
stream
xڍWyX
@@ -5905,10 +5922,10 @@ pDc;
|~b~_Pr6'=:?gбƲ՜ٚ3ܖRj&v>zfC3x22#n"U )wM9=ěm<BA1FB7x[\ݞ@{a7L 
endstream
endobj
-1373 0 obj
-<< /Type /FontDescriptor /FontName /RBEIGJ+LMMonoSlant10-Regular /Flags 4 /FontBBox [ -477 -316 786 1016 ] /Ascent 1016 /CapHeight 611 /Descent -316 /ItalicAngle -10 /StemV 175 /XHeight 431 /FontFile3 1375 0 R /CIDSet 1374 0 R >>
+1368 0 obj
+<< /Type /FontDescriptor /FontName /RBEIGJ+LMMonoSlant10-Regular /Flags 4 /FontBBox [ -477 -316 786 1016 ] /Ascent 1016 /CapHeight 611 /Descent -316 /ItalicAngle -10 /StemV 175 /XHeight 431 /FontFile3 1370 0 R /CIDSet 1369 0 R >>
endobj
-1376 0 obj
+1371 0 obj
<< /Filter /FlateDecode /Length 484 >>
stream
xڍn0<)=P !VRCBIj ld_cZi6R|?{?3yqOz9|_ul؂^)?w%2ϋM!pŅh .%?_~/,J !pJԤP-!$Tϥx"=T?
@@ -5916,25 +5933,25 @@ xڍn0<)=P !VRCBIj ld_cZi6R|?{?3yqOz9|_
s}IHiC--"%R 9僥Z6H.)Gz;}[ Ɛ!)R$2A/)KAnb;M]=V?ZzTJ]N{涹dg.Nzy
endstream
endobj
-469 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /RBEIGJ+LMMonoSlant10-Regular /DescendantFonts [ 1377 0 R ] /ToUnicode 1376 0 R >>
+478 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /RBEIGJ+LMMonoSlant10-Regular /DescendantFonts [ 1372 0 R ] /ToUnicode 1371 0 R >>
endobj
-1377 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /RBEIGJ+LMMonoSlant10-Regular /FontDescriptor 1373 0 R /W 1372 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1372 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /RBEIGJ+LMMonoSlant10-Regular /FontDescriptor 1368 0 R /W 1367 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1378 0 obj
+1373 0 obj
[734 ]
endobj
-1379 0 obj
+1374 0 obj
[ 28 [ 549 ] 35 [ 494 ] 40 [ 329 329 ] 43 [ 494 ] 45 [ 329 ] 47 [ 549 ] 50 [ 494 ] 55 [ 329 ] 59 [ 494 ] 63 [ 549 ] 66 [ 329 ] 70 [ 494 ] 72 [ 274 ] 75 [ 878 ] 77 [ 603 ] 81 [ 549 ] 84 [ 549 439 439 ] 88 [ 329 ] 96 [ 453 ] 98 [ 439 ] 104 [ 768 357 ] 109 [ 576 ] 112 [ 494 ] 114 [ 713 ] 116 [ 495 ] 118 [ 521 ] 502 [ 329 ] ]
endobj
-1381 0 obj
+1376 0 obj
<< /Filter /FlateDecode /Length 27 >>
stream
xc``(4ůaU &
endstream
endobj
-1382 0 obj
+1377 0 obj
<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 3534 >>
stream
xڭX tW-Y.!,!GISU
@@ -5954,38 +5971,38 @@ Mn >
.H^ڊ)jz!-,J28 w`9 `di>h8ߐ`ju<߉t]!_
endstream
endobj
-1380 0 obj
-<< /Type /FontDescriptor /FontName /ITTKMT+LMRoman8-Italic /Flags 4 /FontBBox [ -489 -292 1472 1124 ] /Ascent 1124 /CapHeight 683 /Descent -292 /ItalicAngle -15 /StemV 110 /XHeight 431 /FontFile3 1382 0 R /CIDSet 1381 0 R >>
+1375 0 obj
+<< /Type /FontDescriptor /FontName /ITTKMT+LMRoman8-Italic /Flags 4 /FontBBox [ -489 -292 1472 1124 ] /Ascent 1124 /CapHeight 683 /Descent -292 /ItalicAngle -15 /StemV 110 /XHeight 431 /FontFile3 1377 0 R /CIDSet 1376 0 R >>
endobj
-1383 0 obj
+1378 0 obj
<< /Filter /FlateDecode /Length 508 >>
stream
x}Mo0=8!PH )ڥJk6q$kuZb)(Ox͑#g7Nٗ7lqI /Dh[׈ lɷ+qJ;\OSM Ec_?M]>7AE5\6FfĂGι䦩M{7sl}Nv4 d#/j='|չ:5jfj~fRg6/Qm{!#q/˘άRfwp>C[K,@h$m)+ՙjGJ~sDO@0΃$Ilt"Γ 3A!ha)^-h 9hk)܀vE!(䲤 %(AKe E. EВ<[YJ9(jԋQ!DBdI80R)SJAKS. zO2hI%Z giߏ%׮f٠J=hD^&zy/-
endstream
endobj
-415 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /ITTKMT+LMRoman8-Italic /DescendantFonts [ 1384 0 R ] /ToUnicode 1383 0 R >>
+419 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /ITTKMT+LMRoman8-Italic /DescendantFonts [ 1379 0 R ] /ToUnicode 1378 0 R >>
endobj
-1384 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /ITTKMT+LMRoman8-Italic /FontDescriptor 1380 0 R /W 1379 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1379 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /ITTKMT+LMRoman8-Italic /FontDescriptor 1375 0 R /W 1374 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1385 0 obj
+1380 0 obj
[1123 ]
endobj
-1386 0 obj
+1381 0 obj
[777.8 0 777.8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 388.9 388.9 ]
endobj
-1387 0 obj
+1382 0 obj
[ 28 [ 525 ] 43 [ 489 ] 50 [ 511 ] 64 [ 367 ] 66 [ 256 ] 75 [ 867 ] 77 [ 561 ] 82 [ 550 ] 96 [ 372 ] 105 [ 404 550 550 ] 116 [ 500 ] ]
endobj
-1389 0 obj
+1384 0 obj
<< /Filter /FlateDecode /Length 23 >>
stream
xc```P`X P

endstream
endobj
-1390 0 obj
+1385 0 obj
<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 1716 >>
stream
xڍU pEUM,@+v70 X6e -ǀqL!`VK>eKeZ?K1`[4@
@@ -5997,10 +6014,10 @@ NIcO>ܷuecM·:tZ"K 4Hp'L4)v(*(8G:z<9
3##g< AjSS
endstream
endobj
-1388 0 obj
-<< /Type /FontDescriptor /FontName /QJUVUX+LMSans10-Bold /Flags 4 /FontBBox [ -460 -297 1761 1134 ] /Ascent 1134 /CapHeight 694 /Descent -297 /ItalicAngle 0 /StemV 102 /XHeight 458 /FontFile3 1390 0 R /CIDSet 1389 0 R >>
+1383 0 obj
+<< /Type /FontDescriptor /FontName /QJUVUX+LMSans10-Bold /Flags 4 /FontBBox [ -460 -297 1761 1134 ] /Ascent 1134 /CapHeight 694 /Descent -297 /ItalicAngle 0 /StemV 102 /XHeight 458 /FontFile3 1385 0 R /CIDSet 1384 0 R >>
endobj
-1391 0 obj
+1386 0 obj
<< /Filter /FlateDecode /Length 422 >>
stream
x}Kk0stZA04I .O[GX2ȿ[(9gFgƚ{.i6e^5-M&+#u(Qj{ ֈ;.UUw̅^:nZN?k^>eۄG %k8 ImאrZ.MkY<xUZ!!l|^ 
@@ -6008,132 +6025,132 @@ x}Kk0stZA04I .O[GX2ȿ[(9gFgƚ{.i6e^5-M
և! PTa$M%Vzl9'g/SfK co,]#gI)]e<hmsrftŒ\DWDgD7g3#eN~t,zkݎK[TAc_w2
endstream
endobj
-403 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /QJUVUX+LMSans10-Bold /DescendantFonts [ 1392 0 R ] /ToUnicode 1391 0 R >>
+407 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /QJUVUX+LMSans10-Bold /DescendantFonts [ 1387 0 R ] /ToUnicode 1386 0 R >>
endobj
-1392 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /QJUVUX+LMSans10-Bold /FontDescriptor 1388 0 R /W 1387 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1387 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /QJUVUX+LMSans10-Bold /FontDescriptor 1383 0 R /W 1382 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1393 0 obj
-[ 27 [ 850 547 ] 34 [ 800 625 575 ] 38 [ 575 575 ] 42 [ 813 500 ] 46 [ 862 625 ] 49 [ 738 513 563 ] 55 [ 344 563 563 884 563 ] 62 [ 880 625 375 419 313 ] 68 [ 344 ] 70 [ 594 ] 72 [ 313 ] 74 [ 1067 938 880 625 563 ] 80 [ 845 563 563 769 625 438 438 ] 88 [ 313 ] 95 [ 839 460 625 444 ] 100 [ 563 563 ] 104 [ 782 438 563 563 865 625 ] 111 [ 850 594 1162 813 850 594 ] 118 [ 594 688 500 563 656 ] 499 [ 551 551 ] ]
+1388 0 obj
+[ 27 [ 850 547 875 ] 34 [ 800 625 575 ] 38 [ 575 575 ] 42 [ 813 500 ] 46 [ 862 625 ] 49 [ 738 513 563 ] 55 [ 344 563 563 884 563 ] 62 [ 880 625 375 419 313 ] 68 [ 344 ] 70 [ 594 ] 72 [ 313 ] 74 [ 1067 938 880 625 563 ] 80 [ 845 563 563 769 625 438 438 ] 88 [ 313 ] 95 [ 839 460 625 444 ] 100 [ 563 563 ] 104 [ 782 438 563 563 865 625 ] 111 [ 850 594 1162 813 850 594 ] 118 [ 594 688 500 563 656 ] 499 [ 551 551 ] ]
endobj
-1395 0 obj
+1390 0 obj
<< /Filter /FlateDecode /Length 29 >>
stream
-xc``6.j߿7?` H
+xc``6.j߿7?` H
endstream
endobj
-1396 0 obj
-<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 6685 >>
-stream
-xڝy \DH&"F%13}G[oj.bQ\pȾC ,a$ Y(JZDmmݵ.Zm }~;3gP@ pt[|ĕnkC¦5yAx^;#{F<ۇlxe{[Kn&?6R8h
-;7K룈 RD*Xp V ULP|}]\cG5*E*s]?Xve X<%:.Z
- QMO >޾||â)PèHj5KM&RS(j65I͢fSsy|}jrR˩JʍZES5ZG<픒)ʗ
- *
-Bp*(MX*]mHj5XN_cf6lG&>'?wuG;|Bk>A\ ?m@ƀlA&9ܕI_ N|F_vȑs,v|5d͐Nn 7LΰJX
-2T3-VhDn:CKDi38؉9CsQ ~H[Ǚ_T!!VtON&ZCLOH×!KD%8%794 x@z?dզ$vU!~<vvY3ZkdT'EzT\=;A۱T^ۇGwsRO?"#7@_MTXI#ԙ0W0̦;dͼ0a߽'3e婳|p_g!PD/jnỲ1l&Vaj'oexqG u8tuA K}P`x8+%.؛4~?] c;]USUS[Laؗ`4mhʏ%5YwҘA-uv",]FN8\g'
-2LΔLnW2Dab~~b-S^YmX68QVѳ3vдsQaRi]{p_Я];&?ڈْSr}!W<bt,ݐ:(V$ykIt Oޕ]cgn+ґOh<f\1jOu7:ݰ78ڬ*
-}$G8{5o|~hVN(/M]FbT g7%%&c翌4i *5Ě׷tB*SRҰl4f<CgPqY' /j ECz:_(<鱴})x40\ ؑ@fCZ @244Yl\FR;#ts,ju\NNrbkžCe'a:v]Řþs0Kd柒"R~Hc$cw2MeZG
-)27qCvkҠi ? G7k6a$"̼) jA>Wf-q<OKͿc
-<;0̉Se+mXO#G㷛86Rf4;s`V;LhOi^u2/0x*}_=k&/T;TTL6-Dz
-]B'nHG2[394{<AOcHL*QN]Nr&<rz3G9i|)\Gj;V
-aⱗU 4ሾURshf^azN9*8q>c×Jrs޳p9xy5|pˇq~A0 wrM_
-cKL; uOn[-9s'X`*OIJ8T& ?EvĿ}Tl㋉kW%m1w3O 2~/˕N&%;Z[+Įa0pG0u:
-&džz1kƕt|>{:nHWsˊ#\UL)*@IKxHh |oKX2TL(Y}|[fTO'ٵ-)n:ڝU[f?8}ՍQlm&j;gq͡y<yD3֪)+ ✬d<nZNmEYi!5];~]{n2@;E)졋P"8Scf='N6ӗa
-+!STI\_BF >A„wSG+Tyٴ(4@D'=uT־^&
-4Pw:/UcqK,`A)t%X${;]hz#G3%mKl)מb["9jgڟ#m+D_(BMKZnDZ1~Ϫޣ5hEFgّf_ !X*x#q=}GtIoB6NVUF(Y-i[gHcwlFFVS/X8}lW#w 42k)LZ hg,ҧpIٹ)x8OҒk Kd,c"=!Sҥ9ٙZ-1B^IKut~چko%+K+ʌOu/H'%@e)Hi$kG7GK1>'5|o8&cO] .~8V!u3,p@XFgp I+.2h뾰З=GZtz?a0eW~jS_\>BD.e7 ti0Qd=^}=7¶c, >ܹb3qf5>"Q<WBp_zwO]8h-{ >!V™w{]G7PN=ט-ЖJX28{&O|+ԔueL=ʯQߛw뫙^hǬP-`~ oz;c:
-Ȟc?v =џq)37Qks+?6Mg\esSFRr rJJti O3Ďxȓ0 f<z,/D˰#ieU[#«hf9|"iI c 'lԢ`v؆ qсÜň tzPD[q:{I6ZO5!Z&IGÜoళ24NDf- iou"O΁c';̸{`Oҧ?fZ:fѨO>!#sRi<Z'vV1ιc'8A:xzbtY2Ula؂--EHLKx5F׀]S]0`+,#5FjQ*Al'ۚ"H7n`[,d5.[)E v/JhRba#A>>A!ަ6SVrVcR Z{)pt*=79Nc7fÙWs0ejqZ|Zʗ"ie ozч[4F),/E#=q9[)xB+Y3&^XcþzY郍LJ i8S }٤x)aS1E<3l8 69BX xxp1FtG[ZVt5L-ʭA94VIXmGΛK['q6~S5eɍr]l6`L:[CDs؝0 Ee{~r/d/_<4 7]j
-;こ4VW|PrR~2/2d/Um3(-IW3xŽ#``Ls`c7=WV> gwg o{5aӨ9Ja(')R䳇uovaQˠ%b(#a&׫JEQ%Dwݱ8m&T-DG0l/fa,#IN
-,lSӚUf 7D5Utg# <w.._pO/@a^6"ta6dBw0ԹghXV#h5/h%qJY,+ũZ2A>Q]xR
-x"F}x@6GO jҧ uzm|ԱF(u6#".n9ߋq[֑ Xp8
-"o/dFYiR9c!&l52Dr 4,8 YuLea7= ~V^`$^Ň٪z40l2S( lߵKwVͧC&y@n+r7l< LАXad,`Kbͮ^[Ò8q.%sS pH1QNEqMߕ&,Veɳ5jLAMϪ%dUfdBl$/#*݅K2qJaLQ jcn~5j4V|X_hX9|4·0eySܽykcI=ӥ"M`O<|}$p$) Q"ފk4999CQYp&NDaB,Ź™ϭ?^X̛MGb%a>+]H4N%B>~)z|NTձ$MFLFIk6#>FzWBB9 ЋhRhi]B4ٗMf+UI,wԓ%ga=z7,MRXf6ub&[S8ܤ Q[Gw{
-/2I8JyZ}HK1"~wa!airc:R\QJOW ¿G,,O&.@FIp+jrϲ=a"hEB5|yM*c?Dwƣ`<f -LKA ylgH1LdXH pC=LLB8cD5)zH|FRNIL
- ecc#RUL6ڳ4b)Y#r>qF9WfK']]s,5dmv&v(!:zOk:om؄Py|89 ԧ<icWa0d~5uKX|bz:kt1qQi3FC֞=`jc!^Ka=a.DcuEa!Mni?=ֽ+<c?f8EQZߩ;hJy"ؾT._b3ہ_c>7Woܶo;^PTk(ʳ:^?Dfy
+1391 0 obj
+<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 6916 >>
+stream
+xڝZ @SW%1W W:uVŽ{vI@YY%j{N:tZT'Ny}{BrϹI-%-]y +V VL}cһA^֑żwF,?GxCl{0l.76\8hyI^)rGY/ M(H1wO $L 4,./JƔ)&Zg)ޝXPx)MVx/4\W(<TA>P:oEtwD7"4:,rd:?HELhDVEz{)C#Q~ފ׮SD)VVLPDz{+fFENu!s"]&EZuV,]轵&GF)|B#^Q*{+{wHTE 5A^FQcxj5rRoPӨLj5CMͣSPR )7j ZNVRQjj ZG6PJI(Oʋ(*
+`*
+©*T KQn6I䱀Z`u-@|ϽævmppVz,.)?}ad / R3ok^|텃I*~4$pNYcP8s!(Q1 1dDʈ$0ot8'ҸG"d"Yq[^d$ mhΰl)EQxi93JB"d0uԊ>SȼeȒ$B N45#M` jPB*Dw{;vY3TqMj2K"caxl31>Ծz lqx#Mxo@ti1 qF`k & V:MR甞sh-GHNI]DLmlF-;v ާ
+٘f
+
+OJ^ȩֱؓ^!l/S+NҥxyR(m{ؐ>rC!0;J]fT&}%܍{ψs
+U'VRf (禢x9NM#x@ ZͺS
+ aS3b)oY/-lIJII@b̂ M6=+'4,8Y6ߡ3y,{- 4C*eꑡFO]d<`OGM n@숣2mC`Ά#)]Rt:Mĕ&;06 Z!WS{=Lnxw0Ff1IQ [<O$6vg-^e,HLex1= Y)fHJV -r4+3ai7ـ5;<r4?y9Qc<m_JSy$2x0胺CٖsFN f2xSIgT"<N3)`:'sgfD ;T(L2.ò
+$
+TgG(6XoZ>cPs>"e&r3eK[<ZYN?=LeoXl
+L ǞWq0LDõm֚ufEߤ$#7mwV@=k;a _߸3/ 7źmcZb
+*4sq~reOm+!%2se%f?8}MlÖh8ePP_QRƆ<K ϯwiʆ*8'+';Y.ݻeېtVZHMG׎G>Dn8 Nta
+v={'䍜113Tž'{fgsbe|)j|pيį/_^ mgvcpe
+HW_ |Np; *<l^ѿ ̺A2k_t;Fcq%KP
+6p.JK,+(u4c[ضD'߱HŨ"/$V{mzmO1=E6^
+H6?ˎx{xy:tx%OzW
+Ffl<SZA*PB ҧpIٹ)x9OҒk Kx a"C 9ٙZ-1B^IKuwt~k%+K+a $_N J.MI!DR:ʑgi$k0 ^c<|JkpkǞ AxY*?NC4gX 6g? +h.<(Үa۽GaZɅur=”]ULU~q.{ $~f$J¥`>l0!}!u
+ێٺ802aqrfƕ[Ԝx*`]?&@_;'${Z6j.
+eBw=h@9 \S^-I[F’T>Wi>PSו1 (uz<P[_!Do,f+ 4GF?),%dW̎G``oV6^
+<%ȷR6ֶw,:,4>xE!.3\GAp~MJ+-6 K.h n٦fa dϱ;CQbrKMn:\fي-7~SqW7cWno.]9V.!YnXIZ)ؓ* 2`\xױ#5 ŒOŲ0cvD!5m쑺cfö*n/ڸEN?kHm#3(]ALFt3g:`A(I"8}$NX5ʀ%Z&IMÜo|agǥhve1HZl--xFM"'Nv7q ɞ "ut xqƐ^\;Z!'vVf.sNdpeetY2Vla&؂--EpbLKx5F׀]kt]0`,# עT&K4H[G
+=5xoڌĶXj4:]\SvP^}Ў%r+(e7dGZ<=A[ @H?87]X]Fݔeg\J2;3>ÔQ LiӑJ"T>I^qnS~ԃ0>Ҫ QJ;N1?>*p+?YN7aqh";˝X毽Dw3K<ulܷ-7>؈H{|b `gR2={UD}a̰\xLls}#,-BǏnCkYu.0(w$fRXfamĦXmkywjѥ:,)CTmaƤ:èQN cϨ(닊Ic^TgxGIN9GW0RUHjÏNv2Sz__,^^7׷_a`Io_'WfjQZ"# exG,.јI;==VT>ewg5߱Ө90NR]+$þ <nAEiKb(
+g~EV< XNamO P`INFzipH*t0ʌGZs# .n9ߋYϬ-a`bZ~0#8Xhk#uno-svM69^k{t3 m\[貵-Gٓ"Eoَ1^ g.hi idU!!*קa̺;:̂0 a ie*Q:=1U>%2UD
+57  M *bT[A5,?3"J5?,/k}ȓ ƺ Y ϐ0&d52sOhXhqBn,EXQW # >6Wr,
+C;/%!M[5x1$*d"y9裘#,v#'!c'_܌:.2wy, kvp$.0?`$}4LLmQ2Q7;0 #݉9ѹ黒ĹőYl<SP;+j192&Y^JJB9q0@u]n~5j4V|X?r 4·0eycܽykc 齺ӥ#M3`<ɸ$80N|oõiaڈ,](fwIlAN@!A,™zZ?yf7%E4 J0aYIQ}Vo*!SSKb0"-7} i>a
+^CXa&#c&5LHU{
+0#TII;S$&YPg=z Ut%sr2u9c]x4jbbXHJ,MRHfvu"&[S8Yڮ:gYU‹d":p$챃VkXRҶ0xMXHXZ.YK(*wd_O#EQ.aeɣ
+P׈$ g,;0SD̋$j TUU˯kXhaZ
+fc>Dbf!, 21@
+! iJe8%1)8 Kd#jc= _G OOo1gsEh{r Ijw7x:K Zݿs5g1_筸,%+&>XPb?ԁBB'`C*LϗEm KLOg _/=&.*"MqfxR㺳,9s^@5l lW{ig { Xv8-JSz
endstream
endobj
-1394 0 obj
-<< /Type /FontDescriptor /FontName /XMUJJS+LMRoman12-Bold /Flags 4 /FontBBox [ -476 -289 1577 1137 ] /Ascent 1137 /CapHeight 686 /Descent -289 /ItalicAngle 0 /StemV 104 /XHeight 444 /FontFile3 1396 0 R /CIDSet 1395 0 R >>
+1389 0 obj
+<< /Type /FontDescriptor /FontName /TIEZGJ+LMRoman12-Bold /Flags 4 /FontBBox [ -476 -289 1577 1137 ] /Ascent 1137 /CapHeight 686 /Descent -289 /ItalicAngle 0 /StemV 104 /XHeight 444 /FontFile3 1391 0 R /CIDSet 1390 0 R >>
endobj
-1397 0 obj
-<< /Filter /FlateDecode /Length 638 >>
+1392 0 obj
+<< /Filter /FlateDecode /Length 644 >>
stream
-x}[o0+H!%7mJTK[k  ( }&B[3 :0}Vյ)t8u0,zѦ{ZiGTNwl8_/֦l}>;aý ?7^_wͶ&NYuValslݍ1_nڲ2/,~4j^]`DبW|,jH$;8A0U_\Inv6*hkmܼ`(ݔĆwڌݵکaQ00-h6r_+-}WofbJ 椃5 Mm?GM
-އ?y
-3[(xiI"Fys$g ZO-@+@iA ~Bg$-DZH $-,`G){2"" "Keej"C-#8e+ "(KqSqPPNН[ ];
-tDk~)NL $K)UK)K'-$" I'I:%8!%"Eq$:+t?;\=7Oh1[o=k7fHqm;@sM)WW[?~<C* JZ
+x}[0+ԇ7I.kI^HB)}s,ekec;tƻPB <#y&_\5G龹tEL& /Z+h޺-{5u;i+߾?wM]8 Y[s_1v3|<!"`mԲ`JtT|H$;:A0U-kk[lW|L_;ʼ[f/m{N <gJlaKQk6u*m>WfbF-J]3k@~@O<ª hƿBOѹB,=-= DxJd&D' Orh*) A ƈq"hIO@}cEH iE;H#1_2(,#-TT5"3E?eeR-gv'Dn9T'ttDq%Z_qF'&RJURJI $H':HID:EN"r NHrn9|u'-ID9%q/ 7սnV}Luv槆3mZGM#2
endstream
endobj
-402 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /XMUJJS+LMRoman12-Bold /DescendantFonts [ 1398 0 R ] /ToUnicode 1397 0 R >>
+406 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /TIEZGJ+LMRoman12-Bold /DescendantFonts [ 1393 0 R ] /ToUnicode 1392 0 R >>
endobj
-1398 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /XMUJJS+LMRoman12-Bold /FontDescriptor 1394 0 R /W 1393 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1393 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /TIEZGJ+LMRoman12-Bold /FontDescriptor 1389 0 R /W 1388 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1399 0 obj
-[ 27 [ 531 531 531 ] 32 [ 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 ] 49 [ 531 531 531 531 531 ] 55 [ 531 531 531 ] 59 [ 531 ] 61 [ 531 531 531 531 ] 66 [ 531 ] 68 [ 531 ] 70 [ 531 531 531 531 531 531 531 531 531 ] 80 [ 531 531 531 ] 84 [ 531 531 531 ] 88 [ 531 ] 91 [ 531 ] 95 [ 531 531 531 531 531 531 531 531 531 531 531 531 531 ] 109 [ 531 531 531 531 531 531 531 531 ] 118 [ 531 ] 120 [ 531 531 ] ]
+1394 0 obj
+[ 27 [ 531 531 531 ] 32 [ 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 ] 49 [ 531 531 531 531 531 ] 55 [ 531 531 531 ] 59 [ 531 ] 61 [ 531 531 531 531 ] 66 [ 531 ] 68 [ 531 ] 70 [ 531 531 531 531 531 531 531 531 531 ] 80 [ 531 531 531 ] 84 [ 531 531 531 ] 88 [ 531 ] 91 [ 531 ] 95 [ 531 531 531 531 531 531 531 531 531 531 531 531 531 ] 109 [ 531 531 531 531 531 531 531 531 ] 118 [ 531 ] 120 [ 531 ] ]
endobj
-1401 0 obj
+1396 0 obj
<< /Filter /FlateDecode /Length 25 >>
stream
-xc``&
-G
+xc``&
+
endstream
endobj
-1402 0 obj
-<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 6748 >>
-stream
-xڍZ \֟2c֕ZmuA;;kI a/7D@BEp +j5ֺE}O[w^}߄u{;{8p&޶cnr|ܭ0Zf*3 f2L0`Cs֞'sƷ_˛Bsqh4Ӷϰ^c!Fpd)+.cׯ]0i<"V,prz}sed_<Z,KϓϓlGW%e_iOXD nD)
-$P!P:ODB&QJ%Q2B
-Jl{CZ.SI܂2T2wDJ%A*U[竢gl)[]i\u6j*F% +$ROpr7(WJKe`U,~Y/M!$Tb1AD$^&^!^%f9\b1xX@N,$o%2b9p&\wb-XOl wb#Bl%<m'ExބK  "!BpBFȉ"PJBE"FYҎ?6ushgn^9%+sp8=#bG|5pQF10zhY<F;vX8qZ3y78?u⊉wu,wr|1W~ GsL[tj4A7fhN#2H Hמ#aq?=UH _Ȳfet7<v"~w.hSdqYԝh<uAd\3Ӽь.:-Hmbr(MKH{\aj66EZ!hK*achJƆ\l
-8,&;x؅DMdy\BioP
-%e@f8^YGH {EhWX3/ @
-`b aUհkC3j 6'8!+ Ar-g*?ٜ+?՟?8
-  aJbT*`2}fzxۈ@SG?MS?~xn[l@i4_BYiѠۻW1Oaj  "|fܲg\&šbub"TX?Mx񪏿: WӺ\mnHgbëXxo:܃Wo lt&<. -Bbډ\%_Ц ?yh_ѦC
-G(l:/[!Db /OڔG<*N\kZv*lVօ+u溺2eF#Y&7a>sYZ<]Z% lB#`SN}5$VM -}7kfso JPAL$~z),C9 wECAEفCOv[zb1}ErePŪȄE_Ccu'33]"d=6tuA?SAU'83$'ҦhE{ǚ}nխBF0 ϊ"1kא5rˆhU6;3i{wZd(HnZrahI)iIrT^
-B
-fj
-[*XrɌ̊#^Ǧ4xF@(}`s;"k
-F~G:Z|.0<FZl7"O0UJ
-P2"B|#A&VdDæ Lڨnlq?Tٗ_J\ԙGO5UW{<2pvwY 68>rIU1|ǣ*6wV<
-|$j`ZT\dzcgԍrSǮgT
-Ȍ͜c_"K.D Q
-M_GaչlIZ$
-j*D1j1_`qh<}*ܸ~j筗>qa% UZl:ԍxSڄ64c`Ep tNvhbo(M4tYهRI'h8#~Ԙ@$ 2˭z
-Q%j
-R3@KڱLp`sZ7 V?::ؤxQ>B`{B/5_f f-[lǰ9EJ4}k=~,<~*"vݷƾ{[cKJe 5|bNܵZvZ,D? ii2 (&='0QOu^i5 .F]!V;l<reW( a+2΄"` {*jF]T#Q:501նf5v[{c랡qE-[SRX{lm
-hS7lU3(,kYP2\TT"π^SZT(h7+nC7X*?rH
-ߨvpu>u僈Zk4PT`޿\9˖/_Jٟq'h㥤(Ae|yD{Ձb)TҘ'@ykiMNSΈш['4bFͨ*o? K;, V
-֔lU׵> ՂмzXbDUfrF6*1^fмHOS( _gY2E T$}YB~
-}Vw[[ERᬵHLJ>%&DO0swM^6~*3LNQUfi9 d
-
+1397 0 obj
+<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 6684 >>
+stream
+xڍz \ĐITc1wuV[m"]p)Rwְ@a_nl{EUgݢM۾c/oB~ ޙw=lڙ<<rٛd1~JۭUv*t$c0R#Ot_rt݁o>K5_0 x1y(ǩ/.p| #x $1+ׯ7e"*^sqy}smt_@"V*J̑z̑z*bWr,/"HzɶHcT2JTD^#
+ UIcp)S)dyL)UȤ+7%]BdrL:{Tɤ!ju[sc(sgTs#^k=[>G)@/4B5[z*~Ձ2:TOp_4ɄBL%//ӉWWLb1C%^#ěBb6XJnĻ
+b%XM!“@l$6^f›Bl'|_'@BFDJD$!'DM( &4D;<k-vDxmv
+ 8="Jcb.WK/KnK&GGkCJ58BԈ.3u}7,S7CRw>3y3>(a>cM )+Ez,gˊ
+|6;4ja"}ia`h˔fX'㡲6ԀȽ GiOD1K'\|YЃ5GN]=zh..|6G\W]geJ:>6I]Qeg % tMme30ageSeEB- 嶗,=k+*n%<
+m؉^(
+@*a{`U'̇{ZZuz_%(?Xj}nų
+01|6XۘȰ淕PCz;@<8;G>7*a-A3g# %X[;Kwl2zG_Ӓcry
+MA&8WH$ 6D1o섶6*[9hos*oPi 2\PWwSd;% i1i`W춴p䧉 :I`r\13^ƣȧ/IhѯwKb\N~Ry ~"{ģ, 8zZf ]|gyZSs"=nQo,^s
+hue.ƻ嬓xeKoFt(Jog,[6?,PS(D^(O%JmuDGM\ R,O[DMs'aInO>D?u){SMLmY@*њR~>ހ2[}Ξ=A_o^*w<p9G~[6аE|>Q9$P 4BI\\Zc(d~ǫSM
+ŐO[l{@E1cxeUaB*wsg׆w})
+~m*n  S?d6
+'5aAX
+%Ywcty̫}OD"IPPQhjUKa?z9<VtpF5
+&͍0
+svO֛-5rRtnS8(U[ftF\cs
+*tĪcY_*6=6oɲƞ wA>ۘԝ&:]Dr$1yiQĐW?3ؔ@]~iJW^`ӥD[+v'u5>U<6X%1 LbYP:pk
+Ut\PYKJwvB1H( H+WqAR2H5~-۟yei xg4n@K*:8:hq_Z}cGyNoL:;q
endstream
endobj
-1400 0 obj
-<< /Type /FontDescriptor /FontName /FURTAI+LMMono8-Regular /Flags 4 /FontBBox [ -456 -320 743 1014 ] /Ascent 1014 /CapHeight 611 /Descent -320 /ItalicAngle 0 /StemV 177 /XHeight 431 /FontFile3 1402 0 R /CIDSet 1401 0 R >>
+1395 0 obj
+<< /Type /FontDescriptor /FontName /BAKNBK+LMMono8-Regular /Flags 4 /FontBBox [ -456 -320 743 1014 ] /Ascent 1014 /CapHeight 611 /Descent -320 /ItalicAngle 0 /StemV 177 /XHeight 431 /FontFile3 1397 0 R /CIDSet 1396 0 R >>
endobj
-1403 0 obj
-<< /Filter /FlateDecode /Length 678 >>
+1398 0 obj
+<< /Filter /FlateDecode /Length 673 >>
stream
-x}Oo0C%zH1qbBP$+M  ( ڞVVj_7367?lXٮ>g/&hQu̖eUn^v]de/~6e奮xeö/ڔm>EiۮG1R?<WŬ>z{]4D1ޕURQ"2Ig~t9qYh<C׹4F÷mYDe}jr&Q؝;=Z1ޗ[-?B*ٜ+#v6h"1^IdumjR{FO )$,&%:P"ASu)4P6e I@4ݣk MOAAQ'=3Ru EG4 =(8J<(ڀS==ixOF)H"2M2e$!:S$VВAg
-R4gx! w4E65F TkVܭF<A2$hB4؁ 2$h.8i93?'?Y~j[70 O_à
+x}Kk0E!]q,YjK@A٦1$EH:'-ZU)W?^m,of6?mjQ秣gk [\V{b0_-VU_ͫ*?
+{ݗG 6w<>>OOuUov:l8E?'ܢ~QC~ٶ+^n$qxy}hHbx+NUGTeޓrsx,s9h/ma۲ڋݖiI4.ъ*jٟgXAn^kmFcA2D*'z݆˯F]?4D&4i(Ձ4PRP
+8esPȐ4h2u\qm~:P@Kԁ$e 8$8 8"(Ef42 y
+<HjN
+I(($*#1]vNUЩZZBKj BePm2 <<Sˠit7$tB4)i-nECmjj<S|[< yJjIeHh$#A#eH0]?q@N0%TOƏͮ0>Ä򳩬DŽmW0/#<,ޣ
endstream
endobj
-393 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /FURTAI+LMMono8-Regular /DescendantFonts [ 1404 0 R ] /ToUnicode 1403 0 R >>
+397 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /BAKNBK+LMMono8-Regular /DescendantFonts [ 1399 0 R ] /ToUnicode 1398 0 R >>
endobj
-1404 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /FURTAI+LMMono8-Regular /FontDescriptor 1400 0 R /W 1399 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1399 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /BAKNBK+LMMono8-Regular /FontDescriptor 1395 0 R /W 1394 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1405 0 obj
+1400 0 obj
[ 28 [ 510 ] 35 [ 549 ] 43 [ 472 ] 47 [ 549 ] 50 [ 472 ] 63 [ 549 354 ] 66 [ 253 ] 70 [ 519 ] 72 [ 253 ] 75 [ 844 ] 77 [ 549 ] 81 [ 531 ] 84 [ 549 ] 88 [ 295 ] 96 [ 363 ] 98 [ 407 ] 105 [ 384 ] 109 [ 549 ] 112 [ 490 ] 114 [ 726 ] 116 [ 490 ] 118 [ 490 ] ]
endobj
-1407 0 obj
+1402 0 obj
<< /Filter /FlateDecode /Length 23 >>
stream
xc``T`\4ţa*
endstream
endobj
-1408 0 obj
+1403 0 obj
<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 1825 >>
stream
xmU}TWC23,--% ~`AFH &"H5`˩,JY+ǮG .Zp`Y{T{a nOߙy3{w$" fY|u.!huD3,Fg+Nf%%'ů$M2Z|ӏt9! &Ltmo
@@ -6145,10 +6162,10 @@ C(ŢhJ@kmDP*2(ّKDY|=K׉D yx^^$Zɇ=f0C
`=d(#p
endstream
endobj
-1406 0 obj
-<< /Type /FontDescriptor /FontName /QQGJDO+LMSans8-Regular /Flags 4 /FontBBox [ -446 -314 1510 1154 ] /Ascent 1154 /CapHeight 694 /Descent -314 /ItalicAngle 0 /StemV 98 /XHeight 444 /FontFile3 1408 0 R /CIDSet 1407 0 R >>
+1401 0 obj
+<< /Type /FontDescriptor /FontName /QQGJDO+LMSans8-Regular /Flags 4 /FontBBox [ -446 -314 1510 1154 ] /Ascent 1154 /CapHeight 694 /Descent -314 /ItalicAngle 0 /StemV 98 /XHeight 444 /FontFile3 1403 0 R /CIDSet 1402 0 R >>
endobj
-1409 0 obj
+1404 0 obj
<< /Filter /FlateDecode /Length 466 >>
stream
x}Mo0
@@ -6157,22 +6174,22 @@ x}Mo0
_k;eo{?vqr7
endstream
endobj
-392 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /QQGJDO+LMSans8-Regular /DescendantFonts [ 1410 0 R ] /ToUnicode 1409 0 R >>
+396 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /QQGJDO+LMSans8-Regular /DescendantFonts [ 1405 0 R ] /ToUnicode 1404 0 R >>
endobj
-1410 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /QQGJDO+LMSans8-Regular /FontDescriptor 1406 0 R /W 1405 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1405 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /QQGJDO+LMSans8-Regular /FontDescriptor 1401 0 R /W 1400 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1411 0 obj
+1406 0 obj
[ 27 [ 796 531 ] 34 [ 752 590 ] 42 [ 767 472 295 295 ] 47 [ 590 ] 49 [ 723 472 531 ] 54 [ 693 325 531 531 834 531 ] 62 [ 796 590 354 383 295 ] 68 [ 325 ] 70 [ 561 664 295 ] 74 [ 973 885 796 590 531 ] 80 [ 826 531 531 723 590 413 413 ] 88 [ 295 ] 91 [ 561 ] 95 [ 782 414 590 419 ] 100 [ 531 531 531 ] 104 [ 767 413 531 531 796 590 ] 112 [ 561 1091 767 796 561 ] 118 [ 561 649 472 531 620 885 ] 125 [ 590 590 ] 499 [ 502 502 ] 502 [ 295 ] ]
endobj
-1413 0 obj
+1408 0 obj
<< /Filter /FlateDecode /Length 29 >>
stream
xc``0-z߿@
endstream
endobj
-1414 0 obj
+1409 0 obj
<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 7359 >>
stream
xڝz\,;d-3:*DcƊ"-,
@@ -6207,10 +6224,10 @@ sL4y_a0
nt``6Doz}Nexi4ff:uQ:+[d Cgr
endstream
endobj
-1412 0 obj
-<< /Type /FontDescriptor /FontName /AUGDZH+LMRoman8-Regular /Flags 4 /FontBBox [ -456 -292 1497 1125 ] /Ascent 1125 /CapHeight 683 /Descent -292 /ItalicAngle 0 /StemV 98 /XHeight 431 /FontFile3 1414 0 R /CIDSet 1413 0 R >>
+1407 0 obj
+<< /Type /FontDescriptor /FontName /AUGDZH+LMRoman8-Regular /Flags 4 /FontBBox [ -456 -292 1497 1125 ] /Ascent 1125 /CapHeight 683 /Descent -292 /ItalicAngle 0 /StemV 98 /XHeight 431 /FontFile3 1409 0 R /CIDSet 1408 0 R >>
endobj
-1415 0 obj
+1410 0 obj
<< /Filter /FlateDecode /Length 667 >>
stream
x}M0=dɧ + HBbh$DI8kJW>xl;+tgmdW\׬qϕT, h|+{6\ӵ*'V\kԿX{Æ;Ý}~}UFϧu=jW'@gكYf.ۮ =KU,ʜsFdFWCTވ;~2߼ҥ2Zjg:e#b{[ȶTG6|c9I<'IX!zk]ld.l_fwi$ ,BvM6SGLuMW'q*j
@@ -6218,23 +6235,23 @@ TIckAD/3z+ޕH47䯌_`>"P
I`?YwMmucvwJ%o{0r~HW
endstream
endobj
-391 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /AUGDZH+LMRoman8-Regular /DescendantFonts [ 1416 0 R ] /ToUnicode 1415 0 R >>
+395 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /AUGDZH+LMRoman8-Regular /DescendantFonts [ 1411 0 R ] /ToUnicode 1410 0 R >>
endobj
-1416 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /AUGDZH+LMRoman8-Regular /FontDescriptor 1412 0 R /W 1411 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1411 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /AUGDZH+LMRoman8-Regular /FontDescriptor 1407 0 R /W 1406 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1417 0 obj
+1412 0 obj
[ 51 [ 611 ] 56 [ 611 611 ] 78 [ 611 ] 82 [ 611 ] 100 [ 611 611 ] 106 [ 611 611 ] 121 [ 611 ] 187 [ 611 ] ]
endobj
-1419 0 obj
+1414 0 obj
<< /Filter /FlateDecode /Length 25 >>
stream
xc`
<  
endstream
endobj
-1420 0 obj
+1415 0 obj
<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 1865 >>
stream
xuU{PSW!fe!{[ԶXV >@;ZWK0H^i7፼b@"mEeTݺjwhٵ:ǙDwٙ;~X` &BR$ǿqS
@@ -6251,31 +6268,31 @@ n@ 6]xɊLRLZy`%g!PᇓG HtHm_V6s98wW~
;;=?z=s+Z]]l-%OJ"< #* N6;,a;펆 X^hu
endstream
endobj
-1418 0 obj
-<< /Type /FontDescriptor /FontName /TESQOF+LMRoman6-Regular /Flags 4 /FontBBox [ -515 -298 1647 1125 ] /Ascent 1125 /CapHeight 683 /Descent -298 /ItalicAngle 0 /StemV 117 /XHeight 431 /FontFile3 1420 0 R /CIDSet 1419 0 R >>
+1413 0 obj
+<< /Type /FontDescriptor /FontName /TESQOF+LMRoman6-Regular /Flags 4 /FontBBox [ -515 -298 1647 1125 ] /Ascent 1125 /CapHeight 683 /Descent -298 /ItalicAngle 0 /StemV 117 /XHeight 431 /FontFile3 1415 0 R /CIDSet 1414 0 R >>
endobj
-1421 0 obj
+1416 0 obj
<< /Filter /FlateDecode /Length 413 >>
stream
x}]K0+M/Qps:]x%g3&%m/=IVQ xzޓyKKhxahTl0x0Pψe_mQ` !ת"qűث~[|u6*$;6k#U*a6;H9cTn .!}lv8KRJgOQQT85-V6AL3'k+*} #i
endstream
endobj
-390 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /TESQOF+LMRoman6-Regular /DescendantFonts [ 1422 0 R ] /ToUnicode 1421 0 R >>
+394 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /TESQOF+LMRoman6-Regular /DescendantFonts [ 1417 0 R ] /ToUnicode 1416 0 R >>
endobj
-1422 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /TESQOF+LMRoman6-Regular /FontDescriptor 1418 0 R /W 1417 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1417 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /TESQOF+LMRoman6-Regular /FontDescriptor 1413 0 R /W 1412 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1423 0 obj
+1418 0 obj
[ 47 [ 624 ] 55 [ 536 ] 59 [ 641 ] 77 [ 613 ] 84 [ 558 ] 96 [ 602 ] 98 [ 458 ] 112 [ 613 ] ]
endobj
-1425 0 obj
+1420 0 obj
<< /Filter /FlateDecode /Length 21 >>
stream
xc`
endstream
endobj
-1426 0 obj
+1421 0 obj
<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 1466 >>
stream
x}UkLWa2. ̌-P>P">veg}"ݧX)JUҊ! Zՠ4mmtVl>қ7/9;("#(&|e֔ur1Sk2)\d K%$)$"B*Q%h8G%SbIC*YRU͎4U#Q$!ȯљ(?2YS/) Ώ%* -*c֨s5: zz.k Rff+m53.X<OC+7VhK)Cݴb:O_ JfK-ӻiikJҊsabȜٗA~Aj^Nk4J ]rh?f>˕k +ul!c
@@ -6287,90 +6304,97 @@ x}UkLWa2. ̌-P>P">veg}"ݧX)JUҊ! Zՠ4m
:vS0<OQ:ڈvo=(I/,:̌ jt#"8kXhmdk0$s iOirxPH]GZ}>
endstream
endobj
-1424 0 obj
-<< /Type /FontDescriptor /FontName /IPHWGX+LMRomanCaps10-Regular /Flags 4 /FontBBox [ -496 -290 1501 1100 ] /Ascent 1100 /CapHeight 683 /Descent -290 /ItalicAngle 0 /StemV 106 /XHeight 514 /FontFile3 1426 0 R /CIDSet 1425 0 R >>
+1419 0 obj
+<< /Type /FontDescriptor /FontName /IPHWGX+LMRomanCaps10-Regular /Flags 4 /FontBBox [ -496 -290 1501 1100 ] /Ascent 1100 /CapHeight 683 /Descent -290 /ItalicAngle 0 /StemV 106 /XHeight 514 /FontFile3 1421 0 R /CIDSet 1420 0 R >>
endobj
-1427 0 obj
+1422 0 obj
<< /Filter /FlateDecode /Length 403 >>
stream
xڍ]k0+.)̯0?PټlR|X1d>=9y󦍧6xAMa4`HshL2#Z-М$Deĉdc[4Ɠw];m|,6*K$͋ 6xΩm݉lZ#Gp?QB!tڔRa&Dev !qs8}N\J2m^D 4+E•樅<AQ#Vy~Fk
(cx4Mn4C]TEyy˽qw"o)E2ԩ<!8h bSu8z4T9̡ߋ-uƞzSO3G=GO=E"O]Gk{#ne-'VimBrBov Oji5'?#M
endstream
endobj
-389 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /IPHWGX+LMRomanCaps10-Regular /DescendantFonts [ 1428 0 R ] /ToUnicode 1427 0 R >>
+393 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /IPHWGX+LMRomanCaps10-Regular /DescendantFonts [ 1423 0 R ] /ToUnicode 1422 0 R >>
endobj
-1428 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /IPHWGX+LMRomanCaps10-Regular /FontDescriptor 1424 0 R /W 1423 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1423 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /IPHWGX+LMRomanCaps10-Regular /FontDescriptor 1419 0 R /W 1418 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1429 0 obj
-[ 27 [ 869 559 ] 34 [ 818 639 575 ] 42 [ 831 511 ] 45 [ 319 882 639 ] 49 [ 756 527 575 ] 54 [ 724 351 575 575 904 575 ] 62 [ 900 639 383 436 319 594 ] 70 [ 607 692 319 ] 74 [ 1092 958 900 639 575 ] 80 [ 864 575 575 786 639 447 447 ] 88 [ 319 ] 95 [ 863 474 639 454 ] 100 [ 575 575 575 ] 104 [ 800 447 575 575 885 639 ] 111 [ 869 607 1189 831 ] 116 [ 607 ] 118 [ 607 703 511 575 ] 284 [ 575 ] 502 [ 319 ] ]
+1424 0 obj
+[ 27 [ 869 559 ] 34 [ 818 639 575 ] 42 [ 831 511 ] 45 [ 319 882 639 ] 49 [ 756 527 575 ] 54 [ 724 351 575 575 904 575 ] 62 [ 900 639 383 436 319 594 ] 70 [ 607 692 319 ] 74 [ 1092 958 900 639 575 ] 80 [ 864 575 575 786 639 447 447 ] 88 [ 319 ] 95 [ 863 474 639 454 ] 100 [ 575 575 575 ] 104 [ 800 447 575 575 885 639 ] 111 [ 869 607 1189 831 869 607 869 607 703 511 575 ] 125 [ 639 ] 284 [ 575 ] 502 [ 319 ] ]
endobj
-1431 0 obj
+1426 0 obj
<< /Filter /FlateDecode /Length 32 >>
stream
-xc``0/y߿w_` 8
+xc``0/y߿wa 8
endstream
endobj
-1432 0 obj
-<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 6445 >>
-stream
-xڅYXڞuT@dXYV[)*b]E@A@ދ4=қ EPV(#j1&Xn7Fc4UMhLr0 s|QL&sX+OX2toT'~故Zxi8%I|?IKJ~ʢ7X8b=dh9s,!Q/ ӏQG}OI
-Ϳ)..3懆GFLl>v^%84628H^2EtzYh,9}:tz::?"R9azu`P:64"XM>#FC#QkVV/ R{mW;9Ց7F8o%{"lӂwvX<}*)QqQꭡj?(ߠSn_ONFSc$ʉB9SSit5ju Mj5rQn|jZD-ޡ<2j9ZIVSk'MPfʏRT
-S;P*
-"(*xpٯr"FeA6l~ibEt}^1R d-+Odl׀Nk*z giQ;l/~=8g#v*[k?>r򰃳é!vC"\8L9,OeUqC\0A"8ҦXY_ĉ .m
-JBwŧ KhHEÂȠiTSriV\Ďd=#]oB)@Mt6ôCwn?PDv'/3Z3OXmvOn\}@\.l(>i+1op~*b6Ď#5<yWT:{dNrṥ(P0섑@\>f
-Q`Q X|8
-XUśof|g 4@>FSw?Vٸt"](}K؇?S lZE| }*ʦ0I&Xq(؃-سa#T0X!<t1=0Hd++WZty_ `{ Zos~ iw 6[ 6XCyzCf)k|]Y%'jc3 ܝd?褼jJ鹮28InyO>* ;SQǪtl̑=u\'_#,>\qFCV-`nHX+Qa|jVVzx9}b颽 9}|B6 4 ^. jk{`T~+E@eY2ڙ{o䰀`\YlJvu|bVL-Vl5^83n2Le`X .0[&_έe
-Oò%kc-32u ծ]{~o\DA_ 8yyJ ax"(UWzH&q% /8=qN{Ypʋ|!Jr1%Dz 2KQ °i[.oܨx$d&aú̂sA`}8:&is!5$:R-"vģQ0Sqb> }JѡRO3E>iR}&&+Q2!)~6R]F;x7LfK${PfBVfb1feðQ}M7֟L[]3XD :UAi6Ñꃖ %C vsj=p'j]%P U?
-,5{-o~VT(OPŒ A!<xN, 8U~սWNXy֭:[x1>q8f# f VL"=wfz #=\7Ȑ bjO0 _Fp^5V9?k?!$#-z
-+fpsV TA%#m1hgMivNA>v{aHs{ޔXסzgOdҺez4im(]Pȥ62@H( RxSbZX-4klo6# y>\+QM4{] ǭk qdP_͜xisf絯U`Qup7ܯo<6h[FK'\*#C|^&퇑M`a)
-#TK=H# -^I]76Vճ7WmnB3Ũr6;un1*3[H`!]ջh wu(gO^ZEv̪`̙[WňIbeVfVjQPQYMht=6]9v ]-$
-5v:g@vC1sy\l$J>?Dtѫ1J.#*
- ȋ"~l&~(
-bncus;@wp\ Pl=_*csl߅plf~,=Qvvvt"Zk sLRhW N/_#2w'Q˶xUu=SgnX7 v~d⢹/}s[uf`XZ+u]NNφ
-sh0ms| ӷcߙ/sEv?E<nW8mџrG
- VaW"_mIA_Ϧ\|@vxP~?p'Ww#~Pz5}cٯjKA=ңhI(a; p-ƣ!c=J|nܣpYv)=eGʿqwB;9s}tLrQ 2ö֗O`틕30YԗɊC#ܑ#5BuZQG 2)0pLRujSµY(=_9g b5U3 BoH= ușgoAtj_JQB_7ޙu?pg@
->1׋*"c/H_Q A?.W⸴]:m&ʪHx
-Sq?,瓒LHWPqp^\<=Oa׭3z̃M}f8?!6=?|!z2FkdDMv$S*NX|uuO%X8G']% Wq7=FG#X5{gʎ&9Ź W裗vwp~U.`Q\_%>pB!52,$ ;^Z&Y([Ӹ}z(hV;\y\NP` 锘NG15AmJm:s?{9(C]]Z~7ݵbIFOWuнP:"Ujb,$Շ{6/=O i^=ʍ"QF0;;7|mI/`!9$qv 'M3%p?7rkbQu[TIk\>`|ig}fBq~|ix`n-UaU B{`kdKS';\Q)|Yf&J~i϶lgu tp)T5f)Y#$`tg(ܜd!&G_UdQ|ZT}ZZmW|Up0[m9 [r?܏.x^ΰhhQ1nQЮ,qmh;N2B"d*Ax[UhPɀ3/֝6ϱ'E
-a;TAmmu |?gܷ
-X?ʁsP xxs\V'6{U0x{:,p|Xei\٢J,NLN{:3#Ul:tO/ z>-AҐo#"FW@c~H0S3d@݆1[؉i"o.pQwTtSFE排+ªXЈ0@dIv`|O, ]."vUF?n:
->=v Ns`bufN x#XޕHy&nνG⁳yӧ)X}kw-G ;w!3YYL.}.lEh/϶RGDOԠ(,PcM޾aS JUSƏ_pFDyaxBcu$[fh]Q")ĶSZAq
-#F[;-xR]s{͉SI9|]ck׵uB})(+Vϰ<7#L=^P3חl5C(l`Yuffv&3xQw2+dKƗK|eO~^r3zlb;7UkOݟV[]lƦ4e ==w<ôB|#ܠ(e.Sލ8H#jo2
-oh/Iϕb*ti^N i,tR.$]d"BYT6%`Kl,4ЧEaY^+:rE"
-KѩZ.Ed0if$;FBY-4u#= ǩp"d@z6$HB Z.);U57v
-gTч%WqޕBV4uЅB IPi`Vrȓ>R~5De}utnn]z{2}jVGP;m6U+%;[GVxh4s .ZYyGJ9F+.uL
+1427 0 obj
+<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 6804 >>
+stream
+xڅY XW&hPZEU.*((D 䄰oo :VRkkVhmm]Zkk{Զr/sN&~QVVL&s\9wׂe.Z?tG
+25zzzzI͢ܩٔ5KͣS "j1ZJ-S+*ʋ(j@R *BP[mTNEPTMPTO%P2'r(IyCfEl~ijUt0}F1Bͼ4XWؿslπ^Mm9 ۯfwY籓']O 5Рaa_VVp:mtpgoӃD#Jd=;CȅJKHg:IKz+n{
+"bUV1HCCOVZ.65 +qHJi[>pi!
+B;/ö^mTչ/Lm2q57u87V `ɗbGg5ϺoE>GEV>(\wDzml>L)9fm{@(0NHy+M_灪5՝_i|\ozÔn~ `J9sݢ<v2XxXLAB8 "; G5*V"9SA CG{ =ho|.
+zLiEYyi5aZ^8p~=vpF+" >3d1{6ၞt'5N&0eQ|2.K(咷kFCA tRNNRWRZX)\шQv\$]'┕(cU:x 7cz)}z}m 0[-ěޘY/VT>=k }ly.c !C ӶK[<?J_Yv&;28, {=l.vEv}lY9Ky
+ϛl4&:W+xv,7W0CFl ۸'xSeħaقU NY3o@m((}g#'iǃ{='Ĺ-kTbYʪu/m_1w0Fэxn+oޤ|&Jr1)3MeQd6Aa+x5Ӷfu/x蝉0uZu'adž8l`ॣd} 4rCBIu2E(G#ac$}ҳ( qx"4R+-p[1;o<
+`ix` * Ag+ja~xEw\J%a-GZ~]첐aa8.@{WZ6*SGXxS Ai6cg~g!AFs hMRɎޒK5ڽCgT
+,x1|u_~&eUx P^_݆~*FxMz{~Xեso0}A9e2eǯ_Ccב`\kDdHpa(.4c3H|q CC99sy TZjfIFHiw0H.%(;7)Lcܽ?Ïz3`o[/ ] NGxC}_|&->^_@>8)4@dJ%Uo2{ 8s\}a΀vie~ܬU)`qH]83+/?vmf3- wvG%N]IӜ{5FܖҚ8\j# dҫ}vX_{ߢ˰7cj<̦H>m8iDX)JxH JMEIȴRQcx'EhCiίN
+*揵_;xg<x#^+yx."+AŻaا&{^Խ{os{Ȼ@n;P,P:%P$6$y|y>(j6GṡrCSJZy.Tyro~Ҿ%{&p>Ș!jZUYsx&<q}N]$FO*VeTYP__VQ㐉hK<{&%tatm4
+$pÂp? zt(hOqۿ.N`*~^8W407
+_󱾚{M2 Y<yZn epFCyO":)Ac3|
+⇂
+Ǎ"QDZw_IX'7'5q !I1'f 'א+J8wFBb:<ghPF8]4HS1Cg5(=
+"-SiƱ|#+!ј j$}@uqE\e,$L-#XMOa`dӜNlW(k|"\Me@1WO
+r
+f>/c?B[<d$.#9HþX^fЗ :!F􎔂h֫Hc0r8b(.{fS
+RnʯϘjqgLh/g88V-0]a}*d`0kEEx'950Y̽0KDs͙ۄ"ê{"_r“'߄|Y0b_/8[jg_- &wMg2 g(a+ #q$N7፠/B$.={Ƭx||[ o}̿q,wᓰڅַfSG g-trLrU!_qacuxۇ0ʩS,x`EgU7ٹ=Z
+F+֩,AҊ?H$U2ը BGP,](=e8+`4CQ7Ll{u@wŇV3RN{:l@8f D:A7p
+f1OJ-p$qhM=Un?Q&DݤR[Mk[&-fXMPסL#<W/HF'bdPAÎT%%|Gj{=aq|1\)l]6C,x#Hs[kdr~n1[UӔ)1aPq?30+0rLJyyb<S@cOV5^x2|R:5ܓ-M;!cD-h5N~%Bl1o{~&z2ְsƽz3C}bNѯ#C&^ڑ<@\ &qoL!(4x[h`>]ߗ
+X+U[Ϝ av;زŒݕ =7YͰWkJsKu` CU
+,!~]%p>!L/_ʭǣ{/c>* 髸Z]#f0}#K#*p΄ Tk,v|:zwR]j]gቕƗPv ^@xDjy~ffn$]_=CZmSH5ٷ^l]qA{֛r?ZCWdIFcS;K∠6< !++Vdg;]Q̈])|IFJ~jb[n&]ų2: T5$cR VHrTP%SDYBl!__`¹(8+:+T EBL|lBl5sx=S*fa|Ū
+fUv
+FqzcR['9˝%WIR].xu(0wm;["{_;^̼B  0Fc`7cv8fRC_=
+1??|jmYm0
+ om|a8,N<zT
+IӷTf# 3~ݯ1p]3+ w͇0!/j z!`ӠI4&
+]s!NÈVHq>xRϖ5Ih..tkmXv~k (n^婢ySb@EMmj>v¿4)mh-ln>7pS%0l4|tFq3Ls?ff_ de%B|dznTr3Ҭ؎?D#Na7П}i0|/ӳ1o$3z򘩫;O[If_\]?`l{zc{8QVsZsuFS
+l
+|96tdQ1*
+LU]{u3*Zdeoү!f@Qi{r)w19_!x='kgWUP#
+<zWv駜2cfiXfe*%bqھl-٬gϑ> f NKP:?Ӹ]>TA:eÿWPH~}tXfюW*w
+cfvN ^A+wa"
+ζ#QV-K_;o2 XG*ɑ.)ɽAn"}zKvMw NPeB<7u7spM&!>;!2Å ~ؑV5N[
+iT*l<.Y$yȥ <vLx(7Mt^aff*%r9䙏r[q(pS/Ej>US*xNay-RZ-DyśW=\Q7@b:3LH("B[W&o6/CH=~;>;Wt;[!mB#^U GVg@a̕&0Ma>PNCUƎ>QQr
endstream
endobj
-1430 0 obj
-<< /Type /FontDescriptor /FontName /TUDCQI+LMRoman10-Bold /Flags 4 /FontBBox [ -486 -295 1607 1133 ] /Ascent 1133 /CapHeight 686 /Descent -295 /ItalicAngle 0 /StemV 106 /XHeight 444 /FontFile3 1432 0 R /CIDSet 1431 0 R >>
+1425 0 obj
+<< /Type /FontDescriptor /FontName /UFTXJR+LMRoman10-Bold /Flags 4 /FontBBox [ -486 -295 1607 1133 ] /Ascent 1133 /CapHeight 686 /Descent -295 /ItalicAngle 0 /StemV 106 /XHeight 444 /FontFile3 1427 0 R /CIDSet 1426 0 R >>
endobj
-1433 0 obj
-<< /Filter /FlateDecode /Length 635 >>
+1428 0 obj
+<< /Filter /FlateDecode /Length 649 >>
stream
-x}[o0F+HCs]*UB^վBlHDIx߯oJ+8s<NfcOuu0qƴյ)L<`mtm_GS[ӱze׶8_'̩_){ؙbcTMx<:~ͮ.i [2M[V%Osyugk!ao|,nHrLEG$x{k;sYclqkn174=9g2׺>ox40mncכŰ?ZhwkVN [Tڴ0ޞL4v 6^Id'αp}oFmyLIP"2Ĉ@b"3aOIR9hLP &@.P={IdJB&32iDSȓ̨r3,@9'<)rgNDdFȌ/A$u
-OI w+m*"gHST3!Q]S Q]^KpZIܦ"B2=˨:z&HL5)&"k)&./
-
-}Q[{WVD &Ky&xO{_i?>Gqm7<
-3OҚ WW_>a4*
+x}[o0+ڇbVKXm/v46l$p$<R ;smta잳s[x\4Ͳ.'ccC{dom]nMnVK^xfȺ47~xv3&OMx<:~ͮ.i [1mW%sǓՋkc񾲺%[oyrM򋷗7dFEVv{ա؞hƣiw޼'FvѪ\׊ݥ1, lYk5EiL4q S6Y42Vs](C[~d6<O$(MKAbDy
+>3O NS TjHIS tINH+"  uE p~ZBO$NSg퉞e )"r =E5)rMD=C_5tIEs
+)"輢}J$Ԙ$a:~
endstream
endobj
-388 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /TUDCQI+LMRoman10-Bold /DescendantFonts [ 1434 0 R ] /ToUnicode 1433 0 R >>
+392 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /UFTXJR+LMRoman10-Bold /DescendantFonts [ 1429 0 R ] /ToUnicode 1428 0 R >>
endobj
-1434 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /TUDCQI+LMRoman10-Bold /FontDescriptor 1430 0 R /W 1429 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1429 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /UFTXJR+LMRoman10-Bold /FontDescriptor 1425 0 R /W 1424 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1435 0 obj
+1430 0 obj
[ 28 [ 500 ] 35 [ 556 ] 43 [ 444 ] 45 [ 278 ] 47 [ 556 ] 50 [ 444 ] 52 [ 778 ] 55 [ 306 ] 59 [ 500 ] 62 [ 750 556 333 ] 66 [ 278 ] 70 [ 528 625 278 ] 75 [ 833 ] 77 [ 556 ] 81 [ 500 ] 84 [ 556 ] 88 [ 278 ] 96 [ 392 ] 98 [ 394 ] 104 [ 722 389 ] 109 [ 556 ] 112 [ 528 ] 114 [ 722 750 528 ] 118 [ 528 ] 125 [ 556 ] 502 [ 278 ] ]
endobj
-1437 0 obj
+1432 0 obj
<< /Filter /FlateDecode /Length 28 >>
stream
xc``^<ţa], $&
endstream
endobj
-1438 0 obj
+1433 0 obj
<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 4091 >>
stream
xڝX tSպ>i9!@)c\ [CE
@@ -6396,32 +6420,32 @@ O
QYp*Wcxc] ZV ;eS@UDEZL3v<W}!Grs9A,Q[]2M &S<-Mw+7Zklrp7-^
endstream
endobj
-1436 0 obj
-<< /Type /FontDescriptor /FontName /GRCBCJ+LMRomanSlant10-Regular /Flags 4 /FontBBox [ -457 -290 1446 1127 ] /Ascent 1127 /CapHeight 683 /Descent -290 /ItalicAngle -10 /StemV 93 /XHeight 431 /FontFile3 1438 0 R /CIDSet 1437 0 R >>
+1431 0 obj
+<< /Type /FontDescriptor /FontName /GRCBCJ+LMRomanSlant10-Regular /Flags 4 /FontBBox [ -457 -290 1446 1127 ] /Ascent 1127 /CapHeight 683 /Descent -290 /ItalicAngle -10 /StemV 93 /XHeight 431 /FontFile3 1433 0 R /CIDSet 1432 0 R >>
endobj
-1439 0 obj
+1434 0 obj
<< /Filter /FlateDecode /Length 523 >>
stream
xڍK0Ydp;#
ZPaL2,!}r@,1)z%E/P.i</gg/0x´ ?C:ml<Cg힭] XZEtWݰJǭi֞row?KovEA
endstream
endobj
-387 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /GRCBCJ+LMRomanSlant10-Regular /DescendantFonts [ 1440 0 R ] /ToUnicode 1439 0 R >>
+391 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /GRCBCJ+LMRomanSlant10-Regular /DescendantFonts [ 1435 0 R ] /ToUnicode 1434 0 R >>
endobj
-1440 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /GRCBCJ+LMRomanSlant10-Regular /FontDescriptor 1436 0 R /W 1435 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1435 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /GRCBCJ+LMRomanSlant10-Regular /FontDescriptor 1431 0 R /W 1430 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1441 0 obj
+1436 0 obj
[ 28 [ 569 ] 45 [ 323 ] 50 [ 508 569 ] 55 [ 354 569 569 ] 59 [ 569 ] 66 [ 323 ] 75 [ 939 ] 78 [ 569 ] 81 [ 569 569 ] 98 [ 453 ] 100 [ 569 569 ] 105 [ 446 569 569 ] 121 [ 569 ] ]
endobj
-1443 0 obj
+1438 0 obj
<< /Filter /FlateDecode /Length 24 >>
stream
xc````1 S
endstream
endobj
-1444 0 obj
+1439 0 obj
<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 2828 >>
stream
x}V TWUD,u̯rI4D-pEmiYT~#ڀ 4Ђ Qh"hqьFLΜ3Lk{^IggB"Xor_+u
@@ -6436,10 +6460,10 @@ B]/NnG"ZΜ[,T[=h pԣj]]
6/T&{TgeeYwgٲlYl[vNuVE
endstream
endobj
-1442 0 obj
-<< /Type /FontDescriptor /FontName /SDPEKN+LMRoman7-Regular /Flags 4 /FontBBox [ -483 -292 1562 1124 ] /Ascent 1124 /CapHeight 683 /Descent -292 /ItalicAngle 0 /StemV 108 /XHeight 431 /FontFile3 1444 0 R /CIDSet 1443 0 R >>
+1437 0 obj
+<< /Type /FontDescriptor /FontName /SDPEKN+LMRoman7-Regular /Flags 4 /FontBBox [ -483 -292 1562 1124 ] /Ascent 1124 /CapHeight 683 /Descent -292 /ItalicAngle 0 /StemV 108 /XHeight 431 /FontFile3 1439 0 R /CIDSet 1438 0 R >>
endobj
-1445 0 obj
+1440 0 obj
<< /Filter /FlateDecode /Length 457 >>
stream
x}Ao0
@@ -6447,71 +6471,78 @@ x}Ao0
֡Fºs&Hi@ W0qa%yEm6-cj܄p=%6.;-{NBUquX\{
endstream
endobj
-386 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /SDPEKN+LMRoman7-Regular /DescendantFonts [ 1446 0 R ] /ToUnicode 1445 0 R >>
+390 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /SDPEKN+LMRoman7-Regular /DescendantFonts [ 1441 0 R ] /ToUnicode 1440 0 R >>
endobj
-1446 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /SDPEKN+LMRoman7-Regular /FontDescriptor 1442 0 R /W 1441 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1441 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /SDPEKN+LMRoman7-Regular /FontDescriptor 1437 0 R /W 1436 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1447 0 obj
-[ 27 [ 743 511 ] 35 [ 460 ] 42 [ 716 460 ] 45 [ 307 ] 47 [ 511 ] 49 [ 678 460 511 ] 54 [ 653 307 511 511 ] 59 [ 460 ] 63 [ 511 ] 66 [ 307 ] 70 [ 460 ] 72 [ 256 ] 74 [ 897 818 743 562 511 ] 81 [ 511 511 ] 84 [ 511 ] 95 [ 729 422 562 409 ] 100 [ 511 511 ] 104 [ 716 332 511 511 ] 109 [ 537 ] 112 [ 460 ] 114 [ 664 ] 116 [ 464 ] 118 [ 486 ] 121 [ 511 ] 284 [ 511 ] ]
+1442 0 obj
+[ 27 [ 743 511 ] 35 [ 460 ] 42 [ 716 460 ] 45 [ 307 ] 47 [ 511 ] 49 [ 678 460 511 ] 54 [ 653 307 511 511 ] 59 [ 460 ] 63 [ 511 ] 66 [ 307 ] 70 [ 460 ] 72 [ 256 ] 74 [ 897 818 743 562 511 ] 81 [ 511 511 ] 84 [ 511 ] 95 [ 729 422 562 409 ] 100 [ 511 511 ] 104 [ 716 332 511 511 ] 109 [ 537 ] 112 [ 460 ] 114 [ 664 ] 116 [ 464 ] 118 [ 486 ] 120 [ 409 511 ] 284 [ 511 ] ]
endobj
-1449 0 obj
+1444 0 obj
<< /Filter /FlateDecode /Length 28 >>
stream
-xc``0-/͗U 
+xc``0-/͗U0
endstream
endobj
-1450 0 obj
-<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 5882 >>
-stream
-xڭY |SUN7UW ʎ**KeeҦiK6iI6mӦ{ӅntŲ㼧tnrCq\~<޼7{NL&=;֭?;,^E‹ I)L,?w"_9cTϓرbO1L# SQG,Փׂg-F)71&Ɯ|7_p6 s2xI"ŋ<_O1xօ ;Ӳ<476!9&%ݗp+L&er%2Yi|.7#!%!&3!+'dpE M㾚&q  ̄nH$\hH0-#iQ"}N梔2[j} osoBQOR2δԘui ["(A?Ɠ1g,`,b,a,e,c,g`dbaXxňf0bF283RBFCĐ0rO"ЏrLd2aLX42m|b !6`'L)˂'Ẑ!<2GN]8eZ?Ow
-
-
-NJ-#v
-4m"|5`/ۥB!O) ^ e6UXHxƊ 6$j1;[X> Xnl!T6bԦnuAc(?-FK T0άb,9vX9*y$`<Zi2;adWn; JÌ&3=8\^ ]x*^Ov1{ɛO6zzdpWFLj<$l;sU-!Gj z鬻/DzǷ*y~cۉ0j³M*M+6DbH|ŕw4&I̢nR*;x"Vxk𷯿c5,sv
--PdPiQCW1x]QNՂj|AQ+1=4䓨G "
-FQKô +ŵ|]pi?KTTByyVHôyP%"O`s@p,`|t6V@iM}h;1[MroR2aC4AM&Qs6]?]\LJVRKxG`]BQ\UzsRdq9wr E\دlBk{:sJR'~&wTI>O J݄.-sԐ>ɩ)}O3 r˝yruV u7*+{޺B"%;)82+Q I_y
-|@F{ގf<dl;9 ܿjhg`a1iSStAO쨬-m1Q62}̷"k,`npB谸"XxrW4j[9rb^a&A z|0WGsQF;V,ۛPU 96lj5t{}rX@1ܸ,e
-oC>W}1G͢WX''Z< F&}Wu|`S'q!jB#SRdج66h?ڢV ya*.HCkL.N^m
-)N)mo/6K7b`a?aa1 r/NFcAיIN6W֞=1Еd.qxK_yz m 50:tڪٍ"p5oGjbэ4z-K7oh.<?p>^[i$G^SuV}"ZPm5u=[ɱGtI֠>~/\3[zJ
-NYa/=%QZnΑs($~&F%UkPyYĸXBs)VMV9lб\SјTt24yqcU2M9QK9jؖl1NgsP 4}=:&,:5~[]|_Bf:XP5gH팊-ӚuN'-ڤ"&V%sԵV4t %6Z r*XL- ÅZXu4V
-.4G( 3Ig3+-z2+ @1ц)2* m<FX;nl.jFۦnኡbf30Ƣ 4s
-qVv5ԪTB:u[B2B:~J:m>5T V0cKSL:"ͬҎI `jrrjZH<0
-3~J@Ed2Fw]hQ#9q!l|']v; x< [>>-nR~%nN]]m4t$WzMϕE(Ѿrmݭ'RSZ yFf5Y Ԟ}M`E"Fn!,'؞¹$/HСkzG[eM iA,ؽ؋:ijB^{,Yc$jA,~f"-axg
-!/Gw*?88UT,[t(-?p'jz`+ę; ֆK.= \I=Š@0&3&"(l|nLtjpTo"rkɜ:@z-OܷEgXI|uc&j]JwVJԃT& CӲQDdaoOk/*k:^LU|Ku #O65Հ=j/6:fKϠɟ
-0'eDvMj| vPˇZF?
-e6"eyVQ|EYb?:?%gG>aQrcAqH}iq'Ћ[e^^=T6J3Hd<e0xk><QOt!s2AZshn+9D&gs'k".wu{~.{!k~*T~'<Cd k\=V= ֿ1@kSw<Xl8'> O=.7Qh,wvQ\fDR* 't4lr8kxĖ!9B?TTߝBx% mW>3ot?f~L \PE":hI rtkAzoD7?Z֥'h\L.]`h%x=Fq69JԆx
-He7zx~ ]`UzVxuattx_#YAg)Ơ>]i|Oy`ib eʼlu_ʢ0x3SfY:-rTjzU3Fpf
+1445 0 obj
+<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 6055 >>
+stream
+xڭy |SenB8Hߩ
+e**KEֲKo!m4Ifk|ٓ&mڦM JYd"8(80*::s8ΗOr8:_ܛ'{>&ctɜm׮w9P_baZ7#^| BO1BO3C`ZdbϚX+r(9}*|
+; 38<ml~#raTsi &c>i7)&Ɯ|_.*vŊJ
+9˜U+V^~^%6fgZ@\Ƥ3cv쉍[ rccҳrc
+ce $rboaV^VZQVfL1?30F ˜܌,~QV̲e11EYY1B`؂œ9ET<|ݲ&,۽ckރqB0&0&3K+{{
+6gg  O1ex*c u]݌=F
+#Hgd2 .8g !CĐ0JO2ЏXFl U瘃ӖOM{<
+S32"@D̴xՑ#CQ='Ύ9tΟysL=9ԟ82oM,ё`蘘yqg7j9j(M4 uL&5J-Iݛ8T}1Zi2@`.6ksN+ߣj35Xu׀h$l)R
+(Qx[{O֒6PYlŢв
+^%S%zφbxͬ=E^n ӠIcԒQThP)& $%+8?VKZڠ2 `S& Uc`AxLUzt4BEjax!wwbFhEvxij5Z\d>gM1M*
+CH I$ ȄuNf#FS6Qn("M:S9h2j-aV-S9R,;aTC֗>ՉqZvB Pl9ߢl? 6xat/;V ;[>v/1NGv-]Dŭ["j=<Dln
+A%['ob~3蕋aVer:;-@E|;6]i/|>Bji8#zeɒd|79(@3}Y@ޮ5NUħ
+4zs}S8Wo\+e(uAGIŽHY$#$d)kȨap{[*mb ; LPꥤQc?"ݮ~$v;Fd(сm%u&U 3 ^dIp;wC Z
+maU[@SRHF:r|bś̆|R=H6li+=٥PINd@
+pBEn"^歊"4^;.
+z"pAz:,|tѮ@hAiN}l71C;iBALКJPөb5ozIZEVT>y:,(ɓef|)Jxgͬ%7 kդA]#ˡLjjhv5u 7rshIZ<9f2W5+DG=>ivDt s$Pdk()9c_v%p yFߞB/'2sKsegeyUY\~e\j.fK t <HHuً1Y^)3~Չ^1-\N}Y W::+oEZ%)Pl5I{=4WZvACU}}K0پqR@2MUr9Z\ҕfjZ!V۝n 8RU~\ЗB
+:Z3{@Z LrN1BE: RIZ')fe'zZ*AMwUzM$If̚K(]n]6@Dp\Fc`r04FXDPD` ,5н(ϝf)jap]`G!xNj
+ía(:ԊٗZGTڝ9ɤSLg0<'[jGiOKJIDoqn{*#KII|/`ARרsQkp[;A?zaUo}x{<\&NՔ> kU^x<5ɡD6ɳFX5F5MC5Xdy!4T$5E-k yo+n6V-$ ]zfz5dT̃'ɣR9X3\X5|yŭ=w-lb7+4*@"$sj.=/NnG3)#N&!
+699f*u n ??|_?gP
+gk*?mGD8xO>J>a
+9P^q,|g' A hI-^ȋ Gf8O^k#N#h<NxUP
+ly,'Zs6~qimZT
+x;**#\-5xJewQqOc/9`F+9oMwGko~G<Z•ƚfHzjf\jjXu 6.,o?#gp~yHXPw"}B/Q&Qh$0zY0juzhЃ21v(;;#(6 d^ߞN 㴏&-iT*-]btzf'}IoԐj] Q9ENI1ʚ>wG Q)4w=qMyu0] mk.ny YiwcC q7%܆/<7vts*ȣtUU;~綒kbju.Բp\^
+eli@Xu*Z1fu;eZ` ]li}Q@n:JO_2Db 1ô M%jp$
+ǯn]nvDZ`M3=WZNk0Z
+AI%GXt|MLФ#Vzvʼnn<,t!Zp\'%JTZQ#6.;.ⵓW[SQWVȲNeJZG0frCZ{KYXK} yd#I|3kWX!Z5ޯCORQxp$6ں
+σw@]/+N:HR~-4}s>E ߵ9:v
endstream
endobj
-1448 0 obj
-<< /Type /FontDescriptor /FontName /RMABVB+LMRoman10-Italic /Flags 4 /FontBBox [ -458 -290 1386 1125 ] /Ascent 1125 /CapHeight 683 /Descent -290 /ItalicAngle -15 /StemV 102 /XHeight 431 /FontFile3 1450 0 R /CIDSet 1449 0 R >>
+1443 0 obj
+<< /Type /FontDescriptor /FontName /TDKKTE+LMRoman10-Italic /Flags 4 /FontBBox [ -458 -290 1386 1125 ] /Ascent 1125 /CapHeight 683 /Descent -290 /ItalicAngle -15 /StemV 102 /XHeight 431 /FontFile3 1445 0 R /CIDSet 1444 0 R >>
endobj
-1451 0 obj
-<< /Filter /FlateDecode /Length 557 >>
+1446 0 obj
+<< /Filter /FlateDecode /Length 560 >>
stream
-x}K@5 ^<L aJ3ۘ:S I\離M7 uε*{#ѣ;k[|o4Zŵ"ݿ)RC{m]ve`\ YNZй)v藿{/>]]:/eK[u(0Qq'*\Oj/"xRZ-: AԪeh{A(TYL̪lTmf31ٙ`׷7RF6ͅ!,N[^X[eeí!: uM^P3y3Ƽ2+.Qu<M5P;om`aIF4GfB]´r.AbGQ)(D 'P" \ %ty3=
-=x ۄi -0dƎR )HĘe&2Kf`Z`Ӯ "σMY z<Rg
-)+_R(( t'V{Fqm[s1tߞRmVCXRp
+x}Kk0E]jK0 I(:1IJEH:- >ωɯ?Ag[7ThdՔZE)[ה;5eu5ܚ\TcI uWn߯k p?sUVlLeͻя,㜛Z.*)mɦJˎVeLV@>Xew~Pu7ok'UWw49K۞݇q/˘TGxRԊM\h5\fm XlۢT]Oʛxf<?qhƯq2?Eg ӈ8-092#Rp ;%1"LA)2S@&=2DhӼ& z:&}+$/)`BLbGgwS$p7EA.# aѮ"}̓"w킞c pWODS pGϛR^\wU]6Mk=G׍Uw
endstream
endobj
-385 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /RMABVB+LMRoman10-Italic /DescendantFonts [ 1452 0 R ] /ToUnicode 1451 0 R >>
+389 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /TDKKTE+LMRoman10-Italic /DescendantFonts [ 1447 0 R ] /ToUnicode 1446 0 R >>
endobj
-1452 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /RMABVB+LMRoman10-Italic /FontDescriptor 1448 0 R /W 1447 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1447 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /TDKKTE+LMRoman10-Italic /FontDescriptor 1443 0 R /W 1442 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1453 0 obj
+1448 0 obj
[ 27 [ 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 ] 61 [ 525 525 525 525 525 525 525 525 ] 70 [ 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 ] 91 [ 525 ] 95 [ 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 ] 252 [ 525 ] 494 [ 525 ] ]
endobj
-1455 0 obj
+1450 0 obj
<< /Filter /FlateDecode /Length 31 >>
stream
xc``_P>
endstream
endobj
-1456 0 obj
+1451 0 obj
<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 7988 >>
stream
xڵzw\D *(;{l+vQ+
@@ -6541,32 +6572,32 @@ Sa{Sr 'Yl:+W'CWy7nsv!g*ǚ 9EЪ5o?ȭ+4 пBٔ
U+qz
endstream
endobj
-1454 0 obj
-<< /Type /FontDescriptor /FontName /MMJPSC+LMMono10-Regular /Flags 4 /FontBBox [ -451 -316 731 1016 ] /Ascent 1016 /CapHeight 611 /Descent -316 /ItalicAngle 0 /StemV 175 /XHeight 431 /FontFile3 1456 0 R /CIDSet 1455 0 R >>
+1449 0 obj
+<< /Type /FontDescriptor /FontName /MMJPSC+LMMono10-Regular /Flags 4 /FontBBox [ -451 -316 731 1016 ] /Ascent 1016 /CapHeight 611 /Descent -316 /ItalicAngle 0 /StemV 175 /XHeight 431 /FontFile3 1451 0 R /CIDSet 1450 0 R >>
endobj
-1457 0 obj
+1452 0 obj
<< /Filter /FlateDecode /Length 736 >>
stream
x}]k0+B{F,)!24e6̐v.'뜴0ZDtUo/]nxu]}js&ɹ^uq櫪oUNG/)>/Yc:۟6Soe?QQŨtmWսHnEU`E#K]Y-!x(G_͹qUh2#s9Fmڲڋ/29SܐGh:}G'Feϼ' ufv[]4ES1Yiqw@?8 忷P2Kf i(5E
0'l scӒZ1akK],~$!}@-@F-4Π%} EKCT&)p&S:.}<e>(M O*z^F
endstream
endobj
-384 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /MMJPSC+LMMono10-Regular /DescendantFonts [ 1458 0 R ] /ToUnicode 1457 0 R >>
+388 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /MMJPSC+LMMono10-Regular /DescendantFonts [ 1453 0 R ] /ToUnicode 1452 0 R >>
endobj
-1458 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /MMJPSC+LMMono10-Regular /FontDescriptor 1454 0 R /W 1453 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1453 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /MMJPSC+LMMono10-Regular /FontDescriptor 1449 0 R /W 1448 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1459 0 obj
+1454 0 obj
[ 28 [ 481 ] 35 [ 517 ] 43 [ 444 ] 47 [ 517 ] 50 [ 444 ] 55 [ 306 ] 57 [ 500 ] 59 [ 500 ] 63 [ 517 333 278 239 ] 68 [ 267 ] 70 [ 489 ] 72 [ 239 ] 75 [ 794 ] 77 [ 517 ] 81 [ 500 500 ] 84 [ 517 ] 96 [ 342 ] 98 [ 383 ] 101 [ 500 ] 105 [ 361 500 500 ] 109 [ 517 ] 111 [ 667 461 ] 114 [ 683 ] 116 [ 461 ] 118 [ 461 ] 120 [ 435 ] 125 [ 536 536 ] ]
endobj
-1461 0 obj
+1456 0 obj
<< /Filter /FlateDecode /Length 24 >>
stream
xc``T |5%aI6
endstream
endobj
-1462 0 obj
+1457 0 obj
<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 2827 >>
stream
xuV TW1 h@%&RFgjk
@@ -6584,124 +6615,122 @@ m׫&IcT щqRm4T!MKUR:mZr껎u4CHNNUJӒbU:>A% iҥ5
ʊKJm)
endstream
endobj
-1460 0 obj
-<< /Type /FontDescriptor /FontName /JZYRJQ+LMSans10-Regular /Flags 4 /FontBBox [ -420 -309 1431 1154 ] /Ascent 1154 /CapHeight 694 /Descent -309 /ItalicAngle 0 /StemV 93 /XHeight 444 /FontFile3 1462 0 R /CIDSet 1461 0 R >>
+1455 0 obj
+<< /Type /FontDescriptor /FontName /JZYRJQ+LMSans10-Regular /Flags 4 /FontBBox [ -420 -309 1431 1154 ] /Ascent 1154 /CapHeight 694 /Descent -309 /ItalicAngle 0 /StemV 93 /XHeight 444 /FontFile3 1457 0 R /CIDSet 1456 0 R >>
endobj
-1463 0 obj
+1458 0 obj
<< /Filter /FlateDecode /Length 527 >>
stream
x}O0=dqwW(@bS@U[ }m?[$xc&|䞳5YE <HuoDdm؇ ul+Uuw&yYR*uK}pK?—_?/¯Bt8 r{j[uGDf(senZ=sn,득 F^%Ke;+<b&>˓\ڎN+锍Lũ FZԁ ?hr69xeLޔ6'b#;Jh]>vf{iŎ#.kImS u`jL.+ Hɿv{I&>T.-iYP 4vĠ HRУg*<8sG9?|Oc3(@s%>AP&DL'M1FLhI|h,T' .?mzM,nO ~{6\<kmV]v+Eכԍ=
ޗ=
endstream
endobj
-383 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /JZYRJQ+LMSans10-Regular /DescendantFonts [ 1464 0 R ] /ToUnicode 1463 0 R >>
+387 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /JZYRJQ+LMSans10-Regular /DescendantFonts [ 1459 0 R ] /ToUnicode 1458 0 R >>
endobj
-1464 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /JZYRJQ+LMSans10-Regular /FontDescriptor 1460 0 R /W 1459 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1459 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /JZYRJQ+LMSans10-Regular /FontDescriptor 1455 0 R /W 1454 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1465 0 obj
+1460 0 obj
[388.9 388.9 0 777.8 0 0 0 0 500 500 500 500 500 500 500 500 500 500 0 0 0 777.8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 277.8 0 277.8 0 0 0 0 0 444.4 0 0 0 0 0 277.8 0 0 0 0 555.6 500 0 0 0 394.4 ]
endobj
-1466 0 obj
-[ 27 [ 750 500 ] 34 [ 708 556 500 ] 38 [ 500 500 ] 42 [ 722 444 278 278 764 556 ] 49 [ 681 444 500 778 278 653 306 500 500 785 500 ] 62 [ 750 556 333 361 278 514 306 778 528 625 278 ] 74 [ 917 833 750 556 500 ] 80 [ 778 500 500 681 556 389 389 ] 88 [ 278 778 ] 91 [ 528 ] 95 [ 736 392 556 394 278 500 500 500 ] 104 [ 722 389 500 500 750 556 ] 111 [ 750 528 1028 722 750 528 750 528 611 444 500 583 833 ] 125 [ 556 556 ] 199 [ 778 ] 234 [ 375 ] 251 [ 444 ] 283 [ 1000 500 ] 319 [ 556 556 ] 400 [ 778 ] 499 [ 472 472 ] 502 [ 278 ] ]
+1461 0 obj
+[ 27 [ 750 500 778 ] 34 [ 708 556 500 ] 38 [ 500 500 ] 42 [ 722 444 278 278 764 556 ] 49 [ 681 444 500 ] 53 [ 278 653 306 500 500 785 500 ] 62 [ 750 556 333 361 278 514 306 778 528 625 278 ] 74 [ 917 833 750 556 500 ] 80 [ 778 500 500 681 556 389 389 ] 88 [ 278 778 ] 91 [ 528 ] 95 [ 736 392 556 394 278 500 500 500 ] 104 [ 722 389 500 500 750 556 ] 111 [ 750 528 1028 722 750 528 750 528 611 444 500 583 833 ] 125 [ 556 556 ] 199 [ 778 ] 234 [ 375 ] 251 [ 444 ] 280 [ 670 ] 283 [ 1000 500 ] 319 [ 556 556 ] 400 [ 778 ] 499 [ 472 472 ] 502 [ 278 ] ]
endobj
-1468 0 obj
+1463 0 obj
<< /Filter /FlateDecode /Length 46 >>
stream
-xc``߿
-
-
+xc``/߿
endstream
endobj
-1469 0 obj
-<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 8638 >>
-stream
-xڵz\W qΘ[4v^*eB]zYXڂ1%1`4%11gpf%~X~=
-0L  Zt˖-KƮ^!(%p<.K!PЋcƱB%˦c:0WB&(ÿwڏeᖅuF`n
- p_#0'<hl06 Fb1Xl6M&cS4l:6fcsl![->Ɩb˰Jl[a Flmƶb۰挹`y`7b~?aXa"(,b8,!-,/X H&]w1aq ;:]uڄQŸm‡"{Q*ћp$tbB}zwM={4zה^^{]gy5}}=oavv\N뿠^_$ ^RQzz;w`3YaCfy0t~5yӑF7(Qgam{0mfnWe9p˨ȿsSUtR"qT'~ABm
-&[epDx\TF`, rJ1 5ނnnx.MIFb}\8D hjdܷg/ݹ"$"'n<fuz[+WnqHٜ'[?R̐.Gҋy_R3nϴ܃ Zl{ܓEC,\%y0K$a_`7h
-{J2I +<Sp7-.YW<
-)()l~GDP Z+f)8[IuXy``XX``yXuuyy5nmZ_
-
-:i$WšݼCB
-ҳ vnZb\VP)i;w 'l0 ??omp2&s!GuH൝ ܰ~$=3}5Y.].9X5}eI3<gٿŎ_q+0'gcୄDDCs#z
-Ma&ÔH"+7!5e.}! R(Z_GM65I%OV1ý'Dz[Mc8p6PVdԁgOP?$8~ h{
-p%ߚ/nPiU{xq<.v!&46{~NR4j -;CBc)F>pԐ_,J6pfP߻BՖ7lY̔vH$ l=}{j|Ǜ<*HZp~8av\R☎EqQ 2܏bP¢6=LǏ=XgQ5pSxI]pQHHp/Աߣ$ٺB ۄ&=Ilۇ.>b64ͭN[ 3O'Mt@} r8[B}703w,3:c1mDL/y`p3mQ
-//)gnݞ{>~TaE6rpa;c ť򒺔ZCn2-%c@ RLR4 sەQM)
-j#. du..:)=aҏ6~O7adbݨ6A[Nlb6kPgIaZJ
-Kfe1ڵ[eކ"|O2N*&7 8AK& V eÃiyY6ĒWd9eU`T8 u8.ȥ'NxPǜ݇6`:ۉ/z7
-pWoyXe뗭M=.S
-Nyp65]Go\d.hіjļ؁ ZbeTd\E! ,n]r5ec4\txuZU'9'yd$7u &*wNJFx-"'ub/3JIvT.D`dRa+-Z[e$k]٫^;־
-Wį(=h(SXqpgq#li4 (`se:bH%5h(nx|ZZR6me<:hk:n">FR_X(38oPv<bq E;h__ ػKLY*wg^Tqݙݕ?v'K
-W±p* ϓ"̉c=̃9pgaKPL$+gAZK|J~ ޿<٬Lp:1NhglApj2+:W`er\
-傿r3JC#˝#ʁ6Yf*$hedR>f%g*e] p_n|An%OGg˿3w$8 sv'ۼ |:[NC[pl s5XpzT4$dZ70F܉
-$
-DUi
-p<탋`؏Z'/C:f+ꖀ3y t^0߹$e&aDZPȕ@U>}ME#ȎO
-:uJq]xMl[#N
-ja(GF(:TGĽ}KJJ@q`-I9k\
- rY'xH<t = כTY-?L/:Hmu2m3~<1SFx3
-477e=q$΋;1Z殺r2@eȄ*tȔSk< /*'W>W_r
-V|73Kߌw?}~mڝ5@nsAZ1 wY)UZxo\|O2ԢAq"zLeJMJ4$חZmi63O+dAJ4v1 Ő2םb|WhS؍7#3j!vuG,KN$0.⍆[d-I2,*/VSU !Q*Jq+C#[ *lmH81yӨ&v1mLE1J>i4ŌV Ebԥ4$951_ժ/ tdh qj!lI]ˤ](t
-Ӈ_XnPׂAK@^*A1 y"-3#aZ R& D, \~(d3aL3-T`B,%HwZ<NhQuJ/\2 G'x_̗|RsPLd}Qc`sܚ@7NNPqbv(Cbur*NV)Y(di\4yAyo>lG59Mz
-?jzr .ߟ~ _qpORRSV
-=k:J83of"g7liH%1Z["
-.ٷXy sCs,DDf&/UeRrfͼyI@Ngh2S;5`t
-hYek]foWPn 0(Vx0"n#i޻q"i ܘLC-c??a/vz~DQ(&ڎ9ΧO(Z$F(D Oiz*
-0o^|Tgl^퇺fyB]94WT ETӐ^¸AoE|qYYAM- npԇlǣ[M!gĻ":NKUIa4'(ᩤ/MS*Tlk0-8yV. UԀzK5㟔z
-1BK$Yjɫ|@^r\hl+C`x/@b_0{V%Hb!TtB?BJ:wʕs^]yիwx Yޅ,֬h5t+m&<xAM[Euvև?IQtQL`P/40xVF!}fUU,̔|}.r
- ;S\$Oj%sn;8pVbJB/gT"BPw[JR*JQj̕G+4z֊t~8q.)0UUxҿʎzBU"ː@~tpysxъz^|wbFQYV_0]'9%t|n QRS(3|FPڌ/_br:giT٬CE <^
-Γ] aptFj
+1464 0 obj
+<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 8831 >>
+stream
+xڵz\W q {-{vMz/"eB]zYXڂ1%&}Kbb~o~X~9
+0++L  XnxcV w 4qWKå`np1ncpB{X ĕ>.pcj^1 w
+`oukǭ^hڍKƇEzغ{ %- w[# lWX4@l6 F`1Xl6M&cSitl6>>aBl[-Ŗa˱*l5[6`vFs6a[v s\0W s<0Oۅ`bAX0baX8EbQX4b8#``` U7BlVX${]<<ZkuoĵkQwbx8K~֍fcrzZlb{Mc %6ʾKFH$9|0q@5F],c쯶O|n=$hȓF :,cXc~w##t:j˨BXkݞLp)hwg&ŦJY׎9):F!Ma[Ǐ[8h!McVְG8Shkdr#bmuF}a[s
+a ?:jݮ4q\d䳐ĆG~(;f4oNZcڝj☾>v}2IlQ,Qى"\n9HC.tUK.~ˢONHHE?
+g1E&la
+7|Ms˩ߌ|~ݗ*1tZQ! )*k?q<$ !>}oZ1,쒶n23q438ȁzo60뮝9JsC "XH;l>ϗ=|j4Ե]z y_b`&✉ lݪ5Ɂ̰[$kؑ`MQ`Ouޱ-hl+<t P; WI5f3O]n=ԏW&zeR) ap7/Ym2hTj5G[DzZ7}[Z%7ʠ>Ziyr֚;%5\l гUˊVi%pOQϑh^'P)G\Hv<1_ѰϠx*82~>4UƖ
+& eײ]/\N| eFN(}1y"%V@Lp Z.NNV%$,{@ bI&:;)=x+ԾY; LL_:!H;7%JқB E䬸(n@
+-'&::,t\e4 dh;񥆁J&7Nb=ML^rAq0V@bI^'IyE(hȥ󁶄 DH >ٺ
+rFnp: żKqQn~,HTeJf|xOzӔpqTeW몐Q_k0}>!U{d1^WОTVUU1_J
+Tp]qrŚar>M
+SxtbjGZ'@VL \Y
+ 0 (f:Ih:\ @wesL…D.YMZ
+*/4NB)IHhn =IHZ /]r<L̺ݾnԢv[*MZ:Y_]ҁ҂b&IQD?vVCLCH)>&?tU1Ry4ڝU^ʠ|0IanTB]gd+w`D tt8,:jk8e΋B+0LpogQ<ɛ߹)(o1e&{=7WFXrš0o/u_|@QǾ}
+^<}v il<yٚU)ۡx]x]R%s?K*w;4zoq^}@+hn"L6Mj!h5gDLZ֯xَĄ712p΋%̮.,dbX,헛׿3 Kq뉦\p 瑋!{.Ԣh![%@c:4pL*% 3y
+<800:2xggt>*i0H,Or #ԉoL"^v@gNUiaTLBBR2ZI
+E׺OǨAt֙I5g$`}uKc ezS,"2\IIR2'5%j1/v@hԱE,io{0ƹ0p< ˻x~I\9ܼ1-2i*OrOHn U c1=KDNq^#Sk#^+>ț,;ȜA>,ϳף8ֶU„o(=h(Yqsgqlh4&PA`P]&C
+WP],ZxtWwsw<h(xK}e}OM~@H/& E%
+ Ot_~-z e'<5z
+÷ݘ
+bbKDձ͋S0͔9!%Z]>n(p\{>LN6htV0i"3[Px$AգgΠ^̢t61P+-=!uӮ&2\
+<O F6L\<P*(N HgN.Px 5LN}-aKW+) \P jQ-"#@. D 2EW?-kB m g xeOh$2C}M ,Zx&qWmp_m0)<e_k={IIAbY,%xݍ־hӲoS?!}4Ad0an 7,mAo}^o95y0 3jvJsS$KCg lQ)6hMV(A+9iCҖø>*^˝c\-U˿R9ys70
+Ud|0XPḫ1Wj^-1y&8RٕϯWXqoF15yQO_ ?1iL dz:pR%TɌ^4xbwW$W'WzK||[zl⊪^J
+:$Gh$}:S.6v vH "npMQz4(9vSٌO{Kx~y9!:Oè< HE%cDB\
+cFp&ReiߋYDmv;(&G%EThHr𐪄Ͽd v|W+ùT0j&#]Z$'S<y@=UWŏ\t{ 2HΆ|+ni3/doxz<hPs8=qѕ><x Ю&_J(K?冔IG:tOHsHࣾwf. 81Wg6^p::E4`T ŋ(?;I-bL W_ȓGBv͋GS lм=@O̔  8(if>We?^/SyOz6n2 0 fl_mD'GPy[iyp ]XYlH(>w!yN 8L~iSC@^3-:F
+?bzz .gߞ~ _sp!ORWp-zÉpE"k/0yq-n*.NRZzÁٳX'[دa=R 8BD.1md:9vSp-zA!?u3B;ܮ'C17ģ'PThA~
+$j! 5Ϩ +-2 ΐ9ɐ=l6PLfhb.~vR3 "ڧEۅ~n`JTQI
+RƠUh#e@4k)"W_-|JOUTrr*PpV7+R-NJʰ
+1՛l
+_[^:USӝ~\UEIfGw\)Rsܢ2əgKW6kX؎h'UZUמZxVCjsxgqpvGY;F>~@V#NSIPؾ@ؾRpzyz!:eJ3e %ViRFPSC2.Mӣca1YkyZ<奵A㱩$ޠ4}?_P.Yw76~K>LQTSpi[f wn)!<JP* Hp6%CGe
+͖^hd?^"LQr W#RXNpƂTVg '$\#T|nge&rLrL6ٜTp9|>5Ua,}071B|JoҨxIeF\ "c̝34iT^^f!sx]1ZIvv6l_הfO&Qڋ_2ߌ3912*1qO!3F^(lxA4"Nlʏ2B%h<'¥R%F!K.f-$Ȑe"tj&D.9l&U*ALg#8 <KQ "W}xU4y+% F&]!* wl:~2.Oyq a۴Zȝc36)jZC"?Ou:/LHzoLNu @xݩ\̇d.U ̻vKpBbuAԛ(' D3&4~_Ҋ`D'ȷ*6- hl<v7%wSzsV naxWwiOIMnFOSAZ;l|Lߑv_o)^
+0o^|\kj^߾򄄻bHR*A,?>!qUc( عf\P-H?j7M&ǹ":NKܕTxvLa
+SI^5/K x7d[ia?3Z!D<FT=ȎSn<+O
+}Pw"MZȧ %*F)= 6~oK̶|s+tϬ
+Bb<:zX)tFӥ~
endstream
endobj
-1467 0 obj
-<< /Type /FontDescriptor /FontName /DFWWWD+LMRoman10-Regular /Flags 4 /FontBBox [ -430 -290 1417 1127 ] /Ascent 1127 /CapHeight 683 /Descent -290 /ItalicAngle 0 /StemV 93 /XHeight 431 /FontFile3 1469 0 R /CIDSet 1468 0 R >>
+1462 0 obj
+<< /Type /FontDescriptor /FontName /HRDLGI+LMRoman10-Regular /Flags 4 /FontBBox [ -430 -290 1417 1127 ] /Ascent 1127 /CapHeight 683 /Descent -290 /ItalicAngle 0 /StemV 93 /XHeight 431 /FontFile3 1464 0 R /CIDSet 1463 0 R >>
endobj
-1470 0 obj
-<< /Filter /FlateDecode /Length 757 >>
+1465 0 obj
+<< /Filter /FlateDecode /Length 760 >>
stream
-xڅKo0EvAñK  iPMDߏshԪ_{}u5V$x3ؕf=&o41ΣGڵ6[˦eSn9u#nAߟ]Dlۢ.vf
-;,~;m(0 ySeΙ<C
-óuTՊO=bQeO˝ ^-ubh3ׇ;ywLW7qH;iu a0ʬڶNΈuנވse[þ(MW4m‰/$0Mx5N8; -Ba(̓1bP1f I@X%!"!_2b9G-J" T$L@Й@K"%P-q\sbv: :"Q5S5H-F z D]$<(<HZƒ"D%<(U3;Ur>(%Pƒ\A!AuSxAK
-13@u)*_
-՚PL,E)($vT쟂] e&
+xڅ]o0+J%NT lHTnibX$HP>:MVUsNl7.wKb?ʹ)N{[w֖k+ۉ|1]U/bw*EGܾٟEi׵{K=m/ުnS)ܰlX~X5wq̛7y*雪.[^{$QVEG
+KO^/M :WǮ=_K[ڶ3hu:v q4n.ފO`QѪ;Ǥ$).l6(uxY+;׺ ɉ[(i4P% *PJ
+ L@4J
+BwMBt bw9<c(@ЩIЙރ2 )t*KS1 @GD$d?ݑIPB
+*x$xPL&Q5S5 ɫkPA!E< K ;@uO/jH7PfHPagi(3$ ,Pbh*? ev2CB);@gJ-H7^Hא = =.4L4<$ {!q1LO{L? ^&
+4cY+=*5hH*P
+KqxgkxJyy9H pO{_p‹Sۺ;|Do窶̡9Y7|.KO/7
endstream
endobj
-381 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /DFWWWD+LMRoman10-Regular /DescendantFonts [ 1471 0 R ] /ToUnicode 1470 0 R >>
+385 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /HRDLGI+LMRoman10-Regular /DescendantFonts [ 1466 0 R ] /ToUnicode 1465 0 R >>
endobj
-1471 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /DFWWWD+LMRoman10-Regular /FontDescriptor 1467 0 R /W 1466 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1466 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /HRDLGI+LMRoman10-Regular /FontDescriptor 1462 0 R /W 1461 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1472 0 obj
+1467 0 obj
[446.4 446.4 0 877 0 0 0 0 569.4 569.4 569.4 569.4 569.4 569.4 569.4 569.4 569.4 569.4 ]
endobj
-1473 0 obj
+1468 0 obj
[500 0 0 0 0 0 0 0 0 0 0 0 277.8 277.8 0 0 0 0 0 750 758.5 714.7 827.9 0 0 0 0 439.6 0 0 680.6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 528.6 429.2 432.8 520.5 465.6 489.6 0 576.2 344.5 411.8 520.6 298.4 878 600.2 0 503.1 0 451.2 0 0 572.5 0 0 571.5 490.3 465 ]
endobj
-1474 0 obj
+1469 0 obj
[955.6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 533.6 588.2 0 0 0 880.8 ]
endobj
-1475 0 obj
+1470 0 obj
[1027.8 0 0 0 0 0 680.6 680.6 680.6 680.6 ]
endobj
-1476 0 obj
+1471 0 obj
[339.3 0 0 0 585.3 0 0 0 819.4 0 0 0 0 0 0 0 0 783.7 0 0 0 0 0 0 0 674.8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 542 0 0 0 404.2 472.7 607.3 0 0 706.2 0 588.9 523.6 0 0 0 0 0 0 647.8 ]
endobj
-1477 0 obj
+1472 0 obj
[333.3 0 0 0 0 0 736.1 736.1 527.8 527.8 0 0 0 0 750 750 0 0 0 0 791.7 791.7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 875 875 666.7 666.7 666.7 666.7 666.7 666.7 888.9 888.9 888.9 888.9 0 0 888.9 666.7 875 875 875 875 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 555.6 0 0 0 0 0 0 0 0 0 0 0 0 0 472.2 472.2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 666.7 666.7 450 450 450 450 ]
endobj
-1478 0 obj
+1473 0 obj
[ 27 [ 525 525 525 525 ] 32 [ 525 525 525 525 525 ] 38 [ 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 ] 59 [ 525 525 ] 62 [ 525 525 525 525 525 525 525 ] 70 [ 525 525 525 ] 74 [ 525 525 525 525 525 ] 80 [ 525 525 525 ] 84 [ 525 525 525 525 525 525 ] 91 [ 525 ] 96 [ 525 525 525 525 525 525 525 525 525 525 525 525 ] 109 [ 525 525 525 525 525 525 ] 116 [ 525 ] 118 [ 525 ] 120 [ 525 525 ] ]
endobj
-1480 0 obj
+1475 0 obj
<< /Filter /FlateDecode /Length 25 >>
stream
xc``_
endstream
endobj
-1481 0 obj
+1476 0 obj
<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 7001 >>
stream
xڅz@SWJ\juWm".\8CFI#8a7(V*V6jZk='
@@ -6744,10 +6773,10 @@ pKTaW5~ByDۖ~d|o~}m<Y>ALM}-vVgI-Bj
.V]zAK^ NP 1¬3֍G- "b@IXx8Ah[M〽U[S5'_9Ki8mf7 62 >Tk0JRڪR2S 9]h7;
endstream
endobj
-1479 0 obj
-<< /Type /FontDescriptor /FontName /BMSACQ+LMMono9-Regular /Flags 4 /FontBBox [ -451 -318 734 1016 ] /Ascent 1016 /CapHeight 611 /Descent -318 /ItalicAngle 0 /StemV 175 /XHeight 431 /FontFile3 1481 0 R /CIDSet 1480 0 R >>
+1474 0 obj
+<< /Type /FontDescriptor /FontName /BMSACQ+LMMono9-Regular /Flags 4 /FontBBox [ -451 -318 734 1016 ] /Ascent 1016 /CapHeight 611 /Descent -318 /ItalicAngle 0 /StemV 175 /XHeight 431 /FontFile3 1476 0 R /CIDSet 1475 0 R >>
endobj
-1482 0 obj
+1477 0 obj
<< /Filter /FlateDecode /Length 692 >>
stream
x}OO0BرUJRkH%~Uw@}|{[ǓX'ݶթm<[mf^姣u݋-.xk|m;q;[Η^v]4}m+ُ֓jU1~aI~ (/PmڲrObx$ó+fձFJ]銆:ŶW SQyG
@@ -6756,22 +6785,22 @@ x}OO0BرUJRkH%~Uw@}|{[ǓX'ݶթm<
4 5WPjM=UZ(܃& ՚yfiDƬ=5:ET!26蠡jh4_hܘ2TGA5ҕʐ?&;MdnDGitgy4x!5ci~~4~慱&[?Jg?'s]FKOH
endstream
endobj
-374 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /BMSACQ+LMMono9-Regular /DescendantFonts [ 1483 0 R ] /ToUnicode 1482 0 R >>
+378 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /BMSACQ+LMMono9-Regular /DescendantFonts [ 1478 0 R ] /ToUnicode 1477 0 R >>
endobj
-1483 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /BMSACQ+LMMono9-Regular /FontDescriptor 1479 0 R /W 1478 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1478 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /BMSACQ+LMMono9-Regular /FontDescriptor 1474 0 R /W 1473 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1484 0 obj
+1479 0 obj
[ 28 [ 494 ] 43 [ 457 ] 50 [ 457 ] 63 [ 531 ] 66 [ 245 ] 75 [ 816 ] 77 [ 531 ] 96 [ 351 ] 98 [ 394 ] 105 [ 371 ] 116 [ 474 ] 118 [ 474 ] ]
endobj
-1486 0 obj
+1481 0 obj
<< /Filter /FlateDecode /Length 23 >>
stream
xc```P`Ta`X
endstream
endobj
-1487 0 obj
+1482 0 obj
<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 1234 >>
stream
xmLWQ`j-:OFKЉ ?c2[{A'eTY@nSadςc1Iej=b//{#@h( br,Cn|Vv)OXY+&>j4MЬĆHCdZqc1ɩ
@@ -6781,10 +6810,10 @@ xmLWQ`j-:OFKЉ ?c2[{A'eTY@nSadςc
7bdxo;ts:<0n${z;[ZhoG6z|t?J
endstream
endobj
-1485 0 obj
-<< /Type /FontDescriptor /FontName /VPHLPO+LMSans9-Regular /Flags 4 /FontBBox [ -433 -313 1466 1155 ] /Ascent 1155 /CapHeight 694 /Descent -313 /ItalicAngle 0 /StemV 95 /XHeight 444 /FontFile3 1487 0 R /CIDSet 1486 0 R >>
+1480 0 obj
+<< /Type /FontDescriptor /FontName /VPHLPO+LMSans9-Regular /Flags 4 /FontBBox [ -433 -313 1466 1155 ] /Ascent 1155 /CapHeight 694 /Descent -313 /ItalicAngle 0 /StemV 95 /XHeight 444 /FontFile3 1482 0 R /CIDSet 1481 0 R >>
endobj
-1488 0 obj
+1483 0 obj
<< /Filter /FlateDecode /Length 419 >>
stream
x}N0~âRY8)UH@+R!}ڱؑ, H3rrn{t-?1pxtV`|-k6*D9DZ#
@@ -6794,22 +6823,22 @@ u0=z0a6 4
bXk֊Zow4~~mjWolhf_Xg
endstream
endobj
-373 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /VPHLPO+LMSans9-Regular /DescendantFonts [ 1489 0 R ] /ToUnicode 1488 0 R >>
+377 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /VPHLPO+LMSans9-Regular /DescendantFonts [ 1484 0 R ] /ToUnicode 1483 0 R >>
endobj
-1489 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /VPHLPO+LMSans9-Regular /FontDescriptor 1485 0 R /W 1484 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1484 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /VPHLPO+LMSans9-Regular /FontDescriptor 1480 0 R /W 1479 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1490 0 obj
+1485 0 obj
[ 28 [ 514 ] 35 [ 571 ] 43 [ 457 ] 45 [ 286 ] 47 [ 571 ] 50 [ 457 ] 55 [ 314 ] 59 [ 514 ] 63 [ 571 343 ] 66 [ 286 ] 70 [ 542 642 286 ] 75 [ 856 ] 77 [ 571 ] 81 [ 514 ] 84 [ 571 ] 88 [ 286 ] 96 [ 402 ] 98 [ 405 ] 104 [ 742 400 ] 109 [ 571 ] 112 [ 542 ] 114 [ 742 771 542 ] ]
endobj
-1492 0 obj
+1487 0 obj
<< /Filter /FlateDecode /Length 23 >>
stream
xc``U\<ţa
endstream
endobj
-1493 0 obj
+1488 0 obj
<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 3281 >>
stream
xڕW XgA QwFgVRWk齲J*V "$p *HѺڧ9Y>L}ϙ'{{`>>@ X{s=Oo޲C%ˎ
@@ -6827,31 +6856,31 @@ BD/נּA[D?S/Ioh |Gf?cr=1r\g[QF2ӻ^%^MÛn
d)&#Y/L1󲵝cLۅ~>v$)YgBX >{]@s@6%?0VS|PYAozů{L:׋$5'R`;HYMǘ$ m۳Ôv750`6 Nc376A~{':TAJi>('txG/3ޗܘ`}k{tl*2`.gnY{\6:[S69{
endstream
endobj
-1491 0 obj
-<< /Type /FontDescriptor /FontName /WLTFCY+LMRoman9-Regular /Flags 4 /FontBBox [ -443 -292 1454 1128 ] /Ascent 1128 /CapHeight 683 /Descent -292 /ItalicAngle 0 /StemV 95 /XHeight 431 /FontFile3 1493 0 R /CIDSet 1492 0 R >>
+1486 0 obj
+<< /Type /FontDescriptor /FontName /WLTFCY+LMRoman9-Regular /Flags 4 /FontBBox [ -443 -292 1454 1128 ] /Ascent 1128 /CapHeight 683 /Descent -292 /ItalicAngle 0 /StemV 95 /XHeight 431 /FontFile3 1488 0 R /CIDSet 1487 0 R >>
endobj
-1494 0 obj
+1489 0 obj
<< /Filter /FlateDecode /Length 492 >>
stream
x}[@&cĐ8&$s<"]$ҐݧI&hSɷ]4GkU7lrIDٻj=l\VNeyYNZӹ)~/.䃿p)Mա/:LGٍ(2?HuU#Yp9<I5f%OYeGc B&wdZ)_\ob3ݹzuٛ*yfu~h ?{i>ע&63BGz>kזXh9ԵEIgVxV[I=Kx1\OPi! 5A!h 6 E,4A PAN%Csr*A3Bh#gdiRAP KcxI0{m%=q*=q*=.0{,Sܐsf/?vҋcnًJ~Mk׾Kjmʾ)T
endstream
endobj
-372 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /WLTFCY+LMRoman9-Regular /DescendantFonts [ 1495 0 R ] /ToUnicode 1494 0 R >>
+376 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /WLTFCY+LMRoman9-Regular /DescendantFonts [ 1490 0 R ] /ToUnicode 1489 0 R >>
endobj
-1495 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /WLTFCY+LMRoman9-Regular /FontDescriptor 1491 0 R /W 1490 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1490 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /WLTFCY+LMRoman9-Regular /FontDescriptor 1486 0 R /W 1485 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1496 0 obj
+1491 0 obj
[ 27 [ 893 575 ] 35 [ 657 ] 43 [ 526 ] 96 [ 488 ] 98 [ 467 ] 105 [ 460 ] ]
endobj
-1498 0 obj
+1493 0 obj
<< /Filter /FlateDecode /Length 18 >>
stream
xc```
endstream
endobj
-1499 0 obj
+1494 0 obj
<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 1258 >>
stream
xmTmLSW~"]^Gd-DeNNM)R*]mXAQc`lR>TmM [21 ?̖,f{em̖,9=9xiJ*hen(Hγdmo[M ˰)q)-rQ"/J"dZ)}qLKeK)nSO 21w+(&) POh  kګ=҅Vy-4W* 2L(Ӏ (ZJ FkW8jTPiq"Q«C
@@ -6859,32 +6888,32 @@ F`B56@Jm{7
jг{qU 9L*6bӈ<|Hn;`}]{Xn_M3&b-|,#c|)̺nЬ!0d*veX?`=D~M_Ͻ}Z[b# eɶ
endstream
endobj
-1497 0 obj
-<< /Type /FontDescriptor /FontName /RMWBFT+LMRoman9-Bold /Flags 4 /FontBBox [ -501 -299 1649 1136 ] /Ascent 1136 /CapHeight 686 /Descent -299 /ItalicAngle 0 /StemV 110 /XHeight 444 /FontFile3 1499 0 R /CIDSet 1498 0 R >>
+1492 0 obj
+<< /Type /FontDescriptor /FontName /RMWBFT+LMRoman9-Bold /Flags 4 /FontBBox [ -501 -299 1649 1136 ] /Ascent 1136 /CapHeight 686 /Descent -299 /ItalicAngle 0 /StemV 110 /XHeight 444 /FontFile3 1494 0 R /CIDSet 1493 0 R >>
endobj
-1500 0 obj
+1495 0 obj
<< /Filter /FlateDecode /Length 388 >>
stream
x}RMk@ﯘ=lTEVT+^.ݰIQ(@B^ޛf{WNXV3 Vۼ"ZD9׊*]R4#N%;sQg!;~WɂAڒL4#Ggk!|x|J&BHodh\ܓfCx,SY(\Bx0d; 樅<CA#8UuAk(cXf/DmV4קٵB9yLqħ1,7 JTxhcOm(1}(DC+<ء)uh9#q=~e]U7Z:y6x?JU͢ 
endstream
endobj
-371 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /RMWBFT+LMRoman9-Bold /DescendantFonts [ 1501 0 R ] /ToUnicode 1500 0 R >>
+375 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /RMWBFT+LMRoman9-Bold /DescendantFonts [ 1496 0 R ] /ToUnicode 1495 0 R >>
endobj
-1501 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /RMWBFT+LMRoman9-Bold /FontDescriptor 1497 0 R /W 1496 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1496 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /RMWBFT+LMRoman9-Bold /FontDescriptor 1492 0 R /W 1491 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1502 0 obj
+1497 0 obj
[ 28 [ 515 ] 33 [ 515 ] 47 [ 515 ] 55 [ 515 ] 59 [ 515 ] 66 [ 515 ] 77 [ 515 ] 81 [ 515 ] 84 [ 515 ] 88 [ 515 ] 96 [ 515 ] 105 [ 515 ] 114 [ 515 ] 118 [ 515 ] ]
endobj
-1504 0 obj
+1499 0 obj
<< /Filter /FlateDecode /Length 23 >>
stream
xc``p`dP`hhpP
D)
endstream
endobj
-1505 0 obj
+1500 0 obj
<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 1845 >>
stream
xuV}TW!@5ʚiZ3K- _EAE%1LBD<u
@@ -6899,84 +6928,74 @@ oRWɧ<| ƠP"{nPq%e}Gܮ(WȗN)QuoYUO&Pn^
g48ԂE>*`zK@E%1άxh@,+&p_(N(/?=u0ݕLDB0O>`R Fon0km(V׮Җ ֐F"3DgϷ^?@%xSEV!6¶M:GӞ`x#qNf4e'_%#l|ZQuJeq?HR@8(fu\o!du8iw6s;YpoۚiPH&Ng y[j;rgRsJcOt~w@[fk9RM
endstream
endobj
-1503 0 obj
-<< /Type /FontDescriptor /FontName /CKBVSC+LMMono12-Regular /Flags 4 /FontBBox [ -444 -311 715 1019 ] /Ascent 1019 /CapHeight 611 /Descent -311 /ItalicAngle 0 /StemV 172 /XHeight 431 /FontFile3 1505 0 R /CIDSet 1504 0 R >>
+1498 0 obj
+<< /Type /FontDescriptor /FontName /CKBVSC+LMMono12-Regular /Flags 4 /FontBBox [ -444 -311 715 1019 ] /Ascent 1019 /CapHeight 611 /Descent -311 /ItalicAngle 0 /StemV 172 /XHeight 431 /FontFile3 1500 0 R /CIDSet 1499 0 R >>
endobj
-1506 0 obj
+1501 0 obj
<< /Filter /FlateDecode /Length 428 >>
stream
x}]O0+`Dpf!q%Df,[֞&%.m{&F%pk z:=A[2,5P3
endstream
endobj
-370 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /CKBVSC+LMMono12-Regular /DescendantFonts [ 1507 0 R ] /ToUnicode 1506 0 R >>
+374 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /CKBVSC+LMMono12-Regular /DescendantFonts [ 1502 0 R ] /ToUnicode 1501 0 R >>
endobj
-1507 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /CKBVSC+LMMono12-Regular /FontDescriptor 1503 0 R /W 1502 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1502 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /CKBVSC+LMMono12-Regular /FontDescriptor 1498 0 R /W 1497 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1508 0 obj
-[ 27 [ 734 490 ] 35 [ 544 ] 43 [ 435 ] 45 [ 272 ] 47 [ 544 ] 50 [ 435 ] 54 [ 639 299 ] 57 [ 490 ] 59 [ 490 ] 63 [ 544 ] 66 [ 272 ] 72 [ 272 ] 75 [ 816 ] 77 [ 544 ] 81 [ 490 ] 83 [ 666 544 ] 88 [ 272 ] 96 [ 381 ] 98 [ 386 ] 105 [ 381 490 490 ] 109 [ 544 ] 116 [ 517 ] 118 [ 517 ] 121 [ 490 ] 187 [ 489 ] 257 [ 435 ] ]
+1503 0 obj
+[ 27 [ 734 490 ] 35 [ 544 ] 43 [ 435 ] 45 [ 272 ] 47 [ 544 ] 50 [ 435 ] 54 [ 639 299 ] 57 [ 490 ] 59 [ 490 ] 63 [ 544 ] 66 [ 272 ] 75 [ 816 ] 77 [ 544 ] 81 [ 490 ] 83 [ 666 544 ] 88 [ 272 ] 96 [ 381 ] 98 [ 386 ] 105 [ 381 ] 107 [ 490 ] 109 [ 544 ] 116 [ 517 ] 118 [ 517 ] 121 [ 490 ] 187 [ 489 ] 257 [ 435 ] ]
endobj
-1510 0 obj
+1505 0 obj
<< /Filter /FlateDecode /Length 31 >>
stream
-xc``UTѰˁ4
+xc``UThX
endstream
endobj
-1511 0 obj
-<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 3660 >>
-stream
-xڭX XgY˘VgLZjVTVk.
- B
-jW4Z+ QhDd\#KN*RJTI
-MjJ4"!Q%*])KEdR<Vd
-ZC&WɤRJ&&) ՚
-L
-5+CY,@)X::1I?y`B$V#[+wx4 Df!sy|d!#+Ujd-@6"QH Dv!ɈIC2<; pDy2RUH8f7EF9fdH,~Qĉo4Zu/hX8XSh.:iwb
-?YDhtKZM*<Xل'oJRZ\Ff A .ƛ_hcz\X=#ZrN]2dL CеlKfN ;t :xEn8i"_ͤvVSмE8?*?XIy!m_PӒ);68 EU,xrN=X<}Rxa &I GlQF'u^ G?)D >tzq Gd}<
-}$y[h6K5ɑĚgtSgb8t78le'#~c4
-[NQvqz>|(+Oפ84-5r^
-wF-G!6<tkOP%RYnZGw".o]AUes>Vpw~-}pƁSRPo0y+D$\B9` u,8;ΞȎfy*CcqRX +3=%"Jl_sylB`Y^/7'lBL9!V.-D`):}\u;胊('g
->KQ  fFаI˃KS?xz7"_%o~nӃ0oxr?E͕~(Y@?~Ɯ_E r\]][&\L$ͨ8'?31plF3@d{rX;3? j(MT u]IKXQ1턑g_swrttwcc3
-fĮ$+KG6$'Tˈ+Bkȥ y,]YV@nݳ5|u73.J6m|!GSpu%u62D$^FcWyXb+0S؜9Ƃ=Ȯ-[]$&
-A\9wm\s^8 :wg :mvRp{5Qy>~ysDy`Oac3%-*JIIuiZn#ޥ
-EǻE/SŮz n-CeKNNn=@z= ]+*{]k
-b 0 ^:ls:8,8ek3N L'xiPG<~dP$NBnVlMqjTʱ a1hm;y8#j
-pqa7t|2wXdk_M5-7&5??^GlRB8(Ov ֻ}%7{KD^Fmw3
-בp@44Bi3L"-]Ͷ
-Y3]JӚ~.tQ={[ &I:s~??wKxGiiS4fPh"?xެ)(*y{)P]q&\<
-qeؗB6m¤H[m?cgtZB:IL*>w=3u?q <q cДi-[ vÏ"G; 7N(li;CN;zO/ iɺUMuV7=g󬡂 NxλPt8CI0͢ةj߲Lu~k~n
-,6
-mXDS; (Η$USph"F$ڋqwzudeΜ;}KE'= 2N#5ɭ/[1!Mڥ(ExjXJu^Q&:u<Mnyt
-]Uk*\8#uk#p}q^jq˞՝+SEJFԖTQ4 z̷Ip.;[\)<F3珞? _19(s
-ɰ@ׇ(pYR\du5,%ֽKqI(fϘ/Iˢ
+1506 0 obj
+<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 3456 >>
+stream
+xڭX Xg˘ؙصoն*URBn@.D(wbֵxlt׵G]umw?Ϟ3ss<g{}o"F丸-̎ްY7?t\KKPnr/ q 8z9h$<4zd):8E0'š_^ p=EL2
+`1
+}{鮔]ԒuJ_#M<}ԉ yE,^F_w<wK;:G)y Z|F:3roç$ajaj_H=CD
+iRH~1; 41GEۘ~eQrQC)Q*}ݔQi=ioQ)m~(k a"N
+Kl6z.6=ڸ,~\~RS 5 M^{eթhLQۙP'u*&xG˳`
+VŬ$e.3ë먯p8
+Ty`?pFZ;||d/=yv~|orIy C?%YofJoTO<u`[1$výR(IPМ-l(c!tD4lAoW̖SɻJ&xɅ#d8}=tdpfxץorHgAK?ҥ[|;n{ {. 1ZL#<Ub Q<'Fbo/C1Y ,mW'EH\OzCּ,MYڦ@KR!w x{EB= mJVޒGJ'o/Yov$&?p#=~2<.B1"NJEz1ÇQ
+薴}Xc)=)LPщs:[^ɯөxkNG[=%@٭F%AS`vhgpԻ%;zAݙ7Rϗ%h}ȣ:?';{<JkA8ESy):qIb\D׾Db$L{W>)>nB߸ MqUNl5ǘ$EA:6ۚ>YB|)w|CB| 53|]^U菼'.S_Yhۊ e4
+(8A$g8bi{mi?;v1DaE,9`w:[2Q؋I9/ xb~Y=Cܦ!%ÊDgKyJG- ~^! ~9E4$-b
+nJR/ GCWxMzbFmZ|9QE6 Uyx% gγ뎯ϓAQ)Ծu(fO[3J;Gڅ^n3xu ?ECk+pQ_WEom\jt_hh#kylS2SU
+t?GXr K*SSZ%F@ Vw!s674'qYg% *.n=~/ְ)4<.sa!Uw\2(we}-_F\(̂+2Gnz%Z`́
endstream
endobj
-1509 0 obj
-<< /Type /FontDescriptor /FontName /ZKVPJD+LMRoman12-Regular /Flags 4 /FontBBox [ -422 -280 1394 1127 ] /Ascent 1127 /CapHeight 683 /Descent -280 /ItalicAngle 0 /StemV 91 /XHeight 431 /FontFile3 1511 0 R /CIDSet 1510 0 R >>
+1504 0 obj
+<< /Type /FontDescriptor /FontName /XXSMKT+LMRoman12-Regular /Flags 4 /FontBBox [ -422 -280 1394 1127 ] /Ascent 1127 /CapHeight 683 /Descent -280 /ItalicAngle 0 /StemV 91 /XHeight 431 /FontFile3 1506 0 R /CIDSet 1505 0 R >>
endobj
-1512 0 obj
-<< /Filter /FlateDecode /Length 511 >>
+1507 0 obj
+<< /Filter /FlateDecode /Length 501 >>
stream
-xڅj0ڋ@zF-#dRα&YC,پۯ_naЀ?hcg:sTN%`Y]I}%$zkĶԲbȢ_:At.䗋Æz\/d;:wL܄ݿdnMN)*Ă{ιbQ9lK?R(v/(֑K=-6-y锍tiFoJ* oN/d1)tҹ^L`#h7GtB$畠rR<7c)/HQP;QЛ?2N8H--,Š0 xhi)\ְ-E!hQ!%9z8W!.#cAY4 @k:pR9C6zcN:gAKI$:J0%n27Y08zXR=;sf?,;f٠B]D^Nz[{@2P
+xڅn0y
+8$BJ
++]YZ,H,BbH#%!m1619Rbc":$H擥@r5z7! gS΀y1Ncg>c9%vOpu@ ΞMW
+c6z}1WkkA)Gv-mZeE[Co[/-G
endstream
endobj
-369 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /ZKVPJD+LMRoman12-Regular /DescendantFonts [ 1513 0 R ] /ToUnicode 1512 0 R >>
+373 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /XXSMKT+LMRoman12-Regular /DescendantFonts [ 1508 0 R ] /ToUnicode 1507 0 R >>
endobj
-1513 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /ZKVPJD+LMRoman12-Regular /FontDescriptor 1509 0 R /W 1508 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1508 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /XXSMKT+LMRoman12-Regular /FontDescriptor 1504 0 R /W 1503 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1514 0 obj
+1509 0 obj
[ 28 [ 451 ] 43 [ 418 ] 50 [ 418 ] 66 [ 223 ] 75 [ 745 ] 77 [ 484 ] 96 [ 320 ] 105 [ 340 ] 116 [ 432 ] ]
endobj
-1516 0 obj
+1511 0 obj
<< /Filter /FlateDecode /Length 23 >>
stream
xc```P`Pa`hp
endstream
endobj
-1517 0 obj
+1512 0 obj
<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 1024 >>
stream
xuS}LEnY>G[tao(EQ&r irq[]zZ"[%+56m ^(H$!%1?gw1&{&Kz@DVCU弪zOHVhAʕJnfl
@@ -6986,10 +7005,10 @@ xuS}LEnY>G[tao(EQ&r irq[]zZ"[%+56m ^(
CoV< }>q%N鉴4=Z^d
endstream
endobj
-1515 0 obj
-<< /Type /FontDescriptor /FontName /YLODNZ+LMSans17-Regular /Flags 4 /FontBBox [ -395 -305 1355 1159 ] /Ascent 1159 /CapHeight 694 /Descent -305 /ItalicAngle 0 /StemV 87 /XHeight 431 /FontFile3 1517 0 R /CIDSet 1516 0 R >>
+1510 0 obj
+<< /Type /FontDescriptor /FontName /YLODNZ+LMSans17-Regular /Flags 4 /FontBBox [ -395 -305 1355 1159 ] /Ascent 1159 /CapHeight 694 /Descent -305 /ItalicAngle 0 /StemV 87 /XHeight 431 /FontFile3 1512 0 R /CIDSet 1511 0 R >>
endobj
-1518 0 obj
+1513 0 obj
<< /Filter /FlateDecode /Length 404 >>
stream
x}]K0+6s2
@@ -6997,22 +7016,22 @@ nU(MKf`MJ^ߛv8 xzޓyK<p`|Mkj`*֖(5"GW{xъp
*'Zq(K8thSL=RGđy9K-în90jmr;"aMTeNC2-m7 =
endstream
endobj
-368 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /YLODNZ+LMSans17-Regular /DescendantFonts [ 1519 0 R ] /ToUnicode 1518 0 R >>
+372 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /YLODNZ+LMSans17-Regular /DescendantFonts [ 1514 0 R ] /ToUnicode 1513 0 R >>
endobj
-1519 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /YLODNZ+LMSans17-Regular /FontDescriptor 1515 0 R /W 1514 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1514 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /YLODNZ+LMSans17-Regular /FontDescriptor 1510 0 R /W 1509 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1520 0 obj
+1515 0 obj
[ 28 [ 459 ] 35 [ 511 ] 43 [ 406 ] 50 [ 406 ] 55 [ 276 ] 59 [ 459 ] 63 [ 511 ] 66 [ 250 ] 70 [ 485 ] 72 [ 250 ] 75 [ 772 ] 77 [ 511 ] 81 [ 459 ] 84 [ 511 ] 91 [ 485 ] 96 [ 354 511 359 ] 104 [ 668 354 ] 108 [ 693 511 ] 114 [ 668 ] 126 [ 499 ] ]
endobj
-1522 0 obj
+1517 0 obj
<< /Filter /FlateDecode /Length 24 >>
stream
xc``PT!
endstream
endobj
-1523 0 obj
+1518 0 obj
<< /Subtype /CIDFontType0C /Filter /FlateDecode /Length 2974 >>
stream
xڕW TW cKCk룮mu"QD!@$@ !hA DCZPRQrd}j_֭n;=;ֶsrn;?xz"i􊈈US#"d鳂)R}s1=~~CQ4AL)_χLq_B9xy pO|; p ?"⠜1>G[3CCg.ei)9#4iq \*JJ驤(3\LFdjv6 ebHm$cklX$S,+d$UIetVbRLfg&J"&!2UdDj8S)&HR)*knH*;%XH (C#F˗E-\,zQ*WEn)dJ*U*_&";ɲDqX8S 52BDB wp$Y D$"$"`e/M'b D!mg n5jWчQM}
@@ -7026,10 +7045,10 @@ Yfi^="s[o\*+3
(<4F;qy;}L&Sl.tVX̥%fZ;g)}
endstream
endobj
-1521 0 obj
-<< /Type /FontDescriptor /FontName /JSPLLU+LMRoman17-Regular /Flags 4 /FontBBox [ -400 -286 1338 1125 ] /Ascent 1125 /CapHeight 683 /Descent -286 /ItalicAngle 0 /StemV 83 /XHeight 431 /FontFile3 1523 0 R /CIDSet 1522 0 R >>
+1516 0 obj
+<< /Type /FontDescriptor /FontName /JSPLLU+LMRoman17-Regular /Flags 4 /FontBBox [ -400 -286 1338 1125 ] /Ascent 1125 /CapHeight 683 /Descent -286 /ItalicAngle 0 /StemV 83 /XHeight 431 /FontFile3 1518 0 R /CIDSet 1517 0 R >>
endobj
-1524 0 obj
+1519 0 obj
<< /Filter /FlateDecode /Length 474 >>
stream
xڅn0y
@@ -7037,13 +7056,13 @@ xڅn0y
KEDBLQ5!B<'Φ[
endstream
endobj
-367 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /JSPLLU+LMRoman17-Regular /DescendantFonts [ 1525 0 R ] /ToUnicode 1524 0 R >>
+371 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /JSPLLU+LMRoman17-Regular /DescendantFonts [ 1520 0 R ] /ToUnicode 1519 0 R >>
endobj
-1525 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /JSPLLU+LMRoman17-Regular /FontDescriptor 1521 0 R /W 1520 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+1520 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /JSPLLU+LMRoman17-Regular /FontDescriptor 1516 0 R /W 1515 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-1527 0 obj
+1522 0 obj
<< /Length1 1484 /Length2 8131 /Length3 0 /Filter /FlateDecode /Length 9124 >>
stream
xڍTm6NHt,) ] .²tJH#]J4" HwwS9w3sM\LtZ2`Di
@@ -7085,10 +7104,10 @@ Mt%ŕTMHtwX:n҅O| ҙi,l59k#E~L.pz/'w/
*2;nYK/G-^䙗;%{F!zd[
endstream
endobj
-1526 0 obj
-<< /Type /FontDescriptor /FontName /XEMCLW+CMBX10 /Flags 4 /FontBBox [ -56 -250 1164 750 ] /Ascent 694 /CapHeight 686 /Descent -194 /ItalicAngle 0 /StemV 114 /XHeight 444 /CharSet( /a /b /c /d /one /three /two) /FontFile 1527 0 R >>
+1521 0 obj
+<< /Type /FontDescriptor /FontName /XEMCLW+CMBX10 /Flags 4 /FontBBox [ -56 -250 1164 750 ] /Ascent 694 /CapHeight 686 /Descent -194 /ItalicAngle 0 /StemV 114 /XHeight 444 /CharSet( /a /b /c /d /one /three /two) /FontFile 1522 0 R >>
endobj
-1529 0 obj
+1524 0 obj
<< /Length1 2319 /Length2 9802 /Length3 0 /Filter /FlateDecode /Length 11051 >>
stream
xڍTZ6Lt# 1t*]Jw
@@ -7140,10 +7159,10 @@ l1(fP@weKg}PYۈE[n(#3%[$Bf~΍Nd\zmM0 Y],9Ca0- ub
3H vrH
endstream
endobj
-1528 0 obj
-<< /Type /FontDescriptor /FontName /CFYTDH+CMEX10 /Flags 4 /FontBBox [ -24 -2960 1454 772 ] /Ascent 40 /CapHeight 0 /Descent -600 /ItalicAngle 0 /StemV 47 /XHeight 431 /CharSet( /arrowbt /arrowtp /arrowvertex /braceex /bracehtipdownleft /bracehtipdownright /bracehtipupleft /bracehtipupright /braceleftbigg /braceleftbt /bracelefttp /bracerightbigg /bracerightbt /bracerighttp /bracketleftBig /bracketleftbigg /bracketleftbt /bracketleftex /bracketlefttp /bracketrightBig /bracketrightbigg /bracketrightbt /bracketrightex /bracketrighttp /integraldisplay /parenleftBigg /parenleftbigg /parenleftbt /parenleftex /parenlefttp /parenrightBigg /parenrightbigg /parenrightbt /parenrightex /parenrighttp /vextendsingle) /FontFile 1529 0 R >>
+1523 0 obj
+<< /Type /FontDescriptor /FontName /CFYTDH+CMEX10 /Flags 4 /FontBBox [ -24 -2960 1454 772 ] /Ascent 40 /CapHeight 0 /Descent -600 /ItalicAngle 0 /StemV 47 /XHeight 431 /CharSet( /arrowbt /arrowtp /arrowvertex /braceex /bracehtipdownleft /bracehtipdownright /bracehtipupleft /bracehtipupright /braceleftbigg /braceleftbt /bracelefttp /bracerightbigg /bracerightbt /bracerighttp /bracketleftBig /bracketleftbigg /bracketleftbt /bracketleftex /bracketlefttp /bracketrightBig /bracketrightbigg /bracketrightbt /bracketrightex /bracketrighttp /integraldisplay /parenleftBigg /parenleftbigg /parenleftbt /parenleftex /parenlefttp /parenrightBigg /parenrightbigg /parenrightbt /parenrightex /parenrighttp /vextendsingle) /FontFile 1524 0 R >>
endobj
-1531 0 obj
+1526 0 obj
<< /Length1 1396 /Length2 5867 /Length3 0 /Filter /FlateDecode /Length 6812 >>
stream
xڍTTTk&FPAf@II)!f`:% @B$$DSCR@R@i$;9޵]֞=<]@P"T( X$ TV1
@@ -7176,10 +7195,10 @@ mNվ˘jB5̞cvqc~O\Y)O
ݟ~wb@ ݤmπnsA6&wSlYD]+"@?|9mo]fjǾ{sŸܦ}}rIRBR+譜yScC>gamʁt!eU p/k UQSb3Z Wзo.uY&h) @X`0rEC:s,17v TN
endstream
endobj
-1530 0 obj
-<< /Type /FontDescriptor /FontName /VMQSYC+CMEX7 /Flags 4 /FontBBox [ -12 -2951 1627 770 ] /Ascent 49 /CapHeight 0 /Descent -600 /ItalicAngle 0 /StemV 80 /XHeight 431 /CharSet( /radicalbig) /FontFile 1531 0 R >>
+1525 0 obj
+<< /Type /FontDescriptor /FontName /VMQSYC+CMEX7 /Flags 4 /FontBBox [ -12 -2951 1627 770 ] /Ascent 49 /CapHeight 0 /Descent -600 /ItalicAngle 0 /StemV 80 /XHeight 431 /CharSet( /radicalbig) /FontFile 1526 0 R >>
endobj
-1533 0 obj
+1528 0 obj
<< /Length1 1830 /Length2 11276 /Length3 0 /Filter /FlateDecode /Length 12424 >>
stream
xڍT[-kqS'-- @ )V-VSHhq>zsɞ׷;&9,q
@@ -7222,10 +7241,10 @@ t둭Jc_WP5jbep/wUd22>3}֟Bn9MmGvX-i1@?BDVlt[~_
|UƶO3n0&hWA:fBh;2bVF:u(o7Ȕ?xs4ŹNgX%%F}J34G_1˵-{
endstream
endobj
-1532 0 obj
-<< /Type /FontDescriptor /FontName /CEORQM+CMMI10 /Flags 4 /FontBBox [ -32 -250 1048 750 ] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 72 /XHeight 431 /CharSet( /A /B /C /D /I /L /a /b /c /comma /d /e /f /h /i /j /k /l /m /n /p /period /r /triangleright /u /x /y /z) /FontFile 1533 0 R >>
+1527 0 obj
+<< /Type /FontDescriptor /FontName /CEORQM+CMMI10 /Flags 4 /FontBBox [ -32 -250 1048 750 ] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 72 /XHeight 431 /CharSet( /A /B /C /D /I /L /a /b /c /comma /d /e /f /h /i /j /k /l /m /n /p /period /r /triangleright /u /x /y /z) /FontFile 1528 0 R >>
endobj
-1535 0 obj
+1530 0 obj
<< /Length1 1415 /Length2 6063 /Length3 0 /Filter /FlateDecode /Length 7021 >>
stream
xڍuTk-Xh
@@ -7255,10 +7274,10 @@ OB+F|72{ .2xcZrL_7-_5Km-܁CEMXo]Y1nfɫt/
bUyLq@jƚm#<՗aVY G<^P4~0-)gV2+ \]"X,p aqה-TW'qY'D#_Ē_w"9FuKK
endstream
endobj
-1534 0 obj
-<< /Type /FontDescriptor /FontName /JZMBET+CMMI12 /Flags 4 /FontBBox [ -31 -250 1026 750 ] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 65 /XHeight 431 /CharSet( /A) /FontFile 1535 0 R >>
+1529 0 obj
+<< /Type /FontDescriptor /FontName /JZMBET+CMMI12 /Flags 4 /FontBBox [ -31 -250 1026 750 ] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 65 /XHeight 431 /CharSet( /A) /FontFile 1530 0 R >>
endobj
-1537 0 obj
+1532 0 obj
<< /Length1 1451 /Length2 6812 /Length3 0 /Filter /FlateDecode /Length 7785 >>
stream
xڍtTk.)]D`A!ASIiICFwZY羞^Fzm=N[5XspEr*
@@ -7292,10 +7311,10 @@ y[f!i;7W%mIJ ﭓ71v(oT(}6u4/^%O8Ϩu(6g
a e|L1iR]ez[
endstream
endobj
-1536 0 obj
-<< /Type /FontDescriptor /FontName /IUHNPC+CMMI5 /Flags 4 /FontBBox [ 37 -250 1349 750 ] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 90 /XHeight 431 /CharSet( /L /i /j /n) /FontFile 1537 0 R >>
+1531 0 obj
+<< /Type /FontDescriptor /FontName /IUHNPC+CMMI5 /Flags 4 /FontBBox [ 37 -250 1349 750 ] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 90 /XHeight 431 /CharSet( /L /i /j /n) /FontFile 1532 0 R >>
endobj
-1539 0 obj
+1534 0 obj
<< /Length1 1589 /Length2 8523 /Length3 0 /Filter /FlateDecode /Length 9572 >>
stream
xڍTT.LCH "! 0PC!%)-!!%%ֺwZgγ}}jb&6FiPPx`c`accGաp+ȟft&jW= Iq
@@ -7339,10 +7358,10 @@ Sziq`Rky5zX-
_G)JxУ<g|eBy"7t*<
endstream
endobj
-1538 0 obj
-<< /Type /FontDescriptor /FontName /WUDPRN+CMMI7 /Flags 4 /FontBBox [ -1 -250 1171 750 ] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 81 /XHeight 431 /CharSet( /C /L /T /comma /e /i /j /k /n /p /q /star /x) /FontFile 1539 0 R >>
+1533 0 obj
+<< /Type /FontDescriptor /FontName /WUDPRN+CMMI7 /Flags 4 /FontBBox [ -1 -250 1171 750 ] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 81 /XHeight 431 /CharSet( /C /L /T /comma /e /i /j /k /n /p /q /star /x) /FontFile 1534 0 R >>
endobj
-1541 0 obj
+1536 0 obj
<< /Length1 1438 /Length2 6548 /Length3 0 /Filter /FlateDecode /Length 7523 >>
stream
xڍt4kׯ"ZD0zF5`0!z[H$DDoD#Ir{޻ֽkϳ=6f]>y{-LA
@@ -7379,10 +7398,10 @@ wt/ְj@884}?em\9P?{6jx)*NaqIuoŀ31&
*INS+$3z t$x g6./)~s_2oϒlAS"F!XzP%i3UsLWsOLۈklm܏f(]zj Y2
endstream
endobj
-1540 0 obj
-<< /Type /FontDescriptor /FontName /TEYYDJ+CMMI8 /Flags 4 /FontBBox [ -24 -250 1110 750 ] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 78 /XHeight 431 /CharSet( /i /j /n) /FontFile 1541 0 R >>
+1535 0 obj
+<< /Type /FontDescriptor /FontName /TEYYDJ+CMMI8 /Flags 4 /FontBBox [ -24 -250 1110 750 ] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 78 /XHeight 431 /CharSet( /i /j /n) /FontFile 1536 0 R >>
endobj
-1543 0 obj
+1538 0 obj
<< /Length1 1744 /Length2 11235 /Length3 0 /Filter /FlateDecode /Length 12356 >>
stream
xڍP.k;wwwwwg!0 w@pBpw
@@ -7429,42 +7448,10 @@ ttoΎфtč!e웩I]8NG'
o獧{{m1` 8>`9X;;FVqvt$3CY(n3@}"ZWkgcQ͞*EkFY<lc ?v0.+Q2SbMXw`Pi.zN o| Ի)n9`VOi{40ơ
endstream
endobj
-1542 0 obj
-<< /Type /FontDescriptor /FontName /IHIWXH+CMR10 /Flags 4 /FontBBox [ -40 -250 1009 750 ] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle 0 /StemV 69 /XHeight 431 /CharSet( /bracketleft /bracketright /c /eight /equal /five /four /i /n /nine /o /one /parenleft /parenright /plus /s /seven /six /three /two /zero) /FontFile 1543 0 R >>
-endobj
-1545 0 obj
-<< /Length1 1387 /Length2 5977 /Length3 0 /Filter /FlateDecode /Length 6920 >>
-stream
-xڍtTk- =;J.
-
-?#wc䕔
-W0 J
-F-)n:­,amragھ/+K˴oX$>IYӬ U,5qQĽcg{ujV9SLة\W0
-x&yo6vܛjsmg3<fuO :o GTÛi,m98ykA?E6ۼ~~(H1GFl.ܐ[C[fbNه Wۘm9W4Z훚i@ICnur[nb@ɱj߻5ÂBYwI:[|'I`9b@=m5+<iݧv%g>K\j`JyV8s3뇘\T2bY 8h٤3֒}E\yDZZ~ֵ +Gz9nO )H{
-P,$]yhe! 7u#%xzdr>&;#KxDraUa2튷a{xi
-_'3C>Ϭcل fa% Ir'ġL!Y@Ox//q>J ^S
-t(rG=ZƦ{Fի=ћfW oNj*.LkCͣc.VeEI.Tn{78Dc͢
-w$u?š
-˦ n5JrCi-ҙf2ϫCf7,Dt {@R2WEH|}c'8;/Eׄ[mWdu#D\Kk^5V>zR!?: eDoHq6iG^=ﳴfܱ87;bu)DJU oHMS4$>pap:qaD5Ґ2B0OZ}`g ,2y(%[XW$xDū$ xk8lG7%p57Cp9ehedإR 眯S2g|z%MȂY]Aټ^\RP!oJ mT x6Oƻ7_U쉉-GSƖ14Ȣ쎉r*u]H.$B ;m.jRe_>6l.c/bFӔOWr4sj5~;/ 3jdx>~KV&ȍ:G֊YE3oUDo !czfn3UQ?FrP=9M}i_%HK;V_~g>ƿBjfo.ePc(;S wt1;uZb̽V4& [y2#}$WDڽYd^= scMu=dH@SǠ DLZeWXV'h% QQ& QkV-\M-}mIʹjިω5<=c 3!}Q>zAc9I8Ó0-S޴X3lьw𧁬⒋;BCLIѹcD|(QJv Վ,v72 -ϬpM
-$SYZ{w+t=aAi ~bh5J$yݹhA xtrh]_R-/쎆
-U7j^TjxZULS>#R} @t?]_v!O]IR߷oNZk;Bl>[Vw܋.:tq`UW%4k+'h qv{~
-NĄp wBayTy-qp[ e2GߌE{[o`=:(l{bq䛡Gt|ȶuzrse]N)$q8Ywr \$t_)%&#B\Os5<Y2Sպ޾ldxn*5<xg(D3<@DvCng:q_{. ,Xn0z 6nr\LZDEȸVѕ탺QWAp^E^:)Zu)ntA)'
-O"6}/HWsaKUdǛd NjXc;uj/U-\m lV?RvIC !˹ڜoL<#ɒO5 vimفBB'# GϚ7؀mQ'sƇ!9ۭHY< *]E/T.oyTpՓ4ͪu$j캥?h|sdf,0>c(`2 ",~RjgAyC<J S%M>;
-ANafK6X6L9m=3b"LU/\'.,$wLӞk,'~+FqTjloYçrr'\$l%>(͟wkwwUmds 6;ڃ|\N=3J\Ts"S
-A OMk\yMZGTHB'כvMyušC0{
-Xp;\8ܘ Ijn]b7D!x6i
-QY+J+~>OfȕR'\]'n^7OhL!І깆q8Ӎ8$:GwwĨ_Ni_I{1 ӪQ'|·G$E.hc썧p= xzdfe%и&TTCY ۫9S`zHc
-.
- k?Eʔ+dۏc|uel !+!^`+:8_@ $ʹkb*ӄ{srݟ̤4LE㢨9yP҉gSP&r@{%)}/gG=>ωwNc{M{.$IJ'g\A$9cbk&Tz+07)K= Å`2Mf<O
-('p_x>s̿Lfs~C7_ ,5N暊=X-|TCSu<WBAͮVٍ5UN
-gwlk{r"_uTC
-3|—Dnf!\Tc jYa_?*s
-endstream
-endobj
-1544 0 obj
-<< /Type /FontDescriptor /FontName /YFCZGG+CMR12 /Flags 4 /FontBBox [ -34 -251 988 750 ] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle 0 /StemV 65 /XHeight 431 /CharSet( /zero) /FontFile 1545 0 R >>
+1537 0 obj
+<< /Type /FontDescriptor /FontName /IHIWXH+CMR10 /Flags 4 /FontBBox [ -40 -250 1009 750 ] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle 0 /StemV 69 /XHeight 431 /CharSet( /bracketleft /bracketright /c /eight /equal /five /four /i /n /nine /o /one /parenleft /parenright /plus /s /seven /six /three /two /zero) /FontFile 1538 0 R >>
endobj
-1547 0 obj
+1540 0 obj
<< /Length1 1447 /Length2 6556 /Length3 0 /Filter /FlateDecode /Length 7538 >>
stream
xڍVT\%Kph%CbfI%iP@@$nQJ.7zoZ3{kؙu a '<
@@ -7499,10 +7486,10 @@ eO:[1bo_9ͣh[puK}ks 7\GU0Ǟ6Г?ﱿWy$4kw}zK
2h&ji/,
endstream
endobj
-1546 0 obj
-<< /Type /FontDescriptor /FontName /CPMJUS+CMR5 /Flags 4 /FontBBox [ -10 -250 1304 750 ] /Ascent 694 /CapHeight 680 /Descent -194 /ItalicAngle 0 /StemV 89 /XHeight 431 /CharSet( /four /one /plus /three /two) /FontFile 1547 0 R >>
+1539 0 obj
+<< /Type /FontDescriptor /FontName /CPMJUS+CMR5 /Flags 4 /FontBBox [ -10 -250 1304 750 ] /Ascent 694 /CapHeight 680 /Descent -194 /ItalicAngle 0 /StemV 89 /XHeight 431 /CharSet( /four /one /plus /three /two) /FontFile 1540 0 R >>
endobj
-1549 0 obj
+1542 0 obj
<< /Length1 1595 /Length2 7817 /Length3 0 /Filter /FlateDecode /Length 8871 >>
stream
xڍT6t
@@ -7540,10 +7527,10 @@ Y<Qj8e^z 7r-\
.+g!~ŜI #PAiМ'WXϟf'_}xbK$yv[IoRʢTYiGU$ݡsZ,U+hQ
endstream
endobj
-1548 0 obj
-<< /Type /FontDescriptor /FontName /IZMGNT+CMR7 /Flags 4 /FontBBox [ -27 -250 1122 750 ] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle 0 /StemV 79 /XHeight 431 /CharSet( /eight /five /four /nine /one /parenleft /parenright /plus /seven /six /three /two /zero) /FontFile 1549 0 R >>
+1541 0 obj
+<< /Type /FontDescriptor /FontName /IZMGNT+CMR7 /Flags 4 /FontBBox [ -27 -250 1122 750 ] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle 0 /StemV 79 /XHeight 431 /CharSet( /eight /five /four /nine /one /parenleft /parenright /plus /seven /six /three /two /zero) /FontFile 1542 0 R >>
endobj
-1551 0 obj
+1544 0 obj
<< /Length1 1500 /Length2 6516 /Length3 0 /Filter /FlateDecode /Length 7522 >>
stream
xڍxTڲ6"J5 &*IMj $ґ ޕ*IU@tAs=zoe${f+@PU$
@@ -7586,10 +7573,10 @@ BH'渆m|{m/{.xoH2nE -.w}y'*7.^WeNߚFsU%ϏS
;J!ujE%msCzzFeq0x~ǠAJ/]j z8{FqKeI*1HoA(N{&dY __޴T'EQz
endstream
endobj
-1550 0 obj
-<< /Type /FontDescriptor /FontName /VGMPAA+CMSY10 /Flags 4 /FontBBox [ -29 -960 1116 775 ] /Ascent 750 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 40 /XHeight 431 /CharSet( /angbracketleft /angbracketright /arrowleft /minus /multiply) /FontFile 1551 0 R >>
+1543 0 obj
+<< /Type /FontDescriptor /FontName /VGMPAA+CMSY10 /Flags 4 /FontBBox [ -29 -960 1116 775 ] /Ascent 750 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 40 /XHeight 431 /CharSet( /angbracketleft /angbracketright /arrowleft /minus /multiply) /FontFile 1544 0 R >>
endobj
-1553 0 obj
+1546 0 obj
<< /Length1 1414 /Length2 6167 /Length3 0 /Filter /FlateDecode /Length 7134 >>
stream
xڍvTTk6(HK7FBADjc`bP:A@:SBRZ@:T@ios5kus=uy8!Jp-BeCS
@@ -7620,10 +7607,10 @@ n<Ȧ
.7z ^XEi[S<p15*;Aջ<d*+w]`ӷ3I4e:dz펢4)AwTiw||/KKj-Tf bS(Tq#z%I`uk9K^e[ZwʣzI|U|˄&eVJ6Sgߪa^4ǵ+ wN\EVةzew`wؓ/:71ἠP@᣸Ft7^HXfM[vU:x'?ibi ZM}&Od@9fcHMFKlpUe]:AE)(xȘkmD@~ F0ANǞEiXQRm9l%i;mFo1j 1^{WG 7HO ]ȉ")UjzlL?o
endstream
endobj
-1552 0 obj
-<< /Type /FontDescriptor /FontName /UZBPXA+CMSY5 /Flags 4 /FontBBox [ 21 -944 1448 791 ] /Ascent 750 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 56 /XHeight 431 /CharSet( /arrowleft /minus) /FontFile 1553 0 R >>
+1545 0 obj
+<< /Type /FontDescriptor /FontName /UZBPXA+CMSY5 /Flags 4 /FontBBox [ 21 -944 1448 791 ] /Ascent 750 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 56 /XHeight 431 /CharSet( /arrowleft /minus) /FontFile 1546 0 R >>
endobj
-1555 0 obj
+1548 0 obj
<< /Length1 1435 /Length2 6179 /Length3 0 /Filter /FlateDecode /Length 7153 >>
stream
xڍtT[.(0 ! ҂030 ݍ%* R-Hw7"|ugYxeP%
@@ -7652,326 +7639,326 @@ d"`tUe>!%_lkhCgKOnW~yң@᪘+>1#1VGp.ArrfSb
;jjIZxٱ1INzfݪy1M3"}~]\耆n>s5RQܶ nzp~Fqkqܲ='8~*}
endstream
endobj
-1554 0 obj
-<< /Type /FontDescriptor /FontName /QYJPQA+CMSY7 /Flags 4 /FontBBox [ -15 -951 1251 782 ] /Ascent 750 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 49 /XHeight 431 /CharSet( /arrowleft /arrowup /minus) /FontFile 1555 0 R >>
-endobj
-754 0 obj
-<< /Type /Font /Subtype /Type1 /BaseFont /XEMCLW+CMBX10 /FontDescriptor 1526 0 R /FirstChar 49 /LastChar 100 /Widths 1350 0 R >>
-endobj
-375 0 obj
-<< /Type /Font /Subtype /Type1 /BaseFont /CFYTDH+CMEX10 /FontDescriptor 1528 0 R /FirstChar 12 /LastChar 125 /Widths 1477 0 R >>
+1547 0 obj
+<< /Type /FontDescriptor /FontName /QYJPQA+CMSY7 /Flags 4 /FontBBox [ -15 -951 1251 782 ] /Ascent 750 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 49 /XHeight 431 /CharSet( /arrowleft /arrowup /minus) /FontFile 1548 0 R >>
endobj
-410 0 obj
-<< /Type /Font /Subtype /Type1 /BaseFont /VMQSYC+CMEX7 /FontDescriptor 1530 0 R /FirstChar 112 /LastChar 112 /Widths 1385 0 R >>
+762 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /XEMCLW+CMBX10 /FontDescriptor 1521 0 R /FirstChar 49 /LastChar 100 /Widths 1345 0 R >>
endobj
379 0 obj
-<< /Type /Font /Subtype /Type1 /BaseFont /CEORQM+CMMI10 /FontDescriptor 1532 0 R /FirstChar 46 /LastChar 122 /Widths 1473 0 R >>
-endobj
-423 0 obj
-<< /Type /Font /Subtype /Type1 /BaseFont /JZMBET+CMMI12 /FontDescriptor 1534 0 R /FirstChar 65 /LastChar 65 /Widths 1378 0 R >>
+<< /Type /Font /Subtype /Type1 /BaseFont /CFYTDH+CMEX10 /FontDescriptor 1523 0 R /FirstChar 12 /LastChar 125 /Widths 1472 0 R >>
endobj
-378 0 obj
-<< /Type /Font /Subtype /Type1 /BaseFont /IUHNPC+CMMI5 /FontDescriptor 1536 0 R /FirstChar 76 /LastChar 110 /Widths 1474 0 R >>
+414 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /VMQSYC+CMEX7 /FontDescriptor 1525 0 R /FirstChar 112 /LastChar 112 /Widths 1380 0 R >>
endobj
-376 0 obj
-<< /Type /Font /Subtype /Type1 /BaseFont /WUDPRN+CMMI7 /FontDescriptor 1538 0 R /FirstChar 59 /LastChar 120 /Widths 1476 0 R >>
+383 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /CEORQM+CMMI10 /FontDescriptor 1527 0 R /FirstChar 46 /LastChar 122 /Widths 1468 0 R >>
endobj
-490 0 obj
-<< /Type /Font /Subtype /Type1 /BaseFont /TEYYDJ+CMMI8 /FontDescriptor 1540 0 R /FirstChar 105 /LastChar 110 /Widths 1371 0 R >>
+427 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /JZMBET+CMMI12 /FontDescriptor 1529 0 R /FirstChar 65 /LastChar 65 /Widths 1373 0 R >>
endobj
382 0 obj
-<< /Type /Font /Subtype /Type1 /BaseFont /IHIWXH+CMR10 /FontDescriptor 1542 0 R /FirstChar 40 /LastChar 115 /Widths 1465 0 R >>
+<< /Type /Font /Subtype /Type1 /BaseFont /IUHNPC+CMMI5 /FontDescriptor 1531 0 R /FirstChar 76 /LastChar 110 /Widths 1469 0 R >>
endobj
-932 0 obj
-<< /Type /Font /Subtype /Type1 /BaseFont /YFCZGG+CMR12 /FontDescriptor 1544 0 R /FirstChar 48 /LastChar 48 /Widths 1337 0 R >>
+380 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /WUDPRN+CMMI7 /FontDescriptor 1533 0 R /FirstChar 59 /LastChar 120 /Widths 1471 0 R >>
endobj
-377 0 obj
-<< /Type /Font /Subtype /Type1 /BaseFont /CPMJUS+CMR5 /FontDescriptor 1546 0 R /FirstChar 43 /LastChar 52 /Widths 1475 0 R >>
+489 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /TEYYDJ+CMMI8 /FontDescriptor 1535 0 R /FirstChar 105 /LastChar 110 /Widths 1366 0 R >>
endobj
-380 0 obj
-<< /Type /Font /Subtype /Type1 /BaseFont /IZMGNT+CMR7 /FontDescriptor 1548 0 R /FirstChar 40 /LastChar 57 /Widths 1472 0 R >>
+386 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /IHIWXH+CMR10 /FontDescriptor 1537 0 R /FirstChar 40 /LastChar 115 /Widths 1460 0 R >>
endobj
-404 0 obj
-<< /Type /Font /Subtype /Type1 /BaseFont /VGMPAA+CMSY10 /FontDescriptor 1550 0 R /FirstChar 0 /LastChar 105 /Widths 1386 0 R >>
+381 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /CPMJUS+CMR5 /FontDescriptor 1539 0 R /FirstChar 43 /LastChar 52 /Widths 1470 0 R >>
endobj
-743 0 obj
-<< /Type /Font /Subtype /Type1 /BaseFont /UZBPXA+CMSY5 /FontDescriptor 1552 0 R /FirstChar 0 /LastChar 32 /Widths 1351 0 R >>
+384 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /IZMGNT+CMR7 /FontDescriptor 1541 0 R /FirstChar 40 /LastChar 57 /Widths 1467 0 R >>
endobj
-645 0 obj
-<< /Type /Font /Subtype /Type1 /BaseFont /QYJPQA+CMSY7 /FontDescriptor 1554 0 R /FirstChar 0 /LastChar 34 /Widths 1358 0 R >>
+408 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /VGMPAA+CMSY10 /FontDescriptor 1543 0 R /FirstChar 0 /LastChar 105 /Widths 1381 0 R >>
endobj
-394 0 obj
-<< /Type /Pages /Parent 1556 0 R /Count 10 /Kids [ 361 0 R 399 0 R 407 0 R 420 0 R 437 0 R 446 0 R 451 0 R 455 0 R 459 0 R 466 0 R ] >>
+761 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /UZBPXA+CMSY5 /FontDescriptor 1545 0 R /FirstChar 0 /LastChar 32 /Widths 1346 0 R >>
endobj
-480 0 obj
-<< /Type /Pages /Parent 1556 0 R /Count 10 /Kids [ 477 0 R 487 0 R 497 0 R 502 0 R 507 0 R 512 0 R 520 0 R 527 0 R 533 0 R 540 0 R ] >>
+652 0 obj
+<< /Type /Font /Subtype /Type1 /BaseFont /QYJPQA+CMSY7 /FontDescriptor 1547 0 R /FirstChar 0 /LastChar 34 /Widths 1353 0 R >>
endobj
-548 0 obj
-<< /Type /Pages /Parent 1556 0 R /Count 10 /Kids [ 545 0 R 552 0 R 560 0 R 566 0 R 571 0 R 580 0 R 589 0 R 596 0 R 603 0 R 608 0 R ] >>
+398 0 obj
+<< /Type /Pages /Parent 1549 0 R /Count 10 /Kids [ 365 0 R 403 0 R 411 0 R 424 0 R 441 0 R 450 0 R 455 0 R 459 0 R 463 0 R 470 0 R ] >>
+endobj
+479 0 obj
+<< /Type /Pages /Parent 1549 0 R /Count 10 /Kids [ 475 0 R 486 0 R 498 0 R 505 0 R 510 0 R 515 0 R 520 0 R 528 0 R 535 0 R 541 0 R ] >>
+endobj
+551 0 obj
+<< /Type /Pages /Parent 1549 0 R /Count 10 /Kids [ 548 0 R 555 0 R 559 0 R 567 0 R 573 0 R 578 0 R 587 0 R 596 0 R 603 0 R 610 0 R ] >>
endobj
618 0 obj
-<< /Type /Pages /Parent 1556 0 R /Count 10 /Kids [ 615 0 R 623 0 R 630 0 R 642 0 R 650 0 R 657 0 R 665 0 R 671 0 R 682 0 R 689 0 R ] >>
+<< /Type /Pages /Parent 1549 0 R /Count 10 /Kids [ 615 0 R 623 0 R 630 0 R 637 0 R 649 0 R 657 0 R 664 0 R 672 0 R 678 0 R 685 0 R ] >>
endobj
-705 0 obj
-<< /Type /Pages /Parent 1556 0 R /Count 10 /Kids [ 702 0 R 708 0 R 720 0 R 730 0 R 735 0 R 740 0 R 751 0 R 760 0 R 769 0 R 777 0 R ] >>
+699 0 obj
+<< /Type /Pages /Parent 1549 0 R /Count 10 /Kids [ 696 0 R 705 0 R 715 0 R 729 0 R 738 0 R 743 0 R 748 0 R 758 0 R 767 0 R 775 0 R ] >>
endobj
-786 0 obj
-<< /Type /Pages /Parent 1556 0 R /Count 10 /Kids [ 783 0 R 790 0 R 797 0 R 803 0 R 811 0 R 820 0 R 835 0 R 842 0 R 847 0 R 853 0 R ] >>
+787 0 obj
+<< /Type /Pages /Parent 1549 0 R /Count 10 /Kids [ 784 0 R 792 0 R 798 0 R 804 0 R 811 0 R 817 0 R 825 0 R 843 0 R 850 0 R 854 0 R ] >>
endobj
-860 0 obj
-<< /Type /Pages /Parent 1556 0 R /Count 10 /Kids [ 857 0 R 862 0 R 866 0 R 870 0 R 874 0 R 879 0 R 884 0 R 888 0 R 892 0 R 896 0 R ] >>
+866 0 obj
+<< /Type /Pages /Parent 1549 0 R /Count 10 /Kids [ 863 0 R 868 0 R 872 0 R 876 0 R 880 0 R 884 0 R 889 0 R 894 0 R 898 0 R 902 0 R ] >>
endobj
-903 0 obj
-<< /Type /Pages /Parent 1556 0 R /Count 10 /Kids [ 900 0 R 905 0 R 909 0 R 913 0 R 917 0 R 921 0 R 925 0 R 929 0 R 934 0 R 1059 0 R ] >>
+909 0 obj
+<< /Type /Pages /Parent 1549 0 R /Count 10 /Kids [ 906 0 R 911 0 R 915 0 R 919 0 R 923 0 R 927 0 R 1046 0 R 1150 0 R 1228 0 R 1280 0 R ] >>
endobj
-1180 0 obj
-<< /Type /Pages /Parent 1556 0 R /Count 4 /Kids [ 1177 0 R 1234 0 R 1286 0 R 1333 0 R ] >>
+1331 0 obj
+<< /Type /Pages /Parent 1549 0 R /Count 1 /Kids [ 1328 0 R ] >>
endobj
-1556 0 obj
-<< /Type /Pages /Count 84 /Kids [ 394 0 R 480 0 R 548 0 R 618 0 R 705 0 R 786 0 R 860 0 R 903 0 R 1180 0 R ] >>
+1549 0 obj
+<< /Type /Pages /Count 81 /Kids [ 398 0 R 479 0 R 551 0 R 618 0 R 699 0 R 787 0 R 866 0 R 909 0 R 1331 0 R ] >>
endobj
-1557 0 obj
-<< /Type /Outlines /First 6 0 R /Last 358 0 R /Count 20 >>
+1550 0 obj
+<< /Type /Outlines /First 6 0 R /Last 362 0 R /Count 20 >>
+endobj
+362 0 obj
+<< /Title 363 0 R /A 360 0 R /Parent 1550 0 R /Prev 358 0 R >>
endobj
358 0 obj
-<< /Title 359 0 R /A 356 0 R /Parent 1557 0 R /Prev 354 0 R >>
+<< /Title 359 0 R /A 356 0 R /Parent 1550 0 R /Prev 314 0 R /Next 362 0 R >>
endobj
354 0 obj
-<< /Title 355 0 R /A 352 0 R /Parent 1557 0 R /Prev 310 0 R /Next 358 0 R >>
+<< /Title 355 0 R /A 352 0 R /Parent 314 0 R /Prev 350 0 R >>
endobj
350 0 obj
-<< /Title 351 0 R /A 348 0 R /Parent 310 0 R /Prev 346 0 R >>
+<< /Title 351 0 R /A 348 0 R /Parent 314 0 R /Prev 346 0 R /Next 354 0 R >>
endobj
346 0 obj
-<< /Title 347 0 R /A 344 0 R /Parent 310 0 R /Prev 342 0 R /Next 350 0 R >>
+<< /Title 347 0 R /A 344 0 R /Parent 314 0 R /Prev 342 0 R /Next 350 0 R >>
endobj
342 0 obj
-<< /Title 343 0 R /A 340 0 R /Parent 310 0 R /Prev 338 0 R /Next 346 0 R >>
+<< /Title 343 0 R /A 340 0 R /Parent 314 0 R /Prev 338 0 R /Next 346 0 R >>
endobj
338 0 obj
-<< /Title 339 0 R /A 336 0 R /Parent 310 0 R /Prev 334 0 R /Next 342 0 R >>
+<< /Title 339 0 R /A 336 0 R /Parent 314 0 R /Prev 334 0 R /Next 342 0 R >>
endobj
334 0 obj
-<< /Title 335 0 R /A 332 0 R /Parent 310 0 R /Prev 330 0 R /Next 338 0 R >>
+<< /Title 335 0 R /A 332 0 R /Parent 314 0 R /Prev 330 0 R /Next 338 0 R >>
endobj
330 0 obj
-<< /Title 331 0 R /A 328 0 R /Parent 310 0 R /Prev 326 0 R /Next 334 0 R >>
+<< /Title 331 0 R /A 328 0 R /Parent 314 0 R /Prev 326 0 R /Next 334 0 R >>
endobj
326 0 obj
-<< /Title 327 0 R /A 324 0 R /Parent 310 0 R /Prev 322 0 R /Next 330 0 R >>
+<< /Title 327 0 R /A 324 0 R /Parent 314 0 R /Prev 322 0 R /Next 330 0 R >>
endobj
322 0 obj
-<< /Title 323 0 R /A 320 0 R /Parent 310 0 R /Prev 318 0 R /Next 326 0 R >>
+<< /Title 323 0 R /A 320 0 R /Parent 314 0 R /Prev 318 0 R /Next 326 0 R >>
endobj
318 0 obj
-<< /Title 319 0 R /A 316 0 R /Parent 310 0 R /Prev 314 0 R /Next 322 0 R >>
+<< /Title 319 0 R /A 316 0 R /Parent 314 0 R /Next 322 0 R >>
endobj
314 0 obj
-<< /Title 315 0 R /A 312 0 R /Parent 310 0 R /Next 318 0 R >>
+<< /Title 315 0 R /A 312 0 R /Parent 1550 0 R /Prev 294 0 R /Next 358 0 R /First 318 0 R /Last 354 0 R /Count -10 >>
endobj
310 0 obj
-<< /Title 311 0 R /A 308 0 R /Parent 1557 0 R /Prev 290 0 R /Next 354 0 R /First 314 0 R /Last 350 0 R /Count -10 >>
+<< /Title 311 0 R /A 308 0 R /Parent 294 0 R /Prev 306 0 R >>
endobj
306 0 obj
-<< /Title 307 0 R /A 304 0 R /Parent 290 0 R /Prev 302 0 R >>
+<< /Title 307 0 R /A 304 0 R /Parent 294 0 R /Prev 302 0 R /Next 310 0 R >>
endobj
302 0 obj
-<< /Title 303 0 R /A 300 0 R /Parent 290 0 R /Prev 298 0 R /Next 306 0 R >>
+<< /Title 303 0 R /A 300 0 R /Parent 294 0 R /Prev 298 0 R /Next 306 0 R >>
endobj
298 0 obj
-<< /Title 299 0 R /A 296 0 R /Parent 290 0 R /Prev 294 0 R /Next 302 0 R >>
+<< /Title 299 0 R /A 296 0 R /Parent 294 0 R /Next 302 0 R >>
endobj
294 0 obj
-<< /Title 295 0 R /A 292 0 R /Parent 290 0 R /Next 298 0 R >>
+<< /Title 295 0 R /A 292 0 R /Parent 1550 0 R /Prev 290 0 R /Next 314 0 R /First 298 0 R /Last 310 0 R /Count -4 >>
endobj
290 0 obj
-<< /Title 291 0 R /A 288 0 R /Parent 1557 0 R /Prev 286 0 R /Next 310 0 R /First 294 0 R /Last 306 0 R /Count -4 >>
+<< /Title 291 0 R /A 288 0 R /Parent 1550 0 R /Prev 262 0 R /Next 294 0 R >>
endobj
286 0 obj
-<< /Title 287 0 R /A 284 0 R /Parent 1557 0 R /Prev 258 0 R /Next 290 0 R >>
+<< /Title 287 0 R /A 284 0 R /Parent 262 0 R /Prev 282 0 R >>
endobj
282 0 obj
-<< /Title 283 0 R /A 280 0 R /Parent 258 0 R /Prev 278 0 R >>
+<< /Title 283 0 R /A 280 0 R /Parent 262 0 R /Prev 278 0 R /Next 286 0 R >>
endobj
278 0 obj
-<< /Title 279 0 R /A 276 0 R /Parent 258 0 R /Prev 274 0 R /Next 282 0 R >>
+<< /Title 279 0 R /A 276 0 R /Parent 262 0 R /Prev 266 0 R /Next 282 0 R >>
endobj
274 0 obj
-<< /Title 275 0 R /A 272 0 R /Parent 258 0 R /Prev 262 0 R /Next 278 0 R >>
+<< /Title 275 0 R /A 272 0 R /Parent 266 0 R /Prev 270 0 R >>
endobj
270 0 obj
-<< /Title 271 0 R /A 268 0 R /Parent 262 0 R /Prev 266 0 R >>
+<< /Title 271 0 R /A 268 0 R /Parent 266 0 R /Next 274 0 R >>
endobj
266 0 obj
-<< /Title 267 0 R /A 264 0 R /Parent 262 0 R /Next 270 0 R >>
+<< /Title 267 0 R /A 264 0 R /Parent 262 0 R /Next 278 0 R /First 270 0 R /Last 274 0 R /Count -2 >>
endobj
262 0 obj
-<< /Title 263 0 R /A 260 0 R /Parent 258 0 R /Next 274 0 R /First 266 0 R /Last 270 0 R /Count -2 >>
+<< /Title 263 0 R /A 260 0 R /Parent 1550 0 R /Prev 214 0 R /Next 290 0 R /First 266 0 R /Last 286 0 R /Count -4 >>
endobj
258 0 obj
-<< /Title 259 0 R /A 256 0 R /Parent 1557 0 R /Prev 210 0 R /Next 286 0 R /First 262 0 R /Last 282 0 R /Count -4 >>
+<< /Title 259 0 R /A 256 0 R /Parent 214 0 R /Prev 254 0 R >>
endobj
254 0 obj
-<< /Title 255 0 R /A 252 0 R /Parent 210 0 R /Prev 250 0 R >>
+<< /Title 255 0 R /A 252 0 R /Parent 214 0 R /Prev 250 0 R /Next 258 0 R >>
endobj
250 0 obj
-<< /Title 251 0 R /A 248 0 R /Parent 210 0 R /Prev 246 0 R /Next 254 0 R >>
+<< /Title 251 0 R /A 248 0 R /Parent 214 0 R /Prev 246 0 R /Next 254 0 R >>
endobj
246 0 obj
-<< /Title 247 0 R /A 244 0 R /Parent 210 0 R /Prev 242 0 R /Next 250 0 R >>
+<< /Title 247 0 R /A 244 0 R /Parent 214 0 R /Prev 242 0 R /Next 250 0 R >>
endobj
242 0 obj
-<< /Title 243 0 R /A 240 0 R /Parent 210 0 R /Prev 238 0 R /Next 246 0 R >>
+<< /Title 243 0 R /A 240 0 R /Parent 214 0 R /Prev 238 0 R /Next 246 0 R >>
endobj
238 0 obj
-<< /Title 239 0 R /A 236 0 R /Parent 210 0 R /Prev 234 0 R /Next 242 0 R >>
+<< /Title 239 0 R /A 236 0 R /Parent 214 0 R /Prev 234 0 R /Next 242 0 R >>
endobj
234 0 obj
-<< /Title 235 0 R /A 232 0 R /Parent 210 0 R /Prev 230 0 R /Next 238 0 R >>
+<< /Title 235 0 R /A 232 0 R /Parent 214 0 R /Prev 230 0 R /Next 238 0 R >>
endobj
230 0 obj
-<< /Title 231 0 R /A 228 0 R /Parent 210 0 R /Prev 226 0 R /Next 234 0 R >>
+<< /Title 231 0 R /A 228 0 R /Parent 214 0 R /Prev 226 0 R /Next 234 0 R >>
endobj
226 0 obj
-<< /Title 227 0 R /A 224 0 R /Parent 210 0 R /Prev 222 0 R /Next 230 0 R >>
+<< /Title 227 0 R /A 224 0 R /Parent 214 0 R /Prev 222 0 R /Next 230 0 R >>
endobj
222 0 obj
-<< /Title 223 0 R /A 220 0 R /Parent 210 0 R /Prev 218 0 R /Next 226 0 R >>
+<< /Title 223 0 R /A 220 0 R /Parent 214 0 R /Prev 218 0 R /Next 226 0 R >>
endobj
218 0 obj
-<< /Title 219 0 R /A 216 0 R /Parent 210 0 R /Prev 214 0 R /Next 222 0 R >>
+<< /Title 219 0 R /A 216 0 R /Parent 214 0 R /Next 222 0 R >>
endobj
214 0 obj
-<< /Title 215 0 R /A 212 0 R /Parent 210 0 R /Next 218 0 R >>
+<< /Title 215 0 R /A 212 0 R /Parent 1550 0 R /Prev 190 0 R /Next 262 0 R /First 218 0 R /Last 258 0 R /Count -11 >>
endobj
210 0 obj
-<< /Title 211 0 R /A 208 0 R /Parent 1557 0 R /Prev 186 0 R /Next 258 0 R /First 214 0 R /Last 254 0 R /Count -11 >>
+<< /Title 211 0 R /A 208 0 R /Parent 190 0 R /Prev 206 0 R >>
endobj
206 0 obj
-<< /Title 207 0 R /A 204 0 R /Parent 186 0 R /Prev 202 0 R >>
+<< /Title 207 0 R /A 204 0 R /Parent 190 0 R /Prev 202 0 R /Next 210 0 R >>
endobj
202 0 obj
-<< /Title 203 0 R /A 200 0 R /Parent 186 0 R /Prev 198 0 R /Next 206 0 R >>
+<< /Title 203 0 R /A 200 0 R /Parent 190 0 R /Prev 198 0 R /Next 206 0 R >>
endobj
198 0 obj
-<< /Title 199 0 R /A 196 0 R /Parent 186 0 R /Prev 194 0 R /Next 202 0 R >>
+<< /Title 199 0 R /A 196 0 R /Parent 190 0 R /Prev 194 0 R /Next 202 0 R >>
endobj
194 0 obj
-<< /Title 195 0 R /A 192 0 R /Parent 186 0 R /Prev 190 0 R /Next 198 0 R >>
+<< /Title 195 0 R /A 192 0 R /Parent 190 0 R /Next 198 0 R >>
endobj
190 0 obj
-<< /Title 191 0 R /A 188 0 R /Parent 186 0 R /Next 194 0 R >>
+<< /Title 191 0 R /A 188 0 R /Parent 1550 0 R /Prev 170 0 R /Next 214 0 R /First 194 0 R /Last 210 0 R /Count -5 >>
endobj
186 0 obj
-<< /Title 187 0 R /A 184 0 R /Parent 1557 0 R /Prev 166 0 R /Next 210 0 R /First 190 0 R /Last 206 0 R /Count -5 >>
+<< /Title 187 0 R /A 184 0 R /Parent 170 0 R /Prev 182 0 R >>
endobj
182 0 obj
-<< /Title 183 0 R /A 180 0 R /Parent 166 0 R /Prev 178 0 R >>
+<< /Title 183 0 R /A 180 0 R /Parent 170 0 R /Prev 178 0 R /Next 186 0 R >>
endobj
178 0 obj
-<< /Title 179 0 R /A 176 0 R /Parent 166 0 R /Prev 174 0 R /Next 182 0 R >>
+<< /Title 179 0 R /A 176 0 R /Parent 170 0 R /Prev 174 0 R /Next 182 0 R >>
endobj
174 0 obj
-<< /Title 175 0 R /A 172 0 R /Parent 166 0 R /Prev 170 0 R /Next 178 0 R >>
+<< /Title 175 0 R /A 172 0 R /Parent 170 0 R /Next 178 0 R >>
endobj
170 0 obj
-<< /Title 171 0 R /A 168 0 R /Parent 166 0 R /Next 174 0 R >>
+<< /Title 171 0 R /A 168 0 R /Parent 1550 0 R /Prev 166 0 R /Next 190 0 R /First 174 0 R /Last 186 0 R /Count -4 >>
endobj
166 0 obj
-<< /Title 167 0 R /A 164 0 R /Parent 1557 0 R /Prev 162 0 R /Next 186 0 R /First 170 0 R /Last 182 0 R /Count -4 >>
+<< /Title 167 0 R /A 164 0 R /Parent 1550 0 R /Prev 138 0 R /Next 170 0 R >>
endobj
162 0 obj
-<< /Title 163 0 R /A 160 0 R /Parent 1557 0 R /Prev 134 0 R /Next 166 0 R >>
+<< /Title 163 0 R /A 160 0 R /Parent 138 0 R /Prev 158 0 R >>
endobj
158 0 obj
-<< /Title 159 0 R /A 156 0 R /Parent 134 0 R /Prev 154 0 R >>
+<< /Title 159 0 R /A 156 0 R /Parent 138 0 R /Prev 154 0 R /Next 162 0 R >>
endobj
154 0 obj
-<< /Title 155 0 R /A 152 0 R /Parent 134 0 R /Prev 150 0 R /Next 158 0 R >>
+<< /Title 155 0 R /A 152 0 R /Parent 138 0 R /Prev 150 0 R /Next 158 0 R >>
endobj
150 0 obj
-<< /Title 151 0 R /A 148 0 R /Parent 134 0 R /Prev 146 0 R /Next 154 0 R >>
+<< /Title 151 0 R /A 148 0 R /Parent 138 0 R /Prev 146 0 R /Next 154 0 R >>
endobj
146 0 obj
-<< /Title 147 0 R /A 144 0 R /Parent 134 0 R /Prev 142 0 R /Next 150 0 R >>
+<< /Title 147 0 R /A 144 0 R /Parent 138 0 R /Prev 142 0 R /Next 150 0 R >>
endobj
142 0 obj
-<< /Title 143 0 R /A 140 0 R /Parent 134 0 R /Prev 138 0 R /Next 146 0 R >>
+<< /Title 143 0 R /A 140 0 R /Parent 138 0 R /Next 146 0 R >>
endobj
138 0 obj
-<< /Title 139 0 R /A 136 0 R /Parent 134 0 R /Next 142 0 R >>
+<< /Title 139 0 R /A 136 0 R /Parent 1550 0 R /Prev 134 0 R /Next 166 0 R /First 142 0 R /Last 162 0 R /Count -6 >>
endobj
134 0 obj
-<< /Title 135 0 R /A 132 0 R /Parent 1557 0 R /Prev 130 0 R /Next 162 0 R /First 138 0 R /Last 158 0 R /Count -6 >>
+<< /Title 135 0 R /A 132 0 R /Parent 1550 0 R /Prev 118 0 R /Next 138 0 R >>
endobj
130 0 obj
-<< /Title 131 0 R /A 128 0 R /Parent 1557 0 R /Prev 114 0 R /Next 134 0 R >>
+<< /Title 131 0 R /A 128 0 R /Parent 118 0 R /Prev 126 0 R >>
endobj
126 0 obj
-<< /Title 127 0 R /A 124 0 R /Parent 114 0 R /Prev 122 0 R >>
+<< /Title 127 0 R /A 124 0 R /Parent 118 0 R /Prev 122 0 R /Next 130 0 R >>
endobj
122 0 obj
-<< /Title 123 0 R /A 120 0 R /Parent 114 0 R /Prev 118 0 R /Next 126 0 R >>
+<< /Title 123 0 R /A 120 0 R /Parent 118 0 R /Next 126 0 R >>
endobj
118 0 obj
-<< /Title 119 0 R /A 116 0 R /Parent 114 0 R /Next 122 0 R >>
+<< /Title 119 0 R /A 116 0 R /Parent 1550 0 R /Prev 114 0 R /Next 134 0 R /First 122 0 R /Last 130 0 R /Count -3 >>
endobj
114 0 obj
-<< /Title 115 0 R /A 112 0 R /Parent 1557 0 R /Prev 110 0 R /Next 130 0 R /First 118 0 R /Last 126 0 R /Count -3 >>
+<< /Title 115 0 R /A 112 0 R /Parent 1550 0 R /Prev 94 0 R /Next 118 0 R >>
endobj
110 0 obj
-<< /Title 111 0 R /A 108 0 R /Parent 1557 0 R /Prev 90 0 R /Next 114 0 R >>
+<< /Title 111 0 R /A 108 0 R /Parent 94 0 R /Prev 106 0 R >>
endobj
106 0 obj
-<< /Title 107 0 R /A 104 0 R /Parent 90 0 R /Prev 102 0 R >>
+<< /Title 107 0 R /A 104 0 R /Parent 94 0 R /Prev 102 0 R /Next 110 0 R >>
endobj
102 0 obj
-<< /Title 103 0 R /A 100 0 R /Parent 90 0 R /Prev 98 0 R /Next 106 0 R >>
+<< /Title 103 0 R /A 100 0 R /Parent 94 0 R /Prev 98 0 R /Next 106 0 R >>
endobj
98 0 obj
-<< /Title 99 0 R /A 96 0 R /Parent 90 0 R /Prev 94 0 R /Next 102 0 R >>
+<< /Title 99 0 R /A 96 0 R /Parent 94 0 R /Next 102 0 R >>
endobj
94 0 obj
-<< /Title 95 0 R /A 92 0 R /Parent 90 0 R /Next 98 0 R >>
+<< /Title 95 0 R /A 92 0 R /Parent 1550 0 R /Prev 50 0 R /Next 114 0 R /First 98 0 R /Last 110 0 R /Count -4 >>
endobj
90 0 obj
-<< /Title 91 0 R /A 88 0 R /Parent 1557 0 R /Prev 46 0 R /Next 110 0 R /First 94 0 R /Last 106 0 R /Count -4 >>
+<< /Title 91 0 R /A 88 0 R /Parent 70 0 R /Prev 86 0 R >>
endobj
86 0 obj
-<< /Title 87 0 R /A 84 0 R /Parent 66 0 R /Prev 82 0 R >>
+<< /Title 87 0 R /A 84 0 R /Parent 70 0 R /Prev 82 0 R /Next 90 0 R >>
endobj
82 0 obj
-<< /Title 83 0 R /A 80 0 R /Parent 66 0 R /Prev 78 0 R /Next 86 0 R >>
+<< /Title 83 0 R /A 80 0 R /Parent 70 0 R /Prev 78 0 R /Next 86 0 R >>
endobj
78 0 obj
-<< /Title 79 0 R /A 76 0 R /Parent 66 0 R /Prev 74 0 R /Next 82 0 R >>
+<< /Title 79 0 R /A 76 0 R /Parent 70 0 R /Prev 74 0 R /Next 82 0 R >>
endobj
74 0 obj
-<< /Title 75 0 R /A 72 0 R /Parent 66 0 R /Prev 70 0 R /Next 78 0 R >>
+<< /Title 75 0 R /A 72 0 R /Parent 70 0 R /Next 78 0 R >>
endobj
70 0 obj
-<< /Title 71 0 R /A 68 0 R /Parent 66 0 R /Next 74 0 R >>
+<< /Title 71 0 R /A 68 0 R /Parent 50 0 R /Prev 66 0 R /First 74 0 R /Last 90 0 R /Count -5 >>
endobj
66 0 obj
-<< /Title 67 0 R /A 64 0 R /Parent 46 0 R /Prev 62 0 R /First 70 0 R /Last 86 0 R /Count -5 >>
+<< /Title 67 0 R /A 64 0 R /Parent 50 0 R /Prev 54 0 R /Next 70 0 R >>
endobj
62 0 obj
-<< /Title 63 0 R /A 60 0 R /Parent 46 0 R /Prev 50 0 R /Next 66 0 R >>
+<< /Title 63 0 R /A 60 0 R /Parent 54 0 R /Prev 58 0 R >>
endobj
58 0 obj
-<< /Title 59 0 R /A 56 0 R /Parent 50 0 R /Prev 54 0 R >>
+<< /Title 59 0 R /A 56 0 R /Parent 54 0 R /Next 62 0 R >>
endobj
54 0 obj
-<< /Title 55 0 R /A 52 0 R /Parent 50 0 R /Next 58 0 R >>
+<< /Title 55 0 R /A 52 0 R /Parent 50 0 R /Next 66 0 R /First 58 0 R /Last 62 0 R /Count -2 >>
endobj
50 0 obj
-<< /Title 51 0 R /A 48 0 R /Parent 46 0 R /Next 62 0 R /First 54 0 R /Last 58 0 R /Count -2 >>
+<< /Title 51 0 R /A 48 0 R /Parent 1550 0 R /Prev 18 0 R /Next 94 0 R /First 54 0 R /Last 70 0 R /Count -3 >>
endobj
46 0 obj
-<< /Title 47 0 R /A 44 0 R /Parent 1557 0 R /Prev 18 0 R /Next 90 0 R /First 50 0 R /Last 66 0 R /Count -3 >>
+<< /Title 47 0 R /A 44 0 R /Parent 18 0 R /Prev 42 0 R >>
endobj
42 0 obj
-<< /Title 43 0 R /A 40 0 R /Parent 18 0 R /Prev 38 0 R >>
+<< /Title 43 0 R /A 40 0 R /Parent 18 0 R /Prev 38 0 R /Next 46 0 R >>
endobj
38 0 obj
<< /Title 39 0 R /A 36 0 R /Parent 18 0 R /Prev 34 0 R /Next 42 0 R >>
@@ -7989,1619 +7976,1616 @@ endobj
<< /Title 23 0 R /A 20 0 R /Parent 18 0 R /Next 26 0 R >>
endobj
18 0 obj
-<< /Title 19 0 R /A 16 0 R /Parent 1557 0 R /Prev 14 0 R /Next 46 0 R /First 22 0 R /Last 42 0 R /Count -6 >>
+<< /Title 19 0 R /A 16 0 R /Parent 1550 0 R /Prev 14 0 R /Next 50 0 R /First 22 0 R /Last 46 0 R /Count -7 >>
endobj
14 0 obj
-<< /Title 15 0 R /A 12 0 R /Parent 1557 0 R /Prev 10 0 R /Next 18 0 R >>
+<< /Title 15 0 R /A 12 0 R /Parent 1550 0 R /Prev 10 0 R /Next 18 0 R >>
endobj
10 0 obj
-<< /Title 11 0 R /A 8 0 R /Parent 1557 0 R /Prev 6 0 R /Next 14 0 R >>
+<< /Title 11 0 R /A 8 0 R /Parent 1550 0 R /Prev 6 0 R /Next 14 0 R >>
endobj
6 0 obj
-<< /Title 7 0 R /A 4 0 R /Parent 1557 0 R /Next 10 0 R >>
+<< /Title 7 0 R /A 4 0 R /Parent 1550 0 R /Next 10 0 R >>
endobj
-1558 0 obj
-<< /Names [ (Doc-Start) 366 0 R (Item.1) 411 0 R (Item.10) 716 0 R (Item.11) 850 0 R (Item.12) 851 0 R (Item.2) 412 0 R (Item.3) 413 0 R (Item.4) 414 0 R (Item.5) 695 0 R (Item.6) 696 0 R (Item.7) 713 0 R (Item.8) 714 0 R (Item.9) 715 0 R (page.1) 365 0 R (page.10) 468 0 R (page.11) 479 0 R (page.12) 489 0 R (page.13) 499 0 R (page.14) 504 0 R (page.15) 509 0 R (page.16) 514 0 R (page.17) 522 0 R (page.18) 529 0 R (page.19) 535 0 R (page.2) 401 0 R (page.20) 542 0 R (page.21) 547 0 R (page.22) 554 0 R (page.23) 562 0 R (page.24) 568 0 R (page.25) 573 0 R (page.26) 582 0 R ] /Limits [ (Doc-Start) (page.26) ] >>
+1551 0 obj
+<< /Names [ (Doc-Start) 370 0 R (Item.1) 415 0 R (Item.10) 725 0 R (Item.11) 859 0 R (Item.12) 860 0 R (Item.2) 416 0 R (Item.3) 417 0 R (Item.4) 418 0 R (Item.5) 711 0 R (Item.6) 712 0 R (Item.7) 722 0 R (Item.8) 723 0 R (Item.9) 724 0 R (page.1) 369 0 R (page.10) 472 0 R (page.11) 477 0 R (page.12) 488 0 R (page.13) 500 0 R (page.14) 507 0 R (page.15) 512 0 R (page.16) 517 0 R (page.17) 522 0 R (page.18) 530 0 R (page.19) 537 0 R (page.2) 405 0 R (page.20) 543 0 R (page.21) 550 0 R (page.22) 557 0 R (page.23) 561 0 R (page.24) 569 0 R (page.25) 575 0 R (page.26) 580 0 R ] /Limits [ (Doc-Start) (page.26) ] >>
endobj
-1559 0 obj
-<< /Names [ (page.27) 591 0 R (page.28) 598 0 R (page.29) 605 0 R (page.3) 409 0 R (page.30) 610 0 R (page.31) 617 0 R (page.32) 625 0 R (page.33) 632 0 R (page.34) 644 0 R (page.35) 652 0 R (page.36) 659 0 R (page.37) 667 0 R (page.38) 673 0 R (page.39) 684 0 R (page.4) 422 0 R (page.40) 691 0 R (page.41) 704 0 R (page.42) 710 0 R (page.43) 722 0 R (page.44) 732 0 R (page.45) 737 0 R (page.46) 742 0 R (page.47) 753 0 R (page.48) 762 0 R (page.49) 771 0 R (page.5) 439 0 R (page.50) 779 0 R (page.51) 785 0 R (page.52) 792 0 R (page.53) 799 0 R (page.54) 805 0 R (page.55) 813 0 R ] /Limits [ (page.27) (page.55) ] >>
+1552 0 obj
+<< /Names [ (page.27) 589 0 R (page.28) 598 0 R (page.29) 605 0 R (page.3) 413 0 R (page.30) 612 0 R (page.31) 617 0 R (page.32) 625 0 R (page.33) 632 0 R (page.34) 639 0 R (page.35) 651 0 R (page.36) 659 0 R (page.37) 666 0 R (page.38) 674 0 R (page.39) 680 0 R (page.4) 426 0 R (page.40) 687 0 R (page.41) 698 0 R (page.42) 707 0 R (page.43) 717 0 R (page.44) 731 0 R (page.45) 740 0 R (page.46) 745 0 R (page.47) 750 0 R (page.48) 760 0 R (page.49) 769 0 R (page.5) 443 0 R (page.50) 777 0 R (page.51) 786 0 R (page.52) 794 0 R (page.53) 800 0 R (page.54) 806 0 R (page.55) 813 0 R ] /Limits [ (page.27) (page.55) ] >>
endobj
-1560 0 obj
-<< /Names [ (page.56) 822 0 R (page.57) 837 0 R (page.58) 844 0 R (page.59) 849 0 R (page.6) 448 0 R (page.60) 855 0 R (page.61) 859 0 R (page.62) 864 0 R (page.63) 868 0 R (page.64) 872 0 R (page.65) 876 0 R (page.66) 881 0 R (page.67) 886 0 R (page.68) 890 0 R (page.69) 894 0 R (page.7) 453 0 R (page.70) 898 0 R (page.71) 902 0 R (page.72) 907 0 R (page.73) 911 0 R (page.74) 915 0 R (page.75) 919 0 R (page.76) 923 0 R (page.77) 927 0 R (page.78) 931 0 R (page.79) 936 0 R (page.8) 457 0 R (page.80) 1061 0 R (page.81) 1179 0 R (page.82) 1236 0 R (page.83) 1288 0 R (page.84) 1335 0 R ] /Limits [ (page.56) (page.84) ] >>
+1553 0 obj
+<< /Names [ (page.56) 819 0 R (page.57) 827 0 R (page.58) 845 0 R (page.59) 852 0 R (page.6) 452 0 R (page.60) 856 0 R (page.61) 865 0 R (page.62) 870 0 R (page.63) 874 0 R (page.64) 878 0 R (page.65) 882 0 R (page.66) 886 0 R (page.67) 891 0 R (page.68) 896 0 R (page.69) 900 0 R (page.7) 457 0 R (page.70) 904 0 R (page.71) 908 0 R (page.72) 913 0 R (page.73) 917 0 R (page.74) 921 0 R (page.75) 925 0 R (page.76) 929 0 R (page.77) 1048 0 R (page.78) 1152 0 R (page.79) 1230 0 R (page.8) 461 0 R (page.80) 1282 0 R (page.81) 1330 0 R (page.9) 465 0 R (section*.2) 361 0 R (section.1) 5 0 R ] /Limits [ (page.56) (section.1) ] >>
endobj
-1561 0 obj
-<< /Names [ (page.9) 461 0 R (section*.2) 357 0 R (section.1) 5 0 R (section.10) 133 0 R (section.11) 161 0 R (section.12) 165 0 R (section.13) 185 0 R (section.14) 209 0 R (section.15) 257 0 R (section.16) 285 0 R (section.17) 289 0 R (section.18) 309 0 R (section.19) 353 0 R (section.2) 9 0 R (section.3) 13 0 R (section.4) 17 0 R (section.5) 45 0 R (section.6) 89 0 R (section.7) 109 0 R (section.8) 113 0 R (section.9) 129 0 R (subsection.10.1) 137 0 R (subsection.10.2) 141 0 R (subsection.10.3) 145 0 R (subsection.10.4) 149 0 R (subsection.10.5) 153 0 R (subsection.10.6) 157 0 R (subsection.12.1) 169 0 R (subsection.12.2) 173 0 R (subsection.12.3) 177 0 R (subsection.12.4) 181 0 R (subsection.13.1) 189 0 R ] /Limits [ (page.9) (subsection.13.1) ] >>
+1554 0 obj
+<< /Names [ (section.10) 137 0 R (section.11) 165 0 R (section.12) 169 0 R (section.13) 189 0 R (section.14) 213 0 R (section.15) 261 0 R (section.16) 289 0 R (section.17) 293 0 R (section.18) 313 0 R (section.19) 357 0 R (section.2) 9 0 R (section.3) 13 0 R (section.4) 17 0 R (section.5) 49 0 R (section.6) 93 0 R (section.7) 113 0 R (section.8) 117 0 R (section.9) 133 0 R (subsection.10.1) 141 0 R (subsection.10.2) 145 0 R (subsection.10.3) 149 0 R (subsection.10.4) 153 0 R (subsection.10.5) 157 0 R (subsection.10.6) 161 0 R (subsection.12.1) 173 0 R (subsection.12.2) 177 0 R (subsection.12.3) 181 0 R (subsection.12.4) 185 0 R (subsection.13.1) 193 0 R (subsection.13.2) 197 0 R (subsection.13.3) 201 0 R (subsection.13.4) 205 0 R ] /Limits [ (section.10) (subsection.13.4) ] >>
endobj
-1562 0 obj
-<< /Names [ (subsection.13.2) 193 0 R (subsection.13.3) 197 0 R (subsection.13.4) 201 0 R (subsection.13.5) 205 0 R (subsection.14.1) 213 0 R (subsection.14.10) 249 0 R (subsection.14.11) 253 0 R (subsection.14.2) 217 0 R (subsection.14.3) 221 0 R (subsection.14.4) 225 0 R (subsection.14.5) 229 0 R (subsection.14.6) 233 0 R (subsection.14.7) 237 0 R (subsection.14.8) 241 0 R (subsection.14.9) 245 0 R (subsection.15.1) 261 0 R (subsection.15.2) 273 0 R (subsection.15.3) 277 0 R (subsection.15.4) 281 0 R (subsection.17.1) 293 0 R (subsection.17.2) 297 0 R (subsection.17.3) 301 0 R (subsection.17.4) 305 0 R (subsection.18.1) 313 0 R (subsection.18.10) 349 0 R (subsection.18.2) 317 0 R (subsection.18.3) 321 0 R (subsection.18.4) 325 0 R (subsection.18.5) 329 0 R (subsection.18.6) 333 0 R (subsection.18.7) 337 0 R (subsection.18.8) 341 0 R ] /Limits [ (subsection.13.2) (subsection.18.8) ] >>
+1555 0 obj
+<< /Names [ (subsection.13.5) 209 0 R (subsection.14.1) 217 0 R (subsection.14.10) 253 0 R (subsection.14.11) 257 0 R (subsection.14.2) 221 0 R (subsection.14.3) 225 0 R (subsection.14.4) 229 0 R (subsection.14.5) 233 0 R (subsection.14.6) 237 0 R (subsection.14.7) 241 0 R (subsection.14.8) 245 0 R (subsection.14.9) 249 0 R (subsection.15.1) 265 0 R (subsection.15.2) 277 0 R (subsection.15.3) 281 0 R (subsection.15.4) 285 0 R (subsection.17.1) 297 0 R (subsection.17.2) 301 0 R (subsection.17.3) 305 0 R (subsection.17.4) 309 0 R (subsection.18.1) 317 0 R (subsection.18.10) 353 0 R (subsection.18.2) 321 0 R (subsection.18.3) 325 0 R (subsection.18.4) 329 0 R (subsection.18.5) 333 0 R (subsection.18.6) 337 0 R (subsection.18.7) 341 0 R (subsection.18.8) 345 0 R (subsection.18.9) 349 0 R (subsection.4.1) 21 0 R (subsection.4.2) 25 0 R ] /Limits [ (subsection.13.5) (subsection.4.2) ] >>
+endobj
+1556 0 obj
+<< /Names [ (subsection.4.3) 29 0 R (subsection.4.4) 33 0 R (subsection.4.5) 37 0 R (subsection.4.6) 41 0 R (subsection.4.7) 45 0 R (subsection.5.1) 53 0 R (subsection.5.2) 65 0 R (subsection.5.3) 69 0 R (subsection.6.1) 97 0 R (subsection.6.2) 101 0 R (subsection.6.3) 105 0 R (subsection.6.4) 109 0 R (subsection.8.1) 121 0 R (subsection.8.2) 125 0 R (subsection.8.3) 129 0 R (subsubsection.15.1.1) 269 0 R (subsubsection.15.1.2) 273 0 R (subsubsection.5.1.1) 57 0 R (subsubsection.5.1.2) 61 0 R (subsubsection.5.3.1) 73 0 R (subsubsection.5.3.2) 77 0 R (subsubsection.5.3.3) 81 0 R (subsubsection.5.3.4) 85 0 R (subsubsection.5.3.5) 89 0 R (table.caption.1) 701 0 R (tabularnote.1) 708 0 R (tabularnote.2) 710 0 R (tabularnote.3) 718 0 R (tabularnote.4) 719 0 R (tabularnote.5) 720 0 R (tabularnote.6) 721 0 R (tabularnote.7) 857 0 R ] /Limits [ (subsection.4.3) (tabularnote.7) ] >>
endobj
-1563 0 obj
-<< /Names [ (subsection.18.9) 345 0 R (subsection.4.1) 21 0 R (subsection.4.2) 25 0 R (subsection.4.3) 29 0 R (subsection.4.4) 33 0 R (subsection.4.5) 37 0 R (subsection.4.6) 41 0 R (subsection.5.1) 49 0 R (subsection.5.2) 61 0 R (subsection.5.3) 65 0 R (subsection.6.1) 93 0 R (subsection.6.2) 97 0 R (subsection.6.3) 101 0 R (subsection.6.4) 105 0 R (subsection.8.1) 117 0 R (subsection.8.2) 121 0 R (subsection.8.3) 125 0 R (subsubsection.15.1.1) 265 0 R (subsubsection.15.1.2) 269 0 R (subsubsection.5.1.1) 53 0 R (subsubsection.5.1.2) 57 0 R (subsubsection.5.3.1) 69 0 R (subsubsection.5.3.2) 73 0 R (subsubsection.5.3.3) 77 0 R (subsubsection.5.3.4) 81 0 R (subsubsection.5.3.5) 85 0 R (table.caption.1) 698 0 R (tabularnote.1) 692 0 R (tabularnote.2) 694 0 R (tabularnote.3) 711 0 R (tabularnote.4) 712 0 R ] /Limits [ (subsection.18.9) (tabularnote.4) ] >>
+1557 0 obj
+<< /Names [ (tabularnote.8) 858 0 R ] /Limits [ (tabularnote.8) (tabularnote.8) ] >>
endobj
-1564 0 obj
-<< /Kids [ 1558 0 R 1559 0 R 1560 0 R 1561 0 R 1562 0 R 1563 0 R ] /Limits [ (Doc-Start) (tabularnote.4) ] >>
+1558 0 obj
+<< /Kids [ 1551 0 R 1552 0 R 1553 0 R 1554 0 R 1555 0 R 1556 0 R 1557 0 R ] /Limits [ (Doc-Start) (tabularnote.8) ] >>
endobj
-1565 0 obj
-<< /Dests 1564 0 R >>
+1559 0 obj
+<< /Dests 1558 0 R >>
endobj
-1566 0 obj
-<< /Type /Catalog /Pages 1556 0 R /Outlines 1557 0 R /Names 1565 0 R /PageMode/UseOutlines /OpenAction 360 0 R >>
+1560 0 obj
+<< /Type /Catalog /Pages 1549 0 R /Outlines 1550 0 R /Names 1559 0 R /PageMode/UseOutlines /OpenAction 364 0 R >>
endobj
-1567 0 obj
-<< /Author(\376\377\000F\000.\000\040\000P\000a\000n\000t\000i\000g\000n\000y)/Title(\376\377\000T\000h\000e\000\040\000p\000a\000c\000k\000a\000g\000e\000\040\000'\000n\000i\000c\000e\000m\000a\000t\000r\000i\000x\000')/Subject(\376\377\000A\000\040\000L\000a\000T\000e\000X\000\040\000p\000a\000c\000k\000a\000g\000e)/Creator(LaTeX with hyperref)/Keywords() /Producer (LuaTeX-1.18.1) /CreationDate (D:20240423140805+02'00') /ModDate (D:20240423140805+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.18.1 (MiKTeX 24.3.31)) >>
+1561 0 obj
+<< /Author(\376\377\000F\000.\000\040\000P\000a\000n\000t\000i\000g\000n\000y)/Title(\376\377\000T\000h\000e\000\040\000p\000a\000c\000k\000a\000g\000e\000\040\000'\000n\000i\000c\000e\000m\000a\000t\000r\000i\000x\000')/Subject(\376\377\000A\000\040\000L\000a\000T\000e\000X\000\040\000p\000a\000c\000k\000a\000g\000e)/Creator(LaTeX with hyperref)/Keywords() /Producer (LuaTeX-1.18.1) /CreationDate (D:20240822114126+02'00') /ModDate (D:20240822114126+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.18.1 (MiKTeX 24.4)) >>
endobj
xref
-0 1568
+0 1562
0000000000 65535 f
-0000601876 00000 n
-0000602032 00000 n
-0000602104 00000 n
+0000596008 00000 n
+0000596164 00000 n
+0000596236 00000 n
0000000020 00000 n
-0000036227 00000 n
-0000899874 00000 n
+0000036494 00000 n
+0000887355 00000 n
0000000065 00000 n
0000000264 00000 n
-0000036287 00000 n
-0000899787 00000 n
+0000036554 00000 n
+0000887268 00000 n
0000000309 00000 n
0000000527 00000 n
-0000041534 00000 n
-0000899698 00000 n
+0000041800 00000 n
+0000887179 00000 n
0000000573 00000 n
0000000791 00000 n
-0000048678 00000 n
-0000899572 00000 n
+0000049077 00000 n
+0000887053 00000 n
0000000837 00000 n
0000000918 00000 n
-0000048739 00000 n
-0000899498 00000 n
+0000049138 00000 n
+0000886979 00000 n
0000000969 00000 n
0000001060 00000 n
-0000061960 00000 n
-0000899411 00000 n
+0000062150 00000 n
+0000886892 00000 n
0000001111 00000 n
0000001255 00000 n
-0000062021 00000 n
-0000899324 00000 n
+0000062211 00000 n
+0000886805 00000 n
0000001306 00000 n
0000001435 00000 n
-0000067658 00000 n
-0000899237 00000 n
+0000067925 00000 n
+0000886718 00000 n
0000001486 00000 n
0000001620 00000 n
-0000067719 00000 n
-0000899150 00000 n
+0000067986 00000 n
+0000886631 00000 n
0000001671 00000 n
0000001955 00000 n
-0000072575 00000 n
-0000899076 00000 n
+0000073064 00000 n
+0000886544 00000 n
0000002006 00000 n
0000002280 00000 n
-0000076254 00000 n
-0000898950 00000 n
-0000002326 00000 n
-0000002402 00000 n
-0000076315 00000 n
-0000898839 00000 n
-0000002453 00000 n
-0000002736 00000 n
-0000076376 00000 n
-0000898765 00000 n
-0000002792 00000 n
-0000002916 00000 n
-0000081959 00000 n
-0000898691 00000 n
-0000002972 00000 n
-0000003099 00000 n
-0000082020 00000 n
-0000898604 00000 n
-0000003150 00000 n
-0000003399 00000 n
-0000087662 00000 n
-0000898493 00000 n
-0000003450 00000 n
-0000003681 00000 n
-0000094747 00000 n
-0000898419 00000 n
-0000003737 00000 n
-0000003907 00000 n
-0000094808 00000 n
-0000898332 00000 n
-0000003963 00000 n
-0000004218 00000 n
-0000094869 00000 n
-0000898245 00000 n
-0000004274 00000 n
-0000004409 00000 n
-0000101387 00000 n
-0000898158 00000 n
-0000004465 00000 n
-0000004602 00000 n
-0000106540 00000 n
-0000898084 00000 n
-0000004658 00000 n
-0000004840 00000 n
-0000118487 00000 n
-0000897956 00000 n
-0000004886 00000 n
-0000005196 00000 n
-0000118548 00000 n
-0000897882 00000 n
-0000005247 00000 n
-0000005356 00000 n
-0000124513 00000 n
-0000897794 00000 n
-0000005407 00000 n
-0000005666 00000 n
-0000148342 00000 n
-0000897703 00000 n
-0000005718 00000 n
-0000005973 00000 n
-0000159481 00000 n
-0000897625 00000 n
-0000006025 00000 n
-0000006208 00000 n
-0000159543 00000 n
-0000897532 00000 n
-0000006255 00000 n
-0000006398 00000 n
-0000159605 00000 n
-0000897399 00000 n
-0000006445 00000 n
-0000006606 00000 n
-0000159667 00000 n
-0000897320 00000 n
-0000006658 00000 n
-0000006745 00000 n
-0000164997 00000 n
-0000897227 00000 n
-0000006797 00000 n
-0000006897 00000 n
-0000169691 00000 n
-0000897148 00000 n
-0000006949 00000 n
-0000007115 00000 n
-0000177107 00000 n
-0000897054 00000 n
-0000007162 00000 n
-0000007348 00000 n
-0000197838 00000 n
-0000896921 00000 n
-0000007396 00000 n
-0000007569 00000 n
-0000210578 00000 n
-0000896842 00000 n
-0000007622 00000 n
-0000007772 00000 n
-0000230914 00000 n
-0000896749 00000 n
-0000007825 00000 n
-0000008052 00000 n
-0000241757 00000 n
-0000896656 00000 n
-0000008105 00000 n
-0000008440 00000 n
-0000241819 00000 n
-0000896563 00000 n
-0000008493 00000 n
-0000008687 00000 n
-0000246991 00000 n
-0000896470 00000 n
-0000008740 00000 n
-0000008946 00000 n
-0000253949 00000 n
-0000896391 00000 n
-0000008999 00000 n
-0000009193 00000 n
-0000254011 00000 n
-0000896297 00000 n
-0000009241 00000 n
-0000009513 00000 n
-0000261319 00000 n
-0000896164 00000 n
-0000009561 00000 n
-0000009666 00000 n
-0000278840 00000 n
-0000896085 00000 n
-0000009719 00000 n
-0000009944 00000 n
-0000278902 00000 n
-0000895992 00000 n
-0000009997 00000 n
-0000010375 00000 n
-0000296096 00000 n
-0000895899 00000 n
-0000010428 00000 n
-0000010772 00000 n
-0000302085 00000 n
-0000895820 00000 n
-0000010825 00000 n
-0000011095 00000 n
-0000302147 00000 n
-0000895687 00000 n
-0000011143 00000 n
-0000011357 00000 n
-0000302209 00000 n
-0000895608 00000 n
-0000011410 00000 n
-0000011548 00000 n
-0000307536 00000 n
-0000895515 00000 n
-0000011601 00000 n
-0000011698 00000 n
-0000307598 00000 n
-0000895422 00000 n
-0000011751 00000 n
-0000011889 00000 n
-0000316181 00000 n
-0000895329 00000 n
-0000011942 00000 n
-0000012153 00000 n
-0000325057 00000 n
-0000895250 00000 n
-0000012206 00000 n
-0000012453 00000 n
-0000325119 00000 n
-0000895116 00000 n
-0000012501 00000 n
-0000012603 00000 n
-0000325181 00000 n
-0000895037 00000 n
-0000012656 00000 n
-0000012806 00000 n
-0000334140 00000 n
-0000894944 00000 n
-0000012859 00000 n
-0000013004 00000 n
-0000334202 00000 n
-0000894851 00000 n
-0000013057 00000 n
-0000013282 00000 n
-0000334264 00000 n
-0000894758 00000 n
-0000013335 00000 n
-0000013557 00000 n
-0000339872 00000 n
-0000894665 00000 n
-0000013610 00000 n
-0000013743 00000 n
-0000339934 00000 n
-0000894572 00000 n
-0000013796 00000 n
-0000013911 00000 n
-0000346082 00000 n
-0000894479 00000 n
-0000013964 00000 n
-0000014135 00000 n
-0000351742 00000 n
-0000894386 00000 n
-0000014188 00000 n
-0000014323 00000 n
-0000351804 00000 n
-0000894293 00000 n
-0000014376 00000 n
-0000014529 00000 n
-0000351866 00000 n
-0000894200 00000 n
-0000014583 00000 n
-0000014809 00000 n
-0000351928 00000 n
-0000894121 00000 n
-0000014863 00000 n
-0000015056 00000 n
-0000358270 00000 n
-0000893988 00000 n
-0000015104 00000 n
-0000015280 00000 n
-0000358332 00000 n
-0000893870 00000 n
-0000015333 00000 n
-0000015646 00000 n
-0000363491 00000 n
-0000893791 00000 n
-0000015704 00000 n
-0000015844 00000 n
-0000363553 00000 n
-0000893712 00000 n
-0000015902 00000 n
-0000016068 00000 n
-0000371265 00000 n
-0000893619 00000 n
-0000016121 00000 n
-0000016348 00000 n
-0000378965 00000 n
-0000893526 00000 n
-0000016401 00000 n
-0000016704 00000 n
-0000384577 00000 n
-0000893447 00000 n
-0000016757 00000 n
-0000017052 00000 n
-0000388877 00000 n
-0000893353 00000 n
-0000017100 00000 n
-0000017248 00000 n
-0000402196 00000 n
-0000893220 00000 n
-0000017296 00000 n
-0000017413 00000 n
-0000402258 00000 n
-0000893141 00000 n
-0000017466 00000 n
-0000017568 00000 n
-0000402319 00000 n
-0000893048 00000 n
-0000017621 00000 n
-0000017731 00000 n
-0000408203 00000 n
-0000892955 00000 n
-0000017784 00000 n
-0000017974 00000 n
-0000408264 00000 n
-0000892876 00000 n
-0000018027 00000 n
-0000018141 00000 n
-0000416695 00000 n
-0000892742 00000 n
+0000077209 00000 n
+0000886470 00000 n
+0000002331 00000 n
+0000002493 00000 n
+0000083699 00000 n
+0000886344 00000 n
+0000002539 00000 n
+0000002615 00000 n
+0000083760 00000 n
+0000886233 00000 n
+0000002666 00000 n
+0000002949 00000 n
+0000083821 00000 n
+0000886159 00000 n
+0000003005 00000 n
+0000003129 00000 n
+0000089067 00000 n
+0000886085 00000 n
+0000003185 00000 n
+0000003312 00000 n
+0000089127 00000 n
+0000885998 00000 n
+0000003363 00000 n
+0000003612 00000 n
+0000095135 00000 n
+0000885887 00000 n
+0000003663 00000 n
+0000003894 00000 n
+0000095196 00000 n
+0000885813 00000 n
+0000003950 00000 n
+0000004120 00000 n
+0000102627 00000 n
+0000885726 00000 n
+0000004176 00000 n
+0000004431 00000 n
+0000102688 00000 n
+0000885639 00000 n
+0000004487 00000 n
+0000004622 00000 n
+0000109209 00000 n
+0000885552 00000 n
+0000004678 00000 n
+0000004815 00000 n
+0000109269 00000 n
+0000885478 00000 n
+0000004871 00000 n
+0000005053 00000 n
+0000125327 00000 n
+0000885350 00000 n
+0000005099 00000 n
+0000005409 00000 n
+0000125388 00000 n
+0000885275 00000 n
+0000005460 00000 n
+0000005569 00000 n
+0000131021 00000 n
+0000885184 00000 n
+0000005621 00000 n
+0000005881 00000 n
+0000155373 00000 n
+0000885092 00000 n
+0000005933 00000 n
+0000006188 00000 n
+0000166484 00000 n
+0000885014 00000 n
+0000006240 00000 n
+0000006423 00000 n
+0000166546 00000 n
+0000884921 00000 n
+0000006470 00000 n
+0000006613 00000 n
+0000166608 00000 n
+0000884788 00000 n
+0000006660 00000 n
+0000006821 00000 n
+0000166670 00000 n
+0000884709 00000 n
+0000006873 00000 n
+0000006960 00000 n
+0000171983 00000 n
+0000884616 00000 n
+0000007012 00000 n
+0000007112 00000 n
+0000176686 00000 n
+0000884537 00000 n
+0000007164 00000 n
+0000007330 00000 n
+0000184106 00000 n
+0000884443 00000 n
+0000007377 00000 n
+0000007563 00000 n
+0000204779 00000 n
+0000884310 00000 n
+0000007611 00000 n
+0000007784 00000 n
+0000217522 00000 n
+0000884231 00000 n
+0000007837 00000 n
+0000007987 00000 n
+0000237872 00000 n
+0000884138 00000 n
+0000008040 00000 n
+0000008267 00000 n
+0000248715 00000 n
+0000884045 00000 n
+0000008320 00000 n
+0000008655 00000 n
+0000248777 00000 n
+0000883952 00000 n
+0000008708 00000 n
+0000008902 00000 n
+0000253947 00000 n
+0000883859 00000 n
+0000008955 00000 n
+0000009161 00000 n
+0000260907 00000 n
+0000883780 00000 n
+0000009214 00000 n
+0000009408 00000 n
+0000260968 00000 n
+0000883686 00000 n
+0000009456 00000 n
+0000009728 00000 n
+0000268278 00000 n
+0000883553 00000 n
+0000009776 00000 n
+0000009881 00000 n
+0000285801 00000 n
+0000883474 00000 n
+0000009934 00000 n
+0000010159 00000 n
+0000285863 00000 n
+0000883381 00000 n
+0000010212 00000 n
+0000010590 00000 n
+0000302993 00000 n
+0000883288 00000 n
+0000010643 00000 n
+0000010987 00000 n
+0000309113 00000 n
+0000883209 00000 n
+0000011040 00000 n
+0000011310 00000 n
+0000314229 00000 n
+0000883076 00000 n
+0000011358 00000 n
+0000011572 00000 n
+0000314291 00000 n
+0000882997 00000 n
+0000011625 00000 n
+0000011763 00000 n
+0000314353 00000 n
+0000882904 00000 n
+0000011816 00000 n
+0000011913 00000 n
+0000314415 00000 n
+0000882811 00000 n
+0000011966 00000 n
+0000012104 00000 n
+0000324174 00000 n
+0000882718 00000 n
+0000012157 00000 n
+0000012368 00000 n
+0000332207 00000 n
+0000882639 00000 n
+0000012421 00000 n
+0000012668 00000 n
+0000332269 00000 n
+0000882505 00000 n
+0000012716 00000 n
+0000012818 00000 n
+0000332331 00000 n
+0000882426 00000 n
+0000012871 00000 n
+0000013021 00000 n
+0000341205 00000 n
+0000882333 00000 n
+0000013074 00000 n
+0000013219 00000 n
+0000341267 00000 n
+0000882240 00000 n
+0000013272 00000 n
+0000013497 00000 n
+0000346829 00000 n
+0000882147 00000 n
+0000013550 00000 n
+0000013772 00000 n
+0000346891 00000 n
+0000882054 00000 n
+0000013825 00000 n
+0000013958 00000 n
+0000346953 00000 n
+0000881961 00000 n
+0000014011 00000 n
+0000014126 00000 n
+0000353359 00000 n
+0000881868 00000 n
+0000014179 00000 n
+0000014350 00000 n
+0000359117 00000 n
+0000881775 00000 n
+0000014403 00000 n
+0000014538 00000 n
+0000359179 00000 n
+0000881682 00000 n
+0000014591 00000 n
+0000014744 00000 n
+0000359241 00000 n
+0000881589 00000 n
+0000014798 00000 n
+0000015024 00000 n
+0000365154 00000 n
+0000881510 00000 n
+0000015078 00000 n
+0000015271 00000 n
+0000365216 00000 n
+0000881377 00000 n
+0000015319 00000 n
+0000015495 00000 n
+0000365277 00000 n
+0000881259 00000 n
+0000015548 00000 n
+0000015861 00000 n
+0000370974 00000 n
+0000881180 00000 n
+0000015919 00000 n
+0000016059 00000 n
+0000371036 00000 n
+0000881101 00000 n
+0000016117 00000 n
+0000016283 00000 n
+0000378798 00000 n
+0000881008 00000 n
+0000016336 00000 n
+0000016563 00000 n
+0000391619 00000 n
+0000880915 00000 n
+0000016616 00000 n
+0000016919 00000 n
+0000391681 00000 n
+0000880836 00000 n
+0000016972 00000 n
+0000017267 00000 n
+0000396354 00000 n
+0000880742 00000 n
+0000017315 00000 n
+0000017463 00000 n
+0000410316 00000 n
+0000880609 00000 n
+0000017511 00000 n
+0000017628 00000 n
+0000410378 00000 n
+0000880530 00000 n
+0000017681 00000 n
+0000017783 00000 n
+0000410440 00000 n
+0000880437 00000 n
+0000017836 00000 n
+0000017946 00000 n
+0000415946 00000 n
+0000880344 00000 n
+0000017999 00000 n
0000018189 00000 n
-0000018258 00000 n
-0000416757 00000 n
-0000892663 00000 n
-0000018311 00000 n
-0000018622 00000 n
-0000420755 00000 n
-0000892570 00000 n
-0000018675 00000 n
-0000018800 00000 n
-0000420817 00000 n
-0000892477 00000 n
-0000018853 00000 n
-0000018996 00000 n
-0000444599 00000 n
-0000892384 00000 n
-0000019049 00000 n
-0000019141 00000 n
-0000444661 00000 n
-0000892291 00000 n
-0000019194 00000 n
-0000019436 00000 n
-0000455498 00000 n
-0000892198 00000 n
-0000019489 00000 n
-0000019581 00000 n
-0000455560 00000 n
-0000892105 00000 n
-0000019634 00000 n
-0000019759 00000 n
-0000474179 00000 n
-0000892012 00000 n
-0000019812 00000 n
-0000020029 00000 n
-0000492045 00000 n
-0000891919 00000 n
-0000020082 00000 n
-0000020352 00000 n
-0000495524 00000 n
-0000891840 00000 n
-0000020406 00000 n
-0000020541 00000 n
-0000498042 00000 n
-0000891746 00000 n
-0000020589 00000 n
-0000020653 00000 n
-0000548600 00000 n
-0000891666 00000 n
-0000020701 00000 n
-0000020755 00000 n
-0000030887 00000 n
-0000031053 00000 n
-0000031415 00000 n
-0000020807 00000 n
-0000031291 00000 n
-0000031353 00000 n
-0000752519 00000 n
-0000747907 00000 n
-0000745454 00000 n
-0000740039 00000 n
-0000736693 00000 n
-0000734061 00000 n
-0000729098 00000 n
-0000726391 00000 n
-0000888099 00000 n
-0000888827 00000 n
-0000889407 00000 n
-0000888682 00000 n
-0000888391 00000 n
-0000889550 00000 n
-0000716233 00000 n
-0000889118 00000 n
-0000705130 00000 n
-0000700515 00000 n
-0000690446 00000 n
-0000682717 00000 n
-0000678322 00000 n
-0000672456 00000 n
-0000664034 00000 n
-0000661150 00000 n
-0000657843 00000 n
-0000648456 00000 n
-0000644994 00000 n
-0000890124 00000 n
-0000031024 00000 n
-0000036006 00000 n
-0000041318 00000 n
-0000036347 00000 n
-0000035840 00000 n
-0000031877 00000 n
-0000036165 00000 n
-0000636227 00000 n
-0000627576 00000 n
-0000889693 00000 n
-0000035977 00000 n
-0000041850 00000 n
-0000041152 00000 n
-0000036666 00000 n
-0000041472 00000 n
-0000888245 00000 n
-0000041594 00000 n
-0000041658 00000 n
-0000041722 00000 n
-0000041786 00000 n
-0000624111 00000 n
-0000041289 00000 n
-0000048304 00000 n
-0000048459 00000 n
-0000048800 00000 n
-0000048130 00000 n
-0000042208 00000 n
-0000048616 00000 n
-0000888537 00000 n
-0000048267 00000 n
-0000055321 00000 n
-0000055473 00000 n
-0000054221 00000 n
-0000054380 00000 n
-0000054540 00000 n
-0000054694 00000 n
-0000054847 00000 n
-0000055001 00000 n
-0000055161 00000 n
-0000060953 00000 n
-0000061112 00000 n
-0000055687 00000 n
-0000053991 00000 n
-0000049080 00000 n
-0000055625 00000 n
-0000054128 00000 n
-0000061271 00000 n
-0000061429 00000 n
-0000061587 00000 n
-0000061742 00000 n
-0000062082 00000 n
-0000060747 00000 n
-0000055967 00000 n
-0000061898 00000 n
-0000060884 00000 n
-0000067780 00000 n
-0000067475 00000 n
-0000062271 00000 n
-0000067596 00000 n
-0000072636 00000 n
-0000072392 00000 n
-0000068034 00000 n
-0000072513 00000 n
-0000076437 00000 n
-0000076071 00000 n
-0000072851 00000 n
-0000076192 00000 n
-0000081426 00000 n
-0000081579 00000 n
-0000081743 00000 n
-0000082081 00000 n
-0000081244 00000 n
-0000076626 00000 n
-0000081897 00000 n
-0000618786 00000 n
-0000081381 00000 n
-0000086810 00000 n
-0000086964 00000 n
-0000087118 00000 n
-0000087282 00000 n
-0000087436 00000 n
-0000087723 00000 n
-0000086612 00000 n
-0000082296 00000 n
-0000087600 00000 n
-0000890277 00000 n
-0000086749 00000 n
-0000094048 00000 n
-0000094208 00000 n
-0000094367 00000 n
-0000094527 00000 n
-0000094930 00000 n
-0000093858 00000 n
-0000087977 00000 n
-0000094685 00000 n
-0000888972 00000 n
-0000093995 00000 n
-0000101008 00000 n
-0000101167 00000 n
-0000100689 00000 n
-0000100848 00000 n
-0000101447 00000 n
-0000100499 00000 n
-0000095210 00000 n
-0000101325 00000 n
-0000100636 00000 n
-0000106601 00000 n
-0000106357 00000 n
-0000101701 00000 n
-0000106478 00000 n
-0000111067 00000 n
-0000111284 00000 n
-0000110901 00000 n
-0000106868 00000 n
-0000111222 00000 n
-0000111038 00000 n
-0000118609 00000 n
-0000118304 00000 n
-0000111512 00000 n
-0000118425 00000 n
-0000124293 00000 n
-0000123809 00000 n
-0000123973 00000 n
-0000124133 00000 n
-0000124574 00000 n
-0000123619 00000 n
-0000118837 00000 n
-0000124451 00000 n
-0000123756 00000 n
-0000129768 00000 n
-0000129922 00000 n
-0000130144 00000 n
-0000129594 00000 n
-0000124841 00000 n
-0000130082 00000 n
-0000129731 00000 n
-0000135658 00000 n
-0000135872 00000 n
-0000135492 00000 n
-0000130359 00000 n
-0000135810 00000 n
-0000135629 00000 n
-0000141474 00000 n
-0000148126 00000 n
-0000141693 00000 n
-0000141308 00000 n
-0000136113 00000 n
-0000141631 00000 n
-0000141445 00000 n
-0000148404 00000 n
-0000147960 00000 n
-0000141908 00000 n
-0000148280 00000 n
-0000890430 00000 n
-0000148097 00000 n
-0000153749 00000 n
-0000153963 00000 n
-0000153583 00000 n
-0000148671 00000 n
-0000153901 00000 n
-0000153720 00000 n
-0000159105 00000 n
-0000159259 00000 n
-0000164630 00000 n
-0000159729 00000 n
-0000158931 00000 n
-0000154217 00000 n
-0000159419 00000 n
-0000159068 00000 n
-0000164783 00000 n
-0000165059 00000 n
-0000164456 00000 n
-0000159970 00000 n
-0000164935 00000 n
-0000164593 00000 n
-0000169753 00000 n
-0000169508 00000 n
-0000165339 00000 n
-0000169629 00000 n
-0000176408 00000 n
-0000176573 00000 n
-0000176732 00000 n
-0000176891 00000 n
-0000184849 00000 n
-0000177169 00000 n
-0000176218 00000 n
-0000170033 00000 n
-0000177045 00000 n
-0000176355 00000 n
-0000184371 00000 n
-0000184531 00000 n
-0000184695 00000 n
-0000197299 00000 n
-0000185066 00000 n
-0000184181 00000 n
-0000177384 00000 n
-0000185004 00000 n
-0000184318 00000 n
-0000197459 00000 n
-0000197618 00000 n
-0000197900 00000 n
-0000197117 00000 n
-0000185346 00000 n
-0000197776 00000 n
-0000614397 00000 n
-0000197254 00000 n
-0000210365 00000 n
-0000210640 00000 n
-0000210199 00000 n
-0000198206 00000 n
-0000210516 00000 n
-0000210336 00000 n
-0000230976 00000 n
-0000230731 00000 n
-0000210907 00000 n
-0000230852 00000 n
-0000241375 00000 n
-0000241535 00000 n
-0000246396 00000 n
-0000241881 00000 n
-0000241201 00000 n
-0000231282 00000 n
-0000241695 00000 n
-0000890583 00000 n
-0000241338 00000 n
-0000246555 00000 n
-0000246709 00000 n
-0000247053 00000 n
-0000246214 00000 n
-0000242135 00000 n
-0000246929 00000 n
-0000611862 00000 n
-0000246351 00000 n
-0000253729 00000 n
-0000254073 00000 n
-0000253563 00000 n
-0000247320 00000 n
-0000253887 00000 n
-0000253700 00000 n
-0000260151 00000 n
-0000260312 00000 n
-0000260473 00000 n
-0000260627 00000 n
-0000260786 00000 n
-0000261100 00000 n
-0000260945 00000 n
-0000261381 00000 n
-0000259937 00000 n
-0000254392 00000 n
-0000261257 00000 n
-0000889981 00000 n
-0000260074 00000 n
-0000278459 00000 n
-0000278618 00000 n
-0000278964 00000 n
-0000278285 00000 n
-0000261713 00000 n
-0000278778 00000 n
-0000278422 00000 n
-0000284877 00000 n
-0000285032 00000 n
-0000285249 00000 n
-0000284703 00000 n
-0000279218 00000 n
-0000285187 00000 n
-0000284840 00000 n
-0000290121 00000 n
-0000290281 00000 n
-0000290441 00000 n
-0000290663 00000 n
-0000289939 00000 n
-0000285464 00000 n
-0000290601 00000 n
-0000290076 00000 n
-0000295840 00000 n
-0000296158 00000 n
-0000295674 00000 n
-0000290943 00000 n
-0000296034 00000 n
-0000295811 00000 n
-0000301398 00000 n
-0000301552 00000 n
-0000301716 00000 n
-0000301870 00000 n
-0000306846 00000 n
-0000307006 00000 n
-0000302271 00000 n
-0000301208 00000 n
-0000296464 00000 n
-0000302023 00000 n
-0000301345 00000 n
-0000307166 00000 n
-0000307320 00000 n
-0000307914 00000 n
-0000306656 00000 n
-0000302499 00000 n
-0000307474 00000 n
-0000307660 00000 n
-0000608799 00000 n
-0000307723 00000 n
-0000307787 00000 n
-0000307850 00000 n
-0000306793 00000 n
-0000315737 00000 n
-0000312156 00000 n
-0000312316 00000 n
-0000312534 00000 n
-0000311982 00000 n
-0000308116 00000 n
-0000312472 00000 n
-0000890736 00000 n
-0000312119 00000 n
-0000316243 00000 n
-0000315554 00000 n
-0000312762 00000 n
-0000315675 00000 n
-0000315798 00000 n
-0000315862 00000 n
-0000315926 00000 n
-0000315990 00000 n
-0000316054 00000 n
-0000316118 00000 n
-0000320309 00000 n
-0000320469 00000 n
-0000320691 00000 n
-0000320135 00000 n
-0000316458 00000 n
-0000320629 00000 n
-0000320272 00000 n
-0000324190 00000 n
-0000324350 00000 n
-0000324509 00000 n
-0000324668 00000 n
-0000324831 00000 n
-0000325242 00000 n
-0000323992 00000 n
-0000320867 00000 n
-0000324995 00000 n
-0000324129 00000 n
-0000334326 00000 n
-0000333957 00000 n
-0000325483 00000 n
-0000334078 00000 n
-0000339660 00000 n
-0000339996 00000 n
-0000339494 00000 n
-0000334593 00000 n
-0000339810 00000 n
-0000889838 00000 n
-0000339631 00000 n
-0000345244 00000 n
-0000345399 00000 n
-0000345553 00000 n
-0000345711 00000 n
-0000345866 00000 n
-0000346144 00000 n
-0000345046 00000 n
-0000340341 00000 n
-0000346020 00000 n
-0000887953 00000 n
-0000345183 00000 n
-0000351367 00000 n
-0000351526 00000 n
-0000357402 00000 n
-0000351990 00000 n
-0000351193 00000 n
-0000346437 00000 n
-0000351680 00000 n
-0000351330 00000 n
-0000357592 00000 n
-0000357745 00000 n
-0000357907 00000 n
-0000358058 00000 n
-0000358394 00000 n
-0000357204 00000 n
-0000352257 00000 n
-0000358208 00000 n
-0000357341 00000 n
-0000362948 00000 n
-0000363109 00000 n
-0000363270 00000 n
-0000363615 00000 n
-0000362766 00000 n
-0000358700 00000 n
-0000363429 00000 n
-0000362903 00000 n
-0000371049 00000 n
-0000371327 00000 n
-0000370883 00000 n
-0000363830 00000 n
-0000371203 00000 n
-0000890889 00000 n
-0000371020 00000 n
-0000378746 00000 n
-0000379027 00000 n
-0000378580 00000 n
-0000371607 00000 n
-0000378903 00000 n
-0000606323 00000 n
-0000378717 00000 n
-0000384356 00000 n
-0000384639 00000 n
-0000384190 00000 n
-0000379294 00000 n
-0000384515 00000 n
-0000384327 00000 n
-0000388656 00000 n
-0000388939 00000 n
-0000388490 00000 n
-0000384867 00000 n
-0000388815 00000 n
-0000388627 00000 n
-0000401970 00000 n
-0000407589 00000 n
-0000407748 00000 n
-0000402380 00000 n
-0000401804 00000 n
-0000389180 00000 n
-0000402134 00000 n
-0000401941 00000 n
-0000407907 00000 n
-0000407425 00000 n
-0000416000 00000 n
-0000416164 00000 n
-0000408326 00000 n
-0000407235 00000 n
-0000402634 00000 n
-0000408141 00000 n
-0000603838 00000 n
-0000407372 00000 n
-0000408593 00000 n
-0000408911 00000 n
-0000409237 00000 n
-0000409441 00000 n
-0000409919 00000 n
-0000410263 00000 n
-0000410467 00000 n
-0000416327 00000 n
-0000416480 00000 n
-0000416819 00000 n
-0000415810 00000 n
-0000411109 00000 n
-0000416633 00000 n
-0000415947 00000 n
-0000420383 00000 n
-0000420538 00000 n
-0000420879 00000 n
-0000420209 00000 n
-0000417114 00000 n
-0000420693 00000 n
-0000420346 00000 n
-0000424521 00000 n
-0000424210 00000 n
-0000421094 00000 n
-0000424331 00000 n
-0000424393 00000 n
-0000424457 00000 n
-0000444723 00000 n
-0000444416 00000 n
-0000424697 00000 n
-0000444537 00000 n
-0000450774 00000 n
-0000450591 00000 n
-0000444990 00000 n
-0000450712 00000 n
-0000891042 00000 n
-0000455622 00000 n
-0000455315 00000 n
-0000451067 00000 n
-0000455436 00000 n
-0000459242 00000 n
-0000459059 00000 n
-0000455837 00000 n
-0000459180 00000 n
-0000462755 00000 n
-0000462572 00000 n
-0000459483 00000 n
-0000462693 00000 n
-0000467129 00000 n
-0000466946 00000 n
-0000462996 00000 n
-0000467067 00000 n
-0000473955 00000 n
-0000474241 00000 n
-0000473789 00000 n
-0000467357 00000 n
-0000474117 00000 n
-0000473926 00000 n
-0000479923 00000 n
-0000479740 00000 n
-0000474573 00000 n
-0000479861 00000 n
-0000492107 00000 n
-0000491862 00000 n
-0000480138 00000 n
-0000491983 00000 n
-0000495586 00000 n
-0000495341 00000 n
-0000492348 00000 n
-0000495462 00000 n
-0000498104 00000 n
-0000497859 00000 n
-0000495736 00000 n
-0000497980 00000 n
-0000500826 00000 n
-0000500643 00000 n
-0000498306 00000 n
-0000500764 00000 n
-0000891195 00000 n
-0000503630 00000 n
-0000503447 00000 n
-0000500989 00000 n
-0000503568 00000 n
-0000506707 00000 n
-0000506524 00000 n
-0000503793 00000 n
-0000506645 00000 n
-0000509665 00000 n
-0000509482 00000 n
-0000506883 00000 n
-0000509603 00000 n
-0000512559 00000 n
-0000512376 00000 n
-0000509854 00000 n
-0000512497 00000 n
-0000516281 00000 n
-0000516098 00000 n
-0000512735 00000 n
-0000516219 00000 n
-0000519318 00000 n
-0000519135 00000 n
-0000516483 00000 n
-0000519256 00000 n
-0000524073 00000 n
-0000523890 00000 n
-0000519533 00000 n
-0000524011 00000 n
-0000889263 00000 n
-0000525747 00000 n
-0000525564 00000 n
-0000524353 00000 n
-0000525685 00000 n
-0000530465 00000 n
-0000530616 00000 n
-0000530768 00000 n
-0000530920 00000 n
-0000531072 00000 n
-0000531224 00000 n
-0000531376 00000 n
-0000531527 00000 n
-0000531678 00000 n
-0000531830 00000 n
-0000531982 00000 n
-0000532133 00000 n
-0000532281 00000 n
-0000532430 00000 n
-0000532582 00000 n
-0000532734 00000 n
-0000532884 00000 n
-0000533036 00000 n
-0000533188 00000 n
-0000533340 00000 n
-0000533491 00000 n
-0000533643 00000 n
-0000533795 00000 n
-0000533946 00000 n
-0000534096 00000 n
-0000534247 00000 n
-0000534397 00000 n
-0000534548 00000 n
-0000534699 00000 n
-0000534850 00000 n
-0000535002 00000 n
-0000535153 00000 n
-0000535304 00000 n
-0000535456 00000 n
-0000535608 00000 n
-0000535760 00000 n
-0000535911 00000 n
-0000536063 00000 n
-0000536215 00000 n
-0000536366 00000 n
-0000536517 00000 n
-0000536669 00000 n
-0000536821 00000 n
-0000536972 00000 n
-0000537124 00000 n
-0000537276 00000 n
-0000537427 00000 n
-0000537579 00000 n
-0000537731 00000 n
-0000537883 00000 n
-0000538034 00000 n
-0000538186 00000 n
-0000538338 00000 n
-0000538490 00000 n
-0000538641 00000 n
-0000538793 00000 n
-0000538945 00000 n
-0000539097 00000 n
-0000539247 00000 n
-0000539397 00000 n
-0000539545 00000 n
-0000539697 00000 n
-0000539847 00000 n
-0000539998 00000 n
-0000540151 00000 n
-0000540303 00000 n
-0000540456 00000 n
-0000540609 00000 n
-0000540762 00000 n
-0000540915 00000 n
-0000541068 00000 n
-0000541221 00000 n
-0000541371 00000 n
-0000541524 00000 n
-0000541676 00000 n
-0000541828 00000 n
-0000541980 00000 n
-0000542132 00000 n
-0000542285 00000 n
-0000542438 00000 n
-0000542590 00000 n
-0000542743 00000 n
-0000542896 00000 n
-0000543048 00000 n
-0000543201 00000 n
-0000543354 00000 n
-0000543506 00000 n
-0000543658 00000 n
-0000543811 00000 n
-0000543963 00000 n
-0000544115 00000 n
-0000544268 00000 n
-0000544421 00000 n
-0000544574 00000 n
-0000544727 00000 n
-0000544880 00000 n
-0000545032 00000 n
-0000545184 00000 n
-0000545337 00000 n
-0000545489 00000 n
-0000545642 00000 n
-0000545794 00000 n
-0000545947 00000 n
-0000546100 00000 n
-0000546252 00000 n
-0000546404 00000 n
-0000546557 00000 n
-0000546710 00000 n
-0000546863 00000 n
-0000547016 00000 n
-0000547168 00000 n
-0000547321 00000 n
-0000547474 00000 n
-0000547627 00000 n
-0000547779 00000 n
-0000547931 00000 n
-0000548083 00000 n
-0000548236 00000 n
-0000548385 00000 n
-0000553657 00000 n
-0000553809 00000 n
-0000548663 00000 n
-0000529294 00000 n
-0000525910 00000 n
-0000548536 00000 n
-0000529435 00000 n
-0000553962 00000 n
-0000554114 00000 n
-0000554266 00000 n
-0000554419 00000 n
-0000554572 00000 n
-0000554724 00000 n
-0000554877 00000 n
-0000555030 00000 n
-0000555183 00000 n
-0000555336 00000 n
-0000555487 00000 n
-0000555639 00000 n
-0000555792 00000 n
-0000555945 00000 n
-0000556098 00000 n
-0000556250 00000 n
-0000556402 00000 n
-0000556553 00000 n
-0000556704 00000 n
-0000556857 00000 n
-0000557010 00000 n
-0000557163 00000 n
-0000557316 00000 n
-0000557469 00000 n
-0000557622 00000 n
-0000557775 00000 n
-0000557928 00000 n
-0000558080 00000 n
-0000558232 00000 n
-0000558385 00000 n
-0000558538 00000 n
-0000558691 00000 n
-0000558844 00000 n
-0000558997 00000 n
-0000559150 00000 n
-0000559303 00000 n
-0000559456 00000 n
-0000559609 00000 n
-0000559760 00000 n
-0000559913 00000 n
-0000560066 00000 n
-0000560219 00000 n
-0000560371 00000 n
-0000560523 00000 n
-0000560675 00000 n
-0000560827 00000 n
-0000560980 00000 n
-0000561133 00000 n
-0000561286 00000 n
-0000561438 00000 n
-0000561589 00000 n
-0000561739 00000 n
-0000561890 00000 n
-0000562043 00000 n
-0000562196 00000 n
-0000562348 00000 n
-0000562501 00000 n
-0000562654 00000 n
-0000562807 00000 n
-0000562960 00000 n
-0000563113 00000 n
-0000563265 00000 n
-0000563417 00000 n
-0000563570 00000 n
-0000563723 00000 n
-0000563875 00000 n
-0000564028 00000 n
-0000564181 00000 n
-0000564334 00000 n
-0000564486 00000 n
-0000564639 00000 n
-0000564792 00000 n
-0000564945 00000 n
-0000565097 00000 n
-0000565250 00000 n
-0000565403 00000 n
-0000565556 00000 n
-0000565709 00000 n
-0000565861 00000 n
-0000566013 00000 n
-0000566166 00000 n
-0000566319 00000 n
-0000566470 00000 n
-0000566622 00000 n
-0000566775 00000 n
-0000566928 00000 n
-0000567080 00000 n
-0000567231 00000 n
-0000567381 00000 n
-0000567534 00000 n
-0000567687 00000 n
-0000567840 00000 n
-0000567992 00000 n
-0000568144 00000 n
-0000568297 00000 n
-0000568450 00000 n
-0000568603 00000 n
-0000568756 00000 n
-0000568908 00000 n
-0000569061 00000 n
-0000569214 00000 n
-0000569366 00000 n
-0000569518 00000 n
-0000569671 00000 n
-0000569824 00000 n
-0000569977 00000 n
-0000570129 00000 n
-0000570280 00000 n
-0000570432 00000 n
-0000570584 00000 n
-0000570735 00000 n
-0000573776 00000 n
-0000573928 00000 n
-0000570950 00000 n
-0000552476 00000 n
-0000548853 00000 n
-0000570886 00000 n
-0000891349 00000 n
-0000552618 00000 n
-0000574081 00000 n
-0000574234 00000 n
-0000574387 00000 n
-0000574538 00000 n
-0000574690 00000 n
-0000574842 00000 n
-0000574995 00000 n
-0000575148 00000 n
-0000575301 00000 n
-0000575454 00000 n
-0000575607 00000 n
-0000575760 00000 n
-0000575913 00000 n
-0000576066 00000 n
-0000576219 00000 n
-0000576371 00000 n
-0000576524 00000 n
-0000576677 00000 n
-0000576829 00000 n
-0000576982 00000 n
-0000577135 00000 n
-0000577288 00000 n
-0000577440 00000 n
-0000577593 00000 n
-0000577745 00000 n
-0000577898 00000 n
-0000578051 00000 n
-0000578202 00000 n
-0000578354 00000 n
-0000578507 00000 n
-0000578660 00000 n
-0000578812 00000 n
-0000578964 00000 n
-0000579116 00000 n
-0000579269 00000 n
-0000579422 00000 n
-0000579575 00000 n
-0000579728 00000 n
-0000579881 00000 n
-0000580033 00000 n
-0000580186 00000 n
-0000580338 00000 n
-0000580490 00000 n
-0000580642 00000 n
-0000580795 00000 n
-0000580948 00000 n
-0000581100 00000 n
-0000581253 00000 n
-0000581406 00000 n
-0000581558 00000 n
-0000581711 00000 n
-0000581927 00000 n
-0000573135 00000 n
-0000571127 00000 n
-0000581863 00000 n
-0000573277 00000 n
-0000584796 00000 n
-0000584950 00000 n
-0000585104 00000 n
-0000585258 00000 n
-0000585412 00000 n
-0000585571 00000 n
-0000585730 00000 n
-0000585889 00000 n
-0000586048 00000 n
-0000586206 00000 n
-0000586365 00000 n
-0000586517 00000 n
-0000586676 00000 n
-0000586840 00000 n
-0000587005 00000 n
-0000587164 00000 n
-0000587323 00000 n
-0000587487 00000 n
-0000587652 00000 n
-0000587817 00000 n
-0000587982 00000 n
-0000588147 00000 n
-0000588300 00000 n
-0000588458 00000 n
-0000588617 00000 n
-0000588776 00000 n
-0000588934 00000 n
-0000589087 00000 n
-0000589241 00000 n
-0000589400 00000 n
-0000589559 00000 n
-0000589718 00000 n
-0000589872 00000 n
-0000590027 00000 n
-0000590187 00000 n
-0000590347 00000 n
-0000590507 00000 n
-0000590667 00000 n
-0000590827 00000 n
-0000590987 00000 n
-0000591142 00000 n
-0000591297 00000 n
-0000591457 00000 n
-0000591617 00000 n
-0000591776 00000 n
-0000591935 00000 n
-0000594827 00000 n
-0000592152 00000 n
-0000584218 00000 n
-0000582104 00000 n
-0000592088 00000 n
-0000584360 00000 n
-0000594987 00000 n
-0000595146 00000 n
-0000595305 00000 n
-0000595464 00000 n
-0000595624 00000 n
-0000595779 00000 n
-0000595939 00000 n
-0000596098 00000 n
-0000596258 00000 n
-0000596417 00000 n
-0000596576 00000 n
-0000596735 00000 n
-0000596895 00000 n
-0000597055 00000 n
-0000597214 00000 n
-0000597375 00000 n
-0000597536 00000 n
-0000597691 00000 n
-0000597851 00000 n
-0000598017 00000 n
-0000598183 00000 n
-0000598343 00000 n
-0000598503 00000 n
-0000598662 00000 n
-0000598816 00000 n
-0000598971 00000 n
-0000599131 00000 n
-0000599291 00000 n
-0000599451 00000 n
-0000599611 00000 n
-0000599765 00000 n
-0000599925 00000 n
-0000600085 00000 n
-0000600245 00000 n
-0000600405 00000 n
-0000600565 00000 n
-0000600725 00000 n
-0000600885 00000 n
-0000601045 00000 n
-0000601205 00000 n
-0000601365 00000 n
-0000601520 00000 n
-0000601738 00000 n
-0000594276 00000 n
-0000592303 00000 n
-0000601674 00000 n
-0000594418 00000 n
-0000602157 00000 n
-0000602184 00000 n
-0000603139 00000 n
-0000602240 00000 n
-0000602340 00000 n
-0000603381 00000 n
-0000603995 00000 n
-0000604199 00000 n
-0000605611 00000 n
-0000604274 00000 n
-0000604375 00000 n
-0000605853 00000 n
-0000606481 00000 n
-0000606686 00000 n
-0000606831 00000 n
-0000606928 00000 n
-0000608098 00000 n
-0000606994 00000 n
-0000607091 00000 n
-0000608341 00000 n
-0000608956 00000 n
-0000609160 00000 n
-0000609264 00000 n
-0000611119 00000 n
-0000609422 00000 n
-0000609526 00000 n
-0000611359 00000 n
-0000612019 00000 n
-0000612223 00000 n
-0000613678 00000 n
-0000612302 00000 n
-0000612404 00000 n
-0000613926 00000 n
-0000614560 00000 n
-0000614770 00000 n
-0000614815 00000 n
-0000617971 00000 n
-0000615090 00000 n
-0000615196 00000 n
-0000618219 00000 n
-0000618949 00000 n
-0000619159 00000 n
-0000619184 00000 n
-0000623277 00000 n
-0000619526 00000 n
-0000619636 00000 n
-0000623520 00000 n
-0000624268 00000 n
-0000624472 00000 n
-0000624498 00000 n
-0000624750 00000 n
-0000626832 00000 n
-0000624903 00000 n
-0000625009 00000 n
-0000627071 00000 n
-0000627731 00000 n
-0000627933 00000 n
-0000635266 00000 n
-0000628362 00000 n
-0000628474 00000 n
-0000635506 00000 n
-0000636383 00000 n
-0000636586 00000 n
-0000643993 00000 n
-0000637030 00000 n
-0000637138 00000 n
-0000644233 00000 n
-0000645151 00000 n
-0000645355 00000 n
-0000647667 00000 n
-0000645629 00000 n
-0000645735 00000 n
-0000647907 00000 n
-0000648613 00000 n
-0000648817 00000 n
-0000656852 00000 n
-0000649274 00000 n
-0000649386 00000 n
-0000657093 00000 n
-0000658001 00000 n
-0000658206 00000 n
-0000660412 00000 n
-0000658332 00000 n
-0000658440 00000 n
-0000660654 00000 n
-0000661308 00000 n
-0000661513 00000 n
-0000663301 00000 n
-0000661624 00000 n
-0000661728 00000 n
-0000663548 00000 n
-0000664197 00000 n
-0000664407 00000 n
-0000671498 00000 n
-0000664831 00000 n
-0000664946 00000 n
-0000671738 00000 n
-0000672612 00000 n
-0000672815 00000 n
-0000677467 00000 n
-0000673158 00000 n
-0000673269 00000 n
-0000677716 00000 n
-0000678486 00000 n
-0000678697 00000 n
-0000681935 00000 n
-0000678893 00000 n
-0000679000 00000 n
-0000682177 00000 n
-0000682875 00000 n
-0000683080 00000 n
-0000689562 00000 n
-0000683462 00000 n
-0000683573 00000 n
-0000689806 00000 n
-0000690604 00000 n
-0000690809 00000 n
-0000699455 00000 n
-0000691246 00000 n
-0000691360 00000 n
-0000699696 00000 n
-0000700673 00000 n
-0000700878 00000 n
-0000704279 00000 n
-0000701238 00000 n
-0000701345 00000 n
-0000704520 00000 n
-0000705288 00000 n
-0000705493 00000 n
-0000705728 00000 n
-0000715151 00000 n
-0000706277 00000 n
-0000706406 00000 n
-0000715393 00000 n
-0000716392 00000 n
-0000716598 00000 n
-0000716705 00000 n
-0000716984 00000 n
-0000717091 00000 n
-0000717153 00000 n
-0000717348 00000 n
-0000717717 00000 n
-0000725376 00000 n
-0000718160 00000 n
-0000718268 00000 n
-0000725616 00000 n
-0000726548 00000 n
-0000726752 00000 n
-0000728356 00000 n
-0000726909 00000 n
-0000727015 00000 n
-0000728596 00000 n
-0000729255 00000 n
-0000729459 00000 n
-0000733245 00000 n
-0000729751 00000 n
-0000729857 00000 n
-0000733486 00000 n
-0000734219 00000 n
-0000734424 00000 n
-0000735983 00000 n
-0000734517 00000 n
-0000734618 00000 n
-0000736222 00000 n
-0000736848 00000 n
-0000737050 00000 n
-0000739287 00000 n
-0000737229 00000 n
-0000737335 00000 n
-0000739528 00000 n
-0000740197 00000 n
-0000740402 00000 n
-0000744618 00000 n
-0000740737 00000 n
-0000740851 00000 n
-0000744860 00000 n
-0000745613 00000 n
-0000745819 00000 n
-0000747179 00000 n
-0000745942 00000 n
-0000746048 00000 n
-0000747420 00000 n
-0000748065 00000 n
-0000748270 00000 n
-0000751720 00000 n
-0000748532 00000 n
-0000748639 00000 n
-0000751962 00000 n
-0000752678 00000 n
-0000762130 00000 n
-0000752884 00000 n
-0000773554 00000 n
-0000762381 00000 n
-0000781242 00000 n
-0000774308 00000 n
-0000794019 00000 n
-0000781472 00000 n
-0000801490 00000 n
-0000794347 00000 n
-0000809623 00000 n
-0000801716 00000 n
-0000819550 00000 n
-0000809856 00000 n
-0000827462 00000 n
-0000819817 00000 n
-0000840172 00000 n
-0000827693 00000 n
-0000847572 00000 n
-0000840530 00000 n
-0000855457 00000 n
-0000847797 00000 n
-0000864698 00000 n
-0000855705 00000 n
-0000872650 00000 n
-0000865006 00000 n
-0000880190 00000 n
-0000872934 00000 n
-0000887704 00000 n
-0000880429 00000 n
-0000891458 00000 n
-0000891589 00000 n
-0000899947 00000 n
-0000900583 00000 n
-0000901223 00000 n
-0000901868 00000 n
-0000902648 00000 n
-0000903566 00000 n
-0000904449 00000 n
-0000904577 00000 n
-0000904617 00000 n
-0000904749 00000 n
+0000416008 00000 n
+0000880265 00000 n
+0000018242 00000 n
+0000018356 00000 n
+0000424218 00000 n
+0000880131 00000 n
+0000018404 00000 n
+0000018473 00000 n
+0000424280 00000 n
+0000880052 00000 n
+0000018526 00000 n
+0000018837 00000 n
+0000428174 00000 n
+0000879959 00000 n
+0000018890 00000 n
+0000019015 00000 n
+0000432723 00000 n
+0000879866 00000 n
+0000019068 00000 n
+0000019211 00000 n
+0000453164 00000 n
+0000879773 00000 n
+0000019264 00000 n
+0000019356 00000 n
+0000453226 00000 n
+0000879680 00000 n
+0000019409 00000 n
+0000019651 00000 n
+0000464096 00000 n
+0000879587 00000 n
+0000019704 00000 n
+0000019796 00000 n
+0000464158 00000 n
+0000879494 00000 n
+0000019849 00000 n
+0000019974 00000 n
+0000482449 00000 n
+0000879401 00000 n
+0000020027 00000 n
+0000020244 00000 n
+0000500242 00000 n
+0000879308 00000 n
+0000020297 00000 n
+0000020567 00000 n
+0000503718 00000 n
+0000879229 00000 n
+0000020621 00000 n
+0000020756 00000 n
+0000506404 00000 n
+0000879135 00000 n
+0000020804 00000 n
+0000020868 00000 n
+0000540724 00000 n
+0000879055 00000 n
+0000020916 00000 n
+0000020970 00000 n
+0000031193 00000 n
+0000031359 00000 n
+0000031680 00000 n
+0000021022 00000 n
+0000031556 00000 n
+0000031618 00000 n
+0000747343 00000 n
+0000742731 00000 n
+0000740278 00000 n
+0000735084 00000 n
+0000731738 00000 n
+0000729106 00000 n
+0000724143 00000 n
+0000721436 00000 n
+0000875656 00000 n
+0000876384 00000 n
+0000876820 00000 n
+0000876239 00000 n
+0000875948 00000 n
+0000876963 00000 n
+0000711278 00000 n
+0000876675 00000 n
+0000699960 00000 n
+0000695345 00000 n
+0000685276 00000 n
+0000677367 00000 n
+0000672972 00000 n
+0000667106 00000 n
+0000658307 00000 n
+0000655423 00000 n
+0000652116 00000 n
+0000642729 00000 n
+0000639267 00000 n
+0000877537 00000 n
+0000031330 00000 n
+0000036273 00000 n
+0000041584 00000 n
+0000036614 00000 n
+0000036107 00000 n
+0000032142 00000 n
+0000036432 00000 n
+0000630573 00000 n
+0000621681 00000 n
+0000877106 00000 n
+0000036244 00000 n
+0000042116 00000 n
+0000041418 00000 n
+0000036933 00000 n
+0000041738 00000 n
+0000875802 00000 n
+0000041860 00000 n
+0000041924 00000 n
+0000041988 00000 n
+0000042052 00000 n
+0000618216 00000 n
+0000041555 00000 n
+0000048703 00000 n
+0000048858 00000 n
+0000049198 00000 n
+0000048529 00000 n
+0000042474 00000 n
+0000049015 00000 n
+0000876094 00000 n
+0000048666 00000 n
+0000055993 00000 n
+0000056145 00000 n
+0000054575 00000 n
+0000054735 00000 n
+0000054895 00000 n
+0000055049 00000 n
+0000055203 00000 n
+0000055357 00000 n
+0000055517 00000 n
+0000055677 00000 n
+0000055835 00000 n
+0000056359 00000 n
+0000054329 00000 n
+0000049491 00000 n
+0000056297 00000 n
+0000054466 00000 n
+0000061457 00000 n
+0000061616 00000 n
+0000061775 00000 n
+0000061931 00000 n
+0000062272 00000 n
+0000061267 00000 n
+0000056639 00000 n
+0000062088 00000 n
+0000061404 00000 n
+0000068047 00000 n
+0000067742 00000 n
+0000062461 00000 n
+0000067863 00000 n
+0000073125 00000 n
+0000072881 00000 n
+0000068301 00000 n
+0000073002 00000 n
+0000077270 00000 n
+0000077026 00000 n
+0000073340 00000 n
+0000077147 00000 n
+0000083167 00000 n
+0000083319 00000 n
+0000083483 00000 n
+0000083882 00000 n
+0000082985 00000 n
+0000077459 00000 n
+0000083637 00000 n
+0000083122 00000 n
+0000089188 00000 n
+0000088884 00000 n
+0000084123 00000 n
+0000089005 00000 n
+0000612891 00000 n
+0000877690 00000 n
+0000094283 00000 n
+0000094437 00000 n
+0000094591 00000 n
+0000094755 00000 n
+0000094909 00000 n
+0000095257 00000 n
+0000094085 00000 n
+0000089403 00000 n
+0000095073 00000 n
+0000876529 00000 n
+0000094222 00000 n
+0000101928 00000 n
+0000102088 00000 n
+0000102247 00000 n
+0000102407 00000 n
+0000108832 00000 n
+0000108990 00000 n
+0000102749 00000 n
+0000101738 00000 n
+0000095550 00000 n
+0000102565 00000 n
+0000101875 00000 n
+0000108513 00000 n
+0000108672 00000 n
+0000109330 00000 n
+0000108323 00000 n
+0000103016 00000 n
+0000109147 00000 n
+0000108460 00000 n
+0000113808 00000 n
+0000113625 00000 n
+0000109571 00000 n
+0000113746 00000 n
+0000117949 00000 n
+0000118166 00000 n
+0000117783 00000 n
+0000114062 00000 n
+0000118104 00000 n
+0000117920 00000 n
+0000125449 00000 n
+0000125144 00000 n
+0000118342 00000 n
+0000125265 00000 n
+0000130801 00000 n
+0000130320 00000 n
+0000130483 00000 n
+0000130642 00000 n
+0000131083 00000 n
+0000130130 00000 n
+0000125729 00000 n
+0000130959 00000 n
+0000130267 00000 n
+0000136479 00000 n
+0000136633 00000 n
+0000136855 00000 n
+0000136305 00000 n
+0000131363 00000 n
+0000136793 00000 n
+0000136442 00000 n
+0000142536 00000 n
+0000142749 00000 n
+0000142370 00000 n
+0000137070 00000 n
+0000142687 00000 n
+0000142507 00000 n
+0000148604 00000 n
+0000148450 00000 n
+0000148823 00000 n
+0000148276 00000 n
+0000142990 00000 n
+0000148761 00000 n
+0000877843 00000 n
+0000148413 00000 n
+0000160839 00000 n
+0000155435 00000 n
+0000155190 00000 n
+0000149038 00000 n
+0000155311 00000 n
+0000161053 00000 n
+0000160673 00000 n
+0000155715 00000 n
+0000160991 00000 n
+0000160810 00000 n
+0000166112 00000 n
+0000166264 00000 n
+0000171616 00000 n
+0000166732 00000 n
+0000165938 00000 n
+0000161294 00000 n
+0000166422 00000 n
+0000166075 00000 n
+0000171769 00000 n
+0000172045 00000 n
+0000171442 00000 n
+0000166960 00000 n
+0000171921 00000 n
+0000171579 00000 n
+0000176748 00000 n
+0000176503 00000 n
+0000172325 00000 n
+0000176624 00000 n
+0000183407 00000 n
+0000183572 00000 n
+0000183731 00000 n
+0000183890 00000 n
+0000191785 00000 n
+0000184168 00000 n
+0000183217 00000 n
+0000177028 00000 n
+0000184044 00000 n
+0000183354 00000 n
+0000191307 00000 n
+0000191467 00000 n
+0000191631 00000 n
+0000204240 00000 n
+0000192004 00000 n
+0000191117 00000 n
+0000184383 00000 n
+0000191942 00000 n
+0000191254 00000 n
+0000204400 00000 n
+0000204559 00000 n
+0000204841 00000 n
+0000204058 00000 n
+0000192284 00000 n
+0000204717 00000 n
+0000608502 00000 n
+0000204195 00000 n
+0000217309 00000 n
+0000217584 00000 n
+0000217143 00000 n
+0000205147 00000 n
+0000217460 00000 n
+0000217280 00000 n
+0000237934 00000 n
+0000237689 00000 n
+0000217864 00000 n
+0000237810 00000 n
+0000877996 00000 n
+0000248333 00000 n
+0000248493 00000 n
+0000253352 00000 n
+0000248839 00000 n
+0000248159 00000 n
+0000238240 00000 n
+0000248653 00000 n
+0000248296 00000 n
+0000253511 00000 n
+0000253665 00000 n
+0000254009 00000 n
+0000253170 00000 n
+0000249093 00000 n
+0000253885 00000 n
+0000605967 00000 n
+0000253307 00000 n
+0000260687 00000 n
+0000261030 00000 n
+0000260521 00000 n
+0000254276 00000 n
+0000260845 00000 n
+0000260658 00000 n
+0000267111 00000 n
+0000267271 00000 n
+0000267431 00000 n
+0000267584 00000 n
+0000267744 00000 n
+0000268059 00000 n
+0000267904 00000 n
+0000268340 00000 n
+0000266897 00000 n
+0000261349 00000 n
+0000268216 00000 n
+0000877394 00000 n
+0000267034 00000 n
+0000285420 00000 n
+0000285579 00000 n
+0000285925 00000 n
+0000285246 00000 n
+0000268672 00000 n
+0000285739 00000 n
+0000285383 00000 n
+0000291810 00000 n
+0000291965 00000 n
+0000292182 00000 n
+0000291636 00000 n
+0000286179 00000 n
+0000292120 00000 n
+0000291773 00000 n
+0000297066 00000 n
+0000297226 00000 n
+0000297386 00000 n
+0000297608 00000 n
+0000296884 00000 n
+0000292397 00000 n
+0000297546 00000 n
+0000297021 00000 n
+0000302736 00000 n
+0000303055 00000 n
+0000302570 00000 n
+0000297888 00000 n
+0000302931 00000 n
+0000302707 00000 n
+0000308733 00000 n
+0000308887 00000 n
+0000309175 00000 n
+0000308559 00000 n
+0000303361 00000 n
+0000309051 00000 n
+0000308696 00000 n
+0000313236 00000 n
+0000313389 00000 n
+0000313541 00000 n
+0000313701 00000 n
+0000313861 00000 n
+0000314014 00000 n
+0000314475 00000 n
+0000313030 00000 n
+0000309390 00000 n
+0000314167 00000 n
+0000878149 00000 n
+0000313167 00000 n
+0000323602 00000 n
+0000319460 00000 n
+0000319619 00000 n
+0000320091 00000 n
+0000319286 00000 n
+0000314638 00000 n
+0000319774 00000 n
+0000319836 00000 n
+0000602904 00000 n
+0000319899 00000 n
+0000319963 00000 n
+0000320027 00000 n
+0000319423 00000 n
+0000324235 00000 n
+0000323419 00000 n
+0000320345 00000 n
+0000323540 00000 n
+0000323664 00000 n
+0000323728 00000 n
+0000323792 00000 n
+0000323856 00000 n
+0000323920 00000 n
+0000323983 00000 n
+0000324047 00000 n
+0000324110 00000 n
+0000331024 00000 n
+0000331184 00000 n
+0000327370 00000 n
+0000327187 00000 n
+0000324450 00000 n
+0000327308 00000 n
+0000331344 00000 n
+0000331504 00000 n
+0000331663 00000 n
+0000331822 00000 n
+0000331983 00000 n
+0000332393 00000 n
+0000330810 00000 n
+0000327546 00000 n
+0000332145 00000 n
+0000330947 00000 n
+0000341328 00000 n
+0000341022 00000 n
+0000332569 00000 n
+0000341143 00000 n
+0000346617 00000 n
+0000347015 00000 n
+0000346451 00000 n
+0000341647 00000 n
+0000346767 00000 n
+0000346588 00000 n
+0000352521 00000 n
+0000352676 00000 n
+0000352830 00000 n
+0000352988 00000 n
+0000353143 00000 n
+0000353421 00000 n
+0000352323 00000 n
+0000347308 00000 n
+0000353297 00000 n
+0000877251 00000 n
+0000875510 00000 n
+0000352460 00000 n
+0000358740 00000 n
+0000358900 00000 n
+0000359303 00000 n
+0000358566 00000 n
+0000353766 00000 n
+0000359055 00000 n
+0000358703 00000 n
+0000364587 00000 n
+0000364777 00000 n
+0000364930 00000 n
+0000365339 00000 n
+0000364405 00000 n
+0000359583 00000 n
+0000365092 00000 n
+0000364542 00000 n
+0000370609 00000 n
+0000370761 00000 n
+0000370287 00000 n
+0000370448 00000 n
+0000371098 00000 n
+0000370097 00000 n
+0000365658 00000 n
+0000370912 00000 n
+0000878302 00000 n
+0000370234 00000 n
+0000378424 00000 n
+0000378583 00000 n
+0000378860 00000 n
+0000378250 00000 n
+0000371339 00000 n
+0000378736 00000 n
+0000378387 00000 n
+0000384617 00000 n
+0000384838 00000 n
+0000384451 00000 n
+0000379114 00000 n
+0000384776 00000 n
+0000384588 00000 n
+0000391399 00000 n
+0000391743 00000 n
+0000391233 00000 n
+0000385079 00000 n
+0000391557 00000 n
+0000600428 00000 n
+0000391370 00000 n
+0000396132 00000 n
+0000396416 00000 n
+0000395966 00000 n
+0000391997 00000 n
+0000396292 00000 n
+0000396103 00000 n
+0000410090 00000 n
+0000410501 00000 n
+0000409924 00000 n
+0000396696 00000 n
+0000410254 00000 n
+0000410061 00000 n
+0000415331 00000 n
+0000415490 00000 n
+0000415649 00000 n
+0000416070 00000 n
+0000415149 00000 n
+0000410755 00000 n
+0000415884 00000 n
+0000597943 00000 n
+0000415286 00000 n
+0000423364 00000 n
+0000423528 00000 n
+0000423692 00000 n
+0000416337 00000 n
+0000416655 00000 n
+0000416981 00000 n
+0000417185 00000 n
+0000417663 00000 n
+0000418007 00000 n
+0000418211 00000 n
+0000423856 00000 n
+0000424006 00000 n
+0000424342 00000 n
+0000423166 00000 n
+0000418853 00000 n
+0000424156 00000 n
+0000423303 00000 n
+0000432351 00000 n
+0000432506 00000 n
+0000428236 00000 n
+0000427991 00000 n
+0000424650 00000 n
+0000428112 00000 n
+0000433039 00000 n
+0000432177 00000 n
+0000428412 00000 n
+0000432661 00000 n
+0000432785 00000 n
+0000432848 00000 n
+0000432911 00000 n
+0000432975 00000 n
+0000432314 00000 n
+0000453288 00000 n
+0000452981 00000 n
+0000433267 00000 n
+0000453102 00000 n
+0000878455 00000 n
+0000459350 00000 n
+0000459167 00000 n
+0000453555 00000 n
+0000459288 00000 n
+0000464220 00000 n
+0000463913 00000 n
+0000459643 00000 n
+0000464034 00000 n
+0000467862 00000 n
+0000467679 00000 n
+0000464435 00000 n
+0000467800 00000 n
+0000471292 00000 n
+0000471109 00000 n
+0000468103 00000 n
+0000471230 00000 n
+0000475664 00000 n
+0000475481 00000 n
+0000471533 00000 n
+0000475602 00000 n
+0000482227 00000 n
+0000482511 00000 n
+0000482061 00000 n
+0000475892 00000 n
+0000482387 00000 n
+0000482198 00000 n
+0000488152 00000 n
+0000487969 00000 n
+0000482843 00000 n
+0000488090 00000 n
+0000500304 00000 n
+0000500059 00000 n
+0000488367 00000 n
+0000500180 00000 n
+0000503780 00000 n
+0000503535 00000 n
+0000500545 00000 n
+0000503656 00000 n
+0000506466 00000 n
+0000506221 00000 n
+0000503930 00000 n
+0000506342 00000 n
+0000878608 00000 n
+0000509080 00000 n
+0000508897 00000 n
+0000506668 00000 n
+0000509018 00000 n
+0000511784 00000 n
+0000511601 00000 n
+0000509243 00000 n
+0000511722 00000 n
+0000514491 00000 n
+0000514308 00000 n
+0000511947 00000 n
+0000514429 00000 n
+0000517184 00000 n
+0000517001 00000 n
+0000514654 00000 n
+0000517122 00000 n
+0000519066 00000 n
+0000518883 00000 n
+0000517360 00000 n
+0000519004 00000 n
+0000523682 00000 n
+0000523832 00000 n
+0000523982 00000 n
+0000524132 00000 n
+0000524284 00000 n
+0000524436 00000 n
+0000524588 00000 n
+0000524740 00000 n
+0000524892 00000 n
+0000525043 00000 n
+0000525195 00000 n
+0000525346 00000 n
+0000525498 00000 n
+0000525649 00000 n
+0000525799 00000 n
+0000525951 00000 n
+0000526103 00000 n
+0000526255 00000 n
+0000526405 00000 n
+0000526555 00000 n
+0000526707 00000 n
+0000526859 00000 n
+0000527010 00000 n
+0000527162 00000 n
+0000527313 00000 n
+0000527465 00000 n
+0000527613 00000 n
+0000527762 00000 n
+0000527913 00000 n
+0000528065 00000 n
+0000528215 00000 n
+0000528365 00000 n
+0000528516 00000 n
+0000528668 00000 n
+0000528819 00000 n
+0000528971 00000 n
+0000529123 00000 n
+0000529275 00000 n
+0000529426 00000 n
+0000529578 00000 n
+0000529730 00000 n
+0000529881 00000 n
+0000530032 00000 n
+0000530184 00000 n
+0000530336 00000 n
+0000530487 00000 n
+0000530639 00000 n
+0000530791 00000 n
+0000530942 00000 n
+0000531094 00000 n
+0000531245 00000 n
+0000531396 00000 n
+0000531545 00000 n
+0000531695 00000 n
+0000531845 00000 n
+0000531995 00000 n
+0000532144 00000 n
+0000532294 00000 n
+0000532445 00000 n
+0000532597 00000 n
+0000532747 00000 n
+0000532899 00000 n
+0000533050 00000 n
+0000533202 00000 n
+0000533353 00000 n
+0000533505 00000 n
+0000533657 00000 n
+0000533808 00000 n
+0000533960 00000 n
+0000534112 00000 n
+0000534263 00000 n
+0000534416 00000 n
+0000534569 00000 n
+0000534722 00000 n
+0000534873 00000 n
+0000535026 00000 n
+0000535179 00000 n
+0000535332 00000 n
+0000535485 00000 n
+0000535637 00000 n
+0000535789 00000 n
+0000535942 00000 n
+0000536094 00000 n
+0000536247 00000 n
+0000536400 00000 n
+0000536553 00000 n
+0000536704 00000 n
+0000536857 00000 n
+0000537009 00000 n
+0000537161 00000 n
+0000537314 00000 n
+0000537466 00000 n
+0000537618 00000 n
+0000537771 00000 n
+0000537924 00000 n
+0000538077 00000 n
+0000538230 00000 n
+0000538383 00000 n
+0000538536 00000 n
+0000538689 00000 n
+0000538842 00000 n
+0000538995 00000 n
+0000539148 00000 n
+0000539297 00000 n
+0000539447 00000 n
+0000539597 00000 n
+0000539749 00000 n
+0000539901 00000 n
+0000540054 00000 n
+0000540207 00000 n
+0000540359 00000 n
+0000540510 00000 n
+0000545330 00000 n
+0000545482 00000 n
+0000545634 00000 n
+0000540787 00000 n
+0000522581 00000 n
+0000519242 00000 n
+0000540660 00000 n
+0000522722 00000 n
+0000545786 00000 n
+0000545938 00000 n
+0000546091 00000 n
+0000546242 00000 n
+0000546394 00000 n
+0000546544 00000 n
+0000546697 00000 n
+0000546849 00000 n
+0000547002 00000 n
+0000547153 00000 n
+0000547304 00000 n
+0000547457 00000 n
+0000547610 00000 n
+0000547762 00000 n
+0000547915 00000 n
+0000548068 00000 n
+0000548221 00000 n
+0000548374 00000 n
+0000548526 00000 n
+0000548678 00000 n
+0000548830 00000 n
+0000548983 00000 n
+0000549136 00000 n
+0000549288 00000 n
+0000549440 00000 n
+0000549593 00000 n
+0000549746 00000 n
+0000549899 00000 n
+0000550052 00000 n
+0000550205 00000 n
+0000550357 00000 n
+0000550509 00000 n
+0000550662 00000 n
+0000550815 00000 n
+0000550968 00000 n
+0000551120 00000 n
+0000551272 00000 n
+0000551425 00000 n
+0000551578 00000 n
+0000551731 00000 n
+0000551884 00000 n
+0000552037 00000 n
+0000552189 00000 n
+0000552342 00000 n
+0000552495 00000 n
+0000552648 00000 n
+0000552798 00000 n
+0000552948 00000 n
+0000553099 00000 n
+0000553252 00000 n
+0000553405 00000 n
+0000553558 00000 n
+0000553710 00000 n
+0000553863 00000 n
+0000554015 00000 n
+0000554167 00000 n
+0000554320 00000 n
+0000554471 00000 n
+0000554624 00000 n
+0000554776 00000 n
+0000554929 00000 n
+0000555082 00000 n
+0000555235 00000 n
+0000555387 00000 n
+0000555540 00000 n
+0000555693 00000 n
+0000555846 00000 n
+0000555997 00000 n
+0000556148 00000 n
+0000556299 00000 n
+0000556451 00000 n
+0000556604 00000 n
+0000556757 00000 n
+0000556910 00000 n
+0000557063 00000 n
+0000557216 00000 n
+0000557369 00000 n
+0000557521 00000 n
+0000557674 00000 n
+0000557827 00000 n
+0000557980 00000 n
+0000558132 00000 n
+0000558285 00000 n
+0000558438 00000 n
+0000558591 00000 n
+0000558744 00000 n
+0000558896 00000 n
+0000559049 00000 n
+0000559202 00000 n
+0000559355 00000 n
+0000559506 00000 n
+0000559658 00000 n
+0000559811 00000 n
+0000559961 00000 n
+0000560112 00000 n
+0000564066 00000 n
+0000564219 00000 n
+0000564372 00000 n
+0000564525 00000 n
+0000560326 00000 n
+0000544285 00000 n
+0000540977 00000 n
+0000560262 00000 n
+0000544426 00000 n
+0000564678 00000 n
+0000564830 00000 n
+0000564982 00000 n
+0000565134 00000 n
+0000565286 00000 n
+0000565439 00000 n
+0000565592 00000 n
+0000565745 00000 n
+0000565897 00000 n
+0000566050 00000 n
+0000566202 00000 n
+0000566354 00000 n
+0000566505 00000 n
+0000566658 00000 n
+0000566811 00000 n
+0000566964 00000 n
+0000567117 00000 n
+0000567270 00000 n
+0000567422 00000 n
+0000567574 00000 n
+0000567727 00000 n
+0000567879 00000 n
+0000568032 00000 n
+0000568185 00000 n
+0000568338 00000 n
+0000568489 00000 n
+0000568641 00000 n
+0000568792 00000 n
+0000568945 00000 n
+0000569098 00000 n
+0000569251 00000 n
+0000569404 00000 n
+0000569557 00000 n
+0000569710 00000 n
+0000569863 00000 n
+0000570016 00000 n
+0000570168 00000 n
+0000570320 00000 n
+0000570473 00000 n
+0000570625 00000 n
+0000570778 00000 n
+0000570931 00000 n
+0000571084 00000 n
+0000571237 00000 n
+0000571389 00000 n
+0000571542 00000 n
+0000571693 00000 n
+0000571845 00000 n
+0000571998 00000 n
+0000572149 00000 n
+0000572301 00000 n
+0000572454 00000 n
+0000572607 00000 n
+0000572757 00000 n
+0000572907 00000 n
+0000573057 00000 n
+0000573208 00000 n
+0000573359 00000 n
+0000573512 00000 n
+0000573665 00000 n
+0000573818 00000 n
+0000573971 00000 n
+0000574124 00000 n
+0000574275 00000 n
+0000574428 00000 n
+0000574580 00000 n
+0000574732 00000 n
+0000574885 00000 n
+0000575038 00000 n
+0000575191 00000 n
+0000575344 00000 n
+0000575497 00000 n
+0000575650 00000 n
+0000575867 00000 n
+0000563210 00000 n
+0000560503 00000 n
+0000575803 00000 n
+0000563351 00000 n
+0000578724 00000 n
+0000578878 00000 n
+0000579032 00000 n
+0000579186 00000 n
+0000579340 00000 n
+0000579499 00000 n
+0000579658 00000 n
+0000579817 00000 n
+0000579976 00000 n
+0000580134 00000 n
+0000580293 00000 n
+0000580452 00000 n
+0000580606 00000 n
+0000580765 00000 n
+0000580930 00000 n
+0000581095 00000 n
+0000581254 00000 n
+0000581413 00000 n
+0000581578 00000 n
+0000581742 00000 n
+0000581907 00000 n
+0000582072 00000 n
+0000582237 00000 n
+0000582391 00000 n
+0000582549 00000 n
+0000582708 00000 n
+0000582866 00000 n
+0000583025 00000 n
+0000583178 00000 n
+0000583332 00000 n
+0000583491 00000 n
+0000583650 00000 n
+0000583809 00000 n
+0000583962 00000 n
+0000584117 00000 n
+0000584277 00000 n
+0000584437 00000 n
+0000584597 00000 n
+0000584757 00000 n
+0000584917 00000 n
+0000585077 00000 n
+0000585231 00000 n
+0000585386 00000 n
+0000585546 00000 n
+0000585706 00000 n
+0000585864 00000 n
+0000588802 00000 n
+0000586086 00000 n
+0000578147 00000 n
+0000576044 00000 n
+0000586022 00000 n
+0000578288 00000 n
+0000588957 00000 n
+0000589117 00000 n
+0000589276 00000 n
+0000589435 00000 n
+0000589594 00000 n
+0000589754 00000 n
+0000589909 00000 n
+0000590069 00000 n
+0000590228 00000 n
+0000590388 00000 n
+0000590547 00000 n
+0000590706 00000 n
+0000590865 00000 n
+0000591025 00000 n
+0000591185 00000 n
+0000591345 00000 n
+0000591506 00000 n
+0000591667 00000 n
+0000591822 00000 n
+0000591982 00000 n
+0000592148 00000 n
+0000592314 00000 n
+0000592474 00000 n
+0000592634 00000 n
+0000592793 00000 n
+0000592948 00000 n
+0000593102 00000 n
+0000593262 00000 n
+0000593422 00000 n
+0000593582 00000 n
+0000593742 00000 n
+0000593896 00000 n
+0000594056 00000 n
+0000594216 00000 n
+0000594376 00000 n
+0000594536 00000 n
+0000594696 00000 n
+0000594856 00000 n
+0000595016 00000 n
+0000595176 00000 n
+0000595336 00000 n
+0000595497 00000 n
+0000595652 00000 n
+0000595870 00000 n
+0000588242 00000 n
+0000586237 00000 n
+0000595806 00000 n
+0000878765 00000 n
+0000588384 00000 n
+0000596289 00000 n
+0000597244 00000 n
+0000596345 00000 n
+0000596445 00000 n
+0000597486 00000 n
+0000598100 00000 n
+0000598304 00000 n
+0000599716 00000 n
+0000598379 00000 n
+0000598480 00000 n
+0000599958 00000 n
+0000600586 00000 n
+0000600791 00000 n
+0000600936 00000 n
+0000601033 00000 n
+0000602203 00000 n
+0000601099 00000 n
+0000601196 00000 n
+0000602446 00000 n
+0000603061 00000 n
+0000603265 00000 n
+0000603369 00000 n
+0000605224 00000 n
+0000603527 00000 n
+0000603631 00000 n
+0000605464 00000 n
+0000606124 00000 n
+0000606328 00000 n
+0000607783 00000 n
+0000606407 00000 n
+0000606509 00000 n
+0000608031 00000 n
+0000608665 00000 n
+0000608875 00000 n
+0000608920 00000 n
+0000612076 00000 n
+0000609195 00000 n
+0000609301 00000 n
+0000612324 00000 n
+0000613054 00000 n
+0000613264 00000 n
+0000613289 00000 n
+0000617382 00000 n
+0000613631 00000 n
+0000613741 00000 n
+0000617625 00000 n
+0000618373 00000 n
+0000618577 00000 n
+0000618603 00000 n
+0000618855 00000 n
+0000620937 00000 n
+0000619008 00000 n
+0000619114 00000 n
+0000621176 00000 n
+0000621836 00000 n
+0000622038 00000 n
+0000629606 00000 n
+0000622471 00000 n
+0000622583 00000 n
+0000629846 00000 n
+0000630729 00000 n
+0000630932 00000 n
+0000638271 00000 n
+0000631372 00000 n
+0000631480 00000 n
+0000638511 00000 n
+0000639424 00000 n
+0000639628 00000 n
+0000641940 00000 n
+0000639902 00000 n
+0000640008 00000 n
+0000642180 00000 n
+0000642886 00000 n
+0000643090 00000 n
+0000651125 00000 n
+0000643547 00000 n
+0000643659 00000 n
+0000651366 00000 n
+0000652274 00000 n
+0000652479 00000 n
+0000654685 00000 n
+0000652605 00000 n
+0000652713 00000 n
+0000654927 00000 n
+0000655581 00000 n
+0000655786 00000 n
+0000657574 00000 n
+0000655897 00000 n
+0000656001 00000 n
+0000657821 00000 n
+0000658470 00000 n
+0000658680 00000 n
+0000666134 00000 n
+0000659108 00000 n
+0000659223 00000 n
+0000666374 00000 n
+0000667262 00000 n
+0000667465 00000 n
+0000672117 00000 n
+0000667808 00000 n
+0000667919 00000 n
+0000672366 00000 n
+0000673136 00000 n
+0000673347 00000 n
+0000676585 00000 n
+0000673543 00000 n
+0000673650 00000 n
+0000676827 00000 n
+0000677525 00000 n
+0000677730 00000 n
+0000684389 00000 n
+0000678116 00000 n
+0000678227 00000 n
+0000684633 00000 n
+0000685434 00000 n
+0000685639 00000 n
+0000694285 00000 n
+0000686076 00000 n
+0000686190 00000 n
+0000694526 00000 n
+0000695503 00000 n
+0000695708 00000 n
+0000699109 00000 n
+0000696068 00000 n
+0000696175 00000 n
+0000699350 00000 n
+0000700118 00000 n
+0000700323 00000 n
+0000700558 00000 n
+0000710193 00000 n
+0000701126 00000 n
+0000701255 00000 n
+0000710435 00000 n
+0000711437 00000 n
+0000711643 00000 n
+0000711750 00000 n
+0000712029 00000 n
+0000712136 00000 n
+0000712198 00000 n
+0000712393 00000 n
+0000712762 00000 n
+0000720421 00000 n
+0000713205 00000 n
+0000713313 00000 n
+0000720661 00000 n
+0000721593 00000 n
+0000721797 00000 n
+0000723401 00000 n
+0000721954 00000 n
+0000722060 00000 n
+0000723641 00000 n
+0000724300 00000 n
+0000724504 00000 n
+0000728290 00000 n
+0000724796 00000 n
+0000724902 00000 n
+0000728531 00000 n
+0000729264 00000 n
+0000729469 00000 n
+0000731028 00000 n
+0000729562 00000 n
+0000729663 00000 n
+0000731267 00000 n
+0000731893 00000 n
+0000732095 00000 n
+0000734332 00000 n
+0000732274 00000 n
+0000732380 00000 n
+0000734573 00000 n
+0000735242 00000 n
+0000735447 00000 n
+0000739452 00000 n
+0000735775 00000 n
+0000735889 00000 n
+0000739694 00000 n
+0000740437 00000 n
+0000740643 00000 n
+0000742003 00000 n
+0000740766 00000 n
+0000740872 00000 n
+0000742244 00000 n
+0000742889 00000 n
+0000743094 00000 n
+0000746544 00000 n
+0000743356 00000 n
+0000743463 00000 n
+0000746786 00000 n
+0000747502 00000 n
+0000756954 00000 n
+0000747708 00000 n
+0000768378 00000 n
+0000757205 00000 n
+0000776066 00000 n
+0000769132 00000 n
+0000788843 00000 n
+0000776296 00000 n
+0000796314 00000 n
+0000789171 00000 n
+0000804447 00000 n
+0000796540 00000 n
+0000814374 00000 n
+0000804680 00000 n
+0000822286 00000 n
+0000814641 00000 n
+0000834996 00000 n
+0000822517 00000 n
+0000843014 00000 n
+0000835354 00000 n
+0000852255 00000 n
+0000843262 00000 n
+0000860207 00000 n
+0000852563 00000 n
+0000867747 00000 n
+0000860491 00000 n
+0000875261 00000 n
+0000867986 00000 n
+0000878847 00000 n
+0000878978 00000 n
+0000887428 00000 n
+0000888064 00000 n
+0000888704 00000 n
+0000889353 00000 n
+0000890159 00000 n
+0000891072 00000 n
+0000891977 00000 n
+0000892080 00000 n
+0000892217 00000 n
+0000892257 00000 n
+0000892389 00000 n
trailer
-<< /Size 1568 /Root 1566 0 R /Info 1567 0 R /ID [ <886AF9986773F782DD17EA3C2149DA11> <886AF9986773F782DD17EA3C2149DA11> ] >>
+<< /Size 1562 /Root 1560 0 R /Info 1561 0 R /ID [ <93D3827395C8311F167E06495428C36C> <93D3827395C8311F167E06495428C36C> ] >>
startxref
-905316
+892953
%%EOF
diff --git a/macros/latex/contrib/nicematrix/nicematrix.tex b/macros/latex/contrib/nicematrix/nicematrix.tex
index 35de300099..5e838cabae 100644
--- a/macros/latex/contrib/nicematrix/nicematrix.tex
+++ b/macros/latex/contrib/nicematrix/nicematrix.tex
@@ -143,9 +143,11 @@ L_2 & a_{21} & a_{22} & \Cdots & a_{2n} \\
\Vdots & \Vdots & \Vdots & \Ddots & \Vdots\\
L_n & a_{n1} & a_{n2} & \Cdots & a_{nn}
\end{bNiceArray}$\hspace{2cm}
-\begin{NiceTabular}{lSSSS}[code-before = \rowcolor{red!15}{1-2} \rowcolors{3}{blue!15}{}]
+\begin{NiceTabular}{lSSSS}%
+ [code-before = \rowcolor{red!15}{1-2} \rowcolors{3}{blue!15}{}]
\toprule
-\Block{2-1}{Product} & \multicolumn{3}{c}{dimensions (cm)} & \Block{2-1}{\rotate Price} \\
+\Block{2-1}{Product} & \multicolumn{3}{c}{dimensions (cm)}
+ & \Block{2-1}{\rotate Price} \\
\cmidrule(rl){2-4}
& L & l & h \\
\midrule
@@ -170,10 +172,9 @@ If you use LaTeX via Internet with, for example, Overleaf, you
can upload the file |nicematrix.sty| in the repertory of your
project in order to take full advantage of the latest version de
\pkg{nicematrix}.\footnote{The latest version of the file
-|nicematrix.sty| may be downloaded from the \textsc{svn} server of
-TeXLive:\newline
+|nicematrix.sty| may be downloaded on the Github depot of \pkg{nicematrix}:\newline
\small
-\url{https:www.tug.org/svn/texlive/trunk/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty}}
+\url{https://github.com/fpantigny/nicematrix/releases}}
\medskip
This package can be used with |xelatex|, |lualatex|, |pdflatex| but also by
@@ -195,8 +196,9 @@ and the positions of the rules of the tabular created by \pkg{array} and to
use these nodes to develop new features. As usual with \textsc{pgf}, the
coordinates of these nodes are written in the |aux| to be used on the next
compilation and that's why \pkg{nicematrix} may need \textbf{several
-compilations}.\footnote{If you use Overleaf, Overleaf will do automatically
-a sufficient number of compilations.}
+compilations}\footnote{If you use Overleaf, Overleaf will do automatically
+a sufficient number of compilations.}. One must not use the command |\nofiles|
+(which prevents the creation of the |aux| file).
\medskip
Most features of \pkg{nicematrix} may be used without explicit use of
@@ -486,8 +488,7 @@ If this argument is empty, its default
value is |1-1|. If the number of rows is not specified, or equal to |*|, the
block extends until the last row (idem for the columns).
-\item The second argument is the content of the block. It's possible to use
-|\\| in that content to have a content on several lines. In |{NiceTabular}|,
+\item The second argument is the content of the block. In |{NiceTabular}|,
|{NiceTabular*}| and |{NiceTabularX}|, the content of the block is composed in
text mode whereas, in the other environments, it is composed in math mode.
\end{itemize}
@@ -614,13 +615,13 @@ should be loaded (by default, \pkg{nicematrix} only loads \textsc{pgf}) and,
if it's not, an error will be raised.} by using as options the value of that
key |tikz| (which must be a list of keys allowed for a TikZ path).
-\colorbox{yellow!50}{\textbf{New 6.24}}\enskip In fact, in the list of the keys
-provided by the user as value of |tikz|, it's possible to put a key
-\Definition{offset}. That key is not provided by TikZ but by \pkg{nicematrix}.
-It will narrow the rectangular frame corresponding to the block by a margin
-(horizontally and vertically) equal to the value (of that key |offset|). That
-new frame, a bit narrower, will be executed by TikZ with options which are the
-other keys in the list of keys provided as value to the key |tikz| of |\Block|.
+In fact, in the list of the keys provided by the user as value of |tikz|, it's
+possible to put a key \Definition{offset}. That key is not provided by TikZ but
+by \pkg{nicematrix}. It will narrow the rectangular frame corresponding to the
+block by a margin (horizontally and vertically) equal to the value (of that key
+|offset|). That new frame, a bit narrower, will be executed by TikZ with options
+which are the other keys in the list of keys provided as value to the key |tikz|
+of |\Block|.
For examples, cf. p.~\pageref{tikz-key-examples}.
\end{itemize}
@@ -661,9 +662,10 @@ In the following example, we have had to enlarge by hand the columns 2 and 3
\bigskip
\begin{Code}
\begin{NiceTabular}{cw{c}{2cm}w{c}{3cm}c}
-rose & tulip & daisy & dahlia \\
-violet & \emph{\Block[draw=red,fill=[RGB]{204,204,255},rounded-corners]{2-2}
- {\LARGE Some beautiful flowers}} & & marigold \\
+rose & tulip & daisy & dahlia \\
+violet
+ & \emph{\Block[draw=red,fill=[RGB]{204,204,255},rounded-corners]{2-2}
+ {\LARGE Some beautiful flowers}} & & marigold \\
& & marigold \\
iris & & & lis \\
arum & periwinkle & forget-me-not & hyacinth
@@ -694,9 +696,10 @@ In the columns with a fixed width (columns |w{...}{...}|, |W{...}{...}|,
formatted as a paragraph of that width.
\item The specification of the horizontal position provided by the type of
-column (|c|, |r| or |l|) is taken into account for the blocks (but the
-|\Block| may have its own specification of alignment:
-cf.~\ref{horizontal-block} p.~\pageref{horizontal-block}).
+column (|c|, |r| or |l|) is taken into account for the blocks. For a block in a
+column ot type |p{...}| (without option for |p|) , the alignment |c| will be
+used for the block. Of course, the |\Block| may have its own specification of
+alignment: cf.~\ref{horizontal-block} p.~\pageref{horizontal-block}.
\item The specifications of font specified for the column by a construction
|>{...}| in the preamble of the array are taken into account for the
@@ -800,8 +803,8 @@ first mandatory argument of |\Block| is |1-1|.}
\label{horizontal-block}
-The command |\Block| accepts the keys |l|, |c| and |r| for the horizontal
-position of its content.
+The command |\Block| accepts the keys \Definition{l}, \Definition{c} and
+\Definition{r} for the horizontal position of its content.
\medskip
\begin{Code}[width=10.6cm]
@@ -863,10 +866,10 @@ Rank & \Block{1-3}{First group} & & & \Block{1-3}{Second group} \\
\end{center}
\medskip
-In order to have an horizontal positionning of the content of the block
-computed with the limits of the columns of the LaTeX array (and not with the
-contents of those columns), one may use the key |L|, |R| and |C| of the
-command |\Block|.
+In order to have an horizontal positionning of the content of the block computed
+with the limits of the columns of the LaTeX array (and not with the contents of
+those columns), one may use the key \Definition{L}, \Definition{R} and
+\Definition{C} of the command |\Block|.
\medskip
Here is the same example with the key |C| for the first block.
@@ -904,6 +907,16 @@ Rank & \Block[C]{1-3}{First group} & & & \Block{1-3}{Second group} \\
\end{center}
+\bigskip
+\colorbox{yellow!50}{\bfseries New 6.28}\par\nobreak
+
+\smallskip
+The command |\Block| supports also a key |p|. With that key, the content of the
+block is formatted like a paragraph (as in a column of type |p|). That key may
+be used in conjunction with the key |l|, |c| or |r|, and, in that case, the
+paragraph is formatted with |\raggedright|, |\centering| or |\raggedleft|. With
+the key |j|, the paragraph is justified.
+
\subsection{Vertical position of the content of the block}
\label{vertical-pos-block}
@@ -925,7 +938,8 @@ array involved in the block.
No vertical margin is added. However, the contents of the block is (always)
composed by \pkg{nicematrix} in a |{minipage}|, a |{tabular}| or an |{array}|
-and, hence, there will still remain a margin (in most cases).
+and, hence, there will still remain a margin (in most cases). If needed, it's
+always possible to add a |\strut|...
\item With the key \Definition{B}, the content of the block is set downwards.
\end{itemize}
@@ -1028,6 +1042,90 @@ text & text \\
\end{scope}
+\subsection{\textbackslash\textbackslash\ and \& in the blocks}
+
+\index{ampersand-in-blocks}
+\index{\&-in-blocks}
+
+\colorbox{yellow!50}{\bfseries New 6.28}\par\nobreak
+
+The extension \pkg{nicematrix} provides the ability to use |\\| and |&| directly
+in the content of a block (in order to format its contents) but there is some rectrictions.
+
+\begin{itemize}
+\item One must not use both |\\| and |&| in the same block.
+
+\item For |\\|, there is no other restriction. It's possible to use |\\| in a
+block to format a text on several rows.
+
+\item In order to use |&|, the key |ampersand-in-blocks| (alias: |&-in-blocks|)
+must been activated\footnote{Otherwise, the use of~|&| in the command |\Block|
+ will raise a TeX error :\\
+|! Extra alignment tab has been changed to \cr.|}. Then, the block is divided in sub-blocks as illustrated
+below. Be careful: with |ampersand-in-blocks| is in force, the (main) argument
+of the command |\Block| is syntactically divided into sub-blocks by splitting on
+the ampersands~|&|, the ampersands between curly braced are protected but not
+those in an environment.\footnote{It's not possible to write
+ |\Block[ampersand-in-blocks]{}{\begin{array}{cc}1&2\end{array}}|. Of course,
+ it's possible without the key |ampersand-in-blocks|.}
+\end{itemize}
+
+
+\bigskip
+With the ampserand |&|, it's possible to divide horizontally a block in
+sub-blocks of \emph{the same size}.
+
+\medskip
+\begin{Code}[width=85mm]
+\begin{NiceTabular}{ll}%
+ [hvlines,ampersand-in-blocks]
+ & les cinq premiers entiers naturels \\
+3 & \Block{un&deux&trois} \\
+4 & \Block{un&deux&trois& quatre} \\
+5 & \Block{un&deux&trois&quatre&cinq} \\
+\end{NiceTabular}
+\end{Code}
+%
+\begin{NiceTabular}{ll}%
+ [hvlines,ampersand-in-blocks]
+ & les cinq premiers entiers naturels \\
+3 & \Block{}{un & deux & trois} \\
+4 & \Block{}{un& deux & trois & quatre} \\
+5 & \Block{}{un & deux & trois & quatre & cinq} \\
+\end{NiceTabular}
+
+
+
+
+As we can see, the blocks (which was are in fact mono-cell blocks) are divided
+into sub-blocks of the same size. However, maybe the following code would be prefered.
+
+\medskip
+\begin{Code}[width=85mm]
+\begin{NiceTabular}{lccccc}%
+ [hvlines,ampersand-in-blocks]
+ & \Block{1-5}{the five first
+ natural numbers} \\
+3 & \Block{1-5}{one & two & three} \\
+4 & \Block{1-5}{one& two & three & four} \\
+5 & one & two & three & four & five \\
+\end{NiceTabular}
+\end{Code}
+%
+\begin{NiceTabular}{lccccc}%
+ [hvlines,ampersand-in-blocks]
+ & \Block{1-5}{the five first natural numbers} \\
+3 & \Block{1-5}{one & two & three} \\
+4 & \Block{1-5}{one& two & three & four} \\
+5 & one & two & three & four & five \\
+\end{NiceTabular}
+
+\medskip
+In this code, we have blocks of size |1-5| which are divided into three or four
+sub-blocks.
+
+
+
\index{Blocks@\textbf{Blocks in the tabulars}|)}
@@ -1255,7 +1353,7 @@ those keys, see |custom-line| on p.~\pageref{custom-line}.\footnote{Technical
shall be ensured that this new command is expandable in the TeX sens (by
using, for instance, |\NewExpandableDocumentCommand| of LaTeX3, |\newcommand|
of LaTeX or |\def| of TeX). Example:
- |\newcommand{\RedLine}{\Hline[color=red]}|}
+ |\NewDocumentCommand{\RedLine}{}{\Hline[color=red]}|}
\bigskip
@@ -1264,7 +1362,7 @@ argument between square brackets for the characteristics of the rule.
\medskip
\begin{Code}[width=10cm]
-\begin{NiceTabular}{|c\emph{|[color=blue]}c|}
+\begin{NiceTabular}{ | c \emph{|[color=blue]} c |}
\Hline
a & b \\
\emph{\Hline[color=red]}
@@ -1543,19 +1641,19 @@ individual environments. That key takes in as argument a list of
will be used to use that new type of rule.
\begin{itemize}
-\item the key |command| is the name (without the backslash) of a command that
-will be created by \pkg{nicematrix} and that will be available for the final
-user in order to draw horizontal rules (similarly to |\hline|);
-
-\item the key |ccommand| is the name (without the backslash) of a command
-that will be created by \pkg{nicematrix} and that will be available for the
-final user to order to draw partial horizontal rules (similarly to |\cline|,
-hence the name |ccommand|): the argument of that command is a list of
-intervals of columns specified by the syntax~$i$ or $i$-$j$.\footnote{It's
-recommended to use such commands only once in a row because each use will
-create space between the rows corresponding to the total width of the rule.}
-
-\item the key |letter| takes in as argument a letter\footnote{The following
+\item the key \Definition{command} is the name (without the backslash) of a
+command that will be created by \pkg{nicematrix} and that will be available for
+the final user in order to draw horizontal rules (similarly to |\hline|);
+
+\item the key \Definition{ccommand} is the name (without the backslash) of a
+command that will be created by \pkg{nicematrix} and that will be available for
+the final user to order to draw partial horizontal rules (similarly to |\cline|,
+hence the name |ccommand|): the argument of that command is a list of intervals
+of columns specified by the syntax~$i$ or $i$-$j$.\footnote{It's recommended to
+ use such commands only once in a row because each use will create space
+ between the rows corresponding to the total width of the rule.}
+
+\item the key \Definition{letter} takes in as argument a letter\footnote{The following
letters are forbidden: \verb+lcrpmbVX|()[]!@<>+} that the user will use in
the preamble of an environment with preamble (such as |{NiceTabular}| in order
to specify a vertical rule.
@@ -1580,14 +1678,15 @@ inter-rule space (as possible with \pkg{colortbl} for instance).
\index{multiplicity (key of ``custom-line'')}
\index{color!key of ``custom-line''}
\index{sep-color (key of ``custom-line'')}
-\item the key |multiplicity| is the number of consecutive rules that will be
-drawn: for instance, a value of $2$ will create double rules such those
+\item the key \Definition{multiplicity} is the number of consecutive rules that
+will be drawn: for instance, a value of $2$ will create double rules such those
created by |\hline\hline| or \verb+||+ in the preamble of an environment;
-\item the key |color| sets the color of the rules ;
+\item the key \Definition{color} sets the color of the rules ;
-\item the key |sep-color| sets the color between two successive rules (should be
-used only in conjonction with |multiplicity|).
+\item the key \Definition{sep-color} sets the color between two successive rules
+(should be used only in conjonction with |multiplicity|). The name of that key
+is inspired by the command |\doublerulesepcolor| of \pkg{colortbl}.
\end{itemize}
\medskip
@@ -1625,15 +1724,60 @@ Product C & 5 & 4 & 1 \\
\bigskip
+The key |sep-color| with the value |white| may also be used in case of an
+horizontal double-rule on the top of a colored cell (if we want the space
+between both rules above the cell not colored by the color of the cell).
+
+\begin{scope}
+\NiceMatrixOptions
+ {
+ custom-line =
+ {
+ command = DoubleRule ,
+ multiplicity = 2 ,
+ sep-color = white
+ }
+ }
+
+
+\begin{Code}[width=10cm]
+\NiceMatrixOptions
+ {
+ custom-line =
+ {
+ command = DoubleRule ,
+ multiplicity = 2 ,
+ \emph{sep-color = white}
+ }
+ }
+
+\begin{NiceTabular}{ccc}[color-inside]
+one & two & three \\
+\emph{\DoubleRule}
+four & \cellcolor{yellow} five & six \\
+\end{NiceTabular}
+\end{Code}
+\begin{NiceTabular}{ccc}[color-inside]
+one & two & three \\
+\DoubleRule
+four & \cellcolor{yellow} five & six \\
+\end{NiceTabular}
+
+\end{scope}
+
+
+
+
+\bigskip
\item \emph{Second possibility}\par\nobreak
\index{tikzz@tikz!key of ``custom-line''}
\index{total-width (key of ``custom-line'')}
-It's possible to use the key |tikz| (if TikZ is loaded). In that case, the
-rule is drawn directly with TikZ by using as parameters the value of the key
-|tikz| which must be a list of \textsl{key=value} pairs which may be applied
-to a TikZ path.
+It's possible to use the key \Definition{tikz} (if TikZ is loaded). In that
+case, the rule is drawn directly with TikZ by using as parameters the value of
+the key |tikz| which must be a list of \textsl{key=value} pairs which may be
+applied to a TikZ path.
By default, no space is reserved for the rule that will be drawn with TikZ. It
is possible to specify a reservation (horizontal for a vertical rule and
@@ -1682,7 +1826,7 @@ seven & eight & nine
\end{scope}
\bigskip
-\item \emph{Third possibility} : the key |dotted|
+\item \emph{Third possibility} : the key \Definition{dotted}
\label{dotted}
\index{dotted (key of ``custom-line'')}
\indexcommand{hdottedline}
@@ -1696,15 +1840,15 @@ value of the key |total-width| is, in this case, equal to the diameter of the do
dotted rules are also used by \pkg{nicematrix} to draw continuous dotted rules
between cells of the matrix with |\Cdots|, |\Vdots|, etc. (cf. p.~\pageref{Cdots}).
-In fact, \pkg{nicematrix} defines by default the commands |\hdottedline| and
-|\cdottedline |and the letter ``|:|'' for those dotted
-rules.\footnote{However, it's possible to overwrite those definitions with a
-|custom-line| (in order, for example, to switch to dashed lines).}
+In fact, \pkg{nicematrix} defines by default the commands
+\Definition{hdottedline} and \Definition{cdottedline} and the letter ``|:|'' for
+those dotted rules.\footnote{However, it's possible to overwrite those
+ definitions with a |custom-line| (in order, for example, to switch to dashed
+ lines).}
\smallskip
\begin{Code}
-
-\NiceMatrixOptions % \textsl{present in nicematrix.sty}
+\NiceMatrixOptions \emph{% \textsl{present in nicematrix.sty}}
{
custom-line =
{
@@ -2397,9 +2541,12 @@ current environment.\footnote{Up to now, this key is \emph{not} available in |\N
There are several commands available (the first three ones are inspired by
\pkg{colortbl} but are \emph{independent} of \pkg{colortbl}):
\begin{itemize}
-\item \DefinitionCommand{cellcolor} which colorizes a cell;\footnote{However,
- this command cellcolor will delete the following spaces, which does not the
- command cellcolor of \pkg{colortbl}.}
+\item \DefinitionCommand{cellcolor} which colorizes a cell;\footnote{That
+ command cellcolor will delete the following spaces, which does not the
+ command cellcolor of \pkg{colortbl}. Moreover, if one wishes to define a
+ command above that command |rowcolor|, it must be protected in the TeX sens
+ (whereas, if it were the command |\rowcolor| of \pkg{colortbl}, one should
+ write a \emph{fully expandable} command).}
\item \DefinitionCommand{rowcolor} which must be used in a cell and which
colorizes the end of the row;\footnote{If you want a commande to color the
following $n$~rows, consider the command |\RowStyle| and its key |rowcolor|,
@@ -2453,14 +2600,13 @@ Dupont & Chantal & 15 janvier 1998 \\
\end{center}
\bigskip
-\colorbox{yellow!50}{\textbf{New 6.25}}\enskip Each use of the command
-|\rowlistcolors| (or |\rowcolors|, which is, in fact, a special case of
-|\rowlistcolors|) stops the potential coloring schemes\footnote{We say
- \emph{schemes} in plural form because it's possible to start simultaneously
- several coloring schemes if they apply on different columns.} specified by a
-previous command |\rowlistcolors|. In particular, it's possible to start
-coloring the rows with |\rowlistcolors{...}| and stop coloring by a command
-|\rowlistcolors| with an empty argument.
+Each use of the |\rowlistcolors| (or |\rowcolors|, which is, in fact, a
+special case of |\rowlistcolors|) stops the potential coloring
+schemes\footnote{We say \emph{schemes} in plural form because it's possible to
+ start simultaneously several coloring schemes if they apply on different
+ columns.} specified by a previous command |\rowlistcolors|. In particular,
+it's possible to start coloring the rows with |\rowlistcolors{...}| and stop
+coloring by a command |\rowlistcolors| with an empty argument.
\bigskip
\begin{Code}[width=10cm]
@@ -2493,10 +2639,9 @@ seven \\
\index{nocolor}
-\colorbox{yellow!50}{\textbf{New 6.26}}\enskip The extension \pkg{nicematrix}
-provides the special color |nocolor| which may be used in all the coloring
-commands provided by \pkg{nicematrix} (in the |\CodeBefore| or the array
-itself).
+The extension \pkg{nicematrix} provides the special color |nocolor| which may be
+used in all the coloring commands provided by \pkg{nicematrix} (in the
+|\CodeBefore| or the array itself).
The cells marked by this color won't be colored, whatever the other instructions
of coloring which may apply to these cells.
@@ -2686,7 +2831,7 @@ $\begin{array}{c}
\end{bNiceMatrix} \\ \\
\begin{bNiceMatrix}
1 & 1245345 \\ 345 & 2
-\end{bNiceMatrix}
+\end{bNiceMatrix} \\
\end{array}$
\emph{\end{NiceMatrixBlock}}
\end{Code}
@@ -2697,7 +2842,7 @@ $\begin{array}{c}
\end{bNiceMatrix} \\ \\
\begin{bNiceMatrix}
1 & 1245345 \\ 345 & 2
-\end{bNiceMatrix}
+\end{bNiceMatrix} \\
\end{array}$
\end{NiceMatrixBlock}
@@ -3224,8 +3369,8 @@ The option |nullify-dots| smashes the instructions |\Ldots| (and the variants)
horizontally but also vertically.
\medskip
-Caution : the key |nullify-dots| has a name that may be confusing; that key does
-not imply that the dotted rules won't be drawn!
+\textbf{Caution}: the key |nullify-dots| has a name that may be confusing; that
+key does not imply that the dotted rules won't be drawn!
@@ -4191,16 +4336,15 @@ $\begin{pNiceMatrix}
CodeAfter}
-\index{SubMatrix@\texttt{\textbackslash TikzEveryCell} (command of
+\index{tikzeverycell@\texttt{\textbackslash TikzEveryCell} (command of
\texttt{\textbackslash CodeAfter}\newline and
\texttt{\textbackslash CodeBefore})|textbf}
\label{TikzEveryCell}
\index{empty (key of \texttt{\textbackslash TikzEveryCell})}
\index{non empty (key of \texttt{\textbackslash TikzEveryCell})}
-
-\colorbox{yellow!50}{\textbf{New 6.24}}\enskip The command |\TikzEveryCell|
-execute with TikZ the rectangular path corresponding to each cell of the tabular
+The command |\TikzEveryCell|
+executes with TikZ the rectangular path corresponding to each cell of the tabular
with parameters of TikZ the argument of |\TikzEveryCell|. That argument must be
a list of \textsl{key=value} pairs which may be applied to a TikZ path. In fact,
the command applies to each of the tabular, except those in the exterior rows
@@ -4243,7 +4387,7 @@ which are the other keys in the argument of |\TikzEveryCell|.
\endgroup
\bigskip
-The command |\TikzEveryCell| has two keys:
+The command |\TikzEveryCell| has two optional keys, available between square brackets.
\begin{itemize}
\item with the key \Definition{empty}, the command only acts on the empty cells;
@@ -4251,6 +4395,35 @@ The command |\TikzEveryCell| has two keys:
\end{itemize}
\medskip
+\begin{Code}[width=9cm]
+\renewcommand{\arraystretch}{1.4}
+\begin{NiceTabular}{cccccc}[hvlines]
+ P & O & U & R & V & U \\
+ O & & & E & I & \\
+ M & O & R & F & A & L \\
+ E & T & A & L & & E \\
+ L & A & S & E & R & S \\
+ O & & E & X & I & T
+\CodeAfter
+ \emph{\TikzEveryCell[empty]{fill=gray,draw}}
+\end{NiceTabular}
+\end{Code}
+\begin{scope}
+\renewcommand{\arraystretch}{1.4}
+\begin{NiceTabular}{cccccc}[hvlines]
+ P & O & U & R & V & U \\
+ O & & & E & I & \\
+ M & O & R & F & A & L \\
+ E & T & A & L & & E \\
+ L & A & S & E & R & S \\
+ O & & E & X & I & T
+\CodeAfter
+ \TikzEveryCell[empty]{fill=gray,draw}
+\end{NiceTabular}
+\end{scope}
+
+
+\medskip
The commmand |\TikzEveryCell| is, in fact, also available in the |\CodeBefore|.
@@ -4390,12 +4563,10 @@ space at all between them}, the labels of the corresponding notes are composed
together, separated by commas (this is similar to the option |multiple| of
\pkg{footmisc} for the footnotes).
-\item If a command |\tabularnote{...}| is exactly at the end of a cell (with
-no space at all after), the label of the note is composed in an overlapping
-position (towards the right). This structure may provide a better alignment of
-the cells of a given column. However, since the version 6.20a, that behaviour is
-in force only when the horizontal alignment mode of the corresponding column is
-|c| or |r|.
+\item If a command |\tabularnote{...}| is exactly at the end of a cell (with no
+space at all after) and if the alignment mode of the column is |c| or |r|, the
+label of the note is composed in an overlapping position (towards the right).
+This structure may provide a better alignment of the cells of a given column.
\item If the key |notes/para| is used, the notes are composed at the end of
the array in a single paragraph (as with the key |para| of \pkg{threeparttable}).
@@ -5089,9 +5260,9 @@ environment of LaTeX which only put TeX commands before and after the content.}
\medskip
\index{light-syntax-expanded}
-\colorbox{yellow!50}{\textbf{New 6.27}}\enskip The key |light-syntax-expanded|
-has the same behaviour as the key |light-syntax| but the body of the
-environment is expanded (in the TeX sens\footnote{More precisely, it's a
+
+The key |light-syntax-expanded| has the same behaviour as the key |light-syntax|
+but the body of the environment is expanded (in the TeX sens\footnote{More precisely, it's a
expansion of type |e| of L3.}) before being splitted in lines (but
after the extraction of a potential |\CodeAfter|).
@@ -5217,8 +5388,8 @@ counter).
\smallskip
\index{name!key for an environment}
-However, it's advisable to use instead the key |name|\footnote{Since the version
- 6.20a, the value of that key is \emph{expanded} (in the TeX sens).}. This key
+However, it's advisable to use instead the key |name|\footnote{The value of the
+key |name| is \emph{expanded} (in the TeX sens).}. This key
gives a name to the current environment. When the environment has a name, the
nodes are accessible with the name ``\textsl{name}-$i$-$j$'' where \textsl{name}
is the name given to the array and $i$ and $j$ the numbers of row and column.
@@ -5649,9 +5820,14 @@ The package \pkg{nicematrix} creates a PGF/TikZ node merely called $i$ (with
the classical prefix) at the intersection of the horizontal rule of number~$i$
and the vertical rule of number~$i$ (more specifically the potential position
of those rules because maybe there are not actually drawn). The last node has
-also an alias called |last|. There is also a node called $i$|.5| midway
-between the node $i$ and the node $i+1$.
+also an alias called |last|.
+\smallskip
+\colorbox{yellow!50}{\bfseries Modification 6.28}\enskip There are also nodes
+called $i$|.1|, $i$|.2|, … , $i$|.9| between the node~$i$ and the node~$i+1$
+(before the version 6.28, there was only the node $i$|.5|).
+
+\smallskip
These nodes are available in the |\CodeBefore| and the |\CodeAfter|.
\begin{center}
@@ -6054,10 +6230,20 @@ environments of \pkg{nicematrix} are not affected).
\index{Incompatibilities}
The package \pkg{nicematrix} is not compatible with the class \cls{ieeeaccess}
-(because that class is not compatible with PGF/TikZ).\footnote{See
- \url{https://tex.stackexchange.com/questions/528975/error-loading-tikz-in-ieeeaccess-class}}
+because that class is not compatible with PGF/TikZ. However, there is a simple
+workaround by writing:\footnote{See
+ \url{https://tex.stackexchange.com/questions/528975/error-loading-tikz-in-ieeeaccess-class}}\par\nobreak
+
+\begin{Code}
+\let\TeXyear\year
+\documentclass{IEEEaccess}
+\let\year\TeXyear
+\end{Code}
+
+
\bigskip
+% the following requirement is still in force on April 23, 2024
In order to use \pkg{nicematrix} with the class \cls{aastex631}
(of the \emph{American Astronomical Society}), you have to
add the following lines in the preamble of your document :
@@ -6089,7 +6275,7 @@ may be wrong in some circonstances.
\bigskip
The package \pkg{nicematrix} is not fully compatible with the package
\pkg{arydshln} (because this package redefines many internals of \pkg{array})
-and does support the columns~|V| of \pkg{boldline} (because the letter |V| is
+and does not support the columns~|V| of \pkg{boldline} (because the letter |V| is
reserved for the columns~|V| of \pkg{varwidth}). By any means, \pkg{nicematrix}
provides, with the key |custom-line| (cf. part~\ref{custom-line},
p.~\pageref{custom-line}), tools to draw dashed rules and rules of different
@@ -6621,7 +6807,7 @@ with the environment |{NiceMatrixBlock}| and its option |auto-columns-width|.
last-col, code-for-last-col = \color{blue}\scriptstyle,
vlines = 5 ,
matrix/columns-type = r ,
- no-cell-nodes
+ no-cell-nodes % only for speedup
}
\setlength{\extrarowheight}{1mm}
@@ -6720,7 +6906,7 @@ composed with the maximal width, thanks to the boolean key
last-col, code-for-last-col = \color{blue}\scriptstyle,
vlines = 5 ,
matrix/columns-type = r ,
- no-cell-nodes
+ no-cell-nodes % only for speedup
}
\setlength{\extrarowheight}{1mm}
@@ -6933,14 +7119,14 @@ the command |\Block| is left empty, that means that the block is a mono-cell blo
\begin{Code}
-$\begin{pNiceArray}{>{\strut}cccc}[margin,rules/color=blue]
+$\begin{pNiceArray}{>{\strut}cccc}[margin,rules/color=blue,no-cell-nodes]
\emph{\Block[draw]{}{a_{11}}} & a_{12} & a_{13} & a_{14} \\
a_{21} & \Block[draw]{}{a_{22}} & a_{23} & a_{24} \\
a_{31} & a_{32} & \Block[draw]{}{a_{33}} & a_{34} \\
a_{41} & a_{42} & a_{43} & \Block[draw]{}{a_{44}} \\
\end{pNiceArray}$
\end{Code}
-\[\begin{pNiceArray}{>{\strut}cccc}[margin,rules/color=blue]
+\[\begin{pNiceArray}{>{\strut}cccc}[margin,rules/color=blue,no-cell-nodes]
\Block[draw]{}{a_{11}} & a_{12} & a_{13} & a_{14} \\
a_{21} & \Block[draw]{}{a_{22}} & a_{23} & a_{24} \\
a_{31} & a_{32} & \Block[draw]{}{a_{33}} & a_{34} \\
@@ -6966,7 +7152,8 @@ used−even when \pkg{colortbl} is not loaded).
\medskip
\begin{Code}
-\begin{pNiceArray}{>{\strut}cccc}[margin, extra-margin=2pt,color-inside]
+\begin{pNiceArray}{>{\strut}cccc}% <-- % mandatory
+ [margin, extra-margin=2pt,color-inside,no-cell-nodes]
\emph{\rowcolor{red!15}}A_{11} & A_{12} & A_{13} & A_{14} \\
A_{21} & \emph{\rowcolor{red!15}}A_{22} & A_{23} & A_{24} \\
A_{31} & A_{32} & \emph{\rowcolor{red!15}}A_{33} & A_{34} \\
@@ -6974,7 +7161,7 @@ used−even when \pkg{colortbl} is not loaded).
\end{pNiceArray}
\end{Code}
-\[\begin{pNiceArray}{>{\strut}cccc}[margin, extra-margin=2pt,color-inside]
+\[\begin{pNiceArray}{>{\strut}cccc}[margin, extra-margin=2pt,color-inside,no-cell-nodes]
\rowcolor{red!15}A_{11} & A_{12} & A_{13} & A_{14} \\
A_{21} & \rowcolor{red!15}A_{22} & A_{23} & A_{24} \\
A_{31} & A_{32} & \rowcolor{red!15}A_{33} & A_{34} \\
@@ -7281,7 +7468,16 @@ The successive versions of the file |nicematrix.sty| provided by TeXLive are ava
\nolinkurl{https:www.tug.org/svn/texlive/trunk/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty}
}
-\subsection*{Changes between version 6.25 and 6.26}
+\subsection*{Changes between version 6.27 and 6.28}
+
+Sub-blocks with the character |&| (when the key |ampersand-in-block| is in
+force).
+
+Keys |p| and |j| for the command |\Block|.
+
+PGF nodes i.1, i.2, i.3, etc.
+
+\subsection*{Changes between version 6.26 and 6.27}
New key |light-syntax-expanded|.
@@ -7642,305 +7838,6 @@ Command |\Vdotsfor| similar to |\Hdotsfor|
The variable |\g_nicematrix_code_after_tl| is now public.
-\subsection*{Changes between versions 4.4 and 5.0}
-
-Use of the standard column types |l|, |c| and |r| instead of |L|, |C| and |R|.
-
-It's now possible to use the command |\diagbox| in a |\Block|.
-
-Command |\tabularnote|
-
-\subsection*{Changes between versions 4.3 and 4.4}
-
-New key |hvlines-except-corners| (now deprecated).
-
-\subsection*{Changes between versions 4.2 and 4.3}
-
-The horizontal centering of the content of a |\Block| is correct even when an
-instruction such as |!{\qquad}| is used in the preamble of the array.
-
-It's now possible to use the command |\Block| in the ``last row''.
-
-\subsection*{Changes between versions 4.1 and 4.2}
-
-It's now possible to write |\begin{pNiceMatrix}a&b\\c&d\end{pNiceMatrix}^2|
-with the expected result.
-
-\subsection*{Changes between versions 4.0 and 4.1}
-
-New keys |cell-space-top-limit| and |cell-space-bottom-limit|
-
-New command |\diagbox|
-
-The key |hvline| don't draw rules in the blocks (commands |\Block|) and in the
-virtual blocks corresponding to the dotted lines.
-
-\subsection*{Changes between versions 3.15 and 4.0}
-
-New environment |{NiceTabular}|
-
-Commands to color cells, rows and columns with a perfect result in the \textsc{pdf}.
-
-\subsection*{Changes between versions 3.14 and 3.15}
-
-It's possible to put labels on the dotted lines drawn by |\Ldots|, |\Cdots|,
-|\Vdots|, |\Ddots|, |\Iddots|, |\Hdotsfor| and the command |\line| in the
-|code-after| with the tokens |_| and |^|.
-
-The option |baseline| is now available in all the environments of
-\pkg{nicematrix}. Before, it was available only in |{NiceArray}|.
-
-New keyword |\CodeAfter| (in the environments of \pkg{nicematrix}).
-
-\subsection*{Changes between versions 3.13 and 3.14}
-
-Correction of a bug (question 60761504 on |stackoverflow|).
-
-Better error messages when the user uses |&| or |\\| when |light-syntax| is in
-force.
-
-\subsection*{Changes between versions 3.12 and 3.13}
-
-The behaviour of the command |\rotate| is improved when used in the ``last
-row''.
-
-The option |dotted-lines-margin| has been renamed in |xdots/shorten| and the
-options |xdots/color| and |xdots/line-style| have been added for a complete
-customisation of the dotted lines.
-
-In the environments without preamble (|{NiceMatrix}|, |{pNiceMatrix}|, etc.),
-it's possible to use the options |l| (=|L|) or |r| (=|R|) to specify the type
-of the columns.
-
-The code of \pkg{nicematrix} no longer uses TikZ but only \textsc{pgf}. By
-default, TikZ is \emph{not} loaded by \pkg{nicematrix}.
-
-\subsection*{Changes between versions 3.11 and 3.12}
-
-Command |\rotate| in the cells of the array.
-
-Options |vlines|, |hlines| and |hvlines|.
-
-Option |baseline| pour |{NiceArray}| (not for the other environments).
-
-The name of the TikZ nodes created by the command |\Block| has changed: when
-the command has been issued in the cell $i$|-|$j$, the name is
-$i$|-|$j$|-block| and, if the creation of the ``medium nodes'' is required, a
-node $i$|-|$j$|-block-medium| is created.
-
-If the user tries to use more columns than allowed by its environment, an error
-is raised by nicematrix (instead of a low-level error).
-
-The package must be loaded with the option |obsolete-environments| if we want
-to use the deprecated environments.
-
-\subsection*{Changes between versions 3.10 and 3.11}
-
-Correction of a bug linked to |first-row| and |last-row|.
-
-\subsection*{Changes between version 3.9 and 3.10}
-
-New option |light-syntax| (and |end-of-row|).
-
-New option |dotted-lines-margin| for fine tuning of the dotted lines.
-
-\subsection*{Changes between version 3.8 and 3.9}
-
-New commands |\NiceMatrixLastEnv| and |\OnlyMainNiceMatrix|.
-
-New options |create-medium-nodes| and |create-large-nodes|.
-
-\subsection*{Changes between version 3.7 and 3.8}
-
-New programmation for the command |\Block| when the block has only one row.
-With this programmation, the vertical rules drawn by the specifier
-``\verb+|+'' at the end of the block is actually drawn. In previous versions,
-they were not because the block of one row was constructed with
-|\multicolumn|.
-
-An error is raised when an obsolete environment is used.
-
-\subsection*{Changes between version 3.6 and 3.7}
-
-The four ``corners'' of the matrix are correctly protected against the four
-codes: |code-for-first-col|, |code-for-last-col|, |code-for-first-row| and
-|code-for-last-row|.
-
-New command |\pAutoNiceMatrix| and its variants (suggestion of Christophe
-Bal).
-
-\subsection*{Changes between version 3.5 and 3.6}
-
-LaTeX counters |iRow| and |jCol| available in the cells of the array.
-
-Addition of |\normalbaselines| before the construction of the array: in
-environments like |{align}| of \pkg{amsmath} the value of |\baselineskip| is
-changed and if the options |first-row| and |last-row| were used in an
-environment of \pkg{nicematrix}, the position of the delimiters was wrong.
-
-A warning is written in the |.log| file if an obsolete environment is used.
-
-There is no longer artificial errors |Duplicate~name| in the environments of
-\pkg{amsmath}.
-
-\subsection*{Changes between version 3.4 and 3.5}
-
-Correction on a bug on the two previous versions where the |code-after| was
-not executed.
-
-\subsection*{Changes between version 3.3 and 3.4}
-
-Following a discussion on TeX StackExchange\footnote{cf.
-|tex.stackexchange.com/questions/510841/nicematrix-and-tikz-external-optimize|},
-optimization of TikZ externalization is disabled in the environments of
-\pkg{nicematrix} when the class \cls{standalone} or the package
-\pkg{standalone} is used.
-
-\subsection*{Changes between version 3.2 and 3.3}
-
-The options |first-row|, |last-row|, |first-col| and |last-col| are now
-available in the environments |{NiceMatrix}|, |{pNiceMatrix}|,
-|{bNiceMatrix}|, etc.
-
-The option |columns-width=auto| doesn't need any more a second compilation.
-
-\subsection*{Changes between version 3.1 and 3.2 (and 3.2a)}
-
-Option |small|.
-
-\subsection*{Changes between version 3.0 and 3.1}
-
-Command |\Block| to draw block matrices.
-
-Error message when the user gives an incorrect value for |last-row|.
-
-The vertical rules in the matrices (drawn by ``\verb+|+'') are now compatible with
-the color fixed by \pkg{colortbl}.
-
-Correction of a bug: it was not possible to use the colon ``|:|'' in the
-preamble of an array when |pdflatex| was used with \pkg{french-babel} (because
-\pkg{french-babel} activates the colon in the beginning of the document).
-
-\subsection*{Changes between version 2.3 and 3.0}
-
-Modification of |\Hdotsfor|. Now |\Hdotsfor| erases the |\vlines| (of ``\verb+|+'')
-as |\hdotsfor| does.
-
-Composition of exterior rows and columns on the four sides of the matrix (and
-not only on two sides) with the options |first-row|, |last-row|, |first-col|
-and |last-col|.
-
-\subsection*{Changes between version 2.2.1 and 2.3}
-
-Compatibility with the column type |S| of \pkg{siunitx}.
-
-Option |hlines|.
-
-\subsection*{Changes between version 2.2 and 2.2.1}
-
-Improvment of the vertical dotted lines drawn by the specifier ``:'' in the
-preamble.
-
-Modification of the position of the dotted lines drawn by |\hdottedline|.
-
-\subsection*{Changes between version 2.1.5 and 2.2}
-
-Possibility to draw horizontal dotted lines to separate rows with the command
-|\hdottedline| (similar to the classical command |\hline| and the command
-|\hdashline| of \pkg{arydshln}).
-
-Possibility to draw vertical dotted lines to separate columns with the
-specifier ``|:|'' in the preamble (similar to the classical specifier
-``\verb+|+'' and the specifier ``|:|'' of \pkg{arydshln}).
-
-\subsection*{Changes between version 2.1.4 and 2.1.5}
-
-Compatibility with the classes \cls{revtex4-1} and \cls{revtex4-2}.
-
-Option |allow-duplicate-names|.
-
-\subsection*{Changes between version 2.1.3 and 2.1.4}
-
-Replacement of some options |O { }| in commands and environments defined with
-\pkg{xparse} by |! O { }| (because a recent version of \pkg{xparse} introduced
-the specifier |!| and modified the default behaviour of the last optional
-arguments).
-
-See |www.texdev.net/2018/04/21/xparse-optional-arguments-at-the-end|
-
-\subsection*{Changes between version 2.1.2 and 2.1.3}
-
-When searching the end of a dotted line from a command like |\Cdots| issued in
-the ``main matrix'' (not in the exterior column), the cells in the exterior
-column are considered as outside the matrix. That means that it's possible to
-do the following matrix with only a |\Cdots| command (and a single |\Vdots|).
-\[\begin{pNiceArray}{Wc{5mm}cWc{5mm}}[first-row,last-col]
-& C_j & \\
-\mbox{\Large $0$} & \Vdots & \mbox{\Large $0$} \\
-\strut & a & \Cdots & L_i \\
-\mbox{\Large $0$} & & \mbox{\Large $0$} \\
-\end{pNiceArray}\]
-
-\subsection*{Changes between version 2.1 and 2.1.1}
-
-Small corrections: for example, the option |code-for-first-row| is now
-available in the command |\NiceMatrixOptions|.
-
-Following a discussion on
-TeX StackExchange\footnote{cf.
-|tex.stackexchange.com/questions/450841/tikz-externalize-and-nicematrix-package|},
-TikZ externalization is now deactivated in the environments of the
-package \pkg{nicematrix}.\footnote{Before this version, there was an error
-when using \pkg{nicematrix} with TikZ externalization. In any case, it's not
-possible to externalize the TikZ elements constructed by \pkg{nicematrix}
-because they use the options |overlay| and |remember picture|.}
-
-\subsection*{Changes between version 2.0 and 2.1}
-
-New implementation of the environment |{pNiceArrayRC}|. With this new
-implementation, there is no restriction on the width of the columns.
-
-The package \pkg{nicematrix} no longer loads \pkg{mathtools} but only
-\pkg{amsmath}.
-
-Creation of ``medium nodes'' and ``large nodes''.
-
-\subsection*{Changes between version 1.4 and 2.0}
-
-The versions 1.0 to 1.4 of \pkg{nicematrix} were focused on the continuous
-dotted lines whereas the version 2.0 of \pkg{nicematrix} provides different
-features to improve the typesetting of mathematical matrices.
-
-\subsection*{Changes between version 1.3 and 1.4}
-
-The column types |w| and |W| can now be used in the environments
-|{NiceArray}|, |{pNiceArrayC}| and its variants with the same meaning as in
-the package \pkg{array}.
-
-New option |columns-width| to fix the same width for all the columns of the
-array.
-
-\subsection*{Changes between version 1.2 and 1.3}
-
-New environment |{pNiceArrayC}| and its variants.
-
-Correction of a bug in the definition of |{BNiceMatrix}|, |{vNiceMatrix}| and
-|{VNiceMatrix}| (in fact, it was a typo).
-
-Options are now available locally in |{pNiceMatrix}| and its variants.
-
-The names of the options are changed. The old names were names in ``camel
-style''.
-
-\subsection*{Changes between versions 1.1 and 1.2}
-
-New environment |{NiceArray}| with column types |L|, |C| and |R|.
-
-\subsection*{Changes between versions 1.0 and 1.1}
-
-The dotted lines are no longer drawn with TikZ nodes but with TikZ circles
-(for efficiency).
-
\cleardoublepage
diff --git a/macros/latex/contrib/oberdiek/README.md b/macros/latex/contrib/oberdiek/README.md
index 4a2250cf37..b455eff334 100644
--- a/macros/latex/contrib/oberdiek/README.md
+++ b/macros/latex/contrib/oberdiek/README.md
@@ -1,6 +1,6 @@
# Oberdiek bundle
-Version: 2023-12-04
+Version: 2024-07-26
This file describes the directory
CTAN:macros/latex/contrib/oberdiek/
@@ -11,7 +11,7 @@ It contains several packages:
## Copyright (C)
* 2007, 2009-2011 Heiko Oberdiek
-* 2016-2023 Oberdiek Package Support Group
+* 2016-2024 Oberdiek Package Support Group
## License
LATEX Project Public License, version 1.3c or later.
@@ -48,7 +48,6 @@ Other files in the CTAN directory:
* flags: setting and clearing flags in bit fields and converting the bit field into a decimal number;
* holtxdoc: extra documentation macros;
* hypbmsec: bookmarks in sectioning commands;
-* hypcap: anjusting anchors of captions;
* hypgotoe: experimental package for links to embedded files;
* hyphsubst: substitute hyphenation patterns;
* ifdraft: switch for option draft;
@@ -66,6 +65,5 @@ Other files in the CTAN directory:
* stampinclude: selects the files for \include by inspecting the timestamp of the .aux file(s);
* tabularht: tabulars with height specification;
* tabularkv: key value interface for tabular parameters;
-* telprint: print German telephone numbers;
* thepdfnumber: canonical numbers for use in PDF files and elsewhere;
* twoopt: commands with two optional arguments;
diff --git a/macros/latex/contrib/oberdiek/aliascnt.dtx b/macros/latex/contrib/oberdiek/aliascnt.dtx
index 47bfec1ee2..7010eb64e1 100644
--- a/macros/latex/contrib/oberdiek/aliascnt.dtx
+++ b/macros/latex/contrib/oberdiek/aliascnt.dtx
@@ -52,7 +52,7 @@
% use A4 as paper format:
% \PassOptionsToClass{a4paper}{article}
%
-% Programm calls to get the documentation (example):
+% Program calls to get the documentation (example):
% pdflatex aliascnt.dtx
% makeindex -s gind.ist aliascnt.idx
% pdflatex aliascnt.dtx
@@ -308,7 +308,7 @@ and the derived files
% Therefore we must ensure that manipulations to the clear list
% are done with the clear list macro of a real counter.
% \begin{macro}{\AC@findrootcnt}
-% \cs{AC@findrootcnt} walks throught the aliasing relations
+% \cs{AC@findrootcnt} walks through the aliasing relations
% to find the base counter.
% \begin{macrocode}
\newcommand*{\AC@findrootcnt}[1]{%
diff --git a/macros/latex/contrib/oberdiek/aliascnt.pdf b/macros/latex/contrib/oberdiek/aliascnt.pdf
index 5978332f27..cac6636ab9 100644
--- a/macros/latex/contrib/oberdiek/aliascnt.pdf
+++ b/macros/latex/contrib/oberdiek/aliascnt.pdf
Binary files differ
diff --git a/macros/latex/contrib/oberdiek/bmpsize.dtx b/macros/latex/contrib/oberdiek/bmpsize.dtx
index 0eec647c99..bdcf6004d0 100644
--- a/macros/latex/contrib/oberdiek/bmpsize.dtx
+++ b/macros/latex/contrib/oberdiek/bmpsize.dtx
@@ -54,7 +54,7 @@
% use A4 as paper format:
% \PassOptionsToClass{a4paper}{article}
%
-% Programm calls to get the documentation (example):
+% Program calls to get the documentation (example):
% pdflatex bmpsize.dtx
% makeindex -s gind.ist bmpsize.idx
% pdflatex bmpsize.dtx
@@ -339,7 +339,7 @@ and the derived files
%
% A parser sets the switch \cs{ifbmpsize@ok} to true, if it
% could successfully parse the image file.
-% The width and height are returnd in \cs{bmpsize@width} and
+% The width and height are returned in \cs{bmpsize@width} and
% \cs{bmpsize@height}. If information about density is available,
% it is used to calculate width and height of the image, otherwise
% the values given by option \xoption{defaultresolution} is used.
diff --git a/macros/latex/contrib/oberdiek/bmpsize.pdf b/macros/latex/contrib/oberdiek/bmpsize.pdf
index ecd47adb93..b376afc96a 100644
--- a/macros/latex/contrib/oberdiek/bmpsize.pdf
+++ b/macros/latex/contrib/oberdiek/bmpsize.pdf
Binary files differ
diff --git a/macros/latex/contrib/oberdiek/centernot.dtx b/macros/latex/contrib/oberdiek/centernot.dtx
index dd990a3319..aa2cff5f0d 100644
--- a/macros/latex/contrib/oberdiek/centernot.dtx
+++ b/macros/latex/contrib/oberdiek/centernot.dtx
@@ -52,7 +52,7 @@
% use A4 as paper format:
% \PassOptionsToClass{a4paper}{article}
%
-% Programm calls to get the documentation (example):
+% Program calls to get the documentation (example):
% pdflatex centernot.dtx
% makeindex -s gind.ist centernot.idx
% pdflatex centernot.dtx
diff --git a/macros/latex/contrib/oberdiek/centernot.pdf b/macros/latex/contrib/oberdiek/centernot.pdf
index 344a245433..a0984732ea 100644
--- a/macros/latex/contrib/oberdiek/centernot.pdf
+++ b/macros/latex/contrib/oberdiek/centernot.pdf
Binary files differ
diff --git a/macros/latex/contrib/oberdiek/chemarr.dtx b/macros/latex/contrib/oberdiek/chemarr.dtx
index 78e1a3cbeb..24989ed9db 100644
--- a/macros/latex/contrib/oberdiek/chemarr.dtx
+++ b/macros/latex/contrib/oberdiek/chemarr.dtx
@@ -53,7 +53,7 @@
% use A4 as paper format:
% \PassOptionsToClass{a4paper}{article}
%
-% Programm calls to get the documentation (example):
+% Program calls to get the documentation (example):
% pdflatex chemarr.dtx
% makeindex -s gind.ist chemarr.idx
% pdflatex chemarr.dtx
diff --git a/macros/latex/contrib/oberdiek/chemarr.pdf b/macros/latex/contrib/oberdiek/chemarr.pdf
index c745f15582..7a39e48a3e 100644
--- a/macros/latex/contrib/oberdiek/chemarr.pdf
+++ b/macros/latex/contrib/oberdiek/chemarr.pdf
Binary files differ
diff --git a/macros/latex/contrib/oberdiek/classlist.dtx b/macros/latex/contrib/oberdiek/classlist.dtx
index 8b45464521..370fc269d0 100644
--- a/macros/latex/contrib/oberdiek/classlist.dtx
+++ b/macros/latex/contrib/oberdiek/classlist.dtx
@@ -52,7 +52,7 @@
% use A4 as paper format:
% \PassOptionsToClass{a4paper}{article}
%
-% Programm calls to get the documentation (example):
+% Program calls to get the documentation (example):
% pdflatex classlist.dtx
% makeindex -s gind.ist classlist.idx
% pdflatex classlist.dtx
@@ -233,7 +233,7 @@ and the derived files
% configured by
% \item[\cs{PrintClassListTitle}] for the title and
% \item[\cs{PrintClassListEntry}] for formatting the entries.
-% See the implemenation how to use these.
+% See the implementation for how to use these.
% \end{description}
%
% \StopEventually{
diff --git a/macros/latex/contrib/oberdiek/classlist.pdf b/macros/latex/contrib/oberdiek/classlist.pdf
index 40ef460d94..365627fee6 100644
--- a/macros/latex/contrib/oberdiek/classlist.pdf
+++ b/macros/latex/contrib/oberdiek/classlist.pdf
Binary files differ
diff --git a/macros/latex/contrib/oberdiek/colonequals.dtx b/macros/latex/contrib/oberdiek/colonequals.dtx
index aeae542c39..007a42cbe5 100644
--- a/macros/latex/contrib/oberdiek/colonequals.dtx
+++ b/macros/latex/contrib/oberdiek/colonequals.dtx
@@ -52,7 +52,7 @@
% use A4 as paper format:
% \PassOptionsToClass{a4paper}{article}
%
-% Programm calls to get the documentation (example):
+% Program calls to get the documentation (example):
% pdflatex colonequals.dtx
% makeindex -s gind.ist colonequals.idx
% pdflatex colonequals.dtx
diff --git a/macros/latex/contrib/oberdiek/colonequals.pdf b/macros/latex/contrib/oberdiek/colonequals.pdf
index 1b4e949c6b..3446b59539 100644
--- a/macros/latex/contrib/oberdiek/colonequals.pdf
+++ b/macros/latex/contrib/oberdiek/colonequals.pdf
Binary files differ
diff --git a/macros/latex/contrib/oberdiek/dvipscol.dtx b/macros/latex/contrib/oberdiek/dvipscol.dtx
index 0141ae2a94..335196bf91 100644
--- a/macros/latex/contrib/oberdiek/dvipscol.dtx
+++ b/macros/latex/contrib/oberdiek/dvipscol.dtx
@@ -52,7 +52,7 @@
% use A4 as paper format:
% \PassOptionsToClass{a4paper}{article}
%
-% Programm calls to get the documentation (example):
+% Program calls to get the documentation (example):
% pdflatex dvipscol.dtx
% makeindex -s gind.ist dvipscol.idx
% pdflatex dvipscol.dtx
diff --git a/macros/latex/contrib/oberdiek/dvipscol.pdf b/macros/latex/contrib/oberdiek/dvipscol.pdf
index 21243da3b1..3ff66c8e89 100644
--- a/macros/latex/contrib/oberdiek/dvipscol.pdf
+++ b/macros/latex/contrib/oberdiek/dvipscol.pdf
Binary files differ
diff --git a/macros/latex/contrib/oberdiek/engord.dtx b/macros/latex/contrib/oberdiek/engord.dtx
index 6c75953200..a0ba888a1a 100644
--- a/macros/latex/contrib/oberdiek/engord.dtx
+++ b/macros/latex/contrib/oberdiek/engord.dtx
@@ -55,7 +55,7 @@
% use A4 as paper format:
% \PassOptionsToClass{a4paper}{article}
%
-% Programm calls to get the documentation (example):
+% Program calls to get the documentation (example):
% pdflatex engord.dtx
% makeindex -s gind.ist engord.idx
% pdflatex engord.dtx
diff --git a/macros/latex/contrib/oberdiek/engord.pdf b/macros/latex/contrib/oberdiek/engord.pdf
index 0bd217efba..49c876e5b6 100644
--- a/macros/latex/contrib/oberdiek/engord.pdf
+++ b/macros/latex/contrib/oberdiek/engord.pdf
Binary files differ
diff --git a/macros/latex/contrib/oberdiek/enparen.dtx b/macros/latex/contrib/oberdiek/enparen.dtx
index 773ebc861c..af503d79dc 100644
--- a/macros/latex/contrib/oberdiek/enparen.dtx
+++ b/macros/latex/contrib/oberdiek/enparen.dtx
@@ -52,7 +52,7 @@
% use A4 as paper format:
% \PassOptionsToClass{a4paper}{article}
%
-% Programm calls to get the documentation (example):
+% Program calls to get the documentation (example):
% pdflatex enparen.dtx
% makeindex -s gind.ist enparen.idx
% pdflatex enparen.dtx
@@ -335,12 +335,12 @@ and the derived files
% \subsection{Notes}
%
% \begin{description}
-% \item[Implicite kerning:]
-% Unexpandable stuff might affect the implicite kerning.
+% \item[Implicit kerning:]
+% Unexpandable stuff might affect the implicit kerning.
% The package cannot avoid this, because it need to define
-% and redefine macros at the occurence of each symbol.
+% and redefine macros at the occurrence of each symbol.
% This is done before the opening and after the closing
-% symbol, thus that the implicite kerning inside
+% symbol, thus that the implicit kerning inside
% is not affected.
% \end{description}
%
diff --git a/macros/latex/contrib/oberdiek/enparen.pdf b/macros/latex/contrib/oberdiek/enparen.pdf
index d4de5125ba..284b88c5c1 100644
--- a/macros/latex/contrib/oberdiek/enparen.pdf
+++ b/macros/latex/contrib/oberdiek/enparen.pdf
Binary files differ
diff --git a/macros/latex/contrib/oberdiek/eolgrab.dtx b/macros/latex/contrib/oberdiek/eolgrab.dtx
index d27e99d34e..87f0aceaa4 100644
--- a/macros/latex/contrib/oberdiek/eolgrab.dtx
+++ b/macros/latex/contrib/oberdiek/eolgrab.dtx
@@ -58,7 +58,7 @@
% use A4 as paper format:
% \PassOptionsToClass{a4paper}{article}
%
-% Programm calls to get the documentation (example):
+% Program calls to get the documentation (example):
% pdflatex eolgrab.dtx
% makeindex -s gind.ist eolgrab.idx
% pdflatex eolgrab.dtx
diff --git a/macros/latex/contrib/oberdiek/eolgrab.pdf b/macros/latex/contrib/oberdiek/eolgrab.pdf
index 23c097b571..24a22d462c 100644
--- a/macros/latex/contrib/oberdiek/eolgrab.pdf
+++ b/macros/latex/contrib/oberdiek/eolgrab.pdf
Binary files differ
diff --git a/macros/latex/contrib/oberdiek/fibnum.dtx b/macros/latex/contrib/oberdiek/fibnum.dtx
index 9c3f8f7986..de66a37710 100644
--- a/macros/latex/contrib/oberdiek/fibnum.dtx
+++ b/macros/latex/contrib/oberdiek/fibnum.dtx
@@ -56,7 +56,7 @@
% use A4 as paper format:
% \PassOptionsToClass{a4paper}{article}
%
-% Programm calls to get the documentation (example):
+% Program calls to get the documentation (example):
% pdflatex fibnum.dtx
% bibtex fibnum.aux
% makeindex -s gind.ist fibnum.idx
diff --git a/macros/latex/contrib/oberdiek/fibnum.pdf b/macros/latex/contrib/oberdiek/fibnum.pdf
index 2d2510854e..7a143ac3b6 100644
--- a/macros/latex/contrib/oberdiek/fibnum.pdf
+++ b/macros/latex/contrib/oberdiek/fibnum.pdf
Binary files differ
diff --git a/macros/latex/contrib/oberdiek/flags.dtx b/macros/latex/contrib/oberdiek/flags.dtx
index 6a2d05c7b4..8834113617 100644
--- a/macros/latex/contrib/oberdiek/flags.dtx
+++ b/macros/latex/contrib/oberdiek/flags.dtx
@@ -52,7 +52,7 @@
% use A4 as paper format:
% \PassOptionsToClass{a4paper}{article}
%
-% Programm calls to get the documentation (example):
+% Program calls to get the documentation (example):
% pdflatex flags.dtx
% makeindex -s gind.ist flags.idx
% pdflatex flags.dtx
diff --git a/macros/latex/contrib/oberdiek/flags.pdf b/macros/latex/contrib/oberdiek/flags.pdf
index f0c8b76d54..17c5868612 100644
--- a/macros/latex/contrib/oberdiek/flags.pdf
+++ b/macros/latex/contrib/oberdiek/flags.pdf
Binary files differ
diff --git a/macros/latex/contrib/oberdiek/holtxdoc.dtx b/macros/latex/contrib/oberdiek/holtxdoc.dtx
index 9ac40aa5ae..b9ba295cfa 100644
--- a/macros/latex/contrib/oberdiek/holtxdoc.dtx
+++ b/macros/latex/contrib/oberdiek/holtxdoc.dtx
@@ -52,7 +52,7 @@
% use A4 as paper format:
% \PassOptionsToClass{a4paper}{article}
%
-% Programm calls to get the documentation (example):
+% Program calls to get the documentation (example):
% pdflatex holtxdoc.dtx
% makeindex -s gind.ist holtxdoc.idx
% pdflatex holtxdoc.dtx
diff --git a/macros/latex/contrib/oberdiek/holtxdoc.pdf b/macros/latex/contrib/oberdiek/holtxdoc.pdf
index 67d630bd54..f2825ebf65 100644
--- a/macros/latex/contrib/oberdiek/holtxdoc.pdf
+++ b/macros/latex/contrib/oberdiek/holtxdoc.pdf
Binary files differ
diff --git a/macros/latex/contrib/oberdiek/hypbmsec.dtx b/macros/latex/contrib/oberdiek/hypbmsec.dtx
index dd26b08d2b..2b5781775c 100644
--- a/macros/latex/contrib/oberdiek/hypbmsec.dtx
+++ b/macros/latex/contrib/oberdiek/hypbmsec.dtx
@@ -52,7 +52,7 @@
% use A4 as paper format:
% \PassOptionsToClass{a4paper}{article}
%
-% Programm calls to get the documentation (example):
+% Program calls to get the documentation (example):
% pdflatex hypbmsec.dtx
% makeindex -s gind.ist hypbmsec.idx
% pdflatex hypbmsec.dtx
@@ -260,7 +260,7 @@ and the derived files
% \begin{itemize}
% \item An additional second optional argument in square brackets.
% \item An additional optional argument in parentheses (in
-% assoziation with a pdf string that is internally surrounded
+% association with a pdf string that is internally surrounded
% by parentheses, too).
% \end{itemize}
% Because \Package{\filename} stores the original meaning of the
@@ -375,7 +375,7 @@ and the derived files
[2016/05/16 v2.5 Bookmarks in sectioning commands (HO)]
% \end{macrocode}
%
-% Because of redifining the sectioning commands, it is dangerous
+% Because of redefining the sectioning commands, it is dangerous
% to reload the package several times.
% \begin{macrocode}
\@ifundefined{hbs@do}{}{%
@@ -554,7 +554,7 @@ and the derived files
% \end{macrocode}
%
% Other packages are allowed to redefine the sectioning commands,
-% if they does not change the syntax. Therefore the redefinitons
+% if they does not change the syntax. Therefore the redefinitions
% of this package should be done after the other packages.
% \begin{macrocode}
\let\hbs@part \part
diff --git a/macros/latex/contrib/oberdiek/hypbmsec.pdf b/macros/latex/contrib/oberdiek/hypbmsec.pdf
index 45e3ce42c2..9e75d5e8fe 100644
--- a/macros/latex/contrib/oberdiek/hypbmsec.pdf
+++ b/macros/latex/contrib/oberdiek/hypbmsec.pdf
Binary files differ
diff --git a/macros/latex/contrib/oberdiek/hypgotoe.dtx b/macros/latex/contrib/oberdiek/hypgotoe.dtx
index 3f6af63a3e..7a4c55e451 100644
--- a/macros/latex/contrib/oberdiek/hypgotoe.dtx
+++ b/macros/latex/contrib/oberdiek/hypgotoe.dtx
@@ -53,7 +53,7 @@
% use A4 as paper format:
% \PassOptionsToClass{a4paper}{article}
%
-% Programm calls to get the documentation (example):
+% Program calls to get the documentation (example):
% pdflatex hypgotoe.dtx
% makeindex -s gind.ist hypgotoe.idx
% pdflatex hypgotoe.dtx
@@ -195,7 +195,7 @@ and the derived files
% \item
% Currently only embedded files and named destinations are supported.
% \item
-% Missing are support for destination arrays and attachted files.
+% Missing are support for destination arrays and attached files.
% \item
% Special characters aren't supported either.
% \end{itemize}
diff --git a/macros/latex/contrib/oberdiek/hypgotoe.pdf b/macros/latex/contrib/oberdiek/hypgotoe.pdf
index 98d7d1dd4b..a6203e57a1 100644
--- a/macros/latex/contrib/oberdiek/hypgotoe.pdf
+++ b/macros/latex/contrib/oberdiek/hypgotoe.pdf
Binary files differ
diff --git a/macros/latex/contrib/oberdiek/hyphsubst.dtx b/macros/latex/contrib/oberdiek/hyphsubst.dtx
index e0fd44bf12..996257b0d4 100644
--- a/macros/latex/contrib/oberdiek/hyphsubst.dtx
+++ b/macros/latex/contrib/oberdiek/hyphsubst.dtx
@@ -56,7 +56,7 @@
% use A4 as paper format:
% \PassOptionsToClass{a4paper}{article}
%
-% Programm calls to get the documentation (example):
+% Program calls to get the documentation (example):
% pdflatex hyphsubst.dtx
% makeindex -s gind.ist hyphsubst.idx
% pdflatex hyphsubst.dtx
diff --git a/macros/latex/contrib/oberdiek/hyphsubst.pdf b/macros/latex/contrib/oberdiek/hyphsubst.pdf
index 4c390bfdd9..0d559684d1 100644
--- a/macros/latex/contrib/oberdiek/hyphsubst.pdf
+++ b/macros/latex/contrib/oberdiek/hyphsubst.pdf
Binary files differ
diff --git a/macros/latex/contrib/oberdiek/ifdraft.dtx b/macros/latex/contrib/oberdiek/ifdraft.dtx
index 0b4918a6d0..7b69505449 100644
--- a/macros/latex/contrib/oberdiek/ifdraft.dtx
+++ b/macros/latex/contrib/oberdiek/ifdraft.dtx
@@ -52,7 +52,7 @@
% use A4 as paper format:
% \PassOptionsToClass{a4paper}{article}
%
-% Programm calls to get the documentation (example):
+% Program calls to get the documentation (example):
% pdflatex ifdraft.dtx
% makeindex -s gind.ist ifdraft.idx
% pdflatex ifdraft.dtx
diff --git a/macros/latex/contrib/oberdiek/ifdraft.pdf b/macros/latex/contrib/oberdiek/ifdraft.pdf
index 35e257d875..7e6a251092 100644
--- a/macros/latex/contrib/oberdiek/ifdraft.pdf
+++ b/macros/latex/contrib/oberdiek/ifdraft.pdf
Binary files differ
diff --git a/macros/latex/contrib/oberdiek/iflang.dtx b/macros/latex/contrib/oberdiek/iflang.dtx
index fa784b7d45..9eebbd0a8c 100644
--- a/macros/latex/contrib/oberdiek/iflang.dtx
+++ b/macros/latex/contrib/oberdiek/iflang.dtx
@@ -57,7 +57,7 @@
% use A4 as paper format:
% \PassOptionsToClass{a4paper}{article}
%
-% Programm calls to get the documentation (example):
+% Program calls to get the documentation (example):
% pdflatex iflang.dtx
% makeindex -s gind.ist iflang.idx
% pdflatex iflang.dtx
@@ -200,7 +200,7 @@ and the derived files
% Package \xpackage{babel} defines \cs{iflanguagename}. As first
% argument it takes a language name and executes the second or
% third argument depending on the current language. This
-% language test is based on hypenation patterns. However, it
+% language test is based on hyphenation patterns. However, it
% is possible that different languages or dialects share the
% same patterns. In such cases \cs{iflanguagename} fails.
%
@@ -211,7 +211,7 @@ and the derived files
%
% \begin{declcs}{IfLanguageName} \M{lang} \M{then} \M{else}
% \end{declcs}
-% Makro \cs{IfLanguageName} compares language \meta{lang} with
+% Macro \cs{IfLanguageName} compares language \meta{lang} with
% the current setting of macro \cs{languagename}. If both
% contains the same name then the \meta{then} part is called,
% otherwise the \meta{else} part.
@@ -562,7 +562,7 @@ and the derived files
% at the conference Bacho\TeX~2005:
% \url{http://www.gust.org.pl/projects/pearls/2005p/david-kastrup/bachotex2005-david-kastrup-pearl1.pdf}
%
-% The orignal code allows macros inside the second string.
+% The original code allows macros inside the second string.
% Because also \cs{languagename} might consists of further
% macros, we need a variant that allows macros in the first
% string, too.
diff --git a/macros/latex/contrib/oberdiek/iflang.pdf b/macros/latex/contrib/oberdiek/iflang.pdf
index 98cb0644a3..c1941fa6ee 100644
--- a/macros/latex/contrib/oberdiek/iflang.pdf
+++ b/macros/latex/contrib/oberdiek/iflang.pdf
Binary files differ
diff --git a/macros/latex/contrib/oberdiek/oberdiek-bundle.bib b/macros/latex/contrib/oberdiek/oberdiek-bundle.bib
index 44fce8aeca..364db304ef 100644
--- a/macros/latex/contrib/oberdiek/oberdiek-bundle.bib
+++ b/macros/latex/contrib/oberdiek/oberdiek-bundle.bib
@@ -96,13 +96,6 @@
version={2.5},
url={https://ctan.org/pkg/hypbmsec},
}
-@manual{oberdiek:hypcap,
- title={The hypcap package},
- author={Heiko Oberdiek},
- date={2016-05-16},
- version={1.12},
- url={https://ctan.org/pkg/hypcap},
-}
@manual{oberdiek:hypgotoe,
title={The hypgotoe package},
author={Heiko Oberdiek},
@@ -243,13 +236,6 @@
version={1.2},
url={https://ctan.org/pkg/tabularkv},
}
-@manual{oberdiek:telprint,
- title={The telprint package},
- author={Heiko Oberdiek},
- date={2016-05-16},
- version={1.11},
- url={https://ctan.org/pkg/telprint},
-}
@manual{oberdiek:thepdfnumber,
title={The thepdfnumber package},
author={Heiko Oberdiek},
diff --git a/macros/latex/contrib/oberdiek/oberdiek.ins b/macros/latex/contrib/oberdiek/oberdiek.ins
index dc59a6e024..099d1f538d 100644
--- a/macros/latex/contrib/oberdiek/oberdiek.ins
+++ b/macros/latex/contrib/oberdiek/oberdiek.ins
@@ -3,7 +3,7 @@
%
% Copyright (C)
% 1999, 2001, 2006 Heiko Oberdiek
-% 2016-2020 Oberdiek Package Support Group
+% 2016-2024 Oberdiek Package Support Group
% https://github.com/ho-tex/oberdiek/issues
%
% This work may be distributed and/or modified under the
@@ -40,7 +40,6 @@
\batchinput{flags.dtx}
\batchinput{holtxdoc.dtx}
\batchinput{hypbmsec.dtx}
-\batchinput{hypcap.dtx}
\batchinput{hypgotoe.dtx}
\batchinput{hyphsubst.dtx}
\batchinput{ifdraft.dtx}
@@ -58,7 +57,6 @@
\batchinput{stampinclude.dtx}
\batchinput{tabularht.dtx}
\batchinput{tabularkv.dtx}
-\batchinput{telprint.dtx}
\batchinput{thepdfnumber.dtx}
\batchinput{twoopt.dtx}
diff --git a/macros/latex/contrib/oberdiek/oberdiek.pdf b/macros/latex/contrib/oberdiek/oberdiek.pdf
index 16e08d826a..31c3efdda7 100644
--- a/macros/latex/contrib/oberdiek/oberdiek.pdf
+++ b/macros/latex/contrib/oberdiek/oberdiek.pdf
Binary files differ
diff --git a/macros/latex/contrib/oberdiek/oberdiek.tex b/macros/latex/contrib/oberdiek/oberdiek.tex
index 3849551d71..0759250c24 100644
--- a/macros/latex/contrib/oberdiek/oberdiek.tex
+++ b/macros/latex/contrib/oberdiek/oberdiek.tex
@@ -11,11 +11,11 @@
\newcommand*{\Author}{Heiko Oberdiek}
\newcommand*{\Email}{ho-tex at tug.org}
-\newcommand*{\Date}{2023/01/10}
+\newcommand*{\Date}{2024/07/26}
% Copyright (C) 2006-2016 by
% Heiko Oberdiek
-% Copyright (C) 2016-2023 by
+% Copyright (C) 2016-2024 by
% Oberdiek Package Support Group
%
% This work may be distributed and/or modified under the
@@ -203,8 +203,6 @@
[\entrysep]
\entry{hypbmsec}{Bookmarks in sectioning commands}%
[\entrysep]
-\entry{hypcap}{Adjusting the anchors of captions}%
-[\entrysep]
\entry{hypgotoe}{Links to embedded files}%
[\entrysep]
\entry{hyphsubst}{Substitute hyphenation patterns}%
@@ -239,8 +237,6 @@
[\entrysep]
\entry{tabularkv}{Tabular with key value interface}%
[\entrysep]
-\entry{telprint}{Format German phone numbers}%
-[\entrysep]
\entry{thepdfnumber}{Print PDF numbers with minimal digits}%
[\entrysep]
\entry{twoopt}{Definitions with two optional arguments}%
@@ -391,20 +387,6 @@ a replacement for the bookmarks can be given.
\tocinclude{hypbmsec}
\newpage
-\subsection{\pkgsectformat{hypcap}}
-\label{hypcap}
-\begin{abstract}
-This package tries a solution of the problem with
-hyperref, that links to floats points below the
-caption and not at the beginning of the float.
-Therefore this package divides the task into two
-part, the link setting with \cs{capstart} or
-automatically at the beginning of a float and
-the rest in the \cs{caption} command.
-\end{abstract}
-\tocinclude{hypcap}
-
-\newpage
\subsection{\pkgsectformat{hypgotoe}}
\label{hypgotoe}
\begin{abstract}
@@ -520,7 +502,7 @@ is supported. Index preambles can be given either by means of package
\label{setouterhbox}
\begin{abstract}
If math stuff is set in an \cs{hbox}, then TeX
-performs some optimization and omits the implicite
+performs some optimization and omits the implicit
penalties \cs{binoppenalty} and \cs{relpenalty}.
This packages tries to put stuff into an \cs{hbox}
without getting lost of those penalties.
@@ -578,15 +560,6 @@ especially if package \xpackage{tabularht} is used.
\tocinclude{tabularkv}
\newpage
-\subsection{\pkgsectformat{telprint}}
-\label{telprint}
-\begin{abstract}
-Package \xpackage{telprint} provides \cs{telprint} for formatting
-German phone numbers.
-\end{abstract}
-\tocinclude{telprint}
-
-\newpage
\subsection{\pkgsectformat{thepdfnumber}}
\label{thepdfnumber}
\begin{abstract}
diff --git a/macros/latex/contrib/oberdiek/pdfcolparallel.dtx b/macros/latex/contrib/oberdiek/pdfcolparallel.dtx
index 17893f98a9..02df672d4e 100644
--- a/macros/latex/contrib/oberdiek/pdfcolparallel.dtx
+++ b/macros/latex/contrib/oberdiek/pdfcolparallel.dtx
@@ -53,7 +53,7 @@
% use A4 as paper format:
% \PassOptionsToClass{a4paper}{article}
%
-% Programm calls to get the documentation (example):
+% Program calls to get the documentation (example):
% pdflatex pdfcolparallel.dtx
% makeindex -s gind.ist pdfcolparallel.idx
% pdflatex pdfcolparallel.dtx
diff --git a/macros/latex/contrib/oberdiek/pdfcolparallel.pdf b/macros/latex/contrib/oberdiek/pdfcolparallel.pdf
index 90a3b348a0..d97c8441f4 100644
--- a/macros/latex/contrib/oberdiek/pdfcolparallel.pdf
+++ b/macros/latex/contrib/oberdiek/pdfcolparallel.pdf
Binary files differ
diff --git a/macros/latex/contrib/oberdiek/pdfcolparcolumns.dtx b/macros/latex/contrib/oberdiek/pdfcolparcolumns.dtx
index 77d8aab071..a382037b42 100644
--- a/macros/latex/contrib/oberdiek/pdfcolparcolumns.dtx
+++ b/macros/latex/contrib/oberdiek/pdfcolparcolumns.dtx
@@ -53,7 +53,7 @@
% use A4 as paper format:
% \PassOptionsToClass{a4paper}{article}
%
-% Programm calls to get the documentation (example):
+% Program calls to get the documentation (example):
% pdflatex pdfcolparcolumns.dtx
% makeindex -s gind.ist pdfcolparcolumns.idx
% pdflatex pdfcolparcolumns.dtx
diff --git a/macros/latex/contrib/oberdiek/pdfcolparcolumns.pdf b/macros/latex/contrib/oberdiek/pdfcolparcolumns.pdf
index a49189ba4a..8afe31978a 100644
--- a/macros/latex/contrib/oberdiek/pdfcolparcolumns.pdf
+++ b/macros/latex/contrib/oberdiek/pdfcolparcolumns.pdf
Binary files differ
diff --git a/macros/latex/contrib/oberdiek/pdfcrypt.dtx b/macros/latex/contrib/oberdiek/pdfcrypt.dtx
index e4681efa8c..3c5070829c 100644
--- a/macros/latex/contrib/oberdiek/pdfcrypt.dtx
+++ b/macros/latex/contrib/oberdiek/pdfcrypt.dtx
@@ -55,7 +55,7 @@
% use A4 as paper format:
% \PassOptionsToClass{a4paper}{article}
%
-% Programm calls to get the documentation (example):
+% Program calls to get the documentation (example):
% pdflatex pdfcrypt.dtx
% makeindex -s gind.ist pdfcrypt.idx
% pdflatex pdfcrypt.dtx
diff --git a/macros/latex/contrib/oberdiek/pdfcrypt.pdf b/macros/latex/contrib/oberdiek/pdfcrypt.pdf
index 1de22245d4..eabda461d7 100644
--- a/macros/latex/contrib/oberdiek/pdfcrypt.pdf
+++ b/macros/latex/contrib/oberdiek/pdfcrypt.pdf
Binary files differ
diff --git a/macros/latex/contrib/oberdiek/protecteddef.dtx b/macros/latex/contrib/oberdiek/protecteddef.dtx
index cff42cccf7..21aab0c9fc 100644
--- a/macros/latex/contrib/oberdiek/protecteddef.dtx
+++ b/macros/latex/contrib/oberdiek/protecteddef.dtx
@@ -56,7 +56,7 @@
% use A4 as paper format:
% \PassOptionsToClass{a4paper}{article}
%
-% Programm calls to get the documentation (example):
+% Program calls to get the documentation (example):
% pdflatex protecteddef.dtx
% makeindex -s gind.ist protecteddef.idx
% pdflatex protecteddef.dtx
@@ -246,7 +246,7 @@ and the derived files
% is not supported. Macro \meta{cmd} is to be defined as
% \cs{long} macro without star with \meta{num} arguments.
%
-% The number of arguments \meta{num} must be given as explicite digit
+% The number of arguments \meta{num} must be given as explicit digit
% |0| upto |9|. Otherwise the part between the argument \meta{cmd} and
% the \meta{definition text} is taken as parameter text in the syntax
% of vanilla \hologo{TeX}. Examples (with \cs{protected}):
diff --git a/macros/latex/contrib/oberdiek/protecteddef.pdf b/macros/latex/contrib/oberdiek/protecteddef.pdf
index cabaa32c49..c5d984bf5e 100644
--- a/macros/latex/contrib/oberdiek/protecteddef.pdf
+++ b/macros/latex/contrib/oberdiek/protecteddef.pdf
Binary files differ
diff --git a/macros/latex/contrib/oberdiek/resizegather.dtx b/macros/latex/contrib/oberdiek/resizegather.dtx
index 4a07864917..8ec4cc8a13 100644
--- a/macros/latex/contrib/oberdiek/resizegather.dtx
+++ b/macros/latex/contrib/oberdiek/resizegather.dtx
@@ -53,7 +53,7 @@
% use A4 as paper format:
% \PassOptionsToClass{a4paper}{article}
%
-% Programm calls to get the documentation (example):
+% Program calls to get the documentation (example):
% pdflatex resizegather.dtx
% makeindex -s gind.ist resizegather.idx
% pdflatex resizegather.dtx
diff --git a/macros/latex/contrib/oberdiek/resizegather.pdf b/macros/latex/contrib/oberdiek/resizegather.pdf
index 11d07da19c..5bf853391c 100644
--- a/macros/latex/contrib/oberdiek/resizegather.pdf
+++ b/macros/latex/contrib/oberdiek/resizegather.pdf
Binary files differ
diff --git a/macros/latex/contrib/oberdiek/rotchiffre.dtx b/macros/latex/contrib/oberdiek/rotchiffre.dtx
index 3023347fe1..aa80754011 100644
--- a/macros/latex/contrib/oberdiek/rotchiffre.dtx
+++ b/macros/latex/contrib/oberdiek/rotchiffre.dtx
@@ -56,7 +56,7 @@
% use A4 as paper format:
% \PassOptionsToClass{a4paper}{article}
%
-% Programm calls to get the documentation (example):
+% Program calls to get the documentation (example):
% pdflatex rotchiffre.dtx
% makeindex -s gind.ist rotchiffre.idx
% pdflatex rotchiffre.dtx
@@ -214,7 +214,7 @@ and the derived files
% \begin{declcs}{EdefRot} \M{type} \M{cmd} \M{text}
% \end{declcs}
% The \meta{text} is expanded and sanitized. All tokens
-% are letters with catcode 12 (other) with the exeption of
+% are letters with catcode 12 (other) with the exception of
% the space token that has character code 32 (0x20) and
% catcode 10 (space). This follows \hologo{TeX}'s convention of
% \cs{string} and \cs{meaning}.
diff --git a/macros/latex/contrib/oberdiek/rotchiffre.pdf b/macros/latex/contrib/oberdiek/rotchiffre.pdf
index 7deae8d756..5504f90b56 100644
--- a/macros/latex/contrib/oberdiek/rotchiffre.pdf
+++ b/macros/latex/contrib/oberdiek/rotchiffre.pdf
Binary files differ
diff --git a/macros/latex/contrib/oberdiek/scrindex.dtx b/macros/latex/contrib/oberdiek/scrindex.dtx
index fea57fd1a9..63deeaab2f 100644
--- a/macros/latex/contrib/oberdiek/scrindex.dtx
+++ b/macros/latex/contrib/oberdiek/scrindex.dtx
@@ -53,7 +53,7 @@
% use A4 as paper format:
% \PassOptionsToClass{a4paper}{article}
%
-% Programm calls to get the documentation (example):
+% Program calls to get the documentation (example):
% pdflatex scrindex.dtx
% makeindex -s gind.ist scrindex.idx
% pdflatex scrindex.dtx
@@ -195,7 +195,7 @@ and the derived files
% the standard classes |article|, |report|, and |book|. It
% redefines environment `theindex' for its needs.
% However, it does not know other classes such as KOMA-Script.
-% This package closes the compatibiliy gap between KOMA-Script's
+% This package closes the compatibility gap between KOMA-Script's
% classes and package \xpackage{index}.
%
% Environment |theindex| is redefined to support both package
diff --git a/macros/latex/contrib/oberdiek/scrindex.pdf b/macros/latex/contrib/oberdiek/scrindex.pdf
index 0ca63d3e6d..a2e2cba825 100644
--- a/macros/latex/contrib/oberdiek/scrindex.pdf
+++ b/macros/latex/contrib/oberdiek/scrindex.pdf
Binary files differ
diff --git a/macros/latex/contrib/oberdiek/setouterhbox.dtx b/macros/latex/contrib/oberdiek/setouterhbox.dtx
index 001cd278d3..cc937c16a4 100644
--- a/macros/latex/contrib/oberdiek/setouterhbox.dtx
+++ b/macros/latex/contrib/oberdiek/setouterhbox.dtx
@@ -57,7 +57,7 @@
% use A4 as paper format:
% \PassOptionsToClass{a4paper}{article}
%
-% Programm calls to get the documentation (example):
+% Program calls to get the documentation (example):
% pdflatex setouterhbox.dtx
% makeindex -s gind.ist setouterhbox.idx
% pdflatex setouterhbox.dtx
@@ -190,7 +190,7 @@ and the derived files
%
% \begin{abstract}
% If math stuff is set in an \cs{hbox}, then TeX
-% performs some optimization and omits the implicite
+% performs some optimization and omits the implicit
% penalties \cs{binoppenalty} and \cs{relpenalty}.
% This packages tries to put stuff into an \cs{hbox}
% without getting lost of those penalties.
@@ -234,7 +234,7 @@ and the derived files
% method we discuss here. Nowadays we have \eTeX\ that extends
% the tool set of a \TeX\ macro programmer. Especially useful
% \eTeX\ was in this package for detecting and dealing with
-% errorneous situations.
+% erroneous situations.
%
% However also nowadays a perfect solution for the problem
% is still missing at macro level. Probably someone has
diff --git a/macros/latex/contrib/oberdiek/setouterhbox.pdf b/macros/latex/contrib/oberdiek/setouterhbox.pdf
index dbdb939c6e..03757dc214 100644
--- a/macros/latex/contrib/oberdiek/setouterhbox.pdf
+++ b/macros/latex/contrib/oberdiek/setouterhbox.pdf
Binary files differ
diff --git a/macros/latex/contrib/oberdiek/settobox.dtx b/macros/latex/contrib/oberdiek/settobox.dtx
index c38d502a53..c1d7af6ae9 100644
--- a/macros/latex/contrib/oberdiek/settobox.dtx
+++ b/macros/latex/contrib/oberdiek/settobox.dtx
@@ -53,7 +53,7 @@
% use A4 as paper format:
% \PassOptionsToClass{a4paper}{article}
%
-% Programm calls to get the documentation (example):
+% Program calls to get the documentation (example):
% pdflatex settobox.dtx
% makeindex -s gind.ist settobox.idx
% pdflatex settobox.dtx
@@ -282,7 +282,7 @@ and the derived files
% c) Print #1 commands.
% d) Print box with frame
%
-% The implemenation looks more weird:
+% The implementation looks more weird:
\makeatletter
\newcommand*{\test}[1]{%
\par
diff --git a/macros/latex/contrib/oberdiek/settobox.pdf b/macros/latex/contrib/oberdiek/settobox.pdf
index a2f1c8d179..ef92916de2 100644
--- a/macros/latex/contrib/oberdiek/settobox.pdf
+++ b/macros/latex/contrib/oberdiek/settobox.pdf
Binary files differ
diff --git a/macros/latex/contrib/oberdiek/stackrel.dtx b/macros/latex/contrib/oberdiek/stackrel.dtx
index 6b3444c33c..09110de947 100644
--- a/macros/latex/contrib/oberdiek/stackrel.dtx
+++ b/macros/latex/contrib/oberdiek/stackrel.dtx
@@ -52,7 +52,7 @@
% use A4 as paper format:
% \PassOptionsToClass{a4paper}{article}
%
-% Programm calls to get the documentation (example):
+% Program calls to get the documentation (example):
% pdflatex stackrel.dtx
% makeindex -s gind.ist stackrel.idx
% pdflatex stackrel.dtx
diff --git a/macros/latex/contrib/oberdiek/stackrel.pdf b/macros/latex/contrib/oberdiek/stackrel.pdf
index df11fd28dd..4edbb64c31 100644
--- a/macros/latex/contrib/oberdiek/stackrel.pdf
+++ b/macros/latex/contrib/oberdiek/stackrel.pdf
Binary files differ
diff --git a/macros/latex/contrib/oberdiek/stampinclude.dtx b/macros/latex/contrib/oberdiek/stampinclude.dtx
index 9acd8a61f8..ba468e8591 100644
--- a/macros/latex/contrib/oberdiek/stampinclude.dtx
+++ b/macros/latex/contrib/oberdiek/stampinclude.dtx
@@ -52,7 +52,7 @@
% use A4 as paper format:
% \PassOptionsToClass{a4paper}{article}
%
-% Programm calls to get the documentation (example):
+% Program calls to get the documentation (example):
% pdflatex stampinclude.dtx
% makeindex -s gind.ist stampinclude.idx
% pdflatex stampinclude.dtx
@@ -225,7 +225,7 @@ and the derived files
% This package \xpackage{stampinclude} goes another way.
% \LaTeX\ reads and writes a separate \xext{aux} file for each
% file that is included by \cs{include}. There \LaTeX\ remembers
-% counter valuses. Changed \xext{tex}
+% counter values. Changed \xext{tex}
% files can therefore be detected by comparing the file date stamp of
% the \xext{tex} file with the date stamp of its \xext{aux} file.
% Since version 1.30.0 \pdfTeX\ provides \cs{pdffilemoddate}
@@ -254,7 +254,7 @@ and the derived files
%
% \subsubsection{Other file dependencies}
%
-% A file that is included by \cs{include} may input ore reference
+% A file that is included by \cs{include} may input or reference
% other files:
% \begin{itemize}
% \item other \TeX\ files using \cs{input},
diff --git a/macros/latex/contrib/oberdiek/stampinclude.pdf b/macros/latex/contrib/oberdiek/stampinclude.pdf
index 55b57219a3..b98bf15bb1 100644
--- a/macros/latex/contrib/oberdiek/stampinclude.pdf
+++ b/macros/latex/contrib/oberdiek/stampinclude.pdf
Binary files differ
diff --git a/macros/latex/contrib/oberdiek/tabularht.dtx b/macros/latex/contrib/oberdiek/tabularht.dtx
index 20688068b0..e6c26f1040 100644
--- a/macros/latex/contrib/oberdiek/tabularht.dtx
+++ b/macros/latex/contrib/oberdiek/tabularht.dtx
@@ -53,7 +53,7 @@
% use A4 as paper format:
% \PassOptionsToClass{a4paper}{article}
%
-% Programm calls to get the documentation (example):
+% Program calls to get the documentation (example):
% pdflatex tabularht.dtx
% makeindex -s gind.ist tabularht.idx
% pdflatex tabularht.dtx
@@ -250,7 +250,7 @@ and the derived files
% and add the vertical lines. The lines in a tabular
% with \xpackage{tabularht} support (environments of this package)
% are numbered from left to right. The gap that is
-% controlled by \cs{interrowspace} or inbetween \cs{interrowstart}
+% controlled by \cs{interrowspace} or in between \cs{interrowstart}
% and \cs{interrowstop} is then filled with the detected
% vertical lines.
%
@@ -472,7 +472,7 @@ and the derived files
\def\tabH@spread{spread}
% \end{macrocode}
% First argument is the height of the table,
-% then the orignal arguments for tabular follow.
+% then the original arguments for tabular follow.
% \begin{macrocode}
\newenvironment{tabularht}[1]{%
\tabH@setheight{#1}%
diff --git a/macros/latex/contrib/oberdiek/tabularht.pdf b/macros/latex/contrib/oberdiek/tabularht.pdf
index 893fe33acf..3a70cec6a2 100644
--- a/macros/latex/contrib/oberdiek/tabularht.pdf
+++ b/macros/latex/contrib/oberdiek/tabularht.pdf
Binary files differ
diff --git a/macros/latex/contrib/oberdiek/tabularkv.dtx b/macros/latex/contrib/oberdiek/tabularkv.dtx
index 57ef5e8745..b324e6e8ab 100644
--- a/macros/latex/contrib/oberdiek/tabularkv.dtx
+++ b/macros/latex/contrib/oberdiek/tabularkv.dtx
@@ -53,7 +53,7 @@
% use A4 as paper format:
% \PassOptionsToClass{a4paper}{article}
%
-% Programm calls to get the documentation (example):
+% Program calls to get the documentation (example):
% pdflatex tabularkv.dtx
% makeindex -s gind.ist tabularkv.idx
% pdflatex tabularkv.dtx
diff --git a/macros/latex/contrib/oberdiek/tabularkv.pdf b/macros/latex/contrib/oberdiek/tabularkv.pdf
index e6ea130064..dedc3251c0 100644
--- a/macros/latex/contrib/oberdiek/tabularkv.pdf
+++ b/macros/latex/contrib/oberdiek/tabularkv.pdf
Binary files differ
diff --git a/macros/latex/contrib/oberdiek/thepdfnumber.dtx b/macros/latex/contrib/oberdiek/thepdfnumber.dtx
index 61eb42684c..c1aa4bf9fa 100644
--- a/macros/latex/contrib/oberdiek/thepdfnumber.dtx
+++ b/macros/latex/contrib/oberdiek/thepdfnumber.dtx
@@ -57,7 +57,7 @@
% use A4 as paper format:
% \PassOptionsToClass{a4paper}{article}
%
-% Programm calls to get the documentation (example):
+% Program calls to get the documentation (example):
% pdflatex thepdfnumber.dtx
% makeindex -s gind.ist thepdfnumber.idx
% pdflatex thepdfnumber.dtx
@@ -256,7 +256,7 @@ and the derived files
% \item The decimal part is omitted, if the number is an integer (5, 7).
% \item Trailing zeros from the decimal part are stripped (5, 6, 7, 9).
% \end{itemize}
-% The resulting number representation can be catched with one of the
+% The resulting number representation can be caught with one of the
% following Perl regular expressions:
% \begin{itemize}
% \item |^0$| (zero)
@@ -295,11 +295,11 @@ and the derived files
% \subsection{Input number}
%
% The user macros expect a number as argument. The number can either
-% be given explicitely or as macro that expands in one step
-% to an explicite number, because the first token of the argument
+% be given explicitly or as macro that expands in one step
+% to an explicit number, because the first token of the argument
% is expanded once.
%
-% The explicite number consists of
+% The explicit number consists of
% \begin{itemize}
% \item optional signs `\texttt{+}' and `\texttt{-}',
% \item digits `\texttt{0}' upto `\texttt{9}' and
@@ -320,7 +320,7 @@ and the derived files
% The package is not intended for validating numbers or to
% decide if an argument is a number. Therefore it is an usage
% error to use the user macros with arguments that are not
-% explicite numbers as specified in the previous sections.
+% explicit numbers as specified in the previous sections.
% Nevertheless some error conditions are sometimes recognized.
% Errors are given in form of an undefined command sequence.
% It is the only way to notify \hologo{TeX} in expandable context.
diff --git a/macros/latex/contrib/oberdiek/thepdfnumber.pdf b/macros/latex/contrib/oberdiek/thepdfnumber.pdf
index 8d4b73d65f..61d98f6985 100644
--- a/macros/latex/contrib/oberdiek/thepdfnumber.pdf
+++ b/macros/latex/contrib/oberdiek/thepdfnumber.pdf
Binary files differ
diff --git a/macros/latex/contrib/oberdiek/twoopt.dtx b/macros/latex/contrib/oberdiek/twoopt.dtx
index 10334f0d3a..806799fd41 100644
--- a/macros/latex/contrib/oberdiek/twoopt.dtx
+++ b/macros/latex/contrib/oberdiek/twoopt.dtx
@@ -52,7 +52,7 @@
% use A4 as paper format:
% \PassOptionsToClass{a4paper}{article}
%
-% Programm calls to get the documentation (example):
+% Program calls to get the documentation (example):
% pdflatex twoopt.dtx
% makeindex -s gind.ist twoopt.idx
% pdflatex twoopt.dtx
diff --git a/macros/latex/contrib/oberdiek/twoopt.pdf b/macros/latex/contrib/oberdiek/twoopt.pdf
index 6a144a8368..071dd4d2b2 100644
--- a/macros/latex/contrib/oberdiek/twoopt.pdf
+++ b/macros/latex/contrib/oberdiek/twoopt.pdf
Binary files differ
diff --git a/macros/latex/contrib/orcidlink/README.md b/macros/latex/contrib/orcidlink/README.md
index 272e3f9bee..1437e05f4c 100644
--- a/macros/latex/contrib/orcidlink/README.md
+++ b/macros/latex/contrib/orcidlink/README.md
@@ -1,7 +1,14 @@
# orcidlink-LaTeX-command
LaTeX style file to add a macro for inserting a linked ORCiD logo
-This LaTeX style file just defines a single macro, `\orcidlink`. The code is from [this TeX.SE answer](https://tex.stackexchange.com/a/445583/34063). My contribution was wrapping it into a style file (and improving the fragility of the command a bit).
+This LaTeX style file defines `\orcidlink` and a few related macros.
+The code is from [this TeX.SE
+answer](https://tex.stackexchange.com/a/445583/34063). I wrapped it
+into a style file and improved the fragility of the command a bit.
+Later (at the suggestion of Hugo Heagren) we added the `\orcidlogo`
+command, and commands for the three recommended formats: full,
+compact, and inline, with commands `\orcidlinkf`, `\orcidlinkc`, and
+`\orcidlinki`.
Installation
------------
@@ -30,6 +37,14 @@ When you want to insert the hyperlinked ORCiD logo, use `\orcidlink{0000-0000-00
This will appear as a clickable hyperlink, and will look like this:
![Author LaTeX render preview image](https://raw.githubusercontent.com/duetosymmetry/orcidlink-LaTeX-command/f03c85cd9fe3e40bec5f51b1319b0e9ab30c2e09/preview.png)
+If you simply want the ORCiD logo without a hyperlink anywhere, use
+`\orcidlogo`.
+
+ORCiD’s [guidelines](https://info.orcid.org/brand-guidelines/)
+recommend three formats: full, compact, and inline. The three formats
+are available, through `\orcidlinkf{orcid}`, `\orcidlinkc{orcid}`, and
+`\orcidlinki{Name}{orcid}`.
+
Dependancies and Compatibility
------------------------------
@@ -49,6 +64,6 @@ Credits
The original TikZ icon code was created by user [Milo on
TeX.SE](https://tex.stackexchange.com/users/128068/milo).
This package was created and is maintained by [Leo
-C. Stein](http://duetosymmetry.com/), (c) 2019-2023.
+C. Stein](http://duetosymmetry.com/), (c) 2019-2024.
This material is subject to the [LaTeX Project Public License
1.3c](https://www.ctan.org/license/lppl1.3).
diff --git a/macros/latex/contrib/orcidlink/orcidlink.dtx b/macros/latex/contrib/orcidlink/orcidlink.dtx
index e096f502f6..fcc5a73176 100644
--- a/macros/latex/contrib/orcidlink/orcidlink.dtx
+++ b/macros/latex/contrib/orcidlink/orcidlink.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 2019-2023 by Leo C. Stein <leo.stein@gmail.com>
+% Copyright (C) 2019-2024 by Leo C. Stein <leo.stein@gmail.com>
% ---------------------------------------------------------------------------
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
@@ -27,9 +27,12 @@
%<*driver>
\documentclass{ltxdoc}
\usepackage[dvipsnames]{xcolor}
-\usepackage{orcidlink}[2023/12/30]
-\hypersetup{colorlinks,urlcolor=NavyBlue,citecolor=NavyBlue,linkcolor=NavyBlue,pdfusetitle}
+\usepackage{orcidlink}[2024/06/25]
+\hypersetup{colorlinks,urlcolor=NavyBlue,citecolor=NavyBlue,linkcolor=NavyBlue}
+\hypersetup{pdftitle={The orcidlink package},pdfauthor={Leo C. Stein},
+ pdfsubject={-}}
\usepackage{graphicx}
+\usepackage{microtype}
\EnableCrossrefs
\CodelineIndex
\RecordChanges
@@ -40,7 +43,7 @@
%</driver>
% \fi
%
-% \CheckSum{41}
+% \CheckSum{59}
%
% \CharacterTable
% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -69,6 +72,8 @@
% working correctly with XeTeX. Thanks to Tim Henke for the bug report.}
% \changes{v1.0.5}{2023/12/30}{Turn off TikZ externalization of logos.
% Thanks to github user aquileia for the bug report.}
+% \changes{v1.1.0}{2024/06/25}{Support ORCID's three different ID
+% formats. Thanks to Hugo Heagren for suggestions.}
%
% \DoNotIndex{\newcommand,\newenvironment}
%
@@ -84,8 +89,10 @@
%
% \section{Introduction}
%
-% This is a LaTeX style file to add a macro for inserting a linked
-% ORCiD logo. The package provides exactly one command, |\orcidlink|.
+% This is a LaTeX style file providing a macro for inserting a
+% hyperlinked ORCiD logo. The package also provides three commands
+% for ORCiD's three recommended ID printing formats, and a command for
+% just the ORCiD logo, not linked to anything.
%
% \section{Usage}
%
@@ -113,6 +120,36 @@
% \includegraphics[width=0.5\textwidth]{preview}\newline{}
% The macro is used in the author line of this documentation as well.
%
+% \DescribeMacro{\orcidlogo}
+% If you simply want the ORCiD logo without a hyperlink anywhere, use
+% |\orcidlogo|.
+%
+% ORCiD's \href{https://info.orcid.org/brand-guidelines/}{guidelines}
+% recommend three formats: full, compact, and inline. The three
+% formats are available:
+% \begin{enumerate}
+% \item \DescribeMacro{\orcidlinkf\marg{orcid}} Full format. Example:
+% |\orcidlinkf{0000-0001-7559-9597}| will insert
+% \orcidlinkf{0000-0001-7559-9597}
+% \item \DescribeMacro{\orcidlinkc\marg{orcid}} Compact format.
+% Example: |\orcidlinkc{0000-0001-7559-9597}| will insert
+% \orcidlinkc{0000-0001-7559-9597}
+% \item \DescribeMacro{\orcidlinki\marg{Name}\marg{orcid}} Inline
+% format. Example: |\orcidlinki{Leo C. Stein}{0000-0001-7559-9597}|
+% will insert \orcidlinki{Leo C. Stein}{0000-0001-7559-9597}
+% \end{enumerate}
+%
+% \DescribeMacro{\orcidlinkX\marg{before}\marg{orcid}\marg{after}}
+%
+% The command |\orcidlinkX{before}{orcid}{after}| is a helper macro
+% that's used to implement all of the others. Though it is just an
+% internal helper, I saw no reason to keep it internal.
+% |\orcidlinkX{before}{orcid}{after}| results in
+% \orcidlinkX{before}{orcid}{after}. The entire output is hyperlinked
+% to the ORCiD page. There is a thin space |\,| between ``before,''
+% the logo, and ``after.'' However if ``before'' is empty, the space
+% will be omitted; similarly for ``after.''
+%
% \section{Package Compatibility}
%
% This package relies on \texttt{hyperref} and \texttt{tikz}. If you
@@ -132,10 +169,11 @@
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}[1994/06/01]
\ProvidesPackage{orcidlink}
- [2023/12/30 v1.0.5 Linked ORCiD logo macro package]
+ [2024/06/26 v1.1.0 Support ORCID's three different ID formats.]
-%% All I did was package up Milo's code on TeX.SE,
-%% see https://tex.stackexchange.com/a/445583/34063
+%% This started out as Milo's code on TeX.SE,
+%% see https://tex.stackexchange.com/a/445583/34063.
+%% It has since been expanded with more commands.
\RequirePackage{hyperref}
\RequirePackage{tikz}
@@ -168,18 +206,45 @@
% \end{macrocode}
%
-% \begin{macro}{\orcidlink}
+% \begin{macro}{\orcidlogo}
% \begin{macrocode}
-\DeclareRobustCommand\orcidlink[1]{%
+\newcommand{\orcidlogo}{%
\texorpdfstring{%
\setlength{\@curXheight}{\fontcharht\font`X}%
-\href{https://orcid.org/#1}{\XeTeXLinkBox{\mbox{%
+\XeTeXLinkBox{%
\@preventExternalization%
\begin{tikzpicture}[yscale=-\@OrigHeightRecip*\@curXheight,
xscale=\@OrigHeightRecip*\@curXheight,transform shape]
\pic{orcidlogo};
\end{tikzpicture}%
-}}}}{}}
+}}{}}
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\orcidlinkX}
+% \begin{macrocode}
+\DeclareRobustCommand\orcidlinkX[3]{\href{https://orcid.org/#2}{%
+\ifstrempty{#1}{}{#1\,}\orcidlogo\ifstrempty{#3}{}{\,#3}}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\orcidlinkf}
+% \begin{macrocode}
+\newcommand{\orcidlinkf}[1]{\orcidlinkX{}{#1}{https://orcid.org/#1}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\orcidlinkc}
+% \begin{macrocode}
+\newcommand{\orcidlinkc}[1]{\orcidlinkX{}{#1}{#1}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\orcidlinki}
+% \begin{macrocode}
+\newcommand{\orcidlinki}[2]{\orcidlinkX{#1}{#2}{}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\orcidlink}
+% \begin{macrocode}
+\newcommand{\orcidlink}[1]{\orcidlinkX{}{#1}{}}
\endinput
% \end{macrocode}
diff --git a/macros/latex/contrib/orcidlink/orcidlink.ins b/macros/latex/contrib/orcidlink/orcidlink.ins
index 201841f638..bd2ce9a35c 100644
--- a/macros/latex/contrib/orcidlink/orcidlink.ins
+++ b/macros/latex/contrib/orcidlink/orcidlink.ins
@@ -1,4 +1,4 @@
-%% Copyright (C) 2019-2023 by Leo C. Stein <leo.stein@gmail.com>
+%% Copyright (C) 2019-2024 by Leo C. Stein <leo.stein@gmail.com>
%% --------------------------------------------------------------------------
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -25,7 +25,7 @@
This is a generated file.
-Copyright (C) 2019-2023 by Leo C. Stein <leo.stein@gmail.com>
+Copyright (C) 2019-2024 by Leo C. Stein <leo.stein@gmail.com>
--------------------------------------------------------------------------
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either version 1.3
diff --git a/macros/latex/contrib/orcidlink/orcidlink.pdf b/macros/latex/contrib/orcidlink/orcidlink.pdf
index 25ba75e856..6954b07634 100644
--- a/macros/latex/contrib/orcidlink/orcidlink.pdf
+++ b/macros/latex/contrib/orcidlink/orcidlink.pdf
Binary files differ
diff --git a/macros/latex/contrib/overarrows/README.md b/macros/latex/contrib/overarrows/README.md
index f2139d6499..a70fd1601c 100644
--- a/macros/latex/contrib/overarrows/README.md
+++ b/macros/latex/contrib/overarrows/README.md
@@ -13,11 +13,11 @@ Julien Labbé <Julien.Labbe@univ-grenoble-alpes.fr> Université Grenoble-Alpes
## Repository
-https://gricad-gitlab.univ-grenoble-alpes.fr/labbeju/latex-packages/-/tree/main/overarrows
+https://github.com/julienlabbe/latex-packages/tree/main/overarrows
## Licence
-Copyright (C) 2023 by Julien Labbé
+Copyright (C) 2023-2024 by Julien Labbé
This file may be distributed and/or modified under the conditions of the LaTeX
Project Public License (LPPL), either version 1.3c of this license or (at your
diff --git a/macros/latex/contrib/overarrows/overarrows.dtx b/macros/latex/contrib/overarrows/overarrows.dtx
index 419593f577..ff63a958c3 100644
--- a/macros/latex/contrib/overarrows/overarrows.dtx
+++ b/macros/latex/contrib/overarrows/overarrows.dtx
@@ -16,14 +16,17 @@
%<package>\NeedsTeXFormat{LaTeX2e}
%<package>\ProvidesPackage{overarrows}
%<*package>
-[2023/02/15 v1.1 Custom extensible arrows over math expressions]
+[2024/07/11 v1.2 Custom extensible arrows over math expressions]
%</package>
%
%<*driver>
\documentclass[nohyperref]{ltxdoc}
+\usepackage{metalogo}
+\usepackage{enumitem}
+\usepackage{array}
\usepackage{overarrows-doc} %^^A defined at end of this file, with guard <docstyle>
-\usepackage[old-arrows, esvect, tikz, pstarrows, allcommands]{overarrows}
+\usepackage[old-arrows, esvect, tikz, pstricks, pstarrows, allcommands]{overarrows}
\EnableCrossrefs
\PageIndex
@@ -36,8 +39,8 @@
%% Arrows used in doc
\usepackage{amssymb}% for \twoheadrightarrow
-\NewOverArrowCommand{amsoverrightarrow}{amsmath=strict, end={\rightarrow}}
-\NewOverArrowCommand{overrightnewarrow}{%
+\NewOverArrowCommand{\amsoverrightarrow}{amsmath=strict, end={\rightarrow}}
+\NewOverArrowCommand{\overrightnewarrow}{%
amsmath, middle config=relbar, end=\rightarrow,
right arrow,
}
@@ -49,22 +52,22 @@
\DeclareMathSymbol{\fldrf}{\mathrel}{esvector}{'026}
\DeclareMathSymbol{\fldrg}{\mathrel}{esvector}{'027}
\DeclareMathSymbol{\fldrh}{\mathrel}{esvector}{'030}
-\NewOverArrowCommand{esveca}{esvect=strict, end={\fldra}}
-\NewOverArrowCommand{esvecb}{esvect=strict, end={\fldrb}}
-\NewOverArrowCommand{esvecc}{esvect=strict, end={\fldrc}}
-\NewOverArrowCommand{esvecd}{esvect=strict, end={\fldrd}}
-\NewOverArrowCommand{esvece}{esvect=strict, end={\fldre}}
-\NewOverArrowCommand{esvecg}{esvect=strict, end={\fldrg}}
-\NewOverArrowCommand{esvech}{esvect=strict, end={\fldrh}}
-\NewOverArrowCommand{vva}{esvect, middle config=auto, end=\fldra}
-\NewOverArrowCommand{esvecf}{esvect=strict, end={\fldrf}}
-\NewOverArrowCommand{vvb}{esvect, middle config=auto, end=\fldrb}
-\NewOverArrowCommand{vvc}{esvect, middle config=auto, end=\fldrc}
-\NewOverArrowCommand{vvd}{esvect, middle config=auto, end=\fldrd}
-\NewOverArrowCommand{vve}{esvect, middle config=auto, end=\fldre}
-\NewOverArrowCommand{vvf}{esvect, middle config=auto, end=\fldrf}
-\NewOverArrowCommand{vvg}{esvect, middle config=auto, end=\fldrg}
-\NewOverArrowCommand{vvh}{esvect, middle config=auto, end=\fldrh}
+\NewOverArrowCommand{\esveca}{esvect=strict, end={\fldra}}
+\NewOverArrowCommand{\esvecb}{esvect=strict, end={\fldrb}}
+\NewOverArrowCommand{\esvecc}{esvect=strict, end={\fldrc}}
+\NewOverArrowCommand{\esvecd}{esvect=strict, end={\fldrd}}
+\NewOverArrowCommand{\esvece}{esvect=strict, end={\fldre}}
+\NewOverArrowCommand{\esvecg}{esvect=strict, end={\fldrg}}
+\NewOverArrowCommand{\esvech}{esvect=strict, end={\fldrh}}
+\NewOverArrowCommand{\vva}{esvect, middle config=auto, end=\fldra}
+\NewOverArrowCommand{\esvecf}{esvect=strict, end={\fldrf}}
+\NewOverArrowCommand{\vvb}{esvect, middle config=auto, end=\fldrb}
+\NewOverArrowCommand{\vvc}{esvect, middle config=auto, end=\fldrc}
+\NewOverArrowCommand{\vvd}{esvect, middle config=auto, end=\fldrd}
+\NewOverArrowCommand{\vve}{esvect, middle config=auto, end=\fldre}
+\NewOverArrowCommand{\vvf}{esvect, middle config=auto, end=\fldrf}
+\NewOverArrowCommand{\vvg}{esvect, middle config=auto, end=\fldrg}
+\NewOverArrowCommand{\vvh}{esvect, middle config=auto, end=\fldrh}
\makeatletter
\newcommand{\unsetoldarrows}{
@@ -94,7 +97,7 @@
%
% \title{The \pkg{overarrows} package\thanks{This document
% corresponds to \pkg{overarrows}~\fileversion, dated \filedate.}}
-% \author{Julien Labb\'e \\ \texttt{Julien.Labbe@univ-grenoble-alpes.fr}}
+% \author{Julien Labb\'e \\ {\small \url{https://github.com/julienlabbe/latex-packages}}}
%
% \maketitle
%
@@ -111,7 +114,7 @@
%<*example>
% \fi
\begin{dispExample}
-\NewOverArrowCommand{overrightharpoon}{%
+\NewOverArrowCommand{\overrightharpoon}{%
end=\rightharpoonup
}
@@ -188,9 +191,9 @@
%
% The \pkg{overarrows} package was primitively written for vectors, but in
% a highly customisable way. It can be used to define a large variety of arrows,
-% using math symbols, or PGF/TikZ commands. It's also possible to create
-% commands that draw the arrows under. Some predefined commands are provided,
-% giving\footnotemark{}, for arrow over:
+% using math symbols, or drawing commands from PGF/TikZ or PSTricks. It's also
+% possible to create commands that draw the arrows under. Some predefined
+% commands are provided, giving\footnotemark{}, for arrow over:
% \footnotetext{Displayed here with the \refOpt{old-arrows} option.}
% \begin{align*}
% \overrightarrow{\alpha+\beta}
@@ -222,34 +225,42 @@
% above\footnotemark{}. For this second convention, \TeX/\LaTeX provides the
% command \cs{vec}, which accents its content (using the \cs{mathaccent}
% command) with the character~\symb{\mathchar "017E\relax}
-% (\cs{mathchar}|"017E| in Computer Modern font).
-% But \symb{\mathchar "017E\relax} isn't extensible, and gives: $\vec{v}$,
-% $\vec{AB}$ or $\vec{\text{grad}}$ (there's no command \cs{widevec} analogous
-% to \cs{widehat}).
+% (\cs{mathchar}|"017E| in Computer Modern font). But \symb{\mathchar
+% "017E\relax} isn't extensible\footnotemark{}, and gives: $\vec{v}$, $\vec{AB}$
+% or $\vec{\text{grad}}$ (there's no command \cs{widevec} analogous to
+% \cs{widehat}).
%
+% \addtocounter{footnote}{-2}%^^A two footnotemarks
+%
+% \stepcounter{footnote}
% \footnotetext{See, for example: International Organization for
% Standardization. (2019). \emph{Quantities and units -- Part 2: Mathematics}
% (ISO Standard No. 80000-2:2019).
% \url{https://www.iso.org/standard/64973.html}.}
%
+% \stepcounter{footnote}
+% \footnotetext{In fact, with the unicode engines \LuaTeX{} and \XeTeX{}, the
+% command \cs{Umathaccent} can now define extensible accents. This is used by
+% the \pkg{unicode-math} package, which also set the arrows displayed by \cs{vec}
+% and \cs{overrightarrow} in a coherent manner.}
+%
% An extensible alternative is given by the command \cs{overrightarrow},
% available in \TeX/\LaTeX, and which is redefined by the commonly used
% \pkg{amsmath} package. But its arrow, built with the \cs{rightarrow} symbol
-% \symb{\rightarrow}, is too large with the default \emph{Computer Modern} font:
-% $\amsoverrightarrow{AB}$. Another alternative is the \pkg{esvect} package,
-% which provides the \cs{vv} command and a set of custom arrows: $\esveca{AB}$,
-% $\esvecb{AB}$, $\esvecc{AB}$, $\esvecd{AB}$, $\esvece{AB}$, $\esvecf{AB}$,
-% $\esvecg{AB}$, $\esvech{AB}$.
+% \symb{\rightarrow}, is too large, using the default \emph{Computer Modern}
+% font: $\amsoverrightarrow{AB}$. Another alternative is the \pkg{esvect}
+% package, which provides the \cs{vv} command and a set of custom arrows:
+% $\esveca{AB}$, $\esvecb{AB}$, $\esvecc{AB}$, $\esvecd{AB}$, $\esvece{AB}$,
+% $\esvecf{AB}$, $\esvecg{AB}$, $\esvech{AB}$.
%
% \subsection{Stack and arrow macros}
%
% It's worth looking at the definition of \pkg{amsmath} \cs{overrightarrow}
-% command:
-% \iffalse
+% command: \iffalse
%<*example>
% \fi
\begin{dispListing}
- \long macro:->\mathpalette {\overarrow@ \rightarrowfill@ }
+\long macro:->\mathpalette {\overarrow@ \rightarrowfill@ }
\end{dispListing}
% \iffalse
%</example>
@@ -314,7 +325,7 @@
% The \pkg{overarrows} package also provides an alternative mechanism.
% When used, the length \cs{overarrowlength} is set, according to the arrow
% command content, and can be employed, for example, to draw arrows using
-% PGF/TikZ or the \LaTeX{} picture environment.
+% PGF/TikZ, PSTricks or the \LaTeX{} picture environment.
%
% \section{Quick start}
%
@@ -382,14 +393,13 @@
% \subsection{Commands creation}
%
% Commands are created with \refCom{NewOverArrowCommand}. This macro take two
-% mandatory arguments : the name of the command (without backslash), and the
-% arrow configuration as comma-separated list of key-values. By default, a right
-% arrow is set:
+% mandatory arguments : the name of the command and the arrow configuration as
+% comma-separated list of key-values. By default, a right arrow is set:
% \iffalse
%<*example>
% \fi
\begin{dispExample}
-\NewOverArrowCommand{myovercmd}{}
+\NewOverArrowCommand{\myovercmd}{}
$\myovercmd{test}$
\end{dispExample}
% \iffalse
@@ -417,7 +427,7 @@ $ v_{sub} \qquad \myovercmd{v}_{sub} \qquad \myovercmd*{v}_{sub} $
%<*example>
% \fi
\begin{dispListing}
-\NewOverArrowCommand{overhooktwoheadrightarrow}{%
+\NewOverArrowCommand{\overhooktwoheadrightarrow}{%
start=\lhook, end=\twoheadrightarrow,
}
\end{dispListing}
@@ -436,12 +446,12 @@ $ v_{sub} \qquad \myovercmd{v}_{sub} \qquad \myovercmd*{v}_{sub} $
% \iffalse
%</example>
% \fi
-% With the previous definition, the result of the command
+% But with the previous definition, the result of the command
% \cs{overhooktwoheadrightarrow} is faulty:
% \iffalse
%<*example>
% \fi
-\NewOverArrowCommand{overhooktwoheadrightarrow}{%
+\NewOverArrowCommand{\overhooktwoheadrightarrow}{%
start=\lhook, end=\twoheadrightarrow,
}
\begin{dispExample}
@@ -459,7 +469,7 @@ $ \overhooktwoheadrightarrow{v} \qquad \overhooktwoheadrightarrow{AB} $
% \fi
\csundef{overhooktwoheadrightarrow}
\begin{dispExample}
-\NewOverArrowCommand{overhooktwoheadrightarrow}{%
+\NewOverArrowCommand{\overhooktwoheadrightarrow}{%
start=\lhook, end=\twoheadrightarrow,
trim start=1.5, trim end=2,
}
@@ -474,16 +484,18 @@ $ \overhooktwoheadrightarrow{v} \qquad \overhooktwoheadrightarrow{AB} $
% If the math font differs from the default \emph{Computer Modern}, the central
% part of the arrow may have inappropriate position or line width. This is
% because the default symbol used for the arrow line is \cs{relbareda}
-% \symb{\relbareda} from the \pkg{esvect} package. If needed, try to set the
-% \refKey{middle} key with the symbol \cs{relbar} \symb{\relbar}. The trimming
-% should also be adapted:
+% \symb{\relbareda} from the \pkg{esvect} package\footnote{Except if the
+% \pkg{unicode-math} package is used with a math font that provides the
+% \cs{harrowextender} symbol (see the \refKey*{middle config}|=auto| key).}.
+% If needed, try to set the \refKey{middle} key with the symbol \cs{relbar}
+% \symb{\relbar}. The trimming should also be adapted:
% \iffalse
%<*example>
% \fi
\csundef{overhooktwoheadrightarrow}
\begin{dispExample}
-\NewOverArrowCommand{overhooktwoheadrightarrow}{%
- start=\lhook, end=\twoheadrightarrow, middle=\relbar, %
+\NewOverArrowCommand{\overhooktwoheadrightarrow}{%
+ start=\lhook, end=\twoheadrightarrow, middle=\relbar,
trim start=0, trim end=3, trim middle=5,
}
$ \overhooktwoheadrightarrow{v} \qquad \overhooktwoheadrightarrow{AB} $
@@ -500,7 +512,7 @@ $ \overhooktwoheadrightarrow{v} \qquad \overhooktwoheadrightarrow{AB} $
%<*example>
% \fi
\begin{dispExample}
-\TestOverArrow{overhooktwoheadrightarrow}
+\TestOverArrow{\overhooktwoheadrightarrow}
\end{dispExample}
% \iffalse
%</example>
@@ -514,7 +526,7 @@ $ \overhooktwoheadrightarrow{v} \qquad \overhooktwoheadrightarrow{AB} $
%<*example>
% \fi
\begin{dispExample}
-\NewOverArrowCommand{OverRightarrow}{%
+\NewOverArrowCommand{\OverRightarrow}{%
start=\Relbar,
middle=\Relbar,
end=\Rightarrow,
@@ -535,7 +547,7 @@ $ \OverRightarrow{v} \qquad \OverRightarrow{AB} $
% \fi
\csundef{OverRightarrow}
\begin{dispExample}
-\NewOverArrowCommand{OverRightarrow}{%
+\NewOverArrowCommand{\OverRightarrow}{%
start={\smallermathstyle\Relbar},
middle={\smallermathstyle\Relbar},
end=\Rightarrow,
@@ -557,7 +569,7 @@ $ \OverRightarrow{v} \qquad \OverRightarrow{AB} $
% \fi
\csundef{OverRightarrow}
\begin{dispExample}
-\NewOverArrowCommand{OverRightarrow}{%
+\NewOverArrowCommand{\OverRightarrow}{%
start={\smallermathstyle\Relbar},
middle={\smallermathstyle\Relbar},
end=\Rightarrow,
@@ -579,7 +591,7 @@ $ \OverRightarrow{v} \qquad \OverRightarrow{AB} $
%<*example>
% \fi
\begin{dispExample}
-\NewOverArrowCommand{OverLeftarrow}{%
+\NewOverArrowCommand{\OverLeftarrow}{%
start={\smallermathstyle\Leftarrow},
middle={\smallermathstyle\Relbar},
end=\Relbar,
@@ -601,7 +613,7 @@ $ \OverLeftarrow{v} \qquad \OverLeftarrow{AB} $
%<*example>
% \fi
\begin{dispExample}
-\NewOverArrowCommand{OverLeftRightarrow}{%
+\NewOverArrowCommand{\UnderLeftRightarrow}{%
start={\smallermathstyle\Leftarrow},
middle={\smallermathstyle\Relbar},
end=\Rightarrow,
@@ -610,7 +622,7 @@ $ \OverLeftarrow{v} \qquad \OverLeftarrow{AB} $
space before arrow=0.5ex,
shift left=0, shift right=0,
}
-$ \OverLeftRightarrow{v} \qquad \OverLeftRightarrow{AB} $
+$ \UnderLeftRightarrow{v} \qquad \UnderLeftRightarrow{AB} $
\end{dispExample}
% \iffalse
%</example>
@@ -650,7 +662,7 @@ $ \tttail $
%<*example>
% \fi
\begin{dispExample}
-\NewOverArrowCommand{overtttailrightarrow}{%
+\NewOverArrowCommand{\overtttailrightarrow}{%
start={\tttail},
end={\rightarrow},
trim start=12,
@@ -683,7 +695,7 @@ $ \overtttailrightarrow{v} \qquad \overtttailrightarrow{AB} $
% \fi
\csundef{overtttailrightarrow}
\begin{dispExample}
-\NewOverArrowCommand{overtttailrightarrow}{%
+\NewOverArrowCommand{\overtttailrightarrow}{%
start={\vcenter{\hbox{$\smallermathstyle\tttail$}}},
end={\rightarrow},
trim start=12,
@@ -710,7 +722,7 @@ $ \overtttailrightarrow{v} \qquad \overtttailrightarrow{AB} $
\begin{dispExample}
\newcommand*{\leftarrowhead}{\usefont{U}{lasy}{m}{n}\symbol{40}}
\newcommand*{\righttarrowhead}{\usefont{U}{lasy}{m}{n}\symbol{41}}
-\NewOverArrowCommand{overrightleftarrow}{%
+\NewOverArrowCommand{\overrightleftarrow}{%
start=\text{\righttarrowhead},
end=\text{\leftarrowhead},
trim start=0.7, trim end=0.7,
@@ -751,7 +763,7 @@ $ \overrightleftarrow{AB} \qquad \scriptstyle\overrightleftarrow{AB} $
% \medskip
%
% To use PGF/TikZ language, the optional argument |tikz| must be passed to
-% \refCom{NewOverArrowCommand} . TikZ picture are not extensible. That's why the
+% \refCom{NewOverArrowCommand}. TikZ pictures are not extensible. That's why the
% \pkg{overarrows} package provides three lengths that can be used in TikZ
% commands:
% \begin{itemize}
@@ -767,7 +779,7 @@ $ \overrightleftarrow{AB} \qquad \scriptstyle\overrightleftarrow{AB} $
%<*example>
% \fi
\begin{dispExample}
-\NewOverArrowCommand[tikz]{overtikzarrow}{}
+\NewOverArrowCommand[tikz]{\overtikzarrow}{}
$ \overtikzarrow{v} \qquad \overtikzarrow{AB} $
\end{dispExample}
% \iffalse
@@ -791,7 +803,7 @@ $ \overtikzarrow{v} \qquad \overtikzarrow{AB} $
%<*example>
% \fi
\begin{dispExample}
-\NewOverArrowCommand[tikz]{overarchedleftrightarrow}{%
+\NewOverArrowCommand[tikz]{\overarchedleftrightarrow}{%
add tikz options={y=\overarrowlength},
add tikz options={line width={\overarrowsmallerthickness}},
path options={arrows={<[scale=0.5]->[scale=0.5]}},
@@ -807,20 +819,72 @@ $ \overarchedleftrightarrow{v} \qquad \overarchedleftrightarrow{ABCD} $
%</example>
% \fi
%
+% \subsection{Drawing the arrow with PSTricks}
+%
+% In addition to PGF/TikZ, the arrow can be drawn with PSTricks macros.
+% For this, the optional argument |pstricks| must be passed to
+% \refCom{NewOverArrowCommand}. Like with
+% |tikz|, the three lengths \refCom{overarrowlength}, \refCom{overarrowthickness}
+% and \refCom{overarrowsmallerthickness} can be used in PSTricks commands.
+% By default, a right arrow is drawn:
+% \iffalse
+%<*example>
+% \fi
+\begin{dispExample}
+\NewOverArrowCommand[pstricks]{\overpstarrow}{}
+$ \overpstarrow{v} \qquad \overpstarrow{AB} $
+\end{dispExample}
+% \iffalse
+%</example>
+% \fi
+% \noindent The \pkg{pstricks} package has to be loaded (for example, using the
+% \refOpt{pstricks} option of the \pkg{overarrows} package)
+%
+% Keys to use PSTricks commands are described in section~\ref{sec:pstricks-keys},
+% page~\pageref{sec:pstricks-keys}. The main keys are \refKey{pstricks command},
+% \refKey{psset}, \refDoc{key:pstricks}{arrow}, \refDoc{key:pstricks}{geometry}
+% an \refDoc{key:pstricks}{line thickness}. Examples:
+% \iffalse
+%<*example>
+% \fi
+\begin{dispExample}
+\NewOverArrowCommand[pstricks]{\overreddisks}{%
+ psset={linecolor=red}, arrow=*-*, center arrow,
+}
+$ \overreddisks{v} \qquad \overreddisks{AB} $
+\end{dispExample}
+\begin{dispExample}
+\NewOverArrowCommand[pstricks]{\ellipticarrow}{%
+ pstricks command={%
+ \psellipticarcn{->}%^^A avoid space before coordinates
+ (0.5\overarrowlength,0.2\overarrowlength)%^^A avoid space before coordinates
+ (0.5\overarrowlength,0.2\overarrowlength)
+ {170}{10}
+ },
+ geometry={(0,0.2\overarrowlength)(\overarrowlength,0.4\overarrowlength)},
+ line thickness={\overarrowsmallerthickness},
+ center arrow,
+}
+$ \ellipticarrow{v} \qquad \ellipticarrow{AB} $
+\end{dispExample}
+% \iffalse
+%</example>
+% \fi
+%
% \subsection{Drawing the arrow with \LaTeX{} picture environment}
%
-% As well as TikZ, the \LaTeX{} |picture| environment can be used to draw the
-% arrow. For this, the optional argument |picture| must be passed to
-% \refCom{NewOverArrowCommand}. Like for TikZ, the three lengths
-% \refCom{overarrowlength}, \refCom{overarrowthickness} and
-% \refCom{overarrowsmallerthickness} can be used in |picture| commands.
-% By default, a right vector is drawn:
+% Without any other package, arrows can also be drawn with the \LaTeX{}
+% |picture| environment. In this case, the optional argument |picture| must be
+% passed to \refCom{NewOverArrowCommand}. As with |tikz| or |pstricks|, the
+% three lengths \refCom{overarrowlength}, \refCom{overarrowthickness} and
+% \refCom{overarrowsmallerthickness} are available and can be used in
+% |picture| drawing commands. By default, a right vector is drawn:
% \iffalse
%<*example>
% \fi
\ltxarrows%^^A classic arrows
\begin{dispExample}
-\NewOverArrowCommand[picture]{overpictarrow}{}
+\NewOverArrowCommand[picture]{\overpictarrow}{}
$ \overpictarrow{v} \qquad \overpictarrow{AB} $
\end{dispExample}
% \iffalse
@@ -835,7 +899,7 @@ $ \overpictarrow{v} \qquad \overpictarrow{AB} $
\pstarrows%^^A pst arrows
\csundef{overpictarrow}
\begin{dispExample}
-\NewOverArrowCommand[picture]{overpictarrow}{}
+\NewOverArrowCommand[picture]{\overpictarrow}{}
$ \overpictarrow{v} \qquad \overpictarrow{AB} $
\end{dispExample}
% \iffalse
@@ -844,13 +908,13 @@ $ \overpictarrow{v} \qquad \overpictarrow{AB} $
%
% Keys to use \LaTeX{} |picture| environment are described in
% section~\ref{sec:picture-keys}, page~\pageref{sec:picture-keys}. The main keys
-% are \refKey{picture command}, \refKey{geometry} an \refDoc{key:picture}{line
-% thickness}. Here is an example:
+% are \refKey{picture command}, \refDoc{key:picture}{geometry} an
+% \refDoc{key:picture}{line thickness}. Here is an example:
% \iffalse
%<*example>
% \fi
\begin{dispExample}
-\NewOverArrowCommand[picture]{overbandedarrow}{
+\NewOverArrowCommand[picture]{\overbandedarrow}{
picture command={%
\qbezier
(0.0\overarrowlength,0)
@@ -875,7 +939,6 @@ $ \overbandedarrow{v} \qquad \overbandedarrow{AB} $
% \subsection{Package options}
% \label{sec:package-options}
%
-%
% The \pkg{overarrows} package accepts many options, given as a comma-separated
% list \meta{options} at package loading:
% \cs{usepackage}|[|\meta{options}|]{overarrows}|.
@@ -889,7 +952,8 @@ $ \overbandedarrow{v} \qquad \overbandedarrow{AB} $
% \begin{docOption}{esvect}
% Loads the \pkg{esvect} package and redefines its vector commands \refCom{vv}
% through the \pkg{overarrows} mechanism. Original \pkg{esvect} \cs{vv} macro
-% is still available with \refCom{esvectvv}.
+% is still available with \refCom{esvectvv}. The \pkg{esvect} font description
+% is fixed to allow any font sizes.
%
% The \pkg{esvect} package provides the symbol \cs{relbareda} \symb{\relbareda}
% which is smaller and often more flexible than the classic one \cs{relbar}
@@ -1098,6 +1162,16 @@ $ \overbandedarrow{v} \qquad \overbandedarrow{AB} $
% library are loaded independently.
% \end{docOption}
%
+% \begin{docOption}{pstricks}
+% Loads the package \pkg{pstricks-add}.
+%
+% Note that, as it, this will compile with \LaTeX{}, \LuaLaTeX{} and
+% \XeLaTeX{}, but not with \makebox{pdf\LaTeX} (see the PSTricks
+% documentation). PSTricks arrows, drawn with the |pstricks| method, are
+% always available, even if this option is not set, provided the
+% \pkg{pstricks} package is loaded independently.
+% \end{docOption}
+%
% \begin{docOption}{pstarrows}
% Loads the \pkg{pict2e} package, with its option |pstarrows|. Vectors using
% \LaTeX{} |picture| environment gives then \pstarrows$\overpictarrow{AB}$
@@ -1117,6 +1191,7 @@ $ \overbandedarrow{v} \qquad \overbandedarrow{AB} $
% \end{docOption}
%
% \begin{docOption}{subother}
+% \tcbdocmarginnote{\tcbdocnew{v1.1 2023/02/15}}
% Sets to 12 (\emph{other} catcode category) the catcode of the ``|_|" symbol
% used for subscript detection, when this is enabled by the key \refKey{detect
% subscripts} (see the section~\ref{sec:non-standard-subscripts},
@@ -1124,6 +1199,7 @@ $ \overbandedarrow{v} \qquad \overbandedarrow{AB} $
% \end{docOption}
%
% \begin{docOption}{subactive}
+% \tcbdocmarginnote{\tcbdocnew{v1.1 2023/02/15}}
% Sets to 13 (\emph{active} catcode category) the catcode of the ``|_|" symbol
% used for subscript detection, when this is enabled by the key \refKey{detect
% subscripts} (see the section~\ref{sec:non-standard-subscripts},
@@ -1142,45 +1218,51 @@ $ \overbandedarrow{v} \qquad \overbandedarrow{AB} $
% \begin{docCommands}{%
% {
% doc name=NewOverArrowCommand,
-% doc parameter=\oarg{method}\marg{name}\marg{keys},
+% doc parameter=\oarg{method}\marg{command}\marg{keys},
% },
% {
% doc name=RenewOverArrowCommand,
-% doc parameter=\oarg{method}\marg{name}\marg{keys},
+% doc parameter=\oarg{method}\marg{command}\marg{keys},
% },
% {
% doc name=ProvideOverArrowCommand,
-% doc parameter=\oarg{method}\marg{name}\marg{keys},
+% doc parameter=\oarg{method}\marg{command}\marg{keys},
% },
% {
% doc name=DeclareOverArrowCommand,
-% doc parameter=\oarg{method}\marg{name}\marg{keys},
+% doc parameter=\oarg{method}\marg{command}\marg{keys},
% },
% }
-% Creates the command \cs{\meta{name}} and its starred variant
-% \cs{\meta{name}*}. The starred variant \cs{\meta{name}*} removes the extra
+% Creates the command \meta{command} and its starred variant
+% \meta{command}|*|. The starred variant \meta{command}|*| removes the extra
% end space generated by the arrow, which is suitable, as example, when
% a subscript follows.
%
+% \tcbdocmarginnote{\tcbdocupdated{v1.2 2024/07/11}}
+% \meta{command} can be given with or without backslash (prior to the version
+% 1.2, only the name, without backslash, was accepted).
+%
% \begin{description}
-% \item[\cs{NewOverArrowCommand}] raises an error if \cs{\meta{name}} is
-% already defined.
+% \item[\cs{NewOverArrowCommand}] raises an error if \meta{command} is
+% already defined.
%
-% \item[\cs{RenewOverArrowCommand}] raises an error if \cs{\meta{name}} is undefined.
+% \item[\cs{RenewOverArrowCommand}] raises an error if \meta{command}
+% is undefined.
%
-% \item[\cs{ProvideOverArrowCommand}] sets \cs{\meta{name}} if the command is
-% undefined and does nothing if it is already defined, without raising
-% any error.
+% \item[\cs{ProvideOverArrowCommand}] sets \meta{command} if the command is
+% undefined and does nothing if it is already defined, without raising
+% any error.
%
-% \item[\cs{DeclareOverArrowCommand}] sets \cs{\meta{name}}, whether the
-% command is already defined
-% or not, without raising any error.
+% \item[\cs{DeclareOverArrowCommand}] sets \meta{command}, whether the command
+% is already defined or not, without raising any error.
% \end{description}
%
% The \meta{method} used to draw the arrow must be:
% \begin{description}
% \item[|symb|] to draw the arrow by symbols assemblage (default);
% \item[|tikz|] to draw the arrow with PGF/TikZ;
+% \item[|pstricks|] to draw the arrow with PSTricks;
+% \tcbdocmarginnote{\tcbdocnew{v1.2 2024/07/11}}
% \item[|picture|] to draw the arrow with the \LaTeX{}
% |picture| environment.
% \end{description}
@@ -1196,7 +1278,7 @@ $ \overbandedarrow{v} \qquad \overbandedarrow{AB} $
%<*example>
% \fi
\begin{dispExample}
-\NewOverArrowCommand[tikz]{myoverarrow}{arrows={Bar-Bar}, center arrow}
+\NewOverArrowCommand[tikz]{\myoverarrow}{arrows={Bar-Bar}, center arrow}
$ \myoverarrow{v} \qquad \myoverarrow{ABCD} $
\end{dispExample}
% \iffalse
@@ -1207,19 +1289,23 @@ $ \myoverarrow{v} \qquad \myoverarrow{ABCD} $
% \begin{docCommands}{%
% {
% doc name=TestOverArrow,
-% doc parameter=\oarg{pattern}\marg{name},
+% doc parameter=\oarg{pattern}\marg{command},
% },
% {
% doc name=TestOverArrow*,
-% doc parameter=\oarg{pattern}\marg{name},
+% doc parameter=\oarg{pattern}\marg{command},
% },
% }
-% Displays the result of the command \meta{name} for patterns of various
+% Displays the result of the command \meta{command} for patterns of various
% lengths and for the four math styles. A custom \meta{pattern} can be added
% to the predefined ones.
%
% The starred variant \cs{TestOverArrow*} displays a full report, including
-% kerning tests of the commands \cs{\meta{name}} and \cs{\meta{name}*} .
+% kerning tests of the commands \meta{command} and \meta{command}|*|.
+%
+% \tcbdocmarginnote{\tcbdocupdated{v1.2 2024/07/11}}
+% \meta{command} can be given with or without backslash (prior to the version
+% 1.2, only the name, without backslash, was accepted).
%
% \iffalse
%<*example>
@@ -1261,9 +1347,9 @@ $ \myoverarrow{v} \qquad \myoverarrow{ABCD} $
% \begin{docCommand}{smallermathstyle}{}
% Applies the next math style, smaller than the current. That is:
% \begin{itemize}
-% \item sets \cs{scriptstyle} if the current math style is \cs{displaystyle}
+% \item uses \cs{scriptstyle} if the current math style is \cs{displaystyle}
% or \cs{textstyle};
-% \item sets \cs{scriptscriptstyle} if the current math style is
+% \item uses \cs{scriptscriptstyle} if the current math style is
% \cs{scriptstyle};
% \item does nothing if the current math style is \cs{scriptscriptstyle}.
% \end{itemize}
@@ -1283,19 +1369,20 @@ $ \displaystyle AB \quad \smallermathstyle AB
%
% \end{docCommand}
%
-% \subsubsection{Useful lengths for TikZ or \texttt{picture} environment}
+% \subsubsection{Useful lengths for TikZ, PSTricks or \texttt{picture} environment}
%
-% Arrows drawn with graphic languages, like PGF/TikZ or the \LaTeX{} |picture|
-% environment, are not extensible. The three lengths \refLen*{overarrowlength},
-% \refLen*{overarrowthickness} and \refLen*{overarrowsmallerthickness} are
-% computed at each utilisation of a command set with the |tikz| or |picture|
-% method, so they can be used in drawing commands.
+% Arrows drawn with graphic languages, like PGF/TikZ, PSTricks or the \LaTeX{}
+% |picture| environment, are not extensible. The three lengths
+% \refLen*{overarrowlength}, \refLen*{overarrowthickness} and
+% \refLen*{overarrowsmallerthickness} are computed at each utilisation of
+% a command set with the |tikz|, |pstricks| or |picture| method, so they can be
+% used in drawing commands.
%
% \iffalse
%<*example>
% \fi
\begin{dispExample*}{grow to left by=-2em}
-\NewOverArrowCommand[tikz]{overparabola}{%
+\NewOverArrowCommand[tikz]{\overparabola}{%
path options={x=\overarrowlength, line width=\overarrowsmallerthickness},
path={(0,0) parabola[parabola height=0.2\overarrowlength] (1,0)},
arrows={-}, center arrow, min length=30,
@@ -1320,8 +1407,13 @@ $\scriptstyle \overparabola{v} \qquad \overparabola{ABCD} $ \par
% \item |\fontdimen 8 \scriptscriptfont 3| in
% \cs{scriptscriptstyle}.
% \end{itemize}
+%
+% \tcbdocmarginnote{\tcbdocupdated{v1.2 2024/07/11}}
+% Theses settings are adapted when the package \pkg{unicode-math} is loaded
+% (using \cs{Umathoverbarrule} with \LuaLaTeX{} or |\fontdimen 54|, family~2
+% with \XeLaTeX{} --- see the manual of \pkg{unicode-math}).
% \end{docLength}
-%
+%
% \begin{docLength}{overarrowsmallerthickness}
% Is set to the default rule thickness of the next smaller math style.
% That is:
@@ -1330,6 +1422,11 @@ $\scriptstyle \overparabola{v} \qquad \overparabola{ABCD} $ \par
% \item |\fontdimen 8 \scriptscriptfont 3| in \cs{scriptstyle} or
% \cs{scriptscriptstyle}.
% \end{itemize}
+%
+% \tcbdocmarginnote{\tcbdocupdated{v1.2 2024/07/11}}
+% Theses settings are adapted when the package \pkg{unicode-math} is loaded
+% (using \cs{Umathoverbarrule} with \LuaLaTeX{} or |\fontdimen 54|, family~2
+% with \XeLaTeX{} --- see the manual of \pkg{unicode-math}).
% \end{docLength}
%
% \subsubsection{Vectors macros}
@@ -1507,8 +1604,9 @@ $ \esvectvv*{\imath}{0} \quad \esvectvv*{e}{r} \quad \esvectvv*{L}{\Delta} $
% page~\pageref{sec:macro-for-commands-creation} for the documentation of
% commands creation):
% \begin{itemize}
-% \item \meta{number}| = 0 | for the |symb| method (default);
+% \item \meta{number}| = 0 | for the |symb| method (method by default);
% \item \meta{number}| = 12| for the |tikz| method;
+% \item \meta{number}| = 12| for the |pstricks| method;
% \item \meta{number}| = 18| for the |picture| method.
% \end{itemize}
%
@@ -1516,7 +1614,7 @@ $ \esvectvv*{\imath}{0} \quad \esvectvv*{e}{r} \quad \esvectvv*{L}{\Delta} $
%<*example>
% \fi
\begin{dispExample}
-\NewOverArrowCommand{overlongarrow}{min length=50}
+\NewOverArrowCommand{\overlongarrow}{min length=50}
$ \overlongarrow{v} \qquad \overlongarrow{ABCDEF} $
\end{dispExample}
% \iffalse
@@ -1550,7 +1648,7 @@ $ \overlongarrow{v} \qquad \overlongarrow{ABCDEF} $
%<*example>
% \fi
\begin{dispExample}
-\NewOverArrowCommand{underhooks}{%
+\NewOverArrowCommand{\underhooks}{%
start={\lhook}, end={\rhook}, trim=1,
arrow under, shift leftright=-4,
}
@@ -1580,8 +1678,8 @@ $ \underhooks{v} \qquad \underhooks{AB} $
% page~\pageref{sec:macro-for-commands-creation} for the documentation of
% commands creation):
% \begin{itemize}
-% \item \meta{number}| = 0 | for the |symb| method (default);
-% \item \meta{number}| = -2| for the |tikz| and |picture| methods.
+% \item \meta{number}| = 0 | for the |symb| method (method by default);
+% \item \meta{number}| = -2| for the |tikz|, |pstricks| and |picture| methods.
% \end{itemize}
%
%\end{docKey}
@@ -1590,7 +1688,7 @@ $ \underhooks{v} \qquad \underhooks{AB} $
%<*example>
% \fi
\begin{dispExample*}{grow to left by=-2em}
-\NewOverArrowCommand{lookback}{%
+\NewOverArrowCommand{\lookback}{%
start={\leftarrow}, end={\rightharpoondown},
shift left=-50, shift right=-10,
}
@@ -1658,7 +1756,7 @@ $ \lookback{\text{look back}} $
%<*example>
% \fi
\begin{dispExample*}{grow to left by=-2em}
-\NewOverArrowCommand{overharpoonsdown}{%
+\NewOverArrowCommand{\overharpoonsdown}{%
start=\leftharpoondown, end=\rightharpoondown, center arrow,
space before arrow=-0.2ex, space after arrow=0.3ex,
}
@@ -1693,7 +1791,7 @@ $ \dot{\overharpoonsdown{v}} \qquad \ddot{\overharpoonsdown{AB}}$
%<*example>
% \fi
\begin{dispExample}
-\NewOverArrowCommand{autosub}{detect subscripts}
+\NewOverArrowCommand{\autosub}{detect subscripts}
$ \imath_0 \qquad \autosub{\imath}_0 \qquad
{\autosub{\imath}}_0 \qquad {\autosub*{\imath}}_0 $
\end{dispExample}
@@ -1745,7 +1843,7 @@ $ \imath_0 \qquad \autosub{\imath}_0 \qquad
%<*example>
% \fi
\begin{dispExample}
-\NewOverArrowCommand{smalleroverrightarrow}{%
+\NewOverArrowCommand{\smalleroverrightarrow}{%
start={\smallermathstyle\relbar},
middle={\smallermathstyle\relbareda},
end={\rightarrow},
@@ -1784,16 +1882,26 @@ $ \smalleroverrightarrow{v} \qquad \smalleroverrightarrow{AB} $
% Clears \refKey{trim start}, \refKey{trim middle} and \refKey{trim end}.
% \end{docKey}
%
-%\begin{docKey}{middle config}{=auto\textbar relbar\textbar relbareda}{no default}
-% Sets a suitable configuration for the keys \refKey{middle} and \refKey{trim middle}:
+%\begin{docKey}{middle config}{=auto\textbar relbar\textbar relbareda\textbar harrowextender}{no default}
+% Sets a suitable configuration for the keys \refKey{middle} and \refKey{trim
+% middle}:
% \begin{description}
-% \item[For \refKey*{middle config}| = relbar|,] \refKey{middle} is set to
-% \cs{relbar} \symb{\relbar} and \refKey{trim middle} to |2.5|.
-% \item[For \refKey*{middle config}| = relbareda|,] \refKey{middle} is set to
-% \cs{relbareda} \symb{\relbareda} and \refKey{trim middle} to |1|.
-% \item[For \refKey*{middle config}| = auto|,] \refKey{middle} is set with
-% \refKey*{middle config}| = relabareda| if the option \refOpt{esvect} is set
-% (which is the default) and \refKey*{middle config}| = relabar| if not.
+% \item[For \refKey*{middle config}| = relbar|,] \refKey{middle} is set to
+% \cs{relbar} \symb{\relbar} and \refKey{trim middle} to |2.5|.
+% \item[For \refKey*{middle config}| = relbareda|,] \refKey{middle} is set to
+% \cs{relbareda} \symb{\relbareda} and \refKey{trim middle} to |1|.
+% \item[For \refKey*{middle config}| = harrowextender|,]
+% \tcbdocmarginnote{\tcbdocnew{v1.2 2024/07/11}}
+% \refKey{middle} is set to \cs{harrowextender} and \refKey{trim middle} to
+% |0|.
+% \item[For \refKey*{middle config}| = auto|,]
+% \tcbdocmarginnote{\tcbdocupdated{v1.2 2024/07/11}}
+% if \cs{harrowextender} is provided by the math font\footnote{See the
+% documentation of the package \pkg{unicode-math}.}, \refKey{middle} is set
+% with \refKey*{middle config}| = harrowextender|. If \cs{harrowextender}
+% isn't availlable, \refKey{middle} is set with \refKey*{middle config}%
+% | = relbareda| if the option \refOpt{esvect} is set (which is the
+% default) and \refKey*{middle config}| = relabar| if not.
% \end{description}
%\end{docKey}
%
@@ -1880,14 +1988,14 @@ $ \smalleroverrightarrow{v} \qquad \smalleroverrightarrow{AB} $
% commands creation), the |tikz| method is chosen, then the arrow is drawn by
% the command:
% \begin{center}
-% \cs{tikz}|[|\refKey*{tikz options}|]{|\refKey*{tikz command}|}|
+% \cs{tikz}|[<|\refKey*{tikz options}|>]{<|\refKey*{tikz command}|>}|
% \end{center}
% \noindent where \refKey{tikz options} and \refKey{tikz command} are two keys
% described below. When \refKey*{tikz command} is let unset, the drawing command
% turns into:
% \begin{center}
-% \cs{tikz}|[|\refKey*{tikz options}|]{|\cs{draw}|[|\refKey*{path options}|]|
-% \refKey*{path}|;}|
+% \cs{tikz}|[<|\refKey*{tikz options}|>]{|\cs{draw}|[<|\refKey*{path options}|>]|
+% |<|\refKey*{path}|>;}|
% \end{center}
%
% The best way to customise |tikz| arrows is then to set the keys \refKey{tikz
@@ -1899,7 +2007,7 @@ $ \smalleroverrightarrow{v} \qquad \smalleroverrightarrow{AB} $
%<*example>
% \fi
\begin{dispExample*}{grow to left by=-2em}
-\NewOverArrowCommand[tikz]{overdotteddoublearrow}{%
+\NewOverArrowCommand[tikz]{\overdotteddoublearrow}{%
add tikz options={blue}, add path options={densely dotted},
arrows={->[scale=0.5]>[scale=0.5]}, thinner,
min length=20, space after arrow={0.3ex},
@@ -1910,16 +2018,18 @@ $ \overdotteddoublearrow{v} \qquad \overdotteddoublearrow{AB} $
%</example>
% \fi
%
+% \bigskip
+%
% The following keys are available when the |tikz| method is chosen.
%
-% \begin{docKey}[][before lower=\medskip\par]
+% \begin{docKey}[][before lower=\bigskip\par]
% {tikz options}{=\marg{TikZ options}}
% {no default, initially |x=|\cs{overarrowlength}|, line
% width=|\cs{overarrowthickness}}
% Sets TikZ options to \meta{TikZ options}.
%\end{docKey}
%
-% \begin{docKey}[][before lower=\medskip\par]
+% \begin{docKey}[][before lower=\bigskip\par]
% {path options}{=\marg{path options}}
% {no default, initially |arrows={-Classical TikZ Rightarrow}, cap=round|}
% Sets TikZ path options to \meta{path options}.
@@ -1957,21 +2067,102 @@ $ \overdotteddoublearrow{v} \qquad \overdotteddoublearrow{AB} $
% value \cs{draw}|[|\refKey*{path options}|] |\refKey*{path}|;| is used.
%\end{docKey}
%
+% \subsubsection{PSTricks settings}
+% \label{sec:pstricks-keys}
+%
+% \tcbdocmarginnote{\tcbdocnew{v1.2 2024/07/11}}
+% If, at command creation (see section~\ref{sec:macro-for-commands-creation},
+% page~\pageref{sec:macro-for-commands-creation} for the documentation of
+% commands creation), the |pstricks| method is chosen, then the arrow is drawn
+% by:
+% \begin{flushleft}\leftskip=3cm
+% \cs{begin}|{pspicture}<|\refDoc{key:pstricks}*{geometry}|>%|\\
+% \quad\cs{psset}|{linewidth=<|\refDoc{key:pstricks}*{line thickness}|>}%|\\
+% \quad\cs{psset}|{<|\refKey*{psset}|>}%|\\
+% \quad|<|\refKey*{pstricks command}|>%|\par
+% \cs{end}|{pspicture}%|
+% \end{flushleft}
+% \noindent where \refDoc{key:pstricks}{geometry}, \refDoc{key:pstricks}{line
+% thickness} \refKey*{psset} and \refKey*{pstricks command} are four keys
+% described below.
+%
+%\iffalse
+%<*example>
+% \fi
+\begin{dispExample*}{grow to left by=-2em}
+\NewOverArrowCommand[pstricks]{\overloopandarrow}{
+ pstricks command={%
+ \pscurve{->}(0,0)
+ (0.6\overarrowlength,0.05\overarrowlength)
+ (0.5\overarrowlength,0.1\overarrowlength)
+ (0.4\overarrowlength,0.05\overarrowlength)
+ (\overarrowlength,0)
+ },
+ geometry={(0,0)(\overarrowlength,0.2\overarrowlength)},
+ space after arrow=2pt, min length=20,
+ geometry={(0,0)(\overarrowlength,0.2\overarrowlength)},
+}
+$ \overloopandarrow{v} \qquad \overloopandarrow{AB} $
+\end{dispExample*}
+% \iffalse
+%</example>
+% \fi
+%
+% \bigskip
+%
+% The following keys are available when the |pstricks| method is chosen.
+%
+% \begin{docKey}[][before lower=\bigskip\par]
+% {pstricks command}{=\marg{pstricks command}}
+% {no default, initially \cs{psline}|\{->\}(0,0)(|\refCom*{overarrowlength}|,0)|}
+% Sets the |pspicture| command to \meta{pstricks command}.
+% \end{docKey}
+%
+% \begin{docKey}[][doc label={pstricks:arrow}]%^^A same name as for TikZ
+% {arrow}{=\marg{arrow}}
+% {no default, initially |->|}
+% Sets \refKey{pstricks command} with
+% |\psline{|\meta{arrow}|}(0,0)(|\refCom*{overarrowlength}|,0)|.
+% \end{docKey}
+%
+% \begin{docKey}[][]
+% {psset}{=\marg{pstricks setting}}
+% {no default, initially empty}
+% Sets \meta{pstricks setting} with \cs{psset}.
+% \end{docKey}
+%
+% \begin{docKey}[][before lower=\bigskip\par, doc label={pstricks:geometry}]%^^A same name as for picture
+% {geometry}{=\marg{pstricks geometry specification}}
+% {no default, initially |(0,-0.5ex)(|\refCom*{overarrowlength}|,1ex)|}
+% Sets the |pspicture| geometry to \meta{pstricks geometry specification}.
+% \end{docKey}
+%
+% \begin{docKey}[][doc label={pstricks:line thickness}]%^^A same name as for TikZ
+% {line thickness}{=\marg{length}}{no default}
+% Sets the line thickness to \meta{length}.
+% \end{docKey}
+%
+% \begin{docKey}[][doc label={pstricks:thinner}]%^^A same name as for TikZ
+% {thinner}{}{}
+% Sets the keys \refDoc{key:pstricks}{line thickness} with
+% \cs{overarrowsmallerthickness}.
+% \end{docKey}
+%
% \subsubsection{Picture environment settings}
% \label{sec:picture-keys}
%
% If, at command creation (see section~\ref{sec:macro-for-commands-creation},
% page~\pageref{sec:macro-for-commands-creation} for the documentation of
% commands creation), the |picture| method is chosen, then the arrow is drawn
-% with by:
+% by:
% \begin{flushleft}\leftskip=3cm
-% \cs{begin}|{picture}|\refKey*{geometry}|%|\\
-% \quad\cs{linethickness}|{|\refDoc{key:picture}*{line thickness}|}%|\\
-% \quad\refKey*{picture command}|%|\par
+% \cs{begin}|{picture}<|\refDoc{key:picture}*{geometry}|>%|\\
+% \quad\cs{linethickness}|{<|\refDoc{key:picture}*{line thickness}|>}%|\\
+% \quad|<|\refKey*{picture command}|>%|\par
% \cs{end}|{picture}%|
% \end{flushleft}
-% \noindent where \refKey{geometry}, \refDoc{key:picture}{line thickness} and
-% \refKey*{picture command} are three keys described below.
+% \noindent where \refDoc{key:picture}{geometry}, \refDoc{key:picture}{line
+% thickness} and \refKey*{picture command} are three keys described below.
%
%\iffalse
%<*example>
@@ -1979,7 +2170,7 @@ $ \overdotteddoublearrow{v} \qquad \overdotteddoublearrow{AB} $
\begin{dispExample*}{grow to left by=-2em}
% ^^A \arc and \roundcap commands are from the pict2e package
% ^^A this example needs \usepackage{pict2e} in the preamble
- \NewOverArrowCommand[picture]{overarc}{%
+ \NewOverArrowCommand[picture]{\overarc}{%
picture command={%
\roundcap
\put(0.5\overarrowlength,0){\arc[180,0]{0.6\overarrowlength}}
@@ -1994,15 +2185,18 @@ $ \overdotteddoublearrow{v} \qquad \overdotteddoublearrow{AB} $
% \iffalse
%</example>
% \fi
-% The following keys are available when the |picture| method is chosen.
%
-% \begin{docKey}[][before lower=\medskip\par]
+% \bigskip
+%
+%The following keys are available when the |picture| method is chosen.
+%
+% \begin{docKey}[][before lower=\bigskip\par]
% {picture command}{=\marg{picture command}}
% {no default, initially \cs{put}|(0,0)\{|\cs{vector}|(1,0)\{|\refCom*{overarrowlength}|\}\}|}
% Sets picture command to \meta{picture command}.
% \end{docKey}
%
-% \begin{docKey}[][before lower=\medskip\par]
+% \begin{docKey}[][before lower=\bigskip\par, doc label={picture:geometry}]%^^A same name as for pstricks
% {geometry}{=\marg{picture geometry specification}}
% {no default, initially |(|\refCom*{overarrowlength}|,1ex)(0,-0.5ex)|}
% Sets picture geometry to \meta{picture geometry specification}.
@@ -2029,6 +2223,7 @@ $ \overdotteddoublearrow{v} \qquad \overdotteddoublearrow{AB} $
% \subsubsection{Advanced commands}
%
% \begin{docCommand}{SetOverArrowsSubscriptCommand}{\marg{command}}
+% \tcbdocmarginnote{\tcbdocnew{v1.1 2023/02/15}}
% Sets to \meta{command} the command used for subscript detection, when this
% is enabled by the key \refKey{detect subscripts} (see the
% section~\ref{sec:non-standard-subscripts},
@@ -2131,6 +2326,12 @@ $ \overdotteddoublearrow{v} \qquad \overdotteddoublearrow{AB} $
% \symb{\relbareda} from the \pkg{esvect} package. This can be fixed with the
% \refOpt{noesvect} option.
%
+% Depending of the math font, predefined commands may be faulty. For example, at
+% the time of writing, hooks vertical position is incorrect with \emph{Asana
+% Math} or \cs{harrowextender} is badly positioned with \emph{Stix two Math}
+% (for the smallest math styles), \emph{Libertinus Math} and
+% \emph{GFSNeohellenicMath}.
+%
% \subsubsection{Detection of non standard subscripts}
% \label{sec:non-standard-subscripts}
%
@@ -2225,11 +2426,25 @@ $ \overdotteddoublearrow{v} \qquad \overdotteddoublearrow{AB} $
%
% \subsection{Changelog}
%
-% \begin{description}
-% \item[v1.1] Support for non-standard subscripts
-% \item[v1.0.1] Bug fix for under* options.
-% \item[v1.0] Initial version.
-% \end{description}
+% \begingroup
+% \renewcommand{\arraystretch}{2}
+% \begin{tabular*}{\linewidth}
+% {@{} l @{\extracolsep{\fill}} p{0.9\linewidth} @{}}
+% v1.2 & \noindent\par\vspace{-\baselineskip}
+% \begin{itemize}[left=0pt, topsep=0pt, partopsep=0pt]
+% \item Fix compatibility issues with \pkg{unicode-math}.
+% \item Allow to draw the arrow with PSTricks.
+% \item Make \pkg{esvect} handle all font sizes.
+% \item Rewrite starred variant for better performances.
+% \end{itemize}
+% \\
+% v1.1 & Support for non-standard subscripts.
+% \\
+% v1.0.1 & Bug fix for under* options.
+% \\
+% v1.0 & Initial version.
+% \end{tabular*}
+% \endgroup
%
% \StopEventually{}
%
@@ -2250,6 +2465,7 @@ $ \overdotteddoublearrow{v} \qquad \overdotteddoublearrow{AB} $
\newif\ifovar@option@oldarrows@
\newif\ifovar@option@esvect@ \ovar@option@esvect@true \PassOptionsToPackage{f}{esvect}
\newif\ifovar@option@tikz@
+\newif\ifovar@option@pstricks@
\newif\ifovar@option@pstarrows@
\newif\ifovar@detectsubscripts@
\newif\ifovar@option@subother@
@@ -2280,6 +2496,8 @@ $ \overdotteddoublearrow{v} \qquad \overdotteddoublearrow{AB} $
%
% \subsubsection*{Declaration of options}
%
+% \changes{v1.2}{2024/07/11}{Add option pstricks}
+%
% \begin{macrocode}
\DeclareOption{esvect}{\ovar@option@esvect@true}
\DeclareOption{noesvect}{\ovar@option@esvect@false}
@@ -2293,6 +2511,7 @@ $ \overdotteddoublearrow{v} \qquad \overdotteddoublearrow{AB} $
\DeclareOption{esvecth}{\ovar@option@esvect@true\PassOptionsToPackage{h}{esvect}}
\DeclareOption{old-arrows}{\ovar@option@oldarrows@true}
\DeclareOption{tikz}{\ovar@option@tikz@true}
+\DeclareOption{pstricks}{\ovar@option@pstricks@true}
\DeclareOption{pstarrows}{\ovar@option@pstarrows@true}
\DeclareOption{subscripts}{\ovar@detectsubscripts@true}
\DeclareOption{subother}{\ovar@option@subother@true}
@@ -2381,23 +2600,42 @@ $ \overdotteddoublearrow{v} \qquad \overdotteddoublearrow{AB} $
\RequirePackage{amsmath}
\RequirePackage{etoolbox}
% \end{macrocode}
+%
% Option \refOpt{old-arrows}. Configuration of arrows used for
% predefined commands.
+% \changes{v1.2}{2024/07/11}{Use \cs{def} instead of \cs{let} for
+% \cs{ovar@rightarrow} and \cs{ovar@leftarrow}}
% \begin{macrocode}
-\let\ovar@rightarrow\rightarrow
-\let\ovar@leftarrow\leftarrow
+\def\ovar@rightarrow{\rightarrow}
+\def\ovar@leftarrow{\leftarrow}
\ifovar@option@oldarrows@
\RequirePackage[old]{old-arrows}
- \let\ovar@rightarrow\varrightarrow
- \let\ovar@leftarrow\varleftarrow
+ \def\ovar@rightarrow{\varrightarrow}
+ \def\ovar@leftarrow{\varleftarrow}
\fi
% \end{macrocode}
+%
% Option \refOpt{esvect}.
% \begin{macrocode}
\ifovar@option@esvect@
\RequirePackage{esvect}
+% \end{macrocode}
+% \changes{v1.2}{2024/07/11}{Fix esvect font sizes}
+% Fix font description in |uesvect.fd| to allow any sizes (taken from Enrico
+% Gregorio, \url{https://tex.stackexchange.com/a/689863/})
+% \begin{macrocode}
+ \DeclareFontFamily{U}{esvect}{}
+ \DeclareFontShape{U}{esvect}{m}{n}{
+ <-5.5> vect5
+ <5.5-6.5> vect6
+ <6.5-7.5> vect7
+ <7.5-8.5> vect8
+ <8.5-9.5> vect9
+ <9.5-> vect10
+ }{}
\fi
% \end{macrocode}
+%
% Option \refOpt{tikz}.
% \begin{macrocode}
\ifovar@option@tikz@
@@ -2405,6 +2643,14 @@ $ \overdotteddoublearrow{v} \qquad \overdotteddoublearrow{AB} $
\usetikzlibrary{arrows.meta}
\fi
% \end{macrocode}
+%
+% Option \refOpt{pstricks}.
+% \begin{macrocode}
+\ifovar@option@pstricks@
+ \RequirePackage{pstricks-add}
+\fi
+% \end{macrocode}
+%
% Option \refOpt{pstarrows}.
% \begin{macrocode}
\ifovar@option@pstarrows@
@@ -2412,6 +2658,43 @@ $ \overdotteddoublearrow{v} \qquad \overdotteddoublearrow{AB} $
\fi
% \end{macrocode}
%
+% Add hook rules to apply settings after \pkg{unicode-math}.
+% \begin{macrocode}
+\DeclareHookRule{begindocument}{overarrows}{after}{unicode-math-luatex}
+\DeclareHookRule{begindocument}{overarrows}{after}{unicode-math-xetex}
+% \end{macrocode}
+%
+% \changes{v1.2}{2024/07/11}{Use \cs{harrowextender}, if availlable.}
+% Set \cs{ovar@auto@middle} and \cs{ovar@auto@trim@middle}, used by
+% configurations made with \refKey*{middle config}|=auto|.
+% \begin{macrocode}
+\AddToHook{begindocument}[overarrows]
+ {%
+ \ifdef{\relbareda}
+ {%
+ \gdef\ovar@auto@middle{\relbareda}
+ \gdef\ovar@auto@trim@middle{1}
+ }
+ {%
+ \gdef\ovar@auto@middle{\relbar}
+ \gdef\ovar@auto@trim@middle{2.5}
+ }%
+ \@ifpackageloaded{unicode-math}
+ {%
+% \end{macrocode}
+% Test of \cs{harrowextender} availability taken from Enrico Gregorio,
+% (\url{https://tex.stackexchange.com/a/218407/}).
+% \begin{macrocode}
+ \check@mathfonts
+ \iffontchar\textfont\tw@\string"23AF
+ \gdef\ovar@auto@middle{\mathrel\harrowextender}
+ \gdef\ovar@auto@trim@middle{0}
+ \fi
+ }
+ {}%
+ }
+% \end{macrocode}
+%
% \subsection*{Configuration of subscripts detection}
%
% \changes{v1.1}{2023/02/15}{Support for non-standard subscripts}
@@ -2424,6 +2707,7 @@ $ \overdotteddoublearrow{v} \qquad \overdotteddoublearrow{AB} $
% \end{macro}
%
% Initial configuration.
+% \changes{v1.2}{2024/07/11}{Remove useless \cs{AtBeginDocument}}
% \begin{macrocode}
\SetOverArrowsSubscriptCommand{_}
% \end{macrocode}
@@ -2432,7 +2716,7 @@ $ \overdotteddoublearrow{v} \qquad \overdotteddoublearrow{AB} $
\ifovar@option@subother@
\begingroup
\catcode `_=12
- \AddToHook{begindocument/end}{\SetOverArrowsSubscriptCommand{_}}
+ \SetOverArrowsSubscriptCommand{_}%
\endgroup
\fi
% \end{macrocode}
@@ -2441,7 +2725,7 @@ $ \overdotteddoublearrow{v} \qquad \overdotteddoublearrow{AB} $
\ifovar@option@subactive@
\begingroup
\catcode `_=13
- \AddToHook{begindocument/end}{\SetOverArrowsSubscriptCommand{_}}
+ \SetOverArrowsSubscriptCommand{_}%
\endgroup
\fi
% \end{macrocode}
@@ -2662,12 +2946,25 @@ $ \overdotteddoublearrow{v} \qquad \overdotteddoublearrow{AB} $
}
}
},
+% \end{macrocode}
+% \changes{v1.2}{2024/07/11}{Add config \refKey*{middle config}|=harrowextender|}
+% \begin{macrocode}
+ middle config/harrowextender/.code={%
+ \pgfkeysalso{%
+ middle={\harrowextender},
+ trim middle={0},
+ }
+ },
+% \end{macrocode}
+% Set \refKey*{middle config} with (hopefully) a good configuration. It would be
+% better to reuse the previous \refKey*{middle config} settings, but we have to
+% wait for the |begindocument| hook to know which one to use.
+% \begin{macrocode}
middle config/auto/.code={%
- \ifovar@option@esvect@
- \pgfkeysalso{middle config=relbareda}
- \else
- \pgfkeysalso{middle config=relbar}
- \fi
+ \pgfkeysalso{%
+ middle={\ovar@auto@middle},
+ trim middle={\ovar@auto@trim@middle},
+ }
},
% \end{macrocode}
% \refKey{amsmath}.
@@ -2775,6 +3072,59 @@ $ \overdotteddoublearrow{v} \qquad \overdotteddoublearrow{AB} $
}
% \end{macrocode}
%
+% \subsubsection*{Keys for the \texttt{pstricks} method}
+%
+% \changes{v1.2}{2024/07/11}{Add the method pstricks}
+%
+% \begin{macrocode}
+\SetOverArrowsMethod[lens]{pstricks}{%
+% \end{macrocode}
+% Arrow macro.
+% \begin{macrocode}
+ no arrow macro hook/.code={%
+ \ovar@set{%
+ arrow macro/.expanded={%
+ $\noexpand\mkern \expandonce{\ovar@shift@left} mu\noexpand\relax$%
+ \noexpand\begin{pspicture}\expandonce{\ovar@pstricks@geometry}%
+ \noexpand\psset{linewidth=\expandonce{\ovar@pstricks@linethickness}}%
+ \noexpand\psset{\expandonce{\ovar@pstricks@psset}}%
+ \expandonce{\ovar@pstricks@command}%
+ \noexpand\end{pspicture}%
+ $\noexpand\mkern \expandonce{\ovar@shift@right} mu\noexpand\relax$%
+ }
+ }
+ },
+% \end{macrocode}
+% Pstricks parts: \refKey{pstricks command}, \refKey{psset},
+% \refDoc{key:pstricks}{geometry}, \refDoc{key:pstricks}{line thickness}.
+% \begin{macrocode}
+ pstricks command/.store in=\ovar@pstricks@command,
+ psset/.store in=\ovar@pstricks@psset,
+ geometry/.store in=\ovar@pstricks@geometry,
+ line thickness/.store in=\ovar@pstricks@linethickness,
+ pstricks command/.value required,
+ psset/.value required,
+ geometry/.value required,
+ line thickness/.value required,
+% \end{macrocode}
+% Pstricks handy key: \refDoc{key:pstricks}{arrow}, \refDoc{key:pstricks}{thinner}.
+% \begin{macrocode}
+ arrow/.style={pstricks command={\psline{##1}(0,0)(\overarrowlength,0)}},%
+ arrow/.value required,%
+ thinner/.style={line thickness={\overarrowsmallerthickness}},%
+ thinner/.value forbidden,%
+% \end{macrocode}
+% Initial configuration.
+% \begin{macrocode}
+ shift right=-2,
+ min length=12,
+ geometry={(0,-0.5ex)(\overarrowlength,0.5ex)},%
+ line thickness={\overarrowthickness},%
+ arrow={->},%
+ psset={},%
+}
+% \end{macrocode}
+%
% \subsubsection*{Keys for the \texttt{picture} method}
%
% \begin{macrocode}
@@ -2795,7 +3145,7 @@ $ \overdotteddoublearrow{v} \qquad \overdotteddoublearrow{AB} $
}
},
% \end{macrocode}
-% Picture parts: \refKey{picture command}, \refKey{geometry},
+% Picture parts: \refKey{picture command}, \refDoc{key:picture}{geometry},
% \refDoc{key:picture}{line thickness}.
% \begin{macrocode}
picture command/.store in=\ovar@picture@command,
@@ -2831,9 +3181,9 @@ $ \overdotteddoublearrow{v} \qquad \overdotteddoublearrow{AB} $
Previous definition will be overridden}
}{}
% \end{macrocode}
-% Use a default value of |3.5 mu|, as recommended by egreg (see
+% Use a default value of |3.5 mu|, as recommended by Enrico Gregorio (see
% \url{https://tex.stackexchange.com/a/471736}). \cs{joinrel}
-% uses a value of 3 mu.
+% uses a value of 3 mu.
% \begin{macrocode}
\DeclareRobustCommand{\xjoinrel}[1][3.5]{\mathrel{\mkern-#1mu}}
% \end{macrocode}
@@ -2872,7 +3222,6 @@ $ \overdotteddoublearrow{v} \qquad \overdotteddoublearrow{AB} $
\newlength{\overarrowlength}
\newlength{\overarrowthickness}
\newlength{\overarrowsmallerthickness}
-\newlength{\ovar@extralength}
\newlength{\ovar@tempdim}
% \end{macrocode}
%
@@ -2891,26 +3240,75 @@ $ \overdotteddoublearrow{v} \qquad \overdotteddoublearrow{AB} $
% \end{macro}
%
% \begin{macro}{\ovar@set@arrowthickness}
+% \begin{macro}{\ovar@set@arrowthickness@UM@lua}
% Sets \refLen{overarrowthickness} and \refLen{overarrowsmallerthickness}.\\
-% |#1|: arrow length\\
-% |#2|: math style
+% |#1|: math style
+%
+% Set to the default rule thickness of the current math style, normaly given by
+% \cs{fontdimen} 8 family 3. With \pkg{unicode-math}, use instead:
+% \begin{itemize}
+% \item \cs{fontdimen} 54 family 2 with XeTeX,
+% \item \cs{Umathoverbarrule} with LuaTex.
+% \end{itemize}
+% \changes{v1.2}{2024/07/11}{Get the correct rule thickness with unicode-math}
% \begin{macrocode}
-\def\ovar@set@arrowthickness#1{% use rule thickness=\fontdimen 8 font family 3
+\def\ovar@rulethickness@fontdimen{8}
+\def\ovar@rulethickness@family{3}
+\def\ovar@set@arrowthickness#1{%
\ifx#1\displaystyle%
- \overarrowthickness = \fontdimen 8 \textfont 3%
- \overarrowsmallerthickness = \fontdimen 8 \scriptfont 3%
+ \overarrowthickness =
+ \fontdimen \ovar@rulethickness@fontdimen \textfont \ovar@rulethickness@family%
+ \overarrowsmallerthickness =
+ \fontdimen \ovar@rulethickness@fontdimen \scriptfont \ovar@rulethickness@family%
\else\ifx#1\textstyle%
- \overarrowthickness = \fontdimen 8 \textfont 3%
- \overarrowsmallerthickness = \fontdimen 8 \scriptfont 3%
+ \overarrowthickness =
+ \fontdimen \ovar@rulethickness@fontdimen \textfont \ovar@rulethickness@family%
+ \overarrowsmallerthickness =
+ \fontdimen \ovar@rulethickness@fontdimen \scriptfont \ovar@rulethickness@family%
\else\ifx#1\scriptstyle%
- \overarrowthickness = \fontdimen 8 \scriptfont 3%
- \overarrowsmallerthickness = \fontdimen 8 \scriptscriptfont 3%
+ \overarrowthickness =
+ \fontdimen \ovar@rulethickness@fontdimen \scriptfont \ovar@rulethickness@family%
+ \overarrowsmallerthickness =
+ \fontdimen \ovar@rulethickness@fontdimen \scriptscriptfont \ovar@rulethickness@family%
\else%
- \overarrowthickness = \fontdimen 8 \scriptscriptfont 3%
+ \overarrowthickness =
+ \fontdimen \ovar@rulethickness@fontdimen \scriptscriptfont \ovar@rulethickness@family%
\overarrowsmallerthickness = \overarrowthickness%
\fi\fi\fi%
}
% \end{macrocode}
+% \pkg{unicode-math} with LuaTeX version.
+% \begin{macrocode}
+\def\ovar@set@arrowthickness@UM@lua#1{%
+ \overarrowthickness = \Umathoverbarrule #1
+ \ifx#1\displaystyle%
+ \overarrowsmallerthickness = \Umathoverbarrule \textstyle%
+ \else\ifx#1\textstyle%
+ \overarrowsmallerthickness = \Umathoverbarrule \scriptstyle%
+ \else%
+ \overarrowsmallerthickness = \Umathoverbarrule \scriptscriptstyle%
+ \fi\fi%
+}
+% \end{macrocode}
+% Test which version to use.
+% \begin{macrocode}
+\AddToHook{begindocument}[overarrows]
+ {%
+ \@ifpackageloaded{unicode-math-luatex}
+ {%
+ \global\let\ovar@set@arrowthickness\ovar@set@arrowthickness@UM@lua
+ }
+ {%
+ \@ifpackageloaded{unicode-math-xetex}
+ {%
+ \gdef\ovar@rulethickness@fontdimen{54}
+ \gdef\ovar@rulethickness@family{2}
+ }
+ {}
+ }
+ }
+% \end{macrocode}
+% \end{macro}
% \end{macro}
%
% \subsubsection*{Stack macros}
@@ -3017,18 +3415,39 @@ $ \overdotteddoublearrow{v} \qquad \overdotteddoublearrow{AB} $
%
% \subsubsection*{Macro for commands creation}
%
+% \changes{v1.2}{2024/07/11}{Allow backslash in command name}
+% In the initial version, the commands names must be given as csname (without
+% backslash). To harmonize the syntax with standard \cs{NewDocumentCommand},
+% define an argument processor so that both
+% \cs{NewOverArrowCommand}|{\myarrow}| and
+% \cs{NewOverArrowCommand}|{myarrow}| are accepted.
+%
+% \begin{macrocode}
+\ExplSyntaxOn
+\cs_new_protected:Npn \__overarrows_processor_strip_escape_char:n #1
+ {
+ \regex_match:nnTF { ^\cC. } { #1 }
+ { \tl_set:Nx \ProcessedArgument { \cs_to_str:N #1 } }
+ { \tl_set:Nx \ProcessedArgument { #1 } }
+ }
+\cs_new_eq:NN \ovar@cmdname@processor \__overarrows_processor_strip_escape_char:n
+\ExplSyntaxOff
+% \end{macrocode}
+%
% \begin{macro}{\DeclareOverArrowCommand}
% \begin{macrocode}
-\NewDocumentCommand{\DeclareOverArrowCommand}{ O{symb} m m }{%
+\NewDocumentCommand{\DeclareOverArrowCommand}{
+ O{symb} >{\ovar@cmdname@processor} m m
+}{%
\begingroup
\ovar@set@common
\ifcsdef{ovar@set@#1}{%
\csuse{ovar@set@#1}
}{%
\PackageError{overarrows}{Unknown method #1}
- {Try with 'symb', 'tikz' or 'picture'}
+ {Try with 'symb', 'tikz', 'pstriks' or 'picture'}
}
- \ovar@set{#3 }
+ \ovar@set{#3}
\ifdef{\ovar@macro@arrow}{}{%
\ovar@set{no arrow macro hook}
}
@@ -3050,7 +3469,7 @@ $ \overdotteddoublearrow{v} \qquad \overdotteddoublearrow{AB} $
\ifovar@detectsubscripts@%
\csgdef{ovar@#2@auto}##1{%
% \end{macrocode}
-% \vspace{-2\smallskipamount}%^^A remove space between code blocs
+% \vspace{-2\smallskipamount}%^^A remove space between code blocks
% \changes{v1.1}{2023/02/15}{Support for non-standard subscripts}
% \begin{macrocode}
\@ifnextchar \ovar@subcmd {%
@@ -3080,7 +3499,9 @@ $ \overdotteddoublearrow{v} \qquad \overdotteddoublearrow{AB} $
%
% \begin{macro}{\ProvideOverArrowCommand}
% \begin{macrocode}
-\NewDocumentCommand{\ProvideOverArrowCommand}{ O{symb} m m }{%
+\NewDocumentCommand{\ProvideOverArrowCommand}{
+ O{symb} >{\ovar@cmdname@processor} m m
+}{%
\ifcsdef{#2}{}{
\DeclareOverArrowCommand[#1]{#2}{#3}
}
@@ -3090,7 +3511,9 @@ $ \overdotteddoublearrow{v} \qquad \overdotteddoublearrow{AB} $
%
% \begin{macro}{\NewOverArrowCommand}
% \begin{macrocode}
-\NewDocumentCommand{\NewOverArrowCommand}{ O{symb} m m }{%
+\NewDocumentCommand{\NewOverArrowCommand}{
+ O{symb} >{\ovar@cmdname@processor} m m
+}{%
\ifcsdef{#2}{%
\PackageError{overarrows}{Command \csname #2\endcsname already defined}%
{You have used \protect\NewOverArrowCommand\space with a command that
@@ -3105,7 +3528,9 @@ $ \overdotteddoublearrow{v} \qquad \overdotteddoublearrow{AB} $
%
% \begin{macro}{\RenewOverArrowCommand}
% \begin{macrocode}
-\NewDocumentCommand{\RenewOverArrowCommand}{ O{symb} m m }{%
+\NewDocumentCommand{\RenewOverArrowCommand}{
+ O{symb} >{\ovar@cmdname@processor} m m
+}{%
\ifcsundef{#2}{%
\PackageError{overarrows}{Command \csname #2\endcsname undefined}%
{You have used \protect\RenewOverArrowCommand\space with a command that was
@@ -3120,17 +3545,21 @@ $ \overdotteddoublearrow{v} \qquad \overdotteddoublearrow{AB} $
%
% \subsubsection*{Starred variant}
%
+% \changes{v1.2}{2024/07/11}{Use boxes in starred variant for better performances}
% \begin{macro}{\ovar@starversion}
% |#1|: definition (stack macro + arrow macro)\\
% |#2|: math style\\
% |#3|: content
% \begin{macrocode}
+\newsavebox\ovar@tempbox
\def\ovar@starversion#1#2#3{%
- #1#2{#3}%
- \settowidth{\ovar@extralength}{$\m@th#1#2{#3}$}
- \settowidth{\ovar@tempdim}{$\m@th#2{#3}$}
- \deflength{\ovar@extralength}{0.5\ovar@extralength-0.5\ovar@tempdim}%
- \kern-\ovar@extralength%
+ \sbox{\ovar@tempbox}{$\m@th #1#2{#3}$}%
+ \usebox{\ovar@tempbox}%
+% \end{macrocode}
+% Remove the extra space added by the arrow.
+% \begin{macrocode}
+ \settowidth{\ovar@tempdim}{$\m@th #2{#3}$}%
+ \kern\dimeval{0.5\ovar@tempdim - 0.5\wd\ovar@tempbox}%
}
% \end{macrocode}
% \end{macro}
@@ -3144,7 +3573,11 @@ $ \overdotteddoublearrow{v} \qquad \overdotteddoublearrow{AB} $
\ifovar@option@esvect@
\let\esvectvv\vv
\undef\vv
- \NewOverArrowCommand{vv}{esvect, middle config=auto}
+% \end{macrocode}
+% \changes{v1.2}{2024/07/11}{Use \refKey{middle config}|=relbareda| instead of
+% \refKey{middle config}|=auto|}
+% \begin{macrocode}
+ \NewOverArrowCommand{\vv}{esvect, middle config = relbareda}
\fi
% \end{macrocode}
% \end{macro}
@@ -3152,216 +3585,231 @@ $ \overdotteddoublearrow{v} \qquad \overdotteddoublearrow{AB} $
%
% \subsubsection*{Predefined commands}
%
+% \changes{v1.2}{2024/07/11}{Declare predefined commands after \pkg{unicode-math} settings}
+% Declare predefined commands after \pkg{unicode-math} settings.
+%
+% \begin{macrocode}
+\AddToHook{begindocument}[overarrows]
+ {
+% \end{macrocode}
+%
% \begin{macro}{\overrightarrow}
% \begin{macrocode}
-\ifovar@option@overrightarrow@
- \DeclareOverArrowCommand{overrightarrow}{%
- amsmath, middle config=relbar,
- end=\ovar@rightarrow,
- right arrow,
- }
-\fi
+ \ifovar@option@overrightarrow@
+ \DeclareOverArrowCommand{\overrightarrow}{%
+ amsmath, middle config=relbar,
+ end=\ovar@rightarrow,
+ right arrow,
+ }
+ \fi
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\underrightarrow}
% \begin{macrocode}
-\ifovar@option@underrightarrow@
- \DeclareOverArrowCommand{underrightarrow}{%
- amsmath, middle config=relbar,
- end=\ovar@rightarrow,
- right arrow,
- arrow under,
- }
-\fi
+ \ifovar@option@underrightarrow@
+ \DeclareOverArrowCommand{\underrightarrow}{%
+ amsmath, middle config=relbar,
+ end=\ovar@rightarrow,
+ right arrow,
+ arrow under,
+ }
+ \fi
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\overleftarrow}
% \begin{macrocode}
-\ifovar@option@overleftarrow@
- \DeclareOverArrowCommand{overleftarrow}{%
- amsmath, middle config=relbar,
- start=\ovar@leftarrow,
- end=\relbar,
- left arrow,
- }
-\fi
+ \ifovar@option@overleftarrow@
+ \DeclareOverArrowCommand{\overleftarrow}{%
+ amsmath, middle config=relbar,
+ start=\ovar@leftarrow,
+ end=\relbar,
+ left arrow,
+ }
+ \fi
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\underleftarrow}
% \begin{macrocode}
-\ifovar@option@underleftarrow@
- \DeclareOverArrowCommand{underleftarrow}{%
- amsmath, middle config=relbar,
- start=\ovar@leftarrow,
- end=\relbar,
- left arrow,
- arrow under,
- }
-\fi
+ \ifovar@option@underleftarrow@
+ \DeclareOverArrowCommand{\underleftarrow}{%
+ amsmath, middle config=relbar,
+ start=\ovar@leftarrow,
+ end=\relbar,
+ left arrow,
+ arrow under,
+ }
+ \fi
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\overleftrightarrow}
% \begin{macrocode}
-\ifovar@option@overleftrightarrow@
- \DeclareOverArrowCommand{overleftrightarrow}{%
- amsmath, middle config=relbar,
- start=\ovar@leftarrow,
- end=\ovar@rightarrow,
- center arrow,
- }
-\fi
+ \ifovar@option@overleftrightarrow@
+ \DeclareOverArrowCommand{\overleftrightarrow}{%
+ amsmath, middle config=relbar,
+ start=\ovar@leftarrow,
+ end=\ovar@rightarrow,
+ center arrow,
+ }
+ \fi
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\underleftrightarrow}
% \begin{macrocode}
-\ifovar@option@underleftrightarrow@
- \DeclareOverArrowCommand{underleftrightarrow}{%
- amsmath, middle config=relbar,
- start=\ovar@leftarrow,
- end=\ovar@rightarrow,
- center arrow,
- arrow under,
- }
-\fi
+ \ifovar@option@underleftrightarrow@
+ \DeclareOverArrowCommand{\underleftrightarrow}{%
+ amsmath, middle config=relbar,
+ start=\ovar@leftarrow,
+ end=\ovar@rightarrow,
+ center arrow,
+ arrow under,
+ }
+ \fi
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\overrightharpoonup}
% \begin{macrocode}
-\ifovar@option@overrightharpoonup@
- \DeclareOverArrowCommand{overrightharpoonup}{%
- amsmath, middle config=relbar,
- end=\rightharpoonup,
- right arrow,
- }
-\fi
+ \ifovar@option@overrightharpoonup@
+ \DeclareOverArrowCommand{\overrightharpoonup}{%
+ amsmath, middle config=relbar,
+ end=\rightharpoonup,
+ right arrow,
+ }
+ \fi
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\underrightharpoonup}
% \begin{macrocode}
-\ifovar@option@underrightharpoonup@
- \DeclareOverArrowCommand{underrightharpoonup}{%
- amsmath, middle config=relbar,
- end=\rightharpoonup,
- right arrow,
- arrow under,
- }
-\fi
+ \ifovar@option@underrightharpoonup@
+ \DeclareOverArrowCommand{\underrightharpoonup}{%
+ amsmath, middle config=relbar,
+ end=\rightharpoonup,
+ right arrow,
+ arrow under,
+ }
+ \fi
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\overrightharpoondown}
% \begin{macrocode}
-\ifovar@option@overrightharpoondown@
- \DeclareOverArrowCommand{overrightharpoondown}{%
- amsmath, middle config=relbar,
- end=\rightharpoondown,
- right arrow,
- }
-\fi
+ \ifovar@option@overrightharpoondown@
+ \DeclareOverArrowCommand{\overrightharpoondown}{%
+ amsmath, middle config=relbar,
+ end=\rightharpoondown,
+ right arrow,
+ }
+ \fi
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\underrightharpoondown}
% \begin{macrocode}
-\ifovar@option@underrightharpoondown@
- \DeclareOverArrowCommand{underrightharpoondown}{%
- amsmath, middle config=relbar,
- end=\rightharpoondown,
- right arrow,
- arrow under,
- }
-\fi
+ \ifovar@option@underrightharpoondown@
+ \DeclareOverArrowCommand{\underrightharpoondown}{%
+ amsmath, middle config=relbar,
+ end=\rightharpoondown,
+ right arrow,
+ arrow under,
+ }
+ \fi
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\overleftharpoonup}
% \begin{macrocode}
-\ifovar@option@overleftharpoonup@
- \DeclareOverArrowCommand{overleftharpoonup}{%
- amsmath, middle config=relbar,
- start=\leftharpoonup,
- end=\relbar,
- left arrow,
- }
-\fi
+ \ifovar@option@overleftharpoonup@
+ \DeclareOverArrowCommand{\overleftharpoonup}{%
+ amsmath, middle config=relbar,
+ start=\leftharpoonup,
+ end=\relbar,
+ left arrow,
+ }
+ \fi
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\underleftharpoonup}
% \begin{macrocode}
-\ifovar@option@underleftharpoonup@
- \DeclareOverArrowCommand{underleftharpoonup}{%
- amsmath, middle config=relbar,
- start=\leftharpoonup,
- end=\relbar,
- left arrow,
- arrow under,
- }
-\fi
+ \ifovar@option@underleftharpoonup@
+ \DeclareOverArrowCommand{\underleftharpoonup}{%
+ amsmath, middle config=relbar,
+ start=\leftharpoonup,
+ end=\relbar,
+ left arrow,
+ arrow under,
+ }
+ \fi
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\overleftharpoondown}
% \begin{macrocode}
-\ifovar@option@overleftharpoondown@
- \DeclareOverArrowCommand{overleftharpoondown}{%
- amsmath, middle config=relbar,
- start=\leftharpoondown,
- end=\relbar,
- left arrow,
- }
-\fi
+ \ifovar@option@overleftharpoondown@
+ \DeclareOverArrowCommand{\overleftharpoondown}{%
+ amsmath, middle config=relbar,
+ start=\leftharpoondown,
+ end=\relbar,
+ left arrow,
+ }
+ \fi
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\underleftharpoondown}
% \begin{macrocode}
-\ifovar@option@underleftharpoondown@
- \DeclareOverArrowCommand{underleftharpoondown}{%
- amsmath, middle config=relbar,
- start=\leftharpoondown,
- end=\relbar,
- left arrow,
- arrow under,
- }
-\fi
+ \ifovar@option@underleftharpoondown@
+ \DeclareOverArrowCommand{\underleftharpoondown}{%
+ amsmath, middle config=relbar,
+ start=\leftharpoondown,
+ end=\relbar,
+ left arrow,
+ arrow under,
+ }
+ \fi
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\overbar}
% \begin{macrocode}
-\ifovar@option@overbar@
- \DeclareOverArrowCommand{overbar}{%
- amsmath, middle config=relbar,
- start={\std@minus}, end={\std@minus},% \relbar is defined with \mathsm@sh
- shift leftright=0,
- space after arrow=-0.3ex,
- }
-\fi
+ \ifovar@option@overbar@
+ \DeclareOverArrowCommand{\overbar}{%
+ amsmath, middle config=relbar,
+ start={\std@minus}, end={\std@minus},% \relbar is defined with \mathsm@sh
+ shift leftright=0,
+ space after arrow=-0.3ex,
+ }
+ \fi
% \end{macrocode}
% \end{macro}
%
+% With \pkg{unicode-math}, add |\vphantom{+}| to get the correct position.
% \begin{macro}{\underbar}
% \begin{macrocode}
-\ifovar@option@underbar@
- \DeclareOverArrowCommand{underbar}{%
- amsmath, middle config=relbar,
- start={\std@minus}, end={\std@minus},% \relbar is defined with \mathsm@sh
- shift leftright=0,
- arrow under,
- space before arrow=-0.3ex,
- }
-\fi
+ \ifovar@option@underbar@
+ \DeclareOverArrowCommand{\underbar}{%
+ amsmath, middle config=relbar,
+ start={\vphantom{+}\std@minus}, end={\std@minus},% \relbar is defined with \mathsm@sh
+ shift leftright=0,
+ arrow under,
+ space before arrow=-0.3ex,
+ }
+ \fi
% \end{macrocode}
% \end{macro}
%
+% End of |\AddToHook{begindocument}| hook.
+% \begin{macrocode}
+ }
+% \end{macrocode}
+%
+%
% \subsubsection*{Test macros}
%
% \begin{macro}{\ovar@testmathstyles}
@@ -3422,7 +3870,9 @@ $ \overdotteddoublearrow{v} \qquad \overdotteddoublearrow{AB} $
%
% \begin{macro}{\TestOverArrow}
% \begin{macrocode}
-\NewDocumentCommand{\TestOverArrow}{ s o m }{
+\NewDocumentCommand{\TestOverArrow}{
+ s o >{\ovar@cmdname@processor} m
+}{%
\ifcsdef{#3}{}{%
\PackageWarning{overarrows}{Unknown name '#3' passed to
\protect\TestOverArrow}
@@ -3494,6 +3944,7 @@ $ \overdotteddoublearrow{v} \qquad \overdotteddoublearrow{AB} $
\lstdefinestyle{lstovardoc}{%
language = [LaTeX]TeX,
columns = flexible,
+ keepspaces = true,
keywordstyle = {\bfseries\color{ovar_darkblue}},
texcsstyle = *{\bfseries\color{ovar_darkblue}},
commentstyle = {\color{gray}},
@@ -3618,7 +4069,7 @@ actual '='
name=macrocode,
firstnumber=auto,
style = lstovarcode,
- showlines=false,
+ showlines = false,
% \end{macrocode}
% Commands and lengths identification and indexing
%
@@ -3648,8 +4099,9 @@ actual '='
% \begin{macrocode}
texcs = [4]{% internal macros
ovar@rightarrow, ovar@leftarrow, ifovar@option@oldarrows@,
- ifovar@option@esvect@, ifovar@option@tikz@, ifovar@option@pstarrows@,
- ifovar@detectsubscripts@, ifovar@option@debug@,
+ ifovar@option@esvect@, ifovar@option@tikz@, ifovar@option@pstricks@,
+ ifovar@option@pstarrows@, ifovar@detectsubscripts@,
+ ifovar@option@subother@, ifovar@option@subactive@, ifovar@option@debug@,
ifovar@option@overrightarrow@, ifovar@option@underrightarrow@,
ifovar@option@overleftarrow@, ifovar@option@underleftarrow@,
ifovar@option@overleftrightarrow@, ifovar@option@underleftrightarrow@,
@@ -3657,20 +4109,23 @@ actual '='
ifovar@option@overrightharpoondown@, ifovar@option@underrightharpoondown@,
ifovar@option@overleftharpoonup@, ifovar@option@underleftharpoonup@,
ifovar@option@overleftharpoondown@, ifovar@option@underleftharpoondown@,
- ifovar@option@overbar@, ifovar@option@underbar@, ovar@set, ovar@length@min,
+ ifovar@option@overbar@, ifovar@option@underbar@, ovar@auto@middle,
+ ovar@auto@trim@middle, ovar@subcmd, ovar@set, ovar@length@min,
ovar@before@arrow, ovar@after@arrow, ovar@macro@stack, ovar@macro@arrow,
- ovar@set@, ovar@shift@left, ovar@shift@right, ovar@stack@fill,
- ovar@stackunder@fill, ovar@stack@lens, ovar@stackunder@lens,
- ovar@macro@arrowfill, ovar@arrow@fill, ovar@arrow@start, ovar@trim@start,
- ovar@trim@middle, ovar@arrow@middle, ovar@trim@end, ovar@arrow@end,
- ovar@tikz@command, ovar@tikz@pathoptions, ovar@tikz@path,
- ovar@tikz@options, ovar@picture@geometry, ovar@picture@linethickness,
- ovar@picture@command, ovar@extralength, ovar@tempdim, ovar@set@arrowlength,
- ovar@set@arrowthickness, ovar@stackover@@, ovar@stackunder@@,
- ovar@stackover@, ovar@stackunder@, ovar@stackover@fill,
- ovar@stackover@lens, ovar@set@common, ovar@starversion,
- ovar@testmathstyles, ovar@row@teststyle,%
- ifovar@option@subother@,ifovar@option@subactive@,ovar@subcmd,ovar@testkerning,%
+ ovar@shift@left, ovar@shift@right, ovar@stack@fill, ovar@stackunder@fill,
+ ovar@stack@lens, ovar@stackunder@lens, ovar@macro@arrowfill,
+ ovar@arrow@fill, ovar@arrow@start, ovar@trim@start, ovar@trim@middle,
+ ovar@arrow@middle, ovar@trim@end, ovar@arrow@end, ovar@tikz@command,
+ ovar@tikz@pathoptions, ovar@tikz@path, ovar@tikz@options,
+ ovar@pstricks@geometry, ovar@pstricks@linethickness, ovar@pstricks@psset,
+ ovar@pstricks@command, ovar@picture@geometry, ovar@picture@linethickness,
+ ovar@picture@command, ovar@tempdim, ovar@set@arrowlength,
+ ovar@set@arrowthickness, ovar@set@arrowthickness@UM@lua,
+ ovar@rulethickness@fontdimen, ovar@rulethickness@family, ovar@stackover@@,
+ ovar@stackunder@@, ovar@stackover@, ovar@stackunder@, ovar@stackover@fill,
+ ovar@stackover@lens, ovar@cmdname@processor, ovar@set@common,
+ ovar@starversion, ovar@tempbox, ovar@testmathstyles, ovar@row@teststyle,
+ ovar@testkerning%
},
index = [4][texcs4],%
indexstyle = [4]\indexmacrointernal,%
@@ -3678,20 +4133,25 @@ actual '='
% Other macros identification
% \begin{macrocode}
moretexcs = [5]{% other macros
- Relbar, relbareda, relbaredd, rightarrow, Rightarrow, varleftarrow,
- varrightarrow, twoheadrightarrow,%
+ relbar, Relbar, relbareda, relbaredd, harrowextender, rightarrow,
+ Rightarrow, varleftarrow, varrightarrow, twoheadrightarrow,%
},
% \end{macrocode}
-% Il would be nice to also index keys, but spaces are badly handled by listings.
+% Il would be nice to also index keys, but spaces are badly handled by
+% \pkg{listings}.
% \begin{macrocode}
%^^A morekeywords = [2]{%
-%^^A no stack macro hook, stack macro, arrow macro, no arrow macro hook, min
-%^^A length, before arrow, after arrow, space before arrow, space after arrow,
-%^^A shift left, shift right, shift leftright, center arrow, left arrow, right
-%^^A arrow, arrow under, fill macro, start, middle, end, trim start, trim
-%^^A middle, trim end, trim, no trimming, middle config, amsmath, esvect, tikz
-%^^A command, tikz options, path options, path, add path options, add tikz
-%^^A options, arrows, line thickness, thinner, picture command, geometry, detect subscripts,
+%^^A overarrows, no stack macro hook, stack macro, detect subscripts, arrow
+%^^A macro, no arrow macro hook, min length, before arrow, after arrow, space
+%^^A before arrow, space after arrow, shift left, shift right, shift leftright,
+%^^A center arrow, left arrow, right arrow, arrow under, arrow under/noconfig,
+%^^A arrow under/autoconfig, fill macro, start, middle, end, trim start, trim
+%^^A middle, trim end, trim, no trimming, middle config, middle config/relbar,
+%^^A middle config/relbareda, middle config/harrowextender, middle config/auto,
+%^^A amsmath, amsmath/mimic, amsmath/strict, esvect, esvect/mimic,
+%^^A esvect/strict, tikz command, tikz options, path options, path, add path
+%^^A options, add tikz options, arrows, line thickness, thinner, pstricks
+%^^A command, psset, geometry, arrow, picture command,%
%^^A },
%^^A index = [3][keywords2],%
%^^A indexstyle = [3]\lstindexmacro,%
diff --git a/macros/latex/contrib/overarrows/overarrows.pdf b/macros/latex/contrib/overarrows/overarrows.pdf
index 7203b11bb3..701f3ec02f 100644
--- a/macros/latex/contrib/overarrows/overarrows.pdf
+++ b/macros/latex/contrib/overarrows/overarrows.pdf
Binary files differ
diff --git a/macros/latex/contrib/pagelayout/README.md b/macros/latex/contrib/pagelayout/README.md
index 4d62838bf4..8d08f566f7 100644
--- a/macros/latex/contrib/pagelayout/README.md
+++ b/macros/latex/contrib/pagelayout/README.md
@@ -1,4 +1,4 @@
-![The pagelayout LaTeX class](doc/banner.svg)
+![The pagelayout LaTeX class](https://raw.githubusercontent.com/friedemannbartels/latex-pagelayout/1.1.1/doc/banner.svg)
The pagelayout class enables you to design pages declaratively using simple macros for pages, covers, grids, templates, text, and graphics to create graphic rich, perfectly typeset, and print ready PDFs.
@@ -26,7 +26,7 @@ Create a page with the `\page` command. A grid with rows and cells helps you to
}
```
-![A page with a two column layout](doc/quickstart-1.svg)
+![A page with a two column layout](https://raw.githubusercontent.com/friedemannbartels/latex-pagelayout/1.1.1/doc/quickstart-1.svg)
### Templates
@@ -44,7 +44,7 @@ You can set width relations between grid cells and height relations between grid
\template{my template}{}
```
-![A template with two placeholders](doc/quickstart-2.svg)
+![A template with two placeholders](https://raw.githubusercontent.com/friedemannbartels/latex-pagelayout/1.1.1/doc/quickstart-2.svg)
You can set margin and gutter at grid, page, or document level.
@@ -72,17 +72,17 @@ You can scale and position a graphic. And you can add borders and box shadows to
}
```
-![Photo with border and shadow](doc/quickstart-3.svg)
+![Photo with border and shadow](https://raw.githubusercontent.com/friedemannbartels/latex-pagelayout/1.1.1/doc/quickstart-3.svg)
-Have a look at the [examples](doc) to learn how to create double pages, covers, and more.
+Have a look at the [examples](https://github.com/friedemannbartels/latex-pagelayout/tree/1.1.1/doc) to learn how to create double pages, covers, and more.
-For a complete reference, read the [manual](doc/pagelayout-manual.pdf).
+For a complete reference, read the [manual](https://raw.githubusercontent.com/friedemannbartels/latex-pagelayout/1.1.1/doc/pagelayout-manual.pdf).
## Installation
In general, you should use the package manager shipped with your TeX distribution to install the pagelayout package.
-To install manually, copy the contents of [pagelayout.tds.zip](https://github.com/friedemannbartels/latex-pagelayout/releases/download/1.1.0/pagelayout-1.1.0.tds.zip) to your local TeX directory tree and run the command `texhash`.
+To install manually, copy the contents of [pagelayout.tds.zip](https://github.com/friedemannbartels/latex-pagelayout/releases/download/1.1.1/pagelayout.tds.zip) to your local TeX directory tree and run the command `texhash`.
To enable image optimization, shadow creation, and preflight, perform these installation steps:
diff --git a/macros/latex/contrib/pagelayout/doc/pagelayout-manual.pdf b/macros/latex/contrib/pagelayout/doc/pagelayout-manual.pdf
index 6913eb17ce..a8ec76cc08 100644
--- a/macros/latex/contrib/pagelayout/doc/pagelayout-manual.pdf
+++ b/macros/latex/contrib/pagelayout/doc/pagelayout-manual.pdf
Binary files differ
diff --git a/macros/latex/contrib/pagelayout/doc/pagelayout-manual.tex b/macros/latex/contrib/pagelayout/doc/pagelayout-manual.tex
index 460f1170d0..df37ebaa6f 100644
--- a/macros/latex/contrib/pagelayout/doc/pagelayout-manual.tex
+++ b/macros/latex/contrib/pagelayout/doc/pagelayout-manual.tex
@@ -18,7 +18,7 @@
\usepackage{tikz}
\OnlyDescription
\hypersetup{pdfborder={0 0 0}}
-\def\pagelayoutversion{1.1.0}
+\def\pagelayoutversion{1.1.1}
\begin{document}
diff --git a/macros/latex/contrib/pagelayout/scripts/pagelayoutapi b/macros/latex/contrib/pagelayout/scripts/pagelayoutapi
index be034baaa7..1232ae3ab7 100755
--- a/macros/latex/contrib/pagelayout/scripts/pagelayoutapi
+++ b/macros/latex/contrib/pagelayout/scripts/pagelayoutapi
@@ -13,7 +13,7 @@
# LaTeX version 2008/05/04 or later.
#
-version=1.1.0
+version=1.1.1
_convert() {
turbo=$1
diff --git a/macros/latex/contrib/pagelayout/scripts/textestvis b/macros/latex/contrib/pagelayout/scripts/textestvis
index 8ddcde77e1..8120a7ba1f 100755
--- a/macros/latex/contrib/pagelayout/scripts/textestvis
+++ b/macros/latex/contrib/pagelayout/scripts/textestvis
@@ -13,7 +13,7 @@
# LaTeX version 2008/05/04 or later.
#
-version=1.1.0
+version=1.1.1
OK="$( tput setaf 2 )•$( tput sgr0 )"
FAILED="$( tput setaf 1 )$( tput bold )x$( tput sgr0 )"
@@ -122,13 +122,13 @@ test() {
fi
fi
- magick convert -density $2 -quiet $tmpdir/$name.pdf $tmpdir/$name.png
+ magick -density $2 -quiet $tmpdir/$name.pdf $tmpdir/$name.png
if [ -f "$tmpdir/$name.png" ]; then
mv $tmpdir/$name.png $tmpdir/$name-0.png
fi
if [ -f "$name.approved.pdf" ]; then
- magick convert -density $2 -quiet $name.approved.pdf $tmpdir/$name.approved.png
+ magick -density $2 -quiet $name.approved.pdf $tmpdir/$name.approved.png
if [ -f "$tmpdir/$name.approved.png" ]; then
mv $tmpdir/$name.approved.png $tmpdir/$name.approved-0.png
fi
@@ -311,11 +311,11 @@ compare() {
spacer=""
if [ -f "$filea" ]; then
if [ -f "$fileb" ]; then
- magick convert -density $1 -quiet $filea $tmpdir/$basenamea.png
+ magick -density $1 -quiet $filea $tmpdir/$basenamea.png
if [ -f "$tmpdir/$basenamea.png" ]; then
mv $tmpdir/$basenamea.png $tmpdir/$basenamea-0.png
fi
- magick convert -density $1 -quiet $fileb $tmpdir/$basenameb.png
+ magick -density $1 -quiet $fileb $tmpdir/$basenameb.png
if [ -f "$tmpdir/$basenameb.png" ]; then
mv $tmpdir/$basenameb.png $tmpdir/$basenameb-0.png
fi
diff --git a/macros/latex/contrib/pagelayout/tex/pagelayout.cls b/macros/latex/contrib/pagelayout/tex/pagelayout.cls
index 8e7d3616ae..655ed59bd2 100644
--- a/macros/latex/contrib/pagelayout/tex/pagelayout.cls
+++ b/macros/latex/contrib/pagelayout/tex/pagelayout.cls
@@ -13,8 +13,8 @@
%%
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
-\ProvidesClass{pagelayout}[2024/01/17 Layout graphic rich documents]
-\def\pagelayoutversion{1.1.0}
+\ProvidesClass{pagelayout}[2024/07/31 Layout graphic rich documents]
+\def\pagelayoutversion{1.1.1}
% packages
\RequirePackage{pgfopts}
@@ -372,7 +372,11 @@
\pal@outermargin=\ifdim\pal@gridoutermargin=\pal@undefdim\pal@gridmargin\else\pal@gridoutermargin\fi
\height=\dimexpr\pal@pageheight - \pal@topmargin - \pal@bottommargin\relax
- \width=\dimexpr\pal@pagewidth - \pal@innermargin - \pal@outermargin\relax
+ \ifpal@isdoublepage
+ \width=\dimexpr2\pal@pagewidth - 2\pal@outermargin\relax
+ \else
+ \width=\dimexpr\pal@pagewidth - \pal@innermargin - \pal@outermargin\relax
+ \fi
\ifdim\dimexpr\pal@gridoptionheight\relax=\pal@undefdim
\else
\pal@gridheightdiff=\dimexpr0.5\height - 0.5\dimexpr\pal@gridoptionheight\relax\relax
diff --git a/macros/latex/contrib/parnotes/CHANGELOG-from-2016.md b/macros/latex/contrib/parnotes/CHANGELOG-from-2016.md
new file mode 100644
index 0000000000..001252dd0c
--- /dev/null
+++ b/macros/latex/contrib/parnotes/CHANGELOG-from-2016.md
@@ -0,0 +1,17 @@
+**Revision 3: Released on Aug 15 2016**
+ * Bug fix: Use `\protected@edef` to expand the parnote counter (fixes incompatibility with `BiocStyle`)
+
+**Revision 2: Released on Jul 26 2016**
+ * **Breaking change:** You can no longer redefine `\parnotemarkfmt`. Use `\theparnotemark` and `\parnotecusmarkfmt` instead. See the manual for details.
+ * Bug fix: `\parnotefmt` no longer changes the font to `\rmfamily` by default.
+ * `\parnote` now has an optional argument: a manually-specified parnote mark.
+ * `\parnote` now behaves more like `\footnote`:
+ * It respects `\spacefactor`
+ * It no longer inserts `\unskip`
+ * The parnote mark counter may be reset using standard LaTeX macros, e.g., `\setcounter{parnotemark}{5}`
+ * `\label` now works within parnote text; `\ref` returns the parnote label, `\pageref` returns the page where the note *text* is set, and `\parnoteref` returns the parnote label formatted as a mark.
+ * Implemented the system for separators between multiple footnotes from `footmisc` and `manyfoot` and added package option `nomultiple` to disable.
+ * Internal: The package now uses a single counter (`\c@parnotemark`) for marks.
+
+**Revision 1: Released on Jan 3 2012**
+ * Initial release
diff --git a/macros/latex/contrib/parnotes/README.md b/macros/latex/contrib/parnotes/README.md
index 6041f64a23..d5391ca900 100644
--- a/macros/latex/contrib/parnotes/README.md
+++ b/macros/latex/contrib/parnotes/README.md
@@ -1,6 +1,5 @@
parnotes
========
-rev.3b (see notes below)
The parnotes package adds a new note type, `\parnote`. Parnotes are set as normal, running paragraphs and may be placed two ways: (1) automatically, at the end of the paragraph, or (2) manually, using the `\parnotes` command.
@@ -18,7 +17,7 @@ For more details, read the project documentation in `parnotes.pdf`.
Contributing
------------
-The development repository and the bug tracker for this package are hosted [on GitHub](https://github.com/chelh/LaTeX-parnotes) but see notes below.
+The development repository and the bug tracker were originally hosted [on GitHub](https://github.com/chelh/LaTeX-parnotes) but no longer maintained there.
License
-------
@@ -36,15 +35,17 @@ Current Status
--------------
The package appears to to be unmainted, i.e. the above address exists
-but is not monitored and the original author is not reachable.
+but is not monitored and the original author is no longer reachable.
+There have been small changes and corrections by Frank Mittelbach, see
+changes.txt for details.
-Small extensions in 2019 by Frank Mittelbach:
-
- - option `reset` (alias for restart to match other packages)
- - option `alph` (for alph style notes instead of arabic)
- - option `symbol` (for fnsymbol style notes)
-
-The documentation has been changed use freely available fonts so that it
+The documentation has been changed to use freely available fonts so that it
can be typeset by everybody (the previsous release used commercial fonts).
+The current version is hosted at
+https://github.com/FrankMittelbach/fmitex-parnotes and while you can
+add issues there I'm not promising that I look at them in a timely
+manner, i.e., the package is still in search of a new maintainer and
+I'm just jumped in temporarily.
+
diff --git a/macros/latex/contrib/parnotes/changes.txt b/macros/latex/contrib/parnotes/changes.txt
new file mode 100644
index 0000000000..4944f60d82
--- /dev/null
+++ b/macros/latex/contrib/parnotes/changes.txt
@@ -0,0 +1,14 @@
+2024-06-12 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * parnotes.sty:
+ Do not predefine \theparnotemark unless we are in an older LaTeX
+ format, because this is done by \newcounter and would generate an
+ unnecessary warning.
+
+2019-07-23 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * parnotes.sty:
+ - option `reset` (alias for restart to match other packages)
+ - option `alph` (for alph style notes instead of arabic)
+ - option `symbol` (for fnsymbol style notes)
+
diff --git a/macros/latex/contrib/parnotes/parnotes.pdf b/macros/latex/contrib/parnotes/parnotes.pdf
index 6a017d2964..bf105fad4a 100644
--- a/macros/latex/contrib/parnotes/parnotes.pdf
+++ b/macros/latex/contrib/parnotes/parnotes.pdf
Binary files differ
diff --git a/macros/latex/contrib/parnotes/parnotes.sty b/macros/latex/contrib/parnotes/parnotes.sty
index 65ed470461..d3d7eb8c64 100644
--- a/macros/latex/contrib/parnotes/parnotes.sty
+++ b/macros/latex/contrib/parnotes/parnotes.sty
@@ -1,6 +1,7 @@
% The parnotes package
% Notes after every paragraph, or elsewhere
% Copyright (c) 2016 Chelsea Hughes
+% Copyright (c) 2019,2024 Frank Mittelbach
%
% This work is distributed under the LaTeX Project Public License,
% version 1.3 or later, available at
@@ -18,14 +19,18 @@
%
% The package is currently unmainted, i.e. the above address exists but is not monitored
%
-% Small extensions in 2019 by Frank Mittelbach:
+% Small extensions by Frank Mittelbach, see changes.txt for details
+%
+
+% You might file issues on my Github repo for the package, but I do
+% not actively maintain that package (unless I think something is a
+% very serious bug), so a new maintainer is welcome
+%
+% https://github.com/FrankMittelbach/fmitex-parnotes
%
-% option reset (alias for restart to match other packages)
-% option alph (for alph style notes instead of arabic)
-% option symbol (for fnsymbol style notes)
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{parnotes}[2019/07/23 rev. 3b Notes after every paragraph, or elsewhere]
+\ProvidesPackage{parnotes}[2024/06/12 rev. 3c Notes after every paragraph, or elsewhere]
%
% These are the user-modifiable format commands
@@ -34,12 +39,18 @@
% Format for parnotes - \PN@notes@shape is blank (\relax) by default
\providecommand{\parnotefmt}[1]{\footnotesize%
\PN@notes@shape\PN@narrower@optional\noindent #1}
+
% Number format (arabic, roman, etc.) for the parnote mark counter
-\providecommand{\theparnotemark}{\arabic{parnotemark}}
+%% FMi: will be set by \newcounter
+%\providecommand{\theparnotemark}{\arabic{parnotemark}}
+%% FMi -- end
+
% Minimum vertical space before and after parnotes
\providecommand{\parnotevskip}{\medskipamount}
+
% Full command used between parnotes
\providecommand{\parnoteintercmd}{\hspace{1em plus 0.3em minus 0.2em}}
+
% Basic formatting for parnote marks
\providecommand{\parnotecusmarkfmt}[1]{\textsuperscript{#1}}
@@ -52,6 +63,10 @@
\global\def\PN@text{}
% Counter for parnote marks
\newcounter{parnotemark}
+%% FMi: in case this package is used with an old LaTeX format
+\providecommand{\theparnotemark}{\arabic{parnotemark}}
+%% FMi -- end
+
% autopn environment name
\def\@PN@autopn{autopn}
% True if currently setting parnotes
diff --git a/macros/latex/contrib/parnotes/parnotes.tex b/macros/latex/contrib/parnotes/parnotes.tex
index 662dc1aa62..f6d64dab55 100644
--- a/macros/latex/contrib/parnotes/parnotes.tex
+++ b/macros/latex/contrib/parnotes/parnotes.tex
@@ -53,9 +53,9 @@
\usepackage{booktabs}
\usepackage{microtype}
-\title{The \textsf{parnotes} package\parnote{This is rev.~3b, last modified 2019/07/23.}}
+\title{The \textsf{parnotes} package\parnote{This is rev.~3c, last modified 2024/06/12.}}
\author{Chelsea Hughes\parnote{See \texttt{parnotes.sty} for copyright details. The package has currently no maintainer.}}
-\date{July 23, 2019}
+\date{June 12, 2024}
\renewcommand{\parnotefmt}[1]{\centerline{\colorbox{black!10}{\parbox{0.82\textwidth}{\footnotesize\sffamily\noindent #1}}}}
@@ -205,6 +205,10 @@ instead, \verb+\narrower+ must be placed manually within the new definition for
\section{Changelog}
{\raggedright
+\noindent\textbf{Revision 3c, released on June 12, 2024 (Frank Mittelbach)}
+\begin{itemize}
+\item Avoid an unnecessary warning about \verb=\theparnotemark=
+\end{itemize}
\noindent\textbf{Revision 3b, released on July 23, 2019 (Frank Mittelbach)}
\begin{itemize}
\item Added options \texttt{reset}, \texttt{alph} and \texttt{symbol}.
diff --git a/macros/latex/contrib/passopt/README.md b/macros/latex/contrib/passopt/README.md
new file mode 100644
index 0000000000..f8eb8f4c43
--- /dev/null
+++ b/macros/latex/contrib/passopt/README.md
@@ -0,0 +1,18 @@
+# The `passopt` package
+Passing options to packages or classes (v1.01a)
+
+## Abstract
+`passopt` allow reset the global options of a loaded macro package or document class, or to change the position of the pre-passed options in the list to the right.
+
+## License
+This work may be distributed and/or modified under the conditions of the CC-BY 4.0 License. The latest version of this license is in https://creativecommons.org/licenses/by/4.0/legalcode
+
+## Website
+| [Gitee](https://gitee.com/texno3/passopt) | [Github](https://github.com/texno3/passopt) | [CTAN](https://ctan.org/pkg/passopt) |
+
+## Maintainer
+Qu Yi<br/>
+Email: toquyi@163.com
+
+## Contributor
+Jonathan P. Spratte \ No newline at end of file
diff --git a/macros/latex/contrib/passopt/passopt.pdf b/macros/latex/contrib/passopt/passopt.pdf
new file mode 100644
index 0000000000..ce6e437c65
--- /dev/null
+++ b/macros/latex/contrib/passopt/passopt.pdf
Binary files differ
diff --git a/macros/latex/contrib/passopt/passopt.sty b/macros/latex/contrib/passopt/passopt.sty
new file mode 100644
index 0000000000..d74c698d27
--- /dev/null
+++ b/macros/latex/contrib/passopt/passopt.sty
@@ -0,0 +1,56 @@
+%
+% ***************** THE PASSOPT PACKAGE *****************
+%
+% Copyright (C) 2024 by Qu Yi <toquyi@163.com>
+%
+% This work may be distributed and/or modified under the
+% conditions of the CC-BY 4.0 License.
+% The latest version of this license is in
+% https://creativecommons.org/licenses/by/4.0/legalcode
+\NeedsTeXFormat{LaTeX2e}[2021/11/15]
+\ProvidesExplPackage{passopt}{2024/07/17}{1.01a}
+ {Passing options to packages or classes}
+
+\cs_generate_variant:Nn \tl_if_blank:nTF { v }
+\cs_new_protected:Npn \po_add_before_hook:nnn #1#2
+ { \hook_gput_code:nnn { #1/#2/before } { passopt } }
+\cs_new_protected:Npn \po_set_options_list:nnnnn #1#2#3#4#5
+ {
+ \po_add_before_hook:nnn {#1} {#5}
+ {
+ \cs_set:cpx { @raw@opt@#5.#2 }
+ {
+ \IfBooleanTF{#3}
+ {\exp_not:o {#4}}
+ {
+ \tl_if_blank:vTF { @raw@opt@#5.#2 }
+ { \exp_not:o {#4} }
+ { \exp_not:v { @raw@opt@#5.#2 },\exp_not:o {#4} }
+ }
+ }
+ \exp_args:Nc \protected@edef { opt@#5.#2 }
+ {
+ \exp_last_unbraced:Nv
+ \zap@space { @raw@opt@#5.#2 }~\@empty
+ }
+ }
+ }
+\cs_new_protected:Npn \po_clear_options_list:nnn #1#2#3
+ {
+ \po_add_before_hook:nnn {#1} {#3}
+ {
+ \tl_clear:c { @raw@opt@#3.#2 }
+ \tl_clear:c { opt@#3.#2 }
+ }
+ }
+\NewDocumentCommand{\SetOptionsToPackage}{smm}
+ {\po_set_options_list:nnnnn { package } { sty } {#1} {#2} {#3}}
+\NewDocumentCommand{\SetOptionsToClass}{smm}
+ {\po_set_options_list:nnnnn { class } { cls } {#1} {#2} {#3}}
+\cs_new_protected:Npn \ClearPackageOptions #1
+ { \po_clear_options_list:nnn { package } { sty } {#1} }
+\cs_new_protected:Npn \ClearClassOptions #1
+ { \po_clear_options_list:nnn { class } { cls } {#1} }
+\endinput
+%
+% End of file `passopt.sty'. \ No newline at end of file
diff --git a/macros/latex/contrib/passopt/passopt.tex b/macros/latex/contrib/passopt/passopt.tex
new file mode 100644
index 0000000000..fb4473e356
--- /dev/null
+++ b/macros/latex/contrib/passopt/passopt.tex
@@ -0,0 +1,103 @@
+\documentclass[load-preamble+]{cnltx-doc}
+
+\usepackage{setspace,hologo,changelog,enumitem}
+\usepackage[margin = 1in,marginparwidth = 0.6in,footskip = 0.5in]{geometry}
+\setcnltx
+ {
+ package = passopt,
+ version = v1.01a,
+ date = 2024/07/17,
+ authors = Qu Yi,
+ info = Passing options to packages or classes,
+ email = toquyi@163.com,
+ url = https://github.com/texno3/passopt,
+ abstract =
+ {
+ \pkg*{passopt} allow reset the global options of a loaded macro package or document class, or to change the position of the pre-passed options in the list to the right.
+ },
+ color-scheme = blue,
+ listings-options = {numbers = none,gobble = 2,lineskip = 1pt},
+ pre-output = {\parindent = 0em\setstretch{1.3}},
+ before-skip = \smallskipamount,
+ after-skip = \smallskipamount
+ }
+\makeatletter
+\newcommand{\splitmeta}[2]{\meta{#1}\texttt{,}\meta{#2}}
+\newcommand{\newsplitarg}[4][\splitmeta]
+ {
+ \newcommand{#2}[2]
+ {\code{\textcolor{argument}{#3\textnormal{#1{##1}{##2}}#4}}}
+ }
+\newcommand{\kvsplit}[3]
+ {
+ \item\code{\option{#1}\cnltx@isvalue\splitmarg{#2}{#3}}
+ \cnltx@checkdefault{\hfill\newline}
+ }
+\newsplitarg{\splitoarg}{[}{]}
+\newsplitarg{\splitmarg}{\{}{\}}
+\newsplitarg{\splitdarg}{(}{)}
+\newnote{\newtag}[1]{\textcolor{red}{#1}}
+\renewcommand{\emph}[1]{\textcolor{red}{#1}}
+\renewcommand{\cnltx@write@lastname}{}
+\setlist{nosep,topsep = \smallskipamount}
+\setlist[description,1]{leftmargin = \parindent}
+\setlist[itemize,1]{leftmargin = *}
+\makeatother
+
+\begin{document}
+\section{Preface}
+For a developer, there are some cases where packages and classes may load other packages or classes with options. However, other developers or users may wish to disable the enabled options or enable new ones. To enable new options, \hologo{LaTeXe} provides the \cs{PassOptionsToPackage} and \cs{PassOptionsToClass} commands to pass the options before the package or class is loaded, but the passed options are located on the \textcolor{red}{left} side of the final options list.
+\begin{sourcecode}
+ \PassOptionsToPackage{opt1,opt2=A}{mypackage}
+
+ \documentclass{book}
+ \usepackage[opt3]{mypackage}
+
+ \begin{document}
+\end{sourcecode}
+
+In the example above, the list of options that the \pkg*{mypackage} macro package ends up executing is \fbox{\code{opt1,opt2=A,opt3}}. If you wish to \textcolor{red}{disable} the pre-enabled options or place the newly enabled options to the \textcolor{red}{right} of the list (last executed), then you need to modify the code of the load command in the package or class file, but this is not recommended for public sharing. Therefore, this macro package provides commands to reset the options and change the order of the new options.
+
+\section{User commands}
+Four commands are provided to set the options to be passed later, all of which are \textcolor{red}{locally} assigned. Subsequent loading of the macro package is not must required due to the hook mechanism used to modify the list of options.
+\begin{commands}
+ \command{SetOptionsToPackage}[\sarg\marg{options list}\marg{package}]
+ Passes options to the macro package, the location of the passed options is to the right of the options used when loading the macro package. If an asterisk parameter is used, only the passed options were ultimately retained.
+ \command{SetOptionsToClass}[\sarg\marg{options list}\marg{class}]
+ Similar to the previous command, but passing options for the document class.
+ \begin{sourcecode}
+ \RequirePackage{passopt}
+ \SetOptionsToPackage{opt1,opt2=A}{mypackage}
+
+ \documentclass{book}
+ \usepackage[opt3]{mypackage}
+
+ \begin{document}
+ \end{sourcecode}
+
+ In the example above, the list of options that the \pkg*{mypackage} macro package ends up executing is \fbox{\code{opt3,opt1,opt2=A}}. If the asterisk parameter is used, the list is \fbox{\code{opt1,opt2=A}}.
+
+ Note that since macro packages or document classes can only be loaded effectively once (using the \cs{usepackage} and \cs{RequirePackage} commands), only options passed before the first loading of a macro package or document class are effective, and it is recommended for users to use commands that pass options before \cs{documentclass}.
+ \command{ClearPackageOptions}[\marg{package}]
+ Clears the options that will be loaded into the macro package. The following commands has the same effect as \cs*{SetOptionsToPackage}\code{*}.
+ \begin{sourcecode}
+ \ClearPackageOptions{mypackage}
+ \SetOptionsToPackage{opt1,opt2=A}{mypackage}
+ \end{sourcecode}
+ \command{ClearClassOptions}[\marg{class}]
+ Similar to the previous command, but passing options for the document class.
+\end{commands}
+
+\section{Acknowledgment}
+Thanks Jonathan P. Spratte for the improvement suggestions.
+
+\appendix
+\begin{changelog}[simple]
+ \begin{version}[v = 1.01,date = 2024/07/15]
+ \item Synchronized modification for lists of \code{@raw@opt@} and \code{opt@}.
+ \item Options that are set are expanded once rather than fully expanded.
+ \end{version}
+\end{changelog}
+\nocite{*}
+
+\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/pdfmanagement-testphase/CHANGELOG.md b/macros/latex/contrib/pdfmanagement-testphase/CHANGELOG.md
index b8bbe05c30..4c4251c47e 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/CHANGELOG.md
+++ b/macros/latex/contrib/pdfmanagement-testphase/CHANGELOG.md
@@ -5,7 +5,28 @@ first release 0.95a, 2021-02-23 will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
this project uses date-based 'snapshot' version identifiers.
+## [2024-08-17]
+
+### Added
+
+ - added a verification 'omit_CID' used by PDF/a-2 and newer with luatex.
+ - warnings if pdfversion does not fit ua-1 and ua-2
+
+### Fixed
+ - add xmp-resource for pdfaid:rev (tagging-project issue#375)
+ - empty color in \bookmarksetup https://github.com/ho-tex/bookmark/issues/11
+ - unneeded warning with bookmarks=false, https://github.com/latex3/hyperref/issues/352
+
+## [2024-05-23]
+Version: 2024-05-23, 0.96i
+
+### Fixed
+ - l3pdfmeta: adapted wtpdf declaration uri to corrected version.
+ - colorlinks=false no longer resets pdfborder (issue #69)
+ - added support to omit CidSet with luatex
+
## [2024-04-09]
+Version: 2024-04-09, 0.96h
### Fixed
- structure destinations for boxed destinations
@@ -23,7 +44,7 @@ Version: 2024-03-26, 0.96g
### Added
- l3pdfmeta.dtx: interface for xmpRights:Marked.
- - l3pdfmeta.dtx: add wtpdf declations if ua-2 is used.
+ - l3pdfmeta.dtx: add wtpdf declarations if ua-2 is used.
### Changed
- removed unneeded firstaids for fontspec, transparent and pdflscape
@@ -32,7 +53,7 @@ Version: 2024-03-26, 0.96g
Version: 2024-03-01, 0.96f
### Changed
- - format of /F in filespec: use utf8/string for better compability with ZUGFeRD processor.
+ - format of /F in filespec: use utf8/string for better compatibility with ZUGFeRD processor.
- added /Contents entry to URI and GoTo links for better UA support.
## [2024-02-22]
@@ -41,7 +62,7 @@ Version: 2024-02-22, 0.96e
### Changed
- date of UA-2 is now 2024
- tagpdf-base is now required
- - xmp metadata use x-default for the main language for better compability with some viewers
+ - xmp metadata use x-default for the main language for better compatibility with some viewers
- suppress info dictionary with pdf/ua-2
## [2023-12-09]
@@ -63,7 +84,7 @@ Version: 2023-12-09, 0.96d
Version: 2023-11-17, 0.96c
- remove dependency to ltxcmds in the hyperref driver
- - correct a local/global assigment
+ - correct a local/global assignment
- remove l3ref-tmp.sty
- l3pdffile.dtx: change mimetype of xml to application/xml
diff --git a/macros/latex/contrib/pdfmanagement-testphase/README.md b/macros/latex/contrib/pdfmanagement-testphase/README.md
index 136f8e6c7c..9ac57108e0 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/README.md
+++ b/macros/latex/contrib/pdfmanagement-testphase/README.md
@@ -1,6 +1,6 @@
# LaTeX PDF management testphase bundle
-Version: 0.96h, 2024-04-09
+Version: 0.96j, 2024-08-17
This package is used during a test phase to load the new PDF management code
of LaTeX.
diff --git a/macros/latex/contrib/pdfmanagement-testphase/color-ltx.sty b/macros/latex/contrib/pdfmanagement-testphase/color-ltx.sty
index b11df8acf7..68272c9b16 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/color-ltx.sty
+++ b/macros/latex/contrib/pdfmanagement-testphase/color-ltx.sty
@@ -24,7 +24,7 @@
%% This file has the LPPL maintenance status "maintained".
%%
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-\ProvidesPackage{color-ltx}[2024-04-09 v0.96h
+\ProvidesPackage{color-ltx}[2024-08-17 v0.96j
Standard LaTeX Color (patched for l3color, part of pdfmanagement-testphase, original version 2022/01/06 v1.3d) (DPC)]
\edef\Gin@codes{%
\catcode`\noexpand\^^A\the\catcode`\^^A\relax
diff --git a/macros/latex/contrib/pdfmanagement-testphase/colorspace-patches-tmp-ltx.sty b/macros/latex/contrib/pdfmanagement-testphase/colorspace-patches-tmp-ltx.sty
index 19d5375f7e..eb3c8e4b86 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/colorspace-patches-tmp-ltx.sty
+++ b/macros/latex/contrib/pdfmanagement-testphase/colorspace-patches-tmp-ltx.sty
@@ -19,8 +19,9 @@
%
% for those people who are interested.
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
-\ProvidesExplPackage{colorspace-patches-tmp-ltx}{2024-04-09}{0.96h}
- {temporay patches to for the colorspace package to test pdfresource management ... UF}
+\ProvidesExplPackage{colorspace-patches-tmp-ltx}{2024-08-17}{0.96j}
+ {temporary patches for the colorspace package to test pdfresource management ... UF}
+
% colorspace can define more models, that l3color can't yet handle.
\cs_set_protected:Npn \expl@color@set@@nnn #1#2#3
diff --git a/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.dtx b/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.dtx
index d6595449fe..f38e8d8811 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.dtx
@@ -82,7 +82,7 @@
% }^^A
% }
%
-% \date{Version 0.96h, released 2024-04-09}
+% \date{Version 0.96j, released 2024-08-17}
%
% \maketitle
% \begin{documentation}
@@ -150,7 +150,7 @@
%
% \section{\enquote{Metadata}}
%
-% \enquote{Metadata}, informations about the document, are stored in a PDF in two
+% \enquote{Metadata}, information about the document, are stored in a PDF in two
% places: The |/Info| dictionary and the XMP-metadata. \pkg{hyperref} only handles the
% |/Info| dictionary. The XMP-metadata are added by code from \pkg{l3pdfmeta}.
% (without the pdfmanagement the XMP-metadata can be added with packages like \pkg{pdfx} and
@@ -170,7 +170,7 @@
% this had to patch an number of internal \pkg{hyperref} commands---which is a problem
% if the internal commands change (as happens with this new driver)
% \item \pkg {hyperref} (and also \pkg{hyperxmp})
-% tries to deduce some datas from document commands like
+% tries to deduce some data from document commands like
% \cs{title} or \cs{author}---something that worked reasonably well when only
% some standard classes with well-known definitions of these command existed,
% but gets problematic with classes and packages which define
@@ -190,7 +190,7 @@
%
% \item It is possible to store titles in more than one language. If the value begins with
% an \enquote{optional argument} which represents a language tag, the value is taken
-% as a comma list and splitted. The first value is used for the Info dictionary,
+% as a comma list and split. The first value is used for the Info dictionary,
% the others are used in the XMP-metadata. Commas in a title must then be
% protected with braces:
%
@@ -486,7 +486,8 @@
% would arise it would possible to change this.
% \subsection{Changed behaviour}
% \begin{description}
-% \item[colorlinks] |colorlinks| will as before disable the |pdfborder|, but it is possible
+% \item[colorlinks] |colorlinks| or |colorlinks=true| will as before disable the |pdfborder|
+% (|colorlinks=false| will leave the |pdfborder| untouched), but it is possible
% to use the key in the document at any time, or to reenable the border if wanted.
% Internally |colorlinks| \& friends will no longer define/undefine
% |\Hy@colorlink|, but instead use the hooks provided by the \pkg{l3pdfannot} package.
@@ -505,7 +506,7 @@
% and |citebordercolor| has been reduced. A package like \pkg{hyperref}
% can't keep track of such semantic
% contexts like cite, acronym, glossaries and special references and maintain keys for
-% them. The keys are not completly dropped as this would affect packages like
+% them. The keys are not completely dropped as this would affect packages like
% \pkg{natbib}, but they have been separated and are no longer affected by
% group keys like |allcolors| but must be set individually instead.
%
@@ -767,7 +768,7 @@
% location. So |0 -100 200 400| will give a \enquote{box} of width 200bp,
% height 400bp and depth 100dp that the destination should encompass.
% Missing numbers will be set to 0. But one should be aware that is it is quite
-% unpredicable how viewers which support |FitR| handles zero sizes.
+% unpredictable how viewers which support |FitR| handles zero sizes.
%
% \item |pdfstartview| and |pdfremotestartview| will pass
% the values as absolute coordinates.
@@ -817,7 +818,7 @@
% key of the annotation array and in similar keys is set. It does not affect
% the text and graphics colors in the page stream.
% Possible choices are |rgb| (three numbers in the array) and |cmyk| (four numbers).
-% While the PDF reference allows four numbers, PDF readers don't necessarly handle
+% While the PDF reference allows four numbers, PDF readers don't necessarily handle
% this correctly, so the value can be wrong.
%
% \DescribeHypkey{destlabel} This is a boolean key. Currently it must be set
@@ -848,7 +849,7 @@
% /Subtype/Link/A<</S/GoToR /F (mwe2.dvi)>>
% /Subtype/Link/A<</S/GoToR /F (mwe3.dvi)>>
% \end{verbatim}
-% Typically PDF viewer can handle only GoToR annotions pointing to a PDF.
+% Typically PDF viewer can handle only GoToR annotations pointing to a PDF.
% So normally the default value |pdf| of this key should not be changed.
% \DescribeHypkey{nesting}\label{key:nesting}%
% This key is useless in PDF context. The boolean is only used in
@@ -964,7 +965,7 @@
%<@@=hyp>
% \end{macrocode}
% \begin{macrocode}
-\ProvidesFile{hgeneric-testphase.def}[2024-04-09 v0.96h %
+\ProvidesFile{hgeneric-testphase.def}[2024-08-17 v0.96j %
generic Hyperref driver for the LaTeX PDF management testphase bundle]
\RequirePackage{etoolbox} %why?
@@ -1455,7 +1456,7 @@
\pdfstringdefDisableCommands{\let\hrefpdf\@@_secondoftwowithopt:wnn}
\pdfstringdefDisableCommands{\let\hrefrun\@@_secondoftwowithopt:wnn}
% \end{macrocode}
-% \section{Compability commands}
+% \section{Compatibility commands}
% \subsection{Metadata}
% A number of values should be accessible from other packages. Until now
% packages like \pkg{hyperxmp} used variables like \cs{@pdfauthor}. As they are
@@ -1526,19 +1527,29 @@
{
\define@key{BKM}{color}
{
- \__hyp_color_set:ne {__hyp/tmpa}{#1}
- \color_export:nVN
- {__hyp/tmpa}
- \g__hyp_bordercolormodel_str
- \BKM@color
+ \tl_if_blank:nTF {#1}
+ { \cs_set_eq:NN\BKM@color\@empty }
+ {
+ \__hyp_color_set:ne {__hyp/tmpa}{#1}
+ \color_export:nVN
+ {__hyp/tmpa}
+ \g__hyp_bordercolormodel_str
+ \BKM@color
+ }
}
}
-\legacy_if:nT { Hy@bookmarks }
+\legacy_if:nTF { Hy@bookmarks }
{
\AddToHook{begindocument/before}[hyperref/bookmark]
{
\RequirePackage{bookmark}
- }
+ }
+ }
+% \end{macrocode}
+% empty hook chunk to ensure that the chunk exists.
+% \begin{macrocode}
+ {
+ \AddToHook{begindocument/before}[hyperref/bookmark]{}
}
\legacy_if:nT {Hy@draft}
{
@@ -2187,7 +2198,7 @@
% \end{macrocode}
%
% Now the three \pkg{hyperref} commands.
-% The splitted commands \cs{hyper@linkstart} and \cs{hyper@linkend} are used for
+% The split commands \cs{hyper@linkstart} and \cs{hyper@linkend} are used for
% footnotemarks, toc and natbib-cites.
% \begin{function}{\hyper@link}
% \begin{syntax}
@@ -2652,7 +2663,8 @@
% \begin{macrocode}
\keys_define:nn { hyp }
{
- ,colorlinks .meta:n =
+ ,colorlinks .choice:
+ ,colorlinks / true .meta:n =
{
,pdfborder={0~0~0}
,pdfborderstyle=
@@ -2662,6 +2674,14 @@
,colormenu =#1
,colorfile =#1
}
+ ,colorlinks / false .meta:n =
+ {
+ ,colorurl =#1
+ ,colorlink =#1
+ ,colorrun =#1
+ ,colormenu =#1
+ ,colorfile =#1
+ }
,colorlinks .default:n = {true}
}
% \end{macrocode}
@@ -5194,7 +5214,7 @@
}
\ExplSyntaxOff
\ExplSyntaxOn
-% Does an appeareance dict make sense here?
+% Does an appearance dict make sense here?
\def\PDFForm@Text
{
/Subtype/Widget
diff --git a/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.pdf b/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.pdf
index 8861d8b53f..ab0f008a55 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.dtx
index 75e944cf82..8ab7e948ac 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.dtx
@@ -45,7 +45,7 @@
% }^^A
% }
%
-% \date{Version 0.96h, released 2024-04-09}
+% \date{Version 0.96j, released 2024-08-17}
%
% \maketitle
%
@@ -56,32 +56,32 @@
% \begin{macrocode}
%<drivers>\ProvidesExplFile
%<*dvipdfmx>
- {l3backend-testphase-dvipdfmx.def}{2024-04-09}{}
+ {l3backend-testphase-dvipdfmx.def}{2024-08-17}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: dvipdfmx}
%</dvipdfmx>
%<*dvips>
- {l3backend-testphase-dvips.def}{2024-04-09}{}
+ {l3backend-testphase-dvips.def}{2024-08-17}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: dvips}
%</dvips>
%<*dvisvgm>
- {l3backend-testphase-dvisvgm.def}{2024-04-09}{}
+ {l3backend-testphase-dvisvgm.def}{2024-08-17}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: dvisvgm}
%</dvisvgm>
%<*luatex>
- {l3backend-testphase-luatex.def}{2024-04-09}{}
+ {l3backend-testphase-luatex.def}{2024-08-17}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: PDF output (LuaTeX)}
%</luatex>
%<*pdftex>
- {l3backend-testphase-pdftex.def}{2024-04-09}{}
+ {l3backend-testphase-pdftex.def}{2024-08-17}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: PDF output (pdfTeX)}
%</pdftex>
%<*xdvipdfmx>
- {l3backend-testphase-xetex.def}{2024-04-09}{}
+ {l3backend-testphase-xetex.def}{2024-08-17}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: XeTeX}
%</xdvipdfmx>
% \end{macrocode}
% \subsection{Variants}
-% We need to generate temporarly a few e-types variants of kernel backend commands.
+% We need to generate temporarily a few e-types variants of kernel backend commands.
% These can be removed once the kernel provides them.
% \begin{macrocode}
%<@@=pdf>
@@ -1818,7 +1818,7 @@
%</drivers>
% \end{macrocode}
% \end{macro}
-% Now the driver dependant parts.
+% Now the driver dependent parts.
% By default the new commands are simply copies of the original commands.
% We adapt them then for the engines and engine version which provide support
% for structure destinations.
@@ -2355,7 +2355,7 @@
% \end{macro}
% \subsection{Settings for regression tests}
% When doing pdf based regression tests some meta data in the pdf should have
-% fixed values to get identical pdf's. We define here the backend dependant
+% fixed values to get identical pdf's. We define here the backend dependent
% part. The main command is then in l3pdfmeta
% \begin{macrocode}
%<*drivers>
@@ -2528,6 +2528,23 @@
% \end{macrocode}
% \end{macro}
%
+% With luatex it is for some standards also necessary to suppress the CidSet
+% entry in the fonts (with xetex there seem to be no problem.
+% \begin{macro}{\@@_backend_omit_cidset:n}
+% The option to omit /Charset exists already for quite some time for the two
+% engines.
+% \begin{macrocode}
+%<*xdvipdfmx|dvipdfmx|dvips|dvisvgm|pdftex>
+\cs_new_protected:Npn \@@_backend_omit_cidset:n #1 {} %#1 number
+%</xdvipdfmx|dvipdfmx|dvips|dvisvgm|pdftex>
+%<*luatex>
+\cs_new_protected:Npn \@@_backend_omit_cidset:n #1 %#1 number
+ {
+ \tex_pdfvariable:D omitcidset = #1 \scan_stop:
+ }
+%</luatex>
+% \end{macrocode}
+% \end{macro}
%
% \subsection{lua code for lualatex}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.pdf
index c4e96784b0..f15724e4d4 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.dtx
index 4b04b4308b..59268785a4 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.dtx
@@ -48,7 +48,7 @@
% }^^A
% }
%
-% \date{Version 0.96h, released 2024-04-09}
+% \date{Version 0.96j, released 2024-08-17}
%
% \maketitle
% \begin{documentation}
@@ -340,7 +340,7 @@
% lead to the unpleasant result that header and footer are part of the link too.
% Since texlive 2021 pdflatex and lualatex has commands similar to a special already
% included in dvipdfmx which allows to interrupt a link. The commands must be used
-% with care: typically they must be outside a box that would be catched by link to
+% with care: typically they must be outside a box that would be caught by link to
% have the wanted effect.
%
% \end{function}
@@ -432,7 +432,7 @@
% \begin{macrocode}
%<@@=pdfannot>
%<*header>
-\ProvidesExplPackage{l3pdfannot}{2024-04-09}{0.96h}
+\ProvidesExplPackage{l3pdfannot}{2024-08-17}{0.96j}
{PDF-annotations}
\RequirePackage{l3pdfdict}
%</header>
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.pdf
index a64cceab21..568726ab7d 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.dtx
index 82d0979a02..2c297fb5c7 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.dtx
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Version 0.96h, released 2024-04-09}
+% \date{Version 0.96j, released 2024-08-17}
%
% \maketitle
% \begin{documentation}
@@ -208,7 +208,7 @@
% \begin{macrocode}
%<@@=pdfdict>
%<*header>
-\ProvidesExplPackage{l3pdfdict}{2024-04-09}{0.96h}
+\ProvidesExplPackage{l3pdfdict}{2024-08-17}{0.96j}
{Tools for PDF dictionaries (LaTeX PDF management testphase bundle)}
%</header>
% \end{macrocode}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.pdf
index d47028ee51..37534467d5 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.dtx
index 6093a6d442..7cda9b3102 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.dtx
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Version 0.96h, released 2024-04-09}
+% \date{Version 0.96j, released 2024-08-17}
%
% \maketitle
% \begin{documentation}
@@ -251,10 +251,10 @@
%
% \meta{URL} can be a mail address and should then start with |mailto:|.
% A subject can be attached with |?subject=...|.
-% This normally works quite fine as it only needs a correctly working mail programm.
+% This normally works quite fine as it only needs a correctly working mail program.
% (But for some unknown reason my mail program don't like mail addresses with hyphens in them).
%
-% Alternativly it should be an URL of a script, which should return the correct
+% Alternatively it should be an URL of a script, which should return the correct
% answer (which one this is, is rather unclear).
%
% \end{function}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.pdf
index 81bb3eab72..1981d6c95c 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.dtx
index 534959fcaf..8514ce7200 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.dtx
@@ -64,7 +64,7 @@
% }^^A
% }
%
-% \date{Version 0.96h, released 2024-04-09}
+% \date{Version 0.96j, released 2024-08-17}
%
% \maketitle
% \begin{documentation}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.pdf
index e680f95935..1b9850003e 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.dtx
index 2a114768be..ceca7dd26f 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.dtx
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Version 0.96h, released 2024-04-09}
+% \date{Version 0.96j, released 2024-08-17}
%
% \maketitle
% \begin{documentation}
@@ -77,11 +77,11 @@
% This means that various data will have to be set, and the sorting matters.
% The module here will assume that the various values are stored in sequences:
%
-% \ExplSyntaxOn
+% \begin{verbatim}
% \seq_const_from_clist:Nn \c_my_values_seq {hippo,duck,bear}
% \seq_const_from_clist:Nn \c_my_displayvalues_seq {Sieglinde,,Bär}
-% \seq_const_from_clist:Nn \c_my_defaultvalues_seq {duck,Bär} %check if export or altname ...
-% \ExplSyntaxOff
+% \seq_const_from_clist:Nn \c_my_defaultvalues_seq {duck,Bär}
+% \end{verbatim}
%
% Only the first sequence is required.
% Empty values in the display sequence are possible, then the normal value is used.
@@ -103,9 +103,12 @@
%
%
% \subsection{Appearance}
-% hm ....
+% By default the fields use a grey background as appearance, another appearance
+% can be defined with |\pdffield_appearance:nn| (described in the documentation of
+% l3pdffield) or directly with |\pdfxform_new:nnn| (in l3pdfxfom)
+% and then used with the |appearance| as in other form fields.
%
-% \bigskip
+%
% \subsection{Commands}
% \begin{function}{\pdffield_choice:n}
% \begin{syntax}
@@ -114,9 +117,9 @@
% This creates a choice field.
% The list of allowed keys is described below.
% The \meta{key val list} should at least set the name,
-% without it the default |choice| is used. Choice fields with the same
+% without it the default |choice| is used. Choice fields with the same name
% belong to the same field and if changed, the others are changed accordingly.
-% The default appearance ...
+% As default appearance we reuse the text appearance: a simple gray background.
%
% The first choice field setups the field and so should setup values and field flags.
% \end{function}
@@ -443,7 +446,7 @@
% ,\l_@@_choice_opt_seq
% }
% variables to hold the value, the default value, and display variants. The opt
-% set will be used to build the content of opt
+% seq will be used to build the content of opt
% \begin{macrocode}
\seq_new:N \l_@@_choice_values_seq
\seq_new:N \l_@@_choice_defaultvalues_seq
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.pdf
index 3456e45f32..f17a26c1b8 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.dtx
index 47c3e95df1..3c71dc973e 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.dtx
@@ -55,7 +55,7 @@
% }^^A
% }
%
-% \date{Version 0.96h, released 2024-04-09}
+% \date{Version 0.96j, released 2024-08-17}
%
% \maketitle
% \begin{documentation}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.pdf
index e84df48b53..f6a8c91e70 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.dtx
index 899042413a..e26f875c37 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.dtx
@@ -83,7 +83,7 @@
% }^^A
% }
%
-% \date{Version 0.96h, released 2024-04-09}
+% \date{Version 0.96j, released 2024-08-17}
%
% \maketitle
% \begin{documentation}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.pdf
index 51804d8c3e..dcbce59fbf 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.dtx
index bb61dd44e7..bdd1c28ffc 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.dtx
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Version 0.96h, released 2024-04-09}
+% \date{Version 0.96j, released 2024-08-17}
%
% \maketitle
% \begin{documentation}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.pdf
index 5c9d33c98a..1551733a91 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.dtx
index 8b11e57558..27deb954c3 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.dtx
@@ -69,7 +69,7 @@
% }^^A
% }
%
-% \date{Version 0.96h, released 2024-04-09}
+% \date{Version 0.96j, released 2024-08-17}
%
% \maketitle
% \begin{documentation}
@@ -87,7 +87,7 @@
% \usepackage{l3pdffield-testphase}
% \end{verbatim}
%
-% The source code is splitted into various submodules. All code is combined in the
+% The source code is split into various submodules. All code is combined in the
% sty, but the documentation is in individual PDF.
% \begin{description}
% \item[\texttt{l3pdffield}] This contains the basic commands and keys
@@ -199,7 +199,7 @@
% \subsection{The look of a field: Appearances and other settings}
%
% The look of widget annotation of a field can be set with various keys. The keys developed over
-% time and some of them superseed older ones. There is for example the simple
+% time and some of them supersede older ones. There is for example the simple
% |/Border|, the more sophisticated |/BS| (\enquote{border style dictionary}),
% the \enquote{dynamic appearance dictionary} |MK|, with lots of keys,
% and the appearance dictionary |/AP| which
@@ -631,7 +631,7 @@
% fields without sortkey will get an empty sortkey and so be at the begin,
% the order of fields with the same sortkey is not defined.
% The module only sorts fields created with the commands of this module, the
-% sorting of fields created by \pkg{hyperref} is independant.
+% sorting of fields created by \pkg{hyperref} is independent.
% \end{function}
%
% \begin{function}{DA}
@@ -972,7 +972,7 @@
%<*package>
%<@@=pdffield>
\NeedsTeXFormat{LaTeX2e}
-\ProvidesExplPackage{l3pdffield-testphase}{2024-04-09}{0.96h}%
+\ProvidesExplPackage{l3pdffield-testphase}{2024-08-17}{0.96j}%
{form fields}
% \end{macrocode}
% \subsection{hyperref specific command}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.pdf
index 906a58d2b0..395c405a56 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.dtx
index 65ac4c35fb..68287a9d5c 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.dtx
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Version 0.96h, released 2024-04-09}
+% \date{Version 0.96j, released 2024-08-17}
%
% \maketitle
% \begin{documentation}
@@ -398,9 +398,9 @@
%
% \begin{macrocode}
%<*header>
-\ProvidesExplPackage{l3pdffile}{2024-04-09}{0.96h}
+\ProvidesExplPackage{l3pdffile}{2024-08-17}{0.96j}
{embedding and referencing files in PDF---LaTeX PDF management testphase bundle}
-\RequirePackage{l3pdftools} %temporarly!!
+\RequirePackage{l3pdftools} %temporarily!!
%</header>
% \end{macrocode}
%
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.pdf
index 375d8bba15..ec0b0616e8 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.dtx
index 138b7760fc..2890995126 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.dtx
@@ -57,7 +57,7 @@
% }^^A
% }
%
-% \date{Version 0.96h, released 2024-04-09}
+% \date{Version 0.96j, released 2024-08-17}
%
% \maketitle
% \begin{documentation}
@@ -70,7 +70,7 @@
% They unify a number of primitives like the pdftex
% registers and commands \cs{pdfcatalog}, \cs{pdfpageattr},
% \cs{pdfpagesattr}, \cs{pdfinfo}, \cs{pdfpageresources}
-% and similar commands of the other backends in a backend independant way.
+% and similar commands of the other backends in a backend independent way.
%
% The supported backends are pdflatex, lualatex, (x)dvipdfmx (latex, xelatex
% and---starting in texlive 2021--lualatex)
@@ -180,12 +180,12 @@
% \begin{syntax}
% \cs{pdfmanagement_show:n} \Arg{resource path}
% \end{syntax}
-% This shows the content of the dictionary targetted by
+% This shows the content of the dictionary targeted by
% \Arg{resource path} in the log and on the terminal if possible.
%
% It is not reliable for page resources as these are filled at shipout.
%
-% It also doesn't show necessarly all the content.
+% It also doesn't show necessarily all the content.
% For example most backends add automatically
% entries to the Info dictionary.
% \end{function}
@@ -207,7 +207,7 @@
% can't be removed (but should ever a use case appear it could be added).
% \end{function}
%
-% \subsection{Description of the resource pathes}
+% \subsection{Description of the resource paths}
% \subsubsection{Info: The Info dictionary}
% \begin{NOTE}{UF}
% path: Info
@@ -367,7 +367,7 @@
% pages of different sizes. But you must be careful with the values.
% If you set e.g. with pdflatex \cs{pdfpageheight} to 300bp you get a mediabox of
% |0 0 595 300|, but pdflatex measure from the top and will also move
-% the reference point up, so effectivly
+% the reference point up, so effectively
% you get the \emph{upper} third of the page. If you set the \texttt{/MediaBox}
% to |0 0 595 300| with \cs{pdfmanagement_add:nnn} you get the \emph{lower} third.
% In general it is better to use only the primitive commands to avoid confusing
@@ -398,7 +398,7 @@
% \cs{pdfmanagement_add:nnn} \{Page/Resources/\meta{resource}\} \Arg{name} \Arg{value}
% \end{syntax}
% Adds |/|\meta{name} \meta{value} to the page resource \meta{resource}.
-% \meta{resource} can be |ExtGState|, |ColorSpace|, |Pattern| oder |Shading|.
+% \meta{resource} can be |ExtGState|, |ColorSpace|, |Pattern| or |Shading|.
% The values are always stored globally. The content is written to the pdf
% at the end of the compilation, so values can be added until then.
% \meta{name} should be a valid pdf name without the leading slash,
@@ -434,7 +434,7 @@
% Entries to the top level of the catalog can be added with\\
% |\pdfmanagement_add:nnn {Catalog}|\Arg{Name}\Arg{Value}.
% Entries to subdictionaries by using in the first
-% argument one of the pathes described later.
+% argument one of the paths described later.
% The entries in the catalog have varying requirements regarding the
% PDF management. Some entries (like \texttt{/Lang}) are simple values
% where new values should
@@ -495,7 +495,7 @@
% \par\medskip
%
% \paragraph{Simple entries in subdictionaries of the catalog}
-% The following resource pathes have been predeclared and allow to
+% The following resource paths have been predeclared and allow to
% add values to the respective subdictionaries of the catalog. The
% names of the dictionaries follow the naming and location of the dictionaries
% in the PDF reference.
@@ -632,7 +632,7 @@
%<@@=pdfmanagement>
%<*header>
%
-\ProvidesExplPackage{l3pdfmanagement}{2024-04-09}{0.96h}
+\ProvidesExplPackage{l3pdfmanagement}{2024-08-17}{0.96j}
{Management of core PDF dictionaries (LaTeX PDF management testphase bundle)}
%</header>
% \end{macrocode}
@@ -824,7 +824,7 @@
\pdfdict_if_exist:nTF { g__pdf_Core/#1 }
{
\cs_if_exist:cTF
- { @@_handler/#1/?_gput:nn } %general, name independant handler
+ { @@_handler/#1/?_gput:nn } %general, name independent handler
{ \use:c {@@_handler/#1/?_gput:nn} {#2} {#3} }
{
\cs_if_exist:cTF
@@ -862,7 +862,7 @@
\pdfdict_if_exist:nTF { g__pdf_Core/#1 }
{
\cs_if_exist:cTF
- { @@_handler/#1/?_gremove:n } %general, name independant handler
+ { @@_handler/#1/?_gremove:n } %general, name independent handler
{ \use:c {@@_handler/#1/?_gremove:n} {#2} }
{
\cs_if_exist:cTF
@@ -899,7 +899,7 @@
\cs_new_protected:Npn \@@_show:Nn #1#2
{
\cs_if_exist:cTF
- { @@_handler/#2/?_show: } %general, name independant handler
+ { @@_handler/#2/?_show: } %general, name independent handler
{ \use:c {@@_handler/#2/?_show:} }
{
\prop_if_exist:cTF { \__kernel_pdfdict_name:n { g__pdf_Core/#2 } }
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.pdf
index 8c02b7fbc4..8f126de615 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.dtx
index bcdda4fbde..a6d31a1e63 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.dtx
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Version 0.96h, released 2024-04-09}
+% \date{Version 0.96j, released 2024-08-17}
%
% \maketitle
% \begin{documentation}
@@ -205,6 +205,10 @@
% \item[|no_CharSet|] CharSet is deprecated is pdf 2.0 and should not
% be used in A-4. l3pdfmeta will therefore suppress it for the
% engines pdftex and luatex (the other engines have no suitable option)
+% \item[|omit_CID|] This avoids with PDF/A-2 and newer a failure
+% because of with missing CID identifications
+% (e.g. from rule ISO 19005-2:2011, Clause: 6.2.11.4.2)
+% It has only with luatex an effect.
% \item[|Trailer_no_Info|] The \texttt{Info} dictionary
% has been deprecated since quite some time. Metadata should be set with
% XMP-data instead. In PDF A-4 now the \texttt{Info} dictionary
@@ -432,7 +436,7 @@
% User data should normally be declared in the preamble (or even in the
% |\DocumentMetadata| command), and consist of rather simple text; |&| can be entered
% as |\&| (but directly |&| will normally work too),
-% babel shorthands should not be used. Some datas are interpreted as comma lists,
+% babel shorthands should not be used. Some data are interpreted as comma lists,
% in this cases commas which are part of the text should be protected by braces.
% In some cases a text in brackets like |[en]| is interpreted as language tag,
% if they are part of a text they should be protected by braces too.
@@ -600,7 +604,7 @@
% This add a PDF declaration with the required |conformsTo| property to the XMP metadata.
% \meta{uri} should not be empty and is a URI specifying
% the standard or profile referred to by the PDF
-% Declaration. If the uri contains a hash, use \cs{c_hash_str} to excape it
+% Declaration. If the uri contains a hash, use \cs{c_hash_str} to escape it
% and use the \texttt{e} variant to expand it.
% \end{function}
%
@@ -627,7 +631,7 @@
% \begin{macrocode}
%<@@=pdfmeta>
%<*header>
-\ProvidesExplPackage{l3pdfmeta}{2024-04-09}{0.96h}
+\ProvidesExplPackage{l3pdfmeta}{2024-08-17}{0.96j}
{PDF-Standards---LaTeX PDF management testphase bundle}
%</header>
% \end{macrocode}
@@ -814,7 +818,9 @@
\pdfmeta_standard_verify:nF { Trailer_no_Info }
{ \__pdf_backend_omit_info:n {1} }
\pdfmeta_standard_verify:nF { no_CharSet }
- { \__pdf_backend_omit_charset:n {1} }
+ { \__pdf_backend_omit_charset:n {1} }
+ \pdfmeta_standard_verify:nF { omit_CID }
+ { \__pdf_backend_omit_cidset:n {1} }
\pdfmeta_standard_verify:nnF { min_pdf_version }
{ \pdf_version: }
{ \msg_warning:nneee {pdf}{wrong-pdfversion}
@@ -930,7 +936,9 @@
{ embed_content}
\prop_gput:cnn
{ g_@@_standard_pdf/A-2B_prop }{max_pdf_version}{1.7}
-%A-2u ==============
+\prop_gput:cnn
+ { g_@@_standard_pdf/A-2B_prop }{omit_CID}{}
+ %A-2u ==============
\prop_new:c { g_@@_standard_pdf/A-2U_prop }
\prop_gset_eq:cc
{ g_@@_standard_pdf/A-2U_prop }
@@ -1177,7 +1185,7 @@
% The commands embed the profile, and write the dictionary and add it to
% the catalog. The first command should perhaps be moved to l3color
% as it needs such profiles too. We used named objects so that we can
-% check if the profile is already there. This is not full proof if pathes are
+% check if the profile is already there. This is not foolproof if paths are
% used.
% \begin{macrocode}
\cs_new_protected:Npn \@@_embed_colorprofile:n #1%#1 file name
@@ -1330,6 +1338,15 @@
_pdfstandard / UA-1 .code:n =
{
\AddToDocumentProperties [document]{pdfstandard-UA}{{1}{}}
+ \AddToHook{begindocument/before}
+ {
+ \pdf_version_compare:NnF < {2.0}
+ {
+ \msg_warning:nneee
+ {pdf}{wrong-pdfversion}
+ {\pdf_version:}{high}{UA-1}
+ }
+ }
},
% \end{macrocode}
% currently it is not possible to merge requirements - these need some thoughts as
@@ -1345,6 +1362,12 @@
{
\@@_xmp_wtpdf_accessibility_declaration:
\@@_xmp_wtpdf_reuse_declaration:
+ \pdf_version_compare:NnT < {2.0}
+ {
+ \msg_warning:nneee
+ {pdf}{wrong-pdfversion}
+ {\pdf_version:}{low}{UA-2}
+ }
}
},
xmp .choice:,
@@ -1531,7 +1554,7 @@
%
% \begin{variable}{\l_@@_xmp_currentdate_tl,\l_@@_xmp_currentdate_seq}
% The tl var contains the date of the log-file in PDF format,
-% the seq the result splitted with the regex.
+% the seq the result split with the regex.
% \begin{macrocode}
\tl_new:N \l_@@_xmp_currentdate_tl
\seq_new:N \l_@@_xmp_currentdate_seq
@@ -1542,7 +1565,7 @@
% This checks a document property and if empty uses the current date.
% \begin{macrocode}
\cs_new_protected:Npn \@@_xmp_date_get:nNN #1 #2 #3
- %#1 property, #2 tl var with PDF date, #3 seq for splitted date
+ %#1 property, #2 tl var with PDF date, #3 seq for split date
{
\tl_set:Ne #2 { \GetDocumentProperties{#1} }
\tl_if_blank:VTF #2
@@ -2103,6 +2126,12 @@
{Integer}
{internal}
{Year~of~standard}
+\@@_xmp_property_new:nnnnn
+ {pdfaid}
+ {rev}
+ {Integer}
+ {internal}
+ {Revision~year~of~standard}
% \end{macrocode}
% \end{macro}
% \item[pdfuaid] here we need (?) to declare the property
@@ -2304,7 +2333,7 @@
% that may not be related to PDF technology. Their specification is for example
% described in \url{https://pdfa.org/wp-content/uploads/2019/09/PDF-Declarations.pdf}.
%
-% If declarations are added to the XMP-metadata they need (for pdf/A compliancy) a
+% If declarations are added to the XMP-metadata they need (for pdf/A compliance) a
% schema declaration. We do not add it by default but define here a command to enable
% it. (This can be done in the document preamble as xmp is built only at the end.)
%
@@ -2991,14 +3020,14 @@
\cs_new_protected:Npn \@@_xmp_wtpdf_reuse_declaration:
{
\pdfmeta_xmp_add_declaration:eeenn
- {http://pdfa.org/declarations\c_hash_str wtpdf-reuse1.0}
+ {http://pdfa.org/declarations/wtpdf\c_hash_str reuse1.0}
{LaTeX~Project}
{\@@_xmp_iso_today:}{}{}
}
\cs_new_protected:Npn \@@_xmp_wtpdf_accessibility_declaration:
{
\pdfmeta_xmp_add_declaration:ennnn
- {http://pdfa.org/declarations\c_hash_str wtpdf-accessibility1.0}
+ {http://pdfa.org/declarations/wtpdf\c_hash_str accessibility1.0}
{LaTeX~Project}
{\@@_xmp_iso_today:}{}{}
}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.pdf
index 31abe3cc77..9a5de67174 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.dtx
index d440373372..e6d655c96e 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.dtx
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Version 0.96h, released 2024-04-09}
+% \date{Version 0.96j, released 2024-08-17}
%
% \maketitle
% \begin{documentation}
@@ -155,10 +155,14 @@
% command is \emph{used}, but only at \emph{shipout}.
% This requires new engines which
% allow to use the keyword \texttt{shipout} with the primitive
-% \cs{special} and \cs{pdfliteral}. The content of \meta{dictionary content}
-% is added in the stream.
+% \cs{special} and \cs{pdfliteral}. Also differently to \cs{pdf_bdc:ee}
+% the content of \meta{dictionary content} is added inline in the stream
+% with most engines (not on the dvips + ps2pdf route).
+% This means that this command can also be used if such an inline dictionary is preferred.
+%
+% The command requires current engines and
+% is not defined if an too old engine is detected!
%
-% The command requires current engines and is not defined if an to old engine is detected!
% \end{function}
%
% \begin{function}[added = 2020-07-03]
@@ -231,7 +235,7 @@
%
% \begin{macrocode}
%<*header>
-\ProvidesExplPackage{l3pdftools}{2024-04-09}{0.96h}
+\ProvidesExplPackage{l3pdftools}{2024-08-17}{0.96j}
{candidate commands for l3pdf---LaTeX PDF management testphase bundle}
%</header>
% \end{macrocode}
@@ -325,7 +329,7 @@
% ==========
% uri: utf16BE/string seems not to work, hex neither
% utf8/string works but not on macos,
-% so a specfic utf8/url variant is needed
+% so a specific utf8/url variant is needed
% ==========
% "input" is utf8 for pdftex, empty (native) for unicode engine
% commands to output literal strings (...)
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.pdf
index 4dca8de6ec..88abccd671 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.dtx
index c135d90f88..4daa9d2b83 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.dtx
@@ -48,7 +48,7 @@
% }^^A
% }
%
-% \date{Version 0.96h, released 2024-04-09}
+% \date{Version 0.96j, released 2024-08-17}
%
% \maketitle
% \begin{documentation}
@@ -132,7 +132,7 @@
% \begin{macrocode}
%<@@=pdf>
%<*header>
-\ProvidesExplPackage{l3pdfxform}{2024-04-09}{0.96h}
+\ProvidesExplPackage{l3pdfxform}{2024-08-17}{0.96j}
{command to create xforms (beta)---LaTeX PDF management testphase bundle}
%</header>
% \end{macrocode}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.pdf
index 5871db8203..2debc15494 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.dtx b/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.dtx
index e51d8ea205..3d29afa58b 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.dtx
@@ -47,7 +47,7 @@
% }^^A
% }
%
-% \date{Version 0.96h, released 2024-04-09}
+% \date{Version 0.96j, released 2024-08-17}
%
% \maketitle
% \begin{documentation}
@@ -220,7 +220,7 @@
% \begin{macrocode}
%<@@=pdfmanagement>
%<*header>
-\ProvidesExplPackage{ltdocinit}{2024-04-09}{0.96h}
+\ProvidesExplPackage{ltdocinit}{2024-08-17}{0.96j}
{Initialize document metadata}
%</header>
% \end{macrocode}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.pdf b/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.pdf
index 9778c2647f..7bfd5bb36b 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.dtx b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.dtx
index 61853b0d5b..148d15ce95 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.dtx
@@ -47,7 +47,7 @@
% }^^A
% }
%
-% \date{Version 0.96h, released 2024-04-09}
+% \date{Version 0.96j, released 2024-08-17}
%
% \maketitle
% \begin{documentation}
@@ -63,7 +63,7 @@
% |debug={firstaidoff={name1,name2,...},...}|.
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{pdfmanagement-firstaid}{2024-04-09}{0.96h}
+\ProvidesExplPackage{pdfmanagement-firstaid}{2024-08-17}{0.96j}
{LaTeX PDF management testphase bundle / firstaid-patches}
%<@@=pdfmanagement>
diff --git a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.pdf b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.pdf
index 7d4b656e9a..8c4d7d88cb 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.dtx b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.dtx
index eec73f1105..af4520b433 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.dtx
@@ -47,7 +47,7 @@
% }^^A
% }
%
-% \date{Version 0.96h, released 2024-04-09}
+% \date{Version 0.96j, released 2024-08-17}
%
% \maketitle
% \begin{documentation}
@@ -394,7 +394,7 @@
% \begin{macrocode}
%<@@=pdf>
%<*package>
-\ProvidesExplPackage{pdfmanagement-testphase}{2024-04-09}{0.96h}
+\ProvidesExplPackage{pdfmanagement-testphase}{2024-08-17}{0.96j}
{LaTeX PDF management testphase bundle}
\providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion}
\IfFormatAtLeastTF{2020-10-01}{}{
@@ -422,7 +422,7 @@
% to allow to set it in the document.
% \begin{macrocode}
%<*header>
-\ProvidesExplFile{pdfmanagement-testphase.ltx}{2024-04-09}{0.96h}
+\ProvidesExplFile{pdfmanagement-testphase.ltx}{2024-08-17}{0.96j}
{PDF~management~code~(testphase)}
% \end{macrocode}
% We define a boolean for the new delayed shipout. This is temporary. At some
diff --git a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.pdf b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.pdf
index d8204141ca..f2dc6282db 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty b/macros/latex/contrib/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty
index 6b553f8519..5fce11f19d 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty
+++ b/macros/latex/contrib/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty
@@ -1,6 +1,6 @@
%% LaTeX2e file `xcolor-patches-tmp-ltx.sty'
%%
-\ProvidesPackage{xcolor-patches-tmp-ltx}[2024-04-09 v0.96h patch xcolor for l3color]
+\ProvidesPackage{xcolor-patches-tmp-ltx}[2024-08-17 v0.96j patch xcolor for l3color]
\@ifundefined{color_set:nn}{\RequirePackage{l3color}}{}
\ExplSyntaxOn
diff --git a/macros/latex/contrib/pdfpages/pdfpages.dtx b/macros/latex/contrib/pdfpages/pdfpages.dtx
index 7c53462359..5b41ae68c4 100644
--- a/macros/latex/contrib/pdfpages/pdfpages.dtx
+++ b/macros/latex/contrib/pdfpages/pdfpages.dtx
@@ -27,12 +27,12 @@
%<*dtx>
\makeatletter
%</dtx>
-\def\AM@fileversion{v0.5y}
+\def\AM@fileversion{v0.6a}
\def\AM@Git@Date@process$#1: #2 #3${\AM@Git@Date@process@i#2\END}
\def\AM@Git@Date@process@i#1-#2-#3\END{\def\AM@Git@Date{#1/#2/#3}}
\def\AM@Git@SHA@process$#1: #2${\def\AM@Git@SHA{#2}}
-\AM@Git@Date@process$Date: 2024-01-21 13:41:59 +0100 $
-\AM@Git@SHA@process$SHA-1: 019995ba4828f9b782eae8f6d4c9e90f257fa598 $
+\AM@Git@Date@process$Date: 2024-05-29 13:40:24 +0200 $
+\AM@Git@SHA@process$SHA-1: 8248eea896cba74c6d712bddc3e4ae8d4c403081 $
%</!(example1,example2,example3,installer)>
%
%
@@ -84,7 +84,7 @@
%
% \GetFileInfo{pdfpages.dtx}
%
-% \CheckSum{5106}
+% \CheckSum{5113}
%
% \CharacterTable
% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -3831,6 +3831,10 @@
% these tex-files to use e.g. |\includegraphics|. However, this does not
% work out of the box for pdfpages with XeTeX-driver (as it does with
% pdftex-driver). We have to use |\import@path| of |import.sty|.
+%
+% Oups: |Subfiles.sty| uses |\import@path| as well. But we shall \emph{not}
+% use |\import@path| in combination with |subfiles.sty|. Let's use macro |\subfix|
+% to check for |subfiles.sty|.
% \begin{macrocode}
\def\AM@getpagecount{%
\expandafter\filename@parse\expandafter{\AM@currentdocname}%
@@ -3839,10 +3843,14 @@
\noexpand\def\noexpand\type@ext{.\filename@ext}}}%
\type@ext
\ifx\type@ext\AM@pdf@ext
- \ifdefined\import@path
- \let\AM@import@path\import@path
- \else
+ \ifdefined\subfix
\let\AM@import@path\@empty
+ \else
+ \ifdefined\import@path
+ \let\AM@import@path\import@path
+ \else
+ \let\AM@import@path\@empty
+ \fi
\fi
\setbox\@tempboxa=\hbox{\includegraphics{\AM@currentdocname}}%
\edef\AM@pagecount{\the\XeTeXpdfpagecount\AM@XeTeXquote
@@ -4887,6 +4895,13 @@
% \item Define |\@setmarks| if undefined.
% \end{itemize}
% \end{itemize}
+%
+% \subsection*{2024/04/29 v0.6a}
+% \begin{itemize}
+% \item Bugfix for ppxetex driver: Don't use |\import@path| in combination
+% with |subfiles.sty|.
+% \end{itemize}
+%
% \Finale
%
% \iffalse
diff --git a/macros/latex/contrib/pdfpages/pdfpages.pdf b/macros/latex/contrib/pdfpages/pdfpages.pdf
index 706810c894..a5ea1485bc 100644
--- a/macros/latex/contrib/pdfpages/pdfpages.pdf
+++ b/macros/latex/contrib/pdfpages/pdfpages.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfx/pdfx.pdf b/macros/latex/contrib/pdfx/pdfx.pdf
index 86e447b283..140c496d52 100644
--- a/macros/latex/contrib/pdfx/pdfx.pdf
+++ b/macros/latex/contrib/pdfx/pdfx.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfx/src/pdfx.dtx b/macros/latex/contrib/pdfx/src/pdfx.dtx
index ffdb92ee01..573a23b611 100644
--- a/macros/latex/contrib/pdfx/src/pdfx.dtx
+++ b/macros/latex/contrib/pdfx/src/pdfx.dtx
@@ -1,33 +1,33 @@
% \iffalse meta-comment
-%
+%
% File: pdfx.dtx
%
% Copyright (c) 2019, CV Radhakrishnan <cvr@river-valley.org>,
% Han The Thanh <thanh@river-valley.org>,
% Ross Moore <ross.moore@mq.edu.au>,
% Peter Selinger <selinger@mathstat.dal.ca>
-%
+%
% This file may be distributed and/or modified under the conditions
% of the LaTeX Project Public License, either version 1.2 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.2 or later is part of all distributions of LaTeX
% version 1999/12/01 or later.
%
% \fi
%
-% \CheckSum{6309}
+% \CheckSum{6802}
% \iffalse
%
%<*driver>
\pdfcompresslevel 9
\providecommand{\pdfxopt}{a-2u}
\providecommand{\lastyear}{2018}
-\providecommand{\thisyear}{2019}
-\begin{filecontents*}{./\jobname.xmpdata}
+\providecommand{\thisyear}{2024}
+\begin{filecontents}[force]{./\jobname.xmpdata}
\Title{Generation of PDF/X- and PDF/A-compliant PDFs with pdfTeX \textemdash\ pdfx.sty}
\Author{\CVR\sep \Thanh\sep Ross Moore\sep Peter Selinger}
\Subject{This package supports generation of PDF/X-, PDF/A- and PDF/E-compliant documents, in most of their variants, using pdfLaTeX, LuaLaTeX and XeLaTeX.}
@@ -37,10 +37,10 @@
\Copyright{Public domain.}
\Copyrighted{False}
\CopyrightURL{http://tug.org/texlive/}
-\CoverDisplayDate{March \thisyear}
-\CoverDate{\thisyear-03-10}
+\CoverDisplayDate{July \thisyear}
+\CoverDate{\thisyear-07-01}
\CreatorTool{LaTeX + pdfx.sty with option \pdfxopt, from TeX Live \thisyear}
-\Date{2017-05-18\sep 2017-06-23\sep 2018-11-29\sep 2018-12-22\sep 2019-02-08\sep 2019-03-10}
+\Date{2024-07-01}
\Advisory{An earlier version of this documentation was published as: TUGboat 36, No.2, pp.136\textendash 142 (2015)}
\Advisory{v1.6: Added XMP support for PDF/UA-1. Added more Metadata fields and Language support.}
\Advisory{v1.6: Default RGB and CMYK profiles now require the colorprofiles.sty package.}
@@ -52,16 +52,29 @@
\Advisory{v1.6: Support for 8-bit Hebrew encodings, some Arabic and Devanagari.}
\Advisory{v1.6: Updated documentation, incl. for LaTeX changes.}
\Advisory{v1.6.1: Fixed issue with ifthen package; improved Metadata with LuaTeX and XeTeX.}
-\Advisory{v.1.6.1: Flexibility with page boxes for PDF/X.}
-\Advisory{v.1.6.2: Fixed passing of options to xcolor, and some glyphtounicode values.}
-\Advisory{v.1.6.2: Fixed encoding issue. Extra warning when colorprofiles.tex is missing.}
-\Advisory{v.1.6.3: Properly fixed encoding issue; supports \string\pdfomitcharset\ primitive.}
-\Advisory{v.1.6.3: Reference to veraPDF validation software; additions to glyphtounicode-ntx.tex.}
-\Advisory{v.1.6.3: Patched \string\mathaccentV\ to output accents after the base character.}
+\Advisory{v1.6.1: Flexibility with page boxes for PDF/X.}
+\Advisory{v1.6.2: Fixed passing of options to xcolor, and some glyphtounicode values.}
+\Advisory{v1.6.2: Fixed encoding issue. Extra warning when colorprofiles.tex is missing.}
+\Advisory{v1.6.3: Properly fixed encoding issue; supports \string\pdfomitcharset\ primitive.}
+\Advisory{v1.6.3: Reference to veraPDF validation software; additions to glyphtounicode-ntx.tex.}
+\Advisory{v1.6.3: Patched \string\mathaccentV\ to output accents after the base character.}
+\Advisory{v1.6.4: Added check and warning with luatex for whether \string\pdfminorversion\ can be changed.}
+\Advisory{v1.6.4: Ensure correct \string\catcode for input characters up to 31, when reading .xmpdata file.}
+\Advisory{v1.6.4: Disabled patched \string\mathaccentV\ due to incompatibility with wide base expressions.}
+\Advisory{v1.6.5: Support for \string\Nickname\ as Metadata command.}
+\Advisory{v1.6.5: Ensure par is unexpandable when reading Metadata.}
+\Advisory{v1.6.5a: Support for Memoir class's \string\stockwidth\ and \string\stockheight.}
+\Advisory{v1.6.5a: Added pdf20 option for PDF 2.0, with support for \string\pdfmajorversion.}
+\Advisory{v1.6.5b: Avoid loading xmpincl package from within a TeX grouping.}
+\Advisory{v1.6.5c: Avoid loading stringenc package from within a TeX grouping.}
+\Advisory{v1.6.5d: Disable some options for xcolor after use.}
+\Advisory{v1.6.5e: Ensure \string\pdfmajorversion\ and \string\pdfminorversion\ are both defined and set correctly.}
+\Advisory{v1.6.5e: Updated documentation; added new Bibliography entries and revised URL links.}
+\Advisory{v1.6.5f: Reset ifpdf properly; support \string\creationdate with XeTeX. Revised Glossary layout.}
\pdfxEnableCommands{%
\def\CVR{C.V. Radhakrishnan}\def\Thanh{H\`an Th\eee Thanh}%
\def\eee{^^c3^^aa^^cc^^81 }}
-\end{filecontents*}
+\end{filecontents}
\PassOptionsToPackage{dvipsnames,svgnames}{xcolor}
\documentclass[a4paper]{ltxdoc}
\usepackage[\pdfxopt]{pdfx}
@@ -104,12 +117,12 @@
% \GetFileInfo{pdfx.dtx}
%
% \DoNotIndex{\newcommand,\newenvironment}
-%
+%
% \DoNotIndex{\def,\edef,\gdef,\xdef,\global,\long,\let}
% \DoNotIndex{\expandafter,\string,\the,\ifx,\else,\fi}
% \DoNotIndex{\csname,\endcsname,\relax,\begingroup,\endgroup}
% \DoNotIndex{\DeclareTextCommand,\DeclareTextCompositeCommand}
-% \DoNotIndex{\space,\@empty,\special,\@nil,\advance\@nnil,\z@,\@@mod}
+% \DoNotIndex{\space,\@empty,\special,\@nil,\z@,\@@mod}
% \DoNotIndex{\\,\@gobble,\@@,\@fornoop,\@fortmp,\@ifundefined,\@firstoftwo,\@secondoftwo}
% \DoNotIndex{\@tempcnta,\@tempcntb,\@tempboxa,\ifnot@empty,\@this,\@firstofone}
% \DoNotIndex{\{,\},\alph,\bgroup,\dp,\ht,\kern,\egroup}
@@ -134,78 +147,92 @@
% \DoNotIndex{\scantokens,\typeout,\vrule,\wd}
%
% \changes{v1.00}{2008/12/01}{Initial commit to the CVS.}
-% \changes{v1.01}{2008/12/10}{glyphtounicode-cmr.tex included with the package.}
-% \changes{v1.3}{2008/12/01}{Fix copyright in xmp files.}
+% \changes{v1.01}{2008/12/10}{\texttt{glyphtounicode-cmr.tex} included with the package.}
+% \changes{v1.3}{2008/12/01}{Fix copyright in \texttt{.xmp} files.}
% \changes{v1.5.4}{2015/02/28}{Fixed timezone bug; Unicode support; more
% PDF variants; added color profiles.}
-% \changes{v1.5.5}{2015/03/23}{Support for PDF/X-4p and PDF/X-5pg
+% \changes{v1.5.5}{2015/03/23}{Support for PDF/X-4p and PDF/X-5pg
% with external color profiles.}
% \changes{v1.5.6}{2016/02/05}{Suppressed `dummy-space' font warning;
-% removed spurious '?' in XMP packets; improved handling of Color Profiles;
-% ensure Hy@pdfatrue when building PDF/A, for link flags;
-% properly enables xcolor conversion of color models.}
-% \changes{v1.5.7}{2016/02/17}{Removed UTF-8 characters that appear in
+% removed spurious `?' in XMP packets; improved handling of Color Profiles;
+% ensure \texttt{\textbackslash Hy@pdfatrue} when building PDF/A, for link flags;
+% properly enables \texttt{xcolor} conversion of color models.}
+% \changes{v1.5.7}{2016/02/17}{Removed UTF-8 characters that appear in
% the documentation only, within comments in the package source,
% but result in a validation failure. Language support in XMP metadata.
% Added macros for Windows and Mac system color profile directories.}
% \changes{v1.5.8}{2016/05/03}{MediaBox, TrimBox, etc. derived from
-% the paperheight, paperwidth. Improved language support, incl. KOI8-R
+% the \texttt{\textbackslash paperheight}, \texttt{\textbackslash paperwidth}.
+% Improved language support, incl. KOI8-R
% encoded cyrillics, Armenian OT6, and LGR Greek encoding, incl. polytonic Greek.
% All the encodings Latin-1--9 are supported for upper 8-bit characters.
-% Fixed the quoted file-name problem, evident with LuaTeX.
+% Fixed the quoted file-name problem, evident with Lua\TeX.
% Method to generate correct bookmarks with non-active (transliterated) input.
-% Added support for XeLaTeX, improvements with LuaTeX. Updated documentation.}
+% Added support for Xe\LaTeX, improvements with Lua\TeX. Updated documentation.}
% \changes{v1.5.82}{2017/05/12}{%
-% Adjusted to changes in the LaTeX core, affecting macros for composite
+% Adjusted to changes in the \LaTeX\ core, affecting macros for composite
% commands; incl. \texttt{\textbackslash textsuperscript} and others.}%
-% \changes{v1.5.83}{2017/05/16}{Improved support for XeLaTeX and LuaLaTeX.}%
-% \changes{v1.5.84}{2017/05/18}{Fully expand options for hyperref. Better support
+% \changes{v1.5.83}{2017/05/16}{Improved support for Xe\LaTeX\ and Lua\LaTeX.}%
+% \changes{v1.5.84}{2017/05/18}{Fully expand options for \texttt{hyperref}. Better support
% for extended IPA letters and modifiers. Adjusted release versions and dates.}%
-% \changes{v1.5.85}{2017/06/23}{Fixed bugs, and fully implemented L8U as
-% a pseudo-encoding; renamed L8U files into the form *-penc.def }%
-% \changes{v1.6}{2018/11/18}{Added XMP support for PDF/UA-1.
-% Added more Metadata fields and Language support.
-% Default RGB and CMYK profiles now require the colorprofiles.sty package.
-% Added file CallasColorProfiles.tex .
-% Revised glyphtounicode.sty to use variation selectors, altered maps to PUA
-% codepoints; added more glyphs via glyphtounicode-ntx.tex .
+% \changes{v1.5.85}{2017/06/23}{Fixed bugs, and fully implemented L8U as
+% a pseudo-encoding; renamed L8U files into the form \texttt{*-penc.def}.}%
+% \changes{v1.6}{2018/11/18}{Added XMP support for PDF/UA-1.
+% Added more Metadata fields and Language support.
+% Default RGB and CMYK profiles now require the \texttt{colorprofiles.sty} package.
+% Added file \texttt{CallasColorProfiles.tex}.
+% Revised \texttt{glyphtounicode.sty} to use variation selectors, altered maps to PUA
+% codepoints; added more glyphs via \texttt{glyphtounicode-ntx.tex}.
% Support for 8-bit Hebrew encodings, some Arabic and Devanagari.
-% Updated documentation, incl. for LaTeX changes.
+% Updated documentation, incl. for \LaTeX\ changes.
% }%
-% \changes{v1.6.1}{2018/12/22}{Fixed issue with ifthen package;
-% improved Metadata with LuaTeX and XeTeX. Flexibility with page boxes for PDF/X.}%
-% \changes{v1.6.2}{2019/01/04}{Fixed passing of options to xcolor, and some glyphtounicode values.}%
-% \changes{v1.6.3}{2019/02/27}{Fixed encoding issues; support for new pdfomitcharset primitive;
-% reference to veraPDF validation software; additions to glyphtounicode-ntx.tex.}%
+% \changes{v1.6.1}{2018/12/22}{Fixed issue with \texttt{ifthen} package;
+% improved Metadata with Lua\TeX\ and Xe\TeX. Flexibility with page boxes for PDF/X.}%
+% \changes{v1.6.2}{2019/01/04}{Fixed passing of options to \texttt{xcolor}, and some \texttt{glyphtounicode} values.}%
+% \changes{v1.6.3}{2019/02/27}{Fixed encoding issues; support for new \texttt{\textbackslash pdfomitcharset} primitive;
+% reference to \textsf{veraPDF} validation software; additions to \texttt{glyphtounicode-ntx.tex}.}%
+% \changes{v1.6.4}{2019/09/26}{Added check and warning with \texttt{luatex} for whether \texttt{\textbackslash pdfminorversion} can be changed;
+% ensure correct \texttt{\textbackslash catcode} for input characters up to 31, when reading \texttt{.xmpdata} file;
+% disabled patched \texttt{\textbackslash mathaccentV} due to incompatibility with wide base expressions.}
+% \changes{v1.6.5}{2021/07/06}{Support for \texttt{\textbackslash Nickname} as Metadata command;
+% ensure \texttt{\textbackslash par} is unexpandable when processing XMP metadata.}
+% \changes{v1.6.5a}{2023/10/17}{Added option \texttt{pdf20} for future need with PDF 2.0; support for \texttt{\textbackslash pdfmajorversion};
+% support for Memoir's \texttt{\textbackslash stockwidth} and \texttt{\textbackslash stockheight} dimen registers.}
+% \changes{v1.6.5b}{2024/04/05}{Avoid loading \texttt{xmpincl} package from within a \TeX\ grouping.}
+% \changes{v1.6.5c}{2024/05/23}{Avoid loading \texttt{stringenc} package from within a \TeX\ grouping.}
+% \changes{v1.6.5d}{2024/05/29}{Adjust for non-zero \texttt{\textbackslash stockwidth} only; prevent changes to \texttt{xcolor} options after use.}
+% \changes{v1.6.5e}{2024/06/22}{Ensure \texttt{\textbackslash pdfmajorversion} and \texttt{\textbackslash pdfminorversion}
+% are both defined and set correctly. Updated documentation; added new Bibliography entries and revised URL links.}
+% \changes{v1.6.5f}{2024/06/24}{Reset \texttt{\textbackslash ifpdf} properly; support \texttt{\textbackslash creationdate} with Xe\TeX. Revised Glossary layout.}
% \title{Generation of PDF/X- and PDF/A-\penalty-200 compliant PDFs with \pdftex --- \texttt{pdfx.sty}}
-% \date{2019/02/27}
-% \version{1.6.3}
+% \date{2024/07/01}
+% \version{1.6.5f}
% \keywords{PDF, PDF/A, PDF/X, pdf\TeX, \LaTeX, Multilingual Metadata}
% \author{C.\,V.\,Radhakrishnan, \Thanh, Ross Moore {\upshape\small
% and} Peter Selinger}
% \contact{\texttt{[cvr,thanh]@river-valley.org},\\%
-% \texttt{ross.moore@mq.edu.au}, \texttt{selinger@mathstat.dal.ca}\hss}
-%
+% \texttt{ozross@icloud.com}, \texttt{selinger@mathstat.dal.ca}\hss}
+%
% \maketitle
%
% \StopEventually{}
%
% \section[Introduction]{Introduction}
%
-% This package\footnote{An earlier version of this documentation
+% This package\footnote{An earlier version of this documentation
% was published as \cite{pdfx}. All the changes since then have been developed
% and coded by the 3rd-listed author.}
-% currently supports generation of PDF/X-, PDF/A- and PDF/E-compliant
+% currently supports generation of PDF/X-, PDF/A- and PDF/E-compliant
% documents, using \pdftex, in most of their variants;
% see the complete list in Section~\ref{ssec-options} below.
% As of \TeX\,Live 2016 it now also works with Lua\LaTeX\ and Xe\LaTeX,
% when using appropriate command-line options\footnote{%
-% The required invokation is:\quad
+% The required invocation is:\quad
% |xelatex --shell-escape -output-driver="xdvipdfmx -z 0" <filename>.tex |}, but
% with some limitations --- see Sections~\ref{sssec-xetex} and \ref{sssec-luatex}.
-% By `supports', we mean that the package provides correct and sufficient
+% By `supports', we mean that the package provides correct and sufficient
% means to declare that a document conforms with a stated PDF variant
-% (PDF/X, PDF/A, PDF/E, PDF/VT, PDF/UA, etc.) along with the version and/or
+% (PDF/X, PDF/A, PDF/E, PDF/VT, PDF/UA, etc.) along with the version and/or
% level of conformance.
% This package also allows appropriate Metadata and Color Profile
% to be specified, according to the requirements of the PDF variant.
@@ -216,7 +243,7 @@
% information as well as a large range of optional data, a fully validating
% PDF file cannot be achieved. The PDF can be created, having the correct
% visual appearance on all pages, but it will not pass validation checks.
-% Sections~\ref{ssec-metadata} and \ref{ssec-multi} describe
+% Sections~\ref{ssec-metadata} and \ref{ssec-multi} describe
% how this file should be constructed.
%
% \medskip
@@ -224,23 +251,24 @@
% of document structure and type of content that may be required
% (or restricted) within a PDF variant. For example, PDF/VT \cite{PDFVT} requires
% well-structured parts, using Form XObject sections tagged as `/DPart'.
-% Similarly PDF/A-1a (and 2a and 3a) \cite{PDFA,PDFA2,PDFA3} require
-% a fully `Tagged PDF', including a detailed structure tagging which
+% Similarly PDF/A-1a (and 2a and 3a) \cite{PDFA,PDFA2,PDFA3} require
+% a fully `Tagged PDF', including a detailed structure tagging which
% envelops the complete contents of the document, as does also PDF/UA \cite{PDF-UA}.
-% This is beyond the current version of \LaTeX\ engines, as commonly shipped.
+% This is beyond the current version of \LaTeX\ engines as commonly shipped;
+% though see Section~\ref{sec-pdf20} for recent developments.
% So while this package provides enough to meet the declaration,
-% metadata and font-handling aspects for these PDF/A variants,
-% it is not sufficient to produce fully conforming PDFs.
-% However, with extra \pdftex-based software or macro coding that \emph{is} capable
-% of producing `Tagged PDF', this package can be used as part of
-% the overall workflow to produce fully conforming documents.
+% Metadata and font-handling aspects for these PDF/A variants,
+% it is not sufficient to produce fully-conforming PDFs.
+% However, with extra \pdftex-based software or macro coding that \emph{is} capable
+% of producing `Tagged PDF', this package can be used as part of
+% the overall workflow to produce fully-conforming documents; see \cite{tpdf}.
%
%
% \subsection{PDF standards}\label{ssec-standards}
%
% PDF/X and PDF/A are umbrella terms used to denote several ISO
-% standards \cite{PDFX,PDFX3,PDFX1a,PDFX4,PDFX5,PDFA,PDFA2,PDFA3}
-% that define different subsets of the PDF standard \cite{PDF17,ISO32000}.
+% standards \cite{PDFX,PDFX3,PDFX1a,PDFX4,PDFX5,PDFA,PDFA2,PDFA3}
+% that define different subsets of the PDF standard \cite{PDF17,ISO32000}.
% The objective of PDF/X is to facilitate graphics exchange between
% document creator and printer and therefore, has all requirements
% related to printing. For instance, in PDF/X, all fonts need to be
@@ -249,28 +277,28 @@
% specifications of PDF/X.
% Since 2005 other variants of PDF/X have emerged, as extra effects
% (such as layering and transparency) have been supported within the PDF
-% standard itself. The full range of versions and conformance supported
+% standard itself. The full range of versions and conformance supported
% in this package is discussed below in Section~\ref{ssec-options}.
%
% PDF/A defines a profile for archiving PDF documents, which ensures
% the documents can be reproduced in the exact same way in years to
% come. A key element to achieving this is that PDF/A documents
% are 100\% self-contained. All the information needed to display the
-% document in the same manner every time is embedded in the file.
+% document in the same manner every time is embedded in the file.
% A PDF/A document is not permitted to be reliant on information from
% external sources. Other restrictions include avoidance of
-% audio/video content, JavaScript and encryption.
-% Mandatory inclusion of fonts, color profile and standards-based metadata
+% audio/video content, JavaScript and encryption.
+% Mandatory inclusion of fonts, color profile and standards-based metadata
% are absolutely essential for PDF/A.
% Later versions allow for use of image compression and file attachments.
%
-% PDF/E is an ISO standard \cite{PDFE} intended for documents used in engineering workflows.
+% PDF/E is an ISO standard \cite{PDFE} intended for documents used in engineering workflows.
% PDF/VT \cite{PDFVT} allows for high-volume customised form printing, such as utility bills.
% PDF/UA (`Universal Accessibility') has emerged as a standard \cite{PDF-UA,PDFUA1,PDFUABSI}
-% supporting Assistive Technologies, incorporating web-accessibility guidelines (WCAG)
-% for electronic documents.
+% supporting Assistive Technologies, incorporating web-accessibility guidelines (WCAG)
+% for electronic documents.
% In future, PDF/H may emerge for health records and medical-related
-% documents. Other applications can be envisaged.
+% documents. Other applications can be envisaged.
% Declarations and Metadata are supported for the first three of these.
% The others are the subject of further work; revised versions of this
% package can be expected in later years.
@@ -281,6 +309,30 @@
% and whatever else is relevant to how the standards have been established
% and how they can be used.
%
+% \subsection{Later \LaTeX\ changes, support for newer PDF standards}\label{sec-pdf20}
+%
+% Although PDF 2.0~\cite{PDF20} was first published in 2017 and revised in 2020, it has taken
+% a long time for it to become a target format for documents built using \LaTeX.
+% This is because the requirement of using `Tagged PDF' is stringent, requiring
+% a reworking of almost every aspect of \LaTeX's document production model \cite{LaTeXPDF}.
+% Work to this end is going on, via the PDF Association's `\LaTeX\ Project LWG'\cite{PDF-LaTeX},
+% the experimental |tagpdf| package \cite{tagpdf}, and Ross Moore's |tpdf| package and macro suite \cite{tpdf}.
+% Significant internal changes have been made to \LaTeX\ itself, which in turn have
+% required the |v1.6.5x| updates in 2024 to this |pdfx| package. We thank the following users for reporting
+% issues arising from such changes: Sergio Zenoni, Takehiko Tanabe, Tom\'a\v s Nov\'a\v cek.
+%
+% In early 2024 the PDF Association published several documents for new and updated standards
+% based upon PDF 2.0~\cite{PDF20}. These include PDF/UA-2 \cite{PDFUA2}, PDF `Declarations' \cite{PDFDecl},
+% `Well-Tagged PDF' (WTPDF) \cite{WTPDF} with declarations for `Accessibility' and `Reuse',
+% adding to PDF/A-4 \cite{PDFA4}, PDF/X-6 \cite{PDFX6} and PDF/VT-3 \cite{PDFVT3}, each with various flavours.
+% To support these, there will be released in late 2024 a variant named |pdfx2| as an extension of |pdfx|,
+% with separate documentation detailing how to specify appropriate XMP metadata \cite{XMP-ISO}.
+%
+% Once |pdfx2| becomes available, this will take on the role of handling new developments for
+% \LaTeX\ support of PDF 2.0-based software solutions. The |pdfx| package will remain under
+% active development, primarily to ensure compatibility of existing documents with PDF 1.7-based
+% requirements (tagged or otherwise), following any further changes in \LaTeX\ or other packages.
+%
% \section[Usage]{Usage}\label{sec-usage}
%
% The package can be loaded with the command:
@@ -292,7 +344,7 @@
% \subsection{Package options}\label{ssec-options}
%
% \subsubsection{PDF/A options}
-%
+%
% PDF/A is an ISO standard~\cite{PDFA,PDFA2,PDFA3} intended for long-term archiving of
% electronic documents. It therefore emphasizes self-containedness and
% reproducibility, as well as machine-readable metadata. The PDF/A
@@ -307,7 +359,7 @@
% versions contain a subset of the features of later versions, so for
% maximum portability, it is preferable to use a lower-numbered
% version, when the extra features allowed in higher versions are not used.
-% There is no conformance level `u' in version 1 of the standard.
+% There is no conformance level `u' in version 1 of the standard.
% Thus for many typical uses of PDF/A, it is sufficient to use PDF/A-1b.
%
% \begin{itemize}
@@ -320,28 +372,28 @@
% \item |a-3b|: generate PDF/A-3b.
% \item |a-3u|: generate PDF/A-3u.
% \end{itemize}
-% By `Experimental, not fully implemented' here we mean primarily that
+% By `Experimental, not fully implemented' here we mean primarily that
% the document structure, as required for `Tagged PDF', is not handled
-% by this package. Using other \pdftex-based software that \emph{is}
+% by this package. Using other \pdftex-based software that \emph{is}
% capable of producing such complete tagging, conforming documents
% can indeed be produced.
%
% \subsubsection{PDF/E options}
-%
+%
% PDF/E is an ISO standard~\cite{PDFE} intended for documents used in engineering
% workflows. There is only one version of the PDF/E standard so far,
% and it is called PDF/E-1.
-%
+%
% \begin{itemize}
% \item |e-1|: generate PDF/E-1.
% \item |e|: same as |e-1|.
% \end{itemize}
%
% \subsubsection{PDF/UA options}
-%
-% PDF/UA is an ISO and ANSI standard~\cite{PDF-UA,PDFUABSI} intended for making
-% structured documents readable and navigable using Assistive Technology;
-% e.g., screen-readers, Braille keyboards and such-like.
+%
+% PDF/UA is an ISO and ANSI standard~\cite{PDF-UA,PDFUABSI} intended for making
+% structured documents readable and navigable using Assistive Technology;
+% e.g., screen-readers, Braille keyboards and such-like.
% Documents prepared this way can be easily saved in other formats which
% preserve the structure, such as XML, HTML, and (Microsoft) Word-based formats.
%
@@ -359,20 +411,20 @@
% multi-file exchange, and level 2s is for streamed delivery.
% Currently, none of the PDF/VT conformance levels are fully
% implemented by the |pdfx| package.
-%
+%
% \begin{itemize}
% \item |vt-1|: generate PDF/VT-1, based on PDF/X-4. Experimental, not fully implemented
% \item |vt-2|: generate PDF/VT-2, based on PDF/X-5pg. Experimental, not fully implemented.
% \item |vt-2s|: generate PDF/VT-2s. Experimental, not fully implemented.
% \end{itemize}
-% By `Experimental, not fully implemented' here we mean primarily that
+% By `Experimental, not fully implemented' here we mean primarily that
% the structuring of a document into `/DPart' sections, as Form XObjects,
-% is not handled by this package.
-% This \emph{is} possible with current \pdftex\ software,
+% is not handled by this package.
+% This \emph{is} possible with current \pdftex\ software,
% but not yet in a way that lends itself easily to full automation, due to
% requirements of knowing the internal object number of certain internal
-% PDF constructs. All the other aspects: PDFInfo declaration, Metadata
-% and Color Profile, of the PDF/VT variants are correctly handled.
+% PDF constructs. All the other aspects: PDFInfo declaration, Metadata
+% and Color Profile, of the PDF/VT variants are correctly handled.
%
% \subsubsection{PDF/X options}
%
@@ -380,13 +432,13 @@
% emphasizes printing-related requirements, such as embedded fonts and
% color profiles. The PDF/X standard has a large number of variants
% and conformance levels. The basic variants are X-1, X-1a,
-% X-3, X-4, and X-5. (Note that a revised version of the X-2 standard
-% was published in 2003 but withdrawn as an ISO standard in 2011,
-% basically due to lack of interest in using it).
-% The PDF/X-1a standard exists in revisions of 2001 and 2003,
-% the PDF/X-3 standard exists in revisions of 2002 and 2003,
-% and the PDF/X-4 and PDF/X-5 standards exist in revisions of 2008 and 2010.
-% Moreover, some of these standards have a `p' version, which permits the
+% X-3, X-4, and X-5. (Note that a revised version of the X-2 standard
+% was published in 2003 but withdrawn as an ISO standard in 2011,
+% basically due to lack of interest in using it).
+% The PDF/X-1a standard exists in revisions of 2001 and 2003,
+% the PDF/X-3 standard exists in revisions of 2002 and 2003,
+% and the PDF/X-4 and PDF/X-5 standards exist in revisions of 2008 and 2010.
+% Moreover, some of these standards have a `p' version, which permits the
% use of an externally supplied color profile (instead of an embedded one),
% and/or a `g' version, which permits the use of external graphical
% content. Moreover, PDF/X-5 has an `n' version, which extends
@@ -401,14 +453,14 @@
% \item |x-2|: generate PDF/X-2; unpublished, doesn't validate.
% \item |x-3|: generate PDF/X-3. Options |x-302| and |x-303| are
% also available to specify PDF/X-3:2002 or PDF/X-3:2003 explicitly.
-% \item |x-4|: generate PDF/X-4. Options |x-408| and |x-410| are
+% \item |x-4|: generate PDF/X-4. Options |x-408| and |x-410| are
% also available to specify PDF/X-4:2008 or PDF/X-4:2010 explicitly.
% \item |x-4p|: generate PDF/X-4p. Options |x-4p08| and |x-4p10| are
% also available to specify PDF/X-4p:2008 or PDF/X-4p:2010 explicitly.
% \item |x-5g|: generate PDF/X-5g. Options |x-5g08| and |x-5g10| are
% also available to specify PDF/X-5g:2008 or PDF/X-5g:2010 explicitly.
% \item |x-5n|: generate PDF/X-5n. Options |x-5n08| and |x-5n10| are
-% also available to specify PDF/X-5n:2008 or PDF/X-5n:2010 explicitly.
+% also available to specify PDF/X-5n:2008 or PDF/X-5n:2010 explicitly.
% Experimental, not fully implemented.
% \item |x-5pg|: generate PDF/X-5pg. Options |x-5pg08| and |x-5pg10| are
% also available to specify PDF/X-5pg:2008 or PDF/X-5pg:2010 explicitly.
@@ -441,9 +493,11 @@
% applicable standard.\\This may produce a non-standard-conforming PDF file.
% \item |pdf17|: use PDF 1.7, overriding the version specified by the
% applicable standard.\\This may produce a non-standard-conforming PDF file.
+% \item |pdf20|: use PDF 2.0, experimental in preparation for use with future
+% software, under development. This may produce a non-standard-conforming PDF file.
% \item |nocharset|: do not generate the Charset entry for fonts (\pdftex\ only).
% \item |usecharset|: generate the Charset entry for fonts (\pdftex\ only).
-% \end{itemize}
+% \end{itemize}
% The latter two options affect the value of the |\pdfomitcharset| primitive,
% added to \pdftex\ in 2019, due to differing requirements for PDF/A-1
% and other PDF/A versions. Indeed use of the |/Charset| entry for a font
@@ -451,14 +505,14 @@
%
% \subsubsection{XMP language options}\label{ssec-xmplang}
%
-% These options allow for characters in alphabets other than those
-% used for English and Western European languages to be used
-% within the |.xmpdata| file (see Section~\ref{ssec-metadata}),
+% These options allow for characters in alphabets other than those
+% used for English and Western European languages to be used
+% within the |.xmpdata| file (see Section~\ref{ssec-metadata}),
% supported through \LaTeX\ character representation macros.
% \begin{itemize}
-% \item |latxmp|: extended Latin blocks, |Ux0180|--|Ux024F|
-% and |Ux1E00|--|Ux1EFF|
-% \item |armxmp|: armenian letters and ligatures, |Ux0530|--|Ux058F|,
+% \item |latxmp|: extended Latin blocks, |Ux0180|--|Ux024F|
+% and |Ux1E00|--|Ux1EFF|
+% \item |armxmp|: armenian letters and ligatures, |Ux0530|--|Ux058F|,
% via macros |\armyba|, |\armfe|, |\armcomma|, etc.
% \item |cyrxmp|: cyrillic letters and accents, |Ux0400|--|Ux04FF|
% and |Ux0500|--|Ux0527| via macros |\cyra|, |\CYRN|, etc.
@@ -472,8 +526,8 @@
% via macros |\abreve|, |\uhorn|, |\ECIRCUMFLEX|, etc.
% \item |ipaxmp|: phonetic extensions, |Ux0250|--|Ux02AF|
% and |Ux1D00|--|Ux1DFF|
-% \item |mathxmp|: mathematical letters, symbols, operators
-% arrows, alphanumeric forms.
+% \item |mathxmp|: mathematical letters, symbols, operators
+% arrows, alphanumeric forms.
% \item |allxmp|: all of the above, as well as those listed next;
% used primarily for testing compatibility with other packages.
% \end{itemize}
@@ -486,13 +540,13 @@
% Further options allow direct (enclosed) input of upper 8-bit
% characters, from encodings such as Latin-1--Latin-9, KOI8-R,
% LGR (Greek), ArmSSCI8, and a few more.
-% Use of these requires a carefully controlled parsing regime.
+% Use of these requires a carefully controlled parsing regime.
% Here we list the package options that declare such content
% may be present in the |.xmpdata| file.
-% A detailed account of how these are used is given
+% A detailed account of how these are used is given
% in~Section~\ref{ssec-multi} (``Multilingual Metadata'').
% \begin{itemize}
-% \item |LATxmp|: support for direct use of the upper-range characters
+% \item |LATxmp|: support for direct use of the upper-range characters
% (byte codes 160--255) for input encodings Latin1--Latin9, for
% Latin-based alphabets as used in European countries and elsewhere.
% This defines parser macros |\textLAT|, |\textLII|, \dots, |\textLIX|.
@@ -501,7 +555,7 @@
% of upper-range characters (byte codes 148--255) under input
% encodings KOI8-R and KOIR8-RU, using |\textKOI| as parser macro.
% All support from |cyrxmp| is loaded also.
-% \item |LGRxmp|: support for greek letters entered using either
+% \item |LGRxmp|: support for greek letters entered using either
% the LGR input transliteration of ASCII characters, or the ISO-8859-7
% encoding of upper-range characters (byte codes 160--255),
% or a combination of both, using |\textLGR| as parser macro.
@@ -509,25 +563,25 @@
% \item |AR8xmp|: support for armenian letters entered using the
% Arm\TeX~2.0 input transliteration of ASCII characters, or the
% ArmSCII8 encoding of upper-range characters (byte codes 160--255),
-% or a combination of both, using |\textARM| as parser macro.
+% or a combination of both, using |\textARM| as parser macro.
% All support from |armxmp| is loaded also.
-% \item |HEBxmp|: support for hebrew letters entered using either
-% LHE input transliteration of ASCII characters, or the CP1255, CP862
+% \item |HEBxmp|: support for hebrew letters entered using either
+% LHE input transliteration of ASCII characters, or the CP1255, CP862
% or ISO-8859-8 (HE8) encoding of upper-range characters (byte codes 160--255),
% or a combination of these using |\textLHE|, |\textHEBO|, |\textHEB| as parser macros.
% All support from |hebxmp| is loaded also.
% \end{itemize}
-% These `parser' options have received limited testing, so please
+% These `parser' options have received limited testing, so please
% report any mistakes in the UTF-8 output that you may encounter.
%
% \subsection{Data file for metadata}\label{ssec-metadata}
%
-% As mentioned above, standards-compliant PDF documents require
-% document-level metadata to be included.
-% This, known as an `XMP packet'~\cite{XMP-spec,XMP-ISO},
+% As mentioned above, standards-compliant PDF documents require
+% document-level metadata to be included.
+% This, known as an `XMP packet'~\cite{XMP-spec,XMP-ISO},
% is like having a library catalog card included within the PDF itself. It is an unencrypted
% portion of the PDF file, with data expressed in Extensible Markup Language (XML),
-% using Resource Description Format (RDF~\cite{RDF}) syntax, encoded as UTF-8
+% using Resource Description Format (RDF~\cite{RDF}) syntax, encoded as UTF-8
% so readable by any text editing software on any modern computing platform.
%
% Some advantages of doing this are clear.
@@ -539,12 +593,12 @@
% \item For the author(s): who can specify the kind of information most appropriate
% to help readers understand the nature and purpose of the document.
% \end{itemize}
-%
-% The |pdfx| package builds the XMP metadata from information supplied via a special data file
-% called |\jobname.xmpdata|. Here, |\jobname| is usually the basename of the document's main
-% |.tex| file. For example, if your document source is in the file |main.tex|,
-% then the metadata must be in a file called |main.xmpdata|.
-% None of the individual metadata fields are mandatory, but for most documents, it makes sense
+%
+% The |pdfx| package builds the XMP metadata from information supplied via a special data file
+% called |\jobname.xmpdata|. Here, |\jobname| is usually the basename of the document's main
+% |.tex| file. For example, if your document source is in the file |main.tex|,
+% then the metadata must be in a file called |main.xmpdata|.
+% None of the individual metadata fields are mandatory, but for most documents, it makes sense
% to specify at least the title and the author. For more technical aspects of metadata
% and its uses, consult the work of the Dublin Core Initiative~\cite{DC} and PRISM~\cite{PRISM}.
%
@@ -557,72 +611,73 @@
% |\Publisher{Baking International}|
% \end{decl}
% You should note that multiple authors and keywords have been separated
-% by |\sep|. This |\sep| macro serves a technical purpose and is
+% by |\sep|. This |\sep| macro serves a technical purpose and is
% permitted within the |\Author|, |\Keywords|, and |\Publisher| fields,
-% as well as some others. See \S\ref{mdfields} below for a complete listing
+% as well as some others. See \S\ref{mdfields} below for a complete listing
% of the supported author-supplied metadata fields.
%
% After processing, the local directory contains a file named such as
% |pdfa.xmpi| or |pdfe.xmpi| or |pdfx.xmpi| according to the PDF variant desired.
-% This file is the complete XMP Metadata packet.
-% It can be checked for validity, using an online validator, such as at
+% This file is the complete XMP Metadata packet.
+% It can be checked for validity, using an online validator, such as at
% \href{http://www.pdflib.com/knowledge-base/xmp-metadata/free-xmp-validator/}{www.pdflib.com}.
-% \textsf{veraPDF}~\cite{veraPDF} is Open Source software providing validation for PDF/A,
+% \textsf{veraPDF}~\cite{veraPDF} is Open Source software providing validation for PDF/A,
% and other checkers useful in a PDF/A production setting.
-%
+%
% \textbf{Warning}: The |\jobname.xmpdata| file may be included in the
-% main document source, within a |{filecontents*}| environment,
+% main document source, within a |{filecontents}| environment,
% provided this comes \emph{before} the |\documentclass| command, as follows.
+% The |force| option ensures overwriting a previous file to catch recent edits.
% \begin{decl}[]
-% |\begin{filecontents*}{\jobname.xmpdata}|\\
+% |\begin{filecontents}[force]{\jobname.xmpdata}|\\
% | \Title{Baking through the ages}|\\
% | \Author{A. Baker\sep C. Kneader}|\\
% | \Language{en-GB}|\\
% | \Keywords{cookies\sep muffins\sep cakes}|\\
% | \Publisher{Baking International}|\\
-% |\end{filecontents*}|\\
+% |\end{filecontents}|\\
% |\documentclass[11pt,a4paper]{article}|\\
% |...|
% \end{decl}
% Including the metadata with the \LaTeX\ source is very convenient.
-% Having it at the top of the file also brings attention to it, placing emphasis on
-% the desirability of including metadata, and keeping it accurate while the main
-% content of the document is subject to changes or revision.
-% Macro definitions can also occur prior to the |\documentclass| command,
-% including any that may be needed within the metadata.
+% Having it at the top of the file also brings attention to it, placing emphasis on
+% the desirability of including metadata, and keeping it accurate while the main
+% content of the document is subject to changes or revision.
+% Macro definitions can also occur prior to the |\documentclass| command,
+% including any that may be needed within the metadata.
% An example of this is apparent in Figure~\ref{koi8-code} occurring later.
%
-% However, this ordering is also extremely important, else any non-ascii UTF-8 byte
-% sequences can become active characters and expand upon data being written out,
+% However, this ordering is also extremely important, else any non-ascii UTF-8 byte
+% sequences can become active characters and expand upon data being written out,
% rather than remaining as inactive bytes.
% If you edit the metadata supplied this way, remember to remove the
% existing copy of |\jobname.xmpdata| file before the next processing run,
-% as \LaTeX\ does not write a new copy of the file when it exists on disk already,
+% as \LaTeX\ does not write a new copy of the file when it exists on disk already,
% within the current working directory or elsewhere that \LaTeX\ may find.
% In development or testing situations the filename may need to be given as
% |./\jobname.xmpdata|, else an older version may be loaded in error.
-%
+%
% Experienced users/programmers can employ the \verb|\write18| mechanism%
-% \footnote{If you don't already know what this is, they you probably
-% should not try using it |:-)|.}, together with the |--shell-escape| command-line
-% option, to automatically execute a shell command that removes |\jobname.xmpdata|
-% on every (or on selected) processing runs.
+% \footnote{If you don't already know what this is, they you probably
+% should not try using it |:-)|.}, together with the |--shell-escape| command-line
+% option, to automatically execute a shell command that removes |\jobname.xmpdata|
+% on every (or on selected) processing runs.
% This is only useful when the metadata changes, for whatever reason.
%
% \medskip
-% Other places for the |{filecontents*}| environment can work,
+% Other places for the |{filecontents}| environment can work,
% but \emph{only} when it contains \emph{no} non-ascii UTF-8 byte sequences.
-% Since 2018, with default
+% Since 2018, with default
% See Section~\ref{ssec-symbols} below for more information on the macros
% that can be safely used within |.xmpdata| metadata files.
-%
+%
% \subsection{List of supported metadata fields}\label{mdfields}
-%
+%
% Following is a complete list of user-definable metadata fields currently supported,
% separated into particular groupings.
-% Each command is accompanied by the specific XML tagged field name (with namespace)
-% that is placed into the document-level Metadata packet, as well as the kind of information
-% being conveyed.
+% Each command is accompanied by the specific XML tagged field name (with namespace)
+% that is placed into the document-level Metadata packet, as well as the kind of information
+% being conveyed.
% More may be added in the future.
% These commands can \emph{only} be used within the |.xmpdata| file.
%
@@ -630,13 +685,13 @@
% using RFC5646 (BCP 47)~\cite{BCP47} codes, in which the metadata field is given.
% Languages for multiple entries can use e.g., |\sep[de] ...|.
% Only those fields requiring a specific format (e.g. dates) do \emph{not}
-% support language specifiers; these are indicated with \fixmd.
+% support language specifiers; these are indicated with \fixmd.
% Fields allowing more than one value are indicated with \starmd.
% Multiple values may be given as separate instances of the macro, or as a single
-% instance with the values delimited by |\sep|, as in the example above.
-%
+% instance with the values delimited by |\sep|, as in the example above.
+%
% \subsubsection{General information:}
-%
+%
% \begin{itemize}
% \item \starmd|\Author|: \hfill (|dc:creator|)\\
% the document's human author(s). Separate multiple authors with |\sep|.
@@ -661,10 +716,10 @@
% location of a web page describing the owner
% and/or rights statement for this document.
% \item \fixmd|\Copyrighted|: \hfill (|xmpRights:Marked|)\\
-% `True' if the document is copyrighted, and `False' if it isn't.
-% This is automatically set to `True' if either |\Copyright| or |\CopyrightURL| is specified,
-% but this can be overridden.
-% For example, if the copyright statement is `Public Domain',
+% `True' if the document is copyrighted, and `False' if it isn't.
+% This is automatically set to `True' if either |\Copyright| or |\CopyrightURL| is specified,
+% but this can be overridden.
+% For example, if the copyright statement is `Public Domain',
% then specify also |\Copyrighted{False}|.
% \item \starmd|\Owner|: \hfill (|xmpRights:Owner|)\\
% specifies the owner(s) of the document or resource.
@@ -673,18 +728,18 @@
% \end{itemize}
%
% \subsubsection{more Dublin Core metadata:}\label{sssec-dc}
-% From version 1.6 of |pdfx.sty|, the following fields can be used to provide a greater
-% range of information to be specified as metadata.
+% From version 1.6 of |pdfx.sty|, the following fields can be used to provide a greater
+% range of information to be specified as metadata.
% \begin{itemize}
% \item \starmd|\Contributor|: \hfill (|dc:contributor|)\\
% contributor(s) other than author(s) of the PDF document.
% \item |\Coverage|: \hfill (|dc:coverage|)\\
% statement about the extent or scope of the document's contents.
% \item \starmd\fixmd|\Date|: \hfill (|dc:date|)\\
-% date(s) when something significant occurred relating to the resource (e.g., version changes);
+% date(s) when something significant occurred relating to the resource (e.g., version changes);
% must be in ISO date format |YYYY-MM-DD| or |YYYY-MM|.
% \item \fixmd|\PublicationType|: \hfill (|dc:type|)\\
-% The type of publication. If specified, must be one of `book', `catalog', `feed', `journal',
+% The type of publication. If specified, must be one of `book', `catalog', `feed', `journal',
% `magazine', `manual', `newsletter', `pamphlet'. This is automatically set to `journal'
% if |\Journaltitle| is specified (see below), but can be overridden.
% \item \starmd|\Relation|: \hfill (|dc:relation|)\\
@@ -700,10 +755,10 @@
% \end{itemize}
%
% The remaining Dublin Core field |(dc:format)| is always set to `|application/pdf|'.
-%
+%
% \subsubsection{Publication information:}\label{sssec-publ}
-% The following macros allow for inclusion of publication related metadata fields,
-% as specified by PRISM~\cite{PRISM} to meet publishing requirements.
+% The following macros allow for inclusion of publication related metadata fields,
+% as specified by PRISM~\cite{PRISM} to meet publishing requirements.
% \begin{itemize}
% \item |\Journaltitle|: \hfill (|prism:issueName|)\\
% The title of the journal in which the document was published.
@@ -720,7 +775,7 @@
% \item |\CoverDisplayDate|: \hfill (|prism:coverDisplayDate|)\\
% Date on the cover of the journal issue, as a human-readable text string.
% \item \fixmd|\CoverDate|: \hfill (|prism:coverDate|)\\
-% Date on the cover of the journal issue, in a format suitable for storing in a database
+% Date on the cover of the journal issue, in a format suitable for storing in a database
% field with a `date' data type; e.g. |YYYY-MM|, or |YYYY-MM-DD|.
% \end{itemize}
% This is an area which can be expanded, to deal with more kinds
@@ -729,20 +784,20 @@
% Examples of this can be found in the template files |pdfx.xmp|, |pdfa.xmp|, |pdfe.xmp|.
%
% \subsubsection{Backward Compatibility}
-% The following macros are also recognised, for backward compatibility
+% The following macros are also recognised, for backward compatibility
% with earlier versions of the package.
% \begin{itemize}
% \item \starmd|\AuthoritativeDomain|: \hfill (|pdfx:AuthoritativeDomain|)\\
% specifies extra names (e.g., of companies) associated to the existence of the PDF or resource.
% \item |\Creator|: \hfill (|xmp:CreatorTool|)\\
-% synonymous with |\CreatorTool| which is usually handled automatically anyway,
+% synonymous with |\CreatorTool| which is usually handled automatically anyway,
% but can be over-ridden.
% \item |\Org|: synonymous with |\Publisher|.
% \item |\WebStatement|: synonymous with |\CopyrightURL|.
% \end{itemize}
-%
+%
% \subsubsection{more XMP metadata:}\label{sssec-xmp}
-%
+%
% \begin{itemize}
% \item \starmd|\Advisory|: \hfill (|xmp:Advisory|)\\
% noteworthy information; e.g., revision data or changes.
@@ -763,7 +818,7 @@
% with a PDF standard, and level of conformance.
% There are no separate user-macros to alter these.
% The first three dates are usually set to be identical.
-%
+%
% \begin{itemize}
% \item (|xmp:CreateDate|) : creation date\&time of the PDF.
% \item (|xmp:MetadataDate|) : creation date\&time of the Metadata for the PDF.
@@ -776,7 +831,7 @@
% \item (|pdfaid:conformance|) : |a|, |b| or |u| for PDF/A-??
% \item (|pdfuaid:part|) : currently |1| for PDF/UA-1
% \item (|pdfe:ISO_PDFEVersion|) : currently |1| for PDF/E-1
-% \item (|pdf:Version|) : |PDF/X-1|, |PDF/X-2| or |PDF/X-3|
+% \item (|pdf:Version|) : |PDF/X-1|, |PDF/X-2| or |PDF/X-3|
% \item (|pdfx:GTS_PDFXVersion|) : e.g., |PDF/X-1a:2003| up to PDF/X-3 ;
% but no year for PDF/X-4 and PDF/X-5 variants
% \item (|pdfx:GTS_PDFXConformance|) : e.g., |PDF/X-1a:2003| up to PDF/X-2
@@ -788,13 +843,13 @@
% \subsection{Symbols permitted in metadata}\label{ssec-symbols}
%
% Within the metadata, all printable ASCII characters except
-% |\|, |{|, |}| and |%| represent themselves. Also, all printable Unicode characters
-% from the basic multilingual plane (i.e., up to code point U+FFFF)
+% |\|, |{|, |}| and |%| represent themselves. Also, all printable Unicode characters
+% from the basic multilingual plane (i.e., up to code point U+FFFF)
% can be used directly with the UTF-8 encoding.
-% (Please note: encodings other than UTF-8 are not supported in the metadata,
-% except as arguments to `parser-macros'; see Section~\ref{ssec-xmplang}).
-% Consecutive whitespace characters are combined into a single space.
-% Whitespace after a macro such as |\copyright|, |\backslash|, or |\sep| is ignored.
+% (Please note: encodings other than UTF-8 are not supported in the metadata,
+% except as arguments to `parser-macros'; see Section~\ref{ssec-xmplang}).
+% Consecutive whitespace characters are combined into a single space.
+% Whitespace after a macro such as |\copyright|, |\backslash|, or |\sep| is ignored.
% Blank lines are not permitted.
% Moreover, the following markup can be used:
%
@@ -807,32 +862,32 @@
% \item |\copyright|: the copyright symbol \textcopyright
% \end{itemize}
% The macro |\sep| is permitted within |\Author|, |\Keywords|,
-% |\Publisher|, and other macros marked with \starmd\ above.
-% It's purpose is to separate multiple authors, keywords, etc.
-% to appear as separate list items appropriately and consistently
-% in the different ways that such information is represented
-% within the PDF file.
+% |\Publisher|, and other macros marked with \starmd\ above.
+% It's purpose is to separate multiple authors, keywords, etc.
+% to appear as separate list items appropriately and consistently
+% in the different ways that such information is represented
+% within the PDF file.
% The package takes care of this when |\sep| is used.
% For example, in the XMP metadata, it expands as |</rdf:li><rdf:li>| tagging.
%
% \subsubsection{PDF Info strings}\label{sssec-info}
-% When |\sep| is not used within its argument, the metadata from |\Title|,
-% |\Author| and |\Keywords| is also included in the PDF |/Info| dictionary.
+% When |\sep| is not used within its argument, the metadata from |\Title|,
+% |\Author| and |\Keywords| is also included in the PDF |/Info| dictionary.
% When this is the case, validation for the declared standard
% will occur only if the corresponding |/Info| item and XMP metadata field
-% convert to exactly the same Unicode string.
+% convert to exactly the same Unicode string.
% This cannot happen when |\sep| is used, so the |/Info| items are then not populated.
%
% Unfortunately not all PDF browsers (in particular, older ones and much Apple software)
% give ready access to the XMP metadata packet. Some authors want to see everything
-% using e.g., the Unix/Linux command: |pdfinfo -enc UTF-8 |. In fact there is the |-meta|
-% option to get the complete metadata packet (in UTF-8 encoding).
+% using e.g., the Unix/Linux command: |pdfinfo -enc UTF-8 |. In fact there is the |-meta|
+% option to get the complete metadata packet (in UTF-8 encoding).
% This can give more than what one wants, so use it as follows:
% \begin{decl}[]
% pdfinfo -meta <filename>.pdf \textbar\ grep 'dc:'
% \end{decl}
% to extract just the Dublin Core metadata fields.
-%
+%
% Another possibility is to \emph{not} use |\sep| with multiple authors and/or keywords.
% Instead replace it with simply `|, |'. We do not recommend doing this, as more sophisticated
% metadata tools will see the result as a single value, rather than multiple authors, say.
@@ -842,21 +897,21 @@
%
% \subsection{Macros permitted in metadata}\label{ssec-macros}
%
-% Other \TeX\ macros actually can be used, provided the author is very
+% Other \TeX\ macros actually can be used, provided the author is very
% careful and not ask for too-complicated \TeX\ or \LaTeX\ expansions
% into internal commands or non-character primitives; basically just accents,
% macros for Latin-based special characters, and simple textual replacements,
-% perhaps with a simple parameter. A special macro |\pdfxEnableCommands{...}|
+% perhaps with a simple parameter. A special macro |\pdfxEnableCommands{...}|
% is provided to help resolve difficulties that may arise.
%
% Here is an example\footnote{ Other use cases are discussed with regard to
-% Figures~\ref{arm-code} and \ref{math-wflow}.} of the use of |\pdfxEnableCommands|,
-% which occurs with the name of one of our authors {(H\`an Th\'{\^e} Thanh)}
+% Figures~\ref{arm-code} and \ref{math-wflow}.} of the use of |\pdfxEnableCommands|,
+% which occurs with the name of one of our authors {(H\`an Th\'{\^e} Thanh)}
% due to the doubly-accented letter \'{\^e}.
% It is usual to define a macro such as: |\def\thanh{H\`an Th\'{\^e} Thanh}|.
-% In previous versions of the |pdfx| package, use of such a macro
+% In previous versions of the |pdfx| package, use of such a macro
% within the |.xmpdata| file, in the |Copyright| information say,
-% could result in the accent macros expanding into internal primitives, such as
+% could result in the accent macros expanding into internal primitives, such as
% \begin{decl}[]
% | H\unhbox \voidb@x \bgroup \let \unhbox \voidb@x \setbox \@tempboxa ... |
% \end{decl}
@@ -867,7 +922,7 @@
% | \def\`#1{#1^^cc^80}\def\'#1{#1^^cc^81}\def\^#1{#1^^cc^82}}|
% \end{decl}
% \removelastskip\noindent
-% where the |^^cc^80|, |^^cc^81|, |^^cc^82| cause \TeX\ to generate the correct
+% where the |^^cc^80|, |^^cc^81|, |^^cc^82| cause \TeX\ to generate the correct
% UTF-8 bytes for `combining accent' characters.
%
% This works fine for metadata fields that appear just in the XMP packet.
@@ -878,22 +933,22 @@
% | \def\thanh{H^^c3^^a0n Th\eee Thanh}\def\eee{^^c3^^aa^^cc^^81 }}|
% \end{decl}
% \removelastskip\noindent
-% or the above with `\`a' typed directly as UTF-8 instead of |^^c3^^a0|
+% or the above with `\`a' typed directly as UTF-8 instead of |^^c3^^a0|
% and `\^e' in UTF-8 for |^^c3^^aa|.
% The reason for this is due to the |\pdfstringdef| command, which constructs
-% the accented latin letters as single combined characters \`a and \^e,
+% the accented latin letters as single combined characters \`a and \^e,
% without resorting to combining accents, wherever possible.
-% If the Metadata does not have the same, irrespective of Unicode normalisation,
+% If the Metadata does not have the same, irrespective of Unicode normalisation,
% then validation fails.
%
% With version (1.5.6) of the |pdfx| package, such difficulties
-% have been overcome, at least for characters used in Western European,
-% Latin-based languages. The input encoding used when reading the |.xmpdata|
-% file now includes interpretations of \TeX's usual accent commands to
+% have been overcome, at least for characters used in Western European,
+% Latin-based languages. The input encoding used when reading the |.xmpdata|
+% file now includes interpretations of \TeX's usual accent commands to
% produce the required UTF-8 byte sequences.
%
% \medskip
-% Since version (1.5.8) this input encoding was extended to include
+% Since version (1.5.8) this input encoding was extended to include
% macro definitions covering \LaTeX's internal character representation
% of other alphabets (e.g., extended Latin, Cyrillic, Greek, etc.).
% However this can become memory intensive, requiring a large number of
@@ -902,12 +957,12 @@
% be relevant. Currently these are as in Section~\ref{ssec-xmplang}.
%
% A significant portion of the Unicode Basic Plane characters can be covered
-% this way. Modules could even be provided for CJK character sets and
+% this way. Modules could even be provided for CJK character sets and
% mathematical symbols, etc. However, as this can become memory intensive,
% significant testing will be required before these become a standard
-% part of the |pdfx| package.
+% part of the |pdfx| package.
+%
%
-%
% \subsection{Color profiles}\label{sec-profiles}
%
% Most standards compliant PDF documents require a \emph{color
@@ -915,26 +970,26 @@
% determines precisely how the colors used in the document will be
% rendered when printed to a physical medium. This can be used to
% ensure that the document will look exactly the same, even when it is
-% printed on different printers, with different paper types, etc.
-% The inclusion of a color profile is necessary to make the document
+% printed on different printers, with different paper types, etc.
+% The inclusion of a color profile is necessary to make the document
% completely self-contained.
%
% Since most \LaTeX\ users are not graphics professionals and are not
% particularly picky about colors, the |pdfx| package includes default
-% profiles that will be included when nothing else is specified.
+% profiles that will be included when nothing else is specified.
% Therefore, the average user doesn't have to do anything
% special about color.
%
% For users who have a specific color profile they wish to use, it is
% possible to do so by including a |\setRGBcolorprofile| or
% |\setCMYKcolorprofile| command in the |.xmpdata| file. Note that
-% PDF/A and PDF/E require a profile of type `|mnrt|' (monitor) which
-% is usually an RGB color profile, while PDF/X and PDF/VT require type `|prtr|'
+% PDF/A and PDF/E require a profile of type `|mnrt|' (monitor) which
+% is usually an RGB color profile, while PDF/X and PDF/VT require type `|prtr|'
% (printer) which is usually a CMYK color profile; but valid documents
% can be created with the correct type designed for the other color space.
-% Use the following commands to specify an RGB or CMYK color profile,
+% Use the following commands to specify an RGB or CMYK color profile,
% respectively:
-%
+%
% \begin{decl}
% \defmacro{setRGBcolorprofile}\marg{filename}\marg{identifier}\marg{info
% string}\marg{registry URL}
@@ -944,7 +999,7 @@
% \end{decl}
% Within the arguments of these macros, the characters |<|, |>|, |&|,
% |^|, |_|, |#|, |$|, and |~| can be used as themselves, but
-% |%| must be escaped as |\%|.
+% |%| must be escaped as |\%|.
%
% From version (1.6) the default RGB and CMYK color profiles are now supplied
% using the |colorprofiles| package by Norbert Preining and Ross Moore~\cite{colorp}.
@@ -966,7 +1021,7 @@
% \url{http://www.color.org/iccprofile.xalter}.
%
% Alternatively, color profiles are shipped with many Adobe software
-% applications; these are then available for use also with non-Adobe
+% applications; these are then available for use also with non-Adobe
% software. Now the |pdfx| package includes coding to streamline
% inclusion of these profiles in PDF documents, or to specify
% them as `external' profiles, with PDF/X-4p and PDF/X-5pg variants.
@@ -977,17 +1032,17 @@
% Both define commands to use Color Profiles as follows.
% \begin{decl}[]
% \begin{tabular}{ll}
-% \texttt{\string\FOGRAXXXIX} & Coated FOGRA39 (ISO 12647-2:2004)\\
+% \texttt{\string\FOGRAXXXIX} & Coated FOGRA39 (ISO 12647-2:2004)\\
% \texttt{\string\SWOPCGATSI} & U.S. Web Coated (SWOP) v2\\
-% \texttt{\string\JapanColorMMICoated} & Japan Color 2001 Coated\\
-% \texttt{\string\JapanColorMMIUncoated} & Japan Color 2001 Uncoated\\
-% \texttt{\string\JapanColorMMIINewspaper} & Japan Color 2002 Newspaper\\
-% \texttt{\string\JapanWebCoatedAd} & Japan Web Coated (Ad)\\
-% \texttt{\string\CoatedGRACoL} & Coated GRACoL 2006 (ISO 12647-2:2004)\\
+% \texttt{\string\JapanColorMMICoated} & Japan Color 2001 Coated\\
+% \texttt{\string\JapanColorMMIUncoated} & Japan Color 2001 Uncoated\\
+% \texttt{\string\JapanColorMMIINewspaper} & Japan Color 2002 Newspaper\\
+% \texttt{\string\JapanWebCoatedAd} & Japan Web Coated (Ad)\\
+% \texttt{\string\CoatedGRACoL} & Coated GRACoL 2006 (ISO 12647-2:2004)\\
% \texttt{\string\SNAPCGATSII} & CGATS TR 002\\
% \texttt{\string\SWOPCGATSIII} & CGATS TR 003\\
% \texttt{\string\SWOPCGATSV} & CGATS TR 005\\
-% \texttt{\string\ISOWebCoated} & Web Coated FOGRA28 (ISO 12647-2:2004)\\
+% \texttt{\string\ISOWebCoated} & Web Coated FOGRA28 (ISO 12647-2:2004)\\
% \texttt{\string\ISOCoatedECI} & ISO Coated v2 (ECI)\\
% \texttt{\string\CoatedFOGRA} & Coated FOGRA27 (ISO 12647-2:2004)\\
% \texttt{\string\WebCoatedFOGRA} & Web Coated FOGRA28 (ISO 12647-2:2004)\\
@@ -999,18 +1054,18 @@
% As of the time of first compiling this list, only the first six of these result in PDFs
% which can validate with external profiles (i.e., for PDF/X-4p and PDF/X-5pg)
% using the then-current versions of Adobe Acrobat Pro software. It is unclear
-% whether the others (incl.\,\verb|\IFRAXXVI| and \verb|\IFRAXXX|) failed due
-% to incorrect data or problems in the validation software.
+% whether the others (incl.\,\verb|\IFRAXXVI| and \verb|\IFRAXXX|) failed due
+% to incorrect data or problems in the validation software.
% Since then, with updates to Acrobat Pro, almost all the others have been verified
% to work, except \verb|\IFRAXXX| which seems no longer available.
-% Thus these commands come with a `use at own risk' clause.
+% Thus these commands come with a `use at own risk' clause.
%
-% For `external' profiles, there is a command |\setEXTERNALprofile|, taking 9 arguments,
+% For `external' profiles, there is a command |\setEXTERNALprofile|, taking 9 arguments,
% that must be used. Consult |AdobeExternalProfiles.tex| for examples of its use.
-%
-% All but the last of the macros listed above can also be used for valid embedded profiles,
-% providing the corresponding files can be found.
-% The following macros are used to set the (absolute or relative) path,
+%
+% All but the last of the macros listed above can also be used for valid embedded profiles,
+% providing the corresponding files can be found.
+% The following macros are used to set the (absolute or relative) path,
% on the local operating system, to the location of color profile files.
% \begin{decl}
% \defmacro{pdfxSetRGBcolorProfileDir}\marg{path to RGB color profiles}\\
@@ -1020,7 +1075,7 @@
% One can use either a macro |\MacOSColordir| which expands
% into the path for system-provided profiles:
% \begin{decl}[]
-% |/System/Library/ColorSync/Profiles/|
+% |/System/Library/ColorSync/Profiles/|
% \end{decl}
% or the macro |\MacOSLibraryColordir| expanding to:
% \begin{decl}[]
@@ -1030,23 +1085,23 @@
% \begin{decl}[]
% |/Library/Application Support/Adobe/Color/Profiles/Recommended/|
% \end{decl}
-% Under Windows an available macro is |\WindowsColordir| which expands to:
+% Under Windows an available macro is |\WindowsColordir| which expands to:
% \begin{decl}[]
% |C:\Windows\System32\Spool\Drivers\Color/|
% \end{decl}
% being the common location for color profiles.
-% Use these within the \verb|.xmpdata| file as, e.g.,
+% Use these within the \verb|.xmpdata| file as, e.g.,
% \begin{decl}[]
% |\pdfxSetCMYKcolorProfileDir{\AdobeMacOSdir}|
% \end{decl}
% Authors may change the paths to suit their own circumstances, either
-% \emph{before} loading |pdfx.sty| or within the \verb|.xmpdata| file.
+% \emph{before} loading |pdfx.sty| or within the \verb|.xmpdata| file.
%
% PDF/A and PDF/E usually need an RGB profile, while PDF/X and PDF/VT
-% require a CMYK profile. It is possible to use a CMYK profile with PDF/A
+% require a CMYK profile. It is possible to use a CMYK profile with PDF/A
% or PDF/E by specifying |\setRGBcolorprofile{}{}{}{}| in the \verb|.xmpdata| file.
% Beware however, that with PDF/A any coloured hyperlink annotations can
-% cause a validation problem, as these are interpreted as RGB colours
+% cause a validation problem, as these are interpreted as RGB colours
% even when 4 components are given. This may be a bug in validators,
% as PDF specifies that the number of components should match the color space.
%
@@ -1070,44 +1125,44 @@
% \end{decl}
% which uses a profile that accompanies the \texttt{pdfaPilot} software from
% Callas Software Gmbh~\cite{pdfaPilot}.
-% The macro |\CallasMacOSpdfaPilotdir|, defined in the file \texttt{CallasColorProfiles.tex},
+% The macro |\CallasMacOSpdfaPilotdir|, defined in the file \texttt{CallasColorProfiles.tex},
% specifies the directory where this Custom profile is located, when installed under MacOS.
% One needs to |\input CallasColorProfiles.tex| \emph{before} loading the |pdfx| package.
-% Macros for other directories are also defined in this file.
+% Macros for other directories are also defined in this file.
%
% \subsection{Notes on the internal representation of metadata}
-%
+%
% Within the PDF file, metadata is deposited in two places: some data
% goes into the native PDF |/Info| dictionary, and some data goes into
% an XMP packet stored separately within the file. XMP is Adobe's
-% Extensible Metadata Platform~\cite{XMP-spec,XMP-ISO}, and is an XML-based format.
+% Extensible Metadata Platform~\cite{XMP-spec,XMP-ISO}, and is an XML-based format.
% See \href{http://www.adobe.com/devnet/xmp/}{Adobe XMP Development Center}
-% for more exhaustive information about XMP.
+% for more exhaustive information about XMP.
% An XMP Toolkit SDK which supports the GNU/Linux, Macintosh and Windows operating
% systems is also available under modified BSD licence.
%
% Some of the metadata, such as the author, title, and keywords, can be
-% stored \emph{both} in the XMP packet and in the |/Info| dictionary.
-% For the resulting file to be standards-compliant, the two copies of the data
+% stored \emph{both} in the XMP packet and in the |/Info| dictionary.
+% For the resulting file to be standards-compliant, the two copies of the data
% must be identical. This is taken care of automatically by the |pdfx| package,
% except when |\sep| is used to handle multiple entries, as discussed above
-% in \S\ref{sssec-info}. In such cases the string is not included within the |/Info|
+% in \S\ref{sssec-info}. In such cases the string is not included within the |/Info|
% dictionary. Note that this is in accordance with the PDF 2.0 specification~\cite{PDF20},
% which deprecates use of the |/Info| dictionary for such metadata.
-%
-% In principle, users can resort to alternate ways to create an XMP file
-% for inclusion in PDF. In this case, one should create a customised template
+%
+% In principle, users can resort to alternate ways to create an XMP file
+% for inclusion in PDF. In this case, one should create a customised template
% file |pdfa.xmp| or |pdfx.xmp| or |pdfe.xmp| (etc., depending on the PDF flavor)
-% containing the pre-defined data. This can be done by modifying the ones supplied
-% with the |pdfx| package. However, this is an error-prone process and is
-% \emph{not} recommended for most users.
+% containing the pre-defined data. This can be done by modifying the ones supplied
+% with the |pdfx| package. However, this is an error-prone process and is
+% \emph{not} recommended for most users.
% If there is a particular field of metadata that you need and that is not currently
% supported, please contact the package authors.
%
% |pdfx| makes use of the |xmpincl| package to include XMP data into
% the PDF. The documentation of |xmpincl| package may help interested
% users to understand the process of XMP data inclusion.
-%
+%
% \subsection{Tutorials and technical notes}
%
% A tutorial with step-by-step instructions for generating PDF/A files
@@ -1120,7 +1175,7 @@
% \url{http://support.river-valley.com/wiki/index.php?title=Generating_PDF/A_compliant_PDFs_from_pdftex}.
% Be aware that this is based on use of an earlier version of the |pdfx| package,
% so some of the advice may have been superseded.
-%
+%
%
% \section[Installing]{Installing}
% The |pdfx.dtx| package is available on CTAN as usual, via
@@ -1131,24 +1186,24 @@
% For those wishing to do a manual installation, here are some notes.
% The file |pdfx.dtx| is a composite document of program code and
% documentation in \LaTeX{} format, in the tradition of \emph{literate
-% programming}. After having installed the package,
+% programming}. After having installed the package,
% to get the documentation that you are reading now,
-% run (\textsc{pdf})\LaTeX{} on the file |pdfx.dtx|.
+% run (\textsc{pdf})\LaTeX{} on the file |pdfx.dtx|.
% The resulting PDF should be valid as PDF/A-2u.
% Or better, use the included |Makefile|, which will also regenerate the index.
%
% To install the package, first extract the program code; i.e., the
-% file |pdfx.sty|, by running \LaTeX{} or \TeX{} on the file |pdfx.ins|.
+% file |pdfx.sty|, by running \LaTeX{} or \TeX{} on the file |pdfx.ins|.
% Create a directory named |pdfx| under |$TEXMF/tex/latex| and copy the files
-% |pdfx.sty|, |8bit.def|, |glyphtounicode-cmr.tex|, |glyphtounicode-ntx.tex| as well
+% |pdfx.sty|, |8bit.def|, |glyphtounicode-cmr.tex|, |glyphtounicode-ntx.tex| as well
% as the other |*.tex|, |l8u*-penc.def| and |*.xmp| files, into it. Then update
% \TeX's file database using the appropriate command for your distribution
% and operating system (such as |texhash| or |mktexlsr|, or similar).
-%
+%
% \subsection{Limitations and dependencies}
-%
-% The |pdfx.sty| package works with \pdftex\ and also Lua\TeX\ and Xe\TeX\
-% with some minor limitations.
+%
+% The |pdfx.sty| package works with \pdftex\ and also Lua\TeX\ and Xe\TeX\
+% with some minor limitations.
% It further depends on the following other packages.
% \begin{enumerate}
% \item |xmpincl| for insertion of metadata into PDF.
@@ -1159,28 +1214,28 @@
% hyperlinking, bookmarks, etc.
% \item |xcolor| for ensuring consistent use of the color model
% appropriate the PDF variant, within text and hyperlinks (when allowed).
-% \item |glyphtounicode.tex| (not Xe\LaTeX) maps glyph names
+% \item |glyphtounicode.tex| (not Xe\LaTeX) maps glyph names
% to corresponding Unicode code-points.
% \item |ifluatex| allowing coding specific to Lua\LaTeX.
% \item |ifxetex| allowing coding specific to Xe\LaTeX.
-% \item |luatex85| or |pdftexcmds| (Lua\TeX\ only) for access
+% \item |luatex85| or |pdftexcmds| (Lua\TeX\ only) for access
% to primitive commands using \pdftex\ macro names.
-% \item |stringenc| used to help generate proper bookmarks with transliterated input;
+% \item |stringenc| used to help generate proper bookmarks with transliterated input;
% e.g., with |\textLGR| or |\textARM| --- see Section~\ref{sssec-arm}.
% \end{enumerate}
% Other files and packages are loaded as sub-packages or as
-% configuration files for these. Since some of these packages
-% may be loaded by existing documents we provide here advice on
+% configuration files for these. Since some of these packages
+% may be loaded by existing documents we provide here advice on
% how to deal with potential loading and option conflicts.
%
% Firstly, it is best if |pdfx| is the first package loaded; e.g.,
-% directly after the |\documentclass| line. This is not a strict requirement,
+% directly after the |\documentclass| line. This is not a strict requirement,
% but it is worthwhile to deal with the metadata at the top of your \LaTeX\ source,
% allowing correct options to be loaded to cope with validation aspects.
%
% Secondly, replace |\usepackage[<options>]{hyperref}| with |\hypersetup{<options>}|.
-% This deals with most loading issues with the |hyperref| package.
-% Note that PDF/X is a format intended for printing.
+% This deals with most loading issues with the |hyperref| package.
+% Note that PDF/X is a format intended for printing.
% It forbids inclusion of hyperlinks and other actions, including via bookmarks.
% To produce a validating PDF/X document, |pdfx| overrides internal macros
% while keeping colors associated with link anchors.
@@ -1191,53 +1246,53 @@
% Furthermore, options to set metadata components (such as |pdfauthor|,
% |pdftitle|, |pdfsubject|, |pdfkeywords|, etc.) are disabled, since
% |pdfx| has already taken care of this information.
-%
+%
% Thirdly, conflicts with other packages may be dealt with by simply
% changing |\usepackage| to |\RequirePackage| within the document's
-% preamble. But this may not be possible when the |\usepackage|
+% preamble. But this may not be possible when the |\usepackage|
% or |\RequirePackage| command occurs within another package, or with
-% a specific set of options, thereby causing processing to stop.
-% Few packages have a command analogous to |\hypersetup|.
+% a specific set of options, thereby causing processing to stop.
+% Few packages have a command analogous to |\hypersetup|.
% Instead |\PassOptionsToPackage{<options>}{<package>}| can help.
% For |<options>| specify the ones associated with the loading yet to come.
% This can give a smooth processing run, but you'll need to check whether
% the results from those options have actually taken effect.
-% Some examples of this can be seen later, in Figures~\ref{koi8-code}
+% Some examples of this can be seen later, in Figures~\ref{koi8-code}
% and \ref{tldoc-pol}.
%
% \subsubsection{Limitations using Xe\LaTeX}\label{sssec-xetex}
%
-% To process a file using Xe\LaTeX, to produce a document that can
+% To process a file using Xe\LaTeX, to produce a document that can
% validate to a particular PDF standard, one need to use a command
% to run the \TeX\ engine, as follows.
% \begin{decl}[]
% |xelatex -shell-escape -output-driver="xdvipdfmx -z 0" <filename>.tex |
% \end{decl}
% The |-shell-escape| option allows a command-line task to be run,
-% which writes the creation-date \& time of the running job into
-% a small file on disk. This data, written in a specific format, is then
+% which writes the creation-date \& time of the running job into
+% a small file on disk. This data, written in a specific format, is then
% read by the job for inclusion into several metadata fields.
% This emulates the result of \pdftex's |\pdfcreationdate| primitive.
% As there are security implications in allowing arbitrary commands to be run,
-% this need for |-shell-escape| must be viewed as imposing a limitation on the
+% this need for |-shell-escape| must be viewed as imposing a limitation on the
% work-flows in which this can be safely used.
%
-% The |-output-driver="xdvipdfmx -z 0"| suppresses compression, which
+% The |-output-driver="xdvipdfmx -z 0"| suppresses compression, which
% is not allowed for the XMP metadata packet. Without this, the resulting PDF
-% may fail to pass validation tests.
+% may fail to pass validation tests.
%
% Xe\TeX\ is designed for processing UTF-8 input only. When presented
-% with \LaTeX\ source using a legacy encoding, such as |latin2| or |koi8-r|,
-% the input is accepted and a PDF produced. Yet there will be garbage
+% with \LaTeX\ source using a legacy encoding, such as |latin2| or |koi8-r|,
+% the input is accepted and a PDF produced. Yet there will be garbage
% characters corresponding to each character entered from the upper range
-% (128--255). This is evident in the PDF content and bookmarks;
+% (128--255). This is evident in the PDF content and bookmarks;
% yet |pdfx| produces the correct XMP metadata packet.
% So while the techniques explained later in Section~\ref{ssec-multi} are
% valid, the PDF itself does not contain correct content.
%
% Not all fonts, in particular Open-Type fonts (OTF), naturally come with
% mappings of the glyphs to Unicode code points. This is a requirement
-% with PDF/A, PDF/E and PDF/UA standards.
+% with PDF/A, PDF/E and PDF/UA standards.
% Use of such fonts can result in validation errors, such as:
% \begin{itemize}
% \item
@@ -1245,7 +1300,7 @@
% \item
% Type 2 CID font: CIDToGID map is invalid or missing.
% \end{itemize}
-%
+%
% If one has access to Adobe's |Acrobat Pro| software, then its |Preflight|
% utility can rewrite the uncompressed output from Xe\LaTeX\ into a valid
% PDF standard, using compression of the contents but not of the XMP packet.
@@ -1256,7 +1311,7 @@
%
% Lua\LaTeX\ can handle the OTF font issues mentioned for Xe\LaTeX,
% so can produce valid PDF/A documents where Xe\LaTeX\ fails.
-% However, since Lua\TeX\ expects all input source to be UTF8-encoded,
+% However, since Lua\TeX\ expects all input source to be UTF8-encoded,
% it cannot work at all with documents using older legacy encodings.
% Instead one gets error messages such as:
%\begin{decl}
@@ -1299,15 +1354,15 @@
% \item |l8uheb-penc.def| --- input macro declarations for Hebrew alphabet.
% \item |l8ulat-penc.def| --- input macro declarations for Latin 1--9 encodings.
% \item |l8umath-penc.def| --- input macro declarations for mathematical symbols.
-% \item |glyphtounicode-cmr.tex|, |glyphtounicode-ntx.tex| --- maps glyph names
+% \item |glyphtounicode-cmr.tex|, |glyphtounicode-ntx.tex| --- maps glyph names
% to corresponding Unicode for Computer Modern and other \TeX-specific fonts.
% \item |AdobeColorProfiles.tex| --- macros for inclusion of Adobe-supplied color profiles.
% \item |AdobeExternalProfiles.tex| --- macros for use of external color profiles.
% \item |CallasColorProfiles.tex| --- macros for profiles included with Callas pdfaPilot software.
% \end{itemize}
-%
+%
% \subsubsection{Documentation \& Examples}
-%
+%
% \begin{itemize}
% \item |README| --- usual top-level information.
% \item |manifest.txt| --- file list.
@@ -1315,9 +1370,9 @@
% \item |sample.tex|, |sample.xmpdata| --- a sample file with sample metadata.
% \item |small2e-pdfx.tex| --- sample file with included metadata.
% \end{itemize}
-%
+%
% \subsubsection{Sources}
-%
+%
% \begin{itemize}
% \item |src/pdfx.dtx| --- composite package and documentation.
% \item |src/pdfx.ins| --- installer batch file.
@@ -1326,10 +1381,10 @@
% \item |src/Makefile| --- a Makefile for building the documentation.
% \item |src/MANIFEST| --- list of files in this directory.
% \item |src/text89.def| --- used with Figure\,\ref{ex-arm} in the documentation.
-% \item |src/{arm-start,koi8-example,koi8-example2,latin2-example}.tex|
+% \item |src/{arm-start,koi8-example,koi8-example2,latin2-example}.tex|
% --- used in the documentation with figures showing example coding.
% \item |src/{TL-POL-meta,TL-RU-LICRs,TL-RU-metadata,TL-RU-toc,Armenian-example-UTF8,|\\
-% |armtex-meta,usage-meta,math-assign5}.png| --- screenshot images showing multilingual
+% |armtex-meta,usage-meta,math-assign5}.png| --- screenshot images showing multilingual
% and other metadata.
% \end{itemize}
%
@@ -1337,9 +1392,9 @@
%
% The package is released under the \LaTeX{} Project Public
% Licence. Bug reports, suggestions, feature requests, etc., may be
-% sent to the original authors at
+% sent to the original authors at
% \href{mailto:cvr@river-valley.org}{\ttfamily cvr@river-valley.org}
-% and/or
+% and/or
% \href{mailto:thanh@river-valley.org}{\ttfamily thanh@river-valley.org},
% or to the more recent contributors at
% \href{mailto:ross.moore@mq.edu.au}{\ttfamily ross.moore@mq.edu.au}
@@ -1348,9 +1403,9 @@
%
%
% \section[Multilingual and Technical Considerations]{Multilingual and Technical Considerations}\label{sec-meta}
-%
-% \TeX\ and \LaTeX\ have an on-going practice of including metadata within
-% the source files and package documentation. Usually this is done as comments
+%
+% \TeX\ and \LaTeX\ have an on-going practice of including metadata within
+% the source files and package documentation. Usually this is done as comments
% at the beginning of the file; such as the following from the English
% language version of the 2015 \TeX\ Live documentation\footnote{%
% found at |/usr/local/texlive/2016/texmf-dist/doc/texlive/texlive-en/|.}.
@@ -1360,10 +1415,10 @@
% |Michel Goossens, now maintained by Karl Berry and others.|\\
% |Public domain.|
% \end{decl}
-% This provides information, ideally suited for copyright metadata
-% fields, as in Section~\ref{sssec-copy}, as well as for |\Subject|
-% and |\CoverDate| from Section~\ref{sssec-publ}.
-%
+% This provides information, ideally suited for copyright metadata
+% fields, as in Section~\ref{sssec-copy}, as well as for |\Subject|
+% and |\CoverDate| from Section~\ref{sssec-publ}.
+%
% Also near the top of the file one finds front-matter content
% \begin{decl}[]
% |\title{%|\\
@@ -1374,7 +1429,7 @@
% | }|\\
% |\date{May 2015}|
% \end{decl}
-% which supplies metadata information for the commands |\Title|, |\Author|,
+% which supplies metadata information for the commands |\Title|, |\Author|,
% |\CoverDisplayDate| also from Section~\ref{sssec-publ}, and |\CopyrightURL|.
%
% Most of the hundreds of thousands, if not millions of documents prepared
@@ -1384,14 +1439,14 @@
% requirement, for PDFs to satisfy a standard that requires inclusion
% of metadata. This is especially so for government agencies and institutions
% receiving government funding, in several countries around the world.
-%
+%
% It is an aim of the |pdfx| to simplify the process of capturing and
-% including metadata within \LaTeX-produced PDFs, from both the author's
-% view and that of archivists. The extra features introduced with version
-% 1.5.8 take a large step in that direction.
+% including metadata within \LaTeX-produced PDFs, from both the author's
+% view and that of archivists. The extra features introduced with version
+% 1.5.8 take a large step in that direction.
% This includes the ability, described in the next subsection, to reliably
% include data presented in different text encodings, rather than being
-% restricted to UTF-8 only. It is a role of the software to make the
+% restricted to UTF-8 only. It is a role of the software to make the
% conversion, rather than rely on some 3rd party for a translation.
%
%
@@ -1400,40 +1455,40 @@
% A cursory search of the documentation (|.../texmf-dist/doc|) subtree
% of the forthcoming \TeX\,Live 2016 release reveals more than 730 different
% |.tex| or |.dtx| document sources which specify an input encoding,
-% via the |\usepackage[...]{inputenc}| command. Roughly 380 (a bit more
-% than half) declare UTF-8 as the input encoding.
-% Of the remainder there are $\approx 20$ other encodings specified,
-% covering a range of languages for at least part of their content.
+% via the |\usepackage[...]{inputenc}| command. Roughly 380 (a bit more
+% than half) declare UTF-8 as the input encoding.
+% Of the remainder there are $\approx 20$ other encodings specified,
+% covering a range of languages for at least part of their content.
% At some point in time, these documents may be required to have accurate
-% accompanying metadata, as part of conformance to a designated PDF
-% (or other) standard. There are libraries and archives that already must
+% accompanying metadata, as part of conformance to a designated PDF
+% (or other) standard. There are libraries and archives that already must
% meet such standards.
%
-% We have shown above, in Section~\ref{ssec-metadata}, how the |.xmpdata|
-% file can be inserted into the document source, which then ensures that
+% We have shown above, in Section~\ref{ssec-metadata}, how the |.xmpdata|
+% file can be inserted into the document source, which then ensures that
% metadata is reliably transferred along with the source itself.
% This seems a good strategy, but are there any problems with it,
% especially in a multi-lingual context?
-%
-% Modern editing software can require an encoding to be associated
-% with each file. This is what allows the correct characters to be shown,
-% from what is otherwise just a sequence of 8-bit bytes. The flip-side
-% is that arbitrary editing is not permitted. Add some UTF-8 data into
-% a file that is encoded as Latin-2 then try to save it. You may be asked
+%
+% Modern editing software can require an encoding to be associated
+% with each file. This is what allows the correct characters to be shown,
+% from what is otherwise just a sequence of 8-bit bytes. The flip-side
+% is that arbitrary editing is not permitted. Add some UTF-8 data into
+% a file that is encoded as Latin-2 then try to save it. You may be asked
% to specify a new encoding, or the application may even crash out entirely.
-% Maybe this happens \emph{accidentally}. It is not hard for a curly quote
-% (`) or endash (--) to be included; many editors have settings which can
+% Maybe this happens \emph{accidentally}. It is not hard for a curly quote
+% (`) or endash (--) to be included; many editors have settings which can
% do this with normal ascii input. Turn \emph{off} such settings.
%
% The approach that we advocate is that when editing to add metadata,
-% best is to:
+% best is to:
% \begin{enumerate}
-% \item
-% use the \emph{same encoding} as is specified for the file itself,
+% \item
+% use the \emph{same encoding} as is specified for the file itself,
% if known (as is usually the case);
-% \item
-% even if 1. is not possible, use Copy/Paste \emph{within} the document source
-% (e.g., for authors' names, addresses, affiliations, etc.) and from comments,
+% \item
+% even if 1. is not possible, use Copy/Paste \emph{within} the document source
+% (e.g., for authors' names, addresses, affiliations, etc.) and from comments,
% as in Section~\ref{sec-meta} above;
% \item
% avoid typing new characters, especially quotes and dashes, and be extra
@@ -1470,7 +1525,7 @@
% as could be produced for the Russian language version of the \TeX\ Live documentation,
% from coding as shown in Figure\,\ref{koi8-code}.
% The source file itself is actually encoded for KOI8-R, as indicated by the presence
-% of the code line |\usepackage[koi8-r]{inputenc}|,
+% of the code line |\usepackage[koi8-r]{inputenc}|,
% but is deliberately shown here encoded as |T1|~\cite[p.\,449]{LC2}.
% This difference is immaterial for checking the validity of the metadata.
% For example, the stream of upper (accents, etc.) characters within
@@ -1480,17 +1535,17 @@
% in the document, and from early subsection titles.
%
% It is the `parser' command/macro |\textKOI{ ... }| that indicates that the upper range
-% characters (having byte codes 128--255) are to be treated as KOI8-R characters,
+% characters (having byte codes 128--255) are to be treated as KOI8-R characters,
% rather than as part of UTF-8 byte sequences. It works by examining each byte in sequence,
-% and returning the appropriate UTF-8 2-byte sequence for the required cyrillic character.
-% This happens during the processing of data from |\jobname.xmpdata| for fleshing-out
+% and returning the appropriate UTF-8 2-byte sequence for the required cyrillic character.
+% This happens during the processing of data from |\jobname.xmpdata| for fleshing-out
% the XMP metadata packet to be included within the final PDF/A document.
%
% The `parser' macros defined for various encodings, are given in Figure\,\ref{parsers}.
-% In Section\,\ref{ssec-xmplang} the package options are given
+% In Section\,\ref{ssec-xmplang} the package options are given
% for loading the appropriate support for desired languages or alphabets.
% Support for other encodings can be added, if there proves to be a need.
-%
+%
%\begin{figure}[ht]
% \centering
% \begin{tabular}{lll}\hline
@@ -1519,13 +1574,13 @@
% \caption{How to see LICRs in the \texttt{.log} window.}\label{koi8-LICR}
% \end{figure}
%
-% With encoded characters marked in this way with a `parser' macro,
+% With encoded characters marked in this way with a `parser' macro,
% it is actually possible to mix UTF-8 metadata with other bytes;
% provided, of course, you have an editor that allows such a file
% to be created and saved. On the other hand, if you are unhappy with mixing
% content having different encodings, then there is another way, based upon
-% \LaTeX's LICR macros~\cite[\S\,7.11]{LC2} for representing accented
-% and non-latin characters.
+% \LaTeX's LICR macros~\cite[\S\,7.11]{LC2} for representing accented
+% and non-latin characters.
% These are normally hidden away (`I $=$ Internal') but in fact can be seen
% within auxiliary files, such as |.aux| and |.toc|, |.lof| and |.lot|.
% This is how \LaTeX\ stores the knowledge of such characters for use in
@@ -1548,20 +1603,20 @@
% \caption{How to get desired LICRs into the \texttt{.toc} file.}\label{koi8-toc}
% \end{figure}
%
-% Figure~\ref{koi8-LICR} shows how to see this.
+% Figure~\ref{koi8-LICR} shows how to see this.
% The document source in the lower portion clearly shows the cyrillic
% input, whereas the |.log| messages in a command-line window above
% reveal the LICR representation. A command |\showLICRs| is available
% with |pdfx.sty| version 1.5.8, specifically to allow this.
-% Now the LICR representation can be copied directly from the |.log| file,
+% Now the LICR representation can be copied directly from the |.log| file,
% modulo slight difficulties due to the way long lines are broken.
% As this representation is entirely with ASCII characters, it should not
% cause any conflict with any UTF-8 metadata that you want within the same file.
% The |.xmpdata| file might now look as in Figure~\ref{koi8-code2}.
% Although very verbose, this should be resistant to any corruption due to
-% character encodings, and produces the same result within the PDF,
+% character encodings, and produces the same result within the PDF,
% as in Figure~\ref{koi8-meta}.
-%
+%
% Alternatively one can exploit the |.toc| file, using \LaTeX's command
% |\addtocontents|, as shown in Figure~\ref{koi8-toc}.
% After processing the file, you can copy the LICR representations out
@@ -1570,24 +1625,24 @@
%
% Of course once you have harvested the metadata in this format, remove
% or comment-out those extra |\showLICRs| to get uninterrupted processing.
-% Similarly comment-out the extra |\addtocontents| lines, else the real
+% Similarly comment-out the extra |\addtocontents| lines, else the real
% Table-of-Contents will become corrupted with unwanted entries.
% A couple more \LaTeX\ processing runs should restore the PDF to the
% way you want it.
%
% \subsubsection[Metadata with Polish]{Metadata with Polish}\label{sssec-pol}
-%
-% The next example has upper-range bytes intended to represent Latin-2 encoded
-% characters, as used in Polish.
-% With the \LaTeX\ source starting as in Figure~\ref{tldoc-pol},
+%
+% The next example has upper-range bytes intended to represent Latin-2 encoded
+% characters, as used in Polish.
+% With the \LaTeX\ source starting as in Figure~\ref{tldoc-pol},
% the resulting metadata is shown in Figure~\ref{tlmeta-pol}.
-%
+%
%\begin{figure}[htb]
% \centering
% \includegraphics[scale=.45]{TL-POL-meta}
%\caption{Metadata generated from the coding shown in Figure~\ref{tldoc-pol}
-% for the Polish version of \TeX\ Live 2015 documentation, showing Latin-2 encoded
-% characters. The document is valid for PDF/A-2, after having been processed with
+% for the Polish version of \TeX\ Live 2015 documentation, showing Latin-2 encoded
+% characters. The document is valid for PDF/A-2, after having been processed with
% pdf-\LaTeX.}\label{tlmeta-pol}
%\end{figure}
%
@@ -1597,13 +1652,13 @@
% \input{latin2-example}
%\end{decl}
% }%
-%\caption{Start of the \LaTeX\ source for the Polish version of \TeX\ Live
-% documentation. Although Latin-2 encoded, the bytes are shown here using
+%\caption{Start of the \LaTeX\ source for the Polish version of \TeX\ Live
+% documentation. Although Latin-2 encoded, the bytes are shown here using
% \LaTeX's \texttt{T1} encoding \cite[p.\,449]{LC2}.}\label{tldoc-pol}
%\end{figure}
%
% Here the `parser macro' is |\textLII|, which can be seen in Figure~\ref{tldoc-pol}
-% to surround either complete metadata entries, or just those parts containing
+% to surround either complete metadata entries, or just those parts containing
% polish accented (or other) characters in entries that also contain english words.
% The macro |\textLF| provides a line-feed character for the UTF-8 output.
%
@@ -1619,38 +1674,38 @@
% Let's understand better how this example was created. There are three files involved.
%\begin{itemize}
% \item |pdfx.dtx|, the source for this documentation, open in an editor with
-% encoding declared as UTF-8;
+% encoding declared as UTF-8;
% \item |texlive-pl.tex| the Polish documentation for \TeX\ Live, open in the
% same editor with Latin-2 encoding;
% \item |latin2-example.tex| which starts life as an empty file on disk.
%\end{itemize}
% \noindent
-% This latter file must be opened in the editor, with encoding declared as
+% This latter file must be opened in the editor, with encoding declared as
% Latin-2 (ISO-8859-2).
% Next the preamble is copied from |texlive-pl.tex| and pasted into |latin2-example.tex|
% which is then saved to disk. Further editing is done to |latin2-example.tex| to
% add verbatim markers (\texttt{$\vert$...$\vert$}) and adjust line lengths for display
-% within Figure~\ref{tldoc-pol}. This file's contents is included as part of the
-% documentation via |\input{latin2-example}| within an environment that handles
+% within Figure~\ref{tldoc-pol}. This file's contents is included as part of the
+% documentation via |\input{latin2-example}| within an environment that handles
% presentation aspects, and (since 2018) declares |\UseRawInputEncoding|.
%
% What \emph{cannot} be done is to paste the preamble content directly into |pdfx.dtx|.
-% Consider what would then happen, using `t{\l}umaczy' (`translators', on line 10
-% following `UWAGA'). This word shows correctly in the Latin-2 encoded files.
-% It was typeset here using |\l| for the `\l' letter, having Unicode code-point
-% |Ux0142| (so UTF-8 byte pair |"C5|\,|"82|).
-% However, it occurs at slot |"B3| within Latin-2 encoding.
-% In the |T1| font encoding \cite[p.\,449]{LC2} the character glyph name
-% for slot |"B3| is |/scedilla|, which is what shows in Figure~\ref{tldoc-pol}.
-% When the `\l' is pasted directly into a UTF-8 file and shown verbatim,
-% the result is the pair of glyphs |"C5| (|/Aring|) and |"82| (|/Cacute|);
+% Consider what would then happen, using `t{\l}umaczy' (`translators', on line 10
+% following `UWAGA'). This word shows correctly in the Latin-2 encoded files.
+% It was typeset here using |\l| for the `\l' letter, having Unicode code-point
+% |Ux0142| (so UTF-8 byte pair |"C5|\,|"82|).
+% However, it occurs at slot |"B3| within Latin-2 encoding.
+% In the |T1| font encoding \cite[p.\,449]{LC2} the character glyph name
+% for slot |"B3| is |/scedilla|, which is what shows in Figure~\ref{tldoc-pol}.
+% When the `\l' is pasted directly into a UTF-8 file and shown verbatim,
+% the result is the pair of glyphs |"C5| (|/Aring|) and |"82| (|/Cacute|);
% \emph{viz.} {\UseRawInputEncoding |tłumaczy|}.
%
% As with Figure~\ref{koi8-code} it is not important that the correct characters
% are shown here, but that the metadata in |\jobname.xmpdata| corresponds to what
% is used on the titlepage of the PDF; e.g., the contents of |\Title| and |\title|,
% |\Author| and |\author|, etc.
-%
+%
%
% \subsubsection[Metadata with Greek]{Metadata with Greek}\label{sssec-grk}
%
@@ -1674,7 +1729,7 @@
%|% ... |\\
%| |\\
%|\providecommand{\pdfxopts}{a-2u,LGRxmp,LATxmp}|\\
-%|\begin{filecontents*}{\jobname.xmpdata}|\\
+%|\begin{filecontents}[force]{\jobname.xmpdata}|\\
%|\Title{Writing Greek with the "greek" option of the "babel" package}|\\
%{\color{verbcolor}\texttt{\string\Author\{Apostolos Syropoulos\string\sep\ G\"unter Milde\}}}\\
%|\Subject{This document describes the use of the Latin transliteration for Greek that is |\\
@@ -1690,11 +1745,11 @@
%| \textaristerikeraia\textAlpha\textSampi\textQoppa\textZeta\textdexiakeraia}}|\\
%|\CoverDate{1997-10-15}|\\
%|\CoverDisplayDate{October 15, 1997}|\\
-%|\Copyright{This file is part of the Babel system.\textLF This file may be distributed and/or|\\
+%|\Copyright{This file is part of the Babel system.\textLF This file 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.}|\\
%|\CopyrightURL{http://www.latex-project.org/lppl.txt}|\\
-%|\end{filecontents*}|\\
+%|\end{filecontents}|\\
%|%|\\
%|\documentclass[11pt]{article}|\\
%|\usepackage[\pdfxopts]{pdfx}[2016/04/13]|\\
@@ -1725,70 +1780,70 @@
%
% Prior to proper support for UTF-8 input, a method for preparing document source
% for the modern Greek language (and also for polytonic Greek), involved the use
-% of LGR encoded fonts. Such a font has Greek (instead of Latin) letters in the
+% of LGR encoded fonts. Such a font has Greek (instead of Latin) letters in the
% slots for |a-zA-Z|, see~\cite[\S9.4.2]{LC2}. Thus ordinary ASCII letters are used
% to produce the Greek characters; the mapping of ASCII to Greek is referred to as
-% a `transliteration' scheme. It serves as \emph{both} an input encoding, and as
-% a font encoding. Accents and diacritic marks are provided through ligatures
-% built-in to the fonts. Various documents can be found on the web\footnote{e.g.,
+% a `transliteration' scheme. It serves as \emph{both} an input encoding, and as
+% a font encoding. Accents and diacritic marks are provided through ligatures
+% built-in to the fonts. Various documents can be found on the web\footnote{e.g.,
% \url{http://milde.users.sourceforge.net/LGR/}} and
% within \TeX\ Live distributions\footnote{%
-% TeXLive: \textcolor{urlcolor}{\texttt{.../2016/texmf-dist/doc/generic/babel-greek/}}}.
+% TeXLive: \textcolor{urlcolor}{\texttt{.../2016/texmf-dist/doc/generic/babel-greek/}}}.
%
% Indeed the current maintainer G\"unther Milde states
% ``The LGR transliteration does not work for PDF metadata''.
% This is because there is no translation of LGR input into \LaTeX\ LICRs,
% as happens with say |\usepackage[utf8]{inputenc}| for UTF-8 input,
-% or when upper 8-bit characters are present using |\usepackage[iso-8859-7]{inputenc}|.
-% With these, LICRs such as |\textAlpha|, |\textOmicron|, \dots, |\textomega|
+% or when upper 8-bit characters are present using |\usepackage[iso-8859-7]{inputenc}|.
+% With these, LICRs such as |\textAlpha|, |\textOmicron|, \dots, |\textomega|
% are produced, which result in the correct characters for metadata and bookmarks,
% perhaps employing Unicode `combining' characters for accented letters.
% Using |pdfx| the UTF-8 characters can be put directly into the |.xmpdata| file;
% LICRs are interpreted provided the |grkxmp| loading option has been specified.
-%
-% Using the methods of |pdfx| the metadata difficulty is remedied, as can be seen in
-% Figure~\ref{greek-meta} using coding as shown in Figure~\ref{greek-code}. This requires
-% the |LGRxmp| option and |\textLGR| `parser' macro. The original document source,
+%
+% Using the methods of |pdfx| the metadata difficulty is remedied, as can be seen in
+% Figure~\ref{greek-meta} using coding as shown in Figure~\ref{greek-code}. This requires
+% the |LGRxmp| option and |\textLGR| `parser' macro. The original document source,
% called |usage.tex|, can be found in the directory specified in the footnote below.
% As this document is essentially an English description of how to use LGR for Greek,
-% we have used the `Keywords' field to provide examples of such usage.
-% Since a macro |\textgreek| can be used for greek portions within such documents,
+% we have used the `Keywords' field to provide examples of such usage.
+% Since a macro |\textgreek| can be used for greek portions within such documents,
% this macro name is aliased to |\textLGR| within the context where metadata is processed.
-% Furthermore, parsing using |\textLGR| generates correct pre-composed characters
+% Furthermore, parsing using |\textLGR| generates correct pre-composed characters
% for letters with accents or diacritics. Bookmarks can also be generated from
% LGR input, using a technique described in Section~\ref{sssec-arm}.
%
% \bigskip\noindent
% The features available with different loading options are summarised here.
% \begin{itemize}
-% \item
+% \item
% no option: all metadata in |.xmpdata| file is in UTF-8 (incl. ASCII)
% \item
-% |grkxmp|: LICRs can be present; e.g. |\textAlpha|, |\textOmega|, etc.
+% |grkxmp|: LICRs can be present; e.g. |\textAlpha|, |\textOmega|, etc.
% \item
% |LGRxmp|: supports LGR-encoded input and |ISO-8859-7| upper range characters,
-% using the |\textLGR| `parser' macro.
+% using the |\textLGR| `parser' macro.
% \end{itemize}
-% With |LGRxmp| specified, the features of |grkxmp| are also available; so any
+% With |LGRxmp| specified, the features of |grkxmp| are also available; so any
% lower-listed option allows data to be mixed with that for higher-listed ones.
%
%
% The final piece to get validation for PDF/A from LGR input, is to specify
-% a Unicode point for the `|v|' used only in the strong `|sv|' ligature to obtain
-% a non-final `sigma' typeset in isolation.
+% a Unicode point for the `|v|' used only in the strong `|sv|' ligature to obtain
+% a non-final `sigma' typeset in isolation.
%\begin{decl}[]
% |\pdfglyphtounicode{internalchar2}{200D}|
%\end{decl}
% This gives an interpretation as `zero-width joiner'.
% There are two instances of this within |usage.tex|. Copy/Paste works as desired.
-% Using \pdftex\ the above command is done automatically.
-% Drivers, such as Xe\LaTeX\ lacking an implementation of |\pdfglyphtounicode|,
+% Using \pdftex\ the above command is done automatically.
+% Drivers, such as Xe\LaTeX\ lacking an implementation of |\pdfglyphtounicode|,
% can fail to produce a valid PDF due to this rather minor deficiency.
-%
+%
% Greek numerals, using |\greeknumeral| or |\Greeknumeral| cannot work directly within
% a |.xmpdata| file. However if such is desired, the following technique allows
-% correct LICRs to be found for use in the metadata.
-% At any convenient place within the \LaTeX\ source; e.g., near where the required
+% correct LICRs to be found for use in the metadata.
+% At any convenient place within the \LaTeX\ source; e.g., near where the required
% number is used, insert coding such as:
% \begin{decl}[]
% |{\pdfxGreeknumeralsHack \textgreek{\edef\num{\greeknumeral{1997}}\show\num}}%|
@@ -1820,7 +1875,7 @@
%
% \def\ArmTeX{Arm\kern -0.15em\TeX}%
% \subsubsection[Metadata with Armenian]{Metadata with Armenian}\label{sssec-arm}
-%
+%
% \begin{figure}[!htbp]
% \centering
% \includegraphics[scale=.42]{armtex-meta}
@@ -1840,20 +1895,20 @@
% \caption{Enriched \LaTeX\ source for the Armenian version of the \ArmTeX\ manual,
% with added metadata demonstrating the \ArmTeX\ transliteration scheme for \texttt{OT6} encoding.
% Also shown is coding used to produce bookmarks from the transliteration.}\label{arm-code}
-% \end{figure}
-%
+% \end{figure}
+%
% The \ArmTeX\ package\footnote{documentation: %
% TeXLive: \textcolor{urlcolor}{\texttt{.../2016/texmf-dist/doc/generic/armenian/}}}
-% provides the method to typeset Armenian, with input being specified in various ways
-% including a transliteration scheme from ASCII input. This transliteration is directed
+% provides the method to typeset Armenian, with input being specified in various ways
+% including a transliteration scheme from ASCII input. This transliteration is directed
% at the use of the |OT6| encoding, developed for this purpose.
% Each way is supported by |pdfx.sty| with appropriate loading options, similar
-% to the support for Greek~(see Section~\ref{sssec-grk}).
+% to the support for Greek~(see Section~\ref{sssec-grk}).
% \begin{itemize}
-% \item
-% no option: all metadata in |.xmpdata| file is in UTF-8 (incl. ASCII)
% \item
-% |armxmp|: using LICR-like macro names; e.g. |\armAyb|, |\armsha|, |\armfe| etc.
+% no option: all metadata in |.xmpdata| file is in UTF-8 (incl. ASCII)
+% \item
+% |armxmp|: using LICR-like macro names; e.g. |\armAyb|, |\armsha|, |\armfe| etc.
% \item
% |AR8xmp|: using the \ArmTeX\ (|OT6|) transliteration scheme or with upper-range
% characters in |ArmSCII8| encoding, using the `parser' macro |\textARM|.
@@ -1866,9 +1921,9 @@
% implemented in the |OT6|-encoded font, or careful parsing of the input into
% LICR-like macros.
% \LaTeX\ source\footnote{TeXLive: %
-% \textcolor{urlcolor}{\texttt{.../2016/texmf-dist/doc/generic/armenian/examples/latex/}}}
-% for the \ArmTeX\ documentation is available in both English and Armenian.
-% Figure~\ref{arm-meta} shows the result of enriching the Armenian version with relevant
+% \textcolor{urlcolor}{\texttt{.../2016/texmf-dist/doc/generic/armenian/examples/latex/}}}
+% for the \ArmTeX\ documentation is available in both English and Armenian.
+% Figure~\ref{arm-meta} shows the result of enriching the Armenian version with relevant
% metadata, using coding as shown in Figure~\ref{arm-code}.
%
% As in earlier examples, that metadata has come from the extensive comments at the head
@@ -1883,18 +1938,18 @@
% process, as follows.
% \begin{enumerate}
% \item
-% conversion of transliterated source into UTF-8.
+% conversion of transliterated source into UTF-8.
% This is done as the |.xmpdata| file is processed, using |\pdfxEnableCommands|
-% to make global definitions; e.g,
+% to make global definitions; e.g,
%\begin{decl}[]
-% |\xdef\sectAtitle{\textARM{Nerac'uthyun}}|
+% |\xdef\sectAtitle{\textARM{Nerac'uthyun}}|
%\end{decl}
% capturing the section title in the form supplied in the \LaTeX\ source.
-% This can be seen in Figure~\ref{arm-code}, near the end of the |{filecontents*}|
+% This can be seen in Figure~\ref{arm-code}, near the end of the |{filecontents}|
% environment, and at the bottom where the |\section| command would occur.
% \item
% conversion of the UTF-8 representation into |UTF16-be|, suitable for bookmark
-% strings within the PDF file. With \pdftex\ thishis is done using
+% strings within the PDF file. With \pdftex\ this is done using
% |\StringEncodingConvert| from Heiko Oberdiek's |stringenc.sty| package.
% Lua\LaTeX\ and Xe\LaTeX\ can use the UTF-8 representation directly.
% \item
@@ -1909,8 +1964,8 @@
% \end{decl}
% Now |\pdfxBookmark| first checks that the macro passed as the 2nd argument
% actually exists. If it does not, an error message is given and upon continuation
-% would just do |\section{Nerac'uthyun}| as normal.
-% When it does exist, then step 2 is done (by \pdftex) storing the result as |\pdfx@temp|.
+% would just do |\section{Nerac'uthyun}| as normal.
+% When it does exist, then step 2 is done (by \pdftex) storing the result as |\pdfx@temp|.
% With Lua\TeX\ and Xe\TeX, |\pdfx@temp| stores a copy of the UTF-8 data.
% Then the commands needing to be executed are essentially
%\begin{decl}[]
@@ -1921,9 +1976,9 @@
% so that the correct section heading is displayed on the page,
% but when |\sectAtitle| is processed to create a bookmark it is replaced
% by the pre-prepared contents of |\pdfx@temp|.
-% There are some technicalities\footnote{In fact a small change is made
-% to how \textcolor{verbcolor}{\texttt{\string\@@writetorep}} is used.}
-% to make this work cleanly,
+% There are some technicalities\footnote{In fact a small change is made
+% to how \textcolor{verbcolor}{\texttt{\string\@@writetorep}} is used.}
+% to make this work cleanly,
% as just doing these commands would interfere with other uses of |\pdfstringdef|.
% In case a long sectioning command has an optional argument, or a $*$-variant
% is needed, then include it this way.
@@ -1933,32 +1988,32 @@
%
%
% \subsubsection[Other Languages]{Other Languages}\label{sssec-other}
-%
+%
% There is support for Metadata using characters from other languages,
-% with corresponding loading options, as follows.
+% with corresponding loading options, as follows.
% \begin{itemize}
-% \item |arbxmp| : Arabic;
+% \item |arbxmp| : Arabic;
% via LICRs |\textarabicalef|, |\textarabicqaf|,\\ |\textarabicaleflowerhamza|, etc.
-% \item |devxmp| : Devanagari;
+% \item |devxmp| : Devanagari;
% via LICRs |\textdevanagaria|, |\textdevanagarivocalicr|,\\ |\textdevanagaricandrabindu|, etc.
% \item |hebxmp| : Hebrew;
% via LICRs |\hebalef|, |\hebsamekh|, |\hebfinalpe| and accent marks |\segol|, |\qubuts|, etc.
-% \item |vnmxmp| : Vietnamese;
+% \item |vnmxmp| : Vietnamese;
% via LICRs |\ABREVE|, |\OCIRCUMFLEX|, |\uhorn| etc. and the combinations of multiple accents
% applied as usual via |\'|, |\`|, |\^|, etc.
% \end{itemize}
% The LICRs include support mapping accented letters to precomposed glyphs, falling back on
% `combining characters' only in unusual situations. Special input conventions or methods,
-% such as transliteration schemes, are \emph{not yet} supported.
-% Indeed, these options are largely untested, so any difficulties encountered should
+% such as transliteration schemes, are \emph{not yet} supported.
+% Indeed, these options are largely untested, so any difficulties encountered should
% be reported to the package authors. Requests to support extra input methods or other
% language blocks should also be directed to the authors, along with pointers to where
-% the desired input methods are fully described.
+% the desired input methods are fully described.
% Sample `real-world' documents would be greatly appreciated.
%
%
% \subsection[L8U pseudo-encoding]{L8U pseudo-encoding}\label{ssec-L8U}
-%
+%
% To understand how |pdfx| handles the translation into UTF-8 of input that is not already
% in that format, we'll briefly discuss \LaTeX's font-encoding mechanism, which is the
% basis for LICR macros~\cite[\S\,7.11]{LC2}. As an example, consider the macro |\textgamma|
@@ -1973,32 +2028,32 @@
% |ucs/data/uni-3.def:\uc@dclc{947}{default}{\textgamma}%|
% \end{decl}
% Here the |\uc@dclc| commands associate UTF-8 input of |Ux0263| (IPA small letter gamma)
-% and |Ux03B3| (Greek small letter gamma) internally with |\textgamma|,
+% and |Ux03B3| (Greek small letter gamma) internally with |\textgamma|,
% whereas the others deal with output formats\footnote{Whereas {\color{verbcolor}\texttt{ucs.sty}}
-% handles UTF-8 input, mapping it to LICRs, with {\color{verbcolor}\texttt{pdfx.sty}}
+% handles UTF-8 input, mapping it to LICRs, with {\color{verbcolor}\texttt{pdfx.sty}}
% we need the reverse mapping into UTF-8, not just from LICRs but also from legacy
-% 8-bit encodings and transliteration schemes.}.
-% In four of these examples there is a number, which refers to a position in an `encoding vector'
+% 8-bit encodings and transliteration schemes.}.
+% In four of these examples there is a number, which refers to a position in an `encoding vector'
% for the particular font used to place the character onto the printable page.
% For example |LGR| refers to greek fonts, encoded as explained in Section~\ref{sssec-grk}.
% IPA phonetics use the |T3| encoding, so |\textgamma| refers to a character
% from a different Unicode block.
%
% With two of these cases there is no specific font.
-% For example, |PU| is used to create bookmark strings,
-% and other PDF string inclusions, using |\pdfstringdef| from the |hyperref| package.
-% With |greek-euenc.def| designed for Xe\TeX\ and Lua\TeX, the encoding can be variable,
-% with the output bytes being those for the UTF-8 encoding of $\gamma$, namely |^^ce^^b3|,
-% shown here as the |T1|-encoded pair |γ|.
-% The term `pseudo-encoding' has been coined by the \LaTeX\ team.
-% Although there is no actual font to determine the encoding, to an author there is essentially
-% no difference in how corresponding macros can be used to get a character placed into
-% an appropriate structure within the PDF.
+% For example, |PU| is used to create bookmark strings,
+% and other PDF string inclusions, using |\pdfstringdef| from the |hyperref| package.
+% With |greek-euenc.def| designed for Xe\TeX\ and Lua\TeX, the encoding can be variable,
+% with the output bytes being those for the UTF-8 encoding of $\gamma$, namely |^^ce^^b3|,
+% shown here as the |T1|-encoded pair |γ|.
+% The term `pseudo-encoding' has been coined by the \LaTeX\ team.
+% Although there is no actual font to determine the encoding, to an author there is essentially
+% no difference in how corresponding macros can be used to get a character placed into
+% an appropriate structure within the PDF.
%
% Thus there are 4 output forms for this character,
% and we've not even considered how $\gamma$ is used in mathematics!
% To handle these concurrently, one has internally-defined control-sequence names
-% \begin{decl}[]
+% \begin{decl}[]
% |\LGR\textgamma=\char"67| \qquad where $6\times 16 + 7 = 103$\\
% |\T3\textgamma=\char"47| \qquad where $4\times 16 + 7 = 71$\\
% |\PU\textgamma=\long macro:->\83\263|\\
@@ -2006,12 +2061,12 @@
% \end{decl}
% where the 2nd `\textbackslash' is part of the name\footnote{%
% obtained using {\color{verbcolor}%
-% \texttt{\string\csname\space LGR\string\string\string\textgamma\string\endcsname}}.}.
+% \texttt{\string\csname\space LGR\string\string\string\textgamma\string\endcsname}}.}.
% The latter macro is explained below.
% To use the specific version of the macro, \LaTeX\ maintains a `font-encoding'
% parameter, set using |\fontencoding{...}| local to the surrounding environment grouping.
%
-% To the above declarations of |\textgamma|, to deal with conversion to UTF-8,
+% To the above declarations of |\textgamma|, to deal with conversion to UTF-8,
% the |pdfx| package adds the following declarations when the |LGRxmp| option is used.
% \begin{decl}[]
% |pdfx/l8ugrk.def:\DeclareTextCommand{\textgamma}{L8U}{γ}|\\
@@ -2019,11 +2074,11 @@
% |pdfx/l8ugrk.def:\DeclareTextCompositeCommand{\textLGRenc}{L8U}{g}{γ} |\\
% |pdfx/l8ugrk.def:\DeclareTextCompositeCommand{\textLGRenc}{L8U}{^^e3}{γ}|
% \end{decl}
-% The pseudo-encoding name |L8U| indicates \textbf{L}ocal conversion into UTF-\textbf{8} \textbf{U}nicode,
-% as required for metadata, using |pdfx.sty|. Currently this pseudo-encoding is used in one place only;
+% The pseudo-encoding name |L8U| indicates \textbf{L}ocal conversion into UTF-\textbf{8} \textbf{U}nicode,
+% as required for metadata, using |pdfx.sty|. Currently this pseudo-encoding is used in one place only;
% during the interpretation of information supplied through the |\jobname.xmpdata| file.
% This happens as part of the |pdfx| package, \emph{before} it uses |xmpincl.sty|.
-% Such specificity justifies being called a `Local' encoding.
+% Such specificity justifies being called a `Local' encoding.
% However, other tasks may emerge requiring on-the-fly conversion to UTF-8.
% In this case all the functionality of this pseudo-encoding could be shifted into a separate package,
% and the name changed to reflect this more general usage.
@@ -2031,7 +2086,7 @@
% is possibly a sufficient reason to have a separate package. Another possibility is to
% generate on-the-fly creation of UTF-8 strings, to be sent to Xe\TeX\ or Lua\TeX\ running
% as a slave process to generate images of string using OTF fonts, which \pdftex\ currently
-% cannot handle. The result would then be imported back into the running job as an image.
+% cannot handle. The result would then be imported back into the running job as an image.
% The authors invite suggestions of how this |L8U| pseudo-encoding functionality can be put to
% good use.
%
@@ -2041,7 +2096,7 @@
% |\DeclareTextComposite{\`}{T1}{A}{192}|
%\end{decl}
% to get the pre-composed `\`A', rather than a composite built from \`{} and `A'.
-% The last parameter is an index into a font; however the |\DeclareTextCompositeCommand|
+% The last parameter is an index into a font; however the |\DeclareTextCompositeCommand|
% variant allows arbitrary coding as that final parameter, so can be the bytes for the
% UTF-8 representation of a character.
% In the above code lines, macros are defined as follows
@@ -2067,18 +2122,18 @@
% | ... \textLGRenc{#1}\textgreekLGR@i #2\@empty | \quad if |#2| has more tokens\\
% |\textgreekLGR@i #1->\textgreekLGR@ii #1|
%\end{decl}
-% Thus |\textLGRenc| is called on each token in the argument of |\textLGR|.
+% Thus |\textLGRenc| is called on each token in the argument of |\textLGR|.
% Now |\textLGRenc|, which is applicable only when |L8U| pseudo-encoding is in effect,
% has a default expansion of just passing the character through unchanged; \emph{viz.}
%\begin{decl}[]
% |\DeclareTextCommand{\textLGRenc}{L8U}[1]{#1}|
%\end{decl}
% but by using |\DeclareTextCompositeCommand{\textLGRenc}{L8U}{...}{...}|,
-% alternate expansions apply with specific arguments, as shown above.
+% alternate expansions apply with specific arguments, as shown above.
% In particular, that final argument can include coding that `looks ahead' to find the next
% character. This is used, for example, with diacritics in Greek, multi-letter sequences
% for Armenian letters, and other special cases related to ligatures and punctuation symbols.
-% To illustrate this Figure~\ref{ex-arm} (below) follows the conversion of a specific word,
+% To illustrate this Figure~\ref{ex-arm} (below) follows the conversion of a specific word,
% given in the transliteration for Armenian~(see Section~\ref{sssec-arm}).
% This conversion occurs using only \TeX's macro-expansion ability.
% Some details relevant to this example are explained there.
@@ -2117,26 +2172,26 @@
%\end{decl}
% The macro |\armen@en| (named for \textbf{e}mpty or \textbf{n}ext),
% looks ahead to see if the 5th-next argument token is |\@empty|,
-% signifying that there is nothing left of the original input.
-% (A closed bracing |{...}| counts as a single argument.) If |\@empty| the tokens in
+% signifying that there is nothing left of the original input.
+% (A closed bracing |{...}| counts as a single argument.) If |\@empty| the tokens in
% the 2nd bracing are substituted, otherwise those in the 3rd bracing.
-% Similarly |\armen@nc| (named for \textbf{n}ext \textbf{c}haracter)
+% Similarly |\armen@nc| (named for \textbf{n}ext \textbf{c}haracter)
% looks to see whether that 5th argument token matches with the character in the
% 1st bracing. If so, the 2nd bracing's tokens are substituted, else those of the 3rd bracing.
-% This is how to cope with `Sh' or `SH', implemented as ligatures in an |OT6| encoded font,
-% denoting a different letter from a single `S'. The macro |\armuh| is used here
+% This is how to cope with `Sh' or `SH', implemented as ligatures in an |OT6| encoded font,
+% denoting a different letter from a single `S'. The macro |\armuh| is used here
% to \emph{prevent} a ligature from |ev| that would otherwise occur.
-% One writes |e\armuh v| to get the separate letters. As the space becomes an active token,
-% we need |\textarmgobblespace| to restart parsing appropriately.
-% Of course |\textarmenARM@i| behaves like |\textgreekLGR@i|
-% as explained earlier, with a test for |\@empty| as the 2nd token.
+% One writes |e\armuh v| to get the separate letters. As the space becomes an active token,
+% we need |\textarmgobblespace| to restart parsing appropriately.
+% Of course |\textarmenARM@i| behaves like |\textgreekLGR@i|
+% as explained earlier, with a test for |\@empty| as the 2nd token.
% At the end, any remaining |\@empty| expand into nothing.
%
% \caption{Partial tracing of the conversion of an Armenian word, indicated by the red oval
% in Figure~\ref{arm-meta}, from {\color{verbcolor}\texttt{OT6}} transliterated form into UTF-8 bytes.
-% In each line, \TeX\ expansion occurs at the position of the left-most `\textbackslash'.
-% The resulting bytes are shown here in {\color{verbcolor}\texttt{T1}} encoding,
-% as in previous examples, with {\color{verbcolor}\texttt{?}} indicating an invisible character
+% In each line, \TeX\ expansion occurs at the position of the left-most `\textbackslash'.
+% The resulting bytes are shown here in {\color{verbcolor}\texttt{T1}} encoding,
+% as in previous examples, with {\color{verbcolor}\texttt{?}} indicating an invisible character
% in the byte range {\color{verbcolor}\texttt{Ox80}--\texttt{Ox9f}}.
% See Figure\,\ref{src-arm} for how this source appears with UTF-8 encoding.
% }\label{ex-arm}
@@ -2147,8 +2202,8 @@
% to an LICR called |\textarmuh|. Since |\armuh| is already defined, not as an LICR,
% it cannot be declared to be one without creating problems.
% Instead, within the environment grouping where |L8U| pseudo-encoding is specified,
-% one uses |\let\armuh\textarmuh| within a `rebinding' macro command
-% |\LIIXUmaparmenianletters|\footnote{The start of the macro name is derived from pseudo-Roman
+% one uses |\let\armuh\textarmuh| within a `rebinding' macro command
+% |\LIIXUmaparmenianletters|\footnote{The start of the macro name is derived from pseudo-Roman
% numerals: IX = 9, IIX = 8}
% to get LICR functionality from user-commands.
%\begin{decl}[]
@@ -2161,7 +2216,7 @@
% | \def\armbf{}%|\\
% | ... }|
%\end{decl}
-% As well as rebinding each command for a letter, the font style-switching commands
+% As well as rebinding each command for a letter, the font style-switching commands
% are aliased to do nothing, as these are not relevant to creating UTF-8 output.
% Being localised by the |L8U| grouping, this causes no problem elsewhere within the document.
% These are similar to macros |\psdaliasnames| and |\psdmapshortnames| from |hyperref.sty|,
@@ -2169,7 +2224,7 @@
%
% \begin{figure}[htb]
% \includegraphics[scale=.625]{Armenian-example-UTF8.png}
-% \caption{Image of part of the source coding for Figure~\ref{ex-arm},
+% \caption{Image of part of the source coding for Figure~\ref{ex-arm},
% viewed as UTF-8 encoded, within editing software.}\label{src-arm}
% \end{figure}
%
@@ -2186,10 +2241,10 @@
% \item |\LIIXUmaplatinchars| and |\LIIXUcancelfontswitches| with |LATxmp|
% \item |\LIIXUmapmathletterlikes| always defined
% \item |\LIIXUmapmathspaces| always defined
-% \item |\LIIXUmapmath...| with |mathxmp| --- see Section~\ref{ssec-math} below.
+% \item |\LIIXUmapmath...| with |mathxmp| --- see Section~\ref{ssec-math} below.
%\end{itemize}
% It may well be that more macro names can be added to some of these commands,
-% to allow macro usage within the metadata.
+% to allow macro usage within the metadata.
% Suggestions for such additions should be sent to the |pdfx| package authors, along
% with example documents. Similarly support for more languages can be requested.
%
@@ -2199,9 +2254,9 @@
% Macro commands for many mathematical symbols can be used directly in metadata without extra
% support; e.g., basic arithmetic operations, letter-like symbols, spacing commands.
% Super- and subscripted letters and numerals can use |\textsuperscript| and |\textsubscript|
-% when there is an appropriate Unicode character (digits, comma, $+$/$-$/$=$, parentheses,
+% when there is an appropriate Unicode character (digits, comma, $+$/$-$/$=$, parentheses,
% many letters but not all).
-%
+%
% When the |mathxmp| loading option is specified, many more symbols become available,
% using `rebinding' macros. These are necessary, as the macros for mathematical symbols
% are generally \emph{not} defined as LICRs, but use |\mathchar|. Thus new LICRs are needed,
@@ -2243,8 +2298,8 @@
% where |\liixu@mathreorder| uses some \TeX\ pattern-matching to allow the |\textmathrmstring|
% parser macro to work on the argument to |\mathrm| before allowing |\textmathnormal| parsing
% to continue afterwards. We refer to this as `nested parsing'.
-%
-% Similarly `nested parsing' can be used with superscripts and subscripts using |^{...}| and |_{...}|
+%
+% Similarly `nested parsing' can be used with superscripts and subscripts using |^{...}| and |_{...}|
% and to specify linebreaks, and even super-/subscripts within styles; viz.
%\begin{decl}[]
% |\Declar...CompositeCommand{\textmathnormal}{L8U}{^}{\liixu@mathreorder\textsuperstring}|\\
@@ -2259,7 +2314,7 @@
% is required to uncover cases which may require special handling.
% An ultimate aim is to be able to just copy the \LaTeX\ source for the `Abstract' of a technical
% paper into the |\Subject{...}| field of the |.xmpdata| file, with a large expectation that
-% it will `just work', or need only trivial edits to make it so.
+% it will `just work', or need only trivial edits to make it so.
%
%
% \subsection[Metadata in a Production Workflow]{Metadata in a Production Workflow}\label{ssec-wflow}
@@ -2273,8 +2328,8 @@
% \noindent
% At Macquarie University, the Mathematics Department produces personalised topmatter
% or coversheets for student assignments and tutorial papers using \LaTeX, incorporating
-% information that has been stored in a database. This is done by writing extra definitions
-% at the top of a copy of the \LaTeX\ source as prepared by the lecturers.
+% information that has been stored in a database. This is done by writing extra definitions
+% at the top of a copy of the \LaTeX\ source as prepared by the lecturers.
% For example information analogous to the following
%\begin{decl}[]
% |\def\thestudentname{\utext{Moore} Ross}|\\
@@ -2286,7 +2341,7 @@
% |\def\theduedate{09/05 2016}|\\
% |...|
%\end{decl}
-% is prepended to the file shown in Figure~\ref{math-wflow},
+% is prepended to the file shown in Figure~\ref{math-wflow},
% for each student downloading their personalised assignment paper.
% The \LaTeX\ source makes use of this information, including recording some of it
% within the Metadata.
@@ -2301,7 +2356,7 @@
% |\def\assigntopics{orbits, stabilisers, groups of matrices}|\\
% |\providecommand{\pdfxopts}{a-1b}|\\
% |%% XMP metadata for PDF/A conformance|\\
-% |\begin{filecontents*}{\jobname.xmpdata}|\\
+% |\begin{filecontents}[force]{\jobname.xmpdata}|\\
% |\Title{\theunitcode\ \theoffering: Assignment \theassignmentnumber}|\\
% |\Author{\assignLecturer}|\\
% |\Copyright{Macquarie University, Mathematics Department}|\\
@@ -2310,7 +2365,7 @@
% |\Keywords{\assigntopics}|\\
% |\Creator{pdfTeX + pdfx.sty with \pdfxopts\space option}|\\
% |\pdfxEnableCommands{\def\utext#1{#1,}}|\\
-% |\end{filecontents*}|\\
+% |\end{filecontents}|\\
% ||\\
% |\documentclass[a4paper,11pt]{article}|\\
% |\RequirePackage{assignments}|\\
@@ -2332,7 +2387,7 @@
% Another way that jobs can be customised using essentially the same \LaTeX\ source,
% is via the command used to initiate the job. For example the file |sample.tex|,
% accompanying the |pdfx| distribution, can be used to test the loading options to create
-% PDFs conforming to the various flavours of PDF/A, PDF/E and PDF/X.
+% PDFs conforming to the various flavours of PDF/A, PDF/E and PDF/X.
% Consider a shell script containing the following (Unix/Linux) commands.
%\begin{decl}[]
% |pdflatex "\def\pdfxopt{a-2b}\input sample.tex"|\\
@@ -2348,11 +2403,11 @@
% from the same \LaTeX\ source, named according to each particular variant.
% A default |\providecommand{\pdfxopt}{a-1b}| at the start of |sample.tex| catches the case
% of normal typesetting, doing nothing when |\pdfxopt| already has an expansion value.
-%
+%
% \goodbreak
% \subsection[Further Developments]{Further Developments}\label{ssec-further}
%
-% Prospects for further development of the |pdfx| package are as follows,
+% Prospects for further development of the |pdfx| package are as follows,
% listed not necessarily in order of perceived importance.
% \begin{itemize}
% \item
@@ -2363,7 +2418,7 @@
% Conformance to multiple PDF standards; e.g. both PDF/A and PDF/E,
% both PDF/A and PDF/X with RGB or CMYK color profile, other combinations.
% \item
-% Explore delaying the processing of metadata until |\begin{document}|,
+% Explore delaying the processing of metadata until |\begin{document}|,
% thereby allowing some fields to be set automatically from other information
% supplied within the document preamble.
% \item
@@ -2384,7 +2439,6 @@
% Support emerging standards based on PDF 2.0~\cite{PDF20}.
% \end{itemize}
%
-%
% \section[Bibliography]{Bibliography}%
% {\let\newpage\relax
% \begin{thebibliography}{999}
@@ -2396,28 +2450,35 @@
%
% \bibitem{XMP-spec}Adobe Systems Inc.;
% XMP Specification, Adding Intelligence to Media. September 2005.
-% Also available as ISO 16684-1:2012\,\cite{XMP-ISO}.\\
+% Also available as ISO 16684-1:2012\,\cite{XMP-ISO}. %\\
% \url{http://www.adobe.com/devnet/xmp/}.
%
% \bibitem{PDFUA1} ANSI\,/\,AIIM\,/\,ISO\,14289-1:2012;
% Document management applications --- Electronic document file format enhancement for accessibility
% --- Part 1: Use of ISO\,32000-1\,(PDF/UA-1);
-% Technical Committee ISO/TC\,171/SC\,2 (July 2012).
-% \url{http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=54564}.\\
-% Revised as ISO\,14289-1:2014 (December 2014):
-% \url{http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=64599}.\\
-% Available from ANSI at \url{https://webstore.ansi.org/Standards/ISO/ISO142892014}.
+% Technical Committee ISO/TC\,171/SC\,2 (July 2012 -- withdrawn). %\\
+% Revised as ISO\,14289-1:2014 (Dec. 2014):
+% \url{https://www.iso.org/standard/64599.html}.\\
+% Available from ANSI at \url{https://webstore.ansi.org/standards/iso/iso142892014}.
%
-% \bibitem{PDFUABSI} BS,/\,ISO\,14289-1:2014; Document Management Applications.
-% Electronic Document File Format Enhancement For Accessibility. Use Of ISO 32000-1 (PDF/UA-1) (British Standard)
-% \url{https://webstore.ansi.org/Standards/BSI/BSISO142892014}.
+% \bibitem{PDFUA2} ISO\,14289-2:2024;
+% Document management applications --- Electronic document file format enhancement for accessibility
+% --- Part 2: Use of ISO\,32000-2\,(PDF/UA-2);\\
+% Technical Committee ISO/TC\,171/SC\,2 WG9 (March 2024).
+% \href{https://pdfa.org/iso-14289-2-pdfua-2/}%
+% {\UrlFont https://pdfa.org/iso-\penalty-20 14289-2-pdfua-2/}
+%
+% \bibitem{PDFUABSI} BS,/\,ISO\,14289-1:2014; Document Management Applications.
+% Electronic Document File Format Enhancement For Accessibility.
+% Use Of ISO 32000-1 (PDF/UA-1) (British Standard)
+% \url{https://webstore.ansi.org/standards/bsi/bsiso142892014}.
%
-% \bibitem{pdfaPilot} Callas Software Gmbh.;
+% \bibitem{pdfaPilot} Callas Software Gmbh.;
% \texttt{pdfaPilot}, plug-in or desktop software for PDF/A versions.
% \url{https://www.callassoftware.com/en/products/pdfapilot}.
%
% \bibitem{DC}
-% Dublin Core Metadata Element Set, Version 1.1, October 2010\\
+% Dublin Core Metadata Element Set, Version 1.1, October 2010\\
% \url{http://dublincore.org/documents/dces/}.
%
% \bibitem{BCP47}IETF; Best Current Practice \#47: Tags for Identifying Languages.
@@ -2425,115 +2486,157 @@
% \url{https://tools.ietf.org/pdf/bcp47.pdf}.
%
% \bibitem{PDFX}ISO\,15930-1:2001;
-% Graphic technology --- Prepress digital data exchange --- Use of PDF --- Part 1:
+% Graphic technology --- Prepress digital data exchange --- Use of PDF --- Part 1:
% Complete exchange using CMYK data (PDF/X-1 and PDF/X-1a).
% Technical Committee ISO/TC\,130 (December 2001).
-% \url{http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=29061}.
+% \url{https://www.iso.org/standard/29061.html}.
%
% \bibitem{PDFX3}ISO\,15930-3:2002;
-% Graphic technology --- Prepress digital data exchange --- Use of PDF --- Part 3:
+% Graphic technology --- Prepress digital data exchange --- Use of PDF --- Part 3:
% Complete exchange suitable for colour-managed workflows (PDF/X-3).
% Technical Committee ISO/TC\,130 (September 2002).
-% \url{http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=34941}.
+% \url{https://www.iso.org/standard/34941.html}.
%
% \bibitem{PDFX1a}ISO\,15930-4:2003;
-% Graphic technology --- Prepress digital data exchange --- Use of PDF --- Part 4:
+% Graphic technology --- Prepress digital data exchange --- Use of PDF --- Part 4:
% Complete exchange of CMYK and spot colour printing data using PDF 1.4 (PDF/X-1a).
% Technical Committee ISO/TC\,130 (December 2003).
-% \url{http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=39938}.
+% \url{https://www.iso.org/standard/39938.html}.
%
% \bibitem{PDFX3a}ISO\,15930-6:2003;
-% Graphic technology --- Prepress digital data exchange --- Use of PDF --- Part 6:
+% Graphic technology --- Prepress digital data exchange --- Use of PDF --- Part 6:
% Complete exchange of printing data suitable for colour-managed workflows using PDF 1.4 (PDF/X-3).
% Technical Committee ISO/TC\,130 (December 2003).
-% \url{http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=39940}.
+% \url{https://www.iso.org/standard/39940.html}.
%
% \bibitem{PDFX4}ISO\,15930-7:2010;
-% Graphic technology --- Prepress digital data exchange --- Use of PDF --- Part 7:
+% Graphic technology --- Prepress digital data exchange --- Use of PDF --- Part 7:
% Complete exchange of printing data (PDF/X-4) and partial exchange of printing data with external profile reference (PDF/X-4p) using PDF 1.6.
% Technical Committee ISO/TC\,130 (July 2010).
-% \url{http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=55843}.
+% \url{https://www.iso.org/standard/55843.html}.
%
% \bibitem{PDFX5}ISO\,15930-8:2010;
-% Graphic technology --- Prepress digital data exchange --- Use of PDF --- Part 8:
-% Partial exchange of printing data using PDF 1.6 (PDF/X-5). \hfil
-% Technical Committee ISO/TC\,130 (July 2010). \hfil
-% \url{http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=55844}.
+% Graphic technology --- Prepress digital data exchange --- Use of PDF --- Part 8:
+% Partial exchange of printing data using PDF 1.6 (PDF/X-5).
+% Technical Committee ISO/TC\,130 (July 2010).
+% \url{https://www.iso.org/standard/55844.html}.
% Revision via Corrigendum: ISO\,15930-8:2010/Cor\,1:2011 (August 2011);
-% \url{http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=60210}.
+% \url{https://www.iso.org/standard/60210.html}.
+%
+% \bibitem{PDFX6}ISO\,15930-9:2020;
+% Graphic technology --- Prepress digital data exchange --- Use of PDF --- Part 9:
+% Complete exchange of printing data (PDF/X-6) and partial exchange of printing data
+% with external profile reference (PDF/X-6p and PDF/X-6n) using PDF 2.0
+% Technical Committee ISO/TC\,130 (November 2020).
+% \url{https://www.iso.org/standard/77103.html}.
+%
%
% \bibitem{PDFVT}ISO\,16612-2:2010;
-% Graphic technology\,---\,Variable data exchange\,---\,Part 2:\hfil
-% Using PDF/X-4 \penalty-5000 and PDF/X-5 (PDF/VT-1 and PDF/VT-2).
-% Technical Committee ISO/TC\,130 (December 2005). \hfil
-% \href{http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=38013}%
-% {{\small\tt http://www.iso.org/iso/home/store/catalogue\_tc/catalogue\_detail.htm?\penalty-200csnumber=38013}}.
+% Graphic technology\,---\,Variable data exchange---Part\,2:
+% Using PDF/X-4\penalty-5000\ and PDF/X-5 (PDF/VT-1 and PDF/VT-2).
+% Technical Committee ISO/TC\,130 (December 2005).
+% \url{https://www.iso.org/standard/38013.html}.%
+%
+%
+% \bibitem{PDFVT3}ISO\,16612-3:2020;
+% Graphic technology\,---\,Variable data exchange---Part\,3:
+% Using PDF/X-6\penalty-5000\ (PDF/VT-3).
+% Technical Committee ISO/TC\,130 (Edition1, 2020).
+% \url{https://www.iso.org/standard/75218.html}.%
%
% \bibitem{XMP-ISO}ISO\,16684-1:2012;
-% Graphic technology --- Extensible metadata platform (XMP) specification --- Part 1:
+% Graphic technology --- Extensible metadata platform (XMP) specification --- Part 1:
% Data model, serialization and core properties.
-% Technical Committee ISO/TC\,130 (February 2012).
-% \url{http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=57421}.
+% Technical Committee ISO/TC\,130 (February 2012 -- withdrawn).
+% Revised as ISO\,16684-1:2019; (Edition 2, 2019).
+% \url{https://www.iso.org/standard/75163.html}.
%
-% \bibitem{PDFA}ISO\,19005-1:2005;
+% \bibitem{PDFA}ISO\,19005-1:2005;
% Document Management --- Electronic document file format for long term preservation
% --- Part 1: Use of PDF\,1.4\,(PDF/A-1);
% Technical Committee ISO/TC\,171/SC\,2 (Sept. 2005).
-% Revisions via Corrigenda: ISO\,19005-1:2005/Cor\,1:2007 (March 2007);
-% ISO\,19005-1:2005/Cor\,2:2011 (Dec. 2011). \\
-% \url{http://www.iso.org/iso/catalogue_detail?csnumber=38920}.
+% Revisions via Corrigenda: ISO\,19005-1:2005/Cor\,1:2007 (March 2007);
+% ISO\,19005-1:2005/Cor\,2:2011 (Dec. 2011).
+% \url{https://www.iso.org/standard/38920.html}.
%
% \bibitem{PDFA2}ISO\,19005-2:2011;
% Document Management --- Electronic document file format for long term preservation
% --- Part 2: Use of ISO\,32000-1\,(PDF/A-2); \hfill
-% Technical Committee ISO/\penalty-200 TC\,171/SC\,2 (June 2011).\\
-% \url{http://www.iso.org/iso/catalogue_detail?csnumber=50655}.
+% Technical Committee ISO/\penalty-200 TC\,171/SC\,2 (June 2011).
+% \url{https://www.iso.org/standard/50655.html}.
%
% \bibitem{PDFA3}ISO\,19005-3:2012;
% Document Management --- Electronic document file format for long term preservation
% --- Part 3: Use of ISO\,32000-1 with support for embedded files (PDF/A-3);
-% Technical Committee ISO/TC\,171/SC\,2 (October 2012).\\
-% \url{http://www.iso.org/iso/catalogue_detail?csnumber=57229}.
+% Technical Committee ISO/TC\,171/SC\,2 (October 2012).
+% \url{https://www.iso.org/standard/57229.html}.
+%
+% \bibitem{PDFA4}ISO\,19005-4:2020;
+% Document Management --- Electronic document file format for long term preservation
+% --- Part 4: Use of ISO\,32000-2 (PDF/A-4);
+% Technical Committee ISO/TC\,171/SC\,2 (Edition 1, 2020).
+% \url{https://www.iso.org/standard/71832.html}.
+%
+% \bibitem{PDFDecl} PDF Declarations. A use of ISO\,32000.
+% PDF Association, Berlin, Germany (2019).
+% \url{https://pdfa.org/resource/pdf-declarations/}
%
% \bibitem{PDFE}ISO\,24517-1:2008;
-% Document Management --- Engineering document format using PDF --- Part 1:
+% Document Management --- Engineering document format using PDF --- Part 1:
% Use of PDF 1.6 (PDF/E-1);
% Technical Committee ISO/TC\,171/SC\,2 (May 2008).\\
-% \url{http://www.iso.org/iso/catalogue_detail?csnumber=42274}.
+% \url{https://www.iso.org/standard/42274.html}.
%
% \bibitem{ISO32000}ISO\,32000-1:2008;
% Document management\,---\,Portable document format\,(PDF\,1.7);
-% Technical Committee ISO/TC\,171/SC\,2 (July 2008).
+% Technical Committee ISO/TC\,171/SC\,2 (July 2008).
% Also available as \cite{PDF17}.\\
-% \url{http://www.iso.org/iso/catalogue_detail?csnumber=51502}.
+% \url{https://www.iso.org/standard/51502.html}.
%
% \bibitem{PDF20}ISO\,32000-2:2017;
% Document management --- Portable document format --- Part~2: PDF\,2.0;
-% Technical Committee ISO/TC\,171/SC\,2 Document file formats, EDMS systems
-% and authenticity of information. (July 2017)\\
-% \url{https://www.iso.org/standard/63534.html}.
+% Technical Committee ISO/TC\,171/SC\,2 Document file formats, EDMS systems
+% and authenticity of information. (July 2017 --- withdrawn)
+% Revised as ISO\,32000-2:2020; (Edition 2, 2020)
+% \url{https://www.iso.org/standard/75839.html}.\\
+% Sponsored access available since 5 April 2023, from
+% \href{https://www.pdfa-inc.org/product/iso-32000-2-pdf-2-0-bundle-sponsored-access/}{PDF Association}.
%
% \bibitem{LC2} F.\,Mittelbach, M.\,Goossens with J.\,Braams, D.\,Carlisle, C.\,Rowley;
% The \LaTeX\ Companion --- 2nd edition. Addison--Wesley (now Pearson Education Inc.), 2004.
% ISBN 0-201-36299-6 (paperback).
%
-% \bibitem{TN0009}PDF/A Competence Centre;
-% TechNote 0009: XMP Extension Schemas in PDF/A-1. (March 2008)
+% \bibitem{PDF-LaTeX} \LaTeX\ Project Working Group, PDF Association.
+% \url{https://pdfa.org/community/latex-project-lwg/}
+%
+% \bibitem{LaTeXPDF} \LaTeX\ Tagged PDF\,---\,A blueprint for a large project.
+% Frank Mittelbach, Chris Rowley; TUGboat, Volume 41 (2020), No 3.
+% \url{https://tug.org/TUGboat/tb41-3/tb129mitt-tagpdf.pdf}.
+% Project website \url{https://www.latex-project.org/};
+% \href{https://www.latex-project.org/publications/2020-FMi-TUB-tb129mitt-tagpdf.pdf}{Preprint}.
+%
+% \bibitem{TN0009}PDF/A Competence Centre;\,
+% TechNote\,0009: XMP Extension Schemas in PDF/A-1.\penalty-2000\ (March 2008) \ \
% \href{https://www.pdfa.org/publication/technical-note-tn-0009-xmp-extension-schemas-in-pdfa-1/}%
-% {\small\tt https://www.pdfa.org/publication/technical-note-tn-0009-xmp-extension\penalty-200 -schemas-in-pdfa-1/}.
+% {\UrlFont https://www.pdfa.org/publication/technical-note-tn-0009-xmp-\penalty-20 extension-schemas-in-pdfa-1/}.
%
% \bibitem{PDF-UA}
-% PDF/UA Technical Implementation Guide: Understanding ISO\,14289-1 (PDF/UA-1). \penalty-200
-% AIIM Global Community of Information Professionals. \hfil
+% PDF/UA Technical Implementation Guide: Understanding ISO\,14289-1\penalty-2000\ (PDF/UA-1).
+% AIIM Global Community of Information Professionals.
% \href{http://www.aiim.org/Research-and-Publications/standards/committees/PDFUA/Technical-Implementation-Guide}%
-% {\small\tt http://www.aiim.org/Re\penalty-200 search-and-Publications/standards/committees/PDFUA/Technical-Implementation\penalty-200 -Guide}.
+% {\UrlFont http://\penalty-20 www.aiim.org/Research-and-Publications/standards/committees/PDFUA/Technical\penalty-200 -Implementation-Guide}.
+%
+% \bibitem{WTPDF} Well-Tagged PDF (WTPDF);
+% Using Tagged PDF for Accessibility and Reuse in PDF 2.0.
+% PDF Association; PDF Reuse TWG \& PDF/UA TWG. Version 1.0.0, February 2024.
+% \url{https://pdfa.org/wtpdf/}
%
-% \bibitem{colorp} N.\,Preining;
+% \bibitem{colorp} N.\,Preining;
% \texttt{colorprofiles} \textemdash\ Collection of free ICC profiles.
-% \TeX\ and \LaTeX\ package (by R.\,Moore), distributed with \TeX{}Live. (November 2018)\\
+% \TeX\ and \LaTeX\ package (by R.\,Moore), distributed with \TeX{}Live. (Nov. 2018)
% \url{https://ctan.org/pkg/colorprofiles}.
%
-% \bibitem{PRISM}PRISM; Publishing Requirements for Industry Standard Metadata.
+% \bibitem{PRISM}PRISM; Publishing Requirements for Industry Standard Metadata.
% PRISM Metadata Initiative; Idealliance Working Group.
% \url{http://www.idealliance.org/specifications/prism-metadata-initiative/prism}
%
@@ -2541,16 +2644,24 @@
% Generation of PDF/X- and PDF/A-compliant PDFs with \pdftex --- \texttt{pdfx.sty}.
% TUGboat Vol.\,36, No.\,2; TUG 2015 Conference Proceedings. \TeX\ Users Group, 2015; pp.\,136--142.
%
-% \bibitem{veraPDF} veraPDF. Industry Supported PDF/A Validation.
-% Software, dual-licensed under the GNU General Public License v3 or later (GPLv3+)
+% \bibitem{tagpdf} |tagpdf| -- Tools for experimenting with tagging using pdf\LaTeX\ and Lua\LaTeX.
+% Ulrike Fischer. Available via CTAN repository.
+% \url{https://ctan.org/pkg/tagpdf}.
+%
+% \bibitem{tpdf} |tpdf|; Ross Moore. Unpublished.
+% \LaTeX\ package and macro suite for producing `real-world' standards-conforming PDF documents.
+% Examples available at \url{http://maths.mq.edu.au/~ross/TaggedPDF/}.
+%
+% \bibitem{veraPDF} veraPDF. Industry Supported PDF/A Validation.
+% Software, dual-licensed under the GNU General Public License v3 or later (GPLv3+)
% and Mozilla Public License v2 or later (MPLv2+). \url{https://verapdf.org}.
% Wiki: \url{https://github.com/veraPDF/veraPDF-validation-profiles/wiki}
%
-% \bibitem{RDF} World Wide Web Consortium (W3C);
+% \bibitem{RDF} World Wide Web Consortium (W3C);
% Resource Description Format: RDF 1.1 XML Syntax. W3C Recommendation. (February 2014)
% \url{https://www.w3.org/TR/rdf-syntax-grammar/}.
-%
-% \bibitem{wikiPDF}Wikipedia;
+%
+% \bibitem{wikiPDF}Wikipedia;
% PDF/A: \url{https://en.wikipedia.org/wiki/PDF/A}\newline
% PDF/E: \url{https://en.wikipedia.org/wiki/PDF/E}\newline
% PDF/VT: \url{https://en.wikipedia.org/wiki/PDF/VT}\newline
@@ -2560,7 +2671,7 @@
% \end{thebibliography}
% }\goodbreak
% \section[Implementation]{Implementation}
-%
+%
% \iffalse
%<*package>
% \fi \hfuzz=2.5pt%
@@ -2575,7 +2686,7 @@
}{}%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{pdfx}
- [2019/02/27 v1.6.3 PDF/X and PDF/A support (CVR/HTH/RRM/PS)]
+ [2024/06/24 v1.6.5f PDF/X and PDF/A support (CVR/HTH/RRM/PS)]
\newif\ifpdfx@noBOM \pdfx@noBOMfalse % use a BOM in the XMP packet
\newif\ifpdfx@x \pdfx@xfalse % PDF/X mode
@@ -2594,13 +2705,28 @@
\def\xmp@ReleaseDate{2005} % 2001 for PDF/X-1, 2005 for PDF/A-1,
% 2010 for PDF/A-2, 2012 for PDF/A-3.
+%% with Beamer pgf will have written Resource objects already
+\newif\ifpdfx@luacheck@needed
+\@ifpackageloaded{pgfcore}{\pdfx@luacheck@neededtrue}{}
+%% thanks to Ryutaroh Matsumoto for reporting this issue
+
\newcount\pdfx@minorversion
+\newcount\pdfx@majorversion
+\expandafter\ifx\csname pdfmajorversion\endcsname\relax
+%% RRM: 20240614 LuaLaTeX may not have this defined
+ \newcount\pdfmajorversion
+ \pdfmajorversion=1\relax
+\fi
\expandafter\ifx\csname pdfminorversion\endcsname\relax
-\else
- \global\pdfx@minorversion=\the\pdfminorversion
+%% RRM: 20240614 this could be set in luatex85 package
+ \newcount\pdfminorversion
+ \pdfminorversion=3\relax
\fi
+%% options can change these from the defaults
+\global\pdfx@majorversion=\the\pdfmajorversion
+\global\pdfx@minorversion=\the\pdfminorversion
-\def\pdfx@ErrorWarning#1#2#3#4{%
+\def\pdfx@ErrorWarning #1#2#3#4{%
\ifpdfx@noerr \PackageWarning{pdfx}{#1.^^J #2#3.^^J}%
\else \PackageError{pdfx}{#1}{#2#4.^^J
Use option 'noerr' to avoid this message.^^J}%
@@ -2781,6 +2907,9 @@
\DeclareOption{pdf15}{\global\pdfx@minorversion=5 }% 2005 Acrobat 6
\DeclareOption{pdf16}{\global\pdfx@minorversion=6 }% 2006 Acrobat 7 (ISBN 0-321-30474-8)
\DeclareOption{pdf17}{\global\pdfx@minorversion=7 }% 2008 ISO 32000-1:2008
+\DeclareOption{pdf20}{% 2020 ISO 32000-2:2020
+ \global\pdfx@majorversion=2 \relax
+ \global\pdfx@minorversion=0 }%
%% inhibits writing the XMP byte-order marker
\DeclareOption{noBOM}{\pdfx@noBOMtrue}
@@ -2845,6 +2974,13 @@
\ExecuteOptions{noBOM,a-1b}
\ProcessOptions
+\RequirePackage{ifluatex}
+\ifpdfx@luacheck@needed
+ \ifluatex
+ \RequirePackage{luatex85}
+ \fi
+\fi
+
\ifpdfx@ua\ifpdfx@x\else
\expandafter\if\xmp@Conformance A\else
\pdfx@ErrorWarning{PDF/UA requires 'Tagged PDF' for any structure.^^J
@@ -2857,19 +2993,23 @@
\expandafter\ifx\csname pdflastobj\endcsname\relax
\else
- \ifnum\pdflastobj >\z@ % pdftex has already written objects
+ \ifnum\pdflastobj >\z@ % pdf/luatex has already written objects
+ % e.g. by pgfcore , called from Beamer or other class
\ifnum\pdfx@minorversion=\pdfminorversion\else
\PackageError{pdfx}%
{^^J(pdfx) Cannot change the \string\pdfminorversion^^J%
- (pdfx) PDF version remains at 1.\the\pdfminorversion.^^J%
- (pdfx) Use \string\pdfminorversion=\the\pdfx@minorversion\space
+ (pdfx) PDF version remains at \the\pdfmajorversion.\the\pdfminorversion.^^J%
+ (pdfx) Use \string\pdfmajorversion=\the\pdfx@majorversion\space^^J%
+ and \string\pdfminorversion=\the\pdfx@minorversion\space
before \string\documentclass}%
{(pdfx) Another package or document-class has written objects into the PDF.^^J%
- (pdfx) Hit return to continue with PDF version 1.\the\pdfminorversion.%
- }%
+ (pdfx) Hit return to continue with PDF version %
+ \the\pdfmajorversion.\the\pdfminorversion.}%
+ \global\pdfx@majorversion=\the\pdfmajorversion
\global\pdfx@minorversion=\the\pdfminorversion
\fi
\else
+ \global\pdfmajorversion\pdfx@majorversion
\global\pdfminorversion\pdfx@minorversion
\fi
\fi
@@ -2877,6 +3017,7 @@
\expandafter\ifx\csname thepdfminorversion\endcsname\relax
\expandafter\ifx\csname pdfminorversion\endcsname\relax
\else
+ \xdef\thepdfmajorversion{\the\pdfmajorversion}
\xdef\thepdfminorversion{\the\pdfminorversion}
\fi\fi
@@ -2885,16 +3026,21 @@
\def\pdf@minorversion@xetex=#1{\gdef\thepdfminorversion{#1}}%
\let\pdfminorversion\pdf@minorversion@xetex
\else
- \ifnum\pdfminorversion < 4\relax
- \ifpdfx@x
- % more testing needed with PDF/X
- \else
- \pdfminorversion=4\relax % assumed for PDF/A ; options may change this for PDF/X
- \gdef\thepdfminorversion{4}%
- \fi
+ \ifnum\pdfmajorversion > 1\relax
+ \pdfminorversion=3\relax
+ %% else some JPG graphics with DCT encoding will fail
\else
- \ifnum\pdfminorversion<\thepdfminorversion\relax
- \global\pdfminorversion=\thepdfminorversion\relax
+ \ifnum\pdfminorversion < 4\relax
+ \ifpdfx@x
+ % more testing needed with PDF/X
+ \else
+ \pdfminorversion=4\relax % assumed for PDF/A ; options may change this for PDF/X
+ \gdef\thepdfminorversion{4}%
+ \fi
+ \else
+ \ifnum\pdfminorversion<\thepdfminorversion\relax
+ \global\pdfminorversion=\thepdfminorversion\relax
+ \fi
\fi
\fi
\fi
@@ -2902,7 +3048,8 @@
\pdfresetpageorigin=0
\fi
-\expandafter\ifx\csname pdfomitcharset\endcsname\relax\else
+\expandafter\ifx\csname pdfomitcharset\endcsname\relax
+\else
\ifpdfx@omitcharset
\pdfomitcharset = 1 %
%% do not create /Charset listings of font glyphs;
@@ -2940,8 +3087,10 @@
\RequirePackage{iftex}
\RequirePackage{ifpdf}
+%\expandafter\show\csname ifpdf\endcsname
%% Support for pdfTeX primitives when using XeTeX:
\RequirePackage{ifxetex}
+%\expandafter\show\csname ifpdf\endcsname
\ifxetex
\def\pdfx@pages@xetex#1{\special{pdf:put @pages <<#1>>}}
\def\pdfx@pageattr@xetex#1{\special{pdf:put @thispage <<#1>>}}
@@ -2971,7 +3120,10 @@
}%
\RequirePackage{pdftexcmds}%
\let\pdfx@mdfivesum\pdf@mdfivesum
- \let\pdfescapestring\pdf@escapestring
+% \let\pdfescapestring\pdf@escapestring
+ \long\def\pdf@escapestring@byte #1{%
+ \directlua {oberdiek.pdftexcmds.escapestring("\luaescapestring {#1}", "byte")}}%
+ %\let\pdf@escapestring\pdf@escapestring@byte
\else
\ifxetex
\expandafter\ifx\csname mdfivesum\endcsname\relax
@@ -3021,6 +3173,13 @@
\pdfgeninterwordspace=0 \relax
\fi
\begingroup
+ \expandafter\ifx\csname stockwidth\endcsname\relax\else
+ \ifdim\stockwidth=\z@ %% 20240528
+ \else
+ %% 20231023 support for memoir's stockwidth/height
+ \let\paperwidth\stockwidth
+ \let\paperheight\stockheight
+ \fi \fi
\dimen0=0.996264009963\paperwidth\relax
\edef\pdfx@mwidth{\strip@pt\dimen0}%
\advance\dimen0 -25\p@
@@ -3049,7 +3208,7 @@
\expandafter\immediate\pdfx@pageattr@xetex{\pdfx@everypage@xetex}}%
\EveryShipout{%
\expandafter\immediate\pdfx@pageattr@xetex{\pdfx@everypage@xetex}}%
- \else
+ \else
\EveryShipout{%
\expandafter\ifx\expandafter\relax\the\pdfpageattr\relax
\immediate\pdfpageattr\expandafter{\the\pdfpagesattr}%
@@ -3068,7 +3227,8 @@
\else
\ifnum\thepdfminorversion >3 \relax
\expandafter\ifx\csname pdfsuppresswarningdupmap\endcsname\relax
- \expandafter\ifx\csname pdfmapline\endcsname\relax\else
+ \expandafter\ifx\csname pdfmapline\endcsname\relax
+ \else
\pdfmapline{+dummy-space <dummy-space.pfb}
\fi
\else
@@ -3098,16 +3258,46 @@
\@namedef{M@L8U}{}%
%% adjust to LaTeX's 2018 change to the default encoding
+\def\pdfx@utfencodingname{utf8}%
+\def\pdfx@RawInputEncoding{%
+% \begingroup
+% \@tempcnta=0
+% % print out the catcodes of chars < 32
+% \loop
+% \typeout{\the\@tempcnta: \expandafter\the\catcode\@tempcnta}%
+% \advance\@tempcnta\@ne
+% \ifnum\@tempcnta<32
+% \repeat
+% \endgroup
+ \UseRawInputEncoding
+}
\expandafter\ifx\csname inputencodingname\endcsname\relax
\else
\def\pdfx@restoreencoding#1{%
- \@tempcnta=128
+ \@tempcnta=1\relax
+ \loop
+% \catcode\@tempcnta=13\relax
+ \advance\@tempcnta\@ne
+ \ifnum\@tempcnta<8\relax
+ \repeat
+ \catcode11=13 \relax
+ \@tempcnta=14\relax
+ \loop
+% \catcode\@tempcnta=13\relax
+ \advance\@tempcnta\@ne
+ \ifnum\@tempcnta<31 \relax
+ \repeat
+ \@tempcnta=128\relax
\loop
- \catcode\@tempcnta=13
+% \catcode\@tempcnta=13\relax
\advance\@tempcnta\@ne
\ifnum\@tempcnta<256
\repeat
- \inputencoding{#1}%
+% {\tracingall
+% \ifx\inputencodingname\pdfx@utfencodingname\else
+ \let\inputencodingname\relax %% kill previous
+% \fi
+ \inputencoding{#1}%}%
\let\LastDeclaredEncoding\pdfx@LastDeclaredEncoding
\let\DeclareFontEncoding@\pdfx@DeclareFontEncoding@
\let\DeclareUnicodeCharacter\pdfx@DeclareUnicodeCharacter
@@ -3116,7 +3306,18 @@
\let\pdfx@inputencodingname\inputencodingname
\global\let\pdfx@DeclareUnicodeCharacter\DeclareUnicodeCharacter
\global\let\pdfx@DeclareFontEncoding@\DeclareFontEncoding@
- \UseRawInputEncoding
+% \@tempcnta=0
+% \loop
+% \typeout{\the\@tempcnta: \expandafter\the\catcode\@tempcnta}%
+%% \expandafter\showthe\catcode\@tempcnta
+% \advance\@tempcnta\@ne
+% \ifnum\@tempcnta<32
+% \repeat
+%\show\UseRawInputEncoding
+%% if the encoding is utf8 then don't change it here – wrong!
+% \ifx\inputencodingname\pdfx@utfencodingname\else
+% \expandafter\expandafter
+ \expandafter\pdfx@RawInputEncoding %\fi
\fi
\InputIfFileExists{\pdfx@encodingfile}{}{}
\expandafter\ifx\csname pdfx@inputencodingname\endcsname\relax
@@ -3243,6 +3444,10 @@
\ifx\relax#1\relax\else\gdef\xmp@lang@Identifier{#1}\fi
\def\afterxmp@parse{\let\Identifier\pdfx@extraIdentifier}%
\xmp@parse{\global\let\xmp@Identifier\@this}}
+\newcommand{\pdfx@Nickname}[1][]{%
+ \ifx\relax#1\relax\else\gdef\xmp@lang@Nickname{#1}\fi
+% \def\afterxmp@parse{\let\Identifier\pdfx@extraNickname}%
+ \xmp@parse{\global\let\xmp@Nickname\@this}}
\newcommand{\pdfx@Thumbnails}{%
\def\afterxmp@parse{\let\Thumbnails\pdfx@extraThumbnails}%
\xmp@parse{\global\let\xmp@Thumbnails\@this}}
@@ -3443,6 +3648,28 @@
\xmp@parse{\global\let\xmp@extraIdentifier\@this}%
}%
+%% Nickname only supports a single usage, for PDF/X
+%\newcommand{\pdfx@extraNickname}[1][]{%
+% \ifx\relax#1\relax
+% \expandafter\expandafter\expandafter\gdef
+% \expandafter\expandafter\expandafter\xmp@Nickname
+% \expandafter\expandafter\expandafter{%
+% \expandafter\xmp@Nickname\pdfx@insert@sep}%
+% \else
+% \expandafter\expandafter\expandafter\gdef
+% \expandafter\expandafter\expandafter\xmp@Nickname
+% \expandafter\expandafter\expandafter{%
+% \expandafter\xmp@Nickname\pdfx@insert@sep[#1]}%
+% \fi
+% \def\afterxmp@parse{%
+% \expandafter\expandafter\expandafter\gdef
+% \expandafter\expandafter\expandafter\xmp@Nickname
+% \expandafter\expandafter\expandafter{%
+% \expandafter\xmp@Nickname\xmp@extraNickname}%
+% }%
+% \xmp@parse{\global\let\xmp@extraNickname\@this}%
+% }%
+
\newcommand{\pdfx@extraThumbnails}[1][]{%
\ifx\relax#1\relax
\expandafter\expandafter\expandafter\gdef
@@ -3737,7 +3964,7 @@
%\let\sep\pdfx@sep
%% Note: '\ ', \&, \copyright are already predefined by hyperref.
%% allow LICRs to expand into PDF strings
- \def\cf@encoding{PU}%
+ \def\cf@encoding{PU}%
\def\9##1{\ifcase##1\string\0\or\string\1\or\string\2\or\string\3\fi}%
\def\8{\string\00}%
\def\0{\string\0}\def\1{\string\1}\def\2{\string\2}\def\3{\string\3}%
@@ -3798,6 +4025,9 @@
%%----------------------------------------------------------------------
%% Alternative way to get the CreationDate using Lua for XeTeX
\ifdefined\pdfcreationdate\else
+ \ifdefined\creationdate %% added to XeTeX in 2019
+ \let\pdfcreationdate\creationdate
+ \else
\begingroup %% ensure correct catcodes, not done by \dospecials
\catcode`\:=12 \catcode`\.=12
\begin{filecontents*}{creationdate.lua}
@@ -3833,7 +4063,7 @@
\def\noexpand\pdfcreationdate{\string D:20181028075445+10'00'}}%
\x
\fi
-\fi
+\fi \fi
%%----------------------------------------------------------------------
\def\pdfx@findUUID#1{\edef\pdfx@tmpstring{\pdfx@mdfivesum{#1}}
@@ -4004,7 +4234,7 @@
\fi\fi
}%
\fi\fi
-\hypersetup{pdfencoding=auto}% unicode
+%\hypersetup{pdfencoding=auto}% 2019-12-08 No; this writes 8-bit bookmarks.
\expandafter\ifx\csname KV@Hyp@psdextra\endcsname\relax\else
\hypersetup{psdextra}
\fi
@@ -4370,7 +4600,7 @@
%% ----------------------------------------------------------------------
\begingroup
- \catcode`\_ 12 \catcode`\" 12 \catcode`\' 12
+ \catcode`\_ 12 \catcode`\" 12 \catcode`\' 12
\catcode`\< 12 \catcode`\> 12 \catcode`\/ 12 \catcode`\[ 12 \catcode`\] 12
\edef\@pctchar{\expandafter\@gobble\string\%}
\edef\@bchar{\expandafter\@gobble\string\\}
@@ -4733,22 +4963,24 @@
\fi
}% end of \catcode
+
%% ----------------------------------------------------------------------
%% \pdfx@topdfstring\toka\tokb: Convert the string in \tokb to a format
%% appropriate for PDF /Info strings, i.e., PDFDoc encoding or UTF-16
%% encoding, and store the result in \toka As a special case, if \tokb
%% is \@empty, set \toka to \@empty.
-\def\pdfx@topdfstring#1#2{%
- \ifx#2\@empty
+\RequirePackage{stringenc}% prevent it loading later inside a group
+\def\pdfx@topdfstring #1#2{%
+ \ifx #2\@empty
\global\let#1\empty
\else
\begingroup
\ifluatex\else\ifxetex\else
\inputencoding{utf8}%
\fi\fi
- \hypersetup{pdfencoding=auto}%
- \pdfstringdef#1{#2}%
+ \@ifl@t@r\fmtversion{2022/06/01}{}{\hypersetup{pdfencoding=auto}}%
+ \pdfstringdef #1{#2}%
\endgroup
\fi
}
@@ -4858,7 +5090,7 @@
\RequirePackage{stringenc}%
\begingroup
\catcode`\| 0
- \catcode `\\ 12
+ \catcode `\\ 12
|gdef |pdfx@parsebackslash#1{%
|begingroup
|def |pdfx@parsemacro{#1}%
@@ -4873,7 +5105,7 @@
|edef |pdfx@parseout{|pdfx@parseout \\}%
|def |next{|pdfx@doparsebackslash#2|pdfx@endparse}%
|fi |next
- }
+ }
|endgroup
\def\pdfx@parseend{%
\edef\next{\endgroup\def\expandafter\noexpand\pdfx@parsemacro{\pdfx@parseout}}%
@@ -5018,7 +5250,7 @@
\spacefactor\accent@spacefactor
}
%% same for named accents in math-mode
-\def\pdfx@mathaccentV#1#2#3#4#5{%
+\def\pdfx@mathaccentV #1#2#3#4#5{%
#5{\mathsurround=\z@\relax
\everymath{}%
\mathchoice
@@ -5027,12 +5259,74 @@
{\setbox\z@\hbox{$\scriptstyle #5$}\kern-\wd\z@}%
{\setbox\z@\hbox{$\scriptscriptstyle #5$}\kern-\wd\z@}%
}%
+% \pdfx@AMS@mathaccentV{#1}{#2}{#3}{#4}{#5}%
\AMS@mathaccentV{#1}{#2}{#3}{#4}{\phantom{#5}}%
}
+
+%%% the original AMS coding:
+%%\mathaccentV=macro: #1#2#3#4#5->\ifmmode
+%% \gdef \macc@tmp {\macc@depth \@ne }%
+%% \setbox \z@ \hbox {\let\mathaccentV \macc@test
+%% \let \use@mathgroup \@gobbletwo
+%% \let \select@group \@gobblethree \frozen@everymath {}$#5$}\macc@tmp
+%% \ifnum \macc@depth =\@ne
+%% \global \let \macc@nucleus \@empty
+%% \mathaccent "\accentclass@
+%% \else \@xp \macc@nested
+%% \fi #2#3#4{#5}\macc@nucleus
+%% \else
+%% \@xp \nonmatherr@ \csname #1\endcsname \fi .
+
+\def\pdfx@AMS@mathaccentV #1#2#3#4#5{%
+ \ifmmode
+ \gdef \macc@tmp {\macc@depth \@ne }%
+ \setbox \z@ \hbox {\let\mathaccentV \macc@test
+ \let \use@mathgroup \@gobbletwo
+ \let \select@group \@gobblethree \frozen@everymath {}$\phantom{#5}$}\macc@tmp
+ \ifnum \macc@depth =\@ne
+ \global \let \macc@nucleus \@empty
+ \mathaccent "\accentclass@
+ \else \@xp \macc@nested
+ \fi #2#3#4{#5}\macc@nucleus
+ \else
+ \@xp \nonmatherr@ \csname #1\endcsname
+ \fi
+}
+
+
+%% code supplied by Yuwsuke Kieda, 7 May 2019 :
+%% https://gist.github.com/yuw/a31936370647d0044eeb4e47f3ae913f
+%%
+\@ifpackageloaded{amsmath}{%
+ \def\pdfx@macc@a #1#2{%
+ \begingroup
+ \let\macc@style#1\relax
+ \def\macc@palette ##1{##1\macc@style}%
+ \advance\macc@depth\m@ne
+ \ifnum\macc@depth=\z@
+ \gdef\macc@nucleus{\phantom{#2}}%% <<< here
+ \setbox\z@\hbox{$#1#2\@empty{}\macc@skewchar$}%
+ \setbox\tw@\hbox{$#1#2\@empty\macc@skewchar$}%
+ \dimen@\tw@\wd\tw@ \advance\dimen@-\tw@\wd\z@
+ \xdef\macc@kerna{\the\dimen@\relax}%
+ \setbox4\hbox{$#1#2\acc@check\@empty$}%
+ \global\setbox\@ne\hbox to\wd4{}%
+ \ht\@ne\ht4 \dp\@ne\dp4
+ \xdef\macc@kernb{\the\wd4\relax}%
+ \mathaccent\macc@code{\box\@ne\kern\macc@kerna}%
+ \else
+ \mathaccent\macc@code{\let\macc@adjust\@empty #1#2\@empty}%
+ \macc@adjust
+ \fi
+ \endgroup
+ }}\relax
+%
\AtBeginDocument{%
\@ifpackageloaded{amsmath}{%
\let\AMS@mathaccentV\mathaccentV
- \let\mathaccentV\pdfx@mathaccentV}%
+% \let\mathaccentV\pdfx@mathaccentV
+% \let\macc@a\pdfx@macc@a
+ }%
}%
%% How to support XeTeX here ?
@@ -5284,10 +5578,25 @@
%% it should be loaded outside the grouping, else biblatex may barf
%%
\RequirePackage{ifthen}
-\begingroup
+
+%% 2024-04-05: from July 2024 LaTeX will not allow packages to load
+%% within a grouping, so reorganise a bit.
+%%
%% override the \ifpdf check of xmpincl package, inside the grouping
- \pdftrue
- \RequirePackage{xmpincl}
+%% after saving its current value:
+\let\pdfx@ifpdf\ifpdf
+\pdftrue
+%% now load the packages, then enter the grouping:
+\RequirePackage{xmpincl}
+%%
+\begingroup
+%%% 20240405 revert the value of \ifpdf ...
+\pdfx@ifpdf
+\else
+ %% 20240624 ... outside the grouping
+ \aftergroup\pdffalse
+\fi
+
%% combine coding from xmpincl and hyperxml to support XeTeX
\def\pdfx@xmpincl@xetex#1{%
\IfFileExists{#1.xmp}{%
@@ -5343,6 +5652,13 @@
%%----------------------------------------------------------------------
\begingroup
+%% 20210706 we need a pointer to unexpandable \par
+ \expandafter\ifx\csname tex_par:D\endcsname \relax
+ \let\pdfx@par\par
+ \else
+%% using LaTeX 2021-06 or later
+ \expandafter\let\expandafter\pdfx@par\csname tex_par:D\endcsname
+ \fi
\ifpdfx@x
\ifpdfx@vt
\def\xmp@template{pdfvt}%
@@ -5396,9 +5712,11 @@
%% beware 128 space characters -- for padding end of XMP packet
\gdef\paddingline{ }%
\typeout{Using XMP template file: \xmp@template.xmp}%
+ %% 20210706 ensure \par is unexpandable
+ \let\par\pdfx@par
\includexmp{\xmp@template}%
\endgroup
-
+%%%
%%
%% revert active characters to previous encoding
%%
@@ -5462,13 +5780,27 @@
%%
%% controls the color model and conversions with xcolor package
%%
+\def\pdfx@selectcolormodel@doing #1{%% Warning
+ \PackageWarning{pdfx}{Setting all color commands to #1,^^J%
+ consistent with the Color Model for PDF/%
+ \ifpdfx@x X \else \ifpdfx@e E \else A \fi\fi}%
+ }%% 20240528 inhibit any changes
+\def\pdfx@selectcolormodel@done #1{%% Warning
+ \PackageWarning{pdfx}{Color Model already set for PDF/%
+ \ifpdfx@x X\else \ifpdfx@e E\else A\fi\fi,^^Jcannot change to #1 }%
+ }%% 20240528 inhibit any changes
+%%
\ifpdfx@cmyk
%
% this will have been done already for PDF/X
%
\PassOptionsToPackage{cmyk,hyperref}{xcolor}
- \def\pdfx@handlexcolor{\def\@@mod{cmyk}\selectcolormodel{cmyk}%
- \convertcolorsUtrue\convertcolorsDtrue}
+ \def\pdfx@handlexcolor{\def\@@mod{cmyk}%
+ \pdfx@selectcolormodel@doing{cmyk}%
+ \selectcolormodel{cmyk}%
+ \convertcolorsUtrue\convertcolorsDtrue
+ \let\selectcolormodel\pdfx@selectcolormodel@done
+ }
\ifpdfx@x
\else
%% \AtBeginDocument{%
@@ -5491,8 +5823,12 @@
\fi
\else
\PassOptionsToPackage{rgb,hyperref}{xcolor}
- \def\pdfx@handlexcolor{\def\@@mod{rgb}\selectcolormodel{rgb}%
- \convertcolorsUtrue\convertcolorsDtrue}
+ \def\pdfx@handlexcolor{\def\@@mod{rgb}%
+ \pdfx@selectcolormodel@doing{rgb}%
+ \selectcolormodel{rgb}%
+ \convertcolorsUtrue\convertcolorsDtrue
+ \let\selectcolormodel\pdfx@selectcolormodel@done
+ }
\fi
\@ifpackageloaded{xcolor}{\pdfx@handlexcolor
\ifpdfx@cmyk\else\color{black}\fi}{%
@@ -5628,7 +5964,9 @@
%</package>
% \fi
% \Finale
-% \let\newpage\relax
% \PrintIndex
+% \let\realGlossaryParms\GlossaryParms \let\realsubitem\subitem
+% \long\def\GlossaryParms{\realGlossaryParms \def\hdpindex ##1##2{}%
+% \long\def\subitem ##1:\ ##2\pfill{\par\hangindent 30pt\hspace*{15pt}##2\hfil}}%
% \PrintChanges
% \endinput
diff --git a/macros/latex/contrib/pdfx/src/pdfx.ins b/macros/latex/contrib/pdfx/src/pdfx.ins
index afd943fbb5..88defbfee8 100644
--- a/macros/latex/contrib/pdfx/src/pdfx.ins
+++ b/macros/latex/contrib/pdfx/src/pdfx.ins
@@ -4,9 +4,9 @@
\preamble
- Copyright (c) 2019, CV Radhakrishnan <cvr@river-valley.org>,
+ Copyright (c) 2019-2024, CV Radhakrishnan <cvr@river-valley.org>,
Han The Thanh <thanh@river-valley.org>,
- Ross Moore <ross.moore@mq.edu.au>,
+ Ross Moore <ozross@icloud.com> - primary contact,
Peter Selinger <selinger@mathstat.dal.ca>
This file may be distributed and/or modified under the conditions
diff --git a/macros/latex/contrib/pdfx/src/pdfx.xmpdata b/macros/latex/contrib/pdfx/src/pdfx.xmpdata
deleted file mode 100644
index 66eb644635..0000000000
--- a/macros/latex/contrib/pdfx/src/pdfx.xmpdata
+++ /dev/null
@@ -1,33 +0,0 @@
-\Title{Generation of PDF/X- and PDF/A-compliant PDFs with pdfTeX \textemdash\ pdfx.sty}
-\Author{\CVR\sep \Thanh\sep Ross Moore\sep Peter Selinger}
-\Subject{This package supports generation of PDF/X-, PDF/A- and PDF/E-compliant documents, in most of their variants, using pdfLaTeX, LuaLaTeX and XeLaTeX.}
-\Keywords{PDF/X-, PDF/A- and PDF/E-compliance\sep Multilingual Metadata\sep installation\sep \TeX Live \thisyear}
-\PublicationType{manual}
-\Contributor{Norbert Preining: 'colorprofiles' package}
-\Copyright{Public domain.}
-\Copyrighted{False}
-\CopyrightURL{http://tug.org/texlive/}
-\CoverDisplayDate{March \thisyear}
-\CoverDate{\thisyear-03-10}
-\CreatorTool{LaTeX + pdfx.sty with option \pdfxopt, from TeX Live \thisyear}
-\Date{2017-05-18\sep 2017-06-23\sep 2018-11-29\sep 2018-12-22\sep 2019-02-08\sep 2019-03-10}
-\Advisory{An earlier version of this documentation was published as: TUGboat 36, No.2, pp.136\textendash 142 (2015)}
-\Advisory{v1.6: Added XMP support for PDF/UA-1. Added more Metadata fields and Language support.}
-\Advisory{v1.6: Default RGB and CMYK profiles now require the colorprofiles.sty package.}
-\Relation{Requires the colorprofiles package for RGB and CMYK default profiles.}
-\Advisory{v1.6: Access more profiles, incl. to pdfaPilot's color profile folders.}
-\Advisory{v1.6: Revised glyphtounicode.sty to use variation selectors.}
-\Advisory{v1.6: altered maps to PUA codepoints.}
-\Advisory{v1.6: added more glyphs via glyphtounicode-ntx.tex }
-\Advisory{v1.6: Support for 8-bit Hebrew encodings, some Arabic and Devanagari.}
-\Advisory{v1.6: Updated documentation, incl. for LaTeX changes.}
-\Advisory{v1.6.1: Fixed issue with ifthen package; improved Metadata with LuaTeX and XeTeX.}
-\Advisory{v.1.6.1: Flexibility with page boxes for PDF/X.}
-\Advisory{v.1.6.2: Fixed passing of options to xcolor, and some glyphtounicode values.}
-\Advisory{v.1.6.2: Fixed encoding issue. Extra warning when colorprofiles.tex is missing.}
-\Advisory{v.1.6.3: Properly fixed encoding issue; supports \string\pdfomitcharset\ primitive.}
-\Advisory{v.1.6.3: Reference to veraPDF validation software; additions to glyphtounicode-ntx.tex.}
-\Advisory{v.1.6.3: Patched \string\mathaccentV\ to output accents after the base character.}
-\pdfxEnableCommands{%
- \def\CVR{C.V. Radhakrishnan}\def\Thanh{H\`an Th\eee Thanh}%
- \def\eee{^^c3^^aa^^cc^^81 }}
diff --git a/macros/latex/contrib/photobook/Makefile b/macros/latex/contrib/photobook/Makefile
index 59b7ea002c..19edca368e 100644
--- a/macros/latex/contrib/photobook/Makefile
+++ b/macros/latex/contrib/photobook/Makefile
@@ -85,8 +85,7 @@ endif
# markdown dialect...
#
-# XXX still needs some tweaking...
-MD_FORMAT ?= markdown_github
+MD_FORMAT ?= gfm
# debug output...
@@ -173,26 +172,11 @@ LN := cp -l
# - |..| - verbatim does not work...
# - || - parts of doc omitted...
# - verbatim blocks get merged sometimes...
+# - does not resolve \jobname in include...
# - ...
# ...not sure if this can be tweaked...
-#%.md: %.tex
-# pandoc -t $(MD_FORMAT) -s $< -o $@
-
-# XXX EXPERIMENTAL...
-# XXX revise:
-# ...for this to work we need to replace:
-# \documentclass{ltxdoc}
-# to:
-# \documentclass[markdownextra]{internet}
-# XXX install the internet class...
-# https://github.com/loopspace/latex-to-internet
-# ...needs testing...
%.md: %.tex
- cat $< \
- | sed 's/documentclass{ltxdoc}/documentclass[markdownextra]{internet}/' \
- > $<.tmp
- mv $<{.tmp,}
- $(TEX) $< $(STDERR)
+ pandoc -t $(MD_FORMAT) -s $< -o $@
# meta-section...
diff --git a/macros/latex/contrib/photobook/README.md b/macros/latex/contrib/photobook/README.md
index 13daa3c373..7055717be0 100644
--- a/macros/latex/contrib/photobook/README.md
+++ b/macros/latex/contrib/photobook/README.md
@@ -28,7 +28,7 @@ $ make install
The `photobook` document class requires a set of modules to be installed
for it to function, the full list is included in the docs and can be
-printed by calling:
+generated and printed by calling:
```shell
$ make depends
```
@@ -39,7 +39,8 @@ For more info on `make` targets see the: [./Makefile](./Makefile)
# Documentation
-Pre-built documentation can be found on
+Pre-built documentation can be found in the
+[Github releases](https://github.com/flynx/photobook/releases/latest) or on
[CTAN](http://mirrors.ctan.org/macros/latex/contrib/photobook/photobook.pdf).
@@ -69,7 +70,7 @@ Build requirements for docs:
## Notes
-- The main refetence is inline with the source [photobook.cls](./photobook.cls)
+- The main reference is maintained inline with the source [photobook.cls](./photobook.cls)
thus it is both human-readable next to the code it documents and is
used to build the `photobook.pdf`.
Extracting the documentation source (`photobook*.tex`) is done
diff --git a/macros/latex/contrib/photobook/photobook.cls b/macros/latex/contrib/photobook/photobook.cls
index a2a84809e8..ae2ecac6b6 100644
--- a/macros/latex/contrib/photobook/photobook.cls
+++ b/macros/latex/contrib/photobook/photobook.cls
@@ -38,6 +38,7 @@
%
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
%
+%
% XXX ASAP: imagecell: photobook@imagecell@left and photobook@imagecell@top
% should explicitly account for clearence@left and clearence@top resp.
% XXX ASAP: imagecell: clearance should have the same semantics as cliptocell
@@ -88,12 +89,25 @@
% cell/cell* depend on absolute mode being set globally
%
%
+% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+%
+% Work around an issue with calc's \ratio{..}{..} breaking into an
+% "Arythmetic overflow" when working with large images.
+% (see Issues section for more info)
+%
+% NOTE: if the error persists just make this smaller but note that the
+% smaller this gets the greater the error can be for very small
+% images
+%
+\def\CalcOverflowFactor{0.1}%
+
+
%----------------------------------------------------------------------
%%% NOTE: \def\<module-name>@[A-Z]+ macros will be visible to both the
%%% code and the generated docs...
-\edef\photobook@FILEVERSION{v0.1.29}
-\edef\photobook@FILEDATE{2023-08-24}
+\edef\photobook@FILEVERSION{v0.1.31}
+\edef\photobook@FILEDATE{2024-07-19}
%% \documentclass{ltxdoc}
@@ -248,26 +262,27 @@
%% \begin{minipage}{\textwidth}
%% \begin{verbatim}
%%
+%% <-------------------------------------------------> paperwidth
%% <---> bleed <---> bleed
-%%
-%% + - - - - - - - - - - - - - - - - - - - - - - + - + ^
-%% . . . | bleed
-%% . +-----------------------------------------+----- v . . ---
-%% . | ^ . . = .
-%% . | . . . . . . | . . . = . ^
-%% . |<-- blockwidth ------------------------->= . |
-%% . | . | . . . = . |
-%% . | | . . = . textheight
-%% . | . Page | . . . = . |
-%% . | blockheight . . = . |
-%% . | . | . . <--> bindingoffset |
-%% . | | . . = . |
-%% . | . . . . . . | . <--> gutteroffset v
-%% . | v . . = .
-%% . +-----------------------------------------+----- ^ . . ---
-%% . . . . | bleed
-%% + - - - - - - - - - - - - - - - - - - - - - - + - + v
-%% . .
+%% paperheight v
+%% + - - - - - - - - - - - - - - - - - - - - - - + - + ^ . . . ---
+%% . . . | bleed .
+%% . +-----------------------------------------+----- v . . ---
+%% . | ^ . . = . .
+%% . | . . . . . . | . . . = . ^
+%% . |<-- blockwidth ------------------------->= . | .
+%% . | . | . . . = . |
+%% . | | . . = . textheight .
+%% . | . Page | . . . = . |
+%% . | blockheight . . = . | .
+%% . | . | . . <--> bindingoffset |
+%% . | | . . = . | .
+%% . | . . . . . . | . <--> gutteroffset v
+%% . | v . . = . .
+%% . +-----------------------------------------+----- ^ . . ---
+%% . . . . | bleed .
+%% + - - - - - - - - - - - - - - - - - - - - - - + - + v . . . ---
+%% . . ^
%% | <-- textwidth --------------> . |
%% ^ gutter
%%
@@ -278,6 +293,9 @@
%% account for |\gutteroffset|, namely macros that do not display content
%% with bleeds.
%%
+%% Also note that bleeds are included in \href{https://ctan.org/pkg/geometry}{geometry}'s
+%% |\paperwidth| and |\paperheight|.
+%%
% NOTE: if blockwidth/blockheight are set they will force recalculations
% and overriding of the paperwidth/paperheight if they were changed
% by the user code anywhere between \documentclass[..]{photobook}
@@ -917,7 +935,7 @@
%% \DescribeMacro{\imageblockoffsettop=<ratio>}
%
-%% The ration by which the image is raised in |\ImagePage{..}| and
+%% The ratio by which the image is raised in |\ImagePage{..}| and
%% derived templates.
%%
\edef\imageblockoffsettop{\photobook@imageblockoffsettop}
@@ -2515,8 +2533,9 @@
% NOTE: here we calculate image/cell eccentricity to decide
% to fit to width or heigh of cell...
% NOTE: did I say that I "love" how LaTeX does basic math??
+ % NOTE: \ratio{..}{..} here can break, see Issues for more info...
\setlength\photobook@imagecell@imgratio{%
- 1pt * \ratio{\wd\photobook@imagebox}{\ht\photobook@imagebox}}%
+ 1pt * \ratio{\CalcOverflowFactor\wd\photobook@imagebox}{\CalcOverflowFactor\ht\photobook@imagebox}}%
\setlength\photobook@imagecell@cellratio{%
1pt * \ratio{\cellwidth}{\cellheight}}%
\ifdim \photobook@imagecell@imgratio < \photobook@imagecell@cellratio%
@@ -2524,7 +2543,7 @@
\includegraphics[%
keepaspectratio,
width=\photobook@imagecell@scale\dimexpr
- + \cellwidth
+ \cellwidth
- \photobook@imagecell@clearance@left
- \photobook@imagecell@clearance@right \relax]{#3}}%
\else%
@@ -2532,7 +2551,7 @@
\includegraphics[%
keepaspectratio,
height=\photobook@imagecell@scale\dimexpr
- + \cellheight
+ \cellheight
- \photobook@imagecell@clearance@top
- \photobook@imagecell@clearance@bottom \relax]{#3}}%
\fi\fi\fi%
@@ -4848,8 +4867,9 @@
% align center -> check if image fits vertically...
\ifphotobook@ImagePageFit@centered\else%
\sbox{\photobook@imagebox}{\includegraphics{#3}}%
+ % NOTE: \ratio{..}{..} here can break, see Issues for more info...
\setlength\photobook@ImagePageFit@imgratio{%
- 1pt * \ratio{\wd\photobook@imagebox}{\ht\photobook@imagebox}}%
+ 1pt * \ratio{\CalcOverflowFactor\wd\photobook@imagebox}{\CalcOverflowFactor\ht\photobook@imagebox}}%
% NOTE: subtracting \bindingoffset from \cellwidth here makes sure that
% we avoid offsetting images close enough in ratio to the page and
% messing up bleeds...
@@ -5692,6 +5712,26 @@
%----------------------------------------------------------------------
+%%%% Issues
+%
+%% \subsection*{Large images can cause "Arythmetic overflow"}
+%
+%% \DescribeMacro{\CalcOverflowFactor=0.1}
+%
+%% If the issue occurs set |\CalcOverflowFactor| to a smaller value.
+%% But note, a value too small can lead to errors in the affected macros,
+%% a good value is between 0.1 and 0.01.
+%%
+%% Also note that it is recommended to pre-size images the print outside
+%% of \LaTeX.
+%%
+%% Affected macros: |\imagecell[fill]{..}{..}|, |\ImagePageFit|.
+%%
+% The issue occurs in the calc's |\ratio{..}{..}| macro when calculating
+% image proportions.
+%
+%
+%----------------------------------------------------------------------
% Index...
%
% XXX this prints trash at this point...
diff --git a/macros/latex/contrib/photobook/photobook.pdf b/macros/latex/contrib/photobook/photobook.pdf
index 5e785e73cf..119574f619 100644
--- a/macros/latex/contrib/photobook/photobook.pdf
+++ b/macros/latex/contrib/photobook/photobook.pdf
Binary files differ
diff --git a/macros/latex/contrib/preview/preview.dtx b/macros/latex/contrib/preview/preview.dtx
index f8b72e0522..cafb03636d 100644
--- a/macros/latex/contrib/preview/preview.dtx
+++ b/macros/latex/contrib/preview/preview.dtx
@@ -20,7 +20,7 @@
% Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
% Boston, MA 02110-1301 USA
% \fi
-% \CheckSum{1758}
+% \CheckSum{1770}
% \GetFileInfo{preview.sty}
% \date{\filedate}
% \author{David Kastrup\thanks{\texttt{bug-auctex@gnu.org}}}
@@ -437,8 +437,8 @@
%<*style>
%<*!active>
\NeedsTeXFormat{LaTeX2e}
-\def\pr@version{13.3}
-\def\pr@date{2024/01/17}
+\def\pr@version{14.0.6}
+\def\pr@date{2024/06/30}
\ProvidesPackage{preview}[\pr@date\space \pr@version\space (AUCTeX/preview-latex)]
% \end{macrocode}
% \end{macro}
@@ -1427,11 +1427,17 @@ Please complain to your document class author}%
%<auccfg>\PreviewMacro*[?[{@{[]}}{}][#1]\item
%<auccfg>\PreviewMacro*\emph
%<auccfg>\PreviewMacro*\textrm
+%<auccfg>\PreviewMacro*\textbf
%<auccfg>\PreviewMacro*\textit
%<auccfg>\PreviewMacro*\textsc
%<auccfg>\PreviewMacro*\textsf
%<auccfg>\PreviewMacro*\textsl
%<auccfg>\PreviewMacro*\texttt
+%<auccfg>\PreviewMacro*\textulc
+%<auccfg>\PreviewMacro*\textmd
+%<auccfg>\PreviewMacro*\textnormal
+%<auccfg>\PreviewMacro*\textup
+%<auccfg>\PreviewMacro*\textsw
%<auccfg>\PreviewMacro*\textcolor
%<auccfg>\PreviewMacro*\mbox
%<auccfg>\PreviewMacro*[][#1{}]\author
@@ -1891,7 +1897,7 @@ Please complain to your document class author}%
% \Finale{}
% \iffalse
% Local Variables:
-% mode: doctex
+% mode: docTeX
% TeX-master: "preview.drv"
% End:
% \fi
diff --git a/macros/latex/contrib/preview/preview.pdf b/macros/latex/contrib/preview/preview.pdf
index 4728d12e42..57f681d0c3 100644
--- a/macros/latex/contrib/preview/preview.pdf
+++ b/macros/latex/contrib/preview/preview.pdf
Binary files differ
diff --git a/macros/latex/contrib/profcollege/doc/ProfCollege-doc.pdf b/macros/latex/contrib/profcollege/doc/profcollege-doc.pdf
index dcd5987717..c684b9fff8 100644
--- a/macros/latex/contrib/profcollege/doc/ProfCollege-doc.pdf
+++ b/macros/latex/contrib/profcollege/doc/profcollege-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/profcollege/latex/PfCArbreCalcul.tex b/macros/latex/contrib/profcollege/latex/PfCArbreCalcul.tex
new file mode 100644
index 0000000000..4113ae9a27
--- /dev/null
+++ b/macros/latex/contrib/profcollege/latex/PfCArbreCalcul.tex
@@ -0,0 +1,543 @@
+%%%
+% Arbre de calculs
+%%%
+\newtoks\toklistearbre%
+\newtoks\toklistearbrefractions%
+\newtoks\toklistearbreexpressions%
+
+\def\UpdatetoksArbreCalcul#1\nil{\IfDecimal{#1}{\addtotok\toklistearbre{#1,}}{\addtotok\toklistearbre{"#1",}}}%
+\def\UpdatetoksArbreFractions#1\nil{\addtotok\toklistearbrefractions{"#1",}}%
+\def\UpdatetoksArbreExpressions#1\nil{\addtotok\toklistearbreexpressions{"#1",}}%
+
+\setKVdefault[ArbreCalcul]{Correction=false,Couleur=LightSteelBlue,Substitue=7,Litteral=false,Largeur=8mm,LargeurC=8mm,Ecart=1.5cm,Hauteur=10mm,Lettre="x",CouleurDepart=LightGreen,Fractions=false,Nombres={},Expressions={},Etape=infinity}%
+\defKV[ArbreCalcul]{Fraction=\setKV[ArbreCalcul]{Fractions}}%
+
+\NewDocumentCommand\ArbreCalcul{om}{%
+ \useKVdefault[ArbreCalcul]%
+ \setKV[ArbreCalcul]{#1}%
+ \toklistearbre{}%
+ \toklistearbrefractions{}%
+ \toklistearbreexpressions{}%
+ \infixtoRPN{#2}%
+ \setsepchar{ }\ignoreemptyitems%
+ \readlist*\ListeNombres{\RPN}%
+ \reademptyitems%
+ \foreachitem\compteur\in\ListeNombres{\expandafter\UpdatetoksArbreCalcul\compteur\nil}%
+ \ifboolKV[ArbreCalcul]{Fractions}{%
+ \xdef\Foo{\useKV[ArbreCalcul]{Nombres}}%
+ \setsepchar{,}\ignoreemptyitems%
+ \readlist*\ListeFractions{\Foo}%
+ \reademptyitems
+ \foreachitem\compteur\in\ListeFractions{\expandafter\UpdatetoksArbreFractions\compteur\nil}%
+ \BuildArbreCalculFraction{\the\toklistearbre}{\the\toklistearbrefractions}%
+ }{%
+ \ifboolKV[ArbreCalcul]{Litteral}{
+ \xdef\Foo{\useKV[ArbreCalcul]{Nombres}}%
+ \setsepchar{,}\ignoreemptyitems%
+ \readlist*\ListeFractions{\Foo}%
+ \reademptyitems
+ \foreachitem\compteur\in\ListeFractions{\expandafter\UpdatetoksArbreFractions\compteur\nil}%
+ \xdef\Foo{\useKV[ArbreCalcul]{Expressions}}%
+ \setsepchar{,}\ignoreemptyitems%
+ \readlist*\ListeExpressions{\Foo}%
+ \reademptyitems
+ \foreachitem\compteur\in\ListeExpressions{\expandafter\UpdatetoksArbreExpressions\compteur\nil}%
+% listarbre : \the\toklistearbre%
+%
+% listfracions : \the\toklistearbrefractions
+%
+% listexpressions : \the\toklistearbreexpressions
+ \BuildArbreCalculLitteral{\the\toklistearbre}{\the\toklistearbrefractions}{\the\toklistearbreexpressions}%
+ }{%
+ \BuildArbreCalcul{\the\toklistearbre}%
+ }%
+ }%
+}%
+
+\NewDocumentCommand\BuildArbreCalcul{m}{%
+ \ifluatex
+ \mplibforcehmode
+ \begin{mplibcode}
+ boolean Correction,Litteral,Allume[];
+ Correction=\useKV[ArbreCalcul]{Correction};
+ Litteral=\useKV[ArbreCalcul]{Litteral};
+
+ NombreSubstitue=\useKV[ArbreCalcul]{Substitue};
+
+ etape=0;
+ Etape=\useKV[ArbreCalcul]{Etape};
+
+ color Evidence,CoulDepart;
+ Evidence=\useKV[ArbreCalcul]{Couleur};
+ CoulDepart=\useKV[ArbreCalcul]{CouleurDepart};
+
+ pair pointprec;
+
+ path base[];
+ base1=unitsquare xscaled \useKV[ArbreCalcul]{Largeur} yscaled 5mm;
+ base2=fullcircle scaled 5mm;
+ base3=unitsquare xscaled \useKV[ArbreCalcul]{LargeurC} yscaled 5mm;
+
+ vardef BlocCalcul(expr Ba,Bb,op,cha,chb)=%
+ % Ba point gauche
+ % Bb point droite
+ % op opération à afficher
+ etape:=etape+1;
+ save $;
+ picture $;
+ path cc[];
+ pair Bc;
+ Bc=(0.5*(xpart(Ba)+xpart(Bb)),if ypart(Bb)<ypart(Ba):ypart(Bb) else:ypart(Ba) fi -0.75u);
+ pointprec:=Bc+u*(0,-0.75);
+ $=image(
+ if Allume[numeropoint-1]=true:
+ cc1=base3 shifted (Ba-center base3);
+ else:
+ cc1=base1 shifted (Ba-center base1);
+ fi;
+ if Allume[numeropoint]=true:
+ cc2=base3 shifted (Bb-center base3);
+ else:
+ cc2=base1 shifted (Bb-center base1);
+ fi;
+
+ cc3=(fullcircle scaled 5mm) shifted Bc;
+ cc4=base3 shifted (pointprec-center base3);
+ if op="mul":
+ label(TEX("$\times$"),Bc);
+ ValeurPile[numeropoint-1]:=cha*chb;
+ elseif op="add":
+ label(TEX("$+$"),Bc);
+ ValeurPile[numeropoint-1]:=cha+chb;
+ elseif op="sub":
+ label(TEX("$\_$"),Bc);
+ ValeurPile[numeropoint-1]:=cha-chb;
+ elseif op="div":
+ label(TEX("$\div$"),Bc);
+ ValeurPile[numeropoint-1]:=cha/chb;
+ fi;
+ if Correction:
+ if etape<Etape+1:
+ fill cc4 withcolor Evidence;
+ label(TEX("\num{"&decimal(ValeurPile[numeropoint-1])&"}"),pointprec);
+ fi;
+ fi;
+ for l=1 upto 4:
+ trace cc[l];
+ endfor;
+ draw (Ba--Bc) cutbefore cc1 cutafter cc3;
+ draw (Bb--Bc) cutbefore cc2 cutafter cc3;
+ draw (Bc--pointprec) cutbefore cc3 cutafter cc4;
+ );
+ $
+ enddef;
+
+ numeric Valeurs[];
+ numeric Valeursa[];
+
+ string Operations[];
+
+ numeric numeropoint;
+ numeropoint=0;
+
+ numeric ValeurPile[];
+
+ vardef RecupDonnees(text t)=
+ n:=0;
+ for p_=t:
+ n:=n+1;
+ if numeric p_:
+ Valeurs[n]=p_;
+ Operations[n]="";
+ else:
+ Valeurs[n]=infinity;
+ Operations[n]=p_;
+ fi;
+ endfor;
+ n:=n+1;
+ Operations[n]="stop";
+ nbtotal=n;
+ for k=1 upto nbtotal:
+ ValeurPile[k]=0;
+ endfor;
+ enddef;
+
+ pair A[];
+ ecart=\useKV[ArbreCalcul]{Ecart};
+
+ RecupDonnees(#1);
+
+ A[0]=(0,0);
+ k=0;
+ nbetape:=0;
+
+ for p_=#1:
+ k:=k+1;
+ if numeric p_:
+ numeropoint:=numeropoint+1;
+ if unknown A[numeropoint]:A[numeropoint]-A[numeropoint-1]=ecart*(1,0);Allume[numeropoint]=false; else:
+ A[numeropoint]:=A[numeropoint-1]+ecart*(1,0); Allume[numeropoint]:=false;
+ fi;
+ if Valeurs[k]=0:Valeursa[k]:=NombreSubstitue else: Valeursa[k]=Valeurs[k] fi;
+ if Operations[k+1]="neg":
+ if Valeurs[k]=0:fill (base1 shifted (A[numeropoint]-center base1)) withcolor CoulDepart; if Litteral:
+ label(TEX("$\useKV[ArbreCalcul]{Lettre}$"),A[numeropoint]);
+ else:
+ label(TEX("\num{"&decimal(-Valeursa[k])&"}"),A[numeropoint]);
+ fi;
+ else:
+ label(TEX("\num{"&decimal(-Valeursa[k])&"}"),A[numeropoint]);
+ fi;
+ ValeurPile[numeropoint]:=-Valeursa[k];
+ else:
+ if Valeurs[k]=0:fill (base1 shifted (A[numeropoint]-center base1)) withcolor CoulDepart;if Litteral:
+ label(TEX("$\useKV[ArbreCalcul]{Lettre}$"),A[numeropoint]);
+ else:
+ label(TEX("\num{"&decimal(Valeursa[k])&"}"),A[numeropoint]);
+ fi;
+ else:
+ label(TEX("\num{"&decimal(Valeursa[k])&"}"),A[numeropoint]);
+ fi;
+ ValeurPile[numeropoint]:=Valeursa[k];
+ fi;
+ elseif string p_:
+ if p_<>"neg":
+ trace BlocCalcul(A[numeropoint-1],A[numeropoint],Operations[k],ValeurPile[numeropoint-1],ValeurPile[numeropoint]);
+ A[numeropoint-1]:=pointprec;
+ Allume[numeropoint-1]:=true;
+ numeropoint:=numeropoint-1;
+ fi;
+ fi;
+ endfor;
+ \end{mplibcode}
+ \fi
+}%
+
+\NewDocumentCommand\BuildArbreCalculFraction{mm}{%
+ \ifluatex
+ \mplibforcehmode
+ \begin{mplibcode}
+ boolean Correction,Allume[];
+ Correction=\useKV[ArbreCalcul]{Correction};
+
+ string Fraction;
+ Fraction=\useKV[ArbreCalcul]{Fraction};
+
+ color Evidence,CoulDepart;
+ Evidence=\useKV[ArbreCalcul]{Couleur};
+ CoulDepart=\useKV[ArbreCalcul]{CouleurDepart};
+
+ pair pointprec;
+
+ path base[];
+ base1=unitsquare xscaled \useKV[ArbreCalcul]{Largeur} yscaled \useKV[ArbreCalcul]{Hauteur};
+ base2=fullcircle scaled 5mm;
+ base3=unitsquare xscaled \useKV[ArbreCalcul]{LargeurC} yscaled \useKV[ArbreCalcul]{Hauteur};
+
+ vardef BlocCalcul(expr Ba,Bb,op,cha,chb)=%
+ % Ba point gauche
+ % Bb point droite
+ % op opération à afficher
+ etape:=etape+1;
+ save $;
+ picture $;
+ path cc[];
+ pair Bc;
+ Bc=(0.5*(xpart(Ba)+xpart(Bb)),if ypart(Bb)<ypart(Ba):ypart(Bb) else:ypart(Ba) fi -0.75u);
+ pointprec:=Bc+u*(0,-1.25);
+ $=image(
+ if Allume[numeropoint-1]=true:
+ cc1=base3 shifted (Ba-center base3);
+ else:
+ cc1=base1 shifted (Ba-center base1);
+ fi;
+ if Allume[numeropoint]=true:
+ cc2=base3 shifted (Bb-center base3);
+ else:
+ cc2=base1 shifted (Bb-center base1);
+ fi;
+ cc3=(fullcircle scaled 5mm) shifted Bc;
+ cc4=base3 shifted (pointprec-center base3);
+ if op="mul":
+ label(TEX("$\times$\MulFraction[Seul][3]{"&cha&"}{"&chb&"}[\ResultatMul]"),Bc);
+ ValeurPile[numeropoint-1]:="\ResultatMul";
+ elseif op="add":
+ label(TEX("$+$\AddFraction[Seul][3]{"&cha&"}{"&chb&"}[\ResultatAdd]"),Bc);
+ ValeurPile[numeropoint-1]:="\ResultatAdd";
+ elseif op="sub":
+ label(TEX("$\_$\SousFraction[Seul][3]{"&cha&"}{"&chb&"}[\ResultatSous]"),Bc);
+ ValeurPile[numeropoint-1]:="\ResultatSous";
+ elseif op="div":
+ label(TEX("$\div$\DivFraction[Seul][3]{"&cha&"}{"&chb&"}[\ResultatDiv]"),Bc);
+ ValeurPile[numeropoint-1]:="\ResultatDiv";
+ fi;
+ if Correction:
+ if etape<Etape+1:
+ fill cc4 withcolor Evidence;
+ label(TEX("$\displaystyle\tofrac{"&ValeurPile[numeropoint-1]&"}$"),pointprec);
+ fi;
+ fi;
+ for l=1 upto 4:
+ trace cc[l];
+ endfor;
+ draw (Ba--Bc) cutbefore cc1 cutafter cc3;
+ draw (Bb--Bc) cutbefore cc2 cutafter cc3;
+ draw (Bc--pointprec) cutbefore cc3 cutafter cc4;
+ );
+ $
+ enddef;
+
+ numeric Valeurs[];
+ string Valeursa[];
+
+ string Operations[];
+
+ numeric numeropoint;
+ numeropoint=0;
+
+ string ValeurPile[];
+
+ vardef RecupDonnees(text t)=
+ n:=0;
+ for p_=t:
+ n:=n+1;
+ if numeric p_:
+ Valeurs[n]=p_;
+ Operations[n]="";
+ else:
+ Valeurs[n]=infinity;
+ Operations[n]=p_;
+ fi;
+ endfor;
+ n:=n+1;
+ Operations[n]="stop";
+ nbtotal=n;
+ for k=1 upto nbtotal:
+ ValeurPile[k]="0";
+ endfor;
+ enddef;
+
+ vardef RecupFractions(text t)=
+ n:=0;
+ for p_=t:
+ n:=n+1;
+ Valeursa[n]=p_;
+ endfor;
+ enddef;
+
+ pair A[];
+ ecart=\useKV[ArbreCalcul]{Ecart};
+
+ RecupDonnees(#1);
+ RecupFractions(#2);
+
+ etape=0;
+ Etape=\useKV[ArbreCalcul]{Etape};
+
+ A[0]=(0,0);
+ k=0;
+ nbetape:=0;
+
+ for p_=#1:
+ k:=k+1;
+ if numeric p_:
+ numeropoint:=numeropoint+1;
+ if unknown A[numeropoint]:A[numeropoint]-A[numeropoint-1]=ecart*(1,0);Allume[numeropoint]=false; else:
+ A[numeropoint]:=A[numeropoint-1]+ecart*(1,0); Allume[numeropoint]:=false;
+ fi;
+ if Valeurs[k]=0:Valeursa[Valeurs[k]]:=\useKV[ArbreCalcul]{Fraction} fi;
+ if Operations[k+1]="neg":
+ if Valeurs[k]=0:fill (base1 shifted (A[numeropoint]-center base1)) withcolor CoulDepart;
+ label(TEX("$\displaystyle\tofrac{"&-Valeursa[Valeurs[k]]&"}$"),A[numeropoint]);
+ else:
+ label(TEX("$\displaystyle\tofrac{"&-Valeursa[Valeurs[k]]&"}$"),A[numeropoint]);
+ fi;
+ ValeurPile[numeropoint]:=decimal(-Valeursa[Valeurs[k]]);
+ else:
+ if Valeurs[k]=0:fill (base1 shifted (A[numeropoint]-center base1)) withcolor CoulDepart;
+ label(TEX("$\displaystyle\tofrac{"&Valeursa[Valeurs[k]]&"}$"),A[numeropoint]);
+ else:
+ label(TEX("$\displaystyle\tofrac{"&Valeursa[Valeurs[k]]&"}$"),A[numeropoint]);
+ fi;
+ ValeurPile[numeropoint]:=Valeursa[Valeurs[k]];
+ fi;
+ elseif string p_:
+ if p_<>"neg":
+ trace BlocCalcul(A[numeropoint-1],A[numeropoint],Operations[k],ValeurPile[numeropoint-1],ValeurPile[numeropoint]);
+ A[numeropoint-1]:=pointprec;
+ Allume[numeropoint-1]:=true;
+ numeropoint:=numeropoint-1;
+ fi;
+ fi;
+ endfor;
+ \end{mplibcode}
+ \fi
+}%
+
+\NewDocumentCommand\BuildArbreCalculLitteral{mmm}{%
+ \ifluatex
+ \mplibforcehmode
+ \begin{mplibcode}
+ boolean Correction,Allume[];
+ Correction=\useKV[ArbreCalcul]{Correction};
+
+ color Evidence,CoulDepart;
+ Evidence=\useKV[ArbreCalcul]{Couleur};
+ CoulDepart=\useKV[ArbreCalcul]{CouleurDepart};
+
+ pair pointprec;
+
+ path base[];
+ base1=unitsquare xscaled \useKV[ArbreCalcul]{Largeur} yscaled \useKV[ArbreCalcul]{Hauteur};
+ base2=fullcircle scaled 5mm;
+ base3=unitsquare xscaled \useKV[ArbreCalcul]{LargeurC} yscaled \useKV[ArbreCalcul]{Hauteur};
+
+ vardef BlocCalcul(expr Ba,Bb,op,cha,chb)=%
+ % Ba point gauche
+ % Bb point droite
+ % op opération à afficher
+ etape:=etape+1;
+ save $;
+ picture $;
+ path cc[];
+ pair Bc;
+ Bc=(0.5*(xpart(Ba)+xpart(Bb)),if ypart(Bb)<ypart(Ba):ypart(Bb) else:ypart(Ba) fi -0.75u);
+ pointprec:=Bc+u*(0,-1.25);
+ $=image(
+ if Allume[numeropoint-1]=true:
+ cc1=base3 shifted (Ba-center base3);
+ else:
+ cc1=base1 shifted (Ba-center base1);
+ fi;
+ if Allume[numeropoint]=true:
+ cc2=base3 shifted (Bb-center base3);
+ else:
+ cc2=base1 shifted (Bb-center base1);
+ fi;
+ cc3=(fullcircle scaled 5mm) shifted Bc;
+ cc4=base3 shifted (pointprec-center base3);
+ if op="mul":
+ label(TEX("$\times$"),Bc);
+ ValeurPile[numeropoint-1]:="";
+ elseif op="add":
+ label(TEX("$+$"),Bc);
+ ValeurPile[numeropoint-1]:="";
+ elseif op="sub":
+ label(TEX("$\_$"),Bc);
+ ValeurPile[numeropoint-1]:="";
+ elseif op="div":
+ label(TEX("$\div$"),Bc);
+ ValeurPile[numeropoint-1]:="";
+ fi;
+ if Correction:
+ if etape<Etape+1:
+ fill cc4 withcolor Evidence;
+ label(TEX("$"&Valeursc[etape]&"$"),pointprec);
+ fi;
+ fi;
+ for l=1 upto 4:
+ trace cc[l];
+ endfor;
+ draw (Ba--Bc) cutbefore cc1 cutafter cc3;
+ draw (Bb--Bc) cutbefore cc2 cutafter cc3;
+ draw (Bc--pointprec) cutbefore cc3 cutafter cc4;
+ );
+ $
+ enddef;
+
+ numeric Valeurs[];
+ string Valeursa[];
+ string Valeursc[];
+
+ string Operations[];
+
+ numeric numeropoint;
+ numeropoint=0;
+
+ string ValeurPile[];
+
+ vardef RecupDonnees(text t)=
+ n:=0;
+ for p_=t:
+ n:=n+1;
+ if numeric p_:
+ Valeurs[n]=p_;
+ Operations[n]="";
+ else:
+ Valeurs[n]=infinity;
+ Operations[n]=p_;
+ fi;
+ endfor;
+ n:=n+1;
+ Operations[n]="stop";
+ nbtotal=n;
+ for k=1 upto nbtotal:
+ ValeurPile[k]="0";
+ endfor;
+ enddef;
+
+ vardef RecupFractions(text t)=
+ n:=0;
+ for p_=t:
+ n:=n+1;
+ Valeursa[n]=p_;
+ endfor;
+ enddef;
+
+ vardef RecupCorrections(text t)=
+ n:=0;
+ for p_=t:
+ n:=n+1;
+ Valeursc[n]=p_;
+ endfor;
+ enddef;
+
+ pair A[];
+ ecart=\useKV[ArbreCalcul]{Ecart};
+
+ RecupDonnees(#1);
+ RecupFractions(#2);
+ RecupCorrections(#3);
+
+ etape=0;
+ Etape=\useKV[ArbreCalcul]{Etape};
+
+ A[0]=(0,0);
+ k=0;
+ nbetape:=0;
+
+ for p_=#1:
+ k:=k+1;
+ if numeric p_:
+ numeropoint:=numeropoint+1;
+ if unknown A[numeropoint]:A[numeropoint]-A[numeropoint-1]=ecart*(1,0);Allume[numeropoint]=false; else:
+ A[numeropoint]:=A[numeropoint-1]+ecart*(1,0); Allume[numeropoint]:=false;
+ fi;
+ if Valeurs[k]=0:Valeursa[Valeurs[k]]:=\useKV[ArbreCalcul]{Lettre} fi;
+ if Operations[k+1]="neg":
+ if Valeurs[k]=0:fill (base1 shifted (A[numeropoint]-center base1)) withcolor CoulDepart;
+ label(TEX("$"&-Valeursa[Valeurs[k]]&"$"),A[numeropoint]);
+ else:
+ label(TEX("$"&-Valeursa[Valeurs[k]]&"$"),A[numeropoint]);
+ fi;
+ ValeurPile[numeropoint]:=decimal(-Valeursa[Valeurs[k]]);
+ else:
+ if Valeurs[k]=0:fill (base1 shifted (A[numeropoint]-center base1)) withcolor CoulDepart;
+ label(TEX("$"&Valeursa[Valeurs[k]]&"$"),A[numeropoint]);
+ else:
+ label(TEX("$"&Valeursa[Valeurs[k]]&"$"),A[numeropoint]);
+ fi;
+ ValeurPile[numeropoint]:=Valeursa[Valeurs[k]];
+ fi;
+ elseif string p_:
+ if p_<>"neg":
+ trace BlocCalcul(A[numeropoint-1],A[numeropoint],Operations[k],ValeurPile[numeropoint-1],ValeurPile[numeropoint]);
+ A[numeropoint-1]:=pointprec;
+ Allume[numeropoint-1]:=true;
+ numeropoint:=numeropoint-1;
+ fi;
+ fi;
+ endfor;
+ \end{mplibcode}
+ \fi
+}% \ No newline at end of file
diff --git a/macros/latex/contrib/profcollege/latex/PfCCalculsFractions.tex b/macros/latex/contrib/profcollege/latex/PfCCalculsFractions.tex
index fdf037ef81..e3660cff1e 100644
--- a/macros/latex/contrib/profcollege/latex/PfCCalculsFractions.tex
+++ b/macros/latex/contrib/profcollege/latex/PfCCalculsFractions.tex
@@ -1,4 +1,4 @@
-\setKVdefault[CalculsFractions]{Couleurs=false,Negatif=false}%
+\setKVdefault[CalculsFractions]{Couleurs=false,Negatif=false,Seul=false}%
\defKV[CalculsFractions]{Couleur=\setKV[CalculsFractions]{Couleurs}\setKV[ClesSimplification]{Couleur=#1}}%
\NewDocumentCommand\tofrac{m}{%
@@ -50,7 +50,7 @@
\xdef\PfCNumD{1}%
}{%
\StrCut{#5}{/}\PfCNumC\PfCNumD%
- }
+ }%
\xdef\PfCAddFoo{\PfCNumA/\PfCNumB,\PfCNumC/\PfCNumD}%
\setsepchar[*]{,*/}\ignoreemptyitems%
\readlist*\ListeFractions{\PfCAddFoo}%
@@ -69,6 +69,7 @@
\xdef\PfCAddDenoSimp{\fpeval{\PfCAddDenoFin/\PfCAddPgcd}}%
\xdef\PfCAddSumSimp{\PfCAddNumSimp/\PfCAddDenoSimp}%
\IfValueT{#6}{\xdef#6{\PfCAddSumSimp}}%
+ \ifboolKV[CalculsFractions]{Seul}{}{%
% Partie affichage
\ensuremath{%
\IfValueTF{#3}{%
@@ -103,6 +104,7 @@
}{\tofrac{#4}\PfCFractionOp\tofrac{#5}
}%
}%
+ }%
}%
\NewDocumentCommand\SousFraction{oommo}{%
@@ -127,17 +129,18 @@
\xdef\PfCMulFoo{\PfCNumA/\PfCNumB,\PfCNumC/\PfCNumD}%
\setsepchar[*]{,*/}\ignoreemptyitems%
\readlist*\ListeFractions{\PfCMulFoo}%
- \reademptyitems
+ \reademptyitems%
\setsepchar{,}%
% Calculs
- \xdef\PfCMulNumFin{\fpeval{(\ListeFractions[1,1])*(\ListeFractions[2,1])}}
- \xdef\PfCMulDenoFin{\fpeval{\ListeFractions[1,2]*\ListeFractions[2,2]}}
+ \xdef\PfCMulNumFin{\fpeval{(\ListeFractions[1,1])*(\ListeFractions[2,1])}}%
+ \xdef\PfCMulDenoFin{\fpeval{\ListeFractions[1,2]*\ListeFractions[2,2]}}%
\PGCD{\fpeval{abs(\PfCMulNumFin)}}{\fpeval{abs(\PfCMulDenoFin)}}\xdef\PfCMulPgcd{\pgcd}%
\xdef\PfCMulNumSimp{\fpeval{\PfCMulNumFin/\PfCMulPgcd}}%
\xdef\PfCMulDenoSimp{\fpeval{\PfCMulDenoFin/\PfCMulPgcd}}%
\xdef\PfCMulPdtSimp{\PfCMulNumSimp/\PfCMulDenoSimp}%
\IfValueT{#5}{\xdef#5{\PfCMulPdtSimp}}%
- \ensuremath{%
+ \ifboolKV[CalculsFractions]{Seul}{}{%
+ \ensuremath{%
\IfValueTF{#2}{%
\ifnum#2=3\relax
\ifboolKV[CalculsFractions]{Negatif}{%
@@ -154,7 +157,8 @@
\fi
\fi
}{\tofrac{#3}\times\tofrac{#4}
- }
+ }%
+ }%
}%
}%
@@ -186,6 +190,7 @@
\xdef\PfCDivDenoSimp{\fpeval{\PfCDivDenoFin/\PfCDivPgcd}}%
\xdef\PfCDivPdtSimp{\PfCDivNumSimp/\PfCDivDenoSimp}%
\IfValueT{#5}{\xdef#5{\PfCDivPdtSimp}}%
+ \ifboolKV[CalculsFractions]{Seul}{}{%
\ensuremath{%
\IfValueTF{#2}{%
\ifnum#2=4\relax
@@ -207,4 +212,5 @@
}{\tofrac{#3}\div\tofrac{#4}
}
}%
+ }%
}% \ No newline at end of file
diff --git a/macros/latex/contrib/profcollege/latex/PfCCartographie.tex b/macros/latex/contrib/profcollege/latex/PfCCartographie.tex
index 2b5ef28fbc..e23001bbcc 100644
--- a/macros/latex/contrib/profcollege/latex/PfCCartographie.tex
+++ b/macros/latex/contrib/profcollege/latex/PfCCartographie.tex
@@ -1,7 +1,7 @@
%%%
% Cartographie
%%%
-\setKVdefault[Cartographie]{Echelle=1,Carte=false,All=false,Europe=false,Asie=false,Amsud=false,Amnord=false,Amcentre=false,Caraibes=false,Afrique=false,AfficheEchelle=false,PaysSeul=false,VillesSup=false,VillesSupI=false,Capitales=false,Impression=false,Fleuves=false,CouleurFond=ciel,Largeur=12,Hauteur=12,Arborescence="/usr/local/texlive/2023/texmf-dist/metapost/profcollege/",Projection=false,TypeProjection="mercator",CouleurPays=Cornsilk,Pasl=2,PasL=2,Codes=false,Epaisseur=2,ModeleCouleur=5,Boussole=false,Allegee=1}
+\setKVdefault[Cartographie]{Echelle=1,Carte=false,All=false,Europe=false,Asie=false,Amsud=false,Amnord=false,Amcentre=false,Caraibes=false,Afrique=false,AfficheEchelle=false,PaysSeul=false,VillesSup=false,VillesSupI=false,Capitales=false,Impression=false,Fleuves=false,CouleurFond=ciel,Largeur=12,Hauteur=12,Arborescence="/usr/local/texlive/2023/texmf-dist/metapost/profcollege/",Projection=false,TypeProjection="mercator",CouleurPays=Cornsilk,Pasl=2,PasL=2,Codes=false,Epaisseur=2,ModeleCouleur=5,Boussole=false,Allegee=1,Maillage=false}
\defKV[Cartographie]{EchelleCarte=\setKV[Cartographie]{Carte}}
\defKV[Cartographie]{Pays=\setKV[Cartographie]{PaysSeul}}
\defKV[Cartographie]{Villes=\setKV[Cartographie]{VillesSup}}
@@ -13,8 +13,8 @@
\useKVdefault[Cartographie]%
\setKV[Cartographie]{#1}%
\mplibforcehmode%
+ \mplibnumbersystem{double}%
\ifboolKV[Cartographie]{Projection}{%
- \mplibnumbersystem{double}%
\begin{mplibcode}
input PfCMonde;
string arborescence;
@@ -217,9 +217,8 @@
Villes(\useKV[Cartographie]{VillesI});
fi;
\end{mplibcode}
- \mplibnumbersystem{scaled}%
}{%
-% \mplibforcehmode
+ % \mplibforcehmode
\begin{mplibcode}
input PfCMonde;
@@ -253,9 +252,11 @@
fi;
else:
couleurfond:=\useKV[Cartographie]{CouleurFond};
+ color couleurimpression;
+ couleurimpression:=Cornsilk;
if Impression:
noncolore:=true;
- payscolor:=0.85white;
+ payscolor:=couleurimpression;%0.85white
couleurfond:=white;
couleurfleuve:=couleurfond;
fi;
@@ -314,8 +315,7 @@
elseif t=8:lrt
fi
enddef;
-
-
+
if Carte:
Echelle:=\useKV[Cartographie]{AfficheEchelle};
figure(-0.5u*LargeurCadre,-0.5u*HauteurCadre,0.5u*LargeurCadre,0.5u*HauteurCadre);
@@ -365,11 +365,53 @@
fi;
else:
- draw(0,0)--(50,50);
- mappemonde(#2,#3);
+ boolean maillagecoord;
+ maillagecoord=\useKV[Cartographie]{Maillage};
+ if VillesSupI:
+ lacs:=false;
+ fi;
+
+ mappemonde(#2,#3);
+
+ vardef Villes(text t)=
+ pair CoordVille;
+ string NomVille;
+ n:=0;
+ for p_:=t:
+ n:=n+1;
+ if n=1:
+ %nblec:=p;
+ else:
+ if pair p_:
+ CoordVille:=Projgeo(rayon*(cosd(ypart(p_))*cosd(xpart(p_)),cosd(ypart(p_))*sind(xpart(p_)),sind(ypart(p_))));
+ elseif string p_:
+ NomVille:=p_;
+ else:
+ marque_p:="croix";
+ pointe(CoordVille);
+ label.position(p_)(TEX(""&NomVille&""),CoordVille);
+ fi;
+ fi;
+ endfor;
+ drawoptions();
+ enddef;
+
+
+ if Codes:
+ \useKV[Cartographie]{Traces};
+ fi;
+ if VillesSupI:
+ Villes(\useKV[Cartographie]{VillesI});
+ label.ulft(TEX("\tiny\ang{0}"),Projgeo(rayon*(1,0,0)));
+ label.ulft(TEX("\tiny\ang{10}"),Projgeo(rayon*(cosd(10),0,sind(10))));
+ fill (fullcircle scaled 0.75mm) shifted Projgeo(rayon*(cosd(10),0,sind(10)));
+ label.llft(TEX("\tiny\ang{10}"),Projgeo(rayon*(cosd(10),sind(10),0)));
+ fill (fullcircle scaled 0.75mm) shifted Projgeo(rayon*(cosd(10),sind(10),0));
+ fi;
fi;
\end{mplibcode}
}
+ \mplibnumbersystem{scaled}%
\else
\PackageWarning{ProfCollege}{"La commande Cartographie n'est compatible qu'avec LuaLaTeX."}
\fi
diff --git a/macros/latex/contrib/profcollege/latex/PfCEcrireunQCM.tex b/macros/latex/contrib/profcollege/latex/PfCEcrireunQCM.tex
index 6fc7a94593..f39b93ea46 100644
--- a/macros/latex/contrib/profcollege/latex/PfCEcrireunQCM.tex
+++ b/macros/latex/contrib/profcollege/latex/PfCEcrireunQCM.tex
@@ -1,7 +1,7 @@
%%%
% QCM
%%%
-\setKVdefault[ClesQCM]{Reponses=3,Solution=false,Stretch=1,Largeur=60pt,Couleur=gray!15,Titre=false,Nom=R\'eponse,NomV=Vrai,NomF=Faux,Alph=false,AlphT=false,VF=false,Depart=1,Alterne=false,Noms={A/B/C},Multiple=false,Parties={Yeux,Nez,Bouche},CouleurAlt=gray!15,Seul=false}%
+\setKVdefault[ClesQCM]{Reponses=3,Solution=false,Stretch=1,Largeur=60pt,Couleur=gray!15,Titre=false,Nom=R\'eponse,NomV=Vrai,NomF=Faux,Alph=false,AlphT=false,VF=false,Depart=1,Alterne=false,Noms={A/B/C},Multiple=false,Parties={Yeux,Nez,Bouche},CouleurAlt=gray!15,Seul=false,ACompleter=false}%
\newlength{\LargeurQCM}%
\newlength{\PfCLargeurQCM}%
\newcounter{QuestionQCM}%
@@ -12,6 +12,8 @@
\setcounter{TotalQCMSeul}{0}%
\setcounter{TotalQCMSeulSol}{0}%
%
+\def\PfCTexteReponseEleve{Ma réponse}%
+%
\setKVdefault[QCMSeul]{Melange=false,Solution=false,EnColonne=false,LabelLettre=false}%
\defKV[QCMSeul]{Colonnes=\setKV[QCMSeul]{EnColonne}}%
%
@@ -90,150 +92,162 @@
%
\ifdef{\QCM}{%
\PackageWarning{ProfCollege}{La commande \noexpand\QCM étant définie par la classe du document, ProfCollege modifie sa commande \noexpand\QCM en \noexpand\QCMPfC.}%
- \newcommand\QCMPfC[2][]{%
- \useKVdefault[ClesQCM]%
- \setKV[ClesQCM]{#1}%
- \ifboolKV[ClesQCM]{Seul}{%
- \QCMSeul[#1]{#2}%
+\newcommand\QCMPfC[2][]{%
+ \useKVdefault[ClesQCM]%
+ \setKV[ClesQCM]{#1}%
+ \ifboolKV[ClesQCM]{Seul}{%
+ \QCMSeul[#1]{#2}%
+ }{%
+ \colorlet{PfCCouleurAlterneQCM}{\useKV[ClesQCM]{CouleurAlt}}%
+ \setcounter{QuestionQCM}{\fpeval{\useKV[ClesQCM]{Depart}-1}}%
+ \setcounter{TitreQCM}{0}
+ \setsepchar[*]{,*&}\ignoreemptyitems%
+ \readlist*\ListeQCM{#2}%
+ \renewcommand{\arraystretch}{\useKV[ClesQCM]{Stretch}}%
+ \xdef\NBcases{\fpeval{\useKV[ClesQCM]{Reponses}+1}}%
+ \ifboolKV[ClesQCM]{Multiple}{%
+ \setlength{\LargeurQCM}{\fpeval{(\linewidth-\useKV[ClesQCM]{Reponses}*(3*\tabcolsep+\useKV[ClesQCM]{Largeur}))}pt}%
+ \xdef\ListeNom{\useKV[ClesQCM]{Noms}}%
+ \setsepchar[*]{/}%
+ \readlist*\ListeNomsMul{\ListeNom}%
+ \begin{tabular}{|p{\LargeurQCM}|*{\useKV[ClesQCM]{Reponses}}{>{\centering\arraybackslash}p{\useKV[ClesQCM]{Largeur}}|}}%
+ \cline{2-\NBcases}%
+ \multicolumn{1}{c|}{}\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
+ &\ListeNomsMul[##2]}%
+ \\
+ \hline%
+ \xintFor* ##1 in {\xintSeq {1}{\ListeQCMlen}}\do{%
+ \stepcounter{QuestionQCM}\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Alph}{\textbf{\Alph{QuestionQCM}}/}{\textbf{\theQuestionQCM/}}~\ListeQCM[##1,1]\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
+ &\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Solution}{\xintifboolexpr{\ListeQCM[##1,\fpeval{##2+1}]==1}{$\boxtimes$}{$\square$}}{$\square$}%
+ }\\
+ }%
+ \hline%
+ \end{tabular}%
+ \renewcommand{\arraystretch}{1}%
}{%
- \colorlet{PfCCouleurAlterneQCM}{\useKV[ClesQCM]{CouleurAlt}}%
- \setcounter{QuestionQCM}{\fpeval{\useKV[ClesQCM]{Depart}-1}}%
- \setcounter{TitreQCM}{0}
- \setsepchar[*]{,*&}\ignoreemptyitems%
- \readlist*\ListeQCM{#2}%
- \renewcommand{\arraystretch}{\useKV[ClesQCM]{Stretch}}%
- \xdef\NBcases{\fpeval{\useKV[ClesQCM]{Reponses}+1}}%
- \ifboolKV[ClesQCM]{Multiple}{%
- \setlength{\LargeurQCM}{\fpeval{(\linewidth-\useKV[ClesQCM]{Reponses}*(3*\tabcolsep+\useKV[ClesQCM]{Largeur}))}pt}%
- \xdef\ListeNom{\useKV[ClesQCM]{Noms}}%
- \setsepchar[*]{/}%
- \readlist*\ListeNomsMul{\ListeNom}%
+ \ifboolKV[ClesQCM]{VF}{%
+ \setKV[ClesQCM]{Reponses=2}%
+ \setlength{\PfCLargeurQCM}{\useKV[ClesQCM]{Largeur}}%
+ \setlength{\LargeurQCM}{\linewidth-6\tabcolsep-2\PfCLargeurQCM-4\arrayrulewidth}%
+ \xdef\NBcases{\fpeval{\useKV[ClesQCM]{Reponses}+1}}%
\begin{tabular}{|p{\LargeurQCM}|*{\useKV[ClesQCM]{Reponses}}{>{\centering\arraybackslash}p{\useKV[ClesQCM]{Largeur}}|}}%
\cline{2-\NBcases}%
- \multicolumn{1}{c|}{}\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
- &\ListeNomsMul[##2]}%
- \\
+ \multicolumn{1}{c|}{}&\useKV[ClesQCM]{NomV}&\useKV[ClesQCM]{NomF}\\
\hline%
\xintFor* ##1 in {\xintSeq {1}{\ListeQCMlen}}\do{%
\stepcounter{QuestionQCM}\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Alph}{\textbf{\Alph{QuestionQCM}}/}{\textbf{\theQuestionQCM/}}~\ListeQCM[##1,1]\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
- &\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Solution}{\xintifboolexpr{\ListeQCM[##1,\fpeval{##2+1}]==1}{$\boxtimes$}{$\square$}}{$\square$}%
- }\\
+ &\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Solution}{\xintifboolexpr{##2==\ListeQCM[##1,2]}{$\boxtimes$}{$\square$}}{$\square$}%
+ }\\
}%
\hline%
- \end{tabular}%
- \renewcommand{\arraystretch}{1}%
+ \end{tabular}
}{%
- \ifboolKV[ClesQCM]{VF}{%
- \setKV[ClesQCM]{Reponses=2}%
- % \renewcommand{\arraystretch}{\useKV[ClesQCM]{Stretch}}%
- \setlength{\PfCLargeurQCM}{\useKV[ClesQCM]{Largeur}}%
- \setlength{\LargeurQCM}{\linewidth-6\tabcolsep-2\PfCLargeurQCM-4\arrayrulewidth}%
- \xdef\NBcases{\fpeval{\useKV[ClesQCM]{Reponses}+1}}%
- \begin{tabular}{|p{\LargeurQCM}|*{\useKV[ClesQCM]{Reponses}}{>{\centering\arraybackslash}p{\useKV[ClesQCM]{Largeur}}|}}%
- \cline{2-\NBcases}%
- \multicolumn{1}{c|}{}&\useKV[ClesQCM]{NomV}&\useKV[ClesQCM]{NomF}\\
- \hline%
- \xintFor* ##1 in {\xintSeq {1}{\ListeQCMlen}}\do{%
- \stepcounter{QuestionQCM}\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Alph}{\textbf{\Alph{QuestionQCM}}/}{\textbf{\theQuestionQCM/}}~\ListeQCM[##1,1]\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
- &\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Solution}{\xintifboolexpr{##2==\ListeQCM[##1,2]}{$\boxtimes$}{$\square$}}{$\square$}%
- }\\
- }%
- \hline%
- \end{tabular}
+ \ifboolKV[ClesQCM]{ACompleter}{%
+ \xdef\PfCTotalCases{\fpeval{\useKV[ClesQCM]{Reponses}+1}}%
}{%
- \setlength{\LargeurQCM}{\fpeval{(\linewidth-2*\tabcolsep-\useKV[ClesQCM]{Reponses}*(2*\tabcolsep+\useKV[ClesQCM]{Largeur}))}pt}%
- \begin{tabular}{|p{\LargeurQCM}|*{\useKV[ClesQCM]{Reponses}}{>{\centering\arraybackslash}p{\useKV[ClesQCM]{Largeur}}|}}%
- \ifboolKV[ClesQCM]{Titre}{\cline{2-\NBcases}%
- \multicolumn{1}{c|}{}\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
- &\stepcounter{TitreQCM}\useKV[ClesQCM]{Nom} \ifboolKV[ClesQCM]{AlphT}{\Alph{TitreQCM}}{##2}}%
- \\
- }{}
- \hline%
- \xintFor* ##1 in {\xintSeq {1}{\ListeQCMlen}}\do{%
- \stepcounter{QuestionQCM}\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Alph}{\textbf{\Alph{QuestionQCM}}/}{\textbf{\theQuestionQCM/}}~\ListeQCM[##1,1]\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
- &\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Solution}{\PfCSolCellColor{##1}{##2}}{}\ListeQCM[##1,##2+1]%
- }\\
- }%
- \hline%
- \end{tabular}%
+ \xdef\PfCTotalCases{\useKV[ClesQCM]{Reponses}}%
}%
+ \setlength{\LargeurQCM}{\fpeval{(\linewidth-2*\tabcolsep-\PfCTotalCases*(2*\tabcolsep+\useKV[ClesQCM]{Largeur}))}pt}%
+ \xdef\NumeroReponse{\fpeval{\useKV[ClesQCM]{Reponses}+2}}%
+ \begin{tabular}{|p{\LargeurQCM}|*{\PfCTotalCases}{>{\centering\arraybackslash}p{\useKV[ClesQCM]{Largeur}}|}}%
+ % \ifboolKV[ClesQCM]{Titre}{\cline{2-\NBcases}%
+ \ifboolKV[ClesQCM]{Titre}{\cline{2-\fpeval{\PfCTotalCases+1}}%
+ \multicolumn{1}{c|}{}\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
+ &\stepcounter{TitreQCM}\useKV[ClesQCM]{Nom} \ifboolKV[ClesQCM]{AlphT}{\Alph{TitreQCM}}{##2}}\ifnum\fpeval{\PfCTotalCases-\useKV[ClesQCM]{Reponses}}>0\relax\uppercase{&}\PfCTexteReponseEleve\fi%
+ \\
+ }{}%
+ \hline%
+ \xintFor* ##1 in {\xintSeq {1}{\ListeQCMlen}}\do{%
+ \stepcounter{QuestionQCM}\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Alph}{\textbf{\Alph{QuestionQCM}}/}{\textbf{\theQuestionQCM/}}~\ListeQCM[##1,1]\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
+ &\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Solution}{\PfCSolCellColor{##1}{##2}}{}\ListeQCM[##1,\fpeval{##2+1}]
+ }\ifnum\fpeval{\PfCTotalCases-\useKV[ClesQCM]{Reponses}}>0\relax\uppercase{&}\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\fi\\
+ }%
+ \hline%
+ \end{tabular}%
}%
- \renewcommand{\arraystretch}{1}%
}%
+ \renewcommand{\arraystretch}{1}%
}%
+}%
}{%
- \newcommand\QCM[2][]{%
- \useKVdefault[ClesQCM]%
- \setKV[ClesQCM]{#1}%
- \ifboolKV[ClesQCM]{Seul}{%
- \QCMSeul[#1]{#2}%
+\newcommand\QCM[2][]{%
+ \useKVdefault[ClesQCM]%
+ \setKV[ClesQCM]{#1}%
+ \ifboolKV[ClesQCM]{Seul}{%
+ \QCMSeul[#1]{#2}%
+ }{%
+ \colorlet{PfCCouleurAlterneQCM}{\useKV[ClesQCM]{CouleurAlt}}%
+ \setcounter{QuestionQCM}{\fpeval{\useKV[ClesQCM]{Depart}-1}}%
+ \setcounter{TitreQCM}{0}
+ \setsepchar[*]{,*&}\ignoreemptyitems%
+ \readlist*\ListeQCM{#2}%
+ \renewcommand{\arraystretch}{\useKV[ClesQCM]{Stretch}}%
+ \xdef\NBcases{\fpeval{\useKV[ClesQCM]{Reponses}+1}}%
+ \ifboolKV[ClesQCM]{Multiple}{%
+ \setlength{\LargeurQCM}{\fpeval{(\linewidth-\useKV[ClesQCM]{Reponses}*(3*\tabcolsep+\useKV[ClesQCM]{Largeur}))}pt}%
+ \xdef\ListeNom{\useKV[ClesQCM]{Noms}}%
+ \setsepchar[*]{/}%
+ \readlist*\ListeNomsMul{\ListeNom}%
+ \begin{tabular}{|p{\LargeurQCM}|*{\useKV[ClesQCM]{Reponses}}{>{\centering\arraybackslash}p{\useKV[ClesQCM]{Largeur}}|}}%
+ \cline{2-\NBcases}%
+ \multicolumn{1}{c|}{}\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
+ &\ListeNomsMul[##2]}%
+ \\
+ \hline%
+ \xintFor* ##1 in {\xintSeq {1}{\ListeQCMlen}}\do{%
+ \stepcounter{QuestionQCM}\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Alph}{\textbf{\Alph{QuestionQCM}}/}{\textbf{\theQuestionQCM/}}~\ListeQCM[##1,1]\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
+ &\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Solution}{\xintifboolexpr{\ListeQCM[##1,\fpeval{##2+1}]==1}{$\boxtimes$}{$\square$}}{$\square$}%
+ }\\
+ }%
+ \hline%
+ \end{tabular}%
+ \renewcommand{\arraystretch}{1}%
}{%
- \colorlet{PfCCouleurAlterneQCM}{\useKV[ClesQCM]{CouleurAlt}}%
- \setcounter{QuestionQCM}{\fpeval{\useKV[ClesQCM]{Depart}-1}}%
- \setcounter{TitreQCM}{0}
- \setsepchar[*]{,*&}\ignoreemptyitems%
- \readlist*\ListeQCM{#2}%
- \renewcommand{\arraystretch}{\useKV[ClesQCM]{Stretch}}%
- \xdef\NBcases{\fpeval{\useKV[ClesQCM]{Reponses}+1}}%
- \ifboolKV[ClesQCM]{Multiple}{%
- \setlength{\LargeurQCM}{\fpeval{(\linewidth-\useKV[ClesQCM]{Reponses}*(3*\tabcolsep+\useKV[ClesQCM]{Largeur}))}pt}%
- \xdef\ListeNom{\useKV[ClesQCM]{Noms}}%
- \setsepchar[*]{/}%
- \readlist*\ListeNomsMul{\ListeNom}%
+ \ifboolKV[ClesQCM]{VF}{%
+ \setKV[ClesQCM]{Reponses=2}%
+ \setlength{\PfCLargeurQCM}{\useKV[ClesQCM]{Largeur}}%
+ \setlength{\LargeurQCM}{\linewidth-6\tabcolsep-2\PfCLargeurQCM-4\arrayrulewidth}%
+ \xdef\NBcases{\fpeval{\useKV[ClesQCM]{Reponses}+1}}%
\begin{tabular}{|p{\LargeurQCM}|*{\useKV[ClesQCM]{Reponses}}{>{\centering\arraybackslash}p{\useKV[ClesQCM]{Largeur}}|}}%
\cline{2-\NBcases}%
- \multicolumn{1}{c|}{}\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
- &\ListeNomsMul[##2]}%
- \\
+ \multicolumn{1}{c|}{}&\useKV[ClesQCM]{NomV}&\useKV[ClesQCM]{NomF}\\
\hline%
\xintFor* ##1 in {\xintSeq {1}{\ListeQCMlen}}\do{%
\stepcounter{QuestionQCM}\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Alph}{\textbf{\Alph{QuestionQCM}}/}{\textbf{\theQuestionQCM/}}~\ListeQCM[##1,1]\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
- &\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Solution}{\xintifboolexpr{\ListeQCM[##1,\fpeval{##2+1}]==1}{$\boxtimes$}{$\square$}}{$\square$}%
- }\\
+ &\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Solution}{\xintifboolexpr{##2==\ListeQCM[##1,2]}{$\boxtimes$}{$\square$}}{$\square$}%
+ }\\
}%
\hline%
- \end{tabular}%
- \renewcommand{\arraystretch}{1}%
+ \end{tabular}
}{%
- \ifboolKV[ClesQCM]{VF}{%
- \setKV[ClesQCM]{Reponses=2}%
- \setlength{\PfCLargeurQCM}{\useKV[ClesQCM]{Largeur}}%
- \setlength{\LargeurQCM}{\linewidth-6\tabcolsep-2\PfCLargeurQCM-4\arrayrulewidth}%
- \xdef\NBcases{\fpeval{\useKV[ClesQCM]{Reponses}+1}}%
- \begin{tabular}{|p{\LargeurQCM}|*{\useKV[ClesQCM]{Reponses}}{>{\centering\arraybackslash}p{\useKV[ClesQCM]{Largeur}}|}}%
- \cline{2-\NBcases}%
- \multicolumn{1}{c|}{}&\useKV[ClesQCM]{NomV}&\useKV[ClesQCM]{NomF}\\
- \hline%
- \xintFor* ##1 in {\xintSeq {1}{\ListeQCMlen}}\do{%
- \stepcounter{QuestionQCM}\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Alph}{\textbf{\Alph{QuestionQCM}}/}{\textbf{\theQuestionQCM/}}~\ListeQCM[##1,1]\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
- &\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Solution}{\xintifboolexpr{##2==\ListeQCM[##1,2]}{$\boxtimes$}{$\square$}}{$\square$}%
- }\\
- }%
- \hline%
- \end{tabular}
+ \ifboolKV[ClesQCM]{ACompleter}{%
+ \xdef\PfCTotalCases{\fpeval{\useKV[ClesQCM]{Reponses}+1}}%
}{%
- \setlength{\LargeurQCM}{\fpeval{(\linewidth-2*\tabcolsep-\useKV[ClesQCM]{Reponses}*(2*\tabcolsep+\useKV[ClesQCM]{Largeur}))}pt}%
- \xdef\NumeroReponse{\fpeval{\useKV[ClesQCM]{Reponses}+2}}%
- \begin{tabular}{|p{\LargeurQCM}|*{\useKV[ClesQCM]{Reponses}}{>{\centering\arraybackslash}p{\useKV[ClesQCM]{Largeur}}|}}%
- \ifboolKV[ClesQCM]{Titre}{\cline{2-\NBcases}%
- \multicolumn{1}{c|}{}\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
- &\stepcounter{TitreQCM}\useKV[ClesQCM]{Nom} \ifboolKV[ClesQCM]{AlphT}{\Alph{TitreQCM}}{##2}}%
- \\
- }{}%
- \hline%
- \xintFor* ##1 in {\xintSeq {1}{\ListeQCMlen}}\do{%
- \stepcounter{QuestionQCM}\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Alph}{\textbf{\Alph{QuestionQCM}}/}{\textbf{\theQuestionQCM/}}~\ListeQCM[##1,1]\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
- &\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Solution}{\PfCSolCellColor{##1}{##2}}{}\ListeQCM[##1,\fpeval{##2+1}]%
- }\\
- }%
- \hline%
- \end{tabular}%
+ \xdef\PfCTotalCases{\useKV[ClesQCM]{Reponses}}%
}%
+ \setlength{\LargeurQCM}{\fpeval{(\linewidth-2*\tabcolsep-\PfCTotalCases*(2*\tabcolsep+\useKV[ClesQCM]{Largeur}))}pt}%
+ \xdef\NumeroReponse{\fpeval{\useKV[ClesQCM]{Reponses}+2}}%
+ \begin{tabular}{|p{\LargeurQCM}|*{\PfCTotalCases}{>{\centering\arraybackslash}p{\useKV[ClesQCM]{Largeur}}|}}%
+ % \ifboolKV[ClesQCM]{Titre}{\cline{2-\NBcases}%
+ \ifboolKV[ClesQCM]{Titre}{\cline{2-\fpeval{\PfCTotalCases+1}}%
+ \multicolumn{1}{c|}{}\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
+ &\stepcounter{TitreQCM}\useKV[ClesQCM]{Nom} \ifboolKV[ClesQCM]{AlphT}{\Alph{TitreQCM}}{##2}}\ifnum\fpeval{\PfCTotalCases-\useKV[ClesQCM]{Reponses}}>0\relax\uppercase{&}\PfCTexteReponseEleve\fi%
+ \\
+ }{}%
+ \hline%
+ \xintFor* ##1 in {\xintSeq {1}{\ListeQCMlen}}\do{%
+ \stepcounter{QuestionQCM}\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Alph}{\textbf{\Alph{QuestionQCM}}/}{\textbf{\theQuestionQCM/}}~\ListeQCM[##1,1]\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
+ &\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Solution}{\PfCSolCellColor{##1}{##2}}{}\ListeQCM[##1,\fpeval{##2+1}]
+ }\ifnum\fpeval{\PfCTotalCases-\useKV[ClesQCM]{Reponses}}>0\relax\uppercase{&}\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\fi\\
+ }%
+ \hline%
+ \end{tabular}%
}%
- \renewcommand{\arraystretch}{1}%
}%
+ \renewcommand{\arraystretch}{1}%
}%
}%
+}%
\NewDocumentCommand\PfCSolCellColor{mm}{%
\xdef\PfCFooSolColor{\ListeQCM[#1,\NumeroReponse]}%
diff --git a/macros/latex/contrib/profcollege/latex/PfCEngrenagesBase.tex b/macros/latex/contrib/profcollege/latex/PfCEngrenagesBase.tex
index df5743e439..fc1674d37f 100644
--- a/macros/latex/contrib/profcollege/latex/PfCEngrenagesBase.tex
+++ b/macros/latex/contrib/profcollege/latex/PfCEngrenagesBase.tex
@@ -4,25 +4,27 @@
\newtoks\tokPfCEngrenages%
\def\UpdatetoksEngrenages#1/#2\nil{\addtotok\tokPfCEngrenages{#1,#2,}}%
-\setKVdefault[Engrenages]{Couleur=LightSteelBlue,Unite=3mm,ListeCouleurs={LightSteelBlue}}
+\setKVdefault[Engrenages]{Couleur=LightSteelBlue,Unite=3mm,ListeCouleurs={?}}%
+%\defKV[Engrenages]{Couleur=\setKV[Engrenages]{ListeCouleurs=#1}}%
\NewDocumentCommand\Engrenages{o m}{%
\newtoks\toklistecouleur%
\toklistecouleur{}%
- \tokPfCEngrenages{}
+ \tokPfCEngrenages{}%
\useKVdefault[Engrenages]%
\setKV[Engrenages]{#1}%
\setsepchar[*]{,*/}%
\ignoreemptyitems
\readlist*\ListePfCEngrenages{#2}%
- \setsepchar{,}
- \xdef\PfCFooEngrenages{}
+ \setsepchar{,}%
+ \xdef\PfCFooEngrenages{}%
\foreachitem\compteur\in\ListePfCEngrenages{%
\xdef\PfCFooEngrenages{\PfCFooEngrenages \ListePfCEngrenages[\compteurcnt,1],\ListePfCEngrenages[\compteurcnt,2],}%
}%
\xdef\ListeAvantCouleurs{\useKV[Engrenages]{ListeCouleurs}}%
\readlist*\ListeCouleur{\ListeAvantCouleurs}%
\foreachitem\couleur\in\ListeCouleur{\expandafter\UpdateCoul\couleur\nil}%
+ %\setKV[Engrenages]{Couleurs=\ListeCouleur[1]}%
\BuildEngrenages{\PfCFooEngrenages}{\the\toklistecouleur}%
}%
@@ -102,19 +104,19 @@
fi;
endfor;
);
-}
+}%
\NewDocumentCommand\BuildEngrenages{mm}{%
- \ifluatex
- \mplibforcehmode
- \begin{mplibcode}
+ \ifluatex%
+ \mplibforcehmode%
+ \begin{mplibcode}%
input PfCEngrenages;
\BuildEngrenagesCode{#1}{#2}
trace EngrenageFinal;
- \end{mplibcode}
- \else
+ \end{mplibcode}%
+ \else%
\begin{mpost}[mpsettings={input PfCEngrenages;\BuildEngrenagesCode{#1}{#2}}]
trace EngrenageFinal;
- \end{mpost}
- \fi
+ \end{mpost}%
+ \fi%
}% \ No newline at end of file
diff --git a/macros/latex/contrib/profcollege/latex/PfCFonctionAffine.tex b/macros/latex/contrib/profcollege/latex/PfCFonctionAffine.tex
index 77c683b148..5b95ddb02e 100644
--- a/macros/latex/contrib/profcollege/latex/PfCFonctionAffine.tex
+++ b/macros/latex/contrib/profcollege/latex/PfCFonctionAffine.tex
@@ -58,24 +58,30 @@
}%
}{%
\ifboolKV[ClesAffine]{Retrouve}{%
- On sait que $\useKV[ClesAffine]{Nom}$ est une fonction affine. Donc elle s'\'ecrit sous la forme : \[\useKV[ClesAffine]{Nom}(\useKV[ClesAffine]{Variable})=\useKV[ClesAffine]{CoefDir}\useKV[ClesAffine]{Variable}+\useKV[ClesAffine]{OrdoOrig}\]
- Or, $\useKV[ClesAffine]{Nom}(\num{#2})=\num{#3}$ et $\useKV[ClesAffine]{Nom}(\num{#4})=\num{#5}$. Par cons\'equent, d'apr\`es la propri\'et\'e des accroissements :
+ \xdef\OrdOrigine{\fpeval{#3-(#3-#5)*#2/(#2-#4)}}%%
+ On sait que $\useKV[ClesAffine]{Nom}$ est une fonction affine. Donc elle s'\'ecrit sous la forme : \[\useKV[ClesAffine]{Nom}(\useKV[ClesAffine]{Variable})=\useKV[ClesAffine]{CoefDir}\useKV[ClesAffine]{Variable}+\useKV[ClesAffine]{OrdoOrig}.\]
+ Or, $\useKV[ClesAffine]{Nom}(\num{#2})=\num{#3}$ et $\useKV[ClesAffine]{Nom}(\num{#4})=\num{#5}$. \ifnum\fpeval{#3-#5}=0
+ Les images de \num{#2} et \num{#4} sont égales à \num{#3}. La fonction affine cherchée est donc constante et s'écrit :
+ \[\useKV[ClesAffine]{Nom}:\useKV[ClesAffine]{Variable}\mapsto\num{\OrdOrigine}.\]
+ \else
+ Par cons\'equent, d'apr\`es la propri\'et\'e des accroissements :
\begin{align*}
\useKV[ClesAffine]{CoefDir}&=\frac{\useKV[ClesAffine]{Nom}(\num{#2})-\useKV[ClesAffine]{Nom}(\num{#4})}{\num{#2}-\xintifboolexpr{#4<0}{(\num{#4})}{\num{#4}}}\\
\useKV[ClesAffine]{CoefDir}&=\frac{\num{#3}-\xintifboolexpr{#5<0}{(\num{#5})}{\num{#5}}}{\num{\fpeval{#2-#4}}}\\
\useKV[ClesAffine]{CoefDir}&=\frac{\num{\fpeval{#3-#5}}}{\num{\fpeval{#2-#4}}}%\\
\SSimpliTest{\fpeval{#3-#5}}{\fpeval{#2-#4}}\ifthenelse{\boolean{Simplification}}{\\\useKV[ClesAffine]{CoefDir}&=\SSimplifie{\fpeval{#3-#5}}{\fpeval{#2-#4}}}{}%
\end{align*}
- La fonction $\useKV[ClesAffine]{Nom}$ s'\'ecrit alors sous la forme $\displaystyle\useKV[ClesAffine]{Nom}(\useKV[ClesAffine]{Variable})=\SSimplifie{\fpeval{#3-#5}}{\fpeval{#2-#4}}\useKV[ClesAffine]{Variable}+\useKV[ClesAffine]{OrdoOrig}$.
+ \def\PfCQuotientAffine{\fpeval{(#3-#5)/(#2-#4)}}%
+ La fonction $\useKV[ClesAffine]{Nom}$ s'\'ecrit alors sous la forme $\displaystyle\useKV[ClesAffine]{Nom}(\useKV[ClesAffine]{Variable})=\ifnum\fpeval{abs(\PfCQuotientAffine)}=1\relax\Affichage[Lettre={\useKV[ClesAffine]{Variable}}]{0}{\PfCQuotientAffine}{0}\else\SSimplifie{\fpeval{#3-#5}}{\fpeval{#2-#4}}\useKV[ClesAffine]{Variable}\fi+\useKV[ClesAffine]{OrdoOrig}$.
\\De plus, comme $\useKV[ClesAffine]{Nom}(\num{#2})=\num{#3}$, alors :
\begin{align*}
- \SSimplifie{\fpeval{#3-#5}}{\fpeval{#2-#4}}\times\xintifboolexpr{#2<0}{(\num{#2})}{\num{#2}}+\useKV[ClesAffine]{OrdoOrig}&=\num{#3}\\
+ \ifnum\PfCQuotientAffine=1\relax\else\SSimplifie{\fpeval{#3-#5}}{\fpeval{#2-#4}}\times\xintifboolexpr{#2<0}{(\num{#2})}{\num{#2}}+\useKV[ClesAffine]{OrdoOrig}\uppercase{&}=\num{#3}\\\fi
\SSimplifie{\fpeval{(#3-#5)*#2}}{\fpeval{#2-#4}}+\useKV[ClesAffine]{OrdoOrig}&=\num{#3}\\
\useKV[ClesAffine]{OrdoOrig}&=\num{\fpeval{#3-(#3-#5)*#2/(#2-#4)}}
\end{align*}
- \xdef\OrdOrigine{\fpeval{#3-(#3-#5)*#2/(#2-#4)}}
La fonction affine $\useKV[ClesAffine]{Nom}$ cherch\'ee est :
- \[\useKV[ClesAffine]{Nom}:\useKV[ClesAffine]{Variable}\mapsto\SSimplifie{\fpeval{#3-#5}}{\fpeval{#2-#4}}\useKV[ClesAffine]{Variable}\xintifboolexpr{\OrdOrigine==0}{}{\xintifboolexpr{\OrdOrigine>0}{+\num{\OrdOrigine}}{-\num{\fpeval{0-\OrdOrigine}}}}\]
+ \[\useKV[ClesAffine]{Nom}:\useKV[ClesAffine]{Variable}\mapsto\ifnum\fpeval{abs(\PfCQuotientAffine)}=1\relax\Affichage[Lettre={\useKV[ClesAffine]{Variable}}]{0}{\PfCQuotientAffine}{\OrdOrigine}\else\SSimplifie{\fpeval{#3-#5}}{\fpeval{#2-#4}}\useKV[ClesAffine]{Variable}\xintifboolexpr{\OrdOrigine==0}{}{\xintifboolexpr{\OrdOrigine>0}{+\num{\OrdOrigine}}{-\num{\fpeval{0-\OrdOrigine}}}}\fi.\]
+ \fi
}{%
%
}%
diff --git a/macros/latex/contrib/profcollege/latex/PfCInfixRPN.sty b/macros/latex/contrib/profcollege/latex/PfCInfixRPN.sty
new file mode 100644
index 0000000000..a0851a5dd5
--- /dev/null
+++ b/macros/latex/contrib/profcollege/latex/PfCInfixRPN.sty
@@ -0,0 +1,538 @@
+%%
+%% This is file `infix-RPN.tex',
+%%
+%% IMPORTANT NOTICE:
+%%
+%% Package `infix-RPN.tex'
+%%
+%% Main code:
+%% Jean-Côme Charpentier <jean-come.charpentier@wanadoo.fr>
+%%
+%% Contributions by
+%% Christophe Jorssen <christophe.jorssen@libre.fr.invalid>
+%% `libre' is the french word for `free' :-)
+%%
+%% This program can be redistributed and/or modified under the terms
+%% of the LaTeX Project Public License Distributed from CTAN archives
+%% in directory CTAN:/macros/latex/base/lppl.txt.
+%%
+%% DESCRIPTION:
+%% `infix-RPN' is a package to convert infix expressions to
+%% Reverse Polish Notation
+%%
+%%
+\def\RCS$#1: #2 ${\expandafter\def\csname RCS#1\endcsname{#2}}
+\RCS$Revision: 1.7 $
+\RCS$Date: 2004-07-06 23:41:52+02 $
+
+\def\fileversion{0.11}
+\csname infixRPNLoaded\endcsname
+\let\infixRPNLoaded\endinput
+\message{`infix-RPN' v\fileversion\space (Rev \RCSRevision, \RCSDate), J.-C.Charpentier/C.Jorssen}
+
+\edef\PfCopAtCode{\the\catcode`\@}
+\edef\PfCopHatCode{\the\catcode`\^}
+\edef\PfCopUnderscoreCode{\the\catcode`\_}
+\catcode`\@=11\relax
+\catcode`\^=12\relax
+\catcode`\_=11\relax
+
+\def\s@pow{exp}
+\def\s@lpar{(}
+\def\s@rpar{)}
+\def\s@comma{,}
+
+\def\DeclareNewPSOperator{%
+ \bgroup
+ \catcode`\_=11\relax
+ \DeclareNewPSOperator@i
+}
+
+\def\DeclareNewPSOperator@i#1{%
+ \expandafter\ifx\csname PS@operator@list\endcsname\relax
+ \gdef\PS@operator@list{#1}%
+ \else
+ \xdef\PS@operator@list{#1,\PS@operator@list}%
+ \fi
+ \expandafter\gdef\csname s@#1\endcsname{#1}%
+ \egroup
+}
+
+\DeclareNewPSOperator{add}
+\DeclareNewPSOperator{sub}
+\DeclareNewPSOperator{mul}
+\DeclareNewPSOperator{div}
+\DeclareNewPSOperator{exp}
+\DeclareNewPSOperator{abs}
+\DeclareNewPSOperator{sin}
+\DeclareNewPSOperator{cos}
+\DeclareNewPSOperator{atan}
+\DeclareNewPSOperator{neg}
+\DeclareNewPSOperator{ceiling}
+\DeclareNewPSOperator{floor}
+\DeclareNewPSOperator{truncate}
+\DeclareNewPSOperator{sqrt}
+\DeclareNewPSOperator{ln}
+\DeclareNewPSOperator{log}
+
+
+\newcount\@parenthesis
+\newcount\token@cpt
+\newif\if@begin@token
+\newif\if@in@number
+\newif\if@in@decimal
+\newif\if@in@name
+\newif\if@sign
+\def\@tokencreate#1{%
+ \expandafter\xdef\csname PfCop@token\the\token@cpt\endcsname{#1}%
+ \global\advance\token@cpt\@ne
+ \expandafter\global
+ \expandafter\let\csname PfCop@token\the\token@cpt\endcsname\relax
+ \global\advance\token@cpt\m@ne
+}
+\def\@tokenappend#1{%
+ \expandafter\xdef\csname PfCop@token\the\token@cpt\endcsname
+ {\csname PfCop@token\the\token@cpt\endcsname#1}%
+}
+\def\@tokensingle#1{%
+ \edef\@arg{#1}%
+ \if@in@name
+ \global\advance\token@cpt\@ne
+ \@in@namefalse
+ \fi
+ \if@in@number
+ \global\advance\token@cpt\@ne
+ \@in@numberfalse
+ \@in@decimalfalse
+ \fi
+ \ifx\@arg\s@add
+ \if@sign
+ % ignore + sign
+ \global\advance\token@cpt\m@ne
+ \else
+ \@tokencreate{#1}%
+ \fi
+ \else\ifx\@arg\s@sub
+ \if@sign
+ \@tokencreate{\s@neg}%
+ \else
+ \@tokencreate{#1}%
+ \fi
+ \else
+ \@tokencreate{#1}%
+ \fi\fi
+ \global\advance\token@cpt\@ne
+}
+\def\@tokenuse#1{%
+ \expandafter\ifx\csname PfCop@token#1\endcsname\s@comma%
+ \else
+ \xdef\RPN{\RPN\space\csname PfCop@token#1\endcsname}%
+ \fi
+}
+
+\let\endscanline\relax
+\def\scan@line{%
+ \begingroup
+ \catcode`\ =12
+ \@parenthesis=\z@
+ \@in@numberfalse
+ \@in@decimalfalse
+ \@in@namefalse
+ \global\token@cpt=\@ne
+ \global\@signtrue
+ \scan@@line
+}
+\def\scan@@line#1{\scan@@@line#1\endscanline\endgroup}
+\def\scan@@@line#1#2\endscanline{%
+ \PfCop@testchar{#1}%
+ \ifPfCop@isdigit
+ \global\@signfalse
+ \if@in@number
+ \@tokenappend{#1}%
+ \else \if@in@name
+ \@in@namefalse
+ \@in@numbertrue
+ \@tokenappend{#1}%
+ \else
+ \@in@numbertrue
+ \@tokencreate{#1}%
+ \fi\fi
+ \fi
+ \ifPfCop@isplus
+ \@tokensingle{\s@add}%
+ \global\@signtrue
+ \fi
+ \ifPfCop@isminus
+ \@tokensingle{\s@sub}%
+ \global\@signtrue
+ \fi
+ \ifPfCop@ismultiply
+ \@tokensingle{\s@mul}%
+ \global\@signtrue
+ \fi
+ \ifPfCop@isdivide
+ \@tokensingle{\s@div}%
+ \global\@signtrue
+ \fi
+ \ifPfCop@ispower
+ \@tokensingle{\s@pow}%
+ \global\@signtrue
+ \fi
+ \ifPfCop@isdecimalsep
+ \global\@signfalse
+ \if@in@decimal
+ \errmessage{Syntax error: number with multiple separators!}%
+ \else \if@in@number
+ \@in@decimaltrue
+ \@tokenappend{.}%
+ \else
+ \@tokencreate{.}%
+ \@in@numbertrue
+ \@in@decimaltrue
+ \fi\fi
+ \fi
+ \ifPfCop@iscomma
+ \@tokensingle{,}%
+ \global\@signtrue
+ \fi
+ \ifPfCop@islparenthesis
+ \@tokensingle{(}%
+ \global\@signtrue
+ \fi
+ \ifPfCop@isrparenthesis
+ \global\@signfalse
+ \@tokensingle{)}%
+ \fi
+ \ifPfCop@isspace
+ \if@in@number
+ \@in@numberfalse
+ \@in@decimalfalse
+ \global\advance\token@cpt\@ne
+ \else \if@in@name
+ \@in@namefalse
+ \global\advance\token@cpt\@ne
+ \fi\fi
+ \fi
+ \ifPfCop@isother
+ \global\@signfalse
+ \if@in@name
+ \@tokenappend{#1}%
+ \else \if@in@number
+ \@in@numberfalse
+ \@in@decimalfalse
+ \@in@nametrue
+ \@tokenappend{#1}%
+ \else
+ \@in@nametrue
+ \@tokencreate{#1}%
+ \fi\fi
+ \fi
+ \def\arg{#2}%
+ \ifx\empty\arg
+ \let\next\relax
+ \else
+ \let\next\scan@@@line
+ \fi
+ \expandafter\next\arg\endscanline
+}
+\count255=`\0 \edef\PfCop@numbegin{\the\count255}
+\count255=`\9 \edef\PfCop@numend{\the\count255}
+\count255=`\+ \edef\PfCop@plus{\the\count255}
+\count255=`\- \edef\PfCop@minus{\the\count255}
+\count255=`\* \edef\PfCop@multiply{\the\count255}
+\count255=`\/ \edef\PfCop@divide{\the\count255}
+\count255=`\^ \edef\PfCop@power{\the\count255}
+\count255=`\. \edef\PfCop@dot{\the\count255}
+\count255=`\, \edef\PfCop@comma{\the\count255}
+\count255=`\( \edef\PfCop@lparenthesis{\the\count255}
+\count255=`\) \edef\PfCop@rparenthesis{\the\count255}
+\edef\PfCop@space{32}
+\newif\ifPfCop@isdigit
+\newif\ifPfCop@isplus
+\newif\ifPfCop@isminus
+\newif\ifPfCop@ismultiply
+\newif\ifPfCop@isdivide
+\newif\ifPfCop@ispower
+\newif\ifPfCop@isdecimalsep
+\newif\ifPfCop@iscomma
+\newif\ifPfCop@islparenthesis
+\newif\ifPfCop@isrparenthesis
+\newif\ifPfCop@isspace
+\newif\ifPfCop@isother
+\def\PfCop@testchar#1{%
+ \PfCop@isdigitfalse
+ \PfCop@isplusfalse
+ \PfCop@isminusfalse
+ \PfCop@ismultiplyfalse
+ \PfCop@isdividefalse
+ \PfCop@ispowerfalse
+ \PfCop@isdecimalsepfalse
+ \PfCop@iscommafalse
+ \PfCop@islparenthesisfalse
+ \PfCop@isrparenthesisfalse
+ \PfCop@isspacefalse
+ \PfCop@isotherfalse
+ \count255=`#1\relax
+ \ifnum\count255=\PfCop@plus \relax
+ \PfCop@isplustrue
+ \else \ifnum\count255=\PfCop@minus \relax
+ \PfCop@isminustrue
+ \else \ifnum\count255=\PfCop@multiply \relax
+ \PfCop@ismultiplytrue
+ \else \ifnum\count255=\PfCop@divide \relax
+ \PfCop@isdividetrue
+ \else \ifnum\count255=\PfCop@power \relax
+ \PfCop@ispowertrue
+ \else \ifnum\count255=\PfCop@dot \relax
+ \PfCop@isdecimalseptrue
+ \else \ifnum\count255=\PfCop@comma \relax
+ \PfCop@iscommatrue
+ \else \ifnum\count255=\PfCop@lparenthesis \relax
+ \PfCop@islparenthesistrue
+ \else \ifnum\count255=\PfCop@rparenthesis \relax
+ \PfCop@isrparenthesistrue
+ \else \ifnum\count255=\PfCop@space \relax
+ \PfCop@isspacetrue
+ \else \ifnum\count255<\PfCop@numbegin \relax
+ \PfCop@isothertrue
+ \else \ifnum\count255>\PfCop@numend \relax
+ \PfCop@isothertrue
+ \else \PfCop@isdigittrue
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+}
+
+\def\search@term#1#2{%
+ \begingroup
+ \count1=#1\relax
+ \count255=#2\relax
+ \ifnum\count1=\count255
+ \@tokenuse{#1}%
+ \else
+ \count5=\count255
+ \count7=\count1
+ \advance\count7\m@ne
+ \count3=\z@
+ \loop
+ \ifnum\count5>\count7
+ \expandafter\ifx\csname PfCop@token\the\count5\endcsname\s@rpar\relax
+ \advance\@parenthesis\@ne
+ \fi
+ \expandafter\ifx\csname PfCop@token\the\count5\endcsname\s@lpar\relax
+ \advance\@parenthesis\m@ne
+ \fi
+ \expandafter\ifx\csname PfCop@token\the\count5\endcsname\s@add\relax
+ \ifnum\@parenthesis=\z@
+ \count3=\count5
+ \count5=\z@
+ \fi
+ \fi
+ \expandafter\ifx\csname PfCop@token\the\count5\endcsname\s@sub\relax
+ \ifnum\@parenthesis=\z@
+ \count3=\count5
+ \count5=\z@
+ \fi
+ \fi
+ \expandafter\ifx\csname PfCop@token\the\count5\endcsname\s@comma\relax
+ \ifnum\@parenthesis=\z@
+ \count3=\count5
+ \count5=\z@
+ \fi
+ \fi
+ \advance\count5\m@ne
+ \repeat
+ \ifnum\count3=\z@
+ \ifnum\@parenthesis=\z@
+ \search@factor{\the\count1}{\the\count255}%
+ \else
+ \errmessage{Syntax error: unbalanced parenthesis!}%
+ \fi
+ \else
+ \advance\count3\m@ne
+ \search@term{\the\count1}{\the\count3}%
+ \advance\count3\tw@
+ \search@term{\the\count3}{\the\count255}%
+ \advance\count3\m@ne
+ \@tokenuse{\the\count3}%
+ \fi
+ \fi
+ \endgroup
+}
+\def\search@factor#1#2{%
+ \begingroup
+ \count1=#1\relax
+ \count255=#2\relax
+ \ifnum\count1=\count255
+ \@tokenuse{\the\count1}%
+ \else
+ \count5=\count255
+ \count7=\count1
+ \advance\count7\m@ne
+ \count3=\z@
+ \loop
+ \ifnum\count5>\count7
+ \expandafter\ifx\csname PfCop@token\the\count5\endcsname\s@rpar\relax
+ \advance\@parenthesis\@ne
+ \fi
+ \expandafter\ifx\csname PfCop@token\the\count5\endcsname\s@lpar\relax
+ \advance\@parenthesis\m@ne
+ \fi
+ \expandafter\ifx\csname PfCop@token\the\count5\endcsname\s@mul\relax
+ \ifnum\@parenthesis=\z@
+ \count3=\count5
+ \count5=\z@
+ \fi
+ \fi
+ \expandafter\ifx\csname PfCop@token\the\count5\endcsname\s@div\relax
+ \ifnum\@parenthesis=\z@
+ \count3=\count5
+ \count5=\z@
+ \fi
+ \fi
+ \advance\count5\m@ne
+ \repeat
+ \ifnum\count3=\z@
+ \ifnum\@parenthesis=\z@
+ \search@power{\the\count1}{\the\count255}%
+ \else
+ \errmessage{! Syntax error: unbalanced parenthesis}%
+ \fi
+ \else
+ \advance\count3\m@ne
+ \search@factor{\the\count1}{\the\count3}%
+ \advance\count3\tw@
+ \search@factor{\the\count3}{\the\count255}%
+ \advance\count3\m@ne
+ \@tokenuse{\the\count3}%
+ \fi
+ \fi
+ \endgroup
+}
+\def\search@power#1#2{%
+ \begingroup
+ \count1=#1\relax
+ \count255=#2\relax
+ \ifnum\count1=\count255
+ \@tokenuse{#1}%
+ \else
+ \count5=\count255
+ \count7=\count1
+ \advance\count7\m@ne
+ \count3=\z@
+ \loop
+ \ifnum\count5>\count7
+ \expandafter\ifx\csname PfCop@token\the\count5\endcsname\s@rpar\relax
+ \advance\@parenthesis\@ne
+ \fi
+ \expandafter\ifx\csname PfCop@token\the\count5\endcsname\s@lpar\relax
+ \advance\@parenthesis\m@ne
+ \fi
+ \expandafter\ifx\csname PfCop@token\the\count5\endcsname\s@pow\relax
+ \ifnum\@parenthesis=\z@
+ \count3=\count5
+ \count5=\z@
+ \fi
+ \fi
+ \advance\count5\m@ne
+ \repeat
+ \ifnum\count3=\z@
+ \ifnum\@parenthesis=\z@
+ \search@primary{\the\count1}{\the\count255}%
+ \else
+ \errmessage{Syntax error: unbalanced parenthesis}%
+ \fi
+ \else
+ \advance\count3\m@ne
+ \search@power{\the\count1}{\the\count3}%
+ \advance\count3\tw@
+ \search@power{\the\count3}{\the\count255}%
+ \advance\count3\m@ne
+ \@tokenuse{\the\count3}%
+ \fi
+ \fi
+ \endgroup
+}
+\def\search@primary#1#2{%
+ \begingroup
+ \count1=#1\relax
+ \count255=#2\relax
+ \ifnum\count1=\count255
+ \@tokenuse{#1}%
+ \else
+ \edef\current@cnt{#1}%
+ \expandafter\compare@PS@operator\PS@operator@list,\@nil
+ \expandafter\ifx\csname PfCop@token#1\endcsname\s@lpar\relax
+ \expandafter\ifx\csname PfCop@token#2\endcsname\s@rpar\relax
+ \advance\count1\@ne
+ \advance\count255\m@ne
+ \search@term{\the\count1}{\the\count255}%
+ \else
+ \errmessage{Syntax error: Garbage after parenthesis
+ (tokens '#1' to '#2')}%
+ \fi
+ \fi
+ \fi
+ \endgroup
+}
+
+%\let\@nil\relax
+%\let\@nil\@empty
+
+%\def\compare@PS@operator#1,#2\@nil{%
+% \def\@tempa{#1}%
+% \def\@tempb{#2}%
+% \expandafter\ifx\csname PfCop@token\current@cnt\endcsname\@tempa%
+% \advance\count1\@ne
+% \search@primary{\the\count1}{\the\count255}%
+% \advance\count1\m@ne
+% \@tokenuse{\the\count1}%
+% \fi
+% \ifx\@tempb\empty
+% \let\next\relax
+% \let\@tempb\relax
+% \else
+% \let\next\compare@PS@operator
+% \fi
+% \expandafter\next\@tempb\@nil
+%}
+
+\let\@nil\undefined
+
+\def\compare@PS@operator#1,#2\@nil{%
+ \def\@tempa{#1}%
+ \def\@tempb{#2}%
+ \expandafter\ifx\csname PfCop@token\current@cnt\endcsname\@tempa%
+ \advance\count1\@ne
+ \search@primary{\the\count1}{\the\count255}%
+ \advance\count1\m@ne
+ \@tokenuse{\the\count1}%
+ \fi
+ \ifx\@tempb\empty
+ \let\next\@gobble
+ \else
+ \let\next\compare@PS@operator
+ \fi
+ \expandafter\next\@tempb\@nil
+}
+
+
+\def\infixtoRPN{%
+ \begingroup
+ \catcode`\ =12
+ \catcode`\^=12
+ \infixt@RPN
+}
+\def\infixt@RPN#1{%
+ \xdef\@expression{#1}%
+ \endgroup
+ \def\RPN{}%
+ \expandafter\scan@line\expandafter{\@expression}%
+ \expandafter\ifx\csname PfCop@token\the\token@cpt\endcsname\relax
+ \advance\token@cpt\m@ne
+ \fi
+ \search@term{1}{\the\token@cpt}%
+}
+
+\catcode`\@=\PfCopAtCode\relax
+\catcode`\^=\PfCopHatCode\relax
+\catcode`\_=\PfCopUnderscoreCode\relax
+\endinput \ No newline at end of file
diff --git a/macros/latex/contrib/profcollege/latex/PfCMulJap.tex b/macros/latex/contrib/profcollege/latex/PfCMulJap.tex
index e0457471e1..bdb59526f0 100644
--- a/macros/latex/contrib/profcollege/latex/PfCMulJap.tex
+++ b/macros/latex/contrib/profcollege/latex/PfCMulJap.tex
@@ -229,5 +229,6 @@
endfor;
fi;
\end{mplibcode}
+ \mplibnumbersystem{scaled}
\fi
}% \ No newline at end of file
diff --git a/macros/latex/contrib/profcollege/latex/PfCMulPiecesPuzzle.tex b/macros/latex/contrib/profcollege/latex/PfCMulPiecesPuzzle.tex
index 56a7ad6943..7851f36ba7 100644
--- a/macros/latex/contrib/profcollege/latex/PfCMulPiecesPuzzle.tex
+++ b/macros/latex/contrib/profcollege/latex/PfCMulPiecesPuzzle.tex
@@ -6,7 +6,7 @@
\def\UpdatetoksPuzzleA#1\nil{\addtotok\toklistepuzzlea{"#1",}}%
-\setKVdefault[ClesPuzzleMul]{Solution=false,Unite=1cm,Couleur=LightSteelBlue}
+\setKVdefault[ClesPuzzleMul]{Solution=false,Unite=1cm,Couleur=LightSteelBlue,Cube=false}
\NewDocumentCommand\PuzzleMul{om}{%
\useKVdefault[ClesPuzzleMul]%
@@ -17,8 +17,12 @@
\xdef\HauteurPuzzle{\PfCListePuzzlelen}%
\toklistepuzzlea{}%
\foreachitem\compteur\in\PfCListePuzzle{\expandafter\UpdatetoksPuzzleA\compteur\nil}%
- \BuildPuzzle{\the\toklistepuzzlea}%
-}
+ \ifboolKV[ClesPuzzleMul]{Cube}{%
+ \BuildPuzzleEspace{\the\toklistepuzzlea}%
+ }{%
+ \BuildPuzzle{\the\toklistepuzzlea}%
+ }%
+}%
\def\BuildPuzzleCode{%
def PreDrawPuzzle ( expr ww, hh, uu ) =
diff --git a/macros/latex/contrib/profcollege/latex/PfCNotionFonction.tex b/macros/latex/contrib/profcollege/latex/PfCNotionFonction.tex
index 117c2a0905..4fe05bc4d0 100644
--- a/macros/latex/contrib/profcollege/latex/PfCNotionFonction.tex
+++ b/macros/latex/contrib/profcollege/latex/PfCNotionFonction.tex
@@ -22,18 +22,20 @@
\setKV[TraceG]{#1}%
\tokPfCListeDesFonctions{}%
\tokPfCListeDesNomsFonctions{}%
- \xdef\PfCFooFn{\useKV[ClesFonction]{Calcul}}
- \xdef\PfCFooNomFn{\useKV[TraceG]{NomCourbe}}
+ \xdef\PfCFooFn{\useKV[ClesFonction]{Calcul}}%
+ \xdef\PfCFooNomFn{\useKV[TraceG]{NomCourbe}}%
\ifx\bla\PfCFooFn\bla%
- \else
- \readlist*\ListeDesFonctions{\PfCFooFn}
+ \else%
+ \setsepchar{,}\ignoreemptyitems
+ \readlist*\ListeDesFonctions{\PfCFooFn}%
+ \reademptyitems
\foreachitem\compteur\in\ListeDesFonctions{\expandafter\UpdatePfCListeDesFonctions\compteur\nil}%
- \fi
- \ifx\bla\PfCFooNomFn\bla
- \else
- \readlist*\ListeDesNomsFonctions{\PfCFooNomFn}
+ \fi%
+ \ifx\bla\PfCFooNomFn\bla%
+ \else%
+ \readlist*\ListeDesNomsFonctions{\PfCFooNomFn}%
\foreachitem\compteur\in\ListeDesNomsFonctions{\expandafter\UpdatePfCListeDesNomsFonctions\compteur\nil}%
- \fi
+ \fi%
\tokPfCLabelX{}%
\tokPfCLabelY{}%
\addtotok\tokPfCLabelX{"\useKV[TraceG]{LabelX}"}%
@@ -79,7 +81,7 @@
\MPCourbeNew{\PfCFooListePoints}%
}%
}%
- }
+ }%
}{%
\setsepchar{,}\ignoreemptyitems%
\readlist*\ListeFonction{#2}%
diff --git a/macros/latex/contrib/profcollege/latex/PfCPatronPaves.tex b/macros/latex/contrib/profcollege/latex/PfCPatronPaves.tex
index dfbd3a5d23..6628d3d505 100644
--- a/macros/latex/contrib/profcollege/latex/PfCPatronPaves.tex
+++ b/macros/latex/contrib/profcollege/latex/PfCPatronPaves.tex
@@ -1,7 +1,9 @@
%%%
% Patrons de pavés droits et cubes
%%%
-\setKVdefault[ClesPatron]{Cube,Arete=1cm,ListeCouleurs={white},Pave=false,Largeur=2cm,Hauteur=1.5cm,Profondeur=1cm,Codes=false}%
+\setKVdefault[ClesPatron]{Cube,Arete=1cm,ListeCouleurs={white},Pave=false,Largeur=2cm,Hauteur=1.5cm,Profondeur=1cm,Codes=false,AColorier=false}%
+%EcartColorier est en nombre de parts pour le cube, en mm pour le pavé.
+\defKV[ClesPatron]{EcartColorier=\setKV[ClesPatron]{AColorier}}%
\defKV[ClesPatron]{Traces=\setKV[ClesPatron]{Codes}}%
\newtoks\toklistepatron%
@@ -30,7 +32,7 @@
}%
}%
-\setsepchar{,}\ignoreemptyitems
+\setsepchar{,}\ignoreemptyitems%
\readlist*\ListePatronsCube{%
{ooxo,xxxx,ooxo},%
{oxoo,xxxx,xooo},%
@@ -78,7 +80,7 @@
{poho,lpho,poho,lohp},%
{poho,loho,plhl,loho},%
{poho,loho,plho,lohp},%
- {poho,loho,poho,lphp},%
+ {poho,loho,poho,lphp},%20
{phlh,holo,polo,holo},%
{phlo,holp,polo,holo},%
{phlo,holo,polh,holo},%
@@ -88,17 +90,17 @@
{polo,hplo,polo,holp},%
{polo,holo,phlh,holo},%
{polo,holo,phlo,holp},%
- {polo,holo,polo,hplp},%
+ {polo,holo,polo,hplp},%30
{hlpo,lopo,hopl,pool},%
{hopo,lhpo,hopl,pool},%
{hopo,lopo,hlph,pool},%
{lhpo,hopo,loph,pooh},%
{lopo,hlpo,loph,pooh},%
- {lopo,hopo,lhoh,pooh},%
+ {lopo,hopo,lhph,pooh},%
{plho,loho,pohl,hool},%
{poho,lpho,pohl,hool},%
{poho,loho,plhl,hool},%
- {lpho,poho,lohp,hoop},%
+ {lpho,poho,lohp,hoop},%40
{loho,plho,lohp,hoop},%
{loho,poho,lphp,hoop},%
{phlo,holo,polh,looh},%
@@ -108,23 +110,23 @@
{holo,phlo,holp,loop},%
{holo,polo,hplp,loop},%
{hpo,lpo,hpl,pol,hol},%
- {lpo,hpo,lph,poh,loh},%
- {pho,plo,phl,hol,pol},%
+ {lpo,hpo,lph,poh,loh},%50
+ {pho,lho,phl,hol,pol},%
{hpoo,lpho,pohl,hool},%
{lpoo,hplo,polh,looh},%
- {phoo,lhpo,hopl,pool}
-}
+ {phoo,lhpo,hopl,pool}%
+}%
\readlist*\ListePatronsPaveCouleurs{%
- {Orange,Crimson,Orange,LightGreen,Crimson,LightGreen},
- {Orange,Crimson,LightGreen,Orange,Crimson,LightGreen},
- {Orange,Crimson,LightGreen,Crimson,Orange,LightGreen},
- {Orange,Crimson,LightGreen,Crimson,LightGreen,Orange},
- {Crimson,Orange,LightGreen,Orange,Crimson,LightGreen},
- {Crimson,Orange,LightGreen,Crimson,Orange,LightGreen},
- {Crimson,Orange,LightGreen,Crimson,LightGreen,Orange},
- {Crimson,LightGreen,Orange,Crimson,Orange,LightGreen},
- {Crimson,LightGreen,Orange,Crimson,LightGreen,Orange},
+ {Orange,Crimson,Orange,LightGreen,Crimson,LightGreen},%
+ {Orange,Crimson,LightGreen,Orange,Crimson,LightGreen},%
+ {Orange,Crimson,LightGreen,Crimson,Orange,LightGreen},%
+ {Orange,Crimson,LightGreen,Crimson,LightGreen,Orange},%
+ {Crimson,Orange,LightGreen,Orange,Crimson,LightGreen},%
+ {Crimson,Orange,LightGreen,Crimson,Orange,LightGreen},%
+ {Crimson,Orange,LightGreen,Crimson,LightGreen,Orange},%
+ {Crimson,LightGreen,Orange,Crimson,Orange,LightGreen},%
+ {Crimson,LightGreen,Orange,Crimson,LightGreen,Orange},%
{Crimson,LightGreen,Crimson,Orange,LightGreen,Orange},%10
{LightGreen,Crimson,LightGreen,Orange,Crimson,Orange},%
{LightGreen,Crimson,Orange,LightGreen,Crimson,Orange},%
@@ -169,9 +171,277 @@
{Crimson,Orange,Crimson,LightGreen,Orange,LightGreen},%
{Crimson,LightGreen,Orange,Crimson,LightGreen,Orange},%
{LightGreen,Crimson,Orange,LightGreen,Crimson,Orange},%
- {Crimson,Orange,LightGreen,Crimson,Orange,LightGreen}%
+ {Crimson,Orange,LightGreen,Crimson,Orange,LightGreen}%
+}%
+\reademptyitems%
+
+\def\MPPatronPaveCode{%
+ Largeur=\useKV[ClesPatron]{Largeur};
+ Hauteur=\useKV[ClesPatron]{Hauteur};
+ Profondeur=\useKV[ClesPatron]{Profondeur};
+ %
+ pair C[],M[],N[],O[],P[];
+ %
+ color Col[],CoulDefaut;
+ CoulDefaut=white;
+ %
+ boolean Codes,Allume[][],AColorier;
+ Codes=\useKV[ClesPatron]{Codes};
+ AColorier=\useKV[ClesPatron]{AColorier};
+ if AColorier:
+ EcartColorier=\useKV[ClesPatron]{EcartColorier}*1mm;
+ fi;
+ %
+ numeric DecalCol[];
+ %
+ vardef Allumage(text t)=
+ nblignes:=0;
+ for p_=t:
+ Long:=length p_;
+ nblignes:=nblignes+1;
+ for k=0 upto Long-1:
+ Allume[nblignes][k]=false;
+ endfor;
+ endfor;
+ enddef;
+ %
+ vardef LectureLargeur(text t)=
+ for p_=t:
+ Long:=length p_;
+ endfor;
+ for k=1 upto Long-1:
+ for p_=t:
+ if substring(k,k+1) of p_="o":
+ if k=1:
+ if (substring(0,1) of p_="h") and (substring(1,2) of p_="p"):
+ DecalCol[k]:=Largeur;
+ fi;
+ if (substring(0,1) of p_="h") and (substring(1,2) of p_="l"):
+ DecalCol[k]:=Profondeur;
+ fi;
+ if (substring(0,1) of p_="p") and (substring(1,2) of p_="h"):
+ DecalCol[k]:=Largeur;
+ fi;
+ if (substring(0,1) of p_="p") and (substring(1,2) of p_="l"):
+ DecalCol[k]:=Hauteur;
+ fi;
+ if (substring(0,1) of p_="l") and (substring(1,2) of p_="h"):
+ DecalCol[k]:=Profondeur;
+ fi;
+ if (substring(0,1) of p_="l") and (substring(1,2) of p_="p"):
+ DecalCol[k]:=Hauteur;
+ fi;
+ fi;
+ elseif substring(k,k+1) of p_="l":
+ DecalCol[k]:=Largeur;
+ elseif substring(k,k+1) of p_="h":
+ DecalCol[k]:=Hauteur;
+ elseif substring(k,k+1) of p_="p":
+ DecalCol[k]:=Profondeur;
+ fi;
+ endfor;
+ endfor;
+ enddef;
+ %
+ vardef Patron(text t)=
+ path PathPave;
+ nblignes:=-1;
+ NBLignes:=0;
+ nbcol:=0;
+ nbfaces:=0;
+ for p_=t:
+ Long:=length p_;
+ nbcolonnes:=0;
+ NBColonnes:=0;
+ if substring(0,1) of p_="h":
+ YEchelle:=Hauteur;
+ elseif substring(0,1) of p_="l":
+ YEchelle:=Largeur;
+ elseif substring(0,1) of p_="p":
+ YEchelle:=Profondeur;
+ fi;
+ nblignes:=nblignes-YEchelle;
+ NBLignes:=NBLignes+1;
+ for k=1 upto Long-1:
+ if substring(k,k+1) of p_="o":
+ if k=1:
+ PathPave:=(unitsquare scaled 0) shifted ((0,-1));
+ fi;
+ elseif substring(k,k+1) of p_="l":
+ nbcol:=nbcol+1;
+ PathPave:=(unitsquare xscaled Largeur yscaled YEchelle) shifted ((nbcolonnes,nblignes));
+ Allume[NBLignes][NBColonnes]:=true;
+ nbfaces:=nbfaces+1;
+ C[nbfaces]=center PathPave;
+ M[nbfaces]=point(0) of PathPave;
+ N[nbfaces]=point(1) of PathPave;
+ O[nbfaces]=point(2) of PathPave;
+ P[nbfaces]=point(3) of PathPave;
+ elseif substring(k,k+1) of p_="h":
+ nbcol:=nbcol+1;
+ PathPave:=(unitsquare xscaled Hauteur yscaled YEchelle) shifted ((nbcolonnes,nblignes));
+ Allume[NBLignes][NBColonnes]:=true;
+ nbfaces:=nbfaces+1;
+ C[nbfaces]=center PathPave;
+ M[nbfaces]=point(0) of PathPave;
+ N[nbfaces]=point(1) of PathPave;
+ O[nbfaces]=point(2) of PathPave;
+ P[nbfaces]=point(3) of PathPave;
+ elseif substring(k,k+1) of p_="p":
+ nbcol:=nbcol+1;
+ PathPave:=(unitsquare xscaled Profondeur yscaled YEchelle) shifted ((nbcolonnes,nblignes));
+ Allume[NBLignes][NBColonnes]:=true;
+ nbfaces:=nbfaces+1;
+ C[nbfaces]=center PathPave;
+ M[nbfaces]=point(0) of PathPave;
+ N[nbfaces]=point(1) of PathPave;
+ O[nbfaces]=point(2) of PathPave;
+ P[nbfaces]=point(3) of PathPave;
+ fi;
+ if (unknown Col[nbcol]):
+ else:
+ if Col[nbcol]=white:
+ else:
+ if AColorier=false:
+ fill PathPave withcolor Col[nbcol];
+ fi;
+ fi;
+ fi;
+ if nbfaces>0:
+ trace M[nbfaces]--P[nbfaces];
+ trace N[nbfaces]--O[nbfaces];
+ trace P[nbfaces]--O[nbfaces];
+ trace M[nbfaces]--N[nbfaces];
+ fi;
+ nbcolonnes:=nbcolonnes+DecalCol[k];
+ NBColonnes:=NBColonnes+1;
+ endfor;
+ endfor;
+ enddef;
+ %
+ vardef EffectuerTraces=
+ if Codes:
+ \useKV[ClesPatron]{Traces};
+ fi;
+ enddef;
+}%
+
+\def\MPPatronPave#1#2{%
+ \ifluatex
+ \mplibforcehmode
+ \begin{mplibcode}
+ \MPPatronPaveCode
+ n:=0;
+ for p_=#2:
+ n:=n+1;
+ if color p_:
+ Col[n]=p_;
+ else:
+ Col[n]=CoulDefaut;
+ fi;
+ endfor;
+ %
+ LectureLargeur(#1);
+ Allumage(#1);
+ if AColorier:
+ drawoptions(dashed evenly);
+ fi;
+ Patron(#1);
+ if AColorier:
+ drawoptions();
+ toto:=0;
+ for l=1 upto NBLignes:
+ for k=0 upto NBColonnes-1:
+ if Allume[l][k]:
+ toto:=toto+1;
+ % trait vertical gauche
+ if k=0:
+% trace M[toto]--P[toto];
+ tpoints:=floor(abs(M[toto]-P[toto])/EcartColorier);
+ for t=1 upto tpoints-1:
+ trace ((t/tpoints)[M[toto],P[toto]])--((t/tpoints)[M[toto],P[toto]]+(2*unitvector(P[toto]-M[toto])) rotated -90);
+ endfor;
+ else:
+ if Allume[l][k-1]=false:
+ % trace M[toto]--P[toto] dashed evenly;
+ tpoints:=floor(abs(M[toto]-P[toto])/EcartColorier);
+ for t=1 upto tpoints-1:
+ trace ((t/tpoints)[M[toto],P[toto]])--((t/tpoints)[M[toto],P[toto]]+(2*unitvector(P[toto]-M[toto])) rotated -90);
+ endfor;
+ fi;
+ fi;
+% % trait vertical droit
+ if k=Long-1:
+ % trace N[toto]--O[toto] dashed evenly;
+ tpoints:=floor(abs(N[toto]-O[toto])/EcartColorier);
+ for t=1 upto tpoints-1:
+ trace ((t/tpoints)[N[toto],O[toto]])--((t/tpoints)[N[toto],O[toto]]+(2*unitvector(O[toto]-N[toto])) rotated 90);
+ endfor;
+ else:
+ if Allume[l][k+1]=false:
+ %% trace N[toto]--O[toto] dashed evenly;
+ tpoints:=floor(abs(N[toto]-O[toto])/EcartColorier);
+ for t=1 upto tpoints-1:
+ trace ((t/tpoints)[N[toto],O[toto]])--((t/tpoints)[N[toto],O[toto]]+(2*unitvector(O[toto]-N[toto])) rotated 90);
+ endfor;
+ fi;
+ fi;
+% % trait horizontal haut
+ if l=1:
+ % trace P[toto]--O[toto] dashed evenly;
+ tpoints:=floor(abs(P[toto]-O[toto])/EcartColorier);
+ for t=1 upto tpoints-1:
+ trace ((t/tpoints)[P[toto],O[toto]])--((t/tpoints)[P[toto],O[toto]]+(2*unitvector(O[toto]-P[toto])) rotated -90);
+ endfor;
+ else:
+ if Allume[l-1][k]=false:
+ % trace P[toto]--O[toto] dashed evenly;
+ tpoints:=floor(abs(P[toto]-O[toto])/EcartColorier);
+ for t=1 upto tpoints-1:
+ trace ((t/tpoints)[P[toto],O[toto]])--((t/tpoints)[P[toto],O[toto]]+(2*unitvector(O[toto]-P[toto])) rotated -90);
+ endfor;
+ fi;
+ fi;
+% % trait horizontal bas
+ if l=NBLignes:
+ %% trace M[toto]--N[toto] dashed evenly;
+ tpoints:=floor(abs(M[toto]-N[toto])/EcartColorier);
+ for t=1 upto tpoints-1:
+ trace ((t/tpoints)[M[toto],N[toto]])--((t/tpoints)[M[toto],N[toto]]+(2*unitvector(M[toto]-N[toto])) rotated -90);
+ endfor;
+ else:
+ if Allume[l+1][k]=false:
+ %% trace M[toto]--N[toto] dashed evenly;
+ tpoints:=floor(abs(M[toto]-N[toto])/EcartColorier);
+ for t=1 upto tpoints-1:
+ trace ((t/tpoints)[M[toto],N[toto]])--((t/tpoints)[M[toto],N[toto]]+(2*unitvector(M[toto]-N[toto])) rotated -90);
+ endfor;
+ fi;
+ fi;
+ fi;
+ endfor;
+ endfor;
+ fi;
+ EffectuerTraces;
+ \end{mplibcode}
+ \else
+ \begin{mpost}[mpsettings={\MPPatronPaveCode;}]
+ n:=0;
+ for p_=#2:
+ n:=n+1;
+ if color p_:
+ Col[n]=p_;
+ else:
+ Col[n]=CoulDefaut;
+ fi;
+ endfor;
+ %
+ LectureLargeur(#1);
+ Patron(#1);
+ EffectuerTraces;
+ \end{mpost}
+ \fi
}%
-\reademptyitems
\def\MPPatronCubeCode{%
Arete=\useKV[ClesPatron]{Arete};
@@ -181,6 +451,185 @@
color Col[],CoulDefaut;
CoulDefaut=white;
%
+ boolean Codes,Allume[][],AColorier;
+ Codes=\useKV[ClesPatron]{Codes};
+ AColorier=\useKV[ClesPatron]{AColorier};
+ if AColorier:
+ EcartColorier=\useKV[ClesPatron]{EcartColorier};
+ fi;
+ %
+ vardef Allumage(text t)=
+ nblignes:=-1;
+ for p_=t:
+ Long:=length p_;
+ nblignes:=nblignes+1;
+ for k=0 upto Long-1:
+ Allume[nblignes][k]=false;
+ endfor;
+ endfor;
+ enddef;
+ %
+ vardef Patron(text t)=
+ nblignes:=-1;
+ nbcol:=0;
+ nbfaces:=0;
+ for p_=t:
+ Long:=length p_;
+ nblignes:=nblignes+1;
+ nbcolonnes:=0;
+ for k=0 upto Long-1:
+ nbcolonnes:=nbcolonnes+1;
+ if substring(k,k+1) of p_="x":
+ Allume[nblignes][k]:=true;
+ nbfaces:=nbfaces+1;
+ nbcol:=nbcol+1;
+ if (unknown Col[nbcol]):
+ else:
+ if Col[nbcol]=white:
+ else:
+ if AColorier=false:
+ fill ((unitsquare scaled Arete) shifted (Arete*(nbcolonnes,-nblignes))) withcolor Col[nbcol];
+ fi;
+ fi;
+ fi;
+ C[nbfaces]=(center unitsquare scaled Arete) shifted (Arete*(nbcolonnes,-nblignes));
+ M[nbfaces]=point(0) of ((unitsquare scaled Arete) shifted (Arete*(nbcolonnes,-nblignes)));
+ N[nbfaces]=point(1) of ((unitsquare scaled Arete) shifted (Arete*(nbcolonnes,-nblignes)));
+ O[nbfaces]=point(2) of ((unitsquare scaled Arete) shifted (Arete*(nbcolonnes,-nblignes)));
+ P[nbfaces]=point(3) of ((unitsquare scaled Arete) shifted (Arete*(nbcolonnes,-nblignes)));
+ trace M[nbfaces]--P[nbfaces];
+ trace N[nbfaces]--O[nbfaces];
+ trace P[nbfaces]--O[nbfaces];
+ trace M[nbfaces]--N[nbfaces];
+ fi;
+ endfor;
+ endfor;
+ enddef;
+ %
+ vardef EffectuerTraces=
+ if Codes:
+ \useKV[ClesPatron]{Traces};
+ fi;
+ enddef;
+}%
+
+\def\MPPatronCube#1#2{%
+ \ifluatex
+ \mplibforcehmode
+ \begin{mplibcode}
+ \MPPatronCubeCode
+ %
+ n:=0;
+ for p_=#2:
+ n:=n+1;
+ if color p_:
+ Col[n]=p_;
+ else:
+ Col[n]=CoulDefaut;
+ fi;
+ endfor;
+ %
+ Allumage(#1);
+ if AColorier:
+ drawoptions(dashed withdots scaled 0.5);
+ fi;
+ Patron(#1);
+ if AColorier:
+ drawoptions();
+ toto:=0;
+ for l=0 upto nblignes:
+ for k=0 upto Long-1:
+ if Allume[l][k]:
+ toto:=toto+1;
+ % trait vertical gauche
+ if k=0:
+% trace M[toto]--P[toto] dashed evenly;
+ for t=1 upto EcartColorier-1:
+ trace ((t/EcartColorier)[M[toto],P[toto]])--((t/EcartColorier)[M[toto],P[toto]]+(2*unitvector(P[toto]-M[toto])) rotated -90);
+ endfor;
+ else:
+ if Allume[l][k-1]=false:
+% trace M[toto]--P[toto] dashed evenly;
+ for t=1 upto EcartColorier-1:
+ trace ((t/EcartColorier)[M[toto],P[toto]])--((t/EcartColorier)[M[toto],P[toto]]+(2*unitvector(P[toto]-M[toto])) rotated -90);
+ endfor;
+ fi;
+ fi;
+ % trait vertical droit
+ if k=Long-1:
+ % trace N[toto]--O[toto] dashed evenly;
+ for t=1 upto EcartColorier-1:
+ trace ((t/EcartColorier)[N[toto],O[toto]])--((t/EcartColorier)[N[toto],O[toto]]+(2*unitvector(O[toto]-N[toto])) rotated 90);
+ endfor;
+ else:
+ if Allume[l][k+1]=false:
+% trace N[toto]--O[toto] dashed evenly;
+ for t=1 upto EcartColorier-1:
+ trace ((t/EcartColorier)[N[toto],O[toto]])--((t/EcartColorier)[N[toto],O[toto]]+(2*unitvector(O[toto]-N[toto])) rotated 90);
+ endfor;
+ fi;
+ fi;
+ % trait horizontal haut
+ if l=0:
+% trace P[toto]--O[toto] dashed evenly;
+ for t=1 upto EcartColorier-1:
+ trace ((t/EcartColorier)[P[toto],O[toto]])--((t/EcartColorier)[P[toto],O[toto]]+(2*unitvector(O[toto]-P[toto])) rotated -90);
+ endfor;
+ else:
+ if Allume[l-1][k]=false:
+% trace P[toto]--O[toto] dashed evenly;
+ for t=1 upto EcartColorier-1:
+ trace ((t/EcartColorier)[P[toto],O[toto]])--((t/EcartColorier)[P[toto],O[toto]]+(2*unitvector(O[toto]-P[toto])) rotated -90);
+ endfor;
+ fi;
+ fi;
+ % trait horizontal bas
+ if l=nblignes:
+% trace M[toto]--N[toto] dashed evenly;
+ for t=1 upto EcartColorier-1:
+ trace ((t/EcartColorier)[M[toto],N[toto]])--((t/EcartColorier)[M[toto],N[toto]]+(2*unitvector(M[toto]-N[toto])) rotated -90);
+ endfor;
+ else:
+ if Allume[l+1][k]=false:
+% trace M[toto]--N[toto] dashed evenly;
+ for t=1 upto EcartColorier-1:
+ trace ((t/EcartColorier)[M[toto],N[toto]])--((t/EcartColorier)[M[toto],N[toto]]+(2*unitvector(M[toto]-N[toto])) rotated -90);
+ endfor;
+ fi;
+ fi;
+ fi;
+ endfor;
+ endfor;
+ fi;
+ EffectuerTraces;
+ \end{mplibcode}
+ \else
+ \begin{mpost}[mpsettings={\MPPatronCubeCode;}]
+ %
+ n:=0;
+ for p_=#2:
+ n:=n+1;
+ if color p_:
+ Col[n]=p_;
+ else:
+ Col[n]=CoulDefaut;
+ fi;
+ endfor;
+ %
+ Patron(#1);
+ EffectuerTraces;
+ \end{mpost}
+ \fi
+}
+
+\def\MPPatronCubeCodeold{%
+ Arete=\useKV[ClesPatron]{Arete};
+ %
+ pair C[],M[],N[],O[],P[];
+ %
+ color Col[],CoulDefaut;
+ CoulDefaut=white;
+ %
boolean Codes;
Codes=\useKV[ClesPatron]{Codes};
vardef Patron(text t)=
@@ -221,7 +670,7 @@
enddef;
}%
-\def\MPPatronCube#1#2{%
+\def\MPPatronCubeold#1#2{%
\ifluatex
\mplibforcehmode
\begin{mplibcode}
@@ -259,7 +708,7 @@
\fi
}
-\def\MPPatronPaveCode{%
+\def\MPPatronPaveCodeold{%
Largeur=\useKV[ClesPatron]{Largeur};
Hauteur=\useKV[ClesPatron]{Hauteur};
Profondeur=\useKV[ClesPatron]{Profondeur};
@@ -330,7 +779,7 @@
for k=1 upto Long-1:
if substring(k,k+1) of p_="o":
if k=1:
- PathPave:=(unitsquare scaled 0);
+ PathPave:=(unitsquare scaled 0) shifted ((0,-1));
fi;
elseif substring(k,k+1) of p_="l":
nbcol:=nbcol+1;
@@ -380,7 +829,7 @@
enddef;
}%
-\def\MPPatronPave#1#2{%
+\def\MPPatronPaveold#1#2{%
\ifluatex
\mplibforcehmode
\begin{mplibcode}
@@ -397,7 +846,7 @@
%
LectureLargeur(#1);
Patron(#1);
- EffectuerTraces;
+ %EffectuerTraces;
\end{mplibcode}
\else
\begin{mpost}[mpsettings={\MPPatronPaveCode;}]
diff --git a/macros/latex/contrib/profcollege/latex/PfCPixelArt.tex b/macros/latex/contrib/profcollege/latex/PfCPixelArt.tex
index 77eecfcb42..df380d48ee 100644
--- a/macros/latex/contrib/profcollege/latex/PfCPixelArt.tex
+++ b/macros/latex/contrib/profcollege/latex/PfCPixelArt.tex
@@ -26,9 +26,11 @@
}%
}%
}{%
- \quotient{\fpeval{\useKV[ClesPixelArt]{Numero}-1}}{\fpeval{\useKV[ClesPixelArt]{Hauteur}/\useKV[ClesPixelArt]{HauteurD}}}%
- \modulo{\fpeval{\useKV[ClesPixelArt]{Numero}-1}}{\fpeval{\useKV[ClesPixelArt]{Hauteur}/\useKV[ClesPixelArt]{HauteurD}}}%
-% quotient = \the\intquotient -- remainder = \the\remainder :
+% \quotient{\fpeval{\useKV[ClesPixelArt]{Numero}-1}}{\fpeval{\useKV[ClesPixelArt]{Hauteur}/\useKV[ClesPixelArt]{HauteurD}}}%
+% \modulo{\fpeval{\useKV[ClesPixelArt]{Numero}-1}}{\fpeval{\useKV[ClesPixelArt]{Hauteur}/\useKV[ClesPixelArt]{HauteurD}}}%
+ \quotient{\fpeval{\useKV[ClesPixelArt]{Numero}-1}}{\fpeval{\useKV[ClesPixelArt]{Largeur}/\useKV[ClesPixelArt]{LargeurD}}}%
+ \modulo{\fpeval{\useKV[ClesPixelArt]{Numero}-1}}{\fpeval{\useKV[ClesPixelArt]{Largeur}/\useKV[ClesPixelArt]{LargeurD}}}%
+% quotient = \the\intquotient -- remainder = \the\remainder :\\
\BuildPixelArtGeant{#2}{\useKV[ClesPixelArt]{Lettres}}{\ListeAvantCouleurs}{\the\toklistePANombre}{\the\intquotient}{\the\remainder}%
}%
}{%
diff --git a/macros/latex/contrib/profcollege/latex/PfCProbaFrequence.tex b/macros/latex/contrib/profcollege/latex/PfCProbaFrequence.tex
new file mode 100644
index 0000000000..dc6a39b7a5
--- /dev/null
+++ b/macros/latex/contrib/profcollege/latex/PfCProbaFrequence.tex
@@ -0,0 +1,185 @@
+%%%
+% Probabilité et fréquence
+%%%
+\setKVdefault[PfCFrequence]{Couleur=false,Lancers=1,Legende=false}%
+\defKV[PfCFrequence]{ListeCouleurs=\setKV[PfCFrequence]{Couleur}}%
+\defKV[PfCFrequence]{Legendes=\setKV[PfCFrequence]{Legende}\setsepchar{,}\reademptyitems\readlist*\PfMListeLegendes{#1}\reademptyitems}%
+
+\newtoks\tokPfMListeObjets%
+\newtoks\tokPfMListeLegendes%
+\def\UpdatetoksObj#1\nil{\addtotok\tokPfMListeObjets{#1,}}%
+\def\UpdatetoksLegendes#1\nil{\addtotok\tokPfMListeLegendes{"#1",}}%
+
+\NewDocumentCommand\ProbaFrequence{om}{%
+ % #1 options
+ % #2 répartition
+ \tokPfMListeObjets{}%
+ \tokPfMListeLegendes{}%
+ \useKVdefault[PfCFrequence]%
+ \setKV[PfCFrequence]{#1}%
+ \setsepchar{,}\ignoreemptyitems%
+ \readlist*\PfMListeObjets{#2}%
+ \reademptyitems%
+ \foreachitem\compteur\in\PfMListeObjets{\expandafter\UpdatetoksObj\compteur\nil}%
+ \ifboolKV[PfCFrequence]{Legende}{%
+ \foreachitem\compteur\in\PfMListeLegendes{\expandafter\UpdatetoksLegendes\compteur\nil}%
+ }{}%
+ \BuildFrequence{\the\tokPfMListeObjets}{\the\tokPfMListeLegendes}%
+}%
+
+\NewDocumentCommand\BuildFrequence{mm}{%
+ \ifluatex
+ \mplibnumbersystem{decimal}%
+ \begin{Geometrie}[CoinBG={u*(-5,0)},CoinHD={u*(7.5,7.5)}]%6 en ordonnee
+ Lancers = \useKV[PfCFrequence]{Lancers};
+ LegendeVide=0;
+ %
+ color Col[];
+ if \useKV[PfCFrequence]{Couleur}:
+ n:=0;
+ for p_=\useKV[PfCFrequence]{ListeCouleurs}:
+ n:=n+1;
+ if color p_:
+ Col[n]=p_;
+ else:
+ LegendeVide:=n;
+ fi;
+ endfor;
+ fi;
+ %
+ string Legende[];
+ vardef EcrireLegendes(text t)=
+ n:=0;
+ for p_=t:
+ n:=n+1;
+ if p_="":
+ LegendeVide:=n;
+ else:
+ Legende[n]=p_;
+ fi;
+ endfor;
+ n:=0;
+ enddef;
+ %
+ vardef LectureDonnees(text t)=
+ numeric A[];
+ numeric SommeTotale;
+ SommeTotale=0;
+ n:=0;
+ for p_=t:
+ n:=incr(n);
+ A[n]=p_;
+ SommeTotale:=SommeTotale+p_;
+ endfor;
+ total:=n;
+ enddef;
+ %
+ LectureDonnees(#1);
+ if \useKV[PfCFrequence]{Legende}:
+ EcrireLegendes(#2);
+ fi;
+ %
+ numeric borne[];
+ borne0=0;
+ for k=1 upto total:
+ borne[k]=borne[k-1]+A[k];
+ endfor;
+ %
+ x.u:=5mm;
+ y.u:=5mm;
+ quad.u:=5mm;
+ unites(1/(170*Lancers),5);
+ origine((1,4));
+ % grille
+ for k=1 upto 11:
+ draw (pp(0,0)--pp(0,1.1)) shifted(pp(k*Lancers*100,0)-pp(0,0)) withcolor gris;
+ draw (pp(0,0)--pp(Lancers*(1000+100),0)) shifted(pp(0,k/10)-pp(0,0)) withcolor gris;
+ endfor;
+ % axe
+ drawarrow pp(0,0)--pp(0,1.1);
+ drawarrow pp(0,0)--pp(Lancers*(1000+100),0);
+ % tiret
+ for k=1 upto 10:
+ draw (pp(k*Lancers*100,0)+u*(0,-0.05))--(pp(k*Lancers*100,0)+u*(0,0.05));
+ endfor;
+ numeric nb[],freq[];
+ pair Freq[][];
+ for k=1 upto total:
+ nb[k]:=0;
+ freq[k]=0;
+ endfor;
+ %
+ for k=1 upto (Lancers*1000):
+ nn:=floor(uniformdeviate(SommeTotale))+1;
+ if nn=0:
+ message("il est nul...");
+ fi;
+ for l=1 upto total:
+ if (nn>borne[l-1]) and (nn<borne[l]+1):
+ nb[l]:=nb[l]+1;
+ fi;
+ freq[l]:=nb[l]/k;
+ Freq[l][k]=pp(k,freq[l]);
+ endfor;
+ endfor;
+ %
+ def Style=enddef;
+ def Stylea=dashed evenly enddef;
+ def Styleb=dashed withdots scaled 1/2 enddef;
+ def Stylec=dashed dashpattern(on 1 off 1) enddef;
+ def Styled=dashed withdots scaled 1/4 enddef;
+ def Stylee=dashed dashpattern(on 6 off2) enddef;
+ parc:=0;
+ for l=1 upto total:
+ if \useKV[PfCFrequence]{Couleur}=false:
+ if (l mod 6)=1:
+ elseif (l mod 6)=2:
+ drawoptions(Stylea);
+ elseif (l mod 6)=3:
+ drawoptions(Styleb);
+ elseif (l mod 6)=4:
+ drawoptions(Stylec);
+ elseif (l mod 6)=5:
+ drawoptions(Styled);
+ else:
+ drawoptions(Stylee);
+ fi;
+ if \useKV[PfCFrequence]{Legende}:
+ parc:=incr(parc);
+ if l<>LegendeVide:
+ draw pp(Lancers*400*((parc-1) mod 3),-0.25-0.1*((parc-1) div 3))--pp(Lancers*400*((parc-1) mod 3)+125,-0.25-0.1*((parc-1) div 3));
+ label.rt(TEX(Legende[l]),pp(Lancers*400*((parc-1) mod 3)+125,-0.25-0.1*((parc-1) div 3)));
+ else:
+ parc:=parc-1;
+ fi;
+ fi;
+ fi;
+ %
+ if l<>LegendeVide:
+ if Lancers<1:
+ trace Freq[l][1]
+ for k=2 upto (1000*Lancers):
+ --Freq[l][k]
+ endfor withcolor if unknown Col[l]:black else:Col[l] fi;
+ else:
+ trace Freq[l][1]
+ for k=5 step 4 until (1000*Lancers):
+ --Freq[l][k]
+ endfor withcolor if unknown Col[l]:black else:Col[l] fi;
+ fi;
+ fi;
+ endfor;
+ drawoptions();
+ for k=1 upto 10 :
+ label.bot(TEX("\scriptsize\num{"&decimal((100*k)*Lancers)&"}"),pp(Lancers*100k,0));
+ endfor;
+ for k=2 step 2 until 10:
+ label.lft(TEX("\scriptsize\num{"&decimal(k/10)&"}"),pp(0,k/10));
+ endfor;
+ label.llft(TEX("\scriptsize 0"),pp(0,0));
+ label.urt(TEX("Fréquence"),pp(0,1));
+ label.bot(TEX("Nombre de lancers"),pp(0.5*Lancers*(1000+200),-0.075));
+ \end{Geometrie}
+ \mplibnumbersystem{scaled}
+ \fi
+}% \ No newline at end of file
diff --git a/macros/latex/contrib/profcollege/latex/PfCQuestionsRelier.tex b/macros/latex/contrib/profcollege/latex/PfCQuestionsRelier.tex
index 9745bb144c..aaf9a67f20 100644
--- a/macros/latex/contrib/profcollege/latex/PfCQuestionsRelier.tex
+++ b/macros/latex/contrib/profcollege/latex/PfCQuestionsRelier.tex
@@ -4,6 +4,9 @@
\setKVdefault[ClesRelie]{Solution=false,LargeurG=5cm,LargeurD=2cm,Stretch=1.5,Ecart=2cm,Couleur=black}%
\defKV[ClesRelie]{Graine=\PfCGraineAlea{#1}}%
+\newcounter{NbRelie}%
+\newcounter{NbRelieD}
+
\NewDocumentCommand\Relie{som}{%
\useKVdefault[ClesRelie]%
\setKV[ClesRelie]{#2}%
@@ -33,7 +36,13 @@
\itemtomacro\ListeRelie[##1,1]\untest%
\ifx\bla\untest\bla%
\else%
- \tikz[remember picture,overlay]{\draw[PfCRelieCouleurTrace] (RelieG-##1) -- (RelieD-\ListeRelie[##1,3]);}%
+ \itemtomacro\ListeRelie[##1,3]\Foo
+ \setsepchar{-}\ignoreemptyitems%
+ \readlist*\ListeRelieReponses{\Foo}%
+ \reademptyitems
+ \foreachitem\compteur\in\ListeRelieReponses{%
+ \tikz[remember picture,overlay]{\draw[PfCRelieCouleurTrace] (RelieG-##1) -- (RelieD-\ListeRelieReponses[\compteurcnt]);}%
+ }
\fi
}%
}{%
@@ -41,49 +50,39 @@
}%
}%
-\newcommand\Relieold[2][]{%
- \useKVdefault[ClesRelie]%
- \setKV[ClesRelie]{#1}%
- \setsepchar[*]{,*/}\reademptyitems%
- \readlist*\ListeRelie{#2}%
- \ignoreemptyitems
- \buildtabrelie%
- \ifboolKV[ClesRelie]{Solution}{%
- \colorlet{PfCRelieCouleurTrace}{\useKV[ClesRelie]{Couleur}}%
- \xintFor* ##1 in {\xintSeq {1}{\ListeRelielen}}\do{%
- \itemtomacro\ListeRelie[##1,1]\untest
- \ifx\bla\untest\bla%
- \else
- \tikz[remember picture,overlay]{\draw[PfCRelieCouleurTrace] (RelieG-##1) -- (RelieD-\ListeRelie[##1,3]);}%
- \fi
- }%
- }{%
- }%
-}%
-
-\newcounter{NbRelie}%
-
\def\buildtabrelie{%
\setcounter{NbRelie}{0}%
+ \setcounter{NbRelieD}{0}%
\renewcommand{\arraystretch}{\useKV[ClesRelie]{Stretch}}%
- \begin{tabular}{p{\useKV[ClesRelie]{LargeurG}}cp{\useKV[ClesRelie]{Ecart}}>{\tikz[remember
- picture]{\node[name=RelieD-\theNbRelie,inner
- sep=0pt]{};\fill[] (RelieD-\theNbRelie) circle[radius=1.5pt]}}cp{\useKV[ClesRelie]{LargeurD}}}%
- \xintFor* ##1 in {\xintSeq {1}{\ListeRelielen}}\do{\ListeRelie[##1,1]\itemtomacro\ListeRelie[##1,1]\untest%
-\ifx\bla\untest\bla%
+ \begin{tabular}{p{\useKV[ClesRelie]{LargeurG}}cp{\useKV[ClesRelie]{Ecart}}cp{\useKV[ClesRelie]{LargeurD}}}%
+ \xintFor* ##1 in {\xintSeq {1}{\ListeRelielen}}\do{%
+ \ListeRelie[##1,1]\itemtomacro\ListeRelie[##1,1]\untest%
+ \ifx\bla\untest\bla%
\uppercase{&}\stepcounter{NbRelie}%
\else
\uppercase{&}\stepcounter{NbRelie}\tikz[remember
picture,overlay]{\node[name=RelieG-\theNbRelie,inner
sep=0pt]{};\fill[]
(RelieG-\theNbRelie) circle[radius=1.5pt];}
-\fi&&&\ListeRelie[##1,2]\\}%
+ \fi&&
+ \itemtomacro\ListeRelie[##1,2]\untest
+ \ifx\bla\untest\bla\else\stepcounter{NbRelieD}\tikz[remember
+ picture]{\node[name=RelieD-\theNbRelieD,inner
+ sep=0pt]{};\fill[] (RelieD-\theNbRelieD) circle[radius=1.5pt]}
+ \fi
+ &\itemtomacro\ListeRelie[##1,2]\untest%
+ \ifx\bla\untest\bla
+ \else
+ \ListeRelie[##1,2]
+ \fi\\}%
\end{tabular}%
- \setcounter{NbRelie}{0}%
+ %\setcounter{NbRelie}{0}%
+ %\setcounter{NbRelieD}{0}%
}%
\def\buildtabrelieauto{%
\setcounter{NbRelie}{0}%
+ \setcounter{NbRelieD}{0}%
\xdef\PfCFooListeNbQ{1}%
\xintFor* ##1 in{\xintSeq{2}{\ListeRelielen}}\do{%
\xdef\PfCFooListeNbQ{\PfCFooListeNbQ,##1}%
@@ -110,4 +109,5 @@
\fi&&&\itemtomacro\PfCListeReponsesMelangees[##1]\PfCNumReponses\ListeRelie[\PfCNumReponses,2]\\}%
\end{tabular}%
\setcounter{NbRelie}{0}%
-}% \ No newline at end of file
+}%
+
diff --git a/macros/latex/contrib/profcollege/latex/PfCSolides.tex b/macros/latex/contrib/profcollege/latex/PfCSolides.tex
index 9da7bce259..037b80e50f 100644
--- a/macros/latex/contrib/profcollege/latex/PfCSolides.tex
+++ b/macros/latex/contrib/profcollege/latex/PfCSolides.tex
@@ -1,11 +1,118 @@
%%%
% Solide et sections
%%%
-\setKVdefault[ClesSolides]{Nom=cube,Aretes,Sommets,Pointilles,Largeur=1.5,Hauteur=1,Profondeur=0.75,ListeSommets={A,B,C,D,E,F,G,H},Rho=1500,Phi=30,Theta=20,Distance=50,Code=false,Couleur=white,Anglex=0,RayonCone=1,HauteurCone=2,HauteurPyramide=2,SommetsPyramide=5,Reguliere=false,DecalageSommet={(0,0,0)},RayonCylindre=1,HauteurCylindre=2,RayonSphere=1,AutoLabel=true,Sections=false,CoefSection=0.3,Axes=false,PointsSection={M,N,O,P},RemplisSection=false,ObjetSection={0.5,E,H,0.25,F,G,G,B}}%
+\setKVdefault[ClesSolides]{Nom=cube,Aretes,Sommets,Pointilles,Largeur=1.5,Hauteur=1,Profondeur=0.75,ListeSommets={A,B,C,D,E,F,G,H},Rho=1500,Phi=30,Theta=20,Distance=50,Code=false,Couleur=white,Anglex=0,Arete=1,RayonCone=1,HauteurCone=2,HauteurPrisme=2,SommetsPrisme=6,HauteurPyramide=2,SommetsPyramide=5,Reguliere=false,DecalageSommet={(0,0,0)},RayonCylindre=1,HauteurCylindre=2,RayonSphere=1,AutoLabel=true,Sections=false,CoefSection=0.3,Axes=false,PointsSection={M,N,O,P},RemplisSection=false,ObjetSection={0.5,E,H,0.25,F,G,G,B}}%
\defKV[ClesSolides]{Traces=\setKV[ClesSolides]{Code}}%
\defKV[ClesSolides]{Section=\setKV[ClesSolides]{Sections}}%
\defKV[ClesSolides]{CouleurSection=\setKV[ClesSolides]{RemplisSection}}%
+\newcommand\MPSolidePrisme[4]{%
+ \ifluatex
+ \mplibnumbersystem{double}
+ \mplibforcehmode
+ \begin{mplibcode}
+ input PfCSolid;
+
+ boolean Pointilles,TraceArete,NommeSommets,Code,AutoLabel,Sections,RemplisSection;
+ AutoLabel:=\useKV[ClesSolides]{AutoLabel};
+ Pointilles=\useKV[ClesSolides]{Pointilles};
+ TraceArete=\useKV[ClesSolides]{Aretes};
+ NommeSommets=\useKV[ClesSolides]{Sommets};
+ Code=\useKV[ClesSolides]{Code};
+ Sections:=\useKV[ClesSolides]{Sections};
+ RemplisSection=\useKV[ClesSolides]{RemplisSection};
+ if RemplisSection:color CouleurSection;CouleurSection=\useKV[ClesSolides]{CouleurSection};fi;
+
+ color PfCOutColor;
+ PfCOutColor=Cornsilk;%\useKV[ClesSolides]{Couleur};
+
+ string Section;
+ if Sections:Section=\useKV[ClesSolides]{Section};fi;
+
+ %Initialisation
+ PfCRho=\useKV[ClesSolides]{Rho};
+ PfCPhi=\useKV[ClesSolides]{Phi};
+ PfCTheta=\useKV[ClesSolides]{Theta};
+ PfCDistance=\useKV[ClesSolides]{Distance};
+ anglerotationx=\useKV[ClesSolides]{Anglex};
+ hauteurprisme=\useKV[ClesSolides]{HauteurPrisme};
+ nombresommets=\useKV[ClesSolides]{SommetsPrisme};
+ Initialisation(PfCRho,PfCPhi,PfCTheta,PfCDistance);
+ typetrace:="3D";
+ typerepre:="persp";
+ eclairage:=false;
+ incolor:=white;
+ outcolor:=white;
+ if Pointilles=false:
+ pointilles:="non";
+ fi;
+
+ Ferme1:=true;
+
+ color A,B,C,D,E,F,G,H;
+ color Sommet[];
+
+ NbS:=nombresommets;
+
+ color TS[];
+
+ ecartangle=360/(NbS/2);
+ for k=1 upto (NbS/2):
+ repereangle:=(k-2)*ecartangle+(ecartangle*0.25+uniformdeviate(floor(ecartangle/2)));
+ TS[k]:=(cosd(repereangle),-sind(repereangle),0);
+ endfor;
+ TS[NbS/2+1]:=TS[1];
+
+ for k=1 upto (NbS/2):
+ TS[NbS/2+1+k]:=TS[k]+(0,0,hauteurprisme);
+ endfor;
+ TS[NbS+2]:=TS[NbS/2+2];
+
+ angx:=anglerotationx;
+ for k=1 upto (NbS+2):
+ TS[k]:=RotXYZ(TS[k]);
+ endfor;
+ angx:=0;
+
+ ObjetNew1(%
+ TS1, for k=2 upto (NbS+1):TS[k], endfor TS[NbS+2]
+ )(%
+ NbS/2, for p_=1 upto NbS/2:p_, endfor
+ NbS/2, for p_=NbS/2+1 downto NbS+2:p_, endfor
+ for p=1 upto NbS/2:
+ 4,p,p+1,NbS/2+1+p+1,NbS/2+1+p,%
+ endfor
+ );
+ %AffichageObjet1;
+
+ NF:=(NbS/2+2);
+ Fc[100*(NbS/2+1)]:=NbS/2;
+ for k=1 upto NbS/2:
+ Fc[100*(NbS/2+1)+k]:=k;
+ endfor;
+ Fc[100*(NbS/2+2)]:=NbS/2;
+ for k=1 upto NbS/2:
+ Fc[100*(NbS/2+2)+k]:=NbS+2-k;
+ endfor;
+ for l=1 upto NbS/2:
+ Fc[l*100]:=4;
+ %for k=1 upto 4:
+ Fc[l*100+1]:=l;Fc[l*100+4]:=l+1;Fc[l*100+3]:=NbS/2+1+l+1;Fc[l*100+2]:=NbS/2+1+l;
+ %Fc[101]:=1;Fc[102]:=2;Fc[103]:=6;Fc[104]:=5;
+ %endfor;
+ endfor;
+ DessineObjet;
+% picture Depart;
+% Depart=currentpicture;
+% currentpicture:=nullpicture;
+% for k=1 upto 8:
+% dotlabel.top(decimal(k),Projette(TS[k]));
+% endfor;
+ \end{mplibcode}
+ \mplibnumbersystem{scaled}
+ \fi
+}
+
\newcommand\MPSolideCylindre[3]{%
\ifluatex
\mplibnumbersystem{double}
@@ -927,7 +1034,7 @@
\foreachitem\compteur\in\ListeNomSommet{\expandafter\UpdatetoksSolide\compteur\nil}%\the\toksolidelistesommets%
\IfStrEqCase{\useKV[ClesSolides]{Nom}}{%
{cube}{%
- \MPSolidePave{\useKV[ClesSolides]{ListeSommets}}{\the\toksolidelistesommets}{1,1,1}{\useKV[ClesSolides]{PointsSection}}{\useKV[ClesSolides]{ObjetSection}}%
+ \MPSolidePave{\useKV[ClesSolides]{ListeSommets}}{\the\toksolidelistesommets}{\useKV[ClesSolides]{Arete},\useKV[ClesSolides]{Arete},\useKV[ClesSolides]{Arete}}{\useKV[ClesSolides]{PointsSection}}{\useKV[ClesSolides]{ObjetSection}}%
}%
{pave}{%
\MPSolidePave{\useKV[ClesSolides]{ListeSommets}}{\the\toksolidelistesommets}{\useKV[ClesSolides]{Profondeur},\useKV[ClesSolides]{Largeur},\useKV[ClesSolides]{Hauteur}}{\useKV[ClesSolides]{PointsSection}}{\useKV[ClesSolides]{ObjetSection}}%
@@ -935,6 +1042,9 @@
{cone}{%
\MPSolideCone{\useKV[ClesSolides]{ListeSommets}}{\the\toksolidelistesommets}{\useKV[ClesSolides]{PointsSection}}%
}%
+ {prisme}{%
+ \MPSolidePrisme{\useKV[ClesSolides]{ListeSommets}}{\the\toksolidelistesommets}{}{\useKV[ClesSolides]{PointsSection}}%
+ }%
{pyramide}{%
\MPSolidePyramide{\useKV[ClesSolides]{ListeSommets}}{\the\toksolidelistesommets}{\useKV[ClesSolides]{DecalageSommet}}{\useKV[ClesSolides]{PointsSection}}%
}%
diff --git a/macros/latex/contrib/profcollege/latex/PfCTortueBase.tex b/macros/latex/contrib/profcollege/latex/PfCTortueBase.tex
index 949c781ce7..461a42fb71 100644
--- a/macros/latex/contrib/profcollege/latex/PfCTortueBase.tex
+++ b/macros/latex/contrib/profcollege/latex/PfCTortueBase.tex
@@ -18,9 +18,10 @@
Axes=false,%Affichage des axes ou pas
Origine={(0,0)},%Origine des axes
Cases=false,%Se déplace-t-on sur des cases ?
+ Trace=false%
}
\defKV[Tortue]{Etape=\setKV[Tortue]{Etapes}}%choix de l'étape d'arrêt
-
+\defKV[Tortue]{Traces=\setKV[Tortue]{Trace}}%
\newcounter{PfCTortue}
\setcounter{PfCTortue}{0}
@@ -178,6 +179,9 @@
\ifboolKV[Tortue]{Etapes}{%
\immediate\write\turtle@out{drawoptions(withcolor DarkGreen);label(btex \noexpand\Large\noexpand\ding{40} etex rotated RetiensAngle[Total] scaled 1.5,A[Total]);}%
}{\ifboolKV[Tortue]{TortueF}{\immediate\write\turtle@out{drawoptions(withcolor DarkGreen);label(btex \noexpand\Large\noexpand\ding{40} etex rotated RetiensAngle[k] scaled 1.5,A[k]);}}{}}%
+ \ifboolKV[Tortue]{Trace}{%
+ \immediate\write\turtle@out{\useKV[Tortue]{Traces}}%
+ }{}%
\immediate\closeout\turtle@out%
\restorecomparemode%
}%
diff --git a/macros/latex/contrib/profcollege/latex/PfCUrneProba.tex b/macros/latex/contrib/profcollege/latex/PfCUrneProba.tex
new file mode 100644
index 0000000000..895f96136c
--- /dev/null
+++ b/macros/latex/contrib/profcollege/latex/PfCUrneProba.tex
@@ -0,0 +1,928 @@
+%%%
+% Urne et probabilités
+%%%
+\newtoks\tokUrneListeCouleurs%
+\newtoks\tokUrneListeColonnes%
+\newtoks\tokUrneListeNombres%
+
+\def\UpdatetoksUrneCouleurs#1\nil{\addtotok\tokUrneListeCouleurs{#1,}}%
+\def\UpdatetoksUrneNombres#1\nil{\addtotok\tokUrneListeNombres{"#1",}}%
+\def\UpdatetoksUrneColonnes#1\nil{\addtotok\tokUrneListeColonnes{"#1",}}%
+
+\setKVdefault[PfCUrne]{Couleurs=false,Nombres=false,Pas=4,Echelle=1,Repartition={1,2,3},Double=false,RepartitionC={1,2,3},RepartitionN={1,2,3},Roue=false,Rayon=3,Tableau=false,SansRemise=false,Solution=false,Codes=false,CouleurLigne=0.85white,CouleurColonne=0.85white,Different=false,RepartitionLigne={1,2,3},RepartitionColonne={1,2,3},Impression,Casino=false}%
+\defKV[PfCUrne]{Traces=\setKV[PfCUrne]{Codes}}%
+\defKV[PfCUrne]{ListeCouleurs=\setKV[PfCUrne]{Couleurs}\setsepchar{,}\ignoreemptyitems\readlist*\ListeCouleursAv{#1}\reademptyitems}%
+\defKV[PfCUrne]{ListeNombres=\setKV[PfCUrne]{Nombres}\setsepchar{,}\ignoreemptyitems\readlist*\ListeNombresAv{#1}\reademptyitems}%
+\defKV[PfCUrne]{ListeColonne=\setsepchar{,}\ignoreemptyitems\readlist*\ListeCouleursAv{#1}\reademptyitems}%
+\defKV[PfCUrne]{ListeLigne=\setsepchar{,}\ignoreemptyitems\readlist*\ListeNombresAv{#1}\reademptyitems}%
+
+\NewDocumentCommand\BuildRoulette{}{%
+ \ifluatex
+ \begin{Geometrie}[Cadre="aucun"]
+ u:=\useKV[PfCUrne]{Echelle}*1cm;
+
+ color colzero,colrouge,coltoura,coltourb,colbarre;
+
+ boolean Impression;
+ Impression=\useKV[PfCUrne]{Impression};
+
+ if Impression=false:
+ colzero=green;
+ colrouge=red;
+ coltoura=(179,103,0)/256;
+ coltourb=(179,111,48)/256;%(184,114,50)/256;
+ colbarre=0.7529white;
+ else:
+ colzero=white;
+ colrouge=white;
+ coltoura=black;
+ coltourb=black;
+ colbarre=black;
+ fi;
+ pair O,A[],B[],C[],D[];
+ path cc[];
+ O=(0,0);
+ cc1=cercles(O,2u);
+ cc2=cercles(O,2.75u);
+ cc3=cercles(O,3.5u);
+ cc4=cercles(O,3.7u);
+ cc5=cercles(O,4u);
+ cc6=cercles(O,3.125u);
+ cc7=cercles(O,2.375u);
+ if Impression=false:
+ fill cc5 withcolor coltoura;
+ fill cc4 withcolor coltourb;
+ fill cc1 withcolor coltoura;
+ trace cc1 withpen pencircle scaled 1.05;
+ trace cc5 withpen pencircle scaled 1.05;
+ trace cc4 withpen pencircle scaled 1.05;
+ trace cc3 withpen pencircle scaled 1.05;
+ else:
+ fill cc5;
+ fill cc4 withcolor white;
+ trace cc1;
+ trace cc3;
+ fi;
+ for k=0 upto 38:
+ A[k]=pointarc(cc3,90-k*(360/37));
+ B[k]=pointarc(cc1,90-k*(360/37));
+ endfor;
+ na:=1;
+ for p_=32,15,19,4,21,2,25,17,34,6,27,13,36,11,30,8,23,10,5,24,16,33,1,20,14,31,9,22,18,29,7,28,12,35,3,26,0:
+ if (na mod 2)=0:
+ fill arccercle(A[na],A[na-1],O)--B[na-1]--reverse(arccercle(B[na],B[na-1],O))--cycle;
+ drawoptions(withcolor white);
+ label(TEX("\textbf{"&decimal(p_)&"}") rotated (-na*(360/37)),pointarc(cc6,90+0.5*(360/37)-na*(360/37)));
+ drawoptions();
+ else:
+ if p_=0:
+ fill arccercle(A[na],A[na-1],O)--B[na-1]--reverse(arccercle(B[na],B[na-1],O))--cycle withcolor colzero;
+ else:
+ fill arccercle(A[na],A[na-1],O)--B[na-1]--reverse(arccercle(B[na],B[na-1],O))--cycle withcolor colrouge;
+ fi;
+ if Impression=false:
+ drawoptions(withcolor white);
+ fi;
+ label(TEX("\textbf{"&decimal(p_)&"}") rotated (-na*(360/37)),pointarc(cc6,90+0.5*(360/37)-na*(360/37)));
+ if Impression=false:
+ drawoptions();
+ fi;
+ fi;
+ trace arccercle(A[na],A[na-1],O)--B[na-1]--reverse(arccercle(B[na],B[na-1],O))--cycle;
+ na:=na+1;
+ endfor;
+ trace cc2;
+ fill cercles(pointarc(cc7,90+0.5*(360/37)),0.125u);%dotlabel("",);
+ % barre
+ cc8=cercles(O,1.5u);
+ cc9=cercles(O,0.25u);
+ fill cc9 withcolor colbarre;
+ pair E[];
+ anglebase=floor(uniformdeviate(360));
+ E1=pointarc(cc8,anglebase);
+ E4=pointarc(cc8,anglebase+6);
+ E3=symetrie(E1,O);
+ E2=symetrie(E4,O);
+ E5=pointarc(cc8,anglebase+90);
+ E8=pointarc(cc8,anglebase+6+90);
+ E7=symetrie(E5,O);
+ E6=symetrie(E8,O);
+ fill polygone(E1,E2,E3,E4) withcolor colbarre;
+ fill polygone(E5,E6,E7,E8) withcolor colbarre;
+ pair F[];
+ F1=(E1--iso(E1,E2)) intersectionpoint cc9;
+ F2=(E4--iso(E3,E4)) intersectionpoint cc9;
+ F3=(E5--iso(E6,E5)) intersectionpoint cc9;
+ F4=(E8--iso(E7,E8)) intersectionpoint cc9;
+ F5=(E3--iso(E4,E3)) intersectionpoint cc9;
+ F6=(E2--iso(E2,E1)) intersectionpoint cc9;
+ F7=(E7--iso(E8,E7)) intersectionpoint cc9;
+ F8=(E6--iso(E6,E5)) intersectionpoint cc9;
+ trace E1--E4--F2--arccercle(F2,F3,O)--E5--E8--F4--arccercle(F4,F5,O)--E3--E2--F6--arccercle(F6,F7,O)--E7--E6--F8--arccercle(F8,F1,O)--cycle;
+ \end{Geometrie}
+ \fi
+}%
+
+\NewDocumentCommand\BuildTableauDoubleEntreeDifferent{mmmm}{%
+ % #1 : les labels en colonne
+ % #2 : les labels en ligne
+ % #3 : la répartition en colonne
+ % #4 : la répartition en ligne
+ \ifluatex
+ \mplibforcehmode
+ \begin{mplibcode}
+ u:=\useKV[PfCUrne]{Echelle}*1cm;
+ numeric RetiensNumC[],RetiensNumL[];
+ %
+ vardef RecupRepartition(text t)=
+ n:=0;
+ for p_=t:
+ RetiensNumL[n]=p_;
+ n:=n+1;
+ endfor;
+ totallignes=n;
+ enddef;
+ %
+ vardef RecupRepartitionC(text t)=
+ n:=0;
+ for p_=t:
+ RetiensNumC[n]=p_;
+ n:=n+1;
+ endfor;
+ totalcolonnes=n;
+ enddef;
+ %
+ string Colonnes[];
+ vardef RecuperationColonnes(text t)=
+ n:=0;
+ for p_=t:
+ n:=n+1;
+ Colonnes[n]=p_;
+ endfor;
+ enddef;
+ %
+ string Lignes[];
+ vardef RecuperationLignes(text t)=
+ n:=0;
+ for p_=t:
+ n:=n+1;
+ Lignes[n]=p_;
+ endfor;
+ enddef;
+ %
+ boolean Solution, Codes;
+ Solution=\useKV[PfCUrne]{Solution};
+ Codes=\useKV[PfCUrne]{Codes};
+ %
+ color ColLigne,ColColonne;
+ ColLigne=\useKV[PfCUrne]{CouleurLigne};
+ ColColonne=\useKV[PfCUrne]{CouleurColonne};
+ %
+ RecupRepartitionC(#3);
+ RecupRepartition(#4);
+ RecuperationColonnes(#1);
+ RecuperationLignes(#2);
+
+ pair A[][],C[][];
+ for k=0 upto totallignes+1:
+ for l=0 upto totalcolonnes+1:
+ A[k][l]=(0,0) shifted(u*(l,-k));
+ C[k][l]=A[k][l] shifted(u*(0.5,-0.5));
+ endfor;
+ endfor;
+
+ fill polygone(A[0][1],A[0][totalcolonnes+1],A[1][totalcolonnes+1],A[1][1]) withcolor ColLigne;
+ fill polygone(A[1][0],A[totallignes+1][0],A[totallignes+1][1],A[1][1]) withcolor ColColonne;
+ for k=1 upto totalcolonnes:
+ label(TEX(Colonnes[RetiensNumC[k-1]]),iso(A[1][k],A[0][k+1]));
+ endfor;
+ for k=1 upto totallignes:
+ label(TEX(Lignes[RetiensNumL[k-1]]),iso(A[k][0],A[k+1][1]));
+ endfor;
+ %
+ for k=1 upto totallignes:
+ trace segment(A[k][0],A[k][totalcolonnes+1]);
+ endfor;
+ for k=1 upto totalcolonnes:
+ trace segment(A[0][k],A[totallignes+1][k]);
+ endfor;
+ trace A[1][0]--A[totallignes+1][0]--A[totallignes+1][totalcolonnes+1]--A[0][totalcolonnes+1]--A[0][1];
+ labeloffset:=labeloffset*4;
+ label.top(TEX("Tirage 1"),iso(A[0][1],A[0][totalcolonnes+1]));
+ label.lft(TEX("Tirage 2") rotated 90,iso(A[totallignes+1][0],A[1][0]));
+ labeloffset:=labeloffset/4;
+
+ path ccsol[][];
+
+ if Solution:
+ for k=1 upto totallignes:
+ for l=1 upto totalcolonnes:
+ label(TEX(Colonnes[RetiensNumC[l-1]]&"--"&Lignes[RetiensNumL[k-1]]),iso(A[k][l],A[k+1][l+1]));
+ endfor;
+ endfor;
+ fi;
+
+ if Codes:
+ \useKV[PfCUrne]{Traces};
+ fi;
+ \end{mplibcode}
+ \fi
+}%
+
+\NewDocumentCommand\BuildTableauDoubleEntree{mmm}{%
+ \ifluatex
+ \mplibforcehmode
+ \begin{mplibcode}
+ u:=\useKV[PfCUrne]{Echelle}*1cm;
+ numeric RetiensNum[];
+ %
+ vardef RecupRepartition(text t)=
+ n:=0;
+ for p_=t:
+ RetiensNum[n]=p_;
+ n:=n+1;
+ endfor;
+ totalboules=n;
+ enddef;
+ %
+ color Col[];
+ vardef RecuperationCouleurs(text t)=
+ n:=0;
+ for p_=t:
+ n:=n+1;
+ Col[n]=p_;
+ endfor;
+ enddef;
+ %
+ string Nombres[];
+ vardef RecuperationNombres(text t)=
+ n:=0;
+ for p_=t:
+ n:=n+1;
+ Nombres[n]=p_;
+ endfor;
+ enddef;
+ %
+ numeric Pas,Rayon;
+ Pas=\useKV[PfCUrne]{Pas};
+ Rayon=\useKV[PfCUrne]{Rayon};
+ %
+ boolean Couleurs, Nombres, Roue, Solution, SansRemise, Codes;
+ Couleurs=\useKV[PfCUrne]{Couleurs};
+ Nombres=\useKV[PfCUrne]{Nombres};
+ Roue=\useKV[PfCUrne]{Roue};
+ Solution=\useKV[PfCUrne]{Solution};
+ SansRemise=\useKV[PfCUrne]{SansRemise};
+ Codes=\useKV[PfCUrne]{Codes};
+
+ color ColLigne,ColColonne;
+ ColLigne=\useKV[PfCUrne]{CouleurLigne};
+ ColColonne=\useKV[PfCUrne]{CouleurColonne};
+
+ RecupRepartition(#3);
+ if Couleurs:
+ RecuperationCouleurs(#1);
+ fi;
+ if Nombres:
+ RecuperationNombres(#2);
+ fi;
+
+ pair O;
+ pair A[][],C[][];
+ for k=0 upto totalboules+1:
+ for l=0 upto totalboules+1:
+ A[k][l]:=(0,0) shifted(u*(l,-k));
+ endfor;
+ endfor;
+
+ for k=0 upto totalboules:
+ for l=0 upto totalboules:
+ C[k][l]=A[k][l] shifted(u*(0.5,-0.5));
+ endfor;
+ endfor;
+
+ if Couleurs:
+ drawoptions(withpen pencircle scaled 0.75);
+ for k=1 upto totalboules:
+ fill cercles(iso(A[1][k],A[0][k+1]),0.35u) withcolor Col[RetiensNum[k-1]];
+ fill cercles(iso(A[k][0],A[k+1][1]),0.35u) withcolor Col[RetiensNum[k-1]];
+ trace cercles(iso(A[1][k],A[0][k+1]),0.35u);
+ trace cercles(iso(A[k][0],A[k+1][1]),0.35u);
+ endfor;
+ drawoptions();
+ else:
+ fill polygone(A[0][1],A[0][totalboules+1],A[1][totalboules+1],A[1][1]) withcolor ColLigne;
+ fill polygone(A[1][0],A[totalboules+1][0],A[totalboules+1][1],A[1][1]) withcolor ColColonne;
+ for k=1 upto totalboules:
+ label(TEX(Nombres[RetiensNum[k-1]]),iso(A[1][k],A[0][k+1]));
+ label(TEX(Nombres[RetiensNum[k-1]]),iso(A[k][0],A[k+1][1]));
+ endfor;
+ fi;
+ if SansRemise:
+ for k=1 upto totalboules:
+ draw 1/8[A[k][k],A[k+1][k+1]]--7/8[A[k][k],A[k+1][k+1]];
+ draw 1/8[A[k+1][k],A[k][k+1]]--7/8[A[k+1][k],A[k][k+1]];
+ endfor;
+ fi;
+ for k=1 upto totalboules:
+ trace segment(A[k][0],A[k][totalboules+1]);
+ trace segment(A[0][k],A[totalboules+1][k]);
+ endfor;
+ trace A[1][0]--A[totalboules+1][0]--A[totalboules+1][totalboules+1]--A[0][totalboules+1]--A[0][1];
+ labeloffset:=labeloffset*4;
+ label.top(TEX("Tirage 1"),iso(A[0][1],A[0][totalboules+1]));
+ label.lft(TEX("Tirage 2") rotated 90,iso(A[totalboules+1][0],A[1][0]));
+ labeloffset:=labeloffset/4;
+
+ path ccsol[][];
+
+ if Solution:
+ if Couleurs:
+ drawoptions(withpen pencircle scaled 0.75);
+ for k=1 upto totalboules:
+ for l=1 upto totalboules:
+ ccsol[k][l]=cercles(iso(A[k][l],A[k+1][l+1]),0.25u);
+ if SansRemise:
+ if k<>l:
+ fill arccercle(pointarc(ccsol[k][l],315),pointarc(ccsol[k][l],135),iso(A[k][l],A[k+1][l+1]))--iso(A[k][l],A[k+1][l+1])--cycle withcolor Col[RetiensNum[l-1]];
+ fill arccercle(pointarc(ccsol[k][l],135),pointarc(ccsol[k][l],315),iso(A[k][l],A[k+1][l+1]))--iso(A[k][l],A[k+1][l+1])--cycle withcolor Col[RetiensNum[k-1]];
+ trace segment(pointarc(ccsol[k][l],135),pointarc(ccsol[k][l],315));
+ trace ccsol[k][l];
+ fi;
+ else:
+ fill arccercle(pointarc(ccsol[k][l],315),pointarc(ccsol[k][l],135),iso(A[k][l],A[k+1][l+1]))--iso(A[k][l],A[k+1][l+1])--cycle withcolor Col[RetiensNum[l-1]];
+ fill arccercle(pointarc(ccsol[k][l],135),pointarc(ccsol[k][l],315),iso(A[k][l],A[k+1][l+1]))--iso(A[k][l],A[k+1][l+1])--cycle withcolor Col[RetiensNum[k-1]];
+ trace segment(pointarc(ccsol[k][l],135),pointarc(ccsol[k][l],315));
+ trace ccsol[k][l];
+ fi;
+ endfor;
+ endfor;
+ drawoptions();
+ else:
+ for k=1 upto totalboules:
+ for l=1 upto totalboules:
+ if SansRemise:
+ if k<>l:
+ label(TEX(Nombres[RetiensNum[l-1]]&"--"&Nombres[RetiensNum[k-1]]),iso(A[k][l],A[k+1][l+1]));
+ fi;
+ else:
+ label(TEX(Nombres[RetiensNum[l-1]]&"--"&Nombres[RetiensNum[k-1]]),iso(A[k][l],A[k+1][l+1]));
+ fi;
+ endfor;
+ endfor;
+ fi;
+ fi;
+
+ if Codes:
+ \useKV[PfCUrne]{Traces};
+ fi;
+ \end{mplibcode}
+ \fi
+}%
+
+\NewDocumentCommand\BuildUrne{mmm}{%
+ \ifluatex
+ \mplibforcehmode
+ \begin{mplibcode}
+ u:=\useKV[PfCUrne]{Echelle}*1cm;
+ numeric RetiensNum[];
+ vardef RecupRepartition(text t)=
+ n:=0;
+ for p_=t:
+ RetiensNum[n]=p_;
+ n:=n+1;
+ endfor;
+ totalboules=n;
+ enddef;
+
+ color Col[];
+ vardef RecuperationCouleurs(text t)=
+ n:=0;
+ for p_=t:
+ n:=n+1;
+ Col[n]=p_;
+ endfor;
+ enddef;
+
+ string Nombres[];
+ vardef RecuperationNombres(text t)=
+ n:=0;
+ for p_=t:
+ n:=n+1;
+ Nombres[n]=p_;
+ endfor;
+ enddef;
+
+ numeric Pas,Rayon;
+ Pas=\useKV[PfCUrne]{Pas};
+ Rayon=\useKV[PfCUrne]{Rayon};
+
+ boolean Couleurs, Nombres, Roue;
+ Couleurs=\useKV[PfCUrne]{Couleurs};
+ Nombres=\useKV[PfCUrne]{Nombres};
+ Roue=\useKV[PfCUrne]{Roue};
+
+ RecupRepartition(#3);
+ if Couleurs:
+ RecuperationCouleurs(#1);
+ fi;
+ if Nombres:
+ RecuperationNombres(#2);
+ fi;
+
+ pair O;
+ pair A[],B[];
+
+ if Roue:
+ O=(0,0);
+ path cc;
+ cc=cercles(O,Rayon*u);
+ angd=180/totalboules;
+ angr=360/totalboules;
+ for k=1 upto totalboules:
+ A[k]=17/20[O,pointarc(cc,angd+(k-1)*angr)];
+ endfor;
+ drawarrow rotation((O+u*(0,1.35*Rayon))--(O+u*(0,1.1*Rayon)),O,angd);
+ % trace cc;
+ B[0]=pointarc(cc,0);
+ for k=1 upto totalboules:
+ B[k]=pointarc(cc,k*angr);
+ if Couleurs:
+ fill O--arccercle(B[k-1],B[k],O)--cycle withcolor if unknown Col[RetiensNum[k-1]]:white else: Col[RetiensNum[k-1]] fi;
+ else:
+ label(TEX(Nombres[RetiensNum[k-1]]),A[k]);
+ fi;
+ endfor;
+ trace cc;
+ for k=1 upto totalboules:
+ trace O--B[k];
+ endfor;
+ else:
+ for k=0 upto (totalboules div Pas)-1:
+ for l=0 upto Pas-1:
+ rang:=k*Pas+l;
+ A[rang]=u*(0.5,0.5)+u*(l,k);
+ if Couleurs:
+ fill cercles(A[rang],0.5u) withcolor if unknown Col[RetiensNum[rang]]:white else: Col[RetiensNum[rang]] fi;
+ else:
+ label(TEX(Nombres[RetiensNum[rang]]),A[rang]);
+ fi;
+ %trace cercles(A[k*Pas+l],0.5u);
+ endfor;
+ endfor;
+ for k=0 upto (totalboules mod Pas)-1:
+ rang:=(totalboules div Pas)*Pas+k;
+ A[rang]=u*(0.5,0.5)+u*(k+0.5,totalboules div Pas-1+cosd(30));
+ if Couleurs:
+ fill cercles(A[rang],0.5u) withcolor if unknown Col[RetiensNum[rang]]:white else: Col[RetiensNum[rang]] fi;
+ else:
+ label(TEX(Nombres[RetiensNum[rang]]),A[rang]);
+ fi;
+ %trace cercles(A[(totalboules div Pas)*Pas+k],0.5u);
+ endfor;
+ %
+ for k=0 upto (totalboules div Pas)-1:
+ for l=0 upto Pas-1:
+ rang:=k*Pas+l;
+ trace cercles(A[rang],0.5u);
+ endfor;
+ endfor;
+ for k=0 upto (totalboules mod Pas)-1:
+ rang:=(totalboules div Pas)*Pas+k;
+ trace cercles(A[rang],0.5u);
+ endfor;
+ %
+ drawoptions(withpen pencircle scaled 1.2);
+ if totalboules<Pas:
+ trace u*(0,(totalboules div Pas)+1.15)--u*(0,0-(1-cosd(30)))--u*(Pas,0-(1-cosd(30)))--u*(Pas,(totalboules div Pas)+1.15);
+ else:
+ trace u*(0,(totalboules div Pas)+1.15)--u*(0,0)--u*(Pas,0)--u*(Pas,(totalboules div Pas)+1.15);
+ fi;
+ fi;
+ \end{mplibcode}
+ \else
+ \begin{mpost}[mpsettings={u:=\useKV[PfCUrne]{Echelle}*1cm;numeric Pas;Pas=\useKV[PfCUrne]{Pas}; boolean Couleurs, Nombres; Couleurs=\useKV[PfCUrne]{Couleurs}; Nombres=\useKV[PfCUrne]{Nombres};}]
+ numeric RetiensNum[];
+ vardef RecupRepartition(text t)=
+ n:=0;
+ for p_=t:
+ RetiensNum[n]=p_;
+ n:=n+1;
+ endfor;
+ totalboules=n;
+ enddef;
+
+ color Col[];
+ vardef RecuperationCouleurs(text t)=
+ n:=0;
+ for p_=t:
+ n:=n+1;
+ Col[n]=p_;
+ endfor;
+ enddef;
+
+ string Nombres[];
+ vardef RecuperationNombres(text t)=
+ n:=0;
+ for p_=t:
+ n:=n+1;
+ Nombres[n]=p_;
+ endfor;
+ enddef;
+
+ RecupRepartition(#3);
+ if Couleurs:
+ RecuperationCouleurs(#1);
+ fi;
+ if Nombres:
+ RecuperationNombres(#2);
+ fi;
+
+ pair A[];
+
+ for k=0 upto (totalboules div Pas)-1:
+ for l=0 upto Pas-1:
+ rang:=k*Pas+l;
+ A[rang]=u*(0.5,0.5)+u*(l,k);
+ if Couleurs:
+ fill cercles(A[rang],0.5u) withcolor if unknown Col[RetiensNum[rang]]:white else: Col[RetiensNum[rang]] fi;
+ else:
+ label(LATEX(Nombres[RetiensNum[rang]]),A[rang]);
+ fi;
+ %trace cercles(A[k*Pas+l],0.5u);
+ endfor;
+ endfor;
+ for k=0 upto (totalboules mod Pas)-1:
+ rang:=(totalboules div Pas)*Pas+k;
+ A[rang]=u*(0.5,0.5)+u*(k+0.5,totalboules div Pas-1+cosd(30));
+ if Couleurs:
+ fill cercles(A[rang],0.5u) withcolor if unknown Col[RetiensNum[rang]]:white else: Col[RetiensNum[rang]] fi;
+ else:
+ label(LATEX(Nombres[RetiensNum[rang]]),A[rang]);
+ fi;
+ %trace cercles(A[(totalboules div Pas)*Pas+k],0.5u);
+ endfor;
+ %
+ for k=0 upto (totalboules div Pas)-1:
+ for l=0 upto Pas-1:
+ rang:=k*Pas+l;
+ trace cercles(A[rang],0.5u);
+ endfor;
+ endfor;
+ for k=0 upto (totalboules mod Pas)-1:
+ rang:=(totalboules div Pas)*Pas+k;
+ trace cercles(A[rang],0.5u);
+ endfor;
+ %
+ drawoptions(withpen pencircle scaled 1.2);
+ if totalboules<Pas:
+ trace u*(0,(totalboules div Pas)+1.15)--u*(0,0-(1-cosd(30)))--u*(Pas,0-(1-cosd(30)))--u*(Pas,(totalboules div Pas)+1.15);
+ else:
+ trace u*(0,(totalboules div Pas)+1.15)--u*(0,0)--u*(Pas,0)--u*(Pas,(totalboules div Pas)+1.15);
+ fi;
+ \end{mpost}
+ \fi
+}%
+
+\NewDocumentCommand\BuildUrneDouble{mmmm}{%
+ % #1 Liste Couleurs
+ % #2 Liste Nombres
+ % #3 Repartition des couleurs
+ % #4 Repartition des nombres
+ \ifluatex
+ \mplibforcehmode
+ \begin{mplibcode}
+ u:=\useKV[PfCUrne]{Echelle}*1cm;
+ numeric RetiensC[],RetiensNum[];
+ vardef RecupRepartitionC(text t)=
+ n:=0;
+ for p_=t:
+ RetiensC[n]=p_;
+ n:=n+1;
+ endfor;
+ totalboules=n;
+ enddef;
+
+ vardef RecupRepartition(text t)=
+ n:=0;
+ for p_=t:
+ RetiensNum[n]=p_;
+ n:=n+1;
+ endfor;
+ enddef;
+
+ color Col[];
+ vardef RecuperationCouleurs(text t)=
+ n:=0;
+ for p_=t:
+ n:=n+1;
+ Col[n]=p_;
+ endfor;
+ enddef;
+
+ string Nombres[];
+ vardef RecuperationNombres(text t)=
+ n:=0;
+ for p_=t:
+ n:=n+1;
+ Nombres[n]=p_;
+ endfor;
+ enddef;
+
+ numeric Pas,Rayon;
+ Pas=\useKV[PfCUrne]{Pas};
+ Rayon=\useKV[PfCUrne]{Rayon};
+
+ boolean Roue;
+ Roue=\useKV[PfCUrne]{Roue};
+
+ RecupRepartitionC(#3);
+ RecupRepartition(#4);
+ RecuperationCouleurs(#1);
+ RecuperationNombres(#2);
+
+ pair O;
+ pair A[],B[];
+
+ if Roue:
+ O=(0,0);
+ path cc;
+ cc=cercles(O,Rayon*u);
+ angd=180/totalboules;
+ angr=360/totalboules;
+ for k=1 upto totalboules:
+ A[k]=17/20[O,pointarc(cc,angd+(k-1)*angr)];
+ endfor;
+ B[0]=pointarc(cc,0);
+ for k=1 upto totalboules:
+ B[k]=pointarc(cc,k*angr);
+ fill O--arccercle(B[k-1],B[k],O)--cycle withcolor if unknown Col[RetiensC[k-1]]:white else: Col[RetiensC[k-1]] fi;
+ label(TEX(Nombres[RetiensNum[k-1]]),A[k]);
+ endfor;
+ trace cc;
+ for k=1 upto totalboules:
+ trace O--B[k];
+ endfor;
+ drawarrow rotation((O+u*(0,1.35*Rayon))--(O+u*(0,1.1*Rayon)),O,angd);
+ else:
+ for k=0 upto (totalboules div Pas)-1:
+ for l=0 upto Pas-1:
+ rang:=k*Pas+l;
+ A[rang]=u*(0.5,0.5)+u*(l,k);
+ fill cercles(A[rang],0.5u) withcolor if unknown Col[RetiensC[rang]]:white else: Col[RetiensC[rang]] fi;
+ label(TEX(Nombres[RetiensNum[rang]]),A[rang]);
+ endfor;
+ endfor;
+ for k=0 upto (totalboules mod Pas)-1:
+ rang:=(totalboules div Pas)*Pas+k;
+ A[rang]=u*(0.5,0.5)+u*(k+0.5,totalboules div Pas-1+cosd(30));
+ fill cercles(A[rang],0.5u) withcolor if unknown Col[RetiensC[rang]]:white else: Col[RetiensC[rang]] fi;
+ label(TEX(Nombres[RetiensNum[rang]]),A[rang]);
+ endfor;
+ %
+ for k=0 upto (totalboules div Pas)-1:
+ for l=0 upto Pas-1:
+ rang:=k*Pas+l;
+ trace cercles(A[rang],0.5u);
+ endfor;
+ endfor;
+ for k=0 upto (totalboules mod Pas)-1:
+ rang:=(totalboules div Pas)*Pas+k;
+ trace cercles(A[rang],0.5u);
+ endfor;
+ %
+ drawoptions(withpen pencircle scaled 1.2);
+ if totalboules<Pas:
+ trace u*(0,(totalboules div Pas)+1.15)--u*(0,0-(1-cosd(30)))--u*(Pas,0-(1-cosd(30)))--u*(Pas,(totalboules div Pas)+1.15);
+ else:
+ trace u*(0,(totalboules div Pas)+1.15)--u*(0,0)--u*(Pas,0)--u*(Pas,(totalboules div Pas)+1.15);
+ fi;
+ fi;
+ \end{mplibcode}
+ \else
+ \begin{mpost}[mpsettings={u:=\useKV[PfCUrne]{Echelle}*1cm;numeric RetiensC[],RetiensNum[];numeric Pas,Rayon;Pas=\useKV[PfCUrne]{Pas};Rayon=\useKV[PfCUrne]{Rayon};boolean Roue;Roue=\useKV[PfCUrne]{Roue};}]
+ vardef RecupRepartitionC(text t)=
+ n:=0;
+ for p_=t:
+ RetiensC[n]=p_;
+ n:=n+1;
+ endfor;
+ totalboules=n;
+ enddef;
+
+ vardef RecupRepartition(text t)=
+ n:=0;
+ for p_=t:
+ RetiensNum[n]=p_;
+ n:=n+1;
+ endfor;
+ enddef;
+
+ color Col[];
+ vardef RecuperationCouleurs(text t)=
+ n:=0;
+ for p_=t:
+ n:=n+1;
+ Col[n]=p_;
+ endfor;
+ enddef;
+
+ string Nombres[];
+ vardef RecuperationNombres(text t)=
+ n:=0;
+ for p_=t:
+ n:=n+1;
+ Nombres[n]=p_;
+ endfor;
+ enddef;
+
+ RecupRepartitionC(#3);
+ RecupRepartition(#4);
+ RecuperationCouleurs(#1);
+ RecuperationNombres(#2);
+
+ pair O;
+ pair A[],B[];
+
+ if Roue:
+ O=(0,0);
+ path cc;
+ cc=cercles(O,Rayon*1cm);
+ angd=180/totalboules;
+ angr=360/totalboules;
+ for k=1 upto totalboules:
+ A[k]=17/20[O,pointarc(cc,angd+(k-1)*angr)];
+ endfor;
+ B[0]=pointarc(cc,0);
+ for k=1 upto totalboules:
+ B[k]=pointarc(cc,k*angr);
+ fill O--arccercle(B[k-1],B[k],O)--cycle withcolor if unknown Col[RetiensC[k-1]]:white else: Col[RetiensC[k-1]] fi;
+ label(LATEX(Nombres[RetiensNum[k-1]]),A[k]);
+ endfor;
+ trace cc;
+ for k=1 upto totalboules:
+ trace O--B[k];
+ endfor;
+ else:
+ for k=0 upto (totalboules div Pas)-1:
+ for l=0 upto Pas-1:
+ rang:=k*Pas+l;
+ A[rang]=u*(0.5,0.5)+u*(l,k);
+ fill cercles(A[rang],0.5u) withcolor if unknown Col[RetiensC[rang]]:white else: Col[RetiensC[rang]] fi;
+ label(LATEX(Nombres[RetiensNum[rang]]),A[rang]);
+ endfor;
+ endfor;
+ for k=0 upto (totalboules mod Pas)-1:
+ rang:=(totalboules div Pas)*Pas+k;
+ A[rang]=u*(0.5,0.5)+u*(k+0.5,totalboules div Pas-1+cosd(30));
+ fill cercles(A[rang],0.5u) withcolor if unknown Col[RetiensC[rang]]:white else: Col[RetiensC[rang]] fi;
+ label(LATEX(Nombres[RetiensNum[rang]]),A[rang]);
+ endfor;
+ %
+ for k=0 upto (totalboules div Pas)-1:
+ for l=0 upto Pas-1:
+ rang:=k*Pas+l;
+ trace cercles(A[rang],0.5u);
+ endfor;
+ endfor;
+ for k=0 upto (totalboules mod Pas)-1:
+ rang:=(totalboules div Pas)*Pas+k;
+ trace cercles(A[rang],0.5u);
+ endfor;
+ %
+ drawoptions(withpen pencircle scaled 1.2);
+ if totalboules<Pas:
+ trace u*(0,(totalboules div Pas)+1.15)--u*(0,0-(1-cosd(30)))--u*(Pas,0-(1-cosd(30)))--u*(Pas,(totalboules div Pas)+1.15);
+ else:
+ trace u*(0,(totalboules div Pas)+1.15)--u*(0,0)--u*(Pas,0)--u*(Pas,(totalboules div Pas)+1.15);
+ fi;
+ fi;
+ \end{mpost}
+ \fi
+}%
+
+\NewDocumentCommand\SchemaProba{o}{%
+ \useKVdefault[PfCUrne]%
+ \setKV[PfCUrne]{#1}%
+ \tokUrneListeCouleurs{}%
+ \tokUrneListeNombres{}%
+ \tokUrneListeColonnes{}%
+ \ifboolKV[PfCUrne]{Casino}{%
+ \BuildRoulette%
+ }{%
+ \ifboolKV[PfCUrne]{Tableau}{%
+ \ifboolKV[PfCUrne]{Different}{%
+ \xdef\PfCFooRepartitionC{\useKV[PfCUrne]{RepartitionColonne}}%
+ \xdef\PfCFooRepartitionL{\useKV[PfCUrne]{RepartitionLigne}}%
+ \setsepchar{,}\ignoreemptyitems%
+ \readlist*\ListeRepartitionCAv{\PfCFooRepartitionC}%
+ \readlist*\ListeRepartitionLAv{\PfCFooRepartitionL}%
+ % Repartition : \showitems\ListeRepartitionAv[]%
+ \xdef\PfCFooListeRepartitionC{}%
+ \xdef\PfCFooListeRepartitionL{}%
+ \xdef\PfCTotalC{0}%
+ \xdef\PfCTotalL{0}%
+ \xintFor* ##1 in{\xintSeq{1}{\ListeRepartitionCAvlen}}\do{%
+ \xintFor* ##2 in{\xintSeq{1}{\ListeRepartitionCAv[##1]}}\do{%
+ \xdef\PfCFooListeRepartitionC{\PfCFooListeRepartitionC,##1}%
+ \xdef\PfCTotalC{\fpeval{\PfCTotalC+1}}%
+ }%
+ }%
+ \xintFor* ##1 in{\xintSeq{1}{\ListeRepartitionLAvlen}}\do{%
+ \xintFor* ##2 in{\xintSeq{1}{\ListeRepartitionLAv[##1]}}\do{%
+ \xdef\PfCFooListeRepartitionL{\PfCFooListeRepartitionL,##1}%
+ \xdef\PfCTotalL{\fpeval{\PfCTotalL+1}}%
+ }%
+ }%
+ \foreachitem\compteur\in\ListeCouleursAv{\expandafter\UpdatetoksUrneColonnes\compteur\nil}%
+ \foreachitem\compteur\in\ListeNombresAv{\expandafter\UpdatetoksUrneNombres\compteur\nil}%
+ \BuildTableauDoubleEntreeDifferent{\the\tokUrneListeColonnes}{\the\tokUrneListeNombres}{\PfCFooListeRepartitionC}{\PfCFooListeRepartitionL}%
+ }{%
+ \xdef\PfCFooRepartition{\useKV[PfCUrne]{Repartition}}%
+ \setsepchar{,}\ignoreemptyitems%
+ \readlist*\ListeRepartitionAv{\PfCFooRepartition}%
+ \xdef\PfCFooListeRepartition{}%
+ \xdef\PfCTotal{0}%
+ \xintFor* ##1 in{\xintSeq{1}{\ListeRepartitionAvlen}}\do{%
+ \xintFor* ##2 in{\xintSeq{1}{\ListeRepartitionAv[##1]}}\do{%
+ \xdef\PfCFooListeRepartition{\PfCFooListeRepartition,##1}%
+ \xdef\PfCTotal{\fpeval{\PfCTotal+1}}%
+ }%
+ }%
+ \ifboolKV[PfCUrne]{Couleurs}{%
+ \foreachitem\compteur\in\ListeCouleursAv{\expandafter\UpdatetoksUrneCouleurs\compteur\nil}%
+ \BuildTableauDoubleEntree{\the\tokUrneListeCouleurs}{}{\PfCFooListeRepartition}%
+ }{%
+ \ifboolKV[PfCUrne]{Nombres}{%
+ \foreachitem\compteur\in\ListeNombresAv{\expandafter\UpdatetoksUrneNombres\compteur\nil}%
+ \BuildTableauDoubleEntree{}{\the\tokUrneListeNombres}{\PfCFooListeRepartition}%
+ }{}%
+ }%
+ }%
+ }{%
+ \ifboolKV[PfCUrne]{Double}{%
+ \xdef\PfCFooRepartitionC{\useKV[PfCUrne]{RepartitionC}}%
+ \xdef\PfCFooRepartitionN{\useKV[PfCUrne]{RepartitionN}}%
+ \setsepchar{,}\ignoreemptyitems%
+ \readlist*\ListeRepartitionCAv{\PfCFooRepartitionC}%
+ \readlist*\ListeRepartitionNAv{\PfCFooRepartitionN}%
+ % Repartition : \showitems\ListeRepartitionAv[]%
+ \xdef\PfCFooListeRepartitionC{}%
+ \xdef\PfCFooListeRepartitionN{}%
+ \xdef\PfCTotalC{0}%
+ \xdef\PfCTotalN{0}%
+ \xintFor* ##1 in{\xintSeq{1}{\ListeRepartitionCAvlen}}\do{%
+ \xintFor* ##2 in{\xintSeq{1}{\ListeRepartitionCAv[##1]}}\do{%
+ \xdef\PfCFooListeRepartitionC{\PfCFooListeRepartitionC,##1}%
+ \xdef\PfCTotalC{\fpeval{\PfCTotalC+1}}%
+ }%
+ }%
+ \xintFor* ##1 in{\xintSeq{1}{\ListeRepartitionNAvlen}}\do{%
+ \xintFor* ##2 in{\xintSeq{1}{\ListeRepartitionNAv[##1]}}\do{%
+ \xdef\PfCFooListeRepartitionN{\PfCFooListeRepartitionN,##1}%
+ \xdef\PfCTotalN{\fpeval{\PfCTotalN+1}}%
+ }%
+ }%
+ \MelangeListe{\PfCFooListeRepartitionC}{\PfCTotalC}%
+ \xdef\ListeRepartitionCouleurs{\faa}%
+ \foreachitem\compteur\in\ListeCouleursAv{\expandafter\UpdatetoksUrneCouleurs\compteur\nil}%
+ \MelangeListe{\PfCFooListeRepartitionN}{\PfCTotalN}%
+ \xdef\ListeRepartitionNombres{\faa}%
+ \foreachitem\compteur\in\ListeNombresAv{\expandafter\UpdatetoksUrneNombres\compteur\nil}%
+ \BuildUrneDouble{\the\tokUrneListeCouleurs}{\the\tokUrneListeNombres}{\ListeRepartitionCouleurs}{\ListeRepartitionNombres}%
+ }{%
+ \xdef\PfCFooRepartition{\useKV[PfCUrne]{Repartition}}%
+ \setsepchar{,}\ignoreemptyitems%
+ \readlist*\ListeRepartitionAv{\PfCFooRepartition}%
+ % Repartition : \showitems\ListeRepartitionAv[]%
+ \xdef\PfCFooListeRepartition{}%
+ \xdef\PfCTotal{0}%
+ \xintFor* ##1 in{\xintSeq{1}{\ListeRepartitionAvlen}}\do{%
+ \xintFor* ##2 in{\xintSeq{1}{\ListeRepartitionAv[##1]}}\do{%
+ \xdef\PfCFooListeRepartition{\PfCFooListeRepartition,##1}%
+ \xdef\PfCTotal{\fpeval{\PfCTotal+1}}%
+ }%
+ }%
+ \ifboolKV[PfCUrne]{Couleurs}{%
+ \MelangeListe{\PfCFooListeRepartition}{\PfCTotal}%
+ \xdef\ListeRepartitionCouleurs{\faa}%
+ \foreachitem\compteur\in\ListeCouleursAv{\expandafter\UpdatetoksUrneCouleurs\compteur\nil}%
+ % Couleurs :\\
+ % La répartition est : \ListeRepartitionCouleurs\\
+ % Les couleurs sont : \the\tokUrneListeCouleurs.\\
+ \BuildUrne{\the\tokUrneListeCouleurs}{}{\ListeRepartitionCouleurs}%
+ }{%
+ \ifboolKV[PfCUrne]{Nombres}{%
+ \MelangeListe{\PfCFooListeRepartition}{\PfCTotal}%
+ \xdef\ListeRepartitionNombres{\faa}%
+ \foreachitem\compteur\in\ListeNombresAv{\expandafter\UpdatetoksUrneNombres\compteur\nil}%
+ % Nombres :\\
+ % La répartition est : \ListeRepartitionNombres\\
+ % Les nombres sont : \the\tokUrneListeNombres.\\
+ \BuildUrne{}{\the\tokUrneListeNombres}{\ListeRepartitionNombres}%
+ }{}%
+ }%
+ }%
+}%
+}%
+}% \ No newline at end of file
diff --git a/macros/latex/contrib/profcollege/latex/ProfCollege.sty b/macros/latex/contrib/profcollege/latex/ProfCollege.sty
index ca3b52ba9a..a6b767a3bf 100644
--- a/macros/latex/contrib/profcollege/latex/ProfCollege.sty
+++ b/macros/latex/contrib/profcollege/latex/ProfCollege.sty
@@ -2,9 +2,9 @@
% licence : Released under the LaTeX Project Public License v1.3c
% or later, see http://www.latex-project.org/lppl.txtf
\NeedsTeXFormat{LaTeX2e}%
-\def\filedate{2024/05/18}%
+\def\filedate{2024/07/03}%
\let\PfCfiledate\filedate%
-\def\fileversion{0.99-A-f}%
+\def\fileversion{0.99-A-g}%
\let\PfCfileversion\fileversion%
\ProvidesPackage{ProfCollege}[\filedate\space v\fileversion\space Aide pour utiliser LaTeX au college]%
@@ -124,7 +124,6 @@
\RequirePackage{listofitems}%
\RequirePackage{datatool}%
\RequirePackage{multido}%
-
\RequirePackage{xlop}%
\RequirePackage{tcolorbox}%
@@ -637,18 +636,18 @@
\tikzset{face/.style={shape=circle,minimum size=4ex,shading=radial,outer sep=0pt, inner color=white!50!yellow,outer color= yellow!70!orange}}
\newcommand\emoticon[2][]{%
-\scalebox{.5}{\begin{tikzpicture}
-\node[face,#1,draw,thick] (emoticon) {};
+\scalebox{.5}{\begin{tikzpicture}%
+\node[face,#1,draw,thick] (emoticon) {};%
%% The eyes are fixed.
\draw[fill=white] (-1ex,0ex) ..controls (-0.5ex,0.2ex)and(0.5ex,0.2ex)..(1ex,0.0ex) ..controls ( 1.5ex,1.5ex)and( 0.2ex,1.7ex)..(0ex,0.4ex) ..controls (-0.2ex,1.7ex)and(-1.5ex,1.5ex)..(-1ex,0ex)--cycle;
#2%
\end{tikzpicture}}%
-}
+}%
-\newcommand\pupils{
+\newcommand\pupils{%
%% standard pupils
-\fill[shift={(0.5ex,0.5ex)},rotate=80] (0,0) ellipse (0.3ex and 0.15ex);
-\fill[shift={(-0.5ex,0.5ex)},rotate=100] (0,0) ellipse (0.3ex and 0.15ex);}
+\fill[shift={(0.5ex,0.5ex)},rotate=80] (0,0) ellipse (0.3ex and 0.15ex);%
+\fill[shift={(-0.5ex,0.5ex)},rotate=100] (0,0) ellipse (0.3ex and 0.15ex);}%
\def\RKsmallsmile{%
\emoticon{%
@@ -656,14 +655,14 @@
%% mouth
\draw[thick] (-0.5ex,-1ex)..controls (-0.25ex,-1.25ex)and(0.25ex,-1.25ex)..(0.5ex,-1ex);
}%\emoticon
-}
+}%
\def\RKsmile{%
\emoticon{%
\pupils
\draw[thick] (-1ex,-1ex)..controls (-0.5ex,-1.5ex)and(0.5ex,-1.5ex)..(1ex,-1ex);
}%\emoticon
-}
+}%
\def\RKbigsmile{%
\emoticon{%
@@ -671,7 +670,7 @@
%% mouth
\draw[thick] (-1.5ex,-0.5ex)..controls (-0.7ex,-1.7ex)and(0.7ex,-1.7ex)..(1.5ex,-0.5ex);
}%\emoticon
-}
+}%
\def\RKsad{%
\emoticon{%
@@ -681,7 +680,7 @@
%% mouth
\draw[thick] (-1ex,-1ex)..controls(-0.5ex,-0.5ex)and(0.5ex,-0.5ex)..(1ex,-1ex);
}%\emoticon
-}
+}%
\def\RKneutral{%
\emoticon{%
@@ -691,7 +690,7 @@
%% mouth
\draw[thick] (-0.5ex,-1ex)--(0.5ex,-1ex);
}%\emoticon
-}
+}%
\def\RKconfused{%
\emoticon{%
@@ -716,19 +715,19 @@
(-1.00ex,1.00ex)--(-1.20ex,1.10ex)
(-0.35ex,1.15ex)--(-0.25ex,1.35ex);
}%\emoticon
-}
+}%
\def\RKangry{%
\emoticon{%
%% pupils
-\fill[shift={( 0.5ex,0.5ex)},rotate=90] (0,0) ellipse (0.3ex and 0.15ex);
-\fill[shift={(-0.5ex,0.5ex)},rotate=90] (0,0) ellipse (0.3ex and 0.15ex);
+\fill[shift={( 0.5ex,0.5ex)},rotate=90] (0,0) ellipse (0.3ex and 0.15ex);%
+\fill[shift={(-0.5ex,0.5ex)},rotate=90] (0,0) ellipse (0.3ex and 0.15ex);%
%% mouth
-\draw[thick] (-1ex,-1ex)..controls(-0.5ex,-0.5ex)and(0.5ex,-0.5ex)..(1ex,-1ex);
+\draw[thick] (-1ex,-1ex)..controls(-0.5ex,-0.5ex)and(0.5ex,-0.5ex)..(1ex,-1ex);%
%% eyebrows
-\draw[thick] (0.2ex,1.15ex)--(0.5ex,1.6ex)(-0.2ex,1.15ex)--(-0.5ex,1.6ex);
+\draw[thick] (0.2ex,1.15ex)--(0.5ex,1.6ex)(-0.2ex,1.15ex)--(-0.5ex,1.6ex);%
}%\emoticon
-}
+}%
\def\RKlookup{%
\emoticon{%
@@ -826,6 +825,8 @@
\def\PfCSymbolTimes{\times}%
\def\PfCSymbolDiv{\div}%
+\input{PfCUrneProba}
+\input{PfCProbaFrequence}
\input{PfCVisualisationMulDeci}
\input{PfCArbreChiffre}
\input{PfCAssemblagesSolides}
@@ -971,4 +972,11 @@
\input{PfCDomino}
\input{PfCProgrammeCalcul}
\input{PfCPapiers}
-\input{PfCScratch} \ No newline at end of file
+\input{PfCScratch}
+
+\RequirePackage{PfCInfixRPN}
+%\makeatletter
+%\let\@nil\@empty
+%\makeatother
+
+\input{PfCArbreCalcul} \ No newline at end of file
diff --git a/macros/latex/contrib/profcollege/metapost/PfCMonde.mp b/macros/latex/contrib/profcollege/metapost/PfCMonde.mp
index fb3064cefd..6cc7f15e45 100644
--- a/macros/latex/contrib/profcollege/metapost/PfCMonde.mp
+++ b/macros/latex/contrib/profcollege/metapost/PfCMonde.mp
@@ -151,6 +151,15 @@ enddef;
vardef FZ(expr t,v)=rayon*sind(c*t)
enddef;
+vardef FXx(expr t,v)=rayon*cosd(t)*cosd(v)
+enddef;
+
+vardef FYy(expr t,v)=rayon*cosd(t)*sind(v)
+enddef;
+
+vardef FZz(expr t,v)=rayon*sind(t)
+enddef;
+
%Paramtres et macros de reprsentation
vardef Initialisation(expr r,t,p,d)=
Rho:=r;
@@ -227,6 +236,25 @@ vardef MaillageSphere=
MaillageS;
enddef;
+vardef MaillageSphereCoord=
+% InitialiseMaillage(((phim div 10)+1)*pi/12,((phip div 10)-1)*pi/12,pi/12,-pi,pi,pi/12);
+ InitialiseMaillage(-pi/2,pi/2,pi/18,-pi,pi,pi/12);
+ %MaillageS;
+ path Maillage[];
+ nbmor:=0;
+ for k=-90 step 10 until 90:
+ for l=-180 step 10 until 180:
+ nbl:=nbl+1;
+ if ProduitScalaire(1/2[(FXx(k,l),FYy(k,l),FZz(k,l)),(FXx(k+10,l+10),FYy(k+10,l+10),FZz(k+10,l+10))]-pte3,Oeil-pte3)>0:
+ nbmor:=nbmor+1;
+ Maillage[nbmor]=Projgeo((FXx(k,l),FYy(k,l),FZz(k,l)))..Projgeo((FXx(k,l+10),FYy(k,l+10),FZz(k,l+10)));
+ draw Maillage[nbmor] if k=0: withpen pencircle scaled 1 withcolor Crimson fi;
+ draw Projgeo((FXx(k,l),FYy(k,l),FZz(k,l)))..Projgeo((FXx(k+10,l),FYy(k+10,l),FZz(k+10,l))) if l=0:withpen pencircle scaled 1 withcolor LightSteelBlue fi;
+ fi;
+ endfor;
+ endfor;
+enddef;
+
boolean maille;
maille=false;
@@ -276,9 +304,19 @@ vardef lecture(expr nomfichier,fond)=
numeric ll;
ll:=0;
nbpts:=scantokens readfrom nomfichier;
- for k=1 upto (nbpts div 3):
+% for k=1 upto (nbpts div 3):
+% pair latlon;
+% latlon=((scantokens readfrom nomfichier)+(scantokens readfrom nomfichier)+(scantokens readfrom nomfichier))/3;
+ if nbpts<Allegee:
+ Alleg:=1;
+ else:
+ Alleg:=Allegee;
+ fi;
+ for k=1 upto (nbpts div Alleg):
pair latlon;
- latlon=((scantokens readfrom nomfichier)+(scantokens readfrom nomfichier)+(scantokens readfrom nomfichier))/3;
+ latlon=((scantokens readfrom nomfichier) for l=2 upto Alleg:
+ +(scantokens readfrom nomfichier)
+ endfor)/Alleg;
Coord[k]=rayon*(cosd(xpart(latlon/60))*cosd(ypart(latlon/60)),cosd(xpart(latlon/60))*sind(ypart(latlon/60)),sind(xpart(latlon/60)));
if ((xpart(latlon/60)>phim) and (xpart(latlon/60)<phip)):
if ProduitScalaire(Coord[k]-pte3,Oeil-pte3)>0:
@@ -295,7 +333,7 @@ vardef lecture(expr nomfichier,fond)=
path pays;
if ll>0:
pays=Projgeo(Pays[1])
- for l=2 upto (nbpts div 3):
+ for l=2 upto (nbpts div Alleg):%(nbpts div 3):
--Projgeo(Pays[l])
endfor;
if noncolore=true:
@@ -303,7 +341,7 @@ vardef lecture(expr nomfichier,fond)=
else:
fill pays--cycle withcolor fond;
fi;
- draw pays;
+ draw pays withpen pencircle scaled 0.25;
clip currentpicture to cercles(pte3,pte1,pte3,pte1,pte4);
fi;
enddef;
@@ -319,9 +357,19 @@ vardef Lectureiles=
ll:=0;
nbpts:=scantokens readfrom nomfichiermul;
fond=scantokens readfrom nomfichiermul;
- for k=1 upto nbpts:
+ %if nbpts<Allegee:
+ Alleg:=1;
+ %else:
+ % Alleg:=2;%pas Allegee car sinon des artefacts apparaissent
+ %fi;
+ for k=1 upto (nbpts div Alleg):
pair latlon;
- latlon=scantokens readfrom nomfichiermul;
+ latlon=((scantokens readfrom nomfichiermul) for l=2 upto Alleg:
+ +(scantokens readfrom nomfichiermul)
+ endfor)/Alleg;
+% for k=1 upto nbpts:
+% pair latlon;
+% latlon=scantokens readfrom nomfichiermul;
Coord[k]=rayon*(cosd(xpart(latlon/60))*cosd(ypart(latlon/60)),cosd(xpart(latlon/60))*sind(ypart(latlon/60)),sind(xpart(latlon/60)));
if ((xpart(latlon/60)>phim) and (xpart(latlon/60)<phip)):
if ProduitScalaire(Coord[k]-pte3,Oeil-pte3)>0:
@@ -337,7 +385,7 @@ vardef Lectureiles=
path pays;
if ll>0:
pays=Projgeo(Pays[1])
- for l=2 upto nbpts:
+ for l=2 upto (nbpts div Alleg):%nbpts:
--Projgeo(Pays[l])
endfor;
if noncolore=true:
@@ -345,9 +393,15 @@ vardef Lectureiles=
else:
fill pays--cycle withcolor fond;
fi;
- draw pays;
+ draw pays withpen pencircle scaled 0.25;
clip currentpicture to cercles(pte3,pte1,pte3,pte1,pte4);
fi;
+ % rustine pour tout lire chaque partie de Ile.dat
+ if Alleg>1:
+ for po=1 upto (nbpts mod Alleg):
+ poubelle:=scantokens readfrom nomfichiermul;
+ endfor;
+ fi;
endfor;
closefrom nomfichiermul;
enddef;
@@ -1641,6 +1695,11 @@ vardef mappemonde(expr longobs,latobs)=
MaillageSphere;
drawoptions();
fi;
+ if maillagecoord=true:
+ drawoptions(withpen pencircle scaled 0.25 withcolor couleurmaillage);
+ MaillageSphereCoord;
+ drawoptions();
+ fi;
if maille=true:
Maille;
fi;
diff --git a/macros/latex/contrib/profcollege/metapost/PfCObjets.mp b/macros/latex/contrib/profcollege/metapost/PfCObjets.mp
index fd2fbe0f2d..5dac3c967d 100644
--- a/macros/latex/contrib/profcollege/metapost/PfCObjets.mp
+++ b/macros/latex/contrib/profcollege/metapost/PfCObjets.mp
@@ -661,6 +661,55 @@ vardef DessineFusion=
endfor;
enddef;
+vardef DessineFusionCoul=
+ save _fusion;
+ picture _fusion;
+ tapj:=0;
+ color Fc[][];color cou[];
+ for l=1 upto nbobj:
+ for k=0 upto apj[l]:
+ cpt[tapj]:=tapj;
+ cou[tapj]:=Outcolor[l];
+ Fc[tapj].nb:=OTFc[l][k].nb;
+ for p=1 upto Fc[tapj].nb:
+ Fc[tapj][p]:=OTFc[l][k][p];
+ endfor;
+ Fc[tapj].iso:=OTFc[l][k].iso;
+ ALT[tapj]:=ALT[l][k];
+ Vue[tapj]:=Vue[l][k];
+ if Ferme[l]:
+ if Vue[tapj]=false:
+ tapj:=tapj-1;
+ fi;
+ fi;
+ tapj:=tapj+1;
+ endfor;
+ endfor;
+ tapj:=tapj-1;
+ QS(0,tapj);
+ for k=0 upto tapj:
+ fill for l=1 upto Fc[cpt[k]].nb:
+ Projette(Fc[cpt[k]][l])--
+ endfor
+ cycle withcolor if Vue[cpt[k]]:
+ abs(lumin(cpt[k]))*cou[cpt[k]] fi;
+ if traits:
+ draw for l=1 upto Fc[cpt[k]].nb:
+ Projette(Fc[cpt[k]][l])--
+ endfor
+ cycle withpen pencircle scaled0.25bp;
+ %add by cp 22/08/2011
+ else:
+ draw for l=1 upto Fc[cpt[k]].nb:
+ Projette(Fc[cpt[k]][l])--
+ endfor
+ cycle withcolor if Vue[cpt[k]]:
+ abs(lumin(cpt[k]))*cou[cpt[k]] fi;
+ %fin add
+ fi;
+ endfor;
+enddef;
+
vardef Objettore[](expr Rn,rn)=
Outcolor.@:=outcolor;
Incolor.@:=incolor;
@@ -1727,8 +1776,8 @@ vardef Objettetraedre[](expr ar)=
tcpt.@[0]:=0;
OTFc.@[0].nb:=3;
OTFc.@[0][1]:=Image(Sommet0);
- OTFc.@[0][2]:=Image(Sommet2);
- OTFc.@[0][3]:=Image(Sommet1);
+ OTFc.@[0][2]:=Image(Sommet1);
+ OTFc.@[0][3]:=Image(Sommet2);
OTFc.@[0].iso:=(OTFc.@[0][1]+OTFc.@[0][2]+OTFc.@[0][3])/3;
tcpt.@[1]:=1;
OTFc.@[1].nb:=3;
diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
index 000537a0d4..b4802be53e 100644
--- a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
+++ b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pyluatex.pdf b/macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pyluatex.pdf
index 5e6698109f..c3e58a2813 100644
--- a/macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pyluatex.pdf
+++ b/macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pyluatex.pdf
Binary files differ
diff --git a/macros/latex/contrib/proflycee/tex/ProfLycee.sty b/macros/latex/contrib/proflycee/tex/ProfLycee.sty
index f622238309..e37ce44eeb 100644
--- a/macros/latex/contrib/proflycee/tex/ProfLycee.sty
+++ b/macros/latex/contrib/proflycee/tex/ProfLycee.sty
@@ -3,7 +3,9 @@
% or later, see http://www.latex-project.org/lppl.txtf
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{ProfLycee}[2024/05/09 3.04b Aide pour l'utilisation de LaTeX en lycee]
+\ProvidesPackage{ProfLycee}[2024/07/13 3.04d Aide pour l'utilisation de LaTeX en lycee]
+% 3.04d PitonInputFile et styles
+% 3.04c Max et min pour des fonctions
% 3.04b Travail sur la loi binomiale + Ajout de clés pour les environnements graphiques
% 3.04a Améliorations de la partie graphiques tikz (intégrales, axes) + Factorielle
% 3.03d Page de garde type BAC
@@ -146,7 +148,6 @@
\usetikzlibrary{shapes.geometric}
\usetikzlibrary{decorations.pathmorphing}
%tcolorbox
-%\RequirePackage[most]{tcolorbox}
\RequirePackage{tcolorbox}%
\tcbuselibrary{breakable,fitting,skins,listings,listingsutf8,hooks}
%divers
diff --git a/macros/latex/contrib/proflycee/tex/proflycee-tools-analyse.tex b/macros/latex/contrib/proflycee/tex/proflycee-tools-analyse.tex
index ade88434c2..1581688cb1 100644
--- a/macros/latex/contrib/proflycee/tex/proflycee-tools-analyse.tex
+++ b/macros/latex/contrib/proflycee/tex/proflycee-tools-analyse.tex
@@ -996,4 +996,15 @@
}%
}
+%----max/min
+\NewDocumentCommand\DetermineMax{ O{0.01} m m m O{\tmpmax} O{\tmpmaxvalx} }{%
+ \xdef#5{\xintfloateval{max(seq(#2,x=#3..[#1]..#4,#4))}}%
+ \xdef#6{\xintfloateval{first(seq((#2 == #5)?{x}{},x=#3..[#1]..#4,#4))}}%
+}
+
+\NewDocumentCommand\DetermineMin{ O{0.01} m m m O{\tmpmin} O{\tmpminvalx} }{%
+ \xdef#5{\xintfloateval{min(seq(#2,x=#3..[#1]..#4,#4))}}%
+ \xdef#6{\xintfloateval{first(seq((#2 == #5)?{x}{},x=#3..[#1]..#4,#4))}}%
+}
+
\endinput \ No newline at end of file
diff --git a/macros/latex/contrib/proflycee/tex/proflycee-tools-piton.tex b/macros/latex/contrib/proflycee/tex/proflycee-tools-piton.tex
index 418c5aa8cc..0cb6600617 100644
--- a/macros/latex/contrib/proflycee/tex/proflycee-tools-piton.tex
+++ b/macros/latex/contrib/proflycee/tex/proflycee-tools-piton.tex
@@ -2,6 +2,7 @@
% Copyright 2023-2024 Cédric Pierquet
% Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt
+%3.04d PitonInputFile et styles, pour compatibilité pfm
%3.03c Thonny via piton + modification clé gobble ?
%3.01f PseudoCode via piton (?)
%3.01e Correction du comportement de la console repl piton/pyluatex
@@ -220,6 +221,57 @@
\endtcolorbox%
}
+%inputfile
+\NewDocumentCommand\CodePitonFichier{ O{} m D<>{} }{%
+ {\tcbset{reset}
+ \useKVdefault[envpiton]%
+ \setKV[envpiton]{#1}% on paramètres les nouvelles clés et on les simplifie
+ %------les styles piton
+ \SetPitonStyle{ Number = \color{\CODPITcolnb} }
+ \ifboolKV[envpiton]{Lignes}%si lignes=true
+ {\PitonOptions{left-margin=0.75em,line-numbers,line-numbers={skip-empty-lines=false,label-empty-lines=true,#3}}}%left-margin=auto,
+ {}%
+ \PitonOptions{break-lines,indent-broken-lines,continuation-symbol={\;}}%,numbers-sep=0.65em}%language=Python}
+ %------les styles tcbox
+ \IfEq{\CODPITstyle}{Moderne}%style Moderne (défaut)
+ {%
+ \tcbset{cadre/.style={}}
+ \tcbset{titre/.style={}}
+ \tcbset{stylebase/.style={stylepiton,colframe=CouleurVertForet,colback=CouleurVertForet!5,width=\CODPITlargeur,fontupper=\CODPITfonte,fontlower=\CODPITfonte,\CODPITalign,leftupper=0.75em}}
+ \ifboolKV[envpiton]{Filigrane}%si filigrane
+ {\tcbset{filigrane/.style={watermark text={\faPython},watermark opacity=0.175,watermark zoom=0.50}}}%
+ {\tcbset{filigrane/.style={}}}%
+ }
+ {}%
+ \IfEq{\CODPITstyle}{Classique}%style Classique
+ {%
+ \ifboolKV[envpiton]{Lignes}%si lignes=true
+ {\tcbset{stylebase/.style={thonnystylelineos,leftupper=0.75em,width=\CODPITlargeur,colframe=darkgray!50!black,fontupper=\CODPITfonte,fontlower=\CODPITfonte,\CODPITalign}}}%
+ {\tcbset{stylebase/.style={thonnystyle,leftupper=0.4em,width=\CODPITlargeur,colframe=darkgray!50!black,fontupper=\CODPITfonte,fontlower=\CODPITfonte,\CODPITalign}}}%
+ \ifboolKV[envpiton]{Filigrane}%si filigrane
+ {\tcbset{filigrane/.style={watermark text={\faPython},watermark opacity=0.25,watermark zoom=0.50}}}%
+ {\tcbset{filigrane/.style={}}}%
+ \ifboolKV[envpiton]{BarreTitre}%
+ {%
+ \ifboolKV[envpiton]{Cadre}
+ {\tcbset{cadre/.style={}}}%
+ {\tcbset{cadre/.style={boxrule=0pt,frame hidden}}}%
+ \tcbset{titre/.style={lefttitle=0.4em,title={\CODPITtitre},fonttitle=\bfseries\footnotesize\sffamily,colbacktitle=darkgray!50!black}}
+ }%
+ {%
+ \tcbset{titre/.style={notitle}}
+ \ifboolKV[envpiton]{Cadre}
+ {\tcbset{cadre/.style={}}}
+ {\tcbset{cadre/.style={boxrule=0pt,frame hidden}}}
+ }
+ }
+ {}%
+ %on crée la boîte
+ \tcolorbox[stylebase,filigrane,cadre,titre]
+ \PitonInputFile{#2}
+ \endtcolorbox}%
+}
+
%piton >= 2.4
\NewPitonEnvironment{PseudoCodePiton}{ O{} m D<>{} }%
{%
@@ -317,6 +369,86 @@
\endtcolorbox%
}
+%--inputfile
+\NewDocumentCommand\PseudoCodePitonFichier{ O{} m D<>{} }{%
+ {\tcbset{reset}
+ \useKVdefault[envpcpiton]%
+ \setKV[envpcpiton]{#1}% on paramètres les nouvelles clés et on les simplifie
+ %------les styles piton
+ \ifboolKV[envpcpiton]{Lignes}%si lignes=true
+ {\PitonOptions{left-margin=0.75em,all-line-numbers}}%left-margin=auto,
+ {}%
+ \PitonOptions{break-lines,indent-broken-lines,language=minimal,continuation-symbol={\;}}%,numbers-sep=0.65em}%
+ \SetPitonStyle{ Number = }
+ \ifboolKV[envpcpiton]{Couleurs}%
+ {%
+ \SetPitonIdentifier[minimal]{Algorithme,Fonction,Début,Paramètre,Paramètres,Faire,Fin,Si,Pour,Tant,Que,que,alors,Alors,Sinon,SinonSi,FinSi,FinPour,FinTantQue,TantQue,Variable,Variables,Procédure}{\color{MotsClesPseudoCodeA}}
+ \SetPitonIdentifier[minimal]{Afficher,Renvoyer,Saisir}{\color{MotsClesPseudoCodeB}}
+ % \PitonOptions{
+ % identifiers =
+ % {
+ % names = {Algorithme,Fonction,Début,Paramètre,Paramètres,allant,Faire,Fin,Si,Pour,Tant,Que,que,alors,Alors,Sinon,SinonSi,FinSi,FinPour,FinTantQue,TantQue,Variable,Variables,Procédure},
+ % style = \color{MotsClesPseudoCodeA}
+ % } ,
+ % identifiers =
+ % {
+ % names = {Afficher,Retourner,Saisir},
+ % style = \color{MotsClesPseudoCodeB}
+ % }
+ % }%
+ \SetPitonStyle
+ {
+ String = \color{MotsClesPseudoCodeChaine},
+ Comment = \itshape\color{gray},
+ }
+ }%
+ {%
+ \SetPitonStyle
+ {
+ String = ,
+ Comment = \itshape
+ }
+ }%
+ %------les styles tcbox
+ \IfEq{\CODPITPCstyle}{Moderne}%style Moderne (défaut)
+ {%
+ \tcbset{cadre/.style={}}
+ \tcbset{titre/.style={}}
+ \tcbset{stylebase/.style={stylepcpiton,colframe=CouleurVertForet,colback=CouleurVertForet!5,width=\CODPITPClargeur,fontupper=\CODPITPCfonte,fontlower=\CODPITPCfonte,\CODPITPCalign,leftupper=0.75em}}
+ \ifboolKV[envpcpiton]{Filigrane}%si filigrane
+ {\tcbset{filigrane/.style={watermark text={\faCode},watermark opacity=0.175,watermark zoom=0.50}}}%
+ {\tcbset{filigrane/.style={}}}%
+ }
+ {}%
+ \IfEq{\CODPITPCstyle}{Classique}%style Classique
+ {%
+ \ifboolKV[envpcpiton]{Lignes}%si lignes=true
+ {\tcbset{stylebase/.style={thonnypcstylelineos,leftupper=0.75em,width=\CODPITPClargeur,colframe=darkgray!50!black,fontupper=\CODPITPCfonte,fontlower=\CODPITPCfonte,\CODPITPCalign}}}%
+ {\tcbset{stylebase/.style={thonnypcstyle,leftupper=0.4em,width=\CODPITPClargeur,colframe=darkgray!50!black,fontupper=\CODPITPCfonte,fontlower=\CODPITPCfonte,\CODPITPCalign}}}%
+ \ifboolKV[envpcpiton]{Filigrane}%si filigrane
+ {\tcbset{filigrane/.style={watermark text={\faCode},watermark opacity=0.25,watermark zoom=0.50}}}%
+ {\tcbset{filigrane/.style={}}}%
+ \ifboolKV[envpcpiton]{BarreTitre}%
+ {%
+ \ifboolKV[envpcpiton]{Cadre}
+ {\tcbset{cadre/.style={}}}%
+ {\tcbset{cadre/.style={boxrule=0pt,frame hidden}}}%
+ \tcbset{titre/.style={lefttitle=0.4em,title={\CODPITPCtitre},fonttitle=\bfseries\footnotesize\sffamily,colbacktitle=darkgray!50!black}}
+ }%
+ {%
+ \tcbset{titre/.style={notitle}}
+ \ifboolKV[envpcpiton]{Cadre}
+ {\tcbset{cadre/.style={}}}
+ {\tcbset{cadre/.style={boxrule=0pt,frame hidden}}}
+ }
+ }
+ {}%
+ %on crée la boîte
+ \tcolorbox[stylebase,filigrane,cadre,titre]
+ \PitonInputFile{#2}%
+ \endtcolorbox}%
+}
+
%======CONSOLE PYLUATEX (package à charger manuellement !!)
\tcbset{consolepylua/.style={%base de la boîte
enhanced,colback=white,colframe=CouleurVertForet,sharp corners,boxrule=1pt,%
@@ -428,6 +560,18 @@
\endtcolorbox%
}%
+\NewDocumentCommand\PitonThonnyEditorFichier{ D<>{} O{\linewidth} m }{%
+ {\restoreKV[pitonthonny]%
+ \setKV[pitonthonny]{#1}%
+ \settowidth{\LargeurNumbersThonny}{\footnotesize\texttt{00}}%
+ \PitonOptions{left-margin=\LargeurNumbersThonny+1mm,line-numbers,line-numbers={skip-empty-lines=false,label-empty-lines=true},break-lines,indent-broken-lines,continuation-symbol={}}%
+ \tcbset{tcbthonnypiton/.style={title=\vphantom{pf}\thonnypitonfilename\:\textcolor{gray}{×}},before skip=0.33\baselineskip,after skip=0.33\baselineskip}%
+ \tcolorbox[sharp corners=all,enhanced,size=small,width=#2,colframe=gray,colback=lightgray!5,tcbthonnypiton,fonttitle=\scriptsize\sffamily,coltitle=black,
+ attach boxed title to top left={yshift*=-0.4pt},fontupper=\footnotesize,bottom=-0.25mm,boxed title style={size=tight,colback=lightgray!15,sharp corners=all,boxrule=0.4pt,boxsep=2pt},boxrule=0.4pt,overlay={\begin{tcbclipinterior}\fill[draw=none,gray!25] ([shift={(0.4pt,0.4pt)}]frame.south west) rectangle ([shift={(\LargeurNumbersThonny+1mm+0.8pt,-0.4pt)}]frame.north west) ;\end{tcbclipinterior}}]%
+ \PitonInputFile{#3}
+ \endtcolorbox}%
+}%
+
\NewDocumentEnvironment{PitonThonnyConsole}{ D<>{} O{} m }%
{
\restoreKV[pitonthonny]%
diff --git a/macros/latex/contrib/proflycee/tex/proflycee-tools-stats.tex b/macros/latex/contrib/proflycee/tex/proflycee-tools-stats.tex
index cd01f4393b..89fe894503 100644
--- a/macros/latex/contrib/proflycee/tex/proflycee-tools-stats.tex
+++ b/macros/latex/contrib/proflycee/tex/proflycee-tools-stats.tex
@@ -75,6 +75,69 @@
\expandafter\def\csname\RegLinCoeffrd\endcsname{\fpeval{\csname\RegLinCoeffr\endcsname*\csname\RegLinCoeffr\endcsname}}
}
+\defKV[coeffregquad]{%
+ NomCoeffa=\def\RegQuadCoeffa{#1},%
+ NomCoeffb=\def\RegQuadCoeffb{#1},%
+ NomCoeffc=\def\RegQuadCoeffc{#1},%
+ NomXmin=\def\RegQuadCoeffXmin{#1},%
+ NomXmax=\def\RegQuadCoeffXmax{#1}
+}
+
+\setKVdefault[coeffregquad]{%
+ NomCoeffa=COEFFa,%
+ NomCoeffb=COEFFb,%
+ NomCoeffc=COEFFc,%
+ NomXmin=LXmin,%
+ NomXmax=LXmax
+}
+
+\newcommand\CalculsRegQuad[3][]{%
+ \useKVdefault[coeffregquad]%
+ \setKV[coeffregquad]{#1}% on paramètres les nouvelles clés et on les simplifie
+ %xmin et xmax
+ \expandafter\def\csname\RegQuadCoeffXmin\endcsname{\xintfloateval{min(#2)}}%
+ \expandafter\def\csname\RegQuadCoeffXmax\endcsname{\xintfloateval{max(#2)}}%
+ %listes des données
+ \def\xliste{#2}%
+ \def\yliste{#3}%
+ \readlist*\LX{\xliste}%
+ \readlist*\LY{\yliste}%
+ %taille des listes
+ \def\LNB{\inteval{\LXlen}}
+ %somme importantes
+ \xdef\LXSomme{0}%
+ \xdef\LXCSomme{0}%
+ \xdef\LYSomme{0}%
+ \xdef\LXXSomme{0}%
+ \xdef\LXYSomme{0}%
+ \xdef\LXXCSomme{0}%
+ \xdef\LXCXCSomme{0}%
+ \xdef\LXCYSomme{0}%
+ %calculs
+ \foreach \i in {1,2,...,\LNB}{%
+ \xdef\LXSomme{\xintfloateval{\LXSomme+\LX[\i]}}%
+ \xdef\LXCSomme{\xintfloateval{\LXCSomme+(\LX[\i])^2}}%
+ }%
+ \foreach \i in {1,2,...,\LNB}{%
+ \xdef\LYSomme{\xintfloateval{\LYSomme+\LY[\i]}}%
+ }%
+ \xdef\LXmoy{\xintfloateval{\LXSomme/\LNB}}%
+ \xdef\LYmoy{\xintfloateval{\LYSomme/\LNB}}%
+ \xdef\LXCmoy{\xintfloateval{\LXCSomme/\LNB}}%
+ %calculs suites
+ \foreach \i in {1,2,...,\LNB}{%
+ \xdef\LXXSomme{\xintfloateval{\LXXSomme+(\LX[\i]-\LXmoy)^2}}%
+ \xdef\LXYSomme{\xintfloateval{\LXYSomme+(\LX[\i]-\LXmoy)*(\LY[\i]-\LYmoy)}}%
+ \xdef\LXXCSomme{\xintfloateval{\LXXCSomme+(\LX[\i]-\LXmoy)*((\LX[\i])*(\LX[\i])-\LXCmoy)}}%
+ \xdef\LXCXCSomme{\xintfloateval{\LXCXCSomme+((\LX[\i])^2-\LXCmoy)^2}}%
+ \xdef\LXCYSomme{\xintfloateval{\LXCYSomme+((\LX[\i])^2-\LXCmoy)*(\LY[\i]-\LYmoy)}}%
+ }%
+ %COEFFS OK
+ \expandafter\def\csname\RegQuadCoeffb\endcsname{\xintfloateval{(\LXYSomme*\LXCXCSomme-\LXCYSomme*\LXXCSomme)/(\LXXSomme*\LXCXCSomme-(\LXXCSomme)^2)}}%
+ \expandafter\def\csname\RegQuadCoeffa\endcsname{\xintfloateval{(\LXCYSomme*\LXXSomme-\LXYSomme*\LXXCSomme)/(\LXXSomme*\LXCXCSomme-(\LXXCSomme)^2)}}%
+ \expandafter\def\csname\RegQuadCoeffc\endcsname{\xintfloateval{\LYmoy-\csname\RegQuadCoeffb\endcsname*\LXmoy-\csname\RegQuadCoeffa\endcsname*\LXCmoy}}%
+}
+
%pour un nuage en TiKz
\defKV[nuagereglin]{%
Couleur=\def\RegLinNuageCouleur{#1},%
diff --git a/macros/latex/contrib/prtec/PRTEC19-template.pdf b/macros/latex/contrib/prtec/PRTEC19-template.pdf
deleted file mode 100644
index c0f369154a..0000000000
--- a/macros/latex/contrib/prtec/PRTEC19-template.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/prtec/PRTEC24-template.pdf b/macros/latex/contrib/prtec/PRTEC24-template.pdf
new file mode 100644
index 0000000000..a65827b7c4
--- /dev/null
+++ b/macros/latex/contrib/prtec/PRTEC24-template.pdf
Binary files differ
diff --git a/macros/latex/contrib/prtec/PRTEC19-template.tex b/macros/latex/contrib/prtec/PRTEC24-template.tex
index e0769005af..59e978ef74 100644
--- a/macros/latex/contrib/prtec/PRTEC19-template.tex
+++ b/macros/latex/contrib/prtec/PRTEC24-template.tex
@@ -4,7 +4,7 @@
%%
%% PRTEC uses A4 paper.
%%
-%% This file is version 1.04 dated 2019/04/17
+%% This file is version 1.07 dated 2024/07/07
%%
%% Author: John H. Lienhard V
%% Department of Mechanical Engineering
@@ -22,18 +22,17 @@
%%
%% * option to omit PRTEC footer and header [nofoot]
%%
-%% * option not to use newtxtext's superiors font for footnotes [nodefaultsups] and option
-%% * for slightly larger small capitals [largesc]
+%% * option for slightly larger small capitals [largesc]
%%
%% For details of newtxmath and newtxtext, see the documentation available on CTAN (http://ctan.org)
%%
-%% The booktabs, array, and dcolumn packages are loaded by default; those macros may be used for setting tables.
+%% The booktabs, array, and dcolumn packages are loaded by default; those macros are for tables.
%%
%=========================================================
%%
%% LICENSE:
%%
-%% Copyright (c) 2019 John Lienhard
+%% Copyright (c) 2024 John Lienhard
%%
%% Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
%% associated documentation files (the "Software"), to deal in the Software without restriction,
@@ -53,17 +52,16 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Class options are described above.
-
-\documentclass[upint,varvw]{prtec}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Editing tools; can delete these if not using.
-
-\usepackage{lipsum} % makes paragraphs of "latin" for layout testing
-\usepackage{comment} % see package documentation. Can comment out sections as needed.
+%% Don't modify the \DocumentMetadata command unless you know what it does.
+%% If this command throws an "undefined" error, your latex system is out of date: comment this command out.
+\DocumentMetadata{
+ pdfstandard = a-2b,% a-4,
+ pdfversion = 1.7,% 2.0,
+ lang = en-US,
+}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Class options are described above.
+\documentclass[upint,varvw,subscriptcorrection]{prtec}
%%%%% pdf metadata %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -86,15 +84,15 @@
%%%%% Conference, title, authors, affiliations %%%%%%%%
-\confname{Extended Abstracts of The Second Pacific Rim Thermal Engineering Conference}
-\confdate{December 13-17, 2019}
-\confcity{Maui, Hawaii, USA}
+\confname{Extended Abstracts of The Third Pacific Rim Thermal Engineering Conference}
+\confdate{December 15--19, 2024}
+\confcity{Honolulu, Hawaii, USA}
%%% Your paper number
\paperno{PRTEC-XXXXX}
%%% Your title
-\papertitle{Our research paper: the latest developments in cutting-edge engineering}
+\papertitle{Our research paper: cutting-edge cooling}
%% Put author names into the order you want. Use the same order for affiliations.
@@ -106,7 +104,7 @@
%%
%% \JointFirstAuthor, if applicable, follows the affiliation of the relevant authors, no spaces.
-\SetAuthors{Mamoru Tanahashi\affil{1}\JointFirstAuthor , Yongchan Kim\affil{2}\JointFirstAuthor , Sumanta Acharya\affil{3} , Koji Fukagata\affil{4}, John Lienhard\affil{5}\CorrespondingAuthor{lienhard@mit.edu}}
+\SetAuthors{Mamoru Tanahashi\affil{1}\JointFirstAuthor, Yongchan Kim\affil{2}\JointFirstAuthor, Sumanta Acharya\affil{3}, Koji Fukagata\affil{4}, John Lienhard\affil{5}\CorrespondingAuthor{lienhard@mit.edu}}
\SetAffiliation{1}{Department of Mechanical Engineering, Tokyo Institute of Technology, Japan}
\SetAffiliation{2}{School of Mechanical Engineering, Korea University, Republic of Korea}
@@ -124,18 +122,17 @@
\begin{abstract}
-This guide has been prepared for authors of extended abstract to be presented at The Second Pacific Rim Thermal Engineering Conference (PRTEC2019), December 13--17, 2019, Maui, Hawaii, USA. Authors are requested to follow these guidelines to achieve uniformity in the presentation of the proceedings. The main format of the extended abstract is as follows. Text: Times New Roman (or equivalent), 11 pt, left and right justified. Headings: Times New Roman, all capitals, 12 pt, centered. Page size A4 (210 $\times$ 297 mm); 20 mm borders all round; paper title starts at 40 mm from the top of the page except for the first page. Convert the manuscript to a single PDF file and submit it to the Online Submission System (\url{https://www.jsme.or.jp/ted/PRTEC2019/}) by the electrical format. The abstract should summarize the key findings in your study and should be in a single paragraph no more than 250 words. It should give an account of the most relevant contributions of the paper. It is also important to briefly indicate the goal, the methods, the results, and the conclusions. Avoid abbreviations, diagrams, and references. It must be self-contained and understandable without reference to the text.
+This guide has been prepared for authors of extended abstract to be presented at The Second Pacific Rim Thermal Engineering Conference (PRTEC2024), December 15--19, 2024, Honolulu, Hawaii, USA. Authors are requested to follow these guidelines to achieve uniformity in the presentation of the proceedings. The main format of the extended abstract is as follows. Text: Times New Roman (or equivalent), 11 pt, left and right justified. Headings: Times New Roman, all capitals, 12 pt, centered. Page size A4 (210 $\times$ 297 mm); 20 mm borders all round; paper title starts at 40 mm from the top of the page except for the first page. Convert the manuscript to a single PDF file and submit it to the Online Submission System (\url{https://www.jsme.or.jp/conference/PRTEC2024/}) by the electrical format. The abstract should summarize the key findings in your study and should be in a single paragraph no more than 250 words. It should give an account of the most relevant contributions of the paper. It is also important to briefly indicate the goal, the methods, the results, and the conclusions. Avoid abbreviations, diagrams, and references. It must be self-contained and understandable without reference to the text.
-\keywords{PRTEC, Extended Abstract, Template; 10 pt Times font} %% <=== Change to your keywords, keep this command before \end{abstract}.
+\keywords{Times New Roman, 10 pt, Convection, Computational methods, Heat exchanger, Cooling turbine blade, Film cooling, High temperature} %% <=== Change to your keywords, keep this command before \end{abstract}.
\end{abstract}
-
\section{Introduction \NoCaseChange{(Details for submitting extended abstract)}}
-The Extended Abstract must be formatted using this template and submitted by \textbf{June 30, 2019} for review. \textbf{The final version of the Extended Abstract must be submitted by August 31, 2019 for inclusion in the proceedings.} The final version of the extended abstract that does not conform to the correct format will not be included in the proceedings. There will be no opportunity to alter it after the submission of the final version.
+The Extended Abstract must be formatted using this template and submitted by \textbf{August 15, 2024} for review. \textbf{The final version of the Extended Abstract must be submitted by September 30, 2024 for inclusion in the proceedings.} The final version of the extended abstract that does not conform to the correct format will not be included in the proceedings. There will be no opportunity to alter it after the submission of the final version.
-It is assumed that the corresponding author will make a presentation at the conference. Each accepted extended abstract must have at least one paid regular or student registration by \textbf{August 31, 2019} to ensure that their presentation is included in the Conference Program.
+It is assumed that the corresponding author will make a presentation at the conference. Each accepted extended abstract must have at least one paid regular or student registration by \textbf{October 15, 2024} to ensure that their presentation is included in the Conference Program.
\section{Length and Layout}
@@ -150,7 +147,7 @@ The layout of the extended abstract should follow the style of this document, st
\textbf{KEYWORDS:} Keywords can be selected to describe the feature of the extended abstract. Leave two blank lines between keywords and the first major heading.
-\textbf{Header and footnotes:} The header includes the Paper number. \textbf{Please insert your presentation ID supplied by the Online Submission System, e.g., PRTEC-23456, if your presentation ID is PRTEC-23456.} The footnote of the first page contains E-mail address of the corresponding author. Note that this ``formal'' corresponding author can be different from the ``practical'' corresponding author registered on the submission system. Do not edit the copyright line. We do not transfer the copyright for the authors' convenience. The copyright line should always appear as ``Copyright \textcopyright\ 2019 by The Author(s). Distributed by JSME, KSME, and ASTFE with permission.'' Do not substitute the authors' names in the copyright line.
+\textbf{Header and footnotes:} The header includes the Paper number. \textbf{Please insert your presentation ID supplied by the Online Submission System, e.g., PRTEC-23456, if your presentation ID is PRTEC-23456.} The footnote of the first page contains E-mail address of the corresponding author. Note that this ``formal'' corresponding author can be different from the ``practical'' corresponding author registered on the submission system. Do not edit the copyright line. We do not transfer the copyright for the authors' convenience. The copyright line should always appear as ``Copyright \textcopyright\ 2024 by The Author(s). Distributed by JSME, KSME, and ASTFE with permission.'' Do not substitute the authors' names in the copyright line.
@@ -240,11 +237,11 @@ Authors from non-English speaking countries are requested to find persons who ar
\textbf{Figures and tables:} Figures and tables should be placed at the top or bottom of the page on which they are first mentioned if possible, on the next page if not. Do not gather them at the end of the extended abstract.
-\textbf{Submission:} The Extended Abstract should be converted to a single PDF file whose size is no more than 4 Mbytes, and submitted to the Online Submission System (\url{https://www.jsme.or.jp/ted/PRTEC2019/}).
+\textbf{Submission:} The Extended Abstract should be converted to a single PDF file whose size is no more than 4 Mbytes, and submitted to the Online Submission System (\url{https://www.jsme.or.jp/conference/PRTEC2024/}).
-\textbf{Submission Deadline for review:} Extended Abstract for review should be submitted by \textbf{June 30, 2019}. Notification of acceptance will be made by July 15, 2019.
+\textbf{Submission Deadline for review:} Extended Abstract for review should be submitted by \textbf{July 15, 2024}. Notification of acceptance will be made by August 15, 2024.
-\textbf{Submission Deadline for final version:} All contributors must upload the final version of Extended Abstract for inclusion in the proceedings by \textbf{August 31, 2019} even if there is no modification from the initial Extended Abstract. The Final Extended Abstract that does not conform to the correct format will not be included in the proceedings. There will be no opportunity to alter it after the submission of the final version.
+\textbf{Submission Deadline for final version:} All contributors must upload the final version of Extended Abstract for inclusion in the proceedings by \textbf{September 30, 2024} even if there is no modification from the initial Extended Abstract. The Final Extended Abstract that does not conform to the correct format will not be included in the proceedings. There will be no opportunity to alter it after the submission of the final version.
\section*{Acknowledgements}
@@ -286,7 +283,7 @@ Acknowledgments should be placed immediately following CONCLUSIONS, if necessary
\section{Additional notes for \LaTeX\ users}
The PRTEC class file is compatible with \hologo{pdfLaTeX}, \hologo{LuaLaTeX}, and \hologo{XeLaTeX}. The class relies on the \texttt{newtx} math and text fonts and is not configured for \texttt{fontspec}. The class will automatically set the needed margins, spacings, font sizes, and citation formats. The class is also designed to support hyperlinks, metadata, and pdf bookmarks.
-The class loads the \verb|\booktabs|, \verb|\array|, and \verb|\dcolumn| packages, for use in formatting tables.
+The class loads the \verb|mathtools| and \verb|amsmath| for setting mathematics. The class loads the \verb|booktabs|, \verb|array|, and \verb|dcolumn| packages for formatting tables.
PRTEC requires that section headings be set in uppercase, bold-face type. The class will do this automatically. You can place \verb|\cite{..}|, \verb|\ref{..}|, \verb|\label{..}|, and into headings directly, as you would in the main text. Do not enclose them braces, e.g.\ \verb|{\cite{..}}|, which will cause errors. You can place \verb|\footnote{..}| into headings, but not into captions.\footnote{See \texttt{tex-stackexchange} for various approaches to footnotes in captions, if they seem necessary. For footnotes inside tables, use the \texttt{tablefootnote} package.}
@@ -298,12 +295,12 @@ The pdf bookmarks are automatically set as the text of the section heading. Simp
%% For math in a section heading: the optional argument creates a pdfbookmark
%% without an error message or loss of characters.
-\section[Proof that S-gen\neq 0]{Proof that $\dot{S}_{\textrm{gen}}\neq 0$}
+\section[Proof that S-gen\neq 0]{Proof that \(\dot{S}_{\textrm{gen}}\neq 0\)}
For math in a section heading, the optional argument of \verb|\section[..]{..}| creates a pdfbookmark without losing characters or producing error messages. For this example, we use:
-\verb|\section[Proof that S-gen\neq 0]{Proof that $\dot{S}_{\textrm{gen}}\neq 0$}|
+\verb|\section[Proof that S-gen\neq 0]{Proof that \(\dot{S}_{\textrm{gen}}\neq 0\)}|
-Observe that some simple math expressions are accepted by the \verb|hyperref| package that manages the bookmarks.
+Some simple math expressions are accepted by the \verb|hyperref| package that manages the bookmarks.
\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/prtec/README.md b/macros/latex/contrib/prtec/README.md
index f3dacefae1..f01e4e5dc1 100644
--- a/macros/latex/contrib/prtec/README.md
+++ b/macros/latex/contrib/prtec/README.md
@@ -1,6 +1,6 @@
#prtec -- A template for PRTEC conference papers#
- Version 1.06 dated 2019/08/20.
+ Version 1.07 dated 2024/07/07.
####Overview####
This class provides a LaTeX template to format extended abstracts for the
@@ -50,6 +50,12 @@
####Version History####
+ v1.07
+ - update to PRTEC 24
+ - update various aspects of code to account for 5 years of change in LaTeX
+ - adjust top and bottom margins
+ - include \\DocumentMetadata
+
v1.06 -- correct nofoot option to fully clear header
v1.05 -- edits to .bst to better support urls; minor edit to \\entry
@@ -62,7 +68,7 @@
####License####
- Copyright (c) 2019 John H. Lienhard
+ Copyright (c) 2024 John H. Lienhard
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
associated documentation files (the "Software"), to deal in the Software without restriction,
diff --git a/macros/latex/contrib/prtec/prtec.cls b/macros/latex/contrib/prtec/prtec.cls
index 9bd3af2237..9bd46e5ba1 100644
--- a/macros/latex/contrib/prtec/prtec.cls
+++ b/macros/latex/contrib/prtec/prtec.cls
@@ -1,12 +1,14 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%% This file provides the prtec class for formatting conference papers according to
-%% the Pacific Rim Thermal Engineering Conference (PRTEC) requirements as of April 2019.
+%% the Pacific Rim Thermal Engineering Conference (PRTEC) requirements as of July 2024.
%%
%% The prtec.cls file should be used with the files prtec.bst (for citations) and prtec-template.tex.
%%
%%
-%% This file is version 1.06 dated 2019/08/20.
+%% This file is version and date:
+ \def\versionno{1.07}
+ \def\versiondate{2024/07/07\space}
%%
%% Author: John H. Lienhard V
%% Department of Mechanical Engineering
@@ -34,7 +36,7 @@
%%
%% LICENSE:
%%
-%% Copyright (c) 2019 John H. Lienhard
+%% Copyright (c) 2024 John H. Lienhard
%%
%% Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
%% associated documentation files (the "Software"), to deal in the Software without restriction,
@@ -54,33 +56,14 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{prtec}[2019/08/20 PRTEC paper format]
+\ProvidesClass{prtec}[\versiondate\ PRTEC paper format]
-\LoadClass[twoside,11pt]{article}
-% Two-sided layout not used in PRTEC's specs, but is included anyway.
+\LoadClass[11pt]{article}
%%%%%%%%%%%%%% Options for the class %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\RequirePackage{ifthen}
-\newboolean{DefaultSups}
-\setboolean{DefaultSups}{true}
-
-\RequirePackage{kvoptions}
-\RequirePackage{kvsetkeys}
-\SetupKeyvalOptions{
- family=prtec,
- prefix=prtec@,
- setkeys=\kvsetkeys,
-}
-
-%%% set key nodefaultsups to obtain newtx superiors font for footnotes.
-\define@key{prtec}{nodefaultsups}[false]{%
- \setboolean{DefaultSups}{#1}
-}
-
-\ProcessKeyvalOptions*
-
%% option to omit PRTEC footer and header
\DeclareOption{nofoot}{%
@@ -96,13 +79,10 @@
%% Access many options from newtxmath
%% See newtxmath documentation for details
-\DeclareOption{upint,smallerops,varvw,varg,slantedGreek,frenchmath,varbb,cmbraces}{\PassOptionsToPackage{}{newtxmath}}
+\DeclareOption{upint,smallerops,varvw,varg,slantedGreek,frenchmath,varbb,cmbraces,subscriptcorrection}{\PassOptionsToPackage{}{newtxmath}}
%% Option for slightly larger small capitals font
-\DeclareOption{largesc}{\PassOptionsToPackage{}{newtxtext}}
-
-%% Option not to use latex default superscripts, instead using the newtxtext superiors font [nodefaultsups]
-\ifthenelse{\boolean{DefaultSups}}{\PassOptionsToPackage{defaultsups}{newtxtext}}{\relax}
+\DeclareOption{largesc}{\PassOptionsToPackage{largesc=true}{newtxtext}}
%% Suppress warnings about any omitted keys as unused global options
\DeclareOption*{}
@@ -112,8 +92,8 @@
%%%%%%%%%%%%% end options %%%%%%%%%%%%%%%%%%%
-\RequirePackage[a4paper, left=20mm, right=20mm, top=20mm, bottom = 20mm, footskip=10mm, includefoot, headsep=2mm]{geometry}
-% conforms to PRTEC 19 required margins
+\RequirePackage[a4paper, left=20mm, right=20mm, top=20mm, bottom=20mm, headsep=3mm, includefoot ]{geometry}
+% conforms to PRTEC24 required margins
\RequirePackage{parskip}
@@ -122,8 +102,9 @@
\renewcommand*{\bibfont}{\footnotesize}
\RequirePackage{graphicx}
-\RequirePackage[hyperref,fixpdftex,dvipsnames,svgnames,x11names]{xcolor}
-\RequirePackage{xparse}
+\RequirePackage[dvipsnames,svgnames,x11names]{xcolor}
+
+\ifdefined\NewDocumentCommand\else\RequirePackage{xparse}\fi
%%%%%%%%%%%%%%%%%%%%%%%%
@@ -136,14 +117,10 @@
%%%% FONT related %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\RequirePackage{mathtools} % extends amsmath
-\RequirePackage[utf8]{inputenc}
\RequirePackage[]{newtxtext}
\RequirePackage[]{newtxmath}
% See package documentation
-%% override \textsu if using default superiors
-\ifthenelse{\boolean{DefaultSups}}{\let\textsu\textsuperscript}{\relax}
-
\RequirePackage{bm} % load after all other math packages, to give greater access to bold math
@@ -163,19 +140,19 @@
\RequirePackage{fancyhdr}
\pagestyle{fancy}
-\setlength{\headheight}{22.53pt}
+\setlength{\headheight}{24pt}
\fancyfoot{}
-\fancyfoot[CE,CO]{\thepage}
-\fancyfoot[RO,LE]{}
+\fancyfoot[C,C]{\thepage}
+\fancyfoot[R,L]{}
\fancyhead{}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}
\fancypagestyle{title}{%
\fancyhf{} % clear all header and footer fields
-\fancyfoot[LO,RE]{Copyright~\textcopyright~\the\year\ The Author(s). Distributed by JSME, KSME, and ASTFE with permission.}
-\fancyfoot[LE,RO]{\thepage}
-\fancyhead[LE,RO]{\bfseries\sffamily \HeaderConfName}
+\fancyfoot[L]{Copyright~\textcopyright~\the\year\ The Author(s). Distributed by JSME, KSME, and ASTFE with permission.}
+\fancyfoot[R]{\thepage}
+\fancyhead[R]{\bfseries\sffamily \HeaderConfName}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}}
@@ -196,10 +173,9 @@
\noindent\makebox[2ex][r]{\@makefnmark}#1}
-
%%%%%%%%% CAPTION RELATED %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\RequirePackage[labelfont={sf,bf},hypcap=false]{caption}
+\RequirePackage[labelfont={bf},hypcap=false]{caption}
\RequirePackage[hypcap=false,list=true]{subcaption}
\captionsetup[figure]{name=Fig.,labelfont={bf},textfont={}, labelsep=quad} %textformat=period,
@@ -207,15 +183,12 @@
%%%%%%%%%%%%%%%%%% Section headings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% wish to accommodate hyperref
-
-\RequirePackage{textcase} %% Allows uppercase titles and captions without errors from math and citations
\RequirePackage[raggedright,indentafter]{titlesec}
% PRTEC specifies 12 pt headings
-\titleformat{\section}{\bfseries\mathversion{bold}\large\centering}{\thesection.}{0.5em}{\MakeTextUppercase}
-\titleformat{name=\section,numberless}{\bfseries\mathversion{bold}\large\centering}{}{0em}{\MakeTextUppercase}
+\titleformat{\section}{\bfseries\mathversion{bold}\large\centering}{\thesection.}{0.5em}{\MakeUppercase}
+\titleformat{name=\section,numberless}{\bfseries\mathversion{bold}\large\centering}{}{0em}{\MakeUppercase}
\titleformat{\subsection}[runin]{\bfseries}{\thesubsection}{0.5em}{\mathversion{bold}\noindent}[\hspace*{0.5em}]
\titleformat{\subsubsection}[runin]{\itshape}{}{0em}{\noindent\underline}[.\hspace*{0.5em}]
@@ -230,88 +203,81 @@
\setcounter{section}{0}
\pdfbookmark[0]{Appendices}{appendices}
\renewcommand\thesection{\Alph{section}}
- \titleformat{\section}{\bfseries\mathversion{bold}\large\centering}{APPENDIX \thesection:}{0.5em}{\MakeTextUppercase}
+ \titleformat{\section}{\bfseries\mathversion{bold}\large\centering}{APPENDIX \thesection:}{0.5em}{\MakeUppercase}
}
%%%%%%%%%%%%% hyperref %%%%%%%%%%%%%%%%%%%
-\RequirePackage{hyperxmp} %% to fix transfer of metadata to Acrobat pdf
-
-\RequirePackage[%
- unicode, % Unicode encoded PDF strings
- psdextra, % additional support for math in pdf bookmarks
- pdfborder={0 0 0},%
- bookmarks=true, %
- bookmarksnumbered=true,%
- bookmarksopen=true,%
- bookmarksopenlevel=1,%
- colorlinks=true,%%% <=== set false to get black type, but do so in .tex file
+\RequirePackage[psdextra]{hyperref}
+
+\hypersetup{
+ colorlinks=true,
+ pdfborder={0 0 0},
+ bookmarksnumbered=true,
+ bookmarksopen=true,
+ bookmarksopenlevel=1,
+ pdfpagelayout=SinglePage,
+ pdfdisplaydoctitle=true,
+ pdfstartview=Fit,
+ pdfnewwindow=true,
linkcolor=blue, %
- citecolor=blue, % SeaGreen4,%
- urlcolor=blue, % Red3,%
- breaklinks=true,%
- pdftitle={}, % <=== add in .tex file
- pdfkeywords={}, % <=== add in .tex file
- pdfnewwindow=true,%
- pdfpagelayout=TwoPageRight,%
- pdfauthor={}, % <=== add in .tex file
- pdfdisplaydoctitle=true%
- ]{hyperref}
-
+ citecolor=blue, %
+ urlcolor=blue, %
+ filecolor=violet,%
+}
\urlstyle{same} % don't switch to typewriter font
\RequirePackage{doi} % provides hyperlinks for doi in bibliography
\renewcommand{\doitext}{doi:~} % change the default, {doi:}, to this for PRTEC specification
-%% Since \bm is useful in headings, this fix will reduce frequency with which
-%% alternate pdfstrings must be given in section command as \section[pdfstring]{texstring}
+%% Since \bm may be useful in headings, this fix will reduce frequency with which
+%% alternate pdfstrings must be given in revised section command as \section[pdfstring]{texstring}
\pdfstringdefDisableCommands{%
\def\bm#1#{\relax}%
}
-%% Let's also make sure \NoCaseChange in section headings won't break pdf bookmarks
+% Let's disable \( and \) in pdf bookmarks
+\pdfstringdefDisableCommands{%
+ \def\({\relax}%
+ \def\){\relax}%
+}
+
+% Let's also make sure \NoCaseChange in section headings won't break pdf bookmarks
\pdfstringdefDisableCommands{%
\let\NoCaseChange\relax%
}
-%% Let's just remove citations from pdf bookmarks
+% Let's just remove citations from pdf bookmarks
\pdfstringdefDisableCommands{%
\def\cite{\@gobble}%
}
-%% Let's make sure footnotes in section headings don't break pdf bookmarks.
+%% Ensure that tag color does not follow \eqref into bookmarks
+\pdfstringdefDisableCommands{%
+ \def\eqref#1{(\ref{#1})}%
+}
+
+% Let's make sure footnotes in section headings don't break pdf bookmarks.
+% Revised footnote command above is already robust
+
\RequirePackage{etoolbox}
-\robustify{\footnote}
+\robustify\footnote
\pdfstringdefDisableCommands{%
\def\footnote#1{}%
}
-
%% Let's also add \footnote to the \TextUppercase exception list, so that footnote text won't be capitalized
-%% if given in section headings
-\RequirePackage{xpatch}
-\xpatchcmd{\@uclcnotmath}{\@nonchangecase\ref}{\@nonchangecase\ref\@nonchangecase\footnote}{}{}
-
-
-%%% Create an optional argument for unnumbered sections and set pdf bookmark (thru \addcontentsline).
-%%% The optional argument will manually set the pdf bookmark for that section; can be used to avoid hyperref
-%%% errors when macros are in section titles.
-%%% There should not be errors for $$, \cite, \ref, \label, \footnote, or \bm with current construction.
-\let\svsection\section
-\RenewDocumentCommand{\section}{s o m}{%
- \IfBooleanTF {#1}
- {\svsection*{#3}\phantomsection
- {\IfNoValueTF {#2}
- {\addcontentsline{toc}{section}{#3} }
- {\addcontentsline{toc}{section}{#2} }
- }
- }
- {\IfNoValueTF {#2}
- {\svsection{#3}}
- {\svsection[#2]{#3}}
- }
-}
+%% if given in section headings. Ditto for \eqref
+%
+\ifx\AddToNoCaseChangeList\@undefined % see https://github.com/John02139/asmeconf/issues/5
+ \patchcmd{\@uclcnotmath}{\@nonchangecase\ref}{\@nonchangecase\ref\@nonchangecase\footnote}{\typeout{PRTEC patched textcase nonchangecase to include footnote.}}{}
+ \patchcmd{\@uclcnotmath}{\@nonchangecase\ref}{\@nonchangecase\ref\@nonchangecase\eqref}{\typeout{PRTEC patched textcase nonchangecase to include eqref.}}{}
+\else
+ \AddToNoCaseChangeList{\eqref \footnote}
+\fi
+
+%%% There should be no errors for section headings with \(, \), \cite, \ref, \eqref, \label, \footnote, \NoCaseChange, or \bm
%%%%%%%%%%%%% Define special environments %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -321,7 +287,7 @@
\providecommand{\@keywords}{\relax}
-\DeclareDocumentCommand{\keywords}{m}{%
+\NewDocumentCommand{\keywords}{m}{%
\IfNoValueTF{#1}{%
\relax}{%
\long\def\@keywords{\par\medskip\noindent{\bfseries\small KEYWORDS: }{\small #1}}%
@@ -331,7 +297,7 @@
\DeclareDocumentEnvironment{abstract}{}{%
\section*{Abstract}%
}
- {\@keywords\bigskip%
+ {\@keywords\ignorespacesafterend%
}
@@ -347,7 +313,7 @@
%% If the second argument of \entry is omitted, a bold section heading is produced, e.g. \entry{Greek Letters}
-\DeclareDocumentCommand{\entry}{m g}{%
+\NewDocumentCommand{\entry}{m g}{%
\IfNoValueTF{#2}{%
\item[\itshape#1\hfill]\smallskip
}{%
@@ -388,7 +354,7 @@
\providecommand\@ConfCity{\hbox{ }}
\newcommand{\HeaderConfName}{%
-\parbox{\linewidth}{\raggedleft\bfseries\sffamily%
+\parbox{\linewidth}{\raggedleft\bfseries\sffamily\small%
\@ConfName\linebreak[4]%\par%
\@ConfDate\@CDsep\@ConfCity%
}%
@@ -400,7 +366,7 @@
\newcommand{\PaperNo}{%
\vspace*{-4.7mm}%
\parbox{\linewidth}{\raggedleft\bfseries\sffamily\Large%
-\MakeTextUppercase{\@paperno}%
+\MakeUppercase{\@paperno}%
}%
}
@@ -410,7 +376,7 @@
\newcommand{\PaperTitle}{%
\par\vspace*{6mm}%
\parbox{\linewidth}{\centering{\bfseries\Large%
-\MakeTextUppercase{\@papertitle}%
+\MakeUppercase{\@papertitle}%
\thispagestyle{title}\par} %% <=== \par gets the font leading to stick so that lines space properly
}%
}
@@ -429,13 +395,13 @@
\NewCoffin{\AffiliationsBlock}
\SetHorizontalCoffin\AffiliationsBlock{}
-\DeclareDocumentCommand{\SetAuthors}{m}{%
+\NewDocumentCommand{\SetAuthors}{m}{%
\SetHorizontalCoffin\AuthorBlock{%
\parbox{\linewidth}{\centering\bfseries\ignorespaces#1\ignorespaces}%
}
}
-\DeclareDocumentCommand{\SetAffiliation}{m m}{%
+\NewDocumentCommand{\SetAffiliation}{m m}{%
\SetVerticalCoffin\AffiliationBlock{\textwidth}{%
\centering\footnotemark[#1]#2\ignorespaces%
}
@@ -448,7 +414,7 @@
\newif\ifCA\CAfalse
\newcommand{\CAemail}[1]{\gdef\@CAemail{#1}}
-\DeclareDocumentCommand{\CorrespondingAuthor}{m}{%
+\NewDocumentCommand{\CorrespondingAuthor}{m}{%
\global\CAtrue%
\CAemail{#1}%
$^\ast$%
@@ -457,13 +423,13 @@
%%% flag for joint first authors (two or more)
\newif\ifJA\JAfalse
-\DeclareDocumentCommand{\JointFirstAuthor}{}{%
+\NewDocumentCommand{\JointFirstAuthor}{}{%
\global\JAtrue%
$^\dagger$%
}
%%% Affiliation mark
-\DeclareDocumentCommand{\affil}{m}{%
+\NewDocumentCommand{\affil}{m}{%
{\mdseries\footnotemark[#1]}%
}
@@ -475,11 +441,11 @@
\oldaffil{#1}\futurelet\nextToken\isOthernote}
\newcommand\isOthernote{%
- \ifx\CorrespondingAuthor\nextToken\textsu{\mdseries,}%
+ \ifx\CorrespondingAuthor\nextToken\textsuperscript{\mdseries,}%
\else%
- \ifx\JointFirstAuthor\nextToken\textsu{\mdseries,}%
+ \ifx\JointFirstAuthor\nextToken\textsuperscript{\mdseries,}%
\else
- \ifx\affil\nextToken\textsu{\mdseries,}%
+ \ifx\affil\nextToken\textsuperscript{\mdseries,}%
\fi%
\fi%
\fi%
@@ -494,7 +460,7 @@
\renewcommand\JointFirstAuthor{%
\oldJointFirstAuthor\futurelet\nextToken\isOthernote}
-\DeclareDocumentCommand{\SetAuthorBlock}{}{%
+\NewDocumentCommand{\SetAuthorBlock}{}{%
\let\savethefootnote\thefootnote
\JoinCoffins\AuthorBlock[hc,b]\AffiliationsBlock[hc,t](0pt,-\baselineskip)
\centerline{\TypesetCoffin\AuthorBlock}
@@ -511,7 +477,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% Make the title section
-\DeclareDocumentCommand{\MakeTitlePage}{}{%
+\NewDocumentCommand{\MakeTitlePage}{}{%
\PaperNo
\PaperTitle
\vspace*{2\baselineskip}
diff --git a/macros/latex/contrib/prtec/sample-figure.pdf b/macros/latex/contrib/prtec/sample-figure.pdf
index 29b41786be..89d44bf9cf 100644
--- a/macros/latex/contrib/prtec/sample-figure.pdf
+++ b/macros/latex/contrib/prtec/sample-figure.pdf
Binary files differ
diff --git a/macros/latex/contrib/randexam/randexam-a-answer.pdf b/macros/latex/contrib/randexam/randexam-a-answer.pdf
index d961cd9cb5..686d3f696c 100644
--- a/macros/latex/contrib/randexam/randexam-a-answer.pdf
+++ b/macros/latex/contrib/randexam/randexam-a-answer.pdf
Binary files differ
diff --git a/macros/latex/contrib/randexam/randexam-a-blank.pdf b/macros/latex/contrib/randexam/randexam-a-blank.pdf
index 9656be370d..d6ea0b132c 100644
--- a/macros/latex/contrib/randexam/randexam-a-blank.pdf
+++ b/macros/latex/contrib/randexam/randexam-a-blank.pdf
Binary files differ
diff --git a/macros/latex/contrib/randexam/randexam-b-answer.pdf b/macros/latex/contrib/randexam/randexam-b-answer.pdf
index fe0867038c..ec97459092 100644
--- a/macros/latex/contrib/randexam/randexam-b-answer.pdf
+++ b/macros/latex/contrib/randexam/randexam-b-answer.pdf
Binary files differ
diff --git a/macros/latex/contrib/randexam/randexam-b-blank.pdf b/macros/latex/contrib/randexam/randexam-b-blank.pdf
index c059b6e615..459ad1f116 100644
--- a/macros/latex/contrib/randexam/randexam-b-blank.pdf
+++ b/macros/latex/contrib/randexam/randexam-b-blank.pdf
Binary files differ
diff --git a/macros/latex/contrib/randexam/randexam.cls b/macros/latex/contrib/randexam/randexam.cls
index ec5d1c43c2..dacc079cb0 100644
--- a/macros/latex/contrib/randexam/randexam.cls
+++ b/macros/latex/contrib/randexam/randexam.cls
@@ -6,7 +6,7 @@
% ----------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{randexam}[2024-02-18 v2024E Make an exam paper and its randomized variants]
+\ProvidesClass{randexam}[2024-07-09 v2024F Make an exam paper and its randomized variants]
%% Old LaTeX release could not recognize date format like 2022-11-01
%\@ifl@t@r\fmtversion{2022-11-01}{}{
@@ -786,7 +786,8 @@
\UseExamTemplate{examdata}{default}
}
-\preto{\@enddocumenthook}{\printquestions\rdxm@stop@random}
+%% this equals to \AddToHook{enddocument}[randexam]{...}
+\AtEndDocument{\printquestions\rdxm@stop@random}
\newcommand\ignorepars{\@ifnextchar\par{\expandafter\ignorepars\@gobble}{}}
@@ -1228,6 +1229,11 @@
\mbox{}\nobreak\hfill$\cdots\cdots$\solutionpointstext{#1}
\par\noindent\ignorespaces
}
+
+%% \eqno would cause extra space after a $$...$$ equation
+%% this bug was fixed in latex release 2023-06-01
+%% see https://github.com/latex3/latex2e/issues/1059
+%% \tag is used in a \[...\] equation hence no problem with it
\newcommand{\pointseqno}[1]{\eqno{\cdots\cdots\text{\solutionpointstext{#1}}}}
\newcommand{\pointstag}[1]{\tag*{$\cdots\cdots$\solutionpointstext{#1}}}
@@ -1374,6 +1380,9 @@
\RequirePackage{extarrows}
\newcommand{\e}{\mathrm{e}}
\newcommand{\R}{\mathbb{R}}
+ \newcommand{\jacobi}[2]{{\left(\frac{##1}{##2}\right)}}
+ \newcommand{\ii}{\mathrm{i}}
+ \newcommand{\Zi}{\mathbb{Z}[\ii]}
\DeclareMathOperator{\arccot}{arccot}
\DeclareMathOperator{\Corr}{\rho}
\DeclareMathOperator{\Cov}{Cov}
diff --git a/macros/latex/contrib/randexam/randexam.pdf b/macros/latex/contrib/randexam/randexam.pdf
index 68c0e5925d..1ef3fcc5ad 100644
--- a/macros/latex/contrib/randexam/randexam.pdf
+++ b/macros/latex/contrib/randexam/randexam.pdf
Binary files differ
diff --git a/macros/latex/contrib/randexam/randexam.tex b/macros/latex/contrib/randexam/randexam.tex
index 74e57318df..ff7d951a15 100644
--- a/macros/latex/contrib/randexam/randexam.tex
+++ b/macros/latex/contrib/randexam/randexam.tex
@@ -3,7 +3,7 @@
\documentclass[12pt,plain,math=most]{randexam}
\geometry{b5paper,margin=2cm}
-\newcommand*{\myversion}{2024E}
+\newcommand*{\myversion}{2024F}
\newcommand*{\mydate}{\the\year-\mylpad\month-\mylpad\day}
\newcommand*{\mylpad}[1]{\ifnum#1<10 0\the#1\else\the#1\fi}
diff --git a/macros/latex/contrib/reledmac/doc-more/page-typesetting-columns.pdf b/macros/latex/contrib/reledmac/doc-more/page-typesetting-columns.pdf
index 1ae91515fb..fc1cf0d3af 100644
--- a/macros/latex/contrib/reledmac/doc-more/page-typesetting-columns.pdf
+++ b/macros/latex/contrib/reledmac/doc-more/page-typesetting-columns.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/1-criticalendnotes.pdf b/macros/latex/contrib/reledmac/examples/1-criticalendnotes.pdf
index 58f1d6981d..7454d1cce0 100644
--- a/macros/latex/contrib/reledmac/examples/1-criticalendnotes.pdf
+++ b/macros/latex/contrib/reledmac/examples/1-criticalendnotes.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/1-criticalnotes.pdf b/macros/latex/contrib/reledmac/examples/1-criticalnotes.pdf
index ea2f749d32..51238cf571 100644
--- a/macros/latex/contrib/reledmac/examples/1-criticalnotes.pdf
+++ b/macros/latex/contrib/reledmac/examples/1-criticalnotes.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/1-sidenotes.pdf b/macros/latex/contrib/reledmac/examples/1-sidenotes.pdf
index 2d7130fcb9..fa4b8cdbb5 100644
--- a/macros/latex/contrib/reledmac/examples/1-sidenotes.pdf
+++ b/macros/latex/contrib/reledmac/examples/1-sidenotes.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/1-tabular.pdf b/macros/latex/contrib/reledmac/examples/1-tabular.pdf
index d7a945978b..80a889d85b 100644
--- a/macros/latex/contrib/reledmac/examples/1-tabular.pdf
+++ b/macros/latex/contrib/reledmac/examples/1-tabular.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/1-verses-doublenumbering.pdf b/macros/latex/contrib/reledmac/examples/1-verses-doublenumbering.pdf
index 75b679b50d..4881557ce0 100644
--- a/macros/latex/contrib/reledmac/examples/1-verses-doublenumbering.pdf
+++ b/macros/latex/contrib/reledmac/examples/1-verses-doublenumbering.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/1-verses.pdf b/macros/latex/contrib/reledmac/examples/1-verses.pdf
index e1d1b6af19..3caf07a14a 100644
--- a/macros/latex/contrib/reledmac/examples/1-verses.pdf
+++ b/macros/latex/contrib/reledmac/examples/1-verses.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/2-antilabe.pdf b/macros/latex/contrib/reledmac/examples/2-antilabe.pdf
index f7b843c631..7c94d43d13 100644
--- a/macros/latex/contrib/reledmac/examples/2-antilabe.pdf
+++ b/macros/latex/contrib/reledmac/examples/2-antilabe.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/2-cross_referencing.pdf b/macros/latex/contrib/reledmac/examples/2-cross_referencing.pdf
index 1c53f875a0..0278d89b9f 100644
--- a/macros/latex/contrib/reledmac/examples/2-cross_referencing.pdf
+++ b/macros/latex/contrib/reledmac/examples/2-cross_referencing.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/2-footnote_spacing.pdf b/macros/latex/contrib/reledmac/examples/2-footnote_spacing.pdf
index c9e6daca45..542174e6f0 100644
--- a/macros/latex/contrib/reledmac/examples/2-footnote_spacing.pdf
+++ b/macros/latex/contrib/reledmac/examples/2-footnote_spacing.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/2-glossaries.pdf b/macros/latex/contrib/reledmac/examples/2-glossaries.pdf
index f702632cf3..3ecab9d63b 100644
--- a/macros/latex/contrib/reledmac/examples/2-glossaries.pdf
+++ b/macros/latex/contrib/reledmac/examples/2-glossaries.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/2-indexing.pdf b/macros/latex/contrib/reledmac/examples/2-indexing.pdf
index ca3b90abcc..607860d6e6 100644
--- a/macros/latex/contrib/reledmac/examples/2-indexing.pdf
+++ b/macros/latex/contrib/reledmac/examples/2-indexing.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/2-lemma_disambigution.pdf b/macros/latex/contrib/reledmac/examples/2-lemma_disambigution.pdf
index 95a09523d9..26e21be7b9 100644
--- a/macros/latex/contrib/reledmac/examples/2-lemma_disambigution.pdf
+++ b/macros/latex/contrib/reledmac/examples/2-lemma_disambigution.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/2-line_numbers_in_header.pdf b/macros/latex/contrib/reledmac/examples/2-line_numbers_in_header.pdf
index 0021b1cbd3..b1dca2b117 100644
--- a/macros/latex/contrib/reledmac/examples/2-line_numbers_in_header.pdf
+++ b/macros/latex/contrib/reledmac/examples/2-line_numbers_in_header.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/2-linespacing.pdf b/macros/latex/contrib/reledmac/examples/2-linespacing.pdf
index 67424c3e0c..499104658b 100644
--- a/macros/latex/contrib/reledmac/examples/2-linespacing.pdf
+++ b/macros/latex/contrib/reledmac/examples/2-linespacing.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/2-manuscript-apparatus.pdf b/macros/latex/contrib/reledmac/examples/2-manuscript-apparatus.pdf
index 362ff7012a..f5f58e81d6 100644
--- a/macros/latex/contrib/reledmac/examples/2-manuscript-apparatus.pdf
+++ b/macros/latex/contrib/reledmac/examples/2-manuscript-apparatus.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/2-notes-width.pdf b/macros/latex/contrib/reledmac/examples/2-notes-width.pdf
index 0fe795532a..abaf67b4f6 100644
--- a/macros/latex/contrib/reledmac/examples/2-notes-width.pdf
+++ b/macros/latex/contrib/reledmac/examples/2-notes-width.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/2-one_series_per_pstart.pdf b/macros/latex/contrib/reledmac/examples/2-one_series_per_pstart.pdf
index ad48933ba2..3cda9762d0 100644
--- a/macros/latex/contrib/reledmac/examples/2-one_series_per_pstart.pdf
+++ b/macros/latex/contrib/reledmac/examples/2-one_series_per_pstart.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/2-performances.pdf b/macros/latex/contrib/reledmac/examples/2-performances.pdf
index e68f4f3b49..c543daa168 100644
--- a/macros/latex/contrib/reledmac/examples/2-performances.pdf
+++ b/macros/latex/contrib/reledmac/examples/2-performances.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/2-reledmac-right-to-left.pdf b/macros/latex/contrib/reledmac/examples/2-reledmac-right-to-left.pdf
index ed0755c95b..9030d23e94 100644
--- a/macros/latex/contrib/reledmac/examples/2-reledmac-right-to-left.pdf
+++ b/macros/latex/contrib/reledmac/examples/2-reledmac-right-to-left.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/2-subdivision-number-in-header.pdf b/macros/latex/contrib/reledmac/examples/2-subdivision-number-in-header.pdf
index a0e92d1b90..53b0429efc 100644
--- a/macros/latex/contrib/reledmac/examples/2-subdivision-number-in-header.pdf
+++ b/macros/latex/contrib/reledmac/examples/2-subdivision-number-in-header.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/2-titles_in_line_numbering_with_notes.pdf b/macros/latex/contrib/reledmac/examples/2-titles_in_line_numbering_with_notes.pdf
index 22f3ac9ed3..7872a6a918 100644
--- a/macros/latex/contrib/reledmac/examples/2-titles_in_line_numbering_with_notes.pdf
+++ b/macros/latex/contrib/reledmac/examples/2-titles_in_line_numbering_with_notes.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/2-titles_not_in_line_numbering.pdf b/macros/latex/contrib/reledmac/examples/2-titles_not_in_line_numbering.pdf
index 6edc466546..d751ef78ff 100644
--- a/macros/latex/contrib/reledmac/examples/2-titles_not_in_line_numbering.pdf
+++ b/macros/latex/contrib/reledmac/examples/2-titles_not_in_line_numbering.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/3-reledpar_columns_different_languages.pdf b/macros/latex/contrib/reledmac/examples/3-reledpar_columns_different_languages.pdf
index ae6daea2f3..d05683ac0a 100644
--- a/macros/latex/contrib/reledmac/examples/3-reledpar_columns_different_languages.pdf
+++ b/macros/latex/contrib/reledmac/examples/3-reledpar_columns_different_languages.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/3-reledpar_mwe.pdf b/macros/latex/contrib/reledmac/examples/3-reledpar_mwe.pdf
index 65e77b6045..71adb5d7bb 100644
--- a/macros/latex/contrib/reledmac/examples/3-reledpar_mwe.pdf
+++ b/macros/latex/contrib/reledmac/examples/3-reledpar_mwe.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/3-reledpar_pages_different_languages_lualatex.pdf b/macros/latex/contrib/reledmac/examples/3-reledpar_pages_different_languages_lualatex.pdf
index 7864905fc5..3d12b5b07b 100644
--- a/macros/latex/contrib/reledmac/examples/3-reledpar_pages_different_languages_lualatex.pdf
+++ b/macros/latex/contrib/reledmac/examples/3-reledpar_pages_different_languages_lualatex.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/3-reledpar_same_page_number_in_both_side.pdf b/macros/latex/contrib/reledmac/examples/3-reledpar_same_page_number_in_both_side.pdf
index 147ece9039..36e5904216 100644
--- a/macros/latex/contrib/reledmac/examples/3-reledpar_same_page_number_in_both_side.pdf
+++ b/macros/latex/contrib/reledmac/examples/3-reledpar_same_page_number_in_both_side.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_advancedshifted-nomax.pdf b/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_advancedshifted-nomax.pdf
index bc2e485aa7..df79382ca8 100644
--- a/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_advancedshifted-nomax.pdf
+++ b/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_advancedshifted-nomax.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_advancedshifted.pdf b/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_advancedshifted.pdf
index a53aafd365..d68d98ff29 100644
--- a/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_advancedshifted.pdf
+++ b/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_advancedshifted.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_default.pdf b/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_default.pdf
index b873ef2634..448dea3da8 100644
--- a/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_default.pdf
+++ b/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_default.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_nomax-shifted.pdf b/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_nomax-shifted.pdf
index 4437bcd188..37ac4daee6 100644
--- a/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_nomax-shifted.pdf
+++ b/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_nomax-shifted.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_nomax.pdf b/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_nomax.pdf
index 0c36cb9564..d69077e19b 100644
--- a/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_nomax.pdf
+++ b/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_nomax.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_nosync.pdf b/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_nosync.pdf
index 073be3c769..692832cc52 100644
--- a/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_nosync.pdf
+++ b/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_nosync.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_shifted.pdf b/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_shifted.pdf
index 7a13994ca4..bf85737443 100644
--- a/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_shifted.pdf
+++ b/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_shifted.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/4-reledpar_column_mix_with_not_column-continuous-numbering.pdf b/macros/latex/contrib/reledmac/examples/4-reledpar_column_mix_with_not_column-continuous-numbering.pdf
index 5dbce10161..e9fb82d345 100644
--- a/macros/latex/contrib/reledmac/examples/4-reledpar_column_mix_with_not_column-continuous-numbering.pdf
+++ b/macros/latex/contrib/reledmac/examples/4-reledpar_column_mix_with_not_column-continuous-numbering.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/4-reledpar_column_mix_with_not_column.pdf b/macros/latex/contrib/reledmac/examples/4-reledpar_column_mix_with_not_column.pdf
index 4c574e496b..6136c9957b 100644
--- a/macros/latex/contrib/reledmac/examples/4-reledpar_column_mix_with_not_column.pdf
+++ b/macros/latex/contrib/reledmac/examples/4-reledpar_column_mix_with_not_column.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/4-reledpar_columns_alignment.pdf b/macros/latex/contrib/reledmac/examples/4-reledpar_columns_alignment.pdf
index 012bb74b4e..0fea810dc6 100644
--- a/macros/latex/contrib/reledmac/examples/4-reledpar_columns_alignment.pdf
+++ b/macros/latex/contrib/reledmac/examples/4-reledpar_columns_alignment.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/4-reledpar_columns_titles_in_line_numbering_with_notes.pdf b/macros/latex/contrib/reledmac/examples/4-reledpar_columns_titles_in_line_numbering_with_notes.pdf
index fc67986e5a..b492f69121 100644
--- a/macros/latex/contrib/reledmac/examples/4-reledpar_columns_titles_in_line_numbering_with_notes.pdf
+++ b/macros/latex/contrib/reledmac/examples/4-reledpar_columns_titles_in_line_numbering_with_notes.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/4-reledpar_inside-outside-columns.pdf b/macros/latex/contrib/reledmac/examples/4-reledpar_inside-outside-columns.pdf
index 58d08bf3bd..d4643edcb3 100644
--- a/macros/latex/contrib/reledmac/examples/4-reledpar_inside-outside-columns.pdf
+++ b/macros/latex/contrib/reledmac/examples/4-reledpar_inside-outside-columns.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/4-reledpar_one_series_per_pstart.pdf b/macros/latex/contrib/reledmac/examples/4-reledpar_one_series_per_pstart.pdf
index 36f6321386..09f3b72602 100644
--- a/macros/latex/contrib/reledmac/examples/4-reledpar_one_series_per_pstart.pdf
+++ b/macros/latex/contrib/reledmac/examples/4-reledpar_one_series_per_pstart.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/4-reledpar_pages_long_notes.pdf b/macros/latex/contrib/reledmac/examples/4-reledpar_pages_long_notes.pdf
index db1ccbc5a7..4ccf4308cd 100644
--- a/macros/latex/contrib/reledmac/examples/4-reledpar_pages_long_notes.pdf
+++ b/macros/latex/contrib/reledmac/examples/4-reledpar_pages_long_notes.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/4-reledpar_pages_notes_leftpage.pdf b/macros/latex/contrib/reledmac/examples/4-reledpar_pages_notes_leftpage.pdf
index d71f06d80e..000ffd301c 100644
--- a/macros/latex/contrib/reledmac/examples/4-reledpar_pages_notes_leftpage.pdf
+++ b/macros/latex/contrib/reledmac/examples/4-reledpar_pages_notes_leftpage.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/4-reledpar_pages_paragraph_separator_between.pdf b/macros/latex/contrib/reledmac/examples/4-reledpar_pages_paragraph_separator_between.pdf
index c6186efd4d..3baa1de986 100644
--- a/macros/latex/contrib/reledmac/examples/4-reledpar_pages_paragraph_separator_between.pdf
+++ b/macros/latex/contrib/reledmac/examples/4-reledpar_pages_paragraph_separator_between.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/4-reledpar_pages_titles_in_line_numbering_with_notes.pdf b/macros/latex/contrib/reledmac/examples/4-reledpar_pages_titles_in_line_numbering_with_notes.pdf
index a36ab701dd..7a63bced17 100644
--- a/macros/latex/contrib/reledmac/examples/4-reledpar_pages_titles_in_line_numbering_with_notes.pdf
+++ b/macros/latex/contrib/reledmac/examples/4-reledpar_pages_titles_in_line_numbering_with_notes.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/4-reledpar_titles_not_in_line_numbering.pdf b/macros/latex/contrib/reledmac/examples/4-reledpar_titles_not_in_line_numbering.pdf
index 33338d8f63..e68462600d 100644
--- a/macros/latex/contrib/reledmac/examples/4-reledpar_titles_not_in_line_numbering.pdf
+++ b/macros/latex/contrib/reledmac/examples/4-reledpar_titles_not_in_line_numbering.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/4-reledpar_verse_text_between.pdf b/macros/latex/contrib/reledmac/examples/4-reledpar_verse_text_between.pdf
index c8200f5ff5..120bdeb43a 100644
--- a/macros/latex/contrib/reledmac/examples/4-reledpar_verse_text_between.pdf
+++ b/macros/latex/contrib/reledmac/examples/4-reledpar_verse_text_between.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/migration.pdf b/macros/latex/contrib/reledmac/migration.pdf
index 50d46b721e..1512a20fea 100644
--- a/macros/latex/contrib/reledmac/migration.pdf
+++ b/macros/latex/contrib/reledmac/migration.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/reledmac.dtx b/macros/latex/contrib/reledmac/reledmac.dtx
index 2109ca38b5..8b43d5b6be 100644
--- a/macros/latex/contrib/reledmac/reledmac.dtx
+++ b/macros/latex/contrib/reledmac/reledmac.dtx
@@ -786,7 +786,7 @@
% Briefe}, series {\sc I, III, VII,} being edited by Dr.\ H.\
% Breger\index{Breger, Herbert}, Dr.~N. G\"adeke\index{G\"adeke, Nora} and
% others at the Leibniz-Archiv, Nieders\"achsische Landesbibliothek, Hannover.
-% (see \url{http://www.nlb-hannover.de/Leibniz})}
+% (see \url{https://www.gwlb.de/leibniz/digitale-ressourcen/repositorium-des-leibniz-archivs})}
% Theodosius's\index{Theodosius} {\em Spherics}, the German {\em
% Algorismus} of Sacrobosco,\index{Sacrobosco} the Sanskrit text of the
% {\em K\={a}\'{s}ik\={a}\-v\d{r}tti\/} of V\={a}mana\index{Vamana} and
@@ -3962,7 +3962,7 @@
% & It makes the peas taste funny \\
% & And get my tummy gummy.\edindex{gummy} &
% & But it keeps them on the knife.
-% \end{edtabularr}
+% \end{edtabularl}
% \pend
% \endnumbering
% \end{verbatim}
diff --git a/macros/latex/contrib/reledmac/reledmac.pdf b/macros/latex/contrib/reledmac/reledmac.pdf
index bc1f8b20f9..bf4c1a04d6 100644
--- a/macros/latex/contrib/reledmac/reledmac.pdf
+++ b/macros/latex/contrib/reledmac/reledmac.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/reledpar.dtx b/macros/latex/contrib/reledmac/reledpar.dtx
index aff1d03da1..1d09e9c4ef 100644
--- a/macros/latex/contrib/reledmac/reledpar.dtx
+++ b/macros/latex/contrib/reledmac/reledpar.dtx
@@ -354,6 +354,7 @@
% \changes{v2.25.4}{2023/07/04}{Fix bug with \protect\cs{linenumOnlyPagesForColumnsR} and multiple numbered sections}
% \changes{v2.25.5}{2023/07/20}{Fix bug with hyperlink when using \protect\cs{footnoteXnomk}}
% \changes{v2.25.6}{2024/02/26}{Make \protect\cs{doinsidethislinehook} working on right side}
+% \changes{v2.25.7}{2024/07/23}{Fix compatibility with \protect\package{polyglossia} 2.2}
% ^^A PW added following as the definitions are at some unknown elsewhere
%
% \newcommand{\egstart}{%
@@ -1410,7 +1411,7 @@
% \begin{macrocode}
%<*code>
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{reledpar}[2024/05/11 v2.25.6a reledmac extension for parallel texts]%
+\ProvidesPackage{reledpar}[2024/07/23 v2.25.7 reledmac extension for parallel texts]%
% \end{macrocode}
% \subsection{Package's requirement}
@@ -5543,17 +5544,6 @@
% To counter this, we have to make sure that the correct language is
% used at the proper times.
%
-% \begin{macro}{\ifl@dusedbabel}
-% \begin{macro}{\l@dusedbabelfalse}
-% \begin{macro}{\l@dusedbabeltrue}
-% A flag for checking if \verb?babel? has been used as a package.
-% \begin{macrocode}
-\newif\ifl@dusedbabel
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
% \changes{v1.8.0}{2014/08/05}{Suppress \protect\cs{ifl@dsamelang} which did not work and was not logical, because both columns could have the same language but not the main language of the document.}
%
% \begin{macro}{\l@dchecklang}
@@ -5598,20 +5588,18 @@
% Now do the \protect\package{babel} or \protect\package{polyglossia} fix or, if necessary.
% \begin{macrocode}
\AtBeginDocument{%
- \@ifundefined{xpg@main@language}{%
+ \@ifpackageloaded{babel}{%
\@ifundefined{bbl@main@language}{%
% \end{macrocode}
% Either \protect\package{babel} has not been used or it has been used with no
% specified language.
% \begin{macrocode}
- \l@dusedbabelfalse
}{%
% \end{macrocode}
% Here we deal with the case where babel has been used. \protect\cs{selectlanguage}
% has to be redefined to use our version of \protect\cs{bbl@set@language} and to
% store the left or right language.
% \begin{macrocode}
- \l@dusedbabeltrue
\let\l@doldselectlanguage\selectlanguage
\let\l@doldbbl@set@language\bbl@set@language
\renewcommand{\selectlanguage}[1]{%
@@ -5635,7 +5623,7 @@
\gdef\theledlanguageL{\bbl@main@language}%
\gdef\theledlanguageR{\bbl@main@language}%
}%
- }
+ }{}%
% \end{macrocode}
% If use \protect\package{polyglossia}
% \changes{v1.8.0}{2014/08/05}{Correct left/right language setting with polyglossia.}
@@ -5643,25 +5631,28 @@
% \changes{v2.22.4}{2019/11/04}{Provide compatibility with the latest version of polyglossia (v1.45).}
% \changes{v2.23.0}{2020/03/08}{Restore compatibility with versions of polyglossia prior to v1.45.}
% \begin{macrocode}
- {%
- \@ifpackagelater{polyglossia}{2022/04/10}{}{\led@err@polyglossiaTooOld}%
- \let\old@otherlanguage\otherlanguage%
- \renewcommand{\otherlanguage}[2][]{%
- \selectlanguage[#1]{#2}%
- \xpg@set@language@only@aux[#1]{#2}%
- \ifledRcol \gdef\theledlanguageR{#2}%
- \else \gdef\theledlanguageL{#2}%
- \fi}%
+ \@ifpackageloaded{polyglossia}{%
+ \@ifpackagelater{polyglossia}{2024/07/15}{}{\led@err@polyglossiaTooOld}%
\renewcommand{\l@duselanguage}[1]{%
\csuse{no\languagename @numbers}%
- \expandafter\@select@language\expandafter{#1}%
+ \selectlanguage*{#1}%
+ }%
+ \AddToHook{env/Leftside/begin}{%
+ \AddToHookNext{cmd/polyglossia@language@switched/after}{%
+ \xdef\theledlanguageL{\languagename}%
+ }%
}%
- \xdef\theledlanguageL{\xpg@main@language}%
- \xdef\theledlanguageR{\xpg@main@language}%
+ \AddToHook{env/Rightside/begin}{%
+ \AddToHookNext{cmd/polyglossia@language@switched/after}{%
+ \xdef\theledlanguageR{\languagename}%
+ }%
+ }%
+ \xdef\theledlanguageL{\mainlanguagename}%
+ \xdef\theledlanguageR{\mainlanguagename}%
% \end{macrocode}
% That is it.
% \begin{macrocode}
- }%
+ }{}%
}%
% \end{macrocode}
% \end{macro}
diff --git a/macros/latex/contrib/reledmac/reledpar.pdf b/macros/latex/contrib/reledmac/reledpar.pdf
index 84a3fd4ec0..09730ec178 100644
--- a/macros/latex/contrib/reledmac/reledpar.pdf
+++ b/macros/latex/contrib/reledmac/reledpar.pdf
Binary files differ
diff --git a/macros/latex/contrib/reptheorem/reptheorem.dtx b/macros/latex/contrib/reptheorem/reptheorem.dtx
index d96f740fec..b0f537af97 100644
--- a/macros/latex/contrib/reptheorem/reptheorem.dtx
+++ b/macros/latex/contrib/reptheorem/reptheorem.dtx
@@ -12,7 +12,7 @@
%
% This work has the LPPL maintenance status `maintained'.
%
-% The Current Maintainer of this work is Jesse Sraat.
+% The Current Maintainer of this work is Jesse Straat.
%
% This work consists of the main file reptheorem.dtx
% and the derived files
@@ -89,7 +89,7 @@ License: [LPPL1.3c](https://www.latex-project.org/lppl.txt)
\input docstrip.tex
\Msg{************************************************************************}
\Msg{* Installation}
-\Msg{* Package: reptheorem 2024-03-27 v1.0}
+\Msg{* Package: reptheorem 2024-08-12 v1.1}
\Msg{************************************************************************}
\keepsilent
@@ -109,7 +109,7 @@ version 2008 or later.
This work has the LPPL maintenance status `maintained'.
-The Current Maintainer of this work is Jesse Sraat.
+The Current Maintainer of this work is Jesse Straat.
This work consists of the main file reptheorem.dtx
and the derived files
@@ -246,9 +246,9 @@ colorlinks,
% environment \DescribeEnv{makethm} |makethm| is
% used for.
% \begin{verbatim}
-% \begin{makethm}{theorem}{thm:Yoneda}[Yoneda Lemma]{
+% \begin{makethm}{theorem}{thm:Yoneda}[Yoneda Lemma]
% For \(F\colon \mathcal{C}\to \mathbf{Set}\) a functor,
-% \([\mathcal{C}^\mathrm{op},\mathbf{Set}](YA, F) \cong F(A)\)%
+% \([\mathcal{C}^\mathrm{op},\mathbf{Set}](YA, F) \cong F(A)\)
% for all objects \(A\) in \(\mathcal{C}\).
% \end{makethm}
% \end{verbatim}
@@ -271,33 +271,33 @@ colorlinks,
% the theorem is proven at a later point, or we want to
% ``tease'' the reader with a powerful theorem that will be
% proven later in the chapter. To do this, we use the
-% \DescribeMacro{repthm} command, as follows.
+% \DescribeMacro{\repthm} command, as follows.
% \begin{verbatim}
-% \repthm{theorem}{thm:Yoneda}
+% \repthm{thm:Yoneda}
% \end{verbatim}
% This outputs the theorem again.
-% \repthm{theorem}{thm:Yoneda}
+% \repthm{thm:Yoneda}
% The label of this theorem is a |\ref|, and automatically
% links to the original theorem statement.\par
% If the original theorem statement exists in a different
% file, or has not been created yet, we can add a placeholder
% alt text to the |\repthm| as an optional argument, which
% only displays if the theorem is undefined. For example,
-% |\repthm{theorem}{thm:foo}[bar]| returns
-% \repthm{theorem}{thm:foo}[bar]
+% |\repthm{thm:foo}[bar]| returns
+% \repthm{thm:foo}[bar]
% If we do the same without providing an alt text, we get
-% \repthm{theorem}{thm:foo}
+% \repthm{thm:foo}
% together with a warning.\par
% Since we're using the |.aux| file, it is possible
% to replicate a theorem before it is stated. For example,
% \begin{verbatim}
-% \repthm{theorem}{thm:later}
+% \repthm{thm:later}
% \begin{makethm}{theorem}{thm:later}[Later]
% Alligator!
% \end{makethm}
% \end{verbatim}
% returns
-% \repthm{theorem}{thm:later}
+% \repthm{thm:later}
% \begin{makethm}{theorem}{thm:later}[Later]
% Alligator
% \end{makethm}
@@ -352,7 +352,7 @@ colorlinks,
% \section{Source code}
% \begin{macrocode}
%<*package>
-\ProvidesPackage{reptheorem}[2024-03-27 v1.0 Reptheorem package]
+\ProvidesPackage{reptheorem}[2024-08-12 v1.1 Reptheorem package]
% \end{macrocode}
%
% \begin{macro}{\theoremfile}
@@ -387,6 +387,7 @@ colorlinks,
% \end{macro}
%
% \begin{environment}{makethm}
+% \changes{v1.1}{2024/05/03}{Now saves theorem environment type, breaking backwards compatibility}
% On to defining the actual theorems to be saved.
% \begin{macrocode}
\NewDocumentEnvironment{makethm}{ m m o +b }
@@ -403,15 +404,19 @@ colorlinks,
}
#4
\end{#1}
+ \expandafter\gdef\csname thmtype@#2\endcsname{#1}
\expandafter\long\expandafter\gdef\csname thm@#2\endcsname{#4}%
\expandafter\gdef\csname thmdesc@#2\endcsname{#3}%
% Saving parameters to aux file
\long\gdef\@thmoutput{%
+ \string\expandafter\string\gdef\noexpand%
+ \csname thmtype@#2\string\endcsname{#1}%
+ ^^J%
\string\expandafter\string\long\string\expandafter%
\string\gdef\noexpand\csname thm@#2\string\endcsname{#4}%
^^J%
- \string\expandafter\string\expandafter%
- \string\gdef\noexpand\csname thmdesc@#2\string\endcsname{#3}%
+ \string\expandafter\string\gdef\noexpand%
+ \csname thmdesc@#2\string\endcsname{#3}%
}
\write\@auxout{\@thmoutput}
\if\reptheorem@theoremfile\relax
@@ -426,53 +431,60 @@ colorlinks,
% \end{environment}
%
% \begin{macro}{\repthm}
+% \changes{v1.1}{2024/05/03}{Now saves theorem environment type, breaking backwards compatibility}
% To repeat a theorem, use the |\repthm| command.
% The type of theorem is not saved, so it is necessary to
% respecify it each time a theorem is repeated.
% \begin{macrocode}
\newcounter{old@counter}
-\NewDocumentCommand{\repthm}{ m m +o }{
- % m: the type of theorem environment
+\NewDocumentCommand{\repthm}{ m +o }{
% m: the name of the theorem
% o: alt text
\begingroup
- \setcounter{old@counter}{\value{#1}}
+ % Check if thmtype is given
+ \ifcsname thmtype@#1\endcsname%
+ \expandafter\let\expandafter\@@thmtype\csname thmtype@#1\endcsname%
+ \else%
+ \def\@@thmtype{theorem}%
+ \fi%
+ %
% Save theorem counter so we don't increase it
- \def\thetheorem{\ref{#2}}
+ \setcounter{old@counter}{\value{\@@thmtype}}
+ \def\thetheorem{\ref{#1}}
\let\@@theoremnotdefined\relax
%
- \ifcsname thm@#2\endcsname% Check if theorem is even defined
+ \ifcsname thm@#1\endcsname% Check if theorem is even defined
% Theorem is defined
- \expandafter\edef\expandafter\@@thmdesc{\csname thmdesc@#2\endcsname}%
- \expandafter\let\expandafter\@@thm\csname thm@#2\endcsname
+ \expandafter\edef\expandafter\@@thmdesc{\csname thmdesc@#1\endcsname}%
+ \expandafter\let\expandafter\@@thm\csname thm@#1\endcsname
% Output theorem
\IfValueTF{\@@thmdesc}{% Check if theorem has name
- \begin{#1}[\@@thmdesc]
+ \begin{\@@thmtype}[\@@thmdesc]
\@@thm
- \end{#1}
+ \end{\@@thmtype}
}{% No optionals
- \begin{#1}
+ \begin{\@@thmtype}
\@@thm
- \end{#1}
+ \end{\@@thmtype}
}
\else
% Theorem undefined
- \IfValueTF{#3}{
- \begin{#1}
- #3
- \end{#1}
+ \IfValueTF{#2}{
+ \begin{\@@thmtype}
+ #2
+ \end{\@@thmtype}
}{% No theorem or alt text provided: throw warning
- \begin{#1}
- \end{#1}
+ \begin{\@@thmtype}
+ \end{\@@thmtype}
\PackageWarning{reptheorem}{%
- Theorem #2 not defined; rebuild your project.
+ Theorem #1 not defined; rebuild your project.
If the issue persists, create the theorem using
\begin{makethm} or consider adding alt text to \repthm
using the optional parameter%
}
}
\fi
- \setcounter{#1}{\value{old@counter}}
+ \setcounter{\@@thmtype}{\value{old@counter}}
% Reset theorem counter back to original
\endgroup
}
@@ -483,4 +495,4 @@ colorlinks,
% \begin{macrocode}
%</package>
% \end{macrocode}
-%\Finale
+%\Finale \ No newline at end of file
diff --git a/macros/latex/contrib/reptheorem/reptheorem.ins b/macros/latex/contrib/reptheorem/reptheorem.ins
index c85a0d2ff3..be179b4d9a 100644
--- a/macros/latex/contrib/reptheorem/reptheorem.ins
+++ b/macros/latex/contrib/reptheorem/reptheorem.ins
@@ -27,7 +27,7 @@
\input docstrip.tex
\Msg{************************************************************************}
\Msg{* Installation}
-\Msg{* Package: reptheorem 2024-03-27 v1.0}
+\Msg{* Package: reptheorem 2024-08-12 v1.1}
\Msg{************************************************************************}
\keepsilent
diff --git a/macros/latex/contrib/reptheorem/reptheorem.pdf b/macros/latex/contrib/reptheorem/reptheorem.pdf
index 31caef6e5d..cb574aa07c 100644
--- a/macros/latex/contrib/reptheorem/reptheorem.pdf
+++ b/macros/latex/contrib/reptheorem/reptheorem.pdf
Binary files differ
diff --git a/macros/latex/contrib/resolsysteme/doc/ResolSysteme-doc.pdf b/macros/latex/contrib/resolsysteme/doc/ResolSysteme-doc.pdf
index 1ee7bc9bba..6f4fa467ef 100644
--- a/macros/latex/contrib/resolsysteme/doc/ResolSysteme-doc.pdf
+++ b/macros/latex/contrib/resolsysteme/doc/ResolSysteme-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/resolsysteme/doc/ResolSysteme-doc.tex b/macros/latex/contrib/resolsysteme/doc/ResolSysteme-doc.tex
index 97155dee5c..167d62e4f4 100644
--- a/macros/latex/contrib/resolsysteme/doc/ResolSysteme-doc.tex
+++ b/macros/latex/contrib/resolsysteme/doc/ResolSysteme-doc.tex
@@ -3,8 +3,8 @@
% arara: lualatex: {shell: yes, synctex: no, interaction: batchmode} if found('log', '(undefined references|Please rerun|Rerun to get)')
\documentclass[french,a4paper,11pt]{article}
-\def\TPversion{0.1.6}
-\def\TPdate{2 avril 2024}
+\def\TPversion{0.1.8}
+\def\TPdate{4 juillet 2024}
\usepackage[executable=python.exe]{pyluatex}
\usepackage[table,svgnames]{xcolor}
\usepackage{amsmath,amssymb}
@@ -148,7 +148,7 @@
\vspace{0.25cm}
-{$\blacktriangleright$~~Une commande pour afficher une matrice carrée (2x2, 3x3 ou 4x4) avec la syntaxe du package.}
+{$\blacktriangleright$~~Une commande pour afficher une matrice carrée (2×2, 3×3 ou 4×4) avec la syntaxe du package.}
\smallskip
@@ -156,15 +156,15 @@
\smallskip
-{$\blacktriangleright$~~Des commandes pour calculer le déterminant et l'inverse de matrices carrées (2x2, 3x3 ou 4x4).}
+{$\blacktriangleright$~~Des commandes pour calculer le déterminant et l'inverse de matrices carrées (2×2, 3×3 ou 4×4).}
\smallskip
-{$\blacktriangleright$~~Des commandes pour résoudre des systèmes linéaires (2x2, 3x3 ou 4x4).}
+{$\blacktriangleright$~~Des commandes pour résoudre des systèmes linéaires (2×2, 3×3 ou 4×4).}
\smallskip
-{$\blacktriangleright$~~Des commandes pour travailler sur des graphes probabilistes (2x2, 3x3 ou 4x4).}
+{$\blacktriangleright$~~Des commandes pour travailler sur des graphes probabilistes (2×2, 3×3 ou 4×4).}
\vspace{1cm}
@@ -207,7 +207,9 @@
\hrule
-\medskip
+\bigskip
+
+{\footnotesize\sffamily\itshape À mon papa.}
\newpage
@@ -240,8 +242,8 @@ La package \textit{propose} des outils pour travailler sur des matrices ou des s
À noter que les calculs -- en interne -- peuvent être effectués de deux manières :
\begin{itemize}
- \item via les packages \textsf{xint*} pour des formats \textbf{2x2} ou \textbf{3x3} (et dans une certaine mesure pour des \textbf{4x4}) ;
- \item via \textsf{python} et le package \textsf{pyluatex} (à charger manuellement du fait des options spécifiques) pour des formats \textbf{2x2}, \textbf{3x3} ou \textbf{4x4}.
+ \item via les packages \textsf{xint*} pour des formats \textbf{2×2} ou \textbf{3×3} (et dans une certaine mesure pour des \textbf{4×4}) ;
+ \item via \textsf{Python} et le package \textsf{pyluatex} (à charger manuellement du fait des options spécifiques) pour des formats \textbf{2×2}, \textbf{3×3} ou \textbf{4×4}.
\end{itemize}
Il n'est pas prévu -- pour le moment -- de travailler sur des matrices/systèmes plus grands, car l'idée est de pouvoir formater le résultat, ce qui se fait coefficient par coefficient.
@@ -252,7 +254,7 @@ L'utilisation de \textsf{pyluatex} nécessite une compilation adaptée, à savoi
\smallskip
-La méthode par \textsf{python} utilise quoi qu'il en soit le module \texttt{sympy}, qui doit donc être installé !
+La méthode par \textsf{Python} utilise quoi qu'il en soit le module \texttt{sympy}, qui doit donc être installé !
\end{warningblock}
\subsection{Packages utilisés, choix de formatage}
@@ -283,7 +285,7 @@ En marge de la présente documentation, compilée en \textsf{lualatex} avec \tex
\begin{itemize}
\item \texttt{ResolSysteme-exemples} pour les commandes disponibles en version classique (\textsf{xint}) ;
- \item \texttt{ResolSysteme-exemples-pyluatex} pour les commandes disponibles en version python (\textsf{pyluatex}).
+ \item \texttt{ResolSysteme-exemples-pyluatex} pour les commandes disponibles en version \textsf{Python} (\textsf{pyluatex}).
\end{itemize}
\vspace*{-\baselineskip}\leavevmode
\end{noteblock}
@@ -293,7 +295,7 @@ En marge de la présente documentation, compilée en \textsf{lualatex} avec \tex
\subsection{Chargement du package, et option}
\begin{importantblock}
-Le package peut donc se charger de deux manières différentes, suivant si l'utilisateur utilise \textsf{python} ou non. Les commandes \textit{classiques} sont disponibles même si \textsf{python} est utilisé.
+Le package peut donc se charger de deux manières différentes, suivant si l'utilisateur utilise \textsf{Python} ou non. Les commandes \textit{classiques} sont disponibles même si \textsf{Python} est utilisé.
\end{importantblock}
\begin{PresentationCode}{listing only}
@@ -314,16 +316,22 @@ D'autres solutions existent pour faire du calcul matriciel, on peut pas exemple
\smallskip
-L'idée est ici de proposer une version, adaptée à des dimensions classiques, avec formatage des calculs, sous forme de fraction irréductible notamment. Les formatages étant effectués \textit{a posteriori}, j'ai choisi de limiter ce package à des formats de taille raisonnable (\textbf{1x2} à \textbf{4x4}).
+L'idée est ici de proposer une version, adaptée à des dimensions classiques, avec formatage des calculs, sous forme de fraction irréductible notamment. Les formatages étant effectués \textit{a posteriori}, j'ai choisi de limiter ce package à des formats de taille raisonnable (\textbf{1×2} à \textbf{4×4}).
\end{noteblock}
\part{Historique}
+\verb|v0.1.8|~:~~~~Correction de bugs, améliorations dans la documentation.
+
+\verb|v0.1.7|~:~~~~Correction de bugs dans certains calculs avec des fractions.
+
+\verb|v0.1.6|~:~~~~Correction de bugs dans certains calculs avec des fractions.
+
\verb|v0.1.6|~:~~~~Correction de bugs dans certains calculs.
\verb|v0.1.5|~:~~~~Inverse d'une matrice 4x4 et système 4x4 (même en normal).
-\verb|v0.1.4|~:~~~~Ajout de commandes pour du calcul matriciel sans python (de taille raisonnable) ;
+\verb|v0.1.4|~:~~~~Ajout de commandes pour du calcul matriciel sans \textsf{Python} (de taille raisonnable) ;
\verb| |~~~~~~commandes pour des graphes probabilistes.
@@ -331,7 +339,7 @@ L'idée est ici de proposer une version, adaptée à des dimensions classiques,
\verb| |~~~~~~inversion du comportement des commandes étoilées.
-\verb|v0.1.2|~:~~~~Ajout d'une commande d'affichage (formaté) d'une matrice 2x2, 3x3 ou 4x4.
+\verb|v0.1.2|~:~~~~Ajout d'une commande d'affichage (formaté) d'une matrice 2×2, 3×3 ou 4×4.
\verb|v0.1.1|~:~~~~Correction d'un bug avec le caractère \og ; \fg.
@@ -412,7 +420,7 @@ Les \textit{transformations} en fraction devraient pouvoir fonctionner avec des
\subsection{La commande}
\begin{cautionblock}
-Une commande (matricielle) est dédiée à l'affichage d'une matrice \textbf{2x2} ou \textbf{3x3} ou \textbf{4x4} (\textsf{python} est ici non nécessaire !) :
+Une commande (matricielle) est dédiée à l'affichage d'une matrice \textbf{2×2} ou \textbf{3×3} ou \textbf{4×4} (\textsf{Python} est ici non nécessaire !) :
\begin{itemize}
\item en saisissant les coefficients via une syntaxe propre au package (l'affichage est géré en interne par \textsf{nicematrix}) ;
@@ -483,8 +491,8 @@ L'idée est de proposer des commandes pour effectuer des calculs matriciels \tex
\item $(4\times4)\times(4\times4)$ ;
\item $(4\times4)\times(4\times1)$ ;
\end{itemize}
- \item le carré d'une matrice 2x2 ou 3x3 ou 4x4 ;
- \item la puissance d'une matrice 2x2 ou 3x3 ou 4x4 (via \textsf{python}).
+ \item le carré d'une matrice 2×2 ou 3×3 ou 4×4 ;
+ \item la puissance d'une matrice 2×2 ou 3×3 ou 4×4 (via \textsf{Python}).
\end{itemize}
\vspace*{-\baselineskip}\leavevmode
\end{cautionblock}
@@ -574,7 +582,7 @@ $\MatricePuissancePY(1,1,1,1 § 5,-2,1,5 § 0,5,2,-1 § 0,1,1,1)(5)[Aff]$
Une commande est disponible pour calculer le déterminant d'une matrice :
\begin{itemize}
- \item \textbf{2x2} ou \textbf{3x3} ou \textbf{4x4}.
+ \item \textbf{2×2} ou \textbf{3×3} ou \textbf{4×4}.
\end{itemize}
\vspace*{-\baselineskip}\leavevmode
\end{cautionblock}
@@ -583,7 +591,7 @@ Une commande est disponible pour calculer le déterminant d'une matrice :
%version classique
\DetMatrice(*)[option de formatage](matrice)
-%version python
+%version Python
\DetMatricePY(*)[option de formatage](matrice)
\end{PresentationCode}
@@ -631,7 +639,7 @@ est $\det(A)=\DetMatrice(1,2,3,4 § 5,6,7,0 § 1,1,1,1 § 2,-3,-5,-6)$.
\end{PresentationCode}
\begin{PresentationCode}{}
-%version python
+%version Python
Le dé. de $A=\AffMatrice(1,2 § 3,4)$ est
$\det(A)=\DetMatricePY(1,2 § 3,4)$.
\end{PresentationCode}
@@ -642,13 +650,13 @@ $\det(A)=\DetMatricePY[d](-1,0.5 § 1/2,4)$.
\end{PresentationCode}
\begin{PresentationCode}{}
-%version python
+%version Python
Le dét. de $A=\AffMatrice(-1,1/3,4 § 1/3,4,-1 § -1,0,0)$ est
$\det(A) \approx \DetMatricePY[dec=3](-1,1/3,4 § 1/3,4,-1 § -1,0,0)$.
\end{PresentationCode}
\begin{PresentationCode}{}
-%version python
+%version Python
Le dét. de $A=\AffMatrice(1,2,3,4 § 5,6,7,0 § 1,1,1,1 § 2,-3,-5,-6)$
est $\det(A)=\DetMatricePY(1,2,3,4 § 5,6,7,0 § 1,1,1,1 § 2,-3,-5,-6)$.
\end{PresentationCode}
@@ -663,8 +671,8 @@ est $\det(A)=\DetMatricePY(1,2,3,4 § 5,6,7,0 § 1,1,1,1 § 2,-3,-5,-6)$.
Une commande (matricielle) disponible est pour calculer l'éventuelle inverse d'une matrice :
\begin{itemize}
- \item \textbf{2x2} ou \textbf{3x3} ou \textbf{4x4} (\cmaj{0.1.5}) pour le package \textit{classique} ;
- \item \textbf{2x2} ou \textbf{3x3} ou \textbf{4x4} également pour la version \textsf{python}.
+ \item \textbf{2×2} ou \textbf{3×3} ou \textbf{4×4} (\cmaj{0.1.5}) pour le package \textit{classique} ;
+ \item \textbf{2×2} ou \textbf{3×3} ou \textbf{4×4} également pour la version \textsf{Python}.
\end{itemize}
\vspace*{-\baselineskip}\leavevmode
\end{cautionblock}
@@ -673,7 +681,7 @@ Une commande (matricielle) disponible est pour calculer l'éventuelle inverse d'
%version classique
\MatriceInverse(*)[option de formatage]<options nicematrix>(matrice)[Clé]
-%version python
+%version Python
\MatriceInversePY(*)[option de formatage]<options nicematrix>(matrice)[Clé]
\end{PresentationCode}
@@ -712,7 +720,7 @@ $A^{-1}=\MatriceInverse[n]<cell-space-limits=2pt>(1,2,3 § 4,5,6 § 7,8,8)[Aff]$
\end{PresentationCode}
\begin{PresentationCode}{}
-%version python
+%version Python
L'inverse de $A=\AffMatrice(1,2 § 3,4)$ est
$A^{-1}=\MatriceInversePY[d]<cell-space-limits=2pt>(1,2 § 3,4)[Aff]$.
\end{PresentationCode}
@@ -725,7 +733,7 @@ $A^{-1}=
\end{PresentationCode}
\begin{PresentationCode}{}
-%version python
+%version Python
L'inv. de $A=\AffMatrice(1,2,3,4 § 5,6,7,0 § 1,1,1,1 § -2,-3,-5,-6)$ est
$A^{-1}=
\MatriceInversePY[n]<cell-space-limits=2pt>(1,2,3,4 § 5,6,7,0 § 1,1,1,1 § -2,-3,-5,-6)$.
@@ -738,17 +746,17 @@ $A^{-1}=
\subsection{Introduction}
\begin{cautionblock}
-\cmaj{0.1.4} Il existe des commandes pour travailler sur un graphe probabiliste (avec le package en version \textsf{python}) :
+\cmaj{0.1.4} Il existe des commandes pour travailler sur un graphe probabiliste (avec le package en version \textsf{Python}) :
\begin{itemize}
- \item afficher un état probabiliste (\textbf{1x2} ou \textbf{1x3} ou \textbf{1x4}, version normale ou version \textsf{python}) ;
- \item déterminer un état probabiliste à une certaine étape, uniquement en version \textsf{python}.
+ \item afficher un état probabiliste (\textbf{1×2} ou \textbf{1×3} ou \textbf{1×4}, version normale ou version \textsf{Python}) ;
+ \item déterminer un état probabiliste à une certaine étape, uniquement en version \textsf{Python}.
\end{itemize}
\vspace*{-\baselineskip}\leavevmode
\end{cautionblock}
\begin{PresentationCode}{listing only}
-%version classique ou python
+%version classique ou Python
\AffEtatProb[opt de formatage]<opts nicematrix>(matrice ligne)
\EtatProbPY[opt de formatage]<opts nicematrix>(état init)(mat de trans)(étape)
\end{PresentationCode}
@@ -845,8 +853,8 @@ $P_4 \approx \EtatProbPY[dec=3]
Il existe une commande (matricielle) pour déterminer l'éventuelle solution d'un système linéaire qui s'écrit matriciellement $A\times X=B$:
\begin{itemize}
- \item \textbf{2x2} ou \textbf{3x3} ou \textbf{4x4} (\cmaj{0.1.5}) pour le package \textit{classique} ;
- \item \textbf{2x2} ou \textbf{3x3} ou \textbf{4x4} également pour le package en version \textsf{python}.
+ \item \textbf{2×2} ou \textbf{3×3} ou \textbf{4×4} (\cmaj{0.1.5}) pour le package \textit{classique} ;
+ \item \textbf{2×2} ou \textbf{3×3} ou \textbf{4×4} également pour le package en version \textsf{Python}.
\end{itemize}
\vspace*{-\baselineskip}\leavevmode
\end{cautionblock}
@@ -855,7 +863,7 @@ Il existe une commande (matricielle) pour déterminer l'éventuelle solution d'u
%version classique
\SolutionSysteme(*)[opt de formatage]<opts nicematrix>(matriceA)(matriceB)[Clé]
-%version python
+%version Python
\SolutionSystemePY(*)[opt de formatage]<opts nicematrix>(matriceA)(matriceB)[Clé]
\end{PresentationCode}
@@ -880,6 +888,10 @@ Concernant cette commande, qui est à insérer dans un environnement \textit{mat
\item le dernier argument, \textit{optionnel} et entre \textsf{[...]}, permet -- grâce à la \textit{clé} \Cle{Matrice} -- de présenter le vecteur solution.
\end{itemize}
À noter que si la matrice n'est pas inversible, le texte \texttt{Matrice non inversible} est affiché.
+
+\smallskip
+
+Pour afficher le système via la commande \texttt{\textbackslash systeme}, le package \textsf{systeme} doit être chargé.
\end{tipblock}
\begin{PresentationCode}{}
@@ -889,7 +901,7 @@ La solution de $\systeme{3x+y-2z=-1,2x-y+z=4,x-y-2z=5}$ est $\mathcal{S}=%
\end{PresentationCode}
\begin{PresentationCode}{}
-%version python
+%version Python
La solution de $\systeme{x+y+z=-1,3x+2y-z=6,-x-y+2z=-5}$ est $\mathcal{S}=%
\left\lbrace \SolutionSystemePY(1,1,1 § 3,2,-1 § -1,-1,2)(-1,6,-5) \right\rbrace$.
\end{PresentationCode}
@@ -906,7 +918,13 @@ est $\mathcal{S}=%
\end{PresentationCode}
\begin{PresentationCode}{}
-%version python
+La solution de $\systeme{\frac{2}{7}x + \frac{5}{9}y = 13,\frac{73}{37} x - 9y=-11}$
+est $\mathcal{S}=
+\left\lbrace \SolutionSysteme[d](2/7,5/9 § 73/37,-9)(13,-11) \right\rbrace$.
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+%version Python
La solution de $\systeme[xyzt]{x+2y+3z+4t=-10,5x+6y+7z=0,x+y+z+t=4,-2x-3y-5z-6t=7}$
est $\mathcal{S}=%
\left\lbrace
@@ -922,8 +940,6 @@ La solution de $\systeme{x+2y=-5,4x+8y=1}$ est $\mathcal{S}=%
\left\lbrace \SolutionSystemePY(1,2 § 4,8)(-5,1) \right\rbrace$.
\end{PresentationCode}
-\pagebreak
-
\section{Recherche d'un état stable (graphe probabiliste)}
\subsection{Introduction}
@@ -932,8 +948,8 @@ La solution de $\systeme{x+2y=-5,4x+8y=1}$ est $\mathcal{S}=%
\cmaj{0.1.4} Il existe une commande (matricielle) pour déterminer l'éventuel état stable d'un graphe probabiliste :
\begin{itemize}
- \item \textbf{2x2} pour le package \textit{classique} ;
- \item \textbf{2x2} ou \textbf{3x3} ou \textbf{4x4} pour le package en version \textsf{python}.
+ \item \textbf{2×2} pour le package \textit{classique} ;
+ \item \textbf{2×2} ou \textbf{3×3} ou \textbf{4×4} pour le package en version \textsf{Python}.
\end{itemize}
\vspace*{-\baselineskip}\leavevmode
\end{cautionblock}
@@ -942,7 +958,7 @@ La solution de $\systeme{x+2y=-5,4x+8y=1}$ est $\mathcal{S}=%
%version classique
\EtatStable[opt de formatage]<opts nicematrix>(matriceA)
-%version python
+%version Python
\EtatStablePY[opt de formatage]<opts nicematrix>(matriceA)
\end{PresentationCode}
@@ -976,7 +992,7 @@ ou $\Pi = \EtatStable[dec](0.72,0.28 § 0.12,0.88)$.
\end{PresentationCode}
\begin{PresentationCode}{}
-%version python
+%version Python
L'état stable du gr. prob. de matrice
$M=\AffMatrice[dec](0.72,0.28 § 0.12,0.88)$
@@ -985,7 +1001,7 @@ ou $\Pi = \EtatStablePY[dec](0.72,0.28 § 0.12,0.88)$.
\end{PresentationCode}
\begin{PresentationCode}{}
-%version python
+%version Python
L'état stable du gr. prob. de matrice
$M=\AffMatrice[dec](0.9,0.03,0.07 § 0.30,0.43,0.27 § 0.14,0.07,0.79)$
@@ -994,7 +1010,7 @@ ou $\Pi = \EtatStablePY[dec](0.9,0.03,0.07 § 0.30,0.43,0.27 § 0.14,0.07,0.79)$
\end{PresentationCode}
\begin{PresentationCode}{}
-%version python
+%version Python
L'état stable du gr. prob. de matrice
$M=\AffMatrice[dec]%
(0.1,0.2,0.3,0.4 § 0.25,0.25,0.25,0.25 § 0.15,0.15,0.2,0.5 § 0.3,0.3,0.2,0.2)$
@@ -1007,7 +1023,7 @@ est $\Pi \approx
\pagebreak
-\part{Fonctions python utilisées}
+\part{Fonctions Python utilisées}
\begin{cautionblock}
Les fonctions utilisées par les packages \textsf{pyluatex} ou \textsf{pythontex} sont données ci-dessous.
@@ -1016,7 +1032,7 @@ Elles sont accessibles en \textit{natif} une fois l'option \textsf{pyluatex} act
\end{cautionblock}
\begin{PresentationCodePython}{listing only}
-#variables symboliques (pour du 4x4 maxi)
+#variables symboliques (pour du 4×4 maxi)
import sympy as sy
x = sy.Symbol('x')
y = sy.Symbol('y')
diff --git a/macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples-pyluatex.pdf b/macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples-pyluatex.pdf
index d5bc819d92..dfd7461c74 100644
--- a/macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples-pyluatex.pdf
+++ b/macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples-pyluatex.pdf
Binary files differ
diff --git a/macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples-pyluatex.tex b/macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples-pyluatex.tex
index 407a26aa3e..600ce6d1d3 100644
--- a/macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples-pyluatex.tex
+++ b/macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples-pyluatex.tex
@@ -2,7 +2,7 @@
% !TeX TXS-program:compile = txs:///lualatex/[--shell-escape]
\documentclass[french,a4paper,10pt]{article}
-\def\RSver{0.1.6}
+\def\RSver{0.1.8}
\usepackage[margin=1.5cm]{geometry}
\usepackage[executable=python.exe]{pyluatex}
\usepackage[pyluatex]{ResolSysteme}
@@ -27,7 +27,7 @@
\sisetup{locale=FR,output-decimal-marker={,}}
\end{ShowCodeTeX}
-\section{Affichage d'une matrice, 2x2 ou 3x3 ou 4x4}
+\section{Affichage d'une matrice, 2×2 ou 3×3 ou 4×4}
\begin{ShowCodeTeX}
On considère les matrices $A=\AffMatrice(1,2 § 3,4)$
@@ -35,7 +35,7 @@ et $B=\AffMatrice[n](-1,-1/3,4 § 1/3,4,-1 § -1,0,0)$
et $C=\AffMatrice(1,2,3,4 § 5,6,7,0 § 1,1,1,1 § 2,-3,-5,-6)$.
\end{ShowCodeTeX}
-\section{Déterminant d'une matrice, 2x2 ou 3x3 ou 4x4}
+\section{Déterminant d'une matrice, 2×2 ou 3×3 ou 4×4}
\begin{ShowCodeTeX}
Le déterminant de $A=\AffMatrice(1,2 § 3,4)$ est
@@ -57,7 +57,7 @@ Le dét. de $A=\begin{pNiceMatrix} 1&2&3&4\\5&6&7&0\\1&1&1&1\\2&-3&-5&-6 \end{pN
est $\det(A)=\DetMatricePY(1,2,3,4 § 5,6,7,0 § 1,1,1,1 § 2,-3,-5,-6)$.
\end{ShowCodeTeX}
-\section{Calculs avec des matrices, 2x2 ou 3x3 ou 4x4}
+\section{Calculs avec des matrices, 2×2 ou 3×3 ou 4×4}
\begin{ShowCodeTeX}
$\ProduitMatricesPY(1,2)(3 § 4)[Aff]$ et $\ProduitMatricesPY(1,2)(3,4 § 5,6)[Aff]$ \\
@@ -83,7 +83,7 @@ $\MatricePuissancePY(1,1,-1 § 5,-2,1 § 0,5,2)(3)[Aff]$ \\
$\MatricePuissancePY(1,1,1,1 § 5,-2,1,5 § 0,5,2,-1 § 0,1,1,1)(5)[Aff]$
\end{ShowCodeTeX}
-\section{Inverse d'une matrice, 2x2 ou 3x3 ou 4x4}
+\section{Inverse d'une matrice, 2×2 ou 3×3 ou 4×4}
\begin{ShowCodeTeX}
L'inverse de $A=\begin{pNiceMatrix} 1&2 \\ 3&4 \end{pNiceMatrix}$ est
@@ -120,7 +120,7 @@ L'inverse de $A=\begin{pNiceMatrix} 1&2&3&4\\5&6&7&0\\1&1&1&1\\2&-3&-5&-6 \end{p
est $A^{-1}=\MatriceInversePY[n]<cell-space-limits=2pt>(1,2,3,4 § 5,6,7,0 § 1,1,1,1 § 2,-3,-5,-6)$.
\end{ShowCodeTeX}
-\section{Résolution d'un système, 2x2 ou 3x3 ou 4x4}
+\section{Résolution d'un système, 2×2 ou 3×3 ou 4×4}
\begin{ShowCodeTeX}
La solution de $\systeme{-9x-8y=-8,3x-6y=-7}$ est $\mathcal{S}=%
@@ -160,7 +160,7 @@ La solution de $\systeme[xyzt]{x+2y+3z+4t=-10,5x+6y+7z=0,x+y+z+t=4,-2x-3y-5z-6t=
[Matrice]$
\end{ShowCodeTeX}
-\section{État probabiliste d'un graphe probabiliste, 2x2 ou 3x3 ou 4x4}
+\section{État probabiliste d'un graphe probabiliste, 2×2 ou 3×3 ou 4×4}
\begin{ShowCodeTeX}
État initial : $P_0 = \AffEtatProb[t](1/3,2/3)$.
@@ -202,7 +202,7 @@ $P_4 \approx \EtatProbPY[dec=3]
(4)$
\end{ShowCodeTeX}
-\section{État stable d'un graphe probabiliste, 2x2 ou 3x3 ou 4x4}
+\section{État stable d'un graphe probabiliste, 2×2 ou 3×3 ou 4×4}
\begin{ShowCodeTeX}
L'état stable du gr. prob. de matrice
diff --git a/macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples.pdf b/macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples.pdf
index cd7b6e1fd3..bbf961d1a7 100644
--- a/macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples.pdf
+++ b/macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples.pdf
Binary files differ
diff --git a/macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples.tex b/macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples.tex
index 0eb228e552..b228332dec 100644
--- a/macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples.tex
+++ b/macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples.tex
@@ -2,7 +2,7 @@
% !TeX TXS-program:compile = txs:///pdflatex
\documentclass[french,a4paper,10pt]{article}
-\def\RSver{0.1.6}
+\def\RSver{0.1.8}
\usepackage[margin=1.5cm]{geometry}
\usepackage{ResolSysteme}
\usepackage{systeme}
@@ -15,7 +15,7 @@
\part*{ResolSysteme (\RSver), version \og classique \fg{}}
-\section{Préambule sans utiliser python}
+\section{Préambule sans utiliser Python}
\begin{ShowCodeTeX}[listing only]
\documentclass[french,a4paper,10pt]{article}
@@ -25,7 +25,7 @@
\sisetup{locale=FR,output-decimal-marker={,}}
\end{ShowCodeTeX}
-\section{Affichage d'une matrice, 2x2 ou 3x3 ou 4x4}
+\section{Affichage d'une matrice, 2×2 ou 3×3 ou 4×4}
\begin{ShowCodeTeX}
On considère les matrices $A=\AffMatrice(1,2 § 3,4)$
@@ -33,7 +33,7 @@ et $B=\AffMatrice[n](-1,1/3,4 § 1/3,4,-1 § -1,0,0)$
et $C=\AffMatrice(1,2,3,4 § 5,6,7,0 § 1,1,1,1 § 2,-3,-5,-6)$.
\end{ShowCodeTeX}
-\section{Calculs avec des matrices, 2x2 ou 3x3 ou 4x4}
+\section{Calculs avec des matrices, 2×2 ou 3×3 ou 4×4}
\begin{ShowCodeTeX}
$\ProduitMatrices(1,2)(3 § 4)[Aff]$ et $\ProduitMatrices(1,2)(3,4 § 5,6)[Aff]$ \\
@@ -59,7 +59,7 @@ $\CarreMatrice(-5,6,8 § 1,4,-9 § 1,-1,1)[Aff]$\\
$\CarreMatrice(1,2,3,4 § 5,6,7,0 § 1,1,1,1 § 2,-3,-5,-6)[Aff]$
\end{ShowCodeTeX}
-\section{Déterminant d'une matrice, 2x2 ou 3x3 ou 4x4}
+\section{Déterminant d'une matrice, 2×2 ou 3×3 ou 4×4}
\begin{ShowCodeTeX}
Le déterminant de $A=\AffMatrice(1,2 § 3,4)$ est
@@ -81,7 +81,7 @@ Le dét. de $A=\begin{pNiceMatrix} 1&2&3&4\\5&6&7&0\\1&1&1&1\\2&-3&-5&-6 \end{pN
est $\det(A)=\DetMatrice(1,2,3,4 § 5,6,7,0 § 1,1,1,1 § 2,-3,-5,-6)$.
\end{ShowCodeTeX}
-\section{Inverse d'une matrice, 2x2 ou 3x3 ou 4x4}
+\section{Inverse d'une matrice, 2×2 ou 3×3 ou 4×4}
\begin{ShowCodeTeX}
L'inverse de $A=\begin{pNiceMatrix} 1&2 \\ 3&4 \end{pNiceMatrix}$ est
@@ -113,7 +113,7 @@ L'inverse de $A=\begin{pNiceMatrix} 1&2&3&4\\5&6&7&0\\1&1&1&1\\2&-3&-5&-6 \end{p
est $A^{-1}=\MatriceInverse[n]<cell-space-limits=2pt>(1,2,3,4 § 5,6,7,0 § 1,1,1,1 § 2,-3,-5,-6)$.
\end{ShowCodeTeX}
-\section*{Résolution d'un système, 2x2 ou 3x3 ou 4x4}
+\section*{Résolution d'un système, 2×2 ou 3×3 ou 4×4}
\begin{ShowCodeTeX}
La solution de $\systeme{-9x-8y=-8,3x-6y=-7}$ est $\mathcal{S}=%
@@ -158,7 +158,7 @@ La solution de $\systeme[xyzt]{x+2y+3z+4t=-10,5x+6y+7z=0,x+y+z+t=4,-2x-3y-5z-6t=
[Matrice]$
\end{ShowCodeTeX}
-\section{État stable d'une graphe probabiliste, 2x2}
+\section{État stable d'une graphe probabiliste, 2×2}
\begin{ShowCodeTeX}
L'état stable du gr. prob. de matrice
diff --git a/macros/latex/contrib/resolsysteme/tex/ResolSysteme.sty b/macros/latex/contrib/resolsysteme/tex/ResolSysteme.sty
index 025ea98cfe..5a8d27b31c 100644
--- a/macros/latex/contrib/resolsysteme/tex/ResolSysteme.sty
+++ b/macros/latex/contrib/resolsysteme/tex/ResolSysteme.sty
@@ -2,7 +2,9 @@
% licence........: Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txtf
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{ResolSysteme}[2024/04/02 v0.1.6 Quelques commandes pour travailler avec des matrices et des sytemes lineaires]
+\ProvidesPackage{ResolSysteme}[2024/07/04 v0.1.8 Quelques commandes pour travailler avec des matrices et des sytemes lineaires]
+% 0.1.8 Correction de bugs dans certains calculs, amélioration de la documentation
+% 0.1.7 Correction de bugs dans certains calculs
% 0.1.6 Correction de bugs dans certains calculs
% 0.1.5 Inverse d'une matrice en 4x4 (même en normal !) + Système 4x4 (en normal !)
% 0.1.4 Travail sur graphe probabiliste (2x2/3x3/4x4 en python, ou 2x2 en normal...) + Calculs 4x4 en normal
@@ -612,40 +614,40 @@ def etat_prob_DD(AA,BB,a,b,c,d,puiss) :
{%
\IfBooleanTF{#1}%
{%
- \def\MatInvA{\ConvVersFrac*[#2]{(\MatF*\MatK*\MatP+\MatG*\MatL*\MatN+\MatH*\MatJ*\MatO-\MatF*\MatL*\MatO-\MatG*\MatJ*\MatP-\MatH*\MatK*\MatN)/\DETMATRICE}}%
- \def\MatInvB{\ConvVersFrac*[#2]{(\MatB*\MatL*\MatO+\MatC*\MatJ*\MatP+\MatD*\MatK*\MatN-\MatB*\MatK*\MatP-\MatC*\MatL*\MatN-\MatD*\MatJ*\MatO)/\DETMATRICE}}%
- \def\MatInvC{\ConvVersFrac*[#2]{(\MatB*\MatG*\MatP+\MatC*\MatH*\MatN+\MatD*\MatF*\MatO-\MatB*\MatH*\MatO-\MatC*\MatF*\MatP-\MatD*\MatG*\MatN)/\DETMATRICE}}%
- \def\MatInvD{\ConvVersFrac*[#2]{(\MatB*\MatH*\MatK+\MatC*\MatF*\MatL+\MatD*\MatG*\MatJ-\MatB*\MatG*\MatL-\MatC*\MatH*\MatJ-\MatD*\MatF*\MatK)/\DETMATRICE}}%
- \def\MatInvE{\ConvVersFrac*[#2]{(\MatE*\MatL*\MatO+\MatG*\MatI*\MatP+\MatH*\MatK*\MatM-\MatE*\MatK*\MatP-\MatG*\MatL*\MatM-\MatH*\MatI*\MatO)/\DETMATRICE}}%
- \def\MatInvF{\ConvVersFrac*[#2]{(\MatA*\MatK*\MatP+\MatC*\MatL*\MatM+\MatD*\MatI*\MatO-\MatA*\MatL*\MatO-\MatC*\MatI*\MatP-\MatD*\MatK*\MatM)/\DETMATRICE}}%
- \def\MatInvG{\ConvVersFrac*[#2]{(\MatA*\MatH*\MatO+\MatC*\MatE*\MatP+\MatD*\MatG*\MatM-\MatA*\MatG*\MatP-\MatC*\MatH*\MatM-\MatD*\MatE*\MatO)/\DETMATRICE}}%
- \def\MatInvH{\ConvVersFrac*[#2]{(\MatA*\MatG*\MatL+\MatC*\MatH*\MatI+\MatD*\MatE*\MatK-\MatA*\MatH*\MatK-\MatC*\MatE*\MatL-\MatD*\MatG*\MatI)/\DETMATRICE}}%
- \def\MatInvI{\ConvVersFrac*[#2]{(\MatE*\MatJ*\MatP+\MatF*\MatL*\MatM+\MatH*\MatI*\MatN-\MatE*\MatL*\MatN-\MatF*\MatI*\MatP-\MatH*\MatJ*\MatM)/\DETMATRICE}}%
- \def\MatInvJ{\ConvVersFrac*[#2]{(\MatA*\MatL*\MatN+\MatB*\MatI*\MatP+\MatD*\MatJ*\MatM-\MatA*\MatJ*\MatP-\MatB*\MatL*\MatM-\MatD*\MatI*\MatN)/\DETMATRICE}}%
- \def\MatInvK{\ConvVersFrac*[#2]{(\MatA*\MatF*\MatP+\MatB*\MatH*\MatM+\MatD*\MatE*\MatN-\MatA*\MatH*\MatN-\MatB*\MatE*\MatP-\MatD*\MatF*\MatM)/\DETMATRICE}}%
- \def\MatInvL{\ConvVersFrac*[#2]{(\MatA*\MatH*\MatJ+\MatB*\MatE*\MatL+\MatD*\MatF*\MatI-\MatA*\MatF*\MatL-\MatB*\MatH*\MatI-\MatD*\MatE*\MatJ)/\DETMATRICE}}%
- \def\MatInvM{\ConvVersFrac*[#2]{(\MatE*\MatK*\MatN+\MatF*\MatI*\MatO+\MatG*\MatJ*\MatM-\MatE*\MatJ*\MatO-\MatF*\MatK*\MatM-\MatG*\MatI*\MatN)/\DETMATRICE}}%
- \def\MatInvN{\ConvVersFrac*[#2]{(\MatA*\MatJ*\MatO+\MatB*\MatK*\MatM+\MatC*\MatI*\MatN-\MatA*\MatK*\MatN-\MatB*\MatI*\MatO-\MatC*\MatJ*\MatM)/\DETMATRICE}}%
- \def\MatInvO{\ConvVersFrac*[#2]{(\MatA*\MatG*\MatN+\MatB*\MatE*\MatO+\MatC*\MatF*\MatM-\MatA*\MatF*\MatO-\MatB*\MatG*\MatM-\MatC*\MatE*\MatN)/\DETMATRICE}}%
- \def\MatInvP{\ConvVersFrac*[#2]{(\MatA*\MatF*\MatK+\MatB*\MatG*\MatI+\MatC*\MatE*\MatJ-\MatA*\MatG*\MatJ-\MatB*\MatE*\MatK-\MatC*\MatF*\MatI)/\DETMATRICE}}%
+ \def\MatInvA{\ConvVersFrac*[#2]{(\MatF*\MatK*\MatP+\MatG*\MatL*\MatN+\MatH*\MatJ*\MatO-\MatF*\MatL*\MatO-\MatG*\MatJ*\MatP-\MatH*\MatK*\MatN)/(\DETMATRICE)}}%
+ \def\MatInvB{\ConvVersFrac*[#2]{(\MatB*\MatL*\MatO+\MatC*\MatJ*\MatP+\MatD*\MatK*\MatN-\MatB*\MatK*\MatP-\MatC*\MatL*\MatN-\MatD*\MatJ*\MatO)/(\DETMATRICE)}}%
+ \def\MatInvC{\ConvVersFrac*[#2]{(\MatB*\MatG*\MatP+\MatC*\MatH*\MatN+\MatD*\MatF*\MatO-\MatB*\MatH*\MatO-\MatC*\MatF*\MatP-\MatD*\MatG*\MatN)/(\DETMATRICE)}}%
+ \def\MatInvD{\ConvVersFrac*[#2]{(\MatB*\MatH*\MatK+\MatC*\MatF*\MatL+\MatD*\MatG*\MatJ-\MatB*\MatG*\MatL-\MatC*\MatH*\MatJ-\MatD*\MatF*\MatK)/(\DETMATRICE)}}%
+ \def\MatInvE{\ConvVersFrac*[#2]{(\MatE*\MatL*\MatO+\MatG*\MatI*\MatP+\MatH*\MatK*\MatM-\MatE*\MatK*\MatP-\MatG*\MatL*\MatM-\MatH*\MatI*\MatO)/(\DETMATRICE)}}%
+ \def\MatInvF{\ConvVersFrac*[#2]{(\MatA*\MatK*\MatP+\MatC*\MatL*\MatM+\MatD*\MatI*\MatO-\MatA*\MatL*\MatO-\MatC*\MatI*\MatP-\MatD*\MatK*\MatM)/(\DETMATRICE)}}%
+ \def\MatInvG{\ConvVersFrac*[#2]{(\MatA*\MatH*\MatO+\MatC*\MatE*\MatP+\MatD*\MatG*\MatM-\MatA*\MatG*\MatP-\MatC*\MatH*\MatM-\MatD*\MatE*\MatO)/(\DETMATRICE)}}%
+ \def\MatInvH{\ConvVersFrac*[#2]{(\MatA*\MatG*\MatL+\MatC*\MatH*\MatI+\MatD*\MatE*\MatK-\MatA*\MatH*\MatK-\MatC*\MatE*\MatL-\MatD*\MatG*\MatI)/(\DETMATRICE)}}%
+ \def\MatInvI{\ConvVersFrac*[#2]{(\MatE*\MatJ*\MatP+\MatF*\MatL*\MatM+\MatH*\MatI*\MatN-\MatE*\MatL*\MatN-\MatF*\MatI*\MatP-\MatH*\MatJ*\MatM)/(\DETMATRICE)}}%
+ \def\MatInvJ{\ConvVersFrac*[#2]{(\MatA*\MatL*\MatN+\MatB*\MatI*\MatP+\MatD*\MatJ*\MatM-\MatA*\MatJ*\MatP-\MatB*\MatL*\MatM-\MatD*\MatI*\MatN)/(\DETMATRICE)}}%
+ \def\MatInvK{\ConvVersFrac*[#2]{(\MatA*\MatF*\MatP+\MatB*\MatH*\MatM+\MatD*\MatE*\MatN-\MatA*\MatH*\MatN-\MatB*\MatE*\MatP-\MatD*\MatF*\MatM)/(\DETMATRICE)}}%
+ \def\MatInvL{\ConvVersFrac*[#2]{(\MatA*\MatH*\MatJ+\MatB*\MatE*\MatL+\MatD*\MatF*\MatI-\MatA*\MatF*\MatL-\MatB*\MatH*\MatI-\MatD*\MatE*\MatJ)/(\DETMATRICE)}}%
+ \def\MatInvM{\ConvVersFrac*[#2]{(\MatE*\MatK*\MatN+\MatF*\MatI*\MatO+\MatG*\MatJ*\MatM-\MatE*\MatJ*\MatO-\MatF*\MatK*\MatM-\MatG*\MatI*\MatN)/(\DETMATRICE)}}%
+ \def\MatInvN{\ConvVersFrac*[#2]{(\MatA*\MatJ*\MatO+\MatB*\MatK*\MatM+\MatC*\MatI*\MatN-\MatA*\MatK*\MatN-\MatB*\MatI*\MatO-\MatC*\MatJ*\MatM)/(\DETMATRICE)}}%
+ \def\MatInvO{\ConvVersFrac*[#2]{(\MatA*\MatG*\MatN+\MatB*\MatE*\MatO+\MatC*\MatF*\MatM-\MatA*\MatF*\MatO-\MatB*\MatG*\MatM-\MatC*\MatE*\MatN)/(\DETMATRICE)}}%
+ \def\MatInvP{\ConvVersFrac*[#2]{(\MatA*\MatF*\MatK+\MatB*\MatG*\MatI+\MatC*\MatE*\MatJ-\MatA*\MatG*\MatJ-\MatB*\MatE*\MatK-\MatC*\MatF*\MatI)/(\DETMATRICE)}}%
}%
{%
- \def\MatInvA{\ConvVersFrac[#2]{(\MatF*\MatK*\MatP+\MatG*\MatL*\MatN+\MatH*\MatJ*\MatO-\MatF*\MatL*\MatO-\MatG*\MatJ*\MatP-\MatH*\MatK*\MatN)/\DETMATRICE}}%
- \def\MatInvB{\ConvVersFrac[#2]{(\MatB*\MatL*\MatO+\MatC*\MatJ*\MatP+\MatD*\MatK*\MatN-\MatB*\MatK*\MatP-\MatC*\MatL*\MatN-\MatD*\MatJ*\MatO)/\DETMATRICE}}%
- \def\MatInvC{\ConvVersFrac[#2]{(\MatB*\MatG*\MatP+\MatC*\MatH*\MatN+\MatD*\MatF*\MatO-\MatB*\MatH*\MatO-\MatC*\MatF*\MatP-\MatD*\MatG*\MatN)/\DETMATRICE}}%
- \def\MatInvD{\ConvVersFrac[#2]{(\MatB*\MatH*\MatK+\MatC*\MatF*\MatL+\MatD*\MatG*\MatJ-\MatB*\MatG*\MatL-\MatC*\MatH*\MatJ-\MatD*\MatF*\MatK)/\DETMATRICE}}%
- \def\MatInvE{\ConvVersFrac[#2]{(\MatE*\MatL*\MatO+\MatG*\MatI*\MatP+\MatH*\MatK*\MatM-\MatE*\MatK*\MatP-\MatG*\MatL*\MatM-\MatH*\MatI*\MatO)/\DETMATRICE}}%
- \def\MatInvF{\ConvVersFrac[#2]{(\MatA*\MatK*\MatP+\MatC*\MatL*\MatM+\MatD*\MatI*\MatO-\MatA*\MatL*\MatO-\MatC*\MatI*\MatP-\MatD*\MatK*\MatM)/\DETMATRICE}}%
- \def\MatInvG{\ConvVersFrac[#2]{(\MatA*\MatH*\MatO+\MatC*\MatE*\MatP+\MatD*\MatG*\MatM-\MatA*\MatG*\MatP-\MatC*\MatH*\MatM-\MatD*\MatE*\MatO)/\DETMATRICE}}%
- \def\MatInvH{\ConvVersFrac[#2]{(\MatA*\MatG*\MatL+\MatC*\MatH*\MatI+\MatD*\MatE*\MatK-\MatA*\MatH*\MatK-\MatC*\MatE*\MatL-\MatD*\MatG*\MatI)/\DETMATRICE}}%
- \def\MatInvI{\ConvVersFrac[#2]{(\MatE*\MatJ*\MatP+\MatF*\MatL*\MatM+\MatH*\MatI*\MatN-\MatE*\MatL*\MatN-\MatF*\MatI*\MatP-\MatH*\MatJ*\MatM)/\DETMATRICE}}%
- \def\MatInvJ{\ConvVersFrac[#2]{(\MatA*\MatL*\MatN+\MatB*\MatI*\MatP+\MatD*\MatJ*\MatM-\MatA*\MatJ*\MatP-\MatB*\MatL*\MatM-\MatD*\MatI*\MatN)/\DETMATRICE}}%
- \def\MatInvK{\ConvVersFrac[#2]{(\MatA*\MatF*\MatP+\MatB*\MatH*\MatM+\MatD*\MatE*\MatN-\MatA*\MatH*\MatN-\MatB*\MatE*\MatP-\MatD*\MatF*\MatM)/\DETMATRICE}}%
- \def\MatInvL{\ConvVersFrac[#2]{(\MatA*\MatH*\MatJ+\MatB*\MatE*\MatL+\MatD*\MatF*\MatI-\MatA*\MatF*\MatL-\MatB*\MatH*\MatI-\MatD*\MatE*\MatJ)/\DETMATRICE}}%
- \def\MatInvM{\ConvVersFrac[#2]{(\MatE*\MatK*\MatN+\MatF*\MatI*\MatO+\MatG*\MatJ*\MatM-\MatE*\MatJ*\MatO-\MatF*\MatK*\MatM-\MatG*\MatI*\MatN)/\DETMATRICE}}%
- \def\MatInvN{\ConvVersFrac[#2]{(\MatA*\MatJ*\MatO+\MatB*\MatK*\MatM+\MatC*\MatI*\MatN-\MatA*\MatK*\MatN-\MatB*\MatI*\MatO-\MatC*\MatJ*\MatM)/\DETMATRICE}}%
- \def\MatInvO{\ConvVersFrac[#2]{(\MatA*\MatG*\MatN+\MatB*\MatE*\MatO+\MatC*\MatF*\MatM-\MatA*\MatF*\MatO-\MatB*\MatG*\MatM-\MatC*\MatE*\MatN)/\DETMATRICE}}%
- \def\MatInvP{\ConvVersFrac[#2]{(\MatA*\MatF*\MatK+\MatB*\MatG*\MatI+\MatC*\MatE*\MatJ-\MatA*\MatG*\MatJ-\MatB*\MatE*\MatK-\MatC*\MatF*\MatI)/\DETMATRICE}}%
+ \def\MatInvA{\ConvVersFrac[#2]{(\MatF*\MatK*\MatP+\MatG*\MatL*\MatN+\MatH*\MatJ*\MatO-\MatF*\MatL*\MatO-\MatG*\MatJ*\MatP-\MatH*\MatK*\MatN)/(\DETMATRICE)}}%
+ \def\MatInvB{\ConvVersFrac[#2]{(\MatB*\MatL*\MatO+\MatC*\MatJ*\MatP+\MatD*\MatK*\MatN-\MatB*\MatK*\MatP-\MatC*\MatL*\MatN-\MatD*\MatJ*\MatO)/(\DETMATRICE)}}%
+ \def\MatInvC{\ConvVersFrac[#2]{(\MatB*\MatG*\MatP+\MatC*\MatH*\MatN+\MatD*\MatF*\MatO-\MatB*\MatH*\MatO-\MatC*\MatF*\MatP-\MatD*\MatG*\MatN)/(\DETMATRICE)}}%
+ \def\MatInvD{\ConvVersFrac[#2]{(\MatB*\MatH*\MatK+\MatC*\MatF*\MatL+\MatD*\MatG*\MatJ-\MatB*\MatG*\MatL-\MatC*\MatH*\MatJ-\MatD*\MatF*\MatK)/(\DETMATRICE)}}%
+ \def\MatInvE{\ConvVersFrac[#2]{(\MatE*\MatL*\MatO+\MatG*\MatI*\MatP+\MatH*\MatK*\MatM-\MatE*\MatK*\MatP-\MatG*\MatL*\MatM-\MatH*\MatI*\MatO)/(\DETMATRICE)}}%
+ \def\MatInvF{\ConvVersFrac[#2]{(\MatA*\MatK*\MatP+\MatC*\MatL*\MatM+\MatD*\MatI*\MatO-\MatA*\MatL*\MatO-\MatC*\MatI*\MatP-\MatD*\MatK*\MatM)/(\DETMATRICE)}}%
+ \def\MatInvG{\ConvVersFrac[#2]{(\MatA*\MatH*\MatO+\MatC*\MatE*\MatP+\MatD*\MatG*\MatM-\MatA*\MatG*\MatP-\MatC*\MatH*\MatM-\MatD*\MatE*\MatO)/(\DETMATRICE)}}%
+ \def\MatInvH{\ConvVersFrac[#2]{(\MatA*\MatG*\MatL+\MatC*\MatH*\MatI+\MatD*\MatE*\MatK-\MatA*\MatH*\MatK-\MatC*\MatE*\MatL-\MatD*\MatG*\MatI)/(\DETMATRICE)}}%
+ \def\MatInvI{\ConvVersFrac[#2]{(\MatE*\MatJ*\MatP+\MatF*\MatL*\MatM+\MatH*\MatI*\MatN-\MatE*\MatL*\MatN-\MatF*\MatI*\MatP-\MatH*\MatJ*\MatM)/(\DETMATRICE)}}%
+ \def\MatInvJ{\ConvVersFrac[#2]{(\MatA*\MatL*\MatN+\MatB*\MatI*\MatP+\MatD*\MatJ*\MatM-\MatA*\MatJ*\MatP-\MatB*\MatL*\MatM-\MatD*\MatI*\MatN)/(\DETMATRICE)}}%
+ \def\MatInvK{\ConvVersFrac[#2]{(\MatA*\MatF*\MatP+\MatB*\MatH*\MatM+\MatD*\MatE*\MatN-\MatA*\MatH*\MatN-\MatB*\MatE*\MatP-\MatD*\MatF*\MatM)/(\DETMATRICE)}}%
+ \def\MatInvL{\ConvVersFrac[#2]{(\MatA*\MatH*\MatJ+\MatB*\MatE*\MatL+\MatD*\MatF*\MatI-\MatA*\MatF*\MatL-\MatB*\MatH*\MatI-\MatD*\MatE*\MatJ)/(\DETMATRICE)}}%
+ \def\MatInvM{\ConvVersFrac[#2]{(\MatE*\MatK*\MatN+\MatF*\MatI*\MatO+\MatG*\MatJ*\MatM-\MatE*\MatJ*\MatO-\MatF*\MatK*\MatM-\MatG*\MatI*\MatN)/(\DETMATRICE)}}%
+ \def\MatInvN{\ConvVersFrac[#2]{(\MatA*\MatJ*\MatO+\MatB*\MatK*\MatM+\MatC*\MatI*\MatN-\MatA*\MatK*\MatN-\MatB*\MatI*\MatO-\MatC*\MatJ*\MatM)/(\DETMATRICE)}}%
+ \def\MatInvO{\ConvVersFrac[#2]{(\MatA*\MatG*\MatN+\MatB*\MatE*\MatO+\MatC*\MatF*\MatM-\MatA*\MatF*\MatO-\MatB*\MatG*\MatM-\MatC*\MatE*\MatN)/(\DETMATRICE)}}%
+ \def\MatInvP{\ConvVersFrac[#2]{(\MatA*\MatF*\MatK+\MatB*\MatG*\MatI+\MatC*\MatE*\MatJ-\MatA*\MatG*\MatJ-\MatB*\MatE*\MatK-\MatC*\MatF*\MatI)/(\DETMATRICE)}}%
}%
\IfStrEq{#5}{Aff}%si matrice
{%
@@ -693,26 +695,26 @@ def etat_prob_DD(AA,BB,a,b,c,d,puiss) :
{%
\IfBooleanTF{#1}%
{%
- \def\MatInvA{\ConvVersFrac*[#2]{(\MatE*\MatI-\MatH*\MatF)/\DETMATRICE}}%
- \def\MatInvB{\ConvVersFrac*[#2]{(-\MatB*\MatI+\MatC*\MatH)/\DETMATRICE}}%
- \def\MatInvC{\ConvVersFrac*[#2]{(\MatB*\MatF-\MatC*\MatE)/\DETMATRICE}}%
- \def\MatInvD{\ConvVersFrac*[#2]{(-\MatD*\MatI+\MatF*\MatG)/\DETMATRICE}}%
- \def\MatInvE{\ConvVersFrac*[#2]{(\MatA*\MatI-\MatC*\MatG)/\DETMATRICE}}%
- \def\MatInvF{\ConvVersFrac*[#2]{(-\MatA*\MatF+\MatD*\MatC)/\DETMATRICE}}%
- \def\MatInvG{\ConvVersFrac*[#2]{(\MatD*\MatH-\MatE*\MatG)/\DETMATRICE}}%
- \def\MatInvH{\ConvVersFrac*[#2]{(-\MatA*\MatH+\MatB*\MatG)/\DETMATRICE}}%
- \def\MatInvI{\ConvVersFrac*[#2]{(\MatA*\MatE-\MatB*\MatD)/\DETMATRICE}}%
+ \def\MatInvA{\ConvVersFrac*[#2]{(\MatE*\MatI-\MatH*\MatF)/(\DETMATRICE)}}%
+ \def\MatInvB{\ConvVersFrac*[#2]{(-\MatB*\MatI+\MatC*\MatH)/(\DETMATRICE)}}%
+ \def\MatInvC{\ConvVersFrac*[#2]{(\MatB*\MatF-\MatC*\MatE)/(\DETMATRICE)}}%
+ \def\MatInvD{\ConvVersFrac*[#2]{(-\MatD*\MatI+\MatF*\MatG)/(\DETMATRICE)}}%
+ \def\MatInvE{\ConvVersFrac*[#2]{(\MatA*\MatI-\MatC*\MatG)/(\DETMATRICE)}}%
+ \def\MatInvF{\ConvVersFrac*[#2]{(-\MatA*\MatF+\MatD*\MatC)/(\DETMATRICE)}}%
+ \def\MatInvG{\ConvVersFrac*[#2]{(\MatD*\MatH-\MatE*\MatG)/(\DETMATRICE)}}%
+ \def\MatInvH{\ConvVersFrac*[#2]{(-\MatA*\MatH+\MatB*\MatG)/(\DETMATRICE)}}%
+ \def\MatInvI{\ConvVersFrac*[#2]{(\MatA*\MatE-\MatB*\MatD)/(\DETMATRICE)}}%
}%
{%
- \def\MatInvA{\ConvVersFrac[#2]{(\MatE*\MatI-\MatH*\MatF)/\DETMATRICE}}%
- \def\MatInvB{\ConvVersFrac[#2]{(-\MatB*\MatI+\MatC*\MatH)/\DETMATRICE}}%
- \def\MatInvC{\ConvVersFrac[#2]{(\MatB*\MatF-\MatC*\MatE)/\DETMATRICE}}%
- \def\MatInvD{\ConvVersFrac[#2]{(-\MatD*\MatI+\MatF*\MatG)/\DETMATRICE}}%
- \def\MatInvE{\ConvVersFrac[#2]{(\MatA*\MatI-\MatC*\MatG)/\DETMATRICE}}%
- \def\MatInvF{\ConvVersFrac[#2]{(-\MatA*\MatF+\MatD*\MatC)/\DETMATRICE}}%
- \def\MatInvG{\ConvVersFrac[#2]{(\MatD*\MatH-\MatE*\MatG)/\DETMATRICE}}%
- \def\MatInvH{\ConvVersFrac[#2]{(-\MatA*\MatH+\MatB*\MatG)/\DETMATRICE}}%
- \def\MatInvI{\ConvVersFrac[#2]{(\MatA*\MatE-\MatB*\MatD)/\DETMATRICE}}%
+ \def\MatInvA{\ConvVersFrac[#2]{(\MatE*\MatI-\MatH*\MatF)/(\DETMATRICE)}}%
+ \def\MatInvB{\ConvVersFrac[#2]{(-\MatB*\MatI+\MatC*\MatH)/(\DETMATRICE)}}%
+ \def\MatInvC{\ConvVersFrac[#2]{(\MatB*\MatF-\MatC*\MatE)/(\DETMATRICE)}}%
+ \def\MatInvD{\ConvVersFrac[#2]{(-\MatD*\MatI+\MatF*\MatG)/(\DETMATRICE)}}%
+ \def\MatInvE{\ConvVersFrac[#2]{(\MatA*\MatI-\MatC*\MatG)/(\DETMATRICE)}}%
+ \def\MatInvF{\ConvVersFrac[#2]{(-\MatA*\MatF+\MatD*\MatC)/(\DETMATRICE)}}%
+ \def\MatInvG{\ConvVersFrac[#2]{(\MatD*\MatH-\MatE*\MatG)/(\DETMATRICE)}}%
+ \def\MatInvH{\ConvVersFrac[#2]{(-\MatA*\MatH+\MatB*\MatG)/(\DETMATRICE)}}%
+ \def\MatInvI{\ConvVersFrac[#2]{(\MatA*\MatE-\MatB*\MatD)/(\DETMATRICE)}}%
}%
\IfStrEq{#5}{Aff}%si matrice
{%
@@ -752,16 +754,16 @@ def etat_prob_DD(AA,BB,a,b,c,d,puiss) :
{%
\IfBooleanTF{#1}%
{%
- \def\MatInvA{\ConvVersFrac*[#2]{(\MatD)/\DETMATRICE}}%
- \def\MatInvB{\ConvVersFrac*[#2]{(-\MatB)/\DETMATRICE}}%
- \def\MatInvC{\ConvVersFrac*[#2]{(-\MatC)/\DETMATRICE}}%
- \def\MatInvD{\ConvVersFrac*[#2]{(\MatA)/\DETMATRICE}}%
+ \def\MatInvA{\ConvVersFrac*[#2]{(\MatD)/(\DETMATRICE)}}%
+ \def\MatInvB{\ConvVersFrac*[#2]{(-\MatB)/(\DETMATRICE)}}%
+ \def\MatInvC{\ConvVersFrac*[#2]{(-\MatC)/(\DETMATRICE)}}%
+ \def\MatInvD{\ConvVersFrac*[#2]{(\MatA)/(\DETMATRICE)}}%
}%
{%
- \def\MatInvA{\ConvVersFrac[#2]{(\MatD)/\DETMATRICE}}%
- \def\MatInvB{\ConvVersFrac[#2]{(-\MatB)/\DETMATRICE}}%
- \def\MatInvC{\ConvVersFrac[#2]{(-\MatC)/\DETMATRICE}}%
- \def\MatInvD{\ConvVersFrac[#2]{(\MatA)/\DETMATRICE}}%
+ \def\MatInvA{\ConvVersFrac[#2]{(\MatD)/(\DETMATRICE)}}%
+ \def\MatInvB{\ConvVersFrac[#2]{(-\MatB)/(\DETMATRICE)}}%
+ \def\MatInvC{\ConvVersFrac[#2]{(-\MatC)/(\DETMATRICE)}}%
+ \def\MatInvD{\ConvVersFrac[#2]{(\MatA)/(\DETMATRICE)}}%
}%
\IfStrEq{#5}{Aff}%si matrice
{%
@@ -889,22 +891,22 @@ def etat_prob_DD(AA,BB,a,b,c,d,puiss) :
\xintifboolexpr{\DETMATRICE == 0}%
{\text{Matrice non inversible}}%
{%
- \def\MatInvA{(\MatF*\MatK*\MatP+\MatG*\MatL*\MatN+\MatH*\MatJ*\MatO-\MatF*\MatL*\MatO-\MatG*\MatJ*\MatP-\MatH*\MatK*\MatN)/\DETMATRICE}%
- \def\MatInvB{(\MatB*\MatL*\MatO+\MatC*\MatJ*\MatP+\MatD*\MatK*\MatN-\MatB*\MatK*\MatP-\MatC*\MatL*\MatN-\MatD*\MatJ*\MatO)/\DETMATRICE}%
- \def\MatInvC{(\MatB*\MatG*\MatP+\MatC*\MatH*\MatN+\MatD*\MatF*\MatO-\MatB*\MatH*\MatO-\MatC*\MatF*\MatP-\MatD*\MatG*\MatN)/\DETMATRICE}%
- \def\MatInvD{(\MatB*\MatH*\MatK+\MatC*\MatF*\MatL+\MatD*\MatG*\MatJ-\MatB*\MatG*\MatL-\MatC*\MatH*\MatJ-\MatD*\MatF*\MatK)/\DETMATRICE}%
- \def\MatInvE{(\MatE*\MatL*\MatO+\MatG*\MatI*\MatP+\MatH*\MatK*\MatM-\MatE*\MatK*\MatP-\MatG*\MatL*\MatM-\MatH*\MatI*\MatO)/\DETMATRICE}%
- \def\MatInvF{(\MatA*\MatK*\MatP+\MatC*\MatL*\MatM+\MatD*\MatI*\MatO-\MatA*\MatL*\MatO-\MatC*\MatI*\MatP-\MatD*\MatK*\MatM)/\DETMATRICE}%
- \def\MatInvG{(\MatA*\MatH*\MatO+\MatC*\MatE*\MatP+\MatD*\MatG*\MatM-\MatA*\MatG*\MatP-\MatC*\MatH*\MatM-\MatD*\MatE*\MatO)/\DETMATRICE}%
- \def\MatInvH{(\MatA*\MatG*\MatL+\MatC*\MatH*\MatI+\MatD*\MatE*\MatK-\MatA*\MatH*\MatK-\MatC*\MatE*\MatL-\MatD*\MatG*\MatI)/\DETMATRICE}%
- \def\MatInvI{(\MatE*\MatJ*\MatP+\MatF*\MatL*\MatM+\MatH*\MatI*\MatN-\MatE*\MatL*\MatN-\MatF*\MatI*\MatP-\MatH*\MatJ*\MatM)/\DETMATRICE}%
- \def\MatInvJ{(\MatA*\MatL*\MatN+\MatB*\MatI*\MatP+\MatD*\MatJ*\MatM-\MatA*\MatJ*\MatP-\MatB*\MatL*\MatM-\MatD*\MatI*\MatN)/\DETMATRICE}%
- \def\MatInvK{(\MatA*\MatF*\MatP+\MatB*\MatH*\MatM+\MatD*\MatE*\MatN-\MatA*\MatH*\MatN-\MatB*\MatE*\MatP-\MatD*\MatF*\MatM)/\DETMATRICE}%
- \def\MatInvL{(\MatA*\MatH*\MatJ+\MatB*\MatE*\MatL+\MatD*\MatF*\MatI-\MatA*\MatF*\MatL-\MatB*\MatH*\MatI-\MatD*\MatE*\MatJ)/\DETMATRICE}%
- \def\MatInvM{(\MatE*\MatK*\MatN+\MatF*\MatI*\MatO+\MatG*\MatJ*\MatM-\MatE*\MatJ*\MatO-\MatF*\MatK*\MatM-\MatG*\MatI*\MatN)/\DETMATRICE}%
- \def\MatInvN{(\MatA*\MatJ*\MatO+\MatB*\MatK*\MatM+\MatC*\MatI*\MatN-\MatA*\MatK*\MatN-\MatB*\MatI*\MatO-\MatC*\MatJ*\MatM)/\DETMATRICE}%
- \def\MatInvO{(\MatA*\MatG*\MatN+\MatB*\MatE*\MatO+\MatC*\MatF*\MatM-\MatA*\MatF*\MatO-\MatB*\MatG*\MatM-\MatC*\MatE*\MatN)/\DETMATRICE}%
- \def\MatInvP{(\MatA*\MatF*\MatK+\MatB*\MatG*\MatI+\MatC*\MatE*\MatJ-\MatA*\MatG*\MatJ-\MatB*\MatE*\MatK-\MatC*\MatF*\MatI)/\DETMATRICE}%
+ \def\MatInvA{(\MatF*\MatK*\MatP+\MatG*\MatL*\MatN+\MatH*\MatJ*\MatO-\MatF*\MatL*\MatO-\MatG*\MatJ*\MatP-\MatH*\MatK*\MatN)/(\DETMATRICE)}%
+ \def\MatInvB{(\MatB*\MatL*\MatO+\MatC*\MatJ*\MatP+\MatD*\MatK*\MatN-\MatB*\MatK*\MatP-\MatC*\MatL*\MatN-\MatD*\MatJ*\MatO)/(\DETMATRICE)}%
+ \def\MatInvC{(\MatB*\MatG*\MatP+\MatC*\MatH*\MatN+\MatD*\MatF*\MatO-\MatB*\MatH*\MatO-\MatC*\MatF*\MatP-\MatD*\MatG*\MatN)/(\DETMATRICE)}%
+ \def\MatInvD{(\MatB*\MatH*\MatK+\MatC*\MatF*\MatL+\MatD*\MatG*\MatJ-\MatB*\MatG*\MatL-\MatC*\MatH*\MatJ-\MatD*\MatF*\MatK)/(\DETMATRICE)}%
+ \def\MatInvE{(\MatE*\MatL*\MatO+\MatG*\MatI*\MatP+\MatH*\MatK*\MatM-\MatE*\MatK*\MatP-\MatG*\MatL*\MatM-\MatH*\MatI*\MatO)/(\DETMATRICE)}%
+ \def\MatInvF{(\MatA*\MatK*\MatP+\MatC*\MatL*\MatM+\MatD*\MatI*\MatO-\MatA*\MatL*\MatO-\MatC*\MatI*\MatP-\MatD*\MatK*\MatM)/(\DETMATRICE)}%
+ \def\MatInvG{(\MatA*\MatH*\MatO+\MatC*\MatE*\MatP+\MatD*\MatG*\MatM-\MatA*\MatG*\MatP-\MatC*\MatH*\MatM-\MatD*\MatE*\MatO)/(\DETMATRICE)}%
+ \def\MatInvH{(\MatA*\MatG*\MatL+\MatC*\MatH*\MatI+\MatD*\MatE*\MatK-\MatA*\MatH*\MatK-\MatC*\MatE*\MatL-\MatD*\MatG*\MatI)/(\DETMATRICE)}%
+ \def\MatInvI{(\MatE*\MatJ*\MatP+\MatF*\MatL*\MatM+\MatH*\MatI*\MatN-\MatE*\MatL*\MatN-\MatF*\MatI*\MatP-\MatH*\MatJ*\MatM)/(\DETMATRICE)}%
+ \def\MatInvJ{(\MatA*\MatL*\MatN+\MatB*\MatI*\MatP+\MatD*\MatJ*\MatM-\MatA*\MatJ*\MatP-\MatB*\MatL*\MatM-\MatD*\MatI*\MatN)/(\DETMATRICE)}%
+ \def\MatInvK{(\MatA*\MatF*\MatP+\MatB*\MatH*\MatM+\MatD*\MatE*\MatN-\MatA*\MatH*\MatN-\MatB*\MatE*\MatP-\MatD*\MatF*\MatM)/(\DETMATRICE)}%
+ \def\MatInvL{(\MatA*\MatH*\MatJ+\MatB*\MatE*\MatL+\MatD*\MatF*\MatI-\MatA*\MatF*\MatL-\MatB*\MatH*\MatI-\MatD*\MatE*\MatJ)/(\DETMATRICE)}%
+ \def\MatInvM{(\MatE*\MatK*\MatN+\MatF*\MatI*\MatO+\MatG*\MatJ*\MatM-\MatE*\MatJ*\MatO-\MatF*\MatK*\MatM-\MatG*\MatI*\MatN)/(\DETMATRICE)}%
+ \def\MatInvN{(\MatA*\MatJ*\MatO+\MatB*\MatK*\MatM+\MatC*\MatI*\MatN-\MatA*\MatK*\MatN-\MatB*\MatI*\MatO-\MatC*\MatJ*\MatM)/(\DETMATRICE)}%
+ \def\MatInvO{(\MatA*\MatG*\MatN+\MatB*\MatE*\MatO+\MatC*\MatF*\MatM-\MatA*\MatF*\MatO-\MatB*\MatG*\MatM-\MatC*\MatE*\MatN)/(\DETMATRICE)}%
+ \def\MatInvP{(\MatA*\MatF*\MatK+\MatB*\MatG*\MatI+\MatC*\MatE*\MatJ-\MatA*\MatG*\MatJ-\MatB*\MatE*\MatK-\MatC*\MatF*\MatI)/(\DETMATRICE)}%
%
\IfBooleanTF{#1}%version étoilée := moinsdevant
{%
@@ -944,7 +946,7 @@ def etat_prob_DD(AA,BB,a,b,c,d,puiss) :
\itemtomacro\MAMATRICEA[3,2]\MatH
\itemtomacro\MAMATRICEA[3,3]\MatI
%le déterminant
- \def\DETMATRICE{\xinteval{\MatA*\MatE*\MatI+\MatD*\MatH*\MatC+\MatB*\MatF*\MatG-\MatG*\MatE*\MatC-\MatD*\MatB*\MatI-\MatA*\MatH*\MatF}}%
+ \def\DETMATRICE{\xinteval{(\MatA)*(\MatE)*(\MatI)+(\MatD)*(\MatH)*(\MatC)+(\MatB)*(\MatF)*(\MatG)-(\MatG)*(\MatE)*(\MatC)-(\MatD)*(\MatB)*(\MatI)-(\MatA)*(\MatH)*(\MatF)}}%
%les coeffs de B
\itemtomacro\MAMATRICEB[1]\MatBA
\itemtomacro\MAMATRICEB[2]\MatBB
@@ -953,15 +955,15 @@ def etat_prob_DD(AA,BB,a,b,c,d,puiss) :
\xintifboolexpr{\DETMATRICE == 0}%
{\text{Matrice non inversible}}%
{%
- \def\MatInvA{(\MatE*\MatI-\MatH*\MatF)/\DETMATRICE}%
- \def\MatInvB{(-\MatB*\MatI+\MatC*\MatH)/\DETMATRICE}%
- \def\MatInvC{(\MatB*\MatF-\MatC*\MatE)/\DETMATRICE}%
- \def\MatInvD{(-\MatD*\MatI+\MatF*\MatG)/\DETMATRICE}%
- \def\MatInvE{(\MatA*\MatI-\MatC*\MatG)/\DETMATRICE}%
- \def\MatInvF{(-\MatA*\MatF+\MatD*\MatC)/\DETMATRICE}%
- \def\MatInvG{(\MatD*\MatH-\MatE*\MatG)/\DETMATRICE}%
- \def\MatInvH{(-\MatA*\MatH+\MatB*\MatG)/\DETMATRICE}%
- \def\MatInvI{(\MatA*\MatE-\MatB*\MatD)/\DETMATRICE}%
+ \def\MatInvA{(\MatE*\MatI-\MatH*\MatF)/(\DETMATRICE)}%
+ \def\MatInvB{(-\MatB*\MatI+\MatC*\MatH)/(\DETMATRICE)}%
+ \def\MatInvC{(\MatB*\MatF-\MatC*\MatE)/(\DETMATRICE)}%
+ \def\MatInvD{(-\MatD*\MatI+\MatF*\MatG)/(\DETMATRICE)}%
+ \def\MatInvE{(\MatA*\MatI-\MatC*\MatG)/(\DETMATRICE)}%
+ \def\MatInvF{(-\MatA*\MatF+\MatD*\MatC)/(\DETMATRICE)}%
+ \def\MatInvG{(\MatD*\MatH-\MatE*\MatG)/(\DETMATRICE)}%
+ \def\MatInvH{(-\MatA*\MatH+\MatB*\MatG)/(\DETMATRICE)}%
+ \def\MatInvI{(\MatA*\MatE-\MatB*\MatD)/(\DETMATRICE)}%
%
\IfBooleanTF{#1}%version étoilée := moinsdevant
{%
@@ -993,7 +995,7 @@ def etat_prob_DD(AA,BB,a,b,c,d,puiss) :
\itemtomacro\MAMATRICEA[2,1]\MatC
\itemtomacro\MAMATRICEA[2,2]\MatD
%le déterminant
- \def\DETMATRICE{\xinteval{\MatA*\MatD-\MatB*\MatC}}%
+ \def\DETMATRICE{\xinteval{(\MatA)*(\MatD)-(\MatB)*(\MatC)}}%
%les coeffs de B
\itemtomacro\MAMATRICEB[1]\MatBA
\itemtomacro\MAMATRICEB[2]\MatBB
@@ -1001,19 +1003,19 @@ def etat_prob_DD(AA,BB,a,b,c,d,puiss) :
\xintifboolexpr{\DETMATRICE == 0}%
{\text{Matrice non inversible}}%
{%
- \def\MatInvA{(\MatD)/\DETMATRICE}%
- \def\MatInvB{(-\MatB)/\DETMATRICE}%
- \def\MatInvC{(-\MatC)/\DETMATRICE}%
- \def\MatInvD{(\MatA)/\DETMATRICE}%
+ \def\MatInvA{(\MatD)/(\DETMATRICE)}%
+ \def\MatInvB{(-\MatB)/(\DETMATRICE)}%
+ \def\MatInvC{(-\MatC)/(\DETMATRICE)}%
+ \def\MatInvD{(\MatA)/(\DETMATRICE)}%
%
\IfBooleanTF{#1}%
{%
- \def\MatResA{\ConvVersFrac*[#2]{\MatInvA*\MatBA+\MatInvB*\MatBB}}%
- \def\MatResB{\ConvVersFrac*[#2]{\MatInvC*\MatBA+\MatInvD*\MatBB}}%
+ \def\MatResA{\ConvVersFrac*[#2]{(\MatInvA)*(\MatBA)+(\MatInvB)*(\MatBB)}}%
+ \def\MatResB{\ConvVersFrac*[#2]{(\MatInvC)*(\MatBA)+(\MatInvD)*(\MatBB)}}%
}%
{%
- \def\MatResA{\ConvVersFrac[#2]{\MatInvA*\MatBA+\MatInvB*\MatBB}}%
- \def\MatResB{\ConvVersFrac[#2]{\MatInvC*\MatBA+\MatInvD*\MatBB}}%
+ \def\MatResA{\ConvVersFrac[#2]{(\MatInvA)*(\MatBA)+(\MatInvB)*(\MatBB)}}%
+ \def\MatResB{\ConvVersFrac[#2]{(\MatInvC)*(\MatBA)+(\MatInvD)*(\MatBB)}}%
}%
\IfStrEq{#6}{Matrice}%si matrice
{%
@@ -1442,7 +1444,7 @@ def etat_prob_DD(AA,BB,a,b,c,d,puiss) :
}%
}{}%
\begin{pNiceMatrix}[#3]
- \MatResA & \MatResB & \MatResC \\ \MatResD & \MatResE & \MatResF \\ \MatResG & \MatResH & \MatResI
+ \MatResA & \MatResB & \MatResC \\ \MatResD & \MatResE & \MatResF \\ \MatResG & \MatResH & \MatResI
\end{pNiceMatrix}%
}{}%fin 3,3*3,3
\xintifboolexpr{\NbLigMatA==1 'and' \NbColMatA==4 'and' \NbLigMatB==4 'and' \NbColMatB==1}% (1,4)*(4,1)
diff --git a/macros/latex/contrib/responsive/README b/macros/latex/contrib/responsive/README
index dc2953cb54..c6ed3ea7ea 100644
--- a/macros/latex/contrib/responsive/README
+++ b/macros/latex/contrib/responsive/README
@@ -1,6 +1,6 @@
The Responsive Package
-Version 0.1
+Version v0.1a
Change font sizes and other typographic details in LaTeX documents depending on
the page dimensions.
@@ -21,7 +21,7 @@ elements for various output formats and devices. Key features include:
- Line Spacing Control: adjust line spacing determining the x-height percentage
for enhanced readability.
-Copyright: 2023-2023 Michal Hoftich
+Copyright: 2023-2024 Michal Hoftich
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either version 1.3
diff --git a/macros/latex/contrib/responsive/responsive-doc.pdf b/macros/latex/contrib/responsive/responsive-doc.pdf
index 1e7245c04f..498fcac9bb 100644
--- a/macros/latex/contrib/responsive/responsive-doc.pdf
+++ b/macros/latex/contrib/responsive/responsive-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/responsive/responsive-doc.tex b/macros/latex/contrib/responsive/responsive-doc.tex
index 4272397e3e..e5e5b3f074 100644
--- a/macros/latex/contrib/responsive/responsive-doc.tex
+++ b/macros/latex/contrib/responsive/responsive-doc.tex
@@ -22,7 +22,7 @@
\usepackage{booktabs}
\usepackage[style=iso-authoryear]{biblatex}
\addbibresource{responsive-doc.bib}
-\newenvironment{changelog}{\longtable{@{} l p{30em}}}{\endlongtable}
+\newenvironment{changelog}{\longtable{@{} l p{20em}}}{\endlongtable}
\newcommand\change[2]{#1 & #2\\}
\ifdefined\HCode
% I want to convert parts of the document to images,
@@ -525,6 +525,9 @@ under the terms of the \LaTeX\ Project Public License, version 1.3.
\section{Changes}
\begin{changelog}
+ \change{2024-07-14}{Version 0.1a released}
+ \change{2024-03-16}{Set the \texttt{topmargin} dimension}
+ \change{}{Call Geometry's \texttt{\textbackslash Gm@process} command to fix page dimensions, if Geometry is loaded}
\change{2023-12-13}{Version 0.1 released.}
\change{}{Finished documentation.}
\change{2023-12-07}{Added the \texttt{lineheight} property.}
diff --git a/macros/latex/contrib/responsive/responsive.sty b/macros/latex/contrib/responsive/responsive.sty
index 65e5061f45..289f04ca8b 100644
--- a/macros/latex/contrib/responsive/responsive.sty
+++ b/macros/latex/contrib/responsive/responsive.sty
@@ -3,7 +3,7 @@
\RequirePackage{expl3,l3keys2e}
\RequirePackage{kvoptions}
\ProvidesExplPackage{responsive}
-{2023-12-15}{0.1}{Responsive design for LaTeX}
+{2024-07-14}{v0.1a}{Responsive design for LaTeX}
%%%%%%%%%%%%%%%%%%%%%%
% keyval processing %
@@ -168,6 +168,10 @@
\@setfontsize#1{\resp_multiply_note:nnn\resp_font_size{#2}{1}}{\resp_multiply_note:nnn\resp_line_skip{#2}{\l_resp_lineheight_multiplier}}
}
+% This is a dummy definition. It should restore page dimensions using the Geometry package if it is loaded.
+% The correct definition is added in \AtBeginDocument
+\cs_set:Npn\resp_reset_geometry{}
+
% recalculate \textheight and \headheight with the changed font size
% this is necessary to prevent the underfull \vbox messages from the output rutine
\cs_set:Npn\resp_textheight:n {
@@ -182,6 +186,9 @@
\setlength\headheight{\resp_font_size}
\setlength\headsep {1.5\resp_font_size}
\setlength\footskip{\fp_to_dim:n{2*\resp_font_size+1}}
+ \setlength\topmargin{\fp_to_dim:n{(\paperheight-\textheight -\headheight-\headsep-\footskip)/2 - 1in}}
+ \resp_reset_geometry
+ % \addtolength\topmargin{\topskip}
}
% the functionality to fix the textheight should be available as a document command
@@ -355,6 +362,9 @@
% setup font sizes at the begin document, in order to support Geometry etc.
\AtBeginDocument{
+ \@ifpackageloaded{geometry}{
+ \cs_set:Npn\resp_reset_geometry{\Gm@process}
+ }{}
% set the default font size, based on numbers of characters we want to show on a line of text
% \fonttobox[32]\textwidth{\tl_range:Nnn\l_resp_charlist_tl{1}{\l_resp_charlines_int}}%
\bool_if:NTF\l_resp_no_execute {}{
diff --git a/macros/latex/contrib/rpgicons/README.md b/macros/latex/contrib/rpgicons/README.md
index e889b70b03..6de01a2586 100644
--- a/macros/latex/contrib/rpgicons/README.md
+++ b/macros/latex/contrib/rpgicons/README.md
@@ -1,4 +1,4 @@
-![Version 1.8.3](https://img.shields.io/badge/version-1.8.3-blue)
+![Version 1.8.4](https://img.shields.io/badge/version-1.8.4-blue)
<img width="200" alt="rpgicons-example" src="https://github.com/jasperhabicht/rpgicons/assets/6378801/81a1d0aa-7a4f-4f83-bbdc-3bc3332023b2" />
diff --git a/macros/latex/contrib/rpgicons/rpgicons-doc.pdf b/macros/latex/contrib/rpgicons/rpgicons-doc.pdf
index 7fa0c036d7..dc0bce82b9 100644
--- a/macros/latex/contrib/rpgicons/rpgicons-doc.pdf
+++ b/macros/latex/contrib/rpgicons/rpgicons-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/rpgicons/rpgicons-doc.tex b/macros/latex/contrib/rpgicons/rpgicons-doc.tex
index 7eef59a1a4..9aebfdcd52 100644
--- a/macros/latex/contrib/rpgicons/rpgicons-doc.tex
+++ b/macros/latex/contrib/rpgicons/rpgicons-doc.tex
@@ -11,8 +11,8 @@
% This work has the LPPL maintenance status `maintained'.
%
\documentclass[a4paper]{article}
-\def\rpgiconsfileversion{1.8.3}
-\def\rpgiconsfiledate{15 May 2024}
+\def\rpgiconsfileversion{1.8.4}
+\def\rpgiconsfiledate{8 August 2024}
\usepackage[T1]{fontenc}
\usepackage{Alegreya}
@@ -262,6 +262,7 @@
\changes{v1.8.0}{2024/03/24}{Unified wrapper to load either package variant.}
\changes{v1.8.2}{2024/04/28}{Roll dice syntax for PGF variant.}
\changes{v1.8.3}{2024/05/15}{Minor compatibility fix. Example of how to use pics added to ducumentation.}
+\changes{v1.8.3}{2024/05/15}{Bug fix in evocation spellschool shape. Unification of frames in PGF and L3 variants.}
\begin{document}
diff --git a/macros/latex/contrib/rpgicons/rpgicons-l3.sty b/macros/latex/contrib/rpgicons/rpgicons-l3.sty
index 3103502bf3..cc33d61bf2 100644
--- a/macros/latex/contrib/rpgicons/rpgicons-l3.sty
+++ b/macros/latex/contrib/rpgicons/rpgicons-l3.sty
@@ -10,8 +10,8 @@
%
% This work has the LPPL maintenance status `maintained'.
%
-\ProvidesExplPackage {rpgicons-l3} {2024-05-15} {1.8.3}
- {rpg Icons Package (l3 Variant)}
+\ProvidesExplPackage {rpgicons-l3} {2024-08-08} {1.8.4}
+ {RPG Icons Package (l3 Variant)}
\bool_new:N \l__rpgicons_unicode_mode_bool
\sys_if_engine_luatex:T {
@@ -792,22 +792,22 @@
\draw_path_lineto:n { 0cm , -.425cm }
\draw_path_moveto:n { -.425cm , 0cm }
\draw_path_lineto:n { .425cm , 0cm }
- \draw_path_moveto:n { \draw_point_polar:nnn { 30 } { .325cm } { .225cm } }
- \draw_path_lineto:n { \draw_point_polar:nn { 30 } { .4cm} }
- \draw_path_moveto:n { \draw_point_polar:nnn { 60 } { .325cm } { .225cm } }
- \draw_path_lineto:n { \draw_point_polar:nn { 60 } { .4cm} }
- \draw_path_moveto:n { \draw_point_polar:nnn { 120 } { .325cm } { .225cm } }
- \draw_path_lineto:n { \draw_point_polar:nn { 120 } { .4cm} }
- \draw_path_moveto:n { \draw_point_polar:nnn { 150 } { .325cm } { .225cm } }
- \draw_path_lineto:n { \draw_point_polar:nn { 150 } { .4cm} }
- \draw_path_moveto:n { \draw_point_polar:nnn { 210 } { .325cm } { .225cm } }
- \draw_path_lineto:n { \draw_point_polar:nn { 210 } { .4cm} }
- \draw_path_moveto:n { \draw_point_polar:nnn { 240 } { .325cm } { .225cm } }
- \draw_path_lineto:n { \draw_point_polar:nn { 240 } { .4cm} }
- \draw_path_moveto:n { \draw_point_polar:nnn { 300 } { .325cm } { .225cm } }
- \draw_path_lineto:n { \draw_point_polar:nn { 300 } { .4cm} }
- \draw_path_moveto:n { \draw_point_polar:nnn { 330 } { .325cm } { .225cm } }
- \draw_path_lineto:n { \draw_point_polar:nn { 330 } { .4cm} }
+ \draw_path_moveto:n { \draw_point_polar:nnn { .325cm } { .225cm } { 30 } }
+ \draw_path_lineto:n { \draw_point_polar:nn { .4cm } { 30 } }
+ \draw_path_moveto:n { \draw_point_polar:nnn { .325cm } { .225cm } { 60 } }
+ \draw_path_lineto:n { \draw_point_polar:nn { .4cm } { 60 } }
+ \draw_path_moveto:n { \draw_point_polar:nnn { .325cm } { .225cm } { 120 } }
+ \draw_path_lineto:n { \draw_point_polar:nn { .4cm } { 120 } }
+ \draw_path_moveto:n { \draw_point_polar:nnn { .325cm } { .225cm } { 150 } }
+ \draw_path_lineto:n { \draw_point_polar:nn { .4cm } { 150 } }
+ \draw_path_moveto:n { \draw_point_polar:nnn { .325cm } { .225cm } { 210 } }
+ \draw_path_lineto:n { \draw_point_polar:nn { .4cm } { 210 } }
+ \draw_path_moveto:n { \draw_point_polar:nnn { .325cm } { .225cm } { 240 } }
+ \draw_path_lineto:n { \draw_point_polar:nn { .4cm } { 240 } }
+ \draw_path_moveto:n { \draw_point_polar:nnn { .325cm } { .225cm } { 300 } }
+ \draw_path_lineto:n { \draw_point_polar:nn { .4cm } { 300 } }
+ \draw_path_moveto:n { \draw_point_polar:nnn { .325cm } { .225cm } { 330 } }
+ \draw_path_lineto:n { \draw_point_polar:nn { .4cm } { 330 } }
}
\cs_new:Npn \rpgicons_draw_shape_illusion: {
@@ -1546,7 +1546,7 @@
}
\cs_new:Npn \rpgicons_draw_frame_damage: {
- \draw_path_circle:nn { 0cm , 0cm } { .45cm }
+ \draw_path_circle:nn { 0cm , 0cm } { .5cm }
}
% USER COMMANDS
@@ -1910,7 +1910,7 @@
}
\cs_if_exist:NF \spell { \cs_new_eq:NN \spell \RPGIconsSpell }
-\NewDocumentCommand { \RPGIconsSpellschool } { O{positive} m O{} } {
+\NewDocumentCommand { \RPGIconsSpellschool } { O{negative} m O{} } {
\group_begin:
\keys_set_groups:nne { rpgicons / local ~ options } { extra } {#3}
\keys_set:ne { rpgicons / local ~ options } { \clist_use:Nn \l_rpgicons_types_every_spellschool_style_clist { , } }
diff --git a/macros/latex/contrib/rpgicons/rpgicons-pgf.sty b/macros/latex/contrib/rpgicons/rpgicons-pgf.sty
index 0e0c037187..dd75a7b4c0 100644
--- a/macros/latex/contrib/rpgicons/rpgicons-pgf.sty
+++ b/macros/latex/contrib/rpgicons/rpgicons-pgf.sty
@@ -11,7 +11,7 @@
% This work has the LPPL maintenance status `maintained'.
%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{rpgicons-pgf}[2024-05-15 rpg Icons Package (PGF Variant) (1.8.3)]
+\ProvidesPackage{rpgicons-pgf}[2024-08-08 RPG Icons Package (PGF Variant) (1.8.4)]
% provide pics option
\newif\ifrpgicons@pics\rpgicons@picsfalse
diff --git a/macros/latex/contrib/rpgicons/rpgicons.sty b/macros/latex/contrib/rpgicons/rpgicons.sty
index 8079232a4f..63a5fa2fc0 100644
--- a/macros/latex/contrib/rpgicons/rpgicons.sty
+++ b/macros/latex/contrib/rpgicons/rpgicons.sty
@@ -10,8 +10,8 @@
%
% This work has the LPPL maintenance status `maintained'.
%
-\ProvidesExplPackage {rpgicons} {2024-05-15} {1.8.3}
- {rpg Icons Package}
+\ProvidesExplPackage {rpgicons} {2024-08-08} {1.8.4}
+ {RPG Icons Package}
\bool_new:N \l__rpgicons_use_legacy_variant_bool
\clist_new:N \l__rpgicons_forwarded_options_clist
diff --git a/macros/latex/contrib/rub-kunstgeschichte/README.md b/macros/latex/contrib/rub-kunstgeschichte/README.md
new file mode 100644
index 0000000000..4d8ac8c06a
--- /dev/null
+++ b/macros/latex/contrib/rub-kunstgeschichte/README.md
@@ -0,0 +1,11 @@
+# `rub-kunstgeschichte` - Class for the art history institute at Ruhr University Bochum
+
+A LaTeX class implementing the guidelines on scientific writing of the art history institute "KGI" (Kunstgeschichtliches Institut) at Ruhr University Bochum.
+
+## Author
+
+This package is maintained by Joran Schneyer: [joran.schneyer@ruhr-uni-bochum.de](mailto:joran.schneyer@ruhr-uni-bochum.de)
+
+## License
+
+Released under the LaTeX Project Public License v1.3c or later. See https://www.latex-project.org/lppl.txt \ No newline at end of file
diff --git a/macros/latex/contrib/rub-kunstgeschichte/rub-kunstgeschichte-example.pdf b/macros/latex/contrib/rub-kunstgeschichte/rub-kunstgeschichte-example.pdf
new file mode 100644
index 0000000000..891c9e8e97
--- /dev/null
+++ b/macros/latex/contrib/rub-kunstgeschichte/rub-kunstgeschichte-example.pdf
Binary files differ
diff --git a/macros/latex/contrib/rub-kunstgeschichte/rub-kunstgeschichte.dtx b/macros/latex/contrib/rub-kunstgeschichte/rub-kunstgeschichte.dtx
new file mode 100644
index 0000000000..5423d5babe
--- /dev/null
+++ b/macros/latex/contrib/rub-kunstgeschichte/rub-kunstgeschichte.dtx
@@ -0,0 +1,192 @@
+% \iffalse meta-comment
+%
+% File: rub-kunstgeschichte.dtx
+% Copyright (C) 2024 by Joran Schneyer <joran.schneyer@ruhr-uni-bochum.de>
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3c
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% https://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions of LaTeX
+% version 2008 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+% The Current Maintainer of this work is Joran Schneyer <joran.schneyer@ruhr-uni-bochum.de>.
+%
+% This work consists of the files rub-kunstgeschichte.dtx
+% rub-kunstgeschichte.ins
+% and the derived files rub-kunstgeschichte.cls
+% rub-kunstgeschichte-example.tex
+%
+% \fi
+
+% \iffalse
+%<*driver>
+\ProvidesFile{rub-kunstgeschichte.dtx}
+%</driver>
+%<class>\NeedsTeXFormat{LaTeX2e}[2022-06-01]
+%<class>\ProvidesClass{rub-kunstgeschichte}
+%<*class>
+ [2024-05-26 v0.1.0 RUB KGI class]
+%</class>
+%<*driver>
+\documentclass{ltxdoc}
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\begin{document}
+ \DocInput{\jobname.dtx}
+ \PrintChanges
+ \PrintIndex
+\end{document}
+%</driver>
+% \fi
+%
+%^^A Document general changes here
+% \changes{v0.1.0}{2024-05-26}{Initial version}
+%
+% \GetFileInfo{\jobname.dtx}
+%
+% \DoNotIndex{\newcommand,\newenvironment}
+% \DoNotIndex{\begin,\end}
+%
+%^^A define helper commands for consistent typesetting in the documentation
+% \def\env{\texttt}
+% \def\opt{\texttt}
+% \def\cls{\textsf}
+% \def\pkg{\textsf}
+% \def\prg{\textsf}
+% \DeclareDocumentCommand\email{m}{\href{mailto:#1}{\nolinkurl{#1}}}
+%
+% \title{The \cls{\jobname} class^^A
+% \thanks{This document corresponds to \pkg{\jobname}~\fileversion,
+% dated \filedate.}}
+% \author{\copyright{} Joran Schneyer^^A
+% \thanks{Released under the LaTeX Project Public License v1.3c or later.^^A
+% \\ See \url{https://www.latex-project.org/lppl.txt}}^^A
+% \\ \email{joran.schneyer@ruhr-uni-bochum.de}}
+% \date{\filedate}
+%
+% \maketitle
+%
+% \section{Introduction}\label{sec:introduction}
+%
+% This \LaTeX{} class aims to implement the guidelines on scientific writing of the art history institute (Kunstgeschichtliches Institut - short: KGI) at Ruhr University Bochum.^^A
+% \footnote{Guidelines version July 2023 \url{https://kgi.ruhr-uni-bochum.de/wp-content/uploads/2023/04/Anleitung-zum-Erstellen-von-Hausarbeiten-im-Fach-Kunstgeschichte_Fassung-Juli-2023.pdf}}
+%
+% Note, that at this point this is not an official class made by anyone at the institute but rather a free-time hobby project of me, Joran, who knows \LaTeX{} from studying Electrical Engineering and just wants to help out some friends studying art history.
+%
+% You can find the latest releases and the development of this project at GitHub: \url{https://github.com/rub-kgi/rub-kunstgeschichte-latex}
+%
+% \section{Usage}\label{sec:usage}
+%
+% To use this class, simply specify it as the document class.^^A
+% \footnote{You can also find a complete example usage of this class in \autoref{sec:example}.}
+% \begin{verbatim}
+% \documentclass{rub-kunstgeschichte}
+% \end{verbatim}
+%
+% \StopEventually{}
+%
+% \clearpage
+% \appendix
+%
+% \section{Implementation}\label{sec:implementation}
+%
+% \iffalse
+%<*class>
+% \fi
+%
+% \subsection{Base class}\label{sec:implementation:base-class}
+% The \cls{\jobname} class is based on the \cls{article} class.
+% When loading the class we specify \texttt{12pt} as the base font size, as required by the guidelines.
+% \iffalse
+%% Load base class with 12pt base font size
+% \fi
+% \begin{macrocode}
+\LoadClass[12pt]{article}
+% \end{macrocode}
+%
+% \subsection{Loading packages}\label{sec:implementation:package-loading}
+%
+% \paragraph{Line spacing}
+% To achieve 1.5 times line spacing as required by the guidelines,
+% we simply load the package \pkg{setspace} with the \opt{onehalfspacing} option.
+% \iffalse
+%% Set 1.5 times line spacing
+% \fi
+% \begin{macrocode}
+\RequirePackage[onehalfspacing]{setspace}
+% \end{macrocode}
+%
+% \paragraph{Margins}
+% The guidelines require 2cm top, left and bottom margins as well as a 4cm correction margin on the right side.
+% Furthermore A4 paper is the standard page size here.
+% \iffalse
+%% Set a4 paper size and margins
+% \fi
+% \begin{macrocode}
+\RequirePackage[
+ a4paper,
+ top=2cm,left=2cm,bottom=2cm,right=4cm
+]{geometry}
+% \end{macrocode}
+%
+% \iffalse
+%</class>
+%<*example>
+% \fi
+%
+% \section{Example}\label{sec:example}
+%
+% To further exemplify the use of this class,
+% we create an example .tex file.
+% The full \texttt{rub-kunstgeschichte-example.tex} and the corresponding \texttt{rub-kunstgeschichte-example.pdf} are available on GitHub.^^A
+% \footnote{\url{https://github.com/rub-kgi/rub-kunstgeschichte-latex/releases}}
+%
+% Let's examine the contents of this example .tex file step by step
+% to highlight features of this class that were used.
+%
+% First, the \cls{rub-kunstgeschichte} class is loaded
+% \iffalse
+%% Load the rub-kunstgeschichte class
+% \fi
+% \begin{macrocode}
+\documentclass{rub-kunstgeschichte}
+% \end{macrocode}
+% \iffalse
+
+% \fi
+%
+% and then the information needed to typeset a title is given:
+% \begin{macrocode}
+\title{Example usage of the \textsf{rub-kunstgeschichte} class}
+\author{Joran Schneyer}
+% \end{macrocode}
+%
+% Naturally, we begin the document environment and typeset the title
+% \begin{macrocode}
+\begin{document}
+ \maketitle
+% \end{macrocode}
+%
+% Next we need some text to show some features.
+% The text in the example itself will explain the features used.
+% \begin{macrocode}
+ Here is some text.
+ Note, how the typeset text has 12pt font size as specified
+ and there is a 1.5 times line-spacing present.
+% \end{macrocode}
+%
+% Finally we end the document environment
+% \begin{macrocode}
+\end{document}
+% \end{macrocode}
+% \iffalse
+
+%</example>
+% \fi
+%
+% \Finale \ No newline at end of file
diff --git a/macros/latex/contrib/rub-kunstgeschichte/rub-kunstgeschichte.ins b/macros/latex/contrib/rub-kunstgeschichte/rub-kunstgeschichte.ins
new file mode 100644
index 0000000000..32ba943f7f
--- /dev/null
+++ b/macros/latex/contrib/rub-kunstgeschichte/rub-kunstgeschichte.ins
@@ -0,0 +1,70 @@
+\iffalse meta-comment
+
+File: rub-kunstgeschichte.ins
+Copyright (C) 2024 by Joran Schneyer <joran.schneyer@ruhr-uni-bochum.de>
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either version 1.3c
+of this license or (at your option) any later version.
+The latest version of this license is in
+ https://www.latex-project.org/lppl.txt
+and version 1.3c or later is part of all distributions of LaTeX
+version 2008 or later.
+
+This work has the LPPL maintenance status `maintained'.
+
+The Current Maintainer of this work is Joran Schneyer <joran.schneyer@ruhr-uni-bochum.de>.
+
+This work consists of the files rub-kunstgeschichte.dtx
+ rub-kunstgeschichte.ins
+ and the derived files rub-kunstgeschichte.cls
+ rub-kunstgeschichte-example.tex
+
+\fi
+
+\input docstrip.tex
+\keepsilent
+
+\usedir{tex/latex/rub-kunstgeschichte}
+
+\preamble
+
+This is a generated file.
+
+Copyright (C) 2024 by Joran Schneyer <joran.schneyer@ruhr-uni-bochum.de>
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either version 1.3c
+of this license or (at your option) any later version.
+The latest version of this license is in
+ https://www.latex-project.org/lppl.txt
+and version 1.3c or later is part of all distributions of LaTeX
+version 2008 or later.
+
+This work has the LPPL maintenance status `maintained'.
+
+The Current Maintainer of this work is Joran Schneyer <joran.schneyer@ruhr-uni-bochum.de>.
+
+This work consists of the files rub-kunstgeschichte.dtx
+ rub-kunstgeschichte.ins
+ and the derived files rub-kunstgeschichte.cls
+ rub-kunstgeschichte-example.tex
+
+\endpreamble
+
+\generate{\file{rub-kunstgeschichte.cls}{\from{rub-kunstgeschichte.dtx}{class}}}
+\generate{\file{rub-kunstgeschichte-example.tex}{\from{rub-kunstgeschichte.dtx}{example}}}
+
+\obeyspaces
+\Msg{*********************************************************************}
+\Msg{* *}
+\Msg{* To finish the installation you have to move the following *}
+\Msg{* file into a directory searched by TeX: *}
+\Msg{* *}
+\Msg{* rub-kunstgeschichte.cls *}
+\Msg{* *}
+\Msg{* To produce the documentation run the file rub-kunstgeschichte.dtx *}
+\Msg{* through LaTeX. *}
+\Msg{*********************************************************************}
+
+\endbatchfile \ No newline at end of file
diff --git a/macros/latex/contrib/rub-kunstgeschichte/rub-kunstgeschichte.pdf b/macros/latex/contrib/rub-kunstgeschichte/rub-kunstgeschichte.pdf
new file mode 100644
index 0000000000..98614bb733
--- /dev/null
+++ b/macros/latex/contrib/rub-kunstgeschichte/rub-kunstgeschichte.pdf
Binary files differ
diff --git a/macros/latex/contrib/scontents/README.md b/macros/latex/contrib/scontents/README.md
index 95b0291960..b3424b02e6 100644
--- a/macros/latex/contrib/scontents/README.md
+++ b/macros/latex/contrib/scontents/README.md
@@ -1,6 +1,6 @@
## scontents — Stores LaTeX contents in memory or files
-Release v2.0 \[2022-04-04\]
+Release v2.1 \[2024-06-14\]
## Description
@@ -13,7 +13,7 @@ or show it in <code>&lt;verbatim style&gt;</code>.
The package loads and depends on updated versions of:
- [expl3](https://ctan.org/pkg/expl3)
-- [l3keys2e](https://ctan.org/pkg/l3keys2e)
+- [latex-base](https://www.ctan.org/pkg/latex-base)
## Installation
@@ -68,4 +68,4 @@ conditions of the [LaTeX Project Public License](https://www.latex-project.org/l
## Author and copyright
-Copyright 2019-2022 by Pablo González L.
+Copyright 2019-2023 by Pablo González L.
diff --git a/macros/latex/contrib/scontents/scontents.dtx b/macros/latex/contrib/scontents/scontents.dtx
index d82fec48c0..e7dd0b4e1a 100644
--- a/macros/latex/contrib/scontents/scontents.dtx
+++ b/macros/latex/contrib/scontents/scontents.dtx
@@ -1,12 +1,12 @@
% \iffalse meta-comment
%
-% Copyright (C) 2019-2022 by Pablo González L <pablgonz@educarchile.cl>
+% Copyright (C) 2019-2024 by Pablo González L <pablgonz@educarchile.cl>
%
% This work may be distributed and/or modified under the conditions of the
% LaTeX Project Public License, either version 1.3c of this license or (at
% your option) any later version. The latest version of this license is in
%
-% http://www.latex-project.org/lppl.txt
+% https://www.latex-project.org/lppl.txt
%
% and version 1.3c or later is part of all distributions of LaTeX version
% 2005/12/01 or later.
@@ -32,6 +32,7 @@
% so that entries written to both streams end up in the same file.
\usepackage[english]{babel}
\usepackage[top=0.5in,bottom=0.3in,left=2in,right=0.7in,footskip=0.2in,headheight=1cm,headsep=0.27cm]{geometry}
+\usepackage[llscaled=0.95]{libertine} % need by setup-texlive-action@v3
\usepackage[osf,nomath,mono=false,ScaleSF=0.95,ScaleRM=0.95]{libertinus-otf}
% Set Monospace font, fix 'quotes' in verbatim
\usepackage{sourcecodepro}
@@ -64,7 +65,7 @@
% a letter `j'. The doc package ensures that mathcode and the | actually prints
% a j inside docstrip guards. This changes the mathcode of | to 07C:
\makeatletter
-\def\mod@math@codes{\mathcode`\|="207C \mathcode`\&="2026
+\def\mod@math@codes{\mathcode`\|="207C \mathcode`\&="2026 %
\mathcode`\-="702D \mathcode`\+="702B
\mathcode`\:="703A \mathcode`\=="703D }
\makeatother
@@ -73,7 +74,7 @@
\newfontfamily\fetamontotf{ffmw10.otf}[
Scale = 0.95,%
RawFeature = {+latn,+rand,+kern,+size},%
- FontFace = {b}{n}{ffmw10.otf},% fix raplece font
+ FontFace = {b}{n}{ffmw10.otf},% fix replace font
]
\usepackage[svgnames]{xcolor}
\usepackage[sf,bf,compact,medium,pagestyles]{titlesec}
@@ -173,7 +174,7 @@
% User level commands
\ExplSyntaxOn
% Logo with fetamont font
-\NewDocumentCommand{\pkglogo}{}
+\NewDocumentCommand \pkglogo {}
{
\group_begin:
\fetamontotf{\textcolor{pkgcolor}{s}\textcolor{OrangeRed}{content}\textcolor{pkgcolor}{s}}
@@ -181,15 +182,15 @@
}
% Custom \meta[...]{...}, \marg[...]{...} and \oarg[...]{...} with color
-\NewDocumentCommand{\mymeta}{O{}m}
+\NewDocumentCommand \mymeta {O{}m}
{
\userdoc_meta_generic:Nnn \userdoc_meta:n { #1 } { #2 }
}
-\NewDocumentCommand{\mymarg}{O{}m}
+\NewDocumentCommand \mymarg {O{}m}
{
\userdoc_meta_generic:Nnn \userdoc_marg:n { #1 } { #2 }
}
-\NewDocumentCommand{\myoarg}{O{}m}
+\NewDocumentCommand \myoarg {O{}m}
{
\userdoc_meta_generic:Nnn \userdoc_oarg:n { #1 } { #2 }
}
@@ -263,7 +264,7 @@
}
% \envexamp{m}
\newsavebox{\boxexaenv}
-\NewDocumentCommand{\envexamp}{m}
+\NewDocumentCommand \envexamp {m}
{
\begin{lrbox}{\boxexaenv}%
\begin{minipage}[t]{\marginparwidth}%
@@ -276,7 +277,7 @@
\end{lrbox}%
\usebox{\boxexaenv}
}
-\NewDocumentCommand{\envexaplain}{O{} m O{end}}
+\NewDocumentCommand \envexaplain {O{} m O{end}}
{
\begin{lrbox}{\boxexaenv}%
\begin{minipage}[t]{\marginparwidth}%
@@ -291,7 +292,7 @@
}
% \cmdexamp{s m o m o}
-\DeclareDocumentCommand{\cmdexamp}{o m o m o}
+\DeclareDocumentCommand \cmdexamp {o m o m o}
{
\group_begin:
\small\ttfamily
@@ -309,57 +310,62 @@
\group_end:
}
-% \keyexamp{mmm}
-\DeclareDocumentCommand{\keyexamp}{ m m m }
+% \keyexamp*{m m m}
+\NewDocumentCommand \keyexamp{s m m m }
{
- \par
- \adjustbox{outer=-\marginparsep}{\textcolor{black}{\small\ttfamily{#1}}}
- \textcolor{gray}{\,\bfseries\texttt{=}}\,{}
- \mymarg[type=tt,cbc=gray,ac=lightgray,cf=optcolor]{\small{#2}}
- \hfill\textcolor{gray}{\small\textsf{default}:~\emph{#3}}
- \par
- \MYSortIndex{Keys}{Keys>\texttt{#1}}%
+ \adjustbox{outer=-\marginparsep}{\textcolor{optcolor}{\small\ttfamily{#2}}}
+ \IfBooleanTF{#1}
+ {
+ \hphantom{\textcolor{white}{\,\bfseries\texttt{=}}\,{}}
+ \mymeta[type=tt,cbc=gray,ac=lightgray,cf=lightgray]{\small{#3}}
+ }
+ {
+ \textcolor{gray}{\,\bfseries\texttt{=}}\,{}
+ \mymarg[type=tt,cbc=gray,ac=lightgray,cf=optcolor]{\small{#3}}
+ }
+ \hfill\textcolor{gray}{\small\textsf{default}:~\emph{#4}}\par%
+ \MYSortIndex{Keys}{Keys ~ provide ~ by ~ \pkglogo :>\texttt{#2}}
}
% \mykey{m}
-\DeclareDocumentCommand{\mykey}{ m }
+\NewDocumentCommand \mykey { m }
{
\textcolor{optcolor}{\texttt{#1}}
- \MYSortIndex{Keys}{Keys>\texttt{#1}}%
+ \MYSortIndex{Keys}{Keys ~ provide ~ by ~\pkglogo :>\texttt{#1}}%
}
% \mypkg{sm}
-\NewDocumentCommand{\mypkg}{sm}
+\NewDocumentCommand \mypkg {sm}
{
\group_begin:
\IfBooleanTF{#1}
{
\pkglogo
- \MYSortIndex{packages}{Packages>\texttt{#2}}
+ \MYSortIndex{packages}{Packages:>\texttt{#2}}
}
{
\textcolor{darkgray}{\textsf{#2}}
- \MYSortIndex{packages}{Packages>\texttt{#2}}%
+ \MYSortIndex{packages}{Packages:>\texttt{#2}}%
}
\group_end:
}
% \myenv{sm}
-\DeclareDocumentCommand{\myenv}{sm}
+\NewDocumentCommand \myenv {sm}
{
\IfBooleanTF{#1}
{
\textcolor{pkgcolor}{\ttfamily{#2}}%
- \MYSortIndex{environment}{ Environment ~ provide ~ by ~\pkglogo :>\texttt{#2}}
+ \MYSortIndex{environment}{Environments ~ provide ~ by ~\pkglogo :>\texttt{#2}}
}
{
\textcolor{darkgray}{\ttfamily{#2}}%
- \MYSortIndex{environment}{Environments>\texttt{#2}}
+ \MYSortIndex{environment}{Environments:>\texttt{#2}}
}
}
% \ics{sm}
-\DeclareDocumentCommand{\ics}{sm}
+\NewDocumentCommand \ics {sm}
{
\IfBooleanTF{#1}
{
@@ -373,6 +379,27 @@
\MYSortIndex{#2}{\texttt{\textbackslash#2}}
}
}
+% \bomba
+\NewDocumentCommand \bomba { }
+ {
+ \par\hspace*{-0.5\marginparsep}%
+ \makebox[0pt][r]
+ {
+ \makebox[\marginparsep][r]
+ {
+ \footnotesize\textcolor{pkgcolor}{\faIcon{bomb}}
+ }
+ }
+ \hskip 0.5\marginparsep
+ }
+\NewDocumentEnvironment{important}{ s }
+ {
+ \sffamily
+ \bomba%
+ \IfBooleanTF{#1}
+ { \small }
+ { \color{OrangeRed}\Large }
+ }{}
\ExplSyntaxOff
% email https://tex.stackexchange.com/a/663
@@ -429,7 +456,7 @@
keywords = [3]{document,article,setlength,pagestyle,definecolor},%
% Reserved words 4 (scontents pkg)
keywordstyle = [4]{\color{pkgcolor}},%
- keywords = [4]{scontents,Scontents,getstored,typestored,verbatimsc,%
+ keywords = [4]{scontents,Scontents,getstored,typestored,verbatimsc, mergesc, %
endverbatimsc,countsc,meaningsc,foreachsc,macros,newenvsc,
endscontents,startscontents,stopscontents,scontents.tex},%
% Reserved words 5 (in red)
@@ -483,7 +510,7 @@
{.8}{{\textcolor{MediumOrchid}{.8}}}{2}
{.9}{{\textcolor{MediumOrchid}{.9}}}{2}
{=}{{\textcolor{gray}{=}}}{1},%
-}[keywords,tex,comments,strings]% end languaje
+}[keywords,tex,comments,strings]% end language
% \begin{examplecode}[key=val]...\end{examplecode}
\lstnewenvironment{examplecode}[1][]{%
@@ -550,7 +577,7 @@
}
\setfoot{\rlap{\hskip\dimexpr-\oddsidemargin-1in\relax%
\parbox{1.93\paperwidth}{\hfil\thepage\,/\,\pageref{LastPage}}}}%
- {\parbox{\textwidth}{\raggedright \textcolor{gray}{\raisebox{-1pt}{\textcopyright}{}2019--2022 by Pablo González}}}%
+ {\parbox{\textwidth}{\raggedright \textcolor{gray}{\raisebox{-1pt}{\textcopyright}{}2019--2024 by Pablo González}}}%
{}%
\sethead{\llap{\raisebox{0.55cm}{\parbox{\dimexpr\oddsidemargin+1in\relax}{\makebox[0pt][l]{\hspace{15pt}\pkglogo\space\fileversion}}}}}
{\raisebox{0.55cm}{\parbox{\textwidth}{\hspace*{-\oddsidemargin}\centering\small\S.\thesection\space\sectiontitle}}}%
@@ -605,7 +632,7 @@
% \filedate.}\\[25pt]
% \author{
% \large
-% \raisebox{-1pt}{\textcopyright}{}2019--2022 by Pablo González\thanks{
+% \raisebox{-1pt}{\textcopyright}{}2019--2024 by Pablo González\thanks{
% E-mail: \textcolor{OrangeRed}{\textsf{\guillemotleft}}\email{pablgonz@educarchile.cl}\textcolor{OrangeRed}{\textsf{\guillemotright}}.
% }%
% }
@@ -628,6 +655,10 @@
%
% \tableofcontents
%
+% \begin{important}
+% The next update removes compatibility with versions prior to 2024.
+% \end{important}
+%
% \setlength{\parskip}{3pt}
%
% \section{Description of the package}
@@ -681,12 +712,14 @@
%
% Permission is granted to copy, distribute and/or modify this software under
% the terms of the LaTeX Project Public License (lppl), version 1.3 or later
-% (\url{http://www.latex-project.org/lppl.txt}). The software has the status
+% (\url{https://www.latex-project.org/lppl.txt}). The software has the status
% \enquote{maintained}.
%
-% The \mypkg*{scontents} package loads \mypkg{expl3} (minimum version 2020-02-08) and
-% \mypkg{l3keys2e}. This package can be used with "plain", "context", "xelatex",
-% "lualatex", "pdflatex" and the classical workflow §latex>dvips>ps2pdf§.
+% The The \mypkg*{scontents} package is written (mostly) using
+% \mypkg{expl3}, it requires an updated version of \LaTeX{} to work
+% (minimum version 2022-06-01). This package can be used with "plain",
+% "context", "xelatex", "lualatex", "pdflatex" and the classical workflow
+% §latex>dvips>ps2pdf§.
%
% \section{The \texttt{scontents} package}
% \label{sec:pkgscontents}
@@ -772,6 +805,10 @@
%</example>
% \fi
%
+% \begin{important}*
+% \hologo{ConTeXt} users should use |-luatex|, the implementation does not support LuaMetaTeX.
+% \end{important}
+%
% \subsection{The TAB character}
% \label{sec:tabcharacter}
%
@@ -984,6 +1021,7 @@ This text is in the outer environment (after nested).
% \envexaplain[start]{scontents}[stop]
% \end{syntax}
% \end{function}
+%
% \subsection*{Options for environment}
%
% The environment options can be configured globally using option
@@ -1184,45 +1222,43 @@ This text is in the outer environment (after nested).
% on the contents stored in \mymarg{seq name}. If you pass without options run
% §\getstored§ on all contents stored in \mymarg{seq name}.
%
-% \subsection*{Options for command}
+% \subsubsection*{Options for command}
% \label{sec:optcmdfor}
%
% \keyexamp{sep}{code}{empty}
-% Establishes the separation between each content stored in \mymarg{seq name}.
+% Establishes the separation between each content stored in \mymarg[type=tt]{seq name}.
% For example, you can use §sep={\\[10pt]}§ for vertical separation of stored
% contents.
%
% \keyexamp{step}{integer}{1}
% Sets the increment (\mymeta{step}) applied to the value set by key §start§
-% for each element stored in the \mymarg{seq name}. The value must be a
+% for each element stored in the \mymarg[type=tt]{seq name}. The value must be a
% \mymeta{positive integer}.
%
% \keyexamp{start}{integer}{1}
-% Sets the \mymeta{index} number of the \mymarg{seq name} from which execution
+% Sets the \mymeta{index} number of the \mymarg[type=tt]{seq name} from which execution
% will start. The value must be a \mymeta{positive integer}.
%
% \keyexamp{stop}{integer}{total}
-% Sets the \mymeta{index} number of the \mymarg{seq name} from which execution
+% Sets the \mymeta{index} number of the \mymarg[type=tt]{seq name} from which execution
% it will finish executing. The value must be a \mymeta{positive integer}.
%
% \keyexamp{before}{code}{empty}
-% Sets the \mymarg{code} that will be executed \mymeta{before} each content stored
-% in \mymarg{seq name}. The \mymarg{code} must be passed between braces.
-%
-% \medskip
+% Sets the \mymarg[type=tt]{code} that will be executed \mymeta{before} each content stored
+% in \mymarg[type=tt]{seq name}. The \mymarg[type=tt]{code} must be passed between braces.
%
% \keyexamp{after}{code}{empty}
-% Sets the \mymarg{code} that will be executed \mymeta{after} each content stored
-% in \mymarg{seq name}. The \mymarg{code} must be passed between braces.
+% Sets the \mymarg[type=tt]{code} that will be executed \mymeta{after} each content stored
+% in \mymarg[type=tt]{seq name}. The \mymarg[type=tt]{code} must be passed between braces.
%
% \newsavebox{\hashbox}
% \begin{lrbox}{\hashbox}
-% \lstinline[language=scontents-doc,basicstyle=\ttfamily]+{#1}+
+% \lstinline[language=scontents-doc,basicstyle=\small\ttfamily]+{#1}+
% \end{lrbox}
%
% \keyexamp{wrapper}{code{} \space\usebox{\hashbox} more code}{empty}
-% Wraps the content stored in \mymarg{seq name} referenced by §{#1}§.
-% The \mymarg{code} must be passed between braces. For example
+% Wraps the content stored in \mymarg[type=tt]{seq name} referenced by §{#1}§.
+% The \mymarg[type=tt]{code} must be passed between braces. For example
% §\foreachsc[wrapper={\makebox[1em][l]{#1}}]{contents}§.
%
%
@@ -1233,17 +1269,51 @@ This text is in the outer environment (after nested).
%
% \begin{function}{\typestored}
% \begin{syntax}
-% \cmdexamp{typestored}[index\textnormal{\textcolor{gray}{,}} width-tab \textnormal{\textcolor{gray}{=}} number]{seq name}
+% \cmdexamp{typestored}[index\textnormal{\textcolor{gray}{,}} 1-end\textnormal{\textcolor{gray}{,}} width-tab \textnormal{\textcolor{gray}{=}} number]{seq name}
% \end{syntax}
% The command \ics*{typestored} internally places the content stored in
-% the \mymarg{seq name} into the \myenv*{verbatimsc} environment. The \mymeta{index}
-% corresponds to the position in which the content is stored in the \mymarg{seq name}.
+% the \mymarg[type=tt]{seq name} into the \myenv*{verbatimsc} environment. The \mymeta{index}
+% corresponds to the position in which the content is stored in the \mymarg[type=tt]{seq name},
+% if \mymeta[type=tt]{1-end} is used \emph{\enquote{all}} content stored in \mymarg[type=tt]{seq name} will be printed.
% \end{function}
%
% If the optional argument is not passed it defaults to the first element
-% stored in the \mymarg{seq name}. The key \mykey{width-tab} is available for
+% stored in the \mymarg[type=tt]{seq name}. The key \mykey{width-tab} is available for
% this command.
%
+% \subsection{The command \cs{mergesc}}
+% \label{sec:mergesc}
+%
+% \vspace*{-10pt}
+%
+% \newsavebox{\argmergesc}
+% \begin{lrbox}{\argmergesc}
+% \small\mymarg[type=tt]{seq A}\myoarg[type=tt]{index}\textcolor{gray}{, }\mymarg[type=tt]{seq B}\myoarg[type=tt]{start \textcolor{gray}{-} stop}\textcolor{gray}{, }\mymarg[type=tt]{seq C}\myoarg[type=tt]{1-end}
+% \end{lrbox}
+%
+% \begin{function}{\mergesc}
+% \begin{syntax}
+% \cmdexamp{mergesc}[typestored \textnormal{\textcolor{lightgray}{\textbar}} meaningsc\textcolor{lightgray}{, }keys]{\usebox{\argmergesc}}
+% \end{syntax}
+% The command \ics*{mergesc} internally assembles the content stored in
+% the \mymarg[type=tt]{seq A}§[1]§, \mymarg[type=tt]{seq B}§[2-5]§ and \mymarg[type=tt]{seq C}§[1-end]§ into a temporary internal
+% \mymeta[type=tt]{seq temp}.
+% \end{function}
+%
+% The use of the keys \mykey{typestored} or \mykey{menaingsc} are
+% \emph{\enquote{mandatory}} and disjoint from each other, the rest of the
+% accepted \mymeta{keys} are \mykey{print-cmd}, \mykey{write-out},
+% \mykey{width-tab} and \mykey{overwrite}.
+%
+% The use of the \mykey{write-out} key with this command follows the same
+% rules already described, the main advantage is that it allows to join
+% stored content \emph{without rewriting} the file over and over again,
+% by design \hologo{TeX} does not have an append mode for writing
+% files, this effectively allows you to write chunks of code and then
+% merge them into a single file.
+%
+% \newpage
+%
% \subsection{The environment \env{verbatimsc}}
% \label{sec:verbatimsc}
%
@@ -1537,10 +1607,10 @@ seventies that the \NSA\ has known that for 40 years.\par
\usepackage{tikz}
\setlength{\parindent}{0pt}
\pagestyle{empty}
-\Scontents*{\matrix{ \node (a) {$a$} ; & \node (b) {$b$} ; \\ } ;}
-\Scontents*{\matrix[ampersand replacement=\&]
+\Scontents{\matrix{ \node (a) {$a$} ; & \node (b) {$b$} ; \\ } ;}
+\Scontents{\matrix[ampersand replacement=\&]
{ \node (a) {$a$} ; \& \node (b) {$b$} ; \\ } ;}
-\Scontents*{\matrix{\node (a) {$a$} ; & \node (b) {$b$} ; \\ } ; }
+\Scontents{\matrix{\node (a) {$a$} ; & \node (b) {$b$} ; \\ } ; }
\begin{document}
\section{tikzpicture}
\begin{tikzpicture}
@@ -1706,9 +1776,9 @@ Something in the whole course.
%<*example>
% \fi
\begin{scontents}[write-out=scexamp7.ltx]
-\documentclass{article}
% arara: pdflatex
% arara: clean: { extensions: [ aux, log] }
+\documentclass{article}
\usepackage{scontents}
\makeatletter
\let\verbatimsc\@undefined
@@ -1728,20 +1798,20 @@ breakaftersymbolpre={\,\tiny\ensuremath{\rfloor}}]}%
\setlength{\parindent}{0pt}
\pagestyle{empty}
\begin{document}
-\section{Test \texttt{\textbackslash begin\{scontents\}} whit \texttt{fancyvrb}}
+\section{Test \texttt{\textbackslash begin\{scontents\}} with \texttt{fancyvrb}}
Test \verb+{scontents}+ \par
\begin{scontents}
Using \verb+scontents+ env no \verb+[key=val]+, save in seq \verb+contents+
with index 1.
-Prove new \Verb*{ fancyvrb whit braces } and environment \verb+Verbatim*+
+Prove new \Verb*{ fancyvrb with braces } and environment \verb+Verbatim*+
\begin{verbatim}
verbatim environment
\end{verbatim}
\end{scontents}
-\section{Test \texttt{\textbackslash Scontents} whit \texttt{fancyvrb}}
+\section{Test \texttt{\textbackslash Scontents} with \texttt{fancyvrb}}
\Scontents{ We have coded this in \LaTeX: $E=mc^2$.}
\section{Test \texttt{\textbackslash getstored}}
@@ -1798,7 +1868,7 @@ Prove new \Verb*{ fancyvrb whit braces } and environment \verb+Verbatim*+
\setlength{\parindent}{0pt}
\pagestyle{empty}
\begin{document}
-\section{Test \texttt{\textbackslash begin\{scontents\}} whit \texttt{listings}}
+\section{Test \texttt{\textbackslash begin\{scontents\}} with \texttt{listings}}
Test \verb+{scontents}+ \par
\begin{scontents}
@@ -1810,7 +1880,7 @@ Prove \lstinline[basicstyle=\ttfamily]| lstinline | and environment \verb+Verbat
\end{verbatim}
\end{scontents}
-\section{Test \texttt{\textbackslash Scontents*} whit \texttt{listings}}
+\section{Test \texttt{\textbackslash Scontents*} with \texttt{listings}}
\Scontents*+ We have coded this in \lstinline[basicstyle=\ttfamily]|\LaTeX: $E=mc^2$|
and more.+
@@ -1852,14 +1922,14 @@ and more.+
\pagestyle{empty}
\setlength{\parindent}{0pt}
\begin{document}
-\section{Test \texttt{\textbackslash begin\{scontents\}} whit \texttt{minted}}
+\section{Test \texttt{\textbackslash begin\{scontents\}} with \texttt{minted}}
Test \verb+{scontents}+ \par
\begin{scontents}[overwrite,write-env=\jobname.tsc,force-eol=true]
Using \verb+scontents+ env no \verb+[key=val]+, save in seq \verb+contents+
with index 1.\par
-Prove new \Verb*{ new fvextra whit braces } and environment \verb+Verbatim*+
+Prove new \Verb*{ new fvextra with braces } and environment \verb+Verbatim*+
\begin{Verbatim}[obeytabs, showtabs, tab=\rightarrowfill, tabcolor=red]
No tab
One real tab
@@ -1871,7 +1941,7 @@ No tab
Read \Verb{\jobname.tsc} (shows TABs as red arrows):
\VerbatimInput[obeytabs, showtabs, tab=\rightarrowfill, tabcolor=red]{\jobname.tsc}
-\section{Test \texttt{\textbackslash Scontents} whit \texttt{minted}}
+\section{Test \texttt{\textbackslash Scontents} with \texttt{minted}}
\Scontents{ We have coded \par this in \LaTeX: $E=mc^2$.}
@@ -1892,6 +1962,90 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
% \textattachfile[color=linkcolor,print=false]{scexamp9.ltx}{\faFile*[regular]}.
% \lstinputlisting[language=scontents-doc,numbers=left]{scexamp9.ltx}
%
+% \subsection{The command \texttt{\textbackslash{}mergesc} in action}
+%
+% \iffalse
+%<*example>
+% \fi
+\begin{scontents}[write-out=scexamp10.ltx]
+% arara: pdflatex
+% arara: clean: { extensions: [ aux, log] }
+\documentclass{article}
+\usepackage{scontents}
+% Fix part of a MCE that should go before babel's loading
+\begin{scontents}[store-env=mce]
+\documentclass[french]{article}
+\usepackage[T1]{fontenc}
+\usepackage[utf8]{inputenc}
+\usepackage{lmodern}
+\usepackage[a4paper]{geometry}
+\end{scontents}
+% Fix part of a MCE that should go after (>=) babel's loading
+\begin{scontents}[store-env=mce]
+\usepackage{babel}
+\begin{document}
+\end{scontents}
+% Fix part of a MCE that should go after its body
+\begin{scontents}[store-env=mce]
+\end{document}
+\end{scontents}
+\begin{document}
+\section{First annswer}
+% Variable part of a MCE that should added to the fixed preamble, before babel's loading
+\begin{scontents}[store-env=mce-1]
+\usepackage{amsmath}
+\end{scontents}
+% Variable part of a MCE being the code snippet
+\begin{scontents}[store-env=mce-1]
+\begin{align}
+ 0 & \neq 1 \\
+ 1 & \neq 0
+\end{align}
+\end{scontents}
+\begin{description}
+\item[Preamble's addition]\leavevmode
+ \typestored[1]{mce-1}
+\item[Code snippet]\leavevmode
+ \typestored[2]{mce-1}
+\item[MCE]\leavevmode
+ \mergesc[typestored, print-cmd=true]
+ {
+ {mce}[1], {mce-1}[1], {mce}[2], {mce-1}[2], {mce}[3]
+ }
+\end{description}
+\section{Second annswer}
+% Variable part of a MCE that should added to the fixed preamble, before babel's loading
+\begin{scontents}[store-env=mce-2]
+\usepackage{amsmath}
+\end{scontents}
+% Variable part of a MCE being the code snippet
+\begin{scontents}[store-env=mce-2]
+\begin{flalign}
+ 0 & \neq 1 \\
+ 1 & \neq 0
+\end{flalign}
+\end{scontents}
+
+\begin{description}
+\item[Preamble's addition]\leavevmode
+ \typestored[1]{mce-2}
+\item[Code snippet]\leavevmode
+ \typestored[2]{mce-2}
+\item[MCE]\leavevmode
+ \mergesc[typestored, print-cmd=true, write-out=mce.txt, overwrite=true]
+ {
+ {mce}[1], {mce-2}[1], {mce}[2], {mce-2}[2], {mce}[3]
+ }
+\end{description}
+\end{document}
+\end{scontents}
+% \iffalse
+%</example>
+% \fi
+% The command §\mergesc§ in action, adapted from Denis Bitouzé request at \url{https://github.com/pablgonz/scontents/issues/2}
+% \textattachfile[color=linkcolor,print=false]{scexamp9.ltx}{\faFile*[regular]}.
+% \lstinputlisting[language=scontents-doc,numbers=left]{scexamp10.ltx}
+%
% \newpage
%
% \section{Change history}
@@ -1910,37 +2064,47 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
% \begin{description}[font=\small\sffamily,wide=0pt,style=multiline,leftmargin=\descrwidth,nosep,noitemsep]
% \item [\fileversion{} (ctan), \filedate]
% \begin{itemize}
-% \item Adapting the |verbatimsc| environment (compatibility |verbatim| package).
-% \item Removed compatibility layer for older \hologo{LaTeX} releases.
-% \item Fix loader in \hologo{plainTeX} and \hologo{ConTeXt}.
-% \item Minor adjustments in the documentation.
+% \item Fix |\cleansc| command.
+% \item Add |\mergesc| command.
+% \item Fix internal definition for seq var.
+% \item Fix internal code for |\typestored|.
+% \item Replace |\cs_argument_spec:N| by |\cs_parameter_spec:N|.
+% \item Detect |l3keys2e| package (obsolete in june 2022 \LaTeX{} release).
+% \item Minor adjustments in the documentation.
+% \end{itemize}
+% \item [v2.0 (ctan), 2022-04-04]
+% \begin{itemize}
+% \item Adapting the |verbatimsc| environment (compatibility |verbatim| package).
+% \item Removed compatibility layer for older \hologo{LaTeX} releases.
+% \item Fix loader in \hologo{plainTeX} and \hologo{ConTeXt}.
+% \item Minor adjustments in the documentation.
% \end{itemize}
% \item [v1.9 (ctan), 2020-01-21]
% \begin{itemize}
-% \item Update and improvements in the internal code.
-% \item Updating the generic code for |I/O| verification.
-% \item Add |write-cmd| and |write-out| keys for |\Scontents*|.
-% \item Fix |sep| key in |\foreachsc|.
+% \item Update and improvements in the internal code.
+% \item Updating the generic code for |I/O| verification.
+% \item Add |write-cmd| and |write-out| keys for |\Scontents*|.
+% \item Fix |sep| key in |\foreachsc|.
% \end{itemize}
% \item [v1.8 (ctan), 2019-11-18]
% \begin{itemize}
-% \item Add |\newenvsc| command.
-% \item Fix nested environment in \hologo{plainTeX} and \hologo{ConTeXt}.
-% \item Modified default value in |\getstored|.
-% \item Add |overwrite| key to reduce |I/O| operations.
-% \item Deleted an unnecessary group in the code.
+% \item Add |\newenvsc| command.
+% \item Fix nested environment in \hologo{plainTeX} and \hologo{ConTeXt}.
+% \item Modified default value in |\getstored|.
+% \item Add |overwrite| key to reduce |I/O| operations.
+% \item Deleted an unnecessary group in the code.
% \end{itemize}
% \item [v1.7 (ctan), 2019-10-29]
% \begin{itemize}
-% \item The |verbatimsc| environment was rewritten.
-% \item Minor adjustments in documentation.
+% \item The |verbatimsc| environment was rewritten.
+% \item Minor adjustments in documentation.
% \end{itemize}
% \item [v1.6 (ctan), 2019-10-26]
% \begin{itemize}
-% \item The internal behavior of |\getstored| has been modified.
-% \item The internal behavior of |\foreachsc| has been modified.
-% \item Corrected file extension for \hologo{ConTeXt}.
-% \item Remove spurious warning.
+% \item The internal behavior of |\getstored| has been modified.
+% \item The internal behavior of |\foreachsc| has been modified.
+% \item Corrected file extension for \hologo{ConTeXt}.
+% \item Remove spurious warning.
% \end{itemize}
% \item [v1.5 (ctan), 2019-10-24]
% \begin{itemize}
@@ -1998,15 +2162,15 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
% \begin{thebibliography}{9}
% \bibitem{expl3} The \hologo{LaTeX} Project. \enquote{The \textsf{expl3}
% package}. Available from
-% \textsc{ctan}, \url{https://www.ctan.org/pkg/expl3}, 2020.
+% \textsc{ctan}, \url{https://www.ctan.org/pkg/expl3}, 2023.
%
% \bibitem{xparse} The \hologo{LaTeX} Project. \enquote{The \textsf{xparse}
% package}. Available from
-% \textsc{ctan}, \url{https://www.ctan.org/pkg/xparse}, 2020.
+% \textsc{ctan}, \url{https://www.ctan.org/pkg/xparse}, 2023.
%
% \bibitem{l3keys} The \hologo{LaTeX} Project. \enquote{The \textsf{l3keys2e}
% package}. Available from
-% \textsc{ctan}, \url{https://www.ctan.org/pkg/l3keys2e}, 2020.
+% \textsc{ctan}, \url{https://www.ctan.org/pkg/l3keys2e}, 2022.
%
% \bibitem{keyval} \textsc{Wright, Joseph}. \enquote{Programming
% \textsf{key–value} in \textsf{expl3}}. Available from
@@ -2053,10 +2217,10 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
%
% Now we define some common macros to hold the package date and version:
% \begin{macrocode}
-%<loader>\def\ScontentsFileDate{2022-04-04}%
-%<core>\def\ScontentsCoreFileDate{2022-04-04}%
+%<loader>\def\ScontentsFileDate{2024-06-14}%
+%<core>\def\ScontentsCoreFileDate{2024-06-14}%
%<*loader>
-\def\ScontentsFileVersion{2.0}%
+\def\ScontentsFileVersion{2.1}%
\def\ScontentsFileDescription{Stores LaTeX contents in memory or files}%
% \end{macrocode}
%
@@ -2065,7 +2229,15 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
%
% \begin{macrocode}
%<*latex>
-\RequirePackage{l3keys2e}[2020/02/08]
+\IfFormatAtLeastTF { 2022-06-01 }
+ { }
+ {
+ \RequirePackage{l3keys2e}[2020/02/08]
+ \PackageWarning { scontents }
+ {
+ The next update removes compatibility with versions prior to 2024.
+ }
+ }
\ProvidesExplPackage
{scontents} {\ScontentsFileDate} {\ScontentsFileVersion} {\ScontentsFileDescription}
%</latex>
@@ -2229,6 +2401,13 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\l_@@_keys_tl}
+% Stores unused keys to be frwarded to other commands.
+% \begin{macrocode}
+\tl_new:N \l_@@_keys_tl
+% \end{macrocode}
+% \end{macro}
+%
% \subsection{Compatibility layer with \hologo{plainTeX} and \hologo{ConTeXt}}
%
% When loading the package outside of \LaTeX{} we can't usually use
@@ -2292,9 +2471,14 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
% In \LaTeX{} mode we load \mypkg{l3keys2e} process the \mymeta{keys}
% as options passed on to the package, the package \pkg{l3keys2e} will
% verify the \mymeta{keys} and will return an error when they are
-% \emph{unknown}.
% \begin{macrocode}
-%<latex>\ProcessKeysOptions { scontents }
+%<*latex>
+\IfFormatAtLeastTF { 2022-06-01 }
+ {
+ \ProcessKeyOptions [ scontents ]
+ }
+ { \ProcessKeysOptions { scontents } }
+%</latex>
%<*core>
% \end{macrocode}
%
@@ -2333,8 +2517,8 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\l_@@_seq_item_int,\l_@@_env_nesting_int,\l_@@_foreach_stop_int}
-% \cs{l_@@_seq_item_int} stores the index in the sequence of the item
+% \begin{macro}{\l_@@_env_nesting_int,\l_@@_foreach_stop_int}
+% \cs{l_@@_seq_item_seq} stores the indexes in the sequence of the items
% requested to §\typestored§ or §\meaningsc§. \cs{l_@@_env_nesting_int}
% stores the current nesting level of the \env{scontents} environment.
% \cs{l_@@_foreach_stop_int} will save the value at which the §\foreachsc§
@@ -2342,7 +2526,7 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
%
% \begin{macrocode}
\int_new:N \l_@@_foreach_stop_int
-\int_new:N \l_@@_seq_item_int
+\seq_new:N \l_@@_seq_item_seq
\int_new:N \l_@@_env_nesting_int
% \end{macrocode}
% \end{macro}
@@ -2382,6 +2566,7 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
%
% \begin{macrocode}
\seq_new:N \l_@@_foreach_print_seq
+\seq_new:c { g_@@_name_sc!internal_seq }
% \end{macrocode}
% \end{macro}
%
@@ -2407,6 +2592,27 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\s_@@_stop,\s_@@_mark}
+% \begin{macrocode}
+\scan_new:N \s_@@_stop
+\scan_new:N \s_@@_mark
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\l_@@_cur_seq_name_str}
+% \begin{macrocode}
+\str_new:N \l_@@_cur_seq_name_str
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_use_i_delimit_by_s_stop:nw,\@@_use_none_delimit_by_s_stop:w}
+% \begin{macrocode}
+\cs_new:Npn \@@_use_delimit_by_s_stop:nw #1 \s_@@_stop {#1}
+\cs_new:Npn \@@_use_i_delimit_by_s_stop:nw #1 #2 \s_@@_stop {#1}
+\cs_new:Npn \@@_use_none_delimit_by_s_stop:w #1 \s_@@_stop { }
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\l_@@_save_sf_int,\l_@@_save_skip}
% Internal variables used by functions \cs{@@_bsphack:} and \cs{@@_esphack:}.
%
@@ -2450,7 +2656,7 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
\cs_generate_variant:Nn \tl_remove_once:Nn { NV }
\cs_generate_variant:Nn \tl_replace_all:Nnn { Nx, Nxx, Nnx }
\cs_generate_variant:Nn \msg_error:nnnn { nnx }
-\prg_generate_conditional_variant:Nnn \tl_if_empty:n { f } { TF }
+\prg_generate_conditional_variant:Nnn \tl_if_empty:n { f } { p, TF }
% \end{macrocode}
% \end{macro}
%
@@ -2566,16 +2772,25 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
% a common \mymeta{key}.
%
% \begin{macrocode}
+\bool_new:N \l_@@_print_aux_bool
+\bool_set_true:N \l_@@_print_aux_bool
\keys_define:nn { scontents / typemeaning }
{
- width-tab .meta:nn = { scontents } { width-tab = #1 },
- unknown .code:n = { \@@_parse_type_meaning_key:n {#1} }
+ width-tab .meta:nn = { scontents } { width-tab = #1 },
+ write-out .code:n = {
+ \bool_set_false:N \l_@@_storing_bool
+ \bool_set_true:N \l_@@_writing_bool
+ \tl_set:Nn \l_@@_fname_out_tl {#1}
+ },
+ overwrite .meta:nn = { scontents } { overwrite = #1 },
+ overwrite .default:n = true,
+ unknown .code:n = { \@@_parse_type_meaning_key:n {#1} }
}
% \end{macrocode}
%
% \subsection{Handling undefined keys}
%
-% The \mymeta{keys} are stored in the token list variable \cs{l_keys_key_str},
+% The \mymeta{keys} are stored in the string variable \cs{l_keys_key_str},
% and the value (if any) is passed as an argument to each \mymeta{function}.
%
% \subsubsection{Undefined keys for environment \env{scontents}}
@@ -2666,16 +2881,42 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
{ \exp_args:NV \@@_parse_type_meaning_key:nn \l_keys_key_str {#1} }
\cs_new_protected:Npn \@@_parse_type_meaning_key:nn #1#2
{
- \tl_if_empty:fTF { \int_to_roman:n { -0 #1 } }
+ \tl_if_blank:nTF {#2}
+ { \@@_parse_type_meaning_range:w #1 - \q_@@_mark - \s_@@_mark }
+ { \msg_error:nnnn { scontents } { type-key-value-unknown } {#1} {#2} }
+ }
+\cs_new_protected:Npn \@@_parse_type_meaning_range:w #1 - #2 - #3 \s_@@_mark
+ {
+ \@@_range_parser:nnxn {#1} {#2}
+ { \seq_count:c { g_@@_name_\l_@@_cur_seq_name_str _seq } }
+ { \msg_error:nnn { scontents } { type-key-unknown } }
+ }
+\cs_generate_variant:Nn \@@_range_parser:nnnn { nnx }
+\cs_new_protected:Npn \@@_range_parser:nnnn #1 #2 #3
+ {
+ \exp_args:Nxx \@@_range_parser_aux:nnn
+ { \str_if_eq:nnTF {#1} { end } {#3} { \exp_not:n {#1} } }
+ { \str_if_eq:nnTF {#2} { end } {#3} { \exp_not:n {#2} } }
+ }
+\cs_new_protected:Npn \@@_range_parser_aux:nnn #1 #2 #3
+ {
+ \@@_tl_if_head_is_q_mark:nTF {#2}
{
- \tl_if_blank:nTF {#2}
- { \int_set:Nn \l_@@_seq_item_int {#1} }
- { \msg_error:nnnn { scontents } { type-key-value-unknown } {#1} {#2} }
+ \tl_if_empty:fTF { \int_to_roman:n { -0 #1 } }
+ { \seq_put_right:Nx \l_@@_seq_item_seq { \int_eval:n {#1} } }
+ { #3 {#1} }
}
{
- \tl_if_blank:nTF {#2}
- { \msg_error:nnn { scontents } { type-key-unknown } {#1} }
- { \msg_error:nnnn { scontents } { type-key-value-unknown } {#1} {#2} }
+ \bool_lazy_and:nnTF
+ { \tl_if_empty_p:f { \int_to_roman:n { -0 #1 } } }
+ { \tl_if_empty_p:f { \int_to_roman:n { -0 #2 } } }
+ {
+ \int_compare:nNnTF {#2} > {#1}
+ { \int_step_inline:nnnn {#1} { 1 } {#2} }
+ { \int_step_inline:nnnn {#1} { -1 } {#2} }
+ { \seq_put_right:Nn \l_@@_seq_item_seq {##1} }
+ }
+ { #3 { #1-#2 } }
}
}
% \end{macrocode}
@@ -2704,11 +2945,24 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\@@_getfrom_seq:nn,\@@_getfrom_seq:nnn}
+% \begin{macro}{\@@_getfrom_seq:nn,\@@_getfrom_seq:Nn,\@@_getfrom_seq:nnn}
% The function \cs{@@_getfrom_seq:nn} retrieves the saved item from the
% sequence.
%
% \begin{macrocode}
+\cs_new:Npn \@@_getfrom_seq:Nn #1#2
+ {
+ \seq_if_exist:cTF { g_@@_name_#2_seq }
+ {
+ \exp_args:Nf \@@_getfrom_seq:nNn
+ { \seq_count:c { g_@@_name_#2_seq } } #1 {#2}
+ }
+ { \msg_expandable_error:nnn { scontents } { undefined-storage } {#2} }
+ }
+\cs_new:Npn \@@_getfrom_seq:nNn #1 #2 #3
+ { \seq_map_tokens:Nn #2 { \@@_getfrom_seq_aux:nnn {#1} {#3} } }
+\cs_new:Npn \@@_getfrom_seq_aux:nnn #1 #2 #3
+ { \exp_args:Nnf \use:n { \@@_getfrom_seq:nnn {#1} } { \int_eval:n {#3} } {#2} }
\cs_new:Npn \@@_getfrom_seq:nn #1#2
{
\seq_if_exist:cTF { g_@@_name_#2_seq }
@@ -2765,7 +3019,7 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
%
% In order to be able to define environments that behave similarly to
% \myenv{scontents}, we define a generic environment and make all other
-% environment as wappers around that one.
+% environment as wrappers around that one.
%
% \subsubsection{The command \cs{newenvsc}}
%
@@ -2853,7 +3107,7 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
% \startscontents,
% \stopscontents,
% }
-% Finaly defining the \myenv{scontents} environment should be easy :)
+% Finally defining the \myenv{scontents} environment should be easy :)
% \begin{macrocode}
%</core>
%<loader>\newenvsc{scontents}
@@ -2910,7 +3164,7 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
% The function \cs{@@_start_after_option:w} also checks for trailing
% tokens after the optional argument and issues an error if any.
%
-% In all cases, the function \cs{@@_check_line_process:xn} ckecks that
+% In all cases, the function \cs{@@_check_line_process:xn} checks that
% everything past §\begin{scontents}§ is empty and then process
% the environment.
%
@@ -3407,7 +3661,7 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
% \end{macrocode}
%
% The function \cs{@@_norm_arg:n} grabs a normal argument, adds it to
-% the |seq| varaible and optionally prints it.
+% the |seq| variable and optionally prints it.
%
% \begin{macrocode}
\cs_new_protected:Npn \@@_norm_arg:n #1
@@ -3438,7 +3692,7 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
% }
%
% The function \cs{@@_verb_arg_internal:n} replace all §\^^M§ by
-% §\^^J§ then adds it to the |seq| varaible.
+% §\^^J§ then adds it to the |seq| variable.
%
% \begin{macrocode}
\cs_new_protected:Npn \@@_verb_arg_internal:n #1
@@ -3593,21 +3847,36 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
%<*core>
\cs_new_protected:Npn \@@_typestored_internal:nn #1 #2
{
+ \@@_bsphack:
\group_begin:
- \int_set:Nn \l_@@_seq_item_int { 1 }
+ \seq_clear:N \l_@@_seq_item_seq
+ \str_set:Nx \l_@@_cur_seq_name_str {#2}
\tl_if_novalue:nF {#1} { \keys_set:nn { scontents / typemeaning } {#1} }
+ \seq_if_empty:NT \l_@@_seq_item_seq
+ { \seq_set_from_clist:Nn \l_@@_seq_item_seq { 1 } }
\tl_set:Nx \l_@@_temp_tl
- { \exp_args:NV \@@_getfrom_seq:nn \l_@@_seq_item_int {#2} }
- \tl_remove_once:NV \l_@@_temp_tl \c_@@_hidden_space_str
+ { \@@_getfrom_seq:Nn \l_@@_seq_item_seq {#2} }
+ \@@_remove_trailing_eol:N \l_@@_temp_tl
+ \tl_replace_all:Nxn \l_@@_temp_tl \c_@@_hidden_space_str { ^^J }
\tl_log:N \l_@@_temp_tl
\tl_if_empty:NF \l_@@_temp_tl
- { \@@_verb_print:N \l_@@_temp_tl }
+ {
+ \bool_if:NT \l_@@_print_aux_bool
+ {
+ \@@_verb_print:N \l_@@_temp_tl
+ }
+ }
+ \@@_file_write_cmd:VV \l_@@_fname_out_tl \l_@@_temp_tl
+ \use:x
+ {
\group_end:
+ \bool_if:NF \l_@@_print_aux_bool { \@@_esphack: }
+ }
}
% \end{macrocode}
%
% The \cs{@@_verb_print:N} macro is defined with active carriage return
-% (\textsc{ascii} 13) characters to mimick an actual verbatim environment
+% (\textsc{ascii} 13) characters to mimic an actual verbatim environment
% \enquote{on the loose}. The contents of the environment are placed in a
% §verbatimsc§ environment and rescanned using \cs{@@_rescan_tokens:x}.
%
@@ -3645,6 +3914,109 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
% \end{macrocode}
% \end{macro}
%
+% \subsection{The command \cs{mergesc}}
+%
+% \begin{macro}{\mergesc}
+% The §\mergesc§ command parses a list given as argument, and just assembles
+% it as a temporary internal sequence, then passes it to the requested command.
+% \begin{macrocode}
+%<*loader>
+\NewDocumentCommand \mergesc { o m }
+ { \@@_mergesc_internal:nn {#1} {#2} }
+%</loader>
+%<*core>
+\keys_define:nn { scontents / mergesc }
+ {
+ , typestored .code:n =
+ { \cs_set_eq:NN \@@_mergesc_output_cmd:nn \@@_typestored_internal:nn }
+ , meaningsc .code:n =
+ { \cs_set_eq:NN \@@_mergesc_output_cmd:nn \@@_meaningsc_internal:nn }
+ }
+\cs_new_protected:Npn \@@_mergesc_output_cmd:nn #1 #2
+ { \msg_error:nn { scontents } { mergesc-missing-cmd } }
+\msg_new:nnn { scontents } { mergesc-missing-cmd }
+ { Missing~output~command~for~\iow_char:N\\mergesc~\msg_line_context:. }
+\cs_new_protected:Npn \@@_mergesc_internal:nn #1 #2
+ {
+ \group_begin:
+ \tl_clear:N \l_@@_keys_tl
+ \tl_if_novalue:nF {#1}
+ {
+ % Add print-cmd here :D
+ \keys_define:nn { scontents / typemeaning }
+ {
+ print-cmd .bool_set:N = \l_@@_print_aux_bool,
+ print-cmd .initial:n = false,
+ print-cmd .default:n = true,
+ }
+ \keys_set_known:nnN { scontents / mergesc } {#1} \l_@@_keys_tl
+ }
+ \seq_gclear:c { g_@@_name_sc!internal_seq }
+ \@@_mergesc_parse_list:n {#2}
+ \exp_args:Nx \@@_mergesc_output_cmd:nn
+ { 1-end, \exp_not:V \l_@@_keys_tl } { sc!internal }
+ \group_end:
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_mergesc_parse_list:n #1
+ {
+ \clist_map_inline:nn {#1} { \@@_parse_mergesc:nw ##1 \s_@@_stop }
+ \seq_gpop_right:cN { g_@@_name_sc!internal_seq } \l_@@_temp_tl
+ \@@_remove_trailing_eol:N \l_@@_temp_tl
+ \seq_gput_right:cV { g_@@_name_sc!internal_seq } \l_@@_temp_tl
+ }
+\cs_new_protected:Npx \@@_remove_trailing_eol:N #1
+ {
+ \exp_not:N \exp_after:wN \exp_not:N \@@_remove_trailing_eol:w
+ #1 \s_@@_stop \c_@@_hidden_space_str \s_@@_stop \s_@@_mark #1
+ }
+\use:e
+ {
+ \cs_new_protected:Npn \exp_not:N \@@_remove_trailing_eol:w #1
+ \c_@@_hidden_space_str \s_@@_stop #2 \s_@@_mark #3
+ } {
+ \tl_set:Nx #3
+ {
+ \tl_if_empty:nTF {#2}
+ { \exp_not:o { \@@_use_delimit_by_s_stop:nw #1 } }
+ { \exp_not:n {#1} }
+ }
+ }
+\cs_new_protected:Npn \@@_parse_mergesc:nw #1
+ {
+ \peek_charcode_ignore_spaces:NTF [ % ]
+ { \@@_parse_mergesc_aux:nw {#1} }
+ { \@@_parse_mergesc_aux:nw {#1} [ 1-\seq_count:c { g_@@_name_#1_seq } ] }
+ }
+\cs_new_protected:Npn \@@_parse_mergesc_aux:nw #1 [#2]
+ {
+ \seq_clear:N \l_@@_seq_item_seq
+ \clist_map_inline:nn {#2}
+ { \@@_parse_mergesc_range:nw {#1} ##1 - \q_@@_mark - \s_@@_mark }
+ \seq_map_inline:Nn \l_@@_seq_item_seq
+ {
+ \seq_gput_right:cx { g_@@_name_sc!internal_seq }
+ { \seq_item:cn { g_@@_name_#1_seq } {##1} }
+ }
+ \@@_use_none_delimit_by_s_stop:w
+ }
+\cs_new_protected:Npn \@@_parse_mergesc_range:nw #1 #2 - #3 - #4 \s_@@_mark
+ {
+ \cs_set_protected:Npn \@@_tmp:w ##1
+ {
+ \msg_error:nnxxx { scontents } { index-out-of-range }
+ {##1} {#1} { \seq_count:c { g_@@_name_#1_seq } }
+ }
+ \@@_range_parser:nnxn {#2} {#3}
+ { \seq_count:c { g_@@_name_#1_seq } }
+ { \@@_tmp:w }
+ }
+%</core>
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{verbatimsc,\startverbatimsc,\stopverbatimsc}
% Finally the \hologo{LaTeX} and \hologo{ConTeXt} version of
% §verbatimsc§ environment is defined.
@@ -3697,20 +4069,20 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
% §\do@noligs§ which makes sure to not consume following space
% tokens. The \LaTeXe{} version ends with §\char`#1§, which
% leaves \TeX{} still looking for an \mymeta{optional~space}.
-% This version uses \cs{char_generate:nn} to ensure that doesn't
-% happen.
-%
+%^^A This version uses \cs{char_generate:nn} to ensure that doesn't
+%^^A happen.
+%^^A Maintain documentation at this point.
% \begin{macrocode}
-\cs_new:Npn \@@_do_noligs:N #1
+\cs_new_protected:Npn \@@_do_noligs:N #1
{
\char_set_catcode_active:N #1
- \char_set_active_eq:Nc #1 { @@_active_char_ \token_to_str:N #1 : }
\cs_set:cpx { @@_active_char_ \token_to_str:N #1 : }
{
\mode_leave_vertical:
\tex_kern:D \c_zero_dim
- \char_generate:nn { `#1 } { 12 }
+ \tex_char:D `\exp_not:N #1
}
+ \char_set_active_eq:Nc #1 { @@_active_char_ \token_to_str:N #1 : }
}
% \end{macrocode}
% \end{macro}
@@ -3721,7 +4093,8 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
\prg_new_protected_conditional:Npnn \@@_tl_if_head_is_q_mark:n #1
{ T, F, TF }
{
- \if_meaning:w \q_@@_mark #1 \scan_stop:
+ \exp_after:wN \if_meaning:w
+ \exp_after:wN \q_@@_mark \@@_use_i_delimit_by_s_stop:nw #1 ? \s_@@_stop
\prg_return_true:
\else:
\prg_return_false:
@@ -3805,8 +4178,11 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
\cs_new_protected:Npn \@@_meaningsc_internal:nn #1 #2
{
\group_begin:
- \int_set:Nn \l_@@_seq_item_int { 1 }
+ \seq_clear:N \l_@@_seq_item_seq
+ \str_set:Nx \l_@@_cur_seq_name_str {#2}
\tl_if_novalue:nF {#1} { \keys_set:nn { scontents / typemeaning } {#1} }
+ \seq_if_empty:NT \l_@@_seq_item_seq
+ { \seq_set_from_clist:Nn \l_@@_seq_item_seq { 1 } }
\@@_meaningsc:n {#2}
\group_end:
}
@@ -3815,9 +4191,9 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
\cs_new_protected:Npn \@@_meaningsc:n #1
{
\tl_set:Nx \l_@@_temp_tl
- { \exp_args:NV \@@_getfrom_seq:nn \l_@@_seq_item_int {#1} }
+ { \@@_getfrom_seq:Nn \l_@@_seq_item_seq {#1} }
\tl_replace_all:Nxn \l_@@_temp_tl { \iow_char:N \^^J } { ~ }
- \tl_remove_once:NV \l_@@_temp_tl \c_@@_hidden_space_str
+ \tl_replace_all:Nxn \l_@@_temp_tl \c_@@_hidden_space_str { ~ }
\tl_log:N \l_@@_temp_tl
\tl_use:N \l_@@_verb_font_tl
\tl_replace_all:Nnx \l_@@_temp_tl { ^^I } { \@@_tabs_to_spaces: }
@@ -3852,7 +4228,7 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
%</core>
%<*loader>
\NewDocumentCommand \cleanseqsc { m }
- { \seq_clear_new:c { g_@@_name_#1_seq } }
+ { \seq_gclear_new:c { g_@@_name_#1_seq } }
%</loader>
%<*core>
% \end{macrocode}
diff --git a/macros/latex/contrib/scontents/scontents.ins b/macros/latex/contrib/scontents/scontents.ins
index 32b3e52331..39ec569e83 100644
--- a/macros/latex/contrib/scontents/scontents.ins
+++ b/macros/latex/contrib/scontents/scontents.ins
@@ -3,13 +3,13 @@
\askforoverwritefalse
\declarepreamble\standard
-Copyright (C) 2019-2022 by Pablo González L <pablgonz@educarchile.cl>
+Copyright (C) 2019-2024 by Pablo González L <pablgonz@educarchile.cl>
This work may be distributed and/or modified under the conditions of the
LaTeX Project Public License, either version 1.3c of this license or (at
your option) any later version. The latest version of this license is in
- http://www.latex-project.org/lppl.txt
+ https://www.latex-project.org/lppl.txt
and version 1.3c or later is part of all distributions of LaTeX version
2005/12/01 or later.
@@ -33,11 +33,11 @@ and the derived files scontents.sty,
\declarepreamble\context
\string\module
[ file=t-scontents,
- version=2.0,
+ version=2.1,
title=\string\CONTEXT\ User Module,
subtitle=Storing Contents,
author=Pablo González,
- date=2022-04-04,
+ date=2024-06-14,
copyright=Pablo González,
email=pablgonz@educarchile.cl,
license=LPPL]
diff --git a/macros/latex/contrib/scontents/scontents.pdf b/macros/latex/contrib/scontents/scontents.pdf
index 73255df198..44bf07e5ce 100644
--- a/macros/latex/contrib/scontents/scontents.pdf
+++ b/macros/latex/contrib/scontents/scontents.pdf
Binary files differ
diff --git a/macros/latex/contrib/se2thesis/CHANGELOG.md b/macros/latex/contrib/se2thesis/CHANGELOG.md
index 32bdced07c..2d81b57f6f 100644
--- a/macros/latex/contrib/se2thesis/CHANGELOG.md
+++ b/macros/latex/contrib/se2thesis/CHANGELOG.md
@@ -7,6 +7,70 @@ and this project adheres to
## [Unreleased]
+## [v4.3.2] – 2024–08–12
+
+### Fixed
+
+- Prevent line break in the lower back title if one added a manual line break
+ using `\\` to the title in order to layout it properly for the front title
+ page.
+
+## [v4.3.1] – 2024–07–31
+
+### Added
+
+- Add a hint on the usage of `scrreprt` as the base class if one wants to have
+ numbered bibliography or appendices.
+- Add section in the documentation on the usage of babel, its shorthands for
+ German and English to re-enable hyphenation of compound words, and the
+ conflicting package `hyphenat`.
+
+### Fixed
+
+- Fix list of implicitly loaded packages.
+
+## [v4.3.0] – 2024–07–23
+
+### Fixed
+
+- The spelling bachelor thesis and master thesis are widely used but seem to be
+ wrong. According to the Oxford English Dictionary, the spelling shall be
+ bachelor's thesis and master's thesis.
+
+## [v4.2.0] – 2024–06–25
+
+### Fixed
+
+- The `phdphil` should not be a Doctor of Philosophy but, according to the
+ regulations of the University, be a Doctor of *Natural* Philosophy.
+
+## [v4.1.0] – 2024–06–07
+
+### Added
+
+- Add a `\summarybox` macro that simplifies the usage of the `summary`
+ environment
+
+### Changed
+
+- Update the used actions for GitHub to their latest versions.
+- Change the styling of the `summary` environment boxes
+- Adjusted options for `siunitx`
+
+## [v4.0.3] – 2024–05–27
+
+### Fixed
+
+- Add all missing option values for `se2thesis`' `colormode` parameter that are
+ available from the `se2colors` package.
+
+## [v4.0.2] – 2024–05–24
+
+### Added
+
+- Enhance documentation of `se2packages` regarding the usage of `minted` and the
+ grey-scale mode of `se2colors`.
+
## [v4.0.1] – 2024–05–17
### Fixed
@@ -203,7 +267,14 @@ These changes might be breaking changes!
### Added
- First official release
-[Unreleased]: https://github.com/se2p/se2thesis/compare/v4.0.1...HEAD
+[Unreleased]: https://github.com/se2p/se2thesis/compare/v4.3.2...HEAD
+[v4.3.2]: https://github.com/se2p/se2thesis/compare/v4.3.2...v4.3.1
+[v4.3.1]: https://github.com/se2p/se2thesis/compare/v4.3.1...v4.3.0
+[v4.3.0]: https://github.com/se2p/se2thesis/compare/v4.3.0...v4.2.0
+[v4.2.0]: https://github.com/se2p/se2thesis/compare/v4.2.0...v4.1.0
+[v4.1.0]: https://github.com/se2p/se2thesis/compare/v4.1.0...v4.0.3
+[v4.0.3]: https://github.com/se2p/se2thesis/compare/v4.0.3...v4.0.2
+[v4.0.2]: https://github.com/se2p/se2thesis/compare/v4.0.2...v4.0.1
[v4.0.1]: https://github.com/se2p/se2thesis/compare/v4.0.1...v4.0.0
[v4.0.0]: https://github.com/se2p/se2thesis/compare/v4.0.0...v3.4.0
[v3.4.0]: https://github.com/se2p/se2thesis/compare/v3.4.0...v3.3.1
diff --git a/macros/latex/contrib/se2thesis/se2colors.dtx b/macros/latex/contrib/se2thesis/se2colors.dtx
index ccea678194..7b0b5d81f7 100644
--- a/macros/latex/contrib/se2thesis/se2colors.dtx
+++ b/macros/latex/contrib/se2thesis/se2colors.dtx
@@ -231,7 +231,7 @@
%
% Identify the package and give the overall version information.
% \begin{macrocode}
-\ProvidesExplPackage {se2colors} {2024-05-17} {4.0.1}
+\ProvidesExplPackage {se2colors} {2024-08-12} {4.3.2}
{A colour support package for the se2thesis bundle}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/se2thesis/se2fonts.dtx b/macros/latex/contrib/se2thesis/se2fonts.dtx
index 741478e0fd..5ede585b75 100644
--- a/macros/latex/contrib/se2thesis/se2fonts.dtx
+++ b/macros/latex/contrib/se2thesis/se2fonts.dtx
@@ -151,7 +151,7 @@
%
% Identify the package and give the overall version information.
% \begin{macrocode}
-\ProvidesExplPackage {se2fonts} {2024-05-17} {4.0.1}
+\ProvidesExplPackage {se2fonts} {2024-08-12} {4.3.2}
{A font-selection support package for the se2thesis bundle}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/se2thesis/se2packages.dtx b/macros/latex/contrib/se2thesis/se2packages.dtx
index 4c28b13fce..3ad8d99b0a 100644
--- a/macros/latex/contrib/se2thesis/se2packages.dtx
+++ b/macros/latex/contrib/se2thesis/se2packages.dtx
@@ -125,6 +125,33 @@
%
% Please be aware to use \emph{either} \pkg{minted} \emph{or} \pkg{listings}!
%
+% \emph{Attention:} The way how \pkg{minted} is implemented causes the resulting
+% code to be typeset in gray scale, if you use the \pkg{se2colors} package with
+% option |cmode=bw| or the \cls{se2thesis} class with |colormode=bw| (or their
+% respective aliases). Students were requesting that they want to use the
+% black-and-white mode of \pkg{se2color} because it saves lots of money when
+% printing their thesis, while they want the colours in the syntax highlighting
+% of \pkg{minted}. One can achieve this by adding hooks to the preamble of the
+% document, after loading the \pkg{minted} package (which is recommend by
+% setting |minted=true| as an option to \pkg{se2packages}):
+% \begin{LaTeXdemo}[code only]
+% \AddToHook{env/minted/begin}{\selectcolormodel{cmyk}}
+% \AddToHook{cmd/mintinline/before}{\selectcolormodel{cmyk}}
+% \end{LaTeXdemo}
+% Thanks to Ulrike Fischer for pointing out this hook mechanism.\footnote{%
+% \href{https://tex.stackexchange.com/a/718719/14622}{tex.stackexchange.com/a/718719/14622}
+% }
+%
+% Another option, if you do not want colours in the \pkg{minted} output when you
+% use the gray-scale mode of \pkg{se2colors} is the change the highlighting
+% style, \pkg{minted} uses. The package for this provides the macro
+% \cs{usemintedstyle}, which accepts a style available in your local
+% \texttt{pygments} installation, see the \texttt{pygments}
+% documentation\footnote{%
+% \href{https://pygments.org/styles/}{pygments.org/styles/}
+% } for an overview over the available styles; the |bw| style is explicitly
+% designed for this kind of scenario.
+%
% \subsubsection{Designing Tables}
%
% A basically mandatory package to all users of tables
@@ -419,6 +446,8 @@
% \bibitem{DBLP:journals/sttt/BeyerLW19} Dirk Beyer, Stefan Löwe, and Philipp
% Wendler: \emph{Reliable benchmarking: requirements and solutions}. STTT
% 21(1): 1--29 (2019)
+% \bibitem{Knu86} Donald E. Knuth: \emph{The \TeX{}book}. Addison-Wesley
+% (1986)
% \end{thebibliography}
%
%
@@ -443,7 +472,7 @@
%
% Identify the package and give the overall version information.
% \begin{macrocode}
-\ProvidesExplPackage {se2packages} {2024-05-17} {4.0.1}
+\ProvidesExplPackage {se2packages} {2024-08-12} {4.3.2}
{Supporting packages for the se2thesis bundle}
% \end{macrocode}
%
@@ -654,13 +683,14 @@
\msg_info:nnn { seiipackages } { load-package } { siunitx }
\RequirePackage[
add-integer-zero=false,
- free-standing-units,
+ free-standing-units=true,
group-minimum-digits=4,
- list-final-separator={, and },
+ list-final-separator={,~ and~ },
round-mode=figures,
round-precision=3,
separate-uncertainty=true,
uncertainty-mode=separate,
+ mode=match,
]{siunitx}
}
% \end{macrocode}
diff --git a/macros/latex/contrib/se2thesis/se2thesis-master-thesis-example.pdf b/macros/latex/contrib/se2thesis/se2thesis-master-thesis-example.pdf
index 957e0b5110..4d224fe981 100644
--- a/macros/latex/contrib/se2thesis/se2thesis-master-thesis-example.pdf
+++ b/macros/latex/contrib/se2thesis/se2thesis-master-thesis-example.pdf
Binary files differ
diff --git a/macros/latex/contrib/se2thesis/se2thesis-master-thesis-example.tex b/macros/latex/contrib/se2thesis/se2thesis-master-thesis-example.tex
index 4f10ae80f5..fececced48 100644
--- a/macros/latex/contrib/se2thesis/se2thesis-master-thesis-example.tex
+++ b/macros/latex/contrib/se2thesis/se2thesis-master-thesis-example.tex
@@ -87,10 +87,6 @@ We could reference the \TeX{} book~\autocite{Knu86}. And we want to reference
We hypothesise that the answer to \cref{rq:1} is 42!
\end{hyp}
-\begin{summary}{\Cref{rq:1}}
- It's 42, obviously!
-\end{summary}
-
And using the auto-cite functionality to cite Knuth~\autocite{Knu86}.
\backmatter
diff --git a/macros/latex/contrib/se2thesis/se2thesis.dtx b/macros/latex/contrib/se2thesis/se2thesis.dtx
index ced3b912d1..6d29f97482 100644
--- a/macros/latex/contrib/se2thesis/se2thesis.dtx
+++ b/macros/latex/contrib/se2thesis/se2thesis.dtx
@@ -62,7 +62,7 @@
% internet, causing each thesis looking differently.
%
% The author of this package provided a template,
-% which he initially created for his bachelor and master thesis,
+% which he initially created for his bachelor's and master's thesis,
% that was recommended and used by many students.
% The implementation of that template, however, was very hacky and required
% some changes over time.
@@ -74,7 +74,7 @@
% The bundle itself consists of several \LaTeX{} classes and packages
% that also allow reuse of various parts of it.
% Its main class is the \pkg{se2thesis} document class,
-% an extension of the \KOMAScript{} |scrreprt| document class.
+% an extension of the \KOMAScript{} |scrbook| document class.
% The packages \pkg{se2colors} and \pkg{se2fonts} provide necessary
% colour and font settings for the \pkg{se2thesis} class;
% the \pkg{se2packages} allows to load several recommended packages~(see
@@ -186,9 +186,9 @@
% \pkg{expl3}, \pkg{l3keys2e} in case one uses a \LaTeX{} kernel from before
% 2022--06--01, \pkg{graphicx}, \pkg{translations}, \KOMAScript, \pkg{xcolor},
% \pkg{ifthen}, as well as \pkg{fontspec}, \pkg{unicode-math},
-% and \pkg{libertinus-otf} if one uses \LuaTeX{};
+% \pkg{inconsolata-nerd-font} and \pkg{libertinus-otf} if one uses \LuaTeX{};
% for \pdfLaTeX{} we load \pkg{fontenc}, \pkg{libertinus-type1}, and
-% \pkg{AnonymousPro} instead of the latter three.
+% \pkg{inconsolata} instead of the latter three.
% Furthermore, we load \pkg{microtype};
% when using \LuaTeX{}, we also load \pkg{lua-widow-control} and \pkg{selnolig}.
%
@@ -220,6 +220,11 @@
% \emph{Note:} you cannot use \cls{scrartcl} because it does not provide
% the required |chapter| sectioning.
% Default is |scrbook|.
+%
+% Please note that if you want to have the bibliography numbered or use an
+% appendix with alpha-numbering (A, B, \dots), you want to explicitly use
+% |scrreprt| as the base class; for some (currently unknown) reason this does
+% not work with the default |scrbook|.
% \end{function}
% \begin{function}{paper}
% \begin{syntax}
@@ -243,11 +248,11 @@
% \end{syntax}
% Defines the type of the thesis.
% Possible values are:
-% |bachelor| for a bachelor thesis, |bachelorproposal| for a proposal to
-% a bachelor thesis, |master| for a master thesis, |masterproposal| for
-% a proposal to a master thesis, |phdproposal| for a proposal to a PhD thesis,
+% |bachelor| for a bachelor's thesis, |bachelorproposal| for a proposal to
+% a bachelor's thesis, |master| for a master's thesis, |masterproposal| for
+% a proposal to a master's thesis, |phdproposal| for a proposal to a PhD thesis,
% |phd| for a PhD thesis in the natural sciences, |phdeng| for a PhD thesis
-% in engineering, and |phdphil| for a PhD thesis in philosophy.
+% in engineering, and |phdphil| for a PhD thesis in natural philosophy.
% \end{function}
%
% \begin{function}{colormode}
@@ -307,7 +312,7 @@
% \cmd{\matrnumber} \marg{matriculation-number}
% \end{syntax}
% Specify the matriculation number of the student writing the thesis.
-% This is required for Bachelor and Master theses.
+% This is required for bachelor's and master's theses.
% \end{function}
%
% \begin{function}{\supervisor, \cosupervisor}
@@ -437,7 +442,7 @@
% We provide the \env{acknowledgements} environment to typeset acknowledgements
% for your thesis.
% Using this environment is optional.
-% Usually, bachelor and master thesis do not contain such an acknowledgements
+% Usually, bachelor's and master's thesis do not contain such an acknowledgements
% section, however, there is no general rule to this.
% \begin{verbatim}
% \begin{acknowledgements}[language]
@@ -540,6 +545,48 @@
% question;
% however, this can also be arbitrary text.
%
+% \subsection{Language Support and Hyphenation}\label{sec:doct-se2thesis-lang}
+%
+% The study regulations of the University of Passau require students to write
+% their thesis in either German or English. For both cases it is recommended
+% to load a package for the correct hyphenation patters. Usually, one can
+% either choose between the \pkg{babel} and \pkg{polyglossia} package. For a
+% detailed discussion in the differences and which to choose, please use the
+% search engine of your choice.
+%
+% For this documentation we stick with the \pkg{babel} package, which is often
+% considered to be the standard package.
+%
+% If you write your thesis in German, load \pkg{babel} in your preamble like
+% follows
+% \begin{verbatim}
+% \usepackage[ngerman]{babel}
+% \end{verbatim}
+% For a thesis in English, you have to also load the German variant plus the
+% English one as the default (see \cref{sec:doc-se2thesis-authorship} for an
+% explanation)
+% \begin{verbatim}
+% \usepackage[ngerman,main=UKenglish]{babel}
+% \end{verbatim}
+%
+% Note that by default, \LaTeX{} does not provide hyphenation for compound
+% words, which is explained in the \TeX{} Book~\cite[p.~454]{Knu86} and a
+% StackExchange post\footnote{\href{https://tex.stackexchange.com/a/63234/14622}{https://tex.stackexchange.com/a/63234/14622}}. The \pkg{babel} package
+% provides a way (called shorthands) for German, which allows to reenable
+% hyphenation for compound words (as they are common on German). These
+% shorthands are by default not available for English, but they can easily be
+% added by adding
+% \begin{verbatim}
+% \useshorthands{"}
+% \addto\extrasUKenglish{\languageshorthands{ngerman}}
+% \end{verbatim}
+% after loading \pkg{babel} with the aforementioned \cmd{\usepackage}
+% macro\footnote{see https://tex.stackexchange.com/a/298844/14622}.
+%
+% \emph{Please note:} loading the \pkg{hyphenat} package is strongly discouraged
+% by the \pkg{se2thesis} maintainer because it conflicts with the \env{hyp}
+% environment provided by \pkg{se2thesis} (see \cref{sec:doc-se2thesis-summaries}).
+%
% \end{documentation}
%
% \clearpage
@@ -607,7 +654,7 @@
%
% Identify the class and give the overall version number.
% \begin{macrocode}
-\ProvidesExplClass {se2thesis} {2024-05-17} {4.0.1}
+\ProvidesExplClass {se2thesis} {2024-08-12} {4.3.2}
{A thesis class for the Chair of Software Engineering II}
% \end{macrocode}
%
@@ -788,7 +835,7 @@
},
thesistype .initial:n = master,
- colormode .choices:nn = {cmyk,rgb,bw}{
+ colormode .choices:nn = {4C,CMYK,cmyk,RGB,rgb,BW,bw,gray}{
\tl_gset_eq:NN \l_@@_colormode_tl \l_keys_choice_tl
},
colormode .initial:n = cmyk,
@@ -1246,7 +1293,7 @@
% \end{macrocode}
% The next block generates the text that describes the thesis.
% In case of a PhD thesis, this text is predefined to match the requirements.
-% In case of a bachelor or master thesis, or a proposal thereof, we generate
+% In case of a bachelor's or master's thesis, or a proposal thereof, we generate
% a text based on the values of the |thesistype| load-time option and the
% values of the \cmd{\degreeprogramme}, \cmd{\department}, and
% \cmd{\institute} variables.
@@ -1283,7 +1330,7 @@
\tl_if_eq:NnTF \l_@@_thesis_type_tl { phdphil }
{
Dissertation~ zur~ Erlangung~ des~ Doktorgrades\\
- der~ Philosophie~ (Dr.\,phil.)\\
+ der~ Naturphilosophie~ (Dr.\,phil.\,nat.)\\
eingereicht~ an~ der~ Fakultät~ für~ Informatik~ und~ Mathematik\\
der~ Universität~ Passau\\
\rule{\textwidth}{.1pt}\\
@@ -1291,7 +1338,7 @@
the~ Faculty~ of~ Computer~ Science~ and~ Mathematics\\
of~ the~ University~ of~ Passau\\
in~ partial~ fulfillment~ of~ obtaining\\
- the~ degree~ of~ a~ Doctor~ of~ Philosophy
+ the~ degree~ of~ a~ Doctor~ of~ Natural~ Philosophy
} {
\tl_if_eq:NnT \l_@@_thesis_type_tl { bachelor }
{ \GetTranslation{Bachelor-thesis} }
@@ -1362,12 +1409,18 @@
% \end{macrocode}
%
% \begin{macro}{\@lowertitleback}
-% Afterwards, override the definition of \cs{@lowertitleback}.
+% Afterwards, override the definition of \cs{@lowertitleback}. To prevent
+% line breaks in the title (that might be necessary to layout it properly on
+% the front title page), we place a group around \cs{@title} and temporarily
+% redefine \cmd{\\} to do nothing.
% \begin{macrocode}
\renewcommand*{\@lowertitleback}{%
\group_begin:
\noindent\textbf{\@author}:\\
- \emph{\@title}\\
+ \group_begin:
+ \let\\\relax
+ \emph{\@title}
+ \group_end:\\
\tl_if_eq:NnT \l_@@_thesis_type_tl { bachelor }
{ \GetTranslation{Bachelor-thesis},~ }
\tl_if_eq:NnT \l_@@_thesis_type_tl { master }
@@ -1622,12 +1675,35 @@
% The \env{summary} environment expects a label and has the summary text in
% its content.
% \begin{macrocode}
-\NewDocumentEnvironment { summary } { m }
- { \begin{tcolorbox}[title={Summary~ (#1)}] }
- { \end{tcolorbox} }
+\ExplSyntaxOff
+\NewDocumentEnvironment { summary } { m +b }
+ {%
+ \begin{tcolorbox}[%
+ size=fbox,%
+ rounded corners=all,%
+ attach title to upper,%
+ coltitle=black,%
+ fonttitle=\bfseries,%
+ title={Summary #1},
+ after title={:\ },
+ ]
+ #2
+ } {%
+ \end{tcolorbox}%
+ }
+\ExplSyntaxOn
% \end{macrocode}
% \end{environment}
-%
+% \begin{macro}{\summarybox}
+% The \cmd{summarybox} macro simplifies the usage of the \env{summary}
+% environment.
+% \begin{macrocode}
+\NewDocumentCommand { \summarybox } { m m }
+ {
+ \begin{summary}{#1} #2 \end{summary}
+ }
+% \end{macrocode}
+% \end{macro}
%
%
%
@@ -1655,7 +1731,7 @@
% We provide the following English translations.
%
% \begin{macrocode}
-\ProvideDictionaryFor{English}{se2translations}[2024/05/17]
+\ProvideDictionaryFor{English}{se2translations}[2024/08/12]
\ProvideDictTranslation{abstract}{abstract}
\ProvideDictTranslation{Abstract}{Abstract}
\ProvideDictTranslation{acknowledgement}{acknowledgement}
@@ -1680,10 +1756,10 @@
\ProvideDictTranslation{External}{External Examiner}
\ProvideDictTranslation{degreeprogramme}{programme}
\ProvideDictTranslation{Degreeprogramme}{Programme}
-\ProvideDictTranslation{Bachelor-thesis}{Bachelor Thesis}
-\ProvideDictTranslation{Bachelor-thesis-proposal}{Bachelor Thesis Proposal}
-\ProvideDictTranslation{Master-thesis}{Master Thesis}
-\ProvideDictTranslation{Master-thesis-proposal}{Master Thesis Proposal}
+\ProvideDictTranslation{Bachelor-thesis}{Bachelor's Thesis}
+\ProvideDictTranslation{Bachelor-thesis-proposal}{Bachelor's Thesis Proposal}
+\ProvideDictTranslation{Master-thesis}{Master's Thesis}
+\ProvideDictTranslation{Master-thesis-proposal}{Master's Thesis Proposal}
\ProvideDictTranslation{PhD-thesis}{PhD Thesis}
\ProvideDictTranslation{PhD-thesis-proposal}{PhD Thesis Proposal}
\ProvideDictTranslation{date}{date}
@@ -1706,7 +1782,7 @@
% We provide the following German translations.
%
% \begin{macrocode}
-\ProvideDictionaryFor{German}{se2translations}[2024/05/17]
+\ProvideDictionaryFor{German}{se2translations}[2024/08/12]
\ProvideDictTranslation{abstract}{Zusammenfassung}
\ProvideDictTranslation{Abstract}{Zusammenfassung}
\ProvideDictTranslation{acknowledgement}{Danksagung}
diff --git a/macros/latex/contrib/se2thesis/se2thesis.pdf b/macros/latex/contrib/se2thesis/se2thesis.pdf
index b9a75b0b66..e37c07abf4 100644
--- a/macros/latex/contrib/se2thesis/se2thesis.pdf
+++ b/macros/latex/contrib/se2thesis/se2thesis.pdf
Binary files differ
diff --git a/macros/latex/contrib/sepfootnotes/README b/macros/latex/contrib/sepfootnotes/README
index e0f9ac9aac..2a507a1da4 100644
--- a/macros/latex/contrib/sepfootnotes/README
+++ b/macros/latex/contrib/sepfootnotes/README
@@ -5,8 +5,11 @@ This package supports footnotes and endnotes from separate files. This is
achieved with commands \sepfootnotecontent and \sepfootnote; the former defines
the content of a note, while the latter typesets that note.
+2024/07/05 v0.3d
+ * Package options after: Allow \sepfootnotecontent after \sepfootnote
+
2016/07/18 v0.3c
- * Package options Note definitions may take global scope
+ * Package options global: Note definitions may take global scope
2014/07/22 v0.3b
* Documentation Minor formatting changes to page 4
@@ -41,7 +44,7 @@ Usage:
*See sepfootnotes.pdf
--------------------------------------------------------------------------------
-Copyright (C) 2013-2016 Eduardo C. Lourenço de Lima
+Copyright (C) 2013-2024 Eduardo C. Lourenço de Lima
This material is subject to the LaTeX Project Public License. See
http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html
diff --git a/macros/latex/contrib/sepfootnotes/sepfootnotes.pdf b/macros/latex/contrib/sepfootnotes/sepfootnotes.pdf
index 0cb449cb21..0246b086b5 100644
--- a/macros/latex/contrib/sepfootnotes/sepfootnotes.pdf
+++ b/macros/latex/contrib/sepfootnotes/sepfootnotes.pdf
Binary files differ
diff --git a/macros/latex/contrib/sepfootnotes/sepfootnotes.sty b/macros/latex/contrib/sepfootnotes/sepfootnotes.sty
index d953d30022..f99b9770c0 100644
--- a/macros/latex/contrib/sepfootnotes/sepfootnotes.sty
+++ b/macros/latex/contrib/sepfootnotes/sepfootnotes.sty
@@ -1,4 +1,4 @@
-%% Copyright (C) 2013-2016 Eduardo C. Lourenço de Lima
+%% Copyright (C) 2013-2024 Eduardo C. Lourenço de Lima
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either
@@ -11,19 +11,23 @@
%% version 2005/12/01 or later.
%%
\NeedsTeXFormat {LaTeX2e} [1996/06/01]
-\ProvidesPackage {sepfootnotes} [2016/07/18 v0.3c Footnotes in separate file]
+\ProvidesPackage {sepfootnotes} [2024/07/05 v0.3d Footnotes in separate file]
\newcommand\sep@packagename{sepfootnotes}
+%{% options
+
\DeclareOption {quiet} {\sep@opt@quiettrue}
\DeclareOption {warn} {\sep@opt@warntrue}
\DeclareOption {error} {\sep@opt@errortrue}
\DeclareOption {global} {\sep@opt@globaltrue}
+\DeclareOption {after} {\sep@opt@aftertrue}
\newif \ifsep@opt@quiet
\newif \ifsep@opt@warn
\newif \ifsep@opt@error
\newif \ifsep@opt@global
+\newif \ifsep@opt@after
\sep@opt@warntrue
@@ -38,10 +42,10 @@
\sep@opt@warnfalse
\fi
+%}%
+%{% public
-% ********************************* Public ************************************
-
-% ==================== shared by footnotes and endnotes =======================
+%{% footnotes and endnotes
\newcommand\sep@new [1]
{\newcounter{#1note}%
@@ -52,7 +56,8 @@
\expandafter\newcommand\csname #1quicknote\endcsname [1] {\sep@namereplace {#1} {sepfootnotes@tmp@quick} {##1}\csname #1note\endcsname{sepfootnotes@tmp@quick}}\relax
}
-% -------------------------------- footnotes ----------------------------------
+%}%
+%{% footnotes
\newcommand\newfootnotes{\@ifstar\sep@newfootnotesfree\sep@newfootnotes}
@@ -73,7 +78,8 @@
\@addtoreset {#2note} {#1}%
\expandafter\renewcommand\csname the#2mark\endcsname {\fnsymbol {#2note}}}
-% -------------------------------- endnotes -----------------------------------
+%}%
+%{% endnotes
\newcommand\newendnotes [1]
{\sep@new {#1}%
@@ -88,8 +94,8 @@
\expandafter\newcommand\csname #1notesize\endcsname {\footnotesize}%
\newenvironment {#1notes} {\csname #1notesize\endcsname\setlength\parskip\footnotesep} {}}
-
-% ------------------------------ commentnotes --------------------------------
+%}%
+%{% commentnotes
\newcommand\newcommentnotes [1]
{\newfootnotes*{#1}\relax
@@ -107,62 +113,114 @@
\@addtoreset {#2note} {#1}\relax
\expandafter\renewcommand\csname the#2mark\endcsname {\fnsymbol {#2note}}}
-% ********************************* Private ***********************************
+%}%
+
+%}%
+%{% private
-% ---------------------------------- files ------------------------------------
+%{% files
\newcommand\sep@filename [1] {\jobname.ent-#1}
\newcommand\sep@openout [1] {\expandafter \newwrite\csname sep@fileout#1\endcsname\immediate\expandafter\openout\csname sep@fileout#1\endcsname=\sep@filename#1\relax}
\newcommand\sep@write [2] {\immediate \write\csname sep@fileout#1\endcsname {#2}}
\newcommand\sep@close [1] {\immediate\expandafter\closeout\csname sep@fileout#1\endcsname\relax}
-% ---------------------------------- table ------------------------------------
+%}%
+%{% names
+
+%{% \sep@nameuse <prefix> <key>
\newcommand\sep@nameuse [2]
{\@ifundefined{sepfootnotes@text@#1@#2}
- {\ifsep@opt@error
- \PackageError {\sep@packagename} {`#2' has not been assigned a content}
- {`#2' has not been assigned a content.\MessageBreak
- Solution: Define `#2'\MessageBreak
- Try: \@backslashchar #1notecontent{#2}{<content>}}\relax
- \fi
- \ifsep@opt@warn
- \PackageWarning {\sep@packagename} {`#2' has not been assigned a content}\relax
- \fi}
+ {\sep@warning@undefined{#1}{#2}}
{\@nameuse{sepfootnotes@text@#1@#2}}}
+%}%
+%{% \sep@namedef <prefix> <key> <content>
+
\newcommand\sep@namedef [3]
-{\@ifundefined{sepfootnotes@text@#1@#2}
+{\ifsep@opt@after\sep@namereplace{#1}{#2}{#3}\else
+ \@ifundefined{sepfootnotes@text@#1@#2}
{\ifsep@opt@global\global\fi\@namedef{sepfootnotes@text@#1@#2}{#3}}
- {\ifsep@opt@error
- \PackageError {\sep@packagename} {`#2' is already in use}
- {`#2' is already in use.\MessageBreak
- Solution: Use another key.\MessageBreak
- Try: \@backslashchar #1notecontent{<key>}{<content>}}\relax
- \fi
- \ifsep@opt@warn
- \PackageWarning {\sep@packagename} {`#2' is already in use}
- \fi}}
+ {\sep@warning@already{#1}{#2}}\fi}
+
+%}%
+%{% \sep@namereplace <prefix> <key> <content>
+
+\newcommand\sep@namereplace [3]
+{%
+ \ifsep@opt@after
+ \global\@namedef{sepfootnotes@text@#1@#2}{#3}%
+ \write\@auxout{\expandafter\unexpanded\expandafter{\global\@namedef {sepfootnotes@text@#1@#2}{#3}}}%
+ \else
+ \ifsep@opt@global\global\fi\@namedef{sepfootnotes@text@#1@#2}{#3}%
+ \fi
+}
+
+%}%
+
+%{% \sep@warning@undefined <prefix> <key>
+
+\newcommand \sep@warning@undefined [2]
+{\ifsep@opt@error
+ \PackageError
+ {\sep@packagename}
+ {`#2' has not been assigned a content}
+ {`#2' has not been assigned a content.\MessageBreak
+ Solution: Define `#2'\MessageBreak
+ Try: \@backslashchar #1notecontent{#2}{<content>}}%
+ \fi
+ \ifsep@opt@warn
+ \PackageWarning
+ {\sep@packagename}
+ {`#2' has not been assigned a content}%
+ \fi
+}
-\newcommand\sep@namereplace [3] {\ifsep@opt@global\global\fi\@namedef{sepfootnotes@text@#1@#2}{#3}}
+%}%
+%{% \sep@warning@already <prefix> <key>
+
+\newcommand \sep@warning@already [2]
+{\ifsep@opt@error
+ \PackageError
+ {\sep@packagename}
+ {`#2' is already in use}
+ {`#2' is already in use.\MessageBreak
+ Solution: Use another key.\MessageBreak
+ Try: \@backslashchar #1notecontent{<key>}{<content>}}%
+ \fi
+ \ifsep@opt@warn
+ \PackageWarning
+ {\sep@packagename}
+ {`#2' is already in use}%
+ \fi
+}
-% ---------------------------------- marks ------------------------------------
+%}%
+
+%}%
+%{% marks
\newcommand\sep@markset [1] {\protected@xdef\@thefnmark{\csname the#1mark\endcsname}}
\newcommand\sep@mark [2] {\stepcounter {#1note}\sep@markset {#1}\@footnotemark}
-% ---------------------- cross-references and counters ------------------------
+%}%
+%{% cross-references and counters
\newcommand\sep@refsetcounter [2] {\setcounter{#1}{#2}\protected@edef\@currentlabel{\csname p@#1\endcsname\csname the#1\endcsname}}
\newcommand\sep@refstepcounter [1] {\stepcounter {#1}\protected@edef\@currentlabel{\csname p@#1\endcsname\csname the#1\endcsname}}
-% ********************************* Default ***********************************
+%}%
+
+%}%
+%{% default
-% ------------------------- footnotes: \sepfootnote ---------------------------
+%% The default \sepfootnote apparatus relies on \footnote
-%% Default: The default \sepfootnote family relies on \footnote
\newfootnotes{sepfoot}
+%}%
+
\endinput
%%
%% End of file `sepfootnotes.sty'.
diff --git a/macros/latex/contrib/sepfootnotes/sepfootnotes.tex b/macros/latex/contrib/sepfootnotes/sepfootnotes.tex
index 4000f00fad..f73370349a 100644
--- a/macros/latex/contrib/sepfootnotes/sepfootnotes.tex
+++ b/macros/latex/contrib/sepfootnotes/sepfootnotes.tex
@@ -1,4 +1,4 @@
-% Copyright (C) 2013-2016 Eduardo C. Lourenço de Lima
+% Copyright (C) 2013-2024 Eduardo C. Lourenço de Lima
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either
@@ -44,11 +44,11 @@
{\begin{center}\begin{minipage}[t]{0.5\linewidth}}
{\end{minipage}\end{center}}
\newcommand\TODO{\texttt{Todo:}}
-\newcommand\fileversion{0.3c}
-\newcommand\filedate{July 18, 2016}
+\newcommand\fileversion{0.3d}
+\newcommand\filedate{July 5, 2024}
\begin{document}
\title{The \textsf{\color{myblue} sepfootnotes} package,\thanks{This document corresponds to \textsf{sepfootnotes}~\fileversion, dated~\filedate.
-I am grateful to Michael Sellhoff, Sam Foster, Mats, and David Carlisle for their valuable feedback on \texttt{sepfootnotes} and to Dan Luecking for the basic idea implemented in this package.}\\{or a footnote to Plato}}
+I am grateful to Michael Sellhoff, Sam Foster, Mats, David Carlisle, and schtandard for their valuable feedback on \texttt{sepfootnotes} and to Dan Luecking for the basic idea implemented in this package.}\\{or a footnote to Plato}}
\author{Eduardo C. Louren\c{c}o de Lima \\ \texttt{elourenco@phi.pro.br}}
\maketitle
@@ -59,9 +59,9 @@ I am grateful to Michael Sellhoff, Sam Foster, Mats, and David Carlisle for thei
Standard |\footnote| and |\endnote| both take a note as a mandatory argument. Because notes have to be embedded in the paragraph to which they refer, sentences are often split up into two\footnote {This is precisely what this footnote does to the first paragraph of this document. There are more than thirty words between `two' and `or more' in the code of an otherwise short paragraph.} or more parts. Consequently, footnotes and endnotes may disrupt the flow of reading and editing {\LaTeX} prose.\footnote {In a posting to \texttt{texhax.tug.org} in April 2010, someone complained that using footnotes ``tends to disrupt the flow of the document on the screen and makes editing the text itself harder'', and asked about the possibility of ``putting all of the footnotes in a separate file''~\cite{Nicholas Cole}. Another user, back in 2004, remarked that the ``only thing I missed about word processors was the ability to keep footnote text at the bottom of the page, or in a separate window. I often have extensive footnotes, and don't want them cluttering up my main body text when I'm composing''~\cite{Luecking}.} This can be an issue for those who make extensive use of notes, such as philosophers and people from the humanities in general.
- The |sepfootnotes| package gets around this inconvenience by separating note input from usage. That is, it provides a command to define what a particular note says, and another command to insert that note later on in the document.
+ The |sepfootnotes| package gets around this inconvenience by separating note input from usage. That is, it provides a command to define what a particular note says, and another command to insert that note in the document.
- Note definitions may be grouped together---in no particular order---in the preamble, at the beginning of chapters or sections, right before a paragraph, or even in a \emph{separate file}. In that way, the main body is less cluttered.
+ Note definitions may be grouped together---in no particular order---in the preamble, at the beginning of chapters or sections, in a separate file, or even right after a paragraph. In that way, the main body is less cluttered.
You may use |sepfootnotes| and standard |\footnote| simultaneously; the same goes for |\footcite| from |biblatex|.
@@ -273,10 +273,10 @@ Default:\footnote{Adapted from the \texttt{endnotes} package.}
\section {Package options}
\begin{list}{}{}
-\item[|warn|] Print warning messages. (Default.)
+\item[|after|] (experimental) Allow |\sepfootnotecontent| after |\sepfootnote|. Must compile twice. Implies |global|. See below.
+\item[|global|] Notes defined within environments and groups take global scope and become available throughout, as if they were defined in the preamble.
\item[|error|] Print warning messages, halt, and wait for user input.
\item[|quiet|] Suppress warning and error messages.
-\item[|global|] Notes defined within environments and groups take global scope and become available throughout, as if they were defined in the preamble.
\end{list}
\section{Examples}
diff --git a/macros/latex/contrib/sillypage/sillypage-example.pdf b/macros/latex/contrib/sillypage/sillypage-example.pdf
index 3d8180932b..5fa9dd3048 100644
--- a/macros/latex/contrib/sillypage/sillypage-example.pdf
+++ b/macros/latex/contrib/sillypage/sillypage-example.pdf
Binary files differ
diff --git a/macros/latex/contrib/sillypage/sillypage.dtx b/macros/latex/contrib/sillypage/sillypage.dtx
index 86982db30d..922d8b6a66 100644
--- a/macros/latex/contrib/sillypage/sillypage.dtx
+++ b/macros/latex/contrib/sillypage/sillypage.dtx
@@ -19,8 +19,8 @@
% by Phelype Oleinik, Paulo Cereda, samcarter and Ulrike Fischer.
%
%<*package>
-\def\sillypageDate{2023-03-04}
-\def\sillypageVersion{1.6}
+\def\sillypageDate{2024-07-23}
+\def\sillypageVersion{1.7}
%</package>
%<*driver>
\documentclass[a4paper,full]{l3doc}
@@ -261,9 +261,13 @@
\newcommand*\@silly { \@@_step:n }
\cs_new:Npn \@@_step:n #1
{
+ \UseTaggingSocket{@@/begin}{#1}
+ \SuspendTagging{@@}
\@@_step_aux:eN
{ \int_eval:n { \int_mod:nn { #1-1 } { \silly@steps } +1 } }
\c_false_bool
+ \ResumeTagging{@@}
+ \UseTaggingSocket{@@/end}
}
% \end{macrocode}
% \end{macro}
@@ -280,8 +284,12 @@
\newcommand*\@sillynumeral { \@@_numeral:n }
\cs_new:Npn \@@_numeral:n #1
{
+ \UseTaggingSocket{@@/begin}{#1}
+ \SuspendTagging{@@}
\exp_args:Ne \str_map_function:nN
{ \int_to_base:nn {#1} { 12 } } \@@_numeral_aux:n
+ \ResumeTagging{@@}
+ \UseTaggingSocket{@@/end}
}
\cs_new:Npn \@@_numeral_aux:n #1
{ \@@_step_aux:eN { "\char_uppercase:N #1+1 } \c_true_bool }
@@ -289,6 +297,28 @@
% \end{macro}
% \end{macro}
% \end{macro}
+%
+% \subsection{Tagging Support}
+
+% \begin{macrocode}
+\NewSocket{tagsupport/@@/begin}{1}
+\NewSocket{tagsupport/@@/end}{0}
+\NewSocketPlug{tagsupport/@@/begin}{tagged}
+ {
+ \mode_leave_vertical:
+ \tag_mc_end_push:
+ \tag_struct_begin:n {tag=Span}
+ \tag_mc_begin:n {actualtext=#1}
+ }
+\NewSocketPlug{tagsupport/@@/end}{tagged}
+ {
+ \tag_mc_end:
+ \tag_struct_end:
+ \tag_mc_begin_pop:n{}
+ }
+\AssignSocketPlug{tagsupport/@@/begin}{tagged}
+\AssignSocketPlug{tagsupport/@@/end}{tagged}
+% \end{macrocode}
%
% \subsection{Internals}
%
diff --git a/macros/latex/contrib/sillypage/sillypage.pdf b/macros/latex/contrib/sillypage/sillypage.pdf
index 3efa13e7d7..60305403ac 100644
--- a/macros/latex/contrib/sillypage/sillypage.pdf
+++ b/macros/latex/contrib/sillypage/sillypage.pdf
Binary files differ
diff --git a/macros/latex/contrib/siunitx/CHANGELOG.md b/macros/latex/contrib/siunitx/CHANGELOG.md
index 4dad256c37..94d43ec98a 100644
--- a/macros/latex/contrib/siunitx/CHANGELOG.md
+++ b/macros/latex/contrib/siunitx/CHANGELOG.md
@@ -7,10 +7,36 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
## [Unreleased]
+## [v3.3.21] - 2024-08-20
+
+### Fixed
+- Conversion of negative angles to arc notation (see issue
+ [\#743](https://github.com/josephwright/siunitx/issues/743))
+- Rounding of angles in arc mode (see issue
+ [\#744](https://github.com/josephwright/siunitx/issues/744))
+- Polar form of negative real values (see issue
+ [\#745](https://github.com/josephwright/siunitx/issues/745))
+
+## [v3.3.20] - 2024-08-01
+
+### Fixed
+- Avoid rounding up when residual is exactly zero (see issue
+ [\#742](https://github.com/josephwright/siunitx/issues/742))
+
+## [v3.3.19] - 2024-06-24
+
+### Fixed
+- Add \textonly@unskip` to special tokens to cell content (see issue [\#737](https://github.com/josephwright/siunitx/issues/737))
+
+## [v3.3.18] - 2024-06-14
+
+### Fixed
+- Use `fill` glue for aligning comparators (see issue [\#733](https://github.com/josephwright/siunitx/issues/733))
+
## [v3.3.17] - 2024-05-06
### Fixed
-- Correct treatment of end-iof-line spaces when allowing breaks (see issue
+- Correct treatment of end-of-line spaces when allowing breaks (see issue
[\#730](https://github.com/josephwright/siunitx/issues/730))
## [v3.3.16] - 2024-04-24
@@ -1784,7 +1810,7 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
- Allow `\highlight` in units
- Option `table-column-width` (issue [\#105](https://github.com/josephwright/siunitx/issues/105))
- Option `bracket-negative-numbers` (issue [\#5](https://github.com/josephwright/siunitx/issues/5))
-- Option `table-align-comparators` (issue [\#86](https://github.com/josephwright/siunitx/issues/86))
+- Option `table-align-comparator` (issue [\#86](https://github.com/josephwright/siunitx/issues/86))
- Option `minimum-integer-digits` (issue [\#112](https://github.com/josephwright/siunitx/issues/112))
- Option to print exponent marker literally (issue [\#113](https://github.com/josephwright/siunitx/issues/113))
- Support for engineering-style number output (issue [\#114](https://github.com/josephwright/siunitx/issues/114))
@@ -2110,7 +2136,11 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
### Added
- First public testing release (as `si`)
-[Unreleased]: https://github.com/josephwright/siunitx/compare/v3.3.17...HEAD
+[Unreleased]: https://github.com/josephwright/siunitx/compare/v3.3.21...HEAD
+[v3.3.21]: https://github.com/josephwright/siunitx/compare/v3.3.20...v3.3.21
+[v3.3.20]: https://github.com/josephwright/siunitx/compare/v3.3.19...v3.3.20
+[v3.3.19]: https://github.com/josephwright/siunitx/compare/v3.3.18...v3.3.19
+[v3.3.18]: https://github.com/josephwright/siunitx/compare/v3.3.17...v3.3.18
[v3.3.17]: https://github.com/josephwright/siunitx/compare/v3.3.16...v3.3.17
[v3.3.16]: https://github.com/josephwright/siunitx/compare/v3.3.15...v3.3.16
[v3.3.15]: https://github.com/josephwright/siunitx/compare/v3.3.14...v3.3.15
diff --git a/macros/latex/contrib/siunitx/siunitx-angle.dtx b/macros/latex/contrib/siunitx/siunitx-angle.dtx
index ac933f4636..91d67690f0 100644
--- a/macros/latex/contrib/siunitx/siunitx-angle.dtx
+++ b/macros/latex/contrib/siunitx/siunitx-angle.dtx
@@ -303,18 +303,23 @@
}
}
\cs_generate_variant:Nn \siunitx_angle:nnn { eee , xxx }
+% \end{macrocode}
+% Here, the need for absolute values is to handle conversion of negative
+% values: the result should be exactly one sign in the integer part.
+% \begin{macrocode}
\cs_new_protected:Npn \@@_arc_convert:n #1
{
\siunitx_angle:eee
{ \fp_eval:n { trunc(#1,0) } }
- { \fp_eval:n { trunc((#1 - trunc(#1,0)) * 60,0) } }
+ { \fp_eval:n { abs(trunc((#1 - trunc(#1,0)) * 60,0)) } }
{
\fp_eval:n
{
- (
- (#1 - trunc(#1,0)) * 60
- - trunc((#1 - trunc(#1,0)) * 60,0)
- )
+ abs
+ (
+ (#1 - trunc(#1,0)) * 60
+ - trunc((#1 - trunc(#1,0)) * 60,0)
+ )
* 60
}
}
@@ -325,6 +330,13 @@
% \end{macro}
% \end{macro}
%
+% \begin{variable}{\c_@@_parts_tl}
+% For mappings.
+% \begin{macrocode}
+\clist_const:Nn \c_@@_parts_tl { degrees , minutes , seconds }
+% \end{macrocode}
+% \end{variable}
+%
% \begin{variable}{\l_@@_degrees_tl, \l_@@_minutes_tl, \l_@@_seconds_tl}
% Space for formatting parsed numbers.
% \begin{macrocode}
@@ -341,7 +353,14 @@
% \end{macrocode}
% \end{variable}
%
-% \begin{macro}{\@@_suppress_exp_uncert:, \@@_suppress_comp_sign:}
+% \begin{variable}{\l_@@_signed_bool}
+% To check that only one sign is seen in arc mode.
+% \begin{macrocode}
+\tl_new:N \l_@@_signed_bool
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{macro}{\@@_suppress_exp_uncert:, \@@_suppress_comp:}
% Pre-compilation of keys to suppress uncertainties and exponents,
% and
% \begin{macrocode}
@@ -358,60 +377,45 @@
{ \exp_not:V \l_@@_tmp_tl }
\keys_precompile:nnN
{ siunitx }
- { input-comparators = , input-signs = }
+ { input-comparators = }
\l_@@_tmp_tl
-\cs_set_protected:Npx \@@_suppress_comp_sign:
+\cs_set_protected:Npx \@@_suppress_comp:
{ \exp_not:V \l_@@_tmp_tl }
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_arc_sign:nnn}
% \begin{macro}{\@@_arc_sign:nn}
+% \begin{macro}{\@@_arc_sign_auxi:, \@@_arc_sign_auxii:}
% \begin{macro}{\@@_extract_sign:nnnnnnnn}
% \begin{macro}[EXP]{\@@_sign:nnnnnnn}
% To get the sign in the right place whilst dealing with zero filling
% means doing some shuffling. That means doing processing of each number
-% manually.
+% manually. For degrees, auto-conversion can give |-0|, which needs to be
+% picked up early to set the sign.
% \begin{macrocode}
\cs_new_protected:Npn \@@_arc_sign:nnn #1#2#3
{
\group_begin:
\@@_suppress_exp_uncert:
\tl_clear:N \l_@@_sign_tl
- \@@_arc_sign:nn {#1} { degrees }
+ \bool_set_false:N \l_@@_signed_bool
+ \str_if_eq:nnTF {#1} { -0 }
+ {
+ \@@_arc_sign:nn { } { degrees }
+ \@@_suppress_comp:
+ \tl_set:Nn \l_@@_sign_tl { - }
+ \bool_set_true:N \l_@@_signed_bool
+ }
+ { \@@_arc_sign:nn {#1} { degrees } }
\@@_arc_sign:nn {#2} { minutes }
\@@_arc_sign:nn {#3} { seconds }
\tl_if_empty:NF \l_@@_sign_tl
{
- \clist_map_inline:nn { degrees , minutes , seconds }
- {
- \tl_if_empty:cF { l_@@_ ##1 _tl }
- {
- \tl_set:cx { l_@@_ ##1 _tl }
- {
- { }
- { \exp_not:V \l_@@_sign_tl }
- \exp_after:wN \exp_after:wN \exp_after:wN
- \@@_sign:nnnnnnn
- \cs:w l_@@_ ##1 _tl \cs_end:
- }
- \clist_map_break:
- }
- }
- }
- \clist_map_inline:nn { degrees , minutes , seconds }
- {
- \tl_if_empty:cF { l_@@_ ##1 _tl }
- {
- \siunitx_number_process:cc
- { l_@@_ ##1 _tl } { l_@@_ ##1 _tl }
- \tl_set:cx { l_@@_ ##1 _tl }
- {
- \siunitx_number_output:cN
- { l_@@_ ##1 _tl } \q_nil
- }
- }
+ \clist_map_function:NN \c_@@_parts_tl
+ \@@_arc_sign_auxi:n
}
+ \clist_map_function:NN \c_@@_parts_tl \@@_arc_sign_auxii:n
\@@_arc_print:VVV
\l_@@_degrees_tl
\l_@@_minutes_tl
@@ -432,6 +436,40 @@
{
\siunitx_number_parse:nN {#1} \l_@@_tmp_tl
\exp_after:wN \@@_extract_sign:nnnnnnnn \l_@@_tmp_tl {#2}
+ \bool_set_true:N \l_@@_signed_bool
+ }
+ }
+\cs_new_protected:Npn \@@_arc_sign_auxi:n #1
+ {
+ \tl_if_empty:cF { l_@@_ #1 _tl }
+ {
+ \tl_set:cx { l_@@_ #1 _tl }
+ {
+ { }
+ { \exp_not:V \l_@@_sign_tl }
+ \exp_after:wN \exp_after:wN \exp_after:wN
+ \@@_sign:nnnnnnn
+ \cs:w l_@@_ #1 _tl \cs_end:
+ }
+ \clist_map_break:
+ }
+ }
+\cs_new_protected:Npn \@@_arc_sign_auxii:n #1
+ {
+ \tl_if_empty:cF { l_@@_ #1 _tl }
+ {
+ \bool_lazy_and:nnF
+ { \l_@@_force_arc_bool }
+ { ! \str_if_eq_p:nn {#1} { seconds } }
+ {
+ \siunitx_number_process:cc
+ { l_@@_ #1 _tl } { l_@@_ #1 _tl }
+ }
+ \tl_set:cx { l_@@_ #1 _tl }
+ {
+ \siunitx_number_output:cN
+ { l_@@_ #1 _tl } \q_nil
+ }
}
}
\cs_new_protected:Npn \@@_extract_sign:nnnnnnnn #1#2#3#4#5#6#7#8
@@ -439,10 +477,12 @@
\tl_if_blank:nTF {#2}
{ \tl_set_eq:cN { l_@@_ #8 _tl } \l_@@_tmp_tl }
{
+ \bool_if:NTF \l_@@_signed_bool
+ { \msg_error:nnn { siunitx } { arc-multi-sign } }
+ { \tl_set:Nn \l_@@_sign_tl {#2} }
\tl_set:cn { l_@@_ #8 _tl }
{ {#1} { } {#3} {#4} {#5} {#6} {#7} }
- \tl_set:Nn \l_@@_sign_tl {#2}
- \@@_suppress_comp_sign:
+ \@@_suppress_comp:
}
}
\cs_new:Npn \@@_sign:nnnnnnn #1#2#3#4#5#6#7
@@ -452,6 +492,7 @@
% \end{macro}
% \end{macro}
% \end{macro}
+% \end{macro}
%
% \begin{variable}{\l_@@_marker_box, \l_@@_unit_box}
% For \enquote{astronomy style} angles.
@@ -602,6 +643,15 @@
% \end{macro}
%
% \begin{macrocode}
+\msg_new:nnnn { siunitx } { arc-multi-sign }
+ { Multiple~signs~given~for~arc~angle! }
+ {
+ An~angle~given~as~an~arc~should~have~at~most~one~sign:~
+ only~the~first~sign~will~be~used.
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
\keys_set:nn { siunitx }
{
angle-mode = input ,
diff --git a/macros/latex/contrib/siunitx/siunitx-code.pdf b/macros/latex/contrib/siunitx/siunitx-code.pdf
index 0e89bc3e22..bef1e6afe6 100644
--- a/macros/latex/contrib/siunitx/siunitx-code.pdf
+++ b/macros/latex/contrib/siunitx/siunitx-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/siunitx/siunitx-complex.dtx b/macros/latex/contrib/siunitx/siunitx-complex.dtx
index 2ff86391c2..200fd15f15 100644
--- a/macros/latex/contrib/siunitx/siunitx-complex.dtx
+++ b/macros/latex/contrib/siunitx/siunitx-complex.dtx
@@ -1143,11 +1143,12 @@
% \begin{macro}[EXP]{\@@_convert_polar_auxiii:nnw}
% \begin{macro}[EXP]{\@@_convert_polar_auxiv:nnw}
% \begin{macro}[EXP]{\@@_convert_polar_auxv:nnw}
-% \begin{macro}[EXP]{\@@_convert_polar_auxvi:nnn}
+% \begin{macro}[EXP]{\@@_convert_polar_auxvi:nnn, \@@_convert_polar_auxvi:enn}
+% \begin{macro}[EXP]{\@@_convert_polar_auxvii:nnn}
% \begin{macro}[EXP]
-% {\@@_convert_polar_auxvii:nnn, \@@_convert_polar_auxvii:eee}
+% {\@@_convert_polar_auxviii:nnn, \@@_convert_polar_auxviii:eee}
% \begin{macro}[EXP]
-% {\@@_convert_polar_auxviii:nn, \@@_convert_polar_auxviii:ee}
+% {\@@_convert_polar_auxix:nn, \@@_convert_polar_auxix:ee}
% A simplified parser for complex numbers which works by expansion,
% then converts to polar form.
% \begin{macrocode}
@@ -1160,10 +1161,10 @@
\bool_lazy_or:nnTF
{ \str_if_eq_p:nn {#2} { i } }
{ \str_if_eq_p:nn {#2#3} { +i } }
- { \@@_convert_polar_auxvi:nnn { } { 1 } {#1} }
+ { \@@_convert_polar_auxvii:nnn { } { 1 } {#1} }
{
\str_if_eq:nnTF {#2#3} { -i }
- { \@@_convert_polar_auxvi:nnn { } { -1 } {#1} }
+ { \@@_convert_polar_auxvii:nnn { } { -1 } {#1} }
{ \@@_convert_polar_auxiii:nnw {#1} {#2} #3 + + \q_stop }
}
}
@@ -1173,7 +1174,7 @@
{ \@@_convert_polar_auxiv:nnw {#1} {#2} #3 - - \q_stop }
{
\str_if_eq:nnTF {#4} { i }
- { \@@_convert_polar_auxvi:nnn {#2#3} { 1 } {#1} }
+ { \@@_convert_polar_auxvii:nnn {#2#3} { 1 } {#1} }
{ \@@_convert_polar_auxv:nnw {#2#3} {#1} #4 i \q_nil i \q_stop }
}
}
@@ -1183,35 +1184,48 @@
{ \@@_convert_polar_auxv:nnw { } {#1} #2#3 i \q_nil i \q_stop }
{
\str_if_eq:nnTF {#4} { i }
- { \@@_convert_polar_auxvi:nnn { } { -1 } {#1} }
+ { \@@_convert_polar_auxvii:nnn { } { -1 } {#1} }
{ \@@_convert_polar_auxv:nnw {#2#3} {#1} -#4 i \q_nil i \q_stop }
}
}
+% \end{macrocode}
+% Negative real values are special-cased here for efficiency.
+% \begin{macrocode}
\cs_new:Npn \@@_convert_polar_auxv:nnw #1#2#3 i #4 i #5 \q_stop
{
\quark_if_nil:nTF {#4}
- { { #3 \tl_if_blank:nF {#2} { e#2 } } { 0 } }
- { \@@_convert_polar_auxvi:nnn {#1} {#3} {#2} }
+ {
+ \tl_if_head_eq_meaning:nNTF {#3} -
+ { \@@_convert_polar_auxvi:enn { \use_none:n #3 } { 180 } }
+ { \@@_convert_polar_auxvi:nnn {#3} { 0 } }
+ {#2}
+ }
+ { \@@_convert_polar_auxvii:nnn {#1} {#3} {#2} }
}
\cs_new:Npn \@@_convert_polar_auxvi:nnn #1#2#3
{
- \@@_convert_polar_auxvii:eee
+ { #1 \tl_if_blank:nF {#3} { e#3 } } {#2}
+ }
+\cs_generate_variant:Nn \@@_convert_polar_auxvi:nnn { e }
+\cs_new:Npn \@@_convert_polar_auxvii:nnn #1#2#3
+ {
+ \@@_convert_polar_auxviii:eee
{ \tl_if_blank:nTF {#1} { 0 } {#1} }
{ \tl_if_blank:nTF {#2} { 0 } {#2} }
{ \tl_if_blank:nF {#3} { e#3 } }
}
-\cs_new:Npn \@@_convert_polar_auxvii:nnn #1#2#3
+\cs_new:Npn \@@_convert_polar_auxviii:nnn #1#2#3
{
- \@@_format_polar_auxviii:ee
+ \@@_format_polar_auxix:ee
{ \fp_eval:n { sqrt ( (#1#3)^2 + (#2#3)^2 ) } }
{
\fp_eval:n
{ atan \bool_if:NT \l_@@_polar_degree_bool { d } (#2 , #1) }
}
}
-\cs_generate_variant:Nn \@@_convert_polar_auxvii:nnn { eee }
-\cs_new:Npn \@@_format_polar_auxviii:nn #1#2 { {#1} {#2} }
-\cs_generate_variant:Nn \@@_format_polar_auxviii:nn { ee }
+\cs_generate_variant:Nn \@@_convert_polar_auxviii:nnn { eee }
+\cs_new:Npn \@@_format_polar_auxix:nn #1#2 { {#1} {#2} }
+\cs_generate_variant:Nn \@@_format_polar_auxix:nn { ee }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -1222,6 +1236,7 @@
% \end{macro}
% \end{macro}
% \end{macro}
+% \end{macro}
%
% \subsection{Messages}
%
diff --git a/macros/latex/contrib/siunitx/siunitx-number.dtx b/macros/latex/contrib/siunitx/siunitx-number.dtx
index 2b87514375..4a7e2eb705 100644
--- a/macros/latex/contrib/siunitx/siunitx-number.dtx
+++ b/macros/latex/contrib/siunitx/siunitx-number.dtx
@@ -2980,7 +2980,13 @@
\str_case:nnF {#1}
{
{ down } { \use_i:nn }
- { up } { \use_ii:nn }
+ { up }
+ {
+ \str_if_eq:eeTF
+ {#2} { \prg_replicate:nn { \tl_count:n {#2} } { 0 } }
+ { \use_i:nn }
+ { \use_ii:nn }
+ }
}
{
\bool_lazy_or:nnTF
diff --git a/macros/latex/contrib/siunitx/siunitx-table.dtx b/macros/latex/contrib/siunitx/siunitx-table.dtx
index 5de8f0b603..4dd14ff826 100644
--- a/macros/latex/contrib/siunitx/siunitx-table.dtx
+++ b/macros/latex/contrib/siunitx/siunitx-table.dtx
@@ -297,13 +297,10 @@
% Collecting a tabular cell means doing a token-by-token collection.
% In previous versions of \pkg{siunitx} that was done along with picking
% out the numerical part, but the code flow ends up very tricky. Here,
-% therefore, we just collect up the unchanged tokens first. The definition of
-% \cs{cr} is used to allow collection of any tokens
-% inserted after the main content when dealing with the last cell of a row:
-% the \enquote{group} around it is needed to avoid issues with the underlying
-% |\halign|. (The approach is based on that in \pkg{collcell}.) Whilst the
-% group formed by a cell will normally tidy up |\cr|, we add an extra one as
-% the collected material could be a tabular in itself. We use an auxiliary to
+% therefore, we just collect up the unchanged tokens first. Whilst each
+% cell forms a group, as we require definitions to say local
+% to the collections code, an additional group is required.
+% We use an auxiliary to
% fish out the |\ignorespaces| from the template: that has to go to avoid
% issues with the peek-ahead code (everything before the |#| needs to be
% read \emph{before} the Appendix~D trick gets applied). Some packages
@@ -314,13 +311,6 @@
{
\group_begin:
\tl_clear:N \l_@@_collect_tl
- \if_false: { \fi:
- \cs_set_protected:Npn \cr
- {
- \@@_collect_loop:
- \tex_cr:D
- }
- \if_false: } \fi:
\@@_collect_begin:w
}
\cs_new_protected:Npn \@@_collect_begin:w #1 \ignorespaces
@@ -364,9 +354,10 @@
\@@_collect_search:NnF #1
{
\unskip { \@@_collect_loop: }
- \end { \tabularnewline \end }
+ \textonly@unskip { \@@_collect_loop: }
+ \end { \@@_collect_pre_cr: \tabularnewline \end }
\relax { \@@_collect_relax:N #1 }
- \tabularnewline { \tabularnewline }
+ \tabularnewline { \@@_collect_pre_cr: \tabularnewline }
\siunitx_cell_end: { \siunitx_cell_end: }
}
{ \@@_collect_token_aux:N #1 }
@@ -393,9 +384,9 @@
\@maybe@unskip { \@@_collect_loop: }
\tab@setcr { \@@_collect_loop: }
\unskip { \@@_collect_loop: }
- \end { \tabularnewline \end }
+ \end { \@@_collect_pre_cr: \tabularnewline \end }
\relax { \@@_collect_relax:N #1 }
- \tabularnewline { \tabularnewline }
+ \tabularnewline { \@@_collect_pre_cr: \tabularnewline }
\siunitx_cell_end: { \siunitx_cell_end: }
}
{ \@@_collect_token_aux:N #1 }
@@ -424,6 +415,30 @@
% \end{macro}
% \end{macro}
%
+% \begin{macro}{\@@_collect_pre_cr:}
+% The definition of \cs{cr} is used to allow collection of any tokens
+% from the \tn{halign} template after |#| when we are in the last cell of
+% the row. (The approach is based on that in \pkg{collcell}.) Note that
+% \TeX{} inserts these tokens when it sees the \tn{cr} primitive, so
+% there is no expansion to consider. Whilst in most cases the group formed
+% by each cell will tidy up, nested tabulars (for example in a header row)
+% will break if \tn{cr} is redefined too widely. Thus we use a targetted
+% approach: only apply when needed, and use the additional group inside the
+% cell to keep control.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_collect_pre_cr:
+ {
+ \if_false: { \fi:
+ \cs_set_protected:Npn \cr
+ {
+ \@@_collect_loop:
+ \tex_cr:D
+ }
+ \if_false: } \fi:
+ }
+% \end{macrocode}
+% \end{macro}
+%
% \subsection{Separating collected material}
%
% The input needs to be divided into numerical tokens and those which appear
@@ -1423,7 +1438,7 @@
}
{
\hbox_unpack:N \l_@@_integer_box
- \@@_fil:
+ \@@_fill:
\hbox_unpack:N \l_@@_tmp_box
}
}
diff --git a/macros/latex/contrib/siunitx/siunitx.dtx b/macros/latex/contrib/siunitx/siunitx.dtx
index 00af01ae8a..eda108df6d 100644
--- a/macros/latex/contrib/siunitx/siunitx.dtx
+++ b/macros/latex/contrib/siunitx/siunitx.dtx
@@ -59,6 +59,9 @@
%
% \begin{documentation}
%
+% ^^A API documentation is given on a per-module basis:
+% ^^A see the siunitx-<module>.dtx files
+%
% \end{documentation}
%
% \begin{implementation}
@@ -121,7 +124,7 @@
%
% Identify the package and give the over all version information.
% \begin{macrocode}
-\ProvidesExplPackage {siunitx} {2024-05-06} {3.3.17}
+\ProvidesExplPackage {siunitx} {2024-08-20} {3.3.21}
{A comprehensive (SI) units package}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/siunitx/siunitx.pdf b/macros/latex/contrib/siunitx/siunitx.pdf
index 5dea63dd66..3454497b6f 100644
--- a/macros/latex/contrib/siunitx/siunitx.pdf
+++ b/macros/latex/contrib/siunitx/siunitx.pdf
Binary files differ
diff --git a/macros/latex/contrib/siunitx/siunitx.tex b/macros/latex/contrib/siunitx/siunitx.tex
index d004e8f9d7..90189978b1 100644
--- a/macros/latex/contrib/siunitx/siunitx.tex
+++ b/macros/latex/contrib/siunitx/siunitx.tex
@@ -414,7 +414,7 @@ mode.
\end{LaTeXdemo}
The second operation mode for the \cs{unit} macro is an \enquote{interpreted}
-system, Here, each unit, \acro{SI} multiple prefix and power is given a macro
+system. Here each unit, \acro{SI} multiple prefix and power is given a macro
name. These are entered in a method very similar to the reading of the unit
name in English.
\begin{LaTeXdemo}
@@ -1252,7 +1252,7 @@ font variant which does not feature them.
\DescribeOption{text-subscript-command}
\DescribeOption{text-superscript-command}
In most cases, the commands \cs{textsubscript} and \cs{textsuperscript} are
-appropriagte for creating sub- and superscript material in text mode. However,
+appropriate for creating sub- and superscript material in text mode. However,
when the \pkg{realscripts} package is loaded, it is possible that the output is
not as desired. These two commands are therefore available to allow tuning of
the results. They can also be used for non-standard effects, for example as
@@ -1911,7 +1911,7 @@ by the \opt{bracket-ambiguous-numbers} switch. This option only applies to pure
numbers: when formatting quantities, the need for brackets also depends on the
placement of units, so is controlled by \opt{separate-uncertainty-units}.
\begin{LaTeXdemo}
- \sisetup{separate-uncertainty}
+ \sisetup{uncertainty-mode = separate}
\num{1.2(3)e4} \\
\num[bracket-ambiguous-numbers = false]{1.2(3)e4}
\end{LaTeXdemo}
@@ -2760,7 +2760,7 @@ a single unit symbol. Alternative options are \opt{repeat} (print the unit for
each part of the number) and \opt{single} (print only one unit symbol:
mathematically incorrect).
\begin{LaTeXdemo}
- \sisetup{separate-uncertainty}
+ \sisetup{uncertainty-mode = separate}
\qty{12.3(4)}{\kilo\gram} \\
\qty[separate-uncertainty-units = bracket]{12.3(4)}{\kilo\gram} \\
\qty[separate-uncertainty-units = repeat]{12.3(4)}{\kilo\gram} \\
@@ -2887,7 +2887,7 @@ given in Table~\ref{tab:S:format}.
S[table-format = 2.2]
S[table-format = 2.2, table-number-alignment = right]
S[table-format = 2.2(1)]
- S[table-format = 2.2(1), separate-uncertainty]
+ S[table-format = 2.2(1), uncertainty-mode = separate]
S[table-format = +2.2]
S[table-format = 2.2e1]
@{}}
@@ -2941,6 +2941,7 @@ provide the necessary gap while maintaining alignment (Table~\ref{tab:S:ends}).
\DescribeOption{table-align-exponent}
\DescribeOption{table-align-uncertainty}
+\DescribeOption{table-align-comparator}
When printing exponents in tables, there is a choice of aligning the exponent
parts or having these close up to the mantissa. This is controlled by the
\opt{table-align-exponent} option (Table~\ref{tab:align:exp}). Similarly,
@@ -2969,7 +2970,7 @@ comparator with the \opt{table-align-comparator} option
\caption{The \opt{table-align-uncertainty} option.%
\label{tab:align:uncert}}
\sisetup{
- separate-uncertainty,
+ uncertainty-mode = separate,
table-format = 1.3(1),
}
\begin{tabular}{@{}SS[table-align-uncertainty = false]@{}}
diff --git a/macros/latex/contrib/sjtutex/sjtutex.dtx b/macros/latex/contrib/sjtutex/sjtutex.dtx
index ab429d6850..bcf46b7fbe 100644
--- a/macros/latex/contrib/sjtutex/sjtutex.dtx
+++ b/macros/latex/contrib/sjtutex/sjtutex.dtx
@@ -216,7 +216,7 @@
Please update your TeX distribution}{}}
%</class>
%<*!(driver|install)>
-%<+!driver>\GetIdInfo$Id: sjtutex.dtx 6d52363 2024-04-05 19:40:30 +0800 Alexara Wu <alexarawu@outlook.com> $
+%<+!driver>\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
%<class&thesis> {Thesis document class for Shanghai Jiao Tong University (SJTUTeX)}
%<class&thesis>\ProvidesExplClass{sjtuthesis}
%<class&report> {Report document class for Shanghai Jiao Tong University (SJTUTeX)}
@@ -335,7 +335,7 @@
%<font&cjk&founder&zh>\ProvidesExplFile{sjtu-cjk-font-founder-zh.def}
%<font&cjk&founder&ja> {Founder CJK fonts definition for Japanese (SJTUTeX)}
%<font&cjk&founder&ja>\ProvidesExplFile{sjtu-cjk-font-founder-ja.def}
-%<!driver> {\ExplFileDate}{2.1.2}{\ExplFileDescription}
+%<!driver> {\ExplFileDate}{2.1.3}{\ExplFileDescription}
%</!(driver|install)>
%
%<*driver>
@@ -343,7 +343,7 @@
\documentclass{ctxdoc}
\newcommand{\sjtutex}{SJTU\TeX}
\expandafter\def\csname ver@\jobname.dtx\endcsname
- {2024/04/05 v2.1.2 SJTUTeX}
+ {2024/06/29 v2.1.3 SJTUTeX}
\usepackage{float}
\usepackage{multirow}
\usepackage{longtable}
@@ -1638,6 +1638,14 @@
% \urlprefix\url{https://ctan.org/pkg/ctex}
% \urlprefix\CTANurl[文档及源代码:]{language/chinese/ctex/ctex.pdf}
%
+% \bibitem{zhlineskip}
+% 张瑞熹.
+% \newblock \textit{zhlineskip 宏包}\allowbreak[EB/OL].
+% \newblock version 1.0e,
+% \newblock (2019-05-15).
+% \urlprefix\url{https://ctan.org/pkg/zhlineskip}
+% \urlprefix\CTANurl[文档:]{language/chinese/zhlineskip/zhlineskip.pdf}
+%
% \bibitem{fduthesis}
% 曾祥东.
% \newblock \textit{fduthesis: 复旦大学论文模板}\allowbreak[EB/OL].
@@ -4076,6 +4084,11 @@
%<thesis> \exp_not:N \zihao { \g_@@_zihao_tl }
%<!thesis> equation-font .initial:V = \c_empty_tl
}
+% \end{macrocode}
+% \end{macro}
+%
+% 借用 \pkg{zhlineskip} 宏包的代码设置行间公式字体。
+% \begin{macrocode}
\clist_map_inline:nn
{
array, matrix, pmatrix, bmatrix, Bmatrix, vmatrix, Vmatrix,
@@ -4101,7 +4114,6 @@
\spread@equation
}
% \end{macrocode}
-% \end{macro}
%
% \subsection{数学环境}
%
@@ -5318,23 +5330,24 @@
% \end{macro}
%
% \changes{v2.1.2}{2024/03/31}{改用 \pkg{titletoc} 设置目录格式。}
+% \changes{v2.1.3}{2024/06/28}{更新目录样式。}
% \begin{macrocode}
\tl_set:Nn \SJTU@leaders { \titlerule* [ 4bp ] { . } }
\contentsmargin [ 2.55 em ] { 0 pt }
%<article>\titlecontents { section }
%<!article>\titlecontents { chapter }
[ 0 pt ] { \addvspace { 6 bp } \bfseries }
- { \contentspush { \thecontentslabel \quad } } { }
+ { \contentspush { \thecontentslabel \enskip } } { }
{ \SJTU@leaders \thecontentspage }
%<article>\titlecontents { subsection }
%<!article>\titlecontents { section }
[ 2 em ] { }
- { \contentspush { \thecontentslabel \quad } } { }
+ { \contentspush { \thecontentslabel \enskip } } { }
{ \SJTU@leaders \thecontentspage }
%<article>\titlecontents { subsubsection }
%<!article>\titlecontents { subsection }
[ 4 em ] { }
- { \contentspush { \thecontentslabel \quad } } { }
+ { \contentspush { \thecontentslabel \enskip } } { }
{ \SJTU@leaders \thecontentspage }
% \end{macrocode}
%
@@ -5357,7 +5370,7 @@
{ \SJTU@listof {#4} {#2} }
\titlecontents {#2}
[ 0 pt ] { }
- { \contentspush { #3 \space \thecontentslabel \quad } } { }
+ { \contentspush { #3 \space \thecontentslabel \enskip } } { }
{ \SJTU@leaders \thecontentspage }
\exp_args:Nnv \contentsuse {#2} { ext@ #2 }
}
@@ -6044,7 +6057,7 @@
{ address } { Shanghai,~ P.R.~ China } ,
{ author } { Author } ,
{ supervisor } { Supervisor } ,
- { assoc_supervisor } { Assoc.~ Supervisor } ,
+ { assoc_supervisor } { Assoc.\ Supervisor } ,
{ co_supervisor } { Co-supervisor } ,
{ title_page } { Title~ Page } ,
{ declaration } { Statutory~ Declaration } ,
diff --git a/macros/latex/contrib/sjtutex/sjtutex.pdf b/macros/latex/contrib/sjtutex/sjtutex.pdf
index ae3ed269b6..a5994fd3be 100644
--- a/macros/latex/contrib/sjtutex/sjtutex.pdf
+++ b/macros/latex/contrib/sjtutex/sjtutex.pdf
Binary files differ
diff --git a/macros/latex/contrib/spbmark/README.md b/macros/latex/contrib/spbmark/README.md
index fb09a7b7a9..9fe0dc2c5c 100644
--- a/macros/latex/contrib/spbmark/README.md
+++ b/macros/latex/contrib/spbmark/README.md
@@ -1,11 +1,15 @@
-# The spbmark package
+# The `spbmark` package
+Customize superscripts and subscripts (v1.46n)
+## Abstract
`spbmark` provides three commands `\super`, `\sub` and `\supersub` to improve the layout of superscripts and subscripts which can be adjusted the relative position and format, and can be used in text and math mode.
## License
-
This work may be distributed and/or modified under the conditions of the CC-BY 4.0 License. The latest version of this license is in https://creativecommons.org/licenses/by/4.0/legalcode
## Website
+| [Gitee](https://gitee.com/texno3/spbmark) | [Github](https://github.com/texno3/spbmark) | [CTAN](https://ctan.org/pkg/spbmark) |
-| [Gitee](https://gitee.com/texno3/spbmark) | [Github](https://github.com/texno3/spbmark) | [CTAN](https://ctan.org/pkg/spbmark) | \ No newline at end of file
+## Maintainer
+Qu Yi<br/>
+Email: toquyi@163.com \ No newline at end of file
diff --git a/macros/latex/contrib/spbmark/spbmark.pdf b/macros/latex/contrib/spbmark/spbmark.pdf
index 8242e5e3bf..c0f3a42077 100644
--- a/macros/latex/contrib/spbmark/spbmark.pdf
+++ b/macros/latex/contrib/spbmark/spbmark.pdf
Binary files differ
diff --git a/macros/latex/contrib/spbmark/spbmark.sty b/macros/latex/contrib/spbmark/spbmark.sty
index c1ce4837a5..4046c8bf9c 100644
--- a/macros/latex/contrib/spbmark/spbmark.sty
+++ b/macros/latex/contrib/spbmark/spbmark.sty
@@ -8,8 +8,8 @@
% The latest version of this license is in
% https://creativecommons.org/licenses/by/4.0/legalcode
\NeedsTeXFormat{LaTeX2e}[2018/12/31]
-\RequirePackage{xparse,l3keys2e}
-\ProvidesExplPackage{spbmark}{2024/05/19}{1.46j}
+\RequirePackage{xparse}
+\ProvidesExplPackage{spbmark}{2024/07/14}{1.46n}
{Customize superscripts and subscripts}
\cs_generate_variant:Nn \box_set_ht:Nn { cv }
@@ -32,6 +32,16 @@
\cs_new_protected:Npn \spb_define:n { \keys_define:nn { ctex/tools } }
\cs_new_protected:Npn \spb_set:n { \keys_set:nn { ctex/tools } }
\cs_set_eq:NN \spbset \spb_set:n
+\cs_new_protected:Npn \spb_mark_core_set_trad:n #1
+ {
+ \cs_set_eq:cc { spb@text#1script@core } { spb@text#1script@save }
+ \cs_set_eq:cc { spb@math@#1@core } { spb@math@#1@save }
+ }
+\cs_new_protected:Npn \spb_mark_core_set_none:n #1
+ {
+ \cs_set_eq:cN { spb@text#1script@core } \use:n
+ \cs_set_eq:cN { spb@math@#1@core } \use:n
+ }
\keys_define:nn { spbmark/option }
{
@@ -43,8 +53,8 @@
},
text/false .code:n =
{
- \cs_set:Npn \textsuperscript { \spb@textsuperscript@save }
- \cs_set:Npn \textsubscript { \spb@textsubscript@save }
+ \cs_set:Npn \textsuperscript { \spb@textsuperscript@core }
+ \cs_set:Npn \textsubscript { \spb@textsubscript@core }
},
text .default:n = true,
math .choice:,
@@ -55,8 +65,8 @@
},
math/false .code:n =
{
- \cs_set:Npn \sp { \spb@math@super@save }
- \cs_set:Npn \sb { \spb@math@sub@save }
+ \cs_set:Npn \sp { \spb@math@super@core }
+ \cs_set:Npn \sb { \spb@math@sub@core }
},
math .default:n = true,
foot .choice:,
@@ -71,7 +81,17 @@
both .meta:n = { text = #1,math = #1 },
both .default:n = true,
all .meta:n = { text = #1,math = #1,foot = #1 },
- all .default:n = true
+ all .default:n = true,
+ spcore .choice:,
+ spcore .value_required:n = true,
+ spcore/trad .code:n = \spb_mark_core_set_trad:n { super },
+ spcore/none .code:n = \spb_mark_core_set_none:n { super },
+ spcore .initial:n = trad,
+ sbcore .choice:,
+ sbcore .value_required:n = true,
+ sbcore/trad .code:n = \spb_mark_core_set_trad:n { sub },
+ sbcore/none .code:n = \spb_mark_core_set_none:n { sub },
+ sbcore .initial:n = trad
}
\char_set_catcode_active:N \~
\keys_define:nn { spbmark/option }
@@ -108,7 +128,12 @@
{ \tl_set_eq:NN \fnmarkfont \ftntm@font }
{ \tl_set_eq:NN \fnmarkfont \normalfont }
-\ProcessKeysOptions{spbmark/option}
+\cs_if_exist:NTF \ProcessKeyOptions
+ { \ProcessKeyOptions[spbmark/option] }
+ {
+ \RequirePackage{l3keys2e}
+ \ProcessKeysOptions{spbmark/option}
+ }
\tl_new:N \g__spb_mark_case_init_tl
\cs_new_protected:Npn \spb_local_case_init:nnn #1#2#3
@@ -314,7 +339,7 @@
{
\ensuremath
{
- \use:c { spb@math@#1@save }
+ \use:c { spb@math@#1@core }
{ \tl_use:c { l__spb_#1_cmd_i_tl }{#2} }
}
}
@@ -324,7 +349,7 @@
{
\hbox_gset:cn { g__#1_i_inner_box }
{
- \use:c { spb@text#1script@save }
+ \use:c { spb@text#1script@core }
{ \tl_use:c { l__spb_#1_cmd_i_tl }{#2} }
}
\dim_gset:Nv \rlastwd { l__spb_box_#1_wd_i_tl }
@@ -332,16 +357,16 @@
\cs_new:Npn \spb_math_print_store_ii:nn #1#2
{
\hbox_gset:Nn \g__super_ii_box
- { \ensuremath{\spb@math@super@save{\l__spb_super_cmd_ii_tl{#1}}} }
+ { \ensuremath{\spb@math@super@core{\l__spb_super_cmd_ii_tl{#1}}} }
\hbox_gset:Nn \g__sub_ii_box
- { \ensuremath{\spb@math@sub@save{\l__spb_sub_cmd_ii_tl{#2}}} }
+ { \ensuremath{\spb@math@sub@core{\l__spb_sub_cmd_ii_tl{#2}}} }
}
\cs_new:Npn \spb_text_print_store_ii:nn #1#2
{
\hbox_gset:Nn \g__super_ii_box
- { \spb@textsuperscript@save{\l__spb_super_cmd_ii_tl{#1}} }
+ { \spb@textsuperscript@core{\l__spb_super_cmd_ii_tl{#1}} }
\hbox_gset:Nn \g__sub_ii_box
- { \spb@textsubscript@save{\l__spb_sub_cmd_ii_tl{#2}} }
+ { \spb@textsubscript@core{\l__spb_sub_cmd_ii_tl{#2}} }
}
\cs_set_eq:NN \spbifmath \use_ii:nn
\cs_new:Npn \spb@ifmathtrue { \cs_set_eq:NN \spbifmath \use_i:nn }
@@ -585,7 +610,7 @@
{
\ifaltsbsp@spbmark
\SetAltSubSupCommands{\relax}
- \else\fi
+ \fi
}
}{}
\cs_set_eq:NN \spb \supersub
diff --git a/macros/latex/contrib/spbmark/spbmark.tex b/macros/latex/contrib/spbmark/spbmark.tex
index 9d04ea07f9..d452fd0904 100644
--- a/macros/latex/contrib/spbmark/spbmark.tex
+++ b/macros/latex/contrib/spbmark/spbmark.tex
@@ -1,25 +1,23 @@
\documentclass[load-preamble+]{cnltx-doc}
-\usepackage{siunitx,setspace,pifont,hologo}
+\usepackage{siunitx,setspace,hologo,changelog,enumitem}
\usepackage[spbmark]{altsubsup}
\usepackage[margin = 1in,marginparwidth = 0.6in,footskip = 0.5in]{geometry}
\usepackage[noto]{newtxmath}
\setcnltx
{
package = spbmark,
- title = the spbmark package,
- version = v1.46j,
- date = 2024/05/19,
+ version = v1.46n,
+ date = 2024/07/14,
authors = Qu Yi,
- info = Customize superscript and subscript,
+ info = Customize superscripts and subscripts,
email = toquyi@163.com,
url = https://github.com/texno3/spbmark,
abstract =
{
- \pkg*{spbmark} provides three commands \cs{super}, \cs{sub} and \cs{supersub} to improve the layout of superscript and subscript which can be adjusted the relative position and format, and can be used in text and math mode.
+ \pkg*{spbmark} provides three commands \cs{super}, \cs{sub} and \cs{supersub} to improve the layout of superscripts and subscripts which can be adjusted the relative position and format, and can be used in text and math mode.
},
color-scheme = blue,
- title-format = \huge\bfseries\scshape,
listings-options = {numbers = none,gobble = 2,lineskip = 1pt},
pre-output = {\parindent = 0em\setstretch{1.3}},
before-skip = \smallskipamount,
@@ -43,6 +41,9 @@
\newnote{\newtag}[1]{\textcolor{red}{#1}}
\renewcommand{\emph}[1]{\textcolor{red}{#1}}
\renewcommand{\cnltx@write@lastname}{}
+\setlist{nosep,topsep = \smallskipamount}
+\setlist[description,1]{leftmargin = \parindent}
+\setlist[itemize,1]{leftmargin = *}
\makeatother
\begin{document}
@@ -50,13 +51,13 @@
The following macro package options will redefine the script commands of the \LaTeX{} kernel. If you do not specify the values of boolean options, they default to \code{true}. These options can also be changed in the preamble area and main body using the global control command \cs{spbset}.
\begin{options}
\keychoice{text}{true,\fbox{false}}
- \cs{textsuperscript} and \cs{textsubscript} are equivalent to the \cs{super} and \cs{sub} commands. The command \cs{defspbstyle} can be used to define the style \code{textsp} and \code{textsb} to change the format of the text superscript and subscript.
+ \cs{textsuperscript} and \cs{textsubscript} are equivalent to the \cs{super} and \cs{sub} commands. The command \cs{defspbstyle} can be used to define the style \code{textsp} and \code{textsb} to change the format of the text superscripts and subscripts.
\keychoice{math}{true,\fbox{false}}
- \cs{sp} and \cs{sb} are equivalent to the \cs{super} and \cs{sub} commands. The command \cs{defspbstyle} can be used to define the style \code{mathsp} and \code{mathsb} to change the format of the math superscript and subscript.
+ \cs{sp} and \cs{sb} are equivalent to the \cs{super} and \cs{sub} commands. The command \cs{defspbstyle} can be used to define the style \code{mathsp} and \code{mathsb} to change the format of the math superscripts and subscripts.
\keychoice{math*}{true,\fbox{false}}\newtag{Exp\\v1.46j}%
- The \code{\^{}} and \code{\_{}} tokens in the math mode are equivalent to the \cs{super} and \cs{sub} commands. The command \cs{defspbstyle} can be used to define the style \code{mathsp*} and \code{mathsb*} to change the format of the math superscript and subscript.
+ The \code{\^{}} and \code{\_{}} tokens in the math mode are equivalent to the \cs{super} and \cs{sub} commands. The command \cs{defspbstyle} can be used to define the style \code{mathsp*} and \code{mathsb*} to change the format of the math superscripts and subscripts.
\keychoice{foot}{true,\fbox{false}}
- The format of the footnote mark match the superscript global move and format settings. \cs{defspbstyle} can be used to define the superscript style \code{fnmark} to change the format of the footnote mark.
+ The format of the footnote mark match the superscripts global move and format settings. \cs{defspbstyle} can be used to define the superscripts style \code{fnmark} to change the format of the footnote mark.
\begin{example}[code-only]
\defspbstyle{textsp}{vmove=-1pt,cmd=\bfseries}
\defspbstyle{mathsb}{hmove=0.5em}
@@ -71,11 +72,20 @@ The following macro package options will redefine the script commands of the \La
\usepackage[text,foot=true]{spbmark}
\spbset{all=false,math}
\end{example}
+ \keychoice{spcore}{\fbox{trad},none}\newtag{New\\v1.46k}%
+ Kernel command case for text and math modes superscripts. If \code{none} is selected, support for the superscripts kernel command is removed, and the \option{cmd} and \option{vmove} options need to be set to control the size and offset of the superscripts.
+ \begin{example}[code-only]
+ \usepackage[spcore=none]{spbmark}
+ \usepackage{graphicx}
+ \spbset{spcmd=\scalebox{0.6},spvmove=5pt}
+ \end{example}
+ \keychoice{sbcore}{\fbox{trad},none}\newtag{New\\v1.46k}%
+ Option for subscripts kernel command case, similar to the \option{spcore} option.
\end{options}
\section{User commands}
\label{sec:user commands}
-There are currently three commands to set superscript and subscript. Their format can be set temporarily using the optional parameters of the command, or set globally using a key-value list, see Section \ref{sec:global control interface}.
+There are currently three commands to print superscripts and subscripts. Their format can be set locally using the optional parameter of the command, or set globally using a key-value list, see Section \ref{sec:global control interface}.
\begin{commands}
\command{super}[\sarg\oarg{kv list}\marg{content}\oarg{kv list}]
This is a superscript output command. The two \meta{kv list} are equivalent.
@@ -118,7 +128,7 @@ There are currently three commands to set superscript and subscript. Their forma
6A\supersub[hmove=-8pt]{examsuper}{sub}\hspace{\dimexpr(\maxwd-8pt)}B
\end{example}
\command{defspbstyle}[\marg{style name}\marg{kv list}]
- Defines the style of the superscript or subscript used for the \option{style} option.
+ Defines the style of the superscripts or subscripts used for the \option{style} option.
\command{spbifmath}[\marg{math code}\marg{text code}]
In some cases, \code{math} or \code{text} output modes require different code for format or move. This command can be used when using the \code{match} option or changing the output mode locally, whitch should be used in the move or format options. It can switch the corresponding code according to different output modes.
\command{spbshortkv}[\marg{short opt}\marg{key value}]
@@ -145,11 +155,11 @@ The options common to \meta{kv list} of the three commands are as follows. They
\keyval{cmd}{format cmds}
The format commands of superscript or subscript. The last command can take a parameter, which accepts superscript or subscript. Represents the format of superscript and subscript in the superscript and subscript commands.
\keyval{cmd+}{format cmds}
- Add code to the previous global superscript or subscript format commands.
+ Add code to the previous option \option{cmd}.
\keyval{height}{fixed length}
- The distance between the superscript or subscript baseline and the previous line. It is recommended that the superscript adjusts the height and the subscript adjusts the depth.
+ The height of the marker box above the baseline. It is recommended that the superscript adjusts the height and the subscript adjusts the depth.
\keyval{depth}{fixed length}
- The distance between the superscript or subscript baseline and the next line.
+ The depth of the marker box below the baseline.
\keyval{style}{style name}
Use the \meta{style name} defined by the \cs{defspbstyle} command to make it work global or local.
\keychoice{mode}{text,math,\fbox{match}}
@@ -175,71 +185,74 @@ The options common to \meta{kv list} of the three commands are as follows. They
\label{sec:global control interface}
\begin{commands}
\command{spbset}[\marg{key-value list}]
- \pkg*{spbmark} uses the \cs{spbset} command to control the global default format of superscript and subscript. These options also apply to \meta{kv list} of the above commands. The values ​set by it will be overwritten by the optional parameters of the superscript and other commands.
+ \pkg*{spbmark} uses the \cs{spbset} command to control the global default format of superscripts and subscripts. These options also apply to \meta{kv list} of the \textcolor{red}{above} print commands. The values set by it will be overwritten by the optional parameter of superscripts and subscripts commands.
+
+ Note that the relative length units in the options such as \code{ex} and \code{em} are for the \textcolor{red}{body} font size, not the marker itself.
+
+ The following list of keys control the format both of superscripts \emph{or} subscripts. They can also be used in the optional parameter of the \cs{super} or \cs{sub} command.
\end{commands}
-The following list of keys control the format both of superscript \emph{or} subscript.
\begin{options}
\keyval{spvmove}{fixed length}\Default{0pt}
- Extra vertical move of the superscript.
+ Extra vertical move of the superscripts.
\keyval{sphmove}{fixed length}\Default{0pt}
- Extra horizontal move of the superscript.
+ Extra horizontal move of the superscripts.
\keyval{sbvmove}{fixed length}\Default{0pt}
- Extra vertical move of the subscript.
+ Extra vertical move of the subscripts.
\keyval{sbhmove}{fixed length}\Default{0pt}
- Extra horizontal move of the subscript.
+ Extra horizontal move of the subscripts.
\opt{nohmove}
- Cancel the horizontal move of superscript and subscript at the same time.
+ Cancel the horizontal move of superscripts and subscripts at the same time.
\opt{novmove}
- Cancel the vertical move of superscript and subscript at the same time.
+ Cancel the vertical move of superscripts and subscripts at the same time.
\keyval{spcmd}{format cmds}
- The format commands of superscript. The last command in the code can take an argument, which is a superscript.
+ The format commands of superscripts. The last command in the code can take an argument, which is a superscripts.
\keyval{spcmd+}{format cmds}
- Add code to the previous global superscript format commands.
+ Add code to the previous option \option{spcmd}.
\keyval{sbcmd}{format cmds}
- The format commands of subscript. The last command in the code can take an argument, which is a subscript.
+ The format commands of subscripts. Similar to the \option{spcmd} option, but for subscripts.
\keyval{sbcmd+}{format cmds}
- Add code to the previous global subcript format commands.
+ Add code to the previous option \option{sbcmd}.
\keyval{spheight}{fixed length}
- The distance between the superscript baseline and the previous line.
+ The height of the superscript box above the baseline.
\keyval{spdepth}{fixed length}
- The distance between the superscript baseline and the next line.
+ The depth of the superscript box below the baseline.
\keyval{sbheight}{fixed length}
- The distance between the subscript baseline and the previous line.
+ The height of the subscript box above the baseline.
\keyval{sbdepth}{fixed length}
- The distance between the subscript baseline and the next line.
+ The depth of the subscript box below the baseline.
\keychoice{spthiswd}{auto,\fbox{keep}}
- Width processing mode after using this superscript. See Section \ref{sec:user commands} for the meaning of this option.
+ Width processing mode after using this superscripts. See Section \ref{sec:user commands} for the meaning of this option.
\keychoice{sbthiswd}{auto,\fbox{keep}}
- Width processing mode after using this subscript. See Section \ref{sec:user commands} for the meaning of this option.
+ Width processing mode after using this subscripts. See Section \ref{sec:user commands} for the meaning of this option.
\keyval{spregex}{regular expression}
- After the superscript command is used, the regular expression rules of the following tokens are matched. See Section \ref{sec:user commands} for the meaning of this option.
+ After the superscripts command is used, the regular expression rules of the following tokens are matched. See Section \ref{sec:user commands} for the meaning of this option.
\keyval{sbregex}{regular expression}
- After the subscript command is used, the regular expression rules of the following tokens are matched. See Section \ref{sec:user commands} for the meaning of this option.
+ Similar to the \option{spregex} option, but for subscripts.
\end{options}
-If \option{sphmove} is positive, the superscript or subscript moves to the right, conversely it moves to the left. The positive direction of vertical offset of subscript and superscript is \textcolor{red}{opposite}. For superscript, if \option{spvmove} is positive, the superscript moves up, conversely it moves down. For subscript, if \option{spvmove} is positive, the subscript moves down, conversely it moves up.
+If \option{sphmove} is positive, the superscripts or subscripts moves to the right, conversely it moves to the left. The positive direction of vertical offset of subscripts and superscripts is \textcolor{red}{opposite}. For superscripts, if \option{spvmove} is positive, the superscripts moves up, conversely it moves down. For subscripts, if \option{spvmove} is positive, the subscripts moves down, conversely it moves up.
-The following list of keys control the format of superscript \emph{and} subscript.
+The following list of keys control the format of superscripts \emph{and} subscripts. They can also be used in the optional parameter of the \cs{supersub} command.
\begin{options}
\keyval{spbhmove}{fixed length}\Default{0pt}
- Extra vertical move of the superscript and the subscript.
+ Extra vertical move of the superscripts and the subscripts.
\kvsplit{spbcmd}{super cmds}{sub cmds}
- The format commands of superscript and subscript. The first part is in superscript format, and the latter part is in subscript format. They are separated by commas, or only the first part exists.
+ The format commands of superscripts and subscripts. The first part is in superscripts format, and the latter part is in subscripts format. They are separated by commas, or only the first part exists.
\kvsplit{spbcmd+}{super cmds}{sub cmds}
- Add code to the previous global superscript and subscript format commands.
+ Add code to the previous option \option{spbcmd}.
\keyval{spbheight}{fixed length}
- The distance between the superscript baseline and the previous line.
+ The height of the superscript box above the baseline.
\keyval{spbdepth}{fixed length}
- The distance between the subscript baseline and the next line.
+ The depth of the subscript box below the baseline.
\kvsplit{vsep}{super move}{sub move}\Default{0.6ex}
- The extra vertical distance between superscript and subscript. The front part is the movement amount of the superscript, and the latter part is the movement amount of the subscript. If only the front part means that both are vertically shifted by one-half of the current value.
+ The extra vertical distance between superscripts and subscripts. The front part is the movement amount of the superscripts, and the latter part is the movement amount of the subscripts. If only the front part means that both are vertically shifted by one-half of the current value.
\keychoice{halign}{\fbox{l},c,r}
- The alignment of superscript and subscript, which contains \code{l}, \code{c}, and \code{r} parameters respectively for left, center, and right alignment.
+ The alignment of superscripts and subscripts, which contains \code{l}, \code{c}, and \code{r} parameter respectively for left, center, and right alignment.
\end{options}
\section{Examples of use}
-Here is a list of the three commands, please pay attention to the usage of optional parameters. Note when the horizontal move is negative, the starting point is at the right end of the mark.
+Here is a list of the three commands, please pay attention to the usage of optional parameter. Note when the horizontal move is negative, the starting point is at the right end of the mark.
\begin{example}
\defspbstyle{fancy}{cmd=\color{purple}}
\spbset{spbcmd={\spbifmath{\mathtt}{\ttfamily},\color{blue}}}
@@ -251,7 +264,7 @@ Here is a list of the three commands, please pay attention to the usage of optio
\end{example}
\subsection{siunitx}
-It can also be used with the \pkg*{siunitx} package to output superscript and subscript in the unit:
+It can also be used with the \pkg*{siunitx} package to output superscripts and subscripts in the unit:
\begin{example}
\spbset{spcmd=\spbifmath{}{\color{purple}}}
\sisetup{text-superscript-command=\super}
@@ -262,13 +275,13 @@ It can also be used with the \pkg*{siunitx} package to output superscript and su
\end{example}
\subsection{realscripts}
-If the OpenType text font you are using does not have optical sizes, the superscript and subscript may not appear correctly. Loading the \pkg*{realscripts} package before the \pkg*{spbmark} package fixes this behavior.
+If the OpenType text font you are using does not have optical sizes, the superscripts and subscripts may not appear correctly. Loading the \pkg*{realscripts} package before the \pkg*{spbmark} package fixes this behavior.
\begin{example}[code-only]
\usepackage{realscripts,spbmark}
\end{example}
\subsection{altsubsup}
-The \pkg*{altsubsup} package allows to write alternate superscript and subscript in math mode with \code{\^{}}\oarg{mark} and \code{\_{}}\oarg{mark} dimensions. When the package is loaded using the \code{spbmark} option, the superscript and subscript mechanism of \pkg*{spbmark} is used, you can use \cs{defspbstyle} to define its superscript style \code{altsup} and subscript style \code{altsub}.
+The \pkg*{altsubsup} package allows to write alternate superscripts and subscripts in math mode with \code{\^{}}\oarg{mark} and \code{\_{}}\oarg{mark} dimensions. When the package is loaded using the \code{spbmark} option, the superscripts and subscripts mechanism of \pkg*{spbmark} is used, you can use \cs{defspbstyle} to define its superscripts style \code{altsup} and subscripts style \code{altsub}.
\begin{example}
\defspbstyle{altsup}{sphmove=-\llastwd,spthiswd=auto,spvmove=1pt}
$A_[bcd]^[e]B$
@@ -281,19 +294,27 @@ The \pkg*{altsubsup} package allows to write alternate superscript and subscript
If you need to use the original definitions of \cs{textsuperscript}, \cs{textsubscript}, \cs{sp} and \cs{sb} after using the \option{text} or \option{math} option, then you can use the following commands:
\begin{commands}
\command{spb@textsuperscript@save}[\marg{content}]
- Save the original definition of the \cs{textsuperscript} command, output superscript in the text mode.
+ Save the original definition of the \cs{textsuperscript} command, output superscripts in the text mode.
\command{spb@textsubscript@save}[\marg{content}]
- Save the original definition of the \cs{textsubscript} command, output subscript in the text mode.
+ Save the original definition of the \cs{textsubscript} command, output subscripts in the text mode.
\command{spb@math@super@save}[\marg{content}]
- Save the original definition of the \cs{sp} command, output superscript in the math mode.
+ Save the original definition of the \cs{sp} command, output superscripts in the math mode.
\command{spb@math@sub@save}[\marg{content}]
- Save the original definition of the \cs{sb} command, output subscript in the math mode.
+ Save the original definition of the \cs{sb} command, output subscripts in the math mode.
\end{commands}
\section{Known issues}
At present, the vertical and horizontal move are effective for the unit commands in the \pkg*{siunitx} macro package. However, due to the special mechanism that the decimal point is not recognized correctly because it's converted to a space in the \cs*{unit} command, it's recommended to use \code{pt} as the unit of move.
\appendix
+\begin{changelog}[simple]
+ \begin{version}[v = 1.46j,date = 2024/05/19]
+ \item Add option \option{math*}: The \code{\^{}} and \code{\_{}} tokens in the math mode are equivalent to the \cs{super} and \cs{sub} commands.
+ \end{version}
+ \begin{version}[v = 1.46k,date = 2024/06/21]
+ \item Add options \option{spcore} and \option{sbcore}: Set kernel commands for superscripts and subscripts of text and math modes.
+ \end{version}
+\end{changelog}
\nocite{*}
\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/Example/example-spel/1.0.0.0.0-1.ogg b/macros/latex/contrib/spelatex/Example/example-spel/1.0.0.0.0-1.ogg
new file mode 100644
index 0000000000..3185ca52c8
--- /dev/null
+++ b/macros/latex/contrib/spelatex/Example/example-spel/1.0.0.0.0-1.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/Example/example-spel/1.0.0.0.0-2.ogg b/macros/latex/contrib/spelatex/Example/example-spel/1.0.0.0.0-2.ogg
new file mode 100644
index 0000000000..01bae15339
--- /dev/null
+++ b/macros/latex/contrib/spelatex/Example/example-spel/1.0.0.0.0-2.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/Example/example-spel/1.0.0.0.0-3.ogg b/macros/latex/contrib/spelatex/Example/example-spel/1.0.0.0.0-3.ogg
new file mode 100644
index 0000000000..fe2b4f1314
--- /dev/null
+++ b/macros/latex/contrib/spelatex/Example/example-spel/1.0.0.0.0-3.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/Example/example-spel/1.0.0.0.0.m3u b/macros/latex/contrib/spelatex/Example/example-spel/1.0.0.0.0.m3u
new file mode 100644
index 0000000000..cc969b31f7
--- /dev/null
+++ b/macros/latex/contrib/spelatex/Example/example-spel/1.0.0.0.0.m3u
@@ -0,0 +1,6 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+1.0.0.0.0.ogg
+1.0.0.0.0-1.ogg
+1.0.0.0.0-2.ogg
+1.0.0.0.0-3.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/Example/example-spel/1.0.0.0.0.ogg b/macros/latex/contrib/spelatex/Example/example-spel/1.0.0.0.0.ogg
new file mode 100644
index 0000000000..ff6db0d091
--- /dev/null
+++ b/macros/latex/contrib/spelatex/Example/example-spel/1.0.0.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/Example/example-spel/2.0.0.0.0-1.ogg b/macros/latex/contrib/spelatex/Example/example-spel/2.0.0.0.0-1.ogg
new file mode 100644
index 0000000000..67712c1745
--- /dev/null
+++ b/macros/latex/contrib/spelatex/Example/example-spel/2.0.0.0.0-1.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/Example/example-spel/2.0.0.0.0-2.ogg b/macros/latex/contrib/spelatex/Example/example-spel/2.0.0.0.0-2.ogg
new file mode 100644
index 0000000000..f8f68b313b
--- /dev/null
+++ b/macros/latex/contrib/spelatex/Example/example-spel/2.0.0.0.0-2.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/Example/example-spel/2.0.0.0.0-3.ogg b/macros/latex/contrib/spelatex/Example/example-spel/2.0.0.0.0-3.ogg
new file mode 100644
index 0000000000..9478bdebbb
--- /dev/null
+++ b/macros/latex/contrib/spelatex/Example/example-spel/2.0.0.0.0-3.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/Example/example-spel/2.0.0.0.0.m3u b/macros/latex/contrib/spelatex/Example/example-spel/2.0.0.0.0.m3u
new file mode 100644
index 0000000000..38ff0aca21
--- /dev/null
+++ b/macros/latex/contrib/spelatex/Example/example-spel/2.0.0.0.0.m3u
@@ -0,0 +1,6 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+2.0.0.0.0.ogg
+2.0.0.0.0-1.ogg
+2.0.0.0.0-2.ogg
+2.0.0.0.0-3.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/Example/example-spel/2.0.0.0.0.ogg b/macros/latex/contrib/spelatex/Example/example-spel/2.0.0.0.0.ogg
new file mode 100644
index 0000000000..44d415fd31
--- /dev/null
+++ b/macros/latex/contrib/spelatex/Example/example-spel/2.0.0.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/Example/example-spel/3.0.0.0.0-1.ogg b/macros/latex/contrib/spelatex/Example/example-spel/3.0.0.0.0-1.ogg
new file mode 100644
index 0000000000..d500956316
--- /dev/null
+++ b/macros/latex/contrib/spelatex/Example/example-spel/3.0.0.0.0-1.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/Example/example-spel/3.0.0.0.0-2.ogg b/macros/latex/contrib/spelatex/Example/example-spel/3.0.0.0.0-2.ogg
new file mode 100644
index 0000000000..affd24989c
--- /dev/null
+++ b/macros/latex/contrib/spelatex/Example/example-spel/3.0.0.0.0-2.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/Example/example-spel/3.0.0.0.0.m3u b/macros/latex/contrib/spelatex/Example/example-spel/3.0.0.0.0.m3u
new file mode 100644
index 0000000000..7126037f5d
--- /dev/null
+++ b/macros/latex/contrib/spelatex/Example/example-spel/3.0.0.0.0.m3u
@@ -0,0 +1,5 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+3.0.0.0.0.ogg
+3.0.0.0.0-1.ogg
+3.0.0.0.0-2.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/Example/example-spel/3.0.0.0.0.ogg b/macros/latex/contrib/spelatex/Example/example-spel/3.0.0.0.0.ogg
new file mode 100644
index 0000000000..d7147b5cd6
--- /dev/null
+++ b/macros/latex/contrib/spelatex/Example/example-spel/3.0.0.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/Example/example-spel/4.0.0.0.0-1.ogg b/macros/latex/contrib/spelatex/Example/example-spel/4.0.0.0.0-1.ogg
new file mode 100644
index 0000000000..c5307858c7
--- /dev/null
+++ b/macros/latex/contrib/spelatex/Example/example-spel/4.0.0.0.0-1.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/Example/example-spel/4.0.0.0.0-2.ogg b/macros/latex/contrib/spelatex/Example/example-spel/4.0.0.0.0-2.ogg
new file mode 100644
index 0000000000..ef40bd9734
--- /dev/null
+++ b/macros/latex/contrib/spelatex/Example/example-spel/4.0.0.0.0-2.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/Example/example-spel/4.0.0.0.0.m3u b/macros/latex/contrib/spelatex/Example/example-spel/4.0.0.0.0.m3u
new file mode 100644
index 0000000000..3eebda66de
--- /dev/null
+++ b/macros/latex/contrib/spelatex/Example/example-spel/4.0.0.0.0.m3u
@@ -0,0 +1,5 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+4.0.0.0.0.ogg
+4.0.0.0.0-1.ogg
+4.0.0.0.0-2.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/Example/example-spel/4.0.0.0.0.ogg b/macros/latex/contrib/spelatex/Example/example-spel/4.0.0.0.0.ogg
new file mode 100644
index 0000000000..95da73a4f1
--- /dev/null
+++ b/macros/latex/contrib/spelatex/Example/example-spel/4.0.0.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/Example/example-spel/5.0.0.0.0.m3u b/macros/latex/contrib/spelatex/Example/example-spel/5.0.0.0.0.m3u
new file mode 100644
index 0000000000..ed93b0f718
--- /dev/null
+++ b/macros/latex/contrib/spelatex/Example/example-spel/5.0.0.0.0.m3u
@@ -0,0 +1,8 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+5.0.0.0.0.ogg
+5.1.0.0.0.ogg
+5.1.0.0.0-1.ogg
+5.2.0.0.0.ogg
+5.2.0.0.0-1.ogg
+5.2.0.0.0-star-1.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/Example/example-spel/5.0.0.0.0.ogg b/macros/latex/contrib/spelatex/Example/example-spel/5.0.0.0.0.ogg
new file mode 100644
index 0000000000..ba529eb4c3
--- /dev/null
+++ b/macros/latex/contrib/spelatex/Example/example-spel/5.0.0.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/Example/example-spel/5.1.0.0.0-1.ogg b/macros/latex/contrib/spelatex/Example/example-spel/5.1.0.0.0-1.ogg
new file mode 100644
index 0000000000..e987134adf
--- /dev/null
+++ b/macros/latex/contrib/spelatex/Example/example-spel/5.1.0.0.0-1.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/Example/example-spel/5.1.0.0.0.m3u b/macros/latex/contrib/spelatex/Example/example-spel/5.1.0.0.0.m3u
new file mode 100644
index 0000000000..69e1f4059e
--- /dev/null
+++ b/macros/latex/contrib/spelatex/Example/example-spel/5.1.0.0.0.m3u
@@ -0,0 +1,4 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+5.1.0.0.0.ogg
+5.1.0.0.0-1.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/Example/example-spel/5.1.0.0.0.ogg b/macros/latex/contrib/spelatex/Example/example-spel/5.1.0.0.0.ogg
new file mode 100644
index 0000000000..8eab7ae3fb
--- /dev/null
+++ b/macros/latex/contrib/spelatex/Example/example-spel/5.1.0.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/Example/example-spel/5.2.0.0.0-1.ogg b/macros/latex/contrib/spelatex/Example/example-spel/5.2.0.0.0-1.ogg
new file mode 100644
index 0000000000..dfa846e2fc
--- /dev/null
+++ b/macros/latex/contrib/spelatex/Example/example-spel/5.2.0.0.0-1.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/Example/example-spel/5.2.0.0.0-star-1.ogg b/macros/latex/contrib/spelatex/Example/example-spel/5.2.0.0.0-star-1.ogg
new file mode 100644
index 0000000000..1404701800
--- /dev/null
+++ b/macros/latex/contrib/spelatex/Example/example-spel/5.2.0.0.0-star-1.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/Example/example-spel/5.2.0.0.0.m3u b/macros/latex/contrib/spelatex/Example/example-spel/5.2.0.0.0.m3u
new file mode 100644
index 0000000000..e5106355e4
--- /dev/null
+++ b/macros/latex/contrib/spelatex/Example/example-spel/5.2.0.0.0.m3u
@@ -0,0 +1,5 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+5.2.0.0.0.ogg
+5.2.0.0.0-1.ogg
+5.2.0.0.0-star-1.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/Example/example-spel/5.2.0.0.0.ogg b/macros/latex/contrib/spelatex/Example/example-spel/5.2.0.0.0.ogg
new file mode 100644
index 0000000000..7e2bb4d502
--- /dev/null
+++ b/macros/latex/contrib/spelatex/Example/example-spel/5.2.0.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/Example/example-spel/author.ogg b/macros/latex/contrib/spelatex/Example/example-spel/author.ogg
new file mode 100644
index 0000000000..ee14dcc502
--- /dev/null
+++ b/macros/latex/contrib/spelatex/Example/example-spel/author.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/Example/example-spel/date.ogg b/macros/latex/contrib/spelatex/Example/example-spel/date.ogg
new file mode 100644
index 0000000000..2c8670eb1a
--- /dev/null
+++ b/macros/latex/contrib/spelatex/Example/example-spel/date.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/Example/example-spel/title.ogg b/macros/latex/contrib/spelatex/Example/example-spel/title.ogg
new file mode 100644
index 0000000000..f728d6671a
--- /dev/null
+++ b/macros/latex/contrib/spelatex/Example/example-spel/title.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/Example/example.pdf b/macros/latex/contrib/spelatex/Example/example.pdf
new file mode 100644
index 0000000000..81ace4e4e3
--- /dev/null
+++ b/macros/latex/contrib/spelatex/Example/example.pdf
Binary files differ
diff --git a/macros/latex/contrib/spelatex/Example/example.tex b/macros/latex/contrib/spelatex/Example/example.tex
new file mode 100644
index 0000000000..e7a5e8dc69
--- /dev/null
+++ b/macros/latex/contrib/spelatex/Example/example.tex
@@ -0,0 +1,112 @@
+\documentclass{article}
+
+\usepackage[dutch,english]{babel} % load babel before spel to avoid
+ % option clash!
+\selectlanguage{english}
+\usepackage[format=ogg]{spelatex}
+
+\newrobustcmd\CTAN{CTAN}
+\spelmacad{CTAN}{see-tan}
+\newrobustcmd\CPAN{CPAN}
+\spelmacad{CPAN}{see-pan}
+
+\title{\spelatex{} Example}
+\author{Walter Daems and Paul Levrie}
+\date{2011/04/12}
+\setlength\parindent{0em}
+\setlength\parskip{1ex}
+
+\begin{document}
+
+\maketitle
+
+\section{Introduction}
+
+\begin{spelchunk}
+ This file is just a simple showcase of the features of \spelatex.
+ Below, you'll find examples of:
+\end{spelchunk}
+
+\begin{itemize}
+ \spelitem{a simple equation}
+ \spelitem{a more complex equation}
+\end{itemize}
+
+\section{A simple equation}
+\label{eqn:simple}
+\begin{spelchunk}
+ Consider the following simple definition of a polynomial function and
+ check its spoken version by clicking on it.
+\end{spelchunk}
+\begin{spelchunk}[arealink]
+ \begin{equation}
+ f(x) = x^{5}- x^4 + 7 x^3 + 3 x^2 - 8 x + 23
+ \end{equation}
+\end{spelchunk}
+\begin{spelchunk}
+ This seems a simple equation, however, it is not so straightforward
+ for an automated reader, to read it correctly.
+\end{spelchunk}
+
+\section{A more complex equation}
+\newcommand\xx[2]{\ensuremath{#1_{#2}}}
+\spelmacad{xx}[2]{#1 #2}
+
+\label{eqn:complex}
+\begin{spelchunk}
+ For a lightray that hits the parabola at the point
+ $P(t,9-\frac{t^2}{4})$, the reflected ray has slope $\tan 2\alpha$.
+ Since the slope of the tangent to the parabola at $P$ is
+ equal to $\tan\alpha = -\frac{t}{2}$, the equation of the
+ reflected ray is given by
+\end{spelchunk}
+\begin{spelchunk}[arealink]
+ \[
+ y-9+\frac{t^2}{4} = -\frac{4t}{4-t^2} \cdot (x-t)
+ \]
+\end{spelchunk}
+
+\selectlanguage{dutch}
+\section{Een andere taal}
+\begin{spelchunk}
+\spelatex{} is ook volledig babel-actief, wat wil zeggen dat de
+voorleesstem de geselecteerde taal zal volgen.
+\end{spelchunk}
+
+\begin{spelchunk}[arealink]
+ \[
+ y-9+\frac{t^2}{4} = -\frac{4t}{4-t^2} \cdot (x-t)
+ \]
+\end{spelchunk}
+
+\selectlanguage{english}
+\section{And some extras}
+\subsection{Citations}
+\begin{spelchunk}
+Two excellent repositories are \CPAN{} \cite{CPAN} and \CTAN{} \cite{CTAN}.
+\end{spelchunk}
+
+\subsection{References to labels}
+\begin{spelchunk}
+Section~\ref{eqn:simple} contains an illustration of a simple
+equation. For a more complex equation, we refer the user to
+section~\ref{eqn:complex}.
+\end{spelchunk}
+
+\bibliographystyle{alpha}
+
+\begin{thebibliography}{99}
+
+\bibitem{CTAN}
+The Comprehensive \TeX{} Archive Network.
+\newblock \url{http://www.ctan.org}.
+\newblock online, accessed in August 2021.
+
+\bibitem{CPAN}
+The Comprehensive Perl Archive Network.
+\newblock \url{http://www.cpan.org}.
+\newblock online, accessed in August 2021.
+
+\end{thebibliography}
+
+\end{document}
diff --git a/macros/latex/contrib/spelatex/LICENSE b/macros/latex/contrib/spelatex/LICENSE
new file mode 100644
index 0000000000..ee327b8405
--- /dev/null
+++ b/macros/latex/contrib/spelatex/LICENSE
@@ -0,0 +1,9 @@
+License
+=======
+All files of the reader package are subject to the LPPL.
+
+The reader package 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.
diff --git a/macros/latex/contrib/spelatex/README b/macros/latex/contrib/spelatex/README
new file mode 100644
index 0000000000..f20fa8b948
--- /dev/null
+++ b/macros/latex/contrib/spelatex/README
@@ -0,0 +1,61 @@
+********************************************************************
+* *
+* The spelatex package *
+* *
+********************************************************************
+ Walter Daems
+ walter.daems(at)uantwerpen.be
+
+
+SpeLaTeX equips the PDF that is generated with LaTeX with hyperlinks
+to audio files that contain the spoken equivalent of the original
+text, equations, figures and tables.
+
+The audio files can be automatically generated using a Perl-script
+called spel-wizard.pl (part of the SpeL::Wizard module available on
+CPAN). This script interfaces with locally installed text-to-speech
+software or with online available (paying) cloud services to generate
+the audio files. To this end, the LaTeX chunks of your text are parsed
+and translated to 'natural language'.
+
+SpeLaTeX is babel enabled, such that your text is read with the
+correct pronunciation corresponding to your language. So far, it
+provides the languages English and Dutch, but it will be extended in
+the future.
+
+You can package your PDF together with the audio-files (in your
+favorite archive format) and make it available to your users, such
+that the only requirements to read your text and listen to the audio
+are a suited PDF reader and media player. Not all readers and players
+work. Working readers are: okular, acrobat reader, pdfxchange
+viewer. Working media players are: SoX, totem, vlc.
+
+The package is part of the SpeLbox package, consisting of
+- an Emacs Org-mode exporter, called ox-spelatex (under development,
+ will be released soon)
+- the LaTeX spelatex package itself
+- a perl script 'spel-wizard.pl' available from CPAN in the SpeL::Wizard
+ module, that converts text to speech (doing the magic, parsing your
+ equations).
+
+The package also functions without the Org-Mode exporter, the latter
+just being there to make use more convenient. For the text-to-speech
+conversion, one can use free options (festival, balabolka, ...) or
+paying services (e.g. AWS polly).
+
+Do you like this package? You're welcome to send us beer, wine, or
+just an e-mail with kind words.
+
+If you want to contribute to the package (e.g., by providing some
+extra babel support for your language), please contact me.
+
+License
+=======
+
+see file LICENSE
+
+
+History
+=======
+
+see PDF documentation
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/1.0.0.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/1.0.0.0.0.m3u
new file mode 100644
index 0000000000..a6c2dc392a
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/1.0.0.0.0.m3u
@@ -0,0 +1,31 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+1.0.0.0.0.ogg
+1.1.0.0.0.ogg
+1.1.0.0.0-1.ogg
+1.1.0.0.0-2.ogg
+1.1.0.0.0-3.ogg
+1.2.0.0.0.ogg
+1.2.1.0.0.ogg
+1.2.1.0.0-1.ogg
+1.2.1.0.0-2.ogg
+1.2.1.0.0-3.ogg
+1.2.2.0.0.ogg
+1.2.2.0.0-1.ogg
+1.2.2.0.0-2.ogg
+1.2.2.0.0-3.ogg
+1.2.2.0.0-4.ogg
+1.2.2.0.0-5.ogg
+1.3.0.0.0.ogg
+1.3.0.0.0-1.ogg
+1.3.0.0.0-2.ogg
+1.3.0.0.0-3.ogg
+1.3.0.0.0-4.ogg
+1.3.0.0.0-5.ogg
+1.3.0.0.0-6.ogg
+1.3.0.0.0-7.ogg
+1.3.0.0.0-8.ogg
+1.3.0.0.0-9.ogg
+1.3.0.0.0-10.ogg
+1.3.0.0.0-11.ogg
+1.3.0.0.0-12.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/1.0.0.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/1.0.0.0.0.ogg
new file mode 100644
index 0000000000..f41ff41400
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/1.0.0.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/1.1.0.0.0-1.ogg b/macros/latex/contrib/spelatex/spelatex-spel/1.1.0.0.0-1.ogg
new file mode 100644
index 0000000000..ea54ff261a
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/1.1.0.0.0-1.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/1.1.0.0.0-2.ogg b/macros/latex/contrib/spelatex/spelatex-spel/1.1.0.0.0-2.ogg
new file mode 100644
index 0000000000..316f66fd5f
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/1.1.0.0.0-2.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/1.1.0.0.0-3.ogg b/macros/latex/contrib/spelatex/spelatex-spel/1.1.0.0.0-3.ogg
new file mode 100644
index 0000000000..28092584ed
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/1.1.0.0.0-3.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/1.1.0.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/1.1.0.0.0.m3u
new file mode 100644
index 0000000000..4ebe5bab70
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/1.1.0.0.0.m3u
@@ -0,0 +1,6 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+1.1.0.0.0.ogg
+1.1.0.0.0-1.ogg
+1.1.0.0.0-2.ogg
+1.1.0.0.0-3.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/1.1.0.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/1.1.0.0.0.ogg
new file mode 100644
index 0000000000..131dd33d49
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/1.1.0.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/1.2.0.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/1.2.0.0.0.m3u
new file mode 100644
index 0000000000..db1dae06a9
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/1.2.0.0.0.m3u
@@ -0,0 +1,13 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+1.2.0.0.0.ogg
+1.2.1.0.0.ogg
+1.2.1.0.0-1.ogg
+1.2.1.0.0-2.ogg
+1.2.1.0.0-3.ogg
+1.2.2.0.0.ogg
+1.2.2.0.0-1.ogg
+1.2.2.0.0-2.ogg
+1.2.2.0.0-3.ogg
+1.2.2.0.0-4.ogg
+1.2.2.0.0-5.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/1.2.0.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/1.2.0.0.0.ogg
new file mode 100644
index 0000000000..6985d8f27b
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/1.2.0.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/1.2.1.0.0-1.ogg b/macros/latex/contrib/spelatex/spelatex-spel/1.2.1.0.0-1.ogg
new file mode 100644
index 0000000000..714b76e75e
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/1.2.1.0.0-1.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/1.2.1.0.0-2.ogg b/macros/latex/contrib/spelatex/spelatex-spel/1.2.1.0.0-2.ogg
new file mode 100644
index 0000000000..a451b698c9
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/1.2.1.0.0-2.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/1.2.1.0.0-3.ogg b/macros/latex/contrib/spelatex/spelatex-spel/1.2.1.0.0-3.ogg
new file mode 100644
index 0000000000..5ab8e79931
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/1.2.1.0.0-3.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/1.2.1.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/1.2.1.0.0.m3u
new file mode 100644
index 0000000000..b0e1e17f30
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/1.2.1.0.0.m3u
@@ -0,0 +1,6 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+1.2.1.0.0.ogg
+1.2.1.0.0-1.ogg
+1.2.1.0.0-2.ogg
+1.2.1.0.0-3.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/1.2.1.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/1.2.1.0.0.ogg
new file mode 100644
index 0000000000..bdc044b04e
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/1.2.1.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/1.2.2.0.0-1.ogg b/macros/latex/contrib/spelatex/spelatex-spel/1.2.2.0.0-1.ogg
new file mode 100644
index 0000000000..aa34ddaadd
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/1.2.2.0.0-1.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/1.2.2.0.0-2.ogg b/macros/latex/contrib/spelatex/spelatex-spel/1.2.2.0.0-2.ogg
new file mode 100644
index 0000000000..a622038409
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/1.2.2.0.0-2.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/1.2.2.0.0-3.ogg b/macros/latex/contrib/spelatex/spelatex-spel/1.2.2.0.0-3.ogg
new file mode 100644
index 0000000000..2e596a4e9b
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/1.2.2.0.0-3.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/1.2.2.0.0-4.ogg b/macros/latex/contrib/spelatex/spelatex-spel/1.2.2.0.0-4.ogg
new file mode 100644
index 0000000000..fd0cb0f042
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/1.2.2.0.0-4.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/1.2.2.0.0-5.ogg b/macros/latex/contrib/spelatex/spelatex-spel/1.2.2.0.0-5.ogg
new file mode 100644
index 0000000000..ca6e7b0840
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/1.2.2.0.0-5.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/1.2.2.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/1.2.2.0.0.m3u
new file mode 100644
index 0000000000..ad74166429
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/1.2.2.0.0.m3u
@@ -0,0 +1,8 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+1.2.2.0.0.ogg
+1.2.2.0.0-1.ogg
+1.2.2.0.0-2.ogg
+1.2.2.0.0-3.ogg
+1.2.2.0.0-4.ogg
+1.2.2.0.0-5.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/1.2.2.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/1.2.2.0.0.ogg
new file mode 100644
index 0000000000..d30536104f
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/1.2.2.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0-1.ogg b/macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0-1.ogg
new file mode 100644
index 0000000000..8755692ae2
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0-1.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0-10.ogg b/macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0-10.ogg
new file mode 100644
index 0000000000..fd861c6630
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0-10.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0-11.ogg b/macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0-11.ogg
new file mode 100644
index 0000000000..c19ca3750d
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0-11.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0-12.ogg b/macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0-12.ogg
new file mode 100644
index 0000000000..896cfe1e9f
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0-12.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0-2.ogg b/macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0-2.ogg
new file mode 100644
index 0000000000..b2ceb636ed
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0-2.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0-3.ogg b/macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0-3.ogg
new file mode 100644
index 0000000000..2878767463
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0-3.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0-4.ogg b/macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0-4.ogg
new file mode 100644
index 0000000000..e5b76465e9
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0-4.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0-5.ogg b/macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0-5.ogg
new file mode 100644
index 0000000000..6b9483b142
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0-5.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0-6.ogg b/macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0-6.ogg
new file mode 100644
index 0000000000..6432746abe
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0-6.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0-7.ogg b/macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0-7.ogg
new file mode 100644
index 0000000000..fd282fc22e
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0-7.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0-8.ogg b/macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0-8.ogg
new file mode 100644
index 0000000000..11e45178a3
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0-8.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0-9.ogg b/macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0-9.ogg
new file mode 100644
index 0000000000..5df4676bff
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0-9.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0.m3u
new file mode 100644
index 0000000000..d673720186
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0.m3u
@@ -0,0 +1,15 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+1.3.0.0.0.ogg
+1.3.0.0.0-1.ogg
+1.3.0.0.0-2.ogg
+1.3.0.0.0-3.ogg
+1.3.0.0.0-4.ogg
+1.3.0.0.0-5.ogg
+1.3.0.0.0-6.ogg
+1.3.0.0.0-7.ogg
+1.3.0.0.0-8.ogg
+1.3.0.0.0-9.ogg
+1.3.0.0.0-10.ogg
+1.3.0.0.0-11.ogg
+1.3.0.0.0-12.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0.ogg
new file mode 100644
index 0000000000..41874f58e9
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/1.3.0.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.0.0.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/2.0.0.0.0.m3u
new file mode 100644
index 0000000000..9c053963b6
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.0.0.0.0.m3u
@@ -0,0 +1,59 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+2.0.0.0.0.ogg
+2.1.0.0.0.ogg
+2.1.0.0.0-1.ogg
+2.1.0.0.0-2.ogg
+2.1.0.0.0-3.ogg
+2.1.0.0.0-4.ogg
+2.1.0.0.0-5.ogg
+2.1.0.0.0-6.ogg
+footnote-1.ogg
+2.2.0.0.0.ogg
+2.2.1.0.0.ogg
+2.2.1.0.0-1.ogg
+2.2.1.0.0-2.ogg
+2.2.1.0.0-3.ogg
+2.2.1.0.0-4.ogg
+2.2.2.0.0.ogg
+2.2.2.0.0-1.ogg
+2.2.2.0.0-2.ogg
+2.2.2.0.0-3.ogg
+2.2.2.0.0-4.ogg
+footnote-2.ogg
+2.2.2.0.0-5.ogg
+2.2.2.0.0-6.ogg
+2.2.2.0.0-7.ogg
+2.2.2.0.0-8.ogg
+2.2.2.0.0-9.ogg
+2.2.2.0.0-10.ogg
+2.2.2.0.0-11.ogg
+2.2.2.0.0-12.ogg
+2.2.3.0.0.ogg
+2.2.3.0.0-1.ogg
+2.2.3.0.0-2.ogg
+2.2.4.0.0.ogg
+2.2.4.0.0-1.ogg
+2.2.4.0.0-2.ogg
+2.2.4.0.0-3.ogg
+2.2.4.0.0-4.ogg
+2.2.4.0.0-5.ogg
+2.2.4.0.0-6.ogg
+2.2.5.0.0.ogg
+2.2.5.0.0-1.ogg
+2.2.5.0.0-2.ogg
+2.2.6.0.0.ogg
+2.2.6.0.0-1.ogg
+2.2.6.0.0-2.ogg
+2.2.6.0.0-3.ogg
+2.3.0.0.0.ogg
+2.3.0.0.0-1.ogg
+2.3.0.0.0-2.ogg
+2.3.0.0.0-3.ogg
+2.3.0.0.0-4.ogg
+2.4.0.0.0.ogg
+2.4.0.0.0-1.ogg
+2.4.0.0.0-2.ogg
+2.4.0.0.0-3.ogg
+2.4.0.0.0-4.ogg
+2.4.0.0.0-5.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.0.0.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.0.0.0.0.ogg
new file mode 100644
index 0000000000..b25506f74b
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.0.0.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.1.0.0.0-1.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.1.0.0.0-1.ogg
new file mode 100644
index 0000000000..0351cb3d19
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.1.0.0.0-1.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.1.0.0.0-2.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.1.0.0.0-2.ogg
new file mode 100644
index 0000000000..711dc66367
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.1.0.0.0-2.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.1.0.0.0-3.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.1.0.0.0-3.ogg
new file mode 100644
index 0000000000..c8926c15ab
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.1.0.0.0-3.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.1.0.0.0-4.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.1.0.0.0-4.ogg
new file mode 100644
index 0000000000..62f31b27b8
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.1.0.0.0-4.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.1.0.0.0-5.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.1.0.0.0-5.ogg
new file mode 100644
index 0000000000..7d21a4318b
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.1.0.0.0-5.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.1.0.0.0-6.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.1.0.0.0-6.ogg
new file mode 100644
index 0000000000..8f73c2c7ca
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.1.0.0.0-6.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.1.0.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/2.1.0.0.0.m3u
new file mode 100644
index 0000000000..639be865ec
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.1.0.0.0.m3u
@@ -0,0 +1,10 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+2.1.0.0.0.ogg
+2.1.0.0.0-1.ogg
+2.1.0.0.0-2.ogg
+2.1.0.0.0-3.ogg
+2.1.0.0.0-4.ogg
+2.1.0.0.0-5.ogg
+2.1.0.0.0-6.ogg
+footnote-1.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.1.0.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.1.0.0.0.ogg
new file mode 100644
index 0000000000..7360d8018a
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.1.0.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.2.0.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/2.2.0.0.0.m3u
new file mode 100644
index 0000000000..6fba59dcf3
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.2.0.0.0.m3u
@@ -0,0 +1,39 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+2.2.0.0.0.ogg
+2.2.1.0.0.ogg
+2.2.1.0.0-1.ogg
+2.2.1.0.0-2.ogg
+2.2.1.0.0-3.ogg
+2.2.1.0.0-4.ogg
+2.2.2.0.0.ogg
+2.2.2.0.0-1.ogg
+2.2.2.0.0-2.ogg
+2.2.2.0.0-3.ogg
+2.2.2.0.0-4.ogg
+footnote-2.ogg
+2.2.2.0.0-5.ogg
+2.2.2.0.0-6.ogg
+2.2.2.0.0-7.ogg
+2.2.2.0.0-8.ogg
+2.2.2.0.0-9.ogg
+2.2.2.0.0-10.ogg
+2.2.2.0.0-11.ogg
+2.2.2.0.0-12.ogg
+2.2.3.0.0.ogg
+2.2.3.0.0-1.ogg
+2.2.3.0.0-2.ogg
+2.2.4.0.0.ogg
+2.2.4.0.0-1.ogg
+2.2.4.0.0-2.ogg
+2.2.4.0.0-3.ogg
+2.2.4.0.0-4.ogg
+2.2.4.0.0-5.ogg
+2.2.4.0.0-6.ogg
+2.2.5.0.0.ogg
+2.2.5.0.0-1.ogg
+2.2.5.0.0-2.ogg
+2.2.6.0.0.ogg
+2.2.6.0.0-1.ogg
+2.2.6.0.0-2.ogg
+2.2.6.0.0-3.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.2.0.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.2.0.0.0.ogg
new file mode 100644
index 0000000000..15e3c2f0c9
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.2.0.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.2.1.0.0-1.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.2.1.0.0-1.ogg
new file mode 100644
index 0000000000..6bf77572b9
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.2.1.0.0-1.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.2.1.0.0-2.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.2.1.0.0-2.ogg
new file mode 100644
index 0000000000..fde009a238
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.2.1.0.0-2.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.2.1.0.0-3.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.2.1.0.0-3.ogg
new file mode 100644
index 0000000000..0c47ef1f1c
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.2.1.0.0-3.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.2.1.0.0-4.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.2.1.0.0-4.ogg
new file mode 100644
index 0000000000..ede30fbdfe
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.2.1.0.0-4.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.2.1.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/2.2.1.0.0.m3u
new file mode 100644
index 0000000000..98183521d8
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.2.1.0.0.m3u
@@ -0,0 +1,7 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+2.2.1.0.0.ogg
+2.2.1.0.0-1.ogg
+2.2.1.0.0-2.ogg
+2.2.1.0.0-3.ogg
+2.2.1.0.0-4.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.2.1.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.2.1.0.0.ogg
new file mode 100644
index 0000000000..d62c585ba2
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.2.1.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0-1.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0-1.ogg
new file mode 100644
index 0000000000..a8a29d2801
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0-1.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0-10.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0-10.ogg
new file mode 100644
index 0000000000..437bbfb2fa
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0-10.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0-11.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0-11.ogg
new file mode 100644
index 0000000000..9770b89c6e
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0-11.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0-12.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0-12.ogg
new file mode 100644
index 0000000000..3f7983f7c5
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0-12.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0-2.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0-2.ogg
new file mode 100644
index 0000000000..472d803099
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0-2.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0-3.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0-3.ogg
new file mode 100644
index 0000000000..375c547c08
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0-3.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0-4.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0-4.ogg
new file mode 100644
index 0000000000..cc8c361025
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0-4.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0-5.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0-5.ogg
new file mode 100644
index 0000000000..72e05ea116
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0-5.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0-6.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0-6.ogg
new file mode 100644
index 0000000000..9a79083394
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0-6.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0-7.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0-7.ogg
new file mode 100644
index 0000000000..f154852d0e
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0-7.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0-8.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0-8.ogg
new file mode 100644
index 0000000000..511d94185c
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0-8.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0-9.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0-9.ogg
new file mode 100644
index 0000000000..69f1ac6701
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0-9.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0.m3u
new file mode 100644
index 0000000000..319b497479
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0.m3u
@@ -0,0 +1,16 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+2.2.2.0.0.ogg
+2.2.2.0.0-1.ogg
+2.2.2.0.0-2.ogg
+2.2.2.0.0-3.ogg
+2.2.2.0.0-4.ogg
+footnote-2.ogg
+2.2.2.0.0-5.ogg
+2.2.2.0.0-6.ogg
+2.2.2.0.0-7.ogg
+2.2.2.0.0-8.ogg
+2.2.2.0.0-9.ogg
+2.2.2.0.0-10.ogg
+2.2.2.0.0-11.ogg
+2.2.2.0.0-12.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0.ogg
new file mode 100644
index 0000000000..74ae517fa6
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.2.2.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.2.3.0.0-1.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.2.3.0.0-1.ogg
new file mode 100644
index 0000000000..95cc730494
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.2.3.0.0-1.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.2.3.0.0-2.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.2.3.0.0-2.ogg
new file mode 100644
index 0000000000..85b092fa09
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.2.3.0.0-2.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.2.3.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/2.2.3.0.0.m3u
new file mode 100644
index 0000000000..db806b06e6
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.2.3.0.0.m3u
@@ -0,0 +1,5 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+2.2.3.0.0.ogg
+2.2.3.0.0-1.ogg
+2.2.3.0.0-2.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.2.3.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.2.3.0.0.ogg
new file mode 100644
index 0000000000..a1832ce2db
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.2.3.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.2.4.0.0-1.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.2.4.0.0-1.ogg
new file mode 100644
index 0000000000..6bba254cb3
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.2.4.0.0-1.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.2.4.0.0-2.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.2.4.0.0-2.ogg
new file mode 100644
index 0000000000..be39c9b098
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.2.4.0.0-2.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.2.4.0.0-3.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.2.4.0.0-3.ogg
new file mode 100644
index 0000000000..19449c3761
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.2.4.0.0-3.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.2.4.0.0-4.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.2.4.0.0-4.ogg
new file mode 100644
index 0000000000..c83f2d5cae
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.2.4.0.0-4.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.2.4.0.0-5.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.2.4.0.0-5.ogg
new file mode 100644
index 0000000000..550e0e4712
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.2.4.0.0-5.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.2.4.0.0-6.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.2.4.0.0-6.ogg
new file mode 100644
index 0000000000..a725418127
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.2.4.0.0-6.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.2.4.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/2.2.4.0.0.m3u
new file mode 100644
index 0000000000..5d6b37fe95
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.2.4.0.0.m3u
@@ -0,0 +1,9 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+2.2.4.0.0.ogg
+2.2.4.0.0-1.ogg
+2.2.4.0.0-2.ogg
+2.2.4.0.0-3.ogg
+2.2.4.0.0-4.ogg
+2.2.4.0.0-5.ogg
+2.2.4.0.0-6.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.2.4.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.2.4.0.0.ogg
new file mode 100644
index 0000000000..ee37616991
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.2.4.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.2.5.0.0-1.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.2.5.0.0-1.ogg
new file mode 100644
index 0000000000..f557268e9a
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.2.5.0.0-1.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.2.5.0.0-2.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.2.5.0.0-2.ogg
new file mode 100644
index 0000000000..949ad1f84f
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.2.5.0.0-2.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.2.5.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/2.2.5.0.0.m3u
new file mode 100644
index 0000000000..1a186d15de
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.2.5.0.0.m3u
@@ -0,0 +1,5 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+2.2.5.0.0.ogg
+2.2.5.0.0-1.ogg
+2.2.5.0.0-2.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.2.5.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.2.5.0.0.ogg
new file mode 100644
index 0000000000..d2195a26cc
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.2.5.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.2.6.0.0-1.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.2.6.0.0-1.ogg
new file mode 100644
index 0000000000..cb6ebd1183
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.2.6.0.0-1.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.2.6.0.0-2.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.2.6.0.0-2.ogg
new file mode 100644
index 0000000000..8ae2cccab1
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.2.6.0.0-2.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.2.6.0.0-3.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.2.6.0.0-3.ogg
new file mode 100644
index 0000000000..c93a3c6d6c
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.2.6.0.0-3.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.2.6.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/2.2.6.0.0.m3u
new file mode 100644
index 0000000000..ae39555217
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.2.6.0.0.m3u
@@ -0,0 +1,6 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+2.2.6.0.0.ogg
+2.2.6.0.0-1.ogg
+2.2.6.0.0-2.ogg
+2.2.6.0.0-3.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.2.6.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.2.6.0.0.ogg
new file mode 100644
index 0000000000..8c82713973
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.2.6.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.3.0.0.0-1.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.3.0.0.0-1.ogg
new file mode 100644
index 0000000000..6772bbf466
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.3.0.0.0-1.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.3.0.0.0-2.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.3.0.0.0-2.ogg
new file mode 100644
index 0000000000..45d4885ae7
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.3.0.0.0-2.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.3.0.0.0-3.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.3.0.0.0-3.ogg
new file mode 100644
index 0000000000..9d5ab0c4fe
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.3.0.0.0-3.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.3.0.0.0-4.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.3.0.0.0-4.ogg
new file mode 100644
index 0000000000..1b0411966c
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.3.0.0.0-4.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.3.0.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/2.3.0.0.0.m3u
new file mode 100644
index 0000000000..8652268b66
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.3.0.0.0.m3u
@@ -0,0 +1,7 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+2.3.0.0.0.ogg
+2.3.0.0.0-1.ogg
+2.3.0.0.0-2.ogg
+2.3.0.0.0-3.ogg
+2.3.0.0.0-4.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.3.0.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.3.0.0.0.ogg
new file mode 100644
index 0000000000..955a986c87
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.3.0.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.4.0.0.0-1.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.4.0.0.0-1.ogg
new file mode 100644
index 0000000000..3a95f7e72a
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.4.0.0.0-1.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.4.0.0.0-2.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.4.0.0.0-2.ogg
new file mode 100644
index 0000000000..d137101e04
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.4.0.0.0-2.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.4.0.0.0-3.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.4.0.0.0-3.ogg
new file mode 100644
index 0000000000..b5feb6b9ce
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.4.0.0.0-3.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.4.0.0.0-4.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.4.0.0.0-4.ogg
new file mode 100644
index 0000000000..a585c2e035
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.4.0.0.0-4.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.4.0.0.0-5.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.4.0.0.0-5.ogg
new file mode 100644
index 0000000000..59f9b5a3c6
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.4.0.0.0-5.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.4.0.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/2.4.0.0.0.m3u
new file mode 100644
index 0000000000..ee754a4627
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.4.0.0.0.m3u
@@ -0,0 +1,8 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+2.4.0.0.0.ogg
+2.4.0.0.0-1.ogg
+2.4.0.0.0-2.ogg
+2.4.0.0.0-3.ogg
+2.4.0.0.0-4.ogg
+2.4.0.0.0-5.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/2.4.0.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/2.4.0.0.0.ogg
new file mode 100644
index 0000000000..32673df314
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/2.4.0.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/3.0.0.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/3.0.0.0.0.m3u
new file mode 100644
index 0000000000..8f2c49d9e4
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/3.0.0.0.0.m3u
@@ -0,0 +1,26 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+3.0.0.0.0.ogg
+3.1.0.0.0.ogg
+3.1.0.0.0-1.ogg
+3.1.0.0.0-2.ogg
+3.1.0.0.0-3.ogg
+3.2.0.0.0.ogg
+3.2.1.0.0.ogg
+3.2.1.0.0-1.ogg
+3.2.1.0.0-2.ogg
+3.2.1.0.0-3.ogg
+3.2.1.0.0-4.ogg
+3.2.1.0.0-5.ogg
+3.2.2.0.0.ogg
+3.2.2.0.0-1.ogg
+3.2.2.0.0-2.ogg
+3.2.2.0.0-3.ogg
+3.2.2.0.0-4.ogg
+3.2.2.0.0-5.ogg
+3.2.2.0.0-6.ogg
+3.3.0.0.0.ogg
+3.3.0.0.0-1.ogg
+3.4.0.0.0.ogg
+3.4.0.0.0-1.ogg
+3.4.0.0.0-2.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/3.0.0.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/3.0.0.0.0.ogg
new file mode 100644
index 0000000000..3f7aa5376b
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/3.0.0.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/3.1.0.0.0-1.ogg b/macros/latex/contrib/spelatex/spelatex-spel/3.1.0.0.0-1.ogg
new file mode 100644
index 0000000000..8de21e60da
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/3.1.0.0.0-1.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/3.1.0.0.0-2.ogg b/macros/latex/contrib/spelatex/spelatex-spel/3.1.0.0.0-2.ogg
new file mode 100644
index 0000000000..181c6ce4df
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/3.1.0.0.0-2.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/3.1.0.0.0-3.ogg b/macros/latex/contrib/spelatex/spelatex-spel/3.1.0.0.0-3.ogg
new file mode 100644
index 0000000000..374e4a19ed
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/3.1.0.0.0-3.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/3.1.0.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/3.1.0.0.0.m3u
new file mode 100644
index 0000000000..841095e90f
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/3.1.0.0.0.m3u
@@ -0,0 +1,6 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+3.1.0.0.0.ogg
+3.1.0.0.0-1.ogg
+3.1.0.0.0-2.ogg
+3.1.0.0.0-3.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/3.1.0.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/3.1.0.0.0.ogg
new file mode 100644
index 0000000000..402087171e
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/3.1.0.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/3.2.0.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/3.2.0.0.0.m3u
new file mode 100644
index 0000000000..925bdb7d03
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/3.2.0.0.0.m3u
@@ -0,0 +1,16 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+3.2.0.0.0.ogg
+3.2.1.0.0.ogg
+3.2.1.0.0-1.ogg
+3.2.1.0.0-2.ogg
+3.2.1.0.0-3.ogg
+3.2.1.0.0-4.ogg
+3.2.1.0.0-5.ogg
+3.2.2.0.0.ogg
+3.2.2.0.0-1.ogg
+3.2.2.0.0-2.ogg
+3.2.2.0.0-3.ogg
+3.2.2.0.0-4.ogg
+3.2.2.0.0-5.ogg
+3.2.2.0.0-6.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/3.2.0.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/3.2.0.0.0.ogg
new file mode 100644
index 0000000000..889afb6f22
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/3.2.0.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/3.2.1.0.0-1.ogg b/macros/latex/contrib/spelatex/spelatex-spel/3.2.1.0.0-1.ogg
new file mode 100644
index 0000000000..d47169eb17
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/3.2.1.0.0-1.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/3.2.1.0.0-2.ogg b/macros/latex/contrib/spelatex/spelatex-spel/3.2.1.0.0-2.ogg
new file mode 100644
index 0000000000..4fdf603598
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/3.2.1.0.0-2.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/3.2.1.0.0-3.ogg b/macros/latex/contrib/spelatex/spelatex-spel/3.2.1.0.0-3.ogg
new file mode 100644
index 0000000000..226d8aaa40
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/3.2.1.0.0-3.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/3.2.1.0.0-4.ogg b/macros/latex/contrib/spelatex/spelatex-spel/3.2.1.0.0-4.ogg
new file mode 100644
index 0000000000..9765dbb2c6
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/3.2.1.0.0-4.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/3.2.1.0.0-5.ogg b/macros/latex/contrib/spelatex/spelatex-spel/3.2.1.0.0-5.ogg
new file mode 100644
index 0000000000..44ba2dd04a
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/3.2.1.0.0-5.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/3.2.1.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/3.2.1.0.0.m3u
new file mode 100644
index 0000000000..4dca129e2c
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/3.2.1.0.0.m3u
@@ -0,0 +1,8 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+3.2.1.0.0.ogg
+3.2.1.0.0-1.ogg
+3.2.1.0.0-2.ogg
+3.2.1.0.0-3.ogg
+3.2.1.0.0-4.ogg
+3.2.1.0.0-5.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/3.2.1.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/3.2.1.0.0.ogg
new file mode 100644
index 0000000000..cf767af99b
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/3.2.1.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/3.2.2.0.0-1.ogg b/macros/latex/contrib/spelatex/spelatex-spel/3.2.2.0.0-1.ogg
new file mode 100644
index 0000000000..02fd558b14
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/3.2.2.0.0-1.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/3.2.2.0.0-2.ogg b/macros/latex/contrib/spelatex/spelatex-spel/3.2.2.0.0-2.ogg
new file mode 100644
index 0000000000..83c9a9a5f4
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/3.2.2.0.0-2.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/3.2.2.0.0-3.ogg b/macros/latex/contrib/spelatex/spelatex-spel/3.2.2.0.0-3.ogg
new file mode 100644
index 0000000000..ed2d91628d
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/3.2.2.0.0-3.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/3.2.2.0.0-4.ogg b/macros/latex/contrib/spelatex/spelatex-spel/3.2.2.0.0-4.ogg
new file mode 100644
index 0000000000..0d64440011
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/3.2.2.0.0-4.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/3.2.2.0.0-5.ogg b/macros/latex/contrib/spelatex/spelatex-spel/3.2.2.0.0-5.ogg
new file mode 100644
index 0000000000..0c554f69ba
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/3.2.2.0.0-5.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/3.2.2.0.0-6.ogg b/macros/latex/contrib/spelatex/spelatex-spel/3.2.2.0.0-6.ogg
new file mode 100644
index 0000000000..7f0754c7bb
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/3.2.2.0.0-6.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/3.2.2.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/3.2.2.0.0.m3u
new file mode 100644
index 0000000000..f748017144
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/3.2.2.0.0.m3u
@@ -0,0 +1,9 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+3.2.2.0.0.ogg
+3.2.2.0.0-1.ogg
+3.2.2.0.0-2.ogg
+3.2.2.0.0-3.ogg
+3.2.2.0.0-4.ogg
+3.2.2.0.0-5.ogg
+3.2.2.0.0-6.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/3.2.2.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/3.2.2.0.0.ogg
new file mode 100644
index 0000000000..afff242cea
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/3.2.2.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/3.3.0.0.0-1.ogg b/macros/latex/contrib/spelatex/spelatex-spel/3.3.0.0.0-1.ogg
new file mode 100644
index 0000000000..bcee2491e1
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/3.3.0.0.0-1.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/3.3.0.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/3.3.0.0.0.m3u
new file mode 100644
index 0000000000..6fc1783bde
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/3.3.0.0.0.m3u
@@ -0,0 +1,4 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+3.3.0.0.0.ogg
+3.3.0.0.0-1.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/3.3.0.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/3.3.0.0.0.ogg
new file mode 100644
index 0000000000..f144a1d1a6
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/3.3.0.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/3.4.0.0.0-1.ogg b/macros/latex/contrib/spelatex/spelatex-spel/3.4.0.0.0-1.ogg
new file mode 100644
index 0000000000..caba787f5d
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/3.4.0.0.0-1.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/3.4.0.0.0-2.ogg b/macros/latex/contrib/spelatex/spelatex-spel/3.4.0.0.0-2.ogg
new file mode 100644
index 0000000000..7785c186eb
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/3.4.0.0.0-2.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/3.4.0.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/3.4.0.0.0.m3u
new file mode 100644
index 0000000000..6839de2f60
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/3.4.0.0.0.m3u
@@ -0,0 +1,5 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+3.4.0.0.0.ogg
+3.4.0.0.0-1.ogg
+3.4.0.0.0-2.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/3.4.0.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/3.4.0.0.0.ogg
new file mode 100644
index 0000000000..6da364e1f3
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/3.4.0.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.0.0.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/4.0.0.0.0.m3u
new file mode 100644
index 0000000000..9d5aff05d5
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.0.0.0.0.m3u
@@ -0,0 +1,53 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+4.0.0.0.0.ogg
+4.1.0.0.0.ogg
+4.1.0.0.0-1.ogg
+4.1.0.0.0-2.ogg
+4.1.0.0.0-3.ogg
+4.1.0.0.0-4.ogg
+4.1.0.0.0-5.ogg
+4.1.0.0.0-6.ogg
+4.1.0.0.0-7.ogg
+4.1.0.0.0-8.ogg
+4.1.1.0.0.ogg
+4.1.1.0.0-1.ogg
+4.1.1.0.0-2.ogg
+4.1.1.0.0-3.ogg
+4.1.1.0.0-4.ogg
+4.1.2.0.0.ogg
+4.1.2.0.0-1.ogg
+4.1.2.0.0-2.ogg
+4.1.3.0.0.ogg
+4.1.3.0.0-1.ogg
+4.1.3.0.0-2.ogg
+4.1.3.0.0-3.ogg
+4.1.3.0.0-4.ogg
+4.1.3.0.0-5.ogg
+4.1.4.0.0.ogg
+4.1.4.0.0-1.ogg
+4.1.4.0.0-2.ogg
+4.1.4.0.0-3.ogg
+4.1.4.0.0-4.ogg
+4.1.5.0.0.ogg
+4.1.5.0.0-1.ogg
+4.1.5.0.0-2.ogg
+4.1.5.0.0-3.ogg
+4.1.5.0.0-4.ogg
+4.1.6.0.0.ogg
+4.1.6.0.0-1.ogg
+4.1.6.0.0-2.ogg
+4.1.6.0.0-3.ogg
+4.1.6.0.0-4.ogg
+4.1.6.0.0-5.ogg
+4.1.7.0.0.ogg
+4.1.7.0.0-1.ogg
+4.1.7.0.0-2.ogg
+4.1.7.0.0-3.ogg
+4.1.7.0.0-4.ogg
+4.2.0.0.0.ogg
+4.2.0.0.0-1.ogg
+4.2.0.0.0-2.ogg
+4.2.0.0.0-3.ogg
+4.2.0.0.0-4.ogg
+4.2.0.0.0-5.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.0.0.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/4.0.0.0.0.ogg
new file mode 100644
index 0000000000..e05874d6ba
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.0.0.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.0.0.0-1.ogg b/macros/latex/contrib/spelatex/spelatex-spel/4.1.0.0.0-1.ogg
new file mode 100644
index 0000000000..58dc04068d
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.0.0.0-1.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.0.0.0-2.ogg b/macros/latex/contrib/spelatex/spelatex-spel/4.1.0.0.0-2.ogg
new file mode 100644
index 0000000000..a1483cea12
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.0.0.0-2.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.0.0.0-3.ogg b/macros/latex/contrib/spelatex/spelatex-spel/4.1.0.0.0-3.ogg
new file mode 100644
index 0000000000..44ca72ba64
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.0.0.0-3.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.0.0.0-4.ogg b/macros/latex/contrib/spelatex/spelatex-spel/4.1.0.0.0-4.ogg
new file mode 100644
index 0000000000..39a304fb03
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.0.0.0-4.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.0.0.0-5.ogg b/macros/latex/contrib/spelatex/spelatex-spel/4.1.0.0.0-5.ogg
new file mode 100644
index 0000000000..67fa7fce21
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.0.0.0-5.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.0.0.0-6.ogg b/macros/latex/contrib/spelatex/spelatex-spel/4.1.0.0.0-6.ogg
new file mode 100644
index 0000000000..8fd82f60d0
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.0.0.0-6.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.0.0.0-7.ogg b/macros/latex/contrib/spelatex/spelatex-spel/4.1.0.0.0-7.ogg
new file mode 100644
index 0000000000..159cc44e6a
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.0.0.0-7.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.0.0.0-8.ogg b/macros/latex/contrib/spelatex/spelatex-spel/4.1.0.0.0-8.ogg
new file mode 100644
index 0000000000..d70d6468e8
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.0.0.0-8.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.0.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/4.1.0.0.0.m3u
new file mode 100644
index 0000000000..3a01c842f0
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.0.0.0.m3u
@@ -0,0 +1,46 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+4.1.0.0.0.ogg
+4.1.0.0.0-1.ogg
+4.1.0.0.0-2.ogg
+4.1.0.0.0-3.ogg
+4.1.0.0.0-4.ogg
+4.1.0.0.0-5.ogg
+4.1.0.0.0-6.ogg
+4.1.0.0.0-7.ogg
+4.1.0.0.0-8.ogg
+4.1.1.0.0.ogg
+4.1.1.0.0-1.ogg
+4.1.1.0.0-2.ogg
+4.1.1.0.0-3.ogg
+4.1.1.0.0-4.ogg
+4.1.2.0.0.ogg
+4.1.2.0.0-1.ogg
+4.1.2.0.0-2.ogg
+4.1.3.0.0.ogg
+4.1.3.0.0-1.ogg
+4.1.3.0.0-2.ogg
+4.1.3.0.0-3.ogg
+4.1.3.0.0-4.ogg
+4.1.3.0.0-5.ogg
+4.1.4.0.0.ogg
+4.1.4.0.0-1.ogg
+4.1.4.0.0-2.ogg
+4.1.4.0.0-3.ogg
+4.1.4.0.0-4.ogg
+4.1.5.0.0.ogg
+4.1.5.0.0-1.ogg
+4.1.5.0.0-2.ogg
+4.1.5.0.0-3.ogg
+4.1.5.0.0-4.ogg
+4.1.6.0.0.ogg
+4.1.6.0.0-1.ogg
+4.1.6.0.0-2.ogg
+4.1.6.0.0-3.ogg
+4.1.6.0.0-4.ogg
+4.1.6.0.0-5.ogg
+4.1.7.0.0.ogg
+4.1.7.0.0-1.ogg
+4.1.7.0.0-2.ogg
+4.1.7.0.0-3.ogg
+4.1.7.0.0-4.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.0.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/4.1.0.0.0.ogg
new file mode 100644
index 0000000000..0ead8d7bca
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.0.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.1.0.0-1.ogg b/macros/latex/contrib/spelatex/spelatex-spel/4.1.1.0.0-1.ogg
new file mode 100644
index 0000000000..6d37123ff3
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.1.0.0-1.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.1.0.0-2.ogg b/macros/latex/contrib/spelatex/spelatex-spel/4.1.1.0.0-2.ogg
new file mode 100644
index 0000000000..8720221612
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.1.0.0-2.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.1.0.0-3.ogg b/macros/latex/contrib/spelatex/spelatex-spel/4.1.1.0.0-3.ogg
new file mode 100644
index 0000000000..e526fea8ca
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.1.0.0-3.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.1.0.0-4.ogg b/macros/latex/contrib/spelatex/spelatex-spel/4.1.1.0.0-4.ogg
new file mode 100644
index 0000000000..f05f6410f6
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.1.0.0-4.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.1.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/4.1.1.0.0.m3u
new file mode 100644
index 0000000000..c456177811
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.1.0.0.m3u
@@ -0,0 +1,7 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+4.1.1.0.0.ogg
+4.1.1.0.0-1.ogg
+4.1.1.0.0-2.ogg
+4.1.1.0.0-3.ogg
+4.1.1.0.0-4.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.1.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/4.1.1.0.0.ogg
new file mode 100644
index 0000000000..a68cbb7f86
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.1.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.2.0.0-1.ogg b/macros/latex/contrib/spelatex/spelatex-spel/4.1.2.0.0-1.ogg
new file mode 100644
index 0000000000..34c7209ae5
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.2.0.0-1.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.2.0.0-2.ogg b/macros/latex/contrib/spelatex/spelatex-spel/4.1.2.0.0-2.ogg
new file mode 100644
index 0000000000..d20e2c57c3
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.2.0.0-2.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.2.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/4.1.2.0.0.m3u
new file mode 100644
index 0000000000..a00d94f72f
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.2.0.0.m3u
@@ -0,0 +1,5 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+4.1.2.0.0.ogg
+4.1.2.0.0-1.ogg
+4.1.2.0.0-2.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.2.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/4.1.2.0.0.ogg
new file mode 100644
index 0000000000..24fe12ce0a
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.2.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.3.0.0-1.ogg b/macros/latex/contrib/spelatex/spelatex-spel/4.1.3.0.0-1.ogg
new file mode 100644
index 0000000000..ce7eb24a73
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.3.0.0-1.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.3.0.0-2.ogg b/macros/latex/contrib/spelatex/spelatex-spel/4.1.3.0.0-2.ogg
new file mode 100644
index 0000000000..e303e96f8e
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.3.0.0-2.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.3.0.0-3.ogg b/macros/latex/contrib/spelatex/spelatex-spel/4.1.3.0.0-3.ogg
new file mode 100644
index 0000000000..d20e2c57c3
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.3.0.0-3.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.3.0.0-4.ogg b/macros/latex/contrib/spelatex/spelatex-spel/4.1.3.0.0-4.ogg
new file mode 100644
index 0000000000..bdbb7e4f6e
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.3.0.0-4.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.3.0.0-5.ogg b/macros/latex/contrib/spelatex/spelatex-spel/4.1.3.0.0-5.ogg
new file mode 100644
index 0000000000..d20e2c57c3
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.3.0.0-5.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.3.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/4.1.3.0.0.m3u
new file mode 100644
index 0000000000..6a3684a7b3
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.3.0.0.m3u
@@ -0,0 +1,8 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+4.1.3.0.0.ogg
+4.1.3.0.0-1.ogg
+4.1.3.0.0-2.ogg
+4.1.3.0.0-3.ogg
+4.1.3.0.0-4.ogg
+4.1.3.0.0-5.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.3.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/4.1.3.0.0.ogg
new file mode 100644
index 0000000000..2f2d924197
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.3.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.4.0.0-1.ogg b/macros/latex/contrib/spelatex/spelatex-spel/4.1.4.0.0-1.ogg
new file mode 100644
index 0000000000..6052ee961a
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.4.0.0-1.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.4.0.0-2.ogg b/macros/latex/contrib/spelatex/spelatex-spel/4.1.4.0.0-2.ogg
new file mode 100644
index 0000000000..362145b403
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.4.0.0-2.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.4.0.0-3.ogg b/macros/latex/contrib/spelatex/spelatex-spel/4.1.4.0.0-3.ogg
new file mode 100644
index 0000000000..9d0007377d
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.4.0.0-3.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.4.0.0-4.ogg b/macros/latex/contrib/spelatex/spelatex-spel/4.1.4.0.0-4.ogg
new file mode 100644
index 0000000000..e6633a1efc
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.4.0.0-4.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.4.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/4.1.4.0.0.m3u
new file mode 100644
index 0000000000..e9a7ce2db1
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.4.0.0.m3u
@@ -0,0 +1,7 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+4.1.4.0.0.ogg
+4.1.4.0.0-1.ogg
+4.1.4.0.0-2.ogg
+4.1.4.0.0-3.ogg
+4.1.4.0.0-4.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.4.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/4.1.4.0.0.ogg
new file mode 100644
index 0000000000..e7b7866591
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.4.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.5.0.0-1.ogg b/macros/latex/contrib/spelatex/spelatex-spel/4.1.5.0.0-1.ogg
new file mode 100644
index 0000000000..1949056128
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.5.0.0-1.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.5.0.0-2.ogg b/macros/latex/contrib/spelatex/spelatex-spel/4.1.5.0.0-2.ogg
new file mode 100644
index 0000000000..247c35c3a4
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.5.0.0-2.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.5.0.0-3.ogg b/macros/latex/contrib/spelatex/spelatex-spel/4.1.5.0.0-3.ogg
new file mode 100644
index 0000000000..7f3d1fb857
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.5.0.0-3.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.5.0.0-4.ogg b/macros/latex/contrib/spelatex/spelatex-spel/4.1.5.0.0-4.ogg
new file mode 100644
index 0000000000..3f1990e971
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.5.0.0-4.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.5.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/4.1.5.0.0.m3u
new file mode 100644
index 0000000000..46999ff035
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.5.0.0.m3u
@@ -0,0 +1,7 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+4.1.5.0.0.ogg
+4.1.5.0.0-1.ogg
+4.1.5.0.0-2.ogg
+4.1.5.0.0-3.ogg
+4.1.5.0.0-4.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.5.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/4.1.5.0.0.ogg
new file mode 100644
index 0000000000..2e17823934
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.5.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.6.0.0-1.ogg b/macros/latex/contrib/spelatex/spelatex-spel/4.1.6.0.0-1.ogg
new file mode 100644
index 0000000000..a3f5673c63
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.6.0.0-1.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.6.0.0-2.ogg b/macros/latex/contrib/spelatex/spelatex-spel/4.1.6.0.0-2.ogg
new file mode 100644
index 0000000000..e4469c62f8
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.6.0.0-2.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.6.0.0-3.ogg b/macros/latex/contrib/spelatex/spelatex-spel/4.1.6.0.0-3.ogg
new file mode 100644
index 0000000000..2a89c9e2af
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.6.0.0-3.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.6.0.0-4.ogg b/macros/latex/contrib/spelatex/spelatex-spel/4.1.6.0.0-4.ogg
new file mode 100644
index 0000000000..da6ed1a16f
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.6.0.0-4.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.6.0.0-5.ogg b/macros/latex/contrib/spelatex/spelatex-spel/4.1.6.0.0-5.ogg
new file mode 100644
index 0000000000..575d63530a
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.6.0.0-5.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.6.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/4.1.6.0.0.m3u
new file mode 100644
index 0000000000..1b21289bb0
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.6.0.0.m3u
@@ -0,0 +1,8 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+4.1.6.0.0.ogg
+4.1.6.0.0-1.ogg
+4.1.6.0.0-2.ogg
+4.1.6.0.0-3.ogg
+4.1.6.0.0-4.ogg
+4.1.6.0.0-5.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.6.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/4.1.6.0.0.ogg
new file mode 100644
index 0000000000..e417d4427f
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.6.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.7.0.0-1.ogg b/macros/latex/contrib/spelatex/spelatex-spel/4.1.7.0.0-1.ogg
new file mode 100644
index 0000000000..cc6324a68b
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.7.0.0-1.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.7.0.0-2.ogg b/macros/latex/contrib/spelatex/spelatex-spel/4.1.7.0.0-2.ogg
new file mode 100644
index 0000000000..d913b6722b
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.7.0.0-2.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.7.0.0-3.ogg b/macros/latex/contrib/spelatex/spelatex-spel/4.1.7.0.0-3.ogg
new file mode 100644
index 0000000000..8049b4c6f2
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.7.0.0-3.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.7.0.0-4.ogg b/macros/latex/contrib/spelatex/spelatex-spel/4.1.7.0.0-4.ogg
new file mode 100644
index 0000000000..4b2aa15351
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.7.0.0-4.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.7.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/4.1.7.0.0.m3u
new file mode 100644
index 0000000000..59d35f8864
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.7.0.0.m3u
@@ -0,0 +1,7 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+4.1.7.0.0.ogg
+4.1.7.0.0-1.ogg
+4.1.7.0.0-2.ogg
+4.1.7.0.0-3.ogg
+4.1.7.0.0-4.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.1.7.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/4.1.7.0.0.ogg
new file mode 100644
index 0000000000..5023aa141e
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.1.7.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.2.0.0.0-1.ogg b/macros/latex/contrib/spelatex/spelatex-spel/4.2.0.0.0-1.ogg
new file mode 100644
index 0000000000..e9f6dc1fb0
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.2.0.0.0-1.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.2.0.0.0-2.ogg b/macros/latex/contrib/spelatex/spelatex-spel/4.2.0.0.0-2.ogg
new file mode 100644
index 0000000000..29f8601a16
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.2.0.0.0-2.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.2.0.0.0-3.ogg b/macros/latex/contrib/spelatex/spelatex-spel/4.2.0.0.0-3.ogg
new file mode 100644
index 0000000000..d38401e89e
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.2.0.0.0-3.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.2.0.0.0-4.ogg b/macros/latex/contrib/spelatex/spelatex-spel/4.2.0.0.0-4.ogg
new file mode 100644
index 0000000000..0f703d3092
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.2.0.0.0-4.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.2.0.0.0-5.ogg b/macros/latex/contrib/spelatex/spelatex-spel/4.2.0.0.0-5.ogg
new file mode 100644
index 0000000000..6b05a09f2e
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.2.0.0.0-5.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.2.0.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/4.2.0.0.0.m3u
new file mode 100644
index 0000000000..dc99929f4a
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.2.0.0.0.m3u
@@ -0,0 +1,8 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+4.2.0.0.0.ogg
+4.2.0.0.0-1.ogg
+4.2.0.0.0-2.ogg
+4.2.0.0.0-3.ogg
+4.2.0.0.0-4.ogg
+4.2.0.0.0-5.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/4.2.0.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/4.2.0.0.0.ogg
new file mode 100644
index 0000000000..4a86da2c86
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/4.2.0.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/5.0.0.0.0-1.ogg b/macros/latex/contrib/spelatex/spelatex-spel/5.0.0.0.0-1.ogg
new file mode 100644
index 0000000000..c039789ca4
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/5.0.0.0.0-1.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/5.0.0.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/5.0.0.0.0.m3u
new file mode 100644
index 0000000000..270a6f6c2b
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/5.0.0.0.0.m3u
@@ -0,0 +1,4 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+5.0.0.0.0.ogg
+5.0.0.0.0-1.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/5.0.0.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/5.0.0.0.0.ogg
new file mode 100644
index 0000000000..9d384db35b
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/5.0.0.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.0.0.0.0-1.ogg b/macros/latex/contrib/spelatex/spelatex-spel/6.0.0.0.0-1.ogg
new file mode 100644
index 0000000000..b959950db4
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.0.0.0.0-1.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.0.0.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/6.0.0.0.0.m3u
new file mode 100644
index 0000000000..1e0e8f0664
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.0.0.0.0.m3u
@@ -0,0 +1,48 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+6.0.0.0.0.ogg
+6.0.0.0.0-1.ogg
+6.1.0.0.0.ogg
+6.1.0.0.0-1.ogg
+6.2.0.0.0.ogg
+6.2.1.0.0.ogg
+6.2.1.0.0-1.ogg
+6.2.2.0.0.ogg
+6.2.2.0.0-1.ogg
+6.3.0.0.0.ogg
+6.3.1.0.0.ogg
+6.3.1.0.0-1.ogg
+6.3.2.0.0.ogg
+6.3.2.0.0-1.ogg
+6.3.2.0.0-2.ogg
+6.3.2.0.0-3.ogg
+6.3.2.0.0-4.ogg
+6.3.2.0.0-5.ogg
+6.3.2.0.0-6.ogg
+6.3.3.0.0.ogg
+6.3.3.0.0-1.ogg
+6.4.0.0.0.ogg
+6.4.0.0.0-1.ogg
+6.4.0.0.0-2.ogg
+6.5.0.0.0.ogg
+6.5.0.0.0-1.ogg
+6.5.0.0.0-2.ogg
+6.6.0.0.0.ogg
+6.6.1.0.0.ogg
+6.6.1.0.0-1.ogg
+6.6.1.0.0-2.ogg
+6.6.1.0.0-3.ogg
+6.6.2.0.0.ogg
+6.6.2.0.0-1.ogg
+6.7.0.0.0.ogg
+6.7.0.0.0-1.ogg
+6.7.0.0.0-2.ogg
+6.7.0.0.0-3.ogg
+6.7.0.0.0-4.ogg
+6.7.0.0.0-5.ogg
+6.7.0.0.0-6.ogg
+6.7.0.0.0-7.ogg
+6.7.0.0.0-8.ogg
+6.7.0.0.0-9.ogg
+6.7.0.0.0-10.ogg
+6.7.0.0.0-11.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.0.0.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/6.0.0.0.0.ogg
new file mode 100644
index 0000000000..f1b641261b
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.0.0.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.1.0.0.0-1.ogg b/macros/latex/contrib/spelatex/spelatex-spel/6.1.0.0.0-1.ogg
new file mode 100644
index 0000000000..ac16291da1
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.1.0.0.0-1.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.1.0.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/6.1.0.0.0.m3u
new file mode 100644
index 0000000000..523f40cae3
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.1.0.0.0.m3u
@@ -0,0 +1,4 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+6.1.0.0.0.ogg
+6.1.0.0.0-1.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.1.0.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/6.1.0.0.0.ogg
new file mode 100644
index 0000000000..8f149312f2
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.1.0.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.2.0.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/6.2.0.0.0.m3u
new file mode 100644
index 0000000000..e204a3185c
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.2.0.0.0.m3u
@@ -0,0 +1,7 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+6.2.0.0.0.ogg
+6.2.1.0.0.ogg
+6.2.1.0.0-1.ogg
+6.2.2.0.0.ogg
+6.2.2.0.0-1.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.2.0.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/6.2.0.0.0.ogg
new file mode 100644
index 0000000000..122a2dbbcf
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.2.0.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.2.1.0.0-1.ogg b/macros/latex/contrib/spelatex/spelatex-spel/6.2.1.0.0-1.ogg
new file mode 100644
index 0000000000..464d55991a
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.2.1.0.0-1.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.2.1.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/6.2.1.0.0.m3u
new file mode 100644
index 0000000000..a5741a63f1
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.2.1.0.0.m3u
@@ -0,0 +1,4 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+6.2.1.0.0.ogg
+6.2.1.0.0-1.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.2.1.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/6.2.1.0.0.ogg
new file mode 100644
index 0000000000..dcdb3dc3f2
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.2.1.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.2.2.0.0-1.ogg b/macros/latex/contrib/spelatex/spelatex-spel/6.2.2.0.0-1.ogg
new file mode 100644
index 0000000000..b3f0b35ec6
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.2.2.0.0-1.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.2.2.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/6.2.2.0.0.m3u
new file mode 100644
index 0000000000..47a9259f45
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.2.2.0.0.m3u
@@ -0,0 +1,4 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+6.2.2.0.0.ogg
+6.2.2.0.0-1.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.2.2.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/6.2.2.0.0.ogg
new file mode 100644
index 0000000000..0d189cb732
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.2.2.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.3.0.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/6.3.0.0.0.m3u
new file mode 100644
index 0000000000..5f1ab83f22
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.3.0.0.0.m3u
@@ -0,0 +1,14 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+6.3.0.0.0.ogg
+6.3.1.0.0.ogg
+6.3.1.0.0-1.ogg
+6.3.2.0.0.ogg
+6.3.2.0.0-1.ogg
+6.3.2.0.0-2.ogg
+6.3.2.0.0-3.ogg
+6.3.2.0.0-4.ogg
+6.3.2.0.0-5.ogg
+6.3.2.0.0-6.ogg
+6.3.3.0.0.ogg
+6.3.3.0.0-1.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.3.0.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/6.3.0.0.0.ogg
new file mode 100644
index 0000000000..c5129d96af
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.3.0.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.3.1.0.0-1.ogg b/macros/latex/contrib/spelatex/spelatex-spel/6.3.1.0.0-1.ogg
new file mode 100644
index 0000000000..f8f68b313b
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.3.1.0.0-1.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.3.1.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/6.3.1.0.0.m3u
new file mode 100644
index 0000000000..03c58738cd
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.3.1.0.0.m3u
@@ -0,0 +1,4 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+6.3.1.0.0.ogg
+6.3.1.0.0-1.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.3.1.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/6.3.1.0.0.ogg
new file mode 100644
index 0000000000..13dc05e262
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.3.1.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.3.2.0.0-1.ogg b/macros/latex/contrib/spelatex/spelatex-spel/6.3.2.0.0-1.ogg
new file mode 100644
index 0000000000..260158312f
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.3.2.0.0-1.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.3.2.0.0-2.ogg b/macros/latex/contrib/spelatex/spelatex-spel/6.3.2.0.0-2.ogg
new file mode 100644
index 0000000000..8a43e52e34
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.3.2.0.0-2.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.3.2.0.0-3.ogg b/macros/latex/contrib/spelatex/spelatex-spel/6.3.2.0.0-3.ogg
new file mode 100644
index 0000000000..5de30a7757
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.3.2.0.0-3.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.3.2.0.0-4.ogg b/macros/latex/contrib/spelatex/spelatex-spel/6.3.2.0.0-4.ogg
new file mode 100644
index 0000000000..1e35aaed0f
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.3.2.0.0-4.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.3.2.0.0-5.ogg b/macros/latex/contrib/spelatex/spelatex-spel/6.3.2.0.0-5.ogg
new file mode 100644
index 0000000000..bcb48dda01
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.3.2.0.0-5.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.3.2.0.0-6.ogg b/macros/latex/contrib/spelatex/spelatex-spel/6.3.2.0.0-6.ogg
new file mode 100644
index 0000000000..9b1d6ab7d7
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.3.2.0.0-6.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.3.2.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/6.3.2.0.0.m3u
new file mode 100644
index 0000000000..9932c5cbfc
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.3.2.0.0.m3u
@@ -0,0 +1,9 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+6.3.2.0.0.ogg
+6.3.2.0.0-1.ogg
+6.3.2.0.0-2.ogg
+6.3.2.0.0-3.ogg
+6.3.2.0.0-4.ogg
+6.3.2.0.0-5.ogg
+6.3.2.0.0-6.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.3.2.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/6.3.2.0.0.ogg
new file mode 100644
index 0000000000..d2a70dbf20
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.3.2.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.3.3.0.0-1.ogg b/macros/latex/contrib/spelatex/spelatex-spel/6.3.3.0.0-1.ogg
new file mode 100644
index 0000000000..a1f79c1f83
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.3.3.0.0-1.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.3.3.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/6.3.3.0.0.m3u
new file mode 100644
index 0000000000..c4fd845f5b
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.3.3.0.0.m3u
@@ -0,0 +1,4 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+6.3.3.0.0.ogg
+6.3.3.0.0-1.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.3.3.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/6.3.3.0.0.ogg
new file mode 100644
index 0000000000..b7c47100a5
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.3.3.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.4.0.0.0-1.ogg b/macros/latex/contrib/spelatex/spelatex-spel/6.4.0.0.0-1.ogg
new file mode 100644
index 0000000000..90bf30c41f
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.4.0.0.0-1.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.4.0.0.0-2.ogg b/macros/latex/contrib/spelatex/spelatex-spel/6.4.0.0.0-2.ogg
new file mode 100644
index 0000000000..201f087a7e
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.4.0.0.0-2.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.4.0.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/6.4.0.0.0.m3u
new file mode 100644
index 0000000000..ef2790eb3c
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.4.0.0.0.m3u
@@ -0,0 +1,5 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+6.4.0.0.0.ogg
+6.4.0.0.0-1.ogg
+6.4.0.0.0-2.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.4.0.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/6.4.0.0.0.ogg
new file mode 100644
index 0000000000..68e58600eb
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.4.0.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.5.0.0.0-1.ogg b/macros/latex/contrib/spelatex/spelatex-spel/6.5.0.0.0-1.ogg
new file mode 100644
index 0000000000..1c1eff8793
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.5.0.0.0-1.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.5.0.0.0-2.ogg b/macros/latex/contrib/spelatex/spelatex-spel/6.5.0.0.0-2.ogg
new file mode 100644
index 0000000000..b5254ef6c2
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.5.0.0.0-2.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.5.0.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/6.5.0.0.0.m3u
new file mode 100644
index 0000000000..92cb21e03c
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.5.0.0.0.m3u
@@ -0,0 +1,5 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+6.5.0.0.0.ogg
+6.5.0.0.0-1.ogg
+6.5.0.0.0-2.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.5.0.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/6.5.0.0.0.ogg
new file mode 100644
index 0000000000..53d769aac7
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.5.0.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.6.0.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/6.6.0.0.0.m3u
new file mode 100644
index 0000000000..a3e705a5a5
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.6.0.0.0.m3u
@@ -0,0 +1,9 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+6.6.0.0.0.ogg
+6.6.1.0.0.ogg
+6.6.1.0.0-1.ogg
+6.6.1.0.0-2.ogg
+6.6.1.0.0-3.ogg
+6.6.2.0.0.ogg
+6.6.2.0.0-1.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.6.0.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/6.6.0.0.0.ogg
new file mode 100644
index 0000000000..700b8c7e9a
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.6.0.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.6.1.0.0-1.ogg b/macros/latex/contrib/spelatex/spelatex-spel/6.6.1.0.0-1.ogg
new file mode 100644
index 0000000000..abd95d02ff
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.6.1.0.0-1.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.6.1.0.0-2.ogg b/macros/latex/contrib/spelatex/spelatex-spel/6.6.1.0.0-2.ogg
new file mode 100644
index 0000000000..5200b6e405
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.6.1.0.0-2.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.6.1.0.0-3.ogg b/macros/latex/contrib/spelatex/spelatex-spel/6.6.1.0.0-3.ogg
new file mode 100644
index 0000000000..194c9db5ce
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.6.1.0.0-3.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.6.1.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/6.6.1.0.0.m3u
new file mode 100644
index 0000000000..e45e6c3453
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.6.1.0.0.m3u
@@ -0,0 +1,6 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+6.6.1.0.0.ogg
+6.6.1.0.0-1.ogg
+6.6.1.0.0-2.ogg
+6.6.1.0.0-3.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.6.1.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/6.6.1.0.0.ogg
new file mode 100644
index 0000000000..5c098338e6
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.6.1.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.6.2.0.0-1.ogg b/macros/latex/contrib/spelatex/spelatex-spel/6.6.2.0.0-1.ogg
new file mode 100644
index 0000000000..5eae47cfde
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.6.2.0.0-1.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.6.2.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/6.6.2.0.0.m3u
new file mode 100644
index 0000000000..fbb664ca1e
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.6.2.0.0.m3u
@@ -0,0 +1,4 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+6.6.2.0.0.ogg
+6.6.2.0.0-1.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.6.2.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/6.6.2.0.0.ogg
new file mode 100644
index 0000000000..a36c28ebe7
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.6.2.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0-1.ogg b/macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0-1.ogg
new file mode 100644
index 0000000000..d500956316
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0-1.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0-10.ogg b/macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0-10.ogg
new file mode 100644
index 0000000000..a34acee074
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0-10.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0-11.ogg b/macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0-11.ogg
new file mode 100644
index 0000000000..7a635a44b2
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0-11.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0-2.ogg b/macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0-2.ogg
new file mode 100644
index 0000000000..affd24989c
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0-2.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0-3.ogg b/macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0-3.ogg
new file mode 100644
index 0000000000..9fe42a9abd
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0-3.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0-4.ogg b/macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0-4.ogg
new file mode 100644
index 0000000000..91a5eb0453
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0-4.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0-5.ogg b/macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0-5.ogg
new file mode 100644
index 0000000000..0268496ef5
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0-5.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0-6.ogg b/macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0-6.ogg
new file mode 100644
index 0000000000..c4bc4dfd11
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0-6.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0-7.ogg b/macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0-7.ogg
new file mode 100644
index 0000000000..2bb5feffa5
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0-7.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0-8.ogg b/macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0-8.ogg
new file mode 100644
index 0000000000..9e0a398575
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0-8.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0-9.ogg b/macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0-9.ogg
new file mode 100644
index 0000000000..e1185b7cd4
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0-9.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0.m3u
new file mode 100644
index 0000000000..81788dd3a9
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0.m3u
@@ -0,0 +1,14 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+6.7.0.0.0.ogg
+6.7.0.0.0-1.ogg
+6.7.0.0.0-2.ogg
+6.7.0.0.0-3.ogg
+6.7.0.0.0-4.ogg
+6.7.0.0.0-5.ogg
+6.7.0.0.0-6.ogg
+6.7.0.0.0-7.ogg
+6.7.0.0.0-8.ogg
+6.7.0.0.0-9.ogg
+6.7.0.0.0-10.ogg
+6.7.0.0.0-11.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0.ogg
new file mode 100644
index 0000000000..1af6116cd1
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/6.7.0.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/7.0.0.0.0-1.ogg b/macros/latex/contrib/spelatex/spelatex-spel/7.0.0.0.0-1.ogg
new file mode 100644
index 0000000000..c289bcfa04
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/7.0.0.0.0-1.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/7.0.0.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/7.0.0.0.0.m3u
new file mode 100644
index 0000000000..59c209eb26
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/7.0.0.0.0.m3u
@@ -0,0 +1,27 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+7.0.0.0.0.ogg
+7.0.0.0.0-1.ogg
+7.1.0.0.0.ogg
+7.2.0.0.0.ogg
+7.3.0.0.0.ogg
+7.4.0.0.0.ogg
+7.5.0.0.0.ogg
+7.6.0.0.0.ogg
+7.7.0.0.0.ogg
+7.8.0.0.0.ogg
+7.8.1.0.0.ogg
+7.8.2.0.0.ogg
+7.8.3.0.0.ogg
+7.8.4.0.0.ogg
+7.8.5.0.0.ogg
+7.8.6.0.0.ogg
+7.9.0.0.0.ogg
+7.9.1.0.0.ogg
+7.9.2.0.0.ogg
+7.10.0.0.0.ogg
+7.10.1.0.0.ogg
+7.10.2.0.0.ogg
+7.10.3.0.0.ogg
+7.10.4.0.0.ogg
+7.11.0.0.0.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/7.0.0.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/7.0.0.0.0.ogg
new file mode 100644
index 0000000000..2208a529c9
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/7.0.0.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/7.1.0.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/7.1.0.0.0.m3u
new file mode 100644
index 0000000000..aad8452193
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/7.1.0.0.0.m3u
@@ -0,0 +1,3 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+7.1.0.0.0.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/7.1.0.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/7.1.0.0.0.ogg
new file mode 100644
index 0000000000..4ea4028b7b
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/7.1.0.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/7.10.0.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/7.10.0.0.0.m3u
new file mode 100644
index 0000000000..4e2e99f016
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/7.10.0.0.0.m3u
@@ -0,0 +1,7 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+7.10.0.0.0.ogg
+7.10.1.0.0.ogg
+7.10.2.0.0.ogg
+7.10.3.0.0.ogg
+7.10.4.0.0.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/7.10.0.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/7.10.0.0.0.ogg
new file mode 100644
index 0000000000..07be005182
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/7.10.0.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/7.10.1.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/7.10.1.0.0.m3u
new file mode 100644
index 0000000000..9118733d86
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/7.10.1.0.0.m3u
@@ -0,0 +1,3 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+7.10.1.0.0.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/7.10.1.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/7.10.1.0.0.ogg
new file mode 100644
index 0000000000..68f3689b55
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/7.10.1.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/7.10.2.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/7.10.2.0.0.m3u
new file mode 100644
index 0000000000..6eecefd465
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/7.10.2.0.0.m3u
@@ -0,0 +1,3 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+7.10.2.0.0.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/7.10.2.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/7.10.2.0.0.ogg
new file mode 100644
index 0000000000..f368c080f1
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/7.10.2.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/7.10.3.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/7.10.3.0.0.m3u
new file mode 100644
index 0000000000..3adc9502ac
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/7.10.3.0.0.m3u
@@ -0,0 +1,3 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+7.10.3.0.0.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/7.10.3.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/7.10.3.0.0.ogg
new file mode 100644
index 0000000000..ffd90a79f0
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/7.10.3.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/7.10.4.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/7.10.4.0.0.m3u
new file mode 100644
index 0000000000..552f4fbbec
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/7.10.4.0.0.m3u
@@ -0,0 +1,3 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+7.10.4.0.0.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/7.10.4.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/7.10.4.0.0.ogg
new file mode 100644
index 0000000000..c7c7756494
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/7.10.4.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/7.11.0.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/7.11.0.0.0.m3u
new file mode 100644
index 0000000000..d1c41b06d6
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/7.11.0.0.0.m3u
@@ -0,0 +1,3 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+7.11.0.0.0.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/7.11.0.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/7.11.0.0.0.ogg
new file mode 100644
index 0000000000..8a4aa575b6
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/7.11.0.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/7.2.0.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/7.2.0.0.0.m3u
new file mode 100644
index 0000000000..65dc14045a
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/7.2.0.0.0.m3u
@@ -0,0 +1,3 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+7.2.0.0.0.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/7.2.0.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/7.2.0.0.0.ogg
new file mode 100644
index 0000000000..d009f03745
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/7.2.0.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/7.3.0.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/7.3.0.0.0.m3u
new file mode 100644
index 0000000000..88d216c122
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/7.3.0.0.0.m3u
@@ -0,0 +1,3 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+7.3.0.0.0.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/7.3.0.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/7.3.0.0.0.ogg
new file mode 100644
index 0000000000..ec71da1483
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/7.3.0.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/7.4.0.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/7.4.0.0.0.m3u
new file mode 100644
index 0000000000..5ab8d891ca
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/7.4.0.0.0.m3u
@@ -0,0 +1,3 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+7.4.0.0.0.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/7.4.0.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/7.4.0.0.0.ogg
new file mode 100644
index 0000000000..909cf56536
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/7.4.0.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/7.5.0.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/7.5.0.0.0.m3u
new file mode 100644
index 0000000000..db3199ecb2
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/7.5.0.0.0.m3u
@@ -0,0 +1,3 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+7.5.0.0.0.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/7.5.0.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/7.5.0.0.0.ogg
new file mode 100644
index 0000000000..501e4d6f3e
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/7.5.0.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/7.6.0.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/7.6.0.0.0.m3u
new file mode 100644
index 0000000000..2b73a9329d
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/7.6.0.0.0.m3u
@@ -0,0 +1,3 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+7.6.0.0.0.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/7.6.0.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/7.6.0.0.0.ogg
new file mode 100644
index 0000000000..c6d001f03d
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/7.6.0.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/7.7.0.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/7.7.0.0.0.m3u
new file mode 100644
index 0000000000..ad44439ec3
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/7.7.0.0.0.m3u
@@ -0,0 +1,3 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+7.7.0.0.0.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/7.7.0.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/7.7.0.0.0.ogg
new file mode 100644
index 0000000000..89ec80a5d8
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/7.7.0.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/7.8.0.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/7.8.0.0.0.m3u
new file mode 100644
index 0000000000..7c9bda47ee
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/7.8.0.0.0.m3u
@@ -0,0 +1,9 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+7.8.0.0.0.ogg
+7.8.1.0.0.ogg
+7.8.2.0.0.ogg
+7.8.3.0.0.ogg
+7.8.4.0.0.ogg
+7.8.5.0.0.ogg
+7.8.6.0.0.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/7.8.0.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/7.8.0.0.0.ogg
new file mode 100644
index 0000000000..804b7f66b6
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/7.8.0.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/7.8.1.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/7.8.1.0.0.m3u
new file mode 100644
index 0000000000..7e19147683
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/7.8.1.0.0.m3u
@@ -0,0 +1,3 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+7.8.1.0.0.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/7.8.1.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/7.8.1.0.0.ogg
new file mode 100644
index 0000000000..9dc083b378
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/7.8.1.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/7.8.2.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/7.8.2.0.0.m3u
new file mode 100644
index 0000000000..e3b31c66bb
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/7.8.2.0.0.m3u
@@ -0,0 +1,3 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+7.8.2.0.0.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/7.8.2.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/7.8.2.0.0.ogg
new file mode 100644
index 0000000000..706084cd9b
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/7.8.2.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/7.8.3.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/7.8.3.0.0.m3u
new file mode 100644
index 0000000000..a88f6b83c0
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/7.8.3.0.0.m3u
@@ -0,0 +1,3 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+7.8.3.0.0.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/7.8.3.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/7.8.3.0.0.ogg
new file mode 100644
index 0000000000..427ff5ee22
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/7.8.3.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/7.8.4.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/7.8.4.0.0.m3u
new file mode 100644
index 0000000000..35f43920c7
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/7.8.4.0.0.m3u
@@ -0,0 +1,3 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+7.8.4.0.0.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/7.8.4.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/7.8.4.0.0.ogg
new file mode 100644
index 0000000000..09f9e2aa42
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/7.8.4.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/7.8.5.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/7.8.5.0.0.m3u
new file mode 100644
index 0000000000..a47d61bdd1
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/7.8.5.0.0.m3u
@@ -0,0 +1,3 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+7.8.5.0.0.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/7.8.5.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/7.8.5.0.0.ogg
new file mode 100644
index 0000000000..2b206fe380
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/7.8.5.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/7.8.6.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/7.8.6.0.0.m3u
new file mode 100644
index 0000000000..fe1f3bdb65
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/7.8.6.0.0.m3u
@@ -0,0 +1,3 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+7.8.6.0.0.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/7.8.6.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/7.8.6.0.0.ogg
new file mode 100644
index 0000000000..f38ca7926f
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/7.8.6.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/7.9.0.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/7.9.0.0.0.m3u
new file mode 100644
index 0000000000..92e3c5d6e3
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/7.9.0.0.0.m3u
@@ -0,0 +1,5 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+7.9.0.0.0.ogg
+7.9.1.0.0.ogg
+7.9.2.0.0.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/7.9.0.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/7.9.0.0.0.ogg
new file mode 100644
index 0000000000..9650ec9582
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/7.9.0.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/7.9.1.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/7.9.1.0.0.m3u
new file mode 100644
index 0000000000..5e2efd9c5f
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/7.9.1.0.0.m3u
@@ -0,0 +1,3 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+7.9.1.0.0.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/7.9.1.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/7.9.1.0.0.ogg
new file mode 100644
index 0000000000..527ae5ae02
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/7.9.1.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/7.9.2.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/7.9.2.0.0.m3u
new file mode 100644
index 0000000000..9f4c5730bb
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/7.9.2.0.0.m3u
@@ -0,0 +1,3 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+7.9.2.0.0.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/7.9.2.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/7.9.2.0.0.ogg
new file mode 100644
index 0000000000..ddf594575d
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/7.9.2.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/8.0.0.0.0-1.ogg b/macros/latex/contrib/spelatex/spelatex-spel/8.0.0.0.0-1.ogg
new file mode 100644
index 0000000000..a9f226ac10
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/8.0.0.0.0-1.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/8.0.0.0.0-2.ogg b/macros/latex/contrib/spelatex/spelatex-spel/8.0.0.0.0-2.ogg
new file mode 100644
index 0000000000..a33e942cd2
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/8.0.0.0.0-2.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/8.0.0.0.0-3.ogg b/macros/latex/contrib/spelatex/spelatex-spel/8.0.0.0.0-3.ogg
new file mode 100644
index 0000000000..06f2d25095
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/8.0.0.0.0-3.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/8.0.0.0.0-star-1.ogg b/macros/latex/contrib/spelatex/spelatex-spel/8.0.0.0.0-star-1.ogg
new file mode 100644
index 0000000000..f270038b25
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/8.0.0.0.0-star-1.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/8.0.0.0.0-star-2.ogg b/macros/latex/contrib/spelatex/spelatex-spel/8.0.0.0.0-star-2.ogg
new file mode 100644
index 0000000000..a708edd941
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/8.0.0.0.0-star-2.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/8.0.0.0.0-star-3.ogg b/macros/latex/contrib/spelatex/spelatex-spel/8.0.0.0.0-star-3.ogg
new file mode 100644
index 0000000000..1c90a0e4b4
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/8.0.0.0.0-star-3.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/8.0.0.0.0.m3u b/macros/latex/contrib/spelatex/spelatex-spel/8.0.0.0.0.m3u
new file mode 100644
index 0000000000..83fe2049a4
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/8.0.0.0.0.m3u
@@ -0,0 +1,9 @@
+#EXTM3U
+#EXTINF: section playlist generated with SpeLbox
+8.0.0.0.0.ogg
+8.0.0.0.0-1.ogg
+8.0.0.0.0-2.ogg
+8.0.0.0.0-3.ogg
+8.0.0.0.0-star-1.ogg
+8.0.0.0.0-star-2.ogg
+8.0.0.0.0-star-3.ogg \ No newline at end of file
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/8.0.0.0.0.ogg b/macros/latex/contrib/spelatex/spelatex-spel/8.0.0.0.0.ogg
new file mode 100644
index 0000000000..24dbfc82f7
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/8.0.0.0.0.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/author.ogg b/macros/latex/contrib/spelatex/spelatex-spel/author.ogg
new file mode 100644
index 0000000000..10bf7e2413
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/author.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/date.ogg b/macros/latex/contrib/spelatex/spelatex-spel/date.ogg
new file mode 100644
index 0000000000..4bf1df7b7c
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/date.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/footnote-1.ogg b/macros/latex/contrib/spelatex/spelatex-spel/footnote-1.ogg
new file mode 100644
index 0000000000..33da761ca9
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/footnote-1.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/footnote-2.ogg b/macros/latex/contrib/spelatex/spelatex-spel/footnote-2.ogg
new file mode 100644
index 0000000000..1b1c68a106
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/footnote-2.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex-spel/title.ogg b/macros/latex/contrib/spelatex/spelatex-spel/title.ogg
new file mode 100644
index 0000000000..01842fdaa6
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex-spel/title.ogg
Binary files differ
diff --git a/macros/latex/contrib/spelatex/spelatex.dtx b/macros/latex/contrib/spelatex/spelatex.dtx
new file mode 100644
index 0000000000..bdedc84d70
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex.dtx
@@ -0,0 +1,2456 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2024 by Walter Daems <walter.daems@uantwerpen.be>
+% and Paul Levrie
+%
+% 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 `maintained'.
+%
+% The Current Maintainer of this work is Walter Daems.
+%
+% This work consists of the files spelatex.dtx, spelatex.ins,
+% and any derivative file, generated from the dtx file using
+% the ins driver file.
+%
+% \fi
+%
+% \iffalse
+%<*package>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{spelatex}
+%</package>
+%<*driver>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesFile{spelatex.dtx}
+%</driver>
+%<*package>
+ [2024/06/21 v0.91 SpeLaTeX - Speech-enabled LaTeX (DMW and LVP)]
+%</package>
+\def\fileversion{0.91}
+\def\filedate{2024/06/21}
+%<*driver>
+\documentclass[10pt]{ltxdoc}
+\usepackage{makeidx}
+\usepackage{alltt}
+\usepackage[english]{babel}
+\usepackage[extramath]{spelatex}
+\usepackage{amsmath}
+\usepackage{graphicx}
+\usepackage{tikz}
+\IfFileExists{tocbibind.sty}{\usepackage{tocbibind}}{}
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\StopEventually{\PrintChanges\PrintIndex}
+\spelmacad{DescribeEnv}[1]{#1}
+\spelmacad{DescribeMacro}[1]{#1}
+\begin{document}
+ \DocInput{spelatex.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \CheckSum{0}
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+%
+% \changes{v0.90}{2024/05/31}{. Birth}
+% \changes{v0.91}{2024/06/21}{. First overhaul:\\
+% - avoided big active link areas\\
+% - sketched bigger picture, leading to
+% the three project phases.}
+%
+% \GetFileInfo{spelatex.dtx}
+%
+% \DoNotIndex{\newcommand,\newenvironment}
+% \setlength{\parindent}{0em}
+% \addtolength{\parskip}{0.5\baselineskip}
+%
+% \title{\sf \spelatex{} --- Speech-enabled \LaTeX{}}
+% \author{Walter Daems (\texttt{walter.daems@uantwerpen.be})
+% and Paul Levrie}
+% \date{\fileversion --- \filedate}
+%
+% \newrobustcmd\GNU{GNU}
+% \spelmacad{GNU}{gnew}
+% \newrobustcmd\TexLive{Tex Live}
+% \spelmacad{TexLive}{tech-laaiv}
+% \newrobustcmd\MikTeX{MikTeX}
+% \spelmacad{MikTeX}{miktech}
+% \newrobustcmd\CTAN{CTAN}
+% \spelmacad{CTAN}{see-tan}
+% \newrobustcmd\CPAN{CPAN}
+% \spelmacad{CPAN}{see-pan}
+% \newrobustcmd\POD{POD}
+% \spelmacad{POD}{pod}
+%
+% \maketitle
+% \fvset{gobble=2}
+%
+% \section{Preface}
+%
+% \subsection{Background}
+%
+% \begin{spelchunk}
+% At our institute, the University of Antwerp in Belgium, the number
+% of students with reading and/or writing disorders (or at least
+% aware of these disorders) is increasing. Approximately 5\% of the
+% students are registered with such a disorder. Probably there's an
+% additional number of people opting not to register their disorder.
+% \end{spelchunk}
+%
+% \begin{spelchunk}
+% A large portion of the study materials we offer to students is
+% still written material. The authors believe that this will keep on
+% being so, even given the multimedia and AI options that have
+% become mainstream. Let's not go into this debate for now.\\
+% However, written course texts cannot be but suboptimal for
+% students with reading disorders.
+% \end{spelchunk}
+%
+% \begin{spelchunk}
+% For small texts, reading them out loud and recording them using a
+% voice recorder to create an aid for our target group, is still
+% feasible. We have taken that route at our institute for exam
+% assignments. However, for bigger texts (like course syllabi) this
+% is beyond the time a teacher can afford spending on this small a
+% group of students. Yes, economic laws also govern teaching!
+% \end{spelchunk}
+%
+% \subsection{State of the art}
+%
+% \subsubsection{In general}
+%
+% \begin{spelchunk}
+% Therefore, reverting to readily available text-to-speech software
+% is an obvious choice. Nowadays, special software exists that
+% provides the functionality of reading out loud the contents of
+% electronic documents, e.g. NVDA \cite{NVDA} or
+% SprintPlus~\cite{SPRINT}. Moreover, more and more standard PDF
+% readers (such
+% as Acrobat Reader~\cite{ADOBEREADER} have the facility of
+% performing text-to-speech). For nontechnical subjects, this works
+% fine. However, when it comes to technical course syllabi that are
+% loaded with non-trivial mathematics, the standard text-to-speech
+% packages fail to meet our expectations. In addition, they cannot
+% read a sensible textual description of figures or tables.
+% \end{spelchunk}
+%
+% \begin{spelchunk}
+% The issue with reading mathematics will be solved in the future,
+% by enforcing mathematical equations to follow a specific standard
+% that can be parsed and converted, not only into a visual
+% representation, but also into proper text. MathML will be one of
+% the candidates for that format.
+% \end{spelchunk}
+%
+% \begin{spelchunk}
+% The issue with figures and tables can be solved by using the tag
+% infrastructure of PDF. The format provides a system of tags that
+% allow you to provide extra information about the content of a
+% document, in much the same way as you can specify an 'alt' key for
+% an image in HTML. This tag could contain a proper textual
+% description of the figure or the table.
+% \end{spelchunk}
+%
+% \subsubsection{For \LaTeX}
+%
+% \begin{spelchunk}
+% Currently, the \LaTeX project is investing in enabling \LaTeX{} to
+% partially automate the tagging of PDFs with the \texttt{tagpdf}
+% package~\cite{TAGPDF}, such that the user only has to do a minimal
+% job (adding tags for figures and tables). The goal is to maximize
+% the accessibility of \LaTeX-produced documents.
+% \end{spelchunk}
+%
+% \begin{spelchunk}
+% So all is well? Not quite. Though I'm confident that with enough
+% time the community will solve the issue completely, there are
+% still some gaps:
+% \end{spelchunk}
+% \begin{itemize}
+% \spelitem{The tagpdf package is still not a part of the mainstream
+% \LaTeX{}-kernel.}
+% \spelitem{MathML reading support in PDF readers is still in its
+% infancy.}
+% \spelitem{Many PDF readers do not fully support tags yet.}
+% \end{itemize}
+%
+% \subsection{This package}
+%
+% \begin{spelchunk}
+% This package aims to overcome these problems in the meantime and
+% also to contribute to the longterm goal: making perfectly tagged
+% PDFs that are read by any PDF-reader.
+% \end{spelchunk}
+%
+% \begin{spelchunk}
+% In the \emph{first phase} of this package (i.e. the version you are
+% looking at right now), this package reads your \LaTeX{} source,
+% converts the text and the formulas to audio files and equips your
+% PDF with hyperlinks to these files, such that with a few clicks
+% you can listen to your document.
+% The audio files are external files that should be packaged with
+% your PDF to allow a reader to use the document with the available
+% audio.
+% How does it read the formulas? It parses your \LaTeX{} constructs and
+% makes the best of it. This will probably be the part that might
+% survive up until the very last phase of this package.
+% \end{spelchunk}
+%
+% \begin{spelchunk}
+% In a \emph{second phase} of this package, the audio files will be embedded
+% into the PDF. Currently, there are not enough PDF readers that
+% support this feature. Therefore, we decided to keep using the
+% external audio files for now.
+% \end{spelchunk}
+%
+% \begin{spelchunk}
+% In a \emph{third phase}, the audio files \emph{may be} abandoned
+% alltogether, fully switching to tags. And we do think that this
+% should be the end goal. The reasons why we say
+% \emph{'may be'}, are:
+% \end{spelchunk}
+% \begin{itemize}
+% \spelitem{The voices of the current PDF-readers are still not of the
+% same quality as the ones available online. And quality does matter.}
+% \spelitem{The better voices may require cloud access, and probably
+% will not be free, therefore (me) paying for them at document creation
+% time, makes more sense to me than having my students pay
+% for these voices whenever they read the document.}
+% \spelitem{The industry standard Adobe reader is not easily available
+% on open-source operating systems (like UNIX/BSD/Linux-derived
+% platforms). You might consider using emulation using
+% wine~\cite{WINE}, but in that case you can forget about audio. Free
+% access to software is something we consider to be a must-have,
+% rather than a nice-to-have. In addition, Walter feels miserable when
+% he's forced to use anything else than GNU/Linux, because then he
+% keeps moaning that his productivity is ruined.}
+% \end{itemize}
+%
+% \begin{spelchunk}
+% Admittedly, in this first phase, using the \spelatex{} package
+% causes a significant overhead in writing your text. Therefore we
+% also provide you the \spelbox{} extension for the Org-mode
+% \cite{ORGMODE} of \GNU{} Emacs \cite{EMACS}. To satisfy your
+% curiosity: \spelbox{} stands for ``Speech-Enabled \LaTeX{} By
+% Org-mode eXport''.
+% \end{spelchunk}
+%
+% \begin{spelchunk}
+% Will \spelatex{} become obsolete in the future?
+% Undoubtedly so. But for the time being, it answers our desire to
+% provide our students with good audio support when studying their
+% engineering courses. That is now, not only in five years time.
+% \end{spelchunk}
+
+% \begin{spelchunk}
+% We hope that you enjoy
+% using our software, or that --- if you are not pleased with it ---
+% it triggers you to give us feedback or to come up with a better
+% solution. We especially would like to thank Ulrike Fischer (of the
+% \LaTeX-project and the maintainer of the tagpdf package) for
+% trying to use this package and reaching out to give us feedback.
+% One of her suggestions (not to use big hyperlink-areas) was almost
+% instantly implemented and has been adopted as the standard way of
+% linking.
+% \end{spelchunk}
+%
+% \begin{spelchunk}
+% You are free to use our software but kindly ask you to provide a
+% mention ``The audio materials of this text have been prepared with
+% \spelatex{}/\spelbox{}'' in the section treating copyrights,
+% bibliographic data or any other spot that is suited. We'd also
+% welcome a short mail of yours telling that you make use of the
+% package. The pleasure of receiving such an e-mail makes our day.
+% \end{spelchunk}
+%
+% \begin{spelchunk}
+% You are free to modify this \LaTeX-package, keeping a reference to
+% our original package intact, provided that your package is subject
+% to the LPPL license, as is \spelatex{}. However, contributing to our
+% package might be a better way to go, in order to bundle the efforts
+% for a better speech-enabled \LaTeX{}.
+% \end{spelchunk}
+%
+% \section{Introduction}
+%
+% \subsection{Target audience}
+% \begin{spelchunk}
+% \spelatex{} is primarily intended for persons with a reading
+% disorder. This may be:
+% \end{spelchunk}
+% \begin{itemize}
+% \spelitem{persons suffering dyslexia}
+% \spelitem{visually impaired persons}
+% \begin{itemize}
+% \spelitem{persons who still can recognize the basic
+% parts of a book,
+% i.e. are able to operate a PDF viewer and click on the
+% individual parts.}
+% \spelitem{persons who can't recognize the basic parts of a book
+% (e.g., blind persons): they can listen to the automatic
+% playback of the ordered chain of audio fragments.}
+% \end{itemize}
+% \end{itemize}
+%
+% \begin{spelchunk}
+% But also people who want to multitask, e.g., gardening while
+% listening to a technical book, can benefit from
+% \spelatex{}.\footnote{Note that multitasking is not reserved for persons
+% without visual impairment. Also visually impaired persons can
+% benefit from listening to an audiobook while doing other
+% things.} Personally, we often use \spelatex{} to proofread texts as we
+% hear language errors more easily than we spot them while reading.
+% \end{spelchunk}
+%
+% \subsection{The magic under the hood}
+%
+% \subsubsection{The \spelbox{}-ecosystem}
+%
+% \begin{spelchunk}
+% The \spelatex{}-package is one of the parts of the \spelbox{}
+% ecosystem. It consists of three components:
+% \end{spelchunk}
+% \begin{itemize}
+% \spelitem{An Org-mode exporter called \texttt{ox-spel} \cite{OXSPELATEX}}
+% \spelitem{This \LaTeX{}-package \spelatex{} \cite{SPEL}}
+% \spelitem{A script embeded in the Perl module \texttt{SpeL::Wizard} \cite{SPELWIZARD}}
+% \end{itemize}
+%
+% \subsubsection{The overall picture}
+%
+% \begin{spelchunk}
+% \spelatex{} equips the PDF that is generated by \LaTeX{}
+% with hyperlinks to audio files that contain the spoken
+% equivalent of the original text, equations, figures and tables
+% \end{spelchunk}
+%
+% \begin{spelchunk}
+% Let's look at this in detail in Fig.~\ref{fig:setup}.
+% For now, ignore the two top boxes, and let's assume you are
+% composing the file |text.tex| as your document. We will return
+% to the two top boxes later.
+% \end{spelchunk}
+%
+% \begin{spelchunk}
+% By loading the |spel.sty| package in your source
+% document, \LaTeX{} will produce a PDF file that references audio
+% files that will be generated later (see below). In
+% addition, it generates text chunks (i.e. small portions of
+% your text) in separate files (|.tex|) and a spel index file
+% (|.spelidx|) referencing them in sequence.
+% \end{spelchunk}
+%
+% \begin{spelchunk}
+% Together with the |.aux|-file (needed by \spelatex{} for labels and
+% citations), these are the inputs to the \spelatex-engine (|spel-wizard.pl|)
+% that parses the text chunks, writes a full text version of them as
+% spel files (with extension |.spel|) and
+% controls the text-to-speech engine to generate audio files of
+% them.\footnote{In the figure, Ogg Vorbis has been chosen as
+% format, but this can be any audio format.}
+% \end{spelchunk}
+%
+% \begin{spelchunk}
+% To avoid excessive text to speech conversion (i.e. an expensive step)
+% the \spelatex{} engine derives a finger print of them and compares it
+% to previously generated fingerprints for the chunk. If the
+% finger print has changed, the audio file is overwritten (or
+% created the first time), otherwise it is left untouched.
+% \end{spelchunk}
+%
+% \begin{spelchunk}
+% As a cherry on top, the \spelatex-engine also creates a playlist,
+% such that you may use the audio files for a \POD{}cast-like
+% listening experience.\\
+% Something that has not been indicated on the figure, is that for
+% reading out loud entire (sub)sections, the PDF-file also references
+% m3u playlists that gather all chunks belonging to the (sub)section.
+% \end{spelchunk}
+%
+% \begin{figure}[p]
+% \begin{spelchunk}
+% \begin{center}
+% \begin{tikzpicture}
+% [scale=0.8,>=latex,
+% doc/.style={rectangle,fill=black!10,align=center,minimum
+% width=2cm,minimum height=2cm},
+% tool/.style={rectangle,draw,align=center}]
+% \node [doc] (utext) at (0,9) {text.org\\\footnotesize(unprepped
+% source)};
+% \node [tool] (instrument) at (0,6) {Org-mode exporter\\\footnotesize(\spelbox)};
+% \node [doc] (text) at (0,3) {text.tex\\\footnotesize(prepped source)};
+% \draw[->] (utext) -- (instrument);
+% \draw[->] (instrument) -- (text);
+% \node [doc] (R) at (-3,0) {spel.sty\\\footnotesize(package)};
+% \node [tool] (latex) at (0,0) {\LaTeX\\\footnotesize(compiler)};
+% \node [doc] (pdf) at (0,-3) {text.pdf\\\footnotesize(PDF with\\\footnotesize hyperlinks)};
+% \node [doc] (spelidx) at (6,-3) {text.spelidx\\\footnotesize(index file)};
+% \node [doc] (aux) at (9,-3) {text.aux\\\footnotesize(auxiliary file)};
+% \node [doc] (files) at (3,-3) {*.tex\\\footnotesize(text chunks)};
+% \draw[->] (text) -- (latex);
+% \draw[->,dotted] (text) -- (R);
+% \draw[->,dotted] (spelidx) -- (files);
+% \draw[->] (R) -- (latex);
+% \draw[->] (latex) -- (pdf);
+% \draw[->] (latex) edge[out=0,in=90] (spelidx);
+% \draw[->] (latex) edge[out=10,in=90] (aux);
+% \draw[->] (latex) edge[out=-10,in=90] (files);
+% \node [tool] (engine) at (6,-6) {\spelpl{}\\
+% \footnotesize(\spelatex{} engine)};
+% \node [tool] (t2s) at (1.5,-6) {text-to-speech\\engine};
+% \draw[->] (files) -- (engine);
+% \draw[->] (spelidx) -- (engine);
+% \draw[->] (aux) -- (engine);
+% \node[doc] (ogg) at (0,-9) {*.ogg\\\footnotesize(audio files)};
+% \node[doc] (spel) at (3,-9) {*.spel\\\footnotesize(spel files)};
+% \node[doc] (m3u) at (6,-9) {text.m3u\\\footnotesize(playlist)};
+% \node[doc] (md5) at (9,-9) {*.md5\\\footnotesize(fingerprints)};
+% \draw[->] (engine) -- (spel);
+% \draw[->] (engine) -- (m3u);
+% \draw[<->] (engine) -- (md5);
+% \draw[->,dotted] (pdf) edge[out=-115,in=115] (ogg);
+% \draw[->,dotted] (m3u) edge[out=-125,in=-55] (ogg);
+% \draw[->,dashed] (engine) -- (t2s);
+% \draw[->] (spel) -- (t2s);
+% \draw[->] (t2s) -- (ogg);
+% \end{tikzpicture}
+% \end{center}
+% \end{spelchunk}
+% \begin{spelchunkad}
+% The easiest flow is to start from the top box, which represents
+% an org file that describes your text. We call this the
+% unprepped source. Read the Orgmode
+% documentation on \LaTeX{} and \spelatex{}-exporting to get to know
+% the format. The Orgmode \spelatex{} exporter, creates a fully
+% equiped \LaTeX{} file of your text. We call this the prepped source. You can
+% also start by composing this file yourself.
+% If you prepped source file uses the \spelatex{} style file, than
+% your compiler will generate a PDF file with hyperlinks, a
+% dot aawks-file and a dot spellindex-file together with a directory full of
+% dot tex files containing the text chunks to be processed by the
+% \spelpl-engine. This is a perl script that converts the chunks into
+% plain text readable spel files. The script is called spel dash
+% wizard dot pl. It also creates a playlist and audio files using a
+% text-to-speech engine. In this case, these are
+% Ogg-Vorbis files. To avoid having to call the text-to-speech
+% engine too frequently (which may incur costs), MD5-fingerprints
+% are used such that chunks that have been generated before and
+% are unchanged, can be reused. The end result is a PDF file that
+% references the audio files.
+% \end{spelchunkad}
+% \caption{Basic tool setup of \spelbox{} of which the \spelatex{} package
+% is an integral part; filled boxes indicate files,
+% outlined boxes indicate tools; solid lines indicates use or
+% creation of files, dotted lines indicate references, dashed lines
+% indicate a control relationship.}
+% \label{fig:setup}
+% \end{figure}
+%
+% \begin{spelchunk}
+% You might wonder: where are the links? Well, there are three
+% variants:
+% \end{spelchunk}
+% \begin{itemize}
+% \spelitem{\emph{area links}, which are almost exclusively
+% used for equations, tables or figures. These links make an entire
+% rectangle active, linking to the corresponding audio file.}
+% \spelitem{\emph{group links}, indicated by small right-pointing
+% triangles next to section headers. These cause all blocks in the
+% section to be read one by one.}
+% \spelitem{\emph{hidden links}, wich are, as the name suggests,
+% hidden to avoid visual disturbance of the text; every
+% paragraph, footnote and list is activated by a link on the
+% whitespace before the first line of the chunk. Try it! Once you
+% are aware that these regions are active, you'll find them
+% easily. In addition, not using the full paragraph as an active
+% region, allows existing hyperlinks (like for citations, references
+% or URLs) to still function.}
+% \end{itemize}
+%
+%
+% \subsubsection{Implicit spelchunks}
+% \spelmacad{usepackage}[1]{the usepackage #1 macro}
+% \spelmacad{title}{the title macro}
+% \spelmacad{author}{the author macro}
+% \spelmacad{section}{the section macro}
+% \spelmacad{caption}{the caption macro}
+% \spelmacad{footnote}{the footnote macro}
+% \spelmacad{thanks}{the thanks macro}
+% \spelmacad{item}{the item macro}
+% \spelmacad{spelitem}{the spelitem macro}
+% \begin{spelchunk}
+% Generating the text chunks to be read out loud requires us to use
+% special \LaTeX-macros. For all pieces of text that are within
+% an existing macro (e.g. |\title|, |\author|, |\section|,
+% |\caption|, |\footnote|, |\thanks|), these macros have been
+% redefined by the \spelatex{}-package to
+% execute the magic without any further hassle.\\
+% We call these \LaTeX-fragments \emph{implicit spelchunks}.%
+% \end{spelchunk}
+%
+% \begin{spelchunk}
+% However, not all \LaTeX-constructs can be dealt with in an
+% automatic way. This is true for any |\item| you put inside a list.
+% You need to replace that with a |\spelitem| that takes the text
+% that follows as a first explicit argument, i.e. |\item blabla|
+% should be replaced by |\spelitem{blabla}|.
+% We call these \LaTeX-fragments \emph{defunct implicit
+% spelchunks}. They should have been implicit, but we could not get
+% that to work without problems. Therefore you need to mark them
+% explicitly as |\spelitem| constructs.
+% \end{spelchunk}
+%
+% \subsubsection{Explicit spelchunks}
+% \begin{spelchunk}
+% One would hope that displaymath environments are also implicit
+% spelchunks. However, overriding environments in \LaTeX{} is a tricky
+% business. In view of this, the \spelatex{} package keeps away from
+% this, and we've chosen to treat displaymath environments (like
+% |equation|, |eqnarray|, |gather|, |align|, |alignat|) the same way
+% as tables or figures, i.e. you need to embed the in a |spelchunk|
+% environment. The only difference between math environments and
+% figures an tables is that displaymath environments can be
+% automatically read out loud by the \spelpl{} script, while you
+% will have to provide a text description for tables and figures
+% manually, using a subsequence |spelchunkad|
+% environment (the suffix ad stands for \emph{audio description}).
+% \end{spelchunk}
+%
+% \begin{spelchunk}
+% To keep the terminology clear, we label them as automatic
+% and manual spelchunks respectively:
+% \end{spelchunk}
+% \begin{itemize}
+% \spelitem{automatic: \texttt{equation}, \texttt{eqnarray},
+% \texttt{gather}, \texttt{align}, \texttt{alignat}, \ldots}
+% \spelitem{manual: \texttt{figure}, \texttt{table},
+% \texttt{tikzpicture}, \ldots}
+% \end{itemize}
+%
+% \begin{spelchunk}
+% The similarity between both categories is that you both embed them
+% in a |spelchunk| environment, but that you provide the manual
+% textual description using a |spelchunkad| environment right after
+% the chunk: in this way, the |spelchunkad| environment provides an
+% alternative text for the chunk. Note that this way of working also
+% enables you to provide an overriding text for an equation, if you
+% think that \spelpl{} is doing a bad job. You do me a favor if
+% you submit this subpar behavior as a bug report to me!
+% \end{spelchunk}
+%
+% \begin{spelchunk}
+% It is worthwile to make good descriptions for a figure or a
+% table. It's here that you can create true added value to your
+% manuscript, even for readers without impairment!
+% \end{spelchunk}
+%
+% \subsubsection{Paragraphs}
+% \begin{spelchunk}
+% However, there is the elephant in the room that we did not yet
+% talk about, the paragraph. Indeed, it is desirable to split plain
+% text according to the paragraphs in the document. Alas, paragraphs
+% are one of the silent features that are
+% not easily accessible from within a \LaTeX-package.
+% Therefore paragraphs (or smaller text chunks) are considered to be
+% explicit spelchunks and need to be embedded
+% in |spelchunk| environments. This environment will cause its
+% contents to be hyperlinked to a separate piece of audio.
+% \end{spelchunk}
+%
+% \begin{spelchunk}
+% Encasing all your paragraphs with |spelchunk| environments
+% manually is a pain. There is a reason why in \LaTeX{}
+% paragraphs can be created by a double newline: convenience.
+% The |spelchunk|-environment encasing ruins this totally!
+% \end{spelchunk}
+%
+% \subsubsection{Emacs Orgmode to the rescue!}
+% \begin{spelchunk}
+% However, we provide an exporter for the Org-mode \cite{ORGMODE} of
+% Emacs \cite{EMACS}, such
+% that you can prepare your manuscript in Org-mode and not worry
+% about all these exlicit tricks with |spelchunk| and |spelitem|
+% constructs.
+% \end{spelchunk}
+%
+% \begin{spelchunk}
+% This brings us to the two top boxes in the diagram of
+% Fig.~\ref{fig:setup}. If you prepare your manuscript in Org-mode,
+% and use the Org-mode exporter, you don't have to worry about explicit
+% spelchunks, or defunct implicit spelchunks. Therefore, we encourage
+% you to use Emacs as your editor. The learning
+% curve is steep, but the rewards regarding ease-of-use are huge.
+% In that way, you can focus on providing textual descriptions for
+% the non textual portions of your manuscript, e.g. giving a good
+% description of a graph.
+% \end{spelchunk}
+%
+% \begin{spelchunk}
+% Note that this very document has been prepared manually to make it
+% independent of Org-mode. It also shows that if you don't
+% want to use Emacs and Org-mode, you will suffer some considerable
+% pain in equipping your manuscript with an overload of |spelchunk|
+% environments. We have only one advice: don't use the \spelatex{}
+% outside \spelbox{}. Outside a proper boxed confinement,
+% spells easily become curses\ldots
+% \end{spelchunk}
+%
+% \subsection{Extra math commands}
+%
+% \begin{spelchunk}
+% Some of the ways to specify mathematical expressions in \LaTeX{} is
+% very liberal, what makes converting them to text quite
+% difficult. Therefore, we also provide some
+% extra constructs that make life easier for both parties: you as a
+% user and \spelpl{} as a parser.
+% \end{spelchunk}
+%
+% \begin{spelchunk}
+% An example of this are sets. We provide two commands to define a
+% set. As we want these commands to blend in with general \LaTeX{},
+% we did not equip them with a prefix |spel|. Therefore, we made
+% activating them conditional to specifying the package option
+% |extramath|.
+% \end{spelchunk}
+% \begin{description}
+% \spelitem[\texttt{\textbackslash{}setenum}]{a command to define a set
+% that consists of comma or semicolon separated elements}
+% \spelitem[\texttt{\textbackslash{}setdesc}]{a command to define a
+% set that is specified using a description}
+% \end{description}
+%
+%
+% \subsection{Added value}
+%
+% \begin{spelchunk}
+% Why would it make sense to use \spelatex? We think there are many
+% selling points. We can mention a few:
+% \end{spelchunk}
+% \begin{description}
+% \spelitem[Minimal overhead]{
+% Preparing a \LaTeX{} manuscript for use with \spelatex{} requires a
+% minimal amount of work, if you are using Org-mode in Emacs.}
+% \spelitem[Free for the content provider]{
+% If you are using a freeware text-to-speech engine (like for
+% example festival \cite{FESTIVAL} or balabolka \cite{BALABOLKA})
+% and a royalty-free audio format and player (like for example
+% ogg-vorbis), generating audio-enabled documents only requires
+% the effort of preparing your manuscript. There are no license
+% costs involved.\\
+% You could also consider to use an online paying text-to-speech
+% service. As an example, We incorporated a connection to Amazon's
+% Polly \cite{AWSPOLLY}.\\
+% In addition, if your user has a better-quality (maybe
+% commercial) text-to-speech system, he/she can reconvert the text
+% files him-/herself, equiping your document with a voice they
+% like and are used to, without you having to worry about license
+% costs. They might even use an AI-generated copy of their own
+% voice!}
+% \spelitem[Free for your audience]{
+% In addition, the user of your audio-enabled document doesn't
+% need to buy a license for text-to-speech software. Only a PDF-viewer
+% and standard audio-player program are required.}
+% \spelitem[Math capable]{
+% Try some of the equations in this manuscript. We are quite
+% confident you'll be convinced fairly soon.}
+% \end{description}
+%
+% \section{Installation}
+%
+% \subsection{The \spelatex{} package}
+% \begin{spelchunk}
+% If you are a package manager then you'll know how to
+% prepare an installation package for \spelatex.
+% \end{spelchunk}
+%
+% \begin{spelchunk}
+% If you are a normal user then you have two options. First,
+% check if there is a package that your favorite \LaTeX{}
+% distributor has prepared for you. Most of the major distributions
+% (like e.g. \TexLive{} or \MikTeX{}) do so.\\
+% Second, grab the TDS package
+% from \CTAN{} \cite{CTAN} (spel.TDS.zip) and unzip it somewhere in your
+% own TDS tree, regenerate your filename database and off you go.
+% In any case, make sure that \LaTeX{} finds the file |spel.sty|.
+% \end{spelchunk}
+%
+% \begin{spelchunk}
+% The \spelatex{} package uses a number of auxiliary packages, fetch them
+% from \CTAN{} \cite{CTAN} if your \TeX{} distributor does not provide
+% them. The ones used are: |expl3|, |hyperref|, |ifthen|,
+% |fancyvrb|, |newfile|, |rotating|, |babel|, |kvoptions|.
+% \end{spelchunk}
+%
+% \subsection{The \spelpl{} speech generator}
+%
+% \subsubsection{The script}
+% \begin{spelchunk}
+% You can install the wizard assuming you have a working Perl
+% interpreter installed. Assuming you're on \GNU/Linux or MAC, you
+% should be able to find an installation package using the package
+% manager for your distribution. If you are on MS-Windows, look for
+% Strawberry perl or ActiveState perl.
+% \end{spelchunk}
+%
+% \begin{spelchunk}
+% The only thing to do is to install the |SpeL::Wizard|
+% module. You can do this with the perl pacakge manager for your
+% interpreter.
+% \end{spelchunk}
+%
+% \begin{spelchunk}
+% Open a terminal or command window, and then enter on the
+% command line (the dollar represents your prompt):
+% \end{spelchunk}
+%
+% \begin{spelchunk}
+% On \GNU/Linux and MAC: |$ cpanm SpeL::Wizard|\\
+% On Strawberry perl: |$ cpan SpeL::Wizard|\\
+% On ActiveState perl: |$ ppm install SpeL-Wizard|
+% \end{spelchunk}
+%
+% \begin{spelchunk}
+% The script \spelpl{} will be installed on your system. Make sure
+% it is on your search path.
+% \end{spelchunk}
+%
+% \subsubsection{The configuration file}
+% \begin{spelchunk}
+% Finally, you need to provide \spelpl{} with an appropriate
+% config-file, named |tts.conf| that sets up the text-to-speech conversion.
+% Below you can find a setup for Festival \cite{FESTIVAL}:
+% \begin{Verbatim}
+% [engine]
+% tts=festival
+%
+% [languagetags]
+% dutch=nl
+% english=en-gb
+%
+% [voices]
+% dutch=nl1_mbrola
+% english=en1_mbrola
+% \end{Verbatim}
+% \end{spelchunk}
+%
+% \begin{spelchunk}
+% And additionally, for the Microsoft users a setup for Balabolka \cite{BALABOLKA}:
+% \begin{Verbatim}
+% [engine]
+% tts=balabolka
+%
+% [languagetags]
+% english=en-us
+%
+% [voices]
+% english=Zira
+% \end{Verbatim}
+% \end{spelchunk}
+%
+% \begin{spelchunk}
+% The tts configuration parameter defines the speech engine to use.
+% The languagetags section defines how the babel languages are mapped to
+% internationalization codes (also known as locales).
+% The voices section specifies what voice to use for a specific language.
+% \end{spelchunk}
+%
+% \begin{spelchunk}
+% An environment variable can specify where your config file is
+% located, e.g., on \GNU/Linux:
+% \begin{Verbatim}
+% $ export SPELWIZARD_CONFIG=/home/wdaems/.config/tts.conf
+% \end{Verbatim}
+% \end{spelchunk}
+% \begin{spelchunk}
+% If that variable is not set, the script will look in a subdirectory
+% |.spel_wizard| of your home-folder (or |%userprofile%| in
+% MS-Windows), or it will take the default that came with the
+% |SpeL::Wizard| module.
+% \end{spelchunk}
+%
+% \begin{spelchunk}
+% Be aware that you need to install your text-to-speech tool yourself
+% according to the documentation provided by the tool provider.
+% In addition, make sure it the executable is in your search path. In
+% case you are using an online text-to-speech service provider you
+% will need to get an account on their cloud platform and setup
+% credentials and whatever is needed to get going. Providing
+% assistance for this is beyond the aim of this manual.
+% \end{spelchunk}
+%
+% \subsection{The PDF viewer}
+%
+% \begin{spelchunk}
+% You need to make sure you have a PDF-viewer that supports links
+% containing 'run' tags. E.g., xpdf \cite{XPDF} does not, evince
+% \cite{EVINCE} complains about security risks, but okular
+% \cite{OKULAR} and Adobe Reader \cite{ADOBEREADER} do. So does
+% PDF-XChange Viewer \cite{PDFXCHANGE}.
+% \end{spelchunk}
+%
+% \subsection{The media player}
+
+% \begin{spelchunk}
+% When clicking a \spelatex-enabled item in your PDF-file, your media
+% player is started to play the |.ogg| or |.m3u|-file. On GNU/Linux
+% most media players work fine (SoX, totem, vlc, \ldots).
+% \end{spelchunk}
+%
+% \begin{spelchunk}
+% On windows, we recommend using vlc. It works out of the box.
+% When usign the stock Windows Media Player, you will need to add
+% every folder that contains a PDF you'd like to have read, to your
+% Media Player library. Search the internet to find instructions on
+% that and be prepared: in line with Microsoft's standard practice it
+% is well hidden in the interface.
+% \end{spelchunk}
+%
+% \section{Usage}
+%
+% \subsection{Preparing your document source}
+% \begin{spelchunk}
+% Using the \spelatex{} package is very simple. Just load the package's
+% style file using an appropriate |\usepackage{spel}|.
+% \end{spelchunk}
+%
+% \begin{spelchunk}
+% In case you are not using Org-mode, there are $5$ things to do:
+% \end{spelchunk}
+% \begin{enumerate}
+% \spelitem{Treat the defunct implicit spelchunks}
+% \spelitem{Treat the explicit spelchunks}
+% \spelitem{Manually provide text to read when needed}
+% \spelitem{Provide audiodescriptions or preprocessing instructions
+% for your typesetting macros}
+% \spelitem{Provide audiodescriptions or preprocessing instructions
+% for your typesetting environments}
+% \end{enumerate}
+%
+% \begin{spelchunk}
+% Steps 1 and 2 can be done automatically for you by using Org-mode in
+% Emacs and using the proper |spel| exporter.
+% Steps 3, 4 and 5 are up to you. In this section, we assume you are
+% executing all 5 steps manually and therefore, we will explain all
+% required macros.
+% \end{spelchunk}
+%
+% \subsubsection{Treat the implicit spelchunks}
+% \begin{spelchunk}
+% The texts of chapter, (sub)section titles, a.s.o. will be formatted
+% automatically such that they are hyperlinked to the appropriate
+% audio file. Therefore, this step was not mentioned above. It is done
+% automatically for you by using the \spelatex{} package.
+% \end{spelchunk}
+%
+% \begin{spelchunk}
+% You only need to cover your \emph{defunct implicit spelchunks}:\\
+% \DescribeMacro{\spelitem}
+% Use this macro instead of the \texttt{\textbackslash{}item} macro to make
+% sure your list environments are converted to speech chunks
+% appropriately.
+% \end{spelchunk}
+%
+% \begin{spelchunk}
+% Example:
+% \begin{Verbatim}
+% We like
+% \begin{itemize}
+% \spelitem{apples,}
+% \spelitem{pears, and}
+% \spelitem{oranges.}
+% \end{itemize}
+% \end{Verbatim}
+% \end{spelchunk}
+% \begin{spelchunk}
+% Another example:
+% \begin{Verbatim}
+% If you don't know these fruits:
+% \begin{description}
+% \spelitem[apple]{a green round fruit}
+% \spelitem[pears]{a green pointy-shaped fruit}
+% \spelitem[orange]{an orange round fruit}
+% \end{description}
+% \end{Verbatim}
+% Note that the spel exporter in Org-mode takes care of all this
+% boilerplate work.
+% \end{spelchunk}
+%
+% \subsubsection{Treat the explicit spelchunks}
+%
+% \begin{spelchunk}
+% \DescribeEnv{spelchunk}
+% Use this environment to embed the chunks of text in that you want
+% to generate audio for. In case the content is an equation, a
+% figure or a table, we recommend specifying |arealink| as the
+% optional argument to the |spelchunk| environment. It makes the
+% entire equation an active hyperlink.
+% \end{spelchunk}
+%
+% \begin{spelchunk}
+% Example:\\
+% {\footnotesize (note: the example below is not \spelatex{}-enabled because it
+% generates internal package problems)}
+% \end{spelchunk}
+% \begin{Verbatim}
+% \begin{spelchunk}
+% An orderinary paragraph must be embedded in this environment.
+% The same holds for equations! However, then we recommend using
+% the |arealink| option, as that makes the full area of the
+% equation clickable and avoids an empty white line before the
+% equation.
+% \end{spelchunk}
+% \begin{spelchunk}[arealink]
+% \begin{align}
+% E &= m c^2\\
+% e^{j\pi} &= -1
+% \end{align}
+% \end{spelchunk}
+% \end{Verbatim}
+%
+%
+% \subsubsection{Manually provide text to read when needed}
+% \begin{spelchunk}
+% \DescribeEnv{spelchunkad}
+% If you want a different text to be used for the previous
+% spelchunk environment, this environment allows you to specify it.
+% For plain text or math environments, this is also your generic escape
+% route in case the \spelpl{} parser does not work as you'd like
+% it to.\\
+% \end{spelchunk}
+% \begin{spelchunk}
+% Just have your |spelchunk| environment followed by a
+% |spelchunkad| environment that specifies the correct text to read
+% out loud. However, please, file a bug report, such that we can
+% improve the tool.
+% \end{spelchunk}
+%
+% \begin{spelchunk}
+% Example:\\
+% {\footnotesize (note: the example below is not \spelatex{}-enabled because it
+% generates internal package problems)}
+% \end{spelchunk}
+% \begin{Verbatim}
+% \begin{spelchunk}
+% An orderinary paragraph must be embedded in this environment.
+% \end{spelchunk}
+% \begin{spelchunkad}
+% Do not forget to embed ordinary paragraphs in this environment.
+% \end{spelchunkad}
+% \end{Verbatim}
+%
+% \begin{spelchunk}
+% For non-textual material such as figures or tables, this allows you
+% to specify a sensible text that acts as an audio description for
+% that material.\\
+% Just have your |spelchunk| environment that surrounds your figure
+% or table, followed by a |spelchunkad| environment that provides
+% the audio description for the non-textual material.
+% \end{spelchunk}
+%
+% \begin{spelchunk}
+% Example:\\
+% {\footnotesize (note: the example below is not \spelatex{}-enabled because it
+% generates internal package problems)}
+% \end{spelchunk}
+% \begin{Verbatim}
+% \begin{spelchunk}
+% \includegraphics{engine.jpg}
+% \end{spelchunk}
+% \begin{spelchunkad}
+% The image shows a turbo-fan engine of an aircraft. One can
+% clearly see the silver blades of the fan, and the housing. Note
+% how little spacing there is between the blades and the housing.
+% \end{spelchunkad}
+% \end{Verbatim}
+%
+% \subsubsection{Provide descriptions for typesetting macros}
+%
+% \DescribeMacro{\spelmacad}
+% \begin{spelchunk}
+% Often, recurring constructs are being typeset using a dedicated
+% macro, defined by the user.
+% For example, to consistently typeset input voltages for arbitrary pins,
+% one might have defined the macro:
+% \begin{Verbatim}
+% \newcommand\vin[2][IN]{\ensuremath{v_{\mathit{#1},#2}}}
+% \end{Verbatim}
+% \end{spelchunk}
+% \newcommand\vin[2][IN]{\ensuremath{v_{\mathit{#1},#2}}}%
+% \spelmacad{vin}[2][IN]{the #1put voltage at pin #2}%
+% \begin{spelchunk}
+% This allows easy specification of
+% \begin{Verbatim}
+% \vin{1} = \sin 20 t
+% \end{Verbatim}
+% resulting in $\vin{1} = \sin 20 t$.
+% \end{spelchunk}
+%
+% \begin{spelchunk}
+% However one might want this line to be read as 'the input voltage
+% at pin 1 equals sine 20 t'.\\
+% To this end, one can provide an description for this macro
+% using the |spelmacad| macro.
+% \end{spelchunk}
+%
+% \begin{spelchunk}
+% Example:
+% \begin{Verbatim}
+% \spelmacad{vin}[1][IN]{the #1put voltage at pin #2}
+% \end{Verbatim}
+% Note that the audio description in this case will only be
+% acceptable, for arguments IN and OUT. One clearly has to take the
+% audio description into account when defining \LaTeX{}-macros.
+% \end{spelchunk}
+%
+% \subsubsection{Descriptions for typesetting environments}
+%
+% \DescribeMacro{\spelenvad}
+% \begin{spelchunk}
+% Often, recurring constructs are being typeset using a dedicated
+% environment, defined by the user.
+% For example, to consistently typeset a proof or illustration one might
+% have defined the environment:
+% \begin{Verbatim}
+% \newenvironment{proof}[2][Proof]{
+% \textbf{#1: #2}\\
+% }
+% {
+% \hfill$\blacksquare$\\
+% }
+% \end{Verbatim}
+% \end{spelchunk}
+% \begin{spelchunk}
+% This allows easy specification of an illustration as:
+% \begin{Verbatim}
+% \begin{proof}[Illustration]{solving a quadratic equation}
+% blabla
+% \end{proof}
+% \end{Verbatim}
+% \end{spelchunk}
+% \begin{spelchunk}
+% However one might want this environment to be read as
+% 'Illustration of solving a quadratic equation: blabla. This
+% concludes this illustration.'\\
+% To this end, one can provide an description for this macro
+% using the |spelenvad| macro.
+% \end{spelchunk}
+%
+%
+% \begin{spelchunk}
+% Example:
+% \begin{Verbatim}
+% \spelenvad{proof}[1][Illustration]
+% {#1 of #2:}
+% {This concludes this #1.}
+% \end{Verbatim}
+% \end{spelchunk}
+%
+% \subsubsection{Using the i18n features of \spelpl when describing
+% your macros and environments}
+% \begin{spelchunk}
+% Sooner rather than later you will feel the need to provide reading
+% alternatives for your constructs that are language dependent. In
+% that case you can call the i18n features that are built into
+% \spelpl. We illustrate this with an example.
+% \end{spelchunk}
+%
+% \begin{spelchunk}
+% Assume you've made your own command to raise numbers to a power,
+% and you provide and description for your macro.
+% \end{spelchunk}
+% \begin{Verbatim}
+% \newcommand\numtopower[2]{#1^{#2}}
+% \spelmacad{numtopower}[2]{#1 to the power of #2}
+% \end{Verbatim}
+%
+% \begin{spelchunk}
+% The problem with this solution is, that it only works for one
+% language. The solution is to use an i18n expression in your
+% description:
+% \end{spelchunk}
+% \begin{Verbatim}
+% \spelmacad{numtopower}[2]{#1 @{i18n(Power,#2)}}
+% \end{Verbatim}
+% \begin{spelchunk}
+% This will call the maketext function (See Locale::Maketext) on
+% the Lexicon provided in SpeL::Wizard::I18n, as:
+% \end{spelchunk}
+% \begin{Verbatim}
+% $SpeL::Wizzard::I18n::lh->maketext( 'Power', "#2")
+% \end{Verbatim}
+% \begin{spelchunk}
+% to read your macro.
+% \end{spelchunk}
+%
+% \subsubsection{The extra math commands}
+% Note that these commands are only available if you provide the
+% package option |extramath|.
+%
+% \DescribeMacro{\setenum}
+% \begin{spelchunk}
+% This macro typesets an enumeration set and makes sure \spelpl{}
+% can read it properly.
+% \end{spelchunk}
+% \begin{spelchunk}
+% \begin{Verbatim}
+% \begin{equation}
+% P = \setenum{ 2, 3, 5, 7, 11, 13, \ldots }
+% \end{equation}
+% \end{Verbatim}
+% \end{spelchunk}
+%
+% \DescribeMacro{\setdesc}
+% \begin{spelchunk}
+% This macro typesets an enumeration set and makes sure \spelpl{}
+% can read it properly.
+% \end{spelchunk}
+% \begin{spelchunk}
+% \begin{Verbatim}
+% \begin{equation}
+% P = \setdesc{ n \in N \mid n \text{~is prime} }
+% \end{equation}
+% \end{Verbatim}
+% \end{spelchunk}
+%
+% \subsection{Going through the flow}
+% \begin{spelchunk}
+% Once your document source has been prepared, you are ready for the
+% regular \spelatex-flow. It consists of 3 steps.
+% \end{spelchunk}
+%
+% \begin{enumerate}
+% \spelitem{Create a \texttt{jobname-spel} subdirectory in the
+% working directory your \LaTeX{} source document is in (replace
+% jobname with the basename of your latex file, the final
+% \texttt{-spel} is a literal).}
+% \spelitem{Run your document
+% 3-times through your \{pdf,Xe,Lua\}\LaTeX{}-compiler to get all
+% the references right.}
+% \spelitem{Run the \spelpl{} speech
+% generator (see scripts directory or the wrapper provided by the
+% package manager), by launching it with the base name of your
+% document as command-line
+% argument.\\
+% E.g.: \texttt{\spelpl{} -v example}}\\
+% The |-v| argument causes the script to be somewhat more verbose.
+% \end{enumerate}
+%
+% \begin{spelchunk}
+% The result of this will be a PDF file equipped with links to audio
+% files in the 'speech' subdirectory. Alas your PDF file has been
+% become a little less portable, as it now requires the 'speech'
+% subdirectory to be complete. You might want to package the
+% ensemble into a tar-file or zip-archive.
+% \end{spelchunk}
+%
+%%
+% \section{Example}
+%
+% \begin{spelchunk}
+% Below, you can find a simple example to give you a head-start.
+% In order not to spoil the fun for you, the embedded version here
+% is not speech-enabled.
+% \end{spelchunk}
+%
+% \begin{VerbatimOut}[gobble=4]{Example/example.tex}
+% \documentclass{article}
+%
+% \usepackage[dutch,english]{babel} % load babel before spel to avoid
+% % option clash!
+% \selectlanguage{english}
+% \usepackage[format=ogg]{spelatex}
+%
+% \newrobustcmd\CTAN{CTAN}
+% \spelmacad{CTAN}{see-tan}
+% \newrobustcmd\CPAN{CPAN}
+% \spelmacad{CPAN}{see-pan}
+%
+% \title{\spelatex{} Example}
+% \author{Walter Daems and Paul Levrie}
+% \date{2011/04/12}
+% \setlength\parindent{0em}
+% \setlength\parskip{1ex}
+%
+% \begin{document}
+%
+% \maketitle
+%
+% \section{Introduction}
+%
+% \begin{spelchunk}
+% This file is just a simple showcase of the features of \spelatex.
+% Below, you'll find examples of:
+% \end{spelchunk}
+%
+% \begin{itemize}
+% \spelitem{a simple equation}
+% \spelitem{a more complex equation}
+% \end{itemize}
+%
+% \section{A simple equation}
+% \label{eqn:simple}
+% \begin{spelchunk}
+% Consider the following simple definition of a polynomial function and
+% check its spoken version by clicking on it.
+% \end{spelchunk}
+% \begin{spelchunk}[arealink]
+% \begin{equation}
+% f(x) = x^{5}- x^4 + 7 x^3 + 3 x^2 - 8 x + 23
+% \end{equation}
+% \end{spelchunk}
+% \begin{spelchunk}
+% This seems a simple equation, however, it is not so straightforward
+% for an automated reader, to read it correctly.
+% \end{spelchunk}
+%
+% \section{A more complex equation}
+% \newcommand\xx[2]{\ensuremath{#1_{#2}}}
+% \spelmacad{xx}[2]{#1 #2}
+%
+% \label{eqn:complex}
+% \begin{spelchunk}
+% For a lightray that hits the parabola at the point
+% $P(t,9-\frac{t^2}{4})$, the reflected ray has slope $\tan 2\alpha$.
+% Since the slope of the tangent to the parabola at $P$ is
+% equal to $\tan\alpha = -\frac{t}{2}$, the equation of the
+% reflected ray is given by
+% \end{spelchunk}
+% \begin{spelchunk}[arealink]
+% \[
+% y-9+\frac{t^2}{4} = -\frac{4t}{4-t^2} \cdot (x-t)
+% \]
+% \end{spelchunk}
+%
+% \selectlanguage{dutch}
+% \section{Een andere taal}
+% \begin{spelchunk}
+% \spelatex{} is ook volledig babel-actief, wat wil zeggen dat de
+% voorleesstem de geselecteerde taal zal volgen.
+% \end{spelchunk}
+%
+% \begin{spelchunk}[arealink]
+% \[
+% y-9+\frac{t^2}{4} = -\frac{4t}{4-t^2} \cdot (x-t)
+% \]
+% \end{spelchunk}
+
+% \selectlanguage{english}
+% \section{And some extras}
+% \subsection{Citations}
+% \begin{spelchunk}
+% Two excellent repositories are \CPAN{} \cite{CPAN} and \CTAN{} \cite{CTAN}.
+% \end{spelchunk}
+%
+% \subsection{References to labels}
+% \begin{spelchunk}
+% Section~\ref{eqn:simple} contains an illustration of a simple
+% equation. For a more complex equation, we refer the user to
+% section~\ref{eqn:complex}.
+% \end{spelchunk}
+%
+% \bibliographystyle{alpha}
+%
+% \begin{thebibliography}{99}
+%
+% \bibitem{CTAN}
+% The Comprehensive \TeX{} Archive Network.
+% \newblock \url{http://www.ctan.org}.
+% \newblock online, accessed in August 2021.
+%
+% \bibitem{CPAN}
+% The Comprehensive Perl Archive Network.
+% \newblock \url{http://www.cpan.org}.
+% \newblock online, accessed in August 2021.
+%
+% \end{thebibliography}
+%
+% \end{document}
+% \end{VerbatimOut}
+% \VerbatimInput[frame=lines,numbers=left,gobble=0]{Example/example.tex}
+%
+% \section{Demo}
+%
+% \newcommand\rd[1]{\ensuremath{\mathrm{d}#1}}
+% \spelmacad{rd}[1]{d of #1}
+% \newcommand\xx[2]{\ensuremath{#1_{#2}}}
+%
+% \begin{spelchunk}
+% The examples below have been composed and used to test the math
+% reading capabilities of \spelatex{} and \spelpl. The source code has not
+% been made visible in this document. If you'd like to see the
+% source code, check the original |.dtx|-file that was used to
+% generate this PDF-file.
+% \end{spelchunk}
+%
+% \subsection{Numbers}
+% \begin{spelchunk}[arealink]
+% \begin{align}
+% \pi\\
+% -31415\\
+% 1.25\\
+% -0.34 \times 10^{4}\\
+% 12 - j 3\\
+% -31415.23 + .45i
+% \end{align}
+% \end{spelchunk}
+%
+%
+% \subsection{Fractions}
+% \subsubsection{A fraction only containg numbers}
+% \begin{spelchunk}[arealink]
+% \begin{align}
+% x &= - \frac{1}{2} \\
+% y &= - \sqrt{\frac{\pi}{2}}
+% \end{align}
+% \end{spelchunk}
+%
+% \subsubsection{A fraction with a little more under the hood}
+% \begin{spelchunk}[arealink]
+% \begin{align}
+% u &= - \frac{x^2+35}{\sqrt{12}} \\
+% v &= - \frac{\sqrt{\frac{\pi}{2}}}{-3x^2+3}
+% \end{align}
+% \end{spelchunk}
+%
+%
+% \subsection{Simple expressions}
+% \subsubsection{A polynomial function}%
+% \begin{spelchunk}[arealink]
+% \begin{equation}
+% f(x) = x^{5}- x^4 + 7 x^3 + 3 x^2 - 8 x + 23
+% \end{equation}
+% \end{spelchunk}
+%
+% \subsubsection{Some more complex equations}
+% \begin{spelchunk}
+% Here's de Moivre's formula:
+% \end{spelchunk}
+% \begin{spelchunk}[arealink]
+% \begin{equation}
+% \left(\cos x+j\sin x\right)^n=\cos(nx)+j\sin(nx)
+% \end{equation}
+% \end{spelchunk}
+%
+% \begin{spelchunk}
+% Euler's relationship:
+% \end{spelchunk}
+% \begin{spelchunk}[arealink]
+% \begin{equation}
+% e^{j \phi} = \cos \phi + j \sin \phi
+% \end{equation}
+% \end{spelchunk}
+%
+% \begin{spelchunk}
+% Euler's identity:
+% \end{spelchunk}
+% \begin{spelchunk}
+% \begin{equation}
+% e^{j \pi} + 1 = 0
+% \end{equation}
+% \end{spelchunk}
+%
+% \subsubsection{A rather well-known definite integral}
+% \begin{spelchunk}
+% \begin{equation}
+% \int_{-\infty}^\infty e^{-x^2}\,\rd{x} = \sqrt{\pi}
+% \end{equation}
+% \end{spelchunk}
+%
+% \subsection{Sets}
+% \begin{spelchunk}
+% Let's check the two set commands this package provides:
+% \texttt{\textbackslash{}setenum} and
+% \texttt{\textbackslash{}setdesc}:
+% \end{spelchunk}
+% \begin{spelchunk}[arealink]
+% \begin{align}
+% P &= \setenum{ 2, 3, 5, 7, 11, 13, \ldots }\\
+% P &= \setdesc{ n \in N \mid n \text{~is prime}}
+% \end{align}
+% \end{spelchunk}
+%
+% \subsection{Matrices}
+% \begin{spelchunk}
+% How about some linear algebra?
+% \end{spelchunk}
+% \begin{spelchunk}[arealink]
+% \begin{align}
+% \begin{bmatrix}
+% 3 & 4 \\
+% 7 & 2
+% \end{bmatrix}
+% \cdot
+% \begin{bmatrix}
+% x \\ y
+% \end{bmatrix}
+% &=
+% \begin{bmatrix}
+% 1 \\ 0
+% \end{bmatrix}\\
+% \begin{vmatrix}
+% 3 & 4 \\
+% 7 & 2
+% \end{vmatrix}
+% &= -22
+% \end{align}
+% \end{spelchunk}
+%
+% \subsection{Figures and Tables}
+% \subsubsection{Figures}
+% \begin{spelchunk}
+% The example Fig.~\ref{fig:blockdiagram} illustrates the voice-aid
+% that can be added to figures.
+% \end{spelchunk}
+% \begin{figure}[h]
+% \setlength{\unitlength}{4mm}
+% \begin{spelchunk}
+% \begin{center}
+% \begin{picture}(24,2)
+% \put(0,0.8){$x[n]$}
+% \put(2,1){\vector(1,0){3}}
+% \put(5,0){\framebox(5,2){$H(z)$}}
+% \put(10,1){\vector(1,0){3}}
+% \put(13,0){\framebox(5,2){$G(z) \ast F(z)$}}
+% \put(18,1){\vector(1,0){3}}
+% \put(22,0.8){$y[n]$}
+% \end{picture}
+% \end{center}
+% \end{spelchunk}
+% \begin{spelchunkad}
+% The discrete-time input signal x is fed through a filter H of
+% z. The intermediate output signal of the filter H of z is fed into
+% another filter whose transfer function is the convolution of G of
+% z and F of z. This resuspel in the discrete-time output signal y.
+% \end{spelchunkad}
+% \caption{A block diagram of the filter system}
+% \label{fig:blockdiagram}
+% \end{figure}
+%
+% \subsubsection{Tables}
+% \begin{spelchunk}
+% \begin{center}
+% \begin{tabular}{lcc}
+% Food & Sweet & Bitter \\
+% \hline
+% apple & $\bullet$ & \\
+% unsweetened coffee & & $\bullet$\\
+% cake & $\bullet$ & \\
+% chocolate & $\bullet$ & $\bullet$ \\
+% \hline
+% \end{tabular}
+% \end{center}
+% \end{spelchunk}
+% \begin{spelchunkad}
+% This table indicates the sweetness and bitterness for several food
+% products.
+% It lists apples that are (sweet); unsweetened coffee which is
+% bitter; cake which is sweet and chocolate that is both sweet and bitter.
+% \end{spelchunkad}
+% \subsection{A parabola tale}
+%
+% \begin{spelchunk}
+% For a lightray that hits the parabola at the point
+% $P(t,9-\frac{t^2}{4})$, the reflected ray has slope $\tan 2\alpha$.
+% Since the slope of the tangent to the parabola at $P$ is equal
+% to $\tan \alpha = -\frac{t}{2}$, the equation of the reflected
+% ray is given by
+% \end{spelchunk}
+% \begin{spelchunk}
+% \begin{equation}
+% y-9+\frac{t^2}{4} = -\frac{4t}{4-t^2} \cdot (x-t)
+% \end{equation}
+% \end{spelchunk}
+%
+% \begin{spelchunk}
+% The $x$-coordinate of the point of intersection of the reflected ray
+% with a fixed line $y=u$ satisfies:
+% \end{spelchunk}
+% \begin{spelchunk}
+% \begin{equation}
+% u-9+\frac{t^2}{4} = -\frac{4t}{4-t^2} \cdot (x-t)
+% \label{eqn:refray}
+% \end{equation}
+% \end{spelchunk}
+%
+% \begin{spelchunk}
+% We calculate the minimal value of this $x$ for varying $t$, by
+% differentiating (\ref{eqn:refray}) with respect to $t$ and assuming
+% that $\frac{\rd{x}}{\rd{t}}=0$:
+% \end{spelchunk}
+% \begin{spelchunk}
+% \[
+% \frac{t}{2} = -\frac{4(4+t^2)}{(4-t^2)^2} (x-t) -
+% \frac{4t}{4-t^2} \cdot (-1) \ \ \ \Leftrightarrow \ \ \ x=
+% 3\frac{t}{2}-\frac{t^3}{8}
+% \]
+% \end{spelchunk}
+%
+% \begin{spelchunk}
+% Inserting in the equation containing $u$ gives us the relation
+% between $t$ and $u$:
+% \end{spelchunk}
+% \begin{spelchunk}
+% \[
+% u = 9- 3 \frac{t^2}{4}
+% \]
+% \end{spelchunk}
+%
+% \begin{spelchunk}
+% This leads to a system of parametric equations for the caustic:
+% \end{spelchunk}
+% \begin{spelchunk}
+% \[
+% \left\{\begin{array}{l}
+% x = 3\frac{t}{2}-\frac{t^3}{8} \\[0.3cm]
+% y = 9- 3 \frac{t^2}{4}
+% \end{array} \right.
+% \quad \Leftrightarrow \quad
+% \left\{\begin{array}{l}
+% x = \frac{t}{2} \cdot (3 -\frac{t^2}{4}) \\
+% y = 3(3- \frac{t^2}{4})
+% \end{array} \right.
+% \]
+% \end{spelchunk}
+%
+% \begin{spelchunk}
+% It is now easy to eliminate the parameter $t$. As you can see, $t
+% = \frac{6 x}{y}$. Inserting into the equation for $y$ gives us the
+% equation of Tschirnhausen's cubic.
+% \end{spelchunk}
+%
+%
+% \section{Implementation}
+% \begin{spelchunk}
+% To ease the implementation work and because raw \LaTeX{} code is
+% difficult to read on itself, We took the liberty of not providing
+% this section with speech chunks (except for this introduction
+% text).
+% \end{spelchunk}
+%
+% \iffalse
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+% \fi
+%
+% \subsection{Design principles}
+%
+% \spelatex{} has been developed using the following main targets in
+% mind. Some of them are common sense design principles, some of them
+% are specific for this application.
+% \begin{itemize}
+% \item minimal effort in preparing a \LaTeX{} manuscript for use with
+% \spelatex{}
+% \item maximal compatibility with existing \LaTeX{} packages
+% \item no (or minimal) compromise mathematical reading capabilities
+% for mathematical constructs
+% \item user extensible audio preprocessor
+% \item minimal use of processing power for text to speech conversion
+% \end{itemize}
+%
+%
+% \subsection{Auxiliary Packages}
+% The \spelatex{} package uses some basic auxiliary packages to make life
+% easy.
+% \begin{macrocode}
+\RequirePackage{expl3}
+\RequirePackage{hyperref}
+\RequirePackage{xcolor}
+\RequirePackage{ifthen}
+\RequirePackage{fancyvrb}
+\RequirePackage{newfile}
+\RequirePackage{rotating}
+\RequirePackage{babel}
+\hypersetup{backref=true,
+ breaklinks=true,
+ colorlinks=true,
+ citecolor=black,
+ filecolor=black,
+ hyperindex=true,
+ linkcolor=black,
+ pageanchor=true,
+ pagebackref=true,
+ pagecolor=black,
+ pdfpagemode=UseOutlines,
+ bookmarksopen=true,
+ urlcolor=black}
+\RequirePackage{kvoptions}
+\RequirePackage{xkeyval}
+\RequirePackage{marginnote}
+% \end{macrocode}
+%
+% \subsection{Options}
+%
+% \begin{macrocode}
+\SetupKeyvalOptions{
+ family=spel,
+ prefix=spel@
+}
+\DeclareStringOption[ogg]{format}
+\DeclareBoolOption[false]{disabled}
+\DeclareBoolOption[false]{extramath}
+\DeclareBoolOption[false]{propermath}
+\ProcessKeyvalOptions*
+% \end{macrocode}
+%
+% \subsection{Logos}
+% Vanity is everything, so let's make some logoware.
+% \begin{macro}{\spelatex}
+% This is the official \spelatex{} logo.
+% \begin{macrocode}
+\DeclareRobustCommand{\spelatex}{S\kern-0.3ex\raisebox{-0.1ex}{\rotatebox{-15}{p}}\kern-0.25ex\raisebox{0.1ex}{\rotatebox{10}{e}}\kern-0.1ex\LaTeX}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\spelbox}
+% This is the official \spelbox{} logo.
+% \begin{macrocode}
+\DeclareRobustCommand{\spelbox}{S\kern-0.3ex\raisebox{-0.1ex}{\rotatebox{-15}{p}}\kern-0.25ex\raisebox{0.1ex}{\rotatebox{10}{e}}\kern-0.1exLbo\raisebox{-0.2ex}{x}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\spelpl}
+% This is the official \spelpl{} logo.
+% \begin{macrocode}
+\DeclareRobustCommand{\spelpl}{\texttt{spel-wizard.pl}}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{The speech stream}
+% The basic structural elements of a document (title, chapters,
+% sections, \ldots) are written to the speech index stream. This is a
+% textfile that has the same base name as your \LaTeX{} job and has
+% extension |.spelidx|.
+%
+% It is the index to the chunks of text that are written to the speech
+% directory.
+%
+% The |.spelidx| file requires postprocessing by the \spelpl{}
+% script in order to obtain the required audio files.
+%
+% The speech stream needs to be open before the preamble's title,
+% author and date.
+% \begin{macrocode}
+\newoutputstream{chunk}
+\newoutputstream{spelidx}
+\openoutputfile{\jobname.spelidx}{spelidx}
+% \end{macrocode}
+% The stream needs to be closed upon termination of the document.
+% \begin{macrocode}
+\AtEndDocument{
+ \closeoutputstream{spelidx}%
+}
+% \end{macrocode}
+%
+% To begin with, we write the standard locations for audio and chunk
+% data to the |.spelidx| file.
+% \begin{macrocode}
+\newcommand\audiodir{\jobname-spel}
+\newcommand\chunkdir{\jobname-spel}
+\addtostream{spelidx}{format|\spel@format}
+\addtostream{spelidx}{audiodir|\audiodir}
+\addtostream{spelidx}{chunkdir|\chunkdir}
+% \end{macrocode}
+%
+% To ease writing to the speech index stream, we define a |\spelidxwrite|
+% function to take care of appropriate formatting.
+% \begin{macro}{\spel@idxwrite}
+% This is an internal macro, used to write information to the |.spelidx|
+% file and to a correspondig chunk file.
+% \begin{macrocode}
+\ifspel@disabled\newcommand{\spel@idxwrite}[2]{}\else
+\newcommand{\spel@idxwrite}[2]{%
+ \typeout{spel: Generating #1 - #2}%
+ \addtostream{spelidx}{#1|#2}%
+}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% To ease writing speech chunk, we define a |\spel@chunkwrite|
+% function.
+% \begin{macro}{\spel@chunkwrite}
+% This is an internal macro, used to write information to the speech chunk
+% files.
+% \begin{macrocode}
+\ifspel@disabled\newcommand{\spel@chunkwrite}[2]{}\else
+\newcommand{\spel@chunkwrite}[2]{%
+ \openoutputfile{\audiodir/#1.tex}{chunk}%
+ \addtostream{chunk}{#2}%
+ \closeoutputstream{chunk}%
+}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Create missing counters}
+% As we need to be able to fully identify every speech chunk, we need
+% to provide some missing counters for the starred versions of the
+% sectioning commands.
+%
+% \begin{macro}{spel@spart} counter
+% \begin{macrocode}
+\newcounter{spel@spart}
+\renewcommand\thespel@spart{\@arabic\c@spel@spart}
+\setcounter{spel@spart}{0}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{spel@schapter} counter
+% \begin{macrocode}
+\ifx\c@chapter\@undefined
+\else
+\ifx\c@part\@undefined
+\newcounter{spel@schapter}
+\else
+\newcounter{spel@schapter}[part]
+\fi
+\renewcommand\thespel@schapter{\@arabic\c@spel@schapter}
+\setcounter{spel@schapter}{0}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{spel@ssect} counter
+% \begin{macrocode}
+\ifx\c@chapter\@undefined
+\newcounter{spel@ssect}
+\else
+\newcounter{spel@ssect}[chapter]
+\fi
+\renewcommand\thespel@ssect{\@arabic\c@spel@ssect}
+\setcounter{spel@ssect}{0}
+% \end{macrocode}
+% \end{macro}
+%
+% In addition, some elements that are not canonically numbered require
+% a unique and monotonous numbering.
+% \begin{macro}{spel@footnote} counter
+% \begin{macrocode}
+\newcounter{spel@footnote}
+\renewcommand\thespel@footnote{\@arabic\c@spel@footnote}
+\setcounter{spel@footnote}{0}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{spel@chunk} counter
+% \begin{macrocode}
+\newcounter{spel@chunk}[subparagraph]
+\renewcommand\thespel@chunk{\@arabic\c@spel@chunk}
+\setcounter{spel@chunk}{0}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Setting up the language}
+% We want to make sure that babel communicates the switching of
+% langauges to spel, such that it can take not of it. This allows the
+% spel engine to select an appropriate language-capable voice when
+% generating the spoken text.
+% \begin{macrocode}
+\AddBabelHook{informspel}{write}{\spel@idxwrite{language}{\languagename}}
+\EnableBabelHook{informspel}
+% \end{macrocode}
+%
+% \subsection{Generating speech chunks --- implicitly}
+% \subsubsection{Auxiliary macros}
+% We define a macro to generate wrappers for single-line text elements.
+% The |\spel@registerelement| macro does
+% the job. The user can even use the macro for his own custom
+% single-line text elements (e.g., for a subtitle, a version string).
+% \begin{macro}{\spel@registerelement}
+% generic macro to register single-line text elements
+% \begin{macrocode}
+\ifspel@disabled\newcommand{\spel@registerelement}[1]{}\else
+\newcommand{\spel@registerelement}[1]{%
+ \expandafter\let\csname spel@@#1\expandafter\endcsname\csname #1\endcsname
+ \expandafter\gdef\csname #1\endcsname##1{%
+ \spel@chunkwrite{#1}{##1}
+ \csname spel@@#1\endcsname{\href{run:\audiodir/#1.\spel@format}{##1}}
+ }
+ \expandafter\AtBeginDocument{
+ \spel@idxwrite{#1}{#1}
+ }
+}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Title elements}
+% By redefining the title elements, |\title|, |\author| and |\date| we
+% avoid having to chunk them.
+%
+% Using this macro, we can easily take care of all title-like
+% elements, using:
+% \begin{macrocode}
+\spel@registerelement{title}
+\spel@registerelement{date}
+\spel@registerelement{author}
+% \end{macrocode}
+%
+% \subsubsection{Table of contents}
+% \begin{macrocode}
+\ifspel@disabled\else
+\let\spel@@addcontentsline\addcontentsline
+\renewcommand\addcontentsline[3]{%
+ \let\spel@@href\href%
+ \renewcommand\href[2]{#2}%
+ \spel@@addcontentsline{#1}{#2}{#3}%
+ \let\href\spel@@href%
+}
+\providecommand{\tableofcontents}{}
+\renewcommand\tableofcontents{%
+ \if@twocolumn
+ \@restonecoltrue\onecolumn
+ \else
+ \@restonecolfalse
+ \fi
+ \@ifclassloaded{article}{\section*{\contentsname}}{\chapter*{\contentsname}}
+ \@mkboth{%
+ \MakeUppercase\contentsname}{\MakeUppercase\contentsname}%
+ \@starttoc{toc}%
+ \if@restonecol\twocolumn\fi
+ }
+\fi
+% \end{macrocode}
+%
+% \subsubsection{Sectioning commands}
+%
+% \begin{macro}{\@part}
+% This is a simple wrapper around the regular |\@part| macro.
+% \begin{macrocode}
+\ifspel@disabled\else
+\let\spel@@part\@part
+\def\@part[#1]#2{%
+ \setcounter{spel@chunk}{0}% need this because counter resetting fails
+ \spel@@part[#1]{\href{run:\audiodir/\spel@@optpart.\spel@format}{#2}}%
+ \spel@idxwrite{part \thepart}{\spel@@optpart}%
+ \spel@chunkwrite{\spel@@optpart}{#2}%
+}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@spart}
+% This is a simple wrapper around the regular |\@spart| macro.
+% \begin{macrocode}
+\ifspel@disabled\else
+\let\spel@@spart\@spart
+\def\@spart#1{%
+ \stepcounter{spel@spart}%
+ \setcounter{spel@chunk}{0}% need this because counter resetting fails
+ \spel@@spart{%
+ \href{run:\audiodir/\spel@@optpart star-\thespel@spart.\spel@format}{#1}}%
+ \spel@idxwrite{part}{\spel@@optpart star-\thespel@spart}%
+ \spel@chunkwrite{\spel@@optpart star-\thespel@spart}{#1}%
+}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@chapter}
+% This is a simple wrapper around the regular |\@chapter| macro.
+% It is defined conditionally on the existence of the |\chapter| macro.
+% \begin{macrocode}
+\ifspel@disabled\else
+\ifx\chapter\@undefined\else
+\let\spel@@chapter\@chapter
+\def\@chapter[#1]#2{%
+ \setcounter{spel@chunk}{0}% need this because counter resetting fails
+ \spel@@chapter[#1]{%
+ \href{run:\audiodir/\spel@@optpart\thechapter.\spel@format}{#2}}%
+ \spel@idxwrite{chapter \thechapter}{\spel@@optpart\thechapter}%
+ \spel@chunkwrite{\spel@@optpart\thechapter}{#2}%
+}
+\fi
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@schapter}
+% This is a simple wrapper around the regular |\@schapter| macro.
+% It is defined condionally on the existence of the |\schapter| macro.
+% \begin{macrocode}
+\ifspel@disabled\else
+\ifx\schapter\@undefined\else
+\let\spel@@schapter\@schapter
+\def\@schapter#1{%
+ \stepcounter{spel@schapter}%
+ \setcounter{spel@chunk}{0}% need this because counter resetting fails
+ \spel@@schapter{%
+ \href{run:\audiodir/\spel@@optpart star-\thespel@schapter.\spel@format}{#1}}%
+ \spel@idxwrite{chapter}{\spel@@optpart star-\thespel@schapter}%
+ \spel@chunkwrite{\spel@@optpart star-\thespel@schapter}{#1}%
+}
+\fi
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@sect}
+% This is a simple wrapper around the regular |\@sect| macro.
+% \begin{macrocode}
+\ifspel@disabled\else
+\let\spel@@sect\@sect
+\def\@sect#1#2#3#4#5#6[#7]#8{%
+ % correct default tex behavior
+ \ifnum #2>\c@secnumdepth%
+ \stepcounter{#1}%
+ \fi%
+ \setcounter{spel@chunk}{0}% need this because counter resetting fails
+ \spel@@sect{#1}{#2}{#3}{#4}{#5}{#6}[#7]{%
+ \href{run:\audiodir/\spel@@optpart\thesubparagraph.\spel@format}{#8}\hfill%
+ \href{run:\audiodir/\spel@@optpart\thesubparagraph.m3u}{\textcolor{black!25}{$\triangleright$}}}%
+ \def\spel@@label{\ifnum #2>\c@secnumdepth\else#1 \csname the#1\endcsname\fi}
+ \spel@idxwrite{\spel@@label}{\spel@@optpart\thesubparagraph}%
+ \spel@chunkwrite{\spel@@optpart\thesubparagraph}{#8}%
+}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@sect}
+% This is a simple wrapper around the regular |\@ssect| macro.
+% \begin{macrocode}
+\ifspel@disabled\else
+\let\spel@@ssect\@ssect
+\def\@ssect#1#2#3#4#5{%
+ \stepcounter{spel@ssect}%
+ %\setcounter{spel@chunk}{0}% need this because counter resetting fails
+ \spel@@ssect{#1}{#2}{#3}{#4}{%
+ \href{run:\audiodir/\spel@@optpart\thesubparagraph-star-\thespel@ssect.\spel@format}%
+ {#5}}%
+ \spel@idxwrite{section}{\spel@@optpart\thesubparagraph-star-\thespel@ssect}%
+ \spel@chunkwrite{\spel@@optpart\thesubparagraph-star-\thespel@ssect}{#5}%
+}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Notes}
+%
+% \begin{macro}{\@footnotetext}
+% This is a simple wrapper around the regular |\$footnotetext|
+% macro. We use a |spelfootnote| counter to keep track of the
+% individual footnotes.
+% \begin{macrocode}
+\ifspel@disabled\else
+\let\spel@@fntext\@footnotetext
+\long\def\@footnotetext#1{%
+ \stepcounter{spel@footnote}%
+ \settowidth\spel@mptboxwidth{\usebox\spel@mptbox}%
+ \spel@@fntext{%
+ \hspace*{-\spel@mptboxwidth}\href{run:\audiodir/footnote-\thespel@footnote.\spel@format}{\usebox\spel@mptbox}#1}%
+ \spel@idxwrite{footnote}{footnote-\thespel@footnote}%
+ \spel@chunkwrite{footnote-\thespel@footnote}{#1}%
+}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Itemizations/Enumerations}
+
+% \begin{macro}{\spelitem}
+% This macro is to be used inside an enumerate, itemize, description
+% environment to automatically cause the generation of a speech
+% chunk.
+% \begin{macrocode}
+\ifspel@disabled\newcommand{\spelitem}{\item}\else
+\newcommand{\spelitem}{%
+ \@ifnextchar[{\spelitem@opt}{\spelitem@intone}
+}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% This macro uses a number of auxiliary macros.
+% \begin{macro}{\spelitem@opt}
+% This is an internal macro intended to deal with the |\item|'s
+% options.
+% \begin{macrocode}
+\def\spelitem@opt[#1]{\spelitem@inttwo{#1}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\spelitem@opt}
+% This is an internal macro intended to deal with an |\spelitem| without
+% options.
+% \begin{macrocode}
+\def\spelitem@intone#1{%
+ \stepcounter{spel@chunk}%
+ \settowidth\spel@mptboxwidth{\usebox\spel@mptbox}%
+ \spel@idxwrite{item}{\spel@@optpart\thesubparagraph-\thespel@chunk}%
+ \spel@chunkwrite{\spel@@optpart\thesubparagraph-\thespel@chunk}{#1}%
+ \item \hspace*{-\spel@mptboxwidth}\href{run:\audiodir/\spel@@optpart\thesubparagraph-\thespel@chunk.\spel@format}{\usebox\spel@mptbox}#1}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\spelitem@inttwo}
+% This is an internal macro intended to deal with an |\spelitem| with
+% options.
+% \begin{macrocode}
+\def\spelitem@inttwo#1#2{%
+ \stepcounter{spel@chunk}%
+ \settowidth\spel@mptboxwidth{\usebox\spel@mptbox}%
+ \spel@idxwrite{item}{\spel@@optpart\thesubparagraph-\thespel@chunk}%
+ \spel@chunkwrite{\spel@@optpart\thesubparagraph-\thespel@chunk}{#1 . #2}%
+\item[#1] \hspace*{-\spel@mptboxwidth}\href{run:\audiodir/\spel@@optpart\thesubparagraph-\thespel@chunk.\spel@format}{\usebox\spel@mptbox}#2}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\caption}
+% This is a redefinition of the |\caption| macro such that it
+% becomes alive.
+% \begin{macrocode}
+\ifspel@disabled\else
+\let\spel@@caption\caption
+\renewcommand\caption[2][]{%
+ \stepcounter{spel@chunk}%
+ \spel@idxwrite{caption}{\spel@@optpart\thesubparagraph-\thespel@chunk}%
+ \spel@chunkwrite{\spel@@optpart\thesubparagraph-\thespel@chunk}{#2}%
+ \spel@@caption[#1]{\protect\href{run:\audiodir/\spel@@optpart\thesubparagraph-\thespel@chunk.\spel@format}{#2}}
+}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Generating speech chunks --- explicitly}
+%
+% \subsubsection{Spel chunks to be parsed by \spelpl}
+% \begin{environment}{spelchunk}
+% The |spelchunk| environment is used to define explicit speech chunks.
+% \begin{macrocode}
+\newlength\spel@mptboxwidth
+\newsavebox\spel@mptbox
+\savebox\spel@mptbox{\textcolor{black!25}{$\qquad$}}
+\newif\ifspel@chunkarealink
+\define@key{spelchunk}{arealink}[]{\spel@chunkarealinktrue}
+\ifspel@disabled\def\spelchunk{}\else
+\def\spelchunk{%
+ \catcode`\^^M=\active%
+ \stepcounter{spel@chunk}%
+ \spel@idxwrite{chunk}{\spel@@optpart\thesubparagraph-\thespel@chunk}%
+ \@ifnextchar[{\catcode`\^^M=5\spelchunk@opt}{\catcode`\^^M=5\spelchunk@int}}%
+\fi
+\ifspel@disabled\def\endspelchunk{}\else
+\def\endspelchunk{%
+ \end{VerbatimOut}%
+ \catcode`\^^M=5\relax%
+ \ifspel@chunkarealink%
+ \href{run:\audiodir/\spel@@optpart\thesubparagraph-\thespel@chunk.\spel@format}{\input{./\chunkdir/\spel@@optpart\thesubparagraph-\thespel@chunk}}%
+ \else%
+ \settowidth\spel@mptboxwidth{\usebox\spel@mptbox}%
+ \hspace*{-\spel@mptboxwidth}\href{run:\audiodir/\spel@@optpart\thesubparagraph-\thespel@chunk.\spel@format}{\usebox\spel@mptbox}\input{./\chunkdir/\spel@@optpart\thesubparagraph-\thespel@chunk}%
+ \fi%
+ \spel@chunkarealinkfalse%
+}%
+\fi
+% \end{macrocode}
+% \end{environment}
+%
+% The environment above checks if it is called with optional arguments
+% or not.
+% \begin{macro}{\spelchunk@opt}
+% This is macro that deals with the optional arguments of the
+% |spelchunk| envronment.
+% \begin{macrocode}
+\def\spelchunk@opt[#1]{\setkeys{spelchunk}{#1}\spelchunk@int}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\spelchunk@int}
+% This is an internal macro to start the |VerbatimOut| environment
+% embedded in the |spelchunk| environment.
+% \begin{macrocode}
+\def\spelchunk@int{%
+ \VerbatimEnvironment
+ \begin{VerbatimOut}{\chunkdir/\spel@@optpart\thesubparagraph-\thespel@chunk.tex}}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Explicit spelchunks}
+%
+% \begin{environment}{spelchunkad}
+% The |spelchunkad| environment is used to override a previous speech
+% chunk. In this way you can provide your own text.
+% \begin{macrocode}
+\def\spelchunkad{%
+ \catcode`\^^M=\active
+ \@ifnextchar[{\catcode`\^^M=5\spelchunk@opt}{\catcode`\^^M=5\spelchunk@int}}
+\def\endspelchunkad{%
+ \end{VerbatimOut}
+ \catcode`\^^M=5\relax
+}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macrocode}
+\AtBeginDocument{
+ \newcommand\spel@@optpart{}
+}
+% \end{macrocode}
+%
+% \subsection{Helping the wizard to read our chunks}
+%
+% \subsubsection{Listing macros that are to be preprocessed}
+% Some \LaTeX{} or \TeX commands are only for layout purposes and are
+% totally not content related. They do not contribute to what must be
+% read. On the contrary, they make it hard for the \spelpl{} parser to
+% convert the texts flawlessly to what can be read by the
+% text-to-speech engines.
+% Examples of these layout-only commands are |\sf|, |\it|, |\tt|,
+% |\bf| and |\displaystyle| that are to be discarded, but also macro's
+% like e.g. |\fbox| for which only the content is to be retained.
+%
+% As you might also make your own macros that are pure typesetting
+% oriented, it makes sense to provide a macro that registers them as
+% pure type-setting macros and use that macro to cover the examples
+% mentioned above.
+% \begin{macro}{\spelmacpp}
+% \begin{macrocode}
+\ExplSyntaxOn
+\NewDocumentCommand{\spelmacpp}{moom}
+{
+ \addtostream{spelidx}{macpp|#1|#2|#3|#4}
+}
+\ExplSyntaxOff
+% \end{macrocode}
+% \end{macro}
+%
+% Now let's register some standard macros that are to be ignored.
+% \begin{macrocode}
+\spelmacpp{sf}{}
+\spelmacpp{it}{}
+\spelmacpp{tt}{}
+\spelmacpp{bf}{}
+\spelmacpp{HUGE}{}
+\spelmacpp{Huge}{}
+\spelmacpp{huge}{}
+\spelmacpp{LARGE}{}
+\spelmacpp{Large}{}
+\spelmacpp{large}{}
+\spelmacpp{normalsize}{}
+\spelmacpp{small}{}
+\spelmacpp{footnotesize}{}
+\spelmacpp{scriptsize}{}
+\spelmacpp{tiny}{}
+\spelmacpp{minuscule}{}
+\spelmacpp{textsf}[1]{keep}
+\spelmacpp{textit}[1]{keep}
+\spelmacpp{texttt}[1]{keep}
+\spelmacpp{textbf}[1]{keep}
+\spelmacpp{quad}{}
+\spelmacpp{qquad}{}
+\spelmacpp{displaystyle}{}
+\spelmacpp{relax}{}
+\spelmacpp{strut}{}
+\spelmacpp{mathstrut}{}
+\spelmacpp{label}[1]{}
+% \end{macrocode}
+%
+% And let's register a macro for which only the contents is to be
+% preserved:
+% \begin{macrocode}
+\spelmacpp{fbox}[1]{keep}
+% \end{macrocode}
+%
+% \subsubsection{Listing environments that are to be ignored}
+% Some \LaTeX{} or \TeX environments are only for layout purposes and are
+% totally not content related. They do not contribute to what must be
+% read. On the contrary, they make it hard for the \spelpl{} parser to
+% convert the texts flawlessly to what can be read by the
+% text-to-speech engines.
+% An examples of such a layout-only environment is the |center|
+% environment.
+%
+% As you might also make your own environments that are pure typesetting
+% oriented, it makes sense to provide a macro that registers them as
+% pure type-setting macros and use that macro to cover the examples
+% mentioned above.
+% \begin{macro}{\spelenvpp}
+% \begin{macrocode}
+\ExplSyntaxOn
+\NewDocumentCommand{\spelenvpp}{moom}
+{
+ \addtostream{spelidx}{envpp|#1|#2|#3|#4}
+}
+\ExplSyntaxOff
+% \end{macrocode}
+% \end{macro}
+%
+% Now let's register some standard macros that are to be ignored:
+% \begin{macrocode}
+\spelenvpp{center}{keep}
+% \end{macrocode}
+%
+% \subsubsection{Audio descriptions for typesetting macros}
+% \begin{macro}{\spelmacad}
+% This macro allows specifying how to treat macros (with arguments)
+% that appear in the chunks to read out loud. The arguments are in
+% order:
+% \begin{enumerate}
+% \item (mandatory) name of the macro (without leading backslash)
+% \item (optional) number of arguments of the macro
+% \item (optional) default for optional (first) argument
+% \item (mandatory) text to read (with macro parameters in them)
+% You can use the special syntax
+% |@{i18n(keyword,#1,#2)}|
+% to trigger a call to the internationalization (i18n) features built
+% in the \spelpl{} script. This will help to read your commands in an
+% appropriate way. If you miss some features in the i18n list of
+% \spelpl{}, please contact the author to help you out.
+% If you are fluent in Perl, you might also want to change the i18n
+% list of \spelpl{} yourself. It's not that hard.
+% \end{enumerate}
+% \begin{macrocode}
+\ExplSyntaxOn
+\NewDocumentCommand{\spelmacad}{moom}
+{
+ \addtostream{spelidx}{macad|#1|#2|#3|#4}
+}
+\ExplSyntaxOff
+% \end{macrocode}
+% \end{macro}
+%
+% We immediately provide some standard constructs, which are to be
+% ignored:
+% \begin{macrocode}
+\spelmacad{spelatex}{spee-lay-tech}
+\spelmacad{spelbox}{spel-box}
+\spelmacad{spelpl}{spel wizzard dot pl}
+\spelmacad{LaTeX}{lay-tech}
+\spelmacad{TeX}{tech}
+\spelmacad{textsf}[1]{#1}
+\spelmacad{texttt}[1]{#1}
+\spelmacad{textit}[1]{#1}
+\spelmacad{emph}[1]{#1}
+\spelmacad{underline}[1]{#1}
+\spelmacad{mbox}[1]{#1}
+\spelmacad{text}[1]{#1}
+\spelmacad{nobreakspace}{#1}
+\spelmacad{textasciitilde}[1]{ }
+\spelmacad{textbackslash}{backslash}
+\spelmacad{footnote}[1]{}
+\spelmacad{pm}{@{i18n(plusminus)}}
+\spelmacad{ldots}{...}
+% \end{macrocode}
+%
+% Some more that don't seem ignorable - and they are not indeed - they
+% are treated differently by \spelpl{}. However, by registering them
+% here, \spelpl{} knows there signature:
+% \begin{macrocode}
+\spelmacad{cite}[1]{}
+\spelmacad{ref}[1]{}
+\spelmacad{pageref}[1]{}
+% \end{macrocode}
+%
+% \subsubsection{Audio descriptions for typesetting environments}
+% \begin{macro}{\spelenvad}
+% This macro allows specifying how to treat environments (with arguments)
+% that appear in the chunks to read out loud. The arguments are in order:
+% \begin{enumerate}
+% \item (mandatory) name of the macro (without leading backslash)
+% \item (optional) number of arguments of the macro
+% \item (optional) default for optional (first) argument
+% \item (mandatory) text to read (with macro parameters in them)
+% \end{enumerate}
+% \begin{macrocode}
+\ExplSyntaxOn
+\NewDocumentCommand{\spelenvad}{moomm}
+{
+ \addtostream{spelidx}{envad|#1|#2|#3|#4|#5}
+}
+\ExplSyntaxOff
+% \end{macrocode}
+% \end{macro}
+%
+% We immediately provide some standard constructs, which are to be
+% ignored:
+% \begin{macrocode}
+\spelenvad{center}{}{}
+% \end{macrocode}
+%
+% \subsection{Extra math commands}
+%
+% The commands are only loaded if the package option |extramath| is
+% provided:
+%
+% \begin{macrocode}
+\ifspel@extramath
+% \end{macrocode}
+%
+% \begin{macro}{\setenum}
+% This macro typesets a set defined by enumeration:
+% \begin{macrocode}
+\DeclareRobustCommand{\setenum}[1]{\left\{#1\right\}}
+\spelmacad{setenum}[1]{@{i18n(Setenum,#1)}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\setdesc}
+% This macro typesets a set defined by description:
+% \begin{macrocode}
+\DeclareRobustCommand{\setdesc}[1]{\left\{#1\right\}}
+\spelmacad{setdesc}[1]{@{i18n(Setdesc,#1)}}
+% \end{macrocode}
+% \end{macro}
+%
+% Note that these two macro's are identical! However, the fact that
+% they have a different name is of great value to \spelpl{}.
+%
+% The conditional loading ends here:
+% \begin{macrocode}
+\fi
+% \end{macrocode}
+%
+% \iffalse
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+% \fi
+%
+% \section{TODO}
+% \begin{spelchunk}[arealink]
+% As long as there are things on my todo list, We have a reason to
+% live.
+% \end{spelchunk}
+% \begin{itemize}
+% \spelitem{provide enable/disable switch to disable certain ranges in
+% text, e.g. the implementation range in this document}
+% \spelitem{enable bibliography and citation stuff}
+% \end{itemize}
+%
+% \bibliographystyle{alpha}
+%
+% \begin{thebibliography}{99}
+%
+% \bibitem{NVDA}
+% NVDA from NV Access, empowering lives through non-visual access to technology
+% \newblock \url{https://www.nvaccess.org}
+% \newblock online, accessed in June 2024.
+%
+% \bibitem{SPRINT}
+% SprintPlus, helping people with dyslexia
+% \newblock \url{https://www.sprintplus.be/en}
+% \newblock online, accessed in June 2024.
+%
+% \bibitem{ADOBEREADER}
+% Adobe Reader, a PDF reader from Adobe.
+% \newblock \url{https://get.adobe.com/}
+% \newblock online, accessed in May 2024.
+%
+% \bibitem{TAGPDF}
+% TagPDF - Tools for experimenting with tagging using pdfLaTeX and
+% LuaLaTeX.
+% \newblock \url{https://ctan.org/pkg/tagpdf}
+% \newblock online, accessed in June 2024.
+%
+% \bibitem{WINE}
+% Wine - Wine Is Not an Emulator - running windows applications on POSIX-compliant systems.
+% \newblock \url{https://www.winehq.org}
+% \newblock online, accessed in June 2024.
+%
+% \bibitem{ORGMODE}
+% Org Mode --- your life in plain text.
+% \newblock \url{https://orgmode.org/}.
+% \newblock online, accessed in May 2024.
+%
+% \bibitem{EMACS}
+% The Emacs An extensible, customizable, free text editor --- and
+% more.
+% \newblock \url{https://www.gnu.org/software/emacs/}.
+% \newblock online, accessed in May 2024.
+%
+% \bibitem{OXSPELATEX}
+% Org Mode SpeLaTeX Exporter --- SpeLaTeX made easy.
+% \newblock \url{https://www.melpa.org/#/ox-spelatex}
+% \newblock (not yet online)
+%
+% \bibitem{SPEL}
+% SpeL --- Speech-enabled \LaTeX.
+% \newblock \url{https://ctan.org/pkg/spel}
+% \newblock online, accessed in June 2024.
+%
+% \bibitem{SPELWIZARD}
+% SpeL::Wizard --- Incantating \LaTeX{} into natural lanuage
+% \newblock \url{https://metacpan.org/pod/SpeL::Wizard}
+% \newblock online, accessed in June 2024.
+%
+% \bibitem{FESTIVAL}
+% The Festival TTS-program.
+% \newblock \url{http://www.cstr.ed.ac.uk/projects/festival}.
+% \newblock online, accessed in May 2024.
+%
+% \bibitem{BALABOLKA}
+% The Balabolka TTS-program.
+% \newblock \url{http://www.cross-plus-a.com/balabolka.htm}.
+% \newblock online, accessed in May 2024.
+%
+% \bibitem{FREETTS}
+% FreeTTS --- A speech synthesizer in Java.
+% \newblock \url{https://freetts.sourceforge.io/docs/index.php}.
+% \newblock online, accessed in May 2024.
+%
+% \bibitem{AWSPOLLY}
+% Amazon Polly --- An online text-to-speech engine.
+% \newblock \url{https://aws.amazon.com/polly}
+% \newblock online, accessed in May 2024.
+%
+% \bibitem{CTAN}
+% The Comprehensive \TeX{} Archive Network.
+% \newblock \url{http://www.ctan.org}.
+% \newblock online, accessed in May 2024.
+%
+% \bibitem{CPAN}
+% The Comprehensive Perl Archive Network.
+% \newblock \url{http://www.cpan.org}.
+% \newblock online, accessed in May 2024.
+%
+% \bibitem{XPDF}
+% xpdf, a simple and very fast PDF reader on \GNU/Linux.
+% \newblock \url{http://www.xpdfreader.com/}.
+% \newblock online, accessed in May 2024.
+%
+% \bibitem{EVINCE}
+% evince, a PDF reader, part of the Gnome environment.
+% \newblock \url{https://help.gnome.org/users/evince/stable/}.
+% \newblock online, accessed in May 2024.
+%
+% \bibitem{OKULAR}
+% okular, a PDF reader, part of the KDE environment.
+% \newblock \url{https://okular.kde.org}.
+% \newblock online, accessed in May 2024.
+%
+% \bibitem{PDFXCHANGE}
+% PDF XChange Viewer, a PDF reader from Tracker Software.
+% \newblock \url{https://www.pdf-xchange.com/}
+% \newblock online, accessed in May 2024.
+%
+% \end{thebibliography}
+%
+% \Finale
+\endinput
diff --git a/macros/latex/contrib/isosafety/isosafety.ins b/macros/latex/contrib/spelatex/spelatex.ins
index f7563b4ab1..dfe1cbf39e 100644
--- a/macros/latex/contrib/isosafety/isosafety.ins
+++ b/macros/latex/contrib/spelatex/spelatex.ins
@@ -1,7 +1,7 @@
+%% Copyright (C) 2024 by Walter Daems <walter.daems@uantwerpen.be>
+%% and Paul Levrie
%%
-%% Copyright (C) 2023 by BenSt099
-%%
-%% This file may be distributed and/or modified under the conditions of
+%% 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:
@@ -11,21 +11,26 @@
%% 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 `maintained'.
+%%
+%% The Current Maintainer of this work is Walter Daems.
+%%
+%% This work consists of the files lts.dtx and lts.ins
+%% and all derived files.
\input docstrip.tex
\keepsilent
-\usedir{tex/latex/isosafety}
-
\preamble
This is a generated file.
-Copyright (C) 2023 by BenSt099
+Copyright (C) 2024 by Walter Daems <walter.daems@ieee.org>
+ and Paul Levrie
This file 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
+or (at your option) any later version. The latest version of this
license is in:
http://www.latex-project.org/lppl.txt
@@ -35,22 +40,19 @@ and version 1.3 or later is part of all distributions of LaTeX version
\endpreamble
-\generate{\file{isosafety.sty}{\from{isosafety.dtx}{package}}}
+\usedir{tex/latex/spelatex}
+\generate{\file{spelatex.sty}{\from{spelatex.dtx}{package}}}
\obeyspaces
-\Msg{*************************************************************}
-\Msg{* *}
-\Msg{* To finish the installation you have to move the following *}
-\Msg{* file into a directory searched by TeX: *}
-\Msg{* *}
-\Msg{* isosafety.sty *}
-\Msg{* isosafety-pdfs/* *}
-\Msg{* *}
-\Msg{* To produce the documentation run the file isosafety.dtx *}
-\Msg{* through LaTeX. *}
-\Msg{* *}
-\Msg{* Happy TeXing! *}
-\Msg{* *}
-\Msg{*************************************************************}
+\Msg{***************************************************************}
+\Msg{* *}
+\Msg{* To finish the installation you have to merge the TDS tree *}
+\Msg{* into your TEXMFLOCAL tree. *}
+\Msg{* *}
+\Msg{* Good luck! *}
+\Msg{* *}
+\Msg{* Walter *}
+\Msg{* *}
+\Msg{***************************************************************}
\endbatchfile
diff --git a/macros/latex/contrib/spelatex/spelatex.pdf b/macros/latex/contrib/spelatex/spelatex.pdf
new file mode 100644
index 0000000000..d68cae1950
--- /dev/null
+++ b/macros/latex/contrib/spelatex/spelatex.pdf
Binary files differ
diff --git a/macros/latex/contrib/standardsectioning/LICENSE.md b/macros/latex/contrib/standardsectioning/LICENSE.md
new file mode 100644
index 0000000000..99a6973749
--- /dev/null
+++ b/macros/latex/contrib/standardsectioning/LICENSE.md
@@ -0,0 +1,19 @@
+----------------------------------------------------------------------------
+
+This work may be distributed and/or modified under the conditions of the
+LaTeX Project Public License, version 1.3c of the license. The latest
+version of this license is in http://www.latex-project.org/lppl.txt and
+version 1.3c or later is part of all distributions of LaTeX 2005/12/01
+or later. This work has the LPPL maintenance status “maintained”.
+The current maintainer and author of this work is Markus Kohm.
+
+----------------------------------------------------------------------------
+
+Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz
+in der Version 1.3c, verteilt und/oder verändert werden. Die aktuelle
+Version dieser Lizenz ist http://www.latex-project.org/lppl.txt und
+Version 1.3c oder später ist Teil aller Verteilungen von LaTeX 2005/12/01
+oder später. Dieses Werk hat den LPPL-Verwaltungs-Status „maintained”
+Der aktuelle Verwalter und Autor dieses Werks ist Markus Kohm.
+
+----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/standardsectioning/README.md b/macros/latex/contrib/standardsectioning/README.md
new file mode 100644
index 0000000000..ffbf1cf1b9
--- /dev/null
+++ b/macros/latex/contrib/standardsectioning/README.md
@@ -0,0 +1,174 @@
+# Package `standardsectioning`
+
+Copyright © 2019–2024 Markus Kohm
+
+Release: 2024-06-06 v0.9
+
+License: LPPL 1.3c
+
+KOMA presents the `standardsectioning` micro package to force the usage of
+the sectioning command definition of the standard classes also when using
+other classes like the [KOMA-Script](https://www.ctan.org/pkg/koma-script)
+classes.
+
+----------------------------------------------------------------------------
+
+This work may be distributed and/or modified under the conditions of
+the LaTeX Project Public License, version 1.3c of the license.
+The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+and version 1.3c or later is part of all distributions of LaTeX
+version 2005/12/01 or later.
+
+This work has the LPPL maintenance status "maintained".
+
+The Current Maintainer and author of this work is Markus Kohm.
+
+----------------------------------------------------------------------------
+
+# Abstract
+
+A long time ago [KOMA-Script](https://www.sourceforge.net/project/koma-script)
+was more or less just a collection of replacements for the three standard
+classes `article`, `book` and `report`. Replacing a standard class with a
+[KOMA-Script](https://www.sourceforge.net/project/koma-script) class was easy,
+even if users used a lot of additional packages. Over the years, KOMA has
+added many new features and user interfaces to the classes. This also led to
+completely different implementation of the sectioning commands. But some
+packages depend on an implementation similar to the standard classes.
+
+Package `standardsectioning` implements these commands with the code of the
+standard classes. If used with a KOMA-Script class, it also deactivates parts
+of the KOMA-Script user interface, which should not be used with these
+changes. These are more or less all commands to configure sectioning
+commands. It also undefines some internal macros of KOMA-Script.
+
+# Note
+
+Using package `standardsectioning` is only a kind of first-aid
+workaround. Usually it is better not to use the incompatible package with
+KOMA-Script similar classes.
+
+This package is also a replacement of the `standardsections.hak` of
+`scrhack` before version 3.42.
+
+# Installation for Users
+
+If you are a user, you should wait until the package has been added to your
+preferred TeX distribution. Then you can use the package manager of your TeX
+distribution to install all the packages.
+
+# Unpacking for Distributors
+
+Distributors should download [the distribution from
+CTAN](https://www.ctan.org/pkg/standardsectioning). This consists in:
+
+* `standardsectioning.dtx`
+* `README.md`
+* `LICENSE.md`
+* `standardsectioning.pdf`
+
+If distributors also want to distribute `standardsectioning.sty`, they can
+unpack it using
+
+ tex standardsectioning.dtx
+
+Note, that you have to use `tex` not `latex`, `pdflatex`, `xelatex` or
+`lualatex`!
+
+Note also, that a legal distribution consists at least in:
+
+* `standardsectioning.dtx`
+* `README.md`
+
+The following files are optionally, but must not be distributed without the
+previous ones:
+
+* `LICENSE.md`
+* `standardsectioning.sty`
+* `standardsectioning.pdf`
+
+
+# Unpacking and Installation for Developers
+
+Developers who want the current developer version of the code to be installed
+for testing, should clone [the `third-party-enhancements`
+repository](https://github.com/komascript/third-party-enhancements), e.g.,
+using
+
+ git clone https://github.com/komascript/third-party-enhancements.git
+
+You can than either unpack and install all the third-party enhancements using:
+
+ l3build install --full
+
+from within the main directory of the cloned respository. For installation of
+`standardsectioning` only run the same command from within the
+`standardsectioning` subdirectory. For installation without the manual omit
+option `--full`, but this is not recommended for developers.
+
+# How to get the Manual
+
+After installation you should get the user manual using:
+
+ texdoc standardsectioning
+
+See the manual of your TeX distribution for more information.
+
+Developers or distributors can also build the manual from the source using:
+
+ l3build doc
+
+# How to Contribute
+
+To become a contributor, e.g., do heavy testing. If you find an issue, please
+report it using [the issue
+tracker](https://github.com/komascript/third-party-enhancements/issues).
+Please note, however, that the loss of class features as a result of using
+this package is generally an intended side effect and does not necessarily
+constitute an issue.
+
+You can also become a developer and, e.g., make new test files to the
+packages. See the [`l3build`](https://ctan.org/pkg/l3build) manual for more
+information about tests. If you've created a new test and think that it would
+be useful. Please either do a pull request or [add a new
+issue](https://github.com/komascript/third-party-enhancements/issues/new/choose)
+and include your test file.
+
+Another kind of contribution would be to contact the author of the package,
+that depends on the sectioning implementation of the standard classes and is
+therefore incompatible with the class you are using to convince her or him to
+make his package compatible.
+
+# How to Report Issues
+
+If you think you have found a bug (or another kind of issue) using
+`setspaceenhanced` you should use [the issue
+tracker](https://github.com/komascript/third-party-enhancements/issues). Please
+first search for similar issues already reported and maybe also already fixed
+and closed. Maybe the replies to such a similar report would help you too.
+Please also note, however, that the loss of class features as a result of using
+this package is generally an intended side effect and does not necessarily
+constitute a bug.
+
+If your issue is new, you should report it also using [the issue
+tracker](https://github.com/komascript/third-party-enhancements/issues). Please
+be kind, not only when writing the report but also when reading replies and
+commenting or answering. And please always add a minimal working example and
+usually the relevant parts of the `log`-file to your report. Please use the
+[markdown for
+code](https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/creating-and-highlighting-code-blocks)
+to add such files into the text of your report. The correct language
+identifier for LaTeX code would be `latex`. For `log`-files you won't need any
+language identifier. Usually you should not use attachments for code or
+`log`-files unless you've been asked to do so. And please note, reports should
+always be self-containing. External links often break and so the report become
+useles.
+
+# How to Say Thank You for my Work
+
+Hey, I'm doing this as a hobby. So no need to say thank you. But I'm a vain
+fop, so I'm certainly up for a quick thank you by email. On komascript.de you
+can find an [explanation of my wishes](https://komascript.de/wunschliste) if
+you want to give more. If you don't understand German, just click to links at
+that page.
diff --git a/macros/latex/contrib/standardsectioning/standardsectioning.dtx b/macros/latex/contrib/standardsectioning/standardsectioning.dtx
new file mode 100644
index 0000000000..d8030d2f22
--- /dev/null
+++ b/macros/latex/contrib/standardsectioning/standardsectioning.dtx
@@ -0,0 +1,929 @@
+% \iffalse meta-comment
+% ======================================================================
+% standardsectioning.dtx
+% Copyright © 2008–2024 Markus Kohm
+%
+% This work is a KOMA-Script spin-off. For the original sources of
+% KOMA-Script's `float.hak' see file `scrhack.dtx' in the KOMA-Script
+% sources at <https://sourceforge.net/p/koma-script/code/>.
+%
+% Development is taking place as part of `scrhack' at
+% <https://github.com/komascript/third-party-enhancements>. New issues
+% should be reported there as well as known issues can be found.
+%
+% This work may be distributed and/or modified under the conditions of
+% the LaTeX Project Public License, version 1.3c of the license.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.<3c or later is part of all distributions of LaTeX
+% version 2005/12/01 or later and of this work.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% The Current Maintainer and author of this work is Markus Kohm.
+%
+% This work consists of the files `standardsectioning.dtx' and
+% `README.md'.
+%
+% This work also uses code derived from the standard LaTeX classes.
+% These classes have been released under the LaTeX Project Public
+% License. For the copyright of the original code see `classes.dtx'
+% <https://ctan.org/tex-archive/macros/latex/base/classes.dtx>.
+% Note: For support of the derived code, do not contact the authors of
+% the original code! They are not responsible for this work.
+%
+% The recommended way to install `standardsectioning' is to use
+% the package manager of your TeX distribution.
+% ======================================================================
+%
+%<*dtx>
+\ifx\ProvidesExplFile\undefined\def\ProvidesExplFile#1#2#3#4{}\fi
+\ProvidesExplFile{standardsectioning.dtx}
+%</dtx>
+%<*dtx|package>
+%<package>\ProvidesExplPackage{standardsectioning}
+ {2024-06-06}{0.9}
+ {%
+%<*dtx>
+ sources and unpack driver of
+%</dtx>
+ forcing standard class sectioning definitions%
+ }
+%</dtx|package>
+%<*dtx>
+\ifx\documentclass\undefined
+ \input docstrip.tex
+ \generate{%
+ \file{standardsectioning.sty}{%
+ \from{standardsectioning.dtx}{package}%
+ }%
+ }%
+\else
+ \let\endbatchfile\ExplSyntaxOff
+\fi
+\endbatchfile
+\documentclass[ngerman,USenglish]{koma-script-source-doc}
+\NewDocElement[%
+ macrolike = true,
+ toplevel = true,
+ idxtype = \textit{var.},
+ idxgroup = Variable,
+ printtype = \textit{var.},
+]{Variable}{Variable}
+\setcounter{IndexColumns}{2}
+\usepackage{babel}
+\usepackage{csquotes}
+\usepackage[style=alphabetic]{biblatex}
+\begin{filecontents}[force]{\jobname.bib}
+@manual{pkg:scrhack:manual,
+ author={Markus Kohm},
+ version={3.42},
+ date={2023-07-26},
+ title={Emulating Former \KOMAScript{} Package \pkg*{scrhack}},
+ url={https://mirrors.ctan.org/macros/latex/contrib/scrhack/scrhack.pdf},
+ urldate={2023-07-26},
+}
+@online{pkg:koma-script,
+ author={Markus Kohm},
+ version={3.41},
+ date={2023-07-07},
+ title={{\KOMAScript} --- A bundle of versatile classes and packages},
+ url={https://ctan.org/pkg/koma-script},
+ urldate={2023-07-14},
+ note={The \KOMAScript{} bundle provides replacements for the \pkg*{article},
+ \pkg*{report}, and \pkg*{book} classes with emphasis on typography and
+ versatility. There is also a letter class.},
+}
+@manual{pkg:koma-script:manual:de,
+ author={Markus Kohm},
+ date={2023-06-16},
+ title={{\KOMAScript}},
+ subtitle={Die Anleitung},
+ url={http://mirrors.ctan.org/macros/latex/contrib/koma-script/scrguide-de.pdf},
+ urldate={2023-07-04},
+}
+@manual{pkg:koma-script:manual:en,
+ author={Markus Kohm},
+ date={2023-06-16},
+ title={{\KOMAScript}},
+ subtitle={The Guide},
+ url={http://mirrors.ctan.org/macros/latex/contrib/koma-script/scrguide-en.pdf},
+ urldate={2023-07-14},
+}
+\end{filecontents}
+\addbibresource{\jobname.bib}
+\setcounter{StandardModuleDepth}{2}
+\begin{document}
+ \nocite{pkg:koma-script,pkg:koma-script:manual:en,pkg:koma-script:manual:de}
+ \DocInput{standardsectioning.dtx}
+\end{document}
+%</dtx>
+%\fi
+%
+% \changes{v0.1}{2023/06/01}{start of \KOMAScript{} spin-off}
+% \changes{v0.9}{2024/06/06}{first release}
+%
+% \GetFileInfo{standardsectioning.dtx}
+% \title{Using the Sectioning Command Code of the Standard Classes}
+% \author{\href{mailto:komascript@gmx.info}{Markus Kohm}}
+% \date{Version \filedate{} \fileversion}
+% \maketitle
+% \begin{abstract}
+% A long time ago
+% \href{https://www.sourceforge.net/project/koma-script}{\KOMAScript} was
+% more or less just a collection of replacements for the three standard
+% classes \cls*{article}, \cls*{book} and \cls*{report}. Replacing a
+% standard class with a
+% \href{https://www.sourceforge.net/project/koma-script}{\KOMAScript} class
+% was easy, even if users used a lot of additional packages. Over the years,
+% the author has added many new features and user interfaces to the
+% classes. This also led to completely different implementation of the
+% sectioning commands. But some packages depend on an implementation similar
+% to the standard classes.
+%
+% Package \pkg*{standardsectioning} implements these commands with the code
+% of the standard classes and also deactivates parts of the
+% \href{https://www.sourceforge.net/project/koma-script}{\KOMAScript} user
+% interface, which should not be used with these changes. These are more or
+% less all commands to configure sectioning commands. It also reverts some
+% internal macros of
+% \href{https://www.sourceforge.net/project/koma-script}{\KOMAScript}.
+% \end{abstract}
+%
+% \tableofcontents
+%
+%\iffalse
+%<*doc>
+%\fi
+\section{What are the typical reasons for using package
+ \texorpdfstring{\pkg*{standardsectioning}}{standardsectioning} and how to do
+ it?}
+\label{sec:reasons}
+
+Sometimes replacing a standard class by a
+\href{https://komascript.de/}{\KOMAScript} class results in new errors,
+because of incompatibility of some of the packages or the already existing
+preamble code with these classes. In such a case, you first should try out
+package \pkg{scrhack} without passing any option to that package. Package
+\pkg{scrhack} should be the first package after loading the document class, or
+even be loaded \emph{before} the document class using \cs{RequirePackage}
+instead of \cs{usepackage}. If this already fixes the issue, you can try to
+find out which of the replacements and enhancements loaded by \pkg{scrhack}
+solved the issue and load only these.
+
+Only if you cannot fix the issue this kind you can try loading
+\pkg*{standardsectioning} either also using \pkg{scrhack} with
+corresponding options (see \cite{pkg:scrhack:manual}) or just loading
+\pkg*{standardsectioning}.
+
+Such errors happen, e.g., because
+\pkg{titlesec}\index{Packages:>\pkg{titlesec}} makes assumptions about the
+definition of the sectioning commands that simply do not apply to the
+\href{https://komascript.de/}{\KOMAScript} classes. This leads, e.g., in the
+following example:
+\begin{verbatim}
+ \documentclass{scrartcl}
+ \usepackage{titlesec}
+ \begin{document}
+ \section{Test Section}
+ Test text.
+ \end{document}
+\end{verbatim}
+to the error message:
+\begin{verbatim}
+ Package titlesec Error: No format for this command.
+
+ See the titlesec package documentation for explanation.
+ Type H <return> for immediate help.
+ ...
+
+ l.4 \section{Test Section}
+\end{verbatim}
+Several other errors can happen with combinations of \pkg{titlesec} and
+\href{https://komascript.de/}{\KOMAScript} classes. Best solution for this,
+would be to not use \pkg{titlesec} and instead use the class' interface to
+configure the sectioning commands, e.g., \cs{RedeclareSectionCommand},
+\cs{setkomafont}, or redefining \cs{sectionlinesformat}. See
+\cite{pkg:koma-script:manual:en} or \cite{pkg:koma-script:manual:de} for more
+information. But if you do not use any of the enhanced sectioning features of
+the \href{https://komascript.de/}{\KOMAScript} classes, a first-aid workaround
+would be to load package \pkg*{standardsectioning} immediately \emph{after}
+the class:
+\begin{verbatim}
+ \documentclass{scrartcl}
+ \usepackage{standardsectioning}
+ \usepackage{titlesec}
+ \begin{document}
+ \section{Test Section}
+ Test text.
+ \end{document}
+\end{verbatim}
+Among other things, this redefines the sectioning commands to be compatible
+with the standard classes.
+\begin{description}\sloppy
+\item[But note:] \leavevmode
+ \marginline{\raisebox{\dimexpr\ht\strutbox-\height\relax}{\Huge\textcolor{red}{!}}}%
+ This also means, that all the enhancements to these commands are broken! You
+ cannot use \cs{DeclareSectionCommand}, \cs{RedeclareSectionCommand},
+ \cs{DeclareNewSectionCommand}, \cs{ProvideSectionCommand},
+ \cs{DeclareSectionCommands}, \cs{RedeclareSectionCommands},
+ \cs{DeclareNewSectionCommands}, or \cs{ProvideSectionCommands} any
+ longer. Other commands like \cs{partformat}, \cs{chapterformat},
+ \cs{sectionformat}, \cs{subsectionformat}, \cs{subsubsectionformat},
+ \cs{paragraphformat}, \cs{subparagraphformat} and many more are not used
+ anymore.
+\end{description}
+
+Sometimes a wrapper classes loads a \href{https://komascript.de/}{\KOMAScript}
+class and than also loads a package like \pkg{titlesec}. To load
+\pkg*{standardsections} immediately after the class, you should use the
+generic class hook available from \LaTeX{} 2020-10-01:
+\begin{verbatim}
+ \AddToHook{class/scrartcl/after}{\RequirePackage{standardsectioning}}
+ \AddToHook{class/scrbook/after}{\RequirePackage{standardsectioning}}
+ \AddToHook{class/scrreprt/after}{\RequirePackage{standardsectioning}}
+\end{verbatim}
+These lines should be placed \texttt{before} \cs{documentclass}. If you are
+using an older \LaTeX{} version you can use
+\href{https://komascript.de/}{\KOMAScript} package \pkg{scrlfile} to do the
+same:
+\begin{verbatim}
+ \RequirePackage{scrlfile}
+ \AfterClass{scrartcl}{\RequirePackage{standardsectioning}}
+ \AfterClass{scrbook}{\RequirePackage{standardsectioning}}
+ \AfterClass{scrreport}{\RequirePackage{standardsectioning}}
+\end{verbatim}
+also \emph{before} loading the class.
+
+\section{How to select the correct sectioning code, if the automatism fails?}
+\label{sec:options}
+
+By default, the package uses an automatism to decide which code of which
+standard class should be used. If the \KOMAScript{} class \cls{scrartcl} is
+detected, automatically the code of \cls{article} is used. If the
+\KOMAScript{} class \cls{scrreprt} is detected, automatically the code of
+\cls{report} is used. If the \KOMAScript{} class \cls{scrbook} is detected,
+automatically the code of \cls{book} is used. If none of these classes is
+detected, the existence of two commands is used. If \cs{chapter} is not
+defined, the code of \cls{article} is used. If \cs{chapter} is defined, but
+\cs{frontmatter} is not defined, the code of \cls{report} is used. If both
+\cs{chapter} and \cs{frontmatter} are defined, the code of \cls{book} is used.
+
+%\DescribeOption{article}
+%\DescribeOption{book}
+%\DescribeOption{report}
+Very seldom this automatism fails and the wrong code is used, which results in
+error messages or printing mistakes. In this case you can load package
+\pkg*{standardsectioning} with one of the options \opt{article}, \opt{report}
+or \opt{book} to force the usage of the sectioning code of either
+\cls{article}, \cls{report}, or \cls{book}. This could, e.g., be needed, if
+you are using a class, that defines \cs{chapter} and \cs{frontmatter} but not
+\cs{if@mainmatter}. In this case, you should use
+\begin{verbatim}
+ \usepackage[report]{standardsectioning}
+\end{verbatim}
+instead of
+\begin{verbatim}
+ \usepackage{standardsectioning}
+\end{verbatim}
+because otherwise the not defined \cs{if@mainmatter} will result in errors,
+when using \cs{chapter}.
+% \iffalse
+%</doc>
+% \fi
+%
+% \MaybeStop{\printbibliography[heading=bibintoc]\PrintIndex}
+%
+% \iffalse
+%<*package>
+%<@@=standardsectioning>
+% \fi
+% \section{Implementation}
+% \label{sec:implementation}
+%
+% \subsection{Messages}
+% \label{ssec:messages}
+%
+% There are some messages, that may be used several times:
+% \begin{macrocode}
+\msg_new:nnnn { standardsectioning } { wrong-package-order }
+ {
+ wrong~package~order~detected.
+ }
+ {
+ You've~loaded~this~package~after~package~#1.\iow_newline:
+ But~this~cannot~work.\iow_newline:
+ Loading aborted!
+ }
+
+\msg_new:nnn { standardsectioning } { deactivate-extended-section-commands }
+ {
+ extended~sectioning~option~handling~deactivated.
+ }
+
+\msg_new:nnn { standardsectioning } { no-force-with-KOMA-Script-class }
+ {
+ package~option~`#1'~is~ignored~due~to~usage~of~KOMA-Script~class~\KOMAClassName.
+ }
+% \end{macrocode}
+%
+% \subsection{Package order}
+% \label{ssec:packageorder}
+%
+% \pkg{hyperref} must not be loaded, because otherwise deactivation of
+% \cs{scr@chapter@after@hyperref@patch} would not work.
+% \begin{macrocode}
+\@ifpackageloaded { hyperref }
+ {
+ \msg_critical:nnn { standardsectioning } { wrong-package-order }
+ { hyperref }
+ } { }
+% \end{macrocode}
+% \pkg{titlesec} must not be loaded, because otherwise the re-definitions
+% would overwrite the definitions of this package.
+% \begin{macrocode}
+\@ifpackageloaded { titlesec }
+ {
+ \msg_critical:nnn { standardsectioning } { wrong-package-order }
+ { titlesec }
+ } { }
+% \end{macrocode}
+% \pkg{sectsty} must not be loaded, because otherwise the re-definitions
+% would overwrite the definitions of this package.
+% \begin{macrocode}
+\@ifpackageloaded { sectsty }
+ {
+ \msg_critical:nnnn { standardsectioning } { wrong-package-order }
+ { sectsty }
+ } { }
+% \end{macrocode}
+%
+% \subsection{\KOMAScript{} deactivation code}
+% \label{ssec:deactivationcode}
+%
+% \ExplSyntaxOn
+% \begin{macro}{\@@_common_komascript_deactivation_code:}
+% \ExplSyntaxOff
+% Some deactivation code is common for all \KOMAScript{} classes and
+% therefore we use an auxiliary function to not need to copy it several
+% times.
+% \begin{macrocode}
+\cs_new:Nn \@@_common_komascript_deactivation_code:
+ {
+% \end{macrocode}
+% \begin{macro}{\@startsection}
+% \KOMAScript{} classes redefine this internal \LaTeX{} kernel macro. In this
+% case \cs{scr@saved@startsection} is defined, differs from
+% \cs{@startsection} and has the definition found before redefining the
+% original macro. We do nothing else but resetting \cs{@startsection} to this
+% saved definition.
+% \begin{macrocode}
+ \RenewCommandCopy \@startsection \scr@saved@startsection
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@sect,\@ssect,\@xsect}
+% All these should be resetted to their original definitions stored in
+% \cs{scr@latex@\dots}.
+% \begin{macrocode}
+ \RenewCommandCopy\@sect\scr@latex@sect
+ \RenewCommandCopy\@ssect\scr@latex@ssect
+ \RenewCommandCopy\@xsect\scr@latex@xsect
+% \end{macrocode}
+% \end{macro}
+% \begin{command}{\DeclareSectionCommand,\RedeclareSectionCommand,
+% \DeclareNewSectionCommand,\ProvideSectionCommand,
+% \DeclareSectionCommands,\RedeclareSectionCommands,
+% \DeclareNewSectionCommands,\ProvideSectionCommands}
+% These \KOMAScript{} commands do not make sense any longer after forced
+% redefinition of \cs{part} \dots{} \cs{subparagraph}. They even would not
+% work correctly after resetting, e.g., \cs{@startsection}. So best reaction
+% is to \emph{undefine} them.
+% \begin{macrocode}
+ \cs_undefine:N \DeclareSectionCommand
+ \cs_undefine:N \DeclareSectionCommands
+ \cs_undefine:N \RedeclareSectionCommand
+ \cs_undefine:N \RedeclareSectionCommands
+ \cs_undefine:N \DeclareNewSectionCommand
+ \cs_undefine:N \DeclareNewSectionCommands
+ \cs_undefine:N \ProvideSectionCommand
+ \cs_undefine:N \ProvideSectionCommands
+% \end{macrocode}
+% \end{command}
+% \begin{macro}{\minisec}
+% This also has to be undefined, because it also uses internal \KOMAScript{}
+% definitions, which are deactivated.
+% \begin{macrocode}
+ \cs_undefine:N \minisec
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\scr@chapter@before@hyperref@patch,
+% \scr@chapter@after@hyperref@patch}
+% Now, definitions without respecting \pkg{hyperref} are used, so
+% \pkg{hyperref} should again be able to patch them. So the hack should
+% deactivate the patch deactivation of the \KOMAScript{} classes.
+% \begin{macrocode}
+ \cs_gset_eq:NN \scr@chapter@before@hyperref@patch \relax
+ \cs_gset_eq:NN \scr@chapter@after@hyperref@patch \relax
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\scr@osectarg}
+% The \KOMAScript{} classes use this macro to store how to use the optional
+% argument of section commands. But with the standard class definition the
+% only possibility is to use it as running head and write it into the table of
+% contents without any extended handling. So the only value, that makes sense
+% is 0.
+% \begin{macrocode}
+ \int_if_zero:nF { \scr@osectarg }
+ {
+ \msg_warning:nn { standardsectioning }
+ { deactivate-extended-section-commands }
+ \cs_gset_eq:NN \scr@osectarg \c_zero_int
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\scr@activate@xsection}
+% Further changing of the value has to be deactivated.
+% \begin{macrocode}
+ \renewcommand*{\scr@activate@xsection}[1]{%
+ \int_if_zero:nF { ##1 }
+ {
+ \msg_warning:nn { standardsectioning }
+ { deactivate-extended-section-commands }
+ \cs_gset_eq:NN \scr@osectarg \c_zero_int
+ }
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{command}{\partlineswithprefixformat,
+% \sectionlinesformat,\sectioncatchphraseformat}
+% These \KOMAScript{} commands are not used any longer. To detect errors,
+% because of redefining them, we undefine them.
+% \begin{macrocode}
+ \cs_undefine:N \partlineswithprefixformat
+ \cs_undefine:N \sectionlinesformat
+ \cs_undefine:N \sectioncatchphraseformat
+% \end{macrocode}
+% \end{command}
+% \begin{option}{headings}
+% The \KOMAScript{} option does not make sense any longer. So it is
+% deactivated and usage will throw an error.
+% \begin{macrocode}
+ \RelaxFamilyKey[.\KOMAClassFileName]{KOMA}{headings}%
+ \KOMA@kav@removekey{\KOMAClassFileName}{headings}%
+% \end{macrocode}
+% \end{option}
+% \begin{macro}{\scr@class@titlesec@warning}
+% The warning about loading \pkg{titlesec} has to be removed, because we do
+% not expect errors any longer.
+% \begin{macrocode}
+ \cs_undefine:N \scr@class@titlesec@warning
+% \end{macrocode}
+% \begin{macrocode}
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \ExplSyntaxOff
+%
+% \subsection{Sectioning code of the standard classes}
+% \label{ssec:standardsectioningcommands}
+%
+% \begin{command}{\part,\chapter,\section,\subsection,\subsubsection,
+% \paragraph,\subparagraph}
+% These commands are redefined using code from
+% \href{https://ctan.org/tex-archive/macros/latex/base/classes.dtx}
+% {\file{classes.dtx}}
+% 2024/02/08 v1.4n.
+% Only \cs{newcommand} is replaced by \cs{def} and \texttt{\#} are
+% doubled. Depending on the class, we use different code:
+% \ExplSyntaxOn
+% \begin{macro}{\@@_article_sectioning_code:,\@@_book_sectioning_code:,
+% \@@_report_sectioning_code:}
+% \ExplSyntaxOff
+% \begin{macrocode}
+\cs_new:Nn \@@_article_sectioning_code:
+ {
+ \def\part{%
+ \if@noskipsec \leavevmode \fi
+ \par
+ \addvspace{4ex}%
+ \@afterindentfalse
+ \secdef\@part\@spart}%
+ \def\@part[##1]##2{%
+ \ifnum \c@secnumdepth >\m@ne
+ \refstepcounter{part}%
+ \addcontentsline{toc}{part}{\thepart\hspace{1em}##1}%
+ \else
+ \addcontentsline{toc}{part}{##1}%
+ \fi
+ {\parindent \z@ \raggedright
+ \interlinepenalty \@M
+ \normalfont
+ \ifnum \c@secnumdepth >\m@ne
+ \Large\bfseries \partname\nobreakspace\thepart
+ \par\nobreak
+ \fi
+ \huge \bfseries ##2%
+ \markboth{}{}\par}%
+ \nobreak
+ \vskip 3ex
+ \@afterheading}%
+ \def\@spart##1{%
+ {\parindent \z@ \raggedright
+ \interlinepenalty \@M
+ \normalfont
+ \huge \bfseries ##1\par}%
+ \nobreak
+ \vskip 3ex
+ \@afterheading}%
+
+ \def\section{\@startsection {section}{1}{\z@}%
+ {-3.5ex \@plus -1ex \@minus -.2ex}%
+ {2.3ex \@plus.2ex}%
+ {\normalfont\Large\bfseries}}%
+ \def\subsection{\@startsection{subsection}{2}{\z@}%
+ {-3.25ex\@plus -1ex \@minus -.2ex}%
+ {1.5ex \@plus .2ex}%
+ {\normalfont\large\bfseries}}%
+ \def\subsubsection{\@startsection{subsubsection}{3}{\z@}%
+ {-3.25ex\@plus -1ex \@minus -.2ex}%
+ {1.5ex \@plus .2ex}%
+ {\normalfont\normalsize\bfseries}}%
+ \def\paragraph{\@startsection{paragraph}{4}{\z@}%
+ {3.25ex \@plus1ex \@minus.2ex}%
+ {-1em}%
+ {\normalfont\normalsize\bfseries}}%
+ \def\subparagraph{\@startsection{subparagraph}{5}{\parindent}%
+ {3.25ex \@plus1ex \@minus .2ex}%
+ {-1em}%
+ {\normalfont\normalsize\bfseries}}%
+ }
+
+\cs_new:Nn \@@_report_sectioning_code:
+ {
+ \def\part{%
+ \if@openright
+ \cleardoublepage
+ \else
+ \clearpage
+ \fi
+ \thispagestyle{plain}%
+ \if@twocolumn
+ \onecolumn
+ \@tempswatrue
+ \else
+ \@tempswafalse
+ \fi
+ \null\vfil
+ \secdef\@part\@spart}
+
+ \def\@part[##1]##2{%
+ \ifnum \c@secnumdepth >-2\relax
+ \refstepcounter{part}%
+ \addcontentsline{toc}{part}{\thepart\hspace{1em}##1}%
+ \else
+ \addcontentsline{toc}{part}{##1}%
+ \fi
+ \markboth{}{}%
+ {\centering
+ \interlinepenalty \@M
+ \normalfont
+ \ifnum \c@secnumdepth >-2\relax
+ \huge\bfseries \partname\nobreakspace\thepart
+ \par
+ \vskip 20\p@
+ \fi
+ \Huge \bfseries ##2\par}%
+ \@endpart}
+ \def\@spart##1{%
+ {\centering
+ \interlinepenalty \@M
+ \normalfont
+ \Huge \bfseries ##1\par}%
+ \@endpart}
+ \def\@endpart{\vfil\newpage
+ \if@twoside
+ \if@openright
+ \null
+ \thispagestyle{empty}%
+ \newpage
+ \fi
+ \fi
+ \if@tempswa
+ \twocolumn
+ \fi}
+ \def\chapter{\if@openright\cleardoublepage\else\clearpage\fi
+ \thispagestyle{plain}%
+ \global\@topnum\z@
+ \@afterindentfalse
+ \secdef\@chapter\@schapter}
+ \def\@chapter[##1]##2{\ifnum \c@secnumdepth >\m@ne
+ \refstepcounter{chapter}%
+ \typeout{\@chapapp\space\thechapter.}%
+ \addcontentsline{toc}{chapter}%
+ {\protect\numberline{\thechapter}##1}%
+ \else
+ \addcontentsline{toc}{chapter}{##1}%
+ \fi
+ \chaptermark{##1}%
+ \addtocontents{lof}{\protect\addvspace{10\p@}}%
+ \addtocontents{lot}{\protect\addvspace{10\p@}}%
+ \if@twocolumn
+ \@topnewpage[\@makechapterhead{##2}]%
+ \else
+ \@makechapterhead{##2}%
+ \@afterheading
+ \fi}
+ \def\@makechapterhead##1{%
+ \vspace*{50\p@}%
+ {\parindent \z@ \raggedright \normalfont
+ \ifnum \c@secnumdepth >\m@ne
+ \huge\bfseries \@chapapp\space \thechapter
+ \par\nobreak
+ \vskip 20\p@
+ \fi
+ \interlinepenalty\@M
+ \Huge \bfseries ##1\par\nobreak
+ \vskip 40\p@
+ }}
+ \def\@schapter##1{\if@twocolumn
+ \@topnewpage[\@makeschapterhead{##1}]%
+ \else
+ \@makeschapterhead{##1}%
+ \@afterheading
+ \fi}
+ \def\@makeschapterhead##1{%
+ \vspace*{50\p@}%
+ {\parindent \z@ \raggedright
+ \normalfont
+ \interlinepenalty\@M
+ \Huge \bfseries ##1\par\nobreak
+ \vskip 40\p@
+ }}
+ \def\section{\@startsection {section}{1}{\z@}%
+ {-3.5ex \@plus -1ex \@minus -.2ex}%
+ {2.3ex \@plus.2ex}%
+ {\normalfont\Large\bfseries}}
+ \def\subsection{\@startsection{subsection}{2}{\z@}%
+ {-3.25ex\@plus -1ex \@minus -.2ex}%
+ {1.5ex \@plus .2ex}%
+ {\normalfont\large\bfseries}}
+ \def\subsubsection{\@startsection{subsubsection}{3}{\z@}%
+ {-3.25ex\@plus -1ex \@minus -.2ex}%
+ {1.5ex \@plus .2ex}%
+ {\normalfont\normalsize\bfseries}}
+ \def\paragraph{\@startsection{paragraph}{4}{\z@}%
+ {3.25ex \@plus1ex \@minus.2ex}%
+ {-1em}%
+ {\normalfont\normalsize\bfseries}}
+ \def\subparagraph{\@startsection{subparagraph}{5}{\parindent}%
+ {3.25ex \@plus1ex \@minus .2ex}%
+ {-1em}%
+ {\normalfont\normalsize\bfseries}}
+ }
+
+\cs_new:Nn \@@_book_sectioning_code:
+ {
+ \def\part{%
+ \if@openright
+ \cleardoublepage
+ \else
+ \clearpage
+ \fi
+ \thispagestyle{plain}%
+ \if@twocolumn
+ \onecolumn
+ \@tempswatrue
+ \else
+ \@tempswafalse
+ \fi
+ \null\vfil
+ \secdef\@part\@spart}
+
+ \def\@part[##1]##2{%
+ \ifnum \c@secnumdepth >-2\relax
+ \refstepcounter{part}%
+ \addcontentsline{toc}{part}{\thepart\hspace{1em}##1}%
+ \else
+ \addcontentsline{toc}{part}{##1}%
+ \fi
+ \markboth{}{}%
+ {\centering
+ \interlinepenalty \@M
+ \normalfont
+ \ifnum \c@secnumdepth >-2\relax
+ \huge\bfseries \partname\nobreakspace\thepart
+ \par
+ \vskip 20\p@
+ \fi
+ \Huge \bfseries ##2\par}%
+ \@endpart}
+ \def\@spart##1{%
+ {\centering
+ \interlinepenalty \@M
+ \normalfont
+ \Huge \bfseries ##1\par}%
+ \@endpart}
+ \def\@endpart{\vfil\newpage
+ \if@twoside
+ \if@openright
+ \null
+ \thispagestyle{empty}%
+ \newpage
+ \fi
+ \fi
+ \if@tempswa
+ \twocolumn
+ \fi}
+ \def\chapter{\if@openright\cleardoublepage\else\clearpage\fi
+ \thispagestyle{plain}%
+ \global\@topnum\z@
+ \@afterindentfalse
+ \secdef\@chapter\@schapter}
+ \def\@chapter[##1]##2{\ifnum \c@secnumdepth >\m@ne
+ \if@mainmatter
+ \refstepcounter{chapter}%
+ \typeout{\@chapapp\space\thechapter.}%
+ \addcontentsline{toc}{chapter}%
+ {\protect\numberline{\thechapter}##1}%
+ \else
+ \addcontentsline{toc}{chapter}{##1}%
+ \fi
+ \else
+ \addcontentsline{toc}{chapter}{##1}%
+ \fi
+ \chaptermark{##1}%
+ \addtocontents{lof}{\protect\addvspace{10\p@}}%
+ \addtocontents{lot}{\protect\addvspace{10\p@}}%
+ \if@twocolumn
+ \@topnewpage[\@makechapterhead{##2}]%
+ \else
+ \@makechapterhead{##2}%
+ \@afterheading
+ \fi}
+ \def\@makechapterhead##1{%
+ \vspace*{50\p@}%
+ {\parindent \z@ \raggedright \normalfont
+ \ifnum \c@secnumdepth >\m@ne
+ \if@mainmatter
+ \huge\bfseries \@chapapp\space \thechapter
+ \par\nobreak
+ \vskip 20\p@
+ \fi
+ \fi
+ \interlinepenalty\@M
+ \Huge \bfseries ##1\par\nobreak
+ \vskip 40\p@
+ }}
+ \def\@schapter##1{\if@twocolumn
+ \@topnewpage[\@makeschapterhead{##1}]%
+ \else
+ \@makeschapterhead{##1}%
+ \@afterheading
+ \fi}
+ \def\@makeschapterhead##1{%
+ \vspace*{50\p@}%
+ {\parindent \z@ \raggedright
+ \normalfont
+ \interlinepenalty\@M
+ \Huge \bfseries ##1\par\nobreak
+ \vskip 40\p@
+ }}
+ \def\section{\@startsection {section}{1}{\z@}%
+ {-3.5ex \@plus -1ex \@minus -.2ex}%
+ {2.3ex \@plus.2ex}%
+ {\normalfont\Large\bfseries}}
+ \def\subsection{\@startsection{subsection}{2}{\z@}%
+ {-3.25ex\@plus -1ex \@minus -.2ex}%
+ {1.5ex \@plus .2ex}%
+ {\normalfont\large\bfseries}}
+ \def\subsubsection{\@startsection{subsubsection}{3}{\z@}%
+ {-3.25ex\@plus -1ex \@minus -.2ex}%
+ {1.5ex \@plus .2ex}%
+ {\normalfont\normalsize\bfseries}}
+ \def\paragraph{\@startsection{paragraph}{4}{\z@}%
+ {3.25ex \@plus1ex \@minus.2ex}%
+ {-1em}%
+ {\normalfont\normalsize\bfseries}}
+ \def\subparagraph{\@startsection{subparagraph}{5}{\parindent}%
+ {3.25ex \@plus1ex \@minus .2ex}%
+ {-1em}%
+ {\normalfont\normalsize\bfseries}}
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{command}
+%
+% \subsection{Class dependent deactivation and implemention}
+% \label{ssec:doit}
+%
+% If a \KOMAScript{} class has been loaded we need use the common deactivation
+% code and the \cls*{article} sectioning code.
+% \ExplSyntaxOn
+% \begin{macro}{\@@_acticvation_code:}
+% \ExplSyntaxOff
+% \begin{macrocode}
+\cs_new:Nn \@@_activation_code:
+ {
+ \@ifclassloaded { scrartcl }
+ {
+ \@@_common_komascript_deactivation_code:
+ \@@_article_sectioning_code:
+ }
+ {
+% \end{macrocode}
+% \begin{command}{\chapterlineswithprefixformat,\chapterlinesformat}
+% For \cls*{scrbook} and \cls*{scrreprt} we need additional deactivation
+% code and the \cls*{book} resp. \cls*{report} sectioning code.
+% \begin{macrocode}
+ \@ifclassloaded { scrbook }
+ {
+ \@@_common_komascript_deactivation_code:
+ \cs_undefine:N \chapterlineswithprefixformat
+ \cs_undefine:N \chapterlinesformat
+ \@@_book_sectioning_code:
+ }
+ {
+ \@ifclassloaded { scrreprt }
+ {
+ \@@_common_komascript_deactivation_code:
+ \cs_undefine:N \chapterlineswithprefixformat
+ \cs_undefine:N \chapterlinesformat
+ \@@_report_sectioning_code:
+ }
+ {
+% \end{macrocode}
+% \end{command}
+% For all other classes, we use a heuristic to either use the sectioning code
+% of \cls*{article}, \cls*{book}, or \cls*{report}
+% \begin{macrocode}
+ \cs_if_exist:NTF \chapter
+ {
+ \cs_if_exist:cTF { frontmatter }
+ {
+ \@@_book_sectioning_code:
+ }
+ {
+ \@@_report_sectioning_code:
+ }
+ }
+ {
+ \@@_article_sectioning_code:
+ }
+ }
+ }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+% \ExplSyntaxOff
+%
+% \begin{option}{book,article,report}
+% These options can be used to force the usage of one of the selection
+% codes, but only if no \KOMAScript{} class has been used. So in the code
+% section we first have to test for a \KOMAScript{} class and either throw a
+% warning or do the redefinition of \cs{@@\_activation\_code:}.
+% \begin{macrocode}
+\DeclareKeys
+ {
+ article .meta:nn = { @@/internal } { force=article },
+ article .usage = load,
+ book .meta:nn = { @@/internal } { force=book },
+ book .usage = load,
+ report .meta:nn = { @@/internal } { force=report },
+ report .usage = load,
+ }
+\keys_define:nn { @@/internal }
+ {
+ force .code =
+ {
+ \cs_if_exist:NTF \KOMAClassName
+ {
+ \msg_warning:nnn { standardsectioning }
+ { no-force-with-KOMA-Script-class }
+ { #1 }
+ }
+ {
+ \cs_set_eq:Nc \@@_activation_code: { @@_#1_sectioning_code: }
+ }
+ }
+ }
+\ProcessKeyOptions
+\@@_activation_code:
+% \end{macrocode}
+% \end{option}
+%
+% \iffalse
+%</package>
+% \fi
+%
+% \Finale
+% \PrintChanges
+%
+% \endinput
+% Local Variables:
+% mode: doctex
+% ispell-local-dictionary: "en_US"
+% eval: (flyspell-mode 1)
+% TeX-master: t
+% End:
diff --git a/macros/latex/contrib/standardsectioning/standardsectioning.pdf b/macros/latex/contrib/standardsectioning/standardsectioning.pdf
new file mode 100644
index 0000000000..1b2d9ce573
--- /dev/null
+++ b/macros/latex/contrib/standardsectioning/standardsectioning.pdf
Binary files differ
diff --git a/macros/latex/contrib/subeqn/CATALOG b/macros/latex/contrib/subeqn/CATALOG
new file mode 100644
index 0000000000..9d420c825f
--- /dev/null
+++ b/macros/latex/contrib/subeqn/CATALOG
@@ -0,0 +1,17 @@
+Name: subeqn
+Problems-To: texniek at texniek.nl
+Author: J.L. Braams, Donald Arsenau, Stephen Gildea
+Version: 2.0c
+
+Description:
+
+The subeqn package implements an extension to LaTeXs's equation
+and eqnarray environments in order to be able to put labels on
+individual expressions. To this end two now environments are defined:
+subequations and subeqnarray.
+
+Keywords: latex equations,
+
+Address:
+TeXniek
+The Netherlands
diff --git a/macros/latex/contrib/subeqn/MANIFEST b/macros/latex/contrib/subeqn/MANIFEST
new file mode 100644
index 0000000000..4fe2a9a156
--- /dev/null
+++ b/macros/latex/contrib/subeqn/MANIFEST
@@ -0,0 +1,19 @@
+%
+% CONTENTS OF THE SUBEQN PACKAGE
+% ==============================
+%
+% README -- A short introduction
+% MANIFEST -- A list of files
+% CATALOG -- An entry for the macro catalog
+%
+% subeqn.dtx -- A package to number subexpressions of an equation;
+% originally by Stephen Gildea,
+% rewritten by Donald Arsenau,
+% updated for LaTeX2e by Johannes Braams
+% subeqn.pdf -- A `printed´ version of subeqn.dtx
+% subeqn-sample.pdf -- The `printed' version of the sample file
+%
+% Installation script for the various parts:
+% -------------------------------------------
+%
+% subeqn.ins -- produces subeqn.sty and subeqn-sample.tex
diff --git a/macros/latex/contrib/subeqn/README b/macros/latex/contrib/subeqn/README
new file mode 100644
index 0000000000..25f16dbe87
--- /dev/null
+++ b/macros/latex/contrib/subeqn/README
@@ -0,0 +1,14 @@
+ subeqn bundle
+
+ July 20, 2024
+
+This bundle contains a package that extends the functionality
+of LaTeX's equation and eqnarray environments.
+It provides the environments subequations and subeqnarray.
+
+Copyright (C) 2024 Johannes L. Braams texniek(at)texniek.nl
+
+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; either
+version 1.3c of the License, or any later version.
diff --git a/macros/latex/contrib/subeqn/manifest.txt b/macros/latex/contrib/subeqn/manifest.txt
deleted file mode 100644
index 58e7cdb221..0000000000
--- a/macros/latex/contrib/subeqn/manifest.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-%
-% CONTENTS OF THE SUBEQN PACKAGE
-% ==============================
-%
-% manifest.txt -- This file
-%
-% subeqn.dtx -- A package to number subexpressions of an equation;
-% originally by Stephen Gildea,
-% rewritten by Donald Arsenau,
-% updated for LaTeX2e by me
-% subeqn.pdf -- A `printed version of subeqn.dtx
-%
-% Installation script for the various parts:
-% -------------------------------------------
-%
-% subeqn.ins -- produces subeqn.sty and subeqn.tex
diff --git a/macros/latex/contrib/subeqn/subeqn-sample.pdf b/macros/latex/contrib/subeqn/subeqn-sample.pdf
new file mode 100644
index 0000000000..ae4bd5c467
--- /dev/null
+++ b/macros/latex/contrib/subeqn/subeqn-sample.pdf
Binary files differ
diff --git a/macros/latex/contrib/subeqn/subeqn.dtx b/macros/latex/contrib/subeqn/subeqn.dtx
index cc49b5f0b5..b9ce870682 100644
--- a/macros/latex/contrib/subeqn/subeqn.dtx
+++ b/macros/latex/contrib/subeqn/subeqn.dtx
@@ -1,48 +1,49 @@
% \iffalse meta-comment
%
-% Copyright 1994-2004 Johannes Braams. All rights reserved.
-%
+% Copyright 1999-2024 Johannes L. Braams. All rights reserved.
+%
% This file is part of the subeqn package.
% ----------------------------------------
-%
+%
% It may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either version 1.3
+% conditions of the LaTeX Project Public License, either version 1.3c
% of this license or (at your option) any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
-% and version 1.3 or later is part of all distributions of LaTeX
-% version 2003/12/01 or later.
-%
+% and version 1.3c or later is part of all distributions of LaTeX
+% version 2008 or later.
+%
% This work has the LPPL maintenance status "maintained".
-%
+%
% The Current Maintainer of this work is Johannes Braams.
-%
-% The list of all files belonging to the subeqn package is
-% given in the file `manifest.txt'.
-%
+%
+% The list of all files belonging to the supertabular package is
+% given in the file `MANIFEST.
+%
% The list of derived (unpacked) files belonging to the distribution
% and covered by LPPL is defined by the unpacking scripts (with
% extension .ins) which are part of the distribution.
% \fi
-% \CheckSum{76}
+%
+% \CheckSum{84}
% \iffalse
-%% File: `subeqn.dtx'
-%% Copyright (C) 1999-2004
-%% Donald Arsenau (asnd at reg.triumf.ca),
-%% Johannes Braams (TeXniek at braams.cistron.nl)
-%%
+% Copyright (C) 1999-2024
+% Donald Arsenau at reg.triumf.ca,
+% Johannes Braams texniek at texniek.nl
+%
%<*dtx>
\ProvidesFile{subeqn.dtx}
%</dtx>
%<package>\NeedsTeXFormat{LaTeX2e}[1998/06/01]
%<package>\ProvidesPackage{subeqn}
-%<sample>\ProvidesFile{subeqn.tex}
+%<sample>\ProvidesFile{subeqn-sample.tex}
%<driver>\ProvidesFile{subeqn.drv}
%\ProvidesFile{subeqn.dtx}
- [2004/04/15 v2.0b subnumbering of equations]
+ [2024/07/21 v2.0c subnumbering of equations]
%<*driver>
\documentclass{ltxdoc}
\begin{document}
+\pagestyle{myheadings}
\providecommand{\Lenv}[1]{\textsf{#1}}
\providecommand{\Lopt}[1]{\textsf{#1}}
\providecommand{\pkg}[1]{\texttt{#1}}
@@ -60,6 +61,10 @@
% \date{\filedate}
% \maketitle
%
+% \markboth
+% {subeqn package version \fileversion\space as of \filedate}
+% {subeqn package version \fileversion\space as of \filedate}
+%
% \section{Introduction}
%
% Sometimes it is necessary to be able to refer to subexpressions
@@ -165,7 +170,7 @@
\global\c@equation\z@
}{%
% \end{macrocode}
-% When the environment is finished we restore the value ot the
+% When the environment is finished we restore the value of the
% \texttt{equation} counter.
% \begin{macrocode}
\global\c@equation\c@mainequation
@@ -220,7 +225,14 @@
\usepackage{subeqn}
\begin{document}
-This is an example ot the use of the \texttt{subeqations} package.
+\title{Sample sub-equations}
+\author{Johannes L. Braams}
+\date{\today}
+\maketitle
+
+\noindent
+This is an example of the use of the \texttt{subeqations}
+package. First we have a normal \textsf{equation} environment.
\begin{equation}
\label{a}
a^2 + b^2 = c^2
@@ -247,6 +259,7 @@ Now we start sub-numbering.
and~\ref{c2}.
\end{subequations}
+\noindent
Now lets start a \textsf{subeqnarray} environment.
\begin{subeqnarray}
\label{d}
diff --git a/macros/latex/contrib/subeqn/subeqn.ins b/macros/latex/contrib/subeqn/subeqn.ins
index e9e8689856..b3e295f28c 100644
--- a/macros/latex/contrib/subeqn/subeqn.ins
+++ b/macros/latex/contrib/subeqn/subeqn.ins
@@ -3,50 +3,41 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright 1989-2004 Johannes L. Braams. All rights reserved.
-%%
-%% This file is part of the subeqn package.
-%% ----------------------------------------
-%%
-%% It 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 2003/12/01 or later.
-%%
-%% This work has the LPPL maintenance status "maintained".
-%%
-%% The Current Maintainer of this work is Johannes Braams.
-%%
-%% The list of all files belonging to the subeqn package is
-%% given in the file `manifest.txt.
+%%
+%% This file is distributed in the hope that it will be useful,
+%% but WITHOUT ANY WARRANTY; without even the implied warranty of
+%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
%%
-%% The list of derived (unpacked) files belonging to the distribution
-%% and covered by LPPL is defined by the unpacking scripts (with
-%% extension .ins) which are part of the distribution.
+%% IMPORTANT NOTICE:
+%%
+%% Copyright (C) 1999-2024 Johannes L. Braams. All rights reserved.
+%%
+%% 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; either
+%% version 1.3c of the License, or any later version.
%%
%% --------------- start of docstrip commands ------------------
%%
-\def\filedate{2004/04/15}
\def\batchfile{subeqn.ins}
\input docstrip.tex
+\keepsilent
\preamble
+This is a generated file.
-Copyright (C) 1999-2004 Johannes Braams. All rights reserved.
+Copyright (C) 1999-2024 Johannes Braams. All rights reserved.
This file was generated from file(s) of the subeqn package.
-----------------------------------------------------------
It may be distributed and/or modified under the
-conditions of the LaTeX Project Public License, either version 1.3
+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 2003/12/01 or later.
+and version 1.3с or later is part of all distributions of LaTeX
+version 2008 or later.
This work has the LPPL maintenance status "maintained".
@@ -57,7 +48,7 @@ subeqn package. You may however distribute the subeqn package
without such generated files.
The list of all files belonging to the subeqn package is
-given in the file `manifest.txt.
+given in the file `MANIFEST'.
The list of derived (unpacked) files belonging to the distribution
and covered by LPPL is defined by the unpacking scripts (with
@@ -70,7 +61,7 @@ extension .ins) which are part of the distribution.
% The sample file
-\generateFile{subeqn.tex}{t}{\from{subeqn.dtx}{sample}}
+\generateFile{subeqn-sample.tex}{t}{\from{subeqn.dtx}{sample}}
\Msg{***********************************************************}
\Msg{*}
diff --git a/macros/latex/contrib/subeqn/subeqn.pdf b/macros/latex/contrib/subeqn/subeqn.pdf
index e2247d3fdc..bf29789b71 100644
--- a/macros/latex/contrib/subeqn/subeqn.pdf
+++ b/macros/latex/contrib/subeqn/subeqn.pdf
Binary files differ
diff --git a/macros/latex/contrib/subeqnarray/CATALOG b/macros/latex/contrib/subeqnarray/CATALOG
new file mode 100644
index 0000000000..5e037823f8
--- /dev/null
+++ b/macros/latex/contrib/subeqnarray/CATALOG
@@ -0,0 +1,17 @@
+Name: subeqnarray
+Problems-To: texniek at texniek.nl
+Author: J.L. Braams, Donald Arsenau, Stephen Gildea
+Version: 2.1e
+
+Description:
+
+The subeqnarray package provides two new environments subeqnarray and
+subeqnarray* which behave like LaTeX's eqnarray and subeqnarray environments
+except the individual lines are numbered like 1a, 1b, 1c etc.
+This package is not compatible with the package subeqn.
+
+Keywords: latex equations,
+
+Address:
+TeXniek
+The Netherlands
diff --git a/macros/latex/contrib/subeqnarray/manifest.txt b/macros/latex/contrib/subeqnarray/MANIFEST
index f54bba3c8a..7c25363971 100644
--- a/macros/latex/contrib/subeqnarray/manifest.txt
+++ b/macros/latex/contrib/subeqnarray/MANIFEST
@@ -2,14 +2,18 @@
% CONTENTS OF THE SUBEQNARRAY PACKAGE
% ===================================
%
-% manifest.txt -- This file
+% README -- A short introduction
+% MANIFEST -- A list of files
+% CATALOG -- An entry for the macro catalog
%
% subeqnarray.dtx -- Numbering of individual lines of an eqnarray
% environment as subexpressions; not compatible
% with subeqn.dtx
-% subeqnarray.pdf -- A `printed version of subeqnarray.dtx
+% subeqnarray.pdf -- A `printed´ version of subeqnarray.dtx
+% subeqnarray-sample.pdf -- The `printed' versino of the sample file
%
% Installation script for the various parts:
% -------------------------------------------
%
% subeqnarray.ins -- produces subeqnarray.sty and subeqnarray.tex
+
diff --git a/macros/latex/contrib/subeqnarray/README b/macros/latex/contrib/subeqnarray/README
new file mode 100644
index 0000000000..e52f27f0bb
--- /dev/null
+++ b/macros/latex/contrib/subeqnarray/README
@@ -0,0 +1,16 @@
+ subeqnarray bundle
+
+ July 20, 2024
+
+This bundle contains a package that provides two new environments
+subeqnarray and subeqnarray* which behave like LaTeX's eqnarray and
+subeqnarray environments except the individual lines are numbered like
+1a, 1b, 1c etc.
+This package is not compatible with the package subeqn.
+
+Copyright (C) 2024 Johannes L. Braams texniek(at)texniek.nl
+
+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; either
+version 1.3c of the License, or any later version.
diff --git a/macros/latex/contrib/subeqnarray/subeqnarray-sample.pdf b/macros/latex/contrib/subeqnarray/subeqnarray-sample.pdf
new file mode 100644
index 0000000000..2345c08f58
--- /dev/null
+++ b/macros/latex/contrib/subeqnarray/subeqnarray-sample.pdf
Binary files differ
diff --git a/macros/latex/contrib/subeqnarray/subeqnarray.dtx b/macros/latex/contrib/subeqnarray/subeqnarray.dtx
index 5b3555c312..d460ccfca3 100644
--- a/macros/latex/contrib/subeqnarray/subeqnarray.dtx
+++ b/macros/latex/contrib/subeqnarray/subeqnarray.dtx
@@ -1,43 +1,40 @@
% \iffalse meta-comment
%
-% Copyright 1994-2004 Johannes Braams. All rights reserved.
-%
+% Copyright 1998-2024 Johannes L. Braams. All rights reserved.
+%
% This file is part of the subeqnarray package.
% ---------------------------------------------
-%
+%
% It may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either version 1.3
+% conditions of the LaTeX Project Public License, either version 1.3c
% of this license or (at your option) any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
-% and version 1.3 or later is part of all distributions of LaTeX
-% version 2003/12/01 or later.
-%
+% and version 1.3c or later is part of all distributions of LaTeX
+% version 2008 or later.
+%
% This work has the LPPL maintenance status "maintained".
-%
+%
% The Current Maintainer of this work is Johannes Braams.
-%
-% The list of all files belonging to the subeqnarray package is
-% given in the file `manifest.txt'.
-%
+%
+% The list of all files belonging to the supertabular package is
+% given in the file `MANIFEST'.
+%
% The list of derived (unpacked) files belonging to the distribution
% and covered by LPPL is defined by the unpacking scripts (with
% extension .ins) which are part of the distribution.
% \fi
-% \CheckSum{259}
-%\iffalse
+%
+% \CheckSum{264}
+%
+% \iffalse
%
% Subeqnarray package to use with LaTeX2e
%
-%% Copyright (C) 1988--2004 by Johannes Braams,
-%% all rights resserved
%%
%% Error reports please to: J. Braams
%% TeXniek
-%% Kooienswater 62
-%% 2715 AJ Zoetermeer
-%% The Netherlands
-%% Email: texniek at braams.cistron.nl
+%% Email: texniek at texniek.nl
%
% \section{Producing the documentation}
%
@@ -48,10 +45,10 @@
%</dtx>
%<package>\NeedsTeXFormat{LaTeX2e}[1998/06/01]
%<package>\ProvidesPackage{subeqnarray}
-%<sample>\ProvidesFile{subeqnarray.tex}
+%<sample>\ProvidesFile{subeqnarray-sample.tex}
%<driver>\ProvidesFile{subeqnarray.drv}
%\ProvidesFile{subeqnarray.dtx}
- [2004/04/15 v2.1c subeqnarray package]
+ [2024/07/20 v2.1e subeqnarray package]
%<*driver>
\documentclass{ltxdoc}
@@ -82,10 +79,8 @@
%
% \author{Johannes Braams\\
% \TeX niek\\
-% Kersengaarde 33\\
-% 2723 BP Zoetermeer\\
% The Netherlands\\
-% Internet: \texttt{TeXniek at braams.cistron.nl}}
+% Internet: \texttt{texniek at texniek.nl}}
%
% \date{\filedate}
%
@@ -114,8 +109,8 @@
% \changes{2.0}{1993/11/02}{Added support for the leqno option}
% \changes{2.0}{1993/11/02}{Added support for the fleqn option}
% \changes{2.1}{1994/02/09}{Upgrade for LaTeX2e}
-% \changes{2.1b}{1999/03/03}{Changed licensing remarks to use LPPL}
-% \changes{2.1c}{2004/04/15}{Updated address information}
+% \changes{v2.1b}{1999/03/03}{Changed licensing remarks to use LPPL}
+% \changes{v2.1e}{2024/07/20}{Updated contact info}
%
% \section{Initial Code}
%
@@ -129,8 +124,8 @@
% \end{macro}
%
% \begin{macro}{\thesubequation}
-% The representation o the counter \texttt{subequation} includes
-% the \texttt{equation} counter
+% The representation of the counter \texttt{subequation} includes
+% the \texttt{equation} counter.
% \begin{macrocode}
\def\thesubequation{\theequation\alph{subequation}}
% \end{macrocode}
@@ -197,7 +192,7 @@
\ExecuteOptions{reqno,deqn}
% \end{macrocode}
%
-% Now see if the use specified any options.
+% Now see if the user specified any options.
% \begin{macrocode}
\ProcessOptions
% \end{macrocode}
@@ -206,9 +201,9 @@
%
% \begin{macro}{\slabel}
% A new label command to refer to subequations. It works
-% like the |\label| command and was taken from \texttt{latex.tex}.
+% like the |\label| command and was taken from \texttt{latex.ltx}.
%
-% |\slabel{FOO}| writes the following on file |\@auxout|
+% |\slabel{FOO}| writes the following on file |\@auxout|:
%
% |\newlabel{FOO}{{eval(\@currentlabel)}{eval(\thepage)}}|
%
@@ -285,7 +280,7 @@
% \end{macro}
%
% \begin{macro}{\@@subeqncr}
-% Ceck the number of columns, and insert extra |&| if needed. If
+% Check the number of columns, and insert extra |&| if needed. If
% there appear to be more than 3 columns an error is signalled.
% \begin{macrocode}
\def\@@subeqncr{\let\@tempa\relax
@@ -314,7 +309,6 @@
% \begin{macrocode}
\let\@ssubeqncr\@subeqncr
%</package>
-%<*sample>
% \end{macrocode}
% \end{macro}
%
@@ -328,6 +322,11 @@
\documentclass[fleqn]{article}
\usepackage{subeqnarray}
\begin{document}
+\title{Sample subeqnarray}
+\author{Johannes L. Braams}
+\date{\today}
+\maketitle
+
This document shows an example of the use of the \emph{subeqnarray}
environment. Here is one:
\begin{subeqnarray}
@@ -360,20 +359,4 @@ These are equations~\ref{eq10},~\ref{eq11} and~\ref{eq12}.
%
% \Finale
\endinput
-%
-%% \CharacterTable
-%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
-%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
-%% Digits \0\1\2\3\4\5\6\7\8\9
-%% Exclamation \! Double quote \" Hash (number) \#
-%% Dollar \$ Percent \% Ampersand \&
-%% Acute accent \' Left paren \( Right paren \)
-%% Asterisk \* Plus \+ Comma \,
-%% Minus \- Point \. Solidus \/
-%% Colon \: Semicolon \; Less than \<
-%% Equals \= Greater than \> Question mark \?
-%% Commercial at \@ Left bracket \[ Backslash \\
-%% Right bracket \] Circumflex \^ Underscore \_
-%% Grave accent \` Left brace \{ Vertical bar \|
-%% Right brace \} Tilde \~}
-%%
+% \ No newline at end of file
diff --git a/macros/latex/contrib/subeqnarray/subeqnarray.ins b/macros/latex/contrib/subeqnarray/subeqnarray.ins
index efa2d4da60..f28eb4717a 100644
--- a/macros/latex/contrib/subeqnarray/subeqnarray.ins
+++ b/macros/latex/contrib/subeqnarray/subeqnarray.ins
@@ -1,53 +1,49 @@
-%%
+%
%% This file will generate fast loadable files and documentation
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright 1989-2004 Johannes L. Braams. All rights reserved.
-%%
-%% This file is part of the subeqnarray package.
-%% ---------------------------------------------
-%%
+%% Copyright (C) 1999-2024 Johannes L. Braams. All rights reserved.
+%%
+%% This file is part of the eqnarray distribution.
+%% -----------------------------------------------
+%%
%% It may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either version 1.3
+%% conditions of the LaTeX Project Public License, either version 1.3c
%% of this license or (at your option) any later version.
%% The latest version of this license is in
-%% http://www.latex-project.org/lppl.txt
-%% and version 1.3 or later is part of all distributions of LaTeX
-%% version 2003/12/01 or later.
-%%
-%% This work has the LPPL maintenance status "maintained".
-%%
-%% The Current Maintainer of this work is Johannes Braams.
-%%
-%% The list of all files belonging to the subeqnarray package is
-%% given in the file `manifest.txt.
-%%
-%% The list of derived (unpacked) files belonging to the distribution
-%% and covered by LPPL is defined by the unpacking scripts (with
-%% extension .ins) which are part of the distribution.
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008 or later.
+%%
+%% This file has the LPPL maintenance status "maintained".
+%%
+%% As this file contains legal notices, it is NOT PERMITTED to modify
+%% this file in any way that the legal information placed into
+%% generated files is changed (i.e., the files generated when the
+%% original file is executed). This restriction does not apply if
+%% (parts of) the content is reused in a different WORK producing its
+%% own generated files.
%%
%% --------------- start of docstrip commands ------------------
%%
-% ignored commands
-\def\filedate{2004/04/15}
-\def\batchfile{subeqnarray.ins}
+
\input docstrip.tex
\preamble
-Copyright (C) 1999-2004 Johannes Braams. All rights reserved.
+Copyright (C) 1999-2024 Johannes Braams. All rights reserved.
This file was generated from file(s) of the subeqnarray package.
----------------------------------------------------------------
It may be distributed and/or modified under the
-conditions of the LaTeX Project Public License, either version 1.3
+conditions of the LaTeX Project Public License, either version 1.3c
of this license or (at your option) any later version.
The latest version of this license is in
http://www.latex-project.org/lppl.txt
-and version 1.3 or later is part of all distributions of LaTeX
-version 2003/12/01 or later.
+and version 1.3c or later is part of all distributions of LaTeX
+version 2008 or later.
This work has the LPPL maintenance status "maintained".
@@ -71,7 +67,7 @@ extension .ins) which are part of the distribution.
% The sample file
-\generateFile{subeqnarray.tex}{t}{\from{subeqnarray.dtx}{sample}}
+\generateFile{subeqnarray-sample.tex}{t}{\from{subeqnarray.dtx}{sample}}
\Msg{***********************************************************}
\Msg{*}
@@ -89,4 +85,4 @@ extension .ins) which are part of the distribution.
\Msg{* Happy TeXing}
\Msg{***********************************************************}
-\endinput
+\endbatchfile
diff --git a/macros/latex/contrib/subeqnarray/subeqnarray.pdf b/macros/latex/contrib/subeqnarray/subeqnarray.pdf
index 937120f21d..d69c233513 100644
--- a/macros/latex/contrib/subeqnarray/subeqnarray.pdf
+++ b/macros/latex/contrib/subeqnarray/subeqnarray.pdf
Binary files differ
diff --git a/macros/latex/contrib/supertabular/CATALOG b/macros/latex/contrib/supertabular/CATALOG
index 8c58273050..b6438f4bcf 100644
--- a/macros/latex/contrib/supertabular/CATALOG
+++ b/macros/latex/contrib/supertabular/CATALOG
@@ -1,7 +1,7 @@
Name: supertabular (also called supertab)
-Problems-To: texniek@braams.xs4all.nl
+Problems-To: texniek@texniek.nl
Author: J.L. Braams and T. Jurriens
-Version: 4.1g
+Version: 4.2c
Description:
@@ -23,6 +23,4 @@ ISBN 0-201-54199-8.
Address:
TeXniek
-Kersengaarde 33
-2723 BP Zoetermeer
The Netherlands
diff --git a/macros/latex/contrib/supertabular/MANIFEST b/macros/latex/contrib/supertabular/MANIFEST
index bcd27adbf4..3015e0edd5 100644
--- a/macros/latex/contrib/supertabular/MANIFEST
+++ b/macros/latex/contrib/supertabular/MANIFEST
@@ -1,6 +1,6 @@
-README - A short introduction
-MANIFEST - A list of files
-CATALOG - An entry for the macro catalog
+00readme.tx - A short introduction
+manifest.txt - A list of files
+catalog.txt - An entry for the macro catalog
Changelog - An overview of the changes to the package
supertabular.dtx - The documented version of the code, including a couple
of examples of how to use it. Needs supertabular.sty
diff --git a/macros/latex/contrib/supertabular/README b/macros/latex/contrib/supertabular/README
index ccd7c596a5..9de0746460 100644
--- a/macros/latex/contrib/supertabular/README
+++ b/macros/latex/contrib/supertabular/README
@@ -13,9 +13,9 @@ The files contained in this bundle are listed in the file MANIFEST
Supertabular can be used with LaTeX2e as a package.
-Copyright (C) 1989 - 2020 Johannes L. Braams texniek at braams.xs4all.nl
+Copyright (C) 1989 - 2024 Johannes L. Braams texniek at texniek.nl
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; either
-version 1 of the License, or any later version.
+version 1.3c of the License, or any later version.
diff --git a/macros/latex/contrib/supertabular/ChangeLog b/macros/latex/contrib/supertabular/supertabular.bug
index 1dedbe6cd4..7c340f0a99 100644
--- a/macros/latex/contrib/supertabular/ChangeLog
+++ b/macros/latex/contrib/supertabular/supertabular.bug
@@ -1,8 +1,29 @@
-2020-02-02 Johannes Braams <texniek at braams.xs4all.nl>
+2021-02-14 Johannes Braams <texniek at texniek.nl>
+
+ * supertabular.dtx: Issue a \penalty-\@M instead of \newpage when
+ moving the first part of a supertabular to the next page to
+ prevent the first two rows from opverlapping.
+
+2021-02-14 Johannes Braams <texniek at texniek.nl>
+
+ * supertabular.dtx: When the tablehead and/or tabletail are not
+ defeined the internal macros that store their arguments need to
+ remain empty as well. Otherwise the algorithm will always think
+ there's a head and tail with a height of 2.5 pt.
+
+2020-06-27 Johannes Braams <texniek at texniek.nl>
+
+ * supertabular.dtx: the new algorithm for calculating the height
+ of the row broke old documents, especially when small font sizes
+ are used. Made the new algorithm optional (calculate versus
+ estimate) and make sure the row height covers super- and
+ subscripts.
+
+2020-02-02 Johannes Braams <texniek at texniek.nl>
* supertabular.dtx: Replaced the way the height of normal tabular
lines is calculated by basing it on the height and depth of
- \strutbox. This also ment being able to take the \extrarowheight
+ \strutbox. This also meant being able to take the \extrarowheight
from the array package into account.
Also the height of the first and subsequent heads was not taken
into account in the calculation of the available pageheigt. This
@@ -14,25 +35,25 @@
\pagesofar. Therefore we substract a little extra from
\ST@pageleft.
-2020-01-26 Johannes Braams <texniek at braams.xs4all.nl>
+2020-01-26 Johannes Braams <texniek at texniek.nl>
* supertabular.dtx: Updated the copyright year and rearranged the
text around the examples in order to get the first table to split
accross a page boundary again.
-2019-01-18 Johannes Braams <texniek at braams.xs4all.nl>
+2019-01-18 Johannes Braams <texniek at texniek.nl>
* supertabular.dtx: The linenumber in the tracing information, that
is reported from within \\, is off by one when the optional
argument is missing. Therefore the input linenumber is now saved
before TeX starts scanning. Problem reported by Frank Mittelbach.
-2019-01-16 Johannes Braams <texniek at braams.xs4all.nl>
+2019-01-16 Johannes Braams <texniek at texniek.nl>
* supertabular.dtx: The option "pageshow" didn't work as it set a
too low value in \c@tracingst. Problem reported by Frank
Mittelbach.
-2019-01-12 Johannes Braams <texniek at braams.xs4all.nl>
+2019-01-12 Johannes Braams <texniek at texniek.nl>
* supertabular.dtx : The definition for the first table head was
different from the definition of the regular table heads.
This problem was reported by FMi as it produced an extra table in
@@ -44,7 +65,7 @@
themselves although this couteracts the change that was introduced
on 08-08-1999.
-2001-08-21 Johannes Braams <texniek at braams.xs4all.nl>
+2001-08-21 Johannes Braams <texniek at texniek.nl>
* supertabular.dtx : The macro \ST@next needs to be defined when
\ST@skippage was called. Therefore I moved the default definition
@@ -52,7 +73,7 @@
is called; possibly defined by \ST@newpage. This problem was
reported by Andrew Dorrell <dorrell@research.canon.com.au>.
-1999-08-08 Johannes Braams <texniek at braams.xs4all.nl>
+1999-08-08 Johannes Braams <texniek at texniek.nl>
* supertabular.dtx : No longer re-initialize the internal variable
\@table@first@head and \@table@last@tail. This made it impossible
@@ -61,20 +82,20 @@
redeclaring the firsthead and/or lasttail. Reported by Christian
Matuszewski <matuszew@informatik.uni-halle.de>.
-Fri Nov 7 20:27:27 1997 Johannes Braams <texniek at braams.xs4all.nl>
+Fri Nov 7 20:27:27 1997 Johannes Braams <texniek at texniek.nl>
* supertabular.dtx : For standard LaTeX we need to change
\@@startpbox not \@startpbox. Found by Peter R Wilson
- <Peter.Wilson@PSS.Boeing.com>
+ <Peter.Wilson@PSS.Boeing.com>.
-Wed Oct 8 22:35:40 1997 Johannes Braams <texniek at braams.xs4all.nl>
+Wed Oct 8 22:35:40 1997 Johannes Braams <texniek at texniek.nl>
* supertabular.dtx: Running the documentation revealed a loop;
inside the table tail and head \\ was reset to \@tabularcr instead
of to \@@tabularcr (now: \org@tabularcr). First found by Thomas
- Esser <te@informatik.uni-hannover.de>
+ Esser <te@informatik.uni-hannover.de>.
-Sat Sep 27 21:35:29 1997 Johannes Braams <texniek at braams.xs4all.nl>
+Sat Sep 27 21:35:29 1997 Johannes Braams <texniek at texniek.nl>
* supertabular.dtx: Added the mpsupertabular and mpsupertabular*
environments provided by Axel Kielhorn <A.Kielhorn@tu-bs.de>;
@@ -84,14 +105,14 @@ Sat Sep 27 21:35:29 1997 Johannes Braams <texniek at braams.xs4all.nl>
The calculation of the available height still missed the case
where TeX has already begun the second column.
-Thu Sep 18 00:31:55 1997 Johannes Braams <texniek at braams.xs4all.nl>
+Thu Sep 18 00:31:55 1997 Johannes Braams <texniek at texniek.nl>
* supertabular.dtx : The \tablehead and \tabletail commands reset
the command \\; they used \cr for it. That should have been
\@tabularcr to properly deal with it's optional argument.
Found by Axel Kielhorn <A.Kielhorn@tu-bs.de>
-Wed Sep 17 23:59:13 1997 Johannes Braams <texniek at braams.xs4all.nl>
+Wed Sep 17 23:59:13 1997 Johannes Braams <texniek at texniek.nl>
* supertabular.dtx : In two column mode the parameters that
determine how much space is left on the page were not correctly
@@ -99,7 +120,7 @@ Wed Sep 17 23:59:13 1997 Johannes Braams <texniek at braams.xs4all.nl>
completely.
Found by Jeffrey Spielberg <jspielberg@infinet-software.com>
-Tue May 20 23:46:08 1997 Johannes Braams <texniek at braams.xs4all.nl>
+Tue May 20 23:46:08 1997 Johannes Braams <texniek at texniek.nl>
* supertabular.dtx : \shrinkheight didn't shrink the available
height for a part of the tabular (as documented); it just *set* it
@@ -109,26 +130,26 @@ Tue May 20 23:46:08 1997 Johannes Braams <texniek at braams.xs4all.nl>
\@table@last@tail are undefined; this shoud be done globally.
Found by Axel Kielhorn <A.Kielhorn@tu-bs.de>
-Sat Apr 12 23:37:33 1997 Johannes Braams <texniek at braams.xs4all.nl>
+Sat Apr 12 23:37:33 1997 Johannes Braams <texniek at texniek.nl>
* supertabular.dtx : Added \ST@stretchht and \ST@prevht to improve
decision process. \estimate@lineht now also computes the
difference between a normal line height and when \arraystretch is
in effect.
-Thu Apr 10 23:33:07 1997 Johannes Braams <texniek at braams.xs4all.nl>
+Thu Apr 10 23:33:07 1997 Johannes Braams <texniek at texniek.nl>
* supertabular.dtx: Had to repaire some documentation errors.
(found by Thomas Esser <te@informatik.uni-hannover.de>)
-Wed Apr 9 00:29:36 1997 Johannes Braams <texniek at braams.xs4all.nl>
+Wed Apr 9 00:29:36 1997 Johannes Braams <texniek at texniek.nl>
* supertabular.dtx : Only the first part of a supertabular can be
moved to the next page. Therefore we need to change the definition
of \ST@skippage in the middle of processing the supertabular data.
-Thu Mar 6 21:56:18 1997 Johannes Braams <texniek at braams.xs4all.nl>
+Thu Mar 6 21:56:18 1997 Johannes Braams <texniek at texniek.nl>
* supertabular.dtx : Using a tabular environment in the cells of a
supertabular gives `interesting' results when the algorithm
@@ -136,14 +157,14 @@ Thu Mar 6 21:56:18 1997 Johannes Braams <texniek at braams.xs4all.nl>
tabular. A number of changes were necessary to make this work.
Found by Axel Kielhorn <i0080108@ws.rz.tu-bs.de>
-Thu Feb 20 23:29:18 1997 Johannes Braams <texniek at braams.xs4all.nl>
+Thu Feb 20 23:29:18 1997 Johannes Braams <texniek at texniek.nl>
* supertabular.dtx: Renamed \tableformat into \ST@tableformat
because the KOPMA-packages also use \tableformat and therefore
clashed with babel.
Found by Axel Kielhorn <i0080108@ws.rz.tu-bs.de>
-Tue Feb 4 23:50:50 1997 Johannes Braams <texniek at braams.xs4all.nl>
+Tue Feb 4 23:50:50 1997 Johannes Braams <texniek at texniek.nl>
* supertabular.dtx (section{The Implementation}): Removed the use
of the page height correction for p-columns; the current algorithm
@@ -155,7 +176,7 @@ Tue Feb 4 23:50:50 1997 Johannes Braams <texniek at braams.xs4all.nl>
page on a calculated minimum height of the table. The minimum is
the head, the tail and 1 line of tabular data.
-Thu Nov 28 20:38:53 1996 Johannes Braams <texniek at braams.xs4all.nl>
+Thu Nov 28 20:38:53 1996 Johannes Braams <texniek at texniek.nl>
* supertabular.dtx: Started a cleanup of the code, made source
file a full fledged .dtx file
@@ -168,7 +189,7 @@ Thu Nov 28 20:38:53 1996 Johannes Braams <texniek at braams.xs4all.nl>
% jurriens at fwn.rug.nl P.O Box 800, 9700 AV Groningen
%
% revised by: Johannes Braams
-% texniek at braams.xs4all.nl TeXniek (NL)
+% texniek at texniek.nl TeXniek (NL)
% \def\fileversion{3.7c}
% \def\filename{supertabular sty}
% \def\filedate{1995/10/16}
diff --git a/macros/latex/contrib/supertabular/supertabular.dtx b/macros/latex/contrib/supertabular/supertabular.dtx
index be31a2d113..6bde17bbfa 100644
--- a/macros/latex/contrib/supertabular/supertabular.dtx
+++ b/macros/latex/contrib/supertabular/supertabular.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright 1989-2020 Johannes L. Braams. All rights reserved.
+% Copyright 1989-2021 Johannes L. Braams. All rights reserved.
%
% This file is part of the supertabular package.
% ---------------------------------------------
@@ -25,14 +25,13 @@
% extension .ins) which are part of the distribution.
% \fi
%
-% \CheckSum{1132}
+% \CheckSum{1188}
% \iffalse
%% Sourcefile `supertabular.dtx'.
%%
%% Copyright (C) 1988 by Theo Jurriens
-%% Copyright (C) 1990-2020 by Johannes Braams texniek at braams.xs4all.nl
-%% Kersengaarde 33
-%% 2723 BP Zoetermeer NL
+%% Copyright (C) 1990-2024 by Johannes Braams texniek at texniek.nl
+%% The Netherlands
%% all rights reserved.
%%
%%
@@ -43,11 +42,11 @@
%<package>\ProvidesPackage{supertabular}
%<driver>\ProvidesFile{supertabular.drv}
%\ProvidesFile{supertabular.dtx}
- [2020/02/02 v4.1g the supertabular environment]
+ [2024/07/20 v4.2c the supertabular environment]
%
%<*driver>
\documentclass{ltxdoc}
-\usepackage[debugshow]{supertabular}
+\usepackage[debugshow,calculate]{supertabular}
\newcommand{\tbsp}{\rule{0pt}{18pt}}
\begin{document}
\providecommand{\Lenv}[1]{\textsf{#1}}
@@ -59,17 +58,19 @@
%</driver>
% \fi
%
-% \changes{v4.0a}{1996/11/28}{Cleanup of the code, now a \file{.dtx}
-% source file}
-% \changes{v4.0c}{1997/02/20}{Replace \cs{tableformat} by
-% \cs{ST@tableformat} to prevent a clash with the \pkg{KOMA}
-% pacakage}
-% \changes{v4.0f}{1997/04/10}{Repaired a few typos in the
-% documentation}
-% \changes{v4.1a}{1997/09/18}{Repaired a number of typos and added
-% contributed mpsupertabular environemnts}
-% \changes{v4.1b}{1997/10/08}{Renamed \cs{@@tabularcr} to
-% \cs{org@tabularcr}}
+% \changes{v4.0a}{1996/11/28}{Cleanup of the code, now a \file{.dtx}
+% source file}
+% \changes{v4.0c}{1997/02/20}{Replace \cs{tableformat} by
+% \cs{ST@tableformat} to prevent a clash with the \pkg{KOMA}
+% pacakage}
+% \changes{v4.0f}{1997/04/10}{Repaired a few typos in the
+% documentation}
+% \changes{v4.1a}{1997/09/18}{Repaired a number of typos and added
+% contributed mpsupertabular environemnts}
+% \changes{v4.1b}{1997/10/08}{Renamed \cs{@@tabularcr} to
+% \cs{org@tabularcr}}
+% \changes{v4.2a}{2020-06-27}{renamed \cs{ST@lineht} to \cs{ST@rowht}}
+% \changes{v4.2c}{2024/07/20}{A few documentation changes}
%
% \GetFileInfo{supertabular.dtx}
% \title{The \texttt{supertabular} environment\thanks{This file
@@ -110,7 +111,13 @@
% and why \pkg{supertabular} decides to break the tabular
% environment in order to produce a new page.
% \item The option \textsf{debugshow} also adds information about
-% each line that is added to the tabular.
+% each row that is added to the tabular.
+% \item The option \textsf{estimate} (the default) has the package
+% use the old estimation-based algortihm to establish the height
+% of individual rows.
+% \item The option \textsf{calculate} has the package use the new
+% calculation-based algortihm to establish the height
+% of individual rows.
% \end{enumerate}
%
% Below is a description of the new commands and environments that
@@ -172,15 +179,15 @@
%
% \begin{itemize}
% \item When the material of a normal entry (not a p-arg) becomes
-% larger than the estimated |\ST@lineht|, overfull |\vbox|es
-% will be produced at all.
+% larger than the estimated |\ST@rowht|, overfull |\vbox|es
+% will be produced.
% \item When the last p-arg on a page gets more than 4 lines
% (probably even more than 3 lines) it will result in an overfull
% |\vbox|. Also some combinations of |\baselinestretch|
-% |\arraystretch| and a large font may lead to one line too much.
-% \item if accidentally the last line of the tabular produces a
+% |\arraystretch| and a large font may lead to one row too much.
+% \item if accidentally the last row of the tabular produces a
% newpage, on the next page the tabletail will be written
-% immediately after the tablehead. Depending on the contents this
+% immediately after the tablehead. Depending on the contents, this
% may result in an error message regarding misplaced |\noalign|.
%
% A quick but not very elegant solution: shrink the allowed height
@@ -431,6 +438,36 @@
\DeclareOption{errorshow}{\c@tracingst\z@}
\DeclareOption{pageshow}{\c@tracingst\thr@@}
\DeclareOption{debugshow}{\c@tracingst5\relax}
+% \end{macrocode}
+% In version 4.1g a new way of determining the height of the
+% average row was introduced. Instead of using an estimation, based
+% on the value of |\baselineskip| a computation was introduced,
+% based on the size of the |\strutbox|. The effect of this new
+% method was that the parial tabulars fill the page better, so less
+% \texttt{underfull vbox} message would appear. Unfortunately this
+% had a negative effect on existing documents (that don;t come out
+% like they used to) and especially when a very small font
+% (|\tiny| or |\scriptsize| was chosen for the tabular and the
+% cells contain subscripts or superscripts. It turned out that the
+% heigth and depth of a formula like $5^5_5$ exceeds the size of
+% |\strutbox|. The result is that the rows have more height (and/or
+% depth) thatn what the algorithm computed. Hence, when more rows
+% are added to the partial tabular than fit on the page. Especially
+% on the first part thisis a probem as the partial tabular becomes
+% too high and doesn't fit in the avialbale space. \TeX\ then
+% decides to move it to the next page, resulting in two
+% consecutive pages that have a lot of white space on them.
+% \changes{v4.2a}{2020-06-27}{Two new options to choose the
+% computation algorithhm}
+% \begin{macrocode}
+\DeclareOption{calculate}{\def\ST@calculate@rowht{\ST@compute@rowht}}
+\DeclareOption{estimate}{\def\ST@calculate@rowht{\ST@estimate@rowht}}
+%\def\ST@calculate@rowht{\ST@estimate@rowht}
+% \end{macrocode}
+% The default for the options is to only show errors and use the
+% old estmation algorithm (so as not to break old documents).
+% \begin{macrocode}
+\ExecuteOptions{errorshow,estimate}
\ProcessOptions
% \end{macrocode}
%
@@ -510,7 +547,7 @@
% yet be visible in the amount of space occupoed on the page
% sofar. Therefore we include the possibility to reduce the height
% of the first part of the supertabular. In order to this we need a
-% macro that indicates a aption has been put in front of the
+% macro that indicates a caption has been put in front of the
% table. We do this to reduce the risk that the first part of the
% table is too high after all and is pushed onto the next page due
% to an overfull |\vbox| condition.
@@ -523,7 +560,7 @@
% \begin{macro}{\ST@caption}
% This is a redefinition of LaTeX's |\@caption|, |\@makecaption| is
% called within a group so as not to return to |\normalsize|
-% globally. also a fix is made for the `feature' of the
+% globally. Also a fix is made for the `feature' of the
% |\@makecaption| of the document class \cls{article} and friends
% that a caption \textbf{always} gets a |\vskip 10pt| at the top
% and \textbf{none} at the bottom. If a user wants to precede his
@@ -554,14 +591,19 @@
% to \cs{@tabularcr}}
% \changes{v4.1b}{1997/10/08}{Not \cs{@tabularcr} but
% \cs{org@tabularcr}}
+% \changes{v4.2b}{2021-02-14}{When the argument is empty the internal
+% macro \cs{@tablehead} needs to be empty as well.}
% \begin{macrocode}
\newcommand\tablehead[1]{%
- \gdef\@tablehead{%
- \noalign{%
- \global\let\@savcr=\\
- \global\let\\=\org@tabularcr}%
- #1%
- \noalign{\global\let\\=\@savcr}}}
+ \def\@ST@arg{#1}%
+ \ifx\@ST@arg\@empty\gdef\@tablehead{}\else
+ \gdef\@tablehead{%
+ \noalign{%
+ \global\let\@savcr=\\
+ \global\let\\=\org@tabularcr}%
+ #1%
+ \noalign{\global\let\\=\@savcr}}%
+ \fi}
\tablehead{}
% \end{macrocode}
% It's possible to specify a different tablehead for the first
@@ -571,17 +613,22 @@
% document.
% \changes{v4.1f}{2019/01/12}{\cs{\@table@first@head} needs the same
% definition as \cs{\@tablehead} (found by FMi)}
+% \changes{v4.2b}{2021-02-14}{When the argument is empty the internal
+% macro \cs{@table@first@head} needs to be empty as well.}
% \begin{macrocode}
\newcommand\tablefirsthead[1]{%
- \gdef\@table@first@head{%
- \noalign{%
- \global\let\@savcr=\\
- \global\let\\=\org@tabularcr}%
- #1%
- \noalign{%
- \global\let\\=\@savcr
- \global\let\@table@first@head\undefined
- }}}
+ \def\@ST@arg{#1}%
+ \ifx\@ST@arg\@empty\gdef\@table@first@head{}\else
+ \gdef\@table@first@head{%
+ \noalign{%
+ \global\let\@savcr=\\
+ \global\let\\=\org@tabularcr}%
+ #1%
+ \noalign{%
+ \global\let\\=\@savcr
+ \global\let\@table@first@head\undefined
+ }}%
+ \fi}
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -598,14 +645,19 @@
% to \cs{@tabularcr}}
% \changes{v4.1b}{1997/10/08}{Not \cs{@tabularcr} but
% \cs{org@tabularcr}}
+% \changes{v4.2b}{2021-02-14}{When the argument is empty the internal
+% macro \cs{@tabletail} needs to be empty as well.}
% \begin{macrocode}
\newcommand\tabletail[1]{%
- \gdef\@tabletail{%
- \noalign{%
- \global\let\@savcr=\\
- \global\let\\=\org@tabularcr}%
- #1%
- \noalign{\global\let\\=\@savcr}}}
+ \def\@ST@arg{#1}%
+ \ifx\@ST@arg\@empty\gdef\@tabletail{}\else
+ \gdef\@tabletail{%
+ \noalign{%
+ \global\let\@savcr=\\
+ \global\let\\=\org@tabularcr}%
+ #1%
+ \noalign{\global\let\\=\@savcr}}%
+ \fi}
\tabletail{}
% \end{macrocode}
% It's possible to specify a different tabletail for the last
@@ -615,17 +667,22 @@
% document.
% \changes{v4.1f}{2019/01/12}{\cs{\@table@last@tail} needs the same
% definition as \cs{\@tabletail}}
+% \changes{v4.2b}{2021-02-14}{When the argument is empty the internal
+% macro \cs{@tabletail} needs to be empty as well.}
% \begin{macrocode}
\newcommand\tablelasttail[1]{%
- \gdef\@table@last@tail{%
- \noalign{%
- \global\let\@savcr=\\
- \global\let\\=\org@tabularcr}%
- #1%
- \noalign{%
- \global\let\\=\@savcr
- \global\let\@table@last@tail\undefined
- }}}
+ \def\@ST@arg{#1}%
+ \ifx\@ST@arg\@empty\gdef\@table@last@tail{}\else
+ \gdef\@table@last@tail{%
+ \noalign{%
+ \global\let\@savcr=\\
+ \global\let\\=\org@tabularcr}%
+ #1%
+ \noalign{%
+ \global\let\\=\@savcr
+ \global\let\@table@last@tail\undefined
+ }}%
+ \fi}
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -660,7 +717,7 @@
%
% \begin{macro}{\ST@trace@cr}
% A variant of |\ST@trace| that can be called from within |\\| as
-% that command is looking for an optional argument will end up
+% that command is looking for an optional argument and will end up
% scanning the next line.
% \begin{macro}{\ST@save@lineno}
% \changes{v4.1f}{2019/01/18}{Added a macro to save the current input
@@ -752,25 +809,22 @@
% \changes{v4.0b}{1997/02/04}{Removed the use of \cs{ST@pboxcorr},
% correction seems to be no longer necessary}
%
-% \begin{macro}{\ST@lineht}
+% \begin{macro}{\ST@rowht}
% \begin{macro}{\ST@stretchht}
% \changes{v4.0g}{1997/04/12}{Dimension register added}
% \begin{macro}{\ST@prevht}
% \changes{v4.0g}{1997/04/12}{Dimension register added}
-% The estimated height of a normal line is stored in
-% |\ST@lineht|. The dimension register |\ST@stretchht| is used to
-% store the difference between the `normal' line height and the
-% line height when |\arraystretch| has a non-standard value. This
-% is used in the case where p-box entries are added to the
-% tabular. The dimension register |\ST@prevht| is use to store the
-% height of the previous line to use it as an estimate for the
-% height of the next line. This is needed for a better estimate of
+% The estimated height of a normal row is stored in
+% |\ST@rowht|. The dimension register |\ST@stretchht| was used to
+% store the difference between the `normal' row height and the
+% row height when |\arraystretch| has a non-standard value. This
+% was used in the case where p-box entries are added to the
+% tabular. The dimension register |\ST@prevht| is used to store the
+% height of the previous row, to use it as an estimate for the
+% height of the next row. This is needed for a better estimate of
% when to break the tabular.
-% \changes{v4.1g}{2020/02/02}{\cs{ST@stretchht} is no longer needed,
-% will be removed in a future release}
% \begin{macrocode}
-\newdimen\ST@lineht
-%\newdimen\ST@stretchht
+\newdimen\ST@rowht
\newdimen\ST@prevht
% \end{macrocode}
% \end{macro}
@@ -907,10 +961,12 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\ST@compute@lineht}
-% \changes{v4.1g}{2020/02/02}{New macro \cs{ST@compute@lineht} to
-% replacte \cs{estimate@lineht}}
-% The height of a line in an array environemnt can be computed as:
+% \begin{macro}{\ST@compute@rowht}
+% \changes{v4.1g}{2020/02/02}{New macro \cs{ST@compute@rowht} to
+% replace \cs{ST@estimate@rowht}}
+% \changes{v4.2a}{2020-06-27}{Make sure that \cs{ST@rowht} is large
+% enough to take subscripts and superscripts into account}
+% The height of a row in an array environemnt can be computed as:
% \begin{itemize}
% \item the height of the strutbox |\ht\strutbox| (plus
% |\extrarowheight| when the \pkg{array} package is loaded),
@@ -919,34 +975,60 @@
% by |\arraystretch|.
% \end{itemize}
% \begin{macrocode}
-\def\ST@compute@lineht{%
- \ST@lineht=\ht\strutbox
+\def\ST@compute@rowht{%
+% \end{macrocode}
+% Temporarily store a formula with superscript and subscript in a
+% box in order to be able to measure its height and depth.
+% \begin{macrocode}
+ \setbox\@tempboxa=\vbox{\@arrayparboxrestore $5^5_5$}
+% \end{macrocode}
+% Use the largest height of either |\@tempboxa| or |\strutbox|.
+% \begin{macrocode}
+ \ifnum\ht\@tempboxa>\ht\strutbox
+ \ST@rowht=\ht\@tempboxa
+ \else
+ \ST@rowht=\ht\strutbox
+ \fi
+% \end{macrocode}
+% If the \textsf{array} pacakge is used we need to add the
+% value of |\extrarowheight|.
+% \begin{macrocode}
\ifx\extrarowheight\undefined\else
- \advance \ST@lineht by \extrarowheight
+ \advance \ST@rowht by \extrarowheight
+ \fi
+% \end{macrocode}
+% Also use the largest depth of either |\@tempboxa| or |\strutbox|.
+% \begin{macrocode}
+ \ifnum\dp\@tempboxa>\dp\strutbox
+ \advance\ST@rowht \dp\@tempboxa
+ \else
+ \advance\ST@rowht \dp\strutbox
\fi
- \ST@lineht = \arraystretch\ST@lineht
- \advance\ST@lineht \arraystretch\dp\strutbox
- \ST@trace\tw@{Normal Line height: \the\ST@lineht}%
+% \end{macrocode}
+% And finally multiply by |\arraystretch|.
+% \begin{macrocode}
+ \ST@rowht = \arraystretch\ST@rowht
+% \end{macrocode}
+% \begin{macrocode}
+ \ST@trace\tw@{Normal Row height: \the\ST@rowht}%
}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\estimate@lineht}
+% \begin{macro}{\ST@estimate@rowht}
% Estimates the height of normal line taking |\arraystretch| into
% account. Also computes the difference between a normal line and a
% `stretched' one.
% \changes{v4.0b}{1997/02/04}{Removed use of \cs{ST@pboxcorr}}
% \changes{v4.0g}{1997/04/12}{Added the computation of
% \cs{ST@stretchht}}
-% This macro will be removed in a future release.
+% \changes{v4.2a}{2020-06-27}{removed the computation of
+% \cs{ST@stretchht} as it is no longer used}
% \begin{macrocode}
-\def\estimate@lineht{%
- \ST@lineht=\arraystretch \baslineskp
- \global\advance\ST@lineht by 1\p@
- \ST@stretchht\ST@lineht\advance\ST@stretchht-\baslineskp
- \ifdim\ST@stretchht<\z@\ST@stretchht\z@\fi
- \ST@trace\tw@{Average line height: \the\ST@lineht}%
- \ST@trace\tw@{Stretched line height: \the\ST@stretchht}%
+\def\ST@estimate@rowht{%
+ \ST@rowht=\arraystretch \baslineskp
+ \global\advance\ST@rowht by 1\p@
+ \ST@trace\tw@{Average Row height: \the\ST@rowht}%
}
% \end{macrocode}
% \end{macro}
@@ -1071,23 +1153,23 @@
\ST@tailht=\ht\@tempboxa\advance\ST@tailht\dp\@tempboxa
\fi
% \end{macrocode}
-% We add the average height of a line to this because when we
+% We add the average height of a row to this because when we
% decide to continue the tabular we need to have enough space left
-% for one line and the tail.
+% for one row \emph{and} the tail.
% \begin{macrocode}
- \advance\ST@tailht by \ST@lineht
+ \advance\ST@tailht by \ST@rowht
\ST@trace\tw@{Height of tail: \the\ST@tailht}%
\ST@trace\tw@{Maximum height of tabular: \the\ST@pageleft}%
\@tempdima\ST@headht
% \end{macrocode}
% \changes{v4.0b}{1997/02/04}{Base the decision whether to start on a
-% new page on the total of headheight, tailht and lineht}
+% new page on the total of headheight, tailht and rowht}
% Now we decide whether we can continue on the current page or
% whether we need to start on a new page. We assume that the
% minimum height of a tabular is the height of the head, the tail
-% and one line of data. If that doesn't fit a new page is started.
+% and one row of data. If that doesn't fit a new page is started.
% \begin{macrocode}
- \advance\@tempdima\ST@lineht
+ \advance\@tempdima\ST@rowht
\advance\@tempdima\ST@tailht
\ST@trace\tw@{Minimum height of tabular: \the\@tempdima}%
\ifnum\@tempdima>\ST@pageleft
@@ -1164,7 +1246,7 @@
\global\let\@oldcr=\\
% \end{macrocode}
% Save the current value of |\baselineskip|, as we need it in the
-% calculation of the average height of a line.
+% calculation of the average height of a row.
% \begin{macrocode}
\def\baslineskp{\baselineskip}%
% \end{macrocode}
@@ -1174,9 +1256,9 @@
\ifx\undefined\@classix
% \end{macrocode}
% Save old |\@tabularcr| and insert the definition of
+% |\ST@tabularcr|.
% \changes{v4.1c}{1997/11/07}{For standard \LaTeX\ we need to change
% \cs{@@startpbox}, \emph{not} \cs{@startpbox}}
-% |\ST@tabularcr|.
% \begin{macrocode}
\let\org@tabularcr\@tabularcr
\let\@tabularcr\ST@tabularcr
@@ -1210,20 +1292,20 @@
\fi
% \end{macrocode}
% The first part of a supertabular may be moved on to the next page
-% if it doesn't fit on the current page afterall. Subsequent parts
+% if it doesn't fit on the current page after all. Subsequent parts
% can not be moved; therefor we will have to switch the definition
-% of |\ST@skippart| around.
+% of |\ST@skippage| around.
% \changes{v4.0e}{1997/04/09}{Make sure that only the first part of a
% supertabular can be moved to the next page.}
% \begin{macrocode}
\let\ST@skippage\ST@skipfirstpart
% \end{macrocode}
-% Now we can estimate the average line height and the height of the
+% Now we can estimate the average row height and the height of the
% first page of the \Lenv{supertabular}.
% \changes{v4.0i}{1997/09/18}{Added \cs{noindent}}
-% \changes{v4.1g}{2020/02/02}{Now call \cs{ST@compute@lineht}}
+% \changes{v4.1g}{2020/02/02}{Now call \cs{ST@calculate@rowht}}
% \begin{macrocode}
- \ST@compute@lineht
+ \ST@calculate@rowht
\@calfirstpageht
\noindent
}
@@ -1544,20 +1626,20 @@
% \begin{macrocode}
\def\ST@cr{%
\noalign{%
- \ifnum\ST@pboxht<\ST@lineht
+ \ifnum\ST@pboxht<\ST@rowht
% \end{macrocode}
-% If there is a non-empty line, but an empty parbox, then
-% |\ST@pboxht| might be non-zero, but too small thereby breaking
-% the algorithm. Therefor we estimate the height of the line to be
-% |\ST@lineht| in this case.
+% If there is a non-empty row, but an empty parbox, then
+% |\ST@pboxht| might be non-zero, but too small, thereby breaking
+% the algorithm. Therefor we estimate the height of the row to be
+% |\ST@rowht| in this case.
% \begin{macrocode}
- \global\advance\ST@pageleft -\ST@lineht
+ \global\advance\ST@pageleft -\ST@rowht
% \end{macrocode}
% And we store that fact in |\ST@prevht|.
-% \changes{v4.0g}{1997/04/12}{store the height of the previous line in
+% \changes{v4.0g}{1997/04/12}{store the height of the previous row in
% \cs{ST@prevht}}
% \begin{macrocode}
- \global\ST@prevht\ST@lineht
+ \global\ST@prevht\ST@rowht
\else
% \end{macrocode}
% When the parbox was not empty we take into account its height
@@ -1605,11 +1687,11 @@
\else
% \end{macrocode}
% When there is not enough space left on the current page, we start
-% a new page. To compute the amount of space need we use the
-% height of the previous line (|\ST@prevht|) as an estimation of
-% the height of the next line. If we are processing a
+% a new page. To compute the amount of space needed we use the
+% height of the previous row (|\ST@prevht|) as an estimation of
+% the height of the next row. If we are processing a
% \Lenv{mpsupertabular} we need to take the height of the footnotes
-% into account.
+% into account as well.
% \changes{v4.0g}{1997/04/12}{Leave room for both \cs{ST@tailht}
% \emph{and} \cs{ST@prevht}}
% \changes{v4.1a}{1997/09/19}{Take care of space needed for
@@ -1659,10 +1741,19 @@
% \begin{macrocode}
\global\advance\ST@pageleft\pagetotal
% \end{macrocode}
-% Then we can set |\ST@pagesofar| to $0$ and start the new page.
+% Then we can set |\ST@pagesofar| to $0$...
% \begin{macrocode}
\global\ST@pagesofar\z@
- \newpage
+% \end{macrocode}
+% ... and start the new page, but in this special case we need to
+% trigger the output routine directly by issuing a |\penalty|
+% rather than calling |\newpage| as that macro effectively issues a
+% |\vskip-\maxdepth| which makes the first two rows of the tabular
+% overlap.
+% \changes{v4.2b}{2021-02-14}{Issue a \cs{penalty} instead of
+% \cs{newpage} to trigger the output routine.}
+% \begin{macrocode}
+ \penalty -\@M
% \end{macrocode}
%
% Finally we make sure that this macro can only be executed once
diff --git a/macros/latex/contrib/supertabular/supertabular.pdf b/macros/latex/contrib/supertabular/supertabular.pdf
index 444cbfdcd7..a24a8c865c 100644
--- a/macros/latex/contrib/supertabular/supertabular.pdf
+++ b/macros/latex/contrib/supertabular/supertabular.pdf
Binary files differ
diff --git a/macros/latex/contrib/synthslant/LICENSE b/macros/latex/contrib/synthslant/LICENSE
index f8b699e6eb..888d9e68e7 100644
--- a/macros/latex/contrib/synthslant/LICENSE
+++ b/macros/latex/contrib/synthslant/LICENSE
@@ -355,11 +355,11 @@ Here is an example of such a notice and statement:
%% Copyright 2005 M. Y. Name
%
% This work may be distributed and/or modified under the
- % conditions of the LaTeX Project Public License, either version 1.3
+ % conditions of the LaTeX Project Public License, either version 1.3c
% of this license or (at your option) any later version.
% The latest version of this license is in
- % http://www.latex-project.org/lppl.txt
- % and version 1.3 or later is part of all distributions of LaTeX
+ % https://www.latex-project.org/lppl.txt
+ % and version 1.3c or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status `maintained'.
diff --git a/macros/latex/contrib/synthslant/Makefile b/macros/latex/contrib/synthslant/Makefile
index d8de419230..8ef77a6982 100644
--- a/macros/latex/contrib/synthslant/Makefile
+++ b/macros/latex/contrib/synthslant/Makefile
@@ -19,8 +19,9 @@ DVIPS := dvips
DVIPS_FLAGS := -d1 # debug \special{}
-LATEX := /usr/bin/env max_print_line=2147483647 pdflatex
-LATEX_FLAGS := -file-line-error -halt-on-error -interaction=nonstopmode
+LATEX_PROPER := pdflatex
+LATEX := /usr/bin/env max_print_line=2147483647 $(LATEX_PROPER)
+LATEX_FLAGS := -file-line-error -halt-on-error -interaction=nonstopmode -output-directory=.
LATEX_RERUN_TRIGGER := '^Package rerunfilecheck Warning: File [^ ]* has changed'
LATEX_WARNING := '^LaTeX (|[A-Za-z0-9_]* )Warning:'
@@ -33,18 +34,9 @@ METAPOST := mpost
METAPOST_FLAGS := -file-line-error -interaction=nonstopmode -tex=latex
-SPELLCHECK := aspell
-SPELLCHECK_FLAGS := \
- --add-tex-command='citenum p' --add-tex-command='code p' \
- --add-tex-command='Cref p' --add-tex-command='cref p' \
- --add-tex-command='cs p' \
- --add-tex-command='DescribeEnv p' --add-tex-command='DescribeMacro p' \
- --add-tex-command='marg p' --add-tex-command='meta p' \
- --add-tex-command='oarg p' \
- --lang=en_US --mode=tex
-
-
-SOURCE_FILES := LICENSE Makefile synthslant.dtx synthslant.ins
+PROJECT_NAME := synthslant
+SOURCE_FILES := LICENSE Makefile README.md synthslant.dtx synthslant.ins
+DOCUMENTATION_FILES := synthslant-gauge.pdf synthslant.pdf
@@ -57,7 +49,7 @@ sty: synthslant.sty
.PHONY: pdf
-pdf: doc gauge
+pdf: doc gauge test
.PHONY: doc
@@ -68,19 +60,42 @@ doc: synthslant.pdf
gauge: synthslant-gauge.pdf
-.PHONY: cpio
-cpio:
- cd ..; \
- echo $(addprefix synthslant/,$(SOURCE_FILES)) | \
- cpio -o | \
- gzip > "synthslant-$$(date +%Y-%m-%d).cpio.gz"
+.PHONY: test
+test: synthslant-minimal-test.pdf
+
+
+export TEMPORARY_DIRECTORY
+
+
+.PHONY: dist
+dist:
+ $(eval TEMPORARY_DIRECTORY := $(shell mktemp -d))
+ trap '$(RM) -r $(TEMPORARY_DIRECTORY); exit 1' HUP INT QUIT TERM; $(MAKE) __dist
+ $(RM) -r $(TEMPORARY_DIRECTORY)
+
+
+.PHONY: __dist
+__dist: LATEX_FLAGS += -interaction=batchmode
+__dist: $(DOCUMENTATION_FILES)
+ test -d '$(TEMPORARY_DIRECTORY)'
+ test -w '$(TEMPORARY_DIRECTORY)'
+ mkdir $(TEMPORARY_DIRECTORY)/$(PROJECT_NAME)
+ cp $(SOURCE_FILES) $(TEMPORARY_DIRECTORY)/$(PROJECT_NAME)
+ mkdir $(TEMPORARY_DIRECTORY)/$(PROJECT_NAME)/docs
+ cp $(DOCUMENTATION_FILES) $(TEMPORARY_DIRECTORY)/$(PROJECT_NAME)/docs
+ tar czf $(PROJECT_NAME).tar.gz -C $(TEMPORARY_DIRECTORY) $(PROJECT_NAME)
-.PHONY: tar
-tar:
- cd ..; \
- tar czf "synthslant-$$(date +%Y-%m-%d).tar.gz" \
- $(addprefix synthslant/,$(SOURCE_FILES))
+.PHONY: distcheck
+distcheck: LATEX_FLAGS += -interaction=batchmode
+distcheck: dist
+ $(eval TEMPORARY_DIRECTORY := $(shell mktemp -d))
+ test -d '$(TEMPORARY_DIRECTORY)'
+ test -w '$(TEMPORARY_DIRECTORY)'
+ tar xzf $(PROJECT_NAME).tar.gz -C $(TEMPORARY_DIRECTORY)
+ $(MAKE) --directory=$(TEMPORARY_DIRECTORY)/$(PROJECT_NAME) LATEX_FLAGS='$(LATEX_FLAGS)' all
+ $(RM) -r $(TEMPORARY_DIRECTORY)
+ @printf '\n\ndistcheck passed.\n'
.PHONY: clean
@@ -91,6 +106,7 @@ clean:
$(RM) mptextmp.* mpxerr.tex
$(RM) README README.html RELEASE-HOWTO RELEASE-HOWTO.html
$(RM) compare-with-the-gimp.eps compare-with-the-gimp.png
+ $(RM) $(PROJECT_NAME).tar.gz
.PHONY: mostlyclean
@@ -99,35 +115,27 @@ mostlyclean: clean
.PHONY: maintainer-clean
maintainer-clean: mostlyclean
- $(RM) ./*.base64 ./*.ist ./*.mp ./*.sty ./*.tex
+ $(RM) ./*.base64 ./*.gst ./*.ist ./*.mp ./*.sty ./*.tex
.PHONY: perf
perf: synthslant-gauge.tex synthslant.sty
- perf stat --repeat=10 -- $(LATEX) $(LATEX_FLAGS) -interaction batchmode -draftmode $<
+ perf stat --repeat=10 -- $(LATEX) $(LATEX_FLAGS) -interaction=batchmode -draftmode $<
.PHONY: tool-check
tool-check:
- @printf '*** LATEX = "%s"\n' '$(LATEX)'
- $(LATEX) --version
+ @printf '*** LATEX_PROPER = "%s"\n' '$(LATEX_PROPER)'
+ $(LATEX_PROPER) --version
+ @printf '\n\n*** BibTeX\n'
+ bibtex --version
@printf '\n\n*** MAKEINDEX = "%s"\n' '$(MAKEINDEX)'
- $(MAKEINDEX) < /dev/null
+ $(MAKEINDEX) < /dev/null
@printf '\n\n*** METAPOST = "%s"\n' '$(METAPOST)'
$(METAPOST) --version
@printf '\n*** BASE64 = "%s"\n' '$(BASE64)'
$(BASE64) --version
- @printf '\n\nTool check passed.\n'
-
-
-.PHONY: spell-check
-spell-check:
- @sed -e '\#<DISABLE-SPELL-CHECK/>#d' \
- -e '\#<DISABLE-SPELL-CHECK>#,\#</DISABLE-SPELL-CHECK>#d' < synthslant.dtx | \
- sed -e 's/^ *%%*//' | \
- sed -e 's/\\-//g' -e 's/|[^|]*|/ /g' | \
- $(SPELLCHECK) $(SPELLCHECK_FLAGS) list | \
- sort | uniq | fmt | sed -e 's/ / /g'
+ @printf '\n\ntool check passed.\n'
.PHONY: update-docs
@@ -142,8 +150,12 @@ all: Make everything there is to make. This is the .DEFAULT_GOAL.
clean: Remove some products.
-cpio: In the parent directory create a cpio(1) archive of the
- project source files whose name is time-stamped.
+dist: Create a tar file of the project source files and the PDF
+ documentation files. The archive is in the form and has a
+ name that CTAN prefers.
+
+distcheck: Create a tar file of the project source files, unpack it in
+ a different location and build all targets.
doc: Build "synthslant.pdf" the Syntslant documentation.
@@ -160,15 +172,22 @@ pdf: Build doc: and gauge:.
sty: Only extract "synthslant.sty" from "synthslant.dtx". This
operation requires LaTeX (-> $(LATEX)) and nothing else.
-tar: In the parent directory create a tar(1) file of the project
- source files whose name is time-stamped.
+test: Run some tests. Currently only compiles a minimal document
+ to check whether "synthslant.sty" contains all the necessary
+ \RequirePackage directives.
tool-check: Check whether some of the required tools to build the
project are available.
+update-docs: Copy the documentation files into the "docs"
+ sub-directory.
+
Selected Implicit Rules
-----------------------
+%: %.html
+ Convert HTML to plain text. Requires w3m(1).
+
%.dvi %.pdf: %.dtx
Run LaTeX or pdfLaTeX (-> $(LATEX)) on dtx source until a
fix-point is reached.
@@ -177,6 +196,9 @@ Selected Implicit Rules
Run LaTeX or pdfLaTeX (-> $(LATEX)) on tex file until a
fix-point is reached.
+%.html: %.md
+ Convert markdown to HTML. Requires markdown(1).
+
%.mx.pdf: %.dvi
Convert dvi to pdf via dvipdfmx (-> $(DVIPDFMX)).
@@ -187,9 +209,9 @@ Selected Implicit Rules
Some Explicit Rules
-------------------
README.html:
- Convert "README.md" to html. Requires markdown(1).
+ Convert "README.md" to html.
-README: Convert "README.html" to plain text. Requires w3m(1).
+README: Convert "README.html" to plain text.
endef
@@ -205,8 +227,8 @@ help:
define MAKE_INDEX_AND_GLOSSARY
sed -e '/@/d' < $*.idx > ,$*.idx; mv ,$*.idx $*.idx; \
-$(MAKEINDEX) $(MAKEINDEX_FLAGS) -s synthslant.ist -t $*.ilg -o $*.ind $*.idx; \
-$(MAKEINDEX) $(MAKEINDEX_FLAGS) -s gglo.ist -t $*.glg -o $*.gls $*.glo
+$(MAKEINDEX) $(MAKEINDEX_FLAGS) -s $*.ist -t $*.ilg -o $*.ind $*.idx; \
+$(MAKEINDEX) $(MAKEINDEX_FLAGS) -s $*.gst -t $*.glg -o $*.gls $*.glo
endef
define GREP_LATEX_WARNINGS
@@ -250,7 +272,13 @@ endef
%.mps: %.mp
- $(METAPOST) -s 'outputtemplate="%j.mps"' $(METAPOST_FLAGS) $<
+ $(METAPOST) -s 'outputtemplate="%j.mps"' $(METAPOST_FLAGS) $< || { \
+ printf '=== $*.log ===\n'; \
+ cat $*.log; \
+ printf '\n\n=== mpxerr.log ===\n'; \
+ cat mpxerr.log; \
+ false; \
+ } 1>&2
%.eps: %.png
@@ -265,7 +293,8 @@ endef
-synthslant.sty synthslant.ist synthslant-gauge.tex \
+synthslant.sty synthslant.ist \
+synthslant-gauge.tex synthslant-minimal-test.tex \
compare-with-the-gimp.png.base64 shear-transform.mp title.mp: \
synthslant.ins synthslant.dtx
$(LATEX) $(LATEX_FLAGS) $<
diff --git a/macros/latex/contrib/synthslant/README.md b/macros/latex/contrib/synthslant/README.md
index 1b1c719189..efc20fd37e 100644
--- a/macros/latex/contrib/synthslant/README.md
+++ b/macros/latex/contrib/synthslant/README.md
@@ -1,3 +1,6 @@
+![distcheck status](https://github.com/cspiel/synthslant/actions/workflows/distcheck.yml/badge.svg)
+
+
# SynthSlant &ndash; Synthetic slanting of glyphs
LaTeX package `synthslant` slants short pieces of text to the right or to the left.
diff --git a/macros/latex/contrib/synthslant/RELEASE-HOWTO.md b/macros/latex/contrib/synthslant/RELEASE-HOWTO.md
deleted file mode 100644
index 13435ef66d..0000000000
--- a/macros/latex/contrib/synthslant/RELEASE-HOWTO.md
+++ /dev/null
@@ -1,51 +0,0 @@
-# How to prepare a new release
-
-... and not make too many mistakes.
-
-
-1. Check that the work-area is clean with respect to **git**-tracked
- files.
-
- ``` git status ```
-
-1. Update the date stamp of `\ProvidesPackage`.
-
-1. (Temporarily) Zero the `\overfullrule`s of the documentation and
- the example files.
-
-1. Thoroughly clean the work-area:
-
- ```make maintainer-clean```
-
-1. Rebuild:
-
- ```make```
-
-1. Check that all _*.sty_ and _*.pdf_ files are in good shape.
-
-1. Push the documentation files created in the previous step down into
- the *docs* directory:
-
- ```make update-docs```
-
-1. Undo the `\overfullrule` change.
-
-1. Commit the changes:
-
- ```
- git add .
- ```
-
- and finally
-
- ```
- git commit
- ```
-
-1. Tag the commit with the version string of `\ProvidesPackage`:
-
- ```git tag v1.23```
-
-1. Push the changes to the public repository:
-
- ```git push origin master --tags```
diff --git a/macros/latex/contrib/synthslant/docs/index.md b/macros/latex/contrib/synthslant/docs/index.md
deleted file mode 100644
index c8c312f388..0000000000
--- a/macros/latex/contrib/synthslant/docs/index.md
+++ /dev/null
@@ -1,4 +0,0 @@
-### Package Documentation
-
-- Comprehensive `synthslant` documentation: [synthslant.pdf](https://cspiel.github.io/synthslant/synthslant.pdf)
-- `synthslant` test and demonstration: [synthslant-gauge.pdf](https://cspiel.github.io/synthslant/synthslant-gauge.pdf)
diff --git a/macros/latex/contrib/synthslant/docs/synthslant-gauge.pdf b/macros/latex/contrib/synthslant/docs/synthslant-gauge.pdf
index 425e7944ef..762c1e00a0 100644
--- a/macros/latex/contrib/synthslant/docs/synthslant-gauge.pdf
+++ b/macros/latex/contrib/synthslant/docs/synthslant-gauge.pdf
Binary files differ
diff --git a/macros/latex/contrib/synthslant/docs/synthslant.pdf b/macros/latex/contrib/synthslant/docs/synthslant.pdf
index 9b034b86c3..555101ee3c 100644
--- a/macros/latex/contrib/synthslant/docs/synthslant.pdf
+++ b/macros/latex/contrib/synthslant/docs/synthslant.pdf
Binary files differ
diff --git a/macros/latex/contrib/synthslant/synthslant.dtx b/macros/latex/contrib/synthslant/synthslant.dtx
index f5424cf7fa..6c052c64a7 100644
--- a/macros/latex/contrib/synthslant/synthslant.dtx
+++ b/macros/latex/contrib/synthslant/synthslant.dtx
@@ -3,11 +3,11 @@
% Copyright (C) 2024 by Ch. L. Spiel
%
% This work may be distributed and/or modified under the conditions
-% of the LaTeX Project Public License, either version 1.3 of this
+% of the LaTeX Project Public License, either version 1.3c of this
% license or (at your option) any later version. The latest version
% of this license is in
-% http://www.latex-project.org/lppl.txt
-% and version 1.3 or later is part of all distributions of LaTeX
+% httpc://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions of LaTeX
% version 2003/12/01 or later.
%
% \fi
@@ -26,7 +26,6 @@
\PassOptionsToClass{a4paper}{article}
\PassOptionsToPackage{hyperfootnotes=false}{hyperref}
-\PassOptionsToPackage{charter, scale=1.06}{newtxmath}
\PassOptionsToPackage{dvipsnames}{xcolor}
\usepackage{amsmath}
@@ -52,6 +51,7 @@
\newcommand*{\textls}[2][]{#2}
\fi
\usepackage{needspace}
+\usepackage[section]{placeins}
\usepackage{ragged2e}
\usepackage{setspace}
\usepackage[slant=.18, negslant=-.16]{synthslant}
@@ -65,7 +65,7 @@
\usepackage[default, lining, proportional, regular, semibold]{sourceserifpro}
\usepackage[lining, proportional, regular, semibold]{sourcesanspro}
\usepackage[lining, regular]{sourcecodepro}
-\usepackage[xcharter]{newtxmath}
+\usepackage[scaled=1.08, uprightscript, xcharter]{newtxmath}
\setstretch{1.04166}% \baselineskip: 12.5pt
@@ -74,15 +74,15 @@
\newcommand*{\fontclan}{\expandafter\@get@fontclan\f@family\relax}
\makeatother
-\newcommand*{\proportionalliningfigures}{\fontfamily{\fontclan-LF}\selectfont}
-\newcommand*{\proportionaloldstylefigures}{\fontfamily{\fontclan-OsF}\selectfont}
-\newcommand*{\tabularliningfigures}{\fontfamily{\fontclan-TLF}\selectfont}
-\newcommand*{\tabularoldstylefigures}{\fontfamily{\fontclan-TOsF}\selectfont}
+\DeclareRobustCommand{\proportionalliningfigures}{\fontfamily{\fontclan-LF}\selectfont}
+\DeclareRobustCommand{\proportionaloldstylefigures}{\fontfamily{\fontclan-OsF}\selectfont}
+\DeclareRobustCommand{\tabularliningfigures}{\fontfamily{\fontclan-TLF}\selectfont}
+\DeclareRobustCommand{\tabularoldstylefigures}{\fontfamily{\fontclan-TOsF}\selectfont}
-\newcommand*{\textdenominator}[1]{{\fontfamily{\fontclan-Dnom}\selectfont #1}}
-\newcommand*{\textinferior}[1]{{\fontfamily{\fontclan-Inf}\selectfont #1}}
-\newcommand*{\textnumerator}[1]{{\fontfamily{\fontclan-Numr}\selectfont #1}}
-\newcommand*{\textsuperior}[1]{{\fontfamily{\fontclan-Sup}\selectfont #1}}
+\DeclareRobustCommand{\textdenominator}[1]{{\fontfamily{\fontclan-Dnom}\selectfont #1}}
+\DeclareRobustCommand{\textinferior}[1]{{\fontfamily{\fontclan-Inf}\selectfont #1}}
+\DeclareRobustCommand{\textnumerator}[1]{{\fontfamily{\fontclan-Numr}\selectfont #1}}
+\DeclareRobustCommand{\textsuperior}[1]{{\fontfamily{\fontclan-Sup}\selectfont #1}}
\newcommand*{\nativetextfraction}[2]
{\mbox{\textnumerator{#1}\textfractionsolidus\textdenominator{#2}}}
@@ -92,21 +92,23 @@
\newenvironment*{tabfigures}
{\edef\rmdefault{\fontclan-T\sourceserifpro@figurestyle}\rm\ignorespaces}
{\ignorespacesafterend}
-
-\newcommand*{\elseries}{\def\mdseries@rm{el}\def\mdseries@sf{el}\def\mdseries@tt{el}}
-\newcommand*{\textel}[1]{{\elseries\textmd{#1}}}
-\newcommand*{\lseries}{\def\mdseries@rm{l}\def\mdseries@sf{l}\def\mdseries@tt{l}}
-\newcommand*{\textl}[1]{{\lseries\textmd{#1}}}
-%%--\newcommand*{\mdseries}{\def\mdseries@rm{m}\def\mdseries@sf{m}\def\mdseries@tt{m}}
-%%--\newcommand*{\textmd}[1]{{\mdseries\textmd{#1}}}
-\newcommand*{\sbseries}{\def\bfseries@rm{sb}\def\bfseries@sf{sb}\def\bfseries@tt{sb}}
-\newcommand*{\textsb}[1]{{\sbseries\textbf{#1}}}
-\newcommand*{\bseries}{\def\bfseries@rm{b}\def\bfseries@sf{b}\def\bfseries@tt{b}}
-\newcommand*{\textb}[1]{{\bseries\textbf{#1}}}
-\newcommand*{\ebseries}{\def\bfseries@rm{k}\def\bfseries@sf{eb}\def\bfseries@tt{k}}
-\newcommand*{\texteb}[1]{{\ebseries\textbf{#1}}}
\makeatother
+\DeclareRobustCommand{\elseries}{\fontseries{el}\selectfont}
+\DeclareTextFontCommand{\textel}{\elseries}
+\DeclareRobustCommand{\lseries}{\fontseries{l}\selectfont}
+\DeclareTextFontCommand{\textl}{\lseries}
+%%--\DeclareRobustCommand{\mdseries}{\fontseries{m}\selectfont}
+%%--\DeclareTextFontCommand{\textmd}{\mdseries}
+\DeclareRobustCommand{\sbseries}{\fontseries{sb}\selectfont}
+\DeclareTextFontCommand{\textsb}{\sbseries}
+\DeclareRobustCommand{\bseries}{\fontseries{b}\selectfont}
+\DeclareTextFontCommand{\textb}{\bseries}
+\DeclareRobustCommand{\ebseries}{\fontseries{eb}\selectfont}
+\DeclareTextFontCommand{\texteb}{\ebseries}
+\DeclareRobustCommand{\ubseries}{\fontseries{k}\selectfont}
+\DeclareTextFontCommand{\textub}{\ubseries}
+
\usepackage{cleveref}
@@ -119,7 +121,7 @@
citecolor = blue,
colorlinks = true,
linkcolor = blue,
- linktocpage = false,
+ linktocpage = true,
pdfauthor={Dr. Christoph L. Spiel},
pdfcreationdate={\pdffiledate},
pdfkeywords={LaTeX, font, italic, oblique, slant, upright},
@@ -131,9 +133,94 @@
}
+\SetExtraKerning[context=drop-left-sidebearing, name=source-code-normal, unit=space]
+ {font={T1/SourceCodePro-LF/m/n/44, T1/SourceCodePro-TLF/m/n/44}}
+ {
+ 1={-150,},
+ 2={-120,},
+ 3={-120,},
+ 4={-40,},
+ A={-100,},
+ B={-170,}
+ }
+
+\newlength{\sectiontocindent}
+\newlength{\sectionnumberwidth}
+\newlength{\subsectiontocindent}
+\newlength{\subsectionnumberwidth}
+\newlength{\subsubsectiontocindent}
+\newlength{\subsubsectionnumberwidth}
+
+\setlength{\sectiontocindent}{0pt}
+\setlength{\sectionnumberwidth}{40pt}
+\setlength{\subsectiontocindent}{40pt}
+\setlength{\subsectionnumberwidth}{25pt}
+\setlength{\subsubsectiontocindent}{65pt}
+\setlength{\subsubsectionnumberwidth}{30pt}
+
\makeatletter
-\renewcommand*{\@dotsep}{10000} % suppress leaders
-\patchcmd{\@dottedtocline}{\normalfont}{\bfseries}{\relax}{\PatchingFailed}
+\renewcommand*{\l@section}[2]
+ {\ifnum \c@tocdepth >\z@
+ \addpenalty\@secpenalty
+ \addvspace{1.0em \@plus\p@}%
+ \setlength{\@tempdima}{\sectionnumberwidth}%
+ \begingroup
+ \def\numberline##1{\hb@xt@\@tempdima{%
+ \tt\lseries
+ \fontsize{44}{0}\selectfont
+ \microtypecontext{kerning=drop-left-sidebearing}%
+ \iffalse\raisebox{-30pt}[0pt][0pt]{\rule{0.1pt}{40pt}}\fi
+ \textcolor{customred3}{##1}%
+ \hfil}}%
+ \parindent \z@
+ \rightskip \@pnumwidth
+ \parfillskip -\@pnumwidth
+ \leavevmode
+ \advance\leftskip\@tempdima
+ \hskip -\leftskip
+ \bfseries
+ \iffalse
+ \nobreak\hfil
+ \nobreak\hb@xt@\@pnumwidth{\hss #2\kern-\p@\kern\p@}%
+ \else
+ {\sffamily\large #1}\quad
+ {#2}\hfil\hbox{}
+ \fi
+ \par
+ \endgroup
+ \fi}
+
+\renewcommand*{\@dottedtocline}[5]
+ {\ifnum #1>\c@tocdepth
+ \else
+ \vskip \z@ \@plus.2\p@
+ \begingroup
+ \leftskip #2\relax
+ \rightskip \@tocrmarg
+ \parfillskip -\rightskip
+ \parindent #2\relax\@afterindenttrue
+ \interlinepenalty\@M
+ \leavevmode
+ \@tempdima #3\relax
+ \advance\leftskip \@tempdima
+ \null\nobreak
+ \hskip -\leftskip
+ {#4}\nobreak
+ \iffalse
+ \leaders\hbox{$\m@th \mkern \@dotsep mu\hbox{.}\mkern \@dotsep mu$}\hfill
+ \nobreak\hb@xt@\@pnumwidth{\hfil\normalfont \normalcolor #5\kern-\p@\kern\p@}%
+ \else
+ \hbox{\quad\normalfont\bfseries #5}\nobreak\hfill\hbox{}%
+ \fi
+ \par
+ \endgroup
+ \fi}
+
+\renewcommand*{\l@subsection}{\@dottedtocline{2}{\subsectiontocindent}{\subsectionnumberwidth}}
+\renewcommand*{\l@subsubsection}{\@dottedtocline{3}{\subsubsectiontocindent}{\subsubsectionnumberwidth}}
+\newrobustcmd*{\tocsquashedsubsections}
+ {\def\l@subsection{\@dottedtocline{2}{0pt}{\subsubsectionnumberwidth}}%
+ \def\l@subsubsection{\@dottedtocline{3}{0pt}{\subsubsectionnumberwidth}}}
\makeatother
@@ -156,8 +243,10 @@
\newcommand*{\floatcaptionwidth}{.79\textwidth}
-\captionsetup[figure]{font=small, justification=centerlast, labelfont=sc, width=\floatcaptionwidth}
-\captionsetup[table]{font=small, justification=centerlast, labelfont=sc, width=\floatcaptionwidth}
+\captionsetup[figure]{font=small, justification=centerlast,
+ labelfont=sc, width=\floatcaptionwidth}
+\captionsetup[table]{font=small, justification=centerlast,
+ labelfont=sc, width=\floatcaptionwidth}
\newsavebox{\listlabelbox}
@@ -188,13 +277,15 @@
\fancypagestyle{pagenumberonly}{
+ \fancyhf{}
\fancyhead[L]{}
\fancyhead[R]{\thepage}
}
-\pagestyle{fancy}
-\fancyhf{}
-\fancyhead[L]{\rightmark}
-\fancyhead[R]{\textsf{\thepage}}
+\fancypagestyle{fancy}{
+ \fancyhf{}
+ \fancyhead[L]{\rightmark}
+ \fancyhead[R]{\thepage}
+}
\newcommand*{\resetfancyhead}
{\fancyhead[L]{\textsf{\textsc{\textls[20]{\nouppercase\rightmark}}}}}
@@ -236,12 +327,9 @@
\pretocmd{\DescribeMacro}{\needspace{25pt}}{\relax}{\PrependingFailed}
-\setcounter{IndexColumns}{2}
-
-
\setlength{\columnsep}{20pt}
\setlength{\skip\footins}{25pt}
-\setlength{\overfullrule}{3pt}
+\setlength{\overfullrule}{0pt}
@@ -273,15 +361,19 @@
\newcommand*{\citenum}[1]{\@nameuse{b@#1}}
\makeatother
-\def\code#1{\texttt{#1}}
+\renewcommand*{\code}[1]{\texttt{#1}}
+
+\newcommand*{\codelineindicator}{\mbox{\small$\mathscr{l}$}}
\newrobustcmd*{\command}[1]{\mbox{\textbf{#1}}}
\newcommand*{\degree}{{}^\circ}
+\newcommand*{\detoxindex}[1]{\index{\detokenize{#1}}}
+
\newcommand*{\doublequotes}[1]{\guillemetright\kern-.03333em #1\guillemetleft}
-\newcommand*{\dumpmacro}[1]{\texttt{\detokenize\expandafter{#1}}}
+\newcommand*{\dumpmacro}[1]{\texttt{\detokenize\expandafter{#1}\unskip}}
\newcommand*{\filesystem}[1]{\mbox{\textit{#1\/}}}
@@ -295,12 +387,48 @@
\renewcommand*{\fps@table}{htbp}
\makeatother
+\apptocmd{\GlossaryParms}
+ {\RaggedRight\normalsize}
+ {\relax}
+ {\AppendingFailed}
+
+\let\oldhdclindex=\hdclindex
+\renewcommand*{\hdclindex}[2]
+ {\ifstrequal{#2}{code}
+ {\oldhdclindex{#1}{codeidx}}
+ {\oldhdclindex{#1}{#2}}}
+
+\let\oldhdpindex=\hdpindex
+\renewcommand*{\hdpindex}[2]{\textbf{\oldhdpindex{#1}{#2}}}
+
\newcommand*{\hollowrectangle}[2]
{\setlength{\fboxrule}{.5pt}%
\setlength{\fboxsep}{0pt}%
\framebox{\rule{#1}{0pt}\rule{0pt}{#2}}}
\newcommand*{\hollowsquare}[1]{\hollowrectangle{#1}{#1}}
+\apptocmd{\IndexParms}
+ {\RaggedRight\small}
+ {\relax}
+ {\AppendingFailed}
+
+\makeatletter
+\ExplSyntaxOn
+\apptocmd{\index@prologue}
+ {\legacy_if:nTF {codeline@index}
+ {We\space prefix\space all\space references\space
+ to\space code\space lines\space with~\singlequotes{\codelineindicator}.}
+ {}}
+ {\relax}
+ {\AppendingFailed}
+
+\newcommand*{\linenumberdecoration}
+ {\legacy_if:nTF {codeline@index}
+ {\codelineindicator}
+ {}}
+\ExplSyntaxOff
+\makeatother
+
\newcommand*{\logmacro}[1]
{\ifdef{#1}
{\message{^^JDump of macro \string#1 follows.^^J}
@@ -314,6 +442,24 @@
\begin{fullwidth}}
{\end{fullwidth}}
+
+\let\originalmulticols=\multicols
+\let\endoriginalmulticols=\endmulticols
+\RenewDocumentEnvironment{multicols}{m o o}
+ {\ifnum #1=1
+ \IfNoValueTF{#2}{\relax}{#2}%
+ \else
+ \IfNoValueTF{#2}
+ {\originalmulticols{#1}}
+ {\originalmulticols{#1}[#2]}%
+ \fi}
+ {\ifnum #1=1
+ \relax
+ \else
+ \endoriginalmulticols
+ \fi}
+
+
\newenvironment*{multilinecodeexample}
{\begin{quote}\tt
\def\indent{\mbox{}\hspace{25pt}}%
@@ -409,7 +555,7 @@
\newenvironment*{specialcodesection}[1]
{\Needspace{4\baselineskip}%
\begin{tcolorbox}[colback=white, colframe=\markercolor,
- bottomrule=0pt, leftrule=5pt, rightrule=0pt, toprule=0pt]
+ bottomrule=.5pt, leftrule=5pt, rightrule=.5pt, toprule=.5pt]
\sffamily
\begin{list}
{\specialcodesectionheading{#1}}
@@ -464,6 +610,12 @@
\newcommand*{\tikzlogo}{\textrm{Ti\textit{k\/}Z}}
+\newcommand*{\toccontinuesonnextpage}
+ {\addtocontents{toc}{\par
+ \bigskip
+ \hfill\textit{Table of Contents continued on next page.}\par
+ \clearpage}}
+
\newcommand*{\topstrut}{\rule{0pt}{1.3em}}
\newcommand*{\transpose}[1]{{#1}^{\text{T}}}
@@ -477,6 +629,12 @@
\copy0\kern\ttellipsisgap
\box0\kern\ttellipsisgap}
+\newcommand*{\unmarkedfntext}[1]
+ {{\def\thefootnote{}\footnote{#1}%
+ \addtocounter{footnote}{-1}}}
+
+\newcommand*{\userman}[1]{\textbf{\hyperpage{#1}}}
+
\newcommand*{\visualpar}{\textcolor{\markercolor}{\P}\linebreak[1]\enspace}
\newenvironment*{widecodeexample}
@@ -491,6 +649,15 @@
\hyphenation{% https://hyphenateit.com/en-us
+ neg-slant-context
+ neg-slant-environment
+ slant-context
+ slant-environment
+ synth-neg-slant
+ synth-slant
+ synth-slant-box
+ text-synth-slant
+ text-synth-upright-italic
}
@@ -515,12 +682,33 @@
%</driver>
%<*index-style>
actual '='
+delim_0 "\\nobreak\\enspace"
+delim_1 "\\nobreak\\enspace"
+delim_2 "\\nobreak\\enspace"
heading_prefix "\\pagebreak[3]\\smallskip\n\n{\\sffamily\\bfseries\\large "
heading_suffix "}\\nopagebreak\n"
headings_flag 1
level '>'
+line_max 65536
quote '!'
%</index-style>
+%<*changes-style>
+actual '='
+delim_0 "\\nobreak\\enspace"
+delim_1 "\\nobreak\\enspace"
+delim_2 "\\nobreak\\enspace"
+heading_prefix "\\pagebreak[3]\\smallskip\n\n{\\sffamily\\bfseries\\large "
+heading_suffix "}\\nopagebreak\n"
+headings_flag 0
+item_x1 "\\efill\n\\subitem "
+item_x2 "\\ "
+keyword "\\glossaryentry"
+level '>'
+line_max 65536
+postamble "\n\\end{theglossary}\n"
+preamble "\\begin{theglossary}\n \\makeatletter\\scan@allowedfalse"
+quote '!'
+%</changes-style>
% \fi
%
%
@@ -530,7 +718,7 @@ quote '!'
% \DoNotIndex{\edef,\else}
% \DoNotIndex{\endgroup,\endmicrotypecontext,\endnegslantenvironment,\endslantenvironment}
% \DoNotIndex{\expandafter,\ExplSyntaxOff,\ExplSyntaxOn}
-% \DoNotIndex{\fi,\font,\fontdimen,\fontspec,\fp}
+% \DoNotIndex{\fi,\font,\fontdimen,\fontspec,\fp,\fpeval}
% \DoNotIndex{\hbox,\hskip}
% \DoNotIndex{\ifcase,\ifcsdef,\ifdefined,\ifluatex,\ifmmode,\ifnum,\ifpdftex,\ifx,\itshape}
% \DoNotIndex{\kern}
@@ -540,16 +728,17 @@ quote '!'
% \DoNotIndex{\newbox,\newcommand,\NewDocumentCommand,\NewDocumentEnvironment,\newenvironment,\newrobustcmd}
% \DoNotIndex{\node,\nolinebreak}
% \DoNotIndex{\or}
-% \DoNotIndex{\PackageInfo,\PackageWarning,\ProcessOptionsX,\providecommand,\ProvidesPackage}
+% \DoNotIndex{\PackageError,\PackageInfo,\PackageWarning,\ProcessOptionsX,\providecommand,\ProvidesPackage}
% \DoNotIndex{\pdfoutput,\pdfrestore,\pdfsave,\pdfsetmatrix,\pstilt}
% \DoNotIndex{\relax,\RequirePackage}
-% \DoNotIndex{\sbox,\skip,\space}
+% \DoNotIndex{\sbox,\skip,\space,\string}
% \DoNotIndex{\tikz}
% \DoNotIndex{\upshape,\usebox}
% \DoNotIndex{\wd}
+% \DoNotIndex{\xdef}
%
%
-% \changes{v0.1}{2024-2-12}{Initial version}
+% \changes{v0.1}{2024-2-12}{Initial version.}
%
%
% \pagenumbering{roman}
@@ -636,39 +825,83 @@ end
% \footnotesize
% \noindent
% This package is copyright \textcopyright~2024 Ch.~L.~Spiel. It may be distributed and/or
-% modified under the conditions of the \LaTeX{} Project Public License \acronym{(LPPL)},
-% either version~1.3c of this license or --~at your option~-- any later version. This work
-% has the \acronym{LPPL} maintenance status \doublequotes{author-maintained}.\par
+% modified under the conditions of the \href{https://www.latex-project.org/lppl.txt}{\LaTeX{}
+% Project Public License} \acronym{(LPPL)}, either version~1.3c of this license or --~at your
+% option~-- any later version. This work has the \acronym{LPPL} maintenance status
+% \doublequotes{author-maintained}.\par
% \endgroup
%
%
% \clearpage
-% \thispagestyle{pagenumberonly}
-% \tableofcontents
+% \pagestyle{pagenumberonly}
%
-% \vspace{\fill}
-%
-% \begingroup
-% \footnotesize
-% \singlespacing
-% \noindent
-% The font samples~\singlequotes{fga} on the title page
-% were generated with the help of \MP{} using \doublequotes{\acronym{URW} Palladio~L}
-% in styles~\singlequotes{roman} and~\singlequotes{italic}.
-% The affine transformations were \code{slanted .2} for the slanted roman and
-% \code{slanted -.2} for the upright italics.\par
-% \endgroup
+% \unmarkedfntext{The font samples~\singlequotes{fga} on the title page were generated with the
+% help of \MP{} using \doublequotes{\acronym{URW} Palladio} in styles~\singlequotes{roman}
+% and~\singlequotes{italic}. The affine transformations were\enspace \code{slanted
+% .2}\enspace for the slanted roman and\enspace \code{slanted -.2}\enspace for the upright
+% italics.}
+% \tableofcontents
%
%
% \clearpage
-% \thispagestyle{pagenumberonly}
% \listoftables
% \bigskip
% \listoffigures
%
%
% \clearpage
+% \phantomsection
+% \addcontentsline{toc}{section}{\numberline{}Quick Reference}
+% \addtocontents{toc}{\medskip}
+% \section*{Quick Reference}
+%
+% Alphabetically sorted list of all user macros and environments defined by
+% package~\packagename{synthslant}. The list of all package options can be found on
+% \cpageref{sec:package-options} and \pageref{secend:package-options}. The
+% \hyperref[sec:index]{Index} on pages~\pageref{sec:index} to~\pageref{secend:index} may
+% provide some more detailed insights.
+%
+% \begin{list}{}{\itemindent=-\leftmargin \itemsep=4.5pt plus 2pt minus 1pt}
+% \NewDocumentCommand{\qritem}{m m O{}}
+% {\item
+% \hyperref[#1]{#2}#3\relax
+% \def\qrref{\cpageref{#1}}\par\ignorespaces}
+% \qritem{syn:negslantcontext}{\cs{negslantcontext}}
+% Name of the \packagename{microtype} context used when typesetting backward slanted
+% text~(\qrref)
+%
+% \qritem{syn:negslantenvironment}{\code{negslantenvironment}}
+% Wrapper around \cs{synthslantbox} when slanting backward with
+% \cs{textsynthuprightitalic}~(\qrref)
+%
+% \qritem{syn:slantcontext}{\cs{slantcontext}}
+% Name of the \packagename{microtype} context used when typesetting forward slanted
+% text~(\cpageref{syn:slantcontext})
+%
+% \qritem{syn:slantenvironment}{\code{slantenvironment}}
+% Wrapper around \cs{synthslantbox} when slanting forward with
+% \cs{textsynthslant}~(\qrref)
+%
+% \qritem{syn:synthnegslant}{\cs{synthnegslant}}
+% Slant value used by \cs{textsynthuprightitalic}~(\qrref)
+%
+% \qritem{syn:synthslantbox}{\cs{synthslantbox}}[\marg{slant}\marg{text}]
+% Slant \meta{text} (forward or backward) with \meta{slant}~(\qrref)
+%
+% \qritem{syn:synthslant}{\cs{synthslant}}
+% Slant value used by \cs{textsynthslant}~(\qrref)
+%
+% \qritem{syn:textsynthslant}{\cs{textsynthslant}}[\marg{text}]
+% Forward slant upright glyphs~(\qrref)
+%
+% \qritem{syn:textsynthuprightitalic}{\cs{textsynthuprightitalic}}[\marg{text}]
+% Backward slant italics or oblique glyphs~(\qrref)
+% \end{list}
+%
+%
+% \clearpage
% \pagenumbering{arabic}
+% \pagestyle{fancy}
% \section{Introduction}\label{sec:introduction}
%
% The \packagename{synthslant} package provides a translator (e.\,g.~\LaTeX, \pdfLaTeX, or
@@ -688,8 +921,8 @@ end
%
% \subsection{Appeal for Artificially Slanted Type}\label{sec:appleal-for-artificially-slanted}
%
-% Artificially slanted type have a bad reputation. Whenever there is an order to round up the
-% usual font suspects synthetically slanted, bolded\footnote{Package~\packagename{amsbsy}
+% Artificially slanted type have a lousy reputation. Whenever there is an order to round up
+% the usual font suspects synthetically slanted, bolded\footnote{Package~\packagename{amsbsy}
% defines a \doublequotes{Poor Man's Bold} macro~\cs{pmb} that works by
% \singlequotes{overprinting}. The authors of \packagename{amsbsy} recommend to prefer
% package~\packagename{bm} for bold mathematical symbols, though.}, and condensed type along
@@ -699,8 +932,9 @@ end
% condescension for synthetic bold and condensed variants. They spoil the glyphs' outline
% because they do not (and cannot) conserve the necessary proportions. For small-caps the
% problems are somewhat minor and I wonder how far one could get with an
-% \propername{OpenType}~font that supports a \code{size}~axis\index{font>axis>size=\code{size}}
-% as well as an \code{opsz}~axis\index{font>axis>opsz=\code{opsz}} in the necessary ranges to
+% \propername{OpenType}~font that supports a
+% \code{size}~axis\index{font>axis>size=\code{size}|userman} as well as an
+% \code{opsz}~axis\index{font>axis>opsz=\code{opsz}|userman} in the necessary ranges to
% construct convincing small-caps out of the multiple-master font.
%
% In my view artificial slanting keeps much of the font's character intact. In fact one
@@ -741,13 +975,14 @@ end
%
% Some fonts in current \LaTeX{} distributions offer slanted series right out of the box.
% \foreignphrase{Eureka!} In particular the oldest (and once upon a time the only) font family
-% shipping with \TeX, \href{https://tug.org/FontCatalogue/cmrfonts.html}{Computer Modern
-% Roman}\index{font>Computer Modern Roman} --~nowadays member of the \acronym{CM}-Super
-% family~-- is available in a deluge of almost thirty shapes. It covers not just slanted roman
-% or slanted smallcaps but also slanted typewriter and somewhat surprisingly upright italics.
-% Furthermore, the \LaTeXe{} font selection scheme provisions \singlequotes{\code{sl}} for
-% slanted shapes and \singlequotes{\code{ui}} for upright italics~\cite{fntguide}. The former
-% is accompanied by the macros~\cs{slshape} and~\cs{textsl}.
+% shipping with \TeX, \href{https://tug.org/FontCatalogue/cmrfonts.html}{\acronym{CM}
+% Roman}\index{font>typeface>CM Roman=\acronym{CM} Roman|userman} --~nowadays member of the
+% \acronym{CM}-Super family~-- is available in a deluge of almost thirty shapes. It covers not
+% just slanted roman or slanted smallcaps but also slanted typewriter and somewhat surprisingly
+% upright italics. Furthermore, the \LaTeXe{} font selection scheme provisions
+% \singlequotes{\code{sl}} for slanted shapes and \singlequotes{\code{ui}} for upright
+% italics~\cite{fntguide}. The former is accompanied by the macros~\cs{slshape}
+% and~\cs{textsl}.
%
% \begin{wraptable}{r}{.382\textwidth}
% \renewcommand*{\floatcaptionwidth}{\textwidth}
@@ -759,15 +994,15 @@ end
%
% \begin{tabular}{@{}l@{}}
% \toprule
-% Font Name \\
+% Font \\
% \midrule
-% Cairo\index{font>Cairo} \\
-% Commissioner\index{font>Commissioner} \\
-% Geologica\index{font>Geologica} \\
-% Gluten\index{font>Gluten} \\
-% Inter\index{font>Inter} \\
-% Recursive\index{font>Recursive} \\
-% Roboto Flex\index{font>Roboto Flex} \\
+% Cairo\index{font>typeface>Cairo|userman} \\
+% Commissioner\index{font>typeface>Commissioner|userman} \\
+% Geologica\index{font>typeface>Geologica|userman} \\
+% Gluten\index{font>typeface>Gluten|userman} \\
+% Inter\index{font>typeface>Inter|userman} \\
+% Recursive\index{font>typeface>Recursive|userman} \\
+% Roboto Flex\index{font>typeface>Roboto Flex|userman} \\
% \bottomrule
% \end{tabular}
% \end{wraptable}
@@ -781,8 +1016,9 @@ end
% \code{slnt}-axis} or fonts with an \href{https://v-fonts.com/tags/C5}{unusual variation} at
% \href{https://v-fonts.com/}{Variable Fonts}.} that offer a slant-axis\footnote{The
% registered axis is called \code{slnt} and it is not to be confused with the
-% \code{ital}~axis.}\index{font>axis>slant=\code{slant}}\index{font>axis>ital=\code{ital}} that
-% can be controlled with \packagename{fontspec}'s\index{package>\packagename{fontspec}}
+% \code{ital}~axis.}\index{font>axis>slant=\code{slant}|userman}\index{font>axis>ital=\code{ital}|userman}
+% that can be controlled with
+% \packagename{fontspec}'s\index{package>fontspec=\packagename{fontspec}|userman}
% \code{Slant}\footnote{Since \packagename{fontspec} version~2.9a as of 2024/2/13.}~key and
% \cref{tab:slanted-series-fonts} for a rather incomplete list of fonts that are shipped with
% slanted shapes. For these fonts \packagename{synthslant} is largely superfluous unless
@@ -801,35 +1037,35 @@ end
%
% \begin{tabular}[t]{@{}p{12em}@{}}
% \toprule
-% Font Name \\
+% Font \\
% \midrule
-% Arvo\index{font>Arvo} \\
-% Computer Modern Roman\index{font>Computer Modern Roman} \\
-% Domitian\index{font>Domitian} \\
-% Droid Serif\index{font>Droid Serif} \\
-% Erewhon\index{font>Erewhon} \\
-% Extended Charter\index{font>Extended Charter} \\
-% \acronym{GFS} Artemisia\index{font>GFS Artemisia=\acronym{GFS} Artemisia} \\
-% \acronym{GFS} Bodoni\index{font>GFS Bodoni=\acronym{GFS} Bodoni} \\
-% \acronym{GFS} Didot\index{font>GFSDidot=\acronym{GFS} Didot} \\
+% Arvo\index{font>typeface>Arvo|userman} \\
+% \acronym{CM} Roman\index{font>typeface>CM Roman=\acronym{CM} Roman|userman} \\
+% Domitian\index{font>typeface>Domitian|userman} \\
+% Droid Serif\index{font>typeface>Droid Serif|userman} \\
+% Erewhon\index{font>typeface>Erewhon|userman} \\
+% Extended Charter\index{font>typeface>Extended Charter|userman} \\
+% \acronym{GFS} Artemisia\index{font>typeface>GFS Artemisia=\acronym{GFS} Artemisia|userman} \\
+% \acronym{GFS} Bodoni\index{font>typeface>GFS Bodoni=\acronym{GFS} Bodoni|userman} \\
+% \acronym{GFS} Didot\index{font>typeface>GFS Didot=\acronym{GFS} Didot|userman} \\
% \\
% \bottomrule
% \end{tabular}
% \qquad
% \begin{tabular}[t]{@{}p{12em}@{}}
% \toprule
-% Font Name \\
+% Font \\
% \midrule
-% Cabin\index{font>Cabin} \\
-% Clear Sans\index{font>Clear Sans} \\
-% Cuprum\index{font>Cuprum} \\
-% Fira Sans\index{font>Fira Sans} \\
-% Gandhi Sans\index{font>Gandhi Sans} \\
-% \acronym{Inria} Sans\index{font>Inria Sans=\acronym{Inria} Sans} \\
-% Lato\index{font>Lato}\itshapemark \\
-% Montserrat\index{font>Montserrat} \\
-% \acronym{PT} Sans\index{font>PT Sans=\acronym{PT} Sans} \\
-% Source Sans Pro\index{font>Source Sans Pro} \\
+% Cabin\index{font>typeface>Cabin|userman} \\
+% Clear Sans\index{font>typeface>Clear Sans|userman} \\
+% Cuprum\index{font>typeface>Cuprum|userman} \\
+% Fira Sans\index{font>typeface>Fira Sans|userman} \\
+% Gandhi Sans\index{font>typeface>Gandhi Sans|userman} \\
+% \acronym{Inria} Sans\index{font>typeface>Inria Sans=\acronym{Inria} Sans|userman} \\
+% Lato\itshapemark\index{font>typeface>Lato|userman} \\
+% Montserrat\index{font>typeface>Montserrat|userman} \\
+% \acronym{PT} Sans\index{font>typeface>PT Sans=\acronym{PT} Sans|userman} \\
+% Source Sans Pro\index{font>typeface>Source Sans Pro|userman} \\
% \bottomrule
% \end{tabular}
%
@@ -852,15 +1088,16 @@ end
% \pdfTeX~version~1.40.0~\cite{schroeder:2007}.} With the help of the latter affine
% transformations of arbitrary content can be coded directly by setting the transformation
% matrix. A slight variant of his code is used in this package for the \acronym{PDF}- and
-% \packagename{l3draw}\index{package>\packagename{l3draw}}-slant~engines. The implementations
-% for \pstrickslogo, \tikzlogo{}, and \packagename{fontspec}\packagename{fontspec} are trivial
-% as they build upon shear~functions supplied by the respective packages.
+% \packagename{l3draw}\index{package>l3draw=\packagename{l3draw}|userman}-slant~engines. The
+% implementations for \pstrickslogo, \tikzlogo{}, and
+% \packagename{fontspec}\packagename{fontspec} are trivial as they build upon shear~functions
+% supplied by the respective packages.
%
%
% \subsection{Shear Transformation, Slant, and Angle}\label{sec:shear-transformation}
%
-% \index{slant>operation}
-% \index{shear>transformation}
+% \index{slant>operation|userman}
+% \index{shear>transformation|userman}
% Mathematically the slant operation is a shear transformation, which can be expressed with the
% equation
% \begin{equation}\label{equ:shear-transformation}
@@ -1018,7 +1255,7 @@ end
% For \(\alpha = 0\) the shear matrix becomes the identity matrix. Throughout of
% \packagename{synthslant} we work with the \meta{slant} which is \(\sin \alpha\) in
% \cref{equ:shear-transformation} and avoid converting back and forth to the
-% \index{shear>angle}shear angle~\(\alpha\).\footnote{At least one slant engine currently
+% \index{shear>angle|userman}shear angle~\(\alpha\).\footnote{At least one slant engine currently
% requires such a conversion, namely~\pstrickslogo. The math is hidden from the user, though.}
% Some values for orientation: \mbox{\(\sin 5.74\degree \approx .1\)}, \mbox{\(\sin 11.5\degree
% \approx .2\)}, and \mbox{\(\sin 17.5\degree \approx .3\)}.\footnote{For small
@@ -1038,8 +1275,8 @@ end
% \begin{enumerate}
% \item\label{it:no-italics}
% Generate a slanted serif in the unfortunate situation when a serif font comes without
-% italics such as \singlequotes{\acronym{URW}~Antiqua}\index{font>URW Antiqua=\acronym{URW}
-% Antiqua}.
+% italics such as
+% \singlequotes{\acronym{URW}~Antiqua}\index{font>typeface>URW Antiqua=\acronym{URW} Antiqua|userman}.
%
% Here, the user is relatively free to choose a \meta{slant}, for there are no italics whose
% angle must be matched. \packagename{Synthslant}'s default of~.2 should be a good starting
@@ -1053,8 +1290,8 @@ end
%
% \item\label{it:correct-italics-angle}
% An italics shape that has an excessive slant angle, as
-% e.\,g.~\singlequotes{Libre~Caslon}\index{font>Libre Caslon} may be corrected, i.\,e.,
-% partially un-slanted.
+% e.\,g.~\singlequotes{Libre~Caslon}\index{font>typeface>Libre Caslon|userman} may be corrected,
+% i.\,e., partially un-slanted.
%
% In this case, and generally if a font as a whole needs to be corrected, an alternative
% approach like the one sketched in \cref{sec:alternative} on \cpageref{sec:alternative} may
@@ -1062,16 +1299,16 @@ end
%
% \item\label{it:generate-sole-obliques}
% Generate an oblique sans-serif if a sans-serif font comes without an oblique shape as,
-% e.\,g., \singlequotes{\acronym{URW}~Grotesk}.\index{font>URW Grotesk=\acronym{URW} Grotesk}
+% e.\,g., \singlequotes{\acronym{URW}~Grotesk}.\index{font>typeface>URW Grotesk=\acronym{URW} Grotesk|userman}
%
% \item\label{it:generate-extra-obliques}
% Supply a slanted sans-serif shape for sans-serif fonts with designed, this is \emph{true}
-% obliques as e.\,g.~\singlequotes{Open Sans}.\index{font>Open Sans}
+% obliques as e.\,g.~\singlequotes{Open Sans}.\index{font>typeface>Open Sans|userman}
%
% \item\label{it:slant-typewriter}
% Fixed-width --~also called \singlequotes{typewriter} or \singlequotes{teletype}~-- fonts
-% without obliques (Yes, I am looking at you, Inconsolata!)\index{font>Inconsolata} finally
-% get an oblique shape.
+% without obliques (Yes, I am looking at you, Inconsolata!)\index{font>typeface>Inconsolata|userman}
+% finally get an oblique shape.
%
% \item\label{it:slanted-small-caps}
% Small caps without accompanying italics can be slanted, too.
@@ -1109,7 +1346,9 @@ end
%
% \begingroup
% \newcommand*{\indexpackageoption}[1]
-% {\index{package option>#1=\code{#1}}\index{#1=\code{#1}~(option)}\ignorespaces}
+% {\detoxindex{package option>#1=\code{#1}|userman}%
+% \detoxindex{#1=\code{#1}~(option)|userman}%
+% \ignorespaces}
% \begin{description}
% [before={\let\oldmakelabel=\makelabel
% \renewcommand{\makelabel}[1]
@@ -1130,13 +1369,14 @@ end
%
% \item[|fontspec|]\label{item:fontspec}
% \indexpackageoption{fontspec}
-% Use \packagename{fontspec}\index{package>\packagename{fontspec}} as slanting
-% back-end.\footnote{Requires \filesystem{fontspec.sty.}}
+% Use \packagename{fontspec}\index{package>fontspec=\packagename{fontspec}|userman} as
+% slanting back-end.\footnote{Requires \filesystem{fontspec.sty.}}
%
% \item[|l3draw|]\label{item:l3draw}
% \indexpackageoption{l3draw}
-% Select the \singlequotes{draw} layer\index{package>\packagename{l3draw}} of \LaTeXIII{} as
-% base for the slanting engine.\footnote{This option requires \filesystem{l3draw.sty.}}
+% Select the \singlequotes{draw} layer\index{package>l3draw=\packagename{l3draw}|userman} of
+% \LaTeXIII{} as base for the slanting engine.\footnote{This option requires
+% \filesystem{l3draw.sty.}}
%
% \begin{caution}
% This engine is experimental and the \singlequotes{draw} layer of \LaTeXIII{} itself is
@@ -1148,7 +1388,7 @@ end
% \indexpackageoption{negslant}
% Set the default value for \hyperref[syn:synthnegslant]{\cs{synthnegslant}} \emph{only.}
% The argument \meta{slant-expr} is a floating-point expression. Note that for this option
-% \meta{slant-expr} must evaluate to a non-positive value.
+% \meta{slant-expr} must evaluate to a nonpositive value.
%
% \item[|PDF|, |pdf|]\label{item:pdf}
% \indexpackageoption{pdf}
@@ -1159,14 +1399,14 @@ end
% \indexpackageoption{posslant}
% Set the default value for \hyperref[syn:synthslant]{\cs{synthslant}} \emph{only.} The
% argument \meta{slant-expr} is a floating-point expression. Note that for this option
-% \meta{slant-expr} must evaluate to a non-negative value.
+% \meta{slant-expr} must evaluate to a nonnegative value.
%
% \item[|PS|, |ps|]\label{item:postscript}
-% \index{ps}
-% Use \pstrickslogo\index{package>\packagename{pstricks}} to delegate slanting to the
-% PostScript\index{PostScript} interpreter. Obviously requires \pstrickslogo\footnote{The
-% package actually required is \filesystem{pst-3d.sty.}} and \acronym{DVI}-to-PostScript
-% translation.
+% \index{ps|userman}
+% Use \pstrickslogo\index{package>pstricks=\packagename{pstricks}|userman} to delegate
+% slanting to the PostScript\index{PostScript|userman} interpreter. Obviously requires
+% \pstrickslogo\footnote{The package actually required is \filesystem{pst-3d.sty.}} and
+% \acronym{DVI}-to-PostScript translation.
%
% \begin{caution}
% This engine is still experimental and produces low-quality output! See
@@ -1176,7 +1416,7 @@ end
% \item[|slant=|\meta{slant-expr}]\label{item:slant}
% \indexpackageoption{slant}
% Set the default values for both \hyperref[syn:synthslant]{\cs{synthslant}} and
-% \hyperref[syn:synthnegslant]{\cs{synthnegslant}}, this is, behave as if the two package
+% \hyperref[syn:synthnegslant]{\cs{synthnegslant}}, this is, act as if the two package
% options \(\code{posslant} = \meta{slant-expr}\) and \(\code{negslant} =
% -(\meta{slant-expr})\) have been given. The argument \meta{slant-expr} is a floating-point
% expression.
@@ -1185,8 +1425,8 @@ end
%
% \item[|TikZ|, |tikz|]\label{item:tikz}
% \indexpackageoption{tikz}
-% Use \packagename{TikZ}\index{package>\packagename{TikZ}} for slanting.\footnote{Requires
-% \filesystem{tikz.sty.}}
+% Use \packagename{TikZ}\index{package>tikz=\packagename{tikz}|userman} for
+% slanting.\footnote{Requires \filesystem{tikz.sty.}}
%
% \begin{caution}
% This engine is still experimental and produces low-quality output! See
@@ -1199,7 +1439,7 @@ end
% floating-point \emph{expressions} as their arguments not just plain floating-point literals.
% See Ref.~\citenum{latex3-interfaces}, Ch.~29, \doublequotes{The \textsf{l3fp}~module~--
% Floating points} for a description of the floating-point expression syntax and the available
-% functions.
+% functions.\label{secend:package-options}
%
%
% \clearpage
@@ -1218,7 +1458,7 @@ end
%
% \DescribeMacro{\synthslant}
% Control the slant applied by \hyperref[syn:textsynthslant]{\cs{textsynthslant}}.
-% This value is non-negative.
+% This value is nonnegative.
%
% \begin{synopsis}\label{syn:synthslant}
% \cs{synthslant}
@@ -1248,43 +1488,43 @@ end
% \begin{tabfigures}
% \begin{tabular}[t]{@{}p{9.5em}l@{}}
% \toprule
-% Font Name & Slant \\
+% Font & Slant \\
% \midrule
-% \acronym{ADF} Accanthis\index{font>ADF Accanthis=\acronym{ADF} Accanthis} & .26 \\
-% \acronym{ADF} Baskervald\index{font>ADF Baskervald=\acronym{ADF} Baskervald} & .32 \\
-% \acronym{ADF} Berenis\index{font>ADF Berenis=\acronym{ADF} Berenis} & .2 \\
-% \acronym{ADF} Venturis\index{font>ADF Venturis=\acronym{ADF} Venturis} & .2 \\
-% Alegreya\index{font>Alegreya} & .2 \\
-% Arvo\index{font>Arvo} & .2 \\
-% BaskervilleF\index{font>BaskervilleF} & .2 \\
-% Bera Serif\index{font>Bera Serif} & .2 \\
-% Bitter\index{font>Bitter} & .16 \\
-% Caladea\index{font>Caladea} & .14 \\
-% Clara\index{font>Clara} & .24 \\
-% Cochineal\index{font>Cochineal} & .2 \\
-% Coelacanth\index{font>Coelacanth} & .2 \\
-% Crimson Pro\index{font>Crimson Pro} & .2 \\
-% Crimson Text\index{font>Crimson Text} & .2 \\
+% \acronym{ADF} Accanthis\index{font>typeface>ADF Accanthis=\acronym{ADF} Accanthis|userman} & .26 \\
+% \acronym{ADF} Baskervald\index{font>typeface>ADF Baskervald=\acronym{ADF} Baskervald|userman} & .32 \\
+% \acronym{ADF} Berenis\index{font>typeface>ADF Berenis=\acronym{ADF} Berenis|userman} & .2 \\
+% \acronym{ADF} Venturis\index{font>typeface>ADF Venturis=\acronym{ADF} Venturis|userman} & .2 \\
+% Alegreya\index{font>typeface>Alegreya|userman} & .2 \\
+% Arvo\index{font>typeface>Arvo|userman} & .2 \\
+% BaskervilleF\index{font>typeface>BaskervilleF|userman} & .2 \\
+% Bera Serif\index{font>typeface>Bera Serif|userman} & .2 \\
+% Bitter\index{font>typeface>Bitter|userman} & .16 \\
+% Caladea\index{font>typeface>Caladea|userman} & .14 \\
+% Clara\index{font>typeface>Clara|userman} & .24 \\
+% Cochineal\index{font>typeface>Cochineal|userman} & .2 \\
+% Coelacanth\index{font>typeface>Coelacanth|userman} & .2 \\
+% Crimson Pro\index{font>typeface>Crimson Pro|userman} & .2 \\
+% Crimson Text\index{font>typeface>Crimson Text|userman} & .2 \\
% \bottomrule
% \end{tabular}%
% \qquad
% \begin{tabular}[t]{@{}p{9.5em}l@{}}
% \toprule
-% Font Name & Slant \\
+% Font & Slant \\
% \midrule
-% Day Roman\index{font>Day Roman} & .2 \\
-% \acronym{EB} Garamond\index{font>EB Garamond=\acronym{EB} Garamond} & .3 \\
-% etbb\index{font>etbb} & .2 \\
-% fbb\index{font>fbb} & .2 \\
-% Garamond Expert\index{font>Garamond Expert} & .2 \\
-% Gandhi Serif\index{font>Gandhi Serif} & .2 \\
-% Gentium\index{font>Gentium} & .2 \\
-% Ibarra Real Nova\index{font>Ibarra Real Nova} & .2 \\
-% \acronym{IBM} Plex Serif\index{font>IBM Plex Serif=\acronym{IBM} Plex Serif} & .24 \\
-% \acronym{Inria} Serif\index{font>Inria Serif=\acronym{Inria} Serif} & .2 \\
-% Libertinus Serif\index{font>Libertinus Serif} & .2 \\
-% Libre Baskerville\index{font>Libre Baskerville} & .3 \\
-% Libre Caslon\index{font>Libre Caslon} & .38 \\
+% Day Roman\index{font>typeface>Day Roman|userman} & .2 \\
+% \acronym{EB} Garamond\index{font>typeface>EB Garamond=\acronym{EB} Garamond|userman} & .3 \\
+% etbb\index{font>typeface>etbb|userman} & .2 \\
+% fbb\index{font>typeface>fbb|userman} & .2 \\
+% Garamond Expert\index{font>typeface>Garamond Expert|userman} & .2 \\
+% Gandhi Serif\index{font>typeface>Gandhi Serif|userman} & .2 \\
+% Gentium\index{font>typeface>Gentium|userman} & .2 \\
+% Ibarra Real Nova\index{font>typeface>Ibarra Real Nova|userman} & .2 \\
+% \acronym{IBM} Plex Serif\index{font>typeface>IBM Plex Serif=\acronym{IBM} Plex Serif|userman} & .24 \\
+% \acronym{Inria} Serif\index{font>typeface>Inria Serif=\acronym{Inria} Serif|userman} & .2 \\
+% Libertinus Serif\index{font>typeface>Libertinus Serif|userman} & .2 \\
+% Libre Baskerville\index{font>typeface>Libre Baskerville|userman} & .3 \\
+% Libre Caslon\index{font>typeface>Libre Caslon|userman} & .38 \\
% & \\
% & \\
% \bottomrule
@@ -1292,22 +1532,22 @@ end
% \qquad
% \begin{tabular}[t]{@{}p{9.5em}l@{}}
% \toprule
-% Font Name & Slant \\
+% Font & Slant \\
% \midrule
-% Merriweather\index{font>Merriweather} & .14 \\
-% MLModern\index{font>MLModern} & .23 \\
-% Noto Serif\index{font>Noto Serif} & .22 \\
-% \acronym{PT} Serif\index{font>PT Serif=\acronym{PT} Serif} & .2 \\
-% Roboto Slab\index{font>Roboto Slab} & .2 \\
-% Quattrocento\index{font>Quattrocento} & .2 \\
-% Source Serif Pro\index{font>Source Serif Pro} & .18 \\
-% Spectral\index{font>Spectral} & .18 \\
-% \acronym{STIX}\index{font>STIX=\acronym{STIX}} & .2 \\
-% \TeX{} Gyre Pagella\index{font>TeX Gyre Pagella=\TeX{} Gyre Pagella} & .16 \\
-% \acronym{TX} Fonts Serif\index{font>TX Fonts Serif=\acronym{TX} Fonts Serif} & .2 \\
-% \acronym{URW} Antiqua\index{font>URW Antiqua=\acronym{URW} Antiqua} & .2 \\
-% \acronym{URW} Nimbus Roman\index{font>URW Nimbus Roman=\acronym{URW} Nimbus Roman} & .2 \\
-% Utopia\index{font>Utopia} & .2 \\
+% Merriweather\index{font>typeface>Merriweather|userman} & .14 \\
+% \acronym{ML} Modern\index{font>typeface>ML Modern=\acronym{ML} Modern|userman} & .23 \\
+% Noto Serif\index{font>typeface>Noto Serif|userman} & .22 \\
+% \acronym{PT} Serif\index{font>typeface>PT Serif=\acronym{PT} Serif|userman} & .2 \\
+% Roboto Slab\index{font>typeface>Roboto Slab|userman} & .2 \\
+% Quattrocento\index{font>typeface>Quattrocento|userman} & .2 \\
+% Source Serif Pro\index{font>typeface>Source Serif Pro|userman} & .18 \\
+% Spectral\index{font>typeface>Spectral|userman} & .18 \\
+% \acronym{STIX}\index{font>typeface>STIX=\acronym{STIX}|userman} & .2 \\
+% \TeX{} Gyre Pagella\index{font>typeface>TeX Gyre Pagella=\TeX{} Gyre Pagella|userman} & .16 \\
+% \acronym{TX} Fonts Serif\index{font>typeface>TX Fonts Serif=\acronym{TX} Fonts Serif|userman} & .2 \\
+% \acronym{URW} Antiqua\index{font>typeface>URW Antiqua=\acronym{URW} Antiqua|userman} & .2 \\
+% \acronym{URW} Nimbus Roman\index{font>typeface>URW Nimbus Roman=\acronym{URW} Nimbus Roman|userman} & .2 \\
+% Utopia\index{font>typeface>Utopia|userman} & .2 \\
% & \\
% \bottomrule
% \end{tabular}
@@ -1319,7 +1559,7 @@ end
% \DescribeMacro{\synthnegslant}
% Control the slant applied by
% \hyperref[syn:textsynthuprightitalic]{\cs{textsynthuprightitalic}}. This value is
-% non-positive.
+% nonpositive.
%
% \begin{synopsis}\label{syn:synthnegslant}
% \cs{synthnegslant}
@@ -1332,9 +1572,9 @@ end
% more flexible and powerful interface, see~\cref{sec:advanced-interface}.
%
% \begin{note}
-% The following restrictions and workarounds to get line-breaking and automatic hyphenation
-% working again do \emph{not} apply to the
-% \packagename{fontspec}\index{package>\packagename{fontspec}} back-end.
+% The following restrictions and workarounds to get line-breaking and \TeX's automatic
+% hyphenation working again do \emph{not} apply to the
+% \packagename{fontspec}\index{package>fontspec=\packagename{fontspec}|userman} back-end.
% \end{note}
%
% \noindent
@@ -1344,7 +1584,7 @@ end
% provisions to re-enable at least some breakability.
%
% \begin{enumerate}
-% \item Spaces introduce breakpoint,\index{breakpoint at space} e.\,g.
+% \item Spaces introduce breakpoint,\index{breakpoint at space|userman} e.\,g.
% \begin{codeexample}
% \cs{textsynthslant}\{topological dual space\}
% \end{codeexample}
@@ -1352,8 +1592,8 @@ end
% second word (producing another horizontal box). \TeX{} sees two (unbreakable) boxes and a
% discardable space when it comes to linebreaking.
%
-% \item Discretionary hyphens\index{discretionary hyphen} in the form of \singlequotes{\cs{-}}
-% get propagated. So, we could improve on our above example by saying
+% \item Discretionary hyphens\index{discretionary hyphen|userman} in the form of
+% \singlequotes{\cs{-}} get propagated. So, we could improve on our above example by saying
% \begin{codeexample}
% \cs{textsynthslant}\{topo\cs{-}log\cs{-}i\cs{-}cal dual space\}
% \end{codeexample}
@@ -1374,7 +1614,7 @@ end
%
% In horizontal mode switch to an upright shape, slant \meta{text} with the slant value stored
% in \hyperref[syn:synthslant]{\cs{synthslant}} and apply \doublequotes{slant
-% correction}\index{slant>correction} --~the equivalent of italics correction~-- at the
+% correction}\index{slant>correction|userman} --~the equivalent of italics correction~-- at the
% right-hand side of~\meta{text}.
%
% In math mode just slant \meta{text} with the slant value stored in
@@ -1391,7 +1631,7 @@ end
%
% \noindent
% where we show the font modification in conjunction with the
-% \packagename{babel}~macro\index{package>\packagename{babel}}
+% \packagename{babel}~macro\index{package>babel=\packagename{babel}|userman}
% \cs{foreignlanguage}~\cite{package:babel}.~\visualpar
%
% In math-mode you cannot have enough fonts, symbols, and most of the gizmos over there! I
@@ -1485,7 +1725,7 @@ end
% \end{synopsis}
%
% Switch to an upright font shape and --~if
-% package~\packagename{microtype}~\cite{package:microtype}\index{package>\packagename{microtype}}
+% package~\packagename{microtype}~\cite{package:microtype}\index{package>microtype=\packagename{microtype}|userman}
% has been loaded~-- enter the Microtype-context defined by
% macro~\hyperref[syn:slantcontext]{\cs{slantcontext}}. At the end add some slant correction,
% which is the equivalent of italics correction.
@@ -1511,7 +1751,7 @@ end
% Microtype-context defined by macro~\hyperref[syn:negslantcontext]{\cs{negslantcontext}}.
%
% \DescribeMacro{\slantcontext}
-% Microtype context used when typesetting slanted text.
+% Name of the \packagename{microtype} context used when typesetting slanted text.
%
% \begin{synopsis}\label{syn:slantcontext}
% \cs{slantcontext}
@@ -1530,7 +1770,7 @@ end
% \end{note}
%
% \DescribeMacro{\negslantcontext}
-% Microtype context used when typesetting un-slanted text.
+% Name of the \packagename{microtype} context used when typesetting backward slanted text.
%
% \begin{synopsis}\label{syn:negslantcontext}
% \cs{negslantcontext}
@@ -1667,13 +1907,13 @@ end
% and --~after recompiling with the appropriate \LaTeX-engine~-- used to examine the details of
% the slant operations.
%
-% Page~2, Sec.~3.1, \singlequotes{Copy}, shows wild mixes of different font shapes, native al
-% well as synthesized ones. Here, the slanted glyphs as well as the upright italics should
-% blend well with the native italics/obliques and the normal font, respectively.
+% Page~2, Sec.~3.1, \singlequotes{Copy}, shows wild mixes of different font shapes, native and
+% synthesized ones. Here, the slanted glyphs as well as the upright italics should blend well
+% with the native italics/obliques and with the normal font, respectively.
%
-% Page~3, Sec.~3.2 and following sub-sections, examines the coupling of
-% \packagename{synthslant} with the \TeX-system and some of its extensions. If a slant engine
-% malfunctions, it will become evident on this page.
+% Page~3, Sec.~3.2 and following sub-sections, examine the coupling of \packagename{synthslant}
+% with the \TeX-system and some of its extensions. If a slant engine malfunctions, it will
+% become evident on this page.
%
%
% \clearpage
@@ -1687,7 +1927,7 @@ end
% \packagename{Syntslant}~manipulations may not survive
% (pre-)\discretionary{}{}{}processing by \MP.
%
-% \item[\packagename{l3draw} engine.]\index{package>\packagename{l3draw}}\mbox{}
+% \item[\packagename{l3draw} engine.]\index{package>l3draw=\packagename{l3draw}|userman}\mbox{}
% \begin{itemize}
% \item Depending of the shear direction the \packagename{l3draw} engine may generate some
% extra positive or negative space at the ends of the text.
@@ -1697,10 +1937,10 @@ end
% \item Markedly slower than the \acronym{PDF}-implementation!
% \end{itemize}
%
-% \item[\pstrickslogo{} engine.]\index{package>\packagename{pstricks}}
+% \item[\pstrickslogo{} engine.]\index{package>pstricks=\packagename{pstricks}|userman}
% The \pstrickslogo{} engine produces some extra space at the ends of the text.
%
-% \item[\tikzlogo{} engine.]\index{package>\packagename{tikz}}
+% \item[\tikzlogo{} engine.]\index{package>tikz=\packagename{tikz}|userman}
% The \tikzlogo{} engine produces some extra space at the ends of the text.
% \end{description}
%
@@ -1753,7 +1993,7 @@ end
%
% I want to elaborate the example given in \cref{sec:usage-ideas},
% \cref{it:correct-italics-angle} and generate less-angled italics for
-% Libre~Caslon.\index{font>Libre Caslon} Here is a suitable map line taken from
+% Libre~Caslon.\index{font>typeface>Libre Caslon|userman} Here is a suitable map line taken from
% \filesystem{pdftex.map} on my system:
%
% \begin{multilinecodeexample}
@@ -1824,7 +2064,8 @@ end
% \end{example}
%
%
-% \subsection{Combining \LaTeX{} and \command{dvipdfmx}}\label{sec:alternative-latex}
+% \subsection{Combining \LaTeX{} and
+% \texorpdfstring{\command{dvipdfmx}}{dvipdfmx}}\label{sec:alternative-latex}
%
% The alternative when using \LaTeX{} is similar the one elaborated in the previous section.
% The font mapline gets modified by \cs{special} primitive
@@ -1872,14 +2113,20 @@ end
%
% \MaybeStop{
% \clearpage
-% \phantomsection
-% \resetfancyhead
-% \addcontentsline{toc}{section}{Change History}
-% \PrintChanges
+% \begingroup
+% \setcounter{GlossaryColumns}{1}
+% \phantomsection
+% \label{sec:changes}
+% \resetfancyhead
+% \addtocontents{toc}{\bigskip}
+% \addcontentsline{toc}{section}{\numberline{}Change History}
+% \PrintChanges
+% \endgroup
%
% \clearpage
% \phantomsection
-% \addcontentsline{toc}{section}{References}
+% \addtocontents{toc}{\medskip}
+% \addcontentsline{toc}{section}{\numberline{}References}
% \begin{RaggedRight}
% \begin{thebibliography}{88}
% \bibitem{package:relsize}
@@ -1986,20 +2233,31 @@ end
%
%
% \clearpage
-% \begin{RaggedRight}
+% \begingroup
% \setcounter{IndexColumns}{2}
% \setlength{\columnsep}{30pt}
-% \label{sec:index}
% \phantomsection
-% \addcontentsline{toc}{section}{Index}
+% \label{sec:index}
+% \addtocontents{toc}{\medskip}
+% \addcontentsline{toc}{section}{\numberline{}Index}
+% \raggedcolumns
+% \def\codeidx##1{\linenumberdecoration\textbf{##1}}
+% \def\main##1{\linenumberdecoration\underbar{\textbf{##1}}}
+% \def\usage##1{\textit{\textbf{##1}}}
% \PrintIndex
-% \end{RaggedRight}
+% \label{secend:index}
+% \endgroup
% }
%
%
% \clearpage
+% \toccontinuesonnextpage
% \section{Package Code}\label{sec:package-code}
-% \addtocontents{toc}{\begingroup\small}
+% \addtocontents{toc}{\protect\begin{list}{}{\leftmargin=\subsectiontocindent\parsep=0pt}}
+% \addtocontents{toc}{\protect\item}
+% \addtocontents{toc}{\RaggedRight}
+% \addtocontents{toc}{\small}
+% \addtocontents{toc}{\tocsquashedsubsections}
% \addtocontents{toc}{\protect\begin{multicols}{2}}
% \addtocontents{toc}{\protect\raggedcolumns}
%
@@ -2008,12 +2266,15 @@ end
% and explain its implementation details.
%
%
+% \changes{v0.1a}{2024-6-2}{Add missing dependency on \packagename{etoolbox}.
+% Fix suggested by \code{mbertucci47}.}
% \begin{macrocode}
%<*package>
\NeedsTeXFormat{LaTeX2e}[2005/12/01]
\ProvidesPackage{synthslant}
- [2024/05/07 v0.1 Synthetically Slant glyphs]
+ [2024/07/08 v0.1a Synthetically Slant glyphs]
+\RequirePackage{etoolbox}
\RequirePackage{iftex}
\RequirePackage{xkeyval}
@@ -2094,12 +2355,16 @@ end
% \begin{macrocode}
\ExplSyntaxOn
\fp_compare:nNnTF {\synthslant} < {.0}
- {\PackageError{synthslant}{\string\synthslant\space <\space 0}
- {Pass\space a\space value\space that\space is\space non-negative.}}
+ {\PackageError{synthslant}
+ {\string\synthslant\space <\space 0}
+ {Pass\space a\space value\space that\space
+ is\space nonnegative.}}
{}
\fp_compare:nNnTF {\synthnegslant} > {.0}
- {\PackageError{synthslant}{\string\synthnegslant\space >\space 0}
- {Pass\space a\space value\space that\space is\space non-positive.}}
+ {\PackageError{synthslant}
+ {\string\synthnegslant\space >\space 0}
+ {Pass\space a\space value\space that\space
+ is\space nonpositive.}}
{}
\ExplSyntaxOff
@@ -2176,7 +2441,7 @@ end
% \end{macro}
%
%
-% \subsubsection{\acronym{PDF} Slant Engine}
+% \subsubsection{\texorpdfstring{\acronym{PDF}}{PDF} Slant Engine}
%
% The \acronym{PDF}-engine works well and it is the best tested alternative.
%
@@ -2251,13 +2516,15 @@ end
% \begin{macrocode}
\fp_compare:nNnTF {#1} >= {.0}
{
- \box_set_wd:Nn \l_tmpa_box {\l_tmpa_dim - #1\l_tmpb_dim}
+ \box_set_wd:Nn \l_tmpa_box
+ {\l_tmpa_dim - #1\l_tmpb_dim}
}
{
\draw_suspend_begin:
\kern#1\l_tmpb_dim
\draw_suspend_end:
- \box_set_wd:Nn \l_tmpa_box {\l_tmpa_dim + #1\l_tmpb_dim}
+ \box_set_wd:Nn \l_tmpa_box
+ {\l_tmpa_dim + #1\l_tmpb_dim}
}
% \end{macrocode}
%
@@ -2348,7 +2615,8 @@ end
% \begin{macrocode}
\newcommand*{\synthslantbox@fontspect@shear@box}[2]{
\begingroup
- \expandafter\fontspec[FakeSlant = #1]{\l_fontspec_family_tl}
+ \expandafter
+ \fontspec[FakeSlant=#1]{\l_fontspec_family_tl}
#2
\endgroup
}
@@ -2473,8 +2741,12 @@ end
% \begin{macrocode}
\ifnum\synthslant@engine=4% fontspec
\newrobustcmd*{\synthslantbox}[2]{%
- \edef\synthslant@slant@value{#1}% definition for compatibility of both branches
- \synthslantbox@fontspect@shear@box{\synthslant@slant@value}{#2}%
+% \end{macrocode}
+% The following (expanding) definition is only here for the compatibility of both branches.
+% \begin{macrocode}
+ \edef\synthslant@slant@value{#1}
+ \synthslantbox@fontspect@shear@box{\synthslant@slant@value}
+ {#2}%
}
% \end{macrocode}
%
@@ -2530,7 +2802,8 @@ end
\NewDocumentEnvironment{slantenvironment}{}
{\upshape
\ifcsdef{microtypecontext}
- {\expandafter\microtypecontext\expandafter{\slantcontext}}
+ {\expandafter\microtypecontext
+ \expandafter{\slantcontext}}
{}}
{\ifcsdef{endmicrotypecontext}
{\endmicrotypecontext}
@@ -2557,8 +2830,8 @@ end
% \end{macro}
%
% \begin{macro}{\synthslantbox@right@negslant@correction}
-% We could play the same trick here as in \cs{synthslantbox@right@slant@correction} and use
-% \cs{synthnegslant} instead of \cs{synthslant}. But my experiments show no need for a
+% We could play the same trick here as in \cs{synthslantbox@\-right@\-slant@\-correction} and
+% use \cs{synthnegslant} instead of \cs{synthslant}. But my experiments show no need for a
% correction. Anyhow, this macro may be convenient to override someday.
%
% \begin{macrocode}
@@ -2588,7 +2861,8 @@ end
\NewDocumentEnvironment{negslantenvironment}{}
{\itshape
\ifcsdef{microtypecontext}
- {\expandafter\microtypecontext\expandafter{\negslantcontext}}
+ {\expandafter\microtypecontext
+ \expandafter{\negslantcontext}}
{}}
{\ifcsdef{endmicrotypecontext}
{\endmicrotypecontext}
@@ -2622,7 +2896,7 @@ end
%
%
% \addtocontents{toc}{\protect\end{multicols}}
-% \addtocontents{toc}{\endgroup}
+% \addtocontents{toc}{\protect\end{list}}
%
%
% \Finale
@@ -4889,7 +5163,7 @@ KJ8AAAAASUVORK5CYII=
\setlength{\headheight}{0pt}
\setlength{\headsep}{0pt}
-\setlength{\overfullrule}{3pt}
+\setlength{\overfullrule}{0pt}
\pagestyle{plain}
@@ -5254,6 +5528,20 @@ right: \code{\cs{textsynthslant}\{Show line-break\cs{-}ing in a sen\cs{-}tence.\
%
%
%
+% \iffalse
+%<*minimal-test>
+\documentclass{minimal}
+
+\usepackage{synthslant}
+
+\begin{document}
+\textsynthslant{abc}
+\end{document}
+%</minimal-test>
+% \fi
+%
+%
+%
\endinput
%
%
diff --git a/macros/latex/contrib/synthslant/synthslant.ins b/macros/latex/contrib/synthslant/synthslant.ins
index 845b4378b1..f7027fe6f5 100644
--- a/macros/latex/contrib/synthslant/synthslant.ins
+++ b/macros/latex/contrib/synthslant/synthslant.ins
@@ -1,11 +1,11 @@
%% Copyright (C) 2024 by Ch. L. Spiel
%%
%% This work may be distributed and/or modified under the conditions
-%% of the LaTeX Project Public License, either version 1.3 of this
+%% of the LaTeX Project Public License, either version 1.3c of this
%% license or (at your option) any later version. The latest version
%% of this license is in
-%% http://www.latex-project.org/lppl.txt
-%% and version 1.3 or later is part of all distributions of LaTeX
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2003/12/01 or later.
@@ -23,11 +23,11 @@ This is a generated file.
Copyright (C) 2024 by Ch. L. Spiel
This work may be distributed and/or modified under the conditions
-of the LaTeX Project Public License, either version 1.3 of this
+of the LaTeX Project Public License, either version 1.3c of this
license or (at your option) any later version. The latest version
of this license is in
- http://www.latex-project.org/lppl.txt
-and version 1.3 or later is part of all distributions of LaTeX
+ https://www.latex-project.org/lppl.txt
+and version 1.3c or later is part of all distributions of LaTeX
version 2003/12/01 or later.
This work has the LPPL maintenance status `maintained'.
@@ -46,12 +46,15 @@ shear-transform.mp, and title.mp.
\generate{\file{synthslant.sty}{\from{\source}{package}}
\file{synthslant-gauge.tex}{\from{\source}{gauge}}
- \file{synthslant.ist}{\from{\source}{index-style}}}
+ \file{synthslant-minimal-test.tex}{\from{\source}{minimal-test}}}
\nopostamble
-\generate{\file{title.mp}{\from{\source}{title}}}
-\generate{\file{shear-transform.mp}{\from{\source}{shear-transform}}}
+\generate{\file{shear-transform.mp}{\from{\source}{shear-transform}}
+ \file{synthslant.gst}{\from{\source}{changes-style}}
+ \file{synthslant.ist}{\from{\source}{index-style}}
+ \file{title.mp}{\from{\source}{title}}}
+
\nopreamble
diff --git a/macros/latex/contrib/tablvar/README.md b/macros/latex/contrib/tablvar/README.md
index 565ed9c049..0be4d44111 100644
--- a/macros/latex/contrib/tablvar/README.md
+++ b/macros/latex/contrib/tablvar/README.md
@@ -6,8 +6,8 @@
- A complete and easy to use package for typesetting pretty tables of signs and variations according to French usage.
- The syntax is similar to that of the array environment and uses intuitive position commands.
- Arrows are automatically drawn (with PSTricks or TikZ).
-- Macros are provided for drawing double bars, single bars crossing the zeros, intervals where a function is not defined or for placing special values.
-- Several features of variations tables can be customized.
+- Macros are provided for drawing double bars, single bars crossing zero values, intervals where a function is not defined or for placing special values.
+- Many features of variations tables can be customized.
## Documentation
@@ -18,7 +18,7 @@ The documentation is in French.
## Installation
- run LaTeX on tablvar.ins, you obtain the file tablvar.sty,
-- if then you run XeLaTeX or LaTeX + dvips + ps2pdf on tablvar.dtx you get the file tablvar.pdf which is also in the archive,
+- if then you run LaTeX + dvips + ps2pdf on tablvar.dtx you get the file tablvar.pdf which is also in the archive,
- put the files tablvar.sty and tablvar.pdf in your TeX Directory Structure.
diff --git a/macros/latex/contrib/tablvar/tablvar.dtx b/macros/latex/contrib/tablvar/tablvar.dtx
index afc47fc953..e39c2382f0 100644
--- a/macros/latex/contrib/tablvar/tablvar.dtx
+++ b/macros/latex/contrib/tablvar/tablvar.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 2018-2023 by Antoine Missier <antoine.missier@ac-toulouse.fr>
+% Copyright (C) 2018-2024 by Antoine Missier <antoine.missier@ac-toulouse.fr>
%
% This file may be distributed and/or modified under the conditions of
% the LaTeX Project Public License, either version 1.3 of this license
@@ -22,11 +22,11 @@
%<*package>
\NeedsTeXFormat{LaTeX2e}[2005/12/01]
\ProvidesPackage{tablvar}
- [2023/12/23 v2.0 .dtx tablvar file]
+ [2024/08/09 v2.1 Tables of signs and variations]
%</package>
%<*driver>
\documentclass{ltxdoc}
-\usepackage[utf8]{inputenc}
+%\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage{lmodern}
@@ -38,10 +38,12 @@
\def\bbObrecht{\vrule\kern1pt\vrule} \let\bb\relax
\let\variations\relax
\usepackage{tkz-tab}
+\usepackage{pstricks}
+\usepackage{tableau}
\usepackage[pstricks]{tablvar}
\usepackage[style=french,font=fcm]{lgrmath} % pour un joli pi droit
-\usepackage{hyperref}
+\usepackage[hyperindex=false]{hyperref}
\usepackage{sectsty}
\usepackage{makecell}
\usepackage{spacingtricks}
@@ -58,6 +60,8 @@
\definecolor{darkbrown}{rgb}{0.5,0.1,0.1}
\allsectionsfont{\color{darkbrown}}
\hypersetup{%
+ bookmarksopen=true,
+ bookmarksopenlevel=2,
colorlinks,
linkcolor=blue,
citecolor=red,
@@ -76,7 +80,7 @@
%</driver>
% \fi
%
-% \CheckSum{752}
+% \CheckSum{828}
%
% \CharacterTable
% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -119,27 +123,21 @@
% \changes{v2.0}{16/12/2023}{Nouveau paramètre limsep}
% \changes{v2.0}{20/12/2023}{Macro bas et mil valables pour un nb quelconque de lignes}
% \changes{v2.0}{22/12/2023}{Macros @pos -> tv@pos, @@pos -> tv@@pos}
+% \changes{v2.1}{23/07/2024}{
+% - Calcul de hauteur automatique de la colonne de légende :
+% * nouveaux paramètres rowtopsep et rowbottomsep
+% * tv@saveheight -> tv@setheight
+% - option pstricks possible avec LuaLaTeX + luapstricks,
+% - amélioration du calcul de position de la macro mil,
+% - nouvelles macros limg*, limd* et bblim*
+% - exemple plus sophistiqué pour bblim}
%
% \GetFileInfo{tablvar.sty}
-%
-% \DoNotIndex{\@@ZI,\tv@@pos,\tv@pos,\@ZI,\@arstrutbox,\@ifstar,\\}
-% \DoNotIndex{\addtocounter,\advance,\arraybackslash}
-% \DoNotIndex{\begin,\boolean,\centering,\color,\DeclareOption,\def}
-% \DoNotIndex{\define@boolkey,\defin@key,\dp,\draw,\else,\empty,\end}
-% \DoNotIndex{\fi,\fill,\global,\hspace,\ht}
-% \DoNotIndex{\I,\if,\ifdim,\ifnum,\ifthenelse,\Ix,\Iy,\kern}
-% \DoNotIndex{\makebox,\MessageBreak,\multido,\ncline,\newboolean,}
-% \DoNotIndex{\newcommand,\newcounter,\newenvironment,\newlength,\newsavebox}
-% \DoNotIndex{\node,\PackageWarningNoLine,\ProcessOptions,\psframe}
-% \DoNotIndex{\raisebox,\relax,\renewcommand,\RequirePackage,\rnode}
-% \DoNotIndex{\sbox,\setboolean,\setcounter,\setlength,\stepcounter}
-% \DoNotIndex{\TikZ,\tvanchor,\usetikzlibrary,\value,\wd}
-% \DoNotIndex{\ZIheight,\ZIheighti,\ZIheightii,\ZIheightiii,\ZIheightiv,\ZIdepth,\ZIwidth}
%
% \title{L'extension \textsf{tablvar}\thanks{Ce document
-% correspond à \textsf{tablvar}~\fileversion, dernière modification le 23/12/2023.}}
+% correspond à \textsf{tablvar}~\fileversion, dernière modification le 09/08/2024.}}
% \author{Antoine Missier \\ \texttt{antoine.missier@ac-toulouse.fr}}
-% \date{23 décembre 2023}
+% \date{9 août 2024}
% \maketitle
% \tableofcontents
%
@@ -175,8 +173,8 @@
% |pstricks| ou |tikz|, que l'on invoque dans le préambule à l'appel de l'extension :
% |\usepackage[tikz]{tablvar}|.
% Lorsque l'option n'est pas précisée, l'extension choisira \texttt{tikz}
-% pour un compilateur PDF (comme pdf\LaTeX\ ou \LuaLaTeX), \texttt{pstricks} sinon
-% (typiquement \LaTeX\ + dvips + ps2pdf ou \XeLaTeX).
+% pour un mode de sortie PDF direct (avec pdf\LaTeX\ ou \LuaLaTeX),
+% \texttt{pstricks} sinon (avec \LaTeX\ > dvips > ps2pdf ou \XeLaTeX).
% Pour l'option |tikz|, il faut compiler \emph{deux fois},
% la première fois les flèches ne sont pas correctement dessinées
% (un message de compilation le rappelle).
@@ -189,9 +187,9 @@
%
% \subsection{Tableaux de variations simples}
%
-% % \DescribeEnv{tablvar}
+% \DescribeEnv{tablvar}
% Un tableau de variations (ou de signes) se définit par un environnement |tablvar|
-% qui \emph{doit être en mode mathématiques} (comme |array|).
+% qui \emph{doit être en mode mathématique} (comme |array|).
%
% \medskip
% Voici un premier tableau tout simple avec les commandes
@@ -235,8 +233,8 @@
% Cette unité à l'avantage de s'ajuster lorsqu'on change de fonte
% sans avoir besoin de modifier le code. L'unité de même type utilisée pour les hauteurs
% est le \texttt{ex}, hauteur du \og x \fg.}.
-% Les flèches ne sont pas contraintes à rester à l'intérieur des colonnes intervalles
-% mais s'ajustent par rapport à la taille effective des valeurs qu'elles relient.
+% La longueur des flèches s'ajuste en fonction de la taille des valeurs
+% qu'elles relient et ne sont pas contraintes à rester à l'intérieur des colonnes intervalles.
% Lorsqu'une valeur est trop large, elle déborde automatiquement
% dans les colonnes intervalles sans altérer
% les largeurs de colonne.
@@ -314,7 +312,7 @@
% (voir section \ref{options} pour la liste détaillée des options).
%
% \DescribeMacro{\variations\oarg{nblignes}}
-% C'est la commande |\variations| qui, se charge de la construction des flèches
+% C'est la commande |\variations| qui se charge de la construction des flèches
% en fonction du positionnement des valeurs.
% Un paramètre optionnel permet de définir
% un nombre arbitraire de lignes pour les variations (3 par défaut).
@@ -418,7 +416,8 @@
% \mbox{Signe de }f'(x) & & - & \barre[0] & + & \barre[0] & - & \\
% \hline
% \variations{ \mil{\makecell{\mbox{Variations} \\ \mbox{de }f}} &
-% \haut{+\infty} && \bas{-14} && \haut{\frac{69}{4}} && \bas{-\infty} }
+% \haut{+\infty} && \bas{-14} && \haut{\frac{69}{4}} &&
+% \bas{-\infty} }
% \hline
%\end{tablvar}\]
% \end{verbatim}
@@ -435,50 +434,57 @@
%
% \medskip
% Une première solution est d'interrompre la double barre pour placer
-% les limites qui resteront alors centrées au milieu de la colonne (mais il faut aimer).
+% les limites qui resteront alors centrées au milieu de la colonne
+% (mais il faut aimer).
%\[\begin{tablvar}{2}
% \hline
-% x & -\infty && 0 && +\infty \\
+% x & -\infty && 2 && +\infty \\
% \hline
-% \variations{\mil{\e^{\frac{1}{x}}} & \haut{1} &&
-% \bas{0} \pos*{2}{\bb} \discont \haut{+\infty} && \bas{1} }
+% \variations{\mil{\dfrac{1}{x-2}} & \pos{2}{0} && \bas{-\infty}
+% \pos*{2}{\bb} \discont \haut{+\infty} && \pos{2}{0} }
% \hline
%\end{tablvar}\]
-% La macro |\e| compose le nombre d'Euler $\e$ en romain (forme droite),
-% comme c'est la règle pour les constantes mathématiques
-% (cf. \textsf{mismath}~\cite{MIS} ou \textsf{frenchmath}~\cite{FR}).
% \begin{verbatim}
%\[\begin{tablvar}{2}
% \hline
-% x & -\infty && 0 && +\infty \\
+% x & -\infty && 2 && +\infty \\
% \hline
-% \variations{\mil{\e^{\frac{1}{x}}} & \haut{1} &&
-% \bas{0} \pos*{2}{\bb} \discont \haut{+\infty} && \bas{1} }
+% \variations{\mil{\dfrac{1}{x-2}} & \pos{2}{0} && \bas{-\infty}
+% \pos*{2}{\bb} \discont \haut{+\infty} && \pos{2}{0} }
% \hline
%\end{tablvar}\]
% \end{verbatim}
%
% \hypertarget{firstcolsep}{}
% \DescribeMacro{\limg} \DescribeMacro{\limd}
-% Les macros |\limg|\oarg{pos}\marg{ligne}\marg{valeur}
-% et |\limd|\oarg{pos}\marg{ligne}\marg{valeur}
+% Les macros |\limg|\oarg{pos}\marg{ligne}\marg{valeur} et
+% |\limd|\oarg{pos}\marg{lgn}\marg{val}
% offrent une solution plus élégante pour placer des limites à gauche ou à droite.
% L'option de positionnement \meta{pos} correspond à celle de la macro |\pos|
% (\texttt{c}, \texttt{t} ou \texttt{b}).
+%
+% \DescribeMacro{\limg*}\DescribeMacro{\limd*}
+% Les variantes étoilées |\limg*| et |\limd*| sont des alias :
+% |\limg*{+}| signifie |\limg{1}{+\infty}|,
+% |\limg*{-}| correspond à |\limg{|$n$|}{-\infty}|
+% (pour une partie variations sur $n$ lignes),
+% de même pour |\limd*|.
+% Tout autre argument que \texttt{+} ou \texttt{-} génère un message d'erreur.
+%
+% \DescribeMacro{firstcolsep}
+% La colonne de légende peut être élargie en ajoutant de l'espace à ses extrémités
+% avec l'option \texttt{firstcolsep} (dont la valeur par défaut est \texttt{5pt}).
%\[\begin{tablvar}[firstcolsep=10pt,intervalwidth=4em]{2}
% \hline
% x & -\infty && 0 && +\infty \\
% \hline
% -\frac{1}{x} & & + & \bb & - & \\
% \hline
-% \variations{ \mil{\dfrac{1}{x^2}} & \bas{0} && \limg{1}{+\infty} \bb
-% \discont \limd{1}{+\infty} && \bas{0} }
+% \variations{ \mil{\e^{\frac{1}{x}}} & \haut{1} && \limg{3}{0} \bb
+% \discont \limd*{+} && \bas{1} }
% \hline
%\end{tablvar}\]
%
-% \DescribeMacro{firstcolsep}
-% Ci-dessus la colonne de légende a été élargie en ajoutant de l'espace à ses extrémités
-% avec l'option \texttt{firstcolsep} (dont la valeur par défaut est \texttt{5pt}).
% \begin{verbatim}
%\[\begin{tablvar}[firstcolsep=10pt,intervalwidth=4em]{2}
% \hline
@@ -486,13 +492,18 @@
% \hline
% -\frac{1}{x} & & + & \bb & - & \\
% \hline
-% \variations{ \mil{\dfrac{1}{x^2}} & \bas{0} && \limg{1}{+\infty} \bb
-% \discont \limd{1}{+\infty} && \bas{0} }
+% \variations{ \mil{\e^{\frac{1}{x}}} & \haut{1} && \limg{3}{0} \bb
+% \discont \limd*{+} && \bas{1} }
% \hline
%\end{tablvar}\]
% \end{verbatim}
+% \vspace{-2ex}
+% La macro |\e| compose le nombre d'Euler $\e$ en romain,
+% comme c'est la règle pour les constantes mathématiques
+% (cf. \textsf{mismath}~\cite{MIS} ou \textsf{frenchmath}~\cite{FR}).
%
-% \DescribeMacro{\bblim}
+% \bigskip
+% \DescribeMacro{\bblim}\DescribeMacro{\bblim*}
% Sauf sur les bords du tableau ou lorsqu'il y a une zone interdite,
% les doubles barres sont en général accompagnées à la fois d'une limite à gauche
% et d'une limite à droite. La commande |\bblim| permet alors d'alléger la syntaxe.
@@ -502,24 +513,28 @@
% C'est un alias de
% |\limg|\marg{ligne}\marg{valeur}|\bb\discont\limd|\marg{ligne}\marg{valeur}.
% La seule différence est que |\bblim| ne possède pas d'option de positionnement
-% des nœuds comme |\limg| et |\limd|.
-%\[\begin{tablvar}{4}
+% des nœuds comme |\limg| et |\limd|. La forme étoilée offre une syntaxe
+% encore plus légère lorsque les deux limites sont infinies :
+% |\bblim*{-}{+}| correspond à |\bblim{3}{-\infty}{1}{+\infty}|
+% (lorsqu'il y a 3 lignes de variations).
+%
+%\[\begin{tablvar}{5}
% \hline
-% x & -\infty && -1 && 0 && 1 && +\infty \\
+% x & -\infty && -2 && 0 && 1 && 2 && +\infty \\
% \hline
-% \variations{\mil{\dfrac{1}{1-x^2}} & \haut{0} &&
-% \bblim{3}{-\infty}{1}{+\infty} && \bas{1} &&
-% \bblim{1}{+\infty}{3}{-\infty} && \haut{0} }
+% \variations{ \mil{\dfrac{\e^{\frac{1}{x}}}{x-2}} & \haut{0} &&
+% \bas{-\frac{1}{4}\e^{-\frac{1}{2}}} && \bblim{1}{0}{3}{-\infty} &&
+% \haut{-\e} && \bblim*{-}{+} && \bas{0} }
% \hline
%\end{tablvar}\]
% \begin{verbatim}
-%\[\begin{tablvar}{4}
+%\[\begin{tablvar}{5}
% \hline
% x & -\infty && -1 && 0 && 1 && +\infty \\
% \hline
-% \variations{\mil{\dfrac{1}{1-x^2}} & \haut{0} &&
-% \bblim{3}{-\infty}{1}{+\infty} && \bas{1} &&
-% \bblim{1}{+\infty}{3}{-\infty} && \haut{0} }
+% \variations{ \mil{\dfrac{\e^{\frac{1}{x}}}{x-2}} & \haut{0} &&
+% \bas{-\frac{1}{4}\e^{-\frac{1}{2}}} && \bblim{1}{0}{3}{-\infty} &&
+% \haut{-\e} && \bblim*{-}{+} && \bas{0} }
% \hline
%\end{tablvar}\]
% \end{verbatim}
@@ -533,7 +548,7 @@
% sauf si on préfère plus de blanc.
% On peut y compris leur donner des valeurs négatives si l'on veut s'approcher
% davantage des filets verticaux, par exemple \texttt{limsep=-1.5pt}
-% amène au contact de la double barre).
+% amènerait au contact de la double barre).
%\[\begin{tablvar}[bordercolsep=4pt,limsep=3pt]{3}
% \hline
% x & -\infty && 0 && 1 && +\infty \\
@@ -568,7 +583,7 @@
% \hline
% x & 0 && 1 && +\infty \\
% \hline
-% \variations{ \mil{\ln x -x} & \bb\limd{3}{-\infty} && \haut{-1} &&
+% \variations{ \mil{\ln x -x} & \bb\limd*{-} && \haut{-1} &&
% \bas{-\infty} }
% \hline
%\end{tablvar*}
@@ -589,7 +604,7 @@
% \hline
% x & 0 && 1 && +\infty \\
% \hline
-% \variations{ \mil{\ln x -x} & \bb\limd{3}{-\infty} && \haut{-1} &&
+% \variations{ \mil{\ln x -x} & \bb\limd*{-} && \haut{-1} &&
% \bas{-\infty} }
% \hline
%\end{tablvar*}
@@ -603,8 +618,8 @@
% \hline
%\end{tablvar*}\]
% \end{verbatim}
-% \hypertarget{ext}{}
%
+% \hypertarget{ext}{}
% \DescribeMacro{extleft}\DescribeMacro{extright}
% Dans \texttt{tablvar*}, si, à une extrémité sans double barre,
% les valeurs ont des largeurs vraiment différentes
@@ -622,25 +637,25 @@
% pour éviter que le 1 ne soit collé au bord droit
% et qu'il garde un bon centrage par rapport à $+\infty$.
%
-% \noindent\begin{minipage}[t]{7.7cm}
+% \noindent\begin{minipage}[t]{7.4cm}
% \begin{verbatim}
-%\[\begin{tablvar}[extleft,intervalwidth=4em]{1}
+%\[\begin{tablvar}[extleft]{1}
% \hline
% x & 0 && +\infty \\
% \hline
-% \variations{ \mil{1-\dfrac{1}{x}} & \bb
-% \limd{3}{-\infty} && \haut{1} }
+% \variations[2]{ \mil{1-\dfrac{1}{x}}
+% & \bb \limd*{-} && \haut{1} }
% \hline
%\end{tablvar}\]
% \end{verbatim}
% \end{minipage}
% \begin{minipage}[t]{5cm}
-%\[\begin{tablvar}[extleft,intervalwidth=4em]{1}
+%\[\begin{tablvar}[extleft]{1}
% \hline
% x & 0 && +\infty \\
% \hline
-% \variations{ \mil{1-\dfrac{1}{x}} & \bb
-% \limd{3}{-\infty} && \haut{1} }
+% \variations[2]{ \mil{1-\dfrac{1}{x}}
+% & \bb \limd*{-} && \haut{1} }
% \hline
%\end{tablvar}\]
% \end{minipage}
@@ -661,14 +676,14 @@
%
% Voici un exemple où la valeur remarquable
% est placée dans la colonne intervalle.\\
-% \begin{minipage}[t]{7.7cm}
+% \begin{minipage}[t]{7.4cm}
% \begin{verbatim}
%\[\begin{tablvar*}[6em]{1}
% \hline
% x & 0 & \vr{1} & +\infty \\
% \hline
% \variations{ \mil{\ln x} &
-% \bb \limd{3}{-\infty} & \vr{0} &
+% \bb \limd*{-} & \vr{0} &
% \pos[t]{1}{+\infty} }
% \hline
%\end{tablvar*}\]
@@ -680,7 +695,7 @@
% x & 0 & \vr{1} & +\infty \\
% \hline
% \variations{ \mil{\ln x} &
-% \bb \limd{3}{-\infty} & \vr{0} &
+% \bb \limd*{-} & \vr{0} &
% \pos[t]{1}{+\infty} }
% \hline
%\end{tablvar*}\]
@@ -702,8 +717,8 @@
% \hline
% x & -\infty && \vr{0} && \vr{1} && +\infty \\
% \hline
-% \variations[4]{ \mil{\exp x} & \haut{0} &&
-% \vr[3]{1} && \vr{\e} && \bas{+\infty} }
+% \variations[4]{ \mil{\exp x} & \bas{0} &&
+% \vr[3]{1} && \vr{\e} && \haut{+\infty} }
% \hline
%\end{tablvar}\]
% \end{verbatim}
@@ -738,7 +753,7 @@
% \medskip
% On peut préférer que les flèches de variations ne passent pas à travers
% les valeurs remarquables (qui doivent alors être aussi des nœuds pour les flèches).
-% L'exemple suivant présente un tableau utilisant simultanément
+% L'exemple qui suit présente un tableau utilisant simultanément
% les deux manières de traiter les valeurs remarquables.
% La taille des flèches s'ajuste automatiquement.
% Le second zéro correspond à la fois à un nœud pour les flèches
@@ -767,6 +782,10 @@
% L'option |[t]| pour le max en ligne 1
% est ici combinée avec l'option |[b]| en ligne 3 et permet de conserver
% un positionnement correct du 0 sur la flèche.
+%
+% Pour placer la dernière valeur, on aurait pu utiliser |\limg[b]{3}{-\infty}|,
+% mais ici |\pos[b]{3}{-\infty}| convient aussi à cause de l'option \texttt{extright}
+% qui produit un alignement au fer à droite de la dernière colonne.
% \begin{verbatim}
%\[\begin{tablvar}[extright,intervalwidth=2em]{4}
% \hline
@@ -782,7 +801,6 @@
%\end{tablvar}\]
% \end{verbatim}
%
-% \vspace{-\baselineskip}
% \DescribeMacro{\vrconnect}
% C'est la macro graphique |\vrconnect| qui gère le tracé de ces traits pointillés.
% Elle peut être redéfinie pour changer leur aspect
@@ -802,7 +820,7 @@
% 0 &\mbox{si } x= 0
%\end{array}
%\right. .\]
-% \begin{minipage}[t]{6.5cm}
+% \begin{minipage}[t]{6.7cm}
% \begin{verbatim}
%\[\begin{tablvar}{2}
% \hline
@@ -900,7 +918,7 @@
% \vspace{-\baselineskip}
% Le |\hspace{-0.5em}| devant \texttt{+} a pour effet de décaler le $+$ affiché
% vers la gauche afin de le recentrer.
-% En effet, les macros |\limg| et |limd| placent les valeurs dans des boîtes de largeur
+% En effet, les macros |\limg| et |\limd| placent les valeurs dans des boîtes de largeur
% nulle (grâce à la commande |\zbox|, voir section \ref{cmd-pos}).
% De ce fait, le contenu d'une colonne valeur (qui a une largeur fixe)
% peut déborder en largeur
@@ -926,8 +944,8 @@
% -\frac{x}{\strut\sqrt{x^2-1}^3} && + & \bb & \ZI & \bb & - & \\
% \hline
% \variations{\pos*{2}{\dfrac{1}{\sqrt{x^2-1}}} & \bas{0} &&
-% \limg{1}{+\infty} \bb & \ZI &
-% \bb \limd{1}{+\infty} && \bas{0} }
+% \limg*{+} \bb & \ZI &
+% \bb \limd*{+} && \bas{0} }
% \hline
%\end{tablvar}\]
%
@@ -943,8 +961,8 @@
% -\frac{x}{\strut\sqrt{x^2-1}^3} && + & \bb & \ZI & \bb & - & \\
% \hline
% \variations{\pos*{2}{\dfrac{1}{\sqrt{x^2-1}}} & \bas{0} &&
-% \limg{1}{+\infty} \bb & \ZI &
-% \bb \limd{1}{+\infty} && \bas{0} }
+% \limg*{+} \bb & \ZI &
+% \bb \limd*{+} && \bas{0} }
% \hline
%\end{tablvar}\]
% \end{verbatim}
@@ -961,7 +979,8 @@
% Il arrive que la compilation \LaTeX\ + dvips + ps2pdf
% n'affiche pas cette transparence,
% ce qui semble être dû à un bug dans certaines versions de Ghostscript.
-% Dans ce cas la solution est de compiler avec \XeLaTeX.
+% Dans ce cas une solution peut être de compiler avec \XeLaTeX\ ou \LuaLaTeX\
+% (si \textsf{luapstricks} est installé sur votre distribution).
% La compilation pdf\LaTeX\ avec l'option \texttt{tikz} ne pose pas ce problème.}
%
%\[\begin{tablvar}[ZItype=c,ZIcolor=green,ZIaddwidth=1pt]{3}
@@ -1000,17 +1019,18 @@
%\end{tablvar}\]
% \end{verbatim}
%
-% Si des extrema de grande taille sont placés dans la partie variations,
+% lorsque des extrema de grande taille sont placés dans la partie \emph{variations},
% il est nécessaire de modifier la hauteur des lignes,
% pour éviter de toucher le filet horizontal (au-dessus ou en-dessous)
-% \footnote{L'extension \textsf{tabularray}~\cite{TABUL} de Jianrui Lyu permettra
-% éventuellement une gestion automatisée des hauteurs de ligne dans une version future.}.
+% \footnote{L'extension \textsf{tabularray}~\cite{TABUL} de Jianrui Lyu permettrait
+% éventuellement une gestion automatisée des hauteurs de ligne
+% dans une possible version future.}.
% Cette modification peut se faire
-% avec \texttt{stretch} ou avec |\vstrut|\oarg{depth}\marg{height}
-% \emph{qu'il faut placer dans la toute 1\iere colonne} pour
+% avec l'option \texttt{stretch} ou avec |\vstrut|\oarg{depth}\marg{height}
+% qu'il faut placer \emph{dans la colonne de légendes} pour
% que |\ZI| prenne en compte sa hauteur.
-% Dans l'exemple suivant, \texttt{stretch=2.2} aurait donné le même résultat pour
-% les variations mais une ligne des $x$ plus haute.
+% Dans l'exemple suivant, \texttt{stretch=2.2} aurait donné le même résultat
+% mais une ligne des $x$ plus haute.
%
%\[\begin{tablvar}[4em]{4}
% \hline
@@ -1080,7 +1100,7 @@
% \DescribeMacro{\hachure}
% Lorsque l'on dessine des zones interdites hachurées
% sur plusieurs colonnes contiguës,
-% les hachures seront en général discontinues.
+% les hachures ne seront en général pas jointives.
% Pour pallier cela, on peut
% utiliser la primitive graphique |\hachure|
% qui permet de définir manuellement le rectangle à hachurer.
@@ -1090,16 +1110,16 @@
%\[ \begin{tablvar}[intervalwidth=1.8em,ZIaddwidth=1pt]{8}
% \hline
% x & -\infty && -2 && -\sqrt{\frac{5}{2}} && -1
-% && 0 && 1 && \sqrt{\frac{5}{2}} && 2 && +\infty \\
+% && 0 && 1 && \sqrt{\frac{5}{2}} && 2 && +\infty \\
% \hline
% 2x & &-& \barre &-& \barre &-& \barre &-& \barre[0] &+&
-% \barre &+& \barre &+& \barre &+& \\
+% \barre &+& \barre &+& \barre &+& \\
% \hline
% 2x^2-5 & &+& \barre &+& \barre[0] &-& \barre &-& \barre &-&
-% \barre &-& \barre[0] &+& \barre &+& \\
+% \barre &-& \barre[0] &+& \barre &+& \\
% \hline
% f'(x) & &-& \bb & \ZI & \barre & \ZI & \bb &+&
-% \barre[0] &-& \bb & & & & \bb & + & \\
+% \barre[0] &-& \bb & & & & \bb & + & \\
% \hline
% \variations{\mil{f(x)} & \haut{+\infty} && \bas{0}\barre & \ZI &
% \barre & \ZI & \bas{0}\barre && \haut{2} && \bas{0}\barre \discont
@@ -1108,7 +1128,7 @@
% \hline
%\end{tablvar} \] }
%
-% Pour hachurer une zone donnée, la commande |\hachure| peut être placée où l'on veut
+% La commande |\hachure| peut être placée où l'on veut
% dans le tableau, il suffit de donner les coordonnées du rectangle visé à
% partir de la position courante (réglage manuel).
% Dans la partie variations, il faut mettre la commande |\hachure| dans un |\pos*|,
@@ -1119,16 +1139,16 @@
%\[ \begin{tablvar}[intervalwidth=1.8em,ZIaddwidth=1pt]{8}
% \hline
% x & -\infty && -2 && -\sqrt{\frac{5}{2}} && -1
-% && 0 && 1 && \sqrt{\frac{5}{2}} && 2 && +\infty \\
+% && 0 && 1 && \sqrt{\frac{5}{2}} && 2 && +\infty \\
% \hline
% 2x & &-& \barre &-& \barre &-& \barre &-& \barre[0] &+&
-% \barre &+& \barre &+& \barre &+& \\
+% \barre &+& \barre &+& \barre &+& \\
% \hline
% 2x^2-5 & &+& \barre &+& \barre[0] &-& \barre &-& \barre &-&
-% \barre &-& \barre[0] &+& \barre &+& \\
+% \barre &-& \barre[0] &+& \barre &+& \\
% \hline
% f'(x) & &-& \bb & \ZI & \barre & \ZI & \bb &+&
-% \barre[0] &-& \bb & & & & \bb & + & \\
+% \barre[0] &-& \bb & & & & \bb & + & \\
% \hline
% \variations{\mil{f(x)} & \haut{+\infty} && \bas{0}\barre & \ZI &
% \barre & \ZI & \bas{0}\barre && \haut{2} && \bas{0}\barre \discont
@@ -1219,11 +1239,11 @@
% \medskip
% \DescribeMacro{\tablvarset\marg{keyval}}
% Mais les environnements \texttt{tablvar} et \texttt{tablvar*} possèdent également
-% un jeu de paramètres qui peuvent être définis de manière globale
-% (ou locale dans un environnement ou un groupe |{...}|),
-% avec des variables spécifiques
-% ou (depuis la version 2.0) avec la commande |\tablvarset|\marg{keyval},
-% utilisant le mécanisme \emph{clé=valeur}.
+% un jeu de paramètres qui peuvent être définis de manière globale,
+% ou locale dans un environnement (ou un groupe |{...}|),
+% soit en utilisant des variables spécifiques,
+% soit (depuis la version 2.0) avec la commande |\tablvarset|\marg{keyval},
+% basée sur le mécanisme \emph{clé=valeur}.
%
% \DescribeEnv{tablvar\oarg{keyval}}\DescribeEnv{tablvar*\oarg{keyval}}
% Ces paramètres peuvent aussi être réglés localement,
@@ -1280,12 +1300,12 @@
% \begin{description}
% \item[stretch] qui est un facteur d'élasticité verticale agissant sur toutes
% les lignes du tableau
-% \footnote{Pour ajuster la hauteur d'une ligne particulière, on dispose de la
-% macro \texttt{\textbackslash vstrut}\oarg{depth}\marg{height}
+% \footnote{Pour augmenter la hauteur d'une ligne particulière, on pourra utiliser la
+% commande \texttt{\textbackslash vstrut}\oarg{depth}\marg{height}
% (du package \textsf{spacingtricks}~\cite{SPA}),
% où \meta{depth} désigne la \emph{profondeur} et \meta{height} la \emph{hauteur}
% minimales à atteindre par rapport à la ligne de \emph{base},
-% ou encore de \texttt{\bslash cstrut}\marg{height} qui garantit une hauteur minimale
+% ou encore \texttt{\bslash cstrut}\marg{height} qui garantit une hauteur minimale
% en-dessous et au-dessus de la ligne de centrage mathématique.} ;
% une valeur de 1 correspond à la valeur standard
% d'un environnement \texttt{array}.
@@ -1322,7 +1342,7 @@
%
% \medskip
% Le rendu des commandes graphiques peut également être modifié,
-% en redéfinissant ces commandes, en particulier |\fleche|, |vrconnect| et |\hachure|
+% en redéfinissant ces commandes, en particulier |\fleche|, |\vrconnect| et |\hachure|
% grâce aux nombreuses options offertes par PSTricks ou \TikZ.
% C'est le cas aussi de l'aspect des filets et barres du tableau qui sont définis
% par les commandes |\tvrulewidth| (\texttt{0.4pt} par défaut),
@@ -1349,8 +1369,8 @@
% \hline
% -\frac{x+2}{x^4} && - & \barre[0] & + & \bb & - & \\
% \hline
-% \variations{\mil{\e^{\frac{x+1}{x^2}}} & \haut{1} && \bas{\e^{-\frac{1}{4}}}
-% && \bblim{1}{+\infty}{1}{+\infty} && \bas{1} }
+% \variations{\mil{\e^{\frac{x+1}{\vstrut{1.2ex} x^2}}} & \haut{1} &&
+% \bas{\e^{-\frac{1}{4}}} && \bblim*{+}{+} && \bas{1} }
% \hline
%\end{tablvar} \]
% \begin{verbatim}
@@ -1366,24 +1386,27 @@
% \hline
% -\frac{x+2}{x^4} && - & \barre[0] & + & \bb & - & \\
% \hline
-% \variations{\mil{\e^{\frac{x+1}{x^2}}} & \haut{1} &&
-% \bas{\e^{-\frac{1}{4}}} && \bblim{1}{+\infty}{1}{+\infty} &&
-% \bas{1} }
+% \variations{\mil{\e^{\frac{x+1}{\vstrut{1.2ex} x^2}}} & \haut{1} &&
+% \bas{\e^{-\frac{1}{4}}} && \bblim*{+}{+} && \bas{1} }
% \hline
%\end{tablvar} \]
% \end{verbatim}
+%
+% Enfin deux autres paramètres de type longueur |\rowtopsep| et |\rowbottomsep|
+% garantissent un espace minimum (de \texttt{2pt} par défaut)
+% entre les filets horizontaux et le contenu des cellules, pour la colonne des légendes.
%
-% \subsection{Nouveautés de la version 2.0}
+% \subsection{Nouveautés depuis la version 2.0}
%
-% Cette version présente de nombreuses nouveautés :
+% La version 2.0 présente de nombreuses nouveautés :
% \begin{itemize}
% \item \emph{Il n'y a plus d'option par défaut} à l'appel de l'extension.
% C'était \texttt{pstricks} dans les versions précédentes.
% Dorénavant, si aucune option n'est précisée, l'extension choisira elle-même
-% en fonction du compilateur utilisé, donc \texttt{tikz} pour le moteur pdf\LaTeX\
+% en fonction du compilateur utilisé, donc \texttt{tikz} pour pdf\LaTeX\
% qui ne supporte pas le code PSTricks.
%
-% \item \emph{Les colonnes de valeurs ont des largeurs fixes (\texttt{2em} par défaut)}
+% \item \emph{Les colonnes de valeurs ont des largeurs fixes} (\texttt{2em} \emph{par défaut)}
% et non plus variables en fonction du contenu, comme c'était le cas jusqu'à la version
% 1.2. L'avantage est d'améliorer le centrage pour les signes,
% lorsque les colonnes de valeurs ont des largeurs très différentes,
@@ -1395,7 +1418,7 @@
% et a été fixé à \texttt{0pt} car, en l'absence de filets verticaux,
% il ne sert plus à rien avec les colonnes à largeur fixe.
% Mais, en contrepartie, \emph{la valeur par défaut de} |\intervalwidth|
-% \emph{a été augmentée de \texttt{2.5em} à \texttt{3em}}.
+% \emph{a été augmentée de} \texttt{2.5em} \emph{à} \texttt{3em}.
%
% \item Les réglages peuvent désormais être effectués,
% avec la syntaxe \emph{clé = valeur} et la commande |\tablvarset|,
@@ -1446,12 +1469,26 @@
% De nouveaux types de colonnes ont été définis pour les valeurs et légendes,
% mais sont également internes à l'environnement \texttt{tablvar}.
%
-% \item Les macros |\haut|, |\bas| et |\mil| peuvent à présent être utilisées
+% \item Les macros |\bas| et |\mil| peuvent à présent être utilisées
% même lorsque le nombre de lignes de variations est différent de 3.
% Dans ce cas, commande |\mil| calcule automatiquement le décalage vertical ;
% l'utilisateur n'a plus besoin d'un appel explicite à |\vdecal|.
% \end{itemize}
%
+% Dans la version 2.1 :
+% \begin{itemize}
+% \item Ont été ajoutés deux nouveaux paramètres |\rowtopsep| et |\rowbottomsep|
+% pour garantir un espace minimum (de \texttt{2pt} par défaut)
+% entre les filets horizontaux et le contenu pour la colonne des légendes.
+% \item
+% Il est désormais possible d'utiliser l'option \texttt{pstricks} avec \LuaLaTeX,
+% si \textsf{luapstricks} est installé sur votre distribution.
+% \item Le calcul du décalage vertical de la commande |\mil| a été amélioré,
+% dans le cas d'un nombre pair de lignes de variations.
+% \item Les nouvelles commandes étoilées |\limg*|, |\limd*| et |\bblim*|
+% permettent une écriture simplifiée de |\limg|, |\limd| et |\bblim|,
+% pour des limites $\infty$.
+% \end{itemize}
% \medskip
% Des problèmes de composition peuvent apparaître avec des tableaux
% réalisés antérieurement à la version 2.0, en particulier
@@ -1469,16 +1506,81 @@
% dans la rubrique \og Maths tabvar \fg.
% Nous les décrivons ici brièvement.
% \begin{description}
-% \item[tableaux] de Nicolas Kisselhoff~\cite{TABL}.
+% \item[tableaux] de Nicolas Kisselhoff~\cite{TABL}.
% Propose un pseudo-code PSTricks,
% certainement plus commode que d'écrire toutes les commandes PSTricks.
-
+% Attention l'extension doit être appelée avec |\usepackage{tableau}|, sans \texttt{x}.
+% Voici un exemple repris de la doc de \textsf{tableaux} avec le code en suivant.
+%\newpsstyle{hachured}{fillstyle=hlines,hatchwidth=0.2pt,hatchsep=2pt}
+%\setlength{\TabTitreL}{1cm}
+%
+%\begin{MonTableau}{1}{9}{1.5}
+%\psframe[style=hachured,linestyle=none](.3,1)(.45,0)
+%
+%\TabNewCol{0}
+%\rTabPut{Br}{-.15}{.25}{$x$}
+%\rTabPut{Br}{-.15}{.40}{$f(x)$}
+%
+%\TabNewCol{0}
+%\rTabPut{Bl}{.15}{.25}{$0$}
+%\rTabPut{Bl}{.15}{.60}{$\frac{3}{2}$}
+%
+%\TabNewCol{.30}
+%\rTabPut{B}{0}{.25}{$1$}
+%\rTabPut{Br}{-.15}{.80}{$+\infty$}
+%\psline[style=TabDblBarre](.3,0)(.3,1)
+%
+%\TabNewCol{.45}
+%\rTabPut{B}{0}{.25}{$\frac{3}{2}$}
+%\rTabPut[2]{B}{0}{.10}{\TabZ}
+%
+%\TabNewCol{1}
+%\rTabPut{Br}{-.15}{.25}{$+\infty$}
+%\rTabPut{Br}{-.15}{.40}{$1$}
+%
+%\TabFleche{B1}{C1}
+%\TabFleche{D1}{E1}
+%\end{MonTableau}
+%
+% \begin{verbatim}
+%\newpsstyle{hachured}{fillstyle=hlines,hatchwidth=0.2pt,hatchsep=2pt}
+%\setlength{\TabTitreL}{1cm}
+%
+%\begin{MonTableau}{1}{9}{1.5}
+%\psframe[style=hachured,linestyle=none](.3,1)(.45,0)
+%
+%\TabNewCol{0}
+%\rTabPut{Br}{-.15}{.25}{$x$}
+%\rTabPut{Br}{-.15}{.40}{$f(x)$}
+%
+%\TabNewCol{0}
+%\rTabPut{Bl}{.15}{.25}{$0$}
+%\rTabPut{Bl}{.15}{.60}{$\frac{3}{2}$}
+%
+%\TabNewCol{.30}
+%\rTabPut{B}{0}{.25}{$1$}
+%\rTabPut{Br}{-.15}{.80}{$+\infty$}
+%\psline[style=TabDblBarre](.3,0)(.3,1)
+%
+%\TabNewCol{.45}
+%\rTabPut{B}{0}{.25}{$\frac{3}{2}$}
+%\rTabPut[2]{B}{0}{.10}{\TabZ}
+%
+%\TabNewCol{1}
+%\rTabPut{Br}{-.15}{.25}{$+\infty$}
+%\rTabPut{Br}{-.15}{.40}{$1$}
+%
+%\TabFleche{B1}{C1}
+%\TabFleche{D1}{E1}
+%\end{MonTableau}
+% \end{verbatim}
+%
% \item[tabvar] de Daniel Flipo~\cite{TABV},
% l'auteur, entre-autres de \textsf{babel-french},
% extension bien connue de tous les utilisateurs francophones de \LaTeX.
% Permet de réaliser des tableaux plutôt symboliques.
% Voici un tableau simple et son code \textsf{tabvar}. \\
-% \begin{minipage}[t]{7cm}
+% \begin{minipage}[t]{7.5cm}
% \begin{verbatim}
%\[\begin{tabvar}{|C|CCCCR|}
% \hline
@@ -1492,7 +1594,7 @@
%\end{tabvar}\]
% \end{verbatim}
% \end{minipage}
-% \begin{minipage}[t]{5cm}
+% \begin{minipage}[t]{4.2cm}
%\[\begin{tabvar}{|C|CCCCR|}
% \hline
% x & 0 & & \frac{1}{2} & & 1 \\
@@ -1551,19 +1653,19 @@
% Une très belle extension qui fait a peu près tout ce que fait \textsf{tablvar}
% et même un peu plus : par exemple tangentes horizontales sur les extrema,
% cellules en couleur.
-% Un de ses principaux avantages par rapport à \textsf{tablvar} est de ne pas nécessiter
+% Un de ses principaux bénéfices par rapport à \textsf{tablvar} est de ne pas nécessiter
% de double compilation
% \footnote{La double compilation avec \textsf{tablvar} n'est cependant nécessaire
% qu'avec l'option \texttt{tikz}.}.
-% Signalons quelques différences avec \textsf{tablvar} :
+% Signalons quand même quelques avantages de \textsf{tablvar} :
% \begin{itemize}
-% \item un tableau n'est pas globalement en mode mathématique, il faut donc mettre les
-% \$ du mode math autour de chaque valeur,
-% \item les hauteurs de ligne doivent être précisées de manière explicite et
-% ne peuvent être données qu'en cm (unité fixe qui ne s'ajuste pas à la fonte),
-% \item \textsf{tablvar} offre la possibilité de mettre des 0 par dessus les flèches,
-% \item les double barres aux extrémités du tableau sont assez éloignées des filets,
-% ce qui peut donc laisser un certain blanc sur les bords.
+% \item avec \textsf{tkz-tab}, un tableau n'est pas globalement en mode mathématique,
+% il faut donc mettre les |$| du mode math autour de chaque valeur,
+% \item et les hauteurs de ligne doivent être précisées de manière explicite et
+% uniquement cm (unité fixe qui ne s'ajuste pas à la fonte),
+% \item \textsf{tablvar} offre la possibilité de mettre des valeurs par dessus les flèches,
+% \item dans \textsf{tkz-tab}, les double barres aux extrémités du tableau
+% sont assez éloignées des filets, ce qui laisse un blanc important sur les bords.
% \end{itemize}
% Voici un exemple illustrant ce dernier point, avec son code.
% Pour comparer, le tableau obtenu avec \textsf{tablvar}
@@ -1615,7 +1717,7 @@
\RequirePackage{ifthen}
\RequirePackage{multido}
\RequirePackage{xkeyval}
-\RequirePackage{ifpdf}
+\RequirePackage{iftex}
\newif\iftv@tikz % false par défaut
\DeclareOption{tikz}{\tv@tikztrue}
@@ -1625,23 +1727,31 @@
\iftv@pstricks
\ifpdf
- \PackageError{tablvar}{Don't use the pstricks option with PDF engines}{}
+ \ifluatex
+ \PackageInfo{tablvar}{Option 'pstricks' works
+ with luapstricks}
+ \else
+ \PackageError{tablvar}{Don't use the 'pstricks' option with
+ PDF output mode}{Use 'tikz' option or change the engine}
+ \fi
\else
- \PackageInfo{tablvar}{PSTricks option is used}
+ \PackageInfo{tablvar}{Option 'pstricks' is used}
\fi
\else\iftv@tikz
- \PackageInfo{tablvar}{tikz option is used.
+ \AtEndDocument{\PackageWarningNoLine{tablvar}{Option 'tikz' is used.
\MessageBreak
- Run twice to draw the arrows correctly}
+ Maybe rerun to draw the arrows correctly}
+ }
\else\ifpdf
- \PackageWarningNoLine{tablvar}{PDF engine is used,
- I'm using the tikz option.
+ \AtEndDocument{\PackageWarningNoLine{tablvar}{Output is in PDF mode,
+ I'm using the 'tikz' option.
\MessageBreak
- Run twice to draw the arrows correctly}
+ Maybe rerun to draw the arrows correctly}
+ }
\tv@tikztrue
\else
- \PackageWarningNoLine{tablvar}{PDF engines not used,
- I'm using the pstricks option}
+ \PackageWarningNoLine{tablvar}{Output is in DVI mode,
+ I'm using the 'pstricks' option}
\tv@pstrickstrue
\fi\fi\fi
@@ -1832,6 +1942,28 @@
% \end{macrocode}
% \end{macro}
+% \begin{macro}{\rowtopsep}
+% Cette longueur définit l'espace minimal entre le filet vertical supérieur et le contenu,
+% pour les cellules de la colonne des légendes.
+% Elle ne s'applique pas pour les lignes de variations
+% puisque, dans la colonne des légendes, seule la ligne
+% \og milieu \fg est censée posséder un contenu.
+% \begin{macrocode}
+\newlength{\rowtopsep}
+\setlength{\rowtopsep}{2pt}
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\rowbottomsep}
+% Cette longueur définit l'espace minimal entre le filet vertical inférieur et le contenu,
+% pour les cellules de la colonne des légendes.
+% Elle ne s'applique pas pour les lignes de variations.
+% \begin{macrocode}
+\newlength{\rowbottomsep}
+\setlength{\rowbottomsep}{2pt}
+% \end{macrocode}
+% \end{macro}
+
% \subsection{Les commandes graphiques PSTricks/\TikZ} \label{graph}
%
% Nous présentons ici les commandes graphiques permettant le dessin
@@ -1962,12 +2094,13 @@
}
% \end{macrocode}
-% La commande |\mil| positionne son contenu sur la colonne 2,
-% mais réalise un décalage vertical si le nombre de lignes de variations diffère de 3.
+% La commande |\mil| positionne son contenu sur la colonne |mil@row|,
+% et réalise un décalage vertical de |\mil@shift|
+% si le nombre de lignes de variations est pair.
% Pour cela nous avons besoin d'une variable de dimension et d'un compteur.
% \begin{macrocode}
-\newlength\mil@heightshift
-\newcounter{mil@rowshift}
+\newlength\mil@shift
+\newcounter{mil@row}
% \end{macrocode}
% Pour gérer correctement les zones interdites, avec la commande |\ZI|,
@@ -2046,7 +2179,7 @@
% \end{macrocode}
% \end{macro}
-% \begin{macro}{\tv@saveheight}
+% \begin{macro}{\tv@setheight}
% Cette macro sert à calculer la hauteur et la profondeur d'une cellule,
% qui seront enregistrées dans des variables globales afin que la commande |\ZI|
% puisse les récupérer.
@@ -2071,21 +2204,22 @@
% et le contenu de la cellule agrandie va toucher le filet horizontal.
% La solution est alors de placer un |\vstrut| ou |\cstrut| dans la colonne
% de légendes pour augmenter sa hauteur qui, de ce fait, sera bien enregistrée
-% par |\tv@saveheight|.
+% par |\tv@setheight|.
% \begin{macrocode}
-\newcommand\tv@saveheight{%
- \tv@cellheight=0pt
- \tv@celldepth=0pt
- \ifdim \ht\tv@cellbox > \ht\@arstrutbox
- \global\advance\tv@cellheight by \ht\tv@cellbox
- \else
- \global\advance\tv@cellheight by \ht\@arstrutbox
+\newcommand\tv@setheight{%
+ \global\tv@cellheight=\ht\tv@cellbox
+ \ifthenelse{\value{var@ligne}=0}{
+ \global\advance\tv@cellheight by \rowtopsep}{}
+ \ifdim \tv@cellheight < \ht\@arstrutbox
+ \global\tv@cellheight = \ht\@arstrutbox
\fi
- \ifdim \dp\tv@cellbox > \dp\@arstrutbox
- \global\advance\tv@celldepth by \dp\tv@cellbox
- \else
- \global\advance\tv@celldepth by \dp\@arstrutbox
+ \global\tv@celldepth=\dp\tv@cellbox
+ \ifthenelse{\value{var@ligne}=0}{
+ \global\advance \tv@celldepth by \rowbottomsep}{}
+ \ifdim \tv@celldepth < \dp\@arstrutbox
+ \global\tv@celldepth = \dp\@arstrutbox
\fi
+ \vrule height \tv@cellheight depth \tv@celldepth width 0pt
}
% \end{macrocode}
% \end{macro}
@@ -2115,7 +2249,7 @@
>{\setcounter{tv@icol}{0}\stepcounter{tv@row}\begin{lrbox}%
\tv@cellbox $}%
c%
- <{$\end{lrbox}\usebox{\tv@cellbox}\tv@saveheight}}
+ <{$\end{lrbox}\usebox{\tv@cellbox}\tv@setheight}}
% type de colonne i pour les intervalles
\newcolumntype{i}{>{\stepcounter{tv@icol}
\centering\arraybackslash$}p{\intervalwidth}<{$}}
@@ -2142,7 +2276,7 @@
% On commence par prendre en compte les options grâce à |\setkeys*| fourni par l'extension
% \textsf{xkeyval}. La version étoilée de |\setkeys|
% a l'avantage de ne pas produire d'erreur lorsqu'une clé n'est pas reconnue
-% (celle-ci est passée à |XKV@rm|). On l'interprète
+% (celle-ci est passée à |\XKV@rm|). On l'interprète
% \footnote{Un message d'erreur de dimension erronée
% peut donc signifier que l'on s'est trompé dans l'orthographe d'une clé.}
% alors comme une dimension pour le paramètre |\intervalwidth|.
@@ -2156,8 +2290,8 @@
\setkeys*{tablvar}{#1} % fourni par xkeyval
\if\XKV@rm\empty \else \setlength{\intervalwidth}{#1} \fi
\tvcoltypes
- \ifextleft \newcolumntype{B}{v{l}} \else \newcolumntype{B}{v{c}} \fi
- \ifextright \newcolumntype{E}{v{r}} \else \newcolumntype{E}{v{c}} \fi
+ \ifextleft\newcolumntype{B}{v{l}}\else\newcolumntype{B}{v{c}}\fi
+ \ifextright\newcolumntype{E}{v{r}}\else\newcolumntype{E}{v{c}}\fi
\tablvarinit{#2}
\ZIinit
\begin{array}{%
@@ -2228,11 +2362,12 @@
% Les flèches et pointillés sont dessinés à la fin, quand tous les nœuds sont créés,
% mais il faut les tracer avant le |\\| final, sinon la compilation plante !
% Le compteur |var@ligne| doit être remis à 0 au cas où il y a plusieurs parties variations.
+% Cette remise à zéro s'effectue à la fin au cas où on mettrait des lignes de signes
+% après une ligne variations.
% \begin{macrocode}
\newcommand*{\variations}[2][3]{% #1=nblignes (3 par défaut)
% (ré)initialisation des compteurs
\setcounter{nbvarlignes}{#1}
- \setcounter{var@ligne}{0}
\setcounter{numdiscont}{0}
\multido{\I=1+1}{\themaxdiscont}{\setcounter{discont\I}{0}}
% boucle : on exécute le code #2 un nb de fois égal à (#1)-1
@@ -2259,6 +2394,7 @@
}
% tracé des pointillés pour les valeurs remarquables
\multido{\Ix=1+1}{\thenumvr}{\vrconnect{X\Ix}{Y\Ix}}
+ \setcounter{var@ligne}{0}
\\ % dernier retour ligne du tableau
}
% \end{macrocode}
@@ -2291,6 +2427,7 @@
% Place son contenu dans une boite de largeur nulle : affiche le contenu
% mais considère que l'espace occupé est nul pour ne pas altérer le calcul de la
% largeur de colonne.
+% Cette macro est similaire à |\mathclap| de l'extension \textsf{mathtools}~\cite{TOOLS}.
% Sa syntaxe est :
% |\zbox|\oarg{pos}\marg{contenu} où \meta{opt} = |c| (par défaut), |l| (left) ou |r| (right).
% \begin{macrocode}
@@ -2367,24 +2504,31 @@
% \end{macro}
% \begin{macro}{\mil}
-% La commande |\mil|\marg{valeur} positionne \meta{valeur} sur la ligne 2
-% de la partie variations. Lorsqu'il y a 3 lignes de variations cela correspond bien
-% au milieu, mais sinon on réalise un décalage vertical grâce à |\vdecal|.
-% La formule de ce décalage est
-% $(3- \mbox{nblignes}) \times (\mbox{hauteur de ligne})/2$.
-% Le résultat de ce calcul est stocké dans la variable de dimension |\mil@heightshift|.
-% Au cas où |\mil| ne donnerait pas un résultat parfait, on pourrait alors régler
+% Pour un nombre $n$ impair de lignes de variations,
+% la commande |\mil|\marg{valeur} positionne \meta{valeur} sur la ligne $\frac{n+1}{2}$
+% de la partie variations. Cela correspond bien à la ligne du milieu :
+% ligne 2 lorsqu'il y a 3 lignes.
+% Par contre si $n$ est pair, on place \meta{valeur} sur la ligne $\frac{n}{2}$ mais avec
+% un décalage vertical négatif (vers le bas) grâce à |\vdecal|.
+% Ce décalage correspond à une profondeur de cellule augmenté de \texttt{0.5ex}
+% (écart entre la ligne de base du texte et la ligne de centrage mathématique).
+% Le résultat de ce calcul est stocké dans la variable de dimension |\mil@shift|.
+% Au cas où l'on ne serait pas satisfait du résultat de |\mil|, on pourrait alors régler
% le décalage manuellement avec
%|\pos*|\marg{ligne}|{\vdecal|\marg{decal}\marg{contenu}|}|.
% \begin{macrocode}
\newcommand*{\mil}[1]{%
- \mil@heightshift = \ht\@arstrutbox
- \advance\mil@heightshift by \dp\@arstrutbox
- \divide\mil@heightshift by 2
- \setcounter{mil@rowshift}{3}
- \addtocounter{mil@rowshift}{-\value{nbvarlignes}}
- \multiply\mil@heightshift by \value{mil@rowshift}
- \pos*{2}{\vdecal{\mil@heightshift}{#1}}
+ \setcounter{mil@row}{\value{nbvarlignes}}
+ \ifthenelse{\isodd{\value{nbvarlignes}}}{
+ \addtocounter{mil@row}{1}
+ \divide\value{mil@row} by 2
+ \pos*{\themil@row}{\smash{#1}}
+ }{
+ \divide\value{mil@row} by 2
+ \mil@shift = \dp\@arstrutbox
+ \advance\mil@shift by 0.5ex
+ \pos*{\themil@row}{\vdecal{-\mil@shift}{#1}}
+ }
}
% \end{macrocode}
% \end{macro}
@@ -2409,7 +2553,7 @@
% \begin{macro}{\bb}
% La macro |\bb|, qui produit une double barre,
-% reprend celle de l'extension \textsf{variations} de Christian Obrecht
+% reprend celle de l'extension \mbox{\textsf{variations}} de Christian Obrecht :
% |\def\bb{\vrule\kern1pt\vrule}|.
% Nous avons ajouté \texttt{1.5pt} d'espace avant et après, afin d'aligner au mieux
% la double barre avec un 0 sur la ligne des $x$, lorsque la double barre
@@ -2423,14 +2567,38 @@
% \end{macro}
% \DescribeMacro{\limg}\DescribeMacro{\limd}
-% Les macros |\limg| et |limd| servent à positionner des limites à gauche \emph{ou} à droite,
+% Les macros |\limg| et |\limd| servent à positionner des limites à gauche ou à droite,
% en particulier aux bords des double barres.
% Le premier paramètre, optionnel, précise l'option de positionnement (\texttt{c},
% \texttt{l} ou \texttt{r}) et le second \emph{obligatoire} et le numéro de ligne,
% enfin le troisième est la valeur à placer.
+%
+% \DescribeMacro{\limg*}\DescribeMacro{\limd*}
+% Les versions étoilées n'acceptent comme argument que \texttt{+} ou \texttt{-},
+% |\limg*{+}| correspond à |\limg{1}{+\infty}|,
+% |\limg*{-}| correspond à |\limg{|$n$|}{-\infty}| (pour une partie variations
+% sur $n$ lignes et de même pour |\limd*|.
% \begin{macrocode}
-\newcommand*{\limg}[3][c]{\zbox[r]{\valpos[#1]{#2}{#3\hspace{\limsep}}}}
-\newcommand*{\limd}[3][c]{\zbox[l]{\valpos[#1]{#2}{\hspace{\limsep}#3}}}
+\newcommand*{\@limg}[3][c]{%
+ \zbox[r]{\valpos[#1]{#2}{#3\hspace{\limsep}}}}
+\newcommand*{\@limd}[3][c]{%
+ \zbox[l]{\valpos[#1]{#2}{\hspace{\limsep}#3}}}
+\newcommand*{\@@limg}[1]{%
+ \ifthenelse{\equal{#1}{+}}{\@limg{1}{+\infty}}{
+ \ifthenelse{\equal{#1}{-}}{\@limg{\value{nbvarlignes}}{-\infty}}{
+ \PackageError{tablvar}{Invalid argument for \string\limg*}
+ {Only + or - are valid arguments for \string\limg*}
+ }}
+}
+\newcommand*{\@@limd}[1]{%
+ \ifthenelse{\equal{#1}{+}}{\@limd{1}{+\infty}}{
+ \ifthenelse{\equal{#1}{-}}{\@limd{\value{nbvarlignes}}{-\infty}}{
+ \PackageError{tablvar}{Invalid argument for \string\limd*}
+ {Only + or - are valid arguments for \string\limd*}
+ }}
+}
+\newcommand{\limg}{\@ifstar{\@@limg}{\@limg}}
+\newcommand{\limd}{\@ifstar{\@@limd}{\@limd}}
% \end{macrocode}
% \begin{macro}{\discont}
@@ -2458,16 +2626,19 @@
% \end{macrocode}
% \end{macro}
-% \begin{macro}{\bblim}
-% Sert à positionner des limites à gauche \emph{et} à droite
+% \DescribeMacro{\bblim}\DescribeMacro{\bblim*}
+% Ces macros servent à positionner des limites à gauche \emph{et} à droite
% d'une double barre.
-% Cette macro trace la double barre, place les limites et appelle |\discont|.
-% Sa syntaxe est :
-% |\bblim|\marg{ligne gauche}\marg{limite gauche}\marg{ligne droite}\marg{limite droite}.
+% Elles tracent la double barre, placent les limites et appellent |\discont|.\\
+% La syntaxe de |\bblim| est : \\
+% |\bblim|\marg{ligne gauche}\marg{limite gauche}\marg{ligne droite}\marg{limite droite}.\\
+% La syntaxe de|\bblim*| reprend celle de |\limg*| et |\limd*| :
+% |\bblim*|\marg{+$\vert$-}\marg{+$\vert$-}.
% \begin{macrocode}
-\newcommand*{\bblim}[4]{\limg{#1}{#2}\bb\discont\limd{#3}{#4}}
+\newcommand*{\@bblim}[4]{\limg{#1}{#2}\bb\discont\limd{#3}{#4}}
+\newcommand*{\@@bblim}[2]{\limg*{#1}\bb\discont\limd*{#2}}
+\newcommand*{\bblim}{\@ifstar{\@@bblim}{\@bblim}}
% \end{macrocode}
-% \end{macro}
% \begin{macro}{\vr}
% La commande |\vr| fabrique un nœud pour chaque valeur remarquable.
@@ -2595,7 +2766,7 @@
% courante dans une des 4 variables de dimension |\ZIheighti|, \ldots, |\ZIheightiv|
% correspondant à la zone interdite appelante.
% On récupère hauteur et profondeur qui ont été enregistrés dans
-% les variables globales |\tv@cellheight| et |\tv@cellheight|,
+% les variables globales |\tv@cellheight| et |\tv@celldepth|,
% par la colonne de légendes de la même ligne.
% Le numéro de la ZI (son indice) est passé en argument.
% \begin{macrocode}
@@ -2711,18 +2882,18 @@
% \end{macrocode}
%
% \bigskip
-% \begin{thebibliography}{14}
+% \begin{thebibliography}{15}
% \begin{raggedright}
-% \bibitem{TABL} \emph{Tableaux}. Nicolas Kisselhoff, CTAN.
-% \bibitem{TABV} \emph{Tableaux de variations : \textsf{‘tabvar’}}. Daniel Flipo,
+% \bibitem{TABL} \emph{Tableaux}, Nicolas Kisselhoff, CTAN.
+% \bibitem{TABV} \emph{Tableaux de variations : \textsf{‘tabvar’}}, Daniel Flipo,
% CTAN, v1.8 16/07/2022.
-% \bibitem{VARI} \emph{L'extension \textsf{variations}}. Christian Obrecht,
+% \bibitem{VARI} \emph{L'extension \textsf{variations}}, Christian Obrecht,
% CTAN, v0.3 13/09/2006.
% \bibitem{TABLOR} \emph{\textsf{tablor.sty} La machine à créer des tableaux
-% de signes et de variations}. Guillaume Connan, CTAN, v4.07 09/05/2010.
+% de signes et de variations}, Guillaume Connan, CTAN, v4.07 09/05/2010.
% \bibitem{VARMP} \emph{\textsf{tableauVariations} -- Variation tables in
-% \textlogo{METAPOST}}. Frédéric Mazoit, CTAN, 2005.
-% \bibitem{TKZ} \emph{\textsf{Tkz-Tab}}. Alain Matthes, CTAN,
+% \textlogo{METAPOST}}, Frédéric Mazoit, CTAN, 2005.
+% \bibitem{TKZ} \emph{\textsf{Tkz-Tab}}, Alain Matthes, CTAN,
% v2.12c 29/04/2020.
% \bibitem{ARRAY} \emph{A new implementation of LATEX’s \textsf{tabular} and \textsf{array}
% environment}, Frank Mittelbach, David Carlisle, CTAN, v2.5g revised 16/10/2023.
@@ -2734,12 +2905,14 @@
% v1.9.0 04/01/2022.
% \bibitem{SPA} \emph{The \textsf{spacingtricks} package}, Antoine Missier,
% CTAN, v1.7 28/07/2023.
-% \bibitem{XKEY} \emph{The \textsf{xkeyval} package}. Hendri Adriaens,
-% CTAN, v2.9, 16/06/2022.
-% \bibitem{MIS} \emph{\textsf{mismath} -- Miscellaneous mathematical macros},
-% Antoine Missier, CTAN, v2.9 19/12/2023.
-% \bibitem{FR} \emph{L'extension \textsf{frenchmath}}. Antoine Missier,
-% CTAN, v2.7, 23/12/2023.
+% \bibitem{XKEY} \emph{The \textsf{xkeyval} package}, Hendri Adriaens,
+% CTAN, v2.9 16/06/2022.
+% \bibitem{TOOLS} \emph{The \textsf{mathtools} package}, Morten Høgholm, Lars Madsen,
+% CTAN, v1.23 17/01/2020.
+% \bibitem{MIS} Miscellaneous mathematical macros -- The \emph{\textsf{mismath} package},
+% Antoine Missier, CTAN, v3.1 16/06/2024.
+% \bibitem{FR} \emph{L'extension \textsf{frenchmath}}, Antoine Missier,
+% CTAN, v3.1 07/05/2024.
% \end{raggedright}
% \end{thebibliography}
% \Finale
diff --git a/macros/latex/contrib/tablvar/tablvar.ins b/macros/latex/contrib/tablvar/tablvar.ins
index 0280b61773..192a1eb6e8 100644
--- a/macros/latex/contrib/tablvar/tablvar.ins
+++ b/macros/latex/contrib/tablvar/tablvar.ins
@@ -1,5 +1,5 @@
%%
-%% Copyright (C) 2018-2023 by Antoine Missier <antoine.missier@ac-toulouse.fr>
+%% Copyright (C) 2018-2024 by Antoine Missier <antoine.missier@ac-toulouse.fr>
%%
%% This file may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License, either version 1.3 of this license
@@ -21,7 +21,7 @@
This is a generated file.
-Copyright (C) 2018-2023 by Antoine Missier <antoine.missier@ac-toulouse.fr>
+Copyright (C) 2018-2024 by Antoine Missier <antoine.missier@ac-toulouse.fr>
This file may be distributed and/or modified under the conditions of
the LaTeX Project Public License, either version 1.3 of this license
@@ -46,7 +46,7 @@ and version 1.3 or later is part of all distributions of LaTeX version
\Msg{* tablvar.sty *}
\Msg{* *}
\Msg{* To produce the documentation run the file tablvar.dtx *}
-\Msg{* through XeLaTeX or LaTeX + dvips + ps2pdf. *}
+\Msg{* through LaTeX + dvips + ps2pdf. *}
\Msg{* *}
\Msg{* Happy TeXing! *}
\Msg{* *}
diff --git a/macros/latex/contrib/tablvar/tablvar.pdf b/macros/latex/contrib/tablvar/tablvar.pdf
index 7f5962d8fc..d949a47be3 100644
--- a/macros/latex/contrib/tablvar/tablvar.pdf
+++ b/macros/latex/contrib/tablvar/tablvar.pdf
Binary files differ
diff --git a/macros/latex/contrib/tabulary/README b/macros/latex/contrib/tabulary/README.txt
index ed7423902f..ed7423902f 100644
--- a/macros/latex/contrib/tabulary/README
+++ b/macros/latex/contrib/tabulary/README.txt
diff --git a/macros/latex/contrib/tabulary/tabulary-v010.sty b/macros/latex/contrib/tabulary/tabulary-v010.sty
new file mode 100644
index 0000000000..0a092d7d67
--- /dev/null
+++ b/macros/latex/contrib/tabulary/tabulary-v010.sty
@@ -0,0 +1,455 @@
+%%
+%% This is an old release of `tabulary.sty' used during rollback operations.
+%% Do not use this file directly.
+%% ==============================
+%%
+%% This is file `tabulary.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% tabulary.dtx (with options: `package')
+%% DRAFT VERSION
+%%
+%% File `tabulary.dtx'.
+%% Copyright (C) 1995 1996 2003 2008 David Carlisle
+%% This file may be distributed under the terms of the LPPL.
+%% See 00readme.txt for details.
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{tabulary}
+ [2014/06/11 v0.10 tabulary package (DPC)]
+\RequirePackage{array}[=v2.5]
+\catcode`\Z=14
+\DeclareOption{debugshow}{\catcode`\Z=9\relax}
+\ProcessOptions
+\def\arraybackslash{\let\\=\@arraycr}
+\def\@finalstrut#1{%
+ \unskip\ifhmode\nobreak\fi\vrule\@width\z@\@height\z@\@depth\dp#1}
+\newcount\TY@count
+\def\tabulary{%
+ \let\TY@final\tabular
+ \let\endTY@final\endtabular
+ \TY@tabular}
+\def\TY@tabular#1{%
+ \edef\TY@{\@currenvir}%
+ {\ifnum0=`}\fi
+ \@ovxx\TY@linewidth
+ \@ovyy\TY@tablewidth
+ \count@\z@
+ \@tempswatrue
+ \@whilesw\if@tempswa\fi{%
+ \advance\count@\@ne
+ \expandafter\ifx\csname TY@F\the\count@\endcsname\relax
+ \@tempswafalse
+ \else
+ \expandafter\let\csname TY@SF\the\count@\expandafter\endcsname
+ \csname TY@F\the\count@\endcsname
+ \global\expandafter\let\csname TY@F\the\count@\endcsname\relax
+ \expandafter\let\csname TY@S\the\count@\expandafter\endcsname
+ \csname TY@\the\count@\endcsname
+ \fi}%
+ \global\TY@count\@ne
+ \TY@width\xdef{0pt}%
+ \global\TY@tablewidth\z@
+ \global\TY@linewidth#1\relax
+Z\message{^^J^^JTable^^J%
+Z Target Width: \the\TY@linewidth^^J%
+Z \string\tabcolsep: \the\tabcolsep\space
+Z \string\arrayrulewidth: \the\arrayrulewidth\space
+Z \string\doublerulesep: \the\doublerulesep^^J%
+Z \string\tymin: \the\tymin\space
+Z \string\tymax: \the\tymax^^J}%
+ \let\@classz\TY@classz
+ \let\verb\TX@verb
+ \toks@{}\TY@get@body}
+\let\TY@@mkpream\@mkpream
+\def\TY@mkpream{%
+ \def\@addamp{%
+ \if@firstamp \@firstampfalse \else
+ \global\advance\TY@count\@ne
+ \edef\@preamble{\@preamble &}\fi
+ \TY@width\xdef{0pt}}%
+ \def\@acol{%
+ \TY@subwidth\col@sep
+ \@addtopreamble{\hskip\col@sep}}%
+ \let\@arrayrule\TY@arrayrule
+ \let\@classvi\TY@classvi
+ \def\@classv{\save@decl
+ \expandafter\NC@ecs\@nextchar\extracolsep{}\extracolsep\@@@
+ \sbox\z@{\d@llarbegin\@nextchar\d@llarend}%
+ \TY@subwidth{\wd\z@}%
+ \@addtopreamble{\d@llarbegin\the@toks\the\count@\relax\d@llarend}%
+ \prepnext@tok}%
+ \global\let\@mkpream\TY@@mkpream
+ \TY@@mkpream}
+\def\TY@arrayrule{%
+ \TY@subwidth\arrayrulewidth
+ \@addtopreamble \vline}
+\def\TY@classvi{\ifcase \@lastchclass
+ \@acol \or
+ \TY@subwidth\doublerulesep
+ \@addtopreamble{\hskip \doublerulesep}\or
+ \@acol \or
+ \@classvii
+ \fi}
+\def\TY@tab{%
+ \setbox\z@\hbox\bgroup
+ \let\[$\let\]$%
+ \let\equation$\let\endequation$%
+ \col@sep\tabcolsep
+ \let\d@llarbegin\begingroup\let\d@llarend\endgroup
+ \let\@mkpream\TY@mkpream
+ \def\multicolumn##1##2##3{\multispan##1\relax}%
+ \CT@start\TY@tabarray}
+\def\TY@tabarray{\@ifnextchar[{\TY@array}{\@array[t]}}
+\def\TY@array[#1]{\@array[t]}
+\def\TY@width#1{%
+ \expandafter#1\csname TY@\the\TY@count\endcsname}
+\def\TY@subwidth#1{%
+ \TY@width\dimen@
+ \advance\dimen@-#1\relax
+ \TY@width\xdef{\the\dimen@}%
+ \global\advance\TY@linewidth-#1\relax}
+\def\endtabulary{%
+ \gdef\@halignto{}%
+ \expandafter\TY@tab\the\toks@
+ \crcr\omit
+ {\xdef\TY@save@row{}%
+ \loop
+ \advance\TY@count\m@ne
+ \ifnum\TY@count>\z@
+ \xdef\TY@save@row{\TY@save@row&\omit}%
+ \repeat}\TY@save@row
+ \endarray\global\setbox1=\lastbox\setbox0=\vbox{\unvbox1
+ \unskip\global\setbox1=\lastbox}\egroup
+ \dimen@\TY@linewidth
+ \divide\dimen@\TY@count
+ \ifdim\dimen@<\tymin
+ \TY@warn{tymin too large (\the\tymin), resetting to \the\dimen@}%
+ \tymin\dimen@
+ \fi
+ \setbox\tw@=\hbox{\unhbox\@ne
+ \loop
+\@tempdima=\lastskip
+\ifdim\@tempdima>\z@
+Z \message{ecs=\the\@tempdima^^J}%
+ \global\advance\TY@linewidth-\@tempdima
+\fi
+ \unskip
+ \setbox\tw@=\lastbox
+ \ifhbox\tw@
+Z \message{Col \the\TY@count: Initial=\the\wd\tw@\space}%
+ \ifdim\wd\tw@>\tymax
+ \wd\tw@\tymax
+Z \message{> max\space}%
+Z \else
+Z \message{ \@spaces\space}%
+ \fi
+ \TY@width\dimen@
+Z \message{\the\dimen@\space}%
+ \advance\dimen@\wd\tw@
+Z \message{Final=\the\dimen@\space}%
+ \TY@width\xdef{\the\dimen@}%
+ \ifdim\dimen@<\tymin
+Z \message{< tymin}%
+ \global\advance\TY@linewidth-\dimen@
+ \expandafter\xdef\csname TY@F\the\TY@count\endcsname
+ {\the\dimen@}%
+ \else
+ \expandafter\ifx\csname TY@F\the\TY@count\endcsname\z@
+Z \message{***}%
+ \global\advance\TY@linewidth-\dimen@
+ \expandafter\xdef\csname TY@F\the\TY@count\endcsname
+ {\the\dimen@}%
+ \else
+Z \message{> tymin}%
+ \global\advance\TY@tablewidth\dimen@
+ \global\expandafter\let\csname TY@F\the\TY@count\endcsname
+ \maxdimen
+ \fi\fi
+ \advance\TY@count\m@ne
+ \repeat}%
+ \TY@checkmin
+ \TY@checkmin
+ \TY@checkmin
+ \TY@checkmin
+ \TY@count\z@
+ \let\TY@box\TY@box@v
+ {\expandafter\TY@final\the\toks@\endTY@final}%
+ \count@\z@
+ \@tempswatrue
+ \@whilesw\if@tempswa\fi{%
+ \advance\count@\@ne
+ \expandafter\ifx\csname TY@SF\the\count@\endcsname\relax
+ \@tempswafalse
+ \else
+ \global\expandafter\let\csname TY@F\the\count@\expandafter\endcsname
+ \csname TY@SF\the\count@\endcsname
+ \global\expandafter\let\csname TY@\the\count@\expandafter\endcsname
+ \csname TY@S\the\count@\endcsname
+ \fi}%
+ \TY@linewidth\@ovxx
+ \TY@tablewidth\@ovyy
+ \ifnum0=`{\fi}}
+\def\TY@checkmin{%
+ \let\TY@checkmin\relax
+\ifdim\TY@tablewidth>\z@
+ \Gscale@div\TY@ratio\TY@linewidth\TY@tablewidth
+ \ifdim\TY@tablewidth <\TY@linewidth
+ \def\TY@ratio{1}%
+ \fi
+\else
+ \TY@warn{No suitable columns!}%
+ \def\TY@ratio{1}%
+\fi
+\count@\z@
+Z \message{^^JLine Width: \the\TY@linewidth,
+Z Natural Width: \the\TY@tablewidth,
+Z Ratio: \TY@ratio^^J}%
+\@tempdima\z@
+\loop
+\ifnum\count@<\TY@count
+\advance\count@\@ne
+ \ifdim\csname TY@F\the\count@\endcsname>\tymin
+ \dimen@\csname TY@\the\count@\endcsname
+ \dimen@\TY@ratio\dimen@
+ \ifdim\dimen@<\tymin
+Z \message{Column \the\count@\space ->}%
+ \global\expandafter\let\csname TY@F\the\count@\endcsname\tymin
+ \global\advance\TY@linewidth-\tymin
+ \global\advance\TY@tablewidth-\csname TY@\the\count@\endcsname
+ \let\TY@checkmin\TY@@checkmin
+ \else
+ \expandafter\xdef\csname TY@F\the\count@\endcsname{\the\dimen@}%
+ \advance\@tempdima\csname TY@F\the\count@\endcsname
+ \fi
+ \fi
+Z \dimen@\csname TY@F\the\count@\endcsname\message{\the\dimen@, }%
+\repeat
+Z \message{^^JTotal:\the\@tempdima^^J}%
+}
+\let\TY@@checkmin\TY@checkmin
+\newdimen\TY@linewidth
+\def\tyformat{\everypar{{\nobreak\hskip\z@skip}}}
+\newdimen\tymin
+\tymin=10pt
+\newdimen\tymax
+\tymax=2\textwidth
+\def\@testpach{\@chclass
+ \ifnum \@lastchclass=6 \@ne \@chnum \@ne \else
+ \ifnum \@lastchclass=7 5 \else
+ \ifnum \@lastchclass=8 \tw@ \else
+ \ifnum \@lastchclass=9 \thr@@
+ \else \z@
+ \ifnum \@lastchclass = 10 \else
+ \edef\@nextchar{\expandafter\string\@nextchar}%
+ \@chnum
+ \if \@nextchar c\z@ \else
+ \if \@nextchar l\@ne \else
+ \if \@nextchar r\tw@ \else
+ \if \@nextchar C7 \else
+ \if \@nextchar L8 \else
+ \if \@nextchar R9 \else
+ \if \@nextchar J10 \else
+ \z@ \@chclass
+ \if\@nextchar |\@ne \else
+ \if \@nextchar !6 \else
+ \if \@nextchar @7 \else
+ \if \@nextchar <8 \else
+ \if \@nextchar >9 \else
+ 10
+ \@chnum
+ \if \@nextchar m\thr@@\else
+ \if \@nextchar p4 \else
+ \if \@nextchar b5 \else
+ \z@ \@chclass \z@ \@preamerr \z@ \fi \fi \fi \fi\fi \fi \fi\fi \fi
+ \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi}
+\def\TY@classz{%
+ \@classx
+ \@tempcnta\count@
+ \ifx\TY@box\TY@box@v
+ \global\advance\TY@count\@ne
+ \fi
+ \let\centering c%
+ \let\raggedright\noindent
+ \let\raggedleft\indent
+ \let\arraybackslash\relax
+ \prepnext@tok
+ \ifnum\@chnum<4
+ \global\expandafter\let\csname TY@F\the\TY@count\endcsname\z@
+ \fi
+ \ifnum\@chnum=6
+ \global\expandafter\let\csname TY@F\the\TY@count\endcsname\z@
+ \fi
+ \@addtopreamble{%
+ \ifcase\@chnum
+ \hfil \d@llarbegin\insert@column\d@llarend \hfil \or
+ \kern\z@
+ \d@llarbegin \insert@column \d@llarend \hfil \or
+ \hfil\kern\z@ \d@llarbegin \insert@column \d@llarend \or
+ $\vcenter\@startpbox{\@nextchar}\insert@column \@endpbox $\or
+ \vtop \@startpbox{\@nextchar}\insert@column \@endpbox \or
+ \vbox \@startpbox{\@nextchar}\insert@column \@endpbox \or
+ \d@llarbegin \insert@column \d@llarend \or% dubious "s" case
+ \TY@box\centering\or
+ \TY@box\raggedright\or
+ \TY@box\raggedleft\or
+ \TY@box\relax
+ \fi}\prepnext@tok}
+\def\TY@box#1{%
+ \ifx\centering#1%
+ \hfil \d@llarbegin\insert@column\d@llarend \hfil \else
+ \ifx\raggedright#1%
+ \kern\z@%<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+ \d@llarbegin \insert@column \d@llarend \hfil \else
+ \ifx\raggedleft#1%
+ \hfil\kern\z@ \d@llarbegin \insert@column \d@llarend \else
+ \ifx\relax#1%
+ \d@llarbegin \insert@column \d@llarend
+ \fi \fi \fi \fi}
+\def\TY@box@v#1{%
+ \vtop \@startpbox{\csname TY@F\the\TY@count\endcsname}%
+ #1\arraybackslash\tyformat
+ \insert@column\@endpbox}
+\newdimen\TY@tablewidth
+\def\Gscale@div#1#2#3{%
+ \setlength\dimen@{#3}%
+ \ifdim\dimen@=\z@
+ \PackageError{graphics}{Division by 0}\@eha
+ \dimen@#2%
+ \fi
+ \edef\@tempd{\the\dimen@}%
+ \setlength\dimen@{#2}%
+ \count@65536\relax
+ \ifdim\dimen@<\z@
+ \dimen@-\dimen@
+ \count@-\count@
+ \fi
+ \loop
+ \ifdim\dimen@<8192\p@
+ \dimen@\tw@\dimen@
+ \divide\count@\tw@
+ \repeat
+ \dimen@ii=\@tempd\relax
+ \divide\dimen@ii\count@
+ \divide\dimen@\dimen@ii
+ \edef#1{\strip@pt\dimen@}}
+\long\def\TY@get@body#1\end
+ {\toks@\expandafter{\the\toks@#1}\TY@find@end}
+\def\TY@find@end#1{%
+ \def\@tempa{#1}%
+ \ifx\@tempa\TY@\def\@tempa{\end{#1}}\expandafter\@tempa
+ \else\toks@\expandafter
+ {\the\toks@\end{#1}}\expandafter\TY@get@body\fi}
+\def\TY@warn{%
+ \PackageWarning{tabulary}}
+\catcode`\Z=11
+\AtBeginDocument{
+\@ifpackageloaded{colortbl}{%
+\expandafter\def\expandafter\@mkpream\expandafter#\expandafter1%
+ \expandafter{%
+ \expandafter\let\expandafter\CT@setup\expandafter\relax
+ \expandafter\let\expandafter\CT@color\expandafter\relax
+ \expandafter\let\expandafter\CT@do@color\expandafter\relax
+ \expandafter\let\expandafter\color\expandafter\relax
+ \expandafter\let\expandafter\CT@column@color\expandafter\relax
+ \expandafter\let\expandafter\CT@row@color\expandafter\relax
+ \expandafter\let\expandafter\CT@cell@color\expandafter\relax
+ \@mkpream{#1}}
+\let\TY@@mkpream\@mkpream
+\def\TY@classz{%
+ \@classx
+ \@tempcnta\count@
+ \ifx\TY@box\TY@box@v
+ \global\advance\TY@count\@ne
+ \fi
+ \let\centering c%
+ \let\raggedright\noindent
+ \let\raggedleft\indent
+ \let\arraybackslash\relax
+ \prepnext@tok
+\expandafter\CT@extract\the\toks\@tempcnta\columncolor!\@nil
+ \ifnum\@chnum<4
+ \global\expandafter\let\csname TY@F\the\TY@count\endcsname\z@
+ \fi
+ \ifnum\@chnum=6
+ \global\expandafter\let\csname TY@F\the\TY@count\endcsname\z@
+ \fi
+ \@addtopreamble{%
+ \setbox\z@\hbox\bgroup\bgroup
+ \ifcase\@chnum
+ \hskip\stretch{.5}\kern\z@
+ \d@llarbegin\insert@column\d@llarend\hskip\stretch{.5}\or
+ \kern\z@%<<<<<<<<<<<<<<<<<<<<<<<<<<<
+ \d@llarbegin \insert@column \d@llarend \hfill \or
+ \hfill\kern\z@ \d@llarbegin \insert@column \d@llarend \or
+ $\vcenter\@startpbox{\@nextchar}\insert@column \@endpbox $\or
+ \vtop \@startpbox{\@nextchar}\insert@column \@endpbox \or
+ \vbox \@startpbox{\@nextchar}\insert@column \@endpbox \or
+ \d@llarbegin \insert@column \d@llarend \or% dubious s case
+ \TY@box\centering\or
+ \TY@box\raggedright\or
+ \TY@box\raggedleft\or
+ \TY@box\relax
+ \fi
+ \egroup\egroup
+\begingroup
+ \CT@setup
+ \CT@column@color
+ \CT@row@color
+ \CT@cell@color
+ \CT@do@color
+\endgroup
+ \@tempdima\ht\z@
+ \advance\@tempdima\minrowclearance
+ \vrule\@height\@tempdima\@width\z@
+\unhbox\z@
+}\prepnext@tok}%
+ \def\TY@arrayrule{%
+ \TY@subwidth\arrayrulewidth
+ \@addtopreamble{{\CT@arc@\vline}}}%
+ \def\TY@classvi{\ifcase \@lastchclass
+ \@acol \or
+ \TY@subwidth\doublerulesep
+ \ifx\CT@drsc@\relax
+ \@addtopreamble{\hskip\doublerulesep}%
+ \else
+ \@addtopreamble{{\CT@drsc@\vrule\@width\doublerulesep}}%
+ \fi\or
+ \@acol \or
+ \@classvii
+ \fi}%
+}{%
+\let\CT@start\relax
+}
+}
+{\uccode`\*=`\ %
+\uppercase{\gdef\TX@verb{%
+ \leavevmode\null\TX@vwarn
+ {\ifnum0=`}\fi\ttfamily\let\\\ignorespaces
+ \@ifstar{\let~*\TX@vb}{\TX@vb}}}}
+\def\TX@vb#1{\def\@tempa##1#1{\toks@{##1}\edef\@tempa{\the\toks@}%
+ \expandafter\TX@v\meaning\@tempa\\ \\\ifnum0=`{\fi}}\@tempa!}
+\def\TX@v#1!{\afterassignment\TX@vfirst\let\@tempa= }
+\begingroup
+\catcode`\*=\catcode`\#
+\catcode`\#=12
+\gdef\TX@vfirst{%
+ \if\@tempa#%
+ \def\@tempb{\TX@v@#}%
+ \else
+ \let\@tempb\TX@v@
+ \if\@tempa\space~\else\@tempa\fi
+ \fi
+ \@tempb}
+\gdef\TX@v@*1 *2{%
+ \TX@v@hash*1##\relax\if*2\\\else~\expandafter\TX@v@\fi*2}
+\gdef\TX@v@hash*1##*2{*1\ifx*2\relax\else#\expandafter\TX@v@hash\fi*2}
+\endgroup
+\def\TX@vwarn{%
+ \@warning{\noexpand\verb may be unreliable inside tabularx/y}%
+ \global\let\TX@vwarn\@empty}
+\endinput
+%%
+%% End of file `tabulary.sty'.
diff --git a/macros/latex/contrib/tabulary/tabulary.dtx b/macros/latex/contrib/tabulary/tabulary.dtx
index b455cf0382..21dc80b419 100644
--- a/macros/latex/contrib/tabulary/tabulary.dtx
+++ b/macros/latex/contrib/tabulary/tabulary.dtx
@@ -1,9 +1,9 @@
% \iffalse
%%
%% File `tabulary.dtx'.
-%% Copyright (C) 1995 1996 2003 2008 David Carlisle
+%% Copyright (C) 1995 1996 2003 2008 2024 David Carlisle
%% This file may be distributed under the terms of the LPPL.
-%% See 00readme.txt for details.
+%% See README.txt for details.
%%
%
%<*dtx>
@@ -13,7 +13,7 @@
%<package>\ProvidesPackage{tabulary}
% \fi
% \ProvidesFile{tabulary.dtx}
- [2014/06/11 v0.10 tabulary package (DPC)]
+ [2024/06/04 v0.11 tabulary package (DPC)]
%
% \iffalse
%<*driver>
@@ -35,7 +35,6 @@
\end{document}
%</driver>
% \fi
-% \CheckSum{1346}
%
% \changes{v0.1}{1995/10/08}
% {Initial version}
@@ -51,6 +50,14 @@
% {Rename S to J and `hide' s (until it works)}
% \changes{v0.10}{2014/06/21}
% {support \cs{cellcolor} see http://tex.stackexchange.com/a/185851/1090}
+% \changes{v0.11}{2024/06/04}
+% {Update to match latest array package (rollback to v0.10 for older releases)}
+% \changes{v0.11}{2024/06/04}
+% {Restore LaTeX counters after trial typesetting gh/12}
+% \changes{v0.11}{2024/06/04}
+% {Handle p and b columns like m gh/38}
+% \changes{v0.11}{2024/06/04}
+% {use \cs{hskip}1sp to match array 2.3i from 1996}
%
% \section{User Documentation}
%
@@ -218,8 +225,15 @@
%<*package>
% \end{macrocode}
%
+% Rollback.
% \begin{macrocode}
-\RequirePackage{array}
+\DeclareRelease{v0.10}{1995/10/08}{tabulary-v010.sty}
+\DeclareCurrentRelease{}{2024-06-01}
+% \end{macrocode}
+%
+% This version needs a current array package
+% \begin{macrocode}
+\RequirePackage{array}[2024/05/23]
% \end{macrocode}
%
% \begin{macrocode}
@@ -349,11 +363,12 @@ Z \string\tymax: \the\tymax^^J}%
% \begin{macro}{\TY@mkpream}
% TY version.
% \begin{macrocode}
+\ExplSyntaxOn
\def\TY@mkpream{%
\def\@addamp{%
\if@firstamp \@firstampfalse \else
\global\advance\TY@count\@ne
- \edef\@preamble{\@preamble &}\fi
+ \edef\@preamble{\@preamble & \noexpand\tbl_update_cell_data:}\fi
\TY@width\xdef{0pt}}%
% \end{macrocode}
%
@@ -373,7 +388,7 @@ Z \string\tymax: \the\tymax^^J}%
%
% \begin{macrocode}
\def\@classv{\save@decl
- \expandafter\NC@ecs\@nextchar\extracolsep{}\extracolsep\@@@
+ \expandafter\NC@ecs\@nextchar\extracolsep{}\extracolsep\@@__tbl
\sbox\z@{\d@llarbegin\@nextchar\d@llarend}%
\TY@subwidth{\wd\z@}%
\@addtopreamble{\d@llarbegin\the@toks\the\count@\relax\d@llarend}%
@@ -386,6 +401,7 @@ Z \string\tymax: \the\tymax^^J}%
%
% \begin{macrocode}
\TY@@mkpream}
+\ExplSyntaxOff
% \end{macrocode}
% \end{macro}
%
@@ -478,7 +494,17 @@ Z \string\tymax: \the\tymax^^J}%
% row is hidden by an hline or something.
% \begin{macrocode}
\def\endtabulary{%
+ \SuspendTagging {tabulary}%
\gdef\@halignto{}%
+% \end{macrocode}
+%
+% Save values of counters, to reset after the trial
+% \begin{macrocode}
+ \def\@elt##1{\global\value{##1}\the\value{##1}\relax}%
+ \edef\TY@ckpt{\cl@@ckpt}%
+% \end{macrocode}
+%
+% \begin{macrocode}
\expandafter\TY@tab\the\toks@
\crcr\omit
{\xdef\TY@save@row{}%
@@ -489,6 +515,7 @@ Z \string\tymax: \the\tymax^^J}%
\repeat}\TY@save@row
\endarray\global\setbox1=\lastbox\setbox0=\vbox{\unvbox1
\unskip\global\setbox1=\lastbox}\egroup
+ \ResumeTagging {tabulary}%
% \end{macrocode}
% Check that |\tymin| is not too large.
% \begin{macrocode}
@@ -563,6 +590,11 @@ Z \message{> tymin}%
\let\TY@box\TY@box@v
% \end{macrocode}
%
+% Restore counter values.
+% \begin{macrocode}
+ \TY@ckpt
+% \end{macrocode}
+%
% Run a second tabular, and for the star form, unbox it.
% \begin{macrocode}
{\expandafter\TY@final\the\toks@\endTY@final}%
@@ -744,7 +776,7 @@ Z \message{^^JTotal:\the\@tempdima^^J}%
\let\raggedleft\indent
\let\arraybackslash\relax
\prepnext@tok
- \ifnum\@chnum<4
+ \ifnum\@chnum<6
\global\expandafter\let\csname TY@F\the\TY@count\endcsname\z@
\fi
\ifnum\@chnum=6
@@ -752,14 +784,19 @@ Z \message{^^JTotal:\the\@tempdima^^J}%
\fi
\@addtopreamble{%
\ifcase\@chnum
- \hfil \d@llarbegin\insert@column\d@llarend \hfil \or
- \kern\z@
- \d@llarbegin \insert@column \d@llarend \hfil \or
- \hfil\kern\z@ \d@llarbegin \insert@column \d@llarend \or
- $\vcenter\@startpbox{\@nextchar}\insert@column \@endpbox $\or
- \vtop \@startpbox{\@nextchar}\insert@column \@endpbox \or
- \vbox \@startpbox{\@nextchar}\insert@column \@endpbox \or
- \d@llarbegin \insert@column \d@llarend \or% dubious "s" case
+ \hfil\hskip1sp%
+ \d@llarbegin\insert@column\d@llarend\do@row@strut\hfil \or
+ \hskip1sp%
+ \d@llarbegin \insert@column \d@llarend\do@row@strut\hfil \or
+ \hfil\hskip1sp%
+ \d@llarbegin \insert@column \d@llarend\do@row@strut \or
+ \setbox\ar@mcellbox\vbox
+ \@startpbox{\@nextchar}\insert@pcolumn \@endpbox
+ \ar@align@mcell
+ \do@row@strut\or
+ \vtop \@startpbox{\@nextchar}\insert@pcolumn \@endpbox \or
+ \vbox \@startpbox{\@nextchar}\insert@pcolumn \@endpbox \or
+ \d@llarbegin \insert@column \d@llarend \do@row@strut \or% dubious "s" case
\TY@box\centering\or
\TY@box\raggedright\or
\TY@box\raggedleft\or
@@ -777,14 +814,16 @@ Z \message{^^JTotal:\the\@tempdima^^J}%
% \begin{macrocode}
\def\TY@box#1{%
\ifx\centering#1%
- \hfil \d@llarbegin\insert@column\d@llarend \hfil \else
+ \hfil\hskip1sp%
+ \d@llarbegin\insert@column\d@llarend\do@row@strut \hfil \else
\ifx\raggedright#1%
- \kern\z@%<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
- \d@llarbegin \insert@column \d@llarend \hfil \else
+ \hskip1sp%
+ \d@llarbegin \insert@column \d@llarend\do@row@strut \hfil \else
\ifx\raggedleft#1%
- \hfil\kern\z@ \d@llarbegin \insert@column \d@llarend \else
+ \hfil\hskip1sp%
+ \kern\z@ \d@llarbegin \insert@column \d@llarend\do@row@strut \else
\ifx\relax#1%
- \d@llarbegin \insert@column \d@llarend
+ \d@llarbegin \insert@column \d@llarend\do@row@strut
\fi \fi \fi \fi}
% \end{macrocode}
% \end{macro}
@@ -796,7 +835,7 @@ Z \message{^^JTotal:\the\@tempdima^^J}%
\def\TY@box@v#1{%
\vtop \@startpbox{\csname TY@F\the\TY@count\endcsname}%
#1\arraybackslash\tyformat
- \insert@column\@endpbox}
+ \insert@pcolumn\@endpbox}
% \end{macrocode}
% \end{macro}
%
@@ -896,7 +935,7 @@ Z \message{^^JTotal:\the\@tempdima^^J}%
\let\arraybackslash\relax
\prepnext@tok
\expandafter\CT@extract\the\toks\@tempcnta\columncolor!\@nil
- \ifnum\@chnum<4
+ \ifnum\@chnum<6
\global\expandafter\let\csname TY@F\the\TY@count\endcsname\z@
\fi
\ifnum\@chnum=6
@@ -910,10 +949,13 @@ Z \message{^^JTotal:\the\@tempdima^^J}%
\kern\z@%<<<<<<<<<<<<<<<<<<<<<<<<<<<
\d@llarbegin \insert@column \d@llarend \hfill \or
\hfill\kern\z@ \d@llarbegin \insert@column \d@llarend \or
- $\vcenter\@startpbox{\@nextchar}\insert@column \@endpbox $\or
- \vtop \@startpbox{\@nextchar}\insert@column \@endpbox \or
- \vbox \@startpbox{\@nextchar}\insert@column \@endpbox \or
- \d@llarbegin \insert@column \d@llarend \or% dubious s case
+ \setbox\ar@mcellbox\vbox
+ \@startpbox{\@nextchar}\insert@pcolumn \@endpbox
+ \ar@align@mcell
+ \do@row@strut \or
+ \vtop \@startpbox{\@nextchar}\insert@pcolumn \@endpbox \or
+ \vbox \@startpbox{\@nextchar}\insert@pcolumn \@endpbox \or
+ \d@llarbegin \insert@pcolumn \d@llarend \or% dubious s case
\TY@box\centering\or
\TY@box\raggedright\or
\TY@box\raggedleft\or
@@ -999,9 +1041,40 @@ Z \message{^^JTotal:\the\@tempdima^^J}%
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\tblcrcrn}^^A L3 name
+% Patch to ensure |\tbl_crcr:n| ends with |\crcr|.
+% (Will be fixed in later \LaTeX\ releases.
+% \begin{macrocode}
+%<package>
+% \end{macrocode}
+%
+% \begin{macrocode}
+\ExplSyntaxOn
+\cs_set:Npn \@tempa #1 {
+ \int_compare:nNnT \g__tbl_col_int > 0
+ {
+ \tbl_count_missing_cells:n {#1}
+ \cr
+ }
+ }
+\ifx\@tempa\tbl_crcr:n
+\cs_set:Npn \tbl_crcr:n #1 {
+ \int_compare:nNnT \g__tbl_col_int > 0
+ {
+ \tbl_count_missing_cells:n {#1}
+ }
+ \crcr
+ }
+\fi
+\let\@tempa\@undefined
+\ExplSyntaxOff
+% \end{macrocode}
+%
% \begin{macrocode}
%</package>
% \end{macrocode}
+% \end{macro}
+%
% \PrintIndex
% \Finale
%
diff --git a/macros/latex/contrib/tabulary/tabulary.pdf b/macros/latex/contrib/tabulary/tabulary.pdf
index c5a8ed2e61..74dedf72a5 100644
--- a/macros/latex/contrib/tabulary/tabulary.pdf
+++ b/macros/latex/contrib/tabulary/tabulary.pdf
Binary files differ
diff --git a/macros/latex/contrib/tagpdf/README.md b/macros/latex/contrib/tagpdf/README.md
index d5ec6a6054..edcdc6b5e6 100644
--- a/macros/latex/contrib/tagpdf/README.md
+++ b/macros/latex/contrib/tagpdf/README.md
@@ -1,6 +1,6 @@
#tagpdf — A package to create tagged pdf
-Packageversion: 0.99b
-Packagedate: 2024/04/12
+Packageversion: 0.99d
+Packagedate: 2024/08/02
Author: Ulrike Fischer, LaTeX Project Team
## License
diff --git a/macros/latex/contrib/tagpdf/ex-AF-file.pdf b/macros/latex/contrib/tagpdf/ex-AF-file.pdf
index 88cce58755..9ba962e1e3 100644
--- a/macros/latex/contrib/tagpdf/ex-AF-file.pdf
+++ b/macros/latex/contrib/tagpdf/ex-AF-file.pdf
@@ -1,11 +1,11 @@
%PDF-2.0
%
22 0 obj
-<< /Subtype /application#2Fx-tex/Type /EmbeddedFile /Params<</ModDate (D:20240412224343+02'00') /Size 151 /CheckSum (D52DAF2721ACFB0A3038F7BEDDA61C03) >> /Length 151 >>
+<< /Subtype /application#2Fx-tex/Type /EmbeddedFile /Params<</ModDate (D:20240802125547+02'00') /Size 151 /CheckSum (D4716966C44F441B4E4C1D2DD929683B) >> /Length 151 >>
stream
%% LaTeX2e file `example-input-file.tex'
%% generated by the `filecontents' environment
-%% from source `ex-AF-file' on 2024/04/12.
+%% from source `ex-AF-file' on 2024/08/02.
%%
Additional info!
@@ -15,7 +15,7 @@ endobj
<< /Type /Filespec /AFRelationship /Unspecified /F (example-input-file.tex) /UF <FEFF006500780061006D0070006C0065002D0069006E007000750074002D00660069006C0065002E007400650078> /EF<</F 22 0 R/UF 22 0 R>> >>
endobj
25 0 obj
-<< /Subtype /text#2Fplain/Type /EmbeddedFile /Params<</ModDate (D:20240412) >> /Length 19 >>
+<< /Subtype /text#2Fplain/Type /EmbeddedFile /Params<</ModDate (D:20240802) >> /Length 19 >>
stream
Bär with teh shirt
endstream
@@ -24,7 +24,7 @@ endobj
<< /Type /Filespec /AFRelationship /Supplement /F (tag-AFfile1.txt) /UF <FEFF007400610067002D0041004600660069006C00650031002E007400780074> /EF<</F 25 0 R/UF 25 0 R>> >>
endobj
28 0 obj
-<< /Subtype /text#2Fplain/Type /EmbeddedFile /Params<</ModDate (D:20240412) >> /Length 4 >>
+<< /Subtype /text#2Fplain/Type /EmbeddedFile /Params<</ModDate (D:20240802) >> /Length 4 >>
stream
Duck
endstream
@@ -242,17 +242,17 @@ stream
</dc:language>
<dc:date>
<rdf:Seq>
- <rdf:li>2024-04-12T22:43:57+02:00</rdf:li>
+ <rdf:li>2024-08-02T12:56:09+02:00</rdf:li>
</rdf:Seq>
</dc:date>
<dc:format>application/pdf</dc:format>
<dc:source>ex-AF-file.tex</dc:source>
<xmp:CreatorTool>LaTeX</xmp:CreatorTool>
- <xmp:CreateDate>2024-04-12T22:43:57+02:00</xmp:CreateDate>
- <xmp:ModifyDate>2024-04-12T22:43:57+02:00</xmp:ModifyDate>
- <xmp:MetadataDate>2024-04-12T22:43:57+02:00</xmp:MetadataDate>
+ <xmp:CreateDate>2024-08-02T12:56:09+02:00</xmp:CreateDate>
+ <xmp:ModifyDate>2024-08-02T12:56:09+02:00</xmp:ModifyDate>
+ <xmp:MetadataDate>2024-08-02T12:56:09+02:00</xmp:MetadataDate>
<xmpMM:DocumentID>uuid:38d5a844-2217-4081-87cc-b2129dc357a6</xmpMM:DocumentID>
- <xmpMM:InstanceID>uuid:6b06569f-01cc-4520-8f3e-f24784f393ab</xmpMM:InstanceID>
+ <xmpMM:InstanceID>uuid:3ff2b426-7c06-4861-8f14-4e8e04ac9b4c</xmpMM:InstanceID>
<prism:complianceProfile>three</prism:complianceProfile>
<prism:pageCount>1</prism:pageCount>
</rdf:Description>
@@ -347,7 +347,7 @@ endobj
<< /Type /Namespace /NS (https://www.latex-project.org/ns/book/2022) /RoleMapNS 18 0 R >>
endobj
19 0 obj
-<< /Type /Namespace /NS (data:,F7B920C5-38F1-B398-9D50-A556845632C) >>
+<< /Type /Namespace /NS (data:,BBA64916-90D9-A0B9-F592-8E68FD20F532) >>
endobj
8 0 obj
[ 9 0 R 11 0 R 13 0 R 15 0 R 17 0 R 19 0 R ]
@@ -449,7 +449,7 @@ endobj
<< /Type /Catalog /Pages 36 0 R /MarkInfo 37 0 R/Lang (de-DE)/Metadata 31 0 R/StructTreeRoot 5 0 R >>
endobj
46 0 obj
-<< /Producer (luahbtex-1.18.0)/Creator (LaTeX)/CreationDate (D:20240412224357+02'00')/ModDate (D:20240412224357+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.18.0 (TeX Live 2024)) >>
+<< /Producer (luahbtex-1.18.0)/Creator (LaTeX)/CreationDate (D:20240802125609+02'00')/ModDate (D:20240802125609+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.18.0 (TeX Live 2024)) >>
endobj
xref
0 47
@@ -458,10 +458,10 @@ xref
0000000003 00000 f
0000000004 00000 f
0000000010 00000 f
-0000016361 00000 n
+0000016362 00000 n
0000013627 00000 n
0000013838 00000 n
-0000015791 00000 n
+0000015792 00000 n
0000014417 00000 n
0000000012 00000 f
0000014485 00000 n
@@ -474,34 +474,34 @@ xref
0000015425 00000 n
0000015703 00000 n
0000000000 00000 f
-0000015852 00000 n
+0000015853 00000 n
0000000020 00000 n
0000000382 00000 n
-0000015965 00000 n
+0000015966 00000 n
0000000603 00000 n
0000000758 00000 n
-0000016097 00000 n
+0000016098 00000 n
0000000943 00000 n
0000001083 00000 n
-0000016229 00000 n
+0000016230 00000 n
0000001268 00000 n
0000013481 00000 n
0000013346 00000 n
0000012740 00000 n
-0000020114 00000 n
-0000020468 00000 n
+0000020115 00000 n
+0000020469 00000 n
0000013591 00000 n
0000013684 00000 n
0000013801 00000 n
-0000016481 00000 n
-0000018930 00000 n
-0000016667 00000 n
-0000019151 00000 n
-0000020268 00000 n
-0000020530 00000 n
-0000020648 00000 n
+0000016482 00000 n
+0000018931 00000 n
+0000016668 00000 n
+0000019152 00000 n
+0000020269 00000 n
+0000020531 00000 n
+0000020649 00000 n
trailer
-<< /Size 47 /Root 45 0 R /Info 46 0 R /ID [ <94D14D0D874136BA8E3138318B983D46> <94D14D0D874136BA8E3138318B983D46> ] >>
+<< /Size 47 /Root 45 0 R /Info 46 0 R /ID [ <E2F9D94DBDFC11D2EE5801BA51FD5C99> <E2F9D94DBDFC11D2EE5801BA51FD5C99> ] >>
startxref
-20871
+20872
%%EOF
diff --git a/macros/latex/contrib/tagpdf/ex-alt-actualtext.pdf b/macros/latex/contrib/tagpdf/ex-alt-actualtext.pdf
index 2ee461f0b5..f64d4e66bf 100644
--- a/macros/latex/contrib/tagpdf/ex-alt-actualtext.pdf
+++ b/macros/latex/contrib/tagpdf/ex-alt-actualtext.pdf
Binary files differ
diff --git a/macros/latex/contrib/tagpdf/ex-attribute.pdf b/macros/latex/contrib/tagpdf/ex-attribute.pdf
index cf0457f4ce..feda9e252a 100644
--- a/macros/latex/contrib/tagpdf/ex-attribute.pdf
+++ b/macros/latex/contrib/tagpdf/ex-attribute.pdf
@@ -216,17 +216,17 @@ stream
</dc:language>
<dc:date>
<rdf:Seq>
- <rdf:li>2024-04-12T22:45:00+02:00</rdf:li>
+ <rdf:li>2024-08-02T12:57:08+02:00</rdf:li>
</rdf:Seq>
</dc:date>
<dc:format>application/pdf</dc:format>
<dc:source>ex-attribute.tex</dc:source>
<xmp:CreatorTool>LaTeX</xmp:CreatorTool>
- <xmp:CreateDate>2024-04-12T22:45:00+02:00</xmp:CreateDate>
- <xmp:ModifyDate>2024-04-12T22:45:00+02:00</xmp:ModifyDate>
- <xmp:MetadataDate>2024-04-12T22:45:00+02:00</xmp:MetadataDate>
+ <xmp:CreateDate>2024-08-02T12:57:08+02:00</xmp:CreateDate>
+ <xmp:ModifyDate>2024-08-02T12:57:08+02:00</xmp:ModifyDate>
+ <xmp:MetadataDate>2024-08-02T12:57:08+02:00</xmp:MetadataDate>
<xmpMM:DocumentID>uuid:7a9cf910-1c19-429a-8f24-339c62d8a57f</xmpMM:DocumentID>
- <xmpMM:InstanceID>uuid:ebb76e7a-6558-411c-8644-ae16263a1ccf</xmpMM:InstanceID>
+ <xmpMM:InstanceID>uuid:b262e437-7e89-4c42-8e29-bedae4c498b6</xmpMM:InstanceID>
<prism:complianceProfile>three</prism:complianceProfile>
<prism:pageCount>1</prism:pageCount>
</rdf:Description>
@@ -450,7 +450,7 @@ endobj
<< /Type /Catalog /Pages 26 0 R /MarkInfo 27 0 R/Lang (de_DE)/Metadata 21 0 R/StructTreeRoot 5 0 R >>
endobj
38 0 obj
-<< /Producer (luahbtex-1.18.0)/Creator (LaTeX)/Title (Title)/CreationDate (D:20240412224500+02'00')/ModDate (D:20240412224500+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.18.0 (TeX Live 2024)) >>
+<< /Producer (luahbtex-1.18.0)/Creator (LaTeX)/Title (Title)/CreationDate (D:20240802125708+02'00')/ModDate (D:20240802125708+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.18.0 (TeX Live 2024)) >>
endobj
xref
0 39
@@ -494,7 +494,7 @@ xref
0000017721 00000 n
0000017839 00000 n
trailer
-<< /Size 39 /Root 37 0 R /Info 38 0 R /ID [ <F0A4043D02B88225A376093CF6F0F5F6> <F0A4043D02B88225A376093CF6F0F5F6> ] >>
+<< /Size 39 /Root 37 0 R /Info 38 0 R /ID [ <2033D8BFB67E1F1EDFB190E1DEC10A2C> <2033D8BFB67E1F1EDFB190E1DEC10A2C> ] >>
startxref
18076
%%EOF
diff --git a/macros/latex/contrib/tagpdf/ex-formula-problem.pdf b/macros/latex/contrib/tagpdf/ex-formula-problem.pdf
index 4f52377221..637338d16f 100644
--- a/macros/latex/contrib/tagpdf/ex-formula-problem.pdf
+++ b/macros/latex/contrib/tagpdf/ex-formula-problem.pdf
@@ -239,17 +239,17 @@ stream
</dc:language>
<dc:date>
<rdf:Seq>
- <rdf:li>2024-04-12T22:45:21+02:00</rdf:li>
+ <rdf:li>2024-08-02T12:57:37+02:00</rdf:li>
</rdf:Seq>
</dc:date>
<dc:format>application/pdf</dc:format>
<dc:source>ex-formula-problem.tex</dc:source>
<xmp:CreatorTool>LaTeX</xmp:CreatorTool>
- <xmp:CreateDate>2024-04-12T22:45:21+02:00</xmp:CreateDate>
- <xmp:ModifyDate>2024-04-12T22:45:21+02:00</xmp:ModifyDate>
- <xmp:MetadataDate>2024-04-12T22:45:21+02:00</xmp:MetadataDate>
+ <xmp:CreateDate>2024-08-02T12:57:37+02:00</xmp:CreateDate>
+ <xmp:ModifyDate>2024-08-02T12:57:37+02:00</xmp:ModifyDate>
+ <xmp:MetadataDate>2024-08-02T12:57:37+02:00</xmp:MetadataDate>
<xmpMM:DocumentID>uuid:8eb2ce1d-b2ec-440a-8bc2-73733eb3eeb0</xmpMM:DocumentID>
- <xmpMM:InstanceID>uuid:b235cb52-00e7-4b87-80da-099ff7a08959</xmpMM:InstanceID>
+ <xmpMM:InstanceID>uuid:8fbc3896-5f57-401a-81d8-1fdb02abac8a</xmpMM:InstanceID>
<prism:complianceProfile>three</prism:complianceProfile>
<prism:pageCount>2</prism:pageCount>
</rdf:Description>
@@ -425,7 +425,7 @@ endobj
<< /Type /Catalog /Pages 16 0 R /MarkInfo 23 0 R/Lang (de-DE)/Metadata 19 0 R/StructTreeRoot 5 0 R >>
endobj
33 0 obj
-<< /Producer (luahbtex-1.18.0)/Creator (LaTeX)/CreationDate (D:20240412224521+02'00')/ModDate (D:20240412224521+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.18.0 (TeX Live 2024)) >>
+<< /Producer (luahbtex-1.18.0)/Creator (LaTeX)/CreationDate (D:20240802125737+02'00')/ModDate (D:20240802125737+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.18.0 (TeX Live 2024)) >>
endobj
xref
0 34
@@ -464,7 +464,7 @@ xref
0000018886 00000 n
0000019004 00000 n
trailer
-<< /Size 34 /Root 32 0 R /Info 33 0 R /ID [ <DA67BF625C6AC31DA20A2C414D89BF53> <DA67BF625C6AC31DA20A2C414D89BF53> ] >>
+<< /Size 34 /Root 32 0 R /Info 33 0 R /ID [ <84EDE341B761805B059537E407E8C0CD> <84EDE341B761805B059537E407E8C0CD> ] >>
startxref
19227
%%EOF
diff --git a/macros/latex/contrib/tagpdf/ex-list.pdf b/macros/latex/contrib/tagpdf/ex-list.pdf
index 68136b26fc..381477d829 100644
--- a/macros/latex/contrib/tagpdf/ex-list.pdf
+++ b/macros/latex/contrib/tagpdf/ex-list.pdf
@@ -1,7 +1,7 @@
%PDF-1.7
%
48 0 obj
-<< /Type /Metadata /Subtype /XML /Length 11379 >>
+<< /Type /Metadata /Subtype /XML /Length 11376 >>
stream
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
@@ -205,22 +205,22 @@ stream
</dc:type>
<dc:language>
<rdf:Bag>
- <rdf:li>en-US</rdf:li>
+ <rdf:li>en</rdf:li>
</rdf:Bag>
</dc:language>
<dc:date>
<rdf:Seq>
- <rdf:li>2024-04-12T22:45:43+02:00</rdf:li>
+ <rdf:li>2024-08-02T12:58:08+02:00</rdf:li>
</rdf:Seq>
</dc:date>
<dc:format>application/pdf</dc:format>
<dc:source>ex-list.tex</dc:source>
<xmp:CreatorTool>LaTeX</xmp:CreatorTool>
- <xmp:CreateDate>2024-04-12T22:45:43+02:00</xmp:CreateDate>
- <xmp:ModifyDate>2024-04-12T22:45:43+02:00</xmp:ModifyDate>
- <xmp:MetadataDate>2024-04-12T22:45:43+02:00</xmp:MetadataDate>
+ <xmp:CreateDate>2024-08-02T12:58:08+02:00</xmp:CreateDate>
+ <xmp:ModifyDate>2024-08-02T12:58:08+02:00</xmp:ModifyDate>
+ <xmp:MetadataDate>2024-08-02T12:58:08+02:00</xmp:MetadataDate>
<xmpMM:DocumentID>uuid:4c749825-1de7-414c-879f-29e4d0bef66e</xmpMM:DocumentID>
- <xmpMM:InstanceID>uuid:2a093094-e2b9-4472-8f3a-4dbbebc7fd1c</xmpMM:InstanceID>
+ <xmpMM:InstanceID>uuid:0803684d-fad7-4d08-8dc2-c5108f24d889</xmpMM:InstanceID>
<prism:complianceProfile>three</prism:complianceProfile>
<prism:pageCount>1</prism:pageCount>
</rdf:Description>
@@ -651,88 +651,88 @@ endobj
<< /Type /Pages /Count 1 /Kids [ 50 0 R ] >>
endobj
71 0 obj
-<< /Type /Catalog /Pages 54 0 R /MarkInfo 55 0 R/Lang (en-US)/Metadata 48 0 R/StructTreeRoot 5 0 R >>
+<< /Type /Catalog /Pages 54 0 R /MarkInfo 55 0 R/Lang (en)/Metadata 48 0 R/StructTreeRoot 5 0 R >>
endobj
72 0 obj
-<< /Producer (luahbtex-1.18.0)/Creator (LaTeX)/CreationDate (D:20240412224543+02'00')/ModDate (D:20240412224543+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.18.0 (TeX Live 2024)) >>
+<< /Producer (luahbtex-1.18.0)/Creator (LaTeX)/CreationDate (D:20240802125808+02'00')/ModDate (D:20240802125808+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.18.0 (TeX Live 2024)) >>
endobj
xref
0 73
0000000002 65535 f
-0000013512 00000 n
+0000013509 00000 n
0000000003 00000 f
0000000004 00000 f
0000000008 00000 f
-0000019050 00000 n
-0000013595 00000 n
-0000014434 00000 n
+0000019047 00000 n
+0000013592 00000 n
+0000014431 00000 n
0000000000 00000 f
-0000015231 00000 n
-0000015332 00000 n
-0000015408 00000 n
-0000015484 00000 n
-0000015571 00000 n
-0000015678 00000 n
-0000015768 00000 n
-0000015878 00000 n
-0000015962 00000 n
-0000016050 00000 n
-0000016173 00000 n
-0000016263 00000 n
-0000016373 00000 n
-0000016457 00000 n
-0000016545 00000 n
-0000016668 00000 n
-0000016755 00000 n
-0000016866 00000 n
-0000016956 00000 n
-0000017066 00000 n
-0000017150 00000 n
-0000017238 00000 n
-0000017361 00000 n
-0000017451 00000 n
-0000017561 00000 n
-0000017645 00000 n
-0000017733 00000 n
-0000017856 00000 n
-0000017943 00000 n
-0000018058 00000 n
-0000018148 00000 n
-0000018258 00000 n
-0000018342 00000 n
-0000018430 00000 n
-0000018553 00000 n
-0000018643 00000 n
-0000018754 00000 n
-0000018838 00000 n
-0000018926 00000 n
+0000015228 00000 n
+0000015329 00000 n
+0000015405 00000 n
+0000015481 00000 n
+0000015568 00000 n
+0000015675 00000 n
+0000015765 00000 n
+0000015875 00000 n
+0000015959 00000 n
+0000016047 00000 n
+0000016170 00000 n
+0000016260 00000 n
+0000016370 00000 n
+0000016454 00000 n
+0000016542 00000 n
+0000016665 00000 n
+0000016752 00000 n
+0000016863 00000 n
+0000016953 00000 n
+0000017063 00000 n
+0000017147 00000 n
+0000017235 00000 n
+0000017358 00000 n
+0000017448 00000 n
+0000017558 00000 n
+0000017642 00000 n
+0000017730 00000 n
+0000017853 00000 n
+0000017940 00000 n
+0000018055 00000 n
+0000018145 00000 n
+0000018255 00000 n
+0000018339 00000 n
+0000018427 00000 n
+0000018550 00000 n
+0000018640 00000 n
+0000018751 00000 n
+0000018835 00000 n
+0000018923 00000 n
0000000020 00000 n
-0000013413 00000 n
-0000013271 00000 n
-0000011489 00000 n
-0000029177 00000 n
-0000022225 00000 n
-0000029531 00000 n
-0000013559 00000 n
-0000013715 00000 n
-0000014397 00000 n
-0000015026 00000 n
-0000019168 00000 n
-0000021127 00000 n
-0000019300 00000 n
-0000019374 00000 n
-0000021361 00000 n
-0000022376 00000 n
-0000022573 00000 n
-0000027712 00000 n
-0000022909 00000 n
-0000023032 00000 n
-0000027948 00000 n
-0000029331 00000 n
-0000029593 00000 n
-0000029711 00000 n
+0000013410 00000 n
+0000013268 00000 n
+0000011486 00000 n
+0000029174 00000 n
+0000022222 00000 n
+0000029528 00000 n
+0000013556 00000 n
+0000013712 00000 n
+0000014394 00000 n
+0000015023 00000 n
+0000019165 00000 n
+0000021124 00000 n
+0000019297 00000 n
+0000019371 00000 n
+0000021358 00000 n
+0000022373 00000 n
+0000022570 00000 n
+0000027709 00000 n
+0000022906 00000 n
+0000023029 00000 n
+0000027945 00000 n
+0000029328 00000 n
+0000029590 00000 n
+0000029705 00000 n
trailer
-<< /Size 73 /Root 71 0 R /Info 72 0 R /ID [ <AB165FBD92401154000829BD1ADC4E0A> <AB165FBD92401154000829BD1ADC4E0A> ] >>
+<< /Size 73 /Root 71 0 R /Info 72 0 R /ID [ <0EE2DD31789AD5C7E80F8407D72CF075> <0EE2DD31789AD5C7E80F8407D72CF075> ] >>
startxref
-29934
+29928
%%EOF
diff --git a/macros/latex/contrib/tagpdf/ex-mc-manual-para-split-obsolete.pdf b/macros/latex/contrib/tagpdf/ex-mc-manual-para-split-obsolete.pdf
index 05f6c08b7e..6d60e10736 100644
--- a/macros/latex/contrib/tagpdf/ex-mc-manual-para-split-obsolete.pdf
+++ b/macros/latex/contrib/tagpdf/ex-mc-manual-para-split-obsolete.pdf
@@ -34,7 +34,7 @@ endobj
<< /ExtGState 1 0 R /Font << /F15 13 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
15 0 obj
-<< /Type /Metadata /Subtype /XML /Length 11404 >>
+<< /Type /Metadata /Subtype /XML /Length 11401 >>
stream
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
@@ -238,22 +238,22 @@ stream
</dc:type>
<dc:language>
<rdf:Bag>
- <rdf:li>en-US</rdf:li>
+ <rdf:li>de</rdf:li>
</rdf:Bag>
</dc:language>
<dc:date>
<rdf:Seq>
- <rdf:li>2024-04-12T22:46:02+02:00</rdf:li>
+ <rdf:li>2024-08-02T12:58:35+02:00</rdf:li>
</rdf:Seq>
</dc:date>
<dc:format>application/pdf</dc:format>
<dc:source>ex-mc-manual-para-split-obsolete.tex</dc:source>
<xmp:CreatorTool>LaTeX</xmp:CreatorTool>
- <xmp:CreateDate>2024-04-12T22:46:02+02:00</xmp:CreateDate>
- <xmp:ModifyDate>2024-04-12T22:46:02+02:00</xmp:ModifyDate>
- <xmp:MetadataDate>2024-04-12T22:46:02+02:00</xmp:MetadataDate>
+ <xmp:CreateDate>2024-08-02T12:58:35+02:00</xmp:CreateDate>
+ <xmp:ModifyDate>2024-08-02T12:58:35+02:00</xmp:ModifyDate>
+ <xmp:MetadataDate>2024-08-02T12:58:35+02:00</xmp:MetadataDate>
<xmpMM:DocumentID>uuid:c33d64b4-96ec-4e48-8f27-0b3edc831547</xmpMM:DocumentID>
- <xmpMM:InstanceID>uuid:bcd2c2e1-c962-4de2-807b-cf19c4e0788a</xmpMM:InstanceID>
+ <xmpMM:InstanceID>uuid:075c36f4-757d-4e0f-8258-3c0a3e372d69</xmpMM:InstanceID>
<prism:complianceProfile>three</prism:complianceProfile>
<prism:pageCount>2</prism:pageCount>
</rdf:Description>
@@ -410,15 +410,15 @@ endobj
<< /Type /Pages /Count 2 /Kids [ 9 0 R 10 0 R ] >>
endobj
24 0 obj
-<< /Type /Catalog /Pages 14 0 R /Lang (en-US)/Metadata 15 0 R >>
+<< /Type /Catalog /Pages 14 0 R /Lang (de)/Metadata 15 0 R >>
endobj
25 0 obj
-<< /Producer (luahbtex-1.18.0)/Creator (LaTeX)/CreationDate (D:20240412224602+02'00')/ModDate (D:20240412224602+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.18.0 (TeX Live 2024)) >>
+<< /Producer (luahbtex-1.18.0)/Creator (LaTeX)/CreationDate (D:20240802125835+02'00')/ModDate (D:20240802125835+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.18.0 (TeX Live 2024)) >>
endobj
xref
0 26
0000000002 65535 f
-0000016854 00000 n
+0000016851 00000 n
0000000003 00000 f
0000000004 00000 f
0000000005 00000 f
@@ -427,24 +427,24 @@ xref
0000000008 00000 f
0000000000 00000 f
0000002976 00000 n
-0000016648 00000 n
+0000016645 00000 n
0000003094 00000 n
0000000020 00000 n
-0000023475 00000 n
-0000023829 00000 n
+0000023472 00000 n
+0000023826 00000 n
0000003181 00000 n
-0000016767 00000 n
-0000014675 00000 n
-0000016901 00000 n
-0000022024 00000 n
-0000017208 00000 n
-0000017283 00000 n
-0000022260 00000 n
-0000023629 00000 n
-0000023897 00000 n
-0000023978 00000 n
+0000016764 00000 n
+0000014672 00000 n
+0000016898 00000 n
+0000022021 00000 n
+0000017205 00000 n
+0000017280 00000 n
+0000022257 00000 n
+0000023626 00000 n
+0000023894 00000 n
+0000023972 00000 n
trailer
-<< /Size 26 /Root 24 0 R /Info 25 0 R /ID [ <F8A7135FF68D011151C46C7318E355A1> <F8A7135FF68D011151C46C7318E355A1> ] >>
+<< /Size 26 /Root 24 0 R /Info 25 0 R /ID [ <1A7EFBAD198841A82D20467F858B3B6C> <1A7EFBAD198841A82D20467F858B3B6C> ] >>
startxref
-24201
+24195
%%EOF
diff --git a/macros/latex/contrib/tagpdf/ex-softhyphen.pdf b/macros/latex/contrib/tagpdf/ex-softhyphen.pdf
index 167f4c4098..09a8d8aca0 100644
--- a/macros/latex/contrib/tagpdf/ex-softhyphen.pdf
+++ b/macros/latex/contrib/tagpdf/ex-softhyphen.pdf
@@ -1,7 +1,7 @@
%PDF-1.7
%
14 0 obj
-<< /Type /Metadata /Subtype /XML /Length 11385 >>
+<< /Type /Metadata /Subtype /XML /Length 11382 >>
stream
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
@@ -205,22 +205,22 @@ stream
</dc:type>
<dc:language>
<rdf:Bag>
- <rdf:li>en-US</rdf:li>
+ <rdf:li>de</rdf:li>
</rdf:Bag>
</dc:language>
<dc:date>
<rdf:Seq>
- <rdf:li>2024-04-12T22:46:20+02:00</rdf:li>
+ <rdf:li>2024-08-02T12:59:01+02:00</rdf:li>
</rdf:Seq>
</dc:date>
<dc:format>application/pdf</dc:format>
<dc:source>ex-softhyphen.tex</dc:source>
<xmp:CreatorTool>LaTeX</xmp:CreatorTool>
- <xmp:CreateDate>2024-04-12T22:46:20+02:00</xmp:CreateDate>
- <xmp:ModifyDate>2024-04-12T22:46:20+02:00</xmp:ModifyDate>
- <xmp:MetadataDate>2024-04-12T22:46:20+02:00</xmp:MetadataDate>
+ <xmp:CreateDate>2024-08-02T12:59:01+02:00</xmp:CreateDate>
+ <xmp:ModifyDate>2024-08-02T12:59:01+02:00</xmp:ModifyDate>
+ <xmp:MetadataDate>2024-08-02T12:59:01+02:00</xmp:MetadataDate>
<xmpMM:DocumentID>uuid:aa82e685-4098-469d-861c-3c45dfc700c7</xmpMM:DocumentID>
- <xmpMM:InstanceID>uuid:519a7795-b9d2-4e15-8969-b897a5a4ef22</xmpMM:InstanceID>
+ <xmpMM:InstanceID>uuid:994c7ab3-d509-4a5b-88b5-92bca5031c75</xmpMM:InstanceID>
<prism:complianceProfile>three</prism:complianceProfile>
<prism:pageCount>1</prism:pageCount>
</rdf:Description>
@@ -390,46 +390,46 @@ endobj
<< /Type /Pages /Count 1 /Kids [ 16 0 R ] >>
endobj
29 0 obj
-<< /Type /Catalog /Pages 19 0 R /MarkInfo 20 0 R/Lang (en-US)/Metadata 14 0 R/StructTreeRoot 5 0 R >>
+<< /Type /Catalog /Pages 19 0 R /MarkInfo 20 0 R/Lang (de)/Metadata 14 0 R/StructTreeRoot 5 0 R >>
endobj
30 0 obj
-<< /Producer (luahbtex-1.18.0)/Creator (LaTeX)/CreationDate (D:20240412224620+02'00')/ModDate (D:20240412224620+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.18.0 (TeX Live 2024)) >>
+<< /Producer (luahbtex-1.18.0)/Creator (LaTeX)/CreationDate (D:20240802125901+02'00')/ModDate (D:20240802125901+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.18.0 (TeX Live 2024)) >>
endobj
xref
0 31
0000000002 65535 f
-0000012363 00000 n
+0000012360 00000 n
0000000003 00000 f
0000000004 00000 f
0000000008 00000 f
-0000013741 00000 n
-0000012446 00000 n
-0000012664 00000 n
+0000013738 00000 n
+0000012443 00000 n
+0000012661 00000 n
0000000000 00000 f
-0000013256 00000 n
-0000013349 00000 n
-0000013435 00000 n
-0000013545 00000 n
-0000013631 00000 n
+0000013253 00000 n
+0000013346 00000 n
+0000013432 00000 n
+0000013542 00000 n
+0000013628 00000 n
0000000020 00000 n
-0000012276 00000 n
-0000012141 00000 n
-0000011495 00000 n
-0000017690 00000 n
-0000018054 00000 n
-0000012410 00000 n
-0000012496 00000 n
-0000012627 00000 n
-0000013842 00000 n
-0000016490 00000 n
-0000013996 00000 n
-0000014170 00000 n
-0000016730 00000 n
-0000017849 00000 n
-0000018116 00000 n
-0000018234 00000 n
+0000012273 00000 n
+0000012138 00000 n
+0000011492 00000 n
+0000017687 00000 n
+0000018051 00000 n
+0000012407 00000 n
+0000012493 00000 n
+0000012624 00000 n
+0000013839 00000 n
+0000016487 00000 n
+0000013993 00000 n
+0000014167 00000 n
+0000016727 00000 n
+0000017846 00000 n
+0000018113 00000 n
+0000018228 00000 n
trailer
-<< /Size 31 /Root 29 0 R /Info 30 0 R /ID [ <D9AD6A8B84F7C436A5E33ABFF75724B5> <D9AD6A8B84F7C436A5E33ABFF75724B5> ] >>
+<< /Size 31 /Root 29 0 R /Info 30 0 R /ID [ <EECF5F575625EC21F0BEE870E572FEB1> <EECF5F575625EC21F0BEE870E572FEB1> ] >>
startxref
-18457
+18451
%%EOF
diff --git a/macros/latex/contrib/tagpdf/ex-spaceglyph-listings.pdf b/macros/latex/contrib/tagpdf/ex-spaceglyph-listings.pdf
index 3925dd28a1..35e1d0609a 100644
--- a/macros/latex/contrib/tagpdf/ex-spaceglyph-listings.pdf
+++ b/macros/latex/contrib/tagpdf/ex-spaceglyph-listings.pdf
@@ -1,7 +1,7 @@
%PDF-1.5
%
10 0 obj
-<< /Type /Metadata /Subtype /XML /Length 11394 >>
+<< /Type /Metadata /Subtype /XML /Length 11391 >>
stream
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
@@ -205,22 +205,22 @@ stream
</dc:type>
<dc:language>
<rdf:Bag>
- <rdf:li>en-US</rdf:li>
+ <rdf:li>de</rdf:li>
</rdf:Bag>
</dc:language>
<dc:date>
<rdf:Seq>
- <rdf:li>2024-04-12T22:46:38+02:00</rdf:li>
+ <rdf:li>2024-08-02T12:59:25+02:00</rdf:li>
</rdf:Seq>
</dc:date>
<dc:format>application/pdf</dc:format>
<dc:source>ex-spaceglyph-listings.tex</dc:source>
<xmp:CreatorTool>LaTeX</xmp:CreatorTool>
- <xmp:CreateDate>2024-04-12T22:46:38+02:00</xmp:CreateDate>
- <xmp:ModifyDate>2024-04-12T22:46:38+02:00</xmp:ModifyDate>
- <xmp:MetadataDate>2024-04-12T22:46:38+02:00</xmp:MetadataDate>
+ <xmp:CreateDate>2024-08-02T12:59:25+02:00</xmp:CreateDate>
+ <xmp:ModifyDate>2024-08-02T12:59:25+02:00</xmp:ModifyDate>
+ <xmp:MetadataDate>2024-08-02T12:59:25+02:00</xmp:MetadataDate>
<xmpMM:DocumentID>uuid:acdc2435-bf29-4e54-8d09-1c9b6dc32038</xmpMM:DocumentID>
- <xmpMM:InstanceID>uuid:6c942f83-dfd6-4e6f-8910-a9170ff614fd</xmpMM:InstanceID>
+ <xmpMM:InstanceID>uuid:c59181fc-bb69-430b-8f90-90206d3ba579</xmpMM:InstanceID>
<prism:complianceProfile>three</prism:complianceProfile>
<prism:pageCount>1</prism:pageCount>
</rdf:Description>
@@ -351,42 +351,42 @@ endobj
<< /Type /Pages /Count 1 /Kids [ 12 0 R ] >>
endobj
25 0 obj
-<< /Type /Catalog /Pages 15 0 R /MarkInfo 16 0 R/Lang (en-US)/Metadata 10 0 R/StructTreeRoot 5 0 R >>
+<< /Type /Catalog /Pages 15 0 R /MarkInfo 16 0 R/Lang (de)/Metadata 10 0 R/StructTreeRoot 5 0 R >>
endobj
26 0 obj
-<< /Producer (luahbtex-1.18.0)/Creator (LaTeX)/CreationDate (D:20240412224638+02'00')/ModDate (D:20240412224638+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.18.0 (TeX Live 2024)) >>
+<< /Producer (luahbtex-1.18.0)/Creator (LaTeX)/CreationDate (D:20240802125925+02'00')/ModDate (D:20240802125925+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.18.0 (TeX Live 2024)) >>
endobj
xref
0 27
0000000002 65535 f
-0000012010 00000 n
+0000012007 00000 n
0000000003 00000 f
0000000004 00000 f
0000000008 00000 f
-0000012889 00000 n
-0000012093 00000 n
-0000012236 00000 n
+0000012886 00000 n
+0000012090 00000 n
+0000012233 00000 n
0000000000 00000 f
-0000012815 00000 n
+0000012812 00000 n
0000000020 00000 n
-0000011923 00000 n
-0000011788 00000 n
-0000011504 00000 n
-0000015072 00000 n
-0000015426 00000 n
-0000012057 00000 n
-0000012128 00000 n
-0000012199 00000 n
-0000012990 00000 n
-0000014056 00000 n
-0000013045 00000 n
-0000013120 00000 n
-0000014292 00000 n
-0000015226 00000 n
-0000015488 00000 n
-0000015606 00000 n
+0000011920 00000 n
+0000011785 00000 n
+0000011501 00000 n
+0000015069 00000 n
+0000015423 00000 n
+0000012054 00000 n
+0000012125 00000 n
+0000012196 00000 n
+0000012987 00000 n
+0000014053 00000 n
+0000013042 00000 n
+0000013117 00000 n
+0000014289 00000 n
+0000015223 00000 n
+0000015485 00000 n
+0000015600 00000 n
trailer
-<< /Size 27 /Root 25 0 R /Info 26 0 R /ID [ <4F03E017A0AB75B1D9F70C4C092338B6> <4F03E017A0AB75B1D9F70C4C092338B6> ] >>
+<< /Size 27 /Root 25 0 R /Info 26 0 R /ID [ <EC0A5DEABF5EE1A293FAD60891A0BF63> <EC0A5DEABF5EE1A293FAD60891A0BF63> ] >>
startxref
-15829
+15823
%%EOF
diff --git a/macros/latex/contrib/tagpdf/ex-structure-obsolete.pdf b/macros/latex/contrib/tagpdf/ex-structure-obsolete.pdf
index 4e1d3bd333..73ce1c0602 100644
--- a/macros/latex/contrib/tagpdf/ex-structure-obsolete.pdf
+++ b/macros/latex/contrib/tagpdf/ex-structure-obsolete.pdf
@@ -1,7 +1,7 @@
%PDF-1.7
%
20 0 obj
-<< /Type /Metadata /Subtype /XML /Length 11393 >>
+<< /Type /Metadata /Subtype /XML /Length 11390 >>
stream
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
@@ -205,22 +205,22 @@ stream
</dc:type>
<dc:language>
<rdf:Bag>
- <rdf:li>en-US</rdf:li>
+ <rdf:li>de</rdf:li>
</rdf:Bag>
</dc:language>
<dc:date>
<rdf:Seq>
- <rdf:li>2024-04-12T22:46:56+02:00</rdf:li>
+ <rdf:li>2024-08-02T12:59:50+02:00</rdf:li>
</rdf:Seq>
</dc:date>
<dc:format>application/pdf</dc:format>
<dc:source>ex-structure-obsolete.tex</dc:source>
<xmp:CreatorTool>LaTeX</xmp:CreatorTool>
- <xmp:CreateDate>2024-04-12T22:46:56+02:00</xmp:CreateDate>
- <xmp:ModifyDate>2024-04-12T22:46:56+02:00</xmp:ModifyDate>
- <xmp:MetadataDate>2024-04-12T22:46:56+02:00</xmp:MetadataDate>
+ <xmp:CreateDate>2024-08-02T12:59:50+02:00</xmp:CreateDate>
+ <xmp:ModifyDate>2024-08-02T12:59:50+02:00</xmp:ModifyDate>
+ <xmp:MetadataDate>2024-08-02T12:59:50+02:00</xmp:MetadataDate>
<xmpMM:DocumentID>uuid:bf5e4a2b-cfa9-4fc5-878c-8f9d2ee95445</xmpMM:DocumentID>
- <xmpMM:InstanceID>uuid:dfe9a42c-3fb3-4d0b-8cff-cbabbd4c8758</xmpMM:InstanceID>
+ <xmpMM:InstanceID>uuid:2ccba557-e5ae-4703-80db-28b73a88c1cd</xmpMM:InstanceID>
<prism:complianceProfile>three</prism:complianceProfile>
<prism:pageCount>1</prism:pageCount>
</rdf:Description>
@@ -523,59 +523,59 @@ endobj
<< /Type /Pages /Count 1 /Kids [ 22 0 R ] >>
endobj
42 0 obj
-<< /Type /Catalog /Pages 26 0 R /MarkInfo 27 0 R/Lang (en-US)/Metadata 20 0 R/StructTreeRoot 5 0 R >>
+<< /Type /Catalog /Pages 26 0 R /MarkInfo 27 0 R/Lang (de)/Metadata 20 0 R/StructTreeRoot 5 0 R >>
endobj
43 0 obj
-<< /Producer (luahbtex-1.18.0)/Creator (LaTeX)/CreationDate (D:20240412224656+02'00')/ModDate (D:20240412224656+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.18.0 (TeX Live 2024)) >>
+<< /Producer (luahbtex-1.18.0)/Creator (LaTeX)/CreationDate (D:20240802125950+02'00')/ModDate (D:20240802125950+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.18.0 (TeX Live 2024)) >>
endobj
xref
0 44
0000000002 65535 f
-0000012797 00000 n
+0000012794 00000 n
0000000003 00000 f
0000000004 00000 f
0000000008 00000 f
-0000014933 00000 n
-0000012880 00000 n
-0000013229 00000 n
+0000014930 00000 n
+0000012877 00000 n
+0000013226 00000 n
0000000000 00000 f
-0000013821 00000 n
-0000013906 00000 n
-0000014004 00000 n
-0000014112 00000 n
-0000014220 00000 n
-0000014309 00000 n
-0000014399 00000 n
-0000014509 00000 n
-0000014621 00000 n
-0000014711 00000 n
-0000014821 00000 n
+0000013818 00000 n
+0000013903 00000 n
+0000014001 00000 n
+0000014109 00000 n
+0000014217 00000 n
+0000014306 00000 n
+0000014396 00000 n
+0000014506 00000 n
+0000014618 00000 n
+0000014708 00000 n
+0000014818 00000 n
0000000020 00000 n
-0000012698 00000 n
-0000012563 00000 n
-0000011503 00000 n
-0000023016 00000 n
-0000019782 00000 n
-0000023364 00000 n
-0000012844 00000 n
-0000012958 00000 n
-0000013192 00000 n
-0000015034 00000 n
-0000018513 00000 n
-0000015283 00000 n
-0000015358 00000 n
-0000018749 00000 n
-0000019936 00000 n
-0000020136 00000 n
-0000021904 00000 n
-0000020273 00000 n
-0000020349 00000 n
-0000022138 00000 n
-0000023167 00000 n
-0000023426 00000 n
-0000023544 00000 n
+0000012695 00000 n
+0000012560 00000 n
+0000011500 00000 n
+0000023013 00000 n
+0000019779 00000 n
+0000023361 00000 n
+0000012841 00000 n
+0000012955 00000 n
+0000013189 00000 n
+0000015031 00000 n
+0000018510 00000 n
+0000015280 00000 n
+0000015355 00000 n
+0000018746 00000 n
+0000019933 00000 n
+0000020133 00000 n
+0000021901 00000 n
+0000020270 00000 n
+0000020346 00000 n
+0000022135 00000 n
+0000023164 00000 n
+0000023423 00000 n
+0000023538 00000 n
trailer
-<< /Size 44 /Root 42 0 R /Info 43 0 R /ID [ <070B43978F0B9DD29A40F81836E2FD94> <070B43978F0B9DD29A40F81836E2FD94> ] >>
+<< /Size 44 /Root 42 0 R /Info 43 0 R /ID [ <AE5400E970AB8EBE6C04A229EBA70E89> <AE5400E970AB8EBE6C04A229EBA70E89> ] >>
startxref
-23767
+23761
%%EOF
diff --git a/macros/latex/contrib/tagpdf/ex-tagpdf-template.pdf b/macros/latex/contrib/tagpdf/ex-tagpdf-template.pdf
index 1edb5a1526..7147cd1e91 100644
--- a/macros/latex/contrib/tagpdf/ex-tagpdf-template.pdf
+++ b/macros/latex/contrib/tagpdf/ex-tagpdf-template.pdf
@@ -1,7 +1,7 @@
%PDF-2.0
%
26 0 obj
-<< /Type /Metadata /Subtype /XML /Length 11390 >>
+<< /Type /Metadata /Subtype /XML /Length 11387 >>
stream
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
@@ -205,22 +205,22 @@ stream
</dc:type>
<dc:language>
<rdf:Bag>
- <rdf:li>en-US</rdf:li>
+ <rdf:li>en</rdf:li>
</rdf:Bag>
</dc:language>
<dc:date>
<rdf:Seq>
- <rdf:li>2024-04-12T22:47:14+02:00</rdf:li>
+ <rdf:li>2024-08-02T13:00:16+02:00</rdf:li>
</rdf:Seq>
</dc:date>
<dc:format>application/pdf</dc:format>
<dc:source>ex-tagpdf-template.tex</dc:source>
<xmp:CreatorTool>LaTeX</xmp:CreatorTool>
- <xmp:CreateDate>2024-04-12T22:47:14+02:00</xmp:CreateDate>
- <xmp:ModifyDate>2024-04-12T22:47:14+02:00</xmp:ModifyDate>
- <xmp:MetadataDate>2024-04-12T22:47:14+02:00</xmp:MetadataDate>
+ <xmp:CreateDate>2024-08-02T13:00:16+02:00</xmp:CreateDate>
+ <xmp:ModifyDate>2024-08-02T13:00:16+02:00</xmp:ModifyDate>
+ <xmp:MetadataDate>2024-08-02T13:00:16+02:00</xmp:MetadataDate>
<xmpMM:DocumentID>uuid:f320abfc-f6ab-4d12-8719-d176f4d947cf</xmpMM:DocumentID>
- <xmpMM:InstanceID>uuid:a58b5e07-b0ee-4a81-8000-b7d421e306ee</xmpMM:InstanceID>
+ <xmpMM:InstanceID>uuid:3b4409f1-f3e5-4c01-86c4-a0bcea68ea38</xmpMM:InstanceID>
<prism:complianceProfile>three</prism:complianceProfile>
<prism:pageCount>1</prism:pageCount>
</rdf:Description>
@@ -307,7 +307,7 @@ endobj
<< /Type /Namespace /NS (https://www.latex-project.org/ns/book/2022) /RoleMapNS 18 0 R >>
endobj
19 0 obj
-<< /Type /Namespace /NS (data:,116ADA92-7CCD-B12C-F093-B4B64DA61C) >>
+<< /Type /Namespace /NS (data:,25352333-84F8-941A-42AB-414B46468294) >>
endobj
8 0 obj
[ 9 0 R 11 0 R 13 0 R 15 0 R 17 0 R 19 0 R ]
@@ -396,58 +396,58 @@ endobj
<< /Type /Pages /Count 1 /Kids [ 28 0 R ] >>
endobj
41 0 obj
-<< /Type /Catalog /Pages 31 0 R /MarkInfo 32 0 R/Lang (en-US)/Metadata 26 0 R/StructTreeRoot 5 0 R >>
+<< /Type /Catalog /Pages 31 0 R /MarkInfo 32 0 R/Lang (en)/Metadata 26 0 R/StructTreeRoot 5 0 R >>
endobj
42 0 obj
-<< /Producer (luahbtex-1.18.0)/Creator (LaTeX)/CreationDate (D:20240412224714+02'00')/ModDate (D:20240412224714+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.18.0 (TeX Live 2024)) >>
+<< /Producer (luahbtex-1.18.0)/Creator (LaTeX)/CreationDate (D:20240802130016+02'00')/ModDate (D:20240802130016+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.18.0 (TeX Live 2024)) >>
endobj
xref
0 43
0000000002 65535 f
-0000011932 00000 n
+0000011929 00000 n
0000000003 00000 f
0000000004 00000 f
0000000010 00000 f
-0000014806 00000 n
-0000012015 00000 n
-0000012225 00000 n
-0000014241 00000 n
-0000012868 00000 n
+0000014805 00000 n
+0000012012 00000 n
+0000012222 00000 n
+0000014240 00000 n
+0000012865 00000 n
0000000012 00000 f
-0000012936 00000 n
+0000012933 00000 n
0000000014 00000 f
-0000013006 00000 n
+0000013003 00000 n
0000000020 00000 f
-0000013769 00000 n
-0000013087 00000 n
-0000014047 00000 n
-0000013876 00000 n
-0000014154 00000 n
+0000013766 00000 n
+0000013084 00000 n
+0000014044 00000 n
+0000013873 00000 n
+0000014151 00000 n
0000000000 00000 f
-0000014302 00000 n
-0000014399 00000 n
-0000014486 00000 n
-0000014573 00000 n
-0000014672 00000 n
+0000014301 00000 n
+0000014398 00000 n
+0000014485 00000 n
+0000014572 00000 n
+0000014671 00000 n
0000000020 00000 n
-0000011869 00000 n
-0000011734 00000 n
-0000011500 00000 n
-0000017427 00000 n
-0000017781 00000 n
-0000011979 00000 n
-0000012056 00000 n
-0000012188 00000 n
-0000012804 00000 n
-0000014943 00000 n
-0000016384 00000 n
-0000015030 00000 n
-0000016605 00000 n
-0000017581 00000 n
-0000017843 00000 n
-0000017961 00000 n
+0000011866 00000 n
+0000011731 00000 n
+0000011497 00000 n
+0000017426 00000 n
+0000017780 00000 n
+0000011976 00000 n
+0000012053 00000 n
+0000012185 00000 n
+0000012801 00000 n
+0000014942 00000 n
+0000016383 00000 n
+0000015029 00000 n
+0000016604 00000 n
+0000017580 00000 n
+0000017842 00000 n
+0000017957 00000 n
trailer
-<< /Size 43 /Root 41 0 R /Info 42 0 R /ID [ <6A478CD03D1F91A40D3812163E3E3FC9> <6A478CD03D1F91A40D3812163E3E3FC9> ] >>
+<< /Size 43 /Root 41 0 R /Info 42 0 R /ID [ <42D962292B4982520E998D32C837DE43> <42D962292B4982520E998D32C837DE43> ] >>
startxref
-18184
+18180
%%EOF
diff --git a/macros/latex/contrib/tagpdf/link-figure-input.tex b/macros/latex/contrib/tagpdf/link-figure-input.tex
index ef07c33e95..1a1036d282 100644
--- a/macros/latex/contrib/tagpdf/link-figure-input.tex
+++ b/macros/latex/contrib/tagpdf/link-figure-input.tex
@@ -27,7 +27,7 @@
\NewDocumentCommand\balloon{m}{%
\node[fit={(pic cs:#1-first) (pic cs:#1-end)
([yshift=7pt]pic cs:#1-end)},balloon](#1){};}
-\begin{tikzpicture}[overlay,remember picture]
+\begin{tikzpicture}[overlay,remember picture,alt={Illustration of link annotation structure}]
\balloon{link}
\balloon{structparent}
\balloon{OBJR}
@@ -45,7 +45,7 @@
\draw[ref] (kid)--(OBJR);
\draw[ref] (OBJR)--(linkref);
\end{tikzpicture}
-\begin{lstlisting}[name=OBJR]
+\begin{taglstlisting}[name=OBJR]
*\tikzmark{link-first}*18 0 obj*\tikzmark{link-end}* %Link Object
<< /Type /Annot /Subtype/Link
/Rect [ 196.109 494.573 399.167 506.831 ]
@@ -67,4 +67,4 @@ endobj};
<< /Nums
[... *\tikzmark{pnum-first}*16*\tikzmark{pnum-end}* *\tikzmark{pref-first}*17 0 R*\tikzmark{pref-end}* ...] >>
endobj
-\end{lstlisting}
+\end{taglstlisting}
diff --git a/macros/latex/contrib/tagpdf/pac2024-report.png b/macros/latex/contrib/tagpdf/pac2024-report.png
new file mode 100644
index 0000000000..4474bc989f
--- /dev/null
+++ b/macros/latex/contrib/tagpdf/pac2024-report.png
Binary files differ
diff --git a/macros/latex/contrib/tagpdf/pac2024-version.png b/macros/latex/contrib/tagpdf/pac2024-version.png
new file mode 100644
index 0000000000..1bc12bdafe
--- /dev/null
+++ b/macros/latex/contrib/tagpdf/pac2024-version.png
Binary files differ
diff --git a/macros/latex/contrib/tagpdf/tagpdf-backend.dtx b/macros/latex/contrib/tagpdf/tagpdf-backend.dtx
index 0f388b2542..0ed233e2e0 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-backend.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-backend.dtx
@@ -47,13 +47,13 @@
% }^^A
% }
%
-% \date{Version 0.99b, released 2024-04-12}
+% \date{Version 0.99d, released 2024-08-02}
% \maketitle
% \begin{implementation}
% \begin{macrocode}
%<@@=tag>
%<*luatex>
-\ProvidesExplFile {tagpdf-luatex.def} {2024-04-12} {0.99b}
+\ProvidesExplFile {tagpdf-luatex.def} {2024-08-02} {0.99d}
{tagpdf~driver~for~luatex}
% \end{macrocode}
% \section{Loading the lua}
@@ -164,8 +164,8 @@
local ProvidesLuaModule = {
name = "tagpdf",
- version = "0.99b", --TAGVERSION
- date = "2024-04-12", --TAGDATE
+ version = "0.99d", --TAGVERSION
+ date = "2024-08-02", --TAGDATE
description = "tagpdf lua code",
license = "The LATEX Project Public License 1.3c"
}
@@ -196,8 +196,8 @@ ltx.@@.page will contain page data
ltx.@@.tables contains also data from mc and struct (from older code). This needs cleaning up.
There are certainly dublettes, but I don't dare yet ...
ltx.@@.func will contain (public) functions.
-ltx.@@.trace will contain tracing/loging functions.
-local funktions starts with __
+ltx.@@.trace will contain tracing/logging functions.
+local functions starts with __
functions meant for users will be in ltx.tag
functions
@@ -210,7 +210,7 @@ functions
ltx.@@.func.store_mc_kid (mcnum,kid,page): stores the mc-kids of mcnum on page page
ltx.@@.func.store_mc_in_page(mcnum,mcpagecnt,page): stores in the page table the number of mcnum on this page
ltx.@@.func.store_struct_mcabs (structnum,mcnum): stores relations structnum<->mcnum (abs)
- ltx.@@.func.mc_insert_kids (mcnum): inserts the /K entries for mcnum by wandering throught the [kids] table
+ ltx.@@.func.mc_insert_kids (mcnum): inserts the /K entries for mcnum by wandering through the [kids] table
ltx.@@.func.mark_page_elements(box,mcpagecnt,mccntprev,mcopen,name,mctypeprev) : the main function
ltx.@@.func.mark_shipout (): a wrapper around the core function which inserts the last EMC
ltx.@@.func.fill_parent_tree_line (page): outputs the entries of the parenttree for this page
@@ -252,6 +252,12 @@ local iwfontattributeid = luatexbase.new_attribute ("g_@@_interwordfont_attr")
local tagunmarkedbool= token.create("g_@@_tagunmarked_bool")
local truebool = token.create("c_true_bool")
% \end{macrocode}
+% with this token we can query the state of the softhyphen boolean
+% and so detect if hyphens from hyphenation should be replaced by soft-hyphens.
+% \begin{macrocode}
+local softhyphenbool = token.create("g_@@_softhyphen_bool")
+% \end{macrocode}
+
% Now a number of local versions from global tables.
% Not all is perhaps needed, most node variants were copied from lua-debug.
% \begin{macrocode}
@@ -286,6 +292,9 @@ local KERN = node.id("kern")
local PENALTY = node.id("penalty")
local LOCAL_PAR = node.id("local_par")
local MATH = node.id("math")
+
+local explicit_disc = 1
+local regular_disc = 3
% \end{macrocode}
% Now we setup the main table structure. ltx is used by other latex code too!
% \begin{macrocode}
@@ -827,7 +836,7 @@ end
% @@_activate_mark_space,
% ltx.@@.func.markspaceoff
% }
-% Theses functions add/remove the function which marks the spaces to the callbacks
+% These functions add/remove the function which marks the spaces to the callbacks
% |pre_linebreak_filter| and |hpack_filter|
% \begin{macrocode}
local function @@_activate_mark_space ()
@@ -1267,6 +1276,80 @@ function ltx.@@.func.output_parenttree (abspage)
end
% \end{macrocode}
% \end{macro}
+%
+% \begin{macro}
+% {
+% process_softhyphen_pre
+% process_softhyphen_post
+% }
+% First some local definitions. Since these are only needed locally everything gets wrapped into a block.
+% \begin{macrocode}
+do
+ local properties = node.get_properties_table()
+ local is_soft_hyphen_prop = 'tagpdf.rewrite-softhyphen.is_soft_hyphen'
+ local hyphen_char = 0x2D
+ local soft_hyphen_char = 0xAD
+% \end{macrocode}
+%
+% A lookup table to test if the font supports the soft hyphen glyph.
+% \begin{macrocode}
+ local softhyphen_fonts = setmetatable({}, {__index = function(t, fid)
+ local fdir = identifiers[fid]
+ local format = fdir and fdir.format
+ local result = (format == 'opentype' or format == 'truetype')
+ local characters = fdir and fdir.characters
+ result = result and (characters and characters[soft_hyphen_char]) ~= nil
+ t[fid] = result
+ return result
+ end})
+% \end{macrocode}
+%
+% A pre shaping callback to mark hyphens as being hyphenation hyphens.
+% This runs before shaping to avoid affecting hyphens moved into
+% discretionaries during shaping.
+% \begin{macrocode}
+ local function process_softhyphen_pre(head, _context, _dir)
+ if softhyphenbool.mode ~= truebool.mode then return true end
+ for disc, sub in node.traverse_id(DISC, head) do
+ if sub == explicit_disc or sub == regular_disc then
+ for n, _ch, _f in node.traverse_char(disc.pre) do
+ local props = properties[n]
+ if not props then
+ props = {}
+ properties[n] = props
+ end
+ props[is_soft_hyphen_prop] = true
+ end
+ end
+ end
+ return true
+ end
+
+% \end{macrocode}
+%
+% Finally do the actual replacement after shaping. No checking for double processing here
+% since the operation is idempotent.
+% \begin{macrocode}
+ local function process_softhyphen_post(head, _context, _dir)
+ if softhyphenbool.mode ~= truebool.mode then return true end
+ for disc, sub in node.traverse_id(DISC, head) do
+ for n, ch, fid in node.traverse_glyph(disc.pre) do
+ local props = properties[n]
+ if softhyphen_fonts[fid] and ch == hyphen_char and props and props[is_soft_hyphen_prop] then
+ n.char = soft_hyphen_char
+ props.glyph_info = nil
+ end
+ end
+ end
+ return true
+ end
+
+ luatexbase.add_to_callback('pre_shaping_filter', process_softhyphen_pre, 'tagpdf.rewrite-softhyphen')
+ luatexbase.add_to_callback('post_shaping_filter', process_softhyphen_post, 'tagpdf.rewrite-softhyphen')
+end
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macrocode}
%</lua>
% \end{macrocode}
diff --git a/macros/latex/contrib/tagpdf/tagpdf-checks.dtx b/macros/latex/contrib/tagpdf/tagpdf-checks.dtx
index f786ede615..3cbe3b141b 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-checks.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-checks.dtx
@@ -48,7 +48,7 @@
% }^^A
% }
%
-% \date{Version 0.99b, released 2024-04-12}
+% \date{Version 0.99d, released 2024-08-02}
% \maketitle
% \begin{documentation}
% \section{Commands}
@@ -74,7 +74,7 @@
% It relies currently on that the code, that saved the box, correctly sets
% the command \verb+\l_tag_box_\int_use:N #1_tl+ to a positive value.
% The LaTeX commands will do that automatically
-% at some time but it is in the responsability of the user to
+% at some time but it is in the responsibility of the user to
% ensure that when using low-level code.
% If the internal command doesn't exist the box is assumed to be untagged.
% \end{function}
@@ -331,7 +331,7 @@
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-checks-code} {2024-04-12} {0.99b}
+\ProvidesExplPackage {tagpdf-checks-code} {2024-08-02} {0.99d}
{part of tagpdf - code related to checks, conditionals, debugging and messages}
%</header>
% \end{macrocode}
@@ -639,7 +639,7 @@
% It relies on that the code that saved the box correctly set
% \verb+\l_tag_box_<box number>_tl+ to a positive value.
% The LaTeX commands will do that automatically
-% at some time but it is in the responsability of the user to
+% at some time but it is in the responsibility of the user to
% ensure that when using low-level code.
% If the internal command doesn't exist the box is assumed to be untagged.
% \begin{macrocode}
diff --git a/macros/latex/contrib/tagpdf/tagpdf-code.pdf b/macros/latex/contrib/tagpdf/tagpdf-code.pdf
index 10a9c1dc8d..76e839d0d5 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-code.pdf
+++ b/macros/latex/contrib/tagpdf/tagpdf-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/tagpdf/tagpdf-data.dtx b/macros/latex/contrib/tagpdf/tagpdf-data.dtx
index d8cba42142..6417b44c40 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-data.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-data.dtx
@@ -47,7 +47,7 @@
% }^^A
% }
%
-% \date{Version 0.99b, released 2024-04-12}
+% \date{Version 0.99d, released 2024-08-02}
% \maketitle
% \begin{documentation}
% This files contains a various data files which are read in
@@ -58,10 +58,10 @@
% \section{The LaTeX namespace}
% This is the main new namespace. It is bound to change a lot!
% It lists the new tag, the rolemap and the namespace of the rolemap.
-% latex-lab has also a namespace module, which takes precendence!
+% latex-lab has also a namespace module, which takes precedence!
% \begin{macrocode}
%<*ns-latex>
-%% \ProvidesExplFile {tagpdf-ns-latex.def} {2024-04-12} {0.99b}
+%% \ProvidesExplFile {tagpdf-ns-latex.def} {2024-08-02} {0.99d}
%% {latex} {https://www.latex-project.org/ns/dflt/2022}{}
title, Title, pdf2,
part, Title, pdf2,
@@ -93,7 +93,7 @@ text, P, pdf2,
% It is bound to change
% \begin{macrocode}
%<*ns-latex-book>
-%% \ProvidesExplFile {tagpdf-ns-latex-book.def} {2024-04-12} {0.99b}
+%% \ProvidesExplFile {tagpdf-ns-latex-book.def} {2024-08-02} {0.99d}
%% {latex-book} {https://www.latex-project.org/ns/book/2022}{}
chapter, H1,pdf2,
section, H2,pdf2,
@@ -107,7 +107,7 @@ subparagraph, H6,pdf2,
% \section{The pdf namespace data}
% \begin{macrocode}
%<*ns-pdf>
-%% \ProvidesExplFile {tagpdf-ns-pdf.def} {2024-04-12} {0.99b}
+%% \ProvidesExplFile {tagpdf-ns-pdf.def} {2024-08-02} {0.99d}
%% {pdf} {http://iso.org/pdf/ssn}{}
StructTreeRoot,StructTreeRoot,pdf,D,
Document,Document,pdf,D,
@@ -175,7 +175,7 @@ Strong,Span,pdf,I,
% \section{The pdf 2.0 namespace data}
% \begin{macrocode}
%<*ns-pdf2>
-%% \ProvidesExplFile {tagpdf-ns-pdf2.def} {2024-04-12} {0.99b}
+%% \ProvidesExplFile {tagpdf-ns-pdf2.def} {2024-08-02} {0.99d}
%% {pdf2} {http://iso.org/pdf2/ssn}{}
StructTreeRoot,StructTreeRoot,pdf2,D,
Document,Document,pdf2,D,
@@ -232,7 +232,7 @@ Strong,Strong,pdf2,I,
% \section{The mathml namespace data}
% \begin{macrocode}
%<*ns-mathml>
-%% \ProvidesExplFile {tagpdf-ns-mathml.def} {2024-04-12} {0.99b}
+%% \ProvidesExplFile {tagpdf-ns-mathml.def} {2024-08-02} {0.99d}
% {mathml}{http://www.w3.org/1998/Math/MathML}{}
abs,abs,mathml,
and,and,mathml,
@@ -430,7 +430,7 @@ xor,xor,mathml,
% \section{Rule naming}
% \begin{macro}{\c_@@_role_rules_prop}
% These two properties map the rule strings to numbers and back.
-% There are in tagpdf-data.dtx near the csv files for easier maintainance.
+% There are in tagpdf-data.dtx near the csv files for easier maintenance.
% \begin{macrocode}
%<*package>
\prop_const_from_keyval:Nn \c_@@_role_rules_prop
@@ -467,7 +467,7 @@ xor,xor,mathml,
% This will perhaps change in future.
% \begin{macrocode}
%<*parent-child>
-%% \ProvidesExplFile {tagpdf-parent-child.csv} {2024-04-12} {0.99b}
+%% \ProvidesExplFile {tagpdf-parent-child.csv} {2024-08-02} {0.99d}
,,,StructTreeRoot,Document,Art,Part,Div,Sect,BlockQuote,NonStruct,TOC,TOCI,Index,Private,Quote,Note,Reference,BibEntry,P,Hn,H,Lbl,Code,Span,Link,Annot,Form,Ruby,RB,RT,RP,Warichu,WT,WP,L,LI,LBody,Table,TR,TH,TD,THead,TBody,TFoot,Caption,Figure,Formula,MC
Document,both,document level,1,0..n,∅,‡,‡,∅,0..n,‡,∅,∅,∅,0..n,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅
Art,1.7,grouping,∅,0..n,∅,‡,‡,0..n,0..n,‡,∅,∅,∅,0..n,∅,0..n,∅,∅,∅,0..1,0..1,∅,∅,∅,0..n,0..n,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,0..n,∅,∅,0..n,0..n,∅,∅,∅,0..n,0..n,∅,∅
@@ -522,7 +522,7 @@ MC,both,---,∅,∅,∅,∅,∅,∅,0..n,‡,∅,∅,∅,0..n,0..n,0..n,0..n,0..
% This will perhaps change in future.
% \begin{macrocode}
%<*parent-child-2>
-%% \ProvidesExplFile {tagpdf-parent-child-2.csv} {2024-04-12} {0.99b}
+%% \ProvidesExplFile {tagpdf-parent-child-2.csv} {2024-08-02} {0.99d}
,,,StructTreeRoot,Document,DocumentFragment,Art,Part,Div,Sect,Aside,BlockQuote,NonStruct,TOC,TOCI,Index,Private,Title,Sub,Quote,Note,Reference,BibEntry,P,Hn,H,Lbl,Code,Em,Strong,Span,Link,Annot,Form,Ruby,RB,RT,RP,Warichu,WT,WP,FENote,L,LI,LBody,Table,TR,TH,TD,THead,TBody,TFoot,Caption,Figure,Formula,math,mathml,Artifact,MC
Document,both,document level,1,0..n,0..n,∅,‡,‡,∅,0..n,0..n,‡,∅,∅,∅,0..n,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,0..n,∅
DocumentFragment,2.0,document level,∅,0..n,0..n,0..n,‡,‡,0..n,0..n,0..n,‡,∅,∅,∅,0..n,∅,∅,∅,∅*,∅,∅,∅,∅,∅,∅,∅*,∅,∅,∅,∅*,∅*,∅,∅,∅,∅,∅,∅,∅,∅,∅*,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅*,∅,∅,∅,∅,0..n,∅
diff --git a/macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx b/macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx
index b1ce874db6..ff036b5523 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Version 0.99b, released 2024-04-12}
+% \date{Version 0.99d, released 2024-08-02}
% \maketitle
% \begin{documentation}
% \end{documentation}
@@ -55,11 +55,11 @@
% \begin{macrocode}
%<@@=tag>
%<*generic>
-\ProvidesExplPackage {tagpdf-mc-code-generic} {2024-04-12} {0.99b}
+\ProvidesExplPackage {tagpdf-mc-code-generic} {2024-08-02} {0.99d}
{part of tagpdf - code related to marking chunks - generic mode}
%</generic>
%<*debug>
-\ProvidesExplPackage {tagpdf-debug-generic} {2024-04-12} {0.99b}
+\ProvidesExplPackage {tagpdf-debug-generic} {2024-08-02} {0.99d}
{part of tagpdf - debugging code related to marking chunks - generic mode}
%</debug>
% \end{macrocode}
@@ -393,12 +393,12 @@
% \end{macro}
% \begin{macro}{\@@_add_missing_mcs_to_stream:Nn}
-% This is the main command to add mc to the stream. It is therefor
+% This is the main command to add mc to the stream. It is therefore
% guarded by the mc-boolean.
%
% If we aren't in the main stream then processing is a bit more
% complicated because to get at the marks in the box we need to
-% artifically split it and then look at the split marks.
+% artificially split it and then look at the split marks.
%
% First argument is the box to update and the second is the \enquote{stream}.
% In lua mode the command is a no-op.
diff --git a/macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx b/macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx
index 9db6cc95fa..3c2e91605e 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx
@@ -46,10 +46,10 @@
% }^^A
% }
%
-% \date{Version 0.99b, released 2024-04-12}
+% \date{Version 0.99d, released 2024-08-02}
% \maketitle
% \begin{implementation}
-% The code is splitted into three parts: code shared by all engines,
+% The code is split into three parts: code shared by all engines,
% code specific to luamode and code not used by luamode.
%
% \section{Marked content code -- luamode code}
@@ -86,11 +86,11 @@
% \begin{macrocode}
%<@@=tag>
%<*luamode>
-\ProvidesExplPackage {tagpdf-mc-code-lua} {2024-04-12} {0.99b}
+\ProvidesExplPackage {tagpdf-mc-code-lua} {2024-08-02} {0.99d}
{tagpdf - mc code only for the luamode }
%</luamode>
%<*debug>
-\ProvidesExplPackage {tagpdf-debug-lua} {2024-04-12} {0.99b}
+\ProvidesExplPackage {tagpdf-debug-lua} {2024-08-02} {0.99d}
{part of tagpdf - debugging code related to marking chunks - lua mode}
%</debug>
% \end{macrocode}
diff --git a/macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx b/macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx
index aeadb889d4..5bfe0658d1 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Version 0.99b, released 2024-04-12}
+% \date{Version 0.99d, released 2024-08-02}
% \maketitle
% \begin{documentation}
% \section{Public Commands}
@@ -175,13 +175,13 @@
% \end{function}
% \end{documentation}
% \begin{implementation}
-% The code is splitted into three parts: code shared by all engines,
+% The code is split into three parts: code shared by all engines,
% code specific to luamode and code not used by luamode.
% \section{Marked content code -- shared}
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-mc-code-shared} {2024-04-12} {0.99b}
+\ProvidesExplPackage {tagpdf-mc-code-shared} {2024-08-02} {0.99d}
{part of tagpdf - code related to marking chunks -
code shared by generic and luamode }
%</header>
diff --git a/macros/latex/contrib/tagpdf/tagpdf-roles.dtx b/macros/latex/contrib/tagpdf/tagpdf-roles.dtx
index de239c2db7..fb5f1b77c9 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-roles.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-roles.dtx
@@ -33,7 +33,7 @@
%</driver>
% \fi
% \title{^^A
-% The \pkg{tagpdf-roles} module\\ Tags, roles and namesspace code ^^A
+% The \pkg{tagpdf-roles} module\\ Tags, roles and namespace code ^^A
% \\ Part of the tagpdf package
% }
%
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Version 0.99b, released 2024-04-12}
+% \date{Version 0.99d, released 2024-08-02}
% \maketitle
% \begin{documentation}
% \begin{function}
@@ -98,7 +98,7 @@
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-roles-code} {2024-04-12} {0.99b}
+\ProvidesExplPackage {tagpdf-roles-code} {2024-08-02} {0.99d}
{part of tagpdf - code related to roles and structure names}
%</header>
% \end{macrocode}
@@ -190,7 +190,7 @@
% \end{variable}
%
% \begin{variable}{\g_@@_role_tags_class_prop}
-% With pdf 2.0 we store the class in the NS dependant props.
+% With pdf 2.0 we store the class in the NS dependent props.
% With pdf <2.0 we store for now the type(s) of a tag in a common
% prop.
% Tags that are rolemapped should get the type from
@@ -750,19 +750,31 @@
{
\hook_gput_code:nnn {begindocument}{tagpdf}
{
- \cs_if_exist:NT \chapter
- {
- \prop_map_inline:cn{g_@@_role_NS_latex-book_prop}
- {
- \@@_role_add_tag:ne {#1}{\use_i:nn #2\c_empty_tl\c_empty_tl}
- }
- }
+ \bool_lazy_and:nnT
+ {
+ \cs_if_exist_p:N \chapter
+ }
+ {
+ \cs_if_exist_p:N \c@chapter
+ }
+ {
+ \prop_map_inline:cn{g_@@_role_NS_latex-book_prop}
+ {
+ \@@_role_add_tag:ne {#1}{\use_i:nn #2\c_empty_tl\c_empty_tl}
+ }
+ }
}
}
{
\hook_gput_code:nnn {begindocument}{tagpdf}
{
- \cs_if_exist:NT \chapter
+ \bool_lazy_and:nnT
+ {
+ \cs_if_exist_p:N \chapter
+ }
+ {
+ \cs_if_exist_p:N \c@chapter
+ }
{
\prop_map_inline:cn{g_@@_role_NS_latex-book_prop}
{
diff --git a/macros/latex/contrib/tagpdf/tagpdf-space.dtx b/macros/latex/contrib/tagpdf/tagpdf-space.dtx
index 62c9fd1eca..5c8e007084 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-space.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-space.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Version 0.99b, released 2024-04-12}
+% \date{Version 0.99d, released 2024-08-02}
% \maketitle
% \begin{documentation}
% \begin{function}{activate/space (setup-key),interwordspace (deprecated)}
@@ -58,7 +58,7 @@
% This key is deprecated. Use |debug/show=spaces| instead.
% This key works only with luatex and shows with small red
% bars where spaces have been inserted. This is only for debugging and
-% is not completly reliable (and change affect other literals and tagging), so it
+% is not completely reliable (and change affect other literals and tagging), so it
% should be used with care.
% \end{function}
% \end{documentation}
@@ -66,12 +66,12 @@
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-space-code} {2024-04-12} {0.99b}
+\ProvidesExplPackage {tagpdf-space-code} {2024-08-02} {0.99d}
{part of tagpdf - code related to real space chars}
%</header>
% \end{macrocode}
% \section{Code for interword spaces}
-% The code is engine/backend dependant. Basically only pdftex and luatex
+% The code is engine/backend dependent. Basically only pdftex and luatex
% support real space chars. Most of the code for luatex which uses attributes
% is in the lua code, here are only the keys.
%
diff --git a/macros/latex/contrib/tagpdf/tagpdf-struct.dtx b/macros/latex/contrib/tagpdf/tagpdf-struct.dtx
index 04ffa900cc..6da5e48b18 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-struct.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-struct.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Version 0.99b, released 2024-04-12}
+% \date{Version 0.99d, released 2024-08-02}
% \maketitle
% \begin{documentation}
% \section{Public Commands}
@@ -95,7 +95,7 @@
% This inserts an annotation in the structure. \meta{object reference}
% is there reference to the annotation. \meta{struct parent number}
% should be the same number as had been inserted with \cs{tag_struct_parent_int:}
-% as |StructParent| value to the dictionary of the annotion.
+% as |StructParent| value to the dictionary of the annotation.
% The command will increase the value of the counter
% used by \cs{tag_struct_parent_int:}.
% \end{function}
@@ -147,7 +147,7 @@
% needed as you can only use structures already defined), and by the
% |ref| key (which can refer to future structures).
% Internally the label name will start with \texttt{tagpdfstruct-} and it stores
-% the two attributs |tagstruct| (the structure number) and |tagstructobj| (the
+% the two attributes |tagstruct| (the structure number) and |tagstructobj| (the
% object reference).
% \end{function}
% \begin{function}{parent (struct-key)}
@@ -285,7 +285,7 @@
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-struct-code} {2024-04-12} {0.99b}
+\ProvidesExplPackage {tagpdf-struct-code} {2024-08-02} {0.99d}
{part of tagpdf - code related to storing structure}
%</header>
% \end{macrocode}
@@ -323,7 +323,7 @@
% in generic mode it can happen after
% a page break that we have to inject into a structure
% sequence an additional mc after. We will store this additional
-% info in a property. The key is the absolut mc num, the value the pdf directory.
+% info in a property. The key is the absolute mc num, the value the pdf directory.
% \begin{macrocode}
\@@_prop_new:N \g_@@_struct_cont_mc_prop
% \end{macrocode}
@@ -419,7 +419,7 @@
T, %title, value in () or <>
Lang, %language
Alt, % value in () or <>
- E, % abreviation
+ E, % abbreviation
ActualText,
AF, %pdf 2.0, array of dict, associated files
NS, %pdf 2.0, dict, namespace
@@ -523,7 +523,7 @@
{ g_@@_struct_#1_prop }{#2}{#3}
%<debug>\prop_gput:cnn { g_@@_struct_debug_#1_prop } {#2} {#3}
}
-\cs_generate_variant:Nn \@@_struct_prop_gput:nnn {nne,nee,nno}
+\cs_generate_variant:Nn \@@_struct_prop_gput:nnn {onn,nne,nee,nno}
%</package|debug>
% \end{macrocode}
% \end{macro}
@@ -902,7 +902,7 @@
% Basically it does what |\pdfdict_use:n| does.
% This is used a lot so should be rather fast.
% \begin{macrocode}
-\cs_new_protected:Npn \@@_struct_get_dict_content:nN #1 #2 %#1: stucture num
+\cs_new_protected:Npn \@@_struct_get_dict_content:nN #1 #2 %#1: structure num
{
\tl_clear:N #2
\prop_map_inline:cn { g_@@_struct_#1_prop }
@@ -1270,7 +1270,7 @@
% extension.
% AF/AFref is an array and can be used more than once, so we store it in a tl.
% which is expanded.
-% AFinline currently uses the fix extention txt.
+% AFinline currently uses the fix extension txt.
% texsource is a special variant which creates a tex-file, it expects a
% tl-var as value (e.g. from math grabbing)
%
@@ -1579,6 +1579,7 @@
{ g_@@_struct_ \l_@@_struct_stack_parent_tmpa_tl _prop}
{S}
\l_@@_tmpa_tl
+ \quark_if_no_value:NT\l_@@_tmpa_tl{\tl_set:Nn \l_@@_tmpa_tl{UNKNOWN}}
\msg_warning:nneee
{ tag }
{role-parent-child}
@@ -1936,7 +1937,7 @@
% \section{Attributes and attribute classes}
% \begin{macrocode}
%<*header>
-\ProvidesExplPackage {tagpdf-attr-code} {2024-04-12} {0.99b}
+\ProvidesExplPackage {tagpdf-attr-code} {2024-08-02} {0.99d}
{part of tagpdf - code related to attributes and attribute classes}
%</header>
% \end{macrocode}
@@ -1962,7 +1963,7 @@
\tl_new:N \l_@@_attr_value_tl
\prop_new:N \g_@@_attr_objref_prop %will contain obj num of used attributes
% \end{macrocode}
-% This seq is currently kept for compability with the table code.
+% This seq is currently kept for compatibility with the table code.
% \begin{macrocode}
\seq_new:N\g_@@_attr_class_used_seq
% \end{macrocode}
diff --git a/macros/latex/contrib/tagpdf/tagpdf-tree.dtx b/macros/latex/contrib/tagpdf/tagpdf-tree.dtx
index 6319250523..f7ae6de996 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-tree.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-tree.dtx
@@ -47,13 +47,13 @@
% }^^A
% }
%
-% \date{Version 0.99b, released 2024-04-12}
+% \date{Version 0.99d, released 2024-08-02}
% \maketitle
% \begin{implementation}
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-tree-code} {2024-04-12} {0.99b}
+\ProvidesExplPackage {tagpdf-tree-code} {2024-08-02} {0.99d}
{part of tagpdf - code related to writing trees and dictionaries to the pdf}
%</header>
% \end{macrocode}
@@ -275,6 +275,10 @@
{
\l_@@_tmpa_tl
}
+% \end{macrocode}
+% Better put S back, see https://github.com/latex3/tagging-project/issues/86
+% \begin{macrocode}
+ \prop_gput:cnn { g_@@_struct_1_prop } {S}{ /StructTreeRoot }
}
% \end{macrocode}
% \end{macro}
@@ -506,7 +510,7 @@
{
\tl_clear:N \l_@@_tmpa_tl
% \end{macrocode}
-% We process the older sec for compability with the table code.
+% We process the older sec for compatibility with the table code.
% TODO: check if still needed
% \begin{macrocode}
\seq_map_inline:Nn \g_@@_attr_class_used_seq
diff --git a/macros/latex/contrib/tagpdf/tagpdf-user.dtx b/macros/latex/contrib/tagpdf/tagpdf-user.dtx
index 099cd95299..a4014b62e3 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-user.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-user.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Version 0.99b, released 2024-04-12}
+% \date{Version 0.99d, released 2024-08-02}
% \maketitle
% \begin{documentation}
% \section{Setup commands}
@@ -309,7 +309,7 @@
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-user} {2024-04-12} {0.99b}
+\ProvidesExplPackage {tagpdf-user} {2024-08-02} {0.99d}
{tagpdf - user commands}
%</header>
% \end{macrocode}
@@ -848,7 +848,7 @@
}
% \end{macrocode}
% \end{macro}
-% TEMPORARLY FIX (2023-11-17). Until latex-lab is updated we must adapt a sec command:
+% TEMPORARY FIX (2023-11-17). Until latex-lab is updated we must adapt a sec command:
% \begin{macrocode}
\AddToHook{package/latex-lab-testphase-sec/after}
{
diff --git a/macros/latex/contrib/tagpdf/tagpdf.dtx b/macros/latex/contrib/tagpdf/tagpdf.dtx
index 064490c2c4..b1d008a6e6 100644
--- a/macros/latex/contrib/tagpdf/tagpdf.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf.dtx
@@ -72,6 +72,12 @@
% marked up as artifact. The initial value is true.
% \end{function}
%
+% \begin{function}{activate/softhyphen (setup-key)}
+% This key allows to activates automatic handling of hyphens inserted
+% by hyphenation. It only is used in luamode and replaces hyphens
+% by U+00AD if the font supports this.
+% \end{function}
+%
% \begin{function}{page/tabsorder (setup-key), tabsorder (deprecated)}
% This sets the tabsorder on a page. The values are |row|, |column|, |structure| (default)
% or |none|. Currently this is set more or less globally. More finer control can be
@@ -87,7 +93,7 @@
% \begin{macrocode}
%<@@=tag>
%<*package>
-\ProvidesExplPackage {tagpdf} {2024-04-12} {0.99b}
+\ProvidesExplPackage {tagpdf} {2024-08-02} {0.99d}
{ A package to experiment with pdf tagging }
\bool_if:nF
@@ -113,7 +119,7 @@
% \end{macrocode}
%<*debug>
% \begin{macrocode}
-\ProvidesExplPackage {tagpdf-debug} {2024-04-12} {0.99b}
+\ProvidesExplPackage {tagpdf-debug} {2024-08-02} {0.99d}
{ debug code for tagpdf }
\@ifpackageloaded{tagpdf}{}{\PackageWarning{tagpdf-debug}{tagpdf~not~loaded,~quitting}\endinput}
% \end{macrocode}
@@ -136,7 +142,7 @@
% we define a base package with dummy functions
% \begin{macrocode}
%<*base>
-\ProvidesExplPackage {tagpdf-base} {2024-04-12} {0.99b}
+\ProvidesExplPackage {tagpdf-base} {2024-08-02} {0.99d}
{part of tagpdf - provide base, no-op versions of the user commands }
%</base>
% \end{macrocode}
@@ -171,15 +177,16 @@
% possible, so we define a command which a special in the relevant backends:
% \begin{macrocode}
%<*base>
+\cs_new_protected:Npn \@@_whatsits: {}
\AddToHook{begindocument}
{
\str_case:VnF \c_sys_backend_str
{
- { luatex } { \cs_new_protected:Npn \@@_whatsits: {} }
- { dvisvgm } { \cs_new_protected:Npn \@@_whatsits: {} }
+ { luatex } { \cs_set_protected:Npn \@@_whatsits: {} }
+ { dvisvgm } { \cs_set_protected:Npn \@@_whatsits: {} }
}
{
- \cs_new_protected:Npn \@@_whatsits: {\tex_special:D {} }
+ \cs_set_protected:Npn \@@_whatsits: {\tex_special:D {} }
}
}
%</base>
@@ -353,6 +360,13 @@
% \end{macrocode}
% \end{variable}
%
+% \begin{variable}{\g_@@_softhyphen_bool}
+% This boolean controls if the code should try to automatically
+% handle hyphens from hyphenation. It is currently only used in luamode.
+% \begin{macrocode}
+\bool_new:N \g_@@_softhyphen_bool
+% \end{macrocode}
+% \end{variable}
% \section{Variants of l3 commands}
% \begin{macrocode}
\prg_generate_conditional_variant:Nnn \pdf_object_if_exist:n {e}{T,F,TF}
@@ -647,6 +661,13 @@
tagunmarked .bool_gset:N = \g_@@_tagunmarked_bool,
% \end{macrocode}
% \end{macro}
+% \begin{macro}{activate/softhyphen (setup-key)}
+% This key activates (in luamode) the handling of soft hyphens.
+% \begin{macrocode}
+ activate/softhyphen .bool_gset:N = \g_@@_softhyphen_bool,
+ activate/softhyphen .initial:n = true,
+% \end{macrocode}
+% \end{macro}
% \begin{macro}{page/tabsorder (setup-key),tabsorder (deprecated)}
% This sets the tabsorder on a page. The values are |row|, |column|, |structure| (default)
% or |none|. Currently this is set more or less globally. More finer control can be
diff --git a/macros/latex/contrib/tagpdf/tagpdf.pdf b/macros/latex/contrib/tagpdf/tagpdf.pdf
index a04ba6fc3c..f7c6ea02a3 100644
--- a/macros/latex/contrib/tagpdf/tagpdf.pdf
+++ b/macros/latex/contrib/tagpdf/tagpdf.pdf
Binary files differ
diff --git a/macros/latex/contrib/tagpdf/tagpdf.tex b/macros/latex/contrib/tagpdf/tagpdf.tex
index e023ba6d02..10d36d09a0 100644
--- a/macros/latex/contrib/tagpdf/tagpdf.tex
+++ b/macros/latex/contrib/tagpdf/tagpdf.tex
@@ -16,8 +16,8 @@
}
\DebugBlocksOff
\makeatletter
-\def\UlrikeFischer@package@version{0.99b}
-\def\UlrikeFischer@package@date{2024-04-12}
+\def\UlrikeFischer@package@version{0.99d}
+\def\UlrikeFischer@package@date{2024-08-02}
\makeatother
\documentclass[bibliography=totoc,a4paper]{article}
@@ -90,8 +90,7 @@
\maketitle
-\tagstructbegin{tag=Div}
-\begin{tcolorbox}[colframe=red,before upper=\tagpdfparaOn]
+\begin{tcolorbox}[colframe=red]
This package is not meant for direct use in (normal) documents. It started in 2018 as
a support tool to \emph{research} tagging. It is now the base of the code developed
@@ -123,7 +122,6 @@ Issues, comments, suggestions can be added as issues to these two github tracker
\leavevmode\llap{or\qquad\qquad} \url{https://github.com/latex3/tagpdf}
\end{tcolorbox}
-\tagstructend
\tagtool{sec-add-grouping=false}
@@ -340,24 +338,27 @@ improvements and new features in the \LaTeX\ kernel, the latex-lab bundle and
the \PDF\ management code and is now much better. Only a few
structures---mostly some from currently unsupported packages--- still need
manual tagging. But sadly the output of the validators don't quite reflect
-the improvements. The documentation uses now \PDF~2.0 and PAC~2024 can't handle
-this, it claims that the file is damaged. The Adobe validator has a bug and
+the improvements. The documentation uses now \PDF~2.0 and while the newest
+PAC~2024 can at least open the file it can not validate properly the file. For example
+it complains about the tabular header cells as it doesn't follow attribute classes.
+The Adobe validator has a bug and
doesn't like the (valid) use of the \texttt{Lbl} tag for the section numbers
(see figure~\ref{fig:adobe}).
-But even if the documentation passed the tests of the validators: as
+But even if the documentation would pass all the tests of the validators: as
mentioned above passing a formal test doesn't mean that the content is really
good and usable. The user commands used for the tagging and also some of the
patches used are still rather crude. So there is lot space for improvement.
-\begin{tcolorbox}[before upper=\tagpdfparaOn]
+\begin{tcolorbox}[]
Be aware that to create the tagged version a current lualatex-dev and a
current version of the pdfmanagment-testphase package is needed.
\end{tcolorbox}
-\includegraphics[alt=PAC 3 report]{pac3}
+\includegraphics[alt=PAC 2024 complains about PDF version]{pac2024-version}
+\includegraphics[alt=PAC 2024 complains about table header cells]{pac2024-report}
\begin{figure}
@@ -506,6 +507,10 @@ The key-val list understands at least the following keys. More keys are defined
least \PrintKeyName{activate/mc} has been used.
The old name of the key |interwordspace| is still supported but deprecated.
+\item[\PrintKeyName{activate/softhyphen}] Boolean. luamode only.
+ The key activates/deactivates the replacing of hard hyphens from hyphenation
+ by soft hyphens. By default this is activated.
+
\item[\PrintKeyName{role/new-tag}] Allows to define new tag names, see
section \ref{sec:new-tag} for a description.
@@ -719,15 +724,12 @@ To tag a \PDF{} three tasks must be carried out:
\begin{figure}[t!]
-\begin{tcolorbox}[before upper=\tagpdfparaOn]
+\begin{tcolorbox}[]
\minisec{Page stream with marked content}
-\tagpdfparaOff
-
-\tagstructbegin{tag=Figure,alt={Illustration of page stream with marked content},attribute=bbox}%
-\tagmcbegin{tag=Figure}%
-\begin{tikzpicture}[baseline=(a.north),node distance=2pt,remember picture]
+\begin{tikzpicture}[baseline=(a.north),node distance=2pt,remember picture,
+alt={Illustration of page stream with marked content}]
\node(start){\ldots~\ldots~\ldots};
\node[draw,base right = of start](a) {mc-chunk 1};
\node[draw,base right = of a](b) {mc-chunk 2};
@@ -735,20 +737,13 @@ To tag a \PDF{} three tasks must be carried out:
\node[draw,base right = of c](d) {mc-chunk 3};
\node[base right = of d] {\ldots~\ldots};
\end{tikzpicture}
-\tagmcend\tagstructend
-
-\tagpdfparaOn
\minisec{Structure}
-\tagpdfparaOff
\newlength\ydistance\setlength\ydistance{-0.8cm}
-\tagstructbegin{tag=Figure,alt={Illustration of structure},attribute=bbox}%
-\tagmcbegin{tag=Figure}%
-\begin{tikzpicture}[remember picture,baseline=(root.north)]
-
+\begin{tikzpicture}[remember picture,baseline=(root.north),alt={Illustration of structure}]
\node[draw,anchor=base west] (root) at (0,0) {Sect (start section)};
\node[draw,anchor=base west] at (0.3,\ydistance) {H (header section)};
\node[draw,anchor=base west](aref) at (0.6,2\ydistance){mc-chunk 1};
@@ -760,17 +755,12 @@ To tag a \PDF{} three tasks must be carried out:
\node[draw,anchor=base west] at (0.3,8\ydistance){/P (end paragraph)};
\node[draw,anchor=base west] at (0,9\ydistance){/Sect (end section)};
\end{tikzpicture}
-
\begin{tikzpicture}[remember picture, overlay]
\draw[->,red](aref)-|(a);
\draw[->,red](bref)-|(b);
\draw[->,red](cref)-|(c);
\draw[->,red](dref)-|(d);
-
\end{tikzpicture}
-\tagmcend\tagstructend
-
-\tagpdfparaOn
\end{tcolorbox}
@@ -1110,8 +1100,8 @@ the command, as the effect of the begin command ends with a new
\begin{docCommands}
{
- {doc name=tagmcuse},
- {doc name=tag_mc_use:n}
+ {doc name=tagmcuse,doc parameter=\marg{label}},
+ {doc name=tag_mc_use:n,doc parameter=\marg{label}}
}
\end{docCommands}
@@ -1271,7 +1261,7 @@ add the needed code.
command that saves the text internally in a box): If the box is used
directly, there is probably no problem. If the use is later, stash
the marked content and add the needed \verb+\tagmcuse+ directly
- before oder after the box when you use it.
+ before or after the box when you use it.
\item Don't use a saved box with markers twice.
@@ -1285,13 +1275,8 @@ add the needed code.
\begin{figure}
-\tagpdfparaOff
-\tagstructbegin{tag=Figure,alt={Illustration of link annotation structure},attribute=bbox}\tagmcbegin{tag=Figure}
-\tagstop
\input{link-figure-input}
-\tagstart
-\tagmcend\tagstructend
\caption{Structure needed for a link annotation}\label{fig:linkannot}
@@ -2663,7 +2648,8 @@ already mentioned there are more requirements:
is normally not a problem. With pdflatex it could need additional
\verb+\pdfglyphtounicode+ commands.
- \item Hard and soft hyphen must be distinct.
+ \item Hard and soft hyphen must be distinct. In luamode this is now handled through
+ the \texttt{activate/softhyphen} key. For pdftex no solution is known.
\item Spaces between words should be space glyphs and not only a
horizontal movement. See section~\ref{sec:spacechars}.
@@ -2925,7 +2911,7 @@ command.
\texttt{root-AF}) has been added. This allow e.g. to add a css-file
which is be used if the \PDF\ is converted to html.
-\item First steps have been done to adapt the package to planed changes
+\item First steps have been done to adapt the package to planned changes
in \LaTeX{}: The command \cs{DocumentMetadata} will be added to the
format and will take over the role of \cs{DeclareDocumentMetadata}
from \pkg{pdfmanagement-testphase} and additionally will also load
@@ -3063,10 +3049,7 @@ examples and remarks easier to understand.
\item[postfix notation] \PDF{} uses in various places postfix
notation. This means that the operator is behind its arguments:
-\tagpdfparaOff
-
-\tagstructbegin{tag=Figure,alt={Illustration of postfix notation},attribute=bbox}\tagmcbegin{tag=Figure}
-\begin{tikzpicture}[baseline=(c.base)]
+\begin{tikzpicture}[baseline=(c.base),alt={Illustration of postfix notation}]
\node[arg](a1) {18};
\node[arg,right=of a1.east](a2) {0};
\node[operator,right= of a2.east](c) {obj};
@@ -3074,7 +3057,7 @@ examples and remarks easier to understand.
\draw[->] (c.south) --++(0,-2mm) -| (a2);
\end{tikzpicture}
-\begin{tikzpicture}[baseline=(c.base)]
+\begin{tikzpicture}[baseline=(c.base),alt={Illustration of postfix notation}]
\node[arg](a1) {18};
\node[arg,right=of a1.east](a2) {0};
\node[operator,right= of a2.east](c) {R};
@@ -3083,7 +3066,7 @@ examples and remarks easier to understand.
\end{tikzpicture} (a reference (operator R) to an object
-\begin{tikzpicture}[baseline=(c.base)]
+\begin{tikzpicture}[baseline=(c.base),alt={Illustration of postfix notation}]
\node[arg](a1) {1};
\node[arg,right = of a1.east](a2) {0};
\node[arg,right = of a2.east](a3) {0};
@@ -3099,19 +3082,15 @@ examples and remarks easier to understand.
\draw[->] (c.south) --++(0,-2mm) -|(a1);
\end{tikzpicture}
-\begin{tikzpicture}[baseline=(c.base)]
+\begin{tikzpicture}[baseline=(c.base),alt={Illustration of postfix notation}]
\node[arg](a1) {/P};
\node[arg,right = of a1.east](a2) {<</MCID 0>>};
\node[operator,right = of a2.east](c) {BDC};
\draw[->] (c.south) --++(0,-2mm) -| (a1);
\draw[->] (c.south) --++(0,-2mm) -| (a2);
\end{tikzpicture}
-\tagmcend\tagstructend
-
-\tagpdfparaOn
-
\item[Names] \PDF{} knows a sort of variable called a
\enquote{name}. Names start with a slash and may include any regular
characters, but not delimiter or white-space characters. Uppercase
@@ -3154,19 +3133,13 @@ examples and remarks easier to understand.
\mbox{\texttt{[0 15 0 R (hello) <</Type /X>> [1 2 3]]}}
-\tagpdfparaOff
-
- \tagstructbegin{tag=Figure,alt={Illustration of array},attribute=bbox}\tagmcbegin{tag=Figure}
- \begin{tikzpicture}[baseline=(c.base)]
+ \begin{tikzpicture}[baseline=(c.base),alt={Illustration of array}]
\node[arg](a1) {0};
\node[arg,right = of a1.east](a2) {15 0 R};
\node[arg,right = of a2.east](a3) {(hello)};
\node[arg,right = of a3.east](a4) {<</Type /X>>};
\node[arg,right = of a4.east](a5) {[1 2 3]};
\end{tikzpicture}
-\tagmcend\tagstructend
-
-\tagpdfparaOn
\item[Dictionaries] Dictionaries are enclosed by double angle
diff --git a/macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty b/macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty
index 38a5f0196d..6ae5840b11 100644
--- a/macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty
+++ b/macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty
@@ -1,5 +1,5 @@
%\RequirePackage[enable-debug]{expl3}[2018/06/14]
-\ProvidesExplPackage {tagpdfdocu-patches} {2024-04-12} {0.99b}
+\ProvidesExplPackage {tagpdfdocu-patches} {2024-08-02} {0.99d}
{patches/commands for the tagpdf documentation}
\RequirePackage{etoolbox,xpatch}
@@ -33,7 +33,7 @@
\else
\addpenalty\@secpenalty\addvspace{1.5ex}%
\fi
- {\tagpdfsetup{paratag=H10}\parindent \z@
+ {\tagpdfsetup{para/maintag=P,para/tag=Strong}\parindent \z@
\setlength{\parfillskip}{\z@ plus 1fil}%
\raggedright\normalfont\bfseries\nobreak
\nobreak\interlinepenalty \@M #1\par\nobreak%
@@ -82,17 +82,13 @@
% }
\ExplSyntaxOff
-% ======== tikzpicture ==========
-% TODO this needs some investigation: it messes up the stack if one add paraOff
-
-\AddToHook{env/tikzpicture/begin}{}
%======== tcolorbox ========
% We switch of paratagging at the begin and reenable it locally in before upper.
% the before upper setting is dangerous as it can be overwritten by
% users. So a more stable hook is needed.
% we force also a \par and add a div structure, to avoid clashes with the block
-% tagging code. This needs revisting!
+% tagging code. This needs revisiting!
\AddToHook{env/tcolorbox/before}{\par\tagstructbegin{tag=Div}}
\AddToHook{env/tcolorbox/begin}{\tagpdfparaOff \tcbset{before upper=\tagpdfparaOn}}
@@ -138,22 +134,6 @@
% ======= footnote ========
% done in testphase code
-% ======= bibliography ========
-% biblatex. Creates some empty mc-chunks.
-% no internal patches, but redefining begentry/finentry is not safe.
-% better hook is needed.
-
-
-\def\blx@endbibliography{%
- \csuse{blx@endenv@\blx@theenv}%
- \blx@noitem
- \blx@locallabelwidth@finish
- \endgroup
- \blx@bibnote\blx@thepostnote
-% \endgroup
- \expandafter\endgroup\if@endpe\@doendpe\fi
-}
-
% ====== hyperref ========
% this should probably go into tagpdf, but it is related to
% problem of pdf strings and context ....
@@ -167,30 +147,147 @@
\let\tagstructend\relax
}}{}
-%====== picture =======
+%====== tikz picture =======
+% first draft to tag. The main problem is to handle paragraphs. One
+\ExplSyntaxOn
+\cs_new_protected:Npn\__tag_tikz_savepos:n #1
+ {
+ \tex_savepos:D
+ \tikz@resetexpandcount%
+ \tikz@scan@one@point\pgfutil@firstofone(current~bounding~box.north~east)\relax
+ \pgf@pos@transform{\pgf@x}{\pgf@y}%
+ \property_record:nn{#1}{xpos,ypos,abspage}
+ \property_record:nn{#1-tr}{pgfx,pgfy}
+ \tikz@scan@one@point\pgfutil@firstofone(current~bounding~box.south~west)\relax
+ \pgf@pos@transform{\pgf@x}{\pgf@y}%
+ \property_record:nn{#1-bl}{pgfx,pgfy}
+ \tex_savepos:D
+ }
+\cs_generate_variant:Nn \__tag_tikz_savepos:n {e}
+
+\NewProperty{pgfx}{now}{0}
+ {
+ \dim_compare:nNnTF {\dim_abs:n {\pgf@x}} > {15999pt}
+ { 0 }
+ { \dim_to_decimal_in_sp:n{\pgf@x} }
+ }
+\NewProperty{pgfy}{now}{0}
+ {
+ \dim_compare:nNnTF {\dim_abs:n {\pgf@y}} > {15999pt}
+ { 0 }
+ { \dim_to_decimal_in_sp:n{\pgf@y} }
+ }
+
+\cs_new_protected:Npn \__tag_tikz_getbbox:
+ {
+ \int_gincr:N\g__tag_graphic_int
+ \tl_set:Ne\l__tag_graphic_currentlabel_tl {__tag_graphic_\int_use:N \g__tag_graphic_int}
+ \tl_gset:Ne\g__tag_graphic_lx_tl
+ {
+ \dim_to_decimal_in_bp:n
+ { \property_ref:een {\l__tag_graphic_currentlabel_tl}{xpos}{0}sp
+ + \property_ref:een {\l__tag_graphic_currentlabel_tl-bl}{pgfx}{0}sp
+ }
+ }
+ \tl_gset:Ne\g__tag_graphic_ly_tl
+ {
+ \dim_to_decimal_in_bp:n
+ { \property_ref:een {\l__tag_graphic_currentlabel_tl}{ypos}{0}sp
+ + \property_ref:een {\l__tag_graphic_currentlabel_tl-bl}{pgfy}{0}sp
+ }
+ }
+ \tl_gset:Ne\g__tag_graphic_ux_tl
+ {
+ \dim_to_decimal_in_bp:n
+ { \property_ref:een {\l__tag_graphic_currentlabel_tl}{xpos}{0}sp
+ + \property_ref:een {\l__tag_graphic_currentlabel_tl-tr}{pgfx}{0}sp
+ }
+ }
+ \tl_gset:Ne\g__tag_graphic_uy_tl
+ {
+ \dim_to_decimal_in_bp:n
+ { \property_ref:een {\l__tag_graphic_currentlabel_tl}{ypos}{0}sp
+ + \property_ref:een {\l__tag_graphic_currentlabel_tl-tr}{pgfy}{0}sp
+ }
+ }
+ }
-% PAC3 complained that the BBox is missing, so we are cheating for now
-% and add a fix size.
-\tagpdfsetup
- {
- newattribute =
- {bbox}{/O /Layout /BBox [0 0 100 100]}
+\cs_new_protected:Npn \__tag_graphic_tikz_begin_picture:
+ {
+ \tag_mc_end_push:
+ \bool_if:NTF \l__tag_graphic_artifact_bool
+ { \tagmcbegin{artifact} }
+ {
+ \__tag_tikz_getbbox:
+ \tagstructbegin{tag=Figure,alt=\l__tag_graphic_alt_tl}\tagmcbegin{}
+ \__tag_prop_gput:cne
+ { g__tag_struct_\int_eval:n {\c@g__tag_struct_abs_int}_prop }
+ { A }
+ {
+ <<
+ /O /Layout /BBox~
+ [
+ \g__tag_graphic_lx_tl\c_space_tl
+ \g__tag_graphic_ly_tl\c_space_tl
+ \g__tag_graphic_ux_tl\c_space_tl
+ \g__tag_graphic_uy_tl
+ ]
+ >>
+ }
+ \bool_if:NT\l__tag_graphic_debug_bool
+ {
+ \__tag_graphic_show_bbox:VVVVne
+ \g__tag_graphic_lx_tl
+ \g__tag_graphic_ly_tl
+ \g__tag_graphic_ux_tl
+ \g__tag_graphic_uy_tl
+ {red}
+ {\int_use:N\g__tag_graphic_int}
+ }
+ }
+ \SuspendTagging{tikz}
}
-% ======= maketitle
-
-\renewcommand\maketitle{%
- \tagstructbegin{tag=Title}
- \begin{center}%
- \let\thanks\footnote
- \makeatletter
- \huge \@title \par
- \vskip .5em
- \@author \par
- \vskip 1em%
- \@date \par
- \end{center}%
- \tagstructend}
+\cs_new_protected:Npn \__tag_graphic_tikz_end_picture:
+ {
+ \ResumeTagging{tikz}\tagmcend
+ \bool_if:NF \l__tag_graphic_artifact_bool
+ {
+ \tagstructend
+ \__tag_tikz_savepos:e {__tag_graphic_\int_use:N \g__tag_graphic_int}
+ }
+ \tag_mc_begin_pop:n{}
+ }
+
+\tikzset
+ {
+ every~picture/.style=
+ {
+ artifact,
+ execute~at~begin~picture=\__tag_graphic_tikz_begin_picture:,
+ execute~at~end~picture=\__tag_graphic_tikz_end_picture:
+ }
+ }
+\AddToHook{env/tikzpicture/before}{\leavevmode}
+
+\tikzset
+ {
+ alt/.code=
+ {
+ \bool_set_false:N \l__tag_graphic_artifact_bool
+ \tl_set:Nn \l__tag_graphic_alt_tl{#1}
+ }
+ }
+\tikzset
+ {
+ artifact/.code=
+ \bool_set_true:N \l__tag_graphic_artifact_bool
+ }
+
+\ExplSyntaxOff
+
+
+
\endinput
diff --git a/macros/latex/contrib/tagpdf/tagpdfsetup-keys.tex b/macros/latex/contrib/tagpdf/tagpdfsetup-keys.tex
index 2484a42020..a02411c31f 100644
--- a/macros/latex/contrib/tagpdf/tagpdfsetup-keys.tex
+++ b/macros/latex/contrib/tagpdf/tagpdfsetup-keys.tex
@@ -1,5 +1,5 @@
%% Overview over tagpdfsetup keys
-%% The keys are split in a number of key pathes.
+%% The keys are split in a number of key paths.
\tagpdfsetup{table/header-rows=1}
\begin{tabular}{lllll}
\toprule
@@ -12,7 +12,8 @@ new key name & old key name & value &type & defined in \\\midrul
activate & activate & boolean &meta & tagpdf \\
activate/all & activate-all & boolean &meta & tagpdf\\
-activate/mc & activate-mc & boolean &bool & tagpdf\\
+activate/mc & activate-mc & boolean &bool & tagpdf\\
+activate/softhyphen & --- & boolean &bool & tagpdf \\
activate/spaces & interwordspace & boolean &code & tagpdf-space\\
activate/struct & activate-struct & boolean &bool & tagpdf\\
activate/struct-dest & no-struct-dest&boolean &bool & tagpdf\\
diff --git a/macros/latex/contrib/tblr-extras/README.md b/macros/latex/contrib/tblr-extras/README.md
index 373fedb6a1..5b74c5b48f 100644
--- a/macros/latex/contrib/tblr-extras/README.md
+++ b/macros/latex/contrib/tblr-extras/README.md
@@ -14,5 +14,5 @@ Use caption package to typeset tabularray tall and long tabulars captions.
Enable this library with `\UseTblrLibrary{caption}`
## Babel Library
Translate `contfoot` and `conthead` to current `babel`/`polyglossia` language.
-Currently only supports ngerman, french, spanish, russian and ukrainian translations.
+Languages: spanish, catalan, galician, portuguese, italian, french, german, dutch, danish, esperanto, afrikaans, romanian, ukrainian and russian.
Enable this library with `\UseTblrLibrary{babel}`
diff --git a/macros/latex/contrib/tblr-extras/tblr-extras-doc-EN.pdf b/macros/latex/contrib/tblr-extras/tblr-extras-doc-EN.pdf
index 9262427895..3c02dd31ef 100644
--- a/macros/latex/contrib/tblr-extras/tblr-extras-doc-EN.pdf
+++ b/macros/latex/contrib/tblr-extras/tblr-extras-doc-EN.pdf
Binary files differ
diff --git a/macros/latex/contrib/tblr-extras/tblr-extras-doc-EN.tex b/macros/latex/contrib/tblr-extras/tblr-extras-doc-EN.tex
index 308c0e232a..833984fc8d 100644
--- a/macros/latex/contrib/tblr-extras/tblr-extras-doc-EN.tex
+++ b/macros/latex/contrib/tblr-extras/tblr-extras-doc-EN.tex
@@ -1,6 +1,6 @@
% -----------------------------------------------------------------------
%%% tblr-extras-doc: Documentation for tblr-extras package.
-%%% Version : 1.1 - 2024-05-13
+%%% Version : 1.3 - 2024-06-25
%%% Copyright : 2024 (c) Manuel E. Merino <manuel.merino.pe@gmail.com>
%%% License : The LaTeX Project Public License 1.3c
% -----------------------------------------------------------------------
@@ -17,7 +17,7 @@
%
% The Current Maintainer of this work is Manuel E. Merino
% -----------------------------------------------------------------------
-\documentclass[a4paper,12pt]{article}
+\documentclass[a4paper,11pt]{article}
\usepackage{fontspec}
\setmainfont{montserrat}
\setsansfont{montserrat}
@@ -31,7 +31,7 @@
\usepackage{parskip}
\usepackage[hidelinks]{hyperref}
-\newcommand{\Version}{1.1}
+\newcommand{\Version}{1.3}
\NewDocumentCommand{\tblrextras}{}{\textbf{\color{udep}tblr-extras}}
@@ -40,7 +40,7 @@
\centering
\LARGE\textbf{Package \color{udep}tblr-extras}\par
\large Manuel E. Merino\par
- \texttt{v\Version{} - 13/06/2024}\par
+ \texttt{v\Version{} - 25/06/2024}\par
\normalsize Extra libraries for tabularray package.\par
\endgroup
\tableofcontents
@@ -55,32 +55,60 @@
To install the \tblrextras{} package download and unzip the \texttt{tblr-extras.sty} file and place it in a folder accessible to \LaTeX{} (this can be the current working folder or a subfolder in the TEXMF directory).
- To use the \tblrextras{} package add the following command to the preamble of your document: \verb|\usepackage{tblr-extras}|
+ To use the \tblrextras{} package, add the following command to the preamble of your document: \verb|\usepackage{tblr-extras}|
\section{Available libraries}
\subsection{caption library}
- The \tblrextras{} package changes the way \texttt{tabularray} typesets the captions of \texttt{talltblr} and \texttt{longtblr} environments, using the settings defined by the \texttt{caption} package.
+ This \tblrextras{} library changes the way \texttt{tabularray} typesets the captions of \texttt{talltblr} and \texttt{longtblr} environments, using the settings defined by the \texttt{caption} package.
To enable this library, use \verb*|\UseTblrLibrary{caption}| after loading \tblrextras{} and \texttt{tabularray} packages.
- \subsection{babel library}
-
- The \tblrextras{} package redefines the \texttt{conthead-text} and \textbf{contfoot-text} for the \texttt{longtblr} environment, using the current babel language.
+ Since version 1.2, there is partial support for typesetting captions below tables. To enable this feature use the command \verb|\TblrCaptionBelow| to enable this feature. If you want to revert to captions above the table, use the command \verb|\TblrCaptionAbove|. Be aware that \texttt{longtblr} environments will position the caption hyperlink anchor in the lastfoot and the table will be listed in the List of Tables as if it was located in the last page occupied by the \texttt{longtblr}. environment.
- Currently only spanish, ngerman, russian, ukrainian and french variants are supported.
+ \subsection{babel library}
+ Load this library using \verb|\UseTblrLibrary{babel}|
+
+ The \tblrextras{} package redefines the \texttt{conthead-text} and \texttt{contfoot-text} for the \texttt{longtblr} environment, using the current babel language if this library is enabled.
+
+ Currently supported languages are:
+
+ \begin{itemize}
+ \item spanish
+ \item french
+ \item italian
+ \item portuguese
+ \item german (ngerman)
+ \item esperanto (only unicode engines)
+ \item romanian
+ \item dutch
+ \item danish (only unicode engines)
+ \item russian (pdflatex and unicode engines)
+ \item ukrainian (pdflatex and unicode engines)
+ \item galician
+ \item catalan
+ \item afrikaans
+ \end{itemize}
\section{Bug reports and suggestions}
- For bug reports and suggestions, please use GitHub or send an email to manuel.merino.pe@gmail.com.
+ For bug reports, suggestions amd support, please use GitHub or send an email to manuel.merino.pe@gmail.com.
\section{License}
The \tblrextras{} package and all its included files are licensed under the LPPL v1.3c or later.
\section{Changelog}
+ v1.3 - Fixed a bug with longtblr captions (thanks Zarko). Added afrikaans, catalan, danish, dutch, galician, esperanto, romanian translations.
+
+ v1.2 - Added new languages and an extension to caption library
+ \begin{itemize}
+ \item Improved the caption library to support \texttt{label=empty} and \texttt{entry=none}.
+ \item Added partial support for captions below the table using \verb|\TblrCaptionBelow| and to reverse the changes with \verb|\TblrCaptionAbove|.
+ \item Added support for portuguese and italian languages in the babel library.
+ \end{itemize}
- v1.1 - Thanks sgolovan.
+ v1.1 - This version uses code contributions by GitHub user \textbf{sgolovan}. Thanks for your contribution.
\begin{itemize}
\item Improved the babel library using language hooks.
\item Added support for polyglossia package.
diff --git a/macros/latex/contrib/tblr-extras/tblr-extras.sty b/macros/latex/contrib/tblr-extras/tblr-extras.sty
index a6742f4a10..bbc181a00e 100644
--- a/macros/latex/contrib/tblr-extras/tblr-extras.sty
+++ b/macros/latex/contrib/tblr-extras/tblr-extras.sty
@@ -1,6 +1,6 @@
% -----------------------------------------------------------------------
%%% tblr-extras: Extra libraries for tabularray package.
-%%% Version : 1.1 - 2024-05-13
+%%% Version : 1.3 - 2024-06-25
%%% Copyright : 2024 (c) Manuel E. Merino <manuel.merino.pe@gmail.com>
%%% License : The LaTeX Project Public License 1.3c
% -----------------------------------------------------------------------
@@ -18,16 +18,19 @@
% The Current Maintainer of this work is Manuel E. Merino
% -----------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}[2018-04-01]
-\ProvidesPackage{tblr-extras}[2024/05/13 package tblr-extras]
+\ProvidesPackage{tblr-extras}[2024/06/25 package tblr-extras]
\RequirePackage{tabularray}
%% ----------------------------------------------------------------------
%% TblrLibrary caption - Use caption package to typeset tabularray tall
%% and long tabulars captions.
-%% Empty token list checker wrapper
+%% This stuff needs to be ported to expl3 soon.
\ExplSyntaxOn
\prg_generate_conditional_variant:Nnn \tl_if_empty:n { e } { TF }
\let \IfTokenListEmpty = \tl_if_empty:eTF
-\ExplSyntaxOff
+\let \IfBoolFalse = \bool_if:NF
+\let \IfBoolTF = \bool_if:NTF
+\bool_new:N \l__tblrextras_table_title_below_bool
+\bool_set_false:N \l__tblrextras_table_title_below_bool
\NewTblrLibrary{caption}
{%
\RequirePackage{caption}
@@ -35,27 +38,142 @@
\@ifundefined{KOMAClassName}
{}
{\PackageWarningNoLine{tblr-extras}{KOMAScript class detected. Setup caption position using 'captions=option'}}
+ %%% Presetup
+ \NewDocumentCommand{\TblrCaptionBelow}{}{\bool_set_true:N \l__tblrextras_table_title_below_bool}
+ \NewDocumentCommand{\TblrCaptionAbove}{}{\bool_set_false:N \l__tblrextras_table_title_below_bool}
\SetTblrOuter[talltblr,longtblr]{headsep=0pt}
- \DefTblrTemplate{firsthead}{default}{%
- \addtocounter{table}{-1}%
- \IfTokenListEmpty{\InsertTblrText{entry}}{%
- \captionsetup{type=table}
- \caption{\InsertTblrText{caption}}%
- }{%
- \captionsetup{type=table}
- \caption[\InsertTblrText{entry}]{\InsertTblrText{caption}}%
- }%
- }
- \DefTblrTemplate{middlehead,lasthead}{default}{%
- \addtocounter{table}{-1}%
- \captionsetup{type=table}%
- \caption[]{\InsertTblrText{caption} \UseTblrTemplate{conthead-text}{default}}%
- }
+ %%%%%%%%%% TEMPLATES
+ \DefTblrTemplate{firsthead}{default}{
+ \IfBoolTF \l__tblr_table_no_label_bool
+ % True NoLabel
+ { }
+ % False NoLabel
+ {
+ \IfBoolTF \l__tblrextras_table_title_below_bool
+ % Cap Below
+ { }
+ % Cap Above (default)
+ {
+ \addtocounter{table}{-1}
+ \captionsetup{type=table}
+ \IfTokenListEmpty{\InsertTblrText{entry}}{
+ \caption{\InsertTblrText{caption}}
+ }{
+ \caption[\InsertTblrText{entry}]{\InsertTblrText{caption}}
+ }
+ }
+ }
+ } % END FIRSTHEAD
+ \DefTblrTemplate{middlehead}{default}{
+ \IfBoolTF \l__tblr_table_no_label_bool
+ % True NoLabel
+ { \UseTblrTemplate{conthead}{default} \vspace{4pt} }
+ % False NoLabel
+ {
+ \IfBoolTF \l__tblrextras_table_title_below_bool
+ % Cap Below
+ { \UseTblrTemplate{conthead}{default} \vspace{4pt} }
+ % Cap Above (default)
+ {
+ \addtocounter{table}{-1}
+ \captionsetup{type=table}
+ \caption[]{\InsertTblrText{caption}~ \UseTblrTemplate{conthead-text}{default}}
+ }
+ }
+ }% END MIDDLEHEAD
+ \DefTblrTemplate{lasthead}{default}{
+ \IfBoolTF \l__tblr_table_no_label_bool
+ % True NoLabel
+ { \UseTblrTemplate{conthead}{default} \vspace{4pt} }
+ % False NoLabel
+ {
+ \IfBoolTF \l__tblrextras_table_title_below_bool
+ % Cap Below
+ { \UseTblrTemplate{conthead}{default} \vspace{4pt} }
+ % Cap Above (default)
+ {
+ \addtocounter{table}{-1}
+ \captionsetup{type=table}
+ \caption[]{\InsertTblrText{caption}~ \UseTblrTemplate{conthead-text}{default}}
+ }
+ }
+ }% END LASTHEAD
+ \DefTblrTemplate{firstfoot}{default}{
+ \IfBoolTF \l__tblr_table_no_label_bool
+ % True NoLabel
+ { \UseTblrTemplate{contfoot}{default} }
+ % False NoLabel
+ {
+ \IfBoolTF \l__tblrextras_table_title_below_bool
+ % Cap Below
+ {
+ \addtocounter{table}{-1}
+ \captionsetup{type=table}
+ \caption[]{\InsertTblrText{caption}}
+ \UseTblrTemplate{contfoot}{default}
+ }
+ % Cap Above (default)
+ {
+ \UseTblrTemplate{contfoot}{default}
+ }
+ }
+ }% END FIRSTFOOT
+ \DefTblrTemplate{middlefoot}{default}{
+ \IfBoolTF \l__tblr_table_no_label_bool
+ % True NoLabel
+ { \UseTblrTemplate{contfoot}{default} }
+ % False NoLabel
+ {
+ \IfBoolTF \l__tblrextras_table_title_below_bool
+ % Cap Below
+ {
+ \addtocounter{table}{-1}
+ \captionsetup{type=table}
+ \caption[]{\InsertTblrText{caption}}
+ \UseTblrTemplate{contfoot}{default}
+ }
+ % Cap Above (default)
+ {
+ \UseTblrTemplate{contfoot}{default}
+ }
+ }
+ }% END MIDDLEFOOT
+ \DefTblrTemplate{lastfoot}{default}{
+ \IfBoolTF \l__tblr_table_no_label_bool
+ % True NoLabel
+ {
+ \UseTblrTemplate{note}{default}
+ \UseTblrTemplate{remark}{default}
+ }
+ % False NoLabel
+ {
+ \IfBoolTF \l__tblrextras_table_title_below_bool
+ % Cap Below
+ {
+ \UseTblrTemplate{note}{default}
+ \UseTblrTemplate{remark}{default}
+ \addtocounter{table}{-1}
+ \captionsetup{type=table} \IfTokenListEmpty{\InsertTblrText{entry}}{
+ \caption{\InsertTblrText{caption}}
+ }{
+ \caption[\InsertTblrText{entry}]{\InsertTblrText{caption}}
+ }
+ }
+ % Cap Above (default)
+ {
+ \UseTblrTemplate{note}{default}
+ \UseTblrTemplate{remark}{default}
+ }
+ }
+ }% END LASTFOOT
\SetTblrTemplate{caption-lot}{empty}
}
+\ExplSyntaxOff
%% ----------------------------------------------------------------------
%% TblrLibrary babel - Translate contfoot and conthead to current babel/polyglossia
-%% language. Supports: ngerman, french, spanish, russian and ukrainian translations.
+%% language.
+% Supports: ngerman, french, spanish, russian, romanian, galician, esperanto, danish, catalan, danish, afrikaans, italian, portuguese and ukrainian translations.
+%%%%%
%% Check engine
\newif\if@unicode@engine
\ifdefined\luatexversion
@@ -71,53 +189,101 @@
\RequirePackage{babel}
}
}
+ \ifdefined\captionsromanian
+ \addto\captionsromanian{%
+ \renewcommand{\tblrcontfootname}{Continuare pe pagina următoare}%
+ \renewcommand{\tblrcontheadname}{(Continuare)}%
+ }
+ \fi
+ \ifdefined\captionsgalician
+ \addto\captionsgalician{%
+ \renewcommand{\tblrcontfootname}{Continuación na seguinte páxina}%
+ \renewcommand{\tblrcontheadname}{(Continuación)}%
+ }
+ \fi
+ \ifdefined\captionsesperanto
+ \addto\captionsesperanto{%
+ \renewcommand{\tblrcontfootname}{Daŭrigo sur la sekva paĝo}%
+ \renewcommand{\tblrcontheadname}{(Daŭrigo)}%
+ }
+ \fi
+ \ifdefined\captionsdanish
+ \addto\captionsdanish{%
+ \renewcommand{\tblrcontfootname}{Fortsættelse på næste side}%
+ \renewcommand{\tblrcontheadname}{(Fortsættelse)}%
+ }
+ \fi
+ \ifdefined\captionscatalan
+ \addto\captionscatalan{%
+ \renewcommand{\tblrcontfootname}{Continuació a la pàgina següent}%
+ \renewcommand{\tblrcontheadname}{(Continuació)}%
+ }
+ \fi
+ \ifdefined\captionsdutch
+ \addto\captionsdutch{%
+ \renewcommand{\tblrcontfootname}{Vervolg op de volgende pagina}%
+ \renewcommand{\tblrcontheadname}{(Vervolg)}%
+ }
+ \fi
+ \ifdefined\captionsafrikaans
+ \addto\captionsafrikaans{%
+ \renewcommand{\tblrcontfootname}{Vervolg op die volgende bladsy}%
+ \renewcommand{\tblrcontheadname}{(Vervolg)}%
+ }
+ \fi
+ \ifdefined\captionsitalian
+ \addto\captionsitalian{%
+ \renewcommand{\tblrcontfootname}{Continua alla pagina successiva}%
+ \renewcommand{\tblrcontheadname}{(Continuazione)}%
+ }
+ \fi
+ \ifdefined\captionsportuguese
+ \addto\captionsportuguese{%
+ \renewcommand{\tblrcontfootname}{Continua na próxima página}%
+ \renewcommand{\tblrcontheadname}{(Continuação)}%
+ }
+ \fi
\ifdefined\captionsspanish
\addto\captionsspanish{%
- \DefTblrTemplate{contfoot-text}{default}{Continúa en la página siguiente}%
- \DefTblrTemplate{conthead-text}{default}{(Continuación)}%
+ \renewcommand{\tblrcontfootname}{Continúa en la siguiente página}%
+ \renewcommand{\tblrcontheadname}{(Continuación)}%
}
\fi
\ifdefined\captionsngerman
\addto\captionsngerman{%
- \DefTblrTemplate{contfoot-text}{default}{Fortsetzung auf der nächsten Seite}%
- \DefTblrTemplate{conthead-text}{default}{(Fortsetzung)}%
- }
- \fi
- \ifdefined\captionsgerman
- \addto\captionsgerman{%
- \DefTblrTemplate{contfoot-text}{default}{Fortsetzung auf der nächsten Seite}%
- \DefTblrTemplate{conthead-text}{default}{(Fortsetzung)}%
+ \renewcommand{\tblrcontfootname}{Fortsetzung auf der nächsten Seite}%
+ \renewcommand{\tblrcontheadname}{(Fortsetzung)}%
}
\fi
\ifdefined\captionsfrench
\addto\captionsfrench{%
- \DefTblrTemplate{contfoot-text}{default}{Suite à la page suivante}%
- \DefTblrTemplate{conthead-text}{default}{(Suite)}%
+ \renewcommand{\tblrcontfootname}{Suite à la page suivante}%
+ \renewcommand{\tblrcontheadname}{(Suite)}%
}
\fi
\ifdefined\captionsrussian
\if@unicode@engine
\addto\captionsrussian{%
- \DefTblrTemplate{contfoot-text}{default}{Продолжение на следующей странице}%
- \DefTblrTemplate{conthead-text}{default}{(продолжение)}%
+ \renewcommand{\tblrcontfootname}{Продолжение на следующей странице}%
+ \renewcommand{\tblrcontheadname}{(продолжение)}%
}
\else
\addto\captionsrussian{%
- \DefTblrTemplate{contfoot-text}{default}{\cyr\CYRP\cyrr\cyro\cyrd\cyro\cyrl\cyrzh\cyre\cyrn\cyri\cyre\ \cyrn\cyra\ \cyrs\cyrl\cyre\cyrd\cyru\cyryu\cyrshch\cyre\cyrishrt\ \cyrs\cyrt\cyrr\cyra\cyrn\cyri\cyrc\cyre}%
- \DefTblrTemplate{conthead-text}{default}{(\cyr\cyrp\cyrr\cyro\cyrd\cyro\cyrl\cyrzh\cyre\cyrn\cyri\cyre)}%
+ \renewcommand{\tblrcontfootname}{\cyr\CYRP\cyrr\cyro\cyrd\cyro\cyrl\cyrzh\cyre\cyrn\cyri\cyre\ \cyrn\cyra\ \cyrs\cyrl\cyre\cyrd\cyru\cyryu\cyrshch\cyre\cyrishrt\ \cyrs\cyrt\cyrr\cyra\cyrn\cyri\cyrc\cyre}%
+ \renewcommand{\tblrcontheadname}{(\cyr\cyrp\cyrr\cyro\cyrd\cyro\cyrl\cyrzh\cyre\cyrn\cyri\cyre)}%
}
\fi
\fi
\ifdefined\captionsukrainian
\if@unicode@engine
\addto\captionsukrainian{%
- \DefTblrTemplate{contfoot-text}{default}{Продовження на наступній сторінці}%
- \DefTblrTemplate{conthead-text}{default}{(продовження)}%
+ \renewcommand{\tblrcontfootname}{Продовження на наступній сторінці}%
+ \renewcommand{\tblrcontheadname}{(продовження)}%
}
\else
\addto\captionsukrainian{%
- \DefTblrTemplate{contfoot-text}{default}{\cyr\CYRP\cyrr\cyro\cyrd\cyro\cyrv\cyrzh\cyre\cyrn\cyrn\cyrya\ \cyrn\cyra\ \cyrn\cyra\cyrs\cyrt\cyru\cyrp\cyrn\cyrii\cyrishrt\ \cyrs\cyrt\cyro\cyrr\cyrii\cyrn\cyrc\cyrii}%
- \DefTblrTemplate{conthead-text}{default}{(\cyr\cyrp\cyrr\cyro\cyrd\cyro\cyrv\cyrzh\cyre\cyrn\cyrn\cyrya)}%
+ \renewcommand{\tblrcontfootname}{\cyr\CYRP\cyrr\cyro\cyrd\cyro\cyrv\cyrzh\cyre\cyrn\cyrn\cyrya\ \cyrn\cyra\ \cyrn\cyra\cyrs\cyrt\cyru\cyrp\cyrn\cyrii\cyrishrt\ \cyrs\cyrt\cyro\cyrr\cyrii\cyrn\cyrc\cyrii}%
+ \renewcommand{\tblrcontheadname}{(\cyr\cyrp\cyrr\cyro\cyrd\cyro\cyrv\cyrzh\cyre\cyrn\cyrn\cyrya)}%
}
\fi
\fi
diff --git a/macros/latex/contrib/tblr-extras/test-tblr-extras.pdf b/macros/latex/contrib/tblr-extras/test-tblr-extras.pdf
new file mode 100644
index 0000000000..db0bff113c
--- /dev/null
+++ b/macros/latex/contrib/tblr-extras/test-tblr-extras.pdf
Binary files differ
diff --git a/macros/latex/contrib/tblr-extras/test-tblr-extras.tex b/macros/latex/contrib/tblr-extras/test-tblr-extras.tex
new file mode 100644
index 0000000000..69cc27a9e4
--- /dev/null
+++ b/macros/latex/contrib/tblr-extras/test-tblr-extras.tex
@@ -0,0 +1,24 @@
+\documentclass{article}
+\usepackage[margin=55mm]{geometry}
+\usepackage[esperanto]{babel}
+\usepackage[font = {small, sf}, labelfont = bf,
+singlelinecheck = off]{caption}
+\usepackage{tabularray}
+\usepackage{tblr-extras}
+\UseTblrLibrary{booktabs, caption, babel}
+
+\usepackage{lipsum}
+
+\begin{document}
+ \begin{longtblr}[
+ caption = {My Table Title},
+ label = {tab:test},
+ ]{colspec = {@{} X[j] @{}}}
+ \toprule
+ \lipsum[1] \\
+ \midrule
+ \lipsum[1] \\
+ \lipsum[1] \\
+ \bottomrule
+ \end{longtblr}
+\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/tcolorbox/CHANGES.md b/macros/latex/contrib/tcolorbox/CHANGES.md
index 5aaa4f6f21..a0287ad4b2 100644
--- a/macros/latex/contrib/tcolorbox/CHANGES.md
+++ b/macros/latex/contrib/tcolorbox/CHANGES.md
@@ -22,7 +22,45 @@ and this project adheres to
-## [6.2.0]
+## [6.3.0] - 2024-07-10
+
+### Added
+- Library `documentation`:
+ - Option `page ref formatter` (issue #273)
+- First experimental partial tagging support: suppress tagging of drawing (issue #283)
+ This works for lualatex only.
+
+### Changed
+- The base package loads `tikz` now instead of `pgf`.
+ All skins, including the `standard` family, use `tikzpicture` as internal environment now.
+- Boolean marker to detect if inside a `tcb@savebox` introduced (issue #262)
+- LaTeX usrguide cited for `\NewDocumentCommand` and friends (issue #263)
+- Stricter checks on box names in `\newtcbox` and friends (issue #264)
+- Checks on formatter like `index key formatter` enforced (issue #265)
+- Needed LaTeX version updated to 2023-11-01
+- More meaningful error message in case of `\DeclareTColorBox` with same auto counter (issue #276)
+- Library `theorems`:
+ - Options `ams align`, `ams align*`, `ams gather`, and `ams gather*` are now shortcuts
+ for the upper part only (issue #282)
+ - Documentation for `ams align`, `ams align*`, `ams gather`, and `ams gather*` adapted, i.e.
+ exclusion of lower parts documented (issue #282)
+- Technical information: The package documentation is now produced with lualatex instead of pdflatex
+
+### Deprecated
+- The option `graphical environment` is useless now, since all environments are based on `tikzpicture` now.
+
+### Removed
+- Documentation for the deprecated options `before example` and `after example`
+- Documentation for the deprecated option `graphical environment`
+
+### Fixed
+- `\@nobreakfalse` added to `\tcb@parbox@false@settings` to avoid
+ decreased space before list with `parbox=false` following a section heading (issue #270)
+- Documentation typos fixed (issue #279)
+
+
+
+## [6.2.0] - 2024-01-10
### Added
- New convenience options for box content additions (issue #250)
diff --git a/macros/latex/contrib/tcolorbox/README.md b/macros/latex/contrib/tcolorbox/README.md
index 27f6edf11d..e90e2bec18 100644
--- a/macros/latex/contrib/tcolorbox/README.md
+++ b/macros/latex/contrib/tcolorbox/README.md
@@ -1,4 +1,4 @@
-# The LaTeX package tcolorbox - version 6.2.0 (2024/01/10)
+# The LaTeX package tcolorbox - version 6.3.0 (2024/07/10)
> Copyright (c) 2006-2024 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
diff --git a/macros/latex/contrib/tcolorbox/tcbbreakable.code.tex b/macros/latex/contrib/tcolorbox/tcbbreakable.code.tex
index 90ece8e5a5..cade134ab2 100644
--- a/macros/latex/contrib/tcolorbox/tcbbreakable.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbbreakable.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 6.2.0 (2024/01/10)
+%% The LaTeX package tcolorbox - version 6.3.0 (2024/07/10)
%% tcbbreakable.code.tex: Code for breakable colorboxes
%%
%% -------------------------------------------------------------------------------------------
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{6.2.0}
+\tcb@set@library@version{6.3.0}
\RequirePackage{pdfcol}
\pdfcolInitStack{tcb@breakable}
@@ -82,6 +82,7 @@
\reserved@a%
\@endpefalse%
\global\@newlistfalse%
+ \tcb@set@savebox@construction@true%
\let\tcbbreak\tcb@@break%
\iftcb@usecolorstack%
\pdfcolSwitchStack{tcb@breakable}%
@@ -551,7 +552,7 @@
\let\tcb@before@middle=\@empty%
\let\tcb@before@last=\@empty%
\iftcb@multicol%
- \long\def\tcb@after@first{\par}% using \columnbreak here kills multicols' algortihm sometimes
+ \long\def\tcb@after@first{\par}% using \columnbreak here kills multicols' algorithm sometimes
\long\def\tcb@after@middle{\par\vfill}%
\else%
\long\def\tcb@after@first{\par\pagebreak\tcb@enlbreak@next}%
@@ -827,7 +828,7 @@
\csname tcb@break@ch@\tcb@split@state\endcsname%
\tcbdimto\tcb@innerheight{\tcb@height-\kvtcb@top@rule-\kvtcb@bottom@rule-\tcb@h@padtitle}%
\tcbdimto\tcbtextheight{\tcb@innerheight-\kvtcb@boxsep*2-\kvtcb@top-\kvtcb@bottom}%
- \tcb@drawing@env@begin%
+ \begin{tcb@drawing}%
\tcb@extensions@preframe%
% draw frame and interior
\tcb@adraw@frame%
@@ -842,7 +843,7 @@
\tcb@tdraw@upper%
\tcb@tdraw@lower%
\tcb@extensions@final%
- \tcb@drawing@env@end%
+ \end{tcb@drawing}%
\endgroup%
}
@@ -857,7 +858,7 @@
\csname tcb@break@ch@\tcb@split@state\endcsname%
\tcbdimto\tcb@innerheight{\tcb@height-\kvtcb@top@rule-\kvtcb@bottom@rule-\tcb@h@padtitle}%
\tcbdimto\tcbtextheight{\tcb@innerheight-\kvtcb@boxsep*2-\kvtcb@top-\kvtcb@bottom}%
- \tcb@drawing@env@begin%
+ \begin{tcb@drawing}%
\tcb@extensions@preframe%
% draw frame and interior
\tcb@adraw@frame%
@@ -868,7 +869,7 @@
\tcb@tdraw@title%
\tcb@tdraw@upper%
\tcb@extensions@final%
- \tcb@drawing@env@end%
+ \end{tcb@drawing}%
\endgroup%
}
@@ -883,7 +884,7 @@
\csname tcb@break@ch@\tcb@split@state\endcsname%
\tcbdimto\tcb@innerheight{\tcb@height-\kvtcb@top@rule-\kvtcb@bottom@rule-\tcb@h@padtitle}%
\tcbdimto\tcbtextheight{\tcb@innerheight-\kvtcb@boxsep*2-\kvtcb@top-\kvtcb@bottom}%
- \tcb@drawing@env@begin%
+ \begin{tcb@drawing}%
\tcb@extensions@preframe%
% draw frame and interior
\tcb@adraw@frame%
@@ -897,7 +898,7 @@
\tcb@tdraw@title%
\tcb@tdraw@lower%
\tcb@extensions@final%
- \tcb@drawing@env@end%
+ \end{tcb@drawing}%
\endgroup%
}
@@ -912,7 +913,7 @@
\csname tcb@break@ch@\tcb@split@state\endcsname%
\tcbdimto\tcb@innerheight{\tcb@height-\kvtcb@top@rule-\kvtcb@bottom@rule-\tcb@h@padtitle}%
\tcbdimto\tcbtextheight{\tcb@innerheight-\kvtcb@boxsep*2-\kvtcb@top-\kvtcb@bottom}%
- \tcb@drawing@env@begin%
+ \begin{tcb@drawing}%
\tcb@extensions@preframe%
% draw frame and interior
\tcb@adraw@frame%
@@ -923,7 +924,7 @@
\tcb@tdraw@title%
\tcb@tdraw@lower%
\tcb@extensions@final%
- \tcb@drawing@env@end%
+ \end{tcb@drawing}%
\endgroup%
}
diff --git a/macros/latex/contrib/tcolorbox/tcbdocumentation.code.tex b/macros/latex/contrib/tcolorbox/tcbdocumentation.code.tex
index 3eff9746f8..a550de9fff 100644
--- a/macros/latex/contrib/tcolorbox/tcbdocumentation.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbdocumentation.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 6.2.0 (2024/01/10)
+%% The LaTeX package tcolorbox - version 6.3.0 (2024/07/10)
%% tcbdocumentation.code.tex: Code for LaTeX documentations
%%
%% -------------------------------------------------------------------------------------------
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{6.2.0}
+\tcb@set@library@version{6.3.0}
\tcbuselibrary{listings,skins,external,raster}
@@ -199,10 +199,6 @@
keywords bold/true/.code={\let\tcb@doc@bfseries\bfseries},
keywords bold/false/.code={\let\tcb@doc@bfseries\mdseries},
doc key prefix/.store in=\kvtcb@doc@keyprefix,
- index key formatter/.code={\let\kvtcb@doc@format@key=#1},
- index keys formatter/.code={\let\kvtcb@doc@format@keys=#1},
- index key formatter/.default=\@firstofone,
- index keys formatter/.default=\@firstofone,
}
@@ -337,6 +333,43 @@
\ExplSyntaxOn
+\tcbset{
+ index~key~formatter / .code =
+ {
+ \__tcobox_store_formatter_in:nN {#1} \kvtcb@doc@format@key
+ },
+ index~key~formatter / .default = \use:n,
+ index~keys~formatter / .code =
+ {
+ \__tcobox_store_formatter_in:nN {#1} \kvtcb@doc@format@keys
+ },
+ index~keys~formatter / .default = \use:n,
+ page~ref~formatter / .code =
+ {
+ \__tcobox_store_formatter_in:nN {#1} \kvtcb@doc@format@page
+ },
+ page~ref~formatter / .default = \use:n,
+}
+
+
+\cs_if_exist:NF \__tcobox_store_formatter_in:nN
+ {
+ \cs_new_protected:Npn \__tcobox_store_formatter_in:nN #1#2
+ {
+ \__tcobox_if_single_cs:nTF {#1}
+ { \cs_set_eq:NN #2 #1 }
+ {
+ \tcb@error
+ {
+ Invalid~formatter~ "\tl_to_str:n {#1}" ~passed~to \MessageBreak
+ "\pgfkeyscurrentkey". \MessageBreak
+ A~formatter~should~be~a~single~command~taking~one \MessageBreak
+ mandatory~argument
+ }
+ }
+ }
+ }
+
\cs_new_nopar:Npn \__tcobox_new_bool_key:Nn #1 #2
{
@@ -879,7 +912,7 @@
\IfBooleanTF{#2}{}{%
\ifnum\getpagerefnumber{#1:#3}=\thepage\relax%
\else%
- \textsuperscript{{\fontfamily{pzd}\fontencoding{U}\fontseries{m}\fontshape{n}\selectfont\char213}%
+ \kvtcb@doc@format@page{{\fontfamily{pzd}\fontencoding{U}\fontseries{m}\fontshape{n}\selectfont\char213}%
\,\kvtcb@text@pageshort\,\pageref*{#1:#3}}%
\fi}}%
}
@@ -1027,6 +1060,7 @@
doc key prefix={/},
index key formatter,
index keys formatter,
+ page ref formatter=\textsuperscript,
}
% deprecated
diff --git a/macros/latex/contrib/tcolorbox/tcbexternal.code.tex b/macros/latex/contrib/tcolorbox/tcbexternal.code.tex
index 0bfa994f68..060f1bb9a0 100644
--- a/macros/latex/contrib/tcolorbox/tcbexternal.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbexternal.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 6.2.0 (2024/01/10)
+%% The LaTeX package tcolorbox - version 6.3.0 (2024/07/10)
%% tcbexternal.code.tex: Code for externalization
%%
%% -------------------------------------------------------------------------------------------
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{6.2.0}
+\tcb@set@library@version{6.3.0}
\tcbuselibrary{pro@cessing}
@@ -111,14 +111,14 @@
\def\tcbexternal@pdfmissing@warning{%
\tcb@warning{File '\tcbexternal@job@pdf' missing.
- Compilation error or shell-escape wasn't enabled or a subdirectory could'nt be generated}%
+ Compilation error or shell-escape wasn't enabled or a subdirectory couldn't be generated}%
\message{Load '\tcbexternal@job@source' instead}%
\tcbexternal@inputsource%
}
\def\tcbexternal@pdfmissing@error{%
\tcb@error{File '\tcbexternal@job@pdf' missing.
- Compilation error or shell-escape wasn't enabled or a subdirectory could'nt be generated}{}%
+ Compilation error or shell-escape wasn't enabled or a subdirectory couldn't be generated}{}%
}
\def\tcbexternal@inputpdf{%
diff --git a/macros/latex/contrib/tcolorbox/tcbfitting.code.tex b/macros/latex/contrib/tcolorbox/tcbfitting.code.tex
index 0e34e15ad5..e133063705 100644
--- a/macros/latex/contrib/tcolorbox/tcbfitting.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbfitting.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 6.2.0 (2024/01/10)
+%% The LaTeX package tcolorbox - version 6.3.0 (2024/07/10)
%% tcbfitting.code.tex: Code for fit boxes
%%
%% -------------------------------------------------------------------------------------------
@@ -18,7 +18,7 @@
%% This work consists of all files listed in README
%%
%\makeatletter
-\tcb@set@library@version{6.2.0}
+\tcb@set@library@version{6.3.0}
\newdimen\tcbfitdim
\newdimen\tcb@lowerfitdim
diff --git a/macros/latex/contrib/tcolorbox/tcbhooks.code.tex b/macros/latex/contrib/tcolorbox/tcbhooks.code.tex
index b3edf95636..6a60587177 100644
--- a/macros/latex/contrib/tcolorbox/tcbhooks.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbhooks.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 6.2.0 (2024/01/10)
+%% The LaTeX package tcolorbox - version 6.3.0 (2024/07/10)
%% tcbhooks.code.tex: Code for adding hooks
%%
%% -------------------------------------------------------------------------------------------
@@ -18,7 +18,7 @@
%% This work consists of all files listed in README
%%
%\makeatletter
-\tcb@set@library@version{6.2.0}
+\tcb@set@library@version{6.3.0}
\tcbset{%
before upper app/.code={\appto\kvtcb@before@upper{#1}},%
diff --git a/macros/latex/contrib/tcolorbox/tcblistings.code.tex b/macros/latex/contrib/tcolorbox/tcblistings.code.tex
index 195076eee1..9a869f870f 100644
--- a/macros/latex/contrib/tcolorbox/tcblistings.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcblistings.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 6.2.0 (2024/01/10)
+%% The LaTeX package tcolorbox - version 6.3.0 (2024/07/10)
%% tcblistings.code.tex: Code for colorboxes with listings
%%
%% -------------------------------------------------------------------------------------------
@@ -18,7 +18,7 @@
%% This work consists of all files listed in README
%%
%\makeatletter
-\tcb@set@library@version{6.2.0}
+\tcb@set@library@version{6.3.0}
\RequirePackage{listings}[2007/02/22]
diff --git a/macros/latex/contrib/tcolorbox/tcblistingscore.code.tex b/macros/latex/contrib/tcolorbox/tcblistingscore.code.tex
index 48241a94d5..f3ffb31b90 100644
--- a/macros/latex/contrib/tcolorbox/tcblistingscore.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcblistingscore.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 6.2.0 (2024/01/10)
+%% The LaTeX package tcolorbox - version 6.3.0 (2024/07/10)
%% tcblistingscode.code.tex: Auxiliary code for colorboxes with listings
%%
%% -------------------------------------------------------------------------------------------
@@ -18,7 +18,7 @@
%% This work consists of all files listed in README
%%
%\makeatletter
-\tcb@set@library@version{6.2.0}
+\tcb@set@library@version{6.3.0}
\tcbuselibrary{pro@cessing}
diff --git a/macros/latex/contrib/tcolorbox/tcblistingsutf8.code.tex b/macros/latex/contrib/tcolorbox/tcblistingsutf8.code.tex
index 0c9b2b7e8c..0fb3fd8d22 100644
--- a/macros/latex/contrib/tcolorbox/tcblistingsutf8.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcblistingsutf8.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 6.2.0 (2024/01/10)
+%% The LaTeX package tcolorbox - version 6.3.0 (2024/07/10)
%% tcblistingsutf8.code.tex: Code for colorboxes with listings in UTF-8
%%
%% -------------------------------------------------------------------------------------------
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{6.2.0}
+\tcb@set@library@version{6.3.0}
\tcbuselibrary{listings}
diff --git a/macros/latex/contrib/tcolorbox/tcbmagazine.code.tex b/macros/latex/contrib/tcolorbox/tcbmagazine.code.tex
index 81180a8eb8..49059a0863 100644
--- a/macros/latex/contrib/tcolorbox/tcbmagazine.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbmagazine.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 6.2.0 (2024/01/10)
+%% The LaTeX package tcolorbox - version 6.3.0 (2024/07/10)
%% tcbmagazine.code.tex: Code for box sets and magazine styles
%%
%% -------------------------------------------------------------------------------------------
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{6.2.0}
+\tcb@set@library@version{6.3.0}
\tcbuselibrary{breakable}
diff --git a/macros/latex/contrib/tcolorbox/tcbminted.code.tex b/macros/latex/contrib/tcolorbox/tcbminted.code.tex
index cae9e8d707..d21bc11036 100644
--- a/macros/latex/contrib/tcolorbox/tcbminted.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbminted.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 6.2.0 (2024/01/10)
+%% The LaTeX package tcolorbox - version 6.3.0 (2024/07/10)
%% tcbminted.code.tex: Code for colorboxes with listings
%%
%% -------------------------------------------------------------------------------------------
@@ -18,7 +18,7 @@
%% This work consists of all files listed in README
%%
%\makeatletter
-\tcb@set@library@version{6.2.0}
+\tcb@set@library@version{6.3.0}
\RequirePackage{minted}[2021/12/24]
diff --git a/macros/latex/contrib/tcolorbox/tcbposter.code.tex b/macros/latex/contrib/tcolorbox/tcbposter.code.tex
index 49abfc651a..3fcec6b22c 100644
--- a/macros/latex/contrib/tcolorbox/tcbposter.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbposter.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 6.2.0 (2024/01/10)
+%% The LaTeX package tcolorbox - version 6.3.0 (2024/07/10)
%% tcbposter.code.tex: Code for posters
%%
%% -------------------------------------------------------------------------------------------
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{6.2.0}
+\tcb@set@library@version{6.3.0}
\tcbuselibrary{breakable,magazine,skins,fitting}
diff --git a/macros/latex/contrib/tcolorbox/tcbprocessing.code.tex b/macros/latex/contrib/tcolorbox/tcbprocessing.code.tex
index ce0ae43075..a5bdabc874 100644
--- a/macros/latex/contrib/tcolorbox/tcbprocessing.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbprocessing.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 6.2.0 (2024/01/10)
+%% The LaTeX package tcolorbox - version 6.3.0 (2024/07/10)
%% tcbprocessing.code.tex: Code for conditional processing
%%
%% -------------------------------------------------------------------------------------------
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{6.2.0}
+\tcb@set@library@version{6.3.0}
\ExplSyntaxOn
diff --git a/macros/latex/contrib/tcolorbox/tcbraster.code.tex b/macros/latex/contrib/tcolorbox/tcbraster.code.tex
index 3551030092..e3645497e9 100644
--- a/macros/latex/contrib/tcolorbox/tcbraster.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbraster.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 6.2.0 (2024/01/10)
+%% The LaTeX package tcolorbox - version 6.3.0 (2024/07/10)
%% tcbskinsjigsaw.code.tex: Code for colorboxes with different skins
%%
%% -------------------------------------------------------------------------------------------
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{6.2.0}
+\tcb@set@library@version{6.3.0}
\newcounter{tcbrastercolumn}
\newcounter{tcbrasterrow}
diff --git a/macros/latex/contrib/tcolorbox/tcbskins.code.tex b/macros/latex/contrib/tcolorbox/tcbskins.code.tex
index 3fbad78584..5e3faed9dd 100644
--- a/macros/latex/contrib/tcolorbox/tcbskins.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbskins.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 6.2.0 (2024/01/10)
+%% The LaTeX package tcolorbox - version 6.3.0 (2024/07/10)
%% tcbskins.code.tex: Code for colorboxes with different skins
%%
%% -------------------------------------------------------------------------------------------
@@ -17,15 +17,10 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{6.2.0}
+\tcb@set@library@version{6.3.0}
-\RequirePackage{tikz}[2010/10/13]
\RequirePackage{tikzfill.image}
-\newenvironment{tikzpicture@tcb@hooked}{%
- \edef\tcb@tikzpicture@begin{\noexpand\tikzpicture[\expandonce\tcb@tikz@option@hook]}%
- \tcb@tikzpicture@begin\tcb@tikz@begin@hook}{\tcb@tikz@end@hook\endtikzpicture}
-
\def\tcb@creategeonodes@true{%
\begin{scope}[every node/.style={line width=0mm,inner sep=0mm,outer sep=0mm,draw=none,fill=none,rectangle}]
\node[name=frame,at={(0,0)},above right,minimum width=\tcb@width,minimum height=\tcb@height]{};
@@ -438,7 +433,7 @@
\tcbset{%
base@unbroken/.style={%
- clear@spec,graphical environment=tikzpicture@tcb@hooked,geometry nodes,%
+ clear@spec,geometry nodes,%
set@outerboundary=\tcb@boundaryframe@standard,%
shape@of@skin=unbroken,%
set@extensions@preframe={\kvtcb@shadow},%
@@ -446,7 +441,7 @@
set@extensions@final={\tcb@apply@finish}%
},%
base@first/.style={%
- clear@spec,graphical environment=tikzpicture@tcb@hooked,geometry nodes,%
+ clear@spec,geometry nodes,%
set@outerboundary=\tcb@boundaryframe@pathfirst,%
shape@of@skin=first,%
set@extensions@preframe={\kvtcb@shadow},%
@@ -454,7 +449,7 @@
set@extensions@final={\tcb@apply@finish}%
},%
base@middle/.style={%
- clear@spec,graphical environment=tikzpicture@tcb@hooked,geometry nodes,%
+ clear@spec,geometry nodes,%
set@outerboundary=\tcb@boundaryframe@pathmiddle,%
shape@of@skin=middle,%
set@extensions@preframe={\kvtcb@shadow},%
@@ -462,7 +457,7 @@
set@extensions@final={\tcb@apply@finish}%
},%
base@last/.style={%
- clear@spec,graphical environment=tikzpicture@tcb@hooked,geometry nodes,%
+ clear@spec,geometry nodes,%
set@outerboundary=\tcb@boundaryframe@pathlast,%
shape@of@skin=last,%
set@extensions@preframe={\kvtcb@shadow},%
@@ -885,7 +880,7 @@
segmentation code={\tcb@drawspec@widgetsegment},%
skin first=widgetmiddle,skin middle=widgetmiddle,skin last=widgetlast}
-\tcb@new@skin{spartan}{graphical environment=tikzpicture@tcb@hooked,geometry nodes=true,shape@of@skin=unbroken,%
+\tcb@new@skin{spartan}{geometry nodes=true,shape@of@skin=unbroken,%
set@extensions@preframe=,set@extensions@postframe={\tcb@apply@underlay},set@extensions@final=,%
frame engine=spartan,interior titled engine=spartan,interior engine=spartan,title engine=spartan,segmentation engine=spartan,%
set@outerboundary=\tcb@boundaryframe@standard,%
@@ -893,7 +888,7 @@
\tcbset{spartan/.style={skin=spartan}}
-\tcb@new@skin{draft}{clear@spec,graphical environment=tikzpicture@tcb@hooked,geometry nodes,shape@of@skin=unbroken,%
+\tcb@new@skin{draft}{clear@spec,geometry nodes,shape@of@skin=unbroken,%
frame engine=empty,interior titled engine=empty,interior engine=empty,segmentation engine=path,title empty,%
segmentation style={draw=black,dashed},
set@extensions@postframe=,
diff --git a/macros/latex/contrib/tcolorbox/tcbskinsjigsaw.code.tex b/macros/latex/contrib/tcolorbox/tcbskinsjigsaw.code.tex
index 551971a0df..6a54fca567 100644
--- a/macros/latex/contrib/tcolorbox/tcbskinsjigsaw.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbskinsjigsaw.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 6.2.0 (2024/01/10)
+%% The LaTeX package tcolorbox - version 6.3.0 (2024/07/10)
%% tcbskinsjigsaw.code.tex: Code for colorboxes with different skins
%%
%% -------------------------------------------------------------------------------------------
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{6.2.0}
+\tcb@set@library@version{6.3.0}
\tcbuselibrary{skins}
diff --git a/macros/latex/contrib/tcolorbox/tcbtheorems.code.tex b/macros/latex/contrib/tcolorbox/tcbtheorems.code.tex
index f53eda79a5..cfbc1ba796 100644
--- a/macros/latex/contrib/tcolorbox/tcbtheorems.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbtheorems.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 6.2.0 (2024/01/10)
+%% The LaTeX package tcolorbox - version 6.3.0 (2024/07/10)
%% tcbtheorems.code.tex: Code for theorems in colorboxes
%%
%% -------------------------------------------------------------------------------------------
@@ -18,7 +18,7 @@
%% This work consists of all files listed in README
%%
%\makeatletter
-\tcb@set@library@version{6.2.0}
+\tcb@set@library@version{6.3.0}
\RequirePackage{amsmath}
@@ -138,7 +138,7 @@
% insert box with name and number
\mode_leave_vertical:
\box_use_drop:N \l__tcobox_tmpa_box
- % insert formated title
+ % insert formatted title
\group_begin:
\__tcobox_theo_format_description:n{#3}
\group_end:
@@ -260,11 +260,31 @@
description~font/.default =,
description~formatter/.code =
{
- \cs_set_eq:NN \__tcobox_theo_format_description:n #1
+ \__tcobox_store_formatter_in:nN {#1} \__tcobox_theo_format_description:n
},
description~formatter/.default = \__tcobox_theo_format_description_standard:n,
}
+
+\cs_if_exist:NF \__tcobox_store_formatter_in:nN
+ {
+ \cs_new_protected:Npn \__tcobox_store_formatter_in:nN #1#2
+ {
+ \__tcobox_if_single_cs:nTF {#1}
+ { \cs_set_eq:NN #2 #1 }
+ {
+ \tcb@error
+ {
+ Invalid~formatter~ "\tl_to_str:n {#1}" ~passed~to \MessageBreak
+ "\pgfkeyscurrentkey". \MessageBreak
+ A~formatter~should~be~a~single~command~taking~one \MessageBreak
+ mandatory~argument
+ }
+ }
+ }
+ }
+
+
\ExplSyntaxOff
@@ -298,16 +318,16 @@
ams equation*/.style={ams equation* upper,ams equation* lower},%
ams align upper/.style={before upper*=\tcb@hack@amsmath\align,after upper*=\endalign},%
ams align lower/.style={before lower*=\tcb@hack@amsmath\align,after lower*=\endalign},%
- ams align/.style={ams align upper,ams align lower},%
+ ams align/.style={ams align upper},%
ams align* upper/.style={before upper*=\tcb@hack@amsmath\csname align*\endcsname,after upper*=\endalign},%
ams align* lower/.style={before lower*=\tcb@hack@amsmath\csname align*\endcsname,after lower*=\endalign},%
- ams align*/.style={ams align* upper,ams align* lower},%
+ ams align*/.style={ams align* upper},%
ams gather upper/.style={before upper*=\tcb@hack@amsmath\gather,after upper*=\endgather},%
ams gather lower/.style={before lower*=\tcb@hack@amsmath\gather,after lower*=\endgather},%
- ams gather/.style={ams gather upper,ams gather lower},%
+ ams gather/.style={ams gather upper},%
ams gather* upper/.style={before upper*=\tcb@hack@amsmath\csname gather*\endcsname,after upper*=\endgather},%
ams gather* lower/.style={before lower*=\tcb@hack@amsmath\csname gather*\endcsname,after lower*=\endgather},%
- ams gather*/.style={ams gather* upper,ams gather* lower},%
+ ams gather*/.style={ams gather* upper},%
ams nodisplayskip upper/.style={before upper=\vskip-\abovedisplayskip},%
ams nodisplayskip lower/.style={before lower=\vskip-\abovedisplayskip},%
ams nodisplayskip/.style={ams nodisplayskip upper,ams nodisplayskip lower},%
diff --git a/macros/latex/contrib/tcolorbox/tcbvignette.code.tex b/macros/latex/contrib/tcolorbox/tcbvignette.code.tex
index e177bb33d4..51a4c9d6d0 100644
--- a/macros/latex/contrib/tcolorbox/tcbvignette.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbvignette.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 6.2.0 (2024/01/10)
+%% The LaTeX package tcolorbox - version 6.3.0 (2024/07/10)
%% tcbvignette.code.tex: Code for ornamental frames
%%
%% -------------------------------------------------------------------------------------------
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{6.2.0}
+\tcb@set@library@version{6.3.0}
\tcbuselibrary{skins}
diff --git a/macros/latex/contrib/tcolorbox/tcbxparse.code.tex b/macros/latex/contrib/tcolorbox/tcbxparse.code.tex
index cf60ef0731..5223be23ea 100644
--- a/macros/latex/contrib/tcolorbox/tcbxparse.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbxparse.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 6.2.0 (2024/01/10)
+%% The LaTeX package tcolorbox - version 6.3.0 (2024/07/10)
%% tcbxparse.code.tex: Code for xparse features
%%
%% -------------------------------------------------------------------------------------------
@@ -18,6 +18,6 @@
%% This work consists of all files listed in README
%%
%\makeatletter
-\tcb@set@library@version{6.2.0}
+\tcb@set@library@version{6.3.0}
\RequirePackage{xparse}[2013/12/31]
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox-example-poster.pdf b/macros/latex/contrib/tcolorbox/tcolorbox-example-poster.pdf
index e39ddaa037..1e380d5559 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox-example-poster.pdf
+++ b/macros/latex/contrib/tcolorbox/tcolorbox-example-poster.pdf
Binary files differ
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox-example-poster.tex b/macros/latex/contrib/tcolorbox/tcolorbox-example-poster.tex
index ffa291103b..cb8586e6ec 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox-example-poster.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox-example-poster.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 6.2.0 (2024/01/10)
+%% The LaTeX package tcolorbox - version 6.3.0 (2024/07/10)
%% tcolorbox-example-poster.tex: a poster example for tcolorbox
%%
%% -------------------------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox-example.pdf b/macros/latex/contrib/tcolorbox/tcolorbox-example.pdf
index 809b35a2ca..2d332523c2 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox-example.pdf
+++ b/macros/latex/contrib/tcolorbox/tcolorbox-example.pdf
Binary files differ
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox-example.tex b/macros/latex/contrib/tcolorbox/tcolorbox-example.tex
index 1adaa24d7e..6f878d2f1d 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox-example.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox-example.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 6.2.0 (2024/01/10)
+%% The LaTeX package tcolorbox - version 6.3.0 (2024/07/10)
%% tcolorbox-example.tex: an example for tcolorbox
%%
%% -------------------------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.pdf b/macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.pdf
index eb23961967..f81aee0783 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.pdf
+++ b/macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.pdf
Binary files differ
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.tex b/macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.tex
index ae550c5c6d..7c6c769d1d 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.tex
@@ -1,5 +1,5 @@
% \LaTeX-Main\
-%% The LaTeX package tcolorbox - version 6.2.0 (2024/01/10)
+%% The LaTeX package tcolorbox - version 6.3.0 (2024/07/10)
%% tcolorbox-tutorial-poster.tex: a tutorial for poster creation with tcolorbox
%%
%% -------------------------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.bib b/macros/latex/contrib/tcolorbox/tcolorbox.doc.bib
index be1c60b666..e38e91c3d4 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.bib
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.bib
@@ -209,3 +209,9 @@
}
+@manual{latexproject:usrguide,
+ author = {The \LaTeX{} Project Team},
+ title = {{\LaTeX} for authors --- current version},
+ url = {https://mirrors.ctan.org/macros/latex/base/usrguide.pdf},
+ date = {2023-05-23},
+}
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.breakable.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.breakable.tex
index a86994c7e2..00dc2198b2 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.breakable.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.breakable.tex
@@ -252,7 +252,7 @@ The |break at| option can be used to insert better break points by hand.
The example code enlarged the second partial box by one line, the third
partial box by two lines, and all following parts are not enlarged.
\begin{marker}
- If an automated page break occures before the first partial box, the
+ If an automated page break occurs before the first partial box, the
page enlargement is applied to the page before the first partial box \emph{and}
again to the page of the first partial box. Insert a manual break to prevent this.\\
In general, |enlargepage| should be used at the final stage of a document
@@ -513,7 +513,7 @@ and \refKey{/tcb/enlarge bottom at break by}.
\item the segmentation line (or similar) is drawn as first element of the
partial box containing the \emph{lower part}, if \refKey{/tcb/segmentation at break}
is set to be |true|.
- \item the segmenation line (or similar) is not drawn at all, if
+ \item the segmentation line (or similar) is not drawn at all, if
\refKey{/tcb/segmentation at break} is set to be |false|.
This may be preferable for skins like \refSkin{bicolor}, \refSkin{tile},
or \refSkin{beamer}.
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.coremacros.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.coremacros.tex
index 0847f09775..c41134a6c8 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.coremacros.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.coremacros.tex
@@ -214,7 +214,8 @@ numbered title and options.
\begin{docCommand}{NewTColorBox}{\oarg{init options}\marg{name}\marg{specification}\marg{options}}
Creates a new environment \meta{name} based on \refEnv{tcolorbox}.\\
Basically, \refCom{NewTColorBox} operates like |\NewDocumentEnvironment|. This means,
- the new environment \meta{name} is constructed with the given argument \meta{specification}.
+ the new environment \meta{name} is constructed with the
+ given \LaTeX3 argument \meta{specification} following \cite{latexproject:usrguide}.
An error is issued if an environment with \meta{name} has already been defined.
The \meta{options} are given to the underlying \refEnv{tcolorbox}.\\
Note that \refKey{/tcb/savedelimiter} is set to the given \meta{name}
@@ -275,7 +276,8 @@ This is a tcolorbox.
Creates a new command \texttt{\textbackslash}\meta{name} based on \refEnv{tcolorbox}.
In contrast to \refCom{NewTColorBox}, also the \meta{content} of the |tcolorbox| is specified.\\
Basically, \refCom{NewTotalTColorBox} operates like |\NewDocumentCommand|. This means,
- the new command \texttt{\textbackslash}\meta{name} is constructed with the given argument \meta{specification}.
+ the new command \texttt{\textbackslash}\meta{name} is constructed with the given
+ given \LaTeX3 argument \meta{specification} following \cite{latexproject:usrguide}.
An error is issued if \texttt{\textbackslash}\meta{name} has already been defined.
The \meta{options} are given to the underlying \refEnv{tcolorbox} which is filled with
the specified \meta{content}.\\
@@ -387,7 +389,8 @@ The \xmybox[green]{quick} brown \xmybox{fox} \xmybox[blue]{jumps} over the
\begin{docCommand}{NewTCBox}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}}
Creates a new command \texttt{\textbackslash}\meta{name} based on \refCom{tcbox}.
Basically, \refCom{NewTCBox} operates like |\NewDocumentCommand|. This means,
- the new command \texttt{\textbackslash}\meta{name} is constructed with the given argument \meta{specification}.
+ the new command \texttt{\textbackslash}\meta{name} is constructed with the given
+ given \LaTeX3 argument \meta{specification} following \cite{latexproject:usrguide}.
An error is issued if \texttt{\textbackslash}\meta{name} has already been defined.
The \meta{options} are given to the underlying \refCom{tcbox}.\\
Note that \refKey{/tcb/savedelimiter} is set to the given \meta{name}
@@ -437,7 +440,8 @@ The \xmybox[green]{quick} brown \xmybox{fox} \xmybox[blue]{jumps} over the
Creates a new command \texttt{\textbackslash}\meta{name} based on \refCom{tcbox}.
In contrast to \refCom{NewTCBox}, also the \meta{content} of the |tcbox| is specified.\\
Basically, \refCom{NewTotalTCBox} operates like |\NewDocumentCommand|. This means,
- the new command \texttt{\textbackslash}\meta{name} is constructed with the given argument \meta{specification}.
+ the new command \texttt{\textbackslash}\meta{name} is constructed with the
+ given \LaTeX3 argument \meta{specification} following \cite{latexproject:usrguide}.
An error is issued if \texttt{\textbackslash}\meta{name} has already been defined.
The \meta{options} are given to the underlying \refCom{tcbox} which is filled with
the specified \meta{content}.\\
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.coreoptions.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.coreoptions.tex
index e20936d76b..62f3fa3c01 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.coreoptions.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.coreoptions.tex
@@ -3104,11 +3104,11 @@ inside the document preamble.
\begin{docTcbKey}[][doc new={2020-09-25}]{before skip balanced}{=\meta{glue}}{no default, initially |0.5\textbackslash baselineskip plus 2pt|}
Inserts some vertical space before the colored box. This style sets \refKey{/tcb/before}.\par
If the depth of the
- preceeding \TeX\ box is between |0pt| and |0.3\baselineskip|,
- the distance between the \emph{baseline} of the preceeding \TeX\ box and the tcolorbox
- ist set to \meta{glue}$+$|0.3\baselineskip|.\par
- If the depth is larger, the distance of the preceeding \TeX\ box and the tcolorbox
- ist set to \meta{glue}.\par
+ preceding \TeX\ box is between |0pt| and |0.3\baselineskip|,
+ the distance between the \emph{baseline} of the preceding \TeX\ box and the tcolorbox
+ is set to \meta{glue}$+$|0.3\baselineskip|.\par
+ If the depth is larger, the distance of the preceding \TeX\ box and the tcolorbox
+ is set to \meta{glue}.\par
Alternatively, see \refKey{/tcb/before skip} which ignores the \emph{baseline}.
\begin{exdispExample*}{before_skip_balanced}{sbs,lefthand ratio=0.6}
@@ -3174,7 +3174,7 @@ line 4 g
Inserts some vertical space of the given \meta{glue} before the colored box.
This style sets \refKey{/tcb/before}.
In contrast to \refKey{/tcb/before skip balanced}, this \meta{glue} is
- relative to the lower edge of the preceeding box and not to the baseline.
+ relative to the lower edge of the preceding box and not to the baseline.
\begin{exdispExample*}{before_skip}{sbs,lefthand ratio=0.6}
Some text.
\begin{tcolorbox}[before skip=1cm,
@@ -4363,7 +4363,8 @@ from page \pageref{sec:numberedboxes}, e.\,g.\ \refKey{/tcb/new/auto counter}.
\begin{docTcbKey}[][doc new=2014-11-28]{phantomlabel}{=\meta{marker}}{no default, initially unset}
Equivalent to \refKey{/tcb/label} for an \emph{unnumbered} box.
A |\phantomsection| from the package |hyperref| \cite{rahtz:hyperref} is used to set a correct
-hyperlink target. This is not needed for a numbered box.
+hyperlink target.
+This is not needed and should typically not be used for a numbered box.
\end{docTcbKey}
\clearpage
@@ -4691,8 +4692,7 @@ It is precise only, if \refKey{/tcb/check odd page} was set.
See \Fullref{sec:external} for the \mylib{external} library of |tcolorbox|.
\end{marker}
-If the \emph{externalization} library of the \texttt{tikz} package is used
-and \refKey{/tcb/graphical environment} is set to |tikzpicture|,
+If the \emph{externalization} library of the \texttt{tikz} package is used,
a |tcolorbox| could trigger the externalization process which will arise
a compilation error.
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.documentation.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.documentation.tex
index 9934cd5c86..45282f3c46 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.documentation.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.documentation.tex
@@ -953,7 +953,7 @@ hand side if too long. Linebreaks can be used inside the \meta{text}.
\begin{dispListing}
\begin{docCommands}[
doc name = l_tcobox_example_tl,
- doc sort index = example_tl, % sorted unter e like example
+ doc sort index = example_tl, % sorted under e like example
]{}
\end{docCommands}
\end{dispListing}
@@ -1354,29 +1354,6 @@ keys to insert code before (or after) the description texts.
\end{docTcbKey}
-\begin{marker}
-The following two keys are deprecated and without function (v3.50 and above).
-Use \refKey{/tcb/before} and \refKey{/tcb/after} with appropriate values
-instead. Also see \refKey{/tcb/docexample}.
-\end{marker}
-
-\begin{docTcbKey}[][doc updated=2015-03-16]{before example}{=\meta{macros}}{no default, initially empty}
-\smallskip\begin{deprecated}
- Sets the \meta{macros} which are executed before \refEnv{dispExample} and \refEnv{dispListing}
- additional to \refKey{/tcb/before}.
-\end{deprecated}
-\end{docTcbKey}
-
-\enlargethispage*{1cm}
-
-\begin{docTcbKey}{after example}{=\meta{macros}}{no default, initially empty}
-\smallskip\begin{deprecated}
- Sets the \meta{macros} which are executed after \refEnv{dispExample} and \refEnv{dispListing}
- additional to \refKey{/tcb/after}.
-\end{deprecated}
-\end{docTcbKey}
-
-\clearpage
\begin{docTcbKey}[][doc new=2017-04-25]{keywords bold}{\colOpt{=true\textbar false}}{default |true|, initially |true|}
Keyword used in \refEnv{docEnvironment}, \refEnv{docCommand}, etc. are printed
boldface (or not). Since the typewriter font is used, the effect may be
@@ -1391,6 +1368,24 @@ instead. Also see \refKey{/tcb/docexample}.
\end{dispExample*}
\end{docTcbKey}
+\clearpage
+
+\begin{docTcbKeys}
+ {
+ {
+ doc name = page ref formatter,
+ doc new = {2024-03-13},
+ doc parameter = \colOpt{=\meta{macro}},
+ doc description = {no default, initially \texttt{\textbackslash textsuperscript}},
+ }
+ }
+Sets \meta{macro} as formatter for page references like the
+reference to \refEnv{tcolorbox}.
+The default setting puts the page reference in a |\textsuperscript|.
+It may be changed to |\fakesuperscript| to cope with superiors problems
+in combination with the |realscripts| package or just otherwise for user customization.
+\end{docTcbKeys}
+
\begin{docTcbKey}[][doc new=2015-01-09]{index command}{=\meta{macro}}{no default, initially \cs{index}}
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.external.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.external.tex
index b7a10c2331..62c982c2d3 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.external.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.external.tex
@@ -74,7 +74,7 @@ executed.
\documentclass[a4paper]{book}% for example
\usepackage{...}% anything
% ...
-% Tpyically, all or the very most settings for the document.
+% Typically, all or the very most settings for the document.
\tcbEXTERNALIZE% Typically, just before \begin{document}
@@ -500,7 +500,7 @@ in this case.
\clearpage
\begin{docCommand}[doc new=2015-03-11]{newtcbexternalizeenvironment}{\marg{newenv}\marg{env}\marg{options}\marg{begin}\marg{end}}
Creates a new environment \meta{newenv} which is based on
- \refEnv{tcbexternal}. This enviroment takes \emph{at least}
+ \refEnv{tcbexternal}. This environment takes \emph{at least}
one optional parameter and one mandatory parameter.
These two parameters are passed to \refEnv{tcbexternal}.
Further, the given \meta{options} are always added to the option list of \refEnv{tcbexternal}.\par
@@ -532,7 +532,7 @@ a & This table is externalized as snippet. Obviously,
\begin{docCommand}[doc new=2015-03-11]{newtcbexternalizetcolorbox}{\marg{newenv}\marg{env}\marg{options}\marg{begin end options}}
Creates a new environment \meta{newenv} which is based on
- \refEnv{tcbexternal}. This enviroment takes \emph{at least}
+ \refEnv{tcbexternal}. This environment takes \emph{at least}
one optional parameter and one mandatory parameter.
These two parameters are passed to \refEnv{tcbexternal}.
Further, the given \meta{options} are always added to the option list of \refEnv{tcbexternal}.\par
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.filling.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.filling.tex
index 9f1f4627ca..909f7f4ac0 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.filling.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.filling.tex
@@ -63,7 +63,7 @@ To be more specific, they determine the east-to-west and the north-to-south dime
which may be not the maximal dimensions for a non-rectangular node.
Note that the following dimensions are measured exactly including the line width
of the border line. If a new rectangle or node with the same dimensions
-and a border is to be drawn, this border width has to be substracted.
+and a border is to be drawn, this border width has to be subtracted.
\begin{docCommand}[doc new=2014-09-19]{tcbsettowidthofnode}{\marg{register}\marg{node}}
Sets the east-to-west dimension of the given \meta{node}
@@ -88,7 +88,7 @@ and a border is to be drawn, this border width has to be substracted.
\node[align=center,draw=red,fill=yellow] (A) {This is my\\example node};
\tcbsetmacrotowidthofnode\mywidth{A}
\tcbsetmacrotoheightofnode\myheight{A}
- \path[fill=blue!25!white] % rectangle widthout border
+ \path[fill=blue!25!white] % rectangle without border
([xshift=2mm]A.south east)
rectangle node{Copy} +(\mywidth,\myheight);
\node[draw=blue,fill=blue!25!white, % standard border width 0.4pt
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.fitting.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.fitting.tex
index 14f9e7b577..a541659c37 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.fitting.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.fitting.tex
@@ -145,7 +145,8 @@ The library is loaded by a package option or inside the preamble by:
\begin{docCommand}{NewTCBoxFit}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}}
Creates a new command \texttt{\textbackslash}\meta{name} based on \refCom{tcboxfit}.
Basically, \refCom{NewTCBoxFit} operates like |\NewDocumentCommand|. This means,
- the new command \texttt{\textbackslash}\meta{name} is constructed with the given argument \meta{specification}.
+ the new command \texttt{\textbackslash}\meta{name} is constructed with the given
+ given \LaTeX3 argument \meta{specification} following \cite{latexproject:usrguide}.
An error is issued if \texttt{\textbackslash}\meta{name} has already been defined.
The \meta{options} are given to the underlying \refCom{tcboxfit}.\\
Note that \refKey{/tcb/savedelimiter} is set to the given \meta{name}
@@ -192,7 +193,8 @@ The library is loaded by a package option or inside the preamble by:
Creates a new command \texttt{\textbackslash}\meta{name} based on \refCom{tcboxfit}.
In contrast to \refCom{NewTCBoxFit}, also the \meta{content} of the |tcboxfit| is specified.\\
Basically, \refCom{NewTotalTCBoxFit} operates like |\NewDocumentCommand|. This means,
- the new command \texttt{\textbackslash}\meta{name} is constructed with the given argument \meta{specification}.
+ the new command \texttt{\textbackslash}\meta{name} is constructed with the given
+ given \LaTeX3 argument \meta{specification} following \cite{latexproject:usrguide}.
An error is issued if \texttt{\textbackslash}\meta{name} has already been defined.
The \meta{options} are given to the underlying \refCom{tcboxfit} which is filled with
the specified \meta{content}.\\
@@ -620,7 +622,7 @@ if necessary.
\begin{docTcbKey}{fit maxstep}{=\meta{number}}{no default, initially |20|}
Sets the maximal step size for the font size adjustment algorithm.
- In normal situations, the algorithm stops before reaching the intial value of 20 steps.
+ In normal situations, the algorithm stops before reaching the initial value of 20 steps.
If the box content does not shrink, this value prevents an endless loop.
\end{docTcbKey}
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.intro.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.intro.tex
index 548c70e081..0d76c0afbb 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.intro.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.intro.tex
@@ -48,7 +48,7 @@ for some hints. The short story is: you have to install not only
\subsection{Loading the Package}
The base package |tcolorbox| loads the packages
-|pgf| \cite{tantau:tikz_and_pgf}, |verbatim| \cite{schoepf:verbatim},
+|tikz| \cite{tantau:tikz_and_pgf}, |verbatim| \cite{schoepf:verbatim},
|etoolbox| \cite{lehmann:etoolbox},
and |environ| \cite{robertson:2014a}.
|tcolorbox| itself is loaded in the usual manner in the preamble:
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.listings.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.listings.tex
index c2e8b5fe27..c6e56dcdfa 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.listings.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.listings.tex
@@ -282,7 +282,8 @@ This is my \LaTeX\ box.
\begin{docCommand}{NewTCBListing}{\oarg{init options}\marg{name}\marg{specification}\marg{options}}
Creates a new environment \meta{name} based on \refEnv{tcblisting}.\\
Basically, \refCom{NewTCBListing} operates like |\NewDocumentEnvironment|. This means,
- the new environment \meta{name} is constructed with the given argument \meta{specification}.
+ the new environment \meta{name} is constructed with the
+ given \LaTeX3 argument \meta{specification} following \cite{latexproject:usrguide}.
An error is issued if \meta{name} has already been defined.
The \meta{options} are given to the underlying \refEnv{tcblisting}.\\
Note that \refKey{/tcb/savedelimiter} is set to the given \meta{name}
@@ -429,7 +430,8 @@ Note that the following code uses \verb+!O{}+ now.
\begin{docCommand}{NewTCBInputListing}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}}
Creates a new command \texttt{\textbackslash}\meta{name} based on \refCom{tcbinputlisting}.
Basically, \refCom{NewTCBInputListing} operates like |\NewDocumentCommand|. This means,
- the new command \texttt{\textbackslash}\meta{name} is constructed with the given argument \meta{specification}.
+ the new command \texttt{\textbackslash}\meta{name} is constructed with the
+ given \LaTeX3 argument \meta{specification} following \cite{latexproject:usrguide}.
An error is issued if \texttt{\textbackslash}\meta{name} has already been defined.
The \meta{options} are given to the underlying \refCom{tcbinputlisting}.\\
The \meta{init options} allow setting up automatic numbering,
@@ -1178,6 +1180,7 @@ This \meta{system command} is added to \refKey{/tcb/process code}.
\end{marker}
\end{docTcbKey}
+\enlargethispage*{5mm}
\begin{docTcbKey}[][doc new=2014-11-14]{run pdflatex}{\colOpt{=\meta{arguments}}}{style, no default, initially unset}
Issues a |pdflatex| compilation of the listing with the given \meta{arguments}.
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.s_main.sty b/macros/latex/contrib/tcolorbox/tcolorbox.doc.s_main.sty
index 3eabd88b1e..7bc44882c8 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.s_main.sty
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.s_main.sty
@@ -276,9 +276,9 @@
before skip=\medskipamount,after skip=\medskipamount,frame style={}},
}
-\newtcbexternalizetcolorbox{exdispExample}{dispExample}{environment with percent=false,minipage}{beforeafter example}
+\newtcbexternalizetcolorbox{exdispExample}{dispExample}{environment with percent=false,minipage,compiler=lualatex}{beforeafter example}
-\newtcbexternalizetcolorbox{exdispExample*}{dispExample*}{environment with percent=false,minipage}{beforeafter example}
+\newtcbexternalizetcolorbox{exdispExample*}{dispExample*}{environment with percent=false,minipage,compiler=lualatex}{beforeafter example}
\newcommand{\inputpreamblelisting}[1]{%
\tcbinputlisting{title=Definition in the preamble:,
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.skincatalog.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.skincatalog.tex
index ece3b4bc35..9f79252f3e 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.skincatalog.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.skincatalog.tex
@@ -117,7 +117,6 @@ defined just for this documentation.
\begin{tcolorbox}[skintable=standard]
\begin{tabbing}
\refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |pgfpicture|\\
\refKey{/tcb/frame engine}: \> |standard|\\
\refKey{/tcb/interior titled engine}: \> |standard|\\
\refKey{/tcb/interior engine}: \> |standard|\\
@@ -143,7 +142,6 @@ defined just for this documentation.
\begin{tcolorbox}[skintable=standard jigsaw]
\begin{tabbing}
\refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |pgfpicture|\\
\refKey{/tcb/frame engine}: \> |standardjigsaw|\\
\refKey{/tcb/interior titled engine}: \> |standard|\\
\refKey{/tcb/interior engine}: \> |standard|\\
@@ -185,7 +183,6 @@ have some \enquote{enhanced} features, the |enhanced| skin is what you are looki
\begin{tcolorbox}[skintable=enhanced]
\begin{tabbing}
\refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
\refKey{/tcb/frame engine}: \> |path|\\
\refKey{/tcb/interior titled engine}: \> |path|\\
\refKey{/tcb/interior engine}: \> |path|\\
@@ -297,7 +294,6 @@ Nevertheless, this skin can be applied independently.
\begin{tcolorbox}[skintable=enhancedfirst]
\begin{tabbing}
\refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
\refKey{/tcb/frame engine}: \> |pathfirst|\\
\refKey{/tcb/interior titled engine}: \> |pathfirst|\\
\refKey{/tcb/interior engine}: \> |pathfirst|\\
@@ -322,7 +318,6 @@ Nevertheless, this skin can be applied independently.
\begin{tcolorbox}[skintable=enhancedmiddle]
\begin{tabbing}
\refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
\refKey{/tcb/frame engine}: \> |pathmiddle|\\
\refKey{/tcb/interior titled engine}: \> |pathmiddle|\\
\refKey{/tcb/interior engine}: \> |pathmiddle|\\
@@ -346,7 +341,6 @@ Nevertheless, this skin can be applied independently.
\begin{tcolorbox}[skintable=enhancedlast]
\begin{tabbing}
\refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
\refKey{/tcb/frame engine}: \> |pathlast|\\
\refKey{/tcb/interior titled engine}: \> |pathlast|\\
\refKey{/tcb/interior engine}: \> |pathlast|\\
@@ -368,7 +362,6 @@ Nevertheless, this skin can be applied independently.
\begin{tcolorbox}[skintable=enhanced jigsaw]
\begin{tabbing}
\refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
\refKey{/tcb/frame engine}: \> |pathjigsaw|\\
\refKey{/tcb/interior titled engine}: \> |path|\\
\refKey{/tcb/interior engine}: \> |path|\\
@@ -404,7 +397,6 @@ Nevertheless, this skin can be applied independently.
\begin{tcolorbox}[skintable=enhancedfirst jigsaw]
\begin{tabbing}
\refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
\refKey{/tcb/frame engine}: \> |pathfirstjigsaw|\\
\refKey{/tcb/interior titled engine}: \> |pathfirst|\\
\refKey{/tcb/interior engine}: \> |pathfirst|\\
@@ -429,7 +421,6 @@ Nevertheless, this skin can be applied independently.
\begin{tcolorbox}[skintable=enhancedmiddle jigsaw]
\begin{tabbing}
\refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
\refKey{/tcb/frame engine}: \> |pathmiddlejigsaw|\\
\refKey{/tcb/interior titled engine}: \> |pathmiddle|\\
\refKey{/tcb/interior engine}: \> |pathmiddle|\\
@@ -509,7 +500,6 @@ Nevertheless, this skin can be applied independently.
\begin{tcolorbox}[skintable=enhancedlast]
\begin{tabbing}
\refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
\refKey{/tcb/frame engine}: \> |pathlastjigsaw|\\
\refKey{/tcb/interior titled engine}: \> |pathlast|\\
\refKey{/tcb/interior engine}: \> |pathlast|\\
@@ -537,7 +527,6 @@ Nevertheless, this skin can be applied independently.
\begin{tcolorbox}[skintable=bicolor]
\begin{tabbing}
\refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
\refKey{/tcb/frame engine}: \> |path|\\
\refKey{/tcb/interior titled engine}: \> \emph{special}\\
\refKey{/tcb/interior engine}: \> \emph{special}\\
@@ -694,7 +683,6 @@ Nevertheless, this skin can be applied independently.
\begin{tcolorbox}[skintable=bicolorfirst]
\begin{tabbing}
\refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
\refKey{/tcb/frame engine}: \> |pathfirst|\\
\refKey{/tcb/interior titled engine}: \> \emph{special}\\
\refKey{/tcb/interior engine}: \> \emph{special}\\
@@ -720,7 +708,6 @@ Nevertheless, this skin can be applied independently.
\begin{tcolorbox}[skintable=bicolormiddle]
\begin{tabbing}
\refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
\refKey{/tcb/frame engine}: \> |pathmiddle|\\
\refKey{/tcb/interior titled engine}: \> \emph{special}\\
\refKey{/tcb/interior engine}: \> \emph{special}\\
@@ -746,7 +733,6 @@ Nevertheless, this skin can be applied independently.
\begin{tcolorbox}[skintable=bicolorlast]
\begin{tabbing}
\refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
\refKey{/tcb/frame engine}: \> |pathlast|\\
\refKey{/tcb/interior titled engine}: \> \emph{special}\\
\refKey{/tcb/interior engine}: \> \emph{special}\\
@@ -772,7 +758,6 @@ Nevertheless, this skin can be applied independently.
\begin{tcolorbox}[skintable=bicolor jigsaw]
\begin{tabbing}
\refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
\refKey{/tcb/frame engine}: \> |pathjigsaw|\\
\refKey{/tcb/interior titled engine}: \> \emph{special}\\
\refKey{/tcb/interior engine}: \> \emph{special}\\
@@ -805,7 +790,6 @@ Nevertheless, this skin can be applied independently.
\begin{tcolorbox}[skintable=bicolorfirst jigsaw]
\begin{tabbing}
\refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
\refKey{/tcb/frame engine}: \> |pathfirstjigsaw|\\
\refKey{/tcb/interior titled engine}: \> \emph{special}\\
\refKey{/tcb/interior engine}: \> \emph{special}\\
@@ -833,7 +817,6 @@ Nevertheless, this skin can be applied independently.
\begin{tcolorbox}[skintable=bicolormiddle jigsaw]
\begin{tabbing}
\refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
\refKey{/tcb/frame engine}: \> |pathmiddlejigsaw|\\
\refKey{/tcb/interior titled engine}: \> \emph{special}\\
\refKey{/tcb/interior engine}: \> \emph{special}\\
@@ -860,7 +843,6 @@ Nevertheless, this skin can be applied independently.
\begin{tcolorbox}[skintable=bicolorlast jigsaw]
\begin{tabbing}
\refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
\refKey{/tcb/frame engine}: \> |pathlastjigsaw|\\
\refKey{/tcb/interior titled engine}: \> \emph{special}\\
\refKey{/tcb/interior engine}: \> \emph{special}\\
@@ -891,7 +873,6 @@ Nevertheless, this skin can be applied independently.
\begin{tcolorbox}[skintable=tile]
\begin{tabbing}
\refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
\refKey{/tcb/frame engine}: \> |empty|\\
\refKey{/tcb/interior titled engine}: \> \emph{special}\\
\refKey{/tcb/interior engine}: \> \emph{special}\\
@@ -923,7 +904,6 @@ Nevertheless, this skin can be applied independently.
\begin{tcolorbox}[skintable=tilefirst]
\begin{tabbing}
\refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
\refKey{/tcb/frame engine}: \> |empty|\\
\refKey{/tcb/interior titled engine}: \> \emph{special}\\
\refKey{/tcb/interior engine}: \> \emph{special}\\
@@ -949,7 +929,6 @@ Nevertheless, this skin can be applied independently.
\begin{tcolorbox}[skintable=tilemiddle]
\begin{tabbing}
\refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
\refKey{/tcb/frame engine}: \> |empty|\\
\refKey{/tcb/interior titled engine}: \> \emph{special}\\
\refKey{/tcb/interior engine}: \> \emph{special}\\
@@ -976,7 +955,6 @@ Nevertheless, this skin can be applied independently.
\begin{tcolorbox}[skintable=tilelast]
\begin{tabbing}
\refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
\refKey{/tcb/frame engine}: \> |empty|\\
\refKey{/tcb/interior titled engine}: \> \emph{special}\\
\refKey{/tcb/interior engine}: \> \emph{special}\\
@@ -1006,7 +984,6 @@ Nevertheless, this skin can be applied independently.
\begin{tcolorbox}[skintable=beamer]
\begin{tabbing}
\refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
\refKey{/tcb/frame engine}: \> |path|\\
\refKey{/tcb/interior titled engine}: \> \emph{special}\\
\refKey{/tcb/interior engine}: \> \emph{special}\\
@@ -1069,7 +1046,6 @@ Nevertheless, this skin can be applied independently.
\begin{tcolorbox}[skintable=beamerfirst]
\begin{tabbing}
\refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
\refKey{/tcb/frame engine}: \> |pathfirst|\\
\refKey{/tcb/interior titled engine}: \> \emph{special}\\
\refKey{/tcb/interior engine}: \> \emph{special}\\
@@ -1094,7 +1070,6 @@ Nevertheless, this skin can be applied independently.
\begin{tcolorbox}[skintable=beamermiddle]
\begin{tabbing}
\refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
\refKey{/tcb/frame engine}: \> |pathmiddle|\\
\refKey{/tcb/interior titled engine}: \> \emph{special}\\
\refKey{/tcb/interior engine}: \> \emph{special}\\
@@ -1118,7 +1093,6 @@ Nevertheless, this skin can be applied independently.
\begin{tcolorbox}[skintable=beamerlast]
\begin{tabbing}
\refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
\refKey{/tcb/frame engine}: \> |pathlast|\\
\refKey{/tcb/interior titled engine}: \> \emph{special}\\
\refKey{/tcb/interior engine}: \> \emph{special}\\
@@ -1145,7 +1119,6 @@ Nevertheless, this skin can be applied independently.
\begin{tcolorbox}[skintable=widget]
\begin{tabbing}
\refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
\refKey{/tcb/frame engine}: \> |path|\\
\refKey{/tcb/interior titled engine}: \> |path|\\
\refKey{/tcb/interior engine}: \> |path|\\
@@ -1184,7 +1157,6 @@ Nevertheless, this skin can be applied independently.
\begin{tcolorbox}[skintable=widgetfirst]
\begin{tabbing}
\refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
\refKey{/tcb/frame engine}: \> |pathfirst|\\
\refKey{/tcb/interior titled engine}: \> |pathfirst|\\
\refKey{/tcb/interior engine}: \> |pathfirst|\\
@@ -1208,7 +1180,6 @@ Nevertheless, this skin can be applied independently.
\begin{tcolorbox}[skintable=widgetmiddle]
\begin{tabbing}
\refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
\refKey{/tcb/frame engine}: \> |pathmiddle|\\
\refKey{/tcb/interior titled engine}: \> |pathmiddle|\\
\refKey{/tcb/interior engine}: \> |pathmiddle|\\
@@ -1231,7 +1202,6 @@ Nevertheless, this skin can be applied independently.
\begin{tcolorbox}[skintable=widgetlast]
\begin{tabbing}
\refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
\refKey{/tcb/frame engine}: \> |pathlast|\\
\refKey{/tcb/interior titled engine}: \> |pathlast|\\
\refKey{/tcb/interior engine}: \> |pathlast|\\
@@ -1257,7 +1227,6 @@ Nevertheless, this skin can be applied independently.
\begin{tcolorbox}[skintable=empty]
\begin{tabbing}
\refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
\refKey{/tcb/frame engine}: \> |empty|\\
\refKey{/tcb/interior titled engine}: \> |empty|\\
\refKey{/tcb/interior engine}: \> |empty|\\
@@ -1348,7 +1317,6 @@ Nevertheless, this skin can be applied independently.
\begin{tcolorbox}[skintable=emptyfirst]
\begin{tabbing}
\refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
\refKey{/tcb/frame engine}: \> |empty|\\
\refKey{/tcb/interior titled engine}: \> |empty|\\
\refKey{/tcb/interior engine}: \> |empty|\\
@@ -1375,7 +1343,6 @@ Nevertheless, this skin can be applied independently.
\begin{tcolorbox}[skintable=emptymiddle]
\begin{tabbing}
\refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
\refKey{/tcb/frame engine}: \> |empty|\\
\refKey{/tcb/interior titled engine}: \> |empty|\\
\refKey{/tcb/interior engine}: \> |empty|\\
@@ -1401,7 +1368,6 @@ Nevertheless, this skin can be applied independently.
\begin{tcolorbox}[skintable=emptylast]
\begin{tabbing}
\refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
\refKey{/tcb/frame engine}: \> |empty|\\
\refKey{/tcb/interior titled engine}: \> |empty|\\
\refKey{/tcb/interior engine}: \> |empty|\\
@@ -1520,7 +1486,6 @@ are drawn by the codes given by
\begin{tcolorbox}[skintable=spartan]
\begin{tabbing}
\refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
\refKey{/tcb/frame engine}: \> |spartan|\\
\refKey{/tcb/interior titled engine}: \> |spartan|\\
\refKey{/tcb/interior engine}: \> |spartan|\\
@@ -1551,7 +1516,6 @@ are drawn by the codes given by
\begin{tcolorbox}[skintable=draft]
\begin{tabbing}
\refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
\refKey{/tcb/frame engine}: \> \emph{special}\\
\refKey{/tcb/interior titled engine}: \> \emph{special}\\
\refKey{/tcb/interior engine}: \> \emph{special}\\
@@ -1612,7 +1576,6 @@ you would have used \refKey{/tcb/freelance} before.
\begin{tcolorbox}[skintable=freelance]
\begin{tabbing}
\refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
\refKey{/tcb/frame engine}: \> |freelance|\\
\refKey{/tcb/interior titled engine}: \> |freelance|\\
\refKey{/tcb/interior engine}: \> |freelance|\\
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.skins.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.skins.tex
index e92d81a644..bbf946c9fc 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.skins.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.skins.tex
@@ -7,8 +7,7 @@ The library is loaded by a package option or inside the preamble by:
\begin{dispListing}
\tcbuselibrary{skins}
\end{dispListing}
-This also loads the package |tikz| \cite{tantau:tikz_and_pgf}. Typically but not necessarily,
-the following skins use |tikz| instead of |pgf|.
+This also loads the package |tikzfill.image|.
In the following, general settings and options of the library are
documented.
@@ -1059,9 +1058,7 @@ By default, the resulting boxed title is somewhat smaller than the main box.
\clearpage
\subsection{Watermark Option Keys}\label{subsec:watermarks}
-The following watermark options are applicable for all skins which
-use |tikzpicture| as \refKey{/tcb/graphical environment}.
-Therefore, the skin \refSkin{standard} does not support these watermarks,
+The skin \refSkin{standard} does not support these watermarks,
but all other skins, e.\,g.\ \refSkin{enhanced}.
\begin{marker}
@@ -1479,9 +1476,7 @@ Donau\-dampf\-schiff\-fahrts\-ka\-pi\-t\"ans\-m\"ut\-zen\-fran\-sen
\clearpage
\subsection{Border Line Option Keys}\label{subsec:borderline}
-The following borderline options are applicable for most skins which
-use |tikzpicture| as \refKey{/tcb/graphical environment}.
-Therefore, the skin \refSkin{standard} does not support these border lines,
+The skin \refSkin{standard} does not support these border lines,
but most other skins, e.\,g.\ \refSkin{enhanced}.
The borderlines are independent from the normal |tcolorbox| rules.
@@ -1714,9 +1709,7 @@ but adapt to breakable boxes.
\clearpage
\subsection{Shadow Option Keys}\label{subsec:shadows}
-The following shadow options are applicable for most skins which
-use |tikzpicture| as \refKey{/tcb/graphical environment}.
-Therefore, the skin \refSkin{standard} does not support these shadows,
+The skin \refSkin{standard} does not support these shadows,
but most other skins, e.\,g.\ \refSkin{enhanced}.
The shadows are stackable, i.\,e.\ several different shadows can be
@@ -2087,7 +2080,7 @@ This is a tcolorbox.
from the frame outline. A positive \meta{offset} value shrinks the shadow
and a negative \meta{offset} value enlarges the shadow.
The shadow is filled along a \tikzname\ path with the given \tikzname\ \meta{options}.\\
- The shadows adapt to the rounded corners of the |tcolorbox|. A shrinked shadow
+ The shadows adapt to the rounded corners of the |tcolorbox|. A shrunken shadow
will switch to sharp corners if necessary, an enlarged shadow may become
more rounded depending on several factors. But \refKey{/tcb/sharp corners}
have sharp shadows.
@@ -2255,7 +2248,7 @@ This is a tcolorbox.
\clearpage
\subsubsection{\tikzname\ Shadows}
-Alternativ to the package shadow options described before, shadows from
+Alternative to the package shadow options described before, shadows from
the \flqq Shadows Library\frqq\ of \tikzname\ can be used.
Such shadows can be added directly to the frame path using \refKey{/tcb/frame style}.
@@ -2292,9 +2285,7 @@ Such shadows can be added directly to the frame path using \refKey{/tcb/frame st
\clearpage
\subsection{\tikzname\ Picture Option Keys}\label{subsec:tikzpicture}
-The following general options are applicable for skins which
-use |tikzpicture| as \refKey{/tcb/graphical environment}.
-Therefore, the skin \refSkin{standard} does not support these options,
+The skin \refSkin{standard} does not support these options,
but most other skins, e.\,g.\ \refSkin{enhanced}.
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.technical.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.technical.tex
index 1e6960ffd2..a9fbc31bb2 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.technical.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.technical.tex
@@ -62,13 +62,6 @@ option from the core package has to be set.
\clearpage
-\begin{docTcbKey}{graphical environment}{=\meta{name}}{no default, initially \texttt{pgfpicture}}
- Sets the graphical environment for the |tcolorbox| to \meta{name}.
- Feasible values are |pgfpicture| and |tikzpicture| or environments which
- inherit from one of these two. This key is set by a \refKey{/tcb/skin} and
- may seldom be used directly.
-\end{docTcbKey}
-
The skin of a |tcolorbox| is drawn by up to four \emph{engines}.
Afterwards, the text content is drawn which is not part of a skin.
The four steps are:
@@ -85,18 +78,6 @@ The four steps are:
by \refKey{/tcb/title engine}.
\end{enumerate}
-%Every engine for the up to four steps can be set to one of the following types:
-%\begin{enumerate}
-%\item\docValue{standard}: the original code from the core package.
-%\item\docValue{path}: a |tikz| path which can be controlled by options.
-%\item\docValue{pathfirst}: a |tikz| path which can be controlled by options.
-%\item\docValue{pathmiddle}: a |tikz| path which can be controlled by options.
-%\item\docValue{pathlast}: a |tikz| path which can be controlled by options.
-%\item\docValue{freelance}: arbitrary user code.
-%\item\docValue{spartan}: a quite spartan code.
-%\end{enumerate}
-%\clearpage
-
\begin{docTcbKey}{frame engine}{=\meta{name}}{no default, initially \texttt{standard}}
Sets the \emph{frame} drawing engine for a box to \meta{name}.
Typically, this key is set by a \refKey{/tcb/skin}.
@@ -644,7 +625,7 @@ These color names are
\item\docColor{tcbcolframe} set by \refKey{/tcb/colframe} (frame color)
\item\docColor{tcbcolback} set by \refKey{/tcb/colback} (background color)
\item\docColor{tcbcolbacktitle} set by \refKey{/tcb/colbacktitle} (background color of the title)
-\item\docColor{tcbcolbacklower} set by \refKey{/tcb/colbacklower} (skin dependend background color
+\item\docColor{tcbcolbacklower} set by \refKey{/tcb/colbacklower} (skin dependent background color
of the lower part; needs \mylib{skins} to be loaded)
\item\docColor{tcbcolupper} set by \refKey{/tcb/colupper} (text color upper part)
\item\docColor{tcbcollower} set by \refKey{/tcb/collower} (text color lower part)
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.theorems.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.theorems.tex
index 4884e85f57..f1a7be1ff4 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.theorems.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.theorems.tex
@@ -243,7 +243,7 @@ E&=mc^2 + \int_a^b x\, dx
\begin{docTcbKey}{separator sign}{=\meta{sign}}{no default, initially |:|}
The given \meta{sign} is used inside the title text of a theorem
- as separater between display name combined with number and
+ as separator between display name combined with number and
the specific title text. It is omitted, if there is no specific title text.
\begin{dispExample}
@@ -706,91 +706,140 @@ created by hand or using \refCom{newtcbtheorem}.
\end{docTcbKey}
\clearpage
-\begin{docTcbKey}{ams align upper}{}{style, no value}
+\begin{docTcbKeys}[
+ doc parameter = ,
+ doc description = {style, no value},
+ ]
+ {
+ {
+ doc name = ams align upper,
+ },
+ {
+ doc name = ams align,
+ doc updated = 2024-06-27,
+ }
+ }
Adds an |amsmath| |align| environment to the start and end
of the upper part.
-\end{docTcbKey}
-
-\begin{docTcbKey}{ams align lower}{}{style, no value}
- Adds an |amsmath| |align| environment to the start and end
- of the lower part.
-\end{docTcbKey}
-
-\begin{docTcbKey}{ams align}{}{style, no value}
- Adds an |amsmath| |align| environment to the start and end
- of the upper \emph{and} lower part.
\begin{dispExample}
\begin{tcolorbox}[ams align,colback=yellow!10!white,colframe=red!50!black]
\sum\limits_{n=1}^{\infty} \frac{1}{n} &= \infty.\\
\int x^2 ~\text{d}x &= \frac13 x^3 + c.
\end{tcolorbox}
\end{dispExample}
-\end{docTcbKey}
-
-\begin{docTcbKey}{ams align* upper}{}{style, no value}
- Adds an |amsmath| |align*| environment to the start and end
- of the upper part.
-\end{docTcbKey}
+\begin{marker}
+ Boxes with \refKey{/tcb/ams align upper} or \refKey{/tcb/ams align}
+ cannot have a lower part!
+ For a lower part, use \refKey{/tcb/ams nodisplayskip upper} instead.
+\end{marker}
+\end{docTcbKeys}
-\begin{docTcbKey}{ams align* lower}{}{style, no value}
- Adds an |amsmath| |align*| environment to the start and end
+\begin{docTcbKey}{ams align lower}{}{style, no value}
+ Adds an |amsmath| |align| environment to the start and end
of the lower part.
\end{docTcbKey}
-\begin{docTcbKey}{ams align*}{}{style, no value}
+
+\begin{docTcbKeys}[
+ doc parameter = ,
+ doc description = {style, no value},
+ ]
+ {
+ {
+ doc name = ams align* upper,
+ },
+ {
+ doc name = ams align*,
+ doc updated = 2024-06-27,
+ }
+ }
Adds an |amsmath| |align*| environment to the start and end
- of the upper \emph{and} lower part.
+ of the upper part.
\begin{dispExample}
\begin{tcolorbox}[ams align*,colback=yellow!10!white,colframe=red!50!black]
\sum\limits_{n=1}^{\infty} \frac{1}{n} &= \infty.\\
\int x^2 ~\text{d}x &= \frac13 x^3 + c.
\end{tcolorbox}
\end{dispExample}
-\end{docTcbKey}
-
-\clearpage
-\begin{docTcbKey}{ams gather upper}{}{style, no value}
- Adds an |amsmath| |gather| environment to the start and end
- of the upper part.
-\end{docTcbKey}
+\begin{marker}
+ Boxes with \refKey{/tcb/ams align* upper} or \refKey{/tcb/ams align*}
+ cannot have a lower part!
+ For a lower part, use \refKey{/tcb/ams nodisplayskip upper} instead.
+\end{marker}
+\end{docTcbKeys}
-\begin{docTcbKey}{ams gather lower}{}{style, no value}
- Adds an |amsmath| |gather| environment to the start and end
+\begin{docTcbKey}{ams align* lower}{}{style, no value}
+ Adds an |amsmath| |align*| environment to the start and end
of the lower part.
\end{docTcbKey}
-\begin{docTcbKey}{ams gather}{}{style, no value}
+
+\clearpage
+\begin{docTcbKeys}[
+ doc parameter = ,
+ doc description = {style, no value},
+ ]
+ {
+ {
+ doc name = ams gather upper,
+ },
+ {
+ doc name = ams gather,
+ doc updated = 2024-06-27,
+ }
+ }
Adds an |amsmath| |gather| environment to the start and end
- of the upper \emph{and} lower part.
+ of the upper part.
\begin{dispExample}
\begin{tcolorbox}[ams gather,colback=yellow!10!white,colframe=red!50!black]
\sum\limits_{n=1}^{\infty} \frac{1}{n} = \infty.\\
\int x^2 ~\text{d}x = \frac13 x^3 + c.
\end{tcolorbox}
\end{dispExample}
-\end{docTcbKey}
-
-\begin{docTcbKey}{ams gather* upper}{}{style, no value}
- Adds an |amsmath| |gather*| environment to the start and end
- of the upper part.
-\end{docTcbKey}
+\begin{marker}
+ Boxes with \refKey{/tcb/ams gather upper} or \refKey{/tcb/ams gather}
+ cannot have a lower part!
+ For a lower part, use \refKey{/tcb/ams nodisplayskip upper} instead.
+\end{marker}
+\end{docTcbKeys}
-\begin{docTcbKey}{ams gather* lower}{}{style, no value}
- Adds an |amsmath| |gather*| environment to the start and end
+\begin{docTcbKey}{ams gather lower}{}{style, no value}
+ Adds an |amsmath| |gather| environment to the start and end
of the lower part.
\end{docTcbKey}
-\begin{docTcbKey}{ams gather*}{}{style, no value}
+\begin{docTcbKeys}[
+ doc parameter = ,
+ doc description = {style, no value},
+ ]
+ {
+ {
+ doc name = ams gather* upper,
+ },
+ {
+ doc name = ams gather*,
+ doc updated = 2024-06-27,
+ }
+ }
Adds an |amsmath| |gather*| environment to the start and end
- of the upper \emph{and} lower part.
+ of the upper part.
\begin{dispExample}
\begin{tcolorbox}[ams gather*,colback=yellow!10!white,colframe=red!50!black]
\sum\limits_{n=1}^{\infty} \frac{1}{n} = \infty.\\
\int x^2 ~\text{d}x = \frac13 x^3 + c.
\end{tcolorbox}
\end{dispExample}
-\end{docTcbKey}
+\begin{marker}
+ Boxes with \refKey{/tcb/ams gather* upper} or \refKey{/tcb/ams gather*}
+ cannot have a lower part!
+ For a lower part, use \refKey{/tcb/ams nodisplayskip upper} instead.
+\end{marker}
+\end{docTcbKeys}
+\begin{docTcbKey}{ams gather* lower}{}{style, no value}
+ Adds an |amsmath| |gather*| environment to the start and end
+ of the lower part.
+\end{docTcbKey}
\clearpage
\begin{docTcbKey}{ams nodisplayskip upper}{}{style, no value}
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.vignette.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.vignette.tex
index 733c356d8e..8ea72010fe 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.vignette.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.vignette.tex
@@ -140,7 +140,7 @@ is used internally.
\enlargethispage*{1cm}
-\begin{vigTcbKey}[][doc new=2016-04-22]{inside node}{=\meta{name}}{style, initally unset}
+\begin{vigTcbKey}[][doc new=2016-04-22]{inside node}{=\meta{name}}{style, initially unset}
Places the \refCom{tcbvignette} inside the node with the given \meta{name}.
The outer limits of the \emph{vignette} are adapted to the node geometry.
\begin{dispExample*}{sbs,righthand width=3cm,center lower}
@@ -154,7 +154,7 @@ is used internally.
\clearpage
-\begin{vigTcbKey}[][doc new=2016-04-22]{outside node}{=\meta{name}}{style, initally unset}
+\begin{vigTcbKey}[][doc new=2016-04-22]{outside node}{=\meta{name}}{style, initially unset}
Places the \refCom{tcbvignette} outside the node with the given \meta{name}.
The inner limits of the \emph{vignette} are adapted to the node geometry.
\begin{dispExample*}{sbs,righthand width=3cm,center lower}
@@ -167,7 +167,7 @@ is used internally.
\end{vigTcbKey}
-\begin{vigTcbKey}[][doc new=2016-04-22]{over node}{=\meta{name}}{style, initally unset}
+\begin{vigTcbKey}[][doc new=2016-04-22]{over node}{=\meta{name}}{style, initially unset}
Places the \refCom{tcbvignette} over the node with the given \meta{name}.
The outer limits of the \emph{vignette} are adapted to the node geometry, but
are shifted to the outside by \refKey{/tcb/vig/over node offset}.
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.pdf b/macros/latex/contrib/tcolorbox/tcolorbox.pdf
index a7499395e4..3054aff591 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.pdf
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.pdf
Binary files differ
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.sty b/macros/latex/contrib/tcolorbox/tcolorbox.sty
index be2dc7e19b..23f0d51569 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.sty
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.sty
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 6.2.0 (2024/01/10)
+%% The LaTeX package tcolorbox - version 6.3.0 (2024/07/10)
%% tcolorbox.sty: Text color boxes
%%
%% -------------------------------------------------------------------------------------------
@@ -17,11 +17,12 @@
%%
%% This work consists of all files listed in README
%%
-\NeedsTeXFormat{LaTeX2e}[2021-11-15]
-\ProvidesPackage{tcolorbox}[2024/01/10 version 6.2.0 text color boxes]
-\def\tcb@version{6.2.0}
+\NeedsTeXFormat{LaTeX2e}[2023-11-01]
+\ProvidesPackage{tcolorbox}[2024/07/10 version 6.3.0 text color boxes]
+\def\tcb@version{6.3.0}
-\RequirePackage{pgf}[2008/01/15]
+%\RequirePackage{pgf}[2008/01/15]
+\RequirePackage{tikz}[2023/01/15]
\RequirePackage{verbatim}[2003/08/22]
\RequirePackage{environ}[2013/04/01]
\RequirePackage{etoolbox}[2011/01/03]
@@ -57,6 +58,7 @@
\ExplSyntaxOn
\bool_new:N \l__tcobox_prevent_init_overwrite_bool
+\bool_new:N \l__tcobox_savebox_construction_bool
\box_new:N \l__tcobox_tmpa_box
\dim_new:N \l__tcobox_tmpa_dim
\fp_new:N \l__tcobox_tmpa_fp
@@ -561,7 +563,7 @@
toggle left and right/evenpage/.code={\let\tcb@lrtoggle=\tcb@lrtoggle@evenpage\tcbset{check odd page}},
toggle left and right/forced/.code={\let\tcb@lrtoggle=\tcb@lrtoggle@forced},
toggle left and right/.default=evenpage,
- graphical environment/.store in=\kvtcb@graphenv,
+ graphical environment/.style=,% deprecated
%
frame engine/.is choice,
frame engine/standard/.style={frame code=\tcb@drawframe@standard},
@@ -1003,22 +1005,13 @@
IfBooleanF/.code~n~args={2}{\IfBooleanF{#1}{\pgfkeysalso{#2}}},
}
-\IfFormatAtLeastTF{2023-06-01}
- {
- \def\tcb@set@parbox@indent@{
- \exp_args:Nne \hook_gput_next_code:nn {para/begin}
- { \__tcobox_set_parbox_indent:n { \thetcolorboxnumber } }
- \let\tcb@set@parbox@indent\@empty
- }
- }
- {
- % Note: To be removed in future
- \def\tcb@set@parbox@indent@{
- \vspace{-\parskip}
- \noindent
- \let\tcb@set@parbox@indent\@empty
- }
- }
+
+\def\tcb@set@parbox@indent@{
+ \exp_args:Nne \hook_gput_next_code:nn {para/begin}
+ { \__tcobox_set_parbox_indent:n { \thetcolorboxnumber } }
+ \let\tcb@set@parbox@indent\@empty
+}
+
\cs_new_protected:Npn \__tcobox_set_parbox_indent:n #1
{
@@ -1027,12 +1020,20 @@
{ \int_compare_p:nNn { #1 } = { \thetcolorboxnumber } }
% and if inside a "tcb@savebox" env (upper or lower part is non-empty),
% hence not at the time of using saved \tcb@upperbox or \tcb@lowerbox
- { \cs_if_exist_p:N \tcbbreak }
+ { \l__tcobox_savebox_construction_bool }
{
\OmitIndent
}
}
+
+\def\tcb@set@savebox@construction@true
+ {
+ \bool_set_true:N \l__tcobox_savebox_construction_bool
+ }
+\bool_set_false:N \l__tcobox_savebox_construction_bool
+
+
\ExplSyntaxOff
\def\tcb@parbox@true@indent{}%
@@ -1045,6 +1046,7 @@
\let\tcb@parboxrestore=\@parboxrestore
\def\tcb@parbox@false@settings{%
+ \@nobreakfalse%
\let\par\@@par%
\linewidth\hsize%
\@totalleftmargin\z@%
@@ -1082,6 +1084,7 @@
\reserved@a
\@endpefalse%
\global\@newlistfalse%
+ \tcb@set@savebox@construction@true%
\let\tcbbreak\@@par%
\csname tcb@parbox@use@\kvtcb@parbox\endcsname%
\tcb@minipage{#2}%
@@ -2025,17 +2028,42 @@
\fi%
}
-\def\tcb@drawing@env@begin{%
- \csname tcb@before@\tcb@split@state\endcsname%
- \begin{\kvtcb@graphenv}%
- \tcb@bbdraw%
- \tcb@apply@graph@patches%
-}
-\def\tcb@drawing@env@end{%
- \end{\kvtcb@graphenv}%
- \csname tcb@after@\tcb@split@state\endcsname%
-}
+\let\tcb@tikz@option@hook\@empty
+\let\tcb@tikz@begin@hook\@empty
+\let\tcb@tikz@end@hook\@empty
+
+\ExplSyntaxOn
+
+\NewSocket{tagsupport/tcb/drawing/begin}{0}
+\NewSocket{tagsupport/tcb/drawing/end}{0}
+\NewSocketPlug{tagsupport/tcb/drawing/begin}{suspend}
+ {\tag_mc_end_push:\tag_mc_begin:n{artifact}}
+\NewSocketPlug{tagsupport/tcb/drawing/end}{resume}
+ {\tag_mc_end:\tag_mc_begin_pop:n{}}
+\AssignSocketPlug{tagsupport/tcb/drawing/begin}{suspend}
+\AssignSocketPlug{tagsupport/tcb/drawing/end}{resume}
+
+\NewDocumentEnvironment{ tcb@drawing }{ }
+ {
+ \use:c{ tcb@before@\tcb@split@state }
+ \exp_last_unbraced:NnNo \begin{tikzpicture}[\tcb@tikz@option@hook]
+ \UseTaggingSocket{tcb/drawing/begin}
+ \SuspendTagging{tcb/drawing}
+ \tcb@tikz@begin@hook
+ \tcb@bbdraw
+ \tcb@apply@graph@patches
+ }
+ {
+ \tcb@tikz@end@hook
+ \ResumeTagging{tcb/drawing}
+ \UseTaggingSocket{tcb/drawing/end}
+ \end{tikzpicture}
+ \use:c{ tcb@after@\tcb@split@state }
+ }
+
+\ExplSyntaxOff
+
\def\tcb@set@normal@unbroken@beforeafter{%
\let\tcb@before@unbroken=\kvtcb@beforebox%
@@ -2077,7 +2105,8 @@
\tcb@ch%
\tcbdimto\tcb@innerheight{\tcb@height-\kvtcb@top@rule-\kvtcb@bottom@rule-\tcb@h@padtitle}%
\tcbdimto\tcbtextheight{\tcb@innerheight-\kvtcb@boxsep*2-\kvtcb@top-\kvtcb@bottom}%
- \tcb@drawing@env@begin%
+ \begin{tcb@drawing}%
+ %\tcb@drawing@env@begin%
\pgfsetbaseline{\the\dimexpr\kvtcb@baseline-\kvtcb@bbbottom\relax}%
\tcb@extensions@preframe%
% draw frame and interior
@@ -2097,7 +2126,8 @@
\tcb@tdraw@upper%
\iftcb@hasLower\tcb@tdraw@lower\fi%
\tcb@extensions@final%
- \tcb@drawing@env@end%
+ %\tcb@drawing@env@end%
+ \end{tcb@drawing}%
}
\let\tcb@drawcolorbox@standalone=\tcb@drawcolorbox
@@ -2255,6 +2285,9 @@
}
\def\tcb@proc@counter@auto#1{%
+ \ifcsdef{c@tcb@cnt@#1}
+ {\tcb@error{Auto counter for environment '#1' already defined}{}}
+ {}%
\newcounter{tcb@cnt@#1}%
\csxdef{tcb@cnt@#1}{tcb@cnt@#1}%
\tcb@proc@counter@autoanduse{#1}%
@@ -2297,6 +2330,33 @@
\ExplSyntaxOn
+\prg_new_conditional:Npnn \__tcobox_if_single_cs:n #1 { p, TF }
+ {
+ \bool_lazy_and:nnTF
+ { \tl_if_single_p:n { #1 } }
+ { \token_if_cs_p:N #1 }
+ { \prg_return_true: }
+ { \prg_return_false: }
+ }
+
+\msg_new:nnn { tcolorbox } { invalid-box-name }
+ {
+ Invalid~box~name~`` \tl_to_str:n {#1} ''.~
+ A~single~command~is~expected~after~space~trimming.~
+ I'll~drop~this~box~definition.
+ }
+
+\cs_new:Npn \__tcobox_set_backslash_removed:Nn #1#2
+ {
+ \__tcobox_if_single_cs:nTF { #2 }
+ {
+ \tl_set:Ne #1 { \exp_last_unbraced:Ne \cs_to_str:N { \tl_trim_spaces:n { #2 } } }
+ }
+ {
+ \msg_error:nnn { tcolorbox } { invalid-box-name } { #2 }
+ }
+ }
+
\cs_new:Npn \__tcobox_process_newtcolorbox:nn #1#2
{
\bool_lazy_and:nnF
@@ -2312,14 +2372,6 @@
}
-\cs_new:Npn \__tcobox_set_backslash_removed:Nn #1#2
- {
- \tl_set:Nn #1 { #2 }
- \tl_trim_spaces:N #1
- \tl_set:Ne #1 { \exp_last_unbraced:NV \cs_to_str:N #1 }
- }
-
-
\NewDocumentCommand \__tcobox_new_tcolorbox:w { m +O{} >{\TrimSpaces} m o +o +m }
{
\__tcobox_process_newtcolorbox:nn { #2 }{ #3 }
@@ -2740,7 +2792,7 @@
\tcb@new@skin{standard}{frame engine=standard,interior titled engine=standard,
interior engine=standard,segmentation engine=standard,title engine=standard,
- graphical environment=pgfpicture,geometry nodes=false,
+ geometry nodes=false,
set@extensions@preframe=,set@extensions@postframe={\tcb@apply@overlay},set@extensions@final=,%
set@outerboundary=\tcb@boundaryframe@standard,%
shape@of@skin=unbroken,
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.tex b/macros/latex/contrib/tcolorbox/tcolorbox.tex
index b7c1742391..c60eb4acfa 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.tex
@@ -1,5 +1,5 @@
% \LaTeX-Main\
-%% The LaTeX package tcolorbox - version 6.2.0 (2024/01/10)
+%% The LaTeX package tcolorbox - version 6.3.0 (2024/07/10)
%% tcolorbox.tex: Manual
%%
%% -------------------------------------------------------------------------------------------
@@ -25,6 +25,18 @@
% arara: pdflatex: { shell: yes, synctex: yes }
% arara: pdflatex: { shell: yes, synctex: yes }
%
+%\DocumentMetadata{
+% lang = en,
+% pdfversion = 2.0,
+% pdfstandard = ua-2,
+% pdfstandard = a-4f,
+% testphase =
+% {
+% phase-III,
+% firstaid
+% },
+% %uncompress,
+%}
\PassOptionsToPackage{pdftex,bookmarks,raiselinks,pageanchor,hyperindex,colorlinks,pdfusetitle,pdfpagelabels}{hyperref}
\documentclass[a4paper,11pt]{ltxdoc}
@@ -51,8 +63,8 @@
\setlength{\bibitemsep}{\smallskipamount}
\addbibresource{tcolorbox.doc.bib}
-\def\version{6.2.0}%
-\def\datum{2024/01/10}%
+\def\version{6.3.0}%
+\def\datum{2024/07/10}%
\makeindex
\hypersetup{
@@ -68,7 +80,7 @@
%\geometry{showframe}
%\tcbset{draftmode}
\tcbset{/tcb/external/-}% for final run
-%\includeonly{tcolorbox.doc.initoptions,tcolorbox.doc.index}
+%\includeonly{tcolorbox.doc.coreoptions}
%\hypersetup{colorlinks=false}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/macros/latex/contrib/telprint/README.md b/macros/latex/contrib/telprint/README.md
new file mode 100644
index 0000000000..de7d729ad6
--- /dev/null
+++ b/macros/latex/contrib/telprint/README.md
@@ -0,0 +1,13 @@
+# telprint package for LaTeX
+
+Version: 2024-07-26 v1.12
+
+Format German phone numbers
+
+## Copyright (C)
+* 1996, 1997, 2004-2008 Heiko Oberdiek
+* 2016-2024 Oberdiek Package Support Group
+
+
+## License
+LATEX Project Public License, version 1.3c or later.
diff --git a/macros/latex/contrib/oberdiek/telprint.dtx b/macros/latex/contrib/telprint/telprint.dtx
index 57152c6651..74bb22ea8a 100644
--- a/macros/latex/contrib/oberdiek/telprint.dtx
+++ b/macros/latex/contrib/telprint/telprint.dtx
@@ -1,13 +1,13 @@
% \iffalse meta-comment
%
% File: telprint.dtx
-% Version: 2016/05/16 v1.11
+% Version: 2024-07-26 v1.12
% Info: Format German phone numbers
%
% Copyright (C)
% 1996, 1997, 2004-2008 Heiko Oberdiek
-% 2016-2019 Oberdiek Package Support Group
-% https://github.com/ho-tex/oberdiek/issues
+% 2016-2024 Oberdiek Package Support Group
+% https://github.com/ho-tex/telprint/issues
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either
@@ -23,7 +23,7 @@
%
% The Current Maintainers of this work are
% Heiko Oberdiek and the Oberdiek Package Support Group
-% https://github.com/ho-tex/oberdiek/issues
+% https://github.com/ho-tex/telprint/issues
%
% The Base Interpreter refers to any `TeX-Format',
% because some files are installed in TDS:tex/generic//.
@@ -34,8 +34,8 @@
% telprint-test1.tex.
%
% Distribution:
-% CTAN:macros/latex/contrib/oberdiek/telprint.dtx
-% CTAN:macros/latex/contrib/oberdiek/telprint.pdf
+% CTAN:macros/latex/contrib/telprint/telprint.dtx
+% CTAN:macros/latex/contrib/telprint/telprint.pdf
%
% Unpacking:
% (a) If telprint.ins is present:
@@ -56,7 +56,7 @@
% use A4 as paper format:
% \PassOptionsToClass{a4paper}{article}
%
-% Programm calls to get the documentation (example):
+% Program calls to get the documentation (example):
% pdflatex telprint.dtx
% makeindex -s gind.ist telprint.idx
% pdflatex telprint.dtx
@@ -64,9 +64,9 @@
% pdflatex telprint.dtx
%
% Installation:
-% TDS:tex/generic/oberdiek/telprint.sty
-% TDS:doc/latex/oberdiek/telprint.pdf
-% TDS:source/latex/oberdiek/telprint.dtx
+% TDS:tex/generic/telprint/telprint.sty
+% TDS:doc/latex/telprint/telprint.pdf
+% TDS:source/latex/telprint/telprint.dtx
%
%<*ignore>
\begingroup
@@ -83,7 +83,7 @@
\input docstrip.tex
\Msg{************************************************************************}
\Msg{* Installation}
-\Msg{* Package: telprint 2016/05/16 v1.11 Format German phone numbers (HO)}
+\Msg{* Package: telprint 2024-07-26 v1.12 Format German phone numbers (HO)}
\Msg{************************************************************************}
\keepsilent
@@ -95,11 +95,11 @@
This is a generated file.
Project: telprint
-Version: 2016/05/16 v1.11
+Version: 2024-07-26 v1.12
Copyright (C)
1996, 1997, 2004-2008 Heiko Oberdiek
- 2016-2019 Oberdiek Package Support Group
+ 2016-2024 Oberdiek Package Support Group
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either
@@ -115,7 +115,7 @@ This work has the LPPL maintenance status "maintained".
The Current Maintainers of this work are
Heiko Oberdiek and the Oberdiek Package Support Group
-https://github.com/ho-tex/oberdiek/issues
+https://github.com/ho-tex/telprint/issues
The Base Interpreter refers to any `TeX-Format',
@@ -132,9 +132,9 @@ and the derived files
\generate{%
\file{telprint.ins}{\from{telprint.dtx}{install}}%
\file{telprint.drv}{\from{telprint.dtx}{driver}}%
- \usedir{tex/generic/oberdiek}%
+ \usedir{tex/generic/telprint}%
\file{telprint.sty}{\from{telprint.dtx}{package}}%
-% \usedir{doc/latex/oberdiek/test}%
+% \usedir{doc/latex/telprint/test}%
% \file{telprint-test1.tex}{\from{telprint.dtx}{test1}}%
}
@@ -162,7 +162,7 @@ and the derived files
%<*driver>
\NeedsTeXFormat{LaTeX2e}
\ProvidesFile{telprint.drv}%
- [2016/05/16 v1.11 Format German phone numbers (HO)]%
+ [2024-07-26 v1.12 Format German phone numbers (HO)]%
\documentclass{ltxdoc}
\usepackage{holtxdoc}[2011/11/22]
\usepackage[ngerman,english]{babel}
@@ -177,9 +177,9 @@ and the derived files
% \GetFileInfo{telprint.drv}
%
% \title{The \xpackage{telprint} package}
-% \date{2016/05/16 v1.11}
+% \date{2024-07-26 v1.12}
% \author{Heiko Oberdiek\thanks
-% {Please report any issues at \url{https://github.com/ho-tex/oberdiek/issues}}}
+% {Please report any issues at \url{https://github.com/ho-tex/telprint/issues}}}
%
% \maketitle
%
@@ -397,7 +397,7 @@ and the derived files
\fi
\expandafter\x\csname ver@telprint.sty\endcsname
\ProvidesPackage{telprint}%
- [2016/05/16 v1.11 Format German phone numbers (HO)]%
+ [2024-07-26 v1.12 Format German phone numbers (HO)]%
% \end{macrocode}
%
% \subsection{Catcodes}
@@ -467,7 +467,11 @@ and the derived files
% \begin{macro}{\telspace}
% \begin{macrocode}
\DeclareRobustCommand*{\telspace}[1]{\def\TELspace{#1}}
-\telspace{{}$\,${}}
+\ifcsname LaTeXReleaseInfo\endcsname
+ \telspace{\,}
+\else
+ \telspace{{}$\,${}}
+\fi
% \end{macrocode}
% \end{macro}
% \begin{macro}{\telhyphen}
@@ -615,30 +619,10 @@ and the derived files
% \paragraph{Package.} This package is available on
% CTAN\footnote{\CTANpkg{telprint}}:
% \begin{description}
-% \item[\CTAN{macros/latex/contrib/oberdiek/telprint.dtx}] The source file.
-% \item[\CTAN{macros/latex/contrib/oberdiek/telprint.pdf}] Documentation.
-% \end{description}
-%
-%
-% \paragraph{Bundle.} All the packages of the bundle `oberdiek'
-% are also available in a TDS compliant ZIP archive. There
-% the packages are already unpacked and the documentation files
-% are generated. The files and directories obey the TDS standard.
-% \begin{description}
-% \item[\CTANinstall{install/macros/latex/contrib/oberdiek.tds.zip}]
+% \item[\CTAN{macros/latex/contrib/telprint/telprint.dtx}] The source file.
+% \item[\CTAN{macros/latex/contrib/telprint/telprint.pdf}] Documentation.
% \end{description}
-% \emph{TDS} refers to the standard ``A Directory Structure
-% for \TeX\ Files'' (\CTANpkg{tds}). Directories
-% with \xfile{texmf} in their name are usually organized this way.
%
-% \subsection{Bundle installation}
-%
-% \paragraph{Unpacking.} Unpack the \xfile{oberdiek.tds.zip} in the
-% TDS tree (also known as \xfile{texmf} tree) of your choice.
-% Example (linux):
-% \begin{quote}
-% |unzip oberdiek.tds.zip -d ~/texmf|
-% \end{quote}
%
% \subsection{Package installation}
%
@@ -655,9 +639,9 @@ and the derived files
% \begin{quote}
% \def\t{^^A
% \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}}
-% telprint.sty & tex/generic/oberdiek/telprint.sty\\
-% telprint.pdf & doc/latex/oberdiek/telprint.pdf\\
-% telprint.dtx & source/latex/oberdiek/telprint.dtx\\
+% telprint.sty & tex/generic/telprint/telprint.sty\\
+% telprint.pdf & doc/latex/telprint/telprint.pdf\\
+% telprint.dtx & source/latex/telprint/telprint.dtx\\
% \end{tabular}^^A
% }^^A
% \sbox0{\t}^^A
@@ -836,6 +820,9 @@ and the derived files
% \item
% Documentation updates.
% \end{Version}
+% \begin{Version}{2024-07-26 v1.12}
+% \item Avoid math in \cs{telspace} for better tagging support.
+% \end{Version}
% \end{History}
%
% \PrintIndex
diff --git a/macros/latex/contrib/oberdiek/telprint.pdf b/macros/latex/contrib/telprint/telprint.pdf
index f8027491c8..49a2968f35 100644
--- a/macros/latex/contrib/oberdiek/telprint.pdf
+++ b/macros/latex/contrib/telprint/telprint.pdf
Binary files differ
diff --git a/macros/latex/contrib/texvc/Makefile b/macros/latex/contrib/texvc/Makefile
new file mode 100644
index 0000000000..d32d473d3b
--- /dev/null
+++ b/macros/latex/contrib/texvc/Makefile
@@ -0,0 +1,17 @@
+PACKAGE = texvc
+all: $(PACKAGE).pdf
+
+$(PACKAGE).sty: $(PACKAGE).dtx $(PACKAGE).ins
+ pdflatex $(PACKAGE).ins
+
+$(PACKAGE).idx: $(PACKAGE).dtx $(PACKAGE).sty
+ pdflatex $(PACKAGE).dtx
+
+$(PACKAGE).ind: $(PACKAGE).idx $(PACKAGE).sty
+ makeindex -s gind.ist $(PACKAGE).idx
+
+$(PACKAGE).gls: $(PACKAGE).idx $(PACKAGE).sty
+ makeindex -s gglo.ist -o $(PACKAGE).gls $(PACKAGE).glo
+
+$(PACKAGE).pdf: $(PACKAGE).dtx $(PACKAGE).sty $(PACKAGE).ind $(PACKAGE).gls
+ pdflatex $(PACKAGE).dtx
diff --git a/macros/latex/contrib/texvc/texvc.dtx b/macros/latex/contrib/texvc/texvc.dtx
index 429a1a5e6e..7309d0266f 100644
--- a/macros/latex/contrib/texvc/texvc.dtx
+++ b/macros/latex/contrib/texvc/texvc.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 2015 by Moritz Schubotz
+% Copyright (C) 2015-2018 by Moritz Schubotz
% -----------------------------------
%
% This file may be distributed and/or modified under the
@@ -22,7 +22,7 @@
%<package>\NeedsTeXFormat{LaTeX2e}[2005/12/01]
%<package>\ProvidesPackage{texvc}
%<*package>
-[2018/03/04 v1.1 Bugfixes]
+[2020/02/09 v1.2 Document deprecations]
%</package>
%<package>
%<package>\RequirePackage{amsmath}
@@ -42,7 +42,7 @@
%<package>
%<*driver>
\documentclass{ltxdoc}
-\usepackage{texvc}[2018/03/04]
+\usepackage{texvc}[2020/02/09]
\EnableCrossrefs
\CodelineIndex
\RecordChanges
@@ -75,19 +75,21 @@
%
% \changes{v1.0}{2015/11/09}{Initial version}
% \changes{v1.1}{2018/03/04}{Fix bug with varcoppa, document usage of or}
+% \changes{v1.2}{2020/02/09}{Document deprecations}
% \GetFileInfo{texvc.sty}
-%
+% \newcommand{\deprecated}{\emph{This command is deprecated.}}
% \DoNotIndex{\newcommand,\newenvironment}
%
% \title{The \textsf{texvc} package\thanks{This document
% corresponds to \textsf{texvc}~\fileversion,
% dated \filedate.}}
-% \author{Moritz Schubotz \\ \texttt{moritz.schubotz@uni-konstanz.de}}
-%
+% \author{Moritz Schubotz \\ \texttt{moritz.schubotz@fiz-karlsruhe.de}}
+% \date{\filedate}
+%
% \maketitle
%
% \begin{abstract}
-% This package provides all\footnote{The command \texttt{\textbackslash or} is only availible if custom code is copied into your \LaTeX-file. See page \pageref{cmd.or} for details.} LaTeX command availible in MediaWiki.
+% This package provides all\footnote{The command \texttt{\textbackslash or} is only available if custom code is copied into your \LaTeX-file. See page \pageref{cmd.or} for details.} LaTeX command available in MediaWiki.
% This includes several packages like amsmath, and adds some specific
% commands such as \texttt{\textbackslash Reals}.
% \end{abstract}
@@ -95,7 +97,7 @@
% \section{Provided Macros}
%
% \subsection{Arrows}
-% The first group of MediaWiki coustom command (other\_delimiters2) defines short hand notations for some arrorws.
+% The first group of MediaWiki custom command (other\_delimiters2) defines short hand notations for some arrows.
%
% \DescribeMacro{\darr} Short hand notation for arrow $\downarrow.$
%
@@ -122,12 +124,12 @@
%
% \subsection{Literals}
%
-% The second group of MediaWiki coustom commands (other\_litereals3) defines short hand notations for some literals.
+% The second group of MediaWiki custom commands (other\_litereals3) defines short hand notations for some literals.
%
-% \DescribeMacro{\C} Short hand notation for literal $\mathbb{C}.$
+% \DescribeMacro{\C} Short hand notation for literal $\mathbb{C}.$ \deprecated
%
%
-% \DescribeMacro{\H} Short hand notation for literal $\mathbb{H}.$
+% \DescribeMacro{\H} Short hand notation for literal $\mathbb{H}.$ \deprecated
%
%
% \DescribeMacro{\N} Short hand notation for literal $\mathbb{N}.$
@@ -151,10 +153,10 @@
% \DescribeMacro{\Alpha} Short hand notation for literal $\mathrm{A}.$
%
%
-% \DescribeMacro{\and} Short hand notation for literal $\land.$
+% \DescribeMacro{\and} Short hand notation for literal $\land.$ \deprecated
%
%
-% \DescribeMacro{\ang} Short hand notation for literal $\angle.$
+% \DescribeMacro{\ang} Short hand notation for literal $\angle.$ \deprecated
%
%
% \DescribeMacro{\Beta} Short hand notation for literal $\mathrm{B}.$
@@ -277,10 +279,10 @@
% \DescribeMacro{\Omicron} Short hand notation for literal $\mathrm{O}.$
%
%
-% \DescribeMacro{\or} Short hand notation for literal $\lor.$
+% \DescribeMacro{\or} Short hand notation for literal $\lor.$ \deprecated
%
%
-% \DescribeMacro{\part} Short hand notation for literal $\partial.$
+% \DescribeMacro{\part} Short hand notation for literal $\partial.$ \deprecated
%
%
% \DescribeMacro{\plusmn} Short hand notation for literal $\pm.$
@@ -342,7 +344,21 @@
%
% \DescribeMacro{\Zeta} Short hand notation for literal $\mathrm{Z}.$
%
-%
+% \section{Deprecations}
+% According to the decision of \emph{Wikimedia Community User Group Math}\footnote{\url{https://meta.wikimedia.org/w/index.php?oldid=19705444}} the following macros have been deprecated\footnote{See \url{https://phabricator.wikimedia.org/T197842} for the discussion.}:
+% \begin{enumerate}
+% \item \verb|$|
+% \item \verb|%|
+% \item \verb|\and|
+% \item \verb|\or|
+% \item \verb|\part|
+% \item \verb|\ang|
+% \item \verb|\C|
+% \item \verb|\H|
+% \item \verb|\bold|
+% \item \verb|\Bbb|
+% \end{enumerate}
+% The commands 1,2,4,9,10 have never been part of this package, but were available from within Wikipedia.
% \StopEventually{}
%
% \section{Implementation}
diff --git a/macros/latex/contrib/texvc/texvc.ins b/macros/latex/contrib/texvc/texvc.ins
index 5343a6a94f..0c12dd61eb 100644
--- a/macros/latex/contrib/texvc/texvc.ins
+++ b/macros/latex/contrib/texvc/texvc.ins
@@ -1,42 +1,42 @@
-%%
-%% Copyright (C) 2015 by Moritz Schubotz
-%%
-%% This file 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.
-%%
-\input docstrip.tex
-\keepsilent
-\usedir{tex/latex/texvc}
-\askforoverwritefalse
-\preamble
-This is a generated file.
-Copyright (C) 2015 by Moritz Schubotz
-This file 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.
-\endpreamble
-\generate{\file{texvc.sty}{\from{texvc.dtx}{package}}}
-\Msg{*********************************************************}
-\Msg{*}
-\Msg{* To finish the installation you have to move the}
-\Msg{* following file into a directory searched by TeX:}
-\Msg{*}
-\Msg{* \space\space texvc.sty}
-\Msg{*}
-\Msg{* To produce the documentation run the file texvc.dtx}
-\Msg{* through LaTeX.}
-\Msg{*}
-\Msg{* Happy TeXing!}
-\Msg{*********************************************************}
-\endbatchfile
+%%
+%% Copyright (C) 2015-2018 by Moritz Schubotz
+%%
+%% This file 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.
+%%
+\input docstrip.tex
+\keepsilent
+\usedir{tex/latex/texvc}
+\askforoverwritefalse
+\preamble
+This is a generated file.
+Copyright (C) 2015-2018 by Moritz Schubotz
+This file 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.
+\endpreamble
+\generate{\file{texvc.sty}{\from{texvc.dtx}{package}}}
+\Msg{*********************************************************}
+\Msg{*}
+\Msg{* To finish the installation you have to move the}
+\Msg{* following file into a directory searched by TeX:}
+\Msg{*}
+\Msg{* \space\space texvc.sty}
+\Msg{*}
+\Msg{* To produce the documentation run the file texvc.dtx}
+\Msg{* through LaTeX.}
+\Msg{*}
+\Msg{* Happy TeXing!}
+\Msg{*********************************************************}
+\endbatchfile
diff --git a/macros/latex/contrib/texvc/texvc.pdf b/macros/latex/contrib/texvc/texvc.pdf
index 7269b865f2..f431f01829 100644
--- a/macros/latex/contrib/texvc/texvc.pdf
+++ b/macros/latex/contrib/texvc/texvc.pdf
Binary files differ
diff --git a/macros/latex/contrib/thermodynamics/thermodynamics.dtx b/macros/latex/contrib/thermodynamics/thermodynamics.dtx
index 972a2b6b0c..98fdb4c3de 100644
--- a/macros/latex/contrib/thermodynamics/thermodynamics.dtx
+++ b/macros/latex/contrib/thermodynamics/thermodynamics.dtx
@@ -1,5 +1,5 @@
% \iffalse meta-comment
-% File: thermodynamics.dtx Copyright (C) 2022-2023 Karl D. Hammond
+% File: thermodynamics.dtx Copyright (C) 2022-2024 Karl D. Hammond
%
% Karl D. Hammond
% Chemical Engineering Program
@@ -24,11 +24,7 @@
% \fi
%
% \iffalse
-%^^A FIXME: need correct date of release once you update this
-%^^X\GetIdInfo $Id: thermodynamics.dtx 2.00 2023/11/16 Karl D. Hammond <hammondkd@missouri.edu> $
-%^^X {thermodynamics notation}
%<*driver>
-%^^X\ProvidesFile{\ExplFileName}
\ProvidesFile{thermodynamics.dtx}
%</driver>
%
@@ -36,9 +32,8 @@
%<package>\RequirePackage{expl3}
%<package>\ProvidesPackage{thermodynamics}
%<*package>
- [2023/12/05 v2.01 thermodynamics notation]
+ [2024/06/14 v2.02 thermodynamics notation]
%</package>
-%^^X {\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
%<*driver>
\documentclass[11pt,letterpaper]{ltxdoc}
%^^X\bool_set_false:N \l__codedoc_allow_indexing_bool
@@ -46,18 +41,26 @@
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{amsmath}
+\usepackage{mathrsfs}
\usepackage{pxfonts}
\usepackage{array}
\usepackage{booktabs}
\usepackage{footmisc}
+\usepackage{pdflscape}
+\usepackage{supertabular}
+\usepackage{graphicx} %^^A for \reflectbox
+\usepackage{xcolor}
\usepackage[labelfont=bf,labelsep=period,font=small]{caption}
+\usepackage{emf}
\GetFileInfo{thermodynamics.dtx}
\usepackage{thermodynamics}[\filedate\space\fileversion]
+\DeclareMathAlphabet{\mathdutchcal}{U}{dutchcal}{m}{n}
\DisableCrossrefs
\CodelineIndex
\PageIndex
\CodelineNumbered
\RecordChanges
+%^^X\OnlyDescription
%^^X Preparing to use l3doc.cls, but it's not quite mature yet....
%^^A\DisableDocumentation
%^^A\DisableImplementation
@@ -65,13 +68,30 @@
\let\tn\cs
\let\env\texttt
\let\pkg\textsf
+\IndexPrologue{\section*{Index}%
+ \markboth{Index}{Index}%
+ Numbers written in italics refer to the page
+ where the corresponding entry is described;
+ numbers underlined refer to the
+ %^^A\ifcodeline@index
+ code line of the
+ %^^A\fi
+ definition.%^^A; numbers in Roman refer to the
+ %^^A\ifcodeline@index
+ %^^A code lines
+ %^^A\else
+ %^^A pages
+ %^^A\fi
+ %^^Awhere the entry is used.
+ }
+\makeatother
\begin{document}
\DocInput{thermodynamics.dtx}
\end{document}
%</driver>
% \fi
%
-% \CheckSum{2387}
+% \CheckSum{3537}
%
% \CharacterTable
% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -91,7 +111,7 @@
%
% \changes{v1.00}{2022/04/29}{Initial public release}
% \changes{v2.00}{2023/11/16}{Revision to use \LaTeX3
-% (\pkg{expl3}/\pkg{xparse}) syntax layer}
+% (\pkg{expl3}/\pkg{xparse}) syntax layer.}
%
% \newcommand*{\setmarginparsize}[1]
% {\bgroup
@@ -248,7 +268,10 @@
% Using the default package options, the above renders as
% \[ \Ht \quad \Hm \quad \hat H \quad \Hpm{i}. \]
% In addition, the properties in
-% Table~\ref{table:conveniences} are defined for convenience.
+% Table~\ref{table:conveniences} are defined for convenience. A more
+% comprehensive list, including how those properties are represented in the
+% various textbook-related options supported by this package, are shown in
+% Appendix~\ref{sec:symbols}.
%
% \DescribeMacro{\Ut}
% \DescribeMacro{\Um}
@@ -455,8 +478,8 @@
% \texttt{\textbackslash cP\_i\^{}\textbackslash std} renders as
% $C_{P,i}^\circ$, also as expected. You can also reverse it:
% \texttt{\textbackslash cP\^{}\textbackslash std\_i} becomes
-% $C^\circ_{P,i}$.}
-% \label{table:conveniences}
+% $C^\circ_{P,i}$.}\relax
+% \label{table:conveniences}\relax
%^^A TODO The \leavevmode macro here is to prevent whitespace from building
%^^A up due to a bug in old versions of hypdoc. It should be harmless to
%^^A leave it in there, but consider removing it at some point.
@@ -471,16 +494,21 @@
% \SpecialMacroIndex{\heatcapacitysymbol}\relax
% \SpecialMacroIndex{\compressibilitysymbol}\relax
% \SpecialMacroIndex{\expansivitysymbol}\relax
-% \SpecialMacroIndex{\amix}\relax
% \SpecialMacroIndex{\fpure}\relax
% \SpecialMacroIndex{\fmix}\relax
% \SpecialMacroIndex{\fsat}\relax
% \SpecialMacroIndex{\phipure}\relax
% \SpecialMacroIndex{\phimix}\relax
% \SpecialMacroIndex{\phisat}\relax
+% \SpecialMacroIndex{\actrel}\relax
% \SpecialMacroIndex{\Psat}\relax
% \SpecialMacroIndex{\Pvap}\relax
% \SpecialMacroIndex{\sat}\relax
+% \SpecialMacroIndex{\std}\relax
+% \SpecialMacroIndex{\Pstd}\relax
+% \SpecialMacroIndex{\Cstd}\relax
+% \SpecialMacroIndex{\fstd}\relax
+% \SpecialMacroIndex{\mustd}\relax
% \SpecialMacroIndex{\Henryrat}\relax
% \SpecialMacroIndex{\Henrymol}\relax
% \SpecialMacroIndex{\gammarat}\relax
@@ -495,10 +523,12 @@
% \SpecialMacroIndex{\fusion}\relax
% \SpecialMacroIndex{\vaporization}\relax
% \SpecialMacroIndex{\sublimation}\relax
-% \begin{minipage}{\linewidth}
-% \small
+% \SpecialMacroIndex{\Epot}\relax
+% \SpecialMacroIndex{\xrxn}\relax
+% \begin{minipage}{\linewidth}\relax
+% \footnotesize
% \addtolength{\tabcolsep}{-2.75pt}\relax
-% \addtolength{\extrarowheight}{0.75ex}\relax
+% \addtolength{\extrarowheight}{0.50ex}\relax
% \renewcommand*{\footnoterule}{\vskip-1.5ex}\relax
% \begin{tabular}{l l l l l}
% \toprule
@@ -509,59 +539,65 @@
% Extensive and specific (per-unit-mass) versions are available
% as \cs{cPt} and \cmd\cPs, respectively, with similar macros for the
% isochoric heat capacity.\label{fn:cP}}
-% & \(cP\) & \(\displaystyle T\Partial{\Sm}{T}{P}\)
-% & \cmd\heatcapacitysymbol \\[2.0ex]
+% & \(\cP\) & \(\displaystyle T\Partial{\Sm}{T}{P}\)
+% & \cmd\heatcapacitysymbol \\[1.75ex]
% Isochoric heat capacity & \verb"\cV"\footref{fn:cP} & \(\cV\)
% & \(\displaystyle T\Partial{\Sm}{T}{\Vm}\)
-% & \cmd\heatcapacitysymbol \\[2.0ex]
+% & \cmd\heatcapacitysymbol \\[1.75ex]
% Isothermal compressibility & \cmd\kappaT & $\kappaT$
% & \(\displaystyle -\frac{1}{\Vm} \Partial{\Vm}{P}{T} \)
-% & \cmd\compressibilitysymbol \\[2.0ex]
+% & {\footnotesize\cmd\compressibilitysymbol} \\[1.75ex]
% Isentropic compressibility & \cmd\kappaS & $\kappaS$
% & \(\displaystyle -\frac{1}{\Vm} \Partial{\Vm}{P}{\Sm}\)
-% & \cmd\compressibilitysymbol \\[2.0ex]
+% & {\footnotesize\cmd\compressibilitysymbol} \\[1.75ex]
% Isobaric expansivity & \cmd\alphaP & $\alphaP$
% & \(\displaystyle \frac{1}{\Vm} \Partial{\Vm}{T}{P}\)
-% & \cmd\expansivitysymbol \\[2.0ex]
+% & \cmd\expansivitysymbol \\[1.75ex]
% Isentropic expansivity & \cmd\alphaS & $\alphaS$
% & \(\displaystyle \frac{1}{\Vm} \Partial{\Vm}{T}{\Sm}\)
-% & \cmd\expansivitysymbol \\[2.0ex]
+% & \cmd\expansivitysymbol \\[1.75ex]
% Joule--Thomson coeff. & \cmd\muJT & $\muJT$
% & \(\displaystyle \Partial{T}{P}{\Hm}\) & \cmd\JTsymbol \\
% Pure fugacity & \cmd\fpure & $f$ & $\phi P$ \\
-% Mixture fugacity & \cmd\fmix & $\fmix$
-% & $\fmix_i = x_i\phimix_i P$ \\[0.5ex]
% Saturation fugacity & \cmd\fsat & $\fsat$
% & $\phisat \Psat$ & \cmd\sat \\
+% Mixture fugacity & \cmd\fmix & $\fmix$
+% & $\fmix_i = x_i\phimix_i P$ \\
% Pure fugacity coefficient & \cmd\phipure & $\phipure$ &
% \multicolumn{2}{l}{\( \phipure_i
% = \exp\left(\frac{1}{RT}\int_0^P \Vm_i(T,p)
% - \frac{RT}{p}\,dp\right) \)} \\
+% Saturation fugacity coeff.\ & \cmd\phisat & $\phisat$
+% & $\phipure(T,\Psat)$ & \cmd\sat \\
% Mixture fugacity coeff.\ & \cmd\phimix & $\phimix$
% & \multicolumn{2}{l}{\( \phimix_i
% = \exp\left(\frac{1}{RT}\int_0^P \Vpm{i}(T,p,\allXs)
-% - \frac{RT}{p}\,dp\right) \)} \\
+% - \frac{RT}{p}\,dp\right) \)} \\[1.25ex]
+% Absolute activity & \cmd\actabs & $\actabs$
+% & \multicolumn{2}{l}{\(\actabs_i = \exp(\mu_i/{RT})\)} \\
+% Relative activity & \cmd\actrel & $\actrel$
+% & \multicolumn{2}{l}{\(\actrel_i = \exp\left(\frac{\mu_i - \mu_i^\std}{RT}\right) = \frac{\fmix_i(T,P,\allXs)}{\fstd_i(T)}\)} \\
% Henry's constant (rational) & \cmd\Henryrat & $\Henryrat$
% & $\gamma_i^\infty f_i$ \\
-% Henry's constant (molal) & \cmd\Henrymol & $\Henrymol$
+% Henry's constant (molal) & \cmd\Henrymol & $\Henrymol$
% & $M_s \gamma_i^\infty f_i$ \\
% Rational activity coeff.\ & \cmd\gammarat & $\gammarat$
% & $\gamma/\gamma^\infty$ \\
% Molal activity coeff.\ & \cmd\gammamol & $\gammamol$
% & $x_s \gamma/\gamma^\infty$ \\
-% Saturation fugacity coeff.\ & \cmd\phisat & $\phisat$
-% & $\phipure(T,\Psat)$ & \cmd\sat \\
-% Saturation pressure & \cmd\Psat & $\Psat$ && \cmd\sat \\
-% Vapor pressure & \cmd\Pvap & \multicolumn{3}{l}{Currently a synonym
-% for \cs{Psat}\footnote{If you want \cs{Pvap} to produce $P^\text{vap}$
-% instead of $\Psat$, you should redefine the \cs{sat} macro.}} \\
+% Saturation pressure & \cmd\Psat\footnote{\cs{Pvap} is a synonym for
+% \cs{Psat}; if you want it to produce $P^\text{vap}$, you should
+% redefine the \cs{sat} macro} & $\Psat$ && \cmd\sat \\
% Standard state & \cmd\std\footnote{Typical usage would be
% \texttt{\$\cs{mu}\_i = \cs{mu}\textasciicircum\cs{std}\_i
% + RT \cs{log} a\_i\$},
% yielding $\mu_i = \mu_i^\std + RT \log a_i$.} & $\std$ \\
% Standard pressure & \cmd\Pstd & $\Pstd$ & & \cs{std} \\
-% Standard fugacity & \cmd\fstd & $\fstd$ & $\fpure(T,\Pstd)$ & \cs{std}
-% \\
+% Standard molality & \cmd\Cstd & $\Cstd$ & & \cs{std} \\
+% Standard fugacity & \cmd\fstd & $\fstd$
+% & $\fstd_i = \fpure_i(T,\Pstd,x^\std)$ & \cs{std} \\
+% Standard chemical potential & \cmd\mustd & $\mustd$
+% & $\mustd_i = \mu(T,\Pstd,x^\std)$ & \cs{std} \\
% Change on mixing & \cmd\Deltamix\footnote{The usual usage would be
% something like
% \texttt{\$\cs{Deltamix}\cs{Vm}\textasciicircum\cs{IGM} = 0\$}.\relax
@@ -577,6 +613,9 @@
% & $\Deltavap M$ & $M^V - M^L$ & \cmd\vaporization \\
% Change on subliming & \cmd\Deltasub\footref{fn:Deltausage}
% & $\Deltasub M$ & $M^V - M^S$ & \cmd\sublimation \\
+% Electric potential & \cmd\Epot & $\Epot$
+% & $-n_e\mathscr{F}\Deltarxn\Gm$ \\
+% Extent of reaction & \cmd\xrxn & $\xrxn$ & & \\
% \bottomrule
% \end{tabular}
% \end{minipage}
@@ -687,14 +726,21 @@
% \cs{expansivitysymbol}, which is done automatically by some of the
% package options that create notation specific to a particular textbook.
%
-% \subsubsection{Joule--Thomson Coefficients}
+% \subsubsection{Joule--Thomson Coefficient}
% \changes{v2.00}{2023/11/16}{Added \cs{muJT} to represent Joule--Thomson
% coefficients (which have different notation across textbooks).}
% \DescribeMacro{\muJT}
-% The Joule--Thomson coefficient is produced with \cs{muJT}, which be default
+% The Joule--Thomson coefficient is produced with \cs{muJT}, which by default
% is rendered $\muJT$. Some books call this coefficient $\alpha_H$; this is
% handled automatically for books of which the package author is aware.
%
+% \subsubsection{Chemical Potentials}
+% \DescribeMacro{\mu}
+% \DescribeMacro{\muit}
+% The chemical potential is always produced by the macro \cs{mu}. Some
+% textbook-related options use \(\muup\) instead of \(\mu\) for chemical
+% potential; if so, the macro \cs{muit} will always produce \(\muit\).
+%
% \subsubsection{Fugacities and Fugacity Coefficients}
% \DescribeMacro{\fpure}
% \DescribeMacro{\fmix}
@@ -704,13 +750,13 @@
% fugacity, so it is recommended to use the macro \cs{fpure} to denote the
% pure-component fugacity and \cs{fmix} to denote the mixture fugacity.
% Similarly, the pure-component fugacity coefficient should be generated with
-% \cs{phipure}, and that in the mixture should be \cs{phimix}.
+% \cs{phipure}, and that in a mixture should be \cs{phimix}.
%
% For example, the following markup is an example of a common equation in
% mixture thermodynamics:
% \begin{verbatim}
% \[ \fmix_j = x_j \phimix_j P = x_j \gamma_j \fpure_j
-% = x_j \gamma_j \phipure_j P. \]
+% = x_j \gamma_j \phipure_j P. \]
%\end{verbatim}
% With the default package options, this produces
% \[ \fmix_j = x_j \phimix_j P = x_j \gamma_j \fpure_j
@@ -726,15 +772,19 @@
% = x_j \gamma_j \phi_j P. \]
%
% \subsubsection{Activity Coefficients and Henry's Constants}
+% \DescribeMacro{\gamma}
+% \DescribeMacro{\gammait}
% \DescribeMacro{\gammarat}
% \DescribeMacro{\gammamol}
% \DescribeMacro{\Henryrat}
% \DescribeMacro{\Henrymol}
% The activity coefficient based on the Lewis--Randall rule can be generated
-% with \cs{gamma}, as usual. The Henry's Law activity coefficients should be
-% produced with \cs{gammarat} (rational basis) and \cs{gammamol} (molal basis).
-% There are also macros to generate the Henry's law constants for both the
-% rational basis (\cs{Henryrat}) and the molal basis (\cs{Henrymol}).
+% with \cs{gamma}, as usual. The symbol \cs{gammait} is provided just in case
+% \cs{gamma} has been redefined by a package option and you want to use the
+% original symbol for some reason. The Henry's Law activity coefficients should
+% be produced with \cs{gammarat} (rational basis) and \cs{gammamol} (molal
+% basis). There are also macros to generate the Henry's law constants for both
+% the rational basis (\cs{Henryrat}) and the molal basis (\cs{Henrymol}).
% These are interrelated:
% \begin{verbatim}
% \[ \fmix_i = x_i \gamma_i \fpure_i = x_i \gammarat_i \Henryrat_i
@@ -754,7 +804,6 @@
% Note that some books (e.g., |ElliottLira|) prefer the atmospheric chemistry
% convention for the molal basis, namely
% \[ \fmix_i = x_i \gamma_i \fpure_i = x_i \gammarat_i \Henryrat_i
-%%^^A = C_i \gammamol_i \Henrymol_i
% = C_i \gammamol_i / K_{H,i} \]
% (that is, using $1/K_{H,i}$ in place of $\Henrymol_i$).
% Unfortunately, this makes it impossible to change symbols without any edits
@@ -780,29 +829,36 @@
% \verb"\RenewDocumentCommand{\sat}{}{{\text{vap}}}".
% This is done automatically using package option |Sandler|.
%
-% \subsubsection{Standard States}
+% \subsubsection{Standard States and Chemical Reactions}
% \DescribeMacro{\std}
% \DescribeMacro{\Pstd}
+% \DescribeMacro{\Cstd}
% \DescribeMacro{\fstd}
+% \DescribeMacro{\mustd}
% The symbol $\circ$ (\cs{circ}) is used by default for standard states.
% This is intended to be easy to change should the user want to replace
% $P^\circ$ with $P^\ominus$, say. This is accessed via the \cs{std} macro.
% The macro \cs{Pstd} is defined as |P^\std| for convenience to denote
-% standard pressures, and \cs{fstd} is defined for standard fugacities so as
-% to ease implementation across textbooks.
+% standard pressure, \cs{Cstd} is defined as |C^\std| to denote standard
+% molality, \cs{fstd} is defined for standard fugacities, and \cs{mustd} is
+% defined for standard chemical potentials so as to ease implementation across
+% textbooks.
%
% The usual usage would be something like this:
% \begin{verbatim}
-% \[ \Deltarxn\Gm = \sumall_i \nu_i \mu_i = \sumall_i \left[ \nu_i \mu^\std_i
+% \[ \Deltarxn\Gm = \sumall_i \nu_i \mu_i = \sumall_i \left[ \nu_i \mustd_i
% + \nu_i RT \log\left(\frac{\fmix_i}{\fstd_i}\right) \right]
% = \Deltarxn\Gm^\std + RT \log\left[\prodall_i a_i^{\nu_i} \right] \],
%\end{verbatim}
% which produces
-% \[ \Deltarxn\Gm = \sumall_i \nu_i \mu_i = \sumall_i \left[ \nu_i \mu^\std_i
+% \[ \Deltarxn\Gm = \sumall_i \nu_i \mu_i = \sumall_i \left[ \nu_i \mustd_i
% + \nu_i RT \log\left(\frac{\fmix_i}{\fstd_i}\right) \right]
% = \Deltarxn\Gm^\std + RT \log\left[\prodall_i a_i^{\nu_i} \right] \]
% with the default settings.
%
+% The extent of reaction is generated by the macro \cs{xrxn}, which by default
+% is printed as \(\xrxn\).
+%
% \subsubsection{Changes on Mixing, Reaction, Fusion, Vaporization, and
% Sublimation}
% \DescribeMacro{\Deltamix}
@@ -989,9 +1045,10 @@
% \Vpm_i = \Partialinline{\Vt}{\Nt_i}{T,P,\allNsbut{i}}
% = \PartialMixSecondinline{\Gt}{\Nt_i}{P}{T,\allNsbut{i}}
% = \PartialMixSecondinline{\Gt}{P}{\Nt_i}{T,\allNsbut{i}}
-% = \Partialinline{\Gpm_i}{P}{T,\allNs}.
+% = \Partialinline{\Gpm_i}{P}{T,\allNs}
% \label{eq:Vpm-inline}
% \end{equation}
+% with the default options.
% \pagebreak[0]%
%
% \subsubsection{Delimiter Sizing}
@@ -1014,16 +1071,16 @@
% = \Partial*{\Gpm_i}{P}{T,\allNs}
% = \PartialBigg*{\Gpm_i}{P}{T,\allNs}
% = RT\Partial*{\log\fmix_i}{P}{T,\allNs}
-% = RT\,\PartialBigg*{\log\fmix_i}{P}{T,\allNs}
-% = RT\,\Partialbigg{\log\fmix_i}{P}{T,\allNs} \],
+% = RT\PartialBigg*{\log\fmix_i}{P}{T,\allNs}
+% = RT\Partialbigg{\log\fmix_i}{P}{T,\allNs} \],
%\end{verbatim}
% which typesets as
% \[ \Vpm{i} = \Partial*{\Vt}{\Nt_i}{T,P,\allNsbut{i}}
% = \Partial*{\Gpm{i}}{P}{T,\allNs}
% = \PartialBigg*{\Gpm{i}}{P}{T,\allNs}
% = RT\Partial*{\log\fmix_i}{P}{T,\allNs}
-% = RT\,\PartialBigg*{\log\fmix_i}{P}{T,\allNs}
-% = RT\,\Partialbigg{\log\fmix_i}{P}{T,\allNs}. \]
+% = RT\PartialBigg*{\log\fmix_i}{P}{T,\allNs}
+% = RT\Partialbigg{\log\fmix_i}{P}{T,\allNs}. \]
% Note that a similar effect---possibly with other side effects---can be
% achieved with \pkg{amsmath}'s \tn{smash} command, which has the effect of
% removing all vertical space associated with a particular character.
@@ -1097,7 +1154,7 @@
% \[ \Vpm{k} = \Partial{\Vt}{\Nt_k}{T,P,\allNsbut{k}} \]
% \end{thermomolesrange}
% or
-% \[ \Vpm{k} = \left(\frac{\partial\Vt}{\partial\Nt_k}\right)_{T,P,\Nt_j[k]} \]
+% \[ \Vpm{k} = \left(\frac{\partial\Vt}{\partial\Nt_k}\right)_{T,P,\Nt_j[k]}, \]
% to mean partial derivatives that hold the number of moles of each species
% constant \emph{except} the one being changed.
% Similarly, a property determined with all mole fractions held
@@ -1301,8 +1358,7 @@
% represented, as shown in Table~\ref{table:extensive}.
% The default is \verb"intensive-plain", which (using the volume as an
% example) represents the total, molar, specific, and partial molar volumes,
-% respectively, as $\Vt,$ $\Vm,$ $\Vs,$ and $\Vpm{j},$
-% respectively.
+% respectively, as $\Vt,$ $\Vm,$ $\Vs,$ and $\Vpm{j}$.
%
% For example, the definition of the partial molar enthalpy would be different
% depending on which set of notation is used. The markup
@@ -1391,6 +1447,37 @@
% \cs{Sm} will be $S$; and inside \env{thermointensivesubscript},
% \cs{St} will be $S$ and \cs{Sm} will be $s$.
%
+% \subsubsection{Options Affecting Partial Molar Properties}
+% There are two options that change how partial molar properties are typeset.
+% For option |longpm| (the default), the subscript and superscript are
+% considered part of the symbol, producing something like $\HEpm_i$.
+% The option |shortpm| makes it display as
+% \begin{thermoshortpm}
+% $\HEpm_i$.
+% \end{thermoshortpm}
+% The |shortpm| option is the default for several textbook-related options.
+%
+% \DescribeEnv{thermolongpm}
+% \DescribeEnv{thermoshortpm}
+% It is possible to change partial molar notation locally---this could be
+% useful if you have a very, very long superscript or subscript and the
+% default option looks silly, say. The environment \env{thermolongpm} sets
+% the style equivalent to the |longpm| option, while the \env{thermoshortpm}
+% environment sets the local style equivalent to the |shortpm| option.
+% For example,
+% \begin{verbatim}
+% \[ \Spm_i = \Spm_i^\IGM + \SRpm_i
+% \begin{thermoshortpm}
+% = \Spm_i^\IGM + \SRpm_i
+% \end{thermoshortpm} \]
+%\end{verbatim}
+% produces
+% \[ \Spm_i = \Spm_i^\IGM + \SRpm_i
+% \begin{thermoshortpm}
+% = \Spm_i^\IGM + \SRpm_i,
+% \end{thermoshortpm} \]
+% assuming the default options are loaded.
+%
% \subsubsection{Options Affecting Partial Derivatives}
% There are several options that change how partial derivatives are rendered.
% First are the options that affect the delimiters. We will use the following
@@ -1431,7 +1518,7 @@
% \end{thermosubscripts}\relax \]
% and instead renders them
% \[ \begin{thermoNOsubscripts}
-% \Partial{\Vm}{P}{T} \qquad \text{(\texttt{nosubscripts} option)},
+% \Partial{\Vm}{P}{T} \qquad \text{(\texttt{nosubscripts} option)}.
% \end{thermoNOsubscripts} \]
% Combined with \verb"plain-derivatives", this would give
% \[ \begin{thermoplain}
@@ -1457,6 +1544,7 @@
%
% \DescribeEnv{thermoparentheses}
% \DescribeEnv{thermobrackets}
+% \DescribeEnv{thermobraces}
% \DescribeEnv{thermobar}
% \DescribeEnv{thermoplain}
% If you want to use parentheses \emph{locally}, even though your overall
@@ -1577,96 +1665,229 @@
% Times, Palatino, Bitstream Charter, Garamond, and Utopia, but other typefaces
% may require a manual redefinition.
%
-% \subsubsection{Options for Particular Textbooks}
+% \subsubsection{Options for Particular Textbooks} \label{sec:textbooks}
% There are several options that load package options and/or redefine
-% particular commands to match the notation in a particular textbook. So far
-% the following textbooks are supported:
+% particular commands to match the notation in a particular textbook.
+% A table showing how various properties are typeset using each of these
+% packages is included in Appendix~\ref{sec:symbols}.
+% So far, the following textbooks are supported:
% \begin{description}
% \item[Bejan] Notation used by Bejan, \emph{Advanced Engineering
-% Thermodynamics}, Third Edition. Wiley: Hoboken, 2006. Loads non-default
-% package options \verb"EUFGHAN", \verb"intensive-lowercase", and
-% \verb"delta". Also swaps the notation for specific and
-% intensive properties and redefines \cs{cV}, \cs{cVs}, \cs{cVt},
-% \cs{expansivitysymbol}, and \cs{ncomponents} to match his notation.
+% Thermodynamics}, Third Edition. Wiley: Hoboken, 2006.
% \item[CBK] Notation used by \c Cengel, Boles, and Kano\u glu,
% \emph{Thermodynamics: An Engineering Approach}, Ninth Edition.
-% McGraw Hill: Singapore, 2020. Loads the non-default package options
-% \verb"EUAGHAN" and \verb"intensive-lowercase"; also redefines
-% partial molar, specific, and molar properties' notation to fit theirs,
-% and redefines the internal symbol for pressure, \cs{Deltarxn},
-% \cs{compressibilitysymbol}, and \cs{expansivitysymbol} to fit their
-% usage. Their prodigal symbols for specific and total volume, which appear
-% to be from the font ITC Benguiat Gothic Standard Book Oblique, are not
-% supported.
+% McGraw Hill: Singapore, 2020. Their symbols for specific and
+% total volume, which appear to be from the font ITC Benguiat Gothic (and
+% reasonably approximated by Krub Italic), are not directly
+% supported.\footnote{%
+% \providecommand*{\XeTeX}{X\kern-0.125em \lower 0.5ex
+% \hbox{\reflectbox{\hbox{E}}}\kern-0.125em \TeX}
+% If you have ITC Benguiat Gothic installed and want to use it for the
+% volume symbol, you can use it through \XeTeX; try this:\\
+% \texttt{\textbackslash usepackage\{fontspec\}} \\
+% \texttt{\textbackslash setsansfont\{ITC Benguiat Gothic\}} \\
+% \texttt{\textbackslash ExplSyntaxOn} \\
+% \texttt{\mbox{}~~\textbackslash tl\_gset:Nn
+% \textbackslash g\_\_thermodynamics\_volume\_symbol
+% \{\{\textbackslash text\{\textbackslash
+% sffamily V\}\}\}} \\
+% \texttt{\textbackslash ExplSyntaxOff}
+% \label{fn:XeTeX}}
% \item[ElliottLira] Notation used by Elliott and Lira, \emph{Introductory
% Chemical Engineering Thermodynamics}, Second Edition. Prentice Hall:
-% Upper Saddle River, 2012. Loads the default package options and
-% redefines \cs{IG}, \cs{IGM}, \cs{allcomponents}, and \cs{Deltarxn} to fit
-% their notation.
+% Upper Saddle River, 2012. \emph{Note: these authors use
+% Henry's Law (molal basis) in the form \(y_i P = m_i/K_{H,i}\), which is
+% inconsistent with their notation for the rational basis, so that macro
+% is left set to its default.}
+% \item[KlotzRosenberg] Notation used by Klotz and Rosenberg, \emph{Chemical
+% Thermodynamics: Basic Concepts and Methods}, Seventh Edition.
+% Wiley: Hoboken, 2008.
% \item[Koretsky] Notation used by Koretsky, \emph{Engineering and Chemical
-% Thermodynamics}, Second Edition, Wiley: New Caledonia, 2013.
-% Loads the non-default package options \verb"EUAGHAn", \verb"brackets",
-% \verb"intensive-lowercase", and \verb"delta"; modifies the
-% \verb"intensive-lowercase" defaults to make uppercase partial molar
-% properties to match Koretsky's notation and redefines
-% \cs{expansivitysymbol}, \cs{IS}, \cs{residual}, \cs{IG}, \cs{IGM},
-% \cs{Deltafus}, \cs{Deltasub}, \cs{Deltavap}, \cs{Henryrat},
-% \cs{gammarat}, \cs{Deltafus}, \cs{Deltavap}, and \cs{Deltasub} to match
-% his use. Also redefines the fugacity coefficients to use $\varphi$
-% instead of $\phi$.
+% Thermodynamics}, Second Edition. Wiley: New Caledonia, 2013.
+% \item[ModellReid] Alias for \verb"TesterModell" (the first and second
+% editions were by Modell and Reid; Reid died prior to the third edition).
% \item[MSBB] Notation used by Moran, Shapiro, Boettner, and Bailey,
% \emph{Fundamentals of Engineering Thermodynamics}, Eighth Edition.
-% Wiley: Kendallville, 2014. Loads the non-default package options
-% \verb"EUFGHAn", \verb"intensive-lowercase", and \verb"delta"; removes the
-% left parenthesis in partial derivatives and redefines \cs{IGM}, \cs{IG},
-% \cs{expansitivitysymbol}, \cs{allcomponents}, \cs{allbut}, \cs{Ft},
-% \cs{fmix}, and \cs{phimix}, as well as symbols for the Helmholtz free
-% energy and pressure, intensive and specific property notation, and
-% partial molar notation to fit their somewhat ill-advised notation.
+% Wiley: Kendallville, 2014.
% \item[Prausnitz] Notation used by Prausnitz, Lichtenthaler, and de Azevedo,
% \emph{Molecular Thermodynamics of Fluid-Phase Equilibria}, Third Edition,
-% Pearson, 1998. Loads the non-default package option
-% \verb"intensive-lowercase" and redefines \cs{fmix}, \cs{phimix},
-% \cs{fpure}, \cs{phipure}, \cs{Henryrat}, \cs{residual},
-% \cs{allcomponents}, and \cs{allbut} to fit their notation.
+% Pearson, 1998.
% \item[Sandler] Notation used by Sandler, \emph{Chemical, Biochemical, and
% Engineering Thermodynamics}, Fifth Edition. Wiley: Hoboken, 2017.
-% Loads non-default package options \verb"EUAGHaN" and
-% \verb"extensive-plain"; also redefines \cs{sat}, \cs{excess},
-% \cs{residual}, \cs{ncomponents}, \cs{fmix}, \cs{fstd}, \cs{phimix},
-% \cs{allcomponents}, \cs{IS}, \cs{Deltamix}, \cs{Deltarxn}, \cs{Deltasub},
-% \cs{Deltafus}, \cs{Deltavap}, and \cs{Henryrat}. Also redefines \cs{cV},
-% \cs{cP}, \cs{cVt}, and \cs{cPt}.
% \item[SVNAS] Notation used by Smith, Van Ness, Abbott, and Swihart,
% \emph{Introduction to Chemical Engineering Thermodynamics}, Ninth
-% Edition. McGraw-Hill: Boston, 2021. Loads the non-default package option
-% \verb"extensive-superscript" and redefines \cs{allcomponents},
-% \cs{allbut}, \cs{IG}, \cs{IGM}, \cs{IS}, \cs{expansivitysymbol}, and
-% \cs{Deltarxn} to fit their notation. The extensive heat capacities are
-% also redefined, as they do not use such an entity.
+% Edition. McGraw-Hill: Boston, 2021.
% \item[TesterModell] Notation used by Tester and Modell,
% \emph{Thermodynamics and Its Applications}, Third Edition, Prentice Hall:
-% Upper Saddle River, 1997. Loads the non-default package options
-% \verb"EUAGHaN" and \verb"delta"; also redefines \cs{ncomponents} to be
-% $n$ and redefines \cs{allcomponents}, \cs{allbut}, and \cs{allbutlastand}
-% to fit their (somewhat inconsistent) notation. Also redefines \cs{IG},
-% \cs{IGM}, \cs{IS}, \cs{excess}, \cs{reaction}, \cs{Henryrat},
-% \cs{Henrymol}, \cs{gammarat}, and \cs{gammamol} to fit their style.
+% Upper Saddle River, 1997.
% \item[Thompson] Notation used by Thompson, \emph{A Unified Introduction to
% Chemical Engineering Thermodynamics}, Stillwater Press: Orono, 2000.
-% Loads the non-default package options |EUAGHAn| and |delta|;
-% also redefines \cs{excess}, \cs{residual}, \cs{Henryrat}, \cs{Henrymol},
-% \cs{allcomponents}, \cs{ncomponents}, \cs{IS}, \cs{IG}, \cs{IGM},
-% \cs{fpure}, \cs{phipure}, \cs{mix}, \cs{Deltamix}, \cs{Deltarxn}, and
-% \cs{allbut} to match his notation, plus adjustments to intensive (molar)
-% properties. Note that he uses $c$, $\mathrm{c}$, $n_C$, and
-% $\mathrm{n}$ for the number of components in various places in the book;
-% I chose $c$ for the definition of \cs{ncomponents}, but it is impossible
-% to be completely consistent with his notation.
+% Note that he uses $c$, $\mathrm{c}$, $n_C$, and $\mathrm{n}$ for the
+% number of components in various places in the book; I chose $c$ for the
+% definition of \cs{ncomponents}, but it is impossible to be completely
+% consistent with his notation.
% \end{description}
% There may well be some inconsistencies between the notation in these books
% and the symbols used here. I will fix such inconsistencies as I become aware
% of them.
+%
+% \textbf{Important}: Some textbooks use symbols other than \(\mu\) for
+% chemical potential and \(\gamma\) for activity coefficients. For example,
+% |KlotzRosenberg| uses $\muup$ for the chemical potential and $\gammaup$
+% for the activity coefficient. In such cases,
+% the macro \verb"\mu" will produce whatever symbol \emph{is} used for the
+% chemical potential, and \verb"\gamma" will produce the activity coefficient.
+% The original symbols will still be available as \cs{gammait} and \cs{muit},
+% respectively.
+%
+% \appendix
+% \section{Notation Across Textbooks} \label{sec:symbols}
+% \changes{v2.02}{2024/06/14}{Improved consistency of package options for
+% textbooks and added a table of symbols organized by textbook option.}
+% Some of the textbooks supported by this package use multiple symbols for the
+% same quantity---for example, Sandler's textbook uses both \(P^\text{sat}\)
+% and \(P^\text{vap}\) for vapor (saturation) pressure, and Elliott and Lira
+% use both \(\Delta H^\circ\) and \(\Delta H_R^o\) for the standard enthalpy
+% of reaction. This package may only support one of the two in such cases.
+%
+% Table~\ref{table:textbooks} gives a description of each symbol supported
+% by the package, the corresponding command, and the way that command is
+% rendered using each of the textbook-related options in
+% Section~\ref{sec:textbooks}. Packages consisting of two names are shortened
+% to one name in the headers for space considerations.
+%
+% \NewDocumentCommand{\inherit}{m}{\textcolor{gray}{#1}}
+% \begin{landscape}\scriptsize
+% \tablehead{%
+% \toprule
+% Quantity & Macro & Default & Bejan & CBK & Elliott & Klotz
+% & Koretsky & MSBB & Prausnitz & Sandler & SVNAS & Modell & Thompson \\
+% \midrule
+% }
+% \tabletail{%
+% \midrule\multicolumn{13}{l}{\emph{continued on next page\dots}} \\
+% }
+% \tablelasttail{\bottomrule}
+% \tablecaption{How symbols are typeset for various textbooks.
+% Entries in \inherit{gray} indicate quantities that are not directly or
+% indirectly defined in a particular textbook and are therefore inherited
+% fromthe defaults.
+% \emph{Note: Options with two authors, such as \texttt{ElliottLira},
+% only include one name so as to fit on one page.}
+% \label{table:textbooks}}
+% \setlength{\extrarowheight}{3.5pt}%
+% \begin{mpsupertabular}{l l l l l l l l l l l l l l}
+% \# components & \verb"\ncomponents" & $\ncomponents$ & $n$ & $\inherit{\ncomponents}$ & $\inherit{\ncomponents}$ & $\inherit{\ncomponents}$ & $m$ & $\inherit{\ncomponents}$ & $m$ & $\mathcal{C}$ & $\inherit{\ncomponents}$ & $n$ & $c$ \\
+% activity (absolute) & \verb"\actabs_i" & $\actabs_i$ & $\inherit{\lambda_i}$ & $\inherit{\actabs_i}$ & $\inherit{\actabs_i}$ & $\inherit{\lambda_i}$ & $\inherit{\lambda_i}$ & $\inherit{\actabs_i}$ & $\inherit{\actabs_i}$ & $\inherit{\actabs_i}$ & $\inherit{\actabs_i}$ & $\inherit{\actabs_i}$ & $\inherit{\actabs_i}$ \\
+% activity (relative) & \verb"\actrel_i" & $\actrel_i$ & $\inherit{\actrel_i}$ & $\inherit{\actrel_i}$ & $a_i$ & $a_i$ & $\inherit{a_i}$ & $\inherit{\actrel_i}$ & $\mathdutchcal{a}_i$\relax
+% \footnote{The symbol $\mathdutchcal{a}$ requires the |dutchcal| fonts to be installed,
+% though the package itself is not loaded. This symbol is an approximation to the one
+% the book actually uses.} & $a_i$ & $a_i$ & $a_i$ & $\widehat a_i$ \\
+% activity coefficient (ordinary) & \verb"\gamma_i" & $\gamma_i$ & $\inherit{\gamma_i}$ & $\inherit{\gamma_i}$ & $\gamma_i$ & $\gammaup_i$ & $\gamma_i$ & $\inherit{\gamma_i}$ & $\gamma_i$ & $\gamma_i$ & $\gamma_i$ & $\gammaup_i$ & $\gamma_i$ \\
+% activity coefficient (Henry, rational) & \verb"\gammarat_i" & $\gammarat_i$ & $\inherit{\gammarat_i}$ & $\inherit{\gammarat_i}$ & $\gamma_i^\ast$ & $\gammaup_i$ & $\gamma_i^\text{Henry's}$ & $\inherit{\gammarat_i}$ & $\inherit{\gammarat_i}$ & $\gamma_i^\ast$ & $\inherit{\gammarat_i}$ & $\gammaup_i^{\ast\ast}$ & $\inherit{\gammarat_i}$ \\
+% activity coefficient (Henry, molal) & \verb"\gammamol_i" & $\gammamol_i$ & $\inherit{\gammamol_i}$ & $\inherit{\gammamol_i}$ & $\gamma_i^\square$ & $\gammaup_i$ & $\gamma_i^m$ & $\inherit{\gammamol_i}$ & $\inherit{\gammamol_i}$ & $\gamma_i^\square$ & $\gammarat_i$ & $\gammaup_i^\ast$ & $\inherit{\gammamol_i}$ \\
+% adiabatic compressibility & \multicolumn{13}{l}{\emph{See} isentropic compressibility} \\
+% adiabatic expansivity & \multicolumn{13}{l}{\emph{See} isentropic expansivity} \\
+% area (total) & \verb"\At" & $\At$ & $A$ & $A$ & $\inherit{\At}$ & $\inherit{a}$ & $A$ & $A$ & $\inherit{A}$ & $\inherit{a}$ & $\inherit{a^t}$ & {\large$\underline{a}$} & $\inherit{\mkern2mu\underline{\mkern-2mu\mathcal{A}\mkern-2mu}\mkern2mu}$ \\
+% chemical potential & \verb"\mu" & $\mu$ & $\mu$ & $\mu$ & $\mu$ & $\muup$ & $\mu$ & $\mu$ & $\mu$ & $\mu$ & $\mu$ & $\muup$ & $\mu$ \\
+% electric potential & \verb"\Epot" & $\Epot$ & $\inherit{\Epot}$ & $\inherit{\Epot}$ & $E$ & $\emf$\footnote{The
+% symbol $\emf$ requires the \pkg{emf} package. If that package is not
+% loaded, $\mathcal{E}$ is used instead.\label{fn:emf}}
+% & $E$ & $\inherit{\Epot}$ & $\emf$\footref{fn:emf} & $E$ & $E$ & $\exists$ & $E$ \\
+% electric potential (standard) & \verb"\Epot^\std" & $\Epot^\std$ & $\inherit{\Epot^\std}$ & $\inherit{\Epot^\std}$ & $E^\circ$ & $\emf^\circ$ & $E^o$ & $\inherit{\Epot^\std}$ & $\emf^0$ & $\inherit{E^\circ}$ & $E^\circ$ & $\exists^o$ & $E^\circ$ \\
+% energy (total) & \verb"\Et" & $\Et$ & $E$ & $E$ & $\inherit{\Et}$ & $\inherit{E}$ & $E$ & $E$ & $E$ & $\inherit{E}$ & $\inherit{E^t}$ & $\Et$ & $\inherit{\Et}$ \\
+% energy (molar) & \verb"\Em" & $\Em$ & $\overline{e}$ & $\overline{e}$ & $\inherit{\Em}$ & $\inherit{E_{\textrm{m}}}$ & $e$ & $\overline{e}$ & $\inherit{e}$ & \begin{thermoextensiveplain}$\inherit{\Em}$\end{thermoextensiveplain} & $\inherit{E}$ & $\Em$ & $\inherit{\Em}$ \\
+% energy (specific) & \verb"\Es" & $\Es$ & $e$ & $e$ & $\inherit{E}$ & $\inherit{\hat E}$ & $\hat e$ & $e$ & $\inherit{\hat e}$ & $\hat E$ & $\inherit{E}$ & $\Es$ & $\inherit{\Em}$ \\
+% enthalpy (total) & \verb"\Ht" & $\Ht$ & $H$ & $H$ & $\Ht$ & $H$ & $H$ & $H$ & $H$ & $H$ & $H^t$ & $\Ht$ & $\Ht$ \\
+% enthalpy (molar) & \verb"\Hm" & $\Hm$ & $\overline{h}$ & $\overline{h}$ & $H$ & $H_{\textrm{m}}$ & $h$ & $\overline{h}$ & $h$ & \begin{thermoextensiveplain}$\Hm$\end{thermoextensiveplain} & $H$ & $\Hm$ & $\Hm$ \\
+% enthalpy (specific) & \verb"\Hs" & $\Hs$ & $h$ & $h$ & $H$ & $\inherit{\Hs}$ & $\hat h$ & $h$ & $\inherit{\hat h}$ & $\hat H$ & $H$ & $\Hs$ & $\inherit{\Hs}$ \\
+% enthalpy (partial molar) of $i$ & \verb"\Hpm_i" & $\Hpm_i$ & $\inherit{\overline{h}_i}$ & $\widetilde{h}_i$ & $\overline{H}_i$ & $H_{\mathrm{m}i}$ & $\overline{H}_i$ & $\Hpm_i$ & $\overline{h}_i$ & \begin{thermoshortpm}$\Hpm_i$\end{thermoshortpm} & $\overline{H}_i$ & $\Hpm_i$ & $\Hpm_i$ \\
+% enthalpy of reaction & \verb"\Deltarxn\Hm" & $\Deltarxn\Hm$ & $\inherit{\Delta\overline{h}_\text{rxn}}$ & $\overline{h}_R$ & $\Delta H$ & $\Delta H_{\mathrm{m}}$ & $\Delta h_\text{rxn}$ & $\inherit{\Delta\overline{h}_\text{rxn}}$ & $\inherit{\Delta h_\text{rxn}}$ & \begin{thermoextensiveplain}$\Delta_{\text{rxn}}\Hm$\end{thermoextensiveplain} & $\Delta H$ & $\Delta H_{rx}$ & $\Delta H_R$ \\
+% enthalpy of fusion & \verb"\Deltafus\Hm" & $\Deltafus\Hm$ & $\overline{h}_{sf}$ & $\overline{h}_{sf}$ & $\Delta H^{fus}$ & $\Delta H_{\mathrm{m}}$ & $\Delta h_\text{fus}$ & $\inherit{\overline{h}^\text{fus}}$ & $\inherit{\Delta h^\text{fus}}$ & \begin{thermoextensiveplain}$\Delta_\text{fus}\Hm$\end{thermoextensiveplain} & $\Delta H^{sl}$ & $\inherit{\Deltafus H}$ & $\Delta H^{SL}$ \\
+% enthalpy of vaporization & \verb"\Deltavap\Hm" & $\Deltavap\Hm$ & $\overline{h}_{sf}$ & $\overline{h}_{fg}$ & $\Delta H^{vap}$ & $\Delta H_{\mathrm{m}}$ & $\Delta h_\text{vap}$ & $\inherit{\overline{h}^\text{vap}}$ & $\inherit{\Delta h^\text{vap}}$ & \begin{thermoextensiveplain}$\Delta_\text{vap}\Hm$\end{thermoextensiveplain} & $\Delta H^{vl}$ & $\inherit{\Deltavap H}$ & $\Delta H^{LV}$ \\
+% enthalpy of sublimation & \verb"\Deltasub\Hm" & $\Deltasub\Hm$ & $\overline{h}_{sg}$ & $\overline{h}_{sg}$ & $\inherit{\Delta H^{sub}}$ & $\Delta H_{\mathrm{m}}$ & $\Delta h_\text{sub}$ & $\inherit{\overline{h}^\text{sub}}$ & $\inherit{\Delta h^\text{sub}}$ & $\Delta_\text{sub}\Ht$ & $\Delta H^{vs}$ & $\inherit{\Deltasub H}$ & $\inherit{\Delta H^{SV}}$ \\
+% entropy (total) & \verb"\St" & $\St$ & $S$ & $S$ & $\St$ & $S$ & $S$ & $S$ & $S$ & $S$ & $S^t$ & $\St$ & $\St$ \\
+% entropy (molar) & \verb"\Sm" & $\Sm$ & $\overline{s}$ & $\overline{s}$ & $S$ & $S_{\mathrm{m}}$ & $s$ & $\overline{s}$ & $s$ & $\St$ & $S$ & $S$ & $S$ \\
+% entropy (specific) & \verb"\Ss" & $\Ss$ & $s$ & $s$ & $S$ & $\inherit{\Ss}$ & $\hat s$ & $s$ & $\inherit{\hat s}$ & $\hat S$ & $S$ & $\hat S$ & $\inherit{\Ss}$ \\
+% entropy (partial molar) of $i$ & \verb"\Spm_i" & $\Spm_i$ & $\overline{S}_i$ & $\widetilde{s}_i$ & $\overline{S}_i$ & $S_{\mathrm{m}i}$ & $\overline{S}_i$ & $\Spm_i$ & $\overline{s}_i$ & \begin{thermoshortpm}$\Spm_i$\end{thermoshortpm} & $\overline{S}_i$ & $\Spm_i$ & $\Spm_i$ \\
+% extent of reaction & \verb"\xrxn" & $\xrxn$ & $\zeta$ & $\inherit{\xrxn}$ & $\xi$ & $\xiup$ & $\xi$ & $\varepsilon$ & $\inherit{\xi}$ & $X$ & $\varepsilon$ & $\xiup$ & $\xi$ \\
+% fugacity of pure substance & \verb"\fpure" & $\fpure$ & $f$ & $\inherit{\fpure}$ & $f$ & $f$ & $f$ & $f$ & $f_\text{pure}$ & $f$ & $f$ & $f$ & $f$ \\
+% fugacity of pure $i$ & \verb"\fpure_i" & $\fpure_i$ & $\inherit{f_i^\bullet}$ & $\inherit{\fpure_i}$ & $f_i$ & $f_i^\bullet$ & $f_i$ & $f_i$ & $f_{\text{pure}\,i}$ & $f_i$ & $f_i$ & $f_i$ & $f_i^\bullet$ \\
+% fugacity of $i$ in mixture & \verb"\fmix_i" & $\fmix_i$ & $f_i$ & $\inherit{\fmix_i}$ & $\hat f_i$ & $f_i$ & $\hat f_i$ & $\bar f_i$ & $f_i$ & $\bar f_i$ & $\hat f_i$ & $\hat f_i$ & $\widehat{f}_i$ \\
+% fugacity at saturation & \verb"\fsat" & $\fsat$ & $\inherit{f^\sat}$ & $\inherit{\fsat}$ & $f^{sat}$ & $\inherit{f^\text{sat}}$ & $\inherit{f^\text{sat}}$ & $\inherit{f^\text{sat}}$ & $f^s_\text{pure}$ & $f^\text{sat}$ & $f^\text{sat}$ & $\inherit{\fsat}$ & $f^\text{sat}$ \\
+% fugacity coefficient of pure substance & \verb"\phipure" & $\phipure$ & $\inherit{\phi}$ & $\inherit{\phipure}$ & $\phi$ & $\gamma$ & $\varphi$ & $\inherit{\phi}$ & $\varphi_{\text{pure}}$ & $\phi$ & $\phi$ & $\phiup$ & $\phi$ \\
+% fugacity coefficient of pure $i$ & \verb"\phipure_i" & $\phipure_i$ & $\inherit{\phi_i^\bullet}$ & $\inherit{\phipure_i}$ & $\phi_i$ & $\gamma_i^\bullet$ & $\varphi_i$ & $\inherit{\phi_i}$ & $\varphi_{\text{pure}\,i}$ & $\phi_i$ & $\phi_i$ & $\phiup_i$ & $\phi_i^\bullet$ \\
+% fugacity coefficient of $i$ in mixture & \verb"\phimix_i" & $\phimix_i$ & $\inherit{\phi_i}$ & $\inherit{\phimix_i}$ & $\hat\phi_i$ & $\gamma_i$ & $\hat\varphi_i$ & $\bar\phi_i$ & $\varphi_i$ & $\bar\phi_i$ & $\hat\phi_i$ & $\hat\phiup_i$ & $\widehat{\phi}_i$ \\
+% fugacity coefficient at saturation & \verb"\phisat" & $\phisat$ & $\inherit{\phisat}$ & $\inherit{\phisat}$ & $\phi^{sat}$ & $\inherit{\gamma^\text{sat}}$ & $\varphi^\text{sat}$ & $\inherit{\phi^\text{sat}}$ & $\varphi^s$ & $\phi^\text{sat}$ & $\phi^\text{sat}$ & $\inherit{\phiup^\sat}$ & $\phi^\text{sat}$ \\
+% Gibbs free energy (total) & \verb"\Gt" & $\Gt$ & $G$ & $G$ & $\Gt$ & $G$ & $G$ & $G$ & $G$ & $G$ & $G^t$ & $\Gt$ & $\Gt$ \\
+% Gibbs free energy (molar) & \verb"\Gm" & $\Gm$ & $\overline{g}$ & $\overline{g}$ & $G$ & $G_{\mathrm{m}}$ & $g$ & $\overline{g}$ & $g$ & $\Gt$ & $G$ & $G$ & $G$ \\
+% Gibbs free energy (specific) & \verb"\Gs" & $\Gs$ & $g$ & $g$ & $G$ & $\inherit{\Gs}$ & $\hat g$ & $g$ & $\inherit{\hat g}$ & $\hat G$ & $G$ & $\Gs$ & $\inherit{\Gs}$ \\
+% Gibbs free energy (partial molar) & \verb"\Gpm_i" & $\Gpm_i$ & $\overline{G}_i$ & $\widetilde{g}_i$ & $\Gpm_i$ & $G_{\mathrm{m}i}$ & $\overline{G}_i$ & $\Gpm_i$ & $\partialmolar{g}_i$ & \begin{thermoshortpm}$\Gpm_i$\end{thermoshortpm} & $\Gpm_i$ & $\Gpm_i$ & $\partialmolar{G}_i$ \\
+% Gibbs free energy of mixing & \verb"\Deltamix\Gt" & $\Deltamix\Gt$ & $\inherit{\Deltamix G}$ & $\inherit{\Deltamix G}$ & $\Delta\Gt_\text{mix}$ & $\Delta G_\text{mix}$ & $\Delta G_\text{mix}$ & $\inherit{\Deltamix G}$ & $\Delta G_\text{mixing}$ & $\Delta_\text{mix}G$ & $\Delta G^t$ & $\Deltamix\Gt$ & $\Delta_{MIX}\Gt$ \\
+% Gibbs free energy of reaction & \verb"\Deltarxn\Gm" & $\Deltarxn\Gm$ & $\inherit{\Deltarxn{\bar{g}}}$ & $\overline{g}_R$ & $\Delta G$ & $\Delta G_{\mathrm{m}}$ & $\Delta g_\text{rxn}$ & $\inherit{\Deltarxn{\overline{g}}}$ & $\inherit{\Delta g_\text{rxn}}$ & $\Delta_\text{rxn}\Gt$ & $\Delta G$ & $\Delta G_{rx}$ & $\Delta G_R$ \\
+% grand potential (total) & \verb"\Lt" & $\Lt$ & $F_\mu$ & $\inherit{\Omega}$ & $\inherit{\Lt}$ & $\inherit{\Omega}$ & $\inherit{\Omega}$ & $\inherit{\Omega}$ & $\inherit{\Omega}$ & $\inherit{\Omega}$ & $\inherit{\Lt}$ & $\inherit{\Lt}$ & $\inherit{\Lt}$ \\
+% grand potential (molar) & \verb"\Lm" & $\Lm$ & $\overline{f}_\mu$ & $\inherit{\overline{\omega}}$ & $\inherit{\Lm}$ & $\inherit{\Omega_{\mathrm{m}}}$ & $\inherit{\omega}$ & $\inherit{\overline{\omega}}$ & $\inherit{\omega}$ & $\inherit{\Lt}$ & $\inherit{\Lm}$ & $\inherit{\Lm}$ & $\inherit{\Lm}$ \\
+% grand potential (specific) & \verb"\Ls" & $\Ls$ & $f_\mu$ & $\inherit{\omega}$ & $\inherit{\Ls}$ & $\inherit{\Ls}$ & $\inherit{\hat\omega}$ & $\inherit{\omega}$ & $\inherit{\hat\omega}$ & $\inherit{\Ls}$ & $\inherit{\Lm}$ & $\inherit{\Ls}$ & $\inherit{\Ls}$ \\
+% heat (total) & \verb"\Qt" & $\Qt$ & $Q$ & $Q$ & $\Qt$ & $Q$ & $Q$ & $Q$ & $Q$ & $Q$ & $Q^t$ & $\inherit{\Qt}$ & $\inherit{\Qt}$ \\
+% heat (molar) & \verb"\Qm" & $\Qm$ & $\overline{q}$ & $\overline{q}$ & $Q$ & $\inherit{Q_{\mathrm{m}}}$ & $q$ & $\overline{q}$ & $\inherit{q}$ & $\inherit{\Qt}$ & $Q$ & $Q$ & $Q$ \\
+% heat (specific) & \verb"\Qs" & $\Qs$ & $q$ & $q$ & $Q$ & $\inherit{\Qs}$ & $\hat q$ & $q$ & $\inherit{\hat q}$ & $\inherit{\Qs}$ & $Q$ & $\inherit{\hat Q}$ & $\inherit{\Qs}$ \\
+% heat capacity (isobaric, total) & \verb"\cPt" & $\cPt$ & $C_P$ & $\inherit{C_p}$ & $\underline{C}_P$ & $C_P$ & $\inherit{C_P}$ & $\inherit{C_p}$ & $C_p$ & $NC_P$ & $nC_P$ & $\inherit{\underline{C}_p}$ & $\inherit{\cPt}$ \\
+% heat capacity (isobaric, molar) & \verb"\cP" & $\cP$ & $\overline{c}_P$ & $\overline{c}_p$ & $C_P$ & $C_{P\mathrm{m}}$ & $c_P$ & $\overline{c}_p$ & $c_p$ & $C_P$ & $C_P$ & $C_p$ & $C_P$ \\
+% heat capacity of $i$ (isobaric, molar) & \verb"\cP_i" & $\cP_i$ & $\overline{c}_{P,i}$ & $\overline{c}_{p,i}$ & $C_{P,i}$ & $C_{P\mathrm{m}i}^\bullet$ & $C_{P,i}$ & $\overline{c}_{p,i}$ & $c_{p\,i}$ & $C_{P,i}$ & ${C_P}_i$ & $C_{pi}$ & $C_{P,i}$ \\
+% heat capacity (isobaric, specific) & \verb"\cPs" & $\cPs$ & $c_P$ & $c_p$ & $C_P$ & $\inherit{\cPs}$ & $\hat c_P$ & $c_p$ & $\inherit{\hat c_p}$ & $\hat C_P$ & $C_P$ & $\inherit{\hat C_p}$ & $\inherit{\hat C_p}$ \\
+% heat capacity (isobaric, partial molar) & \verb"\cPpm_i" & $\cPpm_i$ & $\overline{c}_{P,i}$ & $\inherit{\widetilde{C}_{p,i}}$ & $\overline{C}_{P,i}$ & $C_{P\mathrm{m}i}$ & $\overline{C}_{P,i}$ & \begin{thermoshortpm}$\partialmolar{C}_{p,i}$\end{thermoshortpm} & $\inherit{\bar c_{p\,i}}$ & \begin{thermoshortpm}$\cPpm_i$\end{thermoshortpm} & ${\overline{C}_P}_i$ & $\overline{C}_{pi}$ & \begin{thermoshortpm}$\inherit{\cPpm_i}$\end{thermoshortpm} \\
+% heat capacity (isochoric, total) & \verb"\cVt" & $\cVt$ & $C_V$ & $\inherit{C_V}$\footref{fn:XeTeX} & $\underline{C}_V$ & $C_V$ & $C_V$ & $C_v$ & $C_v$ & $NC_V$ & $nC_V$ & $\inherit{\underline{C}_v}$ & $\inherit{\cVt}$ \\
+% heat capacity (isochoric, molar) & \verb"\cV" & $\cV$ & $\overline{c}_v$ & $\overline{c}_V$\footref{fn:XeTeX} & $C_V$ & $C_{V\mathrm{m}}$ & $c_V$ & $\overline c_v$ & $c_v$ & $C_V$ & $C_V$ & $C_v$ & $C_V$ \\
+% heat capacity (isochoric, specific) & \verb"\cVs" & $\cVs$ & $c_v$ & $c_V$\footref{fn:XeTeX} & $C_V$ & $\inherit{\cVs}$ & $\hat c_v$ & $c_v$ & $\inherit{\hat c_p}$ & $\hat C_V$ & $C_V$ & $\inherit{\hat C_v}$ & $\inherit{\cVs}$ \\
+% heat capacity (isochoric, partial molar) & \verb"\cVpm_i" & $\cVpm_i$ & $\overline{c}_{v,i}$ & $\widetilde{C}_{V,i}$\footref{fn:XeTeX} & $\overline{C}_{V,i}$ & $C_{V\mathrm{m}i}$ & $\overline{C}_V$ & \begin{thermoshortpm}$\partialmolar{C}_{v,i}$\end{thermoshortpm} & $\inherit{\bar c_{v\,i}}$ & \begin{thermoshortpm}$\cVpm_i$\end{thermoshortpm} & ${\overline{C}_V}_i$ & $\overline{C}_{vi}$ & \begin{thermoshortpm}$\inherit{\cVpm_i}$\end{thermoshortpm} \\
+% Helmholtz free energy (total) & \verb"\Ft" & $\Ft$ & $F$ & $A$ & $\underline{A}$ & $A$ & $A$ & $\Psi$ & $A$ & $A$ & $A^t$ & $\Ft$ & $\Ft$ \\
+% Helmholtz free energy (molar) & \verb"\Fm" & $\Fm$ & $\bar{f}$ & $\overline{a}$ & $A$ & $A_{\mathrm{m}}$ & $a$ & $\overline{\psi}$ & $a$ & $\Ft$ & $A$ & $A$ & $A$ \\
+% Helmholtz free energy (specific) & \verb"\Fs" & $\Fs$ & $f$ & $a$ & $A$ & $\inherit{\Fs}$ & $\hat a$ & $\psi$ & $\inherit{\hat a}$ & $\hat A$ & $A$ & $\Fs$ & $\inherit{\Fs}$ \\
+% Helmholtz free energy (partial molar) & \verb"\Fpm_i" & $\Fpm_i$ & $\overline{f}_i$ & $\widetilde{a}_i$ & $\overline{A}_i$ & $A_{\mathrm{m}i}$ & $\overline{A}_i$ & $\overline{\Psi}_i$ & $\overline a_i$ & \begin{thermoshortpm}$\Fpm_i$\end{thermoshortpm} & $\begin{thermoshortpm}\Fpm_i\end{thermoshortpm}$ & $\partialmolar{A}_i$ & \begin{thermoshortpm}$\partialmolar{A}_i$\end{thermoshortpm} \\
+% Henry's constant (rational basis) & \verb"\Henryrat_i" & $\Henryrat_i$ & $\inherit{\Henryrat_i}$ & $\inherit{\Henryrat_i}$ & $h_i$ & $k_i$ & $\mathcal{H}_i$ & $\inherit{\Henryrat_i}$ & $H_i$ & $H_i$ & $\mathcal{H}_i$ & $f^{**}$ & $k_{H,i}$ \\
+% Henry's constant (molal basis) & \verb"\Henrymol_i" & $\Henrymol_i$ & $\inherit{\Henrymol_i}$ & $\inherit{\Henrymol_i}$ & $\inherit{\Henrymol_i}$ & $k''_i$ & $\inherit{\Henrymol_i}$ & $\inherit{\Henrymol_i}$ & $\inherit{\Henrymol_i}$ & $\mathcal{H}_i$ & $\inherit{\Henrymol_i}$ & $f^*$ & $k_{H,i}$ \\
+% ideal gas enthalpy & \verb"\Hm^\IG" & $\Hm^\IG$ & $\inherit{\bar{h}^\IG}$ & $\inherit{\overline{h}^\IG}$ & $H^{ig}$ & $\inherit{H_{\mathrm{m}}^\IG}$ & $h^\text{ideal~gas}$ & $\smash{\overline{h}}^\ast$ & $h^\text{id}$ & $H^\text{IG}$ & $H^{ig}$ & $H^o$ & $H^{IG}$ \\
+% ideal gas mixture enthalpy & \verb"\Hm^\IGM" & $\Hm^\IGM$ & $\inherit{\bar{h}^\IG}$ & $\inherit{\overline{h}^\IGM}$ & $H^{ig}$ & $\inherit{H_{\mathrm{m}}^\IGM}$ & $h^\text{ideal}$ & $\smash{\overline{h}}^\ast$ & $h^\text{id}$ & $H^\text{IGM}$ & $H^{ig}$ & $H^o$ & $H^{IG}$ \\
+% ideal solution enthalpy & \verb"\Hm^\IS" & $\Hm^\IS$ & $\inherit{\bar{h}^\IS}$ & $\inherit{\overline{h}^\IS}$ & $H^{is}$ & $\inherit{H_{\mathrm{m}}^\IS}$ & $h^\text{ideal}$ & $\inherit{\smash{\overline{h}}^\IS}$ & $h^\text{(ideal)}$ & $H^\text{IM}$ & $H^{id}$ & $H^{ID}$ & $H^{IS}$ \\
+% inexact differential & \verb"\dbar" & $\dbar$ & $\delta$ & $\delta$ & $d$ & $d$ & $\delta$ & $\delta$ & $\inherit{\dbar}$ & $\inherit{\dbar}$ & $\dbar$ & $\delta$ & $\delta$ \\
+% internal energy (total) & \verb"\Ut" & $\Ut$ & $U$ & $U$ & $\underline{U}$ & $U$ & $U$ & $U$ & $U$ & $U$ & $U^t$ & $\Ut$ & $\Ut$ \\
+% internal energy (molar) & \verb"\Um" & $\Ut$ & $\bar{u}$ & $\overline{u}$ & $U$ & $U_{\mathrm{m}}$ & $u$ & $\overline{u}$ & $u$ & $\Ut$ & $U$ & $U$ & $U$ \\
+% internal energy (specific) & \verb"\Us" & $\Us$ & $u$ & $u$ & $U$ & $\inherit{\Us}$ & $\hat u$ & $u$ & $\inherit{\hat u}$ & $\hat U$ & $U$ & $u$ & $\inherit{\Us}$ \\
+% internal energy (partial molar) & \verb"\Upm_i" & $\Upm_i$ & $\overline{u}_i$ & $\widetilde{u}_i$ & $\overline{U}_i$ & $U_{\mathrm{m}i}$ & $\overline{U}_i$ & $\Upm_i$ & $\overline{u}_i$ & \begin{thermoshortpm}$\Upm_i$\end{thermoshortpm} & \begin{thermoshortpm}$\Upm_i$\end{thermoshortpm} & $\Upm_i$ & $\Upm_i$ \\
+% isothermal compressibility & \verb"\kappaT" & $\kappaT$ & $\kappa$ & $\alpha$ & $\kappa_T$ & $\betaup$ & $\kappa$ & $\kappa$ & $\beta$ & $\kappa_T$ & $\kappa$ & $\kappa_T$ & $\inherit{\kappaT}$ \\
+% isentropic compressibility & \verb"\kappaS" & $\kappaS$ & $\inherit{\kappaS}$ & $\inherit{\alpha_S}$ & $\inherit{\kappa_S}$ & $\inherit{\beta_S}$ & $\inherit{\kappaS}$ & $\alpha$ & $\inherit{\beta_S}$ & $\inherit{\kappaS}$ & $\inherit{\kappaS}$ & $\inherit{\kappaS}$ & $\inherit{\kappaS}$ \\
+% isobaric expansivity & \verb"\alphaP" & $\alphaP$ & $\beta$ & $\beta$ & $\alpha_P$ & $\alpha$ & $\beta$ & $\beta$ & $\alpha$ & $\alpha$ & $\beta$ & $\alpha_P$ & $\inherit{\alphaP}$ \\
+% isentropic expansivity & \verb"\alphaS" & $\alphaS$ & $\inherit{\beta_S}$ & $\inherit{\beta_S}$ & $\inherit{\alpha_S}$ & $\inherit{\alpha_S}$ & $\inherit{\beta_S}$ & $\inherit{\beta_S}$ & $\alpha_S$ & $\inherit{\alphaS}$ & $\inherit{\beta_S}$ & $\inherit{\alphaS}$ & $\inherit{\alphaS}$ \\
+% Joule--Thomson coefficient & \verb"\muJT" & $\muJT$ & $\mu_J$ & $\mu_\text{JT}$ & $\mu_{JT}$ & $\mu_\text{J.T.}$ & $\mu_\text{JT}$ & $\mu_J$ & $\inherit{\muJT}$ & $\mu$ & $\mu$ & $\alpha_H$ & $\alpha_H$ \\
+% moles & \verb"\Nt" & $\Nt$ & $N$ & $N$ & $n$ & $n$ & $n$ & $n$ & $n$ & $N$ & $n$ & $N$ & $n$ \\
+% saturation pressure & \verb"\Psat" & $\Psat$ & $\inherit{\Psat}$ & $P^v$ & $P^{sat}$ & $p$ & $P^\text{sat}$ & $\inherit{P^\text{sat}}$ & $P^s$ & $P^\text{sat}$ & $P^\text{sat}$ & $P^\text{sat}$ & $P^\text{sat}$ \\
+% saturation pressure of $i$ & \verb"\Psat_i" & $\Psat_i$ & $\inherit{\Psat_i}$ & $P^v_i$ & $P^{sat}_i$ & $p^\bullet_i$ & $P^\text{sat}_i$ & $\inherit{P^\text{sat}_i}$ & $P^s_i$ & $P^\text{sat}_i$ & $P^\text{sat}_i$ & $P^\text{sat}_i$ & $P^\text{sat}_i$ \\
+% standard molality & \verb"\Cstd_i" & $\Cstd_i$ & $\inherit{\Cstd_i}$ & $\inherit{\Cstd_i}$ & $m_i^\circ$ & $m_i^\circ$ & $\inherit{C_i^o}$ & $\inherit{\Cstd_i}$ & $C_i^0$ & \text{1~molal} & $m^\circ$ & $m^+$ & $m_i^\circ$ \\
+% standard chemical potential & \verb"\mustd" & $\mustd$ & $\inherit{\mustd}$ & $\inherit{\mustd}$ & $\mu^\circ$ & $\muup^\circ$ & $\mu^o$ & $\overline{g}^\circ$ & $\mu^0$ & $\mu^\circ$ & $G^\circ$ & $\muup^o$ & $\Gamma$ \\
+% standard enthalpy & \verb"\Hm^\std" & $\Hm^\std$ & $\bar{h}^\circ$ & $\smash{\overline{h}}^\circ$ & $H^\circ$ & $H^\circ_{\mathrm{m}}$ & $h^o$ & $\overline{h}^\circ$ & $h^0$ & $\Ht^\circ$ & $H^\circ$ & $H^o$ & $H^\circ$ \\
+% standard enthalphy of formation & \verb"\Deltaf\Hm^std" & $\Deltaf\Hm^\std$ & $\bar{h}^\circ_f$ & $\smash{\overline{h}}_f^\circ$ & $\Delta H_f^\circ$ & $\Delta_f H^\circ_{\mathrm{m}}$ & $\Delta h_f^o$ & $\bar{h}^\circ_{\mathrm{f}}$ & $\Delta h_f^0$ & $\Delta_{\mathrm{f}}\Ht^\circ$ & $\Delta H^\circ_{f298}$ & $\Delta H_f^o$ & $\Delta H_F^\circ$ \\
+% standard enthalphy of formation of $i$ & \verb"\Deltaf\Hm^std_i" & $\Deltaf\Hm^\std_i$ & $\bar{h}^\circ_{f,i}$ & $\smash{\overline{h}}_{f,i}^\circ$ & $\Delta H_{f,i}^\circ$ & $\Delta_f H^\circ_{\mathrm{m}i}$ & $(\Delta h_f^o)_i$ & $(\bar{h}^\circ_{\mathrm{f}})_i$ & $\Delta h_{f\,i}^0$ & $\Delta_{\mathrm{f}}\Ht^\circ_i$ & $\Delta H^\circ_{f298i}$ & $\Delta H^o_{fi}$ & $\Delta H_{F,i}^\circ$ \\
+% standard enthalphy of reaction & \verb"\Deltarxn\Hm^std" & $\Deltarxn\Hm^\std$ & $\inherit{\bar{h}^\circ_\reaction}$ & $\smash{\overline{h}}_R^\circ$ & $\Delta H^\circ$ & $\Delta H_{\mathrm{m}}$ & $\Delta h^o_\text{rxn}$ & $\inherit{\Delta\bar{h}^\circ_\text{rxn}}$ & $\Delta h^0_\text{rxn}$ & $\Delta_\text{rxn}\Ht^\circ$ & $\Delta H^\circ$ & $\Delta H_{rx}^o$ & $\Delta H_R^\circ$ \\
+% standard free energy of formation & \verb"\Deltaf\Gm^std" & $\Deltaf\Gm^\std$ & $\bar{g}^\circ$ & $\smash{\bar{g}}_f^\circ$ & $\Delta G_f^\circ$ & $\Delta_f G^\circ_{\mathrm{m}}$ & $\Delta g_f^o$ & $\bar{g}^\circ_{\mathrm{f}}$ & $\Delta g_f^0$ & $\Delta_{\mathrm{f}}\Gt^\circ$ & $\Delta G^\circ_{f298}$ & $\Delta G_f^o$ & $\Delta G_F^\circ$ \\
+% standard free energy of formation of $i$ & \verb"\Deltaf\Gm_i^std" & $\Deltaf\Gm_i^\std$ & $\bar{g}^\circ_{f,i}$ & $\smash{\bar{g}}_{f,i}^\circ$ & $\Delta G_{f,i}^\circ$ & $\Delta_f G^\circ_{\mathrm{m}i}$ & $(\Delta g_f^o)_i$ & $(\bar{g}^\circ_{\mathrm{f}})_i$ & $\Delta g_{f\,i}^0$ & $\Delta_{\mathrm{f}}\Gt^\circ_i$ & $\Delta G^\circ_{f298i}$ & $\Delta G^o_{fi}$ & $\Delta G_{F,i}^\circ$ \\
+% standard free energy of reaction & \verb"\Deltarxn\Gm^std" & $\Deltarxn\Gm^\std$ & $\inherit{\bar{g}^\circ_\reaction}$ & $\smash{\bar{g}}^\circ_R$ & $\Delta G^\circ$ & $\Delta G_{\mathrm{m}}$ & $\Delta g^o_\text{rxn}$ & $\inherit{\Delta\bar{g}^\circ_\text{rxn}}$ & $\Delta g_\text{rxn}^0$ & $\Delta_\text{rxn}\Gt^\std$ & $\Delta G^\circ$ & $\Delta G^o_{rx}$ & $\Delta G_R^\circ$ \\
+% standard fugacity & \verb"\fstd" & $\fstd$ & $\inherit{f^\circ}$ & $\inherit{f^\circ}$ & $f^\circ$ & $f^\circ$ & $f^o$ & $\inherit{f^\circ}$ & $f^0$ & $\bar f^\circ$ & $f^\circ$ & $\inherit{\fstd}$ & $f^\circ$ \\
+% standard Gibbs free energy & \verb"\Gm^\std" & $\Gm^\std$ & $\bar{g}^\circ$ & $\bar{g}^\circ$ & $G^\circ$ & $G^\circ_{\mathrm{m}}$ & $g^o$ & $\overline{g}^\circ$ & $g^0$ & $\Gt^\circ$ & $G^\circ$ & $G^o$ & $G^\circ$ \\
+% standard Gibbs free energy of $i$ & \verb"\Gm^\std_i" & $\Gm^\std_i$ & $\bar{g}^\circ_i$ & $\bar{g}_i^\circ$ & $G^\circ_i$ & $G^\circ_{\mathrm{m}i}$ & $g_i^o$ & $\overline{g}^\circ_i$ & $g^0_i$ & $\Gt^\circ_i$ & $G^\circ_i$ & $G^o_i$ & $G^\circ_i$ \\
+% standard pressure & \verb"\Pstd" & $\Pstd$ & $P_0$ & $P_0$ & $P^\circ$ & $P^\circ$ & $\inherit{P^o}$ & $p_\text{ref}$ & $P^0$ & \text{1~bar} & $P^\circ$ & $P^\ast$ & $P^\circ$ \\
+% vapor pressure & \verb"\Pvap" & $\Pvap$ & $\inherit{\Pvap}$ & $P^v$ & $P^{std}$ & $p$ & $\inherit{P^\text{sat}}$ & $p_\text{ref}$ & $P^s$ & $P^\text{vap}$ & $P^\text{sat}$ & $P^\text{sat}$ & $P^\text{sat}$ \\
+% volume (total) & \verb"\Vt" & $\Vt$ & $V$ & $V$\footref{fn:XeTeX} & $\Vt$ & $V$ & $V$ & $V$ & $V$ & $V$ & $V^t$ & $\Vt$ & $\Vt$ \\
+% volume (molar) & \verb"\Vm" & $\Vm$ & $\bar{v}$ & $\overline{v}$\footref{fn:XeTeX} & $V$ & $V_{\mathrm{m}}$ & $v$ & $\overline{v}$ & $v$ & $\Vt$ & $V$ & $V$ & $V$ \\
+% volume (specific) & \verb"\Vs" & $\Vs$ & $v$ & $v$\footref{fn:XeTeX} & $V$ & $\inherit{\Vs}$ & $\hat v$ & $v$ & $\inherit{\hat v}$ & $\hat V$ & $V$ & $\inherit{v}$ & $\inherit{\Vs}$ \\
+% volume (molar, residual) & \verb"\VR" & $\VR$ & $\inherit{\bar{v}^\residual}$ & $\inherit{\overline{v}^\residual}$\footref{fn:XeTeX} & $\inherit{V^R}$ & $\inherit{V^{\mathrm{R}}_{\mathrm{m}}}$ & $v^\text{dep}$ & $\inherit{\overline{v}^R}$ & $v^R$ & $\Vt^r$ & $V^R$ & $\inherit{\VR}$ & $V^R$ \\
+% volume (molar, excess) & \verb"\VE" & $\VE$ & $\inherit{\bar{v}^\excess}$ & $\inherit{\overline{v}^\excess}$\footref{fn:XeTeX} & $V^E$ & $V^{\mathrm{E}}_{\mathrm{m}}$ & $v^E$ & $\inherit{\overline{v}^E}$ & $v^E$ & $\Vt^\text{ex}$ & $V^E$ & $V^{EX}$ & $V^{EX}$ \\
+% volume (partial molar, excess) & \verb"\VEpm_i" & $\VEpm_i$ & $\inherit{\overline{v}_i^\excess}$ & $\inherit{\widetilde{v}^\excess}$\footref{fn:XeTeX} & $\smash{\overline{V}}^E_i$ & $V^{\mathrm{E}}_{\mathrm{m}i}$ & $\smash{\overline{V}}^E_i$ & $\inherit{\overline{V}^E_i}$ & $\overline{v}^E_i$ & \begin{thermoshortpm}$\Vpm^{\text{ex}}_i$\end{thermoshortpm} & \begin{thermoshortpm}$\VEpm_i$\end{thermoshortpm} & \begin{thermoshortpm}$\Vpm^{EX}_i$\end{thermoshortpm} & \begin{thermoshortpm}$\Vpm^{EX}_i$\end{thermoshortpm} \\
+% work (total) & \verb"\Wt" & $\Wt$ & $W$ & $W$ & $\underline{W}$ & $W$ & $W$ & $W$ & $W$ & $W$ & $\inherit{W^t}$ & $\inherit{\Wt}$ & $\inherit{\Wt}$ \\
+% work (molar) & \verb"\Wm" & $\Wm$ & $\bar{w}$ & $\overline{w}$ & $W$ & $\inherit{W_{\mathrm{m}}}$ & $w$ & $\inherit{\overline{w}}$ & $\inherit{w}$ & $\inherit{\Wt}$ & $W$ & $W$ & $W$ \\
+% work (specific) & \verb"\Ws" & $\Ws$ & $w$ & $w$ & $W$ & $\inherit{\Ws}$ & $\hat w$ & $\inherit{w}$ & $\inherit{\hat w}$ & $\inherit{\hat W}$ & $\inherit{W}$ & $w$ & $\inherit{\Ws}$ \\
+% \end{mpsupertabular}
+% \end{landscape}
+%
%^^X \end{documentation}
%
% \setcounter{IndexColumns}{2}
@@ -1763,17 +1984,18 @@
% \end{macro}
%
% Symbols are defined for the total energy, internal energy, Helmholtz free
-% energy, Gibbs free energy, enthalpy, entropy, surface area, volume, number
-% of moles, heat, and work; these are $E$, $U$, $A$, $G$, $H$, $S$, $a$,
-% $V$, $n$, $Q$, and $W$, respectively. These commands should not be used on
-% their own, but rather accessed through the macros \cs{Ut}, \cs{Um}, and
-% \cs{Us} (using the internal energy as an example).
+% energy, Gibbs free energy, grand potential (Landau free energy), enthalpy,
+% entropy, surface area, volume, number of moles, heat, and work; these are
+% $E$, $U$, $A$, $G$, $\Omega$, $H$, $S$, $a$, $V$, $n$, $Q$, and $W$,
+% respectively. These commands should not be used on their own, but rather
+% accessed through the macros \cs{Ut}, \cs{Um}, and \cs{Us} (using the internal
+% energy as an example).
%
% The default symbols are not intended to be easy to change---the intended
% mechanism is through package options. If you want to use a non-standard
% symbol that is not available through one of the package options, you can
% redefine the internal token lists inside
-% \cs{ExplSyntaxOn}\dots\cs{ExplSyntaxOff}. For example,
+% \cs{ExplSyntaxOn}\,\dots\!\cs{ExplSyntaxOff}. For example,
% \begin{verbatim}
% \ExplSyntaxOn
% \tl_gset:Nn \g__thermodynamics_Helmholtz_symbol {H}
@@ -1783,7 +2005,7 @@
% would define the ill-advised notation that I have nonetheless heard of
% that uses $H$ for Helmholtz free energy and $h$ for enthalpy.
% Note that the macros for temperature and pressure are only used inside
-% the definitions of the compressibilities, expansivitites, and heat
+% the definitions of the compressibilities, expansivities, and heat
% capacities; there is no user-level macro for the temperature or the pressure,
% so it is up to the user to use consistent symbols for those properties.
% \begin{macrocode}
@@ -1806,7 +2028,9 @@
\tl_gset:Nn \g_@@_internal_energy_symbol U
\tl_gset:Nn \g_@@_Helmholtz_symbol A
\tl_gset:Nn \g_@@_Gibbs_symbol G
-\tl_gset:Nn \g_@@_Landau_symbol \Omega
+\cs_if_exist:NTF \Omegait
+{ \tl_gset:Nn \g_@@_Landau_symbol \Omegait }
+{ \tl_gset:Nn \g_@@_Landau_symbol \Omega }
\tl_gset:Nn \g_@@_enthalpy_symbol H
\tl_gset:Nn \g_@@_entropy_symbol S
\tl_gset:Nn \g_@@_area_symbol a
@@ -1960,7 +2184,14 @@
}
\cs_new:Npn \@@_set_extensive_superscripts
{
- \cs_set:Nn \@@_extensive:n {{##1}\c_math_superscript_token t}
+ \cs_set:Nn \@@_extensive_one:n
+ { \c_math_superscript_token {##1\l_@@_super_separator_tl t} }
+ \cs_set:Nn \@@_extensive:n
+ {
+ \peek_catcode_remove:NTF \c_math_superscript_token
+ { ##1 \@@_extensive_one:n }
+ { ##1 \c_math_superscript_token t }
+ }
\cs_set:Nn \@@_intensive:n {##1}
}
\DeclareOption{extensive-plain}{\@@_set_extensive_plain}
@@ -1969,44 +2200,83 @@
\@@_set_intensive_lowercase
\AtEndOfPackage{
\@@_set_lowercase_pms
- \RenewDocumentCommand{\heatcapacitysymbol}{}{c}
}
}
\DeclareOption{extensive-superscript}{%
\@@_set_extensive_superscripts
- \AtEndOfPackage{%
- \RenewDocumentCommand{\URt}{}{\g_@@_internal_energy_symbol
- \c_math_superscript_token{\residual,t}}
- \RenewDocumentCommand{\HRt}{}{\g_@@_enthalpy_symbol
- \c_math_superscript_token{\residual,t}}
- \RenewDocumentCommand{\FRt}{}{\g_@@_Helmoholtz_symbol
- \c_math_superscript_token{\residual,t}}
- \RenewDocumentCommand{\GRt}{}{\g_@@_Gibbs_symbol
- \c_math_superscript_token{\residual,t}}
- \RenewDocumentCommand{\VRt}{}{\g_@@_volume_symbol
- \c_math_superscript_token{\residual,t}}
- \RenewDocumentCommand{\SRt}{}{\g_@@_entropy_symbol
- \c_math_superscript_token{\residual,t}}
- \RenewDocumentCommand{\UEt}{}{\g_@@_internal_energy_symbol
- \c_math_superscript_token{\excess,t}}
- \RenewDocumentCommand{\HEt}{}{\g_@@_enthalpy_symbol
- \c_math_superscript_token{\excess,t}}
- \RenewDocumentCommand{\FEt}{}{\g_@@_Helmoholtz_symbol
- \c_math_superscript_token{\excess,t}}
- \RenewDocumentCommand{\GEt}{}{\g_@@_Gibbs_symbol
- \c_math_superscript_token{\excess,t}}
- \RenewDocumentCommand{\VEt}{}{\g_@@_volume_symbol
- \c_math_superscript_token{\excess,t}}
- \RenewDocumentCommand{\SEt}{}{\g_@@_entropy_symbol
- \c_math_superscript_token{\excess,t}}
+%^^A \AtEndOfPackage{%
+%^^A \RenewDocumentCommand{\URt}{}{\g_@@_internal_energy_symbol
+%^^A \c_math_superscript_token{\residual,t}}
+%^^A \RenewDocumentCommand{\HRt}{}{\g_@@_enthalpy_symbol
+%^^A \c_math_superscript_token{\residual,t}}
+%^^A \RenewDocumentCommand{\FRt}{}{\g_@@_Helmoholtz_symbol
+%^^A \c_math_superscript_token{\residual,t}}
+%^^A \RenewDocumentCommand{\GRt}{}{\g_@@_Gibbs_symbol
+%^^A \c_math_superscript_token{\residual,t}}
+%^^A \RenewDocumentCommand{\VRt}{}{\g_@@_volume_symbol
+%^^A \c_math_superscript_token{\residual,t}}
+%^^A \RenewDocumentCommand{\SRt}{}{\g_@@_entropy_symbol
+%^^A \c_math_superscript_token{\residual,t}}
+%^^A \RenewDocumentCommand{\UEt}{}{\g_@@_internal_energy_symbol
+%^^A \c_math_superscript_token{\excess,t}}
+%^^A \RenewDocumentCommand{\HEt}{}{\g_@@_enthalpy_symbol
+%^^A \c_math_superscript_token{\excess,t}}
+%^^A \RenewDocumentCommand{\FEt}{}{\g_@@_Helmoholtz_symbol
+%^^A \c_math_superscript_token{\excess,t}}
+%^^A \RenewDocumentCommand{\GEt}{}{\g_@@_Gibbs_symbol
+%^^A \c_math_superscript_token{\excess,t}}
+%^^A \RenewDocumentCommand{\VEt}{}{\g_@@_volume_symbol
+%^^A \c_math_superscript_token{\excess,t}}
+%^^A \RenewDocumentCommand{\SEt}{}{\g_@@_entropy_symbol
+%^^A \c_math_superscript_token{\excess,t}}
+%^^A }
+}
+% \end{macrocode}
+% \begin{environment}{thermolongpm,thermoshortpm}
+% The |longpm| option (the default) makes partial molar quantities that
+% look like \(\UEpm_i\). The |shortpm| option (which is used by several
+% textbooks) makes partial molar quantities look like
+% \(\smash{\mkern2mu\overline{\mkern-2mu U}}_i^E\).
+% The environments \env{thermolongpm} and \env{thermoshortpm} do the same
+% thing locally.
+% \changes{v2.02}{2024/06/14}{Added ``longpm'' and ``shortpm'' options to
+% control how partial molar properties are rendered along with the
+% environments \env{thermolongpm} and \env{thermoshortpm} to change them
+% locally.}
+% \begin{macrocode}
+\bool_new:N \l_@@_longpm_bool
+\DeclareOption{longpm}{\bool_set_true:N \l_@@_longpm_bool}
+\cs_set_eq:NN \@@_overline_copy:n \@@_overline:n
+\DeclareOption{shortpm}{
+ \bool_set_false:N \l_@@_longpm_bool
+ \AtEndOfPackage{
+ \RenewDocumentCommand{\cPpm}{}
+ {
+ \cs_set:Nn \@@_overline:n {##1}
+ \partialmolar{\cPpmshort}
+ }
+ \RenewDocumentCommand{\cVpm}{}
+ {
+ \cs_set:Nn \@@_overline:n {##1}
+ \partialmolar{\cVpmshort}
+ }
}
}
+\NewDocumentEnvironment{thermolongpm}{}{%
+ \bool_set_true:N \l_@@_longpm_bool
+}{}
+\NewDocumentEnvironment{thermoshortpm}{}{%
+ \bool_set_false:N \l_@@_longpm_bool
+ \RenewSubscriptedSymbol{\cPpm}{\@@_overline:n \heatcapacitysymbol}
+ {\g_@@_pressure_symbol}
+ \RenewSubscriptedSymbol{\cVpm}{\@@_overline:n \heatcapacitysymbol}
+ {\g_@@_volume_symbol}
+}{}
% \end{macrocode}
+% \end{environment}
%
% The next two options choose whether variables held constant are subscripted
% (the default) or placed next to the function. The difference is
-%%^^A \[ \left(\frac{\partial U}{\partial S}\right)_V \quad\text{versus}\quad
-%%^^A \left(\frac{\partial U(S,V)}{\partial S}\right) \]
% \[ \Partial{\Um}{\Sm}{\Vm} \quad\text{versus}\quad
% \begin{thermoNOsubscripts}
% \Partial{\Um}{\Sm}{\Vm}
@@ -2132,7 +2402,8 @@
% \end{macrocode}
% \end{macro}
%
-% We then define two package options that change how to render \cs{allNs} and
+% \subsection{Package Options}
+% We define two package options that change how to render \cs{allNs} and
% friends.\relax
% \changes{v1.01}{2022/05/04}{Fixed bug in \cs{allbutlastand} when using the
% |moles-range| option ($C$ should have been $C-1$ in the last option).}
@@ -2177,50 +2448,343 @@
}
% \end{macrocode}
% The remaining options define textbook-specific notation.
+% \changes{v2.02}{2024/06/14}{Added \texttt{KlotzRosenberg} option.}
% \begin{macrocode}
\DeclareOption{Bejan}{
- \ExecuteOptions{EUFGHAN,intensive-lowercase,delta}
- \cs_set:Nn \@@_specific:n {\text_lowercase:n {#1}}
- \cs_set:Nn \@@_intensive:n {\bar{\text_lowercase:n {#1}}}
- \tl_gset:Nn \g_@@_volume_symbol v
+ \ExecuteOptions{EUFGHAN,intensive-lowercase,delta,shortpm}
+ \AtEndOfPackage{
+ \cs_set:Nn \@@_specific:n {\text_lowercase:n {#1}}
+ \cs_set:Nn \@@_intensive:n {\bar{\text_lowercase:n {#1}}}
+ \cs_set:Nn \@@_extensive:n {\text_uppercase:n {#1}}
+ \tl_gset:Nn \g_@@_volume_symbol v
+ \RenewExpandableDocumentCommand{\ncomponents}{}{n}
+ \RenewSubscriptedSymbol{\Lt}{\g_@@_Helmholtz_symbol}{\mu}
+ \RenewSubscriptedSymbol{\Lm}
+ {\bar{\text_lowercase:n \g_@@_Helmholtz_symbol}}{\mu}
+ \RenewSubscriptedSymbol{\Ls}
+ {\text_lowercase:n \g_@@_Helmholtz_symbol}{\mu}
+ \cs_new:Npn \Delta_vap_sym {} {}
+ \NewSubscriptedSymbol{\Delta_vap}{\Delta_vap_sym}{{fg}}
+ \RenewDocumentCommand{\Deltavap}{m}{
+ \cs_set:Npn \Delta_vap_sym {} {#1}
+ \Delta_vap
+ }
+ \cs_new:Npn \Delta_fus_sym {} {}
+ \NewSubscriptedSymbol{\Delta_fus}{\Delta_fus_sym}{{sf}}
+ \RenewDocumentCommand{\Deltafus}{m}{
+ \cs_set:Npn \Delta_fus_sym {} {#1}
+ \Delta_fus
+ }
+ \cs_new:Npn \Delta_sub_sym {} {}
+ \NewSubscriptedSymbol{\Delta_sub}{\Delta_sub_sym}{{sg}}
+ \RenewDocumentCommand{\Deltasub}{m}{
+ \cs_set:Npn \Delta_sub_sym {} {#1}
+ \Delta_sub
+ }
+ \RenewExpandableDocumentCommand{\heatcapacitysymbol}{}{c}
+ \RenewSubscriptedSymbol{\cV}{\@@_intensive:n {\heatcapacitysymbol}}
+ {\text_lowercase:n \g_@@_volume_symbol}
+ \RenewSubscriptedSymbol{\cVt}{\@@_extensive:n {\heatcapacitysymbol}}
+ {\text_uppercase:n \g_@@_volume_symbol}
+ \RenewSubscriptedSymbol{\cVpm}{\heatcapacitysymbol}
+ {\text_lowercase:n \g_@@_volume_symbol}
+ \RenewSubscriptedSymbol{\cPpm}{\heatcapacitysymbol}
+ {\text_lowercase:n \g_@@_pressure_symbol}
+ \RenewExpandableDocumentCommand{\xrxn}{}{\zeta}
+ \RenewDocumentCommand{\fmix}{}{f}
+ \RenewDocumentCommand{\Qm}{}{Q}
+ \RenewDocumentCommand{\Qs}{}{Q}
+ \RenewExpandableDocumentCommand{\kappaT}{}{\compressibilitysymbol}
+ \RenewExpandableDocumentCommand{\expansivitysymbol}{}{\beta}
+ \RenewExpandableDocumentCommand{\alphaP}{}{\expansivitysymbol}
+ \RenewSubscriptedSymbol{\muJT}{\JTsymbol}{J}
+ \RenewDocumentCommand{\Deltaf}{m}
+ { \tl_set:Nn \l_@@_Deltaf_sym_tl {#1} \@@_Deltaf }
+ \RenewDocumentCommand{\Pstd}{}{P\c_math_subscript_token 0}
+ \RenewDocumentCommand{\Wm}{}{W}
+ \RenewDocumentCommand{\Ws}{}{W}
+ \cs_new:Nn \@@_fpure_one:n
+ {
+ f\c_math_subscript_token{#1}
+ \peek_catcode_remove:NF \c_math_superscript_token
+ { \c_math_superscript_token\bullet }
+ }
+ \RenewDocumentCommand{\fpure}{}
+ {
+ \peek_catcode_remove:NTF \c_math_subscript_token
+ { \@@_fpure_one:n }
+ { f }
+ }
+ \cs_new:Nn \@@_phipure_one:n
+ {
+ \phi\c_math_subscript_token{#1}
+ \peek_catcode:NF \c_math_superscript_token
+ { \c_math_superscript_token\bullet }
+ }
+ \RenewDocumentCommand{\phipure}{}
+ {
+ \peek_catcode_remove:NTF \c_math_subscript_token
+ {
+ \@@_phipure_one:n
+ }
+ {\phi}
+ }
+ \RenewDocumentCommand{\phimix}{}{\phi}
+ }
}
\DeclareOption{CBK}{
- \ExecuteOptions{EUAGHAN,intensive-lowercase}
+ \ExecuteOptions{EUAGHAN,intensive-lowercase,delta,shortpm}
\AtEndOfPackage{
- \cs_set:Nn \@@_overline:n {\widetilde{#1}}
+ \cs_set:Nn \@@_overline:n {\widetilde #1}
+ \cs_set:Nn \@@_overline_copy:n {\widetilde #1}
\cs_set:Nn \@@_specific:n {\text_lowercase:n {#1}}
\cs_set:Nn \@@_intensive:n {\bar{\text_lowercase:n{#1}}}
+ \tl_gset:Nn \g_@@_area_symbol A
+ \RenewExpandableDocumentCommand{\reaction}{}{R}
+ \cs_new:Npn \Delta_vap_sym {} {}
+ \NewSubscriptedSymbol{\Delta_vap}{\Delta_vap_sym}{{fg}}
+ \RenewDocumentCommand{\Deltavap}{m}{
+ \cs_set:Npn \Delta_vap_sym {} {#1}
+ \Delta_vap
+ }
+ \cs_new:Npn \Delta_fus_sym {} {}
+ \NewSubscriptedSymbol{\Delta_fus}{\Delta_fus_sym}{{sf}}
+ \RenewDocumentCommand{\Deltafus}{m}{
+ \cs_set:Npn \Delta_fus_sym {} {#1}
+ \Delta_fus
+ }
+ \cs_new:Npn \Delta_sub_sym {} {}
+ \NewSubscriptedSymbol{\Delta_sub}{\Delta_sub_sym}{{sg}}
+ \RenewDocumentCommand{\Deltasub}{m}{
+ \cs_set:Npn \Delta_sub_sym {} {#1}
+ \Delta_sub
+ }
\tl_gset:Nn \g_@@_pressure_symbol p
- \RenewDocumentCommand{\Deltarxn}{m}{{#1}\c_math_subscript_token R}
- \RenewDocumentCommand{\compressibilitysymbol}{}{\beta}
- \RenewDocumentCommand{\expansivitysymbol}{}{\alpha}
+ \RenewExpandableDocumentCommand{\compressibilitysymbol}{}{\alpha}
+ \RenewExpandableDocumentCommand{\expansivitysymbol}{}{\beta}
+ \RenewExpandableDocumentCommand{\kappaT}{}{\compressibilitysymbol}
+ \RenewExpandableDocumentCommand{\alphaP}{}{\expansivitysymbol}
+ \RenewSuperscriptedSymbol{\Psat}{P}{v}
+ \RenewDocumentCommand{\Deltaf}{m}
+ { \tl_set:Nn \l_@@_Deltaf_sym_tl {#1}
+ \@@_Deltaf
+ }
+ \RenewDocumentCommand{\Pstd}{}{P\c_math_subscript_token 0}
+ \RenewDocumentCommand{\Lm}{}{\@@_intensive:n\omega}
+ \RenewDocumentCommand{\Ls}{}{\@@_specific:n\omega}
}
}
\DeclareOption{ElliottLira}{
+ \ExecuteOptions{shortpm}
\AtEndOfPackage{
+ \cs_gset_eq:NN \@@_specific:n \@@_intensive:n
+ %^^A\RenewDocumentCommand{\partialmolar}{m}{\@@_overline:n #1}
\RenewDocumentCommand{\allcomponents}{O{} m}{#2}
\RenewDocumentCommand{\Deltarxn}{m}{\Delta #1}
- \RenewDocumentCommand{\IG}{}{{\text{ig}}}
- \RenewDocumentCommand{\IGM}{}{{\text{ig}}}
- \RenewDocumentCommand{\IS}{}{{\text{is}}}
+ \RenewDocumentCommand{\fusion}{}{{fus}}
+ \RenewDocumentCommand{\sublimation}{}{{sub}}
+ \RenewDocumentCommand{\vaporization}{}{{vap}}
+ \RenewDocumentCommand{\sat}{}{{sat}}
+ %^^A\RenewSubscriptedSymbol{\Henrymol}{/K}{H} %^^A FIXME
+ \RenewDocumentCommand{\IG}{}{{ig}}
+ \RenewDocumentCommand{\IGM}{}{{ig}}
+ \RenewDocumentCommand{\IS}{}{{is}}
+ \RenewDocumentCommand{\Cstd}{}{m\c_math_superscript_token \std}
+ \RenewDocumentCommand{\muJT}{}{\mu\c_math_subscript_token{JT}}
+ }
+}
+\DeclareOption{KlotzRosenberg}{
+ \ExecuteOptions{delta}
+ \AtEndOfPackage{
+ \tl_set:Nn \l_@@_sub_separator_tl {}
+ \cs_set:Nn \@@_extensive:n {#1}
+ \cs_new:Nn \@@_intensive_one:n
+ {
+ \c_math_superscript_token {#1}
+ \peek_catcode_remove:NTF \c_math_subscript_token
+ { \@@_intensive_three:n }
+ { \c_math_subscript_token{\mathrm{m}} }
+ }
+ \cs_new:Nn \@@_intensive_three:n
+ { \c_math_subscript_token{\mathrm{m}\l_@@_sub_separator_tl #1} }
+ \cs_new:Nn \@@_intensive_two:n
+ {
+ \c_math_subscript_token{\mathrm{m}\l_@@_sub_separator_tl #1}
+ \peek_catcode:NF \c_math_superscript_token
+ { \c_math_superscript_token\bullet }
+ }
+ \cs_set:Nn \@@_intensive:n
+ {
+ #1
+ \peek_catcode_remove:NTF \c_math_superscript_token
+ { \@@_intensive_one:n }
+ { \peek_catcode_remove:NTF \c_math_subscript_token
+ { \@@_intensive_two:n }
+ { \c_math_subscript_token{\mathrm{m}} }
+ }
+ }
+ \cs_new:Nn \@@_fpure_one:n
+ {
+ f\c_math_subscript_token{#1}
+ \peek_catcode_remove:NF \c_math_superscript_token
+ { \c_math_superscript_token\bullet }
+ }
+ \RenewDocumentCommand{\fpure}{}
+ {
+ \peek_catcode_remove:NTF \c_math_subscript_token
+ { \@@_fpure_one:n }
+ { f }
+ }
+ \cs_new:Nn \@@_phipure_one:n
+ {
+ \gamma\c_math_subscript_token{#1}
+ \peek_catcode_remove:NF \c_math_superscript_token
+ { \c_math_superscript_token\bullet }
+ }
+ \RenewDocumentCommand{\phipure}{}
+ {
+ \peek_catcode_remove:NTF \c_math_subscript_token
+ { \@@_phipure_one:n }
+ { \gamma }
+ }
+ \RenewDocumentCommand{\fmix}{}{f}
+ \RenewDocumentCommand{\phimix}{}{\gamma}
+ \RenewDocumentCommand{\phisat}{}{\gamma^\sat}
+ \cs_if_exist:NTF \gammaup
+ { \RenewDocumentCommand{\gamma}{}{\gammaup} }
+ { \cs_if_exist:NT \upgamma
+ { \RenewDocumentCommand{\gamma}{}{\upgamma} }
+ }
+ \RenewDocumentCommand{\gammarat}{}{\gamma}
+ \RenewDocumentCommand{\gammamol}{}{\gamma}
+ \cs_if_exist:NTF \muup
+ {\RenewDocumentCommand{\mu}{}{\muup}}
+ {\cs_if_exist:NT \upmu
+ {\RenewDocumentCommand{\mu}{}{\upmu}}
+ }
+ \cs_if_exist:NTF \alphaup
+ {\RenewExpandableDocumentCommand{\expansivitysymbol}{}{\alphaup}}
+ {\cs_if_exist:NTF \upalpha
+ {\RenewExpandableDocumentCommand{\compressibilitysymbol}{}{\alphaup}}
+ {\RenewExpandableDocumentCommand{\compressibilitysymbol}{}{\alpha}}
+ }
+ \cs_if_exist:NTF \betaup
+ {\RenewExpandableDocumentCommand{\compressibilitysymbol}{}{\betaup}}
+ {\cs_if_exist:NTF \upbeta
+ {\RenewExpandableDocumentCommand{\compressibilitysymbol}{}{\betaup}}
+ {\RenewExpandableDocumentCommand{\compressibilitysymbol}{}{\beta}}
+ }
+ \cs_if_exist:NTF \xiup
+ {\RenewDocumentCommand{\xrxn}{}{\xiup}}
+ {\cs_if_exist:NT \upxi
+ {\RenewDocumentCommand{\xrxn}{}{\upxi}}
+ }
+ \RenewDocumentCommand{\kappaT}{}{\compressibilitysymbol}
+ \RenewDocumentCommand{\alphaP}{}{\expansivitysymbol}
+ \RenewSubscriptedSymbol{\muJT}{\JTsymbol}{\text{J.T.}}
+ \RenewDocumentCommand{\Deltarxn}{m}{\Delta #1}
+ \RenewDocumentCommand{\Deltaf}{}{\Delta\c_math_subscript_token\formation}
+ \RenewDocumentCommand{\Deltafus}{}{\Delta}
+ \RenewDocumentCommand{\Deltavap}{}{\Delta}
+ \RenewDocumentCommand{\Deltasub}{}{\Delta}
+%^^A FIXME: should be \Delta G_{\text{mix},\mathrm{m}} not other way around
+ \RenewDocumentCommand{\Deltamix}{m}{
+ \tl_set:Nn \l_@@_sub_separator_tl {,}
+ \Delta #1\c_math_subscript_token{\mixing}
+ }
+ \RenewDocumentCommand{\excess}{}{{\mathrm{E}}}
+ \RenewDocumentCommand{\residual}{}{{\mathrm{R}}}
+ \cs_set:Nn \@@_overline:n {#1}
+ \RenewDocumentCommand{\IS}{}{{\mathrm{I}}}
+ \RenewDocumentCommand{\Psat}{}
+ {
+ \peek_catcode:NTF \c_math_subscript_token
+ {p\c_math_superscript_token\bullet}
+ {p}
+ }
+ \RenewDocumentCommand{\Cstd}{}{m^\std}
+ \RenewDocumentCommand{\Henryrat}{}{k}
+ \RenewDocumentCommand{\Henrymol}{}{k''}
+
+ % Fix partial molar properties
+ \cs_set:Npn \@@_pm_case_one #1
+ {
+ \l_@@_pm_symbol_tl\c_math_subscript_token{\mathrm{m}#1}
+ }
+ \cs_set:Npn \@@_pm_case_two [#1]#2
+ {
+ \l_@@_pm_symbol_tl
+ \c_math_superscript_token{#1}\c_math_subscript_token{\mathrm{m}#2}
+ }
+ \cs_set:Npn \@@_pm_case_three_part_two #1
+ {
+ \l_@@_pm_symbol_tl
+ \c_math_superscript_token{\l_@@_pm_arg_tl}
+ \c_math_subscript_token{\mathrm{m}#1}
+ }
+ \cs_set:Npn \@@_pm_case_four #1
+ {
+ \l_@@_pm_symbol_tl\c_math_superscript_token{#1}
+ \c_math_subscript_token{\mathrm{m}\l_@@_pm_arg_tl}
+ }
+ \cs_set:Npn \@@_pm_case_five
+ {
+ \l_@@_pm_symbol_tl
+ \c_math_subscript_token{\mathrm{m}\l_@@_pm_arg_tl}
+ }
+
+ % fix heat capacities
+ \RenewSubscriptedSymbol{\cP}{\heatcapacitysymbol}
+ {\g_@@_pressure_symbol\mathrm{m}}
+ \RenewSubscriptedSymbol{\cV}{\heatcapacitysymbol}
+ {\g_@@_volume_symbol\mathrm{m}}
+ \RenewDocumentCommand{\cPpm}{}{\partialmolar{\cPt}}
+ \RenewDocumentCommand{\cVpm}{}{\partialmolar{\cVt}}
+
+ \cs_set:Npn \cP_two:n #1
+ { \heatcapacitysymbol
+ \c_math_subscript_token{\g_@@_pressure_symbol\mathrm{m}
+ \l_@@_sub_separator_tl #1}
+ \peek_catcode:NF \c_math_superscript_token
+ { \c_math_superscript_token\bullet }
+ }
+ \cs_set:Npn \cV_two:n #1
+ { \heatcapacitysymbol
+ \c_math_subscript_token{\g_@@_volume_symbol\mathrm{m}
+ \l_@@_sub_separator_tl #1}
+ \peek_catcode:NF \c_math_superscript_token
+ { \c_math_superscript_token\bullet }
+ }
+ }
+ \AtBeginDocument{
+ \@ifpackageloaded{emf}{\RenewDocumentCommand{\Epot}{}{\emf}}
+ {%
+ \PackageWarningNoLine{thermodynamics}
+ {Package~emf~not~loaded;~load~to~make~Epot~match~Klotz~
+ and~Rosenberg's~notation}%
+ }
}
}
\DeclareOption{Koretsky}{
- \ExecuteOptions{EUAGHAn,brackets,intensive-lowercase,delta}
+ \ExecuteOptions{EUAGHAn,brackets,intensive-lowercase,delta,shortpm}
\AtEndOfPackage{
- %^^A Undo part of intensive-lowercase
+ \tl_gset:Nn \g_@@_area_symbol {A}
+ \RenewExpandableDocumentCommand{\std}{}{o}
+ \RenewExpandableDocumentCommand{\ncomponents}{}{m}
\RenewDocumentCommand{\partialmolar}{m}
- { \tl_set:Nn \l_@@_pm_symbol_tl {#1}
+ {
+ \tl_set:Nn \l_@@_pm_symbol_tl {#1}
\@@_generic_pm:
}
\RenewDocumentCommand{\expansivitysymbol}{}{\beta}
\RenewDocumentCommand{\IS}{}{{\text{ideal}}}
\RenewDocumentCommand{\residual}{}{{\text{dep}}}
- \RenewDocumentCommand{\IG}{}{{\text{ideal}}}
+ \RenewDocumentCommand{\IG}{}{{\text{ideal~gas}}}
\RenewDocumentCommand{\IGM}{}{{\text{ideal}}}
\RenewDocumentCommand{\Henryrat}{}{{\mathcal{H}}}
\RenewDocumentCommand{\gammarat}{}
{\gamma\c_math_superscript_token\text{Henry's}}
+ \RenewDocumentCommand{\gammamol}{}{\gamma\c_math_superscript_token{m}}
\RenewDocumentCommand{\phipure}{}{\varphi}
\RenewDocumentCommand{\phimix}{}{\hat\varphi}
\RenewDocumentCommand{\phisat}{}{\varphi\c_math_superscript_token\sat}
@@ -2238,19 +2802,100 @@
}
\cs_new:Npn \Delta_sub_sym {} {}
\NewSubscriptedSymbol{\Delta_sub}{\Delta_sub_sym}{\sublimation}
- %^^A Undo part of intensive-lowercase
\RenewDocumentCommand{\Deltasub}{m}{
\cs_set:Npn \Delta_sub_sym {} { \Delta #1 }
\Delta_sub
}
+ \tl_new:N \l_@@_Deltaf_superscript_tl
+ \tl_new:N \l_@@_Deltaf_subscript_tl
+ \bool_new:N \l_@@_Deltaf_parentheses_bool
+ \tl_new:N \l_@@_Deltaf_entity_tl
+ \cs_set:Nn \@@_Deltaf_one:n
+ {
+ \tl_set:Nn \l_@@_Deltaf_superscript_tl {#1}
+ \peek_catcode_remove:NTF \c_math_subscript_token
+ {
+ \bool_set_true:N \l_@@_Deltaf_parentheses_bool
+ \@@_Deltaf_two:n
+ }
+ {
+ \bool_if:NTF \l_@@_Deltaf_parentheses_bool
+ {
+ (\Delta\l_@@_Deltaf_entity_tl\c_math_subscript_token\formation
+ \tl_if_empty:NF \l_@@_Deltaf_superscript_tl
+ { \c_math_superscript_token\l_@@_Deltaf_superscript_tl }
+ )
+ \tl_if_empty:NF \l_@@_Deltaf_subscript_tl
+ { \c_math_subscript_token\l_@@_Deltaf_subscript_tl }
+ }
+ {
+ \Delta\l_@@_Deltaf_entity_tl\c_math_subscript_token\formation
+ \tl_if_empty:NF \l_@@_Deltaf_superscript_tl
+ { \c_math_superscript_token\l_@@_Deltaf_superscript_tl }
+ }
+ }
+ }
+ \cs_set:Nn \@@_Deltaf_two:n
+ {
+ \tl_set:Nn \l_@@_Deltaf_subscript_tl {#1}
+ % check for case 4
+ \peek_catcode_remove:NTF \c_math_superscript_token
+ { \@@_Deltaf_one:n }
+ {
+ \bool_if:NTF \l_@@_Deltaf_parentheses_bool
+ {
+ (\Delta\l_@@_Deltaf_entity_tl\c_math_subscript_token\formation
+ \tl_if_empty:NF \l_@@_Deltaf_superscript_tl
+ {\c_math_superscript_token\l_@@_Deltaf_superscript_tl}
+ )
+ \tl_if_empty:NF \l_@@_Deltaf_subscript_tl
+ \c_math_subscript_token\l_@@_Deltaf_subscript_tl
+ }
+ {
+ \Delta\l_@@_Deltaf_entity_tl\c_math_subscript_token\formation
+ \tl_if_empty:NF \l_@@_Deltaf_superscript_tl
+ {\c_math_superscript_token\l_@@_Deltaf_superscript_tl}
+ }
+ }
+ }
+ \RenewDocumentCommand{\Deltaf}{m}
+ {
+ \tl_clear:N \l_@@_Deltaf_superscript_tl
+ \tl_clear:N \l_@@_Deltaf_subscript_tl
+ \tl_set:Nn \l_@@_Deltaf_entity_tl {#1}
+ \bool_set_false:N \l_@@_Deltaf_parentheses_bool
+ \peek_catcode_remove:NTF \c_math_superscript_token
+ {
+ \@@_Deltaf_one:n
+ }
+ {
+ \peek_catcode_remove:NTF \c_math_subscript_token
+ {
+ \bool_set_true:N \l_@@_Deltaf_parentheses_bool
+ \@@_Deltaf_two:n
+ }
+ {
+ \Delta #1\c_math_subscript_token \formation
+ }
+ }
+ }
+ \RenewDocumentCommand{\kappaT}{}{\compressibilitysymbol}
+ \RenewDocumentCommand{\alphaP}{}{\expansivitysymbol}
+ \RenewSubscriptedSymbol{\cV}{\@@_intensive:n \heatcapacitysymbol}
+ {\@@_intensive:n \g_@@_volume_symbol}
+ \RenewSubscriptedSymbol{\cVs}{\@@_specific:n \heatcapacitysymbol}
+ {\@@_intensive:n \g_@@_volume_symbol}
+ \RenewDocumentCommand{\Lm}{}{\omega}
+ \RenewDocumentCommand{\Ls}{}{\hat\omega}
}
}
\DeclareOption{MSBB}{
- \ExecuteOptions{EUFGHAn,intensive-lowercase,delta}
+ \ExecuteOptions{EUFGHAn,intensive-lowercase,delta,shortpm}
\AtEndOfPackage{
- \RenewDocumentCommand{\IGM}{}{\ast}
+ \RenewDocumentCommand{\IGM}{}{\ast} % FIXME: is this * or \circ?
\RenewDocumentCommand{\IG}{}{\ast}
\RenewDocumentCommand{\expansivitysymbol}{}{\beta}
+ \RenewDocumentCommand{\muJT}{}{\mu\c_math_subscript_token J}
\RenewDocumentCommand{\allcomponents}{O{} m}{#2}
\RenewDocumentCommand{\allbut}{O{j} m m}
{
@@ -2260,29 +2905,114 @@
}
\tl_gset_eq:NN \g_@@_Helmholtz_symbol \psi
\RenewDocumentCommand{\Ft}{}{\Psi}
+ \RenewDocumentCommand{\Fpm}{}{\partialmolar{\Psi}}
\cs_set:Nn \@@_intensive:n {\@@_overline:n{\text_lowercase:n{#1}}}
\cs_set:Nn \@@_specific:n {\text_lowercase:n{#1}}
\RenewDocumentCommand{\fmix}{}{\bar f}
\RenewDocumentCommand{\phimix}{}{\bar\phi}
\RenewDocumentCommand{\phimix}{}{\bar\phi}
\tl_gset:Nn \g_@@_pressure_symbol p
+ \tl_gset:Nn \g_@@_volume_symbol v
\RenewDocumentCommand{\partialmolar}{m}
{
- \tl_set:Nn \l_@@_pm_symbol_tl {#1}
+ \tl_set:Nn \l_@@_pm_symbol_tl {\text_uppercase:n #1}
\@@_generic_pm:
}
+ \RenewDocumentCommand{\kappaT}{}{\compressibilitysymbol}
+ \RenewDocumentCommand{\alphaP}{}{\expansivitysymbol}
+ \RenewDocumentCommand{\mustd}{}{\Gm^\std}
+ \RenewExpandableDocumentCommand{\formation}{}{{\mathrm{f}}}
+ \RenewDocumentCommand{\Pstd}{}
+ {\g_@@_pressure_symbol\c_math_subscript_token\text{ref}}
+ \RenewExpandableDocumentCommand{\xrxn}{}{\varepsilon}
+ \RenewExpandableDocumentCommand{\Lm}{}{\@@_intensive:n \omega}
+ \RenewExpandableDocumentCommand{\Ls}{}{\@@_specific:n \omega}
+ \RenewExpandableDocumentCommand{\heatcapacitysymbol}{}{C}
+ \tl_new:N \l_@@_Deltaf_superscript_tl
+ \tl_new:N \l_@@_Deltaf_subscript_tl
+ \bool_new:N \l_@@_Deltaf_parentheses_bool
+ \tl_new:N \l_@@_Deltaf_entity_tl
+ \cs_set:Nn \@@_Deltaf_one:n
+ {
+ \tl_set:Nn \l_@@_Deltaf_superscript_tl {#1}
+ \peek_catcode_remove:NTF \c_math_subscript_token
+ {
+ \bool_set_true:N \l_@@_Deltaf_parentheses_bool
+ \@@_Deltaf_two:n
+ }
+ {
+ \bool_if:NTF \l_@@_Deltaf_parentheses_bool
+ {
+ (\l_@@_Deltaf_entity_tl\c_math_subscript_token\formation
+ \tl_if_empty:NF \l_@@_Deltaf_superscript_tl
+ { \c_math_superscript_token\l_@@_Deltaf_superscript_tl }
+ )
+ \tl_if_empty:NF \l_@@_Deltaf_subscript_tl
+ { \c_math_subscript_token\l_@@_Deltaf_subscript_tl }
+ }
+ {
+ \l_@@_Deltaf_entity_tl\c_math_subscript_token{\formation}
+ \tl_if_empty:NF \l_@@_Deltaf_superscript_tl
+ { \c_math_superscript_token\l_@@_Deltaf_superscript_tl }
+ }
+ }
+ }
+ \cs_set:Nn \@@_Deltaf_two:n
+ {
+ \tl_set:Nn \l_@@_Deltaf_subscript_tl {#1}
+ % check for case 4
+ \peek_catcode_remove:NTF \c_math_superscript_token
+ { \@@_Deltaf_one:n }
+ {
+ \bool_if:NTF \l_@@_Deltaf_parentheses_bool
+ {
+ (\l_@@_Deltaf_entity_tl\c_math_subscript_token\formation
+ \tl_if_empty:NF \l_@@_Deltaf_superscript_tl
+ { \c_math_superscript_token\l_@@_Deltaf_superscript_tl }
+ )
+ \tl_if_empty:NF \l_@@_Deltaf_subscript_tl
+ { \c_math_subscript_token\l_@@_Deltaf_subscript_tl }
+ }
+ {
+ \l_@@_Deltaf_entity_tl\c_math_subscript_token\formation
+ \tl_if_empty:NF \l_@@_Deltaf_superscript_tl
+ { \c_math_superscript_token\l_@@_Deltaf_superscript_tl }
+ }
+ }
+ }
+ \RenewDocumentCommand{\Deltaf}{m}
+ {
+ \tl_clear:N \l_@@_Deltaf_superscript_tl
+ \tl_clear:N \l_@@_Deltaf_subscript_tl
+ \tl_set:Nn \l_@@_Deltaf_entity_tl {#1}
+ \bool_set_false:N \l_@@_Deltaf_parentheses_bool
+ \peek_catcode_remove:NTF \c_math_superscript_token
+ {
+ \@@_Deltaf_one:n
+ }
+ {
+ \peek_catcode_remove:NTF \c_math_subscript_token
+ {
+ \bool_set_true:N \l_@@_Deltaf_parentheses_bool
+ \@@_Deltaf_two:n
+ }
+ {
+ \Delta #1\c_math_subscript_token \formation
+ }
+ }
+ }
}
}
\DeclareOption{Prausnitz}{
- \ExecuteOptions{intensive-lowercase}
+ \ExecuteOptions{intensive-lowercase,shortpm}
\AtEndOfPackage{
+ \RenewExpandableDocumentCommand{\ncomponents}{}{m}
\RenewDocumentCommand{\fmix}{}{f}
- \RenewDocumentCommand{\phimix}{}{\phi}
\RenewDocumentCommand{\fsat}{}{\fpure\c_math_superscript_token\sat}
- % TODO: this should pick up H_2 and make it into H_{2,1} (assuming the
- % solvent is always 1...?)
+ % TODO: this should pick up H_2 and make it into H_{2,1} (assuming
+ % the solvent is always 1...?)
\RenewDocumentCommand{\Henryrat}{}{H}
- \RenewDocumentCommand{\residual}{}{{{\mathcal{R}}}}
+ %^^A\RenewDocumentCommand{\residual}{}{{{\mathcal{R}}}}
\RenewDocumentCommand{\allcomponents}{O{i} m}
{ {#2}\c_math_subscript_token{#1} }
\RenewDocumentCommand{\allbut}{O{i} m m}
@@ -2290,14 +3020,36 @@
{ {#3}\c_math_subscript_token k }
{ {#3}\c_math_subscript_token{#1} }
}
+ \tl_set:Nn \l_@@_sub_separator_tl {\,}
+ \tl_gset:Nn \g_@@_pressure_symbol {p}
+ \tl_gset:Nn \g_@@_volume_symbol {v}
\RenewSubscriptedSymbol{\fpure}{f}{{\text{pure}}}
- \RenewSubscriptedSymbol{\phipure}{\phi}{{\text{pure}}}
+ \RenewDocumentCommand{\phimix}{}{\varphi}
+ \RenewDocumentCommand{\phisat}{}{\varphi^\sat}
+ \RenewDocumentCommand{\sat}{}{s}
+ \RenewDocumentCommand{\mixing}{}{\text{mixing}}
+ \RenewDocumentCommand{\Lm}{}{\omega}
+ \RenewDocumentCommand{\Ls}{}{\@@_specific:n \omega}
+ \RenewSubscriptedSymbol{\phipure}{\varphi}{{\text{pure}}}
+ \RenewDocumentCommand{\IG}{}{{\text{id}}}
+ \RenewDocumentCommand{\IGM}{}{{\text{id}}}
+ \RenewDocumentCommand{\IS}{}{{\text{(ideal)}}}
+ \RenewExpandableDocumentCommand{\compressibilitysymbol}{}{\beta}
+ \RenewDocumentCommand{\kappaT}{}{\compressibilitysymbol}
+ \RenewDocumentCommand{\alphaP}{}{\expansivitysymbol}
+ \RenewExpandableDocumentCommand{\std}{}{0}
+ \@ifpackageloaded{emf}
+ {\RenewDocumentCommand{\Epot}{}{\emf}}
+ {\RenewDocumentCommand{\Epot}{}{\mathcal{E}}}
+ \DeclareMathAlphabet{\mathdutchcal}{U}{dutchcal}{m}{n}
+ \RenewExpandableDocumentCommand{\actrel}{}{\mathdutchcal{a}}
}
}
\DeclareOption{Sandler}{
- \ExecuteOptions{EUAGHaN,extensive-plain}
+ \ExecuteOptions{EUAGHaN,extensive-plain,shortpm}
\AtEndOfPackage{
- \RenewDocumentCommand{\sat}{}{{\text{vap}}}
+ \RenewDocumentCommand{\Pvap}{}
+ {{P\c_math_superscript_token{\text{vap}}}}
\RenewDocumentCommand{\excess}{}{{\text{ex}}}
\RenewDocumentCommand{\residual}{}{{\text{r}}}
\RenewExpandableDocumentCommand{\ncomponents}{}{\mathcal{C}}
@@ -2318,6 +3070,12 @@
{\Delta\c_math_subscript_token\fusion #1}
\RenewDocumentCommand{\Deltavap}{m}
{\Delta\c_math_subscript_token\vaporization #1}
+ \RenewDocumentCommand{\Pstd}{}{\text{1~bar}
+ \peek_catcode_remove:NT \c_math_subscript_token {\use_none:n}
+ }
+ \RenewDocumentCommand{\Cstd}{}{\text{1~molal}
+ \peek_catcode_remove:NT \c_math_subscript_token {\use_none:n}
+ }
\RenewDocumentCommand{\Henryrat}{}{H}
\RenewSubscriptedSymbol{\cV}
{\heatcapacitysymbol}{\g_@@_volume_symbol}
@@ -2327,10 +3085,16 @@
{\Nt\heatcapacitysymbol}{\g_@@_volume_symbol}
\RenewSubscriptedSymbol{\cPt}
{\Nt\heatcapacitysymbol}{\g_@@_pressure_symbol}
+ \RenewDocumentCommand{\formation}{}{\mathrm{f}}
+ \RenewDocumentCommand{\Deltaf}{}
+ {\Delta\c_math_subscript_token\formation}
+ \RenewDocumentCommand{\alphaP}{}{\expansivitysymbol}
+ \RenewDocumentCommand{\muJT}{}{\mu}
+ \RenewDocumentCommand{\xrxn}{}{X}
}
}
\DeclareOption{SVNAS}{
- \ExecuteOptions{extensive-superscript}
+ \ExecuteOptions{extensive-superscript,shortpm}
\AtEndOfPackage{
\RenewDocumentCommand{\allcomponents}{O{} m}{#2}
\RenewDocumentCommand{\allbut}{O{j} m m}
@@ -2342,17 +3106,44 @@
\RenewDocumentCommand{\IG}{}{{ig}}
\RenewDocumentCommand{\IGM}{}{{ig}}
\RenewDocumentCommand{\IS}{}{{id}}
+ \RenewDocumentCommand{\IS}{}{{id}}
+ \RenewDocumentCommand{\fusion}{}{{sl}}
+ \RenewDocumentCommand{\vaporization}{}{{vl}}
+ \RenewDocumentCommand{\sublimation}{}{{vs}}
\RenewDocumentCommand{\expansivitysymbol}{}{\beta}
+ \RenewDocumentCommand{\xrxn}{}{\varepsilon}
\RenewDocumentCommand{\Deltarxn}{m}{\Delta #1}
+ \RenewDocumentCommand{\Deltamix}{m}{\Delta #1}
\RenewSubscriptedSymbol{\cVt}
{\Nt\heatcapacitysymbol}{\g_@@_volume_symbol}
\RenewSubscriptedSymbol{\cPt}
{\Nt\heatcapacitysymbol}{\g_@@_pressure_symbol}
+ % FIXME
+ \RenewDocumentCommand{\cP}{}
+ {{\heatcapacitysymbol\c_math_subscript_token\g_@@_pressure_symbol}}
+ \RenewDocumentCommand{\cV}{}
+ {{\heatcapacitysymbol\c_math_subscript_token\g_@@_volume_symbol}}
+ \RenewDocumentCommand{\kappaT}{}{\compressibilitysymbol}
+ \RenewDocumentCommand{\alphaP}{}{\expansivitysymbol}
+ \RenewDocumentCommand{\muJT}{}{\mu}
+ \RenewDocumentCommand{\Cstd}{}{m\c_math_superscript_token\std
+ \peek_catcode_remove:NT \c_math_subscript_token {\use_none:n}
+ }
+ \RenewDocumentCommand{\mustd}{}{\Gm\c_math_superscript_token\std}
+ \RenewDocumentCommand{\Henryrat}{}{\mathcal{H}}
+ \RenewDocumentCommand{\formation}{}
+ {
+ \tl_set:Nn \l_@@_sub_separator_tl {}
+ f298
+ }
+ \cs_set:Nn \@@_specific:n {#1}
}
}
+\DeclareOption{ModellReid}{\ExecuteOptions{TesterModell}}
\DeclareOption{TesterModell}{
- \ExecuteOptions{EUAGHaN,delta}
+ \ExecuteOptions{EUAGHaN,delta,shortpm}
\AtEndOfPackage{
+ \cs_set:Nn \@@_specific:n {\text_lowercase:n{#1}}
\RenewExpandableDocumentCommand{\ncomponents}{}{n}
\RenewDocumentCommand{\allcomponents}{O{i} m}
{
@@ -2379,23 +3170,62 @@
\RenewDocumentCommand{\Henryrat}{}
{f\c_math_superscript_token{\ast\ast}}
\RenewDocumentCommand{\Henrymol}{}{f\c_math_superscript_token\ast}
+ \cs_if_exist:NTF \gammaup
+ { \RenewDocumentCommand{\gamma}{}{\gammaup} }
+ { \cs_if_exist:NT \upgamma
+ { \RenewDocumentCommand{\gamma}{}{\upgamma} }
+ }
\RenewDocumentCommand{\gammarat}{}
{\gamma\c_math_superscript_token{\ast\ast}}
\RenewDocumentCommand{\gammamol}{}
{\gamma\c_math_superscript_token\ast}
\RenewExpandableDocumentCommand{\JTsymbol}{}{\alpha}
\RenewSubscriptedSymbol{\muJT}{\JTsymbol}{H}
+ \cs_if_exist:NTF \xiup
+ { \RenewDocumentCommand{\xrxn}{}{\xiup} }
+ { \cs_if_exist:NT \upxi
+ { \RenewDocumentCommand{\xrxn}{}{\upxi} }
+ }
+ \cs_if_exist:NTF \phiup
+ {
+ \RenewDocumentCommand{\phipure}{}{\phiup}
+ \RenewDocumentCommand{\phimix}{}{\hat\phiup}
+ \RenewDocumentCommand{\phisat}{}{\phiup\c_math_superscript_token\sat}
+ }
+ { \cs_if_exist:NT \upphi
+ {
+ \RenewDocumentCommand{\phipure}{}{\upphi}
+ \RenewDocumentCommand{\phimix}{}{\hat\upphi}
+ \RenewDocumentCommand{\phisat}{}{\upphi\c_math_superscript_token\sat}
+ }
+ }
+ \RenewDocumentCommand{\Cstd}{}{m\c_math_superscript_token+
+ \peek_catcode_remove:NT \c_math_subscript_token {\use_none:n}
+ }
+ \cs_if_exist:NTF \muup
+ { \RenewDocumentCommand{\mu}{}{\muup} }
+ { \cs_if_exist:NT \upmu
+ { \RenewDocumentCommand{\mu}{}{\upmu} }
+ }
+ \RenewDocumentCommand{\std}{}{o}
+ \RenewDocumentCommand{\Pstd}{}{P^\ast}
+ \tl_gset:Nn \g_@@_area_symbol {\text{\large\(\mathit{a}\)}}
+ \RenewDocumentCommand{\Epot}{}{\exists}
+ \tl_set:Nn \l_@@_sub_separator_tl {}
+ \tl_gset:Nn \g_@@_pressure_symbol {p}
+ \RenewSubscriptedSymbol{\cVt}{\@@_extensive:n {\heatcapacitysymbol}}{v}
+ \RenewSubscriptedSymbol{\cV}{\@@_intensive:n {\heatcapacitysymbol}}{v}
+ \RenewSubscriptedSymbol{\cVs}{\@@_specific:n {\heatcapacitysymbol}}{v}
}
}
\DeclareOption{Thompson}{
- \ExecuteOptions{EUAGHAn,delta}
+ \ExecuteOptions{EUAGHAn,delta,shortpm}
\AtEndOfPackage
{
\RenewDocumentCommand{\excess}{}{{EX}}
\RenewDocumentCommand{\residual}{}{{R}}
- %^^A He uses k_H for both types of Henry's constant, but I changed
- %^^A the rational basis one just so there is SOME difference
- \RenewSubscriptedSymbol{\Henryrat}{k}{h}
+ \RenewDocumentCommand{\actrel}{}{\widehat{a}}
+ \RenewSubscriptedSymbol{\Henryrat}{k}{H}
\RenewSubscriptedSymbol{\Henrymol}{k}{H}
\RenewDocumentCommand{\allcomponents}{O{j} m}
{
@@ -2432,7 +3262,8 @@
}
}
\cs_set:Nn \@@_intensive:n
- { #1
+ {
+ #1
\peek_catcode_remove:NT \c_math_subscript_token
{ \@@_intensive_two:n }
}
@@ -2450,10 +3281,16 @@
}
{\phi}
}
+ \RenewDocumentCommand{\phimix}{}{\widehat\phi}
+ \RenewDocumentCommand{\fmix}{}{\widehat f}
\RenewDocumentCommand{\mixing}{}{{MIX}}
+ \RenewDocumentCommand{\muJT}{}{\alpha\c_math_subscript_token H}
\RenewDocumentCommand{\Deltamix}{m}
{\Delta\c_math_subscript_token\mixing #1}
- \RenewDocumentCommand{\Deltarxn}{m}{\Delta #1}
+ \RenewDocumentCommand{\reaction}{}{R}
+ \RenewDocumentCommand{\fusion}{}{{SL}}
+ \RenewDocumentCommand{\vaporization}{}{{LV}}
+ \RenewDocumentCommand{\sublimation}{}{{SV}}
\RenewDocumentCommand{\allbut}{O{j} m m}
{ \tl_if_eq:nnTF {#1} {#2}
{
@@ -2463,18 +3300,25 @@
{#3}\c_math_subscript_token{#1}\neq{#3}\c_math_subscript_token{#2}
}
}
+ \RenewDocumentCommand{\Cstd}{}{m^\std}
+ \RenewDocumentCommand{\mustd}{}{\Gamma}
+ \RenewDocumentCommand{\formation}{}{F}
+%^^A \RenewDocumentCommand{\Deltarxn}{}{\Delta}
}
}
% \end{macrocode}
% We execute the default options below.
% \begin{macrocode}
-\ExecuteOptions{EUAGHan,subscripts,parentheses,intensive-plain,moles-index}
+\ExecuteOptions{EUAGHan,subscripts,parentheses,intensive-plain,
+ moles-index,longpm}
\ProcessOptions
% \end{macrocode}
+% \subsection{Variable Order}
% We next encode a routine to sort non-subscripted variables into a consistent
% order. It currently does not sort variables with subscripts.
% \changes{v2.00}{2023/11/16}{Added a sorting routine to make function
-% arguments be in a consistent order using the |nosubscripts| option.}
+% arguments be in a consistent order using the \texttt{nosubscripts}
+% option.}
% \begin{macrocode}
\tl_const:Nn \c_@@_sort_order_tl
{\Et\Em\Es\Ut\Um\Us\Ht\Hm\Hs\Ft\Fm\Fs\Gt\Gm\Gs\Lt\Lm\Ls T\St\Sm\Ss
@@ -2540,11 +3384,14 @@
% of partial derivatives. The command \cs{Partial*} is the same as
% \cs{Partial} except that it adjusts the spacing so the (presumably) binary
% operator that follows it slightly overlaps the subscripts.
-% \changes{v1.01}{2022/03/01}{Changed \cs{adjust@width} to 2pt (up from 1pt)}
+% \changes{v1.01}{2022/03/01}{Changed \cs{adjust@width} to 2pt (up from 1pt).}
% \changes{v1.01}{2022/04/21}{Changed \cs{adjust@width} 0.1\cs{operator@width}
-% (from 2pt)}
+% (from 2pt).}
% \changes{v2.00}{2023/11/16}{Changed length added to
-% \cs{l_@@_Partial_const_dim} from $-0.15$ to $-0.20$}
+% \ExplSyntaxOn
+% \cs{l_@@_Partial_const_dim}~
+% \ExplSyntaxOff
+% from $-0.15$ to $-0.20$.}
% \begin{macrocode}
\tl_new:N \l_@@_Partial_start_tl
\tl_new:N \l_@@_Partial_end_tl
@@ -2676,8 +3523,8 @@
% \end{macro}
% \begin{macro}{\PartialSecondBigg}
% The \cs{PartialSecondBigg} macro and its starred variant replace \cs{left}
-% and \tn{right} with \pkg{amsmath}'s \cs[module=amsmath]{Biggl} and
-% \cs[module=amsmath]{Biggr}.
+% and \tn{right} with \pkg{amsmath}'s \cs{Biggl} and
+% \cs{Biggr}.
% \begin{macrocode}
\NewDocumentCommand{\PartialSecondBigg}{}
{ \tl_set:Nn \l_@@_Partial_start_tl {\biggl\l_@@_PartialOpen_tl}
@@ -2689,8 +3536,8 @@
% \end{macro}
% \begin{macro}{\PartialSecondbigg}
% The \cs{PartialSecondbigg} macro and its starred variant replace \tn{left}
-% and \tn{right} with \pkg{amsmath}'s \cs[module=amsmath]{biggl} and
-% \cs[module=amsmath]{biggr}.
+% and \tn{right} with \pkg{amsmath}'s \cs{biggl} and
+% \cs{biggr}.
% \begin{macrocode}
\NewDocumentCommand{\PartialSecondbigg}{}
{ \tl_set:Nn \l_@@_Partial_start_tl {\biggl\l_@@_PartialOpen_tl}
@@ -2808,14 +3655,14 @@
% \end{macrocode}
%
% If the user does not load the \pkg{amsmath} package, we will not have access
-% to \cs[module=amsmath]{Biggl}, \cs{Biggr}, \cs{biggl}, and \cs{biggr}, so we revert them back
+% to \cs{Biggl}, \cs{Biggr}, \cs{biggl}, and \cs{biggr}, so we revert them back
% to the ordinary \cs{left} and \cs{right} versions and warn the user.
% \begin{macrocode}
\AtBeginDocument{%
\@ifpackageloaded{amsmath}{}{%
\PackageWarningNoLine{thermodynamics}
- {Package~amsmath~not~loaded;~load~to~make~PartialBigg~and~friends
- ~work~correctly}%
+ {Package~amsmath~not~loaded;~load~to~make~PartialBigg~and~friends~
+ work~correctly}%
\cs_set_eq:NN \PartialBigg \Partial
\cs_set_eq:NN \Partialbigg \Partial
\cs_set_eq:NN \PartialSecondBigg \PartialSecond
@@ -3046,13 +3893,13 @@
% of \pkg{xparse}-based \cs{NewSubscriptedSymbol} and
% \cs{RenewSubscriptedSymbol}.}
% \begin{macrocode}
+\str_new:N \l_@@_tmp_str
\cs_new:Npn \@@_check_definable:nN #1#2
{
- \bool_set_true:N \l_@@_arg_legal_bool
\tl_trim_spaces_apply:nN {#1} \tl_if_single_token:nTF
{
- \str_set:Nx \l_tmp_str {\tl_to_str:n {#1}}
- \int_compare:nNnT {\str_count:N \l_tmp_str} = 1
+ \str_set:Nx \l_@@_tmp_str {\tl_to_str:n {#1}}
+ \int_compare:nNnT {\str_count:N \l_@@_tmp_str} = 1
{ \PackageError{thermodynamics}
{First~argument~of~'\tl_trim_spaces:o {\tl_to_str:n {#2}}'~
must~be~a~command}
@@ -3072,7 +3919,11 @@
contains~more~than~one~token.
\MessageBreak Perhaps~a~backslash~is~missing?}
}
-}
+}
+\tl_new:N \l_@@_super_separator_tl
+\tl_new:N \l_@@_sub_separator_tl
+\tl_set:Nn \l_@@_super_separator_tl {,}
+\tl_set:Nn \l_@@_sub_separator_tl {,}
\NewDocumentCommand{\NewSubscriptedSymbol}{m m m}
{
\@@_check_definable:nN {#1} \NewSubscriptedSymbol
@@ -3092,10 +3943,10 @@
}
\cs_new:cpn {\cs_to_str:N #1_two:n} ##1
- { {#2}\c_math_subscript_token{#3,##1} }
+ { {#2}\c_math_subscript_token{#3\l_@@_sub_separator_tl ##1} }
\cs_new:cpn {\cs_to_str:N #1_three:n} ##1
- { \c_math_subscript_token{#3,##1} }
+ { \c_math_subscript_token{#3\l_@@_sub_separator_tl ##1} }
\NewDocumentCommand{#1}{}
{% @branch
@@ -3126,10 +3977,10 @@
}
\cs_set:cpn {\cs_to_str:N #1_two:n} ##1
- { {#2}\c_math_subscript_token{#3,##1} }
+ { {#2}\c_math_subscript_token{#3\l_@@_sub_separator_tl ##1} }
\cs_set:cpn {\cs_to_str:N #1_three:n} ##1
- { \c_math_subscript_token{#3,##1} }
+ { \c_math_subscript_token{#3\l_@@_sub_separator_tl ##1} }
\RenewDocumentCommand{#1}{}
{% @branch
@@ -3140,7 +3991,6 @@
{ {#2}\c_math_subscript_token{#3} }
}
}
-
}
% \end{macrocode}
% \end{macro}
@@ -3168,10 +4018,10 @@
}
\cs_new:cpn {\cs_to_str:N #1_two:n} ##1
- { {#2}\c_math_superscript_token{#3,##1} }
+ { {#2}\c_math_superscript_token{#3\l_@@_super_separator_tl ##1} }
\cs_new:cpn {\cs_to_str:N #1_three:n} ##1
- { {#2}\c_math_superscript_token{#3,##1} }
+ { {#2}\c_math_superscript_token{#3\l_@@_super_separator_tl ##1} }
\NewDocumentCommand{#1}{}
{
@@ -3202,10 +4052,10 @@
}
\cs_set:cpn {\cs_to_str:N #1_two:n} ##1
- { {#2}\c_math_superscript_token{#3,##1} }
+ { {#2}\c_math_superscript_token{#3\l_@@_super_separator_tl ##1} }
\cs_set:cpn {\cs_to_str:N #1_three:n} ##1
- { \c_math_superscript_token{#3,##1} }
+ { \c_math_superscript_token{#3\l_@@_super_separator_tl ##1} }
\RenewDocumentCommand{#1}{}
{% @branch
@@ -3217,11 +4067,76 @@
}
}
}
+\cs_new:Nn \@@_subscripted_and_superscripted_core:nnnn
+{
+ \cs_set:cpn {\cs_to_str:N #1_one:n} ##1
+ {
+ {#2}\c_math_superscript_token{##1}
+ \peek_catcode_remove:NTF \c_math_subscript_token
+ { \use:c {\cs_to_str:N #1_three:n} }
+ { \c_math_subscript_token{#3} }
+ }
+ \cs_set:cpn {\cs_to_str:N #1_two:n} ##1
+ {
+ {#2}\c_math_subscript_token{#3 ##1}
+ \peek_catcode_remove:NTF \c_math_superscript_token
+ { \use:c {\cs_to_str:N #1_four:n} }
+ { \c_math_superscript_token{#4 \bullet} }
+ }
+ \cs_set:cpn {\cs_to_str:N #1_three:n} ##1
+ { \c_math_subscript_token{#3 ##1} }
+ \cs_set:cpn {\cs_to_str:N #1_four:n} ##1
+ { \c_math_superscript_token{#4 ##1} }
+}
+\NewDocumentCommand{\NewSubscriptedandSuperscriptedSymbol}{m m m m}
+{
+ \@@_check_definable:nN {#1} \NewSubscriptedandSuperscriptedSymbol
+ \cs_if_exist:NT #1
+ { \PackageError{thermodynamics}
+ {Command~'\tl_trim_spaces:o {\tl_to_str:n {#1}}'~already~defined}
+ {You~have~used~
+ '\tl_trim_spaces:o
+ {\tl_to_str:n {\NewSubscriptedandSuperScriptedSymbol}}'~
+ with~a~command~that~already~has~a~definition}
+ }
+ \@@_subscripted_and_superscripted_core:nnnn {#1} {#2} {#3} {#4}
+ \NewDocumentCommand{#1}{}
+ {
+ \peek_catcode_remove:NTF \c_math_superscript_token
+ { \use:c {\cs_to_str:N #1_one:n} }
+ { \peek_catcode_remove:NTF \c_math_subscript_token
+ { \use:c {\cs_to_str:N #1_two:n} }
+ { {#2}\c_math_subscript_token{#3}\c_math_superscript_token{#4} }
+ }
+ }
+}
+\NewDocumentCommand{\RenewSubscriptedandSuperscriptedSymbol}{m m m m}
+{
+ \@@_check_definable:nN {#1} \RenewSubscriptedandSuperscriptedSymbol
+%^^A \cs_if_exist:NF #1
+%^^A { \PackageError{thermodynamics}
+%^^A {Command~'\tl_trim_spaces:o {\tl_to_str:n {#1}}'~not~already~defined}
+%^^A {You~have~used~
+%^^A '\tl_trim_spaces:o
+%^^A {\tl_to_str:n {\RenewSubscriptedandSuperScriptedSymbol}}'~
+%^^A with~a~command~that~does~not~have~a~definition}
+%^^A }
+%^^A \@@_subscripted_and_superscripted_core:nnnn {#1} {#2} {#3} {#4}
+%^^A \RenewDocumentCommand{#1}{}
+%^^A {
+%^^A \peek_catcode_remove:NTF \c_math_superscript_token
+%^^A { \use:c {\cs_to_str:N #1_one:n} }
+%^^A { \peek_catcode_remove:NTF \c_math_subscript_token
+%^^A { \use:c {\cs_to_str:N #1_two:n} }
+%^^A { {#2}\c_math_subscript_token{#3}\c_math_superscript_token{#4} }
+%^^A }
+%^^A }
+}
% \end{macrocode}
% \end{macro}
+% \subsection{Symbol Definitions}
% \begin{macro}{\heatcapacitysymbol,\compressibilitysymbol,\expansivitysymbol}
-% Now we define symbols for the heat capacities, compressibilities, and
-% so forth.
+% We define symbols for the heat capacities, compressibilities, and so forth.
% \begin{macrocode}
\NewExpandableDocumentCommand{\heatcapacitysymbol}{}{C}
\NewExpandableDocumentCommand{\compressibilitysymbol}{}{\kappa}
@@ -3283,7 +4198,7 @@
% \begin{macro}{\muJT}
% The macro \cs{muJT} renders the Joule--Thomson coefficient.
% \begin{macrocode}
-\NewSubscriptedSymbol{\muJT}{\JTsymbol}{JT}
+\NewSubscriptedSymbol{\muJT}{\JTsymbol}{\text{JT}}
% \end{macrocode}
% \end{macro}
%
@@ -3302,16 +4217,71 @@
\NewDocumentCommand{\fsat}{}{\fpure\c_math_superscript_token\sat}
% \end{macrocode}
% \end{macro}
-% \begin{macro}{\std,\Pstd,\fstd}
-% The \cs{std} macro denotes standard properties. \cs{Pstd} and \cs{fstd} are
-% defined for convenience and for consistency across textbooks.
+% \begin{macro}{\std,\Pstd,\fstd,\Cstd,\mustd}
+% The \cs{std} macro denotes standard properties. \cs{Pstd}, \cs{Cstd},
+% \cs{fstd}, and \cs{mustd} are defined for convenience and for consistency
+% across textbooks.
+% \changes{v2.02}{2024/06/14}{Added \cs{Cstd} and \cs{mustd} to standardize
+% standard molalities and chemical potentials across textbooks.}
% \begin{macrocode}
\NewDocumentCommand{\std}{}{\circ}
\NewDocumentCommand{\Pstd}{}{P\c_math_superscript_token \std}
+\NewDocumentCommand{\Cstd}{}{C\c_math_superscript_token \std}
\NewDocumentCommand{\fstd}{}{f\c_math_superscript_token \std}
+\NewDocumentCommand{\mustd}{}{\mu\c_math_superscript_token \std}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\xrxn}
+% The \cs{xrxn} macro denotes the extent of reaction.
+% \changes{v2.02}{2024/06/14}{Added \cs{xrxn} macro to standardize the
+% extent of reaction macro across textbooks.}
+% \begin{macrocode}
+\NewDocumentCommand{\xrxn}{}{\xi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\fmix}
+% The \cs{fmix} command is intended to describe fugacities in mixtures.
+% It renders as $\hat f$ by default, and would be used as \verb"\fmix_i" or
+% the like, producing $\hat f_i$; some authors like to use $\bar f_i$ or
+% just $f_i$, and this command creates a consistent way to change between
+% such options.
+% \begin{macrocode}
+\NewDocumentCommand{\fmix}{}{\hat{f}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\phimix}
+% A similar command, \cs{phimix}, renders $\hat\phi$ by default to represent
+% the fugacity coefficient in a mixture.
+% \begin{macrocode}
+\NewDocumentCommand{\phimix}{}{\hat\phi}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\fpure}
+% The \cs{fpure} command is intended to describe fugacities in pure substances.
+% It renders as $f$ by default, and would be used as \verb"\fpure" or
+% \verb"\fpure_i" or the like, producing $f_i$; some authors like to use
+% $f_{\text{pure}\,i}$, and others like to use $f_i^\bullet$; this command
+% creates a consistent way to change between the these options. A similar
+% command for $\phi$ is given, \cs{phipure}, for fugacity coefficients.
+% \begin{macrocode}
+\NewDocumentCommand{\fpure}{}{f}
+\NewDocumentCommand{\phipure}{}{\phi}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\actabs,\actrel}
+% The \cs{actabs} and \cs{actrel} macros are intended to standardize the macro
+% for the absolute and relative activities, respectively, across textbooks.
+% The defaults are \(\actabs\) and \(\actrel\), respectively.
+% \changes{v2.02}{2024/06/14}{Added \cs{actabs} and \cs{actrel} to make
+% absolute and relative activity symbols consistent.}
+% \begin{macrocode}
+\NewExpandableDocumentCommand{\actabs}{}{\lambda}
+\NewExpandableDocumentCommand{\actrel}{}{a}
% \end{macrocode}
% \end{macro}
%
+% \subsubsection{Property Changes}
% \begin{macro}{\Deltamix,\mixing}
% Mixing properties, such as $\Deltamix\Gm$, should be accessed using
% \verb"\Deltamix\Gm" and similar constructions---this construct will typeset
@@ -3325,16 +4295,22 @@
% \end{macro}
%
% \pagebreak[2]%
-% \begin{macro}{\Deltafus,\fusion,\Deltavap,\vaporization}
-% \begin{macro}{\Deltasub,\sublimation,\Deltarxn,\reaction}
-% Similar entities for property changes on fusion, reaction, sublimation, and
-% vaporization are defined.
+% \begin{macro}{\formation,\fusion,\reaction,\sublimation,\vaporization}
+% Macros for subscripts/superscripts on property changes,
% \begin{macrocode}
+\NewDocumentCommand{\formation}{}{f}
\NewDocumentCommand{\fusion}{}{{\text{fus}}}
\NewDocumentCommand{\reaction}{}{{\text{rxn}}}
\NewDocumentCommand{\sublimation}{}{{\text{sub}}}
\NewDocumentCommand{\vaporization}{}{{\text{vap}}}
-\NewDocumentCommand{\formation}{}{f}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\Deltafus,\Deltasub,\Deltavap,\Deltarxn}
+% and similar macros for the property changes themselves. Some of these may
+% be redefined by package options that select a particular textbook.
+% \changes{v2.02}{2024/06/14}{Changed implementation of \cs{Deltarxn} to
+% handle subscripts.}
+% \begin{macrocode}
\NewDocumentCommand{\Deltafus}{m}
{\Delta #1\c_math_superscript_token\fusion}
\NewDocumentCommand{\Deltasub}{m}
@@ -3342,55 +4318,37 @@
\NewDocumentCommand{\Deltavap}{m}
{\Delta #1\c_math_superscript_token\vaporization}
\NewDocumentCommand{\Deltarxn}{m}
- {\Delta #1\c_math_subscript_token\reaction}
+{
+ \cs_set:Npn \@@_Deltarxn_one ##1
+ {
+ \Delta #1\c_math_subscript_token{\reaction,##1}
+ }
+ \peek_catcode_remove:NTF \c_math_subscript_token
+ {
+ \@@_Deltarxn_one
+ }
+ {
+ \Delta #1\c_math_subscript_token{\reaction}
+ }
+}
\tl_new:N \l_@@_Deltaf_sym_tl
-\NewSubscriptedSymbol{\@@_Deltaf}{\l_@@_Deltaf_sym_tl}{f}
+\NewSubscriptedSymbol{\@@_Deltaf}{\l_@@_Deltaf_sym_tl}{\formation}
\NewDocumentCommand{\Deltaf}{m}
{ \tl_set:Nn \l_@@_Deltaf_sym_tl {\Delta #1}
\@@_Deltaf
}
% \end{macrocode}
% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\fmix}
-% The \cs{fmix} command is intended to describe fugacities in mixtures.
-% It renders as $\hat f$ by default, and would be used as \verb"\fmix_i" or
-% the like, producing $\hat f_i$; some authors like to use $\bar f_i$ or
-% just $f_i$, and this command creates a consistent way to change between
-% such options.
-% \begin{macrocode}
-\NewDocumentCommand{\fmix}{}{\hat{f}}
-% \end{macrocode}
-% \end{macro}
-% \begin{macro}{\phimix}
-% A similar command, \cs{phimix}, renders $\hat\phi$ by default to represent
-% the fugacity coefficient in the mixture.
-% \begin{macrocode}
-\NewDocumentCommand{\phimix}{}{\hat\phi}
-% \end{macrocode}
-% \end{macro}
-% \begin{macro}{\fpure}
-% The \cs{fpure} command is intended to describe fugacities in pure substances.
-% It renders as $f$ by default, and would be used as \verb"\fpure" or
-% \verb"\fpure_i" or the like, producing $f_i$; some authors like to use
-% $f_{\text{pure},i}$, and others like to use $f_i^\bullet$; this command
-% creates a consistent way to change between the these options. A similar
-% command for $\phi$ is given, \cs{phipure}, for fugacity coefficients.
-% \begin{macrocode}
-\NewDocumentCommand{\fpure}{}{f}
-\NewDocumentCommand{\phipure}{}{\phi}
-% \end{macrocode}
-% \end{macro}
%
-% \subsection{Partial Molar Quantities}
+% \subsubsection{Partial Molar Quantities}
% \begin{macro}{\partialmolar}
% Partial molar quantities with superscripts appear as $\Gpm[\IG]{i}$ or
-% $\GRpm{i}$, rather than something like
-% $\overline{G}^\IG_i$ or $\overline{G}_i^R$; the former looks better but
-% is harder to implement for obvious reasons. Their definitions allow them to
-% be used as symbols, something like \verb"\Gpm_i", \verb"\Gpm^{\IGM}_i",
-% \verb"\Gpm^{\IGM}_i", and even \verb"\Gpm_i^{\IGM}";
+% $\GRpm{i}$ (or, with the |shortpm| option, as
+% \begin{thermoshortpm}$\Gpm[\IG]{i}$ or $\GRpm{i}$\end{thermoshortpm}),
+% rather than something like $\overline{G}^\IG_i$ or $\overline{G}_i^R$; the
+% former looks better but is harder to implement for obvious reasons. Their
+% definitions allow them to be used as symbols, something like \verb"\Gpm_i",
+% \verb"\Gpm^{\IGM}_i", \verb"\Gpm^{\IGM}_i", and even \verb"\Gpm_i^{\IGM}";
% they can also be treated as commands: \verb"\Gpm{i}" is equivalent to
% \verb"\Gpm_i" and \verb"\Gpm[\IGM]{i}" is equivalent to \verb"\Gpm_i^{\IGM}".
% The macro \cs{partialmolar} can be used to create an arbitrary partial
@@ -3434,12 +4392,21 @@
}
\cs_new:Npn \@@_pm_case_one #1
{
- \@@_overline:n {\l_@@_pm_symbol_tl\c_math_subscript_token{#1}}
+ \bool_if:NTF \l_@@_longpm_bool
+ { \@@_overline:n {\l_@@_pm_symbol_tl\c_math_subscript_token{#1}} }
+ {
+ \@@_overline:n {\l_@@_pm_symbol_tl}\c_math_subscript_token{#1}
+ }
}
\cs_new:Npn \@@_pm_case_two [#1]#2
{
- \@@_overline:n {\l_@@_pm_symbol_tl
- \c_math_superscript_token{#1}\c_math_subscript_token{#2}}
+ \bool_if:NTF \l_@@_longpm_bool
+ { \@@_overline:n {\l_@@_pm_symbol_tl
+ \c_math_superscript_token{#1}\c_math_subscript_token{#2}}
+ }
+ { \@@_overline:n {\l_@@_pm_symbol_tl}
+ \c_math_superscript_token{#1}\c_math_subscript_token{#2}
+ }
}
\cs_new:Npn \@@_pm_case_three #1
{
@@ -3450,9 +4417,15 @@
}
\cs_new:Npn \@@_pm_case_three_part_two #1
{
- \@@_overline:n {\l_@@_pm_symbol_tl
- \c_math_superscript_token{\l_@@_pm_arg_tl}
- \c_math_subscript_token{#1}}
+ \bool_if:NTF \l_@@_longpm_bool
+ { \@@_overline:n {\l_@@_pm_symbol_tl
+ \c_math_superscript_token{\l_@@_pm_arg_tl}
+ \c_math_subscript_token{#1}}
+ }
+ { \@@_overline:n {\l_@@_pm_symbol_tl}
+ \c_math_superscript_token{\l_@@_pm_arg_tl}
+ \c_math_subscript_token{#1}
+ }
}
\cs_new:Npn \@@_pm_case_four_or_five #1
{
@@ -3463,18 +4436,28 @@
}
\cs_new:Npn \@@_pm_case_four #1
{
- \@@_overline:n {\l_@@_pm_symbol_tl\c_math_superscript_token{#1}
- \c_math_subscript_token{\l_@@_pm_arg_tl}}
+ \bool_if:NTF \l_@@_longpm_bool
+ { \@@_overline:n {\l_@@_pm_symbol_tl\c_math_superscript_token{#1}
+ \c_math_subscript_token{\l_@@_pm_arg_tl}}
+ }
+ { \@@_overline:n {\l_@@_pm_symbol_tl}\c_math_superscript_token{#1}
+ \c_math_subscript_token{\l_@@_pm_arg_tl}
+ }
}
\cs_new:Npn \@@_pm_case_five
{
- \@@_overline:n {\l_@@_pm_symbol_tl
- \c_math_subscript_token{\l_@@_pm_arg_tl}}
+ \bool_if:NTF \l_@@_longpm_bool
+ { \@@_overline:n {\l_@@_pm_symbol_tl
+ \c_math_subscript_token{\l_@@_pm_arg_tl}}
+ }
+ { \@@_overline:n {\l_@@_pm_symbol_tl}
+ \c_math_subscript_token{\l_@@_pm_arg_tl}
+ }
}
% \end{macrocode}
% \end{macro}
%
-% \subsection{Symbol Definitions}
+% \subsubsection{Thermodynamic Property Definitions}
% These macros define the user interface to the symbols for energy, volume,
% and so forth. There are five commands that define thermodynamic properties.
%
@@ -3528,7 +4511,7 @@
\NewResidualProperty{#1}{#2}
\NewExcessProperty{#1}{#2}
}
-\NewDocumentCommand{\NewExtensiveProperty}{m m}
+\ProvideDocumentCommand{\NewExtensiveProperty}{m m}
{
% Extensive property
\exp_after:wN \NewDocumentCommand \exp_after:wN
@@ -3546,7 +4529,7 @@
\exp_after:wN \NewDocumentCommand \exp_after:wN
{\cs:w #1pm\cs_end:}{}{\partialmolar{#2}}
}
-\NewDocumentCommand{\NewExcessProperty}{m m}
+\ProvideDocumentCommand{\NewExcessProperty}{m m}
{
\exp_after:wN \NewSuperscriptedSymbol \exp_after:wN
{\cs:w #1 Et\cs_end:}{\@@_extensive:n{#2}}{\excess}
@@ -3555,13 +4538,12 @@
\exp_after:wN \NewSuperscriptedSymbol \exp_after:wN
{\cs:w #1 Es\cs_end:}{\@@_specific:n{#2}}{\excess}
- %^^A TODO: make super- or subscripted partial molar quantities work
% Excess partial molar property
\exp_after:wN \NewDocumentCommand \exp_after:wN
{\cs:w #1Epm\cs_end:}{}{\partialmolar{#2}
\c_math_superscript_token\excess}
}
-\NewDocumentCommand{\NewResidualProperty}{m m}
+\ProvideDocumentCommand{\NewResidualProperty}{m m}
{
\exp_after:wN \NewSuperscriptedSymbol \exp_after:wN
{\cs:w #1 Rt\cs_end:}{\@@_extensive:n{#2}}{\residual}
@@ -3603,75 +4585,32 @@
% \begin{macro}{\cVpm,\cPpm}
% Partial molar heat capacities are \emph{hard}, but the following
% implementation seems to work flawlessly\dots so far.
+% \changes{v2.02}{2024/06/14}{Simplified implementations of partial molar
+% heat capacities that take advantage of \cs{NewPartialMolarProperty} and
+% \cs{NewSubscriptedProperty}. This fixes the issue of the subscripts being
+% ``persistent'' after \cs{cPpm} is used in a line. Also declared alternative
+% symbols for use with the \texttt{shortpm} option.}
% \begin{macrocode}
-\NewDocumentCommand{\cPpm}{}
-{
- \cs_set:Npn \@@_pm_case_one ##1
- {
- \@@_overline:n {\l_@@_pm_symbol_tl\c_math_subscript_token
- {\g_@@_pressure_symbol,##1}}
- }
- \cs_set:Npn \@@_pm_case_two [##1]##2
- {
- \@@_overline:n {\l_@@_pm_symbol_tl\c_math_superscript_token{##1}
- \c_math_subscript_token{\g_@@_pressure_symbol,##2}}
- }
- \cs_set:Npn \@@_pm_case_three_part_two ##1
- {
- \@@_overline:n {\l_@@_pm_symbol_tl
- \c_math_superscript_token{\l_@@_pm_arg_tl}
- \c_math_subscript_token{\g_@@_pressure_symbol,##1}}
- }
- \cs_set:Npn \@@_pm_case_four ##1
- {
- \@@_overline:n {\l_@@_pm_symbol_tl
- \c_math_superscript_token{##1}\c_math_subscript_token
- {\g_@@_pressure_symbol,\l_@@_pm_arg_tl}}
- }
- \cs_set:Npn \@@_pm_case_five
- {
- \@@_overline:n {\l_@@_pm_symbol_tl\c_math_subscript_token
- {\g_@@_pressure_symbol,\l_@@_pm_arg_tl}}
- }
- \partialmolar{\heatcapacitysymbol}
-}
-\NewDocumentCommand{\cVpm}{}
-{
- \cs_set:Npn \@@_pm_case_one ##1
- {
- \@@_overline:n {\l_@@_pm_symbol_tl\c_math_subscript_token
- {\g_@@_volume_symbol,##1}}
- }
- \cs_set:Npn \@@_pm_case_two [##1]##2
- {
- \@@_overline:n {\l_@@_pm_symbol_tl
- \c_math_superscript_token{##1}\c_math_subscript_token
- {\g_@@_volume_symbol,##2}}
- }
- \cs_set:Npn \@@_pm_case_three_part_two ##1
- {
- \@@_overline:n {\l_@@_pm_symbol_tl
- \c_math_superscript_token{\l_@@_pm_arg_tl}
- \c_math_subscript_token{\g_@@_volume_symbol,##1}}
- }
- \cs_set:Npn \@@_pm_case_four ##1
- {
- \@@_overline:n {\l_@@_pm_symbol_tl
- \c_math_superscript_token{##1}
- \c_math_subscript_token
- {\g_@@_volume_symbol,\l_@@_pm_arg_tl}}
- }
- \cs_set:Npn \@@_pm_case_five
- {
- \@@_overline:n {\l_@@_pm_symbol_tl\c_math_subscript_token
- {\g_@@_volume_symbol,\l_@@_pm_arg_tl}}
- }
- \partialmolar{\heatcapacitysymbol}
-}
+\NewPartialMolarProperty{cP}{\cP}
+\NewPartialMolarProperty{cV}{\cV}
+\NewSubscriptedSymbol{\cPpmshort}{\@@_overline_copy:n{\heatcapacitysymbol}}
+ {\g_@@_pressure_symbol}
+\NewSubscriptedSymbol{\cVpmshort}{\@@_overline_copy:n{\heatcapacitysymbol}}
+ {\g_@@_volume_symbol}
% \end{macrocode}
% \end{macro}
%
-% \subsection{Residual and Excess Properties}
+% \subsubsection{Electrochemistry}
+% \begin{macro}{\Epot}
+% \changes{v2.02}{2024/06/14}{Added \cs{Epot} to standardize the electric
+% potential across textbooks for electrochemistry.}
+% The \cs{Epot} command can be used for the electric potential.
+% \begin{macrocode}
+\NewExpandableDocumentCommand{\Epot}{}{E}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Residual and Excess Properties}
% \begin{macro}{\residual,\excess}
% Macros are defined for residual properties (departure from ideal gases)
% and excess properties (departure from ideal solutions). We begin with two
@@ -3683,9 +4622,9 @@
% \end{macrocode}
% \end{macro}
%
-% \pagebreak[1]%
+% \pagebreak[1]\relax
% \begin{macro}{\prodall,\sumall,\summallbutlast}
-% The \cs{sumall} command and its cousin, \cs{sumallbutlast}, simplify the
+% The \cs{sumall} macro and its cousin, \cs{sumallbutlast}, simplify the
% typesetting of commonly-used sums; the command \cs{prodall} does the same
% thing for products, viz.,
% \begin{verbatim}
@@ -3694,9 +4633,9 @@
% = \prodall_i a_i^{\nu_i} \]
%\end{verbatim}
% gives
-% \[ \sum_{i=1}^C x_i = 1 \qquad \sum_{i=1}^{C-1} x_i = 1 - x_C \qquad
-% K = \exp\left(\frac{-\Delta G_\text{rxn}^\circ}{RT}\right)
-% = \prod_{i=1}^C a_i^{\nu_i} \]
+% \[ \sumall_i x_i = 1 \qquad \sumallbutlast_i x_i = 1 - x_\ncomponents
+% \qquad K = \exp\left(\frac{-\Deltarxn\Gm^\std}{RT}\right)
+% = \prodall_i a_i^{\nu_i} \]
% \begin{macrocode}
\NewDocumentCommand{\sumall}{m m}
{ \sum\c_math_subscript_token{#2=1}
@@ -3723,6 +4662,7 @@
% \end{macro}
%
% \begin{macro}{\Henryrat,\Henrymol}
+% \subsubsection{Henry's Law Constants and Activity Coefficients}
% The Henry's Law constants for the rational basis ($y_i P = x_i h_i$) and
% the molal basis ($y_i P = C_i \mathcal{H}_i$) are given by the macros
% \cs{Henryrat} and \cs{Henrymol}, respectively. Using them this way
@@ -3733,20 +4673,28 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\gammait,\muit}
+% \changes{v2.02}{2024/06/14}{Added \cs{muit} and \cs{gammait} to preserve
+% symbols in case the base macros are redefined by a package.}
% \begin{macro}{\gammarat,\gammamol}
-% The ordinary activity coefficient is universally denoted $\gamma$, so I
-% have not defined a special macro for that. However, symbols for the Henry's
-% Law activity coefficients are far from universal, so I have defined macros to
-% make their use consistent. The defaults render \cs{gammarat} as $\gamma^\ast$
-% and \cs{gammamol} as $\gamma^\square$.
-% \cs{gammamol} will use \cs{square} from packages if it is defined; if not,
-% it ``fakes it'' with the definition below.
+% The ordinary activity coefficient is typically denoted $\gamma$ or
+% $\gammaup$, so the base symbol will still be \cs{gamma}. The macro
+% \cs{gammait} is defined just in case \cs{gamma} is redefined by a package
+% option. However, symbols for the Henry's Law activity coefficients are far
+% from universal, so I have defined macros to make their use consistent. The
+% defaults render \cs{gammarat} as $\gamma^\ast$ and \cs{gammamol} as
+% $\gamma^\square$. \cs{gammamol} will use \cs{square} from packages if it is
+% defined; if not, it ``fakes it'' with the definition below.
+% The symbol for the chemical potential is \cs{mu}, but \cs{muit} is defined
+% so the symbol is still available, should \cs{mu} be redefined later.
%^^A Backup for \square adapted from amsthm.sty with tweaks to make it
%^^A look reasonably similar to that from newpx (i.e., smaller than the
-%^^A amsfonts) version
+%^^A amsfonts version)
% \begin{macrocode}
+\cs_gset_eq:NN \gammait \gamma
+\cs_gset_eq:NN \muit \mu
\AtBeginDocument{%
- \providecommand*{\square}{%
+ \ProvideDocumentCommand{\square}{}{%
\text{\leavevmode
\hbox to.65em{%
\hfil\vrule
@@ -3759,6 +4707,8 @@
\NewDocumentCommand{\gammamol}{}{\gamma\c_math_superscript_token\square}
% \end{macrocode}
% \end{macro}
+% \end{macro}
+% \subsection{Jacobians}
% \begin{environment}{thermovmatrix}
% This is a non-user-interface wrapper environment used to detect, in
% effect, whether \pkg{amsmath} has been loaded. If so, it uses its
@@ -3778,7 +4728,7 @@
% \end{environment}
% \begin{macro}{Jacobian}
% The \cs{Jacobian} command typesets the Leibnitz notation for the Jacobian
-% determinant.
+% determinant.\relax
% \changes{v2.00}{2023/11/16}{Reimplemented \cs{Jacobian} to handle an
% arbitary number of variables and implemented \cs{Jacobiandet} to
% handle the matrix representation of the Jacobian.}
diff --git a/macros/latex/contrib/thermodynamics/thermodynamics.ins b/macros/latex/contrib/thermodynamics/thermodynamics.ins
index f2f2b95f40..ac1f6bd146 100644
--- a/macros/latex/contrib/thermodynamics/thermodynamics.ins
+++ b/macros/latex/contrib/thermodynamics/thermodynamics.ins
@@ -1,4 +1,4 @@
-%% File: thermodynamics.ins Copyright (C) 2022-2023 Karl D. Hammond
+%% File: thermodynamics.ins Copyright (C) 2022-2024 Karl D. Hammond
%%
%% Karl D. Hammond,
%% Department of Chemical Engineering
@@ -30,7 +30,7 @@
This is a generated file.
-Copyright (C) 2022-2023 by Karl D. Hammond
+Copyright (C) 2022-2024 by Karl D. Hammond
Karl D. Hammond,
Department of Chemical Engineering
diff --git a/macros/latex/contrib/thermodynamics/thermodynamics.pdf b/macros/latex/contrib/thermodynamics/thermodynamics.pdf
index 389a58d238..b2d2f3c62c 100644
--- a/macros/latex/contrib/thermodynamics/thermodynamics.pdf
+++ b/macros/latex/contrib/thermodynamics/thermodynamics.pdf
Binary files differ
diff --git a/macros/latex/contrib/thuthesis/CHANGELOG.md b/macros/latex/contrib/thuthesis/CHANGELOG.md
index fb293105fc..b038a8a762 100644
--- a/macros/latex/contrib/thuthesis/CHANGELOG.md
+++ b/macros/latex/contrib/thuthesis/CHANGELOG.md
@@ -6,6 +6,17 @@
## [Unreleased]
+## [v7.5.2] - 2024-07-01
+
+### Added
+
+- 增加选项 `eqn-paren-style` 控制公式编号的括号样式([#959](https://github.com/tuna/thuthesis/pull/959))。
+
+### Fixed
+
+- 解决本科生的多篇“书面翻译对应的原文索引”([#956](https://github.com/tuna/thuthesis/issues/956))。
+- 修复 GitHub 发布的 Release 压缩包缺少部分文件的问题([#965](https://github.com/tuna/thuthesis/issues/965))。
+
## [v7.5.1] - 2024-05-20
### Changed
@@ -988,7 +999,8 @@
-[Unreleased]: https://github.com/tuna/thuthesis/compare/v7.5.1...HEAD
+[Unreleased]: https://github.com/tuna/thuthesis/compare/v7.5.2...HEAD
+[v7.5.2]: https://github.com/tuna/thuthesis/compare/v7.5.1...v7.5.2
[v7.5.1]: https://github.com/tuna/thuthesis/compare/v7.5.0...v7.5.1
[v7.5.0]: https://github.com/tuna/thuthesis/compare/v7.4.0...v7.5.0
[v7.4.0]: https://github.com/tuna/thuthesis/compare/v7.3.2...v7.4.0
diff --git a/macros/latex/contrib/thuthesis/thuthesis-example.pdf b/macros/latex/contrib/thuthesis/thuthesis-example.pdf
index 2c48ce2ef5..36ed8efd75 100644
--- a/macros/latex/contrib/thuthesis/thuthesis-example.pdf
+++ b/macros/latex/contrib/thuthesis/thuthesis-example.pdf
Binary files differ
diff --git a/macros/latex/contrib/thuthesis/thuthesis.dtx b/macros/latex/contrib/thuthesis/thuthesis.dtx
index ea4ac03f22..e6f3e46ad8 100644
--- a/macros/latex/contrib/thuthesis/thuthesis.dtx
+++ b/macros/latex/contrib/thuthesis/thuthesis.dtx
@@ -14,7 +14,7 @@
%
% \iffalse
%<*driver>
-\ProvidesFile{thuthesis.dtx}[2024/05/20 7.5.1 Tsinghua University Thesis Template]
+\ProvidesFile{thuthesis.dtx}[2024/07/01 7.5.2 Tsinghua University Thesis Template]
\documentclass{ltxdoc}
\usepackage{dtx-style}
@@ -251,7 +251,7 @@
% $ bibtex thuthesis-example.aux # 生成 bbl 文件
% $ bibtex thuthesis-example-appendix-a.aux # 附录 A 的的参考文献
% $ bibtex thuthesis-example-appendix-b.aux # 附录 B 的的参考文献……
-% $ bibtex thuthesis-example-index.aux # 本科生的书面翻译对应的原文索引
+% $ bibtex thuthesis-example-index-1.aux # 本科生的书面翻译对应的原文索引
% $ xelatex thuthesis-example.tex # 解决引用
% $ xelatex thuthesis-example.tex # 生成论文 PDF
%
@@ -813,7 +813,7 @@
% }
% \end{latex}
%
-% 用户也可以逐项修改数学样式。
+% 用户也可以逐项修改数学样式,包括:
% \newcommand\dif{\mathop{}\!\mathrm{d}}
% \begin{enumerate}
% \item \DescribeOption{uppercase-greek}
@@ -885,12 +885,16 @@
% 模板作了处理,用户可以直接使用这些宏包的命令,如 \cs{bm}、\cs{mathscr}、
% \cs{uppi}。
%
-% 另外,模板还为 `math-font` 提供了传统的 Type 1 字体 \option{newtx}。
+% 另外,模板还为 |math-font| 提供了传统的 Type 1 字体 \option{newtx}。
% 该选项会调用 \pkg{newtxmath} 宏包。
% 但是,如果西文字体已经使用了 OpenType 的 Times New Roman,
% 混用 Type 1 字体可能会导致问题,尤其是使用 \pkg{siunitx} 宏包时。
% 该选项还处于测试阶段,需要谨慎使用。
%
+% \DescribeOption{eqn-paren-style}
+% 控制中文论文中,数学公式编号两边的括号样式。可选项包括:\option{full}(全角,默认) / \option{half}(半角)。
+% 在语言为英语(|language = english|)时,此选项无效,仅使用半角括号。
+%
% \subsubsection{定理环境}
% \label{sec:theorem}
% \thuthesis{} 定义了常用的数学环境:
@@ -1269,7 +1273,7 @@
% \begin{macrocode}
%<cls>\NeedsTeXFormat{LaTeX2e}[2017/04/15]
%<cls>\ProvidesClass{thuthesis}
-%<cls>[2024/05/20 7.5.1 Tsinghua University Thesis Template]
+%<cls>[2024/07/01 7.5.2 Tsinghua University Thesis Template]
% \end{macrocode}
%
% 报错
@@ -1330,7 +1334,7 @@
%<*cls>
\hyphenation{Thu-Thesis}
\def\thuthesis{ThuThesis}
-\def\version{7.5.1}
+\def\version{7.5.2}
\RequirePackage{kvdefinekeys}
\RequirePackage{kvsetkeys}
\RequirePackage{kvoptions}
@@ -1658,6 +1662,17 @@
},
default = print,
},
+% \end{macrocode}
+%
+% 数学公式编号的括号使用全角还是半角。
+% \begin{macrocode}
+ eqn-paren-style = {
+ name = eqn@paren@style,
+ choices = {
+ full,
+ half,
+ }
+ },
}
\newif\ifthu@degree@graduate
\newcommand\thu@set@graduate{%
@@ -3511,10 +3526,23 @@
% 中文模板的公式编号使用中文括号。需要修改 \pkg{amsmath} 的 \cs{tagform@}。
% 这里中文的 \cs{unskip} 是为了“|式~\eqref|”这样的写法不产生额外的空格。
% \begin{macrocode}
+\newcommand\thu@eqn@left@paren{(}
+\newcommand\thu@eqn@right@paren{)}
+\newcommand\thu@set@eqn@paren@style{%
+ \ifthu@eqn@paren@style@full
+ \renewcommand\thu@eqn@left@paren{(}%
+ \renewcommand\thu@eqn@right@paren{)}%
+ \else
+ \renewcommand\thu@eqn@left@paren{(}%
+ \renewcommand\thu@eqn@right@paren{)}%
+ \fi
+}
+\thu@set@eqn@paren@style
+\thu@option@hook{eqn-paren-style}{\thu@set@eqn@paren@style}
\newcommand\thu@put@parentheses[1]{%
\ifthu@language@chinese
\unskip
- (#1)%
+ \thu@eqn@left@paren#1\thu@eqn@right@paren
\else
(#1)%
\fi
@@ -6347,9 +6375,11 @@
% \begin{macrocode}
\newenvironment{translation-index}{}{}
\AtEndOfPackageFile*{bibunits}{
+ \newcounter{thu@translation@index}%
\renewenvironment{translation-index}{%
+ \global\advance\c@thu@translation@index\@ne
\begin{bibunit}%
- \renewcommand\@bibunitname{\jobname-index}%
+ \renewcommand\@bibunitname{\jobname-index-\arabic{thu@translation@index}}%
\renewcommand\bibname{书面翻译对应的原文索引}%
\thu@set@survey@bibheading
}{%
diff --git a/macros/latex/contrib/thuthesis/thuthesis.pdf b/macros/latex/contrib/thuthesis/thuthesis.pdf
index daa32de045..4979b94dc4 100644
--- a/macros/latex/contrib/thuthesis/thuthesis.pdf
+++ b/macros/latex/contrib/thuthesis/thuthesis.pdf
Binary files differ
diff --git a/macros/latex/contrib/tiet-question-paper/LICENSE b/macros/latex/contrib/tiet-question-paper/LICENSE
new file mode 100644
index 0000000000..df351f4f49
--- /dev/null
+++ b/macros/latex/contrib/tiet-question-paper/LICENSE
@@ -0,0 +1,26 @@
+The MIT License (MIT)
+Copyright (c) 2024 B.V. Raghav
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the ``Software''), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the
+following conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
+ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
diff --git a/macros/latex/contrib/tiet-question-paper/README.md b/macros/latex/contrib/tiet-question-paper/README.md
new file mode 100644
index 0000000000..e03586d4fe
--- /dev/null
+++ b/macros/latex/contrib/tiet-question-paper/README.md
@@ -0,0 +1,151 @@
+# `tiet-question-paper.cls` #
+
+[Installation](#installation) |
+[Usage](#usage) |
+[Emacs Org Integration](#emacs-org-integration)
+
+Author: Raghav B. Venkataramaiyer
+Email: bv.raghav -at- thapar -dot- edu
+Email: bvraghav -at- gmail -dot- com
+License: [MIT License](./LICENSE)
+Version: 2024-06-22
+
+Provide a document class `tiet-question-paper` in order
+to create a question paper for [the Thapar
+Institute](https://thapar.edu/) in $\LaTeX$. Although
+created for the TIET, the module, however, is adaptable
+to any organisation.
+
+The following example is a screenshot from
+[`sample.pdf`](./sample.pdf), with the source at
+[`sample.tex`](./sample.tex)
+
+![](./images/sample.png)
+
+## Installation ##
+
+### CTAN ###
+
+TBA
+
+### From Source ###
+
+1. `tlmgr init-usertree`
+2. `kpsewhich -var-value=TEXMFHOME` should return
+ `~/texmf`
+3. `mkdir -p ~/texmf/tex/latex`
+4. `cd ~/texmf/tex/latex`
+5. `git clone
+ git@github.com:bvraghav/qptiet_latex-class tiet-question-paper`
+6. Verify that `kpsewhich tiet-question-paper.cls` finds `tiet-question-paper.cls`.
+
+## Usage ##
+
+### Document Class ###
+
+The document class is based on `article`. And all the
+options are passed forward as is.
+
+```latex
+\documentclass[11pt,onecolumn]{tiet-question-paper}
+```
+
+### Title Block ###
+
+Only the following macros contribute to the title block.
+
+```latex
+\date{28 May 2024}
+% \institute{Thapar Institute of Engineering \&
+% Technology} % Default value
+% \abbrevinst{\textsc{tiet}} % Reserved for future
+% \instaddress{Patiala 147004} % Reserved for future
+% \cohort{} % Reserved for future
+% \instlogo{images/tiet-logo.pdf} % Optional
+\schoolordepartment{Computer Science \& Engineering Department}
+\examname{End Semester Examination}
+\coursecode{UCS505}
+\coursename{Computer Graphics}
+\timeduration{3 hours}
+\maxmarks{45}
+\faculty{ANG,AMK,HPS,YDS,RGB}
+```
+
+### Geometry ###
+
+The class loads `geometry` package with following
+default options,
+
+```latex
+\RequirePackage[%
+ a4paper,%
+ left=1in,%
+ top=0.5in,%
+ right=0.75in,%
+ bottom=0.75in%
+]{geometry}
+```
+
+However, a user may reconfigure using `\geometry`
+command in [the
+preamble](https://duckduckgo.com/?q=what+is+a+preamble+in+latex+document)
+for example,
+
+```latex
+\geometry{letterpaper,bindingoffset=0.2in,
+ left=1.2in,right=1.2in,top=.8in,bottom=.8in,
+ footskip=.25in}
+```
+
+### Rules ###
+
+```latex
+\bvrhrule
+\bvrhrule[2pt]
+```
+Create a horizontal rule with length equal to line
+width and thickness `0.4pt` by default. Optional
+argument specifies line thickness. Here’s the
+implementation detail,
+
+```latex
+\DeclareRobustCommand%
+% Horizontal rule after each question
+\bvrhrule[1][0.4pt]{\rule{\linewidth}{#1}}
+```
+
+### Line Skip ###
+
+```latex
+\bvrskipline
+\bvrskipline[1.2]
+```
+
+Create vertical blank space with height specified as a
+factor of `\baselineskip`. Optional argument specifies
+the factor, `1.0` by default. Here’s the
+implementation detail,
+
+```latex
+\DeclareRobustCommand%
+% Skip line
+\bvrskipline[1][]{\vspace{#1\baselineskip}}
+```
+
+## Emacs Org Integration ##
+Add the following to [the
+init-file](https://www.gnu.org/software/emacs/manual/html_node/emacs/Init-File.html)
+```elisp
+(add-to-list 'org-latex-classes
+ `("tiet-question-paper" "\\documentclass{tiet-question-paper}
+[NO-DEFAULT-PACKAGES]
+\\usepackage{amsmath}
+\\usepackage{graphicx}
+\\usepackage{wrapfig}
+\\usepackage{amssymb}
+\\usepackage[unicode]{hyperref}
+" nil))
+```
+
+Here’s a [`sample-org`](./sample-org.org) file; that
+produces a [`PDF`](./sample-org.pdf)
diff --git a/macros/latex/contrib/tiet-question-paper/images/sample.png b/macros/latex/contrib/tiet-question-paper/images/sample.png
new file mode 100644
index 0000000000..332ad33af1
--- /dev/null
+++ b/macros/latex/contrib/tiet-question-paper/images/sample.png
Binary files differ
diff --git a/macros/latex/contrib/tiet-question-paper/tiet-question-paper-sample-org.org b/macros/latex/contrib/tiet-question-paper/tiet-question-paper-sample-org.org
new file mode 100644
index 0000000000..50b55b4275
--- /dev/null
+++ b/macros/latex/contrib/tiet-question-paper/tiet-question-paper-sample-org.org
@@ -0,0 +1,182 @@
+#+date: \today
+
+#+latex_class: tiet-question-paper
+#+latex_class_options: [11pt]
+#+options: num:nil toc:nil author:nil email:nil
+
+#+latex_header_extra: \hypersetup{%
+#+latex_header_extra: colorlinks,%
+#+latex_header_extra: breaklinks,%
+#+latex_header_extra: urlcolor=[rgb]{0,0.35,0.65},%
+#+latex_header_extra: linkcolor=[rgb]{0,0.35,0.65}%
+#+latex_header_extra: }
+
+#+latex_header_extra: \usepackage{libertinus}
+
+#+latex_header_extra: \instlogo{images/tiet-logo.pdf}
+#+latex_header_extra: \schoolordepartment{%
+#+latex_header_extra: Computer Science \& Engineering Department}
+#+latex_header_extra: \examname{End Semester Examination}
+#+latex_header_extra: \coursecode{UCS505}
+#+latex_header_extra: \coursename{Computer Graphics}
+#+latex_header_extra: \timeduration{3 hours}
+#+latex_header_extra: \maxmarks{45}
+#+latex_header_extra: \faculty{ANG,AMK,HPS,YDS,RGB}
+
+#+latex: \maketitle
+
+*Instructions:*
+1. Attempt any 5 questions;
+2. Attempt all the subparts of a question at one place.
+
+#+latex: \bvrhrule\bvrskipline
+
+1.
+ 1. Given the control polygon $\textbf{b}_0,
+ \textbf{b}_1, \textbf{b}_2, \textbf{b}_3$ of a
+ Cubic Bezier curve; determine the vertex
+ coordinates for parameter values $\forall t\in
+ T$. \hfill [7 marks]
+ \begin{align*}
+ T \equiv
+ & \{0, 0.15, 0.35, 0.5, 0.65, 0.85, 1\} \\
+ \begin{bmatrix}
+ \textbf{b}_0 &\textbf{b}_1& \textbf{b}_2& \textbf{b}_3
+ \end{bmatrix} \equiv& \begin{bmatrix}
+ 1&2&4&3\\ 1&3&3&1
+ \end{bmatrix}
+ \end{align*}
+
+ 2. Explain the role of convex hull in curves.
+ \hfill[2 marks]
+
+#+latex: \bvrhrule
+
+#+ATTR_LATEX: :options [resume]
+1.
+ 1. Describe the continuity conditions for
+ curvilinear geometry. \hfill[5 marks]
+ 2. Define formally, a B-Spline curve. \hfill [2
+ marks]
+ 3. How is a Bezier curve different from a B-Spline
+ curve? \hfill [2 marks]
+
+#+latex: \bvrhrule
+
+#+ATTR_LATEX: :options [resume]
+1.
+ 1. Given a triangle, with vertices defined by column
+ vectors of $P$; find its vertices after
+ reflection across XZ plane. \hfill [3 marks]
+ \begin{align*}
+ P\equiv
+ &\begin{bmatrix}
+ 3&6&5 \\ 4&4&6 \\ 1&2&3
+ \end{bmatrix}
+ \end{align*}
+ 2. Given a pyramid with vertices defined by the
+ column vectors of $P$, and an axis of rotation
+ $A$ with direction $\textbf{v}$ and passing
+ through $\textbf{p}$. Find the coordinates of
+ the vertices after rotation about $A$ by an angle
+ of $\theta=\pi/4$.\hfill [6 marks]
+ \begin{align*}
+ P\equiv
+ &\begin{bmatrix}
+ 0&1&0&0 \\ 0&0&1&0 \\0&0&0&1
+ \end{bmatrix} \\
+ \begin{bmatrix}
+ \mathbf{v} & \mathbf{p}
+ \end{bmatrix}\equiv
+ &\begin{bmatrix}
+ 0&0 \\1&1\\1&0
+ \end{bmatrix}
+ \end{align*}
+#+latex: \bvrhrule
+
+#+ATTR_LATEX: :options [resume]
+1.
+ 1. Explain the two winding number rules for inside
+ outside tests. \hfill [4 marks]
+ 2. Explain the working principle of a CRT. \hfill [5
+ marks]
+
+#+latex: \bvrhrule
+
+#+ATTR_LATEX: :options [resume]
+1.
+ 1. Given a projection plane $P$ defined by normal
+ $\textbf{n}$ and a reference point $\textbf{a}$;
+ and the centre of projection as $\mathbf{p}_0$;
+ find the perspective projection of the point
+ $\textbf{x}$ on $P$. \hfill [5 marks]
+ \begin{align*}
+ \begin{bmatrix}
+ \mathbf{a}&\mathbf{n}&\mathbf{p}_0&\mathbf{x}
+ \end{bmatrix}\equiv
+ &
+ \begin{bmatrix}
+ 3&-1&1&8\\4&2&1&10\\5&-1&3&6
+ \end{bmatrix}
+ \end{align*}
+ 2. Given a geometry $G$, which is a standard unit
+ cube scaled uniformly by half and viewed through
+ a Cavelier projection bearing $\theta=\pi/4$
+ wrt. $X$ axis. \hfill [2 marks]
+ 3. Given a view coordinate system (VCS) with origin
+ at $\textbf{p}_v$ and euler angles ZYX as
+ $\boldsymbol{\theta}$ wrt. the world coordinate
+ system (WCS); find the location $\mathbf{x}_v$ in
+ VCS, corresponding to $\textbf{x}_w$ in
+ WCS. \hfill [2 marks]
+ \begin{align*}
+ \begin{bmatrix}
+ \mathbf{p}_v & \boldsymbol{\theta} & \mathbf{x}_w
+ \end{bmatrix}\equiv
+ &\begin{bmatrix}
+ 5&\pi/3&10\\5&0&10\\0&0&0
+ \end{bmatrix}
+ \end{align*}
+
+#+latex: \bvrhrule
+
+#+ATTR_LATEX: :options [resume]
+1.
+ 1. Describe the visible surface detection problem in
+ about 25 words. \hfill [1 mark]
+ 2. To render a scene with $N$ polygons into a
+ display with height $H$; what are the space and
+ time complexities respectively of a typical
+ image-space method. \hfill [2 marks]
+ 3. Given a 3D space bounded within $[0\quad0\quad0]$
+ and $[7\quad7\quad-7]$, containing two infinite
+ planes each defined by 3 incident points
+ $\mathbf{a}_0, \mathbf{a}_1, \mathbf{a}_2$ and
+ $\mathbf{b}_0, \mathbf{b}_1, \mathbf{b}_2$
+ respectively bearing colours (RGB) as
+ $\mathbf{c}_a$ and $\textbf{c}_b$ respectively.
+ \begin{align*}
+ \begin{bmatrix}
+ \mathbf{a}_0&\mathbf{a}_1&\mathbf{a}_2
+ &\mathbf{b}_0&\mathbf{b}_1&\mathbf{b}_2
+ &\mathbf{c}_a&\mathbf{c}_b
+ \end{bmatrix}\equiv
+ &\begin{bmatrix}
+ 1&6&1&6&1&6&1&0 \\
+ 1&3&6&6&3&1&0&0 \\
+ -1&-6&-1&-1&-6&-1&0&1
+ \end{bmatrix}
+ \end{align*}
+ Compute and/ or determine using the depth-buffer
+ method, the colour at pixel $\mathbf{x}=(2,4)$ on
+ a display resolved into $7\times7$ pixels. The
+ projection plane is at $Z=0$, looking at
+ $-Z$. \hfill [6 marks]
+
+#+latex: \bvrhrule
+
+
+# Local Variables:
+# org-latex-default-packages-alist: nil
+# org-latex-packages-alist: nil
+# End:
diff --git a/macros/latex/contrib/tiet-question-paper/tiet-question-paper-sample-org.pdf b/macros/latex/contrib/tiet-question-paper/tiet-question-paper-sample-org.pdf
new file mode 100644
index 0000000000..bd60bf62e6
--- /dev/null
+++ b/macros/latex/contrib/tiet-question-paper/tiet-question-paper-sample-org.pdf
Binary files differ
diff --git a/macros/latex/contrib/tiet-question-paper/tiet-question-paper-sample-org.tex b/macros/latex/contrib/tiet-question-paper/tiet-question-paper-sample-org.tex
new file mode 100644
index 0000000000..54c7290a67
--- /dev/null
+++ b/macros/latex/contrib/tiet-question-paper/tiet-question-paper-sample-org.tex
@@ -0,0 +1,204 @@
+% Created 2024-06-22 Sat 22:57
+% Intended LaTeX compiler: pdflatex
+\documentclass[11pt]{tiet-question-paper}
+\usepackage{amsmath}
+\usepackage{graphicx}
+\usepackage{wrapfig}
+\usepackage{amssymb}
+\usepackage[unicode]{hyperref}
+
+
+\hypersetup{%
+colorlinks,%
+breaklinks,%
+urlcolor=[rgb]{0,0.35,0.65},%
+linkcolor=[rgb]{0,0.35,0.65}%
+}
+\usepackage{libertinus}
+\instlogo{images/tiet-logo.pdf}
+\schoolordepartment{%
+Computer Science \& Engineering Department}
+\examname{End Semester Examination}
+\coursecode{UCS505}
+\coursename{Computer Graphics}
+\timeduration{3 hours}
+\maxmarks{45}
+\faculty{ANG,AMK,HPS,YDS,RGB}
+\date{\today}
+\title{}
+\hypersetup{
+ pdfauthor={B.V. Raghav},
+ pdftitle={},
+ pdfkeywords={},
+ pdfsubject={},
+ pdfcreator={Emacs 29.3 (Org mode 9.6.15)},
+ pdflang={English}}
+\begin{document}
+
+\maketitle
+
+\textbf{Instructions:}
+\begin{enumerate}
+\item Attempt any 5 questions;
+\item Attempt all the subparts of a question at one place.
+\end{enumerate}
+
+\bvrhrule\bvrskipline
+
+\begin{enumerate}
+\item \begin{enumerate}
+\item Given the control polygon \(\textbf{b}_0,
+ \textbf{b}_1, \textbf{b}_2, \textbf{b}_3\) of a
+Cubic Bezier curve; determine the vertex
+coordinates for parameter values \(\forall t\in
+ T\). \hfill [7 marks]
+\begin{align*}
+ T \equiv
+ & \{0, 0.15, 0.35, 0.5, 0.65, 0.85, 1\} \\
+ \begin{bmatrix}
+ \textbf{b}_0 &\textbf{b}_1& \textbf{b}_2& \textbf{b}_3
+ \end{bmatrix} \equiv& \begin{bmatrix}
+ 1&2&4&3\\ 1&3&3&1
+ \end{bmatrix}
+\end{align*}
+
+\item Explain the role of convex hull in curves.
+\hfill[2 marks]
+\end{enumerate}
+\end{enumerate}
+
+\bvrhrule
+
+\begin{enumerate}[resume]
+\item \begin{enumerate}
+\item Describe the continuity conditions for
+curvilinear geometry. \hfill[5 marks]
+\item Define formally, a B-Spline curve. \hfill [2
+marks]
+\item How is a Bezier curve different from a B-Spline
+curve? \hfill [2 marks]
+\end{enumerate}
+\end{enumerate}
+
+\bvrhrule
+
+\begin{enumerate}[resume]
+\item \begin{enumerate}
+\item Given a triangle, with vertices defined by column
+vectors of \(P\); find its vertices after
+reflection across XZ plane. \hfill [3 marks]
+\begin{align*}
+ P\equiv
+ &\begin{bmatrix}
+ 3&6&5 \\ 4&4&6 \\ 1&2&3
+ \end{bmatrix}
+\end{align*}
+\item Given a pyramid with vertices defined by the
+column vectors of \(P\), and an axis of rotation
+\(A\) with direction \(\textbf{v}\) and passing
+through \(\textbf{p}\). Find the coordinates of
+the vertices after rotation about \(A\) by an angle
+of \(\theta=\pi/4\).\hfill [6 marks]
+\begin{align*}
+ P\equiv
+ &\begin{bmatrix}
+ 0&1&0&0 \\ 0&0&1&0 \\0&0&0&1
+ \end{bmatrix} \\
+ \begin{bmatrix}
+ \mathbf{v} & \mathbf{p}
+ \end{bmatrix}\equiv
+ &\begin{bmatrix}
+ 0&0 \\1&1\\1&0
+ \end{bmatrix}
+\end{align*}
+\end{enumerate}
+\end{enumerate}
+\bvrhrule
+
+\begin{enumerate}[resume]
+\item \begin{enumerate}
+\item Explain the two winding number rules for inside
+outside tests. \hfill [4 marks]
+\item Explain the working principle of a CRT. \hfill [5
+marks]
+\end{enumerate}
+\end{enumerate}
+
+\bvrhrule
+
+\begin{enumerate}[resume]
+\item \begin{enumerate}
+\item Given a projection plane \(P\) defined by normal
+\(\textbf{n}\) and a reference point \(\textbf{a}\);
+and the centre of projection as \(\mathbf{p}_0\);
+find the perspective projection of the point
+\(\textbf{x}\) on \(P\). \hfill [5 marks]
+\begin{align*}
+ \begin{bmatrix}
+ \mathbf{a}&\mathbf{n}&\mathbf{p}_0&\mathbf{x}
+ \end{bmatrix}\equiv
+ &
+ \begin{bmatrix}
+ 3&-1&1&8\\4&2&1&10\\5&-1&3&6
+ \end{bmatrix}
+\end{align*}
+\item Given a geometry \(G\), which is a standard unit
+cube scaled uniformly by half and viewed through
+a Cavelier projection bearing \(\theta=\pi/4\)
+wrt. \(X\) axis. \hfill [2 marks]
+\item Given a view coordinate system (VCS) with origin
+at \(\textbf{p}_v\) and euler angles ZYX as
+\(\boldsymbol{\theta}\) wrt. the world coordinate
+system (WCS); find the location \(\mathbf{x}_v\) in
+VCS, corresponding to \(\textbf{x}_w\) in
+WCS. \hfill [2 marks]
+\begin{align*}
+ \begin{bmatrix}
+ \mathbf{p}_v & \boldsymbol{\theta} & \mathbf{x}_w
+ \end{bmatrix}\equiv
+ &\begin{bmatrix}
+ 5&\pi/3&10\\5&0&10\\0&0&0
+ \end{bmatrix}
+\end{align*}
+\end{enumerate}
+\end{enumerate}
+
+\bvrhrule
+
+\begin{enumerate}[resume]
+\item \begin{enumerate}
+\item Describe the visible surface detection problem in
+about 25 words. \hfill [1 mark]
+\item To render a scene with \(N\) polygons into a
+display with height \(H\); what are the space and
+time complexities respectively of a typical
+image-space method. \hfill [2 marks]
+\item Given a 3D space bounded within \([0\quad0\quad0]\)
+and \([7\quad7\quad-7]\), containing two infinite
+planes each defined by 3 incident points
+\(\mathbf{a}_0, \mathbf{a}_1, \mathbf{a}_2\) and
+\(\mathbf{b}_0, \mathbf{b}_1, \mathbf{b}_2\)
+respectively bearing colours (RGB) as
+\(\mathbf{c}_a\) and \(\textbf{c}_b\) respectively.
+\begin{align*}
+ \begin{bmatrix}
+ \mathbf{a}_0&\mathbf{a}_1&\mathbf{a}_2
+ &\mathbf{b}_0&\mathbf{b}_1&\mathbf{b}_2
+ &\mathbf{c}_a&\mathbf{c}_b
+ \end{bmatrix}\equiv
+ &\begin{bmatrix}
+ 1&6&1&6&1&6&1&0 \\
+ 1&3&6&6&3&1&0&0 \\
+ -1&-6&-1&-1&-6&-1&0&1
+ \end{bmatrix}
+\end{align*}
+Compute and/ or determine using the depth-buffer
+method, the colour at pixel \(\mathbf{x}=(2,4)\) on
+a display resolved into \(7\times7\) pixels. The
+projection plane is at \(Z=0\), looking at
+\(-Z\). \hfill [6 marks]
+\end{enumerate}
+\end{enumerate}
+
+\bvrhrule
+\end{document}
diff --git a/macros/latex/contrib/tiet-question-paper/tiet-question-paper-sample.pdf b/macros/latex/contrib/tiet-question-paper/tiet-question-paper-sample.pdf
new file mode 100644
index 0000000000..9f1ff2b670
--- /dev/null
+++ b/macros/latex/contrib/tiet-question-paper/tiet-question-paper-sample.pdf
Binary files differ
diff --git a/macros/latex/contrib/tiet-question-paper/tiet-question-paper-sample.tex b/macros/latex/contrib/tiet-question-paper/tiet-question-paper-sample.tex
new file mode 100644
index 0000000000..4541405a81
--- /dev/null
+++ b/macros/latex/contrib/tiet-question-paper/tiet-question-paper-sample.tex
@@ -0,0 +1,180 @@
+\documentclass[11pt,a4paper,onecolumn]{tiet-question-paper}
+\date{28 May 2024}
+\institute{Alpha}
+\instlogo{images/tiet-logo.pdf}
+\schoolordepartment{%
+ Computer Science \& Engineering Department}
+\examname{%
+ End Semester Examination}
+\coursecode{UCS505}
+\coursename{Computer Graphics}
+\timeduration{3 hours}
+\maxmarks{45}
+\faculty{ANG,AMK,HPS,YDS,RGB}
+
+\begin{document}
+\maketitle
+\textbf{Instructions:}
+\begin{enumerate}
+\item Attempt any 5 questions;
+\item Attempt all the subparts of a question at one
+ place.
+\end{enumerate}
+\bvrhrule[0.4pt]
+\begin{enumerate}
+\item
+ \begin{enumerate}
+ \item Given the control polygon
+ $\textbf{b}_0, \textbf{b}_1, \textbf{b}_2,
+ \textbf{b}_3$ of a Cubic Bezier curve; determine
+ the coordinates for parameter values
+ $\forall t\in T$. \hfill [7 marks]
+
+ \begin{align*}
+ T \equiv
+ & \{0, 0.15, 0.35, 0.5, 0.65, 0.85, 1\} \\
+ \begin{bmatrix}
+ \textbf{b}_0 &\textbf{b}_1& \textbf{b}_2& \textbf{b}_3
+ \end{bmatrix} \equiv
+ & \begin{bmatrix}
+ 1&2&4&3\\ 1&3&3&1
+ \end{bmatrix}
+ \end{align*}
+ \item Explain the role of convex hull in curves.
+ \hfill[2 marks]
+ \end{enumerate}
+\end{enumerate}
+\bvrhrule[0.4pt]
+\begin{enumerate}[resume]
+\item
+ \begin{enumerate}
+ \item Describe the continuity conditions for
+ curvilinear geometry.
+ \hfill[5 marks]
+ \item Define formally, a B-Spline curve. \hfill [2
+ marks]
+ \item How is a Bezier curve different from a B-Spline
+ curve?
+ \end{enumerate}
+\end{enumerate}
+\bvrhrule[0.4pt]
+\begin{enumerate}[resume]
+\item
+ \begin{enumerate}
+ \item Given a triangle, with vertices defined by
+ column vectors of $P$; find its vertices after
+ reflection across XZ plane. \hfill [3 marks]
+ \begin{align*}
+ P\equiv
+ &\begin{bmatrix}
+ 3&6&5 \\ 4&4&6 \\ 1&2&3
+ \end{bmatrix}
+ \end{align*}
+ \item Given a pyramid with vertices defined by the
+ column vectors of $P$, and an axis of rotation $A$
+ with direction $\textbf{v}$ and passing through
+ $\textbf{p}$. Find the coordinates of the vertices
+ after rotation about $A$ by an angle of
+ $\theta=\pi/4$.\hfill [6 marks]
+ \begin{align*}
+ P\equiv
+ &\begin{bmatrix}
+ 0&1&0&0 \\ 0&0&1&0 \\0&0&0&1
+ \end{bmatrix} \\
+ \begin{bmatrix}
+ \mathbf{v} & \mathbf{p}
+ \end{bmatrix}\equiv
+ &\begin{bmatrix}
+ 0&0 \\1&1\\1&0
+ \end{bmatrix}
+ \end{align*}
+ \end{enumerate}
+\end{enumerate}
+\bvrhrule[0.4pt]
+\begin{enumerate}[resume]
+\item
+ \begin{enumerate}
+ \item Explain the two winding number rules for
+ inside outside tests. \hfill [4 marks]
+ \item Explain the working principle of a
+ CRT. \hfill [5 marks]
+ \end{enumerate}
+\end{enumerate}
+\bvrhrule[0.4pt]
+\begin{enumerate}[resume]
+\item
+ \begin{enumerate}
+ \item Given a projection plane $P$ defined by normal
+ $\textbf{n}$ and a reference point $\textbf{a}$;
+ and the centre of projection as $\mathbf{p}_0$;
+ find the perspective projection of the point
+ $\textbf{x}$ on $P$. \hfill [5 marks]
+ \begin{align*}
+ \begin{bmatrix}
+ \mathbf{a}&\mathbf{n}&\mathbf{p}_0&\mathbf{x}
+ \end{bmatrix}\equiv
+ &
+ \begin{bmatrix}
+ 3&-1&1&8\\4&2&1&10\\5&-1&3&6
+ \end{bmatrix}
+ \end{align*}
+ \item Given a geometry $G$, which is a standard unit
+ cube scaled uniformly by half and viewed through a
+ Cavelier projection bearing $\theta=\pi/4$
+ wrt. $X$-axis. \hfill [2 marks]
+ \item Given a view coordinate system (VCS) with
+ origin at $\textbf{p}_v$ and euler angles ZYX
+ $\boldsymbol{\theta}$ wrt. world coordinate system
+ (WCS); find the location $\mathbf{x}_v$ in VCS,
+ corresponding to the point $\textbf{x}_w$ in
+ WCS. \hfill [2 marks]
+ \begin{align*}
+ \begin{bmatrix}
+ \mathbf{p}_v & \boldsymbol{\theta} & \mathbf{x}_w
+ \end{bmatrix}\equiv
+ &\begin{bmatrix}
+ 5&\pi/3&10\\5&0&10\\0&0&0
+ \end{bmatrix}
+ \end{align*}
+ \end{enumerate}
+\end{enumerate}
+\bvrhrule[0.4pt]
+\begin{enumerate}[resume]
+\item
+ \begin{enumerate}
+ \item Describe the visible surface detection
+ problem in about 25 words. \hfill [1 mark]
+ \item To render a scene with $N$ polygons into a
+ display with height $H$; what are the space and
+ time complexities respectively of a typical
+ image-space method. \hfill [2 marks]
+ \item Given a 3D space bounded within
+ $[0\quad0\quad0]$ and $[7\quad7\quad-7]$,
+ containing two infinite planes each defined by 3
+ incident points
+ $\mathbf{a}_0, \mathbf{a}_1, \mathbf{a}_2$ and
+ $\mathbf{b}_0, \mathbf{b}_1, \mathbf{b}_2$
+ respectively bearing colours (RGB) as
+ $\mathbf{c}_a$ and $\textbf{c}_b$ respectively.
+ \begin{align*}
+ \begin{bmatrix}
+ \mathbf{a}_0&\mathbf{a}_1&\mathbf{a}_2
+ &\mathbf{b}_0&\mathbf{b}_1&\mathbf{b}_2
+ &\mathbf{c}_a&\mathbf{c}_b
+ \end{bmatrix}\equiv
+ &\begin{bmatrix}
+ 1&6&1&6&1&6&1&0 \\
+ 1&3&6&6&3&1&0&0 \\
+ -1&-6&-1&-1&-6&-1&0&1
+ \end{bmatrix}
+ \end{align*}
+
+ Compute and/ or determine using the depth-buffer
+ method, the colour at pixel $\mathbf{x}=(2,4)$ on
+ a display resolved into $7\times7$ pixels. The
+ projection plane is at $Z=0$, looking at
+ $-Z$. \hfill [6 marks]
+ \end{enumerate}
+\end{enumerate}
+\bvrhrule[0.4pt]
+\end{document}
diff --git a/macros/latex/contrib/tiet-question-paper/tiet-question-paper.cls b/macros/latex/contrib/tiet-question-paper/tiet-question-paper.cls
new file mode 100644
index 0000000000..6bc28c5792
--- /dev/null
+++ b/macros/latex/contrib/tiet-question-paper/tiet-question-paper.cls
@@ -0,0 +1,337 @@
+%% ----------------------------------------------------
+%% Latex class ‘tiet-question-paper’
+%%
+%% Author: Raghav B. Venkataramaiyer
+%% Email: bv.raghav -at- thapar -dot- edu
+%% Email: bvraghav -at- gmail -dot- com
+%% License: [MIT License](./LICENSE)
+%% Version: 2024-06-22
+%% ----------------------------------------------------
+
+\NeedsTeXFormat{LaTeX2e}
+
+\ProvidesClass%
+{tiet-question-paper}%
+[2024-06-22 TIET Question Paper class]
+
+%% -----------------------------------
+%% Parent Class
+%% -----------------------------------
+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
+\ProcessOptions\relax
+\LoadClass[11pt,a4paper,onecolumn]{article}
+%% -----------------------------------
+
+%% -----------------------------------
+%% Page Margins
+%% -----------------------------------
+\RequirePackage[%
+ a4paper,%
+ left=1in,%
+ top=0.5in,%
+ right=0.75in,%
+ bottom=0.75in%
+]{geometry}
+%% -----------------------------------
+
+%% -----------------------------------
+%% Math package(s)
+%% -----------------------------------
+\RequirePackage{amsmath}
+%% -----------------------------------
+
+%% -----------------------------------
+%% Lipsum for debugging
+%% -----------------------------------
+\RequirePackage{blindtext}
+%% -----------------------------------
+
+%% -----------------------------------
+%% Check for empty argument
+%% -----------------------------------
+\RequirePackage{ifmtarg}
+%% -----------------------------------
+
+%% -----------------------------------
+%% No paragraph indents
+%% -----------------------------------
+\RequirePackage{parskip}
+%% -----------------------------------
+
+%% -----------------------------------
+%% Line spacing
+%% -----------------------------------
+% \RequirePackage{setspace}
+% \doublespacing
+%% -----------------------------------
+
+%% -----------------------------------
+%% Graphics
+%% -----------------------------------
+\RequirePackage{graphicx}
+% \graphicspath{ {./images/} }
+%% -----------------------------------
+
+%% -----------------------------------
+%% Compact Enumeration
+%% -----------------------------------
+\RequirePackage[inline,sizes]{enumitem}
+% \setlist[enumerate]{itemsep=0in}
+\setlist{nosep,leftmargin=*}
+\setlist[enumerate,2]{label=\alph*)}
+%% -----------------------------------
+
+%% -----------------------------------
+%% Extra font sizes
+%% -----------------------------------
+\RequirePackage{anyfontsize}
+%% -----------------------------------
+
+%% -----------------------------------
+%% Automatic width computation
+%% -----------------------------------
+\RequirePackage{linegoal}
+%% -----------------------------------
+
+%% -----------------------------------
+%% Tabularx
+%% -----------------------------------
+\RequirePackage{tabularx}
+%% -----------------------------------
+
+%% -----------------------------------
+%% Box alignment within tables.
+%%
+%% valign keyword in includegraphics
+%% -----------------------------------
+\RequirePackage[export]{adjustbox}
+%% -----------------------------------
+
+%% -----------------------------------
+%% {align} like columnar env.
+%%
+%% Remembers end of paragraph and starts there.
+%% -----------------------------------
+% \RequirePackage{paracol}
+%% -----------------------------------
+
+%% -----------------------------------
+%% Customizing section font
+%% -----------------------------------
+\RequirePackage{sectsty}
+\allsectionsfont{\sffamily}
+\paragraphfont{\sffamily}
+%% -----------------------------------
+
+%% -----------------------------------
+%% Class variable definitions
+%% -----------------------------------
+
+% Variable: institute
+\def\tiet@institute{Thapar Institute of Engineering \&
+ Technology}
+\def\institute#1{\gdef\tiet@institute{#1}}
+
+% Variable: abbrevinst
+\def\tiet@abbrevinst{\textsc{tiet}}
+\def\abbrevinst#1{\gdef\tiet@abbrevinst{#1}}
+
+% Variable: instaddress
+\def\tiet@instaddress{Patiala 147004}
+\def\instaddress#1{\gdef\tiet@instaddress{#1}}
+
+% Variable: instlogo
+\let\tiet@instlogo\relax
+\def\instlogo#1{\gdef\tiet@instlogo{#1}}
+
+% Variable: schoolordepartment
+\let\tiet@schoolordepartment\relax
+\def\schoolordepartment#1{\def\tiet@schoolordepartment{#1}}
+
+% Variable: examname
+\let\tiet@examname\relax
+\def\examname#1{\def\tiet@examname{#1}}
+
+% Variable: cohort
+\let\tiet@cohort\relax
+\def\cohort#1{\def\tiet@cohort{#1}}
+
+% Variable: coursecode
+\let\tiet@coursecode\relax
+\def\coursecode#1{\def\tiet@coursecode{#1}}
+
+% Variable: coursename
+\let\tiet@coursename\relax
+\def\coursename#1{\def\tiet@coursename{#1}}
+
+% Variable: timeduration
+\let\tiet@timeduration\relax
+\def\timeduration#1{\def\tiet@timeduration{#1}}
+
+% Variable: maxmarks
+\let\tiet@maxmarks\relax
+\def\maxmarks#1{\def\tiet@maxmarks{#1}}
+
+% Variable: faculty
+\let\tiet@faculty\relax
+\def\faculty#1{\gdef\tiet@faculty{#1}}
+
+%% -----------------------------------
+
+%% -----------------------------------
+%% Questions Enum
+%%
+%% Ref: https://tex.stackexchange.com/a/164623
+%% Update: Doesn’t help enough.
+%% [TODO]
+%% -----------------------------------
+\DeclareRobustCommand%
+% Horizontal rule after each question
+\bvrhrule[1][0.4pt]{\rule{\linewidth}{#1}}
+
+\DeclareRobustCommand%
+% Skip line
+\bvrskipline[1][]{\vspace{#1\baselineskip}}
+
+% \newlist{qenum}{enumerate}{3}
+% \setlist[qenum]{nosep,label=\arabic*.}
+% % -----------------------------------------------------
+% % We need a toggle to track whether the item is first
+% % in the list or not
+% \newif\ifbvrfirstq\bvrfirstqfalse
+% \setlist*[qenum,1]{%
+% label=\arabic*.,%
+% % ---------------------------------------------------
+% % This saves the standard definition of \item and
+% % then redefines it to add the fill if the item is
+% % not first on the list; if it is the first item, it
+% % omits the fill but toggles the bvrfirstq switch so
+% % the next item will trigger it
+% first={%
+% % -------------------------------------------------
+% % Save the standard definition of \item in a macro,
+% % \olditem
+% \let\olditem\item%
+% % -------------------------------------------------
+% % Set the toggle for first item in the list to true
+% \bvrfirstqtrue%
+% % -------------------------------------------------
+% % New, temporary defition of \item
+% \def\item{\ifbvrfirstq\olditem\bvrfirstqfalse\else
+% \bvrhrule\bvrskipline\olditem\fi}%
+% },%
+% % ---------------------------------------------------
+% % This takes care of adding the fill for the final
+% % item on the list and just makes sure that \item is
+% % reset to its standard definition
+% after={
+% % -------------------------------------------------
+% % Fill for final item in list
+% \bvrhrule%
+% % -------------------------------------------------
+% % Restore standard definition of \item
+% \let\item\olditem%
+% }%
+% }
+% \setlist[qenum,2]{label=\alph*),before={},after={},first={}}
+% %% -----------------------------------
+
+
+%% -----------------------------------
+%% Write Examination Details and Draw Logo
+%% -----------------------------------
+
+\DeclareRobustCommand%
+% Write Examination Details
+\writeexamdetails{
+ \parbox[t][][t]{\linewidth}{\centering\large%
+ {\bfseries \tiet@institute\par}
+
+ \vspace*{0.2\baselineskip}
+ {\tiet@schoolordepartment}
+
+ \vspace*{0.2\baselineskip}
+ {\MakeUppercase\tiet@examname}}
+}
+\DeclareRobustCommand%
+% Draw Logo
+\drawinstlogo{
+ \parbox[t][][t]{\linewidth}{\raggedright%
+ \includegraphics[width=11.5mm,valign=t]
+ {\tiet@instlogo}\par}
+}
+
+
+
+%% -----------------------------------
+%% Title Page
+%% -----------------------------------
+
+% Make title
+\renewcommand\maketitle{
+ {\noindent Roll No. \rule{5cm}{0.4pt} \hfill
+ \bfseries\@date\par}
+
+ % \vspace*{0.5\baselineskip}
+ {\noindent\large \textbf{\tiet@coursecode :
+ \tiet@coursename} \hfill Time:
+ \textbf{\tiet@timeduration} \hspace{0.3em}
+ MM:\textbf{\tiet@maxmarks}}\\
+ {\noindent Faculty: \tiet@faculty}
+
+
+ \vspace*{\baselineskip}
+ \ifx\tiet@instlogo\@empty
+ \writeexamdetails
+ \else
+ \begin{tabularx}{\textwidth}{Xp{18mm}}
+ \writeexamdetails & \drawinstlogo
+ \end{tabularx}
+ \fi
+
+ \par\rule{\textwidth}{0.4pt}
+ \par\vspace*{0.5\baselineskip}
+}
+%% -----------------------------------
+
+%% -----------------------------------
+%% Counterlessfootnote
+%% -----------------------------------
+\newcommand{\footnotenoless}[1]{%
+ \let\svthefootnote\thefootnote
+ \let\thefootnote\relax\footnote{#1}
+ \addtocounter{footnote}{-1}\let\thefootnote\svthefootnote
+}
+%% -----------------------------------
+
+%% -----------------------------------
+%% Abbreviations
+%% -----------------------------------
+\RequirePackage{xspace}
+
+% Add a period to the end of an abbreviation unless
+% there's one already, then \xspace.
+\makeatletter
+\DeclareRobustCommand\onedot{\futurelet\@let@token\@onedot}
+\def\@onedot{\ifx\@let@token.\else.\null\fi\xspace}
+
+\def\eg{\emph{e.g}\onedot}
+\def\Eg{\emph{E.g}\onedot}
+
+\def\ie{\emph{i.e}\onedot}
+\def\Ie{\emph{I.e}\onedot}
+
+\def\cf{\emph{c.f}\onedot}
+\def\Cf{\emph{C.f}\onedot}
+
+\def\etc{\emph{etc}\onedot}
+
+\def\vs{\emph{vs}\onedot}
+
+\def\wrt{w.r.t\onedot}
+\def\dof{d.o.f\onedot}
+
+\def\etal{\emph{et al}\onedot}
+\makeatother
+%% -----------------------------------
+
diff --git a/macros/latex/contrib/tkz/pgfornament/README.md b/macros/latex/contrib/tkz/pgfornament/README.md
index 737ee2acc2..901d6554cc 100644
--- a/macros/latex/contrib/tkz/pgfornament/README.md
+++ b/macros/latex/contrib/tkz/pgfornament/README.md
@@ -1,6 +1,6 @@
# pgfornament – Drawing of Vectorian ornaments with PGF/TikZ
-Release 1.2 2020/05/28
+Release 1.3 2024/08/14
## Description
@@ -55,6 +55,9 @@ your LaTeX document.
Documentations for `pgfornament` and `tikzrput` are available on CTAN and in your TeX distribution.
## History
+
+- v 1.3 Correction of bug (spurious space) by Tibor Tómács and correction of the documentation.
+
- v 1.2 Correction of bug (spurious space) by LianTze Lim.
- v 1.00 Add the Han ornanments and some new macros. Add some examples to the documentation. Thanks to Pablo Gonzáles L to help me with "Git".
diff --git a/macros/latex/contrib/tkz/pgfornament/doc/ornaments.pdf b/macros/latex/contrib/tkz/pgfornament/doc/ornaments.pdf
index 6486f4e253..46f3fe8fef 100644
--- a/macros/latex/contrib/tkz/pgfornament/doc/ornaments.pdf
+++ b/macros/latex/contrib/tkz/pgfornament/doc/ornaments.pdf
Binary files differ
diff --git a/macros/latex/contrib/tkz/pgfornament/doc/ornaments.tex b/macros/latex/contrib/tkz/pgfornament/doc/ornaments.tex
index c52dd63e91..2a7f4b0fc1 100644
--- a/macros/latex/contrib/tkz/pgfornament/doc/ornaments.tex
+++ b/macros/latex/contrib/tkz/pgfornament/doc/ornaments.tex
@@ -8,7 +8,7 @@
% of this license or (at your option) any later version and/or
% 2. under the GNU Public License.
%---------%---------%---------%---------%---------%---------%---------%---------
-% Version 1.2 2020/0 5/26
+% Version 1.3 2024/08/14
\RequirePackage{luatex85}
\RequirePackage{silence}
\WarningsOff[latex]
@@ -137,7 +137,7 @@ urlcolor=orange}
\bigskip
-\noindent\pgfornament[width=0.75 cm]{152}\ (Version 1.2 2020/05/26)
+\noindent\pgfornament[width=0.75 cm]{152}\ (Version 1.3 2024/08/14)
\begin{abstract}
This document describes the \LaTeX\ package \emph{\docpkg{pgfornament}} and presents the syntax and parameters of the macro "pgfornament".
diff --git a/macros/latex/contrib/tkz/pgfornament/doc/usefulcommands.tex b/macros/latex/contrib/tkz/pgfornament/doc/usefulcommands.tex
index 4af2421923..4a54f9ea45 100644
--- a/macros/latex/contrib/tkz/pgfornament/doc/usefulcommands.tex
+++ b/macros/latex/contrib/tkz/pgfornament/doc/usefulcommands.tex
@@ -5,11 +5,11 @@
\setlength{\@tempdimb}{\paperwidth-\@tempdima-1cm}%
\setlength{\@tempdimc}{\paperheight-\@tempdima}%
\put(\LenToUnit{\@tempdima},\LenToUnit{\@tempdimc}){%
- \pgfornament[color=Maroon,anchor=north west,width=1cm]{39}}
-\put(\LenToUnit{\@tempdima},\LenToUnit{\@tempdima}){%
- \pgfornament[color=Maroon,anchor=south west,width=1cm,symmetry=h]{39}}
+ \pgfornament[color=Maroon,anchor=north west,width=1cm]{39}}
\put(\LenToUnit{\@tempdimb},\LenToUnit{\@tempdimc}){%
\pgfornament[color=Maroon,anchor=north east,width=1cm,symmetry=v]{39}}
+\put(\LenToUnit{\@tempdima},\LenToUnit{\@tempdima}){%
+ \pgfornament[color=Maroon,anchor=south west,width=1cm,symmetry=h]{39}}
\put(\LenToUnit{\@tempdimb},\LenToUnit{\@tempdima}){%
\pgfornament[color=Maroon,anchor=south east,width=1cm,symmetry=c]{39}}
\endgroup
diff --git a/macros/latex/contrib/tkz/pgfornament/latex/pgfornament.sty b/macros/latex/contrib/tkz/pgfornament/latex/pgfornament.sty
index 27406e8bbf..fad27cbb74 100644
--- a/macros/latex/contrib/tkz/pgfornament/latex/pgfornament.sty
+++ b/macros/latex/contrib/tkz/pgfornament/latex/pgfornament.sty
@@ -17,7 +17,7 @@
% Inspired from psvectorian P Fradin H Voss
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{tikz,pgfopts}
-\ProvidesPackage{pgfornament}[2020/05/26 v1.2 vector ornaments]
+\ProvidesPackage{pgfornament}[2024/08/14 v1.3 vector ornaments]
\gdef\pgfOrnamentsObject{pgflibraryvectorian.code.tex}
\gdef\OrnamentsFamily{vectorian}
\pgfkeys{%
@@ -138,7 +138,7 @@ baseline={([yshift=\pgfornamentydelta]current bounding box.\pgfornamentanchor)},
\pgftransformscale{\pgfornamentscale}%
\pgf@@ornament{#2}%
\end{tikzpicture}%
-\tikzset{pgfornamentstyle/.style={cm={1,0,0,1,(0,0)}}}
+\tikzset{pgfornamentstyle/.style={cm={1,0,0,1,(0,0)}}}%
}% end pgfornament
\gdef\ornamenttopos{.5}
@@ -180,8 +180,8 @@ baseline={([yshift=\pgfornamentydelta]current bounding box.\pgfornamentanchor)},
\pgfextractx{\pgf@x}{\pgfpointanchor{#2}{#3 west}}
\pgf@xb=\pgf@x
\advance\pgf@xb by -\pgf@xa
-\node[inner sep=0pt] at ($(#1.#3 east)!.5!(#2.#3 west)$) {\pgfornament[width=\pgf@xb]{#4}} ;
-}
+\node[inner sep=0pt] at ($(#1.#3 east)!.5!(#2.#3 west)$) {\pgfornament[width=\pgf@xb]{#4}};
+}%
\def\pgfornamentvline#1#2#3#4{%
\pgfextracty{\pgf@y}{\pgfpointanchor{#1}{south #3}}
\pgf@ya=\pgf@y
@@ -203,7 +203,7 @@ baseline={([yshift=\pgfornamentydelta]current bounding box.\pgfornamentanchor)},
\pgfmathsetmacro{#1}{atan2(\pgf@x,\pgf@y)}%
}%
\makeatother
-\newcommand{\resetpgfornamentstyle}{\tikzset{pgfornamentstyle/.style={}}}
+\newcommand{\resetpgfornamentstyle}{\tikzset{pgfornamentstyle/.style={}}}%
% 2020 Changing vector objects
\def\newpgfornamentfamily#1{%
@@ -219,11 +219,10 @@ baseline={([yshift=\pgfornamentydelta]current bounding box.\pgfornamentanchor)},
/ornamentline/.search also={/tikz}}
\def\pgfornamentline{\pgfutil@ifnextchar[{\pgf@ornamentline}{\pgf@ornamentline[]}}%
\def\pgf@ornamentline[#1]#2#3#4#5{%
-
\pgfqkeys{/ornamentline}{#1}%
\pgfmathsetmacro\nbo{#4}
\path (#2) -- (#3) foreach \i in {0,...,\nbo} {coordinate[pos=\i/\nbo] (p\i)}
[color=\ornamentcolor] foreach \i [count=\j] in {0,...,\number\numexpr\nbo-1} { (p\i) to [ornament=#5] (p\j)};
-}
+}%
\makeatother
\endinput \ No newline at end of file
diff --git a/macros/latex/contrib/tkz/tkz-elements/README.md b/macros/latex/contrib/tkz/tkz-elements/README.md
index a4d8d90fad..66c11bf62f 100644
--- a/macros/latex/contrib/tkz/tkz-elements/README.md
+++ b/macros/latex/contrib/tkz/tkz-elements/README.md
@@ -1,10 +1,10 @@
# tkz-elements — for euclidean geometry
-Release 2.25c 2024/04/28
+Release 2.30c 2024/07/16
## Description
-`tkz-elements v.2.25c` is the new version of a library written in lua, allowing to make all the necessary calculations to define the objects of a Euclidean geometry figure. You need to compile with `LuaLaTeX`. With `tkz-elements`, the definitions and calculations are only done with `Lua`.
+`tkz-elements v.2.30c` is the new version of a library written in lua, allowing to make all the necessary calculations to define the objects of a Euclidean geometry figure. You need to compile with `LuaLaTeX`. With `tkz-elements`, the definitions and calculations are only done with `Lua`.
The main possibility of programmation proposed is oriented "object programming" with object classes like point, line, triangle, circle and ellipse. For the moment, once the calculations are done, it is `tkz-euclide` or `TikZ` which allows the drawings. You can use the option `mini` with `tkz-euclide` to load only the modules required for tracing.
@@ -62,6 +62,15 @@ An important example `Golden Arbelos` using the package is on the site. All the
are on the site.
## History
+
+ - version 2.30c
+ - new version of the macro `\tkzGetNodes` written by Sanskar Singh. This version now fixes a bug that prevented a figure from being centred with `centering` or the `center` environment.
+ - adding methods `bevan_circle`, `symmedial_circle`.
+ - correction of the methods `function triangle: bevan_point ()` and `function triangle: mittenpunkt_point ()`.
+ - adding `function triangle: similar ()`
+ - adding `function line : perpendicular_bisector ()` which is similar to `function line : mediator ()`
+ - correction of documentation.
+
- version 2.25c
- French documentation at my site: [http://altermundus.fr](http://altermundus.fr)
- Added `colinear_at` a new method for the classe `line`
diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-circle.tex b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-circle.tex
index 7ae96c7ada..85e7359518 100644
--- a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-circle.tex
+++ b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-circle.tex
@@ -25,8 +25,8 @@ This class is defined by two points: the center and a point through which the ci
\Iattr{circle}{south} & |C.AB.south| & |z.S = C.OA.south| \\
\Iattr{circle}{east} & |C.AB.east| & |z.E = C.OA.east| \\
\Iattr{circle}{west} & |C.AB.west| & |z.W = C.OA.west| \\
-\Iattr{circle}{opp} & |z.Ap = C.AB.opp| & Refer to (\ref{ssub:example_circle_attributes}) \\
-\Iattr{circle}{ct} & |L = C.AB.ct| & Refer to (\ref{ssub:example_circle_attributes}) \\
+\Iattr{circle}{opp} & |z.Ap = C.AB.opp| & [\ref{ssub:example_circle_attributes}] \\
+\Iattr{circle}{ct} & |L = C.AB.ct| [ \ref{ssub:example_circle_attributes} ] \\
\bottomrule %
\end{tabular}
\egroup
@@ -71,16 +71,16 @@ Three attributes are used (south, west, radius).
z.c = C.ab.opp
z.r,z.t = get_points (C.ab.ct : ortho_from (z.b))
\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
+
+\emph{\begin{tikzpicture}
\tkzGetNodes
\tkzDrawPoints(a,b,c,s,w)
\tkzLabelPoints(a,b,c,s,w)
\tkzDrawCircle(a,b)
\tkzDrawSegments(a,b r,t b,c)
\tkzLabelSegment[sloped](a,b){ab = \tkzUseLua{r}}
-\end{tikzpicture}
-\hspace*{\fill}
+\end{tikzpicture}}
+
\end{minipage}
% subsubsection example_circle_attributes (end)
% subsection attributes_of_a_circle (end)
@@ -96,184 +96,314 @@ Three attributes are used (south, west, radius).
\toprule
\textbf{Methods} & \textbf{Comments} & \\
\midrule \\
-\Igfct{circle}{new(O,A)} & |C.OA = circle : new (z.O,z.A)| & circle center $O$ through $A$\\
-\Igfct{circle}{radius(O,r)} & |C.OA = circle : radius (z.O,2)| & circle center $O$ radius =2 cm\\
-\Igfct{circle}{diameter(A,B)} & |C.OA = circle :diameter(z.A,z.B)| & circle diameter $[AB]$ \\
+\Igfct{circle}{new(O,A)} & |C.OA = circle : new (z.O,z.A)| & center $O$ through $A$; [\ref{ssub:method_imeth_circle_new}]\\
+\Igfct{circle}{radius(O,r)} & |C.OA = circle : radius (z.O,2)| & center $O$ radius =2 cm; [\ref{ssub:method_imeth_circle_radius}]\\
+\Igfct{circle}{diameter(A,B)} & |C.OA = circle :diameter(z.A,z.B)| & diameter $[AB]$; [\ref{ssub:method_imeth_circle_diameter}] \\
\midrule
\textbf{Points} &&\\
\midrule
-\Imeth{circle}{antipode (pt)} & |z.C = C.OA: antipode (z.B)| & $[BC]$ is a diameter \\
-\Imeth{circle}{inversion (pt)} & |z.Bp = C.AC: inversion (z.B)|&\\
-\Imeth{circle}{midarc (pt,pt)} & |z.D = C.AB: midarc (z.B,z.C)|& $D$ is the midarc of $\widearc{BC}$\\
-\Imeth{circle}{point (r)} & |z.E = C.AB: point (0.25)|& |r| between 0 and 1\\
+\Imeth{circle}{antipode (pt)} & |z.C = C.OA: antipode (z.B)| & $[BC]$ = diameter; [\ref{ssub:method_imeth_circle_antipode}] \\
+\Imeth{circle}{midarc (pt,pt)} & |z.D = C.AB: midarc (z.B,z.C)|& $D$ is the midarc of $\widearc{BC}$; [\ref{ssub:method_imeth_circle_midarc}]\\
+\Imeth{circle}{point (r)} & |z.E = C.AB: point (0.25)|& |r| between 0 and 1; [\ref{ssub:method_imeth_circle_point}]\\
\Imeth{circle}{random\_pt(lower, upper)} & &\\
-\Imeth{circle}{internal\_similitude (C)} & |z.I = C.one : internal_similitude (C.two)| &\\
-\Imeth{circle}{external\_similitude (C)} & |z.J = C.one : external_similitude (C.two)| & \\
-\Imeth{circle}{radical\_center (C1<,C2>)} & or only (C1) & Refer to \ref{sub:radical_center} \\
+\Imeth{circle}{inversion (obj)} & |z.Bp = C.AC: inversion (z.B)|& [\ref{ssub:inversion}]\\
+\Imeth{circle}{internal\_similitude (C)} & |z.I= C.one: internal_similitude(C.two)| & [\ref{ssub:method_imeth_circle_internal__similitude}]\\
+\Imeth{circle}{external\_similitude (C)} & |z.J= C.one: external_similitude(C.two)| & [\ref{ssub:method_imeth_circle_external__similitude}] \\
+\Imeth{circle}{radical\_center (C1<,C2>)} & or only (C1) & [\ref{ssub:radical_center} ] \\
\midrule
\textbf{Lines} & & \\
\midrule
-\Imeth{circle}{radical\_axis (C)} & Refer to ( \ref{sub:d_alembert_2} ; \ref{sub:radical_axis_v1} ; \ref{sub:radical_axis_v2} ; \ref{sub:radical_axis_v3} ; \ref{sub:radical_axis_v4})& \\
-\Imeth{circle}{tangent\_at (pt)} & |z.P = C.OA: tangent_at (z.M)| & Refer to (\ref{ssub:lemoine} ; \ref{ssub:example_combination_of_methods})\\
-\Imeth{circle}{tangent\_from (pt)}& |z.M,z.N = C.OA: tangent_from (z.P)| & Refer to (\ref{tangent_from})\\
-\Imeth{circle}{inversion (line)} & |L or C = C.AC: inversion (L.EF)|& Refer to (\ref{ssub:inversion_line})\\
-\Imeth{circle}{common\_tangent (C)} & |z.a,z.b = C.AC: common_tangent (C.EF)|& Refer to (\ref{sub:common_tangent} ; \ref{sub:common_tangent_orthogonality})\\
+\Imeth{circle}{radical\_axis (C)} & [ \ref{ssub:method_imeth_circle_radical__axis_c} ; \ref{sub:d_alembert_2} ] & \\
+\Imeth{circle}{tangent\_at (pt)} & |z.P=C.OA:tangent_at(z.M)| & [\ref{ssub:method_imeth_circle_tangent}] \\
+\Imeth{circle}{tangent\_from (pt)}& |z.M,z.N=C.OA: tangent_from (z.P)| & [\ref{ssub:method_imeth_circle_tangent} ] \\
+\Imeth{circle}{common\_tangent (C)}& |z.a,z.b = C.AC: common_tangent (C.EF)|& [\ref{ssub:common_tangent} ; \ref{sub:common_tangent_orthogonality}] \\
\midrule
\textbf{Circles}& &\\
\midrule
-\Imeth{circle}{orthogonal\_from (pt)} &|C=C.OA:orthogonal_from (z.P)| & Refer to (\ref{ssub:altshiller} ; \ref{sub:common_tangent_orthogonality} ; \ref{sub:orthogonal_circles_v1} ; \ref{sub:pencil_v1}) \\
-\Imeth{circle}{orthogonal\_through (pta,ptb)}&|C=C.OA:orthogonal_through (z.z1,z.z2)| & Refer to (\ref{sub:orthogonal_circle_through})\\
-\Imeth{circle}{inversion (...)} &|C.AC:inversion (pt, pts, L or C)|& Refer to \ref{ssub:inversion}, \ref{ssub:inversion_point}, \ref{ssub:inversion_line}, \ref{ssub:inversion_circle}\\
-\Imeth{circle}{midcircle (C)} & |C.inv = C.OA: midcircle (C.EF)| & Refer to \ref{ssub:midcircle} \\
-\Imeth{circle}{radical\_circle (C1<,C2>)} & or only (C1) & Refer to \ref{sub:radical_circle}\\
+\Imeth{circle}{orthogonal\_from (pt)} &|C=C.OA:orthogonal_from (z.P)| & [\ref{ssub:method_imeth_circle_orthogonal_from_pt} ;\ref{sub:altshiller} ; \ref{sub:pencil_v1}] \\
+\Imeth{circle}{orthogonal\_through(pta,ptb)}&|C=C.OA:orthogonal_through (z.z1,z.z2)| & [\ref{ssub:method_imeth_circle_orthogonal_through}]\\
+\Imeth{circle}{midcircle (C)} & |C.inv = C.OA: midcircle (C.EF)| & [\ref{ssub:midcircle}] \\
+\Imeth{circle}{radical\_circle (C1<,C2>)} & or only (C1) & [\ref{ssub:radical_circle}] \\
\midrule
\textbf{Miscellaneous} &&\\
\midrule
-\Imeth{circle}{power (pt)} &|p = C.OA: power (z.M)| & Refer to (\ref{sub:power_v1} ; \ref{sub:power_v2} ; \ref{sub:apollonius_circle_v1_with_inversion}) \\
-\Imeth{circle}{in\_out (pt)} & |C.OA : in_out (z.M)| & Refer to (\ref{sub:in_out_for_circle_and_disk}) \\
-\Imeth{circle}{in\_out\_disk (pt)} & |C.OA : in_out_disk (z.M)| & Refer to (\ref{sub:in_out_for_circle_and_disk}) \\
+\Imeth{circle}{power (pt)} &| r = C.OA: power (z.M)| & [\ref{par:power_v1} ; \ref{par:power_v2} ; \ref{sub:apollonius_circle_v1_with_inversion} ] \\
+\Imeth{circle}{in\_out (pt)} & |C.OA : in_out (z.M)| & [\ref{ssub:in_out_for_circle_and_disk}] \\
+\Imeth{circle}{in\_out\_disk (pt)} & |C.OA : in_out_disk (z.M)| & [\ref{ssub:in_out_for_circle_and_disk}] \\
\Imeth{circle}{draw ()} & for further use &\\
-\Imeth{circle}{circles\_position (C1)} & result = string &Refer to (\ref{sub:circles_position}) \\
+\Imeth{circle}{circles\_position (C1)} & result = string & [\ref{ssub:circles_position}] \\
\bottomrule
\end{tabular}
\egroup
% subsection methods_circle (end)
-\subsubsection{Altshiller} % (fold)
-\label{ssub:altshiller}
+\subsubsection{Method \Imeth{circle}{new}} % (fold)
+\label{ssub:method_imeth_circle_new}
+
+A circle is defined by its centre and a point through which it passes.
+\vspace{6pt}
\begin{minipage}{.5\textwidth}
\begin{Verbatim}
\begin{tkzelements}
- z.P = point : new (0,0)
- z.Q = point : new (5,0)
- z.I = point : new (3,2)
- C.QI = circle : new (z.Q,z.I)
- C.PE = C.QI : orthogonal_from (z.P)
- z.E = C.PE.through
- C.QE = circle : new (z.Q,z.E)
- _,z.F = intersection (C.PE,C.QE)
- z.A = C.PE: point (1/9)
- L.AE = line : new (z.A,z.E)
- _,z.C = intersection (L.AE,C.QE)
- L.AF = line : new (z.A,z.F)
- L.CQ = line : new (z.C,z.Q)
- z.D = intersection (L.AF,L.CQ)
+z.O = point: new (0,0)
+z.A = point: new (2,1)
+C = circle: new (z.O , z.A)
\end{tkzelements}
-\begin{tikzpicture}
- \tkzGetNodes
- \tkzDrawCircles(P,E Q,E)
- \tkzDrawLines[add=0 and 1](P,Q)
- \tkzDrawLines[add=0 and 2](A,E)
- \tkzDrawSegments(P,E E,F F,C A,F C,D)
- \tkzDrawPoints(P,Q,E,F,A,C,D)
- \tkzLabelPoints(P,Q,E,F,A,C,D)
+\begin{tikzpicture}[gridded]
+\tkzGetNodes
+\tkzDrawCircles(O,A)
+\tkzDrawPoints(A,O)
+\tkzLabelPoints[right](A,O)
\end{tikzpicture}
\end{Verbatim}
\end{minipage}
-\hspace*{\fill}
\begin{minipage}{.5\textwidth}
- \begin{tkzelements}
- scale =.5
- z.P = point : new (0,0)
- z.Q = point : new (5,0)
- z.I = point : new (3,2)
- C.QI = circle : new (z.Q,z.I)
- C.PE = C.QI : orthogonal_from (z.P)
- z.E = C.PE.through
- C.QE = circle : new (z.Q,z.E)
- _,z.F = intersection (C.PE,C.QE)
- z.A = C.PE: point (1/9)
- L.AE = line : new (z.A,z.E)
- _,z.C = intersection (L.AE,C.QE)
- L.AF = line : new (z.A,z.F)
- L.CQ = line : new (z.C,z.Q)
- z.D = intersection (L.AF,L.CQ)
- \end{tkzelements}
- \begin{tikzpicture}
- \tkzGetNodes
- \tkzDrawCircles(P,E Q,E)
- \tkzDrawLines[add=0 and 1](P,Q)
- \tkzDrawLines[add=0 and 2](A,E)
- \tkzDrawSegments(P,E E,F F,C A,F C,D)
- \tkzDrawPoints(P,Q,E,F,A,C,D)
- \tkzLabelPoints(P,Q,E,F,A,C,D)
- \end{tikzpicture}
+\begin{tkzelements}
+z.O = point: new (0,0)
+z.A = point: new (2,1)
+C = circle: new (z.O , z.A)
+\end{tkzelements}
+ \begin{center}
+\begin{tikzpicture}[gridded]
+\tkzGetNodes
+\tkzDrawCircles(O,A)
+\tkzDrawPoints(A,O)
+\tkzLabelPoints[right](A,O)
+\end{tikzpicture}
+ \end{center}
+
\end{minipage}
-%subsubsection altshiller (end)
-\subsubsection{Lemoine} % (fold)
-\label{ssub:lemoine}
+% subsubsection method_imeth_circle_new (end)
+\subsubsection{Method \Imeth{circle}{radius}} % (fold)
+\label{ssub:method_imeth_circle_radius}
+
+
+We define a circle with its centre and radius.
+
+\vspace{6pt}
\begin{minipage}{.5\textwidth}
\begin{Verbatim}
\begin{tkzelements}
- scale = 1.25
- z.A = point: new (1,0)
- z.B = point: new (5,2)
- z.C = point: new (1.2,2)
- T = triangle: new(z.A,z.B,z.C)
- z.O = T.circumcenter
- C.OA = circle: new (z.O,z.A)
- L.tA = C.OA: tangent_at (z.A)
- L.tB = C.OA: tangent_at (z.B)
- L.tC = C.OA: tangent_at (z.C)
- z.P = intersection (L.tA,T.bc)
- z.Q = intersection (L.tB,T.ca)
- z.R = intersection (L.tC,T.ab)
+z.O = point: new (0,0)
+z.A = point: new (2,1)
+C = circle: radius (z.A , math.sqrt(5))
+z.T = C.through
\end{tkzelements}
-\begin{tikzpicture}
- \tkzGetNodes
- \tkzDrawPolygon[teal](A,B,C)
- \tkzDrawCircle(O,A)
- \tkzDrawPoints(A,B,C,P,Q,R)
- \tkzLabelPoints(A,B,C,P,Q,R)
- \tkzDrawLine[blue](Q,R)
- \tkzDrawLines[red](A,P B,Q R,C)
- \tkzDrawSegments(A,R C,P C,Q)
+\begin{tikzpicture}[gridded]
+\tkzGetNodes
+\tkzDrawCircles(A,T)
+\tkzDrawPoints(A,O,T)
+\tkzLabelPoints[right](A,O,T)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+ \begin{tkzelements}
+ z.O = point: new (0,0)
+ z.A = point: new (2,1)
+ C = circle: radius (z.A , math.sqrt(5))
+ z.T = C.through
+ \end{tkzelements}
+ \begin{center}
+ \begin{tikzpicture}[gridded]
+ \tkzGetNodes
+ \tkzDrawCircles(A,T)
+ \tkzDrawPoints(A,O,T)
+ \tkzLabelPoints[right](A,O,T)
+ \end{tikzpicture}
+ \end{center}
+\end{minipage}
+% subsubsection method_imeth_circle_radius (end)
+
+\subsubsection{Method \Imeth{circle}{diameter}} % (fold)
+\label{ssub:method_imeth_circle_diameter}
+
+A circle is defined by two points at the ends of one of its diameters.
+
+\vspace{6pt}
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+z.A = point: new (0,0)
+z.B = point: new (2,1)
+C = circle: diameter (z.A , z.B)
+z.O = C.center
+z.T = C.through
+\end{tkzelements}
+\begin{tikzpicture}[gridded]
+\tkzGetNodes
+\tkzDrawCircles(O,T)
+\tkzDrawPoints(A,B,O,T)
+\tkzLabelPoints[right](A,B,O,T)
\end{tikzpicture}
\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+\begin{tkzelements}
+z.A = point: new (0,0)
+z.B = point: new (2,1)
+C = circle: diameter (z.A , z.B)
+z.O = C.center
+z.T = C.through
+\end{tkzelements}
+ \begin{center}
+\begin{tikzpicture}[gridded]
+\tkzGetNodes
+\tkzDrawCircles(O,T)
+\tkzDrawPoints(A,B,O,T)
+\tkzLabelPoints[right](A,B,O,T)
+\end{tikzpicture}
+ \end{center}
+\end{minipage}
+% subsubsection method_imeth_circle_diameter (end)
+\subsubsection{Method \Imeth{circle}{antipode}} % (fold)
+\label{ssub:method_imeth_circle_antipode}
+This method is used to define a point that is diametrically opposed to a point on a given circle.
+
+\vspace{6pt}
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+z.A = point: new (0,0)
+z.O = point: new (2,1)
+C = circle: new (z.O , z.A)
+z.B = C : antipode (z.A)
+\end{tkzelements}
+\begin{tikzpicture}[gridded]
+\tkzGetNodes
+\tkzDrawCircles(O,A)
+\tkzDrawPoints(A,B,O)
+\tkzLabelPoints[right](A,B,O)
+\end{tikzpicture}
+\end{Verbatim}
\end{minipage}
\begin{minipage}{.5\textwidth}
\begin{tkzelements}
-scale = .75
-z.A = point: new (1,0)
-z.B = point: new (5,2)
-z.C = point: new (1.2,2)
-T = triangle: new(z.A,z.B,z.C)
-z.O = T.circumcenter
-C.OA = circle: new (z.O,z.A)
-L.tA = C.OA: tangent_at (z.A)
-L.tB = C.OA: tangent_at (z.B)
-L.tC = C.OA: tangent_at (z.C)
-z.R = intersection (L.tC,T.ab)
-z.P = intersection (L.tA,T.bc)
-z.Q = intersection (L.tB,T.ca)
-\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}[rotate=90]
-\tkzGetNodes
-\tkzDrawPolygon[teal](A,B,C)
+z.A = point: new (0,0)
+z.O = point: new (2,1)
+C = circle: new (z.O , z.A)
+z.B = C : antipode (z.A)
+\end{tkzelements}
+ \begin{center}
+\begin{tikzpicture}[gridded]
+\tkzGetNodes
+\tkzDrawCircles(O,A)
+\tkzDrawPoints(A,B,O)
+\tkzLabelPoints[right](A,B,O)
+\end{tikzpicture}
+ \end{center}
+\end{minipage}
+
+
+% subsubsection method_imeth_circle_antipode (end)
+
+\subsubsection{Method \Imeth{circle}{midarc}} % (fold)
+\label{ssub:method_imeth_circle_midarc}
+The definition given in [ \href{https://mathworld.wolfram.com/Mid-ArcPoints.html}{Weisstein, Eric W. "Mid-Arc Points." From MathWorld--A Wolfram Web Resource.}] is as follows:
+The mid-arc points of a triangle as defined by Johnson (1929) are the points on the circumcircle of the triangle which lie half-way along each of the three arcs determined by the vertices. These points arise in the definition of the Fuhrmann circle and Fuhrmann triangle, and lie on the extensions of the perpendicular bisectors of the triangle sides drawn from the circumcenter.
+
+The definition I use here is more general: the defined point is simply the point that divides an arc into two arcs of the same length.
+
+\vspace{6pt}
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+z.A = point: new (0,0)
+z.O = point: new (2,1)
+C = circle: new (z.O , z.A)
+z.B = C : point (0.25)
+z.M = C : midarc (z.A,z.B)
+\end{tkzelements}
+\begin{tikzpicture}[gridded]
+\tkzGetNodes
+\tkzDrawCircles(O,A)
+\tkzDrawPoints(A,B,O,M)
+\tkzLabelPoints[right](A,B,O,M)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+\begin{tkzelements}
+z.A = point: new (0,0)
+z.O = point: new (2,1)
+C = circle: new (z.O , z.A)
+z.B = C : point (0.25)
+z.M = C : midarc (z.A,z.B)
+\end{tkzelements}
+ \begin{center}
+\begin{tikzpicture}[gridded]
+\tkzGetNodes
+\tkzDrawCircles(O,A)
+\tkzDrawPoints(A,B,O,M)
+\tkzLabelPoints[right](A,B,O,M)
+\end{tikzpicture}
+ \end{center}
+\end{minipage}
+
+% subsubsection method_imeth_circle_midarc (end)
+
+\subsubsection{Method \Imeth{circle}{point (r)}} % (fold)
+\label{ssub:method_imeth_circle_point}
+
+Let $C$ be a circle with centre $O$ and passing through $A$ such that |z.A = C.through|. This method defines a point $M$ on the circle from A such that the ratio of the length of $\widearc{AM}$ to the circumference of the circle is equal to $r$.
+
+In the next example, $r=\dfrac{1}{6}$ corresponds to $\dfrac{\pi/3}{2\pi}$, so the angle $\widehat{AOE}$ has the measure $\pi/3$.
+
+If $r=.5$ the defined point is diametrically opposed to $A$, the angle $\widehat{AOD}$ has the measure $\pi$.
+
+\vspace{6pt}
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+ \begin{tkzelements}
+ z.O = point: new (0,0)
+ z.A = point: new (1,2)
+ C.OA = circle: new (z.O,z.A)
+ z.B = C.OA: point (1/6)
+ z.C = C.OA: point (0.25)
+ z.D = C.OA: point (0.5)
+\end{tkzelements}
+\begin{tikzpicture}
+\tkzGetNodes
\tkzDrawCircle(O,A)
-\tkzDrawPoints(A,B,C,P,Q,R)
-\tkzLabelPoints(A,B,C,P,Q,R)
-\tkzDrawLine[blue](Q,R)
-\tkzDrawLines[red](A,P B,Q R,C)
-\tkzDrawSegments(A,R C,P C,Q)
+\tkzDrawPoints(A,...,D,O)
+\tkzLabelPoints(A,...,D,O)
\end{tikzpicture}
+\end{Verbatim}
\end{minipage}
-%\caption{Lemoine line}
-% subsubsection lemoine (end)
+\begin{minipage}{.5\textwidth}
+ \begin{tkzelements}
+ z.O = point: new (0,0)
+ z.A = point: new (1,2)
+ C.OA = circle: new (z.O,z.A)
+ z.B = C.OA: point (1/6)
+ z.C = C.OA: point (0.25)
+ z.D = C.OA: point (0.5)
+\end{tkzelements}
+\begin{center}
+\begin{tikzpicture}
+\tkzGetNodes
+\tkzDrawCircle(O,A)
+\tkzDrawPoints(A,...,D,O)
+\tkzLabelPoints(A,...,D,O)
+\end{tikzpicture}
+\end{center}
+\end{minipage}
-\subsubsection{Inversion: point, line and circle} % (fold)
+
+% subsubsection method_imeth_circle_point (end)
+
+\subsubsection{Method \Imeth{circle}{inversion (obj)}: point, line and circle} % (fold)
\label{ssub:inversion}
The \code{inversion} method can be used on a point, a line or a circle. Depending on the type of object, the function determines the correct algorithm to use.
-\subsubsection{Inversion: point} % (fold)
-\label{ssub:inversion_point}
+\paragraph{Inversion: point} % (fold)
+\label{par:inversion_point}
The \code{inversion} method can be used on a point, a group of points, a line or a circle. Depending on the type of object, the function determines the correct algorithm to use.
@@ -308,20 +438,23 @@ The \code{inversion} method can be used on a point, a group of points, a line or
z.d = C.oa: inversion (z.c)
p = C.oa: power (z.c)
\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
- \tkzGetNodes
- \tkzDrawCircle(o,a)
- \tkzDrawSegments(o,a o,c)
- \tkzDrawPoints(a,o,c,d)
- \tkzLabelPoints(a,o,c,d)
- \tkzLabelSegment[sloped,above=1em](c,d){%
- La puissance de c est \tkzUseLua{p}}
- \end{tikzpicture}
+
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawCircle(o,a)
+ \tkzDrawSegments(o,a o,c)
+ \tkzDrawPoints(a,o,c,d)
+ \tkzLabelPoints(a,o,c,d)
+ \tkzLabelSegment[sloped,above=1em](c,d){%
+ La puissance de c est \tkzUseLua{p}}
+ \end{tikzpicture}
+\end{center}
+
\end{minipage}
-\subsubsection{Inversion: line} % (fold)
-\label{ssub:inversion_line}
+\paragraph{Inversion: line} % (fold)
+\label{par:inversion_line}
The result is either a straight line or a circle.
@@ -333,7 +466,7 @@ The result is either a straight line or a circle.
C.oa = circle: new (z.o,z.a)
z.c = point: new (3,2)
z.d = point: new (0,4)
- L.cd = line: new (z.c,z.d)
+ L.cd = line: new (z.c,z.d)
C.OH = C.oa: inversion (L.cd)
z.O,z.H = get_points(C.OH)
\end{tkzelements}
@@ -357,19 +490,22 @@ The result is either a straight line or a circle.
C.OH = C.oa: inversion (L.cd)
z.O,z.H = get_points(C.OH)
\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
- \tkzGetNodes
- \tkzDrawCircles(o,a)
- \tkzDrawCircles[new](O,H)
- \tkzDrawLines(c,d o,H)
- \tkzDrawPoints(a,o,c,d,H)
- \tkzLabelPoints(a,o,c,d,H)
- \end{tikzpicture}
+
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawCircles(o,a)
+ \tkzDrawCircles[new](O,H)
+ \tkzDrawLines(c,d o,H)
+ \tkzDrawPoints(a,o,c,d,H)
+ \tkzLabelPoints(a,o,c,d,H)
+ \end{tikzpicture}
+\end{center}
+
\end{minipage}
- \subsubsection{Inversion: circle} % (fold)
- \label{ssub:inversion_circle}
+\paragraph{Inversion: circle} % (fold)
+ \label{par:inversion_circle}
The result is either a straight line or a circle.
@@ -423,19 +559,697 @@ color = "orange"
else z.f,z.b = get_points(obj) end
color = "orange"
\end{tkzelements}
- \hspace{\fill}
- \begin{tikzpicture}
- \tkzGetNodes
- \tkzDrawCircles[black](o,a)
- \tkzDrawCircles[teal](c,o e,d)
- \tkzDrawCircles[\tkzUseLua{color}](f,b)
- \tkzDrawLines[\tkzUseLua{color}](p,q)
- \tkzDrawPoints(a,...,f,o,p,q)
- \tkzLabelPoints(a,...,f,o,p,q)
- \end{tikzpicture}
+
+ \begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawCircles[black](o,a)
+ \tkzDrawCircles[teal](c,o e,d)
+ \tkzDrawCircles[\tkzUseLua{color}](f,b)
+ \tkzDrawLines[\tkzUseLua{color}](p,q)
+ \tkzDrawPoints(a,...,f,o,p,q)
+ \tkzLabelPoints(a,...,f,o,p,q)
+ \end{tikzpicture}
+ \end{center}
\end{minipage}
+
% subsubsection inversion (end)
+\subsubsection{Method \Imeth{circle}{internal\_similitude}} % (fold)
+\label{ssub:method_imeth_circle_internal__similitude}
+
+Circles are geometrically similar to one another and mirror symmetric. Hence, a pair of circles has both types of homothetic centers, internal and external, unless the centers are equal or the radii are equal; these exceptional cases are treated after general position. These two homothetic centers lie on the line joining the centers of the two given circles, which is called the line of centers. Circles with radius zero can also be included (see exceptional cases), and negative radius can also be used, switching external and internal. [Wikipedia]
+
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+ scale = 0.75
+z.A = point : new ( 0 , 0 )
+z.a = point : new ( 2 , 2 )
+z.B = point : new ( 5 , 2 )
+z.b = point : new ( 6 , 1 )
+C.Aa = circle : new (z.A,z.a)
+C.Bb = circle : new (z.B,z.b)
+z.I = C.Aa : internal_similitude (C.Bb)
+L.TA1,L.TA2 = C.Aa : tangent_from (z.I)
+z.A1 = L.TA1.pb
+z.A2 = L.TA2.pb
+\end{tkzelements}
+\begin{tikzpicture}
+\tkzGetNodes
+\tkzDrawCircles(A,a B,b)
+\tkzDrawPoints(A,a,B,b,I,A1,A2)
+\tkzDrawLines[add = 1 and 2](A1,I A2,I)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+\begin{tkzelements}
+ scale = .75
+z.A = point : new ( 0 , 0 )
+z.a = point : new ( 2 , 2 )
+z.B = point : new ( 5 , 2 )
+z.b = point : new ( 6 , 1 )
+C.Aa = circle : new (z.A,z.a)
+C.Bb = circle : new (z.B,z.b)
+z.I = C.Aa : internal_similitude (C.Bb)
+L.TA1,L.TA2 = C.Aa : tangent_from (z.I)
+z.A1 = L.TA1.pb
+z.A2 = L.TA2.pb
+\end{tkzelements}
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawCircles(A,a B,b)
+ \tkzDrawPoints(A,a,B,b,I,A1,A2)
+ \tkzDrawLines[add = 1 and 2](A1,I A2,I)
+ \end{tikzpicture}
+\end{center}
+\end{minipage}
+
+% subsubsection method_imeth_circle_internal__similitude (end)
+
+\subsubsection{Method \Imeth{circle}{external\_similitude}} % (fold)
+\label{ssub:method_imeth_circle_external__similitude}
+
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+z.A = point : new ( 0 , 0 )
+z.a = point : new ( 2 , 2 )
+z.B = point : new ( 3 , 2 )
+z.b = point : new ( 4 , 1 )
+C.Aa = circle : new (z.A,z.a)
+C.Bb = circle : new (z.B,z.b)
+z.I = C.Aa : external_similitude (C.Bb)
+L.TA1,L.TA2 = C.Aa : tangent_from (z.I)
+z.A1 = L.TA1.pb
+z.A2 = L.TA2.pb
+\end{tkzelements}
+\begin{tikzpicture}
+\tkzGetNodes
+\tkzDrawCircles(A,a B,b)
+\tkzDrawPoints(A,a,B,b,I,A1,A2)
+\tkzDrawLines[add = .5 and .2](A1,I A2,I)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+\begin{tkzelements}
+ scale = .75
+z.A = point : new ( 0 , 0 )
+z.a = point : new ( 2 , 2 )
+z.B = point : new ( 3 , 2 )
+z.b = point : new ( 4 , 1 )
+C.Aa = circle : new (z.A,z.a)
+C.Bb = circle : new (z.B,z.b)
+z.I = C.Aa : external_similitude (C.Bb)
+L.TA1,L.TA2 = C.Aa : tangent_from (z.I)
+z.A1 = L.TA1.pb
+z.A2 = L.TA2.pb
+\end{tkzelements}
+\begin{center}
+\begin{tikzpicture}
+\tkzGetNodes
+\tkzDrawCircles(A,a B,b)
+\tkzDrawPoints(A,a,B,b,I,A1,A2)
+\tkzDrawLines[add = .5 and .2](A1,I A2,I)
+\end{tikzpicture}
+\end{center}
+\end{minipage}
+% subsubsection method_imeth_circle_external__similitude (end)
+
+
+\subsubsection{Method \Imeth{circle}{radical\_center (C1,C2)}} % (fold)
+\label{ssub:radical_center}
+
+The radical lines of three circles are concurrent in a point known as the radical center (also called the power center). This theorem was originally demonstrated by Monge (Dörrie 1965, p. 153). [\href{https://mathworld.wolfram.com/RadicalCenter.html}{Weisstein, Eric W. "Radical Center." From MathWorld--A Wolfram Web Resource. }
+]
+
+Here I have also named \code{radical\_center} the point of intersection of the radical axis of two circles with the centre axis. See the following example for how to obtain point $H$.
+
+
+\begin{minipage}[t]{.5\textwidth}\vspace{0pt}%
+\begin{Verbatim}
+\begin{tkzelements}
+ z.O = point : new (0,0)
+ z.x = point : new (1,0)
+ z.y = point : new (4,0)
+ z.z = point : new (2,0)
+ z.Op = point : new (4,2)
+ z.P = point : new (2,2.5)
+ C.Ox = circle : new (z.O,z.x)
+ C.Pz = circle : new (z.P,z.z)
+ C.Opy = circle : new (z.Op,z.y)
+ z.ap,z.a = intersection (C.Ox,C.Pz)
+ z.bp,z.b = intersection (C.Opy,C.Pz)
+ L.aap = line : new (z.a,z.ap)
+ L.bbp = line : new (z.b,z.bp)
+ -- z.X = intersection (L.aap,L.bbp)
+ z.X = C.Ox : radical_center(C.Pz,C.Opy)
+ -- L.OOp = line : new (z.O,z.Op)
+ -- z.H = L.OOp : projection (z.X)
+ z.H = C.Ox : radical_center(C.Opy)
+\end{tkzelements}
+\begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawCircles(O,a O',b P,z)
+ \tkzDrawLines[red](a,X b',X H,X O,O')
+ \tkzDrawPoints(O,O',P,a,a',b,b',X,H)
+ \tkzLabelPoints[below right](O,O',P,H)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}[t]{.5\textwidth}\vspace{0pt}%
+\begin{tkzelements}
+z.O = point : new (0,0)
+z.x = point : new (1,0)
+z.y = point : new (4,0)
+z.z = point : new (2,0)
+z.Op = point : new (4,2)
+z.P = point : new (2,2.5)
+C.Ox = circle : new (z.O,z.x)
+C.Pz = circle : new (z.P,z.z)
+C.Opy = circle : new (z.Op,z.y)
+z.ap,z.a = intersection (C.Ox,C.Pz)
+z.bp,z.b = intersection (C.Opy,C.Pz)
+L.aap = line : new (z.a,z.ap)
+L.bbp = line : new (z.b,z.bp)
+z.X = intersection (L.aap,L.bbp)
+L.OOp = line : new (z.O,z.Op)
+z.H = L.OOp : projection (z.X)
+\end{tkzelements}
+
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawCircles(O,a O',b P,z)
+ \tkzDrawLines[red](a,X b',X H,X O,O')
+ \tkzDrawPoints(O,O',P,a,a',b,b',X,H)
+ \tkzLabelPoints[below right](O,O',P,H)
+ \end{tikzpicture}
+\end{center}
+
+\end{minipage}
+% subsubsection radical_center (end)
+
+\subsubsection{Method \Imeth{circle}{radical\_axis}(C)} % (fold)
+\label{ssub:method_imeth_circle_radical__axis_c}
+
+The radical line, also called the radical axis, is the locus of points of equal circle power with respect to two nonconcentric circles. By the chordal theorem, it is perpendicular to the line of centers (Dörrie 1965). [\href{https://mathworld.wolfram.com/RadicalLine.html}{Weisstein, Eric W. "Radical Line." From MathWorld--A Wolfram Web Resource.} ]
+
+\vspace{6pt}
+\paragraph{Radical axis v1} % (fold)
+\label{par:radical_axis_v1}
+
+\begin{Verbatim}
+\begin{tkzelements}
+scale = .75
+z.X = point : new (0,0)
+z.B = point : new (2,2)
+z.Y = point : new (7,1)
+z.Ap = point : new (8,-1)
+L.XY = line : new (z.X,z.Y)
+C.XB = circle : new (z.X,z.B)
+C.YAp = circle : new (z.Y,z.Ap)
+z.E,z.F = get_points (C.XB : radical_axis (C.YAp))
+z.A = C.XB : point (0.4)
+T.ABAp = triangle: new (z.A,z.B,z.Ap)
+z.O = T.ABAp.circumcenter
+C.OAp = circle : new (z.O,z.Ap)
+_,z.Bp = intersection (C.OAp,C.YAp)
+L.AB = line : new (z.A,z.B)
+L.ApBp = line : new (z.Ap,z.Bp)
+z.M = intersection (L.AB,L.ApBp)
+z.H = L.XY : projection (z.M)
+\end{tkzelements}
+\begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawCircles(X,B Y,A')
+ \tkzDrawArc[dashed,delta=30](O,A')(A)
+ \tkzDrawPoints(A,B,A',B',M,H,X,Y,O,E,F)
+ \tkzDrawLines[red](A,M A',M X,Y E,F)
+ \tkzDrawLines[red,add=1 and 3](M,H)
+\end{tikzpicture}
+\end{Verbatim}
+
+\begin{tkzelements}
+scale = .75
+z.X = point : new (0,0)
+z.B = point : new (2,2)
+z.Y = point : new (7,1)
+z.Ap = point : new (8,-1)
+L.XY = line : new (z.X,z.Y)
+C.XB = circle : new (z.X,z.B)
+C.YAp = circle : new (z.Y,z.Ap)
+z.E,z.F = get_points (C.XB : radical_axis (C.YAp))
+z.A = C.XB : point (0.4)
+T.ABAp = triangle: new (z.A,z.B,z.Ap)
+z.O = T.ABAp.circumcenter
+C.OAp = circle : new (z.O,z.Ap)
+_,z.Bp = intersection (C.OAp,C.YAp)
+L.AB = line : new (z.A,z.B)
+L.ApBp = line : new (z.Ap,z.Bp)
+z.M = intersection (L.AB,L.ApBp)
+z.H = L.XY : projection (z.M)
+\end{tkzelements}
+
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawCircles(X,B Y,A')
+ \tkzDrawArc[dashed,delta=30](O,A')(A)
+ \tkzDrawPoints(A,B,A',B',M,H,X,Y,O,E,F)
+ \tkzDrawLines[red](A,M A',M X,Y E,F)
+ \tkzDrawLines[red,add=1 and 3](M,H)
+ \end{tikzpicture}
+\end{center}
+% paragraph radical_axis_v1 (end)
+
+\paragraph{Radical axis v2} % (fold)
+\label{par:radical_axis_v2}
+
+\begin{Verbatim}
+\begin{tkzelements}
+scale = 1.25
+z.O = point : new (-1,0)
+z.Op = point : new (4,-1)
+z.B = point : new (0,2)
+z.D = point : new (4,0)
+C.OB = circle : new (z.O,z.B)
+C.OpD = circle : new (z.Op,z.D)
+L.EF = C.OB : radical_axis (C.OpD)
+z.E,z.F = get_points (L.EF)
+z.M = L.EF : point (.75)
+L.MT,L.MTp = C.OB : tangent_from (z.M)
+_,z.T = get_points (L.MT)
+_,z.Tp = get_points (L.MTp)
+L.MK,L.MKp = C.OpD : tangent_from (z.M)
+_,z.K = get_points (L.MK)
+_,z.Kp = get_points (L.MKp)
+\end{tkzelements}
+\begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawCircles(O,B O',D)
+ \tkzDrawLine(E,F)
+ \tkzDrawLine[add=.5 and .5](O,O')
+ \tkzDrawLines[add = 0 and .5](M,T M,T' M,K M,K')
+ \tkzDrawCircle(M,T)
+ \tkzDrawPoints(O,O',T,M,T',K,K')
+ \tkzLabelPoints(O,O',T,T',K,K',M)
+\end{tikzpicture}
+\end{Verbatim}
+
+\begin{tkzelements}
+scale =1.25
+z.O = point : new (-1,0)
+z.Op = point : new (4,-1)
+z.B = point : new (0,2)
+z.D = point : new (4,0)
+C.OB = circle : new (z.O,z.B)
+C.OpD = circle : new (z.Op,z.D)
+L.EF = C.OB : radical_axis (C.OpD)
+z.E,z.F = get_points (L.EF)
+z.M = L.EF : point (.75)
+L.MT,L.MTp = C.OB : tangent_from (z.M)
+_,z.T = get_points (L.MT)
+_,z.Tp = get_points (L.MTp)
+L.MK,L.MKp = C.OpD : tangent_from (z.M)
+_,z.K = get_points (L.MK)
+_,z.Kp = get_points (L.MKp)
+\end{tkzelements}
+
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawCircles(O,B O',D)
+ \tkzDrawLine(E,F)
+ \tkzDrawLine[add=.5 and .5](O,O')
+ \tkzDrawLines[add = 0 and .5](M,T M,T' M,K M,K')
+ \tkzDrawCircle(M,T)
+ \tkzDrawPoints(O,O',T,M,T',K,K')
+ \tkzLabelPoints(O,O',T,T',K,K',M)
+ \end{tikzpicture}
+\end{center}
+% paragraph radical_axis_v2 (end)
+
+\paragraph{Radical axis v3} % (fold)
+\label{par:radical_axis_v3}
+
+\begin{Verbatim}
+ \begin{tkzelements}
+ z.O = point : new (0,0)
+ z.B = point : new (4,0)
+ z.Op = point : new (6,0)
+ C.OB = circle : new (z.O,z.B)
+ C.OpB = circle : new (z.Op,z.B)
+ L.EF = C.OB : radical_axis (C.OpB)
+ z.E,z.F = get_points(L.EF)
+ z.M = L.EF : point (0.2)
+ L = C.OB : tangent_from (z.M)
+ _,z.T = get_points (L)
+ L = C.OpB : tangent_from (z.M)
+ _,z.Tp = get_points (L)
+\end{tkzelements}
+\begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawCircles(O,B O',B)
+ \tkzDrawSegments(M,T M,T')
+ \tkzDrawSegments(E,F)
+ \tkzDrawLine[add=.5 and .5](O,O')
+ \tkzDrawPoints(O,B,O',E,F,M,T,T')
+ \tkzLabelPoints(O,O',B,E,F,T,T')
+ \tkzDrawArc(M,T')(T)
+\end{tikzpicture}
+\end{Verbatim}
+
+\begin{tkzelements}
+z.O = point : new (0,0)
+z.B = point : new (4,0)
+z.Op = point : new (6,0)
+C.OB = circle : new (z.O,z.B)
+C.OpB = circle : new (z.Op,z.B)
+L.EF = C.OB : radical_axis (C.OpB)
+z.E,z.F = get_points(L.EF)
+z.M = L.EF : point (0.2)
+L = C.OB : tangent_from (z.M)
+_,z.T = get_points (L)
+L = C.OpB : tangent_from (z.M)
+_,z.Tp = get_points (L)
+\end{tkzelements}
+
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawCircles(O,B O',B)
+ \tkzDrawSegments(M,T M,T')
+ \tkzDrawSegments(E,F)
+ \tkzDrawLine[add=.5 and .5](O,O')
+ \tkzDrawPoints(O,B,O',E,F,M,T,T')
+ \tkzLabelPoints(O,O',B,E,F,T,T')
+ \tkzDrawArc(M,T')(T)
+ \end{tikzpicture}
+\end{center}
+% paragraph radical_axis_v3 (end)
+
+\paragraph{Radical axis v4} % (fold)
+\label{par:radical_axis_v4}
+
+\begin{Verbatim}
+\begin{tkzelements}
+ z.O = point : new (0,0)
+ z.B = point : new (5,0)
+ z.Op = point : new (3,0)
+ C.OB = circle : new (z.O,z.B)
+ C.OpB = circle : new (z.Op,z.B)
+ L.EF = C.OB : radical_axis (C.OpB)
+ z.E,z.F = get_points(L.EF)
+ z.H = L.EF.mid
+ z.M = L.EF : point (.8)
+ _,L = C.OB : tangent_from (z.M)
+ _,z.T = get_points (L)
+ _,L = C.OpB : tangent_from (z.M)
+ _,z.Tp = get_points (L)
+\end{tkzelements}
+\begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawCircles(O,B O',B)
+ \tkzDrawSegments(M,T M,T')
+ \tkzDrawSegments(E,F)
+ \tkzDrawLine[add=.3 and .3](O,H)
+ \tkzDrawPoints(O,O',B,E,H,M)
+ \tkzLabelPoints[below right](O,O',E,F,M,T,T')
+ \tkzDrawArc(M,B)(T)
+\end{tikzpicture}
+\end{Verbatim}
+
+\begin{tkzelements}
+ z.O = point : new (0,0)
+ z.B = point : new (5,0)
+ z.Op = point : new (3,0)
+ C.OB = circle : new (z.O,z.B)
+ C.OpB = circle : new (z.Op,z.B)
+ L.EF = C.OB : radical_axis (C.OpB)
+ z.E,z.F = get_points(L.EF)
+ z.H = L.EF.mid
+ z.M = L.EF : point (.8)
+ _,L = C.OB : tangent_from (z.M)
+ _,z.T = get_points (L)
+ _,L = C.OpB : tangent_from (z.M)
+ _,z.Tp = get_points (L)
+\end{tkzelements}
+
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawCircles(O,B O',B)
+ \tkzDrawSegments(M,T M,T')
+ \tkzDrawSegments(E,F)
+ \tkzDrawLine[add=.3 and .3](O,H)
+ \tkzDrawPoints(O,O',B,E,H,M)
+ \tkzLabelPoints[below right](O,O',E,F,M,T,T')
+ \tkzDrawArc(M,B)(T)
+ \end{tikzpicture}
+\end{center}
+% paragraph radical_axis_v4 (end)
+
+% subsubsection method_imeth_circle_radical__axis_c (end)
+
+
+\subsubsection{Methods \Imeth{circle}{tangent\_at (P)} and \Imeth{circle}{tangent\_from (P)}} % (fold)
+\label{ssub:method_imeth_circle_tangent}
+
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+ \begin{tkzelements}
+ z.A = point: new (0,0)
+ z.B = point: new (1,2)
+ C.AB = circle: new (z.A,z.B)
+ z.C = point: new (3,-2)
+ L.T = C.AB : tangent_at (z.B)
+ z.D = L.T.pb
+ L.T1,L.T2 = C.AB : tangent_from (z.C)
+ z.T1 = L.T1.pb
+ z.T2 = L.T2.pb
+\end{tkzelements}
+\begin{tikzpicture}
+\tkzGetNodes
+\tkzDrawCircle(A,B)
+\tkzDrawLines[add =.5 and .5](B,D C,T1 C,T2)
+\tkzDrawSegments[dashed](A,B A,T1 A,T2)
+\tkzDrawPoints(A,...,D,T1,T2)
+\tkzLabelPoints[below left](A,T2,C)
+\tkzLabelPoints[above right](B,T1,D)
+\tkzMarkRightAngles(A,B,D A,T1,C A,T2,C)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+ \begin{tkzelements}
+ z.A = point: new (0,0)
+ z.B = point: new (1,2)
+ C.AB = circle: new (z.A,z.B)
+ z.C = point: new (3,-2)
+ L.T = C.AB : tangent_at (z.B)
+ z.D = L.T.pb
+ L.T1,L.T2 = C.AB : tangent_from (z.C)
+ z.T1 = L.T1.pb
+ z.T2 = L.T2.pb
+\end{tkzelements}
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawCircle(A,B)
+ \tkzDrawLines[add =.5 and .5](B,D C,T1 C,T2)
+ \tkzDrawSegments[dashed](A,B A,T1 A,T2)
+ \tkzDrawPoints(A,...,D,T1,T2)
+ \tkzLabelPoints[below left](A,T2,C)
+ \tkzLabelPoints[above right](B,T1,D)
+ \tkzMarkRightAngles(A,B,D A,T1,C A,T2,C)
+ \end{tikzpicture}
+\end{center}
+
+\end{minipage}
+% subsubsection (end)
+
+\subsubsection{Common tangent: Angle of two intersecting circles} % (fold)
+\label{ssub:common_tangent}
+
+Let be a tangent common to both circles at $T$ and $T'$ (closest to $C$). Let a secant parallel to this tangent pass through $C$. Then the segment $[TT']$ is seen from the other common point $D$ at an angle equal to half the angle of the two circles.
+
+\begin{Verbatim}
+\begin{tkzelements}
+ z.A = point : new ( 0 , 0 )
+ z.B = point : new ( 5 , 2 )
+ L.AB = line : new ( z.A , z.B )
+ z.C = point : new ( 1 , 2 )
+ C.AC = circle : new (z.A,z.C)
+ C.BC = circle : new (z.B,z.C)
+ z.T,z.Tp = C.AC : common_tangent (C.BC)
+ L.TTp = line : new (z.T,z.Tp)
+ z.M = C.AC : point (0.45)
+ L.MC =line : new (z.M,z.C)
+ z.Mp = intersection (L.MC, C.BC)
+ L.mm = L.TTp : ll_from (z.C)
+ _,z.M = intersection (L.mm, C.AC)
+ z.Mp = intersection (L.mm, C.BC)
+ _,z.D = intersection (C.AC,C.BC)
+\end{tkzelements}
+\begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawCircles(A,C B,C)
+ \tkzDrawSegments(M,M' A,D B,D A,B C,D T,C T',C)
+ \tkzDrawSegments[gray](D,M D,M' T,T' D,T D,T')
+ \tkzDrawPoints(A,B,C,D,M,M',T,T')
+ \tkzLabelPoints(A,B,D,M)
+ \tkzLabelPoints[above](C,M',T,T')
+ \tkzMarkAngles[mark=|,size=.75](T,C,M C,T,T' C,D,T T,D,M)
+ \tkzMarkAngles[mark=||,size=.75](M',C,T' T,T',C T',D,C M',D,T')
+\end{tikzpicture}
+\end{Verbatim}
+
+
+\begin{tkzelements}
+z.A = point : new ( 0 , 0 )
+z.B = point : new ( 5 , 2 )
+L.AB = line : new ( z.A , z.B )
+z.C = point : new ( 1 , 2 )
+C.AC = circle : new (z.A,z.C)
+C.BC = circle : new (z.B,z.C)
+z.T,z.Tp = C.AC : common_tangent (C.BC)
+L.TTp = line : new (z.T,z.Tp)
+z.M = C.AC : point (0.45)
+L.MC =line : new (z.M,z.C)
+z.Mp = intersection (L.MC, C.BC)
+L.mm = L.TTp : ll_from (z.C)
+_,z.M = intersection (L.mm, C.AC)
+z.Mp = intersection (L.mm, C.BC)
+_,z.D = intersection (C.AC,C.BC)
+\end{tkzelements}
+
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawCircles(A,C B,C)
+ \tkzDrawSegments(M,M' A,D B,D A,B C,D T,C T',C)
+ \tkzDrawSegments[gray](D,M D,M' T,T' D,T D,T')
+ \tkzDrawPoints(A,B,C,D,M,M',T,T')
+ \tkzLabelPoints(A,B,D,M)
+ \tkzLabelPoints[above](C,M',T,T')
+ \tkzMarkAngles[mark=|,size=.75](T,C,M C,T,T' C,D,T T,D,M)
+ \tkzMarkAngles[mark=||,size=.75](M',C,T' T,T',C T',D,C M',D,T')
+ \end{tikzpicture}
+\end{center}
+% subsubsection common_tangent (end)
+
+\subsubsection{Method \Imeth{circle}{orthogonal\_from (pt)}} % (fold)
+\label{ssub:method_imeth_circle_orthogonal_from_pt}
+
+In geometry, two circles are said to be orthogonal if their respective tangent lines at the points of intersection are perpendicular (meet at a right angle). [wikipedia]
+
+This method determines a circle with a given centre, orthogonal to a circle that is also given.
+
+\begin{Verbatim}
+\begin{tkzelements}
+ scale = .6
+ z.C_1 = point: new (0,0)
+ z.C_2 = point: new (8,0)
+ z.A = point: new (5,0)
+ C = circle: new (z.C_1,z.A)
+ z.S,z.T = get_points (C: orthogonal_from (z.C_2))
+\end{tkzelements}
+\begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawCircles(C_1,T C_2,T)
+ \tkzDrawSegments(C_1,T C_2,T)
+ \tkzDrawLine(C_1,C_2)
+ \tkzMarkRightAngle[fill=teal,%
+ opacity=.2,size=1](C_1,T,C_2)
+ \tkzDrawPoints(C_1,C_2,T)
+ \tkzLabelPoints(C_1,C_2)
+ \tkzLabelPoints[above](T)
+ \tkzLabelSegment[left](C_1,T){r}
+ \tkzLabelSegments[right](C_2,T){$\gamma$}
+ \tkzLabelSegment[below](C_1,C_2){d}
+ \tkzLabelCircle[left=10pt](C_1,T)(180){Circle 1}
+ \tkzLabelCircle[right=10pt](C_2,T)(180){Circle 2}
+\end{tikzpicture}
+\end{Verbatim}
+
+\begin{tkzelements}
+scale = .6
+z.C_1 = point: new (0,0)
+z.C_2 = point: new (8,0)
+z.A = point: new (5,0)
+C = circle: new (z.C_1,z.A)
+z.S,z.T = get_points (C: orthogonal_from (z.C_2))
+\end{tkzelements}
+
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawCircles(C_1,T C_2,T)
+ \tkzDrawSegments(C_1,T C_2,T)
+ \tkzDrawLine(C_1,C_2)
+ \tkzMarkRightAngle[fill=teal,opacity=.2,size=.5](C_1,T,C_2)
+ \tkzDrawPoints(C_1,C_2,T)
+ \tkzLabelPoints(C_1,C_2)
+ \tkzLabelPoints[above](T)
+ \tkzLabelSegment[left](C_1,T){r}
+ \tkzLabelSegments[right](C_2,T){$\gamma$}
+ \tkzLabelSegment[below](C_1,C_2){d}
+ \tkzLabelCircle[left=10pt](C_1,T)(180){Circle 1}
+ \tkzLabelCircle[right=10pt](C_2,T)(180){Circle 2}
+ \end{tikzpicture}
+\end{center}
+
+% subsubsection method_imeth_circle_orthogonal__from_pt (end)
+
+\subsubsection{Method \Imeth{circle}{orthogonal\_through}} % (fold)
+\label{ssub:method_imeth_circle_orthogonal_through}
+
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+ z.O = point: new (0,1)
+ z.A = point: new (1,0)
+ z.z1 = point: new (-1.5,-1.5)
+ z.z2 = point: new (2.5,-1.25)
+ C.OA = circle: new (z.O,z.A)
+ C = C.OA: orthogonal_through (z.z1,z.z2)
+ z.c = C.center
+\end{tkzelements}
+\begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawCircle(O,A)
+ \tkzDrawCircle[new](c,z1)
+ \tkzDrawPoints[new](O,A,z1,z2,c)
+ \tkzLabelPoints[right](O,A,z1,z2,c)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}\begin{tkzelements}
+ z.O = point: new (0,1)
+ z.A = point: new (1,0)
+ z.z1 = point: new (-1.5,-1.5)
+ z.z2 = point: new (2.5,-1.25)
+ C.OA = circle: new (z.O,z.A)
+ C = C.OA: orthogonal_through (z.z1,z.z2)
+ z.c = C.center
+\end{tkzelements}
+
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawCircle(O,A)
+ \tkzDrawCircle[orange](c,z1)
+ \tkzDrawPoints[orange](O,A,z1,z2,c)
+ \tkzLabelPoints[right](O,A,z1,z2,c)
+ \end{tikzpicture}
+\end{center}
+\end{minipage}
+% subsubsection method_imeth_circle_orthogonal__through (end)
+
\subsubsection{midcircle} % (fold)
\label{ssub:midcircle}
@@ -473,8 +1287,8 @@ z.H = C.AO.north
z.F = C.BP.north
z.G = C.BP.south
C.IT,C.JV = C.AO : midcircle (C.BP)
-z.I,z.T = get_points ( C.IT )
-z.J,z.V = get_points ( C.JV )
+z.I,z.T = get_points (C.IT)
+z.J,z.V = get_points (C.JV)
z.X,z.Y = intersection (C.AO,C.BP)
\end{tkzelements}
\end{Verbatim}
@@ -493,8 +1307,8 @@ z.X,z.Y = intersection (C.AO,C.BP)
z.F = C.BP.north
z.G = C.BP.south
C.IT,C.JV = C.AO : midcircle (C.BP)
- z.I,z.T = get_points ( C.IT )
- z.J,z.V = get_points ( C.JV )
+ z.I,z.T = get_points (C.IT)
+ z.J,z.V = get_points (C.JV)
z.X,z.Y = intersection (C.AO,C.BP)
\end{tkzelements}
\begin{tikzpicture}
@@ -520,7 +1334,7 @@ z.X,z.Y = intersection (C.AO,C.BP)
\vfill
\item One given circle is in the interior of the other given circle.
-
+\label{midcircle_diameter}
\begin{minipage}{.6\textwidth}
\begin{Verbatim}
\begin{tkzelements}
@@ -539,7 +1353,7 @@ z.X,z.Y = intersection (C.AO,C.BP)
z.x = C.SV.center
z.y = C.UR.center
C.IT = C.AO : midcircle (C.BP)
- z.I,z.T = get_points ( C.IT )
+ z.I,z.T = get_points (C.IT)
\end{tkzelements}
\end{Verbatim}
\end{minipage}
@@ -560,7 +1374,7 @@ z.X,z.Y = intersection (C.AO,C.BP)
z.x = C.SV.center
z.y = C.UR.center
C.IT = C.AO : midcircle (C.BP)
- z.I,z.T = get_points ( C.IT )
+ z.I,z.T = get_points (C.IT)
\end{tkzelements}
\begin{tikzpicture}
\tkzGetNodes
@@ -597,7 +1411,7 @@ z.E = C.Aa.north
z.F = C.Bb.north
L.EF = line : new (z.E,z.F)
C.IT = C.Aa : midcircle (C.Bb)
-z.I,z.T = get_points ( C.IT )
+z.I,z.T = get_points (C.IT)
L.TF = C.Bb : tangent_from (z.I)
z.H = intersection (L.TF,C.IT)
z.E = intersection (L.TF,C.Aa)
@@ -620,7 +1434,7 @@ z.E = C.Aa.north
z.F = C.Bb.north
L.EF = line : new (z.E,z.F)
C.IT = C.Aa : midcircle (C.Bb)
-z.I,z.T = get_points ( C.IT )
+z.I,z.T = get_points (C.IT)
L.TF = C.Bb : tangent_from (z.I)
z.H = intersection (L.TF,C.IT)
z.E = intersection (L.TF,C.Aa)
@@ -662,7 +1476,7 @@ z.E = C.Aa.north
z.F = C.Bb.north
L.EF = line : new (z.E,z.F)
C.IT = C.Aa : midcircle (C.Bb)
-z.I,z.T = get_points ( C.IT )
+z.I,z.T = get_points(C.IT)
L.TF = C.Bb : tangent_from (z.I)
z.H = intersection (L.TF,C.IT)
z.E = intersection (L.TF,C.Aa)
@@ -685,7 +1499,7 @@ z.E = C.Aa.north
z.F = C.Bb.north
L.EF = line : new (z.E,z.F)
C.IT = C.Aa : midcircle (C.Bb)
-z.I,z.T = get_points ( C.IT )
+z.I,z.T = get_points (C.IT)
L.TF = C.Bb : tangent_from (z.I)
z.H = intersection (L.TF,C.IT)
z.E = intersection (L.TF,C.Aa)
@@ -711,14 +1525,14 @@ z.F=L.TF.pb
\begin{minipage}{.4\textwidth}
\begin{Verbatim}
\begin{tkzelements}
-z.A = point : new ( 2 , 0 )
-z.B = point : new ( 4 , 0 )
-z.a = point : new ( 1 , 0)
-z.b = point : new ( 1 , 0)
-C.Aa = circle : new (z.A,z.a)
-C.Bb = circle : new (z.B,z.b)
-C.IT = C.Aa : midcircle (C.Bb)
-z.I,z.T = get_points ( C.IT )
+z.A = point : new ( 2 , 0 )
+z.B = point : new ( 4 , 0 )
+z.a = point : new ( 1 , 0)
+z.b = point : new ( 1 , 0)
+C.Aa = circle : new (z.A,z.a)
+C.Bb = circle : new (z.B,z.b)
+C.IT = C.Aa : midcircle (C.Bb)
+z.I,z.T = get_points(C.IT)
\end{tkzelements}
\end{Verbatim}
\end{minipage}
@@ -731,7 +1545,7 @@ z.b = point : new ( 1 , 0)
C.Aa = circle : new (z.A,z.a)
C.Bb = circle : new (z.B,z.b)
C.IT = C.Aa : midcircle (C.Bb)
-z.I,z.T = get_points ( C.IT )
+z.I,z.T = get_points (C.IT)
\end{tkzelements}
\begin{tikzpicture}
@@ -748,206 +1562,205 @@ z.I,z.T = get_points ( C.IT )
\end{enumerate}
% subsubsection midcircle (end)
-% subsection methods_of_the_class_circle (end)
-\subsection{Circles\_position} % (fold)
-\label{sub:circles_position}
-This function returns a string indicating the position of the circle in relation to another. Useful for creating a function. Cases are:
+\subsubsection{Radical circle} % (fold)
+\label{ssub:radical_circle}
-\begin{itemize}
- \item \code{outside}
- \item \code{outside tangent}
- \item \code{inside tangent}
- \item \code{inside}
- \item \code{intersect}
-\end{itemize}
-
-\begin{minipage}{.5\textwidth}
-\begin{Verbatim}
+\begin{minipage}[t]{.5\textwidth}\vspace{0pt}%
+\begin{Verbatim}
\begin{tkzelements}
- z.A = point : new ( 0 , 0 )
- z.a = point : new ( 3 , 0 )
- z.B = point : new ( 2 , 0 )
- z.b = point : new ( 3 , 0 )
- C.Aa = circle: new (z.A,z.a)
- C.Bb = circle: new (z.B,z.b)
- position = C.Aa : circles_position (C.Bb)
- if position == "inside tangent"
- then color = "orange"
- else color = "blue" end
+ scale = .5
+ z.A = point: new (0,0)
+ z.B = point: new (6,0)
+ z.C = point: new (0.8,4)
+ T.ABC = triangle : new ( z.A,z.B,z.C )
+ C.exa = T.ABC : ex_circle ()
+ z.I_a,z.Xa = get_points (C.exa)
+ C.exb = T.ABC : ex_circle (1)
+ z.I_b,z.Xb = get_points (C.exb)
+ C.exc = T.ABC : ex_circle (2)
+ z.I_c,z.Xc = get_points (C.exc)
+ C.ortho = C.exa : radical_circle (C.exb,C.exc)
+ z.w,z.a = get_points (C.ortho)
\end{tkzelements}
-
\begin{tikzpicture}
\tkzGetNodes
- \tkzDrawCircle(A,a)
- \tkzDrawCircle[color=\tkzUseLua{color}](B,b)
+ \tkzDrawPolygon(A,B,C)
+ \tkzDrawCircles(I_a,Xa I_b,Xb I_c,Xc)
+ \tkzDrawCircles[red,thick](w,a)
+ \tkzDrawPoints(A,B,C)
+ \tkzLabelPoints(A,B,C)
\end{tikzpicture}
\end{Verbatim}
\end{minipage}
-\begin{minipage}{.5\textwidth}
+
\begin{tkzelements}
-z.A = point : new ( 1 , 0 )
-z.a = point : new ( 3 , 0 )
-z.B = point : new ( 2 , 0 )
-z.b = point : new ( 3 , 0 )
-C.Aa = circle: new (z.A,z.a)
-C.Bb = circle: new (z.B,z.b)
-position = C.Aa : circles_position (C.Bb)
-if position == "inside tangent" then color = "orange" else color = "blue" end
+ scale = .5
+ z.A = point: new (0,0)
+ z.B = point: new (6,0)
+ z.C = point: new (0.8,4)
+ T.ABC = triangle : new ( z.A,z.B,z.C )
+ C.exa = T.ABC : ex_circle ()
+ z.I_a,z.Xa = get_points (C.exa)
+ C.exb = T.ABC : ex_circle (1)
+ z.I_b,z.Xb = get_points (C.exb)
+ C.exc = T.ABC : ex_circle (2)
+ z.I_c,z.Xc = get_points (C.exc)
+ C.ortho = C.exa : radical_circle (C.exb,C.exc)
+ z.w,z.a = get_points (C.ortho)
\end{tkzelements}
-\hspace{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircle(A,a)
-\tkzDrawCircle[color=\tkzUseLua{color}](B,b)
-\end{tikzpicture}\hspace{\fill}
-\end{minipage}
-% subsection circles__position (end)
-\subsection{Common tangent: Angle of two intersecting circles} % (fold)
-\label{sub:common_tangent}
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygon(A,B,C)
+ \tkzDrawCircles(I_a,Xa I_b,Xb I_c,Xc)
+ \tkzDrawCircles[red,thick](w,a)
+ \tkzDrawPoints(A,B,C)
+ \tkzLabelPoints(A,B,C)
+ \end{tikzpicture}
+\end{center}
+% subsubsection radical_circle (end)
-Let be a tangent common to both circles at $T$ and $T'$ (closest to $C$). Let a secant parallel to this tangent pass through $C$. Then the segment $[TT']$ is seen from the other common point $D$ at an angle equal to half the angle of the two circles.
+\subsubsection{Method \Imeth{circle}{power(C)}} % (fold)
+\label{ssub:method_imeth_circle_power_c}
+\paragraph{Power v1} % (fold)
+\label{par:power_v1}
+\begin{minipage}[t]{.5\textwidth}\vspace{0pt}%
\begin{Verbatim}
\begin{tkzelements}
- z.A = point : new ( 0 , 0 )
- z.B = point : new ( 5 , 2 )
- L.AB = line : new ( z.A , z.B )
- z.C = point : new ( 1 , 2 )
- C.AC = circle : new (z.A,z.C)
- C.BC = circle : new (z.B,z.C)
- z.T,z.Tp = C.AC : common_tangent (C.BC)
- L.TTp = line : new (z.T,z.Tp)
- z.M = C.AC : point (0.45)
- L.MC =line : new (z.M,z.C)
- z.Mp = intersection (L.MC, C.BC)
- L.mm = L.TTp : ll_from (z.C)
- _,z.M = intersection (L.mm, C.AC)
- z.Mp = intersection (L.mm, C.BC)
- _,z.D = intersection (C.AC,C.BC)
-\end{tkzelements}
+ z.O = point : new (0,0)
+ z.A = point : new (2,-2)
+ z.M = point : new (-6,0)
+ L.AM = line : new (z.A,z.M)
+ C.OA = circle : new (z.O,z.A)
+ z.Ap = C.OA : antipode (z.A)
+ z.B = intersection (L.AM, C.OA)
+\end{tkzelements}
\begin{tikzpicture}
\tkzGetNodes
- \tkzDrawCircles(A,C B,C)
- \tkzDrawSegments(M,M' A,D B,D A,B C,D T,C T',C)
- \tkzDrawSegments[gray](D,M D,M' T,T' D,T D,T')
- \tkzDrawPoints(A,B,C,D,M,M',T,T')
- \tkzLabelPoints(A,B,D,M)
- \tkzLabelPoints[above](C,M',T,T')
- \tkzMarkAngles[mark=|,size=.75](T,C,M C,T,T' C,D,T T,D,M)
- \tkzMarkAngles[mark=||,size=.75](M',C,T' T,T',C T',D,C M',D,T')
+ \tkzDrawCircle(O,A)
+ \tkzMarkRightAngle[fill=gray!10](A',B,M)
+ \tkzDrawSegments(M,O A,A' A',B)
+ \tkzDrawPoints(O,A,A',M,B)
+ \tkzLabelPoints(O,A,A',M,B)
+ \tkzDrawSegments[-Triangle](M,A M,A')
\end{tikzpicture}
\end{Verbatim}
-
-
+\end{minipage}
+\begin{minipage}[t]{.5\textwidth}
\begin{tkzelements}
-z.A = point : new ( 0 , 0 )
-z.B = point : new ( 5 , 2 )
-L.AB = line : new ( z.A , z.B )
-z.C = point : new ( 1 , 2 )
-C.AC = circle : new (z.A,z.C)
-C.BC = circle : new (z.B,z.C)
-z.T,z.Tp = C.AC : common_tangent (C.BC)
-L.TTp = line : new (z.T,z.Tp)
-z.M = C.AC : point (0.45)
-L.MC =line : new (z.M,z.C)
-z.Mp = intersection (L.MC, C.BC)
-L.mm = L.TTp : ll_from (z.C)
-_,z.M = intersection (L.mm, C.AC)
-z.Mp = intersection (L.mm, C.BC)
-_,z.D = intersection (C.AC,C.BC)
+scale = 1
+z.O = point : new (0,0)
+z.A = point : new (2,-2)
+z.M = point : new (-6,0)
+L.AM = line : new (z.A,z.M)
+C.OA = circle : new (z.O,z.A)
+z.Ap = C.OA : antipode (z.A)
+z.B = intersection (L.AM, C.OA)
\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircles(A,C B,C)
-\tkzDrawSegments(M,M' A,D B,D A,B C,D T,C T',C)
-\tkzDrawSegments[gray](D,M D,M' T,T' D,T D,T')
-\tkzDrawPoints(A,B,C,D,M,M',T,T')
-\tkzLabelPoints(A,B,D,M)
-\tkzLabelPoints[above](C,M',T,T')
-\tkzMarkAngles[mark=|,size=.75](T,C,M C,T,T' C,D,T T,D,M)
-\tkzMarkAngles[mark=||,size=.75](M',C,T' T,T',C T',D,C M',D,T')
-\end{tikzpicture}
-\hspace*{\fill}
-% subsection common_tangent (end)
-\subsection{Common tangent: orthogonality} % (fold)
-\label{sub:common_tangent_orthogonality}
-For two circles to be orthogonal, it is necessary and sufficient for a secant passing through one of their common points to be seen from the other common point at a right angle.
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawCircle(O,A)
+ \tkzMarkRightAngle[fill=gray!10](A',B,M)
+ \tkzDrawSegments(M,O A,A' A',B)
+ \tkzDrawPoints(O,A,A',M,B)
+ \tkzLabelPoints(O,A,A',M,B)
+ \tkzDrawSegments[-Triangle](M,A M,A')
+ \end{tikzpicture}
+\end{center}
+
+\end{minipage}
+% paragraph power_v1 (end)
+\paragraph{Power v2} % (fold)
+\label{par:power_v2}
+\begin{minipage}[t]{.5\textwidth}\vspace{0pt}%
\begin{Verbatim}
\begin{tkzelements}
- z.A = point : new ( 0 , 0 )
- z.B = point : new ( 4 , 2 )
- L.AB = line : new ( z.A , z.B )
- z.a = point : new ( 1 , 2 )
- C.Aa = circle : new (z.A,z.a)
- C.BC = C.Aa : orthogonal_from (z.B)
- z.C,z.D = intersection (C.Aa,C.BC)
- C.AC = circle : new (z.A,z.C)
- z.T,z.Tp = C.AC : common_tangent (C.BC)
- L.TTp = line : new (z.T,z.Tp)
- z.M = C.AC : point (0.45)
- L.MC =line : new (z.M,z.C)
- z.Mp = intersection (L.MC, C.BC)
- L.mm = L.TTp : ll_from (z.C)
- _,z.M = intersection (L.mm, C.AC)
- z.Mp = intersection (L.mm, C.BC)
+ z.O = point : new (0,0)
+ z.A = point : new (2,2)
+ z.M = point : new (-1.5,0)
+ L.AM = line : new (z.A,z.M)
+ C.OA = circle : new (z.O,z.A)
+ z.Ap = C.OA : antipode (z.A)
+ _,z.B = intersection (L.AM, C.OA)
+ z.m = z.M : north(1)
+ L.mM = line : new (z.m,z.M)
+ z.U,z.V = intersection (L.mM,C.OA)
\end{tkzelements}
-
\begin{tikzpicture}
\tkzGetNodes
- \tkzDrawCircles(A,C B,C)
- \tkzDrawSegments(M,M' A,C B,C A,B)
- \tkzDrawSegments[gray](D,M D,M' T,T')
- \tkzDrawPoints(A,B,C,D,M,M',T,T')
- \tkzLabelPoints(A,B,D,M)
- \tkzLabelPoints[above](C,M',T,T')
- \tkzMarkRightAngles(M',D,M A,C,B)
+ \tkzDrawCircle(O,A)
+ \tkzMarkRightAngle[fill=gray!10](A',B,M)
+ \tkzDrawSegments(M,O A,A' A',B A,B U,V)
+ \tkzDrawPoints(O,A,A',M,B,U,V,m)
+ \tkzLabelPoints(O,A,M,U,V,m)
+ \tkzLabelPoints[below left](A',B)
+ \tkzDrawSegments(M,A M,A')
\end{tikzpicture}
\end{Verbatim}
-
+\end{minipage}
+\begin{minipage}[t]{.5\textwidth}\vspace{0pt}%
\begin{tkzelements}
-z.A = point : new ( 0 , 0 )
-z.B = point : new ( 4 , 2 )
-L.AB = line : new ( z.A , z.B )
-z.a = point : new ( 1 , 2 )
-C.Aa = circle : new (z.A,z.a)
-C.BC = C.Aa : orthogonal_from (z.B)
-z.C,z.D = intersection (C.Aa,C.BC)
-C.AC = circle : new (z.A,z.C)
-z.T,z.Tp = C.AC : common_tangent (C.BC)
-L.TTp = line : new (z.T,z.Tp)
-z.M = C.AC : point (0.45)
-L.MC =line : new (z.M,z.C)
-z.Mp = intersection (L.MC, C.BC)
-L.mm = L.TTp : ll_from (z.C)
-_,z.M = intersection (L.mm, C.AC)
-z.Mp = intersection (L.mm, C.BC)
+scale = 1
+z.O = point : new (0,0)
+z.A = point : new (2,2)
+z.M = point : new (-1.5,0)
+L.AM = line : new (z.A,z.M)
+C.OA = circle : new (z.O,z.A)
+z.Ap = C.OA : antipode (z.A)
+_,z.B = intersection (L.AM, C.OA)
+z.m = z.M : north(1)
+L.mM = line : new (z.m,z.M)
+z.U,z.V = intersection (L.mM,C.OA)
\end{tkzelements}
- \hspace*{\fill}
-\begin{tikzpicture}
- \tkzGetNodes
- \tkzDrawCircles(A,C B,C)
- \tkzDrawSegments(M,M' A,C B,C A,B)
- \tkzDrawSegments[gray](D,M D,M' T,T')
- \tkzDrawPoints(A,B,C,D,M,M',T,T')
- \tkzLabelPoints(A,B,D,M)
- \tkzLabelPoints[above](C,M',T,T')
- \tkzMarkRightAngles(M',D,M A,C,B)
-\end{tikzpicture}
-\hspace*{\fill}
-% subsection common_tangent_orthogonality (end)
-\subsection{In\_out for circle and disk} % (fold)
-\label{sub:in_out_for_circle_and_disk}
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawCircle(O,A)
+ \tkzMarkRightAngle[fill=gray!10](A',B,M)
+ \tkzDrawSegments(M,O A,A' A',B A,B U,V)
+ \tkzDrawPoints(O,A,A',M,B,U,V,m)
+ \tkzLabelPoints(O,A,M,U,V,m)
+ \tkzLabelPoints[below left](A',B)
+ \tkzDrawSegments(M,A M,A')
+ \end{tikzpicture}
+\end{center}
-\begin{Verbatim}
-\begin{tkzelements}
+\end{minipage}
+% paragraph power_v2 (end)
+
+% subsubsection method_imeth_circle_power_c (end)
+
+\subsubsection{Method \Imeth{circle}{in\_out} for circle and disk} % (fold)
+\label{ssub:in_out_for_circle_and_disk}
+
+\begin{minipage}{.5\textwidth}
+ \begin{Verbatim}
+ \begin{tkzelements}
+ z.O = point : new (0,0)
+ z.A = point : new (1,2)
+ C.OA = circle : new (z.O,z.A)
+ z.N = point : new (-2,2)
+ z.M = point : new (1,0)
+ z.P = point : new (2,1)
+ BCm = C.OA : in_out (z.M)
+ BDm = C.OA : in_out_disk (z.M)
+ BCn = C.OA : in_out (z.N)
+ BDn = C.OA : in_out_disk (z.N)
+ BCp = C.OA : in_out (z.P)
+ BDp = C.OA : in_out_disk (z.P)
+ \end{tkzelements}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}\begin{tkzelements}
z.O = point : new (0,0)
z.A = point : new (1,2)
C.OA = circle : new (z.O,z.A)
@@ -965,53 +1778,104 @@ BDp = C.OA : in_out_disk (z.P)
\tkzLabelPoints(O,M,N,P)
\ifthenelse{\equal{\tkzUseLua{#1}}{true}}{
\tkzLabelPoint[below=#4pt,font=\scriptsize](#2){on the #3}}{%
- \tkzLabelPoint[below=#4pt,font=\scriptsize](#2){out the #3}}}
+ \tkzLabelPoint[below=#4pt,font=\scriptsize](#2){out the #3}}
+}
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawSegments[dashed](O,M O,N O,P)
+ \tkzDrawCircle(O,A)
+ \tkzDrawPoints(O,M,N,P)
+ \tkzPosPoint{BCm}{M}{circle}{8}
+ \tkzPosPoint{BCn}{N}{circle}{8}
+ \tkzPosPoint{BCp}{P}{circle}{8}
+ \tkzPosPoint{BDm}{M}{disk}{14}
+ \tkzPosPoint{BDn}{N}{disk}{14}
+ \tkzPosPoint{BDp}{P}{disk}{14}
+ \end{tikzpicture}
+\end{center}
+\end{minipage}
+
+\begin{minipage}{.5\textwidth}
+ \begin{Verbatim}
+ \def\tkzPosPoint#1#2#3#4{%
+ \tkzLabelPoints(O,M,N,P)
+ \ifthenelse{\equal{\tkzUseLua{#1}}{true}}{
+ \tkzLabelPoint[below=#4pt,font=\scriptsize](#2){on the #3}}{%
+ \tkzLabelPoint[below=#4pt,font=\scriptsize](#2){out the #3}}}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawSegments[dashed](O,M O,N O,P)
+ \tkzDrawCircle(O,A)
+ \tkzDrawPoints(O,M,N,P)
+ \tkzPosPoint{BCm}{M}{circle}{8}
+ \tkzPosPoint{BCn}{N}{circle}{8}
+ \tkzPosPoint{BCp}{P}{circle}{8}
+ \tkzPosPoint{BDm}{M}{disk}{14}
+ \tkzPosPoint{BDn}{N}{disk}{14}
+ \tkzPosPoint{BDp}{P}{disk}{14}
+ \end{tikzpicture}
+ \end{Verbatim}
+\end{minipage}
+
+% subsubsection in_out_for_circle_and_disk (end)
+
+\subsubsection{Method \Imeth{circle}{circles\_position}} % (fold)
+\label{ssub:circles_position}
+
+This function returns a string indicating the position of the circle in relation to another. Useful for creating a function. Cases are:
+
+\begin{itemize}
+ \item \code{outside}
+ \item \code{outside tangent}
+ \item \code{inside tangent}
+ \item \code{inside}
+ \item \code{intersect}
+\end{itemize}
+
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+ z.A = point : new ( 0 , 0 )
+ z.a = point : new ( 3 , 0 )
+ z.B = point : new ( 2 , 0 )
+ z.b = point : new ( 3 , 0 )
+ C.Aa = circle: new (z.A,z.a)
+ C.Bb = circle: new (z.B,z.b)
+ position = C.Aa : circles_position (C.Bb)
+ if position == "inside tangent"
+ then color = "orange"
+ else color = "blue" end
+\end{tkzelements}
+
\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawSegments[dashed](O,M O,N O,P)
-\tkzDrawCircle(O,A)
-\tkzDrawPoints(O,M,N,P)
-\tkzPosPoint{BCm}{M}{circle}{8}
-\tkzPosPoint{BCn}{N}{circle}{8}
-\tkzPosPoint{BCp}{P}{circle}{8}
-\tkzPosPoint{BDm}{M}{disk}{14}
-\tkzPosPoint{BDn}{N}{disk}{14}
-\tkzPosPoint{BDp}{P}{disk}{14}
+ \tkzGetNodes
+ \tkzDrawCircle(A,a)
+ \tkzDrawCircle[color=\tkzUseLua{color}](B,b)
\end{tikzpicture}
\end{Verbatim}
-
+\end{minipage}
+\begin{minipage}{.5\textwidth}
\begin{tkzelements}
-z.O = point : new (0,0)
-z.A = point : new (1,2)
-C.OA = circle : new (z.O,z.A)
-z.N = point : new (-2,2)
-z.M = point : new (1,0)
-z.P = point : new (2,1)
-BCm = C.OA : in_out (z.M)
-BDm = C.OA : in_out_disk (z.M)
-BCn = C.OA : in_out (z.N)
-BDn = C.OA : in_out_disk (z.N)
-BCp = C.OA : in_out (z.P)
-BDp = C.OA : in_out_disk (z.P)
+z.A = point : new ( 1 , 0 )
+z.a = point : new ( 3 , 0 )
+z.B = point : new ( 2 , 0 )
+z.b = point : new ( 3 , 0 )
+C.Aa = circle: new (z.A,z.a)
+C.Bb = circle: new (z.B,z.b)
+position = C.Aa : circles_position (C.Bb)
+if position == "inside tangent" then color = "orange" else color = "blue" end
\end{tkzelements}
-\def\tkzPosPoint#1#2#3#4{%
-\tkzLabelPoints(O,M,N,P)
- \ifthenelse{\equal{\tkzUseLua{#1}}{true}}{
- \tkzLabelPoint[below=#4pt,font=\scriptsize](#2){on the #3}}{%
- \tkzLabelPoint[below=#4pt,font=\scriptsize](#2){out the #3}}
-}
+\hspace{\fill}
\begin{tikzpicture}
\tkzGetNodes
-\tkzDrawSegments[dashed](O,M O,N O,P)
-\tkzDrawCircle(O,A)
-\tkzDrawPoints(O,M,N,P)
-\tkzPosPoint{BCm}{M}{circle}{8}
-\tkzPosPoint{BCn}{N}{circle}{8}
-\tkzPosPoint{BCp}{P}{circle}{8}
-\tkzPosPoint{BDm}{M}{disk}{14}
-\tkzPosPoint{BDn}{N}{disk}{14}
-\tkzPosPoint{BDp}{P}{disk}{14}
-\end{tikzpicture}
-% subsection in_out_for_circle_and_disk (end)
+\tkzDrawCircle(A,a)
+\tkzDrawCircle[color=\tkzUseLua{color}](B,b)
+\end{tikzpicture}\hspace{\fill}
+\end{minipage}
+% subsubsection circles__position (end)
+
+% subsection methods_of_the_class_circle (end)
% section class_circle (end)
+
\endinput
diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-ellipse.tex b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-ellipse.tex
index 3146f73461..016dd8025c 100644
--- a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-ellipse.tex
+++ b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-ellipse.tex
@@ -141,10 +141,10 @@ To do this, you'll need to use a macro: \tkzcname{tkzUseLua} defined in \pkg{tk
\Imeth{ellipse}{foci (f1,f2,v)} & E = ellipse: foci ( focus 1, focus 2, vertex ) \\
\Imeth{ellipse}{radii (c,a,b,sl) } & E = ellipse: radii ( center, radius a, radius b, slope ) \\
\Imeth{ellipse}{in\_out (pt) } & pt in/out of the ellipse \\
-\Imeth{ellipse}{tangent\_at (pt) } & Refer to ex. \ref{ssub:method_point} \\
-\Imeth{ellipse}{tangent\_from (pt) } & Refer to ex. \ref{ssub:method_point} \\
-\Imeth{ellipse}{point (t) } & vertex = point (0) covertex = point (0.25) ex Refer to \ref{ssub:method_point} \\
-\Imeth{ellipse}{orthoptic\_circle () } & Refer to ex. \ref{ssub:steiner_inellipse_and_circumellipse} \\
+\Imeth{ellipse}{tangent\_at (pt) } & [ ex. \ref{ssub:method_point} ] \\
+\Imeth{ellipse}{tangent\_from (pt) } & [ex. \ref{ssub:method_point} ] \\
+\Imeth{ellipse}{point (t) } & vertex = point (0) covertex = point (0.25) [ex. \ref{ssub:method_point} ] \\
+\Imeth{ellipse}{orthoptic\_circle () } & [ex. \ref{ssub:steiner_inellipse_and_circumellipse}] \\
\bottomrule
\end{tabular}
@@ -153,7 +153,7 @@ To do this, you'll need to use a macro: \tkzcname{tkzUseLua} defined in \pkg{tk
\subsubsection{Method \Imeth{ellipse}{new}} % (fold)
\label{ssub:method_imeth_ellipse_new}
The main method for creating a new ellipse is \Imeth{ellipse}{new}. The arguments are three: \Iattr{ellipse}{center}, \Iattr{ellipse}{vertex} and \Iattr{ellipse}{covertex}
-For attributes Refer to \ref{sec:class_ellipse}.
+For attributes [\ref{sec:class_ellipse}].
\begin{minipage}{0.5\textwidth}
\begin{Verbatim}
@@ -258,22 +258,25 @@ The first two points are the foci of the ellipse, and the third one is the verte
a,b = E.Rx,E.Ry
ang = math.deg(E.slope)
\end{tkzelements}
- \hspace*{\fill}
- \begin{tikzpicture}
- \tkzGetNodes
- \tkzDrawPolygon(A,B,C)
- \tkzDrawCircles[cyan](O,A N,I)
- \tkzDrawSegments(X,R A,X)
- \tkzDrawEllipse[red](N,\tkzUseLua{a},\tkzUseLua{b},\tkzUseLua{ang})
- \tkzDrawLines[add=.2 and .5](I,H)
- \tkzDrawPoints(A,B,C,N,O,X,H,R,S,I)
- \tkzLabelPoints[above](C,X)
- \tkzLabelPoints[above right](N,O)
- \tkzLabelPoints[above left](R)
- \tkzLabelPoints[left](A)
- \tkzLabelPoints[right](B,I,S,H)
- \end{tikzpicture}
- \hspace*{\fill}
+
+ \begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygon(A,B,C)
+ \tkzDrawCircles[cyan](O,A N,I)
+ \tkzDrawSegments(X,R A,X)
+ \tkzDrawEllipse[red](N,\tkzUseLua{a},\tkzUseLua{b},\tkzUseLua{ang})
+ \tkzDrawLines[add=.2 and .5](I,H)
+ \tkzDrawPoints(A,B,C,N,O,X,H,R,S,I)
+ \tkzLabelPoints[above](C,X)
+ \tkzLabelPoints[above right](N,O)
+ \tkzLabelPoints[above left](R)
+ \tkzLabelPoints[left](A)
+ \tkzLabelPoints[right](B,I,S,H)
+ \end{tikzpicture}
+ \end{center}
+
+
\end{minipage}
\begin{Verbatim}
diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-line.tex b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-line.tex
index 435ad9bcc6..f4acdafc8c 100644
--- a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-line.tex
+++ b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-line.tex
@@ -26,22 +26,53 @@ The attributes are :
\Iattr{line}{pb} & Second point of the segment & \\
\Iattr{line}{type} & Type is 'line' & |L.AB.type = 'line'| \\
\Iattr{line}{mid} & Middle of the segment& |z.M = L.AB.mid|\\
-\Iattr{line}{slope} & Slope of the line & Refer to (\ref{ssub:example_class_line})\\
-\Iattr{line}{length} &|l = L.AB.length|&Refer to (\ref{sub:transfer_from_lua_to_tex} ; \ref{ssub:example_class_line})\\
-\Iattr{line}{north\_pa} & &Refer to (\ref{ssub:example_class_line}) \\
+\Iattr{line}{slope} & Slope of the line & [\ref{ssub:example_class_line}] \\
+\Iattr{line}{length} &|l = L.AB.length|& [\ref{sub:transfer_from_lua_to_tex} ; \ref{ssub:example_class_line}] \\
+\Iattr{line}{north\_pa} & & [\ref{ssub:example_class_line}] \\
\Iattr{line}{north\_pb} & &\\
\Iattr{line}{south\_pa} & &\\
-\Iattr{line}{south\_pb} & &Refer to (\ref{ssub:example_class_line}) \\
+\Iattr{line}{south\_pb} & & [\ref{ssub:example_class_line}] \\
\Iattr{line}{east} & &\\
\Iattr{line}{west} & &\\
-\Iattr{line}{vec} & |V.AB = L.AB.vec|& defines $\overrightarrow{AB}$ Refer to (\ref{sec:class_vector})\\
+\Iattr{line}{vec} & |V.AB = L.AB.vec|& defines $\overrightarrow{AB}$ [\ref{sec:class_vector}] \\
\bottomrule
\end{tabular}
\egroup
\subsubsection{Example: attributes of class line} % (fold)
\label{ssub:example_class_line}
-\begin{minipage}{.5\textwidth}
+
+\vspace{5pt}
+\begin{tkzelements}
+z.a = point: new (1, 1)
+z.b = point: new (5, 4)
+L.ab = line : new (z.a,z.b)
+z.m = L.ab.mid
+z.w = L.ab.west
+z.e = L.ab.east
+z.r = L.ab.north_pa
+z.s = L.ab.south_pb
+sl = L.ab.slope
+len = L.ab.length
+\end{tkzelements}
+
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPoints(a,b,m,e,r,s,w)
+ \tkzLabelPoints(a,b)
+ \tkzLabelPoint(r){north\_pa}
+ \tkzLabelPoint(s){south\_pb}
+ \tkzLabelPoint[below](m){mid}
+ \tkzLabelPoint[right](w){west}
+ \tkzLabelPoint[left](e){east}
+ \tkzDrawLine(a,b)
+ \tkzLabelSegment[above = 1em,sloped](a,b){ab = \pmpn{\tkzUseLua{len}}}
+ \tkzLabelSegment[above=2em,sloped](a,b){slope of (ab) = \pmpn{\tkzUseLua{sl}}}
+ \end{tikzpicture}
+\end{center}
+
+
\begin{Verbatim}
\begin{tkzelements}
scale = .5
@@ -67,35 +98,8 @@ The attributes are :
\tkzLabelSegment[above=12pt,sloped](a,b){slope of (ab) = \tkzUseLua{sl}}
\end{tikzpicture}
\end{Verbatim}
-\end{minipage}
-\begin{minipage}{.5\textwidth}\begin{tkzelements}
-scale = .5
-z.a = point: new (1, 1)
-z.b = point: new (5, 4)
-L.ab = line : new (z.a,z.b)
-z.m = L.ab.mid
-z.w = L.ab.west
-z.e = L.ab.east
-z.r = L.ab.north_pa
-z.s = L.ab.south_pb
-sl = L.ab.slope
-len = L.ab.length
-\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
- \tkzGetNodes
- \tkzDrawPoints(a,b,m,e,r,s,w)
- \tkzLabelPoints(a,b)
- \tkzLabelPoint(r){north\_pa}
- \tkzLabelPoint(s){south\_pb}
- \tkzLabelPoint[below](m){mid}
- \tkzLabelPoint[right](w){west}
- \tkzLabelPoint[left](e){east}
- \tkzDrawLine(a,b)
- \tkzLabelSegment[above = 1em,sloped](a,b){ab = \pmpn{\tkzUseLua{len}}}
- \tkzLabelSegment[above=2em,sloped](a,b){slope of (ab) = \pmpn{\tkzUseLua{sl}}}
-\end{tikzpicture}
-\end{minipage}
+
+
% subsubsection example_class_line (end)
\subsubsection{Method \Imeth{line}{new} and line attributes}
@@ -161,62 +165,54 @@ Here's the list of methods for the \tkzNameObj{line} object. The results can be
\toprule
\textbf{Methods} & \textbf{Comments} & \\
\midrule
-\Igfct{line}{new(pt, pt)} & |L.AB = line : new(z.A,z.B)| & Create line $(AB)$ ; Refer to (\ref{ssub:altshiller})\\
+\Igfct{line}{new(pt, pt)} & |L.AB = line : new(z.A,z.B)| & Create line $(AB)$ ; [\ref{sub:altshiller}] \\
\midrule
\textbf{Points} &&\\
\midrule
-\Imeth{line}{gold\_ratio ()} & |z.C=L.AB : gold_ratio()| & Refer to (\ref{sub:gold_ratio_with_segment} ; \ref{sub:the_figure_pappus_circle} ; \ref{sub:bankoff_circle}) \\
-\Imeth{line}{normalize ()} & |z.C=L.AB : normalize()| & AC =1 and $C\in (AB)$ Refer to (\ref{ssub:normalize}) \\
+\Imeth{line}{gold\_ratio ()} & |z.C=L.AB : gold_ratio()| & [\ref{sub:gold_ratio_with_segment} ; \ref{sub:the_figure_pappus_circle} ; \ref{sub:bankoff_circle} ] \\
+\Imeth{line}{normalize ()} & |z.C=L.AB : normalize()| & AC =1 and $C\in (AB)$ [ \ref{ssub:normalize}] \\
\Imeth{line}{normalize\_inv ()} & |z.C=L.AB : normalize_inv()| & CB=1 and $C\in (AB)$ \\
-\Imeth{line}{barycenter (r,r)} & |z.C=L.AB : barycenter (1,2)| & Refer to (\ref{ssub:barycenter_with_a_line})\\
-\Imeth{line}{point (r)} & |z.C=L.AB : point (2)| & $\overrightarrow{AC} = 2\overrightarrow{AB}$ Refer to (\ref{sub:ellipse} ; \ref{ssub:method_point})\\
+\Imeth{line}{barycenter (r,r)} & |z.C=L.AB : barycenter (1,2)| & [\ref{ssub:barycenter_with_a_line}] \\
+\Imeth{line}{point (r)} & |z.C=L.AB : point (2)| & $\overrightarrow{AC} = 2\overrightarrow{AB}$ [\ref{sub:ellipse} ; \ref{ssub:method_point}] \\
\Imeth{line}{midpoint ()} & |z.M=L.AB : midpoint ()| & better is |z.M = L.AB.mid| \\
-\Imeth{line}{harmonic\_int (pt)} & |z.D=L.AB : harmonic_int (z.C)| & Refer to (\ref{sub:bankoff_circle})\\
-\Imeth{line}{harmonic\_ext (pt)} & |z.D=L.AB : harmonic_ext (z.C)| & Refer to (\ref{sub:bankoff_circle})\\
-\Imeth{line}{harmonic\_both (r)} & |z.C,z.D=L.AB : harmonic_both|($\varphi$) & \ref{sub:harmonic_division_with_tkzphi}\\
+\Imeth{line}{harmonic\_int (pt)} & |z.D=L.AB : harmonic_int (z.C)| & [ \ref{sub:bankoff_circle}] \\
+\Imeth{line}{harmonic\_ext (pt)} & |z.D=L.AB : harmonic_ext (z.C)| & [ \ref{sub:bankoff_circle}] \\
+\Imeth{line}{harmonic\_both (r)} & |z.C,z.D=L.AB : harmonic_both|($\varphi$) & [\ref{sub:harmonic_division_with_tkzphi}] \\
\Imeth{line}{\_east(d)} & |z.M=L.AB : _east(2)| & |BM = 2| $A,B,M$ aligned \\
\Imeth{line}{\_west(d)} & |z.M=L.AB : _east(2)| & |BM = 2| $A,B,M$ aligned \\
-\Imeth{line}{\_north\_pa(d)} &|z.M=L.AB: _north_pa(2)| &|AM=2| $AM\perp AB$ ; $\overrightarrow{AB},\overrightarrow{AM}$ counterclockwise \\
-\Imeth{line}{\_south\_pa(d)} &|z.M=L.AB:_south_pa(2)| &|AM=2|; $AM\perp AB$ ; $\overrightarrow{AB},\overrightarrow{AM}$ clockwise \\
-\Imeth{line}{\_north\_pb(d)} &|z.M=L.AB:_north_pb(2)| &|BM=2|; $BM\perp BA$ ; $\overrightarrow{BA},\overrightarrow{BM}$ clockwise \\
-\Imeth{line}{\_south\_pb(d)} &|z.M=L.AB:_south_pb(2)| &|BM=2|; $BM\perp BA$ ; $\overrightarrow{AB},\overrightarrow{AM}$ counterclockwise \\
-\Imeth{line}{report(d,pt)} &|z.M=L.AB:report(2,z.N)| &|MN=2|; $AB\parallel MN$ ; Refer to ex. (\ref{ssub:method_report})\\
-\Imeth{line}{colinear\_at(pt,k)} &|z.D=L.AB:colinear_at(z.C,2)| &|CD=2AB|; $AB\parallel CD$ ; Refer to ex. (\ref{ssub:method_imeth_line_colinear__at})\\
+\Imeth{line}{\_north\_pa(d)} &|z.M=L.AB: _north_pa(2)| &|AM=2|; $AM\perp AB$ ; $\overrightarrow{AB},\overrightarrow{AM}$ counterclockwise. \\
+...&& [\ref{ssub:new_line_from_a_defined_line}; \ref{ssub:attributes_of_an_ellipse}]\\
+\Imeth{line}{\_south\_pa(d)} &|z.M=L.AB: _south_pa(2)| &|AM=2|; $AM\perp AB$ ; $\overrightarrow{AB},\overrightarrow{AM}$ clockwise \\
+\Imeth{line}{\_north\_pb(d)} &|z.M=L.AB: _north_pb(2)| &|BM=2|; $BM\perp BA$ ; $\overrightarrow{BA},\overrightarrow{BM}$ clockwise \\
+\Imeth{line}{\_south\_pb(d)} &|z.M=L.AB: _south_pb(2)| &|BM=2|; $BM\perp BA$ ; $\overrightarrow{AB},\overrightarrow{AM}$ counterclockwise \\
+\Imeth{line}{report(d,pt)} &|z.M=L.AB: report(2,z.N)| &|MN=2|; $AB\parallel MN$ ; [ex. \ref{ssub:method_report}]\\
+\Imeth{line}{colinear\_at(pt,k)} &|z.D=L.AB: colinear_at(z.C,2)| &|CD=2AB|; $AB\parallel CD$ ; [ex. \ref{ssub:method_imeth_line_colinear__at}]\\
\midrule
\textbf{Lines} &&\\
\midrule
-\Imeth{line}{ll\_from ( pt )} &|L.CD=L.AB: ll_from(z.C)| &$(CD) \parallel (AB)$ \\
-\Imeth{line}{ortho\_from ( pt )} &|L.CD=L.AB: ortho_from(z.C)|&$(CD) \perp (AB)$\\
-\Imeth{line}{mediator ()}&|L.uv=L.AB: mediator()| & $(u,v)$mediator of $(A,B)$\\
+\Imeth{line}{ll\_from ( pt )} &|L.CD=L.AB: ll_from(z.C)| &$(CD) \parallel (AB)$; [\ref{ssub:new_line_from_a_defined_line}] \\
+\Imeth{line}{ortho\_from ( pt )} &|L.CD=L.AB: ortho_from(z.C)|&$(CD) \perp (AB)$; [\ref{ssub:newline_ortho_from}] \\
+ \Imeth{line}{mediator ()} & |L.uv=L.AB: mediator()| & perpendicular bisector of $(A,B)$ \footnote{You can use |perpendicular_bisector| intead of \tkzname{mediator}.}; [\ref{ssub:method_imeth_line_mediator}]\\
\midrule
\textbf{Triangles}&&\\
\midrule
-\Imeth{line}{equilateral (<swap>)} & |T.ABC=L.AB:equilateral()| & $(\overrightarrow{AB},\overrightarrow{AC})>0$ or $<0$ with swap \footnote{Triangles are defined in the direct sense of rotation, unless the "swap" option is present.} \\
-\Imeth{line}{isosceles (an<,swap>)}&|T.ABC=L.AB:isosceles(math.pi/6)|&\\
-\Imeth{line}{two\_angles (an,an)} &|T.ABC=L.AB:two_angles(an,an)|&note \footnote{The given side is between the two angles} Refer to (\ref{ssub:triangle_with_two__angles}) \\
+\Imeth{line}{equilateral (<swap>)} & |T.ABC=L.AB:equilateral()| & $(\overrightarrow{AB},\overrightarrow{AC})>0$ or $<0$ with swap \footnote{Triangles are defined in the direct sense of rotation, unless the "swap" option is present.}; [\ref{ssub:object_rotation}] \\
+\Imeth{line}{isosceles (an<,swap>)}&|T.ABC=L.AB:isosceles(math.pi/6)|& [\ref{ssub:method_imeth_line_isosceles}]\\
+\Imeth{line}{two\_angles (an,an)} &|T.ABC=L.AB:two_angles(an,an)|&note \footnote{The given side is between the two angles} [\ref{ssub:triangle_with_two__angles}] \\
\Imeth{line}{school ()} & 30°,60°, 90° & \\
-\Imeth{line}{sss (r,r)} & $AC=r$ $BC=r$ & \\
-\Imeth{line}{as (r,an)} & $AC =r$ $\widehat{BAC} = an$& \\
-\Imeth{line}{sa (r,an)} & $AC =r$ $\widehat{ABC} = an$& \\
-\midrule
-\textbf{Sacred triangles}&&\\
-\midrule
-\Imeth{line}{gold (<swap>)} &|T.ABC=L.AB:gold()| & right in $B$ and $AC = \varphi \times AB $ \\
-\Imeth{line}{euclide (<swap>)} &|T.ABC=L.AB:euclide()| &$AB=AC$ ; $(\overrightarrow{AB},\overrightarrow{AC}) = \pi/5$ \\
-\Imeth{line}{golden (<swap>)} &|T.ABC=L.AB:golden()| &
- $(\overrightarrow{AB},\overrightarrow{AC}) = 2\times \pi/5$ \\
-\Imeth{line}{divine ()} & & \\
-\Imeth{line}{egyptian ()} & & \\
-\Imeth{line}{cheops ()} & & \\
+\Imeth{line}{sss (r,r)} & $AC=r$ $BC=r$ & [\ref{ssub:triangle_with_three_given_sides}] \\
+\Imeth{line}{sas (r,an)} & $AC =r$ $\widehat{BAC} = an$ & [\ref{ssub:triangle_with_three_given_sides}] \\
+\Imeth{line}{ssa (r,an)} & $AC =r$ $\widehat{ABC} = an$& [\ref{ssub:triangle_with_three_given_sides}]\\
\midrule
\textbf{Squares}&&\\
\midrule
-\Imeth{line}{square ()} &|S.AB=L.AB : square () | & create a square |S.AB|.\footnote{ |_,_,z.C,z.D = get_points(S.AB)|}\\
+\Imeth{line}{square ()} &|S.AB=L.AB : square () | & create a square |S.AB|.\footnote{ |_,_,z.C,z.D = get_points(S.AB)|}; [\ref{ssub:object_rotation}] \\
\bottomrule
\end{tabular}
\egroup
\end{minipage}
+
\begin{minipage}{\textwidth}
\bgroup
\catcode`_=12
@@ -226,23 +222,33 @@ Here's the list of methods for the \tkzNameObj{line} object. The results can be
\toprule
\textbf{Methods} & \textbf{Comments} & \\
\midrule
+\textbf{Sacred triangles}&&\\
+\midrule
+\Imeth{line}{gold (<swap>)} &|T.ABC=L.AB:gold()| & right in $B$ and $AC = \varphi \times AB $; [\ref{line:met}] \\
+\Imeth{line}{euclide (<swap>)} &|T.ABC=L.AB:euclide()| &$AB=AC$ ; $(\overrightarrow{AB},\overrightarrow{AC}) = \pi/5$; [\ref{line:met}] \\
+\Imeth{line}{golden (<swap>)} &|T.ABC=L.AB:golden()| &
+ $(\overrightarrow{AB},\overrightarrow{AC}) = 2\times \pi/5$ ; [\ref{line:met}] \\
+\Imeth{line}{divine ()} & & [\ref{line:met}] \\
+\Imeth{line}{egyptian ()} & & [\ref{line:met}] \\
+\Imeth{line}{cheops ()} & & [\ref{line:met}] \\
+\midrule
\textbf{Circles} &&\\
\midrule
\Imeth{line}{circle ()} & |C.AB = L.AB : circle ()| & center pa through pb \\
-\Imeth{line}{circle\_swap ()} & |C.BA = L.AB : circle_swap ()|& center pb through pa \\
-\Imeth{line}{apollonius (r)} & |C.apo = L.AB : apollonius (2)|& Set of points tq. |MA/MB = 2| \\
+\Imeth{line}{apollonius (r)} & |C.apo = L.AB : apollonius (2)|& Set of points tq. |MA/MB = 2|; [\ref{ssub:apollonius_circle_ma_mb_k}] \\
\midrule
\textbf{Transformations} &&\\
\midrule
-\Imeth{line}{reflection ( obj )} & |new obj = L.AB : reflection (obj|&\\
-\Imeth{line}{translation ( obj )} & |new obj = L.AB : translation (obj)|&\\
-\Imeth{line}{projection ( obj )} & |z.H = L.AB : projection (z.C)| & $CH \perp (AB)$ and $H\in (AB)$\\
+\Imeth{line}{reflection ( obj )} & |new obj = L.AB : reflection (obj|& [\ref{ssub:reflection_of_object}] \\
+\Imeth{line}{translation ( obj )} & |new obj = L.AB : translation (obj)|& [\ref{ssub:example_translation}] \\
+\Imeth{line}{projection ( obj )} & |z.H = L.AB : projection (z.C)| & $CH \perp (AB)$ and $H\in (AB)$; [\ref{ssub:example_projection_of_several_points}; \ref{ssub:example_combination_of_methods}]\\
+... & & [ \ref{ssub:example_projection_of_several_points}; \ref{ssub:example_combination_of_methods}]\\
\midrule
\textbf{Miscellaneous} &&\\
\midrule
-\Imeth{line}{distance (pt)} & |d = L.Ab : distance (z.C)| & Refer to \ref{ssub:example_distance_and_projection}\\
-\Imeth{line}{in\_out (pt)} & |b = L.AB: in_out(z.C)| & b=true if $C\in (AB)$ \\
-\Imeth{line}{slope ()} & |a = L.AB : slope()| & better is L.AB.slope \\
+\Imeth{line}{distance (pt)} & |d = L.Ab : distance (z.C)| & [\ref{ssub:example_distance_and_projection}] \\
+\Imeth{line}{in\_out (pt)} & |b = L.AB: in_out(z.C)| & b=true if $C\in (AB)$ ; [\ref{ssub:in_out_for_a_line}] \\
+\Imeth{line}{slope ()} & |a = L.AB : slope()| & better is L.AB.slope; [\ref{ssub:example_class_line}]\\
\Imeth{line}{in\_out\_segment (pt)} & |b = L.AB : in_out_segment(z.C)| & b=true if $C\in [AB$] \\
\bottomrule
\end{tabular}
@@ -309,7 +315,11 @@ The angles are on either side of the given segment
\tkzDrawPolygons(A,B,C)
\tkzDrawPoints(A,B,C)
\tkzLabelPoints(A,B)
- \tkzLabelPoints[above](C)
+ \tkzLabelPoints[above](C)
+ \tkzMarkAngle[red](C,B,A)
+ \tkzMarkAngle[red](B,A,C)
+ \tkzLabelAngle[red,pos=1.3](C,B,A){$\pi/2$}
+ \tkzLabelAngle[red,pos=1.3](B,A,C){$\pi/6$}
\end{tikzpicture}
\end{Verbatim}
\end{minipage}
@@ -321,57 +331,130 @@ The angles are on either side of the given segment
T.ABC= L.AB : two_angles (math.pi/6,math.pi/2)
z.C = T.ABC.pc
\end{tkzelements}
- \hspace*{\fill}
- \begin{tikzpicture}
- \tkzGetNodes
- \tkzDrawPolygons(A,B,C)
- \tkzDrawPoints(A,B,C)
- \tkzLabelPoints(A,B)
- \tkzLabelPoints[above](C)
- \end{tikzpicture}
- \hspace*{\fill}
+
+ \begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygons(A,B,C)
+ \tkzDrawPoints(A,B,C)
+ \tkzLabelPoints(A,B)
+ \tkzLabelPoints[above](C)
+ \tkzMarkAngle[red](C,B,A)
+ \tkzMarkAngle[red](B,A,C)
+ \tkzLabelAngle[red,pos=1.3](C,B,A){$\pi/2$}
+ \tkzLabelAngle[red,pos=1.3](B,A,C){$\pi/6$}
+ \end{tikzpicture}
+ \end{center}
+
\end{minipage}
% subsubsection triangle_with_two__angles (end)
-\subsubsection{Method \Imeth{line}{sss}} % (fold)
+\subsubsection{Method \Imeth{line}{isosceles}} % (fold)
+\label{ssub:method_imeth_line_isosceles}
+\begin{minipage}{.5\textwidth}
+ \begin{Verbatim}
+\begin{tkzelements}
+ scale = 2
+ z.a = point : new (1,2)
+ z.b = point : new (5,1)
+ L.ab = line : new (z.a,z.b)
+ T.abc = L.ab : isosceles (math.pi/6,indirect)
+ z.c = T.abc.pc
+ z.L = T.abc : lemoine_point ()
+ T.SY = T.abc : symmedian ()
+ z.Ka,z.Kb,z.Kc = get_points (T.SY)
+ L.Kb = T.abc : symmedian_line (1)
+ _,z.Kb = get_points(L.Kb)
+\end{tkzelements}
+\begin{tikzpicture}
+\tkzGetNodes
+\tkzDrawPolygons(a,b,c Ka,Kb,Kc)
+\tkzDrawPoints(a,b,c,L,Ka,Kb,Kc)
+\tkzLabelPoints(c,L,Ka,Kb)
+\tkzLabelPoints[above](a,b,Kc)
+\tkzDrawSegments[cyan](a,Ka b,Kb c,Kc)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+\begin{tkzelements}
+ scale = 2
+ z.a = point : new (1,2)
+ z.b = point : new (5,1)
+ L.ab = line : new (z.a,z.b)
+ T.abc = L.ab : isosceles (math.pi/6,indirect)
+ z.c = T.abc.pc
+ z.L = T.abc : lemoine_point ()
+ T.SY = T.abc : symmedian ()
+ z.Ka,z.Kb,
+ z.Kc = get_points (T.SY)
+ L.Kb = T.abc : symmedian_line (1)
+ _,z.Kb = get_points(L.Kb)
+\end{tkzelements}
+\begin{tikzpicture}
+\tkzGetNodes
+\tkzDrawPolygons(a,b,c Ka,Kb,Kc)
+\tkzDrawPoints(a,b,c,L,Ka,Kb,Kc)
+\tkzLabelPoints(c,L,Ka,Kb)
+\tkzLabelPoints[above](a,b,Kc)
+\tkzDrawSegments[cyan](a,Ka b,Kb c,Kc)
+\end{tikzpicture}
+\end{minipage}
+
+% subsubsection method_imeth_line_isosceles (end)
+
+\subsubsection{Methods \Imeth{line}{sss}, \Imeth{line}{sas}, \Imeth{line}{ssa}} % (fold)
\label{ssub:triangle_with_three_given_sides}
In the following example, a small difficulty arises. The given lengths are not affected by scaling, so it's necessary to use the \Igfct{math}{value (r) } function, which will modify the lengths according to the scale.
+\vspace{6pt}
\begin{minipage}{.4\textwidth}
\begin{Verbatim}
\begin{tkzelements}
- z.A = point : new ( 0 , 0 )
- z.B = point : new ( 5 , 0 )
- L.AB = line : new ( z.A , z.B )
- T.ABC = L.AB : sss (value(3),value(4))
- z.C = T.ABC.pc
+ z.A = point : new ( 0 , 0 )
+ z.B = point : new ( 5 , 0 )
+ L.AB = line : new ( z.A , z.B )
+ T.ABC = L.AB : sss (value(3),value(4))
+ T.ABD = L.AB : sas (value(3),math.pi/2)
+ T.ABE = L.AB : ssa (value(7),math.pi/2)
+ z.C = T.ABC.pc
+ z.D = T.ABD.pc
+ z.E = T.ABE.pc
\end{tkzelements}
+\hspace{\fill}
\begin{tikzpicture}[gridded]
- \tkzGetNodes
- \tkzDrawPolygons(A,B,C)
- \tkzDrawPoints(A,B,C)
- \tkzLabelPoints(A,B)
- \tkzLabelPoints[above](C)
+ \tkzGetNodes
+ \tkzDrawPolygons(A,B,C A,B,D A,B,E)
+ \tkzDrawPoints(A,B,C,D,E)
+ \tkzLabelPoints(A,B)
+ \tkzLabelPoints[above](C,D,E)
\end{tikzpicture}
\end{Verbatim}
\end{minipage}
\begin{minipage}{.6\textwidth}
- \begin{tkzelements}
- z.A = point : new ( 0 , 0 )
- z.B = point : new ( 5 , 0 )
- L.AB = line : new ( z.A , z.B )
- T.ABC = L.AB : sss (value(3),value(4))
- z.C = T.ABC.pc
- \end{tkzelements}
-\hspace{\fill}
- \begin{tikzpicture}[gridded]
- \tkzGetNodes
- \tkzDrawPolygons(A,B,C)
- \tkzDrawPoints(A,B,C)
- \tkzLabelPoints(A,B)
- \tkzLabelPoints[above](C)
- \end{tikzpicture}
+\begin{tkzelements}
+ z.A = point : new ( 0 , 0 )
+ z.B = point : new ( 5 , 0 )
+ L.AB = line : new ( z.A , z.B )
+ T.ABC = L.AB : sss (value(3),value(4))
+ T.ABD = L.AB : sas (value(3),math.pi/2)
+ T.ABE = L.AB : ssa (value(7),math.pi/2)
+ z.C = T.ABC.pc
+ z.D = T.ABD.pc
+ z.E = T.ABE.pc
+\end{tkzelements}
+
+\begin{center}
+ \begin{tikzpicture}[gridded]
+ \tkzGetNodes
+ \tkzDrawPolygons(A,B,C A,B,D A,B,E)
+ \tkzDrawPoints(A,B,C,D,E)
+ \tkzLabelPoints(A,B)
+ \tkzLabelPoints[above](C,D,E)
+ \end{tikzpicture}
+\end{center}
+
\end{minipage}
% subsubsection triangle_with_three_given_sides (end)
@@ -413,16 +496,20 @@ In some cases, two solutions are possible.
z.C = T.ABC.pc
z.D = T.ABD.pc
\end{tkzelements}
- \hspace{\fill} \begin{tikzpicture}[gridded]
- \tkzGetNodes
- \tkzDrawPolygons(A,B,C A,B,D)
- \tkzDrawPoints(A,B,C,D)
- \tkzLabelPoints(A,B)
- \tkzLabelPoints[above](C,D)
- \tkzLabelAngle[teal](C,B,A){$\pi/6$}
- \tkzLabelSegment[below left](A,C){$7$}
- \tkzLabelSegment[below left](A,D){$7$}
- \end{tikzpicture}
+
+\begin{center}
+ \begin{tikzpicture}[gridded]
+ \tkzGetNodes
+ \tkzDrawPolygons(A,B,C A,B,D)
+ \tkzDrawPoints(A,B,C,D)
+ \tkzLabelPoints(A,B)
+ \tkzLabelPoints[above](C,D)
+ \tkzLabelAngle[teal](C,B,A){$\pi/6$}
+ \tkzLabelSegment[below left](A,C){$7$}
+ \tkzLabelSegment[below left](A,D){$7$}
+ \end{tikzpicture}
+\end{center}
+
\end{minipage}
% subsubsection triangle_with_side_between_side_and_angle (end)
@@ -536,12 +623,15 @@ This method exists for all objects except quadrilaterals.
z.J = L.AB : point (-0.5)
z.K = L.AB : point (2)
\end{tkzelements}
-\begin{tikzpicture}[gridded]
-\tkzGetNodes
- \tkzDrawLine(J,K)
- \tkzDrawPoints(A,B,I,J,K)
- \tkzLabelPoints(A,B,I,J,K)
- \end{tikzpicture}
+\begin{center}
+ \begin{tikzpicture}[gridded]
+ \tkzGetNodes
+ \tkzDrawLine(J,K)
+ \tkzDrawPoints(A,B,I,J,K)
+ \tkzLabelPoints(A,B,I,J,K)
+ \end{tikzpicture}
+\end{center}
+
\end{minipage}
% subsubsection method_point (end)
@@ -576,12 +666,15 @@ If the coefficient is missing then it defaults to $1$ and in the following examp
z.D = L.AB : colinear_at (z.C,.5)
z.E = L.AB : colinear_at (z.C)
\end{tkzelements}
-\begin{tikzpicture}
- \tkzGetNodes
- \tkzDrawSegments(A,B C,E)
- \tkzDrawPoints(A,B,C,D,E)
- \tkzLabelPoints(A,B,C,D,E)
-\end{tikzpicture}
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawSegments(A,B C,E)
+ \tkzDrawPoints(A,B,C,D,E)
+ \tkzLabelPoints(A,B,C,D,E)
+ \end{tikzpicture}
+\end{center}
+
\end{minipage}
% subsubsection method_imeth_line_colinear__at (end)
@@ -615,15 +708,17 @@ If the coefficient is missing then it defaults to $1$ and in the following examp
L.ab = line : new (z.a,z.b)
z.c = L.ab : normalize ()
\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}[gridded]
-\tkzGetNodes
-\tkzDrawSegments(a,b)
-\tkzDrawCircle(a,c)
-\tkzDrawPoints(a,b,c)
-\tkzLabelPoints(a,b,c)
-\end{tikzpicture}
-\hspace*{\fill}
+
+\begin{center}
+ \begin{tikzpicture}[gridded]
+ \tkzGetNodes
+ \tkzDrawSegments(a,b)
+ \tkzDrawCircle(a,c)
+ \tkzDrawPoints(a,b,c)
+ \tkzLabelPoints(a,b,c)
+ \end{tikzpicture}
+\end{center}
+
\end{minipage}
% subsubsection normalize (end)
@@ -654,16 +749,19 @@ If the coefficient is missing then it defaults to $1$ and in the following examp
L.AB = line : new ( z.A , z.B )
z.G = L.AB : barycenter (1,2)
\end{tkzelements}
-\begin{tikzpicture}
- \tkzGetNodes
- \tkzDrawLine(A,B)
- \tkzDrawPoints(A,B,G)
- \tkzLabelPoints(A,B,G)
-\end{tikzpicture}
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawLine(A,B)
+ \tkzDrawPoints(A,B,G)
+ \tkzLabelPoints(A,B,G)
+ \end{tikzpicture}
+\end{center}
+
\end{minipage}
% subsubsection barycenter_with_a_line (end)
-\subsubsection{method \Imeth{line}{ll\_from}} % (fold)
+\subsubsection{Method \Imeth{line}{ll\_from}} % (fold)
\label{ssub:new_line_from_a_defined_line}
\begin{minipage}{0.5\textwidth}
\begin{Verbatim}
@@ -700,20 +798,162 @@ L.CD = line : new (z.C,z.D)
_,z.E = get_points ( L.CD: ll_from (z.B))
-- or z.E = L2.pb with |L2 = L.CD: ll_from (z.B)|
\end{tkzelements}
-\hspace*{\fill}
+
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawLines(A,B C,D B,E)
+ \tkzDrawPoints(A,...,E)
+ \tkzLabelPoints(A,...,E)
+ \tkzMarkRightAngle(B,A,C)
+ \tkzMarkSegments(A,C A,B A,D)
+ \end{tikzpicture}
+\end{center}
+
+
+\end{minipage}
+ % \caption{New line from defined line}
+% subsubsection new_line_from_a_defined_line (end)
+
+\subsubsection{Method \Imeth{line}{ortho\_from}} % (fold)
+\label{ssub:newline_ortho_from}
+\begin{minipage}{0.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+ z.A = point : new (1,1)
+ z.B = point : new (3,2)
+ L.AB = line : new (z.A,z.B)
+ z.C = point : new (1,3)
+ L.CD = L.AB : ortho_from(z.C)
+ z.D = L.CD.pb
+\end{tkzelements}
\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawLines(A,B C,D B,E)
-\tkzDrawPoints(A,...,E)
-\tkzLabelPoints(A,...,E)
-\tkzMarkRightAngle(B,A,C)
-\tkzMarkSegments(A,C A,B A,D)
+ \tkzGetNodes
+ \tkzDrawLines(A,B C,D)
+ \tkzDrawPoints(A,...,D)
+ \tkzLabelPoints(A,...,D)
\end{tikzpicture}
-\hspace*{\fill}
+\end{Verbatim}
\end{minipage}
- % \caption{New line from defined line}
+\begin{minipage}{0.5\textwidth}
+\begin{tkzelements}
+ z.A = point : new (1,1)
+ z.B = point : new (3,2)
+ L.AB = line : new (z.A,z.B)
+ z.C = point : new (1,3)
+ L.CD = L.AB : ortho_from(z.C)
+ z.D = L.CD.pb
+\end{tkzelements}
+
+\begin{center}
+\begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawLines(A,B C,D)
+ \tkzDrawPoints(A,...,D)
+ \tkzLabelPoints(A,...,D)
+\end{tikzpicture}
+\end{center}
+
+
+\end{minipage}
+
% subsubsection new_line_from_a_defined_line (end)
+\subsubsection{Method \Imeth{line}{mediator}} % (fold)
+\label{ssub:method_imeth_line_mediator}
+
+In Mathworld, the mediator is the plane through the midpoint of a line segment and perpendicular to that segment, also called a mediating plane. The term "mediator" was introduced by J. Neuberg (Altshiller-Court 1979, p. 298). Here, I have adopted the French term and the mediator or
+the perpendicular bisector of a line segment, is a line segment perpendicular to the segment and passing through the midpoint of this segment.
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+ z.A = point: new(0,0)
+ z.B = point: new(5,0)
+ L.AB = line: new (z.A,z.B)
+ L.med = L.AB : mediator ()
+ z.M = L.AB.mid
+ z.x,z.y= get_points(L.med)
+\end{tkzelements}
+\begin{tikzpicture}
+\tkzGetNodes
+\tkzDrawLine(A,B)
+\tkzDrawSegments(x,y)
+\tkzDrawPoints(A,B,M)
+\tkzLabelPoints(A,B)
+\tkzLabelPoints[below left](x,y,M)
+\tkzMarkSegments(A,M M,B)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+\begin{tkzelements}
+ z.A = point: new(0,0)
+ z.B = point: new(5,0)
+ L.AB = line: new (z.A,z.B)
+ L.med = L.AB : mediator ()
+ z.M = L.AB.mid
+ z.x,z.y= get_points(L.med)
+\end{tkzelements}
+\begin{center}
+\begin{tikzpicture}
+\tkzGetNodes
+\tkzDrawLine(A,B)
+\tkzDrawSegments(x,y)
+\tkzDrawPoints(A,B,M)
+\tkzLabelPoints(A,B)
+\tkzLabelPoints[below left](x,y,M)
+\tkzMarkSegments(A,M M,B)
+\end{tikzpicture}
+\end{center}
+
+\end{minipage}
+
+% subsubsection method_imeth_line_mediator (end)
+
+\subsubsection{Method \Imeth{line}{equilateral}} % (fold)
+\label{ssub:method_imeth_line_equilateral}
+
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+ z.A = point: new(0,0)
+ z.B = point: new(5,0)
+ L.AB = line: new (z.A,z.B)
+ T.ABC = L.AB : equilateral ()
+ z.C = T.ABC.pc
+\end{tkzelements}
+\begin{tikzpicture}
+\tkzGetNodes
+\tkzDrawLine(A,B)
+\tkzDrawPolygon(A,B,C)
+\tkzMarkSegments(A,B B,C C,A)
+\tkzDrawPoints(A,B,C)
+\tkzMarkAngles(B,A,C C,B,A A,C,B)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+\begin{tkzelements}
+ z.A = point: new(0,0)
+ z.B = point: new(5,0)
+ L.AB = line: new (z.A,z.B)
+ T.ABC = L.AB : equilateral ()
+ z.C = T.ABC.pc
+\end{tkzelements}
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawLine(A,B)
+ \tkzDrawPolygon(A,B,C)
+ \tkzMarkSegments(A,B B,C C,A)
+ \tkzDrawPoints(A,B,C)
+ \tkzMarkAngles(B,A,C C,B,A A,C,B)
+ \end{tikzpicture}
+\end{center}
+
+\end{minipage}
+
+% subsubsection method_imeth_line_equilateral (end)
\subsubsection{Method \Imeth{line}{projection}} % (fold)
\label{ssub:example_projection_of_several_points}
@@ -746,14 +986,16 @@ z.d = point: new (5, 2)
L.ab = line: new (z.a,z.b)
z.cp,z.dp = L.ab : projection(z.c,z.d)
\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawLines(a,b c,c' d,d')
-\tkzDrawPoints(a,...,d,c',d')
-\tkzLabelPoints(a,...,d,c',d')
-\end{tikzpicture}
-\hspace*{\fill}
+
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawLines(a,b c,c' d,d')
+ \tkzDrawPoints(a,...,d,c',d')
+ \tkzLabelPoints(a,...,d,c',d')
+ \end{tikzpicture}
+\end{center}
+
\end{minipage}
% \caption{Projection of several points}
@@ -809,23 +1051,26 @@ L.ab = C.OA : tangent_at (z.A)
z.a,z.b = L.ab.pa,L.ab.pb
-- or z.a,z.b = get_points (L.ab)
\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawPolygon(A,B,C)
-\tkzDrawCircle(O,A)
-\tkzDrawSegments[purple](O,A O,B O,H)
-\tkzDrawArc[red](O,A)(B)
-\tkzDrawArc[blue](O,B)(A)
-\tkzDrawLine[add = 2 and 1](A,a)
-\tkzFillAngles[teal!30,opacity=.4,,size=.5](A,C,B b,A,B A,O,H)
-\tkzMarkAngles[mark=|,size=.5](A,C,B b,A,B A,O,H H,O,B)
-\tkzDrawPoints(A,B,C,H,O)
-\tkzLabelPoints(B,H)
-\tkzLabelPoints[above](O,C)
-\tkzLabelPoints[left](A)
-\end{tikzpicture}
-\hspace*{\fill}
+
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygon(A,B,C)
+ \tkzDrawCircle(O,A)
+ \tkzDrawSegments[purple](O,A O,B O,H)
+ \tkzDrawArc[red](O,A)(B)
+ \tkzDrawArc[blue](O,B)(A)
+ \tkzDrawLine[add = 2 and 1](A,a)
+ \tkzFillAngles[teal!30,opacity=.4,,size=.5](A,C,B b,A,B A,O,H)
+ \tkzMarkAngles[mark=|,size=.5](A,C,B b,A,B A,O,H H,O,B)
+ \tkzDrawPoints(A,B,C,H,O)
+ \tkzLabelPoints(B,H)
+ \tkzLabelPoints[above](O,C)
+ \tkzLabelPoints[left](A)
+ \end{tikzpicture}
+\end{center}
+
+
\end{minipage}
% subsubsection example_combination_of_methods (end)
@@ -860,63 +1105,21 @@ z.a,z.b = L.ab.pa,L.ab.pb
L.AB = line : new (z.A,z.B)
z.E,z.F = L.AB : translation (z.C,z.D)
\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawPoints(A,...,F)
-\tkzLabelPoints(A,...,F)
-\tkzDrawSegments[->,red,> =latex](C,E D,F A,B) )
-\end{tikzpicture}
-\hspace*{\fill}
-\end{minipage}
-% subsubsection example_translation (end)
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPoints(A,...,F)
+ \tkzLabelPoints(A,...,F)
+ \tkzDrawSegments[->,red,> =latex](C,E D,F A,B) )
+ \end{tikzpicture}
+\end{center}
-\subsubsection{Method \Imeth{line}{distance}} % (fold)
-\label{ssub:example_distance_and_projection}
-\begin{minipage}{0.5\textwidth}
-\begin{Verbatim}
-\begin{tkzelements}
- z.A = point : new (0 , 0)
- z.B = point : new (5 , -2)
- z.C = point : new (3 , 3)
- L.AB = line : new (z.A,z.B)
- d = L.AB : distance (z.C)
- z.H = L.AB : projection (z.C)
-\end{tkzelements}
-\begin{tikzpicture}
- \tkzGetNodes
- \tkzDrawLines(A,B C,H)
- \tkzDrawPoints(A,B,C,H)
- \tkzLabelPoints(A,B,C,H)
- \tkzLabelSegment[above left,
- draw](C,H){$CH = \tkzUseLua{d}$}
-\end{tikzpicture}
-\end{Verbatim}
-\end{minipage}
-\begin{minipage}{0.5\textwidth}
-\begin{tkzelements}
- z.A = point : new (0 , 0)
- z.B = point : new (5 , -2)
- z.C = point : new (3 , 3)
- L.AB = line : new (z.A,z.B)
- d = L.AB : distance (z.C)
- z.H = L.AB : projection (z.C)
-\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawLines(A,B C,H)
-\tkzDrawPoints(A,B,C,H)
-\tkzLabelPoints(A,B,C,H)
-\tkzLabelSegment[above left,draw](C,H){$CH = \tkzUseLua{d}$}
-\end{tikzpicture}
-\hspace*{\fill}
\end{minipage}
-% \caption{Method distance with line object}
-% subsubsection example_distance_and_projection (end)
+% subsubsection example_translation (end)
+
\subsubsection{Method \Imeth{line}{reflection} of an object} % (fold)
\label{ssub:reflection_of_object}
@@ -955,19 +1158,72 @@ z.a,z.b = L.ab.pa,L.ab.pb
T.new = L.AB : reflection (T.EFG)
z.Ep,z.Fp,z.Gp = get_points(T.new)
\end{tkzelements}
-\hspace{\fill}\begin{tikzpicture}
- \tkzGetNodes
- \tkzDrawLine(A,B)
- \tkzDrawPolygon(E,F,G)
- \tkzDrawPolygon[new](E',F',G')
- \tkzDrawSegment[red,dashed](E,E')
-\end{tikzpicture}
+
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawLine(A,B)
+ \tkzDrawPolygon(E,F,G)
+ \tkzDrawPolygon[new](E',F',G')
+ \tkzDrawSegment[red,dashed](E,E')
+ \end{tikzpicture}
+\end{center}
+
\end{minipage}
% subsubsection reflection_of_object (end)
+\subsubsection{Method \Imeth{line}{distance}} % (fold)
+\label{ssub:example_distance_and_projection}
+
+\begin{minipage}{0.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+ z.A = point : new (0 , 0)
+ z.B = point : new (5 , -2)
+ z.C = point : new (3 , 3)
+ L.AB = line : new (z.A,z.B)
+ d = L.AB : distance (z.C)
+ z.H = L.AB : projection (z.C)
+\end{tkzelements}
+\begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawLines(A,B C,H)
+ \tkzDrawPoints(A,B,C,H)
+ \tkzLabelPoints(A,B,C,H)
+ \tkzLabelSegment[above left,
+ draw](C,H){$CH = \tkzUseLua{d}$}
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{0.5\textwidth}
+\begin{tkzelements}
+ z.A = point : new (0 , 0)
+ z.B = point : new (5 , -2)
+ z.C = point : new (3 , 3)
+ L.AB = line : new (z.A,z.B)
+ d = L.AB : distance (z.C)
+ z.H = L.AB : projection (z.C)
+\end{tkzelements}
+
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawLines(A,B C,H)
+ \tkzDrawPoints(A,B,C,H)
+ \tkzLabelPoints(A,B,C,H)
+ \tkzLabelSegment[above left,draw](C,H){$CH = \tkzUseLua{d}$}
+ \end{tikzpicture}
+\end{center}
-\subsection{Method \Imeth{line}{apollonius} Apollonius circle MA/MB = k} % (fold)
-\label{sub:apollonius_circle_ma_mb_k}
+
+\end{minipage}
+
+% \caption{Method distance with line object}
+% subsubsection example_distance_and_projection (end)
+
+
+\subsubsection{Method \Imeth{line}{apollonius} (Apollonius circle MA/MB = k)} % (fold)
+\label{ssub:apollonius_circle_ma_mb_k}
\begin{Verbatim}
\begin{tkzelements}
@@ -984,14 +1240,15 @@ z.a,z.b = L.ab.pa,L.ab.pb
\tkzFillCircle[blue!20,opacity=.2](O,C)
\tkzDrawCircle[blue!50!black](O,C)
\tkzDrawPoints(A,B,O,C,D,P)
- \tkzLabelPoints[below right](A,B,O,C,D,P)
\tkzDrawSegments[orange](P,A P,B P,D B,D P,C)
\tkzDrawSegments[red](A,C)
\tkzDrawPoints(A,B)
\tkzLabelCircle[draw,fill=green!10,%
text width=3cm,text centered,left=24pt](O,D)(60)%
{$CA/CB=2$\\$PA/PB=2$\\$DA/DB=2$}
- \tkzMarkRightAngle[opacity=.3,fill=lightgray](O,P,C)
+ \tkzLabelPoints[below right](A,B,O,C,D)
+ \tkzLabelPoints[above](P)
+ \tkzMarkRightAngle[opacity=.3,fill=lightgray](D,P,C)
\tkzMarkAngles[mark=||](A,P,D D,P,B)
\end{tikzpicture}
\end{Verbatim}
@@ -1006,24 +1263,28 @@ z.D = C.apo : antipode (z.C)
z.P = C.apo : point (0.30)
\end{tkzelements}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzFillCircle[blue!20,opacity=.2](O,C)
-\tkzDrawCircle[blue!50!black](O,C)
-\tkzDrawPoints(A,B,O,C,D,P)
-\tkzLabelPoints[below right](A,B,O,C,D,P)
-\tkzDrawSegments[orange](P,A P,B P,D B,D P,C)
-\tkzDrawSegments[red](A,C)
-\tkzDrawPoints(A,B)
-\tkzLabelCircle[draw,fill=green!10,%
- text width=3cm,text centered,left=24pt](O,D)(60)%
- {$CA/CB=2$\\$PA/PB=2$\\$DA/DB=2$}
-\tkzMarkRightAngle[opacity=.3,fill=lightgray](O,P,C)
-\tkzMarkAngles[mark=||](A,P,D D,P,B)
-\end{tikzpicture}
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzFillCircle[blue!20,opacity=.2](O,C)
+ \tkzDrawCircle[blue!50!black](O,C)
+ \tkzDrawPoints(A,B,O,C,D,P)
+ \tkzDrawSegments[orange](P,A P,B P,D B,D P,C)
+ \tkzDrawSegments[red](A,C)
+ \tkzDrawPoints(A,B)
+ \tkzLabelCircle[draw,fill=green!10,%
+ text width=3cm,text centered,left=24pt](O,D)(60)%
+ {$CA/CB=2$\\$PA/PB=2$\\$DA/DB=2$}
+ \tkzLabelPoints[below right](A,B,O,C,D)
+ \tkzLabelPoints[above](P)
+ \tkzMarkRightAngle[opacity=.3,fill=lightgray](D,P,C)
+ \tkzMarkAngles[mark=||](A,P,D D,P,B)
+ \end{tikzpicture}
+\end{center}
+
Remark: |\tkzUseLua{length(z.P,z.A)/length(z.P,z.B)}| = \tkzUseLua{length(z.P,z.A)/length(z.P,z.B)}
-% subsection apollonius_circle_ma_mb_k (end)
+% subsubsection apollonius_circle_ma_mb_k (end)
% subsection methods_from_class_line (end)
diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-matrices.tex b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-matrices.tex
index 04b874532d..d533511fbe 100644
--- a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-matrices.tex
+++ b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-matrices.tex
@@ -15,7 +15,7 @@ This \code{matrix} class has been created to avoid the need for an external libr
\begin{itemize}
-\item The first method is: (Refer to \ref{ssub:method_new})
+\item The first method is: [\ref{ssub:method_new}]
\begin{minipage}{.5\textwidth}
\begin{mybox}
@@ -33,13 +33,13 @@ This \code{matrix} class has been created to avoid the need for an external libr
\end{minipage}
-\item It is also possible to obtain a square matrix with: (Refer to \ref{ssub:method_square})
+\item It is also possible to obtain a square matrix with: [\ref{ssub:method_square}]
\begin{mybox}
|M = matrix : square (2,a,b,c,d)|
\end{mybox}
-\item In the case of a column vector: (Refer to \ref{ssub:method_vector})
+\item In the case of a column vector: [\ref{ssub:method_vector}]
\begin{minipage}{.5\textwidth}
\begin{mybox}
@@ -52,7 +52,7 @@ This \code{matrix} class has been created to avoid the need for an external libr
\end{tkzelements}
\end{minipage}
-\item Homogeneous transformation matrix (Refer to \ref{ssub:method_htm})
+\item Homogeneous transformation matrix [\ref{ssub:method_htm}]
The objective is to generate a matrix with homogeneous coordinates capable of transforming a coordinate system through rotation, translation, and scaling. To achieve this, it is necessary to define both the rotation angle, the coordinates of the new origin ans the scaling factors.
diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-misc.tex b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-misc.tex
index c8c5cccd8f..e80a292858 100644
--- a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-misc.tex
+++ b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-misc.tex
@@ -17,11 +17,11 @@
%tkzround( num, idp ) & \\
% Cramer33(a1,a2,a3,b1,b2,b3,c1,c2,c3) & \\
% Cramer22(a1,a2,b1,b2) & \\
-\Igfct{math}{length (a,b) } & point.abs(a-b) Refer to (\ref{ssub:report_de_distance}) \\
+\Igfct{math}{length (a,b) } & point.abs(a-b) [\ref{sub:report_de_distance}] \\
\Igfct{math}{islinear (z1,z2,z3) } & Are the points aligned? (z2-z1) $\parallel$ (z3-z1) ? \\
\Igfct{math}{isortho (z1,z2,z3)} & (z2-z1) $\perp$ (z3-z1) ? boolean\\
-\Igfct{math}{get\_angle (z1,z2,z3)} & the vertex is z1 Refer to (\ref{sub:get_angle}) \\
-\Igfct{math}{bisector (z1,z2,z3)} & L.Aa = bisector (z.A,z.B,z.C) from A (\ref{sub:get_angle})\\
+\Igfct{math}{get\_angle (z1,z2,z3)} & the vertex is z1 [\ref{sub:get_angle}] \\
+\Igfct{math}{bisector (z1,z2,z3)} & L.Aa = bisector (z.A,z.B,z.C) from A [\ref{sub:get_angle}] \\
\Igfct{math}{bisector\_ext (z1,z2,z3)} & L.Aa = bisector_ext (z.A,z.B,z.C) from A \\
\Igfct{math}{altitude (z1,z2,z3)} & altitude from z1 \\
\Igfct{package}{set\_lua\_to\_tex (list)} & set\_lua\_to\_tex('a','n') defines |\a| and |\n| \\
@@ -31,7 +31,7 @@
\Igfct{math}{real (v) } & apply | value /scale | \\
\Igfct{math}{angle\_normalize (an) } & to get a value between 0 and $2\pi$ \\
\Igfct{misc}{barycenter (\{z1,n1\},\{z2,n2\}, ...)} & barycenter of list of points \\
-\Igfct{math}{solve\_quadratic (a,b,c) } & gives the solution of $ax^2+bx+c =0$ a,b,c real or complex (Refer to \ref{ssub:function_solve__quadratic})\\
+\Igfct{math}{solve\_quadratic (a,b,c) } & gives the solution of $ax^2+bx+c =0$ a,b,c real or complex [\ref{ssub:function_solve__quadratic}] \\
\bottomrule
\end{tabular}
\egroup
diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-point.tex b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-point.tex
index e404dc763b..0da8f16b78 100644
--- a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-point.tex
+++ b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-point.tex
@@ -92,7 +92,6 @@ The creation of a point is done using the following method, but there are other
This is the creation of a fixed point with coordinates 1 and 2 and which is named $A$. The notation |z.A| indicates that the coordinates will be stored in a table denoted as |z| (reference to the notation of the affixes of the complex numbers) that $A$ is the name of the point and the key allowing access to the values.
-
\begin{center}
\bgroup
\small
@@ -101,21 +100,18 @@ This is the creation of a fixed point with coordinates 1 and 2 and which is name
\begin{tabular}{lll}
\toprule
\textbf{Attributes} & \textbf{Application}& \textbf{Example}\\
- \Iattr{point}{re} & |z.A.re = 1| & Refer to (\ref{ssub:methods}) \\
- \Iattr{point}{im} & |z.A.im = 2| & Refer to (\ref{ssub:methods}) \\
+ \Iattr{point}{re} & |z.A.re = 1| & [\ref{ssub:methods}] \\
+ \Iattr{point}{im} & |z.A.im = 2| & [\ref{ssub:methods}] \\
\Iattr{point}{type} & |z.A.type = 'point'| & \\
- \Iattr{point}{argument} & |z.A.argument $\approx$ 0.78539816339745| & Refer to (\ref{ssub:example_point_attributes})\\
- \Iattr{point}{modulus} & |z.A.modulus| $\approx$ |2.2360...| =$\sqrt{5}$ & Refer to (\ref{ssub:example_point_attributes})\\
+ \Iattr{point}{argument} & |z.A.argument $\approx$ 0.78539816339745| & [\ref{ssub:example_point_attributes}] \\
+ \Iattr{point}{modulus} & |z.A.modulus| $\approx$ |2.2360...| =$\sqrt{5}$ & [\ref{ssub:example_point_attributes}] \\
\bottomrule
\end{tabular}
\egroup
\end{center}
-
-
-
\newpage
-\subsubsection{Example:point attributes} % (fold)
+\subsubsection{Example: point attributes} % (fold)
\label{ssub:example_point_attributes}
\begin{tkzelements}
@@ -189,7 +185,7 @@ Attributes of \texttt{z.M}
\end{center}
\MakeShortVerb{\|}
- \hspace*{\fill}
+
% \caption{Class Point}
% subsubsection example_point_attributes (end)
% subsection attributes_of_a_point (end)
@@ -225,19 +221,20 @@ Attributes of \texttt{z.M}
z.O = point : new ( 0 , 0 )
z.I = point : new ( 1 , 0 )
\end{tkzelements}
- \hspace{\fill}\begin{tikzpicture}
- \tkzGetNodes
- \tkzInit[xmin=-4,ymin=-4,xmax=4,ymax=4]
- \tkzDrawCircle[dashed,red](O,A)
- \tkzPointShowCoord(A)
- \tkzDrawPoint(A)
- \tkzLabelPoint[above right](A){\normalsize $a+ib$}
- \tkzDrawX\tkzDrawY
- \tkzDrawSegment(O,A)
- \tkzLabelSegment[above,anchor=south,sloped](O,A){ OA = modulus of $z_A$}
- \tkzLabelAngle[anchor=west,pos=.5](I,O,A){$\theta$ = argument of $z_A$}
- \end{tikzpicture}
- \hspace{\fill}
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzInit[xmin=-4,ymin=-4,xmax=4,ymax=4]
+ \tkzDrawCircle[dashed,red](O,A)
+ \tkzPointShowCoord(A)
+ \tkzDrawPoint(A)
+ \tkzLabelPoint[above right](A){\normalsize $a+ib$}
+ \tkzDrawX\tkzDrawY
+ \tkzDrawSegment(O,A)
+ \tkzLabelSegment[above,anchor=south,sloped](O,A){ OA = modulus of $z_A$}
+ \tkzLabelAngle[anchor=west,pos=.5](I,O,A){$\theta$ = argument of $z_A$}
+ \end{tikzpicture}
+\end{center}
\end{minipage}
@@ -257,37 +254,37 @@ The methods described in the following table are standard and can be found in mo
\toprule
\textbf{Functions} & \textbf{Application}& \\
\midrule
-\Igfct{point}{new(r,r)} & |z.A = point : new(1,2)| & Refer to (\ref{ssub:method_normalize}) \\
-\Igfct{point}{polar (d,an)} & |z.A = point : polar(1,math.pi/3)| & Refer to (\ref{sub:archimedes} )\\
+\Igfct{point}{new(r,r)} & |z.A = point : new(1,2)| & [\ref{ssub:method_normalize}] \\
+\Igfct{point}{polar (d,an)} & |z.A = point : polar(1,math.pi/3)| & [\ref{sub:archimedes}] \\
\Igfct{point}{polar\_deg (d,an)} & an in deg & polar coordinates an deg \\
\midrule
\textbf{Methods} & \textbf{Application}& \\
\midrule
\textbf{Points} &&\\
\midrule
-\Imeth{point}{north(r)} & |r| distance to the point (1 if empty) & Refer to (\ref{sub:power_v2}) ; \ref{ssub:methods}) \\
+\Imeth{point}{north(r)} & |r| distance to the point (1 if empty) & [\ref{par:power_v2} ; \ref{ssub:methods}] \\
\Imeth{point}{south(r)} & & \\
\Imeth{point}{east(r)} & & \\
\Imeth{point}{west(r)} & & \\
-\Imeth{point}{normalize()} & |z.b = z.a: normalize ()| & Refer to (\ref{ssub:method_normalize}) \\
-\Imeth{point}{get\_points (obj)} & retrieves points from the object & \\
-\Imeth{point}{orthogonal (d)} & |z.B=z.A:orthogonal(d)| & $\overrightarrow{OB}\perp \overrightarrow{OA}$ and $OB=d$\\
-\Imeth{point}{at ()} & |z.X = z.B : at (z.A)| & $\overrightarrow{OB}= \overrightarrow{AX}$ and $OB=d$\\
+\Imeth{point}{normalize()} & |z.b = z.a: normalize ()| & [\ref{ssub:method_normalize}] \\
+\Imeth{point}{get\_points (obj)} & retrieves points from the object & [\ref{ssub:object_rotation}; \ref{ssub:apollonius_circle_ma_mb_k} ] \\
+\Imeth{point}{orthogonal (d)} & |z.B=z.A:orthogonal(d)| & $\overrightarrow{OB}\perp \overrightarrow{OA}$ and $OB=d$. [\ref{ssub:orthogonal_method}]\\
+\Imeth{point}{at ()} & |z.X = z.B : at (z.A)| & $\overrightarrow{OB}= \overrightarrow{AX}$ and $OB=d$. [\ref{ssub:_imeth_point_at_method}] \\
\midrule
\textbf{Transformations} &&\\
\midrule
- \Imeth{point}{symmetry(obj)} & obj : point, line, etc. & Refer to (\ref{ssub:object_symmetry}) \\
- \Imeth{point}{rotation(an , obj)} & point, line, etc. & Refer to (\ref{ssub:object_rotation})\\
- \Imeth{point}{homothety(r,obj)} & |z.c = z.a : homothety (2,z.b)| & Refer to (\ref{sub:homothety}) \\
+ \Imeth{point}{symmetry(obj)} & obj : point, line, etc. & [\ref{ssub:object_symmetry}] \\
+ \Imeth{point}{rotation(an , obj)} & point, line, etc. & [\ref{ssub:object_rotation}] \\
+ \Imeth{point}{homothety(r,obj)} & |z.c = z.a : homothety (2,z.b)| & [\ref{sub:homothety}] \\
\midrule
\textbf{Misc.} &&\\
\midrule
- \Imeth{point}{print()} & displays the affix of the point & Refer to (\ref{ssub:object_symmetry}) \\
+ \Imeth{point}{print()} & displays the affix of the point & [\ref{ssub:object_symmetry} ]\\
\bottomrule %
\end{tabular}
\egroup
-\subsubsection{Example: method \Imeth{point}{north (d)} } % (fold)
+\subsubsection{Method \Imeth{point}{north (d)} } % (fold)
\label{ssub:example_method_imeth_point_north_d}
This function defines a point located on a vertical line passing through the given point. This function is useful if you want to report a certain distance (Refer to the following example).
@@ -320,71 +317,21 @@ If |d| is absent then it is considered equal to 1.
z.C = z.O : west ()
z.D = z.O : south ()
\end{tkzelements}
-\hspace{\fill}
-\begin{tikzpicture}
- \tkzGetNodes
- \tkzDrawPolygon(A,B,C,D)
- \tkzDrawPoints(A,B,C,D,O,A')
- \tkzLabelPoints(A,B,C,D,O,A')
-\end{tikzpicture}
-\end{minipage}
-% subsubsection example_method_imeth_point_north_d (end)
-
-\subsubsection{Length transfer} % (fold)
-\label{ssub:report_de_distance}
-
-Use of |north and east| functions linked to points, to transfer lengths, Refer to (\ref{sub:length_of_a_segment})
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygon(A,B,C,D)
+ \tkzDrawPoints(A,B,C,D,O,A')
+ \tkzLabelPoints(A,B,C,D,O,A')
+ \end{tikzpicture}
+\end{center}
-\begin{minipage}{.4\textwidth}
-\begin{Verbatim}
-\begin{tkzelements}
- z.A = point : new ( 0 , 0 )
- z.B = point : new ( 3 , 0 )
- L.AB = line : new ( z.A , z.B )
- T.ABC = L.AB : sublime ()
- z.C = T.ABC.pc
- z.D = z.B: north (length(z.B,z.C))
- z.E = z.B: east (L.AB.length)
- z.M = L.AB.mid
- z.F = z.E : north (length(z.C,z.M))
-\end{tkzelements}
-\begin{tikzpicture}[gridded]
- \tkzGetNodes
- \tkzDrawPolygons(A,B,C)
- \tkzDrawSegments[gray,dashed](B,D B,E E,F C,M)
- \tkzDrawPoints(A,...,F)
- \tkzLabelPoints(A,B,E,M)
- \tkzLabelPoints[above right](C,D,F)
-\end{tikzpicture}
-\end{Verbatim}
\end{minipage}
-\begin{minipage}{.6\textwidth}
-\begin{tkzelements}
- z.A = point : new ( 0 , 0 )
- z.B = point : new ( 3 , 0 )
- L.AB = line : new ( z.A , z.B )
- T.ABC = L.AB : sublime ()
- z.C = T.ABC.pc
- z.D = z.B: north (length(z.B,z.C))
- z.E = z.B: east (L.AB.length)
- z.M = L.AB.mid
- z.F = z.E : north (length(z.C,z.M))
-\end{tkzelements}
-\hspace{\fill}
-\begin{tikzpicture}[gridded]
- \tkzGetNodes
- \tkzDrawPolygons(A,B,C)
- \tkzDrawSegments[gray,dashed](B,D B,E E,F C,M)
- \tkzDrawPoints(A,...,F)
- \tkzLabelPoints(A,B,E,M)
- \tkzLabelPoints[above right](C,D,F)
-\end{tikzpicture}
-\end{minipage}
-% subsubsection report_de_distance (end)
+% subsubsection example_method_imeth_point_north_d (end)
-\subsubsection{Example: method \Imeth{point}{polar} } % (fold)
+\subsubsection{Method \Imeth{point}{polar} } % (fold)
\label{ssub:example_polar_method}
This involves defining a point using its modulus and argument.
@@ -402,7 +349,8 @@ This involves defining a point using its modulus and argument.
\tkzDrawSegments[new](O,A)
\tkzDrawSegments[purple](O,F)
\tkzDrawPoints(A,O,F)
- \tkzLabelPoints[below right=6pt](A,O,F)
+ \tkzLabelPoints[below right=6pt](A,O)
+ \tkzLabelPoints[above](F)
\end{tikzpicture}
\end{Verbatim}
\end{minipage}
@@ -413,16 +361,20 @@ This involves defining a point using its modulus and argument.
z.A = point: new (3, 0)
z.F = point: polar (3, math.pi/3)
\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircle(O,A)
-\tkzDrawSegments[new](O,A)
-\tkzDrawSegments[purple](O,F)
-\tkzDrawPoints(A,O,F)
-\tkzLabelPoints(A,O,F)
-\end{tikzpicture}
-\hspace*{\fill}
+
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawCircle(O,A)
+ \tkzDrawSegments[new](O,A)
+ \tkzDrawSegments[purple](O,F)
+ \tkzDrawPoints(A,O,F)
+ \tkzLabelPoints[below right=6pt](A,O)
+ \tkzLabelPoints[above](F)
+ \end{tikzpicture}
+\end{center}
+
+
\end{minipage}
% subsubsection example_polar_method (end)
@@ -431,7 +383,26 @@ This involves defining a point using its modulus and argument.
The result is a point located between the origin and the initial point at a distance of $1$ from the origin.
-\begin{minipage}{.4\textwidth}
+\begin{tkzelements}
+scale = 1.5
+z.O = point : new (0,0)
+z.A = point : new (2,1)
+z.B = z.A : normalize ()
+z.I = point : new (1,0)
+\end{tkzelements}
+
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawSegment(O,A)
+ \tkzDrawCircle(O,B)
+ \tkzDrawPoints(O,A,B,I)
+ \tkzLabelPoints(O,A)
+ \tkzLabelPoints[above](B)
+ \tkzLabelPoint[below right](I){$1$}
+ \end{tikzpicture}
+\end{center}
+
\begin{Verbatim}
\begin{tkzelements}
scale = 1.5
@@ -449,29 +420,11 @@ The result is a point located between the origin and the initial point at a dist
\tkzLabelPoint[below right](I){$1$}
\end{tikzpicture}
\end{Verbatim}
-\end{minipage}
-\begin{minipage}{.6\textwidth}
-\begin{tkzelements}
-scale = 1.5
-z.O = point : new (0,0)
-z.A = point : new (1,2)
-z.B = z.A : normalize ()
-z.I = point : new (1,0)
-\end{tkzelements}
- \hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawSegment(O,A)
-\tkzDrawCircle(O,B)
-\tkzDrawPoints(O,A,B,I)
-\tkzLabelPoints(O,A,B)
-\tkzLabelPoint[below right](I){$1$}
-\end{tikzpicture}
- \hspace*{\fill}
-\end{minipage}
+
+
% subsubsection method_normalize (end)
-\subsubsection{\Imeth{point}{Orthogonal (d)} method} % (fold)
+\subsubsection{Method \Imeth{point}{orthogonal (d)}} % (fold)
\label{ssub:orthogonal_method}
Let $O$ be the origin of the plane. The "orthogonal (d)" method is used to obtain a point $B$ from a point $A$ such that $\overrightarrow{OB}\perp \overrightarrow{OA}$ with $OB=OA$ if $d$ is empty, otherwise $OB = d$.
@@ -499,16 +452,19 @@ Let $O$ be the origin of the plane. The "orthogonal (d)" method is used to obtai
z.O = point : new ( 0,0 )
z.C = z.A : orthogonal ()
\end{tkzelements}
-\begin{tikzpicture}[gridded]
- \tkzGetNodes
- \tkzDrawSegments(O,A O,C)
- \tkzDrawPoints(O,A,B,C)
- \tkzLabelPoints[below right](O,A,B,C)
-\end{tikzpicture}
+\begin{center}
+ \begin{tikzpicture}[gridded]
+ \tkzGetNodes
+ \tkzDrawSegments(O,A O,C)
+ \tkzDrawPoints(O,A,B,C)
+ \tkzLabelPoints[below right](O,A,B,C)
+ \end{tikzpicture}
+\end{center}
+
\end{minipage}
% subsubsection orthogonal_method (end)
-\subsubsection{\Imeth{point}{at} method} % (fold)
+\subsubsection{Method \Imeth{point}{at}} % (fold)
\label{ssub:_imeth_point_at_method}
This method is complementary to the previous one, so you may not wish to have $\overrightarrow{OB}\perp \overrightarrow{OA}$ but $\overrightarrow{AB}\perp \overrightarrow{OA}$.
@@ -521,14 +477,16 @@ This method is complementary to the previous one, so you may not wish to have $\
z.O = point : new ( 0,0 )
-- z.B = z.B : at (z.A) -- or
z.B = z.A : orthogonal (1) : at (z.A)
+ z.E = z.A : orthogonal (1)
z.C = z.A+z.B
z.D =(z.C-z.A):orthogonal(2) : at (z.C)
\end{tkzelements}
\begin{tikzpicture}[gridded]
\tkzGetNodes
- \tkzLabelPoints[below right](O,A,B,C,D)
- \tkzDrawSegments(O,A A,B A,C C,D)
- \tkzDrawPoints(O,A,B,C,D)
+ \tkzLabelPoints[below right](O,A,C)
+ \tkzLabelPoints[above](B,D,E)
+ \tkzDrawSegments(O,A A,B A,C C,D O,E)
+ \tkzDrawPoints(O,A,B,C,D,E)
\end{tikzpicture}
\end{Verbatim}
\end{minipage}
@@ -539,20 +497,24 @@ z.B = z.A : orthogonal (1)
z.O = point : new ( 0,0 )
-- z.B = z.B : at (z.A) -- or
z.B = z.A : orthogonal (1) : at (z.A)
+z.E = z.A : orthogonal (1)
z.C = z.A+z.B
z.D =(z.C-z.A):orthogonal(2) : at (z.C)
\end{tkzelements}
-\begin{tikzpicture}[gridded]
-\tkzGetNodes
-\tkzLabelPoints[below right](O,A,B,C,D)
-\tkzDrawSegments(O,A A,B A,C C,D)
-\tkzDrawPoints(O,A,B,C,D)
-\end{tikzpicture}
+\begin{center}
+ \begin{tikzpicture}[gridded]
+ \tkzGetNodes
+ \tkzLabelPoints[below right](O,A,C)
+ \tkzLabelPoints[above](B,D,E)
+ \tkzDrawSegments(O,A A,B A,C C,D O,E)
+ \tkzDrawPoints(O,A,B,C,D,E)
+ \end{tikzpicture}
+\end{center}
\end{minipage}
% subsubsection _imeth_point_at_method (end)
-\subsubsection{Example: \Imeth{point}{rotation of points}} % (fold)
+\subsubsection{Method \Imeth{point}{rotation} first example} % (fold)
\label{ssub:example_rotation_of_points}
The arguments are the angle of rotation in radians, and here a list of points.
@@ -565,26 +527,27 @@ The arguments are the angle of rotation in radians, and here a list of points.
z.o = point: new(6, -2)
z.ap,z.bp = z.o : rotation (math.pi/2,z.a,z.b)
\end{tkzelements}
- \begin{tikzpicture}
- \tkzGetNodes
- \tkzDrawLines(o,a o,a' o,b o,b')
- \tkzDrawPoints(a,a',b,b',o)
- \tkzLabelPoints(b,b',o)
- \tkzLabelPoints[below left](a,a')
- \tkzDrawArc(o,a)(a')
- \tkzDrawArc(o,b)(b')
- \end{tikzpicture}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawLines(o,a o,a' o,b o,b')
+ \tkzDrawPoints(a,a',b,b',o)
+ \tkzLabelPoints(b,b',o)
+ \tkzLabelPoints[below left](a,a')
+ \tkzDrawArc(o,a)(a')
+ \tkzDrawArc(o,b)(b')
+ \end{tikzpicture}
\end{Verbatim}
\end{minipage}
\begin{minipage}{.4\textwidth}
\begin{tkzelements}
- scale = .5
+ scale = .5
z.a = point: new(0, -1)
z.b = point: new(4, 0)
z.o = point: new(6, -2)
z.ap,z.bp = z.o : rotation (math.pi/2,z.a,z.b)
\end{tkzelements}
-\hspace*{\fill}
+
+\begin{center}
\begin{tikzpicture}
\tkzGetNodes
\tkzDrawLines(o,a o,a' o,b o,b')
@@ -594,16 +557,16 @@ The arguments are the angle of rotation in radians, and here a list of points.
\tkzDrawArc(o,a)(a')
\tkzDrawArc(o,b)(b')
\end{tikzpicture}
-\hspace*{\fill}
+\end{center}
\end{minipage}
% subsubsection example_rotation_of_points (end)
-\subsubsection{Object \Imeth{point}{rotation}} % (fold)
+\subsubsection{Method \Imeth{point}{rotation} second example} % (fold)
\label{ssub:object_rotation}
Rotate a triangle by an angle of $\pi/6$ around $O$.
\begin{minipage}{.5\textwidth}
- \begin{Verbatim}
+\begin{Verbatim}
\begin{tkzelements}
scale = .75
z.O = point : new ( -1 , -1 )
@@ -619,13 +582,12 @@ Rotate a triangle by an angle of $\pi/6$ around $O$.
T.ApBpCp = z.O : rotation (math.pi/3,T.ABC)
z.Ap,z.Bp,z.Cp = get_points ( T.ApBpCp)
\end{tkzelements}
-
\begin{tikzpicture}
\tkzGetNodes
\tkzDrawPolygons(A,B,C A',B',C' A,B,E,F A',B',E',F')
\tkzDrawPoints (A,B,C,A',B',C',O)
- \tkzLabelPoints (A,B,C,A',B',C',O)
- \tkzDrawArc[delta=0,->](O,A)(A')
+ \tkzLabelPoints (A,B,C,A',B',C',O)
+ \tkzDrawArc[delta=0,->](O,A)(A')
\end{tikzpicture}
\end{Verbatim}
\end{minipage}
@@ -645,61 +607,68 @@ T.ApBpCp = z.O : rotation (math.pi/3,T.ABC)
z.Ap,z.Bp,z.Cp = get_points ( T.ApBpCp)
\end{tkzelements}
-\hspace{\fill}\begin{tikzpicture}
+\begin{center}
+\begin{tikzpicture}
\tkzGetNodes
\tkzDrawPolygons(A,B,C A',B',C' A,B,E,F A',B',E',F')
\tkzDrawPoints (A,B,C,A',B',C',O)
- \tkzLabelPoints (A,B,C,A',B',C',O)
+ \tkzLabelPoints (A,B,C,A',B',C',O)
\begin{scope}
\tkzDrawArc[delta=0,->,dashed,red](O,A)(A')
\tkzDrawSegments[dashed,red](O,A O,A')
\end{scope}
-
\end{tikzpicture}
+\end{center}
\end{minipage}
% subsubsection object_rotation (end)
-\subsubsection{Object \Imeth{point}{symmetry}} % (fold)
+\subsubsection{Method \Imeth{point}{symmetry}} % (fold)
\label{ssub:object_symmetry}
+
+Example of the symmetry of an object
+
+
\begin{minipage}{.5\textwidth}
\begin{Verbatim}
\begin{tkzelements}
- z.a = point: new(0,-1)
- z.b = point: new(2, 0)
- L.ab = line : new (z.a,z.b)
- C.ab = circle : new (z.a,z.b)
- z.o = point: new(1,1)
- z.ap,z.bp = get_points (z.o: symmetry (C.ab))
+ z.a = point: new(0,-1)
+ z.b = point: new(2, 0)
+ L.ab = line : new (z.a,z.b)
+ C.ab = circle : new (z.a,z.b)
+ z.o = point: new(1,1)
+ z.ap,z.bp = get_points (z.o: symmetry (C.ab))
\end{tkzelements}
-
\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircles(a,b a',b')
-\tkzDrawLines(a,a' b,b')
-\tkzDrawLines[red](a,b a',b')
-\tkzDrawPoints(a,a',b,b',o)
-\tkzLabelPoints(a,a',b,b',o)
+ \tkzGetNodes
+ \tkzDrawCircles(a,b a',b')
+ \tkzDrawLines(a,a' b,b')
+ \tkzDrawLines[red](a,b a',b')
+ \tkzDrawPoints(a,a',b,b',o)
+ \tkzLabelPoints(a,a',b,b',o)
\end{tikzpicture}
\end{Verbatim}
\end{minipage}
\begin{minipage}{.5\textwidth}
\begin{tkzelements}
- z.a = point: new(0, -1)
- z.b = point: new(2, 0)
- L.ab = line : new (z.a,z.b)
- C.ab = circle : new (z.a,z.b)
- z.o = point: new(1, 1)
- z.ap,z.bp = get_points (z.o: symmetry (C.ab))
+ z.a = point: new(0, -1)
+ z.b = point: new(2, 0)
+ L.ab = line : new (z.a,z.b)
+ C.ab = circle : new (z.a,z.b)
+ z.o = point: new(1, 1)
+ z.ap,z.bp = get_points (z.o: symmetry (C.ab))
\end{tkzelements}
-\hspace{\fill}\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircles(a,b a',b')
-\tkzDrawLines(a,a' b,b')
-\tkzDrawLines[red](a,b a',b')
-\tkzDrawPoints(a,a',b,b',o)
-\tkzLabelPoints(a,a',b,b',o)
-\end{tikzpicture}
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawCircles(a,b a',b')
+ \tkzDrawLines(a,a' b,b')
+ \tkzDrawLines[red](a,b a',b')
+ \tkzDrawPoints(a,a',b,b',o)
+ \tkzLabelPoints(a,a',b,b',o)
+ \end{tikzpicture}
+\end{center}
+
\end{minipage}
% subsubsection object_symmetry (end)
% subsection methods_of_the_class_point (end)
diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-regular.tex b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-regular.tex
index 3ec9e777a6..98b6ac3610 100644
--- a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-regular.tex
+++ b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-regular.tex
@@ -94,7 +94,7 @@ z.H = RP.five.proj
\midrule
\textbf{Points} &\\
\midrule
-\Imeth{regular\_polygon}{name (string)} & Refer to\ref{ssub:pentagon} \\
+\Imeth{regular\_polygon}{name (string)} & [\ref{ssub:pentagon}] \\
\bottomrule %
\end{tabular}
\egroup
diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-triangle.tex b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-triangle.tex
index 80b711e46f..b144ed3e01 100644
--- a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-triangle.tex
+++ b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-triangle.tex
@@ -21,12 +21,13 @@ The triangle object is created using the \Imeth{triangle}{new} method, for examp
\Iattr{triangle}{pb} &T.ABC.pb \\
\Iattr{triangle}{pc} &T.ABC.pc \\
\Iattr{triangle}{type} & 'triangle' \\
-\Iattr{triangle}{circumcenter} & T.ABC.circumcenter\\
+\Iattr{triangle}{circumcenter} & T.ABC.circumcenter; [\ref{ssub:example_triangle_attributes}
+]\\
\Iattr{triangle}{centroid} &T.ABC.centroid\\
\Iattr{triangle}{incenter} &T.ABC.incenter\\
\Iattr{triangle}{orthocenter} &T.ABC.orthocenter\\
\Iattr{triangle}{eulercenter} &T.ABC.eulercenter \\
-\Iattr{triangle}{spiekercenter} &T.ABC.spiekercenter \\
+\Iattr{triangle}{spiekercenter} &T.ABC.spiekercenter; [\ref{ssub:example_apollonius_circle}] \\
\Iattr{triangle}{a}& It's the length of the side opposite the first vertex \\
\Iattr{triangle}{b}& It's the length of the side opposite the second verte\\
\Iattr{triangle}{c}& It's the length of the side opposite the third vertex \\
@@ -116,7 +117,7 @@ The triangle object is created using the \Imeth{triangle}{new} method, for examp
\begin{tkzelements}
z.A = point: new (0 , 0)
z.B = point: new (4 , 0)
- z.C = point: new (0 , 3)
+ z.C = point: new (1 , 3)
T.ABC = triangle : new (z.A,z.B,z.C)
z.O = T.ABC.circumcenter
z.I = T.ABC.incenter
@@ -129,18 +130,22 @@ The triangle object is created using the \Imeth{triangle}{new} method, for examp
beta = T.ABC.beta
gamma = T.ABC.gamma
\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
- \tkzGetNodes
- \tkzDrawPolygon(A,B,C)
- \tkzDrawPoints(A,B,C,O,G,I,H)
- \tkzLabelPoints[below](A,B,O,G,I)
- \tkzLabelPoints[above right](H,C)
- \tkzDrawCircles(O,A)
- \tkzLabelSegment[sloped](A,B){\tkzUseLua{c}}
- \tkzLabelSegment[sloped,above](B,C){\tkzUseLua{a}}
-\end{tikzpicture}
-\hspace*{\fill}
+
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygon(A,B,C)
+ \tkzDrawPoints(A,B,C,O,G,I,H)
+ \tkzDrawCircles(O,A)
+ \tkzLabelPoints[below](A,B,O,G,I)
+ \tkzLabelPoints[above right](H)
+ \tkzLabelPoints[above](C)
+ \tkzLabelSegment[sloped](A,B){\tkzUseLua{c}}
+ \tkzLabelSegment[sloped,above](B,C){\tkzUseLua{a}}
+ \end{tikzpicture}
+\end{center}
+
+
\end{minipage}
% subsubsection example_triangle_attributes (end)
@@ -155,64 +160,95 @@ The triangle object is created using the \Imeth{triangle}{new} method, for examp
\small
\begin{minipage}{\textwidth}
\captionof{table}{triangle methods.}\label{triangle:met}
-\begin{tabular}{ll}
+\begin{tabular}{lll}
\toprule
-\textbf{Methods} & \textbf{Comments} \\
+\textbf{Methods} & \textbf{Comments} & \\
\midrule
-\Imeth{triangle}{new} (a, b ,c) & |T.ABC = triangle : new (z.A,z.B,z.C)| \\
- ... & |T| or |T.name| with what you want for name, is possible.\\
+\Imeth{triangle}{new} (a, b ,c) & |T.ABC = triangle : new (z.A,z.B,z.C)|& [\ref{sub:triangle_attributes_angles}] \footnote{|T| or |T.name| with what you want for name, is possible.} \\
\midrule
- \textbf{Points} &\\
+ \textbf{Points} &&\\
\midrule
-\Imeth{triangle}{lemoine\_point ()} & |T.ABC : lemoine_point ()| intersection os the symmedians\\
-\Imeth{triangle}{symmedian\_point ()} & Lemoine point or the Grebe point \\
-\Imeth{triangle}{bevan\_point ()} & Circumcenter of the excentral triangle\\
-\Imeth{triangle}{mittenpunkt\_point ()} & Symmedian point of the excentral triangle\\
-\Imeth{triangle}{gergonne\_point ()} & Intersection of the three cevians that lead to the contact points \\
-\Imeth{triangle}{nagel\_point () } & Intersection of the three cevians that lead to the extouch points\\
-\Imeth{triangle}{feuerbach\_point () } & The point at which the incircle and euler circle are tangent. \\
-\Imeth{triangle}{spieker\_center ()} & Incenter of the medial triangle \\
-\Imeth{triangle}{barycenter (ka,kb,kc)} & |T.ABC: barycenter (2,1,1)| barycenter of |({A,2},{B,1},{C,1}) |\\
-\Imeth{triangle}{base (u,v) } & |z.D = T.ABC: base(1,1)| \tkzar ABDC is a parallelogram \\
-\Imeth{triangle}{projection (p) } & Projection of a point on the sides \\
-\Imeth{triangle}{euler\_points () } & Euler points of euler circle \\
-\Imeth{triangle}{nine\_points () } & 9 Points of the euler circle \\
-\Imeth{triangle}{parallelogram ()} & |z.D = T.ABC : parallelogram ()| \tkzar ABCD is a parallelogram\\
+\Imeth{triangle}{lemoine\_point ()} & |T.ABC : lemoine_point ()| intersection of the symmedians & [\ref{ssub:method_imeth_line_isosceles}]\\
+
+\Imeth{triangle}{symmedian\_point ()} & Lemoine point or the Grebe point& [\ref{ssub:method_imeth_triangle_symmedial}] \\
+
+\Imeth{triangle}{lemoine\_point ()} & symmedian point or the Grebe point& [\ref{ssub:method_imeth_triangle_symmedial}] \\
+
+\Imeth{triangle}{bevan\_point ()} & Circumcenter of the excentral triangle& [\ref{ssub:methods_imeth_triangle_bevan_circle_and_imeth_triangle_bevan_point}
+]\\
+
+\Imeth{triangle}{mittenpunkt\_point ()} & Symmedian point of the excentral triangle& [\ref{ssub:method_imeth_triangle_mittenpunkt}]\\
+
+\Imeth{triangle}{gergonne\_point ()} & Intersection of the three cevians that lead to the contact points& [\ref{ssub:gergonne_point}]\\
+
+\Imeth{triangle}{nagel\_point () } & Intersection of the three cevians that lead to the extouch points& [\ref{ssub:method_imeth_triangle_nagel__point}]\\
+
+\Imeth{triangle}{feuerbach\_point () } & The point at which the incircle and euler circle are tangent.& [\ref{ssub:method_imeth_triangle_feuerbach}]\\
+
+\Imeth{triangle}{spieker\_center ()} & Incenter of the medial triangle& [\ref{sub:apollonius_circle_v1_with_inversion}]\\
+
+\Imeth{triangle}{barycentric (ka,kb,kc)} & |T.ABC: barycentric (2,1,1)| barycenter of |({A,2},{B,1},{C,1}) |&Remark \footnote{The function \code{barycenter} is used to obtain the barycentre for any number of points }\\
+
+\Imeth{triangle}{base (u,v) } & |z.D = T.ABC: base(1,1)| \tkzar ABDC is a parallelogram & [\ref{ssub:method_imeth_triangle_base}] \\
+\Imeth{triangle}{trilinear (u,v,w) } & |z.D = T.ABC: trilinear(1,1,1)| \tkzar ABDC parallelogram & [\ref{ssub:method_imeth_triangle_trilinear}] \\
+
+\Imeth{triangle}{projection (p) } & Projection of a point on the sides &[\ref{sub:euler_relation}; \ref{ssub:method_imeth_triangle_projection}]\\
+
+\Imeth{triangle}{euler\_points () } & Euler points of euler circle & [\ref{ssub:method_imeth_triangle_euler__points}] \\
+
+\Imeth{triangle}{nine\_points () } & 9 Points of the euler circle & [\ref{ssub:method_imeth_triangle_nine__points}] \\
+
+\Imeth{triangle}{parallelogram ()} & |z.D = T.ABC : parallelogram ()| \tkzar ABCD parallelogram& [\ref{sub:director_circle}]\\
\midrule
- \textbf{Lines} &\\
+ \textbf{Lines} &&\\
\midrule
\Imeth{triangle}{altitude (n) } & |L.AHa = T.ABC : altitude () | n empty or 0 line from $A$
-\footnote{|z.Ha = L.AHa.pb| recovers the common point of the opposite side and altitude. The method |orthic| is usefull.}\\
-\Imeth{triangle}{bisector (n) } & |L.Bb = T.ABC : bisector (1) | n = 1 line from $B$ \footnote{|_,z.b = get_points(L.Bb)| recovers the common point of the opposite side and bisector. }\\
-\Imeth{triangle}{bisector\_ext(n) } & n=2 line from the third vertex.\\
-\Imeth{triangle}{symmedian\_line (n)} & Cevian with respect to Lemoine point. \\
+\footnote{|z.Ha = L.AHa.pb| recovers the common point of the opposite side and altitude. The method |orthic| is usefull. If you don't need to use the triangle object several times, you can obtain a bisector or a altitude with the function |altitude (z.A,z.B,z.C)| ; [ \ref{misc}]}& [\ref{ssub:method_imeth_triangle_altitude} ]\\
+
+\Imeth{triangle}{bisector (n) } & |L.Bb = T.ABC : bisector (1) | n = 1 line from $B$ \footnote{|_,z.b = get_points(L.Bb)| recovers the common point of the opposite side and bisector. If you don't need to use the triangle object several times, you can obtain a bisector with the function |bisector (z.A,z.B,z.C)| [\ref{misc}]}& [\ref{ssub:method_imeth_triangle_bisector}]\\
+
+\Imeth{triangle}{bisector\_ext(n) } & n=2 line from the third vertex.& [\ref{sub:harmonic_division_and_bisector}]\\
+
+\Imeth{triangle}{symmedian\_line (n)} & Cevian with respect to Lemoine point.& [\ref{ssub:method_imeth_triangle_symmedial} ; \ref{ssub:method_imeth_line_isosceles}]\\
+
\Imeth{triangle}{euler\_line () } & the line through $N$ ,$G$, $H$ and $O$ if the triangle is not equilateral
-\footnote{N center of nine points circle, G centroid, H orthocenter , O circum center } \\
-\Imeth{triangle}{antiparallel(pt,n)} & n=0 antiparallel through pt to $(BC)$, n=1 to $(AC)$ etc.\\
+\footnote{N center of nine points circle, G centroid, H orthocenter , O circum center } & [\ref{sub:hexagram}]\\
+
+\Imeth{triangle}{antiparallel(pt,n)} & n=0 antiparallel through pt to $(BC)$, n=1 to $(AC)$ etc.& [\ref{sub:antiparallel_through_lemoine_point}]\\
\midrule
- \textbf{Circles} &\\
+ \textbf{Circles} &&\\
\midrule
\Imeth{triangle}{euler\_circle ()} & C.|NP = T.ABC : euler_circle ()| \tkzar $N$ euler point
- \footnote{ The midpoint of each side of the triangle, the foot of each altitude, the midpoint of the line segment from each vertex of the triangle to the orthocenter.} \\
-\Imeth{triangle}{circum\_circle ()} & |C.OA = T.ABC : circum ()| Triangle's circumscribed circle \\
-\Imeth{triangle}{in\_circle ()} & Inscribed circle of the triangle\\
-\Imeth{triangle}{ex\_circle (n)} & Circle tangent to the three sides of the triangle ; n =1 swap ; n=2 2 swap \\
-\Imeth{triangle}{first\_lemoine\_circle ()} & The center is the midpoint between Lemoine point and the circumcenter.\footnote{
-Through the Lemoine point draw lines parallel to the triangle's sides. The points where the parallel lines intersect the sides of ABC
- then lie on a circle known as the first Lemoine circle. } \\
-\Imeth{triangle}{second\_lemoine\_circle ()} & Refer to example \ref{sub:antiparallel_through_lemoine_point}\\
-\Imeth{triangle}{spieker\_circle ()} & The incircle of the medial triangle\\
-\Imeth{triangle}{cevian\_circle ()} & Circumscribed circle of a Cevian triangle Refer to (\ref{ssub:method_imeth_triangle_cevian})\\
-\Imeth{triangle}{pedal\_circle ()} & Circumscribed circle of the podar triangle Refer to (\ref{ssub:method_imeth_triangle_pedal})\\
-\Imeth{triangle}{conway\_circle ()} & Circumscribed circle of Conway points Refer to (\ref{ssub:method_imeth_triangle_conway})\\
+ \footnote{ The midpoint of each side of the triangle, the foot of each altitude, the midpoint of the line segment from each vertex of the triangle to the orthocenter.} & [\ref{ssub:method_imeth_triangle_euler_circle}]\\
+
+\Imeth{triangle}{circum\_circle ()} & |C.OA = T.ABC : circum ()| Triangle's circumscribed circle & [\ref{ssub:method_imeth_triangle_circum_circle}] \\
+
+\Imeth{triangle}{in\_circle ()} & Inscribed circle of the triangle&
+[\ref{ssub:method_imeth_triangle_in_circle}]\\
+
+\Imeth{triangle}{ex\_circle (n)} & Circle tangent to the three sides of the triangle ; n =1 swap ; n=2 2 swap & [\ref{ssub:method_imeth_triangle_ex__circle}]\\
+
+\Imeth{triangle}{first\_lemoine\_circle ()} & The center is the midpoint between Lemoine point and the circumcenter.\footnote{Through the Lemoine point draw lines parallel to the triangle's sides. The points where the parallel lines intersect the sides of ABC then lie on a circle known as the first Lemoine circle. }& [\ref{sub:first_and_second_lemoine_circles}
+] \\
+
+\Imeth{triangle}{second\_lemoine\_circle ()} & & \ref{sub:antiparallel_through_lemoine_point}] \\
+
+\Imeth{triangle}{spieker\_circle ()} & The incircle of the medial triangle& [\ref{ssub:method_imeth_triangle_spieker__circle}]\\
+
+\Imeth{triangle}{bevan\_circle ()} & Circumscribed circle of a excentral triangle & [\ref{ssub:methods_imeth_triangle_bevan_circle_and_imeth_triangle_bevan_point}]\\
+
+\Imeth{triangle}{cevian\_circle ()} & Circumscribed circle of a Cevian triangle & [\ref{ssub:method_imeth_triangle_cevian}]\\
+
+\Imeth{triangle}{symmedial\_circle ()} & Circumscribed circle of a symmedial triangle & [\ref{ssub:method_imeth_triangle_symmedial}]\\
+
+\Imeth{triangle}{pedal\_circle ()} & Circumscribed circle of the podar triangle & [\ref{ssub:method_imeth_triangle_pedal}]\\
+
+\Imeth{triangle}{conway\_circle ()} & Circumscribed circle of Conway points & [\ref{ssub:method_imeth_triangle_conway}]\\
\bottomrule
\end{tabular}
\end{minipage}
\egroup
-Remark: If you don't need to use the triangle object several times, you can obtain a bisector or a altitude with the next functions
-
-|bisector (z.A,z.B,z.C)| and |altitude (z.A,z.B,z.C)| Refer to (\ref{misc})
\clearpage\newpage
\bgroup
@@ -227,29 +263,48 @@ Remark: If you don't need to use the triangle object several times, you can obta
\midrule
\textbf{Triangles} &\\
\midrule
-\Imeth{triangle}{orthic ()} & |T = T.ABC : orthic ()| triangle joining the feet of the altitudes \\
-\Imeth{triangle}{medial ()} & |T = T.ABC : medial ()| triangle with vertices at the midpoints\\
-\Imeth{triangle}{incentral ()} & Cevian triangle of the triangle with respect to its incenter \\
-\Imeth{triangle}{excentral () } & Triangle with vertices corresponding to the excenters \\
-\Imeth{triangle}{extouch ()} & Triangle formed by the points of tangency with the excircles \\
-\Imeth{triangle}{intouch () } & Contact triangle formed by the points of tangency of the incircle \\
-\Imeth{triangle}{tangential ()} & Triangle formed by the lines tangent to the circumcircle at the vertices\\
-\Imeth{triangle}{feuerbach ()} & Triangle formed by the points of tangency of the euler circle with the excircles\\
-\Imeth{triangle}{anti () }& Anticomplementary Triangle The given triangle is its medial triangle. \\
-\Imeth{triangle}{cevian (pt)} & Triangle formed with the endpoints of the three cevians with respect to |pt|. refer to (\ref{ssub:method_imeth_triangle_cevian})\\
-\Imeth{triangle}{pedal (pt)} & Triangle formed by projections onto the sides of |pt| Refer to \ref{ssub:method_imeth_triangle_pedal}\\
-\Imeth{triangle}{symmedian ()} & Triangle formed with the intersection points of the symmedians. \\
-\Imeth{triangle}{euler ()} & Triangle formed with the euler points \\
+\Imeth{triangle}{orthic ()} & |T = T.ABC : orthic ()| triangle joining the feet of the altitudes ; [\ref{ssub:method_imeth_triangle_altitude}] \\
+
+\Imeth{triangle}{medial ()} & |T = T.ABC : medial ()| triangle with vertices at the midpoints; [\ref{ssub:method_imeth_triangle_medial} ; \ref{sub:nine_points} ; \ref{ssub:method_imeth_triangle_symmedial}]\\
+
+\Imeth{triangle}{incentral ()}& Cevian triangle of the triangle with respect to its incenter. [\ref{ssub:method_incentral}] \\
+
+\Imeth{triangle}{excentral ()} & Triangle with vertices corresponding to the excenters. [\ref{ssub:method_imeth_triangle_feuerbach} ] \\
+
+\Imeth{triangle}{extouch ()} & Triangle formed by the points of tangency with the excircles. [\ref{sub:excircles} ] \\
+
+\Imeth{triangle}{intouch () } & Contact triangle formed by the points of tangency of the incircle [\ref{ssub:gergonne_point}]\\
+
+\Imeth{triangle}{contact () } & contact = intouch ; [
+\ref{ssub:gergonne_point}] \\
+
+\Imeth{triangle}{tangential ()} & Triangle formed by the lines tangent to the circumcircle at the vertices; [\ref{ssub:method_imeth_triangle_tangential}]\\
+
+\Imeth{triangle}{feuerbach ()} & Triangle formed by the points of tangency of the euler circle with the excircles; [\ref{ssub:method_imeth_triangle_feuerbach}]\\
+
+\Imeth{triangle}{anti () }& Anticomplementary Triangle The given triangle is its medial triangle.\footnote{You can use \tkzname{similar} instead of \tkzname{anti}.} ; [\ref{ssub:method_imeth_triangle_anti}] \\
+
+\Imeth{triangle}{cevian (pt)} & Triangle formed with the endpoints of the three cevians with respect to |pt|; [\ref{ssub:method_imeth_triangle_cevian}] \\
+
+\Imeth{triangle}{pedal (pt)} & Triangle formed by projections onto the sides of |pt| [\ref{ssub:method_imeth_triangle_pedal}]\\
+
+\Imeth{triangle}{symmedial ()} & Triangle formed with the intersection points of the symmedians ; [\ref{ssub:method_imeth_triangle_symmedial}] \\
+
+\Imeth{triangle}{euler ()} & Triangle formed with the euler points ; [\ref{ssub:method_imeth_triangle_euler__points}] \\
+
+\Imeth{triangle}{similar ()} & Triangle formed with straight lines parallel to the sides [\ref{ssub:method_imeth_triangle_similar}] \\
\midrule
\textbf{Ellipses} &\\
-\Imeth{triangle}{steiner\_inellipse ()} & Refer to ex. (\ref{ssub:steiner_inellipse_and_circumellipse})\\
-\Imeth{triangle}{steiner\_circumellipse ()} & Refer to ex. (\ref{ssub:steiner_inellipse_and_circumellipse})\\
-\Imeth{triangle}{euler\_ellipse ()} & Refer to ex. (\ref{sub:euler_ellipse})\\
+\Imeth{triangle}{steiner\_inellipse ()} & [ex. \ref{ssub:steiner_inellipse_and_circumellipse}] \\
+
+\Imeth{triangle}{steiner\_circumellipse ()} & [ex. \ref{ssub:steiner_inellipse_and_circumellipse}] \\
+
+\Imeth{triangle}{euler\_ellipse ()} & [ex. (\ref{sub:euler_ellipse}]\\
\midrule
\textbf{Miscellaneous} &\\
\midrule
\Imeth{triangle}{area ()} & $ \mathcal{A}$| = T.ABC: area ()|\\
-\Imeth{triangle}{barycentric\_coordinates (pt)} & Triples of numbers corresponding to masses placed at the vertices\\
+\Imeth{triangle}{barycentric\_coordinates(pt)}& Triples of numbers corresponding to masses placed at the vertices\\
\Imeth{triangle}{in\_out (pt)} & Boolean. Test if |pt| is inside the triangle\\
\Imeth{triangle}{check\_equilateral ()} & Boolean. Test if the triangle is equilateral\\
\bottomrule
@@ -259,68 +314,1146 @@ Remark: If you don't need to use the triangle object several times, you can obta
\egroup
% subsubsection methods_of_the_class_triangle (end)
+\subsubsection{Gergonne point} % (fold)
+\label{ssub:gergonne_point}
+
+In this example, some usefull methods are applied like \Imeth{triangle}{intouch} or \Imeth{triangle}{contact}.
+The points of contact of the inscribed circle (incircle) with the triangle in question are obtained.
+
+\begin{minipage}[t]{.5\textwidth}\vspace{0pt}%
+\begin{Verbatim}
+\begin{tkzelements}
+z.a = point: new(1,0)
+z.b = point: new(6,2)
+z.c = point: new(2,5)
+T = triangle : new (z.a,z.b,z.c)
+z.g = T : gergonne_point ()
+z.i = T.incenter
+z.ta,z.tb,z.tc = get_points (T : intouch ())
+\end{tkzelements}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygons(a,b,c)
+ \tkzDrawSegments (a,ta b,tb c,tc)
+ \tkzDrawCircle(i,ta)
+ \tkzDrawPoints(a,b,c,g,ta,tb,tc)
+ \tkzLabelPoints(a,b,tc)
+ \tkzLabelPoints[above](c,ta)
+ \tkzLabelPoints[above left](tb)
+ \end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}[t]{.5\textwidth}\vspace{0pt}%
+\begin{tkzelements}
+z.a = point: new(1,0)
+z.b = point: new(6,2)
+z.c = point: new(2,5)
+T = triangle : new (z.a,z.b,z.c)
+z.g = T : gergonne_point ()
+z.i = T.incenter
+z.ta,z.tb,z.tc = get_points (T : intouch ())
+\end{tkzelements}
+
+
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygons(a,b,c)
+ \tkzDrawSegments (a,ta b,tb c,tc)
+ \tkzDrawCircle(i,ta)
+ \tkzDrawPoints(a,b,c,g,ta,tb,tc)
+ \tkzLabelPoints(a,b,tc)
+ \tkzLabelPoints[above](c,ta)
+ \tkzLabelPoints[above left](tb)
+ \end{tikzpicture}
+\end{center}
+
+\end{minipage}
+% subsubsection gergonne_point (end)
+
+\subsubsection{Method \Imeth{triangle}{Nagel\_point}} % (fold)
+\label{ssub:method_imeth_triangle_nagel__point}
+
+Let $E_a$ be the point at which the $J_a$-excircle meets the side $(BC)$ of a triangle $ABC$, and define $E_b$ and $E_c$ similarly. Then the lines $A,E_a$, $B,E_b$ and $C,E_c$ concur in the Nagel point $Na$.
+
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+ scale = .7
+ z.A = point : new (0,0)
+ z.B = point : new (3.6,0)
+ z.C = point : new (2.8,4)
+ T.ABC = triangle: new (z.A,z.B,z.C)
+ z.Na = T.ABC : nagel_point ()
+ z.J_a,z.J_b,
+ z.J_c = get_points (T.ABC : excentral ())
+ z.E_a,z.E_b,
+ z.E_c = get_points (T.ABC : extouch ())
+\end{tkzelements}
+\begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPoints(A,B,C)
+ \tkzDrawPoints[red,size=2](J_a,J_b,J_c)
+ \tkzClipBB
+ \tkzDrawLines[add=1.75 and 1.75,teal](A,B A,C B,C)
+ \tkzDrawCircles(J_a,E_a J_b,E_b J_c,E_c)
+ \tkzDrawSegments[dashed,gray](J_a,E_a J_b,E_b J_c,E_c)
+ \tkzDrawSegments[orange](A,E_a B,E_b C,E_c)
+ \tkzDrawPoints[red,size=2](Na,E_a,E_b,E_c)
+ \tkzLabelPoints(A,B,Na)
+ \tkzLabelPoints(E_c,J_a,J_b,J_c)
+ \tkzLabelPoints[above](E_a,E_b,C)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+\begin{tkzelements}
+ scale = .7
+ z.A = point : new (0,0)
+ z.B = point : new (3.6,0)
+ z.C = point : new (2.8,4)
+ T.ABC = triangle: new (z.A,z.B,z.C)
+ z.Na = T.ABC : nagel_point ()
+ z.J_a,z.J_b,
+ z.J_c = get_points (T.ABC : excentral ())
+ z.E_a,z.E_b,
+ z.E_c = get_points (T.ABC : extouch ())
+\end{tkzelements}
+
+\begin{center}
+\begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPoints(A,B,C)
+ \tkzDrawPoints[red,size=2](J_a,J_b,J_c)
+ \tkzClipBB
+ \tkzDrawLines[add=1.75 and 1.75,teal](A,B A,C B,C)
+ \tkzDrawCircles(J_a,E_a J_b,E_b J_c,E_c)
+ \tkzDrawSegments[dashed,gray](J_a,E_a J_b,E_b J_c,E_c)
+ \tkzDrawSegments[orange](A,E_a B,E_b C,E_c)
+ \tkzDrawPoints[red,size=2](Na,E_a,E_b,E_c)
+ \tkzLabelPoints(A,B,Na)
+ \tkzLabelPoints(E_c,J_a,J_b,J_c)
+ \tkzLabelPoints[above](E_a,E_b,C)
+\end{tikzpicture}
+\end{center}
+
+\end{minipage}
+% subsubsection method_imeth_triangle_nagel__point (end)
+
+
+\subsubsection{Method \Imeth{triangle}{mittenpunkt}} % (fold)
+\label{ssub:method_imeth_triangle_mittenpunkt}
+
+The Mittenpunkt is the symmedian point of the excentral triangle. The mittenpunkt (also called the middlespoint) of a triangle is the symmedian point of the excentral triangle, i.e., the point of concurrence of the lines from the excenters through the corresponding triangle side midpoints.
+[ \href{https://mathworld.wolfram.com/Mittenpunkt.html}{Weisstein, Eric W. "Mittenpunkt." From MathWorld--A Wolfram Web Resource.}]
+
+\vspace{6pt}
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+ scale = 1
+ z.A = point : new ( 0 , 0 )
+ z.B = point : new ( 6 , 0 )
+ z.C = point : new ( 4 , 6 )
+ T = triangle : new (z.A,z.B,z.C)
+ z.Ma,
+ z.Mb,
+ z.Mc = get_points (T : medial ())
+ z.Ia,z.Ib,z.Ic = get_points(T : excentral ())
+ z.Mi = T : mittenpunkt_point ()
+ T.int = T : extouch ()
+ z.Ta,z.Tb,z.Tc = get_points(T.int)
+\end{tkzelements}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+\begin{tkzelements}
+ scale = 1
+ z.A = point : new ( 0 , 0 )
+ z.B = point : new ( 6 , 0 )
+ z.C = point : new ( 4 , 6 )
+ T = triangle : new (z.A,z.B,z.C)
+ z.Ma,
+ z.Mb,
+ z.Mc = get_points (T : medial ())
+ z.Ia,z.Ib,z.Ic = get_points(T : excentral ())
+ z.Mi = T : mittenpunkt_point ()
+ T.int = T : extouch ()
+ z.Ta,z.Tb,z.Tc = get_points(T.int)
+\end{tkzelements}
+\begin{center}
+ \begin{tikzpicture}[scale=.5]
+ \tkzGetNodes
+ \tkzDrawPolygons[](A,B,C Ma,Mb,Mc)
+ \tkzDrawPoints(Ma,Mb,Mc,Ia,Ib,Ic)
+ \tkzDrawPoints[red](Ta,Tb,Tc)
+ \tkzLabelPoints[below](Ib)
+ \tkzLabelPoints[above left](Ia,Ic)
+ \tkzClipBB
+ \tkzDrawLines[add=0 and 1](Ia,Ma Ib,Mb Ic,Mc)
+ \tkzDrawLines[add=1 and 1](A,B A,C B,C)
+ \tkzDrawCircles[red](Ia,Ta Ib,Tb Ic,Tc)
+ \tkzDrawPoints(B,C,A,Mi) %
+ \tkzLabelPoints(B,A)
+ \tkzLabelPoints[above](C,Mi)
+ \end{tikzpicture}
+\end{center}
+\end{minipage}
+
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tikzpicture}[scale=.5]
+ \tkzGetNodes
+ \tkzDrawPolygons[](A,B,C Ma,Mb,Mc)
+ \tkzDrawPoints(Ma,Mb,Mc,Ia,Ib,Ic)
+ \tkzDrawPoints[red](Ta,Tb,Tc)
+ \tkzLabelPoints[below](Ib)
+ \tkzLabelPoints[above left](Ia,Ic)
+ \tkzClipBB
+ \tkzDrawLines[add=0 and 1](Ia,Ma Ib,Mb Ic,Mc)
+ \tkzDrawLines[add=1 and 1](A,B A,C B,C)
+ \tkzDrawCircles[red](Ia,Ta Ib,Tb Ic,Tc)
+ \tkzDrawPoints(B,C,A,Mi)
+ \tkzLabelPoints(B,A)
+ \tkzLabelPoints[above](C,Mi)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+
+
+% subsubsection method_imeth_triangle_mittenpunkt (end)
+
+\subsubsection{Method \Imeth{triangle}{projection}} % (fold)
+\label{ssub:method_imeth_triangle_projection}
+
+This involves obtaining the projections of a point onto the sides of a triangle. In the following example, we are going to find the projections of a centre of an exinscribed circle.
+
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+z.A = point: new (0 , 0)
+z.B = point: new (5 , 0)
+z.C = point: new (-.4 , 4)
+T.ABC = triangle: new (z.A,z.B,z.C)
+z.J,_ = get_points(T.ABC: ex_circle (2))
+z.X ,
+z.Y,
+z.Z = T.ABC : projection (z.J)
+\end{tkzelements}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+\begin{tkzelements}
+z.A = point: new (0 , 0)
+z.B = point: new (5 , 0)
+z.C = point: new (-.4 , 4)
+T.ABC = triangle: new (z.A,z.B,z.C)
+z.J,_ = get_points(T.ABC: ex_circle (2))
+z.X ,
+z.Y,
+z.Z = T.ABC : projection (z.J)
+\end{tkzelements}
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygon(A,B,C)
+ \tkzDrawArc(J,X)(Y)
+ \tkzDrawSegments[blue](J,X J,Y J,Z C,Y C,X)
+ \tkzDrawPoints(A,B,C,J,X,Y,Z)
+ \tkzLabelPoints(J,X,Y)
+ \tkzLabelPoints[above](C,B,Z)
+ \tkzLabelPoints[left](A)
+ \tkzMarkRightAngles[fill=gray!20,opacity=.4](A,Z,J A,Y,J J,X,B)
+ \end{tikzpicture}
+\end{center}
+\end{minipage}
+
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygon(A,B,C)
+ \tkzDrawArc(J,X)(Y)
+ \tkzDrawSegments[blue](J,X J,Y J,Z C,Y C,X)
+ \tkzDrawPoints(A,B,C,J,X,Y,Z)
+ \tkzLabelPoints(J,X,Y)
+ \tkzLabelPoints[above](C,B,Z)
+ \tkzLabelPoints[left](A)
+ \tkzMarkRightAngles[fill=gray!20,opacity=.4](A,Z,J A,Y,J J,X,B)
+ \end{tikzpicture}
+\end{center}
+\end{Verbatim}
+\end{minipage}
+
+% subsubsection method_imeth_triangle_projection (end)
+
+\subsubsection{Method \Imeth{triangle}{trilinear}} % (fold)
+\label{ssub:method_imeth_triangle_trilinear}
+
+Given a reference triangle $ABC$, the trilinear coordinates of a point $P$ with respect to $ABC$ are an ordered triple of numbers, each of which is proportional to the directed distance from $P$ to one of the side lines. Trilinear coordinates are denoted alpha:beta:gamma or (alpha,beta,gamma) and also are known as homogeneous coordinates or "trilinears." Trilinear coordinates were introduced by Plücker in 1835.
+[\href{https://mathworld.wolfram.com/TrilinearCoordinates.html}{Weisstein, Eric W. "Trilinear Coordinates." From MathWorld--A Wolfram Web Resource.}]
+
+\vspace{6pt}
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+z.A = point : new ( 0 , 0 )
+z.B = point : new ( 4 , 0 )
+z.C = point : new ( 4 , 3 )
+T.ABC = triangle : new ( z.A , z.B , z.C )
+a = T.ABC.a
+b = T.ABC.b
+c = T.ABC.c
+z.Gp = T.ABC : trilinear (b*c,a*c,a*b)
+z.G = T.ABC : barycentric (1,1,1)
+\end{tkzelements}
+\begin{tikzpicture}
+\tkzGetNodes
+\tkzDrawPolygon(A,B,C)
+\tkzDrawPoints(A,B,C,G',G)
+\tkzLabelPoints(A,B,G')
+\tkzLabelPoints[above](C,G)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+\begin{tkzelements}
+z.A = point : new ( 0 , 0 )
+z.B = point : new ( 4 , 0 )
+z.C = point : new ( 4 , 3 )
+T.ABC = triangle : new ( z.A , z.B , z.C )
+a = T.ABC.a
+b = T.ABC.b
+c = T.ABC.c
+z.Gp = T.ABC : trilinear (b*c,a*c,a*b)
+z.G = T.ABC : barycentric (1,1,1)
+\end{tkzelements}
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygon(A,B,C)
+ \tkzDrawPoints(A,B,C,G',G)
+ \tkzLabelPoints(A,B,G')
+ \tkzLabelPoints[above](C,G)
+ \end{tikzpicture}
+\end{center}
+
+\end{minipage}
+% subsubsection method_imeth_triangle_trilinear (end)
+
+\subsubsection{Method \Imeth{triangle}{barycentric\_coordinates}} % (fold)
+\label{ssub:method_imeth_triangle_barycentric__coordinates}
+
+This method produces a triplet of coordinates which are the barycentric coordinates of a point as a function of the three points of a given triangle.
+
+\vspace{6pt}
+
+\begin{minipage}{.5\textwidth}
+ \begin{Verbatim}
+\begin{tkzelements}
+ z.A = point: new (1,1)
+ z.B = point: new (8,0)
+ z.C = point: new (2,5)
+ T = triangle: new(z.A,z.B,z.C)
+ z.G = T.centroid
+ ca,cb,cc = T : barycentric_coordinates (z.G)
+\end{tkzelements}
+\begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygons(A,B,C)
+ \tkzDrawPoints(A,B,C,G)
+ \tkzLabelPoints(A,B,C,G)
+ \tkzLabelPoint(G){\pmpn{\tkzUseLua{ca}}:\pmpn{\tkzUseLua{cb}}:\pmpn{\tkzUseLua{cc}}}
+\end{tikzpicture}
+ \end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+ \begin{tkzelements}
+ scale = .75
+ z.A = point: new (1,1)
+ z.B = point: new (8,0)
+ z.C = point: new (2,5)
+ T = triangle: new(z.A,z.B,z.C)
+ z.G = T.centroid
+ ca,cb,cc = T : barycentric_coordinates (z.G)
+ \end{tkzelements}
+ \begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygons(A,B,C)
+ \tkzDrawPoints(A,B,C,G)
+ \tkzLabelPoints(A,B)
+ \tkzLabelPoints[above](C) \tkzLabelPoint(G){\pmpn{\tkzUseLua{ca}}:\pmpn{\tkzUseLua{cb}}:\pmpn{\tkzUseLua{cc}}}
+ \end{tikzpicture}
+ \end{center}
+\end{minipage}
+
+% subsubsection method_imeth_triangle_barycentric__coordinates (end)
+
+\subsubsection{Method \Imeth{triangle}{base}} % (fold)
+\label{ssub:method_imeth_triangle_base}
+
+In the next example, the point $D$ is defined by $\overrightarrow{AD} = 1\cdot \overrightarrow{AB}+1\cdot \overrightarrow{AC}$.
+
+\vspace{6pt}
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+ scale = .75
+ z.A = point: new (1,1)
+ z.B = point: new (8,0)
+ z.C = point: new (0,5)
+ z.X = point: new (2,2)
+ T = triangle: new(z.A,z.B,z.C)
+ z.D = T : base (1,1)
+ z.E = T : base (.5,1)
+\end{tkzelements}
+\begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygons(A,B,D,C A,B,E,C)
+ \tkzDrawPoints(A,B,C,D,E)
+ \tkzLabelPoints(A,B)
+ \tkzLabelPoints[above](C,D,E)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+ \begin{tkzelements}
+ scale = .75
+ z.A = point: new (1,1)
+ z.B = point: new (8,0)
+ z.C = point: new (0,5)
+ z.X = point: new (2,2)
+ T = triangle: new(z.A,z.B,z.C)
+ z.D = T : base (1,1)
+ z.E = T : base (.5,1)
+ \end{tkzelements}
+ \begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygons(A,B,D,C A,B,E,C)
+ \tkzDrawPoints(A,B,C,D,E)
+ \tkzLabelPoints(A,B)
+ \tkzLabelPoints[above](C,D,E)
+ \end{tikzpicture}
+ \end{center}
+
+\end{minipage}
+
+% subsubsection method_imeth_triangle_base (end)
+
+
+\subsubsection{Method \Imeth{triangle}{euler\_points}} % (fold)
+\label{ssub:method_imeth_triangle_euler__points}
+
+The points $a$, $b$ and $c$ are the Euler points. They are the midpoints of the segments $AH$, $BH$ and $CH$.
+
+\begin{minipage}{.5\textwidth}
+ \begin{Verbatim}
+ \begin{tkzelements}
+ scale = 1.25
+ z.A = point: new (0,0)
+ z.B = point: new (5,0)
+ z.C = point: new (1,4)
+ T = triangle: new(z.A,z.B,z.C)
+ z.N = T.eulercenter
+ z.a,
+ z.b,
+ z.c = get_points (T : euler ())
+ z.H = T.orthocenter
+ T.orthic = T: orthic()
+ z.Ha,
+ z.Hb,
+ z.Hc = get_points (T.orthic)
+ \end{tkzelements}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygons[red](A,B,C)
+ \tkzDrawPolygons[cyan](a,b,c)
+ \tkzDrawCircle[purple](N,a)
+ \tkzDrawPoints(a,b,B,C,A,c,H)
+ \tkzDrawSegments[red](C,Hc B,Hb A,Ha)
+ \tkzLabelPoints(A,B,a,b,H)
+ \tkzLabelPoints[above](c,C)
+ \end{tikzpicture}
+ \end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+ \begin{tkzelements}
+ scale = 1.25
+ z.A = point: new (0,0)
+ z.B = point: new (5,0)
+ z.C = point: new (1,4)
+ T = triangle: new(z.A,z.B,z.C)
+ z.N = T.eulercenter
+ z.a,
+ z.b,
+ z.c = get_points (T : euler ())
+ z.H = T.orthocenter
+ T.orthic = T: orthic()
+ z.Ha,
+ z.Hb,
+ z.Hc = get_points (T.orthic)
+\end{tkzelements}
+
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygons[red](A,B,C)
+ \tkzDrawPolygons[cyan](a,b,c)
+ \tkzDrawCircle[purple](N,a)
+ \tkzDrawPoints(a,b,B,C,A,c,H)
+ \tkzDrawSegments[red](C,Hc B,Hb A,Ha)
+ \tkzLabelPoints(A,B,a,b,H)
+ \tkzLabelPoints[above](c,C)
+ \end{tikzpicture}
+\end{center}
+\end{minipage}
+% subsubsection method_imeth_triangle_euler__points (end)
+
+\subsubsection{Method \Imeth{triangle}{nine\_points}} % (fold)
+\label{ssub:method_imeth_triangle_nine__points}
+
+This method gives the nine main points belonging to the Euler circle: in order, first the midpoints of the sides of the triangle, then the feet of the altitudes and finally the three Euler points. Refer to the last example.
+In the next example, we look for the centre of gravity in two different ways: the first uses the \code{trilinear} method, the second the \code{barycentric} method.
+
+\vspace{6pt}
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+ scale = 1.5
+ z.A = point: new (0,0)
+ z.B = point: new (5,0)
+ z.C = point: new (1,4)
+ T = triangle: new(z.A,z.B,z.C)
+ z.N = T.eulercenter
+ z.e1,
+ z.e2,
+ z.e3,
+ z.e4,
+ z.e5,
+ z.e6,
+ z.e7,
+ z.e8,
+ z.e9 = T : nine_points ()
+\end{tkzelements}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+\begin{tkzelements}
+ scale = 1.5
+ z.A = point: new (0,0)
+ z.B = point: new (5,0)
+ z.C = point: new (1,4)
+ T = triangle: new(z.A,z.B,z.C)
+ z.N = T.eulercenter
+ z.e1,
+ z.e2,
+ z.e3,
+ z.e4,
+ z.e5,
+ z.e6,
+ z.e7,
+ z.e8,
+ z.e9 = T : nine_points ()
+\end{tkzelements}
+\begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygons[red](A,B,C)
+ \tkzDrawCircle[purple](N,e1)
+ \tkzDrawPoints(e1,e2,e3,e4,e5,e6,e7,e8,e9)
+ \tkzLabelPoints(e1,e2,e3,e4,e5,e6,e7,e8,e9)
+\end{tikzpicture}
+\end{minipage}
+
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygons[red](A,B,C)
+ \tkzDrawCircle[purple](N,e1)
+ \tkzDrawPoints(e1,e2,e3,e4,e5,e6,e7,e8,e9)
+ \tkzLabelPoints(e1,e2,e3,e4,e5,e6,e7,e8,e9)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+
+% subsubsection method_imeth_triangle_nine__points (end)
+
+\subsubsection{Method \Imeth{triangle}{altitude}} % (fold)
+\label{ssub:method_imeth_triangle_altitude}
+
+There are several methods to obtain one or more altitudes of a triangle. One possible method is the \Imeth{triangle}{orthic} method. This method allows for defining the \code{orthic} triangle whose vertices are the feet of the altitudes from each vertex. If only one altitude is needed, one can use the \code{altitude(n)} method. The numeric value $n$ can be $0$, $1$, or $2$. By default, if it is absent, it is considered to be $0$. Considering the triangle $ABC$, $n=0$ means no cyclic permutation of the vertices, and the altitude will be from the first point, here $A$. If $n=1$, the point trio $BCA$ is considered, and the altitude will be from $B$. For $n=2$, the altitude will be from $C$.
+
+\vspace{6pt}
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+ z.A = point: new (0,0)
+ z.B = point: new (5,0)
+ z.C = point: new (2,4)
+ T = triangle: new(z.A,z.B,z.C)
+ z.H = T.orthocenter
+ L.HA = T : altitude ()
+ L.HC = T :altitude (2)
+ z.Hc = L.HC.pb
+ z.Ha = L.HA.pb
+ z.a,z.b,z.c = get_points (T : orthic ())
+\end{tkzelements}
+\begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygon(A,B,C)
+ \tkzDrawPolygon[red](a,b,c)
+ \tkzDrawPoints(A,B,C,H)
+ \tkzDrawSegments[red](C,Hc A,Ha)
+ \tkzLabelPoints(A,B,H)
+ \tkzLabelPoints[font=\small](Hc)
+ \tkzLabelPoints[font=\small,above](Ha,C)
+ \tkzMarkRightAngles[fill = gray!30,opacity=.4](B,Hc,C A,Ha,C)
+ \end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+\begin{tkzelements}
+ z.A = point: new (0,0)
+ z.B = point: new (5,0)
+ z.C = point: new (2,4)
+ T = triangle: new(z.A,z.B,z.C)
+ z.H = T.orthocenter
+ L.HA = T : altitude ()
+ L.HC = T : altitude (2)
+ z.Hc = L.HC.pb
+ z.Ha = L.HA.pb
+ z.a,z.b,z.c = get_points (T : orthic ())
+\end{tkzelements}
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygon(A,B,C)
+ \tkzDrawPolygon[red](a,b,c)
+ \tkzDrawPoints(A,B,C,H)
+ \tkzDrawSegments[red](C,Hc A,Ha)
+ \tkzLabelPoints(A,B,H)
+ \tkzLabelPoints[font=\small](Hc)
+ \tkzLabelPoints[font=\small,above](Ha,C)
+ \tkzMarkRightAngles[fill = gray!30,opacity=.4](B,Hc,C A,Ha,C)
+ \end{tikzpicture}
+\end{center}
+
+\end{minipage}
+% subsubsection method_imeth_triangle_altitude (end)
+
+\subsubsection{Method \Imeth{triangle}{bisector}} % (fold)
+\label{ssub:method_imeth_triangle_bisector}
+
+There are several methods to obtain one or more bisectors of a triangle. One possible method is the \Imeth{triangle}{incentral} method. This method allows for defining the \code{incentral} triangle whose vertices are the feet of the bisectors from each vertex. If only one bisector is needed, one can use the \code{bisector(n)} method. The numeric value $n$ can be $0$, $1$, or $2$. By default, if it is absent, it is considered to be $0$. Considering the triangle $ABC$, $n=0$ means no cyclic permutation of the vertices, and the bisector will be from the first point, here $A$. If $n=1$, the point trio $BCA$ is considered, and the bisector will be from $B$. For $n=2$, the bisector will be from $C$.
+
+\vspace{6pt}
+
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+ z.A = point : new (0 , 0)
+ z.B = point : new (3 , 2)
+ z.C = point : new (2 , 5)
+ T.ABC = triangle : new ( z.A , z.B , z.C )
+ L.AE = T.ABC : bisector ()
+ z.E = L.AE.pb
+ z.F = T.ABC : bisector (1).pb
+ z.a,z.b,z.c = get_points (T.ABC : incentral ())
+\end{tkzelements}
+\begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygon(A,B,C)
+ \tkzDrawPolygon[red](a,b,c)
+ \tkzDrawLines(A,B A,C A,E B,F)
+ \tkzDrawPoints(A,B,C,a,b,c)
+ \tkzLabelPoints(A,B,c)
+ \tkzLabelPoints[above](C,b,a)
+ \tkzMarkAngles[mark=|](B,A,a a,A,C)
+ \tkzMarkAngles[mark=||](C,B,b b,B,A)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+\begin{tkzelements}
+ z.A = point : new (0 , 0)
+ z.B = point : new (3 , 2)
+ z.C = point : new (2 , 5)
+ T.ABC = triangle : new ( z.A , z.B , z.C )
+ L.AE = T.ABC : bisector ()
+ z.E = L.AE.pb
+ z.F = T.ABC : bisector (1).pb
+ z.a,z.b,z.c = get_points (T.ABC : incentral ())
+\end{tkzelements}
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygon(A,B,C)
+ \tkzDrawPolygon[red](a,b,c)
+ \tkzDrawLines(A,B A,C A,E B,F)
+ \tkzDrawPoints(A,B,C,a,b,c)
+ \tkzLabelPoints(A,B,c)
+ \tkzLabelPoints[above](C,b,a)
+ \tkzMarkAngles[cyan,mark=|,size=.75](B,A,a a,A,C)
+ \tkzMarkAngles[mark=||,size=.5](C,B,b b,B,A)
+ \end{tikzpicture}
+\end{center}
+
+\end{minipage}
+
+% subsubsection method_imeth_triangle_bisector (end)
+
+%%%%%% Circles %%%%%%
+
+\subsubsection{Method \Imeth{triangle}{euler\_circle}} % (fold)
+\label{ssub:method_imeth_triangle_euler_circle}
+
+The nine-point circle, also called Euler's circle or the Feuerbach circle, is the circle that passes through the perpendicular feet $H_A, H_B, and H_C$ dropped from the vertices of any reference triangle DeltaABC on the sides opposite them. Euler showed in 1765 that it also passes through the midpoints$ M_A, M_B, M_C$ of the sides of DeltaABC. By Feuerbach's theorem, the nine-point circle also passes through the midpoints $E_A, E_B, and E_C$ of the segments that join the vertices and the orthocenter $H$. These points are commonly referred to as the Euler points.
+\href{https://mathworld.wolfram.com/Nine-PointCircle.html}{Weisstein, Eric W. "Nine-Point Circle." From MathWorld--A Wolfram Web Resource.}
+
+\vspace{6pt}
+There are several ways of obtaining the Euler circle. The first would be to use an attribute of the triangle to determine the centre. This centre is defined by |z.N = T.eulercenter|. Next, the circle passes through the midpoint of one of the sides. IF this circle is useful later on, it is best to define it using the \code{euler\_circle} method.
+
+\vspace{6pt}
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+ z.A = point: new (0,0)
+ z.B = point: new (5,0)
+ z.C = point: new (1,4)
+ T = triangle: new(z.A,z.B,z.C)
+ C.euler = T : euler_circle ()
+ z.N,z.K = get_points (C.euler)
+\end{tkzelements}
+\begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygons[red](A,B,C)
+ \tkzDrawCircle(N,K)
+ \tkzDrawPoints(A,B,C,N,K)
+ \tkzLabelPoints(A,B,N)
+ \tkzLabelPoints[above](C,K)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+\begin{tkzelements}
+ z.A = point: new (0,0)
+ z.B = point: new (5,0)
+ z.C = point: new (1,4)
+ T = triangle: new(z.A,z.B,z.C)
+ C.euler = T : euler_circle ()
+ z.N,z.K = get_points (C.euler)
+\end{tkzelements}
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygons[red](A,B,C)
+ \tkzDrawCircle(N,K)
+ \tkzDrawPoints(A,B,C,N,K)
+ \tkzLabelPoints(A,B,N)
+ \tkzLabelPoints[above](C,K)
+ \end{tikzpicture}
+\end{center}
+
+\end{minipage}
+
+% subsubsection method_imeth_triangle_euler_circle (end)
+
+\subsubsection{Method \Imeth{triangle}{circum\_circle}} % (fold)
+\label{ssub:method_imeth_triangle_circum_circle}
+
+To obtain the circumscribed circle, simply use the \code{T.circumcenter} attribute, but if it is necessary to determine the circle then the method is \code{circum\_circle}.
-\subsubsection{Méthodes \Imeth{triangle}{cevian} et \Imeth{triangle}{cevian\_circle}} % (fold)
-\label{ssub:method_imeth_triangle_cevian}
\begin{minipage}{.5\textwidth}
\begin{Verbatim}
\begin{tkzelements}
- scale = 2
- z.a = point: new (1,2)
- z.b = point: new (5,1)
- z.c = point: new (3,5)
- T = triangle: new (z.a,z.b,z.c)
- z.i = T.orthocenter
- T.cevian = T : cevian (z.i)
- z.ta,z.tb,z.tc = get_points (T.cevian)
- C.cev = T : cevian_circle (z.i)
- z.w = C.cev.center
+ z.A = point: new (0,0)
+ z.B = point: new (5,0)
+ z.C = point: new (1,4)
+ T = triangle: new(z.A,z.B,z.C)
+ C.circum = T : circum_circle ()
+ z.O,z.K = get_points (C.circum)
\end{tkzelements}
\begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygons[red](A,B,C)
+ \tkzDrawCircle(O,K)
+ \tkzDrawPoints(A,B,C,O,K)
+ \tkzLabelPoints(A,B,O)
+ \tkzLabelPoints[above](C,K)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+\begin{tkzelements}
+ z.A = point: new (0,0)
+ z.B = point: new (5,0)
+ z.C = point: new (1,4)
+ T = triangle: new(z.A,z.B,z.C)
+ C.circum = T : circum_circle ()
+ z.O,z.K = get_points (C.circum)
+\end{tkzelements}
+
+\begin{center}
+\begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygons[red](A,B,C)
+ \tkzDrawCircle(O,K)
+ \tkzDrawPoints(A,B,C,O,K)
+ \tkzLabelPoints(A,B,O)
+ \tkzLabelPoints[above](C,K)
+\end{tikzpicture}
+\end{center}
+
+\end{minipage}
+
+% subsubsection method_imeth_triangle_circum_circle (end)
+
+\subsubsection{Method \Imeth{triangle}{in\_circle}} % (fold)
+\label{ssub:method_imeth_triangle_in_circle}
+
+An incircle is an inscribed circle of a polygon, i.e., a circle that is tangent to each of the polygon's sides. The center $I$ of the incircle is called the incenter, and the radius $r$ of the circle is called the inradius.
+
+The incenter is the point of concurrence of the triangle's angle bisectors. In addition, the points $M_A, M_B, and M_C$ of intersection of the incircle with the sides of $ABC$ are the polygon vertices of the pedal triangle [\ref{ssub:method_imeth_triangle_pedal}] taking the incenter as the pedal point (c.f. tangential triangle [\ref{ssub:method_imeth_triangle_medial}]). This triangle is called the contact triangle.
+
+[\href{https://mathworld.wolfram.com/Incircle.html}{Weisstein, Eric W. "Incircle." From MathWorld--A Wolfram Web Resource.}]
+
+\vspace{6pt}
+
+\begin{tkzelements}
+ scale = 2
+ z.A = point : new (0 , 0)
+ z.B = point : new (5 , 0)
+ z.C = point : new (1 , 3)
+ T.ABC = triangle : new ( z.A , z.B , z.C )
+ z.E = T.ABC : bisector ().pb
+ z.F = T.ABC : bisector (1).pb
+ z.G = T.ABC : bisector (2).pb
+ C.IH = T.ABC : in_circle ()
+ z.I,z.H = get_points (C.IH)
+\end{tkzelements}
+\begin{tikzpicture}%
+ [ new/.style ={ color = orange },
+ one/.style = { new,/tkzmkangle/size=.5 },
+ two/.style = { new,/tkzmkangle/size=.6 },
+ l/.style = { /tkzmkangle/arc=l },
+ ll/.style = { /tkzmkangle/arc=ll },
+ lll/.style = { /tkzmkangle/arc=lll }]
+\tkzGetNodes
+\tkzDrawPolygon(A,B,C)
+\tkzDrawSegments[new](A,E B,F C,G)
+ \tkzDrawSegments[dashed,add=0 and .5](I,H)
+ \tkzDrawPoints(A,B,C,E,F,G,I)
+ \tkzDrawCircle(I,H)
+ \tkzDrawPoints(I,A,B,C,H)
+\begin{scope}[one]
+ \tkzMarkAngles[l](B,A,E)
+ \tkzMarkAngles[ll](C,B,F)
+ \tkzMarkAngles[lll](A,C,G)
+\end{scope}
+\begin{scope}[two]
+ \tkzMarkAngles[l](E,A,C)
+ \tkzMarkAngles[ll](F,B,A)
+ \tkzMarkAngles[lll](G,C,B)
+\end{scope}
+\tkzLabelPoints(A,B,I)
+\tkzLabelPoints[above](C,H)
+\end{tikzpicture}
+
+
+
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+ z.A = point : new (0 , 0)
+ z.B = point : new (5 , 0)
+ z.C = point : new (1 , 3)
+ T.ABC = triangle : new(z.A,z.B,z.C)
+ z.E = T.ABC : bisector ().pb
+ z.F = T.ABC : bisector (1).pb
+ z.G = T.ABC : bisector (2).pb
+ C.IH = T.ABC : in_circle ()
+ z.I,z.H = get_points (C.IH)
+\end{tkzelements}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tikzpicture}%
+ [ new/.style ={color = orange },
+ one/.style = { new,/tkzmkangle/size=.5 },
+ two/.style = { new,/tkzmkangle/size=.6 },
+ l/.style = { /tkzmkangle/arc=l },
+ ll/.style = { /tkzmkangle/arc=ll },
+ lll/.style = { /tkzmkangle/arc=lll }]
\tkzGetNodes
-\tkzDrawPolygons(a,b,c ta,tb,tc)
-\tkzDrawSegments(a,ta b,tb c,tc)
-\tkzDrawPoints(a,b,c,i,ta,tb,tc)
-\tkzLabelPoints(a,b,c,i)
-\tkzDrawCircles(w,ta)
+\tkzDrawPolygon(A,B,C)
+\tkzDrawSegments[new](A,E B,F C,G)
+\tkzDrawSegments[dashed,add=0 and .5](I,H)
+\tkzDrawPoints(A,B,C,E,F,G,I)
+\tkzDrawCircle(I,H)
+\tkzDrawPoints(I,A,B,C,H)
+\begin{scope}[one]
+ \tkzMarkAngles[l](B,A,E)
+ \tkzMarkAngles[ll](C,B,F)
+ \tkzMarkAngles[lll](A,C,G)
+\end{scope}
+\begin{scope}[two]
+ \tkzMarkAngles[l](E,A,C)
+ \tkzMarkAngles[ll](F,B,A)
+ \tkzMarkAngles[lll](G,C,B)
+\end{scope}
+\tkzLabelPoints(A,B,I)
+\tkzLabelPoints[above](C,H)
\end{tikzpicture}
\end{Verbatim}
\end{minipage}
+
+
+% subsubsection method_imeth_triangle_in_circle (end)
+
+\subsubsection{Method \Imeth{triangle}{ex\_circle}} % (fold)
+\label{ssub:method_imeth_triangle_ex__circle}
+
+Given a triangle, extend two sides in the direction opposite their common vertex. The circle tangent to these two lines and to the other side of the triangle is called an excircle, or sometimes an escribed circle. The center of the excircle is called the excenter and lies on the external angle bisector of the opposite angle.
+
+\vspace{6pt}
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+z.A = point: new (0 , 0)
+z.B = point: new (5 , 0)
+z.C = point: new (-.4 , 4)
+T.ABC = triangle: new (z.A,z.B,z.C)
+z.I,_ = get_points(T.ABC: ex_circle ())
+z.J,_ = get_points(T.ABC: ex_circle (1))
+z.K,_ = get_points(T.ABC: ex_circle (2))
+z.Xk ,
+z.Yk,
+z.Zk = T.ABC : projection (z.K)
+z.Xi ,
+z.Yi,
+z.Zi = T.ABC : projection (z.I)
+z.Xj ,
+z.Yj,
+z.Zj = T.ABC : projection (z.J)
+\end{tkzelements}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+\begin{tkzelements}
+ scale = .5
+z.A = point: new (0 , 0)
+z.B = point: new (5 , 0)
+z.C = point: new (-.4 , 4)
+T.ABC = triangle: new (z.A,z.B,z.C)
+z.I,_ = get_points(T.ABC: ex_circle ())
+z.J,_ = get_points(T.ABC: ex_circle (1))
+z.K,_ = get_points(T.ABC: ex_circle (2))
+z.Xk ,
+z.Yk,
+z.Zk = T.ABC : projection (z.K)
+z.Xi ,
+z.Yi,
+z.Zi = T.ABC : projection (z.I)
+z.Xj ,
+z.Yj,
+z.Zj = T.ABC : projection (z.J)
+\end{tkzelements}
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygon(A,B,C)
+ \tkzDrawArc(K,Xk)(Yk)
+ \tkzDrawArc(I,Yi)(Zi)
+ \tkzDrawArc(J,Zj)(Yj)
+ \tkzDrawSegments[blue](K,Xk K,Yk K,Zk C,Yk C,Xk I,Xi J,Yj)
+ \tkzDrawPoints(A,B,C,I,J,K,Xk,Yk,Zk,Xi,Yj)
+ \tkzLabelPoints(K,Xk,Yk)
+ \tkzLabelPoints[above](C,B,Zk,I,J)
+ \tkzLabelPoints[left](A)
+ \tkzMarkRightAngles[fill=gray!20,opacity=.4](A,Zk,K A,Yk,K K,Xk,B)
+ \end{tikzpicture}
+\end{center}
+\end{minipage}
+
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygon(A,B,C)
+ \tkzDrawArc(K,Xk)(Yk)
+ \tkzDrawArc(I,Yi)(Zi)
+ \tkzDrawArc(J,Zj)(Yj)
+ \tkzDrawSegments[blue](K,Xk K,Yk K,Zk C,Yk C,Xk I,Xi J,Yj)
+ \tkzDrawPoints(A,B,C,I,J,K,Xk,Yk,Zk,Xi,Yj)
+ \tkzLabelPoints(K,Xk,Yk)
+ \tkzLabelPoints[above](C,B,Zk,I,J)
+ \tkzLabelPoints[left](A)
+ \tkzMarkRightAngles[fill=gray!20,opacity=.4](A,Zk,K A,Yk,K K,Xk,B)
+ \end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+
+% subsubsection method_imeth_triangle_ex__circle (end)
+
+\subsubsection{Method \Imeth{triangle}{spieker\_circle}} % (fold)
+\label{ssub:method_imeth_triangle_spieker__circle}
+
+In geometry, the incircle of the medial triangle of a triangle is the Spieker circle. Its center is the Spieker center.
+
+\begin{minipage}{.5\textwidth}
+\begin{tkzelements}
+ scale = 1.5
+ z.A = point: new (1,1)
+ z.B = point: new (5,1)
+ z.C = point: new (2.2,4)
+ T = triangle: new (z.A,z.B,z.C)
+ C.first_lemoine = T:spieker_circle()
+ z.S,z.w = get_points( C.first_lemoine )
+ z.Ma,z.Mb,z.Mc = get_points(T : medial ())
+ z.N = T : nagel_point ()
+ z.Qa = midpoint(z.A,z.N)
+ z.Qb = midpoint(z.B,z.N)
+ z.Qc = midpoint(z.C,z.N)
+\end{tkzelements}
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygons(A,B,C Qa,Qb,Qc)
+ \tkzDrawPolygons[red](Ma,Mb,Mc)
+ \tkzDrawCircles[red](S,w)
+ \tkzDrawSegments[dashed](N,A N,B N,C)
+ \tkzDrawPoints(A,B,C,S,w,Ma,Mb,Mc,Qa,Qb,Qc,N)
+ \tkzLabelPoints(A,B,S,w,Mc,N)
+ \tkzLabelPoints[above](C,Ma,Mb,Qa,Qb,Qc)
+ \end{tikzpicture}
+\end{center}
+\end{minipage}
+
\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
\begin{tkzelements}
-scale = 2
-z.a = point: new (1,2)
-z.b = point: new (5,1)
-z.c = point: new (3,5)
-T = triangle: new (z.a,z.b,z.c)
-z.i = T.orthocenter
-T.cevian = T : cevian (z.i)
-z.ta,z.tb,z.tc = get_points (T.cevian)
-C.cev = T : cevian_circle (z.i)
-z.w = C.cev.center
+ z.A = point: new (1,1)
+ z.B = point: new (5,1)
+ z.C = point: new (2.2,4)
+ T = triangle: new (z.A,z.B,z.C)
+ C.first_lemoine = T:spieker_circle()
+ z.S,z.w = get_points( C.first_lemoine )
+ z.Ma,z.Mb,z.Mc = get_points(T : medial ())
+ z.N = T : nagel_point ()
+ z.Qa = midpoint(z.A,z.N)
+ z.Qb = midpoint(z.B,z.N)
+ z.Qc = midpoint(z.C,z.N)
+\end{tkzelements}
+\begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygons(A,B,C Qa,Qb,Qc)
+ \tkzDrawPolygons[red](Ma,Mb,Mc)
+ \tkzDrawCircles[red](S,w)
+ \tkzDrawSegments[dashed](N,A N,B N,C)
+ \tkzDrawPoints(A,B,C,S,w,Ma,Mb,Mc,Qa,Qb,Qc,N)
+ \tkzLabelPoints(A,B,S,w,Mc,N)
+ \tkzLabelPoints[above](C,Ma,Mb,Qa,Qb,Qc)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+
+
+% subsubsection method_imeth_triangle_spieker__circle (end)
+
+\subsubsection{Methods \Imeth{triangle}{cevian} and \Imeth{triangle}{cevian\_circle}} % (fold)
+\label{ssub:method_imeth_triangle_cevian}
+
+A Cevian is a line segment which joins a vertex of a triangle with a point on the opposite side (or its extension). The condition for three general Cevians from the three vertices of a triangle to concur is known as Ceva's theorem.
+
+Picking a Cevian point $P$ in the interior of a triangle $ABC$ and drawing Cevians from each vertex through $P$ to the opposite side produces a set of three intersecting Cevians $APa$, $BPb$, and $CPc$ with respect to that point. The triangle $PaPbPc$ is known as the Cevian triangle of $ABC$ with respect to $P$, and the circumcircle of $PaPbPc$ is similarly known as the Cevian circle. [\href{https://mathworld.wolfram.com/CevianTriangle.html}{Weisstein, Eric W. "Cevian Triangle." From MathWorld--A Wolfram Web Resource.}]
+
+
+\vspace{6pt}
+
+\begin{tkzelements}
+ scale = 1.25
+ z.A = point: new (0,0)
+ z.B = point: new (4,0)
+ z.C = point: new (1.8,3)
+ T.ABC = triangle: new(z.A,z.B,z.C)
+ z.Q = point : new (1,-0.4)
+ z.P = point : new (2,1)
+ T.cevian = T.ABC : cevian (z.Q)
+ z.Qa,z.Qb,z.Qc = get_points (T.cevian)
+ T.cevian = T.ABC : cevian (z.P)
+ z.Pa,z.Pb,z.Pc = get_points (T.cevian)
+ C.cev = T.ABC : cevian_circle (z.P)
+ z.w = C.cev.center
+\end{tkzelements}
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygons[cyan](A,B,C)
+ \tkzDrawSegments[cyan](A,Qb B,Qa)
+ \tkzDrawSegments[red](A,Qa B,Qb C,Q)
+ \tkzDrawSegments[blue](A,Pa B,Pb C,Pc)
+ \tkzDrawCircles(w,Pa)
+ \tkzDrawPoints(A,B,C,Qa,Qb,Qc,P,Q,Pa,Pb,Pc)
+ \tkzLabelPoints(A,B,P,Q,Pc)
+ \tkzLabelPoints[above](C,Qc)
+ \tkzLabelPoints[left](Qb,Pb)
+ \tkzLabelPoints[right](Qa,Pa)
+ \end{tikzpicture}
+\end{center}
+
+
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+ z.A = point: new (0,0)
+ z.B = point: new (4,0)
+ z.C = point: new (1.8,3)
+ T.ABC = triangle: new(z.A,z.B,z.C)
+ z.Q = point : new (1,-0.4)
+ z.P = point : new (2,1)
+ T.cevian = T.ABC : cevian (z.Q)
+ z.Qa,z.Qb,z.Qc = get_points (T.cevian)
+ T.cevian = T.ABC : cevian (z.P)
+ z.Pa,z.Pb,z.Pc = get_points (T.cevian)
+ C.cev = T.ABC : cevian_circle (z.P)
+ z.w = C.cev.center
\end{tkzelements}
\begin{tikzpicture}
\tkzGetNodes
-\tkzDrawPolygons(a,b,c ta,tb,tc)
-\tkzDrawSegments(a,ta b,tb c,tc)
-\tkzDrawPoints(a,b,c,i,ta,tb,tc)
-\tkzLabelPoints(a,b,c,i)
-\tkzDrawCircles(w,ta)
+\tkzDrawPolygons[cyan](A,B,C)
+\tkzDrawSegments[cyan](A,Qb B,Qa)
+\tkzDrawSegments[red](A,Qa B,Qb C,Q)
+\tkzDrawSegments[blue](A,Pa B,Pb C,Pc)
+\tkzDrawCircles(w,Pa)
+\tkzDrawPoints(A,B,C,Qa,Qb,Qc,P,Q,Pa,Pb,Pc)
+\tkzLabelPoints(A,B,P,Q,Pc)
+\tkzLabelPoints[above](C,Qc)
+\tkzLabelPoints[left](Qb,Pb)
+\tkzLabelPoints[right](Qa,Pa)
\end{tikzpicture}
+\end{Verbatim}
\end{minipage}
+
% subsubsection method_imeth_triangle_cevian (end)
-\subsubsection{Méthodes \Imeth{triangle}{pedal} et \Imeth{triangle}{pedal\_circle}} % (fold)
+\subsubsection{Methods \Imeth{triangle}{pedal} and \Imeth{triangle}{pedal\_circle}} % (fold)
\label{ssub:method_imeth_triangle_pedal}
+Given a point $P$, the pedal triangle of $P$ is the triangle whose polygon vertices are the feet of the perpendiculars from $P$ to the side lines.
+
+\vspace{6pt}
\begin{minipage}{.5\textwidth}
\begin{Verbatim}
\begin{tkzelements}
z.A = point: new(0,0)
z.B = point: new(5,0)
z.C = point: new(1.5,3)
- z.O = point: new (2,1)
+ z.O = point: new (2,1)
T.ABC = triangle: new (z.A,z.B,z.C)
T.pedal = T.ABC : pedal (z.O)
z.E,z.F,z.G = get_points(T.pedal)
@@ -334,7 +1467,8 @@ z.w = C.cev.center
\tkzDrawPolygon[red](E,F,G)
\tkzDrawCircle(w,T)
\tkzDrawPoints(A,B,C,E,F,G,O)
- \tkzLabelPoints(A,B,C,E,F,G)
+ \tkzLabelPoints(A,B,G)
+ \tkzLabelPoints[above](C,E,F)
\tkzDrawSegments(O,E O,F O,G)
\end{tikzpicture}
\end{Verbatim}
@@ -344,7 +1478,7 @@ z.w = C.cev.center
z.A = point: new(0,0)
z.B = point: new(5,0)
z.C = point: new(1.5,3)
- z.O = point: new (2,1)
+ z.O = point: new (2,1)
T.ABC = triangle: new (z.A,z.B,z.C)
T.pedal = T.ABC : pedal (z.O)
z.E,z.F,z.G = get_points(T.pedal)
@@ -352,23 +1486,28 @@ z.w = C.cev.center
z.w = C.pedal.center
z.T = C.pedal.through
\end{tkzelements}
- \begin{tikzpicture}
- \tkzGetNodes
- \tkzDrawPolygon(A,B,C)
- \tkzDrawPolygon[red](E,F,G)
- \tkzDrawCircle(w,T)
- \tkzDrawPoints(A,B,C,E,F,G,O)
- \tkzLabelPoints(A,B,C,E,F,G)
- \tkzDrawSegments(O,E O,F O,G)
- \end{tikzpicture}
+ \begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygon(A,B,C)
+ \tkzDrawPolygon[red](E,F,G)
+ \tkzDrawCircle(w,T)
+ \tkzDrawPoints(A,B,C,E,F,G,O)
+ \tkzLabelPoints(A,B,G)
+ \tkzLabelPoints[above](C,E,F)
+ \tkzDrawSegments(O,E O,F O,G)
+ \end{tikzpicture}
+ \end{center}
+
\end{minipage}
% subsubsection method_imeth_triangle_pedal (end)
-\subsubsection{Méthodes \Imeth{triangle}{conway\_points} et \Imeth{triangle}{conway\_circle}} % (fold)
+\subsubsection{Methods \Imeth{triangle}{conway\_points} and \Imeth{triangle}{conway\_circle}} % (fold)
\label{ssub:method_imeth_triangle_conway}
-En géométrie plane, le théorème du cercle de Conway stipule que lorsque les côtés se rencontrant à chaque sommet d'un triangle sont prolongés par la longueur du côté opposé, les six points d'extrémité des trois segments de droite résultants se trouvent sur un cercle dont le centre est le centre d'incidence du triangle.
+In plane geometry, Conway's circle theorem states that when the sides meeting at each vertex of a triangle are extended by the length of the opposite side, the six endpoints of the three resulting line segments lie on a circle whose centre is the centre of incidence of the triangle.
+\vspace{6pt}
\begin{minipage}{.5\textwidth}
\begin{Verbatim}
\begin{tkzelements}
@@ -424,9 +1563,557 @@ En géométrie plane, le théorème du cercle de Conway stipule que lorsque les
% subsubsection methode_imeth_triangle_conway (end)
+\subsubsection{Methods \Imeth{triangle}{bevan\_circle} and \Imeth{triangle}{bevan\_point} } % (fold)
+\label{ssub:methods_imeth_triangle_bevan_circle_and_imeth_triangle_bevan_point}
+
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+ scale = .5
+ z.A = point: new (1,1)
+ z.B = point: new (6,0)
+ z.C = point: new (2,4)
+ T = triangle: new(z.A,z.B,z.C)
+ C.bevan = T : bevan_circle ()
+ z.c,z.t = get_points (C.bevan)
+ -- or z.c = T : bevan_point ()
+\end{tkzelements}
+\begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygons(A,B,C)
+ \tkzDrawCircle(c,t)
+ \tkzDrawPoints(A,B,C,c,t)
+ \tkzLabelPoints(A,B,c,t)
+ \tkzLabelPoints[above](C)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+ \begin{tkzelements}
+ scale =.5
+ z.A = point: new (1,1)
+ z.B = point: new (6,0)
+ z.C = point: new (2,4)
+ T = triangle: new(z.A,z.B,z.C)
+ C.bevan = T : bevan_circle ()
+ z.c,z.t = get_points (C.bevan)
+ -- or z.c = T : bevan_point ()
+ \end{tkzelements}
+ \begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygons(A,B,C)
+ \tkzDrawCircle(c,t)
+ \tkzDrawPoints(A,B,C,c,t)
+ \tkzLabelPoints(A,B,c,t)
+ \tkzLabelPoints[above](C)
+ \end{tikzpicture}
+ \end{center}
+
+\end{minipage}
+
+% subsubsection methods_imeth_triangle_bevan_circle_and_imeth_triangle_bevan_point (end)
+
+
+
+%%%%%% Triangles %%%%%
+
+
+
+\subsubsection{Method \Imeth{triangle}{feuerbach} and method \Imeth{triangle}{feuerbach\_point}} % (fold)
+\label{ssub:method_imeth_triangle_feuerbach}
+
+The Feuerbach triangle is the triangle formed by the three points of tangency of the nine-point circle with the excircles. (The fact that the excircles touch the nine-point circle is known as Feuerbach's theorem.)
+Refer to \href{https://mathworld.wolfram.com/FeuerbachTriangle.html}{Weisstein, Eric W. "Feuerbach Triangle." From MathWorld--A Wolfram Web Resource.}.
+
+The exinscribed circles of a triangle are tangent to the circle of the nine points of a triangle at points which form the \code{Feuerbach} triangle ($FaFbFc$). The inscribed circle and the circle of nine points are tangent at a point called the Feurerbach point $F$.
+
+\vspace{6pt}
+\begin{minipage}{.5\textwidth}
+ \begin{Verbatim}
+\begin{tkzelements}
+ scale = .8
+ z.A = point: new (0,0)
+ z.B = point: new (6,0)
+ z.C = point: new (0.8,4)
+ T.ABC = triangle : new ( z.A,z.B,z.C )
+ z.N = T.ABC.eulercenter
+ z.Fa,z.Fb,z.Fc = get_points ( T.ABC : feuerbach () )
+ z.F = T.ABC : feuerbach_point ()
+ z.Ja,z.Jb,z.Jc = get_points ( T.ABC : excentral () )
+ z.I = T.ABC.incenter
+ z.Ia,z.Ib,z.Ic = get_points (T.ABC : intouch ())
+\end{tkzelements}
+\begin{tikzpicture}
+\tkzGetNodes
+\tkzDrawPoints(Ja,Jb,Jc)
+\tkzClipBB
+\tkzFillCircles[green!30,,opacity=.5](N,Fa)
+\tkzFillCircles[lightgray,,opacity=.5](I,F)
+\tkzDrawLines[add=3 and 3](A,B A,C B,C)
+\tkzDrawCircles(Ja,Fa Jb,Fb Jc,Fc N,Fa N,F I,F)
+\tkzDrawPoints(A,B,C,F,Fa,Fb,Fc,N,I,Ia,Ib,Ic)
+\tkzLabelPoints(N,A,B,Ia,Ib,Ic)
+\tkzLabelPoints[above](Fa,Fb,Fc,F,I,C)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+
+
+\begin{tkzelements}
+ scale = .7
+ z.A = point: new (0,0)
+ z.B = point: new (6,0)
+ z.C = point: new (0.8,4)
+ T.ABC = triangle : new ( z.A,z.B,z.C )
+ z.N = T.ABC.eulercenter
+ z.Fa,z.Fb,z.Fc = get_points ( T.ABC : feuerbach () )
+ z.F = T.ABC : feuerbach_point ()
+ z.Ja,z.Jb,z.Jc = get_points ( T.ABC : excentral () )
+ z.I = T.ABC.incenter
+ z.Ia,z.Ib,z.Ic = get_points (T.ABC : intouch ())
+\end{tkzelements}
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPoints(Ja,Jb,Jc)
+ \tkzClipBB
+ \tkzFillCircles[green!30,,opacity=.5](N,Fa)
+ \tkzFillCircles[lightgray,,opacity=.5](I,F)
+ \tkzDrawLines[add=3 and 3](A,B A,C B,C)
+ \tkzDrawCircles(Ja,Fa Jb,Fb Jc,Fc N,Fa N,F I,F)
+ \tkzDrawPoints(A,B,C,F,Fa,Fb,Fc,N,I,Ia,Ib,Ic)
+ \tkzLabelPoints(N,A,B,Ia,Ib,Ic)
+ \tkzLabelPoints[above](Fa,Fb,Fc,F,I,C)
+ \end{tikzpicture}
+\end{center}
+
+%subsubsection method_imeth_triangle_feuerbach (end)
+
+
+\subsubsection{Method \Imeth{triangle}{similar}} % (fold)
+\label{ssub:method_imeth_triangle_similar}
+
+The \code{similar} method creates a new triangle whose sides are parallel to the sides of the original triangle and pass through its vertices.
+
+\begin{minipage}{.5\textwidth}
+ \begin{Verbatim}
+ \begin{tkzelements}
+ scale =.5
+ z.A = point: new (0 , 0)
+ z.B = point: new (6 , 0)
+ z.C = point: new (1.5 , 3.5)
+ T.ABC = triangle: new (z.A,z.B,z.C)
+ z.X,z.Y,z.Z = get_points ( T.ABC : similar ())
+ z.H_a,z.H_b,
+ z.H_c = get_points (T.ABC : orthic ())
+ \end{tkzelements}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygons(A,B,C X,Y,Z)
+ \tkzDrawLines(A,H_a B,H_b C,H_c)
+ \tkzDrawPoints(A,B,C,X,Y,Z)
+ \tkzLabelPoints(A,B,Z)
+ \tkzLabelPoints[above](X,Y,C)
+ \end{tikzpicture}
+ \end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+ \begin{tkzelements}
+ scale =.5
+ z.A = point: new (0 , 0)
+ z.B = point: new (6 , 0)
+ z.C = point: new (1.5 , 3.5)
+ T.ABC = triangle: new (z.A,z.B,z.C)
+ z.X,z.Y,z.Z = get_points ( T.ABC : similar ())
+ z.H_a,z.H_b,
+ z.H_c = get_points (T.ABC : orthic ())
+ \end{tkzelements}
+\hspace*{\fill}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygons(A,B,C X,Y,Z)
+ \tkzDrawLines(A,H_a B,H_b C,H_c)
+ \tkzDrawPoints(A,B,C,X,Y,Z)
+ \tkzLabelPoints(A,B,Z)
+ \tkzLabelPoints[above](X,Y,C)
+ \end{tikzpicture}
+\end{minipage}
+
+
+% subsubsection method_imeth_triangle_similar (end)
+
+\subsubsection{Method \Imeth{triangle}{medial}} % (fold)
+\label{ssub:method_imeth_triangle_medial}
+
+The triangle $MaMbMc$ formed by joining the midpoints of the sides of a triangle $ABC$. The medial triangle is sometimes also called the auxiliary triangle (Dixon 1991).
+[\href{https://mathworld.wolfram.com/MedialTriangle.html}{Weisstein, Eric W. "Medial Triangle." From MathWorld--A Wolfram Web Resource.}]
+
+\vspace{6pt}
+\begin{minipage}{.5\textwidth}
+ \begin{Verbatim}
+ \begin{tkzelements}
+ scale = 1.25
+ z.A = point: new (0,1)
+ z.B = point: new (6,0)
+ z.C = point: new (2,4)
+ T = triangle: new(z.A,z.B,z.C)
+ T.med = T : medial ()
+ z.Ma,z.Mb,z.Mc= get_points (T.med)
+ z.G = T.centroid
+ z.O = T.circumcenter
+ \end{tkzelements}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygons(A,B,C)
+ \tkzDrawPolygons[red](Ma,Mb,Mc)
+ \tkzDrawSegments(A,Ma B,Mb C,Mc)
+ \tkzDrawSegments[dashed,cyan](O,Ma O,Mb O,Mc)
+ \tkzDrawPoints(A,B,C,Ma,Mb,Mc,O,G)
+ \tkzLabelPoints(A,B,Mc,O)
+ \tkzLabelPoints[above](C)
+ \tkzLabelPoints[left](Mb)
+ \tkzLabelPoints[right](Ma,G)
+ \tkzMarkRightAngles[fill=cyan!20,
+ opacity=.4](O,Ma,B O,Mb,A O,Mc,A)
+ \end{tikzpicture}
+ \end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+ \begin{tkzelements}
+ scale = 1.25
+ z.A = point: new (0,1)
+ z.B = point: new (6,0)
+ z.C = point: new (2,4)
+ T = triangle: new(z.A,z.B,z.C)
+ T.med = T : medial ()
+ z.Ma,z.Mb,z.Mc= get_points (T.med)
+ z.G = T.centroid
+ z.O = T.circumcenter
+ \end{tkzelements}
+ \begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygons(A,B,C)
+ \tkzDrawPolygons[red](Ma,Mb,Mc)
+ \tkzDrawSegments(A,Ma B,Mb C,Mc)
+ \tkzDrawSegments[dashed,cyan](O,Ma O,Mb O,Mc)
+ \tkzDrawPoints(A,B,C,Ma,Mb,Mc,O,G)
+ \tkzLabelPoints(A,B,Mc,O)
+ \tkzLabelPoints[above](C)
+ \tkzLabelPoints[left](Mb)
+ \tkzLabelPoints[right](Ma,G)
+ \tkzMarkRightAngles[fill=cyan!20,
+ opacity=.4](O,Ma,B O,Mb,A O,Mc,A)
+ \end{tikzpicture}
+ \end{center}
+\end{minipage}
+
+
+% subsubsection method_imeth_triangle_medial (end)
+
+\subsubsection{Method \Imeth{triangle}{incentral} } % (fold)
+\label{ssub:method_incentral}
+
+The incentral triangle $IaIbIc$ is the Cevian triangle of a triangle $ABC$ with respect to its incenter $I$. It is therefore also the triangle whose vertices are determined by the intersections of the reference triangle's angle bisectors with the respective opposite sides.
+[ \href{https://mathworld.wolfram.com/IncentralTriangle.html}{Weisstein, Eric W. "Incentral Triangle." From MathWorld--A Wolfram Web Resource.}
+]
+
+\vspace{6pt}
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+ z.A = point: new (0 , 0)
+ z.B = point: new (6 , 0)
+ z.C = point: new (1 , 4)
+ T.ABC = triangle: new (z.A,z.B,z.C)
+ z.I = T.ABC.incenter
+ z.Ia,z.Ib,
+ z.Ic = get_points (T.ABC : incentral ())
+ z.Ta,z.Tb,
+ z.Tc = get_points (T.ABC : intouch ())
+\end{tkzelements}
+\begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygon(A,B,C)
+ \tkzDrawPolygon[dashed,red](Ia,Ib,Ic)
+ \tkzDrawSegments[dashed,red](A,Ia B,Ib C,Ic)
+ \tkzDrawCircle(I,Ta)
+ \tkzDrawPoints(A,B,C,Ia,Ib,Ic,I,Ta,Tb,Tc)
+ \tkzLabelPoints(A,B,Ic,I,Tc)
+ \tkzLabelPoints[above](Ia,Ta,C)
+ \tkzLabelPoints[above left](Ib,Tb)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+ \begin{tkzelements}
+ z.A = point: new (0 , 0)
+ z.B = point: new (6 , 0)
+ z.C = point: new (1 , 4)
+ T.ABC = triangle: new (z.A,z.B,z.C)
+ z.I = T.ABC.incenter
+ z.Ia,z.Ib,
+ z.Ic = get_points (T.ABC : incentral ())
+ z.Ta,z.Tb,
+ z.Tc = get_points (T.ABC : intouch ())
+ \end{tkzelements}
+ \begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygon(A,B,C)
+ \tkzDrawPolygon[dashed,red](Ia,Ib,Ic)
+ \tkzDrawSegments[dashed,red](A,Ia B,Ib C,Ic)
+ \tkzDrawCircle(I,Ta)
+ \tkzDrawPoints(A,B,C,Ia,Ib,Ic,I,Ta,Tb,Tc)
+ \tkzLabelPoints(A,B,Ic,I,Tc)
+ \tkzLabelPoints[above](Ia,Ta,C)
+ \tkzLabelPoints[above left](Ib,Tb)
+ \end{tikzpicture}
+ \end{center}
+
+\end{minipage}
+
+% subsubsection method_incentral (end)
+
+
+\subsubsection{Method \Imeth{triangle}{tangential}} % (fold)
+\label{ssub:method_imeth_triangle_tangential}
+
+The tangential triangle is the triangle $TaTbTc$ formed by the lines tangent to the circumcircle of a given triangle DeltaABC at its vertices. It is therefore antipedal triangle of $ABC$ with respect to the circumcenter $O$. It is also anticevian triangle of $ABC$ with the symmedian point $K$ as the anticevian point (Kimberling 1998, p. 156). Furthermore, the symmedian point $K$ of $ABC$ is the Gergonne point of $TaTbTc$.
+
+The sides of an orthic triangle are parallel to the tangents to the circumcircle at the vertices (Johnson 1929, p. 172). This is equivalent to the statement that each line from a triangle's circumcenter to a vertex is always perpendicular to the corresponding side of the orthic triangle (Honsberger 1995, p. 22), and to the fact that the orthic and tangential triangles are homothetic.
+[ \href{https://mathworld.wolfram.com/TangentialTriangle.html}{Weisstein, Eric W. "Tangential Triangle." From MathWorld--A Wolfram Web Resource.}]
+
+\vspace{6pt}
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+ scale = .75
+ z.A = point: new (0,0)
+ z.B = point: new (5,0)
+ z.C = point: new (1,3)
+ T = triangle: new(z.A,z.B,z.C)
+ z.H = T.orthocenter
+ z.O = T.circumcenter
+ z.L = T : symmedian_point ()
+ T.orthic = T: orthic()
+ z.Ha,
+ z.Hb,
+ z.Hc = get_points (T.orthic)
+ z.Ta,
+ z.Tb,
+ z.Tc = get_points (T : tangential ())
+\end{tkzelements}
+\begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygons[red](A,B,C Ta,Tb,Tc)
+ \tkzDrawCircle(O,A)
+ \tkzDrawPoints(A,B,C,O,H,Ta,Tb,Tc,L)
+ \tkzDrawSegments[red](C,Hc B,Hb A,Ha)
+ \tkzDrawSegments[green](C,Tc B,Tb A,Ta)
+ \tkzDrawPolygon[blue](Ha,Hb,Hc)
+ \tkzLabelPoints(A,B,O,Tc)
+ \tkzLabelPoints[above](C,Tb,Ta)
+ \tkzLabelPoints[font=\small](Hc)
+ \tkzLabelPoints[font=\small,above](Ha,Hb)
+ \tkzMarkRightAngles(A,Ha,C B,Hb,A C,Hc,B)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+\begin{tkzelements}
+ scale = .75
+ z.A = point: new (0,0)
+ z.B = point: new (5,0)
+ z.C = point: new (1,3)
+ T = triangle: new(z.A,z.B,z.C)
+ z.H = T.orthocenter
+ z.O = T.circumcenter
+ z.L = T : symmedian_point ()
+ T.orthic = T: orthic()
+ z.Ha,
+ z.Hb,
+ z.Hc = get_points (T.orthic)
+ z.Ta,
+ z.Tb,
+ z.Tc = get_points (T : tangential ())
+\end{tkzelements}
+
+ \begin{center}
+\begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygons[red](A,B,C Ta,Tb,Tc)
+ \tkzDrawCircle(O,A)
+ \tkzDrawPoints(A,B,C,O,H,Ta,Tb,Tc,L)
+ \tkzDrawSegments[red](C,Hc B,Hb A,Ha)
+ \tkzDrawSegments[green](C,Tc B,Tb A,Ta)
+ \tkzDrawPolygon[blue](Ha,Hb,Hc)
+ \tkzLabelPoints(A,B,O,Tc)
+ \tkzLabelPoints[above](C,Tb,Ta)
+ \tkzLabelPoints[font=\small](Hc)
+ \tkzLabelPoints[font=\small,above](Ha,Hb)
+ \tkzMarkRightAngles(A,Ha,C B,Hb,A C,Hc,B)
+\end{tikzpicture}
+ \end{center}
+
+\end{minipage}
+
+% subsubsection method_imeth_triangle_tangential (end)
+
+
+\subsubsection{Method \Imeth{triangle}{symmedial}} % (fold)
+\label{ssub:method_imeth_triangle_symmedial}
+
+The symmedial triangle $LaLbLc$ is the triangle whose vertices are the intersection points of the symmedians with the reference triangle $ABC$.
+
+The symmedial circle is the circumcircle of the symmedial triangle.
+
+The following example groups several concepts around the symmedian. As a reminder, a symmedian of a triangle is the reflection of the median with respect to the angle bisector.
+
+The points of contact of the symmedians with the sides of the triangle are obtained using the \code{symmedian} method.
+The intersection of the symmedians is the point known as the \code{Lemoine} or \code{Symmedian} point.
+You can use the triangle methods \code{lemoine\_point} or \code{symmedian\_point}. If you only need one of the lines, you can use the method \code{symmedian\_line(n)}. \(n=0\) corresponds to the line coming from the first vertex of the triangle, \(n=1\) to the second, and so on.
+
+In the next example, $L$ is the \code{Lemoine point} or the \code{Symmedian point}. $LaLbLc$ is the symmedian triangle.[\href{https://mathworld.wolfram.com/SymmedianPoint.html}{Weisstein, Eric W. "Symmedian Point." From MathWorld--A Wolfram Web Resource.}]
+
+\vspace{6pt}
+
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+ scale = 2
+ z.A = point : new (0,0)
+ z.B = point : new (7,0)
+ z.C = point : new (2,3)
+ T.ABC = triangle : new (z.A,z.B,z.C)
+ z.L = T.ABC : lemoine_point ()
+ T.SY = T.ABC : symmedian ()
+ T.med = T.ABC : medial ()
+ z.Ka,z.Kb,z.Kc = get_points (T.SY)
+ z.Ma,z.Mb,z.Mc = get_points (T.med)
+ L.Kb = T.ABC : symmedian_line (1)
+ _,z.Kb = get_points(L.Kb)
+ z.G = T.ABC.centroid
+ z.Ia,z.Ib,z.Ic = get_points ( T.ABC : incentral ())
+ -- z.T = T.ABC : trilinear (0,1,1)
+ z.I = T.ABC.incenter
+\end{tkzelements}
+\begin{tikzpicture}
+\tkzGetNodes
+\tkzDrawPolygons(A,B,C)
+\tkzDrawPoints(A,B,C,L,Ka,Kb,Kc,G,Ma,Mb,Mc,Ia,Ib,Ic,I)
+\tkzDrawSegments[cyan](A,Ka B,Kb C,Kc)
+\tkzDrawSegments[green](A,Ma B,Mb C,Mc)
+\tkzDrawSegments[dashed,red](A,Ia B,Ib C,Ic)
+\tkzLabelPoints[above](C,Ka,Ia,Ma)
+\tkzLabelPoints[above left](Kb,Ib,Mb)
+\tkzLabelPoints(A,B,L,Kc,I,Ic,Mc,G)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+
+\begin{minipage}{.5\textwidth}
+\begin{tkzelements}
+ scale = 2
+ z.A = point : new (0,0)
+ z.B = point : new (7,0)
+ z.C = point : new (2,3)
+ T.ABC = triangle : new (z.A,z.B,z.C)
+ z.L = T.ABC : lemoine_point ()
+ T.SY = T.ABC : symmedian ()
+ T.med = T.ABC : medial ()
+ z.Ka,z.Kb,z.Kc = get_points (T.SY)
+ z.Ma,z.Mb,z.Mc = get_points (T.med)
+ L.Kb = T.ABC : symmedian_line (1)
+ _,z.Kb = get_points(L.Kb)
+ z.G = T.ABC.centroid
+ z.Ia,z.Ib,z.Ic = get_points ( T.ABC : incentral ())
+ -- z.T = T.ABC : trilinear (0,1,1)
+ z.I = T.ABC.incenter
+\end{tkzelements}
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygons(A,B,C)
+ \tkzDrawPoints(A,B,C,L,Ka,Kb,Kc,G,Ma,Mb,Mc,Ia,Ib,Ic,I)
+ \tkzDrawSegments[cyan](A,Ka B,Kb C,Kc)
+ \tkzDrawSegments[green](A,Ma B,Mb C,Mc)
+ \tkzDrawSegments[dashed,red](A,Ia B,Ib C,Ic)
+ \tkzLabelPoints[above](C,Ka,Ia,Ma)
+ \tkzLabelPoints[above left](Kb,Ib,Mb)
+ \tkzLabelPoints(A,B,L,Kc,I,Ic,Mc,G)
+ \end{tikzpicture}
+\end{center}
+
+
+\end{minipage}
+
+% subsubsection method_imeth_triangle_symmedial (end)
+
+\subsubsection{Method \Imeth{triangle}{anti}} % (fold)
+\label{ssub:method_imeth_triangle_anti}
+
+The anticomplementary triangle is the triangle $TaTbTc$ which has a given triangle $ABC$ as its medial triangle. It is therefore the anticevian triangle with respect to the triangle centroid G (Kimberling 1998, p. 156). [\href{https://mathworld.wolfram.com/AnticomplementaryTriangle.html}{Weisstein, Eric W. "Anticomplementary Triangle." From MathWorld--A Wolfram Web Resource.}]
+
+\vspace{6pt}
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+ scale = .6
+ z.A = point: new (0,0)
+ z.B = point: new (5,0)
+ z.C = point: new (2,4)
+ T = triangle: new(z.A,z.B,z.C)
+ T.similar = T: anti()
+ z.Ta,
+ z.Tb,
+ z.Tc = get_points (T.similar)
+\end{tkzelements}
+\begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygons[red](A,B,C)
+ \tkzDrawPolygon[blue](Ta,Tb,Tc)
+ \tkzDrawPoints(A,B,C,Ta,Tb,Tc)
+ \tkzLabelPoints(A,B,Tc)
+ \tkzLabelPoints[above](Ta,Tb,C)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+\begin{tkzelements}
+ scale = .6
+ z.A = point: new (0,0)
+ z.B = point: new (5,0)
+ z.C = point: new (2,4)
+ T = triangle: new(z.A,z.B,z.C)
+ T.similar = T: anti()
+ z.Ta,
+ z.Tb,
+ z.Tc = get_points (T.similar)
+\end{tkzelements}
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygons[red](A,B,C)
+ \tkzDrawPolygon[blue](Ta,Tb,Tc)
+ \tkzDrawPoints(A,B,C,Ta,Tb,Tc)
+ \tkzLabelPoints(A,B,Tc)
+ \tkzLabelPoints[above](Ta,Tb,C)
+ \end{tikzpicture}
+\end{center}
+
+\end{minipage}
+
+% subsubsection method_imeth_triangle_anti (end)
+
+
\subsubsection{Euler line} % (fold)
\label{ssub:euler_line}
+The line on which the orthocenter $H$, triangle centroid $G$, circumcenter $O$, nine-point center $N$, and a number of other important triangle centers lie.
+[ \href{https://mathworld.wolfram.com/EulerLine.html}{Weisstein, Eric W. "Euler Line." From MathWorld--A Wolfram Web Resource.}]
+
\begin{minipage}{.5\textwidth}
\begin{Verbatim}
\begin{tkzelements}
@@ -468,33 +2155,38 @@ En géométrie plane, le théorème du cercle de Conway stipule que lorsque les
z.P,z.Q,z.R = get_points (T.ABC: orthic())
z.K,z.I,z.J = get_points (T.ABC: medial ())
\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawLines[blue](O,H)
-\tkzDrawCircle[red](N,I)
-\tkzDrawCircles[teal](O,A)
-\tkzDrawSegments(A,P B,Q C,R)
-\tkzDrawSegments[red](A,I B,J C,K)
-\tkzDrawPolygons(A,B,C)
-\tkzDrawPoints(A,B,C,N,I,J,K,O,P,Q,R,H,G)
-\tkzLabelPoints(A,B,C,I,J,K,P,Q,R)
-\tkzLabelPoints[below](N,O,G,H)
-\end{tikzpicture}
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawLines[blue](O,H)
+ \tkzDrawCircle[red](N,I)
+ \tkzDrawCircles[teal](O,A)
+ \tkzDrawSegments(A,P B,Q C,R)
+ \tkzDrawSegments[red](A,I B,J C,K)
+ \tkzDrawPolygons(A,B,C)
+ \tkzDrawPoints(A,B,C,N,I,J,K,O,P,Q,R,H,G)
+ \tkzLabelPoints(A,B,J,P,R)
+ \tkzLabelPoints[above](C,I,Q,K)
+ \tkzLabelPoints[below](N,O,G,H)
+ \end{tikzpicture}
+\end{center}
+
\end{minipage}
% subsubsection euler_line (end)
\subsection{Euler ellipse} % (fold)
\label{sub:euler_ellipse}
+The Euler ellipse is a conic, tangent to the three sides of a triangle, with the orthocentre and the centre of the circumscribed circle as foci.
Example of obtaining the Euler circle as well as the Euler ellipse.
+\vspace{6pt}
\begin{tkzelements}
z.A = point: new (2,3.8)
z.B = point: new (0 ,0)
z.C = point: new (6.2 ,0)
L.AB = line : new ( z.A , z.B )
T.ABC = triangle: new (z.A,z.B,z.C)
-z.K = midpoint (z.B,z.C)
+z.K = midpoint (z.B,z.C)
E.euler = T.ABC : euler_ellipse ()
z.N = T.ABC.eulercenter
C.euler = circle : new (z.N,z.K)
@@ -512,7 +2204,7 @@ z.B = point: new (0 ,0)
z.C = point: new (6.2 ,0)
L.AB = line : new ( z.A , z.B )
T.ABC = triangle: new (z.A,z.B,z.C)
-z.K = midpoint (z.B,z.C)
+z.K = midpoint (z.B,z.C)
E.euler = T.ABC : euler_ellipse ()
z.N = T.ABC.eulercenter
C.euler = circle : new (z.N,z.K)
@@ -554,21 +2246,22 @@ z.H = T.ABC.orthocenter
\subsubsection{Steiner inellipse and circumellipse} % (fold)
\label{ssub:steiner_inellipse_and_circumellipse}
-In this example, the inner and outer Steiner ellipses, referred to as the "inellipse" and "circumellipse" (Mathworld.com), respectively, along with the orthoptic circle, are depicted.. The triangle must be acutangle.
+In this example, the inner and outer Steiner ellipses, referred to as the "inellipse" and "circumellipse" [\href{https://mathworld.wolfram.com/SteinerInellipse.html}{Weisstein, Eric W. "Steiner Inellipse." From MathWorld--A Wolfram Web Resource.} and \href{https://mathworld.wolfram.com/SteinerCircumellipse.html}{Weisstein, Eric W. "Steiner Circumellipse." From MathWorld--A Wolfram Web Resource.}], respectively, along with the orthoptic circle, are depicted.. The triangle must be acutangle.
+\vspace{6pt}
\begin{minipage}{.5\textwidth}
\begin{Verbatim}
\begin{tkzelements}
scale = .5
z.A = point: new (1 , 4)
z.B = point: new (11 , 1)
- z.C = point: new (5 , 12)
+ z.C = point: new (5 , 12)
T.ABC = triangle: new(z.A,z.B,z.C)
E = T.ABC: steiner_inellipse ()
z.G = E.center
ang = math.deg(E.slope)
z.F = E.Fa
- z.E = E.Fb
+ z.E = E.Fb
C = E: orthoptic_circle ()
z.w = C.center
z.o = C.through
@@ -584,13 +2277,13 @@ In this example, the inner and outer Steiner ellipses, referred to as the "inell
scale = .5
z.A = point: new (1 , 4)
z.B = point: new (11 , 1)
-z.C = point: new (5 , 12)
+z.C = point: new (5 , 12)
T.ABC = triangle: new(z.A,z.B,z.C)
E = T.ABC: steiner_inellipse ()
z.G = E.center
ang = math.deg(E.slope)
z.F = E.Fa
-z.E = E.Fb
+z.E = E.Fb
C = E: orthoptic_circle ()
z.w = C.center
z.o = C.through
@@ -611,7 +2304,7 @@ z.T2 = L.T2.pb
\tkzUseLua{EE.Ry},\tkzUseLua{ang})
\tkzDrawLines(F,E M,T1 M,T2) %
\tkzDrawPoints(A,B,C,F,E,G,M,T1,T2)
-\tkzLabelPoints[above](C,M,T1)
+\tkzLabelPoints[above](C,M,T1)
\tkzLabelPoints[right](T2,B)
\tkzLabelPoints[below left](A,F,E,G)
\end{tikzpicture}
@@ -628,7 +2321,7 @@ z.T2 = L.T2.pb
\tkzUseLua{EE.Ry},\tkzUseLua{ang})
\tkzDrawLines(F,E M,T1 M,T2) %
\tkzDrawPoints(A,B,C,F,E,G,M,T1,T2)
-\tkzLabelPoints[above](C,M,T1)
+\tkzLabelPoints[above](C,M,T1)
\tkzLabelPoints[right](T2,B)
\tkzLabelPoints[below left](A,F,E,G)
\end{tikzpicture}
@@ -639,9 +2332,17 @@ z.T2 = L.T2.pb
\subsection{Harmonic division and bisector} % (fold)
\label{sub:harmonic_division_and_bisector}
+Let four points $A$, $C$, $B$ and $D$, in this order, lying on the straight line $(d)$ and $M$ un point pris hors de $(d)$. Then, if two of the following three propositions are true, then the third is also true:
+ \begin{enumerate}
+ \item The division (A,B;C,D) is harmonic. ($CA/CB = DA/DB$)
+ \item $(MC)$ is the internal angle bisector of $\widehat{AMB}$.
+ \item $(MD) \perp (MC)$.
+ \end{enumerate}
+
+ \vspace{6pt}
\begin{minipage}{.4\textwidth}
\begin{Verbatim}
-\begin{tkzelements}
+\begin{tkzelements}
scale = .4
z.A = point: new (0 , 0)
z.B = point: new (6 , 0)
@@ -664,7 +2365,7 @@ z.T2 = L.T2.pb
\end{Verbatim}
\end{minipage}
\begin{minipage}{.6\textwidth}
-\begin{tkzelements}
+\begin{tkzelements}
scale =.4
z.A = point: new (0 , 0)
z.B = point: new (6 , 0)
@@ -684,7 +2385,7 @@ z.T2 = L.T2.pb
z.E = intersection (L.LL,L.MC)
z.F = intersection (L.LL,L.MD)
\end{tkzelements}
-\hspace{\fill}
+\hspace{\fill}
\begin{tikzpicture}
\tkzGetNodes
\tkzDrawPolygon(A,B,M)
@@ -719,59 +2420,8 @@ z.T2 = L.T2.pb
\end{Verbatim}
% subsection harmonic_division_and_bisector (end)
-\subsubsection{Method \Imeth{triangle}{cevan}} % (fold)
-\label{ssub:method_imeth_triangle_cevan}
-
-\begin{minipage}{.5\textwidth}
- \begin{Verbatim}
- \begin{tkzelements}
- scale = 2
- z.a = point: new (1,2)
- z.b = point: new (5,1)
- z.c = point: new (3,5)
- T = triangle: new (z.a,z.b,z.c)
- z.i = T.orthocenter
- T.cevian = T : cevian (z.i)
- z.ta,z.tb,z.tc = get_points (T.cevian)
- C.cev = T : cevian_circle (z.i)
- z.w = C.cev.center
- \end{tkzelements}
- \begin{tikzpicture}
- \tkzGetNodes
- \tkzDrawPolygons(a,b,c ta,tb,tc)
- \tkzDrawSegments(a,ta b,tb c,tc)
- \tkzDrawPoints(a,b,c,i,ta,tb,tc)
- \tkzLabelPoints(a,b,c,i)
- \tkzDrawCircles(w,ta)
- \end{tikzpicture}
- \end{Verbatim}
-\end{minipage}
-\begin{minipage}{.5\textwidth}
- \begin{tkzelements}
- scale = 2
- z.a = point: new (1,2)
- z.b = point: new (5,1)
- z.c = point: new (3,5)
- T = triangle: new (z.a,z.b,z.c)
- z.i = T.orthocenter
- T.cevian = T : cevian (z.i)
- z.ta,z.tb,z.tc = get_points (T.cevian)
- C.cev = T : cevian_circle (z.i)
- z.w = C.cev.center
- \end{tkzelements}
- \begin{tikzpicture}
- \tkzGetNodes
- \tkzDrawPolygons(a,b,c ta,tb,tc)
- \tkzDrawSegments(a,ta b,tb c,tc)
- \tkzDrawPoints(a,b,c,i,ta,tb,tc)
- \tkzLabelPoints(a,b,c,i)
- \tkzDrawCircles(w,ta)
- \end{tikzpicture}
-\end{minipage}
-
-
-% subsubsection method_imeth_triangle_cevan (end)
-% subsection methods_of_the_class_triangle (end)
-% section class_triangle (end)
+%
+% % subsection methods_of_the_class_triangle (end)
+% % section class_triangle (end)
\endinput
diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-vectors.tex b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-vectors.tex
index b981ef555a..ed1ea77183 100644
--- a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-vectors.tex
+++ b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-vectors.tex
@@ -41,11 +41,11 @@ z.E = V.AE.head -- we recover the final point (head)
\begin{tabular}{lll}
\toprule
\textbf{Attributes} & \textbf{Application}& \textbf{Example}\\
-\Iattr{vector}{tail} & |V.AB.t = z.A| & Refer to (\ref{ssub:methods}) \\
-\Iattr{vector}{head} & |V.AB.head = z.B| & Refer to (\ref{ssub:methods}) \\
+\Iattr{vector}{tail} & |V.AB.t = z.A| & [\ref{ssub:methods}]\\
+\Iattr{vector}{head} & |V.AB.head = z.B| & [\ref{ssub:methods}] \\
\Iattr{vector}{type} & |V.AB.type = 'vector'| & \\
-\Iattr{vector}{slope} & |V.AB.slope| & Refer to (\ref{ssub:example_vector_attributes})\\
-\Iattr{vector}{length} & |V.AB.norm|& Refer to (\ref{ssub:example_vector_attributes})\\
+\Iattr{vector}{slope} & |V.AB.slope| & [\ref{ssub:example_vector_attributes}] \\
+\Iattr{vector}{length} & |V.AB.norm|& [\ref{ssub:example_vector_attributes} ]\\
\Iattr{vector}{mtx} & |V.AB.mtx| & The result is a column matrix |{{V.AB.t},{V.AB.h}}|\\
\bottomrule
\end{tabular}
diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-examples.tex b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-examples.tex
index 4f46d4a127..284ecca8eb 100644
--- a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-examples.tex
+++ b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-examples.tex
@@ -2,7 +2,65 @@
\section{Examples} % (fold)
\label{sec:examples}
-
+
+\subsection{Length transfer} % (fold)
+\label{sub:report_de_distance}
+
+Use of |north and east| functions linked to points, to transfer lengths, Refer to (\ref{sub:length_of_a_segment})
+
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+ scale = .75
+ z.A = point : new ( 0 , 0 )
+ z.B = point : new ( 3 , 0 )
+ L.AB = line : new ( z.A , z.B )
+ T.ABC = L.AB : sublime ()
+ z.C = T.ABC.pc
+ z.D = z.B: north (length(z.B,z.C))
+ z.E = z.B: east (L.AB.length)
+ z.M = L.AB.mid
+ z.F = z.E : north (length(z.C,z.M))
+\end{tkzelements}
+\begin{tikzpicture}[gridded]
+ \tkzGetNodes
+ \tkzDrawPolygons(A,B,C)
+ \tkzDrawSegments[gray,dashed](B,D B,E E,F C,M)
+ \tkzDrawPoints(A,...,F)
+ \tkzLabelPoints(A,B,E,M)
+ \tkzLabelPoints[above right](C,D,F)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+\begin{tkzelements}
+ scale = .75
+ z.A = point : new ( 0 , 0 )
+ z.B = point : new ( 3 , 0 )
+ L.AB = line : new ( z.A , z.B )
+ T.ABC = L.AB : sublime ()
+ z.C = T.ABC.pc
+ z.D = z.B: north (length(z.B,z.C))
+ z.E = z.B: east (L.AB.length)
+ z.M = L.AB.mid
+ z.F = z.E : north (length(z.C,z.M))
+\end{tkzelements}
+
+\begin{center}
+ \begin{tikzpicture}[gridded]
+ \tkzGetNodes
+ \tkzDrawPolygons(A,B,C)
+ \tkzDrawSegments[gray,dashed](B,D B,E E,F C,M)
+ \tkzDrawPoints(A,...,F)
+ \tkzLabelPoints(A,B,E,M)
+ \tkzLabelPoints[above right](C,D,F)
+ \end{tikzpicture}
+\end{center}
+
+\end{minipage}
+% subsection report_de_distance (end)
+
+
\subsection{D'Alembert 1} % (fold)
\label{sub:d_alembert_1}
@@ -54,15 +112,18 @@ z.Ip = C.Aa : internal_similitude (C.Bb)
z.Jp = C.Aa : internal_similitude (C.Cc)
z.Kp = C.Cc : internal_similitude (C.Bb)
\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}[rotate=30]
- \tkzGetNodes
- \tkzDrawCircles(A,a B,b C,c)
- \tkzDrawPoints(A,B,C,I,J,K,I',J',K')
- \tkzDrawSegments[new](I,K A,I A,J B,I B,K C,J C,K)
- \tkzDrawSegments[purple](I,J' I',J I',K)
- \tkzLabelPoints(I,J,K,I',J',K')
-\end{tikzpicture}
+
+\begin{center}
+ \begin{tikzpicture}[rotate=30]
+ \tkzGetNodes
+ \tkzDrawCircles(A,a B,b C,c)
+ \tkzDrawPoints(A,B,C,I,J,K,I',J',K')
+ \tkzDrawSegments[new](I,K A,I A,J B,I B,K C,J C,K)
+ \tkzDrawSegments[purple](I,J' I',J I',K)
+ \tkzLabelPoints(I,J,K,I',J',K')
+ \end{tikzpicture}
+\end{center}
+
\end{minipage}
% subsection d_alembert_1 (end)
@@ -110,14 +171,148 @@ z.Kp = C.Cc : internal_similitude (C.Bb)
z.m,z.n = get_points (C.Bb : radical_axis (C.Cc))
\end{tkzelements}
-\hspace*{\fill}
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawCircles(A,a B,b C,c)
+ \tkzDrawLines[new](i,j k,l m,n)
+ \end{tikzpicture}
+\end{center}
+
+\end{minipage}
+% subsection d_alembert_2 (end)
+
+\subsection{Altshiller} % (fold)
+\label{sub:altshiller}
+
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+ z.P = point : new (0,0)
+ z.Q = point : new (5,0)
+ z.I = point : new (3,2)
+ C.QI = circle : new (z.Q,z.I)
+ C.PE = C.QI : orthogonal_from (z.P)
+ z.E = C.PE.through
+ C.QE = circle : new (z.Q,z.E)
+ _,z.F = intersection (C.PE,C.QE)
+ z.A = C.PE: point (1/9)
+ L.AE = line : new (z.A,z.E)
+ _,z.C = intersection (L.AE,C.QE)
+ L.AF = line : new (z.A,z.F)
+ L.CQ = line : new (z.C,z.Q)
+ z.D = intersection (L.AF,L.CQ)
+\end{tkzelements}
\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircles(A,a B,b C,c)
-\tkzDrawLines[new](i,j k,l m,n)
+ \tkzGetNodes
+ \tkzDrawCircles(P,E Q,E)
+ \tkzDrawLines[add=0 and 1](P,Q)
+ \tkzDrawLines[add=0 and 2](A,E)
+ \tkzDrawSegments(P,E E,F F,C A,F C,D)
+ \tkzDrawPoints(P,Q,E,F,A,C,D)
+ \tkzLabelPoints(P,Q,E,F,A,C,D)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+ \begin{tkzelements}
+ scale =.5
+ z.P = point : new (0,0)
+ z.Q = point : new (5,0)
+ z.I = point : new (3,2)
+ C.QI = circle : new (z.Q,z.I)
+ C.PE = C.QI : orthogonal_from (z.P)
+ z.E = C.PE.through
+ C.QE = circle : new (z.Q,z.E)
+ _,z.F = intersection (C.PE,C.QE)
+ z.A = C.PE: point (1/9)
+ L.AE = line : new (z.A,z.E)
+ _,z.C = intersection (L.AE,C.QE)
+ L.AF = line : new (z.A,z.F)
+ L.CQ = line : new (z.C,z.Q)
+ z.D = intersection (L.AF,L.CQ)
+ \end{tkzelements}
+ \begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawCircles(P,E Q,E)
+ \tkzDrawLines[add=0 and 1](P,Q)
+ \tkzDrawLines[add=0 and 2](A,E)
+ \tkzDrawSegments(P,E E,F F,C A,F C,D)
+ \tkzDrawPoints(P,Q,E,F,A,C,D)
+ \tkzLabelPoints(P,Q,E,F,A,C,D)
+ \end{tikzpicture}
+ \end{center}
+\end{minipage}
+%subsection altshiller (end)
+
+\subsection{Lemoine} % (fold)
+\label{sub:lemoine}
+
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+ scale = 1.25
+ z.A = point: new (1,0)
+ z.B = point: new (5,2)
+ z.C = point: new (1.2,2)
+ T = triangle: new(z.A,z.B,z.C)
+ z.O = T.circumcenter
+ C.OA = circle: new (z.O,z.A)
+ L.tA = C.OA: tangent_at (z.A)
+ L.tB = C.OA: tangent_at (z.B)
+ L.tC = C.OA: tangent_at (z.C)
+ z.P = intersection (L.tA,T.bc)
+ z.Q = intersection (L.tB,T.ca)
+ z.R = intersection (L.tC,T.ab)
+\end{tkzelements}
+\begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygon[teal](A,B,C)
+ \tkzDrawCircle(O,A)
+ \tkzDrawPoints(A,B,C,P,Q,R)
+ \tkzLabelPoints(A,B,C,P,Q,R)
+ \tkzDrawLine[blue](Q,R)
+ \tkzDrawLines[red](A,P B,Q R,C)
+ \tkzDrawSegments(A,R C,P C,Q)
\end{tikzpicture}
+\end{Verbatim}
+
\end{minipage}
-% subsection d_alembert_2 (end)
+\begin{minipage}{.5\textwidth}
+\begin{tkzelements}
+scale = .75
+z.A = point: new (1,0)
+z.B = point: new (5,2)
+z.C = point: new (1.2,2)
+T = triangle: new(z.A,z.B,z.C)
+z.O = T.circumcenter
+C.OA = circle: new (z.O,z.A)
+L.tA = C.OA: tangent_at (z.A)
+L.tB = C.OA: tangent_at (z.B)
+L.tC = C.OA: tangent_at (z.C)
+z.R = intersection (L.tC,T.ab)
+z.P = intersection (L.tA,T.bc)
+z.Q = intersection (L.tB,T.ca)
+\end{tkzelements}
+
+\begin{center}
+ \begin{tikzpicture}[rotate=90]
+ \tkzGetNodes
+ \tkzDrawPolygon[teal](A,B,C)
+ \tkzDrawCircle(O,A)
+ \tkzDrawPoints(A,B,C,P,Q,R)
+ \tkzLabelPoints(A,B,C,P,Q,R)
+ \tkzDrawLine[blue](Q,R)
+ \tkzDrawLines[red](A,P B,Q R,C)
+ \tkzDrawSegments(A,R C,P C,Q)
+ \end{tikzpicture}
+\end{center}
+
+\end{minipage}
+%\caption{Lemoine line}
+% subsection lemoine (end)
+
\subsection{Alternate} % (fold)
\label{sub:alternate}
@@ -148,7 +343,7 @@ z.Kp = C.Cc : internal_similitude (C.Bb)
\end{tikzpicture}
\end{Verbatim}
\end{minipage}
-\hspace*{\fill}
+
\begin{minipage}[t]{.5\textwidth}\vspace{0pt}%
\begin{tkzelements}
z.A = point: new (0 , 0)
@@ -161,21 +356,94 @@ z.D = intersection (L.AI,T.bc)
L.LLC = T.ab: ll_from (z.C)
z.E = intersection (L.AI,L.LLC)
\end{tkzelements}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawPolygon(A,B,C)
-\tkzDrawLine[purple](C,E)
-\tkzDrawSegment[purple](A,E)
-\tkzFillAngles[purple!30,opacity=.4](B,A,C C,E,D)
-\tkzMarkAngles[mark=|](B,A,D D,A,C C,E,D)
-\tkzDrawPoints(A,...,E)
-\tkzLabelPoints(A,B)
-\tkzLabelPoints[above](C,D,E)
-\tkzMarkSegments(A,C C,E)
-\end{tikzpicture}
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygon(A,B,C)
+ \tkzDrawLine[purple](C,E)
+ \tkzDrawSegment[purple](A,E)
+ \tkzFillAngles[purple!30,opacity=.4](B,A,C C,E,D)
+ \tkzMarkAngles[mark=|](B,A,D D,A,C C,E,D)
+ \tkzDrawPoints(A,...,E)
+ \tkzLabelPoints(A,B)
+ \tkzLabelPoints[above](C,D,E)
+ \tkzMarkSegments(A,C C,E)
+ \end{tikzpicture}
+\end{center}
+
\end{minipage}
% subsection alternate (end)
+\subsection{Method \Imeth{circle}{common tangent}: orthogonality} % (fold)
+\label{sub:common_tangent_orthogonality}
+For two circles to be orthogonal, it is necessary and sufficient for a secant passing through one of their common points to be seen from the other common point at a right angle.
+
+\begin{Verbatim}
+\begin{tkzelements}
+ z.A = point : new ( 0 , 0 )
+ z.B = point : new ( 4 , 2 )
+ L.AB = line : new ( z.A , z.B )
+ z.a = point : new ( 1 , 2 )
+ C.Aa = circle : new (z.A,z.a)
+ C.BC = C.Aa : orthogonal_from (z.B)
+ z.C,z.D = intersection (C.Aa,C.BC)
+ C.AC = circle : new (z.A,z.C)
+ z.T,z.Tp = C.AC : common_tangent (C.BC)
+ L.TTp = line : new (z.T,z.Tp)
+ z.M = C.AC : point (0.45)
+ L.MC =line : new (z.M,z.C)
+ z.Mp = intersection (L.MC, C.BC)
+ L.mm = L.TTp : ll_from (z.C)
+ _,z.M = intersection (L.mm, C.AC)
+ z.Mp = intersection (L.mm, C.BC)
+\end{tkzelements}
+
+\begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawCircles(A,C B,C)
+ \tkzDrawSegments(M,M' A,C B,C A,B)
+ \tkzDrawSegments[gray](D,M D,M' T,T')
+ \tkzDrawPoints(A,B,C,D,M,M',T,T')
+ \tkzLabelPoints(A,B,D,M)
+ \tkzLabelPoints[above](C,M',T,T')
+ \tkzMarkRightAngles(M',D,M A,C,B)
+\end{tikzpicture}
+\end{Verbatim}
+
+\begin{tkzelements}
+z.A = point : new ( 0 , 0 )
+z.B = point : new ( 4 , 2 )
+L.AB = line : new ( z.A , z.B )
+z.a = point : new ( 1 , 2 )
+C.Aa = circle : new (z.A,z.a)
+C.BC = C.Aa : orthogonal_from (z.B)
+z.C,z.D = intersection (C.Aa,C.BC)
+C.AC = circle : new (z.A,z.C)
+z.T,z.Tp = C.AC : common_tangent (C.BC)
+L.TTp = line : new (z.T,z.Tp)
+z.M = C.AC : point (0.45)
+L.MC =line : new (z.M,z.C)
+z.Mp = intersection (L.MC, C.BC)
+L.mm = L.TTp : ll_from (z.C)
+_,z.M = intersection (L.mm, C.AC)
+z.Mp = intersection (L.mm, C.BC)
+\end{tkzelements}
+
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawCircles(A,C B,C)
+ \tkzDrawSegments(M,M' A,C B,C A,B)
+ \tkzDrawSegments[gray](D,M D,M' T,T')
+ \tkzDrawPoints(A,B,C,D,M,M',T,T')
+ \tkzLabelPoints(A,B,D,M)
+ \tkzLabelPoints[above](C,M',T,T')
+ \tkzMarkRightAngles(M',D,M A,C,B)
+ \end{tikzpicture}
+\end{center}
+% subsection common_tangent_orthogonality (end)
+
+
\subsection{Apollonius circle} % (fold)
\label{sub:apollonius_circle}
@@ -215,23 +483,26 @@ scale=.75
\end{Verbatim}
\end{minipage}
\begin{minipage}{.5\textwidth}
- \hspace*{\fill}
- \begin{tikzpicture}[scale=.8]
- \tkzGetNodes
- \tkzDrawSegment[add=0 and 1](A,M)
- \tkzDrawSegments[purple](M,C M,D)
- \tkzDrawCircle[purple](O,C)
- \tkzDrawSegments(A,B B,M D,B)
- \tkzDrawPoints(A,B,M,C,D)
- \tkzLabelPoints[below right](A,B,C,D)
- \tkzLabelPoints[above](M)
- \tkzFillAngles[opacity=.4,cyan!20](A,M,B)
- \tkzFillAngles[opacity=.4,purple!20](B,M,E)
- \tkzMarkRightAngle[opacity=.4,fill=gray!20](C,M,D)
- \tkzMarkAngles[mark=|](A,M,C C,M,B)
- \tkzMarkAngles[mark=||](B,M,D D,M,E)
- \end{tikzpicture}
- \hspace*{\fill}
+
+ \begin{center}
+ \begin{tikzpicture}[scale=.8]
+ \tkzGetNodes
+ \tkzDrawSegment[add=0 and 1](A,M)
+ \tkzDrawSegments[purple](M,C M,D)
+ \tkzDrawCircle[purple](O,C)
+ \tkzDrawSegments(A,B B,M D,B)
+ \tkzDrawPoints(A,B,M,C,D)
+ \tkzLabelPoints[below right](A,B,C,D)
+ \tkzLabelPoints[above](M)
+ \tkzFillAngles[opacity=.4,cyan!20](A,M,B)
+ \tkzFillAngles[opacity=.4,purple!20](B,M,E)
+ \tkzMarkRightAngle[opacity=.4,fill=gray!20](C,M,D)
+ \tkzMarkAngles[mark=|](A,M,C C,M,B)
+ \tkzMarkAngles[mark=||](B,M,D D,M,E)
+ \end{tikzpicture}
+ \end{center}
+
+
\end{minipage}
@@ -319,20 +590,23 @@ Remark : The circle can be obtained with:
_,z.N = intersection (C.GA , C.OC)
\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawPolygon(A,B,M)
-\tkzDrawCircles[purple](O,C G,A)
-\tkzDrawSegments[purple](M,D)
-\tkzDrawSegments(D,B O,G M,C)
-\tkzDrawSegments[red,dashed](M,N M,O M,G)
-\tkzDrawPoints(A,B,M,C,D,N,O,G)
-\tkzLabelPoints[below right](A,B,C,D,N,O,G)
-\tkzLabelPoints[above](M)
-\tkzMarkRightAngle[opacity=.4,fill=gray!20](C,M,D)
-\end{tikzpicture}
-\hspace*{\fill}
+
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygon(A,B,M)
+ \tkzDrawCircles[purple](O,C G,A)
+ \tkzDrawSegments[purple](M,D)
+ \tkzDrawSegments(D,B O,G M,C)
+ \tkzDrawSegments[red,dashed](M,N M,O M,G)
+ \tkzDrawPoints(A,B,M,C,D,N,O,G)
+ \tkzLabelPoints[below right](A,B,C,D,N,O,G)
+ \tkzLabelPoints[above](M)
+ \tkzMarkRightAngle[opacity=.4,fill=gray!20](C,M,D)
+ \end{tikzpicture}
+\end{center}
+
+
% subsection apollonius_and_circle_circumscribed (end)
\subsection{Apollonius circles in a triangle} % (fold)
@@ -414,19 +688,22 @@ L.Bpt = line: new (z.Bp,z.T)
z.O3 = L.Bpt.mid
\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircles[blue!50!black](O1,C' O2,A' O3,B')
-\tkzDrawSegments[new](B,S C,T A,R)
-\tkzDrawPolygon(A,B,C)
-\tkzDrawPoints(A,B,C,A',B',C',O,I,R,S,T,O1,O2,O3)
-\tkzLabelPoints(A,B,C,A',B',C',O,I)
-\tkzLabelPoints(O1,O2,O3)
-\tkzDrawCircle[purple](O,A)
-\tkzDrawLine(O1,O2)
-\end{tikzpicture}
-\hspace*{\fill}
+
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawCircles[blue!50!black](O1,C' O2,A' O3,B')
+ \tkzDrawSegments[new](B,S C,T A,R)
+ \tkzDrawPolygon(A,B,C)
+ \tkzDrawPoints(A,B,C,A',B',C',O,I,R,S,T,O1,O2,O3)
+ \tkzLabelPoints(A,B,C,A',B',C',O,I)
+ \tkzLabelPoints(O1,O2,O3)
+ \tkzDrawCircle[purple](O,A)
+ \tkzDrawLine(O1,O2)
+ \end{tikzpicture}
+\end{center}
+
+
Same result using the function |T.ABC.ab : apollonius (k) |
@@ -493,15 +770,18 @@ Same result using the function |T.ABC.ab : apollonius (k) |
C = circle: new (z.O_2,z.A)
z.C,z.D = intersection (L ,C)
\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircles(O_1,A O_2,A)
-\tkzDrawSegments[new](O_1,A E,F C,D)
-\tkzDrawSegments[purple](A,E A,F)
-\tkzDrawPoints(A,O_1,O_2,E,F,C,D)
-\tkzLabelPoints(A,O_1,O_2,E,F,C,D)
-\end{tikzpicture}
+
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawCircles(O_1,A O_2,A)
+ \tkzDrawSegments[new](O_1,A E,F C,D)
+ \tkzDrawSegments[purple](A,E A,F)
+ \tkzDrawPoints(A,O_1,O_2,E,F,C,D)
+ \tkzLabelPoints(A,O_1,O_2,E,F,C,D)
+ \end{tikzpicture}
+\end{center}
+
\end{minipage}
% subsection archimedes (end)
@@ -615,30 +895,156 @@ Same result using the function |T.ABC.ab : apollonius (k) |
z.O_5 = T.CP1P2.circumcenter
\end{tkzelements}
-\hspace*{\fill}
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawSemiCircles[teal](O_0,B)
+ \tkzDrawSemiCircles[teal,fill=teal!20,opacity=.5](O_1,C O_2,B)
+ \tkzDrawCircle[fill=green!10](O_4,P_0)
+ \tkzDrawCircle[purple,fill=purple!10,opacity=.5](O_5,C)
+ \tkzDrawSegments(A,B O_0,P' B,P A,Q)
+ \tkzDrawSegments(P,B Q,O_2 P,O_1)
+ \tkzDrawSegments[purple](O_5,P_2 O_5,P_1 O_5,C)
+ \tkzDrawPoints(A,B,C,P_0,P_2,P_1,O_0,O_1,O_2,O_4,O_5,Q,P,P',S)
+ \tkzLabelPoints[below](A,B,C,O_0,O_1,O_2,P')
+ \tkzLabelPoints[above](Q,P)
+ \tkzLabelPoints[above right](P_0,P_2,P_1,O_5,O_4,S)
+ \begin{scope}[font=\scriptsize]
+ \tkzLabelCircle[above](O_1,C)(120){$(\beta)$}
+ \tkzLabelCircle[above](O_2,B)(70){$(\gamma)$}
+ \tkzLabelCircle[above](O_0,B)(110){$(\alpha)$}
+ \tkzLabelCircle[left](O_4,P_2)(60){$(\delta)$}
+ \tkzLabelCircle[left](O_5,C)(140){$(\epsilon)$}
+ \end{scope}
+ \end{tikzpicture}
+\end{center}
+
+% subsection bankoff_circle (end)
+
+\subsection{Symmedian property} % (fold)
+\label{sub:example_symmedian_property}
+
+$L$ is the symmedian point or lemoine point. $\dfrac{CL}{CLc} = \dfrac{a^2+b^2}{a^2+b^2+c^2}$
+
+\vspace{6pt}
+\begin{minipage}{.5\textwidth}
+ \begin{Verbatim}
+ \begin{tkzelements}
+ scale = 1.5
+ z.A = point : new (1,2)
+ z.B = point : new (5,1)
+ z.C = point : new (3,5)
+ T.ABC = triangle : new (z.A,z.B,z.C)
+ T.SY = T.ABC : symmedian ()
+ z.La,z.Lb,z.Lc = get_points (T.SY)
+ k = (T.ABC.a*T.ABC.a +
+ T.ABC.b*T.ABC.b)/(T.ABC.a*T.ABC.a +
+ T.ABC.b*T.ABC.b+T.ABC.c*T.ABC.c)
+ L.SY = line : new (z.C,z.Lc)
+ z.L = L.SY : point (k)
+ \end{tkzelements}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygons(A,B,C)
+ \tkzDrawPoints(A,B,C,L,Lc)
+ \tkzDrawPoints[red](L)
+ \tkzDrawSegments[cyan](C,Lc)
+ \tkzLabelPoints(A,B,Lc)
+ \tkzLabelPoints[above](C)
+ \tkzLabelPoints[left](L)
+ \tkzLabelSegment(B,C){$a$}
+ \tkzLabelSegment(A,C){$b$}
+ \tkzLabelSegment(A,B){$ca$}
+ \end{tikzpicture}
+ \end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+ \begin{tkzelements}
+ scale = 1.5
+ z.A = point : new (1,2)
+ z.B = point : new (5,1)
+ z.C = point : new (3,5)
+ T.ABC = triangle : new (z.A,z.B,z.C)
+ T.SY = T.ABC : symmedian ()
+ z.La,z.Lb,z.Lc = get_points (T.SY)
+ k = (T.ABC.a*T.ABC.a +
+ T.ABC.b*T.ABC.b)/(T.ABC.a*T.ABC.a +
+ T.ABC.b*T.ABC.b+T.ABC.c*T.ABC.c)
+ L.SY = line : new (z.C,z.Lc)
+ z.L = L.SY : point (k)
+ \end{tkzelements}
+ \begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygons(A,B,C)
+ \tkzDrawPoints(A,B,C,L,Lc)
+ \tkzDrawPoints[red](L)
+ \tkzDrawSegments[cyan](C,Lc)
+ \tkzLabelPoints(A,B,Lc)
+ \tkzLabelPoints[above](C)
+ \tkzLabelPoints[left](L)
+ \tkzLabelSegment(B,C){$a$}
+ \tkzLabelSegment(A,C){$b$}
+ \tkzLabelSegment(A,B){$ca$}
+ \end{tikzpicture}
+ \end{center}
+\end{minipage}
+
+
+% subsection example_symmedian_property (end)
+
+\subsection{Example: Cevian with orthocenter} % (fold)
+\label{sub:example_cevian_with_orthocenter}
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+ scale = 1.5
+ z.a = point: new (1,2)
+ z.b = point: new (5,1)
+ z.c = point: new (3,5)
+ T = triangle: new (z.a,z.b,z.c)
+ z.i = T.orthocenter
+ T.cevian = T : cevian (z.i)
+ z.ta,z.tb,z.tc = get_points (T.cevian)
+ C.cev = T : cevian_circle (z.i)
+ z.w = C.cev.center
+\end{tkzelements}
\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawSemiCircles[teal](O_0,B)
-\tkzDrawSemiCircles[teal,fill=teal!20,opacity=.5](O_1,C O_2,B)
-\tkzDrawCircle[fill=green!10](O_4,P_0)
-\tkzDrawCircle[purple,fill=purple!10,opacity=.5](O_5,C)
-\tkzDrawSegments(A,B O_0,P' B,P A,Q)
-\tkzDrawSegments(P,B Q,O_2 P,O_1)
-\tkzDrawSegments[purple](O_5,P_2 O_5,P_1 O_5,C)
-\tkzDrawPoints(A,B,C,P_0,P_2,P_1,O_0,O_1,O_2,O_4,O_5,Q,P,P',S)
-\tkzLabelPoints[below](A,B,C,O_0,O_1,O_2,P')
-\tkzLabelPoints[above](Q,P)
-\tkzLabelPoints[above right](P_0,P_2,P_1,O_5,O_4,S)
-\begin{scope}[font=\scriptsize]
- \tkzLabelCircle[above](O_1,C)(120){$(\beta)$}
- \tkzLabelCircle[above](O_2,B)(70){$(\gamma)$}
- \tkzLabelCircle[above](O_0,B)(110){$(\alpha)$}
- \tkzLabelCircle[left](O_4,P_2)(60){$(\delta)$}
- \tkzLabelCircle[left](O_5,C)(140){$(\epsilon)$}
-\end{scope}
+ \tkzGetNodes
+ \tkzDrawPolygons(a,b,c ta,tb,tc)
+ \tkzDrawSegments(a,ta b,tb c,tc)
+ \tkzDrawPoints(a,b,c,i,ta,tb,tc)
+ \tkzLabelPoints(a,b,c,i)
+ \tkzDrawCircles(w,ta)
\end{tikzpicture}
-\hspace*{\fill}
-% subsection bankoff_circle (end)
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+\begin{tkzelements}
+scale = 1.5
+z.a = point: new (1,2)
+z.b = point: new (5,1)
+z.c = point: new (3,5)
+T = triangle: new (z.a,z.b,z.c)
+z.i = T.orthocenter
+T.cevian = T : cevian (z.i)
+z.ta,z.tb,z.tc = get_points (T.cevian)
+C.cev = T : cevian_circle (z.i)
+z.w = C.cev.center
+\end{tkzelements}
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygons(a,b,c ta,tb,tc)
+ \tkzDrawSegments(a,ta b,tb c,tc)
+ \tkzDrawPoints(a,b,c,i,ta,tb,tc)
+ \tkzLabelPoints(a,b,c,i)
+ \tkzDrawCircles(w,ta)
+ \end{tikzpicture}
+\end{center}
+\end{minipage}
+
+% subsection example_cevian_with_orthocenter (end)
\subsection{Excircles} % (fold)
\label{sub:excircles}
@@ -693,73 +1099,33 @@ Same result using the function |T.ABC.ab : apollonius (k) |
z.G = intersection (la,lb)
\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawPoints[new](J_a,J_b,J_c)
-\tkzClipBB
-\tkzDrawCircles[gray](J_a,T_a J_b,T_b J_c,T_c)
-\tkzDrawLines[add=1 and 1](A,B B,C C,A)
-\tkzDrawSegments[new](A,T_a B,T_b C,T_c)
-\tkzDrawSegments[new](J_a,T_a J_b,T_b J_c,T_c)
-\tkzDrawPolygon(A,B,C)
-\tkzDrawPolygon[new](T_a,T_b,T_c)
-\tkzDrawPoints(A,B,C,K)
-\tkzDrawPoints[new](T_a,T_b,T_c)
-\tkzLabelPoints[below left](A)
-\tkzLabelPoints[below](B)
-\tkzLabelPoints[above](C)
-\tkzLabelPoints[new,below left](T_b)
-\tkzLabelPoints[new,below right](T_c)
-\tkzLabelPoints[new,right=6pt](T_a)
-\tkzMarkRightAngles[fill=gray!15](J_a,T_a,B J_b,T_b,C J_c,T_c,A)
-\end{tikzpicture}
-\hspace*{\fill}
-% subsection excircles (end)
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPoints[new](J_a,J_b,J_c)
+ \tkzClipBB
+ \tkzDrawCircles[gray](J_a,T_a J_b,T_b J_c,T_c)
+ \tkzDrawLines[add=1 and 1](A,B B,C C,A)
+ \tkzDrawSegments[new](A,T_a B,T_b C,T_c)
+ \tkzDrawSegments[new](J_a,T_a J_b,T_b J_c,T_c)
+ \tkzDrawPolygon(A,B,C)
+ \tkzDrawPolygon[new](T_a,T_b,T_c)
+ \tkzDrawPoints(A,B,C,K)
+ \tkzDrawPoints[new](T_a,T_b,T_c)
+ \tkzLabelPoints[below left](A)
+ \tkzLabelPoints[below](B)
+ \tkzLabelPoints[above](C)
+ \tkzLabelPoints[new,below left](T_b)
+ \tkzLabelPoints[new,below right](T_c)
+ \tkzLabelPoints[new,right=6pt](T_a)
+ \tkzMarkRightAngles[fill=gray!15](J_a,T_a,B J_b,T_b,C J_c,T_c,A)
+ \end{tikzpicture}
+\end{center}
+
+
+% subsection excircles (end)
-\subsection{Orthogonal circle through} % (fold)
-\label{sub:orthogonal_circle_through}
-\begin{minipage}{.5\textwidth}
-\begin{Verbatim}
-\begin{tkzelements}
- z.O = point: new (0,1)
- z.A = point: new (1,0)
- z.z1 = point: new (-1.5,-1.5)
- z.z2 = point: new (2.5,-1.25)
- C.OA = circle: new (z.O,z.A)
- C = C.OA: orthogonal_through (z.z1,z.z2)
- z.c = C.center
-\end{tkzelements}
-\begin{tikzpicture}
- \tkzGetNodes
- \tkzDrawCircle(O,A)
- \tkzDrawCircle[new](c,z1)
- \tkzDrawPoints[new](O,A,z1,z2,c)
- \tkzLabelPoints[right](O,A,z1,z2,c)
-\end{tikzpicture}
-\end{Verbatim}
-\end{minipage}
-\begin{minipage}{.5\textwidth}\begin{tkzelements}
- z.O = point: new (0,1)
- z.A = point: new (1,0)
- z.z1 = point: new (-1.5,-1.5)
- z.z2 = point: new (2.5,-1.25)
- C.OA = circle: new (z.O,z.A)
- C = C.OA: orthogonal_through (z.z1,z.z2)
- z.c = C.center
-\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircle(O,A)
-\tkzDrawCircle[orange](c,z1)
-\tkzDrawPoints[orange](O,A,z1,z2,c)
-\tkzLabelPoints[right](O,A,z1,z2,c)
-\end{tikzpicture}
-\hspace*{\fill}
-\end{minipage}
-% subsection orthogonal_circle_through (end)
\subsection{Divine ratio} % (fold)
\label{sub:divine_ratio}
@@ -826,16 +1192,19 @@ L.BG = line: new (z.B,z.G)
z.L = intersection (L.AR,L.BG)
\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawPolygons(A,C,E,F A,B,G,H)
-\tkzDrawCircles(O_1,C O_2,B O_0,B)
-\tkzDrawSegments(H,C B,K A,L)
-\tkzDrawPoints(A,B,C,K,E,F,G,H,O_0,O_1,O_2,R,S,T,L)
-\tkzLabelPoints(A,B,C,K,E,F,G,H,O_0,O_1,O_2,R,S,T,L)
-\end{tikzpicture}
-\hspace*{\fill}
+
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygons(A,C,E,F A,B,G,H)
+ \tkzDrawCircles(O_1,C O_2,B O_0,B)
+ \tkzDrawSegments(H,C B,K A,L)
+ \tkzDrawPoints(A,B,C,K,E,F,G,H,O_0,O_1,O_2,R,S,T,L)
+ \tkzLabelPoints(A,B,C,K,E,F,G,H,O_0,O_1,O_2,R,S,T,L)
+ \end{tikzpicture}
+\end{center}
+
+
% subsection divine_ratio (end)
\subsection{Director circle} % (fold)
@@ -893,19 +1262,22 @@ z.J = L.J.pb
z.K = L.K.pb
\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawPoints(F1,F2,O)
-\tkzDrawCircles[teal](O,P)
-\tkzDrawPolygon(H,O,A,P)
-\tkzDrawEllipse[red](O,\tkzUseLua{a},\tkzUseLua{b},0)
-\tkzDrawSegments[orange](O,P O,L L,J L,K)
-\tkzDrawPoints(F1,F2,O,H,A,P,L,J,K)
-\tkzLabelPoints(F1,F2,O,H,A,P,L,J,K)
-\tkzLabelPoints[above](L)
-\tkzMarkRightAngles(A,P,H J,L,K)
-\end{tikzpicture}
+
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPoints(F1,F2,O)
+ \tkzDrawCircles[teal](O,P)
+ \tkzDrawPolygon(H,O,A,P)
+ \tkzDrawEllipse[red](O,\tkzUseLua{a},\tkzUseLua{b},0)
+ \tkzDrawSegments[orange](O,P O,L L,J L,K)
+ \tkzDrawPoints(F1,F2,O,H,A,P,L,J,K)
+ \tkzLabelPoints(F1,F2,O,H,A,P,L,J,K)
+ \tkzLabelPoints[above](L)
+ \tkzMarkRightAngles(A,P,H J,L,K)
+ \end{tikzpicture}
+\end{center}
+
\end{minipage}
% subsection director_circle (end)
@@ -961,18 +1333,21 @@ z.C = intersection (L.EG,L.AB)
z.O = C.AB: antipode (z.B)
\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
- \tkzGetNodes
- \tkzDrawArc[delta=5](O,B)(G)
- \tkzDrawCircles(A,B B,A)
- \tkzDrawSegments(A,E B,E O,I)
- \tkzDrawSegments[purple](J,E A,G G,I K,G E,G)
- \tkzMarkSegments[mark=s||](A,E B,E O,A)
- \tkzDrawPoints(A,B,C,E,I,J,G,O,K)
- \tkzLabelPoints(A,B,C,E,I,J,G,O,K)
-\end{tikzpicture}
- \hspace*{\fill}
+
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawArc[delta=5](O,B)(G)
+ \tkzDrawCircles(A,B B,A)
+ \tkzDrawSegments(A,E B,E O,I)
+ \tkzDrawSegments[purple](J,E A,G G,I K,G E,G)
+ \tkzMarkSegments[mark=s||](A,E B,E O,A)
+ \tkzDrawPoints(A,B,C,E,I,J,G,O,K)
+ \tkzLabelPoints(A,B,C,E,I,J,G,O,K)
+ \end{tikzpicture}
+\end{center}
+
+
% subsection gold_division (end)
\subsection{Ellipse} % (fold)
@@ -1014,15 +1389,17 @@ b = E.Ry
slope = math.deg(E.slope)
\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircles[teal](C,A)
-\tkzDrawEllipse[red](C,\tkzUseLua{a},\tkzUseLua{b},\tkzUseLua{slope})
-\tkzDrawPoints(C,A,B,b)
-\tkzLabelPoints(C,A,B)
-\end{tikzpicture}
-\hspace*{\fill}
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawCircles[teal](C,A)
+ \tkzDrawEllipse[red](C,\tkzUseLua{a},\tkzUseLua{b},\tkzUseLua{slope})
+ \tkzDrawPoints(C,A,B,b)
+ \tkzLabelPoints(C,A,B)
+ \end{tikzpicture}
+\end{center}
+
+
\end{minipage}
% subsection ellipse (end)
@@ -1060,12 +1437,15 @@ z.V = E : point (0)
z.CoV = E : point (math.pi/2)
\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}[gridded]
-\tkzGetNodes
-\tkzDrawEllipse[blue](C,\tkzUseLua{a},\tkzUseLua{b},\tkzUseLua{ang})
-\tkzDrawPoints(C,V,CoV)
-\end{tikzpicture}
+
+\begin{center}
+ \begin{tikzpicture}[gridded]
+ \tkzGetNodes
+ \tkzDrawEllipse[blue](C,\tkzUseLua{a},\tkzUseLua{b},\tkzUseLua{ang})
+ \tkzDrawPoints(C,V,CoV)
+ \end{tikzpicture}
+\end{center}
+
\end{minipage}
% subsection ellipse_with_radii (end)
@@ -1122,15 +1502,18 @@ z.F = L.ta.pb
z.G = L.tb.pb
\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
- \tkzGetNodes
- \tkzDrawPoints(A,B,C,K,F,G,V,cV)
- \tkzLabelPoints(A,B,C,K,F,G,V,cV)
+
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPoints(A,B,C,K,F,G,V,cV)
+ \tkzLabelPoints(A,B,C,K,F,G,V,cV)
\tkzDrawEllipse[teal](C,\tkzUseLua{a},\tkzUseLua{b},\tkzUseLua{ang})
- \tkzDrawLines(K,F K,G)
-\end{tikzpicture}
- \hspace*{\fill}
+ \tkzDrawLines(K,F K,G)
+ \end{tikzpicture}
+\end{center}
+
+
\end{minipage}
% subsection ellipse_with_foci (end)
@@ -1184,19 +1567,21 @@ L.Ow = line : new (z.O,z.w)
_,z.E = intersection (L.Ow, C.OA)
\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawArc(J,X)(Y)
-\tkzDrawCircles(I,H O,A)
-\tkzDrawCircle[red](w,I)
-\tkzDrawLines(Y,C A,B X,C E,w E,B)
-\tkzDrawSegments[blue](J,C J,K I,H I,O w,B)
-\tkzDrawPoints(A,B,C,I,J,E,w,H,K,O)
-\tkzLabelPoints(A,B,C,J,I,w,H,K,E,O)
-\tkzMarkRightAngles[fill=gray!20,opacity=.4](C,H,I A,K,J)
-\end{tikzpicture}
-\hspace*{\fill}
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawArc(J,X)(Y)
+ \tkzDrawCircles(I,H O,A)
+ \tkzDrawCircle[red](w,I)
+ \tkzDrawLines(Y,C A,B X,C E,w E,B)
+ \tkzDrawSegments[blue](J,C J,K I,H I,O w,B)
+ \tkzDrawPoints(A,B,C,I,J,E,w,H,K,O)
+ \tkzLabelPoints(A,B,C,J,I,w,H,K,E,O)
+ \tkzMarkRightAngles[fill=gray!20,opacity=.4](C,H,I A,K,J)
+ \end{tikzpicture}
+\end{center}
+
+
\end{minipage}
% subsection euler_relation (end)
@@ -1242,20 +1627,23 @@ z.D = intersection (T.ext.ab,T.ABC.ab)
z.E = z.C: symmetry (z.B)
\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawPolygon(A,B,C)
-\tkzDrawLine[purple,add=0 and .5](B,C)
-\tkzDrawSegment[purple](A,D)
-\tkzDrawSegment[orange](C,D)
-\tkzFillAngles[purple!30,opacity=.2](D,C,A E,C,D)
-\tkzMarkAngles[mark=|](D,C,A E,C,D)
-\tkzDrawPoints(A,...,D)
-\tkzLabelPoints[above](C)
-\tkzLabelPoints(A,B,D)
-\end{tikzpicture}
-\hspace*{\fill}
+
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygon(A,B,C)
+ \tkzDrawLine[purple,add=0 and .5](B,C)
+ \tkzDrawSegment[purple](A,D)
+ \tkzDrawSegment[orange](C,D)
+ \tkzFillAngles[purple!30,opacity=.2](D,C,A E,C,D)
+ \tkzMarkAngles[mark=|](D,C,A E,C,D)
+ \tkzDrawPoints(A,...,D)
+ \tkzLabelPoints[above](C)
+ \tkzLabelPoints(A,B,D)
+ \end{tikzpicture}
+\end{center}
+
+
\end{minipage}
% subsection external_angle (end)
@@ -1304,19 +1692,22 @@ L.LL = T.ab: ll_from (z.C)
L.AD = line: new (z.A,z.D)
z.E = intersection (L.LL,L.AD)
\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawPolygon(A,B,C)
-\tkzDrawLine[purple](C,E)
-\tkzDrawSegment[purple](A,E)
-\tkzFillAngles[purple!30,opacity=.4](B,A,C C,E,D)
-\tkzMarkAngles[mark=|](B,A,D D,A,C C,E,D)
-\tkzDrawPoints(A,...,E)
-\tkzLabelPoints(A,B)
-\tkzLabelPoints[above](C,D,E)
-\tkzMarkSegments(A,C C,E)
-\end{tikzpicture}
+
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygon(A,B,C)
+ \tkzDrawLine[purple](C,E)
+ \tkzDrawSegment[purple](A,E)
+ \tkzFillAngles[purple!30,opacity=.4](B,A,C C,E,D)
+ \tkzMarkAngles[mark=|](B,A,D D,A,C C,E,D)
+ \tkzDrawPoints(A,...,E)
+ \tkzLabelPoints(A,B)
+ \tkzLabelPoints[above](C,D,E)
+ \tkzMarkSegments(A,C C,E)
+ \end{tikzpicture}
+\end{center}
+
\end{minipage}
%subsection internal_angle (end)
@@ -1392,18 +1783,20 @@ L.LH = line: new (z.L,z.H)
z.F = intersection (L.LH,C.IH) -- feuerbach
\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}[rotate=90]
-\tkzGetNodes
-\tkzDrawLine(L,F)
-\tkzDrawCircle[red](N,A')
-\tkzDrawCircle[blue](I,H)
-\tkzDrawCircles[teal](O,A L,C')
-\tkzDrawSegments(M,L B,U Q,C C,X A,P B,Q)
-\tkzDrawPolygons(A,B,C A',B',C')
-\tkzDrawPoints(A,B,C,N,H,A',B',C',U,L,M,P,Q,F,I)
-\tkzLabelPoints(A,B,C,N,H,A',B',C',U,L,M,P,Q,F,I)
-\end{tikzpicture}
+\begin{center}
+ \begin{tikzpicture}[rotate=90]
+ \tkzGetNodes
+ \tkzDrawLine(L,F)
+ \tkzDrawCircle[red](N,A')
+ \tkzDrawCircle[blue](I,H)
+ \tkzDrawCircles[teal](O,A L,C')
+ \tkzDrawSegments(M,L B,U Q,C C,X A,P B,Q)
+ \tkzDrawPolygons(A,B,C A',B',C')
+ \tkzDrawPoints(A,B,C,N,H,A',B',C',U,L,M,P,Q,F,I)
+ \tkzLabelPoints(A,B,C,N,H,A',B',C',U,L,M,P,Q,F,I)
+ \end{tikzpicture}
+\end{center}
+
\end{minipage}
% subsection nine_points (end)
@@ -1448,15 +1841,17 @@ L.AK = line: new (z.Y,z.K)
z.C = intersection (L.AK,L.AB)
\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawLines(A,B X,K)
-\tkzDrawLine[teal](Y,K)
-\tkzDrawPoints(A,B,C,X,Y,M,K)
-\tkzDrawArc[delta=20](M,A)(K)
-\tkzLabelPoints(A,B,C)
-\end{tikzpicture}
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawLines(A,B X,K)
+ \tkzDrawLine[teal](Y,K)
+ \tkzDrawPoints(A,B,C,X,Y,M,K)
+ \tkzDrawArc[delta=20](M,A)(K)
+ \tkzLabelPoints(A,B,C)
+ \end{tikzpicture}
+\end{center}
+
\end{minipage}
%subsection gold_ratio_with_segment (end)
@@ -1502,13 +1897,15 @@ L.AB = line: new (z.A,z.B)
z.O_0 = L.AB.mid
\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircles(O_1,C O_2,B O_0,B O_1,x)
-\tkzDrawPoints(A,C,B,O_1,O_2,O_0,x)
-\tkzLabelPoints[below right](A,C,B)
-\end{tikzpicture}
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawCircles(O_1,C O_2,B O_0,B O_1,x)
+ \tkzDrawPoints(A,C,B,O_1,O_2,O_0,x)
+ \tkzLabelPoints[below right](A,C,B)
+ \end{tikzpicture}
+\end{center}
+
\end{minipage}
% subsection gold_arbelos (end)
@@ -1554,15 +1951,16 @@ z.O_0 = L.AB.mid
L.GF = line :new (z.G,z.F)
z.C = intersection (L.GF,L.AB)
\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
- \tkzGetNodes
- \tkzDrawLines(A,B A,G A,D A,G F,E G,F G,D)
- \tkzDrawPoints(A,B,G,E,F,C,D)
- \tkzLabelPoints(A,B,G,E,F,C,D)
- \tkzMarkSegments(F,B B,E)
-\end{tikzpicture}
-\hspace*{\fill}
+
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawLines(A,B A,G A,D A,G F,E G,F G,D)
+ \tkzDrawPoints(A,B,G,E,F,C,D)
+ \tkzLabelPoints(A,B,G,E,F,C,D)
+ \tkzMarkSegments(F,B B,E)
+ \end{tikzpicture}
+\end{center}
\end{minipage}
% subsection harmonic_division_v1 (end)
@@ -1616,13 +2014,15 @@ L.GX = line: new (z.G,z.X)
z.C = intersection (L.GX,L.AB)
\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawLines(A,D A,E B,F D,F X,A X,B X,C)
-\tkzDrawPoints(A,...,G,X)
-\tkzLabelPoints(A,...,G,X)
-\end{tikzpicture}
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawLines(A,D A,E B,F D,F X,A X,B X,C)
+ \tkzDrawPoints(A,...,G,X)
+ \tkzLabelPoints(A,...,G,X)
+ \end{tikzpicture}
+\end{center}
+
\end{minipage}
% subsection harmonic_division_v2 (end)
@@ -1666,390 +2066,21 @@ z.Q = intersection (L.AC,L.PX)
z.R = intersection (L.BC,L.PX)
\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawPolygon(A,B,C)
-\tkzDrawLine[new](P,R)
-\tkzDrawLines(P,B A,C B,C)
-\tkzDrawPoints(P,Q,R,A,B,C)
-\tkzLabelPoints(A,B,C,P,Q,R)
-\end{tikzpicture}
-\hspace*{\fill}
-\end{minipage}
-% subsection menelaus (end)
-
-\subsection{Radical axis v1} % (fold)
-\label{sub:radical_axis_v1}
-
-\begin{Verbatim}
-\begin{tkzelements}
-scale = .75
-z.X = point : new (0,0)
-z.B = point : new (2,2)
-z.Y = point : new (7,1)
-z.Ap = point : new (8,-1)
-L.XY = line : new (z.X,z.Y)
-C.XB = circle : new (z.X,z.B)
-C.YAp = circle : new (z.Y,z.Ap)
-z.E,z.F = get_points (C.XB : radical_axis (C.YAp))
-z.A = C.XB : point (0.4)
-T.ABAp = triangle: new (z.A,z.B,z.Ap)
-z.O = T.ABAp.circumcenter
-C.OAp = circle : new (z.O,z.Ap)
-_,z.Bp = intersection (C.OAp,C.YAp)
-L.AB = line : new (z.A,z.B)
-L.ApBp = line : new (z.Ap,z.Bp)
-z.M = intersection (L.AB,L.ApBp)
-z.H = L.XY : projection (z.M)
-\end{tkzelements}
-\begin{tikzpicture}
- \tkzGetNodes
- \tkzDrawCircles(X,B Y,A')
- \tkzDrawArc[dashed,delta=30](O,A')(A)
- \tkzDrawPoints(A,B,A',B',M,H,X,Y,O,E,F)
- \tkzDrawLines[red](A,M A',M X,Y E,F)
- \tkzDrawLines[red,add=1 and 3](M,H)
-\end{tikzpicture}
-\end{Verbatim}
-
-\begin{tkzelements}
-scale = .75
-z.X = point : new (0,0)
-z.B = point : new (2,2)
-z.Y = point : new (7,1)
-z.Ap = point : new (8,-1)
-L.XY = line : new (z.X,z.Y)
-C.XB = circle : new (z.X,z.B)
-C.YAp = circle : new (z.Y,z.Ap)
-z.E,z.F = get_points (C.XB : radical_axis (C.YAp))
-z.A = C.XB : point (0.4)
-T.ABAp = triangle: new (z.A,z.B,z.Ap)
-z.O = T.ABAp.circumcenter
-C.OAp = circle : new (z.O,z.Ap)
-_,z.Bp = intersection (C.OAp,C.YAp)
-L.AB = line : new (z.A,z.B)
-L.ApBp = line : new (z.Ap,z.Bp)
-z.M = intersection (L.AB,L.ApBp)
-z.H = L.XY : projection (z.M)
-\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircles(X,B Y,A')
-\tkzDrawArc[dashed,delta=30](O,A')(A)
-\tkzDrawPoints(A,B,A',B',M,H,X,Y,O,E,F)
-\tkzDrawLines[red](A,M A',M X,Y E,F)
-\tkzDrawLines[red,add=1 and 3](M,H)
-\end{tikzpicture}
-% subsection radical_axis_v1 (end)
-
-\subsection{Radical axis v2} % (fold)
-\label{sub:radical_axis_v2}
-
-\begin{Verbatim}
-\begin{tkzelements}
-scale = 1.25
-z.O = point : new (-1,0)
-z.Op = point : new (4,-1)
-z.B = point : new (0,2)
-z.D = point : new (4,0)
-C.OB = circle : new (z.O,z.B)
-C.OpD = circle : new (z.Op,z.D)
-L.EF = C.OB : radical_axis (C.OpD)
-z.E,z.F = get_points (L.EF)
-z.M = L.EF : point (.75)
-L.MT,L.MTp = C.OB : tangent_from (z.M)
-_,z.T = get_points (L.MT)
-_,z.Tp = get_points (L.MTp)
-L.MK,L.MKp = C.OpD : tangent_from (z.M)
-_,z.K = get_points (L.MK)
-_,z.Kp = get_points (L.MKp)
-\end{tkzelements}
-\begin{tikzpicture}
- \tkzGetNodes
- \tkzDrawCircles(O,B O',D)
- \tkzDrawLine(E,F)
- \tkzDrawLine[add=.5 and .5](O,O')
- \tkzDrawLines[add = 0 and .5](M,T M,T' M,K M,K')
- \tkzDrawCircle(M,T)
- \tkzDrawPoints(O,O',T,M,T',K,K')
- \tkzLabelPoints(O,O',T,T',K,K',M)
-\end{tikzpicture}
-\end{Verbatim}
-
-\begin{tkzelements}
-scale =1.25
-z.O = point : new (-1,0)
-z.Op = point : new (4,-1)
-z.B = point : new (0,2)
-z.D = point : new (4,0)
-C.OB = circle : new (z.O,z.B)
-C.OpD = circle : new (z.Op,z.D)
-L.EF = C.OB : radical_axis (C.OpD)
-z.E,z.F = get_points (L.EF)
-z.M = L.EF : point (.75)
-L.MT,L.MTp = C.OB : tangent_from (z.M)
-_,z.T = get_points (L.MT)
-_,z.Tp = get_points (L.MTp)
-L.MK,L.MKp = C.OpD : tangent_from (z.M)
-_,z.K = get_points (L.MK)
-_,z.Kp = get_points (L.MKp)
-\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircles(O,B O',D)
-\tkzDrawLine(E,F)
-\tkzDrawLine[add=.5 and .5](O,O')
-\tkzDrawLines[add = 0 and .5](M,T M,T' M,K M,K')
-\tkzDrawCircle(M,T)
-\tkzDrawPoints(O,O',T,M,T',K,K')
-\tkzLabelPoints(O,O',T,T',K,K',M)
-\end{tikzpicture}
-\hspace*{\fill}
-% subsection radical_axis_v2 (end)
-
-\subsection{Radical axis v3} % (fold)
-\label{sub:radical_axis_v3}
-
-\begin{Verbatim}
- \begin{tkzelements}
- z.O = point : new (0,0)
- z.B = point : new (4,0)
- z.Op = point : new (6,0)
- C.OB = circle : new (z.O,z.B)
- C.OpB = circle : new (z.Op,z.B)
- L.EF = C.OB : radical_axis (C.OpB)
- z.E,z.F = get_points(L.EF)
- z.M = L.EF : point (0.2)
- L = C.OB : tangent_from (z.M)
- _,z.T = get_points (L)
- L = C.OpB : tangent_from (z.M)
- _,z.Tp = get_points (L)
-\end{tkzelements}
-\begin{tikzpicture}
- \tkzGetNodes
- \tkzDrawCircles(O,B O',B)
- \tkzDrawSegments(M,T M,T')
- \tkzDrawSegments(E,F)
- \tkzDrawLine[add=.5 and .5](O,O')
- \tkzDrawPoints(O,B,O',E,F,M,T,T')
- \tkzLabelPoints(O,O',B,E,F,T,T')
- \tkzDrawArc(M,T')(T)
-\end{tikzpicture}
-\end{Verbatim}
-
-\begin{tkzelements}
-z.O = point : new (0,0)
-z.B = point : new (4,0)
-z.Op = point : new (6,0)
-C.OB = circle : new (z.O,z.B)
-C.OpB = circle : new (z.Op,z.B)
-L.EF = C.OB : radical_axis (C.OpB)
-z.E,z.F = get_points(L.EF)
-z.M = L.EF : point (0.2)
-L = C.OB : tangent_from (z.M)
-_,z.T = get_points (L)
-L = C.OpB : tangent_from (z.M)
-_,z.Tp = get_points (L)
-\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircles(O,B O',B)
-\tkzDrawSegments(M,T M,T')
-\tkzDrawSegments(E,F)
-\tkzDrawLine[add=.5 and .5](O,O')
-\tkzDrawPoints(O,B,O',E,F,M,T,T')
-\tkzLabelPoints(O,O',B,E,F,T,T')
-\tkzDrawArc(M,T')(T)
-\end{tikzpicture}
-\hspace*{\fill}
-% subsection radical_axis_v3 (end)
-
-\subsection{Radical axis v4} % (fold)
-\label{sub:radical_axis_v4}
-\begin{Verbatim}
-\begin{tkzelements}
- z.O = point : new (0,0)
- z.B = point : new (5,0)
- z.Op = point : new (3,0)
- C.OB = circle : new (z.O,z.B)
- C.OpB = circle : new (z.Op,z.B)
- L.EF = C.OB : radical_axis (C.OpB)
- z.E,z.F = get_points(L.EF)
- z.H = L.EF.mid
- z.M = L.EF : point (.8)
- _,L = C.OB : tangent_from (z.M)
- _,z.T = get_points (L)
- _,L = C.OpB : tangent_from (z.M)
- _,z.Tp = get_points (L)
-\end{tkzelements}
-\begin{tikzpicture}
- \tkzGetNodes
- \tkzDrawCircles(O,B O',B)
- \tkzDrawSegments(M,T M,T')
- \tkzDrawSegments(E,F)
- \tkzDrawLine[add=.3 and .3](O,H)
- \tkzDrawPoints(O,O',B,E,H,M)
- \tkzLabelPoints[below right](O,O',E,F,M,T,T')
- \tkzDrawArc(M,B)(T)
-\end{tikzpicture}
-\end{Verbatim}
-
-
-\begin{tkzelements}
- z.O = point : new (0,0)
- z.B = point : new (5,0)
- z.Op = point : new (3,0)
- C.OB = circle : new (z.O,z.B)
- C.OpB = circle : new (z.Op,z.B)
- L.EF = C.OB : radical_axis (C.OpB)
- z.E,z.F = get_points(L.EF)
- z.H = L.EF.mid
- z.M = L.EF : point (.8)
- _,L = C.OB : tangent_from (z.M)
- _,z.T = get_points (L)
- _,L = C.OpB : tangent_from (z.M)
- _,z.Tp = get_points (L)
-\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
- \tkzGetNodes
- \tkzDrawCircles(O,B O',B)
- \tkzDrawSegments(M,T M,T')
- \tkzDrawSegments(E,F)
- \tkzDrawLine[add=.3 and .3](O,H)
- \tkzDrawPoints(O,O',B,E,H,M)
- \tkzLabelPoints[below right](O,O',E,F,M,T,T')
- \tkzDrawArc(M,B)(T)
-\end{tikzpicture}
-\hspace*{\fill}
-% subsection radical_axis_v4 (end)
-
-\subsection{Radical center} % (fold)
-\label{sub:radical_center}
-\begin{minipage}[t]{.5\textwidth}\vspace{0pt}%
-\begin{Verbatim}
-\begin{tkzelements}
- z.O = point : new (0,0)
- z.x = point : new (1,0)
- z.y = point : new (4,0)
- z.z = point : new (2,0)
- z.Op = point : new (4,2)
- z.P = point : new (2,2.5)
- C.Ox = circle : new (z.O,z.x)
- C.Pz = circle : new (z.P,z.z)
- C.Opy = circle : new (z.Op,z.y)
- z.ap,z.a = intersection (C.Ox,C.Pz)
- z.bp,z.b = intersection (C.Opy,C.Pz)
- L.aap = line : new (z.a,z.ap)
- L.bbp = line : new (z.b,z.bp)
- z.X = intersection (L.aap,L.bbp)
--- or z.X = radical_center(C.Ox,C.Pz,C.Opy)
- L.OOp = line : new (z.O,z.Op)
- z.H = L.OOp : projection (z.X)
-\end{tkzelements}
-\begin{tikzpicture}
- \tkzGetNodes
- \tkzDrawCircles(O,a O',b P,z)
- \tkzDrawLines[red](a,X b',X H,X O,O')
- \tkzDrawPoints(O,O',P,a,a',b,b',X,H)
- \tkzLabelPoints[below right](O,O',P,H)
-\end{tikzpicture}
-\end{Verbatim}
-\end{minipage}
-\begin{minipage}[t]{.5\textwidth}\vspace{0pt}%
-\begin{tkzelements}
-z.O = point : new (0,0)
-z.x = point : new (1,0)
-z.y = point : new (4,0)
-z.z = point : new (2,0)
-z.Op = point : new (4,2)
-z.P = point : new (2,2.5)
-C.Ox = circle : new (z.O,z.x)
-C.Pz = circle : new (z.P,z.z)
-C.Opy = circle : new (z.Op,z.y)
-z.ap,z.a = intersection (C.Ox,C.Pz)
-z.bp,z.b = intersection (C.Opy,C.Pz)
-L.aap = line : new (z.a,z.ap)
-L.bbp = line : new (z.b,z.bp)
-z.X = intersection (L.aap,L.bbp)
-L.OOp = line : new (z.O,z.Op)
-z.H = L.OOp : projection (z.X)
-\end{tkzelements}
-
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircles(O,a O',b P,z)
-\tkzDrawLines[red](a,X b',X H,X O,O')
-\tkzDrawPoints(O,O',P,a,a',b,b',X,H)
-\tkzLabelPoints[below right](O,O',P,H)
-\end{tikzpicture}
-\end{minipage}
-% subsection radical_center (end)
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygon(A,B,C)
+ \tkzDrawLine[new](P,R)
+ \tkzDrawLines(P,B A,C B,C)
+ \tkzDrawPoints(P,Q,R,A,B,C)
+ \tkzLabelPoints(A,B,C,P,Q,R)
+ \end{tikzpicture}
+\end{center}
-\subsection{Radical circle} % (fold)
-\label{sub:radical_circle}
-\begin{minipage}[t]{.5\textwidth}\vspace{0pt}%
-\begin{Verbatim}
-\begin{tkzelements}
- scale = .5
- z.A = point: new (0,0)
- z.B = point: new (6,0)
- z.C = point: new (0.8,4)
- T.ABC = triangle : new ( z.A,z.B,z.C )
- C.exa = T.ABC : ex_circle ()
- z.I_a,z.Xa = get_points (C.exa)
- C.exb = T.ABC : ex_circle (1)
- z.I_b,z.Xb = get_points (C.exb)
- C.exc = T.ABC : ex_circle (2)
- z.I_c,z.Xc = get_points (C.exc)
- C.ortho = C.exa : radical_circle (C.exb,C.exc)
- z.w,z.a = get_points (C.ortho)
-\end{tkzelements}
-\begin{tikzpicture}
- \tkzGetNodes
- \tkzDrawPolygon(A,B,C)
- \tkzDrawCircles(I_a,Xa I_b,Xb I_c,Xc)
- \tkzDrawCircles[red,thick](w,a)
- \tkzDrawPoints(A,B,C)
- \tkzLabelPoints(A,B,C)
-\end{tikzpicture}
-\end{Verbatim}
\end{minipage}
+% subsection menelaus (end)
-\begin{tkzelements}
- scale = .5
- z.A = point: new (0,0)
- z.B = point: new (6,0)
- z.C = point: new (0.8,4)
- T.ABC = triangle : new ( z.A,z.B,z.C )
- C.exa = T.ABC : ex_circle ()
- z.I_a,z.Xa = get_points (C.exa)
- C.exb = T.ABC : ex_circle (1)
- z.I_b,z.Xb = get_points (C.exb)
- C.exc = T.ABC : ex_circle (2)
- z.I_c,z.Xc = get_points (C.exc)
- C.ortho = C.exa : radical_circle (C.exb,C.exc)
- z.w,z.a = get_points (C.ortho)
-\end{tkzelements}
-
-\hspace*{\fill}
-\begin{tikzpicture}
- \tkzGetNodes
- \tkzDrawPolygon(A,B,C)
- \tkzDrawCircles(I_a,Xa I_b,Xb I_c,Xc)
- \tkzDrawCircles[red,thick](w,a)
- \tkzDrawPoints(A,B,C)
- \tkzLabelPoints(A,B,C)
-\end{tikzpicture}
-\hspace*{\fill}
-
-% subsection radical_circle (end)
\subsection{Euler ellipse} % (fold)
\label{sub:hexagram}
@@ -2136,21 +2167,22 @@ _,z.W = intersection (L.ZO,E)
\end{Verbatim}
\end{minipage}
\begin{minipage}{.6\textwidth}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawPolygon(A,B,C)
-\tkzDrawCircles[red](N,Ma O,A)
-\tkzDrawSegments(A,X B,Y C,Z B,Hb C,Hc X,O Y,O Z,O)
-\tkzDrawPolygon[red](U,V,W)
-\tkzLabelPoints[red](U,V,W)
-\tkzLabelPoints(A,B,C,X,Y,Z)
-\tkzDrawLine[blue](I,J)
-\tkzLabelPoints[blue,right](O,N,G,H,I,J)
-\tkzDrawPoints(I,J,U,V,W)
-\tkzDrawPoints(A,B,C,N,G,H,O,X,Y,Z,Ma,Mb,Mc,Ha,Hb,Hc)
-\tkzDrawEllipse[blue](N,\tkzUseLua{a},\tkzUseLua{b},\tkzUseLua{ang})
-\end{tikzpicture}
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygon(A,B,C)
+ \tkzDrawCircles[red](N,Ma O,A)
+ \tkzDrawSegments(A,X B,Y C,Z B,Hb C,Hc X,O Y,O Z,O)
+ \tkzDrawPolygon[red](U,V,W)
+ \tkzLabelPoints[red](U,V,W)
+ \tkzLabelPoints(A,B,C,X,Y,Z)
+ \tkzDrawLine[blue](I,J)
+ \tkzLabelPoints[blue,right](O,N,G,H,I,J)
+ \tkzDrawPoints(I,J,U,V,W)
+ \tkzDrawPoints(A,B,C,N,G,H,O,X,Y,Z,Ma,Mb,Mc,Ha,Hb,Hc)
+ \tkzDrawEllipse[blue](N,\tkzUseLua{a},\tkzUseLua{b},\tkzUseLua{ang})
+ \end{tikzpicture}
+\end{center}
\end{minipage}
\begin{Verbatim}
@@ -2165,8 +2197,8 @@ _,z.W = intersection (L.ZO,E)
\tkzDrawLine[blue](I,J)
\tkzLabelPoints[blue,right](O,N,G,H,I,J)
\tkzDrawPoints(I,J,U,V,W)
- \tkzDrawPoints(A,B,C,N,G,H,O,X,Y,Z,Ma,Mb,Mc,Ha,Hb,Hc)
- \tkzDrawEllipse[blue](N,\tkzUseLua{a},\tkzUseLua{b},\tkzUseLua{ang})
+ \tkzDrawPoints(A,B,C,N,G,H,O,X,Y,Z,Ma,Mb,Mc,Ha,Hb,Hc)
+ \tkzDrawEllipse[blue](N,\tkzUseLua{a},\tkzUseLua{b},\tkzUseLua{ang})
\end{tikzpicture}
\end{Verbatim}
@@ -2256,36 +2288,39 @@ z.O = C.DC : inversion (z.W)
\end{Verbatim}
\end{minipage}
\begin{minipage}{.6\textwidth}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircles[teal](O_1,B)
-\tkzDrawSemiCircles[thin,teal](O_2,C O_3,B)
-\tkzDrawArc[purple,delta=0](D,V)(U)
-\tkzDrawCircle[new](O_7,C)
-\tkzDrawSegments[thin,purple](A,D D,B C,R C,S C,D U,V)
-\tkzDrawSegments[thin,red](O,D A,O O,B)
-\tkzDrawPoints(A,B,C,D,O_7) %,
-\tkzDrawPoints(O_1,O_2,O_3,U,V,R,S,W,O)
-\tkzDrawSegments[cyan](O_3,S O_2,R)
-\tkzDrawSegments[very thin](A,B)
-\tkzDrawSegments[cyan,thin](C,U U,D)
-\tkzMarkRightAngles[size=.2,fill=gray!40,opacity=.4](D,C,A A,D,B
- D,S,C D,W,V O_3,S,U O_2,R,U)
-\tkzFillAngles[cyan!40,opacity=.4](B,A,D A,D,O_1
- C,D,B D,C,R B,C,S A,R,O_2)
-\tkzFillAngles[green!40,opacity=.4](S,C,D W,R,D
- D,B,C R,C,A O_3,S,B)
-\tkzLabelPoints[below](C,O_2,O_3,O_1)
-\tkzLabelPoints[above](D)
-\tkzLabelPoints[below](O)
-\tkzLabelPoints[below left](A)
-\tkzLabelPoints[above left](R)
-\tkzLabelPoints[above right](S)
-\tkzLabelPoints[left](V)
-\tkzLabelPoints[below right](B,U,W,O_7)
-\end{tikzpicture}
-\hspace*{\fill}
+
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawCircles[teal](O_1,B)
+ \tkzDrawSemiCircles[thin,teal](O_2,C O_3,B)
+ \tkzDrawArc[purple,delta=0](D,V)(U)
+ \tkzDrawCircle[new](O_7,C)
+ \tkzDrawSegments[thin,purple](A,D D,B C,R C,S C,D U,V)
+ \tkzDrawSegments[thin,red](O,D A,O O,B)
+ \tkzDrawPoints(A,B,C,D,O_7) %,
+ \tkzDrawPoints(O_1,O_2,O_3,U,V,R,S,W,O)
+ \tkzDrawSegments[cyan](O_3,S O_2,R)
+ \tkzDrawSegments[very thin](A,B)
+ \tkzDrawSegments[cyan,thin](C,U U,D)
+ \tkzMarkRightAngles[size=.2,fill=gray!40,opacity=.4](D,C,A A,D,B
+ D,S,C D,W,V O_3,S,U O_2,R,U)
+ \tkzFillAngles[cyan!40,opacity=.4](B,A,D A,D,O_1
+ C,D,B D,C,R B,C,S A,R,O_2)
+ \tkzFillAngles[green!40,opacity=.4](S,C,D W,R,D
+ D,B,C R,C,A O_3,S,B)
+ \tkzLabelPoints[below](C,O_2,O_3,O_1)
+ \tkzLabelPoints[above](D)
+ \tkzLabelPoints[below](O)
+ \tkzLabelPoints[below left](A)
+ \tkzLabelPoints[above left](R)
+ \tkzLabelPoints[above right](S)
+ \tkzLabelPoints[left](V)
+ \tkzLabelPoints[below right](B,U,W,O_7)
+ \end{tikzpicture}
+\end{center}
+
+
\end{minipage}
\begin{Verbatim}
@@ -2379,25 +2414,27 @@ z.O = C.DC : inversion (z.W)
z.xa,z.xb,z.xc = C.ortho : inversion (z.Ea,z.Eb,z.Ec)
\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
- \tkzGetNodes
-\tkzDrawCircles[red](O,xa N,Ea)
-\tkzFillCircles[green!30!black,opacity=.3](O,xa)
-\tkzFillCircles[yellow!30,opacity=.7](Ja,Ea Jb,Eb Jc,Ec)
-\tkzFillCircles[teal!30!black,opacity=.3](S,a)
-\tkzFillCircles[green!30,opacity=.3](N,Ea)
-\tkzDrawPoints[red](Ea,Eb,Ec,xa,xb,xc,N)
-\tkzClipCircle(O,xa)
-\tkzDrawLines[add=3 and 3](A,B A,C B,C)
-\tkzDrawCircles(Ja,Ea Jb,Eb Jc,Ec)
-\tkzFillCircles[lightgray!30,opacity=.7](Ja,Ea Jb,Eb Jc,Ec)
-\tkzDrawCircles[teal](S,a)
-\tkzDrawPoints(A,B,C,O)
-\tkzDrawPoints[teal](S)
-\tkzLabelPoints(A,B,C,O,S,N)
-\end{tikzpicture}
-\hspace*{\fill}
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawCircles[red](O,xa N,Ea)
+ \tkzFillCircles[green!30!black,opacity=.3](O,xa)
+ \tkzFillCircles[yellow!30,opacity=.7](Ja,Ea Jb,Eb Jc,Ec)
+ \tkzFillCircles[teal!30!black,opacity=.3](S,a)
+ \tkzFillCircles[green!30,opacity=.3](N,Ea)
+ \tkzDrawPoints[red](Ea,Eb,Ec,xa,xb,xc,N)
+ \tkzClipCircle(O,xa)
+ \tkzDrawLines[add=3 and 3](A,B A,C B,C)
+ \tkzDrawCircles(Ja,Ea Jb,Eb Jc,Ec)
+ \tkzFillCircles[lightgray!30,opacity=.7](Ja,Ea Jb,Eb Jc,Ec)
+ \tkzDrawCircles[teal](S,a)
+ \tkzDrawPoints(A,B,C,O)
+ \tkzDrawPoints[teal](S)
+ \tkzLabelPoints(A,B,C,O,S,N)
+ \end{tikzpicture}
+\end{center}
+
+
% subsection apollonius_circle_v1_with_inversion (end)
\subsection{Apollonius circle v2} % (fold)
@@ -2472,82 +2509,24 @@ L.MaS = line: new (z.Ma,z.S)
z.t = intersection (L.ox,L.MaS) -- through
\end{tkzelements}
-
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawLines[add=1 and 1](A,B A,C B,C)
-\tkzDrawCircles(Ja,Xa Jb,Xb Jc,Xc o,t N,Ma) %
-\tkzClipCircle(o,t)
-\tkzDrawLines[red](o,L N,o Ma,t)
-\tkzDrawLines[cyan,add=4 and 4](Ma,N o,t)
-\tkzDrawPoints(A,B,C,Ma,Ja,Jb,Jc)
-\tkzDrawPoints[red](N,O,L,S,o,t)
-\tkzLabelPoints[right,font=\tiny](A,B,C,Ja,Jb,Jc,O,N,L,S,Ma,o)
-\end{tikzpicture}
-\hspace*{\fill}
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawLines[add=1 and 1](A,B A,C B,C)
+ \tkzDrawCircles(Ja,Xa Jb,Xb Jc,Xc o,t N,Ma) %
+ \tkzClipCircle(o,t)
+ \tkzDrawLines[red](o,L N,o Ma,t)
+ \tkzDrawLines[cyan,add=4 and 4](Ma,N o,t)
+ \tkzDrawPoints(A,B,C,Ma,Ja,Jb,Jc)
+ \tkzDrawPoints[red](N,O,L,S,o,t)
+ \tkzLabelPoints[right,font=\tiny](A,B,C,Ja,Jb,Jc,O,N,L,S,Ma,o)
+ \end{tikzpicture}
+\end{center}
% subsection apollonius_circle_v2 (end)
-\subsection{Orthogonal circles v1} % (fold)
-\label{sub:orthogonal_circles_v1}
-
-\begin{Verbatim}
-\begin{tkzelements}
- scale = .6
- z.C_1 = point: new (0,0)
- z.C_2 = point: new (8,0)
- z.A = point: new (5,0)
- C = circle: new (z.C_1,z.A)
- z.S,z.T = get_points (C: orthogonal_from (z.C_2))
-\end{tkzelements}
-\begin{tikzpicture}
- \tkzGetNodes
- \tkzDrawCircles(C_1,T C_2,T)
- \tkzDrawSegments(C_1,T C_2,T)
- \tkzDrawLine(C_1,C_2)
- \tkzMarkRightAngle[fill=teal,%
- opacity=.2,size=1](C_1,T,C_2)
- \tkzDrawPoints(C_1,C_2,T)
- \tkzLabelPoints(C_1,C_2)
- \tkzLabelPoints[above](T)
- \tkzLabelSegment[left](C_1,T){r}
- \tkzLabelSegments[right](C_2,T){$\gamma$}
- \tkzLabelSegment[below](C_1,C_2){d}
- \tkzLabelCircle[left=10pt](C_1,T)(180){Circle 1}
- \tkzLabelCircle[right=10pt](C_2,T)(180){Circle 2}
-\end{tikzpicture}
-\end{Verbatim}
-
-\begin{tkzelements}
-scale = .6
-z.C_1 = point: new (0,0)
-z.C_2 = point: new (8,0)
-z.A = point: new (5,0)
-C = circle: new (z.C_1,z.A)
-z.S,z.T = get_points (C: orthogonal_from (z.C_2))
-\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircles(C_1,T C_2,T)
-\tkzDrawSegments(C_1,T C_2,T)
-\tkzDrawLine(C_1,C_2)
-\tkzMarkRightAngle[fill=teal,opacity=.2,size=.5](C_1,T,C_2)
-\tkzDrawPoints(C_1,C_2,T)
-\tkzLabelPoints(C_1,C_2)
-\tkzLabelPoints[above](T)
-\tkzLabelSegment[left](C_1,T){r}
-\tkzLabelSegments[right](C_2,T){$\gamma$}
-\tkzLabelSegment[below](C_1,C_2){d}
-\tkzLabelCircle[left=10pt](C_1,T)(180){Circle 1}
-\tkzLabelCircle[right=10pt](C_2,T)(180){Circle 2}
-\end{tikzpicture}
-\hspace*{\fill}
-% subsection orthogonal_circles_v1 (end)
-
-\subsection{Orthogonal circles v2} % (fold)
+\subsection{Orthogonal circles} % (fold)
\label{sub:orthogonal_circles_v2}
\begin{Verbatim}
@@ -2602,24 +2581,26 @@ L.OOp = line : new (z.O,z.Op)
z.M = L.OOp.mid
\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircle[red](O,P)
-\tkzDrawCircle[purple](O',z1)
-\tkzDrawCircle[cyan](M,T)
-\tkzDrawSegments(O',T O,T' O',T')
-\tkzDrawSegment[purple](O',T)
-\tkzDrawSegments[red](O,T O,O')
-\tkzDrawPoints(O,O',T,T',M)
-\tkzMarkRightAngle[fill=gray!10](O',T,O)
-\tkzLabelPoint[below](O){$O$}
-\tkzLabelPoint[above](T){$T$}
-\tkzLabelPoint[above](M){$M$}
-\tkzLabelPoint[below](T'){$T'$}
-\tkzLabelPoint[above left](O'){$O'$}
-\end{tikzpicture}
-\hspace*{\fill}
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawCircle[red](O,P)
+ \tkzDrawCircle[purple](O',z1)
+ \tkzDrawCircle[cyan](M,T)
+ \tkzDrawSegments(O',T O,T' O',T')
+ \tkzDrawSegment[purple](O',T)
+ \tkzDrawSegments[red](O,T O,O')
+ \tkzDrawPoints(O,O',T,T',M)
+ \tkzMarkRightAngle[fill=gray!10](O',T,O)
+ \tkzLabelPoint[below](O){$O$}
+ \tkzLabelPoint[above](T){$T$}
+ \tkzLabelPoint[above](M){$M$}
+ \tkzLabelPoint[below](T'){$T'$}
+ \tkzLabelPoint[above left](O'){$O'$}
+ \end{tikzpicture}
+\end{center}
+
+
% subsection orthogonal_circles_v2 (end)
%
\subsection{Orthogonal circle to two circles} % (fold)
@@ -2674,19 +2655,22 @@ z.Tp = L.Tp.pb
z.Kp = L.Kp.pb
\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircles(O,B O',D)
-\tkzDrawLine[cyan](E,F)
-\tkzDrawLines[add=.5 and .5,orange](O,O' O,T O,T')
-\tkzDrawSegments[cyan](M,T M,T' M,K M,K')
-\tkzDrawCircle(M,T)
-\tkzDrawPoints(O,O',T,M,T',K,K')
-\tkzLabelPoints(O,O',T,T',M,K,K')
-\end{tikzpicture}
-\hspace*{\fill}
-% \subsection{Orthogonal to two circles} % (fold)
+
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawCircles(O,B O',D)
+ \tkzDrawLine[cyan](E,F)
+ \tkzDrawLines[add=.5 and .5,orange](O,O' O,T O,T')
+ \tkzDrawSegments[cyan](M,T M,T' M,K M,K')
+ \tkzDrawCircle(M,T)
+ \tkzDrawPoints(O,O',T,M,T',K,K')
+ \tkzLabelPoints(O,O',T,T',M,K,K')
+ \end{tikzpicture}
+\end{center}
+
+
+% subsection Orthogonal to two circles (fold)
\subsection{Midcircles} % (fold)
\label{sub:midcircles}
@@ -2738,36 +2722,39 @@ z.Ap = z.M_1: symmetry (z.A)
z.H_4,z.F,z.E,z.H_0 = L.AB : projection (z.O_4,z.G,z.H,z.P_0)
\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircle[thin,fill=green!10](O_4,P_0)
-\tkzDrawCircle[purple,fill=purple!10,opacity=.5](O_5,C)
-\tkzDrawSemiCircles[teal](O_0,B)
-\tkzDrawSemiCircles[thin,teal,fill=teal!20,opacity=.5](O_1,C O_2,B)
-\tkzDrawSemiCircles[color = orange](M_2,B)
-\tkzDrawSemiCircles[color = orange](M_1,A')
-\tkzDrawArc[purple,delta=0](M_0,P_0)(C)
-\tkzDrawSegments[very thin](A,B A,P B,Q)
-\tkzDrawSegments[color=cyan](O_0,P_0 B,J G,J G,O_0 H,O_2)
-\tkzDrawSegments[ultra thin,purple](M_1,P_0 M_2,P_0 M_1,M_0 M_0,P_1 M_0,P_0 M_1,J)
-\tkzDrawPoints(A,B,C,P_0,P_2,P_1,M_0,M_1,M_2,J,P,Q,S)
-\tkzDrawPoints(O_0,O_1,O_2,O_4,O_5,G,H)
-\tkzMarkRightAngle[size=.2,fill=gray!20,opacity=.4](O_0,P_0,M_0)
-\tkzLabelPoints[below](A,B,C,M_0,M_1,M_2,O_1,O_2,O_0)
-\tkzLabelPoints[above](P_0,O_5,O_4)
-\tkzLabelPoints[above](P_1,J)
-\tkzLabelPoints[above](P_2,P,Q,S)
-\tkzLabelPoints[above right](H,E)
-\tkzLabelPoints[above left](F,G)
-\tkzLabelPoints[below right](H_0)
-\tkzLabelCircle[below=4pt,font=\scriptsize](O_1,C)(80){$(\beta)$}
-\tkzLabelCircle[below=4pt,font=\scriptsize](O_2,B)(80){$(\gamma)$}
-\tkzLabelCircle[below=4pt,font=\scriptsize](O_0,B)(110){$(\alpha)$}
-\tkzLabelCircle[left,font=\scriptsize](O_4,P_2)(60){$(\delta)$}
-\tkzLabelCircle[above left,font=\scriptsize](O_5,C)(40){$(\epsilon)$}
-\end{tikzpicture}
-\hspace*{\fill}
+
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawCircle[thin,fill=green!10](O_4,P_0)
+ \tkzDrawCircle[purple,fill=purple!10,opacity=.5](O_5,C)
+ \tkzDrawSemiCircles[teal](O_0,B)
+ \tkzDrawSemiCircles[thin,teal,fill=teal!20,opacity=.5](O_1,C O_2,B)
+ \tkzDrawSemiCircles[color = orange](M_2,B)
+ \tkzDrawSemiCircles[color = orange](M_1,A')
+ \tkzDrawArc[purple,delta=0](M_0,P_0)(C)
+ \tkzDrawSegments[very thin](A,B A,P B,Q)
+ \tkzDrawSegments[color=cyan](O_0,P_0 B,J G,J G,O_0 H,O_2)
+ \tkzDrawSegments[ultra thin,purple](M_1,P_0 M_2,P_0 M_1,M_0 M_0,P_1 M_0,P_0 M_1,J)
+ \tkzDrawPoints(A,B,C,P_0,P_2,P_1,M_0,M_1,M_2,J,P,Q,S)
+ \tkzDrawPoints(O_0,O_1,O_2,O_4,O_5,G,H)
+ \tkzMarkRightAngle[size=.2,fill=gray!20,opacity=.4](O_0,P_0,M_0)
+ \tkzLabelPoints[below](A,B,C,M_0,M_1,M_2,O_1,O_2,O_0)
+ \tkzLabelPoints[above](P_0,O_5,O_4)
+ \tkzLabelPoints[above](P_1,J)
+ \tkzLabelPoints[above](P_2,P,Q,S)
+ \tkzLabelPoints[above right](H,E)
+ \tkzLabelPoints[above left](F,G)
+ \tkzLabelPoints[below right](H_0)
+ \tkzLabelCircle[below=4pt,font=\scriptsize](O_1,C)(80){$(\beta)$}
+ \tkzLabelCircle[below=4pt,font=\scriptsize](O_2,B)(80){$(\gamma)$}
+ \tkzLabelCircle[below=4pt,font=\scriptsize](O_0,B)(110){$(\alpha)$}
+ \tkzLabelCircle[left,font=\scriptsize](O_4,P_2)(60){$(\delta)$}
+ \tkzLabelCircle[above left,font=\scriptsize](O_5,C)(40){$(\epsilon)$}
+ \end{tikzpicture}
+\end{center}
+
+
\begin{Verbatim}
\begin{tkzelements}
@@ -2900,18 +2887,20 @@ z.xp,z.yp = get_points (C.C0A : orthogonal_from (z.M_1))
z.O = L.BA.mid
\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircles(C_0,A C_1,A C_3,A C_5,A)
-\tkzDrawCircles[thick,color=red](M_0,x M_1,x')
-\tkzDrawCircles[thick,color=blue](O,A)
-\tkzDrawLines(C_0,C_1 B,M_1)
-\tkzDrawPoints(A,B,C_0,C_1,M_0,M_1,x,y)
-\tkzLabelPoints[below right](A,B,C_0,C_1,M_0,M_1,x,y)
-\tkzLabelLine[pos=1.25,right]( M_0,M_1){$(\Delta)$}
-\end{tikzpicture}
-\hspace*{\fill}
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawCircles(C_0,A C_1,A C_3,A C_5,A)
+ \tkzDrawCircles[thick,color=red](M_0,x M_1,x')
+ \tkzDrawCircles[thick,color=blue](O,A)
+ \tkzDrawLines(C_0,C_1 B,M_1)
+ \tkzDrawPoints(A,B,C_0,C_1,M_0,M_1,x,y)
+ \tkzLabelPoints[below right](A,B,C_0,C_1,M_0,M_1,x,y)
+ \tkzLabelLine[pos=1.25,right]( M_0,M_1){$(\Delta)$}
+ \end{tikzpicture}
+\end{center}
+
+
% subsection pencil_v1 (end)
\subsection{Pencil v2} % (fold)
@@ -2967,123 +2956,20 @@ z.O = L.BA.mid
z.t = C.orth2.through
\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircles(C_0,A C_1,B)
-\tkzDrawCircles[thick,color=red](M_0,u M_1,v M_2,t)
-\tkzDrawLines[add= .75 and .75](C_0,C_1 M_0,M_1)
-\tkzDrawPoints(A,B,C_0,C_1,M_0,M_1,M_2)
-\tkzLabelPoints[below right](A,B,C_0,C_1,M_0,M_1,M_2)
-\tkzLabelLine[pos=2,right]( M_0,M_1){$(\Delta)$}
-\end{tikzpicture}
-\hspace*{\fill}
-%subsection pencil_v2 (end)
-
-\subsection{Power v1} % (fold)
-\label{sub:power_v1}
-\begin{minipage}[t]{.5\textwidth}\vspace{0pt}%
-\begin{Verbatim}
-\begin{tkzelements}
- z.O = point : new (0,0)
- z.A = point : new (2,-2)
- z.M = point : new (-6,0)
- L.AM = line : new (z.A,z.M)
- C.OA = circle : new (z.O,z.A)
- z.Ap = C.OA : antipode (z.A)
- z.B = intersection (L.AM, C.OA)
-\end{tkzelements}
-\begin{tikzpicture}
- \tkzGetNodes
- \tkzDrawCircle(O,A)
- \tkzMarkRightAngle[fill=gray!10](A',B,M)
- \tkzDrawSegments(M,O A,A' A',B)
- \tkzDrawPoints(O,A,A',M,B)
- \tkzLabelPoints(O,A,A',M,B)
- \tkzDrawSegments[-Triangle](M,A M,A')
-\end{tikzpicture}
-\end{Verbatim}
-\end{minipage}
-\begin{minipage}[t]{.5\textwidth}\vspace{0pt}%
-\begin{tkzelements}
-scale = 1
-z.O = point : new (0,0)
-z.A = point : new (2,-2)
-z.M = point : new (-6,0)
-L.AM = line : new (z.A,z.M)
-C.OA = circle : new (z.O,z.A)
-z.Ap = C.OA : antipode (z.A)
-z.B = intersection (L.AM, C.OA)
-\end{tkzelements}
-
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircle(O,A)
-\tkzMarkRightAngle[fill=gray!10](A',B,M)
-\tkzDrawSegments(M,O A,A' A',B)
-\tkzDrawPoints(O,A,A',M,B)
-\tkzLabelPoints(O,A,A',M,B)
-\tkzDrawSegments[-Triangle](M,A M,A')
-\end{tikzpicture}
-\end{minipage}
-% subsection power_v1 (end)
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawCircles(C_0,A C_1,B)
+ \tkzDrawCircles[thick,color=red](M_0,u M_1,v M_2,t)
+ \tkzDrawLines[add= .75 and .75](C_0,C_1 M_0,M_1)
+ \tkzDrawPoints(A,B,C_0,C_1,M_0,M_1,M_2)
+ \tkzLabelPoints[below right](A,B,C_0,C_1,M_0,M_1,M_2)
+ \tkzLabelLine[pos=2,right]( M_0,M_1){$(\Delta)$}
+ \end{tikzpicture}
+\end{center}
-\subsection{Power v2} % (fold)
-\label{sub:power_v2}
-\begin{minipage}[t]{.5\textwidth}\vspace{0pt}%
-\begin{Verbatim}
-\begin{tkzelements}
- z.O = point : new (0,0)
- z.A = point : new (2,2)
- z.M = point : new (-1.5,0)
- L.AM = line : new (z.A,z.M)
- C.OA = circle : new (z.O,z.A)
- z.Ap = C.OA : antipode (z.A)
- _,z.B = intersection (L.AM, C.OA)
- z.m = z.M : north(1)
- L.mM = line : new (z.m,z.M)
- z.U,z.V = intersection (L.mM,C.OA)
-\end{tkzelements}
-\begin{tikzpicture}
- \tkzGetNodes
- \tkzDrawCircle(O,A)
- \tkzMarkRightAngle[fill=gray!10](A',B,M)
- \tkzDrawSegments(M,O A,A' A',B A,B U,V)
- \tkzDrawPoints(O,A,A',M,B,U,V,m)
- \tkzLabelPoints(O,A,M,U,V,m)
- \tkzLabelPoints[below left](A',B)
- \tkzDrawSegments(M,A M,A')
-\end{tikzpicture}
-\end{Verbatim}
-\end{minipage}
-\begin{minipage}[t]{.5\textwidth}\vspace{0pt}%
-\begin{tkzelements}
-scale = 1
-z.O = point : new (0,0)
-z.A = point : new (2,2)
-z.M = point : new (-1.5,0)
-L.AM = line : new (z.A,z.M)
-C.OA = circle : new (z.O,z.A)
-z.Ap = C.OA : antipode (z.A)
-_,z.B = intersection (L.AM, C.OA)
-z.m = z.M : north(1)
-L.mM = line : new (z.m,z.M)
-z.U,z.V = intersection (L.mM,C.OA)
-\end{tkzelements}
+%subsection pencil_v2 (end)
-\hspace*{\fill}\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircle(O,A)
-\tkzMarkRightAngle[fill=gray!10](A',B,M)
-\tkzDrawSegments(M,O A,A' A',B A,B U,V)
-\tkzDrawPoints(O,A,A',M,B,U,V,m)
-\tkzLabelPoints(O,A,M,U,V,m)
-\tkzLabelPoints[below left](A',B)
-\tkzDrawSegments(M,A M,A')
-\end{tikzpicture}
-\end{minipage}
-% subsection power_v2 (end)
\subsection{Reim v1} % (fold)
\label{sub:reim_v1}
@@ -3137,22 +3023,25 @@ z.U,z.V = intersection (L.mM,C.OA)
z.O = intersection (L.EC,L.FD)
\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircles(A,E B,H)
-\tkzDrawSegments(E,D C,F)
-\tkzDrawLines(E,O F,O)
-\tkzDrawLines[red](E,F H,G)
-\tkzDrawPoints(A,...,H,O)
-\tkzLabelPoints(A,B,D,F,G,O)
-\tkzLabelPoints[above](E,C,H)
-\tkzMarkAngles[size=.5](E,C,F E,D,F)
-\tkzFillAngles[green!40,opacity=.4,size=.5](E,C,F E,D,F)
-\tkzMarkAngles[size=.5](F,C,H G,D,E)
-\tkzFillAngles[red!40,opacity=.4,size=.5](F,C,H G,D,E)
-\end{tikzpicture}
-\hspace*{\fill}
+
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawCircles(A,E B,H)
+ \tkzDrawSegments(E,D C,F)
+ \tkzDrawLines(E,O F,O)
+ \tkzDrawLines[red](E,F H,G)
+ \tkzDrawPoints(A,...,H,O)
+ \tkzLabelPoints(A,B,D,F,G,O)
+ \tkzLabelPoints[above](E,C,H)
+ \tkzMarkAngles[size=.5](E,C,F E,D,F)
+ \tkzFillAngles[green!40,opacity=.4,size=.5](E,C,F E,D,F)
+ \tkzMarkAngles[size=.5](F,C,H G,D,E)
+ \tkzFillAngles[red!40,opacity=.4,size=.5](F,C,H G,D,E)
+ \end{tikzpicture}
+\end{center}
+
+
% subsection reim_v1 (end)
\subsection{Reim v2} % (fold)
@@ -3200,19 +3089,22 @@ z.m,z.mp = get_points (C.AC: tangent_at (z.M))
z.n,z.np = get_points (C.BC: tangent_at (z.N))
\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircles(A,C B,C)
-\tkzDrawLines[new,add=1 and 1](M,m N,n C,c)
-\tkzDrawSegment(M,N)
-\tkzDrawPoints(A,B,C,M,N)
-\tkzLabelPoints[below right](A,B,C,M,N)
-\tkzFillAngles[blue!30,opacity=.3](m',M,C N,C,c' M,C,c n',N,C)
-\tkzLabelCircle[below=4pt,font=\scriptsize](A,C)(90){$(\alpha)$}
-\tkzLabelCircle[left=4pt,font=\scriptsize](B,C)(-90){$(\beta)$}
-\end{tikzpicture}
-\hspace*{\fill}
+
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawCircles(A,C B,C)
+ \tkzDrawLines[new,add=1 and 1](M,m N,n C,c)
+ \tkzDrawSegment(M,N)
+ \tkzDrawPoints(A,B,C,M,N)
+ \tkzLabelPoints[below right](A,B,C,M,N)
+ \tkzFillAngles[blue!30,opacity=.3](m',M,C N,C,c' M,C,c n',N,C)
+ \tkzLabelCircle[below=4pt,font=\scriptsize](A,C)(90){$(\alpha)$}
+ \tkzLabelCircle[left=4pt,font=\scriptsize](B,C)(-90){$(\beta)$}
+ \end{tikzpicture}
+\end{center}
+
+
% subsection reim_v2 (end)
\subsection{Reim v3} % (fold)
@@ -3282,21 +3174,23 @@ z.n,z.np = get_points (C.BC: tangent_at (z.N))
z.D = intersection (L.KO,C.zO)
\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawSegments(K,D D,C)
-\tkzDrawPolygon[teal](A,B,C)
-\tkzDrawCircles[orange](x,A y,B z,C)
-\tkzDrawPoints[fill=white](A,B,C,I,J,K,D)
-\tkzLabelPoints[below](A,B,J,K,O)
-\tkzLabelPoints[above](C,D,I)
-\tkzDrawPoints[fill=black](O)
-\tkzLabelCircle[below=4pt,font=\scriptsize](x,A)(20){$(\alpha)$}
-\tkzLabelCircle[left=4pt,font=\scriptsize](y,B)(60){$(\beta)$}
-\tkzLabelCircle[below=4pt,font=\scriptsize](z,C)(60){$(\gamma)$}
-\end{tikzpicture}
-\hspace*{\fill}
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawSegments(K,D D,C)
+ \tkzDrawPolygon[teal](A,B,C)
+ \tkzDrawCircles[orange](x,A y,B z,C)
+ \tkzDrawPoints[fill=white](A,B,C,I,J,K,D)
+ \tkzLabelPoints[below](A,B,J,K,O)
+ \tkzLabelPoints[above](C,D,I)
+ \tkzDrawPoints[fill=black](O)
+ \tkzLabelCircle[below=4pt,font=\scriptsize](x,A)(20){$(\alpha)$}
+ \tkzLabelCircle[left=4pt,font=\scriptsize](y,B)(60){$(\beta)$}
+ \tkzLabelCircle[below=4pt,font=\scriptsize](z,C)(60){$(\gamma)$}
+ \end{tikzpicture}
+\end{center}
+
+
% subsection reim_v3 (end)
\subsection{Tangent and circle} % (fold)
@@ -3339,14 +3233,17 @@ z.i = L.Ti.pb
z.j = L.Tj.pb
z.k,z.l = get_points (C.AB: tangent_at (z.B))
\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircles(A,B M,A)
-\tkzDrawPoints(A,B,E,i,j,M,S)
-\tkzDrawLines(E,i E,j k,l)
-\tkzLabelPoints[right,font=\small](A,B,E,S,M)
-\end{tikzpicture}
+
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawCircles(A,B M,A)
+ \tkzDrawPoints(A,B,E,i,j,M,S)
+ \tkzDrawLines(E,i E,j k,l)
+ \tkzLabelPoints[right,font=\small](A,B,E,S,M)
+ \end{tikzpicture}
+\end{center}
+
\end{minipage}
% subsection tangent_and_circle (end)
@@ -3377,13 +3274,16 @@ z.B = point: new (1,2)
z.E = point: new (-3,2)
z.C,z.D = z.E : homothety(2,z.A,z.B)
\end{tkzelements}
-\hspace*{\fill}\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawPoints(A,B,C,E,D)
-\tkzLabelPoints(A,B,C,E)
-\tkzDrawCircles(A,B C,D)
-\tkzDrawLines(E,C E,D)
-\end{tikzpicture}
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPoints(A,B,C,E,D)
+ \tkzLabelPoints(A,B,C,E)
+ \tkzDrawCircles(A,B C,D)
+ \tkzDrawLines(E,C E,D)
+ \end{tikzpicture}
+\end{center}
+
\end{minipage}
% subsection homothety (end)
@@ -3436,18 +3336,21 @@ z.b1,z.b2 = get_points (C.OA: tangent_at (z.B))
z.H = L.AB: projection (z.O)
\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircle(O,A)
-\tkzDrawPolygon(A,B,C)
-\tkzDrawSegments[new](A,O B,O O,H A,D D,B)
-\tkzDrawLine(b1,b2)
-\tkzDrawPoints(A,B,C,D,H,O)
-\tkzFillAngles[green!20,opacity=.3](H,O,B A,C,B A,B,b1)
-\tkzFillAngles[teal!20,opacity=.3](A,D,B b2,B,A)
-\tkzLabelPoints(A,B,C,D,H,O)
-\end{tikzpicture}
+
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawCircle(O,A)
+ \tkzDrawPolygon(A,B,C)
+ \tkzDrawSegments[new](A,O B,O O,H A,D D,B)
+ \tkzDrawLine(b1,b2)
+ \tkzDrawPoints(A,B,C,D,H,O)
+ \tkzFillAngles[green!20,opacity=.3](H,O,B A,C,B A,B,b1)
+ \tkzFillAngles[teal!20,opacity=.3](A,D,B b2,B,A)
+ \tkzLabelPoints(A,B,C,D,H,O)
+ \end{tikzpicture}
+\end{center}
+
\end{minipage}
% subsection tangent_and_chord (end)
@@ -3541,26 +3444,26 @@ z.Cp,_ = intersection (L.GD,C.xD)
\end{Verbatim}
\end{minipage}
\begin{minipage}[t]{.5\textwidth}\vspace{0pt}%
-\hspace*{\fill}
-\begin{tikzpicture}[scale=.75]
-\tkzGetNodes
-\tkzDrawCircles(O,B)
-\tkzDrawCircles[cyan](P,B)
-\tkzDrawCircles[red](w,E)
-\tkzDrawCircles[new](x,F)
-\tkzDrawSegments(A,G E,G C,G)
-\tkzDrawPolygons[new](A,E,C A',E',C')
-\tkzDrawPoints(A,...,G,A',E',C',O,P)
-\begin{scope}[font=\scriptsize]
- \tkzLabelPoints(A,...,F)
- \tkzLabelPoints[above left](G,A',E',C')
- \tkzLabelCircle[left](O,B)(30){$(\beta)$}
- \tkzLabelCircle[below](P,A)(40){$(\gamma)$}
- \tkzLabelCircle[right](w,C)(90){$(\alpha)$}
- \tkzLabelCircle[left](x,B)(-230){$((\delta))$}
-\end{scope}
-\end{tikzpicture}
-\hspace*{\fill}
+\begin{center}
+ \begin{tikzpicture}[scale=.75]
+ \tkzGetNodes
+ \tkzDrawCircles(O,B)
+ \tkzDrawCircles[cyan](P,B)
+ \tkzDrawCircles[red](w,E)
+ \tkzDrawCircles[new](x,F)
+ \tkzDrawSegments(A,G E,G C,G)
+ \tkzDrawPolygons[new](A,E,C A',E',C')
+ \tkzDrawPoints(A,...,G,A',E',C',O,P)
+ \begin{scope}[font=\scriptsize]
+ \tkzLabelPoints(A,...,F)
+ \tkzLabelPoints[above left](G,A',E',C')
+ \tkzLabelCircle[left](O,B)(30){$(\beta)$}
+ \tkzLabelCircle[below](P,A)(40){$(\gamma)$}
+ \tkzLabelCircle[right](w,C)(90){$(\alpha)$}
+ \tkzLabelCircle[left](x,B)(-230){$((\delta))$}
+ \end{scope}
+ \end{tikzpicture}
+\end{center}
\end{minipage}
% subsection three_chords (end)
@@ -3620,19 +3523,20 @@ L.TA = C.wE : tangent_at (z.A)
L.TC = C.xE : tangent_at (z.C)
z.I = intersection (L.TA,L.TC)
\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircles(w,E)
-\tkzDrawCircles[cyan](x,E)
-\tkzDrawCircles[red](G,A)
-\tkzDrawLines(A,I C,I F,I)
-\tkzDrawPoints(A,C,E,F)
-\tkzLabelPoints[right](A)
-\tkzLabelPoints[above right](E,F)
-\tkzLabelPoints[below](C)
-\end{tikzpicture}
-\hspace*{\fill}
+
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawCircles(w,E)
+ \tkzDrawCircles[cyan](x,E)
+ \tkzDrawCircles[red](G,A)
+ \tkzDrawLines(A,I C,I F,I)
+ \tkzDrawPoints(A,C,E,F)
+ \tkzLabelPoints[right](A)
+ \tkzLabelPoints[above right](E,F)
+ \tkzLabelPoints[below](C)
+ \end{tikzpicture}
+\end{center}
\end{minipage}
% subsection three_tangents (end)
@@ -3665,15 +3569,16 @@ C.AB = circle: new (z.A,z.B)
z.C = z.A: rotation (math.pi/3,z.B)
z.D = C.AB: midarc (z.B,z.C)
\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawPoints(A,B,C)
-\tkzDrawCircles(A,B)
-\tkzDrawPoints(A,...,D)
-\tkzLabelPoints(A,...,D)
-\end{tikzpicture}
-\hspace*{\fill}
+
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPoints(A,B,C)
+ \tkzDrawCircles(A,B)
+ \tkzDrawPoints(A,...,D)
+ \tkzLabelPoints(A,...,D)
+ \end{tikzpicture}
+\end{center}
\end{minipage}
% subsection midarc (end)
@@ -3738,68 +3643,92 @@ z.Q = intersection (L.tB,L.AC)
z.R = intersection (L.tC,L.AB)
\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawPolygon[teal](A,B,C)
-\tkzDrawCircle(O,A)
-\tkzDrawPoints(A,B,C,P,Q,R)
-\tkzLabelPoints(A,B,C,P,Q,R)
-\tkzDrawLine[blue](Q,R)
-\tkzDrawLines[red](Ar,Al Br,Q Cr,Cl)
-\tkzDrawSegments(A,R C,P C,Q)
-\end{tikzpicture}
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygon[teal](A,B,C)
+ \tkzDrawCircle(O,A)
+ \tkzDrawPoints(A,B,C,P,Q,R)
+ \tkzLabelPoints(A,B,C,P,Q,R)
+ \tkzDrawLine[blue](Q,R)
+ \tkzDrawLines[red](Ar,Al Br,Q Cr,Cl)
+ \tkzDrawSegments(A,R C,P C,Q)
+ \end{tikzpicture}
+\end{center}
+
\end{minipage}
% subsection lemoine_line_without_macro (end)
\subsection{First Lemoine circle} % (fold)
\label{sub:first_lemoine_circle}
+Draw lines through the symmedian point $L$ and parallel to the sides of the triangle. The points where the parallel lines intersect the sides of the triangle then lie on a circle known as the first Lemoine circle. It has center at the Brocard midpoint, i.e., the midpoint of $[OL]$, where $O$ is the circumcenter and $K$ is the symmedian point
+
+[\href{https://mathworld.wolfram.com/FirstLemoineCircle.html}{Weisstein, Eric W. "First Lemoine Circle." From MathWorld--A Wolfram Web Resource.}]
+
\begin{minipage}[t]{.5\textwidth}\vspace{0pt}%
-\begin{Verbatim}
\begin{tkzelements}
z.A = point: new (1,1)
z.B = point: new (5,1)
- z.C = point: new (2,3)
- T = triangle: new (z.A,z.B,z.C)
- z.O = T.circumcenter
- z.o,z.w = get_points (T : first_lemoine_circle ())
+ z.C = point: new (2.2,4)
+ T = triangle: new (z.A,z.B,z.C)
+ z.O = T.circumcenter
+ C.first_lemoine = T:first_lemoine_circle()
+ z.o,z.w = get_points( C.first_lemoine )
+ z.y1,z.y2 = intersection (T.ab,C.first_lemoine)
+ z.y5,z.y6 = intersection (T.bc,C.first_lemoine)
+ z.y3,z.y4 = intersection (T.ca,C.first_lemoine)
z.L = T : lemoine_point ()
\end{tkzelements}
+\begin{center}
\begin{tikzpicture}
\tkzGetNodes
\tkzDrawPolygons(A,B,C)
- \tkzDrawPoints(A,B,C,o,w,O,L)
- \tkzLabelPoints(A,B,C,o,w,O,L)
- \tkzDrawCircles(o,w O,A)
+ \tkzDrawPoints(A,B,C,o,O,L,y1,y2,y3,y4,y5,y6)
+ \tkzLabelPoints(A,B,C,o,O,L,y1,y2,y3,y4,y5,y6)
+ \tkzDrawCircles(o,w)
+ \tkzDrawLines(y1,y6 y5,y4 y2,y3 O,L)
\end{tikzpicture}
-\end{Verbatim}
+\end{center}
\end{minipage}
+
\begin{minipage}[t]{.5\textwidth}\vspace{0pt}%
+\begin{Verbatim}
\begin{tkzelements}
-z.A = point: new (1,1)
-z.B = point: new (5,1)
-z.C = point: new (2,3)
-T = triangle: new (z.A,z.B,z.C)
-z.O = T.circumcenter
-z.o,z.w = get_points(T:first_lemoine_circle())
-z.L = T : lemoine_point ()
+ z.A = point: new (1,1)
+ z.B = point: new (5,1)
+ z.C = point: new (2.2,4)
+ T = triangle: new (z.A,z.B,z.C)
+ z.O = T.circumcenter
+ C.first_lemoine = T:first_lemoine_circle()
+ z.o,z.w = get_points( C.first_lemoine )
+ z.y1,z.y2 = intersection (T.ab,C.first_lemoine)
+ z.y5,z.y6 = intersection (T.bc,C.first_lemoine)
+ z.y3,z.y4 = intersection (T.ca,C.first_lemoine)
+ z.L = T : lemoine_point ()
\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}[scale = 1.25]
-\tkzGetNodes
-\tkzDrawPolygons(A,B,C)
-\tkzDrawPoints(A,B,C,o,w,O,L)
-\tkzLabelPoints(A,B,C,o,w,O,L)
-\tkzDrawCircles(o,w O,A)
+\begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygons(A,B,C)
+ \tkzDrawPoints(A,B,C,o,O,L,y1,y2,y3,y4,y5,y6)
+ \tkzLabelPoints(A,B,C,o,O,L,y1,y2,y3,y4,y5,y6)
+ \tkzDrawCircles(o,w)
+ \tkzDrawLines(y1,y6 y5,y4 y2,y3 O,L)
\end{tikzpicture}
+\end{Verbatim}
\end{minipage}
+
% subsection first_lemoine_circle (end)
\subsection{First and second Lemoine circles} % (fold)
\label{sub:first_and_second_lemoine_circles}
+Draw antiparallels through the symmedian point $L$. The points where these lines intersect the sides then lie on a circle, known as the cosine circle (or sometimes the second Lemoine circle). Refer to [\ref{sub:antiparallel_through_lemoine_point}]
+
+[\href{https://mathworld.wolfram.com/CosineCircle.html}{Weisstein, Eric W. "Cosine Circle." From MathWorld--A Wolfram Web Resource.}]
+
+
\begin{Verbatim}
\begin{tkzelements}
scale = 2
@@ -3863,19 +3792,22 @@ L.y4y5 = line : new (z.y4,z.y5)
L.y2y3 = line : new (z.y2,z.y3)
\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}[scale = .75]
-\tkzGetNodes
-\tkzDrawPolygons(a,b,c y1,y2,y3,y4,y5,y6)
-\tkzDrawPoints(x1,x2,x3,x4,x5,x6,L)
-\tkzDrawPoints(a,b,c,o,O,y1,y2,y3,y4,y5,y6)
-\tkzLabelPoints[below right](a,b,c,o,O,y1,y2,y3,y4,y5,y6)
-\tkzLabelPoints[below left](x1,x2,x3,x4,x5,x6)
-\tkzLabelPoints[above](L)
-\tkzDrawCircles(L,x o,p O,a)
-\tkzDrawSegments(L,O x1,x4 x2,x5 x3,x6)
-\end{tikzpicture}
-\hspace*{\fill}
+
+\begin{center}
+ \begin{tikzpicture}[scale = .75]
+ \tkzGetNodes
+ \tkzDrawPolygons(a,b,c y1,y2,y3,y4,y5,y6)
+ \tkzDrawPoints(x1,x2,x3,x4,x5,x6,L)
+ \tkzDrawPoints(a,b,c,o,O,y1,y2,y3,y4,y5,y6)
+ \tkzLabelPoints[below right](a,b,c,o,O,y1,y2,y3,y4,y5,y6)
+ \tkzLabelPoints[below left](x1,x2,x3,x4,x5,x6)
+ \tkzLabelPoints[above](L)
+ \tkzDrawCircles(L,x o,p O,a)
+ \tkzDrawSegments(L,O x1,x4 x2,x5 x3,x6)
+ \end{tikzpicture}
+\end{center}
+
+
% subsection first_and_second_lemoine_circles (end)
\subsection{Inversion} % (fold)
@@ -3942,52 +3874,6 @@ z.Cp = C.AC: inversion ( z.B, z.E, z.C )
\end{minipage}
% subsection inversion (end)
-\subsection{Gergonne point} % (fold)
-\label{sub:gergonne_point}
-
-\begin{minipage}[t]{.5\textwidth}\vspace{0pt}%
-\begin{Verbatim}
-\begin{tkzelements}
-z.a = point: new(1,0)
-z.b = point: new(6,2)
-z.c = point: new(2,5)
-T = triangle : new (z.a,z.b,z.c)
-z.g = T : gergonne_point ()
-z.i = T.incenter
-z.ta,z.tb,z.tc = get_points (T : intouch ())
-\end{tkzelements}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawPolygons(a,b,c)
-\tkzDrawPoints(a,b,c,g)
-\tkzLabelPoints(a,b,c)
-\tkzDrawSegments (a,ta b,tb c,tc)
-\tkzDrawCircle(i,ta)
-\end{tikzpicture}
-\end{Verbatim}
-\end{minipage}
-\begin{minipage}[t]{.5\textwidth}\vspace{0pt}%
-\begin{tkzelements}
-z.a = point: new(1,0)
-z.b = point: new(6,2)
-z.c = point: new(2,5)
-T = triangle : new (z.a,z.b,z.c)
-z.g = T : gergonne_point ()
-z.i = T.incenter
-z.ta,z.tb,z.tc = get_points (T : intouch ())
-\end{tkzelements}
-
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawPolygons(a,b,c)
-\tkzDrawPoints(a,b,c,g)
-\tkzLabelPoints(a,b,c)
-\tkzDrawSegments (a,ta b,tb c,tc)
-\tkzDrawCircle(i,ta)
-\end{tikzpicture}
-\end{minipage}
-% subsection gergonne_point (end)
\subsection{Antiparallel through Lemoine point} % (fold)
\label{sub:antiparallel_through_lemoine_point}
@@ -4035,16 +3921,18 @@ L.anti = T : antiparallel (z.L,2)
z.z_0,z.z_1 = get_points (L.anti)
\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawPolygons(a,b,c)
-\tkzDrawPoints(a,b,c,L,x_0,x_1,y_0,y_1,z_0,z_1)
-\tkzLabelPoints(a,b)
-\tkzLabelPoints[above](L,c)
-\tkzDrawSegments(x_0,x_1 y_0,y_1 z_0,z_1)
-\tkzDrawCircle(L,x_0)
-\end{tikzpicture}
+\begin{center}
+ \begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygons(a,b,c)
+ \tkzDrawPoints(a,b,c,L,x_0,x_1,y_0,y_1,z_0,z_1)
+ \tkzLabelPoints(a,b)
+ \tkzLabelPoints[above](L,c)
+ \tkzDrawSegments(x_0,x_1 y_0,y_1 z_0,z_1)
+ \tkzDrawCircle(L,x_0)
+ \end{tikzpicture}
+\end{center}
+
\end{minipage}
% subsection antiparallel_through_lemoine_point (end)
@@ -4362,7 +4250,8 @@ end
\end{minipage}
% subsection three_circles (end)
-\subsection{pentagons in a golden arbelos} % (fold)
+\subsection{p
+Pentagons in a golden arbelos} % (fold)
\label{sub:golden_arbelos}
\begin{tkzelements}
@@ -4499,6 +4388,5 @@ z.D_2,z.E_2,z.F_2,z.G_2 = z.M_0 : homothety (kk,z.D_1,z.E_1,z.F_1,z.G_1)
\end{tikzpicture}
\end{Verbatim}
-
-
-% subsection golden_arbelos (end) \ No newline at end of file
+% subsection golden_arbelos (end)
+% section examples (end) \ No newline at end of file
diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-indepthstudy.tex b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-indepthstudy.tex
index 6f58cbec5c..140063f928 100644
--- a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-indepthstudy.tex
+++ b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-indepthstudy.tex
@@ -282,7 +282,7 @@ Then |z.B = z.A * za| describes a rotation of point A by an angle |a|.
\end{minipage}
% subsubsection example_of_complex_use (end)
-\subsubsection{Point operations(complex)} % (fold)
+\subsubsection{Point operations (complex)} % (fold)
\label{ssub:point_operations_complex}
\begin{minipage}{.5\textwidth}
diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-intersection.tex b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-intersection.tex
index cc842aba53..1ba8fd0981 100644
--- a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-intersection.tex
+++ b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-intersection.tex
@@ -61,7 +61,7 @@ end
\end{tikzpicture}
\end{minipage}
-Other examples: \ref{ssub:altshiller}, \ref{ssub:lemoine}, \ref{sub:alternate}
+Other examples: \ref{sub:altshiller}, \ref{sub:lemoine}, \ref{sub:alternate}
% subsection line_line (end)
\newpage
@@ -117,7 +117,7 @@ _,z.K = intersection (C.OD,L.AE)
\end{tikzpicture}
\end{minipage}
-Other examples: \ref{ssub:altshiller}
+Other examples: \ref{sub:altshiller}
% subsection line_circle (end)
\newpage
@@ -168,7 +168,7 @@ C.DC = circle : new (z.D,z.C)
\end{tikzpicture}
\end{minipage}
-Other examples: \ref{ssub:altshiller}, \ref{sub:the_figure_pappus_circle}
+Other examples: \ref{sub:altshiller}, \ref{sub:the_figure_pappus_circle}
% subsection circle_circle (end)
\newpage
diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-main.tex b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-main.tex
index 55608bb26b..10998bb7f5 100644
--- a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-main.tex
+++ b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-main.tex
@@ -1,6 +1,6 @@
% !TEX TS-program = lualatex
% encoding : utf8
-% Documentation of tkz-elements v2.25c
+% Documentation of tkz-elements v2.30c
% Copyright 2024 Alain Matthes
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
@@ -21,10 +21,10 @@
headings = small
]{tkz-doc}
\gdef\tkznameofpack{tkz-elements}
-\gdef\tkzversionofpack{2.25c}
+\gdef\tkzversionofpack{2.30c}
\gdef\tkzdateofpack{\today}
\gdef\tkznameofdoc{tkz-elements.pdf}
-\gdef\tkzversionofdoc{2.25c}
+\gdef\tkzversionofdoc{2.30c}
\gdef\tkzdateofdoc{\today}
\gdef\tkzauthorofpack{Alain Matthes}
\gdef\tkzadressofauthor{}
@@ -170,10 +170,8 @@ sharp corners
\AtBeginDocument{\MakeShortVerb{\|}} % link to shortvrb
-
-
\begin{document}
-\LuaCodeDebugOn
+%\LuaCodeDebugOn
\parindent=0pt
\tkzTitleFrame{tkz-elements \tkzversionofpack\\Euclidean Geometry}
diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/tkz-elements.pdf b/macros/latex/contrib/tkz/tkz-elements/doc/tkz-elements.pdf
index d42a3a109b..edb5864f4f 100644
--- a/macros/latex/contrib/tkz/tkz-elements/doc/tkz-elements.pdf
+++ b/macros/latex/contrib/tkz/tkz-elements/doc/tkz-elements.pdf
Binary files differ
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz-elements.sty b/macros/latex/contrib/tkz/tkz-elements/latex/tkz-elements.sty
index 0a11787d21..597a050850 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz-elements.sty
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz-elements.sty
@@ -1,5 +1,5 @@
% encoding : utf8
-% tkz-elements.sty v2.25c
+% tkz-elements.sty v2.30c
% Copyright 2024 Alain Matthes
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
@@ -11,7 +11,7 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\ProvidesPackage{tkz-elements}[2024/04/27 v2.25c Graphic Object Library]
+\ProvidesPackage{tkz-elements}[2024/07/16 version 2.30c Graphic Object Library]
\RequirePackage{luacode}
\directlua{require "tkz_elements_main"}
@@ -34,20 +34,19 @@
V={}}
\luacode}
{\endluacode}
-
+ % new version of the next macro proposed by Sanskar Singh
\def\tkzGetNodes{\directlua{%
- for K,V in pairs(z) do
- local n,sd,ft
- n = string.len(K)
- if n >1 then
- _,_,ft, sd = string.find( K , "(.+)(.)" )
- if sd == "p" then K=ft.."'" end
- _,_,xft, xsd = string.find( ft , "(.+)(.)" )
- if xsd == "p" then K=xft.."'".."'" end
- end
- tex.print("\\coordinate ("..K..") at ("..V.re..","..V.im..") ;\\\\")
-end}
-}
+ for K,V in pairs(z) do
+ local n,sd,ft
+ n = string.len(K)
+ if n >1 then
+ _,_,ft, sd = string.find( K , "(.+)(.)" )
+ if sd == "p" then K=ft.."'" end
+ _,_,xft, xsd = string.find( ft , "(.+)(.)" )
+ if xsd == "p" then K=xft.."'".."'" end
+ end
+ tex.sprint("\string\\coordinate ("..K..") at ("..V.re..","..V.im..") ; \string\r")
+end}}
\def\tkzUseLua#1{\directlua{tex.print(tostring(#1))}}
\makeatletter
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_circle.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_circle.lua
index 1999b8a073..e17ccb2ebb 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_circle.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_circle.lua
@@ -1,6 +1,6 @@
-- tkz_elements-circles.lua
--- date 2024/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
-- Copyright 2024 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_class.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_class.lua
index b6a1bf7a5a..3ded691d53 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_class.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_class.lua
@@ -1,6 +1,6 @@
-- tkz_elements_class.lua
--- date 2024/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
-- from class.lua (Simple Lua Classes from Lua-users wiki)
-- Compatible with Lua 5.1 (not 5.0).
-- http://lua-users.org/wiki/SimpleLuaClasses DavidManura
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_ellipse.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_ellipse.lua
index a98cf40a63..7581c19d7a 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_ellipse.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_ellipse.lua
@@ -1,6 +1,6 @@
-- tkz_elements-ellipses.lua
--- date 2024/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
-- Copyright 2024 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_circles.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_circles.lua
index 40f2a4ebbf..88f9040b7f 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_circles.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_circles.lua
@@ -1,6 +1,6 @@
-- tkz_elements_functions_circles.lua
--- date 2024/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
-- Copyright 2024 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_intersections.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_intersections.lua
index 69dcd6ace3..fe253e9aa2 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_intersections.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_intersections.lua
@@ -1,6 +1,6 @@
-- tkz_elements_intersections.lua
--- date 2024/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
-- Copyright 2024 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_lines.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_lines.lua
index 401ad46dda..a5504593c0 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_lines.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_lines.lua
@@ -1,6 +1,6 @@
-- tkz_elements_functions_lines.lua
--- date 2024/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
-- Copyright 2024 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_maths.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_maths.lua
index a71c0f7c27..c3f7e54ffd 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_maths.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_maths.lua
@@ -1,6 +1,6 @@
-- tkz_elements_functions_maths.lua
--- date 2024/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
-- Copyright 2024 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_matrices.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_matrices.lua
index 4371214047..c80420090f 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_matrices.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_matrices.lua
@@ -1,6 +1,6 @@
-- tkz_elements_functions_matrices.lua
--- date 2024/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
-- Copyright 2024 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_points.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_points.lua
index f1c4dc5d41..e2366e25e3 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_points.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_points.lua
@@ -1,6 +1,6 @@
-- tkz_elements_functions_points.lua
--- date 2024/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
-- Copyright 2024 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_regular.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_regular.lua
index 5e92b4d598..0f74d28fe9 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_regular.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_regular.lua
@@ -1,6 +1,6 @@
-- tkz_elements_functions_regular.lua
--- date 2024/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
-- Copyright 2024 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_triangles.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_triangles.lua
index d4523d1826..02d3058a16 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_triangles.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_triangles.lua
@@ -1,6 +1,6 @@
-- tkz_elements_functions_triangles.lua
--- date 2024/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
-- Copyright 2024 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
@@ -259,6 +259,15 @@ function feuerbach_tr_ (a,b,c)
intersection_cc_ (e,m,jb,hb),
intersection_cc_ (e,m,jc,hc)
end
+
+function similar_ (a,b,c)
+ local x,y,z,g
+ g = centroid_ (a,b,c)
+ x = homothety_ (g,-2,a)
+ y = homothety_ (g,-2,b)
+ z = homothety_ (g,-2,c)
+ return x,y,z
+end
--------------------
-- ellipse --
--------------------
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_line.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_line.lua
index 9304768f31..797365f33f 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_line.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_line.lua
@@ -1,6 +1,6 @@
-- tkz_elements_lines.lua
--- date 2024/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
-- Copyright 2024 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
@@ -324,11 +324,25 @@ function line: mediator ()
m = midpoint_ (self.pa,self.pb)
return line : new (rotation_ (m,-math.pi/2,self.pb),rotation_ (m,math.pi/2,self.pb))
end
+
+function line : perpendicular_bisector ()
+ local m
+ m = midpoint_ (self.pa,self.pb)
+ return line : new (rotation_ (m,-math.pi/2,self.pb),rotation_ (m,math.pi/2,self.pb))
+end
+
-------------------
-- Result -> circle
-------------------
-function line: circle ()
+function line: circle (swap)
+ if swap == nil then
+ swap = false
+ end
+ if swap then
+ return circle : new (self.pb,self.pa)
+ else
return circle : new (self.pa,self.pb)
+ end
end
function line: circle_swap ()
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_main.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_main.lua
index 10ee219519..142f00c8ed 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_main.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_main.lua
@@ -1,6 +1,6 @@
-- tkz_elements-main.lua
--- date 2024/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
-- Copyright 2024 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_matrices.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_matrices.lua
index 981ac68094..035e8a0a33 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_matrices.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_matrices.lua
@@ -1,6 +1,6 @@
-- tkz_elements_matrices.lua
--- date 2024/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
-- Copyright 2024 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_misc.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_misc.lua
index 94c9c555c0..daa3e21872 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_misc.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_misc.lua
@@ -1,6 +1,6 @@
-- tkz_elements_functions_maths.lua
--- date 2024/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
-- Copyright 2024 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_parallelogram.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_parallelogram.lua
index fd0a3533a3..d471976d06 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_parallelogram.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_parallelogram.lua
@@ -1,6 +1,6 @@
-- tkz_elements_parallelogram.lua
--- date 2024/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
-- Copyright 2024 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_point.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_point.lua
index 4eb4b549d1..e29779ef79 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_point.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_point.lua
@@ -1,6 +1,6 @@
-- tkz_elements_point.lua
--- date 2024/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
-- Copyright 2024 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_quadrilateral.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_quadrilateral.lua
index e77e0af561..6625b9d789 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_quadrilateral.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_quadrilateral.lua
@@ -1,6 +1,6 @@
-- tkz_elements_quadrilateral.lua
--- date 2024/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
-- Copyright 2024 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_rectangle.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_rectangle.lua
index 2c07f78399..fdc3084501 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_rectangle.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_rectangle.lua
@@ -1,6 +1,6 @@
-- tkz_elements-rectangle.lua
--- date 2024/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
-- Copyright 2024 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_regular.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_regular.lua
index 0641a858de..a4527c779b 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_regular.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_regular.lua
@@ -1,6 +1,6 @@
-- tkz_elements_regular.lua
--- date 2024/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
-- Copyright 2024 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_square.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_square.lua
index 1852c0ded4..93860b825c 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_square.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_square.lua
@@ -1,6 +1,6 @@
-- tkz_elements-square.lua
--- date 2024/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
-- Copyright 2024 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_triangle.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_triangle.lua
index c6dd2c3757..84b10273da 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_triangle.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_triangle.lua
@@ -1,6 +1,6 @@
-- tkz_elements_triangles.lua
--- date 2024/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
-- Copyright 2024 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
@@ -57,19 +57,19 @@ end
-- points --
-----------------------
function triangle: trilinear (a,b,c)
- return barycenter_ ( {self.pa,a*self.a },{self.pb,b*self.b},{self.pc,c*self.c} )
+ return barycenter_ ({self.pa,a*self.a},{self.pb,b*self.b},{self.pc,c*self.c})
end
function triangle: barycentric (a,b,c)
- return barycenter_ ( {self.pa,a },{self.pb,b},{self.pc,c} )
+ return barycenter_ ({self.pa,a},{self.pb,b},{self.pc,c})
end
function triangle: bevan_point ()
- return circum_center_ ( self : excentral_tr())
+ return circum_center_ ( excentral_tr_ ( self.pa , self.pb , self.pc))
end
function triangle: mittenpunkt_point ()
- return lemoine_point_ ( self : excentral_tr())
+ return lemoine_point_ ( excentral_tr_ ( self.pa , self.pb , self.pc))
end
function triangle: gergonne_point ()
@@ -322,13 +322,20 @@ function triangle : cevian_circle (p)
pta,ptb,ptc = cevian_ (self.pa,self.pb,self.pc,p)
return circle : new (circum_circle_ (pta,ptb,ptc),pta)
end
+
+function triangle : symmedial_circle ()
+ local pta,ptb,ptc,p
+ p = lemoine_point_ ( self.pa , self.pb , self.pc)
+ pta,ptb,ptc = cevian_ (self.pa,self.pb,self.pc,p)
+ return circle : new (circum_circle_ (pta,ptb,ptc),pta)
+end
- function triangle : conway_circle ()
- local i,t
- i = in_center_ (self.pa,self.pb,self.pc)
- t = report_ (self.pb,self.pa,length(self.pb,self.pc),self.pa)
- return circle : new (i,t)
- end
+function triangle : conway_circle ()
+ local i,t
+ i = in_center_ (self.pa,self.pb,self.pc)
+ t = report_ (self.pb,self.pa,length(self.pb,self.pc),self.pa)
+ return circle : new (i,t)
+end
function triangle : pedal_circle (pt)
local x,y,z,c
@@ -338,7 +345,13 @@ function triangle : pedal_circle (pt)
c = circum_center_ (x,y,z)
return circle : new (c,x)
end
-
+
+function triangle: bevan_circle ()
+ local o,r,s,t
+ o = circum_center_ ( excentral_tr_ ( self.pa , self.pb , self.pc))
+ r,s,t = excentral_tr_ ( self.pa , self.pb , self.pc)
+return circle : new (o, r)
+end
-------------------
-- Result -> triangle
-------------------
@@ -392,6 +405,12 @@ function triangle: symmedian ()
return triangle : new (cevian_ (self.pa,self.pb,self.pc,p))
end
+function triangle: symmedial ()
+ local p
+ p = lemoine_point_ ( self.pa , self.pb , self.pc)
+ return triangle : new (cevian_ (self.pa,self.pb,self.pc,p))
+end
+
function triangle: euler ()
return triangle : new (euler_points_ (self.pa,self.pb,self.pc) )
end
@@ -403,6 +422,10 @@ function triangle: pedal (pt)
z = projection_ (self.pa,self.pb,pt)
return triangle : new (x,y,z)
end
+
+function triangle: similar ()
+ return triangle : new (similar_ (self.pa,self.pb,self.pc) )
+end
-------------------
-- Result -> ellipse
-------------------
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_vector.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_vector.lua
index 8b26fe4bd3..0dcbbfde61 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_vector.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_vector.lua
@@ -1,6 +1,6 @@
-- tkz_elements_vectors.lua
--- date 2024/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
-- Copyright 2024 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
diff --git a/macros/latex/contrib/tqft/README.txt b/macros/latex/contrib/tqft/README.txt
index 365b108946..244978100f 100644
--- a/macros/latex/contrib/tqft/README.txt
+++ b/macros/latex/contrib/tqft/README.txt
@@ -1,9 +1,13 @@
----------------------------------------------------------------
-tqft --- a library for drawing TQFT diagrams with TikZ/PGF
-E-mail: stacey@math.ntnu.no
+tqft --- a TikZ library for drawing TQFT diagrams
+bundle version: v2.3 2024/05/31
+E-mail: Andrew Stacey <loopspace@mathforge.org>
Released under the LaTeX Project Public License v1.3c or later
See http://www.latex-project.org/lppl.txt
----------------------------------------------------------------
This package defines some shapes useful for drawing TQFT diagrams with TikZ/PGF.
+The initial idea of this package came from a question and answer on the site https://tex.stackexchange.com.
+
+The package comes in two versions: a package (tqft.sty) and a TikZ library (tikzlibrarytqft.code.tex). The original package (tqft.sty) is depreciated and has been frozen at version 2.1. The TikZ library is maintained and should be used in preference, except for legacy code.
diff --git a/macros/latex/contrib/tqft/tqft.pdf b/macros/latex/contrib/tqft/tqft.pdf
index 7b5ab55652..d764834342 100644
--- a/macros/latex/contrib/tqft/tqft.pdf
+++ b/macros/latex/contrib/tqft/tqft.pdf
Binary files differ
diff --git a/macros/latex/contrib/tqft/tqft_doc.tex b/macros/latex/contrib/tqft/tqft.tex
index 97c7ff541c..4eb7bdc7d4 100644
--- a/macros/latex/contrib/tqft/tqft_doc.tex
+++ b/macros/latex/contrib/tqft/tqft.tex
@@ -34,11 +34,16 @@
}
\providecommand*{\url}{\texttt}
-\GetFileInfo{tqft.sty}
+\GetFileInfo{tikzlibrarytqft.code.tex}
+\pdfstringdefDisableCommands{%
+ \def\\{}%
+ \def\url#1{<#1>}%
+}
\title{The \textsf{tqft} Ti\emph{k}Z Library: Documentation}
\author{Andrew Stacey \\ \url{loopspace@mathforge.org}}
+\date{\fileversion~from \filedate}
\begin{document}
@@ -151,7 +156,7 @@ The second version is designed to be similar to the first, but with some improve
The original version was distributed as a \Verb+.sty+ file and so is loaded using \Verb+\usepackage{tqft}+.
The newer version is a Ti\emph{k}Z library and so is loaded using \Verb+\usetikzlibrary{tqft}+.
This makes it possible to use both in the same document.
-This is not recommended, but an attempt has been made to make it possible to switch between the two methods.
+This is not recommended, but an attempt has been made to make it possible to switch between the two methods (mainly to stop this documentation file complaining every time I compile it).
This hasn't been extensively tested so use with caution.
To make the switch use the key \Verb+/tikz/tqft/use nodes=<true|false>+.
By default, the one loaded last should be in effect at the start of the document.
@@ -170,7 +175,8 @@ Moreover, any unknown keys are passed on to the \Verb+/tikz+ directory so there
Some examples take advantage of this switch so when copying and modifying examples from this document, it is important to remember that the first \Verb+tqft+ specific key needs an explicit \Verb+tqft/+ prefix.
-\section{Version 2.0}
+\section{Version 2: Pics via a TikZ Library}
+\label{sec:pic}
\subsection{The Shapes}
@@ -266,6 +272,9 @@ It is a dimensionless number (not necessarily an integer) and is interpreted so
\item \DescribeMacro{genus} This defines the number of holes in the shape.
These are spread out in a horizontal line in the middle of the shape.
+
+\item \DescribeMacro{twisted} This is a boolean that, if set, makes the cobordism \emph{twisted} in that the edges cross as they pass from the incoming to outgoing boundaries.
+This probably won't look good with a non-zero genus, but there's nothing stopping you doing it.
\end{itemize}
\subsection{Styling}
@@ -337,7 +346,6 @@ The latter is for the two sides, but note that if the cobordism has no incoming
\item \Verb=between incoming <n> and <n+1>=,
\item \Verb=between outgoing <n> and <n+1>=,
\item \Verb+between first incoming and first outgoing+,
-\item \Verb+between first incoming and first outgoing+,
\item \Verb+between last incoming and last outgoing+,
\item \Verb+between first and last incoming+,
\item \Verb+between first and last outgoing+.
@@ -418,7 +426,11 @@ They are:
\item \Verb=between first incoming and first outgoing= is on the edge between the first incoming and first outgoing boundary components; note that this is only defined if there are both incoming and outgoing boundary components.
\item \Verb=between last incoming and last outgoing= is on the edge between the last incoming and last outgoing boundary components; note that this is only defined if there are both incoming and outgoing boundary components.
\item \Verb=between first and last incoming=; this is only defined if there are no outgoing components.
+
+This is also available via the alias \Verb=between first incoming and last incoming=.
\item \Verb=between first and last outgoing=; this is only defined if there are no incoming components.
+
+This is also available via the alias \Verb=between first outgoing and last outgoing=.
\item \Verb=hole <n>=; if the genus is non-zero, this points to the centre of the \(n\)th hole.
\end{itemize}
@@ -453,7 +465,7 @@ outgoing boundary 4/below right}
\begin{enumerate}
\item Like \Verb+node+s, \Verb+pic+s need the \Verb+transform shape+ key to be set to take note of external transformations (other than shifts).
-Also, as the tqft pic uses nodes internally, if you use the \Verb+transform shape+ key on the pic, you might find you need to use \Verb+every node/.style={transform shape}+ as well.
+The tqft pic uses nodes internally and those nodes have \Verb+transform shape+ automatically set so this should \emph{just work}.
\item There is an additional \Verb+every tqft+ key which is run when the \Verb+tqft+ key is invoked (which might be via some other key).
This is better placed than the \Verb+every pic+ key since that applies to a surrounding scope rather than to the \Verb+pic+ itself.
\item If the \Verb+tqft+ key is invoked, either implicitly or explicitly, then the \Verb+pic type+ is set to \Verb+cobordism+.
@@ -482,15 +494,13 @@ Use \Verb+transform shape+ and apply your own transformation.
{(0,-8)}/{fill=orange,fill opacity=.5,tqft/every lower boundary component/.style={draw,blue,ultra thin,dashed},tqft/every upper boundary component/.style={draw,green},tqft/cobordism edge/.style={draw,purple},tqft/every boundary component/.style={fill=yellow}},
{(5,-8)}/{fill=orange,fill opacity=.5,tqft/cobordism edge/.style={draw,purple},tqft/every boundary component/.style={fill=yellow,draw=green}}
} {
-\begin{scope}
-\edef\styleit{\noexpand\tikzset{every tqft/.style={\style}}}
-\styleit
+ \begin{scope}[every tqft/.style/.expand once=\style]
\pic[tqft/cap,name=h,at=\coord];
\pic[tqft/pair of pants,anchor=incoming boundary 1,name=a,at=(h-outgoing boundary 1)];
\pic[tqft/cylinder to next,anchor={(0,1)},name=d,at=(a-outgoing boundary 2)];
\pic[tqft/reverse pair of pants,anchor=incoming boundary 1,name=b,at=(a-outgoing boundary 2)];
\pic[tqft/cylinder to prior,anchor=incoming boundary 1,name=c,at=(b-outgoing boundary 1)];
-\pic[tqft/cylinder,anchor=incoming boundary 1,name=e,at=(a-outgoing boundary 1)];
+\pic[tqft/cylinder,twisted,anchor=incoming boundary 1,name=e,at=(a-outgoing boundary 1)];
\pic[tqft/cylinder,anchor=incoming boundary 1,name=f,at=(e-outgoing boundary 1)];
\pic[tqft/reverse pair of pants,anchor=incoming boundary 1,name=g,at=(f-outgoing boundary 1)];
\pic[tqft/cup,anchor=incoming boundary 1,name=i,at=(g-outgoing boundary 1)];
@@ -527,24 +537,26 @@ Use \Verb+transform shape+ and apply your own transformation.
view from=incoming,
anchor=between incoming 1 and 2
]
-\pic[rotate=90,every node/.style={transform shape},name=a,tqft,incoming boundary components=5,skip incoming boundary components={2,4},outgoing boundary components=7,skip outgoing boundary components={2,3,5},offset=-.5];
+\pic[rotate=90,
+ %every node/.style={transform shape},
+ name=a,tqft,incoming boundary components=5,skip incoming boundary components={2,4},outgoing boundary components=7,skip outgoing boundary components={2,3,5},offset=-.5];
\begin{scope}[every pin edge/.style={<-}]
\foreach \anchor/\ang in {
hole 1/-90,
hole 2/90,
hole 3/-90,
- incoming boundary 3/90,
- outgoing boundary 4/-90,
- between last incoming and last outgoing/180,
- between first incoming and first outgoing/180,
- between incoming 1 and 3/90,
- between outgoing 1 and 4/-90,
- between outgoing 4 and 6/-90
+ incoming boundary 3/180,
+ outgoing boundary 4/0,
+ between last incoming and last outgoing/90,
+ between first incoming and first outgoing/-90,
+ between incoming 1 and 3/180,
+ between outgoing 1 and 4/0,
+ between outgoing 4 and 6/0
} {
\node[pin=\ang:\anchor,at=(a-\anchor),inner sep=0pt] {};
}
-\draw[<-] (0,0) -- ++(0,3);
+\draw[<-] (0,0) -- ++(-2,0) node[left] {origin};
\end{scope}
\end{tikzpicture}
\end{example}
@@ -697,10 +709,13 @@ Use \Verb+transform shape+ and apply your own transformation.
\end{tikzpicture}
%\end{example}
-\section{Version 1.0}
+\section{Version 1: Nodes via a Style File}
\tikzset{tqft/use nodes=true}
+As mentioned in the introduction, this is the original method of drawing cobordism diagrams using nodes and is no longer updated (though I will fix bugs if I can).
+If drawing a new diagram, use the pic method from Section~\ref{sec:pic}.
+
\subsection{The Node Shapes}
There are only two shapes, \Verb+tqft cobordism+ and \Verb+tqft boundary circle+.
@@ -940,9 +955,7 @@ This shouldn't happen, or should happen by design not by accident.
{(0,-8)}/{fill=orange,fill opacity=.5,tqft/boundary lower style={draw,blue,ultra thin,dashed},tqft/boundary upper style={draw,green},tqft/cobordism style={draw,purple},tqft/boundary style={fill=yellow}},
{(5,-8)}/{fill=orange,fill opacity=.5,tqft/cobordism style={draw,purple},tqft/boundary style={fill=yellow,draw=green}}
} {
-\begin{scope}
-\edef\styleit{\noexpand\tikzset{every node/.style={\style}}}
-\styleit
+\begin{scope}[every node/.style/.expand once=\style]
\node[tqft/cap] (h) at \coord {};
\node[tqft/pair of pants,anchor=incoming boundary 1] (a) at (h.outgoing boundary 1) {};
\node[tqft/cylinder to next,anchor=incoming boundary 1] (d) at (a.incoming boundary 2) {};
diff --git a/macros/latex/contrib/tqft/tqft.dtx b/macros/latex/contrib/tqft/tqft_code.dtx
index dc471eed3d..67d4afe458 100644
--- a/macros/latex/contrib/tqft/tqft.dtx
+++ b/macros/latex/contrib/tqft/tqft_code.dtx
@@ -4,13 +4,17 @@
%</internal>
%<*readme>
----------------------------------------------------------------
-tqft --- a library for drawing TQFT diagrams with TikZ/PGF
-E-mail: stacey@math.ntnu.no
+tqft --- a TikZ library for drawing TQFT diagrams
+bundle version: v2.3 2024/05/31
+E-mail: Andrew Stacey <loopspace@mathforge.org>
Released under the LaTeX Project Public License v1.3c or later
See http://www.latex-project.org/lppl.txt
----------------------------------------------------------------
This package defines some shapes useful for drawing TQFT diagrams with TikZ/PGF.
+The initial idea of this package came from a question and answer on the site https://tex.stackexchange.com.
+
+The package comes in two versions: a package (tqft.sty) and a TikZ library (tikzlibrarytqft.code.tex). The original package (tqft.sty) is depreciated and has been frozen at version 2.1. The TikZ library is maintained and should be used in preference, except for legacy code.
%</readme>
%<*internal>
\fi
@@ -25,7 +29,7 @@ This package defines some shapes useful for drawing TQFT diagrams with TikZ/PGF.
\askforoverwritefalse
\preamble
----------------------------------------------------------------
-tqft --- a library for drawing TQFT diagrams with TikZ/PGF
+tqft --- a TikZ library for drawing TQFT diagrams
E-mail: loopspace@mathforge.org
Released under the LaTeX Project Public License v1.3c or later
See http://www.latex-project.org/lppl.txt
@@ -34,7 +38,7 @@ See http://www.latex-project.org/lppl.txt
\endpreamble
\postamble
-Copyright (C) 2011 by Andrew Stacey <loopspace@mathforge.org>
+Copyright (C) 2011-2024 by Andrew Stacey <loopspace@mathforge.org>
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License (LPPL), either
@@ -46,29 +50,29 @@ http://www.latex-project.org/lppl.txt
This work is "maintained" (as per LPPL maintenance status) by
Andrew Stacey.
-This work consists of the files tqft.dtx,
- tqft_doc.tex,
-and the derived files tqft.ins,
+This work consists of the files tqft_code.dtx,
+ tqft.tex,
+and the derived files tqft_code.ins,
+ tqft_code.pdf,
tqft.pdf,
- tqft_doc.pdf,
tqft.sty, and
tikzlibrarytqft.code.tex.
\endpostamble
\usedir{tex/latex/tqft}
\generate{
- \file{\jobname.sty}{\from{\jobname.dtx}{package}}
+ \file{tqft.sty}{\from{\jobname.dtx}{package}}
}
\usedir{tex/latex/tqft}
\generate{
- \file{tikzlibrary\jobname.code.tex}{\from{\jobname.dtx}{library}}
+ \file{tikzlibrarytqft.code.tex}{\from{\jobname.dtx}{library}}
}
%</install>
%<install>\endbatchfile
%<*internal>
\usedir{source/latex/tqft}
\generate{
- \file{\jobname.ins}{\from{\jobname.dtx}{install}}
+ \file{tqft_code.ins}{\from{\jobname.dtx}{install}}
}
\nopreamble\nopostamble
\usedir{doc/latex/demopkg}
@@ -91,7 +95,7 @@ and the derived files tqft.ins,
\usepackage{lmodern}
%\usepackage{morefloats}
\usepackage{tikz}
-\usepackage{\jobname}
+\usepackage{tqft}
\usepackage[numbered]{hypdoc}
\definecolor{lstbgcolor}{rgb}{0.9,0.9,0.9}
@@ -109,7 +113,7 @@ and the derived files tqft.ins,
%</driver>
% \fi
%
-% \CheckSum{2577}
+% \CheckSum{2623}
%
% \CharacterTable
% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -131,13 +135,20 @@ and the derived files tqft.ins,
% \changes{1.0}{2011/05/03}{Converted to DTX file}
% \changes{2.0}{2014/04/07}{Converted nodes to pics}
% \changes{2.1}{2017/06/01}{Can skip boundary components}
+% \changes{2.2}{2022/08/24}{Twisted shapes}
+% \changes{2.3}{2022/08/24}{File incorrectly named}
%
% \DoNotIndex{\newcommand,\newenvironment}
+% \pdfstringdefDisableCommands{%
+% \def\\{}%
+% \def\url#1{<#1>}%
+% }
%
% \providecommand*{\url}{\texttt}
-% \GetFileInfo{tqft.dtx}
+% \GetFileInfo{tikzlibrarytqft.code.tex}
% \title{The \textsf{tqft} package: codebase}
% \author{Andrew Stacey \\ \url{loopspace@mathforge.org}}
+% \date{\fileversion~from \filedate}
%
% \maketitle
%
@@ -1247,6 +1258,7 @@ and the derived files tqft.ins,
%
% \iffalse
%<*library>
+\ProvidesFile{tikzlibrarytqft.code.tex}[2024/05/31 v2.3 Tikz/PGF commands for drawing TQFT diagrams]
% \fi
%
% Issue a warning if the pic syntax is not available.
@@ -1268,6 +1280,10 @@ and the derived files tqft.ins,
\let\pgf@tqft@upper\@empty
\let\pgf@tqft@lower\pgf@tqft@minus
% \end{macrocode}
+% Should we twist the cobordism?
+% \begin{macrocode}
+\newif\iftqft@twisted
+% \end{macrocode}
% Split an anchoring coordinate.
% The \(y\)--value is simply multiplied by the cobordism height (but pointing downwards, so that \(1\) is level with the outgoing boundary).
% The \(x\)--value is multiplied by the boundary separation, but is shifted so that at the incoming boundary level, or above, then it is in line with the incoming boundaries and similarly at the outgoing boundary level, or below, it is in line with the outgoing boundaries.
@@ -1347,6 +1363,10 @@ and the derived files tqft.ins,
\let\pgf@tqft@upper\@empty
},
% \end{macrocode}
+% Should we twist the cobordism?
+% \begin{macrocode}
+ twisted/.is if=tqft@twisted,
+% \end{macrocode}
% We simulate node placement using the following key.
% \begin{macrocode}
anchor/.initial = none,
@@ -1451,7 +1471,7 @@ and the derived files tqft.ins,
% \begin{macrocode}
\global\let\tqft@alist\pgfutil@gobble
% \end{macrocode}
-% These will be lists of the boundary components, divided into sets as to whether or not they are rendered. For the outgoing ones, we need too lists because they are rendered in the opposite order to how they are labelled.
+% These will be lists of the boundary components, divided into sets as to whether or not they are rendered. For the outgoing ones, we need two lists because they are rendered in the opposite order to how they are labelled.
% \begin{macrocode}
\global\let\tqft@ibdrylist=\pgfutil@gobble
\global\let\tqft@cibdrylist=\pgfutil@gobble
@@ -1460,6 +1480,17 @@ and the derived files tqft.ins,
\global\let\tqft@robdrylist=\pgfutil@gobble
\global\let\tqft@rcobdrylist=\pgfutil@gobble
% \end{macrocode}
+% Is the cobordism twisted? If so, we need to reverse the order of the
+% outgoing boundary components.
+% \begin{macrocode}
+ \iftqft@twisted
+ \pgfmathsetmacro\tqft@outgoing@end{0}%
+ \pgfmathsetmacro\tqft@outgoing@dir{-1}%
+ \else
+ \pgfmathsetmacro\tqft@outgoing@end{1}%
+ \pgfmathsetmacro\tqft@outgoing@dir{1}%
+ \fi
+% \end{macrocode}
% The first stage is to iterate over the incoming boundary components (if there are any), building up the various paths.
% \begin{macrocode}
\ifnum\tqft@val{incoming boundary components}>0\relax
@@ -1533,9 +1564,14 @@ and the derived files tqft.ins,
% \begin{macrocode}
\ifnum\tqft@val{outgoing boundary components}>0\relax
% \end{macrocode}
-% There are, so we add a curve from the end of the last incoming to the last outgoing component to the full path,
+% There are.
+%
+% We start by adding a curve from the end of the last incoming to the last outgoing component to the full path,
% \begin{macrocode}
- \pgfmathsetmacro\xppos{(\tqft@val{outgoing boundary components} -1+\tqft@val{offset}) * \tqft@val{boundary separation} +\tqft@val{circle x radius}}%
+ \pgfmathsetmacro\xppos{%
+ (\tqft@outgoing@end * (\tqft@val{outgoing boundary components} -1)
+ + \tqft@val{offset}) * \tqft@val{boundary separation}
+ + \tqft@outgoing@dir * \tqft@val{circle x radius}}%
\pgfmathsetmacro\tqft@ht{abs(\tqft@val{incoming boundary components} - \tqft@val{outgoing boundary components} - \tqft@val{offset})}%
\pgfmathsetmacro\tqft@ht{1/3 + 2/3*\tqft@ht/(\tqft@ht + 1)}%
\xdef\tqft@fullpath{%
@@ -1571,7 +1607,7 @@ and the derived files tqft.ins,
% Same for the edge path.
% \begin{macrocode}
\xdef\tqft@blist{%
- \tqft@blist,between first incoming and last incoming/incoming and outgoing/{%
+ \tqft@blist,between first and last incoming/incoming and outgoing/{%
(\tqft@val{incoming boundary components} * \tqft@val{boundary separation} + \tqft@val{circle x radius} - \tqft@val{boundary separation},0pt)
.. controls +(0,-\tqft@ht*\tqft@val{cobordism height}) and +(0,-\tqft@ht*\tqft@val{cobordism height}) .. (-\tqft@val{circle x radius},0)}
}%
@@ -1580,7 +1616,7 @@ and the derived files tqft.ins,
% \begin{macrocode}
\pgfmathsetmacro\xppos{(\tqft@val{incoming boundary components} -1) * \tqft@val{boundary separation}/2}%
\xdef\tqft@clist{%
- \tqft@clist,-between first incoming and last incoming/{(\xppos pt,-\tqft@ht*\tqft@val{cobordism height}*3/4)}%
+ \tqft@clist,-between first and last incoming/{(\xppos pt,-\tqft@ht*\tqft@val{cobordism height}*3/4)},-between first incoming and last incoming/{(\xppos pt,-\tqft@ht*\tqft@val{cobordism height}*3/4)}%
}%
\fi
\else
@@ -1588,7 +1624,7 @@ and the derived files tqft.ins,
% There weren't any incoming boundary components, so we test to see if there were any outgoing ones and move to the start of them.
% \begin{macrocode}
\ifnum\tqft@val{outgoing boundary components}>0\relax
- \pgfmathsetmacro\xppos{(\tqft@val{outgoing boundary components} -1+\tqft@val{offset}) * \tqft@val{boundary separation} +\tqft@val{circle x radius}}
+ \pgfmathsetmacro\xppos{( \tqft@outgoing@end * (\tqft@val{outgoing boundary components} -1)+\tqft@val{offset}) * \tqft@val{boundary separation} + \tqft@outgoing@dir * \tqft@val{circle x radius}}
% \end{macrocode}
% Add a move to the full path,
% \begin{macrocode}
@@ -1600,22 +1636,25 @@ and the derived files tqft.ins,
\fi
% \end{macrocode}
% We're done with the incoming boundary components, now we're set up for the outgoing ones.
-% However we got there, if we have outgoing boundary components then we're now located at the start of them, although we're counting backwards.
+% However we got there, if we have outgoing boundary components then we're now located at the start of them, although we might be counting backwards .
% \begin{macrocode}
- \ifnum\tqft@val{outgoing boundary components}>0\relax
- \pgfmathsetmacro\xppos{(\tqft@val{outgoing boundary components} -1+\tqft@val{offset}) * \tqft@val{boundary separation} -\tqft@val{circle x radius}}%
+ \ifnum\tqft@val{outgoing boundary components}>0\relax
+ \pgfmathsetmacro\xppos{%
+ ( \tqft@outgoing@end * (\tqft@val{outgoing boundary components} -1)
+ + \tqft@val{offset}) * \tqft@val{boundary separation}
+ - \tqft@outgoing@dir * \tqft@val{circle x radius}}%
% \end{macrocode}
% Draw the arc for the first (well, last actually) boundary component.
% \begin{macrocode}
\xdef\tqft@fullpath{%
\tqft@fullpath
- arc[end angle=\pgf@tqft@upper180, start angle=0, x radius=\tqft@val{circle x radius}, y radius=\tqft@val{circle y radius}]
+ arc[end angle=\pgf@tqft@upper180, start angle=0, x radius=\tqft@outgoing@dir * \tqft@val{circle x radius}, y radius=\tqft@val{circle y radius}]
}%
% \end{macrocode}
% And add the centre to the list for available shifts.
% \begin{macrocode}
\xdef\tqft@alist{%
- \tqft@alist,-outgoing boundary \tqft@val{outgoing boundary components}/{(\xppos pt + \tqft@val{circle x radius},-\tqft@val{cobordism height})},-outgoing boundary/{(\tqft@val{offset}*\tqft@val{boundary separation},-\tqft@val{cobordism height})}%
+ \tqft@alist,-outgoing boundary \tqft@val{outgoing boundary components}/{(\xppos pt + \tqft@outgoing@dir * \tqft@val{circle x radius},-\tqft@val{cobordism height})},-outgoing boundary/{(\tqft@val{offset}*\tqft@val{boundary separation},-\tqft@val{cobordism height})}%
}%
% \end{macrocode}
% Do we have more than one boundary component?
@@ -1624,7 +1663,7 @@ and the derived files tqft.ins,
% \end{macrocode}
% Yes, so add a curve and arc for each.
% \begin{macrocode}
- \foreach \k [evaluate=\k as \ok using int(\tqft@val{outgoing boundary components} - \k + 1)] in {2,...,\tqft@val{outgoing boundary components}} {
+ \foreach \k [evaluate=\k as \ok using int(\tqft@outgoing@end * (\tqft@val{outgoing boundary components} + 1) - \tqft@outgoing@dir * \k)] in {2,...,\tqft@val{outgoing boundary components}} {
\edef\tqft@temp{\noexpand\pgfutil@in@{,\ok,}{,\tqft@val{skip outgoing boundary components},}}
\tqft@temp
\ifpgfutil@in@
@@ -1637,9 +1676,9 @@ and the derived files tqft.ins,
\else
\foreach \k [
remember=\k as \kmo (initially 1),
- evaluate=\k as \xpos using (\tqft@val{outgoing boundary components} - \k + \tqft@val{offset})*\tqft@val{boundary separation} + \tqft@val{circle x radius},
+ evaluate=\k as \xpos using ( \tqft@outgoing@end * (\tqft@val{outgoing boundary components} + 1) - 1 - \tqft@outgoing@dir * \k + \tqft@val{offset})*\tqft@val{boundary separation} + \tqft@outgoing@dir * \tqft@val{circle x radius},
] in \tqft@obdrylist {
- \pgfmathsetmacro\xppos{(\tqft@val{outgoing boundary components} - \kmo + \tqft@val{offset})*\tqft@val{boundary separation} - \tqft@val{circle x radius}}
+ \pgfmathsetmacro\xppos{(\tqft@outgoing@end * (\tqft@val{outgoing boundary components} + 1) - 1 - \tqft@outgoing@dir * \kmo + \tqft@val{offset})*\tqft@val{boundary separation} - \tqft@outgoing@dir * \tqft@val{circle x radius}}
\pgfmathsetmacro\cpos{(\xpos + \xppos)/2}
\pgfmathsetmacro\nk{int(\tqft@val{outgoing boundary components} - \k + 1)}
\pgfmathsetmacro\nkpo{int(\tqft@val{outgoing boundary components} - \kmo + 1)}
@@ -1648,7 +1687,7 @@ and the derived files tqft.ins,
% \begin{macrocode}
\xdef\tqft@fullpath{%
\tqft@fullpath
- .. controls +(0,\tqft@val{cobordism height}/3) and +(0,\tqft@val{cobordism height}/3) .. (\xpos pt,-\tqft@val{cobordism height}) arc[end angle=\pgf@tqft@upper180, start angle=0, x radius=\tqft@val{circle x radius}, y radius=\tqft@val{circle y radius}]
+ .. controls +(0,\tqft@val{cobordism height}/3) and +(0,\tqft@val{cobordism height}/3) .. (\xpos pt,-\tqft@val{cobordism height}) arc[end angle=\pgf@tqft@upper180, start angle=0, x radius=\tqft@outgoing@dir * \tqft@val{circle x radius}, y radius=\tqft@val{circle y radius}]
}%
% \end{macrocode}
% Just the arc for the edge paths.
@@ -1691,14 +1730,14 @@ and the derived files tqft.ins,
% \begin{macrocode}
\xdef\tqft@blist{%
\tqft@blist,between first incoming and first outgoing/incoming and outgoing/{%
- (\tqft@val{offset} * \tqft@val{boundary separation} - \tqft@val{circle x radius},-\tqft@val{cobordism height})
+ ({ ( (1 - \tqft@outgoing@end) * (\tqft@val{outgoing boundary components} - 1) + \tqft@val{offset}) * \tqft@val{boundary separation} - \tqft@outgoing@dir * \tqft@val{circle x radius}},-\tqft@val{cobordism height})
.. controls +(0,\tqft@ht*\tqft@val{cobordism height}) and +(0,-\tqft@ht*\tqft@val{cobordism height}) .. (-\tqft@val{circle x radius},0)}%
}%
% \end{macrocode}
% Add a coordinate at the midpoint.
% \begin{macrocode}
\xdef\tqft@clist{%
- \tqft@clist,-between first incoming and first outgoing/{(\tqft@val{offset}*\tqft@val{boundary separation}/2-\tqft@val{circle x radius},-\tqft@val{cobordism height}/2)}%
+ \tqft@clist,-between first incoming and first outgoing/{({ ( (1 - \tqft@outgoing@end) * (\tqft@val{outgoing boundary components} - 1) +\tqft@val{offset})*\tqft@val{boundary separation}/2- \tqft@outgoing@end * \tqft@val{circle x radius}},-\tqft@val{cobordism height}/2)}%
}%
\else
% \end{macrocode}
@@ -1727,7 +1766,7 @@ and the derived files tqft.ins,
\pgfmathsetmacro\xppos{(\tqft@val{outgoing boundary components}/2 + \tqft@val{offset} -1/2) * \tqft@val{boundary separation}}%
\pgfmathsetmacro\tqft@ht{1 -\tqft@ht*3/4}%
\xdef\tqft@clist{%
- \tqft@clist,-between first and last outgoing/{(\xppos pt,-\tqft@ht*\tqft@val{cobordism height})}%
+ \tqft@clist,-between first and last outgoing/{(\xppos pt,-\tqft@ht*\tqft@val{cobordism height})},-between first outgoing and last outgoing/{(\xppos pt,-\tqft@ht*\tqft@val{cobordism height})}%
}%
\fi
\fi
@@ -1924,7 +1963,8 @@ and the derived files tqft.ins,
\xdef\tqft@ibdrylist{1,\tqft@ibdrylist}
\fi
\foreach[evaluate=\k as \xpos using (\k-1)*\tqft@val{boundary separation}] \k in \tqft@ibdrylist {
- \node[
+ \node[
+ transform shape,
node contents={},
ellipse,
inner sep=0pt,
@@ -1941,7 +1981,8 @@ and the derived files tqft.ins,
\ifx\tqft@cibdrylist\pgfutil@gobble
\else
\foreach[evaluate=\k as \xpos using (\k-1)*\tqft@val{boundary separation}] \k in \tqft@cibdrylist {
- \node[
+ \node[
+ transform shape,
node contents={},
ellipse,
inner sep=0pt,
@@ -1970,13 +2011,14 @@ and the derived files tqft.ins,
\else
\xdef\tqft@obdrylist{1,\tqft@obdrylist}
\fi
-\foreach \k [evaluate=\k as \ok using int(\tqft@val{outgoing boundary components} - \k + 1)] in \tqft@obdrylist {
+\foreach \k [evaluate=\k as \ok using int(\tqft@outgoing@end * (\tqft@val{outgoing boundary components} + 1) - \tqft@outgoing@dir * \k)] in \tqft@obdrylist {
\xdef\tqft@robdrylist{\tqft@robdrylist,\ok}
}
\foreach[
evaluate=\k as \xpos using (\k-1+\tqft@val{offset})*\tqft@val{boundary separation}
] \k in \tqft@robdrylist {
- \node[
+ \node[
+ transform shape,
node contents={},
ellipse,
inner sep=0pt,
@@ -1992,13 +2034,15 @@ and the derived files tqft.ins,
}%
\ifx\tqft@cobdrylist\pgfutil@gobble
\else
-\foreach \k [evaluate=\k as \ok using int(\tqft@val{outgoing boundary components} - \k + 1)] in \tqft@cobdrylist {
+\foreach \k[evaluate=\k as \ok using int(\tqft@outgoing@end * (\tqft@val{outgoing boundary components} + 1) - \tqft@outgoing@dir * \k)]
+ in \tqft@cobdrylist {
\xdef\tqft@rcobdrylist{\tqft@rcobdrylist,\ok}
}
\foreach[
evaluate=\k as \xpos using (\k-1+\tqft@val{offset})*\tqft@val{boundary separation}
] \k in \tqft@rcobdrylist {
- \node[
+ \node[
+ transform shape,
node contents={},
ellipse,
inner sep=0pt,
diff --git a/macros/latex/contrib/tqft/tqft_code.pdf b/macros/latex/contrib/tqft/tqft_code.pdf
index cd380f7547..9cdd9ca1d1 100644
--- a/macros/latex/contrib/tqft/tqft_code.pdf
+++ b/macros/latex/contrib/tqft/tqft_code.pdf
Binary files differ
diff --git a/macros/latex/contrib/tramlines/README b/macros/latex/contrib/tramlines/README
index b252d9323a..0dcd98c4a0 100644
--- a/macros/latex/contrib/tramlines/README
+++ b/macros/latex/contrib/tramlines/README
@@ -1,6 +1,6 @@
tramlines - make tramlines
-version: 1.1.0
+version: 1.1.1
This package automatically creates tramlines (lines above and below a title used by lawyers in the UK and the Commonwealth).
@@ -12,6 +12,9 @@ For suggestions, feature requests, and bug reports, please use the project's
GitHub site: https://github.com/ezgranet/tramlines
Version history:
+18/07/2024: Change erroneous left alignment to centre alignment
+
+
29/01/2023: Updates to float composition and fixed bug with global commands. Thanks to GitHub user niruvt
diff --git a/macros/latex/contrib/tramlines/tramlines-documentation.pdf b/macros/latex/contrib/tramlines/tramlines-documentation.pdf
index e9d9c9d6d9..1ccb2be965 100644
--- a/macros/latex/contrib/tramlines/tramlines-documentation.pdf
+++ b/macros/latex/contrib/tramlines/tramlines-documentation.pdf
Binary files differ
diff --git a/macros/latex/contrib/tramlines/tramlines-documentation.tex b/macros/latex/contrib/tramlines/tramlines-documentation.tex
index f39e7ba70c..ba56009346 100644
--- a/macros/latex/contrib/tramlines/tramlines-documentation.tex
+++ b/macros/latex/contrib/tramlines/tramlines-documentation.tex
@@ -74,9 +74,9 @@ breaklines,
firstnumber=last
]
{latex}
-\def\tramlinesversionnumber{1.1.0}
+\def\tramlinesversionnumber{1.1.1}
\ProvidesPackage{tramlines}
-[2023/01/29\tramlinesversionnumber\
+[2024/07/18\tramlinesversionnumber\
Tramlines]
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3c
@@ -112,7 +112,7 @@ firstnumber=last
\centering
{%notglobal
\setlength\doublerulesep{\tramlinesep}% <-- set distance between double rule
-\begin{tabular}[t]{l c c }
+\begin{tabular}[t]{c c c }
\toprule\toprule
& #1 & \\
\bottomrule\bottomrule
@@ -129,8 +129,19 @@ firstnumber=last
%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%\end{minted}
+\section{Version History}
+\subsection*{\ttfamily 1.1.1}
+\ttfamily 18 July 2024: Change erroneous left alignment to centre alignment
+\subsection*{\ttfamily 1.1.0}
+
+\ttfamily 29 October 2023: Updates to float composition and fixed bug with global commands. Thanks to GitHub user `niruvt'
+
+\ttfamily 29/01/2023: Updates to float composition and fixed bug with global commands. Thanks to GitHub user niruvt
+
+
\subsection*{\texttt{1.0.0}}
+
\ttfamily 27 January 2023: Package creation
diff --git a/macros/latex/contrib/tramlines/tramlines.sty b/macros/latex/contrib/tramlines/tramlines.sty
index f3288a8d1f..72878c423e 100644
--- a/macros/latex/contrib/tramlines/tramlines.sty
+++ b/macros/latex/contrib/tramlines/tramlines.sty
@@ -1,6 +1,6 @@
-\def\tramlinesversionnumber{1.1.0}
+\def\tramlinesversionnumber{1.1.1}
\ProvidesPackage{tramlines}
-[2023/01/29\tramlinesversionnumber\
+[2024/07/18\tramlinesversionnumber\
Tramlines]
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3c
@@ -36,7 +36,7 @@
\centering
{%notglobal
\setlength\doublerulesep{\tramlinesep}% <-- set distance between double rule
-\begin{tabular}[t]{l c c }
+\begin{tabular}[b]{c c c }
\toprule\toprule
& #1 & \\
\bottomrule\bottomrule
diff --git a/macros/latex/contrib/tuda-ci/README.md b/macros/latex/contrib/tuda-ci/README.md
index f7aa6519a1..1adcd629dc 100644
--- a/macros/latex/contrib/tuda-ci/README.md
+++ b/macros/latex/contrib/tuda-ci/README.md
@@ -2,7 +2,7 @@
Copyright (C) Marei Peischl <marei@peitex.de>, 2018–2024
- tuda-ci v3.38 (2024-05-07)
+ tuda-ci v3.41 (2024-07-02)
***************************************************************************
@@ -360,3 +360,11 @@ leaflets | DEMO-TUDaLeaflet.tex | tudaleaflet.cls
- small layout adjustments and bugfixes
* 3.38 (2024-05-07)
- update PhD affidavit
+ * 3.39 (2024-06-27)
+ - update all templates to no longer use pdfx by default due to the pdfx bug
+ - fix letter last page reference
+ * 3.40 (2024-07-01)
+ - implement workaround for the pdfx package bug. Thanks to Ulrike Fischer for the hint!
+ - fix `ìn_department` strings for theses
+ * 3.41 (2024-07-01)
+ - change package loading order to support updated version of pdfx
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaAnnouncement.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaAnnouncement.pdf
index 08f3ff90a1..94fb8c1ba0 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaAnnouncement.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaAnnouncement.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer.pdf
index 90c6f7e9c4..46572dc548 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer2023.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer2023.pdf
index 9c765b69b3..dba6a9b392 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer2023.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer2023.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaExercise.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaExercise.pdf
index 4de18237bc..7318772892 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaExercise.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaExercise.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLeaflet.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLeaflet.pdf
index 4c91fe977d..1eff1dfc4c 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLeaflet.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLeaflet.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLetter.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLetter.pdf
index d3ff6b21bf..f0393a9152 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLetter.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLetter.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPhD.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPhD.pdf
index 3928a61062..e58bb389eb 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPhD.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPhD.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPoster.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPoster.pdf
index 1f4d8165c2..46617bca7d 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPoster.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPoster.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPub.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPub.pdf
index 089c10109f..6cecc14327 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPub.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPub.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaReport.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaReport.pdf
index b7cb7640ff..dcdda46cb2 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaReport.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaReport.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaSciPoster.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaSciPoster.pdf
index 99ec17f31a..ee5b7471f5 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaSciPoster.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaSciPoster.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaThesis.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaThesis.pdf
index 51f92e0df3..0f6944a3c9 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaThesis.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaThesis.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaAnnouncement.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaAnnouncement.tex
index f8f2e3a80e..3b108d83e3 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaAnnouncement.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaAnnouncement.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaAnnouncement-de.tex' version 3.38 (2024-05-07),
+%% This is file `DEMO-TUDaAnnouncement-de.tex' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -34,14 +34,14 @@
\documentclass[
paper=a4,
- ngerman,
+ german,
color=black!20,
footer=true,
type=announcement,
% logofile=example-image, %Falls die Logo Dateien nicht vorliegen
]{tudaposter}
-\usepackage[english, main=ngerman]{babel}
+\usepackage[english, main=german]{babel}
\usepackage[autostyle]{csquotes}
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer.tex
index a11d19f03e..be652d469a 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaBeamer-de.tex' version 3.38 (2024-05-07),
+%% This is file `DEMO-TUDaBeamer-de.tex' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -32,15 +32,15 @@
% !TeX program = lualatex
%%
\documentclass[
- ngerman,%g'Globale Übergabe der Hauptsprache
- aspectratio=169,%Beamer Option zum Umschalten des Formates
+ german,% Globale Übergabe der Hauptsprache
+ aspectratio=169,% Beamer Option zum Umschalten des Formates
accentcolor=2d,% Akzentfarbe
logo=false,% Kein Logo auf Folgeseiten
- colorframetitle=true,%Akzentfarbe auch im Frametitle
-% logofile=example-image, %Falls die Logo Dateien nicht vorliegen
- design=2008, %to activate the old design
+ colorframetitle=true,% Akzentfarbe auch im Frametitle
+% logofile=example-image, % Falls die Logo Dateien nicht vorliegen
+ design=2008, %Um das alte Design zu aktivieren
]{tudabeamer}
-\usepackage[main=ngerman]{babel}
+\usepackage[main=german]{babel}
% Der folgende Block ist nur bei pdfTeX auf Versionen vor April 2018 notwendig:
\usepackage{iftex}
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer2023.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer2023.tex
index f94c402bfe..3e6e435754 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer2023.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer2023.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaBeamer2023.tex' version 3.38 (2024-05-07),
+%% This is file `DEMO-TUDaBeamer2023.tex' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBibliography.bib b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBibliography.bib
index d293b6a339..8b1022904a 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBibliography.bib
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBibliography.bib
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaBibliography.bib' version 3.38 (2024-05-07),
+%% This is file `DEMO-TUDaBibliography.bib' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaExercise.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaExercise.tex
index c5aa84e832..7b39c7fc3f 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaExercise.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaExercise.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaExercise-de.tex' version 3.38 (2024-05-07),
+%% This is file `DEMO-TUDaExercise-de.tex' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -33,11 +33,11 @@
%%
\documentclass[
- ngerman,
+ german,
points=true,% für die Aktivierung der Punktereferenzen funktioniert nicht für TeX Versionen vor 2020
]{tudaexercise}
-\usepackage[english, main=ngerman]{babel}
+\usepackage[english, main=german]{babel}
\usepackage[autostyle]{csquotes}
\usepackage{biblatex}
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaFromaddress.lco b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaFromaddress.lco
index 1d218f7a2d..3711a5c75a 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaFromaddress.lco
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaFromaddress.lco
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaFromaddress.lco' version 3.38 (2024-05-07),
+%% This is file `DEMO-TUDaFromaddress.lco' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLeaflet.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLeaflet.tex
index 5d0b8aeb96..2303aa23ae 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLeaflet.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLeaflet.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaLeaflet-de.tex' version 3.38 (2024-05-07),
+%% This is file `DEMO-TUDaLeaflet-de.tex' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -37,7 +37,7 @@
% logofile=example-image, %Falls die Logo Dateien nicht vorliegen
]{tudaleaflet}
-\usepackage[ngerman]{babel}
+\usepackage[german]{babel}
\usepackage{blindtext}
\usepackage[autostyle]{csquotes}
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLetter.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLetter.tex
index bedce9c23f..20a6dc4e9a 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLetter.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLetter.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaLetter-de.tex' version 3.38 (2024-05-07),
+%% This is file `DEMO-TUDaLetter-de.tex' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -31,9 +31,15 @@
%%
% !TeX program = lualatex
%%
+\DocumentMetadata{
+ pdfstandard=a-2b,
+ lang=de,
+ pdfversion=1.7,% 2.0 geht auch, aber die meisten Validierungsprogramme unterstützen das noch nicht.
+}
+
\documentclass[
- ngerman,
+ german,
% logo=false,%Schaltet das Logo für Folgeseiten ab
accentcolor=9c,%Akzentfarbe nach Tabelle aus den Corporate Design Richtlinien
premium=true,%Aktiviert die Färbung der Identitätsleiste
@@ -84,7 +90,7 @@ Zusätzliche Optionen sind im Folgenden aufgelistet:\\
}
Für Wiederverwendung der Absenderadresse wurde die Datei \enquote{DEMO"=TUDaFromaddress.lco} angelegt. Sie wird, wie bei \KOMAScript{} üblich, über
-\verb+\LoadLetterOption+ geladen. Sämtliche dort gesetzten Werte können innerhalb der Briefdatei überschrieben werden.
+\verb+\LoadLett+\babelhyphen{empty}\verb+erOption+ geladen. Sämtliche dort gesetzten Werte können innerhalb der Briefdatei überschrieben werden.
Die Adressdatei wird üblicherweise lokal im System installiert, um sie nicht immer mit allen anderen Dateien kopieren zu müssen. Falls Sie dies durchführen möchten, findet sich eine entsprechende Erklärung am Ende der DEMO"=TUDaFromaddress.lco"=Datei.
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPhD.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPhD.tex
index d1742bebfd..6b14bfda0d 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPhD.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPhD.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaPhD-de.tex' version 3.38 (2024-05-07)
+%% This is file `DEMO-TUDaPhD-de.tex' version 3.41 (2024-07-02)
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -34,11 +34,12 @@
% PDF/A über pdfmanagement und nicht über pdfx
\DocumentMetadata{
pdfstandard=a-2b,
+ lang=de,
pdfversion=1.7,% 2.0 geht auch, aber die meisten Validierungsprogramme unterstützen das noch nicht.
}
\documentclass[
- german,% Hauptsprache als globale Option, früher war ngerman notwendig
+ german,% Hauptsprache als globale Option, früher war german notwendig
ruledheaders=chapter,% Ebene bis zu der die Überschriften mit Linien abgetrennt werden, vgl. DEMO-TUDaPub
class=book,% Basisdokumentenklasse. Wählt die korrespondierende KOMA-Script Klasse
thesis={% Dokumententyp PhD Thesis, für kleinere Abschlussarbeiten, siehe DEMO-TUDaThesis-de.tex
@@ -57,7 +58,7 @@
%%%%%%%%%%%%%%%%%%%
% Spracheinstellungen
%%%%%%%%%%%%%%%%%%%
-\usepackage[english, main=ngerman]{babel}
+\usepackage[english, main=german]{babel}
\usepackage[autostyle]{csquotes}% Sprachabhängig Anführungszeichen mit \enquote
% Falls mit pdflatex kompiliert wird, wird microtype automatisch geladen, in diesem Fall muss diese Zeile entfernt werden, und falls weiter Optionen hinzugefügt werden sollen, muss dies über
@@ -69,7 +70,7 @@
% Literaturverzeichnis
%%%%%%%%%%%%%%%%%%%
\usepackage{biblatex}
-\addbibresource{DEMO-TUDaBibliography}% Dateiname der .bib-datei
+\addbibresource{DEMO-TUDaBibliography.bib}% Dateiname der .bib-datei
%%%%%%%%%%%%%%%%%%%
% Paketvorschläge Tabellen
@@ -173,16 +174,16 @@ TUDa-CI verwendet hierfür das babel-Paket.
Dies wird jedoch nicht automatisch geladen, da hierfür die Konfiguration der Sprachen bekannt sein müsste. Die Demo-Dateien für Abschlussarbeiten (\file{DEMO-TUDaThesis.tex}/""\file{DEMO-TUDaPhD.tex}) laden hierfür die Konfiguration:
\begin{verbatim}
- \usepackage[english, main=ngerman]{babel}
+ \usepackage[english, main=german]{babel}
\end{verbatim}
Diese ist für ein Dokument mit Deutsch als Hauptsprache und Englischen Elementen.
Die Hauptsprache wird als Wert der Option \verb+main=+ übergeben.
-Das Laden von \verb+ngerman+ wird in den Fällen, in denen es von TUDa-CI benötigt wird, automatisch ausgelöst.
+Das Laden von \verb+german+ wird in den Fällen, in denen es von TUDa-CI benötigt wird, automatisch ausgelöst.
Für eine bessere Übersichtlichkeit ist es dennoch hilfreich es dort aufzuführen.
Falls die Hauptsprache nicht Deutsch ist, wäre daher die folgende Konfiguration sinnvoll:
\begin{verbatim}
- \usepackage[ngerman, main=<Hauptsprache>]{babel}
+ \usepackage[german, main=<Hauptsprache>]{babel}
\end{verbatim}
\section{Übergabe der Titeldaten}
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPoster.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPoster.tex
index e10f84dd8b..33a78fd1f3 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPoster.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPoster.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaPoster-de.tex' version 3.38 (2024-05-07),
+%% This is file `DEMO-TUDaPoster-de.tex' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -34,14 +34,14 @@
\documentclass[
paper=a0,
- ngerman,
+ german,
accentcolor=9c,
logo=body,% Logo unterhalb der Identitätsleise
footer=true,
% logofile=example-image, %Falls die Logo Dateien nicht vorliegen
]{tudaposter}
-\usepackage[english, main=ngerman]{babel}
+\usepackage[english, main=german]{babel}
\usepackage[autostyle]{csquotes}
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPub.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPub.tex
index 0bf058e1c3..7b03b612d8 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPub.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPub.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaPub-de.tex' version 3.38 (2024-05-07),
+%% This is file `DEMO-TUDaPub-de.tex' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -31,14 +31,20 @@
%%
% !TeX program = lualatex
%%
+% PDF/A über pdfmanagement und nicht über pdfx
+\DocumentMetadata{
+ pdfstandard=a-2b,
+ lang=de,
+ pdfversion=1.7,% 2.0 geht auch, aber die meisten Validierungsprogramme unterstützen das noch nicht.
+}
\documentclass[
- ngerman,
+ german,
accentcolor=9c,% Farbe für Hervorhebungen auf Basis der Deklarationen in den Corporate Design Richtlinien
% logofile=example-image, %Falls die Logo Dateien nicht vorliegen
]{tudapub}
-\usepackage[english, main=ngerman]{babel}
+\usepackage[english, main=german]{babel}
\usepackage[autostyle]{csquotes}
\usepackage{biblatex}
@@ -234,7 +240,7 @@ Die \code{abstract}-Umgebung wird für \cls{tudapub} um eine Option für die Spr
\end{abstract}
\end{verbatim}
-Für die Verwendung ist wichtig, dass alle im Dokument genutzten Sprachen geladen werden. Im Falle des Beispiels muss also sowohl \code{ngerman} als auch \code{english} an das \pck{babel}-Paket übergeben werden.
+Für die Verwendung ist wichtig, dass alle im Dokument genutzten Sprachen geladen werden. Im Falle des Beispiels muss also sowohl \code{german} als auch \code{english} an das \pck{babel}-Paket übergeben werden.
\subsection{PDF/A Konformität}
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaReport.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaReport.tex
index a3b0e56310..c5974e6ece 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaReport.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaReport.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaReport-de.tex' version 3.38 (2024-05-07),
+%% This is file `DEMO-TUDaReport-de.tex' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -33,13 +33,13 @@
%%
\documentclass[
- ngerman,
+ german,
accentcolor=9c,% Farbe für Hervorhebungen auf Basis der Deklarationen in den
type=intern,
marginpar=false
]{tudapub}
-\usepackage[english, main=ngerman]{babel}
+\usepackage[english, main=german]{babel}
\usepackage[autostyle]{csquotes}
%Formatierungen für Beispiele in diesem Dokument. Im Allgemeinen nicht notwendig!
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaSciPoster.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaSciPoster.tex
index bd8082039a..aba84ecdab 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaSciPoster.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaSciPoster.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaSciPoster-de.tex' version 3.38 (2024-05-07),
+%% This is file `DEMO-TUDaSciPoster-de.tex' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -41,7 +41,7 @@
]{tudasciposter}
%Sprache
-\usepackage[ngerman]{babel}
+\usepackage[german]{babel}
\usepackage[autostyle]{csquotes}
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaThesis.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaThesis.tex
index a646b8fd8a..12080524fb 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaThesis.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaThesis.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaThesis-de.tex' version 3.38 (2024-05-07)
+%% This is file `DEMO-TUDaThesis-de.tex' version 3.41 (2024-07-02)
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -34,11 +34,12 @@
% PDF/A über pdfmanagement und nicht über pdfx
\DocumentMetadata{
pdfstandard=a-2b,
+ lang=de,
pdfversion=1.7,% 2.0 geht auch, aber die meisten Validierungsprogramme unterstützen das noch nicht.
}
\documentclass[
- german,% Hauptsprache als globale Option, früher war ngerman notwendig
+ german,% Hauptsprache als globale Option, früher war german notwendig
ruledheaders=section,% Ebene bis zu der die Überschriften mit Linien abgetrennt werden,
class=report,% Basisdokumentenklasse. Wählt die Korrespondierende KOMA-Script Klasse
thesis={type=bachelor},% Dokumententyp Thesis, für Dissertationen siehe die Demo-Datei DEMO-TUDaPhd
@@ -54,7 +55,7 @@
%%%%%%%%%%%%%%%%%%%
% Spracheinstellungen
%%%%%%%%%%%%%%%%%%%
-\usepackage[english, main=ngerman]{babel}
+\usepackage[english, main=german]{babel}
\usepackage[autostyle]{csquotes}% Sprachabhängig Anführungszeichen mit \enquote
% Falls mit pdflatex kompiliert wird, wird microtype automatisch geladen, in diesem Fall muss diese Zeile entfernt werden, und falls weiter Optionen hinzugefügt werden sollen, muss dies über
@@ -66,7 +67,7 @@
% Literaturverzeichnis
%%%%%%%%%%%%%%%%%%%
\usepackage{biblatex}
-\addbibresource{DEMO-TUDaBibliography}% Dateiname der .bib-datei
+\addbibresource{DEMO-TUDaBibliography.bib}% Dateiname der .bib-datei
%%%%%%%%%%%%%%%%%%%
% Paketvorschläge Tabellen
@@ -190,16 +191,16 @@ TUDa-CI verwendet hierfür das babel-Paket.
Dies wird jedoch nicht automatisch geladen, da hierfür die Konfiguration der Sprachen bekannt sein müsste. Die Demo-Dateien für Abschlussarbeiten (\file{DEMO-TUDaThesis.tex}/""\file{DEMO-TUDaPhD.tex}) laden hierfür die Konfiguration:
\begin{verbatim}
-\usepackage[english, main=ngerman]{babel}
+\usepackage[english, main=german]{babel}
\end{verbatim}
Diese ist für ein Dokument mit Deutsch als Hauptsprache und Englischen Elementen.
Die Hauptsprache wird als Wert der Option \verb+main=+ übergeben.
-Das Laden von \verb+ngerman+ wird in den Fällen, in denen es von TUDa-CI benötigt wird, automatisch ausgelöst.
+Das Laden von \verb+german+ wird in den Fällen, in denen es von TUDa-CI benötigt wird, automatisch ausgelöst.
Für eine bessere Übersichtlichkeit ist es dennoch hilfreich es dort aufzuführen.
Falls die Hauptsprache nicht Deutsch ist, wäre daher die folgende Konfiguration sinnvoll:
\begin{verbatim}
-\usepackage[ngerman, main=<Hauptsprache>]{babel}
+\usepackage[german, main=<Hauptsprache>]{babel}
\end{verbatim}
\section{Übergabe der Titeldaten}
diff --git a/macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa.sty b/macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa.sty
index 67c92a5939..62af9069e5 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa.sty
@@ -1,4 +1,4 @@
-%% This is file `beamercolorthemeTUDa.sty' version 3.38 (2024-05-07),
+%% This is file `beamercolorthemeTUDa.sty' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa2008.sty b/macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa2008.sty
index 46c7da19c9..14a86607d1 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa2008.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa2008.sty
@@ -1,4 +1,4 @@
-%% This is file `beamercolorthemeTUDa2008.sty' version 3.38 (2024-05-07)
+%% This is file `beamercolorthemeTUDa2008.sty' version 3.41 (2024-07-02)
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa.sty b/macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa.sty
index a245163dc1..c2ec43d33e 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerfontthemeTUDa.sty' version 3.38 (2024-05-07)
+%% This is file `beamerfontthemeTUDa.sty' version 3.41 (2024-07-02)
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa2008.sty b/macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa2008.sty
index 737f759508..4ac32a79cd 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa2008.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa2008.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerfontthemeTUDa2008.sty' version 3.38 (2024-05-07)
+%% This is file `beamerfontthemeTUDa2008.sty' version 3.41 (2024-07-02)
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa.sty b/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa.sty
index 6a9072ed6e..f2a82c86a5 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerinnerthemeTUDa.sty' version 3.38 (2024-05-07)
+%% This is file `beamerinnerthemeTUDa.sty' version 3.41 (2024-07-02)
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa2008.sty b/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa2008.sty
index cab08e361c..55644e9766 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa2008.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa2008.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerinnerthemeTUDa2008.sty' version 3.38 (2024-05-07),
+%% This is file `beamerinnerthemeTUDa2008.sty' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa2023.sty b/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa2023.sty
index 22d50340c2..e4780a9fef 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa2023.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa2023.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerinnerthemeTUDa2023.sty' version 3.38 (2024-05-07),
+%% This is file `beamerinnerthemeTUDa2023.sty' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa.sty b/macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa.sty
index 6081832c16..38f1a7b00a 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerouterthemeTUDa.sty' version 3.38 (2024-05-07),
+%% This is file `beamerouterthemeTUDa.sty' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa2008.sty b/macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa2008.sty
index 70e31eecde..b74da09f60 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa2008.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa2008.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerouterthemeTUDa2008.sty' version 3.38 (2024-05-07),
+%% This is file `beamerouterthemeTUDa2008.sty' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa-mecheng.sty b/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa-mecheng.sty
index 04fac2c523..e84e7fa228 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa-mecheng.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa-mecheng.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerthemeTUDa-mecheng.sty' version 3.38 (2024-05-07),
+%% This is file `beamerthemeTUDa-mecheng.sty' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.38}
-\def\filedate{2024-05-07}
+\def\fileversion{3.41}
+\def\filedate{2024-07-02}
\ProvidesExplPackage{beamerthemeTUDa-mecheng}{\filedate}{\fileversion}{specific tudabeamer configuration for the department of mechanical engineering}
diff --git a/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa.sty b/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa.sty
index 7287a8625e..beb85e6785 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerthemeTUDa.sty' version 3.38 (2024-05-07),
+%% This is file `beamerthemeTUDa.sty' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa2008.sty b/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa2008.sty
index 684fc16de5..f3c3064841 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa2008.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa2008.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerthemeTUDa2008.sty' version 3.38 (2024-05-07),
+%% This is file `beamerthemeTUDa2008.sty' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.38}
-\def\filedate{2024-05-07}
+\def\fileversion{3.41}
+\def\filedate{2024-07-02}
\NeedsTeXFormat{LaTeX2e}[2022/06/01]
\ProvidesPackage{beamerthemeTUDa2008}
[\filedate\space\fileversion\space beamer theme using the Corporate Design of TU Darmstadt Design of 2008]
diff --git a/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa2023.sty b/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa2023.sty
index 48e7d697b9..7095ba69f1 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa2023.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa2023.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerthemeTUDa2023.sty' version 3.38 (2024-05-07)
+%% This is file `beamerthemeTUDa2023.sty' version 3.41 (2024-07-02)
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/tex/tuda-a0paper.clo b/macros/latex/contrib/tuda-ci/tex/tuda-a0paper.clo
index 1978288520..55147ed57f 100644
--- a/macros/latex/contrib/tuda-ci/tex/tuda-a0paper.clo
+++ b/macros/latex/contrib/tuda-ci/tex/tuda-a0paper.clo
@@ -1,4 +1,4 @@
-%% This is file `tuda-a0paper.clo' version 3.38 (2024-05-07),
+%% This is file `tuda-a0paper.clo' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -25,16 +25,18 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.38}
-\def\filedate{2024-05-07}
-\ProvidesExplFile{tuda-a0paper.clo}{\filedate}{\fileversion}{tuda-ci~size~adjustments~for~a0paper}
+\ProvidesExplFile{tuda-a0paper.clo}{2024-07-01}{3.40}{tuda-ci~size~adjustments~for~a0paper}
\cs_set:Nn \ptxcd_setup_title_sizes: {
- \cs_set:Nn \ptxcd_title_fontsize: {{125pt}{165pt}}
- \cs_set:Nn \ptxcd_titleinfo_fontsize: {{28pt}{35pt}}
- \cs_set:Nn \ptxcd_titlethanks_fontsize: {{24pt}{30pt}}
+ \cs_set:Nn \ptxcd_title_fontsize: {{125pt}{165pt}}
+ \cs_set:Nn \ptxcd_titleinfo_fontsize: {{28pt}{35pt}}
+ \cs_set:Nn \ptxcd_titlethanks_fontsize: {{24pt}{30pt}}
}
\cs_set:Nn \ptxcd_setup_base_sizes: {
- \tl_if_empty:NT \g_ptxcd_fontsize_tl {\tl_gset:Nn \g_ptxcd_fontsize_tl {30pt}}
- \dim_gset:Nn \g_ptxcd_margin_dim {30mm}
+ \tl_if_empty:NT \g_ptxcd_fontsize_tl {
+ \tl_gset:Nn \g_ptxcd_fontsize_tl {30pt}
+ }
+ \dim_gset:Nn \g_ptxcd_margin_dim {30mm}
}
\endinput
+%%
+%% End of file `tuda-a0paper.clo'.
diff --git a/macros/latex/contrib/tuda-ci/tex/tuda-a1paper.clo b/macros/latex/contrib/tuda-ci/tex/tuda-a1paper.clo
index bc63208933..4a89742e12 100644
--- a/macros/latex/contrib/tuda-ci/tex/tuda-a1paper.clo
+++ b/macros/latex/contrib/tuda-ci/tex/tuda-a1paper.clo
@@ -1,4 +1,4 @@
-%% This is file `tuda-a1paper.clo' version 3.38 (2024-05-07),
+%% This is file `tuda-a1paper.clo' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -25,16 +25,18 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.38}
-\def\filedate{2024-05-07}
-\ProvidesExplFile{tuda-a1paper.clo}{\filedate}{\fileversion}{tuda-ci~size~adjustments~for~a1paper}
+\ProvidesExplFile{tuda-a1paper.clo}{2024-07-01}{3.40}{tuda-ci~size~adjustments~for~a1paper}
\cs_set:Nn \ptxcd_setup_title_sizes: {
- \cs_set:Nn \ptxcd_title_fontsize: {{86pt}{120pt}}
- \cs_set:Nn \ptxcd_titleinfo_fontsize: {{35pt}{42pt}}
- \cs_set:Nn \ptxcd_titlethanks_fontsize: {{22pt}{26pt}}
+ \cs_set:Nn \ptxcd_title_fontsize: {{86pt}{120pt}}
+ \cs_set:Nn \ptxcd_titleinfo_fontsize: {{35pt}{42pt}}
+ \cs_set:Nn \ptxcd_titlethanks_fontsize: {{22pt}{26pt}}
}
\cs_set:Nn \ptxcd_setup_base_sizes: {
- \tl_if_empty:NT \g_ptxcd_fontsize_tl {\tl_gset:Nn \g_ptxcd_fontsize_tl {25pt}}
- \dim_gset:Nn \g_ptxcd_margin_dim {30mm}
+ \tl_if_empty:NT \g_ptxcd_fontsize_tl {
+ \tl_gset:Nn \g_ptxcd_fontsize_tl {25pt}
+ }
+ \dim_gset:Nn \g_ptxcd_margin_dim {30mm}
}
\endinput
+%%
+%% End of file `tuda-a1paper.clo'.
diff --git a/macros/latex/contrib/tuda-ci/tex/tuda-a2paper.clo b/macros/latex/contrib/tuda-ci/tex/tuda-a2paper.clo
index cda6b6762b..57121954a4 100644
--- a/macros/latex/contrib/tuda-ci/tex/tuda-a2paper.clo
+++ b/macros/latex/contrib/tuda-ci/tex/tuda-a2paper.clo
@@ -1,4 +1,4 @@
-%% This is file `tuda-a2paper.clo' version 3.38 (2024-05-07),
+%% This is file `tuda-a2paper.clo' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -25,16 +25,18 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.38}
-\def\filedate{2024-05-07}
-\ProvidesExplFile{tuda-a2paper.clo}{\filedate}{\fileversion}{tuda-ci~size~adjustments~for~a0paper}
+\ProvidesExplFile{tuda-a2paper.clo}{2024-07-01}{3.40}{tuda-ci~size~adjustments~for~a2paper}
\cs_set:Nn \ptxcd_setup_title_sizes: {
- \cs_set:Nn \ptxcd_title_fontsize: {{65pt}{82pt}}
- \cs_set:Nn \ptxcd_titleinfo_fontsize: {{22pt}{28pt}}
- \cs_set:Nn \ptxcd_titlethanks_fontsize: {{14pt}{20pt}}
+ \cs_set:Nn \ptxcd_title_fontsize: {{65pt}{82pt}}
+ \cs_set:Nn \ptxcd_titleinfo_fontsize: {{22pt}{28pt}}
+ \cs_set:Nn \ptxcd_titlethanks_fontsize: {{14pt}{20pt}}
}
\cs_set:Nn \ptxcd_setup_base_sizes: {
- \tl_if_empty:NT \g_ptxcd_fontsize_tl {\tl_gset:Nn \g_ptxcd_fontsize_tl {25pt}}
+ \tl_if_empty:NT \g_ptxcd_fontsize_tl {
+ \tl_gset:Nn \g_ptxcd_fontsize_tl {25pt}
+ }
\dim_gset:Nn \g_ptxcd_margin_dim {30mm}
}
\endinput
+%%
+%% End of file `tuda-a2paper.clo'.
diff --git a/macros/latex/contrib/tuda-ci/tex/tuda-a3paper.clo b/macros/latex/contrib/tuda-ci/tex/tuda-a3paper.clo
index 3633a54584..e841639ad0 100644
--- a/macros/latex/contrib/tuda-ci/tex/tuda-a3paper.clo
+++ b/macros/latex/contrib/tuda-ci/tex/tuda-a3paper.clo
@@ -1,4 +1,4 @@
-%% This is file `tuda-a3paper.clo' version 3.38 (2024-05-07),
+%% This is file `tuda-a3paper.clo' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -25,16 +25,18 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.38}
-\def\filedate{2024-05-07}
-\ProvidesExplFile{tuda-a3paper.clo}{\filedate}{\fileversion}{tuda-ci~size~adjustments~for~a3paper}
+\ProvidesExplFile{tuda-a3paper.clo}{2024-07-01}{3.40}{tuda-ci~size~adjustments~for~a3paper}
\cs_set:Nn \ptxcd_setup_title_sizes: {
- \cs_set:Nn \ptxcd_title_fontsize: {{47pt}{61pt}}
- \cs_set:Nn \ptxcd_titleinfo_fontsize: {{16pt}{20pt}}
- \cs_set:Nn \ptxcd_titlethanks_fontsize: {{12pt}{16pt}}
+ \cs_set:Nn \ptxcd_title_fontsize: {{47pt}{61pt}}
+ \cs_set:Nn \ptxcd_titleinfo_fontsize: {{16pt}{20pt}}
+ \cs_set:Nn \ptxcd_titlethanks_fontsize: {{12pt}{16pt}}
}
\cs_set:Nn \ptxcd_setup_base_sizes: {
- \tl_if_empty:NT \g_ptxcd_fontsize_tl {\tl_gset:Nn \g_ptxcd_fontsize_tl {17pt}}
- \dim_gset:Nn \g_ptxcd_margin_dim {15mm}
+ \tl_if_empty:NT \g_ptxcd_fontsize_tl {
+ \tl_gset:Nn \g_ptxcd_fontsize_tl {17pt}
+ }
+ \dim_gset:Nn \g_ptxcd_margin_dim {15mm}
}
\endinput
+%%
+%% End of file `tuda-a3paper.clo'.
diff --git a/macros/latex/contrib/tuda-ci/tex/tuda-a4paper.clo b/macros/latex/contrib/tuda-ci/tex/tuda-a4paper.clo
index 3618253919..646a994a6a 100644
--- a/macros/latex/contrib/tuda-ci/tex/tuda-a4paper.clo
+++ b/macros/latex/contrib/tuda-ci/tex/tuda-a4paper.clo
@@ -1,4 +1,4 @@
-%% This is file `tuda-a4paper.clo' version 3.38 (2024-05-07),
+%% This is file `tuda-a4paper.clo' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -25,16 +25,18 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.38}
-\def\filedate{2024-05-07}
-\ProvidesExplFile{tuda-a4paper.clo}{\filedate}{\fileversion}{tuda-ci~size~adjustments~for~a4paper}
+\ProvidesExplFile{tuda-a4paper.clo}{2024-07-01}{3.40}{tuda-ci~size~adjustments~for~a4paper}
\cs_set:Nn \ptxcd_setup_title_sizes: {
- \cs_set:Nn \ptxcd_title_fontsize: {{36pt}{47pt}}
- \cs_set:Nn \ptxcd_titleinfo_fontsize: {{12pt}{14pt}}
- \cs_set:Nn \ptxcd_titlethanks_fontsize: {{10pt}{11.5pt}}
+ \cs_set:Nn \ptxcd_title_fontsize: {{36pt}{47pt}}
+ \cs_set:Nn \ptxcd_titleinfo_fontsize: {{12pt}{14pt}}
+ \cs_set:Nn \ptxcd_titlethanks_fontsize: {{10pt}{11.5pt}}
}
\cs_set:Nn \ptxcd_setup_base_sizes: {
- \tl_if_empty:NT \g_ptxcd_fontsize_tl {\tl_gset:Nn \g_ptxcd_fontsize_tl {14pt}}
- \dim_gset:Nn \g_ptxcd_margin_dim {15mm}
+ \tl_if_empty:NT \g_ptxcd_fontsize_tl {
+ \tl_gset:Nn \g_ptxcd_fontsize_tl {14pt}
+ }
+ \dim_gset:Nn \g_ptxcd_margin_dim {15mm}
}
\endinput
+%%
+%% End of file `tuda-a4paper.clo'.
diff --git a/macros/latex/contrib/tuda-ci/tex/tuda-a5paper.clo b/macros/latex/contrib/tuda-ci/tex/tuda-a5paper.clo
index fda679c183..8c0ef0e94f 100644
--- a/macros/latex/contrib/tuda-ci/tex/tuda-a5paper.clo
+++ b/macros/latex/contrib/tuda-ci/tex/tuda-a5paper.clo
@@ -1,4 +1,4 @@
-%% This is file `tuda-a5paper.clo' version 3.38 (2024-05-07),
+%% This is file `tuda-a5paper.clo' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -25,16 +25,18 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.38}
-\def\filedate{2024-05-07}
-\ProvidesExplFile{tuda-a5paper.clo}{\filedate}{\fileversion}{tuda-ci~size~adjustments~for~a5paper}
+\ProvidesExplFile{tuda-a5paper.clo}{2024-07-01}{3.40}{tuda-ci~size~adjustments~for~a5paper}
\cs_set:Nn \ptxcd_setup_title_sizes: {
- \cs_set:Nn \ptxcd_title_fontsize: {{22pt}{28pt}}
- \cs_set:Nn \ptxcd_titleinfo_fontsize: {{10pt}{11.5pt}}
- \cs_set:Nn \ptxcd_titlethanks_fontsize: {{10pt}{11.5pt}}
+ \cs_set:Nn \ptxcd_title_fontsize: {{22pt}{28pt}}
+ \cs_set:Nn \ptxcd_titleinfo_fontsize: {{10pt}{11.5pt}}
+ \cs_set:Nn \ptxcd_titlethanks_fontsize: {{10pt}{11.5pt}}
}
\cs_set:Nn \ptxcd_setup_base_sizes: {
- \tl_if_empty:NT \g_ptxcd_fontsize_tl {\tl_gset:Nn \g_ptxcd_fontsize_tl {10pt}}
- \dim_gset:Nn \g_ptxcd_margin_dim {12mm}
+ \tl_if_empty:NT \g_ptxcd_fontsize_tl {
+ \tl_gset:Nn \g_ptxcd_fontsize_tl {10pt}
+ }
+ \dim_gset:Nn \g_ptxcd_margin_dim {12mm}
}
\endinput
+%%
+%% End of file `tuda-a5paper.clo'.
diff --git a/macros/latex/contrib/tuda-ci/tex/tuda-pgfplots.sty b/macros/latex/contrib/tuda-ci/tex/tuda-pgfplots.sty
index 04e7c5712d..b0a32c7502 100644
--- a/macros/latex/contrib/tuda-ci/tex/tuda-pgfplots.sty
+++ b/macros/latex/contrib/tuda-ci/tex/tuda-pgfplots.sty
@@ -1,4 +1,4 @@
-%% This is file `tuda-pgfplots.sty' version 3.38 (2024-05-07),
+%% This is file `tuda-pgfplots.sty' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.38}
-\def\filedate{2024-05-07}
+\def\fileversion{3.41}
+\def\filedate{2024-07-02}
% Special thanks to: Sebastian Schöps Institut Theorie Elektromagnetischer Felder (TEMF), TU Darmstadt
% The original version of this file has been inspired by the colorscheme in the Metropolis beamer theme by Matthias Vogelgesang https://github.com/matze/mtheme
\ProvidesPackage{tuda-pgfplots}[\filedate\space\fileversion\space tuda-ci pgfplots color schemes]
diff --git a/macros/latex/contrib/tuda-ci/tex/tudabeamer.cls b/macros/latex/contrib/tuda-ci/tex/tudabeamer.cls
index fdf0d8e02f..df4840467e 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudabeamer.cls
+++ b/macros/latex/contrib/tuda-ci/tex/tudabeamer.cls
@@ -1,4 +1,4 @@
-%% This is file `tudabeamer.cls' version 3.38 (2024-05-07),
+%% This is file `tudabeamer.cls' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.38}
-\def\filedate{2024-05-07}
+\def\fileversion{3.41}
+\def\filedate{2024-07-02}
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{tudabeamer}
[\filedate\space\fileversion\space]
@@ -124,9 +124,9 @@
\bool_if:NT \g_ptxcd_pdfa_bool {\PassOptionsToPackage{RGB}{xcolor}}
\bool_if:NT \g_ptxcd_pdfa_bool {
-\RequirePackage{scrlfile}
-\PreventPackageFromLoading{hyperref}
-\def\hypersetup#1{}
+ \RequirePackage{scrlfile}
+ \PreventPackageFromLoading{hyperref}
+ \def\hypersetup#1{}
}
\ExplSyntaxOff
@@ -137,7 +137,16 @@
\bool_if:NT \g_ptxcd_pdfa_bool {
\UnPreventPackageFromLoading{hyperref}
\PassOptionsToPackage{a-2b}{pdfx}
+% Workaround posted by David Carlisle on tex.stackexchange
+% Thanks to Ulrike Fischer for mentioning it in #472
+ \let \__ptxcd_grouplevel_before_pdfx: \currentgrouplevel
+ \chardef\currentgrouplevel0
+ \ExplSyntaxOff
\RequirePackage{pdfx}
+ \ExplSyntaxOn
+ \let \currentgrouplevel \__ptxcd_grouplevel_before_pdfx:
+ \cs_undefine:N \__ptxcd_grouplevel_before_pdfx:
+% end of the workaround
}
\hypersetup{hidelinks, unicode}
@@ -242,7 +251,7 @@
\let\accentfont\normalfont%
\file_if_exist:nT {\g__ptxcd_config_prefix_tl beamerthemeTUDa-\g_ptxcd_department_str.sty}
- {\usepackage{\g__ptxcd_config_prefix_tl beamerthemeTUDa-\g_ptxcd_department_str}}
+ {\RequirePackage{\g__ptxcd_config_prefix_tl beamerthemeTUDa-\g_ptxcd_department_str}}
\ExplSyntaxOff
diff --git a/macros/latex/contrib/tuda-ci/tex/tudacolors.def b/macros/latex/contrib/tuda-ci/tex/tudacolors.def
index 6a8afea418..44f09edb86 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudacolors.def
+++ b/macros/latex/contrib/tuda-ci/tex/tudacolors.def
@@ -1,4 +1,4 @@
-%% This is file `tudacolors.def' version 3.38 (2024-05-07),
+%% This is file `tudacolors.def' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.38}
-\def\filedate{2024-05-07}
+\def\fileversion{3.41}
+\def\filedate{2024-07-02}
\ProvidesFile{tudacolors.def}
[\filedate\space\fileversion\space Color definitions for tuda-ci]
diff --git a/macros/latex/contrib/tuda-ci/tex/tudacolors.sty b/macros/latex/contrib/tuda-ci/tex/tudacolors.sty
index 137697f261..448483daaf 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudacolors.sty
+++ b/macros/latex/contrib/tuda-ci/tex/tudacolors.sty
@@ -1,4 +1,4 @@
-%% This is file `tudacolors.sty' version 3.38 (2024-05-07),
+%% This is file `tudacolors.sty' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.38}
-\def\filedate{2024-05-07}
+\def\fileversion{3.41}
+\def\filedate{2024-07-02}
\NeedsTeXFormat{LaTeX2e}
\ProvidesExplPackage{tudacolors}{\filedate}{\fileversion}{Color definition for TU Darmstadt's tuda-ci bundle}
diff --git a/macros/latex/contrib/tuda-ci/tex/tudaexercise.cls b/macros/latex/contrib/tuda-ci/tex/tudaexercise.cls
index 07afd270c2..366b966826 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudaexercise.cls
+++ b/macros/latex/contrib/tuda-ci/tex/tudaexercise.cls
@@ -1,4 +1,4 @@
-%% This is file `tudaexercise.cls' version 3.38 (2024-05-07),
+%% This is file `tudaexercise.cls' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.38}
-\def\filedate{2024-05-07}
+\def\fileversion{3.41}
+\def\filedate{2024-07-02}
\NeedsTeXFormat{LaTeX2e}
\ProvidesExplClass{tudaexercise}
diff --git a/macros/latex/contrib/tuda-ci/tex/tudafonts.sty b/macros/latex/contrib/tuda-ci/tex/tudafonts.sty
index 6a7873942a..9fb3ad0600 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudafonts.sty
+++ b/macros/latex/contrib/tuda-ci/tex/tudafonts.sty
@@ -1,4 +1,4 @@
-%% This is file `tudafonts.sty' version 3.38 (2024-05-07),
+%% This is file `tudafonts.sty' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.38}
-\def\filedate{2024-05-07}
+\def\fileversion{3.41}
+\def\filedate{2024-07-02}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{tudafonts}
[\filedate\space\fileversion\space
diff --git a/macros/latex/contrib/tuda-ci/tex/tudaleaflet.cls b/macros/latex/contrib/tuda-ci/tex/tudaleaflet.cls
index de3430b507..52b86eb332 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudaleaflet.cls
+++ b/macros/latex/contrib/tuda-ci/tex/tudaleaflet.cls
@@ -1,4 +1,4 @@
-%% This is file `tudaleaflet.cls' version 3.38 (2024-05-07),
+%% This is file `tudaleaflet.cls' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.38}
-\def\filedate{2024-05-07}
+\def\fileversion{3.41}
+\def\filedate{2024-07-02}
\NeedsTeXFormat{LaTeX2e}
\ProvidesExplPackage{tudaleaflet}{\filedate}{\fileversion}{Leaflets using the Corporate Design of TU Darmstadt}
@@ -88,7 +88,7 @@
\RequirePackage{scrextend}
\RequirePackage{scrlayer}
\PassOptionsToPackage{cmyk}{tudacolors}
-\usepackage[paper=leaflet]{tudarules}
+\RequirePackage[paper=leaflet]{tudarules}
\setlength{\headheight}{1cm}%to add headline
diff --git a/macros/latex/contrib/tuda-ci/tex/tudaletter.cls b/macros/latex/contrib/tuda-ci/tex/tudaletter.cls
index 15baed6069..9eb3a15953 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudaletter.cls
+++ b/macros/latex/contrib/tuda-ci/tex/tudaletter.cls
@@ -1,4 +1,4 @@
-%% This is file `tudaletter.cls' version 3.38 (2024-05-07),
+%% This is file `tudaletter.cls' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.38}
-\def\filedate{2024-05-07}
+\def\fileversion{3.41}
+\def\filedate{2024-07-02}
\NeedsTeXFormat{LaTeX2e}
\ProvidesExplClass{tudaletter}
@@ -48,6 +48,8 @@
raggedright .bool_gset:N = \g__ptxcd_letter_raggedright_bool,
pdfa .bool_gset:N = \g_ptxcd_pdfa_bool,
pdfa .initial:n = true,
+ pdfx .bool_gset:N = \g_ptxcd_pdfx_bool,
+ pdfx .initial:n = true,
logofile .tl_gset:N = \g_ptxcd_logofile_tl,
logofile .initial:n = tuda_logo,
department .choice:,
@@ -78,8 +80,38 @@
\ProcessKeyOptions[ptxcd/letter]
-\bool_if:NT \g_ptxcd_pdfa_bool {\PassOptionsToPackage{RGB}{xcolor}}
+\bool_if:NF \g_ptxcd_pdfa_bool {\bool_gset_false:N \g_ptxcd_pdfx_bool}
+\bool_if:NT \g_ptxcd_pdfa_bool {
+ \msg_new:nnn {tudapub} {colors-to-rgb} {
+ You~did~not~add~a~color~profile.\\
+ I~will~use~the~default~one~and~automatically~try~to~convert~internal~colors~to~RGB.\\
+ This~is~required~to~be~able~to~create~PDF/A~compliance.
+ }
+
+ \cs_if_exist:NT \pdfmeta_standard_get:nN {
+ \pdfmeta_standard_get:nN {outputintent_A} \l_tmpa_tl
+ \quark_if_no_value:NF \l_tmpa_tl {
+ \bool_gset_false:N \g_ptxcd_pdfx_bool
+ \msg_new:nnn{tudapub} {prefer-lualatex} {
+ I~detected~usage~of~l3pdfmeta~(\DocumentMetadata)~to~create~PDF/A.\\
+ tudapub~will~not~load~pdfx~to~avoid~conflicts.\\
+ To~disable this message use pdfx=false.
+ }
+ \msg_info:nn {tudapub} {prefer-lualatex}
+ }
+
+ \prop_if_in:NnF \g__pdfmeta_outputintents_prop {GTS_PDFA1} {
+ \PassOptionsToPackage{RGB}{xcolor}
+ \msg_info:nn {tudapub} {colors-to-rgb}
+ }
+ }
+}
+
+\bool_if:NT \g_ptxcd_pdfx_bool {
+ \PassOptionsToPackage{RGB}{xcolor}
+ \msg_info:nn {tudapub} {colors-to-rgb}
+}
\newcommand*{\@fontsizefilebase}{tudalettersize}
@@ -89,6 +121,11 @@
% Load the TUDa-colorscheme
\RequirePackage{tudacolors}
+\RequirePackage{tudafonts}
+\RequirePackage{graphicx}
+\RequirePackage{afterpage}
+\RequirePackage{ragged2e}
+
\bool_if:NTF \g__ptxcd_letter_premium_bool
{ \cs_new:Nn \ptxcd_premiumcolor: {accentcolor}
@@ -100,10 +137,6 @@
\let\ptxcd_use_premiumcolor_text:\relax
}
-\RequirePackage{tudafonts}
-\RequirePackage{graphicx}
-\RequirePackage{afterpage}
-\RequirePackage{ragged2e}
%%%%%Briefbogen
@@ -139,32 +172,50 @@
\geometry{top=30mm}
}
-\@setplength{firstheadhpos}{\c_ptxcd_HeadMargin_dim}
-\@setplength{firstheadvpos}{\c_ptxcd_HeadMargin_dim}
-\@setplength{firstheadwidth}{\dim_eval:n {\paperwidth - 2\c_ptxcd_HeadMargin_dim}}
+\if_bool:N \g_ptxcd_pdfx_bool
+ \PassOptionsToPackage{a-2b}{pdfx}
+% Workaround posted by David Carlisle on tex.stackexchange
+% Thanks to Ulrike Fischer for mentioning it in #472
+ \let \__ptxcd_grouplevel_before_pdfx: \currentgrouplevel
+ \chardef\currentgrouplevel0
+ \ExplSyntaxOff
+ \RequirePackage{pdfx}
+ \ExplSyntaxOn
+ \let \currentgrouplevel \__ptxcd_grouplevel_before_pdfx:
+ \cs_undefine:N \__ptxcd_grouplevel_before_pdfx:
+% end of the workaround
+\else:
+ \PassOptionsToPackage{hidelinks, unicode}{hyperref}
+ \RequirePackage{hyperref}
+\fi:
+
+\RequirePackage[paper=a4]{tudarules}% might load pgfcore, so it has to be loaded after pdfx
+
+\setplength{firstheadhpos}{\c_ptxcd_HeadMargin_dim}
+\setplength{firstheadvpos}{\c_ptxcd_HeadMargin_dim}
+\setplength{firstheadwidth}{\dim_eval:n {\paperwidth - 2\c_ptxcd_HeadMargin_dim}}
-\@setplength{firstfootvpos}{\dim_eval:n {\paperheight -17mm}}
-\@setplength{firstfoothpos}{\useplength{firstheadhpos}}
-\@setplength{firstfootwidth}{\useplength{firstheadwidth}}
+\setplength{firstfootvpos}{\dim_eval:n {\paperheight -17mm}}
+\setplength{firstfoothpos}{\useplength{firstheadhpos}}
+\setplength{firstfootwidth}{\useplength{firstheadwidth}}
-\@setplength{toaddrhpos}{\c_ptxcd_LeftMargin_dim}
-\@setplength{toaddrvpos}{50mm}
-\@setplength{backaddrheight}{4mm}
-\@setplength{toaddrindent}{0mm}
+\setplength{toaddrhpos}{\c_ptxcd_LeftMargin_dim}
+\setplength{toaddrvpos}{50mm}
+\setplength{backaddrheight}{4mm}
+\setplength{toaddrindent}{0mm}
-\@setplength{refhpos}{\c_ptxcd_LeftMargin_dim}
-\@setplength{refvpos}{106mm}
+\setplength{refhpos}{\c_ptxcd_LeftMargin_dim}
+\setplength{refvpos}{106mm}
-\@setplength{subjectaftervskip}{2\baselineskip}
-\@setplength{lochpos}{\c_ptxcd_HeadMargin_dim}
-\@setplength{locvpos}{\dimexpr\useplength{refvpos}+\useplength{subjectaftervskip}+1.4\baselineskip\relax}
-\@setplength{refaftervskip}{0pt}
-\@setplength{subjectbeforevskip}{0pt}
-\@setplength{locwidth}{\dimexpr\paperwidth-154,5mm -\c_ptxcd_HeadMargin_dim\relax}
-\@setplength{locheight}{\dimexpr\paperheight-\useplength{locvpos}-\c_ptxcd_BottomMargin_dim\relax}
+\setplength{subjectaftervskip}{2\baselineskip}
+\setplength{lochpos}{\c_ptxcd_HeadMargin_dim}
+\setplength{locvpos}{\dimexpr\useplength{refvpos}+\useplength{subjectaftervskip}+1.4\baselineskip\relax}
+\setplength{refaftervskip}{0pt}
+\setplength{subjectbeforevskip}{0pt}
+\setplength{locwidth}{\dimexpr\paperwidth-154,5mm -\c_ptxcd_HeadMargin_dim\relax}
+\setplength{locheight}{\dimexpr\paperheight-\useplength{locvpos}-\c_ptxcd_BottomMargin_dim\relax}
-\RequirePackage[paper=a4]{tudarules}
\bool_if:NTF \g__ptxcd_letter_headrule_bool {
\ptxcd_makeheadrule[width=\useplength{firstheadwidth},color=identbarcolor]{ptxcd_LetterheadRule}
@@ -354,7 +405,7 @@
\int_new:N \l_ptxcd_letter_lastpage_int
\cs_new:Nn \ptxcd_letterpagemark: {
%get lastpage for this letter if not already done
- \int_compare:nTF {\value{page} = 1} {
+ \int_compare:nNnTF {\value{page}} = {1} {
\bool_if:NTF \g__ptxcd_firstpagenumber_bool
{\bool_set_true:N \l_tmpa_bool}
{\bool_set_false:N \l_tmpa_bool}
@@ -362,16 +413,14 @@
{\bool_set_true:N \l_tmpa_bool}
\bool_if:NT \l_tmpa_bool {
\int_if_exist:cF {c_ptxcd_letter\thisletter _lastpage_int} {
- \expandafter\ifx\csname r@\thisletter.lastpage\endcsname\relax
- %warning -> rerun latex
- \int_const:cn {c_ptxcd_letter\thisletter _lastpage_int} {0}
- \else
- \int_const:cn {c_ptxcd_letter\thisletter _lastpage_int} {
- \cs_if_exist:NTF \hypersetup
- {\exp_args:NNc \expandafter \@secondoffive { r@\thisletter.lastpage}}
- {\exp_args:NNc \expandafter \use_ii:nn { r@\thisletter.lastpage}}
+ \cs_if_exist:cTF {r@\thisletter.lastpage} {
+ \int_const:cn {c_ptxcd_letter\thisletter _lastpage_int} {
+ \exp_args:NNc \expandafter \@secondoffive { r@\thisletter.lastpage}
+ }
+ } {
+ %warning -> rerun latex
+ \int_const:cn {c_ptxcd_letter\thisletter _lastpage_int} {0}
}
- \fi
}
\usekomafont{pagenumber}\pagename\nobreakspace\thepage
\int_compare:nT {
@@ -429,63 +478,135 @@
\def\letterpagestyle{TUDaLetter}
%pdfa
-\if_bool:N \g_ptxcd_pdfa_bool
+\if_bool:N \g_ptxcd_pdfx_bool
\PassOptionsToPackage{a-2b}{pdfx}
+% Workaround posted by David Carlisle on tex.stackexchange
+% Thanks to Ulrike Fischer for mentioning it in #472
+ \let \__ptxcd_grouplevel_before_pdfx: \currentgrouplevel
+ \chardef\currentgrouplevel0
+ \ExplSyntaxOff
\RequirePackage{pdfx}
-%%hyperref
-\hypersetup{hidelinks, unicode}
-\iow_new:N \ptxcd_xmpdata_stream
-\tl_new:N \g_ptxcd_xmp_title
-\tl_new:N \g_ptxcd_xmp_author
-
-\cs_new:Nn \ptxcd_pass_TitleData: {
- \prop_if_empty:NF \g_ptxcd_MetaData_prop {
- \iow_open:Nn \ptxcd_xmpdata_stream {\jobname.xmpdata}
- \begingroup
- \def\newline{}
- \def\\{}
- \let\thanks\use_none:n
- \cs_set:Npn \and {\exp_not:N \sep}
- \use:c {pdfx@localcommands}
- \prop_map_function:NN \g_ptxcd_MetaData_prop \ptxcd_write_xmp_line:nn
- \endgroup
- \iow_close:N \ptxcd_xmpdata_stream
+ \ExplSyntaxOn
+ \let \currentgrouplevel \__ptxcd_grouplevel_before_pdfx:
+ \cs_undefine:N \__ptxcd_grouplevel_before_pdfx:
+% end of the workaround
+ %%hyperref
+ \hypersetup{hidelinks, unicode}
+ \iow_new:N \ptxcd_xmpdata_stream
+
+ \cs_if_exist:NF \prop_gput_if_new:Nnx {
+ \cs_generate_variant:Nn \prop_gput_if_new:Nnn {Nnx}
}
-}
-\cs_new:Nn \ptxcd_write_xmp_line:nn {
- %Fallback test for older kernels
- \cs_if_exist:NTF \str_uppercase:f {
- \tl_set:Nx \l_tmpa_tl {
- \str_uppercase:f {\tl_head:n {#1}}
- \str_lowercase:f { \tl_tail:n {#1}}
+ \cs_if_exist:NF \tl_to_str:V {\cs_generate_variant:Nn \tl_to_str:N {V}}
+
+ \cs_new:Nn \ptxcd_pass_TitleData: {
+ \prop_if_empty:NF \g_ptxcd_MetaData_prop {
+ \iow_open:Nn \ptxcd_xmpdata_stream {\jobname.xmpdata}
+ \begingroup
+ \def\newline{}
+ \def\\{}
+ \let\thanks\use_none:n
+ \cs_set:Npn \and {\exp_not:N \sep}
+ \use:c {pdfx@localcommands}
+ \prop_map_function:NN \g_ptxcd_MetaData_prop \ptxcd_write_xmp_line:nn
+ \endgroup
+ \iow_close:N \ptxcd_xmpdata_stream
}
- } {
- %may be removed in some time
- \tl_set:Nx \l_tmpa_tl {\tl_mixed_case:n {#1}}
}
- \cs_if_exist:cTF {\l_tmpa_tl}{
- \iow_now:Nx \ptxcd_xmpdata_stream {
- \c_backslash_str \l_tmpa_tl {\exp_not:n {#2}}
+ \cs_new:Nn \ptxcd_write_xmp_line:nn {
+ %Fallback test for older kernels
+ \cs_if_exist:NTF \str_uppercase:f {
+ \tl_set:Nx \l_tmpa_tl {
+ \str_uppercase:f {\tl_head:n {#1}}
+ \str_lowercase:f { \tl_tail:n {#1}}
+ }
+ } {
+ %may be removed in some time
+ \tl_set:Nx \l_tmpa_tl {\tl_mixed_case:n {#1}}
}
+ \cs_if_exist:cTF {\l_tmpa_tl}{
+ \iow_now:Nx \ptxcd_xmpdata_stream {
+ \c_backslash_str \l_tmpa_tl {\exp_not:n {#2}}
+ }
+ }{
+ \msg_error:nnn{tudaletter} {unknown-metadata} {#1}
+ }
+ }
+
+ \bool_new:N \g_ptxcd_pass_TitleData_bool
+ \bool_gset_true:N \g_ptxcd_pass_TitleData_bool
+ \prop_new:N \g_ptxcd_MetaData_prop
+
+ \newcommand*{\Metadata}[1]{
+ \bool_gset_false:N \g_ptxcd_pass_TitleData_bool
+ \prop_gset_from_keyval:Nn \g_ptxcd_MetaData_prop {#1}
+ }
+
+ \msg_new:nnnn{tudaletter} {unknown-metadata} {
+ You~ used~ the~ #1~ metadata~ entry.\\
+ I~ don't~ know~ how~ to~ handle~ that.\\
+ It~ will~ be~ ignored.
+ } {See~ TUDa-CI~ or~ pdfx~ documentation~ for~ details.}
+
+\else:
+ \hypersetup{pdfcreator=LaTeX~using~TUDa-CI}
+
+ \msg_new:nnnn {tudapub} {metadata-to-hypersetup} {
+ You~don't~use~pdfx.~
+ Here~the~\string\Metadata\~command~only~exists~for~compatibility~reasons.\\
+ I~will~pass~the~data~to~ḩypersetup.
}{
- \msg_error:nnn{tudaletter} {unknown-metadata} {#1}
+ If~possible~please~use~hyperref's~\strung\hypersetup~command~for~the~metadata~directly.\\
+ See~hyperref~documentation~for~details~on~usage.
}
-}
-\bool_new:N \g_ptxcd_pass_TitleData_bool
-\bool_gset_true:N \g_ptxcd_pass_TitleData_bool
-\prop_new:N \g_ptxcd_MetaData_prop
+ \newcommand*{\Metadata}[1]{
+ \tl_set:Nn \l_tmpa_tl {#1}
+ \tl_replace_all:Nnn \l_tmpa_tl {\sep} {;~}% pdfx-Syntax compatibility
+ \clist_map_inline:Nn \l_tmpa_tl {
+ \exp_args:Nx \hypersetup{pdf\tl_trim_spaces:n {##1}}
+ }
+ \msg_warning:nn {tudapub} {metadata-to-hypersetup}
+ }
-\newcommand*{\Metadata}[1]{
- \bool_gset_false:N \g_ptxcd_pass_TitleData_bool
- \prop_gset_from_keyval:Nn \g_ptxcd_MetaData_prop {#1}
-}
-\msg_new:nnnn{tudaletter} {unknown-metadata} {
- You~ used~ the~ #1~ metadata~ entry.\\
- I~ don't~ know~ how~ to~ handle~ that.\\
- It~ will~ be~ ignored.
-} {See~ TUDa-CI~ or~ pdfx~ documentation~ for~ details.}
+ \cs_new:Nn \ptxcd_pass_TitleData: {
+ % check if pdfmanagement is active
+ \prop_if_exist:NTF \g__pdfmanagement_documentproperties_prop {
+ \prop_set_eq:NN \l_tmpa_prop \g__pdfmanagement_documentproperties_prop
+ } {
+ \prop_set_eq:NN \l_tmpa_prop \g__hyp_documentproperties_prop
+ }
+
+ % title
+ \prop_if_in:NnF \l_tmpa_prop {hyperref/pdftitle} {
+ \begingroup
+ \def\newline{}
+ \def\\{}
+ \let\thanks\use_none:n
+ \tl_gset:Nf \g_tmpa_tl {\@title}
+ \endgroup
+ \hypersetup{pdftitle={\tl_to_str:V \g_tmpa_tl}}
+ }
+
+ % author
+ \prop_if_in:NnF \l_tmpa_prop {hyperref/pdfauthor} {
+ \begingroup
+ \def\newline{}
+ \def\\{}
+ \let\thanks\use_none:n
+ \tl_gset:Nx \g_tmpa_tl {\seq_use:Nn \g_ptxcd_author_seq {\exp_not:N \and}}
+ \tl_gset:Nx \g_tmpa_tl {\g_tmpa_tl }
+ \endgroup
+ \hypersetup{pdfauthor=\g_tmpa_tl}
+ }
+ }
+
+ \bool_if:NF \g_ptxcd_pdfa_bool {
+ \msg_new:nnn{tudapub} {no-pdfa}{The~ tudapub~ class~ won't~ create~ PDF/A-mode.}
+ \msg_info:nn{tudapub} {no-pdfa}
+ }
+
\fi:
diff --git a/macros/latex/contrib/tuda-ci/tex/tudalettersize10pt.clo b/macros/latex/contrib/tuda-ci/tex/tudalettersize10pt.clo
index 54348ee206..216642a28c 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudalettersize10pt.clo
+++ b/macros/latex/contrib/tuda-ci/tex/tudalettersize10pt.clo
@@ -1,4 +1,4 @@
-%% This is file `tudalettersize10pt.clo' version 3.38 (2024-05-07),
+%% This is file `tudalettersize10pt.clo' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -37,9 +37,11 @@
%%
\ProvidesFile{%
tudalettersize10pt.clo%
-}[tudaletter font size class option]
-
-\def\normalsize{%
+}[
+ tudaletter font size class option (10pt)
+]
+\let\normalsize\@undefined
+\DeclareRobustCommand\normalsize{%
\@setfontsize\normalsize\@xpt\@xipt
\abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
\abovedisplayshortskip \z@ \@plus3\p@
@@ -49,9 +51,11 @@
}
\def\datasize{%
\normalsize
- \@setfontsize\normalsize\@xpt\@xiiipt
+ \@setfontsize\normalsize
+ \@xpt\@xiiipt
}
-\def\small{%
+\let\small\@undefined
+\DeclareRobustCommand\small{%
\@setfontsize\small\@ixpt{11}%
\abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@
\abovedisplayshortskip \z@ \@plus2\p@
@@ -62,7 +66,8 @@
\itemsep \parsep}%
\belowdisplayskip \abovedisplayskip
}
-\def\footnotesize{%
+\let\footnotesize\@undefined
+\DeclareRobustCommand\footnotesize{%
\@setfontsize\footnotesize{7.5pt}\@xpt%
\abovedisplayskip 6\p@ \@plus2\p@ \@minus4\p@
\abovedisplayshortskip \z@ \@plus\p@
@@ -73,21 +78,28 @@
\itemsep \parsep}%
\belowdisplayskip \abovedisplayskip
}
-\def\scriptsize{\@setfontsize\scriptsize\@viipt\@viiipt}
-\def\tiny{\@setfontsize\tiny\@vipt\@viipt}
-\def\large{\@setfontsize\large\@xiipt{14}}
-\def\Large{\@setfontsize\Large\@xivpt{18}}
-\def\LARGE{\@setfontsize\LARGE\@xviipt{22}}
-\def\huge{\@setfontsize\huge\@xxpt{25}}
-\def\Huge{\@setfontsize\Huge\@xxvpt{30}}
+\let\scriptsize\@undefined
+\let\tiny\@undefined
+\let\large\@undefined
+\let\Large\@undefined
+\let\LARGE\@undefined
+\let\huge\@undefined
+\let\Huge\@undefined
+\DeclareRobustCommand\scriptsize{\@setfontsize\scriptsize\@viipt\@viiipt}
+\DeclareRobustCommand\tiny{\@setfontsize\tiny\@vipt\@viipt}
+\DeclareRobustCommand\large{\@setfontsize\large\@xiipt{14}}
+\DeclareRobustCommand\Large{\@setfontsize\Large\@xivpt{18}}
+\DeclareRobustCommand\LARGE{\@setfontsize\LARGE\@xviipt{22}}
+\DeclareRobustCommand\huge{\@setfontsize\huge\@xxpt{25}}
+\DeclareRobustCommand\Huge{\@setfontsize\Huge\@xxvpt{30}}
\normalsize
\setlength\footnotesep {6.65\p@}
\setlength{\skip\footins} {9\p@ \@plus 4\p@ \@minus 2\p@}
-\setlength\floatsep {12\p@ \@plus 2\p@ \@minus 2\p@}
\setlength\textfloatsep {20\p@ \@plus 2\p@ \@minus 4\p@}
+\setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
+\setlength\floatsep {12\p@ \@plus 2\p@ \@minus 2\p@}
\setlength\intextsep {12\p@ \@plus 2\p@ \@minus 2\p@}
\setlength\dblfloatsep {12\p@ \@plus 2\p@ \@minus 2\p@}
-\setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
\setlength\@fptop {0\p@ \@plus 1fil}
\setlength\@fpsep {8\p@ \@plus 2fil}
\setlength\@fpbot {0\p@ \@plus 1fil}
@@ -96,32 +108,32 @@
\setlength\@dblfpbot {0\p@ \@plus 1fil}
\setlength\partopsep {2\p@ \@plus 1\p@ \@minus 1\p@}
\def\@listi{\leftmargin\leftmargini
- \parsep 4\p@ \@plus2\p@ \@minus\p@
- \topsep 8\p@ \@plus2\p@ \@minus4\p@
- \itemsep4\p@ \@plus2\p@ \@minus\p@}
+ \parsep 4\p@ \@plus2\p@ \@minus\p@
+ \topsep 8\p@ \@plus2\p@ \@minus4\p@
+ \itemsep \parsep}
\let\@listI\@listi
\def\@listii {\leftmargin\leftmarginii
- \labelwidth\leftmarginii
- \advance\labelwidth-\labelsep
- \topsep 4\p@ \@plus2\p@ \@minus\p@
- \parsep 2\p@ \@plus\p@ \@minus\p@
- \itemsep \parsep}
+ \labelwidth\leftmarginii
+ \advance\labelwidth-\labelsep
+ \topsep 4\p@ \@plus2\p@ \@minus\p@
+ \parsep 2\p@ \@plus\p@ \@minus\p@
+ \itemsep \parsep}
\def\@listiii{\leftmargin\leftmarginiii
- \labelwidth\leftmarginiii
- \advance\labelwidth-\labelsep
- \topsep 2\p@ \@plus\p@\@minus\p@
- \parsep \z@
- \partopsep \p@ \@plus\z@ \@minus\p@
- \itemsep \topsep}
+ \labelwidth\leftmarginiii
+ \advance\labelwidth-\labelsep
+ \topsep 2\p@ \@plus\p@\@minus\p@
+ \parsep \z@
+ \partopsep \p@ \@plus\z@ \@minus\p@
+ \itemsep \topsep}
\def\@listiv {\leftmargin\leftmarginiv
- \labelwidth\leftmarginiv
- \advance\labelwidth-\labelsep}
+ \labelwidth\leftmarginiv
+ \advance\labelwidth-\labelsep}
\def\@listv {\leftmargin\leftmarginv
- \labelwidth\leftmarginv
- \advance\labelwidth-\labelsep}
+ \labelwidth\leftmarginv
+ \advance\labelwidth-\labelsep}
\def\@listvi {\leftmargin\leftmarginvi
- \labelwidth\leftmarginvi
- \advance\labelwidth-\labelsep}
+ \labelwidth\leftmarginvi
+ \advance\labelwidth-\labelsep}
%%% From File: $Id: scrkernel-paragraphs.dtx 3064 2019-02-01 07:40:28Z kohm $
\@ifundefined{@list@extra}{}{%
\expandafter\ifnum\scr@v@is@ge{3.17}\par@updaterelative\fi
diff --git a/macros/latex/contrib/tuda-ci/tex/tudamecheng.cfg b/macros/latex/contrib/tuda-ci/tex/tudamecheng.cfg
index 83f385b172..d1d70773e8 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudamecheng.cfg
+++ b/macros/latex/contrib/tuda-ci/tex/tudamecheng.cfg
@@ -1,4 +1,4 @@
-%% This is file `tudamecheng.cfg' version 3.38 (2024-05-07),
+%% This is file `tudamecheng.cfg' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.38}
-\def\filedate{2024-05-07}
+\def\fileversion{3.41}
+\def\filedate{2024-07-02}
\RequirePackage{expl3}
\ProvidesExplFile{tudamecheng.cfg}
{\filedate}{\fileversion}{Special Features the department of mechanical engineering of Darmstadt's Corporate Design (tuda-ci)}
diff --git a/macros/latex/contrib/tuda-ci/tex/tudaposter.cls b/macros/latex/contrib/tuda-ci/tex/tudaposter.cls
index 99b2d2d07d..0286215cb0 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudaposter.cls
+++ b/macros/latex/contrib/tuda-ci/tex/tudaposter.cls
@@ -1,4 +1,4 @@
-%% This is file `tudaposter.cls' version 3.38 (2024-05-07),
+%% This is file `tudaposter.cls' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.38}
-\def\filedate{2024-05-07}
+\def\fileversion{3.41}
+\def\filedate{2024-07-02}
\NeedsTeXFormat{LaTeX2e}
\ProvidesExplPackage{tudaposter}{\filedate}{\fileversion}{Poster Layouts for the Corporate Design of TU Darmstadt}
diff --git a/macros/latex/contrib/tuda-ci/tex/tudapub.cls b/macros/latex/contrib/tuda-ci/tex/tudapub.cls
index a863197f83..976d2a943c 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudapub.cls
+++ b/macros/latex/contrib/tuda-ci/tex/tudapub.cls
@@ -1,4 +1,4 @@
-%% This is file `tudapub.cls' version 3.38 (2024-05-07),
+%% This is file `tudapub.cls' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.38}
-\def\filedate{2024-05-07}
+\def\fileversion{3.41}
+\def\filedate{2024-07-02}
\NeedsTeXFormat{LaTeX2e}
\ProvidesExplClass{tudapub}
@@ -224,11 +224,6 @@
}
}
-\bool_if:NT \g_ptxcd_pdfx_bool {
- \PassOptionsToPackage{RGB}{xcolor}
- \msg_info:nn {tudapub} {colors-to-rgb}
-}
-
\exp_args:Nx \tl_if_eq:nnT {\prop_item:Nn \g_ptxcd_clsopts_prop {fontsize}} {9pt}
{
\prop_if_in:NnF \g_ptxcd_unknown_clsopts_prop {DIV}
@@ -254,6 +249,64 @@
\LoadClass{\g_ptxcd_pub_class_tl}
+\RequirePackage{tudafonts}
+\RequirePackage{tudacolors}
+\RequirePackage[draft=false]{scrlayer-scrpage}
+\RequirePackage{graphicx}
+
+\bool_if:NTF \g_ptxcd_pdfx_bool {
+ \PassOptionsToPackage{RGB}{xcolor}
+ \msg_info:nn {tudapub} {colors-to-rgb}
+
+ %only apply the hack if pdfx is older than the working version
+ \PassOptionsToPackage{a-2b}{pdfx}
+% Workaround posted by David Carlisle on tex.stackexchange
+% Thanks to Ulrike Fischer for mentioning it in #472
+ \let \__ptxcd_grouplevel_before_pdfx: \currentgrouplevel
+ \chardef\currentgrouplevel0
+ \ExplSyntaxOff
+ \RequirePackage{pdfx}
+ \ExplSyntaxOn
+ \let \currentgrouplevel \__ptxcd_grouplevel_before_pdfx:
+ \cs_undefine:N \__ptxcd_grouplevel_before_pdfx:
+% end of the workaround
+
+ \msg_new:nnn{tudapub} {prefer-lualatex} {
+ You~use~pdfa-mode~in~#1.\\
+ This~can~lead~to~incompatiblities~especially~with~older~compiler~versions.\\
+ You~should~prefer~using~lualatex.
+ }
+ \msg_new:nnnn{tudapub} {outdated-package-pdfa} {
+ Your~Version~of~the~#1-package~is~too~old~to~support~all~methods~required~by~tudapubs~pdfa-mode.\\
+ Either~update~your~TeX-distribution~or~switch~to~pdfa=false.
+ }{See~DEMO-tudapub~for~further~information.}
+
+
+ \sys_if_engine_pdftex:T {
+ \msg_warning:nnn{tudapub} {prefer-lualatex} {PDFTeX}
+ }
+
+ \sys_if_engine_xetex:T {
+ \msg_warning:nnn{tudapub} {prefer-lualatex} {XeTeX}
+ }
+
+ \@ifpackagelater{xmpincl}{2021/09/22}{
+ }{
+ \msg_error:nn{tudapub} {outdated-package-pdfa} {xmpincl}
+ }
+
+ \@ifpackagelater{pdfx}{2018/12/01}{
+ }{
+ \msg_error:nn{tudapub} {outdated-package-pdfa} {pdfx}
+ }
+} {
+ \PassOptionsToPackage{hidelinks, unicode}{hyperref}
+ \RequirePackage{hyperref}
+}
+
+\RequirePackage{tudarules}
+\RequirePackage{trimclip}
+\RequirePackage{bookmark}
\prop_map_inline:Nn \g_ptxcd_unknown_clsopts_prop {
\cs_if_exist:cT {KV@KOMA.\g_ptxcd_pub_class_tl.cls@#1} {
@@ -299,12 +352,6 @@
}
-\usepackage{tudarules}
-
-
-%,~ subsection,~
-\usepackage{tudafonts}
-
%Margin & titlefontsize setup setup
\bool_new:N \g_ptxcd_marginpar_bool
@@ -386,8 +433,7 @@
%%%%%Anfang Randeinstellungen Geometry
-%Has to be loaded here due to headwidth options
-\usepackage[draft=false]{scrlayer-scrpage}
+
\AddToHook{begindocument}[tudapub:BCOR-titlepage]{
\bool_if:NT \g_ptxcd_BCOR_titlepage_bool
@@ -464,7 +510,6 @@
-
\newcommand*{\institution}[1]{
\def\ptxcd_institution{#1}
}
@@ -472,7 +517,6 @@
\cs_new:Nn \ptxcd_titlerule_sep: {\the\dp\strutbox}
-\usepackage{tudacolors}
\setkomafont{disposition}{\sffamily\bfseries}
\setkomafont{pageheadfoot}{\sffamily\small}
@@ -600,7 +644,6 @@
\newcommand{\titleimage}[1]{\tl_gset:Nn \g_ptxcd_titleimage_code_tl {#1}}
\box_new:N \l__ptxcd_titlegraphic_box
-\RequirePackage{trimclip}
\NewDocumentCommand{\titlegraphic}{sm}{
\IfBooleanTF{#1}{
@@ -640,7 +683,7 @@
You~selected~an~unknown~language~#1.\\
The~Variable~#2~does~not~have~a~predefined~value.\\
Ensure~to~redefine~#2~to~match~your~language.\\
- Otherwise~the~ngerman~vaue~#3~will~be~used.
+ Otherwise~the~german~vaue~#3~will~be~used.
}
\cs_new:Nn \ptxcd_define_captionFallback:Nn {
@@ -870,43 +913,8 @@
\DeclareNewPageStyleByLayers{title.TUDa}{title.TUDa.background,title.TUDa.rule,title.TUDa.image}
%Logos
-\RequirePackage{graphicx}
\if_bool:N \g_ptxcd_pdfx_bool
-
- \msg_new:nnn{tudapub} {prefer-lualatex} {
- You~use~pdfa-mode~in~#1.\\
- This~can~lead~to~incompatiblities~especially~with~older~compiler~versions.\\
- You~should~prefer~using~lualatex.
- }
- %only apply the hack if pdfx is older than the working version
- \PassOptionsToPackage{a-2b}{pdfx}
- \RequirePackage{pdfx}
-
- \msg_new:nnnn{tudapub} {outdated-package-pdfa} {
- Your~Version~of~the~#1-package~is~too~old~to~support~all~methods~required~by~tudapubs~pdfa-mode.\\
- Either~update~your~TeX-distribution~or~switch~to~pdfa=false.
- }{See~DEMO-tudapub~for~further~information.}
-
-
- \sys_if_engine_pdftex:T {
- \msg_warning:nnn{tudapub} {prefer-lualatex} {PDFTeX}
- }
-
- \sys_if_engine_xetex:T {
- \msg_warning:nnn{tudapub} {prefer-lualatex} {XeTeX}
- }
-
- \@ifpackagelater{xmpincl}{2021/09/22}{
- }{
- \msg_error:nn{tudapub} {outdated-package-pdfa} {xmpincl}
- }
-
- \@ifpackagelater{pdfx}{2018/12/01}{
- }{
- \msg_error:nn{tudapub} {outdated-package-pdfa} {pdfx}
- }
-
%%hyperref
\hypersetup{hidelinks, unicode}
\iow_new:N \ptxcd_xmpdata_stream
diff --git a/macros/latex/contrib/tuda-ci/tex/tudarules.sty b/macros/latex/contrib/tuda-ci/tex/tudarules.sty
index 76dae0e2e7..98182d08c1 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudarules.sty
+++ b/macros/latex/contrib/tuda-ci/tex/tudarules.sty
@@ -1,4 +1,4 @@
-%% This is file `tudarules.sty' version 3.38 (2024-05-07),
+%% This is file `tudarules.sty' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.38}
-\def\filedate{2024-05-07}
+\def\fileversion{3.41}
+\def\filedate{2024-07-02}
\NeedsTeXFormat{LaTeX2e}
\ProvidesExplPackage{tudarules}{\filedate}{\fileversion}{Creation of colored bars for tuda-ci bundle}
diff --git a/macros/latex/contrib/tuda-ci/tex/tudasciposter.cls b/macros/latex/contrib/tuda-ci/tex/tudasciposter.cls
index e3bda42e20..71e8123ef1 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudasciposter.cls
+++ b/macros/latex/contrib/tuda-ci/tex/tudasciposter.cls
@@ -1,4 +1,4 @@
-%% This is file `tudasciposter.cls' version 3.38 (2024-05-07),
+%% This is file `tudasciposter.cls' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.38}
-\def\filedate{2024-05-07}
+\def\fileversion{3.41}
+\def\filedate{2024-07-02}
\NeedsTeXFormat{LaTeX2e}
\ProvidesExplPackage{tudasciposter}{\filedate}{\fileversion}{Scientific Poster Layout for TU Darmstadt}
@@ -123,16 +123,36 @@
\PassOptionsToPackage{DIV=10}{typearea}
\LoadClass[parskip=full-]{scrartcl}
\RequirePackage{tudafonts}
-\RequirePackage{tikz}
-\usetikzlibrary{calc}
+\RequirePackage{calc}
+\RequirePackage[margin=0pt]{geometry}
+\RequirePackage{tudacolors}
+
+\ExplSyntaxOn
+
+\if_bool:N \g_ptxcd_pdfa_bool
+\PassOptionsToPackage{a-2b}{pdfx}
+\IfFormatAtLeastTF{2020/10/01}{}{\endinput}
+% Workaround posted by David Carlisle on tex.stackexchange
+% Thanks to Ulrike Fischer for mentioning it in #472
+ \let \__ptxcd_grouplevel_before_pdfx: \currentgrouplevel
+ \chardef\currentgrouplevel0
+ \ExplSyntaxOff
+ \RequirePackage{pdfx}
+ \ExplSyntaxOn
+ \let \currentgrouplevel \__ptxcd_grouplevel_before_pdfx:
+ \cs_undefine:N \__ptxcd_grouplevel_before_pdfx:
+% end of the workaround
+\fi:
+
+\ExplSyntaxOff
\RequirePackage{tcolorbox}
\tcbuselibrary{poster}
-\RequirePackage[margin=0pt]{geometry}
-\ExplSyntaxOn
-
+\RequirePackage[mode=tikz]{tudarules}
+\RequirePackage{qrcode}
+\ExplSyntaxOn
%Font adjusments
\renewcommand*{\familydefault}{\sfdefault}
@@ -150,9 +170,7 @@
% end of font adjustments
-\RequirePackage[mode=tikz]{tudarules}
-\RequirePackage{tudacolors}
-\RequirePackage{qrcode}
+
\dim_const:Nn \c_ptxcd_headrule_ht_dim {\c_ptxcd_rulesep_dim +\c_ptxcd_largerule_dim + \c_ptxcd_smallrule_dim}
%Setup title
@@ -231,8 +249,6 @@
%%%%%%%%%%%%%%%%%%%
%PDFA
\if_bool:N \g_ptxcd_pdfa_bool
-\PassOptionsToPackage{a-2b}{pdfx}
-\RequirePackage{pdfx}
%%hyperref
\hypersetup{hidelinks, unicode, hyperfootnotes=false}
\iow_new:N \ptxcd_xmpdata_stream
diff --git a/macros/latex/contrib/tuda-ci/tex/tudasize9pt.clo b/macros/latex/contrib/tuda-ci/tex/tudasize9pt.clo
index 8537d16f7c..4f61806992 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudasize9pt.clo
+++ b/macros/latex/contrib/tuda-ci/tex/tudasize9pt.clo
@@ -1,4 +1,4 @@
-%% This is file `tudasize9pt.clo' version 3.38 (2024-05-07),
+%% This is file `tudasize9pt.clo' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/tex/tudathesis.cfg b/macros/latex/contrib/tuda-ci/tex/tudathesis.cfg
index e25ded1a68..54ffeeacd0 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudathesis.cfg
+++ b/macros/latex/contrib/tuda-ci/tex/tudathesis.cfg
@@ -1,4 +1,4 @@
-%% This is file `tudathesis.cfg' version 3.38 (2024-05-07),
+%% This is file `tudathesis.cfg' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.38}
-\def\filedate{2024-05-07}
+\def\fileversion{3.41}
+\def\filedate{2024-07-02}
\RequirePackage{expl3}
\ProvidesExplFile{tudathesis.cfg}
{\filedate}{\fileversion}{Special Features for publication type 'thesis' using TU Darmstadt's Corporate Design (tuda-ci)}
@@ -56,8 +56,9 @@
}
{
\ptxcd_declare_caption:Nnn \departmentname {Fachbereich} {department}
- \ptxcd_declare_caption:Nnn \ptxcd_departmentprefix: {im~ \departmentname}{in~the~\departmentname{}~ of}
\ptxcd_declare_caption:Nnn \departmentfullname {\departmentname{}~ \ptxcd_department:} { \ptxcd_department:{}~ \text_titlecase:n{\departmentname}}
+ \ptxcd_declare_caption:Nnn \ptxcd_departmentprefix: {im~ \departmentname}{in~the~\departmentname{}~ of}
+ \ptxcd_declare_caption:Nnn \ptxcd_in_department {\ptxcd_departmentprefix:{}~\ptxcd_department:}{\ptxcd_departmentprefix:{}~\ptxcd_department:}
}
{\bool_if:NTF \g_ptxcd_dr_bool
{
@@ -203,7 +204,7 @@
\IfBooleanTF{#1}{
\tl_gset:Nn \ptxcd_department: {#3}
\tl_gset:Nn \ptxcd_in_department{#3}
- \IfNoValueTF {\tl_gset:Nn \ptxcd_box_department {#3}} {\tl_gset:Nn \ptxcd_box_department{#2}}
+ \IfNoValueTF {#2} {\tl_gset:Nn \ptxcd_box_department {#3}} {\tl_gset:Nn \ptxcd_box_department{#2}}
\clist_remove_all:Nn \g_ptxcd_Required_title_data_clist {department}
}{
\tl_gset:Nn \g_ptxcd_department_choice_tl {#3}
@@ -373,7 +374,7 @@
{\keys_set:nn {ptxcd/thesis} {printid=#1}}
\lowertitleback{
\urlstyle{same}
- \selectlanguage{ngerman}
+ \selectlanguage{german}
Bitte~zitieren~Sie~dieses~Dokument~als:
\tl_if_empty:NF \g_ptxcd_thesis_urn_tl {\\URN:~urn:nbn:de:tuda-tuprints-\g_ptxcd_thesis_urn_tl}\\
URL:~\url{https://tuprints.ulb.tu-darmstadt.de/\g_ptxcd_thesis_tuprints_tl}\\
@@ -530,7 +531,7 @@
\selectfont
{\ifx\@subtitle\@empty\else\usekomafont{subtitle}{\@subtitle\par}\fi}%
\usekomafont{subject}
- \bool_if:NT \g_ptxcd_dr_bool {\selectlanguage{ngerman}}
+ \bool_if:NT \g_ptxcd_dr_bool {\selectlanguage{german}}
\tl_if_empty:NF \g_ptxcd_titleintro_tl {\g_ptxcd_titleintro_tl\par}
\tl_if_empty:NF \g_ptxcd_thesis_drtext_tl {\g_ptxcd_thesis_drtext_tl\par}
{%
@@ -644,7 +645,7 @@
{\keys_set:nn {ptxcd/thesis} {affidavit=#2}}%
}%
\clearpage
-\begin{otherlanguage}{ngerman}
+\begin{otherlanguage}{german}
\bool_if:NTF \g_ptxcd_dr_bool {
\g__ptxcd_affidavit_dr_tl
} {
@@ -661,8 +662,6 @@
\expandafter\def\csname g__ptxcd_affidavit_dr_tl\endcsname {%
\section*{Erklärungen laut Promotionsordnung}
- \subsection*{\S\,8 Abs. 1 lit. c PromO}
- Ich versichere hiermit, dass die elektronische Version meiner Dissertation mit der schriftlichen Version übereinstimmt.
\subsection*{\S\,8 Abs. 1 lit. d PromO}
Ich versichere hiermit, dass zu einem vorherigen Zeitpunkt noch keine Promotion versucht wurde. In diesem Fall sind nähere Angaben über Zeitpunkt, Hochschule, Dissertationsthema und Ergebnis dieses Versuchs mitzuteilen.
@@ -744,7 +743,7 @@
Use~"ignore-title-language"~Option~to~ignore~this~message~at~your~own~risk.
}
-\PassOptionsToPackage{ngerman}{babel}
+\PassOptionsToPackage{german}{babel}
\AtBeginDocument{
\@ifpackageloaded{babel}{}{
\msg_new:nnnn{tudapub/thesis} {missing-babel} {
diff --git a/macros/latex/contrib/tutodoc/code/tutodoc-locale-main-french.cfg.sty b/macros/latex/contrib/tutodoc/code/tutodoc-locale-main-french.cfg.sty
index c639e1e9e0..5c97cb2f18 100644
--- a/macros/latex/contrib/tutodoc/code/tutodoc-locale-main-french.cfg.sty
+++ b/macros/latex/contrib/tutodoc/code/tutodoc-locale-main-french.cfg.sty
@@ -8,8 +8,8 @@
\NewDocumentCommand{\tutodoc@trans@note@title}{}{Note}
\NewDocumentCommand{\tutodoc@trans@tip@title}{}{Astuce}
\NewDocumentCommand{\tutodoc@trans@important@title}{}{Important}
-\NewDocumentCommand{\tutodoc@trans@caution@title}{}{Caution}
-\NewDocumentCommand{\tutodoc@trans@warn@title}{}{Danger}
+\NewDocumentCommand{\tutodoc@trans@caution@title}{}{Mise ~ en ~ garde}
+\NewDocumentCommand{\tutodoc@trans@warn@title}{}{Avertissement}
\NewDocumentCommand{\tutodoc@trans@chges@pb}{}{Problème}
\NewDocumentCommand{\tutodoc@trans@chges@break}{}{Bifurcation}
\NewDocumentCommand{\tutodoc@trans@chges@fix}{}{Réparation}
diff --git a/macros/latex/contrib/tutodoc/code/tutodoc.sty b/macros/latex/contrib/tutodoc/code/tutodoc.sty
index 5e0ea7a0fb..a27e1a7ac6 100644
--- a/macros/latex/contrib/tutodoc/code/tutodoc.sty
+++ b/macros/latex/contrib/tutodoc/code/tutodoc.sty
@@ -21,31 +21,42 @@
marginparwidth = 2cm,
marginparsep = 2mm,
heightrounded
-]{geometry}[2020-01-02]
+]{geometry}%
+ [2020-01-02]
+
+\RequirePackage[raggedright]%
+ {titlesec}%
+ [2021/07/05]
-\RequirePackage[raggedright]{titlesec}[2021/07/05]
\RequirePackage{tocbasic}
-\RequirePackage{xcolor}[2022/06/12]
-\RequirePackage{hyperref}[2023-02-07]
+\RequirePackage{xcolor}%
+ [2022/06/12]
+
+\RequirePackage{hyperref}%
+ [2023-02-07]
% We delegate the management of quoting to the `csquotes' package,
% which takes care of the linguistic parameters.
-\RequirePackage{csquotes}[2022-09-14]
+\RequirePackage{csquotes}%
+ [2022-09-14]
-\RequirePackage{amsthm}[2017/09]
+\RequirePackage{amsthm}%
+ [2017/09]
-\RequirePackage{clrstrip}[2021-08-28]
+\RequirePackage{clrstrip}%
+ [2021-08-28]
\RequirePackage{tcolorbox}[2023/06/19]
\tcbuselibrary{minted, breakable, skins}
-\RequirePackage{marginnote}[2023-09-07]
+\RequirePackage{marginnote}%
+ [2023-09-07]
% -- LOCALE LANG -- %
@@ -808,8 +819,8 @@
%%%
% prototype::
% #1 : the color of the margin note
-% #2 : the first material (a date or nothing)
-% #3 : the second material (a version number or nothing)
+% #2 : the first material (a version number or nothing)
+% #3 : the second material (a date or nothing)
% #4 : the last negative vertical spacing for the 2nd rule
%
% :action: this macro factorizes the printing of the changes
@@ -829,15 +840,19 @@
\IfBlankTF{#2}{}{
\par
- \__tdoc_translate_date:n { #2 }
+ #2
\par
}
- \vspace{1pt}
+ \IfBlankTF{#3}{}{
+ \IfBlankTF{#2}{}{
+ \vspace{1pt}
+ }
- \par
- #3
- \par
+ \par
+ \__tdoc_translate_date:n { #3 }
+ \par
+ }
\vspace{#4}
\rule{1.65cm}{.95pt}
@@ -871,8 +886,8 @@
%%%
\cs_new:Npn \__tdoc_translate_date_process:w #1 - #2 - #3 \q_stop {
\tutodoc@trans@date{#1}
- {#2}
- {#3}
+ {#2}
+ {#3}
}
@@ -895,9 +910,9 @@
%%%
\NewDocumentCommand{\tdocversion}{O{blue} m O{}}{
\tutodoc@new@change@margin{#1} % Color
- {#3} % Date
- {#2} % Version
- {-4.25pt} % Last negative vertical spacing
+ {#2} % Version
+ {#3} % Date
+ {-4.25pt} % Last negative vertical spacing
}
@@ -919,7 +934,7 @@
}
-% -- CHANGES - WHAT?
+% -- CHANGES - WHAT? -- %
% :: MESSAGES :: %
diff --git a/macros/latex/contrib/tutodoc/doc/tutodoc-en.pdf b/macros/latex/contrib/tutodoc/doc/tutodoc-en.pdf
index 6124b97c99..84a98f1e35 100644
--- a/macros/latex/contrib/tutodoc/doc/tutodoc-en.pdf
+++ b/macros/latex/contrib/tutodoc/doc/tutodoc-en.pdf
Binary files differ
diff --git a/macros/latex/contrib/tutodoc/doc/tutodoc-en.tex b/macros/latex/contrib/tutodoc/doc/tutodoc-en.tex
index f6449b959c..371b905d97 100644
--- a/macros/latex/contrib/tutodoc/doc/tutodoc-en.tex
+++ b/macros/latex/contrib/tutodoc/doc/tutodoc-en.tex
@@ -1,4 +1,4 @@
-
+
% -------------------- %
% -- RESOURCES USED -- %
% -------------------- %
@@ -266,8 +266,8 @@ ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble...
\end{filecontents*}
-\begin{filecontents*}[overwrite]{examples-version-n-change-unclassifiable.tex}
-\begin{tdoctopic}{Unclassifiable}
+\begin{filecontents*}[overwrite]{examples-version-n-change-user-choice.tex}
+\begin{tdoctopic}{It's my choice}
% This is where the point needs to be put.
\item Info 1...
\item Info 2...
@@ -343,9 +343,9 @@ ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble...
\begin{document}
-\title{Le package \texttt{tutodoc} - Documentation de type tutoriel}
+\title{The \texttt{tutodoc} package - Tutorial-type documentation}
\author{Christophe BAL}
-\date{\ordinalnum{1} Jan. 2024 - Version 1.1.0}
+\date{23 Aug. 2024 - Version 1.2.0}
\maketitle
@@ -582,7 +582,6 @@ The \tdocenv{tdocwarn} environment is used to warn the user of a trap to avoid.
\tdoclatexinput[sbs]{examples-focus-warn.tex}
-\newpage
\section{Specify packages, classes, macros or environments}
Here's what you can type semantically.
@@ -794,7 +793,6 @@ To obtain renderings by importing the code from an external file, instead of typ
\end{tdocexa}
-\newpage
\section{Use cases in \LaTeX}
Documenting a package or a class is done efficiently using use cases showing both the code and the corresponding result.
@@ -873,9 +871,9 @@ Here are some examples.
\begin{tdocwarn}
With default formatting, if the code begins with an opening bracket, the default option must be explicitly indicated.
\tdocdocbasicinput{examples-listing-strange.tex}
-
+
\smallskip
-
+
Another method is to use the \tdocmacro{string} primitive.
\tdocdocbasicinput{examples-listing-strange-bis.tex}
\end{tdocwarn}
@@ -943,7 +941,6 @@ The \tdocmacro{tdoclatexinput} macro, shown below, expects the path of a file an
% ------------------ %
-\newpage
\subsection{Imported codes put into practice} \label{tdoc-latexshow}
\begin{tdocexa}[Showcase]
@@ -1101,7 +1098,6 @@ during the latest changes.
% ------------------ %
-\newpage
\begin{tdocexa}[For fixes]
\leavevmode
@@ -1115,7 +1111,7 @@ during the latest changes.
\begin{tdocexa}[Chosen topics]
\leavevmode
- \tdoclatexinput[sbs]{examples-version-n-change-unclassifiable.tex}
+ \tdoclatexinput[sbs]{examples-version-n-change-user-choice.tex}
\end{tdocexa}
@@ -1151,9 +1147,26 @@ Blo, blo, blo...
Blu, blu, blu...
\end{tdoclatex}
-\newpage
\section{History}
+\tdocversion{1.2.0}[2024-08-23]
+
+\begin{tdocupdate}
+ \item \tdocmacro{tdocversion}
+ \begin{enumerate}
+ \item The version number is above the date.
+
+ \item The spacing is better managed when the date is absent.
+ \end{enumerate}
+\end{tdocupdate}
+
+
+\begin{tdocfix}
+ \item Content highlighting: the French translations of \tdocinEN*{caution} and \tdocinEN*{danger} were incorrect.
+\end{tdocfix}
+
+\tdocsep
+
\tdocversion{1.1.0}[2024-01-06]
\begin{tdocnew}
@@ -1183,5 +1196,5 @@ Blu, blu, blu...
First public version of the project.
+
\end{document}
- \ No newline at end of file
diff --git a/macros/latex/contrib/tutodoc/doc/tutodoc-fr.pdf b/macros/latex/contrib/tutodoc/doc/tutodoc-fr.pdf
index a8691e1e8d..d0a970abec 100644
--- a/macros/latex/contrib/tutodoc/doc/tutodoc-fr.pdf
+++ b/macros/latex/contrib/tutodoc/doc/tutodoc-fr.pdf
Binary files differ
diff --git a/macros/latex/contrib/tutodoc/doc/tutodoc-fr.tex b/macros/latex/contrib/tutodoc/doc/tutodoc-fr.tex
index ae9f99c300..8291ce4b4a 100644
--- a/macros/latex/contrib/tutodoc/doc/tutodoc-fr.tex
+++ b/macros/latex/contrib/tutodoc/doc/tutodoc-fr.tex
@@ -266,8 +266,8 @@ ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble...
\end{filecontents*}
-\begin{filecontents*}[overwrite]{examples-version-n-change-unclassifiable.tex}
-\begin{tdoctopic}{Inclassable}
+\begin{filecontents*}[overwrite]{examples-version-n-change-user-choice.tex}
+\begin{tdoctopic}{C'est mon choix}
% Ici le point s'impose.
\item Info 1...
\item Info 2...
@@ -341,7 +341,7 @@ ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble...
\title{Le package \texttt{tutodoc} - Documentation de type tutoriel}
\author{Christophe BAL}
-\date{1\ier{} Janv. 2024 - Version 1.1.0}
+\date{23 Août 2024 - Version 1.2.0}
\maketitle
@@ -671,18 +671,18 @@ Il est parfois utile d'obtenir directement le rendu d'un code dans la documentat
\subsection{Avec une bande colorée}
\begin{tdocexa}[Avec les textes par défaut]
- Il peut être utile de montrer un rendu réel directement dans un document
+ Il peut être utile de montrer un rendu réel directement dans un document.
\footnote{
Typiquement lorsque l'on fait une démo.
- }.
+ }
Ceci se tape via \tdocenv{tdocshowcase} comme suit.
\tdoclatexinput[code]{examples-showcase-default.tex}
- On obtient alors le rendu suivant
+ On obtient alors le rendu suivant.
\footnote{
En coulisse, la bande est créée sans effort grâce au package \tdocpack{clrstrip}.
- }.
+ }
\medskip
@@ -889,9 +889,9 @@ Voici des exemples d'utilisation.
\begin{tdocwarn}
Avec la mise en forme par défaut, si le code commence par un crochet ouvrant, il faudra indiquer explicitement l'option par défaut.
\tdocdocbasicinput{examples-listing-strange.tex}
-
+
\smallskip
-
+
Une autre méthode consiste à utiliser la primitive \tdocmacro{string}.
\tdocdocbasicinput{examples-listing-strange-bis.tex}
\end{tdocwarn}
@@ -1059,10 +1059,10 @@ On peut au choix dater quelque chose, ou bien le versionner, dans ce second cas
\begin{tdocwarn}
- Seul l'emploi du format numérique \tdocinlatex+YYYY-MM-DD+ est vérifié
+ Seul l'emploi du format numérique \tdocinlatex+YYYY-MM-DD+ est vérifié,
\footnote{
Techniquement, vérifier la validité d'une date, via \LaTeX3, ne présente pas de difficulté.
- },
+ }
et ceci est un choix ! Pourquoi cela ? Tout simplement car dater et versionner des explications devrait se faire de façon semi-automatisée afin d'éviter tout bug humain.
% \footnote{
% L'auteur de \tdocpack{tutodoc} est entrain de mettre en place un ensemble d'outils permettant une telle semi-automatisation.
@@ -1132,11 +1132,10 @@ lors des derniers changements.
\begin{tdocexa}[Thématiques aux choix]
\leavevmode
- \tdoclatexinput[sbs]{examples-version-n-change-unclassifiable.tex}
+ \tdoclatexinput[sbs]{examples-version-n-change-user-choice.tex}
\end{tdocexa}
-\newpage
\section{Décorations}
Finissons cette documentation avec de petites outils de mise en forme pouvant rendre de grands services.
@@ -1169,9 +1168,26 @@ Blo, blo, blo...
Blu, blu, blu...
\end{tdoclatex}
-\newpage
\section{Historique}
+\tdocversion{1.2.0}[2024-08-23]
+
+\begin{tdocupdate}
+ \item \tdocmacro{tdocversion}
+ \begin{enumerate}
+ \item Le numéro de version est au-dessus de la date.
+
+ \item L'espacement est mieux géré lorsque la date est absente.
+ \end{enumerate}
+\end{tdocupdate}
+
+
+\begin{tdocfix}
+ \item Mise en avant de contenus : les traductions françaises de \tdocinEN*{caution} et \tdocinEN*{danger} étaient erronées.
+\end{tdocfix}
+
+\tdocsep
+
\tdocversion{1.1.0}[2024-01-06]
\begin{tdocnew}
@@ -1201,4 +1217,5 @@ Blu, blu, blu...
Première version publique du projet.
+
\end{document}
diff --git a/macros/latex/contrib/typog/LICENSE b/macros/latex/contrib/typog/LICENSE
new file mode 100644
index 0000000000..888d9e68e7
--- /dev/null
+++ b/macros/latex/contrib/typog/LICENSE
@@ -0,0 +1,415 @@
+The LaTeX Project Public License
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+LPPL Version 1.3c 2008-05-04
+
+Copyright 1999 2002-2008 LaTeX3 Project
+ Everyone is allowed to distribute verbatim copies of this
+ license document, but modification of it is not allowed.
+
+
+PREAMBLE
+========
+
+The LaTeX Project Public License (LPPL) is the primary license under
+which the LaTeX kernel and the base LaTeX packages are distributed.
+
+You may use this license for any work of which you hold the copyright
+and which you wish to distribute. This license may be particularly
+suitable if your work is TeX-related (such as a LaTeX package), but
+it is written in such a way that you can use it even if your work is
+unrelated to TeX.
+
+The section `WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE',
+below, gives instructions, examples, and recommendations for authors
+who are considering distributing their works under this license.
+
+This license gives conditions under which a work may be distributed
+and modified, as well as conditions under which modified versions of
+that work may be distributed.
+
+We, the LaTeX3 Project, believe that the conditions below give you
+the freedom to make and distribute modified versions of your work
+that conform with whatever technical specifications you wish while
+maintaining the availability, integrity, and reliability of
+that work. If you do not see how to achieve your goal while
+meeting these conditions, then read the document `cfgguide.tex'
+and `modguide.tex' in the base LaTeX distribution for suggestions.
+
+
+DEFINITIONS
+===========
+
+In this license document the following terms are used:
+
+ `Work'
+ Any work being distributed under this License.
+
+ `Derived Work'
+ Any work that under any applicable law is derived from the Work.
+
+ `Modification'
+ Any procedure that produces a Derived Work under any applicable
+ law -- for example, the production of a file containing an
+ original file associated with the Work or a significant portion of
+ such a file, either verbatim or with modifications and/or
+ translated into another language.
+
+ `Modify'
+ To apply any procedure that produces a Derived Work under any
+ applicable law.
+
+ `Distribution'
+ Making copies of the Work available from one person to another, in
+ whole or in part. Distribution includes (but is not limited to)
+ making any electronic components of the Work accessible by
+ file transfer protocols such as FTP or HTTP or by shared file
+ systems such as Sun's Network File System (NFS).
+
+ `Compiled Work'
+ A version of the Work that has been processed into a form where it
+ is directly usable on a computer system. This processing may
+ include using installation facilities provided by the Work,
+ transformations of the Work, copying of components of the Work, or
+ other activities. Note that modification of any installation
+ facilities provided by the Work constitutes modification of the Work.
+
+ `Current Maintainer'
+ A person or persons nominated as such within the Work. If there is
+ no such explicit nomination then it is the `Copyright Holder' under
+ any applicable law.
+
+ `Base Interpreter'
+ A program or process that is normally needed for running or
+ interpreting a part or the whole of the Work.
+
+ A Base Interpreter may depend on external components but these
+ are not considered part of the Base Interpreter provided that each
+ external component clearly identifies itself whenever it is used
+ interactively. Unless explicitly specified when applying the
+ license to the Work, the only applicable Base Interpreter is a
+ `LaTeX-Format' or in the case of files belonging to the
+ `LaTeX-format' a program implementing the `TeX language'.
+
+
+
+CONDITIONS ON DISTRIBUTION AND MODIFICATION
+===========================================
+
+1. Activities other than distribution and/or modification of the Work
+are not covered by this license; they are outside its scope. In
+particular, the act of running the Work is not restricted and no
+requirements are made concerning any offers of support for the Work.
+
+2. You may distribute a complete, unmodified copy of the Work as you
+received it. Distribution of only part of the Work is considered
+modification of the Work, and no right to distribute such a Derived
+Work may be assumed under the terms of this clause.
+
+3. You may distribute a Compiled Work that has been generated from a
+complete, unmodified copy of the Work as distributed under Clause 2
+above, as long as that Compiled Work is distributed in such a way that
+the recipients may install the Compiled Work on their system exactly
+as it would have been installed if they generated a Compiled Work
+directly from the Work.
+
+4. If you are the Current Maintainer of the Work, you may, without
+restriction, modify the Work, thus creating a Derived Work. You may
+also distribute the Derived Work without restriction, including
+Compiled Works generated from the Derived Work. Derived Works
+distributed in this manner by the Current Maintainer are considered to
+be updated versions of the Work.
+
+5. If you are not the Current Maintainer of the Work, you may modify
+your copy of the Work, thus creating a Derived Work based on the Work,
+and compile this Derived Work, thus creating a Compiled Work based on
+the Derived Work.
+
+6. If you are not the Current Maintainer of the Work, you may
+distribute a Derived Work provided the following conditions are met
+for every component of the Work unless that component clearly states
+in the copyright notice that it is exempt from that condition. Only
+the Current Maintainer is allowed to add such statements of exemption
+to a component of the Work.
+
+ a. If a component of this Derived Work can be a direct replacement
+ for a component of the Work when that component is used with the
+ Base Interpreter, then, wherever this component of the Work
+ identifies itself to the user when used interactively with that
+ Base Interpreter, the replacement component of this Derived Work
+ clearly and unambiguously identifies itself as a modified version
+ of this component to the user when used interactively with that
+ Base Interpreter.
+
+ b. Every component of the Derived Work contains prominent notices
+ detailing the nature of the changes to that component, or a
+ prominent reference to another file that is distributed as part
+ of the Derived Work and that contains a complete and accurate log
+ of the changes.
+
+ c. No information in the Derived Work implies that any persons,
+ including (but not limited to) the authors of the original version
+ of the Work, provide any support, including (but not limited to)
+ the reporting and handling of errors, to recipients of the
+ Derived Work unless those persons have stated explicitly that
+ they do provide such support for the Derived Work.
+
+ d. You distribute at least one of the following with the Derived Work:
+
+ 1. A complete, unmodified copy of the Work;
+ if your distribution of a modified component is made by
+ offering access to copy the modified component from a
+ designated place, then offering equivalent access to copy
+ the Work from the same or some similar place meets this
+ condition, even though third parties are not compelled to
+ copy the Work along with the modified component;
+
+ 2. Information that is sufficient to obtain a complete,
+ unmodified copy of the Work.
+
+7. If you are not the Current Maintainer of the Work, you may
+distribute a Compiled Work generated from a Derived Work, as long as
+the Derived Work is distributed to all recipients of the Compiled
+Work, and as long as the conditions of Clause 6, above, are met with
+regard to the Derived Work.
+
+8. The conditions above are not intended to prohibit, and hence do not
+apply to, the modification, by any method, of any component so that it
+becomes identical to an updated version of that component of the Work as
+it is distributed by the Current Maintainer under Clause 4, above.
+
+9. Distribution of the Work or any Derived Work in an alternative
+format, where the Work or that Derived Work (in whole or in part) is
+then produced by applying some process to that format, does not relax or
+nullify any sections of this license as they pertain to the results of
+applying that process.
+
+10. a. A Derived Work may be distributed under a different license
+ provided that license itself honors the conditions listed in
+ Clause 6 above, in regard to the Work, though it does not have
+ to honor the rest of the conditions in this license.
+
+ b. If a Derived Work is distributed under a different license, that
+ Derived Work must provide sufficient documentation as part of
+ itself to allow each recipient of that Derived Work to honor the
+ restrictions in Clause 6 above, concerning changes from the Work.
+
+11. This license places no restrictions on works that are unrelated to
+the Work, nor does this license place any restrictions on aggregating
+such works with the Work by any means.
+
+12. Nothing in this license is intended to, or may be used to, prevent
+complete compliance by all parties with all applicable laws.
+
+
+NO WARRANTY
+===========
+
+There is no warranty for the Work. Except when otherwise stated in
+writing, the Copyright Holder provides the Work `as is', without
+warranty of any kind, either expressed or implied, including, but not
+limited to, the implied warranties of merchantability and fitness for a
+particular purpose. The entire risk as to the quality and performance
+of the Work is with you. Should the Work prove defective, you assume
+the cost of all necessary servicing, repair, or correction.
+
+In no event unless required by applicable law or agreed to in writing
+will The Copyright Holder, or any author named in the components of the
+Work, or any other party who may distribute and/or modify the Work as
+permitted above, be liable to you for damages, including any general,
+special, incidental or consequential damages arising out of any use of
+the Work or out of inability to use the Work (including, but not limited
+to, loss of data, data being rendered inaccurate, or losses sustained by
+anyone as a result of any failure of the Work to operate with any other
+programs), even if the Copyright Holder or said author or said other
+party has been advised of the possibility of such damages.
+
+
+MAINTENANCE OF THE WORK
+=======================
+
+The Work has the status `author-maintained' if the Copyright Holder
+explicitly and prominently states near the primary copyright notice in
+the Work that the Work can only be maintained by the Copyright Holder
+or simply that it is `author-maintained'.
+
+The Work has the status `maintained' if there is a Current Maintainer
+who has indicated in the Work that they are willing to receive error
+reports for the Work (for example, by supplying a valid e-mail
+address). It is not required for the Current Maintainer to acknowledge
+or act upon these error reports.
+
+The Work changes from status `maintained' to `unmaintained' if there
+is no Current Maintainer, or the person stated to be Current
+Maintainer of the work cannot be reached through the indicated means
+of communication for a period of six months, and there are no other
+significant signs of active maintenance.
+
+You can become the Current Maintainer of the Work by agreement with
+any existing Current Maintainer to take over this role.
+
+If the Work is unmaintained, you can become the Current Maintainer of
+the Work through the following steps:
+
+ 1. Make a reasonable attempt to trace the Current Maintainer (and
+ the Copyright Holder, if the two differ) through the means of
+ an Internet or similar search.
+
+ 2. If this search is successful, then enquire whether the Work
+ is still maintained.
+
+ a. If it is being maintained, then ask the Current Maintainer
+ to update their communication data within one month.
+
+ b. If the search is unsuccessful or no action to resume active
+ maintenance is taken by the Current Maintainer, then announce
+ within the pertinent community your intention to take over
+ maintenance. (If the Work is a LaTeX work, this could be
+ done, for example, by posting to comp.text.tex.)
+
+ 3a. If the Current Maintainer is reachable and agrees to pass
+ maintenance of the Work to you, then this takes effect
+ immediately upon announcement.
+
+ b. If the Current Maintainer is not reachable and the Copyright
+ Holder agrees that maintenance of the Work be passed to you,
+ then this takes effect immediately upon announcement.
+
+ 4. If you make an `intention announcement' as described in 2b. above
+ and after three months your intention is challenged neither by
+ the Current Maintainer nor by the Copyright Holder nor by other
+ people, then you may arrange for the Work to be changed so as
+ to name you as the (new) Current Maintainer.
+
+ 5. If the previously unreachable Current Maintainer becomes
+ reachable once more within three months of a change completed
+ under the terms of 3b) or 4), then that Current Maintainer must
+ become or remain the Current Maintainer upon request provided
+ they then update their communication data within one month.
+
+A change in the Current Maintainer does not, of itself, alter the fact
+that the Work is distributed under the LPPL license.
+
+If you become the Current Maintainer of the Work, you should
+immediately provide, within the Work, a prominent and unambiguous
+statement of your status as Current Maintainer. You should also
+announce your new status to the same pertinent community as
+in 2b) above.
+
+
+WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE
+======================================================
+
+This section contains important instructions, examples, and
+recommendations for authors who are considering distributing their
+works under this license. These authors are addressed as `you' in
+this section.
+
+Choosing This License or Another License
+----------------------------------------
+
+If for any part of your work you want or need to use *distribution*
+conditions that differ significantly from those in this license, then
+do not refer to this license anywhere in your work but, instead,
+distribute your work under a different license. You may use the text
+of this license as a model for your own license, but your license
+should not refer to the LPPL or otherwise give the impression that
+your work is distributed under the LPPL.
+
+The document `modguide.tex' in the base LaTeX distribution explains
+the motivation behind the conditions of this license. It explains,
+for example, why distributing LaTeX under the GNU General Public
+License (GPL) was considered inappropriate. Even if your work is
+unrelated to LaTeX, the discussion in `modguide.tex' may still be
+relevant, and authors intending to distribute their works under any
+license are encouraged to read it.
+
+A Recommendation on Modification Without Distribution
+-----------------------------------------------------
+
+It is wise never to modify a component of the Work, even for your own
+personal use, without also meeting the above conditions for
+distributing the modified component. While you might intend that such
+modifications will never be distributed, often this will happen by
+accident -- you may forget that you have modified that component; or
+it may not occur to you when allowing others to access the modified
+version that you are thus distributing it and violating the conditions
+of this license in ways that could have legal implications and, worse,
+cause problems for the community. It is therefore usually in your
+best interest to keep your copy of the Work identical with the public
+one. Many works provide ways to control the behavior of that work
+without altering any of its licensed components.
+
+How to Use This License
+-----------------------
+
+To use this license, place in each of the components of your work both
+an explicit copyright notice including your name and the year the work
+was authored and/or last substantially modified. Include also a
+statement that the distribution and/or modification of that
+component is constrained by the conditions in this license.
+
+Here is an example of such a notice and statement:
+
+ %% pig.dtx
+ %% Copyright 2005 M. Y. Name
+ %
+ % This work may be distributed and/or modified under the
+ % conditions of the LaTeX Project Public License, either version 1.3c
+ % of this license or (at your option) any later version.
+ % The latest version of this license is in
+ % https://www.latex-project.org/lppl.txt
+ % and version 1.3c or later is part of all distributions of LaTeX
+ % version 2005/12/01 or later.
+ %
+ % This work has the LPPL maintenance status `maintained'.
+ %
+ % The Current Maintainer of this work is M. Y. Name.
+ %
+ % This work consists of the files pig.dtx and pig.ins
+ % and the derived file pig.sty.
+
+Given such a notice and statement in a file, the conditions
+given in this license document would apply, with the `Work' referring
+to the three files `pig.dtx', `pig.ins', and `pig.sty' (the last being
+generated from `pig.dtx' using `pig.ins'), the `Base Interpreter'
+referring to any `LaTeX-Format', and both `Copyright Holder' and
+`Current Maintainer' referring to the person `M. Y. Name'.
+
+If you do not want the Maintenance section of LPPL to apply to your
+Work, change `maintained' above into `author-maintained'.
+However, we recommend that you use `maintained', as the Maintenance
+section was added in order to ensure that your Work remains useful to
+the community even when you can no longer maintain and support it
+yourself.
+
+Derived Works That Are Not Replacements
+---------------------------------------
+
+Several clauses of the LPPL specify means to provide reliability and
+stability for the user community. They therefore concern themselves
+with the case that a Derived Work is intended to be used as a
+(compatible or incompatible) replacement of the original Work. If
+this is not the case (e.g., if a few lines of code are reused for a
+completely different task), then clauses 6b and 6d shall not apply.
+
+
+Important Recommendations
+-------------------------
+
+ Defining What Constitutes the Work
+
+ The LPPL requires that distributions of the Work contain all the
+ files of the Work. It is therefore important that you provide a
+ way for the licensee to determine which files constitute the Work.
+ This could, for example, be achieved by explicitly listing all the
+ files of the Work near the copyright notice of each file or by
+ using a line such as:
+
+ % This work consists of all files listed in manifest.txt.
+
+ in that place. In the absence of an unequivocal list it might be
+ impossible for the licensee to determine what is considered by you
+ to comprise the Work and, in such a case, the licensee would be
+ entitled to make reasonable conjectures as to which files comprise
+ the Work.
diff --git a/macros/latex/contrib/typog/Makefile b/macros/latex/contrib/typog/Makefile
index bb3c83ab24..1b7e0b21a3 100644
--- a/macros/latex/contrib/typog/Makefile
+++ b/macros/latex/contrib/typog/Makefile
@@ -7,8 +7,9 @@
SHELL := /bin/sh
-LATEX := /usr/bin/env max_print_line=2147483647 pdflatex
-LATEX_FLAGS := -file-line-error -halt-on-error -interaction=nonstopmode
+LATEX_PROPER := pdflatex
+LATEX := /usr/bin/env max_print_line=2147483647 $(LATEX_PROPER)
+LATEX_FLAGS := -file-line-error -halt-on-error -interaction=nonstopmode -output-directory=.
LATEX_RERUN_TRIGGER := '^Package rerunfilecheck Warning: File [^ ]* has changed'
LATEX_WARNING := '^LaTeX (|[A-Za-z0-9_]* )Warning:'
@@ -16,6 +17,10 @@ MAKEINDEX := makeindex
MAKEINDEX_FLAGS := -q
+MAKEINFO := makeinfo
+MAKEINFO_FLAGS := --no-split
+
+
METAPOST := mpost
METAPOST_FLAGS := -file-line-error -interaction=nonstopmode -tex=latex
@@ -24,8 +29,12 @@ PODCHECKER := podchecker
PODCHECKER_FLAGS := -warnings
+define SED_VERSION_REGEXP
+^\( *\|\\ProvidesPackage{[^}]*} *\)\[\([0-9][0-9]*/[0-9][0-9]*/[0-9][0-9]*\) *v\([^ ]*\) *\([^]]*\)].*$$
+endef
+
POD2MAN := pod2man
-POD2MAN_FLAGS := $$(sed -ne 's,\\ProvidesPackage{typog}\[\([0-9][0-9]*/[0-9][0-9]*/[0-9][0-9]*\) *v\([^ ]*\) .*$$,--date=\1 --release=\2,p' < typog.sty)
+POD2MAN_FLAGS := $$(sed -ne 's,$(SED_VERSION_REGEXP),--date=\2 --release=\3,p' < typog.sty)
POD2TEXI := pod2texi
@@ -33,31 +42,32 @@ POD2TEXI_FLAGS :=
GROFF := groff
-## Codes of serif fonts that work for PDF output
+## Codes of fonts that work for PDF output as by the contents
+## of "/usr/share/groff/current/font/devpdf".
+##
+## Serif
## BM: URW Bookman L
## N: URW Century Schoolbook L
## P: URW Palladio L
## T: URW Nimbus Roman No9 L
+##
+## Sans Serif
+## A: Avantgarde
+## H: Helvetica
+##
+## Monospace
+## C: Courier
GROFF_FLAGS := -Tpdf -dpaper=a4 -fP -man -wall
-SPELLCHECK := aspell
-SPELLCHECK_FLAGS := \
- --add-tex-command='citenum p' --add-tex-command='code p' \
- --add-tex-command='Cref p' --add-tex-command='cref p' \
- --add-tex-command='cs p' \
- --add-tex-command='DescribeEnv p' --add-tex-command='DescribeMacro p' \
- --add-tex-command='marg p' --add-tex-command='meta p' \
- --add-tex-command='oarg p' \
- --lang=en_US --mode=tex
-
-
-SOURCE_FILES := LICENSE Makefile typog.dtx typog.ins
+PROJECT_NAME := typog
+SOURCE_FILES := LICENSE Makefile README.md typog.dtx typog.ins
+DOCUMENTATION_FILES := typog-example.pdf typog-grep.1.pdf typog.pdf
.PHONY: all
-all: sty pdf man
+all: sty pdf bin man
.PHONY: sty
@@ -65,7 +75,7 @@ sty: typog.sty
.PHONY: pdf
-pdf: doc ex nomt
+pdf: doc ex test
.PHONY: doc
@@ -76,69 +86,88 @@ doc: typog.pdf
ex: typog-example.pdf
-.PHONY: nomt
-nomt: typog-nomt.pdf
+.PHONY: test
+test: typog-minimal-test.pdf typog-without-microtype-test.pdf
+
+
+.PHONY: bin
+bin: typog-grep
.PHONY: man
man: typog-grep.1
-.PHONY: cpio
-cpio:
- cd ..; \
- echo $(addprefix typog/,$(SOURCE_FILES)) | \
- cpio -o | \
- gzip > "typog-$$(date +%Y-%m-%d).cpio.gz"
+export TEMPORARY_DIRECTORY
+
+
+.PHONY: dist
+dist:
+ $(eval TEMPORARY_DIRECTORY := $(shell mktemp -d))
+ trap '$(RM) -r $(TEMPORARY_DIRECTORY); exit 1' HUP INT QUIT TERM; $(MAKE) __dist
+ $(RM) -r $(TEMPORARY_DIRECTORY)
+
+
+.PHONY: __dist
+__dist: LATEX_FLAGS += -interaction=batchmode
+__dist: $(DOCUMENTATION_FILES)
+ test -d '$(TEMPORARY_DIRECTORY)'
+ test -w '$(TEMPORARY_DIRECTORY)'
+ mkdir $(TEMPORARY_DIRECTORY)/$(PROJECT_NAME)
+ cp $(SOURCE_FILES) $(TEMPORARY_DIRECTORY)/$(PROJECT_NAME)
+ mkdir $(TEMPORARY_DIRECTORY)/$(PROJECT_NAME)/docs
+ cp $(DOCUMENTATION_FILES) $(TEMPORARY_DIRECTORY)/$(PROJECT_NAME)/docs
+ tar czf $(PROJECT_NAME).tar.gz -C $(TEMPORARY_DIRECTORY) $(PROJECT_NAME)
-.PHONY: tar
-tar:
- cd ..; \
- tar czf "typog-$$(date +%Y-%m-%d).tar.gz" $(addprefix typog/,$(SOURCE_FILES))
+.PHONY: distcheck
+distcheck: LATEX_FLAGS += -interaction=batchmode
+distcheck: dist
+ $(eval TEMPORARY_DIRECTORY := $(shell mktemp -d))
+ test -d '$(TEMPORARY_DIRECTORY)'
+ test -w '$(TEMPORARY_DIRECTORY)'
+ tar xzf $(PROJECT_NAME).tar.gz -C $(TEMPORARY_DIRECTORY)
+ $(MAKE) --directory=$(TEMPORARY_DIRECTORY)/$(PROJECT_NAME) LATEX_FLAGS='$(LATEX_FLAGS)' all
+ $(RM) -r $(TEMPORARY_DIRECTORY)
+ @printf '\n\ndistcheck passed.\n'
.PHONY: clean
clean:
- $(RM) ./*.1 ./*.aux ./*.brf ./*.glg ./*.glo ./*.gls
- $(RM) ./*.hd ./*.idx ./*.ilg ./*.ind ./*.loe ./*.lof ./*.log ./*.lot
- $(RM) ./*.mps ./*.mpx ./*.out ./*.pdf ./*.toc
+ $(RM) ./*.1 ./*.aux ./*.brf ./*.dvi ./*.glg ./*.glo ./*.gls
+ $(RM) ./*.hd ./*.idx ./*.ilg ./*.ind ./*.info ./*.loe ./*.lof ./*.log ./*.lot
+ $(RM) ./*.mps ./*.mpx ./*.out ./*.pdf ./*.pl.in ./*.toc
$(RM) mptextmp.* mpxerr.tex
$(RM) README README.html RELEASE-HOWTO RELEASE-HOWTO.html
+ $(RM) typog-grep typog-grep.version.sed
+ $(RM) $(PROJECT_NAME).tar.gz
.PHONY: mostlyclean
mostlyclean: clean
+ $(RM) ./*.texi
.PHONY: maintainer-clean
maintainer-clean: mostlyclean
- $(RM) ./*.ist ./*.mp ./*.pl ./*.pod ./*.sed ./*.sty ./*.tex
+ $(RM) ./*.gst ./*.ist ./*.mp ./*.pl ./*.pod ./*.sed ./*.sty ./*.tex
.PHONY: tool-check
tool-check:
- @printf '*** LATEX = "%s"\n' '$(LATEX)'
- $(LATEX) --version
+ @printf '*** LATEX_PROPER = "%s"\n' '$(LATEX_PROPER)'
+ $(LATEX_PROPER) --version
+ @printf '\n\n*** BibTeX\n'
+ bibtex --version
@printf '\n\n*** MAKEINDEX = "%s"\n' '$(MAKEINDEX)'
- $(MAKEINDEX) < /dev/null
+ $(MAKEINDEX) < /dev/null
@printf '\n\n*** METAPOST = "%s"\n' '$(METAPOST)'
$(METAPOST) --version
@printf '\n*** POD2MAN = "%s"\n' '$(POD2MAN)'
$(POD2MAN) --help > /dev/null
@printf '\n\n*** POD2TEXI = "%s"\n' '$(POD2TEXI)'
$(POD2TEXI) --version
- @printf '\n\nTool check passed.\n'
-
-
-.PHONY: spell-check
-spell-check:
- @sed -e '\#<DISABLE-SPELL-CHECK/>#d' \
- -e '\#<DISABLE-SPELL-CHECK>#,\#</DISABLE-SPELL-CHECK>#d' < typog.dtx | \
- sed -e 's/^ *%%*//' | \
- sed -e 's/\\-//g' -e 's/|[^|]*|/ /g' | \
- $(SPELLCHECK) $(SPELLCHECK_FLAGS) list | \
- sort | uniq | fmt | sed -e 's/ / /g'
+ @printf '\n\ntool check passed.\n'
.PHONY: update-docs
@@ -151,10 +180,16 @@ Selected Phony Targets
----------------------
all: Make everything there is to make. This is the .DEFAULT_GOAL.
+bin: Build typog-grep (which is not a binary, but executable).
+
clean: Remove some products.
-cpio: In the parent directory create a cpio(1) archive of the
- project source files whose name is time-stamped.
+dist: Create a tar file of the project source files and the PDF
+ documentation files. The archive is in the form and has a
+ name that CTAN prefers.
+
+distcheck: Create a tar file of the project source files, unpack it in
+ a different location and build all targets.
doc: Build "typog.pdf" the Typog documentation.
@@ -170,12 +205,14 @@ pdf: Build doc: and gauge:.
sty: Only extract "typog.sty" from "typog.dtx". This
operation requires LaTeX (-> $(LATEX)) and nothing else.
-tar: In the parent directory create a tar(1) file of the project
- source files whose name is time-stamped.
+test: Run some tests.
tool-check: Check whether some of the required tools to build the
project are available.
+update-docs: Copy the documentation files into the "docs"
+ sub-directory.
+
Selected Implicit Rules
-----------------------
@@ -206,6 +243,7 @@ README: Convert "README.html" to plain text. Requires w3m(1).
endef
+
.PHONY: help
help:
$(info $(HELP_SCREEN))
@@ -217,10 +255,10 @@ help:
define MAKE_INDEX_AND_GLOSSARY
-sed -e '/@/d' -e 's/{\\ttfamily /{\\ttfamily\\hskip0pt\\relax /' < $*.idx > ,$*.idx; \
+sed -e '/@/d' -e 's/{\\ttfamily /{\\ttfamily\\hskip0pt\\relax /' < $*.idx > ,$*.idx; \
mv ,$*.idx $*.idx; \
-$(MAKEINDEX) $(MAKEINDEX_FLAGS) -s typog.ist -t $*.ilg -o $*.ind $*.idx; \
-$(MAKEINDEX) $(MAKEINDEX_FLAGS) -s gglo.ist -t $*.glg -o $*.gls $*.glo
+$(MAKEINDEX) $(MAKEINDEX_FLAGS) -s $*.ist -t $*.ilg -o $*.ind $*.idx; \
+$(MAKEINDEX) $(MAKEINDEX_FLAGS) -s $*.gst -t $*.glg -o $*.gls $*.glo
endef
define GREP_LATEX_WARNINGS
@@ -253,7 +291,13 @@ endef
%-1.mps %-2.mps %-3.mps %-4.mps: %.mp
- $(METAPOST) -s 'outputtemplate="%j-%c.mps"' $(METAPOST_FLAGS) $<
+ $(METAPOST) -s 'outputtemplate="%j-%c.mps"' $(METAPOST_FLAGS) $< || { \
+ printf '=== $*.log ===\n'; \
+ cat $*.log; \
+ printf '\n\n=== mpxerr.log ===\n'; \
+ cat mpxerr.log; \
+ false; \
+ } 1>&2
%.1: %.pod
@@ -263,6 +307,15 @@ endef
%.1.pdf: %.1
$(GROFF) $(GROFF_FLAGS) ./$< > $@
+%.texi: %.pod
+ $(POD2TEXI) $(POD2TEXI_FLAGS) --output=$@ ./$<
+
+%.info: %.texi
+ $(MAKEINFO) $(MAKEINFO_FLAGS) --output=$@ $<
+
+%.info.pdf: %.texi
+ $(MAKEINFO) $(MAKEINFO_FLAGS) --pdf --output=$@ $<
+
%.tex: %.pod | teximan2latex.sed
$(POD2TEXI) $(POD2TEXI_FLAGS) ./$< | sed -f teximan2latex.sed > $@
@@ -276,12 +329,11 @@ endef
crooked-paragraphs.mp slant-angle.mp smooth-parshapes.mp title.mp \
teximan2latex.sed \
-typog-grep.pl typog-grep typog-grep.pod \
-typog.sty typog.ist typog-example.tex typog-nomt.tex: \
+typog-grep.pl.in typog-grep.pod \
+typog.sty typog.ist typog-example.tex \
+typog-minimal-test.tex typog-without-microtype-test.tex: \
typog.ins typog.dtx
$(LATEX) $(LATEX_FLAGS) $<
- chmod 755 typog-grep.pl
- ln -sf typog-grep.pl typog-grep
crooked-paragraphs-1.mps crooked-paragraphs-2.mps \
@@ -300,3 +352,14 @@ typog.pdf: typog.dtx \
smooth-parshapes-1.mps smooth-parshapes-2.mps smooth-parshapes-3.mps \
typog-grep.tex \
| typog.sty
+
+
+typog-grep.pl: typog-grep.pl.in typog.sty
+ sed -ne 's,$(SED_VERSION_REGEXP),s#@DATE@#\2#g\ns#@RELEASE@#\3#g\ns#@TITLE@#\4#g,p' \
+ < typog.sty \
+ > typog-grep.version.sed
+ sed -f typog-grep.version.sed < $< > $@
+ chmod 755 $@
+
+typog-grep: typog-grep.pl
+ ln -sf $< $@
diff --git a/macros/latex/contrib/typog/README.md b/macros/latex/contrib/typog/README.md
index fb55ccb1e1..c67519bffc 100644
--- a/macros/latex/contrib/typog/README.md
+++ b/macros/latex/contrib/typog/README.md
@@ -1,3 +1,6 @@
+![distcheck status](https://github.com/cspiel/typog/actions/workflows/distcheck.yml/badge.svg)
+
+
# TypoG &ndash; Typographic Fine-Tuning for LaTeX
LaTeX package `typog` provides macros for (micro-)typographic enhancements;
@@ -8,6 +11,7 @@ it covers a variety of topics:
* Manual italic correction
* Extra kerning for slash and hyphen
* Raising selected characters (e.g. hyphen, en-dash, and em-dash)
+* Adjusting the vertical position of `itemize`'s labels
* Aligning of the last line of a paragraph
* Filling of the last line last line of a paragraph
* Word spacing control
diff --git a/macros/latex/contrib/typog/RELEASE-HOWTO.md b/macros/latex/contrib/typog/RELEASE-HOWTO.md
deleted file mode 100644
index 13435ef66d..0000000000
--- a/macros/latex/contrib/typog/RELEASE-HOWTO.md
+++ /dev/null
@@ -1,51 +0,0 @@
-# How to prepare a new release
-
-... and not make too many mistakes.
-
-
-1. Check that the work-area is clean with respect to **git**-tracked
- files.
-
- ``` git status ```
-
-1. Update the date stamp of `\ProvidesPackage`.
-
-1. (Temporarily) Zero the `\overfullrule`s of the documentation and
- the example files.
-
-1. Thoroughly clean the work-area:
-
- ```make maintainer-clean```
-
-1. Rebuild:
-
- ```make```
-
-1. Check that all _*.sty_ and _*.pdf_ files are in good shape.
-
-1. Push the documentation files created in the previous step down into
- the *docs* directory:
-
- ```make update-docs```
-
-1. Undo the `\overfullrule` change.
-
-1. Commit the changes:
-
- ```
- git add .
- ```
-
- and finally
-
- ```
- git commit
- ```
-
-1. Tag the commit with the version string of `\ProvidesPackage`:
-
- ```git tag v1.23```
-
-1. Push the changes to the public repository:
-
- ```git push origin master --tags```
diff --git a/macros/latex/contrib/typog/docs/index.md b/macros/latex/contrib/typog/docs/index.md
deleted file mode 100644
index f4dc2e8bd9..0000000000
--- a/macros/latex/contrib/typog/docs/index.md
+++ /dev/null
@@ -1,5 +0,0 @@
-### Package Documentation
-
-- Comprehensive `typog` documentation: [typog.pdf](https://cspiel.github.io/typog/typog.pdf)
-- `typog` examples and tests: [typog-example.pdf](https://cspiel.github.io/typog/typog-example.pdf)
-- **typog-grep** manual page: [typog-grep.1](https://cspiel.github.io/typog/typog-grep.1) and as PDF: [typog-grep.1.pdf](https://cspiel.github.io/typog/typog-grep.1.pdf)
diff --git a/macros/latex/contrib/typog/docs/typog-example.pdf b/macros/latex/contrib/typog/docs/typog-example.pdf
index 621ac319d2..48a8a506e1 100644
--- a/macros/latex/contrib/typog/docs/typog-example.pdf
+++ b/macros/latex/contrib/typog/docs/typog-example.pdf
Binary files differ
diff --git a/macros/latex/contrib/typog/docs/typog-grep.1 b/macros/latex/contrib/typog/docs/typog-grep.1
deleted file mode 100644
index 372c87bc5f..0000000000
--- a/macros/latex/contrib/typog/docs/typog-grep.1
+++ /dev/null
@@ -1,428 +0,0 @@
-.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.43)
-.\"
-.\" Standard preamble:
-.\" ========================================================================
-.de Sp \" Vertical space (when we can't use .PP)
-.if t .sp .5v
-.if n .sp
-..
-.de Vb \" Begin verbatim text
-.ft CW
-.nf
-.ne \\$1
-..
-.de Ve \" End verbatim text
-.ft R
-.fi
-..
-.\" Set up some character translations and predefined strings. \*(-- will
-.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
-.\" double quote, and \*(R" will give a right double quote. \*(C+ will
-.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
-.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
-.\" nothing in troff, for use with C<>.
-.tr \(*W-
-.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
-.ie n \{\
-. ds -- \(*W-
-. ds PI pi
-. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
-. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
-. ds L" ""
-. ds R" ""
-. ds C` ""
-. ds C' ""
-'br\}
-.el\{\
-. ds -- \|\(em\|
-. 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 >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.
-.\"
-.\" Avoid warning from groff about undefined register 'F'.
-.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.
-. \" fudge factors for nroff and troff
-.if n \{\
-. ds #H 0
-. ds #V .8m
-. ds #F .3m
-. ds #[ \f1
-. ds #] \fP
-.\}
-.if t \{\
-. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
-. ds #V .6m
-. ds #F 0
-. ds #[ \&
-. ds #] \&
-.\}
-. \" simple accents for nroff and troff
-.if n \{\
-. ds ' \&
-. ds ` \&
-. ds ^ \&
-. ds , \&
-. ds ~ ~
-. ds /
-.\}
-.if t \{\
-. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
-. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
-. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
-. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
-. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
-. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
-.\}
-. \" troff and (daisy-wheel) nroff accents
-.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
-.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
-.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
-.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
-.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
-.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
-.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
-.ds ae a\h'-(\w'a'u*4/10)'e
-.ds Ae A\h'-(\w'A'u*4/10)'E
-. \" corrections for vroff
-.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
-.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
-. \" for low resolution devices (crt and lpr)
-.if \n(.H>23 .if \n(.V>19 \
-\{\
-. ds : e
-. ds 8 ss
-. ds o a
-. ds d- d\h'-1'\(ga
-. ds D- D\h'-1'\(hy
-. ds th \o'bp'
-. ds Th \o'LP'
-. ds ae ae
-. ds Ae AE
-.\}
-.rm #[ #] #H #V #F C
-.\" ========================================================================
-.\"
-.IX Title "TYPOG-GREP 1"
-.TH TYPOG-GREP 1 "2024-05-07" "perl v5.36.0" "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
-.nh
-.\" Turn off justification.
-.na
-.SH "NAME"
-typog\-grep \- grep for typog\-inspect elements in LaTeX log files
-.SH "SYNOPSIS"
-.IX Header "SYNOPSIS"
-.IP "\fBtypog-grep\fR \-a|\-\-all|\-\-any [\fI\s-1OPTION\s0\fR...] \fILOG-FILE\fR..." 4
-.IX Item "typog-grep -a|--all|--any [OPTION...] LOG-FILE..."
-.PD 0
-.IP "\fBtypog-grep\fR [\fI\s-1OPTION\s0\fR...] \fI\s-1REGEXP\s0\fR \fILOG-FILE\fR..." 4
-.IX Item "typog-grep [OPTION...] REGEXP LOG-FILE..."
-.PD
-.PP
-The first form shows all \f(CW\*(C`<typog\-inspect id="\f(CIID\f(CW" ...>\*(C'\fR elements in \fILOG-FILE\fR.
-.PP
-The second form shows the contents of \f(CW\*(C`<typog\-inspect id="\f(CIID\f(CW" ...>\*(C'\fR elements
-whose \fI\s-1ID\s0\fRs match \fI\s-1REGEXP\s0\fR in \fILOG-FILE\fR.
-.PP
-If no \fILOG-FILE\fR is given read from \fIstdin\fR.
-The filename\ \f(CW\*(C`\-\*(C'\fR is synonymous to \fIstdin\fR.
-.SH "DESCRIPTION"
-.IX Header "DESCRIPTION"
-\&\fBtypog-grep\fR is a tailored post-processor for LaTeX log files
-and the \f(CW\*(C`typoginspect\*(C'\fR environment as provided by package\ typog.
-It shares more with the venerable
-\&\fBsgrep\fR <https://www.cs.helsinki.fi/u/jjaakkol/sgrep.html>
-than with \s-1POSIX\s0\ \fBgrep\fR <https://pubs.opengroup.org/onlinepubs/9699919799/utilities/grep.html>.
-.PP
-The LaTeX user brackets her text in
-.PP
-.Vb 3
-\& \ebegin{typoginspect}{ID}
-\& Text and code to investigate
-\& \eend{typoginspect}
-.Ve
-.PP
-where \fI\s-1ID\s0\fR is used to identify one or more bracketed snippets.
-\&\fI\s-1ID\s0\fR does not have to be unique.
-The \fI\s-1REGEXP\s0\fR mechanism makes it easy to select groups of related \fI\s-1ID\s0\fRs
-if they are named accordingly.
-.PP
-In \fILOG-FILE\fR the environment shows up, packed with tracing information, as
-.PP
-.Vb 3
-\& <typog\-inspect id="ID" job="JOB\-NAME" line="LINE\-NUMBER" page="PAGE\-NUMBER">
-\& Trace Data
-\& </typog\-inspect>
-.Ve
-.PP
-where all the capital-letter sequences are meta-variables
-and in particular
-\&\fIJOB-NAME\fR is the expansion of \f(CW\*(C`\ejobname\*(C'\fR,
-\&\fILINE-NUMBER\fR is the LaTeX source file line number
-of the beginning of the \f(CW\*(C`typoginspect\*(C'\fR environment,
-and \fIPAGE-NUMBER\fR is the page where
-the output of \f(CW\*(C`Text\ and\ code\ to\ investigate\*(C'\fR occurs.
-.PP
-\&\fBtypog-grep\fR reveals the contents of \fILOG-FILE\fR
-between \f(CW\*(C`<typog\-inspect id="\f(CIID\f(CW" ...>\*(C'\fR
-and \f(CW\*(C`</typog\-inspect>\*(C'\fR excluding the XML-tags.
-Access the \fIJOB-NAME\fR, \fILINE-NUMBER\fR, and \fIPAGE-NUMBER\fR
-with the commandline options
-\&\fB\-\-job\-name\fR, \fB\-\-line\-number\fR, and \fB\-\-page\-number\fR, respectively.
-Use \fB\-\-id\fR to show the name of the IDs that matched \fI\s-1REGEXP\s0\fR.
-.PP
-\&\f(CW\*(C`typoginspect\*(C'\fR environments can be nested.
-\&\fBtypog-grep\fR respects the nesting,
-i.e., if the \fI\s-1ID\s0\fR of the nested environment does not match \fI\s-1REGEXP\s0\fR
-it will not be included in the program's output.
-.SH "OPTIONS"
-.IX Header "OPTIONS"
-The list of options is sorted by the names of the long options.
-.IP "\fB\-a\fR, \fB\-\-all\fR, \fB\-\-any\fR" 4
-.IX Item "-a, --all, --any"
-ID-discovery mode:
-Show all \f(CW\*(C`typog\-inspect\*(C'\fR elements independent of any matching patterns.
-.IP "\fB\-\-color\fR, \fBcolour\fR \fI\s-1WHEN\s0\fR" 4
-.IX Item "--color, colour WHEN"
-Colorize specific log contents for the matching ids.
-The argument\ \fI\s-1WHEN\s0\fR determines when to apply color:
-\&\f(CW\*(C`always\*(C'\fR, \f(CW\*(C`never\*(C'\fR, or\ \f(CW\*(C`auto\*(C'\fR.
-The setting \f(CW\*(C`auto\*(C'\fR checks whether standard output has been redirected.
-This is the default.
-.IP "\fB\-C\fR, \fB\-\-config\fR \fI\s-1KEY\s0\fR=\fI\s-1VALUE\s0\fR[:\fI\s-1KEY\s0\fR=\fI\s-1VALUE\s0\fR[:...]]" 4
-.IX Item "-C, --config KEY=VALUE[:KEY=VALUE[:...]]"
-Set one or more configuration \fI\s-1KEY\s0\fR to \fI\s-1VALUE\s0\fR pairs.
-See Sec.\ \s-1CONFIGURATION\s0 below for a description of all available configuration items.
-Use option \fB\-\-show\-config\fR to display the default configuration.
-.IP "\fB\-\-debug\fR" 4
-.IX Item "--debug"
-Turn on debug output on \fIstderr\fR.
-.IP "\fB\-h\fR, \fB\-\-help\fR" 4
-.IX Item "-h, --help"
-Display brief help then exit.
-.IP "\fB\-i\fR, \fB\-\-[no\-]id\fR" 4
-.IX Item "-i, --[no-]id"
-Print the actual id name that matched \fI\s-1REGEXP\s0\fR.
-Control the appearance of the matching id with configuration item\ \f(CW\*(C`id\-heading\*(C'\fR.
-.IP "\fB\-y\fR, \fB\-\-[no\-]ignore\-case\fR" 4
-.IX Item "-y, --[no-]ignore-case"
-Match ids while ignoring case distinctions in patterns and data.
-.IP "\fB\-j\fR, \fB\-\-[no\-]job\-name\fR" 4
-.IX Item "-j, --[no-]job-name"
-Print the \f(CW\*(C`\ejobname\*(C'\fR that \fBtex\fR associated with the input file.
-.IP "\fB\-n\fR, \fB\-\-[no\-]line\-number\fR" 4
-.IX Item "-n, --[no-]line-number"
-Print the line number where the \f(CW\*(C`typoginspect\*(C'\fR\ environment
-was encountered in the LaTeX source file.
-.IP "\fB\-N\fR, \fB\-\-[no\-]log\-line\-number\fR" 4
-.IX Item "-N, --[no-]log-line-number"
-Print the line number of the \fIlog\fR\-file where the current line was encountered.
-.IP "\fB\-p\fR, \fB\-\-[no\-]page\-number\fR" 4
-.IX Item "-p, --[no-]page-number"
-Print page number where the contents of the \f(CW\*(C`typoginspect\*(C'\fR\ environment
-starts in the typeset document.
-.IP "\fB\-P\fR, \fB\-\-[no\-]pager\fR" 4
-.IX Item "-P, --[no-]pager"
-Redirect output from \fIstdout\fR to the configured pager.
-.IP "\fB\-\-show\-config\fR" 4
-.IX Item "--show-config"
-Show the default configuration and exit.
-.IP "\fB\-V\fR, \fB\-\-version\fR" 4
-.IX Item "-V, --version"
-Show version information and exit.
-.IP "\fB\-w\fR, \fB\-\-[no\-]word\-regexp\fR" 4
-.IX Item "-w, --[no-]word-regexp"
-Match only whole words.
-.SH "CONFIGURATION"
-.IX Header "CONFIGURATION"
-.ie n .IP """id\-format""=\fI\s-1FORMAT\s0\fR" 4
-.el .IP "\f(CWid\-format\fR=\fI\s-1FORMAT\s0\fR" 4
-.IX Item "id-format=FORMAT"
-Control the \fI\s-1FORMAT\s0\fR for printing matching ids in inline-mode,
-where \fI\s-1FORMAT\s0\fR is passed to Perl's \f(CW\*(C`printf\*(C'\fR.
-Default:\ \f(CW%s:\fR.
-.ie n .IP """id\-heading""=0|1" 4
-.el .IP "\f(CWid\-heading\fR=\f(CW0\fR|\f(CW1\fR" 4
-.IX Item "id-heading=0|1"
-Choose between printing the matching ids with option\ \fB\-\-id\fR:
-Inline\ (\f(CW0\fR) or heading before the matching data (\f(CW1\fR).
-Default:\ \f(CW0\fR.
-.ie n .IP """id\-heading\-format""=\fI\s-1FORMAT\s0\fR" 4
-.el .IP "\f(CWid\-heading\-format\fR=\fI\s-1FORMAT\s0\fR" 4
-.IX Item "id-heading-format=FORMAT"
-Control the \fI\s-1FORMAT\s0\fR for printing matching ids in heading-mode,
-where \fI\s-1FORMAT\s0\fR is passed to Perl's \f(CW\*(C`printf\*(C'\fR.
-Default:\ \f(CW\*(C`\-\->\ %s\ <\-\-\*(C'\fR.
-.ie n .IP """id\-indent""=\fI\s-1INDENT\s0\fR" 4
-.el .IP "\f(CWid\-indent\fR=\fI\s-1INDENT\s0\fR" 4
-.IX Item "id-indent=INDENT"
-Indentation of nested typog-inspect tags.
-Only used in ``discovery'' mode (first form), i.e., if \fB\-\-all\fR is active.
-Default:\ 8.
-.ie n .IP """id\-max\-length""=\fIMAXIMUM-LENGTH\fR" 4
-.el .IP "\f(CWid\-max\-length\fR=\fIMAXIMUM-LENGTH\fR" 4
-.IX Item "id-max-length=MAXIMUM-LENGTH"
-Set the maximum length of a matching id for printing.
-It a matching id exceeds this length it will be truncated
-and the last three characters (short of \fIMAXIMUM-LENGTH\fR) will be replaced by dots.
-Default:\ 40.
-.ie n .IP """line\-number\-format""=\fI\s-1FORMAT\s0\fR" 4
-.el .IP "\f(CWline\-number\-format\fR=\fI\s-1FORMAT\s0\fR" 4
-.IX Item "line-number-format=FORMAT"
-Control the \fI\s-1FORMAT\s0\fR for printing TeX source line numbers,
-where \fI\s-1FORMAT\s0\fR is passed to Perl's \f(CW\*(C`printf\*(C'\fR.
-Default:\ \f(CW%5d\fR.
-.ie n .IP """log\-line\-number\-format""=\fI\s-1FORMAT\s0\fR" 4
-.el .IP "\f(CWlog\-line\-number\-format\fR=\fI\s-1FORMAT\s0\fR" 4
-.IX Item "log-line-number-format=FORMAT"
-Control the \fI\s-1FORMAT\s0\fR for printing log line numbers,
-where \fI\s-1FORMAT\s0\fR is passed to Perl's \f(CW\*(C`printf\*(C'\fR.
-Default:\ \f(CW%6d\fR.
-.ie n .IP """page\-number\-format""=\fI\s-1FORMAT\s0\fR" 4
-.el .IP "\f(CWpage\-number\-format\fR=\fI\s-1FORMAT\s0\fR" 4
-.IX Item "page-number-format=FORMAT"
-Control the \fI\s-1FORMAT\s0\fR for printing page numbers,
-where \fI\s-1FORMAT\s0\fR is passed to Perl's \f(CW\*(C`printf\*(C'\fR.
-Default:\ \f(CW\*(C`[%3d]\*(C'\fR.
-.ie n .IP """pager""=\fI\s-1PAGER\s0\fR" 4
-.el .IP "\f(CWpager\fR=\fI\s-1PAGER\s0\fR" 4
-.IX Item "pager=PAGER"
-Name of pager application to pipe output into
-if run with option\ \fB\-\-pager\fR.
-Default:\ \f(CW\*(C`less\*(C'\fR.
-.ie n .IP """pager\-flags""=\fI\s-1FLAGS\s0\fR" 4
-.el .IP "\f(CWpager\-flags\fR=\fI\s-1FLAGS\s0\fR" 4
-.IX Item "pager-flags=FLAGS"
-Pass \fI\s-1FLAGS\s0\fR to \fI\s-1PAGER\s0\fR.
-Default:\ \f(CW\*(C`\-\-quit\-if\-one\-screen\*(C'\fR.
-.IP "Color Configuration" 4
-.IX Item "Color Configuration"
-For the syntax of the color specifications consult
-the manual page of Term::ANSIColor(pm).
-.RS 4
-.ie n .IP """file\-header\-color""" 4
-.el .IP "\f(CWfile\-header\-color\fR" 4
-.IX Item "file-header-color"
-Color of the filename header.
-.ie n .IP """fill\-state\-color""" 4
-.el .IP "\f(CWfill\-state\-color\fR" 4
-.IX Item "fill-state-color"
-Color of the messages that report ``Underfull hbox'' or ``Overfull hbox''.
-.ie n .IP """first\-vbox\-color""" 4
-.el .IP "\f(CWfirst\-vbox\-color\fR" 4
-.IX Item "first-vbox-color"
-Color of the first vbox on a page.
-.ie n .IP """font\-spec\-color""" 4
-.el .IP "\f(CWfont\-spec\-color\fR" 4
-.IX Item "font-spec-color"
-Color of font specifications.
-.ie n .IP """horizontal\-break\-candidate\-color""" 4
-.el .IP "\f(CWhorizontal\-break\-candidate\-color\fR" 4
-.IX Item "horizontal-break-candidate-color"
-Color of lines with horizontal-breakpoint candidates\ \f(CW\*(C`@\*(C'\fR.
-.ie n .IP """horizontal\-breakpoint\-color""" 4
-.el .IP "\f(CWhorizontal\-breakpoint\-color\fR" 4
-.IX Item "horizontal-breakpoint-color"
-Color of lines with horizontal breakpoints\ \f(CW\*(C`@@\*(C'\fR.
-.ie n .IP """id\-color""" 4
-.el .IP "\f(CWid\-color\fR" 4
-.IX Item "id-color"
-Color of matching ids when printed inline.
-.ie n .IP """id\-heading\-color""" 4
-.el .IP "\f(CWid\-heading\-color\fR" 4
-.IX Item "id-heading-color"
-Color of matching ids when printed in heading form.
-.ie n .IP """line\-break\-pass\-color""" 4
-.el .IP "\f(CWline\-break\-pass\-color\fR" 4
-.IX Item "line-break-pass-color"
-Color of the lines showing which pass (e.g., \f(CW@firstpass\fR)
-of the line-breaking algorithm is active.
-.ie n .IP """line\-number\-color""" 4
-.el .IP "\f(CWline\-number\-color\fR" 4
-.IX Item "line-number-color"
-Color of TeX-source-file line numbers.
-.ie n .IP """log\-line\-number\-color""" 4
-.el .IP "\f(CWlog\-line\-number\-color\fR" 4
-.IX Item "log-line-number-color"
-Color of log-file line numbers.
-.ie n .IP """math\-color""" 4
-.el .IP "\f(CWmath\-color\fR" 4
-.IX Item "math-color"
-Color used for math expressions including their font specs.
-.ie n .IP """page\-number\-color""" 4
-.el .IP "\f(CWpage\-number\-color\fR" 4
-.IX Item "page-number-color"
-Color of page numbers of the final output.
-.ie n .IP """tightness\-color""" 4
-.el .IP "\f(CWtightness\-color\fR" 4
-.IX Item "tightness-color"
-Color of lines with Tight/Loose hbox reports.
-.ie n .IP """vertical\-breakpoint\-color""" 4
-.el .IP "\f(CWvertical\-breakpoint\-color\fR" 4
-.IX Item "vertical-breakpoint-color"
-Color of possible vertical breakpoints.
-.RE
-.RS 4
-.RE
-.SS "Brief summary of colors and attributes"
-.IX Subsection "Brief summary of colors and attributes"
-.IP "Foreground Color" 4
-.IX Item "Foreground Color"
-\&\f(CW\*(C`black\*(C'\fR, \f(CW\*(C`red\*(C'\fR, \f(CW\*(C`green\*(C'\fR, \f(CW\*(C`yellow\*(C'\fR,
-\&\f(CW\*(C`blue\*(C'\fR, \f(CW\*(C`magenta\*(C'\fR, \f(CW\*(C`cyan\*(C'\fR, \f(CW\*(C`white\*(C'\fR,
-.Sp
-Prefix with \f(CW\*(C`bright_\*(C'\fR for high-intensity or bold foreground.
-.IP "Foreground Grey" 4
-.IX Item "Foreground Grey"
-\&\f(CW\*(C`grey0\*(C'\fR, ..., \f(CW\*(C`grey23\*(C'\fR
-.IP "Background Color" 4
-.IX Item "Background Color"
-\&\f(CW\*(C`on_black\*(C'\fR, \f(CW\*(C`on_red\*(C'\fR, \f(CW\*(C`on_green\*(C'\fR, \f(CW\*(C`on_yellow\*(C'\fR,
-\&\f(CW\*(C`on_blue\*(C'\fR, \f(CW\*(C`on_magenta\*(C'\fR, \f(CW\*(C`on_cyan\*(C'\fR, \f(CW\*(C`on_white\*(C'\fR
-.Sp
-Replace \f(CW\*(C`on_\*(C'\fR with \f(CW\*(C`on_bright_\*(C'\fR for high-intensity or bold background.
-.IP "Background Grey" 4
-.IX Item "Background Grey"
-\&\f(CW\*(C`on_grey0\*(C'\fR, ..., \f(CW\*(C`on_grey23\*(C'\fR
-.IP "Text Attribute" 4
-.IX Item "Text Attribute"
-\&\f(CW\*(C`bold\*(C'\fR, \f(CW\*(C`dark\*(C'\fR, \f(CW\*(C`italic\*(C'\fR, \f(CW\*(C`underline\*(C'\fR, \f(CW\*(C`reverse\*(C'\fR
-.SH "EXIT STATUS"
-.IX Header "EXIT STATUS"
-The exit status is 0 if at least one \fI\s-1ID\s0\fR matched \fI\s-1REGEXP\s0\fR,
-1 if no \fI\s-1ID\s0\fR matched \fI\s-1REGEXP\s0\fR, and 2 if an error occurred.
-.SH "SEE ALSO"
-.IX Header "SEE ALSO"
-\&\fBgrep\fR(1), \fBprintf\fR(3), \fBTerm::ANSIColor\fR(pm)
diff --git a/macros/latex/contrib/typog/docs/typog-grep.1.pdf b/macros/latex/contrib/typog/docs/typog-grep.1.pdf
index 09647860d5..9a43008508 100644
--- a/macros/latex/contrib/typog/docs/typog-grep.1.pdf
+++ b/macros/latex/contrib/typog/docs/typog-grep.1.pdf
Binary files differ
diff --git a/macros/latex/contrib/typog/docs/typog.pdf b/macros/latex/contrib/typog/docs/typog.pdf
index 9d00685045..fa0fe74e4c 100644
--- a/macros/latex/contrib/typog/docs/typog.pdf
+++ b/macros/latex/contrib/typog/docs/typog.pdf
Binary files differ
diff --git a/macros/latex/contrib/typog/typog.dtx b/macros/latex/contrib/typog/typog.dtx
index 0f2176206a..3037f502fa 100644
--- a/macros/latex/contrib/typog/typog.dtx
+++ b/macros/latex/contrib/typog/typog.dtx
@@ -3,11 +3,11 @@
% Copyright (C) 2024 by Ch. L. Spiel
%
% This work may be distributed and/or modified under the conditions
-% of the LaTeX Project Public License, either version 1.3 of this
+% of the LaTeX Project Public License, either version 1.3c of this
% license or (at your option) any later version. The latest version
% of this license is in
-% http://www.latex-project.org/lppl.txt
-% and version 1.3 or later is part of all distributions of LaTeX
+% https://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions of LaTeX
% version 2003/12/01 or later.
%
% \fi
@@ -26,7 +26,6 @@
\PassOptionsToClass{a4paper}{article}
\PassOptionsToPackage{hyperfootnotes=false}{hyperref}
-\PassOptionsToPackage{charter, scale=1.06}{newtxmath}
\PassOptionsToPackage{dvipsnames}{xcolor}
\usepackage{amsmath}
@@ -42,40 +41,43 @@
\usepackage{fullwidth}
\usepackage{hypdoc}
\usepackage{hyphenat}
-\usepackage[shrink=10, stretch=10]{microtype}
+\usepackage[kerning=true, shrink=10, stretch=10, verbose=true]{microtype}
\usepackage{multirow}
\usepackage{needspace}
-\usepackage{placeins}
+\usepackage[section]{placeins}
\usepackage{ragged2e}
\usepackage{setspace}
\usepackage{sidecap}
\usepackage{tabularx}
\usepackage{tcolorbox}
\usepackage{titlesec}\renewcommand*{\bottomtitlespace}{.15\textheight}%nobottomtitles*
-\usepackage[debug, raise*=.05em]{typog}
+\usepackage[debug, raise*=.05em,
+ uppercaselabelitemadjustments={.0125em, .075em, -.1em, .0125em},
+ lowercaselabelitemadjustments={-.075em, 0pt, -.2em, -.075em}]{typog}
\usepackage{xcolor}
\usepackage[default, lining, proportional, regular, semibold]{sourceserifpro}
\usepackage[lining, proportional, regular, semibold]{sourcesanspro}
\usepackage[lining, regular]{sourcecodepro}
-\usepackage[xcharter]{newtxmath}
+\usepackage[scaled=1.08, uprightscript, xcharter]{newtxmath}
\setbaselineskip{12.5pt}
+
\makeatletter
\def\@get@fontclan#1-#2\relax{#1}
\newcommand*{\fontclan}{\expandafter\@get@fontclan\f@family\relax}
\makeatother
-\newcommand*{\proportionalliningfigures}{\fontfamily{\fontclan-LF}\selectfont}
-\newcommand*{\proportionaloldstylefigures}{\fontfamily{\fontclan-OsF}\selectfont}
-\newcommand*{\tabularliningfigures}{\fontfamily{\fontclan-TLF}\selectfont}
-\newcommand*{\tabularoldstylefigures}{\fontfamily{\fontclan-TOsF}\selectfont}
+\DeclareRobustCommand{\proportionalliningfigures}{\fontfamily{\fontclan-LF}\selectfont}
+\DeclareRobustCommand{\proportionaloldstylefigures}{\fontfamily{\fontclan-OsF}\selectfont}
+\DeclareRobustCommand{\tabularliningfigures}{\fontfamily{\fontclan-TLF}\selectfont}
+\DeclareRobustCommand{\tabularoldstylefigures}{\fontfamily{\fontclan-TOsF}\selectfont}
-\newcommand*{\textdenominator}[1]{{\fontfamily{\fontclan-Dnom}\selectfont #1}}
-\newcommand*{\textinferior}[1]{{\fontfamily{\fontclan-Inf}\selectfont #1}}
-\newcommand*{\textnumerator}[1]{{\fontfamily{\fontclan-Numr}\selectfont #1}}
-\newcommand*{\textsuperior}[1]{{\fontfamily{\fontclan-Sup}\selectfont #1}}
+\DeclareRobustCommand{\textdenominator}[1]{{\fontfamily{\fontclan-Dnom}\selectfont #1}}
+\DeclareRobustCommand{\textinferior}[1]{{\fontfamily{\fontclan-Inf}\selectfont #1}}
+\DeclareRobustCommand{\textnumerator}[1]{{\fontfamily{\fontclan-Numr}\selectfont #1}}
+\DeclareRobustCommand{\textsuperior}[1]{{\fontfamily{\fontclan-Sup}\selectfont #1}}
\newcommand*{\nativetextfraction}[2]
{\mbox{\textnumerator{#1}\textfractionsolidus\textdenominator{#2}}}
@@ -85,21 +87,23 @@
\newenvironment*{tabfigures}
{\edef\rmdefault{\fontclan-T\sourceserifpro@figurestyle}\rm\ignorespaces}
{\ignorespacesafterend}
-
-\newcommand*{\elseries}{\def\mdseries@rm{el}\def\mdseries@sf{el}\def\mdseries@tt{el}}
-\newcommand*{\textel}[1]{{\elseries\textmd{#1}}}
-\newcommand*{\lseries}{\def\mdseries@rm{l}\def\mdseries@sf{l}\def\mdseries@tt{l}}
-\newcommand*{\textl}[1]{{\lseries\textmd{#1}}}
-%%--\newcommand*{\mdseries}{\def\mdseries@rm{m}\def\mdseries@sf{m}\def\mdseries@tt{m}}
-%%--\newcommand*{\textmd}[1]{{\mdseries\textmd{#1}}}
-\newcommand*{\sbseries}{\def\bfseries@rm{sb}\def\bfseries@sf{sb}\def\bfseries@tt{sb}}
-\newcommand*{\textsb}[1]{{\sbseries\textbf{#1}}}
-\newcommand*{\bseries}{\def\bfseries@rm{b}\def\bfseries@sf{b}\def\bfseries@tt{b}}
-\newcommand*{\textb}[1]{{\bseries\textbf{#1}}}
-\newcommand*{\ebseries}{\def\bfseries@rm{k}\def\bfseries@sf{eb}\def\bfseries@tt{k}}
-\newcommand*{\texteb}[1]{{\ebseries\textbf{#1}}}
\makeatother
+\DeclareRobustCommand{\elseries}{\fontseries{el}\selectfont}
+\DeclareTextFontCommand{\textel}{\elseries}
+\DeclareRobustCommand{\lseries}{\fontseries{l}\selectfont}
+\DeclareTextFontCommand{\textl}{\lseries}
+%%--\DeclareRobustCommand{\mdseries}{\fontseries{m}\selectfont}
+%%--\DeclareTextFontCommand{\textmd}{\mdseries}
+\DeclareRobustCommand{\sbseries}{\fontseries{sb}\selectfont}
+\DeclareTextFontCommand{\textsb}{\sbseries}
+\DeclareRobustCommand{\bseries}{\fontseries{b}\selectfont}
+\DeclareTextFontCommand{\textb}{\bseries}
+\DeclareRobustCommand{\ebseries}{\fontseries{eb}\selectfont}
+\DeclareTextFontCommand{\texteb}{\ebseries}
+\DeclareRobustCommand{\ubseries}{\fontseries{k}\selectfont}
+\DeclareTextFontCommand{\textub}{\ubseries}
+
\usepackage{cleveref}
@@ -112,7 +116,7 @@
citecolor = blue,
colorlinks = true,
linkcolor = blue,
- linktocpage = false,
+ linktocpage = true,
pdfauthor={Dr. Christoph L. Spiel},
pdfcreationdate={\pdffiledate},
pdfkeywords={LaTeX, typography, ligature, italic-correction, paragraph justification, baselineskip, sloppy, ragged},
@@ -124,9 +128,94 @@
}
+\SetExtraKerning[context=drop-left-sidebearing, name=source-code-normal, unit=space]
+ {font={T1/SourceCodePro-LF/m/n/44, T1/SourceCodePro-TLF/m/n/44}}
+ {
+ 1={-150,},
+ 2={-120,},
+ 3={-120,},
+ 4={-40,},
+ A={-100,},
+ B={-170,}
+ }
+
+\newlength{\sectiontocindent}
+\newlength{\sectionnumberwidth}
+\newlength{\subsectiontocindent}
+\newlength{\subsectionnumberwidth}
+\newlength{\subsubsectiontocindent}
+\newlength{\subsubsectionnumberwidth}
+
+\setlength{\sectiontocindent}{0pt}
+\setlength{\sectionnumberwidth}{40pt}
+\setlength{\subsectiontocindent}{40pt}
+\setlength{\subsectionnumberwidth}{25pt}
+\setlength{\subsubsectiontocindent}{65pt}
+\setlength{\subsubsectionnumberwidth}{30pt}
+
\makeatletter
-\renewcommand*{\@dotsep}{10000} % suppress leaders
-\patchcmd{\@dottedtocline}{\normalfont}{\bfseries}{\relax}{\PatchingFailed}
+\renewcommand*{\l@section}[2]
+ {\ifnum \c@tocdepth >\z@
+ \addpenalty\@secpenalty
+ \addvspace{1.0em \@plus\p@}%
+ \setlength{\@tempdima}{\sectionnumberwidth}%
+ \begingroup
+ \def\numberline##1{\hb@xt@\@tempdima{%
+ \tt\lseries
+ \fontsize{44}{0}\selectfont
+ \microtypecontext{kerning=drop-left-sidebearing}%
+ \iffalse\raisebox{-30pt}[0pt][0pt]{\rule{0.1pt}{40pt}}\fi
+ \textcolor{customred3}{##1}%
+ \hfil}}%
+ \parindent \z@
+ \rightskip \@pnumwidth
+ \parfillskip -\@pnumwidth
+ \leavevmode
+ \advance\leftskip\@tempdima
+ \hskip -\leftskip
+ \bfseries
+ \iffalse
+ \nobreak\hfil
+ \nobreak\hb@xt@\@pnumwidth{\hss #2\kern-\p@\kern\p@}%
+ \else
+ {\sffamily\large #1}\quad
+ {#2}\hfil\hbox{}
+ \fi
+ \par
+ \endgroup
+ \fi}
+
+\renewcommand*{\@dottedtocline}[5]
+ {\ifnum #1>\c@tocdepth
+ \else
+ \vskip \z@ \@plus.2\p@
+ \begingroup
+ \leftskip #2\relax
+ \rightskip \@tocrmarg
+ \parfillskip -\rightskip
+ \parindent #2\relax\@afterindenttrue
+ \interlinepenalty\@M
+ \leavevmode
+ \@tempdima #3\relax
+ \advance\leftskip \@tempdima
+ \null\nobreak
+ \hskip -\leftskip
+ {#4}\nobreak
+ \iffalse
+ \leaders\hbox{$\m@th \mkern \@dotsep mu\hbox{.}\mkern \@dotsep mu$}\hfill
+ \nobreak\hb@xt@\@pnumwidth{\hfil\normalfont \normalcolor #5\kern-\p@\kern\p@}%
+ \else
+ \hbox{\quad\normalfont\bfseries #5}\nobreak\hfill\hbox{}%
+ \fi
+ \par
+ \endgroup
+ \fi}
+
+\renewcommand*{\l@subsection}{\@dottedtocline{2}{\subsectiontocindent}{\subsectionnumberwidth}}
+\renewcommand*{\l@subsubsection}{\@dottedtocline{3}{\subsubsectiontocindent}{\subsubsectionnumberwidth}}
+\newrobustcmd*{\tocsquashedsubsections}
+ {\def\l@subsection{\@dottedtocline{2}{0pt}{\subsectionnumberwidth}}%
+ \def\l@subsubsection{\@dottedtocline{3}{0pt}{\subsubsectionnumberwidth}}}
\makeatother
@@ -171,7 +260,6 @@
leftmargin=!
}
-
\SetEnumitemKey{nestedinspecialsection}{
leftmargin=10pt
}
@@ -191,13 +279,15 @@
\fancypagestyle{pagenumberonly}{
+ \fancyhf{}
\fancyhead[L]{}
\fancyhead[R]{\thepage}
}
-\pagestyle{fancy}
-\fancyhf{}
-\fancyhead[L]{\rightmark}
-\fancyhead[R]{\thepage}
+\fancypagestyle{fancy}{
+ \fancyhf{}
+ \fancyhead[L]{\rightmark}
+ \fancyhead[R]{\thepage}
+}
\newcommand*{\resetfancyhead}
{\fancyhead[L]{\textsf{\textsc{\textls[20]{\nouppercase\rightmark}}}}}
@@ -239,8 +329,8 @@
\setlength{\skip\footins}{25pt}
-\setlength{\overfullrule}{3pt}
-\renewcommand*{\sidecaptionsep}{16pt}
+\setlength{\overfullrule}{0pt}
+\renewcommand*{\sidecaptionsep}{25pt}
@@ -272,13 +362,17 @@
\newcommand*{\citenum}[1]{\@nameuse{b@#1}}
\makeatother
-\def\code#1{\texttt{#1}}
+\renewcommand*{\code}[1]{\texttt{#1}}
+
+\newcommand*{\codelineindicator}{\mbox{\small$\mathscr{l}$}}
\newrobustcmd*{\command}[1]{\mbox{\textbf{#1}}}
+\newcommand*{\detoxindex}[1]{\index{\detokenize{#1}}}
+
\newcommand*{\doublequotes}[1]{\doubleguillemetright\kern-.03333em #1\doubleguillemetleft}
-\newcommand*{\dumpmacro}[1]{\texttt{\detokenize\expandafter{#1}}}
+\newcommand*{\dumpmacro}[1]{\texttt{\detokenize\expandafter{#1}\unskip}}
\newcommand*{\filesystem}[1]{\mbox{\textit{#1\/}}}
@@ -287,6 +381,12 @@
\newcommand*{\foreignphrase}[1]{\textsl{#1}}
+\makeatletter
+\newcommand*{\formatdimen}{\@ifstar{\@typog@rem@pt}{\@typog@strip@pt}}
+\newcommand*{\@typog@rem@pt}[1]{\dimen0=\dimexpr#1\relax\strip@pt\dimen0\,pt}
+\newcommand*{\@typog@strip@pt}[1]{\expandafter\strip@pt#1\relax\,pt}
+\makeatother
+
\newcommand*{\formatskip}[3]{#1\genfrac{}{}{0pt}{}{{+}#2}{{-}#3}}
\makeatletter
@@ -294,19 +394,46 @@
\renewcommand*{\fps@table}{htbp}
\makeatother
+\apptocmd{\GlossaryParms}
+ {\RaggedRight\normalsize}
+ {\relax}
+ {\AppendingFailed}
+
+\let\oldhdpindex=\hdpindex
+\renewcommand*{\hdpindex}[2]{\textbf{\oldhdpindex{#1}{#2}}}
+
+\let\oldhdclindex=\hdclindex
+\renewcommand*{\hdclindex}[2]
+ {\ifstrequal{#2}{code}
+ {\oldhdclindex{#1}{codeidx}}
+ {\oldhdclindex{#1}{#2}}}
+
\newcommand*{\hollowrectangle}[2]
{\setlength{\fboxrule}{.5pt}%
\setlength{\fboxsep}{0pt}%
\framebox{\rule{#1}{0pt}\rule{0pt}{#2}}}
\newcommand*{\hollowsquare}[1]{\hollowrectangle{#1}{#1}}
+\apptocmd{\IndexParms}
+ {\RaggedRight\small}
+ {\relax}
+ {\AppendingFailed}
\makeatletter
+\ExplSyntaxOn
\apptocmd{\index@prologue}
- {\marginnote{In the Index page ranges are stuck together with
- \hyperref[syn:figuredash]{\cs{figuredash*}}.}}
+ {\legacy_if:nTF {codeline@index}
+ {We\space prefix\space all\space references\space
+ to\space code\space lines\space with~\singlequotes{\codelineindicator}.}
+ {}}
{\relax}
{\AppendingFailed}
+
+\newcommand*{\linenumberdecoration}
+ {\legacy_if:nTF {codeline@index}
+ {\codelineindicator}
+ {}}
+\ExplSyntaxOff
\makeatother
\newcommand*{\logmacro}[1]
@@ -348,11 +475,27 @@
\AtBeginDocument{\setlength{\emreference}{\fontdimen6\font}}
\newrobustcmd*{\milliem}[1]
{\ifdim #1=0pt
- #1%
+ 0\,pt%
\else
\nativetextfraction{\the\numexpr\dimexpr (#1) * 1000 / \emreference}{1000}\:em%
\fi}
+\let\originalmulticols=\multicols
+\let\endoriginalmulticols=\endmulticols
+\RenewDocumentEnvironment{multicols}{m o o}
+ {\ifnum #1=1
+ \IfNoValueTF{#2}{\relax}{#2}%
+ \else
+ \IfNoValueTF{#2}
+ {\originalmulticols{#1}}
+ {\originalmulticols{#1}[#2]}%
+ \fi}
+ {\ifnum #1=1
+ \relax
+ \else
+ \endoriginalmulticols
+ \fi}
+
\newcommand*{\needtocspace}[1][3]
{\addtocontents{toc}{\protect\needspace{#1\baselineskip}}}
@@ -455,7 +598,7 @@
\newenvironment*{specialcodesection}[1]
{\Needspace{4\baselineskip}%
\begin{tcolorbox}[colback=white, colframe=\markercolor,
- bottomrule=0pt, leftrule=5pt, rightrule=0pt, toprule=0pt]
+ bottomrule=.5pt, leftrule=5pt, rightrule=.5pt, toprule=.5pt]
\sf\typogsetupsf
\begin{list}
{\specialcodesectionheading{#1}}
@@ -498,11 +641,37 @@
\begin{minipage}{\floatcaptionwidth}}
{\end{minipage}}
\newcommand*{\tablenotemark}[1]{\smash{\textsuperscript{#1}}}
+\newcommand*{\tablenotesymbol}[1]{% Bringhurst's "traditional order" (p69) from 1 to 6
+ \ifcase#1\relax
+ #1% 0
+ \or \textasteriskcentered% 1
+ \or \textdagger% 2
+ \or \textdaggerdbl% 3
+ \or \textsection% 4
+ \or \textbardbl% 5
+ \or \textsection% 6
+ \or \textasteriskcentered\textasteriskcentered%7
+ \or \textdagger\textdagger%8
+ \or \textdaggerdbl\textdaggerdbl%9
+ \else
+ #1
+ \fi
+}
\newcommand*{\termparbox}[1]{\parbox[t]{\linewidth}{#1\bottomstrut}}
\newcommand*{\thousandsseparator}{\mbox{,}}
+\ExplSyntaxOn
+\newcommand*{\titlecase}[1]{\text_titlecase:n {#1}}
+\ExplSyntaxOff
+
+\newcommand*{\toccontinuesonnextpage}
+ {\addtocontents{toc}{\par
+ \bigskip
+ \hfill\textit{Table of Contents continued on next page.}\par
+ \protect\clearpage}}
+
\newcommand*{\topstrut}{\rule{0pt}{1.3em}}
\newcommand*{\typogsetuprm}
@@ -514,11 +683,16 @@
{\typogsetup{raise*=.06667em,
raiseguillemets=.05em}}
+\newcommand*{\unmarkedfntext}[1]
+ {{\def\thefootnote{}\footnote{#1}%
+ \addtocounter{footnote}{-1}}}
+
+\newcommand*{\userman}[1]{\textbf{\hyperpage{#1}}}%%-- https://github.com/ho-tex/hypdoc/issues/11
+
\newcommand*{\visualpar}{\textcolor{\markercolor}{\P}\linebreak[1]\enspace}
\newenvironment*{whittyquote}
{\begin{flushright}
- \renewcommand*{\propername}[1]{\mbox{##1}}%
\sf\typogsetupsf}
{\end{flushright}}
@@ -532,7 +706,6 @@
\end{minipage}
\end{maxipage}}
-
\NewDocElement[macrolike = true,
idxtype = dim.,
idxgroup = dimensions,
@@ -547,6 +720,20 @@
{EnumItemKey}{enumitemkey}
\pretocmd{\DescribeEnumItemKey}{\needspace{25pt}}{\relax}{\PrependingFailed}
+\NewDocElement[macrolike = true,
+ idxtype = skip,
+ idxgroup = \LaTeX{} length (skip),
+ printtype = \textit{skip}]
+ {LaTeXSkip}{lskip}
+\pretocmd{\DescribeLaTeXSkip}{\needspace{25pt}}{\relax}{\PrependingFailed}
+
+\NewDocElement[macrolike = true,
+ idxtype = counter,
+ idxgroup = \protect\TeX{} counters,
+ printtype = \textit{counter}]
+ {TeXCounter}{tcounter}
+\pretocmd{\DescribeTeXCounter}{\needspace{25pt}}{\relax}{\PrependingFailed}
+
\hyphenation{% https://hyphenateit.com/en-us
Double-guillemet-left
@@ -585,6 +772,8 @@
line-width
loose-ness
loose-spacing
+ lower-case-adjust-label-items
+ lower-case-label-item-adjustments
make-at-letter
make-at-other
mar-gin-al
@@ -612,6 +801,7 @@
set-leading
set-leading-percentage
short-inter-text
+ shrink-limits
single-guillemet-left
single-guillemet-right
single-quotes
@@ -625,6 +815,7 @@
smooth-ragged-right-shape-septuplet
smooth-ragged-right-shape-triplet
space-skip
+ stretch-limits
text-italics-correction
tight-spacing
tracing-boxes
@@ -632,6 +823,8 @@
tracking-tt-spacing
typog-get
typog-setup
+ upper-case-adjust-label-items
+ upper-case-label-item-adjustments
vtie-bot
vtie-bot-disp
vtie-bot-disp-par
@@ -648,29 +841,52 @@
\begin{document}
\typogsetuprm
+ \uppercaseadjustlabelitems{*}
\DocInput{typog.dtx}
\end{document}
%</driver>
%<*index-style>
actual '='
+delim_0 "\\nobreak\\enspace"
+delim_1 "\\nobreak\\enspace"
+delim_2 "\\nobreak\\enspace"
delim_r "\\figuredash*"
heading_prefix "\\pagebreak[3]\\smallskip\n\n{\\sffamily\\bfseries\\large "
heading_suffix "}\\nopagebreak\n"
headings_flag 1
level '>'
+line_max 65536
quote '!'
%</index-style>
+%<*changes-style>
+actual '='
+delim_0 "\\nobreak\\enspace"
+delim_1 "\\nobreak\\enspace"
+delim_2 "\\nobreak\\enspace"
+heading_prefix "\\pagebreak[3]\\smallskip\n\n{\\sffamily\\bfseries\\large "
+heading_suffix "}\\nopagebreak\n"
+headings_flag 0
+item_x1 "\\efill\n\\subitem "
+item_x2 "\\ "
+keyword "\\glossaryentry"
+level '>'
+line_max 65536
+postamble "\n\\end{theglossary}\n"
+preamble "\\begin{theglossary}\n \\makeatletter\\scan@allowedfalse"
+quote '!'
+%</changes-style>
% \fi
%
%
% \DoNotIndex{\,}
-% \DoNotIndex{\addtolength,\advance,\aftergroup,\allowdisplaybreaks,\arabic}
-% \DoNotIndex{\AtBeginDocument,\autotransfer}
-% \DoNotIndex{\baselineskip}
-% \DoNotIndex{\c,\char,\clubpenalties,\clubpenalty,\count,\cs,\csname}
+% \DoNotIndex{\\}
+% \DoNotIndex{\addtocounter,\addtolength,\advance,\aftergroup,\allowdisplaybreaks,\arabic,\arraystretch}
+% \DoNotIndex{\AfterEndPreamble,\AfterPreamble,\AtBeginDocument,\autotransfer}
+% \DoNotIndex{\baselineskip,\begin,\begingroup,\booltrue,\box}
+% \DoNotIndex{\c,\char,\clist,\clubpenalties,\clubpenalty,\count,\cs,\csname}
% \DoNotIndex{\DeclareRobustCommand,\def,\define@choicekey,\define@key,\detokenize}
% \DoNotIndex{\dim,\dimen,\dimexpr,\discretionary,\displaywidowpenalties,\displaywidowpenalty}
-% \DoNotIndex{\edef,\else,\emergencystretch,\empty,\endcsname}
+% \DoNotIndex{\edef,\else,\emergencystretch,\empty,\end,\endcsname,\endgroup}
% \DoNotIndex{\endlastlineflushrightpar}
% \DoNotIndex{\endlastlineraggedleftpar}
% \DoNotIndex{\endnofontexpand,\endnofontexpansion}
@@ -679,33 +895,37 @@ quote '!'
% \DoNotIndex{\endsmoothraggedrightshapetriplet}
% \DoNotIndex{\endtypoginspect}
% \DoNotIndex{\exhyphenpenalty,\expandafter,\ExplSyntaxOff,\ExplSyntaxOn}
-% \DoNotIndex{\fi,\finalhyphendemerits,\font,\fontdimen,\fp,\fussy,\futurelet}
+% \DoNotIndex{\fi,\finalhyphendemerits,\font,\fontdimen,\forcsvlist,\fp,\fpeval,\fussy,\futurelet}
% \DoNotIndex{\gdef,\global,\glueexpr,\@gobble}
% \DoNotIndex{\guillemotleft,\guillemotright,\guilsinglleft,\guilsinglright}
-% \DoNotIndex{\hbadness,\hfuzz,\hskip,\hspace}
+% \DoNotIndex{\hbadness,\hbox,\hfuzz,\hskip,\hspace,\ht}
% \DoNotIndex{\ignorespaces,\ignorespacesafterend}
-% \DoNotIndex{\if,\IfBooleanT,\IfBooleanTF,\ifcase,\ifdefined,\ifdim,\iffalse,\ifmmode,\ifMT@expansion}
-% \DoNotIndex{\@ifnextchar,\IfNoValueF,\IfNoValueTF,\ifnum}
+% \DoNotIndex{\if,\ifblank,\ifbool,\IfBooleanT,\IfBooleanTF,\ifcase,\ifdefined,\ifdim,\iffalse,\ifmmode}
+% \DoNotIndex{\ifMT@expansion,\@ifnextchar,\IfNoValueF,\IfNoValueTF,\ifnum,\ifodd,\ifstrequal}
% \DoNotIndex{\iftypog@microtype@loadedfalse}
% \DoNotIndex{\iftypog@microtype@preloadedfalse}
-% \DoNotIndex{\ifvmode,\ifx,\ignorespaces,\inputlineno,\int,\interlinepenalty}
+% \DoNotIndex{\ifvmode,\ifx,\ignorespaces,\inputlineno,\int,\interlinepenalty,\itemize}
% \DoNotIndex{\jobname}
% \DoNotIndex{\kern}
-% \DoNotIndex{\l,\lastlinefit,\lastlineflushrightpar,\lastlineraggedleftpar,\leftmargin,\leftskip,\let}
-% \DoNotIndex{\linepenalty,\linewidth,\@listdepth,\looseness,\lsstyle}
-% \DoNotIndex{\@M,\m@th,\mathbin,\mathord,\maxdimen,\message,\microtypecontext,\microtypesetup}
+% \DoNotIndex{\l,\labelitemi,\labelitemii,\labelitemiii,\labelitemiv}
+% \DoNotIndex{\lastlinefit,\lastlineflushrightpar,\lastlineraggedleftpar}
+% \DoNotIndex{\lefthyphenmin,\leftmargin,\leftskip,\let,\letcs}
+% \DoNotIndex{\linepenalty,\linewidth,\@listdepth,\loop,\looseness,\lsstyle}
+% \DoNotIndex{\@M,\m@th,\mathbin,\mathord,\maxdimen,\mbox,\message,\microtypecontext,\microtypesetup}
% \DoNotIndex{\@minus,\mkern,\m@ne,\mspace,\MT@letterspace@,\MT@MT,\muexpr}
-% \DoNotIndex{\@ne,\NeedsTeXFormat,\NewDocumentCommand,\NewDocumentEnvironment,\newcommand,\newenvironment}
-% \DoNotIndex{\newcounter,\newdimen,\newif,\newlength,\newmuskip}
+% \DoNotIndex{\@ne,\NeedsTeXFormat,\newbool,\NewDocumentCommand,\NewDocumentEnvironment}
+% \DoNotIndex{\newcommand,\newenvironment}
+% \DoNotIndex{\newcounter,\newdimen,\newif,\newlength,\newline,\newmuskip}
% \DoNotIndex{\nobreak,\nofontexpand,\nofontexpansion,\nr,\numexpr}
% \DoNotIndex{\or,\optarg}
% \DoNotIndex{\p@,\PackageError,\PackageWarning}
-% \DoNotIndex{\par,\parfillskip,\parindent,\parshape,\pdf@strcmp}
+% \DoNotIndex{\par,\parfillskip,\parindent,\parshape,\patchcmd,\pdf@strcmp}
% \DoNotIndex{\pdfstringdefDisableCommands}
% \DoNotIndex{\penalty,\@plus,\PopPostHook,\postdisplaypenalty,\predisplaypenalty,\prg}
% \DoNotIndex{\pretolerance,\protected,\ProvidesPackage,\PushPostHook}
-% \DoNotIndex{\raisebox,\refstepcounter,\relax,\RenewExpandableDocumentCommand,\RequirePackage,\rightskip}
-% \DoNotIndex{\setcounter,\SetEnumitemKey,\SetExpansion,\setkeys,\setlength,\setstretch}
+% \DoNotIndex{\raisebox,\refstepcounter,\relax,\RenewExpandableDocumentCommand,\repeat,\RequirePackage}
+% \DoNotIndex{\righthyphenmin,\rightskip,\rlap,\romannumeral,\rule}
+% \DoNotIndex{\setbox,\setcounter,\SetEnumitemKey,\SetExpansion,\setkeys,\setlength,\setstretch}
% \DoNotIndex{\showboxbreadth,\showboxdepth,\skip,\sloppy}
% \DoNotIndex{\smoothraggedrightpar}
% \DoNotIndex{\smoothraggedrightshapequintuplet}
@@ -715,9 +935,9 @@ quote '!'
% \DoNotIndex{\textemdash,\textendash,\textsf,\textsl,\texttimes,\textwidth,\the,\times,\tl,\tolerance}
% \DoNotIndex{\tracingnone,\tracingpages,\tracingparagraphs}
% \DoNotIndex{\typeout,\typoginspect,\typoglogo}
-% \DoNotIndex{\unless}
+% \DoNotIndex{\unhbox,\unless}
% \DoNotIndex{\val,\value,\vbadness,\vfuzz}
-% \DoNotIndex{\widowpenalties,\widowpenalty}
+% \DoNotIndex{\wd,\widowpenalties,\widowpenalty}
% \DoNotIndex{\z@,\z@skip}
%
%
@@ -828,7 +1048,8 @@ end
% \footnotesize
% \noindent
% This package is copyright \textcopyright~2024 Ch.~L.~Spiel. It may be distributed
-% and\kernedslash*or modified under the conditions of the \LaTeX{} Project Public License
+% and\kernedslash*or modified under the conditions of the
+% \href{https://www.latex-project.org/lppl.txt}{\LaTeX{} Project Public License}
% \acronym{(LPPL)}, either version~1.3c of this license or --~at your option~-- any later
% version. This work has the \acronym{LPPL} maintenance status
% \doublequotes{author-maintained}.
@@ -836,30 +1057,36 @@ end
%
%
% \clearpage
-% \thispagestyle{pagenumberonly}
-% \tableofcontents
-% \vspace{\fill}
+% \pagestyle{pagenumberonly}
%
+% \unmarkedfntext{The font sample on the title page was generated with the help of \MP{} using
+% \doublequotes{\acronym{URW}~Palladio}%
+% \detoxindex{font>typeface>URW Palladio=\acronym{URW} Palladio|userman}.}
%
-% \thispagestyle{pagenumberonly}
-% \listoftables
-% \phantomsection
-% \addcontentsline{toc}{subsection}{List of Tables}
-% \vspace{\fill}
+% \begin{nofontexpansion}
+% \begin{nocharprotrusion}
+% \tableofcontents
+% \end{nocharprotrusion}
+% \end{nofontexpansion}
%
+% \addtocontents{toc}{%
+% \protect\begin{whittyquote}
+% Hoffentlich wird es nicht so schlimm, wie es schon ist! \\
+% \capitalemdash*~\propername{Karl Valentin}
+% \protect\end{whittyquote}\par}
%
-% \begingroup
-% \footnotesize
-% \singlespacing
-% \noindent
-% The font sample on the title page was generated with the help of \MP{} using
-% \doublequotes{\acronym{URW} Palladio~L}\index{font>URW Palladio L=\acronym{URW} Palladio
-% L}.
-% \endgroup
+% \vspace{\fill}
+%
+% \begin{nofontexpansion}
+% \begin{nocharprotrusion}
+% \listoftables
+% \end{nocharprotrusion}
+% \end{nofontexpansion}
%
%
% \clearpage
% \pagenumbering{arabic}
+% \pagestyle{fancy}
% \section{Introduction}\label{sec:introduction}
%
% \begin{whittyquote}
@@ -892,7 +1119,10 @@ end
% \Cref{sec:latex-hyphenation} expands the hyphenation facilities of \LaTeX.
%
% \Cref{sec:break-ligatures,sec:manual-italic-correction,sec:extra-kerning,sec:raise-characters}
-% deal with vertically positioning glyphs in a more pleasant way.
+% deal with vertically positioning glyphs in a more pleasant way. Also in the realm of
+% vertical alignments is \cref{sec:adjust-label-items} that explains how to height-adjust the
+% labels in |itemize|~lists to perfection whether the items are followed by uppercase or by
+% lowercase letters.
%
% \Cref{sec:align-last-line,sec:fill-last-line} discuss dearly missed macros for better control
% of the last line of a paragraph.
@@ -950,15 +1180,17 @@ end
% \end{tabbing}
% \end{synopsis}
%
-% \index{package options|(}
-% The package \meta{OPTIONs} serve as configuration \meta{key}s, too. This means they can be
-% set with \hyperref[syn:typogsetup]{\code{typogsetup}} and their values can be retrieved with
-% \hyperref[syn:typogget]{\cs{typogget}}. Options that rely on package~\packagename{microtype}
-% are indicated with \doublequotes{\microtyperequiredmarker}.
+% \index{package options|(userman}
+% The package \meta{OPTIONs} also serve as configuration \meta{key}s (unless noted otherwise).
+% This means they can be set with \hyperref[syn:typogsetup]{\code{typogsetup}} and their values
+% can be retrieved with \hyperref[syn:typogget]{\cs{typogget}}. Options that rely on
+% package~\packagename{microtype} are indicated with \doublequotes{\microtyperequiredmarker}.
%
% \begin{typogsetup}{}
% \newcommand*{\indexpackageoption}[1]
-% {\index{package option>#1=\code{#1}}\index{#1=\code{#1}~(option)}\ignorespaces}
+% {\detoxindex{package option>#1=\code{#1}|userman}%
+% \detoxindex{#1=\code{#1}~(option)|userman}%
+% \ignorespaces}
% \begin{description}
% [before={\let\oldmakelabel=\makelabel
% \renewcommand{\makelabel}[1]
@@ -978,17 +1210,44 @@ end
% \item[|debug|, |nodebug|]\label{item:debug}
% \indexpackageoption{debug}
% \indexpackageoption{nodebug}
-% Write package-specific debug information to the log file. Opposite: |nodebug|. The
-% default is not to log debug information.
+% Write some package-specific debug information to the \filesystem{log}~file. Opposite:
+% |nodebug|. The default is not to record debug information.
+%
+% These two options neither can be used with \hyperref[syn:typogsetup]{\code{typogsetup}}
+% nor with \hyperref[syn:typogget]{\cs{typogget}}.
%
% \item[|ligaturekern=|\meta{dim}]\label{item:ligaturekern}
% \indexpackageoption{ligaturekern}
% Set \meta{dim} of the kern that is inserted to split a ligature in
% macro\hyperref[syn:nolig]{\cs{nolig}}. See
-% \cref{sec:break-ligatures}.\shiftedmarginnote{We access the configuration values with
-% \hyperref[syn:typogget]{\cs{typogget}}.} Default
+% \cref{sec:break-ligatures}.\shiftedmarginnote{We access all the (default) configuration
+% values with \hyperref[syn:typogget]{\cs{typogget}}.} Default
% value:~\milliem{\typogget{ligaturekern}}.
%
+% \item[|lowercaselabelitemadjustments=\{|\meta{dim1}, \meta{dim2}, \meta{dim3}, \meta{dim4}|\}|]%
+% \label{item:lowercaselabelitemadjustments}
+% \indexpackageoption{lowercaselabelitemadjustments}
+% \sinceversion{Since v0.4}
+% Vertical shifts \meta{dimN} to apply to \cs{labelitem}\meta{N}, where \meta{N} is the
+% nesting level of the |itemize|~list starting at one. An empty \meta{dimN} is equivalent
+% to~\formatdimen*{0pt}. The adjustments apply to the lowercase setting
+% (\hyperref[syn:lowercaseadjustlabelitems]{\code{\string\lowercaseadjustlabelitems}}).
+% See \cref{sec:adjust-label-items} (in particular subsection~\singlequotes{Setup} and
+% \cref{tab:labelitemadjustvalues} on \cpageref{tab:labelitemadjustvalues}) and also
+% configuration option
+% \hyperref[item:uppercaselabelitemadjustments]{\code{uppercaseadjustlabelitem}}.
+%
+% All four lengths default to~\formatdimen*{0pt}.
+%
+% \begin{important}
+% \slightlysloppy
+% \noindent
+% Configuring \code{lowercaselabelitemadjustments} (or
+% \code{uppercaselabelitemadjustments}) does \emph{not} activate the correction
+% mechanism. Use one of the macros \code{\string\lowercaseadjustlabelitems} or
+% \code{\string\uppercaseadjustlabelitems} for that purpose.
+% \end{important}
+%
% \item[|mathitalicscorrection=|\meta{dim}]\label{item:mathitalicscorrection}
% \indexpackageoption{mathitalicscorrection}
% Italics correction in math mode. See \cref{sec:manual-italic-correction} and also the
@@ -1000,10 +1259,14 @@ end
% \item[|raise*=|\meta{dim}]\label{item:raise}
% \indexpackageoption{raise*}
% Set the length by which selected characters (dash, hyphen, times, and number dash) are
-% raised. Default value:~0pt.
+% raised. Default value:~\formatdimen*{0pt}.
%
% Only the raise amounts for guillemets are unaffected by this option.
%
+% This option neither can be used with \hyperref[syn:typogsetup]{\code{typogsetup}} nor
+% with \hyperref[syn:typogget]{\cs{typogget}}, however, the specific options influenced by
+% it can.
+%
% \item[|raisecapitaldash=|\meta{dim}]\label{item:raisecapitaldash}
% \indexpackageoption{raisecapitaldash}
% Set the length that the \cs{textendash} is raised in
@@ -1093,6 +1356,30 @@ end
% \emph{not} in the document body.
%
% By default this option is unset.
+%
+% \item[|uppercaselabelitemadjustments=\{|\meta{dim1}, \meta{dim2}, \meta{dim3}, \meta{dim4}|\}|]%
+% \label{item:uppercaselabelitemadjustments}
+% \indexpackageoption{uppercaselabelitemadjustments}
+% \sinceversion{Since v0.4}
+% Vertical shifts \meta{dimN} to apply to \cs{labelitem}\meta{N}, where \meta{N} is the
+% nesting level of the |itemize|~list starting at one. An empty \meta{dimN} is equivalent
+% to~\formatdimen*{0pt}. The adjustments apply to the uppercase setting
+% (\hyperref[syn:uppercaseadjustlabelitems]{\code{\string\uppercaseadjustlabelitems}}).
+% See \cref{sec:adjust-label-items} (in particular subsection~\singlequotes{Setup} and
+% \cref{tab:labelitemadjustvalues} on \cpageref{tab:labelitemadjustvalues}) and also
+% configuration option
+% \hyperref[item:lowercaselabelitemadjustments]{\code{lowercaseadjustlabelitem}}.
+%
+% All four lengths default to~\formatdimen*{0pt}.
+%
+% \begin{important}
+% \slightlysloppy
+% \noindent
+% Configuring \code{uppercaselabelitemadjustments} (or
+% \code{lowercaselabelitemadjustments}) does \emph{not} activate the correction
+% mechanism. Use one of the macros \code{\string\uppercaseadjustlabelitems} or
+% \code{\string\lowercaseadjustlabelitems} for that purpose.
+% \end{important}
% \end{description}
% \end{typogsetup}
% \index{package options|)}
@@ -1116,12 +1403,13 @@ end
% issues a \cs{par} at its end. Environments with different name suffixes never close
% with~\cs{par}.
%
-% \bigskip
%
-% \noindent
+% \subsection{Setup and Reconfiguration}\label{sec:setup}
+%
% \DescribeEnv{typogsetup}
-% Configure\index{configuration}\index{setup} the package with the given \meta{keys}. An empty
-% argument of \code{typogsetup} resets all \meta{keys} to their default values.
+% Configure\index{configuration|userman}\index{setup|userman} the package with the given
+% \meta{keys}. An empty argument of \code{typogsetup} resets all \meta{keys} to their default
+% values.
%
% \begin{synopsis}\label{syn:typogsetup}
% \cs{begin}|{typogsetup}|\marg{keys}
@@ -1129,7 +1417,7 @@ end
% \cs{end}|{typogsetup}|
% \end{synopsis}
%
-% The package can be (re-)configured\index{reconfigure} at any point with
+% The package can be (re-)configured\index{reconfigure|userman} at any point with
% \cs{typogsetup}\marg{keys}, or --~for localized changes~-- as
%
% \begin{codeexample}
@@ -1143,6 +1431,12 @@ end
% where \meta{keys} have the same format as the package options described in
% \cref{sec:package-options}.
%
+% \begin{note}
+% Use \code{\string\PassOptionsToPackage\{\meta{keys}\}\{typog\}} to pass \meta{keys} to
+% \packagename{typog} before loading it and \code{\string\typogsetup\{\meta{keys}\}} after
+% \code{\string\usepackage\{typog\}}.
+% \end{note}
+%
% \begin{usecases}
% \cs{typogsetup} can substitute configuring the package at load-time or serve as an
% addition.~\visualpar Using the |typogsetup|~environment allows to fine-tune the parameters
@@ -1154,9 +1448,9 @@ end
%
% \noindent
% \DescribeMacro{\typogget}
-% Sometimes the user needs to access internal configuration values of
-% package~\packagename{typog}. This can be done in a safe way without resorting to code that
-% is bracketed by \cs{makeatletter}/\cs{makeatother} with the help of the following macro.
+% Sometimes the user needs to access configuration values of package~\packagename{typog}. This
+% can be done in a safe way without resorting to code that is bracketed by \cs{makeatletter}
+% and \cs{makeatother} with the help of the following macro.
%
% \begin{synopsis}\label{syn:typogget}
% \cs{typogget}\marg{key}
@@ -1177,15 +1471,47 @@ end
% \> \{\cs{raisebox}\= \{\cs{typogget}\{raisecapitaldash\}\}\{\cs{cdot}\}\}
% \end{codeexample}
%
-% The latter only is useful inside of an \code{itemize}~environment of course.
+% The latter only is useful inside of an \code{itemize}~environment of course. Compare with
+% the solution in \cref{sec:adjust-label-items} offered by \packagename{typog} since v0.4.
% \end{usecase}
%
+% \DescribeMacro{\typoggetnth}
+% \sinceversion{Since v0.4}
+% If a configuration item is associated with a list as
+% \hyperref[item:lowercaselabelitemadjustments]{\code{lowercaselabelitemadjustments}},
+% \hyperref[item:shrinklimits]{\code{shrinklimits}},
+% \hyperref[item:stretchlimits]{\code{stretchlimits}},
+% \hyperref[item:trackingttspacing]{\code{trackingttspacing}}, and
+% \hyperref[item:uppercaselabelitemadjustments]{\code{uppercaselabelitemadjustments}} are, it
+% may be convenient to fetch a particular list element of it.
+%
+% \begin{synopsis}\label{syn:typoggetnth}
+% \cs{typoggetnth}\marg{csname}\marg{key}\marg{index} \\
+% \cs{typoggetnth}\marg{dimen-register}\marg{key}\marg{index}
+% \end{synopsis}
+%
+% Retrieve the configuration value --~which is a comma-separated list~-- that is associated
+% with~\meta{key} and store the item having position~\meta{index} in \meta{dimen-register} or
+% the parameter-less, global macro~\meta{csname}. The destination \meta{dimen-register} may be
+% predefined like, e.\,g., \cs{dimen0} or user-defined. Dimensions can also be stored in a
+% macro by using the \meta{csname}~form of \cs{typoggetnth} but not \foreignphrase{vice versa}.
+%
+% Index into the list either from left-to-right with positive indices starting at~\(1\) up to
+% the length of the list, or from right-to-left with negative indices starting at~\(-1\) down
+% to the negative length.
+%
+% \begin{note}
+% Macro~\cs{typoggetnth} \emph{only} works with \meta{key}s that are associated with a list
+% of values.
+% \end{note}
+%
%
-% \subsection{Information}\label{sec:information}\index{information}
+% \subsection{Information}\label{sec:information}
+% \index{information|userman}
%
% \begin{whittyquote}
% Never forget: The visual output counts; \\
-% it must always be checked, [\dots]. \\
+% it must always be checked, [\dots\itcorr{-4}]. \\
% \marginnote{The em-dash at then end of the quote is height-adjusted with
% \hyperref[syn:capitalemdash]{\cs{capitalemdash*}}.}%
% \capitalemdash*~\propername{Udo Wermuth}~\cite{wermuth:2017a}
@@ -1196,14 +1522,14 @@ end
%
%
% \subsubsection{Font Information}\label{sec:font-information}
-% \index{font>information}
+% \index{font>information|userman}
%
% \DescribeMacro{\fontsizeinfo}
% Capture the font~size\footnote{We use \cs{fontdimen6}, the em-height as the font
-% size.}\index{font>size} and line~spacing\footnote{The line~spacing simply is
-% \cs{baselineskip}.}\index{line spacing} at the point where \cs{fontsizeinfo} \emph{is called}
-% in macro~\meta{cs-name}. Both dimensions are measured in points~(pt) and the results are
-% rounded to tenths.
+% size.}\index{font>size|userman} and line~spacing\footnote{The line~spacing simply is
+% \cs{baselineskip}.}\index{line spacing|userman} at the point where \cs{fontsizeinfo} \emph{is
+% called} in macro~\meta{cs-name}. Both dimensions are measured in points~(pt) and the results
+% are rounded to tenths.
%
% \begin{synopsis}\label{syn:fontsizeinfo}
% \cs{fontsizeinfo}\marg{cs-name}
@@ -1259,9 +1585,8 @@ end
%
% \begin{caution}
% The end-of-trace marker sometimes gets placed too early and the trace seems truncated.
-% \LaTeX{} reliably logs the requested the trace information, but the write operations for
-% trace data and \cs{immediate}\cs{write} which is used to print the end-tag are not
-% synchronized.
+% \LaTeX{} reliably logs the requested trace information, but the write operations for trace
+% data and \cs{immediate}\cs{write} which is used to print the end-tag are not synchronized.
% \end{caution}
%
%
@@ -1287,7 +1612,8 @@ end
%
% \begin{itemize}[noindent]
% \item Any text tool can be used to ferret out the tags. \propername{Emacs} users will find
-% \mbox{\code{(occur \meta{regexp})}} to be useful.
+% \mbox{\code{(occur \meta{regexp})}} to be useful.\shiftedmarginnote{This \code{itemize}
+% list demonstrates vertically adjusted label items (\cref{sec:adjust-label-items}).}
%
% \item As long as the tags are not nested \programname{sed} or \programname{perl}
% extract the information gathered by~|typoginspect|, for example:
@@ -1338,13 +1664,20 @@ end
%
% \item If more trace information is needed just add \cs{tracing\dots} calls right after
% \code{\string\begin\{typoginspect\}}
-% or~\code{\string\begin\{typoginspectpar\}}.\specialsectionendhere
+% or~\code{\string\begin\{typoginspectpar\}}.
+%
+% \item As the overhead of \cs{typoginspect} is relatively low, hairy parts of a document can
+% permanently be furnished with them, for example, the Index.
+%
+% \item Any labeled part can treat their ids to \meta{id}. Think of \cs{caption}s or any
+% theorem-like environment and their associated, unique \cs{label}s.\specialsectionendhere
% \end{itemize}
% \end{tips}
%
%
% \phantomsection
-% \paragraph{Investigating the badness of a paragraph.}\label{sec:investigating-paragraph-badness}\index{paragraph>badness}
+% \paragraph{Investigating the badness of a paragraph.}\label{sec:investigating-paragraph-badness}
+% \index{paragraph>badness|userman}
%
% It is generally unnecessary to determine the \emph{exact} classification of a paragraph's
% badness~\cite[p.~97n]{knuth:1986}, though the curious user can switch on logging of
@@ -1386,9 +1719,9 @@ end
% \begin{enumerate}[beginpenalty=10000, nosep]
% \item The shortfall~\sample{s} and
% \item glue~\sample{a} or~\sample{g}.\footnote{The author is unaware of any descriptions
-% of \code{s}, \code{a}, or~\code{g}. The interested reader is referred to the source
-% code, e.\,g., \filesystem{pdftex.web}; search for \code{print("\textvisiblespace s=")}.
-% In the weaved documentation the first relevant section is~\S1851.}
+% of \sample{s}, \sample{a}, or~\sample{g} and the interested reader is referred to the
+% source code, e.\,g., \filesystem{pdftex.web}; search for \code{print("\textvisiblespace
+% s=")}. In the weaved documentation the first relevant section is~\S1851.}
% \end{enumerate}
% \item The best\footnote{\singlequotes{Best} means the minimum-demerits path in the graph of
% the feasible breakpoints, which has been constructed for the paragraph.} way to get
@@ -1404,13 +1737,13 @@ end
% as parenthesized values (units are thousandths of the current font's~em) like, e.\,g.,
%
% \begin{codeexample}
-% \textbackslash T1/erewhon-LF/m/n/9/@/@ (-13) \dots
+% \textbackslash T1/erewhon-LF/m/n/9/@/@ (-13) \dots
% \end{codeexample}
%
% or
%
% \begin{codeexample}
-% \textbackslash T1/erewhon-LF/m/n/9/@/@/10ls (+7) \dots
+% \textbackslash T1/erewhon-LF/m/n/9/@/@/10ls (+7) \dots
% \end{codeexample}
%
% An \sample{ls} appended to the font name specification indicates that
@@ -1419,7 +1752,9 @@ end
% \end{note}
%
%
-% \paragraph{Investigating page-breaks.}\index{page break}
+% \phantomsection
+% \paragraph{Investigating page-breaks.}
+% \index{page break|userman}
%
% Use \code{\cs{tracingpages}=1} or the \hyperref[syn:typoginspect]{typoginspect}~environment
% to switch on tracing of \TeX's page-break
@@ -1486,7 +1821,7 @@ end
%
%
% \subsection{Hyphenation}\label{sec:latex-hyphenation}
-% \index{hyphenation}
+% \index{hyphenation|userman}
%
% \TeX's and thus \LaTeX's hyphenation algorithm is highly sophisticated, yet the document
% author sometimes lacks convenient macros to solve seemingly trivial typographic tasks. For
@@ -1500,8 +1835,8 @@ end
% \cs{allowhyphenation}
% \end{synopsis}
%
-% Macro~\cs{allowhyphenation}\index{hyphenation>re-enable automatic} re-enables automatic
-% hyphenation after \TeX{} has turned it off, for example, in the innocuous case of a
+% Macro~\cs{allowhyphenation}\index{hyphenation>re-enable automatic|userman} re-enables
+% automatic hyphenation after \TeX{} has turned it off, for example, in the innocuous case of a
% hyphenated compound.
%
% The admittedly simple rules when \TeX{} auto-hyphenates and when not give rise to so many
@@ -1636,7 +1971,7 @@ end
% Whenever using \cs{-}, the short-hand form of \cs{discretionary\{-\}\{\}\{\}}, authors
% writing in a foreign language should reconsider whether it really beats \cs{hyphenation} or
% \cs{babelhyphenation}\footnote{\cs{babelhyphenation} is the multi-lingual extension of \TeX's
-% \cs{hyphenation} and it is defined in package~\packagename{babel}~\cite{package:babel}}. in
+% \cs{hyphenation} and it is defined in package~\packagename{babel}~\cite{package:babel}.} in
% the particular situation. However, sometimes \cs{-} actually \emph{is} the way to go.
%
% Let us assume we mark up proper names with
@@ -1662,6 +1997,12 @@ end
% which are impossible to encode with \cs{hyphenation} or~\cs{babelhyphenation} as these expect
% only letters and dashes as their arguments with spaces separating the words.
%
+% \index{hyphenation>first word|userman}
+% \index{hyphenation>hskip=\cs{hskip}|userman}
+% \TeX{} never hyphenates the initial word in a paragraph and \cs{allowhyphenation} cannot help
+% in this case. Start the paragraph with \cs{hskip~0pt} to enable hyphenation even for the
+% first word.
+%
% \begin{tip}[Typewriter Fonts]
% Sometimes it is desired to get a hyphenatable typewriter font. \LaTeX{} suppresses any
% hyphenation for fonts in \cs{ttfamily} by un-defining their \cs{hyphenchar}s. If these are
@@ -1686,8 +2027,8 @@ end
% \cs{breakpoint*}
% \end{synopsis}
%
-% The starred form inserts an empty discretionary,\index{hyphenation>empty discretionary} which
-% disables automatic hyphenation. The unstarred form inserts an empty discretionary and
+% The starred form inserts an empty discretionary,\index{hyphenation>empty discretionary|userman}
+% which disables automatic hyphenation. The unstarred form inserts an empty discretionary and
% immediately re-enables automatic hyphenation.
%
% The difference between \cs{breakpoint} and the \LaTeX{} macro~\cs{allowbreak} is not only
@@ -1729,7 +2070,7 @@ end
%
%
% \subsection{Disable\kernedslash Break Ligatures}\label{sec:break-ligatures}
-% \index{ligature}
+% \index{ligature|userman}
%
% \DescribeMacro{\nolig*}
% Break a ligature without introducing a hyphenation opportunity.
@@ -1739,8 +2080,8 @@ end
% \end{synopsis}
%
% Inserting \cs{nolig*} disables a ligature at the given point by a kern. Set the size of the
-% kern\index{kerning>ligature} with \hyperref[item:ligaturekern]{|ligaturekern|} or override
-% this value with \meta{kerning} as thousandths of the current font's~em.
+% kern\index{kerning>ligature|userman} with \hyperref[item:ligaturekern]{\code{ligaturekern}} or
+% override this value with \meta{kerning} as thousandths of the current font's~em.
%
% \begin{usecases}
% \cs{nolig*} can be useful in headings, where additional hyphenation points are
@@ -1762,12 +2103,12 @@ end
% introduces a hyphenation opportunity with
% penalty~\hyperref[item:breakpenalty]{|breakpenalty|}.
%
-% \begin{important}[\packagename{hyperref} bookmarks]\index{hyperref=\packagename{hyperref} (package)}
+% \begin{important}[\packagename{hyperref} bookmarks]\index{hyperref=\packagename{hyperref} (package)|userman}
% If a \cs{nolig} --~whether starred or un-starred~-- occurs in an argument that is processed
% with package~\packagename{hyperref} for inclusion into the document's
-% \acronym{PDF}-bookmarks\index{PDF=\acronym{PDF}}\index{bookmark} an additional argument is
-% necessary to parse the macro. This argument either is \cs{relax} or~the empty
-% group~(\code{\{\}}).
+% \acronym{PDF}-bookmarks\index{PDF=\acronym{PDF}|userman}\index{bookmark|userman} an
+% additional argument is necessary to parse the macro. This argument either is \cs{relax}
+% or~the empty group~(\code{\{\}}).
%
% \begin{synopsis}
% \begin{tabbing}
@@ -1944,14 +2285,14 @@ end
%
%
% \subsection{Apply Extra Kerning}\label{sec:extra-kerning}
-% \index{kerning>extra}
+% \index{kerning>extra|userman}
%
% Package \packagename{typog} supplies two sets of macros to kern some of the punctuation
% symbols. One is for forward slashes the other, more extensive one, for hyphens.
%
%
% \subsubsection{Slash}\label{sec:slash-with-kern}
-% \index{kerning>forward slash}
+% \index{kerning>forward slash|userman}
%
% \DescribeMacro{\kernedslash}
% \DescribeMacro{\kernedslash*}
@@ -1980,7 +2321,7 @@ end
%
%
% \subsubsection{Hyphen}\label{sec:hyphen-with-kern}
-% \index{kerning>hyphen}
+% \index{kerning>hyphen|userman}
%
% \DescribeMacro{\kernedhyphen}
% \DescribeMacro{\kernedhyphen*}
@@ -2027,7 +2368,7 @@ end
%
%
% \subsection{Raise Selected Characters}\label{sec:raise-characters}
-% \index{raised character}
+% \index{raised character|userman}
%
% Usually all hyphens and dashes of a font are designed to join lowercase letters. This holds
% also true for most of our \cs{labelitem}\meta{N} markers, bullets, stars, and even fancy
@@ -2036,10 +2377,10 @@ end
% arises if |itemize|~list markers precede an uppercase letter, a lining numeral, or a big
% mathematical operator.
%
-% We introduce a set of macros for the most common cases that allow typsetting these characters
-% at a user definable, adjusted height above the baseline. Users can base their own
-% definitions of raised characters on their associated dimensions.\footnote{Also compare with
-% Ex.~12 in Ref.~\citenum{wermuth:2023} for an attempt to automate vertical alignment.}
+% We introduce a set of macros for the most common cases that typeset these characters at a
+% user definable, adjusted height above the baseline. Users can base their own definitions of
+% raised characters on their associated dimensions.\footnote{Also compare with Ex.~12 in
+% Ref.~\citenum{wermuth:2023} for an attempt to automate vertical alignment.}
%
% \begin{caution}
% The height adjustment disables a font's built-in kerning.
@@ -2051,7 +2392,7 @@ end
%
%
% \subsubsection{Capital Hyphen}\label{sec:capital-hyphen}
-% \index{raised character>hyphen}
+% \index{raised character>hyphen|userman}
%
% \DescribeMacro{\capitalhyphen}
% \DescribeMacro{\capitalhyphen*}
@@ -2081,7 +2422,7 @@ end
%
%
% \subsubsection{Capital Dash}\label{sec:capital-dash}
-% \index{raised character>en-dash}
+% \index{raised character>en-dash|userman}
%
% \DescribeMacro{\capitalendash}
% \DescribeMacro{\capitalendash*}
@@ -2127,7 +2468,7 @@ end
%
%
% \subsubsection{Number Dash (Figure Dash)}\label{sec:number-dash}
-% \index{raised character>number dash}
+% \index{raised character>number dash|userman}
%
% \DescribeMacro{\figuredash}
% \DescribeMacro{\figuredash*}
@@ -2152,49 +2493,63 @@ end
% The actual amount the en-dash gets raised in \cs{figuredash} is determined by
% \hyperref[item:raisefiguredash]{|raisefiguredash|}.
%
-% Values of .05em to .1em are typical for fonts that need this kind of correction and~.1em is a
-% good starting point. \Cref{tab:raisefiguredash} summarizes some findings.
+% Values of .05\,em to .1\,em are typical for fonts that need this kind of correction
+% and~.1\,em is a good starting point. \Cref{tab:raisefiguredash} summarizes some findings.
%
% \begin{table}
% \centering
% \caption[Suggested raise amounts for \cs{figuredash}]%
-% {Suggested values for raising the en-dash between lining numerals of some selected
-% fonts.}
+% {Suggested values for raising \cs{figuredash}, which actually is an en-dash,
+% between lining numerals of some selected fonts in multiples of~1\,em.}
% \label{tab:raisefiguredash}
%
+% \newcommand*{\fbbmark}{\tablenotemark{\tablenotesymbol{1}}}
+%
% \begin{tabfigures}
-% \begin{tabular}{@{}l>{\RaggedRight}p{20em}@{}}
+% \begin{tabularx}{\linewidth}{@{}>{\RaggedRight}Xl@{}}
% \toprule
-% Raise & Font Name \\
-% em & \\
+% Font & Raise \\
% \midrule
-% 0 & Alegreya\index{font>Alegreya}, Arvo\index{font>Arvo},
-% Bitter\index{font>Bitter}, Clara\index{font>Clara},
-% \acronym{EB}~Garamond\index{font>EB Garamond=\acronym{EB} Garamond},
-% Gentium\index{font>Gentium},
-% Ibarra Real Nova\index{font>Ibarra Real Nova},
-% \acronym{Inria}~Serif\index{font>Inria Serif=\acronym{Inria} Serif},
-% Libertine\index{font>Libertine}, Libertinus\index{font>Libertinus},
-% Merriweather\index{font>Merriweather},
-% \acronym{PT}~Serif\index{font>PT Serif=\acronym{PT} Serif},
-% Roboto Slab\index{font>Roboto Slab}, Spectral\index{font>Spectral},
-% \acronym{STIX}\index{font>STIX=\acronym{STIX}}, and many more \\
-% .05 & fbb\index{font>fbb}, Source Serif Pro\index{font>Source Serif Pro} \\
-% .0667 & Libre Baskerville\index{font>Libre Baskerville},
-% Crimson Pro\index{font>Crimson Pro},
-% Erewhon\index{font>Erewhon}, Droid Serif\index{font>Droid Serif} \\
-% .1 & \acronym{GFS}~Artemisia\index{font>GFS Artemisia=\acronym{GFS} Artemisia},
-% Libre Caslon\index{font>Libre Caslon},
-% Coelacanth\index{font>Coelacanth}, Crimson Pro\index{font>Crimson Pro},
-% Crimson Text\index{font>Crimson Text},
-% \TeX{} Gyre~Pagella\index{font>TeX Gyre Pagella=\TeX{} Gyre Pagella},
-% Quattrocento\index{font>},
-% \acronym{TX}~Fonts\index{font>TX Fonts=\acronym{TX} Fonts},
-% \acronym{ADF}~Venturis\index{font>ADF Venturis=\acronym{ADF} Venturis},
-% and many more \\
+% Alegreya\detoxindex{font>typeface>Alegreya|userman}, Arvo\detoxindex{font>typeface>Arvo|userman},
+% Bitter\detoxindex{font>typeface>Bitter|userman}, Clara\detoxindex{font>typeface>Clara|userman},
+% \acronym{EB}~Garamond\detoxindex{font>typeface>EB Garamond=\acronym{EB} Garamond|userman},
+% Gentium\detoxindex{font>typeface>Gentium|userman},
+% Ibarra Real Nova\detoxindex{font>typeface>Ibarra Real Nova|userman},
+% \acronym{Inria}~Serif\detoxindex{font>typeface>Inria Serif=\acronym{Inria} Serif|userman},
+% Libertine\detoxindex{font>typeface>Libertine|userman},
+% Libertinus\detoxindex{font>typeface>Libertinus Serif|userman},
+% Merriweather\detoxindex{font>typeface>Merriweather|userman},
+% \acronym{PT}~Serif\detoxindex{font>typeface>PT Serif=\acronym{PT} Serif|userman},
+% Roboto Slab\detoxindex{font>typeface>Roboto Slab|userman},
+% Spectral\detoxindex{font>typeface>Spectral|userman},
+% \acronym{STIX}\detoxindex{font>typeface>STIX=\acronym{STIX}|userman}, and many more &
+% .0 \\
+% fbb\fbbmark\detoxindex{font>typeface>fbb|userman},
+% Source Serif Pro\detoxindex{font>typeface>Source Serif Pro|userman} &
+% .05 \\
+% Libre Baskerville\detoxindex{font>typeface>Libre Baskerville|userman},
+% Crimson Pro\detoxindex{font>typeface>Crimson Pro|userman},
+% Erewhon\detoxindex{font>typeface>Erewhon|userman},
+% Droid Serif\detoxindex{font>typeface>Droid Serif|userman} &
+% .0667 \\
+% \acronym{GFS}~Artemisia\detoxindex{font>typeface>GFS Artemisia=\acronym{GFS} Artemisia|userman},
+% Libre Caslon\detoxindex{font>typeface>Libre Caslon|userman},
+% Coelacanth\detoxindex{font>typeface>Coelacanth|userman},
+% Crimson Pro\detoxindex{font>typeface>Crimson Pro|userman},
+% Crimson Text\detoxindex{font>typeface>Crimson Text|userman},
+% \TeX{} Gyre~Pagella\detoxindex{font>typeface>TeX Gyre Pagella=\TeX{} Gyre Pagella|userman},
+% Quattrocento\detoxindex{font>typeface>Quattrocento|userman},
+% \acronym{TX}~Fonts\detoxindex{font>typeface>TX Fonts=\acronym{TX} Fonts|userman},
+% \acronym{ADF}~Venturis\detoxindex{font>typeface>ADF Venturis=\acronym{ADF} Venturis|userman},
+% and many more &
+% .1 \\
% \bottomrule
-% \end{tabular}
+% \end{tabularx}
% \end{tabfigures}
+%
+% \begin{tablenotes}
+% \fbbmark\enspace Free Bembo.
+% \end{tablenotes}
% \end{table}
%
% Other macros may be redefined with \cs{figuredash} for a consistent appearance of the copy,
@@ -2210,7 +2565,7 @@ end
%
% \subsubsection[Multiplication Sign]%
% {Multiplication Sign -- Times~\sample{\texttimes}}\label{sec:mult-sign}
-% \index{raised character>multiplication sign}
+% \index{raised character>multiplication sign|userman}
%
% \DescribeMacro{\capitaltimes}
% The \cs{capitaltimes}~macro is a variation of the
@@ -2232,17 +2587,19 @@ end
%
%
% \subsubsection{Guillemets}\label{sec:guillemets}
-% \index{raised character>guillemets}
+% \index{raised character>guillemets|userman}
%
% Another possible typographic problem this package addresses is that both sets --~single and
% double quotes~-- of guillemets may suffer from a too small distance to the baseline.
%
% For the implementation \packagename{typog} relies on the T1\footnote{Font
-% encoding~T1\index{font>encoding} can be forced via \cs{usepackage}|[T1]\{fontenc\}| in the
-% document preamble.}~font encoding not on package~\packagename{babel}.
+% encoding~T1\detoxindex{font>encoding|userman} can be forced via
+% \cs{usepackage}|[T1]\{fontenc\}| in the document preamble.}~font encoding not on
+% package~\packagename{babel}.
%
%
% \paragraph{Lowercase Versions.}
+%
% \DescribeMacro{\singleguillemetleft}
% \DescribeMacro{\singleguillemetright}
% \DescribeMacro{\doubleguillemetleft}
@@ -2280,33 +2637,34 @@ end
% or lining numerals is \cs{Singleguillemetleft} and \cs{Singleguillemetright} and
% \cs{Doubleguillemetleft} and \cs{doubleguillemetright}. Mnemonic: These macros start with an
% uppercase letter. Their height above the baseline is adjusted with
-% \hyperref[item:raisecapitalguillemets]{|raisecapitalguillemets|}. Values of .025em to .075em
-% are typical for fonts that need this kind of correction. \Cref{tab:raiseguillemets}
+% \hyperref[item:raisecapitalguillemets]{|raisecapitalguillemets|}. Values of .025\,em to
+% .075\,em are typical for fonts that need this kind of correction. \Cref{tab:raiseguillemets}
% summarizes some findings.
%
% \begin{table}
% \centering
% \caption[Suggested raise amounts for guillemets]%
-% {Suggested values for raising guillemets of some selected fonts.}
+% {Suggested values for raising guillemets of some selected fonts in multiples
+% of~1\,em.}
% \label{tab:raiseguillemets}
%
% \begin{tabfigures}
-% \begin{tabular}{@{}cc>{\RaggedRight}p{20em}@{}}
+% \def~{\hphantom{0}}
+% \begin{tabular}{@{}>{\RaggedRight}p{.5\textwidth}cc@{}}
% \toprule
-% \multicolumn{2}{@{}c}{Raise} & Font Name \\
-% Lowercase & Uppercase & \\
-% em & em & \\
+% Font & Uppercase & Lowercase \\
% \midrule
-% 0 & .05\hphantom{00} &
-% \acronym{EB}~Garamond\index{font>EB Garamond=\acronym{EB} Garamond},
-% Libertinus\index{font>Libertinus},
-% Merriweather\index{font>Merriweather}, and many more \\
-% .025 & .05\hphantom{00} & Gentium\index{font>Gentium} \\
-% .04\hphantom{0} & .0667 &
-% \acronym{ADF}~Baskervald\index{font>ADF Baskervald=\acronym{ADF} Baskervald} \\
-% .05\hphantom{0} & .0625 &
-% \acronym{GFS}~Artemisia\index{font>GFS Artemisia=\acronym{GFS} Artemisia},
-% \acronym{GFS}~Didot\index{font>GFS Didot=\acronym{GFS} Didot} \\
+% \acronym{EB} Garamond\detoxindex{font>typeface>EB Garamond=\acronym{EB} Garamond|userman},
+% Libertinus\index{font>typeface>Libertinus Serif|userman},
+% Merriweather\index{font>typeface>Merriweather|userman}, and many more &
+% .05~~ & .0~~ \\
+% Gentium\index{font>typeface>Gentium|userman} &
+% .05~~ & .025 \\
+% \acronym{GFS} Artemisia\detoxindex{font>typeface>GFS Artemisia=\acronym{GFS} Artemisia|userman},
+% \acronym{GFS} Didot\detoxindex{font>typeface>GFS Didot=\acronym{GFS} Didot|userman} &
+% .0625 & .05~ \\
+% \acronym{ADF} Baskervald\index{font>typeface>ADF Baskervald=\acronym{ADF} Baskervald|userman} &
+% .0667 & .04~ \\
% \bottomrule
% \end{tabular}
% \end{tabfigures}
@@ -2322,7 +2680,8 @@ end
% \cs{let}\cs{sq}=\cs{singlequotes}
% \end{codeexample}
%
-% and similar definitions for \cs{Singlequotes}, \cs{doublequotes}, and~\cs{Doublequotes}.
+% \noindent
+% and similar definitions for \cs{Singlequotes}, \cs{doublequotes}, and \cs{Doublequotes}.
%
% Users working according to the French typesetting conventions will want to add extra
% spacing between the guillemets and the macro argument already in these macros.
@@ -2334,7 +2693,7 @@ end
%
%
% \paragraph{Interaction with package~\packagename{csquotes}.}
-% \index{csquotes=\packagename{csquotes} (package)}
+% \index{csquotes=\packagename{csquotes} (package)|userman}
%
% The users of package~\packagename{csquotes}
% can hook up the guillemets as defined by \packagename{typog}
@@ -2367,21 +2726,374 @@ end
% \end{futuredirection}
%
%
+% \subsection[Vertically Adjust Label Items]
+% {Vertically Adjust Label Items of
+% Environment \code{itemize}}\label{sec:adjust-label-items}
+% \index{label items|userman}
+%
+% \begin{whittyquote}
+% Perfection of planned layout \\
+% is archieved only by institutions \\
+% on the point of collapse. \\
+% \capitalemdash*~\propername{Cyril Northcote Parkinson}
+% \end{whittyquote}
+%
+% \noindent
+% The symbols that \LaTeX{} uses to distinguish the items of |itemize|~lists do not always
+% align well in the vertical direction with the following text. Sometimes the label is too
+% low, especially if followed by an uppercase (initial) letter. In rare occasions the label is
+% placed too far above the baseline. If any label has been taken from a math-font vertical
+% alignment with the text font is almost purely accidental.\footnote{The exception being
+% mathematics typeset as text via package~\packagename{mathastext}~\cite{package:mathastext}.}
+%
+% \hangindent=2\parindent
+% \hangafter=-3
+% \noindent
+% \DescribeMacro{\uppercaseadjustlabelitems}
+% \DescribeMacro{\lowercaseadjustlabelitems}
+% \DescribeMacro{\noadjustlabelitems}
+% \sinceversion{All three since v0.4}
+% Package~\packagename{typog} lets the user vertically align the \code{itemize}~labels for
+% subsequent uppercase or lowercase letters, where the designations~\singlequotes{uppercase}
+% and \singlequotes{lowercase} are just names for two four-tuples of lengths (technically:
+% |dimen|s) to shift the labels up or down.
+%
+% \begin{synopsis}
+% \label{syn:lowercaseadjustlabelitems}
+% \label{syn:noadjustlabelitems}
+% \label{syn:uppercaseadjustlabelitems}
+% \cs{uppercaseadjustlabelitems}\marg{levels-to-adjust} \\
+% \cs{lowercaseadjustlabelitems}\marg{levels-to-adjust} \\
+% \cs{noadjustlabelitems}\marg{levels-to-adjust}
+% \end{synopsis}
+%
+% Apply uppercase adjustment, lowercase adjustment or no adjustment to the labels in
+% |itemize|~environments at the \meta{levels-to-adjust}. The adjustment values themselves,
+% this is the vertical shifts are configured with
+% options~\hyperref[item:uppercaselabelitemadjustments]{\code{uppercaselabelitemadjustments}}
+% and~\hyperref[item:lowercaselabelitemadjustments]{\code{lowercaselabelitemadjustments}}.
+% They are doubly font dependent: on the one hand the font where the label itself comes from
+% and on the other hand the font of the copy.
+%
+% The argument \meta{levels-to-adjust} is a --~possibly empty~-- comma separated list of the
+% levels the respective adjustments are to be applied to. The levels themselves are given as
+% \emph{decimal} numbers, this is, 1, 2, 3, 4 or the special value~\sample{*} which stands for
+% all four levels. An empty argument list also has a special meaning. Used within any
+% \code{itemize}~environment it automatically applies the adjustment to exactly this level.
+%
+% \begin{example}
+% \begin{typogsetup}{uppercaselabelitemadjustments={.1em}}
+% With the flexible syntax the following settings are possible.
+%
+% \renewcommand*{\labelitemi}{{\small$\rhd$}}%
+% \begin{itemize}\uppercaseadjustlabelitems{}
+% \item Correct all |itemize| labels for uppercase letters.
+%
+% \begin{codeexample}
+% \cs{uppercaseadjustlabelitems}\{*\}
+% \end{codeexample}
+%
+% \item Adjust nesting levels~1, 2, and~3 for uppercase letters and level~4 for lowercase.
+%
+% \begin{codeexample}
+% \cs{lowercaseadjustlabelitems}\{4\} \\
+% \cs{uppercaseadjustlabelitems}\{2,3,1\}
+% \end{codeexample}
+%
+% \item Within an |itemize|~environment just turn off any correction for this level whatever
+% it may be.
+%
+% \begin{codeexample}
+% \cs{begin}\{itemize\} \\
+% \cs{noadjustlabelitems}\{\} \\
+% \cs{item} \dots \\
+% \cs{end}\{itemize\}
+% \end{codeexample}
+%
+% \item Override \cs{labelitemi} with a right-pointing triangle and adjust its vertical
+% position inside of a \code{typogsetup}~environment.
+%
+% \begin{codeexample}
+% \cs{begin}\=\{typogsetup\} \\
+% \>\{uppercaselabelitemadjustments=\{.1em\}\} \\
+% 12\=34567890 \kill
+% \>\cs{renewcommand*}\{\cs{labelitemi}\}\{\{\cs{small}\$\cs{rhd}\$\}\} \\
+% \>\cs{begin}\{itemize\} \\
+% \>\cs{uppercaseadjustlabelitems}\{\} \\
+% \>\cs{item} \dots \\
+% \>\cs{end}\{itemize\} \\
+% \cs{end}\{typogsetup\}
+% \end{codeexample}
+% \end{itemize}
+%
+% The observant reader will have noticed that the itemized list in this emphasized section
+% uses the code of the last example.
+% \end{typogsetup}
+% \end{example}
+%
+%
+% \paragraph{Setup.}
+%
+% To assist the user in finding the desired adjustments of the labels of \packagename{typog}
+% provides macros that help setting up
+% \hyperref[item:lowercaselabelitemadjustments]{\code{lowercaselabelitemadjustments}} and
+% \hyperref[item:uppercaselabelitemadjustments]{\code{uppercaselabelitemadjustments}}. Their
+% intended uses are in the draft phase of a document or in non-printed sections of the text.
+%
+% The macros assume a \singlequotes{correct} height that they derive from the measured height
+% of a sample text scaled by a user-defined factor, which defaults
+% to~\nativetextfraction{1}{2}.\footnote{The default factor of~.5 hearkens back to
+% \propername{Strizver's} suggestion that \doublequotes{[b]ullets should be centered on either
+% the cap~height or x-height of the neighboring text, \dots.}~\cite[p.~220]{strizver:2014}.}
+% The then correct height gets indicated by a thin horizontal line parallel to the baseline.
+% Thus, at sufficiently high magnifications it is possible to judge whether a label gets
+% typeset too high or too low with respect to this reference line.
+%
+% \begin{note}
+% The macros use the actual height of a given sample~text. So, a lowercase~sample should not
+% contain any letters with ascenders.
+%
+% Swashes whether upper- or lowercase always need special attention.
+% \end{note}
+%
+% \DescribeMacro{\typogadjuststairs}
+% \sinceversion{Since v0.4}
+% To get a quick overview how the four \code{itemize}~labels align vertically
+% \cs{typogadjuststairs} draws them at user-defined steps, typically
+% \nativetextfraction{1}{4}\,pt, \nativetextfraction{1}{3}\,pt, or
+% \nativetextfraction{1}{2}\,pt. It ignores any existing adjustments and in that way can be
+% utilized as a first configuration step or, for a small \meta{step-size} and a high
+% \meta{number-of-steps}, for an easy refinement.
+%
+% \begin{synopsis}
+% \begin{tabbing}
+% \label{syn:typogadjuststairs}
+% \cs{typogadjuststairs}\=[\meta{scale-factor}=.5] \\
+% \>\marg{step-size}\marg{number-of-steps} \\
+% \>\marg{sample}
+% \end{tabbing}
+% \end{synopsis}
+%
+% Generate stairs of \meta{number-of-steps} vertically shifted label items; use the next odd
+% number, if \meta{number-of-steps} is even. Draw a reference hairline at \meta{scale-factor}
+% times the height of \meta{sample}, where \meta{scale-factor} defaults to~.5. The stairs
+% start at a vertical shift of
+% \begin{gather*}
+% -\frac{\text{\meta{number-of-steps}} - 1}{2} \times \text{\meta{step-size}} \\
+% \intertext{and repeat up}
+% \frac{\text{\meta{number-of-steps}} - 1}{2} \times \text{\meta{step-size}}.
+% \end{gather*}
+%
+% \noindent
+% The central step --~which is always surrounded by a bit more space~-- shows the neutral
+% alignment, this is~0\,pt. \cs{typogadjuststairs} never prints the contents of \meta{sample}.
+%
+% \begin{example}
+% Play ball!
+%
+% \begin{center}
+% \typogadjuststairs{.25pt}{9}{ABC}
+% \end{center}
+%
+% This is the result of \code{\string\typogadjuststairs\{.25pt\}\{9\}\{ABC\}} with the
+% document's definitions of \cs{labelitem}\meta{N}. The fifth label~item in each line is the
+% uncorrected one.
+% \end{example}
+%
+% \hangindent=2\parindent
+% \hangafter=-3
+% \noindent
+% \DescribeMacro{\typoguppercaseadjustcheck}
+% \DescribeMacro{\typoglowercaseadjustcheck}
+% \sinceversion{Both since v0.4}
+% For a quick and easy check how the four label items vertically align \emph{as configured} use
+% \code{\string\typoguppercaseadjustcheck} and \code{\string\typoglowercaseadjustcheck}.
+% Experienced users with a keen eye for type can apply these macros even in the initial setup.
+% An accurate determination of \code{uppercaselabelitemadjustments} and
+% \code{lowercaselabelitemadjustments} is preferably done at a high magnification (400\% to
+% 600\% on a 100\,dpi screen) with a representative sample of initial letters.
+%
+% \begin{synopsis}
+% \label{syn:typoguppercaseadjustcheck}
+% \label{syn:typoglowercaseadjustcheck}
+% \cs{typoguppercaseadjustcheck}[\meta{scale-factor}=.5]\marg{sample} \\
+% \cs{typoglowercaseadjustcheck}[\meta{scale-factor}=.5]\marg{sample}
+% \end{synopsis}
+%
+% Typeset all four label items adjusted for uppercase or for lowercase with an indicator line
+% at \meta{scale-factor} times the \meta{sample}'s actual height. The default
+% \meta{scale-factor} is~.5. Both macros refer to the currently configured values for the
+% uppercase or lowercase adjustments but they are independent of any settings done with
+% \cs{uppercaseadjustlabelitems}, \cs{lowercaseadjustlabelitems}, or \cs{noadjustlabelitems}.
+% Again, \meta{sample} does not get printed.
+%
+% \begin{example}
+% Uppercase check with \code{\string\typoguppercaseadjustcheck\{ABCXYZ\}}:
+%
+% \centering
+% ABGH\typoguppercaseadjustcheck{ABCXYZ}QWYZ,\enspace
+% 0123\typoguppercaseadjustcheck{ABCXYZ}4567
+%
+% \justifying
+% \noindent
+% and similarly for lowercase: \code{\string\typoglowercaseadjustcheck\{acexyz\}}:
+%
+% \centering
+% ace\typoglowercaseadjustcheck{acexyz}mno,\enspace
+% bdf\typoglowercaseadjustcheck{acexyz}gjy,\enspace
+% {\proportionaloldstylefigures 0123\typoglowercaseadjustcheck{acexyz}4567,}
+%
+% \justifying
+% \noindent
+% where we have bracketed the macro calls with selected uppercase and lowercase letters, or
+% suitable figures.
+% \end{example}
+%
+% In \Cref{tab:labelitemadjustvalues} on \cpageref{tab:labelitemadjustvalues} we collected some
+% suggestions for adjustment values in the \emph{default} case when the label items are not
+% redefined by the user and expand like
+%
+% \begin{center}
+% \def\arraystretch{1}
+% \begin{tabular}{@{}l@{\enspace\(\vdash\)\enspace}l@{}}
+% \cs{labelitemi} & \dumpmacro{\labelitemi}, \\
+% \cs{labelitemii} & \dumpmacro{\labelitemii}, \\
+% \cs{labelitemiii} & \dumpmacro{\labelitemiii}, and \\
+% \cs{labelitemiv} & \dumpmacro{\labelitemiv}.
+% \end{tabular}
+% \end{center}
+%
+% \noindent
+% They display as \sample{\labelitemi}, \sample{\labelitemii}, \sample{\labelitemiii}, and
+% \sample{\labelitemiv}, respectively.
+%
+% \begin{table}
+% \centering
+% \caption[Label item adjustment suggestions]%
+% {Some suggested values for the vertical adjustments of label items. The table
+% assumes that the default definitions (of class~\packagename{article}) for
+% \cs{labelitem}\meta{N} are in effect. The \code{itemize}-list levels~\code{i},
+% \code{ii}, \code{iii} and~\code{iv} are referred to with \(N = 1, 2, 3, 4\). All
+% lengths are given as printer points~(pt) and refer to a document font size of
+% \formatdimen*{10pt}.}
+% \label{tab:labelitemadjustvalues}
+%
+% \newcommand*{\etbbmark}{\tablenotemark{\tablenotesymbol{1}}}
+% \newcommand*{\xchartermark}{\tablenotemark{\tablenotesymbol{2}}}
+% \newcommand*{\kpmark}{\tablenotemark{\tablenotesymbol{3}}}
+% \newcommand*{\palladiomark}{\tablenotemark{\tablenotesymbol{4}}}
+% \newcommand*{\utopiamark}{\tablenotemark{\tablenotesymbol{5}}}
+%
+% \begin{tabfigures}
+% \def~{\hphantom{0}}
+% \def\mc#1{#1~~~}
+% \noindent
+% \makebox[0pt]{%
+% \begin{tabular}{@{}l*{4}{r}@{\qquad}*{4}{r}@{}}
+% \toprule
+% Font Name &
+% \multicolumn{4}{c}{Uppercase Adjustments} & \multicolumn{4}{c@{}}{Lowercase Adjustments} \\
+% {} &
+% \mc{1} & \mc{2} & \mc{3} & \mc{4} &
+% \mc{1} & \mc{2} & \mc{3} & \mc{4} \\
+% \midrule
+% \acronym{ADF} Accanthis\detoxindex{font>typeface>ADF Venturis=\acronym{ADF} Accanthis|userman} &
+% .5~~ & 1.5~~ & \textminus1.5~~ & 1.125 &
+% \textminus.75~ & .25~ & \textminus2.75~ & \textminus.125 \\
+% \acronym{ADF} Venturis\detoxindex{font>typeface>ADF Venturis=\acronym{ADF} Venturis|userman} &
+% .0~~ & 1.0~~ & .75~ & 1.0~~ &
+% \textminus.75~ & .0~~ & \textminus.25~ & .0~~ \\
+% \acronym{CM} Roman\detoxindex{font>typeface>CM Roman=\acronym{CM} Roman|userman} &
+% 1.0~~ & .75~ & 1.0~~ & 1.0~~ &
+% \textminus.25~ & \textminus.5~~ & \textminus.25~ & \textminus.25~ \\
+% Domitian\detoxindex{font>typeface>Domitian|userman} &
+% .25~ & 1.0~~ & .75~ & 1.0~~ &
+% \textminus1.0~~ & .0~~ & \textminus.325 & \textminus.25~ \\
+% Cochineal\detoxindex{font>typeface>Cochineal|userman} &
+% 1.0~~ & 1.0~~ & 1.0~~ & 1.0~~ &
+% \textminus.125 & \textminus.125 & \textminus.125 & \textminus.125 \\
+% \acronym{EB} Garamond\detoxindex{font>typeface>EB Garamond=\acronym{EB} Garamond|userman} &
+% .0~~ & 1.25~ & \textminus.875 & 1.325 &
+% \textminus1.5~~ & .0~~ & \textminus2.0~~ & 0.125 \\
+% etbb\etbbmark\detoxindex{font>typeface>etbb|userman} &
+% .25~ & 1.0~~ & 1.125 & .5~~ &
+% \textminus1.0~~ & \textminus.0~~ & \textminus.0~~ & \textminus.5~~ \\
+% Extended Charter\xchartermark\detoxindex{font>typeface>Extended Charter|userman} &
+% \textminus.25~ & 1.0~~ & 1.75 & .125 &
+% \textminus1.125 & .0~~ & .875 & \textminus.875 \\
+% Gentium\detoxindex{font>typeface>Gentium|userman} &
+% .0~~ & .75~ & .0~~ & .0~~ &
+% \textminus.5~~ & \textminus.25~ & \textminus.75~ & \textminus1.0~~ \\
+% \acronym{GFS} Bodoni\detoxindex{font>typeface>GFS Bodoni=\acronym{GFS} Bodoni|userman} &
+% \textminus.25~ & .625 & 1.0~~ & 1.125 &
+% \textminus1.25~ & \textminus.625 & \textminus.5~~ & \textminus.25~ \\
+% \acronym{GFS} Didot\detoxindex{font>typeface>GFS Didot=\acronym{GFS} Didot|userman} &
+% \textminus1.5~~ & .75~ & 1.0~~ & 1.25~ &
+% \textminus2.75~ & \textminus.25~ & \textminus.25~ & .25~ \\
+% \acronym{IBM} Plex Serif\detoxindex{font>typeface>IBM Plex Serif=\acronym{IBM} Plex Serif|userman} &
+% .5~~ & .5~~ & \textminus1.325 & .5~~ &
+% \textminus.25~ & \textminus.25~ & \textminus2.25~ & \textminus.25~ \\
+% \acronym{KP} Serif\kpmark\detoxindex{font>typeface>KP Serif=\acronym{KP} Serif|userman} &
+% .0~~ & 1.0~~ & 1.25~ & .75~ &
+% \textminus1.0~~ & .0~~ & .0~~ & \textminus.5~~ \\
+% Libertinus Serif\detoxindex{font>typeface>Libertinus Serif|userman} &
+% 1.0~~ & .75~ & 1.125 & .75~ &
+% .0~~ & \textminus.325 & .0~~ & \textminus.25~ \\
+% \acronym{ML} Modern\detoxindex{font>typeface>ML Modern=\acronym{ML} Modern|userman} &
+% 1.25~ & .75~ & 1.0~~ & .125 &
+% .0~~ & \textminus.5~~ & \textminus.25~ & \textminus.125 \\
+% Source Serif Pro\detoxindex{font>typeface>Source Serif Pro|userman} &
+% .125 & .75~ & \textminus1.0~~ & .125 &
+% \textminus.75~ & .0~~ & \textminus2.0~~ & \textminus.75~ \\
+% Spectral\detoxindex{font>typeface>Spectral|userman} &
+% .625 & .625 & \textminus1.5~~ & .625 &
+% \textminus.25~ & \textminus.25~ & \textminus2.5~~ & \textminus.25~ \\
+% \acronym{STIX}\detoxindex{font>typeface>STIX=\acronym{STIX}|userman} &
+% 1.0~~ & 1.0~~ & .75~ & 1.0~~ &
+% .0~~ & .0~~ & .0~~ & .0~~ \\
+% \acronym{URW} Palladio\palladiomark\detoxindex{font>typeface>URW Palladio=\acronym{URW} Palladio|userman} &
+% .25~ & 1.125 & 1.0~~ & 1.0~~ &
+% \textminus1.0~~ & \textminus.125 & \textminus.125 & \textminus.125 \\
+% Utopia Regular\utopiamark\detoxindex{font>typeface>Utopia Regular|userman} &
+% .0~~ & 1.0~~ & .75~ & 1.0~~ &
+% \textminus.75~ & .0~~ & \textminus.25~ & .0~~ \\
+% \bottomrule
+% \end{tabular}}
+% \end{tabfigures}
+%
+% \begin{tablenotes}
+% \etbbmark\enspace \propername{Edward Tufte}'s Bembo in package~\packagename{ETbb}. Note
+% the two initial capital letters in the filename.
+%
+% \xchartermark\enspace Found in package \packagename{XCharter}. Again note the two
+% initial capitals in the filename.
+%
+% \kpmark\enspace In package \packagename{kpfonts}.
+%
+% \palladiomark\enspace Contained in package~\packagename{mathpazo}.
+%
+% \utopiamark\enspace Utopia is available through package~\packagename{fourier} or
+% package~\packagename{mathdesign}. In the latter case pass option~\code{adobe-utopia} to
+% the package.
+% \end{tablenotes}
+% \end{table}
+%
+%
% \subsection[Align Last Line]
% {Align Last Line of a Paragraph}\label{sec:align-last-line}
-% \index{paragraph>align last line}
+% \index{paragraph>align last line|userman}
%
% The usual algorithms of \LaTeX{} typeset the last line of a paragraph flush with the left
% margin unless |center|, |raggedleft| or |Centering|, |FlushRight|
% (package~\packagename{ragged2e}~\cite{package:ragged2e}) are in effect. For an instructive
% discussion consult Ch.~17, \doublequotes{Paragraph End}, of Ref.~\citenum{eijkhout:2007}.
-% The following environments allow to adjust the last lines of paragraphs in different ways.
+% The following environments adjust the last lines of paragraphs in different ways.
%
% \DescribeEnv{lastlineraggedleftpar}
% \DescribeEnv{lastlineflushrightpar}
-% The environment |lastlineraggedleftpar|\index{paragraph>align last line>flush right} adjusts
-% the various skips such that the last lines of the paragraphs gets typeset flush with the
-% right margin.
+% The environment \code{lastlineraggedleftpar}\index{paragraph>align last line>flush right|userman}
+% adjusts the various skips such that the last lines of the paragraphs gets typeset flush with
+% the right margin.
%
% \begin{synopsis}\label{syn:lastlineraggedleftpar}\label{syn:lastlineflushrightpar}
% \cs{begin}|{lastlineraggedleftpar}| \\
@@ -2393,8 +3105,9 @@ end
% The name |lastlineflushrightpar| is an alias for~\code{lastlineraggedleftpar}.
%
% \DescribeEnv{lastlinecenteredpar}
-% Center\index{paragraph>align last line>centered} the last lines of the paragraphs enclosed by
-% this environment.\footnote{Also compare the approach taken in Ref.~\citenum{wermuth:2018}.}
+% Center\index{paragraph>align last line>centered|userman} the last lines of the paragraphs
+% enclosed by this environment.\footnote{Also compare the approach taken in
+% Ref.~\citenum{wermuth:2018}.}
%
% \begin{synopsis}\label{syn:lastlinecenteredpar}
% \cs{begin}|{lastlinecenteredpar}| \\
@@ -2412,7 +3125,7 @@ end
% \needtocspace
% \subsection[Fill Last Line]
% {Fill Last Line of a Paragraph}\label{sec:fill-last-line}
-% \index{paragraph>fill last line}
+% \index{paragraph>fill last line|userman}
%
% The problem of when and how to \singlequotes{fill} the last line of a paragraph is quite
% intricate. We first define the problem then we proceed to general purpose functions and we
@@ -2421,7 +3134,7 @@ end
%
% \subsubsection{Problem Definition}
%
-% Depending on the value of \cs{parindent}, either zero or nonzero, there may be the desire to
+% Depending on the value of \cs{parindent}, either zero or nonzero, there may be the need to
% control the length of the last line of a paragraph.
%
% \iffalse
@@ -2562,7 +3275,7 @@ end
% \includegraphics{crooked-paragraphs-3.mps}
% \end{center}
% \end{minipage}\footnotetext{Package~\packagename{parskip} defines \cs{parskip}
-% as \mbox{6pt plus 2pt} for a base size of~10pt.}
+% as \mbox{6\,pt plus 2\,pt} for a base size of~10\,pt.}
%
% \medskip
% \begin{minipage}{\linewidth}
@@ -2576,7 +3289,7 @@ end
%
% The suggestions for the gap-width vary from two~em to twice the width of a
% \singlequotes{typical} \cs{parindent}\footnote{% For example, \LaTeX's class
-% \packagename{article} uses a \cs{parindent} of~25pt.} for the gap~\cite{carlisle:1996}.
+% \packagename{article} uses a \cs{parindent} of~25\,pt.} for the gap~\cite{carlisle:1996}.
% \end{enumerate}
%
% \begin{tip}
@@ -2598,9 +3311,10 @@ end
% them should have certain advantageous properties.
%
% \begin{itemize}
-% \item Technically, the paragraphs need to contain enough glue (see
-% e.\,g.~\cref{sec:sloppy-paragraphs}) to achieve a low badness such that the desired
-% paragraph end is deemed feasible by \TeX.
+% \item Technically, the paragraphs need to contain enough glue (see for example
+% \cref{sec:sloppy-paragraphs}) to achieve a low badness such that the desired paragraph
+% end is deemed feasible by \TeX.\shiftedmarginnote{This \code{itemize} list demonstrates
+% vertically adjusted label items (\cref{sec:adjust-label-items}).}
%
% \item Aesthetically, the paragraphs must be long enough to absorb the change in last-line
% fill level otherwise their gray-values visibly deviate from the
@@ -2618,18 +3332,21 @@ end
% \item End-of-paragraph intervention.\label{enum:end-of-paragraph-intervention}
%
% \begin{enumerate}[notopsep]
-% \item Tie~\sample{\texttt{\char126}}\label{enum:tie-last-words}\index{paragraph>fill last line>tie}
+% \item Tie~\sample{\texttt{\char126}}\label{enum:tie-last-words}
+% \index{paragraph>fill last line>tie|userman}
%
% Tie the last words.
%
% The problem with the tie may be a hyphenation of one of the words that participates in
% the tie. The next item avoids this disadvantage.
%
-% \item \cs{mbox}\label{enum:mbox-last-words}\index{paragraph>fill last line>mbox=\cs{mbox}}
+% \item \cs{mbox}\label{enum:mbox-last-words}
+% \index{paragraph>fill last line>mbox=\cs{mbox}|userman}
%
% Join the last words or inline equation at the end of the paragraph with an~\cs{mbox}.
%
-% \item \cs{linebreak}\label{enum:linebreak}\index{paragraph>fill last line>linebreak=\cs{linebreak}}
+% \item \cs{linebreak}\label{enum:linebreak}
+% \index{paragraph>fill last line>linebreak=\cs{linebreak}|userman}
%
% Add a \cs{linebreak} to the back part of the paragraph (approximately where the
% \cs{mbox} of item~\ref{enum:mbox-last-words} would start) in a way that the last line
@@ -2646,7 +3363,8 @@ end
% \item Uniform paragraph change.\label{enum:uniform-paragraph-change}
%
% \begin{enumerate}[notopsep]
-% \item Vary spacing.\label{enum:vary-spacing}\index{font>spacing}
+% \item Vary spacing.\label{enum:vary-spacing}
+% \index{font>spacing|userman}
%
% Modify the inter-word spacing, for example, with the macros introduced in
% \cref{sec:looser-tighter-spacing}.
@@ -2655,13 +3373,15 @@ end
% or~\hyperref[syn:tightspacing]{|tightspacing|}.
% Increase the spacing~\meta{level} until the last line gets the desired length.
%
-% \item Vary font tracking.\label{enum:vary-font-tracking}\index{font>tracking}
+% \item Vary font tracking.\label{enum:vary-font-tracking}
+% \index{font>tracking|userman}
%
% Enclose the paragraph in a \hyperref[syn:setfonttracking]{\code{setfonttracking}}~group.
% See \cref{sec:tracking-control}. Increase or decrease the tracking in steps of
% \nativetextfraction{1}{1000}\,em until the last line looks good.
%
-% \item Vary font expansion.\label{enum:vary-font-expansion}\index{font>expansion}
+% \item Vary font expansion.\label{enum:vary-font-expansion}
+% \index{font>expansion|userman}
%
% Enclose the paragraph in a \hyperref[syn:setfontexpand]{\code{setfontexpand}}~group. See
% \cref{sec:font-expansion-control}.
@@ -2688,15 +3408,17 @@ end
%
% \DescribeEnv{shortenpar}
% \DescribeEnv{prolongpar}
-% The two environments |shortenpar|\index{paragraph>fill last
-% line>shortenpar=\code{shortenpar}} and |prolongpar|\index{paragraph>fill last
-% line>prolongpar=\code{prolongpar}} can be employed in quite general situations when a
+% The two environments
+% \code{shortenpar}\index{paragraph>fill last line>shortenpar=\code{shortenpar}|userman}
+% and \code{prolongpar}\index{paragraph>fill last line>prolongpar=\code{prolongpar}|userman}
+% can be employed in quite general situations when a
% paragraph should be typeset one line longer or shorter, e.\,g., to avoid a
-% widow~line\footnote{The last line of a paragraph becomes a \singlequotes{widow}\index{forlorn
-% line>widow} (ger.~\foreignphrase{Hurenkind}) if it starts the following page or column.} or
-% a club~line\footnote{The first line of a paragraph is called
-% \singlequotes{club}\index{forlorn line>club} or~\singlequotes{orphan}\index{forlorn
-% line>orphan} (ger.~\foreignphrase{Schusterjunge}) if it appears at the bottom of the page or
+% widow~line\footnote{The last line of a paragraph becomes a
+% \singlequotes{widow}\detoxindex{forlorn line>widow|userman} (ger.~\foreignphrase{Hurenkind}) if it
+% starts the following page or column.} or a club~line\footnote{The first line of a paragraph
+% is called \singlequotes{club}\detoxindex{forlorn line>club|userman}
+% or~\singlequotes{orphan}\detoxindex{forlorn line>orphan|userman}
+% (ger.~\foreignphrase{Schusterjunge}) if it appears at the bottom of the page or
% column.}~[\citenum{knuth:1986}, p.~104 and~\citenum{mittelbach:2018c}]. (See also
% \cref{sec:vtie-paragraph} for special functions to avoid clubs or widows.)
% \singlequotes{Accidentally}, they also change the length of the last line of the paragraph.
@@ -2730,7 +3452,8 @@ end
% parameter change.
%
% \DescribeEnv{covernextindentpar}
-% Environment |covernextindentpar|\index{paragraph>fill last line>covernextindentpar=\code{covernextindentpar}}
+% Environment \code{covernextindentpar}%
+% \index{paragraph>fill last line>covernextindentpar=\code{covernextindentpar}|userman}
% can be helpful for \hyperref[item:o1]{case~O1}, i.\,e., a too short last line.
%
% \begin{synopsis}\label{syn:covernextindentpar}
@@ -2747,9 +3470,10 @@ end
% (if \(\cs{parindent} = 0\)), or \meta{dim} if called with an optional argument.
%
% \DescribeEnv{openlastlinepar}
-% The next environment, |openlastlinepar|,\index{paragraph>fill last
-% line>openlastlinepar=\code{openlastlinepar}} takes care of \hyperref[item:o2]{case~O2},
-% i.\,e., a last line in a paragraph that is almost full or completely filled.
+% The next environment, \code{openlastlinepar},%
+% \index{paragraph>fill last line>openlastlinepar=\code{openlastlinepar}|userman}
+% takes care of \hyperref[item:o2]{case~O2}, i.\,e., a last line in a paragraph that is almost
+% full or completely filled.
%
% \begin{synopsis}\label{syn:openlastlinepar}
% \cs{begin}|{openlastlinepar}|\oarg{dim} \\
@@ -2769,13 +3493,15 @@ end
% last line is avoided, but the result may be of \hyperref[item:o1]{type~O1} nonetheless.
%
%
+% \toccontinuesonnextpage
% \needtocspace
% \Needspace{150pt}
-% \subsection{Spacing}\label{sec:spacing-control}\index{font>spacing}
+% \subsection{Spacing}\label{sec:spacing-control}
+% \index{font>spacing|userman}
%
% \begin{whittyquote}
-% 90~\% of design is typography. \\
-% And the other 90~\% is whitespace. \\
+% 90\% of design is typography. \\
+% And the other 90\% is whitespace. \\
% \capitalemdash*~\propername{Jeffrey Zeldman}
% \end{whittyquote}
%
@@ -2785,7 +3511,9 @@ end
% \cref{sec:microtype-frontend}.
%
%
-% \subsubsection[Looser\kernedslash Tighter]{Looser or Tighter Spacing}\label{sec:looser-tighter-spacing}\index{font>spacing>loose}\index{font>spacing>tight}
+% \subsubsection[Looser\kernedslash Tighter]{Looser or Tighter Spacing}\label{sec:looser-tighter-spacing}
+% \index{font>spacing>loose|userman}
+% \index{font>spacing>tight|userman}
%
%
% \begin{whittyquote}
@@ -2822,7 +3550,7 @@ end
%
% \begin{SCtable}[10]
% \caption[Spacing changes made by \code{loosespacing}]%
-% {Adjustments made by environment |loosespacing| to \cs{spaceskip}.
+% {Adjustments made by environment \code{loosespacing} to \cs{spaceskip}.
% The mapping of \meta{level} to the exact skip definitions are
% \(1 \mapsto \formatskip{1.05}{.5}{.1}\),
% \(2 \mapsto \formatskip{1.1}{.5}{.1}\),
@@ -2836,7 +3564,7 @@ end
% \def~{\hphantom{0}}%
% \begin{tabular}{@{}ccl@{}}
% \toprule
-% \meta{level} & Adjustment & Comment \\
+% \meta{level} & Adjustment & Note \\
% {} & \% & \\
% \midrule
% 0 & n/a & neutral \\
@@ -2861,29 +3589,29 @@ end
% \cref{tab:tightspacing}.
%
% \begin{SCtable}[10]
+% \def~{\hphantom{0}}
% \caption[Spacing changes made by \code{tightspacing}]%
-% {Adjustments made by environment |tightspacing| to \cs{spaceskip}.
+% {Adjustments made by environment \code{tightspacing} to \cs{spaceskip}.
% The mapping of \meta{level} to the exact skip definitions are
-% \(1 \mapsto \formatskip{.9875}{.0125}{.5\hphantom{000}}\)\!,
-% \(2 \mapsto \formatskip{.975}{.025}{.5\hphantom{00}}\)\!,
-% \(3 \mapsto \formatskip{.95}{.05}{.5\hphantom{0}}\)\!, and
+% \(1 \mapsto \formatskip{.9875}{.0125}{.5~~~}\)\!,
+% \(2 \mapsto \formatskip{.975}{.025}{.5~~}\)\!,
+% \(3 \mapsto \formatskip{.95}{.05}{.5~}\)\!, and
% \(\ge 4 \mapsto \formatskip{.9}{.1}{.5}\),
% where all factors scale with \cs{dimen2},
% the current font's space-width.}
% \label{tab:tightspacing}
%
% \begin{tabfigures}
-% \def~{\hphantom{0}}%
% \begin{tabular}{@{}ccl@{}}
% \toprule
-% \meta{level} & Adjustment & Comment \\
+% \meta{level} & Adjustment & Note \\
% {} & \% & \\
% \midrule
% 0 & n/a & neutral \\
-% 1 & ~{-}1.25 & default \\
-% 2 & ~{-}2.5~ & \\
-% 3 & ~{-}5\hphantom{.00} & \\
-% \(\ge\)\:4 & -10\hphantom{.00} & \\
+% 1 & ~\textminus 1.25 & default \\
+% 2 & ~\textminus 2.5~ & \\
+% 3 & ~\textminus 5\hphantom{.}~~ & \\
+% \(\ge\)\:4 & \textminus 10\hphantom{.}~~ & \\
% \bottomrule
% \end{tabular}
% \end{tabfigures}
@@ -2902,7 +3630,8 @@ end
% \end{usecases}
%
%
-% \subsubsection{Wide Space}\label{sec:wide-space}\index{wide space}
+% \subsubsection{Wide Space}\label{sec:wide-space}
+% \index{wide space|userman}
%
% The \cs{widespace} macro and its companion \cs{narrowspace} derive their appearances from
% several of the current font's \cs{fontdimen}\meta{number}s. \TeX{} addresses the latter by
@@ -2914,10 +3643,11 @@ end
%
% \begin{SCtable}
% \caption[\cs{fontdimen}\meta{number} parameters]
-% {The first column~\sample{\#} states the index of the \cs{fontdimen} parameter:
-% \meta{number}. Column~2 presents short descriptions of the
-% \cs{fontdimen}\meta{number} parameters. As examples, the values for the current
-% font are shown in column~3; they are normalized to the quad-size.\bottomstrut}
+% {All \TeX{} font parameters normalized to the font's quad-size. The first
+% column~\sample{\#} states the index of the \cs{fontdimen} parameter:
+% \meta{number}. Column~2 presents short descriptions of
+% \cs{fontdimen}\meta{number}. As examples, the values for the current font are
+% shown in column~3.\bottomstrut}
% \label{tab:fontdimen}
%
% \begin{tabfigures}
@@ -2931,7 +3661,6 @@ end
% \begin{tabular}{@{}lll@{}}
% \toprule
% \# & Description & Value \\
-% {} & & \multicolumn{1}{c}{\%} \\
% \midrule
% 1 & Slant per 1\,pt height & ~~\relativefontdimen1\topstrut \\
% 2 & Interword space width & ~\relativefontdimen2 \\
@@ -2990,7 +3719,8 @@ end
% \end{usecase}
%
%
-% \subsubsection{Narrow Space}\label{sec:narrow-space}\index{narrow space}
+% \subsubsection{Narrow Space}\label{sec:narrow-space}
+% \index{narrow space|userman}
%
% \DescribeMacro{\narrowspace}
% \DescribeMacro{\narrowspace*}
@@ -3033,25 +3763,25 @@ end
% \centering
% \caption[Comparison of some space sizes]
% {Exemplary comparison of standard \cs{space} versus \cs{narrowspace} and
-% \cs{widespace}. All values are relative to the size of the current font's quad
-% size. \cs{narrowspace} and \cs{widespace} use the package's defaults.~\visualpar
-% The upper values in the Width-column for \cs{narrowspace}, and \cs{widespace}
-% refer to the \(\cs{fontdimen7} \not= 0\) case and the lower ones to the
-% \(\cs{fontdimen7} = 0\) code-path.}
+% \cs{widespace}. All values are relative to the size of the current font's
+% quad-size and shown as a percentage of it. \cs{narrowspace} and \cs{widespace}
+% use the package's defaults.~\visualpar The upper values in the
+% \singlequotes{Width}~column for \cs{narrowspace} and \cs{widespace} refer to the
+% \(\cs{fontdimen7} \not= 0\) case and the lower ones to the \(\cs{fontdimen7} = 0\)
+% code-path.}
% \label{tab:space-sizes}
%
% \begin{tabfigures}
-% \def~{\hphantom{0}}%
+% \def~{\hphantom{0}}
% \ExplSyntaxOn
% \def\relativedimen#1{\fp_eval:n {round (1000 * (#1) / \the\fontdimen6\font) / 10}}
% \def\relativefontdimen#1{\relativedimen{\the\fontdimen#1\font}}
% \ExplSyntaxOff
% \def\nrows{1.75}
%
-% \begin{tabular}{@{}llll@{}}
+% \begin{tabular}{@{}l*{3}{r}@{}}
% \toprule
-% Name & Width & Stretch & Shrink \\
-% {} & \% & \% & \% \\
+% Macro & Width & Stretch & Shrink \\
% \midrule
% \multirow{\nrows}{*}{\cs{narrowspace}} &
% \relativedimen{\the\fontdimen2\font - \narrowspacestrength * \the\fontdimen7\font} &
@@ -3071,7 +3801,7 @@ end
%
%
% \subsection{\packagename{Microtype} Front\capitalhyphen End}\label{sec:microtype-frontend}
-% \index{microtype=\packagename{microtype} (package)}
+% \index{microtype=\packagename{microtype} (package)|userman}
%
% The functionalities are just front-ends of selected macros in
% package~\packagename{microtype} -- welcome syntactic sugar.
@@ -3091,7 +3821,8 @@ end
% \end{important}
%
%
-% \subsubsection{Tracking}\label{sec:tracking-control}\index{font>tracking}
+% \subsubsection{Tracking}\label{sec:tracking-control}
+% \index{font>tracking|userman}
%
% \begin{caution}
% The tracking changes may interfere with implicit changes of tracking declared with
@@ -3136,7 +3867,7 @@ end
% \end{codeexample}
%
% If the argument of option~\code{trackingttspacing} is omitted the outer spacing defaults to
-% \makeatletter\mbox{\typog@trackingttspacing}\makeatother.
+% \makeatletter\mbox{\typog@config@trackingttspacing}\makeatother.
%
% \begin{usecases}
% Nudge line breaks or hyphenation points.~\visualpar Avoid clashes of descenders and
@@ -3145,7 +3876,8 @@ end
% \end{usecases}
%
%
-% \subsubsection{Font Expansion}\label{sec:font-expansion-control}\index{font>expansion}
+% \subsubsection{Font Expansion}\label{sec:font-expansion-control}
+% \index{font>expansion|userman}
%
% \DescribeEnv{setfontshrink}
% \DescribeEnv{setfontstretch}
@@ -3153,10 +3885,10 @@ end
% component, i.\,e., shrinkability and stretchability, respectively.
%
% \begin{synopsis}\label{syn:setfontshrink}\label{syn:setfontstretch}
-% \cs{begin}|{setfontshrink}|\marg{level}
+% \cs{begin}|{setfontshrink}|\oarg{level}
% \dots{}
% \cs{end}|{setfontshrink}| \\
-% \cs{begin}|{setfontstretch}|\marg{level}
+% \cs{begin}|{setfontstretch}|\oarg{level}
% \dots{}
% \cs{end}|{setfontstretch}|
% \end{synopsis}
@@ -3165,20 +3897,20 @@ end
% summarize the values for |stretch| and |shrink| in these environments.
%
% \begin{SCtable}
-% \caption[Shrink values of \code{setfontshrink}]%
+% \caption[Shrink values of \code{setfontshrink}]
% {\slightlysloppy[2] Preconfigured values for |shrink| inside of
-% environment~\code{setfontshrink}. Note that all |stretch| values are zero, so the fonts
-% only can shrink.}
+% environment~\code{setfontshrink} as \nativetextfraction{1}{1000}\,em. Note that all
+% |stretch| values are zero, so the fonts only can shrink.}
% \label{tab:setfontshrink-values}
%
% \begin{tabfigures}
+% \def~{\hphantom{0}}
% \begin{tabular}{@{}cccl@{}}
% \toprule
-% \meta{level} & |stretch| & |shrink| & Comment \\
-% {} & \nativetextfraction{1}{1000}\,em & \nativetextfraction{1}{1000}\,em & \\
+% \meta{level} & |stretch| & |shrink| & Note \\
% \midrule
% 0 & n/a & n/a & no operation \\
-% 1 & 0 & \hphantom{0}\makeatletter\typog@shrink@i\makeatother & default \\
+% 1 & 0 & ~\makeatletter\typog@shrink@i\makeatother & default \\
% 2 & 0 & \makeatletter\typog@shrink@ii\makeatother & \\
% 3 & 0 & \makeatletter\typog@shrink@iii\makeatother & \\
% \bottomrule
@@ -3188,20 +3920,20 @@ end
%
% \begin{SCtable}
% \centering
-% \caption[Stretch values of \code{setfontstretch}]%
+% \caption[Stretch values of \code{setfontstretch}]
% {\slightlysloppy[2] Preconfigured values for |stretch| inside of
-% environment~\code{setfontstretch}. Note that all |shrink| values are zero, so the fonts
-% only can stretch.}
+% environment~\code{setfontstretch} as \nativetextfraction{1}{1000}\,em. Note that all
+% |shrink| values are zero, so the fonts only can stretch.}
% \label{tab:setfontstretch-values}
%
% \begin{tabfigures}
+% \def~{\hphantom{0}}
% \begin{tabular}{@{}cccl@{}}
% \toprule
% \meta{level} & |stretch| & |shrink| \\
-% {} & \nativetextfraction{1}{1000}\,em & \nativetextfraction{1}{1000}\,em & \\
% \midrule
% 0 & n/a & n/a & no operation \\
-% 1 & \hphantom{0}\makeatletter\typog@stretch@i\makeatother & 0 & default \\
+% 1 & ~\makeatletter\typog@stretch@i\makeatother & 0 & default \\
% 2 & \makeatletter\typog@stretch@ii\makeatother & 0 & \\
% 3 & \makeatletter\typog@stretch@iii\makeatother & 0 & \\
% \bottomrule
@@ -3224,7 +3956,7 @@ end
% Manipulate both, |stretch| and |shrink|~values at the same time.
%
% \begin{synopsis}\label{syn:setfontexpand}
-% \cs{begin}|{setfontexpand}|\marg{level}
+% \cs{begin}|{setfontexpand}|\oarg{level}
% \dots{}
% \cs{end}|{setfontexpand}|
% \end{synopsis}
@@ -3232,20 +3964,20 @@ end
% \Cref{tab:setfontexpand-values} gives an overview of the values associated with \meta{level}.
%
% \begin{SCtable}
-% \caption[Shrink and stretch values of \code{setfontexpand}]%
+% \caption[Shrink and stretch values of \code{setfontexpand}]
% {\slightlysloppy[2] Preconfigured values for |shrink| and |stretch| inside of
-% environment~\code{setfontexpand}. Note that both |shrink| and |stretch| values are
-% nonzero, so the fonts can shrink or expand.}
+% environment~\code{setfontexpand} as \nativetextfraction{1}{1000}\,em. Note that both
+% |shrink| and |stretch| values are nonzero, so the fonts can shrink or expand.}
% \label{tab:setfontexpand-values}
%
% \begin{tabfigures}
+% \def~{\hphantom{0}}
% \begin{tabular}{@{}cccl@{}}
% \toprule
-% \meta{level} & |stretch| & |shrink| & Comment \\
-% {} & \nativetextfraction{1}{1000}\,em & \nativetextfraction{1}{1000}\,em & \\
+% \meta{level} & |stretch| & |shrink| & Note \\
% \midrule
% 0 & n/a & n/a & no operation \\
-% 1 & \hphantom{0}\makeatletter\typog@stretch@i\makeatother & \hphantom{0}\makeatletter\typog@stretch@i\makeatother & default \\
+% 1 & ~\makeatletter\typog@stretch@i\makeatother & ~\makeatletter\typog@stretch@i\makeatother & default \\
% 2 & \makeatletter\typog@stretch@ii\makeatother & \makeatletter\typog@stretch@ii\makeatother & \\
% 3 & \makeatletter\typog@stretch@iii\makeatother & \makeatletter\typog@stretch@iii\makeatother & \\
% \bottomrule
@@ -3302,7 +4034,8 @@ end
% \end{usecases}
%
%
-% \subsubsection{Character Protrusion}\label{sec:protrusion}\index{font>protrusion}
+% \subsubsection{Character Protrusion}\label{sec:protrusion}
+% \index{font>protrusion|userman}
%
% \DescribeEnv{nocharprotrusion}
% Disable the \packagename{microtype} feature~\singlequotes{protrusion} inside of the
@@ -3320,8 +4053,8 @@ end
% \end{usecases}
%
%
-% \FloatBarrier
-% \subsection{Sloppy Paragraphs}\label{sec:sloppy-paragraphs}\index{paragraph>sloppy}
+% \subsection{Sloppy Paragraphs}\label{sec:sloppy-paragraphs}
+% \index{paragraph>sloppy|userman}
%
% Experienced \LaTeX{} users know that \cs{sloppy} is more of a problem by itself and not
% really a viable solution of the \doublequotes{overfull~box} syndrome.
@@ -3357,21 +4090,22 @@ end
%
% \begin{suspendshortverb}
% \begin{tabfigures}
+% \def~{\hphantom{0}}
% \begin{tabular}{@{}ccccl@{}}
% \toprule
-% \meta{sloppiness} & \cs{toler-} & \cs{hfuzz} & \cs{emergency-} & Comment \\
+% \meta{sloppiness} & \cs{toler-} & \cs{hfuzz} & \cs{emergency-} & Note \\
% {} & \code{ance} & \cs{vfuzz} & \code{stretch}~\(G\) & \\
% {} & & pt & em & \\
% \midrule
-% 0 & \hphantom{0}200\hphantom{\tolerancemark} & .1\hphantom{0} & 0\hphantom{.000\scaledmark} & \TeX: \verb+\fussy+ \\
-% 1 & \hphantom{0}330\tolerancemark & .15 & \hphantom{0}.375\scaledmark & default \\
-% 2 & \hphantom{0}530\tolerancemark & .2\hphantom{0} & \hphantom{0}.75\scaledmark\hphantom{0} & \\
-% 3 & \hphantom{0}870\tolerancemark & .25 & 1.125\scaledmark & \\
-% 4 & 1410\tolerancemark & .3\hphantom{0} & 1.5\scaledmark\hphantom{00} & \\
+% 0 & ~200\hphantom{\tolerancemark} & .1~ & 0\hphantom{.000\scaledmark} & \TeX: \verb+\fussy+ \\
+% 1 & ~330\tolerancemark & .15 & ~.375\scaledmark & default \\
+% 2 & ~530\tolerancemark & .2~ & ~.75\scaledmark~ & \\
+% 3 & ~870\tolerancemark & .25 & 1.125\scaledmark & \\
+% 4 & 1410\tolerancemark & .3~ & 1.5\scaledmark~~ & \\
% 5 & 2310\tolerancemark & .35 & 1.875\scaledmark & \\
-% 6 & 3760\tolerancemark & .4\hphantom{0} & 2.25\scaledmark\hphantom{0} & \\
+% 6 & 3760\tolerancemark & .4~ & 2.25\scaledmark~ & \\
% 7 & 6130\tolerancemark & .45 & 2.625\scaledmark & \\
-% \(\ge\)\:8 & 9999\hphantom{\tolerancemark} & .5\hphantom{0} & 3\hphantom{.000\scaledmark} & \TeX: \verb+\sloppy+ \\
+% \(\ge\)\:8 & 9999\hphantom{\tolerancemark} & .5~ & 3\hphantom{.000\scaledmark} & \TeX: \verb+\sloppy+ \\
% \bottomrule
% \end{tabular}
% \end{tabfigures}
@@ -3403,8 +4137,8 @@ end
% \end{usecases}
%
%
-% \FloatBarrier
-% \subsection{Vertically Partially-Tied Paragraphs}\label{sec:vtie-paragraph}\index{paragraph>vertically tied}
+% \subsection{Vertically Partially-Tied Paragraphs}\label{sec:vtie-paragraph}
+% \index{paragraph>vertically tied|userman}
%
% \LaTeX{} provides several macros and environments to tie material vertically~-- most
% prominently |samepage| and |minipage|.\footnote{A valuable complement to these is
@@ -3421,7 +4155,7 @@ end
%
% \DescribeMacro{\vtietop}
% \DescribeEnv{vtietoppar}
-% Avoid a club\index{forlorn line>club} line in each partial paragraph.
+% Avoid a club\index{forlorn line>club|userman} line in each partial paragraph.
%
% \begin{synopsis}\label{syn:vtietop}\label{syn:vtietoppar}
% \cs{vtietop}\oarg{number-of-lines} \\[\smallskipamount]
@@ -3436,16 +4170,17 @@ end
%
% \begin{usecases}
% String together the first paragraph right after a sectioning command.~\visualpar Tie the
-% first line of an itemized, enumerated, or a description list\index{list} with the paragraph
-% following~\cs{item}.
+% first line of an itemized, enumerated, or a description list\index{list|userman} with the
+% paragraph following~\cs{item}.
% \end{usecases}
%
% \noindent
% \DescribeMacro{\splicevtietop}
-% Inside of a \code{list} a one-off solution simply concatenates \cs{item}[\dots]\cs{vtietop}
-% to fuse the line with the \code{item\#}, the representation of the \code{enum\#}, or the
-% description term with the first paragraph. For a systematic use prefer \cs{splicevtietop}
-% and apply it as the first thing in the \code{list}~body.
+% Inside of a \code{list} a one-off solution simply concatenates
+% \cs{item}[\dots\itcorr{-5}]\cs{vtietop} to fuse the line with the \code{item\#}, the
+% representation of the \code{enum\#}, or the description term with the first paragraph. For a
+% systematic use prefer \cs{splicevtietop} and apply it as the first thing in the
+% \code{list}~body.
%
% \begin{synopsis}\label{syn:splicevtietop}
% \cs{splicevtietop}\oarg{number-of-lines}
@@ -3492,7 +4227,7 @@ end
% \noindent
% \DescribeMacro{\vtiebot}
% \DescribeEnv{vtiebotpar}
-% Avoid a widow\index{forlorn line>widow} line in each partial paragraph.
+% Avoid a widow\index{forlorn line>widow|userman} line in each partial paragraph.
%
% \begin{synopsis}\label{syn:vtiebot}\label{syn:vtiebotpar}
% \cs{vtiebot}\oarg{number-of-lines} \\[\smallskipamount]
@@ -3507,7 +4242,8 @@ end
%
% \noindent
% \DescribeEnv{vtiebotdisp}
-% Avoid a display widow\index{forlorn line>display widow} line in each partial paragraph.
+% Avoid a display widow\index{forlorn line>display widow|userman} line in each partial
+% paragraph.
%
% \begin{synopsis}\label{syn:vtiebotdisp}\label{syn:vtiebotdisppar}
% \cs{begin}|vtiebotdisp|\oarg{before-disp-number-of-lines} \\
@@ -3579,15 +4315,16 @@ end
%
% \begin{typoginspectpar}{partial-paragraphs}
% \setlength{\smoothraggedrightragwidth}{8pt}
-% \paragraph{Partial Paragraphs And Counting Lines.} The top-of-paragraph ties, \cs{vtietop}
-% and \code{vtietoppar} count \meta{number\hyp{}of\hyp{}lines} from the beginning of every
-% partial paragraph. Each displayed math in the paragraph resets the count. The
-% bottom-paragraph ties, \cs{vtiebot}, \code{vtiebotpar}, \cs{vtiebotdisp}, and
-% \code{vtiebotdisppar} count backward from the end of each partial paragraph. Again, each
-% displayed math in the paragraph resets the count. According to \TeX's rules, a displayed
-% math formula always is counted as \emph{three} lines no matter its contents.
-% \Cref{tab:partial-paragraph-line-counts} summarizes these rules with the help of an
-% example.
+% \paragraph{Partial Paragraphs And Counting Lines.}
+%
+% The top-of-paragraph ties, \cs{vtietop} and \code{vtietoppar} count
+% \meta{number\hyp{}of\hyp{}lines} from the beginning of every partial paragraph. Each
+% displayed math in the paragraph resets the count. The bottom-paragraph ties, \cs{vtiebot},
+% \code{vtiebotpar}, \cs{vtiebotdisp}, and \code{vtiebotdisppar} count backward from the end
+% of each partial paragraph. Again, each displayed math in the paragraph resets the count.
+% According to \TeX's rules, a displayed math formula always is counted as \emph{three} lines
+% no matter its contents. \Cref{tab:partial-paragraph-line-counts} summarizes these rules
+% with the help of an example.
% \end{typoginspectpar}
%
% \begin{table}
@@ -3655,11 +4392,11 @@ end
% \end{usecases}
%
%
-% \FloatBarrier
-% \subsection{Breakable Displayed Equations}\label{sec:breakable-display}\index{page break}
+% \subsection{Breakable Displayed Equations}\label{sec:breakable-display}
+% \index{page break|userman}
%
% \DescribeEnv{breakabledisplay}
-% Package~\packagename{amsmath}\index{amsmath=\packagename{amsmath} (package)} offers
+% Package~\packagename{amsmath}\index{amsmath=\packagename{amsmath} (package)|userman} offers
% \cs{allowdisplaybreaks} to render displayed equations breakable at each of their lines.
% Environment~\cs{breakabledisplay} is a wrapper around it which limits the macro's influence
% to the environment. Furthermore, the default \meta{level} of \code{breakabledisplay} is~3
@@ -3688,16 +4425,17 @@ end
% \newcommand*{\clubmark}{\tablenotemark{\dag}}
%
% \begin{tabfigures}
+% \def~{\hphantom{0}}
% \begin{tabular}{@{}ccl@{}}
% \toprule
-% \meta{level} & \cs{interdisplay-} & Comment \\
+% \meta{level} & \cs{interdisplay-} & Note \\
% {} & \code{linepenalty} & \\
% \midrule
% 0 & 10000 & no operation \\
-% 1 & \hphantom{0}9999 & \\
-% 2 & \hphantom{0}6999 & \\
-% 3 & \hphantom{0}2999 & default \\
-% 4 & \hphantom{0000}0\rlap{\clubmark} & \\
+% 1 & ~9999 & \\
+% 2 & ~6999 & \\
+% 3 & ~2999 & default \\
+% 4 & ~~~~0\rlap{\clubmark} & \\
% \bottomrule
% \end{tabular}
% \end{tabfigures}
@@ -3738,7 +4476,6 @@ end
% \end{usecases}
%
%
-% \FloatBarrier
% \clearpage
% \subsection{\packagename{Setspace} Front-End}\label{sec:setspace-frontend}
%
@@ -3747,11 +4484,11 @@ end
% interface of \cs{setstretch} though is unintuitive as it asks for an obscure
% factor.\fontsizeinfo{setspacefontsizeinfo}\marginnote{In the copy of this document gets
% typeset with~\setspacefontsizeinfo*.} The \LaTeX{} user however prefers to keep her eyes on
-% the ball and set the line skip\index{baseline skip} directly (e.\,g.~12.5pt) or the lines'
-% leading\index{leading} to a length or percentage of the font's size.\footnote{To find out
-% about the current font's size and the \cs{baselineskip} in printable form check out
-% \cref{sec:font-information} on \cpageref{sec:font-information}.} This is where the following
-% macros go to bat.
+% the ball and set the line skip\index{baseline skip|userman} directly (e.\,g.~12.5\,pt) or the
+% lines' leading\index{leading|userman} to a length or percentage of the font's
+% size.\footnote{To find out about the current font's size and the \cs{baselineskip} in
+% printable form check out \cref{sec:font-information} on \cpageref{sec:font-information}.}
+% This is where the following macros go to bat.
%
% \begin{important}
% All macros that are introduced in this section rely on macro~\cs{setstretch}. So
@@ -3785,24 +4522,25 @@ end
% will be used in the computation.
%
% \begin{example}
-% Let us assume we want to lighten the gray value of the copy a tad with a \cs{baselineskip}
-% increased (from e.g.~12pt) to~12.5pt. To this end we say:
+% \begin{itemize}[notopsep]
+% \item Let us assume we want to lighten the gray value of the copy a tad with the
+% \cs{baselineskip} increased from 12\,pt to~12.5\,pt. To this end we say:
%
% \begin{codeexample}
-% \cs{setbaselineskip}\{12.5pt\}\specialsectionendhere
+% \cs{setbaselineskip}\{12.5\,pt\}
% \end{codeexample}
-% \end{example}
%
-% \begin{tip}
-% To set the \cs{baselineskip} relative to the current value use
+% \item In a generic part of the document, where the actual \cs{baselineskip} is not known,
+% we can refer to its current value and rescale it:
%
% \begin{codeexample}
-% \cs{setbaselineskip}\{\meta{factor}\cs{baselineskip}\}
+% \cs{setbaselineskip}\{\cs{baselineskip} * 12.5 / 12\}
% \end{codeexample}
%
-% \noindent
-% where \meta{factor} is a floating-point number.
-% \end{tip}
+% Care should be taken if code like the above is implicitly or explicitly
+% repeated, because it results in a geometric series.\specialsectionendhere
+% \end{itemize}
+% \end{example}
%
% \DescribeMacro{\resetbaselineskip}
% \sinceversion{Since v0.3}
@@ -3816,6 +4554,9 @@ end
% notion of what is a single-line \cs{baselineskip}.
%
%
+% \hangindent=2\parindent
+% \hangafter=-2
+% \noindent
% \DescribeMacro{\setbaselineskippercentage}
% \sinceversion{Since v0.3}
% Set the \cs{baselineskip} with a relative value calculated as a percentage of the current
@@ -3828,14 +4569,14 @@ end
% Set \cs{baselineskip} to \(\cs{typogfontsize} \times \meta{baselineskip-percentage} / 100\).
%
% \begin{example}
-% We modify the previous example and assume a font design size of 10pt, but now write
+% We modify the previous example and assume a font design size of 10\,pt, but now write
%
% \begin{codeexample}
% \cs{setbaselineskippercentage}\{125\}
% \end{codeexample}
%
% \noindent
-% which sets \cs{baselineskip} to \(10\text{pt} \times 125 / 100 = 12.5\text{pt}\).
+% which sets \cs{baselineskip} to \(10\text{\,pt} \times 125 / 100 = 12.5\text{\,pt}\).
% \end{example}
%
% \DescribeMacro{\setleading}
@@ -3850,7 +4591,7 @@ end
% \meta{leading} can be negative, e.\,g.~to set solid.
%
% \begin{example}
-% Another solution of the previous example, given a font design size of 10pt is to write
+% Another solution of the previous example, given a font design size of 10\,pt is to write
%
% \begin{codeexample}
% \cs{setleading}\{2.5pt\}
@@ -3872,14 +4613,14 @@ end
% Set \cs{baselineskip} to \(\cs{typogfontsize} \times (1 + \meta{leading-percentage} / 100)\).
%
% \begin{example}
-% We modify the previous example and again assume a font design size of 10pt, but now write
+% We modify the previous example and again assume a font design size of 10\,pt, but now write
%
% \begin{codeexample}
% \cs{setleadingpercentage}\{25\}
% \end{codeexample}
%
% \noindent
-% which sets \cs{baselineskip} to \(10\text{pt} \times (1 + 25 / 100) = 12.5\text{pt}\).
+% which sets \cs{baselineskip} to \(10\text{\,pt} \times (1 + 25 / 100) = 12.5\text{\,pt}\).
% \end{example}
%
% \smallskip
@@ -3949,9 +4690,9 @@ end
% \end{tip}
%
%
-% \FloatBarrier
% \clearpage
-% \subsection{Smooth Ragged}\label{sec:smooth-ragged}\index{ragged right}
+% \subsection{Smooth Ragged}\label{sec:smooth-ragged}
+% \index{ragged right|userman}
%
% \begin{whittyquote}
% The attention someone gives \\
@@ -3964,25 +4705,30 @@ end
% \noindent
% Package \packagename{typog} implements a novel approach to typeset ragged paragraphs.
% Instead of setting the glue inside of a paragraph to zero and letting the line-widths vary
-% accordingly~\cite{wermuth:2020} we prescribe the line-widths with the \cs{parshape}~primitive
-% and leave alone the stretchability or shrinkability of the glue.
+% accordingly~\cite{wermuth:2020} we prescribe the line-widths with \TeX's
+% \cs{parshape}~primitive and leave alone the stretchability or shrinkability of the glue.
%
-% \begin{slightlysloppypar}
-% \hangindent=5.5em\hangafter=-5
+% \begin{caution}
+% None of the following environments work inside of lists.
+% \end{caution}
+%
+% \begin{slightlysloppypar}[2]
+% \hangindent=3.5\parindent
+% \hangafter=-6
+% \noindent
% \DescribeEnv{smoothraggedrightshapetriplet}
% \DescribeEnv{smoothraggedrightshapequintuplet}
% \DescribeEnv{smoothraggedrightshapeseptuplet}
-% We introduce three environments that allow for setting three, five, or seven different
-% line-lengths: \code{smoothraggedrightshapetriplet},
-% \code{smoothraggedrightshapequintuplet}, and \code{smoothraggedrightshapeseptuplet}; they
-% work for paragraphs up to
+% We introduce three environments that set three, five, or seven different line-lengths
+% (which \TeX{} of course will repeat for paragraphs longer than three, five, or seven
+% lines): \code{smoothraggedrightshapetriplet}, \code{smoothraggedrightshapequintuplet}, and
+% \code{smoothraggedrightshapeseptuplet}; they work for paragraph lengths up to
% \makeatletter
-% \typog@triplet@max@lines, \typog@quintuplet@max@lines, or \typog@septuplet@max@lines~lines,
+% \typog@triplet@max@lines, \typog@quintuplet@max@lines, and \typog@septuplet@max@lines~lines,
% \makeatother
% respectively.
% \end{slightlysloppypar}
%
-%
% \begin{maxipage}
% \begin{synopsis}\label{syn:smoothraggedrightshapetriplet}\label{syn:smoothraggedrightshapequintuplet}\label{syn:smoothraggedrightshapeseptuplet}
% \cs{begin}|{smoothraggedrightshapetriplet}|\oarg{option\dots}\marg{width1}\marg{width2}\marg{width3} \\
@@ -4224,23 +4970,47 @@ end
% The default generator is |triplet|.
%
% \item[\cs{smoothraggedrightleftskip}=\meta{dim}]
-% Value for |leftskip| to pass to the generator. Default:~0pt.
+% Value for |leftskip| to pass to the generator. Default:~0\,pt.
%
% \item[\cs{smoothraggedrightparindent}=\meta{dim}]
-% Value for |parindent| to pass to the generator. Default:~0pt.
+% Value for |parindent| to pass to the generator. Default:~0\,pt.
%
% \item[\cs{smoothraggedrightragwidth}=\meta{dim}]
-% Value for the width of the ragged right margin. Default:~2em.
+% Value for the width of the ragged right margin. Default:~2\,em.
% \end{description}
%
+% \begin{samepage}
+% \def\smoothraggedrightgenerator{quintuplet}
+% \setlength{\smoothraggedrightragwidth}{7pt}
+% \begin{nocharprotrusion}\fussy
+% \begin{smoothraggedright}
+% Throughout this manual we have demonstrated how \code{smoothraggedright} environments
+% work for very narrow columns namely inside of the document's margins: all maginal notes
+% were typeset inside of \cs{smoothraggedright} environments (quintuplet generator,
+% 1.5\,em rag width, at footnote~size in addition using
+% environments~\code{slightlysloppy} and \code{loosespacing}). Here, we utilize it with
+% the \smoothraggedrightgenerator~generator and a rag-width of only
+% \the\smoothraggedrightragwidth{} in a paragraph that is \the\linewidth~wide and
+% averages around twelve words per line. There is much more glue to adapt to the
+% line-ends and thus the desired rag is archieved far easier. The sloppyness is minimal,
+% this is, \cs{fussy} is in effect and character protrusion into the margins is switched
+% off. A limitation of the current implementation is that it is ineffective inside of lists.
+% Therefore, this paragraph has not been wrapped inside of an \singlequotes{example}, because
+% all examples are coded as lists.
+% \end{smoothraggedright}
+% \end{nocharprotrusion}
+% \end{samepage}
+%
% \begin{usecases}
% Replacement for \cs{RaggedRight}~\cite{package:ragged2e}.~\visualpar Design alternative for
% fully justified paragraphs if used with a small rag-width.
% \end{usecases}
%
-%
-% \addtocontents{toc}{\par\bigskip\hfill\textit{Table of Contents continued on next page.}}
-% \addtocontents{toc}{\clearpage}
+% \begin{futuredirection}
+% Translate the code to \packagename{l3galley} which is part of the
+% \packagename{l3experimental}~package~\cite{package:l3experimental}. Galley~code is
+% supposed to work inside of lists, too.
+% \end{futuredirection}
%
%
% \sectionfinish
@@ -4250,7 +5020,7 @@ end
% Many other packages help with getting better output from \LaTeX. Here is a list --~in
% alphabetical order~-- of the ones the author considers particularly valuable.
%
-% \sbox{\listlabelbox}{\packagename{microtype}}
+% \sbox{\listlabelbox}{\packagename{enumitem}}
% \begin{description}[font=\normalfont, labelsep*=1em, labelwidth=\wd\listlabelbox, leftmargin=!]
% \item[\packagename{enumitem}]
% Flexible and consistent definition of all basic \LaTeX-list types plus inline
@@ -4268,6 +5038,9 @@ end
% Fine control of spacing, tracking, sidebearings, character protrusion into the margins,
% font expansion, and much more~\cite{package:microtype}.
%
+% See \Cref{sec:microtype-frontend} for a front-end to \packagename{microtype} offered by
+% this package.
+%
% See also \propername{Khirevich's} discussion~\cite{khirevich:2013}.
%
% \item[\packagename{ragged2e}]
@@ -4275,8 +5048,11 @@ end
% |center|~\cite{package:ragged2e}.
%
% \item[\packagename{setspace}]
-% Consistently set the document's line-spacing, i.\,e.,
+% Consistently set the line-spacing of a document, i.\,e., control
% \cs{baselineskip}~\cite{package:setspace}.
+%
+% See \Cref{sec:setspace-frontend} for a front-end to \packagename{setspace} offered by this
+% package.
% \end{description}
%
%
@@ -4291,26 +5067,34 @@ end
%
% The companion program \programname{typog-grep} for analyzing the output of
% \hyperref[syn:typoginspect]{\code{typoginspect}} and
-% \hyperref[syn:typoginspect]{\code{typoginspectpar}} has its own manual page. We reproduce
-% it here for completeness of the documentation.
+% \hyperref[syn:typoginspect]{\code{typoginspectpar}} has its own manual page. We
+% reproduce it here for completeness of the documentation.
%
+% \addtocontents{toc}{\protect\setcounter{tocdepth}{0}}
% \begin{suspendshortverb}
% \setlength{\parindent}{0pt}
% \setlength{\parskip}{6.0pt plus 2.0pt minus .5pt}
-% \input typog-grep
+% \input{typog-grep.tex}
% \end{suspendshortverb}
+% \addtocontents{toc}{\protect\setcounter{tocdepth}{2}}
%
% \sectionfinish
% \clearpage
-% \phantomsection
-% \resetfancyhead
-% \addcontentsline{toc}{section}{Change History}
-% \PrintChanges
+% \begingroup
+% \setcounter{GlossaryColumns}{1}
+% \phantomsection
+% \label{sec:changes}
+% \resetfancyhead
+% \addtocontents{toc}{\bigskip}
+% \addcontentsline{toc}{section}{\numberline{}Change History}
+% \PrintChanges
+% \endgroup
%
% \sectionfinish
% \clearpage
% \phantomsection
-% \addcontentsline{toc}{section}{References}
+% \addtocontents{toc}{\medskip}
+% \addcontentsline{toc}{section}{\numberline{}References}
% \begin{RaggedRight}
% \begin{thebibliography}{88}
% \bibitem{abrahams:2020}
@@ -4354,6 +5138,12 @@ end
% 1998,
% \biburl{https://mirrors.ctan.org/systems/doc/etex/etex_man.pdf}.
%
+% \bibitem{package:mathastext}
+% \bibauthor{Burnol, Jean-François}.
+% \bibtitle{Package~\packagename{mathastext}}.
+% 2023,
+% \biburl{https://ctan.org/pkg/mathastext}.
+%
% \bibitem{carlisle:1996}
% \bibauthor{Carlisle, David}.
% \bibtitle{Russian Paragraph Shapes}.
@@ -4399,6 +5189,12 @@ end
% Addison Wesley, Reading\kernedslash MA,
% 1986.
%
+% \bibitem{package:l3experimental}
+% \bibauthor{The \LaTeX\ Project}.
+% \bibtitle{Package~\packagename{l3experimental}}.
+% 2024,
+% \biburl{https://ctan.org/pkg/l3experimental}.
+%
% \bibitem{package:layout}
% \bibauthor{McPherson, Kent}.
% \bibtitle{Package~\packagename{layout}}.
@@ -4450,6 +5246,13 @@ end
% TUGboat, 11(1), 69\figuredash85, 1990,
% \biburl{http://www.tug.org/TUGboat/Articles/tb11-1/tb27salomon.pdf}.
%
+% \bibitem{strizver:2014}
+% \bibauthor{Strizver, Ilene}.
+% \bibtitle{Type rules!: the designer's guide to professional typography},
+% 4\textsuperior{th}~ed.
+% John Wiley~\& Sons, Hoboken\kernedslash NJ,
+% 2014.
+%
% \bibitem{package:setspace}
% \bibauthor{Tobin, Geoffrey,} and \bibauthor{Robin Fairbairns}.
% \bibtitle{Package~\packagename{setspace}}.
@@ -4526,23 +5329,35 @@ end
% \end{RaggedRight}
%
% \sectionfinish
+%
+%
% \clearpage
-% \begin{RaggedRight}
+% \begingroup
% \setcounter{IndexColumns}{2}
% \setlength{\columnsep}{30pt}
% \label{sec:index}
% \phantomsection
-% \addcontentsline{toc}{section}{Index}
+% \addtocontents{toc}{\medskip}
+% \addcontentsline{toc}{section}{\numberline{}Index}
+% \raggedcolumns
+% \def\codeidx##1{\linenumberdecoration\textbf{##1}}
+% \def\main##1{\linenumberdecoration\underbar{\textbf{##1}}}
+% \def\usage##1{\textit{\textbf{##1}}}
% \PrintIndex
-% \end{RaggedRight}
+% \endgroup
% }
%
-%
% \sectionfinish
+%
+%
% \clearpage
% \appendix
% \section{Package Code}\label{sec:package-code}
-% \addtocontents{toc}{\begingroup\small}
+% \addtocontents{toc}{\protect\begin{list}{}{\leftmargin=\subsectiontocindent\parsep=0pt}}
+% \addtocontents{toc}{\protect\item}
+% \addtocontents{toc}{\RaggedRight}
+% \addtocontents{toc}{\small}
+% \addtocontents{toc}{\tocsquashedsubsections}
% \addtocontents{toc}{\protect\begin{multicols}{2}}
% \addtocontents{toc}{\protect\raggedcolumns}
%
@@ -4555,7 +5370,7 @@ end
%<*package>
\NeedsTeXFormat{LaTeX2e}[2005/12/01]
\ProvidesPackage{typog}
- [2024/05/07 v0.3 TypoGraphic extensions]
+ [2024/07/08 v0.4 TypoGraphic extensions]
\RequirePackage{etoolbox}
\RequirePackage{everyhook}
@@ -4592,17 +5407,34 @@ end
% \end{macro}
%
% \begin{macro}{\typog@typeout}
+% Our information printer.
+% Just adds a prefix so that we can tease apart the \filesystem{log} later.
+%
+% \begin{macrocode}
+\newcommand*{\typog@typeout}[1]{\typeout{typog: #1}}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\typog@typeout}
% Our debug information printer.
%
% \begin{macrocode}
-\newcommand*{\typog@typeout}[1]
- {\iftypog@debug
- \typeout{typog: #1}%
- \fi}
+\newcommand*{\typog@debug@typeout}[1]{\iftypog@debug\typog@typeout{#1}\fi}
% \end{macrocode}
% \end{macro}
%
+% \begin{tcounter}{typog@@iteration}
+% We want our own counter (currently for keeping track of iterations) that does not get
+% trampled underfoot too easily.
+%
+% \begin{macrocode}
+\newcounter{typog@@iteration}
+
+% \end{macrocode}
+% \end{tcounter}
+%
% \begin{macro}{\typog@trim@spaces}
% Pull \cs{tl\_trim\_spaces} into the \singlequotes{classic} namespace.
%
@@ -4693,69 +5525,149 @@ end
%
% Our own state\dots
%
-% \begin{macro}{\typog@mathitalicscorrection}
+% \begin{macro}{\typog@config@mathitalicscorrection}
% \begin{macrocode}
-\newmuskip\typog@mathitalicscorrection
+\newmuskip\typog@config@mathitalicscorrection
+
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\typog@textitalicscorrection}
+% Actual \cs{labelitem}\meta{N} corrections.
+%
+% \begin{ldimen}{\typog@adjust@labelitemi}
+% \begin{macrocode}
+\newdimen{\typog@adjust@labelitemi}
+% \end{macrocode}
+% \end{ldimen}
+%
+% \begin{ldimen}{\typog@adjust@labelitemii}
+% \begin{macrocode}
+\newdimen{\typog@adjust@labelitemii}
+% \end{macrocode}
+% \end{ldimen}
+%
+% \begin{ldimen}{\typog@adjust@labelitemiii}
+% \begin{macrocode}
+\newdimen{\typog@adjust@labelitemiii}
+% \end{macrocode}
+% \end{ldimen}
+%
+% \begin{ldimen}{\typog@adjust@labelitemiv}
+% \begin{macrocode}
+\newdimen{\typog@adjust@labelitemiv}
+% \end{macrocode}
+% \end{ldimen}
+%
+% Configuration constants for \cs{labelitem}\meta{N} corrections.
+%
+% \begin{ldimen}{\typog@adjust@lowercase@labelitemi}
+% \begin{macrocode}
+\newdimen{\typog@adjust@lowercase@labelitemi}
+% \end{macrocode}
+% \end{ldimen}
+%
+% \begin{ldimen}{\typog@adjust@lowercase@labelitemii}
+% \begin{macrocode}
+\newdimen{\typog@adjust@lowercase@labelitemii}
+% \end{macrocode}
+% \end{ldimen}
+%
+% \begin{ldimen}{\typog@adjust@lowercase@labelitemiii}
+% \begin{macrocode}
+\newdimen{\typog@adjust@lowercase@labelitemiii}
+% \end{macrocode}
+% \end{ldimen}
+%
+% \begin{ldimen}{\typog@adjust@lowercase@labelitemiv}
+% \begin{macrocode}
+\newdimen{\typog@adjust@lowercase@labelitemiv}
+% \end{macrocode}
+% \end{ldimen}
+%
+% \begin{ldimen}{\typog@adjust@uppercase@labelitemi}
+% \begin{macrocode}
+\newdimen{\typog@adjust@uppercase@labelitemi}
+% \end{macrocode}
+% \end{ldimen}
+%
+% \begin{ldimen}{\typog@adjust@uppercase@labelitemii}
+% \begin{macrocode}
+\newdimen{\typog@adjust@uppercase@labelitemii}
+% \end{macrocode}
+% \end{ldimen}
+%
+% \begin{ldimen}{\typog@adjust@uppercase@labelitemiii}
% \begin{macrocode}
-\newlength{\typog@textitalicscorrection}
+\newdimen{\typog@adjust@uppercase@labelitemiii}
+% \end{macrocode}
+% \end{ldimen}
+%
+% \begin{ldimen}{\typog@adjust@uppercase@labelitemiv}
+% \begin{macrocode}
+\newdimen{\typog@adjust@uppercase@labelitemiv}
+
+% \end{macrocode}
+% \end{ldimen}
+%
+% Other lengths\dots
+%
+% \begin{macro}{\typog@config@textitalicscorrection}
+% \begin{macrocode}
+\newlength{\typog@config@textitalicscorrection}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\typog@ligaturekern}
+% \begin{macro}{\typog@config@ligaturekern}
% \begin{macrocode}
-\newlength{\typog@ligaturekern}
+\newlength{\typog@config@ligaturekern}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\typog@raisecapitaldash}
+% \begin{macro}{\typog@config@raisecapitaldash}
% \begin{macrocode}
-\newlength{\typog@raisecapitaldash}
+\newlength{\typog@config@raisecapitaldash}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\typog@raisecapitalguillemets}
+% \begin{macro}{\typog@config@raisecapitalguillemets}
% \begin{macrocode}
-\newlength{\typog@raisecapitalguillemets}
+\newlength{\typog@config@raisecapitalguillemets}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\typog@raisecapitalhyphen}
+% \begin{macro}{\typog@config@raisecapitalhyphen}
% \begin{macrocode}
-\newlength{\typog@raisecapitalhyphen}
+\newlength{\typog@config@raisecapitalhyphen}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\typog@raisecapitaltimes}
+% \begin{macro}{\typog@config@raisecapitaltimes}
% \begin{macrocode}
-\newlength{\typog@raisecapitaltimes}
+\newlength{\typog@config@raisecapitaltimes}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\typog@raiseguillemets}
+% \begin{macro}{\typog@config@raiseguillemets}
% \begin{macrocode}
-\newlength{\typog@raiseguillemets}
+\newlength{\typog@config@raiseguillemets}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\typog@raisefiguredash}
+% \begin{macro}{\typog@config@raisefiguredash}
% \begin{macrocode}
-\newlength{\typog@raisefiguredash}
+\newlength{\typog@config@raisefiguredash}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\typog@slashkern}
+% \begin{macro}{\typog@config@slashkern}
% \begin{macrocode}
-\newlength{\typog@slashkern}
+\newlength{\typog@config@slashkern}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\typog@breakpenalty}
+% \begin{macro}{\typog@config@breakpenalty}
% \begin{macrocode}
-\newcommand*{\typog@breakpenalty}{\exhyphenpenalty}
+\newcommand*{\typog@config@breakpenalty}{\exhyphenpenalty}
% \end{macrocode}
% \end{macro}
%
@@ -4771,9 +5683,9 @@ end
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\typog@trackingttspacing}
+% \begin{macro}{\typog@config@trackingttspacing}
% \begin{macrocode}
-\newcommand*{\typog@trackingttspacing}{300, 90, 60}
+\newcommand*{\typog@config@trackingttspacing}{300, 90, 60}
% \end{macrocode}
% \end{macro}
%
@@ -4871,77 +5783,99 @@ end
\newcommand*{\typog@set@shrink@limits}
{\edef\typog@@star{*}%
- \edef\typog@@limit{\typog@triple@get@i{\typog@shrinklimits}}%
+ \edef\typog@@limit{\typog@triple@get@i{\typog@config@shrinklimits}}%
\unless\ifx\typog@@limit\typog@@star\edef\typog@shrink@i{\number\typog@@limit}\fi
- \edef\typog@@limit{\typog@triple@get@ii{\typog@shrinklimits}}%
+ \edef\typog@@limit{\typog@triple@get@ii{\typog@config@shrinklimits}}%
\unless\ifx\typog@@limit\typog@@star\edef\typog@shrink@ii{\number\typog@@limit}\fi
- \edef\typog@@limit{\typog@triple@get@iii{\typog@shrinklimits}}%
+ \edef\typog@@limit{\typog@triple@get@iii{\typog@config@shrinklimits}}%
\unless\ifx\typog@@limit\typog@@star\edef\typog@shrink@iii{\number\typog@@limit}\fi}
\newcommand*{\typog@set@stretch@limits}
{\edef\typog@@star{*}%
- \edef\typog@@limit{\typog@triple@get@i{\typog@stretchlimits}}%
+ \edef\typog@@limit{\typog@triple@get@i{\typog@config@stretchlimits}}%
\unless\ifx\typog@@limit\typog@@star\edef\typog@stretch@i{\number\typog@@limit}\fi
- \edef\typog@@limit{\typog@triple@get@ii{\typog@stretchlimits}}%
+ \edef\typog@@limit{\typog@triple@get@ii{\typog@config@stretchlimits}}%
\unless\ifx\typog@@limit\typog@@star\edef\typog@stretch@ii{\number\typog@@limit}\fi
- \edef\typog@@limit{\typog@triple@get@iii{\typog@stretchlimits}}%
+ \edef\typog@@limit{\typog@triple@get@iii{\typog@config@stretchlimits}}%
\unless\ifx\typog@@limit\typog@@star\edef\typog@stretch@iii{\number\typog@@limit}\fi}
\DeclareOptionX<typog>{breakpenalty}%
- {\renewcommand*{\typog@breakpenalty}{#1}}
+ {\renewcommand*{\typog@config@breakpenalty}{#1}}
\DeclareOptionX<typog>{debug}{\typog@debugtrue}
\DeclareOptionX<typog>{mathitalicscorrection}[.4mu]%
- {\typog@mathitalicscorrection=#1\relax}%
+ {\typog@config@mathitalicscorrection=#1\relax}%
\DeclareOptionX<typog>{nodebug}{\typog@debugfalse}
\DeclareOptionX<typog>{textitalicscorrection}[.02em]%
- {\setlength{\typog@textitalicscorrection}{#1}}
+ {\setlength{\typog@config@textitalicscorrection}{#1}}
\DeclareOptionX<typog>{ligaturekern}[.033333em]%
- {\setlength{\typog@ligaturekern}{#1}}
+ {\setlength{\typog@config@ligaturekern}{#1}}
+\DeclareOptionX<typog>{lowercaselabelitemadjustments}%
+ {\typog@debug@typeout{lowercaselabelitemadjustments={#1}}
+ \def\typog@@do##1{\addtocounter{typog@@iteration}{1}
+ \global\setlength{\csname typog@adjust@lowercase@labelitem\romannumeral\thetypog@@iteration\endcsname}{##1}}
+ \setcounter{typog@@iteration}{0}
+ \forcsvlist{\typog@@do}{#1}}
+\newcommand*{\typog@config@lowercaselabelitemadjustments}
+ {\the\typog@adjust@lowercase@labelitemi,\space
+ \the\typog@adjust@lowercase@labelitemii,\space
+ \the\typog@adjust@lowercase@labelitemiii,\space
+ \the\typog@adjust@lowercase@labelitemiv}
\DeclareOptionX<typog>{raisecapitaldash}[\z@]%
- {\setlength{\typog@raisecapitaldash}{#1}}
+ {\setlength{\typog@config@raisecapitaldash}{#1}}
\DeclareOptionX<typog>{raisecapitalguillemets}[\z@]%
- {\setlength{\typog@raisecapitalguillemets}{#1}}
+ {\setlength{\typog@config@raisecapitalguillemets}{#1}}
\DeclareOptionX<typog>{raisecapitalhyphen}[\z@]%
- {\setlength{\typog@raisecapitalhyphen}{#1}}
+ {\setlength{\typog@config@raisecapitalhyphen}{#1}}
\DeclareOptionX<typog>{raisecapitaltimes}[\z@]%
- {\setlength{\typog@raisecapitaltimes}{#1}}
+ {\setlength{\typog@config@raisecapitaltimes}{#1}}
\DeclareOptionX<typog>{raiseguillemets}[\z@]%
- {\setlength{\typog@raiseguillemets}{#1}}
+ {\setlength{\typog@config@raiseguillemets}{#1}}
\DeclareOptionX<typog>{raisefiguredash}[\z@]%
- {\setlength{\typog@raisefiguredash}{#1}}
+ {\setlength{\typog@config@raisefiguredash}{#1}}
\DeclareOptionX<typog>{raise*}[\z@]%
- {\setlength{\typog@raisecapitaldash}{#1}%
- \setlength{\typog@raisecapitalhyphen}{#1}%
- \setlength{\typog@raisecapitaltimes}{#1}%
- \setlength{\typog@raisefiguredash}{#1}}
+ {\setlength{\typog@config@raisecapitaldash}{#1}%
+ \setlength{\typog@config@raisecapitalhyphen}{#1}%
+ \setlength{\typog@config@raisecapitaltimes}{#1}%
+ \setlength{\typog@config@raisefiguredash}{#1}}
\DeclareOptionX<typog>{shrinklimits}%
[\typog@default@shrink@i, \typog@default@shrink@ii, \typog@default@shrink@iii]%
{\typog@require@preloaded@microtype
\ifx\@onlypreamble\@notprerr
\PackageWarning{typog}{option `shrinklimits' can only be used in the preamble}%
\else
- \edef\typog@shrinklimits{#1}%
+ \edef\typog@config@shrinklimits{#1}%
\typog@set@shrink@limits
\fi}
\DeclareOptionX<typog>{slashkern}[.05em]%
- {\setlength{\typog@slashkern}{#1}}
+ {\setlength{\typog@config@slashkern}{#1}}
\DeclareOptionX<typog>{stretchlimits}%
[\typog@default@stretch@i, \typog@default@stretch@ii, \typog@default@stretch@iii]%
{\typog@require@preloaded@microtype
\ifx\@onlypreamble\@notprerr
\PackageWarning{typog}{option `stretchlimits' can only be used in the preamble}%
\else
- \edef\typog@stretchlimits{#1}%
+ \edef\typog@config@stretchlimits{#1}%
\typog@set@stretch@limits
\fi}
-\DeclareOptionX<typog>{trackingttspacing}[\typog@trackingttspacing]%
+\DeclareOptionX<typog>{trackingttspacing}[\typog@config@trackingttspacing]%
{\typog@require@preloaded@microtype
\ifx\@onlypreamble\@notprerr
\PackageWarning{typog}{option `trackingttspacing' can only be used in the preamble}%
\else
- \typog@typeout{trackingttspacing=#1}%
+ \typog@debug@typeout{trackingttspacing=#1}%
\SetTracking[outer spacing={#1}]{encoding=*, family=tt*}{0}%
\fi}
+\DeclareOptionX<typog>{uppercaselabelitemadjustments}%
+ {\typog@debug@typeout{uppercaselabelitemadjustments={#1}}
+ \def\typog@@do##1{\addtocounter{typog@@iteration}{1}
+ \setlength{\csname typog@adjust@uppercase@labelitem\romannumeral\thetypog@@iteration\endcsname}{##1}}
+ \setcounter{typog@@iteration}{0}
+ \forcsvlist{\typog@@do}{#1}}
+\newcommand*{\typog@config@uppercaselabelitemadjustments}
+ {\the\typog@adjust@uppercase@labelitemi,\space
+ \the\typog@adjust@uppercase@labelitemii,\space
+ \the\typog@adjust@uppercase@labelitemiii,\space
+ \the\typog@adjust@uppercase@labelitemiv}
\newcommand*{\typog@initialize@options}
{\ExecuteOptionsX<typog>{
@@ -4963,7 +5897,7 @@ end
% \fi
%
%
-% \subsection*{Setup}
+% \subsection{Setup and Reconfiguration}
%
% \begin{environment}{typogsetup}
% An empty argument list resets all initialized values to their defaults.
@@ -4982,8 +5916,42 @@ end
% \end{environment}
%
% \begin{macro}{\typogget}
+% Access the package's configuration (name-)space.
+%
% \begin{macrocode}
-\NewDocumentCommand{\typogget}{m}{\csname typog@#1\endcsname}
+\NewDocumentCommand{\typogget}{m}{\csname typog@config@#1\endcsname}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\typoggetnth}
+% \changes{v0.4}{2024-05-15}{New macro.}
+% Access the \(n\)\textsuperscript{th} element of a comma-separated, list-like configuration
+% item's value.
+%
+% \begin{macrocode}
+\ExplSyntaxOn
+\cs_generate_variant:Nn \seq_set_split:Nnn {Nne}
+\cs_new:Npn \typog_get_nth_csname:cnn #1#2#3
+ {
+ \seq_set_split:Nne \l_tmpa_seq {,} {\cs:w typog@config@#2 \cs_end:}
+ \cs_gset:cpn {#1} {\seq_item:Nn \l_tmpa_seq {#3}}
+ }
+\cs_new:Npn \typog_get_nth_dimen:nnn #1#2#3
+ {
+ \seq_set_split:Nne \l_tmpa_seq {,} {\cs:w typog@config@#2 \cs_end:}
+ \dim_set:Nn {#1} {\seq_item:Nn \l_tmpa_seq {#3}}
+ }
+\NewDocumentCommand{\typoggetnth}{m m m}{
+ \token_if_dim_register:NTF {#1}
+ {
+ \typog_get_nth_dimen:nnn {#1} {#2} {#3}
+ }
+ {
+ \typog_get_nth_csname:cnn {#1} {#2} {#3}
+ }
+}
+\ExplSyntaxOff
% \end{macrocode}
% \end{macro}
@@ -5065,6 +6033,7 @@ end
%
% \begin{macrocode}
\newcounter{typog@inspect@count}
+
% \end{macrocode}
% \end{macro}
%
@@ -5085,11 +6054,16 @@ end
\edef\typog@@arg{#2}%
\ifx\typog@@arg\empty
\stepcounter{typog@inspect@count}%
- \edef\typog@@id{\typog@default@inspect@id@prefix\arabic{typog@inspect@count}}%
+ \edef\typog@@id{\typog@default@inspect@id@prefix
+ \arabic{typog@inspect@count}}%
\else
\edef\typog@@id{\typog@trim@spaces{\typog@@arg}}%
\fi
- \typeout{<typog-inspect id="\typog@@id" job="\jobname" line="\the\inputlineno" page="\the\value{page}">}%
+ \typeout{<typog-inspect\space
+ id="\typog@@id"\space
+ job="\jobname"\space
+ line="\the\inputlineno"\space
+ page="\the\value{page}">}%
% \end{macrocode}
%
% Set both badness thresholds to absurdly low values as to activate \TeX's reports.
@@ -5210,7 +6184,7 @@ end
% \begin{macro}{\nolig}
% \begin{macrocode}
\NewDocumentCommand{\nolig}{s o}
- {\dimen0=\IfNoValueTF{#2}{\typog@ligaturekern}{#2\typog@dim@unit}%
+ {\dimen0=\IfNoValueTF{#2}{\typog@config@ligaturekern}{#2\typog@dim@unit}%
\IfBooleanTF{#1}%
{\kern\dimen0\ignorespaces}%
{\discretionary{\typog@hyphen}{}{\kern\dimen0}%
@@ -5249,7 +6223,7 @@ end
%
% \begin{macrocode}
\newcommand*{\typog@itcorr@text@unconditional}[1]
- {\kern#1\typog@textitalicscorrection}
+ {\kern#1\typog@config@textitalicscorrection}
% \end{macrocode}
% \end{macro}
%
@@ -5275,7 +6249,7 @@ end
%
% \begin{macrocode}
\newcommand*{\typog@itcorr@math}[1]
- {\mkern#1\typog@mathitalicscorrection}
+ {\mkern#1\typog@config@mathitalicscorrection}
% \end{macrocode}
% \end{macro}
%
@@ -5326,11 +6300,11 @@ end
%
% \begin{macrocode}
\NewDocumentCommand{\kernedslash}{s}
- {\hspace*{\typog@slashkern}%
+ {\hspace*{\typog@config@slashkern}%
\typog@forwardslash
\IfBooleanTF{#1}%
- {\hspace*{\typog@slashkern}\ignorespaces}%
- {\typog@breakpoint\typog@allowhyphenation\hspace*{\typog@slashkern}}}
+ {\hspace*{\typog@config@slashkern}\ignorespaces}%
+ {\typog@breakpoint\typog@allowhyphenation\hspace*{\typog@config@slashkern}}}
% \end{macrocode}
%
% \acronym{PDF}-substitute definition
@@ -5358,7 +6332,7 @@ end
\def\typog@@optarg{#2}%
\hspace*{#3\typog@dim@unit}%
\raisebox{\ifx\typog@@optarg\typog@@auto
- \typog@raisecapitalhyphen
+ \typog@config@raisecapitalhyphen
\else
\typog@@optarg\typog@dim@unit
\fi}{\typog@hyphen}%
@@ -5428,7 +6402,7 @@ end
%
% \begin{macrocode}
\newcommand*{\typog@breakpoint}
- {\penalty\typog@breakpenalty}
+ {\penalty\typog@config@breakpenalty}
% \end{macrocode}
% \end{macro}
%
@@ -5439,7 +6413,7 @@ end
%
% \begin{macrocode}
\NewDocumentCommand{\capitalhyphen}{s}
- {\raisebox{\typog@raisecapitalhyphen}{\typog@hyphen}%
+ {\raisebox{\typog@config@raisecapitalhyphen}{\typog@hyphen}%
\IfBooleanTF{#1}%
{\ignorespaces}%
{\typog@breakpoint\typog@allowhyphenation}}
@@ -5473,7 +6447,7 @@ end
%
% \begin{macrocode}
\NewDocumentCommand{\capitalendash}{s}
- {\raisebox{\typog@raisecapitaldash}{\textendash}%
+ {\raisebox{\typog@config@raisecapitaldash}{\textendash}%
\IfBooleanTF{#1}%
{\ignorespaces}%
{\typog@breakpoint\typog@allowhyphenation}}
@@ -5503,7 +6477,7 @@ end
%
% \begin{macrocode}
\NewDocumentCommand{\capitalemdash}{s}
- {\raisebox{\typog@raisecapitaldash}{\textemdash}%
+ {\raisebox{\typog@config@raisecapitaldash}{\textemdash}%
\IfBooleanTF{#1}%
{\ignorespaces}%
{\typog@breakpoint\typog@allowhyphenation}}
@@ -5531,7 +6505,7 @@ end
%
% \begin{macrocode}
\NewDocumentCommand{\figuredash}{s}
- {\raisebox{\typog@raisefiguredash}{\textendash}%
+ {\raisebox{\typog@config@raisefiguredash}{\textendash}%
\IfBooleanTF{#1}%
{\ignorespaces}%
{\typog@breakpoint\typog@allowhyphenation}}
@@ -5550,9 +6524,9 @@ end
% \begin{macrocode}
\NewDocumentCommand{\capitaltimes}{}
{\ifmmode
- \mathbin{\raisebox{\typog@raisecapitaltimes}{$\m@th\times$}}%
+ \mathbin{\raisebox{\typog@config@raisecapitaltimes}{$\m@th\times$}}%
\else
- \raisebox{\typog@raisecapitaltimes}{\texttimes}%
+ \raisebox{\typog@config@raisecapitaltimes}{\texttimes}%
\fi}
% \end{macrocode}
%
@@ -5571,7 +6545,7 @@ end
% \begin{macrocode}
\NewDocumentCommand{\singleguillemetleft}{}
{\typog@allowhyphenation
- \raisebox{\typog@raiseguillemets}{\guilsinglleft}}
+ \raisebox{\typog@config@raiseguillemets}{\guilsinglleft}}
% \end{macrocode}
%
% \acronym{PDF}-substitute definition
@@ -5584,7 +6558,7 @@ end
% \begin{macro}{\singleguillemetright}
% \begin{macrocode}
\NewDocumentCommand{\singleguillemetright}{}
- {\raisebox{\typog@raiseguillemets}{\guilsinglright}%
+ {\raisebox{\typog@config@raiseguillemets}{\guilsinglright}%
\typog@allowhyphenation}
% \end{macrocode}
%
@@ -5599,7 +6573,7 @@ end
% \begin{macrocode}
\NewDocumentCommand{\doubleguillemetleft}{}
{\typog@allowhyphenation
- \raisebox{\typog@raiseguillemets}{\guillemotleft}}
+ \raisebox{\typog@config@raiseguillemets}{\guillemotleft}}
% \end{macrocode}
%
% \acronym{PDF}-substitute definition
@@ -5612,7 +6586,7 @@ end
% \begin{macro}{\doubleguillemetright}
% \begin{macrocode}
\NewDocumentCommand{\doubleguillemetright}{}
- {\raisebox{\typog@raiseguillemets}{\guillemotright}%
+ {\raisebox{\typog@config@raiseguillemets}{\guillemotright}%
\typog@allowhyphenation}
% \end{macrocode}
%
@@ -5627,7 +6601,7 @@ end
% \begin{macrocode}
\NewDocumentCommand{\Singleguillemetleft}{}
{\typog@allowhyphenation
- \raisebox{\typog@raisecapitalguillemets}{\guilsinglleft}}
+ \raisebox{\typog@config@raisecapitalguillemets}{\guilsinglleft}}
% \end{macrocode}
%
% \acronym{PDF}-substitute definition
@@ -5640,7 +6614,7 @@ end
% \begin{macro}{\Singleguillemetright}
% \begin{macrocode}
\NewDocumentCommand{\Singleguillemetright}{}
- {\raisebox{\typog@raisecapitalguillemets}{\guilsinglright}%
+ {\raisebox{\typog@config@raisecapitalguillemets}{\guilsinglright}%
\typog@allowhyphenation}
% \end{macrocode}
%
@@ -5655,7 +6629,7 @@ end
% \begin{macrocode}
\NewDocumentCommand{\Doubleguillemetleft}{}
{\typog@allowhyphenation
- \raisebox{\typog@raisecapitalguillemets}{\guillemotleft}}
+ \raisebox{\typog@config@raisecapitalguillemets}{\guillemotleft}}
% \end{macrocode}
%
% \acronym{PDF}-substitute definition
@@ -5668,7 +6642,7 @@ end
% \begin{macro}{\Doubleguillemetright}
% \begin{macrocode}
\NewDocumentCommand{\Doubleguillemetright}{}
- {\raisebox{\typog@raisecapitalguillemets}{\guillemotright}%
+ {\raisebox{\typog@config@raisecapitalguillemets}{\guillemotright}%
\typog@allowhyphenation}
% \end{macrocode}
%
@@ -5681,6 +6655,457 @@ end
% \end{macro}
%
%
+% \subsection{Vert. Adjust Label Items}
+%
+% \begin{macro}{\@typog@uppercase@adjust@labelitem}
+% Handle all possible requests for uppercase label item correction.
+% Patch |itemize|~environments.
+%
+% \begin{macrocode}
+\newcommand*{\@typog@uppercase@adjust@labelitem}[1]
+ {\@typog@maybe@patch@itemize
+ \ifstrequal{#1}{*}
+ {\setlength{\typog@adjust@labelitemi}
+ {\typog@adjust@uppercase@labelitemi}
+ \setlength{\typog@adjust@labelitemii}
+ {\typog@adjust@uppercase@labelitemii}
+ \setlength{\typog@adjust@labelitemiii}
+ {\typog@adjust@uppercase@labelitemiii}
+ \setlength{\typog@adjust@labelitemiv}
+ {\typog@adjust@uppercase@labelitemiv}}
+ {\ifcase #1% 0
+ \relax % outside of any itemize environment
+ \or % 1
+ \setlength{\typog@adjust@labelitemi}
+ {\typog@adjust@uppercase@labelitemi}
+ \or % 2
+ \setlength{\typog@adjust@labelitemii}
+ {\typog@adjust@uppercase@labelitemii}
+ \or % 3
+ \setlength{\typog@adjust@labelitemiii}
+ {\typog@adjust@uppercase@labelitemiii}
+ \or % 4
+ \setlength{\typog@adjust@labelitemiv}
+ {\typog@adjust@uppercase@labelitemiv}
+ \else
+ \PackageError{typog}
+ {Itemize level out of range}
+ {Valid levels are 1, 2, 3, 4, and *}
+ \fi}}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@typog@lowercase@adjust@labelitem}
+% Handle all possible requests for lowercase label item correction.
+% Patch |itemize|~environments.
+%
+% \begin{macrocode}
+\newcommand*{\@typog@lowercase@adjust@labelitem}[1]
+ {\@typog@maybe@patch@itemize
+ \ifstrequal{#1}{*}
+ {\setlength{\typog@adjust@labelitemi}
+ {\typog@adjust@lowercase@labelitemi}
+ \setlength{\typog@adjust@labelitemii}
+ {\typog@adjust@lowercase@labelitemii}
+ \setlength{\typog@adjust@labelitemiii}
+ {\typog@adjust@lowercase@labelitemiii}
+ \setlength{\typog@adjust@labelitemiv}
+ {\typog@adjust@lowercase@labelitemiv}}
+ {\ifcase #1% 0
+ \relax % outside of any itemize environment
+ \or % 1
+ \setlength{\typog@adjust@labelitemi}
+ {\typog@adjust@lowercase@labelitemi}
+ \or % 2
+ \setlength{\typog@adjust@labelitemii}
+ {\typog@adjust@lowercase@labelitemii}
+ \or % 3
+ \setlength{\typog@adjust@labelitemiii}
+ {\typog@adjust@lowercase@labelitemiii}
+ \or % 4
+ \setlength{\typog@adjust@labelitemiv}
+ {\typog@adjust@lowercase@labelitemiv}
+ \else
+ \PackageError{typog}
+ {Itemize level out of range}
+ {Valid levels are 1, 2, 3, 4, and *}
+ \fi}}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@typog@noadjust@labelitem}
+% Neutralize all label item corrections.
+% This function \emph{does not} request patching any |itemize|~environment!
+%
+% \begin{macrocode}
+\newcommand*{\@typog@noadjust@labelitem}[1]
+ {\ifstrequal{#1}{*}
+ {\setlength{\typog@adjust@labelitemi}{\z@}
+ \setlength{\typog@adjust@labelitemii}{\z@}
+ \setlength{\typog@adjust@labelitemiii}{\z@}
+ \setlength{\typog@adjust@labelitemiv}{\z@}}
+ {\ifcase #1% 0
+ \relax % outside of any itemize environment
+ \or % 1
+ \setlength{\typog@adjust@labelitemi}{\z@}
+ \or % 2
+ \setlength{\typog@adjust@labelitemii}{\z@}
+ \or % 3
+ \setlength{\typog@adjust@labelitemiii}{\z@}
+ \or % 4
+ \setlength{\typog@adjust@labelitemiv}{\z@}
+ \else
+ \PackageError{typog}
+ {Itemize level out of range}
+ {Valid levels are 1, 2, 3, 4, and *}
+ \fi}}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\uppercaseadjustlabelitems}
+% \changes{v0.4}{2024-05-14}{New macro.}
+% User macro that handles lists and the treats the empty list specially. We wrap the code
+% into \cs{AfterPreamble} because it may be called in the document's preamble where we don't
+% know whether package~\packagename{enumitem} already has been loaded and we can patch its
+% variant of \code{itemize}.
+%
+% \begin{macrocode}
+\NewDocumentCommand{\uppercaseadjustlabelitems}{m}
+ {\AfterPreamble{%
+ \ifblank{#1}
+ {\@typog@uppercase@adjust@labelitem{\@itemdepth}}
+ {\forcsvlist{\@typog@uppercase@adjust@labelitem}{#1}}%
+ \ignorespaces}}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\lowercaseadjustlabelitems}
+% \changes{v0.4}{2024-05-14}{New macro.}
+% User macro that handles lists and the treats the empty list specially.
+%
+% \begin{macrocode}
+\NewDocumentCommand{\lowercaseadjustlabelitems}{m}
+ {\AfterPreamble{%
+ \ifblank{#1}
+ {\@typog@lowercase@adjust@labelitem{\@itemdepth}}
+ {\forcsvlist{\@typog@lowercase@adjust@labelitem}{#1}}%
+ \ignorespaces}}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\noadjustlabelitems}
+% \changes{v0.4}{2024-05-14}{New macro.}
+% User macro that handles lists and the treats the empty list specially.
+%
+% \begin{macrocode}
+\NewDocumentCommand{\noadjustlabelitems}{m}
+ {\ifblank{#1}
+ {\@typog@noadjust@labelitem{\@itemdepth}}
+ {\forcsvlist{\@typog@noadjust@labelitem}{#1}}%
+ \ignorespaces}
+
+% \end{macrocode}
+% \end{macro}
+%
+% Now we get to the dirty part. All the above definitions do not get called until we hack the
+% existing |itemize|-environments, either the one of plain~\LaTeX{} or the one modified by
+% package~\packagename{enumitem}.
+%
+% Here comes the result of \code{latexdef -c article -s itemize}, which was used to derive the
+% patch code:
+%
+% \begin{verbatim}
+% \def\itemize{%
+% \ifnum \@itemdepth > \thr@@
+% \@toodeep
+% \else
+% \advance\@itemdepth\@ne
+% \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
+% \expandafter
+% \list
+% \csname\@itemitem\endcsname
+% {\def\makelabel##1{\hss\llap{##1}}}%
+% \fi}\end{verbatim}
+%
+% \begin{macro}{\@typog@itemize@patch}
+% This is the additional code we inject into plain \LaTeX's or
+% package~\packagename{enumitem}'s \cs{itemize}.
+%
+% \begin{macrocode}
+\newcommand*{\@typog@itemize@patch}
+% \end{macrocode}
+%
+% Save the original definition of \cs{@itemitem} for chain-calling it later on.
+%
+% \begin{macrocode}
+ {\letcs{\@typog@old@itemitem}{\@itemitem}
+% \end{macrocode}
+%
+% Sneak in our own macro's name.
+%
+% \begin{macrocode}
+ \edef\@itemitem{@typog@labelitem\romannumeral\the\@itemdepth}
+% \end{macrocode}
+%
+% Redefine under the original macro's name so that our code gets called and the old code
+% (\cs{@typog@old@itemitem}) is expanded.
+%
+% \begin{macrocode}
+ \expandafter\def\csname\@itemitem\endcsname
+ {\raisebox{\csname typog@adjust@labelitem\romannumeral\the\@itemdepth\endcsname}
+ {\@typog@old@itemitem}}}
+
+% \end{macrocode}
+% \end{macro}
+%
+% If package~\packagename{enumitem} has been loaded, we use the \emph{same} patch. Here comes
+% the result of \code{latexdef -c article -p enumitem -s enit@itemize@i} that explains, why no
+% change is required:
+%
+% \begin{verbatim}
+% \def\enit@itemize@i#1#2#3#4{%
+% \ifnum #1 > #3 \relax
+% \enit@toodeep
+% \else
+% \enit@prelist\@ne{#1}{#2}%
+% \edef\@itemitem{label#2\romannumeral#1}%
+% \expandafter
+% \enit@list
+% \csname\@itemitem\endcsname
+% {\let\enit@calc\z@
+% \def\makelabel##1{\enit@align{\enit@format{##1}}}%
+% \enit@preset{#2}{#1}{#4}%
+% \enit@calcleft
+% \enit@before
+% \enit@negwidth}%
+% \enit@keyfirst
+% \fi}\end{verbatim}
+%
+% \begin{macro}{\@typog@patch@itemize}
+% Unconditionally apply the patches that are just \emph{single} macro calls to disturb the
+% original macros as little as possible. If we detect \packagename{enumitem} to be present
+% we modify its definition of \code{itemize} otherwise we wrestle \LaTeX's macro.
+%
+% \begin{macrocode}
+\newcommand*{\@typog@patch@itemize}
+ {\ifdefined\enit@itemize@i
+ \patchcmd{\enit@itemize@i}
+ {\expandafter}
+ {\@typog@itemize@patch\expandafter}
+ {\typog@debug@typeout{patching enumitem \string\enit@itemize@i\space succeeded}}
+ {\PackageError{typog}
+ {Patching enumitem macro \string\enit@itemize@i\space failed}
+ {}}
+ \else
+ \patchcmd{\itemize}
+ {\expandafter}
+ {\@typog@itemize@patch\expandafter}
+ {\typog@debug@typeout{patching \string\itemize\space succeeded}}
+ {\PackageError{typog}
+ {Patching plain LaTeX macro \string\itemize\space failed}
+ {}}
+ \fi}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@typog@maybe@patch@itemize}
+% Apply the patches only once.
+%
+% \begin{macrocode}
+\newbool{@typog@itemize@has@been@patched}
+\newcommand*{\@typog@maybe@patch@itemize}
+ {\ifbool{@typog@itemize@has@been@patched}
+ {\relax}
+ {\@typog@patch@itemize
+ \booltrue{@typog@itemize@has@been@patched}}}
+
+% \end{macrocode}
+% \end{macro}
+%
+% Here come our convenience macros to simplify an accurate setup of the label adjustments.
+%
+% \begin{macro}{\typog@hairline@width}
+% Line width of the horizontal reference lines in our convenience macros.
+%
+% \begin{macrocode}
+\newcommand*{\typog@hairline@width}{.125pt}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\typogadjuststairsfor}
+% The arguments are:
+% \#1: \meta{scale-factor},
+% \#2: \meta{step-size},
+% \#3: \meta{number-of-steps},
+% \#4: \meta{sample}, and
+% \#5: \cs{labelitem}\meta{N}.
+%
+% Generate an ascending stairs of argument~\#5.
+%
+% \begin{macrocode}
+\newcommand*{\typogadjuststairsfor}[5]
+% \end{macrocode}
+%
+% Store (half of) the space between two samples in \cs{dimen0}.
+%
+% \begin{macrocode}
+ {\dimen0=1pt%
+% \end{macrocode}
+%
+% Load the \meta{number-of-steps} and ensure that it is odd.
+%
+% \begin{macrocode}
+ \count0=#3\relax
+ \unless\ifodd\count0
+ \advance\count0 by 1%
+ \fi
+% \end{macrocode}
+%
+% Set the iteration counter.
+%
+% \begin{macrocode}
+ \setcounter{typog@@iteration}{1}%
+% \end{macrocode}
+%
+% Put the \meta{sample} into a box so that we can measure it with \cs{ht}.
+%
+% \begin{macrocode}
+ \setbox0=\hbox{#4}%
+% \end{macrocode}
+%
+% Box~1 is the accumulator for the raised samples.
+%
+% \begin{macrocode}
+ \setbox1=\hbox{}%
+% \end{macrocode}
+%
+% Build the stairs.
+%
+% \begin{macrocode}
+ \loop
+ \ifnum\thetypog@@iteration=\numexpr\count0 / 2\relax
+ \dimen1=2\dimen0
+ \else
+ \dimen1=\dimen0
+ \fi
+ \dimen2=\dimexpr#2 * (\thetypog@@iteration - \count0 / 2)\relax
+ \setbox1=\hbox{\unhbox1\raisebox{\dimen2}{\kern\dimen1 #5\kern\dimen1}}%
+ \addtocounter{typog@@iteration}{1}%
+ \unless\ifnum\thetypog@@iteration>\count0
+ \repeat
+% \end{macrocode}
+%
+% Merge the stairs with a hairline at \#1 times the height of \meta{sample}.
+% Answer just a single box.
+%
+% \begin{macrocode}
+ \mbox{\rlap{\raisebox{\fpeval{#1}\ht0}{\rule{\wd1}{\typog@hairline@width}}}\box1}}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\typogadjuststairs}
+% \changes{v0.4}{2024-05-14}{New macro.}
+% The arguments are:
+% \#1: \meta{scale-factor},
+% \#2: \meta{step-size},
+% \#3: \meta{number-of-steps}, and
+% \#4: \meta{sample}.
+%
+% \begin{macrocode}
+\NewDocumentCommand{\typogadjuststairs}{O{.5} m m m}
+ {\begingroup
+ \unless\ifdim #2>\z@
+ \PackageError{typog}
+ {\string\typogadjuststairs\space non-positive step-size}
+ {step-size must be a positive dimension}%
+ \fi
+ \ifnum #3<1
+ \PackageError{typog}
+ {\string\typogadjuststairs\space too few number-of-steps}
+ {number-of-steps must at least be 1}%
+ \fi
+ \ifblank{#4}
+ {\PackageError{typog}
+ {sample must not be empty}
+ {supply either some uppercase or some lowercase letters}}
+ {}%
+ \def\arraystretch{1}%
+ \begin{tabular}{@{}c@{}}
+ \typogadjuststairsfor{#1}{#2}{#3}{#4}{\labelitemi} \\
+ \typogadjuststairsfor{#1}{#2}{#3}{#4}{\labelitemii} \\
+ \typogadjuststairsfor{#1}{#2}{#3}{#4}{\labelitemiii} \\
+ \typogadjuststairsfor{#1}{#2}{#3}{#4}{\labelitemiv}
+ \end{tabular}
+ \endgroup}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\typog@uppercase@adjusted@labelitems}
+% Return all four labelitems in a horizontal box after they have been adjusted with the
+% uppercase-constants set.
+%
+% \begin{macrocode}
+\newcommand*{\typog@uppercase@adjusted@labelitems}
+ {\hbox{\raisebox{\typog@adjust@uppercase@labelitemi}{\labelitemi}%
+ \raisebox{\typog@adjust@uppercase@labelitemii}{\labelitemii}%
+ \raisebox{\typog@adjust@uppercase@labelitemiii}{\labelitemiii}%
+ \raisebox{\typog@adjust@uppercase@labelitemiv}{\labelitemiv}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\typoguppercaseadjustcheck}
+% \changes{v0.4}{2024-05-14}{New macro.}
+% We stuff the user's sample text into a box only to measure its height. We typeset all four
+% labels and draw a hairline at half the height of the sample right through it.
+%
+% \begin{macrocode}
+\NewDocumentCommand{\typoguppercaseadjustcheck}{O{.5} m}
+ {\setbox0=\hbox{#2}%
+ \setbox1=\typog@uppercase@adjusted@labelitems
+ \mbox{\rlap{\raisebox{\fpeval{#1}\ht0}
+ {\rule{\wd1}{\typog@hairline@width}}}%
+ \box1}}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\typog@lowercase@adjusted@labelitems}
+% Return all four labelitems in a horizontal box after they have been adjusted with the
+% lowercase-constants set.
+%
+% \begin{macrocode}
+\newcommand*{\typog@lowercase@adjusted@labelitems}
+ {\hbox{\raisebox{\typog@adjust@lowercase@labelitemi}{\labelitemi}%
+ \raisebox{\typog@adjust@lowercase@labelitemii}{\labelitemii}%
+ \raisebox{\typog@adjust@lowercase@labelitemiii}{\labelitemiii}%
+ \raisebox{\typog@adjust@lowercase@labelitemiv}{\labelitemiv}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\typoglowercaseadjustcheck}
+% \changes{v0.4}{2024-05-14}{New macro.}
+% Same code as \cs{typoguppercaseadjustcheck} for lowercase.
+%
+% \begin{macrocode}
+\NewDocumentCommand{\typoglowercaseadjustcheck}{O{.5} m}
+ {\setbox0=\hbox{#2}%
+ \setbox1=\typog@lowercase@adjusted@labelitems
+ \mbox{\rlap{\raisebox{\fpeval{#1}\ht0}
+ {\rule{\wd1}{\typog@hairline@width}}}%
+ \box1}}
+
+% \end{macrocode}
+% \end{macro}
+%
+%
% \subsection[Align Last Line]{Align Last Line of a Paragraph}
%
% The code of environment |lastlineraggedleftpar|
@@ -5955,7 +7380,7 @@ end
% \end{environment}
%
%
-% \subsection{Microtype Front\capitalhyphen End}
+% \subsection{\packagename{Microtype} Front\capitalhyphen End}
%
% \subsubsection*{Tracking}
%
@@ -6296,7 +7721,7 @@ end
% \item[Initialize.] \code{load("list\_functions")\$}
% \item[\cs{tolerance}:] \code{logspace(log10(200), log10(9999), 9), numer;}
% \item[\cs{emergencystretch}:] \code{linspace(0, 3, 9), numer;}
-% \item[\cs{hfuzz}:] \code{linspace(0.1, 0.5, 9);}
+% \item[\cs{hfuzz}:] \code{linspace(.1, .5, 9);}
% \end{description}
% \end{implementationnote}
%
@@ -6338,7 +7763,7 @@ end
\NewDocumentCommand{\vtietop}{O{3}}
{\setcounter{typog@mean@penalty}
{\typog@geometric@mean{\@M}{\clubpenalty}}%
- \typog@typeout{vtietop: penalties \the\@M--\the\value{typog@mean@penalty}--\the\clubpenalty}%
+ \typog@debug@typeout{vtietop: penalties \the\@M--\the\value{typog@mean@penalty}--\the\clubpenalty}%
\unless\ifnum\clubpenalty<\@M
\PackageWarning{typog}{vtietop: clubpenalty=\the\clubpenalty\space>= 10000}%
\fi
@@ -6426,7 +7851,7 @@ end
\NewDocumentCommand{\vtiebot}{O{3}}
{\setcounter{typog@mean@penalty}
{\typog@geometric@mean{\@M}{\widowpenalty}}%
- \typog@typeout{vtiebot: penalties \the\@M--\the\value{typog@mean@penalty}--\the\widowpenalty}%
+ \typog@debug@typeout{vtiebot: penalties \the\@M--\the\value{typog@mean@penalty}--\the\widowpenalty}%
\unless\ifnum\widowpenalty<\@M
\PackageWarning{typog}{vtiebot: widowpenalty=\the\widowpenalty\space>= 10000}%
\fi
@@ -6494,7 +7919,7 @@ end
\NewDocumentCommand{\typog@vtiebotdisp}{m}
{\setcounter{typog@mean@penalty}
{\typog@geometric@mean{\@M}{\displaywidowpenalty}}%
- \typog@typeout{vtiebotdisp: penalties \the\@M--\the\value{typog@mean@penalty}--\the\displaywidowpenalty}%
+ \typog@debug@typeout{vtiebotdisp: penalties \the\@M--\the\value{typog@mean@penalty}--\the\displaywidowpenalty}%
\unless\ifnum\displaywidowpenalty<\@M
\PackageWarning{typog}{vtiebotdisp: displaywidowpenalty=\the\displaywidowpenalty\space>= 10000}%
\fi
@@ -6588,7 +8013,7 @@ end
% \end{environment}
%
%
-% \subsection{Setspace Front-End}
+% \subsection{\packagename{Setspace} Front-End}
%
% \begin{macro}{\typog@iter@limit}
% The maximum number of iterations we perform before bailing out with an error. Can be
@@ -6631,9 +8056,9 @@ end
% \begin{macrocode}
\dim_set:Nn \l_tmpa_dim {\glueexpr #1}
- \typog@typeout{\string\setbaselineskip:\space
+ \typog@debug@typeout{\string\setbaselineskip:\space
initial\space baselineskip:\space \the\baselineskip}
- \typog@typeout{\string\setbaselineskip:\space
+ \typog@debug@typeout{\string\setbaselineskip:\space
target\space baselineskip:\space \dim_use:N \l_tmpa_dim}
\dim_compare:nNnTF {\baselineskip} > {\c_zero_dim}
@@ -6686,10 +8111,10 @@ end
{}
}
- \typog@typeout{\string\setbaselineskip:\space
+ \typog@debug@typeout{\string\setbaselineskip:\space
final\space \string\setstretch\space argument:\space
\fp_use:N \l_tmpa_fp}
- \typog@typeout{\string\setbaselineskip:\space
+ \typog@debug@typeout{\string\setbaselineskip:\space
final\space baselineskip:\space \the\baselineskip}
}
@@ -6756,7 +8181,7 @@ end
% \begin{macrocode}
\AfterEndPreamble{
\dim_set:Nn \typogfontsize {\fontdimen6\font}
- \typog@typeout{\string\typogfontsize =
+ \typog@debug@typeout{\string\typogfontsize =
\dim_use:N \typogfontsize\space
(at\space begin\space of\space document)}
}
@@ -6892,13 +8317,13 @@ end
\skip1=#2\relax
\skip2=#3\relax
\skip3=#4\relax
- \typog@typeout{smoothraggedrightshapetriplet: skip0=\the\skip0}%
- \typog@typeout{smoothraggedrightshapetriplet: skip1=\the\skip1}%
- \typog@typeout{smoothraggedrightshapetriplet: skip2=\the\skip2}%
- \typog@typeout{smoothraggedrightshapetriplet: skip3=\the\skip3}%
+ \typog@debug@typeout{smoothraggedrightshapetriplet: skip0=\the\skip0}%
+ \typog@debug@typeout{smoothraggedrightshapetriplet: skip1=\the\skip1}%
+ \typog@debug@typeout{smoothraggedrightshapetriplet: skip2=\the\skip2}%
+ \typog@debug@typeout{smoothraggedrightshapetriplet: skip3=\the\skip3}%
\unless\ifnum\typog@mod{\typog@triplet@max@lines}{3}=0
\PackageError{typog}
- {Line number of triplet generator %
+ {Line number of triplet generator\space
(\typog@triplet@max@lines) not divisible by 3}
{}
\fi
@@ -6943,15 +8368,15 @@ end
\skip3=#4\relax
\skip4=#5\relax
\skip5=#6\relax
- \typog@typeout{smoothraggedrightshapequintuplet: skip0=\the\skip0}%
- \typog@typeout{smoothraggedrightshapequintuplet: skip1=\the\skip1}%
- \typog@typeout{smoothraggedrightshapequintuplet: skip2=\the\skip2}%
- \typog@typeout{smoothraggedrightshapequintuplet: skip3=\the\skip3}%
- \typog@typeout{smoothraggedrightshapequintuplet: skip4=\the\skip4}%
- \typog@typeout{smoothraggedrightshapequintuplet: skip5=\the\skip5}%
+ \typog@debug@typeout{smoothraggedrightshapequintuplet: skip0=\the\skip0}%
+ \typog@debug@typeout{smoothraggedrightshapequintuplet: skip1=\the\skip1}%
+ \typog@debug@typeout{smoothraggedrightshapequintuplet: skip2=\the\skip2}%
+ \typog@debug@typeout{smoothraggedrightshapequintuplet: skip3=\the\skip3}%
+ \typog@debug@typeout{smoothraggedrightshapequintuplet: skip4=\the\skip4}%
+ \typog@debug@typeout{smoothraggedrightshapequintuplet: skip5=\the\skip5}%
\unless\ifnum\typog@mod{\typog@quintuplet@max@lines}{5}=0
\PackageError{typog}
- {Line number of quintuplet generator %
+ {Line number of quintuplet generator\space
(\typog@quintuplet@max@lines) not divisible by 5}
{}
\fi
@@ -6998,17 +8423,17 @@ end
\skip5=#6\relax
\skip6=#7\relax
\skip7=#8\relax
- \typog@typeout{smoothraggedrightshapeseptuplet: skip0=\the\skip0}%
- \typog@typeout{smoothraggedrightshapeseptuplet: skip1=\the\skip1}%
- \typog@typeout{smoothraggedrightshapeseptuplet: skip2=\the\skip2}%
- \typog@typeout{smoothraggedrightshapeseptuplet: skip3=\the\skip3}%
- \typog@typeout{smoothraggedrightshapeseptuplet: skip4=\the\skip4}%
- \typog@typeout{smoothraggedrightshapeseptuplet: skip5=\the\skip5}%
- \typog@typeout{smoothraggedrightshapeseptuplet: skip6=\the\skip6}%
- \typog@typeout{smoothraggedrightshapeseptuplet: skip7=\the\skip7}%
+ \typog@debug@typeout{smoothraggedrightshapeseptuplet: skip0=\the\skip0}%
+ \typog@debug@typeout{smoothraggedrightshapeseptuplet: skip1=\the\skip1}%
+ \typog@debug@typeout{smoothraggedrightshapeseptuplet: skip2=\the\skip2}%
+ \typog@debug@typeout{smoothraggedrightshapeseptuplet: skip3=\the\skip3}%
+ \typog@debug@typeout{smoothraggedrightshapeseptuplet: skip4=\the\skip4}%
+ \typog@debug@typeout{smoothraggedrightshapeseptuplet: skip5=\the\skip5}%
+ \typog@debug@typeout{smoothraggedrightshapeseptuplet: skip6=\the\skip6}%
+ \typog@debug@typeout{smoothraggedrightshapeseptuplet: skip7=\the\skip7}%
\unless\ifnum\typog@mod{\typog@septuplet@max@lines}{7}=0
\PackageError{typog}
- {Line number of septuplet generator %
+ {Line number of septuplet generator\space
(\typog@septuplet@max@lines) not divisible by 7}
{}
\fi
@@ -7115,7 +8540,7 @@ end
% |generator=triplet| produces a \doublequotes{short line -- long line -- middle length line}~sequence.
% \begin{macrocode}
\typog@fuzzwidth=.25\smoothraggedrightragwidth
- \typog@typeout{smoothraggedright: generator=triplet, typog@fuzzwidth=\the\typog@fuzzwidth}%
+ \typog@debug@typeout{smoothraggedright: generator=triplet, typog@fuzzwidth=\the\typog@fuzzwidth}%
\smoothraggedrightshapetriplet[leftskip=\typog@@smoothraggedrightleftskip,
parindent=\glueexpr\smoothraggedrightparindent + \parindent,
#1]%
@@ -7130,7 +8555,7 @@ end
% |generator=quintuplet|.
% \begin{macrocode}
\typog@fuzzwidth=.125\smoothraggedrightragwidth
- \typog@typeout{smoothraggedright: generator=quintuplet, typog@fuzzwidth=\the\typog@fuzzwidth}%
+ \typog@debug@typeout{smoothraggedright: generator=quintuplet, typog@fuzzwidth=\the\typog@fuzzwidth}%
\smoothraggedrightshapequintuplet[leftskip=\typog@@smoothraggedrightleftskip,
parindent=\glueexpr\smoothraggedrightparindent + \parindent,
#1]%
@@ -7153,7 +8578,7 @@ end
%
% \begin{macrocode}
\typog@fuzzwidth=.08333\smoothraggedrightragwidth
- \typog@typeout{smoothraggedright: generator=septuplet, typog@fuzzwidth=\the\typog@fuzzwidth}%
+ \typog@debug@typeout{smoothraggedright: generator=septuplet, typog@fuzzwidth=\the\typog@fuzzwidth}%
\smoothraggedrightshapeseptuplet[leftskip=\typog@@smoothraggedrightleftskip,
parindent=\glueexpr\smoothraggedrightparindent + \parindent,
#1]%
@@ -7198,7 +8623,7 @@ end
%
%
% \addtocontents{toc}{\protect\end{multicols}}
-% \addtocontents{toc}{\endgroup}
+% \addtocontents{toc}{\protect\end{list}}
%
%
% \Finale
@@ -7220,10 +8645,14 @@ end
\usepackage{fullwidth}
\usepackage{hyphenat}
\usepackage{mathtools}
-\usepackage[activate=true, verbose=true]{microtype}
+\usepackage[activate=true, verbose=false]{microtype}
\usepackage{ragged2e}
\usepackage[nobottomtitles*]{titlesec}\renewcommand*{\bottomtitlespace}{.2\textheight}
-\usepackage[debug, trackingttspacing]{typog}
+\usepackage{trace}
+\usepackage[debug,
+ trackingttspacing,
+ uppercaselabelitemadjustments={0pt, .1em, .15em, .1em},
+ lowercaselabelitemadjustments={-.0667em, 0pt, .1em, 0pt}]{typog}
\usepackage{xcolor}
\usepackage[loosest, proportional, scaled=1.064]{erewhon}
@@ -7234,49 +8663,42 @@ end
\def\xsfdefault{\relax}
-{
- \def\examplefont{6}
-
- \ifcase\examplefont % 0 -- document's default sans-serif font (e.g., ecrm1000)
- \gdef\examplefontname{default}
- \global\let\xsf=\sf
- \global\let\xsfdefault=\sfdefault
- \or % 1 -- Nunito
- \gdef\examplefontname{Nunito}
- \usepackage{nunito}
- \xdef\xsfdefault{\rmdefault}
- \gdef\xsf{\let\sfdefault=\xsfdefault\sf}
- \or % 2 -- OpenSans
- \gdef\examplefontname{OpenSans}
- \usepackage[defaultsans]{opensans}
- \xdef\xsfdefault{\sfdefault}
- \gdef\xsf{\let\sfdefault=\xsfdefault\sf}
- \or % 3 -- Noto Sans
- \gdef\examplefontname{OpenSans}
- \usepackage[sfdefault]{noto}
- \xdef\xsfdefault{\sfdefault}
- \gdef\xsf{\let\sfdefault=\xsfdefault\sf}
- \or % 4 -- Roboto
- \gdef\examplefontname{Roboto}
- \usepackage[sfdefault]{roboto}
- \xdef\xsfdefault{\sfdefault}
- \gdef\xsf{\let\sfdefault=\xsfdefault\sf}
- \or % 5 -- Montserrat
- \gdef\examplefontname{Montserrat Alternate}
- \usepackage[alternates]{montserrat}
- \xdef\xsfdefault{\sfdefault}
- \gdef\xsf{\let\sfdefault=\xsfdefault\sf}
- \or % 6 -- Inter
- \gdef\examplefontname{Inter}
- \usepackage[sfdefault]{inter}
- \xdef\xsfdefault{\sfdefault}
- \gdef\xsf{\let\sfdefault=\xsfdefault\sf}
- \else
- \SelectedUnknownExampleFont
- \fi
- \typeout{typog-example: font for examples: `\xsfdefault'}%
-}
+\def\examplefont{6}
+
+\ifcase\examplefont % 0 -- document's default sans-serif font (e.g., ecrm1000)
+ \def\examplefontname{default}
+ \let\xsf=\sf
+ \let\xsfdefault=\sfdefault
+\or % 1 -- Nunito
+ \def\examplefontname{Nunito}
+ \def\xsfdefault{Nunito-TOsF}
+ \def\xsf{\let\sfdefault=\xsfdefault\sf}
+\or % 2 -- OpenSans
+ \def\examplefontname{OpenSans}
+ \def\xsfdefault{opensans-TLF}
+ \def\xsf{\let\sfdefault=\xsfdefault\sf}
+\or % 3 -- Noto Sans
+ \def\examplefontname{Noto Sans}
+ \def\xsfdefault{NotoSans-TLF}
+ \def\xsf{\let\sfdefault=\xsfdefault\sf}
+\or % 4 -- Roboto
+ \def\examplefontname{Roboto}
+ \def\xsfdefault{Roboto-LF}
+ \def\xsf{\let\sfdefault=\xsfdefault\sf}
+\or % 5 -- Montserrat
+ \def\examplefontname{Montserrat Alternates}
+ \def\xsfdefault{MontserratAlternates-LF}
+ \def\xsf{\let\sfdefault=\xsfdefault\sf}
+\or % 6 -- Inter
+ \def\examplefontname{Inter}
+ \def\xsfdefault{Inter-LF}
+ \def\xsf{\let\sfdefault=\xsfdefault\sf}
+\else
+ \SelectedUnknownExampleFont
+\fi
+
+\typeout{typog-example: font for examples: `\xsfdefault'}%
\usepackage{hyperref}
@@ -7388,7 +8810,6 @@ end
concentrate all the badness in one place, making one truly unsightly line instead of
two moderately bad ones, because a single ``write-off'' produces fewest total
demerits according to the rules.}
- %There is a much better way to get the desired effect:~[\dots]
\newcommand*{\texbooktolerancesamplecredits}
{\medskip\noindent
\textsl{The sample text was taken from The~\TeX{}book~\cite[p.~107]{knuth:1986}.}}
@@ -7396,7 +8817,7 @@ end
\newcommand*{\texbookparfillskipsample}
{We still haven't discussed the special trick that allows the final line of a paragraph
to be shorter than the others. Just before \TeX{} begins to choose breakpoints,
- it does two important things: [\dots]}
+ it does two important things: [\dots\itcorr{-4}]}
\newcommand*{\texbooklongparfillskipsample}
{We still haven't discussed the special trick that allows the final line of a paragraph
to be shorter than the others. Just before \TeX{} begins to choose breakpoints,
@@ -7404,7 +8825,7 @@ end
that glue is discarded. (The reason is that a blank space often gets into a token list just
before \code{\char92par} or just before \code{\char36\char36}, and this blank space should not be
part of the paragraph.) (2)~Three or more items are put at the end of the
- current horizontal list~[\dots]}
+ current horizontal list~[\dots\itcorr{-4}]}
\newcommand*{\texbookparfillskipsamplecredits}
{\medskip\noindent
\textsl{The sample text was taken from The~\TeX{}book~\cite[p.~99n]{knuth:1986}.}}
@@ -7458,7 +8879,7 @@ end
\setcounter{tocdepth}{1}
-\setlength{\overfullrule}{3pt}
+\setlength{\overfullrule}{0pt}
\hbadness=-1
@@ -7575,7 +8996,76 @@ in the official documentation of package~\packagename{typog}.
\noindent
Unless otherwise noted the font used in the examples is \singlequotes{\examplefontname}.
-\bigskip
+
+\section{Setup and Reconfiguration}
+
+\noindent
+\code{\char`\\ typogget}
+
+\begin{list}{}{}
+ \newcommand*{\expandsto}{$\mathbin{\mapsto}$}
+\item \code{breakpenalty} \expandsto{} \the\typogget{breakpenalty}
+\item \code{ligaturekern} \expandsto{} \milliem{\typogget{ligaturekern}}
+\item \code{lowercaselabelitemadjustments} \expandsto{} \typogget{lowercaselabelitemadjustments}
+\item \code{mathitalicscorrection} \expandsto{} \the\typogget{mathitalicscorrection}
+\item \code{raisecapitaldash} \expandsto{} \the\typogget{raisecapitaldash}
+\item \code{raisecapitalguillemets} \expandsto{} \the\typogget{raisecapitalguillemets}
+\item \code{raisecapitalhyphen} \expandsto{} \the\typogget{raisecapitalhyphen}
+\item \code{raisecapitaltimes} \expandsto{} \the\typogget{raisecapitaltimes}
+\item \code{raisefiguredash} \expandsto{} \the\typogget{raisefiguredash}
+\item \code{raiseguillemets} \expandsto{} \the\typogget{raiseguillemets}
+\item \code{shrinklimits} \expandsto{} \typogget{shrinklimits}
+\item \code{slashkern} \expandsto{} \the\typogget{slashkern}
+\item \code{stretchlimits} \expandsto{} \typogget{stretchlimits}
+\item \code{textitalicscorrection} \expandsto{} \the\typogget{textitalicscorrection}
+\item \code{trackingttspacing} \expandsto{} \typogget{trackingttspacing}
+\item \code{uppercaselabelitemadjustments} \expandsto{} \typogget{uppercaselabelitemadjustments}
+\end{list}
+
+\begingroup
+ \dimen0=\typogget{raisecapitaldash}%
+ \setbox0=\hbox to \typogget{ligaturekern} {}%
+\endgroup
+
+\noindent
+\code{\char`\\ typoggetnth}
+
+\begin{list}{}{}
+\item
+ Elements of \code{lowercaselabelitemadjustments}:
+ (1)~\typoggetnth{\dimen0}{lowercaselabelitemadjustments}{1}\the\dimen0,
+ (2)~\typoggetnth{\dimen0}{lowercaselabelitemadjustments}{2}\the\dimen0,
+ (3)~\typoggetnth{\dimen0}{lowercaselabelitemadjustments}{3}\the\dimen0, and
+ (4)~\typoggetnth{\dimen0}{lowercaselabelitemadjustments}{4}\the\dimen0.
+
+ Same elements now accessed from the right-hand-side, i.\,e.~with negative indices:
+ (\textminus4)~\typoggetnth{nth}{lowercaselabelitemadjustments}{-4}\nth,
+ (\textminus3)~\typoggetnth{nth}{lowercaselabelitemadjustments}{-3}\nth,
+ (\textminus2)~\typoggetnth{nth}{lowercaselabelitemadjustments}{-2}\nth, and
+ (\textminus1)~\typoggetnth{nth}{lowercaselabelitemadjustments}{-1}\nth.
+
+\item Elements of \code{shrinklimits}:
+ (1)~\typoggetnth{nth}{shrinklimits}{1}\nth,
+ (2)~\typoggetnth{nth}{shrinklimits}{2}\nth, and
+ (3)~\typoggetnth{nth}{shrinklimits}{3}\nth.
+
+\item Elements of \code{stretchlimits}:
+ (1)~\typoggetnth{nth}{stretchlimits}{1}\nth,
+ (2)~\typoggetnth{nth}{stretchlimits}{2}\nth, and
+ (3)~\typoggetnth{nth}{stretchlimits}{3}\nth.
+
+\item Elements of \code{trackingttspacing}:
+ (1)~\typoggetnth{nth}{trackingttspacing}{1}\nth,
+ (2)~\typoggetnth{nth}{trackingttspacing}{2}\nth, and
+ (3)~\typoggetnth{nth}{trackingttspacing}{3}\nth.
+
+\item Elements of \code{uppercaselabelitemadjustments}:
+ (1)~\typoggetnth{\dimen0}{uppercaselabelitemadjustments}{1}\the\dimen0,
+ (2)~\typoggetnth{\dimen0}{uppercaselabelitemadjustments}{2}\the\dimen0,
+ (3)~\typoggetnth{\dimen0}{uppercaselabelitemadjustments}{3}\the\dimen0, and
+ (4)~\typoggetnth{\dimen0}{uppercaselabelitemadjustments}{4}\the\dimen0.
+\end{list}
+
\section{Information}
@@ -8068,6 +9558,82 @@ We again compare the default implementation with the adjusted one.
\end{quote}
+\section{Label Items}
+
+The current configurations for the uppercase and lowercase adjustments are
+\{\typogget{uppercaselabelitemadjustments}\} and \{\typogget{lowercaselabelitemadjustments}\},
+respectively.
+
+\begin{center}
+ \makeatletter
+ \noindent
+ A\raisebox{\typog@adjust@uppercase@labelitemi}{\labelitemi}%
+ B\raisebox{\typog@adjust@uppercase@labelitemii}{\labelitemii}%
+ E\raisebox{\typog@adjust@uppercase@labelitemiii}{\labelitemiii}%
+ G\raisebox{\typog@adjust@uppercase@labelitemiv}{\labelitemiv}H \\
+ a\raisebox{\typog@adjust@lowercase@labelitemi}{\labelitemi}%
+ b\raisebox{\typog@adjust@lowercase@labelitemii}{\labelitemii}%
+ c\raisebox{\typog@adjust@lowercase@labelitemiii}{\labelitemiii}%
+ e\raisebox{\typog@adjust@lowercase@labelitemiv}{\labelitemiv}g
+ \makeatother
+\end{center}
+
+For the following nested lists we adjust levels one and three for uppercase and levels two and
+four for lowercase.
+
+\begingroup
+ \uppercaseadjustlabelitems{1,3}
+ \lowercaseadjustlabelitems{2,4}
+ \setlength{\itemsep}{0pt}
+ \setlength{\parsep}{0pt}
+ \setlength{\topsep}{0pt}
+ \begin{itemize}
+ \item A
+ \item B
+ \item C
+ \begin{itemize}
+ \item d
+ \item e
+ \item f
+ \begin{itemize}
+ \item G
+ \item H
+ \item I
+ \begin{itemize}
+ \item j
+ \item k
+ \item l
+ \end{itemize}
+ \end{itemize}
+ \end{itemize}
+ \end{itemize}
+\endgroup
+\noadjustlabelitems{*}% not necessary, but we want to exercise the macro
+
+The left example shows the result of \code{\string\typogadjuststairs\{.25pt\}\{11\}\{ABC\}} and
+the one on the right hand side just uses the same parameters except for the sample~\sample{ace},
+this is, only lowercase letters.
+
+\begin{center}
+ \begin{minipage}[t]{12em}
+ \centering
+ \typogadjuststairs{.25pt}{11}{ABC}
+ \end{minipage}
+ \begin{minipage}[t]{12em}
+ \centering
+ \typogadjuststairs{.25pt}{11}{ace}
+ \end{minipage}
+\end{center}
+
+For this document the calls
+\code{\string\typoguppercaseadjustcheck\{ABC\-DEF\-GHI\-JKL\-MNO\-PQR\-STU\-VWX\-YZ\}} and
+\code{\string\typoglowercaseadjustcheck\{ace\-gmn\-opq\-rsu\-vwx\-yz\}} yield
+\sample{\typoguppercaseadjustcheck{ABCDEFGHIJKLMNOPQRSTUVWXYZ}} and
+\sample{\typoglowercaseadjustcheck{acegmnopqrsuvwxyz}}, where the adjustments in effect are
+\code{\{\typogget{uppercaselabelitemadjustments}\}} and
+\code{\{\typogget{lowercaselabelitemadjustments}\}}, respectively.
+
+
\clearpage
\section{Align Last Line}
@@ -8292,7 +9858,7 @@ consult \propername{David Carlisle's} excellent post on \propername{StackExchang
\begin{center}
\setlength{\overfullrule}{0pt}
- \newcommand*{\spacesampletext}[1]{some#1text#1with#1spaces\rule{0.1pt}{1em}}
+ \newcommand*{\spacesampletext}[1]{some#1text#1with#1spaces\rule{.1pt}{1em}}
\newsavebox{\narrowspacesample}
\sbox{\narrowspacesample}{\spacesampletext{\narrowspace}}
\newsavebox{\widespacesample}
@@ -8707,7 +10273,7 @@ New settings: \baselinesetsize.
\newcommand*{\relbls}{130}
\paragraph{\code{\string\setbaselineskippercentage\{\relbls\}}}
-\setbaselineskippercentage{1 + 2 + .3333 * 100 + 100 * 0.6667}% float expression
+\setbaselineskippercentage{1 + 2 + .3333 * 100 + 100 * .6667}% float expression
\setbaselineskippercentage{\relbls}
\fontsizeinfo{baselinesetsize}
New settings: \baselinesetsize.
@@ -8840,7 +10406,7 @@ visually: \rule{.1pt}{.8em}\kern\parindent\rule{.1pt}{.8em};
%
%
% \iffalse
-%<*nomicrotype>
+%<*without-microtype>
\documentclass[]{article}
@@ -8853,7 +10419,9 @@ visually: \rule{.1pt}{.8em}\kern\parindent\rule{.1pt}{.8em};
{\singleguillemetright}
{\singleguillemetleft}
-\usepackage[]{typog}
+\usepackage[uppercaselabelitemadjustments={.1em, .075em, .1em, .1em},
+ lowercaselabelitemadjustments={-.025em, -.05em, -.025em, -.025em}]
+ {typog}
\newcommand*{\packagename}[1]{\mbox{\textsf{#1}}}
@@ -8868,7 +10436,9 @@ visually: \rule{.1pt}{.8em}\kern\parindent\rule{.1pt}{.8em};
\bigskip
-\noindent
+
+\section*{No Microtype}
+
This example \LaTeX-document uses package~\packagename{typog}
\emph{without} package~\packagename{microtype}.
@@ -8876,6 +10446,38 @@ We want \packagename{typog} to be as usable as possible even without
the nice features that \packagename{microtype} offers.
After all \packagename{typog} is just a front-end for it.
+
+\section*{No EnumItem}
+
+We intentionally do not load package~\packagename{enumitem}, either.
+So, we can test whether \packagename{typog} correctly patches the
+plain \LaTeX{} definition if environment~\texttt{itemize}.
+
+The vertical alignment of the label items was setup for
+uppercase (ABC\typoguppercaseadjustcheck{ABCXYZ}XYZ) and for
+lowercase (ace\typoglowercaseadjustcheck{acexyz}xyz), though
+this is not necessary for the test.
+
+\uppercaseadjustlabelitems{*}
+\begin{itemize}
+\item Level i
+\item Sublist \dots
+ \begin{itemize}
+ \item Level ii
+ \item Sublist \dots
+ \begin{itemize}
+ \item Level iii
+ \item Sublist \dots
+ \begin{itemize}
+ \item Level iv
+ \end{itemize}
+ \end{itemize}
+ \end{itemize}
+\end{itemize}
+
+
+\section*{CSQuotes}
+
As we are testing a special configuration here anyhow,
we hook up our quotes with package~csquotes
to check whether they interact ok.
@@ -8883,7 +10485,28 @@ to check whether they interact ok.
\enquote{This is the outer part of the phrase
which contains the \enquote{inner part}.}}
\end{document}
-%</nomicrotype>
+%</without-microtype>
+% \fi
+%
+%
+%
+% \iffalse
+%<*minimal-test>
+\documentclass{minimal}
+
+\usepackage{typog}
+
+\newcommand*{\raiseamount}{0.5pt}
+
+\begin{document}
+\begin{typogsetup}{raise*=\raiseamount}
+ Em-dash raised by \the\typogget{raisecapitaldash} (expected: \raiseamount).
+\end{typogsetup}
+
+\fontsizeinfo{typoinfo}
+Document class ``minimal'' sets up font size and line spacing as~\typoinfo.
+\end{document}
+%</minimal-test>
% \fi
%
%
@@ -8902,35 +10525,49 @@ to check whether they interact ok.
/@menu/,/@end menu/d
## Convert sectioning macros to our own hierarchy.
-s/^@chapter \(.*\)$/\\subsection*{\\textls[40]{\1}}/
-s/^@section \(.*\)$/\\subsubsection*{\1}/
+s/^@chapter \(.*\)$/\\subsection{\\titlecase{\1}\\label{\1}}/
+s/^@section \(.*\)$/\\subsubsection{\\titlecase{\1}}\\label{\1}/
## Make `@asis' list resemble the Texinfo format.
s/@table @asis/\\begin{list}{}{\\itemindent=-20pt\\leftmargin=20pt}/
s/@end table/\\end{list}/
+## We substitute our maxipage environment for @display.
+s/@display/\\begin{maxipage}/
+s/@end display/\\end{maxipage}/
+
+## Translate `@example' environments.
+s/@example/\\begin{quote}\\tt\\obeylines/
+s/@end example/\\end{quote}\n\n/
+
## Indenting by four spaces generates a `verbatim' environment.
s/@verbatim/\\begin{verbatim}/
s/@end verbatim/\\end{verbatim}/
-## We substitute @display for our maxipage environment.
-s/@display/\\begin{maxipage}/
-s/@end display/\\end{maxipage}/
-
## The argument format of the URL macro is different.
s/@url{\([^,]*\), \([^}]*\)}/\\href{\1}{\2}/g
## Use our own markup.
s/\.\.\./\\dots{}/g
s/LaTeX/\\LaTeX{}/g
-s/@file/\\textit/g
+s/@file/\\emph/g
s/@strong/\\textbf/g
+s/@var/\\emph/g
s/[w]{/mbox{/g
+## Translate some Texinfo macros.
+s/@backslashchar/\\char`\\\\/g
+s/@lbracechar/\\{/g
+s/@noindent/\\noindent/g
+s/@rbracechar/\\}/g
+
## Quote some special characters.
s/%/\\%/g
s/_/\\_/g
+## Add space around alternative-indicators.
+s/[|]/\\,|\\,/g
+
## Adapt to how a man-page is typeset.
## En-dashes in front of long options really suck!
s/--/-\\nolig*-/g
@@ -8944,7 +10581,7 @@ s/@@/@/g
s/\\jobname/\\textbackslash jobname/g
## Make qualified Perl names breakable.
-s/::/::\\discretionary{}{}{}/g
+s/::/::\\breakpoint*/g
%</teximan2latex>
% \fi
%
@@ -8960,6 +10597,7 @@ use strict;
use warnings;
use Data::Dumper ();
+use Encode ();
use English;
use File::Basename ();
use Getopt::Long;
@@ -9011,32 +10649,32 @@ sub limit_string_length {
## We set all colors to `undef' and fill them later with the values
## of the actual configuration.
my $highlight_patterns = {
- PARTIAL_LINE => {
- FONT_SPEC => [qr#
- \\
- (?: OMS | OMX | OT1 | T1 | TS1 | U )
- (?: /[^/]+ ){5} / \S+ \s
- (?: \([+-]\d+\) )?
- #x, undef],
- MATH => [qr#
- \$
- \\
- (?: LMS | OML )
- (?: /[^/]+ ){5} / \S+ \s
- (?: \([+-]\d+\) )?
- .*?
- \$
- #x, undef]
- },
- WHOLE_LINE => {
- FILL_STATE => [qr#^(?:Under|Over)full \\hbox .*$#, undef],
- FIRST_VBOX => [qr#^%%#, undef],
- HORIZONTAL_BREAKPOINT => [qr#^@@\d+:.*$#, undef],
- HORIZONTAL_BREAK_CANDIDATE => [qr#^@[\\ ].*$#, undef],
- LINE_BREAK_PASS => [qr#^@[a-z]+?pass#, undef],
- TIGHTNESS => [qr#^(?:Loose|Tight) \\hbox .*$#, undef],
- VERTICAL_BREAKPOINT => [qr#^% t=\d+.*$#, undef]
- }
+ PARTIAL_LINE => {
+ FONT_SPEC => [qr#
+ \\
+ (?: OMS | OMX | OT1 | T1 | TS1 | U )
+ (?: /[^/]+ ){5} / \S+ \s
+ (?: \([+-]\d+\) )?
+ #x, undef],
+ MATH => [qr#
+ \$
+ \\
+ (?: LMS | OML )
+ (?: /[^/]+ ){5} / \S+ \s
+ (?: \([+-]\d+\) )?
+ .*?
+ \$
+ #x, undef]
+ },
+ WHOLE_LINE => {
+ FILL_STATE => [qr#^(?:Under|Over)full \\hbox .*$#, undef],
+ FIRST_VBOX => [qr#^%%#, undef],
+ HORIZONTAL_BREAKPOINT => [qr#^@@\d+:.*$#, undef],
+ HORIZONTAL_BREAK_CANDIDATE => [qr#^@[\\ ].*$#, undef],
+ LINE_BREAK_PASS => [qr#^@[a-z]+?pass#, undef],
+ TIGHTNESS => [qr#^(?:Loose|Tight) \\hbox .*$#, undef],
+ VERTICAL_BREAKPOINT => [qr#^% t=\d+.*$#, undef]
+ }
};
@@ -9048,7 +10686,7 @@ sub colorize_line {
return Term::ANSIColor::colored($line, $pattern_color_pair->[1])
if $line =~ $pattern_color_pair->[0];
}
- return $line if $line =~ m#^\.#; # we do not paint box contents yet
+ return $line if $line =~ m#^\.#; # we do not paint box contents yet
$line =~ s#$highlight_patterns->{PARTIAL_LINE}->{MATH}->[0]
#Term::ANSIColor::colored($MATCH, $highlight_patterns->{PARTIAL_LINE}->{MATH}->[1])
@@ -9074,13 +10712,30 @@ my $open_tag_regexp =
>#x;
+sub find_encoder {
+ my $encoding = shift;
+
+ my $encoder;
+
+ if ($encoding) {
+ $encoder = Encode::find_encoding($encoding);
+ if (!$encoder) {
+ issue_warning("encoding @{[quote_literal($encoding)]} unknown; proceeding without decoder");
+ }
+ }
+
+ return $encoder;
+}
+
+
sub grep_log_file {
my ($options, $configuration, $file, $filename, $id_regexp) = @_;
+ my $encoder = find_encoder($options->{ENCODING});
my $job_name;
- my $line_number = 0; # line number in the log file we are inspecting, i.e., $filename
+ my $line_number = 0; # line number in the log file we are inspecting, i.e., $filename
my $match_count = 0;
- my $source_line_number; # line number in TeX file the log refers to, i.e., "$job_name.tex"
+ my $source_line_number; # line number in TeX file the log refers to, i.e., "$job_name.tex"
my $page_number;
my $regexp_modifier = $options->{IGNORE_CASE} ? 'i' : '';
my $id_value;
@@ -9094,6 +10749,8 @@ sub grep_log_file {
chomp $line;
$line_number++;
+ $line = Encode::encode_utf8($encoder->decode($line, Encode::FB_CROAK)) if $encoder;
+
if ($line =~ $close_tag_regexp) {
fail_with_error("$filename: $line_number: mismatched open/close tags") unless @nesting_levels;
pop @nesting_levels;
@@ -9175,19 +10832,25 @@ sub grep_log_file {
}
}
}
+
+ return $match_count;
}
sub show_ids_in_file {
my ($options, $configuration, $file, $filename, $id_regexp) = @_;
+ my $encoder = find_encoder($options->{ENCODING});
my $line_number = 0;
+ my $match_count = 0;
my @nesting_levels;
while (my $line = readline $file) {
chomp $line;
$line_number++;
+ $line = Encode::encode_utf8($encoder->decode($line, Encode::FB_CROAK)) if $encoder;
+
if ($line =~ $close_tag_regexp) {
fail_with_error("$filename: $line_number: mismatched open/close tags") unless @nesting_levels;
pop @nesting_levels;
@@ -9200,6 +10863,7 @@ sub show_ids_in_file {
my $page_number = $+{page_match};
++$MATCH_COUNT;
+ ++$match_count;
push @nesting_levels, 1;
if ($options->{LOG_LINE_NUMBER}) {
@@ -9239,6 +10903,8 @@ sub show_ids_in_file {
print ' ' x $indent, $id_value, "\n";
}
}
+
+ return $match_count;
}
@@ -9256,7 +10922,7 @@ sub open_file_for_reading {
fail_with_error("cannot open @{[quote_filesystem($filename)]}: $OS_ERROR");
}
- $file;
+ return $file;
}
@@ -9272,9 +10938,9 @@ sub grep_or_show {
my ($options, $configuration, $file, $filename, $id_regexp) = @_;
if ($options->{SHOW_ALL_IDS}) {
- show_ids_in_file($options, $configuration, $file, $filename, $id_regexp);
+ return show_ids_in_file($options, $configuration, $file, $filename, $id_regexp);
} else {
- grep_log_file($options, $configuration, $file, $filename, $id_regexp);
+ return grep_log_file($options, $configuration, $file, $filename, $id_regexp);
}
}
@@ -9282,6 +10948,8 @@ sub grep_or_show {
sub scan_files {
my ($options, $configuration, $id_regexp, $log_filenames) = @_;
+ my $match_count = 0;
+
if (@$log_filenames) {
foreach my $log_filename (@$log_filenames) {
$log_filename = 'stdin' if $log_filename eq '-';
@@ -9294,15 +10962,17 @@ sub scan_files {
print $filename_header;
}
my $file = open_file_for_reading($log_filename);
- grep_or_show($options, $configuration, $file, $log_filename, $id_regexp);
+ $match_count += grep_or_show($options, $configuration, $file, $log_filename, $id_regexp);
close_file($file, $log_filename);
}
} else {
my $log_filename = 'stdin';
my $file = open_file_for_reading($log_filename);
- grep_or_show($options, $configuration, $file, $log_filename, $id_regexp);
+ $match_count = grep_or_show($options, $configuration, $file, $log_filename, $id_regexp);
close_file($file, $log_filename);
}
+
+ return $match_count;
}
@@ -9319,10 +10989,12 @@ sub redirect_and_scan_files {
my $stdout = select $pager;
$pager->autoflush;
- scan_files($options, $configuration, $id_regexp, $log_filenames);
+ my $match_count = scan_files($options, $configuration, $id_regexp, $log_filenames);
close $pager or issue_warning "error occurred while closing the pager (pid: $pid) pipe: $OS_ERROR";
select $stdout;
+
+ return $match_count;
}
@@ -9431,6 +11103,7 @@ sub setup_configuation {
my $default_options = {
COLORIZE_MODE => 'auto',
DEBUG => 0,
+ ENCODING => undef,
ID => 0,
IGNORE_CASE => 0,
JOB_NAME => 0,
@@ -9452,6 +11125,7 @@ Options
--colour [WHEN] use color to highlight specific log contents
WHEN is 'always', 'never', or 'auto'
-C, --config KEY=VALUE set configuration KEY to VALUE
+ -E, --encoding ENCODING set character ENCODING of LOG-FILE
-i, --[no-]id print matching id with output lines
-y, --[no-]ignore-case ignore case distinctions in patterns and data
-j, --[no-]job-name print \\jobname with output lines
@@ -9461,10 +11135,12 @@ Options
-P, --[no-]pager redirect output to pager
-w, --[no-]word-regexp match only whole words
- -a, --all, --any show all IDs in LOG-FILE
+ -a, --all, --any discover all IDs in LOG-FILE
+
--debug turn on debug output
-h, --help display this help and exit
--show-config show default configuration and exit
+ --show-encodings show all known encodings and exit
-V, --version show version information and exit
HELP_TEXT
@@ -9473,6 +11149,17 @@ HELP_TEXT
}
+sub show_encodings {
+ my @all_encodings = Encode->encodings(':all');
+
+ foreach my $encoding (@all_encodings) {
+ print "$encoding\n";
+ }
+
+ exit 0;
+}
+
+
sub show_configuration {
my $format_string_value = sub {quote_literal($default_configuration->{$_[0]})};
@@ -9508,10 +11195,10 @@ FIXED_CONFIGURATION_TEXT
sub show_version {
print <<VERSION_TEXT;
-typog-grep 0.1
+typog-grep @RELEASE@
Copyright (C) 2024 by Ch. L. Spiel
-License LPPL: LaTeX Project Public License version 1.3 or later
+License LPPL: LaTeX Project Public License version 1.3c or later
VERSION_TEXT
exit 0;
@@ -9527,6 +11214,7 @@ sub get_options {
'color|colour=s' => \$options->{COLORIZE_MODE},
'C|configuration=s' => sub{setup_configuation($_[1], $configuration)},
'debug+' => \$DEBUG,
+ 'E|encoding=s' => \$options->{ENCODING},
'h|help' => \&show_help,
'i|id!' => \$options->{ID},
'y|ignore-case!' => \$options->{IGNORE_CASE},
@@ -9535,13 +11223,18 @@ sub get_options {
'N|log-line-number!' => \$options->{LOG_LINE_NUMBER},
'p|page-number!' => \$options->{PAGE_NUMBER},
'P|pager!' => \$options->{REQUEST_PAGER},
+ 'show-encodings' => \&show_encodings,
'show-config' => \&show_configuration,
'V|version' => \&show_version,
'w|word-regexp!' => \$options->{WORD_REGEXP}) or
- fail_with_error('problems while parsing options');
+ fail_with_error('problems while parsing options');
- fail_with_error("unknown colorize mode @{[quote_literal($options->{COLORIZE_MODE})]}")
- unless $options->{COLORIZE_MODE} =~ m/^(?:always|auto|never)$/i
+ if ($options->{COLORIZE_MODE}) {
+ fail_with_error("unknown colorize mode @{[quote_literal($options->{COLORIZE_MODE})]}")
+ unless $options->{COLORIZE_MODE} =~ m/^(?:always|auto|never)$/i;
+ } else {
+ $options->{COLORIZE_MODE} = 'auto';
+ }
}
@@ -9565,14 +11258,27 @@ sub do_colorize {
sub main {
$OUTPUT_IS_REDIRECTED = -t STDOUT ? 0 : 1;
- my $options = {%$default_options};
my $configuration = {%$default_configuration};
+ my $options = {%$default_options};
+ debug_print(Data::Dumper::Dumper(['Default Configuration', $configuration]));
+ debug_print(Data::Dumper::Dumper(['Default Options', $options]));
+
+ my $user_options = {};
+ my $user_configuration = {};
+ get_options($user_options, $user_configuration);
+ debug_print(Data::Dumper::Dumper(['User Configuration', $user_configuration]));
+ debug_print(Data::Dumper::Dumper(['User Options', $user_options]));
+ while (my ($key, $value) = each %$user_options) {
+ $options->{$key} = $value if $value;
+ }
+ while (my ($key, $value) = each %$user_configuration) {
+ $configuration->{$key} = $value if $value;
+ }
+ debug_print(Data::Dumper::Dumper(['Final Configuration', $configuration]));
+ debug_print(Data::Dumper::Dumper(['Final Options', $options]));
- get_options($options, $configuration);
$options->{COLORIZE_OUTPUT} = do_colorize($options->{COLORIZE_MODE});
initialize_highlighting_from_configuration($configuration);
- debug_print(Data::Dumper::Dumper($configuration));
- debug_print(Data::Dumper::Dumper($options));
my $id_regexp;
if ($options->{SHOW_ALL_IDS}) {
@@ -9584,17 +11290,18 @@ sub main {
$id_regexp = shift @ARGV;
}
- if ($options->{REQUEST_PAGER} && $OUTPUT_IS_REDIRECTED) {
+ if ($user_options->{REQUEST_PAGER} && $OUTPUT_IS_REDIRECTED) {
issue_warning("option @{[quote_literal('--pager')]} ignored because output is redirected");
}
my $use_pager = $options->{REQUEST_PAGER} && !$OUTPUT_IS_REDIRECTED;
+ my $match_count;
if ($use_pager) {
- redirect_and_scan_files($options, $configuration, $id_regexp, \@ARGV);
+ $match_count = redirect_and_scan_files($options, $configuration, $id_regexp, \@ARGV);
} else {
- scan_files($options, $configuration, $id_regexp, \@ARGV);
+ $match_count = scan_files($options, $configuration, $id_regexp, \@ARGV);
}
- exit ($MATCH_COUNT == 0);
+ exit ($match_count == 0);
}
@@ -9615,7 +11322,7 @@ main();
=head1 NAME
-typog-grep - grep for typog-inspect elements in LaTeX log files
+typog-grep - specialized grep for typog-inspect elements in LaTeX log files
=head1 SYNOPSIS
@@ -9628,9 +11335,70 @@ typog-grep - grep for typog-inspect elements in LaTeX log files
=back
-The first form shows all C<E<lt>typog-inspect id="I<ID>" ...E<gt>> elements in F<LOG-FILE>.
+The first form, ``discovery mode'', shows all I<ID>s of
+
+=begin text
+
+<typog-inspect id="ID" ...>
+
+=end text
+
+=begin man
+
+.RS
+.EX
+<typog-inspect id="\fI\,ID\/\fP" ...>
+.EE
+.RE
+
+=end man
+
+=begin texinfo
+
+@example
+<typog-inspect id="@var{ID}" ...>
+@end example
+@noindent
+
+=end texinfo
+
+Z<>
+elements in F<LOG-FILE>.
+
+The second form shows the contents, I<LOG-DATA>, of the elements
-The second form shows the contents of C<E<lt>typog-inspect id="I<ID>" ...E<gt>> elements
+=begin text
+
+<typog-inspect id="ID" ...>
+LOG-DATA
+</typog-inspect>
+
+=end text
+
+=begin man
+
+.RS
+.EX
+<typog-inspect id="\fI\,ID\/\fP" ...>
+\fILOG-DATA\fP
+</typog-inspect>
+.EE
+.RE
+
+=end man
+
+=begin texinfo
+
+@example
+<typog-inspect id="@var{ID}" ...>
+@var{LOG-DATA}
+</typog-inspect>
+@end example
+@noindent
+
+=end texinfo
+
+Z<>
whose I<ID>s match I<REGEXP> in F<LOG-FILE>.
If no F<LOG-FILE> is given read from F<stdin>.
@@ -9639,57 +11407,101 @@ The S<filename C<->> is synonymous to F<stdin>.
=head1 DESCRIPTION
-B<typog-grep> is a tailored post-processor for LaTeX log files
-and the C<typoginspect> environment as provided by S<package typog>.
+B<typog-grep> is a tailored post-processor for LaTeX S<F<log> files>
+and the C<typoginspect> environment as provided by the S<LaTeX package typog>.
It shares more with the venerable
L<B<sgrep>|https://www.cs.helsinki.fi/u/jjaakkol/sgrep.html>
than with S<POSIX L<B<grep>|https://pubs.opengroup.org/onlinepubs/9699919799/utilities/grep.html>>.
-The LaTeX user brackets her text in
+In the LaTeX source file the user brackets her text or code
+in a C<typoginspect> environment:
+
+=begin text
+
+\begin{typoginspect}{ID}
+ TEXT-OR-CODE-TO-INVESTIGATE
+\end{typoginspect}
+
+=end text
+
+=begin man
+
+.RS
+.EX
+\ebegin{typoginspect}{\fI\,ID\/\fP}
+\fITEXT-OR-CODE-TO-INVESTIGATE\fP
+\eend{typoginspect}
+.EE
+.RE
- \begin{typoginspect}{ID}
- Text and code to investigate
- \end{typoginspect}
+=end man
+
+=begin texinfo
+
+@example
+@backslashchar{}begin@lbracechar{}typoginspect@rbracechar{}@lbracechar{}@var{ID}@rbracechar{}
+@var{TEXT-OR-CODE-TO-INVESTIGATE}
+@backslashchar{}end@lbracechar{}typoginspect@rbracechar{}
+@end example
+@noindent
+
+=end texinfo
+Z<>
where I<ID> is used to identify one or more bracketed snippets.
I<ID> does not have to be unique.
The I<REGEXP> mechanism makes it easy to select groups of related I<ID>s
if they are named accordingly.
-In F<LOG-FILE> the environment shows up, packed with tracing information, as
+In F<LOG-FILE> the result of the environment shows up,
+packed with tracing information, as
-=begin texinfo
+=begin text
-@display
-@relax
+<typog-inspect id="ID" job="JOB-NAME" line="LINE-NUMBER" page="PAGE-NUMBER">
+ LOG-DATA
+</typog-inspect>
-=end texinfo
+=end text
+
+=begin man
- <typog-inspect id="ID" job="JOB-NAME" line="LINE-NUMBER" page="PAGE-NUMBER">
- Trace Data
- </typog-inspect>
+.RS
+.EX
+<typog-inspect id="\fI\,ID\/\fP" job="\fI\,JOB-NAME\/\fP" line="\fI\,LINE-NUMBER\/\fP" page="\fI\,PAGE-NUMBER\/\fP">
+\fILOG-DATA\fP
+</typog-inspect>
+.EE
+.RE
+
+=end man
=begin texinfo
-@end display
-@relax
+@example
+<typog-inspect id="@var{ID}" job="@var{JOB-NAME}" line="@var{LINE-NUMBER}" page="@var{PAGE-NUMBER}">
+@var{LOG-DATA}
+</typog-inspect>
+@end example
+@noindent
=end texinfo
+Z<>
where all the capital-letter sequences are meta-variables
and in particular
I<JOB-NAME> is the expansion of C<\jobname>,
I<LINE-NUMBER> is the LaTeX source file line number
of the beginning of the C<typoginspect> environment,
and I<PAGE-NUMBER> is the page where
-the output of S<C<Text and code to investigate>> occurs.
+the output of S<C<TEXT-OR-CODE-TO-INVESTIGATE>> occurs.
B<typog-grep> reveals the contents of F<LOG-FILE>
between C<E<lt>typog-inspect id="I<ID>" ...E<gt>>
-and C<E<lt>/typog-inspectE<gt>> excluding the XML-tags.
+and C<E<lt>/typog-inspectE<gt>> excluding the XML-tags themselves.
Access the I<JOB-NAME>, I<LINE-NUMBER>, and I<PAGE-NUMBER>
with the commandline options
-B<--job-name>, B<--line-number>, and B<--page-number>, respectively.
+B<--job-name>, B<--line-number>, and B<--page-number>, respectively.
Use B<--id> to show the name of the IDs that matched I<REGEXP>.
C<typoginspect> environments can be nested.
@@ -9707,11 +11519,18 @@ The list of options is sorted by the names of the long options.
=item B<-a>, B<--all>, B<--any>
ID-discovery mode:
-Show all C<typog-inspect> elements independent of any matching patterns.
+Discover all C<typog-inspect> elements independent of any matching patterns
+and print their I<ID>s.
+The results are printed in their order of occurrence in the respective F<LOG-FILE>s.
+Pipe the output into B<sort> to get alphabetically ordered I<ID>s.
+
+Augment with options
+B<--job-name>, B<--line-number>, B<--log-line-number>, or S<B<--page-number>>
+for more information.
=item B<--color>, B<colour> I<WHEN>
-Colorize specific log contents for the matching ids.
+Colorize specific log contents for the matching I<ID>s.
The S<argument I<WHEN>> determines when to apply color:
C<always>, C<never>, S<or C<auto>>.
The setting C<auto> checks whether standard output has been redirected.
@@ -9720,29 +11539,45 @@ This is the default.
=item B<-C>, B<--config> I<KEY>=I<VALUE>[:I<KEY>=I<VALUE>[:...]]
Set one or more configuration I<KEY> to I<VALUE> pairs.
-See S<Sec. CONFIGURATION> below for a description of all available configuration items.
-Use option B<--show-config> to display the default configuration.
+See section L</CONFIGURATION> for a description
+of all available configuration items.
+Use S<option B<--show-config>> to display the default configuration.
=item B<--debug>
Turn on debug output on F<stderr>.
+=item B<-E>, B<--encoding> I<ENCODING>
+
+Set the I<ENCODING> of F<LOG-FILE> for the translation to UTF-8.
+The default is unset.
+
+Use this option to get rid of pesky
+S<"E<lt>I<HEX-DIGITS>E<gt>" escapes> on UTF-8 terminals.
+See S<option B<--show-encodings>> for the known encodings and
+Encode::Supported for a summary of all encodings.
+See also S<section L</Some Common Encodings>>.
+
+Apply L<B<iconv>|https://pubs.opengroup.org/onlinepubs/9699919799/utilities/iconv.html>
+(POSIX) or L<B<recode>|https://github.com/rrthomas/recode/> (GNU) on F<LOG-FILE>
+before this tool to avoid having to use S<option B<--encoding>>.
+
=item B<-h>, B<--help>
Display brief help then exit.
=item B<-i>, B<--[no-]id>
-Print the actual id name that matched I<REGEXP>.
-Control the appearance of the matching id with configuration S<item C<id-heading>>.
+Print the actual ID-name that matched I<REGEXP>.
+Control the appearance of the matching I<ID> with configuration S<item C<id-heading>>.
=item B<-y>, B<--[no-]ignore-case>
-Match ids while ignoring case distinctions in patterns and data.
+Match I<ID>s while ignoring case distinctions in patterns and data.
=item B<-j>, B<--[no-]job-name>
-Print the C<\jobname> that B<tex> associated with the input file.
+Print the C<\jobname> that B<latex> associated with the input file.
=item B<-n>, B<--[no-]line-number>
@@ -9766,6 +11601,10 @@ Redirect output from F<stdout> to the configured pager.
Show the default configuration and exit.
+=item B<--show-encodings>
+
+Show all known encodings and exit.
+
=item B<-V>, B<--version>
Show version information and exit.
@@ -9789,26 +11628,26 @@ S<Default: C<%s:>.>
=item C<id-heading>=C<0>E<verbar>C<1>
-Choose between printing the matching ids with S<option B<--id>>:
+Choose between printing the matching I<ID>s with S<option B<--id>>:
S<Inline (C<0>)> or heading before the matching data (C<1>).
S<Default: C<0>.>
=item C<id-heading-format>=I<FORMAT>
-Control the I<FORMAT> for printing matching ids in heading-mode,
+Control the I<FORMAT> for printing matching I<ID>s in heading-mode,
where I<FORMAT> is passed to Perl's C<printf>.
S<Default: C<--E<gt> %s E<lt>-->.>
=item C<id-indent>=I<INDENT>
Indentation of nested typog-inspect tags.
-Only used in ``discovery'' mode (first form), i.e., if B<--all> is active.
+Only used in ``discovery mode'' (first form), i.e., if S<B<--all>> is active.
S<Default: 8.>
=item C<id-max-length>=I<MAXIMUM-LENGTH>
-Set the maximum length of a matching id for printing.
-It a matching id exceeds this length it will be truncated
+Set the maximum length of a matching I<ID> for printing.
+It a matching I<ID> exceeds this length it will be truncated
and the last three characters (short of I<MAXIMUM-LENGTH>) will be replaced by dots.
S<Default: 40.>
@@ -9874,11 +11713,11 @@ Color of lines with horizontal S<breakpoints C<@@>>.
=item C<id-color>
-Color of matching ids when printed inline.
+Color of matching I<ID>s when printed inline.
=item C<id-heading-color>
-Color of matching ids when printed in heading form.
+Color of matching I<ID>s when printed in heading form.
=item C<line-break-pass-color>
@@ -9947,15 +11786,93 @@ C<bold>, C<dark>, C<italic>, C<underline>, C<reverse>
=back
+=head2 Some Common Encodings
+
+The following list shows some encodings
+that are suitable for S<option B<--encoding>>.
+
+=over 4
+
+=item Latin-1, Western European
+
+C<iso-8859-1>, C<cp850>, C<cp860>, C<cp1252>
+
+=item Latin-2, Central European
+
+C<iso-8859-2>, C<cp852>, C<cp1250>
+
+=item Latin-3, South European (Esperanto, Maltese)
+
+C<iso-8859-3>
+
+=item Latin-4, North European (Baltics)
+
+C<iso-8859-4>
+
+=item Cyrillics
+
+C<iso-8859-5>, C<cp855>, C<cp866> (Ukrainian), C<cp1251>
+
+=item Arabic
+
+C<iso-8859-6>, C<cp864>, C<cp1006> (Farsi), C<cp1256>
+
+=item Greek
+
+C<iso-8859-7>, C<cp737>, C<cp1253>
+
+=item Hebrew
+
+C<iso-8859-8>, C<cp862>, C<cp1255>
+
+=item Turkish
+
+C<iso-8859-9>, C<cp857>, C<cp1254>
+
+=item Nordic
+
+C<iso-8859-10>, C<cp865>, C<cp861> (Icelandic)
+
+=item Thai
+
+C<iso-8859-11>, C<cp874>
+
+=item Baltic
+
+C<iso-8859-13>, C<cp775>, C<cp1257>
+
+=item Celtic
+
+C<iso-8859-14>
+
+=item Latin-9 (sometimes called Latin0)
+
+C<iso-8859-15>
+
+=item Latin-10
+
+C<iso-8859-16>
+
+=back
+
+
=head1 EXIT STATUS
The exit status is 0 if at least one I<ID> matched I<REGEXP>,
1 if no I<ID> matched I<REGEXP>, and 2 if an error occurred.
+=head1 CAVEATS
+
+The end tag C<< </typog-inspect> >> sometimes gets placed too early in the output and the trace
+I<seems> truncated. However, LaTeX reliably logs the requested the trace information, but the
+write operations for trace data and the code which is used to print the S<end tag> are not
+synchronized.
+
+
=head1 SEE ALSO
-B<grep>(1), B<printf>(3), B<Term::ANSIColor>(pm)
+B<grep>(1), B<printf>(3), B<Encode::Supported>(pm), B<Term::ANSIColor>(pm)
=cut
diff --git a/macros/latex/contrib/typog/typog.ins b/macros/latex/contrib/typog/typog.ins
index 06378d86bb..23c8b33366 100644
--- a/macros/latex/contrib/typog/typog.ins
+++ b/macros/latex/contrib/typog/typog.ins
@@ -1,11 +1,11 @@
%% Copyright (C) 2024 by Ch. L. Spiel
%%
%% This work may be distributed and/or modified under the conditions
-%% of the LaTeX Project Public License, either version 1.3 of this
+%% of the LaTeX Project Public License, either version 1.3c of this
%% license or (at your option) any later version. The latest version
%% of this license is in
-%% http://www.latex-project.org/lppl.txt
-%% and version 1.3 or later is part of all distributions of LaTeX
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2003/12/01 or later.
@@ -23,11 +23,11 @@ This is a generated file.
Copyright (C) 2024 by Ch. L. Spiel
This work may be distributed and/or modified under the conditions
-of the LaTeX Project Public License, either version 1.3 of this
+of the LaTeX Project Public License, either version 1.3c of this
license or (at your option) any later version. The latest version
of this license is in
- http://www.latex-project.org/lppl.txt
-and version 1.3 or later is part of all distributions of LaTeX
+ https://www.latex-project.org/lppl.txt
+and version 1.3c or later is part of all distributions of LaTeX
version 2003/12/01 or later.
This work has the LPPL maintenance status `maintained'.
@@ -37,7 +37,9 @@ The Current Maintainer of this work is Ch. L. Spiel.
This work consists of the files typog.dtx and typog.ins
and the derived files typog.sty, slant-angle.mp,
crooked-paragraphs.mp, smooth-parshapes.mp, title.mp,
-typog-example.tex, typog-nomt.tex, typog-grep.pl,
+typog-example.tex, typog-minimal-test.tex,
+typog-without-microtype-test.tex
+typog-grep.pl.in, typog-grep.pl,
typog-grep.pod, and teximan2latex.sed.
@@ -48,20 +50,22 @@ typog-grep.pod, and teximan2latex.sed.
\generate{\file{typog.sty}{\from{\source}{package}}
\file{typog-example.tex}{\from{\source}{example}}
- \file{typog-nomt.tex}{\from{\source}{nomicrotype}}
- \file{typog.ist}{\from{\source}{index-style}}}
+ \file{typog-minimal-test.tex}{\from{\source}{minimal-test}}
+ \file{typog-without-microtype-test.tex}{\from{\source}{without-microtype}}}
\nopostamble
-\generate{\file{title.mp}{\from{\source}{title}}
+\generate{\file{crooked-paragraphs.mp}{\from{\source}{crookedparagraphs}}
\file{slant-angle.mp}{\from{\source}{slantangle}}
- \file{crooked-paragraphs.mp}{\from{\source}{crookedparagraphs}}
- \file{smooth-parshapes.mp}{\from{\source}{smoothparshapes}}}
+ \file{smooth-parshapes.mp}{\from{\source}{smoothparshapes}}
+ \file{title.mp}{\from{\source}{title}}
+ \file{typog.gst}{\from{\source}{changes-style}}
+ \file{typog.ist}{\from{\source}{index-style}}}
\nopreamble
\generate{\file{teximan2latex.sed}{\from{\source}{teximan2latex}}
- \file{typog-grep.pl}{\from{\source}{typog-grep}}
+ \file{typog-grep.pl.in}{\from{\source}{typog-grep}}
\file{typog-grep.pod}{\from{\source}{typog-grep-documentation}}}
diff --git a/macros/latex/contrib/uantwerpendocs/beamerthemeuantwerpenuserguide.pdf b/macros/latex/contrib/uantwerpendocs/beamerthemeuantwerpenuserguide.pdf
index b945b20268..16e6629f51 100644
--- a/macros/latex/contrib/uantwerpendocs/beamerthemeuantwerpenuserguide.pdf
+++ b/macros/latex/contrib/uantwerpendocs/beamerthemeuantwerpenuserguide.pdf
Binary files differ
diff --git a/macros/latex/contrib/uantwerpendocs/uantwerpenbamathesis-example.pdf b/macros/latex/contrib/uantwerpendocs/uantwerpenbamathesis-example.pdf
index 2f352496b5..12a454ac52 100644
--- a/macros/latex/contrib/uantwerpendocs/uantwerpenbamathesis-example.pdf
+++ b/macros/latex/contrib/uantwerpendocs/uantwerpenbamathesis-example.pdf
Binary files differ
diff --git a/macros/latex/contrib/uantwerpendocs/uantwerpencoursetext-example.pdf b/macros/latex/contrib/uantwerpendocs/uantwerpencoursetext-example.pdf
index ec50b217d9..9f65c9a371 100644
--- a/macros/latex/contrib/uantwerpendocs/uantwerpencoursetext-example.pdf
+++ b/macros/latex/contrib/uantwerpendocs/uantwerpencoursetext-example.pdf
Binary files differ
diff --git a/macros/latex/contrib/uantwerpendocs/uantwerpendocs.dtx b/macros/latex/contrib/uantwerpendocs/uantwerpendocs.dtx
index 141b590a99..acddbf252f 100644
--- a/macros/latex/contrib/uantwerpendocs/uantwerpendocs.dtx
+++ b/macros/latex/contrib/uantwerpendocs/uantwerpendocs.dtx
@@ -35,11 +35,11 @@
%<le>\ProvidesClass{uantwerpenletter}
%<ex>\ProvidesClass{uantwerpenexam}
%<bmr>\ProvidesPackage{beamerthemeuantwerpen}
-%<cls|ct|bmt|pt|rp|le|ex|bmr> [2024/04/09 v4.6 .dtx skeleton file]
+%<cls|ct|bmt|pt|rp|le|ex|bmr> [2024/06/04 v4.7 .dtx skeleton file]
%<*driver>
\documentclass[a4paper]{ltxdoc}
-\def\fileversion{4.6}
-\def\filedate{2024/04/09}%
+\def\fileversion{4.7}
+\def\filedate{2024/06/24}%
\usepackage{makeidx}
\usepackage{alltt}
\usepackage{longtable}
@@ -127,6 +127,7 @@
% multiple degree programs for exams and course texts, corrected
% disclaimers, replaced 'basic usage' in documentation by heavily
% commented examples}
+% \changes{v4.7}{2024/06/13}{\@ Minor bugfixes}
%
% \DoNotIndex{\newcommand,\newenvironment,\begin,\bfseries,\draw,\clip,\else,\fi,\if,\fill,\filldraw,\ifthenelse,\ifx,\textwidth,\node,\\,\@empty,\@tempdima,\@tempdimb,\@tempswatrue,\{,\},\ ,\bf,\BODY,\break,\Alph,\and,\define@key,\color,\dx,\dy,\g,\gdef,\hbox,\tiny,\scriptsize,\footnotesize,\small,\normalsize,\large,\Large,\LARGE,\huge,\Huge,\l,\LaTeX,\let,\p@,\relax,\renewcommand,\Requirepackage,\textbf,\textsf,\texttt,\textbackslash,\vspace,\hspace,\hfill,\hskip,\vskip,\hline,\vrule,\typeout,\usebox,\end,\paperheight,\paperwidth,\par,\NewDocumentCommand,\seq}
% \setlength{\parindent}{0em}
@@ -1043,6 +1044,7 @@
\@author
\end{center}
]
+
\kant[11]
\kant[12]
@@ -1216,8 +1218,8 @@
\titlepageimage{Images/uantwerpen-keyboard.jpg}
%% some data about your manuscript
-\isbn{987-90-57285-34-7} %% don't specify this if you don't want one
-\depot{D/2024/12.293/03} %% idem
+%% \isbn{987-90-57285-34-7} %% only secify one if you have obtained one!
+%% \depot{D/2024/12.293/03} %% idem
\begin{document}
@@ -1370,8 +1372,8 @@
\titlepageimage{Images/uantwerpen-keyboard.jpg}
%% some data about your manuscript
-\isbn{987-90-57285-34-7} %% don't specify this if you don't want one
-\depot{D/2024/12.293/03} %% idem
+%% \isbn{987-90-57285-34-7} %% only secify one if you have obtained one!
+%% \depot{D/2024/12.293/03} %% idem
\begin{document}
@@ -4654,8 +4656,8 @@ we-nl-ma-wiftw = Master of Science in wiskunde: financiële en toegepaste wiskun
xshift=1pt]
at (3.5cm,\paperheight-6.4cm)
{\sethlcolor{maincolor}%
- \textsf{\textbf{\reversevideo{\@title}}}\\
- \textsf{\reversevideo{\@subtitle}}};
+ \textsf{\textbf{\reversevideo{\@title}}}%
+ \ifx\@subtitle\empty\else\\\textsf{\reversevideo{\@subtitle}}\fi};
\node
[anchor=north west,font=\LARGE,yshift=-1cm,xshift=-1pt]
at (title.south west)
diff --git a/macros/latex/contrib/uantwerpendocs/uantwerpendocs.pdf b/macros/latex/contrib/uantwerpendocs/uantwerpendocs.pdf
index cbda7bbd35..be9b782f96 100644
--- a/macros/latex/contrib/uantwerpendocs/uantwerpendocs.pdf
+++ b/macros/latex/contrib/uantwerpendocs/uantwerpendocs.pdf
Binary files differ
diff --git a/macros/latex/contrib/uantwerpendocs/uantwerpenexam-example1.pdf b/macros/latex/contrib/uantwerpendocs/uantwerpenexam-example1.pdf
index cc3638199c..23e7289e70 100644
--- a/macros/latex/contrib/uantwerpendocs/uantwerpenexam-example1.pdf
+++ b/macros/latex/contrib/uantwerpendocs/uantwerpenexam-example1.pdf
Binary files differ
diff --git a/macros/latex/contrib/uantwerpendocs/uantwerpenexam-example2.pdf b/macros/latex/contrib/uantwerpendocs/uantwerpenexam-example2.pdf
index 611e975a2c..3227bee08f 100644
--- a/macros/latex/contrib/uantwerpendocs/uantwerpenexam-example2.pdf
+++ b/macros/latex/contrib/uantwerpendocs/uantwerpenexam-example2.pdf
Binary files differ
diff --git a/macros/latex/contrib/uantwerpendocs/uantwerpenletter-example.pdf b/macros/latex/contrib/uantwerpendocs/uantwerpenletter-example.pdf
index ce7f605387..d29ccbeab3 100644
--- a/macros/latex/contrib/uantwerpendocs/uantwerpenletter-example.pdf
+++ b/macros/latex/contrib/uantwerpendocs/uantwerpenletter-example.pdf
Binary files differ
diff --git a/macros/latex/contrib/uantwerpendocs/uantwerpenphdthesis-example1.pdf b/macros/latex/contrib/uantwerpendocs/uantwerpenphdthesis-example1.pdf
index 3687884a6e..99668c6958 100644
--- a/macros/latex/contrib/uantwerpendocs/uantwerpenphdthesis-example1.pdf
+++ b/macros/latex/contrib/uantwerpendocs/uantwerpenphdthesis-example1.pdf
Binary files differ
diff --git a/macros/latex/contrib/uantwerpendocs/uantwerpenphdthesis-example2.pdf b/macros/latex/contrib/uantwerpendocs/uantwerpenphdthesis-example2.pdf
index 0ff9741397..9645cf2ee1 100644
--- a/macros/latex/contrib/uantwerpendocs/uantwerpenphdthesis-example2.pdf
+++ b/macros/latex/contrib/uantwerpendocs/uantwerpenphdthesis-example2.pdf
Binary files differ
diff --git a/macros/latex/contrib/uantwerpendocs/uantwerpenreport-example.pdf b/macros/latex/contrib/uantwerpendocs/uantwerpenreport-example.pdf
index 26f5c6fd8a..c3610d3734 100644
--- a/macros/latex/contrib/uantwerpendocs/uantwerpenreport-example.pdf
+++ b/macros/latex/contrib/uantwerpendocs/uantwerpenreport-example.pdf
Binary files differ
diff --git a/macros/latex/contrib/ulthese/README.md b/macros/latex/contrib/ulthese/README.md
index 436842396a..30ca019967 100644
--- a/macros/latex/contrib/ulthese/README.md
+++ b/macros/latex/contrib/ulthese/README.md
@@ -1,15 +1,14 @@
-# Package ulthese
+# Thesis class for Université Laval
-The package provides a class based on memoir and compatible with LaTeX
-and XeLaTeX to prepare theses and memoirs compliant with the
+The package provides a class based on memoir and compatible with
+pdfLaTeX and XeLaTeX to prepare theses and memoirs compliant with the
presentation rules set forth by the Faculty of Graduate Studies of
Université Laval, Québec, Canada. The class also comes with an
extensive set of templates for the various types of theses and memoirs
offered at Laval.
-Please note that the documentation for the class and the comments in
-the templates are written in French, the language of the target
-audience.
+The documentation for the class and the comments in the templates are
+written in French, the language of the target audience.
## Licence
@@ -18,11 +17,11 @@ later version.
## Version
-5.3a (2021-08-09)
+6.0 (2024-07-02)
## Author
-Université Laval <ulthese-dev@bibl.ulaval.ca>
+Vincent Goulet for Université Laval <ulthese-dev@bibl.ulaval.ca>
## Source code repository
@@ -30,20 +29,20 @@ https://gitlab.com/vigou3/ulthese/
> The rest of this file is in French for the target audience.
-# Paquetage ulthese
+# Classe pour les thèses et mémoires de l'Université Laval
Le paquetage **ulthese** fournit la classe du même nom permettant de
composer des thèses et des mémoires immédiatement conformes aux règles
-générales de présentation matérielle de la Faculté des études
-supérieures et postdoctorales (FESP) de l'[Université
-Laval](https://www.ulaval.ca).
+générales et complémentaires de présentation matérielle de la Faculté
+des études supérieures et postdoctorales (FESP) de l'[Université
+Laval](https://www.ulaval.ca).
La classe permet également de produire les types de documents suivants
selon les mêmes règles de présentation que les thèses et mémoires:
examen de doctorat, essai de maîtrise, projet de recherche, rapport de
stage.
-La classe est compatible avec LaTeX et XeLaTeX.
+La classe est compatible avec pdfLaTeX et XeLaTeX.
## Contenu du paquetage
@@ -56,16 +55,18 @@ La classe est compatible avec LaTeX et XeLaTeX.
## Installation
-Pour installer la classe ulthese, compiler avec LaTeX le fichier
-`ulthese.ins`, en exécutant
+Le paquetage **ulthese** est distribué via le réseau de sites
+Comprehensive TeX Archive Network (CTAN) et il fait partie des
+distributions TeX standards. Par conséquent, nous recommandons
+fortement d'installer ou de mettre à jour le paquetage à l'aide du
+gestionnaire de paquetages de votre distribution.
- latex ulthese.ins
+Les experts TeX peuvent générer la classe en compilant le fichier
+`ulthese.ins` avec LaTeX:
-depuis une ligne de commande. On peut aussi ouvrir le fichier
-`ulthese.ins` dans son éditeur LaTeX et lancer la compilation avec
-LaTeX, pdfTeX, pdfLaTeX ou XeLaTeX depuis celui-ci.
+ latex ulthese.ins
-La compilation du fichier ulthese.ins générera plusieurs fichiers:
+La compilation générera plusieurs fichiers:
1. la classe elle-même:
- `ulthese.cls`
@@ -97,16 +98,18 @@ Les gabarits inutiles peuvent être supprimés.
## Documentation
Le fichier `ulthese.pdf` contient la documentation complète de la
-classe et des gabarits. Le document peut être recréé à partir du code
-source avec les commandes
+classe. Le document peut être recréé à partir du code source avec les
+commandes
- pdflatex ulthese.dtx
+ xelatex ulthese.dtx
makeindex -s gglo.ist -o ulthese.gls ulthese.glo
- pdflatex ulthese.dtx
+ xelatex ulthese.dtx
+ xelatex ulthese.dtx
## Historique des versions
-L'historique des versions de la classe se trouve en annexe de la documentation.
+L'historique des versions de la classe se trouve en annexe de la
+documentation.
## Commentaires et suggestions
@@ -116,11 +119,5 @@ des améliorations à la classe.
## Aide additionnelle
-Faire appel aux ressources suivantes, dans l'ordre:
-
-1. consulter le [WikiThèse de l'Université Laval](http://www.theses.ulaval.ca/wiki/);
-
-2. consulter les archives de la liste de distribution
- [ulthese-aide](http://listes.ulaval.ca/listserv/archives/ulthese-aide.html);
-
-3. écrire à la liste de distribution [ulthese-aide](mailto:ulthese-aide@listes.ulaval.ca).
+Vous pouvez obtenir de l'aide additionnelle sur l'utilisation de la
+classe en écrivant à l'adresse: ulthese-aide@listes.ulaval.ca.
diff --git a/macros/latex/contrib/ulthese/ulthese.dtx b/macros/latex/contrib/ulthese/ulthese.dtx
index 0d79080881..58da90e888 100644
--- a/macros/latex/contrib/ulthese/ulthese.dtx
+++ b/macros/latex/contrib/ulthese/ulthese.dtx
@@ -1,340 +1,490 @@
-% \iffalse meta-comment
+% \iffalse meta-comment -*- mode: doctex -*-
%
-% Copyright (C) 2021 Universite Laval
+% Thesis class for Universite Laval
+%
+% Copyright (C) 2012-2024 Universite Laval
%
% This file may be distributed and/or modified under the conditions
% of the LaTeX Project Public License, either version 1.3c of this
% license or (at your option) any later version. The latest version
% of this license is in:
%
-% http://www.latex-project.org/lppl.txt
-%
-% and version 1.3c or later is part of all distributions of LaTeX
-% version 2006/05/20 or later.
-%
-% This work has the LPPL maintenance status `maintained'.
-%
-% The Current Maintainer of this work is Universite Laval
-% <ulthese-dev@bibl.ulaval.ca>.
-%
-% This work consists of the files ulthese.dtx and ulthese.ins
-% and the derived files listed in the README.md file.
+% https://www.latex-project.org/lppl.txt
%
+% The Current Maintainer of this work is Vincent Goulet for
+% Universite Laval <ulthese-dev@bibl.ulaval.ca>.
% \fi
%
% \iffalse
%<*dtx>
\ProvidesFile{ulthese.dtx}
%</dtx>
-%<class>\NeedsTeXFormat{LaTeX2e}[2009/09/24]
+%<class>\NeedsTeXFormat{LaTeX2e}[2021/06/01]
%<class>\ProvidesClass{ulthese}%
%<*class>
- [2021/08/09 v5.3a Universite Laval thesis and memoir class]
+ [2024/07/02 v6.0 Thesis class for Universite Laval]
%</class>
%<*driver>
-\documentclass[11pt,english,french]{ltxdoc}
- \usepackage[utf8]{inputenc}
- \usepackage[T1]{fontenc}
- \usepackage{natbib}
+\documentclass[article,oneside,11pt,x11names,english,french]{memoir}
\usepackage{babel}
\usepackage[autolanguage]{numprint}
- \usepackage{microtype}
- \usepackage[scaled=0.92]{helvet}
- \usepackage[scaled=1.02]{inconsolata}
- \usepackage[sc]{mathpazo}
- \usepackage{fontawesome}
+ \usepackage[round,semicolon,authoryear,sectionbib]{natbib}
\usepackage{metalogo}
- \usepackage{tabularx,booktabs,caption}
+ \usepackage{enumitem}
+ \usepackage{relsize}
+ \usepackage{awesomebox}
+
+ %% Le chargement de doc.sty cause des conflits avec memoir. Il faut:
+ %%
+ %% - annuler la définition de l'environnement 'glossary' de memoir;
+ %% - remettre en place les définitions standards des commandes pour
+ %% le glossaire sur lesquelles se base doc.sty (nécessaire aussi
+ %% pour l'index, mais il n'est pas utilisé).
+ \let\theglossary\relax % avoid conflict with doc.sty
+ \let\endtheglossary\relax % avoid conflict with doc.sty
+ \makeatletter
+ \def\makeglossary{%
+ \newwrite\@glossaryfile
+ \immediate\openout\@glossaryfile=\jobname.glo
+ \def\glossary{\@bsphack\begingroup
+ \@sanitize
+ \@wrglossary}\typeout
+ {Writing glossary file \jobname.glo }%
+ \let\makeglossary\@empty
+ }
+ \@onlypreamble\makeglossary
+ \def\@wrglossary#1{%
+ \protected@write\@glossaryfile{}%
+ {\string\glossaryentry{#1}{\thepage}}%
+ \endgroup
+ \@esphack}
+ \def\glossary{\@bsphack\begingroup\@sanitize\@index}
+ \@twosidefalse\@mparswitchfalse % turn off twoside option
+ \makeatother
+ \usepackage{doc}
+ \def\changes#1#2#3{\glossary{#1>#3}} % simplification
\DisableCrossrefs
\CodelineNumbered
\RecordChanges
- \GlossaryPrologue{\section*{Historique des versions}%
- \addcontentsline{toc}{section}{Historique des versions}}
+ %\OnlyDescription
+ \DontCheckModules
+
+ %% Polices de caractères
+ \iftutex
+ \usepackage[babel=true]{microtype}
+ \usepackage{fontspec}
+ \usepackage{unicode-math}
+ \setmainfont{STIXTwoText}
+ [
+ Extension = .otf,
+ UprightFont = *-Regular,
+ BoldFont = *-SemiBold,
+ ItalicFont = *-Italic,
+ BoldItalicFont = *-SemiBoldItalic,
+ Numbers = {Proportional,OldStyle},
+ Scale = 1,
+ Ligatures = TeX
+ ]
+ \setsecheadstyle{\normalfont\Large\sffamily\bfseries\raggedright}
+ \setsubsecheadstyle{\normalfont\large\sffamily\bfseries\raggedright}
+ \setsubsubsecheadstyle{\normalfont\sffamily\bfseries\raggedright}
+ \else
+ \usepackage[babel=true]{microtype}
+ \usepackage[utf8]{inputenc}
+ \usepackage[T1]{fontenc}
+ \usepackage[stix2]{newtxmath}
+ \fi
+ \usepackage[book,medium,proportional,oldstyle,scale=0.92]{FiraSans}
+ \usepackage[medium,lining,scale=0.90]{FiraMono}
%% Couleurs
\usepackage{xcolor}
- \definecolor{link}{rgb}{0,0.4,0.6} % ~RoyalBlue de dvips
- \definecolor{url}{rgb}{0.6,0,0} % rouge foncé
- \definecolor{citation}{rgb}{0,0.5,0} % vert foncé
-
- %% Liste description alignée à gauche
- \usepackage{enumitem}
- \setlist[description]{leftmargin=*,align=left}
-
- %% Environnement pour remarques
- \usepackage{amsthm}
- \theoremstyle{definition}
- \newtheorem*{rem}{Remarque}
+ \definecolor{link}{rgb}{0,0.4,0.6} % liens internes
+ \definecolor{url}{rgb}{0.6,0,0} % liens externes
+ \definecolor{citation}{rgb}{0,0.5,0} % citations
%% Hyperliens
- \usepackage{hyperref}
- \hypersetup{%
- pdfauthor = {Faculté des études supérieures et postdoctorales},
- pdftitle = {Guide de l'utilisateur de la classe ulthese},
- colorlinks = {true},
- linktocpage = {true},
- urlcolor = {url},
- linkcolor = {link},
- citecolor = {citation},
- pdfpagemode = {UseOutlines},
- pdfstartview = {Fit},
- bookmarksopen = {true},
- bookmarksnumbered = {true},
- bookmarksdepth = {subsubsection}}
- \addto\extrasfrench{%
- \def\appendixautorefname{annexe}%
- \def\tableautorefname{tableau}%
- \def\subsectionautorefname{section}%
+ \AtEndPreamble{%
+ \usepackage{bookmark} % charge hyperref
+ \hypersetup{%
+ pdftitle = {Guide d'utilisation de la classe ulthese},
+ pdfauthor = {Faculté des études supérieures et postdoctorales},
+ colorlinks = {true},
+ urlcolor = {url},
+ linkcolor = {link},
+ citecolor = {citation}}
+ \bookmarksetup{%
+ open = true,
+ depth = 3,
+ numbered = true}
+ \addto\extrasfrench{%
+ \def\subsectionautorefname{section}%
+ }
}
%% Paramétrage de babel
- \frenchbsetup{%
- StandardItemizeEnv=true, % listes standards
+ \frenchsetup{%
+ SmallCapsFigTabCaptions=false, % pas de petites capitales
ThinSpaceInFrenchNumbers=true, % espace fine dans les nombres
og=«, fg=» % « et » sont les guillemets
}
- \def\frenchtablename{{\scshape Tab.}}
+ \renewcommand*\frenchtablename{Tab.}
+ \renewcommand*\frenchfigurename{Fig.}
+ \renewcommand*\generalname{Général} % mot clé du glossaire
+
+ %% Désactiver le niveau des chapitres de memoir
+ \let\chapter\relax
+ \counterwithout{section}{chapter}
+
+ %% Utiliser une numérotation des sections à trois niveaux
+ \setsecnumdepth{subsubsection}
+ \maxsecnumdepth{subsubsection}
+
+ % Les annexes sont des sections, ici. Redéfinir la
+ % commande \appendix comme dans la classe article.
+ \makeatletter
+ \renewcommand*\appendix{\par
+ \setcounter{section}{0}
+ \gdef\thesection{\@Alph\c@section}}
+ \makeatother
+
+ %% Aligner à gauche l'environnement description
+ \setlist[description]{leftmargin=*,align=left}
+
+ %% Configurer le glossaire
+ \addto\extrasfrench{%
+ \def\glossaryname{Historique des versions}}
+ \GlossaryPrologue{\section*{\glossaryname}%
+ \addcontentsline{toc}{section}{\glossaryname}}
+ \setcounter{GlossaryColumns}{2}
+ \setlength{\GlossaryMin}{5cm}
- %% Commandes de mise en forme spéciales
- \newcommand{\class}[1]{\textsf{#1}}
- \newcommand{\pkg}[1]{\textbf{#1}}
+ %% Nouvel environnement de type \DescribeMacro pour les options de
+ %% la classe
+ \NewDocElement[envlike,notoplevel,printtype=\emph{option}]{Option}{option}
- %% Commandes pour les liens vers la documentation
- \newcommand{\link}[2]{\href{#1}{#2~\raisebox{-0.2ex}{\faExternalLink}}}
- \newcommand{\doc}[2][documentation]{\link{#2}{#1}}
+ %% Commandes sémantiques additionnelles
+ \let\class\textsf
+ \let\pkg\textbf
+ \makeatletter
+ \renewcommand\code{\bgroup\@makeother\_\@makeother\~\@makeother\$\code@}
+ \def\code@#1{{\normalfont\ttfamily\hyphenchar\font=-1 #1}\egroup}
+ \makeatother
+ \newcommand*\ulthesename{ulthese}
+ \newcommand*\ulclass{\class{\ulthesename}}
+ \newcommand*\btx{\textsc{Bib}\TeX}
- %% Francisation d'un mot clé de l'historique des commandes
- \def\generalname{Général}
+ %% Redéfinir \year pour utiliser l'information de \filedate plutôt
+ %% que la date de compilation
+ \def\parsedate#1/#2/#3\relax{\def\year{#1}}
+
+ %% Convertir la date en format ISO
+ \def\isodate#1/#2/#3\relax{#1-#2-#3}
+
+ \MakeShortVerb{\|}
\begin{document}
\DocInput{ulthese.dtx}
\end{document}
%</driver>
% \fi
-% \CheckSum{914}
% \DoNotIndex{\',\^,\`,\ ,\ae}
% \DoNotIndex{\RequirePackage,\ExecuteOptions,\ProcessOptions}
% \DoNotIndex{\newcommand,\newcommand*}
% \DoNotIndex{\setlength}
+% \changes{6.0}{2024-05-22}{Prise en compte des règles de présentation
+% entrées en vigueur à l'automne 2023 qui n'exigent plus une
+% bibliographie par chapitre pour les thèses et mémoire par
+% intégration d'articles.}
+% \changes{6.0}{2024-05-22}{Suppression des options
+% \texttt{bibchapitre} et \texttt{bibsection}.}
+% \changes{6.0}{2024-07-02}{Ajout du grade de maître en travail
+% social.}
+% \changes{6.0}{2024-07-02}{Retrait du grade de maître en
+% physiothérapie.}
+% \changes{6.0}{2024-05-24}{Utilisation du codage de caractères UTF-8
+% par défaut dans la classe. Modification des gabarits en
+% conséquence.}
+% \changes{6.0}{2024-06-17}{Révision exhaustive de la documentation.}
% \changes{4.4}{2017-05-16}{Prise en charge des bibliographies
-% multiples pour les thèses et mémoires par articles.}
+% multiples pour les thèses et mémoires par articles.}
+% \changes{4.4}{2017-05-15}{Ajout de l'option \texttt{bibchapitre}.}
+% \changes{4.4}{2017-05-15}{Ajout de l'option \texttt{bibsection}.}
% \changes{4.4}{2017-05-16}{Documentation révisée, principalement ce
-% qui touche à la préparation de la bibliographie.}
+% qui touche à la préparation de la bibliographie.}
% \changes{4.3}{2017-03-01}{Nouvelles options pour les titres de
-% docteur en musique, maître en architecture, maître en
-% ergothérapie, maître en physiothérapie et maître en
-% psychoéducation.}
-% \changes{4.3}{2017-03-01}{Modifications à la composition des sigles de
-% grades.}
+% docteur en musique, maître en architecture, maître en ergothérapie,
+% maître en physiothérapie et maître en psychoéducation.}
+% \changes{4.3}{2017-03-01}{Modifications à la composition des sigles
+% de grades.}
% \changes{4.3}{2017-03-01}{Vérification de la compatibilité entre le
-% grade et les options multifacultaire, cotutelle, bidiplomation et
-% extension.}
+% grade et les options \texttt{multifacultaire}, \texttt{cotutelle},
+% \texttt{bidiplomation} et \texttt{extension}.}
% \changes{4.3}{2017-03-01}{Améliorations à la documentation.}
-% \changes{4.2}{2016-03-29}{Ajout de l'option «examen».}
+% \changes{4.2}{2016-03-29}{Ajout de l'option \texttt{examen}.}
% \changes{4.1}{2016-02-13}{Paquetage geometry déclaré incompatible
-% avec la classe.}
-% \changes{4.0}{2015-06-12}{Nouvelles règles de présentation matérielle
-% de la FESP: recto seulement, page frontispice.}
-% \changes{3.1}{2014-05-23}{Prise en charge de la maîtrise en bidiplomation.}
+% avec la classe.}
+% \changes{4.0}{2015-06-12}{Nouvelles règles de présentation
+% matérielle de la FESP: recto seulement, page frontispice.}
+% \changes{3.1}{2014-05-23}{Prise en charge de la maîtrise en
+% bidiplomation.}
% \changes{3.0a}{2014-03-24}{Modifications et corrections à la
-% documentation, notamment relativement à la configuration de natbib.}
+% documentation, notamment relativement à la configuration de
+% \textbf{natbib}.}
% \changes{3.0}{2014-01-06}{Déclaration du grade en option de la
-% classe.}
-% \changes{3.0}{2014-01-06}{Moteur XeLaTeX supporté.}
-% \changes{3.0}{2014-01-06}{Ajout de l'option nobabel.}
+% classe.}
+% \changes{3.0}{2014-01-06}{Moteur {\XeLaTeX} supporté.}
+% \changes{3.0}{2014-01-06}{Ajout de l'option \texttt{nobabel}.}
% \changes{2.1}{2013-01-16}{Utilisation transparente de la police
-% Helvetica pour la page de titre.}
+% Helvetica pour la page de titre.}
% \changes{2.0}{2013-01-13}{Traitement automatique des longs titres.}
% \changes{1.0b}{2012-11-11}{Ajouts et corrections mineures dans la
-% documentation.}
+% documentation.}
% \changes{1.0a}{2012-10-17}{Précisions dans la documentation.}
% \changes{1.0}{2012-09-30}{Version initiale.}
% \GetFileInfo{ulthese.dtx}
-% \title{\class{ulthese}: la classe pour les thèses et mémoires de
-% l'Université Laval\thanks{Ce document décrit la classe
-% \class{ulthese}~\fileversion, datée du \filedate.}}
+%
+% \title{Guide d'utilisation de la classe {\ulclass} \\ pour les thèses et
+% mémoires \\ de l'Université Laval}
% \author{Faculté des études supérieures et postdoctorales\thanks{%
% Cette classe et sa documentation ont été rédigées par Vincent
% Goulet~(Faculté des sciences et de génie) avec la collaboration de
% Koassi D'Almeida~(Faculté des études supérieures et postdoctorales) et
-% de Pierre Lasou~(Bibliothèque).}}
-% \date{}
+% Pierre Lasou~(Bibliothèque).}}
+% \date{Version {\fileversion} du {\expandafter\isodate\filedate\relax}}
% \maketitle
%
% \section{Introduction}
%
-% La classe \class{ulthese} permet de composer avec {\LaTeX} ou
-% {\XeLaTeX} des thèses et mémoires immédiatement conformes aux règles
-% générales de présentation matérielle de la Faculté des études
-% supérieures et postdoctorales (FESP) de l'Université Laval. Ces
-% règles définissent principalement la présentation des pages de titre
-% des thèses et mémoires ainsi que la disposition du texte sur la
-% page. La classe en elle-même est donc relativement simple.
-%
-% Cependant, \class{ulthese} est basée sur la classe \class{memoir}
-% \citep{memoir}, une extension de la classe standard \class{book}
-% facilitant à plusieurs égards la préparation de documents d'allure
-% professionnelle dans {\LaTeX}. La classe \class{memoir} incorpore
-% d'office plus de 30 des paquetages les plus populaires\footnote{%
-% Consulter la section~18.24 de la documentation de \class{memoir}
-% pour la liste ou encore le journal de la compilation (\emph{log})
-% d'un document utilisant la classe \class{ulthese}.}. %
-% L'intégralité des fonctionnalités de \class{memoir} se retrouve donc
-% dans \class{ulthese}.
-%
-% La classe \class{memoir} fait partie des distributions {\LaTeX}
-% modernes; elle devrait donc être installée et disponible sur votre
-% système. Elle est livrée avec une %
-% \doc{http://texdoc.net/pkg/memoir} %
-% exhaustive: le guide de l'utilisateur fait près de 600~pages!
-% N'hésitez pas à vous y référer pour réaliser une mise en page
-% particulière.
-%
-% L'autre compagnon naturel de la présente documentation est
-% \doc[Rédaction avec {\LaTeX}]{http://texdoc.net/pkg/formation-latex-ul} ^^A
-% \citep{formation-latex-ul}, la formation {\LaTeX} de l'Université Laval.
-% Vous y trouverez des informations additionnelles sur l'utilisation des
-% classes \class{ulthese} et \class{memoir}.
+% La classe {\ulclass} permet de composer des thèses et mémoires
+% immédiatement conformes aux règles générales et complémentaires de
+% présentation de la Faculté des études supérieures et postdoctorales
+% (FESP) de l'Université Laval. Ces règles définissent principalement
+% la présentation des pages de titre des thèses et mémoires, ainsi que
+% la disposition du texte sur la page.
+%
+% La composition d'un manuscript avec la classe {\ulclass} requiert une
+% distribution {\TeX} récente et à jour. Nous recommandons les
+% distributions %
+% \href{https://tug.org/texlive}{{\TeX}~Live}~---%
+% ou sa variante pour macOS %
+% \href{https://tug.org/mactex}{Mac{\TeX}}~--- %
+% et %
+% \href{https://miktex.org}{MiK{\TeX}}. %
+% Vous pouvez également avoir recours à une plateforme de rédaction en
+% ligne comme %
+% \href{https://overleaf.com}{Overleaf}; %
+% leurs distributions {\TeX} satisfont généralement les conditions
+% ci-dessus.
+%
+% La classe {\ulclass} fait partie des distributions {\TeX} standards via
+% le paquetage %
+% \href{https://ctan.org/pkg/ulthese}{\pkg{ulthese}}. %
+% Dans la mesure où votre distribution est
+% à jour, vous devriez pouvoir l'utiliser sans autre intervention.
+%
+% Le compagnon naturel de la présente documentation est \emph{Rédaction
+% avec {\LaTeX}}, la formation {\LaTeX} de l'Université Laval. Vous y
+% trouverez sans doute une foule d'informations utiles pour la
+% préparation de votre thèse ou de votre mémoire. L'ouvrage fait
+% lui aussi partie des distributions {\TeX} standards, via le
+% paquetage %
+% \href{https://ctan.org/pkg/formation-latex-ul}{\pkg{formation-latex-ul}}. %
%
% \section{Démarrage rapide (pour les impatients)}
% \label{sec:utilisation:rapide}
%
-% La classe est livrée avec les distributions {\TeX}~Live, Mac{\TeX} et
-% MiK{\TeX}. Si vous utilisez l'une ou l'autre de ces distributions et
-% qu'elle est à jour\footnote{%
-% Validez à l'aide de l'assistant de mise à jour de votre
-% distribution.}, %
-% vous devriez pouvoir utiliser \class{ulthese} sans autre
-% intervention.
-%
-% Il est recommandé de segmenter tout document d'une certaine ampleur
-% dans des fichiers |.tex| distincts pour chaque partie ---
-% habituellement un fichier par chapitre. Le document complet est alors
-% composé à l'aide d'un fichier maître qui contient le préambule
-% {\LaTeX} et un ensemble de commandes \cmd{\include} pour réunir les
-% parties dans un tout.
+% La classe {\ulclass} est livrée avec un ensemble de gabarits sur
+% lesquels se baser pour le document maître de divers types de thèses
+% et de mémoires (standard, par articles, en cotutelle, en
+% bidiplomation), ainsi que pour les parties les plus usuelles
+% (résumés français et anglais, remerciements, avant-propos,
+% introduction, chapitres, conclusion, annexe). Les noms des fichiers
+% devraient permettre de facilement identifier leur contenu. Dans la
+% distribution {\TeX}~Live, les gabarits sont classés avec la
+% documentation.
%
-% La classe \class{ulthese} est livrée avec un ensemble de gabarits sur
-% lesquels se baser pour:
-% \begin{itemize}
-% \item le document maître de divers types de thèses et de mémoires
-% (standard, par articles, en cotutelle, en bidiplomation);
-% \item les fichiers des parties les plus usuelles (résumés français
-% et anglais, avant-propos, introduction, chapitres, conclusion,
-% etc.).
-% \end{itemize}
-% Les noms des fichiers devraient permettre de facilement identifier
-% leur contenu (c'est là une bonne pratique: le nom |rappels.tex|
-% parle de lui-même et résiste mieux aux changements à l'ordre des
-% chapitres que |chapitre1.tex|).
+% Pour débuter rapidement la rédaction de votre manuscrit, copiez les
+% gabarits appropriés dans votre dossier de travail et suivez les
+% directives qui s'y trouvent. Nous recommandons de compiler votre
+% manuscript avec {\XeLaTeX}.
%
-% Dans {\TeX}~Live, les gabarits sont classés avec la documentation de
-% la classe. Pour les utiliser, copiez les fichiers appropriés dans votre
-% dossier de travail.
+% La classe utilise le codage de caractères
+% \href{https://fr.wikipedia.org/wiki/UTF-8}{UTF-8}. Vous devez donc
+% obligatoirement utiliser ce type codage quand un fichier contient
+% des caractères non-ASCII (comme des lettres accentuées).
%
-% Pour débuter la rédaction, renommez le gabarit de document maître
-% approprié d'après votre numéro de dossier. Par exemple, l'étudiante
-% dont le numéro de dossier est 111555555 et qui entame la rédaction
-% d'une thèse par articles renommera le fichier
-% \begin{quote}
-% |gabarit-doctorat-articles.tex|
-% \end{quote}
-% en
-% \begin{quote}
-% |111555555.tex|.
-% \end{quote}
+% Le reste de ce guide contient les informations détaillées sur les
+% caractéristiques et fonctionnalités de la classe.
%
-% Les gabarits comportent des commentaires succincts pour vous guider
-% dans la préparation de votre document. La \autoref{sec:gabarits}
-% fournit les informations détaillées.
+% \changes{5.3a}{2021-08-09}{Ajout à la documentation de la
+% disponibilité d'une archive pour les personnes qui ne disposent pas
+% d'une installation de {\TeX} locale.}
+% \tipbox{Si vous n'avez pas accès aux gabarits parce qu'ils ne sont
+% pas inclus dans votre distribution ou parce que vous utilisez une
+% plateforme de rédaction en ligne, poursuivez votre lecture à la
+% \autoref{sec:installation}.}
%
% \section{Installation}
+% \label{sec:installation}
%
-% Cette section explique comment installer la classe \class{ulthese}
+% Cette section explique comment installer la classe {\ulclass}
% si elle n'est pas disponible sur votre système ou si la version
% n'est pas à jour.
%
-% La classe est distribuée sous forme d'une archive |ulthese.zip| via
-% le réseau de sites \emph{Comprehensive {\TeX} Archive Network} (CTAN):
+% La classe {\ulclass} est distribuée dans le paquetage %
+% \href{https://ctan.org/pkg/ulthese}{\pkg{ulthese}} %
+% via le réseau de sites \emph{Comprehensive {\TeX} Archive Network}
+% (CTAN). Celui-ci fait partie des distributions {\TeX} standards telles
+% que {TeX}~Live, Mac{\TeX} et MiK{\TeX}. Nous recommandons fortement
+% d'installer ou de mettre à jour \pkg{ulthese} à l'aide du
+% gestionnaire de paquetages de votre distribution {\TeX}. Par
+% exemple, avec {\TeX}~Live, vous pouvez effectuer ces opérations dans
+% l'assistant graphique, ou encore avec l'une ou l'autre des commandes
+% ci-dessous:
% \begin{quote}
-% \url{https://www.ctan.org/pkg/ulthese}
+% \code{tlmgr install ulthese}
+% \end{quote}
+% ou
+% \begin{quote}
+% \code{tlmgr update ulthese}
% \end{quote}
%
-% L'installation de la classe consiste à créer le fichier
-% |ulthese.cls| et les gabarits |.tex| à partir du code source
-% documenté se trouvant dans le fichier |ulthese.dtx|. Il est
-% recommandé de simplement créer ces fichiers dans le dossier de
-% travail de la thèse ou du mémoire.
-%
-% Pour procéder à l'installation, décompressez l'archive |ulthese.zip|
-% dans votre dossier de travail, puis compilez avec {\LaTeX} le fichier
-% |ulthese.ins| en exécutant la commande suivante depuis une invite
-% de commande:
+% S'il vous est impossible d'installer des paquetages ou de mettre à
+% jour la distribution {\TeX}~--- notamment si vous utilisez une
+% plateforme de rédaction en ligne~--- vous pouvez procéder à une
+% installation simplifiée de la classe dont la portée sera limitée à
+% votre projet. Pour ce faire, téléchargez l'archive %
% \begin{quote}
-% |latex ulthese.ins|
+% \code{ulthese-installation-projet.zip}
% \end{quote}
-% Vous pouvez aussi ouvrir le fichier |ulthese.ins| dans votre éditeur
-% de texte favori et lancer depuis celui-ci la compilation avec
-% {\LaTeX}, pdf{\LaTeX}, {\XeLaTeX} ou un autre moteur {\TeX}.
+% depuis le
+% \href{https://gitlab.com/vigou3/ulthese/-/releases}{dépôt du projet ulthese}
+% et décompressez celle-ci dans le répertoire de votre document. Vous
+% disposerez alors de tous les fichiers essentiels de la classe à
+% l'intérieur de ce projet.
%
-% \changes{5.3a}{2021-08-09}{Ajout à la documentation de la
-% disponibilité d'une archive pour les personnes qui ne disposent
-% pas d'une installation de {\TeX} locale.}
-% \begin{rem}
-% Si vous ne disposez pas d'une version de {\TeX} sur votre poste de
-% travail --- vraisemblablement parce que vous utilisez une
-% plateforme de rédaction en ligne --- téléchargez
-% l'archive |ulthese-sans-tex-local.zip| depuis le
-% \link{https://gitlab.com/vigou3/ulthese/-/releases}{dépôt du
-% projet}. Celle-ci contient tous les fichiers
-% normalement créés lors de l'installation de la classe.
-% \end{rem}
+% Si votre expertise {\TeX} vous pousse à préférer une installation
+% manuelle avec accès à l'intégralité du code source de la classe,
+% consultez les instructions qui se trouvent dans le fichier
+% \code{README.md} du paquetage.
%
% \section{Utilisation}
+% \label{sec:utilisation}
+%
+% La classe {\ulclass} est basée sur la classe %
+% \href{https://ctan.org/pkg/memoir}{\class{memoir}}, %
+% une extension de la classe standard \class{book} facilitant à
+% plusieurs égards la préparation de documents d'allure
+% professionnelle dans {\LaTeX}. L'intégralité des fonctionnalités de
+% \class{memoir} se retrouve donc dans {\ulclass}.
+%
+% La classe \class{memoir} fait partie des distributions {\TeX}
+% récentes; elle devrait donc être installée et disponible sur votre
+% système. La classe est livrée avec une documentation exhaustive: le
+% guide de l'utilisateur fait près de 600~pages! N'hésitez pas à vous
+% y référer pour réaliser une mise en page particulière.
+%
+% La classe {\ulclass} est compatible avec le moteur pdf{\LaTeX}.
+% Cependant, pour faciliter la gestion du codage des fichiers et des
+% polices de caractères, nous recommandons de compiler votre
+% manuscript avec le plus moderne moteur {\XeLaTeX}.
+%
+% \subsection{Gabarits}
+% \label{sec:utilisation:gabarits}
+%
+% La classe est livrée avec un ensemble de gabarits sur lesquels vous
+% baser pour:
+% \begin{itemize}
+% \item le document maître de divers types de thèses et de mémoires
+% (standard, par articles, en cotutelle, en bidiplomation);
+% \item les fichiers des parties les plus usuelles (résumés français
+% et anglais, remerciements, avant-propos, introduction, chapitres,
+% conclusion, annexe).
+% \end{itemize}
+% Vous pourriez devoir combiner les caractéristiques de deux gabarits
+% de document maître, par exemple pour une thèse en cotutelle par
+% articles.
+%
+% Les gabarits vous incitent à adopter le mode d'organisation des
+% fichiers de tout document d'une certaine ampleur, soit: un fichier
+% |.tex| par partie; un fichier maître contenant le préambule {\LaTeX}
+% et un ensemble de commandes \cmdprint{\include} pour réunir les
+% parties dans un tout.
+%
+% Si vous utilisez la version de la classe fournie avec votre
+% distribution {\TeX}, les gabarits peuvent être classés avec la
+% documentation (c'est le cas dans {\TeX}~Live). Si vous avez plutôt
+% effectué une installation locale de la classe, ou si vous l'avez
+% installée manuellement, les gabarits se trouvent dans votre
+% dossier de travail.
%
-% La classe est compatible avec les moteurs {\LaTeX} traditionnels
-% ainsi qu'avec le plus récent moteur {\XeLaTeX}.
+% Nous recommandons fortement de rédiger votre manuscript à partir des
+% gabarits. Il peut aussi s'avérer utile de suivre un gabarit en lisant
+% la présente section.
+%
+% \tipbox{Il n'y a pas de gabarit spécifique pour un examen de
+% doctorat, pour un essai de maîtrise, pour un projet de recherche ou
+% pour un rapport de stage. Utilisez un gabarit de thèse ou de
+% maîtrise avec l'une ou l'autre des options |examen|, |essai|,
+% |projet| ou |stage|.}
+%
+% \changes{6.0}{2024-05-24}{Documentation: nouvelle section sur le
+% codage de caractères du code source.}
+% \subsection{Codage de caractères du code source}
+% \label{sec:utilisation:codage}
+%
+% La classe utilise le codage de caractères
+% \href{https://fr.wikipedia.org/wiki/UTF-8}{UTF-8}
+% tant avec pdf{\LaTeX} qu'avec {\XeLaTeX}. Les fichiers
+% contenant du texte avec des accents ou tout autre symbole non-ASCII
+% doivent donc obligatoirement être enregistrés dans ce codage de
+% caractères\footnote{%
+% L'UTF-8 n'étant pas le codage par défaut sous Windows, portez une
+% attention toute particulière à ce point si vous utilisez ce système
+% d'exploitation.}.
+%
+% \subsection{Déclaration de la classe et options}
+% \label{sec:utilisation:options}
%
% On charge la classe avec la commande
% \begin{quote}
-% |\documentclass|\oarg{options}|{ulthese}|
+% |\documentclass|\oarg{options}|{ulthese}|
% \end{quote}
% Les marges, l'interligne et la numérotation des pages sont adaptées
-% aux règles de présentation matérielle de la FESP. Les sections
-% suivantes décrivent les options et les commandes définies par la
-% classe.
+% aux règles de présentation de la FESP. La classe ne crée pas de page
+% de titre par défaut\footnote{%
+% Depuis la version 5.0 de la classe.}, %
+% sa production étant prise en charge par la FESP pour les thèses et
+% les mémoires. Si vous utilisez la classe pour un document qui
+% nécessite une page de titre, un examen de doctorat, un essai de
+% maitre
%
% \changes{5.0}{2018-04-24}{La classe ne crée plus de page de titre
-% suite à une nouvelle directive de la FESP.}
-% \begin{rem}
-% Depuis la version 5.0, la classe ne crée plus de page de titre
-% par défaut, sa production étant désormais prise en charge par la
-% FESP. Néanmoins, les fonctionnalités de composition d'une page
-% de titre demeurent disponibles dans la classe. Les commandes
-% pertinentes sont regroupées à l'\autoref{sec:pagetitre}.
-% \end{rem}
-%
-% \subsection{Options de la classe}
-% \label{sec:utilisation:options}
+% suite à une nouvelle directive de la FESP.}
+% \tipbox{Les fonctionnalités de composition d'une page de titre
+% demeurent disponibles dans la classe. Si votre document en nécessite
+% une, consultez l'\autoref{sec:pagetitre}.}
%
% Cette section passe en revue les \meta{options} que l'on peut
% spécifier au chargement de la classe. Les commandes mentionnées
% ci-dessous font quant à elles l'objet de la
% \autoref{sec:utilisation:commandes}.
%
-% \begin{DescribeMacro}{PhD,MSc,MA, ...}
-% Identifie le type de grade; consulter le \autoref{tab:grades} pour
-% la liste complète des options et les grades correspondants. La
-% déclaration d'un type de grade est obligatoire, sauf en cas de
-% l'utilisation de l'option |projet| (voir ci-dessous).
-% \end{DescribeMacro}
+% \begin{DescribeOption}{PhD,MSc,MA, ...}
+% Les options telles que |PhD|, |MSc| ou |MA| identifient le type de
+% grade; le \autoref{tab:grades} fournit la liste complète des
+% options et les grades correspondants. La déclaration d'un type de
+% grade est obligatoire, sauf en cas de l'utilisation de l'option
+% |projet| (voir ci-dessous).
+% \end{DescribeOption}
%
% \begin{table}[t]
% \centering
% \caption{Options de la classe pour la déclaration du grade et libellés
% correspondants}
% \label{tab:grades}
-% \begin{tabularx}{0.85\linewidth}{lX}
+% \begin{tabularx}{0.9\linewidth}{l>{\raggedright\arraybackslash}X}
% \toprule
% Option & Nom du grade (sigle) \\
% \midrule
@@ -355,145 +505,138 @@
% |MArch|
% & Maître en architecture
% (M.~Arch.) \\
-% |MA|
-% & Maître ès arts (M.A.) \\
% |LLM|
% & Maître en droit (LL.~M.) \\
% |MErg|
% & Maître en ergothérapie (M.~Erg.) \\
% |MMus|
% & Maître en musique (M.~Mus.) \\
-% |MPht|
-% & Maître en physiothérapie (M.~Pht.) \\
-% |MSc|
-% & Maître ès sciences (M.~Sc.) \\
+% |MPsEd|
+% & Maître en psychoéducation (M.~Ps.~éd.) \\
% |MScGeogr|
% & Maître en sciences géographiques (M.~Sc.~géogr.) \\
% |MServSoc|
% & Maître en service social (M.~Serv.~soc.) \\
-% |MPsEd|
-% & Maître en psychoéducation (M.~Ps.~éd.) \\
+% |MTravSoc|
+% & Maître en travail social (M.~Trav.~soc.) \\
+% |MA|
+% & Maître ès arts (M.A.) \\
+% |MSc|
+% & Maître ès sciences (M.~Sc.) \\
% \bottomrule
% \end{tabularx}
% \end{table}
%
-% \begin{DescribeMacro}{cotutelle}
-% Identifie une thèse effectuée en cotutelle avec une autre
-% université. Valide uniquement avec un grade de doctorat.
-% \end{DescribeMacro}
-%
-% \begin{DescribeMacro}{bidiplomation}
-% Identifie un mémoire effectué en bidiplomation avec une autre
-% université. Valide uniquement avec un grade de maîtrise.
-% \end{DescribeMacro}
-%
-% \begin{DescribeMacro}{examen}
-% Identifie un examen de doctorat. Cette option permet d'utiliser la
-% classe pour la rédaction d'un examen de doctorat respectant les
-% règles de présentation matérielle de la FESP. Elle a pour effet de
-% changer l'appellation «Thèse» sur la page de titre pour «Examen
-% de doctorat». Elle supprime également la page frontispice.
+% \begin{DescribeOption}{cotutelle}
+% L'option |cotutelle| identifie une thèse effectuée en cotutelle
+% avec une autre université. Valide uniquement avec un grade de
+% doctorat.
+% \end{DescribeOption}
+%
+% \begin{DescribeOption}{bidiplomation}
+% L'option |bidiplomation| identifie un mémoire effectué en
+% bidiplomation avec une autre université. Valide uniquement avec un
+% grade de maîtrise.
+% \end{DescribeOption}
+%
+% \begin{DescribeOption}{examen}
+% L'option |examen| identifie un examen de doctorat. Elle permet
+% d'utiliser la classe pour la rédaction d'un examen de doctorat
+% respectant les règles de présentation de la FESP. L'option a pour
+% effet de changer l'appellation «Thèse» sur la page de titre pour
+% «Examen de doctorat». Elle supprime également la page frontispice.
% L'option n'est compatible qu'avec l'une des options de grade de
% doctorat.
-% \end{DescribeMacro}
-%
-% \changes{5.0}{2018-05-09}{Ajout d'une option «essai» pour les
-% maîtrises analogue à «examen» pour les doctorats.}
-% \changes{5.2}{2019-05-06}{L'option «essai» n'empêche plus
-% l'utilisation d'une page frontispice.}
-% \begin{DescribeMacro}{essai}
-% Identifie un essai de maîtrise. Cette option permet d'utiliser la
-% classe pour la rédaction d'un essai de maîtrise respectant les
-% règles de présentation matérielle de la FESP. Elle a pour effet de
-% changer l'appellation «Maîtrise» sur la page de titre pour
-% «Essai». L'option n'est compatible qu'avec l'une des options de
+% \end{DescribeOption}
+%
+% \changes{5.0}{2018-05-09}{Ajout d'une option \texttt{essai} pour les
+% maîtrises analogue à \texttt{examen} pour les doctorats.}
+% \changes{5.2}{2019-05-06}{L'option \texttt{essai} n'empêche plus
+% l'utilisation d'une page frontispice.}
+% \begin{DescribeOption}{essai}
+% L'option |essai| identifie un essai de maîtrise. Elle permet
+% d'utiliser la classe pour la rédaction d'un essai de maîtrise
+% respectant les règles de présentation de la FESP. L'option a pour
+% effet de changer l'appellation «Maîtrise» sur la page de titre
+% pour «Essai». Elle n'est compatible qu'avec l'une des options de
% grade de maîtrise. Pour un essai de maîtrise, l'utilisation
% simultanée de l'option |article| de la classe \class{memoir} peut
% s'avérer tout indiquée.
-% \end{DescribeMacro}
-%
-% \changes{5.2}{2019-05-06}{Ajout d'une option «projet» pour les
-% cours de projet de recherche.}
-% \begin{DescribeMacro}{projet}
-% Identifie un projet de recherche. Cette option permet d'utiliser
-% la classe pour la rédaction d'un rapport de projet de recherche
-% respectant les règles de présentation matérielle de la FESP. Elle
-% a pour effet d'inscrire l'appellation «Projet de recherche» sur la
-% page de titre et de supprimer la mention du grade. L'utilisation
-% de cette option rend d'ailleurs non obligatoire la déclaration de
-% grade qui, si elle est présente, est simplement ignorée. Comme
-% pour un essai de maîtrise, l'utilisation simultanée de l'option
-% |article| de la classe \class{memoir} peut s'avérer tout indiquée
-% avec les cette option.
-% \end{DescribeMacro}
-%
-% \changes{5.3}{2019-11-29}{Ajout d'une option «stage» pour les
-% rapports de stage.}
-% \begin{DescribeMacro}{stage}
-% Identifie un rapport de stage. L'effet de cette option est
-% identique à celui de l'option |projet| à deux exceptions près:
-% l'inscription sur la page de titre est «Rapport de stage» et la
-% page frontispice est supprimée.
-% \end{DescribeMacro}
-%
-% \begin{DescribeMacro}{10pt,11pt,12pt}
-% Sélectionne une taille de police de 10, 11 ou 12~points. Par
-% défaut la classe utilise une police de 11~points. Ces options
-% n'ont aucun effet sur la taille des polices des pages de titre.
-% \end{DescribeMacro}
-%
-% \changes{4.4}{2017-05-15}{Ajout de l'option bibchapitre.}
-% \changes{4.4}{2017-05-15}{Ajout de l'option bibsection.}
-% \begin{DescribeMacro}{bibchapitre}
-% \begin{DescribeMacro}{bibsection}
-% Permettent de composer une bibliographie distincte après chaque
-% fichier inséré dans le document avec \cmd{\include},
-% habituellement un chapitre; voir la
-% \autoref{sec:bibliographie:multiples}. Ces options sont
-% principalement utiles pour les thèses et mémoires par articles.
-% La bibliographie se présente sous la forme d'un chapitre non
-% numéroté avec |bibchapitre|, et sous la forme d'une section
-% numérotée avec |bibsection|.
-% \end{DescribeMacro}
-% \end{DescribeMacro}
-%
-% \begin{DescribeMacro}{nonatbib}
-% Empêche le chargement du paquetage \pkg{natbib}. La paquetage est
-% normalement chargé par la classe; voir la
+% \end{DescribeOption}
+%
+% \changes{5.2}{2019-05-06}{Ajout d'une option \texttt{projet} pour
+% les cours de projet de recherche.}
+% \begin{DescribeOption}{projet}
+% L'option |projet| identifie un projet de recherche. Elle permet
+% d'utiliser la classe pour la rédaction d'un rapport de projet de
+% recherche respectant les règles de présentation de la FESP.
+% L'option a pour effet d'inscrire l'appellation «Projet de
+% recherche» sur la page de titre et de supprimer la mention du
+% grade. Son utilisation rend d'ailleurs non obligatoire la
+% déclaration de grade qui, si elle est présente, est simplement
+% ignorée. Comme pour un essai de maîtrise, l'utilisation simultanée
+% de l'option |article| de la classe \class{memoir} peut s'avérer
+% tout indiquée avec cette option.
+% \end{DescribeOption}
+%
+% \changes{5.3}{2019-11-29}{Ajout d'une option \texttt{stage} pour les
+% rapports de stage.}
+% \begin{DescribeOption}{stage}
+% L'option |stage| identifie un rapport de stage. L'effet de cette
+% option est identique à celui de l'option |projet| à deux
+% exceptions près: l'inscription sur la page de titre est «Rapport
+% de stage» et la page frontispice est supprimée.
+% \end{DescribeOption}
+%
+% \begin{DescribeOption}{10pt,11pt,12pt}
+% Les options |10pt|, |11pt| et |12pt| sélectionnent une taille de
+% police de 10, 11 ou 12~points. Par défaut la classe utilise une
+% police de 11~points. Ces options n'ont aucun effet sur la taille
+% des polices des pages de titre.
+% \end{DescribeOption}
+%
+% \begin{DescribeOption}{nonatbib}
+% L'option |nonatbib| empêche le chargement du paquetage %
+% \href{https://ctan.org/pkg/natbib}{\pkg{natbib}}. %
+% Celui-ci est normalement chargé par la classe; voir la
% \autoref{sec:bibliographie}. L'option |nonatbib| permet d'empêcher
-% le chargement pour modifier les options du paquetage ou en cas de
-% conflit avec un autre paquetage de mise en forme de la
-% bibliographie.
-% \end{DescribeMacro}
-%
-% \begin{DescribeMacro}{nobabel}
-% Empêche le chargement du paquetage \pkg{babel}. La classe utilise
-% par défaut ce paquetage pour le traitement des langues dans le
-% document; voir la \autoref{sec:langues}. L'option |nobabel| permet
-% d'empêcher son chargement si un autre paquetage devait être
-% utilisé --- on pense ici principalement à \pkg{polyglossia} pour
-% un document produit avec le moteur {\XeLaTeX}.
-% \end{DescribeMacro}
-%
-% \changes{5.1}{2018-09-30}{Ajout de l'option nohyperref.}
-% \begin{DescribeMacro}{nohyperref}
-% Empêche le chargement du paquetage \pkg{hyperref}. L'interaction
-% de ce paquetage avec les autres est parfois --- voire souvent ---
-% délicate. La classe se charge de le charger en tout dernier tel
-% que généralement recommandé. L'option |nohyperref| permet
-% d'empêcher son chargement s'il est absolument nécessaire de
+% son chargement pour vous permettre de modifier les options du
+% paquetage ou en cas de conflit avec un autre paquetage de mise en
+% forme de la bibliographie.
+% \end{DescribeOption}
+%
+% \begin{DescribeOption}{nobabel}
+% L'option |nobabel| empêche le chargement du paquetage %
+% \href{https://ctan.org/pkg/babel}{\pkg{babel}}. %
+% La classe utilise par défaut ce paquetage pour le traitement des
+% langues dans le document; voir la \autoref{sec:langues}. L'option
+% |nobabel| permet d'empêcher son chargement si un autre paquetage
+% devait être utilisé~--- on pense ici principalement à %
+% \href{https://ctan.org/pkg/polyglossia}{\pkg{polyglossia}} %
+% pour un document produit avec le moteur {\XeLaTeX}.
+% \end{DescribeOption}
+%
+% \changes{5.1}{2018-09-30}{Ajout de l'option \texttt{nohyperref}.}
+% \begin{DescribeOption}{nohyperref}
+% L'option |nohyperref| empêche le chargement du paquetage %
+% \href{https://ctan.org/pkg/hyperref}{\pkg{hyperref}}. %
+% L'interaction de ce paquetage avec les autres est parfois~---
+% voire souvent~--- délicate. La classe tâche de le charger en tout
+% dernier, tel que généralement recommandé. L'option |nohyperref|
+% permet d'empêcher son chargement s'il est absolument nécessaire de
% charger d'autres paquetages avant \pkg{hyperref}. Si vous utilisez
% cette option, vous devez obligatoirement charger \pkg{hyperref}
% dans le préambule du document.
-% \end{DescribeMacro}
-%
-% \begin{DescribeMacro}{english, french, ...}
-% Déclare les langues utilisées dans le document. Ces options sont
-% transférées au paquetage \pkg{babel} (dans la mesure où |nobabel|
-% n'est pas spécifié, bien entendu). Le libellé des langues devrait
-% donc correspondre aux options de \pkg{babel}. La dernière langue
+% \end{DescribeOption}
+%
+% \begin{DescribeOption}{english, french, ...}
+% Les options telles que |english|, |french| ou autres déclarent les
+% langues utilisées dans le document. Ces options sont transférées
+% au paquetage \pkg{babel} (dans la mesure où |nobabel| n'est pas
+% spécifié, bien entendu). Le libellé des langues devrait donc
+% correspondre aux options de \pkg{babel}. La dernière langue
% spécifiée est la langue active par défaut dans le document.
-% \end{DescribeMacro}
+% \end{DescribeOption}
%
% Toute autre option sera passée à la classe \class{memoir} dont,
% entre autres, le format du papier. Le format lettre nord-américain
@@ -505,14 +648,14 @@
% \subsection{Commandes de la classe}
% \label{sec:utilisation:commandes}
%
-% La classe \class{ulthese} définit quelques nouvelles commandes
+% La classe {\ulclass} définit quelques nouvelles commandes
% servant principalement à créer la page frontispice et des éléments
% des pages liminaires. Le sommaire des commandes se trouve dans le
% \autoref{tab:commandes} et les descriptions détaillées, ci-dessous.
%
% \begin{table}[t]
% \centering
-% \caption{Sommaire des commandes de la classe \class{ulthese}.
+% \caption{Sommaire des commandes de la classe {\ulclass}.
% Celles marquées d'une étoile $^\star$ sont obligatoires.}
% \label{tab:commandes}
% \begin{tabularx}{\linewidth}{lX}
@@ -533,12 +676,13 @@
% \end{table}
%
% \begin{DescribeMacro}{\titre}
-% Titre principal de la thèse ou du mémoire. Ne pas utiliser la
-% commande \cmd{\title} de {\LaTeX} pour ce faire.
+% La commande \cmdprint{\titre} sert à spécifier le titre principal
+% du manuscrit. Vous ne devez pas utiliser la commande \cmd{\title}
+% de {\LaTeX} pour ce faire.
%
-% Vous devez couper manuellement avec |\\| ou \cmd{\newline} un
-% titre très long. Par exemple, la déclaration d'un titre d'une
-% seule ligne est:
+% Coupez manuellement avec {\bs\bs} ou \cmd{\newline} un titre très
+% long. Par exemple, la déclaration d'un titre d'une seule ligne
+% est:
% \begin{quote}
% |\titre{Ceci est un titre d'une seule ligne}|
% \end{quote}
@@ -550,48 +694,51 @@
% \end{DescribeMacro}
%
% \begin{DescribeMacro}{\soustitre}
-% Sous-titre de la thèse ou du mémoire, le cas échéant. Les remarques
-% sur un long titre principal s'appliquent également au sous-titre.
+% La commande \cmdprint{\soustitre} sert à spécifier le sous-titre
+% du manuscrit, le cas échéant. Les remarques sur un long titre
+% principal s'appliquent également au sous-titre.
% \end{DescribeMacro}
%
% \begin{DescribeMacro}{\auteur}
-% Nom complet de l'auteur de la thèse ou du mémoire, sous la forme
-% |Prénom Nom| avec seulement des majuscules initiales. Ne pas
-% utiliser la commande \cmd{\author} de {\LaTeX} pour le nom de
-% l'auteur.
+% La commande \cmdprint{\auteur} permet de saisir le nom complet de
+% l'auteur de la thèse ou du mémoire, sous la forme |Prénom Nom|
+% avec seulement des majuscules initiales. N'utilisez pas la
+% commande \cmd{\author} de {\LaTeX} pour le nom de l'auteur.
% \end{DescribeMacro}
%
% \begin{DescribeMacro}{\programme}
-% Nom complet officiel du programme d'études comme «Doctorat en
-% informatique» ou «Maîtrise en mathématiques». Si le programme
-% comporte une majeure, séparer sa mention de celle du programme
-% principal par un tiret demi-quadratin (obtenu avec |--|).
+% La commande \cmdprint{\programme} sert à spécifier le nom complet
+% officiel du programme d'études comme «Doctorat en informatique» ou
+% «Maîtrise en mathématiques». Si le programme comporte une majeure,
+% séparez sa mention de celle du programme principal par un tiret
+% demi-quadratin (obtenu avec |--|).
% \end{DescribeMacro}
%
% \begin{DescribeMacro}{\direction}
-% Nom complet du directeur ou de la directrice de recherche, sous la
-% forme |Prénom Nom| avec seulement des majuscules initiales, suivi
-% d'une virgule et de la mention «directeur de recherche» ou
-% «directrice de recherche».
+% La commande \cmdprint{\direction} sert à spécifier le nom complet
+% du directeur ou de la directrice de recherche, sous la forme
+% |Prénom Nom| avec seulement des majuscules initiales, suivi d'une
+% virgule et de la mention «directeur de recherche» ou «directrice
+% de recherche».
%
% Les thèses en cotutelle comportent un directeur ou une directrice
% de recherche et un directeur ou une directrice de cotutelle.
-% Séparer chaque mention par |\\|, comme ceci:
+% Séparez chaque mention par {\bs\bs}, comme ceci:
% \begin{quote}
% |\direction{Prénom Nom, directrice de recherche \\| \\
% | Prénom Nom, directeur de cotutelle}|
% \end{quote}
%
% De même, les maîtrises en bidiplomation comptent deux directeurs
-% ou directrices de recherche. Séparer chaque mention tel que
+% ou directrices de recherche. Séparez chaque mention tel que
% mentionné ci-dessus.
% \end{DescribeMacro}
%
% \begin{DescribeMacro}{\codirection}
-% Comme la commande \cmd{\direction}, mais pour le ou les
-% codirecteurs de recherche, s'il y a lieu. Lorsqu'il y a plus d'un
-% codirecteur de recherche, séparer chaque mention par |\\|, comme
-% ceci:
+% La commande \cmdprint{\codirection} joue le même rôle que la
+% commande \cmdprint{\direction}, mais pour le ou les codirecteurs
+% de recherche, s'il y a lieu. Lorsqu'il y a plus d'un codirecteur
+% de recherche, séparez chaque mention par {\bs\bs}, comme ceci:
% \begin{quote}
% |\codirection{Prénom Nom, directrice de recherche \\| \\
% | Prénom Nom, directeur de recherche}|
@@ -599,27 +746,30 @@
% \end{DescribeMacro}
%
% \begin{DescribeMacro}{\frontispice}
-% Création de la page frontispice. De toutes les commandes
-% ci-dessus, c'est la seule qui doit se trouver dans le corps du
-% document plutôt que dans le préambule.
+% La commande \cmdprint{\frontispice} crée la page frontispice à
+% l'endroit où elle apparait dans le code source. De toutes les
+% commandes ci-dessus, c'est la seule qui doit se trouver dans le
+% corps du document plutôt que dans le préambule.
% \end{DescribeMacro}
%
% \begin{DescribeMacro}{\dedicace}
-% Ajout d'une dédicace («À mes parents», «À Camille») à la thèse ou
-% au mémoire. La dédicace est disposée seule sur une page liminaire,
-% à une dizaine de lignes de la marge du haut et alignée à droite.
-% Par défaut, elle est composée en italique.
+% La commande \cmdprint{\dedicace} permet d'insérer une dédicace («À
+% mes parents», «À Camille») à l'endroit où elle apparait dans le
+% code source. La dédicace est disposée seule sur une page
+% liminaire, à une dizaine de lignes de la marge du haut et alignée
+% à droite. Par défaut, elle est composée en italique.
% \end{DescribeMacro}
%
% \begin{DescribeMacro}{\epigraphe}
-% Ajout d'une épigraphe au début du document. Comme la dédicace,
-% l'épigraphe est disposée seule sur une page liminaire, à une
-% dizaine de lignes de la marge du haut et alignée à droite. La
-% commande accepte deux arguments, soit le texte de la citation et
-% son auteur ou la source, dans l'ordre.
-%
-% Pour ajouter une épigraphe au début d'un ou plusieurs chapitres,
-% utiliser directement la commande \cmd{\epigraph} de
+% La commande \cmdprint{\epigraphe} permet d'insérer une épigraphe
+% au début du document. Comme la dédicace, l'épigraphe est disposée
+% seule sur une page liminaire, à une dizaine de lignes de la marge
+% du haut et alignée à droite. La commande accepte deux arguments,
+% soit le texte de la citation et son auteur ou la source, dans
+% l'ordre.
+%
+% Pour ajouter une épigraphe au début d'un ou de plusieurs
+% chapitres, utilisez directement la commande \cmd{\epigraph} de
% \class{memoir}, sur laquelle \cmd{\dedicace} et \cmd{\epigraphe}
% sont d'ailleurs basées.
% \end{DescribeMacro}
@@ -640,8 +790,8 @@
% L'environnement |quotation|, quant à lui, doit être utilisé pour
% les citations «longues», celles qui peuvent s'étendre sur plus de
% cinq lignes ou, surtout, plus d'un paragraphe. Dans la classe, le
-% texte est alors toujours placé en retrait de 10~mm, mais également
-% à interligne simple. De plus, un espace vertical sépare les
+% texte est alors toujours placé en retrait de 10~mm, mais aussi à
+% interligne simple. De plus, un espace vertical sépare les
% paragraphes, le cas échéant, afin de bien les distinguer les uns
% des autres.
% \end{DescribeEnv}
@@ -658,8 +808,9 @@
% \end{DescribeMacro}
%
% \begin{DescribeMacro}{\SingleSpacing}
-% Si ce devait être nécessaire ailleurs dans le document, la
-% commande \cmd{\SingleSpacing} permet de passer à l'interligne simple.
+% Si ce devait être nécessaire ailleurs dans le document, vous
+% pouvez avoir recours à la commande \cmd{\SingleSpacing} pour
+% passer à l'interligne simple.
% \end{DescribeMacro}
%
% \subsection{Hyperliens}
@@ -680,58 +831,44 @@
% \subsection{Autres paquetages chargés}
% \label{sec:paquetages}
%
-% Outre \class{memoir}, la classe \class{ulthese} charge quelques
-% paquetages qui peuvent aussi vous être utiles. Il n'est donc pas
-% nécessaire de charger de nouveau les paquetages suivants:
-% \begin{description}
-% \item[\normalfont\pkg{babel}] \citep{babel} gestion des documents
-% rédigés dans une ou plusieurs langues autres que l'anglais (si
-% l'option |nobabel| de la classe est absente; voir aussi la
-% \autoref{sec:langues});
-% \item[\normalfont\pkg{numprint}] \citep{numprint} requis par la
-% commande \cmd{\nombre} de \pkg{babel}; le paquetage est donc
-% chargé uniquement si \pkg{babel} l'est. Permet de composer
-% automatiquement des nombres avec un séparateur toutes les trois
-% positions (une espace en français);
-% \item[\normalfont\pkg{natbib}] \citep{natbib} gestion de la
-% bibliographie (si l'option |nonatbib| de la classe est absente;
-% voir aussi la \autoref{sec:bibliographie});
-% \item[\normalfont\pkg{chapterbib}] \citep{chapterbib} gestion de
-% bibliographies multiples (si l'une ou l'autre des options
-% |bibchapitre| ou |bibsection| est spécifiée;
-% voir aussi la \autoref{sec:bibliographie:multiples});
-% \item[\normalfont\pkg{hyperref}] \citep{hyperref} permet de
-% transformer toutes les références en hyperliens cliquables lorsque
-% le document est produit avec pdf{\LaTeX} ou {\XeLaTeX} (si
-% l'option |nohyperref| est spécifiée, vous devez obligatoirement
-% charger le paquetage vous-même);
-% \item[\normalfont\pkg{etoolbox}] \citep{etoolbox} outils
-% additionnels pour la conception de classes et de paquetages
-% (utilisé pour le chargement de \pkg{hyperref});
-% \item[\normalfont\pkg{fontspec}] \citep{fontspec} gestion des
-% polices OpenType sous {\XeLaTeX} (chargé avec ce moteur
-% seulement);
-% \item[\normalfont\pkg{graphicx}] \citep{graphicx} insertion et
-% manipulation de graphiques;
-% \item[\normalfont\pkg{xcolor}] \citep{xcolor} gestion des couleurs
-% dans le document, notamment celle des hyperliens;
-% \item[\normalfont\pkg{textcomp}] multitude de symboles spéciaux,
-% dont un beau symbole de copyright, \textcopyright.
-% \end{description}
-% L'\autoref{sec:meo} sur la mise en œuvre de la classe fournit
-% plus de détails sur la liste des paquetages chargés et les raisons
-% pour lesquelles ils sont requis dans la classe.
+% \changes{6.0}{2024-06-17}{Documentation: simplification de la
+% section sur les autres paquetages chargés par la classe.}
+% La classe {\ulclass} charge par défaut les paquetages suivants qui
+% peuvent vous être utiles: %
+% \href{https://ctan.org/pkg/babel}{\pkg{babel}} (voir aussi la \autoref{sec:langues}) %
+% \href{https://ctan.org/pkg/fontspec}{\pkg{fontspec}}, %
+% \href{https://ctan.org/pkg/graphicx}{\pkg{graphicx}}, %
+% \href{https://ctan.org/pkg/hyperref}{\pkg{hyperref}}, %
+% \href{https://ctan.org/pkg/microtype}{\pkg{microtype}}, %
+% \href{https://ctan.org/pkg/natbib}{\pkg{natbib}} (voir aussi la
+% \autoref{sec:bibliographie}), %
+% \href{https://ctan.org/pkg/numprint}{\pkg{numprint}}, %
+% \href{https://ctan.org/pkg/xcolor}{\pkg{xcolor}}. %
+% Tel que mentionné précédemment, la classe est basée sur
+% \class{memoir} qui, elle-même, incorpore d'office une trentaine de
+% paquetages\footnote{%
+% Consultez la section~18.24 de la documentation de \class{memoir}
+% pour la liste, ou encore le journal de la compilation (\emph{log})
+% d'un document utilisant la classe {\ulclass}.}. %
+% L'intégralité des fonctionnalités de \class{memoir} se retrouve donc
+% dans {\ulclass}.
+%
+% L'\autoref{sec:meo} sur la mise en œuvre de la classe fournit la
+% liste détaillée des paquetages chargés et les raisons pour
+% lesquelles ils sont requis dans la classe.
%
% \subsection{Paquetage incompatible}
% \label{sec:incompatible}
%
-% Le paquetage \pkg{geometry} est incompatible avec la classe à cause
-% de sa mauvaise interaction avec \class{memoir}. Son chargement dans
-% le préambule du document cause une erreur lors de la compilation.
+% Le paquetage %
+% \href{https://ctan.org/pkg/geometry}{\pkg{geometry}} %
+% est incompatible avec la classe à cause de sa mauvaise interaction
+% avec \class{memoir}. Son chargement dans le préambule du document
+% cause une erreur lors de la compilation.
%
% \section{Thèses et mémoires par articles}
% \changes{5.0}{2018-06-08}{Ajout d'une section spécifique sur les
-% thèses et mémoires par articles.}
+% thèses et mémoires par articles.}
%
% La rédaction de la thèse ou du mémoire par articles est une pratique
% qui gagne en popularité. Elle consiste à remplacer le corps
@@ -741,167 +878,54 @@
% du mémoire (le cas échéant) y apparaissent sous forme de
% sections numérotées.
%
-% L'autre caractéristique qui distingue la thèse et le mémoire par
-% articles des versions standards, c'est la nécessité d'utiliser une
-% bibliographie distincte pour chacun des chapitres. Les options de la
-% classe |bibchapitre| et |bibsection| permettent de réaliser cette
-% mise en forme particulière. La \autoref{sec:bibliographie:multiples}
-% explique comment en tirer profit.
-%
% Des gabarits de document maître et de chapitre fournissent la
% structure de base pour la thèse et le mémoire par articles. Vous
% pouvez, au besoin, combiner les caractéristiques de ces gabarits à
-% celles de la thèse en cotutelle ou du mémoire en bidiplomation. La
-% \autoref{sec:gabarits} fournit les détails sur les gabarits.
+% celles de la thèse en cotutelle ou du mémoire en bidiplomation.
%
-% \section{Français et autres langues}
-% \label{sec:langues}
-%
-% Une complication additionnelle si vous rédigez dans une langue autre
-% que l'anglais consiste à adapter {\LaTeX} à votre langue, qu'il
-% s'agisse des mots clés, de la typographie ou de la césure des mots.
-% La solution standard à ce problème provient du paquetage
-% \pkg{babel}. Celui-ci permet de combiner plusieurs langues dans un
-% même document et de passer de l'une à l'autre facilement. Il est
-% chargé par défaut par la classe \class{ulthese}.
-%
-% Aucune langue n'est spécifiée dans la classe. Vous aurez sans doute
-% recours à l'anglais et au français, ne serait-ce que pour les deux
-% résumés demandés par la FESP. Vous devez spécifier les langues
-% utilisées dans le document en options à la classe, tel que mentionné
-% à la \autoref{sec:utilisation:options}. La \emph{dernière} langue
-% spécifiée devient par défaut la langue active du document.
-%
-% \begin{DescribeMacro}{\selectlanguage}
-% La commande \cmd{\selectlanguage} de \pkg{babel} permet de passer de
-% la langue courante à la langue spécifiée en argument.
-% \end{DescribeMacro}
-%
-% \begin{DescribeEnv}{otherlanguage}
-% L'environnement |otherlanguage| de \pkg{babel} permet de faire
-% la même chose que la commande \cmd{\selectlanguage}, sauf que le
-% changement de langue est local à l'environnement --- utile pour
-% les brefs changements de langue.
-% \end{DescribeEnv}
-%
-% Si vous n'êtes pas autrement familier avec le paquetage
-% \pkg{babel}, consultez sa %
-% \doc{http://texdoc.net/pkg/babel/}. %
-% Celle-ci est éclatée en un
-% document principal, pour le cœur du paquetage et plusieurs
-% autres pour les fonctionnalités propres à une langue: %
-% \doc[anglais]{http://texdoc.net/pkg/babel-english}, %
-% \doc[français]{http://texdoc.net/pkg/babel-french}, %
-% etc. Consultez au moins les documents consacrés aux
-% langues utilisées dans votre thèse ou mémoire. Le plus simple
-% consiste sans doute à consulter en ligne sur CTAN les
-% \link{https://mirrors.ctan.org/tex-archive/macros/latex/required/babel/contrib/}{%
-% documents spécifiques par langue}.
-% \changes{4.4}{2017-05-14}{Correction d'une url vers la documentation
-% de babel.}
-%
-% \begin{DescribeMacro}{\nombre}
-% Le paquetage \pkg{numprint} étant chargé dans la classe avec
-% \pkg{babel}, vous pouvez utiliser la commande \cmd{\nombre} pour
-% formater automatiquement les nombres. Par exemple, le résultat de
-% |\nombre{123456789}| est \nombre{123456789}.
-% \end{DescribeMacro}
-%
-% Les utilisateurs de {\XeLaTeX} qui souhaiteraient plutôt utiliser le
-% plus récent paquetage \pkg{polyglossia} \citep{polyglossia} peuvent
-% empêcher le chargement de \pkg{babel} avec l'option |nobabel| de la
-% classe. Ils devront toutefois charger et configurer
-% \pkg{polyglossia} eux-mêmes dans l'entête de leur document. Ce
-% paquetage est moins évolué que \pkg{babel} pour la typographie
-% française.
+% \tipbox{À l'automne~2023, la FESP a retiré l'exigence de produire
+% une bibliographie par chapitre pour les thèses et mémoires par
+% articles. La thèse ou le mémoire doit désormais contenir une seule
+% bibliographie regroupant l’ensemble des références du document.}
%
% \section{Bibliographie}
% \label{sec:bibliographie}
+% \changes{6.0}{2024-05-22}{Documentation: suppression de la section
+% sur les bibliographies multiples.}
+% \changes{6.0}{2024-06-19}{Documentation: inversion des sections sur
+% la bibliographie et sur la rédaction en français.}
%
% \begin{DescribeMacro}{\bibliography}
-% Tel qu'expliqué au chapitre~8 de \citet{formation-latex-ul},
-% il est fortement recommandé d'utiliser {\BibTeX} pour la
+% Il est fortement recommandé d'utiliser {\BibTeX} pour la
% préparation de la bibliographie d'un document. Celle-ci est
% insérée dans le document à l'endroit où apparait la commande
% \cmd{\bibliography} dans le code source. Cette commande prend en
-% arguments les noms des bases de données bibliographiques séparés
+% arguments les noms des bases de données bibliographiques, séparés
% par des virgules.
% \end{DescribeMacro}
%
% \subsection{Mise en forme des citations}
% \label{sec:bibliographie:options}
%
-% Dans la classe \class{ulthese}, la mise en forme des citations est
-% confiée au paquetage \pkg{natbib} (à moins que l'option |nonatbib|
-% ne soit spécifiée). Le paquetage est chargé avec les options par
-% défaut, soit |round|, |semicolon| et |authoryear|. Pour spécifier
-% d'autres options, vous avez deux possibilités:
-% \begin{enumerate}
-% \item utiliser l'option |nonatbib| de la classe et ensuite charger
-% explicitement \pkg{natbib} avec ses options;
-% \item
-% \begin{DescribeMacro}{\setcitestyle}
-% utiliser la commande \cmd{\setcitestyle} pour passer de
-% nouvelles options à \pkg{natbib}.
-% \end{DescribeMacro}
-% \end{enumerate}
+% \begin{DescribeMacro}{\setcitestyle}
+% Dans la classe {\ulclass}, la mise en forme des citations est
+% confiée au paquetage %
+% \href{https://ctan.org/pkg/natbib}{\pkg{natbib}} %
+% (à moins que l'option |nonatbib| ne soit spécifiée). Le paquetage
+% est chargé avec les options par défaut, soit |round|, |semicolon|
+% et |authoryear|. Pour spécifier d'autres options utilisez la
+% commande \cmd{\setcitestyle} pour passer de nouvelles options à
+% \pkg{natbib}.
+% \end{DescribeMacro}
%
% Par exemple, pour utiliser un style de citation numérique où le
-% numéro de la référence se trouve entre crochets, vous pouvez
-% procéder de l'une ou l'autre des deux manières suivantes:
-% \begin{quote}
-% |\documentclass[nonatbib]{ulthese}| \\
-% |\usepackage[numbers,square]{natbib}| \\
-% |...| \\
-% |\bibliographystyle{plain-fr}|
-% \end{quote}
-% ou
+% numéro de la référence se trouve entre crochets, insérez la commande
+% suivante dans le préambule:
% \begin{quote}
-% |\documentclass{ulthese}| \\
-% |...| \\
-% |\setcitestyle{numbers,square}| \\
-% |\bibliographystyle{plain-fr}|
+% |\setcitestyle{numbers,square}|
% \end{quote}
%
-% Consultez la %
-% \doc{http://texdoc.net/pkg/natbib/} %
-% de \pkg{natbib} pour les détails.
-%
-% \subsection{Bibliographies multiples}
-% \label{sec:bibliographie:multiples}
-%
-% L'ajout de |bibchapitre| ou de |bibsection| dans les options de la
-% classe permet de générer une bibliographie distincte pour chaque
-% chapitre, une chose particulièrement utile pour les thèses et
-% mémoire par articles.
-%
-% La classe fait appel au paquetage \pkg{chapterbib}
-% \citep{chapterbib} pour composer des bibliographies multiples. La
-% \doc{http://texdoc.net/pkg/chapterbib/} du paquetage
-% explique la procédure à suivre pour obtenir une bibliographie par
-% chapitre avec {\BibTeX}. En résumé:
-% \begin{enumerate}
-% \item chaque chapitre comportant sa propre bibliographie doit
-% absolument être inséré dans le document principal avec la commande
-% \cmd{\include} \citep[section~3.5]{formation-latex-ul};
-% \item chaque fichier visé doit contenir une commande
-% \cmd{\bibliographystyle} (\autoref{sec:bibliographie:style}) et
-% une commande \cmd{\bibliography};
-% \item on obtient les diverses bibliographies en compilant avec
-% {\BibTeX} les fichiers individuels, et non le document maître.
-% \end{enumerate}
-%
-% La plupart des auteurs préféreront sans doute l'effet de l'option
-% |bibsection|, où la bibliographie apparait comme une section normale
-% à la fin d'un chapitre. Lorsque \pkg{babel} est chargé, la section
-% sera numérotée. Pour supprimer la numérotation, insérer dans le
-% préambule du document la commande
-% \begin{quote}
-% |\addto\extras|\meta{langue}|{\renewcommand{\bibsection}{%| \\
-% | \section*{\bibname}\prebibhook}}|
-% \end{quote}
-% où \meta{langue} est la langue par défaut du document
-% (\autoref{sec:langues}).
+% Consultez la documentation de \pkg{natbib} pour plus de détails.
%
% \subsection{Style de la bibliographie}
% \label{sec:bibliographie:style}
@@ -909,423 +933,142 @@
% \begin{DescribeMacro}{\bibliographystyle}
% Le format général de la bibliographie est contrôlé par un
% \emph{style} choisi avec la commande \cmd{\bibliographystyle} dans
-% le préambule du document ou dans les fichiers de chaque chapitre
-% dans une thèse ou un mémoire par articles. Les styles standards de
-% {\LaTeX} sont |plain|, |unsrt|, |alpha| et |abbrv|.
+% le préambule du document. Les styles standards de {\LaTeX} sont
+% |plain|, |unsrt|, |alpha| et |abbrv|.
% \end{DescribeMacro}
%
-% Le paquetage \pkg{natbib} chargé par défaut par la classe supporte
-% le style de citation auteur-année fréquemment employé en sciences
-% naturelles, plusieurs commandes de citation, un grand nombre de
-% styles de bibliographie ainsi que des entrées spécifiques pour les
-% numéros ISBN et les URL. Le paquetage fournit des styles de
-% bibliographie |plainnat|, |unsrtnat| et |abbrvnat| similaires aux
-% styles standards, mais plus complets. Il existe des
-% \link{https://mirrors.ctan.org/biblio/bibtex/contrib/bib-fr/}{versions
-% francisées} de ces styles (et de quelques autres) dans CTAN.
-%
-% Le paquetage \pkg{francais-bst} \citep{francais-bst} fournit une
-% feuille de style compatible avec \pkg{natbib} permettant de composer
-% des bibliographies auteur-année respectant les normes de typographie
-% française proposées dans \cite{Malo:1996}. Pour utiliser ce style,
-% spécifier dans le préambule du document LaTeX
-% \begin{quote}
-% |\bibliographystyle{francais}|
-% \end{quote}
+% Le paquetage \pkg{natbib} prend en charge le style de citation
+% auteur-année fréquemment employé en sciences naturelles, plusieurs
+% commandes de citation, un grand nombre de styles de bibliographie,
+% ainsi que des entrées spécifiques pour les numéros ISBN et les
+% adresses URL. Le paquetage fournit des styles de bibliographie
+% |plainnat|, |unsrtnat| et |abbrvnat| similaires aux styles
+% standards, mais plus complets. Il existe des %
+% \href{https://ctan.org/pkg/bib-fr}{versions francisées} %
+% de ces styles (et de quelques autres) dans CTAN.
+%
+% Les styles \code{francais} et \code{francaissc} du paquetage %
+% \href{https://ctan.org/pkg/francais-bst}{\pkg{francais-bst}} %
+% permettent de composer des bibliographies auteur-année respectant
+% les normes de typographie française. Ils sont compatibles avec
+% \pkg{natbib} et plus modernes que les styles mentionnés ci-dessus.
%
% Autrement, la FESP n'a pas d'exigences particulières quant à la
% présentation de la bibliographie (présentation du titre, des auteurs
% et autres informations bibliographiques).
%
-% \section{Police de caractères du document}
-% \label{sec:police}
-%
-% Les documents {\LaTeX} sont facilement reconnaissables par leur
-% police de caractères par défaut, {\fontfamily{cmr}\selectfont
-% Computer Modern}. Avec toute distribution {\LaTeX} moderne, il est
-% maintenant simple d'utiliser l'une ou l'autre des polices PostScript
-% standards. D'ailleurs la classe \class{ulthese} utilise la police
-% sans empattements \textsf{Helvetica} pour composer les pages de
-% titre.
-%
-% La FESP permet l'utilisation des polices Times, Palatino (la police
-% du présent document) et Lucida~Bright dans les thèse et mémoires.
-% \citet[section~10.2]{formation-latex-ul} explique comment utiliser ces
-% polices dans votre document.
-%
-% \section{Gabarits}
-% \label{sec:gabarits}
-%
-% Afin de vous épauler dans la préparation de votre manuscrit, la
-% classe \class{ulthese} est livrée avec un ensemble de gabarits. Tout
-% d'abord, pour le document maître de différents types de thèses et de
-% mémoires:
-% \begin{itemize}[noitemsep]
-% \item |gabarit-doctorat.tex|;
-% \item |gabarit-doctorat-articles.tex|;
-% \item |gabarit-doctorat-cotutelle.tex|;
-% \item |gabarit-maitrise.tex|;
-% \item |gabarit-maitrise-articles.tex|;
-% \item |gabarit-maitrise-bidiplomation.tex|.
-% \end{itemize}
-% Ensuite, pour quelques parties d'un document:
-% \begin{itemize}[noitemsep]
-% \item |resume.tex|;
-% \item |abstract.tex|;
-% \item |remerciements.tex|;
-% \item |avantpropos.tex|;
-% \item |introduction.tex|;
-% \item |chapitre1.tex|;
-% \item |chapitre1-articles.tex|;
-% \item |chapitre2.tex|;
-% \item |chapitre2-articles.tex|;
-% \item |conclusion.tex|;
-% \item |annexe.tex|.
-% \end{itemize}
-% Vous pourriez devoir combiner les caractéristiques de deux gabarits
-% de document maître comme, par exemple, pour une thèse en cotutelle
-% par articles.
-%
-% Les gabarits comportent des commentaires succincts pour vous guider
-% dans leur utilisation. Les sections suivantes fournissent des
-% détails additionnels, et ce, dans l'ordre où les commandes
-% apparaissent dans les fichiers.
-%
-% \begin{rem}
-% Il n'y a pas de gabarit spécifique pour un examen de doctorat,
-% pour un essai de maîtrise, pour un projet de recherche ou pour un
-% rapport de stage. Utilisez un gabarit de thèse ou de maîtrise et
-% inscrivez l'option |examen|, |essai|, |projet| ou |stage| dans la
-% commande \cmd{\documentclass}.
-% \end{rem}
-%
-% \subsection{Encodage des fichiers}
-%
-% Composer en {\LaTeX} de longs textes dans une langue ayant recours
-% aux signes diacritiques devient rapidement pénible si l'on utilise
-% des commandes telles que |\'e|, |\`a| ou |\"o| pour entrer des lettres
-% accentuées. Afin de pouvoir plutôt entrer directement |é|, |à| ou
-% |ö|, {\LaTeX} doit être configuré pour reconnaître les lettres
-% accentuées. C'est le rôle du paquetage \pkg{inputenc}
-% \citep{inputenc}.
-%
-% Il existe plusieurs manières différentes d'encoder --- ou
-% d'enregistrer --- les lettres accentuées et autres caractères
-% spéciaux (comme, par exemple, le symbole de l'euro) dans un
-% ordinateur. La méthode la plus répandue et celle standard sur les
-% versions récentes des systèmes d'exploitation Linux et macOS est
-% l'UTF-8 de la norme
-% \link{https://fr.wikipedia.org/wiki/Unicode}{Unicode}. Les gabarits
-% sont livrés dans ce type d'encodage.
-%
-% La déclaration
-% \begin{quote}
-% |\usepackage[utf8]{inputenc}|
-% \end{quote}
-% dans le préambule assure que {\LaTeX} traitera correctement des
-% fichiers source encodés en UTF-8.
-%
-% La norme Unicode n'est pas aussi uniformément supportée par Windows.
-% Selon l'éditeur de texte employé et la version du système
-% d'exploitation, il peut être nécessaire d'utiliser les normes
-% d'encodage %
-% \link{https://fr.wikipedia.org/wiki/ISO_8859-1}{ISO~8859-1} %
-% (ou Latin-1; option |latin1| de \pkg{inputenc}), %
-% \link{https://fr.wikipedia.org/wiki/ISO_8859-15}{ISO~8859-15} %
-% (ou Latin-9; option |latin9|) ou %
-% \link{https://fr.wikipedia.org/wiki/Windows-1252}{Windows-1252} %
-% (options |cp1252| ou |ansinew|).
-%
-% La situation est plus simple avec {\XeLaTeX} puisqu'il gère
-% nativement Unicode. Le paquetage \pkg{inputenc} est non seulement
-% inutile, mais incompatible avec {\XeLaTeX}. C'est pourquoi, dans les
-% gabarits, \pkg{inputenc} est chargé seulement lorsque {\XeTeX}
-% n'est pas le moteur employé pour compiler le document.
-%
-% \subsection{Paquetages additionnels}
-%
-% Tel qu'expliqué à la \autoref{sec:paquetages}, la classe charge déjà
-% quelques paquetages. Cependant, il est fort probable que vous devrez
-% en charger d'autres pour composer votre document. Les gabarits
-% prévoient un endroit pour le chargement de paquetages additionnels.
-%
-% Si vous utilisez un paquetage non standard dans les distributions
-% courantes (\TeX~Live, Mac\TeX, MiK\TeX), vous devez le fournir avec
-% le code source de votre document lors du dépôt final.
-%
-% \subsection{Changement de police de caractères}
-%
-% Les gabarits comportent des déclarations types pour utiliser les
-% polices Palatino ou Times sous {\LaTeX} ou, sous {\XeLaTeX}, leurs
-% équivalents Pagella et Termes du projet
-% \link{https://www.gust.org.pl/projects/e-foundry/tex-gyre/}{TeX~Gyre}.
-%
-% \subsection{Options de \pkg{babel}}
-%
-% \begin{DescribeMacro}{\frenchbsetup}
-% La commande \cmd{\frenchbsetup} de \pkg{babel} permet de contrôler
-% certains ajustements typographiques apportés par le paquetage en
-% mode français. Consultez la documentation de \pkg{babel} pour la
-% liste des options de configuration disponibles.
-% \end{DescribeMacro}
-%
-% Les concepteurs de la classe \class{ulthese} proposent trois
-% ajustements dans les gabarits:
-% \begin{enumerate}
-% \item l'option |StandardItemizeEnv=true| évite que le mode français de
-% \pkg{babel} ne diminue l'espacement vertical dans les listes;
-% \item l'option |ThinSpaceInFrenchNumbers=true| fait en sorte qu'une espace fine
-% sera utilisée comme séparateur des milliers dans les nombres plutôt
-% qu'une espace pleine;
-% \item les options |og=«| et |fg=»| déclarent que les caractères « et
-% » utilisés dans le code source représentent les guillemets ouvrant
-% et fermant, respectivement. Cela évite de devoir utiliser les
-% commandes \cmd{\og} et \cmd{\fg} de \pkg{babel} tout en bénéficiant de
-% l'ajutement automatique des espaces autour des symboles.
-% \end{enumerate}
-% Vous devez évidemment désactiver ces ajustements si l'option
-% |nobabel| est spécifiée au chargement de la classe.
+% \section{Français et autres langues}
+% \label{sec:langues}
%
-% \subsection{Style de la bibliographie}
-% \label{sec:bibliographystyle}
-%
-% Tel qu'expliqué à la \autoref{sec:bibliographie:style}, la commande
-% \cmd{\bibliographystyle} permet de définir le mode de citation dans
-% le texte et la présentation des notices bibliographiques. Cette
-% commande devrait figurer dans les fichiers des chapitres
-% individuels dans une thèse ou un mémoire par articles.
-%
-% \subsection{Déclarations de la page frontispice}
-%
-% Les gabarits comportent toutes les déclarations nécessaires pour
-% composer la page frontispice des divers types de thèse ou de
-% mémoires. Vous devez remplacer les éléments se trouvant entre
-% crochets |< >| en respectant la forme indiquée. Assurez-vous de
-% supprimer les caractères |<| et |>| afin qu'ils n'apparaissent pas
-% sur la page frontispice de votre document.
-%
-% \subsection{Pages liminaires}
-%
-% \begin{DescribeMacro}{\frontmatter}
-% La commande \cmd{\frontmatter} déclare que {\LaTeX} doit considérer le
-% matériel qui suit comme des pages liminaires. En pratique, cela
-% résulte essentiellement en une numérotation des pages en chiffres
-% romains.
-% \end{DescribeMacro}
+% Une complication additionnelle si vous rédigez dans une langue autre
+% que l'anglais consiste à adapter {\LaTeX} à votre langue, qu'il
+% s'agisse des mots clés, de la typographie ou de la césure des mots.
+% La solution standard à ce problème provient du paquetage %
+% \href{https://ctan.org/pkg/babel}{\pkg{babel}}. %
+% Celui-ci permet de combiner plusieurs langues dans un même document
+% et de passer de l'une à l'autre facilement. Il est chargé par défaut
+% par la classe {\ulclass}.
%
-% Les normes de présentation de la FESP édictent que les thèses et
-% mémoires devraient comporter les pages liminaires suivantes, dans
-% l'ordre:
-% \begin{enumerate}[noitemsep]
-% \item page frontispice (obligatoire);
-% \item résumé en français (obligatoire);
-% \item résumé en anglais (recommandé, mais non obligatoire);
-% \item table des matières (obligatoire);
-% \item liste des tableaux;
-% \item liste des figures;
-% \item liste des abbréviations et des sigles;
-% \item dédicace;
-% \item épigraphe;
-% \item remerciements;
-% \item avant-propos (obligatoire dans le cas d'une thèse ou d'un
-% mémoire par articles).
-% \end{enumerate}
-%
-% Les commandes
-% \begin{quote}
-% \cmd{\frontispice} \\
-% \cmd{\tableofcontents} \\
-% \cmd{\listoftables} \\
-% \cmd{\listoffigures} \\
-% \cmd{\dedicace}\marg{texte} \\
-% \cmd{\epigraphe}\marg{texte}\marg{auteur}
-% \end{quote}
-% permettent de générer les pages correspondantes. Seules les deux
-% dernières commandes admettent des arguments.
-%
-% \begin{rem}
-% L'examen de doctorat, l'essai de maîtrise, le rapport de projet de
-% recherche et le rapport de stage comportent une page de titre.
-% Vous devez ajouter dans les gabarits les commandes nécessaires
-% pour la production de la page de titre (\autoref{sec:pagetitre})
-% et supprimer les autres pages liminaires. Rappelons que l'option
-% de classe |examen| a pour effet de supprimer la page frontispice.
-% \end{rem}
-%
-% \begin{DescribeMacro}{\chapter*}
-% Les résumés, la liste des abbréviations et des sigles, les
-% remerciements et l'avant-propos sont composés comme des chapitres
-% normaux, mais sans être numérotés. Il faut donc définir ces éléments
-% avec la commande \cmd{\chapter*}.
-% \end{DescribeMacro}
+% Aucune langue n'est spécifiée dans la classe. Vous aurez sans doute
+% recours à l'anglais et au français, ne serait-ce que pour les deux
+% résumés demandés par la FESP. Vous devez spécifier les langues
+% utilisées dans le document en options à la classe, tel que mentionné
+% à la \autoref{sec:utilisation:options}. La \emph{dernière} langue
+% spécifiée devient par défaut la langue active du document.
%
-% \begin{DescribeMacro}{\label}
-% La commande \cmd{\label} permet d'utiliser le système de renvois
-% automatiques de {\LaTeX} \citep[section~3.4]{formation-latex-ul}.
-% Les étiquettes des chapitres non numérotés sont déjà configurées
-% pour l'ajout de ces chapitres dans la table des matières (voir
-% ci-dessous). Nous recommandons fortement de définir vos propres
-% étiquettes pour les chapitres normaux.
+% \begin{DescribeMacro}{\selectlanguage}
+% La commande \cmd{\selectlanguage} de \pkg{babel} permet de passer de
+% la langue courante à la langue spécifiée en argument.
% \end{DescribeMacro}
%
-% \begin{DescribeMacro}{\phantomsection}
-% \begin{DescribeMacro}{\addcontentsline}
-% \begin{DescribeMacro}{\nameref}
-% Les chapitres déclarés avec la commande \cmd{\chapter*}
-% n'apparaissent pas dans la table des matières. Comme les
-% normes de présentation de la FESP exigent que toutes les pages
-% liminaires y figurent, nous faisons suivre les commandes
-% \cmd{\chapter*}\marg{Titre} et \cmd{\label}\marg{nom} des
-% commandes
-% \end{DescribeMacro}
-% \end{DescribeMacro}
-% \end{DescribeMacro}
-% \begin{quote}
-% |\phantomsection\addcontentsline{toc}{chapter}{%| \\
-% | \nameref|\marg{nom}|}|
-% \end{quote}
-% Celles-ci ajoutent à la table des matières (|toc|) une section de
-% niveau |chapter| dont le titre est celui du chapitre auquel
-% correspond l'étiquette \meta{nom}. La commande \cmd{\phantomsection}
-% est rendue nécessaire (ou recommandée) par le paquetage
-% \pkg{hyperref}.
+% \begin{DescribeEnv}{otherlanguage}
+% L'environnement |otherlanguage| de \pkg{babel} permet de faire la
+% même chose que la commande \cmd{\selectlanguage}, sauf que le
+% changement de langue est local à l'environnement, ce qui peut
+% s'avérer utile pour les brefs changements de langue.
+% \end{DescribeEnv}
%
-% \subsection{Corps du document}
+% Si vous n'êtes pas autrement familier avec le paquetage \pkg{babel},
+% consultez sa documentation. Celle-ci est éclatée en un document
+% principal pour le cœur du paquetage et plusieurs autres pour les
+% fonctionnalités propres à une langue. Consultez au moins les
+% documents consacrés aux langues utilisées dans votre thèse ou
+% mémoire. Le plus simple consiste sans doute à consulter en ligne sur
+% CTAN les
+% \href{https://ctan.org/pkg/babel-contrib/}{documents spécifiques par langue}.
+% \changes{4.4}{2017-05-14}{Correction d'une url vers la documentation
+% de \textbf{babel}.}
%
-% \begin{DescribeMacro}{\mainmatter}
-% La commande \cmd{\mainmatter} délimite le début du corps du document. La
-% numérotation des pages passe en chiffres arabes.
+% \begin{DescribeMacro}{\nombre}
+% Le paquetage %
+% \href{https://ctan.org/pkg/numprint}{\pkg{numprint}} %
+% étant chargé dans la classe avec \pkg{babel}, vous pouvez utiliser
+% la commande \cmd{\nombre} pour formater automatiquement les
+% nombres. Par exemple, le résultat de |\nombre{123456789}| est
+% \nombre{123456789}.
% \end{DescribeMacro}
%
-% Le corps du document devrait normalement compter une introduction (non
-% numérotée), un développement divisé en chapitres (numérotés) et une
-% conclusion (non numérotée).
-%
-% \subsection{Annexes}
-%
-% \begin{DescribeMacro}{\appendix}
-% Si la thèse ou le mémoire comporte une ou plusieurs annexes,
-% composer celles-ci comme des chapitres normaux insérés dans le
-% document maître après la commande \cmd{\appendix}. Cette commande a
-% pour effet de passer d'un mode de numération numérique (1, 1.1, 2, 2.1,
-% \dots) à un mode alphanumérique (A, A.1, B, B.1, \dots).
-% \end{DescribeMacro}
+% Si vous souhaitez plutôt utiliser le plus récent paquetage %
+% \href{https://ctan.org/pkg/polyglossia}{\pkg{polyglossia}} %
+% avec {\XeLaTeX}, vous devez empêcher le chargement de \pkg{babel}
+% avec l'option |nobabel| de la classe, puis charger et configurer
+% \pkg{polyglossia} vous-même dans l'entête de votre document. Ce
+% paquetage est moins évolué que \pkg{babel} pour la typographie
+% française.
%
-% \subsection{Bibliographie}
+% \section{Police de caractères du document}
+% \label{sec:police}
+% \changes{6.0}{2024-06-17}{Documentation: révision de la section sur
+% les polices de caractères suite aux modifications apportées aux
+% règles de présentation de la FESP.}
%
-% La bibliographie figure normalement à la toute fin du document, sous
-% forme de chapitre non numéroté. Tel qu'expliqué à la
-% \autoref{sec:bibliographie:multiples}, la commande
-% \cmd{\bibliography} doit plutôt se trouver dans les fichiers des
-% chapitres dans une thèse ou un mémoire par articles.
+% Les documents {\LaTeX} sont facilement reconnaissables par leur
+% police de caractères par défaut: %
+% {\iftutex\fontfamily{lmr}\else\fontfamily{cmr}\fi\selectfont
+% Computer Modern}. %
+% Si vous le souhaitez, il est aujourd'hui assez simple de produire
+% des documents {\LaTeX} utilisant d'autres polices. L'approche
+% recommandée consiste à utiliser une police OpenType ou TrueType
+% présente sur votre système avec le moteur {\XeLaTeX}. Autrement,
+% vous pouvez charger l'une ou l'autre des polices PostScript
+% standards compatibles avec le moteur pdf{\LaTeX} en ayant recours au
+% paquetage %
+% \href{https://ctan.org/pkg/psnfss}{\pkg{psnfss}}. %
+% Dans tous les cas, assurez-vous de respecter les règles de
+% présentation de la FESP en matière de polices de caractères.
+%
+% La Bibliothèque de l’Université Laval détient une licence
+% d’utilisation des polices de très grande qualité %
+% \href{https://tug.org/store/lucida}{Lucida Bright}. %
+% Vous pouvez vous procurer gratuitement une copie des polices en
+% écrivant à %
+% \href{mailto:lucida@bibl.ulaval.ca}{lucida@bibl.ulaval.ca}.
+%
+% À titre indicatif, le présent document est composé avec les polices
+% OpenType %
+% \href{https://ctan.org/pkg/stix2-otf}{STIX~Two} %
+% pour le texte et %
+% \href{https://ctan.org/pkg/fira}{Fira} %
+% pour les éléments décoratifs (notamment \textsf{Fira Sans} pour les
+% titres de sections et \texttt{Fira Mono} pour le code informatique).
+%
+% \changes{6.0}{2024-05-25}{Documentation: suppression de la section
+% portant sur l'explication détaillée des gabarits. En échange,
+% ceux-ci comportent des commentaires additionnels.}
%
% \section{Commentaires, suggestions et aide}
% \changes{5.0}{2018-08-09}{Code source du projet déplacé de GitHub
-% vers GitLab.}
+% vers GitLab.}
+% \changes{6.0}{2024-06-18}{Documentation: retrait du wiki thèse
+% (fermé) et des archives de la liste ulthese-aide (peu utiles).}
%
-% Le \link{https://gitlab.com/vigou3/ulthese/}{dépôt du projet} dans
+% Le \href{https://gitlab.com/vigou3/ulthese/}{dépôt du projet} dans
% GitLab demeure le meilleur endroit pour rapporter des bogues ou pour
-% proposer des améliorations à la classe \class{ulthese}.
-%
-% Pour obtenir de l'aide additionnelle sur l'utilisation de la classe
-% --- et non sur celle de {\LaTeX} en général --- consultez d'abord:
-% \begin{enumerate}
-% \item le \link{http://www.theses.ulaval.ca/wiki/}{WikiThèse} de
-% l'Université Laval, en particulier la
-% \link{http://www.theses.ulaval.ca/wiki/index.php?title=FAQ}{Foire aux questions};
-% \item les
-% \link{http://listes.ulaval.ca/listserv/archives/ulthese-aide.html}{archives}
-% de la liste de distribution \texttt{ulthese-aide}.
-% \end{enumerate}
-% Si la réponse à votre question ne se trouve ni dans le wiki, ni dans
-% les archives, alors écrivez à l'adresse
-% \href{mailto:ulthese-aide@listes.ulaval.ca}{\url{ulthese-aide@listes.ulaval.ca}}.
-%
-% \StopEventually{
-% \begin{thebibliography}{15}
-% \addcontentsline{toc}{section}{Références}
-% \bibitem[{Arseneau(2010)}]{chapterbib}
-% Arseneau, D. 2010,
-% {\selectlanguage{english}\emph{chapterbib. Multiple
-% bibliographies in {\LaTeX}}}.
-% URL~\url{https://www.ctan.org/pkg/chapterbib/}.
-%
-% \bibitem[{Braams et Bezos(2016)}]{babel}
-% Braams, J. et J.~Bezos. 2016,
-% {\selectlanguage{english}\emph{Babel}}.
-% URL~\url{https://www.ctan.org/pkg/babel/}.
-%
-% \bibitem[{Carlisle et {The \LaTeX3\ Project}(2016)}]{graphicx}
-% Carlisle, D. et {The \LaTeX3\ Project}. 2016,
-% {\selectlanguage{english}\emph{Packages in the `graphics'
-% Bundle}}. URL~\url{https://www.ctan.org/pkg/graphics/}.
-%
-% \bibitem[{Charette(2015)}]{polyglossia}
-% Charette, F. 2015, {\selectlanguage{english}\emph{Polyglossia:
-% An Alternative to Babel for {\XeLaTeX} and {\LuaLaTeX}}}.
-% URL~\url{https://www.ctan.org/pkg/polyglossia/}, current
-% maintainer Arthur Reutenauer.
-%
-% \bibitem[{Daly(2010)}]{natbib}
-% Daly, P.~W. 2010, {\selectlanguage{english}\emph{Natural
-% Sciences Citations and References}}.
-% URL~\url{https://www.ctan.org/pkg/natbib/}.
-%
-% \bibitem[{Goulet(2013)}]{francais-bst}
-% Goulet, V. 2013, {\selectlanguage{french}«Paquetage
-% francais-bst»},
-% URL~\url{https://www.ctan.org/pkg/francais-bst/}.
-%
-% \bibitem[{Goulet(2020)}]{formation-latex-ul}
-% Goulet, V. 2020, {\selectlanguage{french}\emph{Rédaction avec
-% {\LaTeX}}}, document libre sous contrat Creative Commons.
-% URL~\url{httpss://ctan.org/pkg/formation-latex-ul}.
-%
-% \bibitem[{Harders(2012)}]{numprint}
-% Harders, H. 2012, {\selectlanguage{english}\emph{The
-% numprint package}}.
-% URL~\url{https://www.ctan.org/pkg/numprint/}.
-%
-% \bibitem[{Jeffrey et Mittelbach(2015)}]{inputenc}
-% Jeffrey, A. et F.~Mittelbach. 2015,
-% {\selectlanguage{english}\emph{inputenc.sty}}.
-% URL~\url{https://www.ctan.org/pkg/inputenc/}.
-%
-% \bibitem[{Kern(2016)}]{xcolor}
-% Kern, D.~U. 2016, {\selectlanguage{english}\emph{Extending
-% {\LaTeX}’s color facilities: the xcolor package}}.
-% URL~\url{https://www.ctan.org/pkg/xcolor/}.
-%
-% \bibitem[{Lehman et Wright(2018)}]{etoolbox}
-% Lehman, P. et J.~Wright. 2018,
-% {\selectlanguage{english}\emph{The etoolbox package}}.
-% URL~\url{https://www.ctan.org/pkg/etoolbox/}.
-%
-% \bibitem[{Malo(1996)}]{Malo:1996}
-% Malo, M. 1996, {\selectlanguage{french}\emph{Guide de la
-% communication écrite au cégep, à l'université et en
-% entreprise}}, Québec Amérique. ISBN~978-2-8903-7875-9.
-%
-% \bibitem[{Rahtz et Oberdiek(2017)}]{hyperref}
-% Rahtz, S. et H.~Oberdiek. 2017,
-% {\selectlanguage{english}\emph{Hypertext marks in {\LaTeX}: a
-% manual for hyperref}}.
-% URL~\url{https://www.ctan.org/pkg/hyperref/}.
-%
-% \bibitem[{Robertson et Hosny(2017)}]{fontspec}
-% Robertson, W. et K.~Hosny. 2017,
-% {\selectlanguage{english}\emph{The fontspec package: Font
-% selection for {\XeLaTeX} and {\LuaLaTeX}}}.
-% URL~\url{https://www.ctan.org/pkg/fontspec/}.
-%
-% \bibitem[{Wilson(2016)}]{memoir}
-% Wilson, P. 2016, {\selectlanguage{english}\emph{The Memoir Class
-% for Configurable Typesetting}}, 8{\ieme} éd., The Herries Press.
-% URL~\url{https://www.ctan.org/pkg/memoir/}, maintained by Lars
-% Madsen.
-% \end{thebibliography}
-% \PrintChanges
-% }
+% proposer des améliorations à la classe {\ulclass}.
+%
+% Pour de l'aide additionnelle sur l'utilisation de la classe~--- et
+% non sur celle de {\LaTeX} en général~--- écrivez à l'adresse %
+% \href{mailto:ulthese-aide@listes.ulaval.ca}{ulthese-aide@listes.ulaval.ca}.
%
% \appendix
%
@@ -1343,44 +1086,47 @@
% la \autoref{sec:utilisation:options} lorsque l'on souhaite créer une
% page de titre.
%
-% \begin{DescribeMacro}{multifacultaire}
-% Identifie une thèse multifacultaire. Valide uniquement avec un
-% grade de doctorat. Cette déclaration requiert ensuite d'utiliser
-% la commande \cmd{\faculteUL}.
-% \end{DescribeMacro}
-%
-% \begin{DescribeMacro}{extensionUdeS}
-% Identifie une thèse réalisée en extension à l'Université de
-% Sherbrooke. Valide uniquement avec un grade de doctorat. Cette
-% déclaration requiert ensuite d'utiliser les commandes
-% \cmd{\faculteUL} et \cmd{\faculteUdeS}.
-% \end{DescribeMacro}
-%
-% \begin{DescribeMacro}{extensionUQO}
-% Identifie une thèse réalisée en extension à l'Université du
-% Québec en Outaouais (UQO). Valide uniquement avec un grade de doctorat.
-% Cette déclaration requiert ensuite d'utiliser les commandes
-% \cmd{\faculteUL} et \cmd{\faculteUQO}.
-% \end{DescribeMacro}
-%
-% \begin{DescribeMacro}{extensionUQAC}
-% Identifie un mémoire réalisé en extension à l'Université du Québec
-% à Chicoutimi (UQAC). Valide uniquement avec un grade de maîtrise.
-% Cette déclaration requiert ensuite d'utiliser les commandes
-% \cmd{\faculteUL} et \cmd{\faculteUQAC}.
-% \end{DescribeMacro}
+% \begin{DescribeOption}{multifacultaire}
+% L'option |multifacultaire| identifie une thèse
+% multifacultaire. Valide uniquement avec un grade de doctorat.
+% Cette déclaration requiert ensuite d'utiliser la commande
+% \cmd{\faculteUL}.
+% \end{DescribeOption}
+%
+% \begin{DescribeOption}{extensionUdeS}
+% L'option |extensionUdeS| identifie une thèse réalisée en extension
+% à l'Université de Sherbrooke. Valide uniquement avec un grade de
+% doctorat. Cette déclaration requiert ensuite d'utiliser les
+% commandes \cmd{\faculteUL} et \cmd{\faculteUdeS}.
+% \end{DescribeOption}
+%
+% \begin{DescribeOption}{extensionUQO}
+% L'option |extensionUQO| identifie une thèse réalisée en extension
+% à l'Université du Québec en Outaouais (UQO). Valide uniquement
+% avec un grade de doctorat. Cette déclaration requiert ensuite
+% d'utiliser les commandes \cmd{\faculteUL} et \cmd{\faculteUQO}.
+% \end{DescribeOption}
+%
+% \begin{DescribeOption}{extensionUQAC}
+% L'option |extensionUQAC| identifie un mémoire réalisé en extension
+% à l'Université du Québec à Chicoutimi (UQAC). Valide uniquement
+% avec un grade de maîtrise. Cette déclaration requiert ensuite
+% d'utiliser les commandes \cmd{\faculteUL} et \cmd{\faculteUQAC}.
+% \end{DescribeOption}
%
% Ensuite, la composition d'une page de titre peut nécessiter
% d'utiliser les commandes ci-dessous en plus de celles de la
% \autoref{sec:utilisation:commandes}.
%
% \begin{DescribeMacro}{\annee}
-% Année du dépôt final de la thèse ou du mémoire.
+% La commande \cmdprint{\annee} spécifie l'année du dépôt final de
+% la thèse ou du mémoire.
% \end{DescribeMacro}
%
% \begin{DescribeMacro}{\univcotutelle}
-% Nom, ville et pays de l'université de cotutelle, déclarés sous la
-% forme
+% Pour les thèses en cotutelle, la commande
+% \cmdprint{\univcotutelle} permet de saisir le nom, la ville et le
+% pays de l'université de cotutelle, sous la forme
% \begin{quote}
% |\univcotutelle{Nom de l'université \\ Ville, Pays}|
% \end{quote}
@@ -1389,8 +1135,9 @@
% \end{DescribeMacro}
%
% \begin{DescribeMacro}{\gradecotutelle}
-% Grade conféré par l'université de cotutelle, déclaré
-% sous la forme
+% Pour les thèses en cotutelle, la commande
+% \cmdprint{\gradecotutelle} spécifie le grade conféré par
+% l'université de cotutelle, sous la forme
% \begin{quote}
% |\gradecotutelle{Nom du grade (sigle)}|
% \end{quote}
@@ -1399,8 +1146,9 @@
% \end{DescribeMacro}
%
% \begin{DescribeMacro}{\univbidiplomation}
-% Nom, ville et pays de l'université de bidiplomation, déclarés sous
-% la forme
+% Pour les mémoires en bidiplomation, la commande
+% \cmdprint{\univbidiplomation} permet de saisir le nom, la ville et
+% le pays de l'université de bidiplomation, sous la forme
% \begin{quote}
% |\univbidiplomation{Nom de l'université \\ Ville, Pays}|
% \end{quote}
@@ -1409,8 +1157,9 @@
% \end{DescribeMacro}
%
% \begin{DescribeMacro}{\gradebidiplomation}
-% Grade conféré par l'université de bidiplomation, déclaré sous la
-% forme
+% Pour les mémoires en bidiplomation, la commande
+% \cmdprint{\gradebidiplomation} spécifie le grade conféré par
+% l'université de bidiplomation, sous la forme
% \begin{quote}
% |\gradebidiplomation{Nom du grade (sigle)}|
% \end{quote}
@@ -1419,7 +1168,8 @@
% \end{DescribeMacro}
%
% \begin{DescribeMacro}{\faculteUL}
-% La commande a deux usages:
+% La commande \cmdprint{\faculteUL} sert à saisir deux types
+% d'informations:
% \begin{enumerate}
% \item noms des facultés pour les thèses et mémoires
% multifacultaires, séparés par des commandes |\\|;
@@ -1433,35 +1183,37 @@
% \end{DescribeMacro}
%
% \begin{DescribeMacro}{\faculteUdeS}
-% Nom de la faculté de l'Université de Sherbrooke hébergeant la
-% thèse en extension. Cette commande prend effet seulement lorsque
-% la classe est chargée avec l'option |extensionUdeS|.
+% La commande \cmdprint{\faculteUdeS} spécifie le nom de la faculté
+% de l'Université de Sherbrooke hébergeant la thèse en extension.
+% Cette commande prend effet seulement lorsque la classe est chargée
+% avec l'option |extensionUdeS|.
% \end{DescribeMacro}
%
% \begin{DescribeMacro}{\faculteUQO}
-% Nom de la faculté de l'Université du Québec en Outaouais
-% hébergeant la thèse en extension. Cette commande prend effet
-% seulement lorsque la classe est chargée avec l'option
-% |extensionUQO|.
+% La commande \cmdprint{\faculteUQO} spécifie le nom de la faculté
+% de l'Université du Québec en Outaouais hébergeant la thèse en
+% extension. Cette commande prend effet seulement lorsque la classe
+% est chargée avec l'option |extensionUQO|.
% \end{DescribeMacro}
%
% \begin{DescribeMacro}{\faculteUQAC}
-% Nom de la faculté de l'Université du Québec à Chicoutimi
-% hébergeant le mémoire en extension. Cette commande prend effet
-% seulement lorsque la classe est chargée avec l'option
-% |extensionUQAC|.
+% La commande \cmdprint{\faculteUQAC} spécifie le nom de la faculté
+% de l'Université du Québec à Chicoutimi hébergeant le mémoire en
+% extension. Cette commande prend effet seulement lorsque la classe
+% est chargée avec l'option |extensionUQAC|.
% \end{DescribeMacro}
%
% \begin{DescribeMacro}{\pagetitre}
-% Création de la page de titre. Ne pas utiliser la commande
-% \cmd{\pagetitle} de {\LaTeX} pour ce faire. De toutes les
+% La commande \cmdprint{\pagetitre} crée la page de titre à
+% l'endroit où elle apparait dans le code source. N'utilisez pas la
+% commande \cmd{\titlepage} de {\LaTeX} pour ce faire. De toutes les
% commandes ci-dessus, c'est la seule qui doit se trouver dans le
% corps du document plutôt que dans le préambule.
% \end{DescribeMacro}
%
+% \MaybeStop{\PrintChanges}
%
-% ^^A Début du code de la classe
-%
+% ^^A >>>>> Début du code de la classe
% \section{Mise en œuvre}
% \label{sec:meo}
%
@@ -1470,37 +1222,30 @@
% explorer comment la classe est programmée.
%
% \subsection{Tests et valeurs booléennes}
-% \changes{4.4}{2017-06-01}{Tests et valeurs booléennes réalisés sans ifthen.}
+% \changes{4.4}{2017-06-01}{Tests et valeurs booléennes réalisés sans
+% \textbf{ifthen}.}
%
-% Le paquetage \pkg{ifxetex} permet de tester si un document est
-% compilé avec \XeTeX.
-% \begin{macrocode}
-%<*class>
-\RequirePackage{ifxetex}
-% \end{macrocode}
% Nous définissons ici toutes les valeurs booléennes requises par la
% classe.
% \begin{macrocode}
+%<*class>
\newif\ifUL@babel \UL@babeltrue % charger babel?
\newif\ifUL@natbib \UL@natbibtrue % charger natbib?
\newif\ifUL@hyperref \UL@hyperreftrue % charger hyperref?
-\newif\ifUL@chapterbib \UL@chapterbibfalse % charger chapterbib?
-\newif\ifUL@sectionbib \UL@sectionbibfalse % option sectionbib de chapterbib?
-\newif\ifUL@isthesis % programme est une thèse?
-\newif\ifUL@iscotutelle \UL@iscotutellefalse % thèse en cotutelle?
+\newif\ifUL@isthesis % programme est une these?
+\newif\ifUL@iscotutelle \UL@iscotutellefalse % these en cotutelle?
\newif\ifUL@isexam \UL@isexamfalse % examen de doctorat?
-\newif\ifUL@isessay \UL@isessayfalse % essai de maîtrise?
+\newif\ifUL@isessay \UL@isessayfalse % essai de maitrise?
\newif\ifUL@isresearch \UL@isresearchfalse % projet de recherche?
\newif\ifUL@isworkterm \UL@isworktermfalse % rapport de stage?
\newif\ifUL@hassubtitle \UL@hassubtitlefalse % document a un sous-titre?
-\newif\ifUL@hastitlepage \UL@hastitlepagefalse % page titre utilisée?
+\newif\ifUL@hastitlepage \UL@hastitlepagefalse % page titre utilisee?
% \end{macrocode}
%
% \subsection{Options de la classe}
%
% Les grandes catégories d'options propres à la classe sont: la
-% possibilité d'empêcher le chargement du paquetage \pkg{natbib};
-% l'activation des bibliographies par chapitre ou par section; la
+% possibilité d'empêcher le chargement du paquetage \pkg{natbib}; la
% possibilité d'empêcher le chargement du paquetage \pkg{babel}; la
% possibilité d'empêcher le chargement du paquetage \pkg{hyperref}; la
% taille de la police de caractères en points; le type de grade; la
@@ -1516,21 +1261,6 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{bibchapitre}
-% \begin{macro}{bibsection}
-% L'option |bibchapitre| entraine le chargement du paquetage
-% \pkg{chapterbib} qui permet de composer des bibliographies
-% multiples dans un document, habituellement une par
-% chapitre. Avec l'option |bibsection|, la bibliographie se
-% présente sous la forme d'une section plutôt que d'un chapitre.
-% La seconde option implique la première.
-% \begin{macrocode}
-\DeclareOption{bibchapitre}{\UL@chapterbibtrue}
-\DeclareOption{bibsection}{\UL@chapterbibtrue\UL@sectionbibtrue}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
% \begin{macro}{nobabel}
% L'option |nobabel| permet d'empêcher la classe de charger le
% paquetage \pkg{babel}. Cette option peut s'avérer utile pour
@@ -1618,10 +1348,6 @@
\UL@isthesisfalse
\renewcommand*{\UL@typenum}{0}
\newcommand*{\UL@degree}{Ma\^itre en architecture (M.~Arch.)}}
-\DeclareOption{MA}{%
- \UL@isthesisfalse
- \renewcommand*{\UL@typenum}{0}
- \newcommand*{\UL@degree}{Ma\^itre \`es arts (M.A.)}}
\DeclareOption{LLM}{%
\UL@isthesisfalse
\renewcommand*{\UL@typenum}{0}
@@ -1634,14 +1360,10 @@
\UL@isthesisfalse
\renewcommand*{\UL@typenum}{0}
\newcommand*{\UL@degree}{Ma\^itre en musique (M.~Mus.)}}
-\DeclareOption{MPht}{%
- \UL@isthesisfalse
- \renewcommand*{\UL@typenum}{0}
- \newcommand*{\UL@degree}{Ma\^itre en physioth\'erapie (M.~Pht.)}}
-\DeclareOption{MSc}{%
+\DeclareOption{MPsEd}{%
\UL@isthesisfalse
\renewcommand*{\UL@typenum}{0}
- \newcommand*{\UL@degree}{Ma\^itre \`es sciences (M.~Sc.)}}
+ \newcommand*{\UL@degree}{Ma\^itre en psycho\'education (M.~Ps.~\'ed.)}}
\DeclareOption{MScGeogr}{%
\UL@isthesisfalse
\renewcommand*{\UL@typenum}{0}
@@ -1650,10 +1372,18 @@
\UL@isthesisfalse
\renewcommand*{\UL@typenum}{0}
\newcommand*{\UL@degree}{Ma\^itre en service social (M.~Serv.~soc.)}}
-\DeclareOption{MPsEd}{%
+\DeclareOption{MTravSoc}{%
\UL@isthesisfalse
\renewcommand*{\UL@typenum}{0}
- \newcommand*{\UL@degree}{Ma\^itre en psycho\'education (M.~Ps.~\'ed.)}}
+ \newcommand*{\UL@degree}{Ma\^itre en travail social (M.~Trav.~soc.)}}
+\DeclareOption{MA}{%
+ \UL@isthesisfalse
+ \renewcommand*{\UL@typenum}{0}
+ \newcommand*{\UL@degree}{Ma\^itre \`es arts (M.A.)}}
+\DeclareOption{MSc}{%
+ \UL@isthesisfalse
+ \renewcommand*{\UL@typenum}{0}
+ \newcommand*{\UL@degree}{Ma\^itre \`es sciences (M.~Sc.)}}
\DeclareOption{multifacultaire}{%
\ifUL@isthesis
\renewcommand*{\UL@typenum}{1}
@@ -1761,7 +1491,7 @@
% \end{macrocode}
% \end{macro}
%
-% \subsection{Chargement de la classe \class{memoir}}
+% \subsection{Chargement de la classe \texorpdfstring{\class{memoir}}{memoir}}
%
% Toutes les options de la classe sont passées à \class{memoir}. Le
% format de papier et la taille de police par défaut sont, dans
@@ -1787,51 +1517,50 @@
% \end{macrocode}
%
% \subsection{Paquetages requis}
-% \changes{5.0}{2018-06-10}{Le paquetage unicode-math n'est plus
-% chargé par défaut par la classe.}
-% \changes{5.0}{2018-08-11}{Le paquetage hyperref est désormais chargé
-% dans la classe plutôt que dans les gabarits. Requiert le paquetage
-% etoolbox.}
+% \changes{5.0}{2018-06-10}{Le paquetage \textbf{unicode-math} n'est
+% plus chargé par défaut par la classe.}
+% \changes{5.0}{2018-08-11}{Le paquetage \textbf{hyperref} est
+% désormais chargé dans la classe plutôt que dans les gabarits.
+% Requiert le paquetage etoolbox.}
%
% La classe s'efforce de charger un minimum de paquetages afin d'éviter
% les conflits potentiels.
%
-% {\XeLaTeX} requiert le paquetage \pkg{fontspec} pour le traitement
-% des polices. Sous {\LaTeX}, il est aujourd'hui préférable d'utiliser
-% les polices T1.
+% \changes{6.0}{2024-05-24}{Mise en œuvre: paquetage \textbf{inputenc} ^^A
+% désormais chargé avec l'option \texttt{utf8} lorsque la compilation
+% est effectuée par pdf{\LaTeX}.}
+% Le code source doit obligatoirement être enregistré dans le codage
+% UTF-8. Avec pdf{\LaTeX}, cela requiert le paquetage \pkg{inputenc}.
+%
+% \changes{6.0}{2024-05-24}{Mise en œuvre: paquetage
+% \textbf{microtype} désormais chargé par la classe avec
+% \textbf{fontspec} ou \textbf{fontenc}.}
+% \changes{6.0}{2024-05-24}{Mise en œuvre: option \texttt{Ligatures} ^^A
+% plus définie par défaut pour les polices OpenType.}
+% La classe charge également les paquetages minimalement nécessaires
+% pour la gestion des polices de caractères, soit \pkg{fontspec} avec
+% les moteurs modernes et \pkg{fontenc} avec pdf{\LaTeX}.
% \begin{macrocode}
-\ifxetex
+\iftutex
+ \RequirePackage[babel=true]{microtype}
\RequirePackage{fontspec}
- \defaultfontfeatures{Ligatures=TeX}
\else
+ \RequirePackage[babel=true]{microtype}
+ \RequirePackage[utf8]{inputenc}
\RequirePackage[T1]{fontenc}
\fi
% \end{macrocode}
%
-% Les paquetages \pkg{natbib} et \pkg{chapterbib} doivent être chargés
-% avant \pkg{babel} pour bien fonctionner, le cas échéant. Tel que
-% précisé dans la documentation de \pkg{natbib}, l'option |sectionbib|
-% est passée à ce paquetage lorsqu'il est chargé, ou à
-% \pkg{chapterbib} autrement.
+% Le paquetage \pkg{natbib} doit être chargé avant \pkg{babel} pour
+% bien fonctionner, le cas échéant.
% \begin{macrocode}
\ifUL@natbib
- \ifUL@sectionbib
- \PassOptionsToPackage{sectionbib}{natbib}
- \fi
\RequirePackage[round,semicolon,authoryear]{natbib}
\fi
-\ifUL@chapterbib
- \ifUL@sectionbib
- \ifUL@natbib\else
- \PassOptionsToPackage{sectionbib}{chapterbib}
- \fi
- \fi
- \RequirePackage{chapterbib}
-\fi
% \end{macrocode}
%
% Le support pour les langues autres que l'anglais est offert par le
-% paquetage \pkg{babel} --- à moins que l'option |nobabel| n'ait
+% paquetage \pkg{babel}~--- à moins que l'option |nobabel| n'ait
% été spécifiée au chargement de la classe. Les langues sont passées
% en option de la classe, et non du paquetage. Le paquetage
% \pkg{numprint} est requis par \pkg{babel} pour la définition
@@ -1844,14 +1573,16 @@
% \end{macrocode}
%
% Le paquetage obligatoire \pkg{hyperref} est chargé en tout dernier
-% avec la commande \cmd{\AtEndPreamble} du paquetage \pkg{etoolbox}.
-% Si l'option |nohyperref| a été spécifiée, la classe vérifie que le
-% paquetage a été chargé. La configuration de base de la classe fait
-% en sorte que tous les liens sont signalés par la couleur
-% |ULlinkcolor| définie à la \autoref{sec:couleurs}.
+% avec la commande \cmd{\AtEndPreamble} du paquetage \pkg{etoolbox}
+% (chargé par \class{memoir}). Si l'option |nohyperref| a été
+% spécifiée, la classe vérifie que le paquetage a été chargé. La
+% configuration de base de la classe fait en sorte que tous les liens
+% sont signalés par la couleur |ULlinkcolor| définie à la
+% \autoref{sec:couleurs}.
+% \changes{6.0}{2024-06-17}{Mise en œuvre: chargement explicite de
+% \textbf{etoolbox} retiré, car le paquetage est chargé par memoir.}
% \begin{macrocode}
\ifUL@hyperref
- \RequirePackage{etoolbox}
\AtEndPreamble{\RequirePackage{hyperref}}
\else
\AtBeginDocument{%
@@ -1870,11 +1601,8 @@
\RequirePackage{xcolor}
% \end{macrocode}
%
-% La commande \cmd{\textcopyright} utilisée sur la page de titre requiert le
-% paquetage \pkg{textcomp} pour obtenir un beau signe de copyright.
-% \begin{macrocode}
-\RequirePackage{textcomp}
-% \end{macrocode}
+% \changes{6.0}{2024-06-17}{Mise en œuvre: paquetage \textbf{textcomp} ^^A
+% retiré, car non nécessaire.}
%
% \subsection{Paquetage incompatible}
%
@@ -1926,7 +1654,7 @@
% \subsection{Interligne}
%
% L'espacement entre les lignes est d'un interligne et demi.
-% L'espacement «double» entre les paragraphes est fixé à
+% L'espacement double entre les paragraphes est fixé à
% |0.5\baselineskip| afin d'en arriver à une disposition agréable à
% l'œil. Le retrait de première ligne est supprimé puisque plus
% nécessaire suite à l'ajout de l'espacement entre les paragraphes.
@@ -1968,11 +1696,15 @@
% utilisées dans la classe sont toutes quelques points inférieures à
% celles des gabarits Word.}%
% et les graisses présentées au \autoref{tab:polices}. La
-% déclaration |\fontencoding{T1}| est nécessaire avec {\XeLaTeX} pour
-% explicitement charger la même police que sous {\LaTeX}.
+% déclaration |\fontencoding{T1}| est nécessaire avec les moteurs
+% modernes pour explicitement charger la même police qu'avec
+% pdf{\LaTeX}.
%
% \begin{table}
% \centering
+% \caption{Tailles et graisses de la police Helvetica des éléments
+% de la page de titre}
+% \label{tab:polices}
% \begin{tabular}{ll}
% \toprule
% Élément & Police \\
@@ -1984,9 +1716,6 @@
% Autres éléments & 12~points normal \\
% \bottomrule
% \end{tabular}
-% \caption{Tailles et graisses de la police Helvetica des éléments
-% de la page de titre}
-% \label{tab:polices}
% \end{table}
%
% \begin{macrocode}
@@ -2435,22 +2164,30 @@
\setsecnumdepth{subsection}
%</class>
% \end{macrocode}
-% ^^A Fin du code de la classe
+% ^^A <<<<< Fin du code de la classe
%
-% ^^A Il faut placer ces notes de changement relatives aux gabarits
+% ^^A Les notes de versions relatives aux gabarits doivent se trouver
% ^^A avant \Finale
% \changes{5.0}{2018-06-08}{Gabarits: meilleure indication du texte à
-% remplacer.}
+% remplacer.}
% \changes{5.0}{2018-06-08}{Gabarits: bonification de la structure
-% d'un chapitre de thèse ou de mémoire par articles.}
+% d'un chapitre de thèse ou de mémoire par articles.}
% \changes{5.0}{2018-04-25}{Gabarits: ajout d'étiquettes et de renvois
-% dans les gabarits des parties du document.}
+% dans les gabarits des parties du document.}
% \changes{5.0}{2018-04-25}{Gabarits: automatisation de l'ajout
-% d'entrées dans la table des matières à l'aide d'étiquettes et de
-% renvois.}
+% d'entrées dans la table des matières à l'aide d'étiquettes et de
+% renvois.}
% \changes{4.4}{2017-05-16}{Gabarits: nouveau gabarit pour une thèse
-% par articles.}
+% par articles.}
% \changes{4.2}{2016-03-29}{Gabarits: nouvelles options de babel.}
+% \changes{6.0}{2024-05-22}{Gabarits: gabarits pour une thèse par
+% articles révisés suite aux changements aux règles de présentation.}
+% \changes{6.0}{2024-05-22}{Gabarits: meilleure sélection automatique
+% des paquetages pour les polices et pour le codage selon le moteur
+% {\TeX}.}
+% \changes{6.0}{2024-06-20}{Gabarits: seul l'exemple de changement
+% pour les polices STIX Two est maintenant fourni, et ce, dans une
+% version qui fonctionne avec les polices livrées avec TeX Live.}
%
% \Finale
%
@@ -2473,60 +2210,57 @@
%% description détaillée de la classe, de ce gabarit et des options
%% disponibles.
%%
+%% Vous devez obligatoirement enregistrer tout fichier contenant des
+%% caractères non-ASCII (comme des lettres accentuées) dans le codage
+%% de caractères UTF-8.
+%%
%% [Ne pas hésiter à supprimer les commentaires après les avoir lus.]
%%
%% Déclaration de la classe avec le type de grade
%<phd>%% [l'un de LLD, DMus, DPsy, DThP, PhD]
-%<m>%% [l'un de MATDR, MArch, MA, LLM, MErg, MMus, MPht, MSc, MScGeogr,
-%<m>%% MServSoc, MPsEd]
+%<m>%% [l'un de MATDR, MArch, LLM, MErg, MMus, MPsEd, MScGeogr,
+%<m>%% MServSoc, MTravSoc, MA, MSc]
%% et les langues les plus courantes. Le français sera la langue par
-%<!articles>%% défaut du document.
-%<articles>%% défaut du document. L'option 'bibsection' permet de créer des
-%<articles>%% bibliographies par chapitre présentées sous forme de section
-%<articles>%% numérotée.
-%<phd&standard>\documentclass[PhD,english,french]{ulthese}
-%<phd&articles>\documentclass[PhD,bibsection,english,french]{ulthese}
+%% défaut du document.
+%<phd&(standard|articles)>\documentclass[PhD,english,french]{ulthese}
%<phd&cotutelle>\documentclass[PhD,cotutelle,english,french]{ulthese}
-%<m&standard>\documentclass[MSc,english,french]{ulthese}
-%<m&articles>\documentclass[MSc,bibsection,english,french]{ulthese}
+%<m&(standard|articles)>\documentclass[MSc,english,french]{ulthese}
%<m&bidiplomation>\documentclass[MA,bidiplomation,english,french]{ulthese}
- %% Encodage utilisé pour les caractères accentués dans les fichiers
- %% source du document. Les gabarits sont encodés en UTF-8. Inutile
- %% avec XeLaTeX, qui gère Unicode nativement.
- \ifxetex\else \usepackage[utf8]{inputenc} \fi
-
%% Charger ici les autres paquetages nécessaires pour le document.
%% Quelques exemples; décommenter au besoin.
%\usepackage{amsmath} % recommandé pour les mathématiques
%\usepackage{icomma} % gestion de la virgule dans les nombres
- %% Utilisation d'une autre police de caractères pour le document.
- %% - Sous LaTeX
- %\usepackage{mathpazo} % texte et mathématiques en Palatino
- %\usepackage{mathptmx} % texte et mathématiques en Times
- %% - Sous XeLaTeX
- %\setmainfont{TeX Gyre Pagella} % texte en Pagella (Palatino)
- %\setmathfont{TeX Gyre Pagella Math} % mathématiques en Pagella (Palatino)
- %\setmainfont{TeX Gyre Termes} % texte en Termes (Times)
- %\setmathfont{TeX Gyre Termes Math} % mathématiques en Termes (Times)
+ %% Utilisation d'une autre police de caractères pour le document
+ %% (exemple pour les polices STIX Two incluses dans TeX Live).
+ %% - Avec pdfLaTeX
+ %\usepackage{stix2}
+ %% - Avec XeLaTeX
+ %\setmainfont{STIXTwoText}
+ %[
+ % Extension = .otf,
+ % UprightFont = *-Regular,
+ % BoldFont = *-SemiBold,
+ % ItalicFont = *-Italic,
+ % BoldItalicFont = *-SemiBoldItalic,
+ %]
+ %\setmathfont{STIXTwoMath-Regular}
+ %[
+ % Extension = .otf,
+ %]
%% Options de mise en forme du mode français de babel. Consulter la
- %% documentation du paquetage babel pour les options disponibles.
- %% Désactiver (effacer ou mettre en commentaire) si l'option
- %% 'nobabel' est spécifiée au chargement de la classe.
- \frenchbsetup{%
+ %% documentation du paquetage babel-french pour les options
+ %% disponibles. Désactiver (effacer ou mettre en commentaire) si
+ %% l'option 'nobabel' est spécifiée au chargement de la classe.
+ \frenchsetup{%
StandardItemizeEnv=true, % format standard des listes
ThinSpaceInFrenchNumbers=true, % espace fine dans les nombres
og=«, fg=» % caractères « et » sont les guillemets
}
-%<!articles> %% Style de la bibliographie.
-%<!articles> \bibliographystyle{}
-%<articles> %% Suppression du numéro de section de la bibliographie. Utilisation
-%<articles> %% de \extrasfrench parce que c'est la dernière langue déclarée dans
-%<articles> %% \documentclass, ci-dessus.
-%<articles> %\addto\extrasfrench{%
-%<articles> % \renewcommand{\bibsection}{\section*{\bibname}\prebibhook}}
+ %% Style de la bibliographie.
+ \bibliographystyle{}
%% Composition de la page frontispice. Remplacer les éléments entre < >.
%% Supprimer les caractères < >. Couper un long titre ou un long
@@ -2561,19 +2295,19 @@
\frontmatter % pages liminaires
-\frontispice % production de la page frontispice
+\frontispice % page frontispice (obligatoire)
-\include{resume} % résumé français
-\include{abstract} % résumé anglais
+\include{resume} % résumé français (obligatoire)
+\include{abstract} % résumé anglais (optionnel)
\cleardoublepage
-\tableofcontents % production de la TdM
+\tableofcontents % table des matières (obligatoire)
\cleardoublepage
-\listoftables % production de la liste des tableaux
+\listoftables % liste des tableaux
\cleardoublepage
-\listoffigures % production de la liste des figures
+\listoffigures % liste des figures
\cleardoublepage
\dedicace{<Dédicace si désiré>}
@@ -2583,7 +2317,8 @@
\cleardoublepage
\include{remerciements} % remerciements
-\include{avantpropos} % avant-propos
+%<!articles>\include{avantpropos} % avant-propos (optionnel)
+%<articles>\include{avantpropos} % avant-propos (obligatoire)
\mainmatter % corps du document
@@ -2598,8 +2333,7 @@
\include{annexe} % annexe A
-%<!articles>\bibliography{} % production de la bibliographie
-%<!articles>
+\bibliography{} % production de la bibliographie
\end{document}
%</gabarit>
%
@@ -2637,8 +2371,8 @@
\label{chap-avantpropos} % étiquette pour renvois
\phantomsection\addcontentsline{toc}{chapter}{\nameref{chap-avantpropos}} % inclure dans TdM
-<Texte de l'avant-propos. Obligatoire dans une thèse ou un mémoire par
-articles.>
+<Texte de l'avant-propos. Obligatoire seulement pour une thèse ou un
+mémoire par intégration d'articles.>
%</avantpropos>
%
%<*introduction>
@@ -2669,8 +2403,6 @@ normal, sauf qu'elle n'est pas numérotée.>
%<articles>
<Texte du chapitre ou de l'article.>
%<articles>
-%<articles>\bibliographystyle{} % style de la bibliographie
-%<articles>\bibliography{} % production de la bibliographie
%</chapitre>
%
%<*conclusion>
diff --git a/macros/latex/contrib/ulthese/ulthese.ins b/macros/latex/contrib/ulthese/ulthese.ins
index 7987a0f368..59e0357662 100644
--- a/macros/latex/contrib/ulthese/ulthese.ins
+++ b/macros/latex/contrib/ulthese/ulthese.ins
@@ -1,44 +1,34 @@
-%%
-%% Copyright (C) 2017 Universite Laval
-%%
-%% This file may be distributed and/or modified under the conditions
-%% of the LaTeX Project Public License, either version 1.3c of this
-%% license or (at your option) any later version. The latest version
-%% of this license is in:
-%%
-%% http://www.latex-project.org/lppl.txt
-%%
-%% and version 1.3c or later is part of all distributions of LaTeX
-%% version 2006/05/20 or later.
-%%
+%% Procédure d'installation de la classe ulthese.cls et des gabarits à
+%% partir de ulthese.dtx
\input docstrip.tex
\keepsilent
\askforoverwritefalse
+\nopostamble
\preamble
This is a generated file.
-Copyright (C) 2017 Universite Laval
+Copyright (C) 2012-2024 Universite Laval
This file may be distributed and/or modified under the conditions
of the LaTeX Project Public License, either version 1.3c of this
license or (at your option) any later version. The latest version
of this license is in:
- http://www.latex-project.org/lppl.txt
+ https://www.latex-project.org/lppl.txt
and version 1.3c or later is part of all distributions of LaTeX
version 2006/05/20 or later.
This work has the LPPL maintenance status `maintained'.
-The Current Maintainer of this work is Universite Laval
-<ulthese-dev@bibl.ulaval.ca>.
+The Current Maintainer of this work is Vincent Goulet for
+Universite Laval <ulthese-dev@bibl.ulaval.ca>.
-This work consists of the files ulthese.dtx and ulthese.ins and the
-derived files listed in the README.md file.
+This work consists of the files ulthese.dtx, ulthese.ins, and the
+derived files listed in the file README.md.
\endpreamble
@@ -83,17 +73,18 @@ derived files listed in the README.md file.
\obeyspaces
\Msg{*************************************************************}
\Msg{* *}
-\Msg{* La classe ulthese est maintenant prete a l'emploi. *}
+\Msg{* La classe ulthese est maintenant prête à l'emploi! *}
\Msg{* *}
-\Msg{* Utiliser un gabarit comme base pour votre fichier maitre. *}
-\Msg{* Vous pouvez effacer les gabarits inutiles. Composer le *}
-\Msg{* document dans des fichiers .tex distincts; quelques *}
-\Msg{* gabarits sont fournis avec la classe. *}
+\Msg{* Utilisez un des gabarits fournis avec la classe comme *}
+\Msg{* base pour votre fichier maitre. Vous pouvez effacer les *}
+\Msg{* gabarits inutiles. Composez le document dans des fichiers *}
+\Msg{* .tex distincts; quelques gabarits sont aussi fournis avec *}
+\Msg{* la classe. *}
\Msg{* *}
\Msg{* Pour produire la documentation de la classe, compiler le *}
-\Msg{* fichier ulthese.dtx avec LaTeX. *}
+\Msg{* fichier ulthese.dtx avec XeLaTeX. *}
\Msg{* *}
-\Msg{* Bonne redaction! *}
+\Msg{* Bonne rédaction! *}
\Msg{* *}
\Msg{*************************************************************}
diff --git a/macros/latex/contrib/ulthese/ulthese.pdf b/macros/latex/contrib/ulthese/ulthese.pdf
index 6cc5a94957..ae1094d5ca 100644
--- a/macros/latex/contrib/ulthese/ulthese.pdf
+++ b/macros/latex/contrib/ulthese/ulthese.pdf
Binary files differ
diff --git a/macros/latex/contrib/unbtex/README.md b/macros/latex/contrib/unbtex/README.md
index 2293f91fe4..0d0f2325fa 100644
--- a/macros/latex/contrib/unbtex/README.md
+++ b/macros/latex/contrib/unbtex/README.md
@@ -1,6 +1,6 @@
# UnBTeX: A class for bachelor, master, and doctoral thesis at the
# University of Brasilia (UnB), Brazil.
-# Version 1.5.1 2024/03/02
+# Version 1.5.2 2024/07/04
Copyright (C) 2021-2024 by Henrique C. Ferreira <hcferreira@unb.br>
@@ -109,6 +109,12 @@ Here is a history of changes:
1.5.1 (2024-03-02):
. The approval sheet (folha de aprovação) has been changed
. The bottom margin size has been corrected to be consistently adhered to
+ 1.5.2 (2024-07-04):
+ . The length of the footnote separator line has been corrected according
+ to ABNT standards
+ . The left margin indentation of the citacao environment has been corrected
+ according to ABNT standards
+ . The left margin indentation of the references can be adjusted by the user
## Overleaf
diff --git a/macros/latex/contrib/unbtex/unbtex-example.pdf b/macros/latex/contrib/unbtex/unbtex-example.pdf
index f1498c6985..0b6493ed0b 100644
--- a/macros/latex/contrib/unbtex/unbtex-example.pdf
+++ b/macros/latex/contrib/unbtex/unbtex-example.pdf
Binary files differ
diff --git a/macros/latex/contrib/unbtex/unbtex-example.tex b/macros/latex/contrib/unbtex/unbtex-example.tex
index 1ad0019003..33872900a5 100644
--- a/macros/latex/contrib/unbtex/unbtex-example.tex
+++ b/macros/latex/contrib/unbtex/unbtex-example.tex
@@ -1,7 +1,7 @@
%%
%% UnBTeX: A class for bachelor, master, and doctoral thesis at the
%% University of Brasilia (UnB), Brazil
-%% Version 1.5.1 2024/03/02
+%% Version 1.5.2 2024/07/04
%% Copyright (C) 2021-2024 by Henrique C. Ferreira <hcferreira@unb.br>
%%
%% This class file may be distributed and/or modified under the conditions
@@ -55,7 +55,7 @@
% ---
% Diretório das figuras
-\graphicspath{{unbtex-example/figuras/}}
+\graphicspath{{unbtex-example/figuras}}
% ---
% ------------------------------------------------------------------------
@@ -67,7 +67,7 @@
% ---
% Título
% ---
-\titulo{Modelo de trabalho \\ acadêmico com UnB\TeX} % No idioma principal do texto
+\titulo{Modelo de trabalho\\ acadêmico com UnB\TeX} % No idioma principal do texto
% Insira \\ caso queira forçar quebras de linha no título
% Não utilize caixa alta para o título do trabalho e nem das seções (com exceção de siglas)
% ---
@@ -102,35 +102,35 @@
% ---
% Informações do trabalho
% ---
-\tipotrabalho{Projeto Final de Curso} % Dissertação de Mestrado; Tese de Doutorado (em português, mesmo que o trabalho seja em inglês)
+\tipotrabalho{Trabalho de Conclusão de Curso} % Dissertação de Mestrado; Tese de Doutorado (em português, mesmo que o trabalho seja em inglês)
%\tipotrabalho{Tese de Doutorado}
% ---
-\tipocurso{Engenharia de Controle e Automação} % Nome do curso de graduação ou do programa de pós-graduação, em português
+\tipocurso{Engenharia Elétrica} % Nome do curso de graduação ou do programa de pós-graduação, em português
%\tipocurso{Programa de Pós-Graduação em Engenharia Elétrica}
% ---
% Texto que aparece na folha de rosto e na folha de aprovação
-\preambulo{Projeto Final de Curso submetido como requisito parcial para obtenção do grau de Engenheiro de Controle e Automação.}
+\preambulo{Trabalho de Conclusão de Curso submetido como requisito parcial para obtenção do grau de Engenheiro Eletricista.}
%\preambulo{Tese de Doutorado submetida ao Programa de Pós-Graduação em Engenharia Elétrica da Universidade de Brasília como parte dos requisitos necessários para obtenção do grau de Doutor.}
% Consulte a secretaria/coordenação do curso para saber o que deve ser escrito no preâmbulo. Use português mesmo que o trabalho seja em inglês.
% ---
% Informação adicional para ser impressa na folha de rosto
\publicacao{} % Deixe o argumento vazio caso não haja
-%\publicacao{Publicação PPGEE 201/23} % Também imprime as informações no trabalho no topo da página da ficha catalográfica
+%\publicacao{Publicação PPGEE 201/23} % Também imprime as informações do trabalho no topo da página da ficha catalográfica
% ---
% ---
% Instituição
% ---
-\instituicao[Universidade de Brasília]{Faculdade de Tecnologia}{} % Use português mesmo que o trabalho seja em inglês
-%\instituicao[Universidade de Brasília]{Faculdade de Tecnologia}{Departamento de Engenharia Elétrica} % Caso queira incluir o departamento da unidade acadêmica
+%\instituicao[Universidade de Brasília]{Faculdade de Tecnologia}{} % Use português mesmo que o trabalho seja em inglês
+\instituicao[Universidade de Brasília]{Faculdade de Tecnologia}{Departamento de Engenharia Elétrica} % Caso queira incluir o departamento da unidade acadêmica
% ---
% ---
% Local e data da defesa
% ---
\local{Brasília}
-\dia{2}
-\mes{março}
+\dia{4}
+\mes{julho}
\ano{2024}
% ---
@@ -148,7 +148,7 @@
\membrodabancav{} % Deixe vazio se não tiver o quinto membro
\membrodabancavfuncao{Examinador externo}
% Comprimento da linha da assinatura (ajuste conforme necessidade)
-\setlength{\ABNTEXsignwidth}{9cm}
+\signlinewidth{9cm}
% ---
% ---
@@ -212,7 +212,7 @@ Agradecimentos do segundo autor.
% Primeiro autor
\begin{DedicatoriaAutorI}
-Este trabalho é dedicado às crianças adultas que, \\
+Este trabalho é dedicado às crianças adultas que,\\
quando pequenas, sonharam em se tornar cientistas.
\end{DedicatoriaAutorI}
@@ -334,6 +334,7 @@ Dedicatória do segundo autor.
% Referências bibliográficas
% ---
% Arquivo com as referências bibliográficas
+\bibhang{2.2em} % Recuo da margem esquerda da lista de referências
\bibliography{unbtex-example/referencias} % O estilo de citação é selecionado automaticamente
% ---
diff --git a/macros/latex/contrib/unbtex/unbtex-example/anexo-b.tex b/macros/latex/contrib/unbtex/unbtex-example/anexo-b.tex
index 63bad4c7b5..d482ac0000 100644
--- a/macros/latex/contrib/unbtex/unbtex-example/anexo-b.tex
+++ b/macros/latex/contrib/unbtex/unbtex-example/anexo-b.tex
@@ -7,6 +7,9 @@ A \cpageref{marcaunb.1} foi extraída do \emph{manual de identidade visual}\foot
\cleardoublepage
\newcounter{includepdfpage} % para referenciar no texto páginas pdf incluídas
+\makepagestyle{simple}
+\makeevenhead{simple}{\footnotesize\thepage}{}{}
+\makeoddhead{simple}{}{}{\footnotesize\thepage}
\includepdf[
pages=-, % intervalo das páginas do arquivo pdf que serão incluídas
diff --git a/macros/latex/contrib/unbtex/unbtex-example/capitulo2.tex b/macros/latex/contrib/unbtex/unbtex-example/capitulo2.tex
index 46eed2b2bc..1eb8ccc3b2 100644
--- a/macros/latex/contrib/unbtex/unbtex-example/capitulo2.tex
+++ b/macros/latex/contrib/unbtex/unbtex-example/capitulo2.tex
@@ -264,9 +264,7 @@ A \cref{sec:citacao} descreve o ambiente \texttt{citacao}, que pode receber como
A ficha catalográfica é um elemento pré-textual obrigatório para todos os trabalhos acadêmicos (teses, dissertações e trabalhos de conclusão de curso). No site da Biblioteca Central da UnB\footnote{\url{https://bce.unb.br/servicos/elaboracao-de-fichas-catalograficas/}} há mais informações a respeito. A classe UnB\TeX\ gera automaticamente a ficha catalográfica com as informações do trabalho, com opção de inclusão do código Cutter.
-A Tabela Cutter-Sanborn é uma codificação elaborada por Charles Ammi Cutter e, posteriormente, expandida por Kate F. Sanborn. Na Tabela Cutter-Sanborn é possível obter o código correspondente ao sobrenome do autor.
-
-Em vários sites da internet\footnote{\url{https://www.tabelacutter.com/}}\footnote{\url{https://cuttersonline.com.br/registrador-gratuito}} há ferramentas online para obtenção do código. Se o nome do primeiro autor do trabalho for, digamos, Carlos Lisboa, a entrada da ferramenta online deverá ser:
+A Tabela Cutter-Sanborn é uma codificação elaborada por Charles Ammi Cutter e, posteriormente, expandida por Kate F. Sanborn. Na Tabela Cutter-Sanborn é possível obter o código correspondente ao sobrenome do autor. Em vários sites da internet\footnote{\url{https://www.tabelacutter.com/}}\footnote{\url{https://cuttersonline.com.br/registrador-gratuito}} há ferramentas online para obtenção do código. Se o nome do primeiro autor do trabalho for, digamos, Carlos Lisboa, a entrada da ferramenta online deverá ser:
\begin{verbatim}
Lisboa, Carlos
\end{verbatim}
@@ -276,7 +274,7 @@ Nenhuma outra informação é necessária para gerar o código que, no caso dess
\end{verbatim}
Note que na ficha catalográfica gerada aparecerá \texttt{L769m}. A letra \textbf{L} maiúscula, correspondente à primeira letra do sobrenome \textbf{Lisboa}, é automaticamente adicionada na frente do número. A letra \textbf{m} minúscula, correspondente à primeira letra do título do trabalho (neste caso, \emph{Modelo de trabalho acadêmico com UnB\TeX}), é adicionada no final do número.
-Se seu nome for, por exemplo, Carlos de Souza, utilize
+Se o nome do autor for, por exemplo, Carlos de Souza, utilize
\begin{verbatim}
Souza, Carlos de
\end{verbatim}
@@ -289,12 +287,12 @@ como entrada da ferramenta online que gera o código Cutter. Caso não deseje im
\section{Inclusão de outros arquivos}\label{sec:include}
% ---
-É uma boa prática dividir o seu documento em diversos arquivos, e não apenas escrever tudo em um único. Esse recurso foi utilizado neste documento. Para incluir diferentes arquivos em um arquivo principal, de modo que cada arquivo incluído fique em uma página diferente, utilize o comando:
+É uma boa prática dividir o seu documento em diversos arquivos, e não apenas escrever tudo em um único. Para incluir diferentes arquivos em um arquivo principal, de modo que cada arquivo incluído fique em uma página diferente, utilize o comando:
\begin{verbatim}
\include{documento-a-ser-incluido} % sem a extensão .tex
\end{verbatim}
-Para incluir documentos sem que haja necessariamente quebra de páginas, utilize o comando:
+Para incluir documentos haver necessariamente quebra de páginas, utilize o comando:
\begin{verbatim}
\input{documento-a-ser-incluido} % sem a extensão .tex
\end{verbatim}
diff --git a/macros/latex/contrib/unbtex/unbtex-example/capitulo3.tex b/macros/latex/contrib/unbtex/unbtex-example/capitulo3.tex
index 30514e0f81..676cedb21c 100644
--- a/macros/latex/contrib/unbtex/unbtex-example/capitulo3.tex
+++ b/macros/latex/contrib/unbtex/unbtex-example/capitulo3.tex
@@ -136,7 +136,7 @@ O pacote \textsf{subfig} foi utilizado para inserir as \cref{fig:subfigura_circu
\caption{Figura com subfiguras}
\label{fig:subfiguras}
\subfloat[Primeira subfigura]{\label{fig:subfigura_circuito} \centering
- \includegraphics[scale=1]{circuito.pdf}}
+ \includegraphics[scale=1]{circuito.pdf}}
\subfloat[Segunda subfigura]{\label{fig:subfigura_grafico} \hspace{0.4em}
\centering \includegraphics[scale=1.2]{diodocurva.pdf}}
\end{figure}
@@ -175,15 +175,13 @@ Caso queira utilizar as mesmas fontes tipográficas do texto para escrever dentr
\label{fig:psgrag}
\end{figure}
-Crie no Overleaf um novo projeto que tenha o conteúdo do \cref{cod:tex} dentro de um arquivo \texttt{tex} nomeado, por exemplo, como \texttt{blockdiagram.tex}. No menu do Overleaf, altere o compilador de \texttt{pdfLaTeX} para \texttt{LaTeX} e defina o arquivo \texttt{blockdiagram.tex} como principal. Coloque o arquivo \texttt{blockdiagram.eps} dentro do projeto e compile. A saída gerada, corresponde à \cref{fig:psfrag1}, deve ser salva como \texttt{blockdiagram.pdf}. Este arquivo poderá ser carregado no projeto do texto do trabalho (TCC, dissertação ou tese) que você estiver escrevendo com o UnB\TeX\ (que usa o \texttt{pdfLaTeX} como compilador).
-
-\lstinputlisting[numbers=none,float,caption={\texttt{blockdiagram.tex}},label={cod:tex}]{unbtex-example/codigos/blockdiagram.tex}
-
-Observe na \cref{fig:psfrag2} que o ``\texttt{g}'' é substituído por ``$G(s)$'' na \cref{fig:psfrag1}. Para tal, o \cref{cod:tex} utiliza o seguinte comando do pacote \textsf{psfrag}:
+Crie no Overleaf um novo projeto que tenha o conteúdo do \cref{cod:tex} dentro de um arquivo \texttt{tex} nomeado, por exemplo, como \texttt{blockdiagram.tex}. No menu do Overleaf, altere o compilador de \texttt{pdfLaTeX} para \texttt{LaTeX} e defina o arquivo \texttt{blockdiagram.tex} como principal. Coloque o arquivo \texttt{blockdiagram.eps} dentro do projeto e compile. A saída gerada, corresponde à \cref{fig:psfrag1}, deve ser salva como \texttt{blockdiagram.pdf}. Este arquivo poderá ser carregado no projeto do texto do trabalho (TCC, dissertação ou tese) que você estiver escrevendo com o UnB\TeX\ (que usa o \texttt{pdfLaTeX} como compilador). Observe na \cref{fig:psfrag2} que o ``\texttt{g}'' é substituído por ``$G(s)$'' na \cref{fig:psfrag1}. Para tal, o \cref{cod:tex} utiliza o seguinte comando do pacote \textsf{psfrag}:
\begin{verbatim}
\psfrag{g}[c][c]{\footnotesize $G(s)$}
\end{verbatim}
+\lstinputlisting[numbers=none,float,caption={\texttt{blockdiagram.tex}},label={cod:tex}]{unbtex-example/codigos/blockdiagram.tex}
+
O pacote \textsf{psfrag} funciona apenas com o compilador \texttt{LaTeX}, o que torna a criação de um novo projeto no Overleaf uma boa solução. Este projeto poderá ser aproveitado para gerar outras figuras do documento principal. Para mais informações sobre o pacote, consulte seu manual\footnote{Disponível em \url{http://mirrors.ctan.org/macros/latex/contrib/psfrag/pfgguide.pdf}}.
Evite o uso de figuras no formato \texttt{eps} no documento principal. Documentos que usam a classe UnB\TeX\ precisam ser compilados pelo \texttt{pdfLaTeX}, que inicialmente converte os arquivos \texttt{eps} para o formato \texttt{pdf}, exigindo maior tempo de processamento. O projeto auxiliar (\cref{cod:tex}) usa a classe \texttt{article} e admite compilador \texttt{LaTeX}, que não necessita de etapas adicionais para processar códigos que chamam arquivos \texttt{eps}. \ No newline at end of file
diff --git a/macros/latex/contrib/unbtex/unbtex-example/capitulo4.tex b/macros/latex/contrib/unbtex/unbtex-example/capitulo4.tex
index cb9577b192..71c5eaf5c6 100644
--- a/macros/latex/contrib/unbtex/unbtex-example/capitulo4.tex
+++ b/macros/latex/contrib/unbtex/unbtex-example/capitulo4.tex
@@ -1,5 +1,5 @@
% ----------------------------------------------------------
-\chapter{Ambientes}
+\chapter{Ambientes do UnB\TeX}
% ----------------------------------------------------------
A classe UnB\TeX\ disponibiliza alguns ``ambientes'', ou seja, caixas de texto com formatação especial para certos tipos de elementos, que podem ser automaticamente numerados (por exemplo, \cref{thm:WYSIWYG}, \cref{exc:in}, \cref{alg:NNMPC}, etc.). Esses ambientes foram adaptados a partir do modelo de \citeonline{Castro2019}.
@@ -51,7 +51,7 @@ O WYSIWYG (ou ``What You See Is What You Get - O que você vê é o formato fina
\section{Algoritmo}
-O \cref{alg:NNMPC} é um pseudo-código para obtenção de um controlador preditivo baseado em modelo e em redes neurais.
+O \cref{alg:NNMPC} é um exemplo de pseudo-código.
\begin{algorithm}[htb]
%\linespread{1.0}\selectfont % espaçamento entre as linhas do algoritmo
diff --git a/macros/latex/contrib/unbtex/unbtex-example/referencias.bib b/macros/latex/contrib/unbtex/unbtex-example/referencias.bib
index d247828400..699d20461f 100644
--- a/macros/latex/contrib/unbtex/unbtex-example/referencias.bib
+++ b/macros/latex/contrib/unbtex/unbtex-example/referencias.bib
@@ -12,7 +12,7 @@
pages = {342--351}}
@article{van86,
- author = {{van}, Gigch, John P. and Leo L. Pipino},
+ author = {John P. van Gigch and Leo L. Pipino},
journal = {Future Computing Systems},
number = {1},
pages = {71-97},
@@ -53,7 +53,7 @@
@inproceedings{martin1997,
address = {Rio de Janeiro},
- author = {Martin, Neto, L. and C. Bayer and J. Mielniczuk},
+ author = {L. Martin{ }Neto and C. Bayer and J. Mielniczuk},
booktitle = {Resumos do [...]},
conference-number = {26},
conference-year = {1997},
diff --git a/macros/latex/contrib/unbtex/unbtex.cls b/macros/latex/contrib/unbtex/unbtex.cls
index 39f277761d..332fdce505 100644
--- a/macros/latex/contrib/unbtex/unbtex.cls
+++ b/macros/latex/contrib/unbtex/unbtex.cls
@@ -1,7 +1,7 @@
%%
%% UnBTeX: A class for bachelor, master, and doctoral thesis at the
%% University of Brasilia (UnB), Brazil
-%% Version 1.5.1 2024/03/02
+%% Version 1.5.2 2024/07/04
%% Copyright (C) 2021-2024 by Henrique C. Ferreira <hcferreira@unb.br>
%%
%% This class file may be distributed and/or modified under the conditions
@@ -21,7 +21,7 @@
%%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{unbtex}[2024/03/02 v1.5.1 Modelo da Universidade de Brasília baseado em abnTeX2]
+\ProvidesClass{unbtex}[2024/07/04 v1.5.2 Modelo da Universidade de Brasília baseado em abnTeX2]
% ------------------------------------------------------------------------
% Opções para a classe
@@ -118,9 +118,20 @@
\setlength{\parindent}{3em} % Tamanho da indentação da primeira linha do parágrafo
\frenchspacing % Retira espaço extra entre as frases (após o ponto final)
\setlength{\parskip}{3pt plus 1pt minus 1pt} % Espaço entre parágrafos
+\pdfminorversion=7 % Configuração da versão do arquivo pdf produzido
+
+% Configurações das margens e cabeçalho
+\AtBeginDocument{
+\setlrmarginsandblock{3cm}{2cm}{*} % Margens esquerda e direita
+\setulmarginsandblock{3cm}{2cm}{*} % Margens superior e inferior
+\checkandfixthelayout[nearest] % Implementa as margens
+\pagestyle{myheadings} % Cabeçalho com linha e numeração da página
+}
+
+% Espaçamento para notas de rodapé
\setlength{\skip\footins}{20pt plus 2pt minus 2pt} % Espaço entre o texto e as notas de rodapé
\addtolength{\footnotesep}{2pt} % Espaço entre as notas de rodapé
-\pdfminorversion=7 % Configuração da versão do arquivo pdf produzido
+\renewcommand*{\footnoterule}{\kern-3pt \hrule width 5cm \kern 2.6pt} % Tamanho do traço superior (5cm)
% Ajusta espaço entre texto e figuras/tabelas
\setlength{\textfloatsep}{18pt plus 2pt minus 2pt} % Espaçamento entre texto e floats no topo/base da página
@@ -137,9 +148,6 @@
\renewcommand{\thefigure}{\thechapter.\arabic{figure}}\numberwithin{figure}{chapter}
\renewcommand{\thetable}{\thechapter.\arabic{table}}\numberwithin{table}{chapter}
-% Configuração do cabeçalho das páginas
-\pagestyle{myheadings} % Cabeçalho com linha e numeração da página
-
% Modifica o tamanho da fonte e espaçamento entre linhas no ambiente verbatim
\RequirePackage{fvextra}
\renewenvironment{verbatim}{\VerbatimEnvironment
@@ -385,16 +393,15 @@
\urlstyle{same}
}
% Gera as referências bibliográficas de acordo com as normas da ABNT
+\newcommand{\bibhang}[1]{\setlength{\bibindent}{#1}}
\IfStrEq{\bibsty}{alf}{% Estilo autor-data
-\newcommand{\recuo}{3em} % Indentação da lista de referências
-\RequirePackage[alf,recuo=\recuo,abnt-etal-list=0,abnt-etal-cite=3,abnt-emphasize=bf,bibjustif]{abntex2cite}
+\RequirePackage[alf,abnt-etal-list=0,abnt-etal-cite=3,abnt-emphasize=bf,bibjustif]{abntex2cite}
\renewcommand{\@biblabel}[1]{}%
\IfStrEq{\idioma}{brazil} % Seleciona o arquivo de estilo de citação
{\bibliographystyle{unbtexcite/unbtex-alf-pt}}{\bibliographystyle{unbtexcite/unbtex-alf-en}}
}{%
\IfStrEq{\bibsty}{num}{% Estilo numérico
-\newcommand{\recuo}{2.2em} % Aumente este valor se o número de referências for superior a 100
-\RequirePackage[num,recuo=\recuo,abnt-etal-list=0,abnt-emphasize=bf,bibjustif]{abntex2cite}
+\RequirePackage[num,abnt-etal-list=0,abnt-emphasize=bf,bibjustif]{abntex2cite}
\RequirePackage{cite} % Para ordenar, comprimir e colocar entre colchetes os números nas citações
\renewcommand{\@biblabel}[1]%
{%
@@ -408,7 +415,7 @@
{\setlength{\ABCIauxlen}{\minimumbiblabelwidth-\ABCIauxlen}}%
{\setlength{\ABCIauxlen}{0cm}}%
%{\biblabeltext\hspace{\ABCIauxlen}}%
-\parbox[t]{\recuo}{\raggedleft\biblabeltext\hspace{\ABCIauxlen}}%
+\parbox[t]{\bibindent}{\raggedleft\biblabeltext\hspace{\ABCIauxlen}}%
}}%
\renewcommand{\citeonline}[2][] % Redefine \citeonline como \cite
{\ifthenelse{\equal{#1}{}}{\cite{#2}}{\cite[#1]{#2}}}
@@ -465,19 +472,36 @@
indent=0pt,
entrynumberformat=\entrynumberwithprefix{\figurename},
dynnumwidth,
- %numsep=0em
]{tocline}{figure}
\DeclareTOCStyleEntry[
indent=0pt,
entrynumberformat=\entrynumberwithprefix{\tablename},
dynnumwidth,
- %numsep=0em
]{tocline}{table}
\newcommand\entrynumberwithprefix[2]{#1~#2\thinspace\hfill}
% ---
% ---
+% Citacao direta com mais de 3 linhas - ABNT NBR 10520/2002 - 5.3
+% Corrige tamanho do recuo do ambiente citacao do abntex2 para 4cm
+% ---
+\ifthenelse{\equal{\ABNTEXistwocolumn}{true}}{%
+ \setlength{\ABNTEXcitacaorecuo}{1.8cm}
+}{% else
+ \setlength{\ABNTEXcitacaorecuo}{4cm}
+}
+\renewenvironment*{citacao}[1][default]{%
+ \begin{adjustwidth}{\ABNTEXcitacaorecuo}{0mm}%
+ \ABNTEXfontereduzida%
+ \begin{SingleSpace}%
+ \ifthenelse{\not\equal{#1}{default}}{\itshape\selectlanguage{#1}}{}%
+}{%
+ \end{SingleSpace}%
+ \end{adjustwidth}}
+% ---
+
+% ---
% Define o texto dos rótulos de acordo com o idioma principal selecionado
% ---
\AtBeginDocument{
@@ -611,13 +635,14 @@
\renewcommand{\imprimircapa}{%
\hypersetup{pageanchor=false}
\setlrmargins{*}{*}{1} % Margens laterais iguais para a capa
-\checkandfixthelayout[nearest]
+\setulmarginsandblock{3cm}{2cm}{*}
+\checkandfixthelayout[fixed]
\begin{capa}%
\center
\AddToShipoutPicture*{\BackgroundPic}
\vspace*{7.5cm}
- {\LARGE{\sffamily{\bfseries\instituicaoi \\ \instituicaoii \\
- \abntex@ifnotempty{\instituicaoiii}{\instituicaoiii}}}\par}
+ {\LARGE\sffamily\bfseries\instituicaoi \\ \instituicaoii \\
+ \abntex@ifnotempty{\instituicaoiii}{\instituicaoiii}\par}
\vfill
\begin{center}
% Define o tamanho da fonte do título
@@ -641,7 +666,7 @@
% Reestabelece as margens
\setlrmarginsandblock{3cm}{2cm}{*}
\setulmarginsandblock{3cm}{2cm}{*}
-\checkandfixthelayout[fixed]
+\checkandfixthelayout[nearest]
\cleardoublepage
\hypersetup{pageanchor=true}
}
@@ -652,8 +677,7 @@
\put(0,0){%
\parbox[b][\paperheight]{\paperwidth}{%
\vfill
- \centering
- \includegraphics[width=\paperwidth,height=\paperheight,keepaspectratio]{capa_fundo.pdf}%
+ \centering \includegraphics[width=\paperwidth,height=\paperheight,keepaspectratio]{capa_fundo.pdf}%
\vfill
}
}
@@ -665,8 +689,8 @@
% ---
\renewcommand{\folhaderostocontent}{%
\begin{center}
- {\LARGE{\sffamily{\bfseries\instituicaoi \\ \instituicaoii \\
- \abntex@ifnotempty{\instituicaoiii}{\instituicaoiii}}}\par}
+ {\LARGE\sffamily\bfseries \instituicaoi \\ \instituicaoii \\
+ \abntex@ifnotempty{\instituicaoiii}{\instituicaoiii}\par}
\vfill\vfill
\begin{center}
@@ -712,7 +736,7 @@
\ifthenelse{\equal{\imprimirpublicacao}{}}{}{
\begin{OnehalfSpace}
{\noindent\sffamily\large REFERÊNCIA BIBLIOGRÁFICA}\par
-\noindent\MakeUppercase\autorisobrenome, \autorinome \ifthenelse{\equal{\autoriinome}{}}{.}{;~\MakeUppercase\autoriisobrenome, \autoriinome.} {\bfseries\StrDel{\imprimirtitulo}{\\ }}. \begin{otherlanguage*}{brazil}\imprimirtipotrabalho\ (\imprimircurso)\ifthenelse{\equal{\imprimirpublicacao}{}}{}{,~\imprimirpublicacao} -- \ifthenelse{\equal{\instituicaoiii}{}}{}{\instituicaoiii,~}\instituicaoii, \instituicaoi, \imprimirlocal, \thelastpage~p. \imprimirano.\end{otherlanguage*}
+\noindent\MakeUppercase\autorisobrenome, \autorinome \ifthenelse{\equal{\autoriinome}{}}{.}{;~\MakeUppercase\autoriisobrenome, \autoriinome.} {\bfseries\StrDel{\imprimirtitulo}{\\}}. \begin{otherlanguage*}{brazil}\imprimirtipotrabalho\ (\imprimircurso)\ifthenelse{\equal{\imprimirpublicacao}{}}{}{,~\imprimirpublicacao} -- \ifthenelse{\equal{\instituicaoiii}{}}{}{\instituicaoiii,~}\instituicaoii, \instituicaoi, \imprimirlocal, \thelastpage~p. \imprimirano.\end{otherlanguage*}
\end{OnehalfSpace}}
\IfInteger{\imprimircutter}{\setlength{\fboxsep}{10pt}}{\setlength{\fboxsep}{18pt}}
\vspace*{\fill}
@@ -724,7 +748,7 @@
\IfInteger{\imprimircutter}{\begin{tabular}{p{1.25cm} p{10.25cm}}}{} \cutter
\autorisobrenome, \autorinome. \\
\IfInteger{\imprimircutter}{\StrChar{\autorisobrenome}{1}\imprimircutter\StrChar{\imprimirtitulo}{1}[\SUBtemp]\MakeLowercase{\SUBtemp}}{} \cutter
-\hspace*{2em}\noindent \StrDel{\imprimirtitulo}{\\ } ~/ \begin{otherlanguage*}{brazil}{\autorinome\ \autorisobrenome; \ifthenelse{\equal{\autoriinome}{}}{}{\autoriinome\ \autoriisobrenome;} \MakeLowercase\orientname\ \orientnome\ \orientsobrenome \ifthenelse{\equal{\coorientnome}{}}{.}{;~\MakeLowercase\coorientname\ \coorientnome\ \coorientsobrenome.} \texttt{-{}-} \imprimirlocal, \imprimirano.}\end{otherlanguage*} \\ \cutter
+\hspace*{2em}\noindent \StrDel{\imprimirtitulo}{\\} ~/ \begin{otherlanguage*}{brazil}{\autorinome\ \autorisobrenome; \ifthenelse{\equal{\autoriinome}{}}{}{\autoriinome\ \autoriisobrenome;} \MakeLowercase\orientname\ \orientnome\ \orientsobrenome \ifthenelse{\equal{\coorientnome}{}}{.}{;~\MakeLowercase\coorientname\ \coorientnome\ \coorientsobrenome.} \texttt{-{}-} \imprimirlocal, \imprimirano.}\end{otherlanguage*} \\ \cutter
\hspace*{2em}\noindent \thelastpage~p. \\ \cutter
\\ \cutter
\hspace*{2em}\noindent\begin{otherlanguage*}{brazil}\imprimirtipotrabalho\ (\imprimircurso)\ \texttt{-{}-} \instituicaoi, \imprimirano.\end{otherlanguage*} \\ \cutter
@@ -742,18 +766,19 @@
% ---
% Imprime folha de aprovação
% ---
+\newcommand{\signlinewidth}[1]{\setlength{\ABNTEXsignwidth}{#1}}
\newcommand{\imprimirfolhadeaprovacao}{%
\begin{folhadeaprovacao}
\begin{center}
- {\Large{\sffamily{\bfseries\instituicaoi \\ \instituicaoii \\
- \abntex@ifnotempty{\instituicaoiii}{\instituicaoiii}}}\par}
+ {\Large\sffamily\bfseries\instituicaoi \\ \instituicaoii \\
+ \abntex@ifnotempty{\instituicaoiii}{\instituicaoiii}\par}
\vfill
\begin{center}
% Define o tamanho da fonte do título
- \autotitle[1]{\bfseries\StrDel{\imprimirtitulo}{\\ }}
+ \autotitle[1]{\bfseries\StrDel{\imprimirtitulo}{\\}}
\ifthenelse{\equal{\titleformat}{\large}}
- {\color{verdeunb}\Large\bfseries \StrDel{\imprimirtitulo}{\\ }\par}
- {\color{verdeunb}\titleformat\bfseries \StrDel{\imprimirtitulo}{\\ }\par}
+ {\color{verdeunb}\Large\bfseries \StrDel{\imprimirtitulo}{\\}\par}
+ {\color{verdeunb}\titleformat\bfseries \StrDel{\imprimirtitulo}{\\}\par}
\end{center}
\vfill
@@ -781,10 +806,6 @@
\abntex@ifnotempty{\membrodabancaivnome}{\assinatura{\textbf{\membrodabancaivnome} \\ \membrodabancaivfuncaonome}}
\abntex@ifnotempty{\membrodabancavnome}{\assinatura{\textbf{\membrodabancavnome} \\ \membrodabancavfuncaonome}}
}
-%\vfill
-% \begin{center}
-% {\sffamily\large\imprimirlocal \\ \imprimirano\par}
-% \end{center}
\end{center}
\end{folhadeaprovacao}
}
diff --git a/macros/latex/contrib/unicodefonttable/changes.txt b/macros/latex/contrib/unicodefonttable/changes.txt
index 3a8e048f31..ba49c7bd2f 100644
--- a/macros/latex/contrib/unicodefonttable/changes.txt
+++ b/macros/latex/contrib/unicodefonttable/changes.txt
@@ -1,3 +1,11 @@
+2024-06-06 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * unicodefonttable.dtx:
+ provide updated class file for documentation
+
+ (subsection{User interface commands}):
+ Temp fix for problem with lttagging.dtx
+
2023-05-10 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
* unicodefonttable.dtx (subsection{Handling block titles}):
diff --git a/macros/latex/contrib/unicodefonttable/l3doc-TUB.cls b/macros/latex/contrib/unicodefonttable/l3doc-TUB2024.cls
index 50a8a9a9d9..0c5a3f20c5 100644
--- a/macros/latex/contrib/unicodefonttable/l3doc-TUB.cls
+++ b/macros/latex/contrib/unicodefonttable/l3doc-TUB2024.cls
@@ -1,11 +1,12 @@
%%
-%% This is file `l3doc-TUB.cls'
+%% This is file `l3doc.cls',
+%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% l3doc.dtx (with options: `class') + several manual changes!
+%% l3doc.dtx (with options: `class')
%%
-%% Copyright (C) 1990-2018 The LaTeX3 Project
+%% Copyright (C) 1990-2024 The LaTeX Project
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
@@ -14,8 +15,9 @@
%%
%% https://www.latex-project.org/lppl.txt
%%
-%% File: l3doc.dtx Copyright (C) 1990-2018 The LaTeX3 project
-%%
+%% This file is part of the "l3kernel bundle" (The Work in LPPL)
+%% and all files in that bundle must be distributed together.
+%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%% This is really a temporary file intended for a single article
@@ -30,10 +32,10 @@
%% was meant for (which so far is 2) you are on your own :-)
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\RequirePackage{expl3,xparse,calc}
-\ProvidesExplClass{l3doc-TUB}{2021/03/02}{}
- {L3 Experimental documentation class (special version for TUGboat with fixes)}
+%% File: l3doc.dtx
+\RequirePackage{calc}
+\ProvidesExplClass{l3doc-TUB2024}{2024-05-08}{}
+ {L3 Experimental documentation class}
\clist_new:N \g_docinput_clist
\seq_new:N \g_doc_functions_seq
\seq_new:N \g_doc_macros_seq
@@ -54,8 +56,9 @@
\prop_new:N \g__codedoc_missing_tests_prop
\seq_new:N \g__codedoc_not_tested_seq
\seq_new:N \g__codedoc_testfiles_seq
-\bool_new:N \l__codedoc_macro_internal_set_bool
+\bool_new:N \l__codedoc_macro_deprecated_bool
\bool_new:N \l__codedoc_macro_internal_bool
+\bool_new:N \l__codedoc_macro_nodoc_bool
\bool_new:N \l__codedoc_macro_TF_bool
\bool_new:N \l__codedoc_macro_pTF_bool
\bool_new:N \l__codedoc_macro_noTF_bool
@@ -69,6 +72,9 @@
\bool_new:N \g__codedoc_checkfunc_bool
\bool_new:N \g__codedoc_checktest_bool
\bool_new:N \g__codedoc_kernel_bool
+\bool_new:N \g__codedoc_cs_break_bool
+\bool_new:N \g__codedoc_show_notes_bool
+\bool_gset_true:N \g__codedoc_cs_break_bool
\tl_new:N \l__codedoc_tmpa_tl
\tl_new:N \l__codedoc_tmpb_tl
\int_new:N \l__codedoc_tmpa_int
@@ -78,12 +84,10 @@
\bool_new:N \l__codedoc_names_verb_bool
\seq_new:N \l__codedoc_names_seq
\seq_new:N \g__codedoc_nested_names_seq
-\tl_const:Nx \c__codedoc_backslash_tl { \iow_char:N \\ }
-\exp_last_unbraced:NNo
- \cs_new_eq:NN \c__codedoc_backslash_token { \c__codedoc_backslash_tl }
\tl_new:N \l__codedoc_index_macro_tl
\tl_new:N \l__codedoc_index_key_tl
\tl_new:N \l__codedoc_index_module_tl
+\tl_new:N \l__codedoc_macro_do_not_index_tl
\bool_new:N \l__codedoc_index_internal_bool
\tl_new:N \g__codedoc_module_name_tl
\tl_const:Nn \c__codedoc_iow_rule_tl
@@ -113,39 +117,20 @@
\cs_new_eq:NN \__codedoc_tmpa:w ?
\cs_new_eq:NN \__codedoc_tmpb:w ?
\cs_generate_variant:Nn \seq_set_split:Nnn { NoV }
-\cs_generate_variant:Nn \seq_gput_right:Nn { Nf }
-\cs_generate_variant:Nn \str_case:nn { fn }
-\cs_generate_variant:Nn \tl_count:n { f }
-\cs_generate_variant:Nn \tl_greplace_all:Nnn { Nx , Nno }
-\cs_generate_variant:Nn \tl_if_empty:nTF { f }
-\cs_generate_variant:Nn \tl_if_head_eq_charcode:nNTF { o }
-\cs_generate_variant:Nn \tl_if_head_eq_charcode:nNT { o }
-\cs_generate_variant:Nn \tl_if_head_eq_charcode:nNF { o }
-\cs_generate_variant:Nn \tl_if_head_eq_meaning:nNF { V }
-\cs_generate_variant:Nn \tl_if_in:nnTF { no , oo }
-\cs_generate_variant:Nn \tl_if_in:NnTF { No }
-\cs_generate_variant:Nn \tl_if_in:NnT { No }
-\cs_generate_variant:Nn \tl_if_in:NnF { No }
-\cs_generate_variant:Nn \tl_remove_all:Nn { Nx }
-\cs_generate_variant:Nn \tl_replace_all:Nnn { Nx , Nnx, No , Nno }
-\cs_generate_variant:Nn \tl_replace_once:Nnn { Noo }
-\cs_generate_variant:Nn \tl_to_str:n { f , o }
-\cs_generate_variant:Nn \prop_get:NnNTF { Nx }
-\cs_generate_variant:Nn \prop_put:Nnn { Nx }
-\cs_generate_variant:Nn \prop_gput:Nnn { NVx }
+\cs_generate_variant:Nn \tl_to_str:n { f }
\prg_new_protected_conditional:Npnn \__codedoc_if_almost_str:n #1 { TF , T , F }
{
\int_compare:nNnTF
{ \tl_count:n {#1} }
- < { \tl_count:f { \tl_to_str:f {#1} } }
+ < { \tl_count:e { \tl_to_str:f {#1} } }
{ \prg_return_false: }
{ \prg_return_true: }
}
-\cs_generate_variant:Nn \__codedoc_if_almost_str:nT { V }
+\prg_generate_conditional_variant:Nnn \__codedoc_if_almost_str:n { V } { T }
\cs_new_protected:Npn \__codedoc_trim_right:Nn #1#2
{
\cs_set:Npn \__codedoc_tmp:w ##1 #2 ##2 \q_stop { \exp_not:n {##1} }
- \tl_set:Nx #1 { \exp_after:wN \__codedoc_tmp:w #1 #2 \q_stop }
+ \__kernel_tl_set:Nx #1 { \exp_after:wN \__codedoc_tmp:w #1 #2 \q_stop }
}
\cs_generate_variant:Nn \__codedoc_trim_right:Nn { No }
\prg_new_protected_conditional:Npnn \__codedoc_str_if_begin:nn #1#2 { TF , T , F }
@@ -160,18 +145,13 @@
{ oo } { TF , T , F }
\cs_new_protected:Npn \__codedoc_replace_at_at:N #1
{
- \bool_if:NT \l__codedoc_in_implementation_bool
- {
- \bool_if:NT \l__codedoc_detect_internals_bool
- { \__codedoc_detect_internals:N #1 }
- }
\tl_if_empty:NF \g__codedoc_module_name_tl
{
\exp_args:NNo \__codedoc_replace_at_at_aux:Nn
#1 \g__codedoc_module_name_tl
}
}
-\cs_new_protected:Npx \__codedoc_replace_at_at_aux:Nn #1#2
+\cs_new_protected:Npe \__codedoc_replace_at_at_aux:Nn #1#2
{
\tl_replace_all:Nnn #1 { \token_to_str:N @ } { @ }
\tl_replace_all:Nnn #1 { \token_to_str:N _ } { _ }
@@ -181,12 +161,17 @@
\tl_replace_all:Nnn #1 { @ @ } { _ _ #2 }
\tl_replace_all:Nnn #1 { \token_to_str:N a a } { @ @ }
}
+\cs_new_protected:Npn \__codedoc_detect_internals:N #1
+ {
+ \bool_if:NT \l__codedoc_detect_internals_bool
+ { \__codedoc_detect_internals_aux:N #1 }
+ }
\group_begin:
\char_set_catcode_active:N \^^M
- \cs_new_protected:Npn \__codedoc_detect_internals:N #1
+ \cs_new_protected:Npn \__codedoc_detect_internals_aux:N #1
{
\tl_set_eq:NN \l__codedoc_detect_internals_tl #1
- \tl_replace_all:Non \l__codedoc_detect_internals_tl { \token_to_str:N _ } { _ }
+ \tl_replace_all:NVn \l__codedoc_detect_internals_tl \c_underscore_str { _ }
\seq_set_split:NnV \l__codedoc_tmpa_seq { _ _ } \l__codedoc_detect_internals_tl
\seq_pop_left:NN \l__codedoc_tmpa_seq \l__codedoc_detect_internals_tl
\seq_map_variable:NNn \l__codedoc_tmpa_seq \l__codedoc_detect_internals_tl
@@ -200,7 +185,7 @@
\__codedoc_trim_right:Nn \l__codedoc_detect_internals_tl _
\__codedoc_trim_right:Nn \l__codedoc_detect_internals_tl :
\__codedoc_trim_right:No \l__codedoc_detect_internals_tl { \token_to_str:N : }
- \msg_warning:nnxxx { l3doc-TUB } { foreign-internal }
+ \msg_warning:nneee { l3doc } { foreign-internal }
{ \tl_to_str:N \l__codedoc_detect_internals_cs_tl }
{ \tl_to_str:N \l__codedoc_detect_internals_tl }
{ \tl_to_str:N \g__codedoc_module_name_tl }
@@ -237,6 +222,7 @@
{ n } { n }
{ o } { n }
{ f } { n }
+ { e } { n }
{ x } { n }
{ V } { n }
{ v } { n }
@@ -279,29 +265,30 @@
\__codedoc_if_almost_str:nTF {#1}
{
\__codedoc_key_get_base_TF:nN {#1} \l__codedoc_tmpa_tl
- \tl_set:Nx #2
+ \__kernel_tl_set:Nx #2
{ \__codedoc_split_function_do:on \l__codedoc_tmpa_tl { \__codedoc_base_form_aux:nnN } }
}
{ \tl_set:Nn #2 {#1} }
}
-\cs_new:Npx \__codedoc_key_get_base_TF:nN #1#2
+\cs_new:Npe \__codedoc_key_get_base_TF:nN #1#2
{
- \tl_set:Nx #2 { \exp_not:N \tl_to_str:n {#1} \scan_stop: }
- \tl_if_in:NnTF #2 { \tl_to_str:n { F } \scan_stop: }
+ \__kernel_tl_set:Nx #2 { \exp_not:N \tl_to_str:n {#1} }
+ \tl_if_in:NoF #2 { \tl_to_str:n {:} }
+ { \exp_not:N \prg_break: }
+ \tl_if_in:onT { #2 z } { \tl_to_str:n {TF} z }
+ { \exp_not:N \prg_break: }
+ \tl_if_in:onT { #2 z } { \tl_to_str:n {T} z }
{
- \tl_if_in:NnF #2 { \tl_to_str:n { TF } \scan_stop: }
- {
- \tl_replace_once:Nnn #2
- { \tl_to_str:n { F } \scan_stop: }
- { \tl_to_str:n { TF } \scan_stop: }
- }
+ \tl_put_right:Nn #2 { \tl_to_str:n {F} }
+ \exp_not:N \prg_break:
}
+ \tl_if_in:onT { #2 z } { \tl_to_str:n {F} z }
{
- \tl_replace_once:Nnn #2
- { \tl_to_str:n { T } \scan_stop: }
- { \tl_to_str:n { TF } \scan_stop: }
+ \tl_put_right:Nn #2 { z }
+ \tl_replace_once:Nnn #2 { \tl_to_str:n {F} z } { \tl_to_str:n {TF} }
+ \exp_not:N \prg_break:
}
- \tl_remove_once:Nn #2 { \scan_stop: }
+ \exp_not:N \prg_break_point:
}
\cs_new:Npn \__codedoc_base_form_aux:nnN #1#2#3
{
@@ -309,7 +296,9 @@
\bool_if:NT #3
{
\token_to_str:N :
- \str_if_eq:nnTF { #1 ~ } { \exp_args }
+ \bool_lazy_or:nnTF
+ { \str_if_eq_p:nn { #1 ~ } { \exp_args } }
+ { \str_if_eq_p:nn { #1 ~ } { \exp_last_unbraced } }
{ \exp_not:n {#2} }
{ \__codedoc_signature_base_form:n {#2} }
}
@@ -326,7 +315,7 @@
\tl_if_head_eq_charcode:nNTF {#4} :
{ #2 {#1} }
{
- \use:x
+ \use:e
{
\exp_not:n {#3}
{ \__codedoc_base_form_aux:nnN {#4} {#5} #6 }
@@ -373,7 +362,7 @@
}
\cs_new:Npn \__codedoc_gprop_name:n #1 { g__codedoc ~ \tl_to_str:n {#1} }
\cs_new:Npn \__codedoc_lseq_name:n #1 { l__codedoc ~ \tl_to_str:n {#1} }
-\msg_new:nnnn { l3doc-TUB } { no-signature-TF }
+\msg_new:nnnn { l3doc } { no-signature-TF }
{ Function/macro~'#1'~cannot~be~turned~into~a~conditional. }
{
A~function~or~macro~environment~with~option~pTF,~TF~or~noTF~
@@ -381,58 +370,56 @@
':'~hence~it~is~not~clear~where~to~add~'_p'~or~'TF'.~
Please~follow~expl3~naming~conventions.
}
-\msg_new:nnn { l3doc-TUB } { deprecated-function }
- { The~deprecated~function(s)~'#1'~should~have~been~removed~on~#2. }
-\msg_new:nnn { l3doc-TUB } { date-format }
+\msg_new:nnn { l3doc } { date-format }
{ The~date~'#1'~should~be~given~in~YYYY-MM-DD~format. }
-\msg_new:nnn { l3doc-TUB } { syntax-nested-function }
+\msg_new:nnn { l3doc } { future-date }
+ { The~added/updated~date~'#2'~of~'#1'~is~in~the~future. }
+\msg_new:nnn { l3doc } { syntax-nested-function }
{
The~'syntax'~environment~should~be~used~in~the~
innermost~'function'~environment.
}
-\msg_new:nnn { l3doc-TUB } { multiple-syntax }
+\msg_new:nnn { l3doc } { multiple-syntax }
{
The~'syntax'~environment~should~only~be~used~once~in~
a~'function'~environment.
}
-\msg_new:nnn { l3doc-TUB } { deprecated-option }
+\msg_new:nnn { l3doc } { deprecated-option }
{ The~option~'#1'~has~been~deprecated~for~'#2'. }
-\msg_new:nnn { l3doc-TUB } { foreign-internal }
+\msg_new:nnn { l3doc } { foreign-internal }
{
A~control~sequence~of~the~form~'...__#1'~was~used.~
It~should~only~be~used~in~the~module~'#2'
\tl_if_empty:nF {#3} { ,~not~in~'#3' } .
}
-\DeclareOption { a5paper } { \@latexerr { Option~not~supported } { } }
-\DeclareOption { full }
- {
- \bool_gset_true:N \g__codedoc_typeset_documentation_bool
- \bool_gset_true:N \g__codedoc_typeset_implementation_bool
- }
-\DeclareOption { onlydoc }
- {
- \bool_gset_true:N \g__codedoc_typeset_documentation_bool
- \bool_gset_false:N \g__codedoc_typeset_implementation_bool
- }
-\DeclareOption { check }
- { \bool_gset_true:N \g__codedoc_checkfunc_bool }
-\DeclareOption { nocheck }
- { \bool_gset_false:N \g__codedoc_checkfunc_bool }
-\DeclareOption { checktest }
- { \bool_gset_true:N \g__codedoc_checktest_bool }
-\DeclareOption { nochecktest }
- { \bool_gset_false:N \g__codedoc_checktest_bool }
-\DeclareOption { kernel }
- { \bool_gset_true:N \g__codedoc_kernel_bool }
-\DeclareOption { stdmodule }
- { \bool_gset_false:N \g__codedoc_kernel_bool }
-\DeclareOption { cm-default }
- { \bool_gset_false:N \g__codedoc_lmodern_bool }
-\DeclareOption { lm-default }
- { \bool_gset_true:N \g__codedoc_lmodern_bool }
-\DeclareOption* { \PassOptionsToClass { \CurrentOption } { ltugboat } }
-\ExecuteOptions { full, kernel, nocheck, nochecktest, lm-default }
-%%FMi \PassOptionsToClass { a4paper } { article }
+\DeclareKeys [ l3doc / options ]
+ {
+ a5paper .code:n = \@latexerr { Option~not~supported } { } ,
+ full .code:n =
+ {
+ \bool_gset_true:N \g__codedoc_typeset_documentation_bool
+ \bool_gset_true:N \g__codedoc_typeset_implementation_bool
+ } ,
+ onlydoc .code:n =
+ {
+ \bool_gset_true:N \g__codedoc_typeset_documentation_bool
+ \bool_gset_false:N \g__codedoc_typeset_implementation_bool
+ } ,
+ check .bool_gset:N = \g__codedoc_checkfunc_bool ,
+ checktest .bool_gset:N = \g__codedoc_checktest_bool ,
+ kernel .bool_gset:N = \g__codedoc_kernel_bool ,
+ stdmodule .bool_gset_inverse:N = \g__codedoc_kernel_bool ,
+ lm-default .bool_gset:N = \g__codedoc_lmodern_bool ,
+ cs-break .bool_gset_inverse:N = \g__codedoc_cs_break_bool ,
+ cs-break-nohyphen .code:n = \PassOptionsToPackage{nohyphen}{underscore} ,
+ show-notes .bool_gset:N = \g__codedoc_show_notes_bool,
+ hide-notes .bool_gset_inverse:N = \g__codedoc_show_notes_bool
+ }
+\DeclareUnknownKeyHandler [ l3doc / options ]
+ { \PassOptionsToClass { \CurrentOption } { ltugboad } }
+\SetKeys [ l3doc / options ]
+ { full , check = false , checktest = false , lm-default }
+%\PassOptionsToClass { a4paper } { article }
\msg_new:nnn { l3doc-TUB } { input-cfg }
{ Local~config~file~l3doc-TUB.cfg~loaded. }
\file_if_exist:nT { l3doc-TUB.cfg }
@@ -443,28 +430,11 @@
{ \msg_info:nn { l3doc-TUB } { input-cfg } }
}
}
-\ProcessOptions
+\ProcessKeyOptions [ l3doc / options ]
\LoadClass[final]{ltugboat}
\RequirePackage{doc}
-
-\newcommand\bibname{References} % otherwise \bibname is undefined at \Finale
-\TBtocsectionspace=0pt plus 1pt
-
-\IndexPrologue
- {\section*{Index}
- \markboth{Index}{Index}
- \addcontentsline{toc}{section}{Index}
- \noindent
- Underlined numbers point to the definition,
- italicized numbers denote the pages where the
- corresponding entry is described,
- all others indicate the places where it is used.}
-%\EnableCrossrefs
-%\CodelineIndex
-
\RequirePackage
{
- microtype,
array,
alphalph,
amsmath,
@@ -477,9 +447,9 @@
pifont,
textcomp,
trace,
- underscore,
csquotes,
fancyvrb,
+ underscore,
verbatim
}
\raggedbottom
@@ -492,12 +462,10 @@
\DeclareFontShape{T1}{lmtt}{m}{it}{<->ec-lmtto10}{}
\group_end:
}
-
\RequirePackage{hypdoc}
-
%%FMi:
\hypersetup{allcolors=black}
-
+
\cs_gset:Npn \MakePrivateLetters
{
\char_set_catcode_letter:N \@
@@ -514,8 +482,8 @@
\cs_gset_eq:NN \endverbatim \endVerbatim
\cs_set_protected:Npn \ifnot@excluded
{
- \exp_args:Nxx \expanded@notin
- { \c__codedoc_backslash_tl \tl_to_str:N \macro@namepart , }
+ \exp_args:Nee \expanded@notin
+ { \c_backslash_str \tl_to_str:N \macro@namepart , }
{ \exp_args:NV \tl_to_str:n \index@excludelist }
}
\cs_new:Npn \pdfstringnewline { : ~ }
@@ -532,19 +500,19 @@
{ \__codedoc_oldlist:nn {#1} { #2 \dim_zero:N \listparindent } }
\setlength \parindent { 2em }
\setlength \itemindent { 0pt }
-\setlength \parskip { 1pt plus 3pt minus 0pt }
+\setlength \parskip { 0pt plus 3pt minus 0pt }
\tl_gset:Nn \partname {File}
\@addtoreset{section}{part}
\cs_gset:Npn \l@section #1#2
{
\ifnum \c@tocdepth >\z@
\addpenalty\@secpenalty
- \addvspace{\TBtocsectionspace}%
+ \addvspace{1.0em \@plus\p@}
\setlength\@tempdima{2.5em} % was 1.5em
\begingroup
\parindent \z@ \rightskip \@pnumwidth
\parfillskip -\@pnumwidth
- \leavevmode \TBtocsectionfont
+ \leavevmode \bfseries
\advance\leftskip\@tempdima
\hskip -\leftskip
#1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
@@ -557,6 +525,7 @@
{
\MakeShortVerb \"
\MakeShortVerb \|
+%FMi
\onecolumn
\SelfDocumenting
}
@@ -575,18 +544,19 @@
\providecommand*\upTeX{up\kern-.2em\hologo{TeX}}
\providecommand*\epTeX{$\varepsilon$-\pTeX}
\providecommand*\eupTeX{$\varepsilon$-\upTeX}
+\providecommand*\ConTeXt{\hologo{ConTeXt}}
\DeclareDocumentCommand \cmd { O{} m }
{ \__codedoc_cmd:no {#1} { \token_to_str:N #2 } }
\DeclareDocumentCommand \cs { O{} m }
- { \__codedoc_cmd:no {#1} { \c__codedoc_backslash_tl #2 } }
+ { \__codedoc_cmd:no {#1} { \c_backslash_str #2 } }
\DeclareDocumentCommand \tn { O{} m }
{
\__codedoc_cmd:no
{ module = TeX , replace = false , #1 }
- { \c__codedoc_backslash_tl #2 }
+ { \c_backslash_str #2 }
}
\DeclareDocumentCommand \meta { m }
- { \__codedoc_meta:n {#1} }
+ { \texttt{ \__codedoc_meta:n {#1} } }
\DeclareExpandableDocumentCommand
{ \__codedoc_pdfstring_cmd:w } { o m } { \token_to_str:N #2 }
\DeclareExpandableDocumentCommand
@@ -595,16 +565,17 @@
{ < \tl_to_str:n {#1} > }
\pdfstringdefDisableCommands
{
- \cs_set_eq:NN \cmd \__codedoc_pdfstring_cmd:w
- \cs_set_eq:NN \cs \__codedoc_pdfstring_cs:w
- \cs_set_eq:NN \tn \__codedoc_pdfstring_cs:w
- \cs_set_eq:NN \meta \__codedoc_pdfstring_meta:w
+ \cs_set_eq:NN \cmd \__codedoc_pdfstring_cmd:w
+ \cs_set_eq:NN \cs \__codedoc_pdfstring_cs:w
+ \cs_set_eq:NN \tn \__codedoc_pdfstring_cs:w
+ \cs_set_eq:NN \meta \__codedoc_pdfstring_meta:w
+ \cs_set_eq:NN \__codedoc_meta:n \__codedoc_pdfstring_meta:w
}
\newcommand\Arg[1]
- { \texttt{\char`\{} \meta{#1} \texttt{\char`\}} }
+ { \texttt{\char`\{} \__codedoc_meta:n {#1} \texttt{\char`\}} }
\providecommand\marg[1]{ \Arg{#1} }
-\providecommand\oarg[1]{ \texttt[ \meta{#1} \texttt] }
-\providecommand\parg[1]{ \texttt( \meta{#1} \texttt) }
+\providecommand\oarg[1]{ \texttt[ \__codedoc_meta:n {#1} \texttt] }
+\providecommand\parg[1]{ \texttt( \__codedoc_meta:n {#1} \texttt) }
\DeclareRobustCommand \file {\nolinkurl}
\DeclareRobustCommand \env {\texttt}
\DeclareRobustCommand \pkg {\textsf}
@@ -679,28 +650,31 @@
\NewDocumentCommand { \CodedocExplainEXP } { }
{
\raisebox{\baselineskip}[0pt][0pt]{\hypertarget{expstar}{}}%
+ \write \@auxout { \def \string \Codedoc@expstar { } }
\__codedoc_typeset_exp:\ indicates~fully~expandable~functions,~which~
- can~be~used~within~an~\texttt{x}-type~argument~(in~plain~
- \TeX{}~terms,~inside~an~\cs{edef}),~as~well~as~within~an~
- \texttt{f}-type~argument.
+ can~be~used~within~an~\texttt{e}-type~argument~(inside~an~\tn{expanded}),~
+ \texttt{x}-type~argument~(in~plain~\TeX{}~terms,~inside~an~\tn{edef}),~
+ as~well~as~within~an~\texttt{f}-type~argument.
}
\NewDocumentCommand { \CodedocExplainREXP } { }
{
\raisebox{\baselineskip}[0pt][0pt]{\hypertarget{rexpstar}{}}%
+ \write \@auxout { \def \string \Codedoc@rexpstar { } }
\__codedoc_typeset_rexp:\ indicates~
restricted~expandable~functions,~which~can~be~used~within~an~
- \texttt{x}-type~argument~but~cannot~be~fully~expanded~within~an~
- \texttt{f}-type~argument.
+ \texttt{x}-type~argument~or~an~\texttt{e}-type~argument,~
+ but~cannot~be~fully~expanded~within~an~\texttt{f}-type~argument.
}
\NewDocumentCommand { \CodedocExplainTF } { }
{
\raisebox{\baselineskip}[0pt][0pt]{\hypertarget{explTF}{}}%
+ \write \@auxout { \def \string \Codedoc@explTF { } }
\__codedoc_typeset_TF:\ indicates~conditional~(\texttt{if})~functions~
whose~variants~with~\texttt{T},~\texttt{F}~and~\texttt{TF}~
argument~specifiers~expect~different~
\enquote{true}/\enquote{false}~branches.
}
-\keys_define:nn { l3doc-TUB/cmd }
+\keys_define:nn { l3doc/cmd }
{
index .tl_set:N = \l__codedoc_cmd_index_tl ,
module .tl_set:N = \l__codedoc_cmd_module_tl ,
@@ -713,48 +687,56 @@
\bool_set_true:N \l__codedoc_cmd_replace_bool
\tl_set:Nn \l__codedoc_cmd_index_tl { \q_no_value }
\tl_set:Nn \l__codedoc_cmd_module_tl { \q_no_value }
- \keys_set:nn { l3doc-TUB/cmd } {#1}
+ \keys_set:nn { l3doc/cmd } {#1}
\tl_set:Nn \l__codedoc_cmd_tl {#2}
\bool_if:NT \l__codedoc_cmd_replace_bool
{
\tl_set_rescan:Nnn \l__codedoc_tmpb_tl { } { _ }
- \tl_replace_all:Non \l__codedoc_cmd_tl \l__codedoc_tmpb_tl { _ }
+ \tl_replace_all:NVn \l__codedoc_cmd_tl \l__codedoc_tmpb_tl { _ }
\__codedoc_replace_at_at:N \l__codedoc_cmd_tl
- \tl_replace_all:Nno \l__codedoc_cmd_tl { _ } \l__codedoc_tmpb_tl
+ \tl_replace_all:NnV \l__codedoc_cmd_tl { _ } \l__codedoc_tmpb_tl
}
\mode_if_math:T { \mbox }
- {
- \verbatim@font
- \__codedoc_if_almost_str:VT \l__codedoc_cmd_tl
- {
- \tl_set:Nx \l__codedoc_cmd_tl { \tl_to_str:N \l__codedoc_cmd_tl }
- \tl_replace_all:Non \l__codedoc_cmd_tl
- { \token_to_str:N _ } { \_ }
- }
- \tl_replace_all:Nnn \l__codedoc_cmd_tl { ~ } { \@xobeysp }
- \l__codedoc_cmd_tl
- \@
- }
- \bool_if:NF \l__codedoc_cmd_noindex_bool
{
- \quark_if_no_value:NF \l__codedoc_cmd_index_tl
+ \bool_if:NT \l__codedoc_allow_indexing_bool { \__codedoc_target: }
+ \verbatim@font
+ \__codedoc_if_almost_str:VT \l__codedoc_cmd_tl
{
- \tl_set:Nx \l__codedoc_cmd_tl
- { \c_backslash_str \exp_not:o { \l__codedoc_cmd_index_tl } }
+ \__kernel_tl_set:Nx \l__codedoc_cmd_tl { \tl_to_str:N \l__codedoc_cmd_tl }
+ \bool_if:NT \g__codedoc_cs_break_bool
+ {
+ \regex_replace_all:nnN
+ { ([^\\\_]\_*) \_ ([^\_]) }
+ { \1 \c{BreakableUnderscore} \2 }
+ \l__codedoc_cmd_tl
+ }
}
-
- \exp_args:No \__codedoc_key_get:n { \l__codedoc_cmd_tl }
- \quark_if_no_value:NF \l__codedoc_cmd_module_tl
+ \tl_replace_all:Nnn \l__codedoc_cmd_tl { ~ } { \@xobeysp }
+ \l__codedoc_cmd_tl
+ \@
+ }
+ \bool_if:NT \l__codedoc_allow_indexing_bool
+ {
+ \bool_if:NF \l__codedoc_cmd_noindex_bool
{
- \tl_set:Nx \l__codedoc_index_module_tl
- { \tl_to_str:N \l__codedoc_cmd_module_tl }
+ \quark_if_no_value:NF \l__codedoc_cmd_index_tl
+ {
+ \__kernel_tl_set:Nx \l__codedoc_cmd_tl
+ { \c_backslash_str \exp_not:o { \l__codedoc_cmd_index_tl } }
+ }
+ \exp_args:No \__codedoc_key_get:n { \l__codedoc_cmd_tl }
+ \quark_if_no_value:NF \l__codedoc_cmd_module_tl
+ {
+ \__kernel_tl_set:Nx \l__codedoc_index_module_tl
+ { \tl_to_str:N \l__codedoc_cmd_module_tl }
+ }
+ \__codedoc_special_index_module:ooonN
+ { \l__codedoc_index_key_tl }
+ { \l__codedoc_index_macro_tl }
+ { \l__codedoc_index_module_tl }
+ { usage }
+ \l__codedoc_index_internal_bool
}
- \__codedoc_special_index_module:ooonN
- { \l__codedoc_index_key_tl }
- { \l__codedoc_index_macro_tl }
- { \l__codedoc_index_module_tl }
- { usage }
- \l__codedoc_index_internal_bool
}
}
\cs_generate_variant:Nn \__codedoc_cmd:nn { no }
@@ -766,7 +748,7 @@
{
\tl_set_rescan:Nnn \l__codedoc_tmpb_tl
{ \char_set_catcode:nn { `_ } {##1} } { _ }
- \tl_replace_all:Non \l__codedoc_tmpa_tl \l__codedoc_tmpb_tl
+ \tl_replace_all:NVn \l__codedoc_tmpa_tl \l__codedoc_tmpb_tl
{ \__codedoc_ensuremath_sb:n }
}
\exp_args:NV \__codedoc_meta_original:n \l__codedoc_tmpa_tl
@@ -789,18 +771,28 @@
\ensuremath \rangle
}
\cs_new_protected:Npn \__codedoc_typeset_exp:
- { \hyperlink{expstar} {$\star$} }
+ {
+ \cs_if_exist:NTF \Codedoc@expstar
+ { \hyperlink { expstar } }
+ { \mbox }
+ {$\star$}
+ }
\cs_new_protected:Npn \__codedoc_typeset_rexp:
- { \hyperlink{rexpstar} {\ding{73}} } % hollow star
+ {
+ \cs_if_exist:NTF \Codedoc@rexpstar
+ { \hyperlink { rexpstar } }
+ { \mbox }
+ { \ding { 73 } } % hollow star
+ }
\cs_new_protected:Npn \__codedoc_typeset_TF:
{
- \hyperlink{explTF}
+ \cs_if_exist:NTF \Codedoc@explTF
+ { \hyperlink { explTF } }
+ { \mbox }
{
- \color{black}
\itshape TF
\makebox[0pt][r]
{
- \color{red}
\underline { \phantom{\itshape TF} \kern-0.1em }
}
}
@@ -811,28 +803,31 @@
}
\cs_new_protected:Npn \__codedoc_get_hyper_target:nN #1#2
{
- \tl_set:Nx #2 { \tl_to_str:n {#1} }
- \tl_replace_all:Nxn #2 { \iow_char:N \_ } { / }
- \tl_remove_all:Nx #2 { \iow_char:N \\ }
+ \__kernel_tl_set:Nx #2 { \tl_to_str:n {#1} }
+ \tl_replace_all:NVn #2 \c_underscore_str { / }
+ \tl_remove_all:NV #2 \c_backslash_str
\tl_put_left:Nn #2 { doc/function// }
}
-\cs_generate_variant:Nn \__codedoc_get_hyper_target:nN { o , x }
+\cs_generate_variant:Nn \__codedoc_get_hyper_target:nN { o , e }
\cs_new_protected:Npn \__codedoc_names_get_seq:nN #1#2
{
- \tl_set:Nx \l__codedoc_tmpa_tl { \tl_to_str:n {#1} }
+ \__kernel_tl_set:Nx \l__codedoc_tmpa_tl { \tl_to_str:n {#1} }
\bool_if:NTF \l__codedoc_names_verb_bool
{
\seq_clear:N #2
\seq_put_right:NV #2 \l__codedoc_tmpa_tl
}
{
- \tl_remove_all:Nx \l__codedoc_tmpa_tl
- { \iow_char:N \^^M \iow_char:N \% }
- \tl_remove_all:Nx \l__codedoc_tmpa_tl { \tl_to_str:n { ^ ^ A } }
- \tl_remove_all:Nx \l__codedoc_tmpa_tl { \iow_char:N \^^I }
- \tl_remove_all:Nx \l__codedoc_tmpa_tl { \iow_char:N \^^M }
+ \tl_remove_all:Ne \l__codedoc_tmpa_tl
+ { \iow_char:N \^^M \c_percent_str }
+ \tl_remove_all:Ne \l__codedoc_tmpa_tl
+ { \token_to_str:N \obeyedline \c_space_tl \c_percent_str }
+ \tl_remove_all:Ne \l__codedoc_tmpa_tl { \tl_to_str:n { ^ ^ A } }
+ \tl_remove_all:Ne \l__codedoc_tmpa_tl { \iow_char:N \^^I }
+ \tl_remove_all:Ne \l__codedoc_tmpa_tl { \iow_char:N \^^M }
+ \__codedoc_detect_internals:N \l__codedoc_tmpa_tl
\__codedoc_replace_at_at:N \l__codedoc_tmpa_tl
- \exp_args:NNx \seq_set_from_clist:Nn #2
+ \exp_args:NNe \seq_set_from_clist:Nn #2
{ \tl_to_str:N \l__codedoc_tmpa_tl }
}
}
@@ -856,14 +851,14 @@
\tl_if_head_eq_charcode:nNTF {#2} :
{ \__codedoc_names_parse_aux:nnn {#4} {#4} { \scan_stop: } }
{
- \exp_args:Nx \__codedoc_names_parse_aux:nnn
+ \exp_args:Ne \__codedoc_names_parse_aux:nnn
{ \__codedoc_base_form_aux:nnN {#1} {#2} #3 }
{#1} {#2}
}
}
{
\bool_if:NT \l__codedoc_macro_TF_bool
- { \msg_error:nnx { l3doc-TUB } { no-signature-TF } {#4} }
+ { \msg_error:nne { l3doc } { no-signature-TF } {#4} }
\__codedoc_names_parse_aux:nnn {#4} {#4} { \scan_stop: }
}
}
@@ -888,18 +883,18 @@
{
\seq_pop:NN #1 \l__codedoc_tmpa_tl
\tl_gset_eq:NN \g__codedoc_base_name_tl \l__codedoc_tmpa_tl
- \tl_greplace_all:Nno \g__codedoc_base_name_tl
- { ~ } { \c_catcode_other_space_tl }
+ \tl_greplace_all:NnV \g__codedoc_base_name_tl
+ { ~ } \c_catcode_other_space_tl
\seq_get:NN #1 \l__codedoc_tmpa_tl
- \str_if_eq:eeTF { \l__codedoc_tmpa_tl } { \scan_stop: }
+ \str_if_eq:VnTF \l__codedoc_tmpa_tl { \scan_stop: }
{
\seq_gclear:N \g__codedoc_variants_seq
- \__codedoc_names_typeset_auxii:x { \g__codedoc_base_name_tl }
+ \__codedoc_names_typeset_auxii:e { \g__codedoc_base_name_tl }
}
{
\seq_gset_eq:NN \g__codedoc_variants_seq #1
\seq_gpop:NN \g__codedoc_variants_seq \l__codedoc_tmpb_tl
- \__codedoc_names_typeset_auxii:x
+ \__codedoc_names_typeset_auxii:e
{ \g__codedoc_base_name_tl : \l__codedoc_tmpb_tl }
}
}
@@ -907,7 +902,7 @@
{
\bool_if:NT \l__codedoc_macro_pTF_bool
{
- \__codedoc_names_typeset_block:xN
+ \__codedoc_names_typeset_block:eN
{ \__codedoc_predicate_from_base:n {#1} }
\c_false_bool
}
@@ -915,23 +910,20 @@
{ \__codedoc_names_typeset_block:nN {#1} \c_false_bool }
\__codedoc_names_typeset_block:nN {#1} \l__codedoc_macro_TF_bool
}
-\cs_generate_variant:Nn \__codedoc_names_typeset_auxii:n { x }
+\cs_generate_variant:Nn \__codedoc_names_typeset_auxii:n { e }
\cs_new_protected:Npn \__codedoc_names_typeset_block:nN
{
\int_compare:nNnTF \l__codedoc_nested_macro_int = 0
{ \__codedoc_typeset_function_block:nN }
{ \__codedoc_macro_typeset_block:nN }
}
-\cs_generate_variant:Nn \__codedoc_names_typeset_block:nN { x }
+\cs_generate_variant:Nn \__codedoc_names_typeset_block:nN { e }
\prg_new_conditional:Npnn \__codedoc_if_macro_internal:n #1 { p , T , F , TF }
{
- \bool_if:NTF \l__codedoc_macro_internal_set_bool
- {
- \bool_if:NTF \l__codedoc_macro_internal_bool
- { \prg_return_true: } { \prg_return_false: }
- }
+ \bool_if:NTF \l__codedoc_macro_internal_bool
+ { \prg_return_true: }
{
- \tl_if_empty:fTF
+ \tl_if_empty:eTF
{
\exp_after:wN \__codedoc_if_macro_internal_aux:w
\tl_to_str:n { #1 ~ __ }
@@ -949,18 +941,18 @@
\seq_set_eq:NN \l__codedoc_tmpa_seq ##1
\seq_pop:NN \l__codedoc_tmpa_seq \l__codedoc_tmpa_tl
\seq_get:NN \l__codedoc_tmpa_seq \l__codedoc_tmpb_tl
- \exp_args:NNx
+ \exp_args:NNe
\group_end:
#1
{
\l__codedoc_tmpa_tl
- \str_if_eq:eeF { \l__codedoc_tmpb_tl } { \scan_stop: }
+ \str_if_eq:VnF \l__codedoc_tmpb_tl { \scan_stop: }
{ : \l__codedoc_tmpb_tl }
\bool_if:NT \l__codedoc_macro_TF_bool { TF }
}
}
}
-\keys_define:nn { l3doc-TUB/function }
+\keys_define:nn { l3doc/function }
{
TF .value_forbidden:n = true ,
TF .code:n =
@@ -993,9 +985,10 @@
\bool_set_true:N \l__codedoc_macro_noTF_bool
\bool_set_true:N \l__codedoc_macro_TF_bool
} ,
- added .code:n = { \__codedoc_date_set:Nn \l__codedoc_date_added_tl {#1} },
- updated .code:n = { \__codedoc_date_set:Nn \l__codedoc_date_updated_tl {#1} } ,
- deprecated .code:n = { \__codedoc_deprecated_on:n {#1} } ,
+ added .code:n = { \__codedoc_date_set_past:Nn \l__codedoc_date_added_tl {#1} },
+ updated .code:n = { \__codedoc_date_set_past:Nn \l__codedoc_date_updated_tl {#1} } ,
+ deprecated .bool_set:N = \l__codedoc_macro_deprecated_bool ,
+ no-user-doc .bool_set:N = \l__codedoc_macro_nodoc_bool ,
tested .code:n = { } ,
label .code:n =
{
@@ -1012,29 +1005,27 @@
\regex_replace_once:nnNF
{ \A(\d\d\d\d)[-/](\d\d?)[-/](\d\d?)\Z } { \1-\2-\3 } #1
{
- \msg_error:nnn { l3doc-TUB } { date-format } {#2}
+ \msg_error:nnn { l3doc } { date-format } {#2}
\tl_set:Nn #1 { 1970-01-01 }
}
}
-\cs_new_protected:Npn \__codedoc_deprecated_on:n #1
+\cs_new_protected:Npn \__codedoc_date_set_past:Nn #1#2
{
- \__codedoc_date_set:Nn \l__codedoc_tmpa_tl {#1}
+ \__codedoc_date_set:Nn #1 {#2}
\exp_args:No \__codedoc_date_compare:nNnT
- { \l__codedoc_tmpa_tl } < { \tex_year:D - \tex_month:D - \tex_day:D }
+ {#1} > { \c_sys_year_int - \c_sys_month_int - \c_sys_day_int }
{
- \msg_error:nnxx { l3doc-TUB } { deprecated-function }
+ \msg_error:nnee { l3doc } { future-date }
{ \tl_to_str:N \l__codedoc_macro_argument_tl }
- { \l__codedoc_tmpa_tl }
+ {#1}
}
- \bool_set_true:N \l__codedoc_macro_internal_bool
- \bool_set_true:N \l__codedoc_macro_internal_set_bool
}
\cs_new_protected:Npn \__codedoc_function:nnw #1#2
{
\__codedoc_function_typeset_start:
\__codedoc_function_init:
\tl_set:Nn \l__codedoc_macro_argument_tl {#2}
- \keys_set:nn { l3doc-TUB/function } {#1}
+ \keys_set:nn { l3doc/function } {#1}
\__codedoc_names_get_seq:nN {#2} \l__codedoc_names_seq
\__codedoc_names_parse:
\__codedoc_function_typeset:
@@ -1054,12 +1045,13 @@
\cs_new_protected:Npn \__codedoc_function_typeset_stop:
{
\par
+ \dim_set:Nn \prevdepth { \box_dp:N \l__codedoc_descr_coffin }
\allowbreak
}
\cs_new_protected:Npn \__codedoc_function_init:
{
\box_if_empty:NF \g__codedoc_syntax_box
- { \msg_error:nn { l3doc-TUB } { syntax-nested-function } }
+ { \msg_error:nn { l3doc } { syntax-nested-function } }
\coffin_clear:N \l__codedoc_descr_coffin
\box_gclear:N \g__codedoc_syntax_box
\coffin_clear:N \l__codedoc_syntax_coffin
@@ -1143,8 +1135,7 @@
\cs_new_protected:Npn \__codedoc_typeset_functions:
{
\small\ttfamily
- \HD@savedestfalse
- \HD@target
+ \__codedoc_target:
\Hy@MakeCurrentHref { HD. \int_use:N \c@HD@hypercount }
\begin{tabular} [t] { @{} l @{} >{\hspace{\tabcolsep}} r @{} }
\toprule
@@ -1157,9 +1148,9 @@
}
\cs_new_protected:Npn \__codedoc_typeset_function_block:nN #1#2
{
- \__codedoc_function_index:x
+ \__codedoc_function_index:e
{ #1 \bool_if:NT #2 { \tl_to_str:n {TF} } }
- \__codedoc_function_label:xN {#1} #2
+ \__codedoc_function_label:eN {#1} #2
#1
\bool_if:NT #2 { \__codedoc_typeset_TF: }
\__codedoc_typeset_expandability:
@@ -1167,13 +1158,13 @@
{ \__codedoc_typeset_variant_list:nN {#1} #2 }
\\
}
-\cs_generate_variant:Nn \__codedoc_typeset_function_block:nN { x }
+\cs_generate_variant:Nn \__codedoc_typeset_function_block:nN { e }
\cs_new_protected:Npn \__codedoc_function_index:n #1
{
\seq_gput_right:Nn \g_doc_functions_seq {#1}
\__codedoc_special_index:nn {#1} { usage }
}
-\cs_generate_variant:Nn \__codedoc_function_index:n { x }
+\cs_generate_variant:Nn \__codedoc_function_index:n { e }
\cs_new_protected:Npn \__codedoc_typeset_expandability:
{
&
@@ -1186,13 +1177,30 @@
\__codedoc_typeset_aux:n { \__codedoc_get_function_name:n {#1} }
:
\int_compare:nTF { \seq_count:N \g__codedoc_variants_seq == 1 }
- { \seq_use:Nn \g__codedoc_variants_seq { } }
{
+ \seq_use:Nn \g__codedoc_variants_seq { }
+ \bool_if:NT #2 { \__codedoc_typeset_TF: }
+ }
+ {
+ \hbox_set:Nn \l_tmpa_box
+ { \seq_use:Nn \g__codedoc_variants_seq { \textrm| \nolinebreak[2] } }
\textrm(
- \seq_use:Nn \g__codedoc_variants_seq { \textrm| }
- \textrm)
+ \dim_compare:nNnTF { \box_wd:N \l_tmpa_box } > { .4\columnwidth }
+ {
+ \parbox[t]{.4\columnwidth}
+ {
+ \raggedright
+ \hbox_unpack_drop:N \l_tmpa_box
+ \textrm)
+ \bool_if:NT #2 { \__codedoc_typeset_TF: }
+ }
+ }
+ {
+ \hbox_unpack_drop:N \l_tmpa_box
+ \textrm)
+ \bool_if:NT #2 { \__codedoc_typeset_TF: }
+ }
}
- \bool_if:NT #2 { \__codedoc_typeset_TF: }
\__codedoc_typeset_expandability:
}
\cs_new_protected:Npn \__codedoc_function_extra_labels:
@@ -1211,7 +1219,7 @@
{
\bool_if:NF \l__codedoc_no_label_bool
{
- \__codedoc_get_hyper_target:xN
+ \__codedoc_get_hyper_target:eN
{
\exp_not:n {#1}
\bool_if:NT #2 { \tl_to_str:n {TF} }
@@ -1220,7 +1228,7 @@
\exp_args:No \label { \l__codedoc_tmpa_tl }
}
}
-\cs_generate_variant:Nn \__codedoc_function_label:nN { x }
+\cs_generate_variant:Nn \__codedoc_function_label:nN { e }
\cs_new:Npn \__codedoc_typeset_dates:
{
\bool_lazy_and:nnF
@@ -1243,7 +1251,7 @@
\cs_new_protected:Npn \__codedoc_syntax:w
{
\box_if_empty:NF \g__codedoc_syntax_box
- { \msg_error:nn { l3doc-TUB } { multiple-syntax } }
+ { \msg_error:nn { l3doc } { multiple-syntax } }
\dim_set:Nn \l__codedoc_syntax_dim
{
\textwidth
@@ -1274,26 +1282,22 @@
\end{quote}
}
}
-\keys_define:nn { l3doc-TUB/macro }
+\keys_define:nn { l3doc/macro }
{
aux .value_forbidden:n = true ,
aux .code:n =
{
- \msg_warning:nnnn { l3doc-TUB } { deprecated-option }
+ \msg_warning:nnnn { l3doc } { deprecated-option }
{ aux } { function/macro }
} ,
+ deprecated .bool_set:N = \l__codedoc_macro_deprecated_bool ,
internal .value_forbidden:n = true ,
internal .code:n =
- {
- \bool_set_true:N \l__codedoc_macro_internal_bool
- \bool_set_true:N \l__codedoc_macro_internal_set_bool
- } ,
+ { \bool_set_true:N \l__codedoc_macro_internal_bool } ,
int .value_forbidden:n = true ,
int .code:n =
- {
- \bool_set_true:N \l__codedoc_macro_internal_bool
- \bool_set_true:N \l__codedoc_macro_internal_set_bool
- } ,
+ { \bool_set_true:N \l__codedoc_macro_internal_bool } ,
+ no-user-doc .bool_set:N = \l__codedoc_macro_nodoc_bool ,
var .value_forbidden:n = true ,
var .code:n =
{ \bool_set_true:N \l__codedoc_macro_var_bool } ,
@@ -1332,18 +1336,21 @@
} ,
added .code:n = {} , % TODO
updated .code:n = {} , % TODO
- deprecated .code:n = { \__codedoc_deprecated_on:n {#1} } ,
verb .bool_set:N = \l__codedoc_names_verb_bool ,
module .tl_set:N = \l__codedoc_override_module_tl ,
documented-as .tl_set:N = \l__codedoc_macro_documented_tl ,
+ do-not-index .value_required:n = true ,
+ do-not-index .tl_set:N = \l__codedoc_macro_do_not_index_tl ,
+ % do-not-index .default:n = \q_no_value ,
}
\cs_new_protected:Npn \__codedoc_macro:nnw #1#2
{
\__codedoc_macro_init:
\tl_set:Nn \l__codedoc_macro_argument_tl {#2}
- \keys_set:nn { l3doc-TUB/macro } {#1}
+ \keys_set:nn { l3doc/macro } {#1}
\__codedoc_names_get_seq:nN {#2} \l__codedoc_names_seq
\__codedoc_names_parse:
+ \__codedoc_macro_exclude_index:
\__codedoc_macro_save_names:
\__codedoc_names_typeset:
\__codedoc_macro_dump:
@@ -1352,8 +1359,8 @@
\cs_new_protected:Npn \__codedoc_macro_init:
{
\int_incr:N \l__codedoc_nested_macro_int
+ \bool_set_false:N \l__codedoc_macro_deprecated_bool
\bool_set_false:N \l__codedoc_macro_internal_bool
- \bool_set_false:N \l__codedoc_macro_internal_set_bool
\bool_set_false:N \l__codedoc_macro_TF_bool
\bool_set_false:N \l__codedoc_macro_pTF_bool
\bool_set_false:N \l__codedoc_macro_noTF_bool
@@ -1371,8 +1378,7 @@
\hbox:n
{
\strut
- \int_compare:nNnT \l__codedoc_macro_int = 0
- { \HD@target }
+ \int_compare:nNnT \l__codedoc_macro_int = 0 { \__codedoc_target: }
}
\vskip \int_eval:n { \l__codedoc_macro_int - 1 } \baselineskip
}
@@ -1386,12 +1392,31 @@
\tl_if_empty:NTF \l__codedoc_macro_documented_tl
{ \__codedoc_names_block_base_map:N \__codedoc_macro_save_names_aux:n }
{
- \seq_gput_right:Nf \g__codedoc_nested_names_seq
- { \exp_after:wN \token_to_str:N \l__codedoc_macro_documented_tl }
+ \seq_gput_right:Ne \g__codedoc_nested_names_seq
+ {
+ \exp_after:wN \__codedoc_macro_save_names_aux:w
+ \l__codedoc_macro_documented_tl \q__codedoc_stop
+ }
}
}
+\cs_new:Npn \__codedoc_macro_save_names_aux:w #1#2 \q__codedoc_stop
+ { \token_to_str:N #1 \tl_to_str:n {#2} }
\cs_new_protected:Npn \__codedoc_macro_save_names_aux:n #1
{ \seq_gput_right:Nn \g__codedoc_nested_names_seq {#1} }
+\cs_new_protected:Npn \__codedoc_macro_exclude_index:
+ {
+ \tl_if_empty:NF \l__codedoc_macro_do_not_index_tl
+ {
+ \tl_set_rescan:NnV \l__codedoc_macro_do_not_index_tl
+ { \MakePrivateLetters \catcode`\\12 }
+ \l__codedoc_macro_do_not_index_tl
+ \exp_args:NNV \seq_set_from_clist:Nn
+ \l__codedoc_tmpa_seq \l__codedoc_macro_do_not_index_tl
+ \__kernel_tl_set:Nx \l__codedoc_macro_do_not_index_tl
+ { \seq_use:Nn \l__codedoc_tmpa_seq { , } }
+ \exp_args:NV \DoNotIndex \l__codedoc_macro_do_not_index_tl
+ }
+ }
\cs_new_protected:Npn \__codedoc_macro_dump:
{
\topsep\MacroTopsep
@@ -1415,23 +1440,22 @@
\__codedoc_macro_single:nNN {#1} \c_true_bool #2
\seq_if_empty:NF \g__codedoc_variants_seq
{
- \__codedoc_macro_typeset_variant_list:xN
+ \__codedoc_macro_typeset_variant_list:eN
{ \__codedoc_get_function_name:n {#1} } #2
}
}
-\cs_generate_variant:Nn \__codedoc_macro_typeset_block:nN { x }
\cs_new_protected:Npn \__codedoc_macro_typeset_variant_list:nN #1#2
{
\seq_map_inline:Nn \g__codedoc_variants_seq
{ \__codedoc_macro_single:nNN { #1 : ##1 } \c_false_bool #2 }
}
-\cs_generate_variant:Nn \__codedoc_macro_typeset_variant_list:nN { x }
+\cs_generate_variant:Nn \__codedoc_macro_typeset_variant_list:nN { e }
\cs_new_protected:Npn \__codedoc_macro_single:nNN #1#2#3
{
\tl_set:Nn \saved@macroname {#1}
\__codedoc_macro_typeset_one:nN {#1} #3
\bool_if:NT #3 { \DoNotIndex {#1} }
- \exp_args:Nx \__codedoc_macro_index:nN
+ \exp_args:Ne \__codedoc_macro_index:nN
{ #1 \bool_if:NT #3 { \tl_to_str:n { TF } } }
#2
}
@@ -1440,7 +1464,12 @@
\DoNotIndex {#1}
\bool_if:NT #2
{
- \__codedoc_if_macro_internal:nF {#1}
+ \bool_lazy_any:nF
+ {
+ { \__codedoc_if_macro_internal_p:n {#1} }
+ { \l__codedoc_macro_deprecated_bool }
+ { \l__codedoc_macro_nodoc_bool }
+ }
{ \seq_gput_right:Nn \g_doc_macros_seq {#1} }
\hbox_set:Nw \l__codedoc_macro_index_box
\hbox_unpack_drop:N \l__codedoc_macro_index_box
@@ -1456,14 +1485,16 @@
\vbox_set:Nn \l__codedoc_macro_box
{
\vbox_unpack_drop:N \l__codedoc_macro_box
- \hbox { \llap { \__codedoc_print_macroname:nN {#1} #2 \ } }
+ \hbox { \llap { \__codedoc_print_macroname:nN {#1} #2
+ \MacroFont \
+ } }
}
\int_incr:N \l__codedoc_macro_int
}
\cs_new_protected:Npn \__codedoc_print_macroname:nN #1#2
{
\strut
- \__codedoc_get_hyper_target:xN
+ \__codedoc_get_hyper_target:eN
{
\exp_not:n {#1}
\bool_if:NT #2 { \tl_to_str:n {TF} }
@@ -1476,20 +1507,18 @@
\int_compare:nTF { \str_count:n {#1} <= 28 }
{ \MacroFont } { \MacroLongFont }
\tl_set:Nn \l__codedoc_tmpa_tl {#1}
- \tl_replace_all:Nno \l__codedoc_tmpa_tl
- { ~ } { \c_catcode_other_space_tl }
- \__codedoc_macroname_prefix:o \l__codedoc_tmpa_tl
- \__codedoc_macroname_suffix:N #2
+ \tl_replace_all:NnV \l__codedoc_tmpa_tl
+ { ~ } \c_catcode_other_space_tl
+ \__codedoc_print_macroname_aux:on
+ \l__codedoc_tmpa_tl { \bool_if:NT #2 { \__codedoc_typeset_TF: } }
}
}
-\cs_new_protected:Npn \__codedoc_macroname_prefix:n #1
+\cs_new_protected:Npn \__codedoc_print_macroname_aux:nn #1#2
{
\__codedoc_if_macro_internal:nTF {#1}
- { \__codedoc_typeset_aux:n {#1} } {#1}
+ { \__codedoc_typeset_aux:n { #1 #2 } } { #1 #2 }
}
-\cs_generate_variant:Nn \__codedoc_macroname_prefix:n { o }
-\cs_new_protected:Npn \__codedoc_macroname_suffix:N #1
- { \bool_if:NTF #1 { \__codedoc_typeset_TF: } { } }
+\cs_generate_variant:Nn \__codedoc_print_macroname_aux:nn { o }
\providecommand \MacroLongFont
{
\fontfamily{lmtt}\fontseries{lc}\small
@@ -1533,10 +1562,10 @@
{ \__codedoc_test_missing:n {#1} }
\cs_new_protected:Npn \__codedoc_test_missing:n #1
{
- \__codedoc_test_missing_aux:Nxn
+ \__codedoc_test_missing_aux:Nen
\g__codedoc_missing_tests_prop
{ \seq_use:Nn \l__codedoc_names_seq { , } }
- { { \g_file_curr_name_str \iow_char:N \ (#1) } }
+ { { \g_file_curr_name_str \c_space_tl (#1) } }
}
\cs_new_protected:Npn \__codedoc_test_missing_aux:Nnn #1#2#3
{
@@ -1545,7 +1574,7 @@
{ \tl_set:Nn \l__codedoc_tmpa_tl {#3} }
\prop_put:Nno #1 {#2} \l__codedoc_tmpa_tl
}
-\cs_generate_variant:Nn \__codedoc_test_missing_aux:Nnn { Nx }
+\cs_generate_variant:Nn \__codedoc_test_missing_aux:Nnn { Ne }
\cs_new_protected:Npn \__codedoc_macro_end:
{
\endtrivlist
@@ -1556,21 +1585,21 @@
\cs_new_protected:Npn \__codedoc_macro_end_check_tested:
{
\bool_lazy_all:nT
- {
- { \g__codedoc_checktest_bool }
- { ! \l__codedoc_macro_var_bool }
- { ! \l__codedoc_macro_tested_bool }
- }
- {
- \seq_set_filter:NNn \l__codedoc_tmpa_seq \l__codedoc_names_seq
- { ! \__codedoc_if_macro_internal_p:n {##1} }
- \seq_gput_right:Nx \g__codedoc_not_tested_seq
- {
- \seq_use:Nn \l__codedoc_tmpa_seq { , }
- \bool_if:NTF \l__codedoc_macro_pTF_bool {~(pTF)}
- { \bool_if:NT \l__codedoc_macro_TF_bool {~(TF)} }
- }
- }
+ {
+ { \g__codedoc_checktest_bool }
+ { ! \l__codedoc_macro_var_bool }
+ { ! \l__codedoc_macro_tested_bool }
+ }
+ {
+ \seq_set_filter:NNn \l__codedoc_tmpa_seq \l__codedoc_names_seq
+ { ! \__codedoc_if_macro_internal_p:n {##1} }
+ \seq_gput_right:Ne \g__codedoc_not_tested_seq
+ {
+ \seq_use:Nn \l__codedoc_tmpa_seq { , }
+ \bool_if:NTF \l__codedoc_macro_pTF_bool {~(pTF)}
+ { \bool_if:NT \l__codedoc_macro_TF_bool {~(TF)} }
+ }
+ }
}
\cs_new_protected:Npn \__codedoc_macro_end_style:n #1
{
@@ -1580,16 +1609,16 @@
\cs_new_protected:Npn \__codedoc_macro_end_wrap_item:n #1
{
\tl_set:Nn \l__codedoc_tmpa_tl {#1}
- \tl_replace_all:Non \l__codedoc_tmpa_tl
- { \token_to_str:N _ } { \_ }
+ \tl_replace_all:NVn \l__codedoc_tmpa_tl
+ \c_underscore_str { \_ }
\texttt { \l__codedoc_tmpa_tl }
}
\cs_new_protected:Npn \__codedoc_print_end_definition:
{
\seq_set_map:NNn \l__codedoc_tmpa_seq
\g__codedoc_nested_names_seq
- { \exp_not:n { \__codedoc_macro_end_wrap_item:n {##1} } }
- End~ definition~ for~
+ { \__codedoc_macro_end_wrap_item:n {##1} }
+ End~ of~ definition~ for~
\int_compare:nTF { \seq_count:N \l__codedoc_tmpa_seq <= 3 }
{
\seq_use:Nnnn \l__codedoc_tmpa_seq
@@ -1603,7 +1632,14 @@
{
\seq_gset_filter:NNn \g__codedoc_nested_names_seq
\g__codedoc_nested_names_seq
- { ! \__codedoc_if_macro_internal_p:n {##1} }
+ {
+ ! \bool_lazy_any_p:n
+ {
+ { \__codedoc_if_macro_internal_p:n {##1} }
+ { \l__codedoc_macro_deprecated_bool }
+ { \l__codedoc_macro_nodoc_bool }
+ }
+ }
\seq_if_empty:NF \g__codedoc_nested_names_seq
{
\int_set:Nn \l__codedoc_tmpa_int
@@ -1612,55 +1648,14 @@
\bool_if:NTF \l__codedoc_macro_var_bool {variable} {function}
\int_compare:nNnTF \l__codedoc_tmpa_int = 1 {~is~} {s~are~}
documented~on~page~
- \__codedoc_get_hyper_target:xN
+ \__codedoc_get_hyper_target:eN
{ \seq_item:Nn \g__codedoc_nested_names_seq { 1 } }
\l__codedoc_tmpa_tl
- \exp_args:Nx \pageref { \l__codedoc_tmpa_tl } .
+ \exp_args:Ne \pageref { \l__codedoc_tmpa_tl } .
}
\seq_gclear:N \g__codedoc_nested_names_seq
}
-\newcommand*{\DescribeOption}
- {
- \leavevmode
- \@bsphack
- \begingroup
- \MakePrivateLetters
- \Describe@Option
- }
-\newcommand*{\Describe@Option}[1]
- {
- \endgroup
- \marginpar{
- \raggedleft
- \PrintDescribeEnv{#1}
- }
- \SpecialOptionIndex{#1}
- \@esphack
- \ignorespaces
- }
-\newcommand*{\SpecialOptionIndex}[1]
- {
- \@bsphack
- \begingroup
- \HD@target
- \let\HDorg@encapchar\encapchar
- \edef\encapchar usage
- {
- \HDorg@encapchar hdclindex{\the\c@HD@hypercount}{usage}
- }
- \index
- {
- #1\actualchar{\protect\ttfamily#1}~(option)
- \encapchar usage
- }
- \index
- {
- options:\levelchar#1\actualchar{\protect\ttfamily#1}
- \encapchar usage
- }
- \endgroup
- \@esphack
- }
+\NewDocElement[idxtype = option, idxgroup = options]{Option}{optionenv}
\font \manual = manfnt \scan_stop:
\cs_gset:Npn \dbend { {\manual\char127} }
\newenvironment {danger}
@@ -1682,6 +1677,56 @@
}{
\par\end{trivlist}
}
+\bool_if:NTF \g__codedoc_show_notes_bool
+ {
+ \NewDocumentCommand\NB{mm}
+ {
+ (\emph{Note}\footnote{\ttfamily [#1]:~\detokenize{#2}})
+ }
+ }
+ {
+ \NewDocumentCommand\NB{mm}{}
+ }
+\bool_if:NTF \g__codedoc_show_notes_bool
+ {
+ \NewDocumentEnvironment{NOTE}{m}
+ {
+ \par\noindent (\emph{Note}~[\texttt{#1}]:\par
+ \verbatim
+ }
+ {
+ \endverbatim
+ \par\noindent \emph{Note~end})\par
+ }
+ }
+ {
+ \NewDocumentEnvironment{NOTE}{m}{\comment}{\endcomment}
+ }
+\providecommand\Hy@footnote@currentHref{}
+\prop_new:N\g__codedoc_fnmark_prop
+\cs_new_protected:Npn \__codedoc_fn_store:
+ {
+ \prop_gput:Nee\g__codedoc_fnmark_prop
+ {fn\int_use:N\c@footnote}{{\Hy@footnote@currentHref}{\int_use:N\c@footnote}}
+ }
+\cs_new_protected:Npn \__codedoc_fn_restore:n #1
+ {
+ \prop_get:NnN \g__codedoc_fnmark_prop {fn#1}\l__codedoc_tmpa_tl
+ \tl_gset:Ne\Hy@footnote@currentHref
+ {\exp_last_unbraced:NV\use_i:nn \l__codedoc_tmpa_tl }
+ \setcounter{footnote}{\exp_last_unbraced:NV\use_ii:nn \l__codedoc_tmpa_tl}
+ }
+
+\cs_generate_variant:Nn \hook_gput_next_code:nn {ne}
+\cs_new_protected:Npn \__codedoc_fn_footnote:nn #1 #2
+ {
+ \footnotemark
+ \__codedoc_fn_store:
+ \hook_gput_next_code:ne {env/#1/after}
+ {\exp_not:N\__codedoc_fn_restore:n{\int_use:N\c@footnote}{\exp_not:n{\footnotetext{#2}}}}}
+
+\AddToHook{env/function/begin}{\def\footnote{\__codedoc_fn_footnote:nn{function}}}
+\AddToHook{env/variable/begin}{\def\footnote{\__codedoc_fn_footnote:nn{variable}}}
\newenvironment{TemplateInterfaceDescription}[1]
{
\subsection{The~object~type~`#1'}
@@ -1750,6 +1795,8 @@
}
{ #1 \endinput }
}
+\cs_if_exist:NT \MaybeStop
+ { \RenewCommandCopy \MaybeStop \StopEventually }
\DeclareDocumentCommand \Finale { }
{ \tl_use:N \g__codedoc_finale_tl }
\tl_new:N \g__codedoc_finale_tl
@@ -1770,6 +1817,18 @@
}
\DeclareDocumentCommand \DocInputAgain { }
{ \clist_map_function:NN \g_docinput_clist \__codedoc_input:n }
+\msg_new:nnn { l3doc } { missing-endgroup }
+ {
+ \str_if_eq:VnTF \@currenvir { document }
+ {
+ There~are~\int_use:N \tex_currentgrouplevel:D
+ \c_space_tl unclosed~groups~in~#1.
+ }
+ {
+ The~\@currenvir \c_space_tl environment~on~line~\@currenvline
+ \c_space_tl doesn't~have~a~matching~\iow_char:N\\end{\@currenvir}.
+ }
+ }
\NewDocumentCommand \DocInclude { m }
{
\relax\clearpage
@@ -1779,7 +1838,14 @@
{ \cs_set:Npn \currentfile{#1.dtx} }
\int_compare:nNnTF \@auxout = \@partaux
{ \@latexerr{\string\include\space cannot~be~nested}\@eha }
- { \@docinclude #1 }
+ { \@docinclude {#1} }
+ % check missing \endgroup, e.g., missing "\end{macro}" in time
+ \int_compare:nNnF { \tex_currentgrouplevel:D } = { 0 }
+ {
+ \int_compare:nNnT { \tex_interactionmode:D } = { 0 }
+ { \int_gset:Nn \tex_interactionmode:D { 1 } }
+ \msg_fatal:nne { l3doc } { missing-endgroup } { \currentfile }
+ }
}
\cs_gset:Npn \@docinclude #1
{
@@ -1788,10 +1854,12 @@
\@tempswatrue
\if@partsw
\@tempswafalse
- \cs_set:Npx \@tempb{#1}
- \@for\@tempa:=\@partlist\do
+ \cs_set:Npe \@tempb {#1}
+ \clist_map_inline:Nn \@partlist
{
- \ifx\@tempa\@tempb\@tempswatrue\fi
+ \if_meaning:w \@tempa \@tempb
+ \@tempswatrue
+ \fi:
}
\fi
\if@tempswa
@@ -1807,8 +1875,8 @@
\part{\currentfile}
{
\cs_set_eq:NN \ttfamily\relax
- \cs_gset:Npx \filekey
- { \filekey, \thepart = { \ttfamily \currentfile } }
+ \cs_gset:Npe \filekey
+ { \filekey,~ \thepart = { \ttfamily \currentfile } }
}
\DocInput{\currentfile}
\cs_set_eq:NN \PrintIndex \@ltxdoc@PrintIndex
@@ -1823,15 +1891,37 @@
\fi
\cs_set_eq:NN \@auxout \@mainaux
}
-\cs_gset:Npn \codeline@wrindex #1
+\cs_gset_protected:Npn \@wrindex #1
+ {
+ \protected@write \@indexfile {}
+ { \string \indexentry {#1} { MMMMI - \thepage } }
+ \endgroup \@esphack
+ }
+\cs_gset_protected:Npn \codeline@wrindex #1
{
\immediate\write\@indexfile
{
\string\indexentry{#1}
- { \filesep \int_use:N \c@CodelineNo }
+ { MMMMV - \filesep \int_use:N \c@CodelineNo }
}
}
\tl_gclear:N \filesep
+\cs_new_protected:Npn \__codedoc_index_page_hc:nn #1#2
+ {
+ \protected@write \@indexfile {}
+ {
+ \string \indexentry { #1 \encapchar hdpindex{#2} }
+ { MMMMI - \thepage }
+ }
+ }
+\cs_new_protected:Npn \__codedoc_index_codeline_hc:nn #1#2
+ {
+ \immediate\write\@indexfile
+ {
+ \string \indexentry { #1 \encapchar hdclindex{\the\c@HD@hypercount}{#2} }
+ { MMMMV - \filesep \int_use:N \c@CodelineNo - MMMD - \the\c@HD@hypercount - M }
+ }
+ }
\cs_gset:Npn \docincludeaux
{
\tl_set:Nn \thepart { \alphalph { part } }
@@ -1887,65 +1977,70 @@
\char_set_catcode_active:N \>
\cs_new_protected:Npn \__codedoc_xmacro_code:n #1
{
+ \tl_clear:N \l__codedoc_tmpa_tl
\tl_if_in:nnTF {#1} { < @ @ = }
- { \__codedoc_xmacro_code:w #1 \q_stop }
+ { \__codedoc_xmacro_code:w #1 < @ @ = \q_recursion_tail > \q_recursion_stop }
{
\tl_set:Nn \l__codedoc_tmpa_tl {#1}
+ \__codedoc_detect_internals:N \l__codedoc_tmpa_tl
\__codedoc_replace_at_at:N \l__codedoc_tmpa_tl
\tl_use:N \l__codedoc_tmpa_tl
}
}
- \cs_new_protected:Npn \__codedoc_xmacro_code:w #1 < @ @ = #2 > #3 \q_stop
+ \cs_new_protected:Npn \__codedoc_xmacro_code:w #1 < @ @ = #2 >
{
- \tl_set:Nn \l__codedoc_tmpa_tl {#1}
- \__codedoc_replace_at_at:N \l__codedoc_tmpa_tl
-
- \tl_gset:Nn \g__codedoc_module_name_tl {#2}
- \tl_put_right:Nn \l__codedoc_tmpa_tl { < @ @ = #2 > }
-
- \tl_set:Nn \l__codedoc_tmpb_tl {#3}
+ % Add code before <@@=...>
+ \tl_set:Nn \l__codedoc_tmpb_tl {#1}
+ \__codedoc_detect_internals:N \l__codedoc_tmpb_tl
\__codedoc_replace_at_at:N \l__codedoc_tmpb_tl
- \tl_put_right:No \l__codedoc_tmpa_tl { \l__codedoc_tmpb_tl }
-
- \tl_use:N \l__codedoc_tmpa_tl
+ \tl_put_right:NV \l__codedoc_tmpa_tl \l__codedoc_tmpb_tl
+ % Check for \q_recursion_tail
+ \quark_if_recursion_tail_stop_do:nn {#2}
+ { \tl_use:N \l__codedoc_tmpa_tl }
+ % Change module name and add <@@=#2> to typeset output
+ \tl_gset:Nn \g__codedoc_module_name_tl {#2}
+ \tl_put_right:Nn \l__codedoc_tmpa_tl { < \text { \verbatim@font @ @ = #2 } > }
+ % Loop
+ \__codedoc_xmacro_code:w
}
\group_end:
\iow_new:N \g__codedoc_func_iow
\tl_new:N \l__codedoc_doc_def_tl
\tl_new:N \l__codedoc_doc_undef_tl
\tl_new:N \l__codedoc_undoc_def_tl
+\tl_const:Nn \c__codedoc_iow_separator_tl { ---- }
+\tl_const:Nn \c__codedoc_iow_midrule_tl { -- }
\cs_new_protected:Npn \__codedoc_show_functions_defined:
{
\bool_lazy_and:nnT
{ \g__codedoc_typeset_implementation_bool } { \g__codedoc_checkfunc_bool }
{
- \iow_term:x { \c__codedoc_iow_separator_tl \iow_newline: }
+ \iow_term:e { \c__codedoc_iow_separator_tl \iow_newline: }
\iow_open:Nn \g__codedoc_func_iow { \c_sys_jobname_str .cmds }
\tl_clear:N \l__codedoc_doc_def_tl
\tl_clear:N \l__codedoc_doc_undef_tl
\tl_clear:N \l__codedoc_undoc_def_tl
+ \seq_gremove_duplicates:N \g_doc_functions_seq
+ \seq_gremove_duplicates:N \g_doc_macros_seq
\seq_map_inline:Nn \g_doc_functions_seq
{
\seq_if_in:NnTF \g_doc_macros_seq {##1}
{
- \tl_put_right:Nx \l__codedoc_doc_def_tl
- { ##1 \iow_newline: }
- \iow_now:Nn \g__codedoc_func_iow { > ~ ##1 }
+ \tl_put_right:Ne \l__codedoc_doc_def_tl
+ { \iow_newline: > ~ ##1 }
}
{
- \tl_put_right:Nx \l__codedoc_doc_undef_tl
- { ##1 \iow_newline: }
- \iow_now:Nn \g__codedoc_func_iow { ! ~ ##1 }
+ \tl_put_right:Ne \l__codedoc_doc_undef_tl
+ { \iow_newline: ! ~ ##1 }
}
}
\seq_map_inline:Nn \g_doc_macros_seq
{
\seq_if_in:NnF \g_doc_functions_seq {##1}
{
- \tl_put_right:Nx \l__codedoc_undoc_def_tl
- { ##1 \iow_newline: }
- \iow_now:Nn \g__codedoc_func_iow { ? ~ ##1 }
+ \tl_put_right:Ne \l__codedoc_undoc_def_tl
+ { \iow_newline: ? ~ ##1 }
}
}
\__codedoc_functions_typeout:nN
@@ -1962,7 +2057,7 @@
\l__codedoc_undoc_def_tl
\iow_close:N \g__codedoc_func_iow
- \iow_term:x { \c__codedoc_iow_separator_tl }
+ \iow_term:e { \c__codedoc_iow_separator_tl }
}
}
\AtEndDocument { \__codedoc_show_functions_defined: }
@@ -1970,11 +2065,11 @@
{
\tl_if_empty:NF #2
{
- \typeout
+ \iow_now:Ne \g__codedoc_func_iow
{
\c__codedoc_iow_midrule_tl \iow_newline:
#1 \iow_newline:
- \c__codedoc_iow_midrule_tl \iow_newline:
+ \c__codedoc_iow_midrule_tl
#2
}
\tl_clear:N #2
@@ -1998,7 +2093,7 @@
\iow_newline:
\space\space\space\space\space\space * ~ ##1
}
- \tl_put_right:Nx \l__codedoc_tmpa_tl
+ \tl_put_right:Ne \l__codedoc_tmpa_tl
{
\iow_newline: \iow_newline:
The~ following~ macro(s)~ have~ incomplete~ tests:
@@ -2016,7 +2111,7 @@
\iow_newline:
\space\space\space\space ##1
}
- \tl_put_right:Nx \l__codedoc_tmpa_tl
+ \tl_put_right:Ne \l__codedoc_tmpa_tl
{
\iow_newline:
\iow_newline:
@@ -2028,22 +2123,48 @@
}
\tl_if_empty:NF \l__codedoc_tmpa_tl
{
- \int_set:Nn \l__codedoc_tmpa_int { \etex_interactionmode:D }
+ \int_set:Nn \l__codedoc_tmpa_int { \tex_interactionmode:D }
\errorstopmode
- \ClassError { l3doc-TUB } { \l__codedoc_tmpa_tl } { }
- \int_set:Nn \etex_interactionmode:D { \l__codedoc_tmpa_int }
+ \ClassError { l3doc } { \l__codedoc_tmpa_tl } { }
+ \int_gset:Nn \tex_interactionmode:D { \l__codedoc_tmpa_int }
}
}
}
\AtEndDocument { \__codedoc_show_not_tested: }
+\cs_new_protected:Npn \__codedoc_target:
+ {
+ \mode_leave_vertical:
+ \group_begin:
+ \HD@savedestfalse \HD@target
+ \group_end:
+ }
+\cs_set_nopar:Npe \theCodelineNo
+ {
+ \group_begin:
+ \exp_not:N \HD@savedestfalse
+ \exp_not:o \theCodelineNo
+ \group_end:
+ }
+\bool_new:N \l__codedoc_allow_indexing_bool
+\bool_set_true:N \l__codedoc_allow_indexing_bool
+\use:e
+ {
+ \exp_not:n { \cs_set_nopar:Npn \@starttoc #1 }
+ {
+ \group_begin:
+ \bool_set_false:N \l__codedoc_allow_indexing_bool
+ \exp_not:o { \@starttoc {#1} }
+ \group_end:
+ }
+ }
\g@addto@macro \theindex { \MakePrivateLetters }
\cs_gset:Npn \verbatimchar {&}
\setcounter { IndexColumns } { 2 }
\IndexPrologue
{
- \section*{Index}
+ \part*{Index}
\markboth{Index}{Index}
- \addcontentsline{toc}{section}{Index}
+ \addcontentsline{toc}{part}{Index}
The~italic~numbers~denote~the~pages~where~the~
corresponding~entry~is~described,~
numbers~underlined~point~to~the~definition,~
@@ -2055,17 +2176,17 @@
\__codedoc_special_index:nn {#1} { }
\@esphack
}
-\msg_new:nnn { l3doc-TUB } { print-index-howto }
+\msg_new:nnn { l3doc } { print-index-howto }
{
Generate~the~index~by~executing\\
\iow_indent:n
{ makeindex~-s~gind.ist~-o~\c_sys_jobname_str.ind~\c_sys_jobname_str.idx }
}
\tl_gput_right:Nn \PrintIndex
- { \AtEndDocument { \msg_info:nn { l3doc-TUB } { print-index-howto } } }
+ { \AtEndDocument { \msg_info:nn { l3doc } { print-index-howto } } }
\cs_gset_protected:Npn \it@is@a #1
{
- \use:x
+ \use:e
{
\__codedoc_special_index_module:nnnnN
{#1}
@@ -2092,13 +2213,13 @@
\tl_new:N \l__codedoc_index_escaped_key_tl
\cs_new_protected:Npn \__codedoc_special_index_module:nnnnN #1#2#3#4#5
{
- \use:x
+ \use:e
{
\exp_not:n { \__codedoc_special_index_aux:nnnnnn {#1} {#2} }
\tl_if_empty:nTF {#3}
{ { } { } { } }
{
- \str_if_eq:eeTF {#3} { TeX }
+ \str_if_eq:nnTF {#3} { TeX }
{
{ TeX~and~LaTeX2e }
{ \string\TeX{}~and~\string\LaTeXe{} }
@@ -2119,14 +2240,14 @@
\__codedoc_quote_special_char:N \l__codedoc_index_escaped_key_tl
\__codedoc_special_index_set:Nn \l__codedoc_index_escaped_macro_tl {#2}
\str_if_eq:onTF { \@currenvir } { macrocode }
- { \codeline@wrindex }
+ { \__codedoc_index_codeline_hc:nn }
{
\str_case:nnF {#6}
{
- { main } { \codeline@wrindex }
- { usage } { \index }
+ { main } { \__codedoc_index_codeline_hc:nn }
+ { usage } { \__codedoc_index_page_hc:nn }
}
- { \HD@target \index }
+ { \__codedoc_target: \__codedoc_index_page_hc:nn }
}
{
\tl_if_empty:nF { #3 #4 #5 }
@@ -2137,31 +2258,64 @@
\token_to_str:N \verbatim@font \c_space_tl
\l__codedoc_index_escaped_macro_tl
}
- \encapchar
- hdclindex{\the\c@HD@hypercount}{#6}
}
+ {#6}
}
+\group_begin:
+\char_set_active_eq:NN - \scan_stop:
+\tl_const:Ne \c__codedoc_active_minus_tl { \char_generate:nn { `- } { 13 } }
+\group_end:
+\cs_new_eq:NN \__codedoc_old_hdpindex:nn \hdpindex
+\cs_new_eq:NN \__codedoc_old_hdclindex:nnn \hdclindex
+\cs_gset_protected:Npn \hdpindex #1
+ { \__codedoc_hdindex:nn { \__codedoc_old_hdpindex:nn {#1} } }
+\cs_gset_protected:Npn \hdclindex #1#2
+ { \__codedoc_hdindex:nn { \__codedoc_old_hdclindex:nnn {#1} {#2} } }
+\cs_new_protected:Npn \__codedoc_hdindex:nn #1#2
+ {
+ \tl_set:Nn \l__codedoc_tmpa_tl {#2}
+ \tl_replace_all:Nen \l__codedoc_tmpa_tl
+ { \exp_not:V \c__codedoc_active_minus_tl \exp_not:V \c__codedoc_active_minus_tl }
+ { -- }
+ \seq_set_split:NnV \l__codedoc_tmpa_seq { -- } \l__codedoc_tmpa_tl
+ \seq_set_map:NNn \l__codedoc_tmpa_seq \l__codedoc_tmpa_seq
+ { \__codedoc_hdindex_aux:nn {#1} {##1} }
+ \seq_use:Nn \l__codedoc_tmpa_seq { -- }
+ }
+\cs_new_protected:Npn \__codedoc_hdindex_aux:nn #1#2
+ {
+ \tl_set:Nn \l__codedoc_tmpa_tl {#2}
+ \tl_replace_all:Nnn \l__codedoc_tmpa_tl { MMMM } { \use_none:nn }
+ \tl_if_in:NnT \l__codedoc_tmpa_tl { MMMD }
+ {
+ \tl_replace_all:Nen \l__codedoc_tmpa_tl
+ { \exp_not:V \c__codedoc_active_minus_tl MMMD } { - MMMD }
+ \tl_replace_all:Nnn \l__codedoc_tmpa_tl { - MMMD } { \__codedoc_hdindex_aux:w }
+ }
+ \use:e { \exp_not:n {#1} { \exp_not:V \l__codedoc_tmpa_tl } }
+ }
+\cs_new_protected:Npn \__codedoc_hdindex_aux:w #1 M { }
\cs_new_protected:Npn \__codedoc_special_index_set:Nn #1#2
{
- \tl_set:Nx #1 { \tl_to_str:n {#2} }
+ \__kernel_tl_set:Nx #1 { \tl_to_str:n {#2} }
\__codedoc_if_almost_str:nTF {#2}
{
- \tl_replace_all:Non #1 { \tl_to_str:n { __ } }
+ \tl_replace_all:Nen #1 { \tl_to_str:n { __ } }
{
\verbatimchar
\token_to_str:N \_ \token_to_str:N \_
\token_to_str:N \verb * \verbatimchar
}
- \exp_args:Nx \tl_map_inline:nn
+ \exp_args:Ne \tl_map_inline:nn
{ \tl_to_str:N \verbatimchar \token_to_str:N _ }
{
\tl_replace_all:Nnn #1 {##1}
{
- \verbatimchar \c__codedoc_backslash_tl ##1
+ \verbatimchar \c_backslash_str ##1
\token_to_str:N \verb * \verbatimchar
}
}
- \tl_set:Nx #1
+ \__kernel_tl_set:Nx #1
{
\token_to_str:N \verb * \verbatimchar
#1 \verbatimchar
@@ -2169,63 +2323,63 @@
}
{
\tl_set:Nn #1 {#2}
- \tl_replace_all:Non #1
- { \c__codedoc_backslash_tl }
+ \tl_replace_all:NVn #1
+ \c_backslash_str
{ \token_to_str:N \bslash \c_space_tl }
}
\__codedoc_quote_special_char:N #1
}
\cs_new_protected:Npn \__codedoc_quote_special_char:N #1
{
- \tl_map_inline:nn { \quotechar \actualchar \encapchar \levelchar }
+ \tl_map_inline:nn { \quotechar \actualchar \encapchar \levelchar \bslash }
{
- \tl_replace_all:Nxn #1
+ \tl_replace_all:Nen #1
{ \tl_to_str:N ##1 } { \quotechar \tl_to_str:N ##1 }
}
}
-\cs_new_protected:Npn \__codedoc_key_get:n #1
+\cs_new_protected:Npe \__codedoc_key_get:n #1
{
- \__codedoc_key_get_base:nN {#1} \l__codedoc_index_macro_tl
- \tl_set:Nx \l__codedoc_index_key_tl
- { \tl_to_str:N \l__codedoc_index_macro_tl }
- \tl_clear:N \l__codedoc_index_module_tl
- \tl_if_in:NoTF \l__codedoc_index_key_tl { \tl_to_str:n { __ } }
- { \bool_set_true:N \l__codedoc_index_internal_bool }
- { \bool_set_false:N \l__codedoc_index_internal_bool }
- \tl_if_head_eq_charcode:oNT
- { \l__codedoc_index_key_tl } \c__codedoc_backslash_token
- { \__codedoc_key_pop: }
- \tl_if_in:NoTF \l__codedoc_index_key_tl { \token_to_str:N : }
- { \__codedoc_key_func: }
+ \exp_not:N \__codedoc_key_get_base:nN {#1} \exp_not:N \l__codedoc_index_macro_tl
+ \__kernel_tl_set:Nx \exp_not:N \l__codedoc_index_key_tl
+ { \exp_not:N \tl_to_str:N \exp_not:N \l__codedoc_index_macro_tl }
+ \tl_clear:N \exp_not:N \l__codedoc_index_module_tl
+ \tl_if_in:NnTF \exp_not:N \l__codedoc_index_key_tl { \tl_to_str:n { __ } }
+ { \bool_set_true:N \exp_not:N \l__codedoc_index_internal_bool }
+ { \bool_set_false:N \exp_not:N \l__codedoc_index_internal_bool }
+ \exp_not:N \tl_if_head_eq_charcode:VNT
+ \exp_not:N \l__codedoc_index_key_tl \c_backslash_str
+ { \exp_not:N \__codedoc_key_pop: }
+ \tl_if_in:NnTF \exp_not:N \l__codedoc_index_key_tl { \token_to_str:N : }
+ { \exp_not:N \__codedoc_key_func: }
{
- \tl_if_in:NoTF \l__codedoc_index_key_tl { \token_to_str:N _ }
- { \__codedoc_key_var: }
+ \tl_if_in:NnTF \exp_not:N \l__codedoc_index_key_tl { \token_to_str:N _ }
+ { \exp_not:N \__codedoc_key_var: }
{
- \tl_if_in:NoT \l__codedoc_index_key_tl { \token_to_str:N @ }
- { \tl_set:Nn \l__codedoc_index_module_tl { TeX } }
+ \tl_if_in:NnT \exp_not:N \l__codedoc_index_key_tl { \token_to_str:N @ }
+ { \tl_set:Nn \exp_not:N \l__codedoc_index_module_tl { TeX } }
}
}
}
\cs_new_protected:Npn \__codedoc_key_pop:
{
- \tl_set:Nx \l__codedoc_index_key_tl
+ \__kernel_tl_set:Nx \l__codedoc_index_key_tl
{ \tl_tail:N \l__codedoc_index_key_tl }
}
\cs_new_protected:Npn \__codedoc_key_trim_module:n #1
{
\cs_set:Npn \__codedoc_tmpa:w ##1 #1 ##2 \q_stop
{ \exp_not:n {##1} }
- \tl_set:Nx \l__codedoc_index_module_tl
+ \__kernel_tl_set:Nx \l__codedoc_index_module_tl
{ \exp_after:wN \__codedoc_tmpa:w \l__codedoc_index_module_tl #1 \q_stop }
}
\cs_new_protected:Npn \__codedoc_key_drop_underscores:
{
- \tl_if_head_eq_charcode:oNT { \l__codedoc_index_key_tl } _
+ \tl_if_head_eq_charcode:VNT \l__codedoc_index_key_tl _
{ \__codedoc_key_pop: \__codedoc_key_drop_underscores: }
}
\cs_new_protected:Npn \__codedoc_key_func:
{
- \tl_if_head_eq_charcode:oNT { \l__codedoc_index_key_tl } .
+ \tl_if_head_eq_charcode:VNT \l__codedoc_index_key_tl .
{ \__codedoc_key_pop: }
\__codedoc_key_drop_underscores:
\tl_set_eq:NN \l__codedoc_index_module_tl \l__codedoc_index_key_tl
@@ -2234,13 +2388,13 @@
}
\cs_new_protected:Npn \__codedoc_key_var:
{
- \exp_args:Nx \tl_if_head_eq_charcode:nNTF
+ \exp_args:Ne \tl_if_head_eq_charcode:nNTF
{ \exp_args:No \str_tail:n \l__codedoc_index_key_tl } _
{
- \str_case:fn { \str_head:N \l__codedoc_index_key_tl }
+ \str_case:en { \str_head:N \l__codedoc_index_key_tl }
{
{ q } { \tl_set:Nn \l__codedoc_index_module_tl { quark } }
- { s } { \tl_set:Nn \l__codedoc_index_module_tl { quark } }
+ { s } { \tl_set:Nn \l__codedoc_index_module_tl { scan } }
}
\__codedoc_key_pop:
\__codedoc_key_pop:
@@ -2249,15 +2403,14 @@
{
\seq_set_split:NoV \l__codedoc_tmpa_seq
{ \token_to_str:N _ } \l__codedoc_index_key_tl
- \tl_set:Nx \l__codedoc_index_module_tl
+ \seq_get_left:NN \l__codedoc_tmpa_seq \l__codedoc_index_module_tl
+ \clist_if_in:NoT \g__codedoc_non_modules_clist \l__codedoc_index_module_tl
{
- \int_case:nnF { \seq_count:N \l__codedoc_tmpa_seq }
+ \seq_get_right:NN \l__codedoc_tmpa_seq \l__codedoc_index_module_tl
+ \clist_if_in:NoT \g__codedoc_non_modules_clist \l__codedoc_index_module_tl
{
- { 0 } { }
- { 1 } { int }
- { 2 } { \seq_item:Nn \l__codedoc_tmpa_seq { 2 } }
+ \tl_clear:N \l__codedoc_index_module_tl
}
- { \seq_item:Nn \l__codedoc_tmpa_seq { 1 } }
}
}
}
@@ -2266,6 +2419,22 @@
\exp_args:No \__codedoc_key_trim_module:n { \token_to_str:N _ }
}
}
+\clist_new:N \g__codedoc_non_modules_clist
+\clist_gset:Ne \g__codedoc_non_modules_clist
+ {
+ \tl_to_str:n
+ {
+
+ alignment, ampersand, atsign, backslash, catcode, circumflex,
+ code, colon, document, dollar, e, empty, false, hash, inf,
+ initex, job, left, log, math, mark, max, minus, nan, nil, no,
+ novalue, other, parameter, percent, pi, recursion, right, space,
+ stop, term, tilde, tmpa, tmpb, true, underscore, zero, one, two,
+ three, four, five, six, seven, eight, nine, ten, eleven, twelve,
+ thirteen, fourteen, fifteen, sixteen, thirty, hundred
+
+ }
+ }
\GlossaryPrologue
{
\part*{Change~History}
@@ -2273,14 +2442,14 @@
\markboth{Change~History}{Change~History}
\addcontentsline{toc}{part}{Change~History}
}
-\msg_new:nnn { l3doc-TUB } { print-changes-howto }
+\msg_new:nnn { l3doc } { print-changes-howto }
{
Generate~the~change~list~by~executing\\
\iow_indent:n
{ makeindex~-s~gglo.ist~-o~\c_sys_jobname_str.gls~\c_sys_jobname_str.glo }
}
\tl_gput_right:Nn \PrintChanges
- { \AtEndDocument { \msg_info:nn { l3doc-TUB } { print-changes-howto } } }
+ { \AtEndDocument { \msg_info:nn { l3doc } { print-changes-howto } } }
\bool_if:NTF \g__codedoc_typeset_implementation_bool
{
\RecordChanges
@@ -2295,12 +2464,12 @@
}
%%FMi
-
+
\def\maketitle{\@ifstar
{\@articletitlefalse\@r@maketitle}%
{\@articletitletrue\@r@maketitle}%
}
-
+
%%
%%
-%% End of file `l3doc-TUB.cls'.
+%% End of file `l3doc.cls'.
diff --git a/macros/latex/contrib/unicodefonttable/unicodefonttable-code.pdf b/macros/latex/contrib/unicodefonttable/unicodefonttable-code.pdf
index 481c4e5c6e..75743c49a8 100644
--- a/macros/latex/contrib/unicodefonttable/unicodefonttable-code.pdf
+++ b/macros/latex/contrib/unicodefonttable/unicodefonttable-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/unicodefonttable/unicodefonttable-doc.pdf b/macros/latex/contrib/unicodefonttable/unicodefonttable-doc.pdf
index 1410dcedcb..cba2aa8ab9 100644
--- a/macros/latex/contrib/unicodefonttable/unicodefonttable-doc.pdf
+++ b/macros/latex/contrib/unicodefonttable/unicodefonttable-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/unicodefonttable/unicodefonttable-samples.pdf b/macros/latex/contrib/unicodefonttable/unicodefonttable-samples.pdf
index 9cdb8133b1..bc27d7ef12 100644
--- a/macros/latex/contrib/unicodefonttable/unicodefonttable-samples.pdf
+++ b/macros/latex/contrib/unicodefonttable/unicodefonttable-samples.pdf
Binary files differ
diff --git a/macros/latex/contrib/unicodefonttable/unicodefonttable.dtx b/macros/latex/contrib/unicodefonttable/unicodefonttable.dtx
index 30f419801c..4c04b15350 100644
--- a/macros/latex/contrib/unicodefonttable/unicodefonttable.dtx
+++ b/macros/latex/contrib/unicodefonttable/unicodefonttable.dtx
@@ -17,12 +17,12 @@
% for those people who are interested or want to report an issue.
%
-\def\unicodefonttabledate {2024/03/01}
-\def\unicodefonttableversion{1.0h}
+\def\unicodefonttabledate {2024/06/06}
+\def\unicodefonttableversion{1.0i}
%<*driver>
-\documentclass{l3doc-TUB}
+\documentclass{l3doc-TUB2024}
% some fixes local to this documentation
@@ -238,10 +238,7 @@
% In the lists below the default settings are indicated by an
% underline.
%
-% \begin{variable}{
-% header, noheader,
-% title-format, title-format-cont,
-% }
+% \begin{variable}{header,noheader,title-format,title-format-cont}
% The first set of keys is concerned with the overall look and
% feel of the generated table.
% \begin{description}
@@ -267,11 +264,7 @@
% \end{variable}
%
%
-% \begin{variable}{
-% display-block,
-% hex-digits, hex-digits-font,hex-digits-row-format,
-% color,
-% }
+% \begin{variable}{display-block,hex-digits, hex-digits-font,hex-digits-row-format,color}
% These keys handle the inner parts of the table.
%
% \begin{description}
@@ -343,10 +336,7 @@
% \end{variable}
%
%
-% \begin{variable}{
-% statistics, nostatistics,
-% statistics-font,statistics-format,
-% }
+% \begin{variable}{statistics, nostatistics,statistics-font,statistics-format}
% The next set of keys allows altering the statistics that are produced.
% \begin{description}
%
@@ -371,10 +361,7 @@
%
%
%
-% \begin{variable}{
-% glyph-width,
-% missing-glyph, missing-glyph-font, missing-glyph-color,
-% }
+% \begin{variable}{glyph-width,missing-glyph, missing-glyph-font, missing-glyph-color}
% Another set of keys deals with customization on the glyph level.
% \begin{description}
% \item[\key{glyph-width}]
@@ -409,9 +396,7 @@
% \end{variable}
%
%
-% \begin{variable}{
-% compare-with,compare-color, compare-bgcolor,statistics-compare-format
-% }
+% \begin{variable}{compare-with,compare-color, compare-bgcolor,statistics-compare-format}
%
% You can make comparisons between two fonts, which is useful, for
% example when dealing with incomplete math fonts and you need to
@@ -453,9 +438,7 @@
% \end{variable}
%
%
-% \begin{variable}{
-% range-start, range-end,
-% }
+% \begin{variable}{range-start, range-end}
% Finally there are two keys for restricting the display range.
% \begin{description}
% \item[\key{range-start}, \key{range-end}]
@@ -757,6 +740,18 @@
{\unicodefonttableversion}
{Producing font tables for Unicode and other fonts}
% \end{macrocode}
+%
+% This is a tmp fix for code in \texttt{lttabbing.dtx} until that
+% is corrected there (probably 2024/11).
+% \begin{macrocode}
+\cs_set:Npn \tbl_crcr:n #1 {
+ \int_compare:nNnT \g__tbl_col_int > 0
+ {
+ \tbl_count_missing_cells:n {#1}
+ }
+ \crcr
+ }
+% \end{macrocode}
%
% \newcommand\hex[1]{$\langle\textit{hex}_{#1}\rangle$}
%
diff --git a/macros/latex/contrib/univie-ling/README b/macros/latex/contrib/univie-ling/README
index 6d589988de..c73460f0b4 100644
--- a/macros/latex/contrib/univie-ling/README
+++ b/macros/latex/contrib/univie-ling/README
@@ -97,6 +97,29 @@ also have a look at the example files.
== CHANGES ==
+V. 2.7 (2024-07-23):
+ - univie-ling-wlg: Use proper spacing with covington's
+ reflist environment.
+ - univie-ling-poster: add smallmargins option.
+ - univie-ling-thesis: fix running headers in twoside mode.
+ - univie-ling-handout:
+ - univie-ling-expose:
+ - univie-ling-paper:
+ - univie-ling-thesis:
+ - univie-ling-wlg:
+ * Fix empty argument check in \weblink.
+ * Fix spacing after \weblink.
+
+V. 2.6 (2024-06-27):
+ - univie-ling-poster: add smallmargins option.
+ - univie-ling-thesis: fix running headers in twoside mode.
+ - univie-ling-handout:
+ - univie-ling-expose:
+ - univie-ling-paper:
+ - univie-ling-thesis:
+ - univie-ling-wlg:
+ * provide \weblink, \SetURLDate and \urldate macros.
+
V. 2.5 (2024-05-09):
- univie-ling-paper: implement "short" option.
- univie-ling-poster: Add \restspace accessibility helper function.
diff --git a/macros/latex/contrib/univie-ling/biblatex-univie-ling/univie-ling.bbx b/macros/latex/contrib/univie-ling/biblatex-univie-ling/univie-ling.bbx
index 60172f7ebd..985dc19f98 100644
--- a/macros/latex/contrib/univie-ling/biblatex-univie-ling/univie-ling.bbx
+++ b/macros/latex/contrib/univie-ling/biblatex-univie-ling/univie-ling.bbx
@@ -38,7 +38,7 @@
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesFile{univie-ling.bbx}[2024/05/09 v.2.5 biblatex bibliography style]
+\ProvidesFile{univie-ling.bbx}[2024/07/23 v.2.7 biblatex bibliography style]
% Load base style (authoryear-comp)
\RequireBibliographyStyle{authoryear-comp}
diff --git a/macros/latex/contrib/univie-ling/biblatex-univie-ling/univie-ling.cbx b/macros/latex/contrib/univie-ling/biblatex-univie-ling/univie-ling.cbx
index 837f66d53d..7600056940 100644
--- a/macros/latex/contrib/univie-ling/biblatex-univie-ling/univie-ling.cbx
+++ b/macros/latex/contrib/univie-ling/biblatex-univie-ling/univie-ling.cbx
@@ -36,7 +36,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesFile{univie-ling.cbx}[2024/05/09 v.2.5 biblatex citation style]
+\ProvidesFile{univie-ling.cbx}[2024/07/23 v.2.7 biblatex citation style]
\RequireCitationStyle{authoryear-comp}
diff --git a/macros/latex/contrib/univie-ling/doc/templates/template-expose-deutsch.pdf b/macros/latex/contrib/univie-ling/doc/templates/template-expose-deutsch.pdf
index 022d7b0ffb..8652b32a5b 100644
--- a/macros/latex/contrib/univie-ling/doc/templates/template-expose-deutsch.pdf
+++ b/macros/latex/contrib/univie-ling/doc/templates/template-expose-deutsch.pdf
Binary files differ
diff --git a/macros/latex/contrib/univie-ling/doc/templates/template-expose-english.pdf b/macros/latex/contrib/univie-ling/doc/templates/template-expose-english.pdf
index bd912dfba4..a8ac59e821 100644
--- a/macros/latex/contrib/univie-ling/doc/templates/template-expose-english.pdf
+++ b/macros/latex/contrib/univie-ling/doc/templates/template-expose-english.pdf
Binary files differ
diff --git a/macros/latex/contrib/univie-ling/doc/templates/template-handout-deutsch.pdf b/macros/latex/contrib/univie-ling/doc/templates/template-handout-deutsch.pdf
index bab72dbf24..48b41cac87 100644
--- a/macros/latex/contrib/univie-ling/doc/templates/template-handout-deutsch.pdf
+++ b/macros/latex/contrib/univie-ling/doc/templates/template-handout-deutsch.pdf
Binary files differ
diff --git a/macros/latex/contrib/univie-ling/doc/templates/template-handout-english.pdf b/macros/latex/contrib/univie-ling/doc/templates/template-handout-english.pdf
index c7add82055..608e203154 100644
--- a/macros/latex/contrib/univie-ling/doc/templates/template-handout-english.pdf
+++ b/macros/latex/contrib/univie-ling/doc/templates/template-handout-english.pdf
Binary files differ
diff --git a/macros/latex/contrib/univie-ling/doc/templates/template-paper-deutsch.pdf b/macros/latex/contrib/univie-ling/doc/templates/template-paper-deutsch.pdf
index f701cadb32..5ac9aba1d1 100644
--- a/macros/latex/contrib/univie-ling/doc/templates/template-paper-deutsch.pdf
+++ b/macros/latex/contrib/univie-ling/doc/templates/template-paper-deutsch.pdf
Binary files differ
diff --git a/macros/latex/contrib/univie-ling/doc/templates/template-paper-english.pdf b/macros/latex/contrib/univie-ling/doc/templates/template-paper-english.pdf
index 9ca6f625cc..49efca45fa 100644
--- a/macros/latex/contrib/univie-ling/doc/templates/template-paper-english.pdf
+++ b/macros/latex/contrib/univie-ling/doc/templates/template-paper-english.pdf
Binary files differ
diff --git a/macros/latex/contrib/univie-ling/doc/templates/template-poster-deutsch.pdf b/macros/latex/contrib/univie-ling/doc/templates/template-poster-deutsch.pdf
index 0ed4b5d7cc..f2260ffeb4 100644
--- a/macros/latex/contrib/univie-ling/doc/templates/template-poster-deutsch.pdf
+++ b/macros/latex/contrib/univie-ling/doc/templates/template-poster-deutsch.pdf
Binary files differ
diff --git a/macros/latex/contrib/univie-ling/doc/templates/template-poster-english.pdf b/macros/latex/contrib/univie-ling/doc/templates/template-poster-english.pdf
index ed8866e79a..b16ccfe334 100644
--- a/macros/latex/contrib/univie-ling/doc/templates/template-poster-english.pdf
+++ b/macros/latex/contrib/univie-ling/doc/templates/template-poster-english.pdf
Binary files differ
diff --git a/macros/latex/contrib/univie-ling/doc/templates/template-thesis-deutsch.pdf b/macros/latex/contrib/univie-ling/doc/templates/template-thesis-deutsch.pdf
index 38fe04556c..9673abfdb0 100644
--- a/macros/latex/contrib/univie-ling/doc/templates/template-thesis-deutsch.pdf
+++ b/macros/latex/contrib/univie-ling/doc/templates/template-thesis-deutsch.pdf
Binary files differ
diff --git a/macros/latex/contrib/univie-ling/doc/templates/template-thesis-english.pdf b/macros/latex/contrib/univie-ling/doc/templates/template-thesis-english.pdf
index eb482b6af2..0d550fa286 100644
--- a/macros/latex/contrib/univie-ling/doc/templates/template-thesis-english.pdf
+++ b/macros/latex/contrib/univie-ling/doc/templates/template-thesis-english.pdf
Binary files differ
diff --git a/macros/latex/contrib/univie-ling/doc/templates/template-wlg-article.pdf b/macros/latex/contrib/univie-ling/doc/templates/template-wlg-article.pdf
index ffaa154e26..8a1d9155c6 100644
--- a/macros/latex/contrib/univie-ling/doc/templates/template-wlg-article.pdf
+++ b/macros/latex/contrib/univie-ling/doc/templates/template-wlg-article.pdf
Binary files differ
diff --git a/macros/latex/contrib/univie-ling/doc/templates/template-wlg-review.pdf b/macros/latex/contrib/univie-ling/doc/templates/template-wlg-review.pdf
index 65411031cc..f811c049e4 100644
--- a/macros/latex/contrib/univie-ling/doc/templates/template-wlg-review.pdf
+++ b/macros/latex/contrib/univie-ling/doc/templates/template-wlg-review.pdf
Binary files differ
diff --git a/macros/latex/contrib/univie-ling/doc/univie-ling-expose.pdf b/macros/latex/contrib/univie-ling/doc/univie-ling-expose.pdf
index c4540b6210..7efd2c2f36 100644
--- a/macros/latex/contrib/univie-ling/doc/univie-ling-expose.pdf
+++ b/macros/latex/contrib/univie-ling/doc/univie-ling-expose.pdf
Binary files differ
diff --git a/macros/latex/contrib/univie-ling/doc/univie-ling-expose.tex b/macros/latex/contrib/univie-ling/doc/univie-ling-expose.tex
index 9a9fc48809..c3d1c66805 100644
--- a/macros/latex/contrib/univie-ling/doc/univie-ling-expose.tex
+++ b/macros/latex/contrib/univie-ling/doc/univie-ling-expose.tex
@@ -63,7 +63,7 @@
\author{\texorpdfstring{Jrgen Spitzmller%
\thanks{Please report issues via \protect\url{https://github.com/jspitz/univie-ling}.}}{Jrgen Spitzmller}}
-\date{Version 2.5, 2024/05/09}
+\date{Version 2.7, 2024/07/23}
\maketitle
@@ -102,6 +102,7 @@ The following class and packages are required and loaded by \uvlt:
\item \textsf{csquotes}: Context sensitive quotations.
\item \textsf{datetime2}: Date localization.
\item \textsf{graphicx}: Graphic support.
+ \item \textsf{isodate}: Format URL dates.
\item \textsf{l3keys}: Key-value interface for class options.
\item \textsf{scrlayer-scrpage}: Page layout settings.
\item \textsf{setspace}: Line spacing adjustments.
@@ -268,6 +269,34 @@ You can redefine each of these commands, if needed, like this:
\renewcommand*\Meaning[1]{\enquote*{#1}}
\end{lstlisting}
+\section{Hyperlinks}
+
+The stylesheet requires you to always give last access dates to web links (URLs). To make this easier,
+\uvlt\ provides a number of convenience macros. To begin with, you can easily enter URLs with the last date you
+accessed the site with the function
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},frame=single,morekeywords={weblink}]
+\weblink{<URL>}[<date>]
+\end{lstlisting}
+%
+This will format the date in the preferred way (``[last accessed: <date>]''), localized to English or German.
+The argument can be given in the form YYYY-MM-DD, DD/MM/YYYY, or DD.MM.YYYY, e.g.
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},frame=single,morekeywords={weblink}]
+\weblink{https://linguistics.univie.ac.at}[27/06/2024]
+\end{lstlisting}
+%
+will print: \url{https://linguistics.univie.ac.at} [last accessed: 27/06/2024].
+If you do not give the optional date argument, no date is printed unless you have specified a general last access date
+by means of the function
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},frame=single,morekeywords={SetURLDate}]
+\SetURLDate{<date>}
+\end{lstlisting}
+%
+which takes the same date format as argument. This function might come in handy if you have the same access date
+for all, or many, URLs. And it lets you update all URL access dates with a single change.
+
+For hyperlinks without date, you can also use the legacy command \jcsmacro{url\{<URL>\}}.
+To output the date information only, you can use the macro \jcsmacro{urldate\{<date>\}}.
+
\section{Linguistic examples and glosses}
The class automatically loads the \textsf{covington} package which provides macros for examples and glosses.
@@ -341,6 +370,15 @@ Templates are provided as well:
\section{Release History}
\begin{itemize}
+ \item 2024/07/23 (v.\,2.7)
+ \begin{itemize}
+ \item Fix spacing after \jfcsmacro{weblink}.
+ \item Fix empty argument check in \jfcsmacro{weblink}.
+ \end{itemize}
+ \item 2024/06/27 (v.\,2.6)
+ \begin{itemize}
+ \item Provide \jcsmacro{weblink}, \jcsmacro{SetURLDate} and \jcsmacro{urldate} macros.
+ \end{itemize}
\item 2024/05/09 (v.\,2.5)
\begin{itemize}
\item No change to this class.
diff --git a/macros/latex/contrib/univie-ling/doc/univie-ling-handout.pdf b/macros/latex/contrib/univie-ling/doc/univie-ling-handout.pdf
index 4576acd967..a253d4003e 100644
--- a/macros/latex/contrib/univie-ling/doc/univie-ling-handout.pdf
+++ b/macros/latex/contrib/univie-ling/doc/univie-ling-handout.pdf
Binary files differ
diff --git a/macros/latex/contrib/univie-ling/doc/univie-ling-handout.tex b/macros/latex/contrib/univie-ling/doc/univie-ling-handout.tex
index f67e3f1846..bdd72da44e 100644
--- a/macros/latex/contrib/univie-ling/doc/univie-ling-handout.tex
+++ b/macros/latex/contrib/univie-ling/doc/univie-ling-handout.tex
@@ -63,7 +63,7 @@
\author{\texorpdfstring{Jrgen Spitzmller%
\thanks{Please report issues via \protect\url{https://github.com/jspitz/univie-ling}.}}{Jrgen Spitzmller}}
-\date{Version 2.5, 2024/05/09}
+\date{Version 2.7, 2024/07/23}
\maketitle
@@ -98,6 +98,7 @@ The following class and packages are required and loaded by \uvlt:
\item \textsf{csquotes}: Context sensitive quotations.
\item \textsf{graphicx}: Graphic support.
\item \textsf{geometry}: Page layout settings.
+ \item \textsf{isodate}: Format URL dates.
\item \textsf{l3keys}: Key-value interface for class options.
\item \textsf{translator}: Localization machinery.
\item \textsf{url}: Support for typesetting URLs.
@@ -305,6 +306,34 @@ You can redefine each of these commands, if needed, like this:
\renewcommand*\Meaning[1]{\enquote*{#1}}
\end{lstlisting}
+\section{Hyperlinks}
+
+It is good practice to always give last access dates to web links (URLs). To make this easier,
+\uvlt\ provides a number of convenience macros. To begin with, you can easily enter URLs with the last date you
+accessed the site with the function
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},frame=single,morekeywords={weblink}]
+\weblink{<URL>}[<date>]
+\end{lstlisting}
+%
+This will format the date in the preferred way (``[last accessed: <date>]''), localized to English or German.
+The argument can be given in the form YYYY-MM-DD, DD/MM/YYYY, or DD.MM.YYYY, e.g.
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},frame=single,morekeywords={weblink}]
+\weblink{https://linguistics.univie.ac.at}[27/06/2024]
+\end{lstlisting}
+%
+will print: \url{https://linguistics.univie.ac.at} [last accessed: 27/06/2024].
+If you do not give the optional date argument, no date is printed unless you have specified a general last access date
+by means of the function
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},frame=single,morekeywords={SetURLDate}]
+\SetURLDate{<date>}
+\end{lstlisting}
+%
+which takes the same date format as argument. This function might come in handy if you have the same access date
+for all, or many, URLs. And it lets you update all URL access dates with a single change.
+
+For hyperlinks without date, you can also use the legacy command \jcsmacro{url\{<URL>\}}.
+To output the date information only, you can use the macro \jcsmacro{urldate\{<date>\}}.
+
\section{Linguistic examples and glosses}
The class automatically loads the \textsf{covington} package which provides macros for examples and glosses.
@@ -386,6 +415,15 @@ Templates are provided as well:
\section{Release History}
\begin{description}
+ \item 2024/07/23 (v.\,2.7)
+ \begin{itemize}
+ \item Fix spacing after \jfcsmacro{weblink}.
+ \item Fix empty argument check in \jfcsmacro{weblink}.
+ \end{itemize}
+ \item 2024/06/27 (v.\,2.6)
+ \begin{itemize}
+ \item Provide \jcsmacro{weblink}, \jcsmacro{SetURLDate} and \jcsmacro{urldate} macros.
+ \end{itemize}
\item 2024/05/09 (v.\,2.5)
\begin{itemize}
\item Add \jcsmacro{hoDate}.
diff --git a/macros/latex/contrib/univie-ling/doc/univie-ling-paper.pdf b/macros/latex/contrib/univie-ling/doc/univie-ling-paper.pdf
index 26aaaabcd5..e04efcd52f 100644
--- a/macros/latex/contrib/univie-ling/doc/univie-ling-paper.pdf
+++ b/macros/latex/contrib/univie-ling/doc/univie-ling-paper.pdf
Binary files differ
diff --git a/macros/latex/contrib/univie-ling/doc/univie-ling-paper.tex b/macros/latex/contrib/univie-ling/doc/univie-ling-paper.tex
index 773dfdb47d..d6f5293a89 100644
--- a/macros/latex/contrib/univie-ling/doc/univie-ling-paper.tex
+++ b/macros/latex/contrib/univie-ling/doc/univie-ling-paper.tex
@@ -63,7 +63,7 @@
\author{\texorpdfstring{Jrgen Spitzmller%
\thanks{Please report issues via \protect\url{https://github.com/jspitz/univie-ling}.}}{Jrgen Spitzmller}}
-\date{Version 2.5, 2024/05/09}
+\date{Version 2.7, 2024/07/23}
\maketitle
@@ -99,6 +99,7 @@ The following class and packages are required and loaded by \uvlt:
\item \textsf{scrartcl}: KOMA-Script article class (base class).
\item \textsf{csquotes}: Context sensitive quotations.
\item \textsf{graphicx}: Graphic support.
+ \item \textsf{isodate}: Format URL dates.
\item \textsf{l3keys}: Key-value interface for class options.
\item \textsf{scrlayer-scrpage}: Page layout settings.
\item \textsf{setspace}: Line spacing adjustments.
@@ -308,6 +309,34 @@ You can redefine each of these commands, if needed, like this:
\renewcommand*\Meaning[1]{\enquote*{#1}}
\end{lstlisting}
+\section{Hyperlinks}
+
+The stylesheet requires you to always give last access dates to web links (URLs). To make this easier,
+\uvlt\ provides a number of convenience macros. To begin with, you can easily enter URLs with the last date you
+accessed the site with the function
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},frame=single,morekeywords={weblink}]
+\weblink{<URL>}[<date>]
+\end{lstlisting}
+%
+This will format the date in the preferred way (``[last accessed: <date>]''), localized to English or German.
+The argument can be given in the form YYYY-MM-DD, DD/MM/YYYY, or DD.MM.YYYY, e.g.
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},frame=single,morekeywords={weblink}]
+\weblink{https://linguistics.univie.ac.at}[27/06/2024]
+\end{lstlisting}
+%
+will print: \url{https://linguistics.univie.ac.at} [last accessed: 27/06/2024].
+If you do not give the optional date argument, no date is printed unless you have specified a general last access date
+by means of the function
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},frame=single,morekeywords={SetURLDate}]
+\SetURLDate{<date>}
+\end{lstlisting}
+%
+which takes the same date format as argument. This function might come in handy if you have the same access date
+for all, or many, URLs. And it lets you update all URL access dates with a single change.
+
+For hyperlinks without date, you can also use the legacy command \jcsmacro{url\{<URL>\}}.
+To output the date information only, you can use the macro \jcsmacro{urldate\{<date>\}}.
+
\section{Linguistic examples and glosses}
The class automatically loads the \textsf{covington} package which provides macros for examples and glosses.
@@ -382,6 +411,15 @@ Templates are provided as well:
\section{Release History}
\begin{itemize}
+ \item 2024/07/23 (v.\,2.7)
+ \begin{itemize}
+ \item Fix spacing after \jfcsmacro{weblink}.
+ \item Fix empty argument check in \jfcsmacro{weblink}.
+ \end{itemize}
+ \item 2024/06/27 (v.\,2.6)
+ \begin{itemize}
+ \item Provide \jcsmacro{weblink}, \jcsmacro{SetURLDate} and \jcsmacro{urldate} macros.
+ \end{itemize}
\item 2024/05/09 (v.\,2.5)
\begin{itemize}
\item Implement \joption{short} option.
diff --git a/macros/latex/contrib/univie-ling/doc/univie-ling-poster.pdf b/macros/latex/contrib/univie-ling/doc/univie-ling-poster.pdf
index 391bec0c00..06d64c7638 100644
--- a/macros/latex/contrib/univie-ling/doc/univie-ling-poster.pdf
+++ b/macros/latex/contrib/univie-ling/doc/univie-ling-poster.pdf
Binary files differ
diff --git a/macros/latex/contrib/univie-ling/doc/univie-ling-poster.tex b/macros/latex/contrib/univie-ling/doc/univie-ling-poster.tex
index dcd04b3338..1985658b78 100644
--- a/macros/latex/contrib/univie-ling/doc/univie-ling-poster.tex
+++ b/macros/latex/contrib/univie-ling/doc/univie-ling-poster.tex
@@ -65,7 +65,7 @@
\author{\texorpdfstring{Jrgen Spitzmller%
\thanks{Please report issues via \protect\url{https://github.com/jspitz/univie-ling}.}}{Jrgen Spitzmller}}
-\date{Version 2.5, 2024/05/09}
+\date{Version 2.7, 2024/07/23}
\maketitle
@@ -107,6 +107,7 @@ The following class and packages are required and loaded by \uvlt:
\item \textsf{csquotes}: Context sensitive quotations.
\item \textsf{graphicx}: Graphic support.
\item \textsf{geometry}: Page layout settings.
+ \item \textsf{isodate}: Format URL dates.
\item \textsf{l3keys}: Key-value interface for class options.
\item \textsf{translator}: Localization machinery.
\item \textsf{url}: Support for typesetting URLs.
@@ -207,6 +208,9 @@ The following layout options are available
\item{\joption{portrait=true|false}} Set the poster to portrait format (default is landscape).
This also adjusts the logo positioning.
\item{\joption{scale=<double>}} Scales the contents of the poster. The default is \texttt{1.4}.
+ \item{\joption{smallmargins=true|false}} By default, and following the corporate design, posters
+ have a larger left margin that make the poster title and text align with the logo.
+ If you need more space or do prefer equal left and right margin sizes, set this to true.
\end{description}
\subsection{Language setting}
@@ -406,6 +410,34 @@ Since texts on posters might be larger than usual, the class provides three size
(in increasing size): \verb|\veryHuge|, \verb|\VeryHuge|, and \verb|\VERYHuge|. Like the legacy size commands, these
are switches.
+\section{Hyperlinks}
+
+It is good practice to always give last access dates to web links (URLs). To make this easier,
+\uvlt\ provides a number of convenience macros. To begin with, you can easily enter URLs with the last date you
+accessed the site with the function
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},frame=single,morekeywords={weblink}]
+\weblink{<URL>}[<date>]
+\end{lstlisting}
+%
+This will format the date in the preferred way (``[last accessed: <date>]''), localized to English or German.
+The argument can be given in the form YYYY-MM-DD, DD/MM/YYYY, or DD.MM.YYYY, e.g.
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},frame=single,morekeywords={weblink}]
+\weblink{https://linguistics.univie.ac.at}[27/06/2024]
+\end{lstlisting}
+%
+will print: \url{https://linguistics.univie.ac.at} [last accessed: 27/06/2024].
+If you do not give the optional date argument, no date is printed unless you have specified a general last access date
+by means of the function
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},frame=single,morekeywords={SetURLDate}]
+\SetURLDate{<date>}
+\end{lstlisting}
+%
+which takes the same date format as argument. This function might come in handy if you have the same access date
+for all, or many, URLs. And it lets you update all URL access dates with a single change.
+
+For hyperlinks without date, you can also use the legacy command \jcsmacro{url\{<URL>\}}.
+To output the date information only, you can use the macro \jcsmacro{urldate\{<date>\}}.
+
\subsection{Linguistic examples and glosses}\label{sec:examples}
The class automatically loads the \textsf{covington} package which provides macros for examples and glosses.
@@ -545,6 +577,16 @@ Templates are provided as well:
\section{Release History}
\begin{description}
+ \item 2024/07/23 (v.\,2.7)
+ \begin{itemize}
+ \item Fix spacing after \jfcsmacro{weblink}.
+ \item Fix empty argument check in \jfcsmacro{weblink}.
+ \end{itemize}
+ \item 2024/06/27 (v.\,2.6)
+ \begin{itemize}
+ \item Provide \jcsmacro{weblink}, \jcsmacro{SetURLDate} and \jcsmacro{urldate} macros.
+ \item Add \joption{smallmargins} class option.
+ \end{itemize}
\item 2024/05/09 (v.\,2.5)
\begin{itemize}
\item Add \verb|\restspace| accessibility helper function.
diff --git a/macros/latex/contrib/univie-ling/doc/univie-ling-thesis.pdf b/macros/latex/contrib/univie-ling/doc/univie-ling-thesis.pdf
index 199dd750a3..b77ad97265 100644
--- a/macros/latex/contrib/univie-ling/doc/univie-ling-thesis.pdf
+++ b/macros/latex/contrib/univie-ling/doc/univie-ling-thesis.pdf
Binary files differ
diff --git a/macros/latex/contrib/univie-ling/doc/univie-ling-thesis.tex b/macros/latex/contrib/univie-ling/doc/univie-ling-thesis.tex
index 9b99e1db6c..2feb157bce 100644
--- a/macros/latex/contrib/univie-ling/doc/univie-ling-thesis.tex
+++ b/macros/latex/contrib/univie-ling/doc/univie-ling-thesis.tex
@@ -59,7 +59,7 @@
\author{\texorpdfstring{Jrgen Spitzmller%
\thanks{Please report issues via \protect\url{https://github.com/jspitz/univie-ling}.}}{Jrgen Spitzmller}}
-\date{Version 2.5, 2024/05/09}
+\date{Version 2.7, 2024/07/23}
\maketitle
@@ -96,6 +96,7 @@ The following class and packages are required and loaded by \uvlt:
\item \textsf{csquotes}: Context sensitive quotations.
\item \textsf{geometry}: Page layout settings.
\item \textsf{graphicx}: Graphic support.
+ \item \textsf{isodate}: Format URL dates.
\item \textsf{l3keys}: Key-value interface for class options.
\item \textsf{scrlayer-scrpage}: Page header settings.
\item \textsf{setspace}: Line spacing adjustments.
@@ -310,6 +311,34 @@ You can redefine each of these commands, if needed, like this:
\renewcommand*\Meaning[1]{\enquote*{#1}}
\end{lstlisting}
+\section{Hyperlinks}
+
+The stylesheet requires you to always give last access dates to web links (URLs). To make this easier,
+\uvlt\ provides a number of convenience macros. To begin with, you can easily enter URLs with the last date you
+accessed the site with the function
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},frame=single,morekeywords={weblink}]
+\weblink{<URL>}[<date>]
+\end{lstlisting}
+%
+This will format the date in the preferred way (``[last accessed: <date>]''), localized to English or German.
+The argument can be given in the form YYYY-MM-DD, DD/MM/YYYY, or DD.MM.YYYY, e.g.
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},frame=single,morekeywords={weblink}]
+\weblink{https://linguistics.univie.ac.at}[27/06/2024]
+\end{lstlisting}
+%
+will print: \url{https://linguistics.univie.ac.at} [last accessed: 27/06/2024].
+If you do not give the optional date argument, no date is printed unless you have specified a general last access date
+by means of the function
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},frame=single,morekeywords={SetURLDate}]
+\SetURLDate{<date>}
+\end{lstlisting}
+%
+which takes the same date format as argument. This function might come in handy if you have the same access date
+for all, or many, URLs. And it lets you update all URL access dates with a single change.
+
+For hyperlinks without date, you can also use the legacy command \jcsmacro{url\{<URL>\}}.
+To output the date information only, you can use the macro \jcsmacro{urldate\{<date>\}}.
+
\section{Linguistic examples and glosses}
The class automatically loads the \textsf{covington} package which provides macros for examples and glosses.
@@ -404,6 +433,16 @@ Templates are provided as well:
\section{Release History}
\begin{itemize}
+ \item 2024/07/23 (v.\,2.7)
+ \begin{itemize}
+ \item Fix spacing after \jfcsmacro{weblink}.
+ \item Fix empty argument check in \jfcsmacro{weblink}.
+ \end{itemize}
+ \item 2024/06/27 (v.\,2.6)
+ \begin{itemize}
+ \item Provide \jcsmacro{weblink}, \jcsmacro{SetURLDate} and \jcsmacro{urldate} macros.
+ \item Fix running headers in twoside mode.
+ \end{itemize}
\item 2024/05/09 (v.\,2.5)
\begin{itemize}
\item No change to this class.
diff --git a/macros/latex/contrib/univie-ling/doc/univie-ling-wlg.pdf b/macros/latex/contrib/univie-ling/doc/univie-ling-wlg.pdf
index c9d37e2221..f2a5a48dc2 100644
--- a/macros/latex/contrib/univie-ling/doc/univie-ling-wlg.pdf
+++ b/macros/latex/contrib/univie-ling/doc/univie-ling-wlg.pdf
Binary files differ
diff --git a/macros/latex/contrib/univie-ling/doc/univie-ling-wlg.tex b/macros/latex/contrib/univie-ling/doc/univie-ling-wlg.tex
index 96cf80916f..6ca75cc0ed 100644
--- a/macros/latex/contrib/univie-ling/doc/univie-ling-wlg.tex
+++ b/macros/latex/contrib/univie-ling/doc/univie-ling-wlg.tex
@@ -59,7 +59,7 @@
\author{\texorpdfstring{Jrgen Spitzmller%
\thanks{Please report issues via \protect\url{https://github.com/jspitz/univie-ling}.}}{Jrgen Spitzmller}}
-\date{Version 2.5, 2024/05/09}
+\date{Version 2.7, 2024/07/23}
\maketitle
@@ -219,8 +219,37 @@ You can redefine each of these commands, if needed, like this:
\renewcommand*\Concept[1]{\textsc{#1}}
\renewcommand*\Meaning[1]{\enquote*{#1}}
\end{lstlisting}
+%
+Furthermore, the class features a \jcsmacro{versal\{<text>\}} macro to typeset capital text and acronyms
+(slightly scaled and tracked).
+
+\section{Hyperlinks}
+
+The journal stylesheet requires you to always give last access dates to web links (URLs). To make this easier,
+\uvlt\ provides a number of convenience macros. To begin with, you can easily enter URLs with the last date you
+accessed the site with the function
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},frame=single,morekeywords={weblink}]
+\weblink{<URL>}[<date>]
+\end{lstlisting}
+%
+This will format the date in the way preferred by the journal (``[last accessed: <date>]''), localized to English or German.
+The argument can be given in the form YYYY-MM-DD, DD/MM/YYYY, or DD.MM.YYYY, e.g.
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},frame=single,morekeywords={weblink}]
+\weblink{https://wlg.univie.ac.at}[27/06/2024]
+\end{lstlisting}
+%
+will print: \url{https://wlg.univie.ac.at} [last accessed: 27/06/2024].
+If you do not give the optional date argument, no date is printed unless you have specified a general last access date
+by means of the function
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},frame=single,morekeywords={SetURLDate}]
+\SetURLDate{<date>}
+\end{lstlisting}
+%
+which takes the same date format as argument. This function might come in handy if you have the same access date
+for all, or many, URLs. And it lets you update all URL access dates with a single change.
-Furthermore, the class features a \jcsmacro{versal\{<text>\}} macro to typeset capital text and acronyms (slightly scaled and tracked).
+For hyperlinks without date, you can also use the legacy command \jcsmacro{url\{<URL>\}}.
+To output the date information only, you can use the macro \jcsmacro{urldate\{<date>\}}.
\section{Linguistic examples and glosses}
@@ -234,6 +263,10 @@ If the class option \joption{biblatex=true} is set, the \uvlt\ class loads a bib
\emph{Unified Style Sheet for Linguistics} of the LSA (\emph{Linguistic Society of America}).
In order to conform to this style, the \uvlt\ class uses the \textsf{biblatex} package with the \textsf{univie-ling} style that is included in the \textsf{univie-ling} bundle.
+If, for some reason, you do not want to use \textsf{biblatex} and prefer to have a manually constituted bibliography\footnote{A reason might be that you transform
+a paper submitted in a an office file format to \LaTeX.}, use the \texttt{reflist} environment
+and separate each entry by a blank line. Since this environment is provided by \textsf{covington}, the \joption{covington} options must not be \joption{false}.
+
\section{\LyX\ layouts and templates}
A layout for \LyX\footnote{See \url{https://www.lyx.org}.}\ can be retrieved from \url{https://github.com/jspitz/univie-ling/raw/master/lyx/layouts/univie-ling-wlg.layout}.
@@ -245,6 +278,16 @@ A template is provided as well: \url{https://github.com/jspitz/univie-ling/raw/m
\raggedright
\begin{itemize}
+ \item 2024/07/23 (v.\,2.7)
+ \begin{itemize}
+ \item Use proper spacing with \textsf{covington}'s \texttt{reflist} environment.
+ \item Fix spacing after \jfcsmacro{weblink}.
+ \item Fix empty argument check in \jfcsmacro{weblink}.
+ \end{itemize}
+ \item 2024/06/27 (v.\,2.6)
+ \begin{itemize}
+ \item Provide \jcsmacro{weblink}, \jcsmacro{SetURLDate} and \jcsmacro{urldate} macros.
+ \end{itemize}
\item 2024/05/09 (v.\,2.5)
\begin{itemize}
\item Update the editorial structure.
diff --git a/macros/latex/contrib/univie-ling/doc/univie-ling.pdf b/macros/latex/contrib/univie-ling/doc/univie-ling.pdf
index 057fd5d0ff..394cddb692 100644
--- a/macros/latex/contrib/univie-ling/doc/univie-ling.pdf
+++ b/macros/latex/contrib/univie-ling/doc/univie-ling.pdf
Binary files differ
diff --git a/macros/latex/contrib/univie-ling/doc/univie-ling.tex b/macros/latex/contrib/univie-ling/doc/univie-ling.tex
index 6cc4ac25f8..f88f1fcea4 100644
--- a/macros/latex/contrib/univie-ling/doc/univie-ling.tex
+++ b/macros/latex/contrib/univie-ling/doc/univie-ling.tex
@@ -42,7 +42,7 @@
\author{\texorpdfstring{Jrgen Spitzmller%
\thanks{Please report issues via \protect\url{https://github.com/jspitz/univie-ling}.}}{Jrgen Spitzmller}}
-\date{Version 2.5, 2024/05/09}
+\date{Version 2.7, 2024/07/23}
\maketitle
diff --git a/macros/latex/contrib/univie-ling/tex/univie-ling-expose.cls b/macros/latex/contrib/univie-ling/tex/univie-ling-expose.cls
index 29576a930f..f7ff0916f4 100644
--- a/macros/latex/contrib/univie-ling/tex/univie-ling-expose.cls
+++ b/macros/latex/contrib/univie-ling/tex/univie-ling-expose.cls
@@ -33,7 +33,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}[2022/06/01]
-\ProvidesPackage{univie-ling-expose}[2024/05/09 v.2.5 Univie Linguistic Exposes (JSp)]
+\ProvidesPackage{univie-ling-expose}[2024/07/23 v.2.7 Univie Linguistic Exposes (JSp)]
%% ============================================================
@@ -218,6 +218,8 @@
\deftranslation[to=English]{cosupervisor}{Co-Supervisor}
\deftranslation[to=German]{beirat}{Beirat}
\deftranslation[to=English]{beirat}{Advisory board}
+\deftranslation[to=German]{urlaccess}{Abruf am:}
+\deftranslation[to=English]{urlaccess}{last accessed:}
%% ============================================================
@@ -261,6 +263,24 @@
{\def\UrlFont{\rmfamily\itshape}
}
+% Format URL dates
+\def\wlg@urldate{}
+\newcommand*\SetURLDate[1]{\gdef\wlg@urldate{#1}}
+\AddToHook{begindocument}{
+ \RequirePackage[english,ngerman]{isodate}
+ \numdate
+ \providecommand*\urldate[1]{[\translate{urlaccess} \printdate{#1}]}
+ % Convenience function
+ \NewDocumentCommand\weblink{mo}{%
+ \url{#1}%
+ \IfNoValueTF{#2}%
+ {\ifx\wlg@urldate\empty\else%
+ \ \urldate{\wlg@urldate}%
+ \fi}%
+ {\ \urldate{#2}}%
+ }
+}
+
% Fix for \slash-Makro, by Donald Arsenau
\def\slash{/\penalty\exhyphenpenalty\hskip\z@skip}
diff --git a/macros/latex/contrib/univie-ling/tex/univie-ling-handout.cls b/macros/latex/contrib/univie-ling/tex/univie-ling-handout.cls
index 22a451329d..73c5a325da 100644
--- a/macros/latex/contrib/univie-ling/tex/univie-ling-handout.cls
+++ b/macros/latex/contrib/univie-ling/tex/univie-ling-handout.cls
@@ -35,7 +35,7 @@
\NeedsTeXFormat{LaTeX2e}[2022/06/01]
-\ProvidesClass{univie-ling-handout}[2024/05/09 v.2.5 Univie Ling handout class (JSp)]
+\ProvidesClass{univie-ling-handout}[2024/07/23 v.2.7 Univie Ling handout class (JSp)]
%% ============================================================
%% CLASS OPTIONS
@@ -652,6 +652,8 @@
\deftranslation[to=English]{footnote}{fn.}
\deftranslation[to=German]{example}{Beispiel}
\deftranslation[to=English]{example}{example}
+\deftranslation[to=German]{urlaccess}{Abruf am:}
+\deftranslation[to=English]{urlaccess}{last accessed:}
%% ============================================================
@@ -920,6 +922,24 @@
% URLs italic
\def\UrlFont{\rmfamily\itshape}
+% Format URL dates
+\def\wlg@urldate{}
+\newcommand*\SetURLDate[1]{\gdef\wlg@urldate{#1}}
+\AddToHook{begindocument}{
+ \RequirePackage[english,ngerman]{isodate}
+ \numdate
+ \providecommand*\urldate[1]{[\translate{urlaccess} \printdate{#1}]}
+ % Convenience function
+ \NewDocumentCommand\weblink{mo}{%
+ \url{#1}%
+ \IfNoValueTF{#2}%
+ {\ifx\wlg@urldate\empty\else%
+ \ \urldate{\wlg@urldate}%
+ \fi}%
+ {\ \urldate{#2}}%
+ }
+}
+
% Covington
\if@uvh@covington
\RequirePackage{covington}
diff --git a/macros/latex/contrib/univie-ling/tex/univie-ling-paper.cls b/macros/latex/contrib/univie-ling/tex/univie-ling-paper.cls
index 4ee6eaf8f8..eda1430345 100644
--- a/macros/latex/contrib/univie-ling/tex/univie-ling-paper.cls
+++ b/macros/latex/contrib/univie-ling/tex/univie-ling-paper.cls
@@ -32,7 +32,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}[2022/06/01]
-\ProvidesPackage{univie-ling-paper}[2024/05/09 v.2.5 Univie Linguistic Papers (JSp)]
+\ProvidesPackage{univie-ling-paper}[2024/07/23 v.2.7 Univie Linguistic Papers (JSp)]
%% ============================================================
@@ -243,6 +243,8 @@ This includes all drawings, sketches, graphics and internet sources.}
\deftranslation[to=English]{selbst3p}{Furthermore, we declare that this paper has not been submitted as an examination already, neither as a whole nor in parts.}
\deftranslation[to=German]{wien}{Wien}
\deftranslation[to=English]{wien}{Vienna}
+\deftranslation[to=German]{urlaccess}{Abruf am:}
+\deftranslation[to=English]{urlaccess}{last accessed:}
%% ============================================================
@@ -283,6 +285,24 @@ This includes all drawings, sketches, graphics and internet sources.}
% URLs italic
\def\UrlFont{\rmfamily\itshape}
+% Format URL dates
+\def\wlg@urldate{}
+\newcommand*\SetURLDate[1]{\gdef\wlg@urldate{#1}}
+\AddToHook{begindocument}{
+ \RequirePackage[english,ngerman]{isodate}
+ \numdate
+ \providecommand*\urldate[1]{[\translate{urlaccess} \printdate{#1}]}
+ % Convenience function
+ \NewDocumentCommand\weblink{mo}{%
+ \url{#1}%
+ \IfNoValueTF{#2}%
+ {\ifx\wlg@urldate\empty\else%
+ \ \urldate{\wlg@urldate}%
+ \fi}%
+ {\ \urldate{#2}}%
+ }
+}
+
% Fix for \slash-Makro, by Donald Arsenau
\def\slash{/\penalty\exhyphenpenalty\hskip\z@skip}
diff --git a/macros/latex/contrib/univie-ling/tex/univie-ling-poster.cls b/macros/latex/contrib/univie-ling/tex/univie-ling-poster.cls
index d2b68940af..87f5092d4c 100644
--- a/macros/latex/contrib/univie-ling/tex/univie-ling-poster.cls
+++ b/macros/latex/contrib/univie-ling/tex/univie-ling-poster.cls
@@ -34,7 +34,7 @@
\NeedsTeXFormat{LaTeX2e}[2022/06/01]
-\ProvidesClass{univie-ling-poster}[2024/05/09 v.2.5 Univie Ling poster class (JSp)]
+\ProvidesClass{univie-ling-poster}[2024/07/23 v.2.7 Univie Ling poster class (JSp)]
%% ============================================================
%% CLASS OPTIONS
@@ -52,6 +52,7 @@
\newif\if@uvpt@pplogo\@uvpt@pplogotrue
\newif\if@uvpt@psfonts\@uvpt@psfontstrue
\newif\if@uvpt@refsp\@uvpt@refsptrue
+\newif\if@uvpt@smallmargins\@uvpt@smallmarginsfalse
\newif\if@uvpt@tcolorbox\@uvpt@tcolorboxtrue
\newif\if@uvpt@usefontenc\@uvpt@usefontenctrue
\def\uvpt@fontenc{T1}
@@ -136,6 +137,10 @@
% Set portrait
portrait.legacy_if_set:n = @uvpt@portrait,
portrait.usage:n = preamble,
+ % smallmargins=<true|false>
+ % Set compact margins
+ smallmargins.legacy_if_set:n = @uvpt@smallmargins,
+ smallmargins.usage:n = preamble,
% microtype=<true|false>
% Load microtype
microtype.legacy_if_set:n = @uvpt@microtype,
@@ -287,6 +292,7 @@
\RequirePackage{url}
\def\UrlFont{\rmfamily\itshape\color{black}}
+
%% ============================================================
%% COLORS
%% ============================================================
@@ -384,23 +390,36 @@
% Headline
\newlength\titleindent
\newlength\restwidth
+\newlength\unitindent
+\newlength\lmoffset
\newlength\univieposter@leftmargin
\defbeamertemplate*{headline}{univie}
{%
+ \setlength\unitindent{0pt}%
+ \setlength\lmoffset{0pt}%
\if@uvpt@portrait
- \setlength\titleindent{.09\paperwidth}
- \setlength\restwidth{.991\paperwidth}
+ \if@uvpt@smallmargins
+ \setlength\unitindent{.09\paperwidth}
+ \else
+ \setlength\titleindent{.09\paperwidth}
+ \setlength\restwidth{.991\paperwidth}
+ \fi
\else
- \setlength\titleindent{.065\paperwidth}
- \setlength\restwidth{.935\paperwidth}
- \fi
+ \if@uvpt@smallmargins
+ \setlength\unitindent{.065\paperwidth}%
+ \setlength\lmoffset{-.02\paperwidth}%
+ \else
+ \setlength\titleindent{.065\paperwidth}%
+ \setlength\restwidth{.935\paperwidth}%
+ \fi%
+ \fi%
\begin{columns}
\begin{column}{\titleindent}
\end{column}
    \begin{column}{0.475\textwidth}
\begin{beamercolorbox}[wd=\columnwidth,sep=.028\textwidth]{univieunit}
- \usebox{\uvpt@box@logo}\par
- \vspace*{.7em}\hspace*{\titleindent}\usebeamerfont{univieunit}\usebeamercolor[fg]{univieunit}\uvpt@department
+ \hspace*{\lmoffset}\usebox{\uvpt@box@logo}\par
+ \vspace*{.7em}\hspace*{\lmoffset}\hspace*{\titleindent}\hspace*{\unitindent}\usebeamerfont{univieunit}\usebeamercolor[fg]{univieunit}\uvpt@department
\end{beamercolorbox}
\end{column}
    \begin{column}{0.48\textwidth}
@@ -432,7 +451,7 @@
\end{columns}
\vspace*{-1.8mm}
\begin{beamercolorbox}[sep=.014\textwidth]{titlebox}
- \hspace*{\titleindent}\hspace{.013\textwidth}%
+ \hspace*{.25\lmoffset}\hspace*{\titleindent}\hspace{.013\textwidth}%
\begin{minipage}{.8\textwidth}%
\usebeamerfont{title in headline}\inserttitle\par%
\ifx\insertsubtitle\@empty%
@@ -622,7 +641,9 @@
\else
\addtolength\univieposter@leftmargin{.065\paperwidth}
\fi
- \setbeamersize{text margin left=\univieposter@leftmargin}
+ \if@uvpt@smallmargins\else
+ \setbeamersize{text margin left=\univieposter@leftmargin}
+ \fi
}
@@ -694,6 +715,8 @@
\deftranslation[to=English]{footnote}{fn.}
\deftranslation[to=German]{example}{Beispiel}
\deftranslation[to=English]{example}{example}
+\deftranslation[to=German]{urlaccess}{Abruf am:}
+\deftranslation[to=English]{urlaccess}{last accessed:}
%% =============================================================
@@ -875,6 +898,24 @@
% URLs italic
\def\UrlFont{\rmfamily\itshape}
+% Format URL dates
+\def\wlg@urldate{}
+\newcommand*\SetURLDate[1]{\gdef\wlg@urldate{#1}}
+\AddToHook{begindocument}{
+ \RequirePackage[english,ngerman]{isodate}
+ \numdate
+ \providecommand*\urldate[1]{[\translate{urlaccess} \printdate{#1}]}
+ % Convenience function
+ \NewDocumentCommand\weblink{mo}{%
+ \url{#1}%
+ \IfNoValueTF{#2}%
+ {\ifx\wlg@urldate\empty\else%
+ \ \urldate{\wlg@urldate}%
+ \fi}%
+ {\ \urldate{#2}}%
+ }
+}
+
% Covington
\if@uvpt@covington
% Rename the beamer example(s) environment
diff --git a/macros/latex/contrib/univie-ling/tex/univie-ling-thesis.cls b/macros/latex/contrib/univie-ling/tex/univie-ling-thesis.cls
index bfe9204471..91d34276a0 100644
--- a/macros/latex/contrib/univie-ling/tex/univie-ling-thesis.cls
+++ b/macros/latex/contrib/univie-ling/tex/univie-ling-thesis.cls
@@ -33,7 +33,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}[2022/06/01]
-\ProvidesPackage{univie-ling-thesis}[2024/05/09 v.2.5 Univie Linguistic Theses (JSp)]
+\ProvidesPackage{univie-ling-thesis}[2024/07/23 v.2.7 Univie Linguistic Theses (JSp)]
%% ============================================================
@@ -234,6 +234,8 @@ This includes all drawings, sketches, graphics and internet sources.}
\deftranslation[to=English]{selbst3p}{Furthermore, we declare that this paper has not been submitted as an examination already, neither as a whole nor in parts.}
\deftranslation[to=German]{wien}{Wien}
\deftranslation[to=English]{wien}{Vienna}
+\deftranslation[to=German]{urlaccess}{Abruf am:}
+\deftranslation[to=English]{urlaccess}{last accessed:}
%% ============================================================
%% FONTS AND EMPHASIZING:
@@ -275,6 +277,24 @@ This includes all drawings, sketches, graphics and internet sources.}
{\def\UrlFont{\rmfamily\itshape}
}
+% Format URL dates
+\def\wlg@urldate{}
+\newcommand*\SetURLDate[1]{\gdef\wlg@urldate{#1}}
+\AddToHook{begindocument}{
+ \RequirePackage[english,ngerman]{isodate}
+ \numdate
+ \providecommand*\urldate[1]{[\translate{urlaccess} \printdate{#1}]}
+ % Convenience function
+ \NewDocumentCommand\weblink{mo}{%
+ \url{#1}%
+ \IfNoValueTF{#2}%
+ {\ifx\wlg@urldate\empty\else%
+ \ \urldate{\wlg@urldate}%
+ \fi}%
+ {\ \urldate{#2}}%
+ }
+}
+
% Fix for \slash-Makro, by Donald Arsenau
\def\slash{/\penalty\exhyphenpenalty\hskip\z@skip}
@@ -424,7 +444,7 @@ This includes all drawings, sketches, graphics and internet sources.}
\clearmainofpairofpagestyles
\ihead{\headmark}
\ohead{\pagemark}
-\automark{chapter}
+\automark[section]{chapter}
\KOMAoptions{headsepline=true}
\pagestyle{scrheadings}
diff --git a/macros/latex/contrib/univie-ling/tex/univie-ling-wlg.cls b/macros/latex/contrib/univie-ling/tex/univie-ling-wlg.cls
index 0bdf4b8552..00deb089cc 100644
--- a/macros/latex/contrib/univie-ling/tex/univie-ling-wlg.cls
+++ b/macros/latex/contrib/univie-ling/tex/univie-ling-wlg.cls
@@ -34,7 +34,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}[2022/06/01]
-\ProvidesPackage{univie-ling-wlg}[2024/05/09 v.2.5 Univie WLG journal layout (JSp)]
+\ProvidesPackage{univie-ling-wlg}[2024/07/23 v.2.7 Univie WLG journal layout (JSp)]
%% ============================================================
@@ -214,6 +214,24 @@
% Italic URLs
\def\UrlFont{\rmfamily\itshape}
+% Format URL dates
+\def\wlg@urldate{}
+\newcommand*\SetURLDate[1]{\gdef\wlg@urldate{#1}}
+\AddToHook{begindocument}{
+ \RequirePackage[english,ngerman]{isodate}
+ \numdate
+ \providecommand*\urldate[1]{[\translate{urlaccess} \printdate{#1}]}
+ % Convenience function
+ \NewDocumentCommand\weblink{mo}{%
+ \url{#1}%
+ \IfNoValueTF{#2}%
+ {\ifx\wlg@urldate\empty\else%
+ \ \urldate{\wlg@urldate}%
+ \fi}%
+ {\ \urldate{#2}}%
+ }
+}
+
% Microtype tweaks
\RequirePackage{microtype}
@@ -313,6 +331,8 @@
(Namensnennung -- Nicht kommerziell -- Keine Bearbeitungen)}
\deftranslation[to=English]{license}{This work is published under a Creative Commons \doclicenseNameRef\ license\\
(Attribution-NonCommercial-NoDerivatives)}
+\deftranslation[to=German]{urlaccess}{Abruf am:}
+\deftranslation[to=English]{urlaccess}{last accessed:}
\AtBeginDocument{%
@@ -1023,6 +1043,8 @@
\if@wlg@covington
\RequirePackage{covington}
\renewcommand{\p@equation}[1]{(#1)}
+ \setlength\reflistindent{\parindent}
+ \setlength\reflistparsep{0pt}
\fi
diff --git a/macros/latex/contrib/ut-thesis/README b/macros/latex/contrib/ut-thesis/README
index 785d74c606..ed1db06b9d 100644
--- a/macros/latex/contrib/ut-thesis/README
+++ b/macros/latex/contrib/ut-thesis/README
@@ -5,8 +5,8 @@ as of Fall 2020:
[https://www.sgs.utoronto.ca/academic-progress/program-completion/formatting]
Copyright (c) 1998-2013 Francois Pitt <fpitt@cs.utoronto.ca>,
- 2020-2023 Jesse Knight <jesse.knight@mail.utoronto.ca>
-last updated at 13:00 (EST) on Wed 08 Feb 2023
+ 2020-2024 Jesse Knight <jesse.x.knight@protonmail.com>
+last updated at 09:00 (BST) on Fri 26 July 2024
This work may be distributed and/or modified under the conditions of
the LaTeX Project Public Licence, either version 1.3c of this licence
@@ -22,7 +22,7 @@ and is not covered by the licence.
This work has the LPPL maintenance status "maintained".
The Current Maintainer of this work is
-Jesse Knight <jesse.knight@mail.utoronto.ca>.
+Jesse Knight <jesse.x.knight@protonmail.com>.
This work consists of the files:
- README
@@ -31,12 +31,13 @@ This work consists of the files:
- ut-thesis.pdf (derived user manual)
- ut-thesis.cls (derived class file)
-To generate ut-thesis.cls (class file), run: pdflatex ut-thesis.ins
-To generate ut-thesis.pdf (documentation), run: pdflatex ut-thesis.dtx
-To use the class, make ut-thesis.cls visible to your LaTeX distribution,
-by placing ut-thesis.cls either in your working directory,
-or in your texmf tree, perhaps: $texmf/tex/latex/ut-thesis/ut-thesis.cls
-and the documentation: $texmf/doc/latex/ut-thesis/ut-thesis.pdf
+Install ut-thesis from your favourite LaTeX distribution.
+Alternatively, or to use the latest version:
+- generate ut-thesis.cls (class file) using: pdflatex ut-thesis.ins
+ and copy to: $texmf/tex/latex/ut-thesis/ut-thesis.cls
+- generate ut-thesis.pdf (documentation) using: pdflatex ut-thesis.dtx
+ and copy to: $texmf/doc/latex/ut-thesis/ut-thesis.pdf
+or simply copy ut-thesis.cls to your working directory.
See version history on GitHub:
-[https://github.com/jessexknight/ut-thesis] \ No newline at end of file
+[https://github.com/jessexknight/ut-thesis]
diff --git a/macros/latex/contrib/ut-thesis/ut-thesis.dtx b/macros/latex/contrib/ut-thesis/ut-thesis.dtx
index 873f0bd2c5..9d6a704148 100644
--- a/macros/latex/contrib/ut-thesis/ut-thesis.dtx
+++ b/macros/latex/contrib/ut-thesis/ut-thesis.dtx
@@ -5,7 +5,7 @@
%<class>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<class>\ProvidesClass{ut-thesis}
%<*class>
-[2023/02/08 v3.1.7 University of Toronto thesis class]
+[2024/07/26 v3.1.8 University of Toronto thesis class]
%</class>
%
%<*driver>
@@ -33,15 +33,15 @@
% \GetFileInfo{ut-thesis.dtx}
%
% \title{The \textit{ut-thesis} class
-% \thanks{\fileversion~[\filedate] CTAN repository:
-% \href{https://ctan.org/pkg/ut-thesis}
-% {\texttt{https://ctan.org/pkg/ut-thesis}}}}
+% \thanks{\fileversion~[\filedate]\hfill
+% \href{https://ctan.org/pkg/ut-thesis}{\texttt{https://ctan.org/pkg/ut-thesis}}\hfill
+% \href{https://github.com/jessexknight/ut-thesis}{\texttt{github.com/jessexknight/ut-thesis}}}}
% \author{
% Francois Pitt,
% Jesse Knight
% \thanks{maintainer, contact:
-% \href{mailto:jesse.knight@mail.utoronto.ca}
-% {\texttt{jesse.knight@mail.utoronto.ca}}}
+% \href{mailto:jesse.x.knight@protonmail.com}
+% {\texttt{jesse.x.knight@protonmail.com}}}
% }
%
% \maketitle
@@ -79,7 +79,7 @@
%
% The default options produce a final copy, ready for submission to
% the University of Toronto School of Graduate Studies (SGS).
-% Some examples are available on
+% There is some example code on
% \href{https://github.com/jessexknight/ut-thesis/tree/master/test}{GitHub}.
%
% \subsection{Options}\label{use:opt}
@@ -616,4 +616,4 @@
\setlength\belowcaptionskip{1ex}
% \end{macrocode}
%
-\endinput \ No newline at end of file
+\endinput
diff --git a/macros/latex/contrib/ut-thesis/ut-thesis.ins b/macros/latex/contrib/ut-thesis/ut-thesis.ins
index db35055115..80df67d81e 100644
--- a/macros/latex/contrib/ut-thesis/ut-thesis.ins
+++ b/macros/latex/contrib/ut-thesis/ut-thesis.ins
@@ -11,8 +11,8 @@ as of Fall 2020:
[https://www.sgs.utoronto.ca/academic-progress/program-completion/formatting]
Copyright (c) 1998-2013 Francois Pitt <fpitt@cs.utoronto.ca>,
- 2020-2021 Jesse Knight <jesse.knight@mail.utoronto.ca>
-last updated at 23:30 (EST) on Tue 20 July 2021
+ 2020-2024 Jesse Knight <jesse.x.knight@protonmail.com>
+last updated at 09:00 (BST) on Fri 26 July 2024
This work may be distributed and/or modified under the conditions of
the LaTeX Project Public Licence, either version 1.3c of this licence
@@ -28,7 +28,7 @@ and is not covered by the licence.
This work has the LPPL maintenance status "maintained".
The Current Maintainer of this work is
-Jesse Knight <jesse.knight@mail.utoronto.ca>.
+Jesse Knight <jesse.x.knight@protonmail.com>.
This work consists of the files:
- README
@@ -37,12 +37,13 @@ This work consists of the files:
- ut-thesis.pdf (derived user manual)
- ut-thesis.cls (derived class file)
-To generate ut-thesis.cls (class file), run: pdflatex ut-thesis.ins
-To generate ut-thesis.pdf (documentation), run: pdflatex ut-thesis.dtx
-To use the class, make ut-thesis.cls visible to your LaTeX distribution,
-by placing ut-thesis.cls either in your working directory,
-or in your texmf tree, perhaps: $texmf/tex/latex/ut-thesis/ut-thesis.cls
-and the documentation: $texmf/doc/latex/ut-thesis/ut-thesis.pdf
+Install ut-thesis from your favourite LaTeX distribution.
+Alternatively, or to use the latest version:
+- generate ut-thesis.cls (class file) using: pdflatex ut-thesis.ins
+ and copy to: $texmf/tex/latex/ut-thesis/ut-thesis.cls
+- generate ut-thesis.pdf (documentation) using: pdflatex ut-thesis.dtx
+ and copy to: $texmf/doc/latex/ut-thesis/ut-thesis.pdf
+or simply copy ut-thesis.cls to your working directory.
See version history on GitHub:
[https://github.com/jessexknight/ut-thesis]
@@ -51,4 +52,4 @@ See version history on GitHub:
\generate{\file{ut-thesis.cls}{\from{ut-thesis.dtx}{class}}}
-\endbatchfile \ No newline at end of file
+\endbatchfile
diff --git a/macros/latex/contrib/ut-thesis/ut-thesis.pdf b/macros/latex/contrib/ut-thesis/ut-thesis.pdf
index 8f055d54d0..fdf74d5a9a 100644
--- a/macros/latex/contrib/ut-thesis/ut-thesis.pdf
+++ b/macros/latex/contrib/ut-thesis/ut-thesis.pdf
Binary files differ
diff --git a/macros/latex/contrib/xfrac/CHANGELOG.md b/macros/latex/contrib/xfrac/CHANGELOG.md
index e2f119f66a..9505bc35fa 100644
--- a/macros/latex/contrib/xfrac/CHANGELOG.md
+++ b/macros/latex/contrib/xfrac/CHANGELOG.md
@@ -8,6 +8,13 @@ Changelog](https://keepachangelog.com/en/1.0.0/), this project uses date-based
## [Unreleased]
+## [2024-06-04]
+
+### Changed
+
+- Update for kernel change from `\IfInstanceExistTF`
+ to `\IfInstanceExistsTF`
+
## [2024-02-13]
### Changed
@@ -15,5 +22,6 @@ Changelog](https://keepachangelog.com/en/1.0.0/), this project uses date-based
- Updated package dependencies (track kernel improvements)
- Preparation for move of `xtemplate` concepts to the kernel
-[Unreleased]: https://github.com/latex3/latex3/compare/2024-02-13...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2024-06-04...HEAD
+[2024-06-04]: https://github.com/latex3/xfrac/compare/2024-02-13...2024-06-04
[2024-02-13]: https://github.com/latex3/xfrac/compare/2023-10-10...2024-02-13
diff --git a/macros/latex/contrib/xfrac/README.md b/macros/latex/contrib/xfrac/README.md
index 8af29b97d2..50c5cdb97a 100644
--- a/macros/latex/contrib/xfrac/README.md
+++ b/macros/latex/contrib/xfrac/README.md
@@ -1,6 +1,6 @@
# `xfrac`: Split level fractions
-Release 2024-02-13
+Release 2024-06-04
## Overview
diff --git a/macros/latex/contrib/xfrac/xfrac.dtx b/macros/latex/contrib/xfrac/xfrac.dtx
index 55c26ca76f..1d2a109cd1 100644
--- a/macros/latex/contrib/xfrac/xfrac.dtx
+++ b/macros/latex/contrib/xfrac/xfrac.dtx
@@ -50,7 +50,7 @@
% }^^A
% }
%
-% \date{Released 2024-02-13}
+% \date{Released 2024-06-04}
%
% \maketitle
%
@@ -512,7 +512,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xfrac}{2024-02-13}{}
+\ProvidesExplPackage{xfrac}{2024-06-04}{}
{Split-level fractions}
% \end{macrocode}
%
@@ -567,6 +567,8 @@
\IfFormatAtLeastTF { 2024-06-01 }
{ }
{ \RequirePackage { xtemplate } }
+\cs_if_exist:NF \IfInstanceExistsTF
+ { \cs_new_eq:NN \IfInstanceExistsTF \IfInstanceExistTF }
% \end{macrocode}
%
% \begin{variable}{\l_@@_slash_box}
@@ -1109,16 +1111,16 @@
{
\mode_if_math:TF
{
- \IfInstanceExistTF { xfrac } { mathfam \number \fam }
+ \IfInstanceExistsTF { xfrac } { mathfam \number \fam }
{ \UseInstance { xfrac } { mathfam \number \fam } }
{ \UseInstance { xfrac } { mathdefault } }
{#2} {#3} {#4}
}
{
- \IfInstanceExistTF { xfrac } {#1}
+ \IfInstanceExistsTF { xfrac } {#1}
{ \UseInstance { xfrac } {#1} }
{
- \IfInstanceExistTF { xfrac } { \f@family }
+ \IfInstanceExistsTF { xfrac } { \f@family }
{ \UseInstance { xfrac } { \f@family } }
{ \UseInstance { xfrac } { default } }
}
diff --git a/macros/latex/contrib/xfrac/xfrac.pdf b/macros/latex/contrib/xfrac/xfrac.pdf
index e79462c3dd..e480dc4b66 100644
--- a/macros/latex/contrib/xfrac/xfrac.pdf
+++ b/macros/latex/contrib/xfrac/xfrac.pdf
Binary files differ
diff --git a/macros/latex/contrib/xint-regression/README.md b/macros/latex/contrib/xint-regression/README.md
new file mode 100644
index 0000000000..4b2977a59b
--- /dev/null
+++ b/macros/latex/contrib/xint-regression/README.md
@@ -0,0 +1,7 @@
+xint-regression is a package to work with classic regressions, with xint.
+-----------------------------------------------------------------------------------------
+xint-regression est un package pour travailler avec des régressions classiques, avec xint.
+------------------------------------------------------------------------------------------
+Author.......: Cédric Pierquet
+email........: cpierquet@outlook.fr
+Licence......: Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt \ No newline at end of file
diff --git a/macros/latex/contrib/xint-regression/doc/xint-regression-doc.pdf b/macros/latex/contrib/xint-regression/doc/xint-regression-doc.pdf
new file mode 100644
index 0000000000..744ccda47f
--- /dev/null
+++ b/macros/latex/contrib/xint-regression/doc/xint-regression-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/xint-regression/doc/xint-regression-doc.tex b/macros/latex/contrib/xint-regression/doc/xint-regression-doc.tex
new file mode 100644
index 0000000000..b42f725cdf
--- /dev/null
+++ b/macros/latex/contrib/xint-regression/doc/xint-regression-doc.tex
@@ -0,0 +1,447 @@
+% !TeX TXS-program:compile = txs:///arara
+% arara: pdflatex: {shell: yes, synctex: no, interaction: batchmode}
+% arara: pdflatex: {shell: yes, synctex: no, interaction: batchmode} if found('log', '(undefined references|Please rerun|Rerun to get)')
+
+\documentclass[11pt,a4paper]{ltxdoc}
+\usepackage[T1]{fontenc}
+\usepackage[utf8]{inputenc}
+\usepackage{xint-regression}
+\usepackage{fancyvrb}
+\usepackage{fancyhdr}
+\usepackage{hyperref}
+\usepackage{tkz-grapheur}
+\usepackage{tcolorbox}
+\tcbuselibrary{skins,minted}
+\fancyhf{}
+\renewcommand{\headrulewidth}{0pt}
+\lfoot{\sffamily\small [xint-regression]}
+\rfoot{\sffamily\small - \thepage{} -}
+\usepackage{hologo}
+\providecommand\tikzlogo{Ti\textit{k}Z}
+\providecommand\TeXLive{\TeX{}Live\xspace}
+\providecommand\PSTricks{\textsf{PSTricks}\xspace}
+\let\pstricks\PSTricks
+\let\TikZ\tikzlogo
+
+\urlstyle{same}
+\hypersetup{pdfborder=0 0 0}
+\usepackage[margin=2cm]{geometry}
+\setlength{\parindent}{0pt}
+\def\TPversion{0.1.0}
+\def\TPdate{05/06/2024}
+\usepackage{soul}
+\usepackage{tabularray}
+\sethlcolor{lightgray!25}
+\NewDocumentCommand\MontreCode{ m }{%
+ \hl{\vphantom{\texttt{pf}}\texttt{#1}}%
+}
+\usepackage{babel}
+
+\renewcommand{\footnoterule}{\vfill\kern -3pt \hrule width 0.4\columnwidth \kern 2.6pt}
+
+\begin{document}
+
+\pagestyle{fancy}
+
+\thispagestyle{empty}
+
+\begin{center}
+ \begin{minipage}{0.88\linewidth}
+ \begin{tcolorbox}[colframe=yellow,colback=yellow!15]
+ \begin{center}
+ \begin{tabular}{c}
+ {\Huge \texttt{xint-regression}}\\
+ \\
+ {\LARGE Classic regressions, with \textsf{xint}.}\\
+ \\
+ {\small \texttt{Version \TPversion{} -- \TPdate}}
+ \end{tabular}
+ \end{center}
+ \end{tcolorbox}
+\end{minipage}
+\end{center}
+
+\begin{center}
+ \begin{tabular}{c}
+ \texttt{Cédric Pierquet}\\
+ {\ttfamily c pierquet -- at -- outlook . fr}\\
+ \texttt{\url{https://forge.apps.education.fr/pierquetcedric/package-latex-xintreg}} \\
+\end{tabular}
+\end{center}
+
+\hrule
+
+\vfill
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\def\LISTEX{1,2,3,4,5,6}
+\def\LISTEY{8.74,8.80,9.52,10.42,11.83,14.62}
+
+\xintexpreg[Alt]{\LISTEX}{\LISTEY} %raw results
+$a \approx \exprega$ and $b \approx \expregb$
+
+\xintexpreg[Alt,round=2]{\LISTEX}{\LISTEY} %rounded results
+$a \approx \exprega$ and $b \approx \expregb$\\
+
+So $y \approx \exprega x+\expregb$.
+\end{tcblisting}
+
+\vspace*{5mm}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\def\LISTEXX{0,50,100,140}
+\def\LISTEYY{275,290,315,350}
+
+\xintexpoffreg[offset=250]{\LISTEXX}{\LISTEYY} %raw results
+$a \approx \expregoffa$ and $b \approx \expregoffb$
+
+\xintexpoffreg[offset=250,round=2/1]{\LISTEXX}{\LISTEYY} %rounded results
+$a \approx \expregoffa$ and $b \approx \expregoffb$\\
+
+So $y \approx 250+\expregoffb e^{\expregoffa x}$
+\end{tcblisting}
+
+\vfill
+
+\vspace*{5mm}
+
+\pagebreak
+
+\phantomsection
+
+\hypertarget{matoc}{}
+
+\tableofcontents
+
+\vspace*{5mm}
+
+\hrule
+
+\vspace*{5mm}
+
+\pagebreak
+
+\section{Introduction}
+
+\subsection{Global usage}
+
+This package offers \textsf{xint}-based commands for working with classical regressions :
+
+\begin{itemize}
+ \item linear regression $ax+b$ ;
+ \item quadratic regression $ax^2+bx+c$ ;
+ \item cubic regression $ax^3+bx^2+cx+d$ ;
+ \item power regression $ax^b$ ;
+ \item exponential regression $ab^x$ or $e^{ax+b}$ or $be^{ax}$ or $C + be^{ax}$ ;
+ \item logarithmic regression $a+b\log(x)$ ;
+ \item hyperbolic regression $a+\displaystyle\frac{b}{x}$.
+\end{itemize}
+
+For each type of regression, results can be stored in macros, either raw or with rounding (with individuals \MontreCode{[optional keys]}).
+
+\subsection{Packages used}
+
+This package uses \MontreCode{simplekv}, \MontreCode{xintexpr}, \MontreCode{listofitems} and \MontreCode{xstring}.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%loading
+\usepackage{xint-regression}
+\end{tcblisting}
+
+\subsection{Warnings}
+
+The precision of the (determination) results seems to be good, which should normally guarantee satisfactory calculations and plots.
+
+Nevertheless, it is advisable to be cautious about the results obtained and those expected.
+
+\pagebreak
+
+\section{The commands}
+
+\subsection{Linear regression}
+
+The equation is \fbox{$ax+b$}.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+\xintlinreg[coeffa=...,coeffa=...,round=...]{xlist}{ylist}
+\end{tcblisting}
+
+By default, \MontreCode{coeffa=linrega} ; \MontreCode{coeffb=linregb} and \MontreCode{round} is empty.
+
+\MontreCode{round=...} can be given within \MontreCode{round=global} or \MontreCode{round=a/b/...}.
+
+\def\LLX{83,71,64,69,69,64,68,59,81,91,57,65,58,62}%
+\def\LLY{183,168,171,178,176,172,165,158,183,182,163,175,164,175}%
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+\def\LLX{83,71,64,69,69,64,68,59,81,91,57,65,58,62}%
+\def\LLY{183,168,171,178,176,172,165,158,183,182,163,175,164,175}%
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+%default output
+\xintlinreg{\LLX}{\LLY}%
+$a \approx \linrega$ and $b \approx \linregb$
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+%personal macros + global rounding
+\xintlinreg[coeffa=LINa,coeffb=LINb,round=2]{\LLX}{\LLY}%
+$a \approx \LINa$ and $b \approx \LINb$
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+%personal macros + individual rounding
+\xintlinreg[coeffa=LINEARa,coeffb=LINEARb,round=2/0]{\LLX}{\LLY}%
+$a \approx \LINEARa$ and $b \approx \LINEARb$
+\end{tcblisting}
+
+\subsection{Quadratic regression}
+
+The equation is \fbox{$ax^2+bx+c$}.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+\xintquadreg[coeffa=...,coeffb=...,coeffc=...,round=...]{xlist}{ylist}
+\end{tcblisting}
+
+By default, \MontreCode{coeffa=quadrega} ; \MontreCode{coeffb=quadregb}, \MontreCode{coeffc=quadrega} and \MontreCode{round} is empty.
+
+\MontreCode{round=...} can be given within \MontreCode{round=global} or \MontreCode{round=a/b/...}.
+
+\def\LLX{83,71,64,69,69,64,68,59,81,91,57,65,58,62}%
+\def\LLY{183,168,171,178,176,172,165,158,183,182,163,175,164,175}%
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+\def\LLX{83,71,64,69,69,64,68,59,81,91,57,65,58,62}%
+\def\LLY{183,168,171,178,176,172,165,158,183,182,163,175,164,175}%
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+%default output
+\xintquadreg{\LLX}{\LLY}%
+$a \approx \quadrega$ ; $b \approx \quadregb$ and $c \approx \quadregc$
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+%personal macros + global rounding
+\xintquadreg[coeffa=QUADa,coeffb=QUADb,coeffc=QUADc,round=2]{\LLX}{\LLY}%
+$a \approx \QUADa$ ; $b \approx \QUADb$ and $c \approx \QUADc$
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+%personal macros + individual rounding
+\xintquadreg[coeffa=QUADRAa,coeffb=QUADRAb,coeffc=QUADRAc,round=4/3/2]{\LLX}{\LLY}%
+$a \approx \QUADRAa$ ; $b \approx \QUADRAb$ and $c \approx \QUADRAc$
+\end{tcblisting}
+
+\subsection{Cubic regression}%, hyperbolic and logarithmic regression}
+
+The equation for cubic is \fbox{$ax^3+bx^2+cx+d$}.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+\xintcubreg[coeffa=...,coeffb=...,coeffc=...,coeffd=...,round=...]{xlist}{ylist}
+\end{tcblisting}
+
+By default, \MontreCode{coeffa=cubrega} ; \MontreCode{coeffb=cubregb} ; \MontreCode{coeffc=cubregc} and \MontreCode{coeffd=cubregd}.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+\def\LLX{83,71,64,69,69,64,68,59,81,91,57,65,58,62}%
+\def\LLY{183,168,171,178,176,172,165,158,183,182,163,175,164,175}%
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+%individual roudings
+\xintcubreg[round=5/3/2/1]{\LLX}{\LLY}%
+$a \approx \cubrega$ ; $b \approx \cubregb$ ; $c \approx \cubregc$ and $d \approx \cubregd$
+\end{tcblisting}
+
+\subsection{Hyperbolic regression}
+
+The equation for hyperbolic is \fbox{$a+\displaystyle\frac{b}{x}$}.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+\xinthypreg[coeffa=...,coeffb=...,round=...]{xlist}{ylist}
+\end{tcblisting}
+
+By default, \MontreCode{coeffa=hyprega} and \MontreCode{coeffb=hypregb}.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+\def\LLX{83,71,64,69,69,64,68,59,81,91,57,65,58,62}%
+\def\LLY{183,168,171,178,176,172,165,158,183,182,163,175,164,175}%
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+%global roudings
+\xinthypreg[round=2]{\LLX}{\LLY}%
+$a \approx \hyprega$ and $b \approx \hypregb$
+\end{tcblisting}
+
+\subsection{Logarithmic regression}
+
+The equation for logarithmic is \fbox{$a+b\,\log(x)$}.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+\xintlogreg[coeffa=...,coeffb=...,round=...]{xlist}{ylist}
+\end{tcblisting}
+
+By default, \MontreCode{coeffa=logrega} and \MontreCode{coeffb=logregb}.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+\def\LLX{83,71,64,69,69,64,68,59,81,91,57,65,58,62}%
+\def\LLY{183,168,171,178,176,172,165,158,183,182,163,175,164,175}%
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+%individual roudings
+\xintlogreg[round=1/4]{\LLX}{\LLY}%
+$a \approx \logrega$ and $b \approx \logregb$
+\end{tcblisting}
+
+\subsection{Power regression}
+
+The equation for power is \fbox{$a \times x^{b}$}.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+\xintpowreg[coeffa=...,coeffb=...,round=...]{xlist}{ylist}
+\end{tcblisting}
+
+By default, \MontreCode{coeffa=powrega} and \MontreCode{coeffb=powregb}.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+\def\LLX{83,71,64,69,69,64,68,59,81,91,57,65,58,62}%
+\def\LLY{183,168,171,178,176,172,165,158,183,182,163,175,164,175}%
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+%default output
+\xintpowreg{\LLX}{\LLY}%
+$a \approx \powrega$ and $b \approx \powregb$
+\end{tcblisting}
+
+\subsection{Exponential regression}
+
+Available regressions are :
+
+\begin{itemize}
+ \item \fbox{$a \times b^{x}$} ;
+ \item \fbox{$e^{ax+b}$} ;
+ \item \fbox{$b\,e^{ax}$} ;
+ \item \fbox{$C+b\,e^{ax}$}.
+\end{itemize}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%a*b^x
+\xintexpabreg[coeffa=...,coeffb=...,round=...]{xlist}{ylist}
+\end{tcblisting}
+
+By default, \MontreCode{coeffa=expabrega} and \MontreCode{coeffb=expabregb}.
+
+\smallskip
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%e^(ax+b)
+\xintexpreg[coeffa=...,coeffb=...,round=...]{xlist}{ylist}
+\end{tcblisting}
+
+By default, \MontreCode{coeffa=exprega} and \MontreCode{coeffb=expregb}.
+
+\smallskip
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%b*e^(ax)
+\xintexpreg[Alt,coeffa=...,coeffb=...,round=...]{xlist}{ylist}
+\end{tcblisting}
+
+By default, \MontreCode{coeffa=exprega} and \MontreCode{coeffb=expregb}.
+
+\smallskip
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%C+b*e^(ax)
+\xintexpoffreg[offset=C,coeffa=...,coeffb=...,round=...]{xlist}{ylist}
+\end{tcblisting}
+
+By default, \MontreCode{coeffa=expregoffa} and \MontreCode{coeffb=expregoffb}.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+\def\LLX{83,71,64,69,69,64,68,59,81,91,57,65,58,62}%
+\def\LLY{183,168,171,178,176,172,165,158,183,182,163,175,164,175}%
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+%a*b^x
+\xintexpabreg{\LLX}{\LLY}
+$a \approx \expabrega$ and $b \approx \expabregb$
+
+%e^(ax+b)
+\xintexpreg{\LLX}{\LLY}
+$a \approx \exprega$ and $b \approx \expregb$
+
+%b*e^(ax)
+\xintexpreg[Alt]{\LLX}{\LLY}
+$a \approx \exprega$ and $b \approx \expregb$
+
+%C+b*e^(ax)
+\xintexpoffreg[offset=50]{\LLX}{\LLY}
+$a \approx \expregoffa$ and $b \approx \expregoffb$
+\end{tcblisting}
+
+\pagebreak
+
+\section{Integration with other packages}
+
+\subsection{Number formatting}
+
+It is possible to format the results, according to locale rules, for example with \textsf{sinuitx}.
+
+\smallskip
+
+With \MontreCode{[locale=FR]} :
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+%a*b^x
+\xintexpabreg[round=1/3]{\LLX}{\LLY}%
+So we obtain $y \approx \num{\expabrega} \times e^{\num{\expabregb}\times x}$
+\end{tcblisting}
+
+\subsection{Plotting}
+
+It is also possible to integrate the package's commands into a plotting environment, such as \textsf{tikz} or \textsf{pgfplots}.
+
+\smallskip
+
+For example, with \textsf{tkz-grapheur} package :
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\def\LISTEXX{0,50,100,140}%
+\def\LISTEYY{275,290,315,350}%
+
+\begin{GraphiqueTikz}
+ [x=0.05cm,y=0.04cm,Xmin=0,Xmax=160,Xgrille=20,Xgrilles=10,
+ Origy=250,Ymin=250,Ymax=400,Ygrille=25,Ygrilles=5]
+ %window
+ \TracerAxesGrilles[Elargir=2.5mm,Police=\footnotesize]{auto}{auto}
+ %points
+ \TracerNuage[Style=o,CouleurNuage=red]{\LISTEXX}{\LISTEYY}
+ %regression expoffset C+b*epx(ax)
+ \xintexpoffreg[offset=250]{\LISTEXX}{\LISTEYY}
+ \DefinirCourbe[Nom=ajust,Couleur=blue,Trace]
+ <ajust>
+ {250+\expregoffb*exp(\expregoffa*x)}
+ %constructions
+ \PlacerImages[Couleurs=cyan/magenta,Traits]{ajust}{80}
+ \PlacerAntecedents[Style=x,Couleurs=blue/green!50!black,Traits]{ajust}{325}
+\end{GraphiqueTikz}
+\end{tcblisting}
+
+\pagebreak
+
+\section{History}
+
+\begin{quote}
+\begin{verbatim}
+0.1.0 : Initial version
+\end{verbatim}
+\end{quote}
+
+\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/xint-regression/tex/xint-regression.sty b/macros/latex/contrib/xint-regression/tex/xint-regression.sty
new file mode 100644
index 0000000000..71413005aa
--- /dev/null
+++ b/macros/latex/contrib/xint-regression/tex/xint-regression.sty
@@ -0,0 +1,662 @@
+% Author : C. Pierquet
+% licence : Released under the LaTeX Project Public License v1.3c
+% or later, see http://www.latex-project.org/lppl.txtf
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{xint-regression}[2024/06/05 0.1.0 Some classic regressions, with xint]
+%0.1.0 Initial version
+
+%------Packages utiles
+\RequirePackage{simplekv}
+\RequirePackage{xintexpr}
+\RequirePackage{listofitems}
+\RequirePackage{xstring}
+
+%régression linéaire
+\defKV[CoefRegLin]{%
+ coeffa=\def\RegLinCoefa{#1},%
+ coeffb=\def\RegLinCoefb{#1},%
+ round=\def\RegLinRound{#1}
+}
+
+\setKVdefault[CoefRegLin]{%
+ coeffa=linrega,%
+ coeffb=linregb,%
+ round={}
+}
+
+\newcommand\xintlinreg[3][]{%
+ \useKVdefault[CoefRegLin]%
+ \setKV[CoefRegLin]{#1}% on paramètres les nouvelles clés et on les simplifie
+ %listes des données
+ \def\xliste{#2}%
+ \def\yliste{#3}%
+ \readlist*\LX{\xliste}%
+ \readlist*\LY{\yliste}%
+ %taille des listes
+ \def\LNB{\inteval{\LXlen}}%
+ %somme des LX et des LY OK
+ \xdef\LXSomme{0}%
+ \xdef\LYSomme{0}%
+ \xintFor* ##1 in {\xintSeq{1}{\LNB}}\do{%
+ \xdef\LXSomme{\xintfloateval{\LXSomme+(\LX[##1])}}%
+ \xdef\LYSomme{\xintfloateval{\LYSomme+(\LY[##1])}}%
+ }%
+ %moyenne des LX et des LY OK
+ \xdef\LXmoy{\xintfloateval{\LXSomme/\LNB}}%
+ \xdef\LYmoy{\xintfloateval{\LYSomme/\LNB}}%
+ %variance des LX et des LY OK
+ \xdef\LXvar{0}%
+ \xintFor* ##1 in {\xintSeq{1}{\LNB}}\do{%
+ \xdef\LXvar{\xintfloateval{\LXvar+(\LX[##1]-(\LXmoy))*(\LX[##1]-(\LXmoy))}}%
+ }
+ \xdef\LXvar{\xintfloateval{\LXvar/\LNB}}%
+ \xdef\LYvar{0}%
+ \xintFor* ##1 in {\xintSeq{1}{\LNB}}\do{%
+ \xdef\LYvar{\xintfloateval{\LYvar+(\LY[##1]-(\LYmoy))*(\LY[##1]-(\LYmoy))}}%
+ }%
+ \xdef\LYvar{\xintfloateval{\LYvar/\LNB}}%
+ %covariance des XY OK
+ \xdef\LXYvar{0}%
+ \xintFor* ##1 in {\xintSeq{1}{\LNB}}\do{%
+ \xdef\LXYvar{\xintfloateval{\LXYvar+(\LX[##1]-(\LXmoy))*(\LY[##1]-(\LYmoy))}}%
+ }%
+ \xdef\LXYvar{\xintfloateval{\LXYvar/\LNB}}%
+ %COEFFS TEMPORAIRES OK
+ \xdef\tmp@reg@lin@a{\xintfloateval{\LXYvar/\LXvar}}%
+ \xdef\tmp@reg@lin@b{\xintfloateval{\LYmoy-(\tmp@reg@lin@a)*(\LXmoy)}}%
+ %STOCKAGE
+ \IfStrEq{\RegLinRound}{}%
+ {%
+ \expandafter\def\csname\RegLinCoefa\endcsname{\tmp@reg@lin@a}%
+ \expandafter\def\csname\RegLinCoefb\endcsname{\tmp@reg@lin@b}%
+ }%
+ {%
+ \IfSubStr{\RegLinRound}{/}%
+ {%
+ \StrCut{\RegLinRound}{/}{\xintarrondisreglina}{\xintarrondisreglinb}%
+ }%
+ {%
+ \xdef\xintarrondisreglina{\RegLinRound}\xdef\xintarrondisreglinb{\RegLinRound}%
+ }%
+ \expandafter\def\csname\RegLinCoefa\endcsname{\xintfloateval{round(\tmp@reg@lin@a,\xintarrondisreglina)}}%
+ \expandafter\def\csname\RegLinCoefb\endcsname{\xintfloateval{round(\tmp@reg@lin@b,\xintarrondisreglinb)}}%
+ }%
+}
+
+
+
+%régression quadratique
+\defKV[CoeffRegQuad]{%
+ coeffa=\def\RegQuadCoefa{#1},%
+ coeffb=\def\RegQuadCoefb{#1},%
+ coeffc=\def\RegQuadCoefc{#1},%
+ round=\def\RegQuadRound{#1}
+}
+
+\setKVdefault[CoeffRegQuad]{%
+ coeffa=quadrega,%
+ coeffb=quadregb,%
+ coeffc=quadregc,%
+ round={}
+}
+
+\newcommand\xintquadreg[3][]{%
+ \useKVdefault[CoeffRegQuad]%
+ \setKV[CoeffRegQuad]{#1}% on paramètres les nouvelles clés et on les simplifie
+ %listes des données
+ \def\xliste{#2}%
+ \def\yliste{#3}%
+ \readlist*\LX{\xliste}%
+ \readlist*\LY{\yliste}%
+ %taille des listes
+ \def\LNB{\inteval{\LXlen}}%
+ %somme importantes
+ \xdef\LXSomme{0}%
+ \xdef\LXCSomme{0}%
+ \xdef\LYSomme{0}%
+ \xdef\LXXSomme{0}%
+ \xdef\LXYSomme{0}%
+ \xdef\LXXCSomme{0}%
+ \xdef\LXCXCSomme{0}%
+ \xdef\LXCYSomme{0}%
+ %calculs
+ \xintFor* ##1 in {\xintSeq{1}{\LNB}}\do{%
+ \xdef\LXSomme{\xintfloateval{\LXSomme+(\LX[##1])}}%
+ \xdef\LXCSomme{\xintfloateval{\LXCSomme+(\LX[##1])^2}}%
+ }%
+ \xintFor* ##1 in {\xintSeq{1}{\LNB}}\do{%
+ \xdef\LYSomme{\xintfloateval{\LYSomme+(\LY[##1])}}%
+ }%
+ \xdef\LXmoy{\xintfloateval{\LXSomme/\LNB}}%
+ \xdef\LYmoy{\xintfloateval{\LYSomme/\LNB}}%
+ \xdef\LXCmoy{\xintfloateval{\LXCSomme/\LNB}}%
+ %calculs suites
+ \xintFor* ##1 in {\xintSeq{1}{\LNB}}\do{%
+ \xdef\LXXSomme{\xintfloateval{\LXXSomme+(\LX[##1]-\LXmoy)^2}}%
+ \xdef\LXYSomme{\xintfloateval{\LXYSomme+(\LX[##1]-\LXmoy)*(\LY[##1]-\LYmoy)}}%
+ \xdef\LXXCSomme{\xintfloateval{\LXXCSomme+(\LX[##1]-\LXmoy)*((\LX[##1])*(\LX[##1])-\LXCmoy)}}%
+ \xdef\LXCXCSomme{\xintfloateval{\LXCXCSomme+((\LX[##1])^2-\LXCmoy)^2}}%
+ \xdef\LXCYSomme{\xintfloateval{\LXCYSomme+((\LX[##1])^2-\LXCmoy)*(\LY[##1]-\LYmoy)}}%
+ }%
+ %COEFFS TEMPORAIRES OK
+ \xdef\tmp@reg@quad@b{\xintfloateval{(\LXYSomme*\LXCXCSomme-\LXCYSomme*\LXXCSomme)/(\LXXSomme*\LXCXCSomme-(\LXXCSomme)^2)}}%
+ \xdef\tmp@reg@quad@a{\xintfloateval{(\LXCYSomme*\LXXSomme-\LXYSomme*\LXXCSomme)/(\LXXSomme*\LXCXCSomme-(\LXXCSomme)^2)}}%
+ \xdef\tmp@reg@quad@c{\xintfloateval{\LYmoy-(\tmp@reg@quad@b)*\LXmoy-(\tmp@reg@quad@a)*\LXCmoy}}%
+ %STOCKAGE
+ \IfStrEq{\RegQuadRound}{}%
+ {%
+ \expandafter\def\csname\RegQuadCoefb\endcsname{\tmp@reg@quad@b}%
+ \expandafter\def\csname\RegQuadCoefa\endcsname{\tmp@reg@quad@a}%
+ \expandafter\def\csname\RegQuadCoefc\endcsname{\tmp@reg@quad@c}%
+ }%
+ {%
+ \IfSubStr{\RegQuadRound}{/}%
+ {%
+ \StrBefore[1]{\RegQuadRound}{/}[\xintarrondisregquada]%
+ \StrBetween[1,2]{\RegQuadRound}{/}{/}[\xintarrondisregquadb]%
+ \StrBehind[2]{\RegQuadRound}{/}[\xintarrondisregquadc]%
+ }%
+ {%
+ \xdef\xintarrondisregquada{\RegQuadRound}%
+ \xdef\xintarrondisregquadb{\RegQuadRound}%
+ \xdef\xintarrondisregquadc{\RegQuadRound}%
+
+ }%
+ \expandafter\def\csname\RegQuadCoefb\endcsname{\xintfloateval{round(\tmp@reg@quad@b,\xintarrondisregquadb)}}%
+ \expandafter\def\csname\RegQuadCoefa\endcsname{\xintfloateval{round(\tmp@reg@quad@a,\xintarrondisregquada)}}%
+ \expandafter\def\csname\RegQuadCoefc\endcsname{\xintfloateval{round(\tmp@reg@quad@c,\xintarrondisregquadc)}}%
+ }%
+}
+
+%régression puissance a*x^b
+\defKV[CoeffRegPuiss]{%
+ coeffa=\def\RegPuissCoefa{#1},%
+ coeffb=\def\RegPuissCoefb{#1},%
+ round=\def\RegPuissRound{#1}
+}
+
+\setKVdefault[CoeffRegPuiss]{%
+ coeffa=powrega,%
+ coeffb=powregb,%
+ round={}
+}
+
+\newcommand\xintpowreg[3][]{%
+ \useKVdefault[CoeffRegPuiss]%
+ \setKV[CoeffRegPuiss]{#1}% on paramètres les nouvelles clés et on les simplifie
+ %listes des données
+ \def\xliste{#2}%
+ \def\yliste{#3}%
+ \readlist*\LX{\xliste}%
+ \readlist*\LY{\yliste}%
+ %taille des listes
+ \def\LNB{\inteval{\LXlen}}%
+ %somme importantes
+ \xdef\LlnXSomme{0}%
+ \xdef\LlnYSomme{0}%
+ \xdef\LlnXlnYSomme{0}%
+ \xdef\LlncXSomme{0}%
+ %calculs
+ \xintFor* ##1 in {\xintSeq{1}{\LNB}}\do{%
+ \xdef\LlnXSomme{\xintfloateval{\LlnXSomme+log(\LX[##1])}}%
+ \xdef\LlnYSomme{\xintfloateval{\LlnYSomme+log(\LY[##1])}}%
+ \xdef\LlnXlnYSomme{\xintfloateval{\LlnXlnYSomme+log(\LX[##1])*log(\LY[##1])}}%
+ \xdef\LlncXSomme{\xintfloateval{\LlncXSomme+(log(\LX[##1]))^2}}%
+ }%
+ %COEFFS TEMPORAIRES OK
+ \xdef\tmp@reg@pow@b{\xintfloateval{(\LNB*\LlnXlnYSomme-\LlnXSomme*\LlnYSomme)/(\LNB*\LlncXSomme-(\LlnXSomme)^2)}}%
+ \xdef\tmp@reg@pow@a{\xintfloateval{exp(1/\LNB*\LlnYSomme-(\tmp@reg@pow@b)/\LNB*\LlnXSomme)}}%
+ %STOCKAGE
+ \IfStrEq{\RegPuissRound}{}%
+ {%
+ \expandafter\def\csname\RegPuissCoefb\endcsname{\xintfloateval{\tmp@reg@pow@b}}%
+ \expandafter\def\csname\RegPuissCoefa\endcsname{\xintfloateval{\tmp@reg@pow@a}}%
+ }%
+ {%
+ \IfSubStr{\RegPuissRound}{/}%
+ {%
+ \StrCut{\RegPuissRound}{/}{\xintarrondisregpowa}{\xintarrondisregpowb}%
+ }%
+ {%
+ \xdef\xintarrondisregpowa{\RegPuissRound}\xdef\xintrrondisregpowb{\RegPuissRound}%
+ }%
+ \expandafter\def\csname\RegPuissCoefb\endcsname{\xintfloateval{round(\tmp@reg@pow@b,\xintarrondisregpowb)}}%
+ \expandafter\def\csname\RegPuissCoefa\endcsname{\xintfloateval{round(\tmp@reg@pow@a,\xintarrondisregpowa)}}%
+ }%
+}
+
+%régression a*b^x
+\defKV[CoeffRegExpoAB]{%
+ coeffa=\def\RegExpoCoefa{#1},%
+ coeffb=\def\RegExpoCoefb{#1},%
+ round=\def\RegExpoRound{#1}
+}
+
+\setKVdefault[CoeffRegExpoAB]{%
+ coeffa=expabrega,%
+ coeffb=expabregb,%
+ round={}
+}
+
+\newcommand\xintexpabreg[3][]{%
+ \useKVdefault[CoeffRegExpoAB]%
+ \setKV[CoeffRegExpoAB]{#1}% on paramètres les nouvelles clés et on les simplifie
+ %listes des données
+ \def\xliste{#2}%
+ \def\yliste{#3}%
+ \readlist*\LX{\xliste}%
+ \readlist*\LY{\yliste}%
+ %taille des listes
+ \def\LNB{\inteval{\LXlen}}%
+ %somme importantes
+ \xdef\LXlnYSomme{0}%
+ \xdef\LXSomme{0}%
+ \xdef\LlnYSomme{0}%
+ \xdef\LXcSomme{0}%
+ %calculs
+ \xintFor* ##1 in {\xintSeq{1}{\LNB}}\do{%
+ \xdef\LXlnYSomme{\xintfloateval{\LXlnYSomme+\LX[##1]*log(\LY[##1])}}%
+ \xdef\LXSomme{\xintfloateval{\LXSomme+\LX[##1]}}%
+ \xdef\LlnYSomme{\xintfloateval{\LlnYSomme+log(\LY[##1])}}%
+ \xdef\LXcSomme{\xintfloateval{\LXcSomme+(\LX[##1])^2}}%
+ }%
+ %COEFFS TEMPORAIRES OK
+ \xdef\tmp@reg@expab@b{\xintfloateval{exp((\LNB*\LXlnYSomme-\LXSomme*\LlnYSomme)/(\LNB*\LXcSomme-(\LXSomme)^2))}}%
+ \xdef\tmp@reg@expab@a{\xintfloateval{exp(1/\LNB*\LlnYSomme-log(\tmp@reg@expab@b)/\LNB*\LXSomme)}}%
+ %STOCKAGE
+ \IfStrEq{\RegExpoRound}{}%
+ {%
+ \expandafter\def\csname\RegExpoCoefb\endcsname{\tmp@reg@expab@b}%
+ \expandafter\def\csname\RegExpoCoefa\endcsname{\tmp@reg@expab@a}%
+ }%
+ {%
+ \IfSubStr{\RegExpoRound}{/}%
+ {%
+ \StrCut{\RegExpoRound}{/}{\xintarrondisregexpoaba}{\xintarrondisregexpoabb}%
+ }%
+ {%
+ \xdef\xintarrondisregexpoaba{\RegExpoRound}\xdef\xintarrondisregexpoabb{\RegExpoRound}%
+ }%
+ \expandafter\def\csname\RegExpoCoefb\endcsname{\xintfloateval{round(\tmp@reg@expab@b,\xintarrondisregexpoabb)}}%
+ \expandafter\def\csname\RegExpoCoefa\endcsname{\xintfloateval{round(\tmp@reg@expab@a,\xintarrondisregexpoaba)}}%
+ }%
+}
+
+%régression a+b/x
+\defKV[CoeffRegHyperb]{%
+ coeffa=\def\RegHyperbCoefa{#1},%
+ coeffb=\def\RegHyperbCoefb{#1},%
+ round=\def\RegHyperbRound{#1}
+}
+
+\setKVdefault[CoeffRegHyperb]{%
+ coeffa=hyprega,%
+ coeffb=hypregb,%
+ round={}
+}
+
+\newcommand\xinthypreg[3][]{%
+ \useKVdefault[CoeffRegHyperb]%
+ \setKV[CoeffRegHyperb]{#1}% on paramètres les nouvelles clés et on les simplifie
+ %listes des données
+ \def\xliste{#2}%
+ \def\yliste{#3}%
+ \readlist*\LX{\xliste}%
+ \readlist*\LY{\yliste}%
+ %taille des listes
+ \def\LNB{\inteval{\LXlen}}%
+ %somme importantes
+ \xdef\LinvXSomme{0}%
+ \xdef\LYdivXSomme{0}%
+ \xdef\LYSomme{0}%
+ \xdef\LinvXcSomme{0}%
+ %calculs
+ \xintFor* ##1 in {\xintSeq{1}{\LNB}}\do{%
+ \xdef\LinvXSomme{\xintfloateval{\LinvXSomme+1/\LX[##1]}}%
+ \xdef\LYdivXSomme{\xintfloateval{\LYdivXSomme+\LY[##1]/\LX[##1]}}%
+ \xdef\LYSomme{\xintfloateval{\LYSomme+\LY[##1]}}%
+ \xdef\LinvXcSomme{\xintfloateval{\LinvXcSomme+1/(\LX[##1])^2}}%
+ }%
+ %COEFFS TEMPORAIRES OK
+ \xdef\tmp@reg@hyp@b{\xintfloateval{(\LNB*\LYdivXSomme-\LinvXSomme*\LYSomme)/(\LNB*\LinvXcSomme-(\LinvXSomme)^2)}}%
+ \xdef\tmp@reg@hyp@a{\xintfloateval{1/\LNB*\LYSomme-(\tmp@reg@hyp@b)/\LNB*\LinvXSomme}}%
+ %STOCKAGE
+ \IfStrEq{\RegHyperbRound}{}%
+ {%
+ \expandafter\def\csname\RegHyperbCoefb\endcsname{\tmp@reg@hyp@b}%
+ \expandafter\def\csname\RegHyperbCoefa\endcsname{\tmp@reg@hyp@a}%
+ }%
+ {%
+ \IfSubStr{\RegHyperbRound}{/}%
+ {%
+ \StrCut{\RegHyperbRound}{/}{\xintarrondisreghypa}{\xintarrondisreghypb}%
+ }%
+ {%
+ \xdef\xintarrondisreghypa{\RegHyperbRound}\xdef\xintarrondisreghypb{\RegHyperbRound}%
+ }%
+ \expandafter\def\csname\RegHyperbCoefb\endcsname{\xintfloateval{round(\tmp@reg@hyp@b,\xintarrondisreghypb)}}%
+ \expandafter\def\csname\RegHyperbCoefa\endcsname{\xintfloateval{round(\tmp@reg@hyp@a,\xintarrondisreghypa)}}%
+ }%
+}
+
+%régression a+b*ln(x)
+\defKV[CoeffRegLog]{%
+ coeffa=\def\RegLogCoefa{#1},%
+ coeffb=\def\RegLogCoefb{#1},%
+ round=\def\RegLogRound{#1}
+}
+
+\setKVdefault[CoeffRegLog]{%
+ coeffa=logrega,%
+ coeffb=logregb,%
+ round={}
+}
+
+\newcommand\xintlogreg[3][]{%
+ \useKVdefault[CoeffRegLog]%
+ \setKV[CoeffRegLog]{#1}% on paramètres les nouvelles clés et on les simplifie
+ %listes des données
+ \def\xliste{#2}%
+ \def\yliste{#3}%
+ \readlist*\LX{\xliste}%
+ \readlist*\LY{\yliste}%
+ %taille des listes
+ \def\LNB{\inteval{\LXlen}}%
+ %somme importantes
+ \xdef\LYlnXSomme{0}%
+ \xdef\LlnXSomme{0}%
+ \xdef\LYSomme{0}%
+ \xdef\LYlncXSomme{0}%
+ %calculs
+ \xintFor* ##1 in {\xintSeq{1}{\LNB}}\do{%
+ \xdef\LYlnXSomme{\xintfloateval{\LYlnXSomme+\LY[##1]*log(\LX[##1])}}%
+ \xdef\LlnXSomme{\xintfloateval{\LlnXSomme+log(\LX[##1])}}%
+ \xdef\LYSomme{\xintfloateval{\LYSomme+\LY[##1]}}%
+ \xdef\LYlncXSomme{\xintfloateval{\LYlncXSomme+log(\LX[##1])^2}}%
+ }%
+ %COEFFS TEMPORAIRES OK
+ \xdef\tmp@reg@log@b{\xintfloateval{(\LNB*\LYlnXSomme-\LlnXSomme*\LYSomme)/(\LNB*\LYlncXSomme-(\LlnXSomme)^2)}}%
+ \xdef\tmp@reg@log@a{\xintfloateval{1/\LNB*\LYSomme-(\tmp@reg@log@b)/\LNB*\LlnXSomme}}%
+ %STOCKAGE
+ \IfStrEq{\RegLogRound}{}%
+ {%
+ \expandafter\def\csname\RegLogCoefb\endcsname{\tmp@reg@log@b}%
+ \expandafter\def\csname\RegLogCoefa\endcsname{\tmp@reg@log@a}%
+ }%
+ {%
+ \IfSubStr{\RegLogRound}{/}%
+ {%
+ \StrCut{\RegLogRound}{/}{\xintarrondisregloga}{\xintarrondisreglogb}%
+ }%
+ {%
+ \xdef\xintarrondisregloga{\RegLogRound}\xdef\xintarrondisreglogb{\RegLogRound}%
+ }%
+ \expandafter\def\csname\RegLogCoefb\endcsname{\xintfloateval{round(\tmp@reg@log@b,\xintarrondisreglogb)}}%
+ \expandafter\def\csname\RegLogCoefa\endcsname{\xintfloateval{round(\tmp@reg@log@a,\xintarrondisregloga)}}%
+ }%
+}
+
+%régression e^(ax+b)
+\defKV[CoeffRegExpo]{%
+ coeffa=\def\RegExpoNCoefa{#1},%
+ coeffb=\def\RegExpoNCoefb{#1},%
+ round=\def\RegExpoNRound{#1}
+}
+
+\setKVdefault[CoeffRegExpo]{%
+ coeffa=exprega,%
+ coeffb=expregb,%
+ Alt=false,%
+ round={}
+}
+
+\newcommand\xintexpreg[3][]{%
+ \useKVdefault[CoeffRegExpo]%
+ \setKV[CoeffRegExpo]{#1}% on paramètres les nouvelles clés et on les simplifie
+ %listes des données
+ \def\xliste{#2}%
+ \def\yliste{#3}%
+ \readlist*\LX{\xliste}%
+ \readlist*\LY{\yliste}%
+ %taille des listes
+ \def\LNB{\inteval{\LXlen}}%
+ %somme importantes
+ \xdef\LXlnYSomme{0}%
+ \xdef\LXSomme{0}%
+ \xdef\LlnYSomme{0}%
+ \xdef\LXcSomme{0}%
+ %calculs
+ \xintFor* ##1 in {\xintSeq{1}{\LNB}}\do{%
+ \xdef\LXlnYSomme{\xintfloateval{\LXlnYSomme+\LX[##1]*log(\LY[##1])}}%
+ \xdef\LXSomme{\xintfloateval{\LXSomme+\LX[##1]}}%
+ \xdef\LlnYSomme{\xintfloateval{\LlnYSomme+log(\LY[##1])}}%
+ \xdef\LXcSomme{\xintfloateval{\LXcSomme+(\LX[##1])^2}}%
+ }%
+ %COEFFS TEMPORAIRES
+ \xdef\TmpCoeffExpoA{\xintfloateval{(\LNB*\LXlnYSomme-\LXSomme*\LlnYSomme)/(\LNB*\LXcSomme-(\LXSomme)^2)}}%
+ \xdef\TmpCoeffExpoB{\xintfloateval{1/\LNB*\LlnYSomme-(\TmpCoeffExpoA)/\LNB*\LXSomme}}%
+ \ifboolKV[CoeffRegExpo]{Alt}%
+ {%
+ %STOCKAGE
+ \IfStrEq{\RegExpoNRound}{}%
+ {%
+ \expandafter\def\csname\RegExpoNCoefb\endcsname{\xintfloateval{exp(\TmpCoeffExpoB)}}%
+ \expandafter\def\csname\RegExpoNCoefa\endcsname{\TmpCoeffExpoA}%
+ }%
+ {%
+ \IfSubStr{\RegExpoNRound}{/}%
+ {%
+ \StrCut{\RegExpoNRound}{/}{\xintarrondisregexpoa}{\xintarrondisregexpob}%
+ }%
+ {%
+ \xdef\xintarrondisregexpoa{\RegExpoNRound}\xdef\xintarrondisregexpob{\RegExpoNRound}%
+ }%
+ \expandafter\def\csname\RegExpoNCoefb\endcsname{\xintfloateval{round(exp(\TmpCoeffExpoB),\xintarrondisregexpob)}}%
+ \expandafter\def\csname\RegExpoNCoefa\endcsname{\xintfloateval{round(\TmpCoeffExpoA,\xintarrondisregexpoa)}}%
+ }%
+ }%
+ {%
+ %STOCKAGE
+ \IfStrEq{\RegExpoNRound}{}%
+ {%
+ \expandafter\def\csname\RegExpoNCoefb\endcsname{\TmpCoeffExpoB}%
+ \expandafter\def\csname\RegExpoNCoefa\endcsname{\TmpCoeffExpoA}%
+ }%
+ {%
+ \IfSubStr{\RegExpoNRound}{/}%
+ {%
+ \StrCut{\RegExpoNRound}{/}{\xintarrondisregexpoa}{\xintarrondisregexpob}%
+ }%
+ {%
+ \xdef\xintarrondisregexpoa{\RegExpoNRound}\xdef\xintarrondisregexpob{\RegExpoNRound}%
+ }%
+ \expandafter\def\csname\RegExpoNCoefb\endcsname{\xintfloateval{round(\TmpCoeffExpoB,\xintarrondisregexpob)}}%
+ \expandafter\def\csname\RegExpoNCoefa\endcsname{\xintfloateval{round(\TmpCoeffExpoA,\xintarrondisregexpoa)}}%
+ }%
+ }%
+}
+
+%régression C + b*e^(ax)
+\defKV[CoeffRegExpoOff]{%
+ coeffa=\def\RegExpoOffCoefa{#1},%
+ coeffb=\def\RegExpoOffCoefb{#1},%
+ offset=\def\RegExpoOffset{#1},%
+ round=\def\RegExpoOffRound{#1}
+}
+
+\setKVdefault[CoeffRegExpoOff]{%
+ coeffa=expregoffa,%
+ coeffb=expregoffb,%
+ offset=0,%
+ round={}
+}
+
+\newcommand\xintexpoffreg[3][]{%
+ \useKVdefault[CoeffRegExpoOff]%
+ \setKV[CoeffRegExpoOff]{#1}% on paramètres les nouvelles clés et on les simplifie
+ %listes des données
+ \def\xliste{#2}%
+ \def\yliste{#3}%
+ \readlist*\LX{\xliste}%
+ \readlist*\LY{\yliste}%
+ %taille des listes
+ \def\LNB{\inteval{\LXlen}}%
+ %somme importantes
+ \xdef\LXlnYSomme{0}%
+ \xdef\LXSomme{0}%
+ \xdef\LlnYSomme{0}%
+ \xdef\LXcSomme{0}%
+ %calculs
+ \xintFor* ##1 in {\xintSeq{1}{\LNB}}\do{%
+ \xdef\LXlnYSomme{\xintfloateval{\LXlnYSomme+\LX[##1]*log(\LY[##1]-\RegExpoOffset)}}%
+ \xdef\LXSomme{\xintfloateval{\LXSomme+\LX[##1]}}%
+ \xdef\LlnYSomme{\xintfloateval{\LlnYSomme+log(\LY[##1]-\RegExpoOffset)}}%
+ \xdef\LXcSomme{\xintfloateval{\LXcSomme+(\LX[##1])^2}}%
+ }%
+ %COEFFS TEMPORAIRES
+ \xdef\TmpCoeffExpoA{\xintfloateval{(\LNB*\LXlnYSomme-\LXSomme*\LlnYSomme)/(\LNB*\LXcSomme-(\LXSomme)^2)}}%
+ \xdef\TmpCoeffExpoB{\xintfloateval{1/\LNB*\LlnYSomme-(\TmpCoeffExpoA)/\LNB*\LXSomme}}%
+ %STOCKAGE
+ \IfStrEq{\RegExpoOffRound}{}%
+ {%
+ \expandafter\def\csname\RegExpoOffCoefb\endcsname{\xintfloateval{exp(\TmpCoeffExpoB)}}%
+ \expandafter\def\csname\RegExpoOffCoefa\endcsname{\xintfloateval{\TmpCoeffExpoA}}%
+ }%
+ {%
+ \IfSubStr{\RegExpoOffRound}{/}%
+ {%
+ \StrCut{\RegExpoOffRound}{/}{\xintarrondisregexpoffa}{\xintarrondisregexpoffb}%
+ }%
+ {%
+ \xdef\xintarrondisregexpoffa{\RegExpoOffRound}\xdef\xintarrondisregexpoffb{\RegExpoOffRound}%
+ }%
+ \expandafter\def\csname\RegExpoOffCoefb\endcsname{\xintfloateval{round(exp(\TmpCoeffExpoB),\xintarrondisregexpoffb)}}%
+ \expandafter\def\csname\RegExpoOffCoefa\endcsname{\xintfloateval{round(\TmpCoeffExpoA,\xintarrondisregexpoffa)}}%
+ }%
+}
+
+%régression cubique
+\defKV[CoeffRegCubic]{%
+ coeffa=\def\RegCubicCoefa{#1},%
+ coeffb=\def\RegCubicCoefb{#1},%
+ coeffc=\def\RegCubicCoefc{#1},%
+ coeffd=\def\RegCubicCoefd{#1},%
+ round=\def\RegCubicRound{#1}
+}
+
+\setKVdefault[CoeffRegCubic]{%
+ coeffa=cubrega,%
+ coeffb=cubregb,%
+ coeffc=cubregc,%
+ coeffd=cubregd,%
+ round={}
+}
+
+\newcommand\xintcubreg[3][]{%
+ \useKVdefault[CoeffRegCubic]%
+ \setKV[CoeffRegCubic]{#1}% on paramètres les nouvelles clés et on les simplifie
+ %listes des données
+ \def\xliste{#2}%
+ \def\yliste{#3}%
+ \readlist*\LX{\xliste}%
+ \readlist*\LY{\yliste}%
+ %taille des listes
+ \def\LNB{\inteval{\LXlen}}%
+ %somme importantes
+ \xdef\LXSomme{0}%
+ \xdef\LXdSomme{0}%
+ \xdef\LXtSomme{0}%
+ \xdef\LXqSomme{0}%
+ \xdef\LXcSomme{0}%
+ \xdef\LXsSomme{0}%
+ \xdef\LYSomme{0}%
+ \xdef\LXYSomme{0}%
+ \xdef\LXdYSomme{0}%
+ \xdef\LXtYSomme{0}%
+ %calculs
+ \xintFor* ##1 in {\xintSeq{1}{\LNB}}\do{%
+ \xdef\LXSomme{\xintfloateval{\LXSomme+\LX[##1]}}%
+ \xdef\LXdSomme{\xintfloateval{\LXdSomme+(\LX[##1])^2}}%
+ \xdef\LXtSomme{\xintfloateval{\LXtSomme+(\LX[##1])^3}}%
+ \xdef\LXqSomme{\xintfloateval{\LXqSomme+(\LX[##1])^4}}%
+ \xdef\LXcSomme{\xintfloateval{\LXcSomme+(\LX[##1])^5}}%
+ \xdef\LXsSomme{\xintfloateval{\LXsSomme+(\LX[##1])^6}}%
+ \xdef\LYSomme{\xintfloateval{\LYSomme+\LY[##1]}}%
+ \xdef\LXYSomme{\xintfloateval{\LXYSomme+\LX[##1]*\LY[##1]}}%
+ \xdef\LXdYSomme{\xintfloateval{\LXdYSomme+(\LX[##1])^2*\LY[##1]}}%
+ \xdef\LXtYSomme{\xintfloateval{\LXtYSomme+(\LX[##1])^3*\LY[##1]}}%
+ }%
+ %calculs suites, avec des matrices !!
+ \def\MatA{\LXtSomme}%
+ \def\MatB{\LXdSomme}%
+ \def\MatC{\LXSomme}%
+ \def\MatD{\LNB}%
+ \def\MatE{\LXqSomme}%
+ \def\MatF{\LXtSomme}%
+ \def\MatG{\LXdSomme}%
+ \def\MatH{\LXSomme}%
+ \def\MatI{\LXcSomme}%
+ \def\MatJ{\LXqSomme}%
+ \def\MatK{\LXtSomme}%
+ \def\MatL{\LXdSomme}%
+ \def\MatM{\LXsSomme}%
+ \def\MatN{\LXcSomme}%
+ \def\MatO{\LXqSomme}%
+ \def\MatP{\LXtSomme}%
+ \def\MatBA{\LYSomme}%
+ \def\MatBB{\LXYSomme}%
+ \def\MatBC{\LXdYSomme}%
+ \def\MatBD{\LXtYSomme}%
+ \def\DETMATRICE{\xintfloateval{\MatA*\MatF*\MatK*\MatP-\MatA*\MatF*\MatL*\MatO-\MatA*\MatG*\MatJ*\MatP+\MatA*\MatG*\MatL*\MatN+\MatA*\MatH*\MatJ*\MatO-\MatA*\MatH*\MatK*\MatN-\MatB*\MatE*\MatK*\MatP+\MatB*\MatE*\MatL*\MatO+\MatB*\MatG*\MatI*\MatP-\MatB*\MatG*\MatL*\MatM-\MatB*\MatH*\MatI*\MatO+\MatB*\MatH*\MatK*\MatM+\MatC*\MatE*\MatJ*\MatP-\MatC*\MatE*\MatL*\MatN-\MatC*\MatF*\MatI*\MatP+\MatC*\MatF*\MatL*\MatM+\MatC*\MatH*\MatI*\MatN-\MatC*\MatH*\MatJ*\MatM-\MatD*\MatE*\MatJ*\MatO+\MatD*\MatE*\MatK*\MatN+\MatD*\MatF*\MatI*\MatO-\MatD*\MatF*\MatK*\MatM-\MatD*\MatG*\MatI*\MatN+\MatD*\MatG*\MatJ*\MatM}}%
+ \def\MatInvA{(\MatF*\MatK*\MatP-\MatF*\MatL*\MatO-\MatG*\MatJ*\MatP+\MatG*\MatL*\MatN+\MatH*\MatJ*\MatO-\MatH*\MatK*\MatN)/\DETMATRICE}%
+ \def\MatInvB{(-\MatB*\MatK*\MatP+\MatB*\MatL*\MatO+\MatC*\MatJ*\MatP-\MatC*\MatL*\MatN-\MatD*\MatJ*\MatO+\MatD*\MatK*\MatN)/\DETMATRICE}%
+ \def\MatInvC{(\MatB*\MatG*\MatP-\MatB*\MatH*\MatO-\MatC*\MatF*\MatP+\MatC*\MatH*\MatN+\MatD*\MatF*\MatO-\MatD*\MatG*\MatN)/\DETMATRICE}%
+ \def\MatInvD{(-\MatB*\MatG*\MatL+\MatB*\MatH*\MatK+\MatC*\MatF*\MatL-\MatC*\MatH*\MatJ-\MatD*\MatF*\MatK+\MatD*\MatG*\MatJ)/\DETMATRICE}%
+ \def\MatInvE{(-\MatE*\MatK*\MatP+\MatE*\MatL*\MatO+\MatG*\MatI*\MatP-\MatG*\MatL*\MatM-\MatH*\MatI*\MatO+\MatH*\MatK*\MatM)/\DETMATRICE}%
+ \def\MatInvF{(\MatA*\MatK*\MatP-\MatA*\MatL*\MatO-\MatC*\MatI*\MatP+\MatC*\MatL*\MatM+\MatD*\MatI*\MatO-\MatD*\MatK*\MatM)/\DETMATRICE}%
+ \def\MatInvG{(-\MatA*\MatG*\MatP+\MatA*\MatH*\MatO+\MatC*\MatE*\MatP-\MatC*\MatH*\MatM-\MatD*\MatE*\MatO+\MatD*\MatG*\MatM)/\DETMATRICE}%
+ \def\MatInvH{(\MatA*\MatG*\MatL-\MatA*\MatH*\MatK-\MatC*\MatE*\MatL+\MatC*\MatH*\MatI+\MatD*\MatE*\MatK-\MatD*\MatG*\MatI)/\DETMATRICE}%
+ \def\MatInvI{(\MatE*\MatJ*\MatP-\MatE*\MatL*\MatN-\MatF*\MatI*\MatP+\MatF*\MatL*\MatM+\MatH*\MatI*\MatN-\MatH*\MatJ*\MatM)/\DETMATRICE}%
+ \def\MatInvJ{(-\MatA*\MatJ*\MatP+\MatA*\MatL*\MatN+\MatB*\MatI*\MatP-\MatB*\MatL*\MatM-\MatD*\MatI*\MatN+\MatD*\MatJ*\MatM)/\DETMATRICE}%
+ \def\MatInvK{(\MatA*\MatF*\MatP-\MatA*\MatH*\MatN-\MatB*\MatE*\MatP+\MatB*\MatH*\MatM+\MatD*\MatE*\MatN-\MatD*\MatF*\MatM)/\DETMATRICE}%
+ \def\MatInvL{(-\MatA*\MatF*\MatL+\MatA*\MatH*\MatJ+\MatB*\MatE*\MatL-\MatB*\MatH*\MatI-\MatD*\MatE*\MatJ+\MatD*\MatF*\MatI)/\DETMATRICE}%
+ \def\MatInvM{(-\MatE*\MatJ*\MatO+\MatE*\MatK*\MatN+\MatF*\MatI*\MatO-\MatF*\MatK*\MatM-\MatG*\MatI*\MatN+\MatG*\MatJ*\MatM)/\DETMATRICE}%
+ \def\MatInvN{(\MatA*\MatJ*\MatO-\MatA*\MatK*\MatN-\MatB*\MatI*\MatO+\MatB*\MatK*\MatM+\MatC*\MatI*\MatN-\MatC*\MatJ*\MatM)/\DETMATRICE}%
+ \def\MatInvO{(-\MatA*\MatF*\MatO+\MatA*\MatG*\MatN+\MatB*\MatE*\MatO-\MatB*\MatG*\MatM-\MatC*\MatE*\MatN+\MatC*\MatF*\MatM)/\DETMATRICE}%
+ \def\MatInvP{(\MatA*\MatF*\MatK-\MatA*\MatG*\MatJ-\MatB*\MatE*\MatK+\MatB*\MatG*\MatI+\MatC*\MatE*\MatJ-\MatC*\MatF*\MatI)/\DETMATRICE}%
+ %COEFFS TEMPORAIRES OK
+ \xdef\tmp@reg@cub@a{\xintfloateval{\MatInvA*\MatBA+\MatInvB*\MatBB+\MatInvC*\MatBC+\MatInvD*\MatBD}}%
+ \xdef\tmp@reg@cub@b{\xintfloateval{\MatInvE*\MatBA+\MatInvF*\MatBB+\MatInvG*\MatBC+\MatInvH*\MatBD}}%
+ \xdef\tmp@reg@cub@c{\xintfloateval{\MatInvI*\MatBA+\MatInvJ*\MatBB+\MatInvK*\MatBC+\MatInvL*\MatBD}}%
+ \xdef\tmp@reg@cub@d{\xintfloateval{\MatInvM*\MatBA+\MatInvN*\MatBB+\MatInvO*\MatBC+\MatInvP*\MatBD}}%
+ %STOCKAGE
+ \IfStrEq{\RegCubicRound}{}%
+ {%
+ \expandafter\def\csname\RegCubicCoefa\endcsname{\tmp@reg@cub@a}%
+ \expandafter\def\csname\RegCubicCoefb\endcsname{\tmp@reg@cub@b}%
+ \expandafter\def\csname\RegCubicCoefc\endcsname{\tmp@reg@cub@c}%
+ \expandafter\def\csname\RegCubicCoefd\endcsname{\tmp@reg@cub@d}%
+ }%
+ {%
+ \IfSubStr{\RegCubicRound}{/}%
+ {%
+ \StrBefore[1]{\RegCubicRound}{/}[\xintarrondisregcuba]%
+ \StrBetween[1,2]{\RegCubicRound}{/}{/}[\xintarrondisregcubb]%
+ \StrBetween[2,3]{\RegCubicRound}{/}{/}[\xintarrondisregcubc]%
+ \StrBehind[3]{\RegCubicRound}{/}[\xintarrondisregcubd]%
+ }%
+ {%
+ \xdef\xintarrondisregcuba{\RegCubicRound}%
+ \xdef\xintarrondisregcubb{\RegCubicRound}%
+ \xdef\xintarrondisregcubc{\RegCubicRound}%
+ \xdef\xintarrondisregcubd{\RegCubicRound}%
+ }%
+ \expandafter\def\csname\RegCubicCoefa\endcsname{\xintfloateval{round(\tmp@reg@cub@a,\xintarrondisregcuba)}}%
+ \expandafter\def\csname\RegCubicCoefb\endcsname{\xintfloateval{round(\tmp@reg@cub@b,\xintarrondisregcubb)}}%
+ \expandafter\def\csname\RegCubicCoefc\endcsname{\xintfloateval{round(\tmp@reg@cub@c,\xintarrondisregcubc)}}%
+ \expandafter\def\csname\RegCubicCoefd\endcsname{\xintfloateval{round(\tmp@reg@cub@d,\xintarrondisregcubd)}}%
+ }%
+}
+
+\endinput \ No newline at end of file
diff --git a/macros/latex/contrib/zref-clever/CHANGELOG.md b/macros/latex/contrib/zref-clever/CHANGELOG.md
index 3cf6c73b25..80b15591be 100644
--- a/macros/latex/contrib/zref-clever/CHANGELOG.md
+++ b/macros/latex/contrib/zref-clever/CHANGELOG.md
@@ -1,6 +1,16 @@
# Changelog
-## [Unreleased](https://github.com/gusbrs/zref-clever/compare/v0.4.5...HEAD)
+## [Unreleased](https://github.com/gusbrs/zref-clever/compare/v0.4.6...HEAD)
+
+## [v0.4.6](https://github.com/gusbrs/zref-clever/compare/v0.4.5...v0.4.6) (2024-08-23)
+
+### Fixed
+- Fix sorting of appendix references.
+
+### Changed
+- The `counterresetters` option now receives a full comma separated list of
+ counters as value, instead of working by incrementally adding values to the
+ list.
## [v0.4.5](https://github.com/gusbrs/zref-clever/compare/v0.4.4...v0.4.5) (2024-05-20)
diff --git a/macros/latex/contrib/zref-clever/zref-clever-code.pdf b/macros/latex/contrib/zref-clever/zref-clever-code.pdf
index 09b441eeb1..4dc41ff5a8 100644
--- a/macros/latex/contrib/zref-clever/zref-clever-code.pdf
+++ b/macros/latex/contrib/zref-clever/zref-clever-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/zref-clever/zref-clever-doc.pdf b/macros/latex/contrib/zref-clever/zref-clever-doc.pdf
index 5594a06fb3..e6c24bc473 100644
--- a/macros/latex/contrib/zref-clever/zref-clever-doc.pdf
+++ b/macros/latex/contrib/zref-clever/zref-clever-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/zref-clever/zref-clever-doc.tex b/macros/latex/contrib/zref-clever/zref-clever-doc.tex
index e088c49915..7b8e27a15b 100644
--- a/macros/latex/contrib/zref-clever/zref-clever-doc.tex
+++ b/macros/latex/contrib/zref-clever/zref-clever-doc.tex
@@ -245,20 +245,23 @@ where it lies.
But the plethora of existing features, packages and document classes which, in
one way or another, extends this basic functionality is a clear indication of
-a demand for more automation. Just to name the most popular: \pkg{cleveref},
-\pkg{hyperref}, \pkg{titleref}, \pkg{nameref}, \pkg{varioref}, \pkg{fancyref},
+a demand for more automation. Just to name the some of the most popular:
+\pkg{cleveref}, \pkg{nameref}, \pkg{titleref}, \pkg{varioref}, \pkg{fancyref},
and the kernel's \cs{labelformat}.
-However, the standard cross-referencing system stores two, and only two,
-properties with the label: the printed representation of the counter last
-incremented with \cs{refstepcounter} and the page. Of course, out of the
-mentioned desire to automate more, the need arose to store more information
-about the label to support this: the title or caption of the referenced
-object; its counter or, even better, its ``type'', that is, whether it is a
-section, chapter, figure, etc.; its hyperlink anchor, and so on. Thus those
-two property ``fields'' of the standard label became quite a disputed real
-state. And the packages in this area of functionality were bound to step on
-each other's toes as a result.
+However, the standard cross-referencing system traditionally stored two, and
+only two, properties with the label: the printed representation of the counter
+last incremented with \cs{refstepcounter} and the page.\footnote{Nowadays, it
+ stores 5, so that \pkg{hyperref} and \pkg{nameref} no longer need to
+ redefine \cs{label}.} Of course, out of the mentioned desire to automate
+more, the need arose to store more information about the label to support
+this: the title or caption of the referenced object; its counter or, even
+better, its ``type'', that is, whether it is a section, chapter, figure, etc.;
+its hyperlink anchor, and so on. Thus those two property ``fields'' of the
+standard label became quite a disputed real state. And the packages in this
+area of functionality, or which somehow depended on extending the
+cross-referencing mechanism, were bound to step on each other's toes as a
+result.
Out of this conundrum, Heiko Oberdiek eventually developed \pkg{zref}, which
implements an extensible referencing system, making the labels store a
@@ -890,30 +893,31 @@ know the counter associated with a particular label but also information on
any counter whose stepping may trigger its resetting, or its ``enclosing
counters''. This information is not easily retrievable from the counter
itself but is (normally) stored with the counter that does the resetting. The
-\opt{counterresetters} option adds counter names, received as a comma
-separated list, to the list of counters \pkg{zref-clever} uses to search for
-``enclosing counters'' of the counter for which a label is being set.
-Unfortunately, not every counter gets reset through the standard machinery for
-this, including some \LaTeX{} kernel ones (e.g. the \texttt{enumerate}
-environment counters). For those, there is really no way to retrieve this
-information directly, so we have to just tell \pkg{zref-clever} about them.
-And that's what the \opt{counterresetby} option is made for. It receives a
-comma separated list of \texttt{key=value} pairs, in which \texttt{key} is the
-counter, and \texttt{value} is its ``enclosing counter'', that is, the counter
-whose stepping results in its resetting. This is not really an ``option'' in
-the sense of ``user choice'', it is more of a way to inform \pkg{zref-clever}
-of something it cannot know or automatically find in general. One cannot
-place arbitrary information there, or \pkg{zref-clever} can be thoroughly
-confused. The setting must correspond to the actual resetting behavior of the
-involved counters. \opt{counterresetby} has precedence over the search done
-in the \opt{counterresetters} list. The default value of
-\opt{counterresetters} includes the counters for sectioning commands of the
-standard classes which, in most cases, should be the relevant ones for
-cross-referencing purposes. The default value of \opt{counterresetby}
-includes the \texttt{enumerate} environment counters. So, hopefully, you
-don't need to ever bother with either of these options. But, if you do, they
-are here. Use them with caution though. Since these options only affect how
-labels are set, they are not available in \cs{zcref}.
+\opt{counterresetters} option receives a full comma separated list of counter
+names, which \pkg{zref-clever} uses to search for ``enclosing counters'' of
+the counter for which a label is being set. The order matters (see code
+documentation for details), and you should also take care to start from the
+initial value set by the package. Unfortunately, not every counter gets reset
+through the standard machinery for this, including some \LaTeX{} kernel ones
+(e.g. the \texttt{enumerate} environment counters). For those, there is
+really no way to retrieve this information directly, so we have to just tell
+\pkg{zref-clever} about them. And that's what the \opt{counterresetby} option
+is made for. It receives a comma separated list of \texttt{key=value} pairs,
+in which \texttt{key} is the counter, and \texttt{value} is its ``enclosing
+counter'', that is, the counter whose stepping results in its resetting. This
+is not really an ``option'' in the sense of ``user choice'', it is more of a
+way to inform \pkg{zref-clever} of something it cannot know or automatically
+find in general. One cannot place arbitrary information there, or
+\pkg{zref-clever} can be thoroughly confused. The setting must correspond to
+the actual resetting behavior of the involved counters. \opt{counterresetby}
+has precedence over the search done in the \opt{counterresetters} list. The
+default value of \opt{counterresetters} includes the counters for sectioning
+commands of the standard classes which, in most cases, should be the relevant
+ones for cross-referencing purposes. The default value of
+\opt{counterresetby} includes the \texttt{enumerate} environment counters.
+So, hopefully, you don't need to ever bother with either of these options.
+But, if you do, they are here. Use them with caution though. Since these
+options only affect how labels are set, they are not available in \cs{zcref}.
\DescribeOption{\raisebox{.4em}{\dbend}\ currentcounter} %
\LaTeX{}'s \cs{refstepcounter} sets two variables which potentially affect the
@@ -2242,12 +2246,12 @@ A figure.
\section{Limitations}
\zlabel{sec:limitations}
-Being based on \pkg{zref} entails one quite sizable advantage for
+Being based on \pkg{zref} entails one significant advantage for
\pkg{zref-clever}: the extensible referencing system of the former allows
\pkg{zref-clever} to store and retrieve the information it needs to work
-without having to redefine some core \LaTeX{} commands. This alone makes for
-reduced compatibility problems and less load order issues than the average
-package in this functionality area. On the other hand, being based on
+without having to redefine some core \LaTeX{} commands. Which leads to less
+compatibility problems and load order issues than some traditional
+cross-reference related packages. On the other hand, being based on
\pkg{zref} also does impair the supported scope of \pkg{zref-clever}. Not
because of any particular limitation of either, but because any class or
package which implements some special handling for reference labels
@@ -2347,18 +2351,21 @@ for numbering and \cs{appendixname} for chapter's names. In sum, we'd like to
refer to the appendix sectioning commands as ``appendices'' rather than
``chapters'' or ``sections''. Since the sectioning commands are the same as
before \cs{appendix}, and so are their underlying counters, we must configure
-the counter type of the sectioning counters to \texttt{appendix}. And this is
-what this compatibility module does, and it uses a \pkg{ltcmdhooks} hook on
-\cs{appendix} for the purpose. Hence, this module applies to any document
+the counter type of the sectioning counters to \texttt{appendix}. Also, the
+sorting of appendix labels relative to those in the rest of the document
+requires attention, which is done by setting the main sectioning level counter
+as being reset by an internal counter with the \opt{counterresetby} option.
+And this is what this compatibility module does, using a \pkg{ltcmdhooks} hook
+on \cs{appendix} for the purpose. Hence, this module applies to any document
class or package which provides that command.
\DescribeOption{appendices} %
This module implements support for the \env{appendices} and
\env{subappendices} environments provided by the \pkg{appendix} package, and
also by \cls{memoir}. The task is the same as for the \texttt{appendix}
-module: set proper counter types for the sectioning counters. This module
-employs environment hooks to \env{appendices} and \env{subappendices} and a
-command hook to \cs{appendix} for the purpose.
+module: set proper counter types for the sectioning counters and ensuring
+proper sorting of labels. This module employs environment hooks to
+\env{appendices} and \env{subappendices}.
\DescribeOption{memoir} %
This compatibility module provides support for some of \cls{memoir}'s
@@ -2641,6 +2648,7 @@ were generously provided by (in chronological order):
% 2023-11-09: https://github.com/gusbrs/zref-clever/issues/20
% 2024-01-20: https://github.com/gusbrs/zref-clever/pull/25
% 2024-05-04: https://github.com/gusbrs/zref-clever/pull/27
+ % 2024-07-19: https://github.com/gusbrs/zref-clever/pull/32
and Lars Madsen.
% 2023-07-24: https://chat.stackexchange.com/transcript/message/64039717#64039717
% and following discussion.
diff --git a/macros/latex/contrib/zref-clever/zref-clever.dtx b/macros/latex/contrib/zref-clever/zref-clever.dtx
index 9c1d73a5a2..155d7141ee 100644
--- a/macros/latex/contrib/zref-clever/zref-clever.dtx
+++ b/macros/latex/contrib/zref-clever/zref-clever.dtx
@@ -171,7 +171,7 @@
%
% Identify the package.
% \begin{macrocode}
-\ProvidesExplPackage {zref-clever} {2024-05-20} {0.4.5}
+\ProvidesExplPackage {zref-clever} {2024-08-23} {0.4.6}
{Clever LaTeX cross-references based on zref}
% \end{macrocode}
%
@@ -374,19 +374,34 @@
% there is no possible verification mechanism for this.
%
%
-% \begin{macro}[EXP]{\@@_get_enclosing_counters_value:n}
-% Recursively generate a \emph{sequence} of ``enclosing counters'' values,
-% for a given \meta{counter} and leave it in the input stream. This
-% function must be expandable, since it gets called from \cs{zref@newprop}
-% and is the one responsible for generating the desired information when
-% the label is being set. Note that the order in which we are getting this
-% information is reversed, since we are navigating the counter reset chain
-% bottom-up. But it is very hard to do otherwise here where we need
-% expandable functions, and easy to handle at the reading side.
+% \begin{macro}[EXP]
+% {
+% \@@_get_enclosing_counters:n ,
+% \@@_get_enclosing_counters_value:n ,
+% }
+% Recursively generate a \emph{sequence} of ``enclosing counters'' and
+% values, for a given \meta{counter} and leave it in the input stream.
+% These functions must be expandable, since they get called from
+% \cs{zref@newprop} and are the ones responsible for generating the desired
+% information when the label is being set. Note that the order in which we
+% are getting this information is reversed, since we are navigating the
+% counter reset chain bottom-up. But it is very hard to do otherwise here
+% where we need expandable functions, and easy to handle at the reading
+% side.
% \begin{syntax}
+% \cs{@@_get_enclosing_counters:n} \Arg{counter}
% \cs{@@_get_enclosing_counters_value:n} \Arg{counter}
% \end{syntax}
% \begin{macrocode}
+\cs_new:Npn \@@_get_enclosing_counters:n #1
+ {
+ \cs_if_exist:cT { c@ \@@_counter_reset_by:n {#1} }
+ {
+ { \@@_counter_reset_by:n {#1} }
+ \@@_get_enclosing_counters:e
+ { \@@_counter_reset_by:n {#1} }
+ }
+ }
\cs_new:Npn \@@_get_enclosing_counters_value:n #1
{
\cs_if_exist:cT { c@ \@@_counter_reset_by:n {#1} }
@@ -406,16 +421,18 @@
% Gregorio}, aka `egreg' at
% \url{https://tex.stackexchange.com/q/611370/#comment1529282_611385}).
% \begin{macrocode}
+\cs_generate_variant:Nn \@@_get_enclosing_counters:n { e }
\cs_generate_variant:Nn \@@_get_enclosing_counters_value:n { e }
% \end{macrocode}
% \end{macro}
%
%
% \begin{macro}[EXP]{\@@_counter_reset_by:n}
-% Auxiliary function for \cs{@@_get_enclosing_counters_value:n}, and useful
-% on its own standing. It is broken in parts to be able to use the
-% expandable mapping functions. \cs{@@_counter_reset_by:n} leaves in the
-% stream the ``enclosing counter'' which resets \meta{counter}.
+% Auxiliary function for \cs{@@_get_enclosing_counters:n} and
+% \cs{@@_get_enclosing_counters_value:n}, and useful on its own standing.
+% It is broken in parts to be able to use the expandable mapping functions.
+% \cs{@@_counter_reset_by:n} leaves in the stream the ``enclosing counter''
+% which resets \meta{counter}.
% \begin{syntax}
% \cs{@@_counter_reset_by:n} \Arg{counter}
% \end{syntax}
@@ -461,6 +478,14 @@
\zref@addprop \ZREF@mainlist { zc@enclval }
% \end{macrocode}
%
+% The \texttt{zc@enclcnt} property is provided for the purpose of easing the
+% debugging of counter reset chains, thus it is not added \texttt{main}
+% property list by default.
+% \begin{macrocode}
+\zref@newprop { zc@enclcnt }
+ { \@@_get_enclosing_counters:e \l_@@_current_counter_tl }
+% \end{macrocode}
+%
%
% Another piece of information we need is the page numbering format being used
% by \cs{thepage}, so that we know when we can (or not) group a set of page
@@ -3883,37 +3908,70 @@
%
% \cs{l_@@_counter_resetters_seq} is used by \cs{@@_counter_reset_by:n} to
% populate the \texttt{zc@enclval} property, and stores the list of counters
-% which are potential ``enclosing counters'' for other counters. This option
-% is constructed such that users can only \emph{add} items to the variable.
-% There would be little gain and some risk in allowing removal, and the syntax
-% of the option would become unnecessarily more complicated. Besides, users
-% can already override, for any particular counter, the search done from the
-% set in \cs{l_@@_counter_resetters_seq} with the \opt{counterresetby} option.
+% which are potential ``enclosing counters'' for other counters.
+%
+% Note that, as far as \LaTeX{} is concerned, a given counter can be reset by
+% \emph{any number of counters}. \cs{counterwithin} just adds a new
+% ``within-counter'' for ``counter'' without removing any other existing ones.
+% However, the data structure of \pkg{zref-clever} can only account for
+% \emph{one} enclosing counter. In a way, this is hard to circumvent, because
+% the underlying counter reset behavior works ``top-down'', but when looking
+% to a label built from a given counter we need to infer the enclosing
+% counters ``bottom-up''. As a result, the reset chain we find is path
+% dependent or, more formally, what \cs{@@_counter_reset_by:n} returns depends
+% on the order in which it searches the list of
+% \cs{l_@@_counter_resetters_seq}, since it stops on the first match. This
+% representation mismatch should not be a problem in most cases. But one
+% should be aware of the limits it imposes.
+%
+% Consider the following case: the \cls{book} class sets, by default
+% \texttt{figure} and \texttt{table} counters to be reset every
+% \texttt{chapter}, \texttt{section} is also reset every \texttt{chapter}, of
+% course. Suppose now we say
+% \cs{counterwithin}\texttt{\{figure\}\{section\}}. Technically,
+% \texttt{figure} is being reset every \texttt{section} and every
+% \texttt{chapter}, but since \texttt{section} is also reset every
+% \texttt{chapter}, the original ``\texttt{chapter} resets \texttt{figure}''
+% behavior is now redundant. Innocuous, but is still there. Now, suppose we
+% want to find which counter is resetting \texttt{figure} using
+% \cs{@@_counter_reset_by:n}. If \texttt{chapter} comes before
+% \texttt{section} in \cs{l_@@_counter_resetters_seq}, \texttt{chapter} will
+% be returned, and that's not what we want. That's the reason
+% \opt{counterresetters} initial value goes bottom-up in the sectioning level,
+% since we'd expect the nesting of the reset chain to \emph{typically} work
+% top-down.
+%
+% If, despite all this, unexpected results still ensue, users can take care to
+% ``clean'' redundant resetting settings with \cs{counterwithout}. Besides,
+% users can already override, for any particular counter, the search done from
+% the set in \cs{l_@@_counter_resetters_seq} with the \opt{counterresetby}
+% option.
+%
+% For the above reasons, since order matters, the \opt{counterresetters}
+% option can only be set by the full list of counters. In other words, users
+% wanting to change this should take the initial value as their starting base.
+%
+% The \texttt{zc@enclcnt} \pkg{zref} property, not included by default in the
+% \texttt{main} property list, is provided for the purpose of easing the
+% debugging of counter reset chains. So, by adding
+% \cs{zref@addprop}\texttt{\{main\}\{zc@enclcnt\}} you can inspect what the
+% values in the \texttt{zc@enclval} property correspond to.
%
% \begin{macrocode}
\seq_new:N \l_@@_counter_resetters_seq
\keys_define:nn { zref-clever/label }
{
counterresetters .code:n =
- {
- \clist_map_inline:nn {#1}
- {
- \seq_if_in:NnF \l_@@_counter_resetters_seq {##1}
- {
- \seq_put_right:Nn
- \l_@@_counter_resetters_seq {##1}
- }
- }
- } ,
+ { \seq_set_from_clist:Nn \l_@@_counter_resetters_seq {#1} } ,
counterresetters .initial:n =
{
- part ,
- chapter ,
- section ,
- subsection ,
- subsubsection ,
- paragraph ,
subparagraph ,
+ paragraph ,
+ subsubsection ,
+ subsection ,
+ section ,
+ chapter ,
+ part ,
},
counterresetters .value_required:n = true ,
}
@@ -7754,11 +7812,45 @@
% appendix to ``end'', but in this case, of course, we can hook into the
% environment instead.
%
+% For the record, \url{https://tex.stackexchange.com/a/724742} is of
+% interest.
+%
% \begin{macrocode}
\@@_compat_module:nn { appendix }
{
+ \newcounter { zc@appendix }
+ \cs_if_exist:cTF { chapter }
+ {
+ \@@_zcsetup:e
+ {
+ counterresetby =
+ {
+% \end{macrocode}
+% In case someone did something like
+% \texttt{\textbackslash{}counterwithin\{chapter\}\{part\}}. Harmless
+% otherwise.
+% \begin{macrocode}
+ zc@appendix = \@@_counter_reset_by:n { chapter } ,
+ chapter = zc@appendix ,
+ } ,
+ }
+ }
+ {
+ \cs_if_exist:cT { section }
+ {
+ \@@_zcsetup:e
+ {
+ counterresetby =
+ {
+ zc@appendix = \@@_counter_reset_by:n { section } ,
+ section = zc@appendix ,
+ } ,
+ }
+ }
+ }
\AddToHook { cmd / appendix / before }
{
+ \setcounter { zc@appendix } { 1 }
\@@_zcsetup:n
{
countertype =
@@ -7797,26 +7889,28 @@
{
\@@_if_package_loaded:nT { appendix }
{
- \newcounter { zc@appendix }
- \newcounter { zc@save@appendix }
- \setcounter { zc@appendix } { 0 }
- \setcounter { zc@save@appendix } { 0 }
- \cs_if_exist:cTF { chapter }
- {
- \@@_zcsetup:n
- { counterresetby = { chapter = zc@appendix } }
- }
- {
- \cs_if_exist:cT { section }
- {
- \@@_zcsetup:n
- { counterresetby = { section = zc@appendix } }
- }
- }
\AddToHook { env / appendices / begin }
{
- \stepcounter { zc@save@appendix }
- \setcounter { zc@appendix } { \value { zc@save@appendix } }
+% \end{macrocode}
+% Technically, the \env{appendices} environment can be called multiple times.
+% By default, successive calls keep track of numbering and start where the
+% previous one left off. Which means just setting the \texttt{zc@appendix}
+% counter to 1 is enough for things to work, since the distinction between the
+% calls and the sorting of their respective references will depend on the
+% underlying sectioning. \pkg{appendix}'s documentation however, provides a
+% way to restart from A at each call (by redefining \cs{restoreapp} to do
+% nothing). In this case, the references inside different calls to
+% \env{appendices} get to be identical in every way, including printed form,
+% counter value, enclosing counters, etc., despite being different. We could
+% keep track of different calls to \env{appendices} by having the
+% \texttt{zc@appendix} counter be ``stepped'' at each call. Doing so would
+% mean though that \cs{zcref} would distingish things which are typeset
+% identically, granting some arguably weird results. True, the user
+% \emph{can} change the printed form for each \env{appendices} call,
+% e.g. redefining \cs{thechapter}, but in this case, they are responsible for
+% keeping track of this.
+% \begin{macrocode}
+ \setcounter { zc@appendix } { 1 }
\@@_zcsetup:n
{
countertype =
@@ -7832,13 +7926,36 @@
}
\AddToHook { env / appendices / end }
{ \setcounter { zc@appendix } { 0 } }
- \AddToHook { cmd / appendix / before }
+ \newcounter { zc@subappendix }
+ \cs_if_exist:cTF { chapter }
{
- \stepcounter { zc@save@appendix }
- \setcounter { zc@appendix } { \value { zc@save@appendix } }
+ \@@_zcsetup:e
+ {
+ counterresetby =
+ {
+ zc@subappendix = \@@_counter_reset_by:n { section } ,
+ section = zc@subappendix ,
+ } ,
+ }
+ }
+ {
+ \@@_zcsetup:e
+ {
+ counterresetby =
+ {
+ zc@subappendix = \@@_counter_reset_by:n { subsection } ,
+ subsection = zc@subappendix ,
+ } ,
+ }
}
\AddToHook { env / subappendices / begin }
{
+% \end{macrocode}
+% The \env{subappendices} environment, on the other hand, appears not to
+% support multiple calls inside the same chapter/section (the counter is reset
+% by default). Either way, the same reasoning applies.
+% \begin{macrocode}
+ \setcounter { zc@subappendix } { 1 }
\@@_zcsetup:n
{
countertype =
@@ -7851,6 +7968,8 @@
} ,
}
}
+ \AddToHook { env / subappendices / end }
+ { \setcounter { zc@subappendix } { 0 } }
\msg_info:nnn { zref-clever } { compat-package } { appendix }
}
}
@@ -7977,10 +8096,13 @@
}
% \end{macrocode}
% \pkg{amsmath} does use \cs{refstepcounter} for the \texttt{equation} counter
-% throughout and does set \cs{@currentcounter} for \cs{tag}s. But we still
-% have to manually reset \opt{currentcounter} to default because, since we had
-% to manually set \opt{currentcounter} to \texttt{parentequation} in
-% \env{subequations}, we also have to manually set it to \env{equation} in
+% throughout and supposedly sets \cs{@currentcounter} for \cs{tag}s (I'm not
+% sure if it works in all environments, though. Once I tried to remove the
+% explicit \opt{currentcounter} setting and several labels to \cs{tag}s ended
+% up with type \texttt{section}. But I didn't investigate this further). But
+% we still have to manually reset \opt{currentcounter} to default because,
+% since we had to manually set \opt{currentcounter} to \texttt{parentequation}
+% in \env{subequations}, we also have to manually set it to \env{equation} in
% environments which may be used within it. The \env{xxalignat} environment
% is not included, because it is ``starred'' by default (i.e.\ unnumbered),
% and does not display or accepts labels or tags anyway. The \env{-ed}
@@ -8041,6 +8163,18 @@
% doing special handling inside \cs{zcref}, but the feature is very cool, so
% it's worth it.
%
+% Note that this support comes at a little cost. \opt{showonlyrefs} works by
+% setting a special \cs{MT@newlabel} for each label referenced with
+% \cs{eqref}. Now, \cs{eqref} is a specialized reference command, only used
+% to refer to equations, so it sets \cs{MT@newlabel} unconditionally on the
+% first run. \cs{zcref}, on the other hand, is a general purpose reference
+% command, used to reference labels of any type. But we wouldn't want to set
+% \cs{MT@newlabel} indiscriminately for all referenced labels in the document,
+% so we need to test for its type. Alas, the label must exist before its type
+% can be tested, thus we cannot set \cs{MT@newlabel} on the first run, only on
+% the second. In sum, since \cs{eqref} requires 3 runs to work, \cs{zcref}
+% needs 4.
+%
% \begin{macrocode}
\bool_new:N \l_@@_mathtools_loaded_bool
\@@_compat_module:nn { mathtools }